diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..1b987b8 --- /dev/null +++ b/.htaccess @@ -0,0 +1,12 @@ + +# BEGIN WordPress + +RewriteEngine On +RewriteBase /wordpress/ +RewriteRule ^index\.php$ - [L] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule . /wordpress/index.php [L] + + +# END WordPress diff --git a/index.php b/index.php new file mode 100644 index 0000000..1e3364a --- /dev/null +++ b/index.php @@ -0,0 +1,17 @@ + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + +WRITTEN OFFER + +The source code for any program binaries or compressed scripts that are +included with WordPress can be freely obtained at the following URL: + + http://wordpress.org/download/source/ diff --git a/readme.html b/readme.html new file mode 100644 index 0000000..49ae944 --- /dev/null +++ b/readme.html @@ -0,0 +1,108 @@ + + + + + WordPress › ReadMe + + + +

+ WordPress +
Version 3.4.1 +

+

Semantic Personal Publishing Platform

+ +

First Things First

+

Welcome. WordPress is a very special project to me. Every developer and contributor adds something unique to the mix, and together we create something beautiful that I'm proud to be a part of. Thousands of hours have gone into WordPress, and we're dedicated to making it better every day. Thank you for making it part of your world.

+

— Matt Mullenweg

+ +

Installation: Famous 5-minute install

+
    +
  1. Unzip the package in an empty directory and upload everything.
  2. +
  3. Open wp-admin/install.php in your browser. It will take you through the process to set up a wp-config.php file with your database connection details. +
      +
    1. If for some reason this doesn't work, don't worry. It doesn't work on all web hosts. Open up wp-config-sample.php with a text editor like WordPad or similar and fill in your database connection details.
    2. +
    3. Save the file as wp-config.php and upload it.
    4. +
    5. Open wp-admin/install.php in your browser.
    6. +
    +
  4. +
  5. Once the configuration file is set up, the installer will set up the tables needed for your blog. If there is an error, double check your wp-config.php file, and try again. If it fails again, please go to the support forums with as much data as you can gather.
  6. +
  7. If you did not enter a password, note the password given to you. If you did not provide a username, it will be admin.
  8. +
  9. The installer should then send you to the login page. Sign in with the username and password you chose during the installation. If a password was generated for you, you can then click on 'Profile' to change the password.
  10. +
+ +

Updating

+

Using the Automatic Updater

+

If you are updating from version 2.7 or higher, you can use the automatic updater:

+
    +
  1. Open the wp-admin/update-core.php in your browser and follow the instructions.
  2. +
  3. You wanted more, perhaps? That's it!
  4. +
+ +

Updating Manually

+
    +
  1. Before you update anything, make sure you have backup copies of any files you may have modified such as index.php.
  2. +
  3. Delete your old WordPress files, saving ones you've modified.
  4. +
  5. Upload the new files.
  6. +
  7. Point your browser to /wp-admin/upgrade.php.
  8. +
+ +

Theme Template Changes

+

If you have customized your theme templates, you may have to make some changes across major versions.

+ +

Migrating from other systems

+

WordPress can import from a number of systems. First you need to get WordPress installed and working as described above, before using our import tools.

+ +

System Requirements

+
    +
  • PHP version 5.2.4 or higher.
  • +
  • MySQL version 5.0 or higher.
  • +
+ +

System Recommendations

+ + +

Online Resources

+

If you have any questions that aren't addressed in this document, please take advantage of WordPress' numerous online resources:

+
+
The WordPress Codex
+
The Codex is the encyclopedia of all things WordPress. It is the most comprehensive source of information for WordPress available.
+
The WordPress Blog
+
This is where you'll find the latest updates and news related to WordPress. Recent WordPress news appears in your administrative dashboard by default.
+
WordPress Planet
+
The WordPress Planet is a news aggregator that brings together posts from WordPress blogs around the web.
+
WordPress Support Forums
+
If you've looked everywhere and still can't find an answer, the support forums are very active and have a large community ready to help. To help them help you be sure to use a descriptive thread title and describe your question in as much detail as possible.
+
WordPress IRC Channel
+
There is an online chat channel that is used for discussion among people who use WordPress and occasionally support topics. The above wiki page should point you in the right direction. (irc.freenode.net #wordpress)
+
+ +

XML-RPC and Atom Interface

+

You can post to your WordPress blog with tools like Windows Live Writer, Ecto, w.bloggar, Radio Userland (which means you can use Radio's email-to-blog feature), NewzCrawler, and other tools that support the blogging APIs! :) You can read more about XML-RPC support on the Codex.

+ +

Post via Email

+

You can post from an email client! To set this up go to your "Writing" options screen and fill in the connection details for your secret POP3 account. Then you need to set up wp-mail.php to execute periodically to check the mailbox for new posts. You can do it with cron-jobs, or if your host doesn't support it you can look into the various website-monitoring services, and make them check your wp-mail.php URL.

+

Posting is easy: Any email sent to the address you specify will be posted, with the subject as the title. It is best to keep the address discrete. The script will delete emails that are successfully posted.

+ +

User Roles

+

We introduced a very flexible roles system in version 2.0. You can read more about Roles and Capabilities on the Codex.

+ +

Final Notes

+
    +
  • If you have any suggestions, ideas, or comments, or if you (gasp!) found a bug, join us in the Support Forums.
  • +
  • WordPress has a robust plugin API that makes extending the code easy. If you are a developer interested in utilizing this, see the plugin documentation in the Codex. You shouldn't modify any of the core code.
  • +
+ +

Share the Love

+

WordPress has no multi-million dollar marketing campaign or celebrity sponsors, but we do have something even better—you. If you enjoy WordPress please consider telling a friend, setting it up for someone less knowledgable than yourself, or writing the author of a media article that overlooks us.

+ +

WordPress is the official continuation of b2/cafélog, which came from Michel V. The work has been continued by the WordPress developers. If you would like to support WordPress, please consider donating.

+ +

License

+

WordPress is free software, and is released under the terms of the GPL version 2 or (at your option) any later version. See license.txt.

+ + + diff --git a/wp-activate.php b/wp-activate.php new file mode 100644 index 0000000..d470772 --- /dev/null +++ b/wp-activate.php @@ -0,0 +1,102 @@ +cache_enabled = false; + +do_action( 'activate_header' ); + +function do_activate_header() { + do_action( 'activate_wp_head' ); +} +add_action( 'wp_head', 'do_activate_header' ); + +function wpmu_activate_stylesheet() { + ?> + + + +
+ + +

+
+

+ +
+

+

+ +

+
+ + get_error_code() || 'blog_taken' == $result->get_error_code() ) { + $signup = $result->get_error_data(); + ?> +

+ '; + if ( $signup->domain . $signup->path == '' ) { + printf( __('Your account has been activated. You may now log in to the site using your chosen username of “%2$s”. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can reset your password.'), network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, wp_lostpassword_url() ); + } else { + printf( __('Your site at %2$s is active. You may now log in to your site using your chosen username of “%3$s”. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can reset your password.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, wp_lostpassword_url() ); + } + echo '

'; + } else { + ?> +

+ '.$result->get_error_message().'

'; + } + } else { + extract($result); + $url = get_blogaddress_by_id( (int) $blog_id); + $user = new WP_User( (int) $user_id); + ?> +

+ +
+

user_login ?>

+

+
+ + +

View your site or Log in'), $url, $url . 'wp-login.php' ); ?>

+ +

Log in or go back to the homepage.' ), network_site_url('wp-login.php', 'login'), network_home_url() ); ?>

+ +
+ + \ No newline at end of file diff --git a/wp-admin/about.php b/wp-admin/about.php new file mode 100644 index 0000000..4ffd837 --- /dev/null +++ b/wp-admin/about.php @@ -0,0 +1,168 @@ + +
+ +

+ +
+ +
+ + + +
+

+

Version %1$s addressed some security issues and fixed %2$s bug.', + 'Version %1$s addressed some security issues and fixed %2$s bugs.', 21 ), '3.4.1', number_format_i18n( 21 ) ); ?> + the release notes.' ), 'http://codex.wordpress.org/Version_3.4.1' ); ?> +

+
+ +
+

+ +
+ +

+

before activating a new theme. Note: this feature is available for installed themes only.' ); ?>

+ +

+

+
+
+ +
+

+ +
+

+

theme support.' ); ?>

+
+ + + +
+
+ +
+ +

+

+
+
+ +
+

+ +
+ + +

+

+

Embeds.' ), __( 'http://codex.wordpress.org/Embeds' ) ); ?>

+
+ +
+ + +
+

+ +
+ + +

+

+
+
+ +
+

+ +
+
+

+

+ +

+

+
+
+

+

+ +

+

+
+
+

+

WordPress API that supports custom content types and taxonomies, as well as dozens of other bug fixes and improvements.' ), __( 'http://codex.wordpress.org/XML-RPC_WordPress_API' ) ); ?>

+ +

+

+
+
+
+ +
+ + | + + +
+ +
+Version %1$s addressed a security issue.', + 'Version %1$s addressed some security issues.' ); + +/* translators: 1: WordPress version number, 2: plural number of bugs. */ +_n_noop( 'Version %1$s addressed %2$s bug.', + 'Version %1$s addressed %2$s bugs.' ); + +/* translators: 1: WordPress version number, 2: plural number of bugs. Singular security issue. */ +_n_noop( 'Version %1$s addressed a security issue and fixed %2$s bug.', + 'Version %1$s addressed a security issue and fixed %2$s bugs.' ); + +/* translators: 1: WordPress version number, 2: plural number of bugs. More than one security issue. */ +_n_noop( 'Version %1$s addressed some security issues and fixed %2$s bug.', + 'Version %1$s addressed some security issues and fixed %2$s bugs.' ); + +__( 'For more information, see the release notes.' ); diff --git a/wp-admin/admin-ajax.php b/wp-admin/admin-ajax.php new file mode 100644 index 0000000..db44df7 --- /dev/null +++ b/wp-admin/admin-ajax.php @@ -0,0 +1,71 @@ + + +
+
+
+ + + + +
+ + + diff --git a/wp-admin/admin-functions.php b/wp-admin/admin-functions.php new file mode 100644 index 0000000..f596749 --- /dev/null +++ b/wp-admin/admin-functions.php @@ -0,0 +1,15 @@ + +<?php echo $admin_title; ?> + + + + +"> + + + + +
+ +
+ + + +
+set_parentage( $parent_file ); + +?> + +
+render_screen_meta(); + +if ( is_network_admin() ) + do_action('network_admin_notices'); +elseif ( is_user_admin() ) + do_action('user_admin_notices'); +else + do_action('admin_notices'); + +do_action('all_admin_notices'); + +if ( $parent_file == 'options-general.php' ) + require(ABSPATH . 'wp-admin/options-head.php'); diff --git a/wp-admin/admin-post.php b/wp-admin/admin-post.php new file mode 100644 index 0000000..f4af998 --- /dev/null +++ b/wp-admin/admin-post.php @@ -0,0 +1,31 @@ + 50 && mt_rand( 0, (int)( $c / 50 ) ) == 1 ) ) { + require_once( ABSPATH . WPINC . '/http.php' ); + $response = wp_remote_get( admin_url( 'upgrade.php?step=1' ), array( 'timeout' => 120, 'httpversion' => '1.1' ) ); + do_action( 'after_mu_upgrade', $response ); + unset($response); + } + unset($c); + } +} + +require_once(ABSPATH . 'wp-admin/includes/admin.php'); + +auth_redirect(); + +nocache_headers(); + +// Schedule trash collection +if ( !wp_next_scheduled('wp_scheduled_delete') && !defined('WP_INSTALLING') ) + wp_schedule_event(time(), 'daily', 'wp_scheduled_delete'); + +set_screen_options(); + +$date_format = get_option('date_format'); +$time_format = get_option('time_format'); + +wp_reset_vars(array('profile', 'redirect', 'redirect_url', 'a', 'text', 'trackback', 'pingback')); + +wp_enqueue_script( 'common' ); +wp_enqueue_script( 'jquery-color' ); + +$editing = false; + +if ( isset($_GET['page']) ) { + $plugin_page = stripslashes($_GET['page']); + $plugin_page = plugin_basename($plugin_page); +} + +if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) ) + $typenow = $_REQUEST['post_type']; +else + $typenow = ''; + +if ( isset( $_REQUEST['taxonomy'] ) && taxonomy_exists( $_REQUEST['taxonomy'] ) ) + $taxnow = $_REQUEST['taxonomy']; +else + $taxnow = ''; + +if ( WP_NETWORK_ADMIN ) + require(ABSPATH . 'wp-admin/network/menu.php'); +elseif ( WP_USER_ADMIN ) + require(ABSPATH . 'wp-admin/user/menu.php'); +else + require(ABSPATH . 'wp-admin/menu.php'); + +if ( current_user_can( 'manage_options' ) ) + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); + +do_action('admin_init'); + +if ( isset($plugin_page) ) { + if ( !empty($typenow) ) + $the_parent = $pagenow . '?post_type=' . $typenow; + else + $the_parent = $pagenow; + if ( ! $page_hook = get_plugin_page_hook($plugin_page, $the_parent) ) { + $page_hook = get_plugin_page_hook($plugin_page, $plugin_page); + // backwards compatibility for plugins using add_management_page + if ( empty( $page_hook ) && 'edit.php' == $pagenow && '' != get_plugin_page_hook($plugin_page, 'tools.php') ) { + // There could be plugin specific params on the URL, so we need the whole query string + if ( !empty($_SERVER[ 'QUERY_STRING' ]) ) + $query_string = $_SERVER[ 'QUERY_STRING' ]; + else + $query_string = 'page=' . $plugin_page; + wp_redirect( admin_url('tools.php?' . $query_string) ); + exit; + } + } + unset($the_parent); +} + +$hook_suffix = ''; +if ( isset($page_hook) ) + $hook_suffix = $page_hook; +else if ( isset($plugin_page) ) + $hook_suffix = $plugin_page; +else if ( isset($pagenow) ) + $hook_suffix = $pagenow; + +set_current_screen(); + +// Handle plugin admin pages. +if ( isset($plugin_page) ) { + if ( $page_hook ) { + do_action('load-' . $page_hook); + if (! isset($_GET['noheader'])) + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + do_action($page_hook); + } else { + if ( validate_file($plugin_page) ) + wp_die(__('Invalid plugin page')); + + if ( !( file_exists(WP_PLUGIN_DIR . "/$plugin_page") && is_file(WP_PLUGIN_DIR . "/$plugin_page") ) && !( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") && is_file(WPMU_PLUGIN_DIR . "/$plugin_page") ) ) + wp_die(sprintf(__('Cannot load %s.'), htmlentities($plugin_page))); + + do_action('load-' . $plugin_page); + + if ( !isset($_GET['noheader'])) + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + if ( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") ) + include(WPMU_PLUGIN_DIR . "/$plugin_page"); + else + include(WP_PLUGIN_DIR . "/$plugin_page"); + } + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + exit(); +} else if (isset($_GET['import'])) { + + $importer = $_GET['import']; + + if ( ! current_user_can('import') ) + wp_die(__('You are not allowed to import.')); + + if ( validate_file($importer) ) { + wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); + exit; + } + + if ( ! isset($wp_importers[$importer]) || ! is_callable($wp_importers[$importer][2]) ) { + wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); + exit; + } + + $parent_file = 'tools.php'; + $submenu_file = 'import.php'; + $title = __('Import'); + + if (! isset($_GET['noheader'])) + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + define('WP_IMPORTING', true); + + if ( apply_filters( 'force_filtered_html_on_import', false ) ) + kses_init_filters(); // Always filter imported data with kses on multisite. + + call_user_func($wp_importers[$importer][2]); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + // Make sure rules are flushed + flush_rewrite_rules(false); + + exit(); +} else { + do_action("load-$pagenow"); + // Backwards compatibility with old load-page-new.php, load-page.php, + // and load-categories.php actions. + if ( $typenow == 'page' ) { + if ( $pagenow == 'post-new.php' ) + do_action( 'load-page-new.php' ); + elseif ( $pagenow == 'post.php' ) + do_action( 'load-page.php' ); + } elseif ( $pagenow == 'edit-tags.php' ) { + if ( $taxnow == 'category' ) + do_action( 'load-categories.php' ); + elseif ( $taxnow == 'link_category' ) + do_action( 'load-edit-link-categories.php' ); + } +} + +if ( !empty($_REQUEST['action']) ) + do_action('admin_action_' . $_REQUEST['action']); diff --git a/wp-admin/async-upload.php b/wp-admin/async-upload.php new file mode 100644 index 0000000..e9d59e2 --- /dev/null +++ b/wp-admin/async-upload.php @@ -0,0 +1,68 @@ +post_type ) + wp_die( __( 'Unknown post type.' ) ); + $post_type_object = get_post_type_object( 'attachment' ); + if ( ! current_user_can( $post_type_object->cap->edit_post, $id ) ) + wp_die( __( 'You are not allowed to edit this item.' ) ); + + if ( 2 == $_REQUEST['fetch'] ) { + add_filter('attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2); + echo get_media_item($id, array( 'send' => false, 'delete' => true )); + } else { + add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2); + echo get_media_item($id); + } + exit; +} + +check_admin_referer('media-form'); + +$id = media_handle_upload('async-upload', $_REQUEST['post_id']); +if ( is_wp_error($id) ) { + echo '
+ ' . __('Dismiss') . ' + ' . sprintf(__('“%s” has failed to upload due to an error'), esc_html($_FILES['async-upload']['name']) ) . '
' . + esc_html($id->get_error_message()) . '
'; + exit; +} + +if ( $_REQUEST['short'] ) { + // short form response - attachment ID only + echo $id; +} else { + // long form response - big chunk o html + $type = $_REQUEST['type']; + echo apply_filters("async_upload_{$type}", $id); +} diff --git a/wp-admin/comment.php b/wp-admin/comment.php new file mode 100644 index 0000000..de5483e --- /dev/null +++ b/wp-admin/comment.php @@ -0,0 +1,294 @@ +

$msg

"; + include('./admin-footer.php'); + die; +} + +switch( $action ) { + +case 'editcomment' : + $title = __('Edit Comment'); + + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __( 'You can edit the information left in a comment if needed. This is often useful when you notice that a commenter has made a typographical error.' ) . '

' . + '

' . __( 'You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment.' ) . '

' + ) ); + + get_current_screen()->set_help_sidebar( + '

' . __( 'For more information:' ) . '

' . + '

' . __( 'Documentation on Comments' ) . '

' . + '

' . __( 'Support Forums' ) . '

' + ); + + wp_enqueue_script('comment'); + require_once('./admin-header.php'); + + $comment_id = absint( $_GET['c'] ); + + if ( !$comment = get_comment( $comment_id ) ) + comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' ' . __('Go back') . '.', 'javascript:history.go(-1)') ); + + if ( !current_user_can( 'edit_comment', $comment_id ) ) + comment_footer_die( __('You are not allowed to edit this comment.') ); + + if ( 'trash' == $comment->comment_approved ) + comment_footer_die( __('This comment is in the Trash. Please move it out of the Trash if you want to edit it.') ); + + $comment = get_comment_to_edit( $comment_id ); + + include('./edit-form-comment.php'); + + break; + +case 'delete' : +case 'approve' : +case 'trash' : +case 'spam' : + + $title = __('Moderate Comment'); + + $comment_id = absint( $_GET['c'] ); + + if ( !$comment = get_comment_to_edit( $comment_id ) ) { + wp_redirect( admin_url('edit-comments.php?error=1') ); + die(); + } + + if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) { + wp_redirect( admin_url('edit-comments.php?error=2') ); + die(); + } + + // No need to re-approve/re-trash/re-spam a comment. + if ( $action == str_replace( '1', 'approve', $comment->comment_approved ) ) { + wp_redirect( admin_url( 'edit-comments.php?same=' . $comment_id ) ); + die(); + } + + require_once('./admin-header.php'); + + $formaction = $action . 'comment'; + $nonce_action = 'approve' == $action ? 'approve-comment_' : 'delete-comment_'; + $nonce_action .= $comment_id; + +?> +
+ +
+ + +

+ +comment_approved != '0' ) { // if not unapproved + $message = ''; + switch ( $comment->comment_approved ) { + case '1' : + $message = __('This comment is currently approved.'); + break; + case 'spam' : + $message = __('This comment is currently marked as spam.'); + break; + case 'trash' : + $message = __('This comment is currently in the Trash.'); + break; + } + if ( $message ) + echo '

' . $message . '

'; +} +?> +

+ + + + + + +comment_author_email ) { ?> + + + + + +comment_author_url ) { ?> + + + + + + + + + +
comment_author; ?>
comment_author_email; ?>
comment_author_url; ?>
comment_content; ?>
+ +

+ +
+ + + + + + +
+ + + + + +
+ +
+
+' . __('Go back') . '.', 'edit-comments.php') ); + if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) + comment_footer_die( __('You are not allowed to edit comments on this post.') ); + + if ( '' != wp_get_referer() && ! $noredir && false === strpos(wp_get_referer(), 'comment.php') ) + $redir = wp_get_referer(); + elseif ( '' != wp_get_original_referer() && ! $noredir ) + $redir = wp_get_original_referer(); + elseif ( in_array( $action, array( 'approvecomment', 'unapprovecomment' ) ) ) + $redir = admin_url('edit-comments.php?p=' . absint( $comment->comment_post_ID ) ); + else + $redir = admin_url('edit-comments.php'); + + $redir = remove_query_arg( array('spammed', 'unspammed', 'trashed', 'untrashed', 'deleted', 'ids', 'approved', 'unapproved'), $redir ); + + switch ( $action ) { + case 'deletecomment' : + wp_delete_comment( $comment_id ); + $redir = add_query_arg( array('deleted' => '1'), $redir ); + break; + case 'trashcomment' : + wp_trash_comment($comment_id); + $redir = add_query_arg( array('trashed' => '1', 'ids' => $comment_id), $redir ); + break; + case 'untrashcomment' : + wp_untrash_comment($comment_id); + $redir = add_query_arg( array('untrashed' => '1'), $redir ); + break; + case 'spamcomment' : + wp_spam_comment($comment_id); + $redir = add_query_arg( array('spammed' => '1', 'ids' => $comment_id), $redir ); + break; + case 'unspamcomment' : + wp_unspam_comment($comment_id); + $redir = add_query_arg( array('unspammed' => '1'), $redir ); + break; + case 'approvecomment' : + wp_set_comment_status( $comment_id, 'approve' ); + $redir = add_query_arg( array( 'approved' => 1 ), $redir ); + break; + case 'unapprovecomment' : + wp_set_comment_status( $comment_id, 'hold' ); + $redir = add_query_arg( array( 'unapproved' => 1 ), $redir ); + break; + } + + wp_redirect( $redir ); + die; + break; + +case 'editedcomment' : + + $comment_id = absint( $_POST['comment_ID'] ); + $comment_post_id = absint( $_POST['comment_post_ID'] ); + + check_admin_referer( 'update-comment_' . $comment_id ); + + edit_comment(); + + $location = ( empty( $_POST['referredby'] ) ? "edit-comments.php?p=$comment_post_id" : $_POST['referredby'] ) . '#comment-' . $comment_id; + $location = apply_filters( 'comment_edit_redirect', $location, $comment_id ); + wp_redirect( $location ); + + exit(); + break; + +default: + wp_die( __('Unknown action.') ); + break; + +} // end switch + +include('./admin-footer.php'); diff --git a/wp-admin/credits.php b/wp-admin/credits.php new file mode 100644 index 0000000..68f7ed6 --- /dev/null +++ b/wp-admin/credits.php @@ -0,0 +1,161 @@ +' . esc_html( $display_name ) . ''; +} + +function _wp_credits_build_object_link( &$data ) { + $data = '' . $data[0] . ''; +} + +list( $display_version ) = explode( '-', $wp_version ); + +include( ABSPATH . 'wp-admin/admin-header.php' ); +?> +
+ +

+ +
+ +
+ + + +' . sprintf( __( 'WordPress is created by a worldwide team of passionate individuals. Get involved in WordPress.' ), + 'http://wordpress.org/about/', + /* translators: Url to the codex documentation on contributing to WordPress used on the credits page */ + __( 'http://codex.wordpress.org/Contributing_to_WordPress' ) ) . '

'; + include( ABSPATH . 'wp-admin/admin-footer.php' ); + exit; +} + +echo '

' . __( 'WordPress is created by a worldwide team of passionate individuals.' ) . "

\n"; + +$gravatar = is_ssl() ? 'https://secure.gravatar.com/avatar/' : 'http://0.gravatar.com/avatar/'; + +foreach ( $credits['groups'] as $group_slug => $group_data ) { + if ( $group_data['name'] ) { + if ( 'Translators' == $group_data['name'] ) { + // Considered a special slug in the API response. (Also, will never be returned for en_US.) + $title = _x( 'Translators', 'Translate this to be the equivalent of English Translators in your language for the credits page Translators section' ); + } elseif ( isset( $group_data['placeholders'] ) ) { + $title = vsprintf( translate( $group_data['name'] ), $group_data['placeholders'] ); + } else { + $title = translate( $group_data['name'] ); + } + + echo '

' . $title . "

\n"; + } + + if ( ! empty( $group_data['shuffle'] ) ) + shuffle( $group_data['data'] ); // We were going to sort by ability to pronounce "hierarchical," but that wouldn't be fair to Matt. + + switch ( $group_data['type'] ) { + case 'list' : + array_walk( $group_data['data'], '_wp_credits_add_profile_link', $credits['data']['profiles'] ); + echo '

' . wp_sprintf( '%l.', $group_data['data'] ) . "

\n\n"; + break; + case 'libraries' : + array_walk( $group_data['data'], '_wp_credits_build_object_link' ); + echo '

' . wp_sprintf( '%l.', $group_data['data'] ) . "

\n\n"; + break; + default: + $compact = 'compact' == $group_data['type']; + $classes = 'wp-people-group ' . ( $compact ? 'compact' : '' ); + echo '\n"; + break; + } +} + +?> +

Get involved in WordPress.' ), + /* translators: Url to the codex documentation on contributing to WordPress used on the credits page */ + __( 'http://codex.wordpress.org/Contributing_to_WordPress' ) ); ?>

+ +
+#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#d1e5ee}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}#postcustomstuff table input,#postcustomstuff table textarea{border-color:#dfdfdf;background-color:#fff}.widefat{border-color:#d1e5ee;background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle,#fullscreen-topbar{background-color:#f5fafd;background-image:-ms-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-moz-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-o-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-webkit-gradient(linear,left top,left bottom,from(#f7fcfe),to(#eff8ff));background-image:-webkit-linear-gradient(top,#f7fcfe,#eff8ff);background-image:linear-gradient(top,#f7fcfe,#eff8ff)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#d1e5ee;text-shadow:#fff 0 1px 0;-moz-box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#174f69}.wrap .add-new-h2{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#808080}.ac_results li{color:#101010}.alternate,.alt{background-color:#f7fcfe}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{background-color:#eff8ff;border-color:#d1e5ee}.ui-autocomplete li a.ui-state-hover{background-color:#def1ff}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759b url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9fd0d5!important;background:#298cba!important}a:hover,a:active,a:focus{color:#d54e21}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#rightnow .rbutton{background-color:#ebebeb;color:#264761}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#d0dfe9}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}.quicktags-toolbar input{background:#fff;background-image:-ms-linear-gradient(bottom,#e5f0f8,#fff);background-image:-moz-linear-gradient(bottom,#e5f0f8,#fff);background-image:-o-linear-gradient(bottom,#e5f0f8,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#e5f0f8),to(#fff));background-image:-webkit-linear-gradient(bottom,#e5f0f8,#fff)!important;background-image:linear-gradient(bottom,#e5f0f8,#fff)}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#footer{color:#777;border-color:#b0c8d7}#media-items .media-item,.media-item .describe,.imgedit-group{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{border-color:#d1e5ee}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px white}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#d1e5ee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background-color:#f7fcfe}.postbox h3{color:#174f69}.widget .widget-top{color:#174f69}.sidebar-name:hover h3,.postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#quicktags #ed_link{color:#00f}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}.login #backtoblog a{color:#464646}#wphead{border-bottom:#d0dfe9 1px solid}#wphead h1 a{color:#174f69}#footer a:link,#footer a:visited{text-decoration:none}#footer a:hover{color:#000;text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#quicktags{border-color:#cfdfe9;background-color:#cfdfe9;background-image:url("../images/ed-bg-vs.gif?ver=20101102")}.quicktags-toolbar input{border-color:#b2c4c8}.quicktags-toolbar input:hover{border-color:#d0dfe9;background:#f0f8fe}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar{border-color:#d0dfe9}#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar *{color:#555}#poststuff #editor-toolbar .active{border-color:#d0dfe9 #d0dfe9 #eff8ff;background-color:#eff8ff;color:#333}#post-status-info{background-color:#eff8ff}.wp-editor-wrap .wp_themeSkin *,.wp-editor-wrap .wp_themeSkin a:hover,.wp-editor-wrap .wp_themeSkin a:link,.wp-editor-wrap .wp_themeSkin a:visited,.wp-editor-wrap .wp_themeSkin a:active{color:#000}.wp-editor-wrap .wp_themeSkin table.mceLayout{border-color:#bed1dd #bed1dd #d0dfe9}#editorcontainer #content,#editorcontainer .wp-editor-wrap .wp_themeSkin .mceIframeContainer{-moz-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);-webkit-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1)}.wp-editor-wrap .wp_themeSkin iframe{background:transparent}.wp-editor-wrap .wp_themeSkin .mceStatusbar{color:#000;background-color:#f5f5f5}.wp-editor-wrap .wp_themeSkin .mceButton{border-color:#b0c8d7;background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:hover{border-color:#5589aa!important;background-color:#c9c9c9;background-image:-ms-linear-gradient(bottom,#bdccd5,#fff);background-image:-moz-linear-gradient(bottom,#bdccd5,#fff);background-image:-o-linear-gradient(bottom,#bdccd5,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#bdccd5),to(#fff));background-image:-webkit-linear-gradient(bottom,#bdccd5,#fff)!important;background-image:linear-gradient(bottom,#bdccd5,#fff)}.wp-editor-wrap .wp_themeSkin a.mceButton:active,.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:active,.wp-editor-wrap .wp_themeSkin a.mceButtonSelected:active,.wp-editor-wrap .wp_themeSkin a.mceButtonActive,.wp-editor-wrap .wp_themeSkin a.mceButtonActive:active,.wp-editor-wrap .wp_themeSkin a.mceButtonActive:hover{background:#b0c8d7!important;background-image:-ms-linear-gradient(bottom,#fff,#cfdfe9);background-image:-moz-linear-gradient(bottom,#fff,#cfdfe9);background-image:-o-linear-gradient(bottom,#fff,#cfdfe9);background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#cfdfe9));background-image:-webkit-linear-gradient(bottom,#fff,#cfdfe9)!important;background-image:linear-gradient(bottom,#fff,#cfdfe9);border-color:#5589aa!important}.wp-editor-wrap .wp_themeSkin .mceButtonDisabled{border-color:#b0c8d7!important}.wp-editor-wrap .wp_themeSkin .mceListBox .mceText,.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen{border-color:#b0c8d7;background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen{border-left:0!important}.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover:active .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceText,.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:active .mceText{background:#b0c8d7;border-color:#5589aa!important}.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceText,.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen{border-color:#5589aa!important;background-color:#c9c9c9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin select.mceListBox{border-color:#b2b2b2;background-color:#fff}.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction,.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen{border-color:#b0c8d7}.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp-editor-wrap .wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp-editor-wrap .wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction:hover{border-color:#5589aa!important}.wp-editor-wrap .wp_themeSkin table.mceSplitButton td{background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin table.mceSplitButton:hover td{background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff)}.wp-editor-wrap .wp_themeSkin .mceSplitButtonActive{background-color:#b0c8d7}.wp-editor-wrap .wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#b2b2b2}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a{border-color:#b2b2b2}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors{border-color:#fff}.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0a246a;background-color:#b6bdd2}.wp-editor-wrap .wp_themeSkin a.mceMoreColors:hover{border-color:#0a246a}.wp-editor-wrap .wp_themeSkin .mceMenu{border-color:#ddd}.wp-editor-wrap .wp_themeSkin .mceMenu table{background-color:#ebeaeb}.wp-editor-wrap .wp_themeSkin .mceMenu .mceText{color:#000}.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5}.wp-editor-wrap .wp_themeSkin td.mceMenuItemSeparator{background-color:#aaa}.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle a{background-color:#ccc;border-bottom-color:#aaa}.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle span.mceText{color:#000}.wp-editor-wrap .wp_themeSkin .mceMenuItemDisabled .mceText{color:#888}.wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar{background:#cfdfe9 url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top;border-color:#cfdfe9}.wp-admin #mceModalBlocker{background:#000}.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.wp-admin .clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999}.wp-admin .clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999}.wp-admin .clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999}.wp-admin .clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999}.wp-admin .clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999}.wp-admin .clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999}.wp-admin .clearlooks2 .mceFocus .mceTop span{color:#e5e5e5}.wp-editor-wrap .wp-switch-editor{background-color:#f5fafd;border-color:#d1e5ee #d1e5ee #d1e5ee;color:#999}.wp-editor-wrap.tmce-active .switch-tmce,.wp-editor-wrap.html-active .switch-html{background-color:#eff8ff;border-color:#d1e5ee #d1e5ee #eff8ff;color:#333}.wp-editor-wrap.quicktags-toolbar input{color:#464646;border-color:#d1e5ee;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff)}.wp-editor-wrap .quicktags-toolbar,.wp-editor-wrap.wp_themeSkin tr.mceFirst td.mceToolbar{border-bottom:1px solid #ccc;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-o-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:-webkit-linear-gradient(bottom,#cfdfe9,#eff8ff);background-image:linear-gradient(bottom,#cfdfe9,#eff8ff)}.wp-editor-wrap .quicktags-toolbar input:hover{border-color:#aaa;background:#ddd}.wp-editor-wrap.wp_themeSkin .mceButton,.wp-editor-wrap.wp_themeSkin .mceListBox .mceText,.wp-editor-wrap.wp_themeSkin .mceListBox .mceOpen{border-color:#ccc;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff)}.wp-editor-wrap.wp_themeSkin a.mceButtonEnabled:hover{border-color:#a0a0a0;background:#ddd;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff);background-image:linear-gradient(bottom,#cfdfe9,#fff)}#titlediv #title{border-color:#bdccd5}#editorcontainer{border-color:#bdccd5 #bdccd5 #d0dfe9}#post-status-info{border-color:#d0dfe9 #bdccd5 #bdccd5}.editwidget .widget-inside{border-color:#d0dfe9}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#eff8ff;border-color:#d1e5ee}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#d1e5ee;border-color:#bed1dd}#adminmenu div.separator{border-color:#d1e5ee}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark-vs.png) no-repeat -1px 6px}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows-vs.png) no-repeat -2px 6px}#adminmenu a.menu-top,.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#fff;border-bottom-color:#cae6ff}#adminmenu li.wp-menu-open{border-color:#d1e5ee}#adminmenu li.menu-top:hover>a,#adminmenu li.menu-top.focused>a,#adminmenu li.menu-top>a:focus{background-color:#e0f1ff;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#5589aa;background-image:-ms-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(bottom,#5589aa,#619bbb)}#adminmenu .wp-menu-arrow div{background-color:#5589aa;background-image:-ms-linear-gradient(right bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(right bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(right bottom,#5589aa,#619bbb);background-image:-webkit-gradient(linear,right bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(right bottom,#5589aa,#619bbb);background-image:linear-gradient(right bottom,#5589aa,#619bbb)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#fff;border-bottom-color:#cae6ff;background:#e0f1ff}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e0f1ff;border-color:#cae6ff}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#5a8fad;border-bottom-color:#5589aa}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eff8ff;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu ul{background-color:#fff}#adminmenu .wp-submenu-wrap,#adminmenu .wp-submenu ul{border-color:#d0dfe9}#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:#e8eff4;background-color:#eff8ff}#adminmenu div.wp-submenu{background-color:transparent}#collapse-menu{color:#a0c3d5}#collapse-menu:hover{color:#5a8fad}#collapse-button{border-color:#d0dfe9;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff)}#collapse-menu:hover #collapse-button{border-color:#a0c3d5}#collapse-button div{background:transparent url(../images/arrows-vs.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){#adminmenu li.menu-top{border-top-color:#fff;border-bottom-color:#cae6ff}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{background-color:#5589aa;background-image:-ms-linear-gradient(bottom,#5589aa,#619bbb);background-image:-moz-linear-gradient(bottom,#5589aa,#619bbb);background-image:-o-linear-gradient(bottom,#5589aa,#619bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#5589aa),to(#619bbb));background-image:-webkit-linear-gradient(bottom,#5589aa,#619bbb);background-image:linear-gradient(bottom,#5589aa,#619bbb)}#adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{border-top-color:#5a8fad;border-bottom-color:#5589aa}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu-vs.png?ver=20120201')}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32-vs.png?ver=20111206)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}@media only screen and (-webkit-min-device-pixel-ratio:1.5){.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32-vs-2x.png?ver=20120412);background-size:708px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu-2x.png?ver=20120412');background-size:390px 64px}}table.diff .diff-deletedline{background-color:#fdd}table.diff .diff-deletedline del{background-color:#f99}table.diff .diff-addedline{background-color:#dfd}table.diff .diff-addedline ins{background-color:#9f9}#att-info{background-color:#e4f2fd}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#screen-meta{background-color:#eff8ff;border-color:#d1e5ee;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{background-color:#ceeaff;color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#d1e5ee}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#000}#screen-options-link-wrap,#contextual-help-link-wrap{background-color:#eff8ff;border-right:1px solid #d1e5ee;border-left:1px solid #d1e5ee;border-bottom:1px solid #d1e5ee;background-image:-ms-linear-gradient(bottom,#eff8ff,#eff8ff);background-image:-moz-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-o-linear-gradient(bottom,#def1ff,#eff8ff);background-image:-webkit-gradient(linear,left bottom,left top,from(#def1ff),to(#eff8ff));background-image:-webkit-linear-gradient(bottom,#def1ff,#eff8ff);background-image:linear-gradient(bottom,#def1ff,#eff8ff)}#screen-meta-links a.show-settings{color:#606060}#screen-meta-links a.show-settings:hover{color:#000}#screen-meta-links a.show-settings{background:transparent url(../images/arrows-vs.png) no-repeat right 4px}#screen-meta-links a.show-settings.screen-meta-active{background:transparent url(../images/arrows-vs.png) no-repeat right -31px}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#ddd}#current-theme img{border-color:#999}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#eee}#minor-publishing{border-bottom-color:#ddd}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0}#header-logo{background:transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#dfdfdf}div.widgets-sortables,#widgets-left .inactive{background-color:#f7fcfe;border-color:#d0dfe9}#available-widgets .widget-holder{background-color:#f7fcfe;border-color:#d0dfe9}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;background-color:#f7fcfe;background-image:-ms-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:-moz-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:-o-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:-webkit-gradient(linear,left top,left bottom,from(#ecf8fe),to(#f7fcfe));background-image:-webkit-linear-gradient(top,#ecf8fe,#f7fcfe);background-image:linear-gradient(top,#ecf8fe,#f7fcfe);text-shadow:#fff 0 1px 0;border-color:#d0dfe9;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.sidebar-name:hover,#removing-widget{color:#d54e21}#removing-widget span{color:black}.sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#d0dfe9}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#d0dfe9}#nav-menu-header{border-bottom-color:#d0dfe9}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#f7fcfe;border-color:#d0dfe9}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container{border-color:#dfdfdf}.menu-item-handle{border-color:#d0dfe9}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows-vs.png) no-repeat 8px 10px;border-bottom-color:#eff8ff}.item-edit:hover{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px}.menu-item-settings{border-color:#d0dfe9}.link-to-original{color:#777;border-color:#d0dfe9}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#eff8ff;border-bottom-color:#eff8ff}#upload-form label{color:#777}.fullscreen-overlay{background:#fff}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#bed1dd}#fullscreen-topbar{border-bottom-color:#d1e5ee}.about-wrap h1{color:#333;text-shadow:1px 1px 1px white}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px white;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px white}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-moz-box-shadow:0 1px 3px rgba(0,0,0,0.3);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px white}.about-wrap li.wp-person img.gravatar{-moz-box-shadow:0 0 4px rgba(0,0,0,0.4);-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px white}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:none;border-left-color:#99d}.rtl .post-com-count{background-image:url(../images/bubble_bg-rtl.gif)}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 6px}.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows-vs.png) no-repeat 8px 6px}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:none;border-left-color:#d1e5ee}.rtl #adminmenu .wp-submenu-wrap,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -72px}}.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px}.rtl .tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-rtl-vs.gif?ver=20100610') repeat-x scroll right -379px}.rtl #post-body .misc-pub-section{border-right-color:none;border-left-color:#d1e5ee}.rtl .sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px}.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px} \ No newline at end of file diff --git a/wp-admin/css/colors-classic.dev.css b/wp-admin/css/colors-classic.dev.css new file mode 100644 index 0000000..b70e35d --- /dev/null +++ b/wp-admin/css/colors-classic.dev.css @@ -0,0 +1,2498 @@ +/*------------------------------------------------------------------------------ + + +Howdy! This is the CSS file that controls the +Blue (classic) color style on the WordPress Dashboard. + +This file contains both LTR and RTL styles. + + +TABLE OF CONTENTS: +------------------ + 1.0 - Left to Right Styles + 2.0 - Right to Left Styles + + +------------------------------------------------------------------------------*/ + + +/*------------------------------------------------------------------------------ + 1.0 - Left to Right Styles +------------------------------------------------------------------------------*/ + +html, +.wp-dialog { + background-color: #fff; +} + +* html input, +* html .widget { + border-color: #dfdfdf; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="file"], +input[type="button"], +input[type="submit"], +input[type="reset"], +input[type="email"], +input[type="number"], +input[type="search"], +input[type="tel"], +input[type="url"], +select { + border-color: #dfdfdf; + background-color: #fff; + color: #333; +} + +select { + color: #000; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="file"]:focus, +input[type="button"]:focus, +input[type="submit"]:focus, +input[type="reset"]:focus, +input[type="email"]:focus, +input[type="number"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="url"]:focus, +select:focus { + border-color: #d1e5ee; +} + +kbd, +code { + background: #eaeaea; +} + +input[readonly] { + background-color: #eee; +} + +.find-box-search { + border-color: #dfdfdf; + background-color: #f1f1f1; +} + +.find-box { + background-color: #f1f1f1; +} + +.find-box-inside { + background-color: #fff; +} + +a.page-numbers:hover { + border-color: #999; +} + +body, +#wpbody, +.form-table .pre, +.ui-autocomplete li a { + color: #333; +} + +body > #upload-menu { + border-bottom-color: #fff; +} + +#postcustomstuff table, +#your-profile fieldset, +#rightnow, +div.dashboard-widget, +#dashboard-widgets p.dashboard-widget-links { + border-color: #D1E5EE +} + +#poststuff .inside label.spam, +#poststuff .inside label.deleted { + color: red; +} + +#poststuff .inside label.waiting { + color: orange; +} + +#poststuff .inside label.approved { + color: green; +} + +#postcustomstuff table { + border-color: #dfdfdf; + background-color: #F9F9F9; +} + +#postcustomstuff thead th { + background-color: #F1F1F1; +} + +#postcustomstuff table input, +#postcustomstuff table textarea { + border-color: #dfdfdf; + background-color: #fff; +} + +.widefat { + border-color: #D1E5EE; + background-color: #fff; +} + +div.dashboard-widget-error { + background-color: #c43; +} + +div.dashboard-widget-notice { + background-color: #cfe1ef; +} + +div.dashboard-widget-submit { + border-top-color: #ccc; +} + +ul.category-tabs li { + border-color: transparent; +} + +div.tabs-panel, +.wp-tab-panel, +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + border-color: #dfdfdf; + background-color: #fff; +} + +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + background-color: #fff; +} + +input.disabled, +textarea.disabled { + background-color: #ccc; +} +/* #upload-menu li a.upload-tab-link, */ +#plugin-information .action-button a, +#plugin-information .action-button a:hover, +#plugin-information .action-button a:visited { + color: #fff; +} + +.widget .widget-top, +.postbox h3, +.stuffbox h3, +.widefat thead tr th, +.widefat tfoot tr th, +h3.dashboard-widget-title, +h3.dashboard-widget-title span, +h3.dashboard-widget-title small, +.find-box-head, +.sidebar-name, +#nav-menu-header, +#nav-menu-footer, +.menu-item-handle, +#fullscreen-topbar { + background-color: #f5fafd; /* Fallback */ + background-image: -ms-linear-gradient(top, #f7fcfe, #eff8ff); /* IE10 */ + background-image: -moz-linear-gradient(top, #f7fcfe, #eff8ff); /* Firefox */ + background-image: -o-linear-gradient(top, #f7fcfe, #eff8ff); /* Opera */ + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fcfe), to(#eff8ff)); /* old Webkit */ + background-image: -webkit-linear-gradient(top, #f7fcfe, #eff8ff); /* new Webkit */ + background-image: linear-gradient(top, #f7fcfe, #eff8ff); /* proposed W3C Markup */ +} + +.widget .widget-top, +.postbox h3, +.stuffbox h3 { + border-bottom-color: #D1E5EE; + text-shadow: #fff 0 1px 0; + -moz-box-shadow: 0 1px 0 #fff; + -webkit-box-shadow: 0 1px 0 #fff; + box-shadow: 0 1px 0 #fff; +} + +.form-table th, +.form-wrap label { + color: #222; + text-shadow: #fff 0 1px 0; +} + +.description, +.form-wrap p { + color: #666; +} + +strong .post-com-count span { + background-color: #21759b; +} + +.sorthelper { + background-color: #ccf3fa; +} + +.ac_match, +.subsubsub a.current { + color: #000; +} + +.wrap h2 { + color: #174f69; +} + +.wrap .add-new-h2 { + background: #f1f1f1; +} + +.subtitle { + color: #777; +} + +.ac_over { + background-color: #f0f0b8; +} + +.ac_results { + background-color: #fff; + border-color: #808080; +} + +.ac_results li { + color: #101010; +} + +.alternate, +.alt { + background-color: #f7fcfe; +} + +.available-theme a.screenshot { + background-color: #f1f1f1; + border-color: #ddd; +} + +.bar { + background-color: #e8e8e8; + border-right-color: #99d; +} + +#media-upload, +#media-upload .media-item .slidetoggle { + background: #fff; +} + +#media-upload .slidetoggle { + border-top-color: #dfdfdf; +} + +div.error, +.login #login_error { + background-color: #ffebe8; + border-color: #c00; +} + +div.error a { + color: #c00; +} + +.form-invalid { + background-color: #ffebe8 !important; +} + +.form-invalid input, +.form-invalid select { + border-color: #c00 !important; +} + +.submit, +#commentsdiv #add-new-comment { + border-color: #dfdfdf; +} + +.highlight { + background-color: #e4f2fd; + color: #000; +} + +.howto, +.nonessential, +#edit-slug-box, +.form-input-tip, +.subsubsub { + color: #666; +} + +.media-upload-form label.form-help, +td.help { + color: #9a9a9a; +} + +.ui-autocomplete { + background-color: #eff8ff; + border-color: #d1e5ee; +} + +.ui-autocomplete li a.ui-state-hover { + background-color: #def1ff; +} + +.post-com-count { + background-image: url(../images/bubble_bg.gif); + color: #fff; +} + +.post-com-count span { + background-color: #bbb; + color: #fff; +} + +.post-com-count:hover span { + background-color: #d54e21; +} + +.quicktags, .search { + background-color: #ccc; + color: #000; +} + +.side-info h5 { + border-bottom-color: #dadada; +} + +.side-info ul { + color: #666; +} + +.button, +.button-secondary, +.submit input, +input[type=button], +input[type=submit] { + border-color: #bbb; + color: #464646; +} + +.button:hover, +.button-secondary:hover, +.submit input:hover, +input[type=button]:hover, +input[type=submit]:hover { + color: #000; + border-color: #666; +} + +.button, +.submit input, +.button-secondary { + background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top; + text-shadow: rgba(255,255,255,1) 0 1px 0; +} + +.button:active, +.submit input:active, +.button-secondary:active { + background: #eee url(../images/white-grad-active.png) repeat-x scroll left top; +} + +input.button-primary, +button.button-primary, +a.button-primary { + border-color: #298cba; + font-weight: bold; + color: #fff; + background: #21759B url(../images/button-grad.png) repeat-x scroll left top; + text-shadow: rgba(0,0,0,0.3) 0 -1px 0; +} + +input.button-primary:active, +button.button-primary:active, +a.button-primary:active { + background: #21759b url(../images/button-grad-active.png) repeat-x scroll left top; + color: #eaf2fa; +} + +input.button-primary:hover, +button.button-primary:hover, +a.button-primary:hover, +a.button-primary:focus, +a.button-primary:active { + border-color: #13455b; + color: #eaf2fa; +} + +.button-disabled, +.button[disabled], +.button:disabled, +.button-secondary[disabled], +.button-secondary:disabled, +a.button.disabled { + color: #aaa !important; + border-color: #ddd !important; +} + +.button-primary-disabled, +.button-primary[disabled], +.button-primary:disabled { + color: #9FD0D5 !important; + background: #298CBA !important; +} + +a:hover, +a:active, +a:focus { + color: #d54e21; +} + +#adminmenu a:hover, +#adminmenu li.menu-top > a:focus, +#adminmenu ul.wp-submenu a:hover, +#the-comment-list .comment a:hover, +#rightnow a:hover, +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover, +.ui-tabs-nav a:hover, +.plugins .inactive a:hover, +#all-plugins-table .plugins .inactive a:hover, +#search-plugins-table .plugins .inactive a:hover { + color: #d54e21; +} + +#the-comment-list .comment-item, +#dashboard-widgets #dashboard_quick_press form p.submit { + border-color: #dfdfdf; +} + +#side-sortables .category-tabs .tabs a, +#side-sortables .add-menu-item-tabs .tabs a, +.wp-tab-bar .wp-tab-active a { + color: #333; +} + +#rightnow .rbutton { + background-color: #ebebeb; + color: #264761; +} + +.submitbox .submit { + background-color: #464646; + color: #ccc; +} + +.plugins a.delete:hover, +#all-plugins-table .plugins a.delete:hover, +#search-plugins-table .plugins a.delete:hover, +.submitbox .submitdelete { + color: #f00; + border-bottom-color: #f00; +} + +.submitbox .submitdelete:hover, +#media-items a.delete:hover { + color: #fff; + background-color: #f00; + border-bottom-color: #f00; +} + +#normal-sortables .submitbox .submitdelete:hover { + color: #000; + background-color: #f00; + border-bottom-color: #f00; +} + +.tablenav .dots { + border-color: transparent; +} + +.tablenav .next, +.tablenav .prev { + border-color: transparent; + color: #21759b; +} + +.tablenav .next:hover, +.tablenav .prev:hover { + border-color: transparent; + color: #d54e21; +} + +div.updated, +.login .message { + background-color: #ffffe0; + border-color: #e6db55; +} + +.update-message { + color: #000; +} + +a.page-numbers { + border-bottom-color: #B8D3E2; +} + +.commentlist li { + border-bottom-color: #ccc; +} + +.widefat td, +.widefat th { + border-top-color: #fff; + border-bottom-color: #D0DFE9; +} + +.widefat th { + text-shadow: rgba(255,255,255,0.8) 0 1px 0; +} + +.widefat td { + color: #555; +} +.widefat p, +.widefat ol, +.widefat ul { + color: #333; +} + +.widefat thead tr th, +.widefat tfoot tr th, +h3.dashboard-widget-title, +h3.dashboard-widget-title span, +h3.dashboard-widget-title small, +.find-box-head { + color: #333; +} + +th.sortable a:hover, th.sortable a:active, th.sortable a:focus { + color: #333; +} + +h3.dashboard-widget-title small a { + color: #d7d7d7; +} + +h3.dashboard-widget-title small a:hover { + color: #fff; +} + +a, +#adminmenu a, +#the-comment-list p.comment-author strong a, +#media-upload a.del-link, +#media-items a.delete, +.plugins a.delete, +.ui-tabs-nav a { + color: #21759b; +} + +#adminmenu .awaiting-mod, +#adminmenu .update-plugins, +#sidemenu a .update-plugins, +#rightnow .reallynow { + background-color: #464646; + color: #fff; + -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + box-shadow: rgba(255,255,255,0.5) 0 1px 0; +} +#plugin-information .action-button { + background-color: #d54e21; + color: #fff; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins{ + background-color: #464646; + color: #fff; + -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + box-shadow: rgba(255,255,255,0.5) 0 1px 0; +} + +div#media-upload-header, +div#plugin-information-header { + background-color: #f9f9f9; + border-bottom-color: #dfdfdf; +} + +#currenttheme img { + border-color: #666; +} + +#dashboard_secondary div.dashboard-widget-content ul li a { + background-color: #f9f9f9; +} + +input.readonly, textarea.readonly { + background-color: #ddd; +} + +.quicktags-toolbar input { + background: #fff; + background-image: -ms-linear-gradient(bottom, #e5f0f8, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #e5f0f8, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #e5f0f8, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#e5f0f8), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #e5f0f8, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #e5f0f8, #fff); /* proposed W3C Markup */ +} + +#editable-post-name { + background-color: #fffbcc; +} + +#edit-slug-box strong, +.tablenav .displaying-num, +#submitted-on, +.submitted-on { + color: #777; +} + +.login #nav a, +.login #backtoblog a { + color: #21759b !important; +} + +.login #nav a:hover, +.login #backtoblog a:hover { + color: #d54e21 !important; +} + +#footer { + color: #777; + border-color: #b0c8d7; +} + +#media-items .media-item, +.media-item .describe, +.imgedit-group { + border-color: #dfdfdf; +} + +.checkbox, +.side-info, +.plugins tr, +#your-profile #rich_editing { + background-color: #fcfcfc; +} + +.plugins .inactive, +.plugins .inactive th, +.plugins .inactive td, +tr.inactive + tr.plugin-update-tr .plugin-update { + background-color: #f4f4f4; +} + +.plugin-update-tr .update-message { + background-color: #fffbe4; + border-color: #dfdfdf; +} + +.plugins .active, +.plugins .active th, +.plugins .active td { + color: #000; +} + +.plugins .inactive a { + color: #557799; +} + +#the-comment-list tr.undo, +#the-comment-list div.undo { + background-color: #f4f4f4; +} + +#the-comment-list .unapproved { + background-color: #ffffe0; +} + +#the-comment-list .approve a { + color: #006505; +} + +#the-comment-list .unapprove a { + color: #d98500; +} + +table.widefat span.delete a, +table.widefat span.trash a, +table.widefat span.spam a, +#dashboard_recent_comments .delete a, +#dashboard_recent_comments .trash a, +#dashboard_recent_comments .spam a { + color: #bc0b0b; +} + +.welcome-panel { + border-color: #d1e5ee; +} +.welcome-panel p { + color: #777; +} +.welcome-panel-column p { + color: #464646; +} +.welcome-panel h3 { + text-shadow: 1px 1px 1px white; +} + +.widget, +#widget-list .widget-top, +.postbox, +#titlediv, +#poststuff .postarea, +.stuffbox { + border-color: #d1e5ee; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.widget, +#widget-list .widget-top, +.postbox, +.menu-item-settings { + background-color: #f7fcfe; +} + +.postbox h3 { + color: #174f69; +} + +.widget .widget-top { + color: #174f69; +} + +.sidebar-name:hover h3, +.postbox h3:hover { + color: #000; +} + +.curtime #timestamp { + background-image: url(../images/date-button.gif); +} + +#quicktags #ed_link { + color: #00f; +} + +#rightnow .youhave { + background-color: #f0f6fb; +} + +#rightnow a { + color: #448abd; +} + +.tagchecklist span a, +#bulk-titles div a { + background: url(../images/xit.gif) no-repeat; +} + +.tagchecklist span a:hover, +#bulk-titles div a:hover { + background: url(../images/xit.gif) no-repeat -10px 0; +} + +#update-nag, .update-nag { + background-color: #fffbcc; + border-color: #e6db55; + color: #555; +} + +.login #backtoblog a { + color: #464646; +} + +#wphead { + border-bottom:#d0dfe9 1px solid; +} + +#wphead h1 a { + color: #174f69; +} + +#footer a:link, +#footer a:visited { + text-decoration: none; +} + +#footer a:hover { + color: #000; + text-decoration: underline; +} + +.file-error, +abbr.required, +.widget-control-remove:hover, +table.widefat .delete a:hover, +table.widefat .trash a:hover, +table.widefat .spam a:hover, +#dashboard_recent_comments .delete a:hover, +#dashboard_recent_comments .trash a:hover +#dashboard_recent_comments .spam a:hover { + color: #f00; +} + +#pass-strength-result { + background-color: #eee; + border-color: #ddd !important; +} + +#pass-strength-result.bad { + background-color: #ffb78c; + border-color: #ff853c !important; +} + +#pass-strength-result.good { + background-color: #ffec8b; + border-color: #fc0 !important; +} + +#pass-strength-result.short { + background-color: #ffa0a0; + border-color: #f04040 !important; +} + +#pass-strength-result.strong { + background-color: #c3ff88; + border-color: #8dff1c !important; +} + +/* editors */ +#quicktags { + border-color: #cfdfe9; + background-color: #cfdfe9; + background-image: url("../images/ed-bg-vs.gif?ver=20101102"); +} + +.quicktags-toolbar input { + border-color: #b2c4c8; +} + +.quicktags-toolbar input:hover { + border-color: #d0dfe9; + background: #f0f8fe; +} + +#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar { + border-color: #d0dfe9; +} + +#poststuff .wp-editor-wrap .wp_themeSkin .mceStatusbar * { + color: #555; +} + +#poststuff #editor-toolbar .active { + border-color: #d0dfe9 #d0dfe9 #eff8ff; + background-color: #eff8ff; + color: #333; +} + +/* TinyMCE */ +#post-status-info { + background-color: #eff8ff; +} + +.wp-editor-wrap .wp_themeSkin *, +.wp-editor-wrap .wp_themeSkin a:hover, +.wp-editor-wrap .wp_themeSkin a:link, +.wp-editor-wrap .wp_themeSkin a:visited, +.wp-editor-wrap .wp_themeSkin a:active { + color: #000; +} + +/* Containers */ +.wp-editor-wrap .wp_themeSkin table.mceLayout { + border-color: #bed1dd #bed1dd #d0dfe9; +} + +#editorcontainer #content, +#editorcontainer .wp-editor-wrap .wp_themeSkin .mceIframeContainer { + -moz-box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 ); + -webkit-box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 ); +} +.wp-editor-wrap .wp_themeSkin iframe { + background: transparent; +} + +/* Layout */ +.wp-editor-wrap .wp_themeSkin .mceStatusbar { + color: #000; + background-color: #f5f5f5; +} + +/* Button */ +.wp-editor-wrap .wp_themeSkin .mceButton { + border-color: #B0C8D7; + background-color: #cfdfe9; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:hover { + border-color: #5589AA !important; + background-color: #c9c9c9; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #bdccd5, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #bdccd5, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #bdccd5, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#bdccd5), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #bdccd5, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #bdccd5, #fff); /* proposed W3C Markup */ +} + +.wp-editor-wrap .wp_themeSkin a.mceButton:active, +.wp-editor-wrap .wp_themeSkin a.mceButtonEnabled:active, +.wp-editor-wrap .wp_themeSkin a.mceButtonSelected:active, +.wp-editor-wrap .wp_themeSkin a.mceButtonActive, +.wp-editor-wrap .wp_themeSkin a.mceButtonActive:active, +.wp-editor-wrap .wp_themeSkin a.mceButtonActive:hover { + background: #B0C8D7 !important; + background-image: -ms-linear-gradient(bottom, #fff, #cfdfe9); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #fff, #cfdfe9); /* Firefox */ + background-image: -o-linear-gradient(bottom, #fff, #cfdfe9); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#fff), to(#cfdfe9)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #fff, #cfdfe9) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #fff, #cfdfe9); /* proposed W3C Markup */ + border-color: #5589AA !important; +} + +.wp-editor-wrap .wp_themeSkin .mceButtonDisabled { + border-color: #B0C8D7 !important; +} + +/* ListBox */ +.wp-editor-wrap .wp_themeSkin .mceListBox .mceText, +.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen { + border-color: #B0C8D7; + background-color: #cfdfe9; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +.wp-editor-wrap .wp_themeSkin .mceListBox .mceOpen { + border-left: 0px !important; +} + +.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, +.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen, +.wp-editor-wrap .wp_themeSkin .mceListBoxHover:active .mceOpen, +.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceOpen, +.wp-editor-wrap .wp_themeSkin .mceListBoxSelected .mceText, +.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:active .mceText { + background: #B0C8D7; + border-color: #5589AA !important; +} + +/* List Box Hover */ +.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceText, +.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceText, +.wp-editor-wrap .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, +.wp-editor-wrap .wp_themeSkin .mceListBoxHover .mceOpen { + border-color: #5589AA !important; + background-color: #c9c9c9; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +.wp-editor-wrap .wp_themeSkin select.mceListBox { + border-color: #B2B2B2; + background-color: #fff; +} + +/* SplitButton */ +.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction, +.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen { + border-color: #B0C8D7; +} + +.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceOpen:hover, +.wp-editor-wrap .wp_themeSkin .mceSplitButtonSelected a.mceOpen, +.wp-editor-wrap .wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction, +.wp-editor-wrap .wp_themeSkin .mceSplitButton a.mceAction:hover { + border-color: #5589AA !important; +} + +.wp-editor-wrap .wp_themeSkin table.mceSplitButton td { + background-color: #cfdfe9; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +.wp-editor-wrap .wp_themeSkin table.mceSplitButton:hover td { + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +.wp-editor-wrap .wp_themeSkin .mceSplitButtonActive { + background-color: #B0C8D7; +} + +/* ColorSplitButton */ +.wp-editor-wrap .wp_themeSkin div.mceColorSplitMenu table { + background-color: #ebebeb; + border-color: #B2B2B2; +} + +.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a { + border-color: #B2B2B2; +} + +.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors { + border-color: #fff; +} + +.wp-editor-wrap .wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover { + border-color: #0A246A; + background-color: #B6BDD2; +} + +.wp-editor-wrap .wp_themeSkin a.mceMoreColors:hover { + border-color: #0A246A; +} + +/* Menu */ +.wp-editor-wrap .wp_themeSkin .mceMenu { + border-color: #ddd; +} + +.wp-editor-wrap .wp_themeSkin .mceMenu table { + background-color: #ebeaeb; +} + +.wp-editor-wrap .wp_themeSkin .mceMenu .mceText { + color: #000; +} + +.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover, +.wp-editor-wrap .wp_themeSkin .mceMenu .mceMenuItemActive { + background-color: #f5f5f5; +} +.wp-editor-wrap .wp_themeSkin td.mceMenuItemSeparator { + background-color: #aaa; +} +.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle a { + background-color: #ccc; + border-bottom-color: #aaa; +} +.wp-editor-wrap .wp_themeSkin .mceMenuItemTitle span.mceText { + color: #000; +} +.wp-editor-wrap .wp_themeSkin .mceMenuItemDisabled .mceText { + color: #888; +} + +.wp-editor-wrap .wp_themeSkin tr.mceFirst td.mceToolbar { + background: #cfdfe9 url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top; + border-color: #cfdfe9; +} + +.wp-admin #mceModalBlocker { + background: #000; +} + +.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft { + background: #444444; + border-left: 1px solid #999; + border-top: 1px solid #999; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; +} + +.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight { + background: #444444; + border-right: 1px solid #999; + border-top: 1px solid #999; + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; +} + +.wp-admin .clearlooks2 .mceMiddle .mceLeft { + background: #f1f1f1; + border-left: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceMiddle .mceRight { + background: #f1f1f1; + border-right: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom { + background: #f1f1f1; + border-bottom: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom .mceLeft { + background: #f1f1f1; + border-bottom: 1px solid #999; + border-left: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom .mceCenter { + background: #f1f1f1; + border-bottom: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom .mceRight { + background: #f1f1f1; + border-bottom: 1px solid #999; + border-right: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceFocus .mceTop span { + color: #e5e5e5; +} + +.wp-editor-wrap .wp-switch-editor { + background-color: #f5fafd; + border-color: #d1e5ee #d1e5ee #d1e5ee; + color: #999 +} + +.wp-editor-wrap.tmce-active .switch-tmce, +.wp-editor-wrap.html-active .switch-html { + background-color: #eff8ff; + border-color: #d1e5ee #d1e5ee #eff8ff; + color: #333; +} + +.wp-editor-wrap.quicktags-toolbar input { + color: #464646; + border-color: #d1e5ee; + background-color: #eff8ff; + background-image: -ms-linear-gradient(bottom, #eff8ff, #fff); + background-image: -moz-linear-gradient(bottom, #eff8ff, #fff); + background-image: -o-linear-gradient(bottom, #eff8ff, #fff); + background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff); + background-image: linear-gradient(bottom, #eff8ff, #fff); +} +.wp-editor-wrap .quicktags-toolbar, +.wp-editor-wrap.wp_themeSkin tr.mceFirst td.mceToolbar { + border-bottom: 1px solid #ccc; + background-color: #eff8ff; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #cfdfe9, #eff8ff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #eff8ff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #eff8ff); /* Opera */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #eff8ff); /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #eff8ff); /* proposed W3C Markup */ +} +.wp-editor-wrap .quicktags-toolbar input:hover { + border-color: #aaa; + background: #ddd; +} + +.wp-editor-wrap.wp_themeSkin .mceButton, +.wp-editor-wrap.wp_themeSkin .mceListBox .mceText, +.wp-editor-wrap.wp_themeSkin .mceListBox .mceOpen { + border-color: #ccc; + background-color: #eff8ff; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #eff8ff, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #eff8ff, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #eff8ff, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #eff8ff, #fff); /* proposed W3C Markup */ +} + +.wp-editor-wrap.wp_themeSkin a.mceButtonEnabled:hover { + border-color: #a0a0a0; + background: #ddd; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +/* end TinyMCE */ + +#titlediv #title { + border-color: #bdccd5; +} + +#editorcontainer { + border-color: #bdccd5 #bdccd5 #d0dfe9; +} + +#post-status-info { + border-color: #d0dfe9 #bdccd5 #bdccd5; +} + +.editwidget .widget-inside { + border-color: #d0dfe9; +} + +#titlediv #title { + background-color: #fff; +} + +#tTips p#tTips_inside { + background-color: #ddd; + color: #333; +} + +#timestampdiv input, +#namediv input, +#poststuff .inside .the-tagcloud { + border-color: #ddd; +} + +/* menu */ +#adminmenuback, +#adminmenuwrap { + background-color: #EFF8FF; + border-color: #D1E5EE; +} + +#adminmenushadow, +#adminmenuback { + background-image: url(../images/menu-shadow.png); + background-position: top right; + background-repeat: repeat-y; +} + +#adminmenu li.wp-menu-separator { + background: #D1E5EE; + border-color: #bed1dd; +} + +#adminmenu div.separator { + border-color: #D1E5EE; +} + +#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, +#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { + background: transparent url(../images/arrows-dark-vs.png) no-repeat -1px 6px; +} + +#adminmenu .wp-has-submenu:hover .wp-menu-toggle, +#adminmenu .wp-menu-open .wp-menu-toggle { + background: transparent url(../images/arrows-vs.png) no-repeat -2px 6px; +} + +#adminmenu a.menu-top, +.folded #adminmenu li.menu-top, +#adminmenu .wp-submenu .wp-submenu-head { + border-top-color: #ffffff; + border-bottom-color: #cae6ff; +} + +#adminmenu li.wp-menu-open { + border-color: #d1e5ee; +} + +#adminmenu li.menu-top:hover > a, +#adminmenu li.menu-top.focused > a, +#adminmenu li.menu-top > a:focus { + background-color: #e0f1ff; + text-shadow: 0 1px 0 rgba( 255, 255, 255, 0.4 ); +} + +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.current a.menu-top, +.folded #adminmenu li.wp-has-current-submenu, +.folded #adminmenu li.current.menu-top, +#adminmenu .wp-menu-arrow, +#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { + background-color: #5589AA; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #5589AA, #619bbb); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #5589AA, #619bbb); /* Firefox */ + background-image: -o-linear-gradient(bottom, #5589AA, #619bbb); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#5589AA), to(#619bbb)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #5589AA, #619bbb); /* new Webkit */ + background-image: linear-gradient(bottom, #5589AA, #619bbb); /* proposed W3C Markup */ +} + +#adminmenu .wp-menu-arrow div { + background-color: #5589AA; /* Fallback */ + background-image: -ms-linear-gradient(right bottom, #5589AA, #619bbb); /* IE10 */ + background-image: -moz-linear-gradient(right bottom, #5589AA, #619bbb); /* Firefox */ + background-image: -o-linear-gradient(right bottom, #5589AA, #619bbb); /* Opera */ + background-image: -webkit-gradient(linear, right bottom, left top, from(#5589AA), to(#619bbb)); /* old Webkit */ + background-image: -webkit-linear-gradient(right bottom, #5589AA, #619bbb); /* new Webkit */ + background-image: linear-gradient(right bottom, #5589AA, #619bbb); /* proposed W3C Markup */ +} + +#adminmenu li.wp-not-current-submenu .wp-menu-arrow { + border-top-color: #fff; + border-bottom-color: #cae6ff; + background: #e0f1ff; +} + +#adminmenu li.wp-not-current-submenu .wp-menu-arrow div { + background: #e0f1ff; + border-color: #cae6ff; +} + +.folded #adminmenu li.menu-top li:hover a { + background-image: none; +} + +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.current a.menu-top, +#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { + text-shadow: 0 -1px 0 #333; + color: #fff; + border-top-color: #5A8FAD; + border-bottom-color: #5589AA; +} + +.folded #adminmenu li.wp-has-current-submenu, +.folded #adminmenu li.current.menu-top { + border-top-color: #5A8FAD; + border-bottom-color: #5589AA; +} + +#adminmenu .wp-submenu a:hover, +#adminmenu .wp-submenu a:focus { + background-color: #EFF8FF; + color: #333; +} + +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover { + color: #333; +} + +#adminmenu .wp-submenu ul { + background-color: #fff; +} + +#adminmenu .wp-submenu-wrap, +#adminmenu .wp-submenu ul { + border-color: #d0dfe9; +} + +#adminmenu .wp-submenu-wrap, +.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap { + -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); +} + +#adminmenu .wp-submenu .wp-submenu-head { + border-right-color: #e8eff4; + background-color: #EFF8FF; +} + +#adminmenu div.wp-submenu { + background-color: transparent; +} + +/* collapse menu button */ +#collapse-menu { + color: #A0C3D5; +} + +#collapse-menu:hover { + color: #5A8FAD; +} + +#collapse-button { + border-color: #d0dfe9; + background-color: #eff8ff; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #eff8ff, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #eff8ff, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #eff8ff, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #eff8ff, #fff); /* proposed W3C Markup */ +} +#collapse-menu:hover #collapse-button { + border-color: #A0C3D5; +} +#collapse-button div { + background: transparent url(../images/arrows-vs.png) no-repeat 0 -72px; +} +.folded #collapse-button div { + background-position: 0 -108px; +} + +/* Auto-folding of the admin menu */ +@media only screen and (max-width: 900px) { + #adminmenu li.menu-top { + border-top-color: #ffffff; + border-bottom-color: #cae6ff; + } + + #adminmenu li.wp-has-current-submenu, + #adminmenu li.current.menu-top { + background-color: #5589AA; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #5589AA, #619bbb); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #5589AA, #619bbb); /* Firefox */ + background-image: -o-linear-gradient(bottom, #5589AA, #619bbb); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#5589AA), to(#619bbb)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #5589AA, #619bbb); /* new Webkit */ + background-image: linear-gradient(bottom, #5589AA, #619bbb); /* proposed W3C Markup */ + } + + #adminmenu li.menu-top li:hover a { + background-image: none; + } + + #adminmenu li.wp-has-current-submenu, + #adminmenu li.current.menu-top { + border-top-color: #5A8FAD; + border-bottom-color: #5589AA; + } + + #adminmenu .wp-has-current-submenu .wp-submenu-wrap { + -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + } + + #collapse-button div { + background-position: 0 -108px; + } +} + +/* menu and screen icons */ +.icon16, +.icon32, +div.wp-menu-image { + background-color: transparent; + background-repeat: no-repeat; +} + +.icon16.icon-dashboard, +.menu-icon-dashboard div.wp-menu-image, +.icon16.icon-post, +.menu-icon-post div.wp-menu-image, +.icon16.icon-media, +.menu-icon-media div.wp-menu-image, +.icon16.icon-links, +.menu-icon-links div.wp-menu-image, +.icon16.icon-page, +.menu-icon-page div.wp-menu-image, +.icon16.icon-comments, +.menu-icon-comments div.wp-menu-image, +.icon16.icon-appearance, +.menu-icon-appearance div.wp-menu-image, +.icon16.icon-plugins, +.menu-icon-plugins div.wp-menu-image, +.icon16.icon-users, +.menu-icon-users div.wp-menu-image, +.icon16.icon-tools, +.menu-icon-tools div.wp-menu-image, +.icon16.icon-settings, +.menu-icon-settings div.wp-menu-image, +.icon16.icon-site, +.menu-icon-site div.wp-menu-image { + background-image: url('../images/menu-vs.png?ver=20120201'); +} + +.icon16.icon-dashboard, +#adminmenu .menu-icon-dashboard div.wp-menu-image { + background-position: -59px -33px; +} + +#adminmenu .menu-icon-dashboard:hover div.wp-menu-image, +#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-dashboard.current div.wp-menu-image { + background-position: -59px -1px; +} + +.icon16.icon-post, +#adminmenu .menu-icon-post div.wp-menu-image { + background-position: -269px -33px; +} + +#adminmenu .menu-icon-post:hover div.wp-menu-image, +#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-post.current div.wp-menu-image { + background-position: -269px -1px; +} + +.icon16.icon-media, +#adminmenu .menu-icon-media div.wp-menu-image { + background-position: -119px -33px; +} + +#adminmenu .menu-icon-media:hover div.wp-menu-image, +#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-media.current div.wp-menu-image { + background-position: -119px -1px; +} + +.icon16.icon-links, +#adminmenu .menu-icon-links div.wp-menu-image { + background-position: -89px -33px; +} + +#adminmenu .menu-icon-links:hover div.wp-menu-image, +#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-links.current div.wp-menu-image { + background-position: -89px -1px; +} + +.icon16.icon-page, +#adminmenu .menu-icon-page div.wp-menu-image { + background-position: -149px -33px; +} + +#adminmenu .menu-icon-page:hover div.wp-menu-image, +#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-page.current div.wp-menu-image { + background-position: -149px -1px; +} + +.icon16.icon-comments, +#adminmenu .menu-icon-comments div.wp-menu-image { + background-position: -29px -33px; +} + +#adminmenu .menu-icon-comments:hover div.wp-menu-image, +#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-comments.current div.wp-menu-image { + background-position: -29px -1px; +} + +.icon16.icon-appearance, +#adminmenu .menu-icon-appearance div.wp-menu-image { + background-position: 1px -33px; +} + +#adminmenu .menu-icon-appearance:hover div.wp-menu-image, +#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-appearance.current div.wp-menu-image { + background-position: 1px -1px; +} + +.icon16.icon-plugins, +#adminmenu .menu-icon-plugins div.wp-menu-image { + background-position: -179px -33px; +} + +#adminmenu .menu-icon-plugins:hover div.wp-menu-image, +#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-plugins.current div.wp-menu-image { + background-position: -179px -1px; +} + +.icon16.icon-users, +#adminmenu .menu-icon-users div.wp-menu-image { + background-position: -300px -33px; +} + +#adminmenu .menu-icon-users:hover div.wp-menu-image, +#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-users.current div.wp-menu-image { + background-position: -300px -1px; +} + +.icon16.icon-tools, +#adminmenu .menu-icon-tools div.wp-menu-image { + background-position: -209px -33px; +} + +#adminmenu .menu-icon-tools:hover div.wp-menu-image, +#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-tools.current div.wp-menu-image { + background-position: -209px -1px; +} + +.icon16.icon-settings, +#adminmenu .menu-icon-settings div.wp-menu-image { + background-position: -239px -33px; +} + +#adminmenu .menu-icon-settings:hover div.wp-menu-image, +#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-settings.current div.wp-menu-image { + background-position: -239px -1px; +} + +.icon16.icon-site, +#adminmenu .menu-icon-site div.wp-menu-image { + background-position: -359px -33px; +} + +#adminmenu .menu-icon-site:hover div.wp-menu-image, +#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-site.current div.wp-menu-image { + background-position: -359px -1px; +} +/* end menu and screen icons */ + +/* Screen Icons */ +.icon32.icon-post, +#icon-edit, +#icon-post, +.icon32.icon-dashboard, +#icon-index, +.icon32.icon-media, +#icon-upload, +.icon32.icon-links, +#icon-link-manager, +#icon-link, +#icon-link-category, +.icon32.icon-page, +#icon-edit-pages, +#icon-page, +.icon32.icon-comments, +#icon-edit-comments, +.icon32.icon-appearance, +#icon-themes, +.icon32.icon-plugins, +#icon-plugins, +.icon32.icon-users, +#icon-users, +#icon-profile, +#icon-user-edit, +.icon32.icon-tools, +#icon-tools, +#icon-admin, +.icon32.icon-settings, +#icon-options-general, +.icon32.icon-site, +#icon-ms-admin { + background-image: url(../images/icons32-vs.png?ver=20111206); +} + +.icon32.icon-post, +#icon-edit, +#icon-post { + background-position: -552px -5px; +} + +.icon32.icon-dashboard, +#icon-index { + background-position: -137px -5px; +} + +.icon32.icon-media, +#icon-upload { + background-position: -251px -5px; +} + +.icon32.icon-links, +#icon-link-manager, +#icon-link, +#icon-link-category { + background-position: -190px -5px; +} + +.icon32.icon-page, +#icon-edit-pages, +#icon-page { + background-position: -312px -5px; +} + +.icon32.icon-comments, +#icon-edit-comments { + background-position: -72px -5px; +} + +.icon32.icon-appearance, +#icon-themes { + background-position: -11px -5px; +} + +.icon32.icon-plugins, +#icon-plugins { + background-position: -370px -5px; +} + +.icon32.icon-users, +#icon-users, +#icon-profile, +#icon-user-edit { + background-position: -600px -5px; +} + +.icon32.icon-tools, +#icon-tools, +#icon-admin { + background-position: -432px -5px; +} + +.icon32.icon-settings, +#icon-options-general { + background-position: -492px -5px; +} + +.icon32.icon-site, +#icon-ms-admin { + background-position: -659px -5px; +} + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5) { + .icon32.icon-post, + #icon-edit, + #icon-post, + .icon32.icon-dashboard, + #icon-index, + .icon32.icon-media, + #icon-upload, + .icon32.icon-links, + #icon-link-manager, + #icon-link, + #icon-link-category, + .icon32.icon-page, + #icon-edit-pages, + #icon-page, + .icon32.icon-comments, + #icon-edit-comments, + .icon32.icon-appearance, + #icon-themes, + .icon32.icon-plugins, + #icon-plugins, + .icon32.icon-users, + #icon-users, + #icon-profile, + #icon-user-edit, + .icon32.icon-tools, + #icon-tools, + #icon-admin, + .icon32.icon-settings, + #icon-options-general, + .icon32.icon-site, + #icon-ms-admin { + background-image: url(../images/icons32-vs-2x.png?ver=20120412); + background-size: 708px 45px; + } + + .icon16.icon-dashboard, + .menu-icon-dashboard div.wp-menu-image, + .icon16.icon-post, + .menu-icon-post div.wp-menu-image, + .icon16.icon-media, + .menu-icon-media div.wp-menu-image, + .icon16.icon-links, + .menu-icon-links div.wp-menu-image, + .icon16.icon-page, + .menu-icon-page div.wp-menu-image, + .icon16.icon-comments, + .menu-icon-comments div.wp-menu-image, + .icon16.icon-appearance, + .menu-icon-appearance div.wp-menu-image, + .icon16.icon-plugins, + .menu-icon-plugins div.wp-menu-image, + .icon16.icon-users, + .menu-icon-users div.wp-menu-image, + .icon16.icon-tools, + .menu-icon-tools div.wp-menu-image, + .icon16.icon-settings, + .menu-icon-settings div.wp-menu-image, + .icon16.icon-site, + .menu-icon-site div.wp-menu-image { + background-image: url('../images/menu-2x.png?ver=20120412'); + background-size: 390px 64px; + } +} +/* end screen icons */ + +/* Diff */ +table.diff .diff-deletedline { + background-color: #fdd; +} + +table.diff .diff-deletedline del { + background-color: #f99; +} + +table.diff .diff-addedline { + background-color: #dfd; +} + +table.diff .diff-addedline ins { + background-color: #9f9; +} + +#att-info { + background-color: #E4F2FD; +} + +/* edit image */ +#sidemenu a { + background-color: #f9f9f9; + border-color: #f9f9f9; + border-bottom-color: #dfdfdf; +} + +#sidemenu a.current { + background-color: #fff; + border-color: #dfdfdf #dfdfdf #fff; + color: #D54E21; +} + +#screen-meta { + background-color: #EFF8FF; + border-color: #D1E5EE; + -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 ); + box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 ); +} + +#contextual-help-back { + background: #fff; +} + +.contextual-help-tabs a:hover { + background-color: #ceeaff; + color: #333; +} + +#contextual-help-back, +.contextual-help-tabs .active { + border-color: #D1E5EE; +} + +.contextual-help-tabs .active, +.contextual-help-tabs .active a, +.contextual-help-tabs .active a:hover { + background: #fff; + color: #000; +} + +/* screen options and help tabs */ +#screen-options-link-wrap, +#contextual-help-link-wrap { + background-color: #eff8ff; /* Fallback */ + border-right: 1px solid #D1E5EE; + border-left: 1px solid #D1E5EE; + border-bottom: 1px solid #D1E5EE; + background-image: -ms-linear-gradient(bottom, #eff8ff, #eff8ff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #def1ff, #eff8ff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #def1ff, #eff8ff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#def1ff), to(#eff8ff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #def1ff, #eff8ff); /* new Webkit */ + background-image: linear-gradient(bottom, #def1ff, #eff8ff); /* proposed W3C Markup */ +} + +#screen-meta-links a.show-settings { + color: #606060; +} + +#screen-meta-links a.show-settings:hover { + color: #000; +} + +#screen-meta-links a.show-settings { + background: transparent url(../images/arrows-vs.png) no-repeat right 4px; +} + +#screen-meta-links a.show-settings.screen-meta-active { + background: transparent url(../images/arrows-vs.png) no-repeat right -31px; +} + +/* end screen options and help tabs */ + +#replyerror { + border-color: #ddd; + background-color: #f9f9f9; +} + +/* table vim shortcuts */ +.vim-current, +.vim-current th, +.vim-current td { + background-color: #E4F2FD !important; +} + +/* Install Plugins */ +#plugin-information .fyi ul { + background-color: #eaf3fa; +} + +#plugin-information .fyi h2.mainheader { + background-color: #cee1ef; +} + +#plugin-information pre, +#plugin-information code { + background-color: #ededff; +} + +#plugin-information pre { + border: 1px solid #ccc; +} + +/* inline editor */ +.inline-edit-row fieldset input[type="text"], +.inline-edit-row fieldset textarea, +#bulk-titles { + border-color: #ddd; +} + +.inline-editor div.title { + background-color: #EAF3FA; +} + +.inline-editor ul.cat-checklist { + background-color: #fff; + border-color: #ddd; +} + +.inline-editor .categories .catshow, +.inline-editor .categories .cathide { + color: #21759b; +} + +.inline-editor .quick-edit-save { + background-color: #f1f1f1; +} + +fieldset.inline-edit-col-right .inline-edit-col { + border-color: #dfdfdf; +} + +.attention { + color: #D54E21; +} + +.meta-box-sortables .postbox:hover .handlediv { + background: transparent url(../images/arrows-vs.png) no-repeat 6px 7px; +} + +.tablenav .tablenav-pages { + color: #555; +} + +.tablenav .tablenav-pages a { + border-color: #d1e5ee; + background: #eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px; +} + +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #d54e21; +} + +.tablenav .tablenav-pages a.disabled, +.tablenav .tablenav-pages a.disabled:hover, +.tablenav .tablenav-pages a.disabled:focus { + color: #aaa; +} + +.tablenav .tablenav-pages .current { + background: #dfdfdf; + border-color: #d3d3d3; +} + +#availablethemes, +#availablethemes td { + border-color: #ddd; +} + +#current-theme img { + border-color: #999; +} + +#TB_window #TB_title a.tb-theme-preview-link, +#TB_window #TB_title a.tb-theme-preview-link:visited { + color: #999; +} + +#TB_window #TB_title a.tb-theme-preview-link:hover, +#TB_window #TB_title a.tb-theme-preview-link:focus { + color: #ccc; +} + +.misc-pub-section { + border-top-color: #fff; + border-bottom-color: #eee; +} + +#minor-publishing { + border-bottom-color: #ddd; +} + +#post-body .misc-pub-section { + border-left-color: #eee; +} + +.post-com-count span { + background-color: #bbb; +} + +.form-table .color-palette td { + border-color: #fff; +} + +.sortable-placeholder { + border-color: #bbb; + background-color: #f5f5f5; +} + +#post-body ul.category-tabs li.tabs a, +#post-body ul.add-menu-item-tabs li.tabs a, +body.press-this ul.category-tabs li.tabs a { + color: #333; +} + +.view-switch #view-switch-list { + background: transparent url(../images/list.png) no-repeat 0 0; +} + +.view-switch .current #view-switch-list { + background: transparent url(../images/list.png) no-repeat -40px 0; +} + +.view-switch #view-switch-excerpt { + background: transparent url(../images/list.png) no-repeat -20px 0; +} + +.view-switch .current #view-switch-excerpt { + background: transparent url(../images/list.png) no-repeat -60px 0; +} + +#header-logo { + background: transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center; +} + +.popular-tags, +.feature-filter { + background-color: #fff; + border-color: #DFDFDF; +} + +div.widgets-sortables, +#widgets-left .inactive { + background-color: #f7fcfe; + border-color: #d0dfe9; +} + +#available-widgets .widget-holder { + background-color: #f7fcfe; + border-color: #d0dfe9; +} + +#available-widgets .widget-description { + color: #555; +} + +.sidebar-name { + color: #464646; + background-color: #f7fcfe; /* Fallback */ + background-image: -ms-linear-gradient(top, #ECF8FE, #f7fcfe); /* IE10 */ + background-image: -moz-linear-gradient(top, #ECF8FE, #f7fcfe); /* Firefox */ + background-image: -o-linear-gradient(top, #ECF8FE, #f7fcfe); /* Opera */ + background-image: -webkit-gradient(linear, left top, left bottom, from(#ECF8FE), to(#f7fcfe)); /* old Webkit */ + background-image: -webkit-linear-gradient(top, #ECF8FE, #f7fcfe); /* new Webkit */ + background-image: linear-gradient(top, #ECF8FE, #f7fcfe); /* proposed W3C Markup */ + text-shadow: #fff 0 1px 0; + border-color: #d0dfe9; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; +} + +.sidebar-name:hover, +#removing-widget { + color: #d54e21; +} + +#removing-widget span { + color: black; +} + +.sidebar-name-arrow { + background: transparent url(../images/arrows-vs.png) no-repeat 5px 9px; +} + +.sidebar-name:hover .sidebar-name-arrow { + background: transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px; +} + +.in-widget-title { + color: #606060; +} + +.deleting .widget-title * { + color: #aaa; +} + +.imgedit-menu div { + border-color: #d5d5d5; + background-color: #f1f1f1; +} + +.imgedit-menu div:hover { + border-color: #c1c1c1; + background-color: #eaeaea; +} + +.imgedit-menu div.disabled { + border-color: #ccc; + background-color: #ddd; + filter: alpha(opacity=50); + opacity: 0.5; +} + +#dashboard_recent_comments div.undo { + border-top-color: #dfdfdf; +} + +.comment-ays, +.comment-ays th { + border-color: #ddd; +} + +.comment-ays th { + background-color: #f1f1f1; +} + +/* added from nav-menu.css */ +#menu-management .menu-edit { + border-color: #d0dfe9; +} + +#post-body { + background: #ffffff; + border-top-color: #fff; + border-bottom-color: #d0dfe9; +} + +#nav-menu-header { + border-bottom-color: #d0dfe9; +} + +#nav-menu-footer { + border-top-color: #fff; +} + +#menu-management .nav-tabs-arrow a { + color: #C1C1C1; +} + +#menu-management .nav-tabs-arrow a:hover { + color: #D54E21; +} + +#menu-management .nav-tabs-arrow a:active { + color: #464646; +} + +#menu-management .nav-tab-active { + border-color: #dfdfdf; +} + +#menu-management .nav-tab { + background: #f7fcfe; + border-color: #d0dfe9; +} + +.js .input-with-default-title { + color: #aaa; +} + +#cancel-save { + color: #ff0000; +} + +#cancel-save:hover { + background-color: #FF0000; + color: #fff; +} + +.list-container { + border-color: #dfdfdf; +} + +.menu-item-handle { + border-color: #d0dfe9; +} + +.menu li.deleting .menu-item-handle { + background-color: #f66; + text-shadow: #ccc; +} + +.item-type { /* Menu item controls */ + color: #999999; +} + +.item-controls .menu-item-delete:hover { + color: #ff0000; +} + +.nav-menus-php .item-edit { + background: transparent url(../images/arrows-vs.png) no-repeat 8px 10px; + border-bottom-color: #eff8ff; +} + +.item-edit:hover { + background: transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px; +} + +.menu-item-settings { /* Menu editing */ + border-color: #d0dfe9; +} + +.link-to-original { + color: #777; + border-color: #d0dfe9; +} + +#cancel-save:hover { + color: #fff !important; +} + +#update-menu-item { + color: #fff !important; +} + +#update-menu-item:hover, +#update-menu-item:active, +#update-menu-item:focus { + color: #eaf2fa !important; + border-color: #13455b !important; +} + +.submitbox .submitcancel { + color: #21759B; + border-bottom-color: #21759B; +} + +.submitbox .submitcancel:hover { + background: #21759B; + color: #fff; +} +/* end added from nav-menu.css */ + +#menu-management .nav-tab-active, +.menu-item-handle, +.menu-item-settings { + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; +} + +#menu-management .nav-tab-active { + background: #eff8ff; + border-bottom-color: #eff8ff; +} + +#upload-form label { + color: #777; +} +/* custom header & background pages */ + +/* full screen */ +.fullscreen-overlay { + background: #fff; +} + +.wp-fullscreen-focus #wp-fullscreen-title, +.wp-fullscreen-focus #wp-fullscreen-container { + border-color: #BED1DD; +} + +#fullscreen-topbar { + border-bottom-color: #D1E5EE; +} + +/* Begin About Pages */ + +.about-wrap h1 { + color: #333; + text-shadow: 1px 1px 1px white; +} + +.about-text { + color: #777; +} + +.wp-badge { + color: #fff; + text-shadow: 0 -1px 0 rgba(22, 57, 81, 0.3); +} + +.about-wrap h2 .nav-tab { + color: #21759B; +} +.about-wrap h2 .nav-tab:hover { + color: #d54e21; +} +.about-wrap h2 .nav-tab-active, +.about-wrap h2 .nav-tab-active:hover { + color: #333; +} +.about-wrap h2 .nav-tab-active { + text-shadow: 1px 1px 1px white; + color: #464646; +} + +.about-wrap h3 { + color: #333; + text-shadow: 1px 1px 1px white; +} + +.about-wrap .feature-section h4 { + color: #464646; +} + +.about-wrap .feature-section img { + background: #fff; + border: 1px #ccc solid; + + -moz-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 ); + -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 ); + box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 ); +} + +.about-wrap .point-releases { + border-bottom: 1px solid #dfdfdf; +} + +.about-wrap .point-releases h3 { + border-top: 1px solid #dfdfdf; +} + +.about-wrap .point-releases h3:first-child { + border: 0; +} + +.about-wrap h4.wp-people-group { + text-shadow: 1px 1px 1px white; +} + +.about-wrap li.wp-person img.gravatar { + -moz-box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 ); + box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 ); +} +.about-wrap li.wp-person .title { + color: #464646; + text-shadow: 1px 1px 1px white; +} + +.freedoms-php .about-wrap ol li { + color: #999; +} +.freedoms-php .about-wrap ol p { + color: #464646; +} + +/* End About Pages */ + + +/*------------------------------------------------------------------------------ + 2.0 - Right to Left Styles +------------------------------------------------------------------------------*/ + +.rtl .bar { + border-right-color: none; + border-left-color: #99d; +} + +.rtl .post-com-count { + background-image: url(../images/bubble_bg-rtl.gif); +} + +.rtl #screen-meta-links a.show-settings { + background-position: left 3px; +} + +.rtl #screen-meta-links a.show-settings.screen-meta-active { + background-position: left -33px; +} + +/* Menu */ +.rtl #adminmenushadow, +.rtl #adminmenuback { + background-image: url(../images/menu-shadow-rtl.png); + background-position: top left; +} + +.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, +.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { + background: transparent url(../images/arrows-dark-vs.png) no-repeat 8px 6px; +} + +.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle, +.rtl #adminmenu .wp-menu-open .wp-menu-toggle { + background: transparent url(../images/arrows-vs.png) no-repeat 8px 6px; +} + +.rtl #adminmenu .wp-submenu .wp-submenu-head { + border-right-color: none; + border-left-color: #d1e5ee; +} + +.rtl #adminmenu .wp-submenu-wrap, +.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{ + -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); +} + +/* Collapse Menu Button */ +.rtl #collapse-button div { + background-position: 0 -108px; +} + +.rtl.folded #collapse-button div { + background-position: 0 -72px; +} + +/* Auto-folding of the admin menu for RTL */ +@media only screen and (max-width: 900px) { + .rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{ + -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + } + + .rtl #collapse-button div { + background-position: 0 -72px; + } +} + +/* edit image */ +.rtl .meta-box-sortables .postbox:hover .handlediv { + background: transparent url(../images/arrows-vs.png) no-repeat 6px 7px; +} + +.rtl .tablenav .tablenav-pages a { + border-color: #d1e5ee; + background: #eee url('../images/menu-bits-rtl-vs.gif?ver=20100610') repeat-x scroll right -379px; +} + +.rtl #post-body .misc-pub-section { + border-right-color: none; + border-left-color: #d1e5ee; +} + +.rtl .sidebar-name-arrow { + background: transparent url(../images/arrows-vs.png) no-repeat 5px 9px; +} +.rtl .sidebar-name:hover .sidebar-name-arrow { + background: transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px; +} diff --git a/wp-admin/css/colors-fresh.css b/wp-admin/css/colors-fresh.css new file mode 100644 index 0000000..f7f5792 --- /dev/null +++ b/wp-admin/css/colors-fresh.css @@ -0,0 +1 @@ +html,.wp-dialog{background-color:#fff}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select{border-color:#dfdfdf;background-color:#fff;color:#333}select{color:#000}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="file"]:focus,input[type="button"]:focus,input[type="submit"]:focus,input[type="reset"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="url"]:focus,select:focus{border-color:#bbb}kbd,code{background:#eaeaea}input[readonly]{background-color:#eee}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1}.find-box{background-color:#f1f1f1}.find-box-inside{background-color:#fff}a.page-numbers:hover{border-color:#999}body,#wpbody,.form-table .pre,.ui-autocomplete li a{color:#333}body>#upload-menu{border-bottom-color:#fff}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links{border-color:#ccc}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}#postcustomstuff table{border-color:#dfdfdf;background-color:#f9f9f9}#postcustomstuff thead th{background-color:#f1f1f1}.widefat{border-color:#dfdfdf;background-color:#f9f9f9}textarea.widefat{background-color:#fff}div.dashboard-widget-error{background-color:#c43}div.dashboard-widget-notice{background-color:#cfe1ef}div.dashboard-widget-submit{border-top-color:#ccc}ul.category-tabs li{border-color:transparent}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff}input.disabled,textarea.disabled{background-color:#ccc}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle{background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec)}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#dfdfdf;text-shadow:#fff 0 1px 0;-moz-box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0}.description,.form-wrap p{color:#666}strong .post-com-count span{background-color:#21759b}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.wrap h2{color:#464646}.wrap .add-new-h2{background:#f1f1f1}.subtitle{color:#777}.ac_over{background-color:#f0f0b8}.ac_results{background-color:#fff;border-color:#808080}.ac_results li{color:#101010}.alternate,.alt{background-color:#fcfcfc}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd}.bar{background-color:#e8e8e8;border-right-color:#99d}#media-upload,#media-upload .media-item .slidetoggle{background:#fff}#media-upload .slidetoggle{border-top-color:#dfdfdf}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00}div.error a{color:#c00}.form-invalid{background-color:#ffebe8!important}.form-invalid input,.form-invalid select{border-color:#c00!important}.submit,#commentsdiv #add-new-comment{border-color:#dfdfdf}.highlight{background-color:#e4f2fd;color:#000}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666}.media-upload-form label.form-help,td.help{color:#9a9a9a}.ui-autocomplete{background-color:#efefef;border-color:#bbb}.ui-autocomplete li a.ui-state-hover{background-color:#ddd}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff}.post-com-count span{background-color:#bbb;color:#fff}.post-com-count:hover span{background-color:#d54e21}.quicktags,.search{background-color:#ccc;color:#000}.side-info h5{border-bottom-color:#dadada}.side-info ul{color:#666}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759b url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9fd0d5!important;background:#298cba!important}a:hover,a:active,a:focus{color:#d54e21}#adminmenu a:hover,#adminmenu li.menu-top>a:focus,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333}#rightnow .rbutton{background-color:#ebebeb;color:#264761}.submitbox .submit{background-color:#464646;color:#ccc}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55}.update-message{color:#000}a.page-numbers{border-bottom-color:#b8d3e2}.commentlist li{border-bottom-color:#ccc}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#dfdfdf}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0}.widefat td{color:#555}.widefat p,.widefat ol,.widefat ul{color:#333}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333}h3.dashboard-widget-title small a{color:#d7d7d7}h3.dashboard-widget-title small a:hover{color:#fff}a,#adminmenu a,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}#plugin-information .action-button{background-color:#d54e21;color:#fff}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf}#currenttheme img{border-color:#666}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9}input.readonly,textarea.readonly{background-color:#ddd}#editable-post-name{background-color:#fffbcc}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777}.login #nav a,.login #backtoblog a{color:#21759b!important}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important}#footer{color:#777;border-color:#dfdfdf}.imgedit-group,#media-items .media-item,.media-item .describe{border-color:#dfdfdf}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf}.plugins .active,.plugins .active th,.plugins .active td{color:#000}.plugins .inactive a{color:#579}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4}#the-comment-list .unapproved{background-color:#ffffe0}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b}.welcome-panel{border-color:#dfdfdf}.welcome-panel p{color:#777}.welcome-panel-column p{color:#464646}.welcome-panel h3{text-shadow:1px 1px 1px white}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-webkit-border-radius:3px;border-radius:3px}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background-color:#f5f5f5;background-image:-ms-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-moz-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-o-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:linear-gradient(top,#f9f9f9,#f5f5f5)}.postbox h3{color:#464646}.widget .widget-top{color:#222}.sidebar-name:hover h3,.postbox h3:hover{color:#000}.curtime #timestamp{background-image:url(../images/date-button.gif)}#quicktags #ed_link{color:#00f}#rightnow .youhave{background-color:#f0f6fb}#rightnow a{color:#448abd}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555}#screen-meta{background-color:#f1f1f1;border-color:#ccc;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.05);box-shadow:0 1px 3px rgba(0,0,0,0.05)}#contextual-help-back{background:#fff}.contextual-help-tabs a:hover{color:#333}#contextual-help-back,.contextual-help-tabs .active{border-color:#ccc}.contextual-help-tabs .active,.contextual-help-tabs .active a,.contextual-help-tabs .active a:hover{background:#fff;color:#333}#screen-options-link-wrap,#contextual-help-link-wrap{background-color:#e3e3e3;border-right:1px solid #ccc;border-left:1px solid #ccc;border-bottom:1px solid #ccc;background-image:-ms-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-moz-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-o-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#f1f1f1));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:linear-gradient(bottom,#dfdfdf,#f1f1f1)}#screen-meta-links a.show-settings{color:#777}#screen-meta-links a.show-settings:hover{color:#333}#screen-meta-links a.show-settings{background:transparent url(../images/arrows.png) no-repeat right 4px}#screen-meta-links a.show-settings.screen-meta-active{background:transparent url(../images/arrows.png) no-repeat right -31px}.login #backtoblog a{color:#464646}#wphead{border-bottom:#dfdfdf 1px solid}#wphead h1 a{color:#464646}#footer a:link,#footer a:visited{text-decoration:none}#footer a:hover{text-decoration:underline}.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00}#pass-strength-result{background-color:#eee;border-color:#ddd!important}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}#titlediv #title{border-color:#ccc}#post-status-info{border-color:#dfdfdf #ccc #ccc;background-color:#eaeaea}.editwidget .widget-inside{border-color:#dfdfdf}#titlediv #title{background-color:#fff}#tTips p#tTips_inside{background-color:#ddd;color:#333}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd}#adminmenuback,#adminmenuwrap{background-color:#ececec;border-color:#ccc}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y}#adminmenu li.wp-menu-separator{background:#dfdfdf;border-color:#cfcfcf}#adminmenu div.separator{border-color:#e1e1e1}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark.png) no-repeat -1px 6px}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows.png) no-repeat -2px 6px}#adminmenu a.menu-top,.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf}#adminmenu li.wp-menu-open{border-color:#dfdfdf}#adminmenu li.menu-top:hover>a,#adminmenu li.menu-top.focused>a,#adminmenu li.menu-top>a:focus{background-color:#e4e4e4;text-shadow:0 1px 0 rgba(255,255,255,0.4)}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#777;background-image:-ms-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080)}#adminmenu .wp-menu-arrow div{background-color:#777;background-image:-ms-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(right bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,right bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(right bottom,#6d6d6d,#808080);background-image:linear-gradient(right bottom,#6d6d6d,#808080)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf;background:#e4e4e4}#adminmenu li.wp-not-current-submenu .wp-menu-arrow div{background:#e4e4e4;border-color:#ccc}.folded #adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#808080;border-bottom-color:#6d6d6d}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu a:focus{background-color:#eaf2fa;color:#333}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333}#adminmenu .wp-submenu ul{background-color:#fff}#adminmenu .wp-submenu-wrap,#adminmenu .wp-submenu ul{border-color:#dfdfdf}#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:#dfdfdf;background-color:#ececec}#adminmenu div.wp-submenu{background-color:transparent}#collapse-menu{color:#aaa}#collapse-menu:hover{color:#999}#collapse-button{border-color:#ccc;background-color:#f4f4f4;background-image:-ms-linear-gradient(bottom,#dfdfdf,#fff);background-image:-moz-linear-gradient(bottom,#dfdfdf,#fff);background-image:-o-linear-gradient(bottom,#dfdfdf,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#fff));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#fff);background-image:linear-gradient(bottom,#dfdfdf,#fff)}#collapse-menu:hover #collapse-button{border-color:#aaa}#collapse-button div{background:transparent url(../images/arrows.png) no-repeat 0 -72px}.folded #collapse-button div{background-position:0 -108px}@media only screen and (max-width:900px){#adminmenu li.menu-top{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{background-color:#777;background-image:-ms-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080)}#adminmenu li.menu-top li:hover a{background-image:none}#adminmenu li.wp-has-current-submenu,#adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4)}#collapse-button div{background-position:0 -108px}}.icon16,.icon32,div.wp-menu-image{background-color:transparent;background-repeat:no-repeat}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu.png?ver=20120201')}.icon16.icon-dashboard,#adminmenu .menu-icon-dashboard div.wp-menu-image{background-position:-59px -33px}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background-position:-59px -1px}.icon16.icon-post,#adminmenu .menu-icon-post div.wp-menu-image{background-position:-269px -33px}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-post.current div.wp-menu-image{background-position:-269px -1px}.icon16.icon-media,#adminmenu .menu-icon-media div.wp-menu-image{background-position:-119px -33px}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-media.current div.wp-menu-image{background-position:-119px -1px}.icon16.icon-links,#adminmenu .menu-icon-links div.wp-menu-image{background-position:-89px -33px}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-links.current div.wp-menu-image{background-position:-89px -1px}.icon16.icon-page,#adminmenu .menu-icon-page div.wp-menu-image{background-position:-149px -33px}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-page.current div.wp-menu-image{background-position:-149px -1px}.icon16.icon-comments,#adminmenu .menu-icon-comments div.wp-menu-image{background-position:-29px -33px}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background-position:-29px -1px}.icon16.icon-appearance,#adminmenu .menu-icon-appearance div.wp-menu-image{background-position:1px -33px}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-appearance.current div.wp-menu-image{background-position:1px -1px}.icon16.icon-plugins,#adminmenu .menu-icon-plugins div.wp-menu-image{background-position:-179px -33px}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-plugins.current div.wp-menu-image{background-position:-179px -1px}.icon16.icon-users,#adminmenu .menu-icon-users div.wp-menu-image{background-position:-300px -33px}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background-position:-300px -1px}.icon16.icon-tools,#adminmenu .menu-icon-tools div.wp-menu-image{background-position:-209px -33px}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background-position:-209px -1px}.icon16.icon-settings,#adminmenu .menu-icon-settings div.wp-menu-image{background-position:-239px -33px}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-settings.current div.wp-menu-image{background-position:-239px -1px}.icon16.icon-site,#adminmenu .menu-icon-site div.wp-menu-image{background-position:-359px -33px}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-site.current div.wp-menu-image{background-position:-359px -1px}.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32.png?ver=20111206)}.icon32.icon-post,#icon-edit,#icon-post{background-position:-552px -5px}.icon32.icon-dashboard,#icon-index{background-position:-137px -5px}.icon32.icon-media,#icon-upload{background-position:-251px -5px}.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category{background-position:-190px -5px}.icon32.icon-page,#icon-edit-pages,#icon-page{background-position:-312px -5px}.icon32.icon-comments,#icon-edit-comments{background-position:-72px -5px}.icon32.icon-appearance,#icon-themes{background-position:-11px -5px}.icon32.icon-plugins,#icon-plugins{background-position:-370px -5px}.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit{background-position:-600px -5px}.icon32.icon-tools,#icon-tools,#icon-admin{background-position:-432px -5px}.icon32.icon-settings,#icon-options-general{background-position:-492px -5px}.icon32.icon-site,#icon-ms-admin{background-position:-659px -5px}@media only screen and (-webkit-min-device-pixel-ratio:1.5){.icon32.icon-post,#icon-edit,#icon-post,.icon32.icon-dashboard,#icon-index,.icon32.icon-media,#icon-upload,.icon32.icon-links,#icon-link-manager,#icon-link,#icon-link-category,.icon32.icon-page,#icon-edit-pages,#icon-page,.icon32.icon-comments,#icon-edit-comments,.icon32.icon-appearance,#icon-themes,.icon32.icon-plugins,#icon-plugins,.icon32.icon-users,#icon-users,#icon-profile,#icon-user-edit,.icon32.icon-tools,#icon-tools,#icon-admin,.icon32.icon-settings,#icon-options-general,.icon32.icon-site,#icon-ms-admin{background-image:url(../images/icons32-2x.png?ver=20120412);background-size:708px 45px}.icon16.icon-dashboard,.menu-icon-dashboard div.wp-menu-image,.icon16.icon-post,.menu-icon-post div.wp-menu-image,.icon16.icon-media,.menu-icon-media div.wp-menu-image,.icon16.icon-links,.menu-icon-links div.wp-menu-image,.icon16.icon-page,.menu-icon-page div.wp-menu-image,.icon16.icon-comments,.menu-icon-comments div.wp-menu-image,.icon16.icon-appearance,.menu-icon-appearance div.wp-menu-image,.icon16.icon-plugins,.menu-icon-plugins div.wp-menu-image,.icon16.icon-users,.menu-icon-users div.wp-menu-image,.icon16.icon-tools,.menu-icon-tools div.wp-menu-image,.icon16.icon-settings,.menu-icon-settings div.wp-menu-image,.icon16.icon-site,.menu-icon-site div.wp-menu-image{background-image:url('../images/menu-2x.png?ver=20120412');background-size:390px 64px}}table.diff .diff-deletedline{background-color:#fdd}table.diff .diff-deletedline del{background-color:#f99}table.diff .diff-addedline{background-color:#dfd}table.diff .diff-addedline ins{background-color:#9f9}#att-info{background-color:#e4f2fd}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#d54e21}#replyerror{border-color:#ddd;background-color:#f9f9f9}.vim-current,.vim-current th,.vim-current td{background-color:#e4f2fd!important}#plugin-information .fyi ul{background-color:#eaf3fa}#plugin-information .fyi h2.mainheader{background-color:#cee1ef}#plugin-information pre,#plugin-information code{background-color:#ededff}#plugin-information pre{border:1px solid #ccc}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles{border-color:#ddd}.inline-editor div.title{background-color:#eaf3fa}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b}.inline-editor .quick-edit-save{background-color:#f1f1f1}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf}.attention{color:#d54e21}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.tablenav .tablenav-pages{color:#555}.tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3}#availablethemes,#availablethemes td{border-color:#ddd}#current-theme img{border-color:#999}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc}.misc-pub-section{border-top-color:#fff;border-bottom-color:#dfdfdf}#minor-publishing{border-bottom-color:#dfdfdf}#post-body .misc-pub-section{border-left-color:#eee}.post-com-count span{background-color:#bbb}.form-table .color-palette td{border-color:#fff}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0}#header-logo{background:transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center}.popular-tags,.feature-filter{background-color:#fff;border-color:#dfdfdf}div.widgets-sortables,#widgets-left .inactive,#available-widgets .widget-holder{background-color:#fcfcfc;border-color:#dfdfdf}#available-widgets .widget-description{color:#555}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.sidebar-name:hover,#removing-widget{color:#d54e21}#removing-widget span{color:black}.sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px}.in-widget-title{color:#606060}.deleting .widget-title *{color:#aaa}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf}.comment-ays,.comment-ays th{border-color:#ddd}.comment-ays th{background-color:#f1f1f1}#menu-management .menu-edit{border-color:#dfdfdf}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#dfdfdf}#nav-menu-header{border-bottom-color:#dfdfdf}#nav-menu-footer{border-top-color:#fff}#menu-management .nav-tabs-arrow a{color:#c1c1c1}#menu-management .nav-tabs-arrow a:hover{color:#d54e21}#menu-management .nav-tabs-arrow a:active{color:#464646}#menu-management .nav-tab-active{border-color:#dfdfdf}#menu-management .nav-tab{background:#fbfbfb;border-color:#dfdfdf}.js .input-with-default-title{color:#aaa}#cancel-save{color:#f00}#cancel-save:hover{background-color:#f00;color:#fff}.list-container,.menu-item-handle{border-color:#dfdfdf}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc}.item-type{color:#999}.item-controls .menu-item-delete:hover{color:#f00}.nav-menus-php .item-edit{background:transparent url(../images/arrows.png) no-repeat 8px 10px;border-bottom-color:#eee}.item-edit:hover{background:transparent url(../images/arrows-dark.png) no-repeat 8px 10px}.menu-item-settings{border-color:#dfdfdf}.link-to-original{color:#777;border-color:#dfdfdf}#cancel-save:hover{color:#fff!important}#update-menu-item{color:#fff!important}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important}.submitbox .submitcancel{color:#21759b;border-bottom-color:#21759b}.submitbox .submitcancel:hover{background:#21759b;color:#fff}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}#menu-management .nav-tab-active{background:#f9f9f9;border-bottom-color:#f9f9f9}#upload-form label{color:#777}.about-wrap h1{color:#333;text-shadow:1px 1px 1px white}.about-text{color:#777}.wp-badge{color:#fff;text-shadow:0 -1px 0 rgba(22,57,81,0.3)}.about-wrap h2 .nav-tab{color:#21759b}.about-wrap h2 .nav-tab:hover{color:#d54e21}.about-wrap h2 .nav-tab-active,.about-wrap h2 .nav-tab-active:hover{color:#333}.about-wrap h2 .nav-tab-active{text-shadow:1px 1px 1px white;color:#464646}.about-wrap h3{color:#333;text-shadow:1px 1px 1px white}.about-wrap .feature-section h4{color:#464646}.about-wrap .feature-section img{background:#fff;border:1px #ccc solid;-moz-box-shadow:0 1px 3px rgba(0,0,0,0.3);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.3);box-shadow:0 1px 3px rgba(0,0,0,0.3)}.about-wrap h4.wp-people-group{text-shadow:1px 1px 1px white}.about-wrap .point-releases{border-bottom:1px solid #dfdfdf}.about-wrap .point-releases h3{border-top:1px solid #dfdfdf}.about-wrap .point-releases h3:first-child{border:0}.about-wrap li.wp-person img.gravatar{-moz-box-shadow:0 0 4px rgba(0,0,0,0.4);-webkit-box-shadow:0 0 4px rgba(0,0,0,0.4);box-shadow:0 0 4px rgba(0,0,0,0.4)}.about-wrap li.wp-person .title{color:#464646;text-shadow:1px 1px 1px white}.freedoms-php .about-wrap ol li{color:#999}.freedoms-php .about-wrap ol p{color:#464646}.rtl .bar{border-right-color:none;border-left-color:#99d}.rtl .post-com-count{background-image:url(../images/bubble_bg-rtl.gif)}.rtl #screen-meta-links a.show-settings{background-position:left 3px}.rtl #screen-meta-links a.show-settings.screen-meta-active{background-position:left -33px}.rtl #adminmenushadow,.rtl #adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left}.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark.png) no-repeat 8px 6px}.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle,.rtl #adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows.png) no-repeat 8px 6px}.rtl #adminmenu .wp-submenu .wp-submenu-head{border-right-color:none;border-left-color:#dfdfdf}.rtl #adminmenu .wp-submenu-wrap,.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -108px}.rtl.folded #collapse-button div{background-position:0 -72px}@media only screen and (max-width:900px){.rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4)}.rtl #collapse-button div{background-position:0 -72px}}.rtl .meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.rtl .tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits-rtl.gif?ver=20100610') repeat-x scroll right -379px}.rtl #post-body .misc-pub-section{border-right-color:none;border-left-color:#eee}.rtl .sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px}.rtl .sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px} \ No newline at end of file diff --git a/wp-admin/css/colors-fresh.dev.css b/wp-admin/css/colors-fresh.dev.css new file mode 100644 index 0000000..8049099 --- /dev/null +++ b/wp-admin/css/colors-fresh.dev.css @@ -0,0 +1,2086 @@ +/*------------------------------------------------------------------------------ + + +Howdy! This is the CSS file that controls the +Gray (fresh) color style on the WordPress Dashboard. + +This file contains both LTR and RTL styles. + + +TABLE OF CONTENTS: +------------------ + 1.0 - Left to Right Styles + 2.0 - Right to Left Styles + + +------------------------------------------------------------------------------*/ + + +/*------------------------------------------------------------------------------ + 1.0 - Left to Right Styles +------------------------------------------------------------------------------*/ + +html, +.wp-dialog { + background-color: #fff; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="file"], +input[type="button"], +input[type="submit"], +input[type="reset"], +input[type="email"], +input[type="number"], +input[type="search"], +input[type="tel"], +input[type="url"], +select { + border-color: #dfdfdf; + background-color: #fff; + color: #333; +} + +select { + color: #000; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="file"]:focus, +input[type="button"]:focus, +input[type="submit"]:focus, +input[type="reset"]:focus, +input[type="email"]:focus, +input[type="number"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="url"]:focus, +select:focus { + border-color: #bbb; +} + +kbd, +code { + background: #eaeaea; +} + +input[readonly] { + background-color: #eee; +} + +.find-box-search { + border-color: #dfdfdf; + background-color: #f1f1f1; +} + +.find-box { + background-color: #f1f1f1; +} + +.find-box-inside { + background-color: #fff; +} + +a.page-numbers:hover { + border-color: #999; +} + +body, +#wpbody, +.form-table .pre, +.ui-autocomplete li a { + color: #333; +} + +body > #upload-menu { + border-bottom-color: #fff; +} + +#postcustomstuff table, +#your-profile fieldset, +#rightnow, +div.dashboard-widget, +#dashboard-widgets p.dashboard-widget-links { + border-color: #ccc; +} + +#poststuff .inside label.spam, +#poststuff .inside label.deleted { + color: red; +} + +#poststuff .inside label.waiting { + color: orange; +} + +#poststuff .inside label.approved { + color: green; +} + +#postcustomstuff table { + border-color: #dfdfdf; + background-color: #F9F9F9; +} + +#postcustomstuff thead th { + background-color: #F1F1F1; +} + +.widefat { + border-color: #dfdfdf; + background-color: #f9f9f9; +} +textarea.widefat { + background-color: #fff; +} + +div.dashboard-widget-error { + background-color: #c43; +} + +div.dashboard-widget-notice { + background-color: #cfe1ef; +} + +div.dashboard-widget-submit { + border-top-color: #ccc; +} + +ul.category-tabs li { + border-color: transparent; +} + +div.tabs-panel, +.wp-tab-panel, +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + border-color: #dfdfdf; + background-color: #fff; +} + +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + background-color: #fff; +} + +input.disabled, +textarea.disabled { + background-color: #ccc; +} +/* #upload-menu li a.upload-tab-link, */ +#plugin-information .action-button a, +#plugin-information .action-button a:hover, +#plugin-information .action-button a:visited { + color: #fff; +} + +.widget .widget-top, +.postbox h3, +.stuffbox h3, +.widefat thead tr th, +.widefat tfoot tr th, +h3.dashboard-widget-title, +h3.dashboard-widget-title span, +h3.dashboard-widget-title small, +.find-box-head, +.sidebar-name, +#nav-menu-header, +#nav-menu-footer, +.menu-item-handle { + background-color: #f1f1f1; /* Fallback */ + background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); /* IE10 */ + background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); /* Firefox */ + background-image: -o-linear-gradient(top, #f9f9f9, #ececec); /* Opera */ + background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); /* old Webkit */ + background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); /* new Webkit */ + background-image: linear-gradient(top, #f9f9f9, #ececec); /* proposed W3C Markup */ +} + +.widget .widget-top, +.postbox h3, +.stuffbox h3 { + border-bottom-color: #dfdfdf; + text-shadow: #fff 0 1px 0; + -moz-box-shadow: 0 1px 0 #fff; + -webkit-box-shadow: 0 1px 0 #fff; + box-shadow: 0 1px 0 #fff; +} + +.form-table th, +.form-wrap label { + color: #222; + text-shadow: #fff 0 1px 0; +} + +.description, +.form-wrap p { + color: #666; +} + +strong .post-com-count span { + background-color: #21759b; +} + +.sorthelper { + background-color: #ccf3fa; +} + +.ac_match, +.subsubsub a.current { + color: #000; +} + +.wrap h2 { + color: #464646; +} + +.wrap .add-new-h2 { + background: #f1f1f1; +} + +.subtitle { + color: #777; +} + +.ac_over { + background-color: #f0f0b8; +} + +.ac_results { + background-color: #fff; + border-color: #808080; +} + +.ac_results li { + color: #101010; +} + +.alternate, +.alt { + background-color: #fcfcfc; +} + +.available-theme a.screenshot { + background-color: #f1f1f1; + border-color: #ddd; +} + +.bar { + background-color: #e8e8e8; + border-right-color: #99d; +} + +#media-upload, +#media-upload .media-item .slidetoggle { + background: #fff; +} + +#media-upload .slidetoggle { + border-top-color: #dfdfdf; +} + +div.error, +.login #login_error { + background-color: #ffebe8; + border-color: #c00; +} + +div.error a { + color: #c00; +} + +.form-invalid { + background-color: #ffebe8 !important; +} + +.form-invalid input, +.form-invalid select { + border-color: #c00 !important; +} + +.submit, +#commentsdiv #add-new-comment { + border-color: #dfdfdf; +} + +.highlight { + background-color: #e4f2fd; + color: #000; +} + +.howto, +.nonessential, +#edit-slug-box, +.form-input-tip, +.subsubsub { + color: #666; +} + +.media-upload-form label.form-help, +td.help { + color: #9a9a9a; +} + +.ui-autocomplete { + background-color: #efefef; + border-color: #bbb; +} + +.ui-autocomplete li a.ui-state-hover { + background-color: #ddd; +} + +.post-com-count { + background-image: url(../images/bubble_bg.gif); + color: #fff; +} + +.post-com-count span { + background-color: #bbb; + color: #fff; +} + +.post-com-count:hover span { + background-color: #d54e21; +} + +.quicktags, .search { + background-color: #ccc; + color: #000; +} + +.side-info h5 { + border-bottom-color: #dadada; +} + +.side-info ul { + color: #666; +} + +.button, +.button-secondary, +.submit input, +input[type=button], +input[type=submit] { + border-color: #bbb; + color: #464646; +} + +.button:hover, +.button-secondary:hover, +.submit input:hover, +input[type=button]:hover, +input[type=submit]:hover { + color: #000; + border-color: #666; +} + +.button, +.submit input, +.button-secondary { + background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top; + text-shadow: rgba(255,255,255,1) 0 1px 0; +} + +.button:active, +.submit input:active, +.button-secondary:active { + background: #eee url(../images/white-grad-active.png) repeat-x scroll left top; +} + +input.button-primary, +button.button-primary, +a.button-primary { + border-color: #298cba; + font-weight: bold; + color: #fff; + background: #21759B url(../images/button-grad.png) repeat-x scroll left top; + text-shadow: rgba(0,0,0,0.3) 0 -1px 0; +} + +input.button-primary:active, +button.button-primary:active, +a.button-primary:active { + background: #21759b url(../images/button-grad-active.png) repeat-x scroll left top; + color: #eaf2fa; +} + +input.button-primary:hover, +button.button-primary:hover, +a.button-primary:hover, +a.button-primary:focus, +a.button-primary:active { + border-color: #13455b; + color: #eaf2fa; +} + +.button-disabled, +.button[disabled], +.button:disabled, +.button-secondary[disabled], +.button-secondary:disabled, +a.button.disabled { + color: #aaa !important; + border-color: #ddd !important; +} + +.button-primary-disabled, +.button-primary[disabled], +.button-primary:disabled { + color: #9FD0D5 !important; + background: #298CBA !important; +} + +a:hover, +a:active, +a:focus { + color: #d54e21; +} + +#adminmenu a:hover, +#adminmenu li.menu-top > a:focus, +#adminmenu ul.wp-submenu a:hover, +#the-comment-list .comment a:hover, +#rightnow a:hover, +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover, +.ui-tabs-nav a:hover, +.plugins .inactive a:hover, +#all-plugins-table .plugins .inactive a:hover, +#search-plugins-table .plugins .inactive a:hover { + color: #d54e21; +} + +#the-comment-list .comment-item, +#dashboard-widgets #dashboard_quick_press form p.submit { + border-color: #dfdfdf; +} + +#side-sortables .category-tabs .tabs a, +#side-sortables .add-menu-item-tabs .tabs a, +.wp-tab-bar .wp-tab-active a { + color: #333; +} + +#rightnow .rbutton { + background-color: #ebebeb; + color: #264761; +} + +.submitbox .submit { + background-color: #464646; + color: #ccc; +} + +.plugins a.delete:hover, +#all-plugins-table .plugins a.delete:hover, +#search-plugins-table .plugins a.delete:hover, +.submitbox .submitdelete { + color: #f00; + border-bottom-color: #f00; +} + +.submitbox .submitdelete:hover, +#media-items a.delete:hover { + color: #fff; + background-color: #f00; + border-bottom-color: #f00; +} + +#normal-sortables .submitbox .submitdelete:hover { + color: #000; + background-color: #f00; + border-bottom-color: #f00; +} + +.tablenav .dots { + border-color: transparent; +} + +.tablenav .next, +.tablenav .prev { + border-color: transparent; + color: #21759b; +} + +.tablenav .next:hover, +.tablenav .prev:hover { + border-color: transparent; + color: #d54e21; +} + +div.updated, +.login .message { + background-color: #ffffe0; + border-color: #e6db55; +} + +.update-message { + color: #000; +} + +a.page-numbers { + border-bottom-color: #B8D3E2; +} + +.commentlist li { + border-bottom-color: #ccc; +} + +.widefat td, +.widefat th { + border-top-color: #fff; + border-bottom-color: #dfdfdf; +} + +.widefat th { + text-shadow: rgba(255,255,255,0.8) 0 1px 0; +} + +.widefat td { + color: #555; +} +.widefat p, +.widefat ol, +.widefat ul { + color: #333; +} + +.widefat thead tr th, +.widefat tfoot tr th, +h3.dashboard-widget-title, +h3.dashboard-widget-title span, +h3.dashboard-widget-title small, +.find-box-head { + color: #333; +} + +th.sortable a:hover, th.sortable a:active, th.sortable a:focus { + color: #333; +} + +h3.dashboard-widget-title small a { + color: #d7d7d7; +} + +h3.dashboard-widget-title small a:hover { + color: #fff; +} + +a, +#adminmenu a, +#the-comment-list p.comment-author strong a, +#media-upload a.del-link, +#media-items a.delete, +.plugins a.delete, +.ui-tabs-nav a { + color: #21759b; +} + +#adminmenu .awaiting-mod, +#adminmenu .update-plugins, +#sidemenu a .update-plugins, +#rightnow .reallynow { + background-color: #464646; + color: #fff; + -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + box-shadow: rgba(255,255,255,0.5) 0 1px 0; +} +#plugin-information .action-button { + background-color: #d54e21; + color: #fff; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins{ + background-color: #464646; + color: #fff; + -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + box-shadow: rgba(255,255,255,0.5) 0 1px 0; +} + +div#media-upload-header, +div#plugin-information-header { + background-color: #f9f9f9; + border-bottom-color: #dfdfdf; +} + +#currenttheme img { + border-color: #666; +} + +#dashboard_secondary div.dashboard-widget-content ul li a { + background-color: #f9f9f9; +} + +input.readonly, textarea.readonly { + background-color: #ddd; +} + +#editable-post-name { + background-color: #fffbcc; +} + +#edit-slug-box strong, +.tablenav .displaying-num, +#submitted-on, +.submitted-on { + color: #777; +} + +.login #nav a, +.login #backtoblog a { + color: #21759b !important; +} + +.login #nav a:hover, +.login #backtoblog a:hover { + color: #d54e21 !important; +} + +#footer { + color: #777; + border-color: #dfdfdf; +} + +.imgedit-group, +#media-items .media-item, +.media-item .describe { + border-color: #dfdfdf; +} + +.checkbox, +.side-info, +.plugins tr, +#your-profile #rich_editing { + background-color: #fcfcfc; +} + +.plugins .inactive, +.plugins .inactive th, +.plugins .inactive td, +tr.inactive + tr.plugin-update-tr .plugin-update { + background-color: #f4f4f4; +} + +.plugin-update-tr .update-message { + background-color: #fffbe4; + border-color: #dfdfdf; +} + +.plugins .active, +.plugins .active th, +.plugins .active td { + color: #000; +} + +.plugins .inactive a { + color: #557799; +} + +#the-comment-list tr.undo, +#the-comment-list div.undo { + background-color: #f4f4f4; +} + +#the-comment-list .unapproved { + background-color: #ffffe0; +} + +#the-comment-list .approve a { + color: #006505; +} + +#the-comment-list .unapprove a { + color: #d98500; +} + +table.widefat span.delete a, +table.widefat span.trash a, +table.widefat span.spam a, +#dashboard_recent_comments .delete a, +#dashboard_recent_comments .trash a, +#dashboard_recent_comments .spam a { + color: #bc0b0b; +} + +.welcome-panel { + border-color: #dfdfdf; +} +.welcome-panel p { + color: #777; +} +.welcome-panel-column p { + color: #464646; +} +.welcome-panel h3 { + text-shadow: 1px 1px 1px white; +} + +.widget, +#widget-list .widget-top, +.postbox, +#titlediv, +#poststuff .postarea, +.stuffbox { + border-color: #dfdfdf; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.widget, +#widget-list .widget-top, +.postbox, +.menu-item-settings { + background-color: #f5f5f5; /* Fallback */ + background-image: -ms-linear-gradient(top, #f9f9f9, #f5f5f5); /* IE10 */ + background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5); /* Firefox */ + background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5); /* Opera */ + background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#f5f5f5)); /* old Webkit */ + background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5); /* new Webkit */ + background-image: linear-gradient(top, #f9f9f9, #f5f5f5); /* proposed W3C Markup */ +} + +.postbox h3 { + color: #464646; +} + +.widget .widget-top { + color: #222; +} + +.sidebar-name:hover h3, +.postbox h3:hover { + color: #000; +} + +.curtime #timestamp { + background-image: url(../images/date-button.gif); +} + +#quicktags #ed_link { + color: #00f; +} + +#rightnow .youhave { + background-color: #f0f6fb; +} + +#rightnow a { + color: #448abd; +} + +.tagchecklist span a, +#bulk-titles div a { + background: url(../images/xit.gif) no-repeat; +} + +.tagchecklist span a:hover, +#bulk-titles div a:hover { + background: url(../images/xit.gif) no-repeat -10px 0; +} + +#update-nag, .update-nag { + background-color: #FFFBCC; + border-color: #E6DB55; + color: #555; +} + +#screen-meta { + background-color: #f1f1f1; + border-color: #ccc; + -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 ); + box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.05 ); +} + +#contextual-help-back { + background: #fff; +} + +.contextual-help-tabs a:hover { + color: #333; +} + +#contextual-help-back, +.contextual-help-tabs .active { + border-color: #ccc; +} + +.contextual-help-tabs .active, +.contextual-help-tabs .active a, +.contextual-help-tabs .active a:hover { + background: #fff; + color: #333; +} + +/* screen options and help tabs */ +#screen-options-link-wrap, +#contextual-help-link-wrap { + background-color: #e3e3e3; /* Fallback */ + border-right: 1px solid #ccc; + border-left: 1px solid #ccc; + border-bottom: 1px solid #ccc; + background-image: -ms-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* Firefox */ + background-image: -o-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#dfdfdf), to(#f1f1f1)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* new Webkit */ + background-image: linear-gradient(bottom, #dfdfdf, #f1f1f1); /* proposed W3C Markup */ +} + +#screen-meta-links a.show-settings { + color: #777; +} + +#screen-meta-links a.show-settings:hover { + color: #333; +} + +#screen-meta-links a.show-settings { + background: transparent url(../images/arrows.png) no-repeat right 4px; +} + +#screen-meta-links a.show-settings.screen-meta-active { + background: transparent url(../images/arrows.png) no-repeat right -31px; +} + +/* end screen options and help tabs */ + +.login #backtoblog a { + color: #464646; +} + +#wphead { + border-bottom:#dfdfdf 1px solid; +} + +#wphead h1 a { + color: #464646; +} + +#footer a:link, +#footer a:visited { + text-decoration: none; +} + +#footer a:hover { + text-decoration: underline; +} + +.file-error, +abbr.required, +.widget-control-remove:hover, +table.widefat .delete a:hover, +table.widefat .trash a:hover, +table.widefat .spam a:hover, +#dashboard_recent_comments .delete a:hover, +#dashboard_recent_comments .trash a:hover +#dashboard_recent_comments .spam a:hover { + color: #f00; +} + +#pass-strength-result { + background-color: #eee; + border-color: #ddd !important; +} + +#pass-strength-result.bad { + background-color: #ffb78c; + border-color: #ff853c !important; +} + +#pass-strength-result.good { + background-color: #ffec8b; + border-color: #fc0 !important; +} + +#pass-strength-result.short { + background-color: #ffa0a0; + border-color: #f04040 !important; +} + +#pass-strength-result.strong { + background-color: #c3ff88; + border-color: #8dff1c !important; +} + +#titlediv #title { + border-color: #ccc; +} + +#post-status-info { + border-color: #dfdfdf #ccc #ccc; + background-color: #eaeaea; +} + +.editwidget .widget-inside { + border-color: #dfdfdf; +} + +#titlediv #title { + background-color: #fff; +} + +#tTips p#tTips_inside { + background-color: #ddd; + color: #333; +} + +#timestampdiv input, +#namediv input, +#poststuff .inside .the-tagcloud { + border-color: #ddd; +} + +/* menu */ +#adminmenuback, +#adminmenuwrap { + background-color: #ececec; + border-color: #ccc; +} + +#adminmenushadow, +#adminmenuback { + background-image: url(../images/menu-shadow.png); + background-position: top right; + background-repeat: repeat-y; +} + +#adminmenu li.wp-menu-separator { + background: #dfdfdf; + border-color: #cfcfcf; +} + +#adminmenu div.separator { + border-color: #e1e1e1; +} + +#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, +#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { + background: transparent url(../images/arrows-dark.png) no-repeat -1px 6px; +} + +#adminmenu .wp-has-submenu:hover .wp-menu-toggle, +#adminmenu .wp-menu-open .wp-menu-toggle { + background: transparent url(../images/arrows.png) no-repeat -2px 6px; +} + +#adminmenu a.menu-top, +.folded #adminmenu li.menu-top, +#adminmenu .wp-submenu .wp-submenu-head { + border-top-color: #f9f9f9; + border-bottom-color: #dfdfdf; +} + +#adminmenu li.wp-menu-open { + border-color: #dfdfdf; +} + +#adminmenu li.menu-top:hover > a, +#adminmenu li.menu-top.focused > a, +#adminmenu li.menu-top > a:focus { + background-color: #e4e4e4; + text-shadow: 0 1px 0 rgba( 255, 255, 255, 0.4 ); +} + +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.current a.menu-top, +.folded #adminmenu li.wp-has-current-submenu, +.folded #adminmenu li.current.menu-top, +#adminmenu .wp-menu-arrow, +#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { + background-color: #777; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #6d6d6d, #808080); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #6d6d6d, #808080); /* Firefox */ + background-image: -o-linear-gradient(bottom, #6d6d6d, #808080); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080); /* new Webkit */ + background-image: linear-gradient(bottom, #6d6d6d, #808080); /* proposed W3C Markup */ +} + +#adminmenu .wp-menu-arrow div { + background-color: #777; /* Fallback */ + background-image: -ms-linear-gradient(right bottom, #6d6d6d, #808080); /* IE10 */ + background-image: -moz-linear-gradient(right bottom, #6d6d6d, #808080); /* Firefox */ + background-image: -o-linear-gradient(right bottom, #6d6d6d, #808080); /* Opera */ + background-image: -webkit-gradient(linear, right bottom, left top, from(#6d6d6d), to(#808080)); /* old Webkit */ + background-image: -webkit-linear-gradient(right bottom, #6d6d6d, #808080); /* new Webkit */ + background-image: linear-gradient(right bottom, #6d6d6d, #808080); /* proposed W3C Markup */ +} + +#adminmenu li.wp-not-current-submenu .wp-menu-arrow { + border-top-color: #f9f9f9; + border-bottom-color: #dfdfdf; + background: #E4E4E4; +} + +#adminmenu li.wp-not-current-submenu .wp-menu-arrow div { + background: #E4E4E4; + border-color: #ccc; +} + +.folded #adminmenu li.menu-top li:hover a { + background-image: none; +} + +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.current a.menu-top, +#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { + text-shadow: 0 -1px 0 #333; + color: #fff; + border-top-color: #808080; + border-bottom-color: #6d6d6d; +} + +.folded #adminmenu li.wp-has-current-submenu, +.folded #adminmenu li.current.menu-top { + border-top-color: #808080; + border-bottom-color: #6d6d6d; +} + +#adminmenu .wp-submenu a:hover, +#adminmenu .wp-submenu a:focus { + background-color: #EAF2FA; + color: #333; +} + +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover { + color: #333; +} + +#adminmenu .wp-submenu ul { + background-color: #fff; +} + +#adminmenu .wp-submenu-wrap, +#adminmenu .wp-submenu ul { + border-color: #dfdfdf; +} + +#adminmenu .wp-submenu-wrap, +.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap { + -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); +} + +#adminmenu .wp-submenu .wp-submenu-head { + border-right-color: #dfdfdf; + background-color: #ececec; +} + +#adminmenu div.wp-submenu { + background-color: transparent; +} + +/* collapse menu button */ +#collapse-menu { + color: #aaa; +} + +#collapse-menu:hover { + color: #999; +} + +#collapse-button { + border-color: #ccc; + background-color: #f4f4f4; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #dfdfdf, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #dfdfdf, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #dfdfdf, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#dfdfdf), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #dfdfdf, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #dfdfdf, #fff); /* proposed W3C Markup */ +} + +#collapse-menu:hover #collapse-button { + border-color: #aaa; +} + +#collapse-button div { + background: transparent url(../images/arrows.png) no-repeat 0 -72px; +} + +.folded #collapse-button div { + background-position: 0 -108px; +} + +/* Auto-folding of the admin menu */ +@media only screen and (max-width: 900px) { + #adminmenu li.menu-top { + border-top-color: #f9f9f9; + border-bottom-color: #dfdfdf; + } + + #adminmenu li.wp-has-current-submenu, + #adminmenu li.current.menu-top { + background-color: #777; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #6d6d6d, #808080); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #6d6d6d, #808080); /* Firefox */ + background-image: -o-linear-gradient(bottom, #6d6d6d, #808080); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080); /* new Webkit */ + background-image: linear-gradient(bottom, #6d6d6d, #808080); /* proposed W3C Markup */ + } + + #adminmenu li.menu-top li:hover a { + background-image: none; + } + + #adminmenu li.wp-has-current-submenu, + #adminmenu li.current.menu-top { + border-top-color: #808080; + border-bottom-color: #6d6d6d; + } + + #adminmenu .wp-has-current-submenu .wp-submenu-wrap { + -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + } + + #collapse-button div { + background-position: 0 -108px; + } +} + +/* menu and screen icons */ +.icon16, +.icon32, +div.wp-menu-image { + background-color: transparent; + background-repeat: no-repeat; +} + +.icon16.icon-dashboard, +.menu-icon-dashboard div.wp-menu-image, +.icon16.icon-post, +.menu-icon-post div.wp-menu-image, +.icon16.icon-media, +.menu-icon-media div.wp-menu-image, +.icon16.icon-links, +.menu-icon-links div.wp-menu-image, +.icon16.icon-page, +.menu-icon-page div.wp-menu-image, +.icon16.icon-comments, +.menu-icon-comments div.wp-menu-image, +.icon16.icon-appearance, +.menu-icon-appearance div.wp-menu-image, +.icon16.icon-plugins, +.menu-icon-plugins div.wp-menu-image, +.icon16.icon-users, +.menu-icon-users div.wp-menu-image, +.icon16.icon-tools, +.menu-icon-tools div.wp-menu-image, +.icon16.icon-settings, +.menu-icon-settings div.wp-menu-image, +.icon16.icon-site, +.menu-icon-site div.wp-menu-image { + background-image: url('../images/menu.png?ver=20120201'); +} + +.icon16.icon-dashboard, +#adminmenu .menu-icon-dashboard div.wp-menu-image { + background-position: -59px -33px; +} + +#adminmenu .menu-icon-dashboard:hover div.wp-menu-image, +#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-dashboard.current div.wp-menu-image { + background-position: -59px -1px; +} + +.icon16.icon-post, +#adminmenu .menu-icon-post div.wp-menu-image { + background-position: -269px -33px; +} + +#adminmenu .menu-icon-post:hover div.wp-menu-image, +#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-post.current div.wp-menu-image { + background-position: -269px -1px; +} + +.icon16.icon-media, +#adminmenu .menu-icon-media div.wp-menu-image { + background-position: -119px -33px; +} + +#adminmenu .menu-icon-media:hover div.wp-menu-image, +#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-media.current div.wp-menu-image { + background-position: -119px -1px; +} + +.icon16.icon-links, +#adminmenu .menu-icon-links div.wp-menu-image { + background-position: -89px -33px; +} + +#adminmenu .menu-icon-links:hover div.wp-menu-image, +#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-links.current div.wp-menu-image { + background-position: -89px -1px; +} + +.icon16.icon-page, +#adminmenu .menu-icon-page div.wp-menu-image { + background-position: -149px -33px; +} + +#adminmenu .menu-icon-page:hover div.wp-menu-image, +#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-page.current div.wp-menu-image { + background-position: -149px -1px; +} + +.icon16.icon-comments, +#adminmenu .menu-icon-comments div.wp-menu-image { + background-position: -29px -33px; +} + +#adminmenu .menu-icon-comments:hover div.wp-menu-image, +#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-comments.current div.wp-menu-image { + background-position: -29px -1px; +} + +.icon16.icon-appearance, +#adminmenu .menu-icon-appearance div.wp-menu-image { + background-position: 1px -33px; +} + +#adminmenu .menu-icon-appearance:hover div.wp-menu-image, +#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-appearance.current div.wp-menu-image { + background-position: 1px -1px; +} + +.icon16.icon-plugins, +#adminmenu .menu-icon-plugins div.wp-menu-image { + background-position: -179px -33px; +} + +#adminmenu .menu-icon-plugins:hover div.wp-menu-image, +#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-plugins.current div.wp-menu-image { + background-position: -179px -1px; +} + +.icon16.icon-users, +#adminmenu .menu-icon-users div.wp-menu-image { + background-position: -300px -33px; +} + +#adminmenu .menu-icon-users:hover div.wp-menu-image, +#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-users.current div.wp-menu-image { + background-position: -300px -1px; +} + +.icon16.icon-tools, +#adminmenu .menu-icon-tools div.wp-menu-image { + background-position: -209px -33px; +} + +#adminmenu .menu-icon-tools:hover div.wp-menu-image, +#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-tools.current div.wp-menu-image { + background-position: -209px -1px; +} + +.icon16.icon-settings, +#adminmenu .menu-icon-settings div.wp-menu-image { + background-position: -239px -33px; +} + +#adminmenu .menu-icon-settings:hover div.wp-menu-image, +#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-settings.current div.wp-menu-image { + background-position: -239px -1px; +} + +.icon16.icon-site, +#adminmenu .menu-icon-site div.wp-menu-image { + background-position: -359px -33px; +} + +#adminmenu .menu-icon-site:hover div.wp-menu-image, +#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-site.current div.wp-menu-image { + background-position: -359px -1px; +} +/* end menu and screen icons */ + +/* Screen Icons */ +.icon32.icon-post, +#icon-edit, +#icon-post, +.icon32.icon-dashboard, +#icon-index, +.icon32.icon-media, +#icon-upload, +.icon32.icon-links, +#icon-link-manager, +#icon-link, +#icon-link-category, +.icon32.icon-page, +#icon-edit-pages, +#icon-page, +.icon32.icon-comments, +#icon-edit-comments, +.icon32.icon-appearance, +#icon-themes, +.icon32.icon-plugins, +#icon-plugins, +.icon32.icon-users, +#icon-users, +#icon-profile, +#icon-user-edit, +.icon32.icon-tools, +#icon-tools, +#icon-admin, +.icon32.icon-settings, +#icon-options-general, +.icon32.icon-site, +#icon-ms-admin { + background-image: url(../images/icons32.png?ver=20111206); +} + +.icon32.icon-post, +#icon-edit, +#icon-post { + background-position: -552px -5px; +} + +.icon32.icon-dashboard, +#icon-index { + background-position: -137px -5px; +} + +.icon32.icon-media, +#icon-upload { + background-position: -251px -5px; +} + +.icon32.icon-links, +#icon-link-manager, +#icon-link, +#icon-link-category { + background-position: -190px -5px; +} + +.icon32.icon-page, +#icon-edit-pages, +#icon-page { + background-position: -312px -5px; +} + +.icon32.icon-comments, +#icon-edit-comments { + background-position: -72px -5px; +} + +.icon32.icon-appearance, +#icon-themes { + background-position: -11px -5px; +} + +.icon32.icon-plugins, +#icon-plugins { + background-position: -370px -5px; +} + +.icon32.icon-users, +#icon-users, +#icon-profile, +#icon-user-edit { + background-position: -600px -5px; +} + +.icon32.icon-tools, +#icon-tools, +#icon-admin { + background-position: -432px -5px; +} + +.icon32.icon-settings, +#icon-options-general { + background-position: -492px -5px; +} + +.icon32.icon-site, +#icon-ms-admin { + background-position: -659px -5px; +} + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5) { + .icon32.icon-post, + #icon-edit, + #icon-post, + .icon32.icon-dashboard, + #icon-index, + .icon32.icon-media, + #icon-upload, + .icon32.icon-links, + #icon-link-manager, + #icon-link, + #icon-link-category, + .icon32.icon-page, + #icon-edit-pages, + #icon-page, + .icon32.icon-comments, + #icon-edit-comments, + .icon32.icon-appearance, + #icon-themes, + .icon32.icon-plugins, + #icon-plugins, + .icon32.icon-users, + #icon-users, + #icon-profile, + #icon-user-edit, + .icon32.icon-tools, + #icon-tools, + #icon-admin, + .icon32.icon-settings, + #icon-options-general, + .icon32.icon-site, + #icon-ms-admin { + background-image: url(../images/icons32-2x.png?ver=20120412); + background-size: 708px 45px; + } + + .icon16.icon-dashboard, + .menu-icon-dashboard div.wp-menu-image, + .icon16.icon-post, + .menu-icon-post div.wp-menu-image, + .icon16.icon-media, + .menu-icon-media div.wp-menu-image, + .icon16.icon-links, + .menu-icon-links div.wp-menu-image, + .icon16.icon-page, + .menu-icon-page div.wp-menu-image, + .icon16.icon-comments, + .menu-icon-comments div.wp-menu-image, + .icon16.icon-appearance, + .menu-icon-appearance div.wp-menu-image, + .icon16.icon-plugins, + .menu-icon-plugins div.wp-menu-image, + .icon16.icon-users, + .menu-icon-users div.wp-menu-image, + .icon16.icon-tools, + .menu-icon-tools div.wp-menu-image, + .icon16.icon-settings, + .menu-icon-settings div.wp-menu-image, + .icon16.icon-site, + .menu-icon-site div.wp-menu-image { + background-image: url('../images/menu-2x.png?ver=20120412'); + background-size: 390px 64px; + } +} +/* end screen icons */ + +/* Diff */ +table.diff .diff-deletedline { + background-color: #fdd; +} + +table.diff .diff-deletedline del { + background-color: #f99; +} + +table.diff .diff-addedline { + background-color: #dfd; +} + +table.diff .diff-addedline ins { + background-color: #9f9; +} + +#att-info { + background-color: #E4F2FD; +} + +/* edit image */ +#sidemenu a { + background-color: #f9f9f9; + border-color: #f9f9f9; + border-bottom-color: #dfdfdf; +} + +#sidemenu a.current { + background-color: #fff; + border-color: #dfdfdf #dfdfdf #fff; + color: #D54E21; +} + +#replyerror { + border-color: #ddd; + background-color: #f9f9f9; +} + +/* table vim shortcuts */ +.vim-current, +.vim-current th, +.vim-current td { + background-color: #E4F2FD !important; +} + +/* Install Plugins */ +#plugin-information .fyi ul { + background-color: #eaf3fa; +} + +#plugin-information .fyi h2.mainheader { + background-color: #cee1ef; +} + +#plugin-information pre, +#plugin-information code { + background-color: #ededff; +} + +#plugin-information pre { + border: 1px solid #ccc; +} + +/* inline editor */ +.inline-edit-row fieldset input[type="text"], +.inline-edit-row fieldset textarea, +#bulk-titles { + border-color: #ddd; +} + +.inline-editor div.title { + background-color: #EAF3FA; +} + +.inline-editor ul.cat-checklist { + background-color: #fff; + border-color: #ddd; +} + +.inline-editor .categories .catshow, +.inline-editor .categories .cathide { + color: #21759b; +} + +.inline-editor .quick-edit-save { + background-color: #f1f1f1; +} + +fieldset.inline-edit-col-right .inline-edit-col { + border-color: #dfdfdf; +} + +.attention { + color: #D54E21; +} + +.meta-box-sortables .postbox:hover .handlediv { + background: transparent url(../images/arrows.png) no-repeat 6px 7px; +} + +.tablenav .tablenav-pages { + color: #555; +} + +.tablenav .tablenav-pages a { + border-color: #e3e3e3; + background: #eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px; +} + +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #d54e21; +} + +.tablenav .tablenav-pages a.disabled, +.tablenav .tablenav-pages a.disabled:hover, +.tablenav .tablenav-pages a.disabled:focus { + color: #aaa; +} + +.tablenav .tablenav-pages .current { + background: #dfdfdf; + border-color: #d3d3d3; +} + +#availablethemes, +#availablethemes td { + border-color: #ddd; +} + +#current-theme img { + border-color: #999; +} + +#TB_window #TB_title a.tb-theme-preview-link, +#TB_window #TB_title a.tb-theme-preview-link:visited { + color: #999; +} + +#TB_window #TB_title a.tb-theme-preview-link:hover, +#TB_window #TB_title a.tb-theme-preview-link:focus { + color: #ccc; +} + +.misc-pub-section { + border-top-color: #fff; + border-bottom-color: #dfdfdf; +} + +#minor-publishing { + border-bottom-color: #dfdfdf; +} + +#post-body .misc-pub-section { + border-left-color: #eee; +} + +.post-com-count span { + background-color: #bbb; +} + +.form-table .color-palette td { + border-color: #fff; +} + +.sortable-placeholder { + border-color: #bbb; + background-color: #f5f5f5; +} + +#post-body ul.category-tabs li.tabs a, +#post-body ul.add-menu-item-tabs li.tabs a, +body.press-this ul.category-tabs li.tabs a { + color: #333; +} + +.view-switch #view-switch-list { + background: transparent url(../images/list.png) no-repeat 0 0; +} + +.view-switch .current #view-switch-list { + background: transparent url(../images/list.png) no-repeat -40px 0; +} + +.view-switch #view-switch-excerpt { + background: transparent url(../images/list.png) no-repeat -20px 0; +} + +.view-switch .current #view-switch-excerpt { + background: transparent url(../images/list.png) no-repeat -60px 0; +} + +#header-logo { + background: transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center; +} + +.popular-tags, +.feature-filter { + background-color: #fff; + border-color: #DFDFDF; +} + +div.widgets-sortables, +#widgets-left .inactive, +#available-widgets .widget-holder { + background-color: #fcfcfc; + border-color: #dfdfdf; +} + +#available-widgets .widget-description { + color: #555; +} + +.sidebar-name { + color: #464646; + text-shadow: #fff 0 1px 0; + border-color: #dfdfdf; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; +} + +.sidebar-name:hover, +#removing-widget { + color: #d54e21; +} + +#removing-widget span { + color: black; +} + +.sidebar-name-arrow { + background: transparent url(../images/arrows.png) no-repeat 5px 9px; +} + +.sidebar-name:hover .sidebar-name-arrow { + background: transparent url(../images/arrows-dark.png) no-repeat 5px 9px; +} + +.in-widget-title { + color: #606060; +} + +.deleting .widget-title * { + color: #aaa; +} + +.imgedit-menu div { + border-color: #d5d5d5; + background-color: #f1f1f1; +} + +.imgedit-menu div:hover { + border-color: #c1c1c1; + background-color: #eaeaea; +} + +.imgedit-menu div.disabled { + border-color: #ccc; + background-color: #ddd; + filter: alpha(opacity=50); + opacity: 0.5; +} + +#dashboard_recent_comments div.undo { + border-top-color: #dfdfdf; +} + +.comment-ays, +.comment-ays th { + border-color: #ddd; +} + +.comment-ays th { + background-color: #f1f1f1; +} + +/* added from nav-menu.css */ +#menu-management .menu-edit { + border-color: #dfdfdf; +} + +#post-body { + background: #fff; + border-top-color: #fff; + border-bottom-color: #dfdfdf; +} + +#nav-menu-header { + border-bottom-color: #dfdfdf; +} + +#nav-menu-footer { + border-top-color: #fff; +} + +#menu-management .nav-tabs-arrow a { + color: #C1C1C1; +} + +#menu-management .nav-tabs-arrow a:hover { + color: #D54E21; +} + +#menu-management .nav-tabs-arrow a:active { + color: #464646; +} + +#menu-management .nav-tab-active { + border-color: #dfdfdf; +} + +#menu-management .nav-tab { + background: #fbfbfb; + border-color: #dfdfdf; +} + +.js .input-with-default-title { + color: #aaa; +} + +#cancel-save { + color: #ff0000; +} + +#cancel-save:hover { + background-color: #FF0000; + color: #fff; +} + +.list-container, +.menu-item-handle { + border-color: #dfdfdf; +} + +.menu li.deleting .menu-item-handle { + background-color: #f66; + text-shadow: #ccc; +} + +.item-type { /* Menu item controls */ + color: #999999; +} + +.item-controls .menu-item-delete:hover { + color: #ff0000; +} + +.nav-menus-php .item-edit { + background: transparent url(../images/arrows.png) no-repeat 8px 10px; + border-bottom-color: #eee; +} + +.item-edit:hover { + background: transparent url(../images/arrows-dark.png) no-repeat 8px 10px; +} + +.menu-item-settings { /* Menu editing */ + border-color: #dfdfdf; +} + +.link-to-original { + color: #777; + border-color: #dfdfdf; +} + +#cancel-save:hover { + color: #fff !important; +} + +#update-menu-item { + color: #fff !important; +} + +#update-menu-item:hover, +#update-menu-item:active, +#update-menu-item:focus { + color: #eaf2fa !important; + border-color: #13455b !important; +} + +.submitbox .submitcancel { + color: #21759B; + border-bottom-color: #21759B; +} + +.submitbox .submitcancel:hover { + background: #21759B; + color: #fff; +} +/* end added from nav-menu.css */ + +#menu-management .nav-tab-active, +.menu-item-handle, +.menu-item-settings { + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; +} + +#menu-management .nav-tab-active { + background: #f9f9f9; + border-bottom-color: #f9f9f9; +} + +#upload-form label { + color: #777; +} + +/* Begin About Pages */ + +.about-wrap h1 { + color: #333; + text-shadow: 1px 1px 1px white; +} + +.about-text { + color: #777; +} + +.wp-badge { + color: #fff; + text-shadow: 0 -1px 0 rgba(22, 57, 81, 0.3); +} + +.about-wrap h2 .nav-tab { + color: #21759B; +} +.about-wrap h2 .nav-tab:hover { + color: #d54e21; +} +.about-wrap h2 .nav-tab-active, +.about-wrap h2 .nav-tab-active:hover { + color: #333; +} +.about-wrap h2 .nav-tab-active { + text-shadow: 1px 1px 1px white; + color: #464646; +} + +.about-wrap h3 { + color: #333; + text-shadow: 1px 1px 1px white; +} + +.about-wrap .feature-section h4 { + color: #464646; +} + +.about-wrap .feature-section img { + background: #fff; + border: 1px #ccc solid; + + -moz-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 ); + -webkit-box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 ); + box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 ); +} + +.about-wrap h4.wp-people-group { + text-shadow: 1px 1px 1px white; +} + +.about-wrap .point-releases { + border-bottom: 1px solid #dfdfdf; +} + +.about-wrap .point-releases h3 { + border-top: 1px solid #dfdfdf; +} + +.about-wrap .point-releases h3:first-child { + border: 0; +} + +.about-wrap li.wp-person img.gravatar { + -moz-box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 ); + box-shadow: 0 0 4px rgba( 0, 0, 0, 0.4 ); +} +.about-wrap li.wp-person .title { + color: #464646; + text-shadow: 1px 1px 1px white; +} + +.freedoms-php .about-wrap ol li { + color: #999; +} +.freedoms-php .about-wrap ol p { + color: #464646; +} + +/* End About Pages */ + + +/*------------------------------------------------------------------------------ + 2.0 - Right to Left Styles +------------------------------------------------------------------------------*/ + +.rtl .bar { + border-right-color: none; + border-left-color: #99d; +} + +.rtl .post-com-count { + background-image: url(../images/bubble_bg-rtl.gif); +} + +.rtl #screen-meta-links a.show-settings { + background-position: left 3px; +} + +.rtl #screen-meta-links a.show-settings.screen-meta-active { + background-position: left -33px; +} + +/* Menu */ +.rtl #adminmenushadow, +.rtl #adminmenuback { + background-image: url(../images/menu-shadow-rtl.png); + background-position: top left; +} + +.rtl #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, +.rtl #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { + background: transparent url(../images/arrows-dark.png) no-repeat 8px 6px; +} + +.rtl #adminmenu .wp-has-submenu:hover .wp-menu-toggle, +.rtl #adminmenu .wp-menu-open .wp-menu-toggle { + background: transparent url(../images/arrows.png) no-repeat 8px 6px; +} + +.rtl #adminmenu .wp-submenu .wp-submenu-head { + border-right-color: none; + border-left-color: #dfdfdf; +} + +.rtl #adminmenu .wp-submenu-wrap, +.rtl.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{ + -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); +} + +/* Collapse Menu Button */ +.rtl #collapse-button div { + background-position: 0 -108px; +} + +.rtl.folded #collapse-button div { + background-position: 0 -72px; +} + +/* Auto-folding of the admin menu for RTL */ +@media only screen and (max-width: 900px) { + .rtl #adminmenu .wp-has-current-submenu .wp-submenu-wrap{ + -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + } + + .rtl #collapse-button div { + background-position: 0 -72px; + } +} + +/* Edit Image */ +.rtl .meta-box-sortables .postbox:hover .handlediv { + background: transparent url(../images/arrows.png) no-repeat 6px 7px; +} + +.rtl .tablenav .tablenav-pages a { + border-color: #e3e3e3; + background: #eee url('../images/menu-bits-rtl.gif?ver=20100610') repeat-x scroll right -379px; +} + +.rtl #post-body .misc-pub-section { + border-right-color: none; + border-left-color: #eee; +} + +.rtl .sidebar-name-arrow { + background: transparent url(../images/arrows.png) no-repeat 5px 9px; +} + +.rtl .sidebar-name:hover .sidebar-name-arrow { + background: transparent url(../images/arrows-dark.png) no-repeat 5px 9px; +} diff --git a/wp-admin/css/customize-controls-rtl.css b/wp-admin/css/customize-controls-rtl.css new file mode 100644 index 0000000..1b1830f --- /dev/null +++ b/wp-admin/css/customize-controls-rtl.css @@ -0,0 +1 @@ +.control-section .customize-section-title{font-family:Tahoma,Arial,sans-serif}.customize-section-title:after{right:auto;left:20px}#customize-header-actions .button-primary{float:left}#customize-header-actions img{float:left;margin-right:0;margin-left:4px}.customize-control{float:right}.customize-control-radio input,.customize-control-checkbox input{margin-right:0;margin-left:5px}.customize-section .dropdown{float:right}.customize-section .dropdown-content{float:right;margin-right:0;margin-left:16px;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow{right:auto;left:0;border-color:#ccc;border-style:solid;border-width:1px 0 1px 1px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.customize-control .dropdown-arrow:after{right:auto;left:4px}.customize-control-color .dropdown{margin-right:0;margin-left:5px}.customize-section input[type="text"].color-picker-hex,.customize-control-color .farbtastic-placeholder{float:right}.customize-section .customize-control-image .actions{text-align:left}.customize-control-image .library,.customize-control-image .actions,.customize-section .customize-control-image .library ul,.customize-section .customize-control-image .library li,.customize-section .customize-control-image .library-content{float:right} \ No newline at end of file diff --git a/wp-admin/css/customize-controls-rtl.dev.css b/wp-admin/css/customize-controls-rtl.dev.css new file mode 100644 index 0000000..1852fd9 --- /dev/null +++ b/wp-admin/css/customize-controls-rtl.dev.css @@ -0,0 +1,86 @@ +.control-section .customize-section-title { + font-family: Tahoma, Arial, sans-serif; +} +.customize-section-title:after { + right: auto; + left: 20px; +} + +#customize-header-actions .button-primary { + float: left; +} + +#customize-header-actions img { + float: left; + margin-right: 0; + margin-left: 4px; +} + +.customize-control { + float: right; +} + +.customize-control-radio input, +.customize-control-checkbox input { + margin-right: 0; + margin-left: 5px; +} + +/* + * Dropdowns + */ +.customize-section .dropdown { + float: right; +} + +.customize-section .dropdown-content { + float: right; + margin-right: 0px; + margin-left: 16px; + -webkit-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.customize-control .dropdown-arrow { + right: auto; + left: 0; + + border-color: #ccc; + border-style: solid; + border-width: 1px 0 1px 1px; + -webkit-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.customize-control .dropdown-arrow:after { + right: auto; + left: 4px; +} + +/* + * Color Picker + */ +.customize-control-color .dropdown { + margin-right: 0; + margin-left: 5px; +} + +.customize-section input[type="text"].color-picker-hex, +.customize-control-color .farbtastic-placeholder { + float: right; +} + +/* + * Image Picker + */ +.customize-section .customize-control-image .actions { + text-align: left; +} + +.customize-control-image .library, +.customize-control-image .actions, +.customize-section .customize-control-image .library ul, +.customize-section .customize-control-image .library li, +.customize-section .customize-control-image .library-content { + float: right; +} diff --git a/wp-admin/css/customize-controls.css b/wp-admin/css/customize-controls.css new file mode 100644 index 0000000..9447cc3 --- /dev/null +++ b/wp-admin/css/customize-controls.css @@ -0,0 +1 @@ +body{overflow:hidden}#customize-controls a{text-decoration:none}.customize-section{border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;margin:0}.control-section.customize-section:hover,.control-section.customize-section.open{border-top-color:#808080}.control-section.customize-section:hover{border-bottom-color:#6d6d6d}.customize-section.open:hover{border-bottom-color:#dfdfdf}.customize-section:last-child{box-shadow:0 1px 0 0 #fff}.customize-section-title{margin:0;padding:15px 20px;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cannot-expand .customize-section-title{cursor:auto}.customize-section-content{display:none;padding:10px 20px 15px;overflow:hidden}.control-section .customize-section-title{padding:10px 20px;font-size:15px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;text-shadow:0 1px 0 #fff;background-color:#f5f5f5;background-image:-webkit-linear-gradient(top,#f5f5f5,#eee);background-image:-moz-linear-gradient(top,#f5f5f5,#eee);background-image:-ms-linear-gradient(top,#f5f5f5,#eee);background-image:-o-linear-gradient(top,#f5f5f5,#eee);background-image:linear-gradient(top,#f5f5f5,#eee)}.control-section:hover .customize-section-title,.control-section .customize-section-title:hover,.control-section.open .customize-section-title{color:#fff;text-shadow:0 -1px 0 #333;background-color:#808080;background-image:-webkit-linear-gradient(top,#808080,#6d6d6d);background-image:-moz-linear-gradient(top,#808080,#6d6d6d);background-image:-ms-linear-gradient(top,#808080,#6d6d6d);background-image:-o-linear-gradient(top,#808080,#6d6d6d);background-image:linear-gradient(top,#808080,#6d6d6d)}.control-section.open .customize-section-title{border-bottom:1px solid #6d6d6d}.customize-section.open .customize-section-content{display:block;background:#fdfdfd}.customize-section-title:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:6px 6px 0;position:absolute;top:25px;right:20px;z-index:1}.cannot-expand .customize-section-title:after{display:none}.customize-section-title:hover:after{border-color:#aaa transparent}.control-section .customize-section-title:hover:after{border-color:#eee transparent}.control-section .customize-section-title:after{top:15px}#customize-info .customize-section-content{background:transparent}#customize-info .preview-notice{font-size:13px;line-height:24px;color:#999}#customize-info .theme-name{font-size:20px;font-weight:200;line-height:24px;color:#333;display:block;text-shadow:0 1px 0 #fff}#customize-info .theme-screenshot{width:258px;border:1px solid #ccc}#customize-info .theme-description{margin-top:1em;color:#777;line-height:20px}#customize-controls .submit{text-align:center}#customize-theme-controls>ul,#customize-theme-controls .customize-section-content{margin:0}#customize-header-actions .button-primary{float:right;margin-top:11px}#customize-header-actions img{display:none;float:right;margin-top:13px;margin-right:4px}.saving #customize-header-actions img{display:block}.customize-control{width:100%;float:left;clear:both;margin-bottom:8px}.customize-control-title{display:block;line-height:24px;font-weight:bold}.customize-control select,.customize-control input[type="text"],.customize-control input[type="radio"],.customize-control input[type="checkbox"],.customize-control-color .color-picker,.customize-control-checkbox label,.customize-control-upload div{line-height:28px}.customize-control input[type="text"]{width:98%;line-height:18px;margin:0}.customize-control select{min-width:50%;max-width:100%;height:28px;line-height:28px}.customize-control-checkbox input{margin-right:5px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio label{line-height:20px}.customize-control-radio input{margin-right:5px}#customize-preview iframe{width:100%;height:100%}.customize-section .dropdown{float:left;display:block;position:relative;cursor:pointer;-webkit-border-radius:3px;border-radius:3px}.customize-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;background-color:#eee;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:15px;border-color:#ccc;border-style:solid;border-width:1px 1px 1px 0;-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.customize-control .dropdown-arrow:after{content:'';width:0;height:0;border-color:#ccc transparent;border-style:solid;border-width:4px 4px 0 4px;position:absolute;top:50%;margin-top:-1px;right:4px;z-index:1}.customize-section .dropdown:hover .dropdown-content,.customize-control .dropdown:hover .dropdown-arrow{border-color:#aaa}.customize-section .dropdown:hover .dropdown-arrow:after{border-color:#aaa transparent}.customize-control .dropdown-status{display:none;max-width:112px;color:#777}.customize-control-color .color-picker-hex,.customize-control-color .farbtastic-placeholder{display:none}.customize-control-color.open .color-picker-hex,.customize-control-color.open .farbtastic-placeholder{display:block}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#fff;border:1px solid rgba(0,0,0,0.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,0.25)}.customize-section input[type="text"].color-picker-hex{float:left;width:85px;font-family:monospace;text-align:center}.customize-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder{color:transparent}.customize-section input[type="text"].color-picker-hex:-moz-placeholder{color:#999}.customize-control-color .farbtastic-placeholder{width:100%;margin:5px 0 10px;float:left}.customize-control-color .farbtastic{margin:0 auto}.customize-control-image .library,.customize-control-image .actions{display:none;float:left;width:100%}.customize-control-image.open .library,.customize-control-image.open .actions{display:block}.customize-section .customize-control-image .dropdown-content{height:auto;min-height:24px;min-width:40px;padding:0}.customize-section .customize-control-image .dropdown-status{padding:4px 5px}.customize-section .customize-control-image .preview-thumbnail img{display:block;width:100%;max-width:122px;max-height:98px;margin:0 auto}.customize-section .customize-control-image .actions{text-align:right}.customize-section .customize-control-image .library ul{border-bottom:1px solid #dfdfdf;float:left;width:100%;margin:10px 0 0}.customize-section .customize-control-image .library li{color:#999;float:left;padding:3px 5px;margin:0;border-style:solid;border-color:transparent;border-width:1px 1px 0 1px}.customize-section .customize-control-image .library li.library-selected{margin-bottom:-1px;padding-bottom:4px;color:#777;background:#fdfdfd;border-color:#dfdfdf;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.customize-section .customize-control-image .library-content{display:none;width:100%;float:left;padding:10px 0}.customize-section .customize-control-image .library-content.library-selected{display:block}.customize-section .customize-control-image .library .thumbnail{display:block;width:100%}.customize-section .customize-control-image .library .thumbnail:hover img{border-color:#21759b}.customize-section .customize-control-image .library .thumbnail img{display:block;max-width:90%;max-height:80px;margin:5px auto;padding:4px;background:#fff;border:1px solid #dfdfdf}.customize-section .customize-control-upload .upload-fallback,.customize-section .customize-control-image .upload-fallback{display:none}.customize-section .customize-control-upload .upload-dropzone,.customize-section .customize-control-image .upload-dropzone{display:none;padding:15px 10px;border:3px dashed #dfdfdf;margin:5px auto;text-align:center;color:#777;position:relative;cursor:default}.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop,.customize-section .customize-control-image .upload-dropzone.supports-drag-drop{display:block;-webkit-transition:border-color .1s;-moz-transition:border-color .1s;-ms-transition:border-color .1s;-o-transition:border-color .1s;transition:border-color .1s}.customize-section .customize-control-upload .library ul li,.customize-section .customize-control-image .library ul li{cursor:pointer}.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over,.customize-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over{border-color:#83b4d8}.ios .wp-full-overlay{position:relative}.ios #customize-preview{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}body.cheatin{min-width:0;background:#f9f9f9;padding:50px}body.cheatin p{max-width:700px;margin:0 auto;padding:2em;font-size:14px;background:#fff;border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px} \ No newline at end of file diff --git a/wp-admin/css/customize-controls.dev.css b/wp-admin/css/customize-controls.dev.css new file mode 100644 index 0000000..908caa2 --- /dev/null +++ b/wp-admin/css/customize-controls.dev.css @@ -0,0 +1,537 @@ +body { + overflow: hidden; +} + +#customize-controls a { + text-decoration: none; +} + +.customize-section { + border-top: 1px solid #fff; + border-bottom: 1px solid #dfdfdf; + margin: 0; +} + +.control-section.customize-section:hover, +.control-section.customize-section.open { + border-top-color: #808080; +} + +.control-section.customize-section:hover { + border-bottom-color: #6d6d6d; +} + +.customize-section.open:hover { + border-bottom-color: #dfdfdf; +} + +.customize-section:last-child { + box-shadow: 0 1px 0 0px #fff; +} + +.customize-section-title { + margin: 0; + padding: 15px 20px; + position: relative; + + cursor: pointer; + + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.cannot-expand .customize-section-title { + cursor: auto; +} + +.customize-section-content { + display: none; + padding: 10px 20px 15px; + overflow: hidden; +} + +.control-section .customize-section-title { + padding: 10px 20px; + font-size: 15px; + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-weight: normal; + text-shadow: 0 1px 0 #fff; + + background-color: #f5f5f5; + background-image: -webkit-linear-gradient( top, #f5f5f5, #eee ); + background-image: -moz-linear-gradient( top, #f5f5f5, #eee ); + background-image: -ms-linear-gradient( top, #f5f5f5, #eee ); + background-image: -o-linear-gradient( top, #f5f5f5, #eee ); + background-image: linear-gradient( top, #f5f5f5, #eee ); +} + +.control-section:hover .customize-section-title, +.control-section .customize-section-title:hover, +.control-section.open .customize-section-title { + color: #fff; + text-shadow: 0 -1px 0 #333; + background-color: #808080; + background-image: -webkit-linear-gradient( top, #808080, #6d6d6d ); + background-image: -moz-linear-gradient( top, #808080, #6d6d6d ); + background-image: -ms-linear-gradient( top, #808080, #6d6d6d ); + background-image: -o-linear-gradient( top, #808080, #6d6d6d ); + background-image: linear-gradient( top, #808080, #6d6d6d ); +} + +.control-section.open .customize-section-title { + border-bottom: 1px solid #6d6d6d; +} + +.customize-section.open .customize-section-content { + display: block; + background: #fdfdfd; +} + +.customize-section-title:after { + content: ''; + width: 0; + height: 0; + border-color: #ccc transparent; + border-style: solid; + border-width: 6px 6px 0; + position: absolute; + top: 25px; + right: 20px; + z-index: 1; +} + +.cannot-expand .customize-section-title:after { + display: none; +} + +.customize-section-title:hover:after { + border-color: #aaa transparent; +} + +.control-section .customize-section-title:hover:after { + border-color: #eee transparent; +} + +.control-section .customize-section-title:after { + top: 15px; +} + +#customize-info .customize-section-content { + background: transparent; +} + +#customize-info .preview-notice { + font-size: 13px; + line-height: 24px; + color: #999; +} + +#customize-info .theme-name { + font-size: 20px; + font-weight: 200; + line-height: 24px; + color: #333; + display: block; + text-shadow: 0 1px 0 #fff; +} + +#customize-info .theme-screenshot { + width: 258px; + border: 1px solid #ccc; +} + +#customize-info .theme-description { + margin-top: 1em; + color: #777; + line-height: 20px; +} + +#customize-controls .submit { + text-align: center; +} + +#customize-theme-controls > ul, +#customize-theme-controls .customize-section-content { + margin: 0; +} + +#customize-header-actions .button-primary { + float: right; + margin-top: 11px; +} + +#customize-header-actions img { + display: none; + float: right; + margin-top: 13px; + margin-right: 4px; +} + +.saving #customize-header-actions img { + display: block; +} + +.customize-control { + width: 100%; + float: left; + clear: both; + margin-bottom: 8px; +} + +.customize-control-title { + display: block; + line-height: 24px; + font-weight: bold; +} + +.customize-control select, +.customize-control input[type="text"], +.customize-control input[type="radio"], +.customize-control input[type="checkbox"], +.customize-control-color .color-picker, +.customize-control-checkbox label, +.customize-control-upload div { + line-height: 28px; +} + +.customize-control input[type="text"] { + width: 98%; + line-height: 18px; + margin: 0; +} + +.customize-control select { + min-width: 50%; + max-width: 100%; + height: 28px; + line-height: 28px; +} + +.customize-control-checkbox input { + margin-right: 5px; +} + +.customize-control-radio { + padding: 5px 0 10px; +} + +.customize-control-radio .customize-control-title { + margin-bottom: 0; + line-height: 22px; +} + +.customize-control-radio label { + line-height: 20px; +} + +.customize-control-radio input { + margin-right: 5px; +} + +#customize-preview iframe { + width: 100%; + height: 100%; +} + +/* + * Style for custom settings + */ + +/* + * Dropdowns + */ +.customize-section .dropdown { + float: left; + display: block; + position: relative; + cursor: pointer; + + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.customize-section .dropdown-content { + overflow: hidden; + float: left; + min-width: 30px; + height: 16px; + line-height: 16px; + margin-right: 16px; + padding: 4px 5px; + background-color: #eee; + border: 1px solid #ccc; + -webkit-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; + + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.customize-control .dropdown-arrow { + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 15px; + + border-color: #ccc; + border-style: solid; + border-width: 1px 1px 1px 0; + -webkit-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.customize-control .dropdown-arrow:after { + content: ''; + width: 0; + height: 0; + border-color: #ccc transparent; + border-style: solid; + border-width: 4px 4px 0 4px; + position: absolute; + top: 50%; + margin-top: -1px; + right: 4px; + z-index: 1; +} + +.customize-section .dropdown:hover .dropdown-content, +.customize-control .dropdown:hover .dropdown-arrow { + border-color: #aaa; +} + +.customize-section .dropdown:hover .dropdown-arrow:after { + border-color: #aaa transparent; +} + +.customize-control .dropdown-status { + display: none; + max-width: 112px; + color: #777; +} + +/* + * Color Picker + */ +.customize-control-color .color-picker-hex, +.customize-control-color .farbtastic-placeholder { + display: none; +} + +.customize-control-color.open .color-picker-hex, +.customize-control-color.open .farbtastic-placeholder { + display: block; +} + +.customize-control-color .dropdown { + margin-right: 5px; + margin-bottom: 5px; +} + +.customize-control-color .dropdown .dropdown-content { + background-color: #fff; + border: 1px solid rgba( 0, 0, 0, 0.15 ); +} + +.customize-control-color .dropdown:hover .dropdown-content { + border-color: rgba( 0, 0, 0, 0.25 ); +} + +.customize-section input[type="text"].color-picker-hex { + float: left; + width: 85px; + font-family: monospace; + text-align: center; +} + +/* The centered cursor overlaps the placeholder in webkit. Hide it when selected. */ +.customize-section input[type="text"].color-picker-hex:focus::-webkit-input-placeholder { + color: transparent; +} +.customize-section input[type="text"].color-picker-hex:-moz-placeholder { + color: #999; +} + +.customize-control-color .farbtastic-placeholder { + width: 100%; + margin: 5px 0 10px; + float: left; +} + +.customize-control-color .farbtastic { + margin: 0 auto; +} + +/* + * Image Picker + */ +.customize-control-image .library, +.customize-control-image .actions { + display: none; + float: left; + width: 100%; +} + +.customize-control-image.open .library, +.customize-control-image.open .actions { + display: block; +} + +.customize-section .customize-control-image .dropdown-content { + height: auto; + min-height: 24px; + min-width: 40px; + padding: 0; +} + +.customize-section .customize-control-image .dropdown-status { + padding: 4px 5px; +} + +.customize-section .customize-control-image .preview-thumbnail img { + display: block; + width: 100%; + max-width: 122px; + max-height: 98px; + margin: 0 auto; +} + +.customize-section .customize-control-image .actions { + text-align: right; +} + +.customize-section .customize-control-image .library ul { + border-bottom: 1px solid #dfdfdf; + float: left; + width: 100%; + margin: 10px 0 0; +} + +.customize-section .customize-control-image .library li { + color: #999; + float: left; + padding: 3px 5px; + margin: 0; + border-style: solid; + border-color: transparent; + border-width: 1px 1px 0 1px; +} + +.customize-section .customize-control-image .library li.library-selected { + margin-bottom: -1px; + padding-bottom: 4px; + + color: #777; + background: #fdfdfd; + border-color: #dfdfdf; + -webkit-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0 ; +} + +.customize-section .customize-control-image .library-content { + display: none; + width: 100%; + float: left; + padding: 10px 0; +} + +.customize-section .customize-control-image .library-content.library-selected { + display: block; +} + +.customize-section .customize-control-image .library .thumbnail { + display: block; + width: 100%; +} + +.customize-section .customize-control-image .library .thumbnail:hover img { + border-color: #21759b; +} + +.customize-section .customize-control-image .library .thumbnail img { + display: block; + max-width: 90%; + max-height: 80px; + + margin: 5px auto; + padding: 4px; + background: #fff; + border: 1px solid #dfdfdf; +} + +.customize-section .customize-control-upload .upload-fallback, +.customize-section .customize-control-image .upload-fallback { + display: none; +} + +.customize-section .customize-control-upload .upload-dropzone, +.customize-section .customize-control-image .upload-dropzone { + display: none; + padding: 15px 10px; + border: 3px dashed #dfdfdf; + margin: 5px auto; + text-align: center; + color: #777; + position: relative; + cursor: default; +} + +.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop, +.customize-section .customize-control-image .upload-dropzone.supports-drag-drop { + display: block; + -webkit-transition: border-color 0.1s; + -moz-transition: border-color 0.1s; + -ms-transition: border-color 0.1s; + -o-transition: border-color 0.1s; + transition: border-color 0.1s; +} + +.customize-section .customize-control-upload .library ul li, +.customize-section .customize-control-image .library ul li { + cursor: pointer; +} + +.customize-section .customize-control-upload .upload-dropzone.supports-drag-drop.drag-over, +.customize-section .customize-control-image .upload-dropzone.supports-drag-drop.drag-over { + border-color: #83b4d8; +} + +/** + * iOS can't scroll iframes, + * instead it expands the iframe size to match the size of the content + */ +.ios .wp-full-overlay { + position: relative; +} + +.ios #customize-preview { + position: relative; +} + +.ios #customize-controls .wp-full-overlay-sidebar-content { + -webkit-overflow-scrolling: touch; +} + +/** + * Handle cheaters. + */ +body.cheatin { + min-width: 0; + background: #f9f9f9; + padding: 50px; +} + +body.cheatin p { + max-width: 700px; + margin: 0 auto; + padding: 2em; + font-size: 14px; + + background: #fff; + border: 1px solid #dfdfdf; + + -webkit-border-radius: 3px; + border-radius: 3px; +} \ No newline at end of file diff --git a/wp-admin/css/farbtastic.css b/wp-admin/css/farbtastic.css new file mode 100644 index 0000000..ef1129c --- /dev/null +++ b/wp-admin/css/farbtastic.css @@ -0,0 +1,52 @@ + +.farbtastic { + position: relative; +} + +.farbtastic * { + position: absolute; + cursor: crosshair; +} + +.farbtastic, +.farbtastic .wheel { + width: 195px; + height: 195px; +} + +.farbtastic .color, +.farbtastic .overlay { + top: 47px; + left: 47px; + width: 101px; + height: 101px; +} + +.farbtastic .wheel { + background: url(../images/wheel.png) no-repeat; + width: 195px; + height: 195px; +} + +.farbtastic .overlay { + background: url(../images/mask.png) no-repeat; +} + +.farbtastic .marker { + width: 17px; + height: 17px; + margin: -8px 0 0 -8px; + overflow: hidden; + background: url(../images/marker.png) no-repeat; +} + +/* farbtastic-rtl */ +.rtl .farbtastic .color, +.rtl .farbtastic .overlay { + left: 0; + right: 47px; +} + +.rtl .farbtastic .marker { + margin: -8px -8px 0 0; +} diff --git a/wp-admin/css/ie-rtl.css b/wp-admin/css/ie-rtl.css new file mode 100644 index 0000000..47dd4e5 --- /dev/null +++ b/wp-admin/css/ie-rtl.css @@ -0,0 +1 @@ +body{direction:rtl;width:99.5%}.rtl #adminmenuback{left:auto;right:0;background-image:none}.rtl #adminmenuback,.rtl #adminmenuwrap{border-width:0 0 0 1px}#plupload-upload-ui{zoom:1}.post-com-count-wrapper a.post-com-count{float:none}#adminmenu .wp-submenu ul{width:99%}#adminmenu .wp-submenu .wp-submenu .wp-submenu-wrap,#adminmenu .wp-menu-open .wp-submenu .wp-submenu-wrap{border:1px solid #dfdfdf}.folded #adminmenu .wp-submenu{right:30px;top:-4px}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 10px 6px 4px}#adminmenu .wp-menu-arrow{display:none!important}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 10px 4px 4px}div.quicktags-toolbar input{min-width:0}.inline-edit-row fieldset label span.title{float:right}.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}p.search-box{float:left}#bh{margin:7px 10px 0 0;float:left}.postbox div.inside,.wp-editor-wrap .wp-editor-container .wp-editor-area,#nav-menu-theme-locations .howto select{width:97.5%}div#dashboard-widgets{padding-right:0;padding-left:1px}#dashboard_quick_press h4{text-align:right}.tagchecklist span a{margin:4px -9px 0 0}.widefat th input{margin:0 5px 0 0}#TB_window{width:670px;position:absolute;top:50%;left:50%;margin-right:335px!important}#dashboard_plugins{direction:ltr}#dashboard_plugins h3.hndle{direction:rtl}#dashboard_incoming_links ul li,#dashboard_secondary ul li,#dashboard_primary ul li,p.row-actions{width:100%}#post-status-info{height:25px}p.submit{height:22px}form#widgets-filter{position:static}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:-30px}.menu-item-depth-2{margin-left:-60px}.menu-item-depth-3{margin-left:-90px}.menu-item-depth-4{margin-left:-120px}.menu-item-depth-5{margin-left:-150px}.menu-item-depth-6{margin-left:-180px}.menu-item-depth-7{margin-left:-210px}.menu-item-depth-8{margin-left:-240px}.menu-item-depth-9{margin-left:-270px}.menu-item-depth-10{margin-left:-300px}.menu-item-depth-11{margin-left:-330px}#menu-management,.nav-menus-php .menu-edit,#nav-menu-header .submitbox{zoom:1}.nav-menus-php label{max-width:90%!important}p.button-controls,.nav-menus-php .tabs-panel{max-width:90%}.nav-menus-php .major-publishing-actions .publishing-action{float:none}#wpbody #nav-menu-header label{float:none}#nav-menu-header{margin-top:-10px}#nav-menu-footer{margin-bottom:-20px}#update-nav-menu .publishing-action{max-width:200px}#nav-menus-frame #update-nav-menu .delete-action{margin-top:-25px;float:left}#menu-to-edit li{margin-top:-10px;margin-bottom:-10px}.sortable-placeholder{margin-top:0!important;margin-left:0!important;margin-bottom:13px!important;padding:0!important}.auto-add-pages{clear:both;float:none}#nav-menus-frame .open-label span{float:none;display:inline-block}#nav-menus-frame .delete-action{float:none} \ No newline at end of file diff --git a/wp-admin/css/ie-rtl.dev.css b/wp-admin/css/ie-rtl.dev.css new file mode 100644 index 0000000..16357de --- /dev/null +++ b/wp-admin/css/ie-rtl.dev.css @@ -0,0 +1,239 @@ + +body { + direction: rtl; + width: 99.5%; +} + +.rtl #adminmenuback { + left: auto; + right: 0; + background-image: none; +} + +.rtl #adminmenuback, +.rtl #adminmenuwrap { + border-width: 0 0 0 1px; +} + +#plupload-upload-ui { + zoom: 1; +} + +.post-com-count-wrapper a.post-com-count { + float: none; +} + +#adminmenu .wp-submenu ul { + width: 99%; +} + +#adminmenu .wp-submenu .wp-submenu .wp-submenu-wrap, +#adminmenu .wp-menu-open .wp-submenu .wp-submenu-wrap { + border: 1px solid #dfdfdf; +} + +.folded #adminmenu .wp-submenu { + right: 30px; + top: -4px; +} + +#adminmenu .wp-submenu .wp-submenu-head { + padding: 6px 10px 6px 4px; +} + +#adminmenu .wp-menu-arrow { + display: none !important; +} + +#wpcontent #adminmenu .wp-submenu li.wp-submenu-head { + padding: 3px 10px 4px 4px; +} + +div.quicktags-toolbar input { + min-width: 0; +} + +.inline-edit-row fieldset label span.title { + float: right; +} + +.inline-edit-row fieldset label span.input-text-wrap { + margin-right: 0; +} + +p.search-box { + float: left; +} + +#bh { + margin: 7px 10px 0 0; + float: left; +} + +.postbox div.inside, +.wp-editor-wrap .wp-editor-container .wp-editor-area, +#nav-menu-theme-locations .howto select { + width: 97.5%; +} + +/* without this dashboard widgets appear in one column for some screen widths */ +div#dashboard-widgets { + padding-right: 0; + padding-left: 1px; +} + +#dashboard_quick_press h4 { + text-align: right; +} + +.tagchecklist span a { + margin: 4px -9px 0 0; +} + +.widefat th input { + margin: 0 5px 0 0; +} + +/* ---------- add by navid */ +#TB_window { + width: 670px; + position: absolute; + top: 50%; + left: 50%; + margin-right: 335px !important; +} + +#dashboard_plugins { + direction: ltr; +} + +#dashboard_plugins h3.hndle { + direction: rtl; +} + +#dashboard_incoming_links ul li, +#dashboard_secondary ul li, +#dashboard_primary ul li, +p.row-actions { + width: 100%; +} + +#post-status-info { + height: 25px; +} + +p.submit { /* quick edit and reply in edit-comments.php */ + height:22px; +} + +form#widgets-filter { /* fix widget page */ + position: static; +} + +/* nav menus +.menu-max-depth-0 #menu-management { width: 460px; } +.menu-max-depth-1 #menu-management { width: 490px; } +.menu-max-depth-2 #menu-management { width: 520px; } +.menu-max-depth-3 #menu-management { width: 550px; } +.menu-max-depth-4 #menu-management { width: 580px; } +.menu-max-depth-5 #menu-management { width: 610px; } +.menu-max-depth-6 #menu-management { width: 640px; } +.menu-max-depth-7 #menu-management { width: 670px; } +.menu-max-depth-8 #menu-management { width: 700px; } +.menu-max-depth-9 #menu-management { width: 730px; } +.menu-max-depth-10 #menu-management { width: 760px; } +.menu-max-depth-11 #menu-management { width: 790px; } +*/ +.menu-item-depth-0 { margin-left: 0px; } +.menu-item-depth-1 { margin-left: -30px; } +.menu-item-depth-2 { margin-left: -60px; } +.menu-item-depth-3 { margin-left: -90px; } +.menu-item-depth-4 { margin-left: -120px; } +.menu-item-depth-5 { margin-left: -150px; } +.menu-item-depth-6 { margin-left: -180px; } +.menu-item-depth-7 { margin-left: -210px; } +.menu-item-depth-8 { margin-left: -240px; } +.menu-item-depth-9 { margin-left: -270px; } +.menu-item-depth-10 { margin-left: -300px; } +.menu-item-depth-11 { margin-left: -330px; } + +/* +#menu-to-edit li dl { + padding: 0 !important; + margin: 0 !important; +} + +.ui-sortable-helper .menu-item-transport { + margin-top: 13px; +} + +.ui-sortable-helper .menu-item-transport .menu-item-transport { + margin-top: 0; +} +*/ + +#menu-management, +.nav-menus-php .menu-edit, +#nav-menu-header .submitbox { + zoom: 1; +} + +.nav-menus-php label { + max-width: 90% !important; +} + +p.button-controls, +.nav-menus-php .tabs-panel { + max-width: 90%; +} + +.nav-menus-php .major-publishing-actions .publishing-action { + float: none; +} + +#wpbody #nav-menu-header label { + float: none; +} + +#nav-menu-header { + margin-top: -10px; +} + +#nav-menu-footer { + margin-bottom: -20px; +} + +#update-nav-menu .publishing-action { + max-width: 200px; +} + +#nav-menus-frame #update-nav-menu .delete-action { + margin-top: -25px; + float: left; +} + +#menu-to-edit li { + margin-top: -10px; + margin-bottom: -10px; +} + +.sortable-placeholder { + margin-top: 0 !important; + margin-left: 0 !important; + margin-bottom: 13px !important; + padding: 0 !important; +} + +.auto-add-pages { + clear: both; + float: none; +} + +#nav-menus-frame .open-label span { + float: none; + display: inline-block; +} + +#nav-menus-frame .delete-action { + float: none; +} diff --git a/wp-admin/css/ie.css b/wp-admin/css/ie.css new file mode 100644 index 0000000..ec4709c --- /dev/null +++ b/wp-admin/css/ie.css @@ -0,0 +1 @@ +.wp-editor-wrap .wp-editor-container textarea.wp-editor-area{width:97%}#post-body.columns-2 #postbox-container-1{padding-left:19px}.welcome-panel .wp-badge{position:absolute}.welcome-panel .welcome-panel-column{margin:0 -25px 0 4%}#wp-fullscreen-title{width:97%}#wp_mce_fullscreen_ifr{background-color:#f9f9f9}#wp-fullscreen-tagline{color:#888;font-size:14px}#adminmenushadow{display:none}#adminmenuback{left:0;background-image:none}#adminmenuwrap{position:static}#adminmenu{position:relative}#adminmenu li.wp-menu-separator,#adminmenu li.wp-menu-separator-last{font-size:1px;line-height:1}#adminmenu a.menu-top{border-bottom:0 none;border-top:1px solid #ddd}#adminmenu .separator{font-size:1px;line-height:1px}#adminmenu .wp-submenu ul{margin:0}.folded #adminmenu .wp-submenu ul{margin-left:5px}#adminmenu li.menu-top{margin-bottom:-2px}#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow{display:none}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 4px 4px 10px;zoom:100%}.js.folded #adminmenu .menu-top{height:30px}.js.folded #adminmenu .wp-submenu{margin:-1px 0 0 0}.js.folded #adminmenu li.menu-top{display:block;zoom:100%}ul#adminmenu{z-index:99}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal}#wpcontent #adminmenu .wp-submenu li{padding:0}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}table.fixed th,table.fixed td{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary,#wpbody-content input.button-highlighted{overflow:visible}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:none}#dashboard-widgets h3 a{height:14px;line-height:14px}#dashboard_browser_nag{color:#fff}#dashboard_browser_nag .browser-icon{position:relative}.tablenav-pages .current-page{vertical-align:middle}#wpbody-content .postbox{border:1px solid #dfdfdf}#wpbody-content .postbox h3{margin-bottom:-1px}.major-publishing-actions,.wp-submenu,.wp-submenu li,.wp-menu-toggle,#template,#template div,#editcat,#addcat{zoom:100%}.wp-menu-arrow{height:28px}.submitbox{margin-top:10px}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%}.inline-edit-row p.submit{zoom:100%}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;zoom:100%}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em}#titlediv #title{width:98%}a.button{line-height:1.4em;margin:1px;padding:2px 6px}#screen-options-wrap{overflow:hidden}#the-comment-list .comment-item,#post-status-info,#wpwrap,#wrap,#postdivrich,#postdiv,#poststuff,.metabox-holder,#titlediv,#post-body,#editorcontainer,.tablenav,.widget-liquid-left,.widget-liquid-right,#widgets-left,.widgets-sortables,#dragHelper,.widget .widget-top,.widget,.widget-control-actions,.tagchecklist,#col-container,#col-left,#col-right,.fileedit-sub{display:block;zoom:100%}p.search-box{position:static;float:right;margin:-3px 0 4px}#editorcontainer #content{overflow:auto;margin:auto;width:98%}form#template div{width:100%}.wp-editor-container .quicktags-toolbar input{overflow:visible;padding:0 4px}#poststuff h2{font-size:1.6em}#bh{margin:7px 10px 0 0;float:right}div#dashboard-widgets{padding-right:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.tagchecklist span a{margin:4px 0 0 -9px}.tablenav .button-secondary,.nav .button-secondary{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}table.ie-fixed{table-layout:fixed}.widefat tr,.widefat th{margin-bottom:0;border-spacing:0}.widefat th input{margin:0 0 0 5px}.widefat .check-column{padding:6px 0 2px}.widefat tbody th.check-column{padding:4px 0 22px}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button-secondary{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.widget-liquid-right .widget,.inactive-sidebar .widget{position:relative}#wpcontent .button-primary-disabled{color:#9fd0d5;background:#298cba}#wpcontent #ajax-loading,#wpcontent .ajax-loading{vertical-align:baseline}#the-comment-list .unapproved tr,#the-comment-list .unapproved td{background-color:#ffffe0}.imgedit-submit{width:300px}#nav-menus-frame,#wpbody,.menu li{zoom:100%}#update-nav-menu #post-body{overflow:hidden}.menu li{min-width:100%}.menu li.sortable-placeholder{min-width:400px}.about-wrap img.element-screenshot{padding:2px}.about-wrap .feature-section img,.about-wrap .feature-section .image-mask{border-width:1px;border-style:solid}.about-wrap .feature-section.three-col img{margin-left:0}.available-theme{display:inline}.available-theme ul{margin:0}.about-wrap .three-col-images img{margin:0 .6% 10px}.about-wrap .three-col-images .last-feature,.about-wrap .three-col-images .first-feature{float:none}* html .row-actions{visibility:visible}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative}* html #editorcontainer{padding:0}* html #poststuff h2{margin-left:0}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #dfdfdf}* html .feature-filter .feature-group li{width:145px}* html .widget-top .widget-title-action a{background:url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px}* html div.widget-liquid-left{width:99%}* html .widgets-sortables{height:50px}* html a#content_resize{right:-2px}* html .widget-title h4{width:205px}* html #removing-widget .in-widget-title{display:none}* html .media-item .pinkynail{height:32px;width:40px}* html .describe .field input.text,* html .describe .field textarea{width:440px}* html input{border:1px solid #dfdfdf}* html .meta-box-sortables .postbox .handlediv{background:transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px}* html .edit-box{display:inline}* html .postbox-container .meta-box-sortables{height:300px}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center}* html #adminmenu{margin-left:-80px}* html .folded #adminmenu{margin-left:-22px}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0}* html #footer{margin:0}* html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle{background:0}* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px}* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -206px}* html #adminmenu div.wp-menu-image{height:29px} \ No newline at end of file diff --git a/wp-admin/css/ie.dev.css b/wp-admin/css/ie.dev.css new file mode 100644 index 0000000..b14f558 --- /dev/null +++ b/wp-admin/css/ie.dev.css @@ -0,0 +1,573 @@ +/* Fixes for IE 7 bugs */ + +.wp-editor-wrap .wp-editor-container textarea.wp-editor-area { + width: 97%; +} + +#post-body.columns-2 #postbox-container-1 { + padding-left: 19px; +} + +.welcome-panel .wp-badge { + position: absolute; +} + +.welcome-panel .welcome-panel-column { + margin: 0 -25px 0 4%; +} + +#wp-fullscreen-title { + width: 97%; +} + +#wp_mce_fullscreen_ifr { + background-color: #f9f9f9; +} + +#wp-fullscreen-tagline { + color: #888; + font-size: 14px; +} + +#adminmenushadow { + display: none; +} + +#adminmenuback { + left: 0; + background-image: none; +} + +#adminmenuwrap { + position: static; +} + +#adminmenu { + position: relative; +} + +#adminmenu li.wp-menu-separator, +#adminmenu li.wp-menu-separator-last { + font-size: 1px; + line-height: 1; +} + +#adminmenu a.menu-top { + border-bottom: 0 none; + border-top: 1px solid #ddd; +} + +#adminmenu .separator { + font-size: 1px; + line-height: 1px; +} + +#adminmenu .wp-submenu ul { + margin: 0; +} + +.folded #adminmenu .wp-submenu ul { + margin-left: 5px; +} + +#adminmenu li.menu-top { + margin-bottom: -2px; +} + +#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow { + display: none; +} + +#wpcontent #adminmenu .wp-submenu li.wp-submenu-head { + padding: 3px 4px 4px 10px; + zoom: 100%; +} + +.js.folded #adminmenu .menu-top { + height: 30px; +} + +.js.folded #adminmenu .wp-submenu { + margin: -1px 0 0 0; +} + +.js.folded #adminmenu li.menu-top { + display: block; + zoom: 100%; +} + +ul#adminmenu { + z-index: 99; +} + +#adminmenu li.menu-top a.menu-top { + min-width: auto; + width: auto; +} + +#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu { + font-style: normal; +} + +#wpcontent #adminmenu .wp-submenu li { + padding: 0; +} + +#collapse-menu { + line-height: 23px; +} + +#wpadminbar .ab-comments-icon { + padding-top: 7px; +} + +table.fixed th, +table.fixed td { + border-top: 1px solid #ddd; +} + +#wpbody-content input.button, +#wpbody-content input.button-primary, +#wpbody-content input.button-secondary, +#wpbody-content input.button-highlighted { + overflow: visible; +} + +#dashboard-widgets #dashboard_quick_press form p.submit #publish { + float: none; +} + +#dashboard-widgets h3 a { + height: 14px; + line-height: 14px; +} + +#dashboard_browser_nag { + color: #fff; +} + +#dashboard_browser_nag .browser-icon { + position: relative; +} + +.tablenav-pages .current-page { + vertical-align: middle; +} + +#wpbody-content .postbox { + border: 1px solid #dfdfdf; +} + +#wpbody-content .postbox h3 { + margin-bottom: -1px; +} + +.major-publishing-actions, +.wp-submenu, +.wp-submenu li, +.wp-menu-toggle, +#template, +#template div, +#editcat, +#addcat { + zoom: 100%; +} + +.wp-menu-arrow { + height: 28px; +} + +.submitbox { + margin-top: 10px; +} + +/* Inline Editor */ +#wpbody-content .quick-edit-row-post .inline-edit-col-left { + width: 39%; +} + +#wpbody-content .inline-edit-row-post .inline-edit-col-center { + width: 19%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-left { + width: 49%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-left { + width: 29%; +} + +.inline-edit-row p.submit { + zoom: 100%; +} + +.inline-edit-row fieldset label span.title { + display: block; + float: left; + width: 5em; +} + +.inline-edit-row fieldset label span.input-text-wrap { + margin-left: 0; + zoom: 100%; +} + +#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input { + line-height: 130%; +} + +#wpbody-content .inline-edit-row .input-text-wrap input { + width: 95%; +} + +#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input { + width: 8em; +} +/* end Inline Editor */ + +#titlediv #title { + width: 98%; +} + +a.button { + line-height: 1.4em; + margin: 1px; + padding: 2px 6px; +} + +#screen-options-wrap { + overflow: hidden; +} + +#the-comment-list .comment-item, +#post-status-info, +#wpwrap, +#wrap, +#postdivrich, +#postdiv, +#poststuff, +.metabox-holder, +#titlediv, +#post-body, +#editorcontainer, +.tablenav, +.widget-liquid-left, +.widget-liquid-right, +#widgets-left, +.widgets-sortables, +#dragHelper, +.widget .widget-top, +.widget, +.widget-control-actions, +.tagchecklist, +#col-container, +#col-left, +#col-right, +.fileedit-sub { + display: block; + zoom: 100%; +} + +p.search-box { + position: static; + float: right; + margin: -3px 0 4px; +} + + +#editorcontainer #content { + overflow: auto; + margin: auto; + width: 98%; +} + +form#template div { + width: 100%; +} + +.wp-editor-container .quicktags-toolbar input { + overflow: visible; + padding: 0 4px; +} + +#poststuff h2 { + font-size: 1.6em; +} + +#bh { + margin: 7px 10px 0 0; + float: right; +} + +/* without this dashboard widgets appear in one column for some screen widths */ +div#dashboard-widgets { + padding-right: 1px; +} + +.tagchecklist span, .tagchecklist span a { + display: inline-block; + display: block; +} + +.tagchecklist span a { + margin: 4px 0 0 -9px; +} + +.tablenav .button-secondary, +.nav .button-secondary { + padding-top: 2px; + padding-bottom: 2px; +} + +.tablenav select { + font-size: 13px; + display: inline-block; + vertical-align: top; + margin-top: 2px; +} + +.tablenav .actions select { + width: 155px; +} + +table.ie-fixed { + table-layout: fixed; +} + +.widefat tr, .widefat th { + margin-bottom: 0; + border-spacing: 0; +} + +.widefat th input { + margin: 0 0 0 5px; +} + +.widefat .check-column { + padding: 6px 0 2px; +} + +.widefat tbody th.check-column { + padding: 4px 0 22px; +} + +.widefat { + empty-cells: show; + border-collapse: collapse; +} + +.tablenav a.button-secondary { + display: inline-block; + padding: 2px 5px; +} + +.inactive-sidebar .widgets-sortables { + padding-bottom: 8px; +} + +#available-widgets .widget-holder { + padding-bottom: 65px; +} + +#widgets-left .inactive { + padding-bottom: 10px; +} + +.widget-liquid-right .widget, +.inactive-sidebar .widget { + position: relative; +} + +#wpcontent .button-primary-disabled { + color: #9FD0D5; + background: #298CBA; +} + +#wpcontent #ajax-loading, +#wpcontent .ajax-loading { + vertical-align: baseline; +} + +#the-comment-list .unapproved tr, +#the-comment-list .unapproved td { + background-color: #ffffe0; +} + +.imgedit-submit { + width: 300px; +} + +#nav-menus-frame, +#wpbody, +.menu li { + zoom: 100%; +} + +#update-nav-menu #post-body { + overflow:hidden; +} + +.menu li { + min-width: 100%; +} + +.menu li.sortable-placeholder { + min-width: 400px; +} + +.about-wrap img.element-screenshot { + padding: 2px; +} + +.about-wrap .feature-section img, +.about-wrap .feature-section .image-mask { + border-width: 1px; + border-style: solid; +} + +.about-wrap .feature-section.three-col img { + margin-left: 0; +} + +.available-theme { + display: inline; +} + +.available-theme ul { + margin: 0; +} + +.about-wrap .three-col-images img { + margin: 0 0.6% 10px; +} + +.about-wrap .three-col-images .last-feature, +.about-wrap .three-col-images .first-feature { + float: none; +} + +/* IE6 leftovers */ +* html .row-actions { + visibility: visible; +} + +* html div.widget-liquid-left, +* html div.widget-liquid-right { + display: block; + position: relative; +} + +* html #editorcontainer { + padding: 0; +} + +* html #poststuff h2 { + margin-left: 0; +} + +* html .stuffbox, +* html .stuffbox input, +* html .stuffbox textarea { + border: 1px solid #DFDFDF; +} + +* html .feature-filter .feature-group li { + width: 145px; +} + +* html .widget-top .widget-title-action a { + background: url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px; +} + +* html div.widget-liquid-left { + width: 99%; +} + +* html .widgets-sortables { + height: 50px; +} + +* html a#content_resize { + right: -2px; +} + +* html .widget-title h4 { + width: 205px; +} + +* html #removing-widget .in-widget-title { + display: none; +} + +* html .media-item .pinkynail { + height: 32px; + width: 40px; +} + +* html .describe .field input.text, +* html .describe .field textarea { + width: 440px; +} + +* html input { + border: 1px solid #dfdfdf; +} + +* html .meta-box-sortables .postbox .handlediv { + background: transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px; +} + +* html .edit-box { + display: inline; +} + +* html .postbox-container .meta-box-sortables { + height: 300px; +} + +* html #wpbody-content #screen-options-link-wrap { + display: inline-block; + width: 150px; + text-align: center; +} + +* html #wpbody-content #contextual-help-link-wrap { + display: inline-block; + width: 100px; + text-align: center; +} + +* html #adminmenu { + margin-left: -80px; +} + +* html .folded #adminmenu { + margin-left: -22px; +} + +* html #wpcontent #adminmenu li.menu-top { + display: inline; + padding: 0; + margin: 0; +} + +* html #footer { + margin: 0; +} + +* html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle { + background: none; +} + +* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle { + background: url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px; +} + +* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle { + background: url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -206px; +} + +* html #adminmenu div.wp-menu-image { + height: 29px; +} diff --git a/wp-admin/css/install.css b/wp-admin/css/install.css new file mode 100644 index 0000000..184969b --- /dev/null +++ b/wp-admin/css/install.css @@ -0,0 +1 @@ +html{background:#f9f9f9}body{background:#fff;color:#333;font-family:sans-serif;margin:2em auto;padding:1em 2em;-webkit-border-radius:3px;border-radius:3px;border:1px solid #dfdfdf;max-width:700px}a{color:#21759b;text-decoration:none}a:hover{color:#d54e21}h1{border-bottom:1px solid #dadada;clear:both;color:#666;font:24px Georgia,"Times New Roman",Times,serif;margin:30px 0 0 0;padding:0;padding-bottom:7px}h2{font-size:16px}p,li,dd,dt{padding-bottom:2px;font-size:14px;line-height:1.5}code,.code{font-size:14px}ul,ol,dl{padding:5px 5px 5px 22px}a img{border:0}abbr{border:0;font-variant:normal}#logo{margin:6px 0 14px 0;border-bottom:0;text-align:center}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.submit input,.button,.button-secondary{font-family:sans-serif;text-decoration:none;font-size:14px!important;line-height:16px;padding:6px 12px;cursor:pointer;border:1px solid #bbb;color:#464646;-webkit-border-radius:15px;border-radius:15px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.button:hover,.button-secondary:hover,.submit input:hover{color:#000;border-color:#666}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top}textarea{border:1px solid #dfdfdf;-webkit-border-radius:3px;border-radius:3px;font-family:sans-serif;width:695px}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px;padding:10px 20px 10px 0;border-bottom:8px solid #fff;font-size:14px;vertical-align:top}.form-table th{font-size:14px;text-align:left;padding:16px 20px 10px 0;border-bottom:8px solid #fff;width:140px;vertical-align:top}.form-table code{line-height:18px;font-size:14px}.form-table p{margin:4px 0 0 0;font-size:11px}.form-table input{line-height:20px;font-size:15px;padding:2px;border:1px #dfdfdf solid;-webkit-border-radius:3px;border-radius:3px;font-family:sans-serif}.form-table input[type=text],.form-table input[type=password]{width:206px}.form-table th p{font-weight:normal}.form-table.install-success td{vertical-align:middle;padding:16px 20px 10px 0}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}#pass-strength-result{background-color:#eee;border-color:#ddd!important;border-style:solid;border-width:1px;margin:5px 5px 5px 0;padding:5px;text-align:center;width:200px;display:none}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important}.message{border:1px solid #e6db55;padding:.3em .6em;margin:5px 0 15px;background-color:#ffffe0}body.rtl{font-family:Tahoma,arial}.rtl h1{font-family:arial;margin:5px -4px 0 0}.rtl ul,.rtl ol{padding:5px 22px 5px 5px}.rtl .step,.rtl th,.rtl .form-table th{text-align:right}.rtl .submit input,.rtl .button,.rtl .button-secondary{margin-right:0}.rtl #dbname,.rtl #uname,.rtl #pwd,.rtl #dbhost,.rtl #prefix,.rtl #user_login,.rtl #admin_email,.rtl #pass1,.rtl #pass2{direction:ltr} \ No newline at end of file diff --git a/wp-admin/css/install.dev.css b/wp-admin/css/install.dev.css new file mode 100644 index 0000000..d77260a --- /dev/null +++ b/wp-admin/css/install.dev.css @@ -0,0 +1,268 @@ +html { + background: #f9f9f9; +} + +body { + background: #fff; + color: #333; + font-family: sans-serif; + margin: 2em auto; + padding: 1em 2em; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 1px solid #dfdfdf; + max-width: 700px; +} + +a { + color: #21759B; + text-decoration: none; +} + +a:hover { + color: #D54E21; +} + +h1 { + border-bottom: 1px solid #dadada; + clear: both; + color: #666; + font: 24px Georgia, "Times New Roman", Times, serif; + margin: 30px 0 0 0; + padding: 0; + padding-bottom: 7px; +} + +h2 { + font-size: 16px; +} + +p, li, dd, dt { + padding-bottom: 2px; + font-size: 14px; + line-height: 1.5; +} + +code, .code { + font-size: 14px; +} + +ul, ol, dl { + padding: 5px 5px 5px 22px; +} + +a img { + border:0 +} +abbr { + border: 0; + font-variant: normal; +} +#logo { + margin: 6px 0 14px 0; + border-bottom: none; + text-align:center +} +.step { + margin: 20px 0 15px; +} +.step, th { + text-align: left; + padding: 0; +} + +.submit input, .button, .button-secondary { + font-family: sans-serif; + text-decoration: none; + font-size: 14px !important; + line-height: 16px; + padding: 6px 12px; + cursor: pointer; + border: 1px solid #bbb; + color: #464646; + -webkit-border-radius: 15px; + border-radius: 15px; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} + +.button:hover, .button-secondary:hover, .submit input:hover { + color: #000; + border-color: #666; +} + +.button, .submit input, .button-secondary { + background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top; +} + +.button:active, .submit input:active, .button-secondary:active { + background: #eee url(../images/white-grad-active.png) repeat-x scroll left top; +} + +textarea { + border: 1px solid #dfdfdf; + -webkit-border-radius: 3px; + border-radius: 3px; + font-family: sans-serif; + width: 695px; +} + +.form-table { + border-collapse: collapse; + margin-top: 1em; + width: 100%; +} + +.form-table td { + margin-bottom: 9px; + padding: 10px 20px 10px 0; + border-bottom: 8px solid #fff; + font-size: 14px; + vertical-align: top +} + +.form-table th { + font-size: 14px; + text-align: left; + padding: 16px 20px 10px 0; + border-bottom: 8px solid #fff; + width: 140px; + vertical-align: top; +} + +.form-table code { + line-height: 18px; + font-size: 14px; +} + +.form-table p { + margin: 4px 0 0 0; + font-size: 11px; +} + +.form-table input { + line-height: 20px; + font-size: 15px; + padding: 2px; + border: 1px #DFDFDF solid; + -webkit-border-radius: 3px; + border-radius: 3px; + font-family: sans-serif; +} + +.form-table input[type=text], +.form-table input[type=password] { + width: 206px; +} + +.form-table th p { + font-weight: normal; +} + +.form-table.install-success td { + vertical-align: middle; + padding: 16px 20px 10px 0; +} + +.form-table.install-success td p { + margin: 0; + font-size: 14px; +} + +.form-table.install-success td code { + margin: 0; + font-size: 18px; +} + +#error-page { + margin-top: 50px; +} + +#error-page p { + font-size: 14px; + line-height: 18px; + margin: 25px 0 20px; +} + +#error-page code, .code { + font-family: Consolas, Monaco, monospace; +} + +#pass-strength-result { + background-color: #eee; + border-color: #ddd !important; + border-style: solid; + border-width: 1px; + margin: 5px 5px 5px 0; + padding: 5px; + text-align: center; + width: 200px; + display: none; +} + +#pass-strength-result.bad { + background-color: #ffb78c; + border-color: #ff853c !important; +} + +#pass-strength-result.good { + background-color: #ffec8b; + border-color: #ffcc00 !important; +} + +#pass-strength-result.short { + background-color: #ffa0a0; + border-color: #f04040 !important; +} + +#pass-strength-result.strong { + background-color: #c3ff88; + border-color: #8dff1c !important; +} + +.message { + border: 1px solid #e6db55; + padding: 0.3em 0.6em; + margin: 5px 0 15px; + background-color: #ffffe0; +} + +/* install-rtl */ +body.rtl { + font-family: Tahoma, arial; +} + +.rtl h1 { + font-family: arial; + margin: 5px -4px 0 0; +} + +.rtl ul, +.rtl ol { + padding: 5px 22px 5px 5px; +} + +.rtl .step, +.rtl th, +.rtl .form-table th { + text-align: right; +} + +.rtl .submit input, +.rtl .button, +.rtl .button-secondary { + margin-right: 0; +} + +.rtl #dbname, +.rtl #uname, +.rtl #pwd, +.rtl #dbhost, +.rtl #prefix, +.rtl #user_login, +.rtl #admin_email, +.rtl #pass1, +.rtl #pass2 { + direction: ltr; +} diff --git a/wp-admin/css/media-rtl.css b/wp-admin/css/media-rtl.css new file mode 100644 index 0000000..5f51b60 --- /dev/null +++ b/wp-admin/css/media-rtl.css @@ -0,0 +1 @@ +body#media-upload ul#sidemenu{left:auto;right:0}#search-filter{text-align:left}.align .field label{padding:0 23px 0 0;margin:0 3px 0 1em}.image-align-none-label,.image-align-left-label,.image-align-center-label,.image-align-right-label{background-position:center right}tr.image-size label{margin:0 5px 0 0}.file-error{margin:0 50px 5px 0}.progress{left:auto;right:0}.describe td{padding:0 0 0 5px}#media-upload .describe th.label{text-align:right}.menu_order{float:left}.media-upload-form label.form-help,td.help,#media-upload p.help,#media-upload label.help{font-family:Tahoma,Arial}#gallery-settings #basic th.label{padding:5px 0 5px 5px}#gallery-settings .title,h3.media-title{font-family:Tahoma,Arial}#gallery-settings .describe th.label{text-align:right}#gallery-settings label,#gallery-settings legend{margin-right:0;margin-left:15px}#gallery-settings .align .field label{margin:0 3px 0 1em}#sort-buttons{margin:3px 0 -8px 25px;text-align:left}#sort-buttons #asc,#sort-buttons #showall{padding-left:0;padding-right:5px}#sort-buttons span{margin-right:0;margin-left:25px} \ No newline at end of file diff --git a/wp-admin/css/media-rtl.dev.css b/wp-admin/css/media-rtl.dev.css new file mode 100644 index 0000000..0c3ccb3 --- /dev/null +++ b/wp-admin/css/media-rtl.dev.css @@ -0,0 +1,71 @@ +body#media-upload ul#sidemenu { + left: auto; + right: 0; +} +#search-filter { + text-align: left; +} +/* specific to the image upload form */ +.align .field label { + padding: 0 23px 0 0; + margin: 0 3px 0 1em; +} +.image-align-none-label, .image-align-left-label, .image-align-center-label, .image-align-right-label { + background-position: center right; +} +tr.image-size label { + margin: 0 5px 0 0; +} +.file-error { + margin: 0 50px 5px 0; +} +.progress { + left: auto; + right: 0; +} +.describe td { + padding: 0 0 0 5px; +} + +/* Specific to Uploader */ +#media-upload .describe th.label { + text-align: right; +} +.menu_order { + float: left; +} +.media-upload-form label.form-help, td.help, #media-upload p.help, #media-upload label.help { + font-family: Tahoma, Arial; +} +#gallery-settings #basic th.label { + padding: 5px 0 5px 5px; +} +#gallery-settings .title, h3.media-title { + font-family: Tahoma, Arial; +} +#gallery-settings .describe th.label { + text-align: right; +} +#gallery-settings label, +#gallery-settings legend { + margin-right: 0; + margin-left: 15px; +} +#gallery-settings .align .field label { + margin: 0 3px 0 1em; +} +#sort-buttons { + margin: 3px 0 -8px 25px; + text-align: left; +} + +#sort-buttons #asc, +#sort-buttons #showall { + padding-left: 0; + padding-right: 5px; +} + +#sort-buttons span { + margin-right: 0; + margin-left: 25px; +} diff --git a/wp-admin/css/media.css b/wp-admin/css/media.css new file mode 100644 index 0000000..272ce3b --- /dev/null +++ b/wp-admin/css/media.css @@ -0,0 +1 @@ +div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid}body#media-upload ul#sidemenu{font-weight:normal;margin:0 5px;left:0;bottom:-1px;float:none;overflow:hidden}form{margin:1em}#search-filter{text-align:right}th{position:relative}.media-upload-form label.form-help,td.help{font-family:sans-serif;font-style:italic;font-weight:normal}.media-upload-form p.help{margin:0;padding:0}.media-upload-form fieldset{width:100%;border:0;text-align:justify;margin:0 0 1em 0;padding:0}.image-align-none-label{background:url(../images/align-none.png) no-repeat center left}.image-align-left-label{background:url(../images/align-left.png) no-repeat center left}.image-align-center-label{background:url(../images/align-center.png) no-repeat center left}.image-align-right-label{background:url(../images/align-right.png) no-repeat center left}tr.image-size td{width:460px}tr.image-size div.image-size-item{margin:0 0 5px}#library-form .progress,#gallery-form .progress,.insert-gallery,.describe.startopen,.describe.startclosed{display:none}.media-item .thumbnail{max-width:128px;max-height:128px}thead.media-item-info tr{background-color:transparent}.form-table thead.media-item-info{border:8px solid #fff}abbr.required{text-decoration:none;border:0}.describe label{display:inline}.describe td.error{padding:2px 8px}.describe td.A1{width:132px}.describe input[type="text"],.describe textarea{width:460px;border-width:1px;border-style:solid}#media-upload p.ml-submit{padding:1em 0}#media-upload p.help,#media-upload label.help{font-family:sans-serif;font-style:italic;font-weight:normal}#media-upload .ui-sortable .media-item{cursor:move}#media-upload tr.image-size{margin-bottom:1em;height:3em}#media-upload #filter{width:623px}#media-upload #filter .subsubsub{margin:8px 0}#filter .tablenav select{border-style:solid;border-width:1px;padding:2px;vertical-align:top;width:auto}#media-upload .del-attachment{display:none;margin:5px 0}.menu_order{float:right;font-size:11px;margin:10px 10px 0}.menu_order_input{border:1px solid #ddd;font-size:10px;padding:1px;width:23px}.ui-sortable-helper{background-color:#fff;border:1px solid #aaa;opacity:.6;filter:alpha(opacity=60)}#media-upload th.order-head{width:20%;text-align:center}#media-upload th.actions-head{width:25%;text-align:center}#media-upload a.wp-post-thumbnail{margin:0 20px}#media-items a.delete{display:block;float:right}#media-upload .widefat{width:626px;border-style:solid solid none}.sorthelper{height:37px;width:623px;display:block}#gallery-settings th.label{width:160px}#gallery-settings #basic th.label{padding:5px 5px 5px 0}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #dadada}h3.media-title{font-size:1.6em}h4.media-sub-title{border-bottom:1px solid #dadada;font-size:1.3em;margin:12px;padding:0 0 3px}#gallery-settings .title,h3.media-title,h4.media-sub-title{font-family:Georgia,"Times New Roman",Times,serif;font-weight:normal;color:#5a5a5a}#gallery-settings .describe td{vertical-align:middle;height:3em}#gallery-settings .describe th.label{padding-top:.5em;text-align:left}#gallery-settings .describe{padding:5px;width:615px;clear:both;cursor:default}#gallery-settings .describe select{width:15em}#gallery-settings .describe select option,#gallery-settings .describe td{padding:0}#gallery-settings label,#gallery-settings legend{font-size:13px;color:#464646;margin-right:15px}#gallery-settings .align .field label{margin:0 1em 0 3px}#gallery-settings p.ml-submit{border-top:1px solid #dfdfdf}#gallery-settings select#columns{width:6em}#sort-buttons{font-size:.8em;margin:3px 25px -8px 0;text-align:right;max-width:625px}#sort-buttons a{text-decoration:none}#sort-buttons #asc,#sort-buttons #showall{padding-left:5px}#sort-buttons span{margin-right:25px}p.media-types{margin:1em}tr.not-image{display:none}table.not-image tr.not-image{display:table-row}table.not-image tr.image-only{display:none} \ No newline at end of file diff --git a/wp-admin/css/media.dev.css b/wp-admin/css/media.dev.css new file mode 100644 index 0000000..24b163e --- /dev/null +++ b/wp-admin/css/media.dev.css @@ -0,0 +1,329 @@ +/* Styles for the media library iframe (not used on the Library screen) */ + +div#media-upload-header { + margin: 0; + padding: 5px 5px 0; + font-weight: bold; + position: relative; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +body#media-upload ul#sidemenu { + font-weight: normal; + margin: 0 5px; + left: 0; + bottom: -1px; + float: none; + overflow: hidden; +} + +form { + margin: 1em; +} + +#search-filter { + text-align: right; +} + +th { + position: relative; +} + +.media-upload-form label.form-help, td.help { + font-family: sans-serif; + font-style: italic; + font-weight: normal; +} + +.media-upload-form p.help { + margin: 0; + padding: 0; +} + +.media-upload-form fieldset { + width: 100%; + border: none; + text-align: justify; + margin: 0 0 1em 0; + padding: 0; +} + +/* specific to the image upload form */ + +.image-align-none-label { + background: url(../images/align-none.png) no-repeat center left; +} + +.image-align-left-label { + background: url(../images/align-left.png) no-repeat center left; +} + +.image-align-center-label { + background: url(../images/align-center.png) no-repeat center left; +} + +.image-align-right-label { + background: url(../images/align-right.png) no-repeat center left; +} + +tr.image-size td { + width: 460px; +} + +tr.image-size div.image-size-item { + margin: 0 0 5px; +} + +#library-form .progress, +#gallery-form .progress, +.insert-gallery, +.describe.startopen, +.describe.startclosed { + display: none; +} + +.media-item .thumbnail { + max-width: 128px; + max-height: 128px; +} + +thead.media-item-info tr { + background-color: transparent; +} + +.form-table thead.media-item-info { + border: 8px solid #fff; +} + +abbr.required { + text-decoration: none; + border: none; +} + +.describe label { + display: inline; +} + +.describe td.error { + padding: 2px 8px; +} + +.describe td.A1 { + width: 132px; +} + +.describe input[type="text"], +.describe textarea { + width: 460px; + border-width: 1px; + border-style: solid; +} + +/* Specific to Uploader */ + +#media-upload p.ml-submit { + padding: 1em 0; +} + +#media-upload p.help, +#media-upload label.help { + font-family: sans-serif; + font-style: italic; + font-weight: normal; +} + +#media-upload .ui-sortable .media-item { + cursor: move; +} + +#media-upload tr.image-size { + margin-bottom: 1em; + height: 3em; +} + +#media-upload #filter { + width: 623px; +} + +#media-upload #filter .subsubsub { + margin: 8px 0; +} + +#filter .tablenav select { + border-style: solid; + border-width: 1px; + padding: 2px; + vertical-align: top; + width: auto; +} + +#media-upload .del-attachment { + display: none; + margin: 5px 0; +} + +.menu_order { + float: right; + font-size: 11px; + margin: 10px 10px 0; +} + +.menu_order_input { + border: 1px solid #ddd; + font-size: 10px; + padding: 1px; + width: 23px; +} + +.ui-sortable-helper { + background-color: #fff; + border: 1px solid #aaa; + opacity: 0.6; + filter: alpha(opacity=60); +} + +#media-upload th.order-head { + width: 20%; + text-align: center; +} + +#media-upload th.actions-head { + width: 25%; + text-align: center; +} + +#media-upload a.wp-post-thumbnail { + margin: 0 20px; +} + +#media-items a.delete { + display: block; + float: right; +} + +#media-upload .widefat { + width: 626px; + border-style: solid solid none; +} + +.sorthelper { + height: 37px; + width: 623px; + display: block; +} + +#gallery-settings th.label { + width: 160px; +} + +#gallery-settings #basic th.label { + padding: 5px 5px 5px 0; +} + +#gallery-settings .title { + clear: both; + padding: 0 0 3px; + font-size: 1.6em; + border-bottom: 1px solid #DADADA; +} + +h3.media-title { + font-size: 1.6em; +} + +h4.media-sub-title { + border-bottom: 1px solid #DADADA; + font-size: 1.3em; + margin: 12px; + padding: 0 0 3px; +} + +#gallery-settings .title, +h3.media-title, +h4.media-sub-title { + font-family: Georgia,"Times New Roman",Times,serif; + font-weight: normal; + color: #5A5A5A; +} + +#gallery-settings .describe td { + vertical-align: middle; + height: 3em; +} + +#gallery-settings .describe th.label { + padding-top: .5em; + text-align: left; +} + +#gallery-settings .describe { + padding: 5px; + width: 615px; + clear: both; + cursor: default; +} + +#gallery-settings .describe select { + width: 15em; +} + +#gallery-settings .describe select option, +#gallery-settings .describe td { + padding: 0; +} + +#gallery-settings label, +#gallery-settings legend { + font-size: 13px; + color: #464646; + margin-right: 15px; +} + +#gallery-settings .align .field label { + margin: 0 1em 0 3px; +} + +#gallery-settings p.ml-submit { + border-top: 1px solid #dfdfdf; +} + +#gallery-settings select#columns { + width: 6em; +} + +#sort-buttons { + font-size: 0.8em; + margin: 3px 25px -8px 0; + text-align: right; + max-width: 625px; +} + +#sort-buttons a { + text-decoration: none; +} + +#sort-buttons #asc, +#sort-buttons #showall { + padding-left: 5px; +} + +#sort-buttons span { + margin-right: 25px; +} + +p.media-types { + margin: 1em; +} + +tr.not-image { + display: none; +} + +table.not-image tr.not-image { + display: table-row; +} + +table.not-image tr.image-only { + display: none; +} diff --git a/wp-admin/css/wp-admin-rtl.css b/wp-admin/css/wp-admin-rtl.css new file mode 100644 index 0000000..7cae6f1 --- /dev/null +++ b/wp-admin/css/wp-admin-rtl.css @@ -0,0 +1 @@ +ol{margin-left:0;margin-right:2em}.code,code{font-family:monospace;direction:ltr}.quicktags,.search{font:12px Tahoma,Arial,sans-serif}.icon32{float:right;margin-right:0;margin-left:8px}.icon16{float:right;margin-right:-8px;margin-left:0}.howto{font-style:normal;font-family:Tahoma,Arial,sans-serif}p.install-help{font-style:normal}#doaction,#doaction2,#post-query-submit{margin-right:0;margin-left:8px}#timezone_string option{margin-left:0;margin-right:1em}#pass-strength-result{float:right;margin:13px 1px 5px 5px}p.search-box{float:left}input[type=password]{direction:ltr}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat left center}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete li{text-align:right}#delete-action{float:right}#publishing-action{float:left}#post-body .misc-pub-section{border-right:0;border-left-width:1px;border-left-style:solid}#post-body .misc-pub-section-last{border-left:0}#minor-publishing-actions{padding:10px 8px 2px 10px;text-align:left}#save-post{float:right}#minor-publishing .ajax-loading{padding:3px 4px 0 0;float:right}.preview{float:left}#sticky-span{margin-left:0;margin-right:18px}.side-info ul{padding-left:0;padding-right:18px}td.action-links,th.action-links{text-align:left}.describe .del-link{padding-left:0;padding-right:5px}form.upgrade .hint{font-style:normal}#ajax-response.alignleft{margin-left:0;margin-right:2em}#quicktags{background-position:right top}#ed_reply_toolbar input{margin:1px 1px 1px 2px}#wphead{height:32px;margin-left:15px;margin-right:2px}#header-logo{float:right}#wphead h1{float:right}#screen-meta-links{margin-right:0;margin-left:24px}#screen-meta{margin-right:5px;margin-left:15px}#screen-options-link-wrap,#contextual-help-link-wrap{float:left;margin-left:0;margin-right:6px}#screen-meta-links a.show-settings{padding-right:6px;padding-left:16px}.toggle-arrow{background-position:top right}.toggle-arrow-active{background-position:bottom right}.metabox-prefs label{padding-right:0;padding-left:15px}.metabox-prefs label input{margin-right:2px;margin-left:5px}#contextual-help-wrap{margin-left:0;margin-right:-4px}#contextual-help-back{left:170px;right:150px}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;right:150px;border-right-width:1px;border-left-width:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px}.contextual-help-tabs{float:right}.contextual-help-tabs a{padding-left:5px;padding-right:12px}.contextual-help-tabs .active{margin-right:0;margin-left:-1px}.contextual-help-tabs .active,.contextual-help-tabs-wrap{border-left:0;border-right-width:1px}.help-tab-content{margin-right:0;margin-left:22px}.help-tab-content li{margin-left:0;margin-right:18px}.contextual-help-sidebar{float:left;padding-right:12px;padding-left:8px}#adminmenuback,#adminmenuwrap{border-width:0 0 0 1px}#adminmenushadow{right:auto;left:0}#adminmenu li .wp-submenu{left:auto;right:146px}.folded #adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{left:auto;right:26px}#adminmenu .wp-submenu.sub-open,#adminmenu li.focused.wp-not-current-submenu .wp-submenu,.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu{padding:0 0 8px 8px}#adminmenu div.wp-menu-image{float:right}#adminmenu li li{margin-left:0;margin-right:8px}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}#adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:18px}.folded #adminmenu li li{margin-left:inherit;margin-right:0}.folded #adminmenu li li a{padding-left:inherit;padding-right:0}.wp-menu-arrow{right:0;-moz-transform:translate(-139px);-webkit-transform:translate(-139px);-o-transform:translate(-139px);-ms-transform:translate(-139px);transform:translate(-139px)}.ie8 .wp-menu-arrow{right:-20px}#adminmenu .wp-menu-arrow div{left:-8px;width:16px}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(-138px);-webkit-transform:translate(-138px);-o-transform:translate(-138px);-ms-transform:translate(-138px);transform:translate(-138px)}.folded .wp-menu-arrow{-moz-transform:translate(-27px);-webkit-transform:translate(-27px);-o-transform:translate(-27px);-ms-transform:translate(-27px);transform:translate(-27px)}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{border-style:solid solid none none;border-width:1px 1px 0 0}#adminmenu .wp-menu-image img{float:right;padding:5px 2px 0 0}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 10px 5px 4px}#adminmenu li .wp-submenu-wrap{border-width:1px 0 1px 1px;border-style:solid none solid solid;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.folded #adminmenu .wp-submenu ul{border-width:0 1px 0 0}.folded #adminmenu .wp-submenu a{padding-left:0;padding-right:10px}.folded #adminmenu a.wp-has-submenu{margin-left:0;margin-right:40px}#adminmenu .wp-menu-toggle{clear:left;float:left;padding:1px 0 0 2px}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:7px}#collapse-button{float:right}@media only screen and (max-width:900px){#adminmenu li .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu{left:auto;right:26px}#adminmenu li.focused.wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open{padding:0 0 8px 8px}.folded #adminmenu .wp-not-current-submenu li a{padding-left:0;padding-right:12px}#adminmenu li li,#adminmenu li li a{padding-left:inherit;padding-right:0}.wp-menu-arrow{-moz-transform:translate(-27px);-webkit-transform:translate(-27px);-o-transform:translate(-27px);-ms-transform:translate(-27px);transform:translate(-27px)}#adminmenu .wp-submenu ul{border-width:0 1px 0 0}#adminmenu .wp-submenu a{padding-left:0;padding-right:10px}#adminmenu a.wp-has-submenu{margin-left:0;margin-right:40px}body #wpcontent{margin-left:0;margin-right:52px}body .wp-admin #footer{margin-left:15px;margin-right:52px}}.post-com-count-wrapper{font-family:Tahoma,Arial,sans-serif}.column-response .post-com-count{float:right;margin-right:0;margin-left:5px}.response-links{float:right}.widefat th{font-family:Tahoma,Arial,sans-serif}.widefat td p{margin:2px 0 .8em}.postbox-container{float:right}.postbox .handlediv{float:left}#the-comment-list p.comment-author img{float:right;margin-right:0;margin-left:8px}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:0;padding-left:125px}.welcome-panel .welcome-panel-close{right:auto;left:10px}.welcome-panel .welcome-panel-close:before{left:auto;right:-12px}.welcome-panel .wp-badge{float:right}.welcome-panel-content .about-description,.welcome-panel h3{margin-left:0;margin-right:190px}.welcome-panel .welcome-panel-column{margin:0 -25px 0 5%;padding-left:0;padding-right:25px;float:right}.welcome-panel .welcome-panel-column.welcome-panel-last{margin-right:auto;padding-right:0;margin-left:0}.welcome-panel h4 .icon16{margin-left:0;margin-right:-32px}.welcome-panel .welcome-panel-column-container{padding:0 25px 0 0}.welcome-panel .welcome-panel-column ul{margin:1.6em 1.3em 1em 1em}.welcome-panel .welcome-panel-column li{padding-left:0;padding-right:2px}.fixed .column-comments{text-align:right}.fixed .column-comments .vers{padding-left:0;padding-right:3px}.fixed .column-comments a{float:right}.sorting-indicator{margin-left:0;margin-right:7px}th.sortable a span,th.sorted a span{float:right}.tablenav-pages a{margin-right:0;margin-left:1px}.tablenav-pages .next-page{margin-left:0;margin-right:2px}.tablenav a.button-secondary{margin:3px 0 0 8px}.tablenav .tablenav-pages{float:left}.tablenav .displaying-num{margin-right:0;margin-left:10px;font-family:Tahoma,Arial,sans-serif;font-style:normal}.tablenav .actions{padding:2px 0 0 8px}.tablenav .delete{margin-right:0;margin-left:20px}.view-switch{float:left}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-left:0;margin-right:-10px}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex}#posts-filter fieldset legend{padding:0 1px .2em 0}#wpbody-content .inline-edit-row fieldset{float:right}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 1px 0 0}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left}.inline-edit-row fieldset label span.title{float:right}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;margin-right:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{padding-right:0;padding-left:.5em}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:0;margin-left:.5em}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Tahoma,Arial,sans-serif;font-style:normal}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:Tahoma,Arial,sans-serif}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles div a{float:right;margin:3px -2px 0 3px;overflow:hidden;text-indent:-9999px}#post-body-content{float:right}#poststuff #post-body.columns-2{margin-left:300px;margin-right:0}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;margin-right:0}@media only screen and (max-width:850px){#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0}}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{right:0}#sample-permalink{direction:ltr}#sample-permalink #editable-post-name{unicode-bidi:embed}#wp-fullscreen-title-prompt-text{left:auto;right:0}.postarea h3 label{float:right}.submitbox .submit{text-align:right}.inside-submitbox #post_status{margin:2px -2px 2px 0}.submitbox .submit input{margin-right:0;margin-left:4px}#normal-sortables .postbox .submit{float:left}.taxonomy div.tabs-panel{margin:0 125px 0 5px}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{font-style:normal}#commentsdiv img.waiting{padding-left:0;padding-right:5px}#post-body .add-menu-item-tabs li.tabs{border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}#post-body .tagsdiv #newtag{margin-right:0;margin-left:5px}.autosave-info{padding:2px 2px 2px 15px;text-align:left}#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-rtl.gif) no-repeat scroll left bottom;cursor:sw-resize}.curtime #timestamp{background-position:right top;padding-left:0;padding-right:18px}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{margin:8px 8px 8px 0}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace}.category-adder{margin-left:0;margin-right:120px}#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 5px 0 -120px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:0;margin-right:18px}#post-body .add-menu-item-tabs li.tabs{border-style:solid solid solid none;border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px}p.help,p.description,span.description,.form-wrap p{font-style:normal;font-family:Tahoma,Arial,sans-serif}.taghint{margin:15px 12px -24px 0}#poststuff .tagsdiv .howto{margin:0 8px 6px 0}.ac_results li{text-align:right}.links-table th{text-align:right}#wpbody-content .describe th{text-align:right}.describe .media-item-info .A1B1{padding:0 10px 0 0}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{padding:0 23px 0 0;margin:0 3px 0 1em}.media-upload-form tr.image-size label{margin:0 5px 0 0}#wpbody-content .describe p.help{padding:0 5px 0 0}.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{float:left;margin-right:0;margin-left:15px}.media-item .error-div a.dismiss{padding:0 15px 0 0}.media-item .error-div{padding-left:0;padding-right:10px}.media-item .pinkynail{float:right}.media-item .describe td{padding:0 0 8px 8px}.media-item .progress{float:left;margin:6px 0 0 10px}#find-posts-response .found-radio{padding:5px 8px 0 0}.find-box-search label{padding-right:0;padding-left:6px}.find-box #resize-se{right:auto;left:1px}form.upgrade .hint{font-style:normal}.imgedit-menu div{float:right}.imgedit-help{font-style:normal}.imgedit-submit-btn{margin-left:0;margin-right:20px}.form-table th{text-align:right}.form-table input.tog{margin-right:0;margin-left:2px;float:right}.form-table table.color-palette{float:right}#replysubmit img.waiting,.inline-edit-save img.waiting{float:left}#replysubmit .button{margin-right:0;margin-left:5px}#edithead .inside{float:right;padding:3px 5px 2px 0}.comment-ays th{border-right-style:none;border-left-style:solid;border-right-width:0;border-left-width:1px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{margin-left:8px}#comment-status-radio input{margin:2px 0 5px 3px}h3.available-themes{float:right}.available-theme{margin-right:0;margin-left:10px;padding:20px 0 20px 20px}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:right;padding-right:0;padding-left:10px;margin-right:0;margin-left:10px;border-right:0;border-left:1px solid #dfdfdf}.available-theme .action-links li{padding-left:8px;margin-left:8px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-left:0;margin-right:0;border-left:0}.available-theme .action-links .delete-theme{float:left;margin-left:0;margin-right:8px}.available-theme .action-links p{float:right}#current-theme.has-screenshot{padding-left:0;padding-right:330px}#current-theme h4 span{margin-left:0;margin-right:20px}#current-theme img{float:right;width:300px;margin-left:0;margin-right:-330px}.theme-options .load-customize{margin-right:0;margin-left:30px;float:right}.theme-options span{float:right;margin-right:0;margin-left:10px}.theme-options ul{float:right}@media only screen and (max-width:1200px){#current-theme.has-screenshot{padding-right:270px}#current-theme img{margin-right:-270px;width:240px}}#broken-themes{text-align:right}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{margin:0 0 20px 20px}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:0;margin-left:10px}.nav-tab{margin:0 0 -1px 6px}h2 .nav-tab{font-family:Tahoma,Arial,sans-serif}.plugins .desc ul,.plugins .desc ol{margin:0 2em 0 0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:0;padding-left:12px}#profile-page .form-table #rich_editing{margin-right:0;margin-left:5px}#profile-page #pass1,#profile-page #pass2,#profile-page #user_login{direction:ltr}#your-profile legend{font-family:Tahoma,Arial,sans-serif}.pressthis a span{background-position:right 5px;padding:8px 27px 8px 11px}.pressthis a:after{right:auto;left:10px;background:transparent;transform:skew(-20deg) rotate(-6deg);-webkit-transform:skew(-20deg) rotate(-6deg);-moz-transform:skew(-20deg) rotate(-6deg)}.pressthis a:hover:after{transform:skew(-20deg) rotate(-9deg);-webkit-transform:skew(-20deg) rotate(-9deg);-moz-transform:skew(-20deg) rotate(-9deg)}#utc-time,#local-time{padding-left:0;padding-right:25px;font-style:normal;font-family:Tahoma,Arial,sans-serif}#footer{margin-left:20px}#wpcontent,#footer{margin-right:165px}.wrap.about-wrap{margin-left:40px;margin-right:20px}.about-wrap h1,.about-text{margin-right:0;margin-left:200px}.about-wrap h2.nav-tab-wrapper{padding-left:0;padding-right:6px}.about-wrap .wp-badge{right:auto;left:0}.about-wrap h2 .nav-tab{margin-right:0;margin-left:3px}.about-wrap .changelog li{margin-left:0;margin-right:3em}.about-wrap .three-col-images .last-feature{float:left}.about-wrap .three-col-images .first-feature{float:right}.about-wrap .feature-section.three-col div{margin-right:0;margin-left:4.999999999%;float:right}.about-wrap .feature-section.three-col h4{text-align:right}.about-wrap .feature-section.three-col img{margin-right:5px;margin-left:0}.about-wrap .feature-section.three-col .last-feature{margin-left:0}.about-wrap .feature-section img{margin:0 0 10px .7%}.about-wrap .feature-section.images-stagger-right img{float:left;margin:0 12px 12px 5px}.about-wrap .feature-section.images-stagger-left img{float:right;margin:0 5px 12px 12px}.about-wrap li.wp-person,.about-wrap li.wp-person img.gravatar{float:right;margin-right:0;margin-left:10px}#template div{margin-right:0;margin-left:190px}.column-author img,.column-username img{float:right;margin-right:0;margin-left:10px}.tagchecklist{margin-left:0;margin-right:14px}.tagchecklist strong{margin-left:0;margin-right:-8px}.tagchecklist span{margin-right:0;margin-left:25px;float:right}.tagchecklist span a{margin:6px -9px 0 0;float:right}#poststuff h2{clear:right}#poststuff h3,.metabox-holder h3{font-family:Tahoma,Arial,sans-serif}.tool-box .title{font-family:Tahoma,Arial,sans-serif}#sidemenu{margin:-30px 315px 0 15px;float:left;padding-left:0;padding-right:10px}#sidemenu a{float:right}table .vers,table .column-visible,table .column-rating{text-align:right}.screen-meta-toggle{right:auto;left:15px}* html #template div{margin-left:0}.list-ajax-loading{float:left;margin-right:0;margin-left:9px}#editorcontainer .wp_themeSkin .mceStatusbar{padding-left:0;padding-right:5px}#editorcontainer .wp_themeSkin .mceStatusbar div{float:right}#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize{float:left}.wp-full-overlay .wp-full-overlay-sidebar{margin:0;left:auto;right:0;border-right:0;border-left:1px solid rgba(0,0,0,0.2)}.wp-full-overlay-sidebar:after{right:auto;left:0;box-shadow:inset 5px 0 4px -4px rgba(0,0,0,0.1)}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px;margin-left:0}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-300px;margin-left:0}.wp-full-overlay .collapse-sidebar{right:0;left:auto;margin-right:15px}.wp-full-overlay.collapsed .collapse-sidebar{right:100%}.wp-full-overlay .collapse-sidebar-arrow{margin-right:2px;margin-left:0;background:transparent url('../../wp-admin/images/arrows.png') no-repeat 0 -108px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:0 -72px}.wp-full-overlay .collapse-sidebar-label{right:100%;left:auto;margin-right:10px;margin-left:0}.install-theme-info .theme-install{float:left}#wpcontent{margin-left:0;margin-right:165px}.folded #wpcontent{margin-left:0;margin-right:52px}.folded.wp-admin #footer{margin-left:15px;margin-right:52px}#wpbody-content{float:right}#adminmenuwrap{float:right}#adminmenu{clear:right}.inner-sidebar{float:left;clear:left}.has-right-sidebar #post-body{float:right;clear:right;margin-right:0;margin-left:-340px}.has-right-sidebar #post-body-content{margin-right:0;margin-left:300px}#col-right{float:left;clear:left}.alignleft{float:right}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}.screen-reader-text,.screen-reader-text span{left:auto;right:-1000em}body,td,textarea,input,select{font-family:Tahoma,Arial,sans-serif}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:0;margin-right:1.8em}.subsubsub{float:right}.widefat thead th:first-of-type{-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px}.widefat th{text-align:right}.widefat th input{margin:0 8px 0 0}.wrap{margin-right:0;margin-left:15px}.wrap h2,.subtitle{font-family:Tahoma,Arial,sans-serif}.wrap h2{padding-right:0;padding-left:15px}.subtitle{padding-left:0;padding-right:25px}.wrap .add-new-h2{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:4px}.wrap h2.long-header{padding-left:0}#dashboard-widgets-wrap .has-sidebar{margin-right:0;margin-left:-51%}#dashboard-widgets-wrap .has-sidebar .has-sidebar-content{margin-right:0;margin-left:51%}.view-all{right:auto;left:0}#dashboard_right_now p.sub,#dashboard-widgets h4,a.rsswidget,#dashboard_plugins h4,#dashboard_plugins h5,#dashboard_recent_comments .comment-meta .approve,#dashboard_right_now td.b,#dashboard_right_now .versions a{font-family:Tahoma,Arial,sans-serif}#dashboard_right_now p.sub{left:auto;right:15px}#dashboard_right_now td.b{padding-right:0;padding-left:6px;text-align:left}#dashboard_right_now .t{padding-right:0;padding-left:12px}#dashboard_right_now .table_content{float:right}#dashboard_right_now .table_discussion{float:left}#dashboard_right_now a.button{float:left;clear:left}#dashboard_plugins .inside span{padding-left:0;padding-right:5px}#dashboard-widgets h3 .postbox-title-action{right:auto;left:30px}#the-comment-list .pingback{padding-left:0!important;padding-right:9px!important}#the-comment-list .comment-item{padding:1em 70px 1em 10px}#the-comment-list .comment-item .avatar{float:right;margin-left:0;margin-right:-60px}.rss-widget cite{text-align:left}.rss-widget span.rss-date{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}#dashboard_quick_press h4{float:right;text-align:left}#dashboard_quick_press .wp-media-buttons{margin:0 5em .5em 0}#dashboard_quick_press h4 label{margin-right:0;margin-left:10px}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 5em 1em 0}#dashboard_quick_press #media-buttons{margin:0 5em .5em 0;padding:0}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:0;margin-right:4.6em}#dashboard-widgets #dashboard_quick_press form p.submit input{float:right}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 10px 0 1em}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:left}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{margin:4px 0 0 6px}#dashboard_recent_drafts h4 abbr{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:3px}body.login{font-family:Tahoma,Arial,sans-serif}.login form{margin-right:8px;margin-left:0}.login form .forgetmenot{float:right}.login form .submit{float:left}#login form .submit input{font-family:Tahoma,Arial,sans-serif}.login #nav,.login #backtoblog{margin:0 16px 0 0}#login_error,.login .message{margin:0 8px 16px 0}.login #user_pass,.login #user_login,.login #user_email{margin-left:6px;margin-right:0;direction:ltr}.login h1 a{text-decoration:none}.login .button-primary{float:left}#nav-menus-frame{margin-right:300px;margin-left:0}#wpbody-content #menu-settings-column{margin-right:-300px;margin-left:0;float:right}#menu-management-liquid{float:right}#menu-management{margin-left:20px;margin-right:0}.post-body-plain{padding:10px 0 0 10px}#menu-management .nav-tabs-arrow-left{right:0;left:auto}#menu-management .nav-tabs-arrow-right{left:0;right:auto;text-align:left;font-family:Tahoma,Arial,sans-serif}#menu-management .nav-tabs{padding-right:20px;padding-left:10px}.js #menu-management .nav-tabs{float:right;margin-right:0;margin-left:-400px}#select-nav-menu-container{text-align:left}#wpbody .open-label{float:right}#wpbody .open-label span{padding-left:10px;padding-right:0}.js .input-with-default-title{font-style:normal;font-weight:bold}.postbox .howto input{float:left}#nav-menu-theme-locations .button-controls{text-align:left}.meta-sep,.submitcancel{float:right}#cancel-save{margin-left:0;margin-right:20px}.list-controls{float:right}.add-to-menu{float:left}#add-custom-link label span{float:right;padding-left:5px;padding-right:0}.nav-menus-php .howto span{float:right}.list li .menu-item-title input{margin-left:3px;margin-right:0}.menu-item-handle{padding-right:10px;padding-left:0}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.menu-item-handle .item-title{margin-left:13em;margin-right:0}.menu-item-handle .item-edit{right:auto;left:-20px}.menu-item-depth-0{margin-right:0;margin-left:0}.menu-item-depth-1{margin-right:30px;margin-left:0}.menu-item-depth-2{margin-right:60px;margin-left:0}.menu-item-depth-3{margin-right:90px;margin-left:0}.menu-item-depth-4{margin-right:120px;margin-left:0}.menu-item-depth-5{margin-right:150px;margin-left:0}.menu-item-depth-6{margin-right:180px;margin-left:0}.menu-item-depth-7{margin-right:210px;margin-left:0}.menu-item-depth-8{margin-right:240px;margin-left:0}.menu-item-depth-9{margin-right:270px;margin-left:0}.menu-item-depth-10{margin-right:300px;margin-left:0}.menu-item-depth-11{margin-right:330px;margin-left:0}.menu-item-depth-0 .menu-item-transport{margin-right:0;margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px;margin-left:0}.menu-item-depth-2 .menu-item-transport{margin-right:-60px;margin-left:0}.menu-item-depth-3 .menu-item-transport{margin-right:-90px;margin-left:0}.menu-item-depth-4 .menu-item-transport{margin-right:-120px;margin-left:0}.menu-item-depth-5 .menu-item-transport{margin-right:-150px;margin-left:0}.menu-item-depth-6 .menu-item-transport{margin-right:-180px;margin-left:0}.menu-item-depth-7 .menu-item-transport{margin-right:-210px;margin-left:0}.menu-item-depth-8 .menu-item-transport{margin-right:-240px;margin-left:0}.menu-item-depth-9 .menu-item-transport{margin-right:-270px;margin-left:0}.menu-item-depth-10 .menu-item-transport{margin-right:-300px;margin-left:0}.menu-item-depth-11 .menu-item-transport{margin-right:-330px;margin-left:0}.item-type{padding-left:10px;padding-right:0}.item-controls{left:20px;right:auto}.item-controls .item-order{padding-left:10px;padding-right:0}.item-edit{left:-20px;right:auto;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0}.menu-item-settings{padding:10px 10px 10px 0;border-width:0 1px 1px 1px}#custom-menu-item-url{direction:ltr}.link-to-original{font-style:normal;font-weight:bold}.link-to-original a{padding-right:4px;padding-left:0}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;margin-right:0;float:right}.major-publishing-actions .publishing-action{text-align:left;float:left}.major-publishing-actions .delete-action{text-align:right;float:right;padding-left:15px;padding-right:0}.menu-name-label{margin-left:15px;margin-right:0}.auto-add-pages{float:right}div.star-holder{background:url('../images/stars-rtl.png?ver=20120506.png') repeat-x bottom right}div.star-holder .star-rating{background:url('../images/stars-rtl.png?ver=20120506.png') repeat-x top right;float:right}#plugin-information ul#sidemenu{left:auto;right:0}#plugin-information h2{margin-right:0;margin-left:200px}#plugin-information .fyi{margin-left:5px;margin-right:20px}#plugin-information .fyi h2{margin-left:0}#plugin-information .fyi ul{padding:10px 7px 10px 5px}#plugin-information #section-screenshots li p{padding-left:0;padding-right:20px}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:0;margin-left:215px}#plugin-information .updated,#plugin-information .error{clear:none;direction:rtl}#plugin-information #section-holder .section{direction:ltr}.posting{margin-left:212px;margin-right:0;position:relative}h3.tb{margin-left:0;margin-right:5px}#publish{float:left}.postbox .handlediv{float:left}.actions li{float:right;margin-right:0;margin-left:10px}#extra-fields .actions{margin:-23px 0 0 -7px}#img_container a{float:right}#category-add input,#category-add select{font-family:Tahoma,Arial,sans-serif}#tagsdiv #newtag{margin-right:0;margin-left:5px}#tagadd{margin-left:0;margin-right:3px}#tagchecklist span{margin-left:.5em;margin-right:10px;float:right}#tagchecklist span a{margin:6px -9px 0 0;float:right}.submit input,.button,.button-primary,.button-secondary,.button-highlighted,#postcustomstuff .submit input{font-family:Tahoma,Arial,sans-serif}.ac_results li{text-align:right}#TB_ajaxContent #options{right:auto;left:25px}#post_status{margin-left:0;margin-right:10px}#templateside{float:left}#template textarea,#docs-list{direction:ltr}.theme-details .theme-version{float:right}.theme-details .star-holder{float:left}.feature-filter .feature-group{float:right}.feature-filter .feature-name{float:right;text-align:left}.feature-filter .feature-group li{float:right;padding-right:0;padding-left:25px}div.widget-liquid-left{float:right;clear:right;margin-right:0;margin-left:-325px}div#widgets-left{margin-right:5px;margin-left:325px}div.widget-liquid-right{float:left;clear:left}.inactive-sidebar .widget{float:right}div.sidebar-name h3{font-family:Tahoma,Arial,sans-serif}#widget-list .widget{float:right}.inactive-sidebar .widget-placeholder{float:right}.widget-top .widget-title-action{float:left}.widget-control-edit{padding:0 0 0 8px}.sidebar-name-arrow{float:left}.press-this-sidebar{float:left}.press-this #header-logo,.press-this #wphead h1{float:right}.ltr{direction:ltr}body.locale-he-il,.locale-he-il .quicktags,.locale-he-il .search,.locale-he-il .howto,.locale-he-il #adminmenu .awaiting-mod,.locale-he-il #adminmenu span.update-plugins,.locale-he-il #sidemenu li a span.update-plugins,.locale-he-il .post-com-count-wrapper,.locale-he-il .widefat th,.locale-he-il .tablenav .displaying-num,.locale-he-il .inline-edit-row fieldset span.title,.locale-he-il .inline-edit-row fieldset span.checkbox-title,.locale-he-il .inline-edit-row fieldset ul.cat-checklist label,.locale-he-il .inline-edit-row .catshow,.locale-he-il .inline-edit-row .cathide,.locale-he-il .inline-edit-row #bulk-titles div,.locale-he-il p.help,.locale-he-il p.description,.locale-he-il span.description,.locale-he-il .form-wrap p,.locale-he-il h2 .nav-tab,.locale-he-il #your-profile legend,.locale-he-il #utc-time,.locale-he-il #local-time,.locale-he-il #poststuff h3,.locale-he-il .metabox-holder h3,.locale-he-il .tool-box .title,.locale-he-il td,.locale-he-il textarea,.locale-he-il input,.locale-he-il select,.locale-he-il .wrap h2,.locale-he-il .subtitle,.locale-he-il .wrap .add-new-h2,.locale-he-il #dashboard_right_now p.sub,.locale-he-il #dashboard-widgets h4,.locale-he-il a.rsswidget,.locale-he-il #dashboard_plugins h4,.locale-he-il #dashboard_plugins h5,.locale-he-il #dashboard_recent_comments .comment-meta .approve,.locale-he-il #dashboard_right_now td.b,.locale-he-il #dashboard_right_now .versions a,.locale-he-il .rss-widget span.rss-date,.locale-he-il #dashboard_recent_drafts h4 abbr,body.login.locale-he-il,.locale-he-il #login form .submit input,.locale-he-il #menu-management .nav-tabs-arrow-right,.locale-he-il #category-add input,.locale-he-il #category-add select,.locale-he-il .submit input,.locale-he-il .button,.locale-he-il .button-primary,.locale-he-il .button-secondary,.locale-he-il .button-highlighted,.locale-he-il #postcustomstuff .submit input,.locale-he-il div.sidebar-name h3{font-family:Arial,sans-serif}.locale-he-il em{font-style:normal;font-weight:bold} \ No newline at end of file diff --git a/wp-admin/css/wp-admin-rtl.dev.css b/wp-admin/css/wp-admin-rtl.dev.css new file mode 100644 index 0000000..84c6c35 --- /dev/null +++ b/wp-admin/css/wp-admin-rtl.dev.css @@ -0,0 +1,2532 @@ +/*------------------------------------------------------------------------------ + + +Hello, this is the RTL version of the main WordPress admin CSS file. +All the important stuff is in here. + + +TABLE OF CONTENTS: +------------------ + 1.0 - Text Elements + 2.0 - Forms + 3.0 - Actions + 4.0 - Notifications + 5.0 - TinyMCE + 6.0 - Admin Header + 6.1 - Screen Options Tabs + 7.0 - Main Navigation + 8.0 - Layout Blocks + 9.0 - Dashboard +10.0 - List Posts + 10.1 - Inline Editing +11.0 - Write/Edit Post Screen + 11.1 - Custom Fields + 11.2 - Post Revisions +12.0 - Categories +13.0 - Tags +14.0 - Media Screen + 14.1 - Media Uploader + 14.2 - Image Editor +15.0 - Comments Screen +16.0 - Themes + 16.1 - Custom Header + 16.2 - Custom Background + 16.3 - Tabbed Admin Screen Interface +17.0 - Plugins +18.0 - Users +19.0 - Tools +20.0 - Settings +21.0 - Admin Footer +22.0 - About Pages +23.0 - Misc +24.0 - Dead +25.0 - TinyMCE tweaks +26.0 - Full Overlay w/ Sidebar +27.0 - Customize Loader + + +------------------------------------------------------------------------------*/ + + +/*------------------------------------------------------------------------------ + 1.0 - Text Styles +------------------------------------------------------------------------------*/ + +ol { + margin-left: 0; + margin-right: 2em; +} + +.code, code { + font-family: monospace; + direction: ltr; +} + +.quicktags, .search { + font: 12px Tahoma, Arial, sans-serif; +} + +.icon32 { + float: right; + margin-right: 0; + margin-left: 8px; +} + +.icon16 { + float: right; + margin-right: -8px; + margin-left: 0; +} + +.howto { + font-style: normal; + font-family: Tahoma, Arial, sans-serif; +} + +p.install-help { + font-style: normal; +} + + +/*------------------------------------------------------------------------------ + 2.0 - Forms +------------------------------------------------------------------------------*/ + +#doaction, +#doaction2, +#post-query-submit { + margin-right: 0; + margin-left: 8px; +} + +#timezone_string option { + margin-left: 0; + margin-right: 1em; +} + +#pass-strength-result { + float: right; + margin: 13px 1px 5px 5px; +} + +p.search-box { + float: left; +} + +input[type=password] { + direction: ltr; +} + +input[type="text"].ui-autocomplete-loading { + background: transparent url('../images/loading.gif') no-repeat left center; +} + +ul#add-to-blog-users { + margin: 0 14px 0 0; +} + +.ui-autocomplete li { + text-align: right; +} + +/*------------------------------------------------------------------------------ + 3.0 - Actions +------------------------------------------------------------------------------*/ + +#delete-action { + float: right; +} + +#publishing-action { + float: left; +} + +#post-body .misc-pub-section { + border-right:0; + border-left-width: 1px; + border-left-style: solid; +} + +#post-body .misc-pub-section-last { + border-left: 0; +} + +#minor-publishing-actions { + padding: 10px 8px 2px 10px; + text-align: left; +} + +#save-post { + float: right; +} + +#minor-publishing .ajax-loading { + padding: 3px 4px 0 0; + float: right; +} + +.preview { + float: left; +} + +#sticky-span { + margin-left: 0; + margin-right: 18px; +} + +.side-info ul { + padding-left: 0; + padding-right: 18px; +} + +td.action-links, +th.action-links { + text-align: left; +} + +.describe .del-link { + padding-left: 0; + padding-right: 5px; +} + + +/*------------------------------------------------------------------------------ + 4.0 - Notifications +------------------------------------------------------------------------------*/ + +form.upgrade .hint { + font-style: normal; +} + +#ajax-response.alignleft { + margin-left: 0; + margin-right: 2em; +} + + +/*------------------------------------------------------------------------------ + 5.0 - TinyMCE +------------------------------------------------------------------------------*/ + +#quicktags { + background-position: right top; +} + +#ed_reply_toolbar input { + margin: 1px 1px 1px 2px; +} + +/*------------------------------------------------------------------------------ + 6.0 - Admin Header +------------------------------------------------------------------------------*/ +#wphead { + height: 32px; + margin-left: 15px; + margin-right: 2px; +} + +#header-logo { + float: right; +} + +#wphead h1 { + float: right; +} + +/*------------------------------------------------------------------------------ + 6.1 - Screen Options Tabs +------------------------------------------------------------------------------*/ + +#screen-meta-links { + margin-right: 0; + margin-left: 24px; +} + +#screen-meta { + margin-right: 5px; + margin-left: 15px; +} + +#screen-options-link-wrap, +#contextual-help-link-wrap { + float: left; + margin-left: 0; + margin-right: 6px; +} + +#screen-meta-links a.show-settings { + padding-right: 6px; + padding-left: 16px; +} + +.toggle-arrow { + background-position: top right; +} +.toggle-arrow-active { + background-position: bottom right; +} + +.metabox-prefs label { + padding-right: 0; + padding-left: 15px; +} + +.metabox-prefs label input { + margin-right: 2px; + margin-left: 5px; +} + +/*------------------------------------------------------------------------------ + 6.2 - Help Menu +------------------------------------------------------------------------------*/ + +#contextual-help-wrap { + margin-left: 0; + margin-right: -4px; +} + +#contextual-help-back { + left: 170px; + right: 150px; +} + +#contextual-help-wrap.no-sidebar #contextual-help-back { + left: 0; + right: 150px; + + border-right-width: 1px; + border-left-width: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +.contextual-help-tabs { + float: right; +} + +.contextual-help-tabs a { + padding-left: 5px; + padding-right: 12px; +} + +.contextual-help-tabs .active { + margin-right: 0; + margin-left: -1px; +} + +.contextual-help-tabs .active, +.contextual-help-tabs-wrap { + border-left: 0; + border-right-width: 1px; +} + +.help-tab-content { + margin-right: 0; + margin-left: 22px; +} + +.help-tab-content li { + margin-left: 0; + margin-right: 18px; +} + +.contextual-help-sidebar { + float: left; + padding-right: 12px; + padding-left: 8px; +} + +/*------------------------------------------------------------------------------ + 7.0 - Main Navigation (Right Menu) (RTL: Left Menu) +------------------------------------------------------------------------------*/ + +#adminmenuback, +#adminmenuwrap { + border-width: 0 0 0 1px; +} + +#adminmenushadow { + right: auto; + left: 0; +} + +#adminmenu li .wp-submenu { + left: auto; + right: 146px; +} + +.folded #adminmenu .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + left: auto; + right: 26px; +} + +#adminmenu .wp-submenu.sub-open, +#adminmenu li.focused.wp-not-current-submenu .wp-submenu, +.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, +.no-js #adminmenu .wp-has-submenu:hover .wp-submenu, +.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu { + padding: 0 0 8px 8px; +} + +#adminmenu div.wp-menu-image { + float: right; +} + +#adminmenu li li { + margin-left: 0; + margin-right: 8px +} + +#adminmenu .wp-submenu a, +#adminmenu li li a, +.folded #adminmenu .wp-not-current-submenu li a { + padding-left: 0; + padding-right: 12px; +} + +#adminmenu .wp-not-current-submenu li a { + padding-left: 0; + padding-right: 18px; +} + +.folded #adminmenu li li { + margin-left: inherit; + margin-right: 0 +} + +.folded #adminmenu li li a { + padding-left: inherit; + padding-right: 0 +} + +.wp-menu-arrow { + right: 0; + + -moz-transform: translate( -139px ); + -webkit-transform: translate( -139px ); + -o-transform: translate( -139px ); + -ms-transform: translate( -139px ); + transform: translate( -139px ); +} + +.ie8 .wp-menu-arrow { + right: -20px; +} + +#adminmenu .wp-menu-arrow div { + left: -8px; + width: 16px; +} + +#adminmenu li.wp-not-current-submenu .wp-menu-arrow { + -moz-transform: translate( -138px ); + -webkit-transform: translate( -138px ); + -o-transform: translate( -138px ); + -ms-transform: translate( -138px ); + transform: translate( -138px ); +} + +.folded .wp-menu-arrow { + -moz-transform: translate( -27px ); + -webkit-transform: translate( -27px ); + -o-transform: translate( -27px ); + -ms-transform: translate( -27px ); + transform: translate( -27px ); +} + +#adminmenu .wp-not-current-submenu .wp-menu-arrow div { + border-style: solid solid none none; + border-width: 1px 1px 0 0; +} + +#adminmenu .wp-menu-image img { + float: right; + padding: 5px 2px 0 0; +} + +#adminmenu .wp-submenu .wp-submenu-head { + padding: 6px 10px 5px 4px; +} + +#adminmenu li .wp-submenu-wrap { + border-width: 1px 0 1px 1px; + border-style: solid none solid solid; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-right-radius: 0; + -webkit-border-top-left-radius: 3px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 3px; + border-top-right-radius: 0; + border-top-left-radius: 3px; +} + +.folded #adminmenu .wp-submenu ul { + border-width: 0 1px 0 0; +} + +.folded #adminmenu .wp-submenu a { + padding-left: 0; + padding-right: 10px; +} + +.folded #adminmenu a.wp-has-submenu { + margin-left: 0; + margin-right: 40px; +} + +#adminmenu .wp-menu-toggle { + clear: left; + float: left; + padding: 1px 0 0 2px; +} + +#adminmenu .awaiting-mod, +#adminmenu span.update-plugins, +#sidemenu li a span.update-plugins { + font-family: Tahoma, Arial, sans-serif; + margin-left: 0; + margin-right: 7px; +} + +#collapse-button { + float: right; +} + +/* Auto-folding of the admin menu */ +@media only screen and (max-width: 900px) { + #adminmenu li .wp-submenu, + #adminmenu .wp-has-current-submenu .wp-submenu { + left: auto; + right: 26px; + } + + #adminmenu li.focused.wp-has-current-submenu .wp-submenu, + #adminmenu .wp-has-current-submenu .wp-submenu.sub-open { + padding: 0 0 8px 8px; + } + + .folded #adminmenu .wp-not-current-submenu li a { + padding-left: 0; + padding-right: 12px; + } + + #adminmenu li li, + #adminmenu li li a { + padding-left: inherit; + padding-right: 0 + } + + .wp-menu-arrow { + -moz-transform: translate( -27px ); + -webkit-transform: translate( -27px ); + -o-transform: translate( -27px ); + -ms-transform: translate( -27px ); + transform: translate( -27px ); + } + + #adminmenu .wp-submenu ul { + border-width: 0 1px 0 0; + } + + #adminmenu .wp-submenu a { + padding-left: 0; + padding-right: 10px; + } + + #adminmenu a.wp-has-submenu { + margin-left: 0; + margin-right: 40px; + } + + body #wpcontent { + margin-left: 0; + margin-right: 52px; + } + + body .wp-admin #footer { + margin-left: 15px; + margin-right: 52px; + } +} + +/* List table styles */ +.post-com-count-wrapper { + font-family: Tahoma, Arial, sans-serif; +} + +.column-response .post-com-count { + float: right; + margin-right: 0; + margin-left: 5px; +} + +.response-links { + float: right; +} + + +/*------------------------------------------------------------------------------ + 8.0 - Layout Blocks +------------------------------------------------------------------------------*/ + +.widefat th { + font-family: Tahoma, Arial, sans-serif; +} + +.widefat td p { + margin: 2px 0 0.8em; +} + +.postbox-container { + float: right; +} + +.postbox .handlediv { + float: left; +} + +/*------------------------------------------------------------------------------ + 9.0 - Dashboard +------------------------------------------------------------------------------*/ + +#the-comment-list p.comment-author img { + float: right; + margin-right: 0; + margin-left: 8px; +} + +/* Browser Nag */ +#dashboard_browser_nag p.browser-update-nag.has-browser-icon { + padding-right: 0; + padding-left: 125px; +} + +.welcome-panel .welcome-panel-close { + right: auto; + left: 10px; +} + +.welcome-panel .welcome-panel-close:before { + left: auto; + right: -12px; +} + +.welcome-panel .wp-badge { + float: right; +} + +.welcome-panel-content .about-description, .welcome-panel h3 { + margin-left: 0; + margin-right: 190px; +} + +.welcome-panel .welcome-panel-column { + margin: 0 -25px 0 5%; + padding-left: 0; + padding-right: 25px; + float: right; +} + +.welcome-panel .welcome-panel-column.welcome-panel-last { + margin-right: auto; + padding-right: 0; + margin-left: 0; +} + +.welcome-panel h4 .icon16 { + margin-left: 0; + margin-right: -32px; +} + +.welcome-panel .welcome-panel-column-container { + padding: 0 25px 0 0; +} + +.welcome-panel .welcome-panel-column ul { + margin: 1.6em 1.3em 1em 1em; +} + +.welcome-panel .welcome-panel-column li { + padding-left: 0; + padding-right: 2px; +} + +/*------------------------------------------------------------------------------ + 10.0 - List Posts (/Pages/etc) +------------------------------------------------------------------------------*/ + +.fixed .column-comments { + text-align: right; +} +.fixed .column-comments .vers { + padding-left: 0; + padding-right: 3px; +} +.fixed .column-comments a { + float: right; +} +.sorting-indicator { + margin-left: 0; + margin-right: 7px; +} +th.sortable a span, +th.sorted a span { + float: right; +} + +/* Bulk Actions */ + +.tablenav-pages a { + margin-right: 0; + margin-left: 1px; +} +.tablenav-pages .next-page { + margin-left: 0; + margin-right: 2px; +} + +.tablenav a.button-secondary { + margin: 3px 0 0 8px; +} + +.tablenav .tablenav-pages { + float: left; +} + +.tablenav .displaying-num { + margin-right: 0; + margin-left: 10px; + font-family: Tahoma, Arial, sans-serif; + font-style: normal; +} + +.tablenav .actions { + padding: 2px 0 0 8px; +} + +.tablenav .delete { + margin-right: 0; + margin-left: 20px; +} + +.view-switch { + float: left; +} + +.filter { + float: right; + margin: -5px 10px 0 0; +} + +.filter .subsubsub { + margin-left: 0; + margin-right: -10px; +} + +#posts-filter fieldset { + float: right; + margin: 0 0 1em 1.5ex; +} + +#posts-filter fieldset legend { + padding: 0 1px .2em 0; +} + +/*------------------------------------------------------------------------------ + 10.1 - Inline Editing +------------------------------------------------------------------------------*/ + +#wpbody-content .inline-edit-row fieldset { + float: right; +} + +#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col { + border-width: 0 1px 0 0; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: left; +} + +.inline-edit-row fieldset label span.title { + float: right; +} + +.inline-edit-row fieldset label span.input-text-wrap { + margin-left: 0; + margin-right: 5em; +} + +.quick-edit-row-post fieldset.inline-edit-col-right label span.title { + padding-right: 0; + padding-left: 0.5em; +} + +#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child { + margin-right: 0; + margin-left: 0.5em +} + +/* Styling */ + +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title { + font-family: Tahoma, Arial, sans-serif; + font-style: normal; +} + +.inline-edit-row fieldset .inline-edit-date { + float: right; +} + +.inline-edit-row fieldset ul.cat-checklist label, +.inline-edit-row .catshow, +.inline-edit-row .cathide, +.inline-edit-row #bulk-titles div { + font-family: Tahoma, Arial, sans-serif; +} + +.quick-edit-row-post fieldset label.inline-edit-status { + float: right; +} + +#bulk-titles div a { + float: right; + margin: 3px -2px 0 3px; + overflow: hidden; + text-indent: -9999px; +} + + +/*------------------------------------------------------------------------------ + 11.0 - Write/Edit Post Screen +------------------------------------------------------------------------------*/ +/* structural/layout */ +#post-body-content { + float: right; +} + +#poststuff #post-body.columns-2 { + margin-left: 300px; + margin-right: 0; +} + +#post-body.columns-2 #postbox-container-1 { + float: left; + margin-left: -300px; + margin-right: 0; +} + +@media only screen and (max-width: 850px) { + #wpbody-content #post-body.columns-2 #postbox-container-1 { + margin-left: 0; + } +} + +#titlediv #title-prompt-text, +#wp-fullscreen-title-prompt-text { + right:0; +} + +#sample-permalink { + direction:ltr; +} + +#sample-permalink #editable-post-name { + unicode-bidi:embed; +} +#wp-fullscreen-title-prompt-text { + left: auto; + right: 0; +} + +.postarea h3 label { + float: right; +} + +.submitbox .submit { + text-align: right; +} + +.inside-submitbox #post_status { + margin: 2px -2px 2px 0; +} + +.submitbox .submit input { + margin-right: 0; + margin-left: 4px; +} + +#normal-sortables .postbox .submit { + float: left; +} + +.taxonomy div.tabs-panel { + margin: 0 125px 0 5px; +} + +#side-sortables .comments-box thead th, +#normal-sortables .comments-box thead th { + font-style: normal; +} + +#commentsdiv img.waiting { + padding-left: 0; + padding-right: 5px; +} + +#post-body .add-menu-item-tabs li.tabs { + border-width: 1px 1px 1px 0; + margin-right: 0; + margin-left: -1px; +} + +/* Global classes */ + +#post-body .tagsdiv #newtag { + margin-right: 0; + margin-left: 5px; +} + +.autosave-info { + padding: 2px 2px 2px 15px; + text-align: left; +} + +#post-body .wp_themeSkin .mceStatusbar a.mceResize { + background: transparent url(../images/resize-rtl.gif) no-repeat scroll left bottom; + cursor: sw-resize; +} + +.curtime #timestamp { + background-position: right top; + padding-left: 0; + padding-right: 18px; +} + +/*------------------------------------------------------------------------------ + 11.1 - Custom Fields +------------------------------------------------------------------------------*/ + +#postcustomstuff table input, +#postcustomstuff table select, +#postcustomstuff table textarea { + margin: 8px 8px 8px 0; +} + +/*------------------------------------------------------------------------------ + 11.2 - Post Revisions +------------------------------------------------------------------------------*/ + +table.diff td, table.diff th { + font-family: Consolas, Monaco, monospace; +} + +/*------------------------------------------------------------------------------ + 12.0 - Categories +------------------------------------------------------------------------------*/ + +.category-adder { + margin-left: 0; + margin-right: 120px; +} + +#post-body ul.add-menu-item-tabs { + float: right; + text-align: left; + /* Negative margin for the sake of those without JS: all tabs display */ + margin: 0 5px 0 -120px; +} + +#post-body ul.add-menu-item-tabs li.tabs { + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 3px; + border-top-left-radius: 0; + border-top-right-radius: 3px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 3px; +} + +#front-page-warning, +#front-static-pages ul, +ul.export-filters, +.inline-editor ul.cat-checklist ul, +.categorydiv ul.categorychecklist ul, +.customlinkdiv ul.categorychecklist ul, +.posttypediv ul.categorychecklist ul, +.taxonomydiv ul.categorychecklist ul { + margin-left: 0; + margin-right: 18px; +} + +#post-body .add-menu-item-tabs li.tabs { + border-style: solid solid solid none; + border-width: 1px 1px 1px 0; + margin-right: 0; + margin-left: -1px; +} + +p.help, +p.description, +span.description, +.form-wrap p { + font-style: normal; + font-family: Tahoma, Arial, sans-serif; +} + +/*------------------------------------------------------------------------------ + 13.0 - Tags +------------------------------------------------------------------------------*/ + +.taghint { + margin: 15px 12px -24px 0; +} + +#poststuff .tagsdiv .howto { + margin: 0 8px 6px 0; +} + +.ac_results li { + text-align: right; +} + +.links-table th { + text-align: right; +} + +/*------------------------------------------------------------------------------ + 14.0 - Media Screen +------------------------------------------------------------------------------*/ + +#wpbody-content .describe th { + text-align: right; + +} + +.describe .media-item-info .A1B1 { + padding: 0 10px 0 0; +} + +.media-upload-form td label { + margin-left: 6px; + margin-right: 2px; +} + +.media-upload-form .align .field label { + padding: 0 23px 0 0; + margin: 0 3px 0 1em; +} + +.media-upload-form tr.image-size label { + margin: 0 5px 0 0; +} + +#wpbody-content .describe p.help { + padding: 0 5px 0 0; +} + +.media-item .error-div a.dismiss, +.describe-toggle-on, +.describe-toggle-off { + float: left; + margin-right: 0; + margin-left: 15px; +} + +.media-item .error-div a.dismiss { + padding: 0 15px 0 0; +} + +.media-item .error-div { + padding-left: 0; + padding-right: 10px; +} + +.media-item .pinkynail { + float: right; +} + +.media-item .describe td { + padding: 0 0 8px 8px; +} + +.media-item .progress { + float: left; + margin: 6px 0 0 10px; +} + +/*------------------------------------------------------------------------------ + 14.1 - Media Uploader +------------------------------------------------------------------------------*/ + +#find-posts-response .found-radio { + padding: 5px 8px 0 0; +} + +.find-box-search label { + padding-right: 0; + padding-left: 6px; +} + +.find-box #resize-se { + right: auto; + left: 1px; +} + +form.upgrade .hint { + font-style: normal; +} + + +/*------------------------------------------------------------------------------ + 14.2 - Image Editor +------------------------------------------------------------------------------*/ + +.imgedit-menu div { + float: right; +} + +.imgedit-help { + font-style: normal; +} + +.imgedit-submit-btn { + margin-left: 0; + margin-right: 20px; +} + + +/*------------------------------------------------------------------------------ + 15.0 - Comments Screen +------------------------------------------------------------------------------*/ + +.form-table th { + text-align: right; +} + +.form-table input.tog { + margin-right: 0; + margin-left: 2px; + float: right; +} + +.form-table table.color-palette { + float: right; +} + +/* reply to comments */ + +#replysubmit img.waiting, +.inline-edit-save img.waiting { + float: left; +} + +#replysubmit .button { + margin-right: 0; + margin-left: 5px; +} + +#edithead .inside { + float: right; + padding: 3px 5px 2px 0; +} + +.comment-ays th { + border-right-style: none; + border-left-style: solid; + border-right-width: 0; + border-left-width: 1px; +} + +.spam-undo-inside .avatar, +.trash-undo-inside .avatar { + margin-left: 8px; +} + +#comment-status-radio input { + margin: 2px 0 5px 3px; +} + +/*------------------------------------------------------------------------------ + 16.0 - Themes +------------------------------------------------------------------------------*/ + +h3.available-themes { + float: right; +} + +.available-theme { + margin-right: 0; + margin-left: 10px; + padding: 20px 0 20px 20px; +} + +#current-theme .theme-info li, +.theme-options li, +.available-theme .action-links li { + float: right; + padding-right: 0; + padding-left: 10px; + margin-right: 0; + margin-left: 10px; + border-right: none; + border-left: 1px solid #dfdfdf; +} + +.available-theme .action-links li { + padding-left: 8px; + margin-left: 8px; +} + +#current-theme .theme-info li:last-child, +.theme-options li:last-child, +.available-theme .action-links li:last-child { + padding-left: 0; + margin-right: 0; + border-left: 0; +} + +.available-theme .action-links .delete-theme { + float: left; + margin-left: 0; + margin-right: 8px; +} + +.available-theme .action-links p { + float: right; +} + +#current-theme.has-screenshot { + padding-left: 0; + padding-right: 330px; +} + +#current-theme h4 span { + margin-left: 0; + margin-right: 20px; +} + +#current-theme img { + float: right; + width: 300px; + margin-left: 0; + margin-right: -330px; +} + +.theme-options .load-customize { + margin-right: 0; + margin-left: 30px; + float: right; +} + +.theme-options span { + float: right; + margin-right: 0; + margin-left: 10px; +} + +.theme-options ul { + float: right; +} + +/* Allow for three-up on 1024px wide screens, e.g. tablets */ +@media only screen and (max-width: 1200px) { + #current-theme.has-screenshot { + padding-right: 270px; + } + + #current-theme img { + margin-right: -270px; + width: 240px; + } +} + +#broken-themes { + text-align: right; +} + +/*------------------------------------------------------------------------------ + 16.1 - Custom Header Screen +------------------------------------------------------------------------------*/ + +.appearance_page_custom-header .available-headers .default-header { + float: right; + margin: 0 0 20px 20px; +} + +.appearance_page_custom-header .random-header { + margin: 0 0 20px 20px; +} + +.appearance_page_custom-header .available-headers label input, +.appearance_page_custom-header .random-header label input { + margin-right: 0; + margin-left: 10px; +} + +/*------------------------------------------------------------------------------ + 16.2 - Custom Background Screen +------------------------------------------------------------------------------*/ + +/* No RTL for now, this space intentionally left blank */ + + +/*------------------------------------------------------------------------------ + 16.3 - Tabbed Admin Screen Interface (Experimental) +------------------------------------------------------------------------------*/ + +.nav-tab { + margin: 0 0 -1px 6px; +} + +h2 .nav-tab { + font-family: Tahoma, Arial, sans-serif; +} + + +/*------------------------------------------------------------------------------ + 17.0 - Plugins +------------------------------------------------------------------------------*/ + +.plugins .desc ul, +.plugins .desc ol { + margin: 0 2em 0 0; +} + +#wpbody-content .plugins .plugin-title, #wpbody-content .plugins .theme-title { + padding-right: 0; + padding-left: 12px; +} + + +/*------------------------------------------------------------------------------ + 18.0 - Users +------------------------------------------------------------------------------*/ + +#profile-page .form-table #rich_editing { + margin-right: 0; + margin-left: 5px +} + +#profile-page #pass1, +#profile-page #pass2, +#profile-page #user_login { + direction: ltr; +} + +#your-profile legend { + font-family: Tahoma, Arial, sans-serif; +} + +/*------------------------------------------------------------------------------ + 19.0 - Tools +------------------------------------------------------------------------------*/ + +.pressthis a span { + background-position: right 5px; + padding: 8px 27px 8px 11px; +} + +.pressthis a:after { + right: auto; + left: 10px; + background: transparent; + transform: skew(-20deg) rotate(-6deg); + -webkit-transform: skew(-20deg) rotate(-6deg); + -moz-transform: skew(-20deg) rotate(-6deg); +} + + +.pressthis a:hover:after { + transform: skew(-20deg) rotate(-9deg); + -webkit-transform: skew(-20deg) rotate(-9deg); + -moz-transform: skew(-20deg) rotate(-9deg); +} + +/*------------------------------------------------------------------------------ + 20.0 - Settings +------------------------------------------------------------------------------*/ + +#utc-time, #local-time { + padding-left: 0; + padding-right: 25px; + font-style: normal; + font-family: Tahoma, Arial, sans-serif; +} + +/*------------------------------------------------------------------------------ + 21.0 - Admin Footer +------------------------------------------------------------------------------*/ + +#footer { + margin-left: 20px; +} + +#wpcontent, +#footer { + margin-right: 165px; +} + +/*------------------------------------------------------------------------------ + 22.0 - About Pages +------------------------------------------------------------------------------*/ + +.wrap.about-wrap { + margin-left: 40px; + margin-right: 20px; +} + +.about-wrap h1, +.about-text { + margin-right: 0; + margin-left: 200px; +} + +.about-wrap h2.nav-tab-wrapper { + padding-left: 0px; + padding-right: 6px; +} + +.about-wrap .wp-badge { + right: auto; + left: 0; +} + +.about-wrap h2 .nav-tab { + margin-right: 0; + margin-left: 3px; +} + +.about-wrap .changelog li { + margin-left: 0; + margin-right: 3em; +} + +.about-wrap .three-col-images .last-feature { + float: left; +} + +.about-wrap .three-col-images .first-feature { + float: right; +} + +.about-wrap .feature-section.three-col div { + margin-right: 0; + margin-left: 4.999999999%; + float: right; +} + +.about-wrap .feature-section.three-col h4 { + text-align: right; +} + +.about-wrap .feature-section.three-col img { + margin-right: 5px; + margin-left: 0; +} + +.about-wrap .feature-section.three-col .last-feature { + margin-left: 0; +} + +.about-wrap .feature-section img { + margin: 0 0 10px 0.7%; +} + +.about-wrap .feature-section.images-stagger-right img { + float: left; + margin: 0 12px 12px 5px; +} + +.about-wrap .feature-section.images-stagger-left img { + float: right; + margin: 0 5px 12px 12px; +} + +.about-wrap li.wp-person, +.about-wrap li.wp-person img.gravatar { + float: right; + margin-right: 0; + margin-left: 10px; +} + +/*------------------------------------------------------------------------------ + 23.0 - Misc +------------------------------------------------------------------------------*/ + +#template div { + margin-right: 0; + margin-left: 190px; +} + +.column-author img, .column-username img { + float: right; + margin-right: 0; + margin-left: 10px; +} + +.tagchecklist { + margin-left: 0; + margin-right: 14px; +} + +.tagchecklist strong { + margin-left: 0; + margin-right: -8px; +} + +.tagchecklist span { + margin-right: 0; + margin-left: 25px; + float: right; + +} +.tagchecklist span a { + margin: 6px -9px 0pt 0pt; + float: right; +} + +#poststuff h2 { + clear: right; +} + +#poststuff h3, +.metabox-holder h3 { + font-family: Tahoma, Arial, sans-serif; +} + +.tool-box .title { + font-family: Tahoma, Arial, sans-serif; +} + +#sidemenu { + margin: -30px 315px 0 15px; + float: left; + padding-left: 0; + padding-right: 10px; +} +#sidemenu a { + float: right; +} + +table .vers, +table .column-visible, +table .column-rating { + text-align: right; +} + +.screen-meta-toggle { + right: auto; + left: 15px; +} + +/*------------------------------------------------------------------------------ + 24.0 - Dead +------------------------------------------------------------------------------*/ + +/* - Not used anywhere in WordPress - verify and then deprecate +------------------------------------------------------------------------------*/ + +/* No RTL for now, this space intentionally left blank */ + + +/* - Only used once or twice in all of WP - deprecate for global style +------------------------------------------------------------------------------*/ + +* html #template div {margin-left: 0;} + +.list-ajax-loading { + float: left; + margin-right: 0; + margin-left: 9px; +} + +/* - Used - but could/should be deprecated with a CSS reset +------------------------------------------------------------------------------*/ +/* No RTL for now, this space intentionally left blank */ + + +/*------------------------------------------------------------------------------ + 25.0 - TinyMCE tweaks + Small tweaks for until tinymce css files are proprely RTLized +------------------------------------------------------------------------------*/ +#editorcontainer .wp_themeSkin .mceStatusbar { + padding-left: 0; + padding-right: 5px; +} +#editorcontainer .wp_themeSkin .mceStatusbar div { + float: right; +} + +#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize { + float: left; +} + +/*------------------------------------------------------------------------------ + 26.0 - Full Overlay w/ Sidebar +------------------------------------------------------------------------------*/ +.wp-full-overlay .wp-full-overlay-sidebar { + margin: 0; + left: auto; + right: 0; + border-right: 0; + border-left: 1px solid rgba( 0, 0, 0, 0.2 ); +} + +.wp-full-overlay-sidebar:after { + right: auto; + left: 0; + box-shadow: inset 5px 0 4px -4px rgba(0, 0, 0, 0.1); +} + +.wp-full-overlay.collapsed, +.wp-full-overlay.expanded .wp-full-overlay-sidebar { + margin-right: 0 !important; +} + +.wp-full-overlay.expanded { + margin-right: 300px; + margin-left: 0; +} + +.wp-full-overlay.collapsed .wp-full-overlay-sidebar { + margin-right: -300px; + margin-left: 0; +} + +/* Collapse Button */ +.wp-full-overlay .collapse-sidebar { + right: 0; + left: auto; + margin-right: 15px; +} + +.wp-full-overlay.collapsed .collapse-sidebar { + right: 100%; +} + +.wp-full-overlay .collapse-sidebar-arrow { + margin-right: 2px; + margin-left: 0; + background: transparent url('../../wp-admin/images/arrows.png') no-repeat 0 -108px; +} + +.wp-full-overlay.collapsed .collapse-sidebar-arrow { + background-position: 0 -72px; +} + +.wp-full-overlay .collapse-sidebar-label { + right: 100%; + left: auto; + margin-right: 10px; + margin-left: 0; +} + +/*------------------------------------------------------------------------------ + 27.0 - Customize Loader +------------------------------------------------------------------------------*/ +.install-theme-info .theme-install { + float: left; +} + +/* MERGED */ + +/* global */ + +/* 2 column liquid layout */ + +#wpcontent { + margin-left: 0; + margin-right: 165px; +} + +.folded #wpcontent { + margin-left: 0; + margin-right: 52px; +} + +.folded.wp-admin #footer { + margin-left: 15px; + margin-right: 52px; +} + +#wpbody-content { + float: right; +} + +#adminmenuwrap { + float: right; +} + +#adminmenu { + clear: right; +} + +/* inner 2 column liquid layout */ +.inner-sidebar { + float: left; + clear: left; +} + +.has-right-sidebar #post-body { + float: right; + clear: right; + margin-right: 0; + margin-left: -340px; +} + +.has-right-sidebar #post-body-content { + margin-right: 0; + margin-left: 300px; +} + +/* 2 columns main area */ + +#col-right { + float: left; + clear: left; +} + +/* utility classes*/ +.alignleft { + float: right; +} + +.alignright { + float: left; +} + +.textleft { + text-align: right; +} + +.textright { + text-align: left; +} + +/* Hide visually but not from screen readers */ +.screen-reader-text, .screen-reader-text span { + left: auto; + right: -1000em; +} + +/* styles for use by people extending the WordPress interface */ + +body, +td, +textarea, +input, +select { + font-family: Tahoma, Arial, sans-serif; +} + +ul.ul-disc, +ul.ul-square, +ol.ol-decimal { + margin-left: 0; + margin-right: 1.8em; +} + +.subsubsub { + float: right; +} + +.widefat thead th:first-of-type { + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 3px; + border-top-left-radius: 0; + border-top-right-radius: 3px; +} + +.widefat thead th:last-of-type { + -webkit-border-top-right-radius: 0; + -webkit-border-top-left-radius: 3px; + border-top-right-radius: 0; + border-top-left-radius: 3px; +} +.widefat tfoot th:first-of-type { + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 3px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 3px; +} +.widefat tfoot th:last-of-type { + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 3px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 3px; +} + +.widefat th { + text-align: right; +} + +.widefat th input { + margin: 0 8px 0 0; +} + +.wrap { + margin-right: 0; + margin-left: 15px; +} + +.wrap h2, +.subtitle { + font-family: Tahoma, Arial, sans-serif; +} + +.wrap h2 { + padding-right: 0; + padding-left: 15px; +} + +.subtitle { + padding-left: 0; + padding-right: 25px; +} + +.wrap .add-new-h2 { + font-family: Tahoma, Arial, sans-serif; + margin-left: 0; + margin-right: 4px; +} + +.wrap h2.long-header { + padding-left: 0; +} + +/* dashboard */ +#dashboard-widgets-wrap .has-sidebar { + margin-right: 0; + margin-left: -51%; +} + +#dashboard-widgets-wrap .has-sidebar .has-sidebar-content { + margin-right: 0; + margin-left: 51%; +} + +.view-all { + right: auto; + left: 0; +} + +#dashboard_right_now p.sub, +#dashboard-widgets h4, +a.rsswidget, +#dashboard_plugins h4, +#dashboard_plugins h5, +#dashboard_recent_comments .comment-meta .approve, +#dashboard_right_now td.b, +#dashboard_right_now .versions a { + font-family: Tahoma, Arial, sans-serif; +} + +#dashboard_right_now p.sub { + left:auto; + right:15px; +} + +#dashboard_right_now td.b { + padding-right: 0; + padding-left: 6px; + text-align: left; +} + +#dashboard_right_now .t { + padding-right: 0; + padding-left: 12px; +} + +#dashboard_right_now .table_content { + float:right; +} + +#dashboard_right_now .table_discussion { + float:left; +} + +#dashboard_right_now a.button { + float: left; + clear: left; +} + +#dashboard_plugins .inside span { + padding-left: 0; + padding-right: 5px; +} + +#dashboard-widgets h3 .postbox-title-action { + right: auto; + left: 30px; +} + +#the-comment-list .pingback { + padding-left: 0 !important; + padding-right: 9px !important; +} + +/* Recent Comments */ +#the-comment-list .comment-item { + padding: 1em 70px 1em 10px; +} + +#the-comment-list .comment-item .avatar { + float: right; + margin-left: 0; + margin-right: -60px; +} + +/* Feeds */ +.rss-widget cite { + text-align: left; +} + +.rss-widget span.rss-date { + font-family: Tahoma, Arial, sans-serif; + margin-left: 0; + margin-right: 3px; +} + +/* QuickPress */ +#dashboard_quick_press h4 { + float: right; + text-align: left; +} + +#dashboard_quick_press .wp-media-buttons { + margin: 0 5em 0.5em 0; +} + +#dashboard_quick_press h4 label { + margin-right: 0; + margin-left: 10px; +} + +#dashboard_quick_press .input-text-wrap, +#dashboard_quick_press .textarea-wrap { + margin: 0 5em 1em 0; +} + +#dashboard_quick_press #media-buttons { + margin: 0 5em .5em 0; + padding: 0; +} + +#dashboard-widgets #dashboard_quick_press form p.submit { + margin-left: 0; + margin-right: 4.6em; +} + +#dashboard-widgets #dashboard_quick_press form p.submit input { + float: right; +} + +#dashboard-widgets #dashboard_quick_press form p.submit #save-post { + margin: 0 10px 0 1em; +} + +#dashboard-widgets #dashboard_quick_press form p.submit #publish { + float: left; +} + +#dashboard-widgets #dashboard_quick_press form p.submit img.waiting { + margin: 4px 0 0 6px; +} + +/* Recent Drafts */ +#dashboard_recent_drafts h4 abbr { + font-family: Tahoma, Arial, sans-serif; + margin-left:0; + margin-right: 3px; +} + +/* login */ +body.login { + font-family: Tahoma, Arial, sans-serif; +} + +.login form { + margin-right: 8px; + margin-left: 0; +} + +.login form .forgetmenot { + float: right; +} + +.login form .submit { + float: left; +} + +#login form .submit input { + font-family: Tahoma, Arial, sans-serif; +} + +.login #nav, +.login #backtoblog { + margin: 0 16px 0 0; +} + +#login_error, +.login .message { + margin: 0 8px 16px 0; +} + +.login #user_pass, +.login #user_login, +.login #user_email { + margin-left: 6px; + margin-right: 0; + direction: ltr; +} + +.login h1 a { + text-decoration: none; +} + +.login .button-primary { + float: left; +} + +/* nav-menu */ +#nav-menus-frame { + margin-right: 300px; + margin-left: 0; +} + +#wpbody-content #menu-settings-column { + margin-right: -300px; + margin-left: 0; + float: right; +} + +/* Menu Container */ +#menu-management-liquid { + float: right; +} + +#menu-management { + margin-left: 20px; + margin-right: 0; +} + +.post-body-plain { + padding: 10px 0 0 10px; +} + +/* Menu Tabs */ + +#menu-management .nav-tabs-arrow-left { + right: 0; + left:auto; +} + +#menu-management .nav-tabs-arrow-right { + left: 0; + right:auto; + text-align: left; + font-family: Tahoma, Arial, sans-serif; +} + +#menu-management .nav-tabs { + padding-right: 20px; + padding-left: 10px; +} + +.js #menu-management .nav-tabs { + float: right; + margin-right: 0px; + margin-left: -400px; +} + +#select-nav-menu-container { + text-align: left; +} + +#wpbody .open-label { + float:right; +} + +#wpbody .open-label span { + padding-left: 10px; + padding-right:0; +} + +.js .input-with-default-title { + font-style: normal; + font-weight: bold; +} + +/* Add Menu Item Boxes */ +.postbox .howto input { + float: left; +} +#nav-menu-theme-locations .button-controls { + text-align: left; +} + +/* Button Primary Actions */ + +.meta-sep, +.submitcancel { + float: right; +} + +#cancel-save { + margin-left: 0; + margin-right: 20px; +} + +/* Button Secondary Actions */ +.list-controls { + float: right; +} +.add-to-menu { + float: left; +} + +/* Custom Links */ +#add-custom-link label span { + float: right; + padding-left: 5px; + padding-right: 0; +} + +.nav-menus-php .howto span { + float: right; +} + +.list li .menu-item-title input { + margin-left: 3px; + margin-right: 0; +} + +/* Nav Menu */ +.menu-item-handle { + padding-right: 10px; + padding-left: 0; +} +.menu-item-edit-active .menu-item-handle { + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +.menu-item-handle .item-title { + margin-left:13em; + margin-right:0; +} +.menu-item-handle .item-edit { + right: auto; + left: -20px; +} + +/* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */ +.menu-item-depth-0 { margin-right: 0px; margin-left:0;} +.menu-item-depth-1 { margin-right: 30px; margin-left:0;} +.menu-item-depth-2 { margin-right: 60px; margin-left:0;} +.menu-item-depth-3 { margin-right: 90px; margin-left:0;} +.menu-item-depth-4 { margin-right: 120px; margin-left:0;} +.menu-item-depth-5 { margin-right: 150px; margin-left:0;} +.menu-item-depth-6 { margin-right: 180px; margin-left:0;} +.menu-item-depth-7 { margin-right: 210px; margin-left:0;} +.menu-item-depth-8 { margin-right: 240px; margin-left:0;} +.menu-item-depth-9 { margin-right: 270px; margin-left:0;} +.menu-item-depth-10 { margin-right: 300px; margin-left:0;} +.menu-item-depth-11 { margin-right: 330px; margin-left:0;} + +.menu-item-depth-0 .menu-item-transport { margin-right: 0px; margin-left:0;} +.menu-item-depth-1 .menu-item-transport { margin-right: -30px; margin-left:0;} +.menu-item-depth-2 .menu-item-transport { margin-right: -60px; margin-left:0;} +.menu-item-depth-3 .menu-item-transport { margin-right: -90px; margin-left:0;} +.menu-item-depth-4 .menu-item-transport { margin-right: -120px; margin-left:0;} +.menu-item-depth-5 .menu-item-transport { margin-right: -150px; margin-left:0;} +.menu-item-depth-6 .menu-item-transport { margin-right: -180px; margin-left:0;} +.menu-item-depth-7 .menu-item-transport { margin-right: -210px; margin-left:0;} +.menu-item-depth-8 .menu-item-transport { margin-right: -240px; margin-left:0;} +.menu-item-depth-9 .menu-item-transport { margin-right: -270px; margin-left:0;} +.menu-item-depth-10 .menu-item-transport { margin-right: -300px; margin-left:0;} +.menu-item-depth-11 .menu-item-transport { margin-right: -330px; margin-left:0;} + +/* Menu item controls */ +.item-type { + padding-left: 10px; + padding-right:0; +} + +.item-controls { + left: 20px; + right: auto; +} + +.item-controls .item-order { + padding-left: 10px; + padding-right: 0; +} + +.item-edit { + left: -20px; + right:auto; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 0; +} + +/* Menu editing */ +.menu-item-settings { + padding: 10px 10px 10px 0; + border-width: 0 1px 1px 1px; +} + +#custom-menu-item-url { + direction: ltr; +} + +.link-to-original { + font-style: normal; + font-weight: bold; +} + +.link-to-original a { + padding-right: 4px; + padding-left:0; +} + +.menu-item-settings .description-thin, +.menu-item-settings .description-wide { + margin-left: 10px; + margin-right:0; + float: right; +} + +/* Major/minor publishing actions (classes) */ +.major-publishing-actions .publishing-action { + text-align: left; + float: left; +} + +.major-publishing-actions .delete-action { + text-align: right; + float: right; + padding-left: 15px; + padding-right:0; +} + +.menu-name-label { + margin-left: 15px; + margin-right:0; +} + +.auto-add-pages { + float: right; +} + +/* Star ratings */ +div.star-holder { + background: url('../images/stars-rtl.png?ver=20120506.png') repeat-x bottom right; +} +div.star-holder .star-rating { + background: url('../images/stars-rtl.png?ver=20120506.png') repeat-x top right; + float: right; +} + +#plugin-information ul#sidemenu { + left: auto; + right: 0; +} + +#plugin-information h2 { + margin-right: 0; + margin-left: 200px; +} + +#plugin-information .fyi { + margin-left: 5px; + margin-right: 20px; +} + +#plugin-information .fyi h2 { + margin-left: 0; +} + +#plugin-information .fyi ul { + padding: 10px 7px 10px 5px; +} + +#plugin-information #section-screenshots li p { + padding-left: 0; + padding-right: 20px; +} + +#plugin-information #section-screenshots ol, +#plugin-information .updated, +#plugin-information pre { + margin-right: 0; + margin-left: 215px; +} + +#plugin-information .updated, +#plugin-information .error { + clear: none; + direction: rtl; +} + +#plugin-information #section-holder .section { + direction: ltr; +} + +/* Editor/Main Column */ +.posting { + margin-left: 212px; + margin-right: 0; + position: relative; +} + +h3.tb { + margin-left: 0; + margin-right: 5px; +} + +#publish { + float: left; +} + +.postbox .handlediv { + float: left; +} + +.actions li { + float: right; + margin-right: 0; + margin-left: 10px; +} + +#extra-fields .actions { + margin: -23px 0 0 -7px; +} + +/* Photo Styles */ +#img_container a { + float: right; +} + +#category-add input, +#category-add select { + font-family: Tahoma, Arial, sans-serif; +} + +/* Tags */ +#tagsdiv #newtag { + margin-right: 0; + margin-left: 5px; +} + +#tagadd { + margin-left: 0; + margin-right: 3px; +} + +#tagchecklist span { + margin-left: .5em; + margin-right: 10px; + float: right; +} +#tagchecklist span a { + margin: 6px -9px 0 0; + float: right; +} + +.submit input, +.button, +.button-primary, +.button-secondary, +.button-highlighted, +#postcustomstuff .submit input { + font-family: Tahoma, Arial, sans-serif; +} + +.ac_results li { + text-align: right; +} + +#TB_ajaxContent #options { + right: auto; + left: 25px; +} + +#post_status { + margin-left: 0; + margin-right: 10px; +} + +/* theme-editor, plugin-editor */ +#templateside { + float: left; +} + +#template textarea, +#docs-list { + direction: ltr; +} + +/* theme-install */ +.theme-details .theme-version { + float: right; +} + +.theme-details .star-holder { + float: left; +} + +.feature-filter .feature-group { + float: right; +} + +.feature-filter .feature-name { + float: right; + text-align: left; +} + +.feature-filter .feature-group li { + float: right; + padding-right: 0; + padding-left: 25px; +} + +/* widgets */ +/* 2 column liquid layout */ +div.widget-liquid-left { + float: right; + clear: right; + margin-right: 0; + margin-left: -325px; +} + +div#widgets-left { + margin-right: 5px; + margin-left: 325px; +} + +div.widget-liquid-right { + float: left; + clear: left; +} + +.inactive-sidebar .widget { + float: right; +} + +div.sidebar-name h3 { + font-family: Tahoma, Arial, sans-serif; +} + +#widget-list .widget { + float: right; +} + +.inactive-sidebar .widget-placeholder { + float: right; +} + +.widget-top .widget-title-action { + float: left; +} + +.widget-control-edit { + padding: 0 0 0 8px; +} + +.sidebar-name-arrow { + float: left; +} + +/* Press This */ +.press-this-sidebar { + float: left; +} + +.press-this #header-logo, +.press-this #wphead h1 { + float: right; +} + +/* RTL */ +.ltr { + direction: ltr; +} + +/* =Localized CSS +-------------------------------------------------------------- */ + +/* he_IL: Remove Tahoma from the font stack. Arial is best for Hebrew. */ +body.locale-he-il, +.locale-he-il .quicktags, .locale-he-il .search, +.locale-he-il .howto, +.locale-he-il #adminmenu .awaiting-mod, +.locale-he-il #adminmenu span.update-plugins, +.locale-he-il #sidemenu li a span.update-plugins, +.locale-he-il .post-com-count-wrapper, +.locale-he-il .widefat th, +.locale-he-il .tablenav .displaying-num, +.locale-he-il .inline-edit-row fieldset span.title, +.locale-he-il .inline-edit-row fieldset span.checkbox-title, +.locale-he-il .inline-edit-row fieldset ul.cat-checklist label, +.locale-he-il .inline-edit-row .catshow, +.locale-he-il .inline-edit-row .cathide, +.locale-he-il .inline-edit-row #bulk-titles div, +.locale-he-il p.help, +.locale-he-il p.description, +.locale-he-il span.description, +.locale-he-il .form-wrap p, +.locale-he-il h2 .nav-tab, +.locale-he-il #your-profile legend, +.locale-he-il #utc-time, .locale-he-il #local-time, +.locale-he-il #poststuff h3, +.locale-he-il .metabox-holder h3, +.locale-he-il .tool-box .title, +.locale-he-il td, +.locale-he-il textarea, +.locale-he-il input, +.locale-he-il select, +.locale-he-il .wrap h2, +.locale-he-il .subtitle, +.locale-he-il .wrap .add-new-h2, +.locale-he-il #dashboard_right_now p.sub, +.locale-he-il #dashboard-widgets h4, +.locale-he-il a.rsswidget, +.locale-he-il #dashboard_plugins h4, +.locale-he-il #dashboard_plugins h5, +.locale-he-il #dashboard_recent_comments .comment-meta .approve, +.locale-he-il #dashboard_right_now td.b, +.locale-he-il #dashboard_right_now .versions a, +.locale-he-il .rss-widget span.rss-date, +.locale-he-il #dashboard_recent_drafts h4 abbr, +body.login.locale-he-il, +.locale-he-il #login form .submit input, +.locale-he-il #menu-management .nav-tabs-arrow-right, +.locale-he-il #category-add input, +.locale-he-il #category-add select, +.locale-he-il .submit input, +.locale-he-il .button, +.locale-he-il .button-primary, +.locale-he-il .button-secondary, +.locale-he-il .button-highlighted, +.locale-he-il #postcustomstuff .submit input, +.locale-he-il div.sidebar-name h3 { + font-family: Arial, sans-serif; +} + +/* he_IL: Have be bold rather than italic. */ +.locale-he-il em { + font-style: normal; + font-weight: bold; +} diff --git a/wp-admin/css/wp-admin.css b/wp-admin/css/wp-admin.css new file mode 100644 index 0000000..cffb7b9 --- /dev/null +++ b/wp-admin/css/wp-admin.css @@ -0,0 +1 @@ +#wpwrap{height:auto;min-height:100%;width:100%;position:relative}#wpcontent{height:100%}#wpcontent,#footer{margin-left:165px}.folded #wpcontent,.folded #footer{margin-left:52px}#wpbody-content{padding-bottom:65px;float:left;width:100%}#adminmenuback,#adminmenuwrap,#adminmenu,#adminmenu .wp-submenu,#adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-has-current-submenu .wp-submenu{width:145px}#adminmenuback{position:absolute;top:0;bottom:0;z-index:-1}#adminmenu{clear:left;margin:0;padding:0;list-style:none}.folded #adminmenuback,.folded #adminmenuwrap,.folded #adminmenu,.folded #adminmenu li.menu-top{width:32px}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.inner-sidebar #side-sortables,.columns-2 .inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-2000px}.has-right-sidebar #post-body-content{margin-right:300px;float:none;width:auto}#col-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0}#col-left{width:35%}#col-right{float:right;clear:right;width:65%}.col-wrap{padding:0 7px}.alignleft{float:left}.alignright{float:right}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.screen-reader-text,.screen-reader-text span{position:absolute;left:-1000em;height:1px;width:1px;overflow:hidden}.hidden,.js .closed .inside,.js .hide-if-js,.no-js .hide-if-no-js{display:none}input[type="text"],input[type="password"],input[type="number"],input[type="search"],input[type="email"],input[type="url"],textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input[type="checkbox"],input[type="radio"]{vertical-align:text-top;padding:0;margin:1px 0 0}input[type="search"]{-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration{display:none}html,body{height:100%;margin:0;padding:0}body{font-family:sans-serif;font-size:12px;line-height:1.4em;min-width:600px}body.iframe{min-width:0}body.login{background:#fbfbfb;min-width:0}iframe,img{border:0}td,textarea,input,select{font-family:inherit;font-size:inherit;font-weight:inherit}td,textarea{line-height:inherit}input,select{line-height:15px}a,input,select{outline:0}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}p{margin:1em 0}blockquote{margin:1em}label{cursor:pointer}li,dd{margin-bottom:6px}textarea,input,select{margin:1px;padding:3px}h1,h2,h3,h4,h5,h6{display:block;font-weight:bold}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ul,ol{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc outside}ul.ul-square{list-style:square outside}ol.ol-decimal{list-style:decimal outside}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:1.8em}ul.ul-disc>li,ul.ul-square>li,ol.ol-decimal>li{margin:0 0 .5em}.code,code{font-family:Consolas,Monaco,monospace}kbd,code{padding:1px 3px;margin:0 1px;font-size:11px}.subsubsub{list-style:none;margin:8px 0 5px;padding:0;white-space:nowrap;font-size:12px;float:left}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:normal}.subsubsub a.current{font-weight:bold;background:0;border:0}.subsubsub li{display:inline;margin:0;padding:0}.widefat,div.updated,div.error,.wrap .add-new-h2,textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="url"],select,.tablenav .tablenav-pages a,.tablenav-pages span.current,#titlediv #title,.postbox,#postcustomstuff table,#postcustomstuff input,#postcustomstuff textarea,.imgedit-menu div,.plugin-update-tr .update-message,#poststuff .inside .the-tagcloud,.login form,#login_error,.login .message,#menu-management .menu-edit,.nav-menus-php .list-container,.menu-item-handle,.link-to-original,.nav-menus-php .major-publishing-actions .form-invalid,.press-this #message,#TB_window,.tbtitle,.highlight,.feature-filter,#widget-list .widget-top,.editwidget .widget-inside{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a{text-decoration:none}.widefat thead th:first-of-type{-webkit-border-top-left-radius:3px;border-top-left-radius:3px}.widefat thead th:last-of-type{-webkit-border-top-right-radius:3px;border-top-right-radius:3px}.widefat tfoot th:first-of-type{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.widefat tfoot th:last-of-type{-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}.widefat td,.widefat th{border-width:1px 0;border-style:solid}.widefat tfoot th{border-bottom:0}.widefat .no-items td{border-bottom-width:0}.widefat td{font-size:12px;padding:4px 7px 2px;vertical-align:top}.widefat td p,.widefat td ol,.widefat td ul{font-size:12px}.widefat th{padding:7px 7px 8px;text-align:left;line-height:1.3em;font-size:14px}.widefat th input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:11px 0 0;vertical-align:top}.widefat tbody th.check-column{padding:9px 0 22px}.widefat .num,.column-comments,.column-links,.column-posts{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:4px 15px 0 0}div.updated,div.error{padding:0 .6em;margin:5px 15px 2px}div.updated p,div.error p{margin:.5em 0;padding:2px}.wrap div.updated,.wrap div.error,.media-upload-form div.error{margin:5px 0 15px}.wrap h2,.subtitle{font-weight:normal;margin:0;text-shadow:#fff 0 1px 0}.wrap h2{font-size:23px;padding:9px 15px 4px 0;line-height:29px}.subtitle{font-size:14px;padding-left:25px}.wrap .add-new-h2{font-family:sans-serif;margin-left:4px;padding:3px 8px;position:relative;top:-3px;text-decoration:none;font-size:12px;border:0 none}.wrap h2.long-header{padding-right:0}div.sidebar-name h3,#menu-management .nav-tab,#dashboard_plugins h5,a.rsswidget,#dashboard_right_now td.b,#dashboard-widgets h4,.tool-box .title,#poststuff h3,.metabox-holder h3,.pressthis a,#your-profile legend,.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title,.tablenav .displaying-num,.widefat th,.quicktags,.search{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif}h2 .nav-tab,.wrap h2,.subtitle,.login form .input{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif}.quicktags,.search{font-size:12px}.icon32{float:left;height:34px;margin:7px 8px 0 0;width:36px}.icon16{height:18px;width:18px;padding:6px 6px;margin:-6px 0 0 -8px;float:left}.key-labels label{line-height:24px}.pre{white-space:pre-wrap;white-space:-moz-pre-wrap!important;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.howto{font-style:italic;display:block;font-family:sans-serif}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}.wp-admin select{padding:2px;height:2em}.wp-admin select[multiple]{height:auto}select option{padding:2px}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}form p.submit a.cancel:hover{text-decoration:none}.submit input,.button,input.button,.button-primary,input.button-primary,.button-secondary,input.button-secondary,.button-highlighted,input.button-highlighted,#postcustomstuff .submit input{text-decoration:none;font-size:12px!important;line-height:13px;padding:3px 8px;cursor:pointer;border-width:1px;border-style:solid;-webkit-border-radius:11px;border-radius:11px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}#minor-publishing-actions input,#major-publishing-actions input,#minor-publishing-actions .preview{min-width:80px;text-align:center}textarea.all-options,input.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text,#adduser .form-field input{width:25em}input.small-text{width:50px}input[type="number"].small-text{width:60px}#doaction,#doaction2,#post-query-submit{margin-right:8px}.tablenav select[name="action"],.tablenav select[name="action2"]{width:130px}.tablenav select[name="m"]{width:155px}.tablenav select#cat{width:170px}#wpcontent option{padding:2px}#timezone_string option{margin-left:1em}label,#your-profile label+a{vertical-align:middle}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{border-style:solid;border-width:1px;float:left;margin:13px 5px 5px 1px;padding:3px 5px;text-align:center;width:200px;display:none}.indicator-hint{padding-top:8px}p.search-box{float:right;margin:0}input[type="text"].ui-autocomplete-loading{background:transparent url('../images/loading.gif') no-repeat right center;visibility:visible}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete-input.open{border-bottom-right-radius:0;border-bottom-left-radius:0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-width:1px;border-style:solid}.ui-autocomplete li{margin-bottom:0;white-space:nowrap;text-align:left}.ui-autocomplete li a{display:block;height:100%;padding:4px 10px}.ui-autocomplete li a.ui-state-hover{cursor:pointer}#major-publishing-actions{padding:10px 10px 8px;clear:both;border-top:1px solid #f5f5f5;margin-top:-2px}#delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left}#publishing-action{text-align:right;float:right;line-height:23px}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px;border-width:1px 0;border-style:solid}.misc-pub-section:first-child{border-top-width:0}.misc-pub-section-last{border-bottom-width:0}#minor-publishing-actions{padding:10px 10px 2px 8px;text-align:right}#minor-publishing{border-bottom-width:1px;border-bottom-style:solid;-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff}#save-post{float:left}#minor-publishing .ajax-loading{padding:3px 0 0 4px;float:left}.preview{float:right}#sticky-span{margin-left:18px}.side-info{margin:0;padding:4px;font-size:11px}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom-width:1px;border-bottom-style:solid}.side-info ul{margin:0;padding-left:18px;list-style:square}a.button,a.button-primary,a.button-secondary{line-height:15px;padding:3px 10px;white-space:nowrap;-webkit-border-radius:10px}.approve,.unapproved .unapprove{display:none}.unapproved .approve,.spam .approve,.trash .approve{display:inline}td.action-links,th.action-links{text-align:right}.describe .del-link{padding-left:5px}#update-nag,.update-nag{line-height:19px;padding:5px 0;font-size:12px;text-align:center;margin:-1px 15px 0 5px;border-width:1px;border-style:solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.plugins .plugin-update{padding:0}.plugin-update .update-message{margin:0 10px 8px 31px;font-weight:bold}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}.ajax-feedback{visibility:hidden;vertical-align:bottom}#ajax-response.alignleft{margin-left:2em}#adminmenu a,#sidemenu a,#taglist a,#catlist a{text-decoration:none}#screen-options-wrap,#contextual-help-wrap{margin:0;padding:8px 20px 12px;position:relative;overflow:auto}#screen-meta .screen-reader-text{visibility:hidden}#screen-meta-links{margin:0 24px 0 0}#screen-meta{display:none;position:relative;margin:0 15px 0 5px;border-width:0 1px 1px;border-style:none solid solid}#screen-options-link-wrap,#contextual-help-link-wrap{float:right;height:23px;padding:0;margin:0 0 0 6px;font-family:sans-serif}#screen-options-link-wrap,#contextual-help-link-wrap,#screen-meta{-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#screen-meta-links .screen-meta-toggle{position:relative;top:-1px}#screen-meta-links a.show-settings{text-decoration:none;z-index:1;padding:1px 16px 0 6px;height:22px;line-height:22px;font-size:12px;display:block;text-shadow:rgba(255,255,255,0.7) 0 1px 0}#screen-meta-links a.show-settings:hover{text-decoration:none}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#screen-options-wrap h5,#contextual-help-wrap h5{margin:8px 0;font-size:13px}.metabox-prefs label{display:inline-block;padding-right:15px;white-space:nowrap;line-height:30px}.metabox-prefs label input{margin:0 5px 0 2px}.metabox-prefs .columns-prefs label input{margin:0 2px}.metabox-prefs label a{display:none}#contextual-help-wrap{padding:0;margin-left:-4px}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border-width:0 1px;border-style:solid}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}.contextual-help-tabs{float:left;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:1px 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:18px;text-decoration:none}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-width:1px 0 1px 1px;border-style:solid}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 22px 12px 0;line-height:1.6em}.help-tab-content.active{display:block}.help-tab-content li{list-style-type:disc;margin-left:18px}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto}#adminmenuback,#adminmenuwrap{border-width:0 1px 0 0;border-style:solid}#adminmenuwrap{position:relative;float:left}#adminmenushadow{position:absolute;top:0;right:0;bottom:0;width:6px;z-index:20}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none}#adminmenu .wp-submenu{list-style:none;padding:0;margin:0;overflow:hidden}#adminmenu li .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{display:none;position:absolute;top:-1px;left:146px;z-index:999;overflow:hidden}.js #adminmenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu li.focused .wp-submenu{display:block}#adminmenu .wp-has-current-submenu .wp-submenu{position:relative;z-index:2;top:auto;left:auto;right:auto;bottom:auto;padding:0}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.folded #adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{top:-5px;left:26px}#adminmenu .wp-submenu.sub-open,#adminmenu li.focused.wp-not-current-submenu .wp-submenu,.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.no-js #adminmenu .wp-has-submenu:hover .wp-submenu,.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu{padding:0 8px 8px 0}.no-js #adminmenu .wp-has-current-submenu:hover .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu{padding:0}#adminmenu .wp-submenu a{font-size:12px;line-height:18px}#adminmenu a.menu-top,#adminmenu .wp-submenu-head{font-size:13px;line-height:18px}#adminmenu div.wp-submenu-head{display:none}.folded #adminmenu div.wp-submenu-head{display:block}.folded #adminmenu a.menu-top,body.no-js #adminmenu .wp-menu-toggle,.folded #adminmenu div.wp-menu-toggle{display:none}#adminmenu div.wp-menu-image{float:left;width:28px;height:28px}.folded #adminmenu div.wp-menu-image{width:30px}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px}#adminmenu li.menu-top{min-height:29px;position:relative}#adminmenu a.menu-top{font-weight:bold;line-height:18px;min-width:10em;padding:5px 5px;border-width:1px 0 1px;border-style:solid}#adminmenu li.wp-menu-open{border-width:0 0 1px;border-style:solid}#adminmenu .wp-submenu ul{padding:4px 0}#adminmenu .wp-submenu a{margin:0}#adminmenu li li{margin-left:8px}#adminmenu .wp-submenu a,#adminmenu li li a,.folded #adminmenu .wp-not-current-submenu li a{padding-left:12px}#adminmenu .wp-not-current-submenu li a{padding-left:18px}.folded #adminmenu li li{margin-left:0}.folded #adminmenu li li a{padding-left:0}.wp-menu-arrow{display:none;cursor:auto;z-index:25;position:absolute;right:100%;margin:0;height:30px;width:6px;-moz-transform:translate(146px);-webkit-transform:translate(146px);-o-transform:translate(146px);-ms-transform:translate(146px);transform:translate(146px)}#adminmenu li.wp-has-current-submenu .wp-menu-arrow,#adminmenu li.menu-top:hover .wp-menu-arrow,#adminmenu li.current .wp-menu-arrow,#adminmenu li.focused .wp-menu-arrow,#adminmenu li.menu-top.wp-has-submenu:hover .wp-menu-arrow div{display:block}#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow div{display:none}#adminmenu li.menu-top:hover .wp-menu-arrow,#adminmenu li.menu-top.focused .wp-menu-arrow{z-index:1001}.ie8 #adminmenu li.menu-top:hover .wp-menu-arrow{display:none}#adminmenu .wp-menu-arrow div{position:absolute;top:7px;left:-1px;width:14px;height:15px;-moz-transform:matrix(-0.6,1,0.6,1,0,0);-webkit-transform:matrix(-0.6,1,0.6,1,0,0);-o-transform:matrix(-0.6,1,0.6,1,0,0);-ms-transform:matrix(-0.6,1,0.6,1,0,0);transform:matrix(-0.6,1,0.6,1,0,0)}#adminmenu li.wp-not-current-submenu .wp-menu-arrow{-moz-transform:translate(145px);-webkit-transform:translate(145px);-o-transform:translate(145px);-ms-transform:translate(145px);transform:translate(145px);height:28px;border-width:1px 0;border-style:solid}.folded .wp-menu-arrow{-moz-transform:translate(33px);-webkit-transform:translate(33px);-o-transform:translate(33px);-ms-transform:translate(33px);transform:translate(33px)}#adminmenu .wp-not-current-submenu .wp-menu-arrow div{width:15px;top:6px;border-width:0 0 1px 1px;border-style:solid}.wp-menu-arrow,.folded #adminmenu li.menu-top:hover .wp-menu-arrow{display:none}.folded #adminmenu li.current:hover .wp-menu-arrow,.folded #adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow{display:block;z-index:125}#adminmenu .wp-submenu li{padding:0;margin:0}.folded #adminmenu li.menu-top{border-width:1px 0;border-style:solid none}#adminmenu .wp-menu-image img{float:left;padding:5px 0 0 2px;opacity:.6;filter:alpha(opacity=60)}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100)}#adminmenu li.wp-menu-separator{height:3px;padding:0;margin:0;border-width:1px 0;border-style:solid;cursor:inherit}#adminmenu div.separator{height:1px;padding:0;border-width:1px 0 0 0;border-style:solid}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 4px 5px 10px;cursor:default;border-width:1px 0;border-style:solid}#adminmenu li .wp-submenu-wrap{border-width:1px 1px 1px 0;border-style:solid solid solid none;position:relative;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}#adminmenu li.wp-menu-open .wp-submenu-wrap{border:0 none}.folded #adminmenu .wp-submenu .wp-submenu-wrap{margin-top:3px}.folded #adminmenu .wp-has-current-submenu{margin-bottom:1px}.folded #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap{margin-top:4px}.folded #adminmenu .wp-submenu ul{border-width:0 0 0 1px;border-style:solid}.folded #adminmenu .wp-submenu a{padding-left:10px}.folded #adminmenu a.wp-has-submenu{margin-left:40px}#adminmenu .wp-menu-toggle{width:18px;clear:right;float:right;margin:1px 0 0;height:27px;padding:1px 2px 0 0;cursor:pointer}#adminmenu .wp-menu-image a{height:24px}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{position:absolute;font-family:sans-serif;font-size:9px;line-height:17px;font-weight:bold;margin-top:1px;margin-left:7px;-webkit-border-radius:10px;border-radius:10px}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span,#sidemenu li a span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,#sidemenu li a .count-0{display:none}#collapse-menu{font-size:12px;line-height:34px}.folded #collapse-menu span{display:none}#collapse-button,#collapse-button div{width:15px;height:15px}#collapse-button{float:left;margin:8px 6px;border-width:1px;border-style:solid;-webkit-border-radius:10px;border-radius:10px}@media only screen and (max-width:900px){#wpcontent,#footer{margin-left:52px}#adminmenuback,#adminmenuwrap,#adminmenu,#adminmenu li.menu-top{width:32px}#adminmenu .wp-has-current-submenu .wp-submenu{display:none;position:absolute;width:145px;z-index:999;overflow:hidden}#adminmenu .wp-has-current-submenu .wp-submenu.sub-open{display:block}#adminmenu li .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu{top:-5px;left:26px}#adminmenu li.focused.wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open{padding:0 8px 8px 0}#adminmenu div.wp-submenu-head{display:block}#adminmenu a.menu-top,#adminmenu div.wp-menu-toggle{display:none}#adminmenu div.wp-menu-image{width:30px}#adminmenu .wp-not-current-submenu li a{padding-left:12px}#adminmenu li li{margin-left:0}#adminmenu li li a{padding-left:0}.wp-menu-arrow{-moz-transform:translate(33px);-webkit-transform:translate(33px);-o-transform:translate(33px);-ms-transform:translate(33px);transform:translate(33px)}#adminmenu li.menu-top:hover .wp-menu-arrow{display:none}#adminmenu li.current:hover .wp-menu-arrow,#adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow{display:block;z-index:125}#adminmenu li.menu-top{border-width:1px 0;border-style:solid none}#adminmenu .wp-submenu .wp-submenu-wrap{margin-top:3px}#adminmenu .wp-has-current-submenu{margin-bottom:1px}#adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}#adminmenu .wp-has-current-submenu .wp-submenu-wrap{margin-top:4px}#adminmenu .wp-submenu ul{border-width:0 0 0 1px;border-style:solid}#adminmenu .wp-submenu a{padding-left:10px}#adminmenu a.wp-has-submenu{margin-left:40px}#collapse-menu{display:none}}.post-com-count-wrapper{min-width:22px;font-family:sans-serif}.post-com-count{height:1.3em;line-height:1.1em;display:block;text-decoration:none;padding:0 0 6px;cursor:pointer;background-position:center -80px;background-repeat:no-repeat}.post-com-count span{font-size:11px;font-weight:bold;height:1.4em;line-height:1.4em;min-width:.7em;padding:0 6px;display:inline-block;-webkit-border-radius:5px;border-radius:5px}strong .post-com-count{background-position:center -55px}.post-com-count:hover{background-position:center -3px}.column-response .post-com-count{float:left;margin-right:5px;text-align:center}.response-links{float:left}#the-comment-list .attachment-80x60{padding:4px 8px}html.wp-toolbar{padding-top:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.narrow{width:70%;margin-bottom:40px}.narrow p{line-height:150%}.widefat th,.widefat td{overflow:hidden}.widefat th{font-weight:normal}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:left}#dashboard-widgets.columns-1 .postbox-container{width:100%}#dashboard-widgets.columns-2 .postbox-container{width:49.5%}#dashboard-widgets.columns-2 #postbox-container-2,#dashboard-widgets.columns-2 #postbox-container-3,#dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#dashboard-widgets.columns-3 .postbox-container{width:33.5%}#dashboard-widgets.columns-3 #postbox-container-1{width:33%}#dashboard-widgets.columns-3 #postbox-container-3,#dashboard-widgets.columns-3 #postbox-container-4{float:right}#dashboard-widgets.columns-4 .postbox-container{width:25%}.postbox-container .meta-box-sortables{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.metabox-holder .postbox-container .empty-container{border:3px dashed #ccc;height:250px}.metabox-holder.columns-1 .postbox-container .empty-container,.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#poststuff{padding-top:10px}#poststuff #post-body{padding:0}#post-body-content{width:100%;float:left}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#post-body.columns-2 #postbox-container-1{float:right;margin-right:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}#wpbody-content .metabox-holder .postbox-container .empty-container{border:0 none;height:0;min-height:0}}@media only screen and (min-width:800px) and (max-width:1200px){#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0 none;height:0;min-height:0}.index-php .screen-layout,.index-php .columns-prefs{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@media only screen and (max-width:850px){#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}#poststuff #postbox-container-1 .empty-container,#poststuff #postbox-container-1 #side-sortables:empty{border:0 none;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0}.screen-layout,.columns-prefs{display:none}}.postbox .hndle{cursor:move;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.postbox.closed .hndle{-webkit-border-radius:3px;border-radius:3px}.hndle a{font-size:11px;font-weight:normal}.postbox .handlediv{float:right;width:27px;height:30px;cursor:pointer}.sortable-placeholder{border-width:1px;border-style:dashed;margin-bottom:20px}.widget,.postbox,.stuffbox{margin-bottom:20px;padding:0;border-width:1px;border-style:solid;line-height:1}.widget .widget-top,.postbox h3,.stuffbox h3{margin-top:1px;border-bottom-width:1px;border-bottom-style:solid;cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.stuffbox h3{cursor:auto}.postbox .inside,.stuffbox .inside{padding:0 10px;line-height:1.4em}.postbox .inside{margin:10px 0;position:relative}.postbox.closed h3{border:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 5px}#dashboard-widgets-wrap{margin:0 -8px}#wpbody-content .metabox-holder{padding-top:10px}#dashboard-widgets .meta-box-sortables{margin:0 8px}#dashboard_recent_comments div.undo{border-top-style:solid;border-top-width:1px;margin:0 -10px;padding:3px 8px;font-size:11px}#the-comment-list td.comment p.comment-author{margin-top:0;margin-left:0}#the-comment-list p.comment-author img{float:left;margin-right:8px}#the-comment-list p.comment-author strong a{border:0}#the-comment-list td{vertical-align:top}#the-comment-list td.comment{word-wrap:break-word}.welcome-panel{margin:20px 8px;padding:30px 10px 20px;border-width:1px 0;border-style:solid;position:relative;line-height:1.6em;overflow:auto}.welcome-panel h3{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:32px;font-weight:normal;line-height:1.2;margin:.1em 0 .8em}.welcome-panel h4{font-size:14px}.welcome-panel .welcome-panel-close{position:absolute;top:0;right:10px;padding:8px 3px;font-size:13px;text-decoration:none}.welcome-panel .welcome-panel-close:before{background:url('../images/xit.gif') 0 17% no-repeat;content:' ';height:100%;width:10px;left:-12px;position:absolute}.welcome-panel .welcome-panel-close:hover:before{background-position:100% 17%}.welcome-panel .wp-badge{float:left;margin-bottom:20px}.welcome-panel-content{max-width:1500px}.welcome-panel-content .about-description,.welcome-panel h3{margin-left:190px}.welcome-panel p.welcome-panel-dismiss{clear:both;padding:1em 0 0 0}.welcome-panel .welcome-panel-column-container{clear:both;overflow:hidden;position:relative;padding-left:26px}.welcome-panel .welcome-panel-column{margin:0 5% 0 -25px;padding-left:25px;width:30%;min-width:200px;float:left}.welcome-panel .welcome-panel-column.welcome-panel-last{margin-right:0}.welcome-panel h4 .icon16{margin-left:-32px}.welcome-panel .welcome-panel-column ul{margin:1.6em 1em 1em 1.3em}.welcome-panel .welcome-panel-column li{list-style-type:disc;padding-left:2px}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-date,.fixed .column-parent,.fixed .column-links{width:10%}.fixed .column-response,.fixed .column-author,.fixed .column-categories,.fixed .column-tags,.fixed .column-rel,.fixed .column-role{width:15%}.fixed .column-comments{width:4em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}.fixed .column-comments a{float:left}.fixed .column-slug{width:25%}.fixed .column-posts{width:10%}.fixed .column-icon{width:80px}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv #add-new-comment{border-width:0 0 1px;border-style:none none solid}#commentsdiv .comments-box{border:0 none}#commentsdiv .comments-box thead th{background:transparent;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv img.waiting{padding-left:5px}.sorting-indicator{display:none;width:7px;height:4px;margin-top:8px;margin-left:7px;background-image:url(../images/sort.gif);background-repeat:no-repeat}.fixed .column-comments .sorting-indicator{margin-top:3px}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:7px 7px 8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:left;cursor:pointer}th.sorted.asc .sorting-indicator,th.desc:hover span.sorting-indicator{display:block;background-position:0 0}th.sorted.desc .sorting-indicator,th.asc:hover span.sorting-indicator{display:block;background-position:-7px 0}.tablenav-pages a{border-bottom-style:solid;border-bottom-width:2px;font-weight:bold;margin-right:1px;padding:0 2px}.tablenav-pages .current-page{text-align:center}.tablenav-pages .next-page{margin-left:2px}.tablenav a.button-secondary{display:block;margin:3px 8px 0 0}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:right;display:block;cursor:default;height:30px;line-height:30px;font-size:12px}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:active{cursor:default}.tablenav .displaying-num{margin-right:10px;font-size:12px;font-style:italic}.tablenav .actions{padding:2px 8px 0 0}.tablenav .delete{margin-right:20px}.view-switch{float:right;margin:6px 8px 0}.view-switch a{text-decoration:none}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}span.post-state-format{font-weight:normal}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}tr.inline-edit-row td,#wpbody-content .inline-edit-row fieldset .inline-edit-col{padding:0 .5em}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 0 0 1px;border-style:none none none solid}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:23px}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{margin:0;padding:0;line-height:27px}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:5em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:text-bottom}.inline-edit-row fieldset label textarea{width:100%;height:4em}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row h4{text-transform:uppercase}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-style:italic;line-height:1.8em}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea{border-style:solid;border-width:1px}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.1em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}.inline-edit-row .catshow,.inline-edit-row .cathide{cursor:pointer}ul.cat-checklist{height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0}#bulk-titles{display:block;height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0 0 5px}.inline-edit-row fieldset ul.cat-checklist li,.inline-edit-row fieldset ul.cat-checklist input{margin:0}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:sans-serif;font-style:normal;font-size:11px}table .inline-edit-row fieldset ul.cat-hover{height:auto;max-height:30em;overflow-y:auto;position:absolute}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%}.quick-edit-row-post fieldset label.inline-edit-status{float:left}#bulk-titles{line-height:140%}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:left;height:10px;margin:3px 3px 0 -2px;overflow:hidden;position:relative;text-indent:-9999px;width:10px}#titlediv{position:relative;margin-bottom:20px}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#poststuff #titlewrap{border:0;padding:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;width:100%;outline:0}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{color:#bbb;position:absolute;font-size:1.7em;padding:8px 10px}#wp-fullscreen-title-prompt-text{left:0;padding:11px}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px}input#link_description,input#link_url{width:98%}#pending{background:0 none;border:0 none;padding:0;font-size:11px;margin-top:-1px}#edit-slug-box{height:1em;margin-top:8px;padding:0 10px}#editable-post-name-full{display:none}#editable-post-name input{width:16em}.postarea h3 label{float:left}#submitpost #ajax-loading,#submitpost .ajax-loading{vertical-align:middle}#wpcontent .ajax-loading{visibility:hidden}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}.submitbox .submitdelete,.submitbox .submit a:hover{border-bottom-width:1px;border-bottom-style:solid}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}.inside-submitbox #post_status{margin:2px 0 2px -2px}#post-status-select,#post-format{line-height:2.5em;margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{position:relative;min-width:255px}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:right;padding:0 12px;margin:0}.category-add input[type="text"],.category-add select{width:100%;max-width:260px}.press-this #side-sortables .category-tabs li,ul.category-tabs li,#side-sortables .add-menu-item-tabs li,.wp-tab-bar li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js{display:none}.category-tabs a,#side-sortables .add-menu-item-tabs a,.wp-tab-bar a{text-decoration:none}.category-tabs{margin:8px 0 3px}#category-adder h4{margin:10px 0}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:0 7px 5px}#side-sortables .submitbox .submit input,#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover{border:0 none}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}ul.category-tabs,ul.add-menu-item-tabs,ul.wp-tab-bar{margin-top:12px}ul.category-tabs li,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-style:solid solid none;border-width:1px 1px 0}#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px}ul.category-tabs li,ul.add-menu-item-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}form#tags-filter{position:relative}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em}td.post-title p,td.plugin-title p{margin:6px 0}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none}.commentlist .avatar{vertical-align:text-top}#post-body .tagsdiv #newtag{margin-right:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{border-width:0 1px 1px;border-style:none solid solid;width:100%;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}#post-status-info td{font-size:12px}.autosave-info{padding:2px 15px;text-align:right}#editorcontent #post-status-info{border:0}#post-body .wp_themeSkin .mceStatusbar a.mceResize{display:block;background:transparent url(../images/resize.gif) no-repeat scroll right bottom;width:12px;cursor:se-resize;margin:0 2px;position:relative;top:-2px}#post-body .postarea .wp_themeSkin .mceStatusbar a.mceResize{top:20px}#wp-word-count{display:block;padding:2px 10px}#timestampdiv select{height:20px;line-height:14px;padding:0;vertical-align:top}#aa,#jj,#hh,#mn{padding:1px;font-size:12px}#jj,#hh,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{background-repeat:no-repeat;background-position:left top;padding-left:18px}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}#postcustomstuff .updatemeta,#postcustomstuff .deletemeta{margin:auto}#postcustomstuff thead th{padding:5px 8px 8px}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:5px 8px}#side-sortables #postcustom #postcustomstuff .submit{padding:0 5px}#side-sortables #postcustom #postcustomstuff td.left input{margin:3px 3px 0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px;margin:3px}#postcustomstuff table{margin:0;width:100%;border-width:1px;border-style:solid;border-spacing:0}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:95%;margin:8px 0 8px 8px}#postcustomstuff th.left,#postcustomstuff td.left{width:38%}#postcustomstuff #newmeta .submit{padding:0 8px}#postcustomstuff .submit input,#postcustomstuff table #addmetasub{width:auto}#postcustomstuff #newmetaleft{vertical-align:top}#postcustomstuff #newmetaleft a{padding:0 10px;text-decoration:none}table.diff{width:100%}table.diff col.content{width:50%}table.diff tr{background-color:transparent}table.diff td,table.diff th{padding:.5em;font-family:Consolas,Monaco,monospace;border:0}table.diff .diff-deletedline del,table.diff .diff-addedline ins{text-decoration:none}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0}#post-body ul.add-menu-item-tabs li{padding:8px}#post-body ul.add-menu-item-tabs li.tabs{-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}.wp-tab-panel,.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel{height:200px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px}.nav-menus-php .customlinkdiv div.tabs-panel,.nav-menus-php .posttypediv div.tabs-panel,.nav-menus-php .taxonomydiv div.tabs-panel{height:auto;max-height:205px}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}.colunms-1 .categorydiv div.tabs-panel,.taxonomy div.tabs-panel{margin:0 5px 0 125px}.customlinkdiv ul,.posttypediv ul,.taxonomydiv ul{list-style:none;padding:0;margin:0}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:19px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap p,.form-wrap label{font-size:11px}.form-wrap label{display:block;padding:2px;font-size:12px}.form-field input,.form-field textarea{border-style:solid;border-width:1px;width:95%}p.description,.form-wrap p{margin:2px 0 5px}p.help,p.description,span.description,.form-wrap p{font-size:12px;font-style:italic;font-family:sans-serif}.form-wrap .form-field{margin:0 0 10px;padding:8px}.col-wrap h3{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .taghint{color:#aaa;margin:15px 0 -24px 12px}#poststuff .tagsdiv .howto{margin:0 0 6px 8px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{-webkit-border-radius:8px;border-radius:8px;border-width:1px;border-style:solid;line-height:2em;max-width:1000px;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h3{margin:2px 0 12px}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;display:none;border-width:1px;border-style:solid}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left}.ac_over{cursor:pointer}.ac_match{text-decoration:underline}table.links-table{width:100%}.links-table th{font-weight:normal;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table th,.links-table td{padding:5px 0}.links-table td label{margin-right:8px}.links-table td input[type="text"],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}.media-item .describe{border-collapse:collapse;width:100%;border-top-style:solid;border-top-width:1px;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:left;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .media-item-info tr{background-color:transparent}.media-item .describe td{padding:0 8px 8px 0;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 0 0 10px}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-right:6px;margin-left:2px}.media-upload-form .align .field label{display:inline;padding:0 0 0 23px;margin:0 1em 0 3px;font-weight:bold}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:bold}.media-upload-form th.label label{font-weight:bold;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}abbr.required{border:medium none;text-decoration:none}.media-item .describe input[type="text"],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.describe-toggle-on,.describe-toggle-off{display:block;line-height:36px;float:right;margin-right:15px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on,.media-item.open img.pinkynail{display:none}.media-item.open .describe-toggle-off{display:block}#media-items .media-item{border-style:solid;border-width:1px;min-height:36px;position:relative;margin-top:-1px;width:100%}#media-items{width:623px}#media-items:empty{border:0 none}.media-item .filename{line-height:36px;overflow:hidden;padding:0 10px}.media-item .error-div{padding-left:10px}.media-item .pinkynail{float:left;margin:2px 2px 0;max-width:40px;max-height:32px}.media-item .startopen,.media-item .startclosed{display:none}.media-item .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:6px 10px 0 0;width:200px;line-height:2em;padding:0;overflow:hidden;margin-bottom:2px;border:1px solid #d1d1d1;background:#fff;background-image:linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-o-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-moz-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-webkit-linear-gradient(bottom,#fff 0,#f7f7f7 100%);background-image:-ms-linear-gradient(bottom,#fff 0,#f7f7f7 100%);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,0.1);box-shadow:inset 0 0 3px rgba(0,0,0,0.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-24px;background-color:#83b4d8;background-image:linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-o-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-moz-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-webkit-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);background-image:-ms-linear-gradient(bottom,#72a7cf 0,#90c5ee 100%);-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.3);box-shadow:0 0 3px rgba(0,0,0,0.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0 8px;text-shadow:0 1px 0 rgba(255,255,255,0.4);color:rgba(0,0,0,0.6)}.upload-php .fixed .column-parent{width:25%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item.error{margin:0;padding:0}.media-upload-form .media-item.error p,.media-item .error-div{line-height:16px;margin:5px 10px;padding:0}.media-item .error-div a.dismiss{display:block;float:right;margin:5px 4px 0 15px}.find-box{width:500px;height:300px;overflow:hidden;padding:33px 5px 40px;position:absolute;z-index:1000}.find-box-head{cursor:move;font-weight:bold;height:2em;line-height:2em;padding:1px 12px;position:absolute;top:5px;width:100%}.find-box-inside{overflow:auto;width:100%;height:100%}.find-box-search{padding:12px;border-width:1px;border-style:none none solid}#find-posts-response{margin:8px 0;padding:0 1px}#find-posts-response table{width:100%}#find-posts-response .found-radio{padding:5px 0 0 8px;width:15px}.find-box-buttons{width:480px;margin:8px}.find-box-search label{padding-right:6px}.find-box #resize-se{position:absolute;right:1px;bottom:1px}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px}.drag-drop #drag-drop-area{border:4px dashed #ddd;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#aaa;font-size:14px;margin:5px 0;display:none}.drag-drop .drag-drop-inside p{text-align:center}.drag-drop-inside p.drag-drop-info{font-size:20px}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}#plupload-upload-ui{position:relative}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative}.imgedit-settings p{margin:8px 0}.describe .imgedit-wrap table td{vertical-align:top;padding-top:0}.imgedit-wrap p,.describe .imgedit-wrap table td{font-size:11px;line-height:18px}.describe .imgedit-wrap table td.imgedit-settings{padding:0 5px}td.imgedit-settings input{vertical-align:middle}.imgedit-wait{position:absolute;top:0;background:#fff url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.media-disabled,.imgedit-settings .disabled{color:grey}.imgedit-wait-spin{padding:0 4px 4px;vertical-align:bottom;visibility:hidden}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:left;width:32px;height:32px}.imgedit-crop-wrap{position:relative}.imgedit-crop{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -9px -31px;margin:0 8px 0 0}.imgedit-crop.disabled:hover{background-position:-9px -31px}.imgedit-crop:hover{background-position:-9px -1px}.imgedit-rleft{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -46px -31px;margin:0 3px}.imgedit-rleft.disabled:hover{background-position:-46px -31px}.imgedit-rleft:hover{background-position:-46px -1px}.imgedit-rright{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -77px -31px;margin:0 8px 0 3px}.imgedit-rright.disabled:hover{background-position:-77px -31px}.imgedit-rright:hover{background-position:-77px -1px}.imgedit-flipv{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -115px -31px;margin:0 3px}.imgedit-flipv.disabled:hover{background-position:-115px -31px}.imgedit-flipv:hover{background-position:-115px -1px}.imgedit-fliph{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -147px -31px;margin:0 8px 0 3px}.imgedit-fliph.disabled:hover{background-position:-147px -31px}.imgedit-fliph:hover{background-position:-147px -1px}.imgedit-undo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -184px -31px;margin:0 3px}.imgedit-undo.disabled:hover{background-position:-184px -31px}.imgedit-undo:hover{background-position:-184px -1px}.imgedit-redo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -215px -31px;margin:0 8px 0 3px}.imgedit-redo.disabled:hover{background-position:-215px -31px}.imgedit-redo:hover{background-position:-215px -1px}.imgedit-applyto img{margin:0 8px 0 0}.imgedit-group-top{margin:5px 0}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic;margin-bottom:8px}.imgedit-help ul li{font-size:11px}a.imgedit-help-toggle{text-decoration:none}#wpbody-content .imgedit-response div{width:600px;margin:8px}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0}.imgedit-submit-btn{margin-left:20px}.imgedit-wrap .nowrap{white-space:nowrap}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{border-width:1px;border-style:solid;-webkit-border-radius:8px;border-radius:8px;margin-bottom:8px;padding:2px 10px}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;margin-bottom:-8px;clear:both}.form-table td{margin-bottom:9px;padding:8px 10px;line-height:20px;font-size:12px}.form-table th,.form-wrap label{font-weight:normal;text-shadow:#fff 0 1px 0}.form-table th{vertical-align:top;text-align:left;padding:10px;width:200px}.form-table th.th-full{width:auto}.form-table div.color-option{display:block;clear:both;margin-top:12px}.form-table input.tog{margin-top:2px;margin-right:2px;float:left}.form-table td p{margin-top:4px}.form-table table.color-palette{vertical-align:bottom;float:left;margin:-12px 3px 11px}.form-table .color-palette td{border-width:1px 1px 0;border-style:solid solid none;height:10px;line-height:20px;width:10px}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom-width:1px;border-bottom-style:solid}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#replyrow input{border-width:1px;border-style:solid}#replyrow td{padding:2px}#replysubmit{margin:0;padding:0 7px 3px;text-align:center}#replysubmit img.waiting,.inline-edit-save img.waiting{padding:4px 10px 0;vertical-align:top;float:right}#replysubmit .button{margin-right:5px}#replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center}#replyrow h5{margin:.2em 0 0;padding:0 5px;line-height:1.4em;font-size:1em}#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px}.comment-ays{margin-bottom:0;border-style:solid;border-width:1px}.comment-ays th{border-right-style:solid;border-right-width:1px}.trash-undo-inside,.spam-undo-inside{margin:1px 8px 1px 0;line-height:16px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle}.stuffbox .editcomment{clear:none}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 3px 5px 0;vertical-align:middle}#comment-status-radio label{padding:5px 0}.commentlist .avatar{vertical-align:text-top}.theme-install-php .tablenav{height:auto}h3.available-themes{margin:0 0 1em;float:left}.available-theme{display:inline-block;margin-right:10px;overflow:hidden;padding:20px 20px 20px 0;vertical-align:top;width:300px}.available-theme .screenshot{width:300px;height:225px;display:block;border-width:1px;border-style:solid;margin-bottom:10px;overflow:hidden}.available-theme img{width:300px}.available-theme h3{margin:15px 0 0}.available-theme .theme-author{line-height:18px}.available-theme .action-links{margin-top:10px;overflow:hidden}#current-theme .theme-info li,.theme-options li,.available-theme .action-links li{float:left;padding-right:10px;margin-right:10px;border-right:1px solid #dfdfdf}.available-theme .action-links li{padding-right:8px;margin-right:8px}#current-theme .theme-info li:last-child,.theme-options li:last-child,.available-theme .action-links li:last-child{padding-right:0;margin-right:0;border-right:0}.available-theme .action-links .delete-theme{float:right;margin-left:8px;margin-right:0}.available-theme .action-links .delete-theme a{color:red;padding:2px}.available-theme .action-links .delete-theme a:hover{background:red;color:#fff;text-decoration:none}.available-theme .action-links p{float:left}#current-theme{margin:20px 0 10px;padding:0 0 20px;border-bottom:1px solid #dfdfdf;overflow:hidden}#current-theme.has-screenshot{padding-left:330px}#current-theme h3{margin:0;font-size:12px;font-weight:normal;color:#999}#current-theme h4{margin:3px 0 16px;font-size:20px}#current-theme h4 span{margin-left:20px;font-size:12px;font-weight:normal}#current-theme a{border-bottom:0}#current-theme .theme-info{margin:1em 0;overflow:hidden}#current-theme .theme-description{margin-top:5px;max-width:600px;line-height:1.6em}#current-theme img{float:left;width:300px;margin-left:-330px;border-width:1px;border-style:solid}.theme-options{overflow:hidden;font-size:14px;padding-bottom:10px}.theme-options .load-customize{margin-right:30px;float:left}.theme-options span{float:left;margin-right:10px;text-transform:uppercase;font-size:11px;line-height:18px;color:#999}.theme-options ul{float:left;margin:0}@media only screen and (max-width:1200px){.available-theme,.available-theme .screenshot,#current-theme img{width:240px}.available-theme .screenshot{height:180px}.available-theme img{width:100%}#current-theme.has-screenshot{padding-left:270px}#current-theme img{margin-left:-270px}}#post-body ul.add-menu-item-tabs li.tabs a,#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{font-weight:bold;text-decoration:none}#TB_window #TB_title{background-color:#222;color:#cfcfcf}#broken-themes{text-align:left;width:50%;border-spacing:3px;padding:3px}.theme-install-php h4{margin:2.5em 0 8px}.appearance_page_custom-header #headimg{border:1px solid #dfdfdf;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf}div#custom-background-image img{max-width:400px;max-height:300px}.nav-tab{border-style:solid;border-color:#dfdfdf #dfdfdf #fff;border-width:1px 1px 0;color:#aaa;text-shadow:#fff 0 1px 0;font-size:12px;line-height:16px;display:inline-block;padding:4px 14px 6px;text-decoration:none;margin:0 6px -1px 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.nav-tab-active{border-width:1px;color:#464646}.nav-tab:hover,.nav-tab-active{border-color:#ccc #ccc #fff}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0}h2 .nav-tab{padding:4px 10px 6px;font-weight:200;font-size:20px;line-height:24px}#dashboard_right_now .versions .b,#post-status-display,#post-visibility-display,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,.media-item .percent,.plugins .name,#pass-strength-result.strong,#pass-strength-result.short,.button-highlighted,input.button-highlighted,#quicktags #ed_strong,#ed_reply_toolbar #ed_reply_strong,.item-controls .item-order a,.feature-filter .feature-name{font-weight:bold}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ul,.plugins .desc ol{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions-visible{padding:0}.plugins tbody th.check-column{padding:7px 0}.plugins .inactive td,.plugins .inactive th,.plugins .active td,.plugins .active th{border-top-style:solid;border-top-width:1px;padding:5px 7px 0}.plugins .update th,.plugins .update td{border-bottom:0}.plugin-update-tr td{border-top:0}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .second,.plugins .row-actions-visible{padding:0 0 5px}.plugins .update .second,.plugins .update .row-actions-visible{padding-bottom:0}.plugins-php .widefat tfoot th,.plugins-php .widefat tfoot td{border-top-style:solid;border-top-width:1px}.plugin-update-tr .update-message{margin:5px;padding:3px 5px}.plugin-install-php h4{margin:2.5em 0 8px}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#your-profile #rich_editing{border:0}#display_name{width:15em}#createuser .form-field input{width:25em}.pressthis{margin:20px 0}.pressthis a{display:inline-block;position:relative;cursor:move;color:#333;background:#dfdfdf;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0.07,#e6e6e6),color-stop(0.77,#d8d8d8));background-image:-webkit-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-moz-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-ms-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:-o-linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);background-image:linear-gradient(bottom,#e6e6e6 7%,#d8d8d8 77%);-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none;text-shadow:0 1px 0 #fff}.pressthis a:hover,.pressthis a:active{color:#333}.pressthis a:hover:after{transform:skew(20deg) rotate(9deg);-webkit-transform:skew(20deg) rotate(9deg);-moz-transform:skew(20deg) rotate(9deg);box-shadow:0 10px 8px rgba(0,0,0,0.7);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.7);-moz-box-shadow:0 10px 8px rgba(0,0,0,0.7)}.pressthis a span{background:url(../images/press-this.png?v=20120502) no-repeat 0 5px;padding:8px 11px 8px 27px;margin:0 5px;display:inline-block}.pressthis a:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:transparent;transform:skew(20deg) rotate(6deg);-webkit-transform:skew(20deg) rotate(6deg);-moz-transform:skew(20deg) rotate(6deg);box-shadow:0 10px 8px rgba(0,0,0,0.6);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.6);-moz-box-shadow:0 10px 8px rgba(0,0,0,0.6)}#utc-time,#local-time{padding-left:25px;font-style:italic;font-family:sans-serif}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}#footer{position:absolute;bottom:0;left:0;right:0;padding:10px 0;margin-right:20px;border-top-width:1px;border-top-style:solid}#footer p{margin:0;line-height:20px}#footer a{text-decoration:none}#footer a:hover{text-decoration:underline}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap div.updated,.about-wrap div.error{display:none!important}.about-wrap p{line-height:1.6em}.about-wrap h1{margin:.2em 200px 0 0;line-height:1.2em;font-size:2.8em;font-weight:200}.about-text,.about-description,.about-wrap li.wp-person a.web{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:normal;line-height:1.6em;font-size:20px}.about-description{margin-top:1.4em}.about-text{margin:1em 200px 1.4em 0;min-height:60px;font-size:24px}.about-wrap h3{font-size:24px;margin-bottom:1em;padding-top:20px}.about-wrap .changelog{overflow:hidden}.about-wrap .changelog li{list-style-type:disc;margin-left:3em}.about-wrap .feature-section{padding-bottom:20px}.about-wrap .feature-section h4{margin-bottom:.6em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap code{font-size:14px}.about-wrap .point-releases{margin-top:5px}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.wp-badge{padding-top:142px;height:50px;width:173px;font-weight:bold;font-size:14px;text-align:center;margin:0 -5px;background:url('../images/wp-badge.png?ver=20111120') no-repeat}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap h2.nav-tab-wrapper{padding-left:6px}.about-wrap h2 .nav-tab{padding:4px 10px 6px;margin:0 3px -1px 0;font-size:18px;vertical-align:top}.about-wrap h2 .nav-tab-active{font-weight:bold;padding-top:3px}.about-wrap .feature-section img{border:0;margin:0 1.94% 10px 0;-webkit-border-radius:3px;border-radius:3px}.about-wrap .feature-section img.image-50{max-width:50%}.about-wrap .feature-section img.image-30{max-width:31.2381%}.ie8 .about-wrap .feature-section img{border-width:1px;border-style:solid}.about-wrap .feature-section.three-col{padding-top:15px;margin-bottom:0}.about-wrap .feature-section.three-col div{width:30%;margin-right:4.999999999%;float:left}.about-wrap .feature-section.three-col h4{margin:0 0 .6em 0}.about-wrap .feature-section.three-col img{margin:.5em 0 .5em 5px;max-width:100%;float:none}.ie8 .about-wrap .feature-section.three-col img{margin-left:0}.about-wrap .feature-section.three-col .last-feature{margin-right:0}.about-wrap .three-col-images{text-align:center}.about-wrap .three-col-images img{margin:0 0 10px}.about-wrap .three-col-images .last-feature{float:right}.about-wrap .three-col-images .first-feature{float:left}.about-wrap .feature-section.images-stagger-right img{float:right;margin:0 5px 12px 12px}.about-wrap .feature-section.images-stagger-left img{float:left;margin:0 12px 12px 5px}@media only screen and (max-width:900px){.about-wrap .feature-section.images-stagger-left img,.about-wrap .feature-section.images-stagger-right img{clear:both}}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:bold}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h4.wp-people-group{margin-top:2.6em;font-size:16px}.about-wrap ul.wp-people-group{overflow:hidden;padding:5px;margin:0 -15px 0 -5px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{float:left;margin-right:10px}.about-wrap li.wp-person img.gravatar{float:left;margin:0 10px 10px 0;padding:2px;width:60px;height:60px}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px}.about-wrap li.wp-person{height:70px;width:280px;padding-bottom:15px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;text-decoration:none}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:bold}.freedoms-php .about-wrap ol p{font-weight:normal;margin:.6em 0}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%;min-width:0}.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:fixed;width:300px;height:100%;top:0;bottom:0;left:0;padding:0;margin:0;z-index:10;overflow:auto;background:#f5f5f5;border-right:1px solid rgba(0,0,0,0.2)}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-left:0!important}.wp-full-overlay.expanded{margin-left:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-300px}.wp-full-overlay-sidebar:after{content:'';display:block;position:absolute;top:0;bottom:0;right:0;width:3px;box-shadow:-5px 0 4px -4px rgba(0,0,0,0.1) inset;z-index:1000}.wp-full-overlay-main{position:absolute;left:0;right:0;top:0;bottom:0;height:100%}.wp-full-overlay-sidebar .wp-full-overlay-header,.wp-full-overlay-sidebar .wp-full-overlay-footer{position:absolute;left:0;right:0;height:45px;padding:0 20px;line-height:45px;z-index:10;margin:0}.wp-full-overlay-sidebar .wp-full-overlay-header{top:0;border-top:0;border-bottom:1px solid #fff;box-shadow:inset 0 -1px 0 0 #dfdfdf}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:0;border-top:1px solid #dfdfdf;box-shadow:inset 0 1px 0 0 #fff}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.wp-full-overlay .close-full-overlay{text-decoration:none}.wp-full-overlay .collapse-sidebar{position:absolute;bottom:12px;left:0;z-index:50;display:block;width:19px;height:19px;margin-left:15px;padding:0;border-radius:50%;text-decoration:none}.wp-full-overlay.collapsed .collapse-sidebar{position:absolute;left:100%}.wp-full-overlay .collapse-sidebar-arrow{position:absolute;margin-top:2px;margin-left:2px;display:block;width:15px;height:15px;background:transparent url('../images/arrows.png') no-repeat 0 -72px}.wp-full-overlay.collapsed .collapse-sidebar-arrow{background-position:0 -108px}.wp-full-overlay .collapse-sidebar-label{position:absolute;left:100%;color:#808080;line-height:20px;margin-left:10px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-label{color:#666}.wp-full-overlay,.wp-full-overlay-sidebar,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main{-webkit-transition-property:left,right,top,bottom,width,margin;-moz-transition-property:left,right,top,bottom,width,margin;-ms-transition-property:left,right,top,bottom,width,margin;-o-transition-property:left,right,top,bottom,width,margin;transition-property:left,right,top,bottom,width,margin;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;-ms-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.no-customize-support .hide-if-no-customize,.customize-support .hide-if-customize{display:none}#customize-container{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}.customize-active #customize-container{display:block}.customize-loading #customize-container iframe{opacity:0}.customize-loading #customize-container{background:#fff url("../images/wpspin_light.gif") no-repeat fixed center center}#customize-container iframe,#theme-installer iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;-ms-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}#customize-container .collapse-sidebar{bottom:16px}#theme-installer{display:none}#theme-installer.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 20px}.single-theme .install-theme-info{padding-top:15px}#theme-installer .install-theme-info{display:block}.install-theme-info .theme-install{float:right;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0}.install-theme-info .theme-screenshot{margin-top:15px;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0;float:left}.theme-details .star-holder{margin:14px 0;float:right}.theme-details .theme-description{float:left;color:#777;line-height:20px}#excerpt,.attachmentlinks{margin:0;height:4em;width:98%}#template div{margin-right:190px}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:bold;margin:0 6px}.row-title{font-size:13px!important;font-weight:bold}.column-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{visibility:hidden;padding:2px 0 0}.mobile .row-actions{visibility:visible}tr:hover .row-actions,div.comment-item:hover .row-actions{visibility:visible}.row-actions-visible{padding:2px 0 0}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist span{margin-right:25px;display:block;float:left;font-size:11px;line-height:1.8em;white-space:nowrap;cursor:default}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left}#poststuff h3,.metabox-holder h3{font-size:15px;font-weight:normal;padding:7px 10px;margin:0;line-height:1}#poststuff .inside{margin:6px 0 8px}#poststuff .inside #parent_id,.inline-edit-row #post_parent{max-width:100%}#post-visibility-select,#post-formats-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#titlediv,#poststuff .postarea{margin-bottom:20px}#templateside ul li a{text-decoration:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:normal;line-height:24px}#sidemenu{margin:-30px 15px 0 315px;list-style:none;position:relative;float:right;padding-left:10px;font-size:12px}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top-width:1px;border-top-style:solid;border-bottom-width:1px;border-bottom-style:solid}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0}#sidemenu a.current{font-weight:normal;padding-left:6px;padding-right:6px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;border-width:1px;border-style:solid}#sidemenu li a .count-0{display:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .vers,table .column-visible,table .column-rating{text-align:left}.error-message{color:red;font-weight:bold}body.iframe{height:98%}td.media-icon{text-align:center;width:80px;padding-top:8px;padding-bottom:8px}td.media-icon img{max-width:80px;max-height:60px}.list-ajax-loading{float:right;margin-right:9px;margin-top:-1px}.tablenav .list-ajax-loading{margin-top:7px}#howto{font-size:11px;margin:0 5px;display:block}.importers td{padding-right:14px}.importers{font-size:16px;width:auto}#namediv table{width:100%}#namediv td.first{width:10px;white-space:nowrap}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:0;margin:0;padding:0}fieldset{border:0;padding:0;margin:0}.post-categories{display:inline;margin:0;padding:0}.post-categories li{display:inline}.edit-box{display:none}h3:hover .edit-box{display:inline}.index-php form .input-text-wrap{background:#fff;border-style:solid;border-width:1px;padding:2px 3px;border-color:#ccc}#dashboard-widgets form .input-text-wrap input{border:0 none;outline:0;margin:0;padding:0;width:99%;color:#333}form .textarea-wrap{background:#fff;border-style:solid;border-width:1px;padding:2px;border-color:#ccc}#dashboard-widgets form .textarea-wrap textarea{border:0 none;padding:0;outline:0;width:99%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:0}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input{margin:0}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets a{text-decoration:none}#dashboard-widgets h3 a{text-decoration:underline}#dashboard-widgets h3 .postbox-title-action{position:absolute;right:30px;padding:0;top:5px}#dashboard-widgets h4{font-weight:normal;font-size:13px;margin:0 0 .2em;padding:0}#dashboard_right_now p.sub,#dashboard_right_now .table,#dashboard_right_now .versions{margin:-12px}#dashboard_right_now .inside{font-size:12px;padding-top:20px}#dashboard_right_now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;left:15px}#dashboard_right_now .table{margin:0;padding:0;position:relative}#dashboard_right_now .table_content{float:left;border-top:#ececec 1px solid;width:45%}#dashboard_right_now .table_discussion{float:right;border-top:#ececec 1px solid;width:45%}#dashboard_right_now table td{padding:3px 0;white-space:nowrap}#dashboard_right_now table tr.first td{border-top:0}#dashboard_right_now td.b{padding-right:6px;text-align:right;font-size:14px;width:1%}#dashboard_right_now td.b a{font-size:18px}#dashboard_right_now td.b a:hover{color:#d54e21}#dashboard_right_now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777}#dashboard_right_now .t a{white-space:nowrap}#dashboard_right_now .spam{color:red}#dashboard_right_now .waiting{color:#e66f00}#dashboard_right_now .approved{color:green}#dashboard_right_now .versions{padding:6px 10px 12px;clear:both}#dashboard_right_now a.button{float:right;clear:right;position:relative;top:-5px}#dashboard_recent_comments h3{margin-bottom:0}#dashboard_recent_comments .inside{margin-top:0}#dashboard_recent_comments .comment-meta .approve{font-style:italic;font-family:sans-serif;font-size:10px}#dashboard_recent_comments .subsubsub{float:none;white-space:normal}#the-comment-list{position:relative}#the-comment-list .comment-item{padding:1em 10px;border-top:1px solid}#the-comment-list .pingback{padding-left:9px!important}#the-comment-list .comment-item,#the-comment-list #replyrow{margin:0 -10px}#the-comment-list .comment-item:first-child{border-top:0}#the-comment-list .comment-item .avatar{float:left;margin:0 10px 5px 0}#the-comment-list .comment-item h4{line-height:1.7em;margin-top:-0.4em;color:#777}#the-comment-list .comment-item h4 cite{font-style:normal;font-weight:normal}#the-comment-list .comment-item blockquote,#the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#dashboard_recent_comments #the-comment-list .trackback blockquote,#dashboard_recent_comments #the-comment-list .pingback blockquote{display:block}#the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:12px}#dashboard_quick_press h4{font-family:sans-serif;float:left;width:5em;clear:both;font-weight:normal;text-align:right;font-size:12px}#dashboard_quick_press h4 label{margin-right:10px}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 0 1em 5em}#dashboard_quick_press .wp-media-buttons{margin:0 0 .5em 5em;padding:0}#dashboard_quick_press .wp-media-buttons a{color:#777}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:4.6em}#dashboard-widgets #dashboard_quick_press form p.submit input{float:left}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 1em 0 10px}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:right}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{vertical-align:middle;visibility:hidden;margin:4px 6px 0 0}#dashboard_recent_drafts ul,#dashboard_recent_drafts p{margin:0;padding:0;word-wrap:break-word}#dashboard_recent_drafts ul{list-style:none}#dashboard_recent_drafts ul li{margin-bottom:1em}#dashboard_recent_drafts h4{line-height:1.7em;word-wrap:break-word}#dashboard_recent_drafts h4 abbr{font-weight:normal;font-family:sans-serif;font-size:12px;color:#999;margin-left:3px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;font-size:12px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:'\2014'}#dashboard_plugins h4{line-height:1.7em}#dashboard_plugins h5{font-weight:normal;font-size:13px;margin:0;display:inline;line-height:1.4em}#dashboard_plugins h5 a{line-height:1.4em}#dashboard_plugins .inside span{font-size:12px;padding-left:5px}#dashboard_plugins p{margin:.3em 0 1.4em;line-height:1.4em}.dashboard-comment-wrap{overflow:hidden;word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:bold}#dashboard_browser_nag a{text-decoration:underline}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:125px}#dashboard_browser_nag .browser-icon{margin-top:-35px}#dashboard_browser_nag.postbox.browser-insecure{background-color:#ac1b1b;border-color:#ac1b1b}#dashboard_browser_nag.postbox{background-color:#e29808;background-image:none;border-color:#edc048;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;color:#fff}#dashboard_browser_nag.postbox.browser-insecure h3{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h3{border-bottom-color:#f6e2ac;text-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;background:transparent none;color:#fff}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag.browser-insecure a.browse-happy-link,#dashboard_browser_nag.browser-insecure a.update-browser-link{text-shadow:#871b15 0 1px 0}#dashboard_browser_nag a.browse-happy-link,#dashboard_browser_nag a.update-browser-link{text-shadow:#d29a04 0 1px 0}.login *{margin:0;padding:0}.login form{margin-left:8px;padding:26px 24px 46px;font-weight:normal;background:#fff;border:1px solid #e5e5e5;-moz-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;-webkit-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px}.login form .forgetmenot{font-weight:normal;float:left;margin-bottom:0}.login .button-primary{font-size:13px!important;line-height:16px;padding:3px 10px;float:right}#login form p{margin-bottom:0}#login form p.submit{padding:0}.login label{color:#777;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login form p{margin-bottom:24px}.login h1 a{background-image:url('../images/wordpress-logo.png?ver=20120216');background-size:274px 63px;background-position:top center;background-repeat:no-repeat;width:326px;height:67px;text-indent:-9999px;overflow:hidden;padding-bottom:15px;display:block}@media only screen and (-webkit-min-device-pixel-ratio:1.5){.login h1 a{background-image:url('../images/wordpress-logo-2x.png?ver=20120412');background-size:274px 63px}.wp-badge{background-image:url('../images/wp-badge-2x.png?ver=20120516');background-size:173px 194px}}#login{width:320px;padding:114px 0 0;margin:auto}#login_error,.login .message{margin:0 0 16px 8px;padding:12px}.login #nav,.login #backtoblog{text-shadow:#fff 0 1px 0;margin:0 0 0 16px;padding:16px 16px 0}#backtoblog{padding:12px 16px 0}.login form .input,.login input[type="text"]{color:#555;font-weight:200;font-size:24px;line-height:1;width:100%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;outline:0;-moz-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);-webkit-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2)}.login #pass-strength-result{width:250px;font-weight:bold;border-style:solid;border-width:1px;margin:12px 0 6px;padding:6px 5px;text-align:center}.mobile #login{padding:20px 0}.mobile #login form,.mobile #login .message,.mobile #login_error{margin-left:0}.mobile #login #nav,.mobile #login #backtoblog{margin-left:8px}.mobile #login h1 a{width:auto}#dashboard_right_now p.musub{margin-top:12px;border-top:1px solid #ececec;padding-left:16px;position:static}.rtl #dashboard_right_now p.musub{padding-left:0;padding-right:16px}#dashboard_right_now td.b a.musublink{font-size:16px}#dashboard_right_now div.musubtable{border-top:0}#dashboard_right_now div.musubtable .t{white-space:normal}.wp-list-table .site-deleted{background:#ff8573}.wp-list-table .site-spammed{background:#faafaa}.wp-list-table .site-archived{background:#ffebe8}.wp-list-table .site-mature{background:#fecac2}#nav-menus-frame{margin-left:300px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:24px}.no-js #wpbody-content #menu-settings-column{padding-top:31px}#menu-settings-column .inside{clear:both}.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}#menu-management-liquid{float:left;min-width:100%}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:10px;border-width:1px 0;border-style:solid}#nav-menu-header,#nav-menu-footer{padding:0 10px}#nav-menu-header{border-bottom:1px solid}#nav-menu-footer{border-top:1px solid}.nav-menus-php #post-body div.updated,.nav-menus-php #post-body div.error{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:bold}#menu-management .nav-tabs-nav{margin:0 20px}#menu-management .nav-tabs-arrow{width:10px;padding:0 5px 4px;cursor:pointer;position:absolute;top:0;line-height:22px;font-size:18px;text-shadow:0 1px 0 #fff}#menu-management .nav-tabs-arrow-left{left:0}#menu-management .nav-tabs-arrow-right{right:0;text-align:right}#menu-management .nav-tabs-wrapper{width:100%;height:28px;margin-bottom:-1px;overflow:hidden}#menu-management .nav-tabs{padding-left:20px;padding-right:10px}.js #menu-management .nav-tabs{float:left;margin-left:0;margin-right:-400px}#menu-management .nav-tab{margin-bottom:0;font-size:14px}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}#wpbody .open-label{display:block;float:left}#wpbody .open-label span{padding-right:10px}.js .input-with-default-title{font-style:italic}#menu-management .inside{padding:0 10px}.postbox .howto input{width:180px;float:right}.customlinkdiv .howto input{width:200px}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:right}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}.nav-menus-php .meta-sep,.nav-menus-php .submitdelete,.nav-menus-php .submitcancel{display:block;float:left;margin:4px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.postbox img.waiting{display:none;vertical-align:middle}.button-controls{clear:both;margin:10px 0}.show-all,.hide-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link .howto{font-size:12px}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px}.menu-item-textbox{width:180px}.nav-menus-php .howto span{margin-top:4px;display:block;float:left}.quick-search{width:190px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0;margin-bottom:5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-right:3px;margin-top:-3px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{padding:1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:13px 0 0 0}.menu-item-handle{border:1px solid #dfdfdf;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #fff;overflow:hidden;word-wrap:break-word}#menu-to-edit .menu-item-invalid .menu-item-handle{background-color:#f6c9cc;background-image:-ms-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-moz-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-o-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-webkit-gradient(linear,left bottom,left top,from(#f6c9cc),to(#fdf8ff));background-image:-webkit-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:linear-gradient(bottom,#f6c9cc,#fdf8ff)}.menu-item-edit-active .menu-item-handle{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}.menu li.deleting .menu-item-handle{background-image:none;text-shadow:0}.menu-item-handle .item-title{font-size:12px;font-weight:bold;padding:7px 0;line-height:20px;display:block;margin-right:13em}li.menu-item.ui-sortable-helper dl{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport dl{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:30px}.menu-item-depth-2{margin-left:60px}.menu-item-depth-3{margin-left:90px}.menu-item-depth-4{margin-left:120px}.menu-item-depth-5{margin-left:150px}.menu-item-depth-6{margin-left:180px}.menu-item-depth-7{margin-left:210px}.menu-item-depth-8{margin-left:240px}.menu-item-depth-9{margin-left:270px}.menu-item-depth-10{margin-left:300px}.menu-item-depth-11{margin-left:330px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-30px}.menu-item-depth-2 .menu-item-transport{margin-left:-60px}.menu-item-depth-3 .menu-item-transport{margin-left:-90px}.menu-item-depth-4 .menu-item-transport{margin-left:-120px}.menu-item-depth-5 .menu-item-transport{margin-left:-150px}.menu-item-depth-6 .menu-item-transport{margin-left:-180px}.menu-item-depth-7 .menu-item-transport{margin-left:-210px}.menu-item-depth-8 .menu-item-transport{margin-left:-240px}.menu-item-depth-9 .menu-item-transport{margin-left:-270px}.menu-item-depth-10 .menu-item-transport{margin-left:-300px}.menu-item-depth-11 .menu-item-transport{margin-left:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{font-size:12px;padding-right:10px}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls a:hover{cursor:pointer}.item-controls .item-order{padding-right:10px}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:400px;padding:10px 0 10px 10px;border:solid;border-width:0 1px 1px 1px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em auto;text-align:center}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;font-size:12px;font-style:italic}.link-to-original a{padding-left:4px;font-style:normal}.hidden-field{display:none}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left}.description-thin{width:190px;height:40px}.description-wide{width:390px}.menu-item-actions{padding-top:15px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 5px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:5px 0 1px}.nav-menus-php .major-publishing-actions .delete-action{vertical-align:middle;text-align:left;float:left;padding-right:15px;margin-top:5px}.menu-name-label span,.auto-add-pages label{font-size:12px;font-style:normal}.menu-name-label{margin-right:15px}.auto-add-pages input{margin-top:0}.auto-add-pages{margin-top:4px;float:left}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid;padding:1px 2px;text-decoration:none}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px;border:0 none}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block}div.star-holder{position:relative;height:17px;width:100px;background:url('../images/stars.png?ver=20120307') repeat-x bottom left}div.star-holder .star-rating{background:url('../images/stars.png?ver=20120307') repeat-x top left;height:17px;float:left}div.action-links{font-weight:normal;margin:6px 0 0}#plugin-information-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;height:2.5em}#plugin-information ul#sidemenu{font-weight:normal;margin:0 5px;position:absolute;left:0;bottom:-1px}#plugin-information p.action-button{width:100%;padding-bottom:0;margin-bottom:0;margin-top:10px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .action-button a{text-align:center;font-weight:bold;text-decoration:none;display:block;line-height:2em}#plugin-information h2{clear:none!important;margin-right:200px}#plugin-information .fyi{margin:0 10px 50px;width:210px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi h2.mainheader{padding:5px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#plugin-information .fyi ul{padding:10px 5px 10px 7px;margin:0;list-style:none;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}#plugin-information .fyi li{margin-right:0}#plugin-information #section-holder{padding:10px}#plugin-information .section ul,#plugin-information .section ol{margin-left:16px;list-style-type:square;list-style-image:none}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;max-width:100%;width:auto;height:auto}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px;padding-bottom:2em}#plugin-information #section-screenshots ol,#plugin-information .updated,#plugin-information pre{margin-right:215px}#plugin-information pre{padding:7px;overflow:auto}body.press-this{color:#333;margin:0;padding:0;min-width:675px;min-height:400px}img{border:0}.press-this #wphead{height:32px;margin-left:0;margin-right:0;margin-bottom:5px}.press-this #header-logo{float:left;margin:7px 7px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.press-this #wphead h1{font-weight:normal;font-size:16px;line-height:32px;margin:0;float:left}.press-this #wphead h1 a{text-decoration:none}.press-this #wphead h1 a:hover{text-decoration:underline}.press-this #message{margin:10px 0}.press-this-sidebar{float:right;width:200px;padding-top:10px}.press-this #title{margin-left:0;margin-right:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.press-this .tagchecklist span a{background:transparent url(../images/xit.gif) no-repeat 0 0}.press-this #titlediv{margin:0}.press-this .wp-media-buttons{cursor:default;padding:8px 8px 0}.press-this .howto{margin-top:2px;margin-bottom:3px;font-size:12px;font-style:italic;display:block}.press-this #poststuff{margin:0 10px 10px}#poststuff #editor-toolbar{height:30px}div.zerosize{border:0 none;height:0;margin:0;overflow:hidden;padding:0;width:0}.posting{margin-right:212px;position:relative}.press-this .inner-sidebar{width:200px}.press-this .inner-sidebar .sleeve{padding-top:5px}.press-this #submitdiv p{margin:0;padding:6px}.press-this #submitdiv #publishing-actions{border-bottom:1px solid #dfdfdf}.press-this #publish{float:right}.press-this #poststuff h2,.press-this #poststuff h3{font-size:14px;line-height:1}.press-this #tagsdiv-post_tag h3,.press-this #categorydiv h3{cursor:pointer}.press-this #submitdiv h3{cursor:default}h3.tb{text-shadow:0 1px 0 #fff;font-weight:bold;font-size:12px;margin-left:5px}#TB_window{border:1px solid #333}.press-this .postbox,.press-this .stuffbox{margin-bottom:10px;min-width:0}.postbox:hover .handlediv,.stuffbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px}.press-this #submitdiv:hover .handlediv{background:0}.tbtitle{font-size:1.7em;outline:0;padding:3px 4px;border-color:#dfdfdf}.press-this .actions{float:right;margin:-19px 0 0}.press-this #extra-fields .actions{margin:-25px -7px 0 0}.press-this .actions li{float:left;list-style:none;margin-right:10px}#extra-fields .button{margin-right:5px}#photo_saving{margin:0 8px 8px;vertical-align:middle}#img_container_container{overflow:auto}#extra-fields{margin-top:10px;position:relative}#extra-fields h2{margin:12px}#waiting{margin-top:10px}#extra-fields .postbox{margin-bottom:5px}#extra-fields .titlewrap{padding:0;overflow:auto;height:100px}#img_container a{display:block;float:left;overflow:hidden;vertical-align:center}#img_container img,#img_container a{width:68px;height:68px}#img_container img{border:0;background-color:#f4f4f4;cursor:pointer}#img_container a,#img_container a:link,#img_container a:visited{border:1px solid #ccc;display:block;position:relative}#img_container a:hover,#img_container a:active{border-color:#000;z-index:1000;border-width:2px;margin:-1px}#embed-code{width:100%;height:98px}.press-this .categorydiv div.tabs-panel{height:100px}.press-this .tagsdiv .newtag{width:130px}.press-this #content{margin:5px 0;padding:0 5px;border:0 none;height:357px;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:19px;background:transparent}#saving{display:inline;vertical-align:middle}#TB_ajaxContent #options{position:absolute;top:20px;right:25px;padding:5px}#TB_ajaxContent h3{margin-bottom:.25em}.error a{text-decoration:underline}.updated a{text-decoration:none;padding-bottom:2px}.taghint{color:#aaa;margin:-17px 0 0 7px;visibility:hidden}input.newtag ~ div.taghint{visibility:visible}input.newtag:focus ~ div.taghint{visibility:hidden}#mce_fullscreen_container{background:#fff}#photo-add-url-div input[type="text"]{width:300px}.alignleft h3{margin:0}h3 span{font-weight:normal}#template textarea{font-family:Consolas,Monaco,monospace;font-size:12px;width:97%;background:#f9f9f9;outline:0}#template p{width:97%}#templateside{float:right;width:190px;word-wrap:break-word}#templateside h3,#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em;padding:0}#templateside li{margin:4px 0}#templateside ul li a span.highlight{display:block}.nonessential{font-size:11px;font-style:italic;padding-left:12px}.highlight{padding:3px 3px 3px 12px;margin-left:-12px;font-weight:bold;border:0 none}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:top;font-weight:bold}.fileedit-sub{padding:10px 0 8px;line-height:180%}#filter-box{clear:both}.feature-filter{padding:8px 12px 0}.feature-filter .feature-group{float:left;margin:5px 10px 10px}.feature-filter .feature-group li{display:inline;float:left;list-style-type:none;padding-right:25px;width:150px}.feature-container{width:100%;overflow:auto;margin-bottom:10px}div.widget-liquid-left{float:left;clear:left;width:100%;margin-right:-325px}div#widgets-left{margin-left:5px;margin-right:325px}div#widgets-right{width:285px;margin:0 auto}div.widget-liquid-right{float:right;clear:right;width:300px}.widget-liquid-right .widget,.inactive-sidebar .widget,.widget-liquid-right .sidebar-description{width:250px;margin:0 auto 20px;overflow:hidden}.widget-liquid-right .sidebar-description{margin-bottom:10px}.inactive-sidebar .widget{margin:0 10px 20px;float:left}div.sidebar-name h3{font-weight:normal;font-size:15px;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap}div.sidebar-name{cursor:pointer;font-size:13px;border-width:1px;border-style:solid;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px}.js .closed .sidebar-name{-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.widget-liquid-right .widgets-sortables,#widgets-left .widget-holder{border-width:0 1px 1px;border-style:none solid solid;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.js .closed .widgets-sortables,.js .closed .widget-holder{display:none}.widget-liquid-right .widgets-sortables{padding:15px 0 0}#available-widgets .widget-holder{padding:7px 5px 0}#available-widgets .widget{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.inactive-sidebar{padding:5px 5px 0}#widget-list .widget{width:250px;margin:0 10px 15px;border:0 none;background:transparent;float:left}#widget-list .widget-description{padding:5px 8px}.widget-placeholder{border-width:1px;border-style:dashed;margin:0 auto 20px;height:26px;width:250px}.inactive-sidebar .widget-placeholder{margin:0 10px 20px;float:left}div.widgets-holder-wrap{padding:0;margin:10px 0 20px}#widgets-left #available-widgets{background-color:transparent;border:0 none}ul#widget-list{list-style:none;margin:0;padding:0;min-height:100px}.widget .widget-top{margin-bottom:-1px;font-size:12px;font-weight:bold;height:26px;overflow:hidden}.widget-top .widget-title{padding:7px 9px}.widget-top .widget-title-action{float:right}a.widget-action{display:block;width:24px;height:26px}#available-widgets a.widget-action{display:none}.widget-top a.widget-action{background:transparent url(../images/arrows.png) no-repeat 4px 6px}.widget-top a.widget-action:hover{background:transparent url(../images/arrows-dark.png) no-repeat 4px 6px}.widget .widget-inside,.widget .widget-description{padding:12px 12px 10px;font-size:12px;line-height:16px}.widget-inside,.widget-description{display:none}#available-widgets .widget-description{display:block}.widget .widget-inside p{margin:0 0 1em;padding:0}.widget-title h4{margin:0;line-height:1;overflow:hidden;white-space:nowrap}.widgets-sortables{min-height:90px}.widget-control-actions{margin-top:8px}.widget-control-actions a{text-decoration:none}.widget-control-actions a:hover{text-decoration:underline}.widget-control-actions .ajax-feedback{padding-bottom:3px}.widget-control-actions div.alignleft{margin-top:6px}div#sidebar-info{padding:0 1em;margin-bottom:1em;font-size:12px}.widget-title a,.widget-title a:hover{text-decoration:none;border-bottom:0}.widget-control-edit{display:block;font-size:12px;font-weight:normal;line-height:26px;padding:0 8px 0 0}a.widget-control-edit{text-decoration:none}.widget-control-edit .add,.widget-control-edit .edit{display:none}#available-widgets .widget-control-edit .add,#widgets-right .widget-control-edit .edit,.inactive-sidebar .widget-control-edit .edit{display:inline}.editwidget{margin:0 auto 15px}.editwidget .widget-inside{display:block;padding:10px}.inactive p.description{margin:5px 15px 10px}#available-widgets p.description{margin:0 12px 12px}.widget-position{margin-top:8px}.inactive{padding-top:2px}.sidebar-name-arrow{float:right;height:29px;width:26px}.widget-title .in-widget-title{font-size:12px;white-space:nowrap}#removing-widget{display:none;font-weight:normal;padding-left:15px;font-size:12px;line-height:1}.widget-control-noform,#access-off,.widgets_access .widget-action,.widgets_access .sidebar-name-arrow,.widgets_access #access-on,.widgets_access .widget-holder .description{display:none}.widgets_access .widget-holder,.widgets_access #widget-list{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access #wpbody-content .widget-title-action,.widgets_access #wpbody-content .widget-control-edit,.widgets_access .closed .widgets-sortables,.widgets_access .closed .widget-holder{display:block}.widgets_access .closed .sidebar-name{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}@media only screen and (max-width:768px){#col-left{width:100%}#col-right{width:100%}}@media only screen and (min-width:769px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:860px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (min-width:980px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:768px){#col-left{width:100%}#col-right{width:100%}.form-field input,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}.locale-zh-cn .howto,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn #utc-time,.locale-zh-cn #local-time,.locale-zh-cn p.install-help,.locale-zh-cn p.help,.locale-zh-cn p.description,.locale-zh-cn span.description,.locale-zh-cn .form-wrap p{font-style:normal}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #wp-fullscreen-tagline{font-family:KaiTi,"楷体",sans-serif}.locale-zh-cn #wp-fullscreen-modes a{font-size:12px}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-ru-ru #dashboard_quick_press .input-text-wrap,.locale-ru-ru #dashboard_quick_press .textarea-wrap,.locale-ru-ru #dashboard_quick_press .wp-media-buttons{margin-left:5.7em}.locale-ru-ru #dashboard_quick_press h4{width:5.7em}.locale-ru-ru #dashboard-widgets #dashboard_quick_press form p.submit{margin-left:5.3em}.locale-ru-ru .inline-edit-row fieldset label span.title{width:auto;min-width:5em}.locale-ru-ru.press-this .posting{margin-right:257px}.locale-ru-ru.press-this #photo-add-url-div input[type="text"]{width:255px}.locale-ru-ru.press-this #side-sortables{width:245px}.locale-lt-lt #dashboard_quick_press .input-text-wrap,.locale-lt-lt #dashboard_quick_press .textarea-wrap,.locale-lt-lt #dashboard_quick_press .wp-media-buttons{margin-left:7em}.locale-lt-lt #dashboard_quick_press h4{width:7em}.locale-lt-lt .inline-edit-row fieldset label span.title{width:8em}.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em} \ No newline at end of file diff --git a/wp-admin/css/wp-admin.dev.css b/wp-admin/css/wp-admin.dev.css new file mode 100644 index 0000000..012361e --- /dev/null +++ b/wp-admin/css/wp-admin.dev.css @@ -0,0 +1,8221 @@ +/*------------------------------------------------------------------------------ + + +Hello, this is the main WordPress admin CSS file. +All the important stuff is in here. + + +TABLE OF CONTENTS: +------------------ + 1.0 - Text Elements + 2.0 - Forms + 3.0 - Actions + 4.0 - Notifications + 5.0 - TinyMCE + 6.0 - Admin Header + 6.1 - Screen Options Tabs + 6.2 - Help Menu + 7.0 - Main Navigation + 8.0 - Layout Blocks + 9.0 - Dashboard +10.0 - List Posts + 10.1 - Inline Editing +11.0 - Write/Edit Post Screen + 11.1 - Custom Fields + 11.2 - Post Revisions +12.0 - Categories +13.0 - Tags +14.0 - Media Screen + 14.1 - Media Library + 14.2 - Image Editor +15.0 - Comments Screen +16.0 - Themes + 16.1 - Custom Header + 16.2 - Custom Background + 16.3 - Tabbed Admin Screen Interface +17.0 - Plugins +18.0 - Users +19.0 - Tools +20.0 - Settings +21.0 - Admin Footer +22.0 - About Pages +23.0 - Full Overlay w/ Sidebar +24.0 - Customize Loader +25.0 - Misc + +------------------------------------------------------------------------*/ + +/* 2 column liquid layout */ +#wpwrap { + height: auto; + min-height: 100%; + width: 100%; + position: relative; +} + +#wpcontent { + height: 100%; +} + +#wpcontent, +#footer { + margin-left: 165px; +} + +.folded #wpcontent, +.folded #footer { + margin-left: 52px; +} + +#wpbody-content { + padding-bottom: 65px; + float: left; + width: 100%; +} + +#adminmenuback, +#adminmenuwrap, +#adminmenu, +#adminmenu .wp-submenu, +#adminmenu .wp-submenu-wrap, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + width: 145px; +} + +#adminmenuback { + position: absolute; + top: 0; + bottom: 0; + z-index: -1; +} + +#adminmenu { + clear: left; + margin: 0; + padding: 0; + list-style: none; +} + +.folded #adminmenuback, +.folded #adminmenuwrap, +.folded #adminmenu, +.folded #adminmenu li.menu-top { + width: 32px; +} + +/* inner 2 column liquid layout */ + +.inner-sidebar { + float: right; + clear: right; + display: none; + width: 281px; + position: relative; +} + +.columns-2 .inner-sidebar { + margin-right: auto; + width: 286px; + display: block; +} + +.inner-sidebar #side-sortables, +.columns-2 .inner-sidebar #side-sortables { + min-height: 300px; + width: 280px; + padding: 0; +} + +.has-right-sidebar .inner-sidebar { + display: block; +} + +.has-right-sidebar #post-body { + float: left; + clear: left; + width: 100%; + margin-right: -2000px; +} + +.has-right-sidebar #post-body-content { + margin-right: 300px; + float: none; + width: auto; +} + +/* 2 columns main area */ + +#col-container, +#col-left, +#col-right { + overflow: hidden; + padding: 0; + margin: 0; +} + +#col-left { + width: 35%; +} + +#col-right { + float: right; + clear: right; + width: 65%; +} + +.col-wrap { + padding: 0 7px; +} + +/* utility classes */ +.alignleft { + float: left; +} + +.alignright { + float: right; +} + +.textleft { + text-align: left; +} + +.textright { + text-align: right; +} + +.clear { + clear: both; +} + +/* Hide visually but not from screen readers */ +.screen-reader-text, +.screen-reader-text span { + position: absolute; + left: -1000em; + height: 1px; + width: 1px; + overflow: hidden; +} + +.hidden, +.js .closed .inside, +.js .hide-if-js, +.no-js .hide-if-no-js { + display: none; +} + +/* include margin and padding in the width calculation of input and textarea */ +input[type="text"], +input[type="password"], +input[type="number"], +input[type="search"], +input[type="email"], +input[type="url"], +textarea { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + -ms-box-sizing: border-box; /* ie8 only */ + box-sizing: border-box; +} + +input[type="checkbox"], +input[type="radio"] { + vertical-align: text-top; + padding: 0; + margin: 1px 0 0; +} + +input[type="search"] { + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration { + display: none; +} + +/* general */ +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +body { + font-family: sans-serif; + font-size: 12px; + line-height: 1.4em; + min-width: 600px; +} + +body.iframe { + min-width: 0; +} + +body.login { + background: #fbfbfb; + min-width: 0; +} + +iframe, +img { + border: 0; +} + +td, +textarea, +input, +select { + font-family: inherit; + font-size: inherit; + font-weight: inherit; +} + +td, +textarea { + line-height: inherit; +} + +input, +select { + line-height: 15px; +} + +a, +input, +select { + outline: 0; +} + +blockquote, +q { + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; + content: none; +} + +p { + margin: 1em 0; +} + +blockquote { + margin: 1em; +} + +label { + cursor: pointer; +} + +li, +dd { + margin-bottom: 6px; +} + +textarea, +input, +select { + margin: 1px; + padding: 3px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + display: block; + font-weight: bold; +} + +h1 { + font-size: 2em; + margin: .67em 0; +} + +h2 { + font-size: 1.5em; + margin: .83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +ul, +ol { + padding: 0; +} + +ul { + list-style: none; +} + +ol { + list-style-type: decimal; + margin-left: 2em; +} + +ul.ul-disc { + list-style: disc outside; +} + +ul.ul-square { + list-style: square outside; +} + +ol.ol-decimal { + list-style: decimal outside; +} + +ul.ul-disc, +ul.ul-square, +ol.ol-decimal { + margin-left: 1.8em; +} + +ul.ul-disc > li, +ul.ul-square > li, +ol.ol-decimal > li { + margin: 0 0 0.5em; +} + +.code, +code { + font-family: Consolas, Monaco, monospace; +} + +kbd, +code { + padding: 1px 3px; + margin: 0 1px; + font-size: 11px; +} + +.subsubsub { + list-style: none; + margin: 8px 0 5px; + padding: 0; + white-space: nowrap; + font-size: 12px; + float: left; +} + +.subsubsub a { + line-height: 2; + padding: .2em; + text-decoration: none; +} + +.subsubsub a .count, +.subsubsub a.current .count { + color: #999; + font-weight: normal; +} + +.subsubsub a.current { + font-weight: bold; + background: none; + border: none; +} + +.subsubsub li { + display: inline; + margin: 0; + padding: 0; +} + +.widefat, +div.updated, +div.error, +.wrap .add-new-h2, +textarea, +input[type="text"], +input[type="password"], +input[type="file"], +input[type="button"], +input[type="submit"], +input[type="reset"], +input[type="email"], +input[type="number"], +input[type="search"], +input[type="tel"], +input[type="url"], +select, +.tablenav .tablenav-pages a, +.tablenav-pages span.current, +#titlediv #title, +.postbox, +#postcustomstuff table, +#postcustomstuff input, +#postcustomstuff textarea, +.imgedit-menu div, +.plugin-update-tr .update-message, +#poststuff .inside .the-tagcloud, +.login form, +#login_error, +.login .message, +#menu-management .menu-edit, +.nav-menus-php .list-container, +.menu-item-handle, +.link-to-original, +.nav-menus-php .major-publishing-actions .form-invalid, +.press-this #message, +#TB_window, +.tbtitle, +.highlight, +.feature-filter, +#widget-list .widget-top, +.editwidget .widget-inside { + -webkit-border-radius: 3px; + border-radius: 3px; + border-width: 1px; + border-style: solid; +} + +/* .widefat - main style for tables */ +.widefat { + border-spacing: 0; + width: 100%; + clear: both; + margin: 0; +} + +.widefat * { + word-wrap: break-word; +} + +.widefat a { + text-decoration: none; +} + +.widefat thead th:first-of-type { + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; +} +.widefat thead th:last-of-type { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; +} +.widefat tfoot th:first-of-type { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.widefat tfoot th:last-of-type { + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.widefat td, +.widefat th { + border-width: 1px 0; + border-style: solid; +} +.widefat tfoot th { + border-bottom: none; +} + +.widefat .no-items td { + border-bottom-width: 0; +} + +.widefat td { + font-size: 12px; + padding: 4px 7px 2px; + vertical-align: top; +} + +.widefat td p, +.widefat td ol, +.widefat td ul { + font-size: 12px; +} + +.widefat th { + padding: 7px 7px 8px; + text-align: left; + line-height: 1.3em; + font-size: 14px; +} + +.widefat th input { + margin: 0 0 0 8px; + padding: 0; + vertical-align: text-top; +} + +.widefat .check-column { + width: 2.2em; + padding: 11px 0 0; + vertical-align: top; +} + +.widefat tbody th.check-column { + padding: 9px 0 22px; +} + +.widefat .num, +.column-comments, +.column-links, +.column-posts { + text-align: center; +} + +.widefat th#comments { + vertical-align: middle; +} + +.wrap { + margin: 4px 15px 0 0; +} + +div.updated, +div.error { + padding: 0 0.6em; + margin: 5px 15px 2px; +} + +div.updated p, +div.error p { + margin: 0.5em 0; + padding: 2px; +} + +.wrap div.updated, +.wrap div.error, +.media-upload-form div.error { + margin: 5px 0 15px; +} + +.wrap h2, +.subtitle { + font-weight: normal; + margin: 0; + text-shadow: #fff 0 1px 0; +} + +.wrap h2 { + font-size: 23px; + padding: 9px 15px 4px 0; + line-height: 29px; +} + +.subtitle { + font-size: 14px; + padding-left: 25px; +} + +.wrap .add-new-h2 { + font-family: sans-serif; + margin-left: 4px; + padding: 3px 8px; + position: relative; + top: -3px; + text-decoration: none; + font-size: 12px; + border: 0 none; +} + +.wrap h2.long-header { + padding-right: 0; +} + + +/*------------------------------------------------------------------------------ + 1.0 - Text Styles +------------------------------------------------------------------------------*/ + +div.sidebar-name h3, +#menu-management .nav-tab, +#dashboard_plugins h5, +a.rsswidget, +#dashboard_right_now td.b, +#dashboard-widgets h4, +.tool-box .title, +#poststuff h3, +.metabox-holder h3, +.pressthis a, +#your-profile legend, +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title, +.tablenav .displaying-num, +.widefat th, +.quicktags, +.search { + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; +} + +h2 .nav-tab, +.wrap h2, +.subtitle, +.login form .input { + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif; +} + +.quicktags, +.search { + font-size: 12px; +} + +.icon32 { + float: left; + height: 34px; + margin: 7px 8px 0 0; + width: 36px; +} + +.icon16 { + height: 18px; + width: 18px; + padding: 6px 6px; + margin: -6px 0 0 -8px; + float: left; +} + +.key-labels label { + line-height: 24px; +} + +.pre { + /* http://www.longren.org/2006/09/27/wrapping-text-inside-pre-tags/ */ + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ +} + +.howto { + font-style: italic; + display: block; + font-family: sans-serif; +} + +p.install-help { + margin: 8px 0; + font-style: italic; +} + +.no-break { + white-space: nowrap; +} + +/*------------------------------------------------------------------------------ + 2.0 - Forms +------------------------------------------------------------------------------*/ + + +.wp-admin select { + padding: 2px; + height: 2em; +} + +.wp-admin select[multiple] { + height: auto; +} + +select option { + padding: 2px; +} + +.submit { + padding: 1.5em 0; + margin: 5px 0; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +form p.submit a.cancel:hover { + text-decoration: none; +} + +.submit input, +.button, +input.button, +.button-primary, +input.button-primary, +.button-secondary, +input.button-secondary, +.button-highlighted, +input.button-highlighted, +#postcustomstuff .submit input { + text-decoration: none; + font-size: 12px !important; + line-height: 13px; + padding: 3px 8px; + cursor: pointer; + border-width: 1px; + border-style: solid; + -webkit-border-radius: 11px; + border-radius: 11px; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; +} + +#minor-publishing-actions input, +#major-publishing-actions input, +#minor-publishing-actions .preview { + min-width: 80px; + text-align: center; +} + +textarea.all-options, +input.all-options { + width: 250px; +} + +input.large-text, +textarea.large-text { + width: 99%; +} + +input.regular-text, +#adduser .form-field input { + width: 25em; +} + +input.small-text { + width: 50px; +} + +input[type="number"].small-text { + width: 60px; +} + +#doaction, +#doaction2, +#post-query-submit { + margin-right: 8px; +} + +.tablenav select[name="action"], +.tablenav select[name="action2"] { + width: 130px; +} + +.tablenav select[name="m"] { + width: 155px; +} + +.tablenav select#cat { + width: 170px; +} + +#wpcontent option { + padding: 2px; +} + +#timezone_string option { + margin-left: 1em; +} + +label, +#your-profile label + a { + vertical-align: middle; +} + +#misc-publishing-actions label { + vertical-align: baseline; +} + +#pass-strength-result { + border-style: solid; + border-width: 1px; + float: left; + margin: 13px 5px 5px 1px; + padding: 3px 5px; + text-align: center; + width: 200px; + display: none; +} +.indicator-hint { + padding-top: 8px; +} + +p.search-box { + float: right; + margin: 0; +} + +input[type="text"].ui-autocomplete-loading { + background: transparent url('../images/loading.gif') no-repeat right center; + visibility: visible; +} + +ul#add-to-blog-users { + margin: 0 0 0 14px; +} + +.ui-autocomplete-input.open { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.ui-autocomplete { + padding: 0; + margin: 0; + list-style: none; + position: absolute; + z-index: 10000; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-width: 1px; + border-style: solid; +} + +.ui-autocomplete li { + margin-bottom: 0; + white-space: nowrap; + text-align: left; +} + +.ui-autocomplete li a { + display: block; + height: 100%; + padding: 4px 10px; +} + +.ui-autocomplete li a.ui-state-hover { + cursor: pointer; +} + +/*------------------------------------------------------------------------------ + 3.0 - Actions +------------------------------------------------------------------------------*/ + +#major-publishing-actions { + padding: 10px 10px 8px; + clear: both; + border-top: 1px solid #f5f5f5; + margin-top: -2px; +} + +#delete-action { + line-height: 25px; + vertical-align: middle; + text-align: left; + float: left; +} + +#publishing-action { + text-align: right; + float: right; + line-height: 23px; +} + +#misc-publishing-actions { + padding: 6px 0 0; +} + +.misc-pub-section { + padding: 6px 10px 8px; + border-width: 1px 0; + border-style: solid; +} + +.misc-pub-section:first-child { + border-top-width: 0; +} + +.misc-pub-section-last { + border-bottom-width: 0; +} + +#minor-publishing-actions { + padding: 10px 10px 2px 8px; + text-align: right; +} + +#minor-publishing { + border-bottom-width: 1px; + border-bottom-style: solid; + -webkit-box-shadow: 0 1px 0 #fff; + -moz-box-shadow: 0 1px 0 #fff; + box-shadow: 0 1px 0 #fff; +} + +#save-post { + float: left; +} + +#minor-publishing .ajax-loading { + padding: 3px 0 0 4px; + float: left; +} + +.preview { + float: right; +} + +#sticky-span { + margin-left: 18px; +} + +.side-info { + margin: 0; + padding: 4px; + font-size: 11px; +} + +.side-info h5 { + padding-bottom: 7px; + font-size: 14px; + margin: 12px 2px 5px; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.side-info ul { + margin: 0; + padding-left: 18px; + list-style: square; +} + +a.button, +a.button-primary, +a.button-secondary { + line-height: 15px; + padding: 3px 10px; + white-space: nowrap; + -webkit-border-radius: 10px; +} + +.approve, +.unapproved .unapprove { + display: none; +} + +.unapproved .approve, +.spam .approve, +.trash .approve { + display: inline; +} + +td.action-links, +th.action-links { + text-align: right; +} + +.describe .del-link { + padding-left: 5px; +} + + +/*------------------------------------------------------------------------------ + 4.0 - Notifications +------------------------------------------------------------------------------*/ + +#update-nag, +.update-nag { + line-height: 19px; + padding: 5px 0; + font-size: 12px; + text-align: center; + margin: -1px 15px 0 5px; + border-width: 1px; + border-style: solid; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.plugins .plugin-update { + padding: 0; +} + +.plugin-update .update-message { + margin: 0 10px 8px 31px; + font-weight: bold; +} + +ul#dismissed-updates { + display: none; +} + +form.upgrade { + margin-top: 8px; +} + +form.upgrade .hint { + font-style: italic; + font-size: 85%; + margin: -0.5em 0 2em 0; +} + +.ajax-feedback { + visibility: hidden; + vertical-align: bottom; +} + +#ajax-response.alignleft { + margin-left: 2em; +} + + +/*------------------------------------------------------------------------------ + 6.0 - Admin Header +------------------------------------------------------------------------------*/ +#adminmenu a, +#sidemenu a, +#taglist a, +#catlist a { + text-decoration: none; +} + +/*------------------------------------------------------------------------------ + 6.1 - Screen Options Tabs +------------------------------------------------------------------------------*/ + +#screen-options-wrap, +#contextual-help-wrap { + margin: 0; + padding: 8px 20px 12px; + position: relative; + overflow: auto; +} + +#screen-meta .screen-reader-text { + visibility: hidden; +} + +#screen-meta-links { + margin: 0 24px 0 0; +} + +/* screen options and help tabs revert */ +#screen-meta { + display: none; + position: relative; + margin: 0 15px 0 5px; + border-width: 0 1px 1px; + border-style: none solid solid; +} + +#screen-options-link-wrap, +#contextual-help-link-wrap { + float: right; + height: 23px; + padding: 0; + margin: 0 0 0 6px; + font-family: sans-serif; +} + +#screen-options-link-wrap, +#contextual-help-link-wrap, +#screen-meta { + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +#screen-meta-links .screen-meta-toggle { + position: relative; + top: -1px; +} + +#screen-meta-links a.show-settings { + text-decoration: none; + z-index: 1; + padding: 1px 16px 0 6px; + height: 22px; + line-height: 22px; + font-size: 12px; + display: block; + text-shadow: rgba(255,255,255,0.7) 0 1px 0; +} + +#screen-meta-links a.show-settings:hover { + text-decoration: none; +} +/* end screen options and help tabs */ + +.toggle-arrow { + background-repeat: no-repeat; + background-position: top left; + background-color: transparent; + height: 22px; + line-height: 22px; + display: block; +} + +.toggle-arrow-active { + background-position: bottom left; +} + +#screen-options-wrap h5, +#contextual-help-wrap h5 { + margin: 8px 0; + font-size: 13px; +} + +.metabox-prefs label { + display: inline-block; + padding-right: 15px; + white-space: nowrap; + line-height: 30px; +} + +.metabox-prefs label input { + margin: 0 5px 0 2px; +} + +.metabox-prefs .columns-prefs label input { + margin: 0 2px; +} + +.metabox-prefs label a { + display: none; +} + +/*------------------------------------------------------------------------------ + 6.2 - Help Menu +------------------------------------------------------------------------------*/ + +#contextual-help-wrap { + padding: 0; + margin-left: -4px; +} + +#contextual-help-columns { + position: relative; +} + +#contextual-help-back { + position: absolute; + top: 0; + bottom: 0; + left: 150px; + right: 170px; + border-width: 0 1px; + border-style: solid; +} + +#contextual-help-wrap.no-sidebar #contextual-help-back { + right: 0; + + border-right-width: 0; + -webkit-border-bottom-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +.contextual-help-tabs { + float: left; + width: 150px; + margin: 0; +} + +.contextual-help-tabs ul { + margin: 1em 0; +} + +.contextual-help-tabs li { + margin-bottom: 0; + list-style-type: none; + border-style: solid; + border-width: 1px 0; + border-color: transparent; +} + +.contextual-help-tabs a { + display: block; + padding: 5px 5px 5px 12px; + line-height: 18px; + text-decoration: none; +} + +.contextual-help-tabs .active { + padding: 0; + margin: 0 -1px 0 0; + border-width: 1px 0 1px 1px; + border-style: solid; +} + +.contextual-help-tabs-wrap { + padding: 0 20px; + overflow: auto; +} + +.help-tab-content { + display: none; + margin: 0 22px 12px 0; + line-height: 1.6em; +} + +.help-tab-content.active { + display: block; +} + +.help-tab-content li { + list-style-type: disc; + margin-left: 18px; +} + +.contextual-help-sidebar { + width: 150px; + float: right; + padding: 0 8px 0 12px; + overflow: auto; +} + + +/*------------------------------------------------------------------------------ + 7.0 - Main Navigation (Left Menu) +------------------------------------------------------------------------------*/ + +#adminmenuback, +#adminmenuwrap { + border-width: 0 1px 0 0; + border-style: solid; +} + +#adminmenuwrap { + position: relative; + float: left; +} + +#adminmenushadow { + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 6px; + z-index: 20; +} + +/* side admin menu */ +#adminmenu * { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +#adminmenu .wp-submenu { + list-style: none; + padding: 0; + margin: 0; + overflow: hidden; +} + +#adminmenu li .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + display: none; + position: absolute; + top: -1px; + left: 146px; + z-index: 999; + overflow: hidden; +} + +.js #adminmenu .wp-submenu.sub-open, +.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, +.no-js #adminmenu .wp-has-submenu:hover .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu li.focused .wp-submenu { + display: block; +} + +#adminmenu .wp-has-current-submenu .wp-submenu { + position: relative; + z-index: 2; + top: auto; + left: auto; + right: auto; + bottom: auto; + padding: 0; +} + +#adminmenu .wp-has-current-submenu .wp-submenu-wrap { + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.folded #adminmenu .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + top: -5px; + left: 26px; +} + +#adminmenu .wp-submenu.sub-open, +#adminmenu li.focused.wp-not-current-submenu .wp-submenu, +.folded #adminmenu li.focused.wp-has-current-submenu .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, +.no-js #adminmenu .wp-has-submenu:hover .wp-submenu, +.no-js.folded #adminmenu .wp-has-current-submenu:hover .wp-submenu { + padding: 0 8px 8px 0; +} + +.no-js #adminmenu .wp-has-current-submenu:hover .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu { + padding: 0; +} + +#adminmenu .wp-submenu a { + font-size: 12px; + line-height: 18px; +} + +#adminmenu a.menu-top, +#adminmenu .wp-submenu-head { + font-size: 13px; + line-height: 18px; +} + +#adminmenu div.wp-submenu-head { + display: none; +} + +.folded #adminmenu div.wp-submenu-head { + display: block; +} + +.folded #adminmenu a.menu-top, +body.no-js #adminmenu .wp-menu-toggle, +.folded #adminmenu div.wp-menu-toggle { + display: none; +} + +#adminmenu div.wp-menu-image { + float: left; + width: 28px; + height: 28px; +} + +.folded #adminmenu div.wp-menu-image { + width: 30px; +} + +#adminmenu li { + margin: 0; + padding: 0; + cursor: pointer; +} + +#adminmenu a { + display: block; + line-height: 18px; + padding: 2px 5px; +} + +#adminmenu li.menu-top { + min-height: 29px; + position: relative; +} + +#adminmenu a.menu-top { + font-weight: bold; + line-height: 18px; + min-width: 10em; + padding: 5px 5px; + border-width: 1px 0 1px; + border-style: solid; +} + +#adminmenu li.wp-menu-open { + border-width: 0 0 1px; + border-style: solid; +} + +#adminmenu .wp-submenu ul { + padding: 4px 0; +} + +#adminmenu .wp-submenu a { + margin: 0; +} + +#adminmenu li li { + margin-left: 8px; +} + +#adminmenu .wp-submenu a, +#adminmenu li li a, +.folded #adminmenu .wp-not-current-submenu li a { + padding-left: 12px; +} + +#adminmenu .wp-not-current-submenu li a { + padding-left: 18px; +} + +.folded #adminmenu li li { + margin-left: 0; +} + +.folded #adminmenu li li a { + padding-left: 0; +} + +.wp-menu-arrow { + display: none; + cursor: auto; + z-index: 25; + position: absolute; + right: 100%; + margin: 0; + height: 30px; + width: 6px; + + -moz-transform: translate( 146px ); + -webkit-transform: translate( 146px ); + -o-transform: translate( 146px ); + -ms-transform: translate( 146px ); + transform: translate( 146px ); +} + +#adminmenu li.wp-has-current-submenu .wp-menu-arrow, +#adminmenu li.menu-top:hover .wp-menu-arrow, +#adminmenu li.current .wp-menu-arrow, +#adminmenu li.focused .wp-menu-arrow, +#adminmenu li.menu-top.wp-has-submenu:hover .wp-menu-arrow div { + display: block; +} + +#adminmenu li.wp-not-current-submenu:hover .wp-menu-arrow div { + display: none; +} + +#adminmenu li.menu-top:hover .wp-menu-arrow, +#adminmenu li.menu-top.focused .wp-menu-arrow { + z-index: 1001; +} + +.ie8 #adminmenu li.menu-top:hover .wp-menu-arrow { + display: none; +} + +#adminmenu .wp-menu-arrow div { + position: absolute; + top: 7px; + left: -1px; + width: 14px; + height: 15px; + + -moz-transform: matrix( -0.6, 1, 0.6, 1, 0, 0 ); + -webkit-transform: matrix( -0.6, 1, 0.6, 1, 0, 0 ); + -o-transform: matrix( -0.6, 1, 0.6, 1, 0, 0 ); + -ms-transform: matrix( -0.6, 1, 0.6, 1, 0, 0 ); + transform: matrix( -0.6, 1, 0.6, 1, 0, 0 ); +} + +#adminmenu li.wp-not-current-submenu .wp-menu-arrow { + -moz-transform: translate( 145px ); + -webkit-transform: translate( 145px ); + -o-transform: translate( 145px ); + -ms-transform: translate( 145px ); + transform: translate( 145px ); + height: 28px; + border-width: 1px 0; + border-style: solid; +} + +.folded .wp-menu-arrow { + -moz-transform: translate( 33px ); + -webkit-transform: translate( 33px ); + -o-transform: translate( 33px ); + -ms-transform: translate( 33px ); + transform: translate( 33px ); +} + +#adminmenu .wp-not-current-submenu .wp-menu-arrow div { + width: 15px; + top: 6px; + border-width: 0 0 1px 1px; + border-style: solid; +} + +.wp-menu-arrow, +.folded #adminmenu li.menu-top:hover .wp-menu-arrow { + display: none; +} + +.folded #adminmenu li.current:hover .wp-menu-arrow, +.folded #adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow { + display: block; + z-index: 125; +} + +#adminmenu .wp-submenu li { + padding: 0; + margin: 0; +} + +.folded #adminmenu li.menu-top { + border-width: 1px 0; + border-style: solid none; +} + +#adminmenu .wp-menu-image img { + float: left; + padding: 5px 0 0 2px; + opacity: 0.6; + filter: alpha(opacity=60); +} + +#adminmenu li.menu-top:hover .wp-menu-image img, +#adminmenu li.wp-has-current-submenu .wp-menu-image img { + opacity: 1; + filter: alpha(opacity=100); +} + +#adminmenu li.wp-menu-separator { + height: 3px; + padding: 0; + margin: 0; + border-width: 1px 0; + border-style: solid; + cursor: inherit; +} + +#adminmenu div.separator { + height: 1px; + padding: 0; + border-width: 1px 0 0 0; + border-style: solid; +} + +#adminmenu .wp-submenu .wp-submenu-head { + padding: 6px 4px 5px 10px; + cursor: default; + border-width: 1px 0; + border-style: solid; +} + +#adminmenu li .wp-submenu-wrap { + border-width: 1px 1px 1px 0; + border-style: solid solid solid none; + position: relative; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} + +#adminmenu li.wp-menu-open .wp-submenu-wrap { + border: 0 none; +} + +.folded #adminmenu .wp-submenu .wp-submenu-wrap { + margin-top: 3px; +} + +.folded #adminmenu .wp-has-current-submenu { + margin-bottom: 1px; +} + +.folded #adminmenu .wp-has-current-submenu.menu-top-last { + margin-bottom: 0; +} + +.folded #adminmenu .wp-has-current-submenu .wp-submenu-wrap { + margin-top: 4px; +} + +.folded #adminmenu .wp-submenu ul { + border-width: 0 0 0 1px; + border-style: solid; +} + +.folded #adminmenu .wp-submenu a { + padding-left: 10px; +} + +.folded #adminmenu a.wp-has-submenu { + margin-left: 40px; +} + +#adminmenu .wp-menu-toggle { + width: 18px; + clear: right; + float: right; + margin: 1px 0 0; + height: 27px; + padding: 1px 2px 0 0; + cursor: pointer; +} + +#adminmenu .wp-menu-image a { + height: 24px; +} + +#adminmenu .awaiting-mod, +#adminmenu span.update-plugins, +#sidemenu li a span.update-plugins { + position: absolute; + font-family: sans-serif; + font-size: 9px; + line-height: 17px; + font-weight: bold; + margin-top: 1px; + margin-left: 7px; + -webkit-border-radius: 10px; + border-radius: 10px; +} + +#adminmenu li .awaiting-mod span, +#adminmenu li span.update-plugins span, +#sidemenu li a span.update-plugins span { + display: block; + padding: 0 6px; +} + +#adminmenu li span.count-0, +#sidemenu li a .count-0 { + display: none; +} + +#collapse-menu { + font-size: 12px; + line-height: 34px; +} + +.folded #collapse-menu span { + display: none; +} + +#collapse-button, +#collapse-button div { + width: 15px; + height: 15px; +} + +#collapse-button { + float: left; + margin: 8px 6px; + border-width: 1px; + border-style: solid; + -webkit-border-radius: 10px; + border-radius: 10px; +} + +/* Auto-folding of the admin menu */ +@media only screen and (max-width: 900px) { + #wpcontent, + #footer { + margin-left: 52px; + } + + #adminmenuback, + #adminmenuwrap, + #adminmenu, + #adminmenu li.menu-top { + width: 32px; + } + + #adminmenu .wp-has-current-submenu .wp-submenu { + display: none; + position: absolute; + width: 145px; + z-index: 999; + overflow: hidden; + } + + #adminmenu .wp-has-current-submenu .wp-submenu.sub-open { + display: block; + } + + #adminmenu li .wp-submenu, + #adminmenu .wp-has-current-submenu .wp-submenu { + top: -5px; + left: 26px; + } + + #adminmenu li.focused.wp-has-current-submenu .wp-submenu, + #adminmenu .wp-has-current-submenu .wp-submenu.sub-open { + padding: 0 8px 8px 0; + } + + #adminmenu div.wp-submenu-head { + display: block; + } + + #adminmenu a.menu-top, + #adminmenu div.wp-menu-toggle { + display: none; + } + + #adminmenu div.wp-menu-image { + width: 30px; + } + + #adminmenu .wp-not-current-submenu li a { + padding-left: 12px; + } + + #adminmenu li li { + margin-left: 0; + } + + #adminmenu li li a { + padding-left: 0; + } + + .wp-menu-arrow { + -moz-transform: translate( 33px ); + -webkit-transform: translate( 33px ); + -o-transform: translate( 33px ); + -ms-transform: translate( 33px ); + transform: translate( 33px ); + } + + #adminmenu li.menu-top:hover .wp-menu-arrow { + display: none; + } + + #adminmenu li.current:hover .wp-menu-arrow, + #adminmenu li.menu-top.wp-menu-open:hover .wp-menu-arrow { + display: block; + z-index: 125; + } + + #adminmenu li.menu-top { + border-width: 1px 0; + border-style: solid none; + } + + #adminmenu .wp-submenu .wp-submenu-wrap { + margin-top: 3px; + } + + #adminmenu .wp-has-current-submenu { + margin-bottom: 1px; + } + + #adminmenu .wp-has-current-submenu.menu-top-last { + margin-bottom: 0; + } + + #adminmenu .wp-has-current-submenu .wp-submenu-wrap { + margin-top: 4px; + } + + #adminmenu .wp-submenu ul { + border-width: 0 0 0 1px; + border-style: solid; + } + + #adminmenu .wp-submenu a { + padding-left: 10px; + } + + #adminmenu a.wp-has-submenu { + margin-left: 40px; + } + + #collapse-menu { + display: none; + } +} + +/* List table styles */ +.post-com-count-wrapper { + min-width: 22px; + font-family: sans-serif; +} + +.post-com-count { + height: 1.3em; + line-height: 1.1em; + display: block; + text-decoration: none; + padding: 0 0 6px; + cursor: pointer; + background-position: center -80px; + background-repeat: no-repeat; +} + +.post-com-count span { + font-size: 11px; + font-weight: bold; + height: 1.4em; + line-height: 1.4em; + min-width: 0.7em; + padding: 0 6px; + display: inline-block; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +strong .post-com-count { + background-position: center -55px; +} + +.post-com-count:hover { + background-position: center -3px; +} + +.column-response .post-com-count { + float: left; + margin-right: 5px; + text-align: center; +} + +.response-links { + float: left; +} + +#the-comment-list .attachment-80x60 { + padding: 4px 8px; +} + + +/*------------------------------------------------------------------------------ + 8.0 - Layout Blocks +------------------------------------------------------------------------------*/ + +html.wp-toolbar { + padding-top: 28px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.narrow { + width: 70%; + margin-bottom: 40px; +} + +.narrow p { + line-height: 150%; +} + +.widefat th, +.widefat td { + overflow: hidden; +} + +.widefat th { + font-weight: normal; +} + +.widefat td p { + margin: 2px 0 0.8em; +} + +.widefat .column-comment p { + margin: 0.6em 0; +} + +/* Screens with postboxes */ +.postbox-container { + float: left; +} + +#dashboard-widgets.columns-1 .postbox-container { + width: 100%; +} + +#dashboard-widgets.columns-2 .postbox-container { + width: 49.5%; +} + +#dashboard-widgets.columns-2 #postbox-container-2, +#dashboard-widgets.columns-2 #postbox-container-3, +#dashboard-widgets.columns-2 #postbox-container-4 { + float: right; + width: 50.5%; +} + +#dashboard-widgets.columns-3 .postbox-container { + width: 33.5%; +} + +#dashboard-widgets.columns-3 #postbox-container-1 { + width: 33%; +} + +#dashboard-widgets.columns-3 #postbox-container-3, +#dashboard-widgets.columns-3 #postbox-container-4 { + float: right; +} + +#dashboard-widgets.columns-4 .postbox-container { + width: 25%; +} + +.postbox-container .meta-box-sortables { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.metabox-holder .postbox-container .empty-container { + border: 3px dashed #CCCCCC; + height: 250px; +} + +.metabox-holder.columns-1 .postbox-container .empty-container, +.columns-2 #postbox-container-3 .empty-container, +.columns-2 #postbox-container-4 .empty-container, +.columns-3 #postbox-container-4 .empty-container { + border: 0 none; + height: 0; + min-height: 0; +} + +#poststuff { + padding-top: 10px; +} + +#poststuff #post-body { + padding: 0; +} + +#post-body-content { + width: 100%; + float: left; +} + +#poststuff .postbox-container { + width: 100%; +} + +#poststuff #post-body.columns-2 { + margin-right: 300px; +} + +#post-body.columns-2 #postbox-container-1 { + float: right; + margin-right: -300px; + width: 280px; +} + +#post-body.columns-2 #side-sortables { + min-height: 250px; +} + +/* one column on the dash */ +@media only screen and (max-width: 799px) { + #wpbody-content #dashboard-widgets .postbox-container { + width: 100%; + } + + #wpbody-content .metabox-holder .postbox-container .empty-container { + border: 0 none; + height: 0; + min-height: 0; + } +} + +/* two columns on the dash, but keep the setting if one is selected */ +@media only screen and (min-width: 800px) and (max-width: 1200px) { + #wpbody-content #dashboard-widgets .postbox-container { + width: 49.5%; + } + + #wpbody-content #dashboard-widgets #postbox-container-2, + #wpbody-content #dashboard-widgets #postbox-container-3, + #wpbody-content #dashboard-widgets #postbox-container-4 { + float: right; + width: 50.5%; + } + + #dashboard-widgets #postbox-container-3 .empty-container, + #dashboard-widgets #postbox-container-4 .empty-container { + border: 0 none; + height: 0; + min-height: 0; + } + + #wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container { + width: 100%; + } + + #wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container { + border: 0 none; + height: 0; + min-height: 0; + } + + /* show the radio buttons for column prefs only for one or two columns */ + .index-php .screen-layout, + .index-php .columns-prefs { + display: block; + } + + .columns-prefs .columns-prefs-3, + .columns-prefs .columns-prefs-4 { + display: none; + } +} + +/* one column on the post write/edit screen */ +@media only screen and (max-width: 850px) { + #wpbody-content #poststuff #post-body { + margin: 0; + } + + #wpbody-content #post-body.columns-2 #postbox-container-1 { + margin-right: 0; + width: 100%; + } + + #poststuff #postbox-container-1 .empty-container, + #poststuff #postbox-container-1 #side-sortables:empty { + border: 0 none; + height: 0; + min-height: 0; + } + + #poststuff #post-body.columns-2 #side-sortables { + min-height: 0; + } + + /* hide the radio buttons for column prefs */ + .screen-layout, + .columns-prefs { + display: none; + } +} + +.postbox .hndle { + cursor: move; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.postbox.closed .hndle { + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.hndle a { + font-size: 11px; + font-weight: normal; +} + +.postbox .handlediv { + float: right; + width: 27px; + height: 30px; + cursor: pointer; +} + +.sortable-placeholder { + border-width: 1px; + border-style: dashed; + margin-bottom: 20px; +} + +.widget, +.postbox, +.stuffbox { + margin-bottom: 20px; + padding: 0; + border-width: 1px; + border-style: solid; + line-height: 1; +} + +.widget .widget-top, +.postbox h3, +.stuffbox h3 { + margin-top: 1px; + border-bottom-width: 1px; + border-bottom-style: solid; + cursor: move; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.stuffbox h3 { + cursor: auto; +} + +.postbox .inside, +.stuffbox .inside { + padding: 0 10px; + line-height: 1.4em; +} + +.postbox .inside { + margin: 10px 0; + position: relative; +} + +.postbox.closed h3 { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.postbox table.form-table { + margin-bottom: 0; +} + +.temp-border { + border: 1px dotted #ccc; +} + +.columns-prefs label { + padding: 0 5px; +} + + +/*------------------------------------------------------------------------------ + 9.0 - Dashboard +------------------------------------------------------------------------------*/ + +#dashboard-widgets-wrap { + margin: 0 -8px; +} + +#wpbody-content .metabox-holder { + padding-top: 10px; +} + +#dashboard-widgets .meta-box-sortables { + margin: 0 8px; +} + +#dashboard_recent_comments div.undo { + border-top-style: solid; + border-top-width: 1px; + margin: 0 -10px; + padding: 3px 8px; + font-size: 11px; +} + +#the-comment-list td.comment p.comment-author { + margin-top: 0; + margin-left: 0; +} + +#the-comment-list p.comment-author img { + float: left; + margin-right: 8px; +} + +#the-comment-list p.comment-author strong a { + border: none; +} + +#the-comment-list td { + vertical-align: top; +} + +#the-comment-list td.comment { + word-wrap: break-word; +} + +/* Welcome Panel */ +.welcome-panel { + margin: 20px 8px; + padding: 30px 10px 20px; + border-width: 1px 0; + border-style: solid; + position: relative; + line-height: 1.6em; + overflow: auto; +} + +.welcome-panel h3 { + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif; + font-size: 32px; + font-weight: normal; + line-height: 1.2; + margin: 0.1em 0 0.8em; +} +.welcome-panel h4 { + font-size: 14px; +} + +.welcome-panel .welcome-panel-close { + position: absolute; + top: 0; + right: 10px; + padding: 8px 3px; + font-size: 13px; + text-decoration: none; +} + +.welcome-panel .welcome-panel-close:before { + background: url('../images/xit.gif') 0 17% no-repeat; + content: ' '; + height: 100%; + width: 10px; + left: -12px; + position: absolute; +} + +.welcome-panel .welcome-panel-close:hover:before { + background-position: 100% 17%; +} + +.welcome-panel .wp-badge { + float: left; + margin-bottom: 20px; +} + +.welcome-panel-content { + max-width: 1500px; +} + +.welcome-panel-content .about-description, +.welcome-panel h3 { + margin-left: 190px; +} + +.welcome-panel p.welcome-panel-dismiss { + clear: both; + padding: 1em 0 0 0; +} + +.welcome-panel .welcome-panel-column-container { + clear: both; + overflow: hidden; + position: relative; + padding-left: 26px; +} + +.welcome-panel .welcome-panel-column { + margin: 0 5% 0 -25px; + padding-left: 25px; + width: 30%; + min-width: 200px; + float: left; +} + +.welcome-panel .welcome-panel-column.welcome-panel-last { + margin-right: 0; +} + +.welcome-panel h4 .icon16 { + margin-left: -32px; +} + +.welcome-panel .welcome-panel-column ul { + margin: 1.6em 1em 1em 1.3em; +} + +.welcome-panel .welcome-panel-column li { + list-style-type: disc; + padding-left: 2px; +} + + +/*------------------------------------------------------------------------------ + 10.0 - List Posts (/Pages/etc) +------------------------------------------------------------------------------*/ + +table.fixed { + table-layout: fixed; +} + +.fixed .column-rating, +.fixed .column-visible { + width: 8%; +} + +.fixed .column-date, +.fixed .column-parent, +.fixed .column-links { + width: 10%; +} + +.fixed .column-response, +.fixed .column-author, +.fixed .column-categories, +.fixed .column-tags, +.fixed .column-rel, +.fixed .column-role { + width: 15%; +} + +.fixed .column-comments { + width: 4em; + padding: 8px 0; + text-align: left; +} + +.fixed .column-comments .vers { + padding-left: 3px; +} + +.fixed .column-comments a { + float: left; +} + +.fixed .column-slug { + width: 25%; +} + +.fixed .column-posts { + width: 10%; +} + +.fixed .column-icon { + width: 80px; +} + +#comments-form .fixed .column-author { + width: 20%; +} + +#commentsdiv.postbox .inside { + margin: 0; + padding: 0; +} + +#commentsdiv .inside .row-actions { + line-height:18px; +} + +#commentsdiv .inside .column-author { + width: 25%; +} + +#commentsdiv .column-comment p { + margin: 0.6em 0; + padding: 0; +} + +#commentsdiv #replyrow td { + padding: 0; +} + +#commentsdiv p { + padding: 8px 10px; + margin: 0; +} + +#commentsdiv #add-new-comment { + border-width: 0 0 1px; + border-style: none none solid; +} + +#commentsdiv .comments-box { + border: 0 none; +} + +#commentsdiv .comments-box thead th { + background: transparent; + padding: 0 7px 4px; + font-style: italic; +} + +#commentsdiv .comments-box tr:last-child td { + border-bottom: 0 none; +} + +#commentsdiv img.waiting { + padding-left: 5px; +} + +.sorting-indicator { + display: none; + width: 7px; + height: 4px; + margin-top: 8px; + margin-left: 7px; + background-image: url(../images/sort.gif); + background-repeat: no-repeat; +} + +.fixed .column-comments .sorting-indicator { + margin-top: 3px; +} + +.widefat th.sortable, +.widefat th.sorted { + padding: 0; +} + +th.sortable a, +th.sorted a { + display: block; + overflow: hidden; + padding: 7px 7px 8px; +} + +.fixed .column-comments.sortable a, +.fixed .column-comments.sorted a { + padding: 8px 0; +} + +th.sortable a span, +th.sorted a span { + float: left; + cursor: pointer; +} + +th.sorted.asc .sorting-indicator, +th.desc:hover span.sorting-indicator { + display: block; + background-position: 0 0; +} + +th.sorted.desc .sorting-indicator, +th.asc:hover span.sorting-indicator { + display: block; + background-position: -7px 0; +} + +/* Bulk Actions */ +.tablenav-pages a { + border-bottom-style: solid; + border-bottom-width: 2px; + font-weight: bold; + margin-right: 1px; + padding: 0 2px; +} +.tablenav-pages .current-page { + text-align: center; +} +.tablenav-pages .next-page { + margin-left: 2px; +} + +.tablenav a.button-secondary { + display: block; + margin: 3px 8px 0 0; +} + +.tablenav { + clear: both; + height: 30px; + margin: 6px 0 4px; + vertical-align: middle; +} + +.tablenav.themes { + max-width: 98%; +} + +.tablenav .tablenav-pages { + float: right; + display: block; + cursor: default; + height: 30px; + line-height: 30px; + font-size: 12px; +} + +.tablenav .no-pages, +.tablenav .one-page .pagination-links { + display: none; +} + +.tablenav .tablenav-pages a, +.tablenav-pages span.current { + text-decoration: none; + padding: 3px 6px; +} + +.tablenav .tablenav-pages a.disabled:hover , +.tablenav .tablenav-pages a.disabled:active { + cursor: default; +} + +.tablenav .displaying-num { + margin-right: 10px; + font-size: 12px; + font-style: italic; +} + +.tablenav .actions { + padding: 2px 8px 0 0; +} + +.tablenav .delete { + margin-right: 20px; +} + +.view-switch { + float: right; + margin: 6px 8px 0; +} + +.view-switch a { + text-decoration: none; +} + +.filter { + float: left; + margin: -5px 0 0 10px; +} + +.filter .subsubsub { + margin-left: -10px; + margin-top: 13px; +} +.screen-per-page { + width: 4em; +} + +#posts-filter fieldset { + float: left; + margin: 0 1.5ex 1em 0; + padding: 0; +} + +#posts-filter fieldset legend { + padding: 0 0 .2em 1px; +} + +span.post-state-format { + font-weight: normal; +} + + +/*------------------------------------------------------------------------------ + 10.1 - Inline Editing +------------------------------------------------------------------------------*/ + +/* +.quick-edit* is for Quick Edit +.bulk-edit* is for Bulk Edit +.inline-edit* is for everything +*/ + +/* Layout */ + +#wpbody-content .inline-edit-row fieldset { + font-size: 12px; + float: left; + margin: 0; + padding: 0; + width: 100%; +} + +tr.inline-edit-row td, +#wpbody-content .inline-edit-row fieldset .inline-edit-col { + padding: 0 0.5em; +} + +#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col { + border-width: 0 0 0 1px; + border-style: none none none solid; +} + +#wpbody-content .quick-edit-row-post .inline-edit-col-left { + width: 40%; +} + +#wpbody-content .quick-edit-row-post .inline-edit-col-right { + width: 39%; +} + +#wpbody-content .inline-edit-row-post .inline-edit-col-center { + width: 20%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-left { + width: 50%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-right, +#wpbody-content .bulk-edit-row-post .inline-edit-col-right { + width: 49%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-left { + width: 30%; +} + +#wpbody-content .bulk-edit-row-page .inline-edit-col-right { + width: 69%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: right; + width: 69%; +} + +#wpbody-content .inline-edit-row-page .inline-edit-col-right { + margin-top: 27px; +} + +.inline-edit-row fieldset .inline-edit-group { + clear: both; +} + +.inline-edit-row fieldset .inline-edit-group:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.inline-edit-row p.submit { + clear: both; + padding: 0.5em; + margin: 0.5em 0 0; +} + +.inline-edit-row span.error { + line-height: 22px; + margin: 0 15px; + padding: 3px 5px; +} + +/* Positioning */ +.inline-edit-row h4 { + margin: .2em 0; + padding: 0; + line-height: 23px; +} +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title { + margin: 0; + padding: 0; + line-height: 27px; +} + +.inline-edit-row fieldset label, +.inline-edit-row fieldset span.inline-edit-categories-label { + display: block; + margin: .2em 0; +} + +.inline-edit-row fieldset label.inline-edit-tags { + margin-top: 0; +} + +.inline-edit-row fieldset label.inline-edit-tags span.title { + margin: .2em 0; +} + +.inline-edit-row fieldset label span.title { + display: block; + float: left; + width: 5em; +} + +.inline-edit-row fieldset label span.input-text-wrap { + display: block; + margin-left: 5em; +} + +.quick-edit-row-post fieldset.inline-edit-col-right label span.title { + width: auto; + padding-right: 0.5em; +} + +.inline-edit-row .input-text-wrap input[type=text] { + width: 100%; +} + +.inline-edit-row fieldset label input[type=checkbox] { + vertical-align: text-bottom; +} + +.inline-edit-row fieldset label textarea { + width: 100%; + height: 4em; +} + +#wpbody-content .bulk-edit-row fieldset .inline-edit-group label { + max-width: 50%; +} + +#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child { + margin-right: 0.5em +} + +.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input { + width: 6em; +} + +/* Styling */ +.inline-edit-row h4 { + text-transform: uppercase; +} + +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title { + font-style: italic; + line-height: 1.8em; +} + +/* Specific Elements */ +.inline-edit-row fieldset input[type="text"], +.inline-edit-row fieldset textarea { + border-style: solid; + border-width: 1px; +} + +.inline-edit-row fieldset .inline-edit-date { + float: left; +} + +.inline-edit-row fieldset input[name=jj], +.inline-edit-row fieldset input[name=hh], +.inline-edit-row fieldset input[name=mn] { + font-size: 12px; + width: 2.1em; +} + +.inline-edit-row fieldset input[name=aa] { + font-size: 12px; + width: 3.5em; +} + +.inline-edit-row fieldset label input.inline-edit-password-input { + width: 8em; +} + +.inline-edit-row .catshow, +.inline-edit-row .cathide { + cursor: pointer; +} + +ul.cat-checklist { + height: 12em; + border-style: solid; + border-width: 1px; + overflow-y: scroll; + padding: 0 5px; + margin: 0; +} + +#bulk-titles { + display: block; + height: 12em; + border-style: solid; + border-width: 1px; + overflow-y: scroll; + padding: 0 5px; + margin: 0 0 5px; +} + +.inline-edit-row fieldset ul.cat-checklist li, +.inline-edit-row fieldset ul.cat-checklist input { + margin: 0; +} + +.inline-edit-row fieldset ul.cat-checklist label, +.inline-edit-row .catshow, +.inline-edit-row .cathide, +.inline-edit-row #bulk-titles div { + font-family: sans-serif; + font-style: normal; + font-size: 11px; +} + +table .inline-edit-row fieldset ul.cat-hover { + height: auto; + max-height: 30em; + overflow-y: auto; + position: absolute; +} + +.inline-edit-row fieldset label input.inline-edit-menu-order-input { + width: 3em; +} + +.inline-edit-row fieldset label input.inline-edit-slug-input { + width: 75%; +} + +.quick-edit-row-post fieldset label.inline-edit-status { + float: left; +} + +#bulk-titles { + line-height: 140%; +} +#bulk-titles div { + margin: 0.2em 0.3em; +} + +#bulk-titles div a { + cursor: pointer; + display: block; + float: left; + height: 10px; + margin: 3px 3px 0 -2px; + overflow: hidden; + position: relative; + text-indent: -9999px; + width: 10px; +} + + +/*------------------------------------------------------------------------------ + 11.0 - Write/Edit Post Screen +------------------------------------------------------------------------------*/ + +#titlediv { + position: relative; + margin-bottom: 20px; +} +#titlediv label { cursor: text; } + +#titlediv div.inside { + margin: 0; +} + +#poststuff #titlewrap { + border: 0; + padding: 0; +} + +#titlediv #title { + padding: 3px 8px; + font-size: 1.7em; + line-height: 100%; + width: 100%; + outline: none; +} + +#titlediv #title-prompt-text, +#wp-fullscreen-title-prompt-text { + color: #bbb; + position: absolute; + font-size: 1.7em; + padding: 8px 10px; +} + +#wp-fullscreen-title-prompt-text { + left: 0; + padding: 11px; +} + +#poststuff .inside-submitbox, +#side-sortables .inside-submitbox { + margin: 0 3px; + font-size: 11px; +} + +input#link_description, +input#link_url { + width: 98%; +} + +#pending { + background: 0 none; + border: 0 none; + padding: 0; + font-size: 11px; + margin-top: -1px; +} + +#edit-slug-box { + height: 1em; + margin-top: 8px; + padding: 0 10px; +} + +#editable-post-name-full { + display: none; +} + +#editable-post-name input { + width: 16em; +} + +.postarea h3 label { + float: left; +} + +#submitpost #ajax-loading, +#submitpost .ajax-loading { + vertical-align: middle; +} + +#wpcontent .ajax-loading { + visibility: hidden; +} + +.submitbox .submit { + text-align: left; + padding: 12px 10px 10px; + font-size: 11px; +} + +.submitbox .submitdelete { + text-decoration: none; + padding: 1px 2px; +} + +.submitbox .submitdelete, +.submitbox .submit a:hover { + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.submitbox .submit input { + margin-bottom: 8px; + margin-right: 4px; + padding: 6px; +} + +.inside-submitbox #post_status { + margin: 2px 0 2px -2px; +} + +#post-status-select, #post-format { + line-height: 2.5em; + margin-top: 3px; +} + +/* Post Screen */ +#post-body #normal-sortables { + min-height: 50px; +} + +.postbox { + position: relative; + min-width: 255px; +} + +#trackback_url { + width: 99%; +} + +#normal-sortables .postbox .submit { + background: transparent none; + border: 0 none; + float: right; + padding: 0 12px; + margin:0; +} + +.category-add input[type="text"], +.category-add select { + width: 100%; + max-width: 260px; +} + +.press-this #side-sortables .category-tabs li, +ul.category-tabs li, +#side-sortables .add-menu-item-tabs li, +.wp-tab-bar li { + display: inline; + line-height: 1.35em; +} + +.no-js .category-tabs li.hide-if-no-js { + display: none; +} + +.category-tabs a, +#side-sortables .add-menu-item-tabs a, +.wp-tab-bar a { + text-decoration: none; +} + +.category-tabs { + margin: 8px 0 3px; +} + +#category-adder h4 { + margin: 10px 0; +} + +#side-sortables .add-menu-item-tabs, +.wp-tab-bar { + margin-bottom: 3px; +} + +#normal-sortables .postbox #replyrow .submit { + float: none; + margin: 0; + padding: 0 7px 5px; +} + +#side-sortables .submitbox .submit input, +#side-sortables .submitbox .submit .preview, +#side-sortables .submitbox .submit a.preview:hover { + border: 0 none; +} + +#side-sortables .inside-submitbox .insidebox, +.stuffbox .insidebox { + margin: 11px 0; +} + +ul.category-tabs, +ul.add-menu-item-tabs, +ul.wp-tab-bar { + margin-top: 12px; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + border-style: solid solid none; + border-width: 1px 1px 0; +} + +#post-body .add-menu-item-tabs li.tabs { + border-style: solid none solid solid; + border-width: 1px 0 1px 1px; + margin-right: -1px; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li, +ul.wp-tab-bar li { + padding: 3px 5px 5px; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +/* positioning etc. */ +form#tags-filter { + position: relative; +} + +/* Edit posts */ +td.post-title strong, +td.plugin-title strong { + display: block; + margin-bottom: .2em; +} + +td.post-title p, +td.plugin-title p { + margin: 6px 0; +} + +/* Global classes */ +.wp-hidden-children .wp-hidden-child, +.ui-tabs-hide { + display: none; +} + +.commentlist .avatar { + vertical-align: text-top; +} + +#post-body .tagsdiv #newtag { + margin-right: 5px; + width: 16em; +} + +#side-sortables input#post_password { + width: 94% +} + +#side-sortables .tagsdiv #newtag { + width: 68%; +} + +#post-status-info { + border-width: 0 1px 1px; + border-style: none solid solid; + width: 100%; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +#post-status-info td { + font-size: 12px; +} + +.autosave-info { + padding: 2px 15px; + text-align: right; +} + +#editorcontent #post-status-info { + border: none; +} + +#post-body .wp_themeSkin .mceStatusbar a.mceResize { + display: block; + background: transparent url(../images/resize.gif) no-repeat scroll right bottom; + width: 12px; + cursor: se-resize; + margin: 0 2px; + position: relative; + top: -2px; +} + +#post-body .postarea .wp_themeSkin .mceStatusbar a.mceResize { + top: 20px; +} + +#wp-word-count { + display: block; + padding: 2px 10px; +} + +#timestampdiv select { + height: 20px; + line-height: 14px; + padding: 0; + vertical-align: top; +} + +#aa, #jj, #hh, #mn { + padding: 1px; + font-size: 12px; +} + +#jj, #hh, #mn { + width: 2em; +} + +#aa { + width: 3.4em; +} + +.curtime #timestamp { + background-repeat: no-repeat; + background-position: left top; + padding-left: 18px; +} + +#timestampdiv { + padding-top: 5px; + line-height: 23px; +} + +#timestampdiv p { + margin: 8px 0 6px; +} + +#timestampdiv input { + border-width: 1px; + border-style: solid; +} + + +/*------------------------------------------------------------------------------ + 11.1 - Custom Fields +------------------------------------------------------------------------------*/ + +#postcustomstuff .updatemeta, +#postcustomstuff .deletemeta { + margin: auto; +} + +#postcustomstuff thead th { + padding: 5px 8px 8px; +} + +#postcustom #postcustomstuff .submit { + border: 0 none; + float: none; + padding: 5px 8px; +} + +#side-sortables #postcustom #postcustomstuff .submit { + padding: 0 5px; +} + +#side-sortables #postcustom #postcustomstuff td.left input { + margin: 3px 3px 0; +} + +#side-sortables #postcustom #postcustomstuff #the-list textarea { + height: 85px; + margin: 3px; +} + +#postcustomstuff table { + margin: 0; + width: 100%; + border-width: 1px; + border-style: solid; + border-spacing: 0; +} + +#postcustomstuff table input, +#postcustomstuff table select, +#postcustomstuff table textarea { + width: 95%; + margin: 8px 0 8px 8px; +} + +#postcustomstuff th.left, +#postcustomstuff td.left { + width: 38%; +} + +#postcustomstuff #newmeta .submit { + padding: 0 8px; +} + +#postcustomstuff .submit input, +#postcustomstuff table #addmetasub { + width: auto; +} + +#postcustomstuff #newmetaleft { + vertical-align: top; +} + +#postcustomstuff #newmetaleft a { + padding: 0 10px; + text-decoration: none; +} + + +/*------------------------------------------------------------------------------ + 11.2 - Post Revisions +------------------------------------------------------------------------------*/ + +table.diff { + width: 100%; +} + +table.diff col.content { + width: 50%; +} + +table.diff tr { + background-color: transparent; +} + +table.diff td, table.diff th { + padding: .5em; + font-family: Consolas, Monaco, monospace; + border: none; +} + +table.diff .diff-deletedline del, table.diff .diff-addedline ins { + text-decoration: none; +} + + +/*------------------------------------------------------------------------------ + 12.0 - Categories +------------------------------------------------------------------------------*/ + +.category-adder { + margin-left: 120px; + padding: 4px 0; +} + +.category-adder h4 { + margin: 0 0 8px; +} + +#side-sortables .category-adder { + margin: 0; +} + +#post-body ul.add-menu-item-tabs { + float: left; + width: 120px; + text-align: right; + /* Negative margin for the sake of those without JS: all tabs display */ + margin: 0 -120px 0 5px; + padding: 0; +} + +#post-body ul.add-menu-item-tabs li { + padding: 8px; +} + +#post-body ul.add-menu-item-tabs li.tabs { + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.wp-tab-panel, +.categorydiv div.tabs-panel, +.customlinkdiv div.tabs-panel, +.posttypediv div.tabs-panel, +.taxonomydiv div.tabs-panel { + height: 200px; + overflow: auto; + padding: 0.5em 0.9em; + border-style: solid; + border-width: 1px; +} + +.nav-menus-php .customlinkdiv div.tabs-panel, +.nav-menus-php .posttypediv div.tabs-panel, +.nav-menus-php .taxonomydiv div.tabs-panel { + height: auto; + max-height: 205px; +} + +div.tabs-panel-active { + display:block; +} + +div.tabs-panel-inactive { + display:none; +} + +.colunms-1 .categorydiv div.tabs-panel, +.taxonomy div.tabs-panel { + margin: 0 5px 0 125px; +} + +.customlinkdiv ul, +.posttypediv ul, +.taxonomydiv ul { + list-style: none; + padding: 0; + margin: 0; +} + +#front-page-warning, +#front-static-pages ul, +ul.export-filters, +.inline-editor ul.cat-checklist ul, +.categorydiv ul.categorychecklist ul, +.customlinkdiv ul.categorychecklist ul, +.posttypediv ul.categorychecklist ul, +.taxonomydiv ul.categorychecklist ul { + margin-left: 18px; +} + +ul.categorychecklist li { + margin: 0; + padding: 0; + line-height: 19px; + word-wrap: break-word; +} + +.categorydiv .tabs-panel, +.customlinkdiv .tabs-panel, +.posttypediv .tabs-panel, +.taxonomydiv .tabs-panel { + border-width: 3px; + border-style: solid; +} + +.form-wrap p, +.form-wrap label { + font-size: 11px; +} + +.form-wrap label { + display: block; + padding: 2px; + font-size: 12px; +} + +.form-field input, +.form-field textarea { + border-style: solid; + border-width: 1px; + width: 95%; +} + +p.description, +.form-wrap p { + margin: 2px 0 5px; +} + +p.help, +p.description, +span.description, +.form-wrap p { + font-size: 12px; + font-style: italic; + font-family: sans-serif; +} + +.form-wrap .form-field { + margin: 0 0 10px; + padding: 8px; +} + +.col-wrap h3 { + margin: 12px 0; + font-size: 1.1em; +} + +.col-wrap p.submit { + margin-top: -10px; +} + + +/*------------------------------------------------------------------------------ + 13.0 - Tags +------------------------------------------------------------------------------*/ + +#poststuff .taghint { + color: #aaa; + margin: 15px 0 -24px 12px; +} + +#poststuff .tagsdiv .howto { + margin: 0 0 6px 8px; +} + +.ajaxtag .newtag { + position: relative; +} + +.tagsdiv .newtag { + width: 180px; +} + +.tagsdiv .the-tags { + display: block; + height: 60px; + margin: 0 auto; + overflow: auto; + width: 260px; +} + +#post-body-content .tagsdiv .the-tags { + margin: 0 5px; +} + +p.popular-tags { + -webkit-border-radius: 8px; + border-radius: 8px; + border-width: 1px; + border-style: solid; + line-height: 2em; + max-width: 1000px; + padding: 8px 12px 12px; + text-align: justify; +} + +p.popular-tags a { + padding: 0 3px; +} + +.tagcloud { + width: 97%; + margin: 0 0 40px; + text-align: justify; +} + +.tagcloud h3 { + margin: 2px 0 12px; +} + +.ac_results { + padding: 0; + margin: 0; + list-style: none; + position: absolute; + z-index: 10000; + display: none; + border-width: 1px; + border-style: solid; +} + +.ac_results li { + padding: 2px 5px; + white-space: nowrap; + text-align: left; +} + +.ac_over { + cursor: pointer; +} + +.ac_match { + text-decoration: underline; +} + +/* links tables */ +table.links-table { + width: 100%; +} + +.links-table th { + font-weight: normal; + text-align: left; + vertical-align: top; + min-width: 80px; + width: 20%; + word-wrap: break-word; +} + +.links-table th, +.links-table td { + padding: 5px 0; +} + +.links-table td label { + margin-right: 8px; +} + +.links-table td input[type="text"], +.links-table td textarea { + width: 100%; +} + +.links-table #link_rel { + max-width: 280px; +} + +/*------------------------------------------------------------------------------ + 14.0 - Media Screen +------------------------------------------------------------------------------*/ + +.media-item .describe { + border-collapse: collapse; + width: 100%; + border-top-style: solid; + border-top-width: 1px; + clear: both; + cursor: default; +} + +.media-item.media-blank .describe { + border: 0; +} + +.media-item .describe th { + vertical-align: top; + text-align: left; + padding: 5px 10px 10px; + width: 140px; +} + +.media-item .describe .align th { + padding-top: 0; +} + +.media-item .media-item-info tr { + background-color: transparent; +} + +.media-item .describe td { + padding: 0 8px 8px 0; + vertical-align: top; +} + +.media-item thead.media-item-info td { + padding: 4px 10px 0; +} + +.media-item .media-item-info .A1B1 { + padding: 0 0 0 10px; +} + +.media-item td.savesend { + padding-bottom: 15px; +} + +.media-item .thumbnail { + max-height: 128px; + max-width: 128px; +} + +#wpbody-content #async-upload-wrap a { + display: none; +} + +.media-upload-form { + margin-top: 20px; +} + +.media-upload-form td label { + margin-right: 6px; + margin-left: 2px; +} + +.media-upload-form .align .field label { + display: inline; + padding: 0 0 0 23px; + margin: 0 1em 0 3px; + font-weight: bold; +} + +.media-upload-form tr.image-size label { + margin: 0 0 0 5px; + font-weight: bold; +} + +.media-upload-form th.label label { + font-weight: bold; + margin: 0.5em; + font-size: 13px; +} + +.media-upload-form th.label label span { + padding: 0 5px; +} + +abbr.required { + border: medium none; + text-decoration: none; +} + +.media-item .describe input[type="text"], +.media-item .describe textarea { + width: 460px; +} + +.media-item .describe p.help { + margin: 0; + padding: 0 0 0 5px; +} + +.describe-toggle-on, +.describe-toggle-off { + display: block; + line-height: 36px; + float: right; + margin-right: 15px; +} + +.media-item .describe-toggle-off, +.media-item.open .describe-toggle-on, +.media-item.open img.pinkynail { + display: none; +} + +.media-item.open .describe-toggle-off { + display: block; +} + +#media-items .media-item { + border-style: solid; + border-width: 1px; + min-height: 36px; + position: relative; + margin-top: -1px; + width: 100%; +} + +#media-items { + width: 623px; +} + +#media-items:empty { + border: 0 none; +} + +.media-item .filename { + line-height: 36px; + overflow: hidden; + padding: 0 10px; +} + +.media-item .error-div { + padding-left: 10px; +} + +.media-item .pinkynail { + float: left; + margin: 2px 2px 0; + max-width: 40px; + max-height: 32px; +} + +.media-item .startopen, +.media-item .startclosed { + display: none; +} + +.media-item .original { + position: relative; + height: 34px; +} + +.media-item .progress { + float: right; + height: 22px; + margin: 6px 10px 0 0; + width: 200px; + line-height: 2em; + padding: 0; + overflow: hidden; + margin-bottom: 2px; + border: 1px solid #d1d1d1; + background: #fff; + background-image: linear-gradient(bottom, rgb(255,255,255) 0%, rgb(247,247,247) 100%); + background-image: -o-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(247,247,247) 100%); + background-image: -moz-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(247,247,247) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(247,247,247) 100%); + background-image: -ms-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(247,247,247) 100%); + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 0 3px rgba(0,0,0,0.1); + box-shadow: inset 0 0 3px rgba(0,0,0,0.1); +} + +.media-item .bar { + z-index: 9; + width: 0; + height: 100%; + margin-top: -24px; + background-color: #83B4D8; + background-image: linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%); + background-image: -o-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%); + background-image: -moz-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%); + background-image: -webkit-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%); + background-image: -ms-linear-gradient(bottom, rgb(114,167,207) 0%, rgb(144,197,238) 100%); + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.3); + box-shadow: 0 0 3px rgba(0,0,0,0.3); +} + +.media-item .progress .percent { + z-index: 10; + position: relative; + width: 200px; + padding: 0 8px; + text-shadow: 0 1px 0 rgba(255,255,255,0.4); + color: rgba(0,0,0,0.6); +} + +.upload-php .fixed .column-parent { + width: 25%; +} + +.js .html-uploader #plupload-upload-ui { + display: none; +} + +.js .html-uploader #html-upload-ui { + display: block; +} + +.media-upload-form .media-item.error { + margin: 0; + padding: 0; +} + +.media-upload-form .media-item.error p, +.media-item .error-div { + line-height: 16px; + margin: 5px 10px; + padding: 0; +} + +.media-item .error-div a.dismiss { + display: block; + float: right; + margin: 5px 4px 0 15px; +} + +/*------------------------------------------------------------------------------ + 14.1 - Media Library +------------------------------------------------------------------------------*/ + +.find-box { + width: 500px; + height: 300px; + overflow: hidden; + padding: 33px 5px 40px; + position: absolute; + z-index: 1000; +} + +.find-box-head { + cursor: move; + font-weight: bold; + height: 2em; + line-height: 2em; + padding: 1px 12px; + position: absolute; + top: 5px; + width: 100%; +} + +.find-box-inside { + overflow: auto; + width: 100%; + height: 100%; +} + +.find-box-search { + padding: 12px; + border-width: 1px; + border-style: none none solid; +} + +#find-posts-response { + margin: 8px 0; + padding: 0 1px; +} + +#find-posts-response table { + width: 100%; +} + +#find-posts-response .found-radio { + padding: 5px 0 0 8px; + width: 15px; +} + +.find-box-buttons { + width: 480px; + margin: 8px; +} + +.find-box-search label { + padding-right: 6px; +} + +.find-box #resize-se { + position: absolute; + right: 1px; + bottom: 1px; +} + +ul#dismissed-updates { + display: none; +} + +form.upgrade { + margin-top: 8px; +} + +form.upgrade .hint { + font-style: italic; + font-size: 85%; + margin: -0.5em 0 2em 0; +} + +#poststuff .inside .the-tagcloud { + margin: 5px 0 10px; + padding: 8px; + border-width: 1px; + border-style: solid; + line-height: 1.8em; + word-spacing: 3px; + -webkit-border-radius: 6px; + border-radius: 6px; +} + +.drag-drop #drag-drop-area { + border: 4px dashed #DDDDDD; + height: 200px; +} + +.drag-drop .drag-drop-inside { + margin: 70px auto 0; + width: 250px; +} + +.drag-drop-inside p { + color: #aaa; + font-size: 14px; + margin: 5px 0; + display: none; +} + +.drag-drop .drag-drop-inside p { + text-align: center; +} + +.drag-drop-inside p.drag-drop-info { + font-size: 20px; +} + +.drag-drop .drag-drop-inside p, +.drag-drop-inside p.drag-drop-buttons { + display: block; +} + +/* +#drag-drop-area:-moz-drag-over { + border-color: #83b4d8; +} +borger color while dragging a file over the uploader drop area */ +.drag-drop.drag-over #drag-drop-area { + border-color: #83b4d8; +} + +#plupload-upload-ui { + position: relative; +} + + +/*------------------------------------------------------------------------------ + 14.2 - Image Editor +------------------------------------------------------------------------------*/ + +.describe .image-editor { + vertical-align: top; +} + +.imgedit-wrap { + position: relative; +} + +.imgedit-settings p { + margin: 8px 0; +} + +.describe .imgedit-wrap table td { + vertical-align: top; + padding-top: 0; +} + +.imgedit-wrap p, +.describe .imgedit-wrap table td { + font-size: 11px; + line-height: 18px; +} + +.describe .imgedit-wrap table td.imgedit-settings { + padding: 0 5px; +} + +td.imgedit-settings input { + vertical-align: middle; +} + +.imgedit-wait { + position: absolute; + top: 0; + background: #FFFFFF url(../images/wpspin_light.gif) no-repeat scroll 22px 10px; + opacity: 0.7; + filter: alpha(opacity=70); + width: 100%; + height: 500px; + display: none; +} + +.media-disabled, +.imgedit-settings .disabled { + color: grey; +} + +.imgedit-wait-spin { + padding: 0 4px 4px; + vertical-align: bottom; + visibility: hidden; +} + +.imgedit-menu { + margin: 0 0 12px; + min-width: 300px; +} + +.imgedit-menu div { + float: left; + width: 32px; + height: 32px; +} + +.imgedit-crop-wrap { + position: relative; +} + +.imgedit-crop { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -9px -31px; + margin: 0 8px 0 0; +} + +.imgedit-crop.disabled:hover { + background-position: -9px -31px; +} + +.imgedit-crop:hover { + background-position: -9px -1px; +} + +.imgedit-rleft { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -46px -31px; + margin: 0 3px; +} + +.imgedit-rleft.disabled:hover { + background-position: -46px -31px; +} + +.imgedit-rleft:hover { + background-position: -46px -1px; +} + +.imgedit-rright { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -77px -31px; + margin: 0 8px 0 3px; +} + +.imgedit-rright.disabled:hover { + background-position: -77px -31px; +} + +.imgedit-rright:hover { + background-position: -77px -1px; +} + +.imgedit-flipv { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -115px -31px; + margin: 0 3px; +} + +.imgedit-flipv.disabled:hover { + background-position: -115px -31px; +} + +.imgedit-flipv:hover { + background-position: -115px -1px; +} + +.imgedit-fliph { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -147px -31px; + margin: 0 8px 0 3px; +} + +.imgedit-fliph.disabled:hover { + background-position: -147px -31px; +} + +.imgedit-fliph:hover { + background-position: -147px -1px; +} + +.imgedit-undo { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -184px -31px; + margin: 0 3px; +} + +.imgedit-undo.disabled:hover { + background-position: -184px -31px; +} + +.imgedit-undo:hover { + background-position: -184px -1px; +} + +.imgedit-redo { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -215px -31px; + margin: 0 8px 0 3px; +} + +.imgedit-redo.disabled:hover { + background-position: -215px -31px; +} + +.imgedit-redo:hover { + background-position: -215px -1px; +} + +.imgedit-applyto img { + margin: 0 8px 0 0; +} + +.imgedit-group-top { + margin: 5px 0; +} + +.imgedit-applyto .imgedit-label { + padding: 2px 0 0; + display: block; +} + +.imgedit-help { + display: none; + font-style: italic; + margin-bottom: 8px; +} + +.imgedit-help ul li { + font-size: 11px; +} + +a.imgedit-help-toggle { + text-decoration: none; +} + +#wpbody-content .imgedit-response div { + width: 600px; + margin: 8px; +} + +.form-table td.imgedit-response { + padding: 0; +} + +.imgedit-submit { + margin: 8px 0; +} + +.imgedit-submit-btn { + margin-left: 20px; +} + +.imgedit-wrap .nowrap { + white-space: nowrap; +} + +span.imgedit-scale-warn { + color: red; + font-size: 20px; + font-style: normal; + visibility: hidden; + vertical-align: middle; +} + +.imgedit-group { + border-width: 1px; + border-style: solid; + -webkit-border-radius: 8px; + border-radius: 8px; + margin-bottom: 8px; + padding: 2px 10px; +} + + +/*------------------------------------------------------------------------------ + 15.0 - Comments Screen +------------------------------------------------------------------------------*/ + +.form-table { + border-collapse: collapse; + margin-top: 0.5em; + width: 100%; + margin-bottom: -8px; + clear: both; +} + +.form-table td { + margin-bottom: 9px; + padding: 8px 10px; + line-height: 20px; + font-size: 12px; +} + +.form-table th, +.form-wrap label { + font-weight: normal; + text-shadow: #fff 0 1px 0; +} + +.form-table th { + vertical-align: top; + text-align: left; + padding: 10px; + width: 200px; +} + +.form-table th.th-full { + width: auto; +} + +.form-table div.color-option { + display: block; + clear: both; + margin-top: 12px; +} + +.form-table input.tog { + margin-top: 2px; + margin-right: 2px; + float: left; +} + +.form-table td p { + margin-top: 4px; +} + +.form-table table.color-palette { + vertical-align: bottom; + float: left; + margin: -12px 3px 11px; +} + +.form-table .color-palette td { + border-width: 1px 1px 0; + border-style: solid solid none; + height: 10px; + line-height: 20px; + width: 10px; +} + +.commentlist li { + padding: 1em 1em .2em; + margin: 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.commentlist li li { + border-bottom: 0; + padding: 0; +} + +.commentlist p { + padding: 0; + margin: 0 0 .8em; +} + +/* reply to comments */ +#replyrow input { + border-width: 1px; + border-style: solid; +} + +#replyrow td { + padding: 2px; +} + +#replysubmit { + margin: 0; + padding: 0 7px 3px; + text-align: center; +} + +#replysubmit img.waiting, +.inline-edit-save img.waiting { + padding: 4px 10px 0; + vertical-align: top; + float: right; +} + +#replysubmit .button { + margin-right: 5px; +} + +#replysubmit .error { + color: red; + line-height: 21px; + text-align: center; + vertical-align: center; +} + +#replyrow h5 { + margin: .2em 0 0; + padding: 0 5px; + line-height: 1.4em; + font-size: 1em; +} + +#edithead .inside { + float: left; + padding: 3px 0 2px 5px; + margin: 0; + text-align: center; +} + +#edithead .inside input { + width: 180px; +} + +#edithead label { + padding: 2px 0; +} + +#replycontainer { + padding: 5px; +} + +#replycontent { + height: 120px; +} + +.comment-ays { + margin-bottom: 0; + border-style: solid; + border-width: 1px; +} + +.comment-ays th { + border-right-style: solid; + border-right-width: 1px; +} + +.trash-undo-inside, +.spam-undo-inside { + margin: 1px 8px 1px 0; + line-height: 16px; +} + +.spam-undo-inside .avatar, +.trash-undo-inside .avatar { + height: 20px; + width: 20px; + margin-right: 8px; + vertical-align: middle; +} + +.stuffbox .editcomment { + clear: none; +} + +#comment-status-radio p { + margin: 3px 0 5px; +} + +#comment-status-radio input { + margin: 2px 3px 5px 0; + vertical-align: middle; +} + +#comment-status-radio label { + padding: 5px 0; +} + +.commentlist .avatar { + vertical-align: text-top; +} + + +/*------------------------------------------------------------------------------ + 16.0 - Themes +------------------------------------------------------------------------------*/ + +.theme-install-php .tablenav { + height: auto; +} + +h3.available-themes { + margin: 0 0 1em; + float: left; +} + +.available-theme { + display: inline-block; + margin-right: 10px; + overflow: hidden; + padding: 20px 20px 20px 0; + vertical-align: top; + width: 300px; +} + +.available-theme .screenshot { + width: 300px; + height: 225px; + display: block; + border-width: 1px; + border-style: solid; + margin-bottom: 10px; + overflow: hidden; +} + +.available-theme img { + width: 300px; +} + +.available-theme h3 { + margin: 15px 0 0; +} + +.available-theme .theme-author { + line-height: 18px; +} + +.available-theme .action-links { + margin-top: 10px; + overflow: hidden; +} + +#current-theme .theme-info li, +.theme-options li, +.available-theme .action-links li { + float: left; + padding-right: 10px; + margin-right: 10px; + border-right: 1px solid #dfdfdf; +} + +.available-theme .action-links li { + padding-right: 8px; + margin-right: 8px; +} + +#current-theme .theme-info li:last-child, +.theme-options li:last-child, +.available-theme .action-links li:last-child { + padding-right: 0; + margin-right: 0; + border-right: 0; +} + +.available-theme .action-links .delete-theme { + float: right; + margin-left: 8px; + margin-right: 0; +} + +.available-theme .action-links .delete-theme a { + color: red; + padding: 2px; +} + +.available-theme .action-links .delete-theme a:hover { + background: red; + color: #fff; + text-decoration: none; +} + +.available-theme .action-links p { + float: left; +} + +#current-theme { + margin: 20px 0 10px; + padding: 0 0 20px; + border-bottom: 1px solid #dfdfdf; + overflow: hidden; +} + +#current-theme.has-screenshot { + padding-left: 330px; +} + +#current-theme h3 { + margin: 0; + font-size: 12px; + font-weight: normal; + color: #999; +} + +#current-theme h4 { + margin: 3px 0 16px; + font-size: 20px; +} + +#current-theme h4 span { + margin-left: 20px; + font-size: 12px; + font-weight: normal; +} + +#current-theme a { + border-bottom: none; +} + +#current-theme .theme-info { + margin: 1em 0; + overflow: hidden; +} + +#current-theme .theme-description { + margin-top: 5px; + max-width: 600px; + line-height: 1.6em; +} + +#current-theme img { + float: left; + width: 300px; + margin-left: -330px; + + border-width: 1px; + border-style: solid; +} + +.theme-options { + overflow: hidden; + font-size: 14px; + padding-bottom: 10px; +} + +.theme-options .load-customize { + margin-right: 30px; + float: left; +} + +.theme-options span { + float: left; + margin-right: 10px; + text-transform: uppercase; + font-size: 11px; + line-height: 18px; + color: #999; +} + +.theme-options ul { + float: left; + margin: 0; +} + +/* Allow for three-up on 1024px wide screens, e.g. tablets */ +@media only screen and (max-width: 1200px) { + .available-theme, + .available-theme .screenshot, + #current-theme img { + width: 240px; + } + + .available-theme .screenshot { + height: 180px; + } + + .available-theme img { + width: 100%; + } + + #current-theme.has-screenshot { + padding-left: 270px; + } + + #current-theme img { + margin-left: -270px; + } +} + +#post-body ul.add-menu-item-tabs li.tabs a, +#TB_window #TB_title a.tb-theme-preview-link, +#TB_window #TB_title a.tb-theme-preview-link:visited { + font-weight: bold; + text-decoration: none; +} + +#TB_window #TB_title { + background-color: #222; + color: #cfcfcf; +} + +#broken-themes { + text-align: left; + width: 50%; + border-spacing: 3px; + padding: 3px; +} + +.theme-install-php h4 { + margin: 2.5em 0 8px; +} + + +/*------------------------------------------------------------------------------ + 16.1 - Custom Header Screen +------------------------------------------------------------------------------*/ + +.appearance_page_custom-header #headimg { + border: 1px solid #DFDFDF; + width: 100%; +} + +.appearance_page_custom-header #upload-form p label { + font-size: 12px; +} + +.appearance_page_custom-header .available-headers .default-header { + float: left; + margin: 0 20px 20px 0; +} + +.appearance_page_custom-header .random-header { + clear: both; + margin: 0 20px 20px 0; + vertical-align: middle; +} + +.appearance_page_custom-header .available-headers label input, +.appearance_page_custom-header .random-header label input { + margin-right: 10px; +} + +.appearance_page_custom-header .available-headers label img { + vertical-align: middle; +} + + +/*------------------------------------------------------------------------------ + 16.2 - Custom Background Screen +------------------------------------------------------------------------------*/ + +div#custom-background-image { + min-height: 100px; + border: 1px solid #dfdfdf; +} + +div#custom-background-image img { + max-width: 400px; + max-height: 300px; +} + + +/*------------------------------------------------------------------------------ + 16.3 - Tabbed Admin Screen Interface (Experimental) +------------------------------------------------------------------------------*/ + +.nav-tab { + border-style: solid; + border-color: #dfdfdf #dfdfdf #fff; + border-width: 1px 1px 0; + color: #aaa; + text-shadow: #fff 0 1px 0; + font-size: 12px; + line-height: 16px; + display: inline-block; + padding: 4px 14px 6px; + text-decoration: none; + margin: 0 6px -1px 0; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.nav-tab-active { + border-width: 1px; + color: #464646; +} + +.nav-tab:hover, +.nav-tab-active { + border-color: #ccc #ccc #fff; +} + +h2.nav-tab-wrapper, h3.nav-tab-wrapper { + border-bottom: 1px solid #ccc; + padding-bottom: 0; +} + +h2 .nav-tab { + padding: 4px 10px 6px; + font-weight: 200; + font-size: 20px; + line-height: 24px; + +} + + +/*------------------------------------------------------------------------------ + 17.0 - Plugins +------------------------------------------------------------------------------*/ + +#dashboard_right_now .versions .b, +#post-status-display, +#post-visibility-display, +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover, +.media-item .percent, +.plugins .name, +#pass-strength-result.strong, +#pass-strength-result.short, +.button-highlighted, +input.button-highlighted, +#quicktags #ed_strong, +#ed_reply_toolbar #ed_reply_strong, +.item-controls .item-order a, +.feature-filter .feature-name { + font-weight: bold; +} + +.plugins p { + margin: 0 4px; + padding: 0; +} + +.plugins .desc p { + margin: 0 0 8px; +} + +.plugins td.desc { + line-height: 1.5em; +} + +.plugins .desc ul, +.plugins .desc ol { + margin: 0 0 0 2em; +} + +.plugins .desc ul { + list-style-type: disc; +} + +.plugins .row-actions-visible { + padding: 0; +} + +.plugins tbody th.check-column { + padding: 7px 0; +} + +.plugins .inactive td, +.plugins .inactive th, +.plugins .active td, +.plugins .active th { + border-top-style: solid; + border-top-width: 1px; + padding: 5px 7px 0; +} + +.plugins .update th, +.plugins .update td { + border-bottom: 0; +} +.plugin-update-tr td { + border-top: 0; +} + +#wpbody-content .plugins .plugin-title, +#wpbody-content .plugins .theme-title { + padding-right: 12px; + white-space:nowrap; +} + +.plugins .second, +.plugins .row-actions-visible { + padding: 0 0 5px; +} + +.plugins .update .second, +.plugins .update .row-actions-visible { + padding-bottom: 0; +} + +.plugins-php .widefat tfoot th, +.plugins-php .widefat tfoot td { + border-top-style: solid; + border-top-width: 1px; +} + +.plugin-update-tr .update-message { + margin: 5px; + padding: 3px 5px; +} + +.plugin-install-php h4 { + margin: 2.5em 0 8px; +} + + +/*------------------------------------------------------------------------------ + 18.0 - Users +------------------------------------------------------------------------------*/ + +#profile-page .form-table textarea { + width: 500px; + margin-bottom: 6px; +} + +#profile-page .form-table #rich_editing { + margin-right: 5px +} + +#your-profile legend { + font-size: 22px; +} + +#your-profile #rich_editing { + border: none; +} + +#display_name { + width: 15em; +} + +#createuser .form-field input { + width: 25em; +} + +/*------------------------------------------------------------------------------ + 19.0 - Tools +------------------------------------------------------------------------------*/ + +.pressthis { + margin: 20px 0; +} + +.pressthis a { + display: inline-block; + position: relative; + cursor: move; + color: #333; + background: #dfdfdf; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.07, #e6e6e6), color-stop(0.77, #d8d8d8)); + background-image: -webkit-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%); + background-image: -moz-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%); + background-image: -ms-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%); + background-image: -o-linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%); + background-image: linear-gradient(bottom, #e6e6e6 7%, #d8d8d8 77%); + -webkit-border-radius: 5px; + border-radius: 5px; + border: 1px solid #b4b4b4; + font-style: normal; + line-height: 16px; + font-size: 14px; + text-decoration: none; + text-shadow: 0 1px 0px #fff; +} + +.pressthis a:hover, +.pressthis a:active { + color: #333 +} + +.pressthis a:hover:after { + transform: skew(20deg) rotate(9deg); + -webkit-transform: skew(20deg) rotate(9deg); + -moz-transform: skew(20deg) rotate(9deg); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); + -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); +} + +.pressthis a span { + background: url(../images/press-this.png?v=20120502) no-repeat 0px 5px; + padding: 8px 11px 8px 27px; + margin: 0 5px; + display: inline-block; +} + +.pressthis a:after { + content: ''; + width: 70%; + height: 55%; + z-index: -1; + position: absolute; + right: 10px; + bottom: 9px; + background: transparent; + transform: skew(20deg) rotate(6deg); + -webkit-transform: skew(20deg) rotate(6deg); + -moz-transform: skew(20deg) rotate(6deg); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); + -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); + -moz-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); +} + + +/*------------------------------------------------------------------------------ + 20.0 - Settings +------------------------------------------------------------------------------*/ + +#utc-time, #local-time { + padding-left: 25px; + font-style: italic; + font-family: sans-serif; +} + +.defaultavatarpicker .avatar { + margin: 2px 0; + vertical-align: middle; +} + + +/*------------------------------------------------------------------------------ + 21.0 - Admin Footer +------------------------------------------------------------------------------*/ + +#footer { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 10px 0; + margin-right: 20px; + border-top-width: 1px; + border-top-style: solid; +} + +#footer p { + margin: 0; + line-height: 20px; +} + +#footer a { + text-decoration: none; +} + +#footer a:hover { + text-decoration: underline; +} + +/*------------------------------------------------------------------------------ + 22.0 - About Pages +------------------------------------------------------------------------------*/ + +.about-wrap { + position: relative; + margin: 25px 40px 0 20px; + max-width: 1050px; /* readability */ + + font-size: 15px; +} + +.about-wrap div.updated, +.about-wrap div.error { + display: none !important; +} + +/* Typography */ + +.about-wrap p { + line-height: 1.6em; +} + +.about-wrap h1 { + margin: 0.2em 200px 0 0; + line-height: 1.2em; + font-size: 2.8em; + font-weight: 200; +} + +.about-text, +.about-description, +.about-wrap li.wp-person a.web { + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif; + font-weight: normal; + line-height: 1.6em; + font-size: 20px; +} + +.about-description { + margin-top: 1.4em; +} + +.about-text { + margin: 1em 200px 1.4em 0; + min-height: 60px; + font-size: 24px; +} + +.about-wrap h3 { + font-size: 24px; + margin-bottom: 1em; + padding-top: 20px; +} + +.about-wrap .changelog { + overflow: hidden; +} + +.about-wrap .changelog li { + list-style-type: disc; + margin-left: 3em; +} + +.about-wrap .feature-section { + padding-bottom: 20px; +} + +.about-wrap .feature-section h4 { + margin-bottom: 0.6em; +} + +.about-wrap .feature-section p { + margin-top: 0.6em; +} + +.about-wrap code { + font-size: 14px; +} + +/* Point Releases */ + +.about-wrap .point-releases { + margin-top: 5px; +} + +.about-wrap .changelog.point-releases h3 { + padding-top: 35px; +} + +.about-wrap .changelog.point-releases h3:first-child { + padding-top: 7px; +} + +/* WordPress Version Badge */ + +.wp-badge { + padding-top: 142px; + height: 50px; + width: 173px; + font-weight: bold; + font-size: 14px; + text-align: center; + margin: 0 -5px; + background: url('../images/wp-badge.png?ver=20111120') no-repeat; +} + +.about-wrap .wp-badge { + position: absolute; + top: 0; + right: 0; +} + +/* Tabs */ + +.about-wrap h2.nav-tab-wrapper { + padding-left: 6px; +} + +.about-wrap h2 .nav-tab { + padding: 4px 10px 6px; + margin: 0 3px -1px 0; + font-size: 18px; + vertical-align: top; +} + +.about-wrap h2 .nav-tab-active { + font-weight: bold; + padding-top: 3px; +} + +/* Changelog / Update screen */ + +.about-wrap .feature-section img { + border: none; + margin: 0 1.94% 10px 0; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.about-wrap .feature-section img.image-50 { + max-width: 50%; +} + +.about-wrap .feature-section img.image-30 { + max-width: 31.2381%; +} + +.ie8 .about-wrap .feature-section img { + border-width: 1px; + border-style: solid; +} + +.about-wrap .feature-section.three-col { + padding-top: 15px; + margin-bottom: 0; +} + +.about-wrap .feature-section.three-col div { + width: 30%; + margin-right: 4.999999999%; + float: left; +} + +.about-wrap .feature-section.three-col h4 { + margin: 0 0 0.6em 0; +} + +.about-wrap .feature-section.three-col img { + margin: 0.5em 0 0.5em 5px; + max-width: 100%; + float: none; +} + +.ie8 .about-wrap .feature-section.three-col img { + margin-left: 0; +} + +.about-wrap .feature-section.three-col .last-feature { + margin-right: 0; +} + +.about-wrap .three-col-images { + text-align: center; +} + +.about-wrap .three-col-images img { + margin: 0 0 10px; +} + +.about-wrap .three-col-images .last-feature { + float: right; +} + +.about-wrap .three-col-images .first-feature { + float: left; +} + +.about-wrap .feature-section.images-stagger-right img { + float: right; + margin: 0 5px 12px 12px; +} + +.about-wrap .feature-section.images-stagger-left img { + float: left; + margin: 0 12px 12px 5px; +} + +@media only screen and (max-width: 900px) { + .about-wrap .feature-section.images-stagger-left img, + .about-wrap .feature-section.images-stagger-right img { + clear: both; + } +} + +/* Return to Dashboard Home link */ + +.about-wrap .return-to-dashboard { + margin: 30px 0 0 -5px; + font-size: 14px; + font-weight: bold; +} + +.about-wrap .return-to-dashboard a { + text-decoration: none; + padding: 0 5px; +} + +/* Credits */ + +.about-wrap h4.wp-people-group { + margin-top: 2.6em; + font-size: 16px; +} + +.about-wrap ul.wp-people-group { + overflow: hidden; + padding: 5px; + margin: 0 -15px 0 -5px; +} + +.about-wrap ul.compact { + margin-bottom: 0 +} + +.about-wrap li.wp-person { + float: left; + margin-right: 10px; +} + +.about-wrap li.wp-person img.gravatar { + float: left; + margin: 0 10px 10px 0; + padding: 2px; + width: 60px; + height: 60px; +} + +.about-wrap ul.compact li.wp-person img.gravatar { + width: 30px; + height: 30px; +} + +.about-wrap li.wp-person { + height: 70px; + width: 280px; + padding-bottom: 15px; +} + +.about-wrap ul.compact li.wp-person { + height: auto; + width: 180px; + padding-bottom: 0; + margin-bottom: 0; +} + +.about-wrap #wp-people-group-validators + p.wp-credits-list { + margin-top: 0; +} + +.about-wrap li.wp-person a.web { + display: block; + margin: 6px 0 2px; + font-size: 16px; + text-decoration: none; +} + +.about-wrap p.wp-credits-list a { + white-space: nowrap; +} + +/* Freedoms */ + +.freedoms-php .about-wrap ol { + margin: 40px 60px; +} + +.freedoms-php .about-wrap ol li { + list-style-type: decimal; + font-weight: bold; +} + +.freedoms-php .about-wrap ol p { + font-weight: normal; + margin: 0.6em 0; +} + +/*------------------------------------------------------------------------------ + 23.0 - Full Overlay w/ Sidebar +------------------------------------------------------------------------------*/ + +body.full-overlay-active { + overflow: hidden; +} + +.wp-full-overlay { + background: #fff; + z-index: 500000; + position: fixed; + overflow: visible; + top: 0; + bottom: 0; + left: 0; + right: 0; + height: 100%; + min-width: 0; +} + +.wp-full-overlay-sidebar { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + + position: fixed; + width: 300px; + height: 100%; + top: 0; + bottom: 0; + left: 0; + padding: 0; + margin: 0; + z-index: 10; + overflow: auto; + background: #f5f5f5; + border-right: 1px solid rgba( 0, 0, 0, 0.2 ); +} + +.wp-full-overlay.collapsed .wp-full-overlay-sidebar { + overflow: visible; +} + +.wp-full-overlay.collapsed, +.wp-full-overlay.expanded .wp-full-overlay-sidebar { + margin-left: 0 !important; +} + +.wp-full-overlay.expanded { + margin-left: 300px; +} + +.wp-full-overlay.collapsed .wp-full-overlay-sidebar { + margin-left: -300px; +} + +.wp-full-overlay-sidebar:after { + content: ''; + display: block; + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 3px; + box-shadow: -5px 0 4px -4px rgba(0, 0, 0, 0.1) inset; + z-index: 1000; +} + +.wp-full-overlay-main { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + height: 100%; +} + +.wp-full-overlay-sidebar .wp-full-overlay-header, +.wp-full-overlay-sidebar .wp-full-overlay-footer { + position: absolute; + left: 0; + right: 0; + height: 45px; + padding: 0 20px; + line-height: 45px; + z-index: 10; + margin: 0; +} + +.wp-full-overlay-sidebar .wp-full-overlay-header { + top: 0; + border-top: 0; + border-bottom: 1px solid #fff; + box-shadow: inset 0 -1px 0 0px #dfdfdf; +} + +.wp-full-overlay-sidebar .wp-full-overlay-footer { + bottom: 0; + border-bottom: 0; + border-top: 1px solid #dfdfdf; + box-shadow: inset 0 1px 0 0px #fff; +} + +.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content { + position: absolute; + top: 45px; + bottom: 45px; + left: 0; + right: 0; + overflow: auto; +} + +/* Close Link */ +.wp-full-overlay .close-full-overlay { + text-decoration: none; +} + +/* Collapse Button */ +.wp-full-overlay .collapse-sidebar { + position: absolute; + bottom: 12px; + left: 0; + z-index: 50; + display: block; + width: 19px; + height: 19px; + margin-left: 15px; + padding: 0; + border-radius: 50%; + text-decoration: none; +} + +.wp-full-overlay.collapsed .collapse-sidebar { + position: absolute; + left: 100%; +} + +.wp-full-overlay .collapse-sidebar-arrow { + position: absolute; + margin-top: 2px; + margin-left: 2px; + display: block; + width: 15px; + height: 15px; + background: transparent url('../images/arrows.png') no-repeat 0 -72px; +} + +.wp-full-overlay.collapsed .collapse-sidebar-arrow { + background-position: 0 -108px; +} + +.wp-full-overlay .collapse-sidebar-label { + position: absolute; + left: 100%; + color: #808080; + line-height: 20px; + margin-left: 10px; +} + +.wp-full-overlay.collapsed .collapse-sidebar-label { + display: none; +} + +.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-label { + color: #666; +} + +/* Animations */ +.wp-full-overlay, +.wp-full-overlay-sidebar, +.wp-full-overlay .collapse-sidebar, +.wp-full-overlay-main { + -webkit-transition-property: left, right, top, bottom, width, margin; + -moz-transition-property: left, right, top, bottom, width, margin; + -ms-transition-property: left, right, top, bottom, width, margin; + -o-transition-property: left, right, top, bottom, width, margin; + transition-property: left, right, top, bottom, width, margin; + + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + -ms-transition-duration: 0.2s; + -o-transition-duration: 0.2s; + transition-duration: 0.2s; +} + +/*------------------------------------------------------------------------------ + 24.0 - Customize Loader +------------------------------------------------------------------------------*/ + +.no-customize-support .hide-if-no-customize, +.customize-support .hide-if-customize { + display: none; +} + +#customize-container { + display: none; + background: #fff; + z-index: 500000; + position: fixed; + overflow: visible; + top: 0; + bottom: 0; + left: 0; + right: 0; + height: 100%; +} + +.customize-active #customize-container { + display: block; +} + +.customize-loading #customize-container iframe { + opacity: 0; +} + +.customize-loading #customize-container { + background: #fff url("../images/wpspin_light.gif") no-repeat fixed center center; +} + +#customize-container iframe, +#theme-installer iframe { + height: 100%; + width: 100%; + z-index: 20; + + -webkit-transition: opacity 0.3s; + -moz-transition: opacity 0.3s; + -ms-transition: opacity 0.3s; + -o-transition: opacity 0.3s; + transition: opacity 0.3s; +} + +#customize-container .collapse-sidebar { + bottom: 16px; +} + +#theme-installer { + display: none; +} + +#theme-installer.single-theme { + display: block; +} + +.install-theme-info { + display: none; + padding: 10px 20px 20px; +} + +.single-theme .install-theme-info { + padding-top: 15px; +} + +#theme-installer .install-theme-info { + display: block; +} + +.install-theme-info .theme-install { + float: right; + margin-top: 18px; +} + +.install-theme-info .theme-name { + font-size: 16px; + line-height: 24px; + margin-bottom: 0; +} + +.install-theme-info .theme-screenshot { + margin-top: 15px; + width: 258px; + border: 1px solid #ccc; +} + +.install-theme-info .theme-details { + overflow: hidden; +} + +.theme-details .theme-version { + margin: 15px 0; + float: left; +} + +.theme-details .star-holder { + margin: 14px 0; + float: right; +} + +.theme-details .theme-description { + float: left; + color: #777; + line-height: 20px; +} + +/*------------------------------------------------------------------------------ + 25.0 - Misc +------------------------------------------------------------------------------*/ + +#excerpt, +.attachmentlinks { + margin: 0; + height: 4em; + width: 98%; +} + +#template div { + margin-right: 190px; +} + +p.pagenav { + margin: 0; + display: inline; +} + +.pagenav span { + font-weight: bold; + margin: 0 6px; +} + +.row-title { + font-size: 13px !important; + font-weight: bold; +} + +.column-author img, .column-username img { + float: left; + margin-right: 10px; + margin-top: 1px; +} + +.row-actions { + visibility: hidden; + padding: 2px 0 0; +} + +.mobile .row-actions { + visibility: visible; +} + +tr:hover .row-actions, +div.comment-item:hover .row-actions { + visibility: visible; +} + +.row-actions-visible { + padding: 2px 0 0; +} + +.form-table .pre { + padding: 8px; + margin: 0; +} + +table.form-table td .updated { + font-size: 13px; +} + +.tagchecklist { + margin-left: 14px; + font-size: 12px; + overflow: auto; +} +.tagchecklist strong { + margin-left: -8px; + position: absolute; +} +.tagchecklist span { + margin-right: 25px; + display: block; + float: left; + font-size: 11px; + line-height: 1.8em; + white-space: nowrap; + cursor: default; +} +.tagchecklist span a { + margin: 6px 0pt 0pt -9px; + cursor: pointer; + width: 10px; + height: 10px; + display: block; + float: left; + text-indent: -9999px; + overflow: hidden; + position: absolute; +} + +#poststuff h2 { + margin-top: 20px; + font-size: 1.5em; + margin-bottom: 15px; + padding: 0 0 3px; + clear: left; +} + +#poststuff h3, +.metabox-holder h3 { + font-size: 15px; + font-weight: normal; + padding: 7px 10px; + margin: 0; + line-height: 1; +} + +#poststuff .inside { + margin: 6px 0 8px; +} + +#poststuff .inside #parent_id, +.inline-edit-row #post_parent { + max-width: 100%; +} + +#post-visibility-select, +#post-formats-select { + line-height: 1.5em; + margin-top: 3px; +} + +#poststuff #submitdiv .inside { + margin: 0; + padding: 0; +} + +#titlediv, +#poststuff .postarea { + margin-bottom: 20px; +} + +#templateside ul li a { + text-decoration: none; +} + +.tool-box .title { + margin: 8px 0; + font-size: 18px; + font-weight: normal; + line-height: 24px; +} + +#sidemenu { + margin: -30px 15px 0 315px; + list-style: none; + position: relative; + float: right; + padding-left: 10px; + font-size: 12px; +} + +#sidemenu a { + padding: 0 7px; + display: block; + float: left; + line-height: 28px; + border-top-width: 1px; + border-top-style: solid; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +#sidemenu li { + display: inline; + line-height: 200%; + list-style: none; + text-align: center; + white-space: nowrap; + margin: 0; + padding: 0; +} + +#sidemenu a.current { + font-weight: normal; + padding-left: 6px; + padding-right: 6px; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-width: 1px; + border-style: solid; +} + +#sidemenu li a .count-0 { + display: none; +} + +.plugin-install #description, +.plugin-install-network #description { + width: 60%; +} + +table .vers, +table .column-visible, +table .column-rating { + text-align: left; +} + +.error-message { + color: red; + font-weight: bold; +} + +/* Scrollbar fix for bulk upgrade iframe */ +body.iframe { + height: 98%; +} + + +/* - Only used once or twice in all of WP - deprecate for global style +------------------------------------------------------------------------------*/ +td.media-icon { + text-align: center; + width: 80px; + padding-top: 8px; + padding-bottom: 8px; +} + +td.media-icon img { + max-width: 80px; + max-height: 60px; +} + +.list-ajax-loading { + float: right; + margin-right: 9px; + margin-top: -1px; +} + +.tablenav .list-ajax-loading { + margin-top: 7px; +} + +#howto { + font-size: 11px; + margin: 0 5px; + display: block; +} + +.importers td { + padding-right: 14px; +} + +.importers { + font-size: 16px; + width: auto; +} + +#namediv table { + width: 100%; +} + +#namediv td.first { + width: 10px; + white-space: nowrap; +} + +#namediv input { + width: 98%; +} + +#namediv p { + margin: 10px 0; +} + +#submitdiv h3 { + margin-bottom: 0 !important; +} + +/* - Used - but could/should be deprecated with a CSS reset +------------------------------------------------------------------------------*/ +.zerosize { + height: 0; + width: 0; + margin: 0; + border: 0; + padding: 0; + overflow: hidden; + position: absolute; +} + +br.clear { + height: 2px; + line-height: 2px; +} + +.checkbox { + border: none; + margin: 0; + padding: 0; +} + +fieldset { + border: 0; + padding: 0; + margin: 0; +} + +.post-categories { + display: inline; + margin: 0; + padding: 0; +} + +.post-categories li { + display: inline; +} + + +/*----------------------------------------------------------------------------- + MERGED +-------------------------------------------------------------------------------*/ + +/* dashboard */ +.edit-box { + display: none; +} + +h3:hover .edit-box { + display: inline; +} + +.index-php form .input-text-wrap { + background: #fff; + border-style: solid; + border-width: 1px; + padding: 2px 3px; + border-color: #ccc; +} + +#dashboard-widgets form .input-text-wrap input { + border: 0 none; + outline: none; + margin: 0; + padding: 0; + width: 99%; + color: #333; +} + +form .textarea-wrap { + background: #fff; + border-style: solid; + border-width: 1px; + padding: 2px; + border-color: #ccc; +} + +#dashboard-widgets form .textarea-wrap textarea { + border: 0 none; + padding: 0; + outline: none; + width: 99%; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +#dashboard-widgets .postbox form .submit { + float: none; + margin: .5em 0 0; + padding: 0; + border: none; +} + +#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input { + margin: 0; +} + +#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish { + min-width: 0; +} + +#dashboard-widgets a { + text-decoration: none; +} + +#dashboard-widgets h3 a { + text-decoration: underline; +} + +#dashboard-widgets h3 .postbox-title-action { + position: absolute; + right: 30px; + padding: 0; + top: 5px; +} + +#dashboard-widgets h4 { + font-weight: normal; + font-size: 13px; + margin: 0 0 .2em; + padding: 0; +} + +/* Right Now */ +#dashboard_right_now p.sub, +#dashboard_right_now .table, #dashboard_right_now .versions { + margin: -12px; +} + +#dashboard_right_now .inside { + font-size: 12px; + padding-top: 20px; +} + +#dashboard_right_now p.sub { + padding: 5px 0 15px; + color: #8f8f8f; + font-size: 14px; + position: absolute; + top: -17px; + left: 15px; +} + +#dashboard_right_now .table { + margin: 0; + padding: 0; + position: relative; +} + +#dashboard_right_now .table_content { + float: left; + border-top: #ececec 1px solid; + width: 45%; +} + +#dashboard_right_now .table_discussion { + float: right; + border-top: #ececec 1px solid; + width: 45%; +} + +#dashboard_right_now table td { + padding: 3px 0; + white-space: nowrap; +} + +#dashboard_right_now table tr.first td { + border-top: none; +} + +#dashboard_right_now td.b { + padding-right: 6px; + text-align: right; + font-size: 14px; + width: 1%; +} + +#dashboard_right_now td.b a { + font-size: 18px; +} + +#dashboard_right_now td.b a:hover { + color: #d54e21; +} + +#dashboard_right_now .t { + font-size: 12px; + padding-right: 12px; + padding-top: 6px; + color: #777; +} + +#dashboard_right_now .t a { + white-space: nowrap; +} + +#dashboard_right_now .spam { + color: red; +} + +#dashboard_right_now .waiting { + color: #e66f00; +} + +#dashboard_right_now .approved { + color: green; +} + +#dashboard_right_now .versions { + padding: 6px 10px 12px; + clear: both; +} + +#dashboard_right_now a.button { + float: right; + clear: right; + position: relative; + top: -5px; +} + +/* Recent Comments */ +#dashboard_recent_comments h3 { + margin-bottom: 0; +} + +#dashboard_recent_comments .inside { + margin-top: 0; +} + +#dashboard_recent_comments .comment-meta .approve { + font-style: italic; + font-family: sans-serif; + font-size: 10px; +} + +#dashboard_recent_comments .subsubsub { + float: none; + white-space: normal; +} + +#the-comment-list { + position: relative; +} + +#the-comment-list .comment-item { + padding: 1em 10px; + border-top: 1px solid; +} + +#the-comment-list .pingback { + padding-left: 9px !important; +} + +#the-comment-list .comment-item, +#the-comment-list #replyrow { + margin: 0 -10px; +} + +#the-comment-list .comment-item:first-child { + border-top: none; +} + +#the-comment-list .comment-item .avatar { + float: left; + margin: 0 10px 5px 0; +} + +#the-comment-list .comment-item h4 { + line-height: 1.7em; + margin-top: -0.4em; + color: #777; +} + +#the-comment-list .comment-item h4 cite { + font-style: normal; + font-weight: normal; +} + +#the-comment-list .comment-item blockquote, +#the-comment-list .comment-item blockquote p { + margin: 0; + padding: 0; + display: inline; +} + +#dashboard_recent_comments #the-comment-list .trackback blockquote, +#dashboard_recent_comments #the-comment-list .pingback blockquote { + display: block; +} + +#the-comment-list .comment-item p.row-actions { + margin: 3px 0 0; + padding: 0; + font-size: 12px; +} + +/* QuickPress */ +#dashboard_quick_press h4 { + font-family: sans-serif; + float: left; + width: 5em; + clear: both; + font-weight: normal; + text-align: right; + font-size: 12px; +} + +#dashboard_quick_press h4 label { + margin-right: 10px; +} + +#dashboard_quick_press .input-text-wrap, +#dashboard_quick_press .textarea-wrap { + margin: 0 0 1em 5em; +} + +#dashboard_quick_press .wp-media-buttons { + margin: 0 0 .5em 5em; + padding: 0; +} + +#dashboard_quick_press .wp-media-buttons a { + color: #777; +} + +#dashboard-widgets #dashboard_quick_press form p.submit { + margin-left: 4.6em; +} + +#dashboard-widgets #dashboard_quick_press form p.submit input { + float: left; +} + +#dashboard-widgets #dashboard_quick_press form p.submit #save-post { + margin: 0 1em 0 10px; +} + +#dashboard-widgets #dashboard_quick_press form p.submit #publish { + float: right; +} + +#dashboard-widgets #dashboard_quick_press form p.submit img.waiting { + vertical-align: middle; + visibility: hidden; + margin: 4px 6px 0 0; +} + +/* Recent Drafts */ +#dashboard_recent_drafts ul, +#dashboard_recent_drafts p { + margin: 0; + padding: 0; + word-wrap: break-word; +} + +#dashboard_recent_drafts ul { + list-style: none; +} + +#dashboard_recent_drafts ul li { + margin-bottom: 1em; +} + +#dashboard_recent_drafts h4 { + line-height: 1.7em; + word-wrap: break-word; +} + +#dashboard_recent_drafts h4 abbr { + font-weight: normal; + font-family: sans-serif; + font-size: 12px; + color: #999; + margin-left: 3px; +} + +/* Feeds */ +.rss-widget ul { + margin: 0; + padding: 0; + list-style: none; +} + +a.rsswidget { + font-size: 13px; + line-height: 1.7em; +} + +.rss-widget ul li { + line-height: 1.5em; + margin-bottom: 12px; +} + +.rss-widget span.rss-date { + color: #999; + font-size: 12px; + margin-left: 3px; +} + +.rss-widget cite { + display: block; + text-align: right; + margin: 0 0 1em; + padding: 0; +} + +.rss-widget cite:before { + content: '\2014'; +} + +/* Plugins */ +#dashboard_plugins h4 { + line-height: 1.7em; +} + +#dashboard_plugins h5 { + font-weight: normal; + font-size: 13px; + margin: 0; + display: inline; + line-height: 1.4em; +} + +#dashboard_plugins h5 a { + line-height: 1.4em; +} + +#dashboard_plugins .inside span { + font-size: 12px; + padding-left: 5px; +} + +#dashboard_plugins p { + margin: 0.3em 0 1.4em; + line-height: 1.4em; +} + +.dashboard-comment-wrap { + overflow: hidden; + word-wrap: break-word; +} + +/* Browser Nag */ +#dashboard_browser_nag a.update-browser-link { + font-size: 1.2em; + font-weight: bold; +} + +#dashboard_browser_nag a { + text-decoration: underline; +} + +#dashboard_browser_nag p.browser-update-nag.has-browser-icon { + padding-right: 125px; +} + +#dashboard_browser_nag .browser-icon { + margin-top: -35px; +} + +#dashboard_browser_nag.postbox.browser-insecure { + background-color: #ac1b1b; + border-color: #ac1b1b; +} + +#dashboard_browser_nag.postbox { + background-color: #e29808; + background-image: none; + border-color: #edc048; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + color: #fff; +} + +#dashboard_browser_nag.postbox.browser-insecure h3 { + border-bottom-color: #cd5a5a; + color: #fff; +} + +#dashboard_browser_nag.postbox h3 { + border-bottom-color: #f6e2ac; + text-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent none; + color: #fff; +} + +#dashboard_browser_nag a { + color: #fff; +} + +#dashboard_browser_nag.browser-insecure a.browse-happy-link, +#dashboard_browser_nag.browser-insecure a.update-browser-link { + text-shadow: #871b15 0 1px 0; +} + +#dashboard_browser_nag a.browse-happy-link, +#dashboard_browser_nag a.update-browser-link { + text-shadow: #d29a04 0 1px 0; +} + + +/* login */ + +.login * { + margin: 0; + padding: 0; +} + +.login form { + margin-left: 8px; + padding: 26px 24px 46px; + font-weight: normal; + background: #fff; + border: 1px solid #e5e5e5; + -moz-box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px; + -webkit-box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px; + box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px; +} + +.login form .forgetmenot { + font-weight: normal; + float: left; + margin-bottom: 0; +} + +.login .button-primary { + font-size: 13px !important; + line-height: 16px; + padding: 3px 10px; + float: right; +} + +#login form p { + margin-bottom: 0; +} + +#login form p.submit { + padding: 0; +} + +.login label { + color: #777; + font-size: 14px; +} + +.login form .forgetmenot label { + font-size: 12px; + line-height: 19px; +} + +.login form p { + margin-bottom: 24px; +} + +.login h1 a { + background-image: url('../images/wordpress-logo.png?ver=20120216'); + background-size: 274px 63px; + background-position: top center; + background-repeat: no-repeat; + width: 326px; + height: 67px; + text-indent: -9999px; + overflow: hidden; + padding-bottom: 15px; + display: block; +} + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5) { + .login h1 a { + background-image: url('../images/wordpress-logo-2x.png?ver=20120412'); + background-size: 274px 63px; + } + + .wp-badge { + background-image: url('../images/wp-badge-2x.png?ver=20120516'); + background-size: 173px 194px; + } +} + +#login { + width: 320px; + padding: 114px 0 0; + margin: auto; +} + +#login_error, +.login .message { + margin: 0 0 16px 8px; + padding: 12px; +} + +.login #nav, +.login #backtoblog { + text-shadow: #fff 0 1px 0; + margin: 0 0 0 16px; + padding: 16px 16px 0; +} + +#backtoblog { + padding: 12px 16px 0; +} + +.login form .input, +.login input[type="text"] { + color: #555; + font-weight: 200; + font-size: 24px; + line-height: 1; + width: 100%; + padding: 3px; + margin-top: 2px; + margin-right: 6px; + margin-bottom: 16px; + border: 1px solid #e5e5e5; + background: #fbfbfb; + outline: none; + -moz-box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2); + -webkit-box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2); + box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2); +} + +.login #pass-strength-result { + width: 250px; + font-weight: bold; + border-style: solid; + border-width: 1px; + margin: 12px 0 6px; + padding: 6px 5px; + text-align: center; +} + +.mobile #login { + padding: 20px 0; +} + +.mobile #login form, +.mobile #login .message, +.mobile #login_error { + margin-left: 0; +} + +.mobile #login #nav, +.mobile #login #backtoblog { + margin-left: 8px; +} + +.mobile #login h1 a { + width: auto; +} + + +/* ms */ +/* Dashboard: MS Specific Data */ +#dashboard_right_now p.musub { + margin-top: 12px; + border-top: 1px solid #ececec; + padding-left: 16px; + position: static; +} + +.rtl #dashboard_right_now p.musub { + padding-left: 0; + padding-right: 16px; +} + +#dashboard_right_now td.b a.musublink { + font-size: 16px; +} + +#dashboard_right_now div.musubtable { + border-top: none; +} + +#dashboard_right_now div.musubtable .t { + white-space: normal; +} + +/* Background Color for Site Status */ +.wp-list-table .site-deleted { + background: #ff8573; +} +.wp-list-table .site-spammed { + background: #faafaa; +} +.wp-list-table .site-archived { + background: #ffebe8; +} +.wp-list-table .site-mature { + background: #fecac2; +} + +/* nav-menu */ + +#nav-menus-frame { + margin-left: 300px; +} + +#wpbody-content #menu-settings-column { + display:inline; + width:281px; + margin-left: -300px; + clear: both; + float: left; + padding-top: 24px; +} + +.no-js #wpbody-content #menu-settings-column { + padding-top: 31px; +} + +#menu-settings-column .inside { + clear: both; +} + +.metabox-holder-disabled .postbox { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.metabox-holder-disabled .button-controls .select-all { + display: none; +} + +#wpbody { + position: relative; +} + +/* Menu Container */ +#menu-management-liquid { + float: left; + min-width: 100%; +} + +#menu-management { + position: relative; + margin-right: 20px; + margin-top: -3px; + width: 100%; +} + +#menu-management .menu-edit { + margin-bottom: 20px; +} + +.nav-menus-php #post-body { + padding: 10px; + border-width: 1px 0; + border-style: solid; +} + +#nav-menu-header, +#nav-menu-footer { + padding: 0 10px; +} + +#nav-menu-header { + border-bottom: 1px solid; +} + +#nav-menu-footer { + border-top: 1px solid; +} + +.nav-menus-php #post-body div.updated, +.nav-menus-php #post-body div.error { + margin: 0; +} + +.nav-menus-php #post-body-content { + position: relative; + float: none; +} + +#menu-management .menu-add-new abbr { + font-weight:bold; +} + +/* Menu Tabs */ + +#menu-management .nav-tabs-nav { + margin: 0 20px; +} + +#menu-management .nav-tabs-arrow { + width: 10px; + padding: 0 5px 4px; + cursor: pointer; + position: absolute; + top: 0; + line-height: 22px; + font-size: 18px; + text-shadow: 0 1px 0 #fff; +} + +#menu-management .nav-tabs-arrow-left { + left: 0; +} + +#menu-management .nav-tabs-arrow-right { + right: 0; + text-align: right; +} + +#menu-management .nav-tabs-wrapper { + width: 100%; + height: 28px; + margin-bottom: -1px; + overflow: hidden; +} + +#menu-management .nav-tabs { + padding-left: 20px; + padding-right: 10px; +} + +.js #menu-management .nav-tabs { + float: left; + margin-left: 0px; + margin-right: -400px; +} + +#menu-management .nav-tab { + margin-bottom: 0; + font-size: 14px; +} + +#select-nav-menu-container { + text-align: right; + padding: 0 10px 3px 10px; + margin-bottom: 5px; +} + +#select-nav-menu { + width: 100px; + display: inline; +} + +#menu-name-label { + margin-top: -2px; +} + +#wpbody .open-label { + display: block; + float:left; +} + +#wpbody .open-label span { + padding-right: 10px; +} + +.js .input-with-default-title { + font-style: italic; +} + +#menu-management .inside { + padding: 0 10px; +} + +/* Add Menu Item Boxes */ +.postbox .howto input { + width: 180px; + float: right; +} + +.customlinkdiv .howto input { + width: 200px; +} + +#nav-menu-theme-locations .howto select { + width: 100%; +} + +#nav-menu-theme-locations .button-controls { + text-align: right; +} + +.add-menu-item-view-all { + height: 400px; +} + +/* Button Primary Actions */ +#menu-container .submit { + margin: 0px 0px 10px; + padding: 0px; +} + +.nav-menus-php .meta-sep, +.nav-menus-php .submitdelete, +.nav-menus-php .submitcancel { + display: block; + float: left; + margin: 4px 0; + line-height: 15px; +} + +.meta-sep { + padding: 0 2px; +} + +#cancel-save { + text-decoration: underline; + font-size: 12px; + margin-left: 20px; + margin-top: 5px; +} + +/* Button Secondary Actions */ +.list-controls { + float: left; + margin-top: 5px; +} + +.add-to-menu { + float: right; +} + +.postbox img.waiting { + display: none; + vertical-align: middle; +} + +.button-controls { + clear:both; + margin: 10px 0; +} + +.show-all, +.hide-all { + cursor: pointer; +} + +.hide-all { + display: none; +} + +/* Create Menu */ +#menu-name { + width: 270px; +} + +#manage-menu .inside { + padding: 0px 0px; +} + +/* Custom Links */ +#available-links dt { + display: block; +} + +#add-custom-link .howto { + font-size: 12px; +} + +#add-custom-link label span { + display: block; + float: left; + margin-top: 5px; + padding-right: 5px; +} + +.menu-item-textbox { + width: 180px; +} + +.nav-menus-php .howto span { + margin-top: 4px; + display: block; + float: left; +} + +/* Menu item types */ +.quick-search { + width: 190px; +} + +.nav-menus-php .list-wrap { + display: none; + clear: both; + margin-bottom: 10px; +} + +.nav-menus-php .list-container { + max-height: 200px; + overflow-y: auto; + padding: 10px 10px 5px; +} + +.nav-menus-php .postbox p.submit { + margin-bottom: 0; +} + +/* Listings */ +.nav-menus-php .list li { + display: none; + margin: 0; + margin-bottom: 5px; +} + +.nav-menus-php .list li .menu-item-title { + cursor: pointer; + display: block; +} + +.nav-menus-php .list li .menu-item-title input { + margin-right: 3px; + margin-top: -3px; +} + +/* Nav Menu */ +#menu-container .inside { + padding-bottom: 10px; +} + +.menu { + padding-top:1em; +} + +#menu-to-edit { + padding: 1em 0; +} + +.menu ul { + width: 100%; +} + +.menu li { + margin-bottom: 0; + position:relative; +} + +.menu-item-bar { + clear:both; + line-height:1.5em; + position:relative; + margin: 13px 0 0 0; +} + +.menu-item-handle { + border: 1px solid #dfdfdf; + position: relative; + padding-left: 10px; + height: auto; + width: 400px; + line-height: 35px; + text-shadow: 0 1px 0 #FFFFFF; + overflow: hidden; + word-wrap: break-word; +} + +#menu-to-edit .menu-item-invalid .menu-item-handle { + background-color: #f6c9cc; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#f6c9cc), to(#fdf8ff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* new Webkit */ + background-image: linear-gradient(bottom, #f6c9cc, #fdf8ff); /* proposed W3C Markup */ +} + +.menu-item-edit-active .menu-item-handle { + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.no-js .menu-item-edit-active .item-edit { + display: none; +} + +.js .menu-item-handle { + cursor: move; +} + +.menu li.deleting .menu-item-handle { + background-image: none; + text-shadow: 0 0 0; +} + +.menu-item-handle .item-title { + font-size: 12px; + font-weight: bold; + padding: 7px 0; + line-height: 20px; + display:block; + margin-right:13em; +} + +/* Sortables */ +li.menu-item.ui-sortable-helper dl { + margin-top: 0; +} + +li.menu-item.ui-sortable-helper .menu-item-transport dl { + margin-top: 13px; +} + +.menu .sortable-placeholder { + height: 35px; + width: 410px; + margin-top: 13px; +} + +/* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */ +.menu-item-depth-0 { margin-left: 0px; } +.menu-item-depth-1 { margin-left: 30px; } +.menu-item-depth-2 { margin-left: 60px; } +.menu-item-depth-3 { margin-left: 90px; } +.menu-item-depth-4 { margin-left: 120px; } +.menu-item-depth-5 { margin-left: 150px; } +.menu-item-depth-6 { margin-left: 180px; } +.menu-item-depth-7 { margin-left: 210px; } +.menu-item-depth-8 { margin-left: 240px; } +.menu-item-depth-9 { margin-left: 270px; } +.menu-item-depth-10 { margin-left: 300px; } +.menu-item-depth-11 { margin-left: 330px; } + +.menu-item-depth-0 .menu-item-transport { margin-left: 0px; } +.menu-item-depth-1 .menu-item-transport { margin-left: -30px; } +.menu-item-depth-2 .menu-item-transport { margin-left: -60px; } +.menu-item-depth-3 .menu-item-transport { margin-left: -90px; } +.menu-item-depth-4 .menu-item-transport { margin-left: -120px; } +.menu-item-depth-5 .menu-item-transport { margin-left: -150px; } +.menu-item-depth-6 .menu-item-transport { margin-left: -180px; } +.menu-item-depth-7 .menu-item-transport { margin-left: -210px; } +.menu-item-depth-8 .menu-item-transport { margin-left: -240px; } +.menu-item-depth-9 .menu-item-transport { margin-left: -270px; } +.menu-item-depth-10 .menu-item-transport { margin-left: -300px; } +.menu-item-depth-11 .menu-item-transport { margin-left: -330px; } + +body.menu-max-depth-0 { min-width: 950px !important; } +body.menu-max-depth-1 { min-width: 980px !important; } +body.menu-max-depth-2 { min-width: 1010px !important; } +body.menu-max-depth-3 { min-width: 1040px !important; } +body.menu-max-depth-4 { min-width: 1070px !important; } +body.menu-max-depth-5 { min-width: 1100px !important; } +body.menu-max-depth-6 { min-width: 1130px !important; } +body.menu-max-depth-7 { min-width: 1160px !important; } +body.menu-max-depth-8 { min-width: 1190px !important; } +body.menu-max-depth-9 { min-width: 1220px !important; } +body.menu-max-depth-10 { min-width: 1250px !important; } +body.menu-max-depth-11 { min-width: 1280px !important; } + +/* Menu item controls */ +.item-type { + font-size: 12px; + padding-right: 10px; +} + +.item-controls { + font-size: 12px; + position: absolute; + right: 20px; + top: -1px; +} + +.item-controls a { + text-decoration: none; +} + +.item-controls a:hover { + cursor: pointer; +} + +.item-controls .item-order { + padding-right: 10px; +} + +.nav-menus-php .item-edit { + position: absolute; + right: -20px; + top: 0; + display: block; + width: 30px; + height: 36px; + overflow: hidden; + text-indent:-999em; + border-bottom: 1px solid; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +/* Menu editing */ +.menu-instructions-inactive { + display: none; +} + +.menu-item-settings { + display: block; + width: 400px; + padding: 10px 0 10px 10px; + border: solid; + border-width: 0 1px 1px 1px; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +.menu-item-edit-active .menu-item-settings { + display: block; +} + +.menu-item-edit-inactive .menu-item-settings { + display: none; +} + +.add-menu-item-pagelinks { + margin: .5em auto; + text-align: center; +} + +.link-to-original { + display: block; + margin: 0 0 10px; + padding: 3px 5px 5px; + font-size: 12px; + font-style: italic; +} + +.link-to-original a { + padding-left: 4px; + font-style: normal; +} + +.hidden-field { + display: none; +} + +.menu-item-settings .description-thin, +.menu-item-settings .description-wide { + margin-right: 10px; + float: left; +} + +.description-thin { + width: 190px; + height: 40px; +} + +.description-wide { + width: 390px; +} + +.menu-item-actions { + padding-top: 15px; +} + +#cancel-save { + cursor: pointer; +} + +/* Major/minor publishing actions (classes) */ +.nav-menus-php .major-publishing-actions { + clear: both; + padding: 3px 0 5px; +} + +.nav-menus-php .major-publishing-actions .publishing-action { + text-align: right; + float: right; + line-height: 23px; + margin: 5px 0 1px; +} + +.nav-menus-php .major-publishing-actions .delete-action { + vertical-align: middle; + text-align: left; + float: left; + padding-right: 15px; + margin-top: 5px; +} + +.menu-name-label span, +.auto-add-pages label { + font-size: 12px; + font-style: normal; +} + +.menu-name-label { + margin-right: 15px; +} + +.auto-add-pages input { + margin-top: 0; +} + +.auto-add-pages { + margin-top: 4px; + float: left; +} + +.nav-menus-php .submitbox .submitcancel { + border-bottom: 1px solid; + padding: 1px 2px; + text-decoration: none; +} + +.nav-menus-php .major-publishing-actions .form-invalid { + padding-left: 4px; + margin-left: -4px; + border: 0 none; +} + +/* Clearfix */ +#menu-item-name-wrap:after, +#menu-item-url-wrap:after, +#menu-name-label:after, +#menu-settings-column .inside:after, +#nav-menus-frame:after, +.nav-menus-php #post-body-content:after, +.nav-menus-php .button-controls:after, +.nav-menus-php .major-publishing-actions:after, +.nav-menus-php .menu-item-settings:after { + clear: both; + content: "."; + display: block; + height: 0; + visibility: hidden; +} + +#nav-menus-frame, +.button-controls, +#menu-item-url-wrap, +#menu-item-name-wrap { + display: block; +} + +/* Star ratings */ +div.star-holder { + position: relative; + height: 17px; + width: 100px; + background: url('../images/stars.png?ver=20120307') repeat-x bottom left; +} + +div.star-holder .star-rating { + background: url('../images/stars.png?ver=20120307') repeat-x top left; + height: 17px; + float: left; +} + +div.action-links { + font-weight: normal; + margin: 6px 0 0; +} + +/* Header on thickbox */ +#plugin-information-header { + margin: 0; + padding: 0 5px; + font-weight: bold; + position: relative; + border-bottom-width: 1px; + border-bottom-style: solid; + height: 2.5em; +} +#plugin-information ul#sidemenu { + font-weight: normal; + margin: 0 5px; + position: absolute; + left: 0; + bottom: -1px; +} + +/* Install sidemenu */ +#plugin-information p.action-button { + width: 100%; + padding-bottom: 0; + margin-bottom: 0; + margin-top: 10px; + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +#plugin-information .action-button a { + text-align: center; + font-weight: bold; + text-decoration: none; + display: block; + line-height: 2em; +} + +#plugin-information h2 { + clear: none !important; + margin-right: 200px; +} + +#plugin-information .fyi { + margin: 0 10px 50px; + width: 210px; +} + +#plugin-information .fyi h2 { + font-size: 0.9em; + margin-bottom: 0; + margin-right: 0; +} + +#plugin-information .fyi h2.mainheader { + padding: 5px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; +} + +#plugin-information .fyi ul { + padding: 10px 5px 10px 7px; + margin: 0; + list-style: none; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +#plugin-information .fyi li { + margin-right: 0; +} + +#plugin-information #section-holder { + padding: 10px; +} + +#plugin-information .section ul, +#plugin-information .section ol { + margin-left: 16px; + list-style-type: square; + list-style-image: none; +} + +#plugin-information #section-screenshots ol { + list-style: none; + margin: 0; +} + +#plugin-information #section-screenshots li img { + vertical-align: text-top; + max-width: 100%; + width: auto; + height: auto; +} + +#plugin-information #section-screenshots li p { + font-style: italic; + padding-left: 20px; + padding-bottom: 2em; +} + +#plugin-information #section-screenshots ol, +#plugin-information .updated, +#plugin-information pre { + margin-right: 215px; +} + +#plugin-information pre { + padding: 7px; + overflow: auto; +} + +/* press-this */ +body.press-this { + color: #333; + margin: 0; + padding: 0; + min-width: 675px; + min-height: 400px; +} + +img { + border: none; +} + +/* Header */ +.press-this #wphead { + height: 32px; + margin-left: 0; + margin-right: 0; + margin-bottom: 5px; +} + +.press-this #header-logo { + float: left; + margin: 7px 7px 0; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.press-this #wphead h1 { + font-weight: normal; + font-size: 16px; + line-height: 32px; + margin: 0; + float: left; +} + +.press-this #wphead h1 a { + text-decoration: none; +} + +.press-this #wphead h1 a:hover { + text-decoration: underline; +} + +.press-this #message { + margin: 10px 0; +} + +.press-this-sidebar { + float: right; + width: 200px; + padding-top: 10px; +} + +.press-this #title { + margin-left: 0; + margin-right: 0; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.press-this .tagchecklist span a { + background: transparent url(../images/xit.gif) no-repeat 0 0; +} + +.press-this #titlediv { + margin: 0; +} + +.press-this .wp-media-buttons { + cursor: default; + padding: 8px 8px 0; +} + +.press-this .howto { + margin-top: 2px; + margin-bottom: 3px; + font-size: 12px; + font-style: italic; + display: block; +} + +/* Editor/Main Column */ +.press-this #poststuff { + margin: 0 10px 10px; +} + +#poststuff #editor-toolbar { + height: 30px; +} + +div.zerosize { + border: 0 none; + height: 0; + margin: 0; + overflow: hidden; + padding: 0; + width: 0; +} + +.posting { + margin-right: 212px; + position: relative; +} + +.press-this .inner-sidebar { + width: 200px; +} + +.press-this .inner-sidebar .sleeve { + padding-top: 5px; +} + +.press-this #submitdiv p { + margin: 0; + padding: 6px; +} + +.press-this #submitdiv #publishing-actions { + border-bottom: 1px solid #dfdfdf; +} + +.press-this #publish { + float: right; +} + +.press-this #poststuff h2, +.press-this #poststuff h3 { + font-size: 14px; + line-height: 1; +} + +.press-this #tagsdiv-post_tag h3, +.press-this #categorydiv h3 { + cursor: pointer; +} + +.press-this #submitdiv h3 { + cursor: default; +} + +h3.tb { + text-shadow: 0 1px 0 #fff; + font-weight: bold; + font-size: 12px; + margin-left: 5px; +} + +#TB_window { + border: 1px solid #333; +} + +.press-this .postbox, +.press-this .stuffbox { + margin-bottom: 10px; + min-width: 0; +} + +.postbox:hover .handlediv, +.stuffbox:hover .handlediv { + background: transparent url(../images/arrows.png) no-repeat 6px 7px; +} + +.press-this #submitdiv:hover .handlediv { + background: none; +} + +.tbtitle { + font-size: 1.7em; + outline: none; + padding: 3px 4px; + border-color: #dfdfdf; +} + +.press-this .actions { + float: right; + margin: -19px 0 0; +} + +.press-this #extra-fields .actions { + margin: -25px -7px 0 0; +} + +.press-this .actions li { + float: left; + list-style: none; + margin-right: 10px; +} + +#extra-fields .button { + margin-right: 5px; +} + +/* Photo Styles */ +#photo_saving { + margin: 0 8px 8px; + vertical-align: middle; +} + +#img_container_container { + overflow: auto; +} + +#extra-fields { + margin-top: 10px; + position: relative; +} + +#extra-fields h2 { + margin: 12px; +} + +#waiting { + margin-top: 10px; +} + +#extra-fields .postbox { + margin-bottom: 5px; +} + +#extra-fields .titlewrap { + padding: 0; + overflow: auto; + height: 100px; +} + +#img_container a { + display: block; + float: left; + overflow: hidden; + vertical-align: center; +} + +#img_container img, +#img_container a { + width: 68px; + height: 68px; +} + +#img_container img { + border: none; + background-color: #f4f4f4; + cursor: pointer; +} + +#img_container a, +#img_container a:link, +#img_container a:visited { + border: 1px solid #ccc; + display: block; + position: relative; +} + +#img_container a:hover, +#img_container a:active { + border-color: #000; + z-index: 1000; + border-width: 2px; + margin: -1px; +} + +/* Video */ +#embed-code { + width: 100%; + height: 98px; +} + +/* Categories */ +.press-this .categorydiv div.tabs-panel { + height: 100px; +} + +/* Tags */ +.press-this .tagsdiv .newtag { + width: 130px; +} + +.press-this #content { + margin: 5px 0; + padding: 0 5px; + border: 0 none; + height: 357px; + font-family: Consolas, Monaco, monospace; + font-size: 13px; + line-height: 19px; + background: transparent; +} + +/* Submit */ +#saving { + display: inline; + vertical-align: middle; +} + +#TB_ajaxContent #options { + position: absolute; + top: 20px; + right: 25px; + padding: 5px; +} + +#TB_ajaxContent h3 { + margin-bottom: .25em; +} + +.error a { + text-decoration: underline; +} + +.updated a { + text-decoration: none; + padding-bottom: 2px; +} + +/* tag hints */ +.taghint { + color: #aaa; + margin: -17px 0 0 7px; + visibility: hidden; +} + +input.newtag ~ div.taghint { + visibility: visible; +} + +input.newtag:focus ~ div.taghint { + visibility: hidden; +} + +/* TinyMCE */ +#mce_fullscreen_container { + background: #fff; +} + +#photo-add-url-div input[type="text"] { + width: 300px; +} + +/* theme-editor */ +.alignleft h3 { + margin: 0; +} + +h3 span { + font-weight: normal; +} + +#template textarea { + font-family: Consolas, Monaco, monospace; + font-size: 12px; + width: 97%; + background: #f9f9f9; + outline: none; +} + +#template p { + width: 97%; +} + +#templateside { + float: right; + width: 190px; + word-wrap: break-word; +} + +#templateside h3, +#postcustomstuff p.submit { + margin: 0; +} + +#templateside h4 { + margin: 1em 0 0; +} + +#templateside ol, +#templateside ul { + margin: .5em; + padding: 0; +} + +#templateside li { + margin: 4px 0; +} + +#templateside ul li a span.highlight { + display:block; +} + +.nonessential { + font-size: 11px; + font-style: italic; + padding-left: 12px; +} + +.highlight { + padding: 3px 3px 3px 12px; + margin-left: -12px; + font-weight: bold; + border: 0 none; +} + +#documentation { + margin-top: 10px; +} +#documentation label { + line-height: 22px; + vertical-align: top; + font-weight: bold; +} + +.fileedit-sub { + padding: 10px 0 8px; + line-height: 180%; +} + +#filter-box { + clear: both; +} + +.feature-filter { + padding: 8px 12px 0; +} + +.feature-filter .feature-group { + float: left; + margin: 5px 10px 10px; +} + +.feature-filter .feature-group li { + display: inline; + float: left; + list-style-type: none; + padding-right: 25px; + width: 150px; +} + +.feature-container { +width: 100%; +overflow: auto; +margin-bottom: 10px; +} + +/* widgets */ + +/* 2 column liquid layout */ +div.widget-liquid-left { + float: left; + clear: left; + width: 100%; + margin-right: -325px; +} + +div#widgets-left { + margin-left: 5px; + margin-right: 325px; +} + +div#widgets-right { + width: 285px; + margin: 0 auto; +} + +div.widget-liquid-right { + float: right; + clear: right; + width: 300px; +} + +.widget-liquid-right .widget, +.inactive-sidebar .widget, +.widget-liquid-right .sidebar-description { + width: 250px; + margin: 0 auto 20px; + overflow: hidden; +} + +.widget-liquid-right .sidebar-description { + margin-bottom: 10px; +} + +.inactive-sidebar .widget { + margin: 0 10px 20px; + float: left; +} + +div.sidebar-name h3 { + font-weight: normal; + font-size: 15px; + margin: 0; + padding: 8px 10px; + overflow: hidden; + white-space: nowrap; +} + +div.sidebar-name { + cursor: pointer; + font-size: 13px; + border-width: 1px; + border-style: solid; + -webkit-border-top-right-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.js .closed .sidebar-name { + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.widget-liquid-right .widgets-sortables, +#widgets-left .widget-holder { + border-width: 0 1px 1px; + border-style: none solid solid; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.js .closed .widgets-sortables, +.js .closed .widget-holder { + display: none; +} + +.widget-liquid-right .widgets-sortables { + padding: 15px 0 0; +} + +#available-widgets .widget-holder { + padding: 7px 5px 0; +} + +#available-widgets .widget { + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.inactive-sidebar { + padding: 5px 5px 0; +} + +#widget-list .widget { + width: 250px; + margin: 0 10px 15px; + border: 0 none; + background: transparent; + float: left; +} + +#widget-list .widget-description { + padding: 5px 8px; +} + +.widget-placeholder { + border-width: 1px; + border-style: dashed; + margin: 0 auto 20px; + height: 26px; + width: 250px; +} + +.inactive-sidebar .widget-placeholder { + margin: 0 10px 20px; + float: left; +} + +div.widgets-holder-wrap { + padding: 0; + margin: 10px 0 20px; +} + +#widgets-left #available-widgets { + background-color: transparent; + border: 0 none; +} + +ul#widget-list { + list-style: none; + margin: 0; + padding: 0; + min-height: 100px; +} + +.widget .widget-top { + margin-bottom: -1px; + font-size: 12px; + font-weight: bold; + height: 26px; + overflow: hidden; +} + +.widget-top .widget-title { + padding: 7px 9px; +} + +.widget-top .widget-title-action { + float: right; +} + +a.widget-action { + display: block; + width: 24px; + height: 26px; +} + +#available-widgets a.widget-action { + display: none; +} + +.widget-top a.widget-action { + background: transparent url(../images/arrows.png) no-repeat 4px 6px; +} + +.widget-top a.widget-action:hover { + background: transparent url(../images/arrows-dark.png) no-repeat 4px 6px; +} + +.widget .widget-inside, +.widget .widget-description { + padding: 12px 12px 10px; + font-size: 12px; + line-height: 16px; +} + +.widget-inside, +.widget-description { + display: none; +} + +#available-widgets .widget-description { + display: block; +} + +.widget .widget-inside p { + margin: 0 0 1em; + padding: 0; +} + +.widget-title h4 { + margin: 0; + line-height: 1; + overflow: hidden; + white-space: nowrap; +} + +.widgets-sortables { + min-height: 90px; +} + +.widget-control-actions { + margin-top: 8px; +} + +.widget-control-actions a { + text-decoration: none; +} + +.widget-control-actions a:hover { + text-decoration: underline; +} + +.widget-control-actions .ajax-feedback { + padding-bottom: 3px; +} + +.widget-control-actions div.alignleft { + margin-top: 6px; +} + +div#sidebar-info { + padding: 0 1em; + margin-bottom: 1em; + font-size: 12px; +} + +.widget-title a, +.widget-title a:hover { + text-decoration: none; + border-bottom: none; +} + +.widget-control-edit { + display: block; + font-size: 12px; + font-weight: normal; + line-height: 26px; + padding: 0 8px 0 0; +} + +a.widget-control-edit { + text-decoration: none; +} + +.widget-control-edit .add, +.widget-control-edit .edit { + display: none; +} + +#available-widgets .widget-control-edit .add, +#widgets-right .widget-control-edit .edit, +.inactive-sidebar .widget-control-edit .edit { + display: inline; +} + +.editwidget { + margin: 0 auto 15px; +} + +.editwidget .widget-inside { + display: block; + padding: 10px; +} + +.inactive p.description { + margin: 5px 15px 10px; +} + +#available-widgets p.description { + margin: 0 12px 12px; +} + +.widget-position { + margin-top: 8px; +} + +.inactive { + padding-top: 2px; +} + +.sidebar-name-arrow { + float: right; + height: 29px; + width: 26px; +} + +.widget-title .in-widget-title { + font-size: 12px; + white-space: nowrap; +} + +#removing-widget { + display: none; + font-weight: normal; + padding-left: 15px; + font-size: 12px; + line-height: 1; +} + +.widget-control-noform, +#access-off, +.widgets_access .widget-action, +.widgets_access .sidebar-name-arrow, +.widgets_access #access-on, +.widgets_access .widget-holder .description { + display: none; +} + +.widgets_access .widget-holder, +.widgets_access #widget-list { + padding-top: 10px; +} + +.widgets_access #access-off { + display: inline; +} + +.widgets_access #wpbody-content .widget-title-action, +.widgets_access #wpbody-content .widget-control-edit, +.widgets_access .closed .widgets-sortables, +.widgets_access .closed .widget-holder { + display: block; +} + +.widgets_access .closed .sidebar-name { + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.widgets_access .sidebar-name, +.widgets_access .widget .widget-top { + cursor: default; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media only screen and (max-width: 768px) { + /* categories */ + #col-left { + width: 100%; + } + + #col-right { + width: 100%; + } +} + +@media only screen and (min-width: 769px) { + /* categories */ + #col-left { + width: 35%; + } + + #col-right { + width: 65%; + } +} + +@media only screen and (max-width: 860px) { + + /* categories */ + #col-left { + width: 35%; + } + + #col-right { + width: 65%; + } +} + +@media only screen and (min-width: 980px) { + + /* categories */ + #col-left { + width: 35%; + } + + #col-right { + width: 65%; + } +} + +@media only screen and (max-width: 768px) { + /* categories */ + #col-left { + width: 100%; + } + + #col-right { + width: 100%; + } + + .form-field input, + .form-field textarea { + width: 99%; + } + + .form-wrap .form-field { + padding:0; + } + + /* users */ + #profile-page .form-table textarea { + max-width: 400px; + width: auto; + } +} + +/* =Localized CSS +-------------------------------------------------------------- */ + +/* zh_CN: Remove italic properties. */ +.locale-zh-cn .howto, +.locale-zh-cn .tablenav .displaying-num, +.locale-zh-cn .js .input-with-default-title, +.locale-zh-cn .link-to-original, +.locale-zh-cn .inline-edit-row fieldset span.title, +.locale-zh-cn .inline-edit-row fieldset span.checkbox-title, +.locale-zh-cn #utc-time, +.locale-zh-cn #local-time, +.locale-zh-cn p.install-help, +.locale-zh-cn p.help, +.locale-zh-cn p.description, +.locale-zh-cn span.description, +.locale-zh-cn .form-wrap p { + font-style: normal; +} + +/* zh_CN: Enlarge dashboard widget 'Configure' link */ +.locale-zh-cn .hdnle a { font-size: 12px; } + +/* zn_CH: Enlarge font size, set font-size: normal */ +.locale-zh-cn form.upgrade .hint { font-style: normal; font-size: 100%; } + +/* Zn_CH: Distraction free writing. + * More beautiful font for "Just write." + * Larger text for HTML/Visual mode. + */ +.locale-zh-cn #wp-fullscreen-tagline { font-family: KaiTi, "楷体", sans-serif; } +.locale-zh-cn #wp-fullscreen-modes a { font-size: 12px; } + +/* zh_CN: Enlarge font-size. */ +.locale-zh-cn #sort-buttons { font-size: 1em !important; } + +/* ru_RU: Text needs more room to breathe. */ +.locale-ru-ru #dashboard_quick_press .input-text-wrap, +.locale-ru-ru #dashboard_quick_press .textarea-wrap, +.locale-ru-ru #dashboard_quick_press .wp-media-buttons { + margin-left: 5.7em; /* default 5em + 0.7em */ +} +.locale-ru-ru #dashboard_quick_press h4 { + width: 5.7em; /* default 5.5em + 0.2em */ +} +.locale-ru-ru #dashboard-widgets #dashboard_quick_press form p.submit { + margin-left: 5.3em; /* default 4.6em + 0.7em */ +} +.locale-ru-ru .inline-edit-row fieldset label span.title { + width: auto; /* default 5em */ + min-width: 5em; +} +.locale-ru-ru.press-this .posting { + margin-right: 257px; /* default 212px + 45px */ +} +.locale-ru-ru.press-this #photo-add-url-div input[type="text"] { + width: 255px; /* default 300px - 45px */ +} +.locale-ru-ru.press-this #side-sortables { + width: 245px; /* default 200px + 45px */ +} + +/* lt_LT: QuickPress + QuickEdit */ +.locale-lt-lt #dashboard_quick_press .input-text-wrap, +.locale-lt-lt #dashboard_quick_press .textarea-wrap, +.locale-lt-lt #dashboard_quick_press .wp-media-buttons { + margin-left: 7em; +} +.locale-lt-lt #dashboard_quick_press h4 { + width: 7em; +} +.locale-lt-lt .inline-edit-row fieldset label span.title { + width: 8em; +} +.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap { + margin-left: 8em; +} diff --git a/wp-admin/custom-background.php b/wp-admin/custom-background.php new file mode 100644 index 0000000..8fb1399 --- /dev/null +++ b/wp-admin/custom-background.php @@ -0,0 +1,432 @@ +admin_header_callback = $admin_header_callback; + $this->admin_image_div_callback = $admin_image_div_callback; + + add_action( 'admin_menu', array( $this, 'init' ) ); + add_action( 'wp_ajax_set-background-image', array( $this, 'wp_set_background_image' ) ); + } + + /** + * Set up the hooks for the Custom Background admin page. + * + * @since 3.0.0 + */ + function init() { + if ( ! current_user_can('edit_theme_options') ) + return; + + $this->page = $page = add_theme_page(__('Background'), __('Background'), 'edit_theme_options', 'custom-background', array(&$this, 'admin_page')); + + add_action("load-$page", array(&$this, 'admin_load')); + add_action("load-$page", array(&$this, 'take_action'), 49); + add_action("load-$page", array(&$this, 'handle_upload'), 49); + + if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-background' ) { + add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 ); + add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) ); + add_filter( 'media_upload_mime_type_links', '__return_empty_array' ); + } + + if ( $this->admin_header_callback ) + add_action("admin_head-$page", $this->admin_header_callback, 51); + } + + /** + * Set up the enqueue for the CSS & JavaScript files. + * + * @since 3.0.0 + */ + function admin_load() { + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __( 'You can customize the look of your site without touching any of your theme’s code by using a custom background. Your background can be an image or a color.' ) . '

' . + '

' . __( 'To use a background image, simply upload it, then choose your display options below. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site.' ) . '

' . + '

' . __( 'You can also choose a background color. If you know the hexadecimal code for the color you want, enter it in the Background Color field. If not, click on the Select a Color link, and a color picker will allow you to choose the exact shade you want.' ) . '

' . + '

' . __( 'Don’t forget to click on the Save Changes button when you are finished.' ) . '

' + ) ); + + get_current_screen()->set_help_sidebar( + '

' . __( 'For more information:' ) . '

' . + '

' . __( 'Documentation on Custom Background' ) . '

' . + '

' . __( 'Support Forums' ) . '

' + ); + + add_thickbox(); + wp_enqueue_script('media-upload'); + wp_enqueue_script('custom-background'); + wp_enqueue_style('farbtastic'); + } + + /** + * Execute custom background modification. + * + * @since 3.0.0 + */ + function take_action() { + + if ( empty($_POST) ) + return; + + if ( isset($_POST['reset-background']) ) { + check_admin_referer('custom-background-reset', '_wpnonce-custom-background-reset'); + remove_theme_mod('background_image'); + remove_theme_mod('background_image_thumb'); + $this->updated = true; + return; + } + + if ( isset($_POST['remove-background']) ) { + // @TODO: Uploaded files are not removed here. + check_admin_referer('custom-background-remove', '_wpnonce-custom-background-remove'); + set_theme_mod('background_image', ''); + set_theme_mod('background_image_thumb', ''); + $this->updated = true; + wp_safe_redirect( $_POST['_wp_http_referer'] ); + return; + } + + if ( isset($_POST['background-repeat']) ) { + check_admin_referer('custom-background'); + if ( in_array($_POST['background-repeat'], array('repeat', 'no-repeat', 'repeat-x', 'repeat-y')) ) + $repeat = $_POST['background-repeat']; + else + $repeat = 'repeat'; + set_theme_mod('background_repeat', $repeat); + } + + if ( isset($_POST['background-position-x']) ) { + check_admin_referer('custom-background'); + if ( in_array($_POST['background-position-x'], array('center', 'right', 'left')) ) + $position = $_POST['background-position-x']; + else + $position = 'left'; + set_theme_mod('background_position_x', $position); + } + + if ( isset($_POST['background-attachment']) ) { + check_admin_referer('custom-background'); + if ( in_array($_POST['background-attachment'], array('fixed', 'scroll')) ) + $attachment = $_POST['background-attachment']; + else + $attachment = 'fixed'; + set_theme_mod('background_attachment', $attachment); + } + + if ( isset($_POST['background-color']) ) { + check_admin_referer('custom-background'); + $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['background-color']); + if ( strlen($color) == 6 || strlen($color) == 3 ) + set_theme_mod('background_color', $color); + else + set_theme_mod('background_color', ''); + } + + $this->updated = true; + } + + /** + * Display the custom background page. + * + * @since 3.0.0 + */ + function admin_page() { +?> +
+ +

+updated) ) { ?> +
+

Visit your site to see how it looks.' ), home_url( '/' ) ); ?>

+
+admin_image_div_callback ) { + call_user_func($this->admin_image_div_callback); + } else { +?> +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + +
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+

+
+ + + + +

+ 'custom-background', 'TB_iframe' => 1 ), $image_library_url ); + ?> +

+
+ +

+
+
+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + +
+ + +
+ + + class="hide-if-no-js" id="clearcolor"> () + + +
+ + + +
+ +
+ false); + $file = wp_handle_upload($_FILES['import'], $overrides); + + if ( isset($file['error']) ) + wp_die( $file['error'] ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $filename = basename($file); + + // Construct the object array + $object = array( + 'post_title' => $filename, + 'post_content' => $url, + 'post_mime_type' => $type, + 'guid' => $url, + 'context' => 'custom-background' + ); + + // Save the data + $id = wp_insert_attachment($object, $file); + + // Add the meta-data + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + update_post_meta( $id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) ); + + set_theme_mod('background_image', esc_url_raw($url)); + + $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' ); + set_theme_mod('background_image_thumb', esc_url_raw( $thumbnail[0] ) ); + + do_action('wp_create_file_in_uploads', $file, $id); // For replication + $this->updated = true; + } + + /** + * Replace default attachment actions with "Set as background" link. + * + * @since 3.4.0 + */ + function attachment_fields_to_edit( $form_fields, $post ) { + $form_fields = array( 'image-size' => $form_fields['image-size'] ); + $form_fields['buttons'] = array( 'tr' => '' . __( 'Set as background' ) . '' ); + $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-background' ); + + return $form_fields; + } + + /** + * Leave only "Media Library" tab in the uploader window. + * + * @since 3.4.0 + */ + function filter_upload_tabs() { + return array( 'library' => __('Media Library') ); + } + + public function wp_set_background_image() { + if ( ! current_user_can('edit_theme_options') || ! isset( $_POST['attachment_id'] ) ) exit; + $attachment_id = absint($_POST['attachment_id']); + $sizes = array_keys(apply_filters( 'image_size_names_choose', array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')) )); + $size = 'thumbnail'; + if ( in_array( $_POST['size'], $sizes ) ) + $size = esc_attr( $_POST['size'] ); + + update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) ); + $url = wp_get_attachment_image_src( $attachment_id, $size ); + $thumbnail = wp_get_attachment_image_src( $attachment_id, 'thumbnail' ); + set_theme_mod( 'background_image', esc_url_raw( $url[0] ) ); + set_theme_mod( 'background_image_thumb', esc_url_raw( $thumbnail[0] ) ); + exit; + } +} diff --git a/wp-admin/custom-header.php b/wp-admin/custom-header.php new file mode 100644 index 0000000..fc9d4f1 --- /dev/null +++ b/wp-admin/custom-header.php @@ -0,0 +1,1052 @@ +admin_header_callback = $admin_header_callback; + $this->admin_image_div_callback = $admin_image_div_callback; + + add_action( 'admin_menu', array( $this, 'init' ) ); + } + + /** + * Set up the hooks for the Custom Header admin page. + * + * @since 2.1.0 + */ + function init() { + if ( ! current_user_can('edit_theme_options') ) + return; + + $this->page = $page = add_theme_page(__('Header'), __('Header'), 'edit_theme_options', 'custom-header', array(&$this, 'admin_page')); + + add_action("admin_print_scripts-$page", array(&$this, 'js_includes')); + add_action("admin_print_styles-$page", array(&$this, 'css_includes')); + add_action("admin_head-$page", array(&$this, 'help') ); + add_action("admin_head-$page", array(&$this, 'take_action'), 50); + add_action("admin_head-$page", array(&$this, 'js'), 50); + if ( $this->admin_header_callback ) + add_action("admin_head-$page", $this->admin_header_callback, 51); + + if ( isset( $_REQUEST['context'] ) && $_REQUEST['context'] == 'custom-header' ) { + add_filter( 'attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2 ); + add_filter( 'media_upload_tabs', array( $this, 'filter_upload_tabs' ) ); + add_filter( 'media_upload_mime_type_links', '__return_empty_array' ); + } + } + + /** + * Adds contextual help. + * + * @since 3.0.0 + */ + function help() { + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __( 'This screen is used to customize the header section of your theme.') . '

' . + '

' . __( 'You can choose from the theme’s default header images, or use one of your own. You can also customize how your Site Title and Tagline are displayed.') . '

' + ) ); + + get_current_screen()->add_help_tab( array( + 'id' => 'set-header-image', + 'title' => __('Header Image'), + 'content' => + '

' . __( 'You can set a custom image header for your site. Simply upload the image and crop it, and the new header will go live immediately. Alternatively, you can use an image that has already been uploaded to your Media Library by clicking the “Choose Image” button.' ) . '

' . + '

' . __( 'Some themes come with additional header images bundled. If you see multiple images displayed, select the one you’d like and click the “Save Changes” button.' ) . '

' . + '

' . __( 'If your theme has more than one default header image, or you have uploaded more than one custom header image, you have the option of having WordPress display a randomly different image on each page of your site. Click the “Random” radio button next to the Uploaded Images or Default Images section to enable this feature.') . '

' . + '

' . __( 'If you don’t want a header image to be displayed on your site at all, click the “Remove Header Image” button at the bottom of the Header Image section of this page. If you want to re-enable the header image later, you just have to select one of the other image options and click “Save Changes”.') . '

' + ) ); + + get_current_screen()->add_help_tab( array( + 'id' => 'set-header-text', + 'title' => __('Header Text'), + 'content' => + '

' . sprintf( __( 'For most themes, the header text is your Site Title and Tagline, as defined in the General Settings section.' ), admin_url( 'options-general.php' ) ) . '

' . + '

' . __( 'In the Header Text section of this page, you can choose whether to display this text or hide it. You can also choose a color for the text by typing in a legitimate HTML hex value (eg: “#ff0000” for red) or by clicking “Select a Color” and dialing in a color using the color picker.') . '

' . + '

' . __( 'Don’t forget to Save Changes when you’re done!') . '

' + ) ); + + get_current_screen()->set_help_sidebar( + '

' . __( 'For more information:' ) . '

' . + '

' . __( 'Documentation on Custom Header' ) . '

' . + '

' . __( 'Support Forums' ) . '

' + ); + } + + /** + * Get the current step. + * + * @since 2.6.0 + * + * @return int Current step + */ + function step() { + if ( ! isset( $_GET['step'] ) ) + return 1; + + $step = (int) $_GET['step']; + if ( $step < 1 || 3 < $step || + ( 2 == $step && ! wp_verify_nonce( $_REQUEST['_wpnonce-custom-header-upload'], 'custom-header-upload' ) ) || + ( 3 == $step && ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'custom-header-crop-image' ) ) + ) + return 1; + + return $step; + } + + /** + * Set up the enqueue for the JavaScript files. + * + * @since 2.1.0 + */ + function js_includes() { + $step = $this->step(); + + if ( ( 1 == $step || 3 == $step ) ) { + add_thickbox(); + wp_enqueue_script( 'media-upload' ); + wp_enqueue_script( 'custom-header' ); + if ( current_theme_supports( 'custom-header', 'header-text' ) ) + wp_enqueue_script('farbtastic'); + } elseif ( 2 == $step ) { + wp_enqueue_script('imgareaselect'); + } + } + + /** + * Set up the enqueue for the CSS files + * + * @since 2.7 + */ + function css_includes() { + $step = $this->step(); + + if ( ( 1 == $step || 3 == $step ) && current_theme_supports( 'custom-header', 'header-text' ) ) + wp_enqueue_style('farbtastic'); + elseif ( 2 == $step ) + wp_enqueue_style('imgareaselect'); + } + + /** + * Execute custom header modification. + * + * @since 2.6.0 + */ + function take_action() { + if ( ! current_user_can('edit_theme_options') ) + return; + + if ( empty( $_POST ) ) + return; + + $this->updated = true; + + if ( isset( $_POST['resetheader'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + $this->reset_header_image(); + return; + } + + if ( isset( $_POST['resettext'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + remove_theme_mod('header_textcolor'); + return; + } + + if ( isset( $_POST['removeheader'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + $this->remove_header_image(); + return; + } + + if ( isset( $_POST['text-color'] ) && ! isset( $_POST['display-header-text'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + set_theme_mod( 'header_textcolor', 'blank' ); + } elseif ( isset( $_POST['text-color'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + $_POST['text-color'] = str_replace( '#', '', $_POST['text-color'] ); + $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['text-color']); + if ( strlen($color) == 6 || strlen($color) == 3 ) + set_theme_mod('header_textcolor', $color); + elseif ( ! $color ) + set_theme_mod( 'header_textcolor', 'blank' ); + } + + if ( isset( $_POST['default-header'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + $this->set_header_image( $_POST['default-header'] ); + return; + } + } + + /** + * Process the default headers + * + * @since 3.0.0 + */ + function process_default_headers() { + global $_wp_default_headers; + + if ( !empty($this->headers) ) + return; + + if ( !isset($_wp_default_headers) ) + return; + + $this->default_headers = $_wp_default_headers; + $template_directory_uri = get_template_directory_uri(); + $stylesheet_directory_uri = get_stylesheet_directory_uri(); + foreach ( array_keys($this->default_headers) as $header ) { + $this->default_headers[$header]['url'] = sprintf( $this->default_headers[$header]['url'], $template_directory_uri, $stylesheet_directory_uri ); + $this->default_headers[$header]['thumbnail_url'] = sprintf( $this->default_headers[$header]['thumbnail_url'], $template_directory_uri, $stylesheet_directory_uri ); + } + + } + + /** + * Display UI for selecting one of several default headers. + * + * Show the random image option if this theme has multiple header images. + * Random image option is on by default if no header has been set. + * + * @since 3.0.0 + */ + function show_header_selector( $type = 'default' ) { + if ( 'default' == $type ) { + $headers = $this->default_headers; + } else { + $headers = get_uploaded_header_images(); + $type = 'uploaded'; + } + + if ( 1 < count( $headers ) ) { + echo '
'; + echo ''; + echo '
'; + } + + echo '
'; + foreach ( $headers as $header_key => $header ) { + $header_thumbnail = $header['thumbnail_url']; + $header_url = $header['url']; + $header_desc = empty( $header['description'] ) ? '' : $header['description']; + echo '
'; + echo ''; + echo '
'; + } + echo '
'; + } + + /** + * Execute Javascript depending on step. + * + * @since 2.1.0 + */ + function js() { + $step = $this->step(); + if ( ( 1 == $step || 3 == $step ) && current_theme_supports( 'custom-header', 'header-text' ) ) + $this->js_1(); + elseif ( 2 == $step ) + $this->js_2(); + } + + /** + * Display Javascript based on Step 1 and 3. + * + * @since 2.6.0 + */ + function js_1() { ?> + + + +process_default_headers(); +?> + +
+ +

+ +updated ) ) { ?> +
+

Visit your site to see how it looks.' ), home_url( '/' ) ); ?>

+
+ + +

+ + + + + + + + + + + + + + + +
+ admin_image_div_callback ) { + call_user_func( $this->admin_image_div_callback ); + } else { + ?> + + +
+


+ %1$d × %2$d pixels will be used as-is.' ) . '
', get_theme_support( 'custom-header', 'width' ), get_theme_support( 'custom-header', 'height' ) ); + } elseif ( current_theme_supports( 'custom-header', 'flex-height' ) ) { + if ( ! current_theme_supports( 'custom-header', 'flex-width' ) ) + printf( __( 'Images should be at least %1$d pixels wide.' ) . ' ', get_theme_support( 'custom-header', 'width' ) ); + } elseif ( current_theme_supports( 'custom-header', 'flex-width' ) ) { + if ( ! current_theme_supports( 'custom-header', 'flex-height' ) ) + printf( __( 'Images should be at least %1$d pixels tall.' ) . ' ', get_theme_support( 'custom-header', 'height' ) ); + } + if ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) { + if ( current_theme_supports( 'custom-header', 'width' ) ) + printf( __( 'Suggested width is %1$d pixels.' ) . ' ', get_theme_support( 'custom-header', 'width' ) ); + if ( current_theme_supports( 'custom-header', 'height' ) ) + printf( __( 'Suggested height is %1$d pixels.' ) . ' ', get_theme_support( 'custom-header', 'height' ) ); + } + ?>

+
+

+
+ + + + +

+ 'custom-header', 'TB_iframe' => 1 ), $image_library_url ); + ?> +

+
+ +

+
+
+ +
+ + + + + + + + default_headers ) ) : ?> + + + + + + + + + + + + + + + + +
+

+ show_header_selector( 'uploaded' ); + ?> +
+ +

+ +

+ + show_header_selector( 'default' ); + ?> +
+

+ +
+

+ +
+ + + +

+ + + + + + + + + + + + + + + + + + + + + +
+

+ +

+
+

+ + + + + + +

+ +
+

+ +
+ + + +
+
+ +step_2_manage_upload()); + } + + if ( file_exists( $file ) ) { + list( $width, $height, $type, $attr ) = getimagesize( $file ); + } else { + $data = wp_get_attachment_metadata( $attachment_id ); + $height = $data[ 'height' ]; + $width = $data[ 'width' ]; + unset( $data ); + } + + $max_width = 0; + // For flex, limit size of image displayed to 1500px unless theme says otherwise + if ( current_theme_supports( 'custom-header', 'flex-width' ) ) + $max_width = 1500; + + if ( current_theme_supports( 'custom-header', 'max-width' ) ) + $max_width = max( $max_width, get_theme_support( 'custom-header', 'max-width' ) ); + $max_width = max( $max_width, get_theme_support( 'custom-header', 'width' ) ); + + // If flexible height isn't supported and the image is the exact right size + if ( ! current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) + && $width == get_theme_support( 'custom-header', 'width' ) && $height == get_theme_support( 'custom-header', 'height' ) ) + { + // Add the meta-data + if ( file_exists( $file ) ) + wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) ); + + $this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) ); + + do_action('wp_create_file_in_uploads', $file, $attachment_id); // For replication + return $this->finished(); + } elseif ( $width > $max_width ) { + $oitar = $width / $max_width; + $image = wp_crop_image($attachment_id, 0, 0, $width, $height, $max_width, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file)); + if ( ! $image || is_wp_error( $image ) ) + wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); + + $image = apply_filters('wp_create_file_in_uploads', $image, $attachment_id); // For replication + + $url = str_replace(basename($url), basename($image), $url); + $width = $width / $oitar; + $height = $height / $oitar; + } else { + $oitar = 1; + } + ?> + +
+ +

+ +
+

+

+ +
+ +
+ + + + + + + + + + + + +

+ + +

+
+
+ false); + $file = wp_handle_upload($_FILES['import'], $overrides); + + if ( isset($file['error']) ) + wp_die( $file['error'], __( 'Image Upload Error' ) ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $filename = basename($file); + + // Construct the object array + $object = array( + 'post_title' => $filename, + 'post_content' => $url, + 'post_mime_type' => $type, + 'guid' => $url, + 'context' => 'custom-header' + ); + + // Save the data + $attachment_id = wp_insert_attachment( $object, $file ); + return compact( 'attachment_id', 'file', 'filename', 'url', 'type' ); + } + + /** + * Display third step of custom header image page. + * + * @since 2.1.0 + */ + function step_3() { + check_admin_referer( 'custom-header-crop-image' ); + + if ( ! current_theme_supports( 'custom-header', 'uploads' ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + + if ( $_POST['oitar'] > 1 ) { + $_POST['x1'] = $_POST['x1'] * $_POST['oitar']; + $_POST['y1'] = $_POST['y1'] * $_POST['oitar']; + $_POST['width'] = $_POST['width'] * $_POST['oitar']; + $_POST['height'] = $_POST['height'] * $_POST['oitar']; + } + + $attachment_id = absint( $_POST['attachment_id'] ); + $original = get_attached_file($attachment_id); + + + $max_width = 0; + // For flex, limit size of image displayed to 1500px unless theme says otherwise + if ( current_theme_supports( 'custom-header', 'flex-width' ) ) + $max_width = 1500; + + if ( current_theme_supports( 'custom-header', 'max-width' ) ) + $max_width = max( $max_width, get_theme_support( 'custom-header', 'max-width' ) ); + $max_width = max( $max_width, get_theme_support( 'custom-header', 'width' ) ); + + if ( ( current_theme_supports( 'custom-header', 'flex-height' ) && ! current_theme_supports( 'custom-header', 'flex-width' ) ) || $_POST['width'] > $max_width ) + $dst_height = absint( $_POST['height'] * ( $max_width / $_POST['width'] ) ); + elseif ( current_theme_supports( 'custom-header', 'flex-height' ) && current_theme_supports( 'custom-header', 'flex-width' ) ) + $dst_height = absint( $_POST['height'] ); + else + $dst_height = get_theme_support( 'custom-header', 'height' ); + + if ( ( current_theme_supports( 'custom-header', 'flex-width' ) && ! current_theme_supports( 'custom-header', 'flex-height' ) ) || $_POST['width'] > $max_width ) + $dst_width = absint( $_POST['width'] * ( $max_width / $_POST['width'] ) ); + elseif ( current_theme_supports( 'custom-header', 'flex-width' ) && current_theme_supports( 'custom-header', 'flex-height' ) ) + $dst_width = absint( $_POST['width'] ); + else + $dst_width = get_theme_support( 'custom-header', 'width' ); + + if ( empty( $_POST['skip-cropping'] ) ) + $cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], $dst_width, $dst_height ); + elseif ( ! empty( $_POST['create-new-attachment'] ) ) + $cropped = _copy_image_file( $attachment_id ); + else + $cropped = get_attached_file( $attachment_id ); + + if ( ! $cropped || is_wp_error( $cropped ) ) + wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); + + $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $attachment_id); // For replication + + $parent = get_post($attachment_id); + $parent_url = $parent->guid; + $url = str_replace( basename( $parent_url ), basename( $cropped ), $parent_url ); + + $size = @getimagesize( $cropped ); + $image_type = ( $size ) ? $size['mime'] : 'image/jpeg'; + + // Construct the object array + $object = array( + 'ID' => $attachment_id, + 'post_title' => basename($cropped), + 'post_content' => $url, + 'post_mime_type' => $image_type, + 'guid' => $url, + 'context' => 'custom-header' + ); + if ( ! empty( $_POST['create-new-attachment'] ) ) + unset( $object['ID'] ); + + // Update the attachment + $attachment_id = wp_insert_attachment( $object, $cropped ); + wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $cropped ) ); + + $width = $dst_width; + $height = $dst_height; + $this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) ); + + // cleanup + $medium = str_replace( basename( $original ), 'midsize-' . basename( $original ), $original ); + if ( file_exists( $medium ) ) + @unlink( apply_filters( 'wp_delete_file', $medium ) ); + if ( empty( $_POST['create-new-attachment'] ) && empty( $_POST['skip-cropping'] ) ) + @unlink( apply_filters( 'wp_delete_file', $original ) ); + + return $this->finished(); + } + + /** + * Display last step of custom header image page. + * + * @since 2.1.0 + */ + function finished() { + $this->updated = true; + $this->step_1(); + } + + /** + * Display the page based on the current step. + * + * @since 2.1.0 + */ + function admin_page() { + if ( ! current_user_can('edit_theme_options') ) + wp_die(__('You do not have permission to customize headers.')); + $step = $this->step(); + if ( 2 == $step ) + $this->step_2(); + elseif ( 3 == $step ) + $this->step_3(); + else + $this->step_1(); + } + + /** + * Replace default attachment actions with "Set as header" link. + * + * @since 3.4.0 + */ + function attachment_fields_to_edit( $form_fields, $post ) { + $form_fields = array(); + $href = esc_url(add_query_arg(array( + 'page' => 'custom-header', + 'step' => 2, + '_wpnonce-custom-header-upload' => wp_create_nonce('custom-header-upload'), + 'file' => $post->ID + ), admin_url('themes.php'))); + + $form_fields['buttons'] = array( 'tr' => '' . __( 'Set as header' ) . '' ); + $form_fields['context'] = array( 'input' => 'hidden', 'value' => 'custom-header' ); + + return $form_fields; + } + + /** + * Leave only "Media Library" tab in the uploader window. + * + * @since 3.4.0 + */ + function filter_upload_tabs() { + return array( 'library' => __('Media Library') ); + } + + /** + * Choose a header image, selected from existing uploaded and default headers, + * or provide an array of uploaded header data (either new, or from media library). + * + * @param mixed $choice Which header image to select. Allows for values of 'random-default-image', + * for randomly cycling among the default images; 'random-uploaded-image', for randomly cycling + * among the uploaded images; the key of a default image registered for that theme; and + * the key of an image uploaded for that theme (the basename of the URL). + * Or an array of arguments: attachment_id, url, width, height. All are required. + * + * @since 3.4.0 + */ + final public function set_header_image( $choice ) { + if ( is_array( $choice ) || is_object( $choice ) ) { + $choice = (array) $choice; + if ( ! isset( $choice['attachment_id'] ) || ! isset( $choice['url'] ) ) + return; + + $choice['url'] = esc_url_raw( $choice['url'] ); + + $header_image_data = (object) array( + 'attachment_id' => $choice['attachment_id'], + 'url' => $choice['url'], + 'thumbnail_url' => $choice['url'], + 'height' => $choice['height'], + 'width' => $choice['width'], + ); + + update_post_meta( $choice['attachment_id'], '_wp_attachment_is_custom_header', get_stylesheet() ); + set_theme_mod( 'header_image', $choice['url'] ); + set_theme_mod( 'header_image_data', $header_image_data ); + return; + } + + if ( in_array( $choice, array( 'remove-header', 'random-default-image', 'random-uploaded-image' ) ) ) { + set_theme_mod( 'header_image', $choice ); + remove_theme_mod( 'header_image_data' ); + return; + } + + $uploaded = get_uploaded_header_images(); + if ( $uploaded && isset( $uploaded[ $choice ] ) ) { + $header_image_data = $uploaded[ $choice ]; + + } else { + $this->process_default_headers(); + if ( isset( $this->default_headers[ $choice ] ) ) + $header_image_data = $this->default_headers[ $choice ]; + else + return; + } + + set_theme_mod( 'header_image', esc_url_raw( $header_image_data['url'] ) ); + set_theme_mod( 'header_image_data', $header_image_data ); + } + + /** + * Remove a header image. + * + * @since 3.4.0 + */ + final public function remove_header_image() { + return $this->set_header_image( 'remove-header' ); + } + + /** + * Reset a header image to the default image for the theme. + * + * This method does not do anything if the theme does not have a default header image. + * + * @since 3.4.0 + */ + final public function reset_header_image() { + $this->process_default_headers(); + $default = get_theme_support( 'custom-header', 'default-image' ); + + if ( ! $default ) + return $this->remove_header_image(); + + $default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() ); + + foreach ( $this->default_headers as $header => $details ) { + if ( $details['url'] == $default ) { + $default_data = $details; + break; + } + } + + set_theme_mod( 'header_image', $default ); + set_theme_mod( 'header_image_data', (object) $default_data ); + } +} diff --git a/wp-admin/customize.php b/wp-admin/customize.php new file mode 100644 index 0000000..09c5b67 --- /dev/null +++ b/wp-admin/customize.php @@ -0,0 +1,203 @@ +registered; +$wp_scripts = new WP_Scripts; +$wp_scripts->registered = $registered; + +add_action( 'customize_controls_print_scripts', 'print_head_scripts', 20 ); +add_action( 'customize_controls_print_footer_scripts', '_wp_footer_scripts' ); +add_action( 'customize_controls_print_styles', 'print_admin_styles', 20 ); + +do_action( 'customize_controls_init' ); + +wp_enqueue_script( 'customize-controls' ); +wp_enqueue_style( 'customize-controls' ); + +do_action( 'customize_controls_enqueue_scripts' ); + +// Let's roll. +@header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset')); + +wp_user_settings(); +_wp_admin_html_begin(); + +$body_class = ''; + +if ( wp_is_mobile() ) : + $body_class .= ' mobile'; + + ?>theme()->display('Name') ) ) ); +?><?php echo $admin_title; ?> + + +
+
+
+ is_theme_active() ? __( 'Save & Publish' ) : __( 'Save & Activate' ); + submit_button( $save_text, 'primary', 'save', false ); + ?> + + + + +
+ + theme()->get_screenshot(); + $cannot_expand = ! ( $screenshot || $wp_customize->theme()->get('Description') ); + ?> + +
+
+
+ ' . $wp_customize->theme()->display('Name') . '' ); + ?> +
+ +
+ + + + + theme()->get('Description') ): ?> +
theme()->display('Description'); ?>
+ +
+ +
+ +
    + sections() as $section ) + $section->maybe_render(); + ?> +
+
+ + +
+
+ 1, + 'template' => $wp_customize->get_template(), + 'stylesheet' => $wp_customize->get_stylesheet(), + 'preview_iframe' => true, + 'TB_iframe' => 'true' + ), home_url( '/' ) ); + + $login_url = add_query_arg( array( + 'interim-login' => 1, + 'customize-login' => 1 + ), wp_login_url() ); + + $settings = array( + 'theme' => array( + 'stylesheet' => $wp_customize->get_stylesheet(), + 'active' => $wp_customize->is_theme_active(), + ), + 'url' => array( + 'preview' => esc_url( $url ? $url : home_url( '/' ) ), + 'parent' => esc_url( admin_url() ), + 'activated' => admin_url( 'themes.php?activated=true&previewed' ), + 'ajax' => esc_url( admin_url( 'admin-ajax.php', 'relative' ) ), + 'allowed' => array_map( 'esc_url', $allowed_urls ), + 'isCrossDomain' => $cross_domain, + 'fallback' => $fallback_url, + 'home' => esc_url( home_url( '/' ) ), + 'login' => $login_url, + ), + 'browser' => array( + 'mobile' => wp_is_mobile(), + 'ios' => $is_ios, + ), + 'settings' => array(), + 'controls' => array(), + 'nonce' => array( + 'save' => wp_create_nonce( 'save-customize_' . $wp_customize->get_stylesheet() ), + 'preview' => wp_create_nonce( 'preview-customize_' . $wp_customize->get_stylesheet() ) + ), + ); + + foreach ( $wp_customize->settings() as $id => $setting ) { + $settings['settings'][ $id ] = array( + 'value' => $setting->js_value(), + 'transport' => $setting->transport, + ); + } + + foreach ( $wp_customize->controls() as $id => $control ) { + $control->to_json(); + $settings['controls'][ $id ] = $control->json; + } + + ?> + +
+ + diff --git a/wp-admin/edit-comments.php b/wp-admin/edit-comments.php new file mode 100644 index 0000000..100d023 --- /dev/null +++ b/wp-admin/edit-comments.php @@ -0,0 +1,255 @@ +get_pagenum(); + +$doaction = $wp_list_table->current_action(); + +if ( $doaction ) { + check_admin_referer( 'bulk-comments' ); + + if ( 'delete_all' == $doaction && !empty( $_REQUEST['pagegen_timestamp'] ) ) { + $comment_status = $wpdb->escape( $_REQUEST['comment_status'] ); + $delete_time = $wpdb->escape( $_REQUEST['pagegen_timestamp'] ); + $comment_ids = $wpdb->get_col( "SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = '$comment_status' AND '$delete_time' > comment_date_gmt" ); + $doaction = 'delete'; + } elseif ( isset( $_REQUEST['delete_comments'] ) ) { + $comment_ids = $_REQUEST['delete_comments']; + $doaction = ( $_REQUEST['action'] != -1 ) ? $_REQUEST['action'] : $_REQUEST['action2']; + } elseif ( isset( $_REQUEST['ids'] ) ) { + $comment_ids = array_map( 'absint', explode( ',', $_REQUEST['ids'] ) ); + } elseif ( wp_get_referer() ) { + wp_safe_redirect( wp_get_referer() ); + exit; + } + + $approved = $unapproved = $spammed = $unspammed = $trashed = $untrashed = $deleted = 0; + + $redirect_to = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'spammed', 'unspammed', 'approved', 'unapproved', 'ids' ), wp_get_referer() ); + $redirect_to = add_query_arg( 'paged', $pagenum, $redirect_to ); + + foreach ( $comment_ids as $comment_id ) { // Check the permissions on each + if ( !current_user_can( 'edit_comment', $comment_id ) ) + continue; + + switch ( $doaction ) { + case 'approve' : + wp_set_comment_status( $comment_id, 'approve' ); + $approved++; + break; + case 'unapprove' : + wp_set_comment_status( $comment_id, 'hold' ); + $unapproved++; + break; + case 'spam' : + wp_spam_comment( $comment_id ); + $spammed++; + break; + case 'unspam' : + wp_unspam_comment( $comment_id ); + $unspammed++; + break; + case 'trash' : + wp_trash_comment( $comment_id ); + $trashed++; + break; + case 'untrash' : + wp_untrash_comment( $comment_id ); + $untrashed++; + break; + case 'delete' : + wp_delete_comment( $comment_id ); + $deleted++; + break; + } + } + + if ( $approved ) + $redirect_to = add_query_arg( 'approved', $approved, $redirect_to ); + if ( $unapproved ) + $redirect_to = add_query_arg( 'unapproved', $unapproved, $redirect_to ); + if ( $spammed ) + $redirect_to = add_query_arg( 'spammed', $spammed, $redirect_to ); + if ( $unspammed ) + $redirect_to = add_query_arg( 'unspammed', $unspammed, $redirect_to ); + if ( $trashed ) + $redirect_to = add_query_arg( 'trashed', $trashed, $redirect_to ); + if ( $untrashed ) + $redirect_to = add_query_arg( 'untrashed', $untrashed, $redirect_to ); + if ( $deleted ) + $redirect_to = add_query_arg( 'deleted', $deleted, $redirect_to ); + if ( $trashed || $spammed ) + $redirect_to = add_query_arg( 'ids', join( ',', $comment_ids ), $redirect_to ); + + wp_safe_redirect( $redirect_to ); + exit; +} elseif ( ! empty( $_GET['_wp_http_referer'] ) ) { + wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) ); + exit; +} + +$wp_list_table->prepare_items(); + +wp_enqueue_script('admin-comments'); +enqueue_comment_hotkeys_js(); + +if ( $post_id ) + $title = sprintf(__('Comments on “%s”'), wp_html_excerpt(_draft_or_post_title($post_id), 50)); +else + $title = __('Comments'); + +add_screen_option( 'per_page', array('label' => _x( 'Comments', 'comments per page (screen options)' )) ); + +get_current_screen()->add_help_tab( array( +'id' => 'overview', +'title' => __('Overview'), +'content' => + '

' . __( 'You can manage comments made on your site similar to the way you manage posts and other content. This screen is customizable in the same ways as other management screens, and you can act on comments using the on-hover action links or the Bulk Actions.' ) . '

' +) ); +get_current_screen()->add_help_tab( array( +'id' => 'moderating-comments', +'title' => __('Moderating Comments'), +'content' => + '

' . __( 'A yellow row means the comment is waiting for you to moderate it.' ) . '

' . + '

' . __( 'In the Author column, in addition to the author’s name, email address, and blog URL, the commenter’s IP address is shown. Clicking on this link will show you all the comments made from this IP address.' ) . '

' . + '

' . __( 'In the Comment column, above each comment it says “Submitted on,” followed by the date and time the comment was left on your site. Clicking on the date/time link will take you to that comment on your live site. Hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment.' ) . '

' . + '

' . __( 'In the In Response To column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The View Post link leads to that post on your live site. The small bubble with the number in it shows how many comments that post has received. If the bubble is gray, you have moderated all comments for that post. If it is blue, there are pending comments. Clicking the bubble will filter the comments screen to show only comments on that post.' ) . '

' . + '

' . __( 'Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link to the side to learn more.' ) . '

' +) ); + +get_current_screen()->set_help_sidebar( + '

' . __( 'For more information:' ) . '

' . + '

' . __( 'Documentation on Comments' ) . '

' . + '

' . __( 'Documentation on Comment Spam' ) . '

' . + '

' . __( 'Documentation on Keyboard Shortcuts' ) . '

' . + '

' . __( 'Support Forums' ) . '

' +); + +require_once('./admin-header.php'); +?> + +
+ +

%s', + get_edit_post_link($post_id), + wp_html_excerpt(_draft_or_post_title($post_id), 50) + ) + ); +else + echo __('Comments'); + +if ( isset($_REQUEST['s']) && $_REQUEST['s'] ) + printf( '' . sprintf( __( 'Search results for “%s”' ), wp_html_excerpt( esc_html( stripslashes( $_REQUEST['s'] ) ), 50 ) ) . '' ); ?> +

+ +

' . $error_msg . '

'; +} + +if ( isset($_REQUEST['approved']) || isset($_REQUEST['deleted']) || isset($_REQUEST['trashed']) || isset($_REQUEST['untrashed']) || isset($_REQUEST['spammed']) || isset($_REQUEST['unspammed']) || isset($_REQUEST['same']) ) { + $approved = isset( $_REQUEST['approved'] ) ? (int) $_REQUEST['approved'] : 0; + $deleted = isset( $_REQUEST['deleted'] ) ? (int) $_REQUEST['deleted'] : 0; + $trashed = isset( $_REQUEST['trashed'] ) ? (int) $_REQUEST['trashed'] : 0; + $untrashed = isset( $_REQUEST['untrashed'] ) ? (int) $_REQUEST['untrashed'] : 0; + $spammed = isset( $_REQUEST['spammed'] ) ? (int) $_REQUEST['spammed'] : 0; + $unspammed = isset( $_REQUEST['unspammed'] ) ? (int) $_REQUEST['unspammed'] : 0; + $same = isset( $_REQUEST['same'] ) ? (int) $_REQUEST['same'] : 0; + + if ( $approved > 0 || $deleted > 0 || $trashed > 0 || $untrashed > 0 || $spammed > 0 || $unspammed > 0 || $same > 0 ) { + if ( $approved > 0 ) + $messages[] = sprintf( _n( '%s comment approved', '%s comments approved', $approved ), $approved ); + + if ( $spammed > 0 ) { + $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0; + $messages[] = sprintf( _n( '%s comment marked as spam.', '%s comments marked as spam.', $spammed ), $spammed ) . ' ' . __('Undo') . '
'; + } + + if ( $unspammed > 0 ) + $messages[] = sprintf( _n( '%s comment restored from the spam', '%s comments restored from the spam', $unspammed ), $unspammed ); + + if ( $trashed > 0 ) { + $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0; + $messages[] = sprintf( _n( '%s comment moved to the Trash.', '%s comments moved to the Trash.', $trashed ), $trashed ) . ' ' . __('Undo') . '
'; + } + + if ( $untrashed > 0 ) + $messages[] = sprintf( _n( '%s comment restored from the Trash', '%s comments restored from the Trash', $untrashed ), $untrashed ); + + if ( $deleted > 0 ) + $messages[] = sprintf( _n( '%s comment permanently deleted', '%s comments permanently deleted', $deleted ), $deleted ); + + if ( $same > 0 && $comment = get_comment( $same ) ) { + switch ( $comment->comment_approved ) { + case '1' : + $messages[] = __('This comment is already approved.') . ' ' . __( 'Edit comment' ) . ''; + break; + case 'trash' : + $messages[] = __( 'This comment is already in the Trash.' ) . ' ' . __( 'View Trash' ) . ''; + break; + case 'spam' : + $messages[] = __( 'This comment is already marked as spam.' ) . ' ' . __( 'Edit comment' ) . ''; + break; + } + } + + echo '

' . implode( "
\n", $messages ) . '

'; + } +} +?> + +views(); ?> + +
+ +search_box( __( 'Search Comments' ), 'comment' ); ?> + + + + + + + + + + + + + + + +display(); ?> +
+
+ +
+ + diff --git a/wp-admin/edit-form-advanced.php b/wp-admin/edit-form-advanced.php new file mode 100644 index 0000000..c22c68a --- /dev/null +++ b/wp-admin/edit-form-advanced.php @@ -0,0 +1,385 @@ + '', // Unused. Messages start at index 1. + 1 => sprintf( __('Post updated. View post'), esc_url( get_permalink($post_ID) ) ), + 2 => __('Custom field updated.'), + 3 => __('Custom field deleted.'), + 4 => __('Post updated.'), + /* translators: %s: date and time of the revision */ + 5 => isset($_GET['revision']) ? sprintf( __('Post restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, + 6 => sprintf( __('Post published. View post'), esc_url( get_permalink($post_ID) ) ), + 7 => __('Post saved.'), + 8 => sprintf( __('Post submitted. Preview post'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), + 9 => sprintf( __('Post scheduled for: %1$s. Preview post'), + // translators: Publish box date format, see http://php.net/date + date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ), + 10 => sprintf( __('Post draft updated. Preview post'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), +); +$messages['page'] = array( + 0 => '', // Unused. Messages start at index 1. + 1 => sprintf( __('Page updated. View page'), esc_url( get_permalink($post_ID) ) ), + 2 => __('Custom field updated.'), + 3 => __('Custom field deleted.'), + 4 => __('Page updated.'), + 5 => isset($_GET['revision']) ? sprintf( __('Page restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, + 6 => sprintf( __('Page published. View page'), esc_url( get_permalink($post_ID) ) ), + 7 => __('Page saved.'), + 8 => sprintf( __('Page submitted. Preview page'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), + 9 => sprintf( __('Page scheduled for: %1$s. Preview page'), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ), + 10 => sprintf( __('Page draft updated. Preview page'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), +); + +$messages = apply_filters( 'post_updated_messages', $messages ); + +$message = false; +if ( isset($_GET['message']) ) { + $_GET['message'] = absint( $_GET['message'] ); + if ( isset($messages[$post_type][$_GET['message']]) ) + $message = $messages[$post_type][$_GET['message']]; + elseif ( !isset($messages[$post_type]) && isset($messages['post'][$_GET['message']]) ) + $message = $messages['post'][$_GET['message']]; +} + +$notice = false; +$form_extra = ''; +if ( 'auto-draft' == $post->post_status ) { + if ( 'edit' == $action ) + $post->post_title = ''; + $autosave = false; + $form_extra .= ""; +} else { + $autosave = wp_get_post_autosave( $post_ID ); +} + +$form_action = 'editpost'; +$nonce_action = 'update-' . $post_type . '_' . $post_ID; +$form_extra .= ""; + +// Detect if there exists an autosave newer than the post and if that autosave is different than the post +if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) { + foreach ( _wp_post_revision_fields() as $autosave_field => $_autosave_field ) { + if ( normalize_whitespace( $autosave->$autosave_field ) != normalize_whitespace( $post->$autosave_field ) ) { + $notice = sprintf( __( 'There is an autosave of this post that is more recent than the version below. View the autosave' ), get_edit_post_link( $autosave->ID ) ); + break; + } + } + unset($autosave_field, $_autosave_field); +} + +$post_type_object = get_post_type_object($post_type); + +// All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action). +require_once('./includes/meta-boxes.php'); + +add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', null, 'side', 'core'); + +if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post_type, 'post-formats' ) ) + add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', null, 'side', 'core' ); + +// all taxonomies +foreach ( get_object_taxonomies($post_type) as $tax_name ) { + $taxonomy = get_taxonomy($tax_name); + if ( ! $taxonomy->show_ui ) + continue; + + $label = $taxonomy->labels->name; + + if ( !is_taxonomy_hierarchical($tax_name) ) + add_meta_box('tagsdiv-' . $tax_name, $label, 'post_tags_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name )); + else + add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name )); +} + +if ( post_type_supports($post_type, 'page-attributes') ) + add_meta_box('pageparentdiv', 'page' == $post_type ? __('Page Attributes') : __('Attributes'), 'page_attributes_meta_box', null, 'side', 'core'); + +if ( current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' ) ) + add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', null, 'side', 'low'); + +if ( post_type_supports($post_type, 'excerpt') ) + add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', null, 'normal', 'core'); + +if ( post_type_supports($post_type, 'trackbacks') ) + add_meta_box('trackbacksdiv', __('Send Trackbacks'), 'post_trackback_meta_box', null, 'normal', 'core'); + +if ( post_type_supports($post_type, 'custom-fields') ) + add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', null, 'normal', 'core'); + +do_action('dbx_post_advanced'); +if ( post_type_supports($post_type, 'comments') ) + add_meta_box('commentstatusdiv', __('Discussion'), 'post_comment_status_meta_box', null, 'normal', 'core'); + +if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') ) + add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', null, 'normal', 'core'); + +if ( !( 'pending' == $post->post_status && !current_user_can( $post_type_object->cap->publish_posts ) ) ) + add_meta_box('slugdiv', __('Slug'), 'post_slug_meta_box', null, 'normal', 'core'); + +if ( post_type_supports($post_type, 'author') ) { + if ( is_super_admin() || current_user_can( $post_type_object->cap->edit_others_posts ) ) + add_meta_box('authordiv', __('Author'), 'post_author_meta_box', null, 'normal', 'core'); +} + +if ( post_type_supports($post_type, 'revisions') && 0 < $post_ID && wp_get_post_revisions( $post_ID ) ) + add_meta_box('revisionsdiv', __('Revisions'), 'post_revisions_meta_box', null, 'normal', 'core'); + +do_action('add_meta_boxes', $post_type, $post); +do_action('add_meta_boxes_' . $post_type, $post); + +do_action('do_meta_boxes', $post_type, 'normal', $post); +do_action('do_meta_boxes', $post_type, 'advanced', $post); +do_action('do_meta_boxes', $post_type, 'side', $post); + +add_screen_option('layout_columns', array('max' => 2, 'default' => 2) ); + +if ( 'post' == $post_type ) { + $customize_display = '

' . __('The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop, and can minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.') . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'customize-display', + 'title' => __('Customizing This Display'), + 'content' => $customize_display, + ) ); + + $title_and_editor = '

' . __('Title - Enter a title for your post. After you enter a title, you’ll see the permalink below, which you can edit.') . '

'; + $title_and_editor .= '

' . __('Post editor - Enter the text for your post. There are two modes of editing: Visual and HTML. Choose the mode by clicking on the appropriate tab. Visual mode gives you a WYSIWYG editor. Click the last icon in the row to get a second row of controls. The HTML mode allows you to enter raw HTML along with your post text. You can insert media files by clicking the icons above the post editor and following the directions. You can go to the distraction-free writing screen via the Fullscreen icon in Visual mode (second to last in the top row) or the Fullscreen button in HTML mode (last in the row). Once there, you can make buttons visible by hovering over the top area. Exit Fullscreen back to the regular post editor.') . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'title-post-editor', + 'title' => __('Title and Post Editor'), + 'content' => $title_and_editor, + ) ); + + $publish_box = '

' . __('Publish - You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post.') . '

'; + + if ( current_theme_supports( 'post-formats' ) && post_type_supports( 'post', 'post-formats' ) ) { + $publish_box .= '

' . __( 'Post Format - This designates how your theme will display a specific post. For example, you could have a standard blog post with a title and paragraphs, or a short aside that omits the title and contains a short text blurb. Please refer to the Codex for descriptions of each post format. Your theme could enable all or some of 10 possible formats.' ) . '

'; + } + + if ( current_theme_supports( 'post-thumbnails' ) && post_type_supports( 'post', 'thumbnail' ) ) { + $publish_box .= '

' . __('Featured Image - This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the featured image as a post thumbnail on the home page, a custom header, etc.') . '

'; + } + + get_current_screen()->add_help_tab( array( + 'id' => 'publish-box', + 'title' => __('Publish Box'), + 'content' => $publish_box, + ) ); + + $discussion_settings = '

' . __('Send Trackbacks - Trackbacks are a way to notify legacy blog systems that you’ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they’ll be notified automatically using pingbacks, and this field is unnecessary.') . '

'; + $discussion_settings .= '

' . __('Discussion - You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them.') . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'discussion-settings', + 'title' => __('Discussion Settings'), + 'content' => $discussion_settings, + ) ); + + get_current_screen()->set_help_sidebar( + '

' . sprintf(__('You can also create posts with the Press This bookmarklet.'), 'options-writing.php') . '

' . + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Writing and Editing Posts') . '

' . + '

' . __('Support Forums') . '

' + ); +} elseif ( 'page' == $post_type ) { + $about_pages = '

' . __('Pages are similar to Posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest Pages under other Pages by making one the “Parent” of the other, creating a group of Pages.') . '

' . + '

' . __('Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the distraction-free writing space, available in both the Visual and HTML modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box:') . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'about-pages', + 'title' => __('About Pages'), + 'content' => $about_pages, + ) ); + + $page_attributes = '

' . __('Parent - You can arrange your pages in hierarchies. For example, you could have an “About” page that has “Life Story” and “My Dog” pages under it. There are no limits to how many levels you can nest pages.') . '

' . + '

' . __('Template - Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you’ll see them in this dropdown menu.') . '

' . + '

' . __('Order - Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field.') . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'page-attributes', + 'title' => __('Page Attributes'), + 'content' => $page_attributes, + ) ); + + get_current_screen()->set_help_sidebar( + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Adding New Pages') . '

' . + '

' . __('Documentation on Editing Pages') . '

' . + '

' . __('Support Forums') . '

' + ); +} + +require_once('./admin-header.php'); +?> + +
+ +

labels->add_new); ?>

+ +

+ + +

+ +
> + + + + + + + + + + +post_status ) + wp_original_referer_field(true, 'previous'); + +echo $form_extra; + +wp_nonce_field( 'autosave', 'autosavenonce', false ); +wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); +wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); +?> + +
+ +
+
+ +
+
+ + +
+
+public ? get_sample_permalink_html($post->ID) : ''; +$shortlink = wp_get_shortlink($post->ID, 'post'); +if ( !empty($shortlink) ) + $sample_permalink_html .= '' . __('Get Shortlink') . ''; + +if ( $post_type_object->public && ! ( 'pending' == $post->post_status && !current_user_can( $post_type_object->cap->publish_posts ) ) ) { ?> +
+ ID) && ! empty($sample_permalink_html) && 'auto-draft' != $post->post_status ) + echo $sample_permalink_html; + ?> +
+ +
+ +
+ + + +
+ +post_content, 'content', array('dfw' => true, 'tabindex' => 1) ); ?> + + + + +
0' ); ?> +   +post_status ) { + echo ''; + if ( $last_id = get_post_meta($post_ID, '_edit_last', true) ) { + $last_user = get_userdata($last_id); + printf(__('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified)); + } else { + printf(__('Last edited on %1$s at %2$s'), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified)); + } + echo ''; + } ?> +
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + + +post_title) && '' == $post->post_title) || (isset($_GET['message']) && 2 > $_GET['message'])) : ?> + + diff --git a/wp-admin/edit-form-comment.php b/wp-admin/edit-form-comment.php new file mode 100644 index 0000000..2340baf --- /dev/null +++ b/wp-admin/edit-form-comment.php @@ -0,0 +1,146 @@ + +
+comment_ID) ?> +
+ +

+ +
+ + + + + +
+
+
+

+
+ + + + + + + + + + + + + + + +
+ comment_author_email ) { + printf( __( 'E-mail (%s):' ), get_comment_author_email_link( __( 'send e-mail' ), '', '' ) ); + } else { + _e( 'E-mail:' ); + } +?>
+ comment_author_url ) && 'http://' != $comment->comment_author_url ) { + $link = '' . __('visit site') . ''; + printf( __( 'URL (%s):' ), apply_filters('get_comment_author_link', $link ) ); + } else { + _e( 'URL:' ); + } ?>
+
+
+
+ +
+ 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' ); + wp_editor( $comment->comment_content, 'content', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings ) ); + wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?> +
+
+ +
+
+

+
+
+
+ +
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+%1$s'); +$date = date_i18n( $datef, strtotime( $comment->comment_date ) ); +?> +  +
+
+
+
+
+ +
+
+comment_ID&_wp_original_http_referer=" . urlencode(wp_get_referer()), 'delete-comment_' . $comment->comment_ID) . "'>" . ( !EMPTY_TRASH_DAYS ? __('Delete Permanently') : __('Move to Trash') ) . "\n"; ?> +
+
+ '4' ) ); ?> +
+
+
+
+
+
+
+ +
+ +
+ + + + + + + +
+
+
+
+ + diff --git a/wp-admin/edit-link-form.php b/wp-admin/edit-link-form.php new file mode 100644 index 0000000..4ae317b --- /dev/null +++ b/wp-admin/edit-link-form.php @@ -0,0 +1,139 @@ +Links / Edit Link' ), 'link-manager.php' ); + $submit_text = __('Update Link'); + $form = ' diff --git a/wp-admin/edit-tag-form.php b/wp-admin/edit-tag-form.php new file mode 100644 index 0000000..24efd82 --- /dev/null +++ b/wp-admin/edit-tag-form.php @@ -0,0 +1,93 @@ + +

+ + +
+ +

labels->edit_item; ?>

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+

+ 0, 'hide_if_empty' => false, 'name' => 'parent', 'orderby' => 'name', 'taxonomy' => $taxonomy, 'selected' => $tag->parent, 'exclude_tree' => $tag->term_id, 'hierarchical' => true, 'show_option_none' => __('None'))); ?> + +

+ +

+
+ +
+
diff --git a/wp-admin/edit-tags.php b/wp-admin/edit-tags.php new file mode 100644 index 0000000..44b2aa5 --- /dev/null +++ b/wp-admin/edit-tags.php @@ -0,0 +1,418 @@ +cap->manage_terms ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + +$wp_list_table = _get_list_table('WP_Terms_List_Table'); +$pagenum = $wp_list_table->get_pagenum(); + +$title = $tax->labels->name; + +if ( 'post' != $post_type ) { + $parent_file = "edit.php?post_type=$post_type"; + $submenu_file = "edit-tags.php?taxonomy=$taxonomy&post_type=$post_type"; +} else if ( 'link_category' == $tax->name ) { + $parent_file = 'link-manager.php'; + $submenu_file = 'edit-tags.php?taxonomy=link_category'; +} else { + $parent_file = 'edit.php'; + $submenu_file = "edit-tags.php?taxonomy=$taxonomy"; +} + +add_screen_option( 'per_page', array('label' => $title, 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page') ); + +switch ( $wp_list_table->current_action() ) { + +case 'add-tag': + + check_admin_referer( 'add-tag', '_wpnonce_add-tag' ); + + if ( !current_user_can( $tax->cap->edit_terms ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + + $ret = wp_insert_term( $_POST['tag-name'], $taxonomy, $_POST ); + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + + if ( $referer = wp_get_original_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + if ( $ret && !is_wp_error( $ret ) ) + $location = add_query_arg( 'message', 1, $location ); + else + $location = add_query_arg( 'message', 4, $location ); + wp_redirect( $location ); + exit; +break; + +case 'delete': + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + if ( !isset( $_REQUEST['tag_ID'] ) ) { + wp_redirect( $location ); + exit; + } + + $tag_ID = (int) $_REQUEST['tag_ID']; + check_admin_referer( 'delete-tag_' . $tag_ID ); + + if ( !current_user_can( $tax->cap->delete_terms ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + + wp_delete_term( $tag_ID, $taxonomy ); + + $location = add_query_arg( 'message', 2, $location ); + wp_redirect( $location ); + exit; + +break; + +case 'bulk-delete': + check_admin_referer( 'bulk-tags' ); + + if ( !current_user_can( $tax->cap->delete_terms ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + + $tags = (array) $_REQUEST['delete_tags']; + foreach ( $tags as $tag_ID ) { + wp_delete_term( $tag_ID, $taxonomy ); + } + + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + $location = add_query_arg( 'message', 6, $location ); + wp_redirect( $location ); + exit; + +break; + +case 'edit': + $title = $tax->labels->edit_item; + + $tag_ID = (int) $_REQUEST['tag_ID']; + + $tag = get_term( $tag_ID, $taxonomy, OBJECT, 'edit' ); + if ( ! $tag ) + wp_die( __( 'You attempted to edit an item that doesn’t exist. Perhaps it was deleted?' ) ); + require_once ( 'admin-header.php' ); + include( './edit-tag-form.php' ); + +break; + +case 'editedtag': + $tag_ID = (int) $_POST['tag_ID']; + check_admin_referer( 'update-tag_' . $tag_ID ); + + if ( !current_user_can( $tax->cap->edit_terms ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + + $tag = get_term( $tag_ID, $taxonomy ); + if ( ! $tag ) + wp_die( __( 'You attempted to edit an item that doesn’t exist. Perhaps it was deleted?' ) ); + + $ret = wp_update_term( $tag_ID, $taxonomy, $_POST ); + + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + + if ( $referer = wp_get_original_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + if ( $ret && !is_wp_error( $ret ) ) + $location = add_query_arg( 'message', 3, $location ); + else + $location = add_query_arg( 'message', 5, $location ); + + wp_redirect( $location ); + exit; +break; + +default: +if ( ! empty($_REQUEST['_wp_http_referer']) ) { + $location = remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ); + + if ( ! empty( $_REQUEST['paged'] ) ) + $location = add_query_arg( 'paged', (int) $_REQUEST['paged'] ); + + wp_redirect( $location ); + exit; +} + +$wp_list_table->prepare_items(); +$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); + +if ( $pagenum > $total_pages && $total_pages > 0 ) { + wp_redirect( add_query_arg( 'paged', $total_pages ) ); + exit; +} + +wp_enqueue_script('admin-tags'); +if ( current_user_can($tax->cap->edit_terms) ) + wp_enqueue_script('inline-edit-tax'); + +if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $taxonomy ) { + $help =''; + if ( 'category' == $taxonomy ) + $help = '

' . sprintf(__( 'You can use categories to define sections of your site and group related posts. The default category is “Uncategorized” until you change it in your writing settings.' ) , 'options-writing.php' ) . '

'; + elseif ( 'link_category' == $taxonomy ) + $help = '

' . __( 'You can create groups of links by using Link Categories. Link Category names must be unique and Link Categories are separate from the categories you use for posts.' ) . '

'; + else + $help = '

' . __( 'You can assign keywords to your posts using tags. Unlike categories, tags have no hierarchy, meaning there’s no relationship from one tag to another.' ) . '

'; + + if ( 'link_category' == $taxonomy ) + $help .= '

' . __( 'You can delete Link Categories in the Bulk Action pulldown, but that action does not delete the links within the category. Instead, it moves them to the default Link Category.' ) . '

'; + else + $help .='

' . __( 'What’s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index.' ) . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => $help, + ) ); + + if ( 'category' == $taxonomy || 'post_tag' == $taxonomy ) { + if ( 'category' == $taxonomy ) + $help = '

' . __( 'When adding a new category on this screen, you’ll fill in the following fields:' ) . '

'; + else + $help = '

' . __( 'When adding a new tag on this screen, you’ll fill in the following fields:' ) . '

'; + + $help .= '
    ' . + '
  • ' . __( 'Name - The name is how it appears on your site.' ) . '
  • '; + + if ( ! global_terms_enabled() ) + $help .= '
  • ' . __( 'Slug - The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ) . '
  • '; + + if ( 'category' == $taxonomy ) + $help .= '
  • ' . __( 'Parent - Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.' ) . '
  • '; + + $help .= '
  • ' . __( 'Description - The description is not prominent by default; however, some themes may display it.' ) . '
  • ' . + '
' . + '

' . __( 'You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table.' ) . '

'; + + get_current_screen()->add_help_tab( array( + 'id' => 'adding-terms', + 'title' => 'category' == $taxonomy ? __( 'Adding Categories' ) : __( 'Adding Tags' ), + 'content' => $help, + ) ); + } + + $help = '

' . __( 'For more information:' ) . '

'; + + if ( 'category' == $taxonomy ) + $help .= '

' . __( 'Documentation on Categories' ) . '

'; + elseif ( 'link_category' == $taxonomy ) + $help .= '

' . __( 'Documentation on Link Categories' ) . '

'; + else + $help .= '

' . __( 'Documentation on Tags' ) . '

'; + + $help .= '

' . __('Support Forums') . '

'; + + get_current_screen()->set_help_sidebar( $help ); + + unset( $help ); +} + +require_once ('admin-header.php'); + +if ( !current_user_can($tax->cap->edit_terms) ) + wp_die( __('You are not allowed to edit this item.') ); + +$messages[1] = __('Item added.'); +$messages[2] = __('Item deleted.'); +$messages[3] = __('Item updated.'); +$messages[4] = __('Item not added.'); +$messages[5] = __('Item not updated.'); +$messages[6] = __('Items deleted.'); + +?> + +
+ +

' . __('Search results for “%s”') . '', esc_html( stripslashes($_REQUEST['s']) ) ); ?> +

+ + +

+ +
+ +
+ + + +search_box( $tax->labels->search_items, 'tag' ); ?> + +
+
+ +
+ +
+
+
+ + + +display(); ?> + +
+
+ + +
+

Note:
Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the category %s.'), apply_filters('the_category', get_cat_name(get_option('default_category')))) ?>

+ +

category to tag converter.'), 'import.php') ?>

+ +
+ +
+

tag to category converter'), 'import.php') ;?>.

+
+ + +
+
+ +
+
+ +labels->popular_items ) ) { + if ( current_user_can( $tax->cap->edit_terms ) ) + $tag_cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'echo' => false, 'link' => 'edit' ) ); + else + $tag_cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'echo' => false ) ); + + if ( $tag_cloud ) : + ?> +
+

labels->popular_items; ?>

+ +
+cap->edit_terms) ) { + // Back compat hooks. Deprecated in preference to {$taxonomy}_pre_add_form + if ( 'category' == $taxonomy ) + do_action('add_category_form_pre', (object)array('parent' => 0) ); + elseif ( 'link_category' == $taxonomy ) + do_action('add_link_category_form_pre', (object)array('parent' => 0) ); + else + do_action('add_tag_form_pre', $taxonomy); + + do_action($taxonomy . '_pre_add_form', $taxonomy); +?> + +
+

labels->add_new_item; ?>

+
+ + + + + + +
+ + +

+
+ +
+ + +

+
+ + +
+ + 0, 'hide_if_empty' => false, 'taxonomy' => $taxonomy, 'name' => 'parent', 'orderby' => 'name', 'hierarchical' => true, 'show_option_none' => __('None'))); ?> + +

+ +
+ +
+ + +

+
+ +labels->add_new_item, 'button' ); + +// Back compat hooks. Deprecated in preference to {$taxonomy}_add_form +if ( 'category' == $taxonomy ) + do_action('edit_category_form', (object)array('parent' => 0) ); +elseif ( 'link_category' == $taxonomy ) + do_action('edit_link_category_form', (object)array('parent' => 0) ); +else + do_action('add_tag_form', $taxonomy); + +do_action($taxonomy . '_add_form', $taxonomy); +?> +
+ + +
+
+ +
+
+ +inline_edit(); ?> + +cap->edit_posts ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + +$wp_list_table = _get_list_table('WP_Posts_List_Table'); +$pagenum = $wp_list_table->get_pagenum(); + +// Back-compat for viewing comments of an entry +foreach ( array( 'p', 'attachment_id', 'page_id' ) as $_redirect ) { + if ( ! empty( $_REQUEST[ $_redirect ] ) ) { + wp_redirect( admin_url( 'edit-comments.php?p=' . absint( $_REQUEST[ $_redirect ] ) ) ); + exit; + } +} +unset( $_redirect ); + +if ( 'post' != $post_type ) { + $parent_file = "edit.php?post_type=$post_type"; + $submenu_file = "edit.php?post_type=$post_type"; + $post_new_file = "post-new.php?post_type=$post_type"; +} else { + $parent_file = 'edit.php'; + $submenu_file = 'edit.php'; + $post_new_file = 'post-new.php'; +} + +$doaction = $wp_list_table->current_action(); + +if ( $doaction ) { + check_admin_referer('bulk-posts'); + + $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), wp_get_referer() ); + if ( ! $sendback ) + $sendback = admin_url( $parent_file ); + $sendback = add_query_arg( 'paged', $pagenum, $sendback ); + if ( strpos($sendback, 'post.php') !== false ) + $sendback = admin_url($post_new_file); + + if ( 'delete_all' == $doaction ) { + $post_status = preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['post_status']); + if ( get_post_status_object($post_status) ) // Check the post status exists first + $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type=%s AND post_status = %s", $post_type, $post_status ) ); + $doaction = 'delete'; + } elseif ( isset( $_REQUEST['media'] ) ) { + $post_ids = $_REQUEST['media']; + } elseif ( isset( $_REQUEST['ids'] ) ) { + $post_ids = explode( ',', $_REQUEST['ids'] ); + } elseif ( !empty( $_REQUEST['post'] ) ) { + $post_ids = array_map('intval', $_REQUEST['post']); + } + + if ( !isset( $post_ids ) ) { + wp_redirect( $sendback ); + exit; + } + + switch ( $doaction ) { + case 'trash': + $trashed = 0; + foreach( (array) $post_ids as $post_id ) { + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to move this item to the Trash.') ); + + if ( !wp_trash_post($post_id) ) + wp_die( __('Error in moving to Trash.') ); + + $trashed++; + } + $sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids) ), $sendback ); + break; + case 'untrash': + $untrashed = 0; + foreach( (array) $post_ids as $post_id ) { + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to restore this item from the Trash.') ); + + if ( !wp_untrash_post($post_id) ) + wp_die( __('Error in restoring from Trash.') ); + + $untrashed++; + } + $sendback = add_query_arg('untrashed', $untrashed, $sendback); + break; + case 'delete': + $deleted = 0; + foreach( (array) $post_ids as $post_id ) { + $post_del = & get_post($post_id); + + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to delete this item.') ); + + if ( $post_del->post_type == 'attachment' ) { + if ( ! wp_delete_attachment($post_id) ) + wp_die( __('Error in deleting...') ); + } else { + if ( !wp_delete_post($post_id) ) + wp_die( __('Error in deleting...') ); + } + $deleted++; + } + $sendback = add_query_arg('deleted', $deleted, $sendback); + break; + case 'edit': + if ( isset($_REQUEST['bulk_edit']) ) { + $done = bulk_edit_posts($_REQUEST); + + if ( is_array($done) ) { + $done['updated'] = count( $done['updated'] ); + $done['skipped'] = count( $done['skipped'] ); + $done['locked'] = count( $done['locked'] ); + $sendback = add_query_arg( $done, $sendback ); + } + } + break; + } + + $sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view'), $sendback ); + + wp_redirect($sendback); + exit(); +} elseif ( ! empty($_REQUEST['_wp_http_referer']) ) { + wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) ); + exit; +} + +$wp_list_table->prepare_items(); + +wp_enqueue_script('inline-edit-post'); + +$title = $post_type_object->labels->name; + +if ( 'post' == $post_type ) { + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __('This screen provides access to all of your posts. You can customize the display of this screen to suit your workflow.') . '

' + ) ); + get_current_screen()->add_help_tab( array( + 'id' => 'screen-content', + 'title' => __('Screen Content'), + 'content' => + '

' . __('You can customize the display of this screen’s contents in a number of ways:') . '

' . + '
    ' . + '
  • ' . __('You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab.') . '
  • ' . + '
  • ' . __('You can filter the list of posts by post status using the text links in the upper left to show All, Published, Draft, or Trashed posts. The default view is to show all posts.') . '
  • ' . + '
  • ' . __('You can view posts in a simple title list or with an excerpt. Choose the view you prefer by clicking on the icons at the top of the list on the right.') . '
  • ' . + '
  • ' . __('You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list.') . '
  • ' . + '
' + ) ); + get_current_screen()->add_help_tab( array( + 'id' => 'action-links', + 'title' => __('Available Actions'), + 'content' => + '

' . __('Hovering over a row in the posts list will display action links that allow you to manage your post. You can perform the following actions:') . '

' . + '
    ' . + '
  • ' . __('Edit takes you to the editing screen for that post. You can also reach that screen by clicking on the post title.') . '
  • ' . + '
  • ' . __('Quick Edit provides inline access to the metadata of your post, allowing you to update post details without leaving this screen.') . '
  • ' . + '
  • ' . __('Trash removes your post from this list and places it in the trash, from which you can permanently delete it.') . '
  • ' . + '
  • ' . __('Preview will show you what your draft post will look like if you publish it. View will take you to your live site to view the post. Which link is available depends on your post’s status.') . '
  • ' . + '
' + ) ); + get_current_screen()->add_help_tab( array( + 'id' => 'bulk-actions', + 'title' => __('Bulk Actions'), + 'content' => + '

' . __('You can also edit or move multiple posts to the trash at once. Select the posts you want to act on using the checkboxes, then select the action you want to take from the Bulk Actions menu and click Apply.') . '

' . + '

' . __('When using Bulk Edit, you can change the metadata (categories, author, etc.) for all selected posts at once. To remove a post from the grouping, just click the x next to its name in the Bulk Edit area that appears.') . '

' + ) ); + + get_current_screen()->set_help_sidebar( + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Managing Posts') . '

' . + '

' . __('Support Forums') . '

' + ); + +} elseif ( 'page' == $post_type ) { + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

' . __('Pages are similar to posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest pages under other pages by making one the “Parent” of the other, creating a group of pages.') . '

' + ) ); + get_current_screen()->add_help_tab( array( + 'id' => 'managing-pages', + 'title' => __('Managing Pages'), + 'content' => + '

' . __('Managing pages is very similar to managing posts, and the screens can be customized in the same way.') . '

' . + '

' . __('You can also perform the same types of actions, including narrowing the list by using the filters, acting on a page using the action links that appear when you hover over a row, or using the Bulk Actions menu to edit the metadata for multiple pages at once.') . '

' + ) ); + + get_current_screen()->set_help_sidebar( + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Managing Pages') . '

' . + '

' . __('Support Forums') . '

' + ); +} + +add_screen_option( 'per_page', array('label' => $title, 'default' => 20) ); + +require_once('./admin-header.php'); +?> +
+ +

labels->name ); ?> labels->add_new); ?> ' . __('Search results for “%s”') . '', get_search_query() ); ?> +

+ + +

+' . __('Undo') . ''; +} + +if ( isset( $_REQUEST['untrashed'] ) && $untrashed = absint( $_REQUEST['untrashed'] ) ) { + $messages[] = sprintf( _n( 'Item restored from the Trash.', '%s items restored from the Trash.', $untrashed ), number_format_i18n( $untrashed ) ); +} + +if ( $messages ) + echo join( ' ', $messages ); +unset( $messages ); + +$_SERVER['REQUEST_URI'] = remove_query_arg( array( 'locked', 'skipped', 'updated', 'deleted', 'trashed', 'untrashed' ), $_SERVER['REQUEST_URI'] ); +?> +

+ + +views(); ?> + +
+ +search_box( $post_type_object->labels->search_items, 'post' ); ?> + + + + + + + +display(); ?> + +
+ +has_items() ) + $wp_list_table->inline_edit(); +?> + +
+
+
+ + + +add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => '

' . __('You can export a file of your site’s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to limit the export by category, author, date range by month, or publishing status.') . '

' . + '

' . __('Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format.') . '

', +) ); + +get_current_screen()->set_help_sidebar( + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Export') . '

' . + '

' . __('Support Forums') . '

' +); + +if ( isset( $_GET['download'] ) ) { + $args = array(); + + if ( ! isset( $_GET['content'] ) || 'all' == $_GET['content'] ) { + $args['content'] = 'all'; + } else if ( 'posts' == $_GET['content'] ) { + $args['content'] = 'post'; + + if ( $_GET['cat'] ) + $args['category'] = (int) $_GET['cat']; + + if ( $_GET['post_author'] ) + $args['author'] = (int) $_GET['post_author']; + + if ( $_GET['post_start_date'] || $_GET['post_end_date'] ) { + $args['start_date'] = $_GET['post_start_date']; + $args['end_date'] = $_GET['post_end_date']; + } + + if ( $_GET['post_status'] ) + $args['status'] = $_GET['post_status']; + } else if ( 'pages' == $_GET['content'] ) { + $args['content'] = 'page'; + + if ( $_GET['page_author'] ) + $args['author'] = (int) $_GET['page_author']; + + if ( $_GET['page_start_date'] || $_GET['page_end_date'] ) { + $args['start_date'] = $_GET['page_start_date']; + $args['end_date'] = $_GET['page_end_date']; + } + + if ( $_GET['page_status'] ) + $args['status'] = $_GET['page_status']; + } else { + $args['content'] = $_GET['content']; + } + + export_wp( $args ); + die(); +} + +require_once ('admin-header.php'); + +function export_date_options( $post_type = 'post' ) { + global $wpdb, $wp_locale; + + $months = $wpdb->get_results( $wpdb->prepare( " + SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month + FROM $wpdb->posts + WHERE post_type = %s AND post_status != 'auto-draft' + ORDER BY post_date DESC + ", $post_type ) ); + + $month_count = count( $months ); + if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) + return; + + foreach ( $months as $date ) { + if ( 0 == $date->year ) + continue; + + $month = zeroise( $date->month, 2 ); + echo ''; + } +} +?> + +
+ +

+ +

+

+

+ +

+
+ +

+

+ +

+
    +
  • + + __('All') ) ); ?> +
  • +
  • + +get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'post'" ); + wp_dropdown_users( array( 'include' => $authors, 'name' => 'post_author', 'multi' => true, 'show_option_all' => __('All') ) ); +?> +
  • +
  • + + + +
  • +
  • + + +
  • +
+ +

+
    +
  • + +get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'page'" ); + wp_dropdown_users( array( 'include' => $authors, 'name' => 'page_author', 'multi' => true, 'show_option_all' => __('All') ) ); +?> +
  • +
  • + + + +
  • +
  • + + +
  • +
+ + false, 'can_export' => true ), 'objects' ) as $post_type ) : ?> +

+ + + +
+
+ + diff --git a/wp-admin/freedoms.php b/wp-admin/freedoms.php new file mode 100644 index 0000000..99251dc --- /dev/null +++ b/wp-admin/freedoms.php @@ -0,0 +1,57 @@ + +
+ +

+ +
+ +
+ + + +

license, the GPL.' ), 'http://wordpress.org/about/license/' ); ?>

+ +
    +
  1. +
  2. +
  3. +
  4. +
+ +

check out our trademark guidelines first.' ), 'http://wordpressfoundation.org/trademark-policy/' ); ?>

+ +

plugins and themes there. If you get a plugin or theme from another source, make sure to ask them if it’s GPL first. If they don’t respect the WordPress license, we don’t recommend them.' ), $plugins_url, $themes_url, 'http://wordpress.org/about/license/' ); ?>

+ +

Free Software Foundation.' ); ?>

+ +
+ diff --git a/wp-admin/gears-manifest.php b/wp-admin/gears-manifest.php new file mode 100644 index 0000000..8feb485 --- /dev/null +++ b/wp-admin/gears-manifest.php @@ -0,0 +1,51 @@ + +{ +"betaManifestVersion" : 1, +"version" : "", +"entries" : [ + + +]} diff --git a/wp-admin/images/align-center.png b/wp-admin/images/align-center.png new file mode 100644 index 0000000..a412226 Binary files /dev/null and b/wp-admin/images/align-center.png differ diff --git a/wp-admin/images/align-left.png b/wp-admin/images/align-left.png new file mode 100644 index 0000000..2e433fc Binary files /dev/null and b/wp-admin/images/align-left.png differ diff --git a/wp-admin/images/align-none.png b/wp-admin/images/align-none.png new file mode 100644 index 0000000..5fb9af2 Binary files /dev/null and b/wp-admin/images/align-none.png differ diff --git a/wp-admin/images/align-right.png b/wp-admin/images/align-right.png new file mode 100644 index 0000000..9b92578 Binary files /dev/null and b/wp-admin/images/align-right.png differ diff --git a/wp-admin/images/archive-link.png b/wp-admin/images/archive-link.png new file mode 100644 index 0000000..4c70895 Binary files /dev/null and b/wp-admin/images/archive-link.png differ diff --git a/wp-admin/images/arrows-dark-vs.png b/wp-admin/images/arrows-dark-vs.png new file mode 100644 index 0000000..0d1dc7a Binary files /dev/null and b/wp-admin/images/arrows-dark-vs.png differ diff --git a/wp-admin/images/arrows-dark.png b/wp-admin/images/arrows-dark.png new file mode 100644 index 0000000..29f814d Binary files /dev/null and b/wp-admin/images/arrows-dark.png differ diff --git a/wp-admin/images/arrows-vs.png b/wp-admin/images/arrows-vs.png new file mode 100644 index 0000000..d2536b9 Binary files /dev/null and b/wp-admin/images/arrows-vs.png differ diff --git a/wp-admin/images/arrows.png b/wp-admin/images/arrows.png new file mode 100644 index 0000000..775a7a0 Binary files /dev/null and b/wp-admin/images/arrows.png differ diff --git a/wp-admin/images/blue-grad.png b/wp-admin/images/blue-grad.png new file mode 100644 index 0000000..868a657 Binary files /dev/null and b/wp-admin/images/blue-grad.png differ diff --git a/wp-admin/images/bubble_bg-rtl.gif b/wp-admin/images/bubble_bg-rtl.gif new file mode 100644 index 0000000..5cfbefe Binary files /dev/null and b/wp-admin/images/bubble_bg-rtl.gif differ diff --git a/wp-admin/images/bubble_bg.gif b/wp-admin/images/bubble_bg.gif new file mode 100644 index 0000000..315ab52 Binary files /dev/null and b/wp-admin/images/bubble_bg.gif differ diff --git a/wp-admin/images/button-grad-active.png b/wp-admin/images/button-grad-active.png new file mode 100644 index 0000000..0177e5b Binary files /dev/null and b/wp-admin/images/button-grad-active.png differ diff --git a/wp-admin/images/button-grad.png b/wp-admin/images/button-grad.png new file mode 100644 index 0000000..3f96366 Binary files /dev/null and b/wp-admin/images/button-grad.png differ diff --git a/wp-admin/images/comment-grey-bubble.png b/wp-admin/images/comment-grey-bubble.png new file mode 100644 index 0000000..6f1e765 Binary files /dev/null and b/wp-admin/images/comment-grey-bubble.png differ diff --git a/wp-admin/images/date-button.gif b/wp-admin/images/date-button.gif new file mode 100644 index 0000000..7ee32cb Binary files /dev/null and b/wp-admin/images/date-button.gif differ diff --git a/wp-admin/images/ed-bg-vs.gif b/wp-admin/images/ed-bg-vs.gif new file mode 100644 index 0000000..be41c6c Binary files /dev/null and b/wp-admin/images/ed-bg-vs.gif differ diff --git a/wp-admin/images/ed-bg.gif b/wp-admin/images/ed-bg.gif new file mode 100644 index 0000000..a00467c Binary files /dev/null and b/wp-admin/images/ed-bg.gif differ diff --git a/wp-admin/images/fade-butt.png b/wp-admin/images/fade-butt.png new file mode 100644 index 0000000..42f08b7 Binary files /dev/null and b/wp-admin/images/fade-butt.png differ diff --git a/wp-admin/images/fav-arrow-rtl.gif b/wp-admin/images/fav-arrow-rtl.gif new file mode 100644 index 0000000..e9aeba0 Binary files /dev/null and b/wp-admin/images/fav-arrow-rtl.gif differ diff --git a/wp-admin/images/fav-arrow.gif b/wp-admin/images/fav-arrow.gif new file mode 100644 index 0000000..28fc6bb Binary files /dev/null and b/wp-admin/images/fav-arrow.gif differ diff --git a/wp-admin/images/fav-vs.png b/wp-admin/images/fav-vs.png new file mode 100644 index 0000000..51a2186 Binary files /dev/null and b/wp-admin/images/fav-vs.png differ diff --git a/wp-admin/images/fav.png b/wp-admin/images/fav.png new file mode 100644 index 0000000..f3cbe54 Binary files /dev/null and b/wp-admin/images/fav.png differ diff --git a/wp-admin/images/generic.png b/wp-admin/images/generic.png new file mode 100644 index 0000000..3bcbc04 Binary files /dev/null and b/wp-admin/images/generic.png differ diff --git a/wp-admin/images/gray-grad.png b/wp-admin/images/gray-grad.png new file mode 100644 index 0000000..99c45ce Binary files /dev/null and b/wp-admin/images/gray-grad.png differ diff --git a/wp-admin/images/icons32-2x.png b/wp-admin/images/icons32-2x.png new file mode 100644 index 0000000..3cccb7b Binary files /dev/null and b/wp-admin/images/icons32-2x.png differ diff --git a/wp-admin/images/icons32-vs-2x.png b/wp-admin/images/icons32-vs-2x.png new file mode 100644 index 0000000..8975737 Binary files /dev/null and b/wp-admin/images/icons32-vs-2x.png differ diff --git a/wp-admin/images/icons32-vs.png b/wp-admin/images/icons32-vs.png new file mode 100644 index 0000000..c99dff2 Binary files /dev/null and b/wp-admin/images/icons32-vs.png differ diff --git a/wp-admin/images/icons32.png b/wp-admin/images/icons32.png new file mode 100644 index 0000000..4b26eb0 Binary files /dev/null and b/wp-admin/images/icons32.png differ diff --git a/wp-admin/images/imgedit-icons.png b/wp-admin/images/imgedit-icons.png new file mode 100644 index 0000000..5f1f585 Binary files /dev/null and b/wp-admin/images/imgedit-icons.png differ diff --git a/wp-admin/images/list.png b/wp-admin/images/list.png new file mode 100644 index 0000000..827556e Binary files /dev/null and b/wp-admin/images/list.png differ diff --git a/wp-admin/images/loading-publish.gif b/wp-admin/images/loading-publish.gif new file mode 100644 index 0000000..4282004 Binary files /dev/null and b/wp-admin/images/loading-publish.gif differ diff --git a/wp-admin/images/loading.gif b/wp-admin/images/loading.gif new file mode 100644 index 0000000..85b99d4 Binary files /dev/null and b/wp-admin/images/loading.gif differ diff --git a/wp-admin/images/logo-ghost.png b/wp-admin/images/logo-ghost.png new file mode 100644 index 0000000..58335f7 Binary files /dev/null and b/wp-admin/images/logo-ghost.png differ diff --git a/wp-admin/images/logo.gif b/wp-admin/images/logo.gif new file mode 100644 index 0000000..8024d48 Binary files /dev/null and b/wp-admin/images/logo.gif differ diff --git a/wp-admin/images/marker.png b/wp-admin/images/marker.png new file mode 100644 index 0000000..3929bbb Binary files /dev/null and b/wp-admin/images/marker.png differ diff --git a/wp-admin/images/mask.png b/wp-admin/images/mask.png new file mode 100644 index 0000000..b0a4d40 Binary files /dev/null and b/wp-admin/images/mask.png differ diff --git a/wp-admin/images/media-button-image.gif b/wp-admin/images/media-button-image.gif new file mode 100644 index 0000000..5e7e426 Binary files /dev/null and b/wp-admin/images/media-button-image.gif differ diff --git a/wp-admin/images/media-button-music.gif b/wp-admin/images/media-button-music.gif new file mode 100644 index 0000000..0254a08 Binary files /dev/null and b/wp-admin/images/media-button-music.gif differ diff --git a/wp-admin/images/media-button-other.gif b/wp-admin/images/media-button-other.gif new file mode 100644 index 0000000..414a957 Binary files /dev/null and b/wp-admin/images/media-button-other.gif differ diff --git a/wp-admin/images/media-button-video.gif b/wp-admin/images/media-button-video.gif new file mode 100644 index 0000000..50ac6e0 Binary files /dev/null and b/wp-admin/images/media-button-video.gif differ diff --git a/wp-admin/images/media-button.png b/wp-admin/images/media-button.png new file mode 100644 index 0000000..8255073 Binary files /dev/null and b/wp-admin/images/media-button.png differ diff --git a/wp-admin/images/menu-2x.png b/wp-admin/images/menu-2x.png new file mode 100644 index 0000000..c8f5da9 Binary files /dev/null and b/wp-admin/images/menu-2x.png differ diff --git a/wp-admin/images/menu-arrow-frame-rtl.png b/wp-admin/images/menu-arrow-frame-rtl.png new file mode 100644 index 0000000..b0e120b Binary files /dev/null and b/wp-admin/images/menu-arrow-frame-rtl.png differ diff --git a/wp-admin/images/menu-arrow-frame.png b/wp-admin/images/menu-arrow-frame.png new file mode 100644 index 0000000..33d19d8 Binary files /dev/null and b/wp-admin/images/menu-arrow-frame.png differ diff --git a/wp-admin/images/menu-arrows.gif b/wp-admin/images/menu-arrows.gif new file mode 100644 index 0000000..ec854c1 Binary files /dev/null and b/wp-admin/images/menu-arrows.gif differ diff --git a/wp-admin/images/menu-bits-rtl-vs.gif b/wp-admin/images/menu-bits-rtl-vs.gif new file mode 100644 index 0000000..422cc8d Binary files /dev/null and b/wp-admin/images/menu-bits-rtl-vs.gif differ diff --git a/wp-admin/images/menu-bits-rtl.gif b/wp-admin/images/menu-bits-rtl.gif new file mode 100644 index 0000000..b193af0 Binary files /dev/null and b/wp-admin/images/menu-bits-rtl.gif differ diff --git a/wp-admin/images/menu-bits-vs.gif b/wp-admin/images/menu-bits-vs.gif new file mode 100644 index 0000000..30f0bc8 Binary files /dev/null and b/wp-admin/images/menu-bits-vs.gif differ diff --git a/wp-admin/images/menu-bits.gif b/wp-admin/images/menu-bits.gif new file mode 100644 index 0000000..218e184 Binary files /dev/null and b/wp-admin/images/menu-bits.gif differ diff --git a/wp-admin/images/menu-dark-rtl-vs.gif b/wp-admin/images/menu-dark-rtl-vs.gif new file mode 100644 index 0000000..14ed2ab Binary files /dev/null and b/wp-admin/images/menu-dark-rtl-vs.gif differ diff --git a/wp-admin/images/menu-dark-rtl.gif b/wp-admin/images/menu-dark-rtl.gif new file mode 100644 index 0000000..7bfd25d Binary files /dev/null and b/wp-admin/images/menu-dark-rtl.gif differ diff --git a/wp-admin/images/menu-dark-vs.gif b/wp-admin/images/menu-dark-vs.gif new file mode 100644 index 0000000..0b448aa Binary files /dev/null and b/wp-admin/images/menu-dark-vs.gif differ diff --git a/wp-admin/images/menu-dark.gif b/wp-admin/images/menu-dark.gif new file mode 100644 index 0000000..739b888 Binary files /dev/null and b/wp-admin/images/menu-dark.gif differ diff --git a/wp-admin/images/menu-shadow-rtl.png b/wp-admin/images/menu-shadow-rtl.png new file mode 100644 index 0000000..a750771 Binary files /dev/null and b/wp-admin/images/menu-shadow-rtl.png differ diff --git a/wp-admin/images/menu-shadow.png b/wp-admin/images/menu-shadow.png new file mode 100644 index 0000000..b0883a8 Binary files /dev/null and b/wp-admin/images/menu-shadow.png differ diff --git a/wp-admin/images/menu-vs.png b/wp-admin/images/menu-vs.png new file mode 100644 index 0000000..60272ee Binary files /dev/null and b/wp-admin/images/menu-vs.png differ diff --git a/wp-admin/images/menu.png b/wp-admin/images/menu.png new file mode 100644 index 0000000..bbb1c50 Binary files /dev/null and b/wp-admin/images/menu.png differ diff --git a/wp-admin/images/no.png b/wp-admin/images/no.png new file mode 100644 index 0000000..e2db55f Binary files /dev/null and b/wp-admin/images/no.png differ diff --git a/wp-admin/images/press-this.png b/wp-admin/images/press-this.png new file mode 100644 index 0000000..1241562 Binary files /dev/null and b/wp-admin/images/press-this.png differ diff --git a/wp-admin/images/required.gif b/wp-admin/images/required.gif new file mode 100644 index 0000000..119350f Binary files /dev/null and b/wp-admin/images/required.gif differ diff --git a/wp-admin/images/resize-rtl.gif b/wp-admin/images/resize-rtl.gif new file mode 100644 index 0000000..95e7b32 Binary files /dev/null and b/wp-admin/images/resize-rtl.gif differ diff --git a/wp-admin/images/resize.gif b/wp-admin/images/resize.gif new file mode 100644 index 0000000..6a1b41c Binary files /dev/null and b/wp-admin/images/resize.gif differ diff --git a/wp-admin/images/screen-options-toggle-vs.gif b/wp-admin/images/screen-options-toggle-vs.gif new file mode 100644 index 0000000..3b9b8af Binary files /dev/null and b/wp-admin/images/screen-options-toggle-vs.gif differ diff --git a/wp-admin/images/screen-options-toggle.gif b/wp-admin/images/screen-options-toggle.gif new file mode 100644 index 0000000..ed0a5fd Binary files /dev/null and b/wp-admin/images/screen-options-toggle.gif differ diff --git a/wp-admin/images/screenshots/captions-1.png b/wp-admin/images/screenshots/captions-1.png new file mode 100644 index 0000000..73dbb48 Binary files /dev/null and b/wp-admin/images/screenshots/captions-1.png differ diff --git a/wp-admin/images/screenshots/captions-2.png b/wp-admin/images/screenshots/captions-2.png new file mode 100644 index 0000000..653ed54 Binary files /dev/null and b/wp-admin/images/screenshots/captions-2.png differ diff --git a/wp-admin/images/screenshots/flex-header-1.png b/wp-admin/images/screenshots/flex-header-1.png new file mode 100644 index 0000000..371a284 Binary files /dev/null and b/wp-admin/images/screenshots/flex-header-1.png differ diff --git a/wp-admin/images/screenshots/flex-header-2.png b/wp-admin/images/screenshots/flex-header-2.png new file mode 100644 index 0000000..5cee055 Binary files /dev/null and b/wp-admin/images/screenshots/flex-header-2.png differ diff --git a/wp-admin/images/screenshots/flex-header-3.png b/wp-admin/images/screenshots/flex-header-3.png new file mode 100644 index 0000000..a45f1c9 Binary files /dev/null and b/wp-admin/images/screenshots/flex-header-3.png differ diff --git a/wp-admin/images/screenshots/flex-header-media-library.png b/wp-admin/images/screenshots/flex-header-media-library.png new file mode 100644 index 0000000..d63012d Binary files /dev/null and b/wp-admin/images/screenshots/flex-header-media-library.png differ diff --git a/wp-admin/images/screenshots/theme-customizer.png b/wp-admin/images/screenshots/theme-customizer.png new file mode 100644 index 0000000..fa62d88 Binary files /dev/null and b/wp-admin/images/screenshots/theme-customizer.png differ diff --git a/wp-admin/images/screenshots/twitter-embed-1.png b/wp-admin/images/screenshots/twitter-embed-1.png new file mode 100644 index 0000000..d79ee1d Binary files /dev/null and b/wp-admin/images/screenshots/twitter-embed-1.png differ diff --git a/wp-admin/images/screenshots/twitter-embed-2.png b/wp-admin/images/screenshots/twitter-embed-2.png new file mode 100644 index 0000000..14da4b8 Binary files /dev/null and b/wp-admin/images/screenshots/twitter-embed-2.png differ diff --git a/wp-admin/images/se.png b/wp-admin/images/se.png new file mode 100644 index 0000000..c9d8fdd Binary files /dev/null and b/wp-admin/images/se.png differ diff --git a/wp-admin/images/sort.gif b/wp-admin/images/sort.gif new file mode 100644 index 0000000..2a5a6e8 Binary files /dev/null and b/wp-admin/images/sort.gif differ diff --git a/wp-admin/images/stars-rtl.png b/wp-admin/images/stars-rtl.png new file mode 100644 index 0000000..c6330b6 Binary files /dev/null and b/wp-admin/images/stars-rtl.png differ diff --git a/wp-admin/images/stars.png b/wp-admin/images/stars.png new file mode 100644 index 0000000..98e32a5 Binary files /dev/null and b/wp-admin/images/stars.png differ diff --git a/wp-admin/images/toggle-arrow-rtl.gif b/wp-admin/images/toggle-arrow-rtl.gif new file mode 100644 index 0000000..c96b944 Binary files /dev/null and b/wp-admin/images/toggle-arrow-rtl.gif differ diff --git a/wp-admin/images/toggle-arrow.gif b/wp-admin/images/toggle-arrow.gif new file mode 100644 index 0000000..86cb448 Binary files /dev/null and b/wp-admin/images/toggle-arrow.gif differ diff --git a/wp-admin/images/upload-classic.png b/wp-admin/images/upload-classic.png new file mode 100644 index 0000000..beda3e4 Binary files /dev/null and b/wp-admin/images/upload-classic.png differ diff --git a/wp-admin/images/upload-fresh.png b/wp-admin/images/upload-fresh.png new file mode 100644 index 0000000..92fd355 Binary files /dev/null and b/wp-admin/images/upload-fresh.png differ diff --git a/wp-admin/images/wheel.png b/wp-admin/images/wheel.png new file mode 100644 index 0000000..97b343d Binary files /dev/null and b/wp-admin/images/wheel.png differ diff --git a/wp-admin/images/white-grad-active.png b/wp-admin/images/white-grad-active.png new file mode 100644 index 0000000..0478015 Binary files /dev/null and b/wp-admin/images/white-grad-active.png differ diff --git a/wp-admin/images/white-grad.png b/wp-admin/images/white-grad.png new file mode 100644 index 0000000..aaf57aa Binary files /dev/null and b/wp-admin/images/white-grad.png differ diff --git a/wp-admin/images/widgets-arrow-vs.gif b/wp-admin/images/widgets-arrow-vs.gif new file mode 100644 index 0000000..c6398e6 Binary files /dev/null and b/wp-admin/images/widgets-arrow-vs.gif differ diff --git a/wp-admin/images/widgets-arrow.gif b/wp-admin/images/widgets-arrow.gif new file mode 100644 index 0000000..69e0352 Binary files /dev/null and b/wp-admin/images/widgets-arrow.gif differ diff --git a/wp-admin/images/wordpress-logo-2x.png b/wp-admin/images/wordpress-logo-2x.png new file mode 100644 index 0000000..6679e11 Binary files /dev/null and b/wp-admin/images/wordpress-logo-2x.png differ diff --git a/wp-admin/images/wordpress-logo.png b/wp-admin/images/wordpress-logo.png new file mode 100644 index 0000000..849a2d0 Binary files /dev/null and b/wp-admin/images/wordpress-logo.png differ diff --git a/wp-admin/images/wp-badge-2x.png b/wp-admin/images/wp-badge-2x.png new file mode 100644 index 0000000..6dfb577 Binary files /dev/null and b/wp-admin/images/wp-badge-2x.png differ diff --git a/wp-admin/images/wp-badge.png b/wp-admin/images/wp-badge.png new file mode 100644 index 0000000..79cc1e1 Binary files /dev/null and b/wp-admin/images/wp-badge.png differ diff --git a/wp-admin/images/wp-logo-vs.png b/wp-admin/images/wp-logo-vs.png new file mode 100644 index 0000000..13f3fa6 Binary files /dev/null and b/wp-admin/images/wp-logo-vs.png differ diff --git a/wp-admin/images/wp-logo.png b/wp-admin/images/wp-logo.png new file mode 100644 index 0000000..224f7c8 Binary files /dev/null and b/wp-admin/images/wp-logo.png differ diff --git a/wp-admin/images/wpspin_dark.gif b/wp-admin/images/wpspin_dark.gif new file mode 100644 index 0000000..daebe0d Binary files /dev/null and b/wp-admin/images/wpspin_dark.gif differ diff --git a/wp-admin/images/wpspin_light.gif b/wp-admin/images/wpspin_light.gif new file mode 100644 index 0000000..e10b97f Binary files /dev/null and b/wp-admin/images/wpspin_light.gif differ diff --git a/wp-admin/images/xit.gif b/wp-admin/images/xit.gif new file mode 100644 index 0000000..80c251f Binary files /dev/null and b/wp-admin/images/xit.gif differ diff --git a/wp-admin/images/yes.png b/wp-admin/images/yes.png new file mode 100644 index 0000000..2f86f0a Binary files /dev/null and b/wp-admin/images/yes.png differ diff --git a/wp-admin/import.php b/wp-admin/import.php new file mode 100644 index 0000000..a9de265 --- /dev/null +++ b/wp-admin/import.php @@ -0,0 +1,139 @@ +add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => '

' . __('This screen lists links to plugins to import data from blogging/content management platforms. Choose the platform you want to import from, and click Install Now when you are prompted in the popup window. If your platform is not listed, click the link to search the plugin directory for other importer plugins to see if there is one for your platform.') . '

' . + '

' . __('In previous versions of WordPress, all importers were built-in. They have been turned into plugins since most people only use them once or infrequently.') . '

', +) ); + +get_current_screen()->set_help_sidebar( + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Import') . '

' . + '

' . __('Support Forums') . '

' +); + +$popular_importers = array(); +if ( current_user_can('install_plugins') ) + $popular_importers = array( + 'blogger' => array( __('Blogger'), __('Install the Blogger importer to import posts, comments, and users from a Blogger blog.'), 'install' ), + 'wpcat2tag' => array(__('Categories and Tags Converter'), __('Install the category/tag converter to convert existing categories to tags or tags to categories, selectively.'), 'install', 'wp-cat2tag' ), + 'livejournal' => array( __( 'LiveJournal' ), __( 'Install the LiveJournal importer to import posts from LiveJournal using their API.' ), 'install' ), + 'movabletype' => array( __('Movable Type and TypePad'), __('Install the Movable Type importer to import posts and comments from a Movable Type or TypePad blog.'), 'install', 'mt' ), + 'opml' => array( __('Blogroll'), __('Install the blogroll importer to import links in OPML format.'), 'install' ), + 'rss' => array( __('RSS'), __('Install the RSS importer to import posts from an RSS feed.'), 'install' ), + 'tumblr' => array( __('Tumblr'), __('Install the Tumblr importer to import posts & media from Tumblr using their API.'), 'install' ), + 'wordpress' => array( 'WordPress', __('Install the WordPress importer to import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.'), 'install' ) + ); + +if ( ! empty( $_GET['invalid'] ) && !empty($popular_importers[$_GET['invalid']][3]) ) { + wp_redirect( admin_url('import.php?import=' . $popular_importers[$_GET['invalid']][3]) ); + exit; +} + +add_thickbox(); +wp_enqueue_script( 'plugin-install' ); + +require_once ('admin-header.php'); +$parent_file = 'tools.php'; +?> + +
+ +

+ +

%s importer is invalid or is not installed.'), esc_html( $_GET['invalid'] ) ); ?>

+ +

+ + $pop_data ) { + if ( isset( $importers[$pop_importer] ) ) + continue; + if ( isset( $pop_data[3] ) && isset( $importers[ $pop_data[3] ] ) ) + continue; + + $importers[$pop_importer] = $popular_importers[$pop_importer]; +} + +if ( empty($importers) ) { + echo '

'.__('No importers are available.').'

'; // TODO: make more helpful +} else { + uasort($importers, create_function('$a, $b', 'return strcmp($a[0], $b[0]);')); +?> + + + $data) { + $style = ('class="alternate"' == $style || 'class="alternate active"' == $style) ? '' : 'alternate'; + $action = ''; + if ( 'install' == $data[2] ) { + $plugin_slug = $id . '-importer'; + if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) { + // Looks like Importer is installed, But not active + $plugins = get_plugins( '/' . $plugin_slug ); + if ( !empty($plugins) ) { + $keys = array_keys($plugins); + $plugin_file = $plugin_slug . '/' . $keys[0]; + $action = '' . $data[0] . ''; + } + } + if ( empty($action) ) { + if ( is_main_site() ) { + $action = '' . $data[0] . ''; + } else { + $action = $data[0]; + $data[1] = sprintf( __( 'This importer is not installed. Please install importers from the main site.' ), get_admin_url( $current_site->blog_id, 'import.php' ) ); + } + } + } else { + $action = "{$data[0]}"; + } + + if ($style != '') + $style = 'class="'.$style.'"'; + echo " + + + + "; + } +?> + +
$action{$data[1]}
+' . sprintf( __('If the importer you need is not listed, search the plugin directory to see if an importer is available.'), esc_url( network_admin_url( 'plugin-install.php?tab=search&type=tag&s=importer' ) ) ) . '

'; +?> + +
+ +ALERT: You are logged out! Could not save draft. Please log in again.'), wp_login_url() ); + $x = new WP_Ajax_Response( array( + 'what' => 'autosave', + 'id' => $id, + 'data' => $message + ) ); + $x->send(); +} + +/* + * GET-based Ajax handlers. + */ +function wp_ajax_fetch_list() { + global $current_screen, $wp_list_table; + + $list_class = $_GET['list_args']['class']; + check_ajax_referer( "fetch-list-$list_class", '_ajax_fetch_list_nonce' ); + + $current_screen = convert_to_screen( $_GET['list_args']['screen']['id'] ); + + define( 'WP_NETWORK_ADMIN', $current_screen->is_network ); + define( 'WP_USER_ADMIN', $current_screen->is_user ); + + $wp_list_table = _get_list_table( $list_class ); + if ( ! $wp_list_table ) + wp_die( 0 ); + + if ( ! $wp_list_table->ajax_user_can() ) + wp_die( -1 ); + + $wp_list_table->ajax_response(); + + wp_die( 0 ); +} +function wp_ajax_ajax_tag_search() { + global $wpdb; + + if ( isset( $_GET['tax'] ) ) { + $taxonomy = sanitize_key( $_GET['tax'] ); + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax ) + wp_die( 0 ); + if ( ! current_user_can( $tax->cap->assign_terms ) ) + wp_die( -1 ); + } else { + wp_die( 0 ); + } + + $s = stripslashes( $_GET['q'] ); + + $comma = _x( ',', 'tag delimiter' ); + if ( ',' !== $comma ) + $s = str_replace( $comma, ',', $s ); + if ( false !== strpos( $s, ',' ) ) { + $s = explode( ',', $s ); + $s = $s[count( $s ) - 1]; + } + $s = trim( $s ); + if ( strlen( $s ) < 2 ) + wp_die(); // require 2 chars for matching + + $results = $wpdb->get_col( $wpdb->prepare( "SELECT t.name FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.name LIKE (%s)", $taxonomy, '%' . like_escape( $s ) . '%' ) ); + + echo join( $results, "\n" ); + wp_die(); +} + +function wp_ajax_wp_compression_test() { + if ( !current_user_can( 'manage_options' ) ) + wp_die( -1 ); + + if ( ini_get('zlib.output_compression') || 'ob_gzhandler' == ini_get('output_handler') ) { + update_site_option('can_compress_scripts', 0); + wp_die( 0 ); + } + + if ( isset($_GET['test']) ) { + header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-cache, must-revalidate, max-age=0' ); + header( 'Pragma: no-cache' ); + header('Content-Type: application/x-javascript; charset=UTF-8'); + $force_gzip = ( defined('ENFORCE_GZIP') && ENFORCE_GZIP ); + $test_str = '"wpCompressionTest Lorem ipsum dolor sit amet consectetuer mollis sapien urna ut a. Eu nonummy condimentum fringilla tempor pretium platea vel nibh netus Maecenas. Hac molestie amet justo quis pellentesque est ultrices interdum nibh Morbi. Cras mattis pretium Phasellus ante ipsum ipsum ut sociis Suspendisse Lorem. Ante et non molestie. Porta urna Vestibulum egestas id congue nibh eu risus gravida sit. Ac augue auctor Ut et non a elit massa id sodales. Elit eu Nulla at nibh adipiscing mattis lacus mauris at tempus. Netus nibh quis suscipit nec feugiat eget sed lorem et urna. Pellentesque lacus at ut massa consectetuer ligula ut auctor semper Pellentesque. Ut metus massa nibh quam Curabitur molestie nec mauris congue. Volutpat molestie elit justo facilisis neque ac risus Ut nascetur tristique. Vitae sit lorem tellus et quis Phasellus lacus tincidunt nunc Fusce. Pharetra wisi Suspendisse mus sagittis libero lacinia Integer consequat ac Phasellus. Et urna ac cursus tortor aliquam Aliquam amet tellus volutpat Vestibulum. Justo interdum condimentum In augue congue tellus sollicitudin Quisque quis nibh."'; + + if ( 1 == $_GET['test'] ) { + echo $test_str; + wp_die(); + } elseif ( 2 == $_GET['test'] ) { + if ( !isset($_SERVER['HTTP_ACCEPT_ENCODING']) ) + wp_die( -1 ); + if ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) { + header('Content-Encoding: deflate'); + $out = gzdeflate( $test_str, 1 ); + } elseif ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) { + header('Content-Encoding: gzip'); + $out = gzencode( $test_str, 1 ); + } else { + wp_die( -1 ); + } + echo $out; + wp_die(); + } elseif ( 'no' == $_GET['test'] ) { + update_site_option('can_compress_scripts', 0); + } elseif ( 'yes' == $_GET['test'] ) { + update_site_option('can_compress_scripts', 1); + } + } + + wp_die( 0 ); +} + +function wp_ajax_imgedit_preview() { + $post_id = intval($_GET['postid']); + if ( empty($post_id) || !current_user_can('edit_post', $post_id) ) + wp_die( -1 ); + + check_ajax_referer( "image_editor-$post_id" ); + + include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); + if ( ! stream_preview_image($post_id) ) + wp_die( -1 ); + + wp_die(); +} + +function wp_ajax_oembed_cache() { + global $wp_embed; + + $return = ( $wp_embed->cache_oembed( $_GET['post'] ) ) ? '1' : '0'; + wp_die( $return ); +} + +function wp_ajax_autocomplete_user() { + if ( ! is_multisite() || ! current_user_can( 'promote_users' ) || wp_is_large_network( 'users' ) ) + wp_die( -1 ); + + if ( ! is_super_admin() && ! apply_filters( 'autocomplete_users_for_site_admins', false ) ) + wp_die( -1 ); + + $return = array(); + + // Check the type of request + if ( isset( $_REQUEST['autocomplete_type'] ) ) + $type = $_REQUEST['autocomplete_type']; + else + $type = 'add'; + + // Exclude current users of this blog + if ( isset( $_REQUEST['site_id'] ) ) + $id = absint( $_REQUEST['site_id'] ); + else + $id = get_current_blog_id(); + + $include_blog_users = ( $type == 'search' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() ); + $exclude_blog_users = ( $type == 'add' ? get_users( array( 'blog_id' => $id, 'fields' => 'ID' ) ) : array() ); + + $users = get_users( array( + 'blog_id' => false, + 'search' => '*' . $_REQUEST['term'] . '*', + 'include' => $include_blog_users, + 'exclude' => $exclude_blog_users, + 'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ), + ) ); + + foreach ( $users as $user ) { + $return[] = array( + /* translators: 1: user_login, 2: user_email */ + 'label' => sprintf( __( '%1$s (%2$s)' ), $user->user_login, $user->user_email ), + 'value' => $user->user_login, + ); + } + + wp_die( json_encode( $return ) ); +} + +function wp_ajax_dashboard_widgets() { + require ABSPATH . 'wp-admin/includes/dashboard.php'; + + switch ( $_GET['widget'] ) { + case 'dashboard_incoming_links' : + wp_dashboard_incoming_links(); + break; + case 'dashboard_primary' : + wp_dashboard_primary(); + break; + case 'dashboard_secondary' : + wp_dashboard_secondary(); + break; + case 'dashboard_plugins' : + wp_dashboard_plugins(); + break; + } + wp_die(); +} + +function wp_ajax_logged_in() { + wp_die( 1 ); +} + +/* + * Ajax helper. + */ + +/** + * Sends back current comment total and new page links if they need to be updated. + * + * Contrary to normal success AJAX response ("1"), die with time() on success. + * + * @since 2.7 + * + * @param int $comment_id + * @return die + */ +function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) { + $total = (int) @$_POST['_total']; + $per_page = (int) @$_POST['_per_page']; + $page = (int) @$_POST['_page']; + $url = esc_url_raw( @$_POST['_url'] ); + // JS didn't send us everything we need to know. Just die with success message + if ( !$total || !$per_page || !$page || !$url ) + wp_die( time() ); + + $total += $delta; + if ( $total < 0 ) + $total = 0; + + // Only do the expensive stuff on a page-break, and about 1 other time per page + if ( 0 == $total % $per_page || 1 == mt_rand( 1, $per_page ) ) { + $post_id = 0; + $status = 'total_comments'; // What type of comment count are we looking for? + $parsed = parse_url( $url ); + if ( isset( $parsed['query'] ) ) { + parse_str( $parsed['query'], $query_vars ); + if ( !empty( $query_vars['comment_status'] ) ) + $status = $query_vars['comment_status']; + if ( !empty( $query_vars['p'] ) ) + $post_id = (int) $query_vars['p']; + } + + $comment_count = wp_count_comments($post_id); + + if ( isset( $comment_count->$status ) ) // We're looking for a known type of comment count + $total = $comment_count->$status; + // else use the decremented value from above + } + + $time = time(); // The time since the last comment count + + $x = new WP_Ajax_Response( array( + 'what' => 'comment', + 'id' => $comment_id, // here for completeness - not used + 'supplemental' => array( + 'total_items_i18n' => sprintf( _n( '1 item', '%s items', $total ), number_format_i18n( $total ) ), + 'total_pages' => ceil( $total / $per_page ), + 'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ), + 'total' => $total, + 'time' => $time + ) + ) ); + $x->send(); +} + +/* + * POST-based Ajax handlers. + */ + +function _wp_ajax_add_hierarchical_term() { + $action = $_POST['action']; + $taxonomy = get_taxonomy(substr($action, 4)); + check_ajax_referer( $action, '_ajax_nonce-add-' . $taxonomy->name ); + if ( !current_user_can( $taxonomy->cap->edit_terms ) ) + wp_die( -1 ); + $names = explode(',', $_POST['new'.$taxonomy->name]); + $parent = isset($_POST['new'.$taxonomy->name.'_parent']) ? (int) $_POST['new'.$taxonomy->name.'_parent'] : 0; + if ( 0 > $parent ) + $parent = 0; + if ( $taxonomy->name == 'category' ) + $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array(); + else + $post_category = ( isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ) ? (array) $_POST['tax_input'][$taxonomy->name] : array(); + $checked_categories = array_map( 'absint', (array) $post_category ); + $popular_ids = wp_popular_terms_checklist($taxonomy->name, 0, 10, false); + + foreach ( $names as $cat_name ) { + $cat_name = trim($cat_name); + $category_nicename = sanitize_title($cat_name); + if ( '' === $category_nicename ) + continue; + if ( !$cat_id = term_exists( $cat_name, $taxonomy->name, $parent ) ) + $cat_id = wp_insert_term( $cat_name, $taxonomy->name, array( 'parent' => $parent ) ); + if ( is_wp_error( $cat_id ) ) + continue; + else if ( is_array( $cat_id ) ) + $cat_id = $cat_id['term_id']; + $checked_categories[] = $cat_id; + if ( $parent ) // Do these all at once in a second + continue; + ob_start(); + wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids )); + $data = ob_get_contents(); + ob_end_clean(); + $add = array( + 'what' => $taxonomy->name, + 'id' => $cat_id, + 'data' => str_replace( array("\n", "\t"), '', $data), + 'position' => -1 + ); + } + + if ( $parent ) { // Foncy - replace the parent and all its children + $parent = get_term( $parent, $taxonomy->name ); + $term_id = $parent->term_id; + + while ( $parent->parent ) { // get the top parent + $parent = &get_term( $parent->parent, $taxonomy->name ); + if ( is_wp_error( $parent ) ) + break; + $term_id = $parent->term_id; + } + + ob_start(); + wp_terms_checklist( 0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids)); + $data = ob_get_contents(); + ob_end_clean(); + $add = array( + 'what' => $taxonomy->name, + 'id' => $term_id, + 'data' => str_replace( array("\n", "\t"), '', $data), + 'position' => -1 + ); + } + + ob_start(); + wp_dropdown_categories( array( + 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name', + 'hierarchical' => 1, 'show_option_none' => '— '.$taxonomy->labels->parent_item.' —' + ) ); + $sup = ob_get_contents(); + ob_end_clean(); + $add['supplemental'] = array( 'newcat_parent' => $sup ); + + $x = new WP_Ajax_Response( $add ); + $x->send(); +} + +function wp_ajax_delete_comment() { + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + if ( !$comment = get_comment( $id ) ) + wp_die( time() ); + if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) ) + wp_die( -1 ); + + check_ajax_referer( "delete-comment_$id" ); + $status = wp_get_comment_status( $comment->comment_ID ); + + $delta = -1; + if ( isset($_POST['trash']) && 1 == $_POST['trash'] ) { + if ( 'trash' == $status ) + wp_die( time() ); + $r = wp_trash_comment( $comment->comment_ID ); + } elseif ( isset($_POST['untrash']) && 1 == $_POST['untrash'] ) { + if ( 'trash' != $status ) + wp_die( time() ); + $r = wp_untrash_comment( $comment->comment_ID ); + if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'trash' ) // undo trash, not in trash + $delta = 1; + } elseif ( isset($_POST['spam']) && 1 == $_POST['spam'] ) { + if ( 'spam' == $status ) + wp_die( time() ); + $r = wp_spam_comment( $comment->comment_ID ); + } elseif ( isset($_POST['unspam']) && 1 == $_POST['unspam'] ) { + if ( 'spam' != $status ) + wp_die( time() ); + $r = wp_unspam_comment( $comment->comment_ID ); + if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'spam' ) // undo spam, not in spam + $delta = 1; + } elseif ( isset($_POST['delete']) && 1 == $_POST['delete'] ) { + $r = wp_delete_comment( $comment->comment_ID ); + } else { + wp_die( -1 ); + } + + if ( $r ) // Decide if we need to send back '1' or a more complicated response including page links and comment counts + _wp_ajax_delete_comment_response( $comment->comment_ID, $delta ); + wp_die( 0 ); +} + +function wp_ajax_delete_tag() { + $tag_id = (int) $_POST['tag_ID']; + check_ajax_referer( "delete-tag_$tag_id" ); + + $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; + $tax = get_taxonomy($taxonomy); + + if ( !current_user_can( $tax->cap->delete_terms ) ) + wp_die( -1 ); + + $tag = get_term( $tag_id, $taxonomy ); + if ( !$tag || is_wp_error( $tag ) ) + wp_die( 1 ); + + if ( wp_delete_term($tag_id, $taxonomy)) + wp_die( 1 ); + else + wp_die( 0 ); +} + +function wp_ajax_delete_link() { + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + check_ajax_referer( "delete-bookmark_$id" ); + if ( !current_user_can( 'manage_links' ) ) + wp_die( -1 ); + + $link = get_bookmark( $id ); + if ( !$link || is_wp_error( $link ) ) + wp_die( 1 ); + + if ( wp_delete_link( $id ) ) + wp_die( 1 ); + else + wp_die( 0 ); +} + +function wp_ajax_delete_meta() { + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + check_ajax_referer( "delete-meta_$id" ); + if ( !$meta = get_metadata_by_mid( 'post', $id ) ) + wp_die( 1 ); + + if ( is_protected_meta( $meta->meta_key, 'post' ) || ! current_user_can( 'delete_post_meta', $meta->post_id, $meta->meta_key ) ) + wp_die( -1 ); + if ( delete_meta( $meta->meta_id ) ) + wp_die( 1 ); + wp_die( 0 ); +} + +function wp_ajax_delete_post( $action ) { + if ( empty( $action ) ) + $action = 'delete-post'; + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + check_ajax_referer( "{$action}_$id" ); + if ( !current_user_can( 'delete_post', $id ) ) + wp_die( -1 ); + + if ( !get_post( $id ) ) + wp_die( 1 ); + + if ( wp_delete_post( $id ) ) + wp_die( 1 ); + else + wp_die( 0 ); +} + +function wp_ajax_trash_post( $action ) { + if ( empty( $action ) ) + $action = 'trash-post'; + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + check_ajax_referer( "{$action}_$id" ); + if ( !current_user_can( 'delete_post', $id ) ) + wp_die( -1 ); + + if ( !get_post( $id ) ) + wp_die( 1 ); + + if ( 'trash-post' == $action ) + $done = wp_trash_post( $id ); + else + $done = wp_untrash_post( $id ); + + if ( $done ) + wp_die( 1 ); + + wp_die( 0 ); +} + +function wp_ajax_untrash_post( $action ) { + if ( empty( $action ) ) + $action = 'untrash-post'; + wp_ajax_trash_post( $action ); +} + +function wp_ajax_delete_page( $action ) { + if ( empty( $action ) ) + $action = 'delete-page'; + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + check_ajax_referer( "{$action}_$id" ); + if ( !current_user_can( 'delete_page', $id ) ) + wp_die( -1 ); + + if ( !get_page( $id ) ) + wp_die( 1 ); + + if ( wp_delete_post( $id ) ) + wp_die( 1 ); + else + wp_die( 0 ); +} + +function wp_ajax_dim_comment() { + $id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0; + + if ( !$comment = get_comment( $id ) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'comment', + 'id' => new WP_Error('invalid_comment', sprintf(__('Comment %d does not exist'), $id)) + ) ); + $x->send(); + } + + if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) && ! current_user_can( 'moderate_comments' ) ) + wp_die( -1 ); + + $current = wp_get_comment_status( $comment->comment_ID ); + if ( $_POST['new'] == $current ) + wp_die( time() ); + + check_ajax_referer( "approve-comment_$id" ); + if ( in_array( $current, array( 'unapproved', 'spam' ) ) ) + $result = wp_set_comment_status( $comment->comment_ID, 'approve', true ); + else + $result = wp_set_comment_status( $comment->comment_ID, 'hold', true ); + + if ( is_wp_error($result) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'comment', + 'id' => $result + ) ); + $x->send(); + } + + // Decide if we need to send back '1' or a more complicated response including page links and comment counts + _wp_ajax_delete_comment_response( $comment->comment_ID ); + wp_die( 0 ); +} + +function wp_ajax_add_link_category( $action ) { + if ( empty( $action ) ) + $action = 'add-link-category'; + check_ajax_referer( $action ); + if ( !current_user_can( 'manage_categories' ) ) + wp_die( -1 ); + $names = explode(',', $_POST['newcat']); + $x = new WP_Ajax_Response(); + foreach ( $names as $cat_name ) { + $cat_name = trim($cat_name); + $slug = sanitize_title($cat_name); + if ( '' === $slug ) + continue; + if ( !$cat_id = term_exists( $cat_name, 'link_category' ) ) + $cat_id = wp_insert_term( $cat_name, 'link_category' ); + if ( is_wp_error( $cat_id ) ) + continue; + else if ( is_array( $cat_id ) ) + $cat_id = $cat_id['term_id']; + $cat_name = esc_html(stripslashes($cat_name)); + $x->add( array( + 'what' => 'link-category', + 'id' => $cat_id, + 'data' => "", + 'position' => -1 + ) ); + } + $x->send(); +} + +function wp_ajax_add_tag() { + global $wp_list_table; + + check_ajax_referer( 'add-tag', '_wpnonce_add-tag' ); + $post_type = !empty($_POST['post_type']) ? $_POST['post_type'] : 'post'; + $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; + $tax = get_taxonomy($taxonomy); + + if ( !current_user_can( $tax->cap->edit_terms ) ) + wp_die( -1 ); + + $x = new WP_Ajax_Response(); + + $tag = wp_insert_term($_POST['tag-name'], $taxonomy, $_POST ); + + if ( !$tag || is_wp_error($tag) || (!$tag = get_term( $tag['term_id'], $taxonomy )) ) { + $message = __('An error has occurred. Please reload the page and try again.'); + if ( is_wp_error($tag) && $tag->get_error_message() ) + $message = $tag->get_error_message(); + + $x->add( array( + 'what' => 'taxonomy', + 'data' => new WP_Error('error', $message ) + ) ); + $x->send(); + } + + set_current_screen( $_POST['screen'] ); + + $wp_list_table = _get_list_table('WP_Terms_List_Table'); + + $level = 0; + if ( is_taxonomy_hierarchical($taxonomy) ) { + $level = count( get_ancestors( $tag->term_id, $taxonomy ) ); + ob_start(); + $wp_list_table->single_row( $tag, $level ); + $noparents = ob_get_clean(); + } + + ob_start(); + $wp_list_table->single_row( $tag ); + $parents = ob_get_clean(); + + $x->add( array( + 'what' => 'taxonomy', + 'supplemental' => compact('parents', 'noparents') + ) ); + $x->add( array( + 'what' => 'term', + 'position' => $level, + 'supplemental' => (array) $tag + ) ); + $x->send(); +} + +function wp_ajax_get_tagcloud() { + if ( isset( $_POST['tax'] ) ) { + $taxonomy = sanitize_key( $_POST['tax'] ); + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax ) + wp_die( 0 ); + if ( ! current_user_can( $tax->cap->assign_terms ) ) + wp_die( -1 ); + } else { + wp_die( 0 ); + } + + $tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) ); + + if ( empty( $tags ) ) + wp_die( isset( $tax->no_tagcloud ) ? $tax->no_tagcloud : __('No tags found!') ); + + if ( is_wp_error( $tags ) ) + wp_die( $tags->get_error_message() ); + + foreach ( $tags as $key => $tag ) { + $tags[ $key ]->link = '#'; + $tags[ $key ]->id = $tag->term_id; + } + + // We need raw tag names here, so don't filter the output + $return = wp_generate_tag_cloud( $tags, array('filter' => 0) ); + + if ( empty($return) ) + wp_die( 0 ); + + echo $return; + + wp_die(); +} + +function wp_ajax_get_comments( $action ) { + global $wp_list_table, $post_id; + if ( empty( $action ) ) + $action = 'get-comments'; + + check_ajax_referer( $action ); + + set_current_screen( 'edit-comments' ); + + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + + if ( !current_user_can( 'edit_post', $post_id ) ) + wp_die( -1 ); + + $wp_list_table->prepare_items(); + + if ( !$wp_list_table->has_items() ) + wp_die( 1 ); + + $x = new WP_Ajax_Response(); + ob_start(); + foreach ( $wp_list_table->items as $comment ) { + if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) ) + continue; + get_comment( $comment ); + $wp_list_table->single_row( $comment ); + } + $comment_list_item = ob_get_contents(); + ob_end_clean(); + + $x->add( array( + 'what' => 'comments', + 'data' => $comment_list_item + ) ); + $x->send(); +} + +function wp_ajax_replyto_comment( $action ) { + global $wp_list_table, $wpdb; + if ( empty( $action ) ) + $action = 'replyto-comment'; + + check_ajax_referer( $action, '_ajax_nonce-replyto-comment' ); + + set_current_screen( 'edit-comments' ); + + $comment_post_ID = (int) $_POST['comment_post_ID']; + if ( !current_user_can( 'edit_post', $comment_post_ID ) ) + wp_die( -1 ); + + $status = $wpdb->get_var( $wpdb->prepare("SELECT post_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) ); + + if ( empty($status) ) + wp_die( 1 ); + elseif ( in_array($status, array('draft', 'pending', 'trash') ) ) + wp_die( __('ERROR: you are replying to a comment on a draft post.') ); + + $user = wp_get_current_user(); + if ( $user->exists() ) { + $user_ID = $user->ID; + $comment_author = $wpdb->escape($user->display_name); + $comment_author_email = $wpdb->escape($user->user_email); + $comment_author_url = $wpdb->escape($user->user_url); + $comment_content = trim($_POST['content']); + if ( current_user_can( 'unfiltered_html' ) ) { + if ( wp_create_nonce( 'unfiltered-html-comment' ) != $_POST['_wp_unfiltered_html_comment'] ) { + kses_remove_filters(); // start with a clean slate + kses_init_filters(); // set up the filters + } + } + } else { + wp_die( __( 'Sorry, you must be logged in to reply to a comment.' ) ); + } + + if ( '' == $comment_content ) + wp_die( __( 'ERROR: please type a comment.' ) ); + + $comment_parent = absint($_POST['comment_ID']); + $comment_auto_approved = false; + $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); + + $comment_id = wp_new_comment( $commentdata ); + $comment = get_comment($comment_id); + if ( ! $comment ) wp_die( 1 ); + + $position = ( isset($_POST['position']) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1'; + + // automatically approve parent comment + if ( !empty($_POST['approve_parent']) ) { + $parent = get_comment( $comment_parent ); + + if ( $parent && $parent->comment_approved === '0' && $parent->comment_post_ID == $comment_post_ID ) { + if ( wp_set_comment_status( $parent->comment_ID, 'approve' ) ) + $comment_auto_approved = true; + } + } + + ob_start(); + if ( 'dashboard' == $_REQUEST['mode'] ) { + require_once( ABSPATH . 'wp-admin/includes/dashboard.php' ); + _wp_dashboard_recent_comments_row( $comment ); + } else { + if ( 'single' == $_REQUEST['mode'] ) { + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + } else { + $wp_list_table = _get_list_table('WP_Comments_List_Table'); + } + $wp_list_table->single_row( $comment ); + } + $comment_list_item = ob_get_contents(); + ob_end_clean(); + + $response = array( + 'what' => 'comment', + 'id' => $comment->comment_ID, + 'data' => $comment_list_item, + 'position' => $position + ); + + if ( $comment_auto_approved ) + $response['supplemental'] = array( 'parent_approved' => $parent->comment_ID ); + + $x = new WP_Ajax_Response(); + $x->add( $response ); + $x->send(); +} + +function wp_ajax_edit_comment() { + global $wp_list_table; + + check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ); + + set_current_screen( 'edit-comments' ); + + $comment_id = (int) $_POST['comment_ID']; + if ( ! current_user_can( 'edit_comment', $comment_id ) ) + wp_die( -1 ); + + if ( '' == $_POST['content'] ) + wp_die( __( 'ERROR: please type a comment.' ) ); + + $_POST['comment_status'] = $_POST['status']; + edit_comment(); + + $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1'; + $comments_status = isset($_POST['comments_listing']) ? $_POST['comments_listing'] : ''; + + $checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0; + $wp_list_table = _get_list_table( $checkbox ? 'WP_Comments_List_Table' : 'WP_Post_Comments_List_Table' ); + + $comment = get_comment( $comment_id ); + + ob_start(); + $wp_list_table->single_row( $comment ); + $comment_list_item = ob_get_contents(); + ob_end_clean(); + + $x = new WP_Ajax_Response(); + + $x->add( array( + 'what' => 'edit_comment', + 'id' => $comment->comment_ID, + 'data' => $comment_list_item, + 'position' => $position + )); + + $x->send(); +} + +function wp_ajax_add_menu_item() { + check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' ); + + if ( ! current_user_can( 'edit_theme_options' ) ) + wp_die( -1 ); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + // For performance reasons, we omit some object properties from the checklist. + // The following is a hacky way to restore them when adding non-custom items. + + $menu_items_data = array(); + foreach ( (array) $_POST['menu-item'] as $menu_item_data ) { + if ( + ! empty( $menu_item_data['menu-item-type'] ) && + 'custom' != $menu_item_data['menu-item-type'] && + ! empty( $menu_item_data['menu-item-object-id'] ) + ) { + switch( $menu_item_data['menu-item-type'] ) { + case 'post_type' : + $_object = get_post( $menu_item_data['menu-item-object-id'] ); + break; + + case 'taxonomy' : + $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] ); + break; + } + + $_menu_items = array_map( 'wp_setup_nav_menu_item', array( $_object ) ); + $_menu_item = array_shift( $_menu_items ); + + // Restore the missing menu item properties + $menu_item_data['menu-item-description'] = $_menu_item->description; + } + + $menu_items_data[] = $menu_item_data; + } + + $item_ids = wp_save_nav_menu_items( 0, $menu_items_data ); + if ( is_wp_error( $item_ids ) ) + wp_die( 0 ); + + $menu_items = array(); + + foreach ( (array) $item_ids as $menu_item_id ) { + $menu_obj = get_post( $menu_item_id ); + if ( ! empty( $menu_obj->ID ) ) { + $menu_obj = wp_setup_nav_menu_item( $menu_obj ); + $menu_obj->label = $menu_obj->title; // don't show "(pending)" in ajax-added items + $menu_items[] = $menu_obj; + } + } + + $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $_POST['menu'] ); + + if ( ! class_exists( $walker_class_name ) ) + wp_die( 0 ); + + if ( ! empty( $menu_items ) ) { + $args = array( + 'after' => '', + 'before' => '', + 'link_after' => '', + 'link_before' => '', + 'walker' => new $walker_class_name, + ); + echo walk_nav_menu_tree( $menu_items, 0, (object) $args ); + } +} + +function wp_ajax_add_meta() { + check_ajax_referer( 'add-meta', '_ajax_nonce-add-meta' ); + $c = 0; + $pid = (int) $_POST['post_id']; + $post = get_post( $pid ); + + if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) { + if ( !current_user_can( 'edit_post', $pid ) ) + wp_die( -1 ); + if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) ) + wp_die( 1 ); + if ( $post->post_status == 'auto-draft' ) { + $save_POST = $_POST; // Backup $_POST + $_POST = array(); // Make it empty for edit_post() + $_POST['action'] = 'draft'; // Warning fix + $_POST['post_ID'] = $pid; + $_POST['post_type'] = $post->post_type; + $_POST['post_status'] = 'draft'; + $now = current_time('timestamp', 1); + $_POST['post_title'] = sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now)); + + if ( $pid = edit_post() ) { + if ( is_wp_error( $pid ) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'data' => $pid + ) ); + $x->send(); + } + $_POST = $save_POST; // Now we can restore original $_POST again + if ( !$mid = add_meta( $pid ) ) + wp_die( __( 'Please provide a custom field value.' ) ); + } else { + wp_die( 0 ); + } + } else if ( !$mid = add_meta( $pid ) ) { + wp_die( __( 'Please provide a custom field value.' ) ); + } + + $meta = get_metadata_by_mid( 'post', $mid ); + $pid = (int) $meta->post_id; + $meta = get_object_vars( $meta ); + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'id' => $mid, + 'data' => _list_meta_row( $meta, $c ), + 'position' => 1, + 'supplemental' => array('postid' => $pid) + ) ); + } else { // Update? + $mid = (int) key( $_POST['meta'] ); + $key = stripslashes( $_POST['meta'][$mid]['key'] ); + $value = stripslashes( $_POST['meta'][$mid]['value'] ); + if ( '' == trim($key) ) + wp_die( __( 'Please provide a custom field name.' ) ); + if ( '' == trim($value) ) + wp_die( __( 'Please provide a custom field value.' ) ); + if ( ! $meta = get_metadata_by_mid( 'post', $mid ) ) + wp_die( 0 ); // if meta doesn't exist + if ( is_protected_meta( $meta->meta_key, 'post' ) || is_protected_meta( $key, 'post' ) || + ! current_user_can( 'edit_post_meta', $meta->post_id, $meta->meta_key ) || + ! current_user_can( 'edit_post_meta', $meta->post_id, $key ) ) + wp_die( -1 ); + if ( $meta->meta_value != $value || $meta->meta_key != $key ) { + if ( !$u = update_metadata_by_mid( 'post', $mid, $value, $key ) ) + wp_die( 0 ); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems). + } + + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'id' => $mid, 'old_id' => $mid, + 'data' => _list_meta_row( array( + 'meta_key' => $key, + 'meta_value' => $value, + 'meta_id' => $mid + ), $c ), + 'position' => 0, + 'supplemental' => array('postid' => $meta->post_id) + ) ); + } + $x->send(); +} + +function wp_ajax_add_user( $action ) { + global $wp_list_table; + if ( empty( $action ) ) + $action = 'add-user'; + + check_ajax_referer( $action ); + if ( ! current_user_can('create_users') ) + wp_die( -1 ); + if ( ! $user_id = edit_user() ) { + wp_die( 0 ); + } elseif ( is_wp_error( $user_id ) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'user', + 'id' => $user_id + ) ); + $x->send(); + } + $user_object = new WP_User( $user_id ); + + $wp_list_table = _get_list_table('WP_Users_List_Table'); + + $x = new WP_Ajax_Response( array( + 'what' => 'user', + 'id' => $user_id, + 'data' => $wp_list_table->single_row( $user_object, '', $user_object->roles[0] ), + 'supplemental' => array( + 'show-link' => sprintf(__( 'User %s added' ), "user-$user_id", $user_object->user_login), + 'role' => $user_object->roles[0] + ) + ) ); + $x->send(); +} + +function wp_ajax_autosave() { + global $login_grace_period; + + define( 'DOING_AUTOSAVE', true ); + + $nonce_age = check_ajax_referer( 'autosave', 'autosavenonce' ); + + $_POST['post_category'] = explode(",", $_POST['catslist']); + if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) ) + unset($_POST['post_category']); + + $do_autosave = (bool) $_POST['autosave']; + $do_lock = true; + + $data = $alert = ''; + /* translators: draft saved date format, see http://php.net/date */ + $draft_saved_date_format = __('g:i:s a'); + /* translators: %s: date and time */ + $message = sprintf( __('Draft saved at %s.'), date_i18n( $draft_saved_date_format ) ); + + $supplemental = array(); + if ( isset($login_grace_period) ) + $alert .= sprintf( __('Your login has expired. Please open a new browser window and log in again. '), add_query_arg( 'interim-login', 1, wp_login_url() ) ); + + $id = $revision_id = 0; + + $post_ID = (int) $_POST['post_ID']; + $_POST['ID'] = $post_ID; + $post = get_post($post_ID); + if ( 'auto-draft' == $post->post_status ) + $_POST['post_status'] = 'draft'; + + if ( $last = wp_check_post_lock( $post->ID ) ) { + $do_autosave = $do_lock = false; + + $last_user = get_userdata( $last ); + $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' ); + $data = __( 'Autosave disabled.' ); + + $supplemental['disable_autosave'] = 'disable'; + $alert .= sprintf( __( '%s is currently editing this article. If you update it, you will overwrite the changes.' ), esc_html( $last_user_name ) ); + } + + if ( 'page' == $post->post_type ) { + if ( !current_user_can('edit_page', $post_ID) ) + wp_die( __( 'You are not allowed to edit this page.' ) ); + } else { + if ( !current_user_can('edit_post', $post_ID) ) + wp_die( __( 'You are not allowed to edit this post.' ) ); + } + + if ( $do_autosave ) { + // Drafts and auto-drafts are just overwritten by autosave + if ( 'auto-draft' == $post->post_status || 'draft' == $post->post_status ) { + $id = edit_post(); + } else { // Non drafts are not overwritten. The autosave is stored in a special post revision. + $revision_id = wp_create_post_autosave( $post->ID ); + if ( is_wp_error($revision_id) ) + $id = $revision_id; + else + $id = $post->ID; + } + $data = $message; + } else { + if ( ! empty( $_POST['auto_draft'] ) ) + $id = 0; // This tells us it didn't actually save + else + $id = $post->ID; + } + + if ( $do_lock && empty( $_POST['auto_draft'] ) && $id && is_numeric( $id ) ) { + $lock_result = wp_set_post_lock( $id ); + $supplemental['active-post-lock'] = implode( ':', $lock_result ); + } + + if ( $nonce_age == 2 ) { + $supplemental['replace-autosavenonce'] = wp_create_nonce('autosave'); + $supplemental['replace-getpermalinknonce'] = wp_create_nonce('getpermalink'); + $supplemental['replace-samplepermalinknonce'] = wp_create_nonce('samplepermalink'); + $supplemental['replace-closedpostboxesnonce'] = wp_create_nonce('closedpostboxes'); + $supplemental['replace-_ajax_linking_nonce'] = wp_create_nonce( 'internal-linking' ); + if ( $id ) { + if ( $_POST['post_type'] == 'post' ) + $supplemental['replace-_wpnonce'] = wp_create_nonce('update-post_' . $id); + elseif ( $_POST['post_type'] == 'page' ) + $supplemental['replace-_wpnonce'] = wp_create_nonce('update-page_' . $id); + } + } + + if ( ! empty($alert) ) + $supplemental['alert'] = $alert; + + $x = new WP_Ajax_Response( array( + 'what' => 'autosave', + 'id' => $id, + 'data' => $id ? $data : '', + 'supplemental' => $supplemental + ) ); + $x->send(); +} + +function wp_ajax_closed_postboxes() { + check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' ); + $closed = isset( $_POST['closed'] ) ? explode( ',', $_POST['closed']) : array(); + $closed = array_filter($closed); + + $hidden = isset( $_POST['hidden'] ) ? explode( ',', $_POST['hidden']) : array(); + $hidden = array_filter($hidden); + + $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; + + if ( $page != sanitize_key( $page ) ) + wp_die( 0 ); + + if ( ! $user = wp_get_current_user() ) + wp_die( -1 ); + + if ( is_array($closed) ) + update_user_option($user->ID, "closedpostboxes_$page", $closed, true); + + if ( is_array($hidden) ) { + $hidden = array_diff( $hidden, array('submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu') ); // postboxes that are always shown + update_user_option($user->ID, "metaboxhidden_$page", $hidden, true); + } + + wp_die( 1 ); +} + +function wp_ajax_hidden_columns() { + check_ajax_referer( 'screen-options-nonce', 'screenoptionnonce' ); + $hidden = isset( $_POST['hidden'] ) ? $_POST['hidden'] : ''; + $hidden = explode( ',', $_POST['hidden'] ); + $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; + + if ( $page != sanitize_key( $page ) ) + wp_die( 0 ); + + if ( ! $user = wp_get_current_user() ) + wp_die( -1 ); + + if ( is_array($hidden) ) + update_user_option($user->ID, "manage{$page}columnshidden", $hidden, true); + + wp_die( 1 ); +} + +function wp_ajax_update_welcome_panel() { + check_ajax_referer( 'welcome-panel-nonce', 'welcomepanelnonce' ); + + if ( ! current_user_can( 'edit_theme_options' ) ) + wp_die( -1 ); + + update_user_meta( get_current_user_id(), 'show_welcome_panel', empty( $_POST['visible'] ) ? 0 : 1 ); + + wp_die( 1 ); +} + +function wp_ajax_menu_get_metabox() { + if ( ! current_user_can( 'edit_theme_options' ) ) + wp_die( -1 ); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + if ( isset( $_POST['item-type'] ) && 'post_type' == $_POST['item-type'] ) { + $type = 'posttype'; + $callback = 'wp_nav_menu_item_post_type_meta_box'; + $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); + } elseif ( isset( $_POST['item-type'] ) && 'taxonomy' == $_POST['item-type'] ) { + $type = 'taxonomy'; + $callback = 'wp_nav_menu_item_taxonomy_meta_box'; + $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' ); + } + + if ( ! empty( $_POST['item-object'] ) && isset( $items[$_POST['item-object']] ) ) { + $item = apply_filters( 'nav_menu_meta_box_object', $items[ $_POST['item-object'] ] ); + ob_start(); + call_user_func_array($callback, array( + null, + array( + 'id' => 'add-' . $item->name, + 'title' => $item->labels->name, + 'callback' => $callback, + 'args' => $item, + ) + )); + + $markup = ob_get_clean(); + + echo json_encode(array( + 'replace-id' => $type . '-' . $item->name, + 'markup' => $markup, + )); + } + + wp_die(); +} + +function wp_ajax_wp_link_ajax() { + check_ajax_referer( 'internal-linking', '_ajax_linking_nonce' ); + + $args = array(); + + if ( isset( $_POST['search'] ) ) + $args['s'] = stripslashes( $_POST['search'] ); + $args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1; + + require(ABSPATH . WPINC . '/class-wp-editor.php'); + $results = _WP_Editors::wp_link_query( $args ); + + if ( ! isset( $results ) ) + wp_die( 0 ); + + echo json_encode( $results ); + echo "\n"; + + wp_die(); +} + +function wp_ajax_menu_locations_save() { + if ( ! current_user_can( 'edit_theme_options' ) ) + wp_die( -1 ); + check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' ); + if ( ! isset( $_POST['menu-locations'] ) ) + wp_die( 0 ); + set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) ); + wp_die( 1 ); +} + +function wp_ajax_meta_box_order() { + check_ajax_referer( 'meta-box-order' ); + $order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false; + $page_columns = isset( $_POST['page_columns'] ) ? $_POST['page_columns'] : 'auto'; + + if ( $page_columns != 'auto' ) + $page_columns = (int) $page_columns; + + $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; + + if ( $page != sanitize_key( $page ) ) + wp_die( 0 ); + + if ( ! $user = wp_get_current_user() ) + wp_die( -1 ); + + if ( $order ) + update_user_option($user->ID, "meta-box-order_$page", $order, true); + + if ( $page_columns ) + update_user_option($user->ID, "screen_layout_$page", $page_columns, true); + + wp_die( 1 ); +} + +function wp_ajax_menu_quick_search() { + if ( ! current_user_can( 'edit_theme_options' ) ) + wp_die( -1 ); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + _wp_ajax_menu_quick_search( $_POST ); + + wp_die(); +} + +function wp_ajax_get_permalink() { + check_ajax_referer( 'getpermalink', 'getpermalinknonce' ); + $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; + wp_die( add_query_arg( array( 'preview' => 'true' ), get_permalink( $post_id ) ) ); +} + +function wp_ajax_sample_permalink() { + check_ajax_referer( 'samplepermalink', 'samplepermalinknonce' ); + $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; + $title = isset($_POST['new_title'])? $_POST['new_title'] : ''; + $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : null; + wp_die( get_sample_permalink_html( $post_id, $title, $slug ) ); +} + +function wp_ajax_inline_save() { + global $wp_list_table; + + check_ajax_referer( 'inlineeditnonce', '_inline_edit' ); + + if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) ) + wp_die(); + + if ( 'page' == $_POST['post_type'] ) { + if ( ! current_user_can( 'edit_page', $post_ID ) ) + wp_die( __( 'You are not allowed to edit this page.' ) ); + } else { + if ( ! current_user_can( 'edit_post', $post_ID ) ) + wp_die( __( 'You are not allowed to edit this post.' ) ); + } + + set_current_screen( $_POST['screen'] ); + + if ( $last = wp_check_post_lock( $post_ID ) ) { + $last_user = get_userdata( $last ); + $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' ); + printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ), esc_html( $last_user_name ) ); + wp_die(); + } + + $data = &$_POST; + + $post = get_post( $post_ID, ARRAY_A ); + $post = add_magic_quotes($post); //since it is from db + + $data['content'] = $post['post_content']; + $data['excerpt'] = $post['post_excerpt']; + + // rename + $data['user_ID'] = $GLOBALS['user_ID']; + + if ( isset($data['post_parent']) ) + $data['parent_id'] = $data['post_parent']; + + // status + if ( isset($data['keep_private']) && 'private' == $data['keep_private'] ) + $data['post_status'] = 'private'; + else + $data['post_status'] = $data['_status']; + + if ( empty($data['comment_status']) ) + $data['comment_status'] = 'closed'; + if ( empty($data['ping_status']) ) + $data['ping_status'] = 'closed'; + + // update the post + edit_post(); + + $wp_list_table = _get_list_table('WP_Posts_List_Table'); + + $mode = $_POST['post_view']; + $wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ) ); + + wp_die(); +} + +function wp_ajax_inline_save_tax() { + global $wp_list_table; + + check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' ); + + $taxonomy = sanitize_key( $_POST['taxonomy'] ); + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax ) + wp_die( 0 ); + + if ( ! current_user_can( $tax->cap->edit_terms ) ) + wp_die( -1 ); + + set_current_screen( 'edit-' . $taxonomy ); + + $wp_list_table = _get_list_table('WP_Terms_List_Table'); + + if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) ) + wp_die( -1 ); + + $tag = get_term( $id, $taxonomy ); + $_POST['description'] = $tag->description; + + $updated = wp_update_term($id, $taxonomy, $_POST); + if ( $updated && !is_wp_error($updated) ) { + $tag = get_term( $updated['term_id'], $taxonomy ); + if ( !$tag || is_wp_error( $tag ) ) { + if ( is_wp_error($tag) && $tag->get_error_message() ) + wp_die( $tag->get_error_message() ); + wp_die( __( 'Item not updated.' ) ); + } + + echo $wp_list_table->single_row( $tag ); + } else { + if ( is_wp_error($updated) && $updated->get_error_message() ) + wp_die( $updated->get_error_message() ); + wp_die( __( 'Item not updated.' ) ); + } + + wp_die(); +} + +function wp_ajax_find_posts() { + global $wpdb; + + check_ajax_referer( 'find-posts' ); + + if ( empty($_POST['ps']) ) + wp_die(); + + if ( !empty($_POST['post_type']) && in_array( $_POST['post_type'], get_post_types() ) ) + $what = $_POST['post_type']; + else + $what = 'post'; + + $s = stripslashes($_POST['ps']); + preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches); + $search_terms = array_map('_search_terms_tidy', $matches[0]); + + $searchand = $search = ''; + foreach ( (array) $search_terms as $term ) { + $term = esc_sql( like_escape( $term ) ); + $search .= "{$searchand}(($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%'))"; + $searchand = ' AND '; + } + $term = esc_sql( like_escape( $s ) ); + if ( count($search_terms) > 1 && $search_terms[0] != $s ) + $search .= " OR ($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%')"; + + $posts = $wpdb->get_results( "SELECT ID, post_title, post_status, post_date FROM $wpdb->posts WHERE post_type = '$what' AND post_status IN ('draft', 'publish') AND ($search) ORDER BY post_date_gmt DESC LIMIT 50" ); + + if ( ! $posts ) { + $posttype = get_post_type_object($what); + wp_die( $posttype->labels->not_found ); + } + + $html = ''; + foreach ( $posts as $post ) { + + switch ( $post->post_status ) { + case 'publish' : + case 'private' : + $stat = __('Published'); + break; + case 'future' : + $stat = __('Scheduled'); + break; + case 'pending' : + $stat = __('Pending Review'); + break; + case 'draft' : + $stat = __('Draft'); + break; + } + + if ( '0000-00-00 00:00:00' == $post->post_date ) { + $time = ''; + } else { + /* translators: date format in table columns, see http://php.net/date */ + $time = mysql2date(__('Y/m/d'), $post->post_date); + } + + $html .= ''; + $html .= ''."\n\n"; + } + $html .= '

'.__('Title').''.__('Date').''.__('Status').'
'.esc_html( $time ).''.esc_html( $stat ).'
'; + + $x = new WP_Ajax_Response(); + $x->add( array( + 'what' => $what, + 'data' => $html + )); + $x->send(); + +} + +function wp_ajax_widgets_order() { + check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); + + if ( !current_user_can('edit_theme_options') ) + wp_die( -1 ); + + unset( $_POST['savewidgets'], $_POST['action'] ); + + // save widgets order for all sidebars + if ( is_array($_POST['sidebars']) ) { + $sidebars = array(); + foreach ( $_POST['sidebars'] as $key => $val ) { + $sb = array(); + if ( !empty($val) ) { + $val = explode(',', $val); + foreach ( $val as $k => $v ) { + if ( strpos($v, 'widget-') === false ) + continue; + + $sb[$k] = substr($v, strpos($v, '_') + 1); + } + } + $sidebars[$key] = $sb; + } + wp_set_sidebars_widgets($sidebars); + wp_die( 1 ); + } + + wp_die( -1 ); +} + +function wp_ajax_save_widget() { + global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates; + + check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); + + if ( !current_user_can('edit_theme_options') || !isset($_POST['id_base']) ) + wp_die( -1 ); + + unset( $_POST['savewidgets'], $_POST['action'] ); + + do_action('load-widgets.php'); + do_action('widgets.php'); + do_action('sidebar_admin_setup'); + + $id_base = $_POST['id_base']; + $widget_id = $_POST['widget-id']; + $sidebar_id = $_POST['sidebar']; + $multi_number = !empty($_POST['multi_number']) ? (int) $_POST['multi_number'] : 0; + $settings = isset($_POST['widget-' . $id_base]) && is_array($_POST['widget-' . $id_base]) ? $_POST['widget-' . $id_base] : false; + $error = '

' . __('An error has occurred. Please reload the page and try again.') . '

'; + + $sidebars = wp_get_sidebars_widgets(); + $sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array(); + + // delete + if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { + + if ( !isset($wp_registered_widgets[$widget_id]) ) + wp_die( $error ); + + $sidebar = array_diff( $sidebar, array($widget_id) ); + $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1'); + } elseif ( $settings && preg_match( '/__i__|%i%/', key($settings) ) ) { + if ( !$multi_number ) + wp_die( $error ); + + $_POST['widget-' . $id_base] = array( $multi_number => array_shift($settings) ); + $widget_id = $id_base . '-' . $multi_number; + $sidebar[] = $widget_id; + } + $_POST['widget-id'] = $sidebar; + + foreach ( (array) $wp_registered_widget_updates as $name => $control ) { + + if ( $name == $id_base ) { + if ( !is_callable( $control['callback'] ) ) + continue; + + ob_start(); + call_user_func_array( $control['callback'], $control['params'] ); + ob_end_clean(); + break; + } + } + + if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { + $sidebars[$sidebar_id] = $sidebar; + wp_set_sidebars_widgets($sidebars); + echo "deleted:$widget_id"; + wp_die(); + } + + if ( !empty($_POST['add_new']) ) + wp_die(); + + if ( $form = $wp_registered_widget_controls[$widget_id] ) + call_user_func_array( $form['callback'], $form['params'] ); + + wp_die(); +} + +function wp_ajax_upload_attachment() { + check_ajax_referer( 'media-form' ); + + if ( ! current_user_can( 'upload_files' ) ) + wp_die( -1 ); + + if ( isset( $_REQUEST['post_id'] ) ) { + $post_id = $_REQUEST['post_id']; + if ( ! current_user_can( 'edit_post', $post_id ) ) + wp_die( -1 ); + } else { + $post_id = null; + } + + $post_data = isset( $_REQUEST['post_data'] ) ? $_REQUEST['post_data'] : array(); + + $attachment_id = media_handle_upload( 'async-upload', $post_id, $post_data ); + + if ( is_wp_error( $attachment_id ) ) { + echo json_encode( array( + 'type' => 'error', + 'data' => array( + 'message' => $attachment_id->get_error_message(), + 'filename' => $_FILES['async-upload']['name'], + ), + ) ); + wp_die(); + } + + if ( isset( $post_data['context'] ) && isset( $post_data['theme'] ) ) { + if ( 'custom-background' === $post_data['context'] ) + update_post_meta( $attachment_id, '_wp_attachment_is_custom_background', $post_data['theme'] ); + + if ( 'custom-header' === $post_data['context'] ) + update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', $post_data['theme'] ); + } + + $post = get_post( $attachment_id ); + + echo json_encode( array( + 'type' => 'success', + 'data' => array( + 'id' => $attachment_id, + 'title' => esc_attr( $post->post_title ), + 'filename' => esc_html( basename( $post->guid ) ), + 'url' => wp_get_attachment_url( $attachment_id ), + 'meta' => wp_get_attachment_metadata( $attachment_id ), + ), + ) ); + wp_die(); +} + +function wp_ajax_image_editor() { + $attachment_id = intval($_POST['postid']); + if ( empty($attachment_id) || !current_user_can('edit_post', $attachment_id) ) + wp_die( -1 ); + + check_ajax_referer( "image_editor-$attachment_id" ); + include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); + + $msg = false; + switch ( $_POST['do'] ) { + case 'save' : + $msg = wp_save_image($attachment_id); + $msg = json_encode($msg); + wp_die( $msg ); + break; + case 'scale' : + $msg = wp_save_image($attachment_id); + break; + case 'restore' : + $msg = wp_restore_image($attachment_id); + break; + } + + wp_image_editor($attachment_id, $msg); + wp_die(); +} + +function wp_ajax_set_post_thumbnail() { + $post_ID = intval( $_POST['post_id'] ); + if ( !current_user_can( 'edit_post', $post_ID ) ) + wp_die( -1 ); + $thumbnail_id = intval( $_POST['thumbnail_id'] ); + + check_ajax_referer( "set_post_thumbnail-$post_ID" ); + + if ( $thumbnail_id == '-1' ) { + if ( delete_post_thumbnail( $post_ID ) ) + wp_die( _wp_post_thumbnail_html( null, $post_ID ) ); + else + wp_die( 0 ); + } + + if ( set_post_thumbnail( $post_ID, $thumbnail_id ) ) + wp_die( _wp_post_thumbnail_html( $thumbnail_id, $post_ID ) ); + wp_die( 0 ); +} + +function wp_ajax_date_format() { + wp_die( date_i18n( sanitize_option( 'date_format', $_POST['date'] ) ) ); +} + +function wp_ajax_time_format() { + wp_die( date_i18n( sanitize_option( 'time_format', $_POST['date'] ) ) ); +} + +function wp_ajax_wp_fullscreen_save_post() { + $post_id = isset( $_POST['post_ID'] ) ? (int) $_POST['post_ID'] : 0; + + $post = $post_type = null; + + if ( $post_id ) + $post = get_post( $post_id ); + + if ( $post ) + $post_type = $post->post_type; + elseif ( isset( $_POST['post_type'] ) && post_type_exists( $_POST['post_type'] ) ) + $post_type = $_POST['post_type']; + + check_ajax_referer('update-' . $post_type . '_' . $post_id, '_wpnonce'); + + $post_id = edit_post(); + + if ( is_wp_error($post_id) ) { + if ( $post_id->get_error_message() ) + $message = $post_id->get_error_message(); + else + $message = __('Save failed'); + + echo json_encode( array( 'message' => $message, 'last_edited' => '' ) ); + wp_die(); + } else { + $message = __('Saved.'); + } + + if ( $post ) { + $last_date = mysql2date( get_option('date_format'), $post->post_modified ); + $last_time = mysql2date( get_option('time_format'), $post->post_modified ); + } else { + $last_date = date_i18n( get_option('date_format') ); + $last_time = date_i18n( get_option('time_format') ); + } + + if ( $last_id = get_post_meta($post_id, '_edit_last', true) ) { + $last_user = get_userdata($last_id); + $last_edited = sprintf( __('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), $last_date, $last_time ); + } else { + $last_edited = sprintf( __('Last edited on %1$s at %2$s'), $last_date, $last_time ); + } + + echo json_encode( array( 'message' => $message, 'last_edited' => $last_edited ) ); + wp_die(); +} + +function wp_ajax_wp_remove_post_lock() { + if ( empty( $_POST['post_ID'] ) || empty( $_POST['active_post_lock'] ) ) + wp_die( 0 ); + $post_id = (int) $_POST['post_ID']; + if ( ! $post = get_post( $post_id ) ) + wp_die( 0 ); + + check_ajax_referer( 'update-' . $post->post_type . '_' . $post_id ); + + if ( ! current_user_can( 'edit_post', $post_id ) ) + wp_die( -1 ); + + $active_lock = array_map( 'absint', explode( ':', $_POST['active_post_lock'] ) ); + if ( $active_lock[1] != get_current_user_id() ) + wp_die( 0 ); + + $new_lock = ( time() - apply_filters( 'wp_check_post_lock_window', AUTOSAVE_INTERVAL * 2 ) + 5 ) . ':' . $active_lock[1]; + update_post_meta( $post_id, '_edit_lock', $new_lock, implode( ':', $active_lock ) ); + wp_die( 1 ); +} + +function wp_ajax_dismiss_wp_pointer() { + $pointer = $_POST['pointer']; + if ( $pointer != sanitize_key( $pointer ) ) + wp_die( 0 ); + +// check_ajax_referer( 'dismiss-pointer_' . $pointer ); + + $dismissed = array_filter( explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ) ); + + if ( in_array( $pointer, $dismissed ) ) + wp_die( 0 ); + + $dismissed[] = $pointer; + $dismissed = implode( ',', $dismissed ); + + update_user_meta( get_current_user_id(), 'dismissed_wp_pointers', $dismissed ); + wp_die( 1 ); +} diff --git a/wp-admin/includes/bookmark.php b/wp-admin/includes/bookmark.php new file mode 100644 index 0000000..17a8229 --- /dev/null +++ b/wp-admin/includes/bookmark.php @@ -0,0 +1,268 @@ +link_url = esc_url( $_GET['linkurl'] ); + else + $link->link_url = ''; + + if ( isset( $_GET['name'] ) ) + $link->link_name = esc_attr( $_GET['name'] ); + else + $link->link_name = ''; + + $link->link_visible = 'Y'; + + return $link; +} + +/** + * Delete link specified from database + * + * @since 2.0.0 + * + * @param int $link_id ID of the link to delete + * @return bool True + */ +function wp_delete_link( $link_id ) { + global $wpdb; + + do_action( 'delete_link', $link_id ); + + wp_delete_object_term_relationships( $link_id, 'link_category' ); + + $wpdb->delete( $wpdb->links, array( 'link_id' => $link_id ) ); + + do_action( 'deleted_link', $link_id ); + + clean_bookmark_cache( $link_id ); + + return true; +} + +/** + * Retrieves the link categories associated with the link specified. + * + * @since 2.1.0 + * + * @param int $link_id Link ID to look up + * @return array The requested link's categories + */ +function wp_get_link_cats( $link_id = 0 ) { + + $cats = wp_get_object_terms( $link_id, 'link_category', array('fields' => 'ids') ); + + return array_unique( $cats ); +} + +/** + * Retrieve link data based on ID. + * + * @since 2.0.0 + * + * @param int $link_id ID of link to retrieve + * @return object Link for editing + */ +function get_link_to_edit( $link_id ) { + return get_bookmark( $link_id, OBJECT, 'edit' ); +} + +/** + * This function inserts/updates links into/in the database. + * + * @since 2.0.0 + * + * @param array $linkdata Elements that make up the link to insert. + * @param bool $wp_error Optional. If true return WP_Error object on failure. + * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success. + */ +function wp_insert_link( $linkdata, $wp_error = false ) { + global $wpdb; + + $defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 ); + + $linkdata = wp_parse_args( $linkdata, $defaults ); + $linkdata = sanitize_bookmark( $linkdata, 'db' ); + + extract( stripslashes_deep( $linkdata ), EXTR_SKIP ); + + $update = false; + + if ( !empty( $link_id ) ) + $update = true; + + if ( trim( $link_name ) == '' ) { + if ( trim( $link_url ) != '' ) { + $link_name = $link_url; + } else { + return 0; + } + } + + if ( trim( $link_url ) == '' ) + return 0; + + if ( empty( $link_rating ) ) + $link_rating = 0; + + if ( empty( $link_image ) ) + $link_image = ''; + + if ( empty( $link_target ) ) + $link_target = ''; + + if ( empty( $link_visible ) ) + $link_visible = 'Y'; + + if ( empty( $link_owner ) ) + $link_owner = get_current_user_id(); + + if ( empty( $link_notes ) ) + $link_notes = ''; + + if ( empty( $link_description ) ) + $link_description = ''; + + if ( empty( $link_rss ) ) + $link_rss = ''; + + if ( empty( $link_rel ) ) + $link_rel = ''; + + // Make sure we set a valid category + if ( ! isset( $link_category ) || 0 == count( $link_category ) || !is_array( $link_category ) ) { + $link_category = array( get_option( 'default_link_category' ) ); + } + + if ( $update ) { + if ( false === $wpdb->update( $wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id') ) ) { + if ( $wp_error ) + return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error ); + else + return 0; + } + } else { + if ( false === $wpdb->insert( $wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss') ) ) { + if ( $wp_error ) + return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error ); + else + return 0; + } + $link_id = (int) $wpdb->insert_id; + } + + wp_set_link_cats( $link_id, $link_category ); + + if ( $update ) + do_action( 'edit_link', $link_id ); + else + do_action( 'add_link', $link_id ); + + clean_bookmark_cache( $link_id ); + + return $link_id; +} + +/** + * Update link with the specified link categories. + * + * @since 2.1.0 + * + * @param int $link_id ID of link to update + * @param array $link_categories Array of categories to + */ +function wp_set_link_cats( $link_id = 0, $link_categories = array() ) { + // If $link_categories isn't already an array, make it one: + if ( !is_array( $link_categories ) || 0 == count( $link_categories ) ) + $link_categories = array( get_option( 'default_link_category' ) ); + + $link_categories = array_map( 'intval', $link_categories ); + $link_categories = array_unique( $link_categories ); + + wp_set_object_terms( $link_id, $link_categories, 'link_category' ); + + clean_bookmark_cache( $link_id ); +} + +/** + * Update a link in the database. + * + * @since 2.0.0 + * + * @param array $linkdata Link data to update. + * @return int|WP_Error Value 0 or WP_Error on failure. The updated link ID on success. + */ +function wp_update_link( $linkdata ) { + $link_id = (int) $linkdata['link_id']; + + $link = get_bookmark( $link_id, ARRAY_A ); + + // Escape data pulled from DB. + $link = add_magic_quotes( $link ); + + // Passed link category list overwrites existing category list if not empty. + if ( isset( $linkdata['link_category'] ) && is_array( $linkdata['link_category'] ) + && 0 != count( $linkdata['link_category'] ) ) + $link_cats = $linkdata['link_category']; + else + $link_cats = $link['link_category']; + + // Merge old and new fields with new fields overwriting old ones. + $linkdata = array_merge( $link, $linkdata ); + $linkdata['link_category'] = $link_cats; + + return wp_insert_link( $linkdata ); +} diff --git a/wp-admin/includes/class-ftp-pure.php b/wp-admin/includes/class-ftp-pure.php new file mode 100644 index 0000000..c947f44 --- /dev/null +++ b/wp-admin/includes/class-ftp-pure.php @@ -0,0 +1,190 @@ +__construct($verb, $le); + } + + function __construct($verb=FALSE, $le=FALSE) { + parent::__construct(false, $verb, $le); + } + +// +// +// + + function _settimeout($sock) { + if(!@stream_set_timeout($sock, $this->_timeout)) { + $this->PushError('_settimeout','socket set send timeout'); + $this->_quit(); + return FALSE; + } + return TRUE; + } + + function _connect($host, $port) { + $this->SendMSG("Creating socket"); + $sock = @fsockopen($host, $port, $errno, $errstr, $this->_timeout); + if (!$sock) { + $this->PushError('_connect','socket connect failed', $errstr." (".$errno.")"); + return FALSE; + } + $this->_connected=true; + return $sock; + } + + function _readmsg($fnction="_readmsg"){ + if(!$this->_connected) { + $this->PushError($fnction, 'Connect first'); + return FALSE; + } + $result=true; + $this->_message=""; + $this->_code=0; + $go=true; + do { + $tmp=@fgets($this->_ftp_control_sock, 512); + if($tmp===false) { + $go=$result=false; + $this->PushError($fnction,'Read failed'); + } else { + $this->_message.=$tmp; + if(preg_match("/^([0-9]{3})(-(.*[".CRLF."]{1,2})+\\1)? [^".CRLF."]+[".CRLF."]{1,2}$/", $this->_message, $regs)) $go=false; + } + } while($go); + if($this->LocalEcho) echo "GET < ".rtrim($this->_message, CRLF).CRLF; + $this->_code=(int)$regs[1]; + return $result; + } + + function _exec($cmd, $fnction="_exec") { + if(!$this->_ready) { + $this->PushError($fnction,'Connect first'); + return FALSE; + } + if($this->LocalEcho) echo "PUT > ",$cmd,CRLF; + $status=@fputs($this->_ftp_control_sock, $cmd.CRLF); + if($status===false) { + $this->PushError($fnction,'socket write failed'); + return FALSE; + } + $this->_lastaction=time(); + if(!$this->_readmsg($fnction)) return FALSE; + return TRUE; + } + + function _data_prepare($mode=FTP_ASCII) { + if(!$this->_settype($mode)) return FALSE; + if($this->_passive) { + if(!$this->_exec("PASV", "pasv")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message)); + $this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3]; + $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]); + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + $this->_ftp_data_sock=@fsockopen($this->_datahost, $this->_dataport, $errno, $errstr, $this->_timeout); + if(!$this->_ftp_data_sock) { + $this->PushError("_data_prepare","fsockopen fails", $errstr." (".$errno.")"); + $this->_data_close(); + return FALSE; + } + else $this->_ftp_data_sock; + } else { + $this->SendMSG("Only passive connections available!"); + return FALSE; + } + return TRUE; + } + + function _data_read($mode=FTP_ASCII, $fp=NULL) { + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Only passive connections available!"); + return FALSE; + } + while (!feof($this->_ftp_data_sock)) { + $block=fread($this->_ftp_data_sock, $this->_ftp_buff_size); + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_local], $block); + if(is_resource($fp)) $out+=fwrite($fp, $block, strlen($block)); + else $out.=$block; + } + return $out; + } + + function _data_write($mode=FTP_ASCII, $fp=NULL) { + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Only passive connections available!"); + return FALSE; + } + if(is_resource($fp)) { + while(!feof($fp)) { + $block=fread($fp, $this->_ftp_buff_size); + if(!$this->_data_write_block($mode, $block)) return false; + } + } elseif(!$this->_data_write_block($mode, $fp)) return false; + return TRUE; + } + + function _data_write_block($mode, $block) { + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_remote], $block); + do { + if(($t=@fwrite($this->_ftp_data_sock, $block))===FALSE) { + $this->PushError("_data_write","Can't write to socket"); + return FALSE; + } + $block=substr($block, $t); + } while(!empty($block)); + return true; + } + + function _data_close() { + @fclose($this->_ftp_data_sock); + $this->SendMSG("Disconnected data from remote host"); + return TRUE; + } + + function _quit($force=FALSE) { + if($this->_connected or $force) { + @fclose($this->_ftp_control_sock); + $this->_connected=false; + $this->SendMSG("Socket closed"); + } + } +} + +?> diff --git a/wp-admin/includes/class-ftp-sockets.php b/wp-admin/includes/class-ftp-sockets.php new file mode 100644 index 0000000..4026dd0 --- /dev/null +++ b/wp-admin/includes/class-ftp-sockets.php @@ -0,0 +1,250 @@ +__construct($verb, $le); + } + + function __construct($verb=FALSE, $le=FALSE) { + parent::__construct(true, $verb, $le); + } + +// +// +// + + function _settimeout($sock) { + if(!@socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>$this->_timeout, "usec"=>0))) { + $this->PushError('_connect','socket set receive timeout',socket_strerror(socket_last_error($sock))); + @socket_close($sock); + return FALSE; + } + if(!@socket_set_option($sock, SOL_SOCKET , SO_SNDTIMEO, array("sec"=>$this->_timeout, "usec"=>0))) { + $this->PushError('_connect','socket set send timeout',socket_strerror(socket_last_error($sock))); + @socket_close($sock); + return FALSE; + } + return true; + } + + function _connect($host, $port) { + $this->SendMSG("Creating socket"); + if(!($sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) { + $this->PushError('_connect','socket create failed',socket_strerror(socket_last_error($sock))); + return FALSE; + } + if(!$this->_settimeout($sock)) return FALSE; + $this->SendMSG("Connecting to \"".$host.":".$port."\""); + if (!($res = @socket_connect($sock, $host, $port))) { + $this->PushError('_connect','socket connect failed',socket_strerror(socket_last_error($sock))); + @socket_close($sock); + return FALSE; + } + $this->_connected=true; + return $sock; + } + + function _readmsg($fnction="_readmsg"){ + if(!$this->_connected) { + $this->PushError($fnction,'Connect first'); + return FALSE; + } + $result=true; + $this->_message=""; + $this->_code=0; + $go=true; + do { + $tmp=@socket_read($this->_ftp_control_sock, 4096, PHP_BINARY_READ); + if($tmp===false) { + $go=$result=false; + $this->PushError($fnction,'Read failed', socket_strerror(socket_last_error($this->_ftp_control_sock))); + } else { + $this->_message.=$tmp; + $go = !preg_match("/^([0-9]{3})(-.+\\1)? [^".CRLF."]+".CRLF."$/Us", $this->_message, $regs); + } + } while($go); + if($this->LocalEcho) echo "GET < ".rtrim($this->_message, CRLF).CRLF; + $this->_code=(int)$regs[1]; + return $result; + } + + function _exec($cmd, $fnction="_exec") { + if(!$this->_ready) { + $this->PushError($fnction,'Connect first'); + return FALSE; + } + if($this->LocalEcho) echo "PUT > ",$cmd,CRLF; + $status=@socket_write($this->_ftp_control_sock, $cmd.CRLF); + if($status===false) { + $this->PushError($fnction,'socket write failed', socket_strerror(socket_last_error($this->stream))); + return FALSE; + } + $this->_lastaction=time(); + if(!$this->_readmsg($fnction)) return FALSE; + return TRUE; + } + + function _data_prepare($mode=FTP_ASCII) { + if(!$this->_settype($mode)) return FALSE; + $this->SendMSG("Creating data socket"); + $this->_ftp_data_sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP); + if ($this->_ftp_data_sock < 0) { + $this->PushError('_data_prepare','socket create failed',socket_strerror(socket_last_error($this->_ftp_data_sock))); + return FALSE; + } + if(!$this->_settimeout($this->_ftp_data_sock)) { + $this->_data_close(); + return FALSE; + } + if($this->_passive) { + if(!$this->_exec("PASV", "pasv")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message)); + $this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3]; + $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]); + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + if(!@socket_connect($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) { + $this->PushError("_data_prepare","socket_connect", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + else $this->_ftp_temp_sock=$this->_ftp_data_sock; + } else { + if(!@socket_getsockname($this->_ftp_control_sock, $addr, $port)) { + $this->PushError("_data_prepare","can't get control socket information", socket_strerror(socket_last_error($this->_ftp_control_sock))); + $this->_data_close(); + return FALSE; + } + if(!@socket_bind($this->_ftp_data_sock,$addr)){ + $this->PushError("_data_prepare","can't bind data socket", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + if(!@socket_listen($this->_ftp_data_sock)) { + $this->PushError("_data_prepare","can't listen data socket", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + if(!@socket_getsockname($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) { + $this->PushError("_data_prepare","can't get data socket information", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + if(!$this->_exec('PORT '.str_replace('.',',',$this->_datahost.'.'.($this->_dataport>>8).'.'.($this->_dataport&0x00FF)), "_port")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + } + return TRUE; + } + + function _data_read($mode=FTP_ASCII, $fp=NULL) { + $NewLine=$this->_eol_code[$this->OS_local]; + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + $this->_ftp_temp_sock=socket_accept($this->_ftp_data_sock); + if($this->_ftp_temp_sock===FALSE) { + $this->PushError("_data_read","socket_accept", socket_strerror(socket_last_error($this->_ftp_temp_sock))); + $this->_data_close(); + return FALSE; + } + } + + while(($block=@socket_read($this->_ftp_temp_sock, $this->_ftp_buff_size, PHP_BINARY_READ))!==false) { + if($block==="") break; + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_local], $block); + if(is_resource($fp)) $out+=fwrite($fp, $block, strlen($block)); + else $out.=$block; + } + return $out; + } + + function _data_write($mode=FTP_ASCII, $fp=NULL) { + $NewLine=$this->_eol_code[$this->OS_local]; + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + $this->_ftp_temp_sock=socket_accept($this->_ftp_data_sock); + if($this->_ftp_temp_sock===FALSE) { + $this->PushError("_data_write","socket_accept", socket_strerror(socket_last_error($this->_ftp_temp_sock))); + $this->_data_close(); + return false; + } + } + if(is_resource($fp)) { + while(!feof($fp)) { + $block=fread($fp, $this->_ftp_buff_size); + if(!$this->_data_write_block($mode, $block)) return false; + } + } elseif(!$this->_data_write_block($mode, $fp)) return false; + return true; + } + + function _data_write_block($mode, $block) { + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_remote], $block); + do { + if(($t=@socket_write($this->_ftp_temp_sock, $block))===FALSE) { + $this->PushError("_data_write","socket_write", socket_strerror(socket_last_error($this->_ftp_temp_sock))); + $this->_data_close(); + return FALSE; + } + $block=substr($block, $t); + } while(!empty($block)); + return true; + } + + function _data_close() { + @socket_close($this->_ftp_temp_sock); + @socket_close($this->_ftp_data_sock); + $this->SendMSG("Disconnected data from remote host"); + return TRUE; + } + + function _quit() { + if($this->_connected) { + @socket_close($this->_ftp_control_sock); + $this->_connected=false; + $this->SendMSG("Socket closed"); + } + } +} +?> diff --git a/wp-admin/includes/class-ftp.php b/wp-admin/includes/class-ftp.php new file mode 100644 index 0000000..1ae3e87 --- /dev/null +++ b/wp-admin/includes/class-ftp.php @@ -0,0 +1,907 @@ +__construct($port_mode); + } + + function __construct($port_mode=FALSE, $verb=FALSE, $le=FALSE) { + $this->LocalEcho=$le; + $this->Verbose=$verb; + $this->_lastaction=NULL; + $this->_error_array=array(); + $this->_eol_code=array(FTP_OS_Unix=>"\n", FTP_OS_Mac=>"\r", FTP_OS_Windows=>"\r\n"); + $this->AuthorizedTransferMode=array(FTP_AUTOASCII, FTP_ASCII, FTP_BINARY); + $this->OS_FullName=array(FTP_OS_Unix => 'UNIX', FTP_OS_Windows => 'WINDOWS', FTP_OS_Mac => 'MACOS'); + $this->AutoAsciiExt=array("ASP","BAT","C","CPP","CSS","CSV","JS","H","HTM","HTML","SHTML","INI","LOG","PHP3","PHTML","PL","PERL","SH","SQL","TXT"); + $this->_port_available=($port_mode==TRUE); + $this->SendMSG("Staring FTP client class".($this->_port_available?"":" without PORT mode support")); + $this->_connected=FALSE; + $this->_ready=FALSE; + $this->_can_restore=FALSE; + $this->_code=0; + $this->_message=""; + $this->_ftp_buff_size=4096; + $this->_curtype=NULL; + $this->SetUmask(0022); + $this->SetType(FTP_AUTOASCII); + $this->SetTimeout(30); + $this->Passive(!$this->_port_available); + $this->_login="anonymous"; + $this->_password="anon@ftp.com"; + $this->_features=array(); + $this->OS_local=FTP_OS_Unix; + $this->OS_remote=FTP_OS_Unix; + $this->features=array(); + if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $this->OS_local=FTP_OS_Windows; + elseif(strtoupper(substr(PHP_OS, 0, 3)) === 'MAC') $this->OS_local=FTP_OS_Mac; + } + +// +// +// + + function parselisting($line) { + $is_windows = ($this->OS_remote == FTP_OS_Windows); + if ($is_windows && preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|) +(.+)/",$line,$lucifer)) { + $b = array(); + if ($lucifer[3]<70) { $lucifer[3]+=2000; } else { $lucifer[3]+=1900; } // 4digit year fix + $b['isdir'] = ($lucifer[7]==""); + if ( $b['isdir'] ) + $b['type'] = 'd'; + else + $b['type'] = 'f'; + $b['size'] = $lucifer[7]; + $b['month'] = $lucifer[1]; + $b['day'] = $lucifer[2]; + $b['year'] = $lucifer[3]; + $b['hour'] = $lucifer[4]; + $b['minute'] = $lucifer[5]; + $b['time'] = @mktime($lucifer[4]+(strcasecmp($lucifer[6],"PM")==0?12:0),$lucifer[5],0,$lucifer[1],$lucifer[2],$lucifer[3]); + $b['am/pm'] = $lucifer[6]; + $b['name'] = $lucifer[8]; + } else if (!$is_windows && $lucifer=preg_split("/[ ]/",$line,9,PREG_SPLIT_NO_EMPTY)) { + //echo $line."\n"; + $lcount=count($lucifer); + if ($lcount<8) return ''; + $b = array(); + $b['isdir'] = $lucifer[0]{0} === "d"; + $b['islink'] = $lucifer[0]{0} === "l"; + if ( $b['isdir'] ) + $b['type'] = 'd'; + elseif ( $b['islink'] ) + $b['type'] = 'l'; + else + $b['type'] = 'f'; + $b['perms'] = $lucifer[0]; + $b['number'] = $lucifer[1]; + $b['owner'] = $lucifer[2]; + $b['group'] = $lucifer[3]; + $b['size'] = $lucifer[4]; + if ($lcount==8) { + sscanf($lucifer[5],"%d-%d-%d",$b['year'],$b['month'],$b['day']); + sscanf($lucifer[6],"%d:%d",$b['hour'],$b['minute']); + $b['time'] = @mktime($b['hour'],$b['minute'],0,$b['month'],$b['day'],$b['year']); + $b['name'] = $lucifer[7]; + } else { + $b['month'] = $lucifer[5]; + $b['day'] = $lucifer[6]; + if (preg_match("/([0-9]{2}):([0-9]{2})/",$lucifer[7],$l2)) { + $b['year'] = date("Y"); + $b['hour'] = $l2[1]; + $b['minute'] = $l2[2]; + } else { + $b['year'] = $lucifer[7]; + $b['hour'] = 0; + $b['minute'] = 0; + } + $b['time'] = strtotime(sprintf("%d %s %d %02d:%02d",$b['day'],$b['month'],$b['year'],$b['hour'],$b['minute'])); + $b['name'] = $lucifer[8]; + } + } + + return $b; + } + + function SendMSG($message = "", $crlf=true) { + if ($this->Verbose) { + echo $message.($crlf?CRLF:""); + flush(); + } + return TRUE; + } + + function SetType($mode=FTP_AUTOASCII) { + if(!in_array($mode, $this->AuthorizedTransferMode)) { + $this->SendMSG("Wrong type"); + return FALSE; + } + $this->_type=$mode; + $this->SendMSG("Transfer type: ".($this->_type==FTP_BINARY?"binary":($this->_type==FTP_ASCII?"ASCII":"auto ASCII") ) ); + return TRUE; + } + + function _settype($mode=FTP_ASCII) { + if($this->_ready) { + if($mode==FTP_BINARY) { + if($this->_curtype!=FTP_BINARY) { + if(!$this->_exec("TYPE I", "SetType")) return FALSE; + $this->_curtype=FTP_BINARY; + } + } elseif($this->_curtype!=FTP_ASCII) { + if(!$this->_exec("TYPE A", "SetType")) return FALSE; + $this->_curtype=FTP_ASCII; + } + } else return FALSE; + return TRUE; + } + + function Passive($pasv=NULL) { + if(is_null($pasv)) $this->_passive=!$this->_passive; + else $this->_passive=$pasv; + if(!$this->_port_available and !$this->_passive) { + $this->SendMSG("Only passive connections available!"); + $this->_passive=TRUE; + return FALSE; + } + $this->SendMSG("Passive mode ".($this->_passive?"on":"off")); + return TRUE; + } + + function SetServer($host, $port=21, $reconnect=true) { + if(!is_long($port)) { + $this->verbose=true; + $this->SendMSG("Incorrect port syntax"); + return FALSE; + } else { + $ip=@gethostbyname($host); + $dns=@gethostbyaddr($host); + if(!$ip) $ip=$host; + if(!$dns) $dns=$host; + // Validate the IPAddress PHP4 returns -1 for invalid, PHP5 false + // -1 === "255.255.255.255" which is the broadcast address which is also going to be invalid + $ipaslong = ip2long($ip); + if ( ($ipaslong == false) || ($ipaslong === -1) ) { + $this->SendMSG("Wrong host name/address \"".$host."\""); + return FALSE; + } + $this->_host=$ip; + $this->_fullhost=$dns; + $this->_port=$port; + $this->_dataport=$port-1; + } + $this->SendMSG("Host \"".$this->_fullhost."(".$this->_host."):".$this->_port."\""); + if($reconnect){ + if($this->_connected) { + $this->SendMSG("Reconnecting"); + if(!$this->quit(FTP_FORCE)) return FALSE; + if(!$this->connect()) return FALSE; + } + } + return TRUE; + } + + function SetUmask($umask=0022) { + $this->_umask=$umask; + umask($this->_umask); + $this->SendMSG("UMASK 0".decoct($this->_umask)); + return TRUE; + } + + function SetTimeout($timeout=30) { + $this->_timeout=$timeout; + $this->SendMSG("Timeout ".$this->_timeout); + if($this->_connected) + if(!$this->_settimeout($this->_ftp_control_sock)) return FALSE; + return TRUE; + } + + function connect($server=NULL) { + if(!empty($server)) { + if(!$this->SetServer($server)) return false; + } + if($this->_ready) return true; + $this->SendMsg('Local OS : '.$this->OS_FullName[$this->OS_local]); + if(!($this->_ftp_control_sock = $this->_connect($this->_host, $this->_port))) { + $this->SendMSG("Error : Cannot connect to remote host \"".$this->_fullhost." :".$this->_port."\""); + return FALSE; + } + $this->SendMSG("Connected to remote host \"".$this->_fullhost.":".$this->_port."\". Waiting for greeting."); + do { + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + $this->_lastaction=time(); + } while($this->_code<200); + $this->_ready=true; + $syst=$this->systype(); + if(!$syst) $this->SendMSG("Can't detect remote OS"); + else { + if(preg_match("/win|dos|novell/i", $syst[0])) $this->OS_remote=FTP_OS_Windows; + elseif(preg_match("/os/i", $syst[0])) $this->OS_remote=FTP_OS_Mac; + elseif(preg_match("/(li|u)nix/i", $syst[0])) $this->OS_remote=FTP_OS_Unix; + else $this->OS_remote=FTP_OS_Mac; + $this->SendMSG("Remote OS: ".$this->OS_FullName[$this->OS_remote]); + } + if(!$this->features()) $this->SendMSG("Can't get features list. All supported - disabled"); + else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features))); + return TRUE; + } + + function quit($force=false) { + if($this->_ready) { + if(!$this->_exec("QUIT") and !$force) return FALSE; + if(!$this->_checkCode() and !$force) return FALSE; + $this->_ready=false; + $this->SendMSG("Session finished"); + } + $this->_quit(); + return TRUE; + } + + function login($user=NULL, $pass=NULL) { + if(!is_null($user)) $this->_login=$user; + else $this->_login="anonymous"; + if(!is_null($pass)) $this->_password=$pass; + else $this->_password="anon@anon.com"; + if(!$this->_exec("USER ".$this->_login, "login")) return FALSE; + if(!$this->_checkCode()) return FALSE; + if($this->_code!=230) { + if(!$this->_exec((($this->_code==331)?"PASS ":"ACCT ").$this->_password, "login")) return FALSE; + if(!$this->_checkCode()) return FALSE; + } + $this->SendMSG("Authentication succeeded"); + if(empty($this->_features)) { + if(!$this->features()) $this->SendMSG("Can't get features list. All supported - disabled"); + else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features))); + } + return TRUE; + } + + function pwd() { + if(!$this->_exec("PWD", "pwd")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return ereg_replace("^[0-9]{3} \"(.+)\".+", "\\1", $this->_message); + } + + function cdup() { + if(!$this->_exec("CDUP", "cdup")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return true; + } + + function chdir($pathname) { + if(!$this->_exec("CWD ".$pathname, "chdir")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function rmdir($pathname) { + if(!$this->_exec("RMD ".$pathname, "rmdir")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function mkdir($pathname) { + if(!$this->_exec("MKD ".$pathname, "mkdir")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function rename($from, $to) { + if(!$this->_exec("RNFR ".$from, "rename")) return FALSE; + if(!$this->_checkCode()) return FALSE; + if($this->_code==350) { + if(!$this->_exec("RNTO ".$to, "rename")) return FALSE; + if(!$this->_checkCode()) return FALSE; + } else return FALSE; + return TRUE; + } + + function filesize($pathname) { + if(!isset($this->_features["SIZE"])) { + $this->PushError("filesize", "not supported by server"); + return FALSE; + } + if(!$this->_exec("SIZE ".$pathname, "filesize")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message); + } + + function abort() { + if(!$this->_exec("ABOR", "abort")) return FALSE; + if(!$this->_checkCode()) { + if($this->_code!=426) return FALSE; + if(!$this->_readmsg("abort")) return FALSE; + if(!$this->_checkCode()) return FALSE; + } + return true; + } + + function mdtm($pathname) { + if(!isset($this->_features["MDTM"])) { + $this->PushError("mdtm", "not supported by server"); + return FALSE; + } + if(!$this->_exec("MDTM ".$pathname, "mdtm")) return FALSE; + if(!$this->_checkCode()) return FALSE; + $mdtm = ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message); + $date = sscanf($mdtm, "%4d%2d%2d%2d%2d%2d"); + $timestamp = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]); + return $timestamp; + } + + function systype() { + if(!$this->_exec("SYST", "systype")) return FALSE; + if(!$this->_checkCode()) return FALSE; + $DATA = explode(" ", $this->_message); + return array($DATA[1], $DATA[3]); + } + + function delete($pathname) { + if(!$this->_exec("DELE ".$pathname, "delete")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function site($command, $fnction="site") { + if(!$this->_exec("SITE ".$command, $fnction)) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function chmod($pathname, $mode) { + if(!$this->site( sprintf('CHMOD %o %s', $mode, $pathname), "chmod")) return FALSE; + return TRUE; + } + + function restore($from) { + if(!isset($this->_features["REST"])) { + $this->PushError("restore", "not supported by server"); + return FALSE; + } + if($this->_curtype!=FTP_BINARY) { + $this->PushError("restore", "can't restore in ASCII mode"); + return FALSE; + } + if(!$this->_exec("REST ".$from, "resore")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function features() { + if(!$this->_exec("FEAT", "features")) return FALSE; + if(!$this->_checkCode()) return FALSE; + $f=preg_split("/[".CRLF."]+/", preg_replace("/[0-9]{3}[ -].*[".CRLF."]+/", "", $this->_message), -1, PREG_SPLIT_NO_EMPTY); + $this->_features=array(); + foreach($f as $k=>$v) { + $v=explode(" ", trim($v)); + $this->_features[array_shift($v)]=$v; + } + return true; + } + + function rawlist($pathname="", $arg="") { + return $this->_list(($arg?" ".$arg:"").($pathname?" ".$pathname:""), "LIST", "rawlist"); + } + + function nlist($pathname="") { + return $this->_list(($arg?" ".$arg:"").($pathname?" ".$pathname:""), "NLST", "nlist"); + } + + function is_exists($pathname) { + return $this->file_exists($pathname); + } + + function file_exists($pathname) { + $exists=true; + if(!$this->_exec("RNFR ".$pathname, "rename")) $exists=FALSE; + else { + if(!$this->_checkCode()) $exists=FALSE; + $this->abort(); + } + if($exists) $this->SendMSG("Remote file ".$pathname." exists"); + else $this->SendMSG("Remote file ".$pathname." does not exist"); + return $exists; + } + + function fget($fp, $remotefile,$rest=0) { + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($remotefile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("RETR ".$remotefile, "get")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $out=$this->_data_read($mode, $fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $out; + } + + function get($remotefile, $localfile=NULL, $rest=0) { + if(is_null($localfile)) $localfile=$remotefile; + if (@file_exists($localfile)) $this->SendMSG("Warning : local file will be overwritten"); + $fp = @fopen($localfile, "w"); + if (!$fp) { + $this->PushError("get","can't open local file", "Cannot create \"".$localfile."\""); + return FALSE; + } + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($remotefile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + fclose($fp); + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("RETR ".$remotefile, "get")) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + $out=$this->_data_read($mode, $fp); + fclose($fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $out; + } + + function fput($remotefile, $fp) { + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($remotefile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("STOR ".$remotefile, "put")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $ret=$this->_data_write($mode, $fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $ret; + } + + function put($localfile, $remotefile=NULL, $rest=0) { + if(is_null($remotefile)) $remotefile=$localfile; + if (!file_exists($localfile)) { + $this->PushError("put","can't open local file", "No such file or directory \"".$localfile."\""); + return FALSE; + } + $fp = @fopen($localfile, "r"); + + if (!$fp) { + $this->PushError("put","can't open local file", "Cannot read file \"".$localfile."\""); + return FALSE; + } + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($localfile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + fclose($fp); + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("STOR ".$remotefile, "put")) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + $ret=$this->_data_write($mode, $fp); + fclose($fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $ret; + } + + function mput($local=".", $remote=NULL, $continious=false) { + $local=realpath($local); + if(!@file_exists($local)) { + $this->PushError("mput","can't open local folder", "Cannot stat folder \"".$local."\""); + return FALSE; + } + if(!is_dir($local)) return $this->put($local, $remote); + if(empty($remote)) $remote="."; + elseif(!$this->file_exists($remote) and !$this->mkdir($remote)) return FALSE; + if($handle = opendir($local)) { + $list=array(); + while (false !== ($file = readdir($handle))) { + if ($file != "." && $file != "..") $list[]=$file; + } + closedir($handle); + } else { + $this->PushError("mput","can't open local folder", "Cannot read folder \"".$local."\""); + return FALSE; + } + if(empty($list)) return TRUE; + $ret=true; + foreach($list as $el) { + if(is_dir($local."/".$el)) $t=$this->mput($local."/".$el, $remote."/".$el); + else $t=$this->put($local."/".$el, $remote."/".$el); + if(!$t) { + $ret=FALSE; + if(!$continious) break; + } + } + return $ret; + + } + + function mget($remote, $local=".", $continious=false) { + $list=$this->rawlist($remote, "-lA"); + if($list===false) { + $this->PushError("mget","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); + return FALSE; + } + if(empty($list)) return true; + if(!@file_exists($local)) { + if(!@mkdir($local)) { + $this->PushError("mget","can't create local folder", "Cannot create folder \"".$local."\""); + return FALSE; + } + } + foreach($list as $k=>$v) { + $list[$k]=$this->parselisting($v); + if($list[$k]["name"]=="." or $list[$k]["name"]=="..") unset($list[$k]); + } + $ret=true; + foreach($list as $el) { + if($el["type"]=="d") { + if(!$this->mget($remote."/".$el["name"], $local."/".$el["name"], $continious)) { + $this->PushError("mget", "can't copy folder", "Can't copy remote folder \"".$remote."/".$el["name"]."\" to local \"".$local."/".$el["name"]."\""); + $ret=false; + if(!$continious) break; + } + } else { + if(!$this->get($remote."/".$el["name"], $local."/".$el["name"])) { + $this->PushError("mget", "can't copy file", "Can't copy remote file \"".$remote."/".$el["name"]."\" to local \"".$local."/".$el["name"]."\""); + $ret=false; + if(!$continious) break; + } + } + @chmod($local."/".$el["name"], $el["perms"]); + $t=strtotime($el["date"]); + if($t!==-1 and $t!==false) @touch($local."/".$el["name"], $t); + } + return $ret; + } + + function mdel($remote, $continious=false) { + $list=$this->rawlist($remote, "-la"); + if($list===false) { + $this->PushError("mdel","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); + return false; + } + + foreach($list as $k=>$v) { + $list[$k]=$this->parselisting($v); + if($list[$k]["name"]=="." or $list[$k]["name"]=="..") unset($list[$k]); + } + $ret=true; + + foreach($list as $el) { + if ( empty($el) ) + continue; + + if($el["type"]=="d") { + if(!$this->mdel($remote."/".$el["name"], $continious)) { + $ret=false; + if(!$continious) break; + } + } else { + if (!$this->delete($remote."/".$el["name"])) { + $this->PushError("mdel", "can't delete file", "Can't delete remote file \"".$remote."/".$el["name"]."\""); + $ret=false; + if(!$continious) break; + } + } + } + + if(!$this->rmdir($remote)) { + $this->PushError("mdel", "can't delete folder", "Can't delete remote folder \"".$remote."/".$el["name"]."\""); + $ret=false; + } + return $ret; + } + + function mmkdir($dir, $mode = 0777) { + if(empty($dir)) return FALSE; + if($this->is_exists($dir) or $dir == "/" ) return TRUE; + if(!$this->mmkdir(dirname($dir), $mode)) return false; + $r=$this->mkdir($dir, $mode); + $this->chmod($dir,$mode); + return $r; + } + + function glob($pattern, $handle=NULL) { + $path=$output=null; + if(PHP_OS=='WIN32') $slash='\\'; + else $slash='/'; + $lastpos=strrpos($pattern,$slash); + if(!($lastpos===false)) { + $path=substr($pattern,0,-$lastpos-1); + $pattern=substr($pattern,$lastpos); + } else $path=getcwd(); + if(is_array($handle) and !empty($handle)) { + while($dir=each($handle)) { + if($this->glob_pattern_match($pattern,$dir)) + $output[]=$dir; + } + } else { + $handle=@opendir($path); + if($handle===false) return false; + while($dir=readdir($handle)) { + if($this->glob_pattern_match($pattern,$dir)) + $output[]=$dir; + } + closedir($handle); + } + if(is_array($output)) return $output; + return false; + } + + function glob_pattern_match($pattern,$string) { + $out=null; + $chunks=explode(';',$pattern); + foreach($chunks as $pattern) { + $escape=array('$','^','.','{','}','(',')','[',']','|'); + while(strpos($pattern,'**')!==false) + $pattern=str_replace('**','*',$pattern); + foreach($escape as $probe) + $pattern=str_replace($probe,"\\$probe",$pattern); + $pattern=str_replace('?*','*', + str_replace('*?','*', + str_replace('*',".*", + str_replace('?','.{1,1}',$pattern)))); + $out[]=$pattern; + } + if(count($out)==1) return($this->glob_regexp("^$out[0]$",$string)); + else { + foreach($out as $tester) + if($this->my_regexp("^$tester$",$string)) return true; + } + return false; + } + + function glob_regexp($pattern,$probe) { + $sensitive=(PHP_OS!='WIN32'); + return ($sensitive? + ereg($pattern,$probe): + eregi($pattern,$probe) + ); + } + + function dirlist($remote) { + $list=$this->rawlist($remote, "-la"); + if($list===false) { + $this->PushError("dirlist","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); + return false; + } + + $dirlist = array(); + foreach($list as $k=>$v) { + $entry=$this->parselisting($v); + if ( empty($entry) ) + continue; + + if($entry["name"]=="." or $entry["name"]=="..") + continue; + + $dirlist[$entry['name']] = $entry; + } + + return $dirlist; + } +// +// +// + function _checkCode() { + return ($this->_code<400 and $this->_code>0); + } + + function _list($arg="", $cmd="LIST", $fnction="_list") { + if(!$this->_data_prepare()) return false; + if(!$this->_exec($cmd.$arg, $fnction)) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $out=""; + if($this->_code<200) { + $out=$this->_data_read(); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + if($out === FALSE ) return FALSE; + $out=preg_split("/[".CRLF."]+/", $out, -1, PREG_SPLIT_NO_EMPTY); +// $this->SendMSG(implode($this->_eol_code[$this->OS_local], $out)); + } + return $out; + } + +// +// +// +// Gnre une erreur pour traitement externe la classe + function PushError($fctname,$msg,$desc=false){ + $error=array(); + $error['time']=time(); + $error['fctname']=$fctname; + $error['msg']=$msg; + $error['desc']=$desc; + if($desc) $tmp=' ('.$desc.')'; else $tmp=''; + $this->SendMSG($fctname.': '.$msg.$tmp); + return(array_push($this->_error_array,$error)); + } + +// Rcupre une erreur externe + function PopError(){ + if(count($this->_error_array)) return(array_pop($this->_error_array)); + else return(false); + } +} + +$mod_sockets = extension_loaded( 'sockets' ); +if ( ! $mod_sockets && function_exists( 'dl' ) && is_callable( 'dl' ) ) { + $prefix = ( PHP_SHLIB_SUFFIX == 'dll' ) ? 'php_' : ''; + @dl( $prefix . 'sockets.' . PHP_SHLIB_SUFFIX ); + $mod_sockets = extension_loaded( 'sockets' ); +} + +require_once "class-ftp-" . ( $mod_sockets ? "sockets" : "pure" ) . ".php"; +?> diff --git a/wp-admin/includes/class-pclzip.php b/wp-admin/includes/class-pclzip.php new file mode 100644 index 0000000..5e6a619 --- /dev/null +++ b/wp-admin/includes/class-pclzip.php @@ -0,0 +1,5687 @@ +zipname = $p_zipname; + $this->zip_fd = 0; + $this->magic_quotes_status = -1; + + // ----- Return + return; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // create($p_filelist, $p_add_dir="", $p_remove_dir="") + // create($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two different synopsis. The first one is historical. + // This method creates a Zip Archive. The Zip file is created in the + // filesystem. The files and directories indicated in $p_filelist + // are added in the archive. See the parameters description for the + // supported format of $p_filelist. + // When a directory is in the list, the directory and its content is added + // in the archive. + // In this synopsis, the function takes an optional variable list of + // options. See bellow the supported options. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function create($p_filelist) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove from the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } + else if ($v_size > 2) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Invalid number / type of arguments"); + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + } + + // ----- The list is a list of string names + else { + $v_string_list = $p_filelist; + } + } + + // ----- Look if the $p_filelist is a string + else if (is_string($p_filelist)) { + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + } + + // ----- Invalid variable type for $p_filelist + else { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + if ($v_string != '') { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } + else { + } + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes + = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' + ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' + ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' + ,PCLZIP_ATT_FILE_MTIME => 'optional' + ,PCLZIP_ATT_FILE_CONTENT => 'optional' + ,PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, + $v_filedescr_list[], + $v_options, + $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // add($p_filelist, $p_add_dir="", $p_remove_dir="") + // add($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two synopsis. The first one is historical. + // This methods add the list of files in an existing archive. + // If a file with the same name already exists, it is added at the end of the + // archive, the first one is still present. + // If the archive does not exist, it is created. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_OPT_ADD_COMMENT : + // PCLZIP_OPT_PREPEND_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function add($p_filelist) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_ADD_COMMENT => 'optional', + PCLZIP_OPT_PREPEND_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + } + + // ----- The list is a list of string names + else { + $v_string_list = $p_filelist; + } + } + + // ----- Look if the $p_filelist is a string + else if (is_string($p_filelist)) { + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + } + + // ----- Invalid variable type for $p_filelist + else { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes + = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' + ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' + ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' + ,PCLZIP_ATT_FILE_MTIME => 'optional' + ,PCLZIP_ATT_FILE_CONTENT => 'optional' + ,PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, + $v_filedescr_list[], + $v_options, + $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : listContent() + // Description : + // This public method, gives the list of the files and directories, with their + // properties. + // The properties of each entries in the list are (used also in other functions) : + // filename : Name of the file. For a create or add action it is the filename + // given by the user. For an extract function it is the filename + // of the extracted file. + // stored_filename : Name of the file / directory stored in the archive. + // size : Size of the stored file. + // compressed_size : Size of the file's data compressed in the archive + // (without the headers overhead) + // mtime : Last known modification date of the file (UNIX timestamp) + // comment : Comment associated with the file + // folder : true | false + // index : index of the file in the archive + // status : status of the action (depending of the action) : + // Values are : + // ok : OK ! + // filtered : the file / dir is not extracted (filtered by user) + // already_a_directory : the file can not be extracted because a + // directory with the same name already exists + // write_protected : the file can not be extracted because a file + // with the same name already exists and is + // write protected + // newer_exist : the file was not extracted because a newer file exists + // path_creation_fail : the file is not extracted because the folder + // does not exist and can not be created + // write_error : the file was not extracted because there was a + // error while writing the file + // read_error : the file was not extracted because there was a error + // while reading the file + // invalid_header : the file was not extracted because of an archive + // format error (bad file header) + // Note that each time a method can continue operating when there + // is an action error on a file, the error is only logged in the file status. + // Return Values : + // 0 on an unrecoverable failure, + // The list of the files in the archive. + // -------------------------------------------------------------------------------- + function listContent() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Call the extracting fct + $p_list = array(); + if (($v_result = $this->privList($p_list)) != 1) + { + unset($p_list); + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // extract($p_path="./", $p_remove_path="") + // extract([$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method extract all the files / directories from the archive to the + // folder indicated in $p_path. + // If you want to ignore the 'root' part of path of the memorized files + // you can indicate this in the optional $p_remove_path parameter. + // By default, if a newer file with the same name already exists, the + // file is not extracted. + // + // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions + // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append + // at the end of the path value of PCLZIP_OPT_PATH. + // Parameters : + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 or a negative value on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function extract() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); +// $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional' + ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' + ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Trace + + // ----- Call the extracting fct + $p_list = array(); + $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, + $v_remove_all_path, $v_options); + if ($v_result < 1) { + unset($p_list); + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + + // -------------------------------------------------------------------------------- + // Function : + // extractByIndex($p_index, $p_path="./", $p_remove_path="") + // extractByIndex($p_index, [$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method is doing a partial extract of the archive. + // The extracted files or folders are identified by their index in the + // archive (from 0 to n). + // Note that if the index identify a folder, only the folder entry is + // extracted, not all the files included in the archive. + // Parameters : + // $p_index : A single index (integer) or a string of indexes of files to + // extract. The form of the string is "0,4-6,8-12" with only numbers + // and '-' for range or ',' to separate ranges. No spaces or ';' + // are allowed. + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and + // not as files. + // The resulting content is in a new field 'content' in the file + // structure. + // This option must be used alone (any other options are ignored). + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + //function extractByIndex($p_index, options...) + function extractByIndex($p_index) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); +// $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional' + ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' + ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + } + else { + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Trace + + // ----- Trick + // Here I want to reuse extractByRule(), so I need to parse the $p_index + // with privParseOptions() + $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); + $v_options_trick = array(); + $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, + array (PCLZIP_OPT_BY_INDEX => 'optional' )); + if ($v_result != 1) { + return 0; + } + $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Call the extracting fct + if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // delete([$p_option, $p_option_value, ...]) + // Description : + // This method removes files from the archive. + // If no parameters are given, then all the archive is emptied. + // Parameters : + // None or optional arguments. + // Options : + // PCLZIP_OPT_BY_INDEX : + // PCLZIP_OPT_BY_NAME : + // PCLZIP_OPT_BY_EREG : + // PCLZIP_OPT_BY_PREG : + // Return Values : + // 0 on failure, + // The list of the files which are still present in the archive. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function delete() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional' )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Call the delete fct + $v_list = array(); + if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { + $this->privSwapBackMagicQuotes(); + unset($v_list); + return(0); + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : deleteByIndex() + // Description : + // ***** Deprecated ***** + // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. + // -------------------------------------------------------------------------------- + function deleteByIndex($p_index) + { + + $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : properties() + // Description : + // This method gives the properties of the archive. + // The properties are : + // nb : Number of files in the archive + // comment : Comment associated with the archive file + // status : not_exist, ok + // Parameters : + // None + // Return Values : + // 0 on failure, + // An array with the archive properties. + // -------------------------------------------------------------------------------- + function properties() + { + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + $this->privSwapBackMagicQuotes(); + return(0); + } + + // ----- Default properties + $v_prop = array(); + $v_prop['comment'] = ''; + $v_prop['nb'] = 0; + $v_prop['status'] = 'not_exist'; + + // ----- Look if file exists + if (@is_file($this->zipname)) + { + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) + { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + return 0; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privSwapBackMagicQuotes(); + return 0; + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Set the user attributes + $v_prop['comment'] = $v_central_dir['comment']; + $v_prop['nb'] = $v_central_dir['entries']; + $v_prop['status'] = 'ok'; + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_prop; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : duplicate() + // Description : + // This method creates an archive by copying the content of an other one. If + // the archive already exist, it is replaced by the new one without any warning. + // Parameters : + // $p_archive : The filename of a valid archive, or + // a valid PclZip object. + // Return Values : + // 1 on success. + // 0 or a negative value on error (error code). + // -------------------------------------------------------------------------------- + function duplicate($p_archive) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the $p_archive is a PclZip object + if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) + { + + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive->zipname); + } + + // ----- Look if the $p_archive is a string (so a filename) + else if (is_string($p_archive)) + { + + // ----- Check that $p_archive is a valid zip file + // TBC : Should also check the archive format + if (!is_file($p_archive)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'"); + $v_result = PCLZIP_ERR_MISSING_FILE; + } + else { + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive); + } + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : merge() + // Description : + // This method merge the $p_archive_to_add archive at the end of the current + // one ($this). + // If the archive ($this) does not exist, the merge becomes a duplicate. + // If the $p_archive_to_add archive does not exist, the merge is a success. + // Parameters : + // $p_archive_to_add : It can be directly the filename of a valid zip archive, + // or a PclZip object archive. + // Return Values : + // 1 on success, + // 0 or negative values on error (see below). + // -------------------------------------------------------------------------------- + function merge($p_archive_to_add) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Look if the $p_archive_to_add is a PclZip object + if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) + { + + // ----- Merge the archive + $v_result = $this->privMerge($p_archive_to_add); + } + + // ----- Look if the $p_archive_to_add is a string (so a filename) + else if (is_string($p_archive_to_add)) + { + + // ----- Create a temporary archive + $v_object_archive = new PclZip($p_archive_to_add); + + // ----- Merge the archive + $v_result = $this->privMerge($v_object_archive); + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : errorCode() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorCode() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorCode()); + } + else { + return($this->error_code); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorName() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorName($p_with_code=false) + { + $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', + PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', + PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', + PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', + PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', + PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', + PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', + PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', + PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', + PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', + PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', + PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', + PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', + PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', + PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', + PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', + PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', + PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', + PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION' + ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE' + ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION' + ); + + if (isset($v_name[$this->error_code])) { + $v_value = $v_name[$this->error_code]; + } + else { + $v_value = 'NoName'; + } + + if ($p_with_code) { + return($v_value.' ('.$this->error_code.')'); + } + else { + return($v_value); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorInfo() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorInfo($p_full=false) + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorString()); + } + else { + if ($p_full) { + return($this->errorName(true)." : ".$this->error_string); + } + else { + return($this->error_string." [code ".$this->error_code."]"); + } + } + } + // -------------------------------------------------------------------------------- + + +// -------------------------------------------------------------------------------- +// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** +// ***** ***** +// ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** +// -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : privCheckFormat() + // Description : + // This method check that the archive exists and is a valid zip archive. + // Several level of check exists. (futur) + // Parameters : + // $p_level : Level of check. Default 0. + // 0 : Check the first bytes (magic codes) (default value)) + // 1 : 0 + Check the central directory (futur) + // 2 : 1 + Check each file header (futur) + // Return Values : + // true on success, + // false on error, the error code is set. + // -------------------------------------------------------------------------------- + function privCheckFormat($p_level=0) + { + $v_result = true; + + // ----- Reset the file system cache + clearstatcache(); + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the file exits + if (!is_file($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); + return(false); + } + + // ----- Check that the file is readeable + if (!is_readable($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); + return(false); + } + + // ----- Check the magic code + // TBC + + // ----- Check the central header + // TBC + + // ----- Check each file header + // TBC + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privParseOptions() + // Description : + // This internal methods reads the variable list of arguments ($p_options_list, + // $p_size) and generate an array with the options and values ($v_result_list). + // $v_requested_options contains the options that can be present and those that + // must be present. + // $v_requested_options is an array, with the option value as key, and 'optional', + // or 'mandatory' as value. + // Parameters : + // See above. + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) + { + $v_result=1; + + // ----- Read the options + $i=0; + while ($i<$p_size) { + + // ----- Check if the option is supported + if (!isset($v_requested_options[$p_options_list[$i]])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for next option + switch ($p_options_list[$i]) { + // ----- Look for options that request a path value + case PCLZIP_OPT_PATH : + case PCLZIP_OPT_REMOVE_PATH : + case PCLZIP_OPT_ADD_PATH : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_THRESHOLD : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + return PclZip::errorCode(); + } + + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + return PclZip::errorCode(); + } + + // ----- Check the value + $v_value = $p_options_list[$i+1]; + if ((!is_integer($v_value)) || ($v_value<0)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + return PclZip::errorCode(); + } + + // ----- Get the value (and convert it in bytes) + $v_result_list[$p_options_list[$i]] = $v_value*1048576; + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_ON : + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_TEMP_FILE_OFF : + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'"); + return PclZip::errorCode(); + } + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if ( is_string($p_options_list[$i+1]) + && ($p_options_list[$i+1] != '')) { + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); + $i++; + } + else { + } + break; + + // ----- Look for options that request an array of string for value + case PCLZIP_OPT_BY_NAME : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; + } + else if (is_array($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an EREG or PREG expression + case PCLZIP_OPT_BY_EREG : + // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG + // to PCLZIP_OPT_BY_PREG + $p_options_list[$i] = PCLZIP_OPT_BY_PREG; + case PCLZIP_OPT_BY_PREG : + //case PCLZIP_OPT_CRYPT : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that takes a string + case PCLZIP_OPT_COMMENT : + case PCLZIP_OPT_ADD_COMMENT : + case PCLZIP_OPT_PREPEND_COMMENT : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, + "Missing parameter value for option '" + .PclZipUtilOptionText($p_options_list[$i]) + ."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, + "Wrong parameter value for option '" + .PclZipUtilOptionText($p_options_list[$i]) + ."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an array of index + case PCLZIP_OPT_BY_INDEX : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_work_list = array(); + if (is_string($p_options_list[$i+1])) { + + // ----- Remove spaces + $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); + + // ----- Parse items + $v_work_list = explode(",", $p_options_list[$i+1]); + } + else if (is_integer($p_options_list[$i+1])) { + $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; + } + else if (is_array($p_options_list[$i+1])) { + $v_work_list = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Reduce the index list + // each index item in the list must be a couple with a start and + // an end value : [0,3], [5-5], [8-10], ... + // ----- Check the format of each item + $v_sort_flag=false; + $v_sort_value=0; + for ($j=0; $j= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + $i++; + break; + + // ----- Look for options that request a call-back + case PCLZIP_CB_PRE_EXTRACT : + case PCLZIP_CB_POST_EXTRACT : + case PCLZIP_CB_PRE_ADD : + case PCLZIP_CB_POST_ADD : + /* for futur use + case PCLZIP_CB_PRE_DELETE : + case PCLZIP_CB_POST_DELETE : + case PCLZIP_CB_PRE_LIST : + case PCLZIP_CB_POST_LIST : + */ + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_function_name = $p_options_list[$i+1]; + + // ----- Check that the value is a valid existing function + if (!function_exists($v_function_name)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Set the attribute + $v_result_list[$p_options_list[$i]] = $v_function_name; + $i++; + break; + + default : + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Unknown parameter '" + .$p_options_list[$i]."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Next options + $i++; + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($v_result_list[$key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + + // ----- Return + return PclZip::errorCode(); + } + } + } + } + + // ----- Look for default values + if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOptionDefaultThreshold() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privOptionDefaultThreshold(&$p_options) + { + $v_result=1; + + if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { + return $v_result; + } + + // ----- Get 'memory_limit' configuration value + $v_memory_limit = ini_get('memory_limit'); + $v_memory_limit = trim($v_memory_limit); + $last = strtolower(substr($v_memory_limit, -1)); + + if($last == 'g') + //$v_memory_limit = $v_memory_limit*1024*1024*1024; + $v_memory_limit = $v_memory_limit*1073741824; + if($last == 'm') + //$v_memory_limit = $v_memory_limit*1024*1024; + $v_memory_limit = $v_memory_limit*1048576; + if($last == 'k') + $v_memory_limit = $v_memory_limit*1024; + + $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); + + + // ----- Sanity check : No threshold if value lower than 1M + if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { + unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrParseAtt() + // Description : + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false) + { + $v_result=1; + + // ----- For each file in the list check the attributes + foreach ($p_file_list as $v_key => $v_value) { + + // ----- Check if the option is supported + if (!isset($v_requested_options[$v_key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for attribute + switch ($v_key) { + case PCLZIP_ATT_FILE_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['filename'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + break; + + case PCLZIP_ATT_FILE_NEW_SHORT_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_short_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + + case PCLZIP_ATT_FILE_NEW_FULL_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_full_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + + // ----- Look for options that takes a string + case PCLZIP_ATT_FILE_COMMENT : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['comment'] = $v_value; + break; + + case PCLZIP_ATT_FILE_MTIME : + if (!is_integer($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['mtime'] = $v_value; + break; + + case PCLZIP_ATT_FILE_CONTENT : + $p_filedescr['content'] = $v_value; + break; + + default : + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Unknown parameter '".$v_key."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($p_file_list[$key])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + return PclZip::errorCode(); + } + } + } + } + + // end foreach + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrExpand() + // Description : + // This method look for each item of the list to see if its a file, a folder + // or a string to be added as file. For any other type of files (link, other) + // just ignore the item. + // Then prepare the information that will be stored for that file. + // When its a folder, expand the folder with all the files that are in that + // folder (recursively). + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privFileDescrExpand(&$p_filedescr_list, &$p_options) + { + $v_result=1; + + // ----- Create a result list + $v_result_list = array(); + + // ----- Look each entry + for ($i=0; $iprivCalculateStoredFilename($v_descr, $p_options); + + // ----- Add the descriptor in result list + $v_result_list[sizeof($v_result_list)] = $v_descr; + + // ----- Look for folder + if ($v_descr['type'] == 'folder') { + // ----- List of items in folder + $v_dirlist_descr = array(); + $v_dirlist_nb = 0; + if ($v_folder_handler = @opendir($v_descr['filename'])) { + while (($v_item_handler = @readdir($v_folder_handler)) !== false) { + + // ----- Skip '.' and '..' + if (($v_item_handler == '.') || ($v_item_handler == '..')) { + continue; + } + + // ----- Compose the full filename + $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler; + + // ----- Look for different stored filename + // Because the name of the folder was changed, the name of the + // files/sub-folders also change + if (($v_descr['stored_filename'] != $v_descr['filename']) + && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { + if ($v_descr['stored_filename'] != '') { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler; + } + else { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler; + } + } + + $v_dirlist_nb++; + } + + @closedir($v_folder_handler); + } + else { + // TBC : unable to open folder in read mode + } + + // ----- Expand each element of the list + if ($v_dirlist_nb != 0) { + // ----- Expand + if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { + return $v_result; + } + + // ----- Concat the resulting list + $v_result_list = array_merge($v_result_list, $v_dirlist_descr); + } + else { + } + + // ----- Free local array + unset($v_dirlist_descr); + } + } + + // ----- Get the result list + $p_filedescr_list = $v_result_list; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCreate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privCreate($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the file in write mode + if (($v_result = $this->privOpenFd('wb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Add the list of files + $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options); + + // ----- Close + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAdd() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAdd($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Look if the archive exists or is empty + if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) + { + + // ----- Do a create + $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); + + // ----- Return + return $v_result; + } + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) + { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) + { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Create the Central Dir files header + for ($i=0, $v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = $v_central_dir['comment']; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { + $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) + { + // ----- Reset the file list + unset($v_header_list); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOpenFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privOpenFd($p_mode) + { + $v_result=1; + + // ----- Look if already open + if ($this->zip_fd != 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCloseFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privCloseFd() + { + $v_result=1; + + if ($this->zip_fd != 0) + @fclose($this->zip_fd); + $this->zip_fd = 0; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddList() + // Description : + // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is + // different from the real path of the file. This is usefull if you want to have PclTar + // running in any directory, and memorize relative path from an other directory. + // Parameters : + // $p_list : An array containing the file or directory names to add in the tar + // $p_result_list : list of added files with their properties (specially the status field) + // $p_add_dir : Path to add in the filename path archived + // $p_remove_dir : Path to remove in the filename path archived + // Return Values : + // -------------------------------------------------------------------------------- +// function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + function privAddList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Create the Central Dir files header + for ($i=0,$v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) + { + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileList() + // Description : + // Parameters : + // $p_filedescr_list : An array containing the file description + // or directory names to add in the zip + // $p_result_list : list of added files with their properties (specially the status field) + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_header = array(); + + // ----- Recuperate the current number of elt in list + $v_nb = sizeof($p_result_list); + + // ----- Loop on the files + for ($j=0; ($jprivAddFile($p_filedescr_list[$j], $v_header, + $p_options); + if ($v_result != 1) { + return $v_result; + } + + // ----- Store the file infos + $p_result_list[$v_nb++] = $v_header; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFile($p_filedescr, &$p_header, &$p_options) + { + $v_result=1; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + // TBC : Already done in the fileAtt check ... ? + if ($p_filename == "") { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for a stored different filename + /* TBC : Removed + if (isset($p_filedescr['stored_filename'])) { + $v_stored_filename = $p_filedescr['stored_filename']; + } + else { + $v_stored_filename = $p_filedescr['stored_filename']; + } + */ + + // ----- Set the file properties + clearstatcache(); + $p_header['version'] = 20; + $p_header['version_extracted'] = 10; + $p_header['flag'] = 0; + $p_header['compression'] = 0; + $p_header['crc'] = 0; + $p_header['compressed_size'] = 0; + $p_header['filename_len'] = strlen($p_filename); + $p_header['extra_len'] = 0; + $p_header['disk'] = 0; + $p_header['internal'] = 0; + $p_header['offset'] = 0; + $p_header['filename'] = $p_filename; +// TBC : Removed $p_header['stored_filename'] = $v_stored_filename; + $p_header['stored_filename'] = $p_filedescr['stored_filename']; + $p_header['extra'] = ''; + $p_header['status'] = 'ok'; + $p_header['index'] = -1; + + // ----- Look for regular file + if ($p_filedescr['type']=='file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = filesize($p_filename); + } + + // ----- Look for regular folder + else if ($p_filedescr['type']=='folder') { + $p_header['external'] = 0x00000010; + $p_header['mtime'] = filemtime($p_filename); + $p_header['size'] = filesize($p_filename); + } + + // ----- Look for virtual file + else if ($p_filedescr['type'] == 'virtual_file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = strlen($p_filedescr['content']); + } + + + // ----- Look for filetime + if (isset($p_filedescr['mtime'])) { + $p_header['mtime'] = $p_filedescr['mtime']; + } + else if ($p_filedescr['type'] == 'virtual_file') { + $p_header['mtime'] = time(); + } + else { + $p_header['mtime'] = filemtime($p_filename); + } + + // ------ Look for file comment + if (isset($p_filedescr['comment'])) { + $p_header['comment_len'] = strlen($p_filedescr['comment']); + $p_header['comment'] = $p_filedescr['comment']; + } + else { + $p_header['comment_len'] = 0; + $p_header['comment'] = ''; + } + + // ----- Look for pre-add callback + if (isset($p_options[PCLZIP_CB_PRE_ADD])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_header['status'] = "skipped"; + $v_result = 1; + } + + // ----- Update the informations + // Only some fields can be modified + if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { + $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); + } + } + + // ----- Look for empty stored filename + if ($p_header['stored_filename'] == "") { + $p_header['status'] = "filtered"; + } + + // ----- Check the path length + if (strlen($p_header['stored_filename']) > 0xFF) { + $p_header['status'] = 'filename_too_long'; + } + + // ----- Look if no error, or file not skipped + if ($p_header['status'] == 'ok') { + + // ----- Look for a file + if ($p_filedescr['type'] == 'file') { + // ----- Look for using temporary file to zip + if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) + && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) + || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) { + $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + } + + // ----- Use "in memory" zip algo + else { + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + return PclZip::errorCode(); + } + + // ----- Read the file content + $v_content = @fread($v_file, $p_header['size']); + + // ----- Close the file + @fclose($v_file); + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + } + + // ----- Look for normal compression + else { + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + + } + + } + + // ----- Look for a virtual file (a file from string) + else if ($p_filedescr['type'] == 'virtual_file') { + + $v_content = $p_filedescr['content']; + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + } + + // ----- Look for normal compression + else { + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + } + + // ----- Look for a directory + else if ($p_filedescr['type'] == 'folder') { + // ----- Look for directory last '/' + if (@substr($p_header['stored_filename'], -1) != '/') { + $p_header['stored_filename'] .= '/'; + } + + // ----- Set the file properties + $p_header['size'] = 0; + //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked + $p_header['external'] = 0x00000010; // Value for a folder : to be checked + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) + { + return $v_result; + } + } + } + + // ----- Look for post-add callback + if (isset($p_options[PCLZIP_CB_POST_ADD])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Ignored + $v_result = 1; + } + + // ----- Update the informations + // Nothing can be modified + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) + { + $v_result=PCLZIP_ERR_NO_ERROR; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + return PclZip::errorCode(); + } + + // ----- Creates a compressed temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; + if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = filesize($p_filename); + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @gzputs($v_file_compressed, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file); + @gzclose($v_file_compressed); + + // ----- Check the minimum file size + if (filesize($v_gzip_temp_name) < 18) { + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes'); + return PclZip::errorCode(); + } + + // ----- Extract the compressed attributes + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the gzip file header + $v_binary_data = @fread($v_file_compressed, 10); + $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data); + + // ----- Check some parameters + $v_data_header['os'] = bin2hex($v_data_header['os']); + + // ----- Read the gzip file footer + @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8); + $v_binary_data = @fread($v_file_compressed, 8); + $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data); + + // ----- Set the attributes + $p_header['compression'] = ord($v_data_header['cm']); + //$p_header['mtime'] = $v_data_header['mtime']; + $p_header['crc'] = $v_data_footer['crc']; + $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18; + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + return $v_result; + } + + // ----- Add the compressed data + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) + { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + fseek($v_file_compressed, 10); + $v_size = $p_header['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file_compressed, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Unlink the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCalculateStoredFilename() + // Description : + // Based on file descriptor properties and global options, this method + // calculate the filename that will be stored in the archive. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privCalculateStoredFilename(&$p_filedescr, &$p_options) + { + $v_result=1; + + // ----- Working variables + $p_filename = $p_filedescr['filename']; + if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { + $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH]; + } + else { + $p_add_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) { + $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH]; + } + else { + $p_remove_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + else { + $p_remove_all_dir = 0; + } + + + // ----- Look for full name change + if (isset($p_filedescr['new_full_name'])) { + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); + } + + // ----- Look for path and/or short name change + else { + + // ----- Look for short name change + // Its when we cahnge just the filename but not the path + if (isset($p_filedescr['new_short_name'])) { + $v_path_info = pathinfo($p_filename); + $v_dir = ''; + if ($v_path_info['dirname'] != '') { + $v_dir = $v_path_info['dirname'].'/'; + } + $v_stored_filename = $v_dir.$p_filedescr['new_short_name']; + } + else { + // ----- Calculate the stored filename + $v_stored_filename = $p_filename; + } + + // ----- Look for all path to remove + if ($p_remove_all_dir) { + $v_stored_filename = basename($p_filename); + } + // ----- Look for partial path remove + else if ($p_remove_dir != "") { + if (substr($p_remove_dir, -1) != '/') + $p_remove_dir .= "/"; + + if ( (substr($p_filename, 0, 2) == "./") + || (substr($p_remove_dir, 0, 2) == "./")) { + + if ( (substr($p_filename, 0, 2) == "./") + && (substr($p_remove_dir, 0, 2) != "./")) { + $p_remove_dir = "./".$p_remove_dir; + } + if ( (substr($p_filename, 0, 2) != "./") + && (substr($p_remove_dir, 0, 2) == "./")) { + $p_remove_dir = substr($p_remove_dir, 2); + } + } + + $v_compare = PclZipUtilPathInclusion($p_remove_dir, + $v_stored_filename); + if ($v_compare > 0) { + if ($v_compare == 2) { + $v_stored_filename = ""; + } + else { + $v_stored_filename = substr($v_stored_filename, + strlen($p_remove_dir)); + } + } + } + + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); + + // ----- Look for path to add + if ($p_add_dir != "") { + if (substr($p_add_dir, -1) == "/") + $v_stored_filename = $p_add_dir.$v_stored_filename; + else + $v_stored_filename = $p_add_dir."/".$v_stored_filename; + } + } + + // ----- Filename (reduce the path of stored name) + $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); + $p_filedescr['stored_filename'] = $v_stored_filename; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteFileHeader(&$p_header) + { + $v_result=1; + + // ----- Store the offset position of the file + $p_header['offset'] = ftell($this->zip_fd); + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + // ----- Packed data + $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, + $p_header['version_extracted'], $p_header['flag'], + $p_header['compression'], $v_mtime, $v_mdate, + $p_header['crc'], $p_header['compressed_size'], + $p_header['size'], + strlen($p_header['stored_filename']), + $p_header['extra_len']); + + // ----- Write the first 148 bytes of the header in the archive + fputs($this->zip_fd, $v_binary_data, 30); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) + { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) + { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteCentralFileHeader(&$p_header) + { + $v_result=1; + + // TBC + //for(reset($p_header); $key = key($p_header); next($p_header)) { + //} + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + + // ----- Packed data + $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, + $p_header['version'], $p_header['version_extracted'], + $p_header['flag'], $p_header['compression'], + $v_mtime, $v_mdate, $p_header['crc'], + $p_header['compressed_size'], $p_header['size'], + strlen($p_header['stored_filename']), + $p_header['extra_len'], $p_header['comment_len'], + $p_header['disk'], $p_header['internal'], + $p_header['external'], $p_header['offset']); + + // ----- Write the 42 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 46); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) + { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) + { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + if ($p_header['comment_len'] != 0) + { + fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) + { + $v_result=1; + + // ----- Packed data + $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, + $p_nb_entries, $p_size, + $p_offset, strlen($p_comment)); + + // ----- Write the 22 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 22); + + // ----- Write the variable fields + if (strlen($p_comment) != 0) + { + fputs($this->zip_fd, $p_comment, strlen($p_comment)); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privList() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privList(&$p_list) + { + $v_result=1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) + { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Go to beginning of Central Dir + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_central_dir['offset'])) + { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + for ($i=0; $i<$v_central_dir['entries']; $i++) + { + // ----- Read the file header + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + $v_header['index'] = $i; + + // ----- Get the only interesting attributes + $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); + unset($v_header); + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privConvertHeader2FileInfo() + // Description : + // This function takes the file informations from the central directory + // entries and extract the interesting parameters that will be given back. + // The resulting file infos are set in the array $p_info + // $p_info['filename'] : Filename with full path. Given by user (add), + // extracted in the filesystem (extract). + // $p_info['stored_filename'] : Stored filename in the archive. + // $p_info['size'] = Size of the file. + // $p_info['compressed_size'] = Compressed size of the file. + // $p_info['mtime'] = Last modification date of the file. + // $p_info['comment'] = Comment associated with the file. + // $p_info['folder'] = true/false : indicates if the entry is a folder or not. + // $p_info['status'] = status of the action on the file. + // $p_info['crc'] = CRC of the file content. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privConvertHeader2FileInfo($p_header, &$p_info) + { + $v_result=1; + + // ----- Get the interesting attributes + $v_temp_path = PclZipUtilPathReduction($p_header['filename']); + $p_info['filename'] = $v_temp_path; + $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']); + $p_info['stored_filename'] = $v_temp_path; + $p_info['size'] = $p_header['size']; + $p_info['compressed_size'] = $p_header['compressed_size']; + $p_info['mtime'] = $p_header['mtime']; + $p_info['comment'] = $p_header['comment']; + $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010); + $p_info['index'] = $p_header['index']; + $p_info['status'] = $p_header['status']; + $p_info['crc'] = $p_header['crc']; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractByRule() + // Description : + // Extract a file or directory depending of rules (by index, by name, ...) + // Parameters : + // $p_file_list : An array where will be placed the properties of each + // extracted file + // $p_path : Path to add while writing the extracted files + // $p_remove_path : Path to remove (from the file memorized path) while writing the + // extracted files. If the path does not match the file path, + // the file is extracted with its memorized path. + // $p_remove_path does not apply to 'list' mode. + // $p_path and $p_remove_path are commulative. + // Return Values : + // 1 on success,0 or less on error (see error code list) + // -------------------------------------------------------------------------------- + function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result=1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check the path + if ( ($p_path == "") + || ( (substr($p_path, 0, 1) != "/") + && (substr($p_path, 0, 3) != "../") + && (substr($p_path,1,2)!=":/"))) + $p_path = "./".$p_path; + + // ----- Reduce the path last (and duplicated) '/' + if (($p_path != "./") && ($p_path != "/")) + { + // ----- Look for the path end '/' + while (substr($p_path, -1) == "/") + { + $p_path = substr($p_path, 0, strlen($p_path)-1); + } + } + + // ----- Look for path to remove format (should end by /) + if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) + { + $p_remove_path .= '/'; + } + $p_remove_path_size = strlen($p_remove_path); + + // ----- Open the zip file + if (($v_result = $this->privOpenFd('rb')) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + + // ----- Read each entry + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) + { + + // ----- Read next Central dir entry + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Store the index + $v_header['index'] = $i; + + // ----- Store the file position + $v_pos_entry = ftell($this->zip_fd); + + // ----- Look for the specific extract rules + $v_extract = false; + + // ----- Look for extract by name rule + if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) + && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + + // ----- Look if the filename is in the list + for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) + && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_extract = true; + } + } + // ----- Look for a filename + elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + $v_extract = true; + } + } + } + + // ----- Look for extract by ereg rule + // ereg() is deprecated with PHP 5.3 + /* + else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) { + $v_extract = true; + } + } + */ + + // ----- Look for extract by preg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) + && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { + $v_extract = true; + } + } + + // ----- Look for extract by index rule + else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) + && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + + // ----- Look if the index is in the list + for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_extract = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + break; + } + } + } + + // ----- Look for no rule, which means extract all the archive + else { + $v_extract = true; + } + + // ----- Check compression method + if ( ($v_extract) + && ( ($v_header['compression'] != 8) + && ($v_header['compression'] != 0))) { + $v_header['status'] = 'unsupported_compression'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, + "Filename '".$v_header['stored_filename']."' is " + ."compressed by an unsupported compression " + ."method (".$v_header['compression'].") "); + + return PclZip::errorCode(); + } + } + + // ----- Check encrypted files + if (($v_extract) && (($v_header['flag'] & 1) == 1)) { + $v_header['status'] = 'unsupported_encryption'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, + "Unsupported encryption for " + ." filename '".$v_header['stored_filename'] + ."'"); + + return PclZip::errorCode(); + } + } + + // ----- Look for real extraction + if (($v_extract) && ($v_header['status'] != 'ok')) { + $v_result = $this->privConvertHeader2FileInfo($v_header, + $p_file_list[$v_nb_extracted++]); + if ($v_result != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + $v_extract = false; + } + + // ----- Look for real extraction + if ($v_extract) + { + + // ----- Go to the file position + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_header['offset'])) + { + // ----- Close the zip file + $this->privCloseFd(); + + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for extraction as string + if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { + + $v_string = ''; + + // ----- Extracting the file + $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Set the file content + $p_file_list[$v_nb_extracted]['content'] = $v_string; + + // ----- Next extracted file + $v_nb_extracted++; + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + // ----- Look for extraction in standard output + elseif ( (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) + && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { + // ----- Extracting the file in standard output + $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + // ----- Look for normal extraction + else { + // ----- Extracting the file + $v_result1 = $this->privExtractFile($v_header, + $p_path, $p_remove_path, + $p_remove_all_path, + $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + } + } + + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFile() + // Description : + // Parameters : + // Return Values : + // + // 1 : ... ? + // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback + // -------------------------------------------------------------------------------- + function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) + { + // ----- Return + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for all path to remove + if ($p_remove_all_path == true) { + // ----- Look for folder entry that not need to be extracted + if (($p_entry['external']&0x00000010)==0x00000010) { + + $p_entry['status'] = "filtered"; + + return $v_result; + } + + // ----- Get the basename of the path + $p_entry['filename'] = basename($p_entry['filename']); + } + + // ----- Look for path to remove + else if ($p_remove_path != "") + { + if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) + { + + // ----- Change the file status + $p_entry['status'] = "filtered"; + + // ----- Return + return $v_result; + } + + $p_remove_path_size = strlen($p_remove_path); + if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) + { + + // ----- Remove the path + $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); + + } + } + + // ----- Add the path + if ($p_path != '') { + $p_entry['filename'] = $p_path."/".$p_entry['filename']; + } + + // ----- Check a base_dir_restriction + if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { + $v_inclusion + = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], + $p_entry['filename']); + if ($v_inclusion == 0) { + + PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, + "Filename '".$p_entry['filename']."' is " + ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); + + return PclZip::errorCode(); + } + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Look for specific actions while the file exist + if (file_exists($p_entry['filename'])) + { + + // ----- Look if file is a directory + if (is_dir($p_entry['filename'])) + { + + // ----- Change the file status + $p_entry['status'] = "already_a_directory"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, + "Filename '".$p_entry['filename']."' is " + ."already used by an existing directory"); + + return PclZip::errorCode(); + } + } + // ----- Look if file is write protected + else if (!is_writeable($p_entry['filename'])) + { + + // ----- Change the file status + $p_entry['status'] = "write_protected"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, + "Filename '".$p_entry['filename']."' exists " + ."and is write protected"); + + return PclZip::errorCode(); + } + } + + // ----- Look if the extracted file is older + else if (filemtime($p_entry['filename']) > $p_entry['mtime']) + { + // ----- Change the file status + if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) + && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) { + } + else { + $p_entry['status'] = "newer_exist"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, + "Newer version of '".$p_entry['filename']."' exists " + ."and option PCLZIP_OPT_REPLACE_NEWER is not selected"); + + return PclZip::errorCode(); + } + } + } + else { + } + } + + // ----- Check the directory availability and create it if necessary + else { + if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/')) + $v_dir_to_check = $p_entry['filename']; + else if (!strstr($p_entry['filename'], "/")) + $v_dir_to_check = ""; + else + $v_dir_to_check = dirname($p_entry['filename']); + + if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { + + // ----- Change the file status + $p_entry['status'] = "path_creation_fail"; + + // ----- Return + //return $v_result; + $v_result = 1; + } + } + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) + { + // ----- Look for not compressed file + if ($p_entry['compression'] == 0) { + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) + { + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + // ----- Return + return $v_result; + } + + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + /* Try to speed up the code + $v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_binary_data, $v_read_size); + */ + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Closing the destination file + fclose($v_dest_file); + + // ----- Change the file mtime + touch($p_entry['filename'], $p_entry['mtime']); + + + } + else { + // ----- TBC + // Need to be finished + if (($p_entry['flag'] & 1) == 1) { + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.'); + return PclZip::errorCode(); + } + + + // ----- Look for using temporary file to unzip + if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) + && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) + || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) { + $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + } + + // ----- Look for extract in memory + else { + + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = @gzinflate($v_buffer); + unset($v_buffer); + if ($v_file_content === FALSE) { + + // ----- Change the file status + // TBC + $p_entry['status'] = "error"; + + return $v_result; + } + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + return $v_result; + } + + // ----- Write the uncompressed data + @fwrite($v_dest_file, $v_file_content, $p_entry['size']); + unset($v_file_content); + + // ----- Closing the destination file + @fclose($v_dest_file); + + } + + // ----- Change the file mtime + @touch($p_entry['filename'], $p_entry['mtime']); + } + + // ----- Look for chmod option + if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { + + // ----- Change the mode of the file + @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); + } + + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileUsingTempFile(&$p_entry, &$p_options) + { + $v_result=1; + + // ----- Creates a temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; + if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); + return PclZip::errorCode(); + } + + + // ----- Write gz file format header + $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); + @fwrite($v_dest_file, $v_binary_data, 10); + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Write gz file format footer + $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']); + @fwrite($v_dest_file, $v_binary_data, 8); + + // ----- Close the temporary file + @fclose($v_dest_file); + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + $p_entry['status'] = "write_error"; + return $v_result; + } + + // ----- Open the temporary gz file + if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) { + @fclose($v_dest_file); + $p_entry['status'] = "read_error"; + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($v_src_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + @fclose($v_dest_file); + @gzclose($v_src_file); + + // ----- Delete the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileInOutput() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileInOutput(&$p_entry, &$p_options) + { + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) { + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + // ----- Trace + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) { + // ----- Look for not compressed file + if ($p_entry['compressed_size'] == $p_entry['size']) { + + // ----- Read the file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Send the file to the output + echo $v_buffer; + unset($v_buffer); + } + else { + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = gzinflate($v_buffer); + unset($v_buffer); + + // ----- Send the file to the output + echo $v_file_content; + unset($v_file_content); + } + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileAsString() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) + { + $v_result=1; + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadFileHeader($v_header)) != 1) + { + // ----- Return + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) { + // ----- Look for not compressed file + // if ($p_entry['compressed_size'] == $p_entry['size']) + if ($p_entry['compression'] == 0) { + + // ----- Reading the file + $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); + } + else { + + // ----- Reading the file + $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + if (($p_string = @gzinflate($v_data)) === FALSE) { + // TBC + } + } + + // ----- Trace + } + else { + // TBC : error : can not extract a folder in a string + } + + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Swap the content to header + $v_local_header['content'] = $p_string; + $p_string = ''; + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Swap back the content to header + $p_string = $v_local_header['content']; + unset($v_local_header['content']); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadFileHeader(&$p_header) + { + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x04034b50) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 26); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 26) + { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); + + // ----- Get filename + $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); + + // ----- Get extra_fields + if ($v_data['extra_len'] != 0) { + $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); + } + else { + $p_header['extra'] = ''; + } + + // ----- Extract properties + $p_header['version_extracted'] = $v_data['version']; + $p_header['compression'] = $v_data['compression']; + $p_header['size'] = $v_data['size']; + $p_header['compressed_size'] = $v_data['compressed_size']; + $p_header['crc'] = $v_data['crc']; + $p_header['flag'] = $v_data['flag']; + $p_header['filename_len'] = $v_data['filename_len']; + + // ----- Recuperate date in UNIX format + $p_header['mdate'] = $v_data['mdate']; + $p_header['mtime'] = $v_data['mtime']; + if ($p_header['mdate'] && $p_header['mtime']) + { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } + else + { + $p_header['mtime'] = time(); + } + + // TBC + //for(reset($v_data); $key = key($v_data); next($v_data)) { + //} + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set the status field + $p_header['status'] = "ok"; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadCentralFileHeader(&$p_header) + { + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x02014b50) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 42); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 42) + { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); + + // ----- Get filename + if ($p_header['filename_len'] != 0) + $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); + else + $p_header['filename'] = ''; + + // ----- Get extra + if ($p_header['extra_len'] != 0) + $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); + else + $p_header['extra'] = ''; + + // ----- Get comment + if ($p_header['comment_len'] != 0) + $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); + else + $p_header['comment'] = ''; + + // ----- Extract properties + + // ----- Recuperate date in UNIX format + //if ($p_header['mdate'] && $p_header['mtime']) + // TBC : bug : this was ignoring time with 0/0/0 + if (1) + { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } + else + { + $p_header['mtime'] = time(); + } + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set default status to ok + $p_header['status'] = 'ok'; + + // ----- Look if it is a directory + if (substr($p_header['filename'], -1) == '/') { + //$p_header['external'] = 0x41FF0010; + $p_header['external'] = 0x00000010; + } + + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCheckFileHeaders() + // Description : + // Parameters : + // Return Values : + // 1 on success, + // 0 on error; + // -------------------------------------------------------------------------------- + function privCheckFileHeaders(&$p_local_header, &$p_central_header) + { + $v_result=1; + + // ----- Check the static values + // TBC + if ($p_local_header['filename'] != $p_central_header['filename']) { + } + if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { + } + if ($p_local_header['flag'] != $p_central_header['flag']) { + } + if ($p_local_header['compression'] != $p_central_header['compression']) { + } + if ($p_local_header['mtime'] != $p_central_header['mtime']) { + } + if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { + } + + // ----- Look for flag bit 3 + if (($p_local_header['flag'] & 8) == 8) { + $p_local_header['size'] = $p_central_header['size']; + $p_local_header['compressed_size'] = $p_central_header['compressed_size']; + $p_local_header['crc'] = $p_central_header['crc']; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadEndCentralDir() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadEndCentralDir(&$p_central_dir) + { + $v_result=1; + + // ----- Go to the end of the zip file + $v_size = filesize($this->zipname); + @fseek($this->zip_fd, $v_size); + if (@ftell($this->zip_fd) != $v_size) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- First try : look if this is an archive with no commentaries (most of the time) + // in this case the end of central dir is at 22 bytes of the file end + $v_found = 0; + if ($v_size > 26) { + @fseek($this->zip_fd, $v_size-22); + if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read for bytes + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = @unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] == 0x06054b50) { + $v_found = 1; + } + + $v_pos = ftell($this->zip_fd); + } + + // ----- Go back to the maximum possible size of the Central Dir End Record + if (!$v_found) { + $v_maximum_size = 65557; // 0xFFFF + 22; + if ($v_maximum_size > $v_size) + $v_maximum_size = $v_size; + @fseek($this->zip_fd, $v_size-$v_maximum_size); + if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read byte per byte in order to find the signature + $v_pos = ftell($this->zip_fd); + $v_bytes = 0x00000000; + while ($v_pos < $v_size) + { + // ----- Read a byte + $v_byte = @fread($this->zip_fd, 1); + + // ----- Add the byte + //$v_bytes = ($v_bytes << 8) | Ord($v_byte); + // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number + // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. + $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); + + // ----- Compare the bytes + if ($v_bytes == 0x504b0506) + { + $v_pos++; + break; + } + + $v_pos++; + } + + // ----- Look if not found end of central dir + if ($v_pos == $v_size) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Read the first 18 bytes of the header + $v_binary_data = fread($this->zip_fd, 18); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 18) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); + + // ----- Check the global size + if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { + + // ----- Removed in release 2.2 see readme file + // The check of the file size is a little too strict. + // Some bugs where found when a zip is encrypted/decrypted with 'crypt'. + // While decrypted, zip has training 0 bytes + if (0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, + 'The central dir is not at the end of the archive.' + .' Some trailing bytes exists after the archive.'); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Get comment + if ($v_data['comment_size'] != 0) { + $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); + } + else + $p_central_dir['comment'] = ''; + + $p_central_dir['entries'] = $v_data['entries']; + $p_central_dir['disk_entries'] = $v_data['disk_entries']; + $p_central_dir['offset'] = $v_data['offset']; + $p_central_dir['size'] = $v_data['size']; + $p_central_dir['disk'] = $v_data['disk']; + $p_central_dir['disk_start'] = $v_data['disk_start']; + + // TBC + //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { + //} + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDeleteByRule() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDeleteByRule(&$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Scan all the files + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) + { + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + $v_header_list = array(); + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) + { + + // ----- Read the file header + $v_header_list[$v_nb_extracted] = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + return $v_result; + } + + + // ----- Store the index + $v_header_list[$v_nb_extracted]['index'] = $i; + + // ----- Look for the specific extract rules + $v_found = false; + + // ----- Look for extract by name rule + if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) + && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + + // ----- Look if the filename is in the list + for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) + && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } + elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ + && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } + } + // ----- Look for a filename + elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + $v_found = true; + } + } + } + + // ----- Look for extract by ereg rule + // ereg() is deprecated with PHP 5.3 + /* + else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + } + */ + + // ----- Look for extract by preg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) + && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + } + + // ----- Look for extract by index rule + else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) + && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + + // ----- Look if the index is in the list + for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_found = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + break; + } + } + } + else { + $v_found = true; + } + + // ----- Look for deletion + if ($v_found) + { + unset($v_header_list[$v_nb_extracted]); + } + else + { + $v_nb_extracted++; + } + } + + // ----- Look if something need to be deleted + if ($v_nb_extracted > 0) { + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Creates a temporary zip archive + $v_temp_zip = new PclZip($v_zip_temp_name); + + // ----- Open the temporary zip file in write mode + if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Look which file need to be kept + for ($i=0; $izip_fd); + if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_local_header = array(); + if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Check that local file header is same as central file header + if ($this->privCheckFileHeaders($v_local_header, + $v_header_list[$i]) != 1) { + // TBC + } + unset($v_local_header); + + // ----- Write the file header + if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Read/write the data block + if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_temp_zip->zip_fd); + + // ----- Re-Create the Central Dir files header + for ($i=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Transform the header to a 'usable' info + $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Close + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Destroy the temporary archive + unset($v_temp_zip); + } + + // ----- Remove every files : reset the file + else if ($v_central_dir['entries'] != 0) { + $this->privCloseFd(); + + if (($v_result = $this->privOpenFd('wb')) != 1) { + return $v_result; + } + + if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { + return $v_result; + } + + $this->privCloseFd(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDirCheck() + // Description : + // Check if a directory exists, if not it creates it and all the parents directory + // which may be useful. + // Parameters : + // $p_dir : Directory path to check. + // Return Values : + // 1 : OK + // -1 : Unable to create directory + // -------------------------------------------------------------------------------- + function privDirCheck($p_dir, $p_is_dir=false) + { + $v_result = 1; + + + // ----- Remove the final '/' + if (($p_is_dir) && (substr($p_dir, -1)=='/')) + { + $p_dir = substr($p_dir, 0, strlen($p_dir)-1); + } + + // ----- Check the directory availability + if ((is_dir($p_dir)) || ($p_dir == "")) + { + return 1; + } + + // ----- Extract parent directory + $p_parent_dir = dirname($p_dir); + + // ----- Just a check + if ($p_parent_dir != $p_dir) + { + // ----- Look for parent directory + if ($p_parent_dir != "") + { + if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) + { + return $v_result; + } + } + } + + // ----- Create the directory + if (!@mkdir($p_dir, 0777)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privMerge() + // Description : + // If $p_archive_to_add does not exist, the function exit with a success result. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privMerge(&$p_archive_to_add) + { + $v_result=1; + + // ----- Look if the archive_to_add exists + if (!is_file($p_archive_to_add->zipname)) + { + + // ----- Nothing to merge, so merge is a success + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Look if the archive exists + if (!is_file($this->zipname)) + { + + // ----- Do a duplicate + $v_result = $this->privDuplicate($p_archive_to_add->zipname); + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Open the archive_to_add file + if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) + { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir_to_add = array(); + if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + return $v_result; + } + + // ----- Go to beginning of File + @rewind($p_archive_to_add->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the files from the archive_to_add into the temporary file + $v_size = $v_central_dir_to_add['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_zip_temp_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the block of file headers from the archive_to_add + $v_size = $v_central_dir_to_add['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Merge the file comments + $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment']; + + // ----- Calculate the size of the (new) central header + $v_size = @ftell($v_zip_temp_fd)-$v_offset; + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive fd + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + @fclose($v_zip_temp_fd); + $this->zip_fd = null; + + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDuplicate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDuplicate($p_archive_filename) + { + $v_result=1; + + // ----- Look if the $p_archive_filename exists + if (!is_file($p_archive_filename)) + { + + // ----- Nothing to duplicate, so duplicate is a success. + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('wb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) + { + $this->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = filesize($p_archive_filename); + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorLog() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privErrorLog($p_error_code=0, $p_error_string='') + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclError($p_error_code, $p_error_string); + } + else { + $this->error_code = $p_error_code; + $this->error_string = $p_error_string; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorReset() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privErrorReset() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclErrorReset(); + } + else { + $this->error_code = 0; + $this->error_string = ''; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDisableMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDisableMagicQuotes() + { + $v_result=1; + + // ----- Look if function exists + if ( (!function_exists("get_magic_quotes_runtime")) + || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if already done + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Get and memorize the magic_quote value + $this->magic_quotes_status = @get_magic_quotes_runtime(); + + // ----- Disable magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime(0); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privSwapBackMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privSwapBackMagicQuotes() + { + $v_result=1; + + // ----- Look if function exists + if ( (!function_exists("get_magic_quotes_runtime")) + || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if something to do + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Swap back magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime($this->magic_quotes_status); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + } + // End of class + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilPathReduction() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function PclZipUtilPathReduction($p_dir) + { + $v_result = ""; + + // ----- Look for not empty path + if ($p_dir != "") { + // ----- Explode path by directory names + $v_list = explode("/", $p_dir); + + // ----- Study directories from last to first + $v_skip = 0; + for ($i=sizeof($v_list)-1; $i>=0; $i--) { + // ----- Look for current path + if ($v_list[$i] == ".") { + // ----- Ignore this directory + // Should be the first $i=0, but no check is done + } + else if ($v_list[$i] == "..") { + $v_skip++; + } + else if ($v_list[$i] == "") { + // ----- First '/' i.e. root slash + if ($i == 0) { + $v_result = "/".$v_result; + if ($v_skip > 0) { + // ----- It is an invalid path, so the path is not modified + // TBC + $v_result = $p_dir; + $v_skip = 0; + } + } + // ----- Last '/' i.e. indicates a directory + else if ($i == (sizeof($v_list)-1)) { + $v_result = $v_list[$i]; + } + // ----- Double '/' inside the path + else { + // ----- Ignore only the double '//' in path, + // but not the first and last '/' + } + } + else { + // ----- Look for item to skip + if ($v_skip > 0) { + $v_skip--; + } + else { + $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); + } + } + } + + // ----- Look for skip + if ($v_skip > 0) { + while ($v_skip > 0) { + $v_result = '../'.$v_result; + $v_skip--; + } + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilPathInclusion() + // Description : + // This function indicates if the path $p_path is under the $p_dir tree. Or, + // said in an other way, if the file or sub-dir $p_path is inside the dir + // $p_dir. + // The function indicates also if the path is exactly the same as the dir. + // This function supports path with duplicated '/' like '//', but does not + // support '.' or '..' statements. + // Parameters : + // Return Values : + // 0 if $p_path is not inside directory $p_dir + // 1 if $p_path is inside directory $p_dir + // 2 if $p_path is exactly the same as $p_dir + // -------------------------------------------------------------------------------- + function PclZipUtilPathInclusion($p_dir, $p_path) + { + $v_result = 1; + + // ----- Look for path beginning by ./ + if ( ($p_dir == '.') + || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { + $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1); + } + if ( ($p_path == '.') + || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) { + $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1); + } + + // ----- Explode dir and path by directory separator + $v_list_dir = explode("/", $p_dir); + $v_list_dir_size = sizeof($v_list_dir); + $v_list_path = explode("/", $p_path); + $v_list_path_size = sizeof($v_list_path); + + // ----- Study directories paths + $i = 0; + $j = 0; + while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { + + // ----- Look for empty dir (path reduction) + if ($v_list_dir[$i] == '') { + $i++; + continue; + } + if ($v_list_path[$j] == '') { + $j++; + continue; + } + + // ----- Compare the items + if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != '')) { + $v_result = 0; + } + + // ----- Next items + $i++; + $j++; + } + + // ----- Look if everything seems to be the same + if ($v_result) { + // ----- Skip all the empty items + while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++; + while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++; + + if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { + // ----- There are exactly the same + $v_result = 2; + } + else if ($i < $v_list_dir_size) { + // ----- The path is shorter than the dir + $v_result = 0; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilCopyBlock() + // Description : + // Parameters : + // $p_mode : read/write compression mode + // 0 : src & dest normal + // 1 : src gzip, dest normal + // 2 : src normal, dest gzip + // 3 : src & dest gzip + // Return Values : + // -------------------------------------------------------------------------------- + function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) + { + $v_result = 1; + + if ($p_mode==0) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==1) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==2) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==3) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilRename() + // Description : + // This function tries to do a simple rename() function. If it fails, it + // tries to copy the $p_src file in a new $p_dest file and then unlink the + // first one. + // Parameters : + // $p_src : Old filename + // $p_dest : New filename + // Return Values : + // 1 on success, 0 on failure. + // -------------------------------------------------------------------------------- + function PclZipUtilRename($p_src, $p_dest) + { + $v_result = 1; + + // ----- Try to rename the files + if (!@rename($p_src, $p_dest)) { + + // ----- Try to copy & unlink the src + if (!@copy($p_src, $p_dest)) { + $v_result = 0; + } + else if (!@unlink($p_src)) { + $v_result = 0; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilOptionText() + // Description : + // Translate option value in text. Mainly for debug purpose. + // Parameters : + // $p_option : the option value. + // Return Values : + // The option text value. + // -------------------------------------------------------------------------------- + function PclZipUtilOptionText($p_option) + { + + $v_list = get_defined_constants(); + for (reset($v_list); $v_key = key($v_list); next($v_list)) { + $v_prefix = substr($v_key, 0, 10); + if (( ($v_prefix == 'PCLZIP_OPT') + || ($v_prefix == 'PCLZIP_CB_') + || ($v_prefix == 'PCLZIP_ATT')) + && ($v_list[$v_key] == $p_option)) { + return $v_key; + } + } + + $v_result = 'Unknown'; + + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilTranslateWinPath() + // Description : + // Translate windows path by replacing '\' by '/' and optionally removing + // drive letter. + // Parameters : + // $p_path : path to translate. + // $p_remove_disk_letter : true | false + // Return Values : + // The path translated. + // -------------------------------------------------------------------------------- + function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true) + { + if (stristr(php_uname(), 'windows')) { + // ----- Look for potential disk letter + if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { + $p_path = substr($p_path, $v_position+1); + } + // ----- Change potential windows directory separator + if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) { + $p_path = strtr($p_path, '\\', '/'); + } + } + return $p_path; + } + // -------------------------------------------------------------------------------- + + +?> diff --git a/wp-admin/includes/class-wp-comments-list-table.php b/wp-admin/includes/class-wp-comments-list-table.php new file mode 100644 index 0000000..bb5a95e --- /dev/null +++ b/wp-admin/includes/class-wp-comments-list-table.php @@ -0,0 +1,558 @@ + 'comments', + 'singular' => 'comment', + 'ajax' => true, + ) ); + } + + function ajax_user_can() { + return current_user_can('edit_posts'); + } + + function prepare_items() { + global $post_id, $comment_status, $search, $comment_type; + + $comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all'; + if ( !in_array( $comment_status, array( 'all', 'moderated', 'approved', 'spam', 'trash' ) ) ) + $comment_status = 'all'; + + $comment_type = !empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : ''; + + $search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : ''; + + $user_id = ( isset( $_REQUEST['user_id'] ) ) ? $_REQUEST['user_id'] : ''; + + $orderby = ( isset( $_REQUEST['orderby'] ) ) ? $_REQUEST['orderby'] : ''; + $order = ( isset( $_REQUEST['order'] ) ) ? $_REQUEST['order'] : ''; + + $comments_per_page = $this->get_per_page( $comment_status ); + + $doing_ajax = defined( 'DOING_AJAX' ) && DOING_AJAX; + + if ( isset( $_REQUEST['number'] ) ) { + $number = (int) $_REQUEST['number']; + } + else { + $number = $comments_per_page + min( 8, $comments_per_page ); // Grab a few extra + } + + $page = $this->get_pagenum(); + + if ( isset( $_REQUEST['start'] ) ) { + $start = $_REQUEST['start']; + } else { + $start = ( $page - 1 ) * $comments_per_page; + } + + if ( $doing_ajax && isset( $_REQUEST['offset'] ) ) { + $start += $_REQUEST['offset']; + } + + $status_map = array( + 'moderated' => 'hold', + 'approved' => 'approve' + ); + + $args = array( + 'status' => isset( $status_map[$comment_status] ) ? $status_map[$comment_status] : $comment_status, + 'search' => $search, + 'user_id' => $user_id, + 'offset' => $start, + 'number' => $number, + 'post_id' => $post_id, + 'type' => $comment_type, + 'orderby' => $orderby, + 'order' => $order, + ); + + $_comments = get_comments( $args ); + + update_comment_cache( $_comments ); + + $this->items = array_slice( $_comments, 0, $comments_per_page ); + $this->extra_items = array_slice( $_comments, $comments_per_page ); + + $total_comments = get_comments( array_merge( $args, array('count' => true, 'offset' => 0, 'number' => 0) ) ); + + $_comment_post_ids = array(); + foreach ( $_comments as $_c ) { + $_comment_post_ids[] = $_c->comment_post_ID; + } + + $_comment_post_ids = array_unique( $_comment_post_ids ); + + $this->pending_count = get_pending_comments_num( $_comment_post_ids ); + + $this->set_pagination_args( array( + 'total_items' => $total_comments, + 'per_page' => $comments_per_page, + ) ); + } + + function get_per_page( $comment_status = 'all' ) { + $comments_per_page = $this->get_items_per_page( 'edit_comments_per_page' ); + $comments_per_page = apply_filters( 'comments_per_page', $comments_per_page, $comment_status ); + return $comments_per_page; + } + + function no_items() { + global $comment_status; + + if ( 'moderated' == $comment_status ) + _e( 'No comments awaiting moderation.' ); + else + _e( 'No comments found.' ); + } + + function get_views() { + global $post_id, $comment_status, $comment_type; + + $status_links = array(); + $num_comments = ( $post_id ) ? wp_count_comments( $post_id ) : wp_count_comments(); + //, number_format_i18n($num_comments->moderated) ), "" . number_format_i18n($num_comments->moderated) . ""), + //, number_format_i18n($num_comments->spam) ), "" . number_format_i18n($num_comments->spam) . "") + $stati = array( + 'all' => _nx_noop('All', 'All', 'comments'), // singular not used + 'moderated' => _n_noop('Pending (%s)', 'Pending (%s)'), + 'approved' => _n_noop('Approved', 'Approved'), // singular not used + 'spam' => _n_noop('Spam (%s)', 'Spam (%s)'), + 'trash' => _n_noop('Trash (%s)', 'Trash (%s)') + ); + + if ( !EMPTY_TRASH_DAYS ) + unset($stati['trash']); + + $link = 'edit-comments.php'; + if ( !empty($comment_type) && 'all' != $comment_type ) + $link = add_query_arg( 'comment_type', $comment_type, $link ); + + foreach ( $stati as $status => $label ) { + $class = ( $status == $comment_status ) ? ' class="current"' : ''; + + if ( !isset( $num_comments->$status ) ) + $num_comments->$status = 10; + $link = add_query_arg( 'comment_status', $status, $link ); + if ( $post_id ) + $link = add_query_arg( 'p', absint( $post_id ), $link ); + /* + // I toyed with this, but decided against it. Leaving it in here in case anyone thinks it is a good idea. ~ Mark + if ( !empty( $_REQUEST['s'] ) ) + $link = add_query_arg( 's', esc_attr( stripslashes( $_REQUEST['s'] ) ), $link ); + */ + $status_links[$status] = "" . sprintf( + translate_nooped_plural( $label, $num_comments->$status ), + number_format_i18n( $num_comments->$status ) + ) . ''; + } + + $status_links = apply_filters( 'comment_status_links', $status_links ); + return $status_links; + } + + function get_bulk_actions() { + global $comment_status; + + $actions = array(); + if ( in_array( $comment_status, array( 'all', 'approved' ) ) ) + $actions['unapprove'] = __( 'Unapprove' ); + if ( in_array( $comment_status, array( 'all', 'moderated' ) ) ) + $actions['approve'] = __( 'Approve' ); + if ( in_array( $comment_status, array( 'all', 'moderated', 'approved' ) ) ) + $actions['spam'] = _x( 'Mark as Spam', 'comment' ); + + if ( 'trash' == $comment_status ) + $actions['untrash'] = __( 'Restore' ); + elseif ( 'spam' == $comment_status ) + $actions['unspam'] = _x( 'Not Spam', 'comment' ); + + if ( in_array( $comment_status, array( 'trash', 'spam' ) ) || !EMPTY_TRASH_DAYS ) + $actions['delete'] = __( 'Delete Permanently' ); + else + $actions['trash'] = __( 'Move to Trash' ); + + return $actions; + } + + function extra_tablenav( $which ) { + global $comment_status, $comment_type; +?> +
+ + + 'post-query-submit' ) ); + } + + if ( ( 'spam' == $comment_status || 'trash' == $comment_status ) && current_user_can( 'moderate_comments' ) ) { + wp_nonce_field( 'bulk-destroy', '_destroy_nonce' ); + $title = ( 'spam' == $comment_status ) ? esc_attr__( 'Empty Spam' ) : esc_attr__( 'Empty Trash' ); + submit_button( $title, 'button-secondary apply', 'delete_all', false ); + } + do_action( 'manage_comments_nav', $comment_status ); + echo '
'; + } + + function current_action() { + if ( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) ) + return 'delete_all'; + + return parent::current_action(); + } + + function get_columns() { + global $post_id; + + $columns = array(); + + if ( $this->checkbox ) + $columns['cb'] = ''; + + $columns['author'] = __( 'Author' ); + $columns['comment'] = _x( 'Comment', 'column name' ); + + if ( !$post_id ) + $columns['response'] = _x( 'In Response To', 'column name' ); + + return $columns; + } + + function get_sortable_columns() { + return array( + 'author' => 'comment_author', + 'response' => 'comment_post_ID' + ); + } + + function display() { + extract( $this->_args ); + + wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); + + $this->display_tablenav( 'top' ); + +?> + + + + print_column_headers(); ?> + + + + + + print_column_headers( false ); ?> + + + + + display_rows_or_placeholder(); ?> + + + + items = $this->extra_items; $this->display_rows(); ?> + +
+display_tablenav( 'bottom' ); + } + + function single_row( $a_comment ) { + global $post, $comment; + + $comment = $a_comment; + $the_comment_class = join( ' ', get_comment_class( wp_get_comment_status( $comment->comment_ID ) ) ); + + $post = get_post( $comment->comment_post_ID ); + + $this->user_can = current_user_can( 'edit_comment', $comment->comment_ID ); + + echo ""; + echo $this->single_row_columns( $comment ); + echo "\n"; + } + + function column_cb( $comment ) { + if ( $this->user_can ) + echo ""; + } + + function column_comment( $comment ) { + global $post, $comment_status; + + $user_can = $this->user_can; + + $comment_url = esc_url( get_comment_link( $comment->comment_ID ) ); + $the_comment_status = wp_get_comment_status( $comment->comment_ID ); + + $ptime = date( 'G', strtotime( $comment->comment_date ) ); + if ( ( abs( time() - $ptime ) ) < 86400 ) + $ptime = sprintf( __( '%s ago' ), human_time_diff( $ptime ) ); + else + $ptime = mysql2date( __( 'Y/m/d \a\t g:i A' ), $comment->comment_date ); + + if ( $user_can ) { + $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) ); + $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) ); + + $url = "comment.php?c=$comment->comment_ID"; + + $approve_url = esc_url( $url . "&action=approvecomment&$approve_nonce" ); + $unapprove_url = esc_url( $url . "&action=unapprovecomment&$approve_nonce" ); + $spam_url = esc_url( $url . "&action=spamcomment&$del_nonce" ); + $unspam_url = esc_url( $url . "&action=unspamcomment&$del_nonce" ); + $trash_url = esc_url( $url . "&action=trashcomment&$del_nonce" ); + $untrash_url = esc_url( $url . "&action=untrashcomment&$del_nonce" ); + $delete_url = esc_url( $url . "&action=deletecomment&$del_nonce" ); + } + + echo ''; + comment_text(); + if ( $user_can ) { ?> + + '', 'unapprove' => '', + 'reply' => '', + 'quickedit' => '', + 'edit' => '', + 'spam' => '', 'unspam' => '', + 'trash' => '', 'untrash' => '', 'delete' => '' + ); + + if ( $comment_status && 'all' != $comment_status ) { // not looking at all comments + if ( 'approved' == $the_comment_status ) + $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; + else if ( 'unapproved' == $the_comment_status ) + $actions['approve'] = "" . __( 'Approve' ) . ''; + } else { + $actions['approve'] = "" . __( 'Approve' ) . ''; + $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; + } + + if ( 'spam' != $the_comment_status && 'trash' != $the_comment_status ) { + $actions['spam'] = "" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . ''; + } elseif ( 'spam' == $the_comment_status ) { + $actions['unspam'] = "" . _x( 'Not Spam', 'comment' ) . ''; + } elseif ( 'trash' == $the_comment_status ) { + $actions['untrash'] = "" . __( 'Restore' ) . ''; + } + + if ( 'spam' == $the_comment_status || 'trash' == $the_comment_status || !EMPTY_TRASH_DAYS ) { + $actions['delete'] = "" . __( 'Delete Permanently' ) . ''; + } else { + $actions['trash'] = "" . _x( 'Trash', 'verb' ) . ''; + } + + if ( 'spam' != $the_comment_status && 'trash' != $the_comment_status ) { + $actions['edit'] = "". __( 'Edit' ) . ''; + $actions['quickedit'] = '' . __( 'Quick Edit' ) . ''; + $actions['reply'] = '' . __( 'Reply' ) . ''; + } + + $actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment ); + + $i = 0; + echo '
'; + foreach ( $actions as $action => $link ) { + ++$i; + ( ( ( 'approve' == $action || 'unapprove' == $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; + + // Reply and quickedit need a hide-if-no-js span when not added with ajax + if ( ( 'reply' == $action || 'quickedit' == $action ) && ! defined('DOING_AJAX') ) + $action .= ' hide-if-no-js'; + elseif ( ( $action == 'untrash' && $the_comment_status == 'trash' ) || ( $action == 'unspam' && $the_comment_status == 'spam' ) ) { + if ( '1' == get_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', true ) ) + $action .= ' approve'; + else + $action .= ' unapprove'; + } + + echo "$sep$link"; + } + echo '
'; + } + } + + function column_author( $comment ) { + global $comment_status; + + $author_url = get_comment_author_url(); + if ( 'http://' == $author_url ) + $author_url = ''; + $author_url_display = preg_replace( '|http://(www\.)?|i', '', $author_url ); + if ( strlen( $author_url_display ) > 50 ) + $author_url_display = substr( $author_url_display, 0, 49 ) . '...'; + + echo ""; comment_author(); echo '
'; + if ( !empty( $author_url ) ) + echo "$author_url_display
"; + + if ( $this->user_can ) { + if ( !empty( $comment->comment_author_email ) ) { + comment_author_email_link(); + echo '
'; + } + echo ''; + comment_author_IP(); + echo ''; + } + } + + function column_date( $comment ) { + return get_comment_date( __( 'Y/m/d \a\t g:ia' ) ); + } + + function column_response( $comment ) { + global $post; + + if ( isset( $this->pending_count[$post->ID] ) ) { + $pending_comments = $this->pending_count[$post->ID]; + } else { + $_pending_count_temp = get_pending_comments_num( array( $post->ID ) ); + $pending_comments = $this->pending_count[$post->ID] = $_pending_count_temp[$post->ID]; + } + + if ( current_user_can( 'edit_post', $post->ID ) ) { + $post_link = ""; + $post_link .= get_the_title( $post->ID ) . ''; + } else { + $post_link = get_the_title( $post->ID ); + } + + echo ''; + if ( 'attachment' == $post->post_type && ( $thumb = wp_get_attachment_image( $post->ID, array( 80, 60 ), true ) ) ) + echo $thumb; + } + + function column_default( $comment, $column_name ) { + do_action( 'manage_comments_custom_column', $column_name, $comment->comment_ID ); + } +} + +/** + * Post Comments List Table class. + * + * @package WordPress + * @subpackage List_Table + * @since 3.1.0 + * @access private + * + * @see WP_Comments_Table + */ +class WP_Post_Comments_List_Table extends WP_Comments_List_Table { + + function get_column_info() { + $this->_column_headers = array( + array( + 'author' => __( 'Author' ), + 'comment' => _x( 'Comment', 'column name' ), + ), + array(), + array(), + ); + + return $this->_column_headers; + } + + function get_table_classes() { + $classes = parent::get_table_classes(); + $classes[] = 'comments-box'; + return $classes; + } + + function display( $output_empty = false ) { + extract( $this->_args ); + + wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); +?> + + > + display_rows_or_placeholder(); ?> + + +find_folder(ABSPATH); + //Perhaps the FTP folder is rooted at the WordPress install, Check for wp-includes folder in root, Could have some false positives, but rare. + if ( ! $folder && $this->is_dir('/wp-includes') ) + $folder = '/'; + return $folder; + } + /** + * Returns the path on the remote filesystem of WP_CONTENT_DIR + * + * @since 2.7 + * @access public + * @return string The location of the remote path. + */ + function wp_content_dir() { + return $this->find_folder(WP_CONTENT_DIR); + } + /** + * Returns the path on the remote filesystem of WP_PLUGIN_DIR + * + * @since 2.7 + * @access public + * + * @return string The location of the remote path. + */ + function wp_plugins_dir() { + return $this->find_folder(WP_PLUGIN_DIR); + } + /** + * Returns the path on the remote filesystem of the Themes Directory + * + * @since 2.7 + * @access public + * + * @return string The location of the remote path. + */ + function wp_themes_dir() { + return $this->wp_content_dir() . 'themes/'; + } + /** + * Returns the path on the remote filesystem of WP_LANG_DIR + * + * @since 3.2.0 + * @access public + * + * @return string The location of the remote path. + */ + function wp_lang_dir() { + return $this->find_folder(WP_LANG_DIR); + } + + /** + * Locates a folder on the remote filesystem. + * + * Deprecated; use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead. + * + * @since 2.5 + * @deprecated 2.7 + * @access public + * + * @param string $base The folder to start searching from + * @param bool $echo True to display debug information + * @return string The location of the remote path. + */ + function find_base_dir($base = '.', $echo = false) { + _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); + $this->verbose = $echo; + return $this->abspath(); + } + /** + * Locates a folder on the remote filesystem. + * + * Deprecated; use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead. + * + * @since 2.5 + * @deprecated 2.7 + * @access public + * + * @param string $base The folder to start searching from + * @param bool $echo True to display debug information + * @return string The location of the remote path. + */ + function get_base_dir($base = '.', $echo = false) { + _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); + $this->verbose = $echo; + return $this->abspath(); + } + + /** + * Locates a folder on the remote filesystem. + * + * Assumes that on Windows systems, Stripping off the Drive letter is OK + * Sanitizes \\ to / in windows filepaths. + * + * @since 2.7 + * @access public + * + * @param string $folder the folder to locate + * @return string The location of the remote path. + */ + function find_folder($folder) { + + if ( strpos($this->method, 'ftp') !== false ) { + $constant_overrides = array( 'FTP_BASE' => ABSPATH, 'FTP_CONTENT_DIR' => WP_CONTENT_DIR, 'FTP_PLUGIN_DIR' => WP_PLUGIN_DIR, 'FTP_LANG_DIR' => WP_LANG_DIR ); + foreach ( $constant_overrides as $constant => $dir ) + if ( defined($constant) && $folder === $dir ) + return trailingslashit(constant($constant)); + } elseif ( 'direct' == $this->method ) { + $folder = str_replace('\\', '/', $folder); //Windows path sanitisation + return trailingslashit($folder); + } + + $folder = preg_replace('|^([a-z]{1}):|i', '', $folder); //Strip out windows drive letter if it's there. + $folder = str_replace('\\', '/', $folder); //Windows path sanitisation + + if ( isset($this->cache[ $folder ] ) ) + return $this->cache[ $folder ]; + + if ( $this->exists($folder) ) { //Folder exists at that absolute path. + $folder = trailingslashit($folder); + $this->cache[ $folder ] = $folder; + return $folder; + } + if ( $return = $this->search_for_folder($folder) ) + $this->cache[ $folder ] = $return; + return $return; + } + + /** + * Locates a folder on the remote filesystem. + * + * Expects Windows sanitized path + * + * @since 2.7 + * @access private + * + * @param string $folder the folder to locate + * @param string $base the folder to start searching from + * @param bool $loop if the function has recursed, Internal use only + * @return string The location of the remote path. + */ + function search_for_folder($folder, $base = '.', $loop = false ) { + if ( empty( $base ) || '.' == $base ) + $base = trailingslashit($this->cwd()); + + $folder = untrailingslashit($folder); + + $folder_parts = explode('/', $folder); + $last_path = $folder_parts[ count($folder_parts) - 1 ]; + + $files = $this->dirlist( $base ); + + foreach ( $folder_parts as $key ) { + if ( $key == $last_path ) + continue; //We want this to be caught by the next code block. + + //Working from /home/ to /user/ to /wordpress/ see if that file exists within the current folder, + // If its found, change into it and follow through looking for it. + // If it cant find WordPress down that route, it'll continue onto the next folder level, and see if that matches, and so on. + // If it reaches the end, and still cant find it, it'll return false for the entire function. + if ( isset($files[ $key ]) ){ + //Lets try that folder: + $newdir = trailingslashit(path_join($base, $key)); + if ( $this->verbose ) + printf( __('Changing to %s') . '
', $newdir ); + if ( $ret = $this->search_for_folder( $folder, $newdir, $loop) ) + return $ret; + } + } + + //Only check this as a last resort, to prevent locating the incorrect install. All above procedures will fail quickly if this is the right branch to take. + if (isset( $files[ $last_path ] ) ) { + if ( $this->verbose ) + printf( __('Found %s') . '
', $base . $last_path ); + return trailingslashit($base . $last_path); + } + if ( $loop ) + return false; //Prevent this function from looping again. + //As an extra last resort, Change back to / if the folder wasn't found. This comes into effect when the CWD is /home/user/ but WP is at /var/www/.... mainly dedicated setups. + return $this->search_for_folder($folder, '/', true); + + } + + /** + * Returns the *nix style file permissions for a file + * + * From the PHP documentation page for fileperms() + * + * @link http://docs.php.net/fileperms + * @since 2.5 + * @access public + * + * @param string $file string filename + * @return int octal representation of permissions + */ + function gethchmod($file){ + $perms = $this->getchmod($file); + if (($perms & 0xC000) == 0xC000) // Socket + $info = 's'; + elseif (($perms & 0xA000) == 0xA000) // Symbolic Link + $info = 'l'; + elseif (($perms & 0x8000) == 0x8000) // Regular + $info = '-'; + elseif (($perms & 0x6000) == 0x6000) // Block special + $info = 'b'; + elseif (($perms & 0x4000) == 0x4000) // Directory + $info = 'd'; + elseif (($perms & 0x2000) == 0x2000) // Character special + $info = 'c'; + elseif (($perms & 0x1000) == 0x1000) // FIFO pipe + $info = 'p'; + else // Unknown + $info = 'u'; + + // Owner + $info .= (($perms & 0x0100) ? 'r' : '-'); + $info .= (($perms & 0x0080) ? 'w' : '-'); + $info .= (($perms & 0x0040) ? + (($perms & 0x0800) ? 's' : 'x' ) : + (($perms & 0x0800) ? 'S' : '-')); + + // Group + $info .= (($perms & 0x0020) ? 'r' : '-'); + $info .= (($perms & 0x0010) ? 'w' : '-'); + $info .= (($perms & 0x0008) ? + (($perms & 0x0400) ? 's' : 'x' ) : + (($perms & 0x0400) ? 'S' : '-')); + + // World + $info .= (($perms & 0x0004) ? 'r' : '-'); + $info .= (($perms & 0x0002) ? 'w' : '-'); + $info .= (($perms & 0x0001) ? + (($perms & 0x0200) ? 't' : 'x' ) : + (($perms & 0x0200) ? 'T' : '-')); + return $info; + } + + /** + * Converts *nix style file permissions to a octal number. + * + * Converts '-rw-r--r--' to 0644 + * From "info at rvgate dot nl"'s comment on the PHP documentation for chmod() + * + * @link http://docs.php.net/manual/en/function.chmod.php#49614 + * @since 2.5 + * @access public + * + * @param string $mode string *nix style file permission + * @return int octal representation + */ + function getnumchmodfromh($mode) { + $realmode = ''; + $legal = array('', 'w', 'r', 'x', '-'); + $attarray = preg_split('//', $mode); + + for ($i=0; $i < count($attarray); $i++) + if ($key = array_search($attarray[$i], $legal)) + $realmode .= $legal[$key]; + + $mode = str_pad($realmode, 9, '-'); + $trans = array('-'=>'0', 'r'=>'4', 'w'=>'2', 'x'=>'1'); + $mode = strtr($mode,$trans); + + $newmode = ''; + $newmode .= $mode[0] + $mode[1] + $mode[2]; + $newmode .= $mode[3] + $mode[4] + $mode[5]; + $newmode .= $mode[6] + $mode[7] + $mode[8]; + return $newmode; + } + + /** + * Determines if the string provided contains binary characters. + * + * @since 2.7 + * @access private + * + * @param string $text String to test against + * @return bool true if string is binary, false otherwise + */ + function is_binary( $text ) { + return (bool) preg_match('|[^\x20-\x7E]|', $text); //chr(32)..chr(127) + } +} diff --git a/wp-admin/includes/class-wp-filesystem-direct.php b/wp-admin/includes/class-wp-filesystem-direct.php new file mode 100644 index 0000000..457f199 --- /dev/null +++ b/wp-admin/includes/class-wp-filesystem-direct.php @@ -0,0 +1,363 @@ +method = 'direct'; + $this->errors = new WP_Error(); + } + /** + * connect filesystem. + * + * @return bool Returns true on success or false on failure (always true for WP_Filesystem_Direct). + */ + function connect() { + return true; + } + /** + * Reads entire file into a string + * + * @param string $file Name of the file to read. + * @return string|bool The function returns the read data or false on failure. + */ + function get_contents($file) { + return @file_get_contents($file); + } + /** + * Reads entire file into an array + * + * @param string $file Path to the file. + * @return array|bool the file contents in an array or false on failure. + */ + function get_contents_array($file) { + return @file($file); + } + /** + * Write a string to a file + * + * @param string $file Remote path to the file where to write the data. + * @param string $contents The data to write. + * @param int $mode (optional) The file permissions as octal number, usually 0644. + * @return bool False upon failure. + */ + function put_contents($file, $contents, $mode = false ) { + if ( ! ($fp = @fopen($file, 'w')) ) + return false; + @fwrite($fp, $contents); + @fclose($fp); + $this->chmod($file, $mode); + return true; + } + /** + * Gets the current working directory + * + * @return string|bool the current working directory on success, or false on failure. + */ + function cwd() { + return @getcwd(); + } + /** + * Change directory + * + * @param string $dir The new current directory. + * @return bool Returns true on success or false on failure. + */ + function chdir($dir) { + return @chdir($dir); + } + /** + * Changes file group + * + * @param string $file Path to the file. + * @param mixed $group A group name or number. + * @param bool $recursive (optional) If set True changes file group recursively. Defaults to False. + * @return bool Returns true on success or false on failure. + */ + function chgrp($file, $group, $recursive = false) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive ) + return @chgrp($file, $group); + if ( ! $this->is_dir($file) ) + return @chgrp($file, $group); + //Is a directory, and we want recursive + $file = trailingslashit($file); + $filelist = $this->dirlist($file); + foreach ($filelist as $filename) + $this->chgrp($file . $filename, $group, $recursive); + + return true; + } + /** + * Changes filesystem permissions + * + * @param string $file Path to the file. + * @param int $mode (optional) The permissions as octal number, usually 0644 for files, 0755 for dirs. + * @param bool $recursive (optional) If set True changes file group recursively. Defaults to False. + * @return bool Returns true on success or false on failure. + */ + function chmod($file, $mode = false, $recursive = false) { + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + if ( ! $recursive || ! $this->is_dir($file) ) + return @chmod($file, $mode); + //Is a directory, and we want recursive + $file = trailingslashit($file); + $filelist = $this->dirlist($file); + foreach ( (array)$filelist as $filename => $filemeta) + $this->chmod($file . $filename, $mode, $recursive); + + return true; + } + /** + * Changes file owner + * + * @param string $file Path to the file. + * @param mixed $owner A user name or number. + * @param bool $recursive (optional) If set True changes file owner recursively. Defaults to False. + * @return bool Returns true on success or false on failure. + */ + function chown($file, $owner, $recursive = false) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive ) + return @chown($file, $owner); + if ( ! $this->is_dir($file) ) + return @chown($file, $owner); + //Is a directory, and we want recursive + $filelist = $this->dirlist($file); + foreach ($filelist as $filename) { + $this->chown($file . '/' . $filename, $owner, $recursive); + } + return true; + } + /** + * Gets file owner + * + * @param string $file Path to the file. + * @return string Username of the user. + */ + function owner($file) { + $owneruid = @fileowner($file); + if ( ! $owneruid ) + return false; + if ( ! function_exists('posix_getpwuid') ) + return $owneruid; + $ownerarray = posix_getpwuid($owneruid); + return $ownerarray['name']; + } + /** + * Gets file permissions + * + * FIXME does not handle errors in fileperms() + * + * @param string $file Path to the file. + * @return string Mode of the file (last 4 digits). + */ + function getchmod($file) { + return substr(decoct(@fileperms($file)),3); + } + function group($file) { + $gid = @filegroup($file); + if ( ! $gid ) + return false; + if ( ! function_exists('posix_getgrgid') ) + return $gid; + $grouparray = posix_getgrgid($gid); + return $grouparray['name']; + } + + function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + + $rtval = copy($source, $destination); + if ( $mode ) + $this->chmod($destination, $mode); + return $rtval; + } + + function move($source, $destination, $overwrite = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + + // try using rename first. if that fails (for example, source is read only) try copy + if ( @rename($source, $destination) ) + return true; + + if ( $this->copy($source, $destination, $overwrite) && $this->exists($destination) ) { + $this->delete($source); + return true; + } else { + return false; + } + } + + function delete($file, $recursive = false, $type = false) { + if ( empty($file) ) //Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem. + return false; + $file = str_replace('\\', '/', $file); //for win32, occasional problems deleting files otherwise + + if ( 'f' == $type || $this->is_file($file) ) + return @unlink($file); + if ( ! $recursive && $this->is_dir($file) ) + return @rmdir($file); + + //At this point its a folder, and we're in recursive mode + $file = trailingslashit($file); + $filelist = $this->dirlist($file, true); + + $retval = true; + if ( is_array($filelist) ) //false if no files, So check first. + foreach ($filelist as $filename => $fileinfo) + if ( ! $this->delete($file . $filename, $recursive, $fileinfo['type']) ) + $retval = false; + + if ( file_exists($file) && ! @rmdir($file) ) + $retval = false; + return $retval; + } + + function exists($file) { + return @file_exists($file); + } + + function is_file($file) { + return @is_file($file); + } + + function is_dir($path) { + return @is_dir($path); + } + + function is_readable($file) { + return @is_readable($file); + } + + function is_writable($file) { + return @is_writable($file); + } + + function atime($file) { + return @fileatime($file); + } + + function mtime($file) { + return @filemtime($file); + } + function size($file) { + return @filesize($file); + } + + function touch($file, $time = 0, $atime = 0) { + if ($time == 0) + $time = time(); + if ($atime == 0) + $atime = time(); + return @touch($file, $time, $atime); + } + + function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { + // safe mode fails with a trailing slash under certain PHP versions. + $path = untrailingslashit($path); + if ( empty($path) ) + return false; + + if ( ! $chmod ) + $chmod = FS_CHMOD_DIR; + + if ( ! @mkdir($path) ) + return false; + $this->chmod($path, $chmod); + if ( $chown ) + $this->chown($path, $chown); + if ( $chgrp ) + $this->chgrp($path, $chgrp); + return true; + } + + function rmdir($path, $recursive = false) { + return $this->delete($path, $recursive); + } + + function dirlist($path, $include_hidden = true, $recursive = false) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path); + } else { + $limit_file = false; + } + + if ( ! $this->is_dir($path) ) + return false; + + $dir = @dir($path); + if ( ! $dir ) + return false; + + $ret = array(); + + while (false !== ($entry = $dir->read()) ) { + $struc = array(); + $struc['name'] = $entry; + + if ( '.' == $struc['name'] || '..' == $struc['name'] ) + continue; + + if ( ! $include_hidden && '.' == $struc['name'][0] ) + continue; + + if ( $limit_file && $struc['name'] != $limit_file) + continue; + + $struc['perms'] = $this->gethchmod($path.'/'.$entry); + $struc['permsn'] = $this->getnumchmodfromh($struc['perms']); + $struc['number'] = false; + $struc['owner'] = $this->owner($path.'/'.$entry); + $struc['group'] = $this->group($path.'/'.$entry); + $struc['size'] = $this->size($path.'/'.$entry); + $struc['lastmodunix']= $this->mtime($path.'/'.$entry); + $struc['lastmod'] = date('M j',$struc['lastmodunix']); + $struc['time'] = date('h:i:s',$struc['lastmodunix']); + $struc['type'] = $this->is_dir($path.'/'.$entry) ? 'd' : 'f'; + + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + $dir->close(); + unset($dir); + return $ret; + } +} diff --git a/wp-admin/includes/class-wp-filesystem-ftpext.php b/wp-admin/includes/class-wp-filesystem-ftpext.php new file mode 100644 index 0000000..1228030 --- /dev/null +++ b/wp-admin/includes/class-wp-filesystem-ftpext.php @@ -0,0 +1,389 @@ +method = 'ftpext'; + $this->errors = new WP_Error(); + + //Check if possible to use ftp functions. + if ( ! extension_loaded('ftp') ) { + $this->errors->add('no_ftp_ext', __('The ftp PHP extension is not available')); + return false; + } + + // Set defaults: + //This Class uses the timeout on a per-connection basis, Others use it on a per-action basis. + + if ( ! defined('FS_TIMEOUT') ) + define('FS_TIMEOUT', 240); + + if ( empty($opt['port']) ) + $this->options['port'] = 21; + else + $this->options['port'] = $opt['port']; + + if ( empty($opt['hostname']) ) + $this->errors->add('empty_hostname', __('FTP hostname is required')); + else + $this->options['hostname'] = $opt['hostname']; + + if ( ! empty($opt['base']) ) + $this->wp_base = $opt['base']; + + // Check if the options provided are OK. + if ( empty($opt['username']) ) + $this->errors->add('empty_username', __('FTP username is required')); + else + $this->options['username'] = $opt['username']; + + if ( empty($opt['password']) ) + $this->errors->add('empty_password', __('FTP password is required')); + else + $this->options['password'] = $opt['password']; + + $this->options['ssl'] = false; + if ( isset($opt['connection_type']) && 'ftps' == $opt['connection_type'] ) + $this->options['ssl'] = true; + } + + function connect() { + if ( isset($this->options['ssl']) && $this->options['ssl'] && function_exists('ftp_ssl_connect') ) + $this->link = @ftp_ssl_connect($this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT); + else + $this->link = @ftp_connect($this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT); + + if ( ! $this->link ) { + $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( ! @ftp_login($this->link,$this->options['username'], $this->options['password']) ) { + $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); + return false; + } + + //Set the Connection to use Passive FTP + @ftp_pasv( $this->link, true ); + if ( @ftp_get_option($this->link, FTP_TIMEOUT_SEC) < FS_TIMEOUT ) + @ftp_set_option($this->link, FTP_TIMEOUT_SEC, FS_TIMEOUT); + + return true; + } + + function get_contents($file, $type = '', $resumepos = 0 ) { + if ( empty($type) ) + $type = FTP_BINARY; + + $tempfile = wp_tempnam($file); + $temp = fopen($tempfile, 'w+'); + + if ( ! $temp ) + return false; + + if ( ! @ftp_fget($this->link, $temp, $file, $type, $resumepos) ) + return false; + + fseek($temp, 0); //Skip back to the start of the file being written to + $contents = ''; + + while ( ! feof($temp) ) + $contents .= fread($temp, 8192); + + fclose($temp); + unlink($tempfile); + return $contents; + } + function get_contents_array($file) { + return explode("\n", $this->get_contents($file)); + } + + function put_contents($file, $contents, $mode = false ) { + $tempfile = wp_tempnam($file); + $temp = fopen($tempfile, 'w+'); + if ( ! $temp ) + return false; + + fwrite($temp, $contents); + fseek($temp, 0); //Skip back to the start of the file being written to + + $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII; + $ret = @ftp_fput($this->link, $file, $temp, $type); + + fclose($temp); + unlink($tempfile); + + $this->chmod($file, $mode); + + return $ret; + } + function cwd() { + $cwd = @ftp_pwd($this->link); + if ( $cwd ) + $cwd = trailingslashit($cwd); + return $cwd; + } + function chdir($dir) { + return @ftp_chdir($this->link, $dir); + } + function chgrp($file, $group, $recursive = false ) { + return false; + } + function chmod($file, $mode = false, $recursive = false) { + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + // chmod any sub-objects if recursive. + if ( $recursive && $this->is_dir($file) ) { + $filelist = $this->dirlist($file); + foreach ( (array)$filelist as $filename => $filemeta ) + $this->chmod($file . '/' . $filename, $mode, $recursive); + } + + // chmod the file or directory + if ( ! function_exists('ftp_chmod') ) + return (bool)@ftp_site($this->link, sprintf('CHMOD %o %s', $mode, $file)); + return (bool)@ftp_chmod($this->link, $mode, $file); + } + function chown($file, $owner, $recursive = false ) { + return false; + } + function owner($file) { + $dir = $this->dirlist($file); + return $dir[$file]['owner']; + } + function getchmod($file) { + $dir = $this->dirlist($file); + return $dir[$file]['permsn']; + } + function group($file) { + $dir = $this->dirlist($file); + return $dir[$file]['group']; + } + function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + $content = $this->get_contents($source); + if ( false === $content) + return false; + return $this->put_contents($destination, $content, $mode); + } + function move($source, $destination, $overwrite = false) { + return ftp_rename($this->link, $source, $destination); + } + + function delete($file, $recursive = false, $type = false) { + if ( empty($file) ) + return false; + if ( 'f' == $type || $this->is_file($file) ) + return @ftp_delete($this->link, $file); + if ( !$recursive ) + return @ftp_rmdir($this->link, $file); + + $filelist = $this->dirlist( trailingslashit($file) ); + if ( !empty($filelist) ) + foreach ( $filelist as $delete_file ) + $this->delete( trailingslashit($file) . $delete_file['name'], $recursive, $delete_file['type'] ); + return @ftp_rmdir($this->link, $file); + } + + function exists($file) { + $list = @ftp_nlist($this->link, $file); + return !empty($list); //empty list = no file, so invert. + } + function is_file($file) { + return $this->exists($file) && !$this->is_dir($file); + } + function is_dir($path) { + $cwd = $this->cwd(); + $result = @ftp_chdir($this->link, trailingslashit($path) ); + if ( $result && $path == $this->cwd() || $this->cwd() != $cwd ) { + @ftp_chdir($this->link, $cwd); + return true; + } + return false; + } + function is_readable($file) { + //Get dir list, Check if the file is readable by the current user?? + return true; + } + function is_writable($file) { + //Get dir list, Check if the file is writable by the current user?? + return true; + } + function atime($file) { + return false; + } + function mtime($file) { + return ftp_mdtm($this->link, $file); + } + function size($file) { + return ftp_size($this->link, $file); + } + function touch($file, $time = 0, $atime = 0) { + return false; + } + function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { + $path = untrailingslashit($path); + if ( empty($path) ) + return false; + + if ( !@ftp_mkdir($this->link, $path) ) + return false; + $this->chmod($path, $chmod); + if ( $chown ) + $this->chown($path, $chown); + if ( $chgrp ) + $this->chgrp($path, $chgrp); + return true; + } + function rmdir($path, $recursive = false) { + return $this->delete($path, $recursive); + } + + function parselisting($line) { + static $is_windows; + if ( is_null($is_windows) ) + $is_windows = stripos( ftp_systype($this->link), 'win') !== false; + + if ( $is_windows && preg_match('/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|) +(.+)/', $line, $lucifer) ) { + $b = array(); + if ( $lucifer[3] < 70 ) + $lucifer[3] +=2000; + else + $lucifer[3] += 1900; // 4digit year fix + $b['isdir'] = ( $lucifer[7] == ''); + if ( $b['isdir'] ) + $b['type'] = 'd'; + else + $b['type'] = 'f'; + $b['size'] = $lucifer[7]; + $b['month'] = $lucifer[1]; + $b['day'] = $lucifer[2]; + $b['year'] = $lucifer[3]; + $b['hour'] = $lucifer[4]; + $b['minute'] = $lucifer[5]; + $b['time'] = @mktime($lucifer[4] + (strcasecmp($lucifer[6], "PM") == 0 ? 12 : 0), $lucifer[5], 0, $lucifer[1], $lucifer[2], $lucifer[3]); + $b['am/pm'] = $lucifer[6]; + $b['name'] = $lucifer[8]; + } elseif ( !$is_windows && $lucifer = preg_split('/[ ]/', $line, 9, PREG_SPLIT_NO_EMPTY)) { + //echo $line."\n"; + $lcount = count($lucifer); + if ( $lcount < 8 ) + return ''; + $b = array(); + $b['isdir'] = $lucifer[0]{0} === 'd'; + $b['islink'] = $lucifer[0]{0} === 'l'; + if ( $b['isdir'] ) + $b['type'] = 'd'; + elseif ( $b['islink'] ) + $b['type'] = 'l'; + else + $b['type'] = 'f'; + $b['perms'] = $lucifer[0]; + $b['number'] = $lucifer[1]; + $b['owner'] = $lucifer[2]; + $b['group'] = $lucifer[3]; + $b['size'] = $lucifer[4]; + if ( $lcount == 8 ) { + sscanf($lucifer[5], '%d-%d-%d', $b['year'], $b['month'], $b['day']); + sscanf($lucifer[6], '%d:%d', $b['hour'], $b['minute']); + $b['time'] = @mktime($b['hour'], $b['minute'], 0, $b['month'], $b['day'], $b['year']); + $b['name'] = $lucifer[7]; + } else { + $b['month'] = $lucifer[5]; + $b['day'] = $lucifer[6]; + if ( preg_match('/([0-9]{2}):([0-9]{2})/', $lucifer[7], $l2) ) { + $b['year'] = date("Y"); + $b['hour'] = $l2[1]; + $b['minute'] = $l2[2]; + } else { + $b['year'] = $lucifer[7]; + $b['hour'] = 0; + $b['minute'] = 0; + } + $b['time'] = strtotime( sprintf('%d %s %d %02d:%02d', $b['day'], $b['month'], $b['year'], $b['hour'], $b['minute']) ); + $b['name'] = $lucifer[8]; + } + } + + return $b; + } + + function dirlist($path = '.', $include_hidden = true, $recursive = false) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path) . '/'; + } else { + $limit_file = false; + } + + $pwd = @ftp_pwd($this->link); + if ( ! @ftp_chdir($this->link, $path) ) // Cant change to folder = folder doesn't exist + return false; + $list = @ftp_rawlist($this->link, '-a', false); + @ftp_chdir($this->link, $pwd); + + if ( empty($list) ) // Empty array = non-existent folder (real folder will show . at least) + return false; + + $dirlist = array(); + foreach ( $list as $k => $v ) { + $entry = $this->parselisting($v); + if ( empty($entry) ) + continue; + + if ( '.' == $entry['name'] || '..' == $entry['name'] ) + continue; + + if ( ! $include_hidden && '.' == $entry['name'][0] ) + continue; + + if ( $limit_file && $entry['name'] != $limit_file) + continue; + + $dirlist[ $entry['name'] ] = $entry; + } + + $ret = array(); + foreach ( (array)$dirlist as $struc ) { + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + return $ret; + } + + function __destruct() { + if ( $this->link ) + ftp_close($this->link); + } +} diff --git a/wp-admin/includes/class-wp-filesystem-ftpsockets.php b/wp-admin/includes/class-wp-filesystem-ftpsockets.php new file mode 100644 index 0000000..2e9fbd6 --- /dev/null +++ b/wp-admin/includes/class-wp-filesystem-ftpsockets.php @@ -0,0 +1,329 @@ +method = 'ftpsockets'; + $this->errors = new WP_Error(); + + //Check if possible to use ftp functions. + if ( ! @include_once ABSPATH . 'wp-admin/includes/class-ftp.php' ) + return false; + $this->ftp = new ftp(); + + //Set defaults: + if ( empty($opt['port']) ) + $this->options['port'] = 21; + else + $this->options['port'] = $opt['port']; + + if ( empty($opt['hostname']) ) + $this->errors->add('empty_hostname', __('FTP hostname is required')); + else + $this->options['hostname'] = $opt['hostname']; + + if ( ! empty($opt['base']) ) + $this->wp_base = $opt['base']; + + // Check if the options provided are OK. + if ( empty ($opt['username']) ) + $this->errors->add('empty_username', __('FTP username is required')); + else + $this->options['username'] = $opt['username']; + + if ( empty ($opt['password']) ) + $this->errors->add('empty_password', __('FTP password is required')); + else + $this->options['password'] = $opt['password']; + } + + function connect() { + if ( ! $this->ftp ) + return false; + + $this->ftp->setTimeout(FS_CONNECT_TIMEOUT); + + if ( ! $this->ftp->SetServer($this->options['hostname'], $this->options['port']) ) { + $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( ! $this->ftp->connect() ) { + $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( ! $this->ftp->login($this->options['username'], $this->options['password']) ) { + $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); + return false; + } + + $this->ftp->SetType(FTP_AUTOASCII); + $this->ftp->Passive(true); + $this->ftp->setTimeout(FS_TIMEOUT); + return true; + } + + function get_contents($file, $type = '', $resumepos = 0) { + if ( ! $this->exists($file) ) + return false; + + if ( empty($type) ) + $type = FTP_AUTOASCII; + $this->ftp->SetType($type); + + $temp = wp_tempnam( $file ); + + if ( ! $temphandle = fopen($temp, 'w+') ) + return false; + + if ( ! $this->ftp->fget($temphandle, $file) ) { + fclose($temphandle); + unlink($temp); + return ''; //Blank document, File does exist, Its just blank. + } + + fseek($temphandle, 0); //Skip back to the start of the file being written to + $contents = ''; + + while ( ! feof($temphandle) ) + $contents .= fread($temphandle, 8192); + + fclose($temphandle); + unlink($temp); + return $contents; + } + + function get_contents_array($file) { + return explode("\n", $this->get_contents($file) ); + } + + function put_contents($file, $contents, $mode = false ) { + $temp = wp_tempnam( $file ); + if ( ! $temphandle = @fopen($temp, 'w+') ) { + unlink($temp); + return false; + } + + fwrite($temphandle, $contents); + fseek($temphandle, 0); //Skip back to the start of the file being written to + + $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII; + $this->ftp->SetType($type); + + $ret = $this->ftp->fput($file, $temphandle); + + fclose($temphandle); + unlink($temp); + + $this->chmod($file, $mode); + + return $ret; + } + + function cwd() { + $cwd = $this->ftp->pwd(); + if ( $cwd ) + $cwd = trailingslashit($cwd); + return $cwd; + } + + function chdir($file) { + return $this->ftp->chdir($file); + } + + function chgrp($file, $group, $recursive = false ) { + return false; + } + + function chmod($file, $mode = false, $recursive = false ) { + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + // chmod any sub-objects if recursive. + if ( $recursive && $this->is_dir($file) ) { + $filelist = $this->dirlist($file); + foreach ( (array)$filelist as $filename => $filemeta ) + $this->chmod($file . '/' . $filename, $mode, $recursive); + } + + // chmod the file or directory + return $this->ftp->chmod($file, $mode); + } + + function chown($file, $owner, $recursive = false ) { + return false; + } + + function owner($file) { + $dir = $this->dirlist($file); + return $dir[$file]['owner']; + } + + function getchmod($file) { + $dir = $this->dirlist($file); + return $dir[$file]['permsn']; + } + + function group($file) { + $dir = $this->dirlist($file); + return $dir[$file]['group']; + } + + function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + + $content = $this->get_contents($source); + if ( false === $content ) + return false; + + return $this->put_contents($destination, $content, $mode); + } + + function move($source, $destination, $overwrite = false ) { + return $this->ftp->rename($source, $destination); + } + + function delete($file, $recursive = false, $type = false) { + if ( empty($file) ) + return false; + if ( 'f' == $type || $this->is_file($file) ) + return $this->ftp->delete($file); + if ( !$recursive ) + return $this->ftp->rmdir($file); + + return $this->ftp->mdel($file); + } + + function exists($file) { + return $this->ftp->is_exists($file); + } + + function is_file($file) { + if ( $this->is_dir($file) ) + return false; + if ( $this->exists($file) ) + return true; + return false; + } + + function is_dir($path) { + $cwd = $this->cwd(); + if ( $this->chdir($path) ) { + $this->chdir($cwd); + return true; + } + return false; + } + + function is_readable($file) { + //Get dir list, Check if the file is writable by the current user?? + return true; + } + + function is_writable($file) { + //Get dir list, Check if the file is writable by the current user?? + return true; + } + + function atime($file) { + return false; + } + + function mtime($file) { + return $this->ftp->mdtm($file); + } + + function size($file) { + return $this->ftp->filesize($file); + } + + function touch($file, $time = 0, $atime = 0 ) { + return false; + } + + function mkdir($path, $chmod = false, $chown = false, $chgrp = false ) { + $path = untrailingslashit($path); + if ( empty($path) ) + return false; + + if ( ! $this->ftp->mkdir($path) ) + return false; + if ( ! $chmod ) + $chmod = FS_CHMOD_DIR; + $this->chmod($path, $chmod); + if ( $chown ) + $this->chown($path, $chown); + if ( $chgrp ) + $this->chgrp($path, $chgrp); + return true; + } + + function rmdir($path, $recursive = false ) { + $this->delete($path, $recursive); + } + + function dirlist($path = '.', $include_hidden = true, $recursive = false ) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path) . '/'; + } else { + $limit_file = false; + } + + $list = $this->ftp->dirlist($path); + if ( empty($list) && !$this->exists($path) ) + return false; + + $ret = array(); + foreach ( $list as $struc ) { + + if ( '.' == $struc['name'] || '..' == $struc['name'] ) + continue; + + if ( ! $include_hidden && '.' == $struc['name'][0] ) + continue; + + if ( $limit_file && $struc['name'] != $limit_file ) + continue; + + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + return $ret; + } + + function __destruct() { + $this->ftp->quit(); + } +} diff --git a/wp-admin/includes/class-wp-filesystem-ssh2.php b/wp-admin/includes/class-wp-filesystem-ssh2.php new file mode 100644 index 0000000..3114456 --- /dev/null +++ b/wp-admin/includes/class-wp-filesystem-ssh2.php @@ -0,0 +1,386 @@ +method = 'ssh2'; + $this->errors = new WP_Error(); + + //Check if possible to use ssh2 functions. + if ( ! extension_loaded('ssh2') ) { + $this->errors->add('no_ssh2_ext', __('The ssh2 PHP extension is not available')); + return false; + } + if ( !function_exists('stream_get_contents') ) { + $this->errors->add('ssh2_php_requirement', __('The ssh2 PHP extension is available, however, we require the PHP5 function stream_get_contents()')); + return false; + } + + // Set defaults: + if ( empty($opt['port']) ) + $this->options['port'] = 22; + else + $this->options['port'] = $opt['port']; + + if ( empty($opt['hostname']) ) + $this->errors->add('empty_hostname', __('SSH2 hostname is required')); + else + $this->options['hostname'] = $opt['hostname']; + + if ( ! empty($opt['base']) ) + $this->wp_base = $opt['base']; + + // Check if the options provided are OK. + if ( !empty ($opt['public_key']) && !empty ($opt['private_key']) ) { + $this->options['public_key'] = $opt['public_key']; + $this->options['private_key'] = $opt['private_key']; + + $this->options['hostkey'] = array('hostkey' => 'ssh-rsa'); + + $this->keys = true; + } elseif ( empty ($opt['username']) ) { + $this->errors->add('empty_username', __('SSH2 username is required')); + } + + if ( !empty($opt['username']) ) + $this->options['username'] = $opt['username']; + + if ( empty ($opt['password']) ) { + if ( !$this->keys ) //password can be blank if we are using keys + $this->errors->add('empty_password', __('SSH2 password is required')); + } else { + $this->options['password'] = $opt['password']; + } + + } + + function connect() { + if ( ! $this->keys ) { + $this->link = @ssh2_connect($this->options['hostname'], $this->options['port']); + } else { + $this->link = @ssh2_connect($this->options['hostname'], $this->options['port'], $this->options['hostkey']); + } + + if ( ! $this->link ) { + $this->errors->add('connect', sprintf(__('Failed to connect to SSH2 Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( !$this->keys ) { + if ( ! @ssh2_auth_password($this->link, $this->options['username'], $this->options['password']) ) { + $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); + return false; + } + } else { + if ( ! @ssh2_auth_pubkey_file($this->link, $this->options['username'], $this->options['public_key'], $this->options['private_key'], $this->options['password'] ) ) { + $this->errors->add('auth', sprintf(__('Public and Private keys incorrect for %s'), $this->options['username'])); + return false; + } + } + + $this->sftp_link = ssh2_sftp($this->link); + + return true; + } + + function run_command( $command, $returnbool = false) { + + if ( ! $this->link ) + return false; + + if ( ! ($stream = ssh2_exec($this->link, $command)) ) { + $this->errors->add('command', sprintf(__('Unable to perform command: %s'), $command)); + } else { + stream_set_blocking( $stream, true ); + stream_set_timeout( $stream, FS_TIMEOUT ); + $data = stream_get_contents( $stream ); + fclose( $stream ); + + if ( $returnbool ) + return ( $data === false ) ? false : '' != trim($data); + else + return $data; + } + return false; + } + + function get_contents($file, $type = '', $resumepos = 0 ) { + $file = ltrim($file, '/'); + return file_get_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function get_contents_array($file) { + $file = ltrim($file, '/'); + return file('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function put_contents($file, $contents, $mode = false ) { + $file = ltrim($file, '/'); + $ret = file_put_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file, $contents); + + $this->chmod($file, $mode); + + return false !== $ret; + } + + function cwd() { + $cwd = $this->run_command('pwd'); + if ( $cwd ) + $cwd = trailingslashit($cwd); + return $cwd; + } + + function chdir($dir) { + return $this->run_command('cd ' . $dir, true); + } + + function chgrp($file, $group, $recursive = false ) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive || ! $this->is_dir($file) ) + return $this->run_command(sprintf('chgrp %o %s', $mode, escapeshellarg($file)), true); + return $this->run_command(sprintf('chgrp -R %o %s', $mode, escapeshellarg($file)), true); + } + + function chmod($file, $mode = false, $recursive = false) { + if ( ! $this->exists($file) ) + return false; + + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + if ( ! $recursive || ! $this->is_dir($file) ) + return $this->run_command(sprintf('chmod %o %s', $mode, escapeshellarg($file)), true); + return $this->run_command(sprintf('chmod -R %o %s', $mode, escapeshellarg($file)), true); + } + + function chown($file, $owner, $recursive = false ) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive || ! $this->is_dir($file) ) + return $this->run_command(sprintf('chown %o %s', $mode, escapeshellarg($file)), true); + return $this->run_command(sprintf('chown -R %o %s', $mode, escapeshellarg($file)), true); + } + + function owner($file) { + $owneruid = @fileowner('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/')); + if ( ! $owneruid ) + return false; + if ( ! function_exists('posix_getpwuid') ) + return $owneruid; + $ownerarray = posix_getpwuid($owneruid); + return $ownerarray['name']; + } + + function getchmod($file) { + return substr(decoct(@fileperms( 'ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/') )),3); + } + + function group($file) { + $gid = @filegroup('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/')); + if ( ! $gid ) + return false; + if ( ! function_exists('posix_getgrgid') ) + return $gid; + $grouparray = posix_getgrgid($gid); + return $grouparray['name']; + } + + function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + $content = $this->get_contents($source); + if ( false === $content) + return false; + return $this->put_contents($destination, $content, $mode); + } + + function move($source, $destination, $overwrite = false) { + return @ssh2_sftp_rename($this->link, $source, $destination); + } + + function delete($file, $recursive = false, $type = false) { + if ( 'f' == $type || $this->is_file($file) ) + return ssh2_sftp_unlink($this->sftp_link, $file); + if ( ! $recursive ) + return ssh2_sftp_rmdir($this->sftp_link, $file); + $filelist = $this->dirlist($file); + if ( is_array($filelist) ) { + foreach ( $filelist as $filename => $fileinfo) { + $this->delete($file . '/' . $filename, $recursive, $fileinfo['type']); + } + } + return ssh2_sftp_rmdir($this->sftp_link, $file); + } + + function exists($file) { + $file = ltrim($file, '/'); + return file_exists('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function is_file($file) { + $file = ltrim($file, '/'); + return is_file('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function is_dir($path) { + $path = ltrim($path, '/'); + return is_dir('ssh2.sftp://' . $this->sftp_link . '/' . $path); + } + + function is_readable($file) { + $file = ltrim($file, '/'); + return is_readable('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function is_writable($file) { + $file = ltrim($file, '/'); + return is_writable('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function atime($file) { + $file = ltrim($file, '/'); + return fileatime('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function mtime($file) { + $file = ltrim($file, '/'); + return filemtime('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function size($file) { + $file = ltrim($file, '/'); + return filesize('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function touch($file, $time = 0, $atime = 0) { + //Not implemented. + } + + function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { + $path = untrailingslashit($path); + if ( empty($path) ) + return false; + + if ( ! $chmod ) + $chmod = FS_CHMOD_DIR; + if ( ! ssh2_sftp_mkdir($this->sftp_link, $path, $chmod, true) ) + return false; + if ( $chown ) + $this->chown($path, $chown); + if ( $chgrp ) + $this->chgrp($path, $chgrp); + return true; + } + + function rmdir($path, $recursive = false) { + return $this->delete($path, $recursive); + } + + function dirlist($path, $include_hidden = true, $recursive = false) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path); + } else { + $limit_file = false; + } + + if ( ! $this->is_dir($path) ) + return false; + + $ret = array(); + $dir = @dir('ssh2.sftp://' . $this->sftp_link .'/' . ltrim($path, '/') ); + + if ( ! $dir ) + return false; + + while (false !== ($entry = $dir->read()) ) { + $struc = array(); + $struc['name'] = $entry; + + if ( '.' == $struc['name'] || '..' == $struc['name'] ) + continue; //Do not care about these folders. + + if ( ! $include_hidden && '.' == $struc['name'][0] ) + continue; + + if ( $limit_file && $struc['name'] != $limit_file ) + continue; + + $struc['perms'] = $this->gethchmod($path.'/'.$entry); + $struc['permsn'] = $this->getnumchmodfromh($struc['perms']); + $struc['number'] = false; + $struc['owner'] = $this->owner($path.'/'.$entry); + $struc['group'] = $this->group($path.'/'.$entry); + $struc['size'] = $this->size($path.'/'.$entry); + $struc['lastmodunix']= $this->mtime($path.'/'.$entry); + $struc['lastmod'] = date('M j',$struc['lastmodunix']); + $struc['time'] = date('h:i:s',$struc['lastmodunix']); + $struc['type'] = $this->is_dir($path.'/'.$entry) ? 'd' : 'f'; + + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + $dir->close(); + unset($dir); + return $ret; + } +} diff --git a/wp-admin/includes/class-wp-importer.php b/wp-admin/includes/class-wp-importer.php new file mode 100644 index 0000000..2b4774b --- /dev/null +++ b/wp-admin/includes/class-wp-importer.php @@ -0,0 +1,307 @@ +prepare( "SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = '%s' LIMIT %d,%d", $meta_key, $offset, $limit ); + $results = $wpdb->get_results( $sql ); + + // Increment offset + $offset = ( $limit + $offset ); + + if ( !empty( $results ) ) { + foreach ( $results as $r ) { + // Set permalinks into array + $hashtable[$r->meta_value] = intval( $r->post_id ); + } + } + } while ( count( $results ) == $limit ); + + // unset to save memory + unset( $results, $r ); + + return $hashtable; + } + + /** + * Return count of imported permalinks from WordPress database + * + * @param string $bid + * @return int + */ + function count_imported_posts( $importer_name, $bid ) { + global $wpdb; + + $count = 0; + + // Get count of permalinks + $meta_key = $importer_name . '_' . $bid . '_permalink'; + $sql = $wpdb->prepare( "SELECT COUNT( post_id ) AS cnt FROM $wpdb->postmeta WHERE meta_key = '%s'", $meta_key ); + + $result = $wpdb->get_results( $sql ); + + if ( !empty( $result ) ) + $count = intval( $result[0]->cnt ); + + // unset to save memory + unset( $results ); + + return $count; + } + + /** + * Set array with imported comments from WordPress database + * + * @param string $bid + * @return array + */ + function get_imported_comments( $bid ) { + global $wpdb; + + $hashtable = array(); + + $limit = 100; + $offset = 0; + + // Grab all comments in chunks + do { + $sql = $wpdb->prepare( "SELECT comment_ID, comment_agent FROM $wpdb->comments LIMIT %d,%d", $offset, $limit ); + $results = $wpdb->get_results( $sql ); + + // Increment offset + $offset = ( $limit + $offset ); + + if ( !empty( $results ) ) { + foreach ( $results as $r ) { + // Explode comment_agent key + list ( $ca_bid, $source_comment_id ) = explode( '-', $r->comment_agent ); + $source_comment_id = intval( $source_comment_id ); + + // Check if this comment came from this blog + if ( $bid == $ca_bid ) { + $hashtable[$source_comment_id] = intval( $r->comment_ID ); + } + } + } + } while ( count( $results ) == $limit ); + + // unset to save memory + unset( $results, $r ); + + return $hashtable; + } + + function set_blog( $blog_id ) { + if ( is_numeric( $blog_id ) ) { + $blog_id = (int) $blog_id; + } else { + $blog = 'http://' . preg_replace( '#^https?://#', '', $blog_id ); + if ( ( !$parsed = parse_url( $blog ) ) || empty( $parsed['host'] ) ) { + fwrite( STDERR, "Error: can not determine blog_id from $blog_id\n" ); + exit(); + } + if ( empty( $parsed['path'] ) ) + $parsed['path'] = '/'; + $blog = get_blog_details( array( 'domain' => $parsed['host'], 'path' => $parsed['path'] ) ); + if ( !$blog ) { + fwrite( STDERR, "Error: Could not find blog\n" ); + exit(); + } + $blog_id = (int) $blog->blog_id; + // Restore global $current_blog + global $current_blog; + $current_blog = $blog; + } + + if ( function_exists( 'is_multisite' ) ) { + if ( is_multisite() ) + switch_to_blog( $blog_id ); + } + + return $blog_id; + } + + function set_user( $user_id ) { + if ( is_numeric( $user_id ) ) { + $user_id = (int) $user_id; + } else { + $user_id = (int) username_exists( $user_id ); + } + + if ( !$user_id || !wp_set_current_user( $user_id ) ) { + fwrite( STDERR, "Error: can not find user\n" ); + exit(); + } + + return $user_id; + } + + /** + * Sort by strlen, longest string first + * + * @param string $a + * @param string $b + * @return int + */ + function cmpr_strlen( $a, $b ) { + return strlen( $b ) - strlen( $a ); + } + + /** + * GET URL + * + * @param string $url + * @param string $username + * @param string $password + * @param bool $head + * @return array + */ + function get_page( $url, $username = '', $password = '', $head = false ) { + // Increase the timeout + add_filter( 'http_request_timeout', array( &$this, 'bump_request_timeout' ) ); + + $headers = array(); + $args = array(); + if ( true === $head ) + $args['method'] = 'HEAD'; + if ( !empty( $username ) && !empty( $password ) ) + $headers['Authorization'] = 'Basic ' . base64_encode( "$username:$password" ); + + $args['headers'] = $headers; + + return wp_remote_request( $url, $args ); + } + + /** + * Bump up the request timeout for http requests + * + * @param int $val + * @return int + */ + function bump_request_timeout( $val ) { + return 60; + } + + /** + * Check if user has exceeded disk quota + * + * @return bool + */ + function is_user_over_quota() { + global $current_blog; + + if ( function_exists( 'upload_is_user_over_quota' ) ) { + if ( upload_is_user_over_quota( 1 ) ) { + echo "Sorry, you have used your upload quota.\n"; + return true; + } + } + + return false; + } + + /** + * Replace newlines, tabs, and multiple spaces with a single space + * + * @param string $string + * @return string + */ + function min_whitespace( $string ) { + return preg_replace( '|[\r\n\t ]+|', ' ', $string ); + } + + /** + * Reset global variables that grow out of control during imports + * + * @return void + */ + function stop_the_insanity() { + global $wpdb, $wp_actions; + // Or define( 'WP_IMPORTING', true ); + $wpdb->queries = array(); + // Reset $wp_actions to keep it from growing out of control + $wp_actions = array(); + } +} + +/** + * Returns value of command line params. + * Exits when a required param is not set. + * + * @param string $param + * @param bool $required + * @return mixed + */ +function get_cli_args( $param, $required = false ) { + $args = $_SERVER['argv']; + + $out = array(); + + $last_arg = null; + $return = null; + + $il = sizeof( $args ); + + for ( $i = 1, $il; $i < $il; $i++ ) { + if ( (bool) preg_match( "/^--(.+)/", $args[$i], $match ) ) { + $parts = explode( "=", $match[1] ); + $key = preg_replace( "/[^a-z0-9]+/", "", $parts[0] ); + + if ( isset( $parts[1] ) ) { + $out[$key] = $parts[1]; + } else { + $out[$key] = true; + } + + $last_arg = $key; + } else if ( (bool) preg_match( "/^-([a-zA-Z0-9]+)/", $args[$i], $match ) ) { + for ( $j = 0, $jl = strlen( $match[1] ); $j < $jl; $j++ ) { + $key = $match[1]{$j}; + $out[$key] = true; + } + + $last_arg = $key; + } else if ( $last_arg !== null ) { + $out[$last_arg] = $args[$i]; + } + } + + // Check array for specified param + if ( isset( $out[$param] ) ) { + // Set return value + $return = $out[$param]; + } + + // Check for missing required param + if ( !isset( $out[$param] ) && $required ) { + // Display message and exit + echo "\"$param\" parameter is required but was not specified\n"; + exit(); + } + + return $return; +} diff --git a/wp-admin/includes/class-wp-links-list-table.php b/wp-admin/includes/class-wp-links-list-table.php new file mode 100644 index 0000000..4776a52 --- /dev/null +++ b/wp-admin/includes/class-wp-links-list-table.php @@ -0,0 +1,184 @@ + 'bookmarks', + ) ); + } + + function ajax_user_can() { + return current_user_can( 'manage_links' ); + } + + function prepare_items() { + global $cat_id, $s, $orderby, $order; + + wp_reset_vars( array( 'action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'orderby', 'order', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]', 's' ) ); + + $args = array( 'hide_invisible' => 0, 'hide_empty' => 0 ); + + if ( 'all' != $cat_id ) + $args['category'] = $cat_id; + if ( !empty( $s ) ) + $args['search'] = $s; + if ( !empty( $orderby ) ) + $args['orderby'] = $orderby; + if ( !empty( $order ) ) + $args['order'] = $order; + + $this->items = get_bookmarks( $args ); + } + + function no_items() { + _e( 'No links found.' ); + } + + function get_bulk_actions() { + $actions = array(); + $actions['delete'] = __( 'Delete' ); + + return $actions; + } + + function extra_tablenav( $which ) { + global $cat_id; + + if ( 'top' != $which ) + return; +?> +
+ $cat_id, + 'name' => 'cat_id', + 'taxonomy' => 'link_category', + 'show_option_all' => __( 'View all categories' ), + 'hide_empty' => true, + 'hierarchical' => 1, + 'show_count' => 0, + 'orderby' => 'name', + ); + wp_dropdown_categories( $dropdown_options ); + submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); +?> +
+ '', + 'name' => _x( 'Name', 'link name' ), + 'url' => __( 'URL' ), + 'categories' => __( 'Categories' ), + 'rel' => __( 'Relationship' ), + 'visible' => __( 'Visible' ), + 'rating' => __( 'Rating' ) + ); + } + + function get_sortable_columns() { + return array( + 'name' => 'name', + 'url' => 'url', + 'visible' => 'visible', + 'rating' => 'rating' + ); + } + + function display_rows() { + global $cat_id; + + $alt = 0; + + foreach ( $this->items as $link ) { + $link = sanitize_bookmark( $link ); + $link->link_name = esc_attr( $link->link_name ); + $link->link_category = wp_get_link_cats( $link->link_id ); + + $short_url = url_shorten( $link->link_url ); + + $visible = ( $link->link_visible == 'Y' ) ? __( 'Yes' ) : __( 'No' ); + $rating = $link->link_rating; + $style = ( $alt++ % 2 ) ? '' : ' class="alternate"'; + + $edit_link = get_edit_bookmark_link( $link ); +?> + > +get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $class = "class='column-$column_name'"; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = $class . $style; + + switch ( $column_name ) { + case 'cb': + echo ''; + break; + + case 'name': + echo "link_name ) ) . "'>$link->link_name
"; + + $actions = array(); + $actions['edit'] = '' . __( 'Edit' ) . ''; + $actions['delete'] = "link_id ) . "' onclick=\"if ( confirm( '" . esc_js( sprintf( __( "You are about to delete this link '%s'\n 'Cancel' to stop, 'OK' to delete." ), $link->link_name ) ) . "' ) ) { return true;}return false;\">" . __( 'Delete' ) . ""; + echo $this->row_actions( $actions ); + + echo ''; + break; + case 'url': + echo "link_name ) )."'>$short_url"; + break; + case 'categories': + ?>>link_category as $category ) { + $cat = get_term( $category, 'link_category', OBJECT, 'display' ); + if ( is_wp_error( $cat ) ) + echo $cat->get_error_message(); + $cat_name = $cat->name; + if ( $cat_id != $category ) + $cat_name = "$cat_name"; + $cat_names[] = $cat_name; + } + echo implode( ', ', $cat_names ); + ?>>link_rel ) ? '
' : $link->link_rel; ?>>> + >link_id ); ?> + + + '', + 'singular' => '', + 'ajax' => false + ) ); + + $screen = get_current_screen(); + + add_filter( "manage_{$screen->id}_columns", array( &$this, 'get_columns' ), 0 ); + + if ( !$args['plural'] ) + $args['plural'] = $screen->base; + + $args['plural'] = sanitize_key( $args['plural'] ); + $args['singular'] = sanitize_key( $args['singular'] ); + + $this->_args = $args; + + if ( $args['ajax'] ) { + // wp_enqueue_script( 'list-table' ); + add_action( 'admin_footer', array( &$this, '_js_vars' ) ); + } + } + + /** + * Checks the current user's permissions + * @uses wp_die() + * + * @since 3.1.0 + * @access public + * @abstract + */ + function ajax_user_can() { + die( 'function WP_List_Table::ajax_user_can() must be over-ridden in a sub-class.' ); + } + + /** + * Prepares the list of items for displaying. + * @uses WP_List_Table::set_pagination_args() + * + * @since 3.1.0 + * @access public + * @abstract + */ + function prepare_items() { + die( 'function WP_List_Table::prepare_items() must be over-ridden in a sub-class.' ); + } + + /** + * An internal method that sets all the necessary pagination arguments + * + * @param array $args An associative array with information about the pagination + * @access protected + */ + function set_pagination_args( $args ) { + $args = wp_parse_args( $args, array( + 'total_items' => 0, + 'total_pages' => 0, + 'per_page' => 0, + ) ); + + if ( !$args['total_pages'] && $args['per_page'] > 0 ) + $args['total_pages'] = ceil( $args['total_items'] / $args['per_page'] ); + + // redirect if page number is invalid and headers are not already sent + if ( ! headers_sent() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) { + wp_redirect( add_query_arg( 'paged', $args['total_pages'] ) ); + exit; + } + + $this->_pagination_args = $args; + } + + /** + * Access the pagination args + * + * @since 3.1.0 + * @access public + * + * @param string $key + * @return array + */ + function get_pagination_arg( $key ) { + if ( 'page' == $key ) + return $this->get_pagenum(); + + if ( isset( $this->_pagination_args[$key] ) ) + return $this->_pagination_args[$key]; + } + + /** + * Whether the table has items to display or not + * + * @since 3.1.0 + * @access public + * + * @return bool + */ + function has_items() { + return !empty( $this->items ); + } + + /** + * Message to be displayed when there are no items + * + * @since 3.1.0 + * @access public + */ + function no_items() { + _e( 'No items found.' ); + } + + /** + * Display the search box. + * + * @since 3.1.0 + * @access public + * + * @param string $text The search button text + * @param string $input_id The search input id + */ + function search_box( $text, $input_id ) { + if ( empty( $_REQUEST['s'] ) && !$this->has_items() ) + return; + + $input_id = $input_id . '-search-input'; + + if ( ! empty( $_REQUEST['orderby'] ) ) + echo ''; + if ( ! empty( $_REQUEST['order'] ) ) + echo ''; +?> + + link ) with the list + * of views available on this table. + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_views() { + return array(); + } + + /** + * Display the list of views available on this table. + * + * @since 3.1.0 + * @access public + */ + function views() { + $screen = get_current_screen(); + + $views = $this->get_views(); + $views = apply_filters( 'views_' . $screen->id, $views ); + + if ( empty( $views ) ) + return; + + echo "
    \n"; + foreach ( $views as $class => $view ) { + $views[ $class ] = "\t
  • $view"; + } + echo implode( " |
  • \n", $views ) . "\n"; + echo "
"; + } + + /** + * Get an associative array ( option_name => option_title ) with the list + * of bulk actions available on this table. + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_bulk_actions() { + return array(); + } + + /** + * Display the bulk actions dropdown. + * + * @since 3.1.0 + * @access public + */ + function bulk_actions() { + $screen = get_current_screen(); + + if ( is_null( $this->_actions ) ) { + $no_new_actions = $this->_actions = $this->get_bulk_actions(); + // This filter can currently only be used to remove actions. + $this->_actions = apply_filters( 'bulk_actions-' . $screen->id, $this->_actions ); + $this->_actions = array_intersect_assoc( $this->_actions, $no_new_actions ); + $two = ''; + } else { + $two = '2'; + } + + if ( empty( $this->_actions ) ) + return; + + echo "\n"; + + submit_button( __( 'Apply' ), 'button-secondary action', false, false, array( 'id' => "doaction$two" ) ); + echo "\n"; + } + + /** + * Get the current action selected from the bulk actions dropdown. + * + * @since 3.1.0 + * @access public + * + * @return string|bool The action name or False if no action was selected + */ + function current_action() { + if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] ) + return $_REQUEST['action']; + + if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] ) + return $_REQUEST['action2']; + + return false; + } + + /** + * Generate row actions div + * + * @since 3.1.0 + * @access protected + * + * @param array $actions The list of actions + * @param bool $always_visible Whether the actions should be always visible + * @return string + */ + function row_actions( $actions, $always_visible = false ) { + $action_count = count( $actions ); + $i = 0; + + if ( !$action_count ) + return ''; + + $out = '
'; + foreach ( $actions as $action => $link ) { + ++$i; + ( $i == $action_count ) ? $sep = '' : $sep = ' | '; + $out .= "$link$sep"; + } + $out .= '
'; + + return $out; + } + + /** + * Display a monthly dropdown for filtering items + * + * @since 3.1.0 + * @access protected + */ + function months_dropdown( $post_type ) { + global $wpdb, $wp_locale; + + $months = $wpdb->get_results( $wpdb->prepare( " + SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month + FROM $wpdb->posts + WHERE post_type = %s + ORDER BY post_date DESC + ", $post_type ) ); + + $month_count = count( $months ); + + if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) + return; + + $m = isset( $_GET['m'] ) ? (int) $_GET['m'] : 0; +?> + + __( 'List View' ), + 'excerpt' => __( 'Excerpt View' ) + ); + +?> + +
+ $title ) { + $class = ( $current_mode == $mode ) ? 'class="current"' : ''; + echo "$title\n"; + } + ?> +
+'; + + echo "" . number_format_i18n( get_comments_number() ) . ""; + + if ( $pending_comments ) + echo ''; + } + + /** + * Get the current page number + * + * @since 3.1.0 + * @access protected + * + * @return int + */ + function get_pagenum() { + $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 0; + + if( isset( $this->_pagination_args['total_pages'] ) && $pagenum > $this->_pagination_args['total_pages'] ) + $pagenum = $this->_pagination_args['total_pages']; + + return max( 1, $pagenum ); + } + + /** + * Get number of items to display on a single page + * + * @since 3.1.0 + * @access protected + * + * @return int + */ + function get_items_per_page( $option, $default = 20 ) { + $per_page = (int) get_user_option( $option ); + if ( empty( $per_page ) || $per_page < 1 ) + $per_page = $default; + + return (int) apply_filters( $option, $per_page ); + } + + /** + * Display the pagination. + * + * @since 3.1.0 + * @access protected + */ + function pagination( $which ) { + if ( empty( $this->_pagination_args ) ) + return; + + extract( $this->_pagination_args, EXTR_SKIP ); + + $output = '' . sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . ''; + + $current = $this->get_pagenum(); + + $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + + $current_url = remove_query_arg( array( 'hotkeys_highlight_last', 'hotkeys_highlight_first' ), $current_url ); + + $page_links = array(); + + $disable_first = $disable_last = ''; + if ( $current == 1 ) + $disable_first = ' disabled'; + if ( $current == $total_pages ) + $disable_last = ' disabled'; + + $page_links[] = sprintf( "%s", + 'first-page' . $disable_first, + esc_attr__( 'Go to the first page' ), + esc_url( remove_query_arg( 'paged', $current_url ) ), + '«' + ); + + $page_links[] = sprintf( "%s", + 'prev-page' . $disable_first, + esc_attr__( 'Go to the previous page' ), + esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ), + '‹' + ); + + if ( 'bottom' == $which ) + $html_current_page = $current; + else + $html_current_page = sprintf( "", + esc_attr__( 'Current page' ), + $current, + strlen( $total_pages ) + ); + + $html_total_pages = sprintf( "%s", number_format_i18n( $total_pages ) ); + $page_links[] = '' . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . ''; + + $page_links[] = sprintf( "%s", + 'next-page' . $disable_last, + esc_attr__( 'Go to the next page' ), + esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ), + '›' + ); + + $page_links[] = sprintf( "%s", + 'last-page' . $disable_last, + esc_attr__( 'Go to the last page' ), + esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ), + '»' + ); + + $pagination_links_class = 'pagination-links'; + if ( ! empty( $infinite_scroll ) ) + $pagination_links_class = ' hide-if-js'; + $output .= "\n" . join( "\n", $page_links ) . ''; + + if ( $total_pages ) + $page_class = $total_pages < 2 ? ' one-page' : ''; + else + $page_class = ' no-pages'; + + $this->_pagination = "
$output
"; + + echo $this->_pagination; + } + + /** + * Get a list of columns. The format is: + * 'internal-name' => 'Title' + * + * @since 3.1.0 + * @access protected + * @abstract + * + * @return array + */ + function get_columns() { + die( 'function WP_List_Table::get_columns() must be over-ridden in a sub-class.' ); + } + + /** + * Get a list of sortable columns. The format is: + * 'internal-name' => 'orderby' + * or + * 'internal-name' => array( 'orderby', true ) + * + * The second format will make the initial sorting order be descending + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_sortable_columns() { + return array(); + } + + /** + * Get a list of all, hidden and sortable columns, with filter applied + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_column_info() { + if ( isset( $this->_column_headers ) ) + return $this->_column_headers; + + $screen = get_current_screen(); + + $columns = get_column_headers( $screen ); + $hidden = get_hidden_columns( $screen ); + + $_sortable = apply_filters( "manage_{$screen->id}_sortable_columns", $this->get_sortable_columns() ); + + $sortable = array(); + foreach ( $_sortable as $id => $data ) { + if ( empty( $data ) ) + continue; + + $data = (array) $data; + if ( !isset( $data[1] ) ) + $data[1] = false; + + $sortable[$id] = $data; + } + + $this->_column_headers = array( $columns, $hidden, $sortable ); + + return $this->_column_headers; + } + + /** + * Return number of visible columns + * + * @since 3.1.0 + * @access public + * + * @return int + */ + function get_column_count() { + list ( $columns, $hidden ) = $this->get_column_info(); + $hidden = array_intersect( array_keys( $columns ), array_filter( $hidden ) ); + return count( $columns ) - count( $hidden ); + } + + /** + * Print column headers, accounting for hidden and sortable columns. + * + * @since 3.1.0 + * @access protected + * + * @param bool $with_id Whether to set the id attribute or not + */ + function print_column_headers( $with_id = true ) { + $screen = get_current_screen(); + + list( $columns, $hidden, $sortable ) = $this->get_column_info(); + + $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + $current_url = remove_query_arg( 'paged', $current_url ); + + if ( isset( $_GET['orderby'] ) ) + $current_orderby = $_GET['orderby']; + else + $current_orderby = ''; + + if ( isset( $_GET['order'] ) && 'desc' == $_GET['order'] ) + $current_order = 'desc'; + else + $current_order = 'asc'; + + foreach ( $columns as $column_key => $column_display_name ) { + $class = array( 'manage-column', "column-$column_key" ); + + $style = ''; + if ( in_array( $column_key, $hidden ) ) + $style = 'display:none;'; + + $style = ' style="' . $style . '"'; + + if ( 'cb' == $column_key ) + $class[] = 'check-column'; + elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) ) + $class[] = 'num'; + + if ( isset( $sortable[$column_key] ) ) { + list( $orderby, $desc_first ) = $sortable[$column_key]; + + if ( $current_orderby == $orderby ) { + $order = 'asc' == $current_order ? 'desc' : 'asc'; + $class[] = 'sorted'; + $class[] = $current_order; + } else { + $order = $desc_first ? 'desc' : 'asc'; + $class[] = 'sortable'; + $class[] = $desc_first ? 'asc' : 'desc'; + } + + $column_display_name = '' . $column_display_name . ''; + } + + $id = $with_id ? "id='$column_key'" : ''; + + if ( !empty( $class ) ) + $class = "class='" . join( ' ', $class ) . "'"; + + echo "$column_display_name"; + } + } + + /** + * Display the table + * + * @since 3.1.0 + * @access public + */ + function display() { + extract( $this->_args ); + + $this->display_tablenav( 'top' ); + +?> + + + + print_column_headers(); ?> + + + + + + print_column_headers( false ); ?> + + + + > + display_rows_or_placeholder(); ?> + +
+display_tablenav( 'bottom' ); + } + + /** + * Get a list of CSS classes for the tag + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_table_classes() { + return array( 'widefat', 'fixed', $this->_args['plural'] ); + } + + /** + * Generate the table navigation above or below the table + * + * @since 3.1.0 + * @access protected + */ + function display_tablenav( $which ) { + if ( 'top' == $which ) + wp_nonce_field( 'bulk-' . $this->_args['plural'] ); +?> +
+ +
+ bulk_actions( $which ); ?> +
+extra_tablenav( $which ); + $this->pagination( $which ); +?> + +
+
+ part of the table + * + * @since 3.1.0 + * @access protected + */ + function display_rows_or_placeholder() { + if ( $this->has_items() ) { + $this->display_rows(); + } else { + list( $columns, $hidden ) = $this->get_column_info(); + echo ''; + } + } + + /** + * Generate the table rows + * + * @since 3.1.0 + * @access protected + */ + function display_rows() { + foreach ( $this->items as $item ) + $this->single_row( $item ); + } + + /** + * Generates content for a single row of the table + * + * @since 3.1.0 + * @access protected + * + * @param object $item The current item + */ + function single_row( $item ) { + static $row_class = ''; + $row_class = ( $row_class == '' ? ' class="alternate"' : '' ); + + echo ''; + echo $this->single_row_columns( $item ); + echo ''; + } + + /** + * Generates the columns for a single row of the table + * + * @since 3.1.0 + * @access protected + * + * @param object $item The current item + */ + function single_row_columns( $item ) { + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $class = "class='$column_name column-$column_name'"; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = "$class$style"; + + if ( 'cb' == $column_name ) { + echo ''; + } + elseif ( method_exists( $this, 'column_' . $column_name ) ) { + echo ""; + } + else { + echo ""; + } + } + } + + /** + * Handle an incoming ajax request (called from admin-ajax.php) + * + * @since 3.1.0 + * @access public + */ + function ajax_response() { + $this->prepare_items(); + + extract( $this->_args ); + extract( $this->_pagination_args, EXTR_SKIP ); + + ob_start(); + if ( ! empty( $_REQUEST['no_placeholder'] ) ) + $this->display_rows(); + else + $this->display_rows_or_placeholder(); + + $rows = ob_get_clean(); + + $response = array( 'rows' => $rows ); + + if ( isset( $total_items ) ) + $response['total_items_i18n'] = sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ); + + if ( isset( $total_pages ) ) { + $response['total_pages'] = $total_pages; + $response['total_pages_i18n'] = number_format_i18n( $total_pages ); + } + + die( json_encode( $response ) ); + } + + /** + * Send required variables to JavaScript land + * + * @access private + */ + function _js_vars() { + $current_screen = get_current_screen(); + + $args = array( + 'class' => get_class( $this ), + 'screen' => array( + 'id' => $current_screen->id, + 'base' => $current_screen->base, + ) + ); + + printf( "\n", json_encode( $args ) ); + } +} diff --git a/wp-admin/includes/class-wp-media-list-table.php b/wp-admin/includes/class-wp-media-list-table.php new file mode 100644 index 0000000..5f9c165 --- /dev/null +++ b/wp-admin/includes/class-wp-media-list-table.php @@ -0,0 +1,394 @@ +detached = isset( $_REQUEST['detached'] ) || isset( $_REQUEST['find_detached'] ); + + parent::__construct( array( + 'plural' => 'media' + ) ); + } + + function ajax_user_can() { + return current_user_can('upload_files'); + } + + function prepare_items() { + global $lost, $wpdb, $wp_query, $post_mime_types, $avail_post_mime_types; + + $q = $_REQUEST; + + if ( !empty( $lost ) ) + $q['post__in'] = implode( ',', $lost ); + + list( $post_mime_types, $avail_post_mime_types ) = wp_edit_attachments_query( $q ); + + $this->is_trash = isset( $_REQUEST['status'] ) && 'trash' == $_REQUEST['status']; + + $this->set_pagination_args( array( + 'total_items' => $wp_query->found_posts, + 'total_pages' => $wp_query->max_num_pages, + 'per_page' => $wp_query->query_vars['posts_per_page'], + ) ); + } + + function get_views() { + global $wpdb, $post_mime_types, $avail_post_mime_types; + + $type_links = array(); + $_num_posts = (array) wp_count_attachments(); + $_total_posts = array_sum($_num_posts) - $_num_posts['trash']; + if ( !isset( $total_orphans ) ) + $total_orphans = $wpdb->get_var( "SELECT COUNT( * ) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent < 1" ); + $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts)); + foreach ( $matches as $type => $reals ) + foreach ( $reals as $real ) + $num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real]; + + $class = ( empty($_GET['post_mime_type']) && !$this->detached && !isset($_GET['status']) ) ? ' class="current"' : ''; + $type_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $_total_posts, 'uploaded files' ), number_format_i18n( $_total_posts ) ) . ''; + foreach ( $post_mime_types as $mime_type => $label ) { + $class = ''; + + if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) ) + continue; + + if ( !empty($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) ) + $class = ' class="current"'; + if ( !empty( $num_posts[$mime_type] ) ) + $type_links[$mime_type] = "" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), number_format_i18n( $num_posts[$mime_type] )) . ''; + } + $type_links['detached'] = 'detached ? ' class="current"' : '' ) . '>' . sprintf( _nx( 'Unattached (%s)', 'Unattached (%s)', $total_orphans, 'detached files' ), number_format_i18n( $total_orphans ) ) . ''; + + if ( !empty($_num_posts['trash']) ) + $type_links['trash'] = '' . sprintf( _nx( 'Trash (%s)', 'Trash (%s)', $_num_posts['trash'], 'uploaded files' ), number_format_i18n( $_num_posts['trash'] ) ) . ''; + + return $type_links; + } + + function get_bulk_actions() { + $actions = array(); + $actions['delete'] = __( 'Delete Permanently' ); + if ( $this->detached ) + $actions['attach'] = __( 'Attach to a post' ); + + return $actions; + } + + function extra_tablenav( $which ) { +?> +
+detached && !$this->is_trash ) { + $this->months_dropdown( 'attachment' ); + + do_action( 'restrict_manage_posts' ); + submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); + } + + if ( $this->detached ) { + submit_button( __( 'Scan for lost attachments' ), 'secondary', 'find_detached', false ); + } elseif ( $this->is_trash && current_user_can( 'edit_others_posts' ) ) { + submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false ); + } ?> +
+'; + $posts_columns['icon'] = ''; + /* translators: column name */ + $posts_columns['title'] = _x( 'File', 'column name' ); + $posts_columns['author'] = __( 'Author' ); + //$posts_columns['tags'] = _x( 'Tags', 'column name' ); + /* translators: column name */ + if ( !$this->detached ) { + $posts_columns['parent'] = _x( 'Attached to', 'column name' ); + if ( post_type_supports( 'attachment', 'comments' ) ) + $posts_columns['comments'] = '' . esc_attr__( 'Comments' ) . ''; + } + /* translators: column name */ + $posts_columns['date'] = _x( 'Date', 'column name' ); + $posts_columns = apply_filters( 'manage_media_columns', $posts_columns, $this->detached ); + + return $posts_columns; + } + + function get_sortable_columns() { + return array( + 'title' => 'title', + 'author' => 'author', + 'parent' => 'parent', + 'comments' => 'comment_count', + 'date' => array( 'date', true ), + ); + } + + function display_rows() { + global $post, $id; + + add_filter( 'the_title','esc_html' ); + $alt = ''; + + while ( have_posts() ) : the_post(); + $user_can_edit = current_user_can( 'edit_post', $post->ID ); + + if ( $this->is_trash && $post->post_status != 'trash' + || !$this->is_trash && $post->post_status == 'trash' ) + continue; + + $alt = ( 'alternate' == $alt ) ? '' : 'alternate'; + $post_owner = ( get_current_user_id() == $post->post_author ) ? 'self' : 'other'; + $att_title = _draft_or_post_title(); +?> + post_status ); ?>' valign="top"> +get_column_info(); +foreach ( $columns as $column_name => $column_display_name ) { + $class = "class='$column_name column-$column_name'"; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = $class . $style; + + switch ( $column_name ) { + + case 'cb': +?> + + + + + + + + + + + +post_date && 'date' == $column_name ) { + $t_time = $h_time = __( 'Unpublished' ); + } else { + $t_time = get_the_time( __( 'Y/m/d g:i:s A' ) ); + $m_time = $post->post_date; + $time = get_post_time( 'G', true, $post, false ); + if ( ( abs( $t_diff = time() - $time ) ) < 86400 ) { + if ( $t_diff < 0 ) + $h_time = sprintf( __( '%s from now' ), human_time_diff( $time ) ); + else + $h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) ); + } else { + $h_time = mysql2date( __( 'Y/m/d' ), $m_time ); + } + } +?> + +post_parent > 0 ) { + if ( get_post( $post->post_parent ) ) { + $title =_draft_or_post_title( $post->post_parent ); + } +?> + + + + + + + + + +detached ) { + if ( current_user_can( 'edit_post', $post->ID ) ) + $actions['edit'] = '' . __( 'Edit' ) . ''; + if ( current_user_can( 'delete_post', $post->ID ) ) + if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) { + $actions['trash'] = "ID ) . "'>" . __( 'Trash' ) . ""; + } else { + $delete_ays = !MEDIA_TRASH ? " onclick='return showNotice.warn();'" : ''; + $actions['delete'] = "ID ) . "'>" . __( 'Delete Permanently' ) . ""; + } + $actions['view'] = '' . __( 'View' ) . ''; + if ( current_user_can( 'edit_post', $post->ID ) ) + $actions['attach'] = ''.__( 'Attach' ).''; + } + else { + if ( current_user_can( 'edit_post', $post->ID ) && !$this->is_trash ) + $actions['edit'] = '' . __( 'Edit' ) . ''; + if ( current_user_can( 'delete_post', $post->ID ) ) { + if ( $this->is_trash ) + $actions['untrash'] = "ID ) . "'>" . __( 'Restore' ) . ""; + elseif ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) + $actions['trash'] = "ID ) . "'>" . __( 'Trash' ) . ""; + if ( $this->is_trash || !EMPTY_TRASH_DAYS || !MEDIA_TRASH ) { + $delete_ays = ( !$this->is_trash && !MEDIA_TRASH ) ? " onclick='return showNotice.warn();'" : ''; + $actions['delete'] = "ID ) . "'>" . __( 'Delete Permanently' ) . ""; + } + } + if ( !$this->is_trash ) { + $title =_draft_or_post_title( $post->post_parent ); + $actions['view'] = '' . __( 'View' ) . ''; + } + } + + $actions = apply_filters( 'media_row_actions', $actions, $post, $this->detached ); + + return $actions; + } +} diff --git a/wp-admin/includes/class-wp-ms-sites-list-table.php b/wp-admin/includes/class-wp-ms-sites-list-table.php new file mode 100644 index 0000000..3d72381 --- /dev/null +++ b/wp-admin/includes/class-wp-ms-sites-list-table.php @@ -0,0 +1,339 @@ + 'sites', + ) ); + } + + function ajax_user_can() { + return current_user_can( 'manage_sites' ); + } + + function prepare_items() { + global $s, $mode, $wpdb, $current_site; + + $mode = ( empty( $_REQUEST['mode'] ) ) ? 'list' : $_REQUEST['mode']; + + $per_page = $this->get_items_per_page( 'sites_network_per_page' ); + + $pagenum = $this->get_pagenum(); + + $s = isset( $_REQUEST['s'] ) ? stripslashes( trim( $_REQUEST[ 's' ] ) ) : ''; + $wild = ''; + if ( false !== strpos($s, '*') ) { + $wild = '%'; + $s = trim($s, '*'); + } + + $like_s = esc_sql( like_escape( $s ) ); + + // If the network is large and a search is not being performed, show only the latest blogs with no paging in order + // to avoid expensive count queries. + if ( !$s && wp_is_large_network() ) { + if ( !isset($_REQUEST['orderby']) ) + $_GET['orderby'] = $_REQUEST['orderby'] = ''; + if ( !isset($_REQUEST['order']) ) + $_GET['order'] = $_REQUEST['order'] = 'DESC'; + } + + $query = "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' "; + + if ( empty($s) ) { + // Nothing to do. + } elseif ( preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $s ) || + preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.?$/', $s ) || + preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.?$/', $s ) || + preg_match( '/^[0-9]{1,3}\.$/', $s ) ) { + // IPv4 address + $reg_blog_ids = $wpdb->get_col( "SELECT blog_id FROM {$wpdb->registration_log} WHERE {$wpdb->registration_log}.IP LIKE ( '{$like_s}$wild' )" ); + + if ( !$reg_blog_ids ) + $reg_blog_ids = array( 0 ); + + $query = "SELECT * + FROM {$wpdb->blogs} + WHERE site_id = '{$wpdb->siteid}' + AND {$wpdb->blogs}.blog_id IN (" . implode( ', ', $reg_blog_ids ) . ")"; + } else { + if ( is_numeric($s) && empty( $wild ) ) { + $query .= " AND ( {$wpdb->blogs}.blog_id = '{$like_s}' )"; + } elseif ( is_subdomain_install() ) { + $blog_s = str_replace( '.' . $current_site->domain, '', $like_s ); + $blog_s .= $wild . '.' . $current_site->domain; + $query .= " AND ( {$wpdb->blogs}.domain LIKE '$blog_s' ) "; + } else { + if ( $like_s != trim('/', $current_site->path) ) + $blog_s = $current_site->path . $like_s . $wild . '/'; + else + $blog_s = $like_s; + $query .= " AND ( {$wpdb->blogs}.path LIKE '$blog_s' )"; + } + } + + $order_by = isset( $_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : ''; + if ( $order_by == 'registered' ) { + $query .= ' ORDER BY registered '; + } elseif ( $order_by == 'lastupdated' ) { + $query .= ' ORDER BY last_updated '; + } elseif ( $order_by == 'blogname' ) { + if ( is_subdomain_install() ) + $query .= ' ORDER BY domain '; + else + $query .= ' ORDER BY path '; + } elseif ( $order_by == 'blog_id' ) { + $query .= ' ORDER BY blog_id '; + } else { + $order_by = null; + } + + if ( isset( $order_by ) ) { + $order = ( isset( $_REQUEST['order'] ) && 'DESC' == strtoupper( $_REQUEST['order'] ) ) ? "DESC" : "ASC"; + $query .= $order; + } + + // Don't do an unbounded count on large networks + if ( ! wp_is_large_network() ) + $total = $wpdb->get_var( str_replace( 'SELECT *', 'SELECT COUNT( blog_id )', $query ) ); + + $query .= " LIMIT " . intval( ( $pagenum - 1 ) * $per_page ) . ", " . intval( $per_page ); + $this->items = $wpdb->get_results( $query, ARRAY_A ); + + if ( wp_is_large_network() ) + $total = count($this->items); + + $this->set_pagination_args( array( + 'total_items' => $total, + 'per_page' => $per_page, + ) ); + } + + function no_items() { + _e( 'No sites found.' ); + } + + function get_bulk_actions() { + $actions = array(); + if ( current_user_can( 'delete_sites' ) ) + $actions['delete'] = __( 'Delete' ); + $actions['spam'] = _x( 'Mark as Spam', 'site' ); + $actions['notspam'] = _x( 'Not Spam', 'site' ); + + return $actions; + } + + function pagination( $which ) { + global $mode; + + parent::pagination( $which ); + + if ( 'top' == $which ) + $this->view_switcher( $mode ); + } + + function get_columns() { + $blogname_columns = ( is_subdomain_install() ) ? __( 'Domain' ) : __( 'Path' ); + $sites_columns = array( + 'cb' => '', + 'blogname' => $blogname_columns, + 'lastupdated' => __( 'Last Updated' ), + 'registered' => _x( 'Registered', 'site' ), + 'users' => __( 'Users' ) + ); + + if ( has_filter( 'wpmublogsaction' ) ) + $sites_columns['plugins'] = __( 'Actions' ); + + $sites_columns = apply_filters( 'wpmu_blogs_columns', $sites_columns ); + + return $sites_columns; + } + + function get_sortable_columns() { + return array( + 'blogname' => 'blogname', + 'lastupdated' => 'lastupdated', + 'registered' => 'blog_id', + ); + } + + function display_rows() { + global $current_site, $mode; + + $status_list = array( + 'archived' => array( 'site-archived', __( 'Archived' ) ), + 'spam' => array( 'site-spammed', _x( 'Spam', 'site' ) ), + 'deleted' => array( 'site-deleted', __( 'Deleted' ) ), + 'mature' => array( 'site-mature', __( 'Mature' ) ) + ); + + $class = ''; + foreach ( $this->items as $blog ) { + $class = ( 'alternate' == $class ) ? '' : 'alternate'; + reset( $status_list ); + + $blog_states = array(); + foreach ( $status_list as $status => $col ) { + if ( get_blog_status( $blog['blog_id'], $status ) == 1 ) { + $class = $col[0]; + $blog_states[] = $col[1]; + } + } + $blog_state = ''; + if ( ! empty( $blog_states ) ) { + $state_count = count( $blog_states ); + $i = 0; + $blog_state .= ' - '; + foreach ( $blog_states as $state ) { + ++$i; + ( $i == $state_count ) ? $sep = '' : $sep = ', '; + $blog_state .= "$state$sep"; + } + } + echo ""; + + $blogname = ( is_subdomain_install() ) ? str_replace( '.'.$current_site->domain, '', $blog['domain'] ) : $blog['path']; + + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + switch ( $column_name ) { + case 'cb': ?> + + + + "; ?> + + ' . sprintf( _x( '%1$s – %2$s', '%1$s: site name. %2$s: site tagline.' ), get_blog_option( $blog['blog_id'], 'blogname' ), get_blog_option( $blog['blog_id'], 'blogdescription ' ) ) . '

'; + + // Preordered. + $actions = array( + 'edit' => '', 'backend' => '', + 'activate' => '', 'deactivate' => '', + 'archive' => '', 'unarchive' => '', + 'spam' => '', 'unspam' => '', + 'delete' => '', + 'visit' => '', + ); + + $actions['edit'] = '' . __( 'Edit' ) . ''; + $actions['backend'] = "" . __( 'Dashboard' ) . ''; + if ( $current_site->blog_id != $blog['blog_id'] ) { + if ( get_blog_status( $blog['blog_id'], 'deleted' ) == '1' ) + $actions['activate'] = '' . __( 'Activate' ) . ''; + else + $actions['deactivate'] = '' . __( 'Deactivate' ) . ''; + + if ( get_blog_status( $blog['blog_id'], 'archived' ) == '1' ) + $actions['unarchive'] = '' . __( 'Unarchive' ) . ''; + else + $actions['archive'] = '' . _x( 'Archive', 'verb; site' ) . ''; + + if ( get_blog_status( $blog['blog_id'], 'spam' ) == '1' ) + $actions['unspam'] = '' . _x( 'Not Spam', 'site' ) . ''; + else + $actions['spam'] = '' . _x( 'Spam', 'site' ) . ''; + + if ( current_user_can( 'delete_site', $blog['blog_id'] ) ) + $actions['delete'] = '' . __( 'Delete' ) . ''; + } + + $actions['visit'] = "" . __( 'Visit' ) . ''; + + $actions = apply_filters( 'manage_sites_action_links', array_filter( $actions ), $blog['blog_id'], $blogname ); + echo $this->row_actions( $actions ); + ?> + + "; + if ( 'list' == $mode ) + $date = 'Y/m/d'; + else + $date = 'Y/m/d \<\b\r \/\> g:i:s a'; + echo ( $blog['last_updated'] == '0000-00-00 00:00:00' ) ? __( 'Never' ) : mysql2date( $date, $blog['last_updated'] ); ?> + + "; + if ( $blog['registered'] == '0000-00-00 00:00:00' ) + echo '—'; + else + echo mysql2date( $date, $blog['registered'] ); + ?> + + "; + $blogusers = get_users( array( 'blog_id' => $blog['blog_id'], 'number' => 6) ); + if ( is_array( $blogusers ) ) { + $blogusers_warning = ''; + if ( count( $blogusers ) > 5 ) { + $blogusers = array_slice( $blogusers, 0, 5 ); + $blogusers_warning = __( 'Only showing first 5 users.' ) . ' ' . __( 'More' ) . ''; + } + foreach ( $blogusers as $user_object ) { + echo '' . esc_html( $user_object->user_login ) . ' '; + if ( 'list' != $mode ) + echo '( ' . $user_object->user_email . ' )'; + echo '
'; + } + if ( $blogusers_warning != '' ) + echo '' . $blogusers_warning . '
'; + } + ?> + + + "; + do_action( 'wpmublogsaction', $blog['blog_id'] ); ?> + + "; + do_action( 'manage_sites_custom_column', $column_name, $blog['blog_id'] ); + echo ""; + break; + } + } + ?> + + get_pagenum(); + + $screen = get_current_screen(); + $this->is_site_themes = ( 'site-themes-network' == $screen->id ) ? true : false; + + if ( $this->is_site_themes ) + $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + + parent::__construct( array( + 'plural' => 'themes' + ) ); + } + + function get_table_classes() { + return array( 'widefat', 'plugins' ); // todo: remove and add CSS for .themes + } + + function ajax_user_can() { + $menu_perms = get_site_option( 'menu_items', array() ); + + if ( empty( $menu_perms['themes'] ) && ! is_super_admin() ) + return false; + + if ( $this->is_site_themes && !current_user_can('manage_sites') ) + return false; + elseif ( !$this->is_site_themes && !current_user_can('manage_network_themes') ) + return false; + return true; + } + + function prepare_items() { + global $status, $totals, $page, $orderby, $order, $s; + + wp_reset_vars( array( 'orderby', 'order', 's' ) ); + + $themes = array( + 'all' => apply_filters( 'all_themes', wp_get_themes() ), + 'search' => array(), + 'enabled' => array(), + 'disabled' => array(), + 'upgrade' => array(), + 'broken' => $this->is_site_themes ? array() : wp_get_themes( array( 'errors' => true ) ), + ); + + if ( $this->is_site_themes ) { + $themes_per_page = $this->get_items_per_page( 'site_themes_network_per_page' ); + $allowed_where = 'site'; + } else { + $themes_per_page = $this->get_items_per_page( 'themes_network_per_page' ); + $allowed_where = 'network'; + } + + $maybe_update = current_user_can( 'update_themes' ) && ! $this->is_site_themes && $current = get_site_transient( 'update_themes' ); + + foreach ( (array) $themes['all'] as $key => $theme ) { + if ( $this->is_site_themes && $theme->is_allowed( 'network' ) ) { + unset( $themes['all'][ $key ] ); + continue; + } + + if ( $maybe_update && isset( $current->response[ $key ] ) ) { + $themes['all'][ $key ]->update = true; + $themes['upgrade'][ $key ] = $themes['all'][ $key ]; + } + + $filter = $theme->is_allowed( $allowed_where, $this->site_id ) ? 'enabled' : 'disabled'; + $themes[ $filter ][ $key ] = $themes['all'][ $key ]; + } + + if ( $s ) { + $status = 'search'; + $themes['search'] = array_filter( array_merge( $themes['all'], $themes['broken'] ), array( &$this, '_search_callback' ) ); + } + + $totals = array(); + foreach ( $themes as $type => $list ) + $totals[ $type ] = count( $list ); + + if ( empty( $themes[ $status ] ) && !in_array( $status, array( 'all', 'search' ) ) ) + $status = 'all'; + + $this->items = $themes[ $status ]; + WP_Theme::sort_by_name( $this->items ); + + $this->has_items = ! empty( $themes['all'] ); + $total_this_page = $totals[ $status ]; + + if ( $orderby ) { + $orderby = ucfirst( $orderby ); + $order = strtoupper( $order ); + + if ( $orderby == 'Name' ) { + if ( 'ASC' == $order ) + $this->items = array_reverse( $this->items ); + } else { + uasort( $this->items, array( &$this, '_order_callback' ) ); + } + } + + $start = ( $page - 1 ) * $themes_per_page; + + if ( $total_this_page > $themes_per_page ) + $this->items = array_slice( $this->items, $start, $themes_per_page, true ); + + $this->set_pagination_args( array( + 'total_items' => $total_this_page, + 'per_page' => $themes_per_page, + ) ); + } + + function _search_callback( $theme ) { + static $term; + if ( is_null( $term ) ) + $term = stripslashes( $_REQUEST['s'] ); + + foreach ( array( 'Name', 'Description', 'Author', 'Author', 'AuthorURI' ) as $field ) { + // Don't mark up; Do translate. + if ( false !== stripos( $theme->display( $field, false, true ), $term ) ) + return true; + } + + if ( false !== stripos( $theme->get_stylesheet(), $term ) ) + return true; + + if ( false !== stripos( $theme->get_template(), $term ) ) + return true; + + return false; + } + + // Not used by any core columns. + function _order_callback( $theme_a, $theme_b ) { + global $orderby, $order; + + $a = $theme_a[ $orderby ]; + $b = $theme_b[ $orderby ]; + + if ( $a == $b ) + return 0; + + if ( 'DESC' == $order ) + return ( $a < $b ) ? 1 : -1; + else + return ( $a < $b ) ? -1 : 1; + } + + function no_items() { + if ( ! $this->has_items ) + _e( 'No themes found.' ); + else + _e( 'You do not appear to have any themes available at this time.' ); + } + + function get_columns() { + global $status; + + return array( + 'cb' => '', + 'name' => __( 'Theme' ), + 'description' => __( 'Description' ), + ); + } + + function get_sortable_columns() { + return array( + 'name' => 'name', + ); + } + + function get_views() { + global $totals, $status; + + $status_links = array(); + foreach ( $totals as $type => $count ) { + if ( !$count ) + continue; + + switch ( $type ) { + case 'all': + $text = _nx( 'All (%s)', 'All (%s)', $count, 'themes' ); + break; + case 'enabled': + $text = _n( 'Enabled (%s)', 'Enabled (%s)', $count ); + break; + case 'disabled': + $text = _n( 'Disabled (%s)', 'Disabled (%s)', $count ); + break; + case 'upgrade': + $text = _n( 'Update Available (%s)', 'Update Available (%s)', $count ); + break; + case 'broken' : + $text = _n( 'Broken (%s)', 'Broken (%s)', $count ); + break; + } + + if ( $this->is_site_themes ) + $url = 'site-themes.php?id=' . $this->site_id; + else + $url = 'themes.php'; + + if ( 'search' != $type ) { + $status_links[$type] = sprintf( "%s", + esc_url( add_query_arg('theme_status', $type, $url) ), + ( $type == $status ) ? ' class="current"' : '', + sprintf( $text, number_format_i18n( $count ) ) + ); + } + } + + return $status_links; + } + + function get_bulk_actions() { + global $status; + + $actions = array(); + if ( 'enabled' != $status ) + $actions['enable-selected'] = $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ); + if ( 'disabled' != $status ) + $actions['disable-selected'] = $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ); + if ( ! $this->is_site_themes ) { + if ( current_user_can( 'delete_themes' ) ) + $actions['delete-selected'] = __( 'Delete' ); + if ( current_user_can( 'update_themes' ) ) + $actions['update-selected'] = __( 'Update' ); + } + return $actions; + } + + function bulk_actions( $which ) { + global $status; + parent::bulk_actions( $which ); + } + + function current_action() { + return parent::current_action(); + } + + function display_rows() { + foreach ( $this->items as $key => $theme ) + $this->single_row( $key, $theme ); + } + + function single_row( $key, $theme ) { + global $status, $page, $s, $totals; + + $context = $status; + + if ( $this->is_site_themes ) { + $url = "site-themes.php?id={$this->site_id}&"; + $allowed = $theme->is_allowed( 'site', $this->site_id ); + } else { + $url = 'themes.php?'; + $allowed = $theme->is_allowed( 'network' ); + } + + // preorder + $actions = array( + 'enable' => '', + 'disable' => '', + 'edit' => '', + 'delete' => '' + ); + + $theme_key = $theme->get_stylesheet(); + + if ( ! $allowed ) { + if ( ! $theme->errors() ) + $actions['enable'] = '' . ( $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ) ) . ''; + } else { + $actions['disable'] = '' . ( $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ) ) . ''; + } + + if ( current_user_can('edit_themes') ) + $actions['edit'] = '' . __('Edit') . ''; + + if ( ! $allowed && current_user_can( 'delete_themes' ) && ! $this->is_site_themes && $theme_key != get_option( 'stylesheet' ) && $theme_key != get_option( 'template' ) ) + $actions['delete'] = '' . __( 'Delete' ) . ''; + + $actions = apply_filters( 'theme_action_links', array_filter( $actions ), $theme_key, $theme, $context ); + $actions = apply_filters( "theme_action_links_$theme_key", $actions, $theme_key, $theme, $context ); + + $class = ! $allowed ? 'inactive' : 'active'; + $checkbox_id = "checkbox_" . md5( $theme->get('Name') ); + $checkbox = ""; + + $id = sanitize_html_class( $theme->get_stylesheet() ); + + if ( ! empty( $totals['upgrade'] ) && ! empty( $theme->update ) ) + $class .= ' update'; + + echo ""; + + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + switch ( $column_name ) { + case 'cb': + echo ""; + break; + case 'name': + echo ""; + break; + case 'description': + echo ""; + break; + + default: + echo ""; + } + } + + echo ""; + + if ( $this->is_site_themes ) + remove_action( "after_theme_row_$theme_key", 'wp_theme_update_row' ); + do_action( 'after_theme_row', $theme_key, $theme, $status ); + do_action( "after_theme_row_$theme_key", $theme_key, $theme, $status ); + } +} diff --git a/wp-admin/includes/class-wp-ms-users-list-table.php b/wp-admin/includes/class-wp-ms-users-list-table.php new file mode 100644 index 0000000..67564fd --- /dev/null +++ b/wp-admin/includes/class-wp-ms-users-list-table.php @@ -0,0 +1,275 @@ +get_items_per_page( 'users_network_per_page' ); + + $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : ''; + + $paged = $this->get_pagenum(); + + $args = array( + 'number' => $users_per_page, + 'offset' => ( $paged-1 ) * $users_per_page, + 'search' => $usersearch, + 'blog_id' => 0, + 'fields' => 'all_with_meta' + ); + + if ( wp_is_large_network( 'users' ) ) + $args['search'] = ltrim( $args['search'], '*' ); + + if ( $role == 'super' ) { + $logins = implode( "', '", get_super_admins() ); + $args['include'] = $wpdb->get_col( "SELECT ID FROM $wpdb->users WHERE user_login IN ('$logins')" ); + } + + // If the network is large and a search is not being performed, show only the latest users with no paging in order + // to avoid expensive count queries. + if ( !$usersearch && wp_is_large_network( 'users' ) ) { + if ( !isset($_REQUEST['orderby']) ) + $_GET['orderby'] = $_REQUEST['orderby'] = 'id'; + if ( !isset($_REQUEST['order']) ) + $_GET['order'] = $_REQUEST['order'] = 'DESC'; + $args['count_total'] = false; + } + + if ( isset( $_REQUEST['orderby'] ) ) + $args['orderby'] = $_REQUEST['orderby']; + + if ( isset( $_REQUEST['order'] ) ) + $args['order'] = $_REQUEST['order']; + + $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode']; + + // Query the user IDs for this page + $wp_user_search = new WP_User_Query( $args ); + + $this->items = $wp_user_search->get_results(); + + $this->set_pagination_args( array( + 'total_items' => $wp_user_search->get_total(), + 'per_page' => $users_per_page, + ) ); + } + + function get_bulk_actions() { + $actions = array(); + if ( current_user_can( 'delete_users' ) ) + $actions['delete'] = __( 'Delete' ); + $actions['spam'] = _x( 'Mark as Spam', 'user' ); + $actions['notspam'] = _x( 'Not Spam', 'user' ); + + return $actions; + } + + function no_items() { + _e( 'No users found.' ); + } + + function get_views() { + global $wp_roles, $role; + + $total_users = get_user_count(); + $super_admins = get_super_admins(); + $total_admins = count( $super_admins ); + + $current_role = false; + $class = $role != 'super' ? ' class="current"' : ''; + $role_links = array(); + $role_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_users, 'users' ), number_format_i18n( $total_users ) ) . ''; + $class = $role == 'super' ? ' class="current"' : ''; + $role_links['super'] = "" . sprintf( _n( 'Super Admin (%s)', 'Super Admins (%s)', $total_admins ), number_format_i18n( $total_admins ) ) . ''; + + return $role_links; + } + + function pagination( $which ) { + global $mode; + + parent::pagination ( $which ); + + if ( 'top' == $which ) + $this->view_switcher( $mode ); + } + + function get_columns() { + $users_columns = array( + 'cb' => '', + 'username' => __( 'Username' ), + 'name' => __( 'Name' ), + 'email' => __( 'E-mail' ), + 'registered' => _x( 'Registered', 'user' ), + 'blogs' => __( 'Sites' ) + ); + $users_columns = apply_filters( 'wpmu_users_columns', $users_columns ); + + return $users_columns; + } + + function get_sortable_columns() { + return array( + 'username' => 'login', + 'name' => 'name', + 'email' => 'email', + 'registered' => 'id', + ); + } + + function display_rows() { + global $current_site, $mode; + + $alt = ''; + $super_admins = get_super_admins(); + foreach ( $this->items as $user ) { + $alt = ( 'alternate' == $alt ) ? '' : 'alternate'; + + $status_list = array( 'spam' => 'site-spammed', 'deleted' => 'site-deleted' ); + + foreach ( $status_list as $status => $col ) { + if ( $user->$status ) + $alt .= " $col"; + } + + ?> + + get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) : + $class = "class='$column_name column-$column_name'"; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = "$class$style"; + + switch ( $column_name ) { + case 'cb': ?> + + user_email, 32 ); + if ( get_current_user_id() == $user->ID ) { + $edit_link = esc_url( network_admin_url( 'profile.php' ) ); + } else { + $edit_link = esc_url( network_admin_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), 'user-edit.php?user_id=' . $user->ID ) ) ); + } + + echo " + $user->first_name $user->last_name"; + break; + + case 'email': + echo ""; + break; + + case 'registered': + if ( 'list' == $mode ) + $date = 'Y/m/d'; + else + $date = 'Y/m/d \<\b\r \/\> g:i:s a'; + + echo ""; + break; + + case 'blogs': + $blogs = get_blogs_of_user( $user->ID, true ); + echo " + "; + echo apply_filters( 'manage_users_custom_column', '', $column_name, $user->ID ); + echo ""; + break; + } + endforeach + ?> + + get_pagenum(); + + $per_page = 30; + + // These are the tabs which are shown on the page + $tabs = array(); + $tabs['dashboard'] = __( 'Search' ); + if ( 'search' == $tab ) + $tabs['search'] = __( 'Search Results' ); + $tabs['upload'] = __( 'Upload' ); + $tabs['featured'] = _x( 'Featured','Plugin Installer' ); + $tabs['popular'] = _x( 'Popular','Plugin Installer' ); + $tabs['new'] = _x( 'Newest','Plugin Installer' ); + + $nonmenu_tabs = array( 'plugin-information' ); //Valid actions to perform which do not have a Menu item. + + $tabs = apply_filters( 'install_plugins_tabs', $tabs ); + $nonmenu_tabs = apply_filters( 'install_plugins_nonmenu_tabs', $nonmenu_tabs ); + + // If a non-valid menu tab has been selected, And its not a non-menu action. + if ( empty( $tab ) || ( !isset( $tabs[ $tab ] ) && !in_array( $tab, (array) $nonmenu_tabs ) ) ) + $tab = key( $tabs ); + + $args = array( 'page' => $paged, 'per_page' => $per_page ); + + switch ( $tab ) { + case 'search': + $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : 'term'; + $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : ''; + + switch ( $type ) { + case 'tag': + $args['tag'] = sanitize_title_with_dashes( $term ); + break; + case 'term': + $args['search'] = $term; + break; + case 'author': + $args['author'] = $term; + break; + } + + add_action( 'install_plugins_table_header', 'install_search_form', 10, 0 ); + break; + + case 'featured': + case 'popular': + case 'new': + $args['browse'] = $tab; + break; + + default: + $args = false; + } + + if ( !$args ) + return; + + $api = plugins_api( 'query_plugins', $args ); + + if ( is_wp_error( $api ) ) + wp_die( $api->get_error_message() . '

' . __( 'Try again' ) . '' ); + + $this->items = $api->plugins; + + $this->set_pagination_args( array( + 'total_items' => $api->info['results'], + 'per_page' => $per_page, + ) ); + } + + function no_items() { + _e( 'No plugins match your request.' ); + } + + function get_views() { + global $tabs, $tab; + + $display_tabs = array(); + foreach ( (array) $tabs as $action => $text ) { + $class = ( $action == $tab ) ? ' class="current"' : ''; + $href = self_admin_url('plugin-install.php?tab=' . $action); + $display_tabs['plugin-install-'.$action] = "$text"; + } + + return $display_tabs; + } + + function display_tablenav( $which ) { + if ( 'top' == $which ) { ?> +

+
+ +
+ pagination( $which ); ?> + +
+
+ +
+ pagination( $which ); ?> + +
+
+ _args ); + + return array( 'widefat', $plural ); + } + + function get_columns() { + return array( + 'name' => _x( 'Name', 'plugin name' ), + 'version' => __( 'Version' ), + 'rating' => __( 'Rating' ), + 'description' => __( 'Description' ), + ); + } + + function display_rows() { + $plugins_allowedtags = array( + 'a' => array( 'href' => array(),'title' => array(), 'target' => array() ), + 'abbr' => array( 'title' => array() ),'acronym' => array( 'title' => array() ), + 'code' => array(), 'pre' => array(), 'em' => array(),'strong' => array(), + 'ul' => array(), 'ol' => array(), 'li' => array(), 'p' => array(), 'br' => array() + ); + + list( $columns, $hidden ) = $this->get_column_info(); + + $style = array(); + foreach ( $columns as $column_name => $column_display_name ) { + $style[ $column_name ] = in_array( $column_name, $hidden ) ? 'style="display:none;"' : ''; + } + + foreach ( (array) $this->items as $plugin ) { + if ( is_object( $plugin ) ) + $plugin = (array) $plugin; + + $title = wp_kses( $plugin['name'], $plugins_allowedtags ); + //Limit description to 400char, and remove any HTML. + $description = strip_tags( $plugin['description'] ); + if ( strlen( $description ) > 400 ) + $description = mb_substr( $description, 0, 400 ) . '…'; + //remove any trailing entities + $description = preg_replace( '/&[^;\s]{0,6}$/', '', $description ); + //strip leading/trailing & multiple consecutive lines + $description = trim( $description ); + $description = preg_replace( "|(\r?\n)+|", "\n", $description ); + //\n =>
+ $description = nl2br( $description ); + $version = wp_kses( $plugin['version'], $plugins_allowedtags ); + + $name = strip_tags( $title . ' ' . $version ); + + $author = $plugin['author']; + if ( ! empty( $plugin['author'] ) ) + $author = ' ' . sprintf( __( 'By %s' ), $author ) . '.'; + + $author = wp_kses( $author, $plugins_allowedtags ); + + $action_links = array(); + $action_links[] = '' . __( 'Details' ) . ''; + + if ( current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) { + $status = install_plugin_install_status( $plugin ); + + switch ( $status['status'] ) { + case 'install': + if ( $status['url'] ) + $action_links[] = '' . __( 'Install Now' ) . ''; + break; + case 'update_available': + if ( $status['url'] ) + $action_links[] = '' . sprintf( __( 'Update Now' ), $status['version'] ) . ''; + break; + case 'latest_installed': + case 'newer_installed': + $action_links[] = '' . _x( 'Installed', 'plugin' ) . ''; + break; + } + } + + $action_links = apply_filters( 'plugin_install_action_links', $action_links, $plugin ); + ?> + + + + + + + get_pagenum(); + + parent::__construct( array( + 'plural' => 'plugins', + ) ); + } + + function get_table_classes() { + return array( 'widefat', $this->_args['plural'] ); + } + + function ajax_user_can() { + if ( is_multisite() ) { + $menu_perms = get_site_option( 'menu_items', array() ); + + if ( empty( $menu_perms['plugins'] ) && ! is_super_admin() ) + return false; + } + + return current_user_can('activate_plugins'); + } + + function prepare_items() { + global $status, $plugins, $totals, $page, $orderby, $order, $s; + + wp_reset_vars( array( 'orderby', 'order', 's' ) ); + + $plugins = array( + 'all' => apply_filters( 'all_plugins', get_plugins() ), + 'search' => array(), + 'active' => array(), + 'inactive' => array(), + 'recently_activated' => array(), + 'upgrade' => array(), + 'mustuse' => array(), + 'dropins' => array() + ); + + $screen = get_current_screen(); + + if ( ! is_multisite() || ( $screen->is_network && current_user_can('manage_network_plugins') ) ) { + if ( apply_filters( 'show_advanced_plugins', true, 'mustuse' ) ) + $plugins['mustuse'] = get_mu_plugins(); + if ( apply_filters( 'show_advanced_plugins', true, 'dropins' ) ) + $plugins['dropins'] = get_dropins(); + + if ( current_user_can( 'update_plugins' ) ) { + $current = get_site_transient( 'update_plugins' ); + foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) { + if ( isset( $current->response[ $plugin_file ] ) ) { + $plugins['all'][ $plugin_file ]['update'] = true; + $plugins['upgrade'][ $plugin_file ] = $plugins['all'][ $plugin_file ]; + } + } + } + } + + set_transient( 'plugin_slugs', array_keys( $plugins['all'] ), 86400 ); + + if ( ! $screen->is_network ) { + $recently_activated = get_option( 'recently_activated', array() ); + + $one_week = 7*24*60*60; + foreach ( $recently_activated as $key => $time ) + if ( $time + $one_week < time() ) + unset( $recently_activated[$key] ); + update_option( 'recently_activated', $recently_activated ); + } + + foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) { + // Filter into individual sections + if ( ! $screen->is_network && is_plugin_active_for_network( $plugin_file ) ) { + unset( $plugins['all'][ $plugin_file ] ); + } elseif ( ( ! $screen->is_network && is_plugin_active( $plugin_file ) ) + || ( $screen->is_network && is_plugin_active_for_network( $plugin_file ) ) ) { + $plugins['active'][ $plugin_file ] = $plugin_data; + } else { + if ( !$screen->is_network && isset( $recently_activated[ $plugin_file ] ) ) // Was the plugin recently activated? + $plugins['recently_activated'][ $plugin_file ] = $plugin_data; + $plugins['inactive'][ $plugin_file ] = $plugin_data; + } + } + + if ( $s ) { + $status = 'search'; + $plugins['search'] = array_filter( $plugins['all'], array( &$this, '_search_callback' ) ); + } + + $totals = array(); + foreach ( $plugins as $type => $list ) + $totals[ $type ] = count( $list ); + + if ( empty( $plugins[ $status ] ) && !in_array( $status, array( 'all', 'search' ) ) ) + $status = 'all'; + + $this->items = array(); + foreach ( $plugins[ $status ] as $plugin_file => $plugin_data ) { + // Translate, Don't Apply Markup, Sanitize HTML + $this->items[$plugin_file] = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, false, true ); + } + + $total_this_page = $totals[ $status ]; + + if ( $orderby ) { + $orderby = ucfirst( $orderby ); + $order = strtoupper( $order ); + + uasort( $this->items, array( &$this, '_order_callback' ) ); + } + + $plugins_per_page = $this->get_items_per_page( str_replace( '-', '_', $screen->id . '_per_page' ), 999 ); + + $start = ( $page - 1 ) * $plugins_per_page; + + if ( $total_this_page > $plugins_per_page ) + $this->items = array_slice( $this->items, $start, $plugins_per_page ); + + $this->set_pagination_args( array( + 'total_items' => $total_this_page, + 'per_page' => $plugins_per_page, + ) ); + } + + function _search_callback( $plugin ) { + static $term; + if ( is_null( $term ) ) + $term = stripslashes( $_REQUEST['s'] ); + + foreach ( $plugin as $value ) + if ( stripos( $value, $term ) !== false ) + return true; + + return false; + } + + function _order_callback( $plugin_a, $plugin_b ) { + global $orderby, $order; + + $a = $plugin_a[$orderby]; + $b = $plugin_b[$orderby]; + + if ( $a == $b ) + return 0; + + if ( 'DESC' == $order ) + return ( $a < $b ) ? 1 : -1; + else + return ( $a < $b ) ? -1 : 1; + } + + function no_items() { + global $plugins; + + if ( !empty( $plugins['all'] ) ) + _e( 'No plugins found.' ); + else + _e( 'You do not appear to have any plugins available at this time.' ); + } + + function get_columns() { + global $status; + + return array( + 'cb' => !in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : '', + 'name' => __( 'Plugin' ), + 'description' => __( 'Description' ), + ); + } + + function get_sortable_columns() { + return array(); + } + + function get_views() { + global $totals, $status; + + $status_links = array(); + foreach ( $totals as $type => $count ) { + if ( !$count ) + continue; + + switch ( $type ) { + case 'all': + $text = _nx( 'All (%s)', 'All (%s)', $count, 'plugins' ); + break; + case 'active': + $text = _n( 'Active (%s)', 'Active (%s)', $count ); + break; + case 'recently_activated': + $text = _n( 'Recently Active (%s)', 'Recently Active (%s)', $count ); + break; + case 'inactive': + $text = _n( 'Inactive (%s)', 'Inactive (%s)', $count ); + break; + case 'mustuse': + $text = _n( 'Must-Use (%s)', 'Must-Use (%s)', $count ); + break; + case 'dropins': + $text = _n( 'Drop-ins (%s)', 'Drop-ins (%s)', $count ); + break; + case 'upgrade': + $text = _n( 'Update Available (%s)', 'Update Available (%s)', $count ); + break; + } + + if ( 'search' != $type ) { + $status_links[$type] = sprintf( "%s", + add_query_arg('plugin_status', $type, 'plugins.php'), + ( $type == $status ) ? ' class="current"' : '', + sprintf( $text, number_format_i18n( $count ) ) + ); + } + } + + return $status_links; + } + + function get_bulk_actions() { + global $status; + + $actions = array(); + + $screen = get_current_screen(); + + if ( 'active' != $status ) + $actions['activate-selected'] = $screen->is_network ? __( 'Network Activate' ) : __( 'Activate' ); + + if ( 'inactive' != $status && 'recent' != $status ) + $actions['deactivate-selected'] = $screen->is_network ? __( 'Network Deactivate' ) : __( 'Deactivate' ); + + if ( !is_multisite() || $screen->is_network ) { + if ( current_user_can( 'update_plugins' ) ) + $actions['update-selected'] = __( 'Update' ); + if ( current_user_can( 'delete_plugins' ) && ( 'active' != $status ) ) + $actions['delete-selected'] = __( 'Delete' ); + } + + return $actions; + } + + function bulk_actions( $which ) { + global $status; + + if ( in_array( $status, array( 'mustuse', 'dropins' ) ) ) + return; + + parent::bulk_actions( $which ); + } + + function extra_tablenav( $which ) { + global $status; + + if ( ! in_array($status, array('recently_activated', 'mustuse', 'dropins') ) ) + return; + + echo '
'; + + $screen = get_current_screen(); + + if ( ! $screen->is_network && 'recently_activated' == $status ) + submit_button( __( 'Clear List' ), 'secondary', 'clear-recent-list', false ); + elseif ( 'top' == $which && 'mustuse' == $status ) + echo '

' . sprintf( __( 'Files in the %s directory are executed automatically.' ), str_replace( ABSPATH, '/', WPMU_PLUGIN_DIR ) ) . '

'; + elseif ( 'top' == $which && 'dropins' == $status ) + echo '

' . sprintf( __( 'Drop-ins are advanced plugins in the %s directory that replace WordPress functionality when present.' ), str_replace( ABSPATH, '', WP_CONTENT_DIR ) ) . '

'; + + echo '
'; + } + + function current_action() { + if ( isset($_POST['clear-recent-list']) ) + return 'clear-recent-list'; + + return parent::current_action(); + } + + function display_rows() { + global $status; + + $screen = get_current_screen(); + + if ( is_multisite() && !$screen->is_network && in_array( $status, array( 'mustuse', 'dropins' ) ) ) + return; + + foreach ( $this->items as $plugin_file => $plugin_data ) + $this->single_row( $plugin_file, $plugin_data ); + } + + function single_row( $plugin_file, $plugin_data ) { + global $status, $page, $s, $totals; + + $context = $status; + + $screen = get_current_screen(); + + // preorder + $actions = array( + 'deactivate' => '', + 'activate' => '', + 'edit' => '', + 'delete' => '', + ); + + if ( 'mustuse' == $context ) { + $is_active = true; + } elseif ( 'dropins' == $context ) { + $dropins = _get_dropins(); + $plugin_name = $plugin_file; + if ( $plugin_file != $plugin_data['Name'] ) + $plugin_name .= '
' . $plugin_data['Name']; + if ( true === ( $dropins[ $plugin_file ][1] ) ) { // Doesn't require a constant + $is_active = true; + $description = '

' . $dropins[ $plugin_file ][0] . '

'; + } elseif ( constant( $dropins[ $plugin_file ][1] ) ) { // Constant is true + $is_active = true; + $description = '

' . $dropins[ $plugin_file ][0] . '

'; + } else { + $is_active = false; + $description = '

' . $dropins[ $plugin_file ][0] . ' ' . __('Inactive:') . ' ' . sprintf( __( 'Requires %s in wp-config.php.' ), "define('" . $dropins[ $plugin_file ][1] . "', true);" ) . '

'; + } + if ( $plugin_data['Description'] ) + $description .= '

' . $plugin_data['Description'] . '

'; + } else { + if ( $screen->is_network ) + $is_active = is_plugin_active_for_network( $plugin_file ); + else + $is_active = is_plugin_active( $plugin_file ); + + if ( $screen->is_network ) { + if ( $is_active ) { + if ( current_user_can( 'manage_network_plugins' ) ) + $actions['deactivate'] = '' . __('Network Deactivate') . ''; + } else { + if ( current_user_can( 'manage_network_plugins' ) ) + $actions['activate'] = '' . __('Network Activate') . ''; + if ( current_user_can( 'delete_plugins' ) && ! is_plugin_active( $plugin_file ) ) + $actions['delete'] = '' . __('Delete') . ''; + } + } else { + if ( $is_active ) { + $actions['deactivate'] = '' . __('Deactivate') . ''; + } else { + $actions['activate'] = '' . __('Activate') . ''; + + if ( ! is_multisite() && current_user_can('delete_plugins') ) + $actions['delete'] = '' . __('Delete') . ''; + } // end if $is_active + } // end if $screen->is_network + + if ( ( ! is_multisite() || $screen->is_network ) && current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) ) + $actions['edit'] = '' . __('Edit') . ''; + } // end if $context + + $prefix = $screen->is_network ? 'network_admin_' : ''; + $actions = apply_filters( $prefix . 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context ); + $actions = apply_filters( $prefix . "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context ); + + $class = $is_active ? 'active' : 'inactive'; + $checkbox_id = "checkbox_" . md5($plugin_data['Name']); + $checkbox = in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : ""; + if ( 'dropins' != $context ) { + $description = '

' . ( $plugin_data['Description'] ? $plugin_data['Description'] : ' ' ) . '

'; + $plugin_name = $plugin_data['Name']; + } + + $id = sanitize_title( $plugin_name ); + if ( ! empty( $totals['upgrade'] ) && ! empty( $plugin_data['update'] ) ) + $class .= ' update'; + + echo ""; + + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + switch ( $column_name ) { + case 'cb': + echo ""; + break; + case 'name': + echo ""; + break; + case 'description': + echo ""; + break; + default: + echo ""; + } + } + + echo ""; + + do_action( 'after_plugin_row', $plugin_file, $plugin_data, $status ); + do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status ); + } +} diff --git a/wp-admin/includes/class-wp-posts-list-table.php b/wp-admin/includes/class-wp-posts-list-table.php new file mode 100644 index 0000000..613cff8 --- /dev/null +++ b/wp-admin/includes/class-wp-posts-list-table.php @@ -0,0 +1,1056 @@ +post_type; + $post_type_object = get_post_type_object( $post_type ); + + if ( !current_user_can( $post_type_object->cap->edit_others_posts ) ) { + $this->user_posts_count = $wpdb->get_var( $wpdb->prepare( " + SELECT COUNT( 1 ) FROM $wpdb->posts + WHERE post_type = %s AND post_status NOT IN ( 'trash', 'auto-draft' ) + AND post_author = %d + ", $post_type, get_current_user_id() ) ); + + if ( $this->user_posts_count && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['all_posts'] ) && empty( $_REQUEST['author'] ) && empty( $_REQUEST['show_sticky'] ) ) + $_GET['author'] = get_current_user_id(); + } + + if ( 'post' == $post_type && $sticky_posts = get_option( 'sticky_posts' ) ) { + $sticky_posts = implode( ', ', array_map( 'absint', (array) $sticky_posts ) ); + $this->sticky_posts_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT( 1 ) FROM $wpdb->posts WHERE post_type = %s AND post_status != 'trash' AND ID IN ($sticky_posts)", $post_type ) ); + } + + parent::__construct( array( + 'plural' => 'posts', + ) ); + } + + function ajax_user_can() { + global $post_type_object; + + return current_user_can( $post_type_object->cap->edit_posts ); + } + + function prepare_items() { + global $post_type_object, $avail_post_stati, $wp_query, $per_page, $mode; + + $avail_post_stati = wp_edit_posts_query(); + + $this->hierarchical_display = ( $post_type_object->hierarchical && 'menu_order title' == $wp_query->query['orderby'] ); + + $total_items = $this->hierarchical_display ? $wp_query->post_count : $wp_query->found_posts; + + $post_type = $post_type_object->name; + $per_page = $this->get_items_per_page( 'edit_' . $post_type . '_per_page' ); + $per_page = apply_filters( 'edit_posts_per_page', $per_page, $post_type ); + + if ( $this->hierarchical_display ) + $total_pages = ceil( $total_items / $per_page ); + else + $total_pages = $wp_query->max_num_pages; + + $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode']; + + $this->is_trash = isset( $_REQUEST['post_status'] ) && $_REQUEST['post_status'] == 'trash'; + + $this->set_pagination_args( array( + 'total_items' => $total_items, + 'total_pages' => $total_pages, + 'per_page' => $per_page + ) ); + } + + function has_items() { + return have_posts(); + } + + function no_items() { + global $post_type_object; + + if ( isset( $_REQUEST['post_status'] ) && 'trash' == $_REQUEST['post_status'] ) + echo $post_type_object->labels->not_found_in_trash; + else + echo $post_type_object->labels->not_found; + } + + function get_views() { + global $post_type_object, $locked_post_status, $avail_post_stati; + + $post_type = $post_type_object->name; + + if ( !empty($locked_post_status) ) + return array(); + + $status_links = array(); + $num_posts = wp_count_posts( $post_type, 'readable' ); + $class = ''; + $allposts = ''; + + $current_user_id = get_current_user_id(); + + if ( $this->user_posts_count ) { + if ( isset( $_GET['author'] ) && ( $_GET['author'] == $current_user_id ) ) + $class = ' class="current"'; + $status_links['mine'] = "" . sprintf( _nx( 'Mine (%s)', 'Mine (%s)', $this->user_posts_count, 'posts' ), number_format_i18n( $this->user_posts_count ) ) . ''; + $allposts = '&all_posts=1'; + } + + $total_posts = array_sum( (array) $num_posts ); + + // Subtract post types that are not included in the admin all list. + foreach ( get_post_stati( array('show_in_admin_all_list' => false) ) as $state ) + $total_posts -= $num_posts->$state; + + $class = empty( $class ) && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['show_sticky'] ) ? ' class="current"' : ''; + $status_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_posts, 'posts' ), number_format_i18n( $total_posts ) ) . ''; + + foreach ( get_post_stati(array('show_in_admin_status_list' => true), 'objects') as $status ) { + $class = ''; + + $status_name = $status->name; + + if ( !in_array( $status_name, $avail_post_stati ) ) + continue; + + if ( empty( $num_posts->$status_name ) ) + continue; + + if ( isset($_REQUEST['post_status']) && $status_name == $_REQUEST['post_status'] ) + $class = ' class="current"'; + + $status_links[$status_name] = "" . sprintf( translate_nooped_plural( $status->label_count, $num_posts->$status_name ), number_format_i18n( $num_posts->$status_name ) ) . ''; + } + + if ( ! empty( $this->sticky_posts_count ) ) { + $class = ! empty( $_REQUEST['show_sticky'] ) ? ' class="current"' : ''; + + $sticky_link = array( 'sticky' => "" . sprintf( _nx( 'Sticky (%s)', 'Sticky (%s)', $this->sticky_posts_count, 'posts' ), number_format_i18n( $this->sticky_posts_count ) ) . '' ); + + // Sticky comes after Publish, or if not listed, after All. + $split = 1 + array_search( ( isset( $status_links['publish'] ) ? 'publish' : 'all' ), array_keys( $status_links ) ); + $status_links = array_merge( array_slice( $status_links, 0, $split ), $sticky_link, array_slice( $status_links, $split ) ); + } + + return $status_links; + } + + function get_bulk_actions() { + $actions = array(); + + if ( $this->is_trash ) + $actions['untrash'] = __( 'Restore' ); + else + $actions['edit'] = __( 'Edit' ); + + if ( $this->is_trash || !EMPTY_TRASH_DAYS ) + $actions['delete'] = __( 'Delete Permanently' ); + else + $actions['trash'] = __( 'Move to Trash' ); + + return $actions; + } + + function extra_tablenav( $which ) { + global $post_type_object, $cat; +?> +
+months_dropdown( $post_type_object->name ); + + if ( is_object_in_taxonomy( $post_type_object->name, 'category' ) ) { + $dropdown_options = array( + 'show_option_all' => __( 'View all categories' ), + 'hide_empty' => 0, + 'hierarchical' => 1, + 'show_count' => 0, + 'orderby' => 'name', + 'selected' => $cat + ); + wp_dropdown_categories( $dropdown_options ); + } + do_action( 'restrict_manage_posts' ); + submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); + } + + if ( $this->is_trash && current_user_can( $post_type_object->cap->edit_others_posts ) ) { + submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false ); + } +?> +
+hierarchical ) + $this->view_switcher( $mode ); + } + + function get_table_classes() { + global $post_type_object; + + return array( 'widefat', 'fixed', $post_type_object->hierarchical ? 'pages' : 'posts' ); + } + + function get_columns() { + $screen = get_current_screen(); + + if ( empty( $screen ) ) + $post_type = 'post'; + else + $post_type = $screen->post_type; + + $posts_columns = array(); + + $posts_columns['cb'] = ''; + + /* translators: manage posts column name */ + $posts_columns['title'] = _x( 'Title', 'column name' ); + + if ( post_type_supports( $post_type, 'author' ) ) + $posts_columns['author'] = __( 'Author' ); + + if ( empty( $post_type ) || is_object_in_taxonomy( $post_type, 'category' ) ) + $posts_columns['categories'] = __( 'Categories' ); + + if ( empty( $post_type ) || is_object_in_taxonomy( $post_type, 'post_tag' ) ) + $posts_columns['tags'] = __( 'Tags' ); + + $post_status = !empty( $_REQUEST['post_status'] ) ? $_REQUEST['post_status'] : 'all'; + if ( post_type_supports( $post_type, 'comments' ) && !in_array( $post_status, array( 'pending', 'draft', 'future' ) ) ) + $posts_columns['comments'] = '' . esc_attr__( 'Comments' ) . ''; + + $posts_columns['date'] = __( 'Date' ); + + if ( 'page' == $post_type ) + $posts_columns = apply_filters( 'manage_pages_columns', $posts_columns ); + else + $posts_columns = apply_filters( 'manage_posts_columns', $posts_columns, $post_type ); + $posts_columns = apply_filters( "manage_{$post_type}_posts_columns", $posts_columns ); + + return $posts_columns; + } + + function get_sortable_columns() { + return array( + 'title' => 'title', + 'author' => 'author', + 'parent' => 'parent', + 'comments' => 'comment_count', + 'date' => array( 'date', true ) + ); + } + + function display_rows( $posts = array() ) { + global $wp_query, $post_type_object, $per_page; + + if ( empty( $posts ) ) + $posts = $wp_query->posts; + + add_filter( 'the_title', 'esc_html' ); + + if ( $this->hierarchical_display ) { + $this->_display_rows_hierarchical( $posts, $this->get_pagenum(), $per_page ); + } else { + $this->_display_rows( $posts ); + } + } + + function _display_rows( $posts ) { + global $post, $mode; + + // Create array of post IDs. + $post_ids = array(); + + foreach ( $posts as $a_post ) + $post_ids[] = $a_post->ID; + + $this->comment_pending_count = get_pending_comments_num( $post_ids ); + + foreach ( $posts as $post ) + $this->single_row( $post ); + } + + function _display_rows_hierarchical( $pages, $pagenum = 1, $per_page = 20 ) { + global $wpdb; + + $level = 0; + + if ( ! $pages ) { + $pages = get_pages( array( 'sort_column' => 'menu_order' ) ); + + if ( ! $pages ) + return false; + } + + /* + * arrange pages into two parts: top level pages and children_pages + * children_pages is two dimensional array, eg. + * children_pages[10][] contains all sub-pages whose parent is 10. + * It only takes O( N ) to arrange this and it takes O( 1 ) for subsequent lookup operations + * If searching, ignore hierarchy and treat everything as top level + */ + if ( empty( $_REQUEST['s'] ) ) { + + $top_level_pages = array(); + $children_pages = array(); + + foreach ( $pages as $page ) { + + // catch and repair bad pages + if ( $page->post_parent == $page->ID ) { + $page->post_parent = 0; + $wpdb->update( $wpdb->posts, array( 'post_parent' => 0 ), array( 'ID' => $page->ID ) ); + clean_post_cache( $page ); + } + + if ( 0 == $page->post_parent ) + $top_level_pages[] = $page; + else + $children_pages[ $page->post_parent ][] = $page; + } + + $pages = &$top_level_pages; + } + + $count = 0; + $start = ( $pagenum - 1 ) * $per_page; + $end = $start + $per_page; + + foreach ( $pages as $page ) { + if ( $count >= $end ) + break; + + if ( $count >= $start ) + echo "\t" . $this->single_row( $page, $level ); + + $count++; + + if ( isset( $children_pages ) ) + $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page ); + } + + // if it is the last pagenum and there are orphaned pages, display them with paging as well + if ( isset( $children_pages ) && $count < $end ){ + foreach ( $children_pages as $orphans ){ + foreach ( $orphans as $op ) { + if ( $count >= $end ) + break; + if ( $count >= $start ) + echo "\t" . $this->single_row( $op, 0 ); + $count++; + } + } + } + } + + /** + * Given a top level page ID, display the nested hierarchy of sub-pages + * together with paging support + * + * @since 3.1.0 (Standalone function exists since 2.6.0) + * + * @param unknown_type $children_pages + * @param unknown_type $count + * @param unknown_type $parent + * @param unknown_type $level + * @param unknown_type $pagenum + * @param unknown_type $per_page + */ + function _page_rows( &$children_pages, &$count, $parent, $level, $pagenum, $per_page ) { + + if ( ! isset( $children_pages[$parent] ) ) + return; + + $start = ( $pagenum - 1 ) * $per_page; + $end = $start + $per_page; + + foreach ( $children_pages[$parent] as $page ) { + + if ( $count >= $end ) + break; + + // If the page starts in a subtree, print the parents. + if ( $count == $start && $page->post_parent > 0 ) { + $my_parents = array(); + $my_parent = $page->post_parent; + while ( $my_parent ) { + $my_parent = get_post( $my_parent ); + $my_parents[] = $my_parent; + if ( !$my_parent->post_parent ) + break; + $my_parent = $my_parent->post_parent; + } + $num_parents = count( $my_parents ); + while ( $my_parent = array_pop( $my_parents ) ) { + echo "\t" . $this->single_row( $my_parent, $level - $num_parents ); + $num_parents--; + } + } + + if ( $count >= $start ) + echo "\t" . $this->single_row( $page, $level ); + + $count++; + + $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page ); + } + + unset( $children_pages[$parent] ); //required in order to keep track of orphans + } + + function single_row( $a_post, $level = 0 ) { + global $post, $mode; + static $alternate; + + $global_post = $post; + $post = $a_post; + setup_postdata( $post ); + + $edit_link = get_edit_post_link( $post->ID ); + $title = _draft_or_post_title(); + $post_type_object = get_post_type_object( $post->post_type ); + $can_edit_post = current_user_can( $post_type_object->cap->edit_post, $post->ID ); + + $alternate = 'alternate' == $alternate ? '' : 'alternate'; + $classes = $alternate . ' iedit author-' . ( get_current_user_id() == $post->post_author ? 'self' : 'other' ); + ?> + + get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $class = "class=\"$column_name column-$column_name\""; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = "$class$style"; + + switch ( $column_name ) { + + case 'cb': + ?> + + hierarchical_display ) { + $attributes = 'class="post-title page-title column-title"' . $style; + + if ( 0 == $level && (int) $post->post_parent > 0 ) { + //sent level 0 by accident, by default, or because we don't know the actual level + $find_main_page = (int) $post->post_parent; + while ( $find_main_page > 0 ) { + $parent = get_page( $find_main_page ); + + if ( is_null( $parent ) ) + break; + + $level++; + $find_main_page = (int) $parent->post_parent; + + if ( !isset( $parent_name ) ) + $parent_name = apply_filters( 'the_title', $parent->post_title, $parent->ID ); + } + } + + $pad = str_repeat( '— ', $level ); +?> + '; + break; + + case 'date': + if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) { + $t_time = $h_time = __( 'Unpublished' ); + $time_diff = 0; + } else { + $t_time = get_the_time( __( 'Y/m/d g:i:s A' ) ); + $m_time = $post->post_date; + $time = get_post_time( 'G', true, $post ); + + $time_diff = time() - $time; + + if ( $time_diff > 0 && $time_diff < 24*60*60 ) + $h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) ); + else + $h_time = mysql2date( __( 'Y/m/d' ), $m_time ); + } + + echo ''; + break; + + case 'categories': + ?> + + + + + + + + + + + + post_type ); + $post_type_object = get_post_type_object( $screen->post_type ); + + $taxonomy_names = get_object_taxonomies( $screen->post_type ); + $hierarchical_taxonomies = array(); + $flat_taxonomies = array(); + foreach ( $taxonomy_names as $taxonomy_name ) { + $taxonomy = get_taxonomy( $taxonomy_name ); + + if ( !$taxonomy->show_ui ) + continue; + + if ( $taxonomy->hierarchical ) + $hierarchical_taxonomies[] = $taxonomy; + else + $flat_taxonomies[] = $taxonomy; + } + + $m = ( isset( $mode ) && 'excerpt' == $mode ) ? 'excerpt' : 'list'; + $can_publish = current_user_can( $post_type_object->cap->publish_posts ); + $core_columns = array( 'cb' => true, 'date' => true, 'title' => true, 'categories' => true, 'tags' => true, 'comments' => true, 'author' => true ); + + ?> + +
'; + $this->no_items(); + echo '
'; + echo $this->column_cb( $item ); + echo '"; + echo call_user_func( array( &$this, 'column_' . $column_name ), $item ); + echo ""; + echo $this->column_default( $item, $column_name ); + echo "
+ + + + >ID, array( 80, 60 ), true ) ) { + if ( $this->is_trash || ! $user_can_edit ) { + echo $thumb; + } else { +?> + + + + + + > + is_trash || ! $user_can_edit ) { + echo $att_title; + } else { ?> + + + +

+ID ), $matches ) ) + echo esc_html( strtoupper( $matches[1] ) ); + else + echo strtoupper( str_replace( 'image/', '', get_post_mime_type() ) ); +?> +

+row_actions( $this->_get_row_actions( $post, $att_title ) ); +?> +
>>slug'> " . esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'post_tag', 'display' ) ) . ""; + echo join( ', ', $out ); + } else { + _e( 'No Tags' ); + } +?> + >post_excerpt : ''; ?>>> + post_parent ) ) { ?> + + , + + >
+ + + +
> +
+ID ); + + $this->comments_bubble( $post->ID, $pending_comments ); +?> +
+
> + +
+ + + +
$checkbox" . $theme->display('Name') . ""; + echo $this->row_actions( $actions, true ); + echo ""; + if ( $theme->errors() ) { + $pre = $status == 'broken' ? '' : __( 'Broken Theme:' ) . ' '; + echo '

' . $pre . $theme->errors()->get_error_message() . '

'; + } + echo "

" . $theme->display( 'Description' ) . "

+
"; + + $theme_meta = array(); + + if ( $theme->get('Version') ) + $theme_meta[] = sprintf( __( 'Version %s' ), $theme->display('Version') ); + + $theme_meta[] = sprintf( __( 'By %s' ), $theme->display('Author') ); + + if ( $theme->get('ThemeURI') ) + $theme_meta[] = '' . __( 'Visit Theme Site' ) . ''; + + $theme_meta = apply_filters( 'theme_row_meta', $theme_meta, $theme_key, $theme, $status ); + echo implode( ' | ', $theme_meta ); + + echo "
"; + do_action( 'manage_themes_custom_column', $column_name, $theme_key, $theme ); + echo "
+ + "; ?> + user_login ); ?>user_login, $super_admins ) ) + echo ' - ' . __( 'Super Admin' ); + ?> +
+ ' . __( 'Edit' ) . ''; + + if ( current_user_can( 'delete_user', $user->ID ) && ! in_array( $user->user_login, $super_admins ) ) { + $actions['delete'] = '' . __( 'Delete' ) . ''; + } + + $actions = apply_filters( 'ms_user_row_actions', $actions, $user ); + echo $this->row_actions( $actions ); + ?> +
$user->user_email" . mysql2date( $date, $user->user_registered ) . ""; + if ( is_array( $blogs ) ) { + foreach ( (array) $blogs as $key => $val ) { + if ( !can_edit_network( $val->site_id ) ) + continue; + + $path = ( $val->path == '/' ) ? '' : $val->path; + echo ''; + echo '' . str_replace( '.' . $current_site->domain, '', $val->domain . $path ) . ''; + echo ' '; + $actions = array(); + $actions['edit'] = '' . __( 'Edit' ) . ''; + + $class = ''; + if ( get_blog_status( $val->userblog_id, 'spam' ) == 1 ) + $class .= 'site-spammed '; + if ( get_blog_status( $val->userblog_id, 'mature' ) == 1 ) + $class .= 'site-mature '; + if ( get_blog_status( $val->userblog_id, 'deleted' ) == 1 ) + $class .= 'site-deleted '; + if ( get_blog_status( $val->userblog_id, 'archived' ) == 1 ) + $class .= 'site-archived '; + + $actions['view'] = '' . __( 'View' ) . ''; + + $actions = apply_filters('ms_user_list_site_actions', $actions, $val->userblog_id); + + $i=0; + $action_count = count( $actions ); + foreach ( $actions as $action => $link ) { + ++$i; + ( $i == $action_count ) ? $sep = '' : $sep = ' | '; + echo "$link$sep"; + } + echo '
'; + } + } + ?> +
> + + >> +
+
+
+
>
$checkbox$plugin_name"; + echo $this->row_actions( $actions, true ); + echo " +
$description
+
"; + + $plugin_meta = array(); + if ( !empty( $plugin_data['Version'] ) ) + $plugin_meta[] = sprintf( __( 'Version %s' ), $plugin_data['Version'] ); + if ( !empty( $plugin_data['Author'] ) ) { + $author = $plugin_data['Author']; + if ( !empty( $plugin_data['AuthorURI'] ) ) + $author = '' . $plugin_data['Author'] . ''; + $plugin_meta[] = sprintf( __( 'By %s' ), $author ); + } + if ( ! empty( $plugin_data['PluginURI'] ) ) + $plugin_meta[] = '' . __( 'Visit plugin site' ) . ''; + + $plugin_meta = apply_filters( 'plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $status ); + echo implode( ' | ', $plugin_meta ); + + echo "
"; + do_action( 'manage_plugins_custom_column', $column_name, $plugin_file, $plugin_data ); + echo "
>post_status != 'trash' ) { ?>labels->parent_item_colon . ' ' . esc_html( $parent_name ) : ''; ?> + + >post_status != 'trash' ) { ?> +ID ) ) + the_excerpt(); + } + + $actions = array(); + if ( $can_edit_post && 'trash' != $post->post_status ) { + $actions['edit'] = '' . __( 'Edit' ) . ''; + $actions['inline hide-if-no-js'] = '' . __( 'Quick Edit' ) . ''; + } + if ( current_user_can( $post_type_object->cap->delete_post, $post->ID ) ) { + if ( 'trash' == $post->post_status ) + $actions['untrash'] = "ID ) ), 'untrash-' . $post->post_type . '_' . $post->ID ) . "'>" . __( 'Restore' ) . ""; + elseif ( EMPTY_TRASH_DAYS ) + $actions['trash'] = "" . __( 'Trash' ) . ""; + if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS ) + $actions['delete'] = "" . __( 'Delete Permanently' ) . ""; + } + if ( $post_type_object->public ) { + if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ) ) ) { + if ( $can_edit_post ) + $actions['view'] = '' . __( 'Preview' ) . ''; + } elseif ( 'trash' != $post->post_status ) { + $actions['view'] = '' . __( 'View' ) . ''; + } + } + + $actions = apply_filters( is_post_type_hierarchical( $post->post_type ) ? 'page_row_actions' : 'post_row_actions', $actions, $post ); + echo $this->row_actions( $actions ); + + get_inline_data( $post ); + echo ''; + if ( 'excerpt' == $mode ) + echo apply_filters( 'post_date_column_time', $t_time, $post, $column_name, $mode ); + else + echo '' . apply_filters( 'post_date_column_time', $h_time, $post, $column_name, $mode ) . ''; + echo '
'; + if ( 'publish' == $post->post_status ) { + _e( 'Published' ); + } elseif ( 'future' == $post->post_status ) { + if ( $time_diff > 0 ) + echo '' . __( 'Missed schedule' ) . ''; + else + _e( 'Scheduled' ); + } else { + _e( 'Last Modified' ); + } + echo '
>%s', + esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'category_name' => $c->slug ), 'edit.php' ) ), + esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'category', 'display' ) ) + ); + } + /* translators: used between list items, there is a space after the comma */ + echo join( __( ', ' ), $out ); + } else { + _e( 'Uncategorized' ); + } + ?>>ID ); + if ( !empty( $tags ) ) { + $out = array(); + foreach ( $tags as $c ) { + $out[] = sprintf( '%s', + esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'tag' => $c->slug ), 'edit.php' ) ), + esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'tag', 'display' ) ) + ); + } + /* translators: used between list items, there is a space after the comma */ + echo join( __( ', ' ), $out ); + } else { + _e( 'No Tags' ); + } + ?>>
+ comment_pending_count[$post->ID] ) ? $this->comment_pending_count[$post->ID] : 0; + + $this->comments_bubble( $post->ID, $pending_comments ); + ?> +
>%s', + esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'author' => get_the_author_meta( 'ID' ) ), 'edit.php' )), + get_the_author() + ); + ?>>post_type ) ) + do_action( 'manage_pages_custom_column', $column_name, $post->ID ); + else + do_action( 'manage_posts_custom_column', $column_name, $post->ID ); + do_action( "manage_{$post->post_type}_posts_custom_column", $column_name, $post->ID ); + ?>
+ + + post_type "; + echo $bulk ? "bulk-edit-row bulk-edit-row-$hclass bulk-edit-$screen->post_type" : "quick-edit-row quick-edit-row-$hclass inline-edit-$screen->post_type"; + ?>" style="display: none"> + +
+ +
+

+ post_type, 'title' ) ) : + if ( $bulk ) : ?> +
+
+
+ + + + + + + + + + + +
+ +
+
+ post_type, 'author' ) ) : + $authors_dropdown = ''; + + if ( is_super_admin() || current_user_can( $post_type_object->cap->edit_others_posts ) ) : + $users_opt = array( + 'hide_if_only_one_author' => false, + 'who' => 'authors', + 'name' => 'post_author', + 'class'=> 'authors', + 'multi' => 1, + 'echo' => 0 + ); + if ( $bulk ) + $users_opt['show_option_none'] = __( '— No Change —' ); + + if ( $authors = wp_dropdown_users( $users_opt ) ) : + $authors_dropdown = ''; + endif; + endif; // authors + ?> + + + +
+ + + + + + +
+ + + +
+ + + +
+ + + + labels->name ) ?> + + + + +
    + $taxonomy->name ) ) ?> +
+ + + +
+ + + +
+ + post_type, 'author' ) && $bulk ) + echo $authors_dropdown; + + if ( post_type_supports( $screen->post_type, 'page-attributes' ) ) : + + if ( $post_type_object->hierarchical ) : + ?> + + + + + + + post_type ) : + ?> + + + + + + + + + cap->assign_terms ) ) : ?> + + + + + + + + post_type, 'comments' ) || post_type_supports( $screen->post_type, 'trackbacks' ) ) : + if ( $bulk ) : ?> + +
+ post_type, 'comments' ) ) : ?> + + post_type, 'trackbacks' ) ) : ?> + + +
+ + + +
+ post_type, 'comments' ) ) : ?> + + post_type, 'trackbacks' ) ) : ?> + + +
+ + + +
+ + + post_type && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?> + + + + + + + + + + + + + +
+ + post_type, 'post-formats' ) && current_theme_supports( 'post-formats' ) ) : + $post_formats = get_theme_support( 'post-formats' ); + if ( isset( $post_formats[0] ) && is_array( $post_formats[0] ) ) : + $all_post_formats = get_post_format_strings(); + unset( $all_post_formats['standard'] ); ?> +
+ +
+ + + +
+ + get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + if ( isset( $core_columns[$column_name] ) ) + continue; + do_action( $bulk ? 'bulk_edit_custom_box' : 'quick_edit_custom_box', $column_name, $screen->post_type ); + } + ?> +

+ + + + + 's' ) ); + } ?> + + + +
+

+
+ true ) ) ) ) + $post_type = 'post'; + + parent::__construct( array( + 'plural' => 'tags', + 'singular' => 'tag', + ) ); + } + + function ajax_user_can() { + global $tax; + + return current_user_can( $tax->cap->manage_terms ); + } + + function prepare_items() { + global $taxonomy; + + $tags_per_page = $this->get_items_per_page( 'edit_' . $taxonomy . '_per_page' ); + + if ( 'post_tag' == $taxonomy ) { + $tags_per_page = apply_filters( 'edit_tags_per_page', $tags_per_page ); + $tags_per_page = apply_filters( 'tagsperpage', $tags_per_page ); // Old filter + } elseif ( 'category' == $taxonomy ) { + $tags_per_page = apply_filters( 'edit_categories_per_page', $tags_per_page ); // Old filter + } + + $search = !empty( $_REQUEST['s'] ) ? trim( stripslashes( $_REQUEST['s'] ) ) : ''; + + $args = array( + 'search' => $search, + 'page' => $this->get_pagenum(), + 'number' => $tags_per_page, + ); + + if ( !empty( $_REQUEST['orderby'] ) ) + $args['orderby'] = trim( stripslashes( $_REQUEST['orderby'] ) ); + + if ( !empty( $_REQUEST['order'] ) ) + $args['order'] = trim( stripslashes( $_REQUEST['order'] ) ); + + $this->callback_args = $args; + + $this->set_pagination_args( array( + 'total_items' => wp_count_terms( $taxonomy, compact( 'search' ) ), + 'per_page' => $tags_per_page, + ) ); + } + + function has_items() { + // todo: populate $this->items in prepare_items() + return true; + } + + function get_bulk_actions() { + $actions = array(); + $actions['delete'] = __( 'Delete' ); + + return $actions; + } + + function current_action() { + if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['delete_tags'] ) && ( 'delete' == $_REQUEST['action'] || 'delete' == $_REQUEST['action2'] ) ) + return 'bulk-delete'; + + return parent::current_action(); + } + + function get_columns() { + global $taxonomy, $post_type; + + $columns = array( + 'cb' => '', + 'name' => _x( 'Name', 'term name' ), + 'description' => __( 'Description' ), + 'slug' => __( 'Slug' ), + ); + + if ( 'link_category' == $taxonomy ) { + $columns['links'] = __( 'Links' ); + } else { + $post_type_object = get_post_type_object( $post_type ); + $columns['posts'] = $post_type_object ? $post_type_object->labels->name : __( 'Posts' ); + } + + return $columns; + } + + function get_sortable_columns() { + return array( + 'name' => 'name', + 'description' => 'description', + 'slug' => 'slug', + 'posts' => 'count', + 'links' => 'count' + ); + } + + function display_rows_or_placeholder() { + global $taxonomy; + + $args = wp_parse_args( $this->callback_args, array( + 'page' => 1, + 'number' => 20, + 'search' => '', + 'hide_empty' => 0 + ) ); + + extract( $args, EXTR_SKIP ); + + $args['offset'] = $offset = ( $page - 1 ) * $number; + + // convert it to table rows + $out = ''; + $count = 0; + + $terms = array(); + + if ( is_taxonomy_hierarchical( $taxonomy ) && !isset( $orderby ) ) { + // We'll need the full set of terms then. + $args['number'] = $args['offset'] = 0; + + $terms = get_terms( $taxonomy, $args ); + if ( !empty( $search ) ) // Ignore children on searches. + $children = array(); + else + $children = _get_term_hierarchy( $taxonomy ); + + // Some funky recursion to get the job done( Paging & parents mainly ) is contained within, Skip it for non-hierarchical taxonomies for performance sake + $out .= $this->_rows( $taxonomy, $terms, $children, $offset, $number, $count ); + } else { + $terms = get_terms( $taxonomy, $args ); + foreach ( $terms as $term ) + $out .= $this->single_row( $term, 0, $taxonomy ); + $count = $number; // Only displaying a single page. + } + + if ( empty( $terms ) ) { + list( $columns, $hidden ) = $this->get_column_info(); + echo ''; + $this->no_items(); + echo ''; + } else { + echo $out; + } + } + + function _rows( $taxonomy, $terms, &$children, $start = 0, $per_page = 20, &$count, $parent = 0, $level = 0 ) { + + $end = $start + $per_page; + + $output = ''; + foreach ( $terms as $key => $term ) { + + if ( $count >= $end ) + break; + + if ( $term->parent != $parent && empty( $_REQUEST['s'] ) ) + continue; + + // If the page starts in a subtree, print the parents. + if ( $count == $start && $term->parent > 0 && empty( $_REQUEST['s'] ) ) { + $my_parents = $parent_ids = array(); + $p = $term->parent; + while ( $p ) { + $my_parent = get_term( $p, $taxonomy ); + $my_parents[] = $my_parent; + $p = $my_parent->parent; + if ( in_array( $p, $parent_ids ) ) // Prevent parent loops. + break; + $parent_ids[] = $p; + } + unset( $parent_ids ); + + $num_parents = count( $my_parents ); + while ( $my_parent = array_pop( $my_parents ) ) { + $output .= "\t" . $this->single_row( $my_parent, $level - $num_parents, $taxonomy ); + $num_parents--; + } + } + + if ( $count >= $start ) + $output .= "\t" . $this->single_row( $term, $level, $taxonomy ); + + ++$count; + + unset( $terms[$key] ); + + if ( isset( $children[$term->term_id] ) && empty( $_REQUEST['s'] ) ) + $output .= $this->_rows( $taxonomy, $terms, $children, $start, $per_page, $count, $term->term_id, $level + 1 ); + } + + return $output; + } + + function single_row( $tag, $level = 0 ) { + static $row_class = ''; + $row_class = ( $row_class == '' ? ' class="alternate"' : '' ); + + $this->level = $level; + + echo ''; + echo $this->single_row_columns( $tag ); + echo ''; + } + + function column_cb( $tag ) { + global $taxonomy, $tax; + + $default_term = get_option( 'default_' . $taxonomy ); + + if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term ) + return ''; + else + return ' '; + } + + function column_name( $tag ) { + global $taxonomy, $tax, $post_type; + + $default_term = get_option( 'default_' . $taxonomy ); + + $pad = str_repeat( '— ', max( 0, $this->level ) ); + $name = apply_filters( 'term_name', $pad . ' ' . $tag->name, $tag ); + $qe_data = get_term( $tag->term_id, $taxonomy, OBJECT, 'edit' ); + $edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $post_type ) ); + + $out = '' . $name . '
'; + + $actions = array(); + if ( current_user_can( $tax->cap->edit_terms ) ) { + $actions['edit'] = '' . __( 'Edit' ) . ''; + $actions['inline hide-if-no-js'] = '' . __( 'Quick Edit' ) . ''; + } + if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term ) + $actions['delete'] = "term_id ) . "'>" . __( 'Delete' ) . ""; + $actions['view'] = '' . __( 'View' ) . ''; + + $actions = apply_filters( 'tag_row_actions', $actions, $tag ); + $actions = apply_filters( "{$taxonomy}_row_actions", $actions, $tag ); + + $out .= $this->row_actions( $actions ); + $out .= ''; + + return $out; + } + + function column_description( $tag ) { + return $tag->description; + } + + function column_slug( $tag ) { + return apply_filters( 'editable_slug', $tag->slug ); + } + + function column_posts( $tag ) { + global $taxonomy, $post_type; + + $count = number_format_i18n( $tag->count ); + + $tax = get_taxonomy( $taxonomy ); + + $ptype_object = get_post_type_object( $post_type ); + if ( ! $ptype_object->show_ui ) + return $count; + + if ( $tax->query_var ) { + $args = array( $tax->query_var => $tag->slug ); + } else { + $args = array( 'taxonomy' => $tax->name, 'term' => $tag->slug ); + } + + if ( 'post' != $post_type ) + $args['post_type'] = $post_type; + + return "$count"; + } + + function column_links( $tag ) { + $count = number_format_i18n( $tag->count ); + if ( $count ) + $count = "$count"; + return $count; + } + + function column_default( $tag, $column_name ) { + $screen = get_current_screen(); + + return apply_filters( "manage_{$screen->taxonomy}_custom_column", '', $column_name, $tag->term_id ); + } + + /** + * Outputs the hidden row displayed when inline editing + * + * @since 3.1.0 + */ + function inline_edit() { + global $post_type, $tax; + + if ( ! current_user_can( $tax->cap->edit_terms ) ) + return; +?> + +
+ +
+ features = $_REQUEST['features']; + + $paged = $this->get_pagenum(); + + $per_page = 36; + + // These are the tabs which are shown on the page, + $tabs = array(); + $tabs['dashboard'] = __( 'Search' ); + if ( 'search' == $tab ) + $tabs['search'] = __( 'Search Results' ); + $tabs['upload'] = __( 'Upload' ); + $tabs['featured'] = _x( 'Featured','Theme Installer' ); + //$tabs['popular'] = _x( 'Popular','Theme Installer' ); + $tabs['new'] = _x( 'Newest','Theme Installer' ); + $tabs['updated'] = _x( 'Recently Updated','Theme Installer' ); + + $nonmenu_tabs = array( 'theme-information' ); // Valid actions to perform which do not have a Menu item. + + $tabs = apply_filters( 'install_themes_tabs', $tabs ); + $nonmenu_tabs = apply_filters( 'install_themes_nonmenu_tabs', $nonmenu_tabs ); + + // If a non-valid menu tab has been selected, And its not a non-menu action. + if ( empty( $tab ) || ( ! isset( $tabs[ $tab ] ) && ! in_array( $tab, (array) $nonmenu_tabs ) ) ) + $tab = key( $tabs ); + + $args = array( 'page' => $paged, 'per_page' => $per_page, 'fields' => $theme_field_defaults ); + + switch ( $tab ) { + case 'search': + $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : 'term'; + switch ( $type ) { + case 'tag': + $args['tag'] = array_map( 'sanitize_key', $search_terms ); + break; + case 'term': + $args['search'] = $search_string; + break; + case 'author': + $args['author'] = $search_string; + break; + } + + if ( ! empty( $this->features ) ) { + $args['tag'] = $this->features; + $_REQUEST['s'] = implode( ',', $this->features ); + $_REQUEST['type'] = 'tag'; + } + + add_action( 'install_themes_table_header', 'install_theme_search_form', 10, 0 ); + break; + + case 'featured': + //case 'popular': + case 'new': + case 'updated': + $args['browse'] = $tab; + break; + + default: + $args = false; + } + + if ( ! $args ) + return; + + $api = themes_api( 'query_themes', $args ); + + if ( is_wp_error( $api ) ) + wp_die( $api->get_error_message() . '

' . __( 'Try again' ) . '' ); + + $this->items = $api->themes; + + $this->set_pagination_args( array( + 'total_items' => $api->info['results'], + 'per_page' => $per_page, + 'infinite_scroll' => true, + ) ); + } + + function no_items() { + _e( 'No themes match your request.' ); + } + + function get_views() { + global $tabs, $tab; + + $display_tabs = array(); + foreach ( (array) $tabs as $action => $text ) { + $class = ( $action == $tab ) ? ' class="current"' : ''; + $href = self_admin_url('theme-install.php?tab=' . $action); + $display_tabs['theme-install-'.$action] = "$text"; + } + + return $display_tabs; + } + + function display() { + wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); +?> +

+
+ +
+ pagination( 'top' ); ?> + +
+
+ +
+ display_rows_or_placeholder(); ?> +
+ + items; + foreach ( $themes as $theme ) { + ?> +
single_row( $theme ); + ?>
+ theme_installer(); + } + + /* + * Prints a theme from the WordPress.org API. + * + * @param object $theme An object that contains theme data returned by the WordPress.org API. + * + * Example theme data: + * object(stdClass)[59] + * public 'name' => string 'Magazine Basic' (length=14) + * public 'slug' => string 'magazine-basic' (length=14) + * public 'version' => string '1.1' (length=3) + * public 'author' => string 'tinkerpriest' (length=12) + * public 'preview_url' => string 'http://wp-themes.com/?magazine-basic' (length=36) + * public 'screenshot_url' => string 'http://wp-themes.com/wp-content/themes/magazine-basic/screenshot.png' (length=68) + * public 'rating' => float 80 + * public 'num_ratings' => int 1 + * public 'homepage' => string 'http://wordpress.org/extend/themes/magazine-basic' (length=49) + * public 'description' => string 'A basic magazine style layout with a fully customizable layout through a backend interface. Designed by c.bavota of Tinker Priest Media.' (length=214) + * public 'download_link' => string 'http://wordpress.org/extend/themes/download/magazine-basic.1.1.zip' (length=66) + */ + function single_row( $theme ) { + global $themes_allowedtags; + + if ( empty( $theme ) ) + return; + + $name = wp_kses( $theme->name, $themes_allowedtags ); + $author = wp_kses( $theme->author, $themes_allowedtags ); + + $preview_title = sprintf( __('Preview “%s”'), $name ); + $preview_url = add_query_arg( array( + 'tab' => 'theme-information', + 'theme' => $theme->slug, + ) ); + + $actions = array(); + + $install_url = add_query_arg( array( + 'action' => 'install-theme', + 'theme' => $theme->slug, + ), self_admin_url( 'update.php' ) ); + + $update_url = add_query_arg( array( + 'action' => 'upgrade-theme', + 'theme' => $theme->slug, + ), self_admin_url( 'update.php' ) ); + + $status = $this->_get_theme_status( $theme ); + + switch ( $status ) { + default: + case 'install': + $actions[] = '' . __( 'Install Now' ) . ''; + break; + case 'update_available': + $actions[] = '' . __( 'Update' ) . ''; + break; + case 'newer_installed': + case 'latest_installed': + $actions[] = '' . _x( 'Installed', 'theme' ) . ''; + break; + } + + $actions[] = '' . __( 'Preview' ) . ''; + + $actions = apply_filters( 'theme_install_actions', $actions, $theme ); + + ?> + + + + +

+
+ + + + install_theme_info( $theme ); + } + + /* + * Prints the wrapper for the theme installer. + */ + function theme_installer() { + ?> +
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+ install_theme_info( $theme ); ?> +
+
+ +
+
+ name, $themes_allowedtags ); + $author = wp_kses( $theme->author, $themes_allowedtags ); + + $num_ratings = sprintf( _n( '(based on %s rating)', '(based on %s ratings)', $theme->num_ratings ), number_format_i18n( $theme->num_ratings ) ); + + $install_url = add_query_arg( array( + 'action' => 'install-theme', + 'theme' => $theme->slug, + ), self_admin_url( 'update.php' ) ); + + $update_url = add_query_arg( array( + 'action' => 'upgrade-theme', + 'theme' => $theme->slug, + ), self_admin_url( 'update.php' ) ); + + $status = $this->_get_theme_status( $theme ); + + ?> +
slug ) ) . '">' . __( 'Install' ) . ''; + break; + case 'update_available': + echo '' . __( 'Update' ) . ''; + break; + case 'newer_installed': + case 'latest_installed': + echo '' . _x( 'Installed', 'theme' ) . ''; + break; + } ?> +

+ + screenshot_url ) ): ?> + + +
+
+
+
+
+ + version, $themes_allowedtags ); ?> +
+
+ description, $themes_allowedtags ); ?> +
+
+ +
+ Install screen + * @uses $type Global; type of search. + */ + function _js_vars() { + global $tab, $type; + parent::_js_vars( compact( 'tab', 'type' ) ); + } + + /** + * Check to see if the theme is already installed. + * + * @since 3.4 + * @access private + * + * @param object $theme - A WordPress.org Theme API object. + * @return string Theme status. + */ + private function _get_theme_status( $theme ) { + $status = 'install'; + + $installed_theme = wp_get_theme( $theme->slug ); + if ( $installed_theme->exists() ) { + if ( version_compare( $installed_theme->get('Version'), $theme->version, '=' ) ) + $status = 'latest_installed'; + elseif ( version_compare( $installed_theme->get('Version'), $theme->version, '>' ) ) + $status = 'newer_installed'; + else + $status = 'update_available'; + } + + return $status; + } +} diff --git a/wp-admin/includes/class-wp-themes-list-table.php b/wp-admin/includes/class-wp-themes-list-table.php new file mode 100644 index 0000000..003d1ab --- /dev/null +++ b/wp-admin/includes/class-wp-themes-list-table.php @@ -0,0 +1,256 @@ + true, + ) ); + } + + function ajax_user_can() { + // Do not check edit_theme_options here. AJAX calls for available themes require switch_themes. + return current_user_can( 'switch_themes' ); + } + + function prepare_items() { + $themes = wp_get_themes( array( 'allowed' => true ) ); + + if ( ! empty( $_REQUEST['s'] ) ) + $this->search_terms = array_unique( array_filter( array_map( 'trim', explode( ',', strtolower( stripslashes( $_REQUEST['s'] ) ) ) ) ) ); + + if ( ! empty( $_REQUEST['features'] ) ) + $this->features = $_REQUEST['features']; + + if ( $this->search_terms || $this->features ) { + foreach ( $themes as $key => $theme ) { + if ( ! $this->search_theme( $theme ) ) + unset( $themes[ $key ] ); + } + } + + unset( $themes[ get_option( 'stylesheet' ) ] ); + WP_Theme::sort_by_name( $themes ); + + $per_page = 999; + $page = $this->get_pagenum(); + + $start = ( $page - 1 ) * $per_page; + + $this->items = array_slice( $themes, $start, $per_page, true ); + + $this->set_pagination_args( array( + 'total_items' => count( $themes ), + 'per_page' => $per_page, + 'infinite_scroll' => true, + ) ); + } + + function no_items() { + if ( $this->search_terms || $this->features ) { + _e( 'No items found.' ); + return; + } + + if ( is_multisite() ) { + if ( current_user_can( 'install_themes' ) && current_user_can( 'manage_network_themes' ) ) { + printf( __( 'You only have one theme enabled for this site right now. Visit the Network Admin to enable or install more themes.' ), network_admin_url( 'site-themes.php?id=' . $GLOBALS['blog_id'] ), network_admin_url( 'theme-install.php' ) ); + + return; + } elseif ( current_user_can( 'manage_network_themes' ) ) { + printf( __( 'You only have one theme enabled for this site right now. Visit the Network Admin to enable more themes.' ), network_admin_url( 'site-themes.php?id=' . $GLOBALS['blog_id'] ) ); + + return; + } + // else, fallthrough. install_themes doesn't help if you can't enable it. + } else { + if ( current_user_can( 'install_themes' ) ) { + printf( __( 'You only have one theme installed right now. Live a little! You can choose from over 1,000 free themes in the WordPress.org Theme Directory at any time: just click on the Install Themes tab above.' ), admin_url( 'theme-install.php' ) ); + + return; + } + } + // Fallthrough. + printf( __( 'Only the current theme is available to you. Contact the %s administrator for information about accessing additional themes.' ), get_site_option( 'site_name' ) ); + } + + function tablenav( $which = 'top' ) { + if ( $this->get_pagination_arg( 'total_pages' ) <= 1 ) + return; + ?> +
+ pagination( $which ); ?> + +
+
+ + tablenav( 'top' ); ?> + +
+ display_rows_or_placeholder(); ?> +
+ + tablenav( 'bottom' ); ?> +items; + + foreach ( $themes as $theme ): + ?>
get_template(); + $stylesheet = $theme->get_stylesheet(); + $title = $theme->display('Name'); + $version = $theme->display('Version'); + $author = $theme->display('Author'); + + $activate_link = wp_nonce_url( "themes.php?action=activate&template=" . urlencode( $template ) . "&stylesheet=" . urlencode( $stylesheet ), 'switch-theme_' . $stylesheet ); + + $preview_link = esc_url( add_query_arg( + array( 'preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => true, 'TB_iframe' => 'true' ), + home_url( '/' ) ) ); + + $actions = array(); + $actions['activate'] = '' . __( 'Activate' ) . ''; + + $actions['preview'] = '' . __( 'Preview' ) . ''; + + if ( current_user_can( 'edit_theme_options' ) ) + $actions['preview'] .= '' + . __( 'Live Preview' ) . ''; + + if ( ! is_multisite() && current_user_can( 'delete_themes' ) ) + $actions['delete'] = '' . __( 'Delete' ) . ''; + + $actions = apply_filters( 'theme_action_links', $actions, $theme ); + $delete_action = isset( $actions['delete'] ) ? '
' . $actions['delete'] . '
' : ''; + unset( $actions['delete'] ); + + ?> + + + get_screenshot() ) : ?> + + + + + get_screenshot() ) : ?> + + + + +

+
+ + +
+

+

display('Description'); ?>

+ parent() ) : + /* translators: 1: theme title, 2: template dir, 3: stylesheet_dir, 4: theme title, 5: parent_theme */ ?> +

%2$s. The stylesheet files are located in %3$s. %4$s uses templates from %5$s. Changes made to the templates will affect both themes.' ), + $title, str_replace( WP_CONTENT_DIR, '', $theme->get_template_directory() ), str_replace( WP_CONTENT_DIR, '', $theme->get_stylesheet_directory() ), $title, $theme->parent()->display('Name') ); ?>

+ +

%2$s.' ), + $title, str_replace( WP_CONTENT_DIR, '', $theme->get_template_directory() ), str_replace( WP_CONTENT_DIR, '', $theme->get_stylesheet_directory() ) ); ?>

+ +
+ +
+ features as $word ) { + if ( ! in_array( $word, $theme->get('Tags') ) ) + return false; + } + + // Match all phrases + foreach ( $this->search_terms as $word ) { + if ( in_array( $word, $theme->get('Tags') ) ) + continue; + + foreach ( array( 'Name', 'Description', 'Author', 'AuthorURI' ) as $header ) { + // Don't mark up; Do translate. + if ( false !== stripos( $theme->display( $header, false, true ), $word ) ) + continue 2; + } + + if ( false !== stripos( $theme->get_stylesheet(), $word ) ) + continue; + + if ( false !== stripos( $theme->get_template(), $word ) ) + continue; + + return false; + } + + return true; + } + + /** + * Send required variables to JavaScript land + * + * @since 3.4 + * @access private + * + * @uses $this->features Array of all feature search terms. + * @uses get_pagenum() + * @uses _pagination_args['total_pages'] + */ + function _js_vars( $extra_args = array() ) { + $search_string = isset( $_REQUEST['s'] ) ? esc_attr( stripslashes( $_REQUEST['s'] ) ) : ''; + + $args = array( + 'search' => $search_string, + 'features' => $this->features, + 'paged' => $this->get_pagenum(), + 'total_pages' => ! empty( $this->_pagination_args['total_pages'] ) ? $this->_pagination_args['total_pages'] : 1, + ); + + if ( is_array( $extra_args ) ) + $args = array_merge( $args, $extra_args ); + + printf( "\n", json_encode( $args ) ); + parent::_js_vars(); + } +} diff --git a/wp-admin/includes/class-wp-upgrader.php b/wp-admin/includes/class-wp-upgrader.php new file mode 100644 index 0000000..c70ef66 --- /dev/null +++ b/wp-admin/includes/class-wp-upgrader.php @@ -0,0 +1,1679 @@ +skin = new WP_Upgrader_Skin(); + else + $this->skin = $skin; + } + + function init() { + $this->skin->set_upgrader($this); + $this->generic_strings(); + } + + function generic_strings() { + $this->strings['bad_request'] = __('Invalid Data provided.'); + $this->strings['fs_unavailable'] = __('Could not access filesystem.'); + $this->strings['fs_error'] = __('Filesystem error.'); + $this->strings['fs_no_root_dir'] = __('Unable to locate WordPress Root directory.'); + $this->strings['fs_no_content_dir'] = __('Unable to locate WordPress Content directory (wp-content).'); + $this->strings['fs_no_plugins_dir'] = __('Unable to locate WordPress Plugin directory.'); + $this->strings['fs_no_themes_dir'] = __('Unable to locate WordPress Theme directory.'); + /* translators: %s: directory name */ + $this->strings['fs_no_folder'] = __('Unable to locate needed folder (%s).'); + + $this->strings['download_failed'] = __('Download failed.'); + $this->strings['installing_package'] = __('Installing the latest version…'); + $this->strings['folder_exists'] = __('Destination folder already exists.'); + $this->strings['mkdir_failed'] = __('Could not create directory.'); + $this->strings['incompatible_archive'] = __('The package could not be installed.'); + + $this->strings['maintenance_start'] = __('Enabling Maintenance mode…'); + $this->strings['maintenance_end'] = __('Disabling Maintenance mode…'); + } + + function fs_connect( $directories = array() ) { + global $wp_filesystem; + + if ( false === ($credentials = $this->skin->request_filesystem_credentials()) ) + return false; + + if ( ! WP_Filesystem($credentials) ) { + $error = true; + if ( is_object($wp_filesystem) && $wp_filesystem->errors->get_error_code() ) + $error = $wp_filesystem->errors; + $this->skin->request_filesystem_credentials($error); //Failed to connect, Error and request again + return false; + } + + if ( ! is_object($wp_filesystem) ) + return new WP_Error('fs_unavailable', $this->strings['fs_unavailable'] ); + + if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) + return new WP_Error('fs_error', $this->strings['fs_error'], $wp_filesystem->errors); + + foreach ( (array)$directories as $dir ) { + switch ( $dir ) { + case ABSPATH: + if ( ! $wp_filesystem->abspath() ) + return new WP_Error('fs_no_root_dir', $this->strings['fs_no_root_dir']); + break; + case WP_CONTENT_DIR: + if ( ! $wp_filesystem->wp_content_dir() ) + return new WP_Error('fs_no_content_dir', $this->strings['fs_no_content_dir']); + break; + case WP_PLUGIN_DIR: + if ( ! $wp_filesystem->wp_plugins_dir() ) + return new WP_Error('fs_no_plugins_dir', $this->strings['fs_no_plugins_dir']); + break; + case WP_CONTENT_DIR . '/themes': + if ( ! $wp_filesystem->find_folder(WP_CONTENT_DIR . '/themes') ) + return new WP_Error('fs_no_themes_dir', $this->strings['fs_no_themes_dir']); + break; + default: + if ( ! $wp_filesystem->find_folder($dir) ) + return new WP_Error('fs_no_folder', sprintf($this->strings['fs_no_folder'], $dir)); + break; + } + } + return true; + } //end fs_connect(); + + function download_package($package) { + + if ( ! preg_match('!^(http|https|ftp)://!i', $package) && file_exists($package) ) //Local file or remote? + return $package; //must be a local file.. + + if ( empty($package) ) + return new WP_Error('no_package', $this->strings['no_package']); + + $this->skin->feedback('downloading_package', $package); + + $download_file = download_url($package); + + if ( is_wp_error($download_file) ) + return new WP_Error('download_failed', $this->strings['download_failed'], $download_file->get_error_message()); + + return $download_file; + } + + function unpack_package($package, $delete_package = true) { + global $wp_filesystem; + + $this->skin->feedback('unpack_package'); + + $upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/'; + + //Clean up contents of upgrade directory beforehand. + $upgrade_files = $wp_filesystem->dirlist($upgrade_folder); + if ( !empty($upgrade_files) ) { + foreach ( $upgrade_files as $file ) + $wp_filesystem->delete($upgrade_folder . $file['name'], true); + } + + //We need a working directory + $working_dir = $upgrade_folder . basename($package, '.zip'); + + // Clean up working directory + if ( $wp_filesystem->is_dir($working_dir) ) + $wp_filesystem->delete($working_dir, true); + + // Unzip package to working directory + $result = unzip_file($package, $working_dir); //TODO optimizations, Copy when Move/Rename would suffice? + + // Once extracted, delete the package if required. + if ( $delete_package ) + unlink($package); + + if ( is_wp_error($result) ) { + $wp_filesystem->delete($working_dir, true); + if ( 'incompatible_archive' == $result->get_error_code() ) { + return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], $result->get_error_data() ); + } + return $result; + } + + return $working_dir; + } + + function install_package($args = array()) { + global $wp_filesystem; + $defaults = array( 'source' => '', 'destination' => '', //Please always pass these + 'clear_destination' => false, 'clear_working' => false, + 'hook_extra' => array()); + + $args = wp_parse_args($args, $defaults); + extract($args); + + @set_time_limit( 300 ); + + if ( empty($source) || empty($destination) ) + return new WP_Error('bad_request', $this->strings['bad_request']); + + $this->skin->feedback('installing_package'); + + $res = apply_filters('upgrader_pre_install', true, $hook_extra); + if ( is_wp_error($res) ) + return $res; + + //Retain the Original source and destinations + $remote_source = $source; + $local_destination = $destination; + + $source_files = array_keys( $wp_filesystem->dirlist($remote_source) ); + $remote_destination = $wp_filesystem->find_folder($local_destination); + + //Locate which directory to copy to the new folder, This is based on the actual folder holding the files. + if ( 1 == count($source_files) && $wp_filesystem->is_dir( trailingslashit($source) . $source_files[0] . '/') ) //Only one folder? Then we want its contents. + $source = trailingslashit($source) . trailingslashit($source_files[0]); + elseif ( count($source_files) == 0 ) + return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __( 'The plugin contains no files.' ) ); //There are no files? + else //Its only a single file, The upgrader will use the foldername of this file as the destination folder. foldername is based on zip filename. + $source = trailingslashit($source); + + //Hook ability to change the source file location.. + $source = apply_filters('upgrader_source_selection', $source, $remote_source, $this); + if ( is_wp_error($source) ) + return $source; + + //Has the source location changed? If so, we need a new source_files list. + if ( $source !== $remote_source ) + $source_files = array_keys( $wp_filesystem->dirlist($source) ); + + //Protection against deleting files in any important base directories. + if ( in_array( $destination, array(ABSPATH, WP_CONTENT_DIR, WP_PLUGIN_DIR, WP_CONTENT_DIR . '/themes') ) ) { + $remote_destination = trailingslashit($remote_destination) . trailingslashit(basename($source)); + $destination = trailingslashit($destination) . trailingslashit(basename($source)); + } + + if ( $clear_destination ) { + //We're going to clear the destination if there's something there + $this->skin->feedback('remove_old'); + $removed = true; + if ( $wp_filesystem->exists($remote_destination) ) + $removed = $wp_filesystem->delete($remote_destination, true); + $removed = apply_filters('upgrader_clear_destination', $removed, $local_destination, $remote_destination, $hook_extra); + + if ( is_wp_error($removed) ) + return $removed; + else if ( ! $removed ) + return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']); + } elseif ( $wp_filesystem->exists($remote_destination) ) { + //If we're not clearing the destination folder and something exists there already, Bail. + //But first check to see if there are actually any files in the folder. + $_files = $wp_filesystem->dirlist($remote_destination); + if ( ! empty($_files) ) { + $wp_filesystem->delete($remote_source, true); //Clear out the source files. + return new WP_Error('folder_exists', $this->strings['folder_exists'], $remote_destination ); + } + } + + //Create destination if needed + if ( !$wp_filesystem->exists($remote_destination) ) + if ( !$wp_filesystem->mkdir($remote_destination, FS_CHMOD_DIR) ) + return new WP_Error('mkdir_failed', $this->strings['mkdir_failed'], $remote_destination); + + // Copy new version of item into place. + $result = copy_dir($source, $remote_destination); + if ( is_wp_error($result) ) { + if ( $clear_working ) + $wp_filesystem->delete($remote_source, true); + return $result; + } + + //Clear the Working folder? + if ( $clear_working ) + $wp_filesystem->delete($remote_source, true); + + $destination_name = basename( str_replace($local_destination, '', $destination) ); + if ( '.' == $destination_name ) + $destination_name = ''; + + $this->result = compact('local_source', 'source', 'source_name', 'source_files', 'destination', 'destination_name', 'local_destination', 'remote_destination', 'clear_destination', 'delete_source_dir'); + + $res = apply_filters('upgrader_post_install', true, $hook_extra, $this->result); + if ( is_wp_error($res) ) { + $this->result = $res; + return $res; + } + + //Bombard the calling function will all the info which we've just used. + return $this->result; + } + + function run($options) { + + $defaults = array( 'package' => '', //Please always pass this. + 'destination' => '', //And this + 'clear_destination' => false, + 'clear_working' => true, + 'is_multi' => false, + 'hook_extra' => array() //Pass any extra $hook_extra args here, this will be passed to any hooked filters. + ); + + $options = wp_parse_args($options, $defaults); + extract($options); + + //Connect to the Filesystem first. + $res = $this->fs_connect( array(WP_CONTENT_DIR, $destination) ); + if ( ! $res ) //Mainly for non-connected filesystem. + return false; + + if ( is_wp_error($res) ) { + $this->skin->error($res); + return $res; + } + + if ( !$is_multi ) // call $this->header separately if running multiple times + $this->skin->header(); + + $this->skin->before(); + + //Download the package (Note, This just returns the filename of the file if the package is a local file) + $download = $this->download_package( $package ); + if ( is_wp_error($download) ) { + $this->skin->error($download); + $this->skin->after(); + return $download; + } + + $delete_package = ($download != $package); // Do not delete a "local" file + + //Unzips the file into a temporary directory + $working_dir = $this->unpack_package( $download, $delete_package ); + if ( is_wp_error($working_dir) ) { + $this->skin->error($working_dir); + $this->skin->after(); + return $working_dir; + } + + //With the given options, this installs it to the destination directory. + $result = $this->install_package( array( + 'source' => $working_dir, + 'destination' => $destination, + 'clear_destination' => $clear_destination, + 'clear_working' => $clear_working, + 'hook_extra' => $hook_extra + ) ); + $this->skin->set_result($result); + if ( is_wp_error($result) ) { + $this->skin->error($result); + $this->skin->feedback('process_failed'); + } else { + //Install Succeeded + $this->skin->feedback('process_success'); + } + $this->skin->after(); + + if ( !$is_multi ) + $this->skin->footer(); + + return $result; + } + + function maintenance_mode($enable = false) { + global $wp_filesystem; + $file = $wp_filesystem->abspath() . '.maintenance'; + if ( $enable ) { + $this->skin->feedback('maintenance_start'); + // Create maintenance file to signal that we are upgrading + $maintenance_string = ''; + $wp_filesystem->delete($file); + $wp_filesystem->put_contents($file, $maintenance_string, FS_CHMOD_FILE); + } else if ( !$enable && $wp_filesystem->exists($file) ) { + $this->skin->feedback('maintenance_end'); + $wp_filesystem->delete($file); + } + } + +} + +/** + * Plugin Upgrader class for WordPress Plugins, It is designed to upgrade/install plugins from a local zip, remote zip URL, or uploaded zip file. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Plugin_Upgrader extends WP_Upgrader { + + var $result; + var $bulk = false; + var $show_before = ''; + + function upgrade_strings() { + $this->strings['up_to_date'] = __('The plugin is at the latest version.'); + $this->strings['no_package'] = __('Update package not available.'); + $this->strings['downloading_package'] = __('Downloading update from %s…'); + $this->strings['unpack_package'] = __('Unpacking the update…'); + $this->strings['remove_old'] = __('Removing the old version of the plugin…'); + $this->strings['remove_old_failed'] = __('Could not remove the old plugin.'); + $this->strings['process_failed'] = __('Plugin update failed.'); + $this->strings['process_success'] = __('Plugin updated successfully.'); + } + + function install_strings() { + $this->strings['no_package'] = __('Install package not available.'); + $this->strings['downloading_package'] = __('Downloading install package from %s…'); + $this->strings['unpack_package'] = __('Unpacking the package…'); + $this->strings['installing_package'] = __('Installing the plugin…'); + $this->strings['process_failed'] = __('Plugin install failed.'); + $this->strings['process_success'] = __('Plugin installed successfully.'); + } + + function install($package) { + + $this->init(); + $this->install_strings(); + + add_filter('upgrader_source_selection', array(&$this, 'check_package') ); + + $this->run(array( + 'package' => $package, + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => false, //Do not overwrite files. + 'clear_working' => true, + 'hook_extra' => array() + )); + + remove_filter('upgrader_source_selection', array(&$this, 'check_package') ); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + // Force refresh of plugin update information + delete_site_transient('update_plugins'); + wp_cache_delete( 'plugins', 'plugins' ); + + return true; + } + + function upgrade($plugin) { + + $this->init(); + $this->upgrade_strings(); + + $current = get_site_transient( 'update_plugins' ); + if ( !isset( $current->response[ $plugin ] ) ) { + $this->skin->before(); + $this->skin->set_result(false); + $this->skin->error('up_to_date'); + $this->skin->after(); + return false; + } + + // Get the URL to the zip file + $r = $current->response[ $plugin ]; + + add_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade'), 10, 2); + add_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'), 10, 4); + //'source_selection' => array(&$this, 'source_selection'), //there's a trac ticket to move up the directory for zip's which are made a bit differently, useful for non-.org plugins. + + $this->run(array( + 'package' => $r->package, + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => true, + 'clear_working' => true, + 'hook_extra' => array( + 'plugin' => $plugin + ) + )); + + // Cleanup our hooks, in case something else does a upgrade on this connection. + remove_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade')); + remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin')); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + // Force refresh of plugin update information + delete_site_transient('update_plugins'); + wp_cache_delete( 'plugins', 'plugins' ); + } + + function bulk_upgrade($plugins) { + + $this->init(); + $this->bulk = true; + $this->upgrade_strings(); + + $current = get_site_transient( 'update_plugins' ); + + add_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'), 10, 4); + + $this->skin->header(); + + // Connect to the Filesystem first. + $res = $this->fs_connect( array(WP_CONTENT_DIR, WP_PLUGIN_DIR) ); + if ( ! $res ) { + $this->skin->footer(); + return false; + } + + $this->skin->bulk_header(); + + // Only start maintenance mode if running in Multisite OR the plugin is in use + $maintenance = is_multisite(); // @TODO: This should only kick in for individual sites if at all possible. + foreach ( $plugins as $plugin ) + $maintenance = $maintenance || (is_plugin_active($plugin) && isset($current->response[ $plugin ]) ); // Only activate Maintenance mode if a plugin is active AND has an update available + if ( $maintenance ) + $this->maintenance_mode(true); + + $results = array(); + + $this->update_count = count($plugins); + $this->update_current = 0; + foreach ( $plugins as $plugin ) { + $this->update_current++; + $this->skin->plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin, false, true); + + if ( !isset( $current->response[ $plugin ] ) ) { + $this->skin->set_result(false); + $this->skin->before(); + $this->skin->error('up_to_date'); + $this->skin->after(); + $results[$plugin] = false; + continue; + } + + // Get the URL to the zip file + $r = $current->response[ $plugin ]; + + $this->skin->plugin_active = is_plugin_active($plugin); + + $result = $this->run(array( + 'package' => $r->package, + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => true, + 'clear_working' => true, + 'is_multi' => true, + 'hook_extra' => array( + 'plugin' => $plugin + ) + )); + + $results[$plugin] = $this->result; + + // Prevent credentials auth screen from displaying multiple times + if ( false === $result ) + break; + } //end foreach $plugins + + $this->maintenance_mode(false); + + $this->skin->bulk_footer(); + + $this->skin->footer(); + + // Cleanup our hooks, in case something else does a upgrade on this connection. + remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin')); + + // Force refresh of plugin update information + delete_site_transient('update_plugins'); + wp_cache_delete( 'plugins', 'plugins' ); + + return $results; + } + + function check_package($source) { + global $wp_filesystem; + + if ( is_wp_error($source) ) + return $source; + + $working_directory = str_replace( $wp_filesystem->wp_content_dir(), trailingslashit(WP_CONTENT_DIR), $source); + if ( ! is_dir($working_directory) ) // Sanity check, if the above fails, lets not prevent installation. + return $source; + + // Check the folder contains at least 1 valid plugin. + $plugins_found = false; + foreach ( glob( $working_directory . '*.php' ) as $file ) { + $info = get_plugin_data($file, false, false); + if ( !empty( $info['Name'] ) ) { + $plugins_found = true; + break; + } + } + + if ( ! $plugins_found ) + return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __('No valid plugins were found.') ); + + return $source; + } + + //return plugin info. + function plugin_info() { + if ( ! is_array($this->result) ) + return false; + if ( empty($this->result['destination_name']) ) + return false; + + $plugin = get_plugins('/' . $this->result['destination_name']); //Ensure to pass with leading slash + if ( empty($plugin) ) + return false; + + $pluginfiles = array_keys($plugin); //Assume the requested plugin is the first in the list + + return $this->result['destination_name'] . '/' . $pluginfiles[0]; + } + + //Hooked to pre_install + function deactivate_plugin_before_upgrade($return, $plugin) { + + if ( is_wp_error($return) ) //Bypass. + return $return; + + $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : ''; + if ( empty($plugin) ) + return new WP_Error('bad_request', $this->strings['bad_request']); + + if ( is_plugin_active($plugin) ) { + //Deactivate the plugin silently, Prevent deactivation hooks from running. + deactivate_plugins($plugin, true); + } + } + + //Hooked to upgrade_clear_destination + function delete_old_plugin($removed, $local_destination, $remote_destination, $plugin) { + global $wp_filesystem; + + if ( is_wp_error($removed) ) + return $removed; //Pass errors through. + + $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : ''; + if ( empty($plugin) ) + return new WP_Error('bad_request', $this->strings['bad_request']); + + $plugins_dir = $wp_filesystem->wp_plugins_dir(); + $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin) ); + + if ( ! $wp_filesystem->exists($this_plugin_dir) ) //If its already vanished. + return $removed; + + // If plugin is in its own directory, recursively delete the directory. + if ( strpos($plugin, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory separator AND that its not the root plugin folder + $deleted = $wp_filesystem->delete($this_plugin_dir, true); + else + $deleted = $wp_filesystem->delete($plugins_dir . $plugin); + + if ( ! $deleted ) + return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']); + + return true; + } +} + +/** + * Theme Upgrader class for WordPress Themes, It is designed to upgrade/install themes from a local zip, remote zip URL, or uploaded zip file. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Theme_Upgrader extends WP_Upgrader { + + var $result; + var $bulk = false; + + function upgrade_strings() { + $this->strings['up_to_date'] = __('The theme is at the latest version.'); + $this->strings['no_package'] = __('Update package not available.'); + $this->strings['downloading_package'] = __('Downloading update from %s…'); + $this->strings['unpack_package'] = __('Unpacking the update…'); + $this->strings['remove_old'] = __('Removing the old version of the theme…'); + $this->strings['remove_old_failed'] = __('Could not remove the old theme.'); + $this->strings['process_failed'] = __('Theme update failed.'); + $this->strings['process_success'] = __('Theme updated successfully.'); + } + + function install_strings() { + $this->strings['no_package'] = __('Install package not available.'); + $this->strings['downloading_package'] = __('Downloading install package from %s…'); + $this->strings['unpack_package'] = __('Unpacking the package…'); + $this->strings['installing_package'] = __('Installing the theme…'); + $this->strings['process_failed'] = __('Theme install failed.'); + $this->strings['process_success'] = __('Theme installed successfully.'); + /* translators: 1: theme name, 2: version */ + $this->strings['process_success_specific'] = __('Successfully installed the theme %1$s %2$s.'); + $this->strings['parent_theme_search'] = __('This theme requires a parent theme. Checking if it is installed…'); + /* translators: 1: theme name, 2: version */ + $this->strings['parent_theme_prepare_install'] = __('Preparing to install %1$s %2$s…'); + /* translators: 1: theme name, 2: version */ + $this->strings['parent_theme_currently_installed'] = __('The parent theme, %1$s %2$s, is currently installed.'); + /* translators: 1: theme name, 2: version */ + $this->strings['parent_theme_install_success'] = __('Successfully installed the parent theme, %1$s %2$s.'); + $this->strings['parent_theme_not_found'] = __('The parent theme could not be found. You will need to install the parent theme, %s, before you can use this child theme.'); + } + + function check_parent_theme_filter($install_result, $hook_extra, $child_result) { + // Check to see if we need to install a parent theme + $theme_info = $this->theme_info(); + + if ( ! $theme_info->parent() ) + return $install_result; + + $this->skin->feedback( 'parent_theme_search' ); + + if ( ! $theme_info->parent()->errors() ) { + $this->skin->feedback( 'parent_theme_currently_installed', $theme_info->parent()->display('Name'), $theme_info->parent()->display('Version') ); + // We already have the theme, fall through. + return $install_result; + } + + // We don't have the parent theme, lets install it + $api = themes_api('theme_information', array('slug' => $theme_info->get('Template'), 'fields' => array('sections' => false, 'tags' => false) ) ); //Save on a bit of bandwidth. + + if ( ! $api || is_wp_error($api) ) { + $this->skin->feedback( 'parent_theme_not_found', $theme_info->get('Template') ); + // Don't show activate or preview actions after install + add_filter('install_theme_complete_actions', array(&$this, 'hide_activate_preview_actions') ); + return $install_result; + } + + // Backup required data we're going to override: + $child_api = $this->skin->api; + $child_success_message = $this->strings['process_success']; + + // Override them + $this->skin->api = $api; + $this->strings['process_success_specific'] = $this->strings['parent_theme_install_success'];//, $api->name, $api->version); + + $this->skin->feedback('parent_theme_prepare_install', $api->name, $api->version); + + add_filter('install_theme_complete_actions', '__return_false', 999); // Don't show any actions after installing the theme. + + // Install the parent theme + $parent_result = $this->run( array( + 'package' => $api->download_link, + 'destination' => WP_CONTENT_DIR . '/themes', + 'clear_destination' => false, //Do not overwrite files. + 'clear_working' => true + ) ); + + if ( is_wp_error($parent_result) ) + add_filter('install_theme_complete_actions', array(&$this, 'hide_activate_preview_actions') ); + + // Start cleaning up after the parents installation + remove_filter('install_theme_complete_actions', '__return_false', 999); + + // Reset child's result and data + $this->result = $child_result; + $this->skin->api = $child_api; + $this->strings['process_success'] = $child_success_message; + + return $install_result; + } + + function hide_activate_preview_actions($actions) { + unset($actions['activate'], $actions['preview']); + return $actions; + } + + function install($package) { + + $this->init(); + $this->install_strings(); + + add_filter('upgrader_source_selection', array(&$this, 'check_package') ); + add_filter('upgrader_post_install', array(&$this, 'check_parent_theme_filter'), 10, 3); + + $options = array( + 'package' => $package, + 'destination' => WP_CONTENT_DIR . '/themes', + 'clear_destination' => false, //Do not overwrite files. + 'clear_working' => true + ); + + $this->run($options); + + remove_filter('upgrader_source_selection', array(&$this, 'check_package') ); + remove_filter('upgrader_post_install', array(&$this, 'check_parent_theme_filter'), 10, 3); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + // Force refresh of theme update information + delete_site_transient('update_themes'); + search_theme_directories( true ); + foreach ( wp_get_themes() as $theme ) + $theme->cache_delete(); + + return true; + } + + function upgrade($theme) { + + $this->init(); + $this->upgrade_strings(); + + // Is an update available? + $current = get_site_transient( 'update_themes' ); + if ( !isset( $current->response[ $theme ] ) ) { + $this->skin->before(); + $this->skin->set_result(false); + $this->skin->error('up_to_date'); + $this->skin->after(); + return false; + } + + $r = $current->response[ $theme ]; + + add_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2); + add_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2); + add_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); + + $options = array( + 'package' => $r['package'], + 'destination' => WP_CONTENT_DIR . '/themes', + 'clear_destination' => true, + 'clear_working' => true, + 'hook_extra' => array( + 'theme' => $theme + ) + ); + + $this->run($options); + + remove_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2); + remove_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2); + remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + // Force refresh of theme update information + delete_site_transient('update_themes'); + search_theme_directories( true ); + foreach ( wp_get_themes() as $theme ) + $theme->cache_delete(); + + return true; + } + + function bulk_upgrade($themes) { + + $this->init(); + $this->bulk = true; + $this->upgrade_strings(); + + $current = get_site_transient( 'update_themes' ); + + add_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2); + add_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2); + add_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); + + $this->skin->header(); + + // Connect to the Filesystem first. + $res = $this->fs_connect( array(WP_CONTENT_DIR) ); + if ( ! $res ) { + $this->skin->footer(); + return false; + } + + $this->skin->bulk_header(); + + // Only start maintenance mode if running in Multisite OR the theme is in use + $maintenance = is_multisite(); // @TODO: This should only kick in for individual sites if at all possible. + foreach ( $themes as $theme ) + $maintenance = $maintenance || $theme == get_stylesheet() || $theme == get_template(); + if ( $maintenance ) + $this->maintenance_mode(true); + + $results = array(); + + $this->update_count = count($themes); + $this->update_current = 0; + foreach ( $themes as $theme ) { + $this->update_current++; + + if ( !isset( $current->response[ $theme ] ) ) { + $this->skin->set_result(false); + $this->skin->before(); + $this->skin->error('up_to_date'); + $this->skin->after(); + $results[$theme] = false; + continue; + } + + $this->skin->theme_info = $this->theme_info($theme); + + // Get the URL to the zip file + $r = $current->response[ $theme ]; + + $options = array( + 'package' => $r['package'], + 'destination' => WP_CONTENT_DIR . '/themes', + 'clear_destination' => true, + 'clear_working' => true, + 'hook_extra' => array( + 'theme' => $theme + ) + ); + + $result = $this->run($options); + + $results[$theme] = $this->result; + + // Prevent credentials auth screen from displaying multiple times + if ( false === $result ) + break; + } //end foreach $plugins + + $this->maintenance_mode(false); + + $this->skin->bulk_footer(); + + $this->skin->footer(); + + // Cleanup our hooks, in case something else does a upgrade on this connection. + remove_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2); + remove_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2); + remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); + + // Force refresh of theme update information + delete_site_transient('update_themes'); + search_theme_directories( true ); + foreach ( wp_get_themes() as $theme ) + $theme->cache_delete(); + + return $results; + } + + function check_package($source) { + global $wp_filesystem; + + if ( is_wp_error($source) ) + return $source; + + // Check the folder contains a valid theme + $working_directory = str_replace( $wp_filesystem->wp_content_dir(), trailingslashit(WP_CONTENT_DIR), $source); + if ( ! is_dir($working_directory) ) // Sanity check, if the above fails, lets not prevent installation. + return $source; + + // A proper archive should have a style.css file in the single subdirectory + if ( ! file_exists( $working_directory . 'style.css' ) ) + return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __('The theme is missing the style.css stylesheet.') ); + + $info = get_file_data( $working_directory . 'style.css', array( 'Name' => 'Theme Name', 'Template' => 'Template' ) ); + + if ( empty( $info['Name'] ) ) + return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __("The style.css stylesheet doesn't contain a valid theme header.") ); + + // If it's not a child theme, it must have at least an index.php to be legit. + if ( empty( $info['Template'] ) && ! file_exists( $working_directory . 'index.php' ) ) + return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], __('The theme is missing the index.php file.') ); + + return $source; + } + + function current_before($return, $theme) { + + if ( is_wp_error($return) ) + return $return; + + $theme = isset($theme['theme']) ? $theme['theme'] : ''; + + if ( $theme != get_stylesheet() ) //If not current + return $return; + //Change to maintenance mode now. + if ( ! $this->bulk ) + $this->maintenance_mode(true); + + return $return; + } + + function current_after($return, $theme) { + if ( is_wp_error($return) ) + return $return; + + $theme = isset($theme['theme']) ? $theme['theme'] : ''; + + if ( $theme != get_stylesheet() ) // If not current + return $return; + + // Ensure stylesheet name hasnt changed after the upgrade: + // @TODO: Note, This doesn't handle the Template changing, or the Template name changing. + if ( $theme == get_stylesheet() && $theme != $this->result['destination_name'] ) { + $theme_info = $this->theme_info(); + $stylesheet = $this->result['destination_name']; + $template = $theme_info->get_template(); + switch_theme($template, $stylesheet, true); + } + + //Time to remove maintenance mode + if ( ! $this->bulk ) + $this->maintenance_mode(false); + return $return; + } + + function delete_old_theme($removed, $local_destination, $remote_destination, $theme) { + global $wp_filesystem; + + $theme = isset($theme['theme']) ? $theme['theme'] : ''; + + if ( is_wp_error($removed) || empty($theme) ) + return $removed; //Pass errors through. + + $themes_dir = $wp_filesystem->wp_themes_dir(); + if ( $wp_filesystem->exists( trailingslashit($themes_dir) . $theme ) ) + if ( ! $wp_filesystem->delete( trailingslashit($themes_dir) . $theme, true ) ) + return false; + return true; + } + + function theme_info($theme = null) { + + if ( empty($theme) ) { + if ( !empty($this->result['destination_name']) ) + $theme = $this->result['destination_name']; + else + return false; + } + return wp_get_theme( $theme, WP_CONTENT_DIR . '/themes/' ); + } + +} + +/** + * Core Upgrader class for WordPress. It allows for WordPress to upgrade itself in combination with the wp-admin/includes/update-core.php file + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Core_Upgrader extends WP_Upgrader { + + function upgrade_strings() { + $this->strings['up_to_date'] = __('WordPress is at the latest version.'); + $this->strings['no_package'] = __('Update package not available.'); + $this->strings['downloading_package'] = __('Downloading update from %s…'); + $this->strings['unpack_package'] = __('Unpacking the update…'); + $this->strings['copy_failed'] = __('Could not copy files.'); + $this->strings['copy_failed_space'] = __('Could not copy files. You may have run out of disk space.' ); + } + + function upgrade($current) { + global $wp_filesystem, $wp_version; + + $this->init(); + $this->upgrade_strings(); + + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + // Is an update available? + if ( !isset( $current->response ) || $current->response == 'latest' ) + return new WP_Error('up_to_date', $this->strings['up_to_date']); + + $res = $this->fs_connect( array(ABSPATH, WP_CONTENT_DIR) ); + if ( is_wp_error($res) ) + return $res; + + $wp_dir = trailingslashit($wp_filesystem->abspath()); + + // If partial update is returned from the API, use that, unless we're doing a reinstall. + // If we cross the new_bundled version number, then use the new_bundled zip. + // Don't though if the constant is set to skip bundled items. + // If the API returns a no_content zip, go with it. Finally, default to the full zip. + if ( $current->packages->partial && 'reinstall' != $current->response && $wp_version == $current->partial_version ) + $to_download = 'partial'; + elseif ( $current->packages->new_bundled && version_compare( $wp_version, $current->new_bundled, '<' ) + && ( ! defined( 'CORE_UPGRADE_SKIP_NEW_BUNDLED' ) || ! CORE_UPGRADE_SKIP_NEW_BUNDLED ) ) + $to_download = 'new_bundled'; + elseif ( $current->packages->no_content ) + $to_download = 'no_content'; + else + $to_download = 'full'; + + $download = $this->download_package( $current->packages->$to_download ); + if ( is_wp_error($download) ) + return $download; + + $working_dir = $this->unpack_package( $download ); + if ( is_wp_error($working_dir) ) + return $working_dir; + + // Copy update-core.php from the new version into place. + if ( !$wp_filesystem->copy($working_dir . '/wordpress/wp-admin/includes/update-core.php', $wp_dir . 'wp-admin/includes/update-core.php', true) ) { + $wp_filesystem->delete($working_dir, true); + return new WP_Error('copy_failed', $this->strings['copy_failed']); + } + $wp_filesystem->chmod($wp_dir . 'wp-admin/includes/update-core.php', FS_CHMOD_FILE); + + require(ABSPATH . 'wp-admin/includes/update-core.php'); + + if ( ! function_exists( 'update_core' ) ) + return new WP_Error( 'copy_failed_space', $this->strings['copy_failed_space'] ); + + return update_core($working_dir, $wp_dir); + } + +} + +/** + * Generic Skin for the WordPress Upgrader classes. This skin is designed to be extended for specific purposes. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class WP_Upgrader_Skin { + + var $upgrader; + var $done_header = false; + var $result = false; + + function __construct($args = array()) { + $defaults = array( 'url' => '', 'nonce' => '', 'title' => '', 'context' => false ); + $this->options = wp_parse_args($args, $defaults); + } + + function set_upgrader(&$upgrader) { + if ( is_object($upgrader) ) + $this->upgrader =& $upgrader; + $this->add_strings(); + } + + function add_strings() { + } + + function set_result($result) { + $this->result = $result; + } + + function request_filesystem_credentials($error = false) { + $url = $this->options['url']; + $context = $this->options['context']; + if ( !empty($this->options['nonce']) ) + $url = wp_nonce_url($url, $this->options['nonce']); + return request_filesystem_credentials($url, '', $error, $context); //Possible to bring inline, Leaving as is for now. + } + + function header() { + if ( $this->done_header ) + return; + $this->done_header = true; + echo '
'; + echo screen_icon(); + echo '

' . $this->options['title'] . '

'; + } + function footer() { + echo '
'; + } + + function error($errors) { + if ( ! $this->done_header ) + $this->header(); + if ( is_string($errors) ) { + $this->feedback($errors); + } elseif ( is_wp_error($errors) && $errors->get_error_code() ) { + foreach ( $errors->get_error_messages() as $message ) { + if ( $errors->get_error_data() ) + $this->feedback($message . ' ' . $errors->get_error_data() ); + else + $this->feedback($message); + } + } + } + + function feedback($string) { + if ( isset( $this->upgrader->strings[$string] ) ) + $string = $this->upgrader->strings[$string]; + + if ( strpos($string, '%') !== false ) { + $args = func_get_args(); + $args = array_splice($args, 1); + if ( !empty($args) ) + $string = vsprintf($string, $args); + } + if ( empty($string) ) + return; + show_message($string); + } + function before() {} + function after() {} + +} + +/** + * Plugin Upgrader Skin for WordPress Plugin Upgrades. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Plugin_Upgrader_Skin extends WP_Upgrader_Skin { + var $plugin = ''; + var $plugin_active = false; + var $plugin_network_active = false; + + function __construct($args = array()) { + $defaults = array( 'url' => '', 'plugin' => '', 'nonce' => '', 'title' => __('Update Plugin') ); + $args = wp_parse_args($args, $defaults); + + $this->plugin = $args['plugin']; + + $this->plugin_active = is_plugin_active( $this->plugin ); + $this->plugin_network_active = is_plugin_active_for_network( $this->plugin ); + + parent::__construct($args); + } + + function after() { + $this->plugin = $this->upgrader->plugin_info(); + if ( !empty($this->plugin) && !is_wp_error($this->result) && $this->plugin_active ){ + echo ''; + } + + $update_actions = array( + 'activate_plugin' => '' . __('Activate Plugin') . '', + 'plugins_page' => '' . __('Return to Plugins page') . '' + ); + if ( $this->plugin_active ) + unset( $update_actions['activate_plugin'] ); + if ( ! $this->result || is_wp_error($this->result) ) + unset( $update_actions['activate_plugin'] ); + + $update_actions = apply_filters('update_plugin_complete_actions', $update_actions, $this->plugin); + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } + + function before() { + if ( $this->upgrader->show_before ) { + echo $this->upgrader->show_before; + $this->upgrader->show_before = ''; + } + } +} + +/** + * Plugin Upgrader Skin for WordPress Plugin Upgrades. + * + * @package WordPress + * @subpackage Upgrader + * @since 3.0.0 + */ +class Bulk_Upgrader_Skin extends WP_Upgrader_Skin { + var $in_loop = false; + var $error = false; + + function __construct($args = array()) { + $defaults = array( 'url' => '', 'nonce' => '' ); + $args = wp_parse_args($args, $defaults); + + parent::__construct($args); + } + + function add_strings() { + $this->upgrader->strings['skin_upgrade_start'] = __('The update process is starting. This process may take a while on some hosts, so please be patient.'); + $this->upgrader->strings['skin_update_failed_error'] = __('An error occurred while updating %1$s: %2$s.'); + $this->upgrader->strings['skin_update_failed'] = __('The update of %1$s failed.'); + $this->upgrader->strings['skin_update_successful'] = __('%1$s updated successfully.').' '.__('Show Details').'.'; + $this->upgrader->strings['skin_upgrade_end'] = __('All updates have been completed.'); + } + + function feedback($string) { + if ( isset( $this->upgrader->strings[$string] ) ) + $string = $this->upgrader->strings[$string]; + + if ( strpos($string, '%') !== false ) { + $args = func_get_args(); + $args = array_splice($args, 1); + if ( !empty($args) ) + $string = vsprintf($string, $args); + } + if ( empty($string) ) + return; + if ( $this->in_loop ) + echo "$string
\n"; + else + echo "

$string

\n"; + } + + function header() { + // Nothing, This will be displayed within a iframe. + } + + function footer() { + // Nothing, This will be displayed within a iframe. + } + function error($error) { + if ( is_string($error) && isset( $this->upgrader->strings[$error] ) ) + $this->error = $this->upgrader->strings[$error]; + + if ( is_wp_error($error) ) { + foreach ( $error->get_error_messages() as $emessage ) { + if ( $error->get_error_data() ) + $messages[] = $emessage . ' ' . $error->get_error_data(); + else + $messages[] = $emessage; + } + $this->error = implode(', ', $messages); + } + echo ''; + } + + function bulk_header() { + $this->feedback('skin_upgrade_start'); + } + + function bulk_footer() { + $this->feedback('skin_upgrade_end'); + } + + function before($title = '') { + $this->in_loop = true; + printf( '

' . $this->upgrader->strings['skin_before_update_header'] . '

', $title, $this->upgrader->update_current, $this->upgrader->update_count); + echo ''; + echo '

'; + $this->flush_output(); + } + + function after($title = '') { + echo '

'; + if ( $this->error || ! $this->result ) { + if ( $this->error ) + echo '

' . sprintf($this->upgrader->strings['skin_update_failed_error'], $title, $this->error) . '

'; + else + echo '

' . sprintf($this->upgrader->strings['skin_update_failed'], $title) . '

'; + + echo ''; + } + if ( !empty($this->result) && !is_wp_error($this->result) ) { + echo '

' . sprintf($this->upgrader->strings['skin_update_successful'], $title, 'jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\').toggle();jQuery(\'span\', this).toggle(); return false;') . '

'; + echo ''; + } + + $this->reset(); + $this->flush_output(); + } + + function reset() { + $this->in_loop = false; + $this->error = false; + } + + function flush_output() { + wp_ob_end_flush_all(); + flush(); + } +} + +class Bulk_Plugin_Upgrader_Skin extends Bulk_Upgrader_Skin { + var $plugin_info = array(); // Plugin_Upgrader::bulk() will fill this in. + + function __construct($args = array()) { + parent::__construct($args); + } + + function add_strings() { + parent::add_strings(); + $this->upgrader->strings['skin_before_update_header'] = __('Updating Plugin %1$s (%2$d/%3$d)'); + } + + function before() { + parent::before($this->plugin_info['Title']); + } + + function after() { + parent::after($this->plugin_info['Title']); + } + function bulk_footer() { + parent::bulk_footer(); + $update_actions = array( + 'plugins_page' => '' . __('Return to Plugins page') . '', + 'updates_page' => '' . __('Return to WordPress Updates') . '' + ); + + $update_actions = apply_filters('update_bulk_plugins_complete_actions', $update_actions, $this->plugin_info); + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } +} + +class Bulk_Theme_Upgrader_Skin extends Bulk_Upgrader_Skin { + var $theme_info = array(); // Theme_Upgrader::bulk() will fill this in. + + function __construct($args = array()) { + parent::__construct($args); + } + + function add_strings() { + parent::add_strings(); + $this->upgrader->strings['skin_before_update_header'] = __('Updating Theme %1$s (%2$d/%3$d)'); + } + + function before() { + parent::before( $this->theme_info->display('Name') ); + } + + function after() { + parent::after( $this->theme_info->display('Name') ); + } + + function bulk_footer() { + parent::bulk_footer(); + $update_actions = array( + 'themes_page' => '' . __('Return to Themes page') . '', + 'updates_page' => '' . __('Return to WordPress Updates') . '' + ); + + $update_actions = apply_filters('update_bulk_theme_complete_actions', $update_actions, $this->theme_info ); + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } +} + +/** + * Plugin Installer Skin for WordPress Plugin Installer. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Plugin_Installer_Skin extends WP_Upgrader_Skin { + var $api; + var $type; + + function __construct($args = array()) { + $defaults = array( 'type' => 'web', 'url' => '', 'plugin' => '', 'nonce' => '', 'title' => '' ); + $args = wp_parse_args($args, $defaults); + + $this->type = $args['type']; + $this->api = isset($args['api']) ? $args['api'] : array(); + + parent::__construct($args); + } + + function before() { + if ( !empty($this->api) ) + $this->upgrader->strings['process_success'] = sprintf( __('Successfully installed the plugin %s %s.'), $this->api->name, $this->api->version); + } + + function after() { + + $plugin_file = $this->upgrader->plugin_info(); + + $install_actions = array(); + + $from = isset($_GET['from']) ? stripslashes($_GET['from']) : 'plugins'; + + if ( 'import' == $from ) + $install_actions['activate_plugin'] = '' . __('Activate Plugin & Run Importer') . ''; + else + $install_actions['activate_plugin'] = '' . __('Activate Plugin') . ''; + + if ( is_multisite() && current_user_can( 'manage_network_plugins' ) ) { + $install_actions['network_activate'] = '' . __('Network Activate') . ''; + unset( $install_actions['activate_plugin'] ); + } + + if ( 'import' == $from ) + $install_actions['importers_page'] = '' . __('Return to Importers') . ''; + else if ( $this->type == 'web' ) + $install_actions['plugins_page'] = '' . __('Return to Plugin Installer') . ''; + else + $install_actions['plugins_page'] = '' . __('Return to Plugins page') . ''; + + if ( ! $this->result || is_wp_error($this->result) ) { + unset( $install_actions['activate_plugin'] ); + unset( $install_actions['network_activate'] ); + } + $install_actions = apply_filters('install_plugin_complete_actions', $install_actions, $this->api, $plugin_file); + if ( ! empty($install_actions) ) + $this->feedback(implode(' | ', (array)$install_actions)); + } +} + +/** + * Theme Installer Skin for the WordPress Theme Installer. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Theme_Installer_Skin extends WP_Upgrader_Skin { + var $api; + var $type; + + function __construct($args = array()) { + $defaults = array( 'type' => 'web', 'url' => '', 'theme' => '', 'nonce' => '', 'title' => '' ); + $args = wp_parse_args($args, $defaults); + + $this->type = $args['type']; + $this->api = isset($args['api']) ? $args['api'] : array(); + + parent::__construct($args); + } + + function before() { + if ( !empty($this->api) ) + $this->upgrader->strings['process_success'] = sprintf( $this->upgrader->strings['process_success_specific'], $this->api->name, $this->api->version); + } + + function after() { + if ( empty($this->upgrader->result['destination_name']) ) + return; + + $theme_info = $this->upgrader->theme_info(); + if ( empty( $theme_info ) ) + return; + + $name = $theme_info->display('Name'); + $stylesheet = $this->upgrader->result['destination_name']; + $template = $theme_info->get_template(); + + $preview_link = add_query_arg( array( + 'preview' => 1, + 'template' => $template, + 'stylesheet' => $stylesheet, + ), trailingslashit( get_home_url() ) ); + + $activate_link = add_query_arg( array( + 'action' => 'activate', + 'template' => $template, + 'stylesheet' => $stylesheet, + ), admin_url('themes.php') ); + $activate_link = wp_nonce_url( $activate_link, 'switch-theme_' . $stylesheet ); + + $install_actions = array(); + $install_actions['preview'] = '' . __('Preview') . ''; + $install_actions['preview'] .= '' . __('Live Preview') . ''; + $install_actions['activate'] = '' . __('Activate') . ''; + + if ( is_network_admin() && current_user_can( 'manage_network_themes' ) ) + $install_actions['network_enable'] = '' . __( 'Network Enable' ) . ''; + + if ( $this->type == 'web' ) + $install_actions['themes_page'] = '' . __('Return to Theme Installer') . ''; + else + $install_actions['themes_page'] = '' . __('Return to Themes page') . ''; + + if ( ! $this->result || is_wp_error($this->result) || is_network_admin() ) + unset( $install_actions['activate'], $install_actions['preview'] ); + + $install_actions = apply_filters('install_theme_complete_actions', $install_actions, $this->api, $stylesheet, $theme_info); + if ( ! empty($install_actions) ) + $this->feedback(implode(' | ', (array)$install_actions)); + } +} + +/** + * Theme Upgrader Skin for WordPress Theme Upgrades. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Theme_Upgrader_Skin extends WP_Upgrader_Skin { + var $theme = ''; + + function __construct($args = array()) { + $defaults = array( 'url' => '', 'theme' => '', 'nonce' => '', 'title' => __('Update Theme') ); + $args = wp_parse_args($args, $defaults); + + $this->theme = $args['theme']; + + parent::__construct($args); + } + + function after() { + + $update_actions = array(); + if ( ! empty( $this->upgrader->result['destination_name'] ) && $theme_info = $this->upgrader->theme_info() ) { + $name = $theme_info->display('Name'); + $stylesheet = $this->upgrader->result['destination_name']; + $template = $theme_info->get_template(); + + $preview_link = add_query_arg( array( + 'preview' => 1, + 'template' => $template, + 'stylesheet' => $stylesheet, + ), trailingslashit( get_home_url() ) ); + + $activate_link = add_query_arg( array( + 'action' => 'activate', + 'template' => $template, + 'stylesheet' => $stylesheet, + ), admin_url('themes.php') ); + $activate_link = wp_nonce_url( $activate_link, 'switch-theme_' . $stylesheet ); + + if ( get_stylesheet() == $stylesheet ) { + $update_actions['preview'] = '' . __('Customize') . ''; + } else { + $update_actions['preview'] = '' . __('Preview') . ''; + $update_actions['preview'] .= '' . __('Live Preview') . ''; + $update_actions['activate'] = '' . __('Activate') . ''; + } + + if ( ! $this->result || is_wp_error( $this->result ) || is_network_admin() ) + unset( $update_actions['preview'], $update_actions['activate'] ); + } + + $update_actions['themes_page'] = '' . __('Return to Themes page') . ''; + + $update_actions = apply_filters('update_theme_complete_actions', $update_actions, $this->theme); + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } +} + +/** + * Upgrade Skin helper for File uploads. This class handles the upload process and passes it as if its a local file to the Upgrade/Installer functions. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class File_Upload_Upgrader { + var $package; + var $filename; + var $id = 0; + + function __construct($form, $urlholder) { + + if ( empty($_FILES[$form]['name']) && empty($_GET[$urlholder]) ) + wp_die(__('Please select a file')); + + //Handle a newly uploaded file, Else assume its already been uploaded + if ( ! empty($_FILES) ) { + $overrides = array( 'test_form' => false, 'test_type' => false ); + $file = wp_handle_upload( $_FILES[$form], $overrides ); + + if ( isset( $file['error'] ) ) + wp_die( $file['error'] ); + + $this->filename = $_FILES[$form]['name']; + $this->package = $file['file']; + + // Construct the object array + $object = array( + 'post_title' => $this->filename, + 'post_content' => $file['url'], + 'post_mime_type' => $file['type'], + 'guid' => $file['url'], + 'context' => 'upgrader', + 'post_status' => 'private' + ); + + // Save the data + $this->id = wp_insert_attachment( $object, $file['file'] ); + + // schedule a cleanup for 2 hours from now in case of failed install + wp_schedule_single_event( time() + 7200, 'upgrader_scheduled_cleanup', array( $this->id ) ); + + } elseif ( is_numeric( $_GET[$urlholder] ) ) { + // Numeric Package = previously uploaded file, see above. + $this->id = (int) $_GET[$urlholder]; + $attachment = get_post( $this->id ); + if ( empty($attachment) ) + wp_die(__('Please select a file')); + + $this->filename = $attachment->post_title; + $this->package = get_attached_file( $attachment->ID ); + } else { + // Else, It's set to something, Back compat for plugins using the old (pre-3.3) File_Uploader handler. + if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) ) + wp_die( $uploads['error'] ); + + $this->filename = $_GET[$urlholder]; + $this->package = $uploads['basedir'] . '/' . $this->filename; + } + } + + function cleanup() { + if ( $this->id ) + wp_delete_attachment( $this->id ); + + elseif ( file_exists( $this->package ) ) + return @unlink( $this->package ); + + return true; + } +} \ No newline at end of file diff --git a/wp-admin/includes/class-wp-users-list-table.php b/wp-admin/includes/class-wp-users-list-table.php new file mode 100644 index 0000000..adb8321 --- /dev/null +++ b/wp-admin/includes/class-wp-users-list-table.php @@ -0,0 +1,318 @@ +is_site_users = 'site-users-network' == $screen->id; + + if ( $this->is_site_users ) + $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + + parent::__construct( array( + 'singular' => 'user', + 'plural' => 'users' + ) ); + } + + function ajax_user_can() { + if ( $this->is_site_users ) + return current_user_can( 'manage_sites' ); + else + return current_user_can( 'list_users' ); + } + + function prepare_items() { + global $role, $usersearch; + + $usersearch = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : ''; + + $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : ''; + + $per_page = ( $this->is_site_users ) ? 'site_users_network_per_page' : 'users_per_page'; + $users_per_page = $this->get_items_per_page( $per_page ); + + $paged = $this->get_pagenum(); + + $args = array( + 'number' => $users_per_page, + 'offset' => ( $paged-1 ) * $users_per_page, + 'role' => $role, + 'search' => $usersearch, + 'fields' => 'all_with_meta' + ); + + if ( '' !== $args['search'] ) + $args['search'] = '*' . $args['search'] . '*'; + + if ( $this->is_site_users ) + $args['blog_id'] = $this->site_id; + + if ( isset( $_REQUEST['orderby'] ) ) + $args['orderby'] = $_REQUEST['orderby']; + + if ( isset( $_REQUEST['order'] ) ) + $args['order'] = $_REQUEST['order']; + + // Query the user IDs for this page + $wp_user_search = new WP_User_Query( $args ); + + $this->items = $wp_user_search->get_results(); + + $this->set_pagination_args( array( + 'total_items' => $wp_user_search->get_total(), + 'per_page' => $users_per_page, + ) ); + } + + function no_items() { + _e( 'No matching users were found.' ); + } + + function get_views() { + global $wp_roles, $role; + + if ( $this->is_site_users ) { + $url = 'site-users.php?id=' . $this->site_id; + switch_to_blog( $this->site_id ); + $users_of_blog = count_users(); + restore_current_blog(); + } else { + $url = 'users.php'; + $users_of_blog = count_users(); + } + $total_users = $users_of_blog['total_users']; + $avail_roles =& $users_of_blog['avail_roles']; + unset($users_of_blog); + + $current_role = false; + $class = empty($role) ? ' class="current"' : ''; + $role_links = array(); + $role_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_users, 'users' ), number_format_i18n( $total_users ) ) . ''; + foreach ( $wp_roles->get_names() as $this_role => $name ) { + if ( !isset($avail_roles[$this_role]) ) + continue; + + $class = ''; + + if ( $this_role == $role ) { + $current_role = $role; + $class = ' class="current"'; + } + + $name = translate_user_role( $name ); + /* translators: User role name with count */ + $name = sprintf( __('%1$s (%2$s)'), $name, number_format_i18n( $avail_roles[$this_role] ) ); + $role_links[$this_role] = "$name"; + } + + return $role_links; + } + + function get_bulk_actions() { + $actions = array(); + + if ( is_multisite() ) { + if ( current_user_can( 'remove_users' ) ) + $actions['remove'] = __( 'Remove' ); + } else { + if ( current_user_can( 'delete_users' ) ) + $actions['delete'] = __( 'Delete' ); + } + + return $actions; + } + + function extra_tablenav( $which ) { + if ( 'top' != $which ) + return; + if ( ! current_user_can( 'promote_users' ) ) + return; +?> +
+ + + +
+ '', + 'username' => __( 'Username' ), + 'name' => __( 'Name' ), + 'email' => __( 'E-mail' ), + 'role' => __( 'Role' ), + 'posts' => __( 'Posts' ) + ); + + if ( $this->is_site_users ) + unset( $c['posts'] ); + + return $c; + } + + function get_sortable_columns() { + $c = array( + 'username' => 'login', + 'name' => 'name', + 'email' => 'email', + ); + + if ( $this->is_site_users ) + unset( $c['posts'] ); + + return $c; + } + + function display_rows() { + // Query the post counts for this page + if ( ! $this->is_site_users ) + $post_counts = count_many_users_posts( array_keys( $this->items ) ); + + $style = ''; + foreach ( $this->items as $userid => $user_object ) { + $role = reset( $user_object->roles ); + + if ( is_multisite() && empty( $role ) ) + continue; + + $style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"'; + echo "\n\t", $this->single_row( $user_object, $style, $role, isset( $post_counts ) ? $post_counts[ $userid ] : 0 ); + } + } + + /** + * Generate HTML for a single row on the users.php admin panel. + * + * @since 2.1.0 + * + * @param object $user_object + * @param string $style Optional. Attributes added to the TR element. Must be sanitized. + * @param string $role Key for the $wp_roles array. + * @param int $numposts Optional. Post count to display for this user. Defaults to zero, as in, a new user has made zero posts. + * @return string + */ + function single_row( $user_object, $style = '', $role = '', $numposts = 0 ) { + global $wp_roles; + + if ( !( is_object( $user_object ) && is_a( $user_object, 'WP_User' ) ) ) + $user_object = new WP_User( (int) $user_object ); + $user_object->filter = 'display'; + $email = $user_object->user_email; + + if ( $this->is_site_users ) + $url = "site-users.php?id={$this->site_id}&"; + else + $url = 'users.php?'; + + $checkbox = ''; + // Check if the user for this row is editable + if ( current_user_can( 'list_users' ) ) { + // Set up the user editing link + // TODO: make profile/user-edit determination a separate function + if ( get_current_user_id() == $user_object->ID ) { + $edit_link = 'profile.php'; + } else { + $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), "user-edit.php?user_id=$user_object->ID" ) ); + } + + // Set up the hover actions for this user + $actions = array(); + + if ( current_user_can( 'edit_user', $user_object->ID ) ) { + $edit = "$user_object->user_login
"; + $actions['edit'] = '' . __( 'Edit' ) . ''; + } else { + $edit = "$user_object->user_login
"; + } + + if ( !is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'delete_user', $user_object->ID ) ) + $actions['delete'] = "" . __( 'Delete' ) . ""; + if ( is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'remove_user', $user_object->ID ) ) + $actions['remove'] = "" . __( 'Remove' ) . ""; + $actions = apply_filters( 'user_row_actions', $actions, $user_object ); + $edit .= $this->row_actions( $actions ); + + // Set up the checkbox ( because the user is editable, otherwise its empty ) + $checkbox = ""; + + } else { + $edit = '' . $user_object->user_login . ''; + } + $role_name = isset( $wp_roles->role_names[$role] ) ? translate_user_role( $wp_roles->role_names[$role] ) : __( 'None' ); + $avatar = get_avatar( $user_object->ID, 32 ); + + $r = ""; + + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $class = "class=\"$column_name column-$column_name\""; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = "$class$style"; + + switch ( $column_name ) { + case 'cb': + $r .= "$checkbox"; + break; + case 'username': + $r .= "$avatar $edit"; + break; + case 'name': + $r .= "$user_object->first_name $user_object->last_name"; + break; + case 'email': + $r .= "$email"; + break; + case 'role': + $r .= "$role_name"; + break; + case 'posts': + $attributes = 'class="posts column-posts num"' . $style; + $r .= ""; + if ( $numposts > 0 ) { + $r .= ""; + $r .= $numposts; + $r .= ''; + } else { + $r .= 0; + } + $r .= ""; + break; + default: + $r .= ""; + $r .= apply_filters( 'manage_users_custom_column', '', $column_name, $user_object->ID ); + $r .= ""; + } + } + $r .= ''; + + return $r; + } +} diff --git a/wp-admin/includes/comment.php b/wp-admin/includes/comment.php new file mode 100644 index 0000000..8458911 --- /dev/null +++ b/wp-admin/includes/comment.php @@ -0,0 +1,158 @@ +get_var( $wpdb->prepare("SELECT comment_post_ID FROM $wpdb->comments + WHERE comment_author = %s AND comment_date = %s", $comment_author, $comment_date) ); +} + +/** + * Update a comment with values provided in $_POST. + * + * @since 2.0.0 + */ +function edit_comment() { + + if ( ! current_user_can( 'edit_comment', (int) $_POST['comment_ID'] ) ) + wp_die ( __( 'You are not allowed to edit comments on this post.' ) ); + + $_POST['comment_author'] = $_POST['newcomment_author']; + $_POST['comment_author_email'] = $_POST['newcomment_author_email']; + $_POST['comment_author_url'] = $_POST['newcomment_author_url']; + $_POST['comment_approved'] = $_POST['comment_status']; + $_POST['comment_content'] = $_POST['content']; + $_POST['comment_ID'] = (int) $_POST['comment_ID']; + + foreach ( array ('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) { + if ( !empty( $_POST['hidden_' . $timeunit] ) && $_POST['hidden_' . $timeunit] != $_POST[$timeunit] ) { + $_POST['edit_date'] = '1'; + break; + } + } + + if ( !empty ( $_POST['edit_date'] ) ) { + $aa = $_POST['aa']; + $mm = $_POST['mm']; + $jj = $_POST['jj']; + $hh = $_POST['hh']; + $mn = $_POST['mn']; + $ss = $_POST['ss']; + $jj = ($jj > 31 ) ? 31 : $jj; + $hh = ($hh > 23 ) ? $hh -24 : $hh; + $mn = ($mn > 59 ) ? $mn -60 : $mn; + $ss = ($ss > 59 ) ? $ss -60 : $ss; + $_POST['comment_date'] = "$aa-$mm-$jj $hh:$mn:$ss"; + } + + wp_update_comment( $_POST ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.0.0 + * + * @param int $id ID of comment to retrieve + * @return bool|object Comment if found. False on failure. + */ +function get_comment_to_edit( $id ) { + if ( !$comment = get_comment($id) ) + return false; + + $comment->comment_ID = (int) $comment->comment_ID; + $comment->comment_post_ID = (int) $comment->comment_post_ID; + + $comment->comment_content = format_to_edit( $comment->comment_content ); + $comment->comment_content = apply_filters( 'comment_edit_pre', $comment->comment_content); + + $comment->comment_author = format_to_edit( $comment->comment_author ); + $comment->comment_author_email = format_to_edit( $comment->comment_author_email ); + $comment->comment_author_url = format_to_edit( $comment->comment_author_url ); + $comment->comment_author_url = esc_url($comment->comment_author_url); + + return $comment; +} + +/** + * Get the number of pending comments on a post or posts + * + * @since 2.3.0 + * @uses $wpdb + * + * @param int|array $post_id Either a single Post ID or an array of Post IDs + * @return int|array Either a single Posts pending comments as an int or an array of ints keyed on the Post IDs + */ +function get_pending_comments_num( $post_id ) { + global $wpdb; + + $single = false; + if ( !is_array($post_id) ) { + $post_id_array = (array) $post_id; + $single = true; + } else { + $post_id_array = $post_id; + } + $post_id_array = array_map('intval', $post_id_array); + $post_id_in = "'" . implode("', '", $post_id_array) . "'"; + + $pending = $wpdb->get_results( "SELECT comment_post_ID, COUNT(comment_ID) as num_comments FROM $wpdb->comments WHERE comment_post_ID IN ( $post_id_in ) AND comment_approved = '0' GROUP BY comment_post_ID", ARRAY_A ); + + if ( $single ) { + if ( empty($pending) ) + return 0; + else + return absint($pending[0]['num_comments']); + } + + $pending_keyed = array(); + + // Default to zero pending for all posts in request + foreach ( $post_id_array as $id ) + $pending_keyed[$id] = 0; + + if ( !empty($pending) ) + foreach ( $pending as $pend ) + $pending_keyed[$pend['comment_post_ID']] = absint($pend['num_comments']); + + return $pending_keyed; +} + +/** + * Add avatars to relevant places in admin, or try to. + * + * @since 2.5.0 + * @uses $comment + * + * @param string $name User name. + * @return string Avatar with Admin name. + */ +function floated_admin_avatar( $name ) { + global $comment; + $avatar = get_avatar( $comment, 32 ); + return "$avatar $name"; +} + +function enqueue_comment_hotkeys_js() { + if ( 'true' == get_user_option( 'comment_shortcuts' ) ) + wp_enqueue_script( 'jquery-table-hotkeys' ); +} diff --git a/wp-admin/includes/continents-cities.php b/wp-admin/includes/continents-cities.php new file mode 100644 index 0000000..0ebc4f3 --- /dev/null +++ b/wp-admin/includes/continents-cities.php @@ -0,0 +1,493 @@ + 5, + ); + } + $recent_comments_title = __( 'Recent Comments' ); + wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' ); + } + + // Incoming Links Widget + if ( is_blog_admin() && current_user_can('publish_posts') ) { + if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) { + $update = true; + $num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10; + $widget_options['dashboard_incoming_links'] = array( + 'home' => get_option('home'), + 'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ), + 'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] ) : apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ), + 'items' => $num_items, + 'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false + ); + } + wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' ); + } + + // WP Plugins Widget + if ( ( ! is_multisite() && is_blog_admin() && current_user_can( 'install_plugins' ) ) || ( is_network_admin() && current_user_can( 'manage_network_plugins' ) && current_user_can( 'install_plugins' ) ) ) + wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' ); + + // QuickPress Widget + if ( is_blog_admin() && current_user_can('edit_posts') ) + wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press' ); + + // Recent Drafts + if ( is_blog_admin() && current_user_can('edit_posts') ) + wp_add_dashboard_widget( 'dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts' ); + + // Primary feed (Dev Blog) Widget + if ( !isset( $widget_options['dashboard_primary'] ) ) { + $update = true; + $widget_options['dashboard_primary'] = array( + 'link' => apply_filters( 'dashboard_primary_link', __( 'http://wordpress.org/news/' ) ), + 'url' => apply_filters( 'dashboard_primary_feed', __( 'http://wordpress.org/news/feed/' ) ), + 'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Blog' ) ), + 'items' => 2, + 'show_summary' => 1, + 'show_author' => 0, + 'show_date' => 1, + ); + } + wp_add_dashboard_widget( 'dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_primary', 'wp_dashboard_primary_control' ); + + // Secondary Feed (Planet) Widget + if ( !isset( $widget_options['dashboard_secondary'] ) ) { + $update = true; + $widget_options['dashboard_secondary'] = array( + 'link' => apply_filters( 'dashboard_secondary_link', __( 'http://planet.wordpress.org/' ) ), + 'url' => apply_filters( 'dashboard_secondary_feed', __( 'http://planet.wordpress.org/feed/' ) ), + 'title' => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ), + 'items' => 5, + 'show_summary' => 0, + 'show_author' => 0, + 'show_date' => 0, + ); + } + wp_add_dashboard_widget( 'dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_secondary', 'wp_dashboard_secondary_control' ); + + // Hook to register new widgets + // Filter widget order + if ( is_network_admin() ) { + do_action( 'wp_network_dashboard_setup' ); + $dashboard_widgets = apply_filters( 'wp_network_dashboard_widgets', array() ); + } elseif ( is_user_admin() ) { + do_action( 'wp_user_dashboard_setup' ); + $dashboard_widgets = apply_filters( 'wp_user_dashboard_widgets', array() ); + } else { + do_action( 'wp_dashboard_setup' ); + $dashboard_widgets = apply_filters( 'wp_dashboard_widgets', array() ); + } + + foreach ( $dashboard_widgets as $widget_id ) { + $name = empty( $wp_registered_widgets[$widget_id]['all_link'] ) ? $wp_registered_widgets[$widget_id]['name'] : $wp_registered_widgets[$widget_id]['name'] . " " . __('View all') . ''; + wp_add_dashboard_widget( $widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback'] ); + } + + if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id']) ) { + ob_start(); // hack - but the same hack wp-admin/widgets.php uses + wp_dashboard_trigger_widget_control( $_POST['widget_id'] ); + ob_end_clean(); + wp_redirect( remove_query_arg( 'edit' ) ); + exit; + } + + if ( $update ) + update_option( 'dashboard_widget_options', $widget_options ); + + do_action('do_meta_boxes', $screen->id, 'normal', ''); + do_action('do_meta_boxes', $screen->id, 'side', ''); +} + +function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null ) { + $screen = get_current_screen(); + global $wp_dashboard_control_callbacks; + + if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) { + $wp_dashboard_control_callbacks[$widget_id] = $control_callback; + if ( isset( $_GET['edit'] ) && $widget_id == $_GET['edit'] ) { + list($url) = explode( '#', add_query_arg( 'edit', false ), 2 ); + $widget_name .= ' ' . __( 'Cancel' ) . ''; + $callback = '_wp_dashboard_control_callback'; + } else { + list($url) = explode( '#', add_query_arg( 'edit', $widget_id ), 2 ); + $widget_name .= ' ' . __( 'Configure' ) . ''; + } + } + + if ( is_blog_admin () ) + $side_widgets = array('dashboard_quick_press', 'dashboard_recent_drafts', 'dashboard_primary', 'dashboard_secondary'); + else if (is_network_admin() ) + $side_widgets = array('dashboard_primary', 'dashboard_secondary'); + else + $side_widgets = array(); + + $location = 'normal'; + if ( in_array($widget_id, $side_widgets) ) + $location = 'side'; + + $priority = 'core'; + if ( 'dashboard_browser_nag' === $widget_id ) + $priority = 'high'; + + add_meta_box( $widget_id, $widget_name, $callback, $screen, $location, $priority ); +} + +function _wp_dashboard_control_callback( $dashboard, $meta_box ) { + echo '
'; + wp_dashboard_trigger_widget_control( $meta_box['id'] ); + echo ''; + submit_button( __('Submit') ); + echo '
'; +} + +/** + * Displays the dashboard. + * + * @since 2.5.0 + */ +function wp_dashboard() { + $screen = get_current_screen(); + $class = 'columns-' . get_current_screen()->get_columns(); + +?> +
+
+ id, 'normal', '' ); ?> +
+
+ id, 'side', '' ); ?> +
+
+ id, 'column3', '' ); ?> +
+
+ id, 'column4', '' ); ?> +
+
+ +'; + echo "\n\t".'

' . __('Content') . '

'."\n\t".''; + echo "\n\t".''; + + // Posts + $num = number_format_i18n( $num_posts->publish ); + $text = _n( 'Post', 'Posts', intval($num_posts->publish) ); + if ( current_user_can( 'edit_posts' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo ''; + /* TODO: Show status breakdown on hover + if ( $can_edit_pages && !empty($num_pages->publish) ) { // how many pages is not exposed in feeds. Don't show if !current_user_can + $post_type_texts[] = ''.sprintf( _n( '%s page', '%s pages', $num_pages->publish ), number_format_i18n( $num_pages->publish ) ).''; + } + if ( $can_edit_posts && !empty($num_posts->draft) ) { + $post_type_texts[] = ''.sprintf( _n( '%s draft', '%s drafts', $num_posts->draft ), number_format_i18n( $num_posts->draft ) ).''; + } + if ( $can_edit_posts && !empty($num_posts->future) ) { + $post_type_texts[] = ''.sprintf( _n( '%s scheduled post', '%s scheduled posts', $num_posts->future ), number_format_i18n( $num_posts->future ) ).''; + } + if ( current_user_can('publish_posts') && !empty($num_posts->pending) ) { + $pending_text = sprintf( _n( 'There is %2$s post pending your review.', 'There are %2$s posts pending your review.', $num_posts->pending ), 'edit.php?post_status=pending', number_format_i18n( $num_posts->pending ) ); + } else { + $pending_text = ''; + } + */ + + // Pages + $num = number_format_i18n( $num_pages->publish ); + $text = _n( 'Page', 'Pages', $num_pages->publish ); + if ( current_user_can( 'edit_pages' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo ''; + + // Categories + $num = number_format_i18n( $num_cats ); + $text = _n( 'Category', 'Categories', $num_cats ); + if ( current_user_can( 'manage_categories' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo ''; + + // Tags + $num = number_format_i18n( $num_tags ); + $text = _n( 'Tag', 'Tags', $num_tags ); + if ( current_user_can( 'manage_categories' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo ""; + do_action('right_now_content_table_end'); + echo "\n\t
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
\n\t
"; + + echo "\n\t".'
'; + echo "\n\t".'

' . __('Discussion') . '

'."\n\t".''; + echo "\n\t".''; + + // Total Comments + $num = '' . number_format_i18n($num_comm->total_comments) . ''; + $text = _n( 'Comment', 'Comments', $num_comm->total_comments ); + if ( current_user_can( 'moderate_comments' ) ) { + $num = '' . $num . ''; + $text = '' . $text . ''; + } + echo ''; + echo ''; + + echo ''; + + // Approved Comments + $num = '' . number_format_i18n($num_comm->approved) . ''; + $text = _nx( 'Approved', 'Approved', $num_comm->approved, 'Right Now' ); + if ( current_user_can( 'moderate_comments' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo "\n\t"; + + // Pending Comments + $num = '' . number_format_i18n($num_comm->moderated) . ''; + $text = _n( 'Pending', 'Pending', $num_comm->moderated ); + if ( current_user_can( 'moderate_comments' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo "\n\t"; + + // Spam Comments + $num = number_format_i18n($num_comm->spam); + $text = _nx( 'Spam', 'Spam', $num_comm->spam, 'comment' ); + if ( current_user_can( 'moderate_comments' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo ""; + do_action('right_now_table_end'); + do_action('right_now_discussion_table_end'); + echo "\n\t
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
\n\t
"; + + echo "\n\t".'
'; + $theme = wp_get_theme(); + + echo "\n\t

"; + + if ( $theme->errors() ) { + if ( ! is_multisite() || is_super_admin() ) + echo '' . __('ERROR: The themes directory is either empty or doesn’t exist. Please check your installation.') . ''; + } elseif ( ! empty($wp_registered_sidebars) ) { + $sidebars_widgets = wp_get_sidebars_widgets(); + $num_widgets = 0; + foreach ( (array) $sidebars_widgets as $k => $v ) { + if ( 'wp_inactive_widgets' == $k || 'orphaned_widgets' == substr( $k, 0, 16 ) ) + continue; + if ( is_array($v) ) + $num_widgets = $num_widgets + count($v); + } + $num = number_format_i18n( $num_widgets ); + + $switch_themes = $theme->display('Name'); + if ( current_user_can( 'switch_themes') ) + $switch_themes = '' . $switch_themes . ''; + if ( current_user_can( 'edit_theme_options' ) ) { + printf(_n('Theme %1$s with %2$s Widget', 'Theme %1$s with %2$s Widgets', $num_widgets), $switch_themes, $num); + } else { + printf(_n('Theme %1$s with %2$s Widget', 'Theme %1$s with %2$s Widgets', $num_widgets), $switch_themes, $num); + } + } else { + if ( current_user_can( 'switch_themes' ) ) + printf( __('Theme %1$s'), $theme->display('Name') ); + else + printf( __('Theme %1$s'), $theme->display('Name') ); + } + echo '

'; + + // Check if search engines are blocked. + if ( !is_network_admin() && !is_user_admin() && current_user_can('manage_options') && '1' != get_option('blog_public') ) { + $title = apply_filters('privacy_on_link_title', __('Your site is asking search engines not to index its content') ); + $content = apply_filters('privacy_on_link_text', __('Search Engines Blocked') ); + + echo "

$content

"; + } + + update_right_now_message(); + + echo "\n\t".'
'; + do_action( 'rightnow_end' ); + do_action( 'activity_box_end' ); +} + +function wp_network_dashboard_right_now() { + $actions = array(); + if ( current_user_can('create_sites') ) + $actions['create-site'] = '' . __( 'Create a New Site' ) . ''; + if ( current_user_can('create_users') ) + $actions['create-user'] = '' . __( 'Create a New User' ) . ''; + + $c_users = get_user_count(); + $c_blogs = get_blog_count(); + + $user_text = sprintf( _n( '%s user', '%s users', $c_users ), number_format_i18n( $c_users ) ); + $blog_text = sprintf( _n( '%s site', '%s sites', $c_blogs ), number_format_i18n( $c_blogs ) ); + + $sentence = sprintf( __( 'You have %1$s and %2$s.' ), $blog_text, $user_text ); + + if ( $actions ) { + echo '
    '; + foreach ( $actions as $class => $action ) { + $actions[ $class ] = "\t
  • $action"; + } + echo implode( " |
  • \n", $actions ) . "\n"; + echo '
'; + } +?> +
+ +

+ + +
+

+ + 'submit_users' ) ); ?> +

+
+ +
+

+ + 'submit_sites' ) ); ?> +

+
+

' . __( 'Post published. View post | Edit post' ) . '

', esc_url( $view ), $edit ); + else + printf( '

' . __( 'Post submitted. Preview post | Edit post' ) . '

', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit ); + } else { + printf( '

' . __( 'Draft saved. Preview post | Edit post' ) . '

', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit ); + $drafts_query = new WP_Query( array( + 'post_type' => 'post', + 'post_status' => 'draft', + 'author' => $GLOBALS['current_user']->ID, + 'posts_per_page' => 1, + 'orderby' => 'modified', + 'order' => 'DESC' + ) ); + + if ( $drafts_query->posts ) + $drafts =& $drafts_query->posts; + } + printf('

' . __('You can also try %s, easy blogging from anywhere on the Web.') . '

', '' . __('Press This') . '' ); + $_REQUEST = array(); // hack for get_default_post_to_edit() + } + + /* Check if a new auto-draft (= no new post_ID) is needed or if the old can be used */ + $last_post_id = (int) get_user_option( 'dashboard_quick_press_last_post_id' ); // Get the last post_ID + if ( $last_post_id ) { + $post = get_post( $last_post_id ); + if ( empty( $post ) || $post->post_status != 'auto-draft' ) { // auto-draft doesn't exists anymore + $post = get_default_post_to_edit('post', true); + update_user_option( (int) $GLOBALS['current_user']->ID, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID + } else { + $post->post_title = ''; // Remove the auto draft title + } + } else { + $post = get_default_post_to_edit('post', true); + update_user_option( (int) $GLOBALS['current_user']->ID, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID + } + + $post_ID = (int) $post->ID; +?> + +
+

+
+ +
+ + +
+ +
+ + +

+
+ +
+ + + +

+
+ +
+ +

+ + + + + 'save-post', 'tabindex'=> 4 ) ); ?> + + + + + +
+

+ +
+ + 'post', + 'post_status' => 'draft', + 'author' => $GLOBALS['current_user']->ID, + 'posts_per_page' => 5, + 'orderby' => 'modified', + 'order' => 'DESC' + ) ); + $drafts =& $drafts_query->posts; + } + + if ( $drafts && is_array( $drafts ) ) { + $list = array(); + foreach ( $drafts as $draft ) { + $url = get_edit_post_link( $draft->ID ); + $title = _draft_or_post_title( $draft->ID ); + $item = "

" . esc_html($title) . " " . get_the_time( get_option( 'date_format' ), $draft ) . '

'; + if ( $the_content = preg_split( '#\s#', strip_tags( $draft->post_content ), 11, PREG_SPLIT_NO_EMPTY ) ) + $item .= '

' . join( ' ', array_slice( $the_content, 0, 10 ) ) . ( 10 < count( $the_content ) ? '…' : '' ) . '

'; + $list[] = $item; + } +?> +
    +
  • \n
  • ", $list ); ?>
  • +
+

+ $total_items * 5, 'offset' => 0 ); + if ( ! current_user_can( 'edit_posts' ) ) + $comments_query['status'] = 'approve'; + + while ( count( $comments ) < $total_items && $possible = get_comments( $comments_query ) ) { + foreach ( $possible as $comment ) { + if ( ! current_user_can( 'read_post', $comment->comment_post_ID ) ) + continue; + $comments[] = $comment; + if ( count( $comments ) == $total_items ) + break 2; + } + $comments_query['offset'] += $comments_query['number']; + $comments_query['number'] = $total_items * 10; + } + + if ( $comments ) { + echo '
'; + foreach ( $comments as $comment ) + _wp_dashboard_recent_comments_row( $comment ); + echo '
'; + + if ( current_user_can('edit_posts') ) + _get_list_table('WP_Comments_List_Table')->views(); + + wp_comment_reply( -1, false, 'dashboard', false ); + wp_comment_trashnotice(); + } else { + echo '

' . __( 'No comments yet.' ) . '

'; + } +} + +function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) { + $GLOBALS['comment'] =& $comment; + + $comment_post_url = get_edit_post_link( $comment->comment_post_ID ); + $comment_post_title = strip_tags(get_the_title( $comment->comment_post_ID )); + $comment_post_link = "$comment_post_title"; + $comment_link = '#'; + + $actions_string = ''; + if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) { + // preorder it: Approve | Reply | Edit | Spam | Trash + $actions = array( + 'approve' => '', 'unapprove' => '', + 'reply' => '', + 'edit' => '', + 'spam' => '', + 'trash' => '', 'delete' => '' + ); + + $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) ); + $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) ); + + $approve_url = esc_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" ); + $unapprove_url = esc_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" ); + $spam_url = esc_url( "comment.php?action=spamcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); + $trash_url = esc_url( "comment.php?action=trashcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); + $delete_url = esc_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); + + $actions['approve'] = "" . __( 'Approve' ) . ''; + $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; + $actions['edit'] = "". __('Edit') . ''; + $actions['reply'] = '' . __('Reply') . ''; + $actions['spam'] = "" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . ''; + if ( !EMPTY_TRASH_DAYS ) + $actions['delete'] = "" . __('Delete Permanently') . ''; + else + $actions['trash'] = "" . _x('Trash', 'verb') . ''; + + $actions = apply_filters( 'comment_row_actions', array_filter($actions), $comment ); + + $i = 0; + foreach ( $actions as $action => $link ) { + ++$i; + ( ( ('approve' == $action || 'unapprove' == $action) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; + + // Reply and quickedit need a hide-if-no-js span + if ( 'reply' == $action || 'quickedit' == $action ) + $action .= ' hide-if-no-js'; + + $actions_string .= "$sep$link"; + } + } + +?> + +
comment_ID) ) ); ?>> + comment_type || 'comment' == $comment->comment_type ) : ?> + + + +
+

+ ' . get_comment_author_link() . '', $comment_post_link.' '.$comment_link, ' ' . __( '[Pending]' ) . '' ); ?> +

+ + comment_type ) : + case 'pingback' : + $type = __( 'Pingback' ); + break; + case 'trackback' : + $type = __( 'Trackback' ); + break; + default : + $type = ucwords( $comment->comment_type ); + endswitch; + $type = esc_html( $type ); + ?> +
+ +

$type", $comment_post_link." ".$comment_link ); ?>

+

+ + +

+

+
+
+'; + echo '

'; +} + +function wp_dashboard_incoming_links() { + wp_dashboard_cached_rss_widget( 'dashboard_incoming_links', 'wp_dashboard_incoming_links_output' ); +} + +/** + * Display incoming links dashboard widget content. + * + * @since 2.5.0 + */ +function wp_dashboard_incoming_links_output() { + $widgets = get_option( 'dashboard_widget_options' ); + @extract( @$widgets['dashboard_incoming_links'], EXTR_SKIP ); + $rss = fetch_feed( $url ); + + if ( is_wp_error($rss) ) { + if ( is_admin() || current_user_can('manage_options') ) { + echo '

'; + printf(__('RSS Error: %s'), $rss->get_error_message()); + echo '

'; + } + return; + } + + if ( !$rss->get_item_quantity() ) { + echo '

' . __('This dashboard widget queries Google Blog Search so that when another blog links to your site it will show up here. It has found no incoming links… yet. It’s okay — there is no rush.') . "

\n"; + $rss->__destruct(); + unset($rss); + return; + } + + echo "
    \n"; + + if ( !isset($items) ) + $items = 10; + + foreach ( $rss->get_items(0, $items) as $item ) { + $publisher = ''; + $site_link = ''; + $link = ''; + $content = ''; + $date = ''; + $link = esc_url( strip_tags( $item->get_link() ) ); + + $author = $item->get_author(); + if ( $author ) { + $site_link = esc_url( strip_tags( $author->get_link() ) ); + + if ( !$publisher = esc_html( strip_tags( $author->get_name() ) ) ) + $publisher = __( 'Somebody' ); + } else { + $publisher = __( 'Somebody' ); + } + if ( $site_link ) + $publisher = "$publisher"; + else + $publisher = "$publisher"; + + $content = $item->get_content(); + $content = wp_html_excerpt($content, 50) . ' ...'; + + if ( $link ) + /* translators: incoming links feed, %1$s is other person, %3$s is content */ + $text = __( '%1$s linked here saying, "%3$s"' ); + else + /* translators: incoming links feed, %1$s is other person, %3$s is content */ + $text = __( '%1$s linked here saying, "%3$s"' ); + + if ( !empty($show_date) ) { + if ( !empty($show_author) || !empty($show_summary) ) + /* translators: incoming links feed, %4$s is the date */ + $text .= ' ' . __( 'on %4$s' ); + $date = esc_html( strip_tags( $item->get_date() ) ); + $date = strtotime( $date ); + $date = gmdate( get_option( 'date_format' ), $date ); + } + + echo "\t
  • " . sprintf( $text, $publisher, $link, $content, $date ) . "
  • \n"; + } + + echo "
\n"; + $rss->__destruct(); + unset($rss); +} + +function wp_dashboard_incoming_links_control() { + wp_dashboard_rss_control( 'dashboard_incoming_links', array( 'title' => false, 'show_summary' => false, 'show_author' => false ) ); +} + +function wp_dashboard_primary() { + wp_dashboard_cached_rss_widget( 'dashboard_primary', 'wp_dashboard_rss_output' ); +} + +function wp_dashboard_primary_control() { + wp_dashboard_rss_control( 'dashboard_primary' ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param string $widget_id + */ +function wp_dashboard_rss_output( $widget_id ) { + $widgets = get_option( 'dashboard_widget_options' ); + echo '
'; + wp_widget_rss_output( $widgets[$widget_id] ); + echo "
"; +} + +function wp_dashboard_secondary() { + wp_dashboard_cached_rss_widget( 'dashboard_secondary', 'wp_dashboard_secondary_output' ); +} + +function wp_dashboard_secondary_control() { + wp_dashboard_rss_control( 'dashboard_secondary' ); +} + +/** + * Display secondary dashboard RSS widget feed. + * + * @since 2.5.0 + * + * @return unknown + */ +function wp_dashboard_secondary_output() { + $widgets = get_option( 'dashboard_widget_options' ); + @extract( @$widgets['dashboard_secondary'], EXTR_SKIP ); + $rss = @fetch_feed( $url ); + + if ( is_wp_error($rss) ) { + if ( is_admin() || current_user_can('manage_options') ) { + echo '

'; + printf(__('RSS Error: %s'), $rss->get_error_message()); + echo '

'; + } + } elseif ( !$rss->get_item_quantity() ) { + $rss->__destruct(); + unset($rss); + return false; + } else { + echo '
'; + wp_widget_rss_output( $rss, $widgets['dashboard_secondary'] ); + echo '
'; + $rss->__destruct(); + unset($rss); + } +} + +function wp_dashboard_plugins() { + wp_dashboard_cached_rss_widget( 'dashboard_plugins', 'wp_dashboard_plugins_output', array( + 'http://wordpress.org/extend/plugins/rss/browse/popular/', + 'http://wordpress.org/extend/plugins/rss/browse/new/' + ) ); +} + +/** + * Display plugins most popular, newest plugins, and recently updated widget text. + * + * @since 2.5.0 + */ +function wp_dashboard_plugins_output() { + $popular = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/popular/' ); + $new = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/new/' ); + + if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) { + $plugin_slugs = array_keys( get_plugins() ); + set_transient( 'plugin_slugs', $plugin_slugs, 86400 ); + } + + foreach ( array( 'popular' => __('Most Popular'), 'new' => __('Newest Plugins') ) as $feed => $label ) { + if ( is_wp_error($$feed) || !$$feed->get_item_quantity() ) + continue; + + $items = $$feed->get_items(0, 5); + + // Pick a random, non-installed plugin + while ( true ) { + // Abort this foreach loop iteration if there's no plugins left of this type + if ( 0 == count($items) ) + continue 2; + + $item_key = array_rand($items); + $item = $items[$item_key]; + + list($link, $frag) = explode( '#', $item->get_link() ); + + $link = esc_url($link); + if ( preg_match( '|/([^/]+?)/?$|', $link, $matches ) ) + $slug = $matches[1]; + else { + unset( $items[$item_key] ); + continue; + } + + // Is this random plugin's slug already installed? If so, try again. + reset( $plugin_slugs ); + foreach ( $plugin_slugs as $plugin_slug ) { + if ( $slug == substr( $plugin_slug, 0, strlen( $slug ) ) ) { + unset( $items[$item_key] ); + continue 2; + } + } + + // If we get to this point, then the random plugin isn't installed and we can stop the while(). + break; + } + + // Eliminate some common badly formed plugin descriptions + while ( ( null !== $item_key = array_rand($items) ) && false !== strpos( $items[$item_key]->get_description(), 'Plugin Name:' ) ) + unset($items[$item_key]); + + if ( !isset($items[$item_key]) ) + continue; + + // current bbPress feed item titles are: user on "topic title" + if ( preg_match( '/"(.*)"/s', $item->get_title(), $matches ) ) + $title = $matches[1]; + else // but let's make it forward compatible if things change + $title = $item->get_title(); + $title = esc_html( $title ); + + $description = esc_html( strip_tags(@html_entity_decode($item->get_description(), ENT_QUOTES, get_option('blog_charset'))) ); + + $ilink = wp_nonce_url('plugin-install.php?tab=plugin-information&plugin=' . $slug, 'install-plugin_' . $slug) . + '&TB_iframe=true&width=600&height=800'; + + echo "

$label

\n"; + echo "
$title
 (" . __( 'Install' ) . ")\n"; + echo "

$description

\n"; + + $$feed->__destruct(); + unset($$feed); + } +} + +/** + * Checks to see if all of the feed url in $check_urls are cached. + * + * If $check_urls is empty, look for the rss feed url found in the dashboard + * widget options of $widget_id. If cached, call $callback, a function that + * echoes out output for this widget. If not cache, echo a "Loading..." stub + * which is later replaced by AJAX call (see top of /wp-admin/index.php) + * + * @since 2.5.0 + * + * @param string $widget_id + * @param callback $callback + * @param array $check_urls RSS feeds + * @return bool False on failure. True on success. + */ +function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = array() ) { + $loading = '

' . __( 'Loading…' ) . '

' . __( 'This widget requires JavaScript.' ) . '

'; + $doing_ajax = ( defined('DOING_AJAX') && DOING_AJAX ); + + if ( empty($check_urls) ) { + $widgets = get_option( 'dashboard_widget_options' ); + if ( empty($widgets[$widget_id]['url']) && ! $doing_ajax ) { + echo $loading; + return false; + } + $check_urls = array( $widgets[$widget_id]['url'] ); + } + + $cache_key = 'dash_' . md5( $widget_id ); + if ( false !== ( $output = get_transient( $cache_key ) ) ) { + echo $output; + return true; + } + + if ( ! $doing_ajax ) { + echo $loading; + return false; + } + + if ( $callback && is_callable( $callback ) ) { + $args = array_slice( func_get_args(), 2 ); + array_unshift( $args, $widget_id ); + ob_start(); + call_user_func_array( $callback, $args ); + set_transient( $cache_key, ob_get_flush(), 43200); // Default lifetime in cache of 12 hours (same as the feeds) + } + + return true; +} + +/* Dashboard Widgets Controls */ + +// Calls widget_control callback +/** + * Calls widget control callback. + * + * @since 2.5.0 + * + * @param int $widget_control_id Registered Widget ID. + */ +function wp_dashboard_trigger_widget_control( $widget_control_id = false ) { + global $wp_dashboard_control_callbacks; + + if ( is_scalar($widget_control_id) && $widget_control_id && isset($wp_dashboard_control_callbacks[$widget_control_id]) && is_callable($wp_dashboard_control_callbacks[$widget_control_id]) ) { + call_user_func( $wp_dashboard_control_callbacks[$widget_control_id], '', array( 'id' => $widget_control_id, 'callback' => $wp_dashboard_control_callbacks[$widget_control_id] ) ); + } +} + +/** + * The RSS dashboard widget control. + * + * Sets up $args to be used as input to wp_widget_rss_form(). Handles POST data + * from RSS-type widgets. + * + * @since 2.5.0 + * + * @param string $widget_id + * @param array $form_inputs + */ +function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) { + if ( !$widget_options = get_option( 'dashboard_widget_options' ) ) + $widget_options = array(); + + if ( !isset($widget_options[$widget_id]) ) + $widget_options[$widget_id] = array(); + + $number = 1; // Hack to use wp_widget_rss_form() + $widget_options[$widget_id]['number'] = $number; + + if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget-rss'][$number]) ) { + $_POST['widget-rss'][$number] = stripslashes_deep( $_POST['widget-rss'][$number] ); + $widget_options[$widget_id] = wp_widget_rss_process( $_POST['widget-rss'][$number] ); + // title is optional. If black, fill it if possible + if ( !$widget_options[$widget_id]['title'] && isset($_POST['widget-rss'][$number]['title']) ) { + $rss = fetch_feed($widget_options[$widget_id]['url']); + if ( is_wp_error($rss) ) { + $widget_options[$widget_id]['title'] = htmlentities(__('Unknown Feed')); + } else { + $widget_options[$widget_id]['title'] = htmlentities(strip_tags($rss->get_title())); + $rss->__destruct(); + unset($rss); + } + } + update_option( 'dashboard_widget_options', $widget_options ); + $cache_key = 'dash_' . md5( $widget_id ); + delete_transient( $cache_key ); + } + + wp_widget_rss_form( $widget_options[$widget_id], $form_inputs ); +} + +// Display File upload quota on dashboard +function wp_dashboard_quota() { + if ( !is_multisite() || !current_user_can('upload_files') || get_site_option( 'upload_space_check_disabled' ) ) + return true; + + $quota = get_space_allowed(); + $used = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024; + + if ( $used > $quota ) + $percentused = '100'; + else + $percentused = ( $used / $quota ) * 100; + $used_color = ( $percentused >= 70 ) ? ' spam' : ''; + $used = round( $used, 2 ); + $percentused = number_format( $percentused ); + + ?> +

+
+ + + + + +
%2$sMB' ), esc_url( admin_url( 'upload.php' ) ), $quota ); ?>
+
+
+ + + + + +
%2$sMB (%3$s%%)' ), esc_url( admin_url( 'upload.php' ) ), $used, $percentused ); ?>
+
+
+ %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser." ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ) ); + } else { + $msg = sprintf( __( "It looks like you're using an old version of %s. For the best WordPress experience, please update your browser." ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ) ); + } + + $browser_nag_class = ''; + if ( !empty( $response['img_src'] ) ) { + $img_src = ( is_ssl() && ! empty( $response['img_src_ssl'] ) )? $response['img_src_ssl'] : $response['img_src']; + + $notice .= '
'; + $browser_nag_class = ' has-browser-icon'; + } + $notice .= "

{$msg}

"; + + $browsehappy = 'http://browsehappy.com/'; + $locale = get_locale(); + if ( 'en_US' !== $locale ) + $browsehappy = add_query_arg( 'locale', $locale, $browsehappy ); + + $notice .= '

' . sprintf( __( 'Update %2$s or learn how to browse happy' ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ), esc_url( $browsehappy ) ) . '

'; + $notice .= '

' . __( 'Dismiss' ) . '

'; + $notice .= '
'; + } + + echo apply_filters( 'browse-happy-notice', $notice, $response ); +} + +function dashboard_browser_nag_class( $classes ) { + $response = wp_check_browser_version(); + + if ( $response && $response['insecure'] ) + $classes[] = 'browser-insecure'; + + return $classes; +} + +/** + * Check if the user needs a browser update + * + * @since 3.2.0 + * + * @return array|bool False on failure, array of browser data on success. + */ +function wp_check_browser_version() { + if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) + return false; + + $key = md5( $_SERVER['HTTP_USER_AGENT'] ); + + if ( false === ($response = get_site_transient('browser_' . $key) ) ) { + global $wp_version; + + $options = array( + 'body' => array( 'useragent' => $_SERVER['HTTP_USER_AGENT'] ), + 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url() + ); + + $response = wp_remote_post( 'http://api.wordpress.org/core/browse-happy/1.0/', $options ); + + if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) + return false; + + /** + * Response should be an array with: + * 'name' - string - A user friendly browser name + * 'version' - string - The most recent version of the browser + * 'current_version' - string - The version of the browser the user is using + * 'upgrade' - boolean - Whether the browser needs an upgrade + * 'insecure' - boolean - Whether the browser is deemed insecure + * 'upgrade_url' - string - The url to visit to upgrade + * 'img_src' - string - An image representing the browser + * 'img_src_ssl' - string - An image (over SSL) representing the browser + */ + $response = maybe_unserialize( wp_remote_retrieve_body( $response ) ); + + if ( ! is_array( $response ) ) + return false; + + set_site_transient( 'browser_' . $key, $response, 604800 ); // cache for 1 week + } + + return $response; +} + +/** + * Empty function usable by plugins to output empty dashboard widget (to be populated later by JS). + */ +function wp_dashboard_empty() {} + +/** + * Displays a welcome panel to introduce users to WordPress. + * + * @since 3.3.0 + */ +function wp_welcome_panel() { + global $wp_version; + + if ( ! current_user_can( 'edit_theme_options' ) ) + return; + + $classes = 'welcome-panel'; + + $option = get_user_meta( get_current_user_id(), 'show_welcome_panel', true ); + // 0 = hide, 1 = toggled to show or single site creator, 2 = multisite site owner + $hide = 0 == $option || ( 2 == $option && wp_get_current_user()->user_email != get_option( 'admin_email' ) ); + if ( $hide ) + $classes .= ' hidden'; + + list( $display_version ) = explode( '-', $wp_version ); + ?> +
+ + +
+ +
+

+

First Steps with WordPress. If you’d rather dive right in, here are a few things most people do first when they set up a new WordPress site. If you need help, use the Help tabs in the upper right corner to get information on how to use your current screen and where to go for more assistance.' ); ?>

+
+
+

+

+
    +
  • Choose your privacy setting' ), esc_url( admin_url('options-privacy.php') ) ); ?>
  • +
  • Select your tagline and time zone' ), esc_url( admin_url('options-general.php') ) ); ?>
  • +
  • Turn comments on or off' ), esc_url( admin_url('options-discussion.php') ) ); ?>
  • +
  • Fill in your profile' ), esc_url( admin_url('profile.php') ) ); ?>
  • +
+
+
+

+

+
    +
  • sample page and post' ), esc_url( get_permalink( 2 ) ), esc_url( get_permalink( 1 ) ) ); ?>
  • +
  • sample page and post' ), esc_url( admin_url('edit.php?post_type=page') ), esc_url( admin_url('edit.php') ) ); ?>
  • +
  • Create an About Me page' ), esc_url( admin_url('edit.php?post_type=page') ) ); ?>
  • +
  • Write your first post' ), esc_url( admin_url('post-new.php') ) ); ?>
  • +
+
+
+

+ errors() ) : + echo '

'; + printf( __( 'Install a theme to get started customizing your site.' ), esc_url( admin_url( 'themes.php' ) ) ); + echo '

'; + else: + $customize_links = array(); + if ( 'twentyeleven' == $theme->get_stylesheet() ) + $customize_links[] = sprintf( __( 'Choose light or dark' ), esc_url( admin_url( 'themes.php?page=theme_options' ) ) ); + + if ( current_theme_supports( 'custom-background' ) ) + $customize_links[] = sprintf( __( 'Set a background color' ), esc_url( admin_url( 'themes.php?page=custom-background' ) ) ); + + if ( current_theme_supports( 'custom-header' ) ) + $customize_links[] = sprintf( __( 'Select a new header image' ), esc_url( admin_url( 'themes.php?page=custom-header' ) ) ); + + if ( current_theme_supports( 'widgets' ) ) + $customize_links[] = sprintf( __( 'Add some widgets' ), esc_url( admin_url( 'widgets.php' ) ) ); + + if ( ! empty( $customize_links ) ) { + echo '

'; + printf( __( 'Use the current theme — %1$s — or choose a new one. If you stick with %1$s, here are a few ways to make your site look unique.' ), $theme->display('Name'), esc_url( admin_url( 'themes.php' ) ) ); + echo '

'; + ?> +
    + +
  • + +
+ '; + printf( __( 'Use the current theme — %1$s — or choose a new one.' ), $theme->display('Name'), esc_url( admin_url( 'themes.php' ) ) ); + echo '

'; + } + endif; ?> +
+
+

Dismiss this message.' ), esc_url( admin_url( '?welcome=0' ) ) ); ?>

+
+
+ 0) ); + + if ( $categories ) { + foreach ( $categories as $category ) { + if ( $currentcat != $category->term_id && $parent == $category->parent) { + $pad = str_repeat( '– ', $level ); + $category->name = esc_html( $category->name ); + echo "\n\t"; + wp_dropdown_cats( $currentcat, $currentparent, $category->term_id, $level +1, $categories ); + } + } + } else { + return false; + } +} + +/** + * Register a setting and its sanitization callback + * + * @since 2.7.0 + * @deprecated 3.0.0 + * @deprecated Use register_setting() + * @see register_setting() + * + * @param string $option_group A settings group name. Should correspond to a whitelisted option key name. + * Default whitelisted option key names include "general," "discussion," and "reading," among others. + * @param string $option_name The name of an option to sanitize and save. + * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value. + * @return unknown + */ +function add_option_update_handler( $option_group, $option_name, $sanitize_callback = '' ) { + _deprecated_function( __FUNCTION__, '3.0', 'register_setting()' ); + return register_setting( $option_group, $option_name, $sanitize_callback ); +} + +/** + * Unregister a setting + * + * @since 2.7.0 + * @deprecated 3.0.0 + * @deprecated Use unregister_setting() + * @see unregister_setting() + * + * @param unknown_type $option_group + * @param unknown_type $option_name + * @param unknown_type $sanitize_callback + * @return unknown + */ +function remove_option_update_handler( $option_group, $option_name, $sanitize_callback = '' ) { + _deprecated_function( __FUNCTION__, '3.0', 'unregister_setting()' ); + return unregister_setting( $option_group, $option_name, $sanitize_callback ); +} + +/** + * Determines the language to use for CodePress syntax highlighting. + * + * @since 2.8.0 + * @deprecated 3.0.0 + * + * @param string $filename +**/ +function codepress_get_lang( $filename ) { + _deprecated_function( __FUNCTION__, '3.0' ); + return; +} + +/** + * Adds Javascript required to make CodePress work on the theme/plugin editors. + * + * @since 2.8.0 + * @deprecated 3.0.0 +**/ +function codepress_footer_js() { + _deprecated_function( __FUNCTION__, '3.0' ); + return; +} + +/** + * Determine whether to use CodePress. + * + * @since 2.8 + * @deprecated 3.0.0 +**/ +function use_codepress() { + _deprecated_function( __FUNCTION__, '3.0' ); + return; +} + +/** + * @deprecated 3.1.0 + * + * @return array List of user IDs. + */ +function get_author_user_ids() { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + if ( !is_multisite() ) + $level_key = $wpdb->get_blog_prefix() . 'user_level'; + else + $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels + + return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value != '0'", $level_key) ); +} + +/** + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @return array|bool List of editable authors. False if no editable users. + */ +function get_editable_authors( $user_id ) { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + + $editable = get_editable_user_ids( $user_id ); + + if ( !$editable ) { + return false; + } else { + $editable = join(',', $editable); + $authors = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($editable) ORDER BY display_name" ); + } + + return apply_filters('get_editable_authors', $authors); +} + +/** + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @param bool $exclude_zeros Optional, default is true. Whether to exclude zeros. + * @return unknown + */ +function get_editable_user_ids( $user_id, $exclude_zeros = true, $post_type = 'post' ) { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + + $user = new WP_User( $user_id ); + $post_type_obj = get_post_type_object($post_type); + + if ( ! $user->has_cap($post_type_obj->cap->edit_others_posts) ) { + if ( $user->has_cap($post_type_obj->cap->edit_posts) || ! $exclude_zeros ) + return array($user->ID); + else + return array(); + } + + if ( !is_multisite() ) + $level_key = $wpdb->get_blog_prefix() . 'user_level'; + else + $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels + + $query = $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s", $level_key); + if ( $exclude_zeros ) + $query .= " AND meta_value != '0'"; + + return $wpdb->get_col( $query ); +} + +/** + * @deprecated 3.1.0 + */ +function get_nonauthor_user_ids() { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + + if ( !is_multisite() ) + $level_key = $wpdb->get_blog_prefix() . 'user_level'; + else + $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels + + return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = '0'", $level_key) ); +} + +if ( !class_exists('WP_User_Search') ) : +/** + * WordPress User Search class. + * + * @since 2.1.0 + * @deprecated 3.1.0 + */ +class WP_User_Search { + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var unknown_type + */ + var $results; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var unknown_type + */ + var $search_term; + + /** + * Page number. + * + * @since 2.1.0 + * @access private + * @var int + */ + var $page; + + /** + * Role name that users have. + * + * @since 2.5.0 + * @access private + * @var string + */ + var $role; + + /** + * Raw page number. + * + * @since 2.1.0 + * @access private + * @var int|bool + */ + var $raw_page; + + /** + * Amount of users to display per page. + * + * @since 2.1.0 + * @access public + * @var int + */ + var $users_per_page = 50; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var unknown_type + */ + var $first_user; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var int + */ + var $last_user; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var string + */ + var $query_limit; + + /** + * {@internal Missing Description}} + * + * @since 3.0.0 + * @access private + * @var string + */ + var $query_orderby; + + /** + * {@internal Missing Description}} + * + * @since 3.0.0 + * @access private + * @var string + */ + var $query_from; + + /** + * {@internal Missing Description}} + * + * @since 3.0.0 + * @access private + * @var string + */ + var $query_where; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var int + */ + var $total_users_for_query = 0; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var bool + */ + var $too_many_total_users = false; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var unknown_type + */ + var $search_errors; + + /** + * {@internal Missing Description}} + * + * @since 2.7.0 + * @access private + * @var unknown_type + */ + var $paging_text; + + /** + * PHP4 Constructor - Sets up the object properties. + * + * @since 2.1.0 + * + * @param string $search_term Search terms string. + * @param int $page Optional. Page ID. + * @param string $role Role name. + * @return WP_User_Search + */ + function WP_User_Search ($search_term = '', $page = '', $role = '') { + _deprecated_function( __FUNCTION__, '3.1', 'WP_User_Query' ); + + $this->search_term = stripslashes( $search_term ); + $this->raw_page = ( '' == $page ) ? false : (int) $page; + $this->page = (int) ( '' == $page ) ? 1 : $page; + $this->role = $role; + + $this->prepare_query(); + $this->query(); + $this->prepare_vars_for_template_usage(); + $this->do_paging(); + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function prepare_query() { + global $wpdb; + $this->first_user = ($this->page - 1) * $this->users_per_page; + + $this->query_limit = $wpdb->prepare(" LIMIT %d, %d", $this->first_user, $this->users_per_page); + $this->query_orderby = ' ORDER BY user_login'; + + $search_sql = ''; + if ( $this->search_term ) { + $searches = array(); + $search_sql = 'AND ('; + foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col ) + $searches[] = $wpdb->prepare( $col . ' LIKE %s', '%' . like_escape($this->search_term) . '%' ); + $search_sql .= implode(' OR ', $searches); + $search_sql .= ')'; + } + + $this->query_from = " FROM $wpdb->users"; + $this->query_where = " WHERE 1=1 $search_sql"; + + if ( $this->role ) { + $this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id"; + $this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%'); + } elseif ( is_multisite() ) { + $level_key = $wpdb->prefix . 'capabilities'; // wpmu site admins don't have user_levels + $this->query_from .= ", $wpdb->usermeta"; + $this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'"; + } + + do_action_ref_array( 'pre_user_search', array( &$this ) ); + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function query() { + global $wpdb; + + $this->results = $wpdb->get_col("SELECT DISTINCT($wpdb->users.ID)" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit); + + if ( $this->results ) + $this->total_users_for_query = $wpdb->get_var("SELECT COUNT(DISTINCT($wpdb->users.ID))" . $this->query_from . $this->query_where); // no limit + else + $this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!')); + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function prepare_vars_for_template_usage() { + $this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function do_paging() { + if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results + $args = array(); + if( ! empty($this->search_term) ) + $args['usersearch'] = urlencode($this->search_term); + if( ! empty($this->role) ) + $args['role'] = urlencode($this->role); + + $this->paging_text = paginate_links( array( + 'total' => ceil($this->total_users_for_query / $this->users_per_page), + 'current' => $this->page, + 'base' => 'users.php?%_%', + 'format' => 'userspage=%#%', + 'add_args' => $args + ) ); + if ( $this->paging_text ) { + $this->paging_text = sprintf( '' . __( 'Displaying %s–%s of %s' ) . '%s', + number_format_i18n( ( $this->page - 1 ) * $this->users_per_page + 1 ), + number_format_i18n( min( $this->page * $this->users_per_page, $this->total_users_for_query ) ), + number_format_i18n( $this->total_users_for_query ), + $this->paging_text + ); + } + } + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + * + * @return unknown + */ + function get_results() { + return (array) $this->results; + } + + /** + * Displaying paging text. + * + * @see do_paging() Builds paging text. + * + * @since 2.1.0 + * @access public + */ + function page_links() { + echo $this->paging_text; + } + + /** + * Whether paging is enabled. + * + * @see do_paging() Builds paging text. + * + * @since 2.1.0 + * @access public + * + * @return bool + */ + function results_are_paged() { + if ( $this->paging_text ) + return true; + return false; + } + + /** + * Whether there are search terms. + * + * @since 2.1.0 + * @access public + * + * @return bool + */ + function is_search() { + if ( $this->search_term ) + return true; + return false; + } +} +endif; + +/** + * Retrieve editable posts from other users. + * + * @deprecated 3.1.0 + * + * @param int $user_id User ID to not retrieve posts from. + * @param string $type Optional, defaults to 'any'. Post type to retrieve, can be 'draft' or 'pending'. + * @return array List of posts from others. + */ +function get_others_unpublished_posts($user_id, $type='any') { + _deprecated_function( __FUNCTION__, '3.1' ); + + global $wpdb; + + $editable = get_editable_user_ids( $user_id ); + + if ( in_array($type, array('draft', 'pending')) ) + $type_sql = " post_status = '$type' "; + else + $type_sql = " ( post_status = 'draft' OR post_status = 'pending' ) "; + + $dir = ( 'pending' == $type ) ? 'ASC' : 'DESC'; + + if ( !$editable ) { + $other_unpubs = ''; + } else { + $editable = join(',', $editable); + $other_unpubs = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title, post_author FROM $wpdb->posts WHERE post_type = 'post' AND $type_sql AND post_author IN ($editable) AND post_author != %d ORDER BY post_modified $dir", $user_id) ); + } + + return apply_filters('get_others_drafts', $other_unpubs); +} + +/** + * Retrieve drafts from other users. + * + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @return array List of drafts from other users. + */ +function get_others_drafts($user_id) { + _deprecated_function( __FUNCTION__, '3.1' ); + + return get_others_unpublished_posts($user_id, 'draft'); +} + +/** + * Retrieve pending review posts from other users. + * + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @return array List of posts with pending review post type from other users. + */ +function get_others_pending($user_id) { + _deprecated_function( __FUNCTION__, '3.1' ); + + return get_others_unpublished_posts($user_id, 'pending'); +} + +/** + * Output the QuickPress dashboard widget. + * + * @since 3.0.0 + * @deprecated 3.2.0 + * @deprecated Use wp_dashboard_quick_press() + * @see wp_dashboard_quick_press() + */ +function wp_dashboard_quick_press_output() { + _deprecated_function( __FUNCTION__, '3.2', 'wp_dashboard_quick_press()' ); + wp_dashboard_quick_press(); +} + +/** + * @since 2.7.0 + * @deprecated 3.3 + * @deprecated Use wp_editor() + * @see wp_editor() + */ +function wp_tiny_mce( $teeny = false, $settings = false ) { + _deprecated_function( __FUNCTION__, '3.3', 'wp_editor()' ); + + static $num = 1; + + if ( ! class_exists('_WP_Editors' ) ) + require_once( ABSPATH . WPINC . '/class-wp-editor.php' ); + + $editor_id = 'content' . $num++; + + $set = array( + 'teeny' => $teeny, + 'tinymce' => $settings ? $settings : true, + 'quicktags' => false + ); + + $set = _WP_Editors::parse_settings($editor_id, $set); + _WP_Editors::editor_settings($editor_id, $set); +} + +/** + * @deprecated 3.3.0 + * @deprecated Use wp_editor() + * @see wp_editor() + */ +function wp_preload_dialogs() { + _deprecated_function( __FUNCTION__, '3.3', 'wp_editor()' ); +} + +/** + * @deprecated 3.3.0 + * @deprecated Use wp_editor() + * @see wp_editor() + */ +function wp_print_editor_js() { + _deprecated_function( __FUNCTION__, '3.3', 'wp_editor()' ); +} + +/** + * @deprecated 3.3.0 + * @deprecated Use wp_editor() + * @see wp_editor() + */ +function wp_quicktags() { + _deprecated_function( __FUNCTION__, '3.3', 'wp_editor()' ); +} + +/** + * Returns the screen layout options. + * + * @since 2.8.0 + * @deprecated 3.3.0 + * @deprecated Use $current_screen->render_screen_layout() + * @see WP_Screen::render_screen_layout() + */ +function screen_layout( $screen ) { + _deprecated_function( __FUNCTION__, '3.3', '$current_screen->render_screen_layout()' ); + + $current_screen = get_current_screen(); + + if ( ! $current_screen ) + return ''; + + ob_start(); + $current_screen->render_screen_layout(); + return ob_get_clean(); +} + +/** + * Returns the screen's per-page options. + * + * @since 2.8.0 + * @deprecated 3.3.0 + * @deprecated Use $current_screen->render_per_page_options() + * @see WP_Screen::render_per_page_options() + */ +function screen_options( $screen ) { + _deprecated_function( __FUNCTION__, '3.3', '$current_screen->render_per_page_options()' ); + + $current_screen = get_current_screen(); + + if ( ! $current_screen ) + return ''; + + ob_start(); + $current_screen->render_per_page_options(); + return ob_get_clean(); +} + +/** + * Renders the screen's help. + * + * @since 2.7.0 + * @deprecated 3.3.0 + * @deprecated Use $current_screen->render_screen_meta() + * @see WP_Screen::render_screen_meta() + */ +function screen_meta( $screen ) { + $current_screen = get_current_screen(); + $current_screen->render_screen_meta(); +} + +/** + * Favorite actions were deprecated in version 3.2. Use the admin bar instead. + * + * @since 2.7.0 + * @deprecated 3.2.0 + */ +function favorite_actions() { + _deprecated_function( __FUNCTION__, '3.2', 'WP_Admin_Bar' ); +} + +function media_upload_image() { + __deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' ); + return wp_media_upload_handler(); +} + +function media_upload_audio() { + __deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' ); + return wp_media_upload_handler(); +} + +function media_upload_video() { + __deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' ); + return wp_media_upload_handler(); +} + +function media_upload_file() { + __deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' ); + return wp_media_upload_handler(); +} + +function type_url_form_image() { + __deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('image')" ); + return wp_media_insert_url_form( 'image' ); +} + +function type_url_form_audio() { + __deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('audio')" ); + return wp_media_insert_url_form( 'audio' ); +} + +function type_url_form_video() { + __deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('video')" ); + return wp_media_insert_url_form( 'video' ); +} + +function type_url_form_file() { + __deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('file')" ); + return wp_media_insert_url_form( 'file' ); +} + +/** + * Add contextual help text for a page. + * + * Creates an 'Overview' help tab. + * + * @since 2.7.0 + * @deprecated 3.3.0 + * @deprecated Use get_current_screen()->add_help_tab() + * @see WP_Screen + * + * @param string $screen The handle for the screen to add help to. This is usually the hook name returned by the add_*_page() functions. + * @param string $help The content of an 'Overview' help tab. + */ +function add_contextual_help( $screen, $help ) { + _deprecated_function( __FUNCTION__, '3.3', 'get_current_screen()->add_help_tab()' ); + + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + WP_Screen::add_old_compat_help( $screen, $help ); +} + +/** + * Get the allowed themes for the current blog. + * + * @since 3.0.0 + * @deprecated 3.4.0 + * @deprecated Use wp_get_themes() + * @see wp_get_themes() + * + * @return array $themes Array of allowed themes. + */ +function get_allowed_themes() { + _deprecated_function( __FUNCTION__, '3.4', "wp_get_themes( array( 'allowed' => true ) )" ); + + $themes = wp_get_themes( array( 'allowed' => true ) ); + + $wp_themes = array(); + foreach ( $themes as $theme ) { + $wp_themes[ $theme->get('Name') ] = $theme; + } + + return $wp_themes; +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.5.0 + * + * @return unknown + */ +function get_broken_themes() { + _deprecated_function( __FUNCTION__, '3.4', "wp_get_themes( array( 'errors' => true )" ); + + $themes = wp_get_themes( array( 'errors' => true ) ); + $broken = array(); + foreach ( $themes as $theme ) { + $name = $theme->get('Name'); + $broken[ $name ] = array( + 'Name' => $name, + 'Title' => $name, + 'Description' => $theme->errors()->get_error_message(), + ); + } + return $broken; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.0.0 + * + * @return unknown + */ +function current_theme_info() { + _deprecated_function( __FUNCTION__, '3.4', 'wp_get_theme()' ); + + return wp_get_theme(); +} \ No newline at end of file diff --git a/wp-admin/includes/export.php b/wp-admin/includes/export.php new file mode 100644 index 0000000..e9c909d --- /dev/null +++ b/wp-admin/includes/export.php @@ -0,0 +1,436 @@ + 'all', 'author' => false, 'category' => false, + 'start_date' => false, 'end_date' => false, 'status' => false, + ); + $args = wp_parse_args( $args, $defaults ); + + do_action( 'export_wp' ); + + $sitename = sanitize_key( get_bloginfo( 'name' ) ); + if ( ! empty($sitename) ) $sitename .= '.'; + $filename = $sitename . 'wordpress.' . date( 'Y-m-d' ) . '.xml'; + + header( 'Content-Description: File Transfer' ); + header( 'Content-Disposition: attachment; filename=' . $filename ); + header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); + + if ( 'all' != $args['content'] && post_type_exists( $args['content'] ) ) { + $ptype = get_post_type_object( $args['content'] ); + if ( ! $ptype->can_export ) + $args['content'] = 'post'; + + $where = $wpdb->prepare( "{$wpdb->posts}.post_type = %s", $args['content'] ); + } else { + $post_types = get_post_types( array( 'can_export' => true ) ); + $esses = array_fill( 0, count($post_types), '%s' ); + $where = $wpdb->prepare( "{$wpdb->posts}.post_type IN (" . implode( ',', $esses ) . ')', $post_types ); + } + + if ( $args['status'] && ( 'post' == $args['content'] || 'page' == $args['content'] ) ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_status = %s", $args['status'] ); + else + $where .= " AND {$wpdb->posts}.post_status != 'auto-draft'"; + + $join = ''; + if ( $args['category'] && 'post' == $args['content'] ) { + if ( $term = term_exists( $args['category'], 'category' ) ) { + $join = "INNER JOIN {$wpdb->term_relationships} ON ({$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id)"; + $where .= $wpdb->prepare( " AND {$wpdb->term_relationships}.term_taxonomy_id = %d", $term['term_taxonomy_id'] ); + } + } + + if ( 'post' == $args['content'] || 'page' == $args['content'] ) { + if ( $args['author'] ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_author = %d", $args['author'] ); + + if ( $args['start_date'] ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date >= %s", date( 'Y-m-d', strtotime($args['start_date']) ) ); + + if ( $args['end_date'] ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date < %s", date( 'Y-m-d', strtotime('+1 month', strtotime($args['end_date'])) ) ); + } + + // grab a snapshot of post IDs, just in case it changes during the export + $post_ids = $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} $join WHERE $where" ); + + // get the requested terms ready, empty unless posts filtered by category or all content + $cats = $tags = $terms = array(); + if ( isset( $term ) && $term ) { + $cat = get_term( $term['term_id'], 'category' ); + $cats = array( $cat->term_id => $cat ); + unset( $term, $cat ); + } else if ( 'all' == $args['content'] ) { + $categories = (array) get_categories( array( 'get' => 'all' ) ); + $tags = (array) get_tags( array( 'get' => 'all' ) ); + + $custom_taxonomies = get_taxonomies( array( '_builtin' => false ) ); + $custom_terms = (array) get_terms( $custom_taxonomies, array( 'get' => 'all' ) ); + + // put categories in order with no child going before its parent + while ( $cat = array_shift( $categories ) ) { + if ( $cat->parent == 0 || isset( $cats[$cat->parent] ) ) + $cats[$cat->term_id] = $cat; + else + $categories[] = $cat; + } + + // put terms in order with no child going before its parent + while ( $t = array_shift( $custom_terms ) ) { + if ( $t->parent == 0 || isset( $terms[$t->parent] ) ) + $terms[$t->term_id] = $t; + else + $custom_terms[] = $t; + } + + unset( $categories, $custom_taxonomies, $custom_terms ); + } + + /** + * Wrap given string in XML CDATA tag. + * + * @since 2.1.0 + * + * @param string $str String to wrap in XML CDATA tag. + * @return string + */ + function wxr_cdata( $str ) { + if ( seems_utf8( $str ) == false ) + $str = utf8_encode( $str ); + + // $str = ent2ncr(esc_html($str)); + $str = '', ']]]]>', $str ) . ']]>'; + + return $str; + } + + /** + * Return the URL of the site + * + * @since 2.5.0 + * + * @return string Site URL. + */ + function wxr_site_url() { + // ms: the base url + if ( is_multisite() ) + return network_home_url(); + // wp: the blog url + else + return get_bloginfo_rss( 'url' ); + } + + /** + * Output a cat_name XML tag from a given category object + * + * @since 2.1.0 + * + * @param object $category Category Object + */ + function wxr_cat_name( $category ) { + if ( empty( $category->name ) ) + return; + + echo '' . wxr_cdata( $category->name ) . ''; + } + + /** + * Output a category_description XML tag from a given category object + * + * @since 2.1.0 + * + * @param object $category Category Object + */ + function wxr_category_description( $category ) { + if ( empty( $category->description ) ) + return; + + echo '' . wxr_cdata( $category->description ) . ''; + } + + /** + * Output a tag_name XML tag from a given tag object + * + * @since 2.3.0 + * + * @param object $tag Tag Object + */ + function wxr_tag_name( $tag ) { + if ( empty( $tag->name ) ) + return; + + echo '' . wxr_cdata( $tag->name ) . ''; + } + + /** + * Output a tag_description XML tag from a given tag object + * + * @since 2.3.0 + * + * @param object $tag Tag Object + */ + function wxr_tag_description( $tag ) { + if ( empty( $tag->description ) ) + return; + + echo '' . wxr_cdata( $tag->description ) . ''; + } + + /** + * Output a term_name XML tag from a given term object + * + * @since 2.9.0 + * + * @param object $term Term Object + */ + function wxr_term_name( $term ) { + if ( empty( $term->name ) ) + return; + + echo '' . wxr_cdata( $term->name ) . ''; + } + + /** + * Output a term_description XML tag from a given term object + * + * @since 2.9.0 + * + * @param object $term Term Object + */ + function wxr_term_description( $term ) { + if ( empty( $term->description ) ) + return; + + echo '' . wxr_cdata( $term->description ) . ''; + } + + /** + * Output list of authors with posts + * + * @since 3.1.0 + */ + function wxr_authors_list() { + global $wpdb; + + $authors = array(); + $results = $wpdb->get_results( "SELECT DISTINCT post_author FROM $wpdb->posts" ); + foreach ( (array) $results as $result ) + $authors[] = get_userdata( $result->post_author ); + + $authors = array_filter( $authors ); + + foreach ( $authors as $author ) { + echo "\t"; + echo '' . $author->ID . ''; + echo '' . $author->user_login . ''; + echo '' . $author->user_email . ''; + echo '' . wxr_cdata( $author->display_name ) . ''; + echo '' . wxr_cdata( $author->user_firstname ) . ''; + echo '' . wxr_cdata( $author->user_lastname ) . ''; + echo "\n"; + } + } + + /** + * Ouput all navigation menu terms + * + * @since 3.1.0 + */ + function wxr_nav_menu_terms() { + $nav_menus = wp_get_nav_menus(); + if ( empty( $nav_menus ) || ! is_array( $nav_menus ) ) + return; + + foreach ( $nav_menus as $menu ) { + echo "\t{$menu->term_id}nav_menu{$menu->slug}"; + wxr_term_name( $menu ); + echo "\n"; + } + } + + /** + * Output list of taxonomy terms, in XML tag format, associated with a post + * + * @since 2.3.0 + */ + function wxr_post_taxonomy() { + global $post; + + $taxonomies = get_object_taxonomies( $post->post_type ); + if ( empty( $taxonomies ) ) + return; + $terms = wp_get_object_terms( $post->ID, $taxonomies ); + + foreach ( (array) $terms as $term ) { + echo "\t\ttaxonomy}\" nicename=\"{$term->slug}\">" . wxr_cdata( $term->name ) . "\n"; + } + } + + function wxr_filter_postmeta( $return_me, $meta_key ) { + if ( '_edit_lock' == $meta_key ) + $return_me = true; + return $return_me; + } + add_filter( 'wxr_export_skip_postmeta', 'wxr_filter_postmeta', 10, 2 ); + + echo '\n"; + + ?> + + + + + + + + + + + + + + + + + + + + + + <?php bloginfo_rss( 'name' ); ?> + + + + + + + + + + + + term_id ?>slug; ?>parent ? $cats[$c->parent]->slug : ''; ?> + + + term_id ?>slug; ?> + + + term_id ?>taxonomy; ?>slug; ?>parent ? $terms[$t->parent]->slug : ''; ?> + + + + + +in_the_loop = true; // Fake being in the loop. + + // fetch 20 posts at a time rather than loading the entire table into memory + while ( $next_posts = array_splice( $post_ids, 0, 20 ) ) { + $where = 'WHERE ID IN (' . join( ',', $next_posts ) . ')'; + $posts = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} $where" ); + + // Begin Loop + foreach ( $posts as $post ) { + setup_postdata( $post ); + $is_sticky = is_sticky( $post->ID ) ? 1 : 0; +?> + + <?php echo apply_filters( 'the_title_rss', $post->post_title ); ?> + + + + + + post_content ) ); ?> + post_excerpt ) ); ?> + ID; ?> + post_date; ?> + post_date_gmt; ?> + comment_status; ?> + ping_status; ?> + post_name; ?> + post_status; ?> + post_parent; ?> + menu_order; ?> + post_type; ?> + post_password; ?> + +post_type == 'attachment' ) : ?> + ID ); ?> + + +get_results( $wpdb->prepare( "SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID ) ); + foreach ( $postmeta as $meta ) : + if ( apply_filters( 'wxr_export_skip_postmeta', false, $meta->meta_key, $meta ) ) + continue; + ?> + + meta_key; ?> + meta_value ); ?> + + +get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved <> 'spam'", $post->ID ) ); + foreach ( $comments as $c ) : ?> + + comment_ID; ?> + comment_author ); ?> + comment_author_email; ?> + comment_author_url ); ?> + comment_author_IP; ?> + comment_date; ?> + comment_date_gmt; ?> + comment_content ) ?> + comment_approved; ?> + comment_type; ?> + comment_parent; ?> + user_id; ?> +get_results( $wpdb->prepare( "SELECT * FROM $wpdb->commentmeta WHERE comment_id = %d", $c->comment_ID ) ); + foreach ( $c_meta as $meta ) : ?> + + meta_key; ?> + meta_value ); ?> + + + + + + + + + __( 'Main Index Template' ), + 'style.css' => __( 'Stylesheet' ), + 'editor-style.css' => __( 'Visual Editor Stylesheet' ), + 'editor-style-rtl.css' => __( 'Visual Editor RTL Stylesheet' ), + 'rtl.css' => __( 'RTL Stylesheet' ), + 'comments.php' => __( 'Comments' ), + 'comments-popup.php' => __( 'Popup Comments' ), + 'footer.php' => __( 'Footer' ), + 'header.php' => __( 'Header' ), + 'sidebar.php' => __( 'Sidebar' ), + 'archive.php' => __( 'Archives' ), + 'author.php' => __( 'Author Template' ), + 'tag.php' => __( 'Tag Template' ), + 'category.php' => __( 'Category Template' ), + 'page.php' => __( 'Page Template' ), + 'search.php' => __( 'Search Results' ), + 'searchform.php' => __( 'Search Form' ), + 'single.php' => __( 'Single Post' ), + '404.php' => __( '404 Template' ), + 'link.php' => __( 'Links Template' ), + 'functions.php' => __( 'Theme Functions' ), + 'attachment.php' => __( 'Attachment Template' ), + 'image.php' => __('Image Attachment Template'), + 'video.php' => __('Video Attachment Template'), + 'audio.php' => __('Audio Attachment Template'), + 'application.php' => __('Application Attachment Template'), + 'my-hacks.php' => __( 'my-hacks.php (legacy hacks support)' ), + '.htaccess' => __( '.htaccess (for rewrite rules )' ), + // Deprecated files + 'wp-layout.css' => __( 'Stylesheet' ), + 'wp-comments.php' => __( 'Comments Template' ), + 'wp-comments-popup.php' => __( 'Popup Comments Template' ), +); + +/** + * Get the description for standard WordPress theme files and other various standard + * WordPress files + * + * @since 1.5.0 + * + * @uses _cleanup_header_comment + * @uses $wp_file_descriptions + * @param string $file Filesystem path or filename + * @return string Description of file from $wp_file_descriptions or basename of $file if description doesn't exist + */ +function get_file_description( $file ) { + global $wp_file_descriptions; + + if ( isset( $wp_file_descriptions[basename( $file )] ) ) { + return $wp_file_descriptions[basename( $file )]; + } + elseif ( file_exists( $file ) && is_file( $file ) ) { + $template_data = implode( '', file( $file ) ); + if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name )) + return sprintf( __( '%s Page Template' ), _cleanup_header_comment($name[1]) ); + } + + return trim( basename( $file ) ); +} + +/** + * Get the absolute filesystem path to the root of the WordPress installation + * + * @since 1.5.0 + * + * @uses get_option + * @return string Full filesystem path to the root of the WordPress installation + */ +function get_home_path() { + $home = get_option( 'home' ); + $siteurl = get_option( 'siteurl' ); + if ( $home != '' && $home != $siteurl ) { + $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */ + $pos = strrpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home); + $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos); + $home_path = trailingslashit( $home_path ); + } else { + $home_path = ABSPATH; + } + + return $home_path; +} + +/** + * Get the real file system path to a file to edit within the admin + * + * If the $file is index.php or .htaccess this function will assume it is relative + * to the install root, otherwise it is assumed the file is relative to the wp-content + * directory + * + * @since 1.5.0 + * + * @uses get_home_path + * @uses WP_CONTENT_DIR full filesystem path to the wp-content directory + * @param string $file filesystem path relative to the WordPress install directory or to the wp-content directory + * @return string full file system path to edit + */ +function get_real_file_to_edit( $file ) { + if ('index.php' == $file || '.htaccess' == $file ) { + $real_file = get_home_path() . $file; + } else { + $real_file = WP_CONTENT_DIR . $file; + } + + return $real_file; +} + +/** + * Returns a listing of all files in the specified folder and all subdirectories up to 100 levels deep. + * The depth of the recursiveness can be controlled by the $levels param. + * + * @since 2.6.0 + * + * @param string $folder Full path to folder + * @param int $levels (optional) Levels of folders to follow, Default: 100 (PHP Loop limit). + * @return bool|array False on failure, Else array of files + */ +function list_files( $folder = '', $levels = 100 ) { + if ( empty($folder) ) + return false; + + if ( ! $levels ) + return false; + + $files = array(); + if ( $dir = @opendir( $folder ) ) { + while (($file = readdir( $dir ) ) !== false ) { + if ( in_array($file, array('.', '..') ) ) + continue; + if ( is_dir( $folder . '/' . $file ) ) { + $files2 = list_files( $folder . '/' . $file, $levels - 1); + if ( $files2 ) + $files = array_merge($files, $files2 ); + else + $files[] = $folder . '/' . $file . '/'; + } else { + $files[] = $folder . '/' . $file; + } + } + } + @closedir( $dir ); + return $files; +} + +/** + * Returns a filename of a Temporary unique file. + * Please note that the calling function must unlink() this itself. + * + * The filename is based off the passed parameter or defaults to the current unix timestamp, + * while the directory can either be passed as well, or by leaving it blank, default to a writable temporary directory. + * + * @since 2.6.0 + * + * @param string $filename (optional) Filename to base the Unique file off + * @param string $dir (optional) Directory to store the file in + * @return string a writable filename + */ +function wp_tempnam($filename = '', $dir = '') { + if ( empty($dir) ) + $dir = get_temp_dir(); + $filename = basename($filename); + if ( empty($filename) ) + $filename = time(); + + $filename = preg_replace('|\..*$|', '.tmp', $filename); + $filename = $dir . wp_unique_filename($dir, $filename); + touch($filename); + return $filename; +} + +/** + * Make sure that the file that was requested to edit, is allowed to be edited + * + * Function will die if if you are not allowed to edit the file + * + * @since 1.5.0 + * + * @uses wp_die + * @uses validate_file + * @param string $file file the users is attempting to edit + * @param array $allowed_files Array of allowed files to edit, $file must match an entry exactly + * @return null + */ +function validate_file_to_edit( $file, $allowed_files = '' ) { + $code = validate_file( $file, $allowed_files ); + + if (!$code ) + return $file; + + switch ( $code ) { + case 1 : + wp_die( __('Sorry, can’t edit files with “..” in the name. If you are trying to edit a file in your WordPress home directory, you can just type the name of the file in.' )); + + //case 2 : + // wp_die( __('Sorry, can’t call files with their real path.' )); + + case 3 : + wp_die( __('Sorry, that file cannot be edited.' )); + } +} + +/** + * Handle PHP uploads in WordPress, sanitizing file names, checking extensions for mime type, + * and moving the file to the appropriate directory within the uploads directory. + * + * @since 2.0 + * + * @uses wp_handle_upload_error + * @uses apply_filters + * @uses is_multisite + * @uses wp_check_filetype_and_ext + * @uses current_user_can + * @uses wp_upload_dir + * @uses wp_unique_filename + * @uses delete_transient + * @param array $file Reference to a single element of $_FILES. Call the function once for each uploaded file. + * @param array $overrides Optional. An associative array of names=>values to override default variables with extract( $overrides, EXTR_OVERWRITE ). + * @return array On success, returns an associative array of file attributes. On failure, returns $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ). + */ +function wp_handle_upload( &$file, $overrides = false, $time = null ) { + // The default error handler. + if ( ! function_exists( 'wp_handle_upload_error' ) ) { + function wp_handle_upload_error( &$file, $message ) { + return array( 'error'=>$message ); + } + } + + $file = apply_filters( 'wp_handle_upload_prefilter', $file ); + + // You may define your own function and pass the name in $overrides['upload_error_handler'] + $upload_error_handler = 'wp_handle_upload_error'; + + // You may have had one or more 'wp_handle_upload_prefilter' functions error out the file. Handle that gracefully. + if ( isset( $file['error'] ) && !is_numeric( $file['error'] ) && $file['error'] ) + return $upload_error_handler( $file, $file['error'] ); + + // You may define your own function and pass the name in $overrides['unique_filename_callback'] + $unique_filename_callback = null; + + // $_POST['action'] must be set and its value must equal $overrides['action'] or this: + $action = 'wp_handle_upload'; + + // Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error']. + $upload_error_strings = array( false, + __( "The uploaded file exceeds the upload_max_filesize directive in php.ini." ), + __( "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form." ), + __( "The uploaded file was only partially uploaded." ), + __( "No file was uploaded." ), + '', + __( "Missing a temporary folder." ), + __( "Failed to write file to disk." ), + __( "File upload stopped by extension." )); + + // All tests are on by default. Most can be turned off by $overrides[{test_name}] = false; + $test_form = true; + $test_size = true; + $test_upload = true; + + // If you override this, you must provide $ext and $type!!!! + $test_type = true; + $mimes = false; + + // Install user overrides. Did we mention that this voids your warranty? + if ( is_array( $overrides ) ) + extract( $overrides, EXTR_OVERWRITE ); + + // A correct form post will pass this test. + if ( $test_form && (!isset( $_POST['action'] ) || ($_POST['action'] != $action ) ) ) + return call_user_func($upload_error_handler, $file, __( 'Invalid form submission.' )); + + // A successful upload will pass this test. It makes no sense to override this one. + if ( $file['error'] > 0 ) + return call_user_func($upload_error_handler, $file, $upload_error_strings[$file['error']] ); + + // A non-empty file will pass this test. + if ( $test_size && !($file['size'] > 0 ) ) { + if ( is_multisite() ) + $error_msg = __( 'File is empty. Please upload something more substantial.' ); + else + $error_msg = __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.' ); + return call_user_func($upload_error_handler, $file, $error_msg); + } + + // A properly uploaded file will pass this test. There should be no reason to override this one. + if ( $test_upload && ! @ is_uploaded_file( $file['tmp_name'] ) ) + return call_user_func($upload_error_handler, $file, __( 'Specified file failed upload test.' )); + + // A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter. + if ( $test_type ) { + $wp_filetype = wp_check_filetype_and_ext( $file['tmp_name'], $file['name'], $mimes ); + + extract( $wp_filetype ); + + // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect + if ( $proper_filename ) + $file['name'] = $proper_filename; + + if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) ) + return call_user_func($upload_error_handler, $file, __( 'Sorry, this file type is not permitted for security reasons.' )); + + if ( !$ext ) + $ext = ltrim(strrchr($file['name'], '.'), '.'); + + if ( !$type ) + $type = $file['type']; + } else { + $type = ''; + } + + // A writable uploads dir will pass this test. Again, there's no point overriding this one. + if ( ! ( ( $uploads = wp_upload_dir($time) ) && false === $uploads['error'] ) ) + return call_user_func($upload_error_handler, $file, $uploads['error'] ); + + $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback ); + + // Move the file to the uploads dir + $new_file = $uploads['path'] . "/$filename"; + if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) ) + return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) ); + + // Set correct file permissions + $stat = stat( dirname( $new_file )); + $perms = $stat['mode'] & 0000666; + @ chmod( $new_file, $perms ); + + // Compute the URL + $url = $uploads['url'] . "/$filename"; + + if ( is_multisite() ) + delete_transient( 'dirsize_cache' ); + + return apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ), 'upload' ); +} + +/** + * Handle sideloads, which is the process of retrieving a media item from another server instead of + * a traditional media upload. This process involves sanitizing the filename, checking extensions + * for mime type, and moving the file to the appropriate directory within the uploads directory. + * + * @since 2.6.0 + * + * @uses wp_handle_upload_error + * @uses apply_filters + * @uses wp_check_filetype_and_ext + * @uses current_user_can + * @uses wp_upload_dir + * @uses wp_unique_filename + * @param array $file an array similar to that of a PHP $_FILES POST array + * @param array $overrides Optional. An associative array of names=>values to override default variables with extract( $overrides, EXTR_OVERWRITE ). + * @return array On success, returns an associative array of file attributes. On failure, returns $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ). + */ +function wp_handle_sideload( &$file, $overrides = false ) { + // The default error handler. + if (! function_exists( 'wp_handle_upload_error' ) ) { + function wp_handle_upload_error( &$file, $message ) { + return array( 'error'=>$message ); + } + } + + // You may define your own function and pass the name in $overrides['upload_error_handler'] + $upload_error_handler = 'wp_handle_upload_error'; + + // You may define your own function and pass the name in $overrides['unique_filename_callback'] + $unique_filename_callback = null; + + // $_POST['action'] must be set and its value must equal $overrides['action'] or this: + $action = 'wp_handle_sideload'; + + // Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error']. + $upload_error_strings = array( false, + __( "The uploaded file exceeds the upload_max_filesize directive in php.ini." ), + __( "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form." ), + __( "The uploaded file was only partially uploaded." ), + __( "No file was uploaded." ), + '', + __( "Missing a temporary folder." ), + __( "Failed to write file to disk." ), + __( "File upload stopped by extension." )); + + // All tests are on by default. Most can be turned off by $overrides[{test_name}] = false; + $test_form = true; + $test_size = true; + + // If you override this, you must provide $ext and $type!!!! + $test_type = true; + $mimes = false; + + // Install user overrides. Did we mention that this voids your warranty? + if ( is_array( $overrides ) ) + extract( $overrides, EXTR_OVERWRITE ); + + // A correct form post will pass this test. + if ( $test_form && (!isset( $_POST['action'] ) || ($_POST['action'] != $action ) ) ) + return $upload_error_handler( $file, __( 'Invalid form submission.' )); + + // A successful upload will pass this test. It makes no sense to override this one. + if ( ! empty( $file['error'] ) ) + return $upload_error_handler( $file, $upload_error_strings[$file['error']] ); + + // A non-empty file will pass this test. + if ( $test_size && !(filesize($file['tmp_name']) > 0 ) ) + return $upload_error_handler( $file, __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini.' )); + + // A properly uploaded file will pass this test. There should be no reason to override this one. + if (! @ is_file( $file['tmp_name'] ) ) + return $upload_error_handler( $file, __( 'Specified file does not exist.' )); + + // A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter. + if ( $test_type ) { + $wp_filetype = wp_check_filetype_and_ext( $file['tmp_name'], $file['name'], $mimes ); + + extract( $wp_filetype ); + + // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect + if ( $proper_filename ) + $file['name'] = $proper_filename; + + if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) ) + return $upload_error_handler( $file, __( 'Sorry, this file type is not permitted for security reasons.' )); + + if ( !$ext ) + $ext = ltrim(strrchr($file['name'], '.'), '.'); + + if ( !$type ) + $type = $file['type']; + } + + // A writable uploads dir will pass this test. Again, there's no point overriding this one. + if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) ) + return $upload_error_handler( $file, $uploads['error'] ); + + $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback ); + + // Strip the query strings. + $filename = str_replace('?','-', $filename); + $filename = str_replace('&','-', $filename); + + // Move the file to the uploads dir + $new_file = $uploads['path'] . "/$filename"; + if ( false === @ rename( $file['tmp_name'], $new_file ) ) { + return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) ); + } + + // Set correct file permissions + $stat = stat( dirname( $new_file )); + $perms = $stat['mode'] & 0000666; + @ chmod( $new_file, $perms ); + + // Compute the URL + $url = $uploads['url'] . "/$filename"; + + $return = apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ), 'sideload' ); + + return $return; +} + +/** + * Downloads a url to a local temporary file using the WordPress HTTP Class. + * Please note, That the calling function must unlink() the file. + * + * @since 2.5.0 + * + * @param string $url the URL of the file to download + * @param int $timeout The timeout for the request to download the file default 300 seconds + * @return mixed WP_Error on failure, string Filename on success. + */ +function download_url( $url, $timeout = 300 ) { + //WARNING: The file is not automatically deleted, The script must unlink() the file. + if ( ! $url ) + return new WP_Error('http_no_url', __('Invalid URL Provided.')); + + $tmpfname = wp_tempnam($url); + if ( ! $tmpfname ) + return new WP_Error('http_no_file', __('Could not create Temporary file.')); + + $response = wp_remote_get( $url, array( 'timeout' => $timeout, 'stream' => true, 'filename' => $tmpfname ) ); + + if ( is_wp_error( $response ) ) { + unlink( $tmpfname ); + return $response; + } + + if ( 200 != wp_remote_retrieve_response_code( $response ) ){ + unlink( $tmpfname ); + return new WP_Error( 'http_404', trim( wp_remote_retrieve_response_message( $response ) ) ); + } + + return $tmpfname; +} + +/** + * Unzips a specified ZIP file to a location on the Filesystem via the WordPress Filesystem Abstraction. + * Assumes that WP_Filesystem() has already been called and set up. Does not extract a root-level __MACOSX directory, if present. + * + * Attempts to increase the PHP Memory limit to 256M before uncompressing, + * However, The most memory required shouldn't be much larger than the Archive itself. + * + * @since 2.5.0 + * + * @param string $file Full path and filename of zip archive + * @param string $to Full path on the filesystem to extract archive to + * @return mixed WP_Error on failure, True on success + */ +function unzip_file($file, $to) { + global $wp_filesystem; + + if ( ! $wp_filesystem || !is_object($wp_filesystem) ) + return new WP_Error('fs_unavailable', __('Could not access filesystem.')); + + // Unzip can use a lot of memory, but not this much hopefully + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); + + $needed_dirs = array(); + $to = trailingslashit($to); + + // Determine any parent dir's needed (of the upgrade directory) + if ( ! $wp_filesystem->is_dir($to) ) { //Only do parents if no children exist + $path = preg_split('![/\\\]!', untrailingslashit($to)); + for ( $i = count($path); $i >= 0; $i-- ) { + if ( empty($path[$i]) ) + continue; + + $dir = implode('/', array_slice($path, 0, $i+1) ); + if ( preg_match('!^[a-z]:$!i', $dir) ) // Skip it if it looks like a Windows Drive letter. + continue; + + if ( ! $wp_filesystem->is_dir($dir) ) + $needed_dirs[] = $dir; + else + break; // A folder exists, therefor, we dont need the check the levels below this + } + } + + if ( class_exists('ZipArchive') && apply_filters('unzip_file_use_ziparchive', true ) ) { + $result = _unzip_file_ziparchive($file, $to, $needed_dirs); + if ( true === $result ) { + return $result; + } elseif ( is_wp_error($result) ) { + if ( 'incompatible_archive' != $result->get_error_code() ) + return $result; + } + } + // Fall through to PclZip if ZipArchive is not available, or encountered an error opening the file. + return _unzip_file_pclzip($file, $to, $needed_dirs); +} + +/** + * This function should not be called directly, use unzip_file instead. Attempts to unzip an archive using the ZipArchive class. + * Assumes that WP_Filesystem() has already been called and set up. + * + * @since 3.0.0 + * @see unzip_file + * @access private + * + * @param string $file Full path and filename of zip archive + * @param string $to Full path on the filesystem to extract archive to + * @param array $needed_dirs A partial list of required folders needed to be created. + * @return mixed WP_Error on failure, True on success + */ +function _unzip_file_ziparchive($file, $to, $needed_dirs = array() ) { + global $wp_filesystem; + + $z = new ZipArchive(); + + // PHP4-compat - php4 classes can't contain constants + $zopen = $z->open($file, /* ZIPARCHIVE::CHECKCONS */ 4); + if ( true !== $zopen ) + return new WP_Error('incompatible_archive', __('Incompatible Archive.')); + + for ( $i = 0; $i < $z->numFiles; $i++ ) { + if ( ! $info = $z->statIndex($i) ) + return new WP_Error('stat_failed', __('Could not retrieve file from archive.')); + + if ( '__MACOSX/' === substr($info['name'], 0, 9) ) // Skip the OS X-created __MACOSX directory + continue; + + if ( '/' == substr($info['name'], -1) ) // directory + $needed_dirs[] = $to . untrailingslashit($info['name']); + else + $needed_dirs[] = $to . untrailingslashit(dirname($info['name'])); + } + + $needed_dirs = array_unique($needed_dirs); + foreach ( $needed_dirs as $dir ) { + // Check the parent folders of the folders all exist within the creation array. + if ( untrailingslashit($to) == $dir ) // Skip over the working directory, We know this exists (or will exist) + continue; + if ( strpos($dir, $to) === false ) // If the directory is not within the working directory, Skip it + continue; + + $parent_folder = dirname($dir); + while ( !empty($parent_folder) && untrailingslashit($to) != $parent_folder && !in_array($parent_folder, $needed_dirs) ) { + $needed_dirs[] = $parent_folder; + $parent_folder = dirname($parent_folder); + } + } + asort($needed_dirs); + + // Create those directories if need be: + foreach ( $needed_dirs as $_dir ) { + if ( ! $wp_filesystem->mkdir($_dir, FS_CHMOD_DIR) && ! $wp_filesystem->is_dir($_dir) ) // Only check to see if the Dir exists upon creation failure. Less I/O this way. + return new WP_Error('mkdir_failed', __('Could not create directory.'), $_dir); + } + unset($needed_dirs); + + for ( $i = 0; $i < $z->numFiles; $i++ ) { + if ( ! $info = $z->statIndex($i) ) + return new WP_Error('stat_failed', __('Could not retrieve file from archive.')); + + if ( '/' == substr($info['name'], -1) ) // directory + continue; + + if ( '__MACOSX/' === substr($info['name'], 0, 9) ) // Don't extract the OS X-created __MACOSX directory files + continue; + + $contents = $z->getFromIndex($i); + if ( false === $contents ) + return new WP_Error('extract_failed', __('Could not extract file from archive.'), $info['name']); + + if ( ! $wp_filesystem->put_contents( $to . $info['name'], $contents, FS_CHMOD_FILE) ) + return new WP_Error('copy_failed', __('Could not copy file.'), $to . $info['name']); + } + + $z->close(); + + return true; +} + +/** + * This function should not be called directly, use unzip_file instead. Attempts to unzip an archive using the PclZip library. + * Assumes that WP_Filesystem() has already been called and set up. + * + * @since 3.0.0 + * @see unzip_file + * @access private + * + * @param string $file Full path and filename of zip archive + * @param string $to Full path on the filesystem to extract archive to + * @param array $needed_dirs A partial list of required folders needed to be created. + * @return mixed WP_Error on failure, True on success + */ +function _unzip_file_pclzip($file, $to, $needed_dirs = array()) { + global $wp_filesystem; + + // See #15789 - PclZip uses string functions on binary data, If it's overloaded with Multibyte safe functions the results are incorrect. + if ( ini_get('mbstring.func_overload') && function_exists('mb_internal_encoding') ) { + $previous_encoding = mb_internal_encoding(); + mb_internal_encoding('ISO-8859-1'); + } + + require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php'); + + $archive = new PclZip($file); + + $archive_files = $archive->extract(PCLZIP_OPT_EXTRACT_AS_STRING); + + if ( isset($previous_encoding) ) + mb_internal_encoding($previous_encoding); + + // Is the archive valid? + if ( !is_array($archive_files) ) + return new WP_Error('incompatible_archive', __('Incompatible Archive.'), $archive->errorInfo(true)); + + if ( 0 == count($archive_files) ) + return new WP_Error('empty_archive', __('Empty archive.')); + + // Determine any children directories needed (From within the archive) + foreach ( $archive_files as $file ) { + if ( '__MACOSX/' === substr($file['filename'], 0, 9) ) // Skip the OS X-created __MACOSX directory + continue; + + $needed_dirs[] = $to . untrailingslashit( $file['folder'] ? $file['filename'] : dirname($file['filename']) ); + } + + $needed_dirs = array_unique($needed_dirs); + foreach ( $needed_dirs as $dir ) { + // Check the parent folders of the folders all exist within the creation array. + if ( untrailingslashit($to) == $dir ) // Skip over the working directory, We know this exists (or will exist) + continue; + if ( strpos($dir, $to) === false ) // If the directory is not within the working directory, Skip it + continue; + + $parent_folder = dirname($dir); + while ( !empty($parent_folder) && untrailingslashit($to) != $parent_folder && !in_array($parent_folder, $needed_dirs) ) { + $needed_dirs[] = $parent_folder; + $parent_folder = dirname($parent_folder); + } + } + asort($needed_dirs); + + // Create those directories if need be: + foreach ( $needed_dirs as $_dir ) { + if ( ! $wp_filesystem->mkdir($_dir, FS_CHMOD_DIR) && ! $wp_filesystem->is_dir($_dir) ) // Only check to see if the dir exists upon creation failure. Less I/O this way. + return new WP_Error('mkdir_failed', __('Could not create directory.'), $_dir); + } + unset($needed_dirs); + + // Extract the files from the zip + foreach ( $archive_files as $file ) { + if ( $file['folder'] ) + continue; + + if ( '__MACOSX/' === substr($file['filename'], 0, 9) ) // Don't extract the OS X-created __MACOSX directory files + continue; + + if ( ! $wp_filesystem->put_contents( $to . $file['filename'], $file['content'], FS_CHMOD_FILE) ) + return new WP_Error('copy_failed', __('Could not copy file.'), $to . $file['filename']); + } + return true; +} + +/** + * Copies a directory from one location to another via the WordPress Filesystem Abstraction. + * Assumes that WP_Filesystem() has already been called and setup. + * + * @since 2.5.0 + * + * @param string $from source directory + * @param string $to destination directory + * @param array $skip_list a list of files/folders to skip copying + * @return mixed WP_Error on failure, True on success. + */ +function copy_dir($from, $to, $skip_list = array() ) { + global $wp_filesystem; + + $dirlist = $wp_filesystem->dirlist($from); + + $from = trailingslashit($from); + $to = trailingslashit($to); + + $skip_regex = ''; + foreach ( (array)$skip_list as $key => $skip_file ) + $skip_regex .= preg_quote($skip_file, '!') . '|'; + + if ( !empty($skip_regex) ) + $skip_regex = '!(' . rtrim($skip_regex, '|') . ')$!i'; + + foreach ( (array) $dirlist as $filename => $fileinfo ) { + if ( !empty($skip_regex) ) + if ( preg_match($skip_regex, $from . $filename) ) + continue; + + if ( 'f' == $fileinfo['type'] ) { + if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) { + // If copy failed, chmod file to 0644 and try again. + $wp_filesystem->chmod($to . $filename, 0644); + if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) + return new WP_Error('copy_failed', __('Could not copy file.'), $to . $filename); + } + } elseif ( 'd' == $fileinfo['type'] ) { + if ( !$wp_filesystem->is_dir($to . $filename) ) { + if ( !$wp_filesystem->mkdir($to . $filename, FS_CHMOD_DIR) ) + return new WP_Error('mkdir_failed', __('Could not create directory.'), $to . $filename); + } + $result = copy_dir($from . $filename, $to . $filename, $skip_list); + if ( is_wp_error($result) ) + return $result; + } + } + return true; +} + +/** + * Initialises and connects the WordPress Filesystem Abstraction classes. + * This function will include the chosen transport and attempt connecting. + * + * Plugins may add extra transports, And force WordPress to use them by returning the filename via the 'filesystem_method_file' filter. + * + * @since 2.5.0 + * + * @param array $args (optional) Connection args, These are passed directly to the WP_Filesystem_*() classes. + * @param string $context (optional) Context for get_filesystem_method(), See function declaration for more information. + * @return boolean false on failure, true on success + */ +function WP_Filesystem( $args = false, $context = false ) { + global $wp_filesystem; + + require_once(ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php'); + + $method = get_filesystem_method($args, $context); + + if ( ! $method ) + return false; + + if ( ! class_exists("WP_Filesystem_$method") ) { + $abstraction_file = apply_filters('filesystem_method_file', ABSPATH . 'wp-admin/includes/class-wp-filesystem-' . $method . '.php', $method); + if ( ! file_exists($abstraction_file) ) + return; + + require_once($abstraction_file); + } + $method = "WP_Filesystem_$method"; + + $wp_filesystem = new $method($args); + + //Define the timeouts for the connections. Only available after the construct is called to allow for per-transport overriding of the default. + if ( ! defined('FS_CONNECT_TIMEOUT') ) + define('FS_CONNECT_TIMEOUT', 30); + if ( ! defined('FS_TIMEOUT') ) + define('FS_TIMEOUT', 30); + + if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) + return false; + + if ( !$wp_filesystem->connect() ) + return false; //There was an error connecting to the server. + + // Set the permission constants if not already set. + if ( ! defined('FS_CHMOD_DIR') ) + define('FS_CHMOD_DIR', 0755 ); + if ( ! defined('FS_CHMOD_FILE') ) + define('FS_CHMOD_FILE', 0644 ); + + return true; +} + +/** + * Determines which Filesystem Method to use. + * The priority of the Transports are: Direct, SSH2, FTP PHP Extension, FTP Sockets (Via Sockets class, or fsockopen()) + * + * Note that the return value of this function can be overridden in 2 ways + * - By defining FS_METHOD in your wp-config.php file + * - By using the filesystem_method filter + * Valid values for these are: 'direct', 'ssh', 'ftpext' or 'ftpsockets' + * Plugins may also define a custom transport handler, See the WP_Filesystem function for more information. + * + * @since 2.5.0 + * + * @param array $args Connection details. + * @param string $context Full path to the directory that is tested for being writable. + * @return string The transport to use, see description for valid return values. + */ +function get_filesystem_method($args = array(), $context = false) { + $method = defined('FS_METHOD') ? FS_METHOD : false; //Please ensure that this is either 'direct', 'ssh', 'ftpext' or 'ftpsockets' + + if ( ! $method && function_exists('getmyuid') && function_exists('fileowner') ){ + if ( !$context ) + $context = WP_CONTENT_DIR; + $context = trailingslashit($context); + $temp_file_name = $context . 'temp-write-test-' . time(); + $temp_handle = @fopen($temp_file_name, 'w'); + if ( $temp_handle ) { + if ( getmyuid() == @fileowner($temp_file_name) ) + $method = 'direct'; + @fclose($temp_handle); + @unlink($temp_file_name); + } + } + + if ( ! $method && isset($args['connection_type']) && 'ssh' == $args['connection_type'] && extension_loaded('ssh2') && function_exists('stream_get_contents') ) $method = 'ssh2'; + if ( ! $method && extension_loaded('ftp') ) $method = 'ftpext'; + if ( ! $method && ( extension_loaded('sockets') || function_exists('fsockopen') ) ) $method = 'ftpsockets'; //Sockets: Socket extension; PHP Mode: FSockopen / fwrite / fread + return apply_filters('filesystem_method', $method, $args); +} + +/** + * Displays a form to the user to request for their FTP/SSH details in order to connect to the filesystem. + * All chosen/entered details are saved, Excluding the Password. + * + * Hostnames may be in the form of hostname:portnumber (eg: wordpress.org:2467) to specify an alternate FTP/SSH port. + * + * Plugins may override this form by returning true|false via the request_filesystem_credentials filter. + * + * @since 2.5.0 + * + * @param string $form_post the URL to post the form to + * @param string $type the chosen Filesystem method in use + * @param boolean $error if the current request has failed to connect + * @param string $context The directory which is needed access to, The write-test will be performed on this directory by get_filesystem_method() + * @param string $extra_fields Extra POST fields which should be checked for to be included in the post. + * @return boolean False on failure. True on success. + */ +function request_filesystem_credentials($form_post, $type = '', $error = false, $context = false, $extra_fields = null) { + $req_cred = apply_filters( 'request_filesystem_credentials', '', $form_post, $type, $error, $context, $extra_fields ); + if ( '' !== $req_cred ) + return $req_cred; + + if ( empty($type) ) + $type = get_filesystem_method(array(), $context); + + if ( 'direct' == $type ) + return true; + + if ( is_null( $extra_fields ) ) + $extra_fields = array( 'version', 'locale' ); + + $credentials = get_option('ftp_credentials', array( 'hostname' => '', 'username' => '')); + + // If defined, set it to that, Else, If POST'd, set it to that, If not, Set it to whatever it previously was(saved details in option) + $credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($_POST['hostname']) ? stripslashes($_POST['hostname']) : $credentials['hostname']); + $credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($_POST['username']) ? stripslashes($_POST['username']) : $credentials['username']); + $credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($_POST['password']) ? stripslashes($_POST['password']) : ''); + + // Check to see if we are setting the public/private keys for ssh + $credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($_POST['public_key']) ? stripslashes($_POST['public_key']) : ''); + $credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($_POST['private_key']) ? stripslashes($_POST['private_key']) : ''); + + //sanitize the hostname, Some people might pass in odd-data: + $credentials['hostname'] = preg_replace('|\w+://|', '', $credentials['hostname']); //Strip any schemes off + + if ( strpos($credentials['hostname'], ':') ) { + list( $credentials['hostname'], $credentials['port'] ) = explode(':', $credentials['hostname'], 2); + if ( ! is_numeric($credentials['port']) ) + unset($credentials['port']); + } else { + unset($credentials['port']); + } + + if ( (defined('FTP_SSH') && FTP_SSH) || (defined('FS_METHOD') && 'ssh' == FS_METHOD) ) + $credentials['connection_type'] = 'ssh'; + else if ( (defined('FTP_SSL') && FTP_SSL) && 'ftpext' == $type ) //Only the FTP Extension understands SSL + $credentials['connection_type'] = 'ftps'; + else if ( !empty($_POST['connection_type']) ) + $credentials['connection_type'] = stripslashes($_POST['connection_type']); + else if ( !isset($credentials['connection_type']) ) //All else fails (And its not defaulted to something else saved), Default to FTP + $credentials['connection_type'] = 'ftp'; + + if ( ! $error && + ( + ( !empty($credentials['password']) && !empty($credentials['username']) && !empty($credentials['hostname']) ) || + ( 'ssh' == $credentials['connection_type'] && !empty($credentials['public_key']) && !empty($credentials['private_key']) ) + ) ) { + $stored_credentials = $credentials; + if ( !empty($stored_credentials['port']) ) //save port as part of hostname to simplify above code. + $stored_credentials['hostname'] .= ':' . $stored_credentials['port']; + + unset($stored_credentials['password'], $stored_credentials['port'], $stored_credentials['private_key'], $stored_credentials['public_key']); + update_option('ftp_credentials', $stored_credentials); + return $credentials; + } + $hostname = ''; + $username = ''; + $password = ''; + $connection_type = ''; + if ( !empty($credentials) ) + extract($credentials, EXTR_OVERWRITE); + if ( $error ) { + $error_string = __('ERROR: There was an error connecting to the server, Please verify the settings are correct.'); + if ( is_wp_error($error) ) + $error_string = esc_html( $error->get_error_message() ); + echo '

' . $error_string . '

'; + } + + $types = array(); + if ( extension_loaded('ftp') || extension_loaded('sockets') || function_exists('fsockopen') ) + $types[ 'ftp' ] = __('FTP'); + if ( extension_loaded('ftp') ) //Only this supports FTPS + $types[ 'ftps' ] = __('FTPS (SSL)'); + if ( extension_loaded('ssh2') && function_exists('stream_get_contents') ) + $types[ 'ssh' ] = __('SSH2'); + + $types = apply_filters('fs_ftp_connection_types', $types, $credentials, $type, $error, $context); + +?> + +
+
+ +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
" size="40" />
size="40" />
size="40" />
+
+
+ +

size="40" />
size="40" /> +
+
+ $text ) : ?> + + +
+
+ +'; +} +submit_button( __( 'Proceed' ), 'button', 'upgrade' ); +?> +
+
+ 400 ? 400 / $big : 1; + + $backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); + $can_restore = !empty($backup_sizes) && isset($backup_sizes['full-orig']) + && $backup_sizes['full-orig']['file'] != basename($meta['file']); + + if ( $msg ) { + if ( isset($msg->error) ) + $note = "

$msg->error

"; + elseif ( isset($msg->msg) ) + $note = "

$msg->msg

"; + } + + ?> +
+ + + + + +
+
+
, this)" class="imgedit-crop disabled" title="">
+
, this)" title="">
+
, this)" title="">
+ +
+
+ + +
, this)" class="imgedit-flipv" title="">
+
, this)" class="imgedit-fliph" title="">
+ +
, this)" class="imgedit-undo disabled" title="">
+
, this)" class="imgedit-redo disabled" title="">
+
+
+ + + + + + + + + +
+ +
+ +
+ + )" disabled="disabled" class="button-primary imgedit-submit-btn" value="" /> +
+
+
+
+ +
+

+

+
+ × + ! + , 'scale')" class="button-primary" value="" /> +
+
+
+ + + +
+ +
+

+
+ , 'restore')" class="button-primary" value="" /> +
+
+
+ + + +
+ +
+
+ + +
+

+ +
    +
  • +
  • +
  • +
  • +
  • +
+ +


+

+ +


+

+
+
+ +

+ + + + : + + +

+ +

+ + + + : + + +

+
+ + + +
+
+ + +

+
+ +

+
+

+ +

+
+ + + + + + +

+
+ + + +
+
+ + +
+ 400 ? (400 / $max) : 1; +} + +function _rotate_image_resource($img, $angle) { + if ( function_exists('imagerotate') ) { + $rotated = imagerotate($img, $angle, 0); + if ( is_resource($rotated) ) { + imagedestroy($img); + $img = $rotated; + } + } + return $img; +} + +function _flip_image_resource($img, $horz, $vert) { + $w = imagesx($img); + $h = imagesy($img); + $dst = wp_imagecreatetruecolor($w, $h); + if ( is_resource($dst) ) { + $sx = $vert ? ($w - 1) : 0; + $sy = $horz ? ($h - 1) : 0; + $sw = $vert ? -$w : $w; + $sh = $horz ? -$h : $h; + + if ( imagecopyresampled($dst, $img, 0, 0, $sx, $sy, $w, $h, $sw, $sh) ) { + imagedestroy($img); + $img = $dst; + } + } + return $img; +} + +function _crop_image_resource($img, $x, $y, $w, $h) { + $dst = wp_imagecreatetruecolor($w, $h); + if ( is_resource($dst) ) { + if ( imagecopy($dst, $img, 0, 0, $x, $y, $w, $h) ) { + imagedestroy($img); + $img = $dst; + } + } + return $img; +} + +function image_edit_apply_changes($img, $changes) { + + if ( !is_array($changes) ) + return $img; + + // expand change operations + foreach ( $changes as $key => $obj ) { + if ( isset($obj->r) ) { + $obj->type = 'rotate'; + $obj->angle = $obj->r; + unset($obj->r); + } elseif ( isset($obj->f) ) { + $obj->type = 'flip'; + $obj->axis = $obj->f; + unset($obj->f); + } elseif ( isset($obj->c) ) { + $obj->type = 'crop'; + $obj->sel = $obj->c; + unset($obj->c); + } + $changes[$key] = $obj; + } + + // combine operations + if ( count($changes) > 1 ) { + $filtered = array($changes[0]); + for ( $i = 0, $j = 1; $j < count($changes); $j++ ) { + $combined = false; + if ( $filtered[$i]->type == $changes[$j]->type ) { + switch ( $filtered[$i]->type ) { + case 'rotate': + $filtered[$i]->angle += $changes[$j]->angle; + $combined = true; + break; + case 'flip': + $filtered[$i]->axis ^= $changes[$j]->axis; + $combined = true; + break; + } + } + if ( !$combined ) + $filtered[++$i] = $changes[$j]; + } + $changes = $filtered; + unset($filtered); + } + + // image resource before applying the changes + $img = apply_filters('image_edit_before_change', $img, $changes); + + foreach ( $changes as $operation ) { + switch ( $operation->type ) { + case 'rotate': + if ( $operation->angle != 0 ) + $img = _rotate_image_resource($img, $operation->angle); + break; + case 'flip': + if ( $operation->axis != 0 ) + $img = _flip_image_resource($img, ($operation->axis & 1) != 0, ($operation->axis & 2) != 0); + break; + case 'crop': + $sel = $operation->sel; + $scale = 1 / _image_get_preview_ratio( imagesx($img), imagesy($img) ); // discard preview scaling + $img = _crop_image_resource($img, $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale); + break; + } + } + + return $img; +} + +function stream_preview_image($post_id) { + $post = get_post($post_id); + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); + $img = load_image_to_edit( $post_id, $post->post_mime_type, array(400, 400) ); + + if ( !is_resource($img) ) + return false; + + $changes = !empty($_REQUEST['history']) ? json_decode( stripslashes($_REQUEST['history']) ) : null; + if ( $changes ) + $img = image_edit_apply_changes($img, $changes); + + // scale the image + $w = imagesx($img); + $h = imagesy($img); + $ratio = _image_get_preview_ratio($w, $h); + $w2 = $w * $ratio; + $h2 = $h * $ratio; + + $preview = wp_imagecreatetruecolor($w2, $h2); + imagecopyresampled( $preview, $img, 0, 0, 0, 0, $w2, $h2, $w, $h ); + wp_stream_image($preview, $post->post_mime_type, $post_id); + + imagedestroy($preview); + imagedestroy($img); + return true; +} + +function wp_restore_image($post_id) { + $meta = wp_get_attachment_metadata($post_id); + $file = get_attached_file($post_id); + $backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); + $restored = false; + $msg = new stdClass; + + if ( !is_array($backup_sizes) ) { + $msg->error = __('Cannot load image metadata.'); + return $msg; + } + + $parts = pathinfo($file); + $suffix = time() . rand(100, 999); + $default_sizes = get_intermediate_image_sizes(); + + if ( isset($backup_sizes['full-orig']) && is_array($backup_sizes['full-orig']) ) { + $data = $backup_sizes['full-orig']; + + if ( $parts['basename'] != $data['file'] ) { + if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) { + // delete only if it's edited image + if ( preg_match('/-e[0-9]{13}\./', $parts['basename']) ) { + $delpath = apply_filters('wp_delete_file', $file); + @unlink($delpath); + } + } else { + $backup_sizes["full-$suffix"] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $parts['basename']); + } + } + + $restored_file = path_join($parts['dirname'], $data['file']); + $restored = update_attached_file($post_id, $restored_file); + + $meta['file'] = _wp_relative_upload_path( $restored_file ); + $meta['width'] = $data['width']; + $meta['height'] = $data['height']; + list ( $uwidth, $uheight ) = wp_constrain_dimensions($meta['width'], $meta['height'], 128, 96); + $meta['hwstring_small'] = "height='$uheight' width='$uwidth'"; + } + + foreach ( $default_sizes as $default_size ) { + if ( isset($backup_sizes["$default_size-orig"]) ) { + $data = $backup_sizes["$default_size-orig"]; + if ( isset($meta['sizes'][$default_size]) && $meta['sizes'][$default_size]['file'] != $data['file'] ) { + if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) { + // delete only if it's edited image + if ( preg_match('/-e[0-9]{13}-/', $meta['sizes'][$default_size]['file']) ) { + $delpath = apply_filters( 'wp_delete_file', path_join($parts['dirname'], $meta['sizes'][$default_size]['file']) ); + @unlink($delpath); + } + } else { + $backup_sizes["$default_size-{$suffix}"] = $meta['sizes'][$default_size]; + } + } + + $meta['sizes'][$default_size] = $data; + } else { + unset($meta['sizes'][$default_size]); + } + } + + if ( !wp_update_attachment_metadata($post_id, $meta) || !update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes) ) { + $msg->error = __('Cannot save image metadata.'); + return $msg; + } + + if ( !$restored ) + $msg->error = __('Image metadata is inconsistent.'); + else + $msg->msg = __('Image restored successfully.'); + + return $msg; +} + +function wp_save_image($post_id) { + $return = new stdClass; + $success = $delete = $scaled = $nocrop = false; + $post = get_post($post_id); + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); + $img = load_image_to_edit($post_id, $post->post_mime_type); + + if ( !is_resource($img) ) { + $return->error = esc_js( __('Unable to create new image.') ); + return $return; + } + + $fwidth = !empty($_REQUEST['fwidth']) ? intval($_REQUEST['fwidth']) : 0; + $fheight = !empty($_REQUEST['fheight']) ? intval($_REQUEST['fheight']) : 0; + $target = !empty($_REQUEST['target']) ? preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['target']) : ''; + $scale = !empty($_REQUEST['do']) && 'scale' == $_REQUEST['do']; + + if ( $scale && $fwidth > 0 && $fheight > 0 ) { + $sX = imagesx($img); + $sY = imagesy($img); + + // check if it has roughly the same w / h ratio + $diff = round($sX / $sY, 2) - round($fwidth / $fheight, 2); + if ( -0.1 < $diff && $diff < 0.1 ) { + // scale the full size image + $dst = wp_imagecreatetruecolor($fwidth, $fheight); + if ( imagecopyresampled( $dst, $img, 0, 0, 0, 0, $fwidth, $fheight, $sX, $sY ) ) { + imagedestroy($img); + $img = $dst; + $scaled = true; + } + } + + if ( !$scaled ) { + $return->error = esc_js( __('Error while saving the scaled image. Please reload the page and try again.') ); + return $return; + } + } elseif ( !empty($_REQUEST['history']) ) { + $changes = json_decode( stripslashes($_REQUEST['history']) ); + if ( $changes ) + $img = image_edit_apply_changes($img, $changes); + } else { + $return->error = esc_js( __('Nothing to save, the image has not changed.') ); + return $return; + } + + $meta = wp_get_attachment_metadata($post_id); + $backup_sizes = get_post_meta( $post->ID, '_wp_attachment_backup_sizes', true ); + + if ( !is_array($meta) ) { + $return->error = esc_js( __('Image data does not exist. Please re-upload the image.') ); + return $return; + } + + if ( !is_array($backup_sizes) ) + $backup_sizes = array(); + + // generate new filename + $path = get_attached_file($post_id); + $path_parts = pathinfo( $path ); + $filename = $path_parts['filename']; + $suffix = time() . rand(100, 999); + + if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE && + isset($backup_sizes['full-orig']) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] ) { + + if ( 'thumbnail' == $target ) + $new_path = "{$path_parts['dirname']}/{$filename}-temp.{$path_parts['extension']}"; + else + $new_path = $path; + } else { + while( true ) { + $filename = preg_replace( '/-e([0-9]+)$/', '', $filename ); + $filename .= "-e{$suffix}"; + $new_filename = "{$filename}.{$path_parts['extension']}"; + $new_path = "{$path_parts['dirname']}/$new_filename"; + if ( file_exists($new_path) ) + $suffix++; + else + break; + } + } + + // save the full-size file, also needed to create sub-sizes + if ( !wp_save_image_file($new_path, $img, $post->post_mime_type, $post_id) ) { + $return->error = esc_js( __('Unable to save the image.') ); + return $return; + } + + if ( 'nothumb' == $target || 'all' == $target || 'full' == $target || $scaled ) { + $tag = false; + if ( isset($backup_sizes['full-orig']) ) { + if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] ) + $tag = "full-$suffix"; + } else { + $tag = 'full-orig'; + } + + if ( $tag ) + $backup_sizes[$tag] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $path_parts['basename']); + + $success = update_attached_file($post_id, $new_path); + + $meta['file'] = _wp_relative_upload_path($new_path); + $meta['width'] = imagesx($img); + $meta['height'] = imagesy($img); + + list ( $uwidth, $uheight ) = wp_constrain_dimensions($meta['width'], $meta['height'], 128, 96); + $meta['hwstring_small'] = "height='$uheight' width='$uwidth'"; + + if ( $success && ('nothumb' == $target || 'all' == $target) ) { + $sizes = get_intermediate_image_sizes(); + if ( 'nothumb' == $target ) + $sizes = array_diff( $sizes, array('thumbnail') ); + } + + $return->fw = $meta['width']; + $return->fh = $meta['height']; + } elseif ( 'thumbnail' == $target ) { + $sizes = array( 'thumbnail' ); + $success = $delete = $nocrop = true; + } + + if ( isset($sizes) ) { + foreach ( $sizes as $size ) { + $tag = false; + if ( isset($meta['sizes'][$size]) ) { + if ( isset($backup_sizes["$size-orig"]) ) { + if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes["$size-orig"]['file'] != $meta['sizes'][$size]['file'] ) + $tag = "$size-$suffix"; + } else { + $tag = "$size-orig"; + } + + if ( $tag ) + $backup_sizes[$tag] = $meta['sizes'][$size]; + } + + $crop = $nocrop ? false : get_option("{$size}_crop"); + $resized = image_make_intermediate_size($new_path, get_option("{$size}_size_w"), get_option("{$size}_size_h"), $crop ); + + if ( $resized ) + $meta['sizes'][$size] = $resized; + else + unset($meta['sizes'][$size]); + } + } + + if ( $success ) { + wp_update_attachment_metadata($post_id, $meta); + update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes); + + if ( $target == 'thumbnail' || $target == 'all' || $target == 'full' ) { + $file_url = wp_get_attachment_url($post_id); + if ( $thumb = $meta['sizes']['thumbnail'] ) + $return->thumbnail = path_join( dirname($file_url), $thumb['file'] ); + else + $return->thumbnail = "$file_url?w=128&h=128"; + } + } else { + $delete = true; + } + + if ( $delete ) { + $delpath = apply_filters('wp_delete_file', $new_path); + @unlink($delpath); + } + + imagedestroy($img); + + $return->msg = esc_js( __('Image saved') ); + return $return; +} diff --git a/wp-admin/includes/image.php b/wp-admin/includes/image.php new file mode 100644 index 0000000..8048387 --- /dev/null +++ b/wp-admin/includes/image.php @@ -0,0 +1,463 @@ +post_mime_type; + $src = load_image_to_edit( $src, $post->post_mime_type, 'full' ); + } else { + $size = @getimagesize( $src_file ); + $image_type = ( $size ) ? $size['mime'] : ''; + $src = wp_load_image( $src_file ); + } + } else { + $size = @getimagesize( $src ); + $image_type = ( $size ) ? $size['mime'] : ''; + $src = wp_load_image( $src ); + } + + if ( ! is_resource( $src ) ) + return new WP_Error( 'error_loading_image', $src, $src_file ); + + $dst = wp_imagecreatetruecolor( $dst_w, $dst_h ); + + if ( $src_abs ) { + $src_w -= $src_x; + $src_h -= $src_y; + } + + if ( function_exists( 'imageantialias' ) ) + imageantialias( $dst, true ); + + imagecopyresampled( $dst, $src, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ); + + imagedestroy( $src ); // Free up memory + + if ( ! $dst_file ) + $dst_file = str_replace( basename( $src_file ), 'cropped-' . basename( $src_file ), $src_file ); + + if ( 'image/png' != $image_type ) + $dst_file = preg_replace( '/\\.[^\\.]+$/', '.jpg', $dst_file ); + + // The directory containing the original file may no longer exist when + // using a replication plugin. + wp_mkdir_p( dirname( $dst_file ) ); + + $dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), basename( $dst_file ) ); + + if ( 'image/png' == $image_type && imagepng( $dst, $dst_file ) ) + return $dst_file; + elseif ( imagejpeg( $dst, $dst_file, apply_filters( 'jpeg_quality', 90, 'wp_crop_image' ) ) ) + return $dst_file; + else + return false; +} + +/** + * Generate post thumbnail attachment meta data. + * + * @since 2.1.0 + * + * @param int $attachment_id Attachment Id to process. + * @param string $file Filepath of the Attached image. + * @return mixed Metadata for attachment. + */ +function wp_generate_attachment_metadata( $attachment_id, $file ) { + $attachment = get_post( $attachment_id ); + + $metadata = array(); + if ( preg_match('!^image/!', get_post_mime_type( $attachment )) && file_is_displayable_image($file) ) { + $imagesize = getimagesize( $file ); + $metadata['width'] = $imagesize[0]; + $metadata['height'] = $imagesize[1]; + list($uwidth, $uheight) = wp_constrain_dimensions($metadata['width'], $metadata['height'], 128, 96); + $metadata['hwstring_small'] = "height='$uheight' width='$uwidth'"; + + // Make the file path relative to the upload dir + $metadata['file'] = _wp_relative_upload_path($file); + + // make thumbnails and other intermediate sizes + global $_wp_additional_image_sizes; + + foreach ( get_intermediate_image_sizes() as $s ) { + $sizes[$s] = array( 'width' => '', 'height' => '', 'crop' => false ); + if ( isset( $_wp_additional_image_sizes[$s]['width'] ) ) + $sizes[$s]['width'] = intval( $_wp_additional_image_sizes[$s]['width'] ); // For theme-added sizes + else + $sizes[$s]['width'] = get_option( "{$s}_size_w" ); // For default sizes set in options + if ( isset( $_wp_additional_image_sizes[$s]['height'] ) ) + $sizes[$s]['height'] = intval( $_wp_additional_image_sizes[$s]['height'] ); // For theme-added sizes + else + $sizes[$s]['height'] = get_option( "{$s}_size_h" ); // For default sizes set in options + if ( isset( $_wp_additional_image_sizes[$s]['crop'] ) ) + $sizes[$s]['crop'] = intval( $_wp_additional_image_sizes[$s]['crop'] ); // For theme-added sizes + else + $sizes[$s]['crop'] = get_option( "{$s}_crop" ); // For default sizes set in options + } + + $sizes = apply_filters( 'intermediate_image_sizes_advanced', $sizes ); + + foreach ($sizes as $size => $size_data ) { + $resized = image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'] ); + if ( $resized ) + $metadata['sizes'][$size] = $resized; + } + + // fetch additional metadata from exif/iptc + $image_meta = wp_read_image_metadata( $file ); + if ( $image_meta ) + $metadata['image_meta'] = $image_meta; + + } + + return apply_filters( 'wp_generate_attachment_metadata', $metadata, $attachment_id ); +} + +/** + * Calculated the new dimensions for a downsampled image. + * + * @since 2.0.0 + * @see wp_constrain_dimensions() + * + * @param int $width Current width of the image + * @param int $height Current height of the image + * @return mixed Array(height,width) of shrunk dimensions. + */ +function get_udims( $width, $height) { + return wp_constrain_dimensions( $width, $height, 128, 96 ); +} + +/** + * Convert a fraction string to a decimal. + * + * @since 2.5.0 + * + * @param string $str + * @return int|float + */ +function wp_exif_frac2dec($str) { + @list( $n, $d ) = explode( '/', $str ); + if ( !empty($d) ) + return $n / $d; + return $str; +} + +/** + * Convert the exif date format to a unix timestamp. + * + * @since 2.5.0 + * + * @param string $str + * @return int + */ +function wp_exif_date2ts($str) { + @list( $date, $time ) = explode( ' ', trim($str) ); + @list( $y, $m, $d ) = explode( ':', $date ); + + return strtotime( "{$y}-{$m}-{$d} {$time}" ); +} + +/** + * Get extended image metadata, exif or iptc as available. + * + * Retrieves the EXIF metadata aperture, credit, camera, caption, copyright, iso + * created_timestamp, focal_length, shutter_speed, and title. + * + * The IPTC metadata that is retrieved is APP13, credit, byline, created date + * and time, caption, copyright, and title. Also includes FNumber, Model, + * DateTimeDigitized, FocalLength, ISOSpeedRatings, and ExposureTime. + * + * @todo Try other exif libraries if available. + * @since 2.5.0 + * + * @param string $file + * @return bool|array False on failure. Image metadata array on success. + */ +function wp_read_image_metadata( $file ) { + if ( ! file_exists( $file ) ) + return false; + + list( , , $sourceImageType ) = getimagesize( $file ); + + // exif contains a bunch of data we'll probably never need formatted in ways + // that are difficult to use. We'll normalize it and just extract the fields + // that are likely to be useful. Fractions and numbers are converted to + // floats, dates to unix timestamps, and everything else to strings. + $meta = array( + 'aperture' => 0, + 'credit' => '', + 'camera' => '', + 'caption' => '', + 'created_timestamp' => 0, + 'copyright' => '', + 'focal_length' => 0, + 'iso' => 0, + 'shutter_speed' => 0, + 'title' => '', + ); + + // read iptc first, since it might contain data not available in exif such + // as caption, description etc + if ( is_callable( 'iptcparse' ) ) { + getimagesize( $file, $info ); + + if ( ! empty( $info['APP13'] ) ) { + $iptc = iptcparse( $info['APP13'] ); + + // headline, "A brief synopsis of the caption." + if ( ! empty( $iptc['2#105'][0] ) ) + $meta['title'] = utf8_encode( trim( $iptc['2#105'][0] ) ); + // title, "Many use the Title field to store the filename of the image, though the field may be used in many ways." + elseif ( ! empty( $iptc['2#005'][0] ) ) + $meta['title'] = utf8_encode( trim( $iptc['2#005'][0] ) ); + + if ( ! empty( $iptc['2#120'][0] ) ) { // description / legacy caption + $caption = utf8_encode( trim( $iptc['2#120'][0] ) ); + if ( empty( $meta['title'] ) ) { + // Assume the title is stored in 2:120 if it's short. + if ( strlen( $caption ) < 80 ) + $meta['title'] = $caption; + else + $meta['caption'] = $caption; + } elseif ( $caption != $meta['title'] ) { + $meta['caption'] = $caption; + } + } + + if ( ! empty( $iptc['2#110'][0] ) ) // credit + $meta['credit'] = utf8_encode(trim($iptc['2#110'][0])); + elseif ( ! empty( $iptc['2#080'][0] ) ) // creator / legacy byline + $meta['credit'] = utf8_encode(trim($iptc['2#080'][0])); + + if ( ! empty( $iptc['2#055'][0] ) and ! empty( $iptc['2#060'][0] ) ) // created date and time + $meta['created_timestamp'] = strtotime( $iptc['2#055'][0] . ' ' . $iptc['2#060'][0] ); + + if ( ! empty( $iptc['2#116'][0] ) ) // copyright + $meta['copyright'] = utf8_encode( trim( $iptc['2#116'][0] ) ); + } + } + + // fetch additional info from exif if available + if ( is_callable( 'exif_read_data' ) && in_array( $sourceImageType, apply_filters( 'wp_read_image_metadata_types', array( IMAGETYPE_JPEG, IMAGETYPE_TIFF_II, IMAGETYPE_TIFF_MM ) ) ) ) { + $exif = @exif_read_data( $file ); + + if ( !empty( $exif['Title'] ) ) + $meta['title'] = utf8_encode( trim( $exif['Title'] ) ); + + if ( ! empty( $exif['ImageDescription'] ) ) { + if ( empty( $meta['title'] ) && strlen( $exif['ImageDescription'] ) < 80 ) { + // Assume the title is stored in ImageDescription + $meta['title'] = utf8_encode( trim( $exif['ImageDescription'] ) ); + if ( ! empty( $exif['COMPUTED']['UserComment'] ) && trim( $exif['COMPUTED']['UserComment'] ) != $meta['title'] ) + $meta['caption'] = utf8_encode( trim( $exif['COMPUTED']['UserComment'] ) ); + } elseif ( trim( $exif['ImageDescription'] ) != $meta['title'] ) { + $meta['caption'] = utf8_encode( trim( $exif['ImageDescription'] ) ); + } + } elseif ( ! empty( $exif['Comments'] ) && trim( $exif['Comments'] ) != $meta['title'] ) { + $meta['caption'] = utf8_encode( trim( $exif['Comments'] ) ); + } + + if ( ! empty( $exif['Artist'] ) ) + $meta['credit'] = utf8_encode( trim( $exif['Artist'] ) ); + elseif ( ! empty($exif['Author'] ) ) + $meta['credit'] = utf8_encode( trim( $exif['Author'] ) ); + + if ( ! empty( $exif['Copyright'] ) ) + $meta['copyright'] = utf8_encode( trim( $exif['Copyright'] ) ); + if ( ! empty($exif['FNumber'] ) ) + $meta['aperture'] = round( wp_exif_frac2dec( $exif['FNumber'] ), 2 ); + if ( ! empty($exif['Model'] ) ) + $meta['camera'] = utf8_encode( trim( $exif['Model'] ) ); + if ( ! empty($exif['DateTimeDigitized'] ) ) + $meta['created_timestamp'] = wp_exif_date2ts($exif['DateTimeDigitized'] ); + if ( ! empty($exif['FocalLength'] ) ) + $meta['focal_length'] = wp_exif_frac2dec( $exif['FocalLength'] ); + if ( ! empty($exif['ISOSpeedRatings'] ) ) { + $meta['iso'] = is_array( $exif['ISOSpeedRatings'] ) ? reset( $exif['ISOSpeedRatings'] ) : $exif['ISOSpeedRatings']; + $meta['iso'] = utf8_encode( trim( $meta['iso'] ) ); + } + if ( ! empty($exif['ExposureTime'] ) ) + $meta['shutter_speed'] = wp_exif_frac2dec( $exif['ExposureTime'] ); + } + + return apply_filters( 'wp_read_image_metadata', $meta, $file, $sourceImageType ); + +} + +/** + * Validate that file is an image. + * + * @since 2.5.0 + * + * @param string $path File path to test if valid image. + * @return bool True if valid image, false if not valid image. + */ +function file_is_valid_image($path) { + $size = @getimagesize($path); + return !empty($size); +} + +/** + * Validate that file is suitable for displaying within a web page. + * + * @since 2.5.0 + * @uses apply_filters() Calls 'file_is_displayable_image' on $result and $path. + * + * @param string $path File path to test. + * @return bool True if suitable, false if not suitable. + */ +function file_is_displayable_image($path) { + $info = @getimagesize($path); + if ( empty($info) ) + $result = false; + elseif ( !in_array($info[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG)) ) // only gif, jpeg and png images can reliably be displayed + $result = false; + else + $result = true; + + return apply_filters('file_is_displayable_image', $result, $path); +} + +/** + * Load an image resource for editing. + * + * @since 2.9.0 + * + * @param string $attachment_id Attachment ID. + * @param string $mime_type Image mime type. + * @param string $size Optional. Image size, defaults to 'full'. + * @return resource|false The resulting image resource on success, false on failure. + */ +function load_image_to_edit( $attachment_id, $mime_type, $size = 'full' ) { + $filepath = _load_image_to_edit_path( $attachment_id, $size ); + if ( empty( $filepath ) ) + return false; + + switch ( $mime_type ) { + case 'image/jpeg': + $image = imagecreatefromjpeg($filepath); + break; + case 'image/png': + $image = imagecreatefrompng($filepath); + break; + case 'image/gif': + $image = imagecreatefromgif($filepath); + break; + default: + $image = false; + break; + } + if ( is_resource($image) ) { + $image = apply_filters('load_image_to_edit', $image, $attachment_id, $size); + if ( function_exists('imagealphablending') && function_exists('imagesavealpha') ) { + imagealphablending($image, false); + imagesavealpha($image, true); + } + } + return $image; +} + +/** + * Retrieve the path or url of an attachment's attached file. + * + * If the attached file is not present on the local filesystem (usually due to replication plugins), + * then the url of the file is returned if url fopen is supported. + * + * @since 3.4.0 + * @access private + * + * @param string $attachment_id Attachment ID. + * @param string $size Optional. Image size, defaults to 'full'. + * @return string|false File path or url on success, false on failure. + */ +function _load_image_to_edit_path( $attachment_id, $size = 'full' ) { + $filepath = get_attached_file( $attachment_id ); + + if ( $filepath && file_exists( $filepath ) ) { + if ( 'full' != $size && ( $data = image_get_intermediate_size( $attachment_id, $size ) ) ) { + $filepath = apply_filters( 'load_image_to_edit_filesystempath', path_join( dirname( $filepath ), $data['file'] ), $attachment_id, $size ); + } + } elseif ( function_exists( 'fopen' ) && function_exists( 'ini_get' ) && true == ini_get( 'allow_url_fopen' ) ) { + $filepath = apply_filters( 'load_image_to_edit_attachmenturl', wp_get_attachment_url( $attachment_id ), $attachment_id, $size ); + } + + return apply_filters( 'load_image_to_edit_path', $filepath, $attachment_id, $size ); +} + +/** + * Copy an existing image file. + * + * @since 3.4.0 + * @access private + * + * @param string $attachment_id Attachment ID. + * @return string|false New file path on success, false on failure. + */ +function _copy_image_file( $attachment_id ) { + $dst_file = $src_file = get_attached_file( $attachment_id ); + if ( ! file_exists( $src_file ) ) + $src_file = _load_image_to_edit_path( $attachment_id ); + + if ( $src_file ) { + $dst_file = str_replace( basename( $dst_file ), 'copy-' . basename( $dst_file ), $dst_file ); + $dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), basename( $dst_file ) ); + + // The directory containing the original file may no longer exist when + // using a replication plugin. + wp_mkdir_p( dirname( $dst_file ) ); + + if ( ! @copy( $src_file, $dst_file ) ) + $dst_file = false; + } else { + $dst_file = false; + } + + return $dst_file; +} diff --git a/wp-admin/includes/import.php b/wp-admin/includes/import.php new file mode 100644 index 0000000..3713f18 --- /dev/null +++ b/wp-admin/includes/import.php @@ -0,0 +1,95 @@ + false, 'test_type' => false ); + $_FILES['import']['name'] .= '.txt'; + $file = wp_handle_upload( $_FILES['import'], $overrides ); + + if ( isset( $file['error'] ) ) + return $file; + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $filename = basename( $file ); + + // Construct the object array + $object = array( 'post_title' => $filename, + 'post_content' => $url, + 'post_mime_type' => $type, + 'guid' => $url, + 'context' => 'import', + 'post_status' => 'private' + ); + + // Save the data + $id = wp_insert_attachment( $object, $file ); + + // schedule a cleanup for one day from now in case of failed import or missing wp_import_cleanup() call + wp_schedule_single_event( time() + 86400, 'importer_scheduled_cleanup', array( $id ) ); + + return array( 'file' => $file, 'id' => $id ); +} diff --git a/wp-admin/includes/list-table.php b/wp-admin/includes/list-table.php new file mode 100644 index 0000000..2dff578 --- /dev/null +++ b/wp-admin/includes/list-table.php @@ -0,0 +1,104 @@ + 'posts', + 'WP_Media_List_Table' => 'media', + 'WP_Terms_List_Table' => 'terms', + 'WP_Users_List_Table' => 'users', + 'WP_Comments_List_Table' => 'comments', + 'WP_Post_Comments_List_Table' => 'comments', + 'WP_Links_List_Table' => 'links', + 'WP_Plugin_Install_List_Table' => 'plugin-install', + 'WP_Themes_List_Table' => 'themes', + 'WP_Theme_Install_List_Table' => array( 'themes', 'theme-install' ), + 'WP_Plugins_List_Table' => 'plugins', + // Network Admin + 'WP_MS_Sites_List_Table' => 'ms-sites', + 'WP_MS_Users_List_Table' => 'ms-users', + 'WP_MS_Themes_List_Table' => 'ms-themes', + ); + + if ( isset( $core_classes[ $class ] ) ) { + foreach ( (array) $core_classes[ $class ] as $required ) + require_once( ABSPATH . 'wp-admin/includes/class-wp-' . $required . '-list-table.php' ); + return new $class; + } + + return false; +} + +/** + * Register column headers for a particular screen. + * + * @since 2.7.0 + * + * @param string $screen The handle for the screen to add help to. This is usually the hook name returned by the add_*_page() functions. + * @param array $columns An array of columns with column IDs as the keys and translated column names as the values + * @see get_column_headers(), print_column_headers(), get_hidden_columns() + */ +function register_column_headers($screen, $columns) { + $wp_list_table = new _WP_List_Table_Compat($screen, $columns); +} + +/** + * Prints column headers for a particular screen. + * + * @since 2.7.0 + */ +function print_column_headers($screen, $id = true) { + $wp_list_table = new _WP_List_Table_Compat($screen); + + $wp_list_table->print_column_headers($id); +} + +/** + * Helper class to be used only by back compat functions + * + * @since 3.1.0 + */ +class _WP_List_Table_Compat extends WP_List_Table { + var $_screen; + var $_columns; + + function _WP_List_Table_Compat( $screen, $columns = array() ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + $this->_screen = $screen; + + if ( !empty( $columns ) ) { + $this->_columns = $columns; + add_filter( 'manage_' . $screen->id . '_columns', array( &$this, 'get_columns' ), 0 ); + } + } + + function get_column_info() { + $columns = get_column_headers( $this->_screen ); + $hidden = get_hidden_columns( $this->_screen ); + $sortable = array(); + + return array( $columns, $hidden, $sortable ); + } + + function get_columns() { + return $this->_columns; + } +} diff --git a/wp-admin/includes/manifest.php b/wp-admin/includes/manifest.php new file mode 100644 index 0000000..99b4774 --- /dev/null +++ b/wp-admin/includes/manifest.php @@ -0,0 +1,201 @@ + __('From Computer'), // handler action suffix => tab text + 'type_url' => __('From URL'), + 'gallery' => __('Gallery'), + 'library' => __('Media Library') + ); + + return apply_filters('media_upload_tabs', $_default_tabs); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $tabs + * @return unknown + */ +function update_gallery_tab($tabs) { + global $wpdb; + + if ( !isset($_REQUEST['post_id']) ) { + unset($tabs['gallery']); + return $tabs; + } + + $post_id = intval($_REQUEST['post_id']); + + if ( $post_id ) + $attachments = intval( $wpdb->get_var( $wpdb->prepare( "SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent = %d", $post_id ) ) ); + + if ( empty($attachments) ) { + unset($tabs['gallery']); + return $tabs; + } + + $tabs['gallery'] = sprintf(__('Gallery (%s)'), "$attachments"); + + return $tabs; +} +add_filter('media_upload_tabs', 'update_gallery_tab'); + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + */ +function the_media_upload_tabs() { + global $redir_tab; + $tabs = media_upload_tabs(); + $default = 'type'; + + if ( !empty($tabs) ) { + echo "
    \n"; + if ( isset($redir_tab) && array_key_exists($redir_tab, $tabs) ) + $current = $redir_tab; + elseif ( isset($_GET['tab']) && array_key_exists($_GET['tab'], $tabs) ) + $current = $_GET['tab']; + else + $current = apply_filters('media_upload_default_tab', $default); + + foreach ( $tabs as $callback => $text ) { + $class = ''; + + if ( $current == $callback ) + $class = " class='current'"; + + $href = add_query_arg(array('tab' => $callback, 's' => false, 'paged' => false, 'post_mime_type' => false, 'm' => false)); + $link = "$text"; + echo "\t
  • $link
  • \n"; + } + echo "
\n"; + } +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $id + * @param unknown_type $alt + * @param unknown_type $title + * @param unknown_type $align + * @param unknown_type $url + * @param unknown_type $rel + * @param unknown_type $size + * @return unknown + */ +function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel = false, $size='medium', $alt = '') { + + $html = get_image_tag($id, $alt, $title, $align, $size); + + $rel = $rel ? ' rel="attachment wp-att-' . esc_attr($id).'"' : ''; + + if ( $url ) + $html = '$html"; + + $html = apply_filters( 'image_send_to_editor', $html, $id, $caption, $title, $align, $url, $size, $alt ); + + return $html; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.6.0 + * + * @param unknown_type $html + * @param unknown_type $id + * @param unknown_type $alt + * @param unknown_type $title + * @param unknown_type $align + * @param unknown_type $url + * @param unknown_type $size + * @return unknown + */ +function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) { + + if ( empty($caption) || apply_filters( 'disable_captions', '' ) ) + return $html; + + $id = ( 0 < (int) $id ) ? 'attachment_' . $id : ''; + + if ( ! preg_match( '/width=["\']([0-9]+)/', $html, $matches ) ) + return $html; + + $width = $matches[1]; + + $caption = str_replace( array("\r\n", "\r"), "\n", $caption); + $caption = preg_replace_callback( '/<[a-zA-Z0-9]+(?: [^<>]+>)*/', '_cleanup_image_add_caption', $caption ); + // convert any remaining line breaks to
+ $caption = preg_replace( '/[ \n\t]*\n[ \t]*/', '
', $caption ); + + $html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html ); + if ( empty($align) ) + $align = 'none'; + + $shcode = '[caption id="' . $id . '" align="align' . $align . '" width="' . $width . '"]' . $html . ' ' . $caption . '[/caption]'; + + return apply_filters( 'image_add_caption_shortcode', $shcode, $html ); +} +add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 ); + +/** + * Private preg_replace callback used in image_add_caption() + * + * @access private + * @since 3.4.0 + */ +function _cleanup_image_add_caption( $matches ) { + // remove any line breaks from inside the tags + return preg_replace( '/[\r\n\t]+/', ' ', $matches[0] ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $html + */ +function media_send_to_editor($html) { +?> + + false )) { + + $time = current_time('mysql'); + if ( $post = get_post($post_id) ) { + if ( substr( $post->post_date, 0, 4 ) > 0 ) + $time = $post->post_date; + } + + $name = $_FILES[$file_id]['name']; + $file = wp_handle_upload($_FILES[$file_id], $overrides, $time); + + if ( isset($file['error']) ) + return new WP_Error( 'upload_error', $file['error'] ); + + $name_parts = pathinfo($name); + $name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $title = $name; + $content = ''; + + // use image exif/iptc data for title and caption defaults if possible + if ( $image_meta = @wp_read_image_metadata($file) ) { + if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) + $title = $image_meta['title']; + if ( trim( $image_meta['caption'] ) ) + $content = $image_meta['caption']; + } + + // Construct the attachment array + $attachment = array_merge( array( + 'post_mime_type' => $type, + 'guid' => $url, + 'post_parent' => $post_id, + 'post_title' => $title, + 'post_content' => $content, + ), $post_data ); + + // This should never be set as it would then overwrite an existing attachment. + if ( isset( $attachment['ID'] ) ) + unset( $attachment['ID'] ); + + // Save the data + $id = wp_insert_attachment($attachment, $file, $post_id); + if ( !is_wp_error($id) ) { + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + } + + return $id; + +} + +/** + * This handles a sideloaded file in the same way as an uploaded file is handled by {@link media_handle_upload()} + * + * @since 2.6.0 + * + * @param array $file_array Array similar to a {@link $_FILES} upload array + * @param int $post_id The post ID the media is associated with + * @param string $desc Description of the sideloaded file + * @param array $post_data allows you to overwrite some of the attachment + * @return int|object The ID of the attachment or a WP_Error on failure + */ +function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = array()) { + $overrides = array('test_form'=>false); + + $file = wp_handle_sideload($file_array, $overrides); + if ( isset($file['error']) ) + return new WP_Error( 'upload_error', $file['error'] ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $title = preg_replace('/\.[^.]+$/', '', basename($file)); + $content = ''; + + // use image exif/iptc data for title and caption defaults if possible + if ( $image_meta = @wp_read_image_metadata($file) ) { + if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) + $title = $image_meta['title']; + if ( trim( $image_meta['caption'] ) ) + $content = $image_meta['caption']; + } + + if ( isset( $desc ) ) + $title = $desc; + + // Construct the attachment array + $attachment = array_merge( array( + 'post_mime_type' => $type, + 'guid' => $url, + 'post_parent' => $post_id, + 'post_title' => $title, + 'post_content' => $content, + ), $post_data ); + + // This should never be set as it would then overwrite an existing attachment. + if ( isset( $attachment['ID'] ) ) + unset( $attachment['ID'] ); + + // Save the attachment metadata + $id = wp_insert_attachment($attachment, $file, $post_id); + if ( !is_wp_error($id) ) + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + + return $id; +} + +/** + * {@internal Missing Short Description}} + * + * Wrap iframe content (produced by $content_func) in a doctype, html head/body + * etc any additional function args will be passed to content_func. + * + * @since 2.5.0 + * + * @param unknown_type $content_func + */ +function wp_iframe($content_func /* ... */) { + _wp_admin_html_begin(); +?> +<?php bloginfo('name') ?> › <?php _e('Uploads'); ?> — <?php _e('WordPress'); ?> + + + + + class="no-js"> + + + + + +'; + + echo '' . sprintf( $context, $img ) . ''; +} +add_action( 'media_buttons', 'media_buttons' ); + +function _media_button($title, $icon, $type, $id) { + return "$title"; +} + +function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) { + global $post_ID; + + if ( empty( $post_id ) ) + $post_id = $post_ID; + + $upload_iframe_src = add_query_arg( 'post_id', (int) $post_id, admin_url('media-upload.php') ); + + if ( $type && 'media' != $type ) + $upload_iframe_src = add_query_arg('type', $type, $upload_iframe_src); + + if ( ! empty( $tab ) ) + $upload_iframe_src = add_query_arg('tab', $tab, $upload_iframe_src); + + $upload_iframe_src = apply_filters($type . '_upload_iframe_src', $upload_iframe_src); + + return add_query_arg('TB_iframe', true, $upload_iframe_src); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function media_upload_form_handler() { + check_admin_referer('media-form'); + + $errors = null; + + if ( isset($_POST['send']) ) { + $keys = array_keys($_POST['send']); + $send_id = (int) array_shift($keys); + } + + if ( !empty($_POST['attachments']) ) foreach ( $_POST['attachments'] as $attachment_id => $attachment ) { + $post = $_post = get_post($attachment_id, ARRAY_A); + $post_type_object = get_post_type_object( $post[ 'post_type' ] ); + + if ( !current_user_can( $post_type_object->cap->edit_post, $attachment_id ) ) + continue; + + if ( isset($attachment['post_content']) ) + $post['post_content'] = $attachment['post_content']; + if ( isset($attachment['post_title']) ) + $post['post_title'] = $attachment['post_title']; + if ( isset($attachment['post_excerpt']) ) + $post['post_excerpt'] = $attachment['post_excerpt']; + if ( isset($attachment['menu_order']) ) + $post['menu_order'] = $attachment['menu_order']; + + if ( isset($send_id) && $attachment_id == $send_id ) { + if ( isset($attachment['post_parent']) ) + $post['post_parent'] = $attachment['post_parent']; + } + + $post = apply_filters('attachment_fields_to_save', $post, $attachment); + + if ( isset($attachment['image_alt']) ) { + $image_alt = get_post_meta($attachment_id, '_wp_attachment_image_alt', true); + if ( $image_alt != stripslashes($attachment['image_alt']) ) { + $image_alt = wp_strip_all_tags( stripslashes($attachment['image_alt']), true ); + // update_meta expects slashed + update_post_meta( $attachment_id, '_wp_attachment_image_alt', addslashes($image_alt) ); + } + } + + if ( isset($post['errors']) ) { + $errors[$attachment_id] = $post['errors']; + unset($post['errors']); + } + + if ( $post != $_post ) + wp_update_post($post); + + foreach ( get_attachment_taxonomies($post) as $t ) { + if ( isset($attachment[$t]) ) + wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false); + } + } + + if ( isset($_POST['insert-gallery']) || isset($_POST['update-gallery']) ) { ?> + + $html"; + } + + $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment); + return media_send_to_editor($html); + } + + return $errors; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function wp_media_upload_handler() { + $errors = array(); + $id = 0; + + if ( isset($_POST['html-upload']) && !empty($_FILES) ) { + check_admin_referer('media-form'); + // Upload File button was clicked + $id = media_handle_upload('async-upload', $_REQUEST['post_id']); + unset($_FILES); + if ( is_wp_error($id) ) { + $errors['upload_error'] = $id; + $id = false; + } + } + + if ( !empty($_POST['insertonlybutton']) ) { + $src = $_POST['src']; + if ( !empty($src) && !strpos($src, '://') ) + $src = "http://$src"; + + if ( isset( $_POST['media_type'] ) && 'image' != $_POST['media_type'] ) { + $title = esc_html( stripslashes( $_POST['title'] ) ); + if ( empty( $title ) ) + $title = esc_html( basename( $src ) ); + + if ( $title && $src ) + $html = "$title"; + + $type = 'file'; + if ( ( $ext = preg_replace( '/^.+?\.([^.]+)$/', '$1', $src ) ) && ( $ext_type = wp_ext2type( $ext ) ) + && ( 'audio' == $ext_type || 'video' == $ext_type ) ) + $type = $ext_type; + + $html = apply_filters( $type . '_send_to_editor_url', $html, esc_url_raw( $src ), $title ); + } else { + $align = ''; + $alt = esc_attr( stripslashes( $_POST['alt'] ) ); + if ( isset($_POST['align']) ) { + $align = esc_attr( stripslashes( $_POST['align'] ) ); + $class = " class='align$align'"; + } + if ( !empty($src) ) + $html = "$alt"; + + $html = apply_filters( 'image_send_to_editor_url', $html, esc_url_raw( $src ), $alt, $align ); + } + + return media_send_to_editor($html); + } + + if ( !empty($_POST) ) { + $return = media_upload_form_handler(); + + if ( is_string($return) ) + return $return; + if ( is_array($return) ) + $errors = $return; + } + + if ( isset($_POST['save']) ) { + $errors['upload_notice'] = __('Saved.'); + return media_upload_gallery(); + } + + if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) { + $type = 'image'; + if ( isset( $_GET['type'] ) && in_array( $_GET['type'], array( 'video', 'audio', 'file' ) ) ) + $type = $_GET['type']; + return wp_iframe( 'media_upload_type_url_form', $type, $errors, $id ); + } + + return wp_iframe( 'media_upload_type_form', 'image', $errors, $id ); +} + +/** + * Download an image from the specified URL and attach it to a post. + * + * @since 2.6.0 + * + * @param string $file The URL of the image to download + * @param int $post_id The post ID the media is to be associated with + * @param string $desc Optional. Description of the image + * @return string|WP_Error Populated HTML img tag on success + */ +function media_sideload_image($file, $post_id, $desc = null) { + if ( ! empty($file) ) { + // Download file to temp location + $tmp = download_url( $file ); + + // Set variables for storage + // fix file filename for query strings + preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $file, $matches); + $file_array['name'] = basename($matches[0]); + $file_array['tmp_name'] = $tmp; + + // If error storing temporarily, unlink + if ( is_wp_error( $tmp ) ) { + @unlink($file_array['tmp_name']); + $file_array['tmp_name'] = ''; + } + + // do the validation and storage stuff + $id = media_handle_sideload( $file_array, $post_id, $desc ); + // If error storing permanently, unlink + if ( is_wp_error($id) ) { + @unlink($file_array['tmp_name']); + return $id; + } + + $src = wp_get_attachment_url( $id ); + } + + // Finally check to make sure the file has been saved, then return the html + if ( ! empty($src) ) { + $alt = isset($desc) ? esc_attr($desc) : ''; + $html = "$alt"; + return $html; + } +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function media_upload_gallery() { + $errors = array(); + + if ( !empty($_POST) ) { + $return = media_upload_form_handler(); + + if ( is_string($return) ) + return $return; + if ( is_array($return) ) + $errors = $return; + } + + wp_enqueue_script('admin-gallery'); + return wp_iframe( 'media_upload_gallery_form', $errors ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function media_upload_library() { + $errors = array(); + if ( !empty($_POST) ) { + $return = media_upload_form_handler(); + + if ( is_string($return) ) + return $return; + if ( is_array($return) ) + $errors = $return; + } + + return wp_iframe( 'media_upload_library_form', $errors ); +} + +/** + * Retrieve HTML for the image alignment radio buttons with the specified one checked. + * + * @since 2.7.0 + * + * @param unknown_type $post + * @param unknown_type $checked + * @return unknown + */ +function image_align_input_fields( $post, $checked = '' ) { + + if ( empty($checked) ) + $checked = get_user_setting('align', 'none'); + + $alignments = array('none' => __('None'), 'left' => __('Left'), 'center' => __('Center'), 'right' => __('Right')); + if ( !array_key_exists( (string) $checked, $alignments ) ) + $checked = 'none'; + + $out = array(); + foreach ( $alignments as $name => $label ) { + $name = esc_attr($name); + $out[] = ""; + } + return join("\n", $out); +} + +/** + * Retrieve HTML for the size radio buttons with the specified one checked. + * + * @since 2.7.0 + * + * @param unknown_type $post + * @param unknown_type $check + * @return unknown + */ +function image_size_input_fields( $post, $check = '' ) { + + // get a list of the actual pixel dimensions of each possible intermediate version of this image + $size_names = apply_filters( 'image_size_names_choose', array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')) ); + + if ( empty($check) ) + $check = get_user_setting('imgsize', 'medium'); + + foreach ( $size_names as $size => $label ) { + $downsize = image_downsize($post->ID, $size); + $checked = ''; + + // is this size selectable? + $enabled = ( $downsize[3] || 'full' == $size ); + $css_id = "image-size-{$size}-{$post->ID}"; + // if this size is the default but that's not available, don't select it + if ( $size == $check ) { + if ( $enabled ) + $checked = " checked='checked'"; + else + $check = ''; + } elseif ( !$check && $enabled && 'thumbnail' != $size ) { + // if $check is not enabled, default to the first available size that's bigger than a thumbnail + $check = $size; + $checked = " checked='checked'"; + } + + $html = "
"; + + $html .= ""; + // only show the dimensions if that choice is available + if ( $enabled ) + $html .= " "; + + $html .= '
'; + + $out[] = $html; + } + + return array( + 'label' => __('Size'), + 'input' => 'html', + 'html' => join("\n", $out), + ); +} + +/** + * Retrieve HTML for the Link URL buttons with the default link type as specified. + * + * @since 2.7.0 + * + * @param unknown_type $post + * @param unknown_type $url_type + * @return unknown + */ +function image_link_input_fields($post, $url_type = '') { + + $file = wp_get_attachment_url($post->ID); + $link = get_attachment_link($post->ID); + + if ( empty($url_type) ) + $url_type = get_user_setting('urlbutton', 'post'); + + $url = ''; + if ( $url_type == 'file' ) + $url = $file; + elseif ( $url_type == 'post' ) + $url = $link; + + return " +
+ + + +"; +} + +function wp_caption_input_textarea($edit_post) { + // post data is already escaped + $name = "attachments[{$edit_post->ID}][post_excerpt]"; + + return ''; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $form_fields + * @param unknown_type $post + * @return unknown + */ +function image_attachment_fields_to_edit($form_fields, $post) { + if ( substr($post->post_mime_type, 0, 5) == 'image' ) { + $alt = get_post_meta($post->ID, '_wp_attachment_image_alt', true); + if ( empty($alt) ) + $alt = ''; + + $form_fields['post_title']['required'] = true; + + $form_fields['image_alt'] = array( + 'value' => $alt, + 'label' => __('Alternate Text'), + 'helps' => __('Alt text for the image, e.g. “The Mona Lisa”') + ); + + $form_fields['align'] = array( + 'label' => __('Alignment'), + 'input' => 'html', + 'html' => image_align_input_fields($post, get_option('image_default_align')), + ); + + $form_fields['image-size'] = image_size_input_fields( $post, get_option('image_default_size', 'medium') ); + + } else { + unset( $form_fields['image_alt'] ); + } + return $form_fields; +} + +add_filter('attachment_fields_to_edit', 'image_attachment_fields_to_edit', 10, 2); + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $form_fields + * @param unknown_type $post + * @return unknown + */ +function media_single_attachment_fields_to_edit( $form_fields, $post ) { + unset($form_fields['url'], $form_fields['align'], $form_fields['image-size']); + return $form_fields; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.8.0 + * + * @param unknown_type $form_fields + * @param unknown_type $post + * @return unknown + */ +function media_post_single_attachment_fields_to_edit( $form_fields, $post ) { + unset($form_fields['image_url']); + return $form_fields; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $post + * @param unknown_type $attachment + * @return unknown + */ +function image_attachment_fields_to_save($post, $attachment) { + if ( substr($post['post_mime_type'], 0, 5) == 'image' ) { + if ( strlen(trim($post['post_title'])) == 0 ) { + $post['post_title'] = preg_replace('/\.\w+$/', '', basename($post['guid'])); + $post['errors']['post_title']['errors'][] = __('Empty Title filled from filename.'); + } + } + + return $post; +} + +add_filter('attachment_fields_to_save', 'image_attachment_fields_to_save', 10, 2); + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $html + * @param unknown_type $attachment_id + * @param unknown_type $attachment + * @return unknown + */ +function image_media_send_to_editor($html, $attachment_id, $attachment) { + $post =& get_post($attachment_id); + if ( substr($post->post_mime_type, 0, 5) == 'image' ) { + $url = $attachment['url']; + $align = !empty($attachment['align']) ? $attachment['align'] : 'none'; + $size = !empty($attachment['image-size']) ? $attachment['image-size'] : 'medium'; + $alt = !empty($attachment['image_alt']) ? $attachment['image_alt'] : ''; + $rel = ( $url == get_attachment_link($attachment_id) ); + + return get_image_send_to_editor($attachment_id, $attachment['post_excerpt'], $attachment['post_title'], $align, $url, $rel, $size, $alt); + } + + return $html; +} + +add_filter('media_send_to_editor', 'image_media_send_to_editor', 10, 3); + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $post + * @param unknown_type $errors + * @return unknown + */ +function get_attachment_fields_to_edit($post, $errors = null) { + if ( is_int($post) ) + $post =& get_post($post); + if ( is_array($post) ) + $post = (object) $post; + + $image_url = wp_get_attachment_url($post->ID); + + $edit_post = sanitize_post($post, 'edit'); + + $form_fields = array( + 'post_title' => array( + 'label' => __('Title'), + 'value' => $edit_post->post_title + ), + 'image_alt' => array(), + 'post_excerpt' => array( + 'label' => __('Caption'), + 'input' => 'html', + 'html' => wp_caption_input_textarea($edit_post) + ), + 'post_content' => array( + 'label' => __('Description'), + 'value' => $edit_post->post_content, + 'input' => 'textarea' + ), + 'url' => array( + 'label' => __('Link URL'), + 'input' => 'html', + 'html' => image_link_input_fields($post, get_option('image_default_link_type')), + 'helps' => __('Enter a link URL or click above for presets.') + ), + 'menu_order' => array( + 'label' => __('Order'), + 'value' => $edit_post->menu_order + ), + 'image_url' => array( + 'label' => __('File URL'), + 'input' => 'html', + 'html' => "
", + 'value' => wp_get_attachment_url($post->ID), + 'helps' => __('Location of the uploaded file.') + ) + ); + + foreach ( get_attachment_taxonomies($post) as $taxonomy ) { + $t = (array) get_taxonomy($taxonomy); + if ( ! $t['public'] ) + continue; + if ( empty($t['label']) ) + $t['label'] = $taxonomy; + if ( empty($t['args']) ) + $t['args'] = array(); + + $terms = get_object_term_cache($post->ID, $taxonomy); + if ( empty($terms) ) + $terms = wp_get_object_terms($post->ID, $taxonomy, $t['args']); + + $values = array(); + + foreach ( $terms as $term ) + $values[] = $term->name; + $t['value'] = join(', ', $values); + + $form_fields[$taxonomy] = $t; + } + + // Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default + // The recursive merge is easily traversed with array casting: foreach( (array) $things as $thing ) + $form_fields = array_merge_recursive($form_fields, (array) $errors); + + $form_fields = apply_filters('attachment_fields_to_edit', $form_fields, $post); + + return $form_fields; +} + +/** + * Retrieve HTML for media items of post gallery. + * + * The HTML markup retrieved will be created for the progress of SWF Upload + * component. Will also create link for showing and hiding the form to modify + * the image attachment. + * + * @since 2.5.0 + * + * @param int $post_id Optional. Post ID. + * @param array $errors Errors for attachment, if any. + * @return string + */ +function get_media_items( $post_id, $errors ) { + $attachments = array(); + if ( $post_id ) { + $post = get_post($post_id); + if ( $post && $post->post_type == 'attachment' ) + $attachments = array($post->ID => $post); + else + $attachments = get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'orderby' => 'menu_order ASC, ID', 'order' => 'DESC') ); + } else { + if ( is_array($GLOBALS['wp_the_query']->posts) ) + foreach ( $GLOBALS['wp_the_query']->posts as $attachment ) + $attachments[$attachment->ID] = $attachment; + } + + $output = ''; + foreach ( (array) $attachments as $id => $attachment ) { + if ( $attachment->post_status == 'trash' ) + continue; + if ( $item = get_media_item( $id, array( 'errors' => isset($errors[$id]) ? $errors[$id] : null) ) ) + $output .= "\n
$item\n
"; + } + + return $output; +} + +/** + * Retrieve HTML form for modifying the image attachment. + * + * @since 2.5.0 + * + * @param int $attachment_id Attachment ID for modification. + * @param string|array $args Optional. Override defaults. + * @return string HTML form for attachment. + */ +function get_media_item( $attachment_id, $args = null ) { + global $redir_tab; + + if ( ( $attachment_id = intval( $attachment_id ) ) && $thumb_url = wp_get_attachment_image_src( $attachment_id, 'thumbnail', true ) ) + $thumb_url = $thumb_url[0]; + else + $thumb_url = false; + + $post = get_post( $attachment_id ); + $current_post_id = !empty( $_GET['post_id'] ) ? (int) $_GET['post_id'] : 0; + + $default_args = array( 'errors' => null, 'send' => $current_post_id ? post_type_supports( get_post_type( $current_post_id ), 'editor' ) : true, 'delete' => true, 'toggle' => true, 'show_title' => true ); + $args = wp_parse_args( $args, $default_args ); + $args = apply_filters( 'get_media_item_args', $args ); + extract( $args, EXTR_SKIP ); + + $toggle_on = __( 'Show' ); + $toggle_off = __( 'Hide' ); + + $filename = esc_html( basename( $post->guid ) ); + $title = esc_attr( $post->post_title ); + + if ( $_tags = get_the_tags( $attachment_id ) ) { + foreach ( $_tags as $tag ) + $tags[] = $tag->name; + $tags = esc_attr( join( ', ', $tags ) ); + } + + $post_mime_types = get_post_mime_types(); + $keys = array_keys( wp_match_mime_types( array_keys( $post_mime_types ), $post->post_mime_type ) ); + $type = array_shift( $keys ); + $type_html = ""; + + $form_fields = get_attachment_fields_to_edit( $post, $errors ); + + if ( $toggle ) { + $class = empty( $errors ) ? 'startclosed' : 'startopen'; + $toggle_links = " + $toggle_on + $toggle_off"; + } else { + $class = ''; + $toggle_links = ''; + } + + $display_title = ( !empty( $title ) ) ? $title : $filename; // $title shouldn't ever be empty, but just in case + $display_title = $show_title ? "
" . wp_html_excerpt( $display_title, 60 ) . "
" : ''; + + $gallery = ( ( isset( $_REQUEST['tab'] ) && 'gallery' == $_REQUEST['tab'] ) || ( isset( $redir_tab ) && 'gallery' == $redir_tab ) ); + $order = ''; + + foreach ( $form_fields as $key => $val ) { + if ( 'menu_order' == $key ) { + if ( $gallery ) + $order = ""; + else + $order = ""; + + unset( $form_fields['menu_order'] ); + break; + } + } + + $media_dims = ''; + $meta = wp_get_attachment_metadata( $post->ID ); + if ( is_array( $meta ) && array_key_exists( 'width', $meta ) && array_key_exists( 'height', $meta ) ) + $media_dims .= "{$meta['width']} × {$meta['height']} "; + $media_dims = apply_filters( 'media_meta', $media_dims, $post ); + + $image_edit_button = ''; + if ( gd_edit_image_support( $post->post_mime_type ) ) { + $nonce = wp_create_nonce( "image_editor-$post->ID" ); + $image_edit_button = " "; + } + + $attachment_url = get_permalink( $attachment_id ); + + $item = " + $type_html + $toggle_links + $order + $display_title + + + + + \n"; + + $item .= " + + + + \n"; + + $defaults = array( + 'input' => 'text', + 'required' => false, + 'value' => '', + 'extra_rows' => array(), + ); + + if ( $send ) + $send = get_submit_button( __( 'Insert into Post' ), 'button', "send[$attachment_id]", false ); + if ( $delete && current_user_can( 'delete_post', $attachment_id ) ) { + if ( !EMPTY_TRASH_DAYS ) { + $delete = "" . __( 'Delete Permanently' ) . ''; + } elseif ( !MEDIA_TRASH ) { + $delete = "" . __( 'Delete' ) . " + "; + } else { + $delete = "" . __( 'Move to Trash' ) . " + "; + } + } else { + $delete = ''; + } + + $thumbnail = ''; + $calling_post_id = 0; + if ( isset( $_GET['post_id'] ) ) + $calling_post_id = absint( $_GET['post_id'] ); + elseif ( isset( $_POST ) && count( $_POST ) ) // Like for async-upload where $_GET['post_id'] isn't set + $calling_post_id = $post->post_parent; + if ( 'image' == $type && $calling_post_id && current_theme_supports( 'post-thumbnails', get_post_type( $calling_post_id ) ) + && post_type_supports( get_post_type( $calling_post_id ), 'thumbnail' ) && get_post_thumbnail_id( $calling_post_id ) != $attachment_id ) { + $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$calling_post_id" ); + $thumbnail = "" . esc_html__( "Use as featured image" ) . ""; + } + + if ( ( $send || $thumbnail || $delete ) && !isset( $form_fields['buttons'] ) ) + $form_fields['buttons'] = array( 'tr' => "\t\t\n" ); + + $hidden_fields = array(); + + foreach ( $form_fields as $id => $field ) { + if ( $id[0] == '_' ) + continue; + + if ( !empty( $field['tr'] ) ) { + $item .= $field['tr']; + continue; + } + + $field = array_merge( $defaults, $field ); + $name = "attachments[$attachment_id][$id]"; + + if ( $field['input'] == 'hidden' ) { + $hidden_fields[$name] = $field['value']; + continue; + } + + $required = $field['required'] ? '*' : ''; + $aria_required = $field['required'] ? " aria-required='true' " : ''; + $class = $id; + $class .= $field['required'] ? ' form-required' : ''; + + $item .= "\t\t\n\t\t\t\n\t\t\t\n\t\t\n"; + + $extra_rows = array(); + + if ( !empty( $field['errors'] ) ) + foreach ( array_unique( (array) $field['errors'] ) as $error ) + $extra_rows['error'][] = $error; + + if ( !empty( $field['extra_rows'] ) ) + foreach ( $field['extra_rows'] as $class => $rows ) + foreach ( (array) $rows as $html ) + $extra_rows[$class][] = $html; + + foreach ( $extra_rows as $class => $rows ) + foreach ( $rows as $html ) + $item .= "\t\t\n"; + } + + if ( !empty( $form_fields['_final'] ) ) + $item .= "\t\t\n"; + $item .= "\t\n"; + $item .= "\t
+

+

$image_edit_button

+
+

" . __('File name:') . " $filename

+

" . __('File type:') . " $post->post_mime_type

+

" . __('Upload date:') . " " . mysql2date( get_option('date_format'), $post->post_date ). '

'; + if ( !empty( $media_dims ) ) + $item .= "

" . __('Dimensions:') . " $media_dims

\n"; + + $item .= "
$send $thumbnail $delete
"; + if ( !empty( $field[ $field['input'] ] ) ) + $item .= $field[ $field['input'] ]; + elseif ( $field['input'] == 'textarea' ) { + if ( 'post_content' == $id && user_can_richedit() ) { + // sanitize_post() skips the post_content when user_can_richedit + $field['value'] = htmlspecialchars( $field['value'], ENT_QUOTES ); + } + // post_excerpt is already escaped by sanitize_post() in get_attachment_fields_to_edit() + $item .= "'; + } else { + $item .= ""; + } + if ( !empty( $field['helps'] ) ) + $item .= "

" . join( "

\n

", array_unique( (array) $field['helps'] ) ) . '

'; + $item .= "
$html
{$form_fields['_final']}
\n"; + + foreach ( $hidden_fields as $name => $value ) + $item .= "\t\n"; + + if ( $post->post_parent < 1 && isset( $_REQUEST['post_id'] ) ) { + $parent = (int) $_REQUEST['post_id']; + $parent_name = "attachments[$attachment_id][post_parent]"; + $item .= "\t\n"; + } + + return $item; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + */ +function media_upload_header() { + ?> + +
+ +
+ ' . __('The web browser on your device cannot be used to upload files. You may be able to use the native app for your device instead.') . '

'; + return; + } + + $upload_action_url = admin_url('async-upload.php'); + $post_id = isset($_REQUEST['post_id']) ? intval($_REQUEST['post_id']) : 0; + $_type = isset($type) ? $type : ''; + $_tab = isset($tab) ? $tab : ''; + + $upload_size_unit = $max_upload_size = wp_max_upload_size(); + $sizes = array( 'KB', 'MB', 'GB' ); + + for ( $u = -1; $upload_size_unit > 1024 && $u < count( $sizes ) - 1; $u++ ) { + $upload_size_unit /= 1024; + } + + if ( $u < 0 ) { + $upload_size_unit = 0; + $u = 0; + } else { + $upload_size_unit = (int) $upload_size_unit; + } +?> + +
+
get_error_message(); + +?>
+' . sprintf( __( 'Sorry, you have filled your storage quota (%s MB).' ), get_space_allowed() ) . '

'; + return; +} + +do_action('pre-upload-ui'); + +$post_params = array( + "post_id" => $post_id, + "_wpnonce" => wp_create_nonce('media-form'), + "type" => $_type, + "tab" => $_tab, + "short" => "1", +); + +$post_params = apply_filters( 'upload_post_params', $post_params ); // hook change! old name: 'swfupload_post_params' + +$plupload_init = array( + 'runtimes' => 'html5,silverlight,flash,html4', + 'browse_button' => 'plupload-browse-button', + 'container' => 'plupload-upload-ui', + 'drop_element' => 'drag-drop-area', + 'file_data_name' => 'async-upload', + 'multiple_queues' => true, + 'max_file_size' => $max_upload_size . 'b', + 'url' => $upload_action_url, + 'flash_swf_url' => includes_url('js/plupload/plupload.flash.swf'), + 'silverlight_xap_url' => includes_url('js/plupload/plupload.silverlight.xap'), + 'filters' => array( array('title' => __( 'Allowed Files' ), 'extensions' => '*') ), + 'multipart' => true, + 'urlstream_upload' => true, + 'multipart_params' => $post_params +); + +$plupload_init = apply_filters( 'plupload_init', $plupload_init ); + +?> + + + +
+ +
+
+

+

+

+
+
+ +
+ +
+ +

+ + + + +

+
+ +
+ + + 100 * 1024 * 1024 ) { ?> + + + +
+ + + + +

+ + + + +
'.esc_html($id->get_error_message()).'
'; + exit; + } +} +?> + +

+ +

+ + + +
+ + + +

+ + + +
+
+ +
+
+
+ + + +
+ + + + + + + | + | + +
+ + + +
+ + + + + + + + +
    + $reals ) + foreach ( $reals as $real ) + if ( isset($num_posts[$_type]) ) + $num_posts[$_type] += $_num_posts[$real]; + else + $num_posts[$_type] = $_num_posts[$real]; +// If available type specified by media button clicked, filter by that type +if ( empty($_GET['post_mime_type']) && !empty($num_posts[$type]) ) { + $_GET['post_mime_type'] = $type; + list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query(); +} +if ( empty($_GET['post_mime_type']) || $_GET['post_mime_type'] == 'all' ) + $class = ' class="current"'; +else + $class = ''; +$type_links[] = "
  • 'all', 'paged'=>false, 'm'=>false))) . "'$class>".__('All Types').""; +foreach ( $post_mime_types as $mime_type => $label ) { + $class = ''; + + if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) ) + continue; + + if ( isset($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) ) + $class = ' class="current"'; + + $type_links[] = "
  • $mime_type, 'paged'=>false))) . "'$class>" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), "" . number_format_i18n( $num_posts[$mime_type] ) . '') . ''; +} +echo implode(' |
  • ', apply_filters( 'media_upload_mime_type_links', $type_links ) ) . ''; +unset($type_links); +?> +
+ +
+ + add_query_arg( 'paged', '%#%' ), + 'format' => '', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => ceil($wp_query->found_posts / 10), + 'current' => $_GET['paged'] +)); + +if ( $page_links ) + echo "
$page_links
"; +?> + +
+posts WHERE post_type = 'attachment' ORDER BY post_date DESC"; + +$arc_result = $wpdb->get_results( $arc_query ); + +$month_count = count($arc_result); + +if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?> + + + + + +
+ +
+
+
+ +
+ + + + + + +
+ + +
+

+ + +

+
+ + + + + + +'; + } else { + $caption = ''; + } + + $default_align = get_option('image_default_align'); + if ( empty($default_align) ) + $default_align = 'none'; + + if ( 'image' == $default_view ) { + $view = 'image-only'; + $table_class = ''; + } else { + $view = $table_class = 'not-image'; + } + + return ' +

   

+ + + + + + + + + + + + + + + + + + ' . $caption . ' + + + + + + + + + + + + + + + + + +
+ + * +
+ + * +

' . __('Link text, e.g. “Ransom Demands (PDF)”') . '

+ + +

' . __('Alt text for the image, e.g. “The Mona Lisa”') . '

+ + + + + + + + +
+ +
+ + + +

' . __('Enter a link URL or click above for presets.') . '

+ +
+ ' . get_submit_button( __( 'Insert into Post' ), 'button', 'insertonlybutton', false ) . ' +
+'; + +} + +function _insert_into_post_button($type) { + if ( !post_type_supports(get_post_type($_GET['post_id']), 'editor') ) + return ''; + + if ( 'image' == $type ) + return ' + + + + + + + '; + + return ' + + + + ' . get_submit_button( __( 'Insert into Post' ), 'button', 'insertonlybutton', false ) . ' + + + '; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.6.0 + */ +function media_upload_flash_bypass() { + ?> +

+ browser uploader instead.'); ?> +

+ +

+ Switch to the multi-file uploader.'); ?> +

+ + + '; + $end = ''; + } +?> +

+ $sub) { + foreach ($sub as $index => $data) { + if ( ! current_user_can($data[1]) ) { + unset(${$sub_loop}[$parent][$index]); + $_wp_submenu_nopriv[$parent][$data[2]] = true; + } + } + unset($index, $data); + + if ( empty(${$sub_loop}[$parent]) ) + unset(${$sub_loop}[$parent]); + } + unset($sub, $parent); +} +unset($sub_loop); + +// Loop over the top-level menu. +// Menus for which the original parent is not accessible due to lack of privs will have the next +// submenu in line be assigned as the new menu parent. +foreach ( $menu as $id => $data ) { + if ( empty($submenu[$data[2]]) ) + continue; + $subs = $submenu[$data[2]]; + $first_sub = array_shift($subs); + $old_parent = $data[2]; + $new_parent = $first_sub[2]; + // If the first submenu is not the same as the assigned parent, + // make the first submenu the new parent. + if ( $new_parent != $old_parent ) { + $_wp_real_parent_file[$old_parent] = $new_parent; + $menu[$id][2] = $new_parent; + + foreach ($submenu[$old_parent] as $index => $data) { + $submenu[$new_parent][$index] = $submenu[$old_parent][$index]; + unset($submenu[$old_parent][$index]); + } + unset($submenu[$old_parent], $index); + + if ( isset($_wp_submenu_nopriv[$old_parent]) ) + $_wp_submenu_nopriv[$new_parent] = $_wp_submenu_nopriv[$old_parent]; + } +} +unset($id, $data, $subs, $first_sub, $old_parent, $new_parent); + +if ( is_network_admin() ) + do_action('network_admin_menu', ''); +elseif ( is_user_admin() ) + do_action('user_admin_menu', ''); +else + do_action('admin_menu', ''); + +// Remove menus that have no accessible submenus and require privs that the user does not have. +// Run re-parent loop again. +foreach ( $menu as $id => $data ) { + if ( ! current_user_can($data[1]) ) + $_wp_menu_nopriv[$data[2]] = true; + + // If there is only one submenu and it is has same destination as the parent, + // remove the submenu. + if ( ! empty( $submenu[$data[2]] ) && 1 == count ( $submenu[$data[2]] ) ) { + $subs = $submenu[$data[2]]; + $first_sub = array_shift($subs); + if ( $data[2] == $first_sub[2] ) + unset( $submenu[$data[2]] ); + } + + // If submenu is empty... + if ( empty($submenu[$data[2]]) ) { + // And user doesn't have privs, remove menu. + if ( isset( $_wp_menu_nopriv[$data[2]] ) ) { + unset($menu[$id]); + } + } +} +unset($id, $data, $subs, $first_sub); + +// Remove any duplicated separators +$separator_found = false; +foreach ( $menu as $id => $data ) { + if ( 0 == strcmp('wp-menu-separator', $data[4] ) ) { + if (false == $separator_found) { + $separator_found = true; + } else { + unset($menu[$id]); + $separator_found = false; + } + } else { + $separator_found = false; + } +} +unset($id, $data); + +function add_cssclass($add, $class) { + $class = empty($class) ? $add : $class .= ' ' . $add; + return $class; +} + +function add_menu_classes($menu) { + + $first = $lastorder = false; + $i = 0; + $mc = count($menu); + foreach ( $menu as $order => $top ) { + $i++; + + if ( 0 == $order ) { // dashboard is always shown/single + $menu[0][4] = add_cssclass('menu-top-first', $top[4]); + $lastorder = 0; + continue; + } + + if ( 0 === strpos($top[2], 'separator') ) { // if separator + $first = true; + $c = $menu[$lastorder][4]; + $menu[$lastorder][4] = add_cssclass('menu-top-last', $c); + continue; + } + + if ( $first ) { + $c = $menu[$order][4]; + $menu[$order][4] = add_cssclass('menu-top-first', $c); + $first = false; + } + + if ( $mc == $i ) { // last item + $c = $menu[$order][4]; + $menu[$order][4] = add_cssclass('menu-top-last', $c); + } + + $lastorder = $order; + } + + return apply_filters( 'add_menu_classes', $menu ); +} + +uksort($menu, "strnatcasecmp"); // make it all pretty + +if ( apply_filters('custom_menu_order', false) ) { + $menu_order = array(); + foreach ( $menu as $menu_item ) { + $menu_order[] = $menu_item[2]; + } + unset($menu_item); + $default_menu_order = $menu_order; + $menu_order = apply_filters('menu_order', $menu_order); + $menu_order = array_flip($menu_order); + $default_menu_order = array_flip($default_menu_order); + + function sort_menu($a, $b) { + global $menu_order, $default_menu_order; + $a = $a[2]; + $b = $b[2]; + if ( isset($menu_order[$a]) && !isset($menu_order[$b]) ) { + return -1; + } elseif ( !isset($menu_order[$a]) && isset($menu_order[$b]) ) { + return 1; + } elseif ( isset($menu_order[$a]) && isset($menu_order[$b]) ) { + if ( $menu_order[$a] == $menu_order[$b] ) + return 0; + return ($menu_order[$a] < $menu_order[$b]) ? -1 : 1; + } else { + return ($default_menu_order[$a] <= $default_menu_order[$b]) ? -1 : 1; + } + } + + usort($menu, 'sort_menu'); + unset($menu_order, $default_menu_order); +} + +// Remove the last menu item if it is a separator. +$last_menu_key = array_keys( $menu ); +$last_menu_key = array_pop( $last_menu_key ); +if ( !empty( $menu ) && 'wp-menu-separator' == $menu[ $last_menu_key ][ 4 ] ) + unset( $menu[ $last_menu_key ] ); +unset( $last_menu_key ); + +if ( !user_can_access_admin_page() ) { + do_action('admin_page_access_denied'); + wp_die( __('You do not have sufficient permissions to access this page.') ); +} + +$menu = add_menu_classes($menu); diff --git a/wp-admin/includes/meta-boxes.php b/wp-admin/includes/meta-boxes.php new file mode 100644 index 0000000..18dc7c2 --- /dev/null +++ b/wp-admin/includes/meta-boxes.php @@ -0,0 +1,919 @@ +post_type; + $post_type_object = get_post_type_object($post_type); + $can_publish = current_user_can($post_type_object->cap->publish_posts); +?> +
+ +
+ + +
+ +
+ +
+
+post_status && 'future' != $post->post_status && 'pending' != $post->post_status ) { ?> +post_status ) { ?>style="display:none" type="submit" name="save" id="save-post" value="" tabindex="4" class="button button-highlighted" /> +post_status && $can_publish ) { ?> + + + +
+public ) : ?> +
+post_status ) { + $preview_link = esc_url( get_permalink( $post->ID ) ); + $preview_button = __( 'Preview Changes' ); +} else { + $preview_link = get_permalink( $post->ID ); + if ( is_ssl() ) + $preview_link = str_replace( 'http://', 'https://', $preview_link ); + $preview_link = esc_url( apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ) ) ); + $preview_button = __( 'Preview' ); +} +?> + + +
+ +
+
+ +
+ +
+ +post_status ) { + case 'private': + _e('Privately Published'); + break; + case 'publish': + _e('Published'); + break; + case 'future': + _e('Scheduled'); + break; + case 'pending': + _e('Pending Review'); + break; + case 'draft': + case 'auto-draft': + _e('Draft'); + break; +} +?> + +post_status || 'private' == $post->post_status || $can_publish ) { ?> +post_status ) { ?>style="display:none;" class="edit-post-status hide-if-no-js" tabindex='4'> + +
+ + + + +
+ + +
+ +
+ post_status ) { + $post->post_password = ''; + $visibility = 'private'; + $visibility_trans = __('Private'); +} elseif ( !empty( $post->post_password ) ) { + $visibility = 'password'; + $visibility_trans = __('Password protected'); +} elseif ( $post_type == 'post' && is_sticky( $post->ID ) ) { + $visibility = 'public'; + $visibility_trans = __('Public, Sticky'); +} else { + $visibility = 'public'; + $visibility_trans = __('Public'); +} + +echo esc_html( $visibility_trans ); ?> + + + +
+ + +ID)); ?> /> + + + />
+ +ID ) ); ?> tabindex="4" />
+ + />
+
+ />
+ +

+ + +

+
+ + +
+ +ID ) { + if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date + $stamp = __('Scheduled for: %1$s'); + } else if ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published + $stamp = __('Published on: %1$s'); + } else if ( '0000-00-00 00:00:00' == $post->post_date_gmt ) { // draft, 1 or more saves, no date specified + $stamp = __('Publish immediately'); + } else if ( time() < strtotime( $post->post_date_gmt . ' +0000' ) ) { // draft, 1 or more saves, future date specified + $stamp = __('Schedule for: %1$s'); + } else { // draft, 1 or more saves, date specified + $stamp = __('Publish on: %1$s'); + } + $date = date_i18n( $datef, strtotime( $post->post_date ) ); +} else { // draft (no saves, and thus no date specified) + $stamp = __('Publish immediately'); + $date = date_i18n( $datef, strtotime( current_time('mysql') ) ); +} + +if ( $can_publish ) : // Contributors don't get to choose the date of publish ?> +
+ + + +
+
+ + + +
+
+
+ +
+ +
+ID ) ) { + if ( !EMPTY_TRASH_DAYS ) + $delete_text = __('Delete Permanently'); + else + $delete_text = __('Move to Trash'); + ?> + +
+ +
+ +post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) { + if ( $can_publish ) : + if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?> + + '5', 'accesskey' => 'p' ) ); ?> + + + '5', 'accesskey' => 'p' ) ); ?> + + + '5', 'accesskey' => 'p' ) ); ?> + + + + +
+
+
+
+ +post_type, 'post-formats' ) ) : + $post_formats = get_theme_support( 'post-formats' ); + + if ( is_array( $post_formats[0] ) ) : + $post_format = get_post_format( $post->ID ); + if ( !$post_format ) + $post_format = '0'; + // Add in the current one if it isn't there yet, in case the current theme doesn't support it + if ( $post_format && !in_array( $post_format, $post_formats[0] ) ) + $post_formats[0][] = $post_format; + ?> +
+ /> + +
/> +
+
+ 'post_tag'); + if ( !isset($box['args']) || !is_array($box['args']) ) + $args = array(); + else + $args = $box['args']; + extract( wp_parse_args($args, $defaults), EXTR_SKIP ); + $tax_name = esc_attr($taxonomy); + $taxonomy = get_taxonomy($taxonomy); + $disabled = !current_user_can($taxonomy->cap->assign_terms) ? 'disabled="disabled"' : ''; + $comma = _x( ',', 'tag delimiter' ); +?> +
+
+
+

labels->add_or_remove_items; ?>

+
+ cap->assign_terms) ) : ?> +
+ +
labels->add_new_item; ?>
+

+

+
+

labels->separate_items_with_commas ); ?>

+ +
+
+
+cap->assign_terms) ) : ?> +

labels->choose_from_most_used; ?>

+ + 'category'); + if ( !isset($box['args']) || !is_array($box['args']) ) + $args = array(); + else + $args = $box['args']; + extract( wp_parse_args($args, $defaults), EXTR_SKIP ); + $tax = get_taxonomy($taxonomy); + + ?> +
+ + + + +
+ "; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks. + ?> +
    + ID, array( 'taxonomy' => $taxonomy, 'popular_cats' => $popular_ids ) ) ?> +
+
+ cap->edit_terms) ) : ?> +
+

+ + labels->add_new_item ); + ?> + +

+

+ + + + $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— ' . $tax->labels->parent_item . ' —', 'tab_index' => 3 ) ); ?> + + + +

+
+ +
+ + +

Learn more about manual excerpts.'); ?>

+to_ping) ) .'" />'; + if ('' != $post->pinged) { + $pings = '

'. __('Already pinged:') . '

    '; + $already_pinged = explode("\n", trim($post->pinged)); + foreach ($already_pinged as $pinged_url) { + $pings .= "\n\t
  • " . esc_html($pinged_url) . "
  • "; + } + $pings .= '
'; + } + +?> +


()

+

pingbacks, no other action necessary.'); ?>

+ +
+
+ID); +foreach ( $metadata as $key => $value ) { + if ( is_protected_meta( $metadata[ $key ][ 'meta_key' ], 'post' ) || ! current_user_can( 'edit_post_meta', $post->ID, $metadata[ $key ][ 'meta_key' ] ) ) + unset( $metadata[ $key ] ); +} +list_meta( $metadata ); +meta_form(); ?> +
+

use in your theme.'); ?>

+ + +

+
+ + +

+ +

+ get_var($wpdb->prepare("SELECT count(1) FROM $wpdb->comments WHERE comment_post_ID = '%d' AND ( comment_approved = '0' OR comment_approved = '1')", $post_ID)); + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + $wp_list_table->display( true ); + + if ( 1 > $total ) { + echo '

' . __('No comments yet.') . '

'; + } else { + $hidden = get_hidden_meta_boxes( get_current_screen() ); + if ( ! in_array('commentsdiv', $hidden) ) { + ?> + + +

+ + + + + 'authors', + 'name' => 'post_author_override', + 'selected' => empty($post->ID) ? $user_ID : $post->post_author, + 'include_selected' => true + ) ); +} + +/** + * Display list of revisions. + * + * @since 2.6.0 + * + * @param object $post + */ +function post_revisions_meta_box($post) { + wp_list_post_revisions(); +} + +// -- Page related Meta Boxes + +/** + * Display page attributes form fields. + * + * @since 2.7.0 + * + * @param object $post + */ +function page_attributes_meta_box($post) { + $post_type_object = get_post_type_object($post->post_type); + if ( $post_type_object->hierarchical ) { + $dropdown_args = array( + 'post_type' => $post->post_type, + 'exclude_tree' => $post->ID, + 'selected' => $post->post_parent, + 'name' => 'parent_id', + 'show_option_none' => __('(no parent)'), + 'sort_column' => 'menu_order, post_title', + 'echo' => 0, + ); + + $dropdown_args = apply_filters( 'page_attributes_dropdown_pages_args', $dropdown_args, $post ); + $pages = wp_dropdown_pages( $dropdown_args ); + if ( ! empty($pages) ) { +?> +

+ + +post_type && 0 != count( get_page_templates() ) ) { + $template = !empty($post->page_template) ? $post->page_template : false; + ?> +

+ + +

+

+

post_type ) _e( 'Need help? Use the Help tab in the upper right of your screen.' ); ?>

+ + + +
+
    +
  • +
  • +
+ +
+
    + link_id) ) + wp_link_category_checklist($link->link_id); + else + wp_link_category_checklist(); + ?> +
+
+ + + +
+

+ +
+
+ +
+

+

+

+
+

+link_rel ) ? $link->link_rel : ''; // In PHP 5.3: $link_rel = $link->link_rel ?: ''; + $rels = preg_split('/\s+/', $link_rel); + + if ('' != $value && in_array($value, $rels) ) { + echo ' checked="checked"'; + } + + if ('' == $value) { + if ('family' == $class && strpos($link_rel, 'child') === false && strpos($link_rel, 'parent') === false && strpos($link_rel, 'sibling') === false && strpos($link_rel, 'spouse') === false && strpos($link_rel, 'kin') === false) echo ' checked="checked"'; + if ('friendship' == $class && strpos($link_rel, 'friend') === false && strpos($link_rel, 'acquaintance') === false && strpos($link_rel, 'contact') === false) echo ' checked="checked"'; + if ('geographical' == $class && strpos($link_rel, 'co-resident') === false && strpos($link_rel, 'neighbor') === false) echo ' checked="checked"'; + if ('identity' == $class && in_array('me', $rels) ) echo ' checked="checked"'; + } +} + +/** + * Display xfn form fields. + * + * @since 2.6.0 + * + * @param object $link + */ +function link_xfn_meta_box($link) { +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

XFN.'); ?>

+ + + + + + + + + + + + + + + + + + + +ID, '_thumbnail_id', true ); + echo _wp_post_thumbnail_html( $thumbnail_id ); +} diff --git a/wp-admin/includes/misc.php b/wp-admin/includes/misc.php new file mode 100644 index 0000000..14f94fb --- /dev/null +++ b/wp-admin/includes/misc.php @@ -0,0 +1,592 @@ + $markerline ) { + if (strpos($markerline, '# BEGIN ' . $marker) !== false) + $state = false; + if ( $state ) { + if ( $n + 1 < count( $markerdata ) ) + fwrite( $f, "{$markerline}\n" ); + else + fwrite( $f, "{$markerline}" ); + } + if (strpos($markerline, '# END ' . $marker) !== false) { + fwrite( $f, "# BEGIN {$marker}\n" ); + if ( is_array( $insertion )) + foreach ( $insertion as $insertline ) + fwrite( $f, "{$insertline}\n" ); + fwrite( $f, "# END {$marker}\n" ); + $state = true; + $foundit = true; + } + } + } + if (!$foundit) { + fwrite( $f, "\n# BEGIN {$marker}\n" ); + foreach ( $insertion as $insertline ) + fwrite( $f, "{$insertline}\n" ); + fwrite( $f, "# END {$marker}\n" ); + } + fclose( $f ); + return true; + } else { + return false; + } +} + +/** + * Updates the htaccess file with the current rules if it is writable. + * + * Always writes to the file if it exists and is writable to ensure that we + * blank out old rules. + * + * @since 1.5.0 + */ +function save_mod_rewrite_rules() { + if ( is_multisite() ) + return; + + global $wp_rewrite; + + $home_path = get_home_path(); + $htaccess_file = $home_path.'.htaccess'; + + // If the file doesn't already exist check for write access to the directory and whether we have some rules. + // else check for write access to the file. + if ((!file_exists($htaccess_file) && is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks()) || is_writable($htaccess_file)) { + if ( got_mod_rewrite() ) { + $rules = explode( "\n", $wp_rewrite->mod_rewrite_rules() ); + return insert_with_markers( $htaccess_file, 'WordPress', $rules ); + } + } + + return false; +} + +/** + * Updates the IIS web.config file with the current rules if it is writable. + * If the permalinks do not require rewrite rules then the rules are deleted from the web.config file. + * + * @since 2.8.0 + * + * @return bool True if web.config was updated successfully + */ +function iis7_save_url_rewrite_rules(){ + if ( is_multisite() ) + return; + + global $wp_rewrite; + + $home_path = get_home_path(); + $web_config_file = $home_path . 'web.config'; + + // Using win_is_writable() instead of is_writable() because of a bug in Windows PHP + if ( iis7_supports_permalinks() && ( ( ! file_exists($web_config_file) && win_is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks() ) || win_is_writable($web_config_file) ) ) { + $rule = $wp_rewrite->iis7_url_rewrite_rules(false, '', ''); + if ( ! empty($rule) ) { + return iis7_add_rewrite_rule($web_config_file, $rule); + } else { + return iis7_delete_rewrite_rule($web_config_file); + } + } + return false; +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.5.0 + * + * @param unknown_type $file + */ +function update_recently_edited( $file ) { + $oldfiles = (array ) get_option( 'recently_edited' ); + if ( $oldfiles ) { + $oldfiles = array_reverse( $oldfiles ); + $oldfiles[] = $file; + $oldfiles = array_reverse( $oldfiles ); + $oldfiles = array_unique( $oldfiles ); + if ( 5 < count( $oldfiles )) + array_pop( $oldfiles ); + } else { + $oldfiles[] = $file; + } + update_option( 'recently_edited', $oldfiles ); +} + +/** + * If siteurl or home changed, flush rewrite rules. + * + * @since 2.1.0 + * + * @param string $old_value + * @param string $value + */ +function update_home_siteurl( $old_value, $value ) { + if ( defined( "WP_INSTALLING" ) ) + return; + + // If home changed, write rewrite rules to new location. + flush_rewrite_rules(); +} + +add_action( 'update_option_home', 'update_home_siteurl', 10, 2 ); +add_action( 'update_option_siteurl', 'update_home_siteurl', 10, 2 ); + +/** + * Shorten an URL, to be used as link text + * + * @since 1.2.1 + * + * @param string $url + * @return string + */ +function url_shorten( $url ) { + $short_url = str_replace( 'http://', '', stripslashes( $url )); + $short_url = str_replace( 'www.', '', $short_url ); + $short_url = untrailingslashit( $short_url ); + if ( strlen( $short_url ) > 35 ) + $short_url = substr( $short_url, 0, 32 ) . '...'; + return $short_url; +} + +/** + * Resets global variables based on $_GET and $_POST + * + * This function resets global variables based on the names passed + * in the $vars array to the value of $_POST[$var] or $_GET[$var] or '' + * if neither is defined. + * + * @since 2.0.0 + * + * @param array $vars An array of globals to reset. + */ +function wp_reset_vars( $vars ) { + for ( $i=0; $iget_error_data() ) + $message = $message->get_error_message() . ': ' . $message->get_error_data(); + else + $message = $message->get_error_message(); + } + echo "

$message

\n"; + wp_ob_end_flush_all(); + flush(); +} + +function wp_doc_link_parse( $content ) { + if ( !is_string( $content ) || empty( $content ) ) + return array(); + + if ( !function_exists('token_get_all') ) + return array(); + + $tokens = token_get_all( $content ); + $functions = array(); + $ignore_functions = array(); + for ( $t = 0, $count = count( $tokens ); $t < $count; $t++ ) { + if ( !is_array( $tokens[$t] ) ) continue; + if ( T_STRING == $tokens[$t][0] && ( '(' == $tokens[ $t + 1 ] || '(' == $tokens[ $t + 2 ] ) ) { + // If it's a function or class defined locally, there's not going to be any docs available + if ( ( isset( $tokens[ $t - 2 ][1] ) && in_array( $tokens[ $t - 2 ][1], array( 'function', 'class' ) ) ) || ( isset( $tokens[ $t - 2 ][0] ) && T_OBJECT_OPERATOR == $tokens[ $t - 1 ][0] ) ) { + $ignore_functions[] = $tokens[$t][1]; + } + // Add this to our stack of unique references + $functions[] = $tokens[$t][1]; + } + } + + $functions = array_unique( $functions ); + sort( $functions ); + $ignore_functions = apply_filters( 'documentation_ignore_functions', $ignore_functions ); + $ignore_functions = array_unique( $ignore_functions ); + + $out = array(); + foreach ( $functions as $function ) { + if ( in_array( $function, $ignore_functions ) ) + continue; + $out[] = $function; + } + + return $out; +} + +/** + * Saves option for number of rows when listing posts, pages, comments, etc. + * + * @since 2.8 +**/ +function set_screen_options() { + + if ( isset($_POST['wp_screen_options']) && is_array($_POST['wp_screen_options']) ) { + check_admin_referer( 'screen-options-nonce', 'screenoptionnonce' ); + + if ( !$user = wp_get_current_user() ) + return; + $option = $_POST['wp_screen_options']['option']; + $value = $_POST['wp_screen_options']['value']; + + if ( !preg_match( '/^[a-z_-]+$/', $option ) ) + return; + + $option = str_replace('-', '_', $option); + + $map_option = $option; + $type = str_replace('edit_', '', $map_option); + $type = str_replace('_per_page', '', $type); + if ( in_array($type, get_post_types()) ) + $map_option = 'edit_per_page'; + if ( in_array( $type, get_taxonomies()) ) + $map_option = 'edit_tags_per_page'; + + switch ( $map_option ) { + case 'edit_per_page': + case 'users_per_page': + case 'edit_comments_per_page': + case 'upload_per_page': + case 'edit_tags_per_page': + case 'plugins_per_page': + // Network admin + case 'sites_network_per_page': + case 'users_network_per_page': + case 'site_users_network_per_page': + case 'plugins_network_per_page': + case 'themes_network_per_page': + case 'site_themes_network_per_page': + $value = (int) $value; + if ( $value < 1 || $value > 999 ) + return; + break; + default: + $value = apply_filters('set-screen-option', false, $option, $value); + if ( false === $value ) + return; + break; + } + + update_user_meta($user->ID, $option, $value); + wp_safe_redirect( remove_query_arg( array('pagenum', 'apage', 'paged'), wp_get_referer() ) ); + exit; + } +} + +/** + * Check if rewrite rule for WordPress already exists in the IIS 7 configuration file + * + * @since 2.8.0 + * + * @return bool + * @param string $filename The file path to the configuration file + */ +function iis7_rewrite_rule_exists($filename) { + if ( ! file_exists($filename) ) + return false; + if ( ! class_exists('DOMDocument') ) + return false; + + $doc = new DOMDocument(); + if ( $doc->load($filename) === false ) + return false; + $xpath = new DOMXPath($doc); + $rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); + if ( $rules->length == 0 ) + return false; + else + return true; +} + +/** + * Delete WordPress rewrite rule from web.config file if it exists there + * + * @since 2.8.0 + * + * @param string $filename Name of the configuration file + * @return bool + */ +function iis7_delete_rewrite_rule($filename) { + // If configuration file does not exist then rules also do not exist so there is nothing to delete + if ( ! file_exists($filename) ) + return true; + + if ( ! class_exists('DOMDocument') ) + return false; + + $doc = new DOMDocument(); + $doc->preserveWhiteSpace = false; + + if ( $doc -> load($filename) === false ) + return false; + $xpath = new DOMXPath($doc); + $rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); + if ( $rules->length > 0 ) { + $child = $rules->item(0); + $parent = $child->parentNode; + $parent->removeChild($child); + $doc->formatOutput = true; + saveDomDocument($doc, $filename); + } + return true; +} + +/** + * Add WordPress rewrite rule to the IIS 7 configuration file. + * + * @since 2.8.0 + * + * @param string $filename The file path to the configuration file + * @param string $rewrite_rule The XML fragment with URL Rewrite rule + * @return bool + */ +function iis7_add_rewrite_rule($filename, $rewrite_rule) { + if ( ! class_exists('DOMDocument') ) + return false; + + // If configuration file does not exist then we create one. + if ( ! file_exists($filename) ) { + $fp = fopen( $filename, 'w'); + fwrite($fp, ''); + fclose($fp); + } + + $doc = new DOMDocument(); + $doc->preserveWhiteSpace = false; + + if ( $doc->load($filename) === false ) + return false; + + $xpath = new DOMXPath($doc); + + // First check if the rule already exists as in that case there is no need to re-add it + $wordpress_rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); + if ( $wordpress_rules->length > 0 ) + return true; + + // Check the XPath to the rewrite rule and create XML nodes if they do not exist + $xmlnodes = $xpath->query('/configuration/system.webServer/rewrite/rules'); + if ( $xmlnodes->length > 0 ) { + $rules_node = $xmlnodes->item(0); + } else { + $rules_node = $doc->createElement('rules'); + + $xmlnodes = $xpath->query('/configuration/system.webServer/rewrite'); + if ( $xmlnodes->length > 0 ) { + $rewrite_node = $xmlnodes->item(0); + $rewrite_node->appendChild($rules_node); + } else { + $rewrite_node = $doc->createElement('rewrite'); + $rewrite_node->appendChild($rules_node); + + $xmlnodes = $xpath->query('/configuration/system.webServer'); + if ( $xmlnodes->length > 0 ) { + $system_webServer_node = $xmlnodes->item(0); + $system_webServer_node->appendChild($rewrite_node); + } else { + $system_webServer_node = $doc->createElement('system.webServer'); + $system_webServer_node->appendChild($rewrite_node); + + $xmlnodes = $xpath->query('/configuration'); + if ( $xmlnodes->length > 0 ) { + $config_node = $xmlnodes->item(0); + $config_node->appendChild($system_webServer_node); + } else { + $config_node = $doc->createElement('configuration'); + $doc->appendChild($config_node); + $config_node->appendChild($system_webServer_node); + } + } + } + } + + $rule_fragment = $doc->createDocumentFragment(); + $rule_fragment->appendXML($rewrite_rule); + $rules_node->appendChild($rule_fragment); + + $doc->encoding = "UTF-8"; + $doc->formatOutput = true; + saveDomDocument($doc, $filename); + + return true; +} + +/** + * Saves the XML document into a file + * + * @since 2.8.0 + * + * @param DOMDocument $doc + * @param string $filename + */ +function saveDomDocument($doc, $filename) { + $config = $doc->saveXML(); + $config = preg_replace("/([^\r])\n/", "$1\r\n", $config); + $fp = fopen($filename, 'w'); + fwrite($fp, $config); + fclose($fp); +} + +/** + * Workaround for Windows bug in is_writable() function + * + * @since 2.8.0 + * + * @param string $path + * @return bool + */ +function win_is_writable( $path ) { + /* will work in despite of Windows ACLs bug + * NOTE: use a trailing slash for folders!!! + * see http://bugs.php.net/bug.php?id=27609 + * see http://bugs.php.net/bug.php?id=30931 + */ + + if ( $path[strlen( $path ) - 1] == '/' ) // recursively return a temporary file path + return win_is_writable( $path . uniqid( mt_rand() ) . '.tmp'); + else if ( is_dir( $path ) ) + return win_is_writable( $path . '/' . uniqid( mt_rand() ) . '.tmp' ); + // check tmp file for read/write capabilities + $should_delete_tmp_file = !file_exists( $path ); + $f = @fopen( $path, 'a' ); + if ( $f === false ) + return false; + fclose( $f ); + if ( $should_delete_tmp_file ) + unlink( $path ); + return true; +} + +/** + * Display the default admin color scheme picker (Used in user-edit.php) + * + * @since 3.0.0 + */ +function admin_color_scheme_picker() { + global $_wp_admin_css_colors, $user_id; ?> +
+ $color_info ): ?> +
/> + + + colors as $html_color ): ?> + + + +
 
+ + +
+ +
+ + + ( 1024 * get_site_option( 'fileupload_maxk', 1500 ) ) ) + $file['error'] = sprintf(__('This file is too big. Files must be less than %1$s KB in size.'), get_site_option( 'fileupload_maxk', 1500 ) ); + if ( upload_is_user_over_quota( false ) ) { + $file['error'] = __( 'You have used your space quota. Please delete files before uploading.' ); + } + if ( $file['error'] != '0' && !isset($_POST['html-upload']) ) + wp_die( $file['error'] . ' ' . __( 'Back' ) . '' ); + + return $file; +} +add_filter( 'wp_handle_upload_prefilter', 'check_upload_size' ); + +/** + * Delete a blog + * + * @since 3.0.0 + * + * @param int $blog_id Blog ID + * @param bool $drop True if blog's table should be dropped. Default is false. + * @return void + */ +function wpmu_delete_blog( $blog_id, $drop = false ) { + global $wpdb, $current_site; + + $switch = false; + if ( $blog_id != $wpdb->blogid ) { + $switch = true; + switch_to_blog( $blog_id ); + $blog = get_blog_details( $blog_id ); + } else { + $blog = $GLOBALS['current_blog']; + } + + do_action( 'delete_blog', $blog_id, $drop ); + + $users = get_users( array( 'blog_id' => $blog_id, 'fields' => 'ids' ) ); + + // Remove users from this blog. + if ( ! empty( $users ) ) { + foreach ( $users as $user_id ) { + remove_user_from_blog( $user_id, $blog_id ); + } + } + + update_blog_status( $blog_id, 'deleted', 1 ); + + // Don't destroy the initial, main, or root blog. + if ( $drop && ( 1 == $blog_id || is_main_site( $blog_id ) || ( $blog->path == $current_site->path && $blog->domain == $current_site->domain ) ) ) + $drop = false; + + if ( $drop ) { + + $drop_tables = apply_filters( 'wpmu_drop_tables', $wpdb->tables( 'blog' ) ); + + foreach ( (array) $drop_tables as $table ) { + $wpdb->query( "DROP TABLE IF EXISTS `$table`" ); + } + + $wpdb->delete( $wpdb->blogs, array( 'blog_id' => $blog_id ) ); + + $dir = apply_filters( 'wpmu_delete_blog_upload_dir', WP_CONTENT_DIR . "/blogs.dir/{$blog_id}/files/", $blog_id ); + $dir = rtrim( $dir, DIRECTORY_SEPARATOR ); + $top_dir = $dir; + $stack = array($dir); + $index = 0; + + while ( $index < count( $stack ) ) { + # Get indexed directory from stack + $dir = $stack[$index]; + + $dh = @opendir( $dir ); + if ( $dh ) { + while ( ( $file = @readdir( $dh ) ) !== false ) { + if ( $file == '.' || $file == '..' ) + continue; + + if ( @is_dir( $dir . DIRECTORY_SEPARATOR . $file ) ) + $stack[] = $dir . DIRECTORY_SEPARATOR . $file; + else if ( @is_file( $dir . DIRECTORY_SEPARATOR . $file ) ) + @unlink( $dir . DIRECTORY_SEPARATOR . $file ); + } + } + $index++; + } + + $stack = array_reverse( $stack ); // Last added dirs are deepest + foreach( (array) $stack as $dir ) { + if ( $dir != $top_dir) + @rmdir( $dir ); + } + } + + if ( $switch ) + restore_current_blog(); +} + +// @todo Merge with wp_delete_user() ? +function wpmu_delete_user( $id ) { + global $wpdb; + + $id = (int) $id; + $user = new WP_User( $id ); + + do_action( 'wpmu_delete_user', $id ); + + $blogs = get_blogs_of_user( $id ); + + if ( ! empty( $blogs ) ) { + foreach ( $blogs as $blog ) { + switch_to_blog( $blog->userblog_id ); + remove_user_from_blog( $id, $blog->userblog_id ); + + $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d", $id ) ); + foreach ( (array) $post_ids as $post_id ) { + wp_delete_post( $post_id ); + } + + // Clean links + $link_ids = $wpdb->get_col( $wpdb->prepare( "SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id ) ); + + if ( $link_ids ) { + foreach ( $link_ids as $link_id ) + wp_delete_link( $link_id ); + } + + restore_current_blog(); + } + } + + $meta = $wpdb->get_col( $wpdb->prepare( "SELECT umeta_id FROM $wpdb->usermeta WHERE user_id = %d", $id ) ); + foreach ( $meta as $mid ) + delete_metadata_by_mid( 'user', $mid ); + + $wpdb->delete( $wpdb->users, array( 'ID' => $id ) ); + + clean_user_cache( $user ); + + // allow for commit transaction + do_action( 'deleted_user', $id ); + + return true; +} + +function update_option_new_admin_email( $old_value, $value ) { + $email = get_option( 'admin_email' ); + if ( $value == get_option( 'admin_email' ) || !is_email( $value ) ) + return; + + $hash = md5( $value. time() .mt_rand() ); + $new_admin_email = array( + 'hash' => $hash, + 'newemail' => $value + ); + update_option( 'adminhash', $new_admin_email ); + + $content = apply_filters( 'new_admin_email_content', __( "Dear user, + +You recently requested to have the administration email address on +your site changed. +If this is correct, please click on the following link to change it: +###ADMIN_URL### + +You can safely ignore and delete this email if you do not want to +take this action. + +This email has been sent to ###EMAIL### + +Regards, +All at ###SITENAME### +###SITEURL### "), $new_admin_email ); + + $content = str_replace( '###ADMIN_URL###', esc_url( admin_url( 'options.php?adminhash='.$hash ) ), $content ); + $content = str_replace( '###EMAIL###', $value, $content ); + $content = str_replace( '###SITENAME###', get_site_option( 'site_name' ), $content ); + $content = str_replace( '###SITEURL###', network_home_url(), $content ); + + wp_mail( $value, sprintf( __( '[%s] New Admin Email Address' ), get_option( 'blogname' ) ), $content ); +} +add_action( 'update_option_new_admin_email', 'update_option_new_admin_email', 10, 2 ); +add_action( 'add_option_new_admin_email', 'update_option_new_admin_email', 10, 2 ); + +function send_confirmation_on_profile_email() { + global $errors, $wpdb; + $current_user = wp_get_current_user(); + if ( ! is_object($errors) ) + $errors = new WP_Error(); + + if ( $current_user->ID != $_POST['user_id'] ) + return false; + + if ( $current_user->user_email != $_POST['email'] ) { + if ( !is_email( $_POST['email'] ) ) { + $errors->add( 'user_email', __( "ERROR: The e-mail address isn't correct." ), array( 'form-field' => 'email' ) ); + return; + } + + if ( $wpdb->get_var( $wpdb->prepare( "SELECT user_email FROM {$wpdb->users} WHERE user_email=%s", $_POST['email'] ) ) ) { + $errors->add( 'user_email', __( "ERROR: The e-mail address is already used." ), array( 'form-field' => 'email' ) ); + delete_option( $current_user->ID . '_new_email' ); + return; + } + + $hash = md5( $_POST['email'] . time() . mt_rand() ); + $new_user_email = array( + 'hash' => $hash, + 'newemail' => $_POST['email'] + ); + update_option( $current_user->ID . '_new_email', $new_user_email ); + + $content = apply_filters( 'new_user_email_content', __( "Dear user, + +You recently requested to have the email address on your account changed. +If this is correct, please click on the following link to change it: +###ADMIN_URL### + +You can safely ignore and delete this email if you do not want to +take this action. + +This email has been sent to ###EMAIL### + +Regards, +All at ###SITENAME### +###SITEURL###" ), $new_user_email ); + + $content = str_replace( '###ADMIN_URL###', esc_url( admin_url( 'profile.php?newuseremail='.$hash ) ), $content ); + $content = str_replace( '###EMAIL###', $_POST['email'], $content); + $content = str_replace( '###SITENAME###', get_site_option( 'site_name' ), $content ); + $content = str_replace( '###SITEURL###', network_home_url(), $content ); + + wp_mail( $_POST['email'], sprintf( __( '[%s] New Email Address' ), get_option( 'blogname' ) ), $content ); + $_POST['email'] = $current_user->user_email; + } +} +add_action( 'personal_options_update', 'send_confirmation_on_profile_email' ); + +function new_user_email_admin_notice() { + if ( strpos( $_SERVER['PHP_SELF'], 'profile.php' ) && isset( $_GET['updated'] ) && $email = get_option( get_current_user_id() . '_new_email' ) ) + echo "
" . sprintf( __( "Your email address has not been updated yet. Please check your inbox at %s for a confirmation email." ), $email['newemail'] ) . "
"; +} +add_action( 'admin_notices', 'new_user_email_admin_notice' ); + +/** + * Determines if there is any upload space left in the current blog's quota. + * + * @since 3.0.0 + * @return bool True if space is available, false otherwise. + */ +function is_upload_space_available() { + if ( get_site_option( 'upload_space_check_disabled' ) ) + return true; + + if ( !( $space_allowed = get_upload_space_available() ) ) + return false; + + return true; +} + +/** + * @since 3.0.0 + * + * @return int of upload size limit in bytes + */ +function upload_size_limit_filter( $size ) { + $fileupload_maxk = 1024 * get_site_option( 'fileupload_maxk', 1500 ); + if ( get_site_option( 'upload_space_check_disabled' ) ) + return min( $size, $fileupload_maxk ); + + return min( $size, $fileupload_maxk, get_upload_space_available() ); +} +/** + * Determines if there is any upload space left in the current blog's quota. + * + * @return int of upload space available in bytes + */ +function get_upload_space_available() { + $space_allowed = get_space_allowed() * 1024 * 1024; + if ( get_site_option( 'upload_space_check_disabled' ) ) + return $space_allowed; + + $dir_name = trailingslashit( BLOGUPLOADDIR ); + if ( !( is_dir( $dir_name) && is_readable( $dir_name ) ) ) + return $space_allowed; + + $dir = dir( $dir_name ); + $size = 0; + + while ( $file = $dir->read() ) { + if ( $file != '.' && $file != '..' ) { + if ( is_dir( $dir_name . $file) ) { + $size += get_dirsize( $dir_name . $file ); + } else { + $size += filesize( $dir_name . $file ); + } + } + } + $dir->close(); + + if ( ( $space_allowed - $size ) <= 0 ) + return 0; + + return $space_allowed - $size; +} + +/** + * Returns the upload quota for the current blog. + * + * @return int Quota + */ +function get_space_allowed() { + $space_allowed = get_option( 'blog_upload_space' ); + + if ( ! is_numeric( $space_allowed ) ) + $space_allowed = get_site_option( 'blog_upload_space' ); + + if ( empty( $space_allowed ) || ! is_numeric( $space_allowed ) ) + $space_allowed = 50; + + return $space_allowed; +} + +function display_space_usage() { + $space = get_space_allowed(); + $used = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024; + + $percentused = ( $used / $space ) * 100; + + if ( $space > 1000 ) { + $space = number_format( $space / 1024 ); + /* translators: Gigabytes */ + $space .= __( 'GB' ); + } else { + /* translators: Megabytes */ + $space .= __( 'MB' ); + } + ?> + + + + + + + update( $wpdb->users, array( $pref => $value ), array( 'ID' => $id ) ); + + $user = new WP_User( $id ); + clean_user_cache( $user ); + + if ( $pref == 'spam' ) { + if ( $value == 1 ) + do_action( 'make_spam_user', $id ); + else + do_action( 'make_ham_user', $id ); + } + + return $value; +} + +function refresh_user_details( $id ) { + $id = (int) $id; + + if ( !$user = get_userdata( $id ) ) + return false; + + clean_user_cache( $user ); + + return $id; +} + +function format_code_lang( $code = '' ) { + $code = strtolower( substr( $code, 0, 2 ) ); + $lang_codes = array( + 'aa' => 'Afar', 'ab' => 'Abkhazian', 'af' => 'Afrikaans', 'ak' => 'Akan', 'sq' => 'Albanian', 'am' => 'Amharic', 'ar' => 'Arabic', 'an' => 'Aragonese', 'hy' => 'Armenian', 'as' => 'Assamese', 'av' => 'Avaric', 'ae' => 'Avestan', 'ay' => 'Aymara', 'az' => 'Azerbaijani', 'ba' => 'Bashkir', 'bm' => 'Bambara', 'eu' => 'Basque', 'be' => 'Belarusian', 'bn' => 'Bengali', + 'bh' => 'Bihari', 'bi' => 'Bislama', 'bs' => 'Bosnian', 'br' => 'Breton', 'bg' => 'Bulgarian', 'my' => 'Burmese', 'ca' => 'Catalan; Valencian', 'ch' => 'Chamorro', 'ce' => 'Chechen', 'zh' => 'Chinese', 'cu' => 'Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic', 'cv' => 'Chuvash', 'kw' => 'Cornish', 'co' => 'Corsican', 'cr' => 'Cree', + 'cs' => 'Czech', 'da' => 'Danish', 'dv' => 'Divehi; Dhivehi; Maldivian', 'nl' => 'Dutch; Flemish', 'dz' => 'Dzongkha', 'en' => 'English', 'eo' => 'Esperanto', 'et' => 'Estonian', 'ee' => 'Ewe', 'fo' => 'Faroese', 'fj' => 'Fijjian', 'fi' => 'Finnish', 'fr' => 'French', 'fy' => 'Western Frisian', 'ff' => 'Fulah', 'ka' => 'Georgian', 'de' => 'German', 'gd' => 'Gaelic; Scottish Gaelic', + 'ga' => 'Irish', 'gl' => 'Galician', 'gv' => 'Manx', 'el' => 'Greek, Modern', 'gn' => 'Guarani', 'gu' => 'Gujarati', 'ht' => 'Haitian; Haitian Creole', 'ha' => 'Hausa', 'he' => 'Hebrew', 'hz' => 'Herero', 'hi' => 'Hindi', 'ho' => 'Hiri Motu', 'hu' => 'Hungarian', 'ig' => 'Igbo', 'is' => 'Icelandic', 'io' => 'Ido', 'ii' => 'Sichuan Yi', 'iu' => 'Inuktitut', 'ie' => 'Interlingue', + 'ia' => 'Interlingua (International Auxiliary Language Association)', 'id' => 'Indonesian', 'ik' => 'Inupiaq', 'it' => 'Italian', 'jv' => 'Javanese', 'ja' => 'Japanese', 'kl' => 'Kalaallisut; Greenlandic', 'kn' => 'Kannada', 'ks' => 'Kashmiri', 'kr' => 'Kanuri', 'kk' => 'Kazakh', 'km' => 'Central Khmer', 'ki' => 'Kikuyu; Gikuyu', 'rw' => 'Kinyarwanda', 'ky' => 'Kirghiz; Kyrgyz', + 'kv' => 'Komi', 'kg' => 'Kongo', 'ko' => 'Korean', 'kj' => 'Kuanyama; Kwanyama', 'ku' => 'Kurdish', 'lo' => 'Lao', 'la' => 'Latin', 'lv' => 'Latvian', 'li' => 'Limburgan; Limburger; Limburgish', 'ln' => 'Lingala', 'lt' => 'Lithuanian', 'lb' => 'Luxembourgish; Letzeburgesch', 'lu' => 'Luba-Katanga', 'lg' => 'Ganda', 'mk' => 'Macedonian', 'mh' => 'Marshallese', 'ml' => 'Malayalam', + 'mi' => 'Maori', 'mr' => 'Marathi', 'ms' => 'Malay', 'mg' => 'Malagasy', 'mt' => 'Maltese', 'mo' => 'Moldavian', 'mn' => 'Mongolian', 'na' => 'Nauru', 'nv' => 'Navajo; Navaho', 'nr' => 'Ndebele, South; South Ndebele', 'nd' => 'Ndebele, North; North Ndebele', 'ng' => 'Ndonga', 'ne' => 'Nepali', 'nn' => 'Norwegian Nynorsk; Nynorsk, Norwegian', 'nb' => 'Bokmål, Norwegian, Norwegian Bokmål', + 'no' => 'Norwegian', 'ny' => 'Chichewa; Chewa; Nyanja', 'oc' => 'Occitan, Provençal', 'oj' => 'Ojibwa', 'or' => 'Oriya', 'om' => 'Oromo', 'os' => 'Ossetian; Ossetic', 'pa' => 'Panjabi; Punjabi', 'fa' => 'Persian', 'pi' => 'Pali', 'pl' => 'Polish', 'pt' => 'Portuguese', 'ps' => 'Pushto', 'qu' => 'Quechua', 'rm' => 'Romansh', 'ro' => 'Romanian', 'rn' => 'Rundi', 'ru' => 'Russian', + 'sg' => 'Sango', 'sa' => 'Sanskrit', 'sr' => 'Serbian', 'hr' => 'Croatian', 'si' => 'Sinhala; Sinhalese', 'sk' => 'Slovak', 'sl' => 'Slovenian', 'se' => 'Northern Sami', 'sm' => 'Samoan', 'sn' => 'Shona', 'sd' => 'Sindhi', 'so' => 'Somali', 'st' => 'Sotho, Southern', 'es' => 'Spanish; Castilian', 'sc' => 'Sardinian', 'ss' => 'Swati', 'su' => 'Sundanese', 'sw' => 'Swahili', + 'sv' => 'Swedish', 'ty' => 'Tahitian', 'ta' => 'Tamil', 'tt' => 'Tatar', 'te' => 'Telugu', 'tg' => 'Tajik', 'tl' => 'Tagalog', 'th' => 'Thai', 'bo' => 'Tibetan', 'ti' => 'Tigrinya', 'to' => 'Tonga (Tonga Islands)', 'tn' => 'Tswana', 'ts' => 'Tsonga', 'tk' => 'Turkmen', 'tr' => 'Turkish', 'tw' => 'Twi', 'ug' => 'Uighur; Uyghur', 'uk' => 'Ukrainian', 'ur' => 'Urdu', 'uz' => 'Uzbek', + 've' => 'Venda', 'vi' => 'Vietnamese', 'vo' => 'Volapük', 'cy' => 'Welsh','wa' => 'Walloon','wo' => 'Wolof', 'xh' => 'Xhosa', 'yi' => 'Yiddish', 'yo' => 'Yoruba', 'za' => 'Zhuang; Chuang', 'zu' => 'Zulu' ); + $lang_codes = apply_filters( 'lang_codes', $lang_codes, $code ); + return strtr( $code, $lang_codes ); +} + +function sync_category_tag_slugs( $term, $taxonomy ) { + if ( global_terms_enabled() && ( $taxonomy == 'category' || $taxonomy == 'post_tag' ) ) { + if ( is_object( $term ) ) { + $term->slug = sanitize_title( $term->name ); + } else { + $term['slug'] = sanitize_title( $term['name'] ); + } + } + return $term; +} +add_filter( 'get_term', 'sync_category_tag_slugs', 10, 2 ); + +function _access_denied_splash() { + if ( ! is_user_logged_in() || is_network_admin() ) + return; + + $blogs = get_blogs_of_user( get_current_user_id() ); + + if ( wp_list_filter( $blogs, array( 'userblog_id' => get_current_blog_id() ) ) ) + return; + + $blog_name = get_bloginfo( 'name' ); + + if ( empty( $blogs ) ) + wp_die( sprintf( __( 'You attempted to access the "%1$s" dashboard, but you do not currently have privileges on this site. If you believe you should be able to access the "%1$s" dashboard, please contact your network administrator.' ), $blog_name ) ); + + $output = '

' . sprintf( __( 'You attempted to access the "%1$s" dashboard, but you do not currently have privileges on this site. If you believe you should be able to access the "%1$s" dashboard, please contact your network administrator.' ), $blog_name ) . '

'; + $output .= '

' . __( 'If you reached this screen by accident and meant to visit one of your own sites, here are some shortcuts to help you find your way.' ) . '

'; + + $output .= '

' . __('Your Sites') . '

'; + $output .= ''; + + foreach ( $blogs as $blog ) { + $output .= ""; + $output .= ""; + $output .= ""; + $output .= ""; + } + $output .= '
"; + $output .= "{$blog->blogname}"; + $output .= ""; + $output .= "" . __( 'Visit Dashboard' ) . " | " . __( 'View Site' ) . "" ; + $output .= "
'; + + wp_die( $output ); +} +add_action( 'admin_page_access_denied', '_access_denied_splash', 99 ); + +function check_import_new_users( $permission ) { + if ( !is_super_admin() ) + return false; + return true; +} +add_filter( 'import_allow_create_users', 'check_import_new_users' ); +// See "import_allow_fetch_attachments" and "import_attachment_size_limit" filters too. + +function mu_dropdown_languages( $lang_files = array(), $current = '' ) { + $flag = false; + $output = array(); + + foreach ( (array) $lang_files as $val ) { + $code_lang = basename( $val, '.mo' ); + + if ( $code_lang == 'en_US' ) { // American English + $flag = true; + $ae = __( 'American English' ); + $output[$ae] = ''; + } elseif ( $code_lang == 'en_GB' ) { // British English + $flag = true; + $be = __( 'British English' ); + $output[$be] = ''; + } else { + $translated = format_code_lang( $code_lang ); + $output[$translated] = ''; + } + + } + + if ( $flag === false ) // WordPress english + $output[] = '"; + + // Order by name + uksort( $output, 'strnatcasecmp' ); + + $output = apply_filters( 'mu_dropdown_languages', $output, $lang_files, $current ); + echo implode( "\n\t", $output ); +} + +/* Warn the admin if SECRET SALT information is missing from wp-config.php */ +function secret_salt_warning() { + if ( !is_super_admin() ) + return; + $secret_keys = array( 'AUTH_KEY', 'SECURE_AUTH_KEY', 'LOGGED_IN_KEY', 'NONCE_KEY', 'AUTH_SALT', 'SECURE_AUTH_SALT', 'LOGGED_IN_SALT', 'NONCE_SALT' ); + $out = ''; + foreach( $secret_keys as $key ) { + if ( ! defined( $key ) ) + $out .= "define( '$key', '" . esc_html( wp_generate_password( 64, true, true ) ) . "' );
"; + } + if ( $out != '' ) { + $msg = __( 'Warning! WordPress encrypts user cookies, but you must add the following lines to wp-config.php for it to be more secure.' ); + $msg .= '
' . __( "Before the line /* That's all, stop editing! Happy blogging. */ please add this code:" ); + $msg .= "

$out"; + + echo "
$msg
"; + } +} +add_action( 'network_admin_notices', 'secret_salt_warning' ); + +function site_admin_notice() { + global $wp_db_version; + if ( !is_super_admin() ) + return false; + if ( get_site_option( 'wpmu_upgrade_site' ) != $wp_db_version ) + echo "
" . sprintf( __( 'Thank you for Updating! Please visit the Update Network page to update all your sites.' ), esc_url( network_admin_url( 'upgrade.php' ) ) ) . "
"; +} +add_action( 'admin_notices', 'site_admin_notice' ); +add_action( 'network_admin_notices', 'site_admin_notice' ); + +function avoid_blog_page_permalink_collision( $data, $postarr ) { + if ( is_subdomain_install() ) + return $data; + if ( $data['post_type'] != 'page' ) + return $data; + if ( !isset( $data['post_name'] ) || $data['post_name'] == '' ) + return $data; + if ( !is_main_site() ) + return $data; + + $post_name = $data['post_name']; + $c = 0; + while( $c < 10 && get_id_from_blogname( $post_name ) ) { + $post_name .= mt_rand( 1, 10 ); + $c ++; + } + if ( $post_name != $data['post_name'] ) { + $data['post_name'] = $post_name; + } + return $data; +} +add_filter( 'wp_insert_post_data', 'avoid_blog_page_permalink_collision', 10, 2 ); + +function choose_primary_blog() { + ?> + + + + + + + + + + + +
+ 1 ) { + $found = false; + ?> + + userblog_id ); + } + } elseif ( count( $all_blogs ) == 1 ) { + $blog = array_shift( $all_blogs ); + echo $blog->domain; + if ( $primary_blog != $blog->userblog_id ) // Set the primary blog again if it's out of sync with blog list. + update_user_meta( get_current_user_id(), 'primary_blog', $blog->userblog_id ); + } else { + echo "N/A"; + } + ?> +
+ +
+ ' . sprintf( __( 'The %1$s file is deprecated. Please remove it and update your server rewrite rules to use %2$s instead.' ), 'wp-content/blogs.php', 'wp-includes/ms-files.php' ) . ''; +} +add_action( 'network_admin_notices', 'ms_deprecated_blogs_file' ); + +/** + * Grants super admin privileges. + * + * @since 3.0.0 + * @param int $user_id + */ +function grant_super_admin( $user_id ) { + global $super_admins; + + // If global super_admins override is defined, there is nothing to do here. + if ( isset($super_admins) ) + return false; + + do_action( 'grant_super_admin', $user_id ); + + // Directly fetch site_admins instead of using get_super_admins() + $super_admins = get_site_option( 'site_admins', array( 'admin' ) ); + + $user = new WP_User( $user_id ); + if ( ! in_array( $user->user_login, $super_admins ) ) { + $super_admins[] = $user->user_login; + update_site_option( 'site_admins' , $super_admins ); + do_action( 'granted_super_admin', $user_id ); + return true; + } + return false; +} + +/** + * Revokes super admin privileges. + * + * @since 3.0.0 + * @param int $user_id + */ +function revoke_super_admin( $user_id ) { + global $super_admins; + + // If global super_admins override is defined, there is nothing to do here. + if ( isset($super_admins) ) + return false; + + do_action( 'revoke_super_admin', $user_id ); + + // Directly fetch site_admins instead of using get_super_admins() + $super_admins = get_site_option( 'site_admins', array( 'admin' ) ); + + $user = new WP_User( $user_id ); + if ( $user->user_email != get_site_option( 'admin_email' ) ) { + if ( false !== ( $key = array_search( $user->user_login, $super_admins ) ) ) { + unset( $super_admins[$key] ); + update_site_option( 'site_admins', $super_admins ); + do_action( 'revoked_super_admin', $user_id ); + return true; + } + } + return false; +} + +/** + * Whether or not we can edit this network from this page + * + * By default editing of network is restricted to the Network Admin for that site_id this allows for this to be overridden + * + * @since 3.1.0 + * @param integer $site_id The network/site id to check. + */ +function can_edit_network( $site_id ) { + global $wpdb; + + if ($site_id == $wpdb->siteid ) + $result = true; + else + $result = false; + + return apply_filters( 'can_edit_network', $result, $site_id ); +} + +/** + * Thickbox image paths for Network Admin. + * + * @since 3.1.0 + * @access private + */ +function _thickbox_path_admin_subfolder() { +?> + + 10000, 'users', $count ); + } + + $count = get_blog_count(); + return apply_filters( 'wp_is_large_network', $count > 10000, 'sites', $count ); +} diff --git a/wp-admin/includes/nav-menu.php b/wp-admin/includes/nav-menu.php new file mode 100644 index 0000000..5fc73fc --- /dev/null +++ b/wp-admin/includes/nav-menu.php @@ -0,0 +1,1162 @@ + $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth; + + $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; + + ob_start(); + $item_id = esc_attr( $item->ID ); + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + $original_title = ''; + if ( 'taxonomy' == $item->type ) { + $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' ); + if ( is_wp_error( $original_title ) ) + $original_title = false; + } elseif ( 'post_type' == $item->type ) { + $original_object = get_post( $item->object_id ); + $original_title = $original_object->post_title; + } + + $classes = array( + 'menu-item menu-item-depth-' . $depth, + 'menu-item-' . esc_attr( $item->object ), + 'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'), + ); + + $title = $item->title; + + if ( ! empty( $item->_invalid ) ) { + $classes[] = 'menu-item-invalid'; + /* translators: %s: title of menu item which is invalid */ + $title = sprintf( __( '%s (Invalid)' ), $item->title ); + } elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) { + $classes[] = 'pending'; + /* translators: %s: title of menu item in draft status */ + $title = sprintf( __('%s (Pending)'), $item->title ); + } + + $title = empty( $item->label ) ? $title : $item->label; + + ?> +
  • '; + $output .= ''; + + // Menu item hidden fields + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + } +} + +/** + * Prints the appropriate response to a menu quick search. + * + * @since 3.0.0 + * + * @param array $request The unsanitized request values. + */ +function _wp_ajax_menu_quick_search( $request = array() ) { + $args = array(); + $type = isset( $request['type'] ) ? $request['type'] : ''; + $object_type = isset( $request['object_type'] ) ? $request['object_type'] : ''; + $query = isset( $request['q'] ) ? $request['q'] : ''; + $response_format = isset( $request['response-format'] ) && in_array( $request['response-format'], array( 'json', 'markup' ) ) ? $request['response-format'] : 'json'; + + if ( 'markup' == $response_format ) { + $args['walker'] = new Walker_Nav_Menu_Checklist; + } + + if ( 'get-post-item' == $type ) { + if ( post_type_exists( $object_type ) ) { + if ( isset( $request['ID'] ) ) { + $object_id = (int) $request['ID']; + if ( 'markup' == $response_format ) { + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $object_id ) ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + $post_obj = get_post( $object_id ); + echo json_encode( + array( + 'ID' => $object_id, + 'post_title' => get_the_title( $object_id ), + 'post_type' => get_post_type( $object_id ), + ) + ); + echo "\n"; + } + } + } elseif ( taxonomy_exists( $object_type ) ) { + if ( isset( $request['ID'] ) ) { + $object_id = (int) $request['ID']; + if ( 'markup' == $response_format ) { + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_term( $object_id, $object_type ) ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + $post_obj = get_term( $object_id, $object_type ); + echo json_encode( + array( + 'ID' => $object_id, + 'post_title' => $post_obj->name, + 'post_type' => $object_type, + ) + ); + echo "\n"; + } + } + + } + + } elseif ( preg_match('/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*\b)/', $type, $matches) ) { + if ( 'posttype' == $matches[1] && get_post_type_object( $matches[2] ) ) { + query_posts(array( + 'posts_per_page' => 10, + 'post_type' => $matches[2], + 's' => $query, + )); + if ( ! have_posts() ) + return; + while ( have_posts() ) { + the_post(); + if ( 'markup' == $response_format ) { + $var_by_ref = get_the_ID(); + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $var_by_ref ) ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + echo json_encode( + array( + 'ID' => get_the_ID(), + 'post_title' => get_the_title(), + 'post_type' => get_post_type(), + ) + ); + echo "\n"; + } + } + } elseif ( 'taxonomy' == $matches[1] ) { + $terms = get_terms( $matches[2], array( + 'name__like' => $query, + 'number' => 10, + )); + if ( empty( $terms ) || is_wp_error( $terms ) ) + return; + foreach( (array) $terms as $term ) { + if ( 'markup' == $response_format ) { + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( $term ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + echo json_encode( + array( + 'ID' => $term->term_id, + 'post_title' => $term->name, + 'post_type' => $matches[2], + ) + ); + echo "\n"; + } + } + } + } +} + +/** + * Register nav menu metaboxes and advanced menu items + * + * @since 3.0.0 + **/ +function wp_nav_menu_setup() { + // Register meta boxes + if ( wp_get_nav_menus() ) + add_meta_box( 'nav-menu-theme-locations', __( 'Theme Locations' ), 'wp_nav_menu_locations_meta_box' , 'nav-menus', 'side', 'default' ); + add_meta_box( 'add-custom-links', __('Custom Links'), 'wp_nav_menu_item_link_meta_box', 'nav-menus', 'side', 'default' ); + wp_nav_menu_post_type_meta_boxes(); + wp_nav_menu_taxonomy_meta_boxes(); + + // Register advanced menu items (columns) + add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns'); + + // If first time editing, disable advanced items by default. + if( false === get_user_option( 'managenav-menuscolumnshidden' ) ) { + $user = wp_get_current_user(); + update_user_option($user->ID, 'managenav-menuscolumnshidden', + array( 0 => 'link-target', 1 => 'css-classes', 2 => 'xfn', 3 => 'description', ), + true); + } +} + +/** + * Limit the amount of meta boxes to just links, pages and cats for first time users. + * + * @since 3.0.0 + **/ +function wp_initial_nav_menu_meta_boxes() { + global $wp_meta_boxes; + + if ( get_user_option( 'metaboxhidden_nav-menus' ) !== false || ! is_array($wp_meta_boxes) ) + return; + + $initial_meta_boxes = array( 'nav-menu-theme-locations', 'add-custom-links', 'add-page', 'add-category' ); + $hidden_meta_boxes = array(); + + foreach ( array_keys($wp_meta_boxes['nav-menus']) as $context ) { + foreach ( array_keys($wp_meta_boxes['nav-menus'][$context]) as $priority ) { + foreach ( $wp_meta_boxes['nav-menus'][$context][$priority] as $box ) { + if ( in_array( $box['id'], $initial_meta_boxes ) ) { + unset( $box['id'] ); + } else { + $hidden_meta_boxes[] = $box['id']; + } + } + } + } + + $user = wp_get_current_user(); + update_user_option( $user->ID, 'metaboxhidden_nav-menus', $hidden_meta_boxes, true ); +} + +/** + * Creates metaboxes for any post type menu item. + * + * @since 3.0.0 + */ +function wp_nav_menu_post_type_meta_boxes() { + $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); + + if ( ! $post_types ) + return; + + foreach ( $post_types as $post_type ) { + $post_type = apply_filters( 'nav_menu_meta_box_object', $post_type ); + if ( $post_type ) { + $id = $post_type->name; + add_meta_box( "add-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', 'default', $post_type ); + } + } +} + +/** + * Creates metaboxes for any taxonomy menu item. + * + * @since 3.0.0 + */ +function wp_nav_menu_taxonomy_meta_boxes() { + $taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'object' ); + + if ( !$taxonomies ) + return; + + foreach ( $taxonomies as $tax ) { + $tax = apply_filters( 'nav_menu_meta_box_object', $tax ); + if ( $tax ) { + $id = $tax->name; + add_meta_box( "add-{$id}", $tax->labels->name, 'wp_nav_menu_item_taxonomy_meta_box', 'nav-menus', 'side', 'default', $tax ); + } + } +} + +/** + * Displays a metabox for the nav menu theme locations. + * + * @since 3.0.0 + */ +function wp_nav_menu_locations_meta_box() { + global $nav_menu_selected_id; + + if ( ! current_theme_supports( 'menus' ) ) { + // We must only support widgets. Leave a message and bail. + echo '

    ' . __('The current theme does not natively support menus, but you can use the “Custom Menu” widget to add any menus you create here to the theme’s sidebar.') . '

    '; + return; + } + + $locations = get_registered_nav_menus(); + $menus = wp_get_nav_menus(); + $menu_locations = get_nav_menu_locations(); + $num_locations = count( array_keys($locations) ); + + echo '

    ' . sprintf( _n('Your theme supports %s menu. Select which menu you would like to use.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ), number_format_i18n($num_locations) ) . '

    '; + + foreach ( $locations as $location => $description ) { + ?> +

    + +

    + +

    + + +

    + $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1; + + $current_tab = 'create'; + if ( isset( $_REQUEST['customlink-tab'] ) && in_array( $_REQUEST['customlink-tab'], array('create', 'all') ) ) { + $current_tab = $_REQUEST['customlink-tab']; + } + + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + ?> +
    + + + + + + +

    + + + class="button-secondary submit-add-to-menu" value="" name="add-custom-menu-item" id="submit-customlinkdiv" /> + +

    + +
    + name; + + // paginate browsing for large numbers of post objects + $per_page = 50; + $pagenum = isset( $_REQUEST[$post_type_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; + $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; + + $args = array( + 'offset' => $offset, + 'order' => 'ASC', + 'orderby' => 'title', + 'posts_per_page' => $per_page, + 'post_type' => $post_type_name, + 'suppress_filters' => true, + 'update_post_term_cache' => false, + 'update_post_meta_cache' => false + ); + + if ( isset( $post_type['args']->_default_query ) ) + $args = array_merge($args, (array) $post_type['args']->_default_query ); + + // @todo transient caching of these results with proper invalidation on updating of a post of this type + $get_posts = new WP_Query; + $posts = $get_posts->query( $args ); + if ( ! $get_posts->post_count ) { + echo '

    ' . __( 'No items.' ) . '

    '; + return; + } + + $post_type_object = get_post_type_object($post_type_name); + + $num_pages = $get_posts->max_num_pages; + + $page_links = paginate_links( array( + 'base' => add_query_arg( + array( + $post_type_name . '-tab' => 'all', + 'paged' => '%#%', + 'item-type' => 'post_type', + 'item-object' => $post_type_name, + ) + ), + 'format' => '', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => $num_pages, + 'current' => $pagenum + )); + + if ( !$posts ) + $error = '
  • '. $post_type['args']->labels->not_found .'
  • '; + + $db_fields = false; + if ( is_post_type_hierarchical( $post_type_name ) ) { + $db_fields = array( 'parent' => 'post_parent', 'id' => 'ID' ); + } + + $walker = new Walker_Nav_Menu_Checklist( $db_fields ); + + $current_tab = 'most-recent'; + if ( isset( $_REQUEST[$post_type_name . '-tab'] ) && in_array( $_REQUEST[$post_type_name . '-tab'], array('all', 'search') ) ) { + $current_tab = $_REQUEST[$post_type_name . '-tab']; + } + + if ( ! empty( $_REQUEST['quick-search-posttype-' . $post_type_name] ) ) { + $current_tab = 'search'; + } + + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + ?> +
    +
      +
    • >
    • +
    • >
    • +
    • >
    • +
    + +
    +
      + 'post_date', 'order' => 'DESC', 'posts_per_page' => 15 ) ); + $most_recent = $get_posts->query( $recent_args ); + $args['walker'] = $walker; + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $most_recent), 0, (object) $args ); + ?> +
    +
    + + + +
    + + + +
      + _add_to_top = true; + $front_page_obj->label = sprintf( _x('Home: %s', 'nav menu front page title'), $front_page_obj->post_title ); + array_unshift( $posts, $front_page_obj ); + } else { + $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; + array_unshift( $posts, (object) array( + '_add_to_top' => true, + 'ID' => 0, + 'object_id' => $_nav_menu_placeholder, + 'post_content' => '', + 'post_excerpt' => '', + 'post_parent' => '', + 'post_title' => _x('Home', 'nav menu home label'), + 'post_type' => 'nav_menu_item', + 'type' => 'custom', + 'url' => home_url('/'), + ) ); + } + } + + $posts = apply_filters( 'nav_menu_items_'.$post_type_name, $posts, $args, $post_type ); + $checkbox_items = walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args ); + + if ( 'all' == $current_tab && ! empty( $_REQUEST['selectall'] ) ) { + $checkbox_items = preg_replace('/(type=(.)checkbox(\2))/', '$1 checked=$2checked$2', $checkbox_items); + + } + + echo $checkbox_items; + ?> +
    + + + +
    + +

    + + + + + + + class="button-secondary submit-add-to-menu" value="" name="add-post-type-menu-item" id="submit-posttype-" /> + +

    + +
    + name; + + // paginate browsing for large numbers of objects + $per_page = 50; + $pagenum = isset( $_REQUEST[$taxonomy_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; + $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; + + $args = array( + 'child_of' => 0, + 'exclude' => '', + 'hide_empty' => false, + 'hierarchical' => 1, + 'include' => '', + 'number' => $per_page, + 'offset' => $offset, + 'order' => 'ASC', + 'orderby' => 'name', + 'pad_counts' => false, + ); + + $terms = get_terms( $taxonomy_name, $args ); + + if ( ! $terms || is_wp_error($terms) ) { + echo '

    ' . __( 'No items.' ) . '

    '; + return; + } + + $num_pages = ceil( wp_count_terms( $taxonomy_name , array_merge( $args, array('number' => '', 'offset' => '') ) ) / $per_page ); + + $page_links = paginate_links( array( + 'base' => add_query_arg( + array( + $taxonomy_name . '-tab' => 'all', + 'paged' => '%#%', + 'item-type' => 'taxonomy', + 'item-object' => $taxonomy_name, + ) + ), + 'format' => '', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => $num_pages, + 'current' => $pagenum + )); + + $db_fields = false; + if ( is_taxonomy_hierarchical( $taxonomy_name ) ) { + $db_fields = array( 'parent' => 'parent', 'id' => 'term_id' ); + } + + $walker = new Walker_Nav_Menu_Checklist( $db_fields ); + + $current_tab = 'most-used'; + if ( isset( $_REQUEST[$taxonomy_name . '-tab'] ) && in_array( $_REQUEST[$taxonomy_name . '-tab'], array('all', 'most-used', 'search') ) ) { + $current_tab = $_REQUEST[$taxonomy_name . '-tab']; + } + + if ( ! empty( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ) ) { + $current_tab = 'search'; + } + + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + ?> +
    +
      +
    • >
    • +
    • >
    • +
    • >
    • +
    + +
    +
      + 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); + $args['walker'] = $walker; + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $popular_terms), 0, (object) $args ); + ?> +
    +
    + +
    + + + +
      + +
    + + + +
    + +
    + $searched, 'fields' => 'all', 'orderby' => 'count', 'order' => 'DESC', 'hierarchical' => false ) ); + } else { + $searched = ''; + $search_results = array(); + } + ?> +

    + + + 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?> +

    + +
      + + + +
    • get_error_message(); ?>
    • + +
    • + +
    +
    + +

    + + + + + + + class="button-secondary submit-add-to-menu" value="" name="add-taxonomy-menu-item" id="submit-taxonomy-" /> + +

    + +
    + $_item_object_data ) { + if ( + empty( $_item_object_data['menu-item-object-id'] ) && // checkbox is not checked + ( + ! isset( $_item_object_data['menu-item-type'] ) || // and item type either isn't set + in_array( $_item_object_data['menu-item-url'], array( 'http://', '' ) ) || // or URL is the default + ! ( 'custom' == $_item_object_data['menu-item-type'] && ! isset( $_item_object_data['menu-item-db-id'] ) ) || // or it's not a custom menu item (but not the custom home page) + ! empty( $_item_object_data['menu-item-db-id'] ) // or it *is* a custom menu item that already exists + ) + ) { + continue; // then this potential menu item is not getting added to this menu + } + + // if this possible menu item doesn't actually have a menu database ID yet + if ( + empty( $_item_object_data['menu-item-db-id'] ) || + ( 0 > $_possible_db_id ) || + $_possible_db_id != $_item_object_data['menu-item-db-id'] + ) { + $_actual_db_id = 0; + } else { + $_actual_db_id = (int) $_item_object_data['menu-item-db-id']; + } + + $args = array( + 'menu-item-db-id' => ( isset( $_item_object_data['menu-item-db-id'] ) ? $_item_object_data['menu-item-db-id'] : '' ), + 'menu-item-object-id' => ( isset( $_item_object_data['menu-item-object-id'] ) ? $_item_object_data['menu-item-object-id'] : '' ), + 'menu-item-object' => ( isset( $_item_object_data['menu-item-object'] ) ? $_item_object_data['menu-item-object'] : '' ), + 'menu-item-parent-id' => ( isset( $_item_object_data['menu-item-parent-id'] ) ? $_item_object_data['menu-item-parent-id'] : '' ), + 'menu-item-position' => ( isset( $_item_object_data['menu-item-position'] ) ? $_item_object_data['menu-item-position'] : '' ), + 'menu-item-type' => ( isset( $_item_object_data['menu-item-type'] ) ? $_item_object_data['menu-item-type'] : '' ), + 'menu-item-title' => ( isset( $_item_object_data['menu-item-title'] ) ? $_item_object_data['menu-item-title'] : '' ), + 'menu-item-url' => ( isset( $_item_object_data['menu-item-url'] ) ? $_item_object_data['menu-item-url'] : '' ), + 'menu-item-description' => ( isset( $_item_object_data['menu-item-description'] ) ? $_item_object_data['menu-item-description'] : '' ), + 'menu-item-attr-title' => ( isset( $_item_object_data['menu-item-attr-title'] ) ? $_item_object_data['menu-item-attr-title'] : '' ), + 'menu-item-target' => ( isset( $_item_object_data['menu-item-target'] ) ? $_item_object_data['menu-item-target'] : '' ), + 'menu-item-classes' => ( isset( $_item_object_data['menu-item-classes'] ) ? $_item_object_data['menu-item-classes'] : '' ), + 'menu-item-xfn' => ( isset( $_item_object_data['menu-item-xfn'] ) ? $_item_object_data['menu-item-xfn'] : '' ), + ); + + $items_saved[] = wp_update_nav_menu_item( $menu_id, $_actual_db_id, $args ); + + } + } + return $items_saved; +} + +/** + * Adds custom arguments to some of the meta box object types. + * + * @since 3.0.0 + * + * @access private + * + * @param object $object The post type or taxonomy meta-object. + * @return object The post type of taxonomy object. + */ +function _wp_nav_menu_meta_box_object( $object = null ) { + if ( isset( $object->name ) ) { + + if ( 'page' == $object->name ) { + $object->_default_query = array( + 'orderby' => 'menu_order title', + 'post_status' => 'publish', + ); + + // posts should show only published items + } elseif ( 'post' == $object->name ) { + $object->_default_query = array( + 'post_status' => 'publish', + ); + + // cats should be in reverse chronological order + } elseif ( 'category' == $object->name ) { + $object->_default_query = array( + 'orderby' => 'id', + 'order' => 'DESC', + ); + + // custom post types should show only published items + } else { + $object->_default_query = array( + 'post_status' => 'publish', + ); + } + } + + return $object; +} + +/** + * Returns the menu formatted to edit. + * + * @since 3.0.0 + * + * @param string $menu_id The ID of the menu to format. + * @return string|WP_Error $output The menu formatted to edit or error object on failure. + */ +function wp_get_nav_menu_to_edit( $menu_id = 0 ) { + $menu = wp_get_nav_menu_object( $menu_id ); + + // If the menu exists, get its items. + if ( is_nav_menu( $menu ) ) { + $menu_items = wp_get_nav_menu_items( $menu->term_id, array('post_status' => 'any') ); + $result = '
    ' : '">'; + $result .= '

    ' . __('Select menu items (pages, categories, links) from the boxes at left to begin building your custom menu.') . '

    '; + $result .= '
    '; + + if( empty($menu_items) ) + return $result . ' '; + + $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $menu_id ); + + if ( class_exists( $walker_class_name ) ) + $walker = new $walker_class_name; + else + return new WP_Error( 'menu_walker_not_exist', sprintf( __('The Walker class named %s does not exist.'), $walker_class_name ) ); + + $some_pending_menu_items = $some_invalid_menu_items = false; + foreach( (array) $menu_items as $menu_item ) { + if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status ) + $some_pending_menu_items = true; + if ( ! empty( $menu_item->_invalid ) ) + $some_invalid_menu_items = true; + } + + if ( $some_pending_menu_items ) + $result .= '

    ' . __('Click Save Menu to make pending menu items public.') . '

    '; + + if ( $some_invalid_menu_items ) + $result .= '

    ' . __('There are some invalid menu items. Please check or delete them.') . '

    '; + + $result .= ' '; + return $result; + } elseif ( is_wp_error( $menu ) ) { + return $menu; + } + +} + +/** + * Returns the columns for the nav menus page. + * + * @since 3.0.0 + * + * @return string|WP_Error $output The menu formatted to edit or error object on failure. + */ +function wp_nav_menu_manage_columns() { + return array( + '_title' => __('Show advanced menu properties'), + 'cb' => '', + 'link-target' => __('Link Target'), + 'css-classes' => __('CSS Classes'), + 'xfn' => __('Link Relationship (XFN)'), + 'description' => __('Description'), + ); +} + +/** + * Deletes orphaned draft menu items + * + * @access private + * @since 3.0.0 + * + */ +function _wp_delete_orphaned_draft_menu_items() { + global $wpdb; + $delete_timestamp = time() - (60*60*24*EMPTY_TRASH_DAYS); + + // delete orphaned draft menu items + $menu_items_to_delete = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts AS p LEFT JOIN $wpdb->postmeta AS m ON p.ID = m.post_id WHERE post_type = 'nav_menu_item' AND post_status = 'draft' AND meta_key = '_menu_item_orphaned' AND meta_value < '%d'", $delete_timestamp ) ); + + foreach( (array) $menu_items_to_delete as $menu_item_id ) + wp_delete_post( $menu_item_id, true ); +} + +add_action('admin_head-nav-menus.php', '_wp_delete_orphaned_draft_menu_items'); diff --git a/wp-admin/includes/plugin-install.php b/wp-admin/includes/plugin-install.php new file mode 100644 index 0000000..f0d7cbd --- /dev/null +++ b/wp-admin/includes/plugin-install.php @@ -0,0 +1,382 @@ +per_page) ) + $args->per_page = 24; + + // Allows a plugin to override the WordPress.org API entirely. + // Use the filter 'plugins_api_result' to merely add results. + // Please ensure that a object is returned from the following filters. + $args = apply_filters('plugins_api_args', $args, $action); + $res = apply_filters('plugins_api', false, $action, $args); + + if ( false === $res ) { + $request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) ); + if ( is_wp_error($request) ) { + $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ), $request->get_error_message() ); + } else { + $res = maybe_unserialize( wp_remote_retrieve_body( $request ) ); + if ( ! is_object( $res ) && ! is_array( $res ) ) + $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ), wp_remote_retrieve_body( $request ) ); + } + } elseif ( !is_wp_error($res) ) { + $res->external = true; + } + + return apply_filters('plugins_api_result', $res, $action, $args); +} + +/** + * Retrieve popular WordPress plugin tags. + * + * @since 2.7.0 + * + * @param array $args + * @return array + */ +function install_popular_tags( $args = array() ) { + $key = md5(serialize($args)); + if ( false !== ($tags = get_site_transient('poptags_' . $key) ) ) + return $tags; + + $tags = plugins_api('hot_tags', $args); + + if ( is_wp_error($tags) ) + return $tags; + + set_site_transient('poptags_' . $key, $tags, 10800); // 3 * 60 * 60 = 10800 + + return $tags; +} + +function install_dashboard() { + ?> +

    WordPress Plugin Directory or upload a plugin in .zip format via this page.' ), self_admin_url( 'plugin-install.php?tab=upload' ) ); ?>

    + +

    + + +

    +

    + '; + if ( is_wp_error($api_tags) ) { + echo $api_tags->get_error_message(); + } else { + //Set up the tags in a way which can be interpreted by wp_generate_tag_cloud() + $tags = array(); + foreach ( (array)$api_tags as $tag ) + $tags[ $tag['name'] ] = (object) array( + 'link' => esc_url( self_admin_url('plugin-install.php?tab=search&type=tag&s=' . urlencode($tag['name'])) ), + 'name' => $tag['name'], + 'id' => sanitize_title_with_dashes($tag['name']), + 'count' => $tag['count'] ); + echo wp_generate_tag_cloud($tags, array( 'single_text' => __('%s plugin'), 'multiple_text' => __('%s plugins') ) ); + } + echo '


    '; +} +add_action('install_plugins_dashboard', 'install_dashboard'); + +/** + * Display search form for searching plugins. + * + * @since 2.7.0 + */ +function install_search_form( $type_selector = true ) { + $type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : 'term'; + $term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : ''; + + ?>
    + + + + + + + +
    +

    +

    +
    + + + + +
    +display(); +} +add_action('install_plugins_search', 'display_plugins_table'); +add_action('install_plugins_featured', 'display_plugins_table'); +add_action('install_plugins_popular', 'display_plugins_table'); +add_action('install_plugins_new', 'display_plugins_table'); + +/** + * Determine the status we can perform on a plugin. + * + * @since 3.0.0 + */ +function install_plugin_install_status($api, $loop = false) { + // this function is called recursively, $loop prevents further loops. + if ( is_array($api) ) + $api = (object) $api; + + //Default to a "new" plugin + $status = 'install'; + $url = false; + + //Check to see if this plugin is known to be installed, and has an update awaiting it. + $update_plugins = get_site_transient('update_plugins'); + if ( isset( $update_plugins->response ) ) { + foreach ( (array)$update_plugins->response as $file => $plugin ) { + if ( $plugin->slug === $api->slug ) { + $status = 'update_available'; + $update_file = $file; + $version = $plugin->new_version; + if ( current_user_can('update_plugins') ) + $url = wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=' . $update_file), 'upgrade-plugin_' . $update_file); + break; + } + } + } + + if ( 'install' == $status ) { + if ( is_dir( WP_PLUGIN_DIR . '/' . $api->slug ) ) { + $installed_plugin = get_plugins('/' . $api->slug); + if ( empty($installed_plugin) ) { + if ( current_user_can('install_plugins') ) + $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug); + } else { + $key = array_shift( $key = array_keys($installed_plugin) ); //Use the first plugin regardless of the name, Could have issues for multiple-plugins in one directory if they share different version numbers + if ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '=') ){ + $status = 'latest_installed'; + } elseif ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '<') ) { + $status = 'newer_installed'; + $version = $installed_plugin[ $key ]['Version']; + } else { + //If the above update check failed, Then that probably means that the update checker has out-of-date information, force a refresh + if ( ! $loop ) { + delete_site_transient('update_plugins'); + wp_update_plugins(); + return install_plugin_install_status($api, true); + } + } + } + } else { + // "install" & no directory with that slug + if ( current_user_can('install_plugins') ) + $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug); + } + } + if ( isset($_GET['from']) ) + $url .= '&from=' . urlencode(stripslashes($_GET['from'])); + + return compact('status', 'url', 'version'); +} + +/** + * Display plugin information in dialog box form. + * + * @since 2.7.0 + */ +function install_plugin_information() { + global $tab; + + $api = plugins_api('plugin_information', array('slug' => stripslashes( $_REQUEST['plugin'] ) )); + + if ( is_wp_error($api) ) + wp_die($api); + + $plugins_allowedtags = array( + 'a' => array( 'href' => array(), 'title' => array(), 'target' => array() ), + 'abbr' => array( 'title' => array() ), 'acronym' => array( 'title' => array() ), + 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), + 'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), + 'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(), + 'img' => array( 'src' => array(), 'class' => array(), 'alt' => array() ) + ); + + $plugins_section_titles = array( + 'description' => _x('Description', 'Plugin installer section title'), + 'installation' => _x('Installation', 'Plugin installer section title'), + 'faq' => _x('FAQ', 'Plugin installer section title'), + 'screenshots' => _x('Screenshots', 'Plugin installer section title'), + 'changelog' => _x('Changelog', 'Plugin installer section title'), + 'other_notes' => _x('Other Notes', 'Plugin installer section title') + ); + + //Sanitize HTML + foreach ( (array)$api->sections as $section_name => $content ) + $api->sections[$section_name] = wp_kses($content, $plugins_allowedtags); + foreach ( array( 'version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug' ) as $key ) { + if ( isset( $api->$key ) ) + $api->$key = wp_kses( $api->$key, $plugins_allowedtags ); + } + + $section = isset($_REQUEST['section']) ? stripslashes( $_REQUEST['section'] ) : 'description'; //Default to the Description tab, Do not translate, API returns English. + if ( empty($section) || ! isset($api->sections[ $section ]) ) + $section = array_shift( $section_titles = array_keys((array)$api->sections) ); + + iframe_header( __('Plugin Install') ); + echo "
    \n"; + echo "
      \n"; + foreach ( (array)$api->sections as $section_name => $content ) { + + if ( isset( $plugins_section_titles[ $section_name ] ) ) + $title = $plugins_section_titles[ $section_name ]; + else + $title = ucwords( str_replace( '_', ' ', $section_name ) ); + + $class = ( $section_name == $section ) ? ' class="current"' : ''; + $href = add_query_arg( array('tab' => $tab, 'section' => $section_name) ); + $href = esc_url($href); + $san_section = esc_attr( $section_name ); + echo "\t
    • $title
    • \n"; + } + echo "
    \n"; + echo "
    \n"; + ?> +
    + download_link) && ( current_user_can('install_plugins') || current_user_can('update_plugins') ) ) : ?> +

    + ' . __('Install Now') . ''; + break; + case 'update_available': + if ( $status['url'] ) + echo '' . __('Install Update Now') .''; + break; + case 'newer_installed': + echo '' . sprintf(__('Newer Version (%s) Installed'), $status['version']) . ''; + break; + case 'latest_installed': + echo '' . __('Latest Version Installed') . ''; + break; + } + ?> +

    + +

    +
      +version) ) : ?> +
    • version ?>
    • +author) ) : ?> +
    • author, '_blank') ?>
    • +last_updated) ) : ?> +
    • last_updated)) ) ?>
    • +requires) ) : ?> +
    • requires) ?>
    • +tested) ) : ?> +
    • tested ?>
    • +downloaded) ) : ?> +
    • downloaded), number_format_i18n($api->downloaded)) ?>
    • +slug) && empty($api->external) ) : ?> +
    • +homepage) ) : ?> +
    • + +
    + rating) ) : ?> +

    +
    +
    +
    + num_ratings), number_format_i18n($api->num_ratings)); ?> + +
    +
    + tested) && version_compare( substr($GLOBALS['wp_version'], 0, strlen($api->tested)), $api->tested, '>') ) + echo '

    ' . __('Warning: This plugin has not been tested with your current version of WordPress.') . '

    '; + + else if ( !empty($api->requires) && version_compare( substr($GLOBALS['wp_version'], 0, strlen($api->requires)), $api->requires, '<') ) + echo '

    ' . __('Warning: This plugin has not been marked as compatible with your version of WordPress.') . '

    '; + + foreach ( (array)$api->sections as $section_name => $content ) { + + if ( isset( $plugins_section_titles[ $section_name ] ) ) + $title = $plugins_section_titles[ $section_name ]; + else + $title = ucwords( str_replace( '_', ' ', $section_name ) ); + + $content = links_add_base_url($content, 'http://wordpress.org/extend/plugins/' . $api->slug . '/'); + $content = links_add_target($content, '_blank'); + + $san_section = esc_attr( $section_name ); + + $display = ( $section_name == $section ) ? 'block' : 'none'; + + echo "\t
    \n"; + echo "\t\t

    $title

    "; + echo $content; + echo "\t
    \n"; + } + echo "
    \n"; + + iframe_footer(); + exit; +} +add_action('install_plugins_pre_plugin-information', 'install_plugin_information'); diff --git a/wp-admin/includes/plugin.php b/wp-admin/includes/plugin.php new file mode 100644 index 0000000..083b5c4 --- /dev/null +++ b/wp-admin/includes/plugin.php @@ -0,0 +1,1749 @@ + + * /* + * Plugin Name: Name of Plugin + * Plugin URI: Link to plugin information + * Description: Plugin Description + * Author: Plugin author's name + * Author URI: Link to the author's web site + * Version: Must be set in the plugin for WordPress 2.3+ + * Text Domain: Optional. Unique identifier, should be same as the one used in + * plugin_text_domain() + * Domain Path: Optional. Only useful if the translations are located in a + * folder above the plugin's base path. For example, if .mo files are + * located in the locale folder then Domain Path will be "/locale/" and + * must have the first slash. Defaults to the base folder the plugin is + * located in. + * Network: Optional. Specify "Network: true" to require that a plugin is activated + * across all sites in an installation. This will prevent a plugin from being + * activated on a single site when Multisite is enabled. + * * / # Remove the space to close comment + * + * + * Plugin data returned array contains the following: + * 'Name' - Name of the plugin, must be unique. + * 'Title' - Title of the plugin and the link to the plugin's web site. + * 'Description' - Description of what the plugin does and/or notes + * from the author. + * 'Author' - The author's name + * 'AuthorURI' - The authors web site address. + * 'Version' - The plugin version number. + * 'PluginURI' - Plugin web site address. + * 'TextDomain' - Plugin's text domain for localization. + * 'DomainPath' - Plugin's relative directory path to .mo files. + * 'Network' - Boolean. Whether the plugin can only be activated network wide. + * + * Some users have issues with opening large files and manipulating the contents + * for want is usually the first 1kiB or 2kiB. This function stops pulling in + * the plugin contents when it has all of the required plugin data. + * + * The first 8kiB of the file will be pulled in and if the plugin data is not + * within that first 8kiB, then the plugin author should correct their plugin + * and move the plugin data headers to the top. + * + * The plugin file is assumed to have permissions to allow for scripts to read + * the file. This is not checked however and the file is only opened for + * reading. + * + * @link http://trac.wordpress.org/ticket/5651 Previous Optimizations. + * @link http://trac.wordpress.org/ticket/7372 Further and better Optimizations. + * @since 1.5.0 + * + * @param string $plugin_file Path to the plugin file + * @param bool $markup Optional. If the returned data should have HTML markup applied. Defaults to true. + * @param bool $translate Optional. If the returned data should be translated. Defaults to true. + * @return array See above for description. + */ +function get_plugin_data( $plugin_file, $markup = true, $translate = true ) { + + $default_headers = array( + 'Name' => 'Plugin Name', + 'PluginURI' => 'Plugin URI', + 'Version' => 'Version', + 'Description' => 'Description', + 'Author' => 'Author', + 'AuthorURI' => 'Author URI', + 'TextDomain' => 'Text Domain', + 'DomainPath' => 'Domain Path', + 'Network' => 'Network', + // Site Wide Only is deprecated in favor of Network. + '_sitewide' => 'Site Wide Only', + ); + + $plugin_data = get_file_data( $plugin_file, $default_headers, 'plugin' ); + + // Site Wide Only is the old header for Network + if ( ! $plugin_data['Network'] && $plugin_data['_sitewide'] ) { + _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The %1$s plugin header is deprecated. Use %2$s instead.' ), 'Site Wide Only: true', 'Network: true' ) ); + $plugin_data['Network'] = $plugin_data['_sitewide']; + } + $plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) ); + unset( $plugin_data['_sitewide'] ); + + if ( $markup || $translate ) { + $plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate ); + } else { + $plugin_data['Title'] = $plugin_data['Name']; + $plugin_data['AuthorName'] = $plugin_data['Author']; + } + + return $plugin_data; +} + +/** + * Sanitizes plugin data, optionally adds markup, optionally translates. + * + * @since 2.7.0 + * @access private + * @see get_plugin_data() + */ +function _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup = true, $translate = true ) { + + // Translate fields + if ( $translate ) { + if ( $textdomain = $plugin_data['TextDomain'] ) { + if ( $plugin_data['DomainPath'] ) + load_plugin_textdomain( $textdomain, false, dirname( $plugin_file ) . $plugin_data['DomainPath'] ); + else + load_plugin_textdomain( $textdomain, false, dirname( $plugin_file ) ); + } elseif ( in_array( basename( $plugin_file ), array( 'hello.php', 'akismet.php' ) ) ) { + $textdomain = 'default'; + } + if ( $textdomain ) { + foreach ( array( 'Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version' ) as $field ) + $plugin_data[ $field ] = translate( $plugin_data[ $field ], $textdomain ); + } + } + + // Sanitize fields + $allowed_tags = $allowed_tags_in_links = array( + 'abbr' => array( 'title' => true ), + 'acronym' => array( 'title' => true ), + 'code' => true, + 'em' => true, + 'strong' => true, + ); + $allowed_tags['a'] = array( 'href' => true, 'title' => true ); + + // Name is marked up inside tags. Don't allow these. + // Author is too, but some plugins have used here (omitting Author URI). + $plugin_data['Name'] = wp_kses( $plugin_data['Name'], $allowed_tags_in_links ); + $plugin_data['Author'] = wp_kses( $plugin_data['Author'], $allowed_tags ); + + $plugin_data['Description'] = wp_kses( $plugin_data['Description'], $allowed_tags ); + $plugin_data['Version'] = wp_kses( $plugin_data['Version'], $allowed_tags ); + + $plugin_data['PluginURI'] = esc_url( $plugin_data['PluginURI'] ); + $plugin_data['AuthorURI'] = esc_url( $plugin_data['AuthorURI'] ); + + $plugin_data['Title'] = $plugin_data['Name']; + $plugin_data['AuthorName'] = $plugin_data['Author']; + + // Apply markup + if ( $markup ) { + if ( $plugin_data['PluginURI'] && $plugin_data['Name'] ) + $plugin_data['Title'] = '' . $plugin_data['Name'] . ''; + + if ( $plugin_data['AuthorURI'] && $plugin_data['Author'] ) + $plugin_data['Author'] = '' . $plugin_data['Author'] . ''; + + $plugin_data['Description'] = wptexturize( $plugin_data['Description'] ); + + if ( $plugin_data['Author'] ) + $plugin_data['Description'] .= ' ' . sprintf( __('By %s.'), $plugin_data['Author'] ) . ''; + } + + return $plugin_data; +} + +/** + * Get a list of a plugin's files. + * + * @since 2.8.0 + * + * @param string $plugin Plugin ID + * @return array List of files relative to the plugin root. + */ +function get_plugin_files($plugin) { + $plugin_file = WP_PLUGIN_DIR . '/' . $plugin; + $dir = dirname($plugin_file); + $plugin_files = array($plugin); + if ( is_dir($dir) && $dir != WP_PLUGIN_DIR ) { + $plugins_dir = @ opendir( $dir ); + if ( $plugins_dir ) { + while (($file = readdir( $plugins_dir ) ) !== false ) { + if ( substr($file, 0, 1) == '.' ) + continue; + if ( is_dir( $dir . '/' . $file ) ) { + $plugins_subdir = @ opendir( $dir . '/' . $file ); + if ( $plugins_subdir ) { + while (($subfile = readdir( $plugins_subdir ) ) !== false ) { + if ( substr($subfile, 0, 1) == '.' ) + continue; + $plugin_files[] = plugin_basename("$dir/$file/$subfile"); + } + @closedir( $plugins_subdir ); + } + } else { + if ( plugin_basename("$dir/$file") != $plugin ) + $plugin_files[] = plugin_basename("$dir/$file"); + } + } + @closedir( $plugins_dir ); + } + } + + return $plugin_files; +} + +/** + * Check the plugins directory and retrieve all plugin files with plugin data. + * + * WordPress only supports plugin files in the base plugins directory + * (wp-content/plugins) and in one directory above the plugins directory + * (wp-content/plugins/my-plugin). The file it looks for has the plugin data and + * must be found in those two locations. It is recommended that do keep your + * plugin files in directories. + * + * The file with the plugin data is the file that will be included and therefore + * needs to have the main execution for the plugin. This does not mean + * everything must be contained in the file and it is recommended that the file + * be split for maintainability. Keep everything in one file for extreme + * optimization purposes. + * + * @since 1.5.0 + * + * @param string $plugin_folder Optional. Relative path to single plugin folder. + * @return array Key is the plugin file path and the value is an array of the plugin data. + */ +function get_plugins($plugin_folder = '') { + + if ( ! $cache_plugins = wp_cache_get('plugins', 'plugins') ) + $cache_plugins = array(); + + if ( isset($cache_plugins[ $plugin_folder ]) ) + return $cache_plugins[ $plugin_folder ]; + + $wp_plugins = array (); + $plugin_root = WP_PLUGIN_DIR; + if ( !empty($plugin_folder) ) + $plugin_root .= $plugin_folder; + + // Files in wp-content/plugins directory + $plugins_dir = @ opendir( $plugin_root); + $plugin_files = array(); + if ( $plugins_dir ) { + while (($file = readdir( $plugins_dir ) ) !== false ) { + if ( substr($file, 0, 1) == '.' ) + continue; + if ( is_dir( $plugin_root.'/'.$file ) ) { + $plugins_subdir = @ opendir( $plugin_root.'/'.$file ); + if ( $plugins_subdir ) { + while (($subfile = readdir( $plugins_subdir ) ) !== false ) { + if ( substr($subfile, 0, 1) == '.' ) + continue; + if ( substr($subfile, -4) == '.php' ) + $plugin_files[] = "$file/$subfile"; + } + closedir( $plugins_subdir ); + } + } else { + if ( substr($file, -4) == '.php' ) + $plugin_files[] = $file; + } + } + closedir( $plugins_dir ); + } + + if ( empty($plugin_files) ) + return $wp_plugins; + + foreach ( $plugin_files as $plugin_file ) { + if ( !is_readable( "$plugin_root/$plugin_file" ) ) + continue; + + $plugin_data = get_plugin_data( "$plugin_root/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. + + if ( empty ( $plugin_data['Name'] ) ) + continue; + + $wp_plugins[plugin_basename( $plugin_file )] = $plugin_data; + } + + uasort( $wp_plugins, '_sort_uname_callback' ); + + $cache_plugins[ $plugin_folder ] = $wp_plugins; + wp_cache_set('plugins', $cache_plugins, 'plugins'); + + return $wp_plugins; +} + +/** + * Check the mu-plugins directory and retrieve all mu-plugin files with any plugin data. + * + * WordPress only includes mu-plugin files in the base mu-plugins directory (wp-content/mu-plugins). + * + * @since 3.0.0 + * @return array Key is the mu-plugin file path and the value is an array of the mu-plugin data. + */ +function get_mu_plugins() { + $wp_plugins = array(); + // Files in wp-content/mu-plugins directory + $plugin_files = array(); + + if ( ! is_dir( WPMU_PLUGIN_DIR ) ) + return $wp_plugins; + if ( $plugins_dir = @ opendir( WPMU_PLUGIN_DIR ) ) { + while ( ( $file = readdir( $plugins_dir ) ) !== false ) { + if ( substr( $file, -4 ) == '.php' ) + $plugin_files[] = $file; + } + } else { + return $wp_plugins; + } + + @closedir( $plugins_dir ); + + if ( empty($plugin_files) ) + return $wp_plugins; + + foreach ( $plugin_files as $plugin_file ) { + if ( !is_readable( WPMU_PLUGIN_DIR . "/$plugin_file" ) ) + continue; + + $plugin_data = get_plugin_data( WPMU_PLUGIN_DIR . "/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. + + if ( empty ( $plugin_data['Name'] ) ) + $plugin_data['Name'] = $plugin_file; + + $wp_plugins[ $plugin_file ] = $plugin_data; + } + + if ( isset( $wp_plugins['index.php'] ) && filesize( WPMU_PLUGIN_DIR . '/index.php') <= 30 ) // silence is golden + unset( $wp_plugins['index.php'] ); + + uasort( $wp_plugins, '_sort_uname_callback' ); + + return $wp_plugins; +} + +/** + * Callback to sort array by a 'Name' key. + * + * @since 3.1.0 + * @access private + */ +function _sort_uname_callback( $a, $b ) { + return strnatcasecmp( $a['Name'], $b['Name'] ); +} + +/** + * Check the wp-content directory and retrieve all drop-ins with any plugin data. + * + * @since 3.0.0 + * @return array Key is the file path and the value is an array of the plugin data. + */ +function get_dropins() { + $dropins = array(); + $plugin_files = array(); + + $_dropins = _get_dropins(); + + // These exist in the wp-content directory + if ( $plugins_dir = @ opendir( WP_CONTENT_DIR ) ) { + while ( ( $file = readdir( $plugins_dir ) ) !== false ) { + if ( isset( $_dropins[ $file ] ) ) + $plugin_files[] = $file; + } + } else { + return $dropins; + } + + @closedir( $plugins_dir ); + + if ( empty($plugin_files) ) + return $dropins; + + foreach ( $plugin_files as $plugin_file ) { + if ( !is_readable( WP_CONTENT_DIR . "/$plugin_file" ) ) + continue; + $plugin_data = get_plugin_data( WP_CONTENT_DIR . "/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. + if ( empty( $plugin_data['Name'] ) ) + $plugin_data['Name'] = $plugin_file; + $dropins[ $plugin_file ] = $plugin_data; + } + + uksort( $dropins, 'strnatcasecmp' ); + + return $dropins; +} + +/** + * Returns drop-ins that WordPress uses. + * + * Includes Multisite drop-ins only when is_multisite() + * + * @since 3.0.0 + * @return array Key is file name. The value is an array, with the first value the + * purpose of the drop-in and the second value the name of the constant that must be + * true for the drop-in to be used, or true if no constant is required. + */ +function _get_dropins() { + $dropins = array( + 'advanced-cache.php' => array( __( 'Advanced caching plugin.' ), 'WP_CACHE' ), // WP_CACHE + 'db.php' => array( __( 'Custom database class.' ), true ), // auto on load + 'db-error.php' => array( __( 'Custom database error message.' ), true ), // auto on error + 'install.php' => array( __( 'Custom install script.' ), true ), // auto on install + 'maintenance.php' => array( __( 'Custom maintenance message.' ), true ), // auto on maintenance + 'object-cache.php' => array( __( 'External object cache.' ), true ), // auto on load + ); + + if ( is_multisite() ) { + $dropins['sunrise.php' ] = array( __( 'Executed before Multisite is loaded.' ), 'SUNRISE' ); // SUNRISE + $dropins['blog-deleted.php' ] = array( __( 'Custom site deleted message.' ), true ); // auto on deleted blog + $dropins['blog-inactive.php' ] = array( __( 'Custom site inactive message.' ), true ); // auto on inactive blog + $dropins['blog-suspended.php'] = array( __( 'Custom site suspended message.' ), true ); // auto on archived or spammed blog + } + + return $dropins; +} + +/** + * Check whether the plugin is active by checking the active_plugins list. + * + * @since 2.5.0 + * + * @param string $plugin Base plugin path from plugins directory. + * @return bool True, if in the active plugins list. False, not in the list. + */ +function is_plugin_active( $plugin ) { + return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || is_plugin_active_for_network( $plugin ); +} + +/** + * Check whether the plugin is inactive. + * + * Reverse of is_plugin_active(). Used as a callback. + * + * @since 3.1.0 + * @see is_plugin_active() + * + * @param string $plugin Base plugin path from plugins directory. + * @return bool True if inactive. False if active. + */ +function is_plugin_inactive( $plugin ) { + return ! is_plugin_active( $plugin ); +} + +/** + * Check whether the plugin is active for the entire network. + * + * @since 3.0.0 + * + * @param string $plugin Base plugin path from plugins directory. + * @return bool True, if active for the network, otherwise false. + */ +function is_plugin_active_for_network( $plugin ) { + if ( !is_multisite() ) + return false; + + $plugins = get_site_option( 'active_sitewide_plugins'); + if ( isset($plugins[$plugin]) ) + return true; + + return false; +} + +/** + * Checks for "Network: true" in the plugin header to see if this should + * be activated only as a network wide plugin. The plugin would also work + * when Multisite is not enabled. + * + * Checks for "Site Wide Only: true" for backwards compatibility. + * + * @since 3.0.0 + * + * @param string $plugin Plugin to check + * @return bool True if plugin is network only, false otherwise. + */ +function is_network_only_plugin( $plugin ) { + $plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ); + if ( $plugin_data ) + return $plugin_data['Network']; + return false; +} + +/** + * Attempts activation of plugin in a "sandbox" and redirects on success. + * + * A plugin that is already activated will not attempt to be activated again. + * + * The way it works is by setting the redirection to the error before trying to + * include the plugin file. If the plugin fails, then the redirection will not + * be overwritten with the success message. Also, the options will not be + * updated and the activation hook will not be called on plugin error. + * + * It should be noted that in no way the below code will actually prevent errors + * within the file. The code should not be used elsewhere to replicate the + * "sandbox", which uses redirection to work. + * {@source 13 1} + * + * If any errors are found or text is outputted, then it will be captured to + * ensure that the success redirection will update the error redirection. + * + * @since 2.5.0 + * + * @param string $plugin Plugin path to main plugin file with plugin data. + * @param string $redirect Optional. URL to redirect to. + * @param bool $network_wide Whether to enable the plugin for all sites in the + * network or just the current site. Multisite only. Default is false. + * @param bool $silent Prevent calling activation hooks. Optional, default is false. + * @return WP_Error|null WP_Error on invalid file or null on success. + */ +function activate_plugin( $plugin, $redirect = '', $network_wide = false, $silent = false ) { + $plugin = plugin_basename( trim( $plugin ) ); + + if ( is_multisite() && ( $network_wide || is_network_only_plugin($plugin) ) ) { + $network_wide = true; + $current = get_site_option( 'active_sitewide_plugins', array() ); + $_GET['networkwide'] = 1; // Back compat for plugins looking for this value. + } else { + $current = get_option( 'active_plugins', array() ); + } + + $valid = validate_plugin($plugin); + if ( is_wp_error($valid) ) + return $valid; + + if ( !in_array($plugin, $current) ) { + if ( !empty($redirect) ) + wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); // we'll override this later if the plugin can be included without fatal error + ob_start(); + include_once(WP_PLUGIN_DIR . '/' . $plugin); + + if ( ! $silent ) { + do_action( 'activate_plugin', $plugin, $network_wide ); + do_action( 'activate_' . $plugin, $network_wide ); + } + + if ( $network_wide ) { + $current[$plugin] = time(); + update_site_option( 'active_sitewide_plugins', $current ); + } else { + $current[] = $plugin; + sort($current); + update_option('active_plugins', $current); + } + + if ( ! $silent ) { + do_action( 'activated_plugin', $plugin, $network_wide ); + } + + if ( ob_get_length() > 0 ) { + $output = ob_get_clean(); + return new WP_Error('unexpected_output', __('The plugin generated unexpected output.'), $output); + } + ob_end_clean(); + } + + return null; +} + +/** + * Deactivate a single plugin or multiple plugins. + * + * The deactivation hook is disabled by the plugin upgrader by using the $silent + * parameter. + * + * @since 2.5.0 + * + * @param string|array $plugins Single plugin or list of plugins to deactivate. + * @param mixed $network_wide Whether to deactivate the plugin for all sites in the network. + * A value of null (the default) will deactivate plugins for both the site and the network. + * @param bool $silent Prevent calling deactivation hooks. Default is false. + */ +function deactivate_plugins( $plugins, $silent = false, $network_wide = null ) { + if ( is_multisite() ) + $network_current = get_site_option( 'active_sitewide_plugins', array() ); + $current = get_option( 'active_plugins', array() ); + $do_blog = $do_network = false; + + foreach ( (array) $plugins as $plugin ) { + $plugin = plugin_basename( trim( $plugin ) ); + if ( ! is_plugin_active($plugin) ) + continue; + + $network_deactivating = false !== $network_wide && is_plugin_active_for_network( $plugin ); + + if ( ! $silent ) + do_action( 'deactivate_plugin', $plugin, $network_deactivating ); + + if ( false !== $network_wide ) { + if ( is_plugin_active_for_network( $plugin ) ) { + $do_network = true; + unset( $network_current[ $plugin ] ); + } elseif ( $network_wide ) { + continue; + } + } + + if ( true !== $network_wide ) { + $key = array_search( $plugin, $current ); + if ( false !== $key ) { + $do_blog = true; + array_splice( $current, $key, 1 ); + } + } + + if ( ! $silent ) { + do_action( 'deactivate_' . $plugin, $network_deactivating ); + do_action( 'deactivated_plugin', $plugin, $network_deactivating ); + } + } + + if ( $do_blog ) + update_option('active_plugins', $current); + if ( $do_network ) + update_site_option( 'active_sitewide_plugins', $network_current ); +} + +/** + * Activate multiple plugins. + * + * When WP_Error is returned, it does not mean that one of the plugins had + * errors. It means that one or more of the plugins file path was invalid. + * + * The execution will be halted as soon as one of the plugins has an error. + * + * @since 2.6.0 + * + * @param string|array $plugins + * @param string $redirect Redirect to page after successful activation. + * @param bool $network_wide Whether to enable the plugin for all sites in the network. + * @param bool $silent Prevent calling activation hooks. Default is false. + * @return bool|WP_Error True when finished or WP_Error if there were errors during a plugin activation. + */ +function activate_plugins( $plugins, $redirect = '', $network_wide = false, $silent = false ) { + if ( !is_array($plugins) ) + $plugins = array($plugins); + + $errors = array(); + foreach ( $plugins as $plugin ) { + if ( !empty($redirect) ) + $redirect = add_query_arg('plugin', $plugin, $redirect); + $result = activate_plugin($plugin, $redirect, $network_wide, $silent); + if ( is_wp_error($result) ) + $errors[$plugin] = $result; + } + + if ( !empty($errors) ) + return new WP_Error('plugins_invalid', __('One of the plugins is invalid.'), $errors); + + return true; +} + +/** + * Remove directory and files of a plugin for a single or list of plugin(s). + * + * If the plugins parameter list is empty, false will be returned. True when + * completed. + * + * @since 2.6.0 + * + * @param array $plugins List of plugin + * @param string $redirect Redirect to page when complete. + * @return mixed + */ +function delete_plugins($plugins, $redirect = '' ) { + global $wp_filesystem; + + if ( empty($plugins) ) + return false; + + $checked = array(); + foreach( $plugins as $plugin ) + $checked[] = 'checked[]=' . $plugin; + + ob_start(); + $url = wp_nonce_url('plugins.php?action=delete-selected&verify-delete=1&' . implode('&', $checked), 'bulk-plugins'); + if ( false === ($credentials = request_filesystem_credentials($url)) ) { + $data = ob_get_contents(); + ob_end_clean(); + if ( ! empty($data) ){ + include_once( ABSPATH . 'wp-admin/admin-header.php'); + echo $data; + include( ABSPATH . 'wp-admin/admin-footer.php'); + exit; + } + return; + } + + if ( ! WP_Filesystem($credentials) ) { + request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again + $data = ob_get_contents(); + ob_end_clean(); + if ( ! empty($data) ){ + include_once( ABSPATH . 'wp-admin/admin-header.php'); + echo $data; + include( ABSPATH . 'wp-admin/admin-footer.php'); + exit; + } + return; + } + + if ( ! is_object($wp_filesystem) ) + return new WP_Error('fs_unavailable', __('Could not access filesystem.')); + + if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) + return new WP_Error('fs_error', __('Filesystem error.'), $wp_filesystem->errors); + + //Get the base plugin folder + $plugins_dir = $wp_filesystem->wp_plugins_dir(); + if ( empty($plugins_dir) ) + return new WP_Error('fs_no_plugins_dir', __('Unable to locate WordPress Plugin directory.')); + + $plugins_dir = trailingslashit( $plugins_dir ); + + $errors = array(); + + foreach( $plugins as $plugin_file ) { + // Run Uninstall hook + if ( is_uninstallable_plugin( $plugin_file ) ) + uninstall_plugin($plugin_file); + + $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin_file) ); + // If plugin is in its own directory, recursively delete the directory. + if ( strpos($plugin_file, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory separator AND that its not the root plugin folder + $deleted = $wp_filesystem->delete($this_plugin_dir, true); + else + $deleted = $wp_filesystem->delete($plugins_dir . $plugin_file); + + if ( ! $deleted ) + $errors[] = $plugin_file; + } + + if ( ! empty($errors) ) + return new WP_Error('could_not_remove_plugin', sprintf(__('Could not fully remove the plugin(s) %s.'), implode(', ', $errors)) ); + + // Force refresh of plugin update information + if ( $current = get_site_transient('update_plugins') ) { + unset( $current->response[ $plugin_file ] ); + set_site_transient('update_plugins', $current); + } + + return true; +} + +/** + * Validate active plugins + * + * Validate all active plugins, deactivates invalid and + * returns an array of deactivated ones. + * + * @since 2.5.0 + * @return array invalid plugins, plugin as key, error as value + */ +function validate_active_plugins() { + $plugins = get_option( 'active_plugins', array() ); + // validate vartype: array + if ( ! is_array( $plugins ) ) { + update_option( 'active_plugins', array() ); + $plugins = array(); + } + + if ( is_multisite() && is_super_admin() ) { + $network_plugins = (array) get_site_option( 'active_sitewide_plugins', array() ); + $plugins = array_merge( $plugins, array_keys( $network_plugins ) ); + } + + if ( empty( $plugins ) ) + return; + + $invalid = array(); + + // invalid plugins get deactivated + foreach ( $plugins as $plugin ) { + $result = validate_plugin( $plugin ); + if ( is_wp_error( $result ) ) { + $invalid[$plugin] = $result; + deactivate_plugins( $plugin, true ); + } + } + return $invalid; +} + +/** + * Validate the plugin path. + * + * Checks that the file exists and {@link validate_file() is valid file}. + * + * @since 2.5.0 + * + * @param string $plugin Plugin Path + * @return WP_Error|int 0 on success, WP_Error on failure. + */ +function validate_plugin($plugin) { + if ( validate_file($plugin) ) + return new WP_Error('plugin_invalid', __('Invalid plugin path.')); + if ( ! file_exists(WP_PLUGIN_DIR . '/' . $plugin) ) + return new WP_Error('plugin_not_found', __('Plugin file does not exist.')); + + $installed_plugins = get_plugins(); + if ( ! isset($installed_plugins[$plugin]) ) + return new WP_Error('no_plugin_header', __('The plugin does not have a valid header.')); + return 0; +} + +/** + * Whether the plugin can be uninstalled. + * + * @since 2.7.0 + * + * @param string $plugin Plugin path to check. + * @return bool Whether plugin can be uninstalled. + */ +function is_uninstallable_plugin($plugin) { + $file = plugin_basename($plugin); + + $uninstallable_plugins = (array) get_option('uninstall_plugins'); + if ( isset( $uninstallable_plugins[$file] ) || file_exists( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ) ) + return true; + + return false; +} + +/** + * Uninstall a single plugin. + * + * Calls the uninstall hook, if it is available. + * + * @since 2.7.0 + * + * @param string $plugin Relative plugin path from Plugin Directory. + */ +function uninstall_plugin($plugin) { + $file = plugin_basename($plugin); + + $uninstallable_plugins = (array) get_option('uninstall_plugins'); + if ( file_exists( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ) ) { + if ( isset( $uninstallable_plugins[$file] ) ) { + unset($uninstallable_plugins[$file]); + update_option('uninstall_plugins', $uninstallable_plugins); + } + unset($uninstallable_plugins); + + define('WP_UNINSTALL_PLUGIN', $file); + include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php'; + + return true; + } + + if ( isset( $uninstallable_plugins[$file] ) ) { + $callable = $uninstallable_plugins[$file]; + unset($uninstallable_plugins[$file]); + update_option('uninstall_plugins', $uninstallable_plugins); + unset($uninstallable_plugins); + + include WP_PLUGIN_DIR . '/' . $file; + + add_action( 'uninstall_' . $file, $callable ); + do_action( 'uninstall_' . $file ); + } +} + +// +// Menu +// + +/** + * Add a top level menu page + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * @param string $icon_url The url to the icon to be used for this menu + * @param int $position The position in the menu order this one should appear + * + * @return string The resulting page's hook_suffix + */ +function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = null ) { + global $menu, $admin_page_hooks, $_registered_pages, $_parent_pages; + + $menu_slug = plugin_basename( $menu_slug ); + + $admin_page_hooks[$menu_slug] = sanitize_title( $menu_title ); + + $hookname = get_plugin_page_hookname( $menu_slug, '' ); + + if ( !empty( $function ) && !empty( $hookname ) && current_user_can( $capability ) ) + add_action( $hookname, $function ); + + if ( empty($icon_url) ) + $icon_url = esc_url( admin_url( 'images/generic.png' ) ); + elseif ( is_ssl() && 0 === strpos($icon_url, 'http://') ) + $icon_url = 'https://' . substr($icon_url, 7); + + $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url ); + + if ( null === $position ) + $menu[] = $new_menu; + else + $menu[$position] = $new_menu; + + $_registered_pages[$hookname] = true; + + // No parent as top level + $_parent_pages[$menu_slug] = false; + + return $hookname; +} + +/** + * Add a top level menu page in the 'objects' section + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * @param string $icon_url The url to the icon to be used for this menu + * + * @return string The resulting page's hook_suffix + */ +function add_object_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '') { + global $_wp_last_object_menu; + + $_wp_last_object_menu++; + + return add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $_wp_last_object_menu); +} + +/** + * Add a top level menu page in the 'utility' section + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * @param string $icon_url The url to the icon to be used for this menu + * + * @return string The resulting page's hook_suffix + */ +function add_utility_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '') { + global $_wp_last_utility_menu; + + $_wp_last_utility_menu++; + + return add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $_wp_last_utility_menu); +} + +/** + * Add a sub menu page + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $parent_slug The slug name for the parent menu (or the file name of a standard WordPress admin page) + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + global $submenu; + global $menu; + global $_wp_real_parent_file; + global $_wp_submenu_nopriv; + global $_registered_pages; + global $_parent_pages; + + $menu_slug = plugin_basename( $menu_slug ); + $parent_slug = plugin_basename( $parent_slug); + + if ( isset( $_wp_real_parent_file[$parent_slug] ) ) + $parent_slug = $_wp_real_parent_file[$parent_slug]; + + if ( !current_user_can( $capability ) ) { + $_wp_submenu_nopriv[$parent_slug][$menu_slug] = true; + return false; + } + + // If the parent doesn't already have a submenu, add a link to the parent + // as the first item in the submenu. If the submenu file is the same as the + // parent file someone is trying to link back to the parent manually. In + // this case, don't automatically add a link back to avoid duplication. + if (!isset( $submenu[$parent_slug] ) && $menu_slug != $parent_slug ) { + foreach ( (array)$menu as $parent_menu ) { + if ( $parent_menu[2] == $parent_slug && current_user_can( $parent_menu[1] ) ) + $submenu[$parent_slug][] = $parent_menu; + } + } + + $submenu[$parent_slug][] = array ( $menu_title, $capability, $menu_slug, $page_title ); + + $hookname = get_plugin_page_hookname( $menu_slug, $parent_slug); + if (!empty ( $function ) && !empty ( $hookname )) + add_action( $hookname, $function ); + + $_registered_pages[$hookname] = true; + // backwards-compatibility for plugins using add_management page. See wp-admin/admin.php for redirect from edit.php to tools.php + if ( 'tools.php' == $parent_slug ) + $_registered_pages[get_plugin_page_hookname( $menu_slug, 'edit.php')] = true; + + // No parent as top level + $_parent_pages[$menu_slug] = $parent_slug; + + return $hookname; +} + +/** + * Add sub menu page to the tools main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_management_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'tools.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the options main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'options-general.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the themes main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'themes.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the plugins main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_plugins_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'plugins.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the Users/Profile main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_users_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + if ( current_user_can('edit_users') ) + $parent = 'users.php'; + else + $parent = 'profile.php'; + return add_submenu_page( $parent, $page_title, $menu_title, $capability, $menu_slug, $function ); +} +/** + * Add sub menu page to the Dashboard main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'index.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the posts main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'edit.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the media main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_media_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'upload.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the links main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_links_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'link-manager.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the pages main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. +*/ +function add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'edit.php?post_type=page', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the comments main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. +*/ +function add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'edit-comments.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Remove a top level admin menu + * + * @since 3.1.0 + * + * @param string $menu_slug The slug of the menu + * @return array|bool The removed menu on success, False if not found + */ +function remove_menu_page( $menu_slug ) { + global $menu; + + foreach ( $menu as $i => $item ) { + if ( $menu_slug == $item[2] ) { + unset( $menu[$i] ); + return $item; + } + } + + return false; +} + +/** + * Remove an admin submenu + * + * @since 3.1.0 + * + * @param string $menu_slug The slug for the parent menu + * @param string $submenu_slug The slug of the submenu + * @return array|bool The removed submenu on success, False if not found + */ +function remove_submenu_page( $menu_slug, $submenu_slug ) { + global $submenu; + + if ( !isset( $submenu[$menu_slug] ) ) + return false; + + foreach ( $submenu[$menu_slug] as $i => $item ) { + if ( $submenu_slug == $item[2] ) { + unset( $submenu[$menu_slug][$i] ); + return $item; + } + } + + return false; +} + +/** + * Get the url to access a particular menu page based on the slug it was registered with. + * + * If the slug hasn't been registered properly no url will be returned + * + * @since 3.0 + * + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param bool $echo Whether or not to echo the url - default is true + * @return string the url + */ +function menu_page_url($menu_slug, $echo = true) { + global $_parent_pages; + + if ( isset( $_parent_pages[$menu_slug] ) ) { + $parent_slug = $_parent_pages[$menu_slug]; + if ( $parent_slug && ! isset( $_parent_pages[$parent_slug] ) ) { + $url = admin_url( add_query_arg( 'page', $menu_slug, $parent_slug ) ); + } else { + $url = admin_url( 'admin.php?page=' . $menu_slug ); + } + } else { + $url = ''; + } + + $url = esc_url($url); + + if ( $echo ) + echo $url; + + return $url; +} + +// +// Pluggable Menu Support -- Private +// + +function get_admin_page_parent( $parent = '' ) { + global $parent_file; + global $menu; + global $submenu; + global $pagenow; + global $typenow; + global $plugin_page; + global $_wp_real_parent_file; + global $_wp_menu_nopriv; + global $_wp_submenu_nopriv; + + if ( !empty ( $parent ) && 'admin.php' != $parent ) { + if ( isset( $_wp_real_parent_file[$parent] ) ) + $parent = $_wp_real_parent_file[$parent]; + return $parent; + } + + /* + if ( !empty ( $parent_file ) ) { + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + + return $parent_file; + } + */ + + if ( $pagenow == 'admin.php' && isset( $plugin_page ) ) { + foreach ( (array)$menu as $parent_menu ) { + if ( $parent_menu[2] == $plugin_page ) { + $parent_file = $plugin_page; + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + return $parent_file; + } + } + if ( isset( $_wp_menu_nopriv[$plugin_page] ) ) { + $parent_file = $plugin_page; + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + return $parent_file; + } + } + + if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) ) { + $parent_file = $pagenow; + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + return $parent_file; + } + + foreach (array_keys( (array)$submenu ) as $parent) { + foreach ( $submenu[$parent] as $submenu_array ) { + if ( isset( $_wp_real_parent_file[$parent] ) ) + $parent = $_wp_real_parent_file[$parent]; + if ( !empty($typenow) && ($submenu_array[2] == "$pagenow?post_type=$typenow") ) { + $parent_file = $parent; + return $parent; + } elseif ( $submenu_array[2] == $pagenow && empty($typenow) && ( empty($parent_file) || false === strpos($parent_file, '?') ) ) { + $parent_file = $parent; + return $parent; + } else + if ( isset( $plugin_page ) && ($plugin_page == $submenu_array[2] ) ) { + $parent_file = $parent; + return $parent; + } + } + } + + if ( empty($parent_file) ) + $parent_file = ''; + return ''; +} + +function get_admin_page_title() { + global $title; + global $menu; + global $submenu; + global $pagenow; + global $plugin_page; + global $typenow; + + if ( ! empty ( $title ) ) + return $title; + + $hook = get_plugin_page_hook( $plugin_page, $pagenow ); + + $parent = $parent1 = get_admin_page_parent(); + + if ( empty ( $parent) ) { + foreach ( (array)$menu as $menu_array ) { + if ( isset( $menu_array[3] ) ) { + if ( $menu_array[2] == $pagenow ) { + $title = $menu_array[3]; + return $menu_array[3]; + } else + if ( isset( $plugin_page ) && ($plugin_page == $menu_array[2] ) && ($hook == $menu_array[3] ) ) { + $title = $menu_array[3]; + return $menu_array[3]; + } + } else { + $title = $menu_array[0]; + return $title; + } + } + } else { + foreach ( array_keys( $submenu ) as $parent ) { + foreach ( $submenu[$parent] as $submenu_array ) { + if ( isset( $plugin_page ) && + ( $plugin_page == $submenu_array[2] ) && + ( + ( $parent == $pagenow ) || + ( $parent == $plugin_page ) || + ( $plugin_page == $hook ) || + ( $pagenow == 'admin.php' && $parent1 != $submenu_array[2] ) || + ( !empty($typenow) && $parent == $pagenow . '?post_type=' . $typenow) + ) + ) { + $title = $submenu_array[3]; + return $submenu_array[3]; + } + + if ( $submenu_array[2] != $pagenow || isset( $_GET['page'] ) ) // not the current page + continue; + + if ( isset( $submenu_array[3] ) ) { + $title = $submenu_array[3]; + return $submenu_array[3]; + } else { + $title = $submenu_array[0]; + return $title; + } + } + } + if ( empty ( $title ) ) { + foreach ( $menu as $menu_array ) { + if ( isset( $plugin_page ) && + ( $plugin_page == $menu_array[2] ) && + ( $pagenow == 'admin.php' ) && + ( $parent1 == $menu_array[2] ) ) + { + $title = $menu_array[3]; + return $menu_array[3]; + } + } + } + } + + return $title; +} + +function get_plugin_page_hook( $plugin_page, $parent_page ) { + $hook = get_plugin_page_hookname( $plugin_page, $parent_page ); + if ( has_action($hook) ) + return $hook; + else + return null; +} + +function get_plugin_page_hookname( $plugin_page, $parent_page ) { + global $admin_page_hooks; + + $parent = get_admin_page_parent( $parent_page ); + + $page_type = 'admin'; + if ( empty ( $parent_page ) || 'admin.php' == $parent_page || isset( $admin_page_hooks[$plugin_page] ) ) { + if ( isset( $admin_page_hooks[$plugin_page] ) ) + $page_type = 'toplevel'; + else + if ( isset( $admin_page_hooks[$parent] )) + $page_type = $admin_page_hooks[$parent]; + } else if ( isset( $admin_page_hooks[$parent] ) ) { + $page_type = $admin_page_hooks[$parent]; + } + + $plugin_name = preg_replace( '!\.php!', '', $plugin_page ); + + return $page_type . '_page_' . $plugin_name; +} + +function user_can_access_admin_page() { + global $pagenow; + global $menu; + global $submenu; + global $_wp_menu_nopriv; + global $_wp_submenu_nopriv; + global $plugin_page; + global $_registered_pages; + + $parent = get_admin_page_parent(); + + if ( !isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$pagenow] ) ) + return false; + + if ( isset( $plugin_page ) ) { + if ( isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) ) + return false; + + $hookname = get_plugin_page_hookname($plugin_page, $parent); + + if ( !isset($_registered_pages[$hookname]) ) + return false; + } + + if ( empty( $parent) ) { + if ( isset( $_wp_menu_nopriv[$pagenow] ) ) + return false; + if ( isset( $_wp_submenu_nopriv[$pagenow][$pagenow] ) ) + return false; + if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) ) + return false; + if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) + return false; + foreach (array_keys( $_wp_submenu_nopriv ) as $key ) { + if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) ) + return false; + if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$key][$plugin_page] ) ) + return false; + } + return true; + } + + if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) + return false; + + if ( isset( $submenu[$parent] ) ) { + foreach ( $submenu[$parent] as $submenu_array ) { + if ( isset( $plugin_page ) && ( $submenu_array[2] == $plugin_page ) ) { + if ( current_user_can( $submenu_array[1] )) + return true; + else + return false; + } else if ( $submenu_array[2] == $pagenow ) { + if ( current_user_can( $submenu_array[1] )) + return true; + else + return false; + } + } + } + + foreach ( $menu as $menu_array ) { + if ( $menu_array[2] == $parent) { + if ( current_user_can( $menu_array[1] )) + return true; + else + return false; + } + } + + return true; +} + +/* Whitelist functions */ + +/** + * Register a setting and its sanitization callback + * + * @since 2.7.0 + * + * @param string $option_group A settings group name. Should correspond to a whitelisted option key name. + * Default whitelisted option key names include "general," "discussion," and "reading," among others. + * @param string $option_name The name of an option to sanitize and save. + * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value. + * @return unknown + */ +function register_setting( $option_group, $option_name, $sanitize_callback = '' ) { + global $new_whitelist_options; + + if ( 'misc' == $option_group ) { + _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) ); + $option_group = 'general'; + } + + $new_whitelist_options[ $option_group ][] = $option_name; + if ( $sanitize_callback != '' ) + add_filter( "sanitize_option_{$option_name}", $sanitize_callback ); +} + +/** + * Unregister a setting + * + * @since 2.7.0 + * + * @param unknown_type $option_group + * @param unknown_type $option_name + * @param unknown_type $sanitize_callback + * @return unknown + */ +function unregister_setting( $option_group, $option_name, $sanitize_callback = '' ) { + global $new_whitelist_options; + + if ( 'misc' == $option_group ) { + _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) ); + $option_group = 'general'; + } + + $pos = array_search( $option_name, (array) $new_whitelist_options ); + if ( $pos !== false ) + unset( $new_whitelist_options[ $option_group ][ $pos ] ); + if ( $sanitize_callback != '' ) + remove_filter( "sanitize_option_{$option_name}", $sanitize_callback ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $options + * @return unknown + */ +function option_update_filter( $options ) { + global $new_whitelist_options; + + if ( is_array( $new_whitelist_options ) ) + $options = add_option_whitelist( $new_whitelist_options, $options ); + + return $options; +} +add_filter( 'whitelist_options', 'option_update_filter' ); + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $new_options + * @param unknown_type $options + * @return unknown + */ +function add_option_whitelist( $new_options, $options = '' ) { + if ( $options == '' ) + global $whitelist_options; + else + $whitelist_options = $options; + + foreach ( $new_options as $page => $keys ) { + foreach ( $keys as $key ) { + if ( !isset($whitelist_options[ $page ]) || !is_array($whitelist_options[ $page ]) ) { + $whitelist_options[ $page ] = array(); + $whitelist_options[ $page ][] = $key; + } else { + $pos = array_search( $key, $whitelist_options[ $page ] ); + if ( $pos === false ) + $whitelist_options[ $page ][] = $key; + } + } + } + + return $whitelist_options; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $del_options + * @param unknown_type $options + * @return unknown + */ +function remove_option_whitelist( $del_options, $options = '' ) { + if ( $options == '' ) + global $whitelist_options; + else + $whitelist_options = $options; + + foreach ( $del_options as $page => $keys ) { + foreach ( $keys as $key ) { + if ( isset($whitelist_options[ $page ]) && is_array($whitelist_options[ $page ]) ) { + $pos = array_search( $key, $whitelist_options[ $page ] ); + if ( $pos !== false ) + unset( $whitelist_options[ $page ][ $pos ] ); + } + } + } + + return $whitelist_options; +} + +/** + * Output nonce, action, and option_page fields for a settings page. + * + * @since 2.7.0 + * + * @param string $option_group A settings group name. This should match the group name used in register_setting(). + */ +function settings_fields($option_group) { + echo ""; + echo ''; + wp_nonce_field("$option_group-options"); +} diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php new file mode 100644 index 0000000..3bfea57 --- /dev/null +++ b/wp-admin/includes/post.php @@ -0,0 +1,1342 @@ +cap->edit_others_posts ) ) { + if ( 'page' == $post_data['post_type'] ) { + return new WP_Error( 'edit_others_pages', $update ? + __( 'You are not allowed to edit pages as this user.' ) : + __( 'You are not allowed to create pages as this user.' ) + ); + } else { + return new WP_Error( 'edit_others_posts', $update ? + __( 'You are not allowed to edit posts as this user.' ) : + __( 'You are not allowed to post as this user.' ) + ); + } + } + } + + // What to do based on which button they pressed + if ( isset($post_data['saveasdraft']) && '' != $post_data['saveasdraft'] ) + $post_data['post_status'] = 'draft'; + if ( isset($post_data['saveasprivate']) && '' != $post_data['saveasprivate'] ) + $post_data['post_status'] = 'private'; + if ( isset($post_data['publish']) && ( '' != $post_data['publish'] ) && ( !isset($post_data['post_status']) || $post_data['post_status'] != 'private' ) ) + $post_data['post_status'] = 'publish'; + if ( isset($post_data['advanced']) && '' != $post_data['advanced'] ) + $post_data['post_status'] = 'draft'; + if ( isset($post_data['pending']) && '' != $post_data['pending'] ) + $post_data['post_status'] = 'pending'; + + if ( isset( $post_data['ID'] ) ) + $post_id = $post_data['ID']; + else + $post_id = false; + $previous_status = $post_id ? get_post_field( 'post_status', $post_id ) : false; + + // Posts 'submitted for approval' present are submitted to $_POST the same as if they were being published. + // Change status from 'publish' to 'pending' if user lacks permissions to publish or to resave published posts. + if ( isset($post_data['post_status']) && ('publish' == $post_data['post_status'] && !current_user_can( $ptype->cap->publish_posts )) ) + if ( $previous_status != 'publish' || !current_user_can( 'edit_post', $post_id ) ) + $post_data['post_status'] = 'pending'; + + if ( ! isset($post_data['post_status']) ) + $post_data['post_status'] = $previous_status; + + if (!isset( $post_data['comment_status'] )) + $post_data['comment_status'] = 'closed'; + + if (!isset( $post_data['ping_status'] )) + $post_data['ping_status'] = 'closed'; + + foreach ( array('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) { + if ( !empty( $post_data['hidden_' . $timeunit] ) && $post_data['hidden_' . $timeunit] != $post_data[$timeunit] ) { + $post_data['edit_date'] = '1'; + break; + } + } + + if ( !empty( $post_data['edit_date'] ) ) { + $aa = $post_data['aa']; + $mm = $post_data['mm']; + $jj = $post_data['jj']; + $hh = $post_data['hh']; + $mn = $post_data['mn']; + $ss = $post_data['ss']; + $aa = ($aa <= 0 ) ? date('Y') : $aa; + $mm = ($mm <= 0 ) ? date('n') : $mm; + $jj = ($jj > 31 ) ? 31 : $jj; + $jj = ($jj <= 0 ) ? date('j') : $jj; + $hh = ($hh > 23 ) ? $hh -24 : $hh; + $mn = ($mn > 59 ) ? $mn -60 : $mn; + $ss = ($ss > 59 ) ? $ss -60 : $ss; + $post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss ); + $post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] ); + } + + return $post_data; +} + +/** + * Update an existing post with values provided in $_POST. + * + * @since 1.5.0 + * + * @param array $post_data Optional. + * @return int Post ID. + */ +function edit_post( $post_data = null ) { + + if ( empty($post_data) ) + $post_data = &$_POST; + + // Clear out any data in internal vars. + unset( $post_data['filter'] ); + + $post_ID = (int) $post_data['post_ID']; + $post = get_post( $post_ID ); + $post_data['post_type'] = $post->post_type; + $post_data['post_mime_type'] = $post->post_mime_type; + + $ptype = get_post_type_object($post_data['post_type']); + if ( !current_user_can( $ptype->cap->edit_post, $post_ID ) ) { + if ( 'page' == $post_data['post_type'] ) + wp_die( __('You are not allowed to edit this page.' )); + else + wp_die( __('You are not allowed to edit this post.' )); + } + + // Autosave shouldn't save too soon after a real save + if ( 'autosave' == $post_data['action'] ) { + $post =& get_post( $post_ID ); + $now = time(); + $then = strtotime($post->post_date_gmt . ' +0000'); + $delta = AUTOSAVE_INTERVAL / 2; + if ( ($now - $then) < $delta ) + return $post_ID; + } + + $post_data = _wp_translate_postdata( true, $post_data ); + if ( is_wp_error($post_data) ) + wp_die( $post_data->get_error_message() ); + if ( 'autosave' != $post_data['action'] && 'auto-draft' == $post_data['post_status'] ) + $post_data['post_status'] = 'draft'; + + if ( isset($post_data['visibility']) ) { + switch ( $post_data['visibility'] ) { + case 'public' : + $post_data['post_password'] = ''; + break; + case 'password' : + unset( $post_data['sticky'] ); + break; + case 'private' : + $post_data['post_status'] = 'private'; + $post_data['post_password'] = ''; + unset( $post_data['sticky'] ); + break; + } + } + + // Post Formats + if ( isset( $post_data['post_format'] ) ) { + if ( current_theme_supports( 'post-formats', $post_data['post_format'] ) ) + set_post_format( $post_ID, $post_data['post_format'] ); + elseif ( '0' == $post_data['post_format'] ) + set_post_format( $post_ID, false ); + } + + // Meta Stuff + if ( isset($post_data['meta']) && $post_data['meta'] ) { + foreach ( $post_data['meta'] as $key => $value ) { + if ( !$meta = get_post_meta_by_id( $key ) ) + continue; + if ( $meta->post_id != $post_ID ) + continue; + if ( is_protected_meta( $value['key'], 'post' ) || ! current_user_can( 'edit_post_meta', $post_ID, $value['key'] ) ) + continue; + update_meta( $key, $value['key'], $value['value'] ); + } + } + + if ( isset($post_data['deletemeta']) && $post_data['deletemeta'] ) { + foreach ( $post_data['deletemeta'] as $key => $value ) { + if ( !$meta = get_post_meta_by_id( $key ) ) + continue; + if ( $meta->post_id != $post_ID ) + continue; + if ( is_protected_meta( $meta->meta_key, 'post' ) || ! current_user_can( 'delete_post_meta', $post_ID, $meta->meta_key ) ) + continue; + delete_meta( $key ); + } + } + + add_meta( $post_ID ); + + update_post_meta( $post_ID, '_edit_last', $GLOBALS['current_user']->ID ); + + wp_update_post( $post_data ); + + // Now that we have an ID we can fix any attachment anchor hrefs + _fix_attachment_links( $post_ID ); + + wp_set_post_lock( $post_ID ); + + if ( current_user_can( $ptype->cap->edit_others_posts ) ) { + if ( ! empty( $post_data['sticky'] ) ) + stick_post( $post_ID ); + else + unstick_post( $post_ID ); + } + + return $post_ID; +} + +/** + * Process the post data for the bulk editing of posts. + * + * Updates all bulk edited posts/pages, adding (but not removing) tags and + * categories. Skips pages when they would be their own parent or child. + * + * @since 2.7.0 + * + * @param array $post_data Optional, the array of post data to process if not provided will use $_POST superglobal. + * @return array + */ +function bulk_edit_posts( $post_data = null ) { + global $wpdb; + + if ( empty($post_data) ) + $post_data = &$_POST; + + if ( isset($post_data['post_type']) ) + $ptype = get_post_type_object($post_data['post_type']); + else + $ptype = get_post_type_object('post'); + + if ( !current_user_can( $ptype->cap->edit_posts ) ) { + if ( 'page' == $ptype->name ) + wp_die( __('You are not allowed to edit pages.')); + else + wp_die( __('You are not allowed to edit posts.')); + } + + if ( -1 == $post_data['_status'] ) { + $post_data['post_status'] = null; + unset($post_data['post_status']); + } else { + $post_data['post_status'] = $post_data['_status']; + } + unset($post_data['_status']); + + $post_IDs = array_map( 'intval', (array) $post_data['post'] ); + + $reset = array( 'post_author', 'post_status', 'post_password', 'post_parent', 'page_template', 'comment_status', 'ping_status', 'keep_private', 'tax_input', 'post_category', 'sticky' ); + foreach ( $reset as $field ) { + if ( isset($post_data[$field]) && ( '' == $post_data[$field] || -1 == $post_data[$field] ) ) + unset($post_data[$field]); + } + + if ( isset($post_data['post_category']) ) { + if ( is_array($post_data['post_category']) && ! empty($post_data['post_category']) ) + $new_cats = array_map( 'absint', $post_data['post_category'] ); + else + unset($post_data['post_category']); + } + + $tax_input = array(); + if ( isset($post_data['tax_input'])) { + foreach ( $post_data['tax_input'] as $tax_name => $terms ) { + if ( empty($terms) ) + continue; + if ( is_taxonomy_hierarchical( $tax_name ) ) { + $tax_input[ $tax_name ] = array_map( 'absint', $terms ); + } else { + $comma = _x( ',', 'tag delimiter' ); + if ( ',' !== $comma ) + $terms = str_replace( $comma, ',', $terms ); + $tax_input[ $tax_name ] = explode( ',', trim( $terms, " \n\t\r\0\x0B," ) ); + } + } + } + + if ( isset($post_data['post_parent']) && ($parent = (int) $post_data['post_parent']) ) { + $pages = $wpdb->get_results("SELECT ID, post_parent FROM $wpdb->posts WHERE post_type = 'page'"); + $children = array(); + + for ( $i = 0; $i < 50 && $parent > 0; $i++ ) { + $children[] = $parent; + + foreach ( $pages as $page ) { + if ( $page->ID == $parent ) { + $parent = $page->post_parent; + break; + } + } + } + } + + if ( isset( $post_data['post_format'] ) ) { + if ( '0' == $post_data['post_format'] ) + $post_data['post_format'] = false; + // don't change the post format if it's not supported or not '0' (standard) + elseif ( ! current_theme_supports( 'post-formats', $post_data['post_format'] ) ) + unset( $post_data['post_format'] ); + } + + $updated = $skipped = $locked = array(); + foreach ( $post_IDs as $post_ID ) { + $post_type_object = get_post_type_object( get_post_type( $post_ID ) ); + + if ( !isset( $post_type_object ) || ( isset($children) && in_array($post_ID, $children) ) || !current_user_can( $post_type_object->cap->edit_post, $post_ID ) ) { + $skipped[] = $post_ID; + continue; + } + + if ( wp_check_post_lock( $post_ID ) ) { + $locked[] = $post_ID; + continue; + } + + $post = get_post( $post_ID ); + $tax_names = get_object_taxonomies( $post ); + foreach ( $tax_names as $tax_name ) { + $taxonomy_obj = get_taxonomy($tax_name); + if ( isset( $tax_input[$tax_name]) && current_user_can( $taxonomy_obj->cap->assign_terms ) ) + $new_terms = $tax_input[$tax_name]; + else + $new_terms = array(); + + if ( $taxonomy_obj->hierarchical ) + $current_terms = (array) wp_get_object_terms( $post_ID, $tax_name, array('fields' => 'ids') ); + else + $current_terms = (array) wp_get_object_terms( $post_ID, $tax_name, array('fields' => 'names') ); + + $post_data['tax_input'][$tax_name] = array_merge( $current_terms, $new_terms ); + } + + if ( isset($new_cats) && in_array( 'category', $tax_names ) ) { + $cats = (array) wp_get_post_categories($post_ID); + $post_data['post_category'] = array_unique( array_merge($cats, $new_cats) ); + unset( $post_data['tax_input']['category'] ); + } + + $post_data['post_mime_type'] = $post->post_mime_type; + $post_data['guid'] = $post->guid; + + $post_data['ID'] = $post_ID; + $updated[] = wp_update_post( $post_data ); + + if ( isset( $post_data['sticky'] ) && current_user_can( $ptype->cap->edit_others_posts ) ) { + if ( 'sticky' == $post_data['sticky'] ) + stick_post( $post_ID ); + else + unstick_post( $post_ID ); + } + + if ( isset( $post_data['post_format'] ) ) + set_post_format( $post_ID, $post_data['post_format'] ); + } + + return array( 'updated' => $updated, 'skipped' => $skipped, 'locked' => $locked ); +} + +/** + * Default post information to use when populating the "Write Post" form. + * + * @since 2.0.0 + * + * @param string $post_type A post type string, defaults to 'post'. + * @return object stdClass object containing all the default post data as attributes + */ +function get_default_post_to_edit( $post_type = 'post', $create_in_db = false ) { + global $wpdb; + + $post_title = ''; + if ( !empty( $_REQUEST['post_title'] ) ) + $post_title = esc_html( stripslashes( $_REQUEST['post_title'] )); + + $post_content = ''; + if ( !empty( $_REQUEST['content'] ) ) + $post_content = esc_html( stripslashes( $_REQUEST['content'] )); + + $post_excerpt = ''; + if ( !empty( $_REQUEST['excerpt'] ) ) + $post_excerpt = esc_html( stripslashes( $_REQUEST['excerpt'] )); + + if ( $create_in_db ) { + $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) ); + $post = get_post( $post_id ); + if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) ) + set_post_format( $post, get_option( 'default_post_format' ) ); + } else { + $post = new stdClass; + $post->ID = 0; + $post->post_author = ''; + $post->post_date = ''; + $post->post_date_gmt = ''; + $post->post_password = ''; + $post->post_type = $post_type; + $post->post_status = 'draft'; + $post->to_ping = ''; + $post->pinged = ''; + $post->comment_status = get_option( 'default_comment_status' ); + $post->ping_status = get_option( 'default_ping_status' ); + $post->post_pingback = get_option( 'default_pingback_flag' ); + $post->post_category = get_option( 'default_category' ); + $post->page_template = 'default'; + $post->post_parent = 0; + $post->menu_order = 0; + } + + $post->post_content = apply_filters( 'default_content', $post_content, $post ); + $post->post_title = apply_filters( 'default_title', $post_title, $post ); + $post->post_excerpt = apply_filters( 'default_excerpt', $post_excerpt, $post ); + $post->post_name = ''; + + return $post; +} + +/** + * Get the default page information to use. + * + * @since 2.5.0 + * + * @return object stdClass object containing all the default post data as attributes + */ +function get_default_page_to_edit() { + $page = get_default_post_to_edit(); + $page->post_type = 'page'; + return $page; +} + +/** + * Get an existing post and format it for editing. + * + * @since 2.0.0 + * + * @param unknown_type $id + * @return unknown + */ +function get_post_to_edit( $id ) { + + $post = get_post( $id, OBJECT, 'edit' ); + + if ( $post->post_type == 'page' ) + $post->page_template = get_post_meta( $id, '_wp_page_template', true ); + + return $post; +} + +/** + * Determine if a post exists based on title, content, and date + * + * @since 2.0.0 + * + * @param string $title Post title + * @param string $content Optional post content + * @param string $date Optional post date + * @return int Post ID if post exists, 0 otherwise. + */ +function post_exists($title, $content = '', $date = '') { + global $wpdb; + + $post_title = stripslashes( sanitize_post_field( 'post_title', $title, 0, 'db' ) ); + $post_content = stripslashes( sanitize_post_field( 'post_content', $content, 0, 'db' ) ); + $post_date = stripslashes( sanitize_post_field( 'post_date', $date, 0, 'db' ) ); + + $query = "SELECT ID FROM $wpdb->posts WHERE 1=1"; + $args = array(); + + if ( !empty ( $date ) ) { + $query .= ' AND post_date = %s'; + $args[] = $post_date; + } + + if ( !empty ( $title ) ) { + $query .= ' AND post_title = %s'; + $args[] = $post_title; + } + + if ( !empty ( $content ) ) { + $query .= 'AND post_content = %s'; + $args[] = $post_content; + } + + if ( !empty ( $args ) ) + return $wpdb->get_var( $wpdb->prepare($query, $args) ); + + return 0; +} + +/** + * Creates a new post from the "Write Post" form using $_POST information. + * + * @since 2.1.0 + * + * @return unknown + */ +function wp_write_post() { + global $user_ID; + + if ( isset($_POST['post_type']) ) + $ptype = get_post_type_object($_POST['post_type']); + else + $ptype = get_post_type_object('post'); + + if ( !current_user_can( $ptype->cap->edit_posts ) ) { + if ( 'page' == $ptype->name ) + return new WP_Error( 'edit_pages', __( 'You are not allowed to create pages on this site.' ) ); + else + return new WP_Error( 'edit_posts', __( 'You are not allowed to create posts or drafts on this site.' ) ); + } + + $_POST['post_mime_type'] = ''; + + // Clear out any data in internal vars. + unset( $_POST['filter'] ); + + // Edit don't write if we have a post id. + if ( isset( $_POST['post_ID'] ) ) + return edit_post(); + + $translated = _wp_translate_postdata( false ); + if ( is_wp_error($translated) ) + return $translated; + + if ( isset($_POST['visibility']) ) { + switch ( $_POST['visibility'] ) { + case 'public' : + $_POST['post_password'] = ''; + break; + case 'password' : + unset( $_POST['sticky'] ); + break; + case 'private' : + $_POST['post_status'] = 'private'; + $_POST['post_password'] = ''; + unset( $_POST['sticky'] ); + break; + } + } + + // Create the post. + $post_ID = wp_insert_post( $_POST ); + if ( is_wp_error( $post_ID ) ) + return $post_ID; + + if ( empty($post_ID) ) + return 0; + + add_meta( $post_ID ); + + add_post_meta( $post_ID, '_edit_last', $GLOBALS['current_user']->ID ); + + // Now that we have an ID we can fix any attachment anchor hrefs + _fix_attachment_links( $post_ID ); + + wp_set_post_lock( $post_ID ); + + return $post_ID; +} + +/** + * Calls wp_write_post() and handles the errors. + * + * @since 2.0.0 + + * @uses wp_write_post() + * @uses is_wp_error() + * @uses wp_die() + * @return unknown + */ +function write_post() { + $result = wp_write_post(); + if ( is_wp_error( $result ) ) + wp_die( $result->get_error_message() ); + else + return $result; +} + +// +// Post Meta +// + +/** + * {@internal Missing Short Description}} + * + * @since 1.2.0 + * + * @param unknown_type $post_ID + * @return unknown + */ +function add_meta( $post_ID ) { + global $wpdb; + $post_ID = (int) $post_ID; + + $metakeyselect = isset($_POST['metakeyselect']) ? stripslashes( trim( $_POST['metakeyselect'] ) ) : ''; + $metakeyinput = isset($_POST['metakeyinput']) ? stripslashes( trim( $_POST['metakeyinput'] ) ) : ''; + $metavalue = isset($_POST['metavalue']) ? $_POST['metavalue'] : ''; + if ( is_string( $metavalue ) ) + $metavalue = trim( $metavalue ); + + if ( ('0' === $metavalue || ! empty ( $metavalue ) ) && ( ( ( '#NONE#' != $metakeyselect ) && !empty ( $metakeyselect) ) || !empty ( $metakeyinput ) ) ) { + // We have a key/value pair. If both the select and the + // input for the key have data, the input takes precedence: + + if ( '#NONE#' != $metakeyselect ) + $metakey = $metakeyselect; + + if ( $metakeyinput ) + $metakey = $metakeyinput; // default + + if ( is_protected_meta( $metakey, 'post' ) || ! current_user_can( 'add_post_meta', $post_ID, $metakey ) ) + return false; + + $metakey = esc_sql( $metakey ); + + return add_post_meta( $post_ID, $metakey, $metavalue ); + } + + return false; +} // add_meta + +/** + * {@internal Missing Short Description}} + * + * @since 1.2.0 + * + * @param unknown_type $mid + * @return unknown + */ +function delete_meta( $mid ) { + return delete_metadata_by_mid( 'post' , $mid ); +} + +/** + * Get a list of previously defined keys. + * + * @since 1.2.0 + * + * @return unknown + */ +function get_meta_keys() { + global $wpdb; + + $keys = $wpdb->get_col( " + SELECT meta_key + FROM $wpdb->postmeta + GROUP BY meta_key + ORDER BY meta_key" ); + + return $keys; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.1.0 + * + * @param unknown_type $mid + * @return unknown + */ +function get_post_meta_by_id( $mid ) { + return get_metadata_by_mid( 'post', $mid ); +} + +/** + * {@internal Missing Short Description}} + * + * Some postmeta stuff. + * + * @since 1.2.0 + * + * @param unknown_type $postid + * @return unknown + */ +function has_meta( $postid ) { + global $wpdb; + + return $wpdb->get_results( $wpdb->prepare("SELECT meta_key, meta_value, meta_id, post_id + FROM $wpdb->postmeta WHERE post_id = %d + ORDER BY meta_key,meta_id", $postid), ARRAY_A ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.2.0 + * + * @param unknown_type $meta_id + * @param unknown_type $meta_key Expect Slashed + * @param unknown_type $meta_value Expect Slashed + * @return unknown + */ +function update_meta( $meta_id, $meta_key, $meta_value ) { + $meta_key = stripslashes( $meta_key ); + $meta_value = stripslashes_deep( $meta_value ); + + return update_metadata_by_mid( 'post', $meta_id, $meta_value, $meta_key ); +} + +// +// Private +// + +/** + * Replace hrefs of attachment anchors with up-to-date permalinks. + * + * @since 2.3.0 + * @access private + * + * @param unknown_type $post_ID + * @return unknown + */ +function _fix_attachment_links( $post_ID ) { + $post = & get_post( $post_ID, ARRAY_A ); + $content = $post['post_content']; + + // quick sanity check, don't run if no pretty permalinks or post is not published + if ( !get_option('permalink_structure') || $post['post_status'] != 'publish' ) + return; + + // Short if there aren't any links or no '?attachment_id=' strings (strpos cannot be zero) + if ( !strpos($content, '?attachment_id=') || !preg_match_all( '/]+)>[\s\S]+?<\/a>/', $content, $link_matches ) ) + return; + + $site_url = get_bloginfo('url'); + $site_url = substr( $site_url, (int) strpos($site_url, '://') ); // remove the http(s) + $replace = ''; + + foreach ( $link_matches[1] as $key => $value ) { + if ( !strpos($value, '?attachment_id=') || !strpos($value, 'wp-att-') + || !preg_match( '/href=(["\'])[^"\']*\?attachment_id=(\d+)[^"\']*\\1/', $value, $url_match ) + || !preg_match( '/rel=["\'][^"\']*wp-att-(\d+)/', $value, $rel_match ) ) + continue; + + $quote = $url_match[1]; // the quote (single or double) + $url_id = (int) $url_match[2]; + $rel_id = (int) $rel_match[1]; + + if ( !$url_id || !$rel_id || $url_id != $rel_id || strpos($url_match[0], $site_url) === false ) + continue; + + $link = $link_matches[0][$key]; + $replace = str_replace( $url_match[0], 'href=' . $quote . get_attachment_link( $url_id ) . $quote, $link ); + + $content = str_replace( $link, $replace, $content ); + } + + if ( $replace ) { + $post['post_content'] = $content; + // Escape data pulled from DB. + $post = add_magic_quotes($post); + + return wp_update_post($post); + } +} + +/** + * Move child posts to a new parent. + * + * @since 2.3.0 + * @access private + * + * @param unknown_type $old_ID + * @param unknown_type $new_ID + * @return unknown + */ +function _relocate_children( $old_ID, $new_ID ) { + global $wpdb; + $old_ID = (int) $old_ID; + $new_ID = (int) $new_ID; + + $children = $wpdb->get_col( $wpdb->prepare(" + SELECT post_id + FROM $wpdb->postmeta + WHERE meta_key = '_wp_attachment_temp_parent' + AND meta_value = %d", $old_ID) ); + + foreach ( $children as $child_id ) { + $wpdb->update($wpdb->posts, array('post_parent' => $new_ID), array('ID' => $child_id) ); + delete_post_meta($child_id, '_wp_attachment_temp_parent'); + } +} + +/** + * Get all the possible statuses for a post_type + * + * @since 2.5.0 + * + * @param string $type The post_type you want the statuses for + * @return array As array of all the statuses for the supplied post type + */ +function get_available_post_statuses($type = 'post') { + $stati = wp_count_posts($type); + + return array_keys(get_object_vars($stati)); +} + +/** + * Run the wp query to fetch the posts for listing on the edit posts page + * + * @since 2.5.0 + * + * @param array|bool $q Array of query variables to use to build the query or false to use $_GET superglobal. + * @return array + */ +function wp_edit_posts_query( $q = false ) { + if ( false === $q ) + $q = $_GET; + $q['m'] = isset($q['m']) ? (int) $q['m'] : 0; + $q['cat'] = isset($q['cat']) ? (int) $q['cat'] : 0; + $post_stati = get_post_stati(); + + if ( isset($q['post_type']) && in_array( $q['post_type'], get_post_types() ) ) + $post_type = $q['post_type']; + else + $post_type = 'post'; + + $avail_post_stati = get_available_post_statuses($post_type); + + if ( isset($q['post_status']) && in_array( $q['post_status'], $post_stati ) ) { + $post_status = $q['post_status']; + $perm = 'readable'; + } + + if ( isset($q['orderby']) ) + $orderby = $q['orderby']; + elseif ( isset($q['post_status']) && in_array($q['post_status'], array('pending', 'draft')) ) + $orderby = 'modified'; + + if ( isset($q['order']) ) + $order = $q['order']; + elseif ( isset($q['post_status']) && 'pending' == $q['post_status'] ) + $order = 'ASC'; + + $per_page = 'edit_' . $post_type . '_per_page'; + $posts_per_page = (int) get_user_option( $per_page ); + if ( empty( $posts_per_page ) || $posts_per_page < 1 ) + $posts_per_page = 20; + + $posts_per_page = apply_filters( $per_page, $posts_per_page ); + $posts_per_page = apply_filters( 'edit_posts_per_page', $posts_per_page, $post_type ); + + $query = compact('post_type', 'post_status', 'perm', 'order', 'orderby', 'posts_per_page'); + + // Hierarchical types require special args. + if ( is_post_type_hierarchical( $post_type ) && !isset($orderby) ) { + $query['orderby'] = 'menu_order title'; + $query['order'] = 'asc'; + $query['posts_per_page'] = -1; + $query['posts_per_archive_page'] = -1; + } + + if ( ! empty( $q['show_sticky'] ) ) + $query['post__in'] = (array) get_option( 'sticky_posts' ); + + wp( $query ); + + return $avail_post_stati; +} + +/** + * Get default post mime types + * + * @since 2.9.0 + * + * @return array + */ +function get_post_mime_types() { + $post_mime_types = array( // array( adj, noun ) + 'image' => array(__('Images'), __('Manage Images'), _n_noop('Image (%s)', 'Images (%s)')), + 'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio (%s)', 'Audio (%s)')), + 'video' => array(__('Video'), __('Manage Video'), _n_noop('Video (%s)', 'Video (%s)')), + ); + + return apply_filters('post_mime_types', $post_mime_types); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $type + * @return unknown + */ +function get_available_post_mime_types($type = 'attachment') { + global $wpdb; + + $types = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT post_mime_type FROM $wpdb->posts WHERE post_type = %s", $type)); + return $types; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $q + * @return unknown + */ +function wp_edit_attachments_query( $q = false ) { + if ( false === $q ) + $q = $_GET; + + $q['m'] = isset( $q['m'] ) ? (int) $q['m'] : 0; + $q['cat'] = isset( $q['cat'] ) ? (int) $q['cat'] : 0; + $q['post_type'] = 'attachment'; + $post_type = get_post_type_object( 'attachment' ); + $states = 'inherit'; + if ( current_user_can( $post_type->cap->read_private_posts ) ) + $states .= ',private'; + + $q['post_status'] = isset( $q['status'] ) && 'trash' == $q['status'] ? 'trash' : $states; + $media_per_page = (int) get_user_option( 'upload_per_page' ); + if ( empty( $media_per_page ) || $media_per_page < 1 ) + $media_per_page = 20; + $q['posts_per_page'] = apply_filters( 'upload_per_page', $media_per_page ); + + $post_mime_types = get_post_mime_types(); + $avail_post_mime_types = get_available_post_mime_types('attachment'); + + if ( isset($q['post_mime_type']) && !array_intersect( (array) $q['post_mime_type'], array_keys($post_mime_types) ) ) + unset($q['post_mime_type']); + + if ( isset($q['detached']) ) + add_filter('posts_where', '_edit_attachments_query_helper'); + + wp( $q ); + + if ( isset($q['detached']) ) + remove_filter('posts_where', '_edit_attachments_query_helper'); + + return array($post_mime_types, $avail_post_mime_types); +} + +function _edit_attachments_query_helper($where) { + global $wpdb; + return $where .= " AND {$wpdb->posts}.post_parent < 1"; +} + +/** + * Returns the list of classes to be used by a metabox + * + * @uses get_user_option() + * @since 2.5.0 + * + * @param unknown_type $id + * @param unknown_type $page + * @return unknown + */ +function postbox_classes( $id, $page ) { + if ( isset( $_GET['edit'] ) && $_GET['edit'] == $id ) { + $classes = array( '' ); + } elseif ( $closed = get_user_option('closedpostboxes_'.$page ) ) { + if ( !is_array( $closed ) ) { + $classes = array( '' ); + } else { + $classes = in_array( $id, $closed ) ? array( 'closed' ) : array( '' ); + } + } else { + $classes = array( '' ); + } + + $classes = apply_filters( "postbox_classes_{$page}_{$id}", $classes ); + return implode( ' ', $classes ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param int|object $id Post ID or post object. + * @param string $title (optional) Title + * @param string $name (optional) Name + * @return array With two entries of type string + */ +function get_sample_permalink($id, $title = null, $name = null) { + $post = &get_post($id); + if ( !$post->ID ) + return array('', ''); + + $ptype = get_post_type_object($post->post_type); + + $original_status = $post->post_status; + $original_date = $post->post_date; + $original_name = $post->post_name; + + // Hack: get_permalink would return ugly permalink for + // drafts, so we will fake, that our post is published + if ( in_array($post->post_status, array('draft', 'pending')) ) { + $post->post_status = 'publish'; + $post->post_name = sanitize_title($post->post_name ? $post->post_name : $post->post_title, $post->ID); + } + + // If the user wants to set a new name -- override the current one + // Note: if empty name is supplied -- use the title instead, see #6072 + if ( !is_null($name) ) + $post->post_name = sanitize_title($name ? $name : $title, $post->ID); + + $post->post_name = wp_unique_post_slug($post->post_name, $post->ID, $post->post_status, $post->post_type, $post->post_parent); + + $post->filter = 'sample'; + + $permalink = get_permalink($post, true); + + // Replace custom post_type Token with generic pagename token for ease of use. + $permalink = str_replace("%$post->post_type%", '%pagename%', $permalink); + + // Handle page hierarchy + if ( $ptype->hierarchical ) { + $uri = get_page_uri($post); + $uri = untrailingslashit($uri); + $uri = strrev( stristr( strrev( $uri ), '/' ) ); + $uri = untrailingslashit($uri); + $uri = apply_filters( 'editable_slug', $uri ); + if ( !empty($uri) ) + $uri .= '/'; + $permalink = str_replace('%pagename%', "{$uri}%pagename%", $permalink); + } + + $permalink = array($permalink, apply_filters('editable_slug', $post->post_name)); + $post->post_status = $original_status; + $post->post_date = $original_date; + $post->post_name = $original_name; + unset($post->filter); + + return $permalink; +} + +/** + * sample permalink html + * + * intended to be used for the inplace editor of the permalink post slug on in the post (and page?) editor. + * + * @since 2.5.0 + * + * @param int|object $id Post ID or post object. + * @param string $new_title (optional) New title + * @param string $new_slug (optional) New slug + * @return string intended to be used for the inplace editor of the permalink post slug on in the post (and page?) editor. + */ +function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) { + global $wpdb; + $post = &get_post($id); + + list($permalink, $post_name) = get_sample_permalink($post->ID, $new_title, $new_slug); + + if ( 'publish' == $post->post_status ) { + $ptype = get_post_type_object($post->post_type); + $view_post = $ptype->labels->view_item; + $title = __('Click to edit this part of the permalink'); + } else { + $title = __('Temporary permalink. Click to edit this part.'); + } + + if ( false === strpos($permalink, '%postname%') && false === strpos($permalink, '%pagename%') ) { + $return = '' . __('Permalink:') . "\n" . '' . $permalink . "\n"; + if ( '' == get_option( 'permalink_structure' ) && current_user_can( 'manage_options' ) && !( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') ) ) + $return .= '' . __('Change Permalinks') . "\n"; + if ( isset($view_post) ) + $return .= "$view_post\n"; + + $return = apply_filters('get_sample_permalink_html', $return, $id, $new_title, $new_slug); + + return $return; + } + + if ( function_exists('mb_strlen') ) { + if ( mb_strlen($post_name) > 30 ) { + $post_name_abridged = mb_substr($post_name, 0, 14). '…' . mb_substr($post_name, -14); + } else { + $post_name_abridged = $post_name; + } + } else { + if ( strlen($post_name) > 30 ) { + $post_name_abridged = substr($post_name, 0, 14). '…' . substr($post_name, -14); + } else { + $post_name_abridged = $post_name; + } + } + + $post_name_html = '' . $post_name_abridged . ''; + $display_link = str_replace(array('%pagename%','%postname%'), $post_name_html, $permalink); + $view_link = str_replace(array('%pagename%','%postname%'), $post_name, $permalink); + $return = '' . __('Permalink:') . "\n"; + $return .= '' . $display_link . "\n"; + $return .= '‎'; // Fix bi-directional text display defect in RTL languages. + $return .= '' . __('Edit') . "\n"; + $return .= '' . $post_name . "\n"; + if ( isset($view_post) ) + $return .= "$view_post\n"; + + $return = apply_filters('get_sample_permalink_html', $return, $id, $new_title, $new_slug); + + return $return; +} + +/** + * Output HTML for the post thumbnail meta-box. + * + * @since 2.9.0 + * + * @param int $thumbnail_id ID of the attachment used for thumbnail + * @param int $post_id ID of the post associated with the thumbnail, defaults to global $post_ID + * @return string html + */ +function _wp_post_thumbnail_html( $thumbnail_id = null, $post_id = null ) { + global $content_width, $_wp_additional_image_sizes, $post_ID; + + if ( empty( $post_id ) ) + $post_id = $post_ID; + + $upload_iframe_src = esc_url( get_upload_iframe_src('image', $post_id) ); + $set_thumbnail_link = '

    %s

    '; + $content = sprintf( $set_thumbnail_link, $upload_iframe_src, esc_html__( 'Set featured image' ) ); + + if ( $thumbnail_id && get_post( $thumbnail_id ) ) { + $old_content_width = $content_width; + $content_width = 266; + if ( !isset( $_wp_additional_image_sizes['post-thumbnail'] ) ) + $thumbnail_html = wp_get_attachment_image( $thumbnail_id, array( $content_width, $content_width ) ); + else + $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'post-thumbnail' ); + if ( !empty( $thumbnail_html ) ) { + $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$post_id" ); + $content = sprintf( $set_thumbnail_link, $upload_iframe_src, $thumbnail_html ); + $content .= '

    ' . esc_html__( 'Remove featured image' ) . '

    '; + } + $content_width = $old_content_width; + } + + return apply_filters( 'admin_post_thumbnail_html', $content ); +} + +/** + * Check to see if the post is currently being edited by another user. + * + * @since 2.5.0 + * + * @param int $post_id ID of the post to check for editing + * @return bool|int False: not locked or locked by current user. Int: user ID of user with lock. + */ +function wp_check_post_lock( $post_id ) { + if ( !$post = get_post( $post_id ) ) + return false; + + if ( !$lock = get_post_meta( $post->ID, '_edit_lock', true ) ) + return false; + + $lock = explode( ':', $lock ); + $time = $lock[0]; + $user = isset( $lock[1] ) ? $lock[1] : get_post_meta( $post->ID, '_edit_last', true ); + + $time_window = apply_filters( 'wp_check_post_lock_window', AUTOSAVE_INTERVAL * 2 ); + + if ( $time && $time > time() - $time_window && $user != get_current_user_id() ) + return $user; + return false; +} + +/** + * Mark the post as currently being edited by the current user + * + * @since 2.5.0 + * + * @param int $post_id ID of the post to being edited + * @return bool|array Returns false if the post doesn't exist of there is no current user, or + * an array of the lock time and the user ID. + */ +function wp_set_post_lock( $post_id ) { + if ( !$post = get_post( $post_id ) ) + return false; + if ( 0 == ($user_id = get_current_user_id()) ) + return false; + + $now = time(); + $lock = "$now:$user_id"; + + update_post_meta( $post->ID, '_edit_lock', $lock ); + return array( $now, $user_id ); +} + +/** + * Outputs the notice message to say that someone else is editing this post at the moment. + * + * @since 2.8.5 + * @return none + */ +function _admin_notice_post_locked() { + global $post; + + $lock = explode( ':', get_post_meta( $post->ID, '_edit_lock', true ) ); + $user = isset( $lock[1] ) ? $lock[1] : get_post_meta( $post->ID, '_edit_last', true ); + $last_user = get_userdata( $user ); + $last_user_name = $last_user ? $last_user->display_name : __('Somebody'); + + switch ($post->post_type) { + case 'post': + $message = __( 'Warning: %s is currently editing this post' ); + break; + case 'page': + $message = __( 'Warning: %s is currently editing this page' ); + break; + default: + $message = __( 'Warning: %s is currently editing this.' ); + } + + $message = sprintf( $message, esc_html( $last_user_name ) ); + echo "

    $message

    "; +} + +/** + * Creates autosave data for the specified post from $_POST data. + * + * @package WordPress + * @subpackage Post_Revisions + * @since 2.6.0 + * + * @uses _wp_translate_postdata() + * @uses _wp_post_revision_fields() + * + * @return unknown + */ +function wp_create_post_autosave( $post_id ) { + $translated = _wp_translate_postdata( true ); + if ( is_wp_error( $translated ) ) + return $translated; + + // Only store one autosave. If there is already an autosave, overwrite it. + if ( $old_autosave = wp_get_post_autosave( $post_id ) ) { + $new_autosave = _wp_post_revision_fields( $_POST, true ); + $new_autosave['ID'] = $old_autosave->ID; + $new_autosave['post_author'] = get_current_user_id(); + return wp_update_post( $new_autosave ); + } + + // _wp_put_post_revision() expects unescaped. + $_POST = stripslashes_deep($_POST); + + // Otherwise create the new autosave as a special post revision + return _wp_put_post_revision( $_POST, true ); +} + +/** + * Save draft or manually autosave for showing preview. + * + * @package WordPress + * @since 2.7.0 + * + * @uses get_post_status() + * @uses edit_post() + * @uses get_post() + * @uses current_user_can() + * @uses wp_die() + * @uses wp_create_post_autosave() + * @uses add_query_arg() + * @uses wp_create_nonce() + * + * @return str URL to redirect to show the preview + */ +function post_preview() { + + $post_ID = (int) $_POST['post_ID']; + $status = get_post_status( $post_ID ); + if ( 'auto-draft' == $status ) + wp_die( __('Preview not available. Please save as a draft first.') ); + + if ( isset($_POST['catslist']) ) + $_POST['post_category'] = explode(",", $_POST['catslist']); + + if ( isset($_POST['tags_input']) ) + $_POST['tags_input'] = explode(",", $_POST['tags_input']); + + if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) ) + unset($_POST['post_category']); + + $_POST['ID'] = $post_ID; + $post = get_post($post_ID); + + if ( 'page' == $post->post_type ) { + if ( !current_user_can('edit_page', $post_ID) ) + wp_die(__('You are not allowed to edit this page.')); + } else { + if ( !current_user_can('edit_post', $post_ID) ) + wp_die(__('You are not allowed to edit this post.')); + } + + if ( 'draft' == $post->post_status ) { + $id = edit_post(); + } else { // Non drafts are not overwritten. The autosave is stored in a special post revision. + $id = wp_create_post_autosave( $post->ID ); + if ( ! is_wp_error($id) ) + $id = $post->ID; + } + + if ( is_wp_error($id) ) + wp_die( $id->get_error_message() ); + + if ( $_POST['post_status'] == 'draft' ) { + $url = add_query_arg( 'preview', 'true', get_permalink($id) ); + } else { + $nonce = wp_create_nonce('post_preview_' . $id); + $url = add_query_arg( array( 'preview' => 'true', 'preview_id' => $id, 'preview_nonce' => $nonce ), get_permalink($id) ); + } + + return $url; +} diff --git a/wp-admin/includes/schema.php b/wp-admin/includes/schema.php new file mode 100644 index 0000000..bba0871 --- /dev/null +++ b/wp-admin/includes/schema.php @@ -0,0 +1,968 @@ +charset ) ) + $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; +if ( ! empty( $wpdb->collate ) ) + $charset_collate .= " COLLATE $wpdb->collate"; + +/** + * Retrieve the SQL for creating database tables. + * + * @since 3.3.0 + * + * @param string $scope Optional. The tables for which to retrieve SQL. Can be all, global, ms_global, or blog tables. Defaults to all. + * @param int $blog_id Optional. The blog ID for which to retrieve SQL. Default is the current blog ID. + * @return string The SQL needed to create the requested tables. + */ +function wp_get_db_schema( $scope = 'all', $blog_id = null ) { + global $wpdb; + + $charset_collate = ''; + + if ( ! empty($wpdb->charset) ) + $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; + if ( ! empty($wpdb->collate) ) + $charset_collate .= " COLLATE $wpdb->collate"; + + if ( $blog_id && $blog_id != $wpdb->blogid ) + $old_blog_id = $wpdb->set_blog_id( $blog_id ); + + // Engage multisite if in the middle of turning it on from network.php. + $is_multisite = is_multisite() || ( defined( 'WP_INSTALLING_NETWORK' ) && WP_INSTALLING_NETWORK ); + + // Blog specific tables. + $blog_tables = "CREATE TABLE $wpdb->terms ( + term_id bigint(20) unsigned NOT NULL auto_increment, + name varchar(200) NOT NULL default '', + slug varchar(200) NOT NULL default '', + term_group bigint(10) NOT NULL default 0, + PRIMARY KEY (term_id), + UNIQUE KEY slug (slug), + KEY name (name) +) $charset_collate; +CREATE TABLE $wpdb->term_taxonomy ( + term_taxonomy_id bigint(20) unsigned NOT NULL auto_increment, + term_id bigint(20) unsigned NOT NULL default 0, + taxonomy varchar(32) NOT NULL default '', + description longtext NOT NULL, + parent bigint(20) unsigned NOT NULL default 0, + count bigint(20) NOT NULL default 0, + PRIMARY KEY (term_taxonomy_id), + UNIQUE KEY term_id_taxonomy (term_id,taxonomy), + KEY taxonomy (taxonomy) +) $charset_collate; +CREATE TABLE $wpdb->term_relationships ( + object_id bigint(20) unsigned NOT NULL default 0, + term_taxonomy_id bigint(20) unsigned NOT NULL default 0, + term_order int(11) NOT NULL default 0, + PRIMARY KEY (object_id,term_taxonomy_id), + KEY term_taxonomy_id (term_taxonomy_id) +) $charset_collate; +CREATE TABLE $wpdb->commentmeta ( + meta_id bigint(20) unsigned NOT NULL auto_increment, + comment_id bigint(20) unsigned NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (meta_id), + KEY comment_id (comment_id), + KEY meta_key (meta_key) +) $charset_collate; +CREATE TABLE $wpdb->comments ( + comment_ID bigint(20) unsigned NOT NULL auto_increment, + comment_post_ID bigint(20) unsigned NOT NULL default '0', + comment_author tinytext NOT NULL, + comment_author_email varchar(100) NOT NULL default '', + comment_author_url varchar(200) NOT NULL default '', + comment_author_IP varchar(100) NOT NULL default '', + comment_date datetime NOT NULL default '0000-00-00 00:00:00', + comment_date_gmt datetime NOT NULL default '0000-00-00 00:00:00', + comment_content text NOT NULL, + comment_karma int(11) NOT NULL default '0', + comment_approved varchar(20) NOT NULL default '1', + comment_agent varchar(255) NOT NULL default '', + comment_type varchar(20) NOT NULL default '', + comment_parent bigint(20) unsigned NOT NULL default '0', + user_id bigint(20) unsigned NOT NULL default '0', + PRIMARY KEY (comment_ID), + KEY comment_post_ID (comment_post_ID), + KEY comment_approved_date_gmt (comment_approved,comment_date_gmt), + KEY comment_date_gmt (comment_date_gmt), + KEY comment_parent (comment_parent) +) $charset_collate; +CREATE TABLE $wpdb->links ( + link_id bigint(20) unsigned NOT NULL auto_increment, + link_url varchar(255) NOT NULL default '', + link_name varchar(255) NOT NULL default '', + link_image varchar(255) NOT NULL default '', + link_target varchar(25) NOT NULL default '', + link_description varchar(255) NOT NULL default '', + link_visible varchar(20) NOT NULL default 'Y', + link_owner bigint(20) unsigned NOT NULL default '1', + link_rating int(11) NOT NULL default '0', + link_updated datetime NOT NULL default '0000-00-00 00:00:00', + link_rel varchar(255) NOT NULL default '', + link_notes mediumtext NOT NULL, + link_rss varchar(255) NOT NULL default '', + PRIMARY KEY (link_id), + KEY link_visible (link_visible) +) $charset_collate; +CREATE TABLE $wpdb->options ( + option_id bigint(20) unsigned NOT NULL auto_increment, + option_name varchar(64) NOT NULL default '', + option_value longtext NOT NULL, + autoload varchar(20) NOT NULL default 'yes', + PRIMARY KEY (option_id), + UNIQUE KEY option_name (option_name) +) $charset_collate; +CREATE TABLE $wpdb->postmeta ( + meta_id bigint(20) unsigned NOT NULL auto_increment, + post_id bigint(20) unsigned NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (meta_id), + KEY post_id (post_id), + KEY meta_key (meta_key) +) $charset_collate; +CREATE TABLE $wpdb->posts ( + ID bigint(20) unsigned NOT NULL auto_increment, + post_author bigint(20) unsigned NOT NULL default '0', + post_date datetime NOT NULL default '0000-00-00 00:00:00', + post_date_gmt datetime NOT NULL default '0000-00-00 00:00:00', + post_content longtext NOT NULL, + post_title text NOT NULL, + post_excerpt text NOT NULL, + post_status varchar(20) NOT NULL default 'publish', + comment_status varchar(20) NOT NULL default 'open', + ping_status varchar(20) NOT NULL default 'open', + post_password varchar(20) NOT NULL default '', + post_name varchar(200) NOT NULL default '', + to_ping text NOT NULL, + pinged text NOT NULL, + post_modified datetime NOT NULL default '0000-00-00 00:00:00', + post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00', + post_content_filtered longtext NOT NULL, + post_parent bigint(20) unsigned NOT NULL default '0', + guid varchar(255) NOT NULL default '', + menu_order int(11) NOT NULL default '0', + post_type varchar(20) NOT NULL default 'post', + post_mime_type varchar(100) NOT NULL default '', + comment_count bigint(20) NOT NULL default '0', + PRIMARY KEY (ID), + KEY post_name (post_name), + KEY type_status_date (post_type,post_status,post_date,ID), + KEY post_parent (post_parent), + KEY post_author (post_author) +) $charset_collate;\n"; + + // Single site users table. The multisite flavor of the users table is handled below. + $users_single_table = "CREATE TABLE $wpdb->users ( + ID bigint(20) unsigned NOT NULL auto_increment, + user_login varchar(60) NOT NULL default '', + user_pass varchar(64) NOT NULL default '', + user_nicename varchar(50) NOT NULL default '', + user_email varchar(100) NOT NULL default '', + user_url varchar(100) NOT NULL default '', + user_registered datetime NOT NULL default '0000-00-00 00:00:00', + user_activation_key varchar(60) NOT NULL default '', + user_status int(11) NOT NULL default '0', + display_name varchar(250) NOT NULL default '', + PRIMARY KEY (ID), + KEY user_login_key (user_login), + KEY user_nicename (user_nicename) +) $charset_collate;\n"; + + // Multisite users table + $users_multi_table = "CREATE TABLE $wpdb->users ( + ID bigint(20) unsigned NOT NULL auto_increment, + user_login varchar(60) NOT NULL default '', + user_pass varchar(64) NOT NULL default '', + user_nicename varchar(50) NOT NULL default '', + user_email varchar(100) NOT NULL default '', + user_url varchar(100) NOT NULL default '', + user_registered datetime NOT NULL default '0000-00-00 00:00:00', + user_activation_key varchar(60) NOT NULL default '', + user_status int(11) NOT NULL default '0', + display_name varchar(250) NOT NULL default '', + spam tinyint(2) NOT NULL default '0', + deleted tinyint(2) NOT NULL default '0', + PRIMARY KEY (ID), + KEY user_login_key (user_login), + KEY user_nicename (user_nicename) +) $charset_collate;\n"; + + // usermeta + $usermeta_table = "CREATE TABLE $wpdb->usermeta ( + umeta_id bigint(20) unsigned NOT NULL auto_increment, + user_id bigint(20) unsigned NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (umeta_id), + KEY user_id (user_id), + KEY meta_key (meta_key) +) $charset_collate;\n"; + + // Global tables + if ( $is_multisite ) + $global_tables = $users_multi_table . $usermeta_table; + else + $global_tables = $users_single_table . $usermeta_table; + + // Multisite global tables. + $ms_global_tables = "CREATE TABLE $wpdb->blogs ( + blog_id bigint(20) NOT NULL auto_increment, + site_id bigint(20) NOT NULL default '0', + domain varchar(200) NOT NULL default '', + path varchar(100) NOT NULL default '', + registered datetime NOT NULL default '0000-00-00 00:00:00', + last_updated datetime NOT NULL default '0000-00-00 00:00:00', + public tinyint(2) NOT NULL default '1', + archived enum('0','1') NOT NULL default '0', + mature tinyint(2) NOT NULL default '0', + spam tinyint(2) NOT NULL default '0', + deleted tinyint(2) NOT NULL default '0', + lang_id int(11) NOT NULL default '0', + PRIMARY KEY (blog_id), + KEY domain (domain(50),path(5)), + KEY lang_id (lang_id) +) $charset_collate; +CREATE TABLE $wpdb->blog_versions ( + blog_id bigint(20) NOT NULL default '0', + db_version varchar(20) NOT NULL default '', + last_updated datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (blog_id), + KEY db_version (db_version) +) $charset_collate; +CREATE TABLE $wpdb->registration_log ( + ID bigint(20) NOT NULL auto_increment, + email varchar(255) NOT NULL default '', + IP varchar(30) NOT NULL default '', + blog_id bigint(20) NOT NULL default '0', + date_registered datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (ID), + KEY IP (IP) +) $charset_collate; +CREATE TABLE $wpdb->site ( + id bigint(20) NOT NULL auto_increment, + domain varchar(200) NOT NULL default '', + path varchar(100) NOT NULL default '', + PRIMARY KEY (id), + KEY domain (domain,path) +) $charset_collate; +CREATE TABLE $wpdb->sitemeta ( + meta_id bigint(20) NOT NULL auto_increment, + site_id bigint(20) NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (meta_id), + KEY meta_key (meta_key), + KEY site_id (site_id) +) $charset_collate; +CREATE TABLE $wpdb->signups ( + domain varchar(200) NOT NULL default '', + path varchar(100) NOT NULL default '', + title longtext NOT NULL, + user_login varchar(60) NOT NULL default '', + user_email varchar(100) NOT NULL default '', + registered datetime NOT NULL default '0000-00-00 00:00:00', + activated datetime NOT NULL default '0000-00-00 00:00:00', + active tinyint(1) NOT NULL default '0', + activation_key varchar(50) NOT NULL default '', + meta longtext, + KEY activation_key (activation_key), + KEY domain (domain) +) $charset_collate;"; + + switch ( $scope ) { + case 'blog' : + $queries = $blog_tables; + break; + case 'global' : + $queries = $global_tables; + if ( $is_multisite ) + $queries .= $ms_global_tables; + break; + case 'ms_global' : + $queries = $ms_global_tables; + break; + default: + case 'all' : + $queries = $global_tables . $blog_tables; + if ( $is_multisite ) + $queries .= $ms_global_tables; + break; + } + + if ( isset( $old_blog_id ) ) + $wpdb->set_blog_id( $old_blog_id ); + + return $queries; +} + +// Populate for back compat. +$wp_queries = wp_get_db_schema( 'all' ); + +/** + * Create WordPress options and set the default values. + * + * @since 1.5.0 + * @uses $wpdb + * @uses $wp_db_version + */ +function populate_options() { + global $wpdb, $wp_db_version, $current_site, $wp_current_db_version; + + $guessurl = wp_guess_url(); + + do_action('populate_options'); + + if ( ini_get('safe_mode') ) { + // Safe mode can break mkdir() so use a flat structure by default. + $uploads_use_yearmonth_folders = 0; + } else { + $uploads_use_yearmonth_folders = 1; + } + + $template = WP_DEFAULT_THEME; + // If default theme is a child theme, we need to get its template + $theme = wp_get_theme( $template ); + if ( ! $theme->errors() ) + $template = $theme->get_template(); + + $timezone_string = ''; + $gmt_offset = 0; + /* translators: default GMT offset or timezone string. Must be either a valid offset (-12 to 14) + or a valid timezone string (America/New_York). See http://us3.php.net/manual/en/timezones.php + for all timezone strings supported by PHP. + */ + $offset_or_tz = _x( '0', 'default GMT offset or timezone string' ); + if ( is_numeric( $offset_or_tz ) ) + $gmt_offset = $offset_or_tz; + elseif ( $offset_or_tz && in_array( $offset_or_tz, timezone_identifiers_list() ) ) + $timezone_string = $offset_or_tz; + + $options = array( + 'siteurl' => $guessurl, + 'blogname' => __('My Site'), + /* translators: blog tagline */ + 'blogdescription' => __('Just another WordPress site'), + 'users_can_register' => 0, + 'admin_email' => 'you@example.com', + /* translators: default start of the week. 0 = Sunday, 1 = Monday */ + 'start_of_week' => _x( '1', 'start of week' ), + 'use_balanceTags' => 0, + 'use_smilies' => 1, + 'require_name_email' => 1, + 'comments_notify' => 1, + 'posts_per_rss' => 10, + 'rss_use_excerpt' => 0, + 'mailserver_url' => 'mail.example.com', + 'mailserver_login' => 'login@example.com', + 'mailserver_pass' => 'password', + 'mailserver_port' => 110, + 'default_category' => 1, + 'default_comment_status' => 'open', + 'default_ping_status' => 'open', + 'default_pingback_flag' => 1, + 'default_post_edit_rows' => 20, + 'posts_per_page' => 10, + /* translators: default date format, see http://php.net/date */ + 'date_format' => __('F j, Y'), + /* translators: default time format, see http://php.net/date */ + 'time_format' => __('g:i a'), + /* translators: links last updated date format, see http://php.net/date */ + 'links_updated_date_format' => __('F j, Y g:i a'), + 'links_recently_updated_prepend' => '', + 'links_recently_updated_append' => '', + 'links_recently_updated_time' => 120, + 'comment_moderation' => 0, + 'moderation_notify' => 1, + 'permalink_structure' => '', + 'gzipcompression' => 0, + 'hack_file' => 0, + 'blog_charset' => 'UTF-8', + 'moderation_keys' => '', + 'active_plugins' => array(), + 'home' => $guessurl, + 'category_base' => '', + 'ping_sites' => 'http://rpc.pingomatic.com/', + 'advanced_edit' => 0, + 'comment_max_links' => 2, + 'gmt_offset' => $gmt_offset, + + // 1.5 + 'default_email_category' => 1, + 'recently_edited' => '', + 'template' => $template, + 'stylesheet' => WP_DEFAULT_THEME, + 'comment_whitelist' => 1, + 'blacklist_keys' => '', + 'comment_registration' => 0, + 'html_type' => 'text/html', + + // 1.5.1 + 'use_trackback' => 0, + + // 2.0 + 'default_role' => 'subscriber', + 'db_version' => $wp_db_version, + + // 2.0.1 + 'uploads_use_yearmonth_folders' => $uploads_use_yearmonth_folders, + 'upload_path' => '', + + // 2.1 + 'blog_public' => '1', + 'default_link_category' => 2, + 'show_on_front' => 'posts', + + // 2.2 + 'tag_base' => '', + + // 2.5 + 'show_avatars' => '1', + 'avatar_rating' => 'G', + 'upload_url_path' => '', + 'thumbnail_size_w' => 150, + 'thumbnail_size_h' => 150, + 'thumbnail_crop' => 1, + 'medium_size_w' => 300, + 'medium_size_h' => 300, + + // 2.6 + 'avatar_default' => 'mystery', + 'enable_app' => 0, + 'enable_xmlrpc' => 0, + + // 2.7 + 'large_size_w' => 1024, + 'large_size_h' => 1024, + 'image_default_link_type' => 'file', + 'image_default_size' => '', + 'image_default_align' => '', + 'close_comments_for_old_posts' => 0, + 'close_comments_days_old' => 14, + 'thread_comments' => 1, + 'thread_comments_depth' => 5, + 'page_comments' => 0, + 'comments_per_page' => 50, + 'default_comments_page' => 'newest', + 'comment_order' => 'asc', + 'sticky_posts' => array(), + 'widget_categories' => array(), + 'widget_text' => array(), + 'widget_rss' => array(), + 'uninstall_plugins' => array(), + + // 2.8 + 'timezone_string' => $timezone_string, + + // 2.9 + 'embed_autourls' => 1, + 'embed_size_w' => '', + 'embed_size_h' => 600, + + // 3.0 + 'page_for_posts' => 0, + 'page_on_front' => 0, + + // 3.1 + 'default_post_format' => 0, + ); + + // 3.3 + if ( ! is_multisite() ) { + $options['initial_db_version'] = ! empty( $wp_current_db_version ) && $wp_current_db_version < $wp_db_version + ? $wp_current_db_version : $wp_db_version; + } + + // 3.0 multisite + if ( is_multisite() ) { + /* translators: blog tagline */ + $options[ 'blogdescription' ] = sprintf(__('Just another %s site'), $current_site->site_name ); + $options[ 'permalink_structure' ] = '/%year%/%monthnum%/%day%/%postname%/'; + } + + // Set autoload to no for these options + $fat_options = array( 'moderation_keys', 'recently_edited', 'blacklist_keys', 'uninstall_plugins' ); + + $existing_options = $wpdb->get_col("SELECT option_name FROM $wpdb->options"); + + $insert = ''; + foreach ( $options as $option => $value ) { + if ( in_array($option, $existing_options) ) + continue; + if ( in_array($option, $fat_options) ) + $autoload = 'no'; + else + $autoload = 'yes'; + + $option = $wpdb->escape($option); + if ( is_array($value) ) + $value = serialize($value); + $value = $wpdb->escape($value); + if ( !empty($insert) ) + $insert .= ', '; + $insert .= "('$option', '$value', '$autoload')"; + } + + if ( !empty($insert) ) + $wpdb->query("INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES " . $insert); + + // in case it is set, but blank, update "home" + if ( !__get_option('home') ) update_option('home', $guessurl); + + // Delete unused options + $unusedoptions = array ('blodotgsping_url', 'bodyterminator', 'emailtestonly', 'phoneemail_separator', 'smilies_directory', 'subjectprefix', 'use_bbcode', 'use_blodotgsping', 'use_phoneemail', 'use_quicktags', 'use_weblogsping', 'weblogs_cache_file', 'use_preview', 'use_htmltrans', 'smilies_directory', 'fileupload_allowedusers', 'use_phoneemail', 'default_post_status', 'default_post_category', 'archive_mode', 'time_difference', 'links_minadminlevel', 'links_use_adminlevels', 'links_rating_type', 'links_rating_char', 'links_rating_ignore_zero', 'links_rating_single_image', 'links_rating_image0', 'links_rating_image1', 'links_rating_image2', 'links_rating_image3', 'links_rating_image4', 'links_rating_image5', 'links_rating_image6', 'links_rating_image7', 'links_rating_image8', 'links_rating_image9', 'weblogs_cacheminutes', 'comment_allowed_tags', 'search_engine_friendly_urls', 'default_geourl_lat', 'default_geourl_lon', 'use_default_geourl', 'weblogs_xml_url', 'new_users_can_blog', '_wpnonce', '_wp_http_referer', 'Update', 'action', 'rich_editing', 'autosave_interval', 'deactivated_plugins', 'can_compress_scripts', 'page_uris', 'update_core', 'update_plugins', 'update_themes', 'doing_cron', 'random_seed', 'rss_excerpt_length', 'secret', 'use_linksupdate', 'default_comment_status_page', 'wporg_popular_tags', 'what_to_show', 'rss_language'); + foreach ( $unusedoptions as $option ) + delete_option($option); + + // delete obsolete magpie stuff + $wpdb->query("DELETE FROM $wpdb->options WHERE option_name REGEXP '^rss_[0-9a-f]{32}(_ts)?$'"); +} + +/** + * Execute WordPress role creation for the various WordPress versions. + * + * @since 2.0.0 + */ +function populate_roles() { + populate_roles_160(); + populate_roles_210(); + populate_roles_230(); + populate_roles_250(); + populate_roles_260(); + populate_roles_270(); + populate_roles_280(); + populate_roles_300(); +} + +/** + * Create the roles for WordPress 2.0 + * + * @since 2.0.0 + */ +function populate_roles_160() { + // Add roles + + // Dummy gettext calls to get strings in the catalog. + /* translators: user role */ + _x('Administrator', 'User role'); + /* translators: user role */ + _x('Editor', 'User role'); + /* translators: user role */ + _x('Author', 'User role'); + /* translators: user role */ + _x('Contributor', 'User role'); + /* translators: user role */ + _x('Subscriber', 'User role'); + + add_role('administrator', 'Administrator'); + add_role('editor', 'Editor'); + add_role('author', 'Author'); + add_role('contributor', 'Contributor'); + add_role('subscriber', 'Subscriber'); + + // Add caps for Administrator role + $role =& get_role('administrator'); + $role->add_cap('switch_themes'); + $role->add_cap('edit_themes'); + $role->add_cap('activate_plugins'); + $role->add_cap('edit_plugins'); + $role->add_cap('edit_users'); + $role->add_cap('edit_files'); + $role->add_cap('manage_options'); + $role->add_cap('moderate_comments'); + $role->add_cap('manage_categories'); + $role->add_cap('manage_links'); + $role->add_cap('upload_files'); + $role->add_cap('import'); + $role->add_cap('unfiltered_html'); + $role->add_cap('edit_posts'); + $role->add_cap('edit_others_posts'); + $role->add_cap('edit_published_posts'); + $role->add_cap('publish_posts'); + $role->add_cap('edit_pages'); + $role->add_cap('read'); + $role->add_cap('level_10'); + $role->add_cap('level_9'); + $role->add_cap('level_8'); + $role->add_cap('level_7'); + $role->add_cap('level_6'); + $role->add_cap('level_5'); + $role->add_cap('level_4'); + $role->add_cap('level_3'); + $role->add_cap('level_2'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Editor role + $role =& get_role('editor'); + $role->add_cap('moderate_comments'); + $role->add_cap('manage_categories'); + $role->add_cap('manage_links'); + $role->add_cap('upload_files'); + $role->add_cap('unfiltered_html'); + $role->add_cap('edit_posts'); + $role->add_cap('edit_others_posts'); + $role->add_cap('edit_published_posts'); + $role->add_cap('publish_posts'); + $role->add_cap('edit_pages'); + $role->add_cap('read'); + $role->add_cap('level_7'); + $role->add_cap('level_6'); + $role->add_cap('level_5'); + $role->add_cap('level_4'); + $role->add_cap('level_3'); + $role->add_cap('level_2'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Author role + $role =& get_role('author'); + $role->add_cap('upload_files'); + $role->add_cap('edit_posts'); + $role->add_cap('edit_published_posts'); + $role->add_cap('publish_posts'); + $role->add_cap('read'); + $role->add_cap('level_2'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Contributor role + $role =& get_role('contributor'); + $role->add_cap('edit_posts'); + $role->add_cap('read'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Subscriber role + $role =& get_role('subscriber'); + $role->add_cap('read'); + $role->add_cap('level_0'); +} + +/** + * Create and modify WordPress roles for WordPress 2.1. + * + * @since 2.1.0 + */ +function populate_roles_210() { + $roles = array('administrator', 'editor'); + foreach ($roles as $role) { + $role =& get_role($role); + if ( empty($role) ) + continue; + + $role->add_cap('edit_others_pages'); + $role->add_cap('edit_published_pages'); + $role->add_cap('publish_pages'); + $role->add_cap('delete_pages'); + $role->add_cap('delete_others_pages'); + $role->add_cap('delete_published_pages'); + $role->add_cap('delete_posts'); + $role->add_cap('delete_others_posts'); + $role->add_cap('delete_published_posts'); + $role->add_cap('delete_private_posts'); + $role->add_cap('edit_private_posts'); + $role->add_cap('read_private_posts'); + $role->add_cap('delete_private_pages'); + $role->add_cap('edit_private_pages'); + $role->add_cap('read_private_pages'); + } + + $role =& get_role('administrator'); + if ( ! empty($role) ) { + $role->add_cap('delete_users'); + $role->add_cap('create_users'); + } + + $role =& get_role('author'); + if ( ! empty($role) ) { + $role->add_cap('delete_posts'); + $role->add_cap('delete_published_posts'); + } + + $role =& get_role('contributor'); + if ( ! empty($role) ) { + $role->add_cap('delete_posts'); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.3. + * + * @since 2.3.0 + */ +function populate_roles_230() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'unfiltered_upload' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.5. + * + * @since 2.5.0 + */ +function populate_roles_250() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'edit_dashboard' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.6. + * + * @since 2.6.0 + */ +function populate_roles_260() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'update_plugins' ); + $role->add_cap( 'delete_plugins' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.7. + * + * @since 2.7.0 + */ +function populate_roles_270() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'install_plugins' ); + $role->add_cap( 'update_themes' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.8. + * + * @since 2.8.0 + */ +function populate_roles_280() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'install_themes' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 3.0. + * + * @since 3.0.0 + */ +function populate_roles_300() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'update_core' ); + $role->add_cap( 'list_users' ); + $role->add_cap( 'remove_users' ); + $role->add_cap( 'add_users' ); + $role->add_cap( 'promote_users' ); + $role->add_cap( 'edit_theme_options' ); + $role->add_cap( 'delete_themes' ); + $role->add_cap( 'export' ); + } +} + +/** + * Install Network. + * + * @since 3.0.0 + * + */ +if ( !function_exists( 'install_network' ) ) : +function install_network() { + if ( ! defined( 'WP_INSTALLING_NETWORK' ) ) + define( 'WP_INSTALLING_NETWORK', true ); + + dbDelta( wp_get_db_schema( 'global' ) ); +} +endif; + +/** + * populate network settings + * + * @since 3.0.0 + * + * @param int $network_id id of network to populate + * @return bool|WP_Error True on success, or WP_Error on warning (with the install otherwise successful, + * so the error code must be checked) or failure. + */ +function populate_network( $network_id = 1, $domain = '', $email = '', $site_name = '', $path = '/', $subdomain_install = false ) { + global $wpdb, $current_site, $wp_db_version, $wp_rewrite; + + $errors = new WP_Error(); + if ( '' == $domain ) + $errors->add( 'empty_domain', __( 'You must provide a domain name.' ) ); + if ( '' == $site_name ) + $errors->add( 'empty_sitename', __( 'You must provide a name for your network of sites.' ) ); + + // check for network collision + if ( $network_id == $wpdb->get_var( $wpdb->prepare( "SELECT id FROM $wpdb->site WHERE id = %d", $network_id ) ) ) + $errors->add( 'siteid_exists', __( 'The network already exists.' ) ); + + $site_user = get_user_by( 'email', $email ); + if ( ! is_email( $email ) ) + $errors->add( 'invalid_email', __( 'You must provide a valid e-mail address.' ) ); + + if ( $errors->get_error_code() ) + return $errors; + + // set up site tables + $template = get_option( 'template' ); + $stylesheet = get_option( 'stylesheet' ); + $allowed_themes = array( $stylesheet => true ); + if ( $template != $stylesheet ) + $allowed_themes[ $template ] = true; + if ( WP_DEFAULT_THEME != $stylesheet && WP_DEFAULT_THEME != $template ) + $allowed_themes[ WP_DEFAULT_THEME ] = true; + + if ( 1 == $network_id ) { + $wpdb->insert( $wpdb->site, array( 'domain' => $domain, 'path' => $path ) ); + $network_id = $wpdb->insert_id; + } else { + $wpdb->insert( $wpdb->site, array( 'domain' => $domain, 'path' => $path, 'id' => $network_id ) ); + } + + if ( !is_multisite() ) { + $site_admins = array( $site_user->user_login ); + $users = get_users( array( 'fields' => array( 'ID', 'user_login' ) ) ); + if ( $users ) { + foreach ( $users as $user ) { + if ( is_super_admin( $user->ID ) && !in_array( $user->user_login, $site_admins ) ) + $site_admins[] = $user->user_login; + } + } + } else { + $site_admins = get_site_option( 'site_admins' ); + } + + $welcome_email = __( 'Dear User, + +Your new SITE_NAME site has been successfully set up at: +BLOG_URL + +You can log in to the administrator account with the following information: +Username: USERNAME +Password: PASSWORD +Log in here: BLOG_URLwp-login.php + +We hope you enjoy your new site. Thanks! + +--The Team @ SITE_NAME' ); + + $sitemeta = array( + 'site_name' => $site_name, + 'admin_email' => $site_user->user_email, + 'admin_user_id' => $site_user->ID, + 'registration' => 'none', + 'upload_filetypes' => 'jpg jpeg png gif mp3 mov avi wmv midi mid pdf', + 'blog_upload_space' => 100, + 'fileupload_maxk' => 1500, + 'site_admins' => $site_admins, + 'allowedthemes' => $allowed_themes, + 'illegal_names' => array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator', 'files' ), + 'wpmu_upgrade_site' => $wp_db_version, + 'welcome_email' => $welcome_email, + 'first_post' => __( 'Welcome to SITE_NAME. This is your first post. Edit or delete it, then start blogging!' ), + // @todo - network admins should have a method of editing the network siteurl (used for cookie hash) + 'siteurl' => get_option( 'siteurl' ) . '/', + 'add_new_users' => '0', + 'upload_space_check_disabled' => '0', + 'subdomain_install' => intval( $subdomain_install ), + 'global_terms_enabled' => global_terms_enabled() ? '1' : '0', + 'initial_db_version' => get_option( 'initial_db_version' ), + 'active_sitewide_plugins' => array(), + ); + if ( ! $subdomain_install ) + $sitemeta['illegal_names'][] = 'blog'; + + $insert = ''; + foreach ( $sitemeta as $meta_key => $meta_value ) { + $meta_key = $wpdb->escape( $meta_key ); + if ( is_array( $meta_value ) ) + $meta_value = serialize( $meta_value ); + $meta_value = $wpdb->escape( $meta_value ); + if ( !empty( $insert ) ) + $insert .= ', '; + $insert .= "( $network_id, '$meta_key', '$meta_value')"; + } + $wpdb->query( "INSERT INTO $wpdb->sitemeta ( site_id, meta_key, meta_value ) VALUES " . $insert ); + + $current_site->domain = $domain; + $current_site->path = $path; + $current_site->site_name = ucfirst( $domain ); + + if ( !is_multisite() ) { + $wpdb->insert( $wpdb->blogs, array( 'site_id' => $network_id, 'domain' => $domain, 'path' => $path, 'registered' => current_time( 'mysql' ) ) ); + $blog_id = $wpdb->insert_id; + update_user_meta( $site_user->ID, 'source_domain', $domain ); + update_user_meta( $site_user->ID, 'primary_blog', $blog_id ); + if ( !$upload_path = get_option( 'upload_path' ) ) { + $upload_path = substr( WP_CONTENT_DIR, strlen( ABSPATH ) ) . '/uploads'; + update_option( 'upload_path', $upload_path ); + } + update_option( 'fileupload_url', get_option( 'siteurl' ) . '/' . $upload_path ); + } + + if ( $subdomain_install ) + $wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' ); + else + $wp_rewrite->set_permalink_structure( '/blog/%year%/%monthnum%/%day%/%postname%/' ); + + flush_rewrite_rules(); + + if ( $subdomain_install ) { + $vhost_ok = false; + $errstr = ''; + $hostname = substr( md5( time() ), 0, 6 ) . '.' . $domain; // Very random hostname! + $page = wp_remote_get( 'http://' . $hostname, array( 'timeout' => 5, 'httpversion' => '1.1' ) ); + if ( is_wp_error( $page ) ) + $errstr = $page->get_error_message(); + elseif ( 200 == wp_remote_retrieve_response_code( $page ) ) + $vhost_ok = true; + + if ( ! $vhost_ok ) { + $msg = '

    ' . __( 'Warning! Wildcard DNS may not be configured correctly!' ) . '

    '; + $msg .= '

    ' . sprintf( __( 'The installer attempted to contact a random hostname (%1$s) on your domain.' ), $hostname ); + if ( ! empty ( $errstr ) ) + $msg .= ' ' . sprintf( __( 'This resulted in an error message: %s' ), '' . $errstr . '' ); + $msg .= '

    '; + $msg .= '

    ' . __( 'To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a * hostname record pointing at your web server in your DNS configuration tool.' ) . '

    '; + $msg .= '

    ' . __( 'You can still use your site but any subdomain you create may not be accessible. If you know your DNS is correct, ignore this message.' ) . '

    '; + return new WP_Error( 'no_wildcard_dns', $msg ); + } + } + + return true; +} diff --git a/wp-admin/includes/screen.php b/wp-admin/includes/screen.php new file mode 100644 index 0000000..2fe318d --- /dev/null +++ b/wp-admin/includes/screen.php @@ -0,0 +1,1026 @@ + UI String + */ +function get_column_headers( $screen ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + static $column_headers = array(); + + if ( ! isset( $column_headers[ $screen->id ] ) ) + $column_headers[ $screen->id ] = apply_filters( 'manage_' . $screen->id . '_columns', array() ); + + return $column_headers[ $screen->id ]; +} + +/** + * Get a list of hidden columns. + * + * @since 2.7.0 + * + * @param string|WP_Screen $screen The screen you want the hidden columns for + * @return array + */ +function get_hidden_columns( $screen ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + return (array) get_user_option( 'manage' . $screen->id . 'columnshidden' ); +} + +/** + * Prints the meta box preferences for screen meta. + * + * @since 2.7.0 + * + * @param string|WP_Screen $screen + */ +function meta_box_prefs( $screen ) { + global $wp_meta_boxes; + + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + if ( empty($wp_meta_boxes[$screen->id]) ) + return; + + $hidden = get_hidden_meta_boxes($screen); + + foreach ( array_keys($wp_meta_boxes[$screen->id]) as $context ) { + foreach ( array_keys($wp_meta_boxes[$screen->id][$context]) as $priority ) { + foreach ( $wp_meta_boxes[$screen->id][$context][$priority] as $box ) { + if ( false == $box || ! $box['title'] ) + continue; + // Submit box cannot be hidden + if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] ) + continue; + $box_id = $box['id']; + echo '\n"; + } + } + } +} + +/** + * Get Hidden Meta Boxes + * + * @since 2.7.0 + * + * @param string|WP_Screen $screen Screen identifier + * @return array Hidden Meta Boxes + */ +function get_hidden_meta_boxes( $screen ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + $hidden = get_user_option( "metaboxhidden_{$screen->id}" ); + + $use_defaults = ! is_array( $hidden ); + + // Hide slug boxes by default + if ( $use_defaults ) { + $hidden = array(); + if ( 'post' == $screen->base ) { + if ( 'post' == $screen->post_type || 'page' == $screen->post_type ) + $hidden = array('slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv'); + else + $hidden = array( 'slugdiv' ); + } + $hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen ); + } + + return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults ); +} + +/** + * Register and configure an admin screen option + * + * @since 3.1.0 + * + * @param string $option An option name. + * @param mixed $args Option-dependent arguments. + */ +function add_screen_option( $option, $args = array() ) { + $current_screen = get_current_screen(); + + if ( ! $current_screen ) + return; + + $current_screen->add_option( $option, $args ); +} + +/** + * Displays a screen icon. + * + * @uses get_screen_icon() + * @since 2.7.0 + * + * @param string|WP_Screen $screen Optional. Accepts a screen object (and defaults to the current screen object) + * which it uses to determine an icon HTML ID. Or, if a string is provided, it is used to form the icon HTML ID. + */ +function screen_icon( $screen = '' ) { + echo get_screen_icon( $screen ); +} + +/** + * Gets a screen icon. + * + * @since 3.2.0 + * + * @param string|WP_Screen $screen Optional. Accepts a screen object (and defaults to the current screen object) + * which it uses to determine an icon HTML ID. Or, if a string is provided, it is used to form the icon HTML ID. + * @return string HTML for the screen icon. + */ +function get_screen_icon( $screen = '' ) { + if ( empty( $screen ) ) + $screen = get_current_screen(); + elseif ( is_string( $screen ) ) + $icon_id = $screen; + + $class = 'icon32'; + + if ( empty( $icon_id ) ) { + if ( ! empty( $screen->parent_base ) ) + $icon_id = $screen->parent_base; + else + $icon_id = $screen->base; + + if ( 'page' == $screen->post_type ) + $icon_id = 'edit-pages'; + + if ( $screen->post_type ) + $class .= ' ' . sanitize_html_class( 'icon32-posts-' . $screen->post_type ); + } + + return '

    '; +} + +/** + * Get the current screen object + * + * @since 3.1.0 + * + * @return WP_Screen Current screen object + */ +function get_current_screen() { + global $current_screen; + + if ( ! isset( $current_screen ) ) + return null; + + return $current_screen; +} + +/** + * Set the current screen object + * + * @since 3.0.0 + * @uses $current_screen + * + * @param mixed $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen, + * or an existing screen object. + */ +function set_current_screen( $hook_name = '' ) { + WP_Screen::get( $hook_name )->set_current_screen(); +} + +/** + * A class representing the admin screen. + * + * @since 3.3.0 + * @access public + */ +final class WP_Screen { + /** + * Any action associated with the screen. 'add' for *-add.php and *-new.php screens. Empty otherwise. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $action; + + /** + * The base type of the screen. This is typically the same as $id but with any post types and taxonomies stripped. + * For example, for an $id of 'edit-post' the base is 'edit'. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $base; + + /** + * The number of columns to display. Access with get_columns(). + * + * @since 3.4.0 + * @var int + * @access private + */ + private $columns = 0; + + /** + * The unique ID of the screen. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $id; + + /** + * Whether the screen is in the network admin. + * + * @since 3.3.0 + * @var bool + * @access public + */ + public $is_network; + + /** + * Whether the screen is in the user admin. + * + * @since 3.3.0 + * @var bool + * @access public + */ + public $is_user; + + /** + * The base menu parent. + * This is derived from $parent_file by removing the query string and any .php extension. + * $parent_file values of 'edit.php?post_type=page' and 'edit.php?post_type=post' have a $parent_base of 'edit'. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $parent_base; + + /** + * The parent_file for the screen per the admin menu system. + * Some $parent_file values are 'edit.php?post_type=page', 'edit.php', and 'options-general.php'. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $parent_file; + + /** + * The post type associated with the screen, if any. + * The 'edit.php?post_type=page' screen has a post type of 'page'. + * The 'edit-tags.php?taxonomy=$taxonomy&post_type=page' screen has a post type of 'page'. + * + * @since 3.3.0 + * @var string + * @access public + */ + public $post_type; + + /** + * The taxonomy associated with the screen, if any. + * The 'edit-tags.php?taxonomy=category' screen has a taxonomy of 'category'. + * @since 3.3.0 + * @var string + * @access public + */ + public $taxonomy; + + /** + * The help tab data associated with the screen, if any. + * + * @since 3.3.0 + * @var array + * @access private + */ + private $_help_tabs = array(); + + /** + * The help sidebar data associated with screen, if any. + * + * @since 3.3.0 + * @var string + * @access private + */ + private $_help_sidebar = ''; + + /** + * Stores old string-based help. + */ + private static $_old_compat_help = array(); + + /** + * The screen options associated with screen, if any. + * + * @since 3.3.0 + * @var array + * @access private + */ + private $_options = array(); + + /** + * The screen object registry. + * + * @since 3.3.0 + * @var array + * @access private + */ + private static $_registry = array(); + + /** + * Stores the result of the public show_screen_options function. + * + * @since 3.3.0 + * @var bool + * @access private + */ + private $_show_screen_options; + + /** + * Stores the 'screen_settings' section of screen options. + * + * @since 3.3.0 + * @var string + * @access private + */ + private $_screen_settings; + + /** + * Fetches a screen object. + * + * @since 3.3.0 + * @access public + * + * @param string $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen. + * Defaults to the current $hook_suffix global. + * @return WP_Screen Screen object. + */ + public static function get( $hook_name = '' ) { + + if ( is_a( $hook_name, 'WP_Screen' ) ) + return $hook_name; + + $post_type = $taxonomy = null; + $is_network = $is_user = false; + $action = ''; + + if ( $hook_name ) + $id = $hook_name; + else + $id = $GLOBALS['hook_suffix']; + + // For those pesky meta boxes. + if ( $hook_name && post_type_exists( $hook_name ) ) { + $post_type = $id; + $id = 'post'; // changes later. ends up being $base. + } else { + if ( '.php' == substr( $id, -4 ) ) + $id = substr( $id, 0, -4 ); + + if ( 'post-new' == $id || 'link-add' == $id || 'media-new' == $id || 'user-new' == $id ) { + $id = substr( $id, 0, -4 ); + $action = 'add'; + } + } + + if ( ! $post_type && $hook_name ) { + if ( '-network' == substr( $id, -8 ) ) { + $id = substr( $id, 0, -8 ); + $is_network = true; + } elseif ( '-user' == substr( $id, -5 ) ) { + $id = substr( $id, 0, -5 ); + $is_user = true; + } + + $id = sanitize_key( $id ); + if ( 'edit-comments' != $id && 'edit-tags' != $id && 'edit-' == substr( $id, 0, 5 ) ) { + $maybe = substr( $id, 5 ); + if ( taxonomy_exists( $maybe ) ) { + $id = 'edit-tags'; + $taxonomy = $maybe; + } elseif ( post_type_exists( $maybe ) ) { + $id = 'edit'; + $post_type = $maybe; + } + } + } else { + $is_network = is_network_admin(); + $is_user = is_user_admin(); + } + + if ( 'index' == $id ) + $id = 'dashboard'; + + $base = $id; + + // If this is the current screen, see if we can be more accurate for post types and taxonomies. + if ( ! $hook_name ) { + if ( isset( $_REQUEST['post_type'] ) ) + $post_type = post_type_exists( $_REQUEST['post_type'] ) ? $_REQUEST['post_type'] : false; + if ( isset( $_REQUEST['taxonomy'] ) ) + $taxonomy = taxonomy_exists( $_REQUEST['taxonomy'] ) ? $_REQUEST['taxonomy'] : false; + + switch ( $base ) { + case 'post' : + if ( isset( $_GET['post'] ) ) + $post_id = (int) $_GET['post']; + elseif ( isset( $_POST['post_ID'] ) ) + $post_id = (int) $_POST['post_ID']; + else + $post_id = 0; + + if ( $post_id ) { + $post = get_post( $post_id ); + if ( $post ) + $post_type = $post->post_type; + } + break; + case 'edit-tags' : + if ( null === $post_type && is_object_in_taxonomy( 'post', $taxonomy ? $taxonomy : 'post_tag' ) ) + $post_type = 'post'; + break; + } + } + + switch ( $base ) { + case 'post' : + if ( null === $post_type ) + $post_type = 'post'; + $id = $post_type; + break; + case 'edit' : + if ( null === $post_type ) + $post_type = 'post'; + $id .= '-' . $post_type; + break; + case 'edit-tags' : + if ( null === $taxonomy ) + $taxonomy = 'post_tag'; + $id = 'edit-' . $taxonomy; + break; + } + + if ( $is_network ) { + $id .= '-network'; + $base .= '-network'; + } elseif ( $is_user ) { + $id .= '-user'; + $base .= '-user'; + } + + if ( isset( self::$_registry[ $id ] ) ) { + $screen = self::$_registry[ $id ]; + if ( $screen === get_current_screen() ) + return $screen; + } else { + $screen = new WP_Screen(); + $screen->id = $id; + } + + $screen->base = $base; + $screen->action = $action; + $screen->post_type = (string) $post_type; + $screen->taxonomy = (string) $taxonomy; + $screen->is_user = $is_user; + $screen->is_network = $is_network; + + self::$_registry[ $id ] = $screen; + + return $screen; + } + + /** + * Makes the screen object the current screen. + * + * @see set_current_screen() + * @since 3.3.0 + */ + function set_current_screen() { + global $current_screen, $taxnow, $typenow; + $current_screen = $this; + $taxnow = $this->taxonomy; + $typenow = $this->post_type; + do_action( 'current_screen', $current_screen ); + } + + /** + * Constructor + * + * @since 3.3.0 + * @access private + */ + private function __construct() {} + + /** + * Sets the old string-based contextual help for the screen. + * + * For backwards compatibility. + * + * @since 3.3.0 + * + * @param WP_Screen $screen A screen object. + * @param string $help Help text. + */ + static function add_old_compat_help( $screen, $help ) { + self::$_old_compat_help[ $screen->id ] = $help; + } + + /** + * Set the parent information for the screen. + * This is called in admin-header.php after the menu parent for the screen has been determined. + * + * @since 3.3.0 + * + * @param string $parent_file The parent file of the screen. Typically the $parent_file global. + */ + function set_parentage( $parent_file ) { + $this->parent_file = $parent_file; + list( $this->parent_base ) = explode( '?', $parent_file ); + $this->parent_base = str_replace( '.php', '', $this->parent_base ); + } + + /** + * Adds an option for the screen. + * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add screen options. + * + * @since 3.3.0 + * + * @param string $option Option ID + * @param mixed $args Option-dependent arguments. + */ + public function add_option( $option, $args = array() ) { + $this->_options[ $option ] = $args; + } + + /** + * Gets the arguments for an option for the screen. + * + * @since 3.3.0 + * + * @param string $option Option ID. + * @param mixed $key Optional. Specific array key for when the option is an array. + */ + public function get_option( $option, $key = false ) { + if ( ! isset( $this->_options[ $option ] ) ) + return null; + if ( $key ) { + if ( isset( $this->_options[ $option ][ $key ] ) ) + return $this->_options[ $option ][ $key ]; + return null; + } + return $this->_options[ $option ]; + } + + /** + * Gets the help tabs registered for the screen. + * + * @since 3.4.0 + * + * @return array Help tabs with arguments. + */ + public function get_help_tabs() { + return $this->_help_tabs; + } + + /** + * Gets the arguments for a help tab. + * + * @since 3.4.0 + * + * @param string $id Help Tab ID. + * @return array Help tab arguments. + */ + public function get_help_tab( $id ) { + if ( ! isset( $this->_help_tabs[ $id ] ) ) + return null; + return $this->_help_tabs[ $id ]; + } + + /** + * Add a help tab to the contextual help for the screen. + * Call this on the load-$pagenow hook for the relevant screen. + * + * @since 3.3.0 + * + * @param array $args + * - string - title - Title for the tab. + * - string - id - Tab ID. Must be HTML-safe. + * - string - content - Help tab content in plain text or HTML. Optional. + * - callback - callback - A callback to generate the tab content. Optional. + * + */ + public function add_help_tab( $args ) { + $defaults = array( + 'title' => false, + 'id' => false, + 'content' => '', + 'callback' => false, + ); + $args = wp_parse_args( $args, $defaults ); + + $args['id'] = sanitize_html_class( $args['id'] ); + + // Ensure we have an ID and title. + if ( ! $args['id'] || ! $args['title'] ) + return; + + // Allows for overriding an existing tab with that ID. + $this->_help_tabs[ $args['id'] ] = $args; + } + + /** + * Removes a help tab from the contextual help for the screen. + * + * @since 3.3.0 + * + * @param string $id The help tab ID. + */ + public function remove_help_tab( $id ) { + unset( $this->_help_tabs[ $id ] ); + } + + /** + * Removes all help tabs from the contextual help for the screen. + * + * @since 3.3.0 + */ + public function remove_help_tabs() { + $this->_help_tabs = array(); + } + + /** + * Gets the content from a contextual help sidebar. + * + * @since 3.4.0 + * + * @return string Contents of the help sidebar. + */ + public function get_help_sidebar() { + return $this->_help_sidebar; + } + + /** + * Add a sidebar to the contextual help for the screen. + * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add a sidebar to the contextual help. + * + * @since 3.3.0 + * + * @param string $content Sidebar content in plain text or HTML. + */ + public function set_help_sidebar( $content ) { + $this->_help_sidebar = $content; + } + + /** + * Gets the number of layout columns the user has selected. + * + * The layout_columns option controls the max number and default number of + * columns. This method returns the number of columns within that range selected + * by the user via Screen Options. If no selection has been made, the default + * provisioned in layout_columns is returned. If the screen does not support + * selecting the number of layout columns, 0 is returned. + * + * @since 3.4.0 + * + * @return int Number of columns to display. + */ + public function get_columns() { + return $this->columns; + } + + /** + * Render the screen's help section. + * + * This will trigger the deprecated filters for backwards compatibility. + * + * @since 3.3.0 + */ + public function render_screen_meta() { + + // Call old contextual_help_list filter. + self::$_old_compat_help = apply_filters( 'contextual_help_list', self::$_old_compat_help, $this ); + + $old_help = isset( self::$_old_compat_help[ $this->id ] ) ? self::$_old_compat_help[ $this->id ] : ''; + $old_help = apply_filters( 'contextual_help', $old_help, $this->id, $this ); + + // Default help only if there is no old-style block of text and no new-style help tabs. + if ( empty( $old_help ) && ! $this->get_help_tabs() ) { + $default_help = apply_filters( 'default_contextual_help', '' ); + if ( $default_help ) + $old_help = '

    ' . $default_help . '

    '; + } + + if ( $old_help ) { + $this->add_help_tab( array( + 'id' => 'old-contextual-help', + 'title' => __('Overview'), + 'content' => $old_help, + ) ); + } + + $help_sidebar = $this->get_help_sidebar(); + + $help_class = 'hidden'; + if ( ! $help_sidebar ) + $help_class .= ' no-sidebar'; + + // Time to render! + ?> +
    + +
    +
    +
    +
    +
      + get_help_tabs() as $tab ) : + $link_id = "tab-link-{$tab['id']}"; + $panel_id = "tab-panel-{$tab['id']}"; + ?> + + + +
    +
    + + +
    + +
    + + +
    + get_help_tabs() as $tab ): + $panel_id = "tab-panel-{$tab['id']}"; + ?> + +
    + +
    + +
    +
    +
    + id, $this ); + + if ( ! empty( $columns ) && isset( $columns[ $this->id ] ) ) + $this->add_option( 'layout_columns', array('max' => $columns[ $this->id ] ) ); + + if ( $this->get_option( 'layout_columns' ) ) { + $this->columns = (int) get_user_option("screen_layout_$this->id"); + + if ( ! $this->columns && $this->get_option( 'layout_columns', 'default' ) ) + $this->columns = $this->get_option( 'layout_columns', 'default' ); + } + $GLOBALS[ 'screen_layout_columns' ] = $this->columns; // Set the global for back-compat. + + // Add screen options + if ( $this->show_screen_options() ) + $this->render_screen_options(); + ?> +
    + get_help_tabs() && ! $this->show_screen_options() ) + return; + ?> + + _show_screen_options ) ) + return $this->_show_screen_options; + + $columns = get_column_headers( $this ); + + $show_screen = ! empty( $wp_meta_boxes[ $this->id ] ) || $columns || $this->get_option( 'per_page' ); + + $this->_screen_settings = apply_filters( 'screen_settings', '', $this ); + + switch ( $this->id ) { + case 'widgets': + $this->_screen_settings = '

    ' . __('Enable accessibility mode') . '' . __('Disable accessibility mode') . "

    \n"; + break; + } + + if ( $this->_screen_settings || $this->_options ) + $show_screen = true; + + $this->_show_screen_options = apply_filters( 'screen_options_show_screen', $show_screen, $this ); + return $this->_show_screen_options; + } + + /** + * Render the screen options tab. + * + * @since 3.3.0 + */ + public function render_screen_options() { + global $wp_meta_boxes, $wp_list_table; + + $columns = get_column_headers( $this ); + $hidden = get_hidden_columns( $this ); + + ?> + + get_option('layout_columns') ) + return; + + $screen_layout_columns = $this->get_columns(); + $num = $this->get_option( 'layout_columns', 'max' ); + + ?> +
    +
    + + +
    + get_option( 'per_page' ) ) + return; + + $per_page_label = $this->get_option( 'per_page', 'label' ); + + $option = $this->get_option( 'per_page', 'option' ); + if ( ! $option ) + $option = str_replace( '-', '_', "{$this->id}_per_page" ); + + $per_page = (int) get_user_option( $option ); + if ( empty( $per_page ) || $per_page < 1 ) { + $per_page = $this->get_option( 'per_page', 'default' ); + if ( ! $per_page ) + $per_page = 20; + } + + if ( 'edit_comments_per_page' == $option ) { + $comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all'; + $per_page = apply_filters( 'comments_per_page', $per_page, $comment_status ); + } elseif ( 'categories_per_page' == $option ) { + $per_page = apply_filters( 'edit_categories_per_page', $per_page ); + } else { + $per_page = apply_filters( $option, $per_page ); + } + + // Back compat + if ( isset( $this->post_type ) ) + $per_page = apply_filters( 'edit_posts_per_page', $per_page, $this->post_type ); + + ?> +
    + + + + + +
    + $cat_name, 'category_parent' => $parent) ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.0.0 + * + * @param unknown_type $categories + * @param unknown_type $post_id + * @return unknown + */ +function wp_create_categories($categories, $post_id = '') { + $cat_ids = array (); + foreach ($categories as $category) { + if ($id = category_exists($category)) + $cat_ids[] = $id; + else + if ($id = wp_create_category($category)) + $cat_ids[] = $id; + } + + if ( $post_id ) + wp_set_post_categories($post_id, $cat_ids); + + return $cat_ids; +} + +/** + * Updates an existing Category or creates a new Category. + * + * @since 2.0.0 + * + * @param mixed $catarr See defaults below. Set 'cat_ID' to a non-zero value to update an existing category. The 'taxonomy' key was added in 3.0.0. + * @param bool $wp_error Optional, since 2.5.0. Set this to true if the caller handles WP_Error return values. + * @return int|object The ID number of the new or updated Category on success. Zero or a WP_Error on failure, depending on param $wp_error. + */ +function wp_insert_category($catarr, $wp_error = false) { + $cat_defaults = array('cat_ID' => 0, 'taxonomy' => 'category', 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => ''); + $catarr = wp_parse_args($catarr, $cat_defaults); + extract($catarr, EXTR_SKIP); + + if ( trim( $cat_name ) == '' ) { + if ( ! $wp_error ) + return 0; + else + return new WP_Error( 'cat_name', __('You did not enter a category name.') ); + } + + $cat_ID = (int) $cat_ID; + + // Are we updating or creating? + if ( !empty ($cat_ID) ) + $update = true; + else + $update = false; + + $name = $cat_name; + $description = $category_description; + $slug = $category_nicename; + $parent = $category_parent; + + $parent = (int) $parent; + if ( $parent < 0 ) + $parent = 0; + + if ( empty( $parent ) || ! term_exists( $parent, $taxonomy ) || ( $cat_ID && term_is_ancestor_of( $cat_ID, $parent, $taxonomy ) ) ) + $parent = 0; + + $args = compact('name', 'slug', 'parent', 'description'); + + if ( $update ) + $cat_ID = wp_update_term($cat_ID, $taxonomy, $args); + else + $cat_ID = wp_insert_term($cat_name, $taxonomy, $args); + + if ( is_wp_error($cat_ID) ) { + if ( $wp_error ) + return $cat_ID; + else + return 0; + } + + return $cat_ID['term_id']; +} + +/** + * Aliases wp_insert_category() with minimal args. + * + * If you want to update only some fields of an existing category, call this + * function with only the new values set inside $catarr. + * + * @since 2.0.0 + * + * @param array $catarr The 'cat_ID' value is required. All other keys are optional. + * @return int|bool The ID number of the new or updated Category on success. Zero or FALSE on failure. + */ +function wp_update_category($catarr) { + $cat_ID = (int) $catarr['cat_ID']; + + if ( isset($catarr['category_parent']) && ($cat_ID == $catarr['category_parent']) ) + return false; + + // First, get all of the original fields + $category = get_category($cat_ID, ARRAY_A); + + // Escape data pulled from DB. + $category = add_magic_quotes($category); + + // Merge old and new fields with new fields overwriting old ones. + $catarr = array_merge($category, $catarr); + + return wp_insert_category($catarr); +} + +// +// Tags +// + +/** + * {@internal Missing Short Description}} + * + * @since 2.3.0 + * + * @param unknown_type $tag_name + * @return unknown + */ +function tag_exists($tag_name) { + return term_exists($tag_name, 'post_tag'); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.3.0 + * + * @param unknown_type $tag_name + * @return unknown + */ +function wp_create_tag($tag_name) { + return wp_create_term( $tag_name, 'post_tag'); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.3.0 + * + * @param unknown_type $post_id + * @return unknown + */ +function get_tags_to_edit( $post_id, $taxonomy = 'post_tag' ) { + return get_terms_to_edit( $post_id, $taxonomy); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.8.0 + * + * @param unknown_type $post_id + * @return unknown + */ +function get_terms_to_edit( $post_id, $taxonomy = 'post_tag' ) { + $post_id = (int) $post_id; + if ( !$post_id ) + return false; + + $tags = wp_get_post_terms($post_id, $taxonomy, array()); + + if ( !$tags ) + return false; + + if ( is_wp_error($tags) ) + return $tags; + + foreach ( $tags as $tag ) + $tag_names[] = $tag->name; + $tags_to_edit = join( ',', $tag_names ); + $tags_to_edit = esc_attr( $tags_to_edit ); + $tags_to_edit = apply_filters( 'terms_to_edit', $tags_to_edit, $taxonomy ); + + return $tags_to_edit; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.8.0 + * + * @param unknown_type $tag_name + * @return unknown + */ +function wp_create_term($tag_name, $taxonomy = 'post_tag') { + if ( $id = term_exists($tag_name, $taxonomy) ) + return $id; + + return wp_insert_term($tag_name, $taxonomy); +} diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php new file mode 100644 index 0000000..3834874 --- /dev/null +++ b/wp-admin/includes/template.php @@ -0,0 +1,1902 @@ + elements. + * + * @see Walker + * @see wp_category_checklist() + * @see wp_terms_checklist() + * @since 2.5.1 + */ +class Walker_Category_Checklist extends Walker { + var $tree_type = 'category'; + var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this + + function start_lvl( &$output, $depth = 0, $args = array() ) { + $indent = str_repeat("\t", $depth); + $output .= "$indent
      \n"; + } + + function end_lvl( &$output, $depth = 0, $args = array() ) { + $indent = str_repeat("\t", $depth); + $output .= "$indent
    \n"; + } + + function start_el( &$output, $category, $depth, $args, $id = 0 ) { + extract($args); + if ( empty($taxonomy) ) + $taxonomy = 'category'; + + if ( $taxonomy == 'category' ) + $name = 'post_category'; + else + $name = 'tax_input['.$taxonomy.']'; + + $class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : ''; + $output .= "\n
  • " . ''; + } + + function end_el( &$output, $category, $depth = 0, $args = array() ) { + $output .= "
  • \n"; + } +} + +/** + * Output an unordered list of checkbox elements labelled + * with category names. + * + * @see wp_terms_checklist() + * @since 2.5.1 + * + * @param int $post_id Mark categories associated with this post as checked. $selected_cats must not be an array. + * @param int $descendants_and_self ID of the category to output along with its descendents. + * @param bool|array $selected_cats List of categories to mark as checked. + * @param bool|array $popular_cats Override the list of categories that receive the "popular-category" class. + * @param object $walker Walker object to use to build the output. + * @param bool $checked_ontop Move checked items out of the hierarchy and to the top of the list. + */ +function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) { + wp_terms_checklist( $post_id, array( + 'taxonomy' => 'category', + 'descendants_and_self' => $descendants_and_self, + 'selected_cats' => $selected_cats, + 'popular_cats' => $popular_cats, + 'walker' => $walker, + 'checked_ontop' => $checked_ontop + ) ); +} + +/** + * Output an unordered list of checkbox elements labelled + * with term names. Taxonomy independent version of wp_category_checklist(). + * + * @since 3.0.0 + * + * @param int $post_id + * @param array $args + */ +function wp_terms_checklist($post_id = 0, $args = array()) { + $defaults = array( + 'descendants_and_self' => 0, + 'selected_cats' => false, + 'popular_cats' => false, + 'walker' => null, + 'taxonomy' => 'category', + 'checked_ontop' => true + ); + $args = apply_filters( 'wp_terms_checklist_args', $args, $post_id ); + + extract( wp_parse_args($args, $defaults), EXTR_SKIP ); + + if ( empty($walker) || !is_a($walker, 'Walker') ) + $walker = new Walker_Category_Checklist; + + $descendants_and_self = (int) $descendants_and_self; + + $args = array('taxonomy' => $taxonomy); + + $tax = get_taxonomy($taxonomy); + $args['disabled'] = !current_user_can($tax->cap->assign_terms); + + if ( is_array( $selected_cats ) ) + $args['selected_cats'] = $selected_cats; + elseif ( $post_id ) + $args['selected_cats'] = wp_get_object_terms($post_id, $taxonomy, array_merge($args, array('fields' => 'ids'))); + else + $args['selected_cats'] = array(); + + if ( is_array( $popular_cats ) ) + $args['popular_cats'] = $popular_cats; + else + $args['popular_cats'] = get_terms( $taxonomy, array( 'fields' => 'ids', 'orderby' => 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); + + if ( $descendants_and_self ) { + $categories = (array) get_terms($taxonomy, array( 'child_of' => $descendants_and_self, 'hierarchical' => 0, 'hide_empty' => 0 ) ); + $self = get_term( $descendants_and_self, $taxonomy ); + array_unshift( $categories, $self ); + } else { + $categories = (array) get_terms($taxonomy, array('get' => 'all')); + } + + if ( $checked_ontop ) { + // Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache) + $checked_categories = array(); + $keys = array_keys( $categories ); + + foreach( $keys as $k ) { + if ( in_array( $categories[$k]->term_id, $args['selected_cats'] ) ) { + $checked_categories[] = $categories[$k]; + unset( $categories[$k] ); + } + } + + // Put checked cats on top + echo call_user_func_array(array(&$walker, 'walk'), array($checked_categories, 0, $args)); + } + // Then the rest of them + echo call_user_func_array(array(&$walker, 'walk'), array($categories, 0, $args)); +} + +/** + * Retrieve a list of the most popular terms from the specified taxonomy. + * + * If the $echo argument is true then the elements for a list of checkbox + * elements labelled with the names of the selected terms is output. + * If the $post_ID global isn't empty then the terms associated with that + * post will be marked as checked. + * + * @since 2.5.0 + * + * @param string $taxonomy Taxonomy to retrieve terms from. + * @param int $default Unused. + * @param int $number Number of terms to retrieve. Defaults to 10. + * @param bool $echo Optionally output the list as well. Defaults to true. + * @return array List of popular term IDs. + */ +function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $echo = true ) { + global $post_ID; + + if ( $post_ID ) + $checked_terms = wp_get_object_terms($post_ID, $taxonomy, array('fields'=>'ids')); + else + $checked_terms = array(); + + $terms = get_terms( $taxonomy, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number, 'hierarchical' => false ) ); + + $tax = get_taxonomy($taxonomy); + if ( ! current_user_can($tax->cap->assign_terms) ) + $disabled = 'disabled="disabled"'; + else + $disabled = ''; + + $popular_ids = array(); + foreach ( (array) $terms as $term ) { + $popular_ids[] = $term->term_id; + if ( !$echo ) // hack for AJAX use + continue; + $id = "popular-$taxonomy-$term->term_id"; + $checked = in_array( $term->term_id, $checked_terms ) ? 'checked="checked"' : ''; + ?> + + + + 'name', 'hide_empty' => 0 ) ); + + if ( empty( $categories ) ) + return; + + foreach ( $categories as $category ) { + $cat_id = $category->term_id; + $name = esc_html( apply_filters( 'the_category', $category->name ) ); + $checked = in_array( $cat_id, $checked_categories ) ? ' checked="checked"' : ''; + echo '"; + } +} + +// adds hidden fields with the data for use in the inline editor for posts and pages +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $post + */ +function get_inline_data($post) { + $post_type_object = get_post_type_object($post->post_type); + if ( ! current_user_can($post_type_object->cap->edit_post, $post->ID) ) + return; + + $title = esc_textarea( trim( $post->post_title ) ); + + echo ' +'; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $position + * @param unknown_type $checkbox + * @param unknown_type $mode + */ +function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single', $table_row = true) { + // allow plugin to replace the popup content + $content = apply_filters( 'wp_comment_reply', '', array('position' => $position, 'checkbox' => $checkbox, 'mode' => $mode) ); + + if ( ! empty($content) ) { + echo $content; + return; + } + + if ( $mode == 'single' ) { + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + } else { + $wp_list_table = _get_list_table('WP_Comments_List_Table'); + } + +?> +
    + +
    + + + +
    + + + + + + + ' . _x( 'Name', 'meta name' ) . ' + ' . __( 'Value' ) . ' + + + + + +'; //TBODY needed for list-manipulation JS + return; + } + $count = 0; +?> + + + + + + + + + + +
    + + $entry['meta_id'] = (int) $entry['meta_id']; + + $delete_nonce = wp_create_nonce( 'delete-meta_' . $entry['meta_id'] ); + + $r .= "\n\t"; + $r .= "\n\t\t"; + + $r .= "\n\t\t
    "; + $r .= get_submit_button( __( 'Delete' ), "delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce deletemeta", "deletemeta[{$entry['meta_id']}]", false, array( 'tabindex' => '6' ) ); + $r .= "\n\t\t"; + $r .= get_submit_button( __( 'Update' ), "add:the-list:meta-{$entry['meta_id']}::_ajax_nonce-add-meta=$update_nonce updatemeta" , 'updatemeta', false, array( 'tabindex' => '6' ) ); + $r .= "
    "; + $r .= wp_nonce_field( 'change-meta', '_ajax_nonce', false, false ); + $r .= ""; + + $r .= "\n\t\t\n\t"; + return $r; +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.2.0 + */ +function meta_form() { + global $wpdb; + $limit = (int) apply_filters( 'postmeta_form_limit', 30 ); + $keys = $wpdb->get_col( " + SELECT meta_key + FROM $wpdb->postmeta + GROUP BY meta_key + HAVING meta_key NOT LIKE '\_%' + ORDER BY meta_key + LIMIT $limit" ); + if ( $keys ) + natcasesort($keys); +?> +

    + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + 'addmetasub', 'tabindex' => '9' ) ); ?> + +
    +post_status, array('draft', 'pending') ) && (!$post->post_date_gmt || '0000-00-00 00:00:00' == $post->post_date_gmt ) ); + + $tab_index_attribute = ''; + if ( (int) $tab_index > 0 ) + $tab_index_attribute = " tabindex=\"$tab_index\""; + + // echo '
    '; + + $time_adj = current_time('timestamp'); + $post_date = ($for_post) ? $post->post_date : $comment->comment_date; + $jj = ($edit) ? mysql2date( 'd', $post_date, false ) : gmdate( 'd', $time_adj ); + $mm = ($edit) ? mysql2date( 'm', $post_date, false ) : gmdate( 'm', $time_adj ); + $aa = ($edit) ? mysql2date( 'Y', $post_date, false ) : gmdate( 'Y', $time_adj ); + $hh = ($edit) ? mysql2date( 'H', $post_date, false ) : gmdate( 'H', $time_adj ); + $mn = ($edit) ? mysql2date( 'i', $post_date, false ) : gmdate( 'i', $time_adj ); + $ss = ($edit) ? mysql2date( 's', $post_date, false ) : gmdate( 's', $time_adj ); + + $cur_jj = gmdate( 'd', $time_adj ); + $cur_mm = gmdate( 'm', $time_adj ); + $cur_aa = gmdate( 'Y', $time_adj ); + $cur_hh = gmdate( 'H', $time_adj ); + $cur_mn = gmdate( 'i', $time_adj ); + + $month = "'; + + $day = ''; + $year = ''; + $hour = ''; + $minute = ''; + + echo '
    '; + /* translators: 1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input */ + printf(__('%1$s%2$s, %3$s @ %4$s : %5$s'), $month, $day, $year, $hour, $minute); + + echo '
    '; + + if ( $multi ) return; + + echo "\n\n"; + foreach ( array('mm', 'jj', 'aa', 'hh', 'mn') as $timeunit ) { + echo '' . "\n"; + $cur_timeunit = 'cur_' . $timeunit; + echo '' . "\n"; + } +?> + +

    + + +

    +$template"; + endforeach; +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.5.0 + * + * @param unknown_type $default + * @param unknown_type $parent + * @param unknown_type $level + * @return unknown + */ +function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) { + global $wpdb, $post_ID; + $items = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' ORDER BY menu_order", $parent) ); + + if ( $items ) { + foreach ( $items as $item ) { + // A page cannot be its own parent. + if (!empty ( $post_ID ) ) { + if ( $item->ID == $post_ID ) { + continue; + } + } + $pad = str_repeat( ' ', $level * 3 ); + if ( $item->ID == $default) + $current = ' selected="selected"'; + else + $current = ''; + + echo "\n\t"; + parent_dropdown( $default, $item->ID, $level +1 ); + } + } else { + return false; + } +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.0.0 + * + * @param unknown_type $id + * @return unknown + */ +function the_attachment_links( $id = false ) { + $id = (int) $id; + $post = & get_post( $id ); + + if ( $post->post_type != 'attachment' ) + return false; + + $icon = wp_get_attachment_image( $post->ID, 'thumbnail', true ); + $attachment_data = wp_get_attachment_metadata( $id ); + $thumb = isset( $attachment_data['thumb'] ); +?> + + html elements for role selectors + * + * @since 2.1.0 + * + * @param string $selected slug for the role that should be already selected + */ +function wp_dropdown_roles( $selected = false ) { + $p = ''; + $r = ''; + + $editable_roles = get_editable_roles(); + + foreach ( $editable_roles as $role => $details ) { + $name = translate_user_role($details['name'] ); + if ( $selected == $role ) // preselect specified role + $p = "\n\t"; + else + $r .= "\n\t"; + } + echo $p . $r; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.3.0 + * + * @param unknown_type $size + * @return unknown + */ +function wp_convert_hr_to_bytes( $size ) { + $size = strtolower($size); + $bytes = (int) $size; + if ( strpos($size, 'k') !== false ) + $bytes = intval($size) * 1024; + elseif ( strpos($size, 'm') !== false ) + $bytes = intval($size) * 1024 * 1024; + elseif ( strpos($size, 'g') !== false ) + $bytes = intval($size) * 1024 * 1024 * 1024; + return $bytes; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.3.0 + * + * @param unknown_type $bytes + * @return unknown + */ +function wp_convert_bytes_to_hr( $bytes ) { + $units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB' ); + $log = log( $bytes, 1024 ); + $power = (int) $log; + $size = pow(1024, $log - $power); + return $size . $units[$power]; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function wp_max_upload_size() { + $u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) ); + $p_bytes = wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) ); + $bytes = apply_filters( 'upload_size_limit', min($u_bytes, $p_bytes), $u_bytes, $p_bytes ); + return $bytes; +} + +/** + * Outputs the form used by the importers to accept the data to be imported + * + * @since 2.0.0 + * + * @param string $action The action attribute for the form. + */ +function wp_import_upload_form( $action ) { + $bytes = apply_filters( 'import_upload_size_limit', wp_max_upload_size() ); + $size = wp_convert_bytes_to_hr( $bytes ); + $upload_dir = wp_upload_dir(); + if ( ! empty( $upload_dir['error'] ) ) : + ?>

    +

    +
    +

    + () + + + +

    + +
    +id; + + if ( !isset($wp_meta_boxes) ) + $wp_meta_boxes = array(); + if ( !isset($wp_meta_boxes[$page]) ) + $wp_meta_boxes[$page] = array(); + if ( !isset($wp_meta_boxes[$page][$context]) ) + $wp_meta_boxes[$page][$context] = array(); + + foreach ( array_keys($wp_meta_boxes[$page]) as $a_context ) { + foreach ( array('high', 'core', 'default', 'low') as $a_priority ) { + if ( !isset($wp_meta_boxes[$page][$a_context][$a_priority][$id]) ) + continue; + + // If a core box was previously added or removed by a plugin, don't add. + if ( 'core' == $priority ) { + // If core box previously deleted, don't add + if ( false === $wp_meta_boxes[$page][$a_context][$a_priority][$id] ) + return; + // If box was added with default priority, give it core priority to maintain sort order + if ( 'default' == $a_priority ) { + $wp_meta_boxes[$page][$a_context]['core'][$id] = $wp_meta_boxes[$page][$a_context]['default'][$id]; + unset($wp_meta_boxes[$page][$a_context]['default'][$id]); + } + return; + } + // If no priority given and id already present, use existing priority + if ( empty($priority) ) { + $priority = $a_priority; + // else if we're adding to the sorted priority, we don't know the title or callback. Grab them from the previously added context/priority. + } elseif ( 'sorted' == $priority ) { + $title = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['title']; + $callback = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['callback']; + $callback_args = $wp_meta_boxes[$page][$a_context][$a_priority][$id]['args']; + } + // An id can be in only one priority and one context + if ( $priority != $a_priority || $context != $a_context ) + unset($wp_meta_boxes[$page][$a_context][$a_priority][$id]); + } + } + + if ( empty($priority) ) + $priority = 'low'; + + if ( !isset($wp_meta_boxes[$page][$context][$priority]) ) + $wp_meta_boxes[$page][$context][$priority] = array(); + + $wp_meta_boxes[$page][$context][$priority][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $callback_args); +} + +/** + * Meta-Box template function + * + * @since 2.5.0 + * + * @param string|object $screen Screen identifier + * @param string $context box context + * @param mixed $object gets passed to the box callback function as first parameter + * @return int number of meta_boxes + */ +function do_meta_boxes( $screen, $context, $object ) { + global $wp_meta_boxes; + static $already_sorted = false; + + if ( empty( $screen ) ) + $screen = get_current_screen(); + elseif ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + $page = $screen->id; + + $hidden = get_hidden_meta_boxes( $screen ); + + printf('
    ', htmlspecialchars($context)); + + $i = 0; + do { + // Grab the ones the user has manually sorted. Pull them out of their previous context/priority and into the one the user chose + if ( !$already_sorted && $sorted = get_user_option( "meta-box-order_$page" ) ) { + foreach ( $sorted as $box_context => $ids ) { + foreach ( explode(',', $ids ) as $id ) { + if ( $id && 'dashboard_browser_nag' !== $id ) + add_meta_box( $id, null, null, $screen, $box_context, 'sorted' ); + } + } + } + $already_sorted = true; + + if ( !isset($wp_meta_boxes) || !isset($wp_meta_boxes[$page]) || !isset($wp_meta_boxes[$page][$context]) ) + break; + + foreach ( array('high', 'sorted', 'core', 'default', 'low') as $priority ) { + if ( isset($wp_meta_boxes[$page][$context][$priority]) ) { + foreach ( (array) $wp_meta_boxes[$page][$context][$priority] as $box ) { + if ( false == $box || ! $box['title'] ) + continue; + $i++; + $style = ''; + $hidden_class = in_array($box['id'], $hidden) ? ' hide-if-js' : ''; + echo '
    ' . "\n"; + if ( 'dashboard_browser_nag' != $box['id'] ) + echo '

    '; + echo "

    {$box['title']}

    \n"; + echo '
    ' . "\n"; + call_user_func($box['callback'], $object, $box); + echo "
    \n"; + echo "
    \n"; + } + } + } + } while(0); + + echo "
    "; + + return $i; + +} + +/** + * Remove a meta box from an edit form. + * + * @since 2.6.0 + * + * @param string $id String for use in the 'id' attribute of tags. + * @param string|object $screen The screen on which to show the box (post, page, link). + * @param string $context The context within the page where the boxes should show ('normal', 'advanced'). + */ +function remove_meta_box($id, $screen, $context) { + global $wp_meta_boxes; + + if ( empty( $screen ) ) + $screen = get_current_screen(); + elseif ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + $page = $screen->id; + + if ( !isset($wp_meta_boxes) ) + $wp_meta_boxes = array(); + if ( !isset($wp_meta_boxes[$page]) ) + $wp_meta_boxes[$page] = array(); + if ( !isset($wp_meta_boxes[$page][$context]) ) + $wp_meta_boxes[$page][$context] = array(); + + foreach ( array('high', 'core', 'default', 'low') as $priority ) + $wp_meta_boxes[$page][$context][$priority][$id] = false; +} + +/** + * Add a new section to a settings page. + * + * Part of the Settings API. Use this to define new settings sections for an admin page. + * Show settings sections in your admin page callback function with do_settings_sections(). + * Add settings fields to your section with add_settings_field() + * + * The $callback argument should be the name of a function that echoes out any + * content you want to show at the top of the settings section before the actual + * fields. It can output nothing if you want. + * + * @since 2.7.0 + * + * @global $wp_settings_sections Storage array of all settings sections added to admin pages + * + * @param string $id Slug-name to identify the section. Used in the 'id' attribute of tags. + * @param string $title Formatted title of the section. Shown as the heading for the section. + * @param string $callback Function that echos out any content at the top of the section (between heading and fields). + * @param string $page The slug-name of the settings page on which to show the section. Built-in pages include 'general', 'reading', 'writing', 'discussion', 'media', etc. Create your own using add_options_page(); + */ +function add_settings_section($id, $title, $callback, $page) { + global $wp_settings_sections; + + if ( 'misc' == $page ) { + _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) ); + $page = 'general'; + } + + if ( !isset($wp_settings_sections) ) + $wp_settings_sections = array(); + if ( !isset($wp_settings_sections[$page]) ) + $wp_settings_sections[$page] = array(); + if ( !isset($wp_settings_sections[$page][$id]) ) + $wp_settings_sections[$page][$id] = array(); + + $wp_settings_sections[$page][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback); +} + +/** + * Add a new field to a section of a settings page + * + * Part of the Settings API. Use this to define a settings field that will show + * as part of a settings section inside a settings page. The fields are shown using + * do_settings_fields() in do_settings-sections() + * + * The $callback argument should be the name of a function that echoes out the + * html input tags for this setting field. Use get_option() to retrieve existing + * values to show. + * + * @since 2.7.0 + * + * @global $wp_settings_fields Storage array of settings fields and info about their pages/sections + * + * @param string $id Slug-name to identify the field. Used in the 'id' attribute of tags. + * @param string $title Formatted title of the field. Shown as the label for the field during output. + * @param string $callback Function that fills the field with the desired form inputs. The function should echo its output. + * @param string $page The slug-name of the settings page on which to show the section (general, reading, writing, ...). + * @param string $section The slug-name of the section of the settings page in which to show the box (default, ...). + * @param array $args Additional arguments + */ +function add_settings_field($id, $title, $callback, $page, $section = 'default', $args = array()) { + global $wp_settings_fields; + + if ( 'misc' == $page ) { + _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) ); + $page = 'general'; + } + + if ( !isset($wp_settings_fields) ) + $wp_settings_fields = array(); + if ( !isset($wp_settings_fields[$page]) ) + $wp_settings_fields[$page] = array(); + if ( !isset($wp_settings_fields[$page][$section]) ) + $wp_settings_fields[$page][$section] = array(); + + $wp_settings_fields[$page][$section][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $args); +} + +/** + * Prints out all settings sections added to a particular settings page + * + * Part of the Settings API. Use this in a settings page callback function + * to output all the sections and fields that were added to that $page with + * add_settings_section() and add_settings_field() + * + * @global $wp_settings_sections Storage array of all settings sections added to admin pages + * @global $wp_settings_fields Storage array of settings fields and info about their pages/sections + * @since 2.7.0 + * + * @param string $page The slug name of the page whos settings sections you want to output + */ +function do_settings_sections($page) { + global $wp_settings_sections, $wp_settings_fields; + + if ( !isset($wp_settings_sections) || !isset($wp_settings_sections[$page]) ) + return; + + foreach ( (array) $wp_settings_sections[$page] as $section ) { + if ( $section['title'] ) + echo "

    {$section['title']}

    \n"; + call_user_func($section['callback'], $section); + if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section['id']]) ) + continue; + echo ''; + do_settings_fields($page, $section['id']); + echo '
    '; + } +} + +/** + * Print out the settings fields for a particular settings section + * + * Part of the Settings API. Use this in a settings page to output + * a specific section. Should normally be called by do_settings_sections() + * rather than directly. + * + * @global $wp_settings_fields Storage array of settings fields and their pages/sections + * + * @since 2.7.0 + * + * @param string $page Slug title of the admin page who's settings fields you want to show. + * @param section $section Slug title of the settings section who's fields you want to show. + */ +function do_settings_fields($page, $section) { + global $wp_settings_fields; + + if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section]) ) + return; + + foreach ( (array) $wp_settings_fields[$page][$section] as $field ) { + echo ''; + if ( !empty($field['args']['label_for']) ) + echo ''; + else + echo '' . $field['title'] . ''; + echo ''; + call_user_func($field['callback'], $field['args']); + echo ''; + echo ''; + } +} + +/** + * Register a settings error to be displayed to the user + * + * Part of the Settings API. Use this to show messages to users about settings validation + * problems, missing settings or anything else. + * + * Settings errors should be added inside the $sanitize_callback function defined in + * register_setting() for a given setting to give feedback about the submission. + * + * By default messages will show immediately after the submission that generated the error. + * Additional calls to settings_errors() can be used to show errors even when the settings + * page is first accessed. + * + * @since 3.0.0 + * + * @global array $wp_settings_errors Storage array of errors registered during this pageload + * + * @param string $setting Slug title of the setting to which this error applies + * @param string $code Slug-name to identify the error. Used as part of 'id' attribute in HTML output. + * @param string $message The formatted message text to display to the user (will be shown inside styled
    and

    ) + * @param string $type The type of message it is, controls HTML class. Use 'error' or 'updated'. + */ +function add_settings_error( $setting, $code, $message, $type = 'error' ) { + global $wp_settings_errors; + + if ( !isset($wp_settings_errors) ) + $wp_settings_errors = array(); + + $new_error = array( + 'setting' => $setting, + 'code' => $code, + 'message' => $message, + 'type' => $type + ); + $wp_settings_errors[] = $new_error; +} + +/** + * Fetch settings errors registered by add_settings_error() + * + * Checks the $wp_settings_errors array for any errors declared during the current + * pageload and returns them. + * + * If changes were just submitted ($_GET['settings-updated']) and settings errors were saved + * to the 'settings_errors' transient then those errors will be returned instead. This + * is used to pass errors back across pageloads. + * + * Use the $sanitize argument to manually re-sanitize the option before returning errors. + * This is useful if you have errors or notices you want to show even when the user + * hasn't submitted data (i.e. when they first load an options page, or in admin_notices action hook) + * + * @since 3.0.0 + * + * @global array $wp_settings_errors Storage array of errors registered during this pageload + * + * @param string $setting Optional slug title of a specific setting who's errors you want. + * @param boolean $sanitize Whether to re-sanitize the setting value before returning errors. + * @return array Array of settings errors + */ +function get_settings_errors( $setting = '', $sanitize = false ) { + global $wp_settings_errors; + + // If $sanitize is true, manually re-run the sanitizisation for this option + // This allows the $sanitize_callback from register_setting() to run, adding + // any settings errors you want to show by default. + if ( $sanitize ) + sanitize_option( $setting, get_option($setting)); + + // If settings were passed back from options.php then use them + // Ignore transients if $sanitize is true, we don't want the old values anyway + if ( isset($_GET['settings-updated']) && $_GET['settings-updated'] && get_transient('settings_errors') ) { + $settings_errors = get_transient('settings_errors'); + delete_transient('settings_errors'); + // Otherwise check global in case validation has been run on this pageload + } elseif ( count( $wp_settings_errors ) ) { + $settings_errors = $wp_settings_errors; + } else { + return; + } + + // Filter the results to those of a specific setting if one was set + if ( $setting ) { + foreach ( (array) $settings_errors as $key => $details ) + if ( $setting != $details['setting'] ) + unset( $settings_errors[$key] ); + } + return $settings_errors; +} + +/** + * Display settings errors registered by add_settings_error() + * + * Part of the Settings API. Outputs a

    for each error retrieved by get_settings_errors(). + * + * This is called automatically after a settings page based on the Settings API is submitted. + * Errors should be added during the validation callback function for a setting defined in register_setting() + * + * The $sanitize option is passed into get_settings_errors() and will re-run the setting sanitization + * on its current value. + * + * The $hide_on_update option will cause errors to only show when the settings page is first loaded. + * if the user has already saved new values it will be hidden to avoid repeating messages already + * shown in the default error reporting after submission. This is useful to show general errors like missing + * settings when the user arrives at the settings page. + * + * @since 3.0.0 + * + * @param string $setting Optional slug title of a specific setting who's errors you want. + * @param boolean $sanitize Whether to re-sanitize the setting value before returning errors. + * @param boolean $hide_on_update If set to true errors will not be shown if the settings page has already been submitted. + */ +function settings_errors( $setting = '', $sanitize = false, $hide_on_update = false ) { + + if ( $hide_on_update && ! empty( $_GET['settings-updated'] ) ) + return; + + $settings_errors = get_settings_errors( $setting, $sanitize ); + + if ( ! is_array( $settings_errors ) ) + return; + + $output = ''; + foreach ( $settings_errors as $key => $details ) { + $css_id = 'setting-error-' . $details['code']; + $css_class = $details['type'] . ' settings-error'; + $output .= "
    \n"; + $output .= "

    {$details['message']}

    "; + $output .= "
    \n"; + } + echo $output; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $found_action + */ +function find_posts_div($found_action = '') { +?> + +post_password ) ) echo esc_attr( $post->post_password ); +} + +/** + * Get the post title. + * + * The post title is fetched and if it is blank then a default string is + * returned. + * + * @since 2.7.0 + * @param int $post_id The post id. If not supplied the global $post is used. + * @return string The post title if set + */ +function _draft_or_post_title( $post_id = 0 ) { + $title = get_the_title($post_id); + if ( empty($title) ) + $title = __('(no title)'); + return $title; +} + +/** + * Display the search query. + * + * A simple wrapper to display the "s" parameter in a GET URI. This function + * should only be used when {@link the_search_query()} cannot. + * + * @uses attr + * @since 2.7.0 + * + */ +function _admin_search_query() { + echo isset($_REQUEST['s']) ? esc_attr( stripslashes( $_REQUEST['s'] ) ) : ''; +} + +/** + * Generic Iframe header for use with Thickbox + * + * @since 2.7.0 + * @param string $title Title of the Iframe page. + * @param bool $limit_styles Limit styles to colour-related styles only (unless others are enqueued). + * + */ +function iframe_header( $title = '', $limit_styles = false ) { + show_admin_bar( false ); + global $hook_suffix, $current_user, $admin_body_class, $wp_locale; + $admin_body_class = preg_replace('/[^a-z0-9_-]+/i', '-', $hook_suffix); + + $current_screen = get_current_screen(); + + _wp_admin_html_begin(); +?> +<?php bloginfo('name') ?> › <?php echo $title ?> — <?php _e('WordPress'); ?> + + + + + class="wp-admin no-js iframe "> + + + + + + +post_password) ) + $post_states['protected'] = __('Password protected'); + if ( 'private' == $post->post_status && 'private' != $post_status ) + $post_states['private'] = __('Private'); + if ( 'draft' == $post->post_status && 'draft' != $post_status ) + $post_states['draft'] = __('Draft'); + if ( 'pending' == $post->post_status && 'pending' != $post_status ) + /* translators: post state */ + $post_states['pending'] = _x('Pending', 'post state'); + if ( is_sticky($post->ID) ) + $post_states['sticky'] = __('Sticky'); + + $post_states = apply_filters( 'display_post_states', $post_states ); + + if ( ! empty($post_states) ) { + $state_count = count($post_states); + $i = 0; + echo ' - '; + foreach ( $post_states as $state ) { + ++$i; + ( $i == $state_count ) ? $sep = '' : $sep = ', '; + echo "$state$sep"; + } + } + + if ( get_post_format( $post->ID ) ) + echo ' - ' . get_post_format_string( get_post_format( $post->ID ) ) . ''; +} + +function _media_states( $post ) { + $media_states = array(); + $stylesheet = get_option('stylesheet'); + + if ( current_theme_supports( 'custom-header') ) { + $meta_header = get_post_meta($post->ID, '_wp_attachment_is_custom_header', true ); + if ( ! empty( $meta_header ) && $meta_header == $stylesheet ) + $media_states[] = __( 'Header Image' ); + } + + if ( current_theme_supports( 'custom-background') ) { + $meta_background = get_post_meta($post->ID, '_wp_attachment_is_custom_background', true ); + if ( ! empty( $meta_background ) && $meta_background == $stylesheet ) + $media_states[] = __( 'Background Image' ); + } + + $media_states = apply_filters( 'display_media_states', $media_states ); + + if ( ! empty( $media_states ) ) { + $state_count = count( $media_states ); + $i = 0; + echo ' - '; + foreach ( $media_states as $state ) { + ++$i; + ( $i == $state_count ) ? $sep = '' : $sep = ', '; + echo "$state$sep"; + } + } +} + +/** + * Test support for compressing JavaScript from PHP + * + * Outputs JavaScript that tests if compression from PHP works as expected + * and sets an option with the result. Has no effect when the current user + * is not an administrator. To run the test again the option 'can_compress_scripts' + * has to be deleted. + * + * @since 2.8.0 + */ +function compression_test() { +?> + + '1' ). + * These attributes will be output as attribute="value", such as tabindex="1". + * Defaults to no other attributes. Other attributes can also be provided as a + * string such as 'tabindex="1"', though the array format is typically cleaner. + */ +function submit_button( $text = null, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = null ) { + echo get_submit_button( $text, $type, $name, $wrap, $other_attributes ); +} + +/** + * Returns a submit button, with provided text and appropriate class + * + * @since 3.1.0 + * + * @param string $text The text of the button (defaults to 'Save Changes') + * @param string $type The type of button. One of: primary, secondary, delete + * @param string $name The HTML name of the submit button. Defaults to "submit". If no id attribute + * is given in $other_attributes below, $name will be used as the button's id. + * @param bool $wrap True if the output button should be wrapped in a paragraph tag, + * false otherwise. Defaults to true + * @param array|string $other_attributes Other attributes that should be output with the button, + * mapping attributes to their values, such as array( 'tabindex' => '1' ). + * These attributes will be output as attribute="value", such as tabindex="1". + * Defaults to no other attributes. Other attributes can also be provided as a + * string such as 'tabindex="1"', though the array format is typically cleaner. + */ +function get_submit_button( $text = null, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = null ) { + switch ( $type ) : + case 'primary' : + case 'secondary' : + $class = 'button-' . $type; + break; + case 'delete' : + $class = 'button-secondary delete'; + break; + default : + $class = $type; // Custom cases can just pass in the classes they want to be used + endswitch; + $text = ( null == $text ) ? __( 'Save Changes' ) : $text; + + // Default the id attribute to $name unless an id was specifically provided in $other_attributes + $id = $name; + if ( is_array( $other_attributes ) && isset( $other_attributes['id'] ) ) { + $id = $other_attributes['id']; + unset( $other_attributes['id'] ); + } + + $attributes = ''; + if ( is_array( $other_attributes ) ) { + foreach ( $other_attributes as $attribute => $value ) { + $attributes .= $attribute . '="' . esc_attr( $value ) . '" '; // Trailing space is important + } + } else if ( !empty( $other_attributes ) ) { // Attributes provided as a string + $attributes = $other_attributes; + } + + $button = ''; + + if ( $wrap ) { + $button = '

    ' . $button . '

    '; + } + + return $button; +} + +function _wp_admin_html_begin() { + $admin_html_class = ( is_admin_bar_showing() ) ? 'wp-toolbar' : ''; +?> + + + + > + + + + pointer_id ) + */ + + $registered_pointers = array( + 'index.php' => 'wp330_toolbar', + 'post-new.php' => 'wp330_media_uploader', + 'post.php' => 'wp330_media_uploader', + 'themes.php' => array( 'wp330_saving_widgets', 'wp340_customize_current_theme_link' ), + 'appearance_page_custom-header' => 'wp340_choose_image_from_library', + 'appearance_page_custom-background' => 'wp340_choose_image_from_library', + ); + + // Check if screen related pointer is registered + if ( empty( $registered_pointers[ $hook_suffix ] ) ) + return; + + $pointers = (array) $registered_pointers[ $hook_suffix ]; + + $caps_required = array( + 'wp330_media_uploader' => array( 'upload_files' ), + 'wp330_saving_widgets' => array( 'edit_theme_options', 'switch_themes' ), + 'wp340_customize_current_theme_link' => array( 'edit_theme_options' ), + 'wp340_choose_image_from_library' => array( 'edit_theme_options' ), + ); + + // Get dismissed pointers + $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) ); + + $got_pointers = false; + foreach ( array_diff( $pointers, $dismissed ) as $pointer ) { + if ( isset( $caps_required[ $pointer ] ) ) { + foreach ( $caps_required[ $pointer ] as $cap ) { + if ( ! current_user_can( $cap ) ) + continue 2; + } + } + + // Bind pointer print function + add_action( 'admin_print_footer_scripts', array( 'WP_Internal_Pointers', 'pointer_' . $pointer ) ); + $got_pointers = true; + } + + if ( ! $got_pointers ) + return; + + // Add pointers script and style to queue + wp_enqueue_style( 'wp-pointer' ); + wp_enqueue_script( 'wp-pointer' ); + } + + /** + * Print the pointer javascript data. + * + * @since 3.3.0 + * + * @param string $pointer_id The pointer ID. + * @param string $selector The HTML elements, on which the pointer should be attached. + * @param array $args Arguments to be passed to the pointer JS (see wp-pointer.dev.js). + */ + private static function print_js( $pointer_id, $selector, $args ) { + if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) ) + return; + + ?> + + ' . __( 'New Feature: Toolbar' ) . ''; + $content .= '

    ' . __( 'We’ve combined the admin bar and the old Dashboard header into one persistent toolbar. Hover over the toolbar items to see what’s new.' ) . '

    '; + + if ( is_multisite() && is_super_admin() ) + $content .= '

    ' . __( 'Network Admin is now located in the My Sites menu.' ) . '

    '; + + WP_Internal_Pointers::print_js( 'wp330_toolbar', '#wpadminbar', array( + 'content' => $content, + 'position' => array( 'edge' => 'top', 'align' => 'center' ), + ) ); + } + + /** + * Print 'Updated Media Uploader' for 3.3.0. + * + * @since 3.3.0 + */ + public static function pointer_wp330_media_uploader() { + $content = '

    ' . __( 'Updated Media Uploader' ) . '

    '; + $content .= '

    ' . __( 'The single media icon now launches the uploader for all file types, and the new drag and drop interface makes uploading a breeze.' ) . '

    '; + + WP_Internal_Pointers::print_js( 'wp330_media_uploader', '#content-add_media', array( + 'content' => $content, + 'position' => array( 'edge' => is_rtl() ? 'right' : 'left', 'align' => 'center' ), + ) ); + } + + /** + * Print 'New Feature: Saving Widgets' for 3.3.0. + * + * @since 3.3.0 + */ + public static function pointer_wp330_saving_widgets() { + $content = '

    ' . __( 'New Feature: Saving Widgets' ) . '

    '; + $content .= '

    ' . __( 'If you change your mind and revert to your previous theme, we’ll put the widgets back the way you had them.' ) . '

    '; + + WP_Internal_Pointers::print_js( 'wp330_saving_widgets', '#message2', array( + 'content' => $content, + 'position' => array( 'edge' => 'top', 'align' => is_rtl() ? 'right' : 'left' ), + ) ); + } + + /** + * Print 'New Feature: Current Theme Customize Link' for 3.4.0. + * + * @since 3.4.0 + */ + public static function pointer_wp340_customize_current_theme_link() { + $content = '

    ' . __( 'New Feature: Customizer' ) . '

    '; + $content .= '

    ' . __( 'Click Customize to change the header, background, title and menus of the current theme, all in one place.' ) . '

    '; + $content .= '

    ' . __( 'Click the Live Preview links in the Available Themes list below to customize and preview another theme before activating it.' ) . '

    '; + + WP_Internal_Pointers::print_js( 'wp340_customize_current_theme_link', '#customize-current-theme-link', array( + 'content' => $content, + 'position' => array( 'edge' => 'top', 'align' => is_rtl() ? 'right' : 'left', 'offset' => is_rtl() ? '32 0' : '-32 0' ), + ) ); + } + + /** + * Print 'New Feature: Choose Image from Library' for 3.4.0. + * + * @since 3.4.0 + */ + public static function pointer_wp340_choose_image_from_library() { + $content = '

    ' . __( 'New Feature: Choose Image from Library' ) . '

    '; + $content .= '

    ' . __( 'Want to use an image you uploaded earlier? Select it from your media library instead of uploading it again.' ) . '

    '; + + WP_Internal_Pointers::print_js( 'wp340_choose_image_from_library', '#choose-from-library-link', array( + 'content' => $content, + 'position' => array( 'edge' => 'top', 'align' => is_rtl() ? 'right' : 'left', 'defer_loading' => true ), + ) ); + } + + /** + * Prevents new users from seeing existing 'new feature' pointers. + * + * @since 3.3.0 + */ + public static function dismiss_pointers_for_new_users( $user_id ) { + add_user_meta( $user_id, 'dismissed_wp_pointers', 'wp330_toolbar,wp330_media_uploader,wp330_saving_widgets,wp340_choose_image_from_library,wp340_customize_current_theme_link' ); + } +} + +add_action( 'admin_enqueue_scripts', array( 'WP_Internal_Pointers', 'enqueue_scripts' ) ); +add_action( 'user_register', array( 'WP_Internal_Pointers', 'dismiss_pointers_for_new_users' ) ); + +/** + * Convert a screen string to a screen object + * + * @since 3.0.0 + * + * @param string $hook_name The hook name (also known as the hook suffix) used to determine the screen. + * @return WP_Screen Screen object. + */ +function convert_to_screen( $hook_name ) { + if ( ! class_exists( 'WP_Screen' ) ) { + _doing_it_wrong( 'convert_to_screen(), add_meta_box()', __( "Likely direct inclusion of wp-admin/includes/template.php in order to use add_meta_box(). This is very wrong. Hook the add_meta_box() call into the add_meta_boxes action instead." ), '3.3' ); + return (object) array( 'id' => '_invalid', 'base' => '_are_belong_to_us' ); + } + + return WP_Screen::get( $hook_name ); +} diff --git a/wp-admin/includes/theme-install.php b/wp-admin/includes/theme-install.php new file mode 100644 index 0000000..1fdafec --- /dev/null +++ b/wp-admin/includes/theme-install.php @@ -0,0 +1,176 @@ + array('href' => array(), 'title' => array(), 'target' => array()), + 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), + 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), + 'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), + 'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(), + 'img' => array('src' => array(), 'class' => array(), 'alt' => array()) +); + +$theme_field_defaults = array( 'description' => true, 'sections' => false, 'tested' => true, 'requires' => true, + 'rating' => true, 'downloaded' => true, 'downloadlink' => true, 'last_updated' => true, 'homepage' => true, + 'tags' => true, 'num_ratings' => true +); + +/** + * Retrieve list of WordPress theme features (aka theme tags) + * + * @since 2.8.0 + * + * @deprecated since 3.1.0 Use get_theme_feature_list() instead. + * + * @return array + */ +function install_themes_feature_list( ) { + if ( !$cache = get_transient( 'wporg_theme_feature_list' ) ) + set_transient( 'wporg_theme_feature_list', array( ), 10800); + + if ( $cache ) + return $cache; + + $feature_list = themes_api( 'feature_list', array( ) ); + if ( is_wp_error( $feature_list ) ) + return $features; + + set_transient( 'wporg_theme_feature_list', $feature_list, 10800 ); + + return $feature_list; +} + +/** + * Display search form for searching themes. + * + * @since 2.8.0 + */ +function install_theme_search_form( $type_selector = true ) { + $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : 'term'; + $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : ''; + if ( ! $type_selector ) + echo '

    ' . __( 'Search for themes by keyword.' ) . '

    '; + ?> +
    + + + + + + +
    + +

    +

    + +
    + + '; + + foreach ( (array) $feature_list as $feature_name => $features ) { + $feature_name = esc_html( $feature_name ); + echo '
    ' . $feature_name . '
    '; + + echo '
      '; + foreach ( $features as $feature => $feature_name ) { + $feature_name = esc_html( $feature_name ); + $feature = esc_attr($feature); +?> + +
    1. + + +
    2. + + +
    +
    + + +
    +
    + + + +

    +

    +
    + + + +
    + single_row( $theme ); +} + +/** + * Display theme content based on theme list. + * + * @since 2.8.0 + */ +function display_themes() { + global $wp_list_table; + + $wp_list_table->display(); +} +add_action('install_themes_search', 'display_themes'); +add_action('install_themes_featured', 'display_themes'); +add_action('install_themes_new', 'display_themes'); +add_action('install_themes_updated', 'display_themes'); + +/** + * Display theme information in dialog box form. + * + * @since 2.8.0 + */ +function install_theme_information() { + global $tab, $themes_allowedtags, $wp_list_table; + + $theme = themes_api( 'theme_information', array( 'slug' => stripslashes( $_REQUEST['theme'] ) ) ); + + if ( is_wp_error( $theme ) ) + wp_die( $theme ); + + iframe_header( __('Theme Install') ); + $wp_list_table->theme_installer_single( $theme ); + iframe_footer(); + exit; +} +add_action('install_themes_pre_theme-information', 'install_theme_information'); diff --git a/wp-admin/includes/theme.php b/wp-admin/includes/theme.php new file mode 100644 index 0000000..af1960e --- /dev/null +++ b/wp-admin/includes/theme.php @@ -0,0 +1,295 @@ +errors) && $wp_filesystem->errors->get_error_code() ) + return new WP_Error('fs_error', __('Filesystem error.'), $wp_filesystem->errors); + + //Get the base plugin folder + $themes_dir = $wp_filesystem->wp_themes_dir(); + if ( empty($themes_dir) ) + return new WP_Error('fs_no_themes_dir', __('Unable to locate WordPress theme directory.')); + + $themes_dir = trailingslashit( $themes_dir ); + $theme_dir = trailingslashit($themes_dir . $stylesheet); + $deleted = $wp_filesystem->delete($theme_dir, true); + + if ( ! $deleted ) + return new WP_Error('could_not_remove_theme', sprintf(__('Could not fully remove the theme %s.'), $stylesheet) ); + + // Force refresh of theme update information + delete_site_transient('update_themes'); + + return true; +} + +/** + * Get the Page Templates available in this theme + * + * @since 1.5.0 + * + * @return array Key is the template name, value is the filename of the template + */ +function get_page_templates() { + return array_flip( wp_get_theme()->get_page_templates() ); +} + +/** + * Tidies a filename for url display by the theme editor. + * + * @since 2.9.0 + * @access private + * + * @param string $fullpath Full path to the theme file + * @param string $containingfolder Path of the theme parent folder + * @return string + */ +function _get_template_edit_filename($fullpath, $containingfolder) { + return str_replace(dirname(dirname( $containingfolder )) , '', $fullpath); +} + +/** + * Check if there is an update for a theme available. + * + * Will display link, if there is an update available. + * + * @since 2.7.0 + * + * @param object $theme Theme data object. + * @return bool False if no valid info was passed. + */ +function theme_update_available( $theme ) { + static $themes_update; + + if ( !current_user_can('update_themes' ) ) + return; + + if ( !isset($themes_update) ) + $themes_update = get_site_transient('update_themes'); + + if ( ! is_a( $theme, 'WP_Theme' ) ) + return; + + $stylesheet = $theme->get_stylesheet(); + + if ( isset($themes_update->response[ $stylesheet ]) ) { + $update = $themes_update->response[ $stylesheet ]; + $theme_name = $theme->display('Name'); + $details_url = add_query_arg(array('TB_iframe' => 'true', 'width' => 1024, 'height' => 800), $update['url']); //Theme browser inside WP? replace this, Also, theme preview JS will override this on the available list. + $update_url = wp_nonce_url('update.php?action=upgrade-theme&theme=' . urlencode($stylesheet), 'upgrade-theme_' . $stylesheet); + $update_onclick = 'onclick="if ( confirm(\'' . esc_js( __("Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update.") ) . '\') ) {return true;}return false;"'; + + if ( !is_multisite() ) { + if ( ! current_user_can('update_themes') ) + printf( '

    ' . __('There is a new version of %1$s available. View version %3$s details.') . '

    ', $theme_name, $details_url, $update['new_version']); + else if ( empty($update['package']) ) + printf( '

    ' . __('There is a new version of %1$s available. View version %3$s details. Automatic update is unavailable for this theme.') . '

    ', $theme_name, $details_url, $update['new_version']); + else + printf( '

    ' . __('There is a new version of %1$s available. View version %3$s details or update now.') . '

    ', $theme_name, $details_url, $update['new_version'], $update_url, $update_onclick ); + } + } +} + +/** + * Retrieve list of WordPress theme features (aka theme tags) + * + * @since 3.1.0 + * + * @param bool $api Optional. Whether try to fetch tags from the WP.org API. Defaults to true. + * @return array Array of features keyed by category with translations keyed by slug. + */ +function get_theme_feature_list( $api = true ) { + // Hard-coded list is used if api not accessible. + $features = array( + __('Colors') => array( + 'black' => __( 'Black' ), + 'blue' => __( 'Blue' ), + 'brown' => __( 'Brown' ), + 'gray' => __( 'Gray' ), + 'green' => __( 'Green' ), + 'orange' => __( 'Orange' ), + 'pink' => __( 'Pink' ), + 'purple' => __( 'Purple' ), + 'red' => __( 'Red' ), + 'silver' => __( 'Silver' ), + 'tan' => __( 'Tan' ), + 'white' => __( 'White' ), + 'yellow' => __( 'Yellow' ), + 'dark' => __( 'Dark' ), + 'light' => __( 'Light' ), + ), + + __('Columns') => array( + 'one-column' => __( 'One Column' ), + 'two-columns' => __( 'Two Columns' ), + 'three-columns' => __( 'Three Columns' ), + 'four-columns' => __( 'Four Columns' ), + 'left-sidebar' => __( 'Left Sidebar' ), + 'right-sidebar' => __( 'Right Sidebar' ), + ), + + __('Width') => array( + 'fixed-width' => __( 'Fixed Width' ), + 'flexible-width' => __( 'Flexible Width' ), + ), + + __( 'Features' ) => array( + 'blavatar' => __( 'Blavatar' ), + 'buddypress' => __( 'BuddyPress' ), + 'custom-background' => __( 'Custom Background' ), + 'custom-colors' => __( 'Custom Colors' ), + 'custom-header' => __( 'Custom Header' ), + 'custom-menu' => __( 'Custom Menu' ), + 'editor-style' => __( 'Editor Style' ), + 'featured-image-header' => __( 'Featured Image Header' ), + 'featured-images' => __( 'Featured Images' ), + 'front-page-post-form' => __( 'Front Page Posting' ), + 'full-width-template' => __( 'Full Width Template' ), + 'microformats' => __( 'Microformats' ), + 'post-formats' => __( 'Post Formats' ), + 'rtl-language-support' => __( 'RTL Language Support' ), + 'sticky-post' => __( 'Sticky Post' ), + 'theme-options' => __( 'Theme Options' ), + 'threaded-comments' => __( 'Threaded Comments' ), + 'translation-ready' => __( 'Translation Ready' ), + ), + + __( 'Subject' ) => array( + 'holiday' => __( 'Holiday' ), + 'photoblogging' => __( 'Photoblogging' ), + 'seasonal' => __( 'Seasonal' ), + ) + ); + + if ( ! $api || ! current_user_can( 'install_themes' ) ) + return $features; + + if ( !$feature_list = get_site_transient( 'wporg_theme_feature_list' ) ) + set_site_transient( 'wporg_theme_feature_list', array( ), 10800); + + if ( !$feature_list ) { + $feature_list = themes_api( 'feature_list', array( ) ); + if ( is_wp_error( $feature_list ) ) + return $features; + } + + if ( !$feature_list ) + return $features; + + set_site_transient( 'wporg_theme_feature_list', $feature_list, 10800 ); + + $category_translations = array( 'Colors' => __('Colors'), 'Columns' => __('Columns'), 'Width' => __('Width'), + 'Features' => __('Features'), 'Subject' => __('Subject') ); + + // Loop over the wporg canonical list and apply translations + $wporg_features = array(); + foreach ( (array) $feature_list as $feature_category => $feature_items ) { + if ( isset($category_translations[$feature_category]) ) + $feature_category = $category_translations[$feature_category]; + $wporg_features[$feature_category] = array(); + + foreach ( $feature_items as $feature ) { + if ( isset($features[$feature_category][$feature]) ) + $wporg_features[$feature_category][$feature] = $features[$feature_category][$feature]; + else + $wporg_features[$feature_category][$feature] = $feature; + } + } + + return $wporg_features; +} + +/** + * Retrieve theme installer pages from WordPress Themes API. + * + * It is possible for a theme to override the Themes API result with three + * filters. Assume this is for themes, which can extend on the Theme Info to + * offer more choices. This is very powerful and must be used with care, when + * overridding the filters. + * + * The first filter, 'themes_api_args', is for the args and gives the action as + * the second parameter. The hook for 'themes_api_args' must ensure that an + * object is returned. + * + * The second filter, 'themes_api', is the result that would be returned. + * + * @since 2.8.0 + * + * @param string $action + * @param array|object $args Optional. Arguments to serialize for the Theme Info API. + * @return mixed + */ +function themes_api($action, $args = null) { + + if ( is_array($args) ) + $args = (object)$args; + + if ( !isset($args->per_page) ) + $args->per_page = 24; + + $args = apply_filters('themes_api_args', $args, $action); //NOTE: Ensure that an object is returned via this filter. + $res = apply_filters('themes_api', false, $action, $args); //NOTE: Allows a theme to completely override the builtin WordPress.org API. + + if ( ! $res ) { + $request = wp_remote_post('http://api.wordpress.org/themes/info/1.0/', array( 'body' => array('action' => $action, 'request' => serialize($args))) ); + if ( is_wp_error($request) ) { + $res = new WP_Error('themes_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ), $request->get_error_message() ); + } else { + $res = maybe_unserialize( wp_remote_retrieve_body( $request ) ); + if ( ! is_object( $res ) && ! is_array( $res ) ) + $res = new WP_Error('themes_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ), wp_remote_retrieve_body( $request ) ); + } + } + + return apply_filters('themes_api_result', $res, $action, $args); +} diff --git a/wp-admin/includes/update-core.php b/wp-admin/includes/update-core.php new file mode 100644 index 0000000..2e383dd --- /dev/null +++ b/wp-admin/includes/update-core.php @@ -0,0 +1,711 @@ + Introduced version + * Directories should be noted by suffixing it with a trailing slash (/) + * + * @since 3.2.0 + * @global array $_new_bundled_files + * @var array + * @name $_new_bundled_files + */ +global $_new_bundled_files; + +$_new_bundled_files = array( +'plugins/akismet/' => '2.0', +'themes/twentyten/' => '3.0', +'themes/twentyeleven/' => '3.2' +); + +/** + * Upgrade the core of WordPress. + * + * This will create a .maintenance file at the base of the WordPress directory + * to ensure that people can not access the web site, when the files are being + * copied to their locations. + * + * The files in the {@link $_old_files} list will be removed and the new files + * copied from the zip file after the database is upgraded. + * + * The files in the {@link $_new_bundled_files} list will be added to the installation + * if the version is greater than or equal to the old version being upgraded. + * + * The steps for the upgrader for after the new release is downloaded and + * unzipped is: + * 1. Test unzipped location for select files to ensure that unzipped worked. + * 2. Create the .maintenance file in current WordPress base. + * 3. Copy new WordPress directory over old WordPress files. + * 4. Upgrade WordPress to new version. + * 4.1. Copy all files/folders other than wp-content + * 4.2. Copy any language files to WP_LANG_DIR (which may differ from WP_CONTENT_DIR + * 4.3. Copy any new bundled themes/plugins to their respective locations + * 5. Delete new WordPress directory path. + * 6. Delete .maintenance file. + * 7. Remove old files. + * 8. Delete 'update_core' option. + * + * There are several areas of failure. For instance if PHP times out before step + * 6, then you will not be able to access any portion of your site. Also, since + * the upgrade will not continue where it left off, you will not be able to + * automatically remove old files and remove the 'update_core' option. This + * isn't that bad. + * + * If the copy of the new WordPress over the old fails, then the worse is that + * the new WordPress directory will remain. + * + * If it is assumed that every file will be copied over, including plugins and + * themes, then if you edit the default theme, you should rename it, so that + * your changes remain. + * + * @since 2.7.0 + * + * @param string $from New release unzipped path. + * @param string $to Path to old WordPress installation. + * @return WP_Error|null WP_Error on failure, null on success. + */ +function update_core($from, $to) { + global $wp_filesystem, $_old_files, $_new_bundled_files, $wpdb; + + @set_time_limit( 300 ); + + $php_version = phpversion(); + $mysql_version = $wpdb->db_version(); + $required_php_version = '5.2.4'; + $required_mysql_version = '5.0'; + $wp_version = '3.4.1'; + $php_compat = version_compare( $php_version, $required_php_version, '>=' ); + if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) ) + $mysql_compat = true; + else + $mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ); + + if ( !$mysql_compat || !$php_compat ) + $wp_filesystem->delete($from, true); + + if ( !$mysql_compat && !$php_compat ) + return new WP_Error( 'php_mysql_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version ) ); + elseif ( !$php_compat ) + return new WP_Error( 'php_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.'), $wp_version, $required_php_version, $php_version ) ); + elseif ( !$mysql_compat ) + return new WP_Error( 'mysql_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version ) ); + + // Sanity check the unzipped distribution + apply_filters('update_feedback', __('Verifying the unpacked files…')); + $distro = ''; + $roots = array( '/wordpress/', '/wordpress-mu/' ); + foreach( $roots as $root ) { + if ( $wp_filesystem->exists($from . $root . 'readme.html') && $wp_filesystem->exists($from . $root . 'wp-includes/version.php') ) { + $distro = $root; + break; + } + } + if ( !$distro ) { + $wp_filesystem->delete($from, true); + return new WP_Error('insane_distro', __('The update could not be unpacked') ); + } + + apply_filters('update_feedback', __('Installing the latest version…')); + + // Create maintenance file to signal that we are upgrading + $maintenance_string = ''; + $maintenance_file = $to . '.maintenance'; + $wp_filesystem->delete($maintenance_file); + $wp_filesystem->put_contents($maintenance_file, $maintenance_string, FS_CHMOD_FILE); + + // Copy new versions of WP files into place. + $result = _copy_dir($from . $distro, $to, array('wp-content') ); + + // Custom Content Directory needs updating now. + // Copy Languages + if ( !is_wp_error($result) && $wp_filesystem->is_dir($from . $distro . 'wp-content/languages') ) { + if ( WP_LANG_DIR != ABSPATH . WPINC . '/languages' || @is_dir(WP_LANG_DIR) ) + $lang_dir = WP_LANG_DIR; + else + $lang_dir = WP_CONTENT_DIR . '/languages'; + + if ( !@is_dir($lang_dir) && 0 === strpos($lang_dir, ABSPATH) ) { // Check the language directory exists first + $wp_filesystem->mkdir($to . str_replace(ABSPATH, '', $lang_dir), FS_CHMOD_DIR); // If it's within the ABSPATH we can handle it here, otherwise they're out of luck. + clearstatcache(); // for FTP, Need to clear the stat cache + } + + if ( @is_dir($lang_dir) ) { + $wp_lang_dir = $wp_filesystem->find_folder($lang_dir); + if ( $wp_lang_dir ) + $result = copy_dir($from . $distro . 'wp-content/languages/', $wp_lang_dir); + } + } + + // Copy New bundled plugins & themes + // This gives us the ability to install new plugins & themes bundled with future versions of WordPress whilst avoiding the re-install upon upgrade issue. + if ( !is_wp_error($result) && ( ! defined('CORE_UPGRADE_SKIP_NEW_BUNDLED') || ! CORE_UPGRADE_SKIP_NEW_BUNDLED ) ) { + $old_version = $GLOBALS['wp_version']; // $wp_version in local scope == new version + foreach ( (array) $_new_bundled_files as $file => $introduced_version ) { + // If $introduced version is greater than what the site was previously running + if ( version_compare($introduced_version, $old_version, '>') ) { + $directory = ('/' == $file[ strlen($file)-1 ]); + list($type, $filename) = explode('/', $file, 2); + + if ( 'plugins' == $type ) + $dest = $wp_filesystem->wp_plugins_dir(); + elseif ( 'themes' == $type ) + $dest = trailingslashit($wp_filesystem->wp_themes_dir()); // Back-compat, ::wp_themes_dir() did not return trailingslash'd pre-3.2 + else + continue; + + if ( ! $directory ) { + if ( $wp_filesystem->exists($dest . $filename) ) + continue; + + if ( ! $wp_filesystem->copy($from . $distro . 'wp-content/' . $file, $dest . $filename, FS_CHMOD_FILE) ) + $result = new WP_Error('copy_failed', __('Could not copy file.'), $dest . $filename); + } else { + if ( $wp_filesystem->is_dir($dest . $filename) ) + continue; + + $wp_filesystem->mkdir($dest . $filename, FS_CHMOD_DIR); + $_result = copy_dir( $from . $distro . 'wp-content/' . $file, $dest . $filename); + if ( is_wp_error($_result) ) //If a error occurs partway through this final step, keep the error flowing through, but keep process going. + $result = $_result; + } + } + } //end foreach + } + + // Handle $result error from the above blocks + if ( is_wp_error($result) ) { + $wp_filesystem->delete($maintenance_file); + $wp_filesystem->delete($from, true); + return $result; + } + + // Remove old files + foreach ( $_old_files as $old_file ) { + $old_file = $to . $old_file; + if ( !$wp_filesystem->exists($old_file) ) + continue; + $wp_filesystem->delete($old_file, true); + } + + // Upgrade DB with separate request + apply_filters('update_feedback', __('Upgrading database…')); + $db_upgrade_url = admin_url('upgrade.php?step=upgrade_db'); + wp_remote_post($db_upgrade_url, array('timeout' => 60)); + + // Remove working directory + $wp_filesystem->delete($from, true); + + // Force refresh of update information + if ( function_exists('delete_site_transient') ) + delete_site_transient('update_core'); + else + delete_option('update_core'); + + // Remove maintenance file, we're done. + $wp_filesystem->delete($maintenance_file); + + // If we made it this far: + do_action( '_core_updated_successfully', $wp_version ); + + return $wp_version; +} + +/** + * Copies a directory from one location to another via the WordPress Filesystem Abstraction. + * Assumes that WP_Filesystem() has already been called and setup. + * + * This is a temporary function for the 3.1 -> 3.2 upgrade only and will be removed in 3.3 + * + * @ignore + * @since 3.2.0 + * @see copy_dir() + * + * @param string $from source directory + * @param string $to destination directory + * @param array $skip_list a list of files/folders to skip copying + * @return mixed WP_Error on failure, True on success. + */ +function _copy_dir($from, $to, $skip_list = array() ) { + global $wp_filesystem; + + $dirlist = $wp_filesystem->dirlist($from); + + $from = trailingslashit($from); + $to = trailingslashit($to); + + $skip_regex = ''; + foreach ( (array)$skip_list as $key => $skip_file ) + $skip_regex .= preg_quote($skip_file, '!') . '|'; + + if ( !empty($skip_regex) ) + $skip_regex = '!(' . rtrim($skip_regex, '|') . ')$!i'; + + foreach ( (array) $dirlist as $filename => $fileinfo ) { + if ( !empty($skip_regex) ) + if ( preg_match($skip_regex, $from . $filename) ) + continue; + + if ( 'f' == $fileinfo['type'] ) { + if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) { + // If copy failed, chmod file to 0644 and try again. + $wp_filesystem->chmod($to . $filename, 0644); + if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) + return new WP_Error('copy_failed', __('Could not copy file.'), $to . $filename); + } + } elseif ( 'd' == $fileinfo['type'] ) { + if ( !$wp_filesystem->is_dir($to . $filename) ) { + if ( !$wp_filesystem->mkdir($to . $filename, FS_CHMOD_DIR) ) + return new WP_Error('mkdir_failed', __('Could not create directory.'), $to . $filename); + } + $result = _copy_dir($from . $filename, $to . $filename, $skip_list); + if ( is_wp_error($result) ) + return $result; + } + } + return true; +} + +/** + * Redirect to the About WordPress page after a successful upgrade. + * + * This function is only needed when the existing install is older than 3.4.0. + * + * @since 3.3.0 + * + */ +function _redirect_to_about_wordpress( $new_version ) { + global $wp_version, $pagenow, $action; + + if ( version_compare( $wp_version, '3.4-RC1', '>=' ) ) + return; + + // Ensure we only run this on the update-core.php page. wp_update_core() could be called in other contexts. + if ( 'update-core.php' != $pagenow ) + return; + + if ( 'do-core-upgrade' != $action && 'do-core-reinstall' != $action ) + return; + + // Load the updated default text localization domain for new strings + load_default_textdomain(); + + // See do_core_upgrade() + show_message( __('WordPress updated successfully') ); + show_message( '' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click here.' ), $new_version, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '' ); + show_message( '' . sprintf( __( 'Welcome to WordPress %1$s. Learn more.' ), $new_version, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '' ); + echo '
    '; + ?> + + 'latest'); + return $updates[0]; +} + +/** + * Get available core updates + * + * @param array $options Set $options['dismissed'] to true to show dismissed upgrades too, + * set $options['available'] to false to skip not-dismissed updates. + * @return array Array of the update objects + */ +function get_core_updates( $options = array() ) { + $options = array_merge( array('available' => true, 'dismissed' => false ), $options ); + $dismissed = get_site_option( 'dismissed_update_core' ); + if ( !is_array( $dismissed ) ) $dismissed = array(); + $from_api = get_site_transient( 'update_core' ); + if ( empty($from_api) ) + return false; + if ( !isset( $from_api->updates ) || !is_array( $from_api->updates ) ) return false; + $updates = $from_api->updates; + if ( !is_array( $updates ) ) return false; + $result = array(); + foreach($updates as $update) { + if ( array_key_exists( $update->current.'|'.$update->locale, $dismissed ) ) { + if ( $options['dismissed'] ) { + $update->dismissed = true; + $result[]= $update; + } + } else { + if ( $options['available'] ) { + $update->dismissed = false; + $result[]= $update; + } + } + } + return $result; +} + +function dismiss_core_update( $update ) { + $dismissed = get_site_option( 'dismissed_update_core' ); + $dismissed[ $update->current.'|'.$update->locale ] = true; + return update_site_option( 'dismissed_update_core', $dismissed ); +} + +function undismiss_core_update( $version, $locale ) { + $dismissed = get_site_option( 'dismissed_update_core' ); + $key = $version.'|'.$locale; + if ( !isset( $dismissed[$key] ) ) return false; + unset( $dismissed[$key] ); + return update_site_option( 'dismissed_update_core', $dismissed ); +} + +function find_core_update( $version, $locale ) { + $from_api = get_site_transient( 'update_core' ); + if ( !is_array( $from_api->updates ) ) return false; + $updates = $from_api->updates; + foreach($updates as $update) { + if ( $update->current == $version && $update->locale == $locale ) + return $update; + } + return false; +} + +function core_update_footer( $msg = '' ) { + if ( !current_user_can('update_core') ) + return sprintf( __( 'Version %s' ), $GLOBALS['wp_version'] ); + + $cur = get_preferred_from_update_core(); + if ( ! isset( $cur->current ) ) + $cur->current = ''; + + if ( ! isset( $cur->url ) ) + $cur->url = ''; + + if ( ! isset( $cur->response ) ) + $cur->response = ''; + + switch ( $cur->response ) { + case 'development' : + return sprintf( __( 'You are using a development version (%1$s). Cool! Please stay updated.' ), $GLOBALS['wp_version'], network_admin_url( 'update-core.php' ) ); + break; + + case 'upgrade' : + return sprintf( ''.__( 'Get Version %2$s' ).'', network_admin_url( 'update-core.php' ), $cur->current); + break; + + case 'latest' : + default : + return sprintf( __( 'Version %s' ), $GLOBALS['wp_version'] ); + break; + } +} +add_filter( 'update_footer', 'core_update_footer' ); + +function update_nag() { + if ( is_multisite() && !current_user_can('update_core') ) + return false; + + global $pagenow; + + if ( 'update-core.php' == $pagenow ) + return; + + $cur = get_preferred_from_update_core(); + + if ( ! isset( $cur->response ) || $cur->response != 'upgrade' ) + return false; + + if ( current_user_can('update_core') ) { + $msg = sprintf( __('WordPress %1$s is available! Please update now.'), $cur->current, network_admin_url( 'update-core.php' ) ); + } else { + $msg = sprintf( __('WordPress %1$s is available! Please notify the site administrator.'), $cur->current ); + } + echo "
    $msg
    "; +} +add_action( 'admin_notices', 'update_nag', 3 ); + +// Called directly from dashboard +function update_right_now_message() { + $msg = sprintf( __('You are using WordPress %s.'), $GLOBALS['wp_version'] ); + + if ( current_user_can('update_core') ) { + $cur = get_preferred_from_update_core(); + + if ( isset( $cur->response ) && $cur->response == 'upgrade' ) + $msg .= " " . sprintf( __('Update to %s'), $cur->current ? $cur->current : __( 'Latest' ) ) . ''; + } + + echo "$msg"; +} + +function get_plugin_updates() { + $all_plugins = get_plugins(); + $upgrade_plugins = array(); + $current = get_site_transient( 'update_plugins' ); + foreach ( (array)$all_plugins as $plugin_file => $plugin_data) { + if ( isset( $current->response[ $plugin_file ] ) ) { + $upgrade_plugins[ $plugin_file ] = (object) $plugin_data; + $upgrade_plugins[ $plugin_file ]->update = $current->response[ $plugin_file ]; + } + } + + return $upgrade_plugins; +} + +function wp_plugin_update_rows() { + if ( !current_user_can('update_plugins' ) ) + return; + + $plugins = get_site_transient( 'update_plugins' ); + if ( isset($plugins->response) && is_array($plugins->response) ) { + $plugins = array_keys( $plugins->response ); + foreach( $plugins as $plugin_file ) { + add_action( "after_plugin_row_$plugin_file", 'wp_plugin_update_row', 10, 2 ); + } + } +} +add_action( 'admin_init', 'wp_plugin_update_rows' ); + +function wp_plugin_update_row( $file, $plugin_data ) { + $current = get_site_transient( 'update_plugins' ); + if ( !isset( $current->response[ $file ] ) ) + return false; + + $r = $current->response[ $file ]; + + $plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array()); + $plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags ); + + $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $r->slug . '§ion=changelog&TB_iframe=true&width=600&height=800'); + + $wp_list_table = _get_list_table('WP_Plugins_List_Table'); + + if ( is_network_admin() || !is_multisite() ) { + echo '
    '; + + if ( ! current_user_can('update_plugins') ) + printf( __('There is a new version of %1$s available. View version %4$s details.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version ); + else if ( empty($r->package) ) + printf( __('There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version ); + else + printf( __('There is a new version of %1$s available. View version %4$s details or update now.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version, wp_nonce_url( self_admin_url('update.php?action=upgrade-plugin&plugin=') . $file, 'upgrade-plugin_' . $file) ); + + do_action( "in_plugin_update_message-$file", $plugin_data, $r ); + + echo '
    '; + } +} + +function wp_update_plugin($plugin, $feedback = '') { + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + $upgrader = new Plugin_Upgrader(); + return $upgrader->upgrade($plugin); +} + +function get_theme_updates() { + $themes = wp_get_themes(); + $current = get_site_transient('update_themes'); + + if ( ! isset( $current->response ) ) + return array(); + + $update_themes = array(); + foreach ( $current->response as $stylesheet => $data ) { + $update_themes[ $stylesheet ] = wp_get_theme( $stylesheet ); + $update_themes[ $stylesheet ]->update = $data; + } + + return $update_themes; +} + +function wp_update_theme($theme, $feedback = '') { + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + $upgrader = new Theme_Upgrader(); + return $upgrader->upgrade($theme); +} + +function wp_theme_update_rows() { + if ( !current_user_can('update_themes' ) ) + return; + + $themes = get_site_transient( 'update_themes' ); + if ( isset($themes->response) && is_array($themes->response) ) { + $themes = array_keys( $themes->response ); + + foreach( $themes as $theme ) { + add_action( "after_theme_row_$theme", 'wp_theme_update_row', 10, 2 ); + } + } +} +add_action( 'admin_init', 'wp_theme_update_rows' ); + +function wp_theme_update_row( $theme_key, $theme ) { + $current = get_site_transient( 'update_themes' ); + if ( !isset( $current->response[ $theme_key ] ) ) + return false; + $r = $current->response[ $theme_key ]; + $themes_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array()); + $theme_name = wp_kses( $theme['Name'], $themes_allowedtags ); + + $details_url = add_query_arg( array( 'TB_iframe' => 'true', 'width' => 1024, 'height' => 800 ), $current->response[ $theme_key ]['url'] ); + + $wp_list_table = _get_list_table('WP_MS_Themes_List_Table'); + + echo '
    '; + if ( ! current_user_can('update_themes') ) + printf( __('There is a new version of %1$s available. View version %4$s details.'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r->new_version ); + else if ( empty( $r['package'] ) ) + printf( __('There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this theme.'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r['new_version'] ); + else + printf( __('There is a new version of %1$s available. View version %4$s details or update now.'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r['new_version'], wp_nonce_url( self_admin_url('update.php?action=upgrade-theme&theme=') . $theme_key, 'upgrade-theme_' . $theme_key) ); + + do_action( "in_theme_update_message-$theme_key", $theme, $r ); + + echo '
    '; +} + +function wp_update_core($current, $feedback = '') { + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + $upgrader = new Core_Upgrader(); + return $upgrader->upgrade($current); + +} + +function maintenance_nag() { + global $upgrading; + if ( ! isset( $upgrading ) ) + return false; + + if ( current_user_can('update_core') ) + $msg = sprintf( __('An automated WordPress update has failed to complete - please attempt the update again now.'), 'update-core.php' ); + else + $msg = __('An automated WordPress update has failed to complete! Please notify the site administrator.'); + + echo "
    $msg
    "; +} +add_action( 'admin_notices', 'maintenance_nag' ); diff --git a/wp-admin/includes/upgrade.php b/wp-admin/includes/upgrade.php new file mode 100644 index 0000000..bb69d9a --- /dev/null +++ b/wp-admin/includes/upgrade.php @@ -0,0 +1,2020 @@ +Note that password carefully! It is a random password that was generated just for you.'); + $user_id = wp_create_user($user_name, $user_password, $user_email); + update_user_option($user_id, 'default_password_nag', true, true); + $email_password = true; + } else if ( !$user_id ) { + // Password has been provided + $message = ''.__('Your chosen password.').''; + $user_id = wp_create_user($user_name, $user_password, $user_email); + } else { + $message = __('User already exists. Password inherited.'); + } + + $user = new WP_User($user_id); + $user->set_role('administrator'); + + wp_install_defaults($user_id); + + flush_rewrite_rules(); + + wp_new_blog_notification($blog_title, $guessurl, $user_id, ($email_password ? $user_password : __('The password you chose during the install.') ) ); + + wp_cache_flush(); + + return array('url' => $guessurl, 'user_id' => $user_id, 'password' => $user_password, 'password_message' => $message); +} +endif; + +if ( !function_exists('wp_install_defaults') ) : +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * + * @param int $user_id User ID. + */ +function wp_install_defaults($user_id) { + global $wpdb, $wp_rewrite, $current_site, $table_prefix; + + // Default category + $cat_name = __('Uncategorized'); + /* translators: Default category slug */ + $cat_slug = sanitize_title(_x('Uncategorized', 'Default category slug')); + + if ( global_terms_enabled() ) { + $cat_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM {$wpdb->sitecategories} WHERE category_nicename = %s", $cat_slug ) ); + if ( $cat_id == null ) { + $wpdb->insert( $wpdb->sitecategories, array('cat_ID' => 0, 'cat_name' => $cat_name, 'category_nicename' => $cat_slug, 'last_updated' => current_time('mysql', true)) ); + $cat_id = $wpdb->insert_id; + } + update_option('default_category', $cat_id); + } else { + $cat_id = 1; + } + + $wpdb->insert( $wpdb->terms, array('term_id' => $cat_id, 'name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0) ); + $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $cat_id, 'taxonomy' => 'category', 'description' => '', 'parent' => 0, 'count' => 1)); + $cat_tt_id = $wpdb->insert_id; + + // Default link category + $cat_name = __('Blogroll'); + /* translators: Default link category slug */ + $cat_slug = sanitize_title(_x('Blogroll', 'Default link category slug')); + + if ( global_terms_enabled() ) { + $blogroll_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM {$wpdb->sitecategories} WHERE category_nicename = %s", $cat_slug ) ); + if ( $blogroll_id == null ) { + $wpdb->insert( $wpdb->sitecategories, array('cat_ID' => 0, 'cat_name' => $cat_name, 'category_nicename' => $cat_slug, 'last_updated' => current_time('mysql', true)) ); + $blogroll_id = $wpdb->insert_id; + } + update_option('default_link_category', $blogroll_id); + } else { + $blogroll_id = 2; + } + + $wpdb->insert( $wpdb->terms, array('term_id' => $blogroll_id, 'name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0) ); + $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $blogroll_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 7)); + $blogroll_tt_id = $wpdb->insert_id; + + // Now drop in some default links + $default_links = array(); + $default_links[] = array( 'link_url' => __( 'http://codex.wordpress.org/' ), + 'link_name' => __( 'Documentation' ), + 'link_rss' => '', + 'link_notes' => ''); + + $default_links[] = array( 'link_url' => __( 'http://wordpress.org/news/' ), + 'link_name' => __( 'WordPress Blog' ), + 'link_rss' => __( 'http://wordpress.org/news/feed/' ), + 'link_notes' => ''); + + $default_links[] = array( 'link_url' => __( 'http://wordpress.org/support/' ), + 'link_name' => _x( 'Support Forums', 'default link' ), + 'link_rss' => '', + 'link_notes' =>''); + + $default_links[] = array( 'link_url' => 'http://wordpress.org/extend/plugins/', + 'link_name' => _x( 'Plugins', 'Default link to wordpress.org/extend/plugins/' ), + 'link_rss' => '', + 'link_notes' =>''); + + $default_links[] = array( 'link_url' => 'http://wordpress.org/extend/themes/', + 'link_name' => _x( 'Themes', 'Default link to wordpress.org/extend/themes/' ), + 'link_rss' => '', + 'link_notes' =>''); + + $default_links[] = array( 'link_url' => __( 'http://wordpress.org/support/forum/requests-and-feedback' ), + 'link_name' => __( 'Feedback' ), + 'link_rss' => '', + 'link_notes' =>''); + + $default_links[] = array( 'link_url' => __( 'http://planet.wordpress.org/' ), + 'link_name' => __( 'WordPress Planet' ), + 'link_rss' => '', + 'link_notes' =>''); + + foreach ( $default_links as $link ) { + $wpdb->insert( $wpdb->links, $link); + $wpdb->insert( $wpdb->term_relationships, array('term_taxonomy_id' => $blogroll_tt_id, 'object_id' => $wpdb->insert_id) ); + } + + // First post + $now = date('Y-m-d H:i:s'); + $now_gmt = gmdate('Y-m-d H:i:s'); + $first_post_guid = get_option('home') . '/?p=1'; + + if ( is_multisite() ) { + $first_post = get_site_option( 'first_post' ); + + if ( empty($first_post) ) + $first_post = stripslashes( __( 'Welcome to SITE_NAME. This is your first post. Edit or delete it, then start blogging!' ) ); + + $first_post = str_replace( "SITE_URL", esc_url( network_home_url() ), $first_post ); + $first_post = str_replace( "SITE_NAME", $current_site->site_name, $first_post ); + } else { + $first_post = __('Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!'); + } + + $wpdb->insert( $wpdb->posts, array( + 'post_author' => $user_id, + 'post_date' => $now, + 'post_date_gmt' => $now_gmt, + 'post_content' => $first_post, + 'post_excerpt' => '', + 'post_title' => __('Hello world!'), + /* translators: Default post slug */ + 'post_name' => sanitize_title( _x('hello-world', 'Default post slug') ), + 'post_modified' => $now, + 'post_modified_gmt' => $now_gmt, + 'guid' => $first_post_guid, + 'comment_count' => 1, + 'to_ping' => '', + 'pinged' => '', + 'post_content_filtered' => '' + )); + $wpdb->insert( $wpdb->term_relationships, array('term_taxonomy_id' => $cat_tt_id, 'object_id' => 1) ); + + // Default comment + $first_comment_author = __('Mr WordPress'); + $first_comment_url = 'http://wordpress.org/'; + $first_comment = __('Hi, this is a comment.
    To delete a comment, just log in and view the post's comments. There you will have the option to edit or delete them.'); + if ( is_multisite() ) { + $first_comment_author = get_site_option( 'first_comment_author', $first_comment_author ); + $first_comment_url = get_site_option( 'first_comment_url', network_home_url() ); + $first_comment = get_site_option( 'first_comment', $first_comment ); + } + $wpdb->insert( $wpdb->comments, array( + 'comment_post_ID' => 1, + 'comment_author' => $first_comment_author, + 'comment_author_email' => '', + 'comment_author_url' => $first_comment_url, + 'comment_date' => $now, + 'comment_date_gmt' => $now_gmt, + 'comment_content' => $first_comment + )); + + // First Page + $first_page = sprintf( __( "This is an example page. It's different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this: + +
    Hi there! I'm a bike messenger by day, aspiring actor by night, and this is my blog. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin' caught in the rain.)
    + +...or something like this: + +
    The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickies to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.
    + +As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!" ), admin_url() ); + if ( is_multisite() ) + $first_page = get_site_option( 'first_page', $first_page ); + $first_post_guid = get_option('home') . '/?page_id=2'; + $wpdb->insert( $wpdb->posts, array( + 'post_author' => $user_id, + 'post_date' => $now, + 'post_date_gmt' => $now_gmt, + 'post_content' => $first_page, + 'post_excerpt' => '', + 'post_title' => __( 'Sample Page' ), + /* translators: Default page slug */ + 'post_name' => __( 'sample-page' ), + 'post_modified' => $now, + 'post_modified_gmt' => $now_gmt, + 'guid' => $first_post_guid, + 'post_type' => 'page', + 'to_ping' => '', + 'pinged' => '', + 'post_content_filtered' => '' + )); + $wpdb->insert( $wpdb->postmeta, array( 'post_id' => 2, 'meta_key' => '_wp_page_template', 'meta_value' => 'default' ) ); + + // Set up default widgets for default theme. + update_option( 'widget_search', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) ); + update_option( 'widget_recent-posts', array ( 2 => array ( 'title' => '', 'number' => 5 ), '_multiwidget' => 1 ) ); + update_option( 'widget_recent-comments', array ( 2 => array ( 'title' => '', 'number' => 5 ), '_multiwidget' => 1 ) ); + update_option( 'widget_archives', array ( 2 => array ( 'title' => '', 'count' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) ); + update_option( 'widget_categories', array ( 2 => array ( 'title' => '', 'count' => 0, 'hierarchical' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) ); + update_option( 'widget_meta', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) ); + update_option( 'sidebars_widgets', array ( 'wp_inactive_widgets' => array ( ), 'sidebar-1' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'sidebar-2' => array ( ), 'sidebar-3' => array ( ), 'sidebar-4' => array ( ), 'sidebar-5' => array ( ), 'array_version' => 3 ) ); + + if ( ! is_multisite() ) + update_user_meta( $user_id, 'show_welcome_panel', 1 ); + elseif ( ! is_super_admin( $user_id ) && ! metadata_exists( 'user', $user_id, 'show_welcome_panel' ) ) + update_user_meta( $user_id, 'show_welcome_panel', 2 ); + + if ( is_multisite() ) { + // Flush rules to pick up the new page. + $wp_rewrite->init(); + $wp_rewrite->flush_rules(); + + $user = new WP_User($user_id); + $wpdb->update( $wpdb->options, array('option_value' => $user->user_email), array('option_name' => 'admin_email') ); + + // Remove all perms except for the login user. + $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id != %d AND meta_key = %s", $user_id, $table_prefix.'user_level') ); + $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id != %d AND meta_key = %s", $user_id, $table_prefix.'capabilities') ); + + // Delete any caps that snuck into the previously active blog. (Hardcoded to blog 1 for now.) TODO: Get previous_blog_id. + if ( !is_super_admin( $user_id ) && $user_id != 1 ) + $wpdb->delete( $wpdb->usermeta, array( 'user_id' => $user_id , 'meta_key' => $wpdb->base_prefix.'1_capabilities' ) ); + } +} +endif; + +if ( !function_exists('wp_new_blog_notification') ) : +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * + * @param string $blog_title Blog title. + * @param string $blog_url Blog url. + * @param int $user_id User ID. + * @param string $password User's Password. + */ +function wp_new_blog_notification($blog_title, $blog_url, $user_id, $password) { + $user = new WP_User($user_id); + $email = $user->user_email; + $name = $user->user_login; + $message = sprintf(__("Your new WordPress site has been successfully set up at: + +%1\$s + +You can log in to the administrator account with the following information: + +Username: %2\$s +Password: %3\$s + +We hope you enjoy your new site. Thanks! + +--The WordPress Team +http://wordpress.org/ +"), $blog_url, $name, $password); + + @wp_mail($email, __('New WordPress Site'), $message); +} +endif; + +if ( !function_exists('wp_upgrade') ) : +/** + * Run WordPress Upgrade functions. + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * + * @return null + */ +function wp_upgrade() { + global $wp_current_db_version, $wp_db_version, $wpdb; + + $wp_current_db_version = __get_option('db_version'); + + // We are up-to-date. Nothing to do. + if ( $wp_db_version == $wp_current_db_version ) + return; + + if ( ! is_blog_installed() ) + return; + + wp_check_mysql_version(); + wp_cache_flush(); + pre_schema_upgrade(); + make_db_current_silent(); + upgrade_all(); + if ( is_multisite() && is_main_site() ) + upgrade_network(); + wp_cache_flush(); + + if ( is_multisite() ) { + if ( $wpdb->get_row( "SELECT blog_id FROM {$wpdb->blog_versions} WHERE blog_id = '{$wpdb->blogid}'" ) ) + $wpdb->query( "UPDATE {$wpdb->blog_versions} SET db_version = '{$wp_db_version}' WHERE blog_id = '{$wpdb->blogid}'" ); + else + $wpdb->query( "INSERT INTO {$wpdb->blog_versions} ( `blog_id` , `db_version` , `last_updated` ) VALUES ( '{$wpdb->blogid}', '{$wp_db_version}', NOW());" ); + } +} +endif; + +/** + * Functions to be called in install and upgrade scripts. + * + * {@internal Missing Long Description}} + * + * @since 1.0.1 + */ +function upgrade_all() { + global $wp_current_db_version, $wp_db_version; + $wp_current_db_version = __get_option('db_version'); + + // We are up-to-date. Nothing to do. + if ( $wp_db_version == $wp_current_db_version ) + return; + + // If the version is not set in the DB, try to guess the version. + if ( empty($wp_current_db_version) ) { + $wp_current_db_version = 0; + + // If the template option exists, we have 1.5. + $template = __get_option('template'); + if ( !empty($template) ) + $wp_current_db_version = 2541; + } + + if ( $wp_current_db_version < 6039 ) + upgrade_230_options_table(); + + populate_options(); + + if ( $wp_current_db_version < 2541 ) { + upgrade_100(); + upgrade_101(); + upgrade_110(); + upgrade_130(); + } + + if ( $wp_current_db_version < 3308 ) + upgrade_160(); + + if ( $wp_current_db_version < 4772 ) + upgrade_210(); + + if ( $wp_current_db_version < 4351 ) + upgrade_old_slugs(); + + if ( $wp_current_db_version < 5539 ) + upgrade_230(); + + if ( $wp_current_db_version < 6124 ) + upgrade_230_old_tables(); + + if ( $wp_current_db_version < 7499 ) + upgrade_250(); + + if ( $wp_current_db_version < 7935 ) + upgrade_252(); + + if ( $wp_current_db_version < 8201 ) + upgrade_260(); + + if ( $wp_current_db_version < 8989 ) + upgrade_270(); + + if ( $wp_current_db_version < 10360 ) + upgrade_280(); + + if ( $wp_current_db_version < 11958 ) + upgrade_290(); + + if ( $wp_current_db_version < 15260 ) + upgrade_300(); + + if ( $wp_current_db_version < 19389 ) + upgrade_330(); + + if ( $wp_current_db_version < 20080 ) + upgrade_340(); + + maybe_disable_automattic_widgets(); + + update_option( 'db_version', $wp_db_version ); + update_option( 'db_upgraded', true ); +} + +/** + * Execute changes made in WordPress 1.0. + * + * @since 1.0.0 + */ +function upgrade_100() { + global $wpdb; + + // Get the title and ID of every post, post_name to check if it already has a value + $posts = $wpdb->get_results("SELECT ID, post_title, post_name FROM $wpdb->posts WHERE post_name = ''"); + if ($posts) { + foreach($posts as $post) { + if ('' == $post->post_name) { + $newtitle = sanitize_title($post->post_title); + $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_name = %s WHERE ID = %d", $newtitle, $post->ID) ); + } + } + } + + $categories = $wpdb->get_results("SELECT cat_ID, cat_name, category_nicename FROM $wpdb->categories"); + foreach ($categories as $category) { + if ('' == $category->category_nicename) { + $newtitle = sanitize_title($category->cat_name); + $wpdb>update( $wpdb->categories, array('category_nicename' => $newtitle), array('cat_ID' => $category->cat_ID) ); + } + } + + $wpdb->query("UPDATE $wpdb->options SET option_value = REPLACE(option_value, 'wp-links/links-images/', 'wp-images/links/') + WHERE option_name LIKE 'links_rating_image%' + AND option_value LIKE 'wp-links/links-images/%'"); + + $done_ids = $wpdb->get_results("SELECT DISTINCT post_id FROM $wpdb->post2cat"); + if ($done_ids) : + foreach ($done_ids as $done_id) : + $done_posts[] = $done_id->post_id; + endforeach; + $catwhere = ' AND ID NOT IN (' . implode(',', $done_posts) . ')'; + else: + $catwhere = ''; + endif; + + $allposts = $wpdb->get_results("SELECT ID, post_category FROM $wpdb->posts WHERE post_category != '0' $catwhere"); + if ($allposts) : + foreach ($allposts as $post) { + // Check to see if it's already been imported + $cat = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->post2cat WHERE post_id = %d AND category_id = %d", $post->ID, $post->post_category) ); + if (!$cat && 0 != $post->post_category) { // If there's no result + $wpdb->insert( $wpdb->post2cat, array('post_id' => $post->ID, 'category_id' => $post->post_category) ); + } + } + endif; +} + +/** + * Execute changes made in WordPress 1.0.1. + * + * @since 1.0.1 + */ +function upgrade_101() { + global $wpdb; + + // Clean up indices, add a few + add_clean_index($wpdb->posts, 'post_name'); + add_clean_index($wpdb->posts, 'post_status'); + add_clean_index($wpdb->categories, 'category_nicename'); + add_clean_index($wpdb->comments, 'comment_approved'); + add_clean_index($wpdb->comments, 'comment_post_ID'); + add_clean_index($wpdb->links , 'link_category'); + add_clean_index($wpdb->links , 'link_visible'); +} + +/** + * Execute changes made in WordPress 1.2. + * + * @since 1.2.0 + */ +function upgrade_110() { + global $wpdb; + + // Set user_nicename. + $users = $wpdb->get_results("SELECT ID, user_nickname, user_nicename FROM $wpdb->users"); + foreach ($users as $user) { + if ('' == $user->user_nicename) { + $newname = sanitize_title($user->user_nickname); + $wpdb->update( $wpdb->users, array('user_nicename' => $newname), array('ID' => $user->ID) ); + } + } + + $users = $wpdb->get_results("SELECT ID, user_pass from $wpdb->users"); + foreach ($users as $row) { + if (!preg_match('/^[A-Fa-f0-9]{32}$/', $row->user_pass)) { + $wpdb->update( $wpdb->users, array('user_pass' => md5($row->user_pass)), array('ID' => $row->ID) ); + } + } + + // Get the GMT offset, we'll use that later on + $all_options = get_alloptions_110(); + + $time_difference = $all_options->time_difference; + + $server_time = time()+date('Z'); + $weblogger_time = $server_time + $time_difference*3600; + $gmt_time = time(); + + $diff_gmt_server = ($gmt_time - $server_time) / 3600; + $diff_weblogger_server = ($weblogger_time - $server_time) / 3600; + $diff_gmt_weblogger = $diff_gmt_server - $diff_weblogger_server; + $gmt_offset = -$diff_gmt_weblogger; + + // Add a gmt_offset option, with value $gmt_offset + add_option('gmt_offset', $gmt_offset); + + // Check if we already set the GMT fields (if we did, then + // MAX(post_date_gmt) can't be '0000-00-00 00:00:00' + // I just slapped myself silly for not thinking about it earlier + $got_gmt_fields = ! ($wpdb->get_var("SELECT MAX(post_date_gmt) FROM $wpdb->posts") == '0000-00-00 00:00:00'); + + if (!$got_gmt_fields) { + + // Add or subtract time to all dates, to get GMT dates + $add_hours = intval($diff_gmt_weblogger); + $add_minutes = intval(60 * ($diff_gmt_weblogger - $add_hours)); + $wpdb->query("UPDATE $wpdb->posts SET post_date_gmt = DATE_ADD(post_date, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE)"); + $wpdb->query("UPDATE $wpdb->posts SET post_modified = post_date"); + $wpdb->query("UPDATE $wpdb->posts SET post_modified_gmt = DATE_ADD(post_modified, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE) WHERE post_modified != '0000-00-00 00:00:00'"); + $wpdb->query("UPDATE $wpdb->comments SET comment_date_gmt = DATE_ADD(comment_date, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE)"); + $wpdb->query("UPDATE $wpdb->users SET user_registered = DATE_ADD(user_registered, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE)"); + } + +} + +/** + * Execute changes made in WordPress 1.5. + * + * @since 1.5.0 + */ +function upgrade_130() { + global $wpdb; + + // Remove extraneous backslashes. + $posts = $wpdb->get_results("SELECT ID, post_title, post_content, post_excerpt, guid, post_date, post_name, post_status, post_author FROM $wpdb->posts"); + if ($posts) { + foreach($posts as $post) { + $post_content = addslashes(deslash($post->post_content)); + $post_title = addslashes(deslash($post->post_title)); + $post_excerpt = addslashes(deslash($post->post_excerpt)); + if ( empty($post->guid) ) + $guid = get_permalink($post->ID); + else + $guid = $post->guid; + + $wpdb->update( $wpdb->posts, compact('post_title', 'post_content', 'post_excerpt', 'guid'), array('ID' => $post->ID) ); + + } + } + + // Remove extraneous backslashes. + $comments = $wpdb->get_results("SELECT comment_ID, comment_author, comment_content FROM $wpdb->comments"); + if ($comments) { + foreach($comments as $comment) { + $comment_content = deslash($comment->comment_content); + $comment_author = deslash($comment->comment_author); + + $wpdb->update($wpdb->comments, compact('comment_content', 'comment_author'), array('comment_ID' => $comment->comment_ID) ); + } + } + + // Remove extraneous backslashes. + $links = $wpdb->get_results("SELECT link_id, link_name, link_description FROM $wpdb->links"); + if ($links) { + foreach($links as $link) { + $link_name = deslash($link->link_name); + $link_description = deslash($link->link_description); + + $wpdb->update( $wpdb->links, compact('link_name', 'link_description'), array('link_id' => $link->link_id) ); + } + } + + $active_plugins = __get_option('active_plugins'); + + // If plugins are not stored in an array, they're stored in the old + // newline separated format. Convert to new format. + if ( !is_array( $active_plugins ) ) { + $active_plugins = explode("\n", trim($active_plugins)); + update_option('active_plugins', $active_plugins); + } + + // Obsolete tables + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optionvalues'); + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiontypes'); + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiongroups'); + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiongroup_options'); + + // Update comments table to use comment_type + $wpdb->query("UPDATE $wpdb->comments SET comment_type='trackback', comment_content = REPLACE(comment_content, '', '') WHERE comment_content LIKE '%'"); + $wpdb->query("UPDATE $wpdb->comments SET comment_type='pingback', comment_content = REPLACE(comment_content, '', '') WHERE comment_content LIKE '%'"); + + // Some versions have multiple duplicate option_name rows with the same values + $options = $wpdb->get_results("SELECT option_name, COUNT(option_name) AS dupes FROM `$wpdb->options` GROUP BY option_name"); + foreach ( $options as $option ) { + if ( 1 != $option->dupes ) { // Could this be done in the query? + $limit = $option->dupes - 1; + $dupe_ids = $wpdb->get_col( $wpdb->prepare("SELECT option_id FROM $wpdb->options WHERE option_name = %s LIMIT %d", $option->option_name, $limit) ); + if ( $dupe_ids ) { + $dupe_ids = join($dupe_ids, ','); + $wpdb->query("DELETE FROM $wpdb->options WHERE option_id IN ($dupe_ids)"); + } + } + } + + make_site_theme(); +} + +/** + * Execute changes made in WordPress 2.0. + * + * @since 2.0.0 + */ +function upgrade_160() { + global $wpdb, $wp_current_db_version; + + populate_roles_160(); + + $users = $wpdb->get_results("SELECT * FROM $wpdb->users"); + foreach ( $users as $user ) : + if ( !empty( $user->user_firstname ) ) + update_user_meta( $user->ID, 'first_name', $wpdb->escape($user->user_firstname) ); + if ( !empty( $user->user_lastname ) ) + update_user_meta( $user->ID, 'last_name', $wpdb->escape($user->user_lastname) ); + if ( !empty( $user->user_nickname ) ) + update_user_meta( $user->ID, 'nickname', $wpdb->escape($user->user_nickname) ); + if ( !empty( $user->user_level ) ) + update_user_meta( $user->ID, $wpdb->prefix . 'user_level', $user->user_level ); + if ( !empty( $user->user_icq ) ) + update_user_meta( $user->ID, 'icq', $wpdb->escape($user->user_icq) ); + if ( !empty( $user->user_aim ) ) + update_user_meta( $user->ID, 'aim', $wpdb->escape($user->user_aim) ); + if ( !empty( $user->user_msn ) ) + update_user_meta( $user->ID, 'msn', $wpdb->escape($user->user_msn) ); + if ( !empty( $user->user_yim ) ) + update_user_meta( $user->ID, 'yim', $wpdb->escape($user->user_icq) ); + if ( !empty( $user->user_description ) ) + update_user_meta( $user->ID, 'description', $wpdb->escape($user->user_description) ); + + if ( isset( $user->user_idmode ) ): + $idmode = $user->user_idmode; + if ($idmode == 'nickname') $id = $user->user_nickname; + if ($idmode == 'login') $id = $user->user_login; + if ($idmode == 'firstname') $id = $user->user_firstname; + if ($idmode == 'lastname') $id = $user->user_lastname; + if ($idmode == 'namefl') $id = $user->user_firstname.' '.$user->user_lastname; + if ($idmode == 'namelf') $id = $user->user_lastname.' '.$user->user_firstname; + if (!$idmode) $id = $user->user_nickname; + $wpdb->update( $wpdb->users, array('display_name' => $id), array('ID' => $user->ID) ); + endif; + + // FIXME: RESET_CAPS is temporary code to reset roles and caps if flag is set. + $caps = get_user_meta( $user->ID, $wpdb->prefix . 'capabilities'); + if ( empty($caps) || defined('RESET_CAPS') ) { + $level = get_user_meta($user->ID, $wpdb->prefix . 'user_level', true); + $role = translate_level_to_role($level); + update_user_meta( $user->ID, $wpdb->prefix . 'capabilities', array($role => true) ); + } + + endforeach; + $old_user_fields = array( 'user_firstname', 'user_lastname', 'user_icq', 'user_aim', 'user_msn', 'user_yim', 'user_idmode', 'user_ip', 'user_domain', 'user_browser', 'user_description', 'user_nickname', 'user_level' ); + $wpdb->hide_errors(); + foreach ( $old_user_fields as $old ) + $wpdb->query("ALTER TABLE $wpdb->users DROP $old"); + $wpdb->show_errors(); + + // populate comment_count field of posts table + $comments = $wpdb->get_results( "SELECT comment_post_ID, COUNT(*) as c FROM $wpdb->comments WHERE comment_approved = '1' GROUP BY comment_post_ID" ); + if ( is_array( $comments ) ) + foreach ($comments as $comment) + $wpdb->update( $wpdb->posts, array('comment_count' => $comment->c), array('ID' => $comment->comment_post_ID) ); + + // Some alpha versions used a post status of object instead of attachment and put + // the mime type in post_type instead of post_mime_type. + if ( $wp_current_db_version > 2541 && $wp_current_db_version <= 3091 ) { + $objects = $wpdb->get_results("SELECT ID, post_type FROM $wpdb->posts WHERE post_status = 'object'"); + foreach ($objects as $object) { + $wpdb->update( $wpdb->posts, array( 'post_status' => 'attachment', + 'post_mime_type' => $object->post_type, + 'post_type' => ''), + array( 'ID' => $object->ID ) ); + + $meta = get_post_meta($object->ID, 'imagedata', true); + if ( ! empty($meta['file']) ) + update_attached_file( $object->ID, $meta['file'] ); + } + } +} + +/** + * Execute changes made in WordPress 2.1. + * + * @since 2.1.0 + */ +function upgrade_210() { + global $wpdb, $wp_current_db_version; + + if ( $wp_current_db_version < 3506 ) { + // Update status and type. + $posts = $wpdb->get_results("SELECT ID, post_status FROM $wpdb->posts"); + + if ( ! empty($posts) ) foreach ($posts as $post) { + $status = $post->post_status; + $type = 'post'; + + if ( 'static' == $status ) { + $status = 'publish'; + $type = 'page'; + } else if ( 'attachment' == $status ) { + $status = 'inherit'; + $type = 'attachment'; + } + + $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_status = %s, post_type = %s WHERE ID = %d", $status, $type, $post->ID) ); + } + } + + if ( $wp_current_db_version < 3845 ) { + populate_roles_210(); + } + + if ( $wp_current_db_version < 3531 ) { + // Give future posts a post_status of future. + $now = gmdate('Y-m-d H:i:59'); + $wpdb->query ("UPDATE $wpdb->posts SET post_status = 'future' WHERE post_status = 'publish' AND post_date_gmt > '$now'"); + + $posts = $wpdb->get_results("SELECT ID, post_date FROM $wpdb->posts WHERE post_status ='future'"); + if ( !empty($posts) ) + foreach ( $posts as $post ) + wp_schedule_single_event(mysql2date('U', $post->post_date, false), 'publish_future_post', array($post->ID)); + } +} + +/** + * Execute changes made in WordPress 2.3. + * + * @since 2.3.0 + */ +function upgrade_230() { + global $wp_current_db_version, $wpdb; + + if ( $wp_current_db_version < 5200 ) { + populate_roles_230(); + } + + // Convert categories to terms. + $tt_ids = array(); + $have_tags = false; + $categories = $wpdb->get_results("SELECT * FROM $wpdb->categories ORDER BY cat_ID"); + foreach ($categories as $category) { + $term_id = (int) $category->cat_ID; + $name = $category->cat_name; + $description = $category->category_description; + $slug = $category->category_nicename; + $parent = $category->category_parent; + $term_group = 0; + + // Associate terms with the same slug in a term group and make slugs unique. + if ( $exists = $wpdb->get_results( $wpdb->prepare("SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $slug) ) ) { + $term_group = $exists[0]->term_group; + $id = $exists[0]->term_id; + $num = 2; + do { + $alt_slug = $slug . "-$num"; + $num++; + $slug_check = $wpdb->get_var( $wpdb->prepare("SELECT slug FROM $wpdb->terms WHERE slug = %s", $alt_slug) ); + } while ( $slug_check ); + + $slug = $alt_slug; + + if ( empty( $term_group ) ) { + $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms GROUP BY term_group") + 1; + $wpdb->query( $wpdb->prepare("UPDATE $wpdb->terms SET term_group = %d WHERE term_id = %d", $term_group, $id) ); + } + } + + $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->terms (term_id, name, slug, term_group) VALUES + (%d, %s, %s, %d)", $term_id, $name, $slug, $term_group) ); + + $count = 0; + if ( !empty($category->category_count) ) { + $count = (int) $category->category_count; + $taxonomy = 'category'; + $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->term_taxonomy (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count) ); + $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id; + } + + if ( !empty($category->link_count) ) { + $count = (int) $category->link_count; + $taxonomy = 'link_category'; + $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->term_taxonomy (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count) ); + $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id; + } + + if ( !empty($category->tag_count) ) { + $have_tags = true; + $count = (int) $category->tag_count; + $taxonomy = 'post_tag'; + $wpdb->insert( $wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count') ); + $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id; + } + + if ( empty($count) ) { + $count = 0; + $taxonomy = 'category'; + $wpdb->insert( $wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count') ); + $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id; + } + } + + $select = 'post_id, category_id'; + if ( $have_tags ) + $select .= ', rel_type'; + + $posts = $wpdb->get_results("SELECT $select FROM $wpdb->post2cat GROUP BY post_id, category_id"); + foreach ( $posts as $post ) { + $post_id = (int) $post->post_id; + $term_id = (int) $post->category_id; + $taxonomy = 'category'; + if ( !empty($post->rel_type) && 'tag' == $post->rel_type) + $taxonomy = 'tag'; + $tt_id = $tt_ids[$term_id][$taxonomy]; + if ( empty($tt_id) ) + continue; + + $wpdb->insert( $wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id) ); + } + + // < 3570 we used linkcategories. >= 3570 we used categories and link2cat. + if ( $wp_current_db_version < 3570 ) { + // Create link_category terms for link categories. Create a map of link cat IDs + // to link_category terms. + $link_cat_id_map = array(); + $default_link_cat = 0; + $tt_ids = array(); + $link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM " . $wpdb->prefix . 'linkcategories'); + foreach ( $link_cats as $category) { + $cat_id = (int) $category->cat_id; + $term_id = 0; + $name = $wpdb->escape($category->cat_name); + $slug = sanitize_title($name); + $term_group = 0; + + // Associate terms with the same slug in a term group and make slugs unique. + if ( $exists = $wpdb->get_results( $wpdb->prepare("SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $slug) ) ) { + $term_group = $exists[0]->term_group; + $term_id = $exists[0]->term_id; + } + + if ( empty($term_id) ) { + $wpdb->insert( $wpdb->terms, compact('name', 'slug', 'term_group') ); + $term_id = (int) $wpdb->insert_id; + } + + $link_cat_id_map[$cat_id] = $term_id; + $default_link_cat = $term_id; + + $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0) ); + $tt_ids[$term_id] = (int) $wpdb->insert_id; + } + + // Associate links to cats. + $links = $wpdb->get_results("SELECT link_id, link_category FROM $wpdb->links"); + if ( !empty($links) ) foreach ( $links as $link ) { + if ( 0 == $link->link_category ) + continue; + if ( ! isset($link_cat_id_map[$link->link_category]) ) + continue; + $term_id = $link_cat_id_map[$link->link_category]; + $tt_id = $tt_ids[$term_id]; + if ( empty($tt_id) ) + continue; + + $wpdb->insert( $wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id) ); + } + + // Set default to the last category we grabbed during the upgrade loop. + update_option('default_link_category', $default_link_cat); + } else { + $links = $wpdb->get_results("SELECT link_id, category_id FROM $wpdb->link2cat GROUP BY link_id, category_id"); + foreach ( $links as $link ) { + $link_id = (int) $link->link_id; + $term_id = (int) $link->category_id; + $taxonomy = 'link_category'; + $tt_id = $tt_ids[$term_id][$taxonomy]; + if ( empty($tt_id) ) + continue; + $wpdb->insert( $wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id) ); + } + } + + if ( $wp_current_db_version < 4772 ) { + // Obsolete linkcategories table + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories'); + } + + // Recalculate all counts + $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM $wpdb->term_taxonomy"); + foreach ( (array) $terms as $term ) { + if ( ('post_tag' == $term->taxonomy) || ('category' == $term->taxonomy) ) + $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id) ); + else + $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term->term_taxonomy_id) ); + $wpdb->update( $wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id) ); + } +} + +/** + * Remove old options from the database. + * + * @since 2.3.0 + */ +function upgrade_230_options_table() { + global $wpdb; + $old_options_fields = array( 'option_can_override', 'option_type', 'option_width', 'option_height', 'option_description', 'option_admin_level' ); + $wpdb->hide_errors(); + foreach ( $old_options_fields as $old ) + $wpdb->query("ALTER TABLE $wpdb->options DROP $old"); + $wpdb->show_errors(); +} + +/** + * Remove old categories, link2cat, and post2cat database tables. + * + * @since 2.3.0 + */ +function upgrade_230_old_tables() { + global $wpdb; + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'categories'); + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'link2cat'); + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'post2cat'); +} + +/** + * Upgrade old slugs made in version 2.2. + * + * @since 2.2.0 + */ +function upgrade_old_slugs() { + // upgrade people who were using the Redirect Old Slugs plugin + global $wpdb; + $wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_wp_old_slug' WHERE meta_key = 'old_slug'"); +} + +/** + * Execute changes made in WordPress 2.5.0. + * + * @since 2.5.0 + */ +function upgrade_250() { + global $wp_current_db_version; + + if ( $wp_current_db_version < 6689 ) { + populate_roles_250(); + } + +} + +/** + * Execute changes made in WordPress 2.5.2. + * + * @since 2.5.2 + */ +function upgrade_252() { + global $wpdb; + + $wpdb->query("UPDATE $wpdb->users SET user_activation_key = ''"); +} + +/** + * Execute changes made in WordPress 2.6. + * + * @since 2.6.0 + */ +function upgrade_260() { + global $wp_current_db_version; + + if ( $wp_current_db_version < 8000 ) + populate_roles_260(); + + if ( $wp_current_db_version < 8201 ) { + update_option('enable_app', 1); + update_option('enable_xmlrpc', 1); + } +} + +/** + * Execute changes made in WordPress 2.7. + * + * @since 2.7.0 + */ +function upgrade_270() { + global $wpdb, $wp_current_db_version; + + if ( $wp_current_db_version < 8980 ) + populate_roles_270(); + + // Update post_date for unpublished posts with empty timestamp + if ( $wp_current_db_version < 8921 ) + $wpdb->query( "UPDATE $wpdb->posts SET post_date = post_modified WHERE post_date = '0000-00-00 00:00:00'" ); +} + +/** + * Execute changes made in WordPress 2.8. + * + * @since 2.8.0 + */ +function upgrade_280() { + global $wp_current_db_version, $wpdb; + + if ( $wp_current_db_version < 10360 ) + populate_roles_280(); + if ( is_multisite() ) { + $start = 0; + while( $rows = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options ORDER BY option_id LIMIT $start, 20" ) ) { + foreach( $rows as $row ) { + $value = $row->option_value; + if ( !@unserialize( $value ) ) + $value = stripslashes( $value ); + if ( $value !== $row->option_value ) { + update_option( $row->option_name, $value ); + } + } + $start += 20; + } + refresh_blog_details( $wpdb->blogid ); + } +} + +/** + * Execute changes made in WordPress 2.9. + * + * @since 2.9.0 + */ +function upgrade_290() { + global $wp_current_db_version; + + if ( $wp_current_db_version < 11958 ) { + // Previously, setting depth to 1 would redundantly disable threading, but now 2 is the minimum depth to avoid confusion + if ( get_option( 'thread_comments_depth' ) == '1' ) { + update_option( 'thread_comments_depth', 2 ); + update_option( 'thread_comments', 0 ); + } + } +} + +/** + * Execute changes made in WordPress 3.0. + * + * @since 3.0.0 + */ +function upgrade_300() { + global $wp_current_db_version, $wpdb; + + if ( $wp_current_db_version < 15093 ) + populate_roles_300(); + + if ( $wp_current_db_version < 14139 && is_multisite() && is_main_site() && ! defined( 'MULTISITE' ) && get_site_option( 'siteurl' ) === false ) + add_site_option( 'siteurl', '' ); + + // 3.0 screen options key name changes. + if ( is_main_site() && !defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) { + $prefix = like_escape($wpdb->base_prefix); + $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key LIKE '{$prefix}%meta-box-hidden%' OR meta_key LIKE '{$prefix}%closedpostboxes%' OR meta_key LIKE '{$prefix}%manage-%-columns-hidden%' OR meta_key LIKE '{$prefix}%meta-box-order%' OR meta_key LIKE '{$prefix}%metaboxorder%' OR meta_key LIKE '{$prefix}%screen_layout%' + OR meta_key = 'manageedittagscolumnshidden' OR meta_key='managecategoriescolumnshidden' OR meta_key = 'manageedit-tagscolumnshidden' OR meta_key = 'manageeditcolumnshidden' OR meta_key = 'categories_per_page' OR meta_key = 'edit_tags_per_page'" ); + } + +} + +/** + * Execute changes made in WordPress 3.3. + * + * @since 3.3.0 + */ +function upgrade_330() { + global $wp_current_db_version, $wpdb, $wp_registered_widgets, $sidebars_widgets; + + if ( $wp_current_db_version < 19061 && is_main_site() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) { + $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key IN ('show_admin_bar_admin', 'plugins_last_view')" ); + } + + if ( $wp_current_db_version >= 11548 ) + return; + + $sidebars_widgets = get_option( 'sidebars_widgets', array() ); + $_sidebars_widgets = array(); + + if ( isset($sidebars_widgets['wp_inactive_widgets']) || empty($sidebars_widgets) ) + $sidebars_widgets['array_version'] = 3; + elseif ( !isset($sidebars_widgets['array_version']) ) + $sidebars_widgets['array_version'] = 1; + + switch ( $sidebars_widgets['array_version'] ) { + case 1 : + foreach ( (array) $sidebars_widgets as $index => $sidebar ) + if ( is_array($sidebar) ) + foreach ( (array) $sidebar as $i => $name ) { + $id = strtolower($name); + if ( isset($wp_registered_widgets[$id]) ) { + $_sidebars_widgets[$index][$i] = $id; + continue; + } + $id = sanitize_title($name); + if ( isset($wp_registered_widgets[$id]) ) { + $_sidebars_widgets[$index][$i] = $id; + continue; + } + + $found = false; + + foreach ( $wp_registered_widgets as $widget_id => $widget ) { + if ( strtolower($widget['name']) == strtolower($name) ) { + $_sidebars_widgets[$index][$i] = $widget['id']; + $found = true; + break; + } elseif ( sanitize_title($widget['name']) == sanitize_title($name) ) { + $_sidebars_widgets[$index][$i] = $widget['id']; + $found = true; + break; + } + } + + if ( $found ) + continue; + + unset($_sidebars_widgets[$index][$i]); + } + $_sidebars_widgets['array_version'] = 2; + $sidebars_widgets = $_sidebars_widgets; + unset($_sidebars_widgets); + + case 2 : + $sidebars_widgets = retrieve_widgets(); + $sidebars_widgets['array_version'] = 3; + update_option( 'sidebars_widgets', $sidebars_widgets ); + } +} + +/** + * Execute changes made in WordPress 3.4. + * + * @since 3.4.0 + */ +function upgrade_340() { + global $wp_current_db_version, $wpdb; + + if ( $wp_current_db_version < 19798 ) { + $wpdb->hide_errors(); + $wpdb->query( "ALTER TABLE $wpdb->options DROP COLUMN blog_id" ); + $wpdb->show_errors(); + } + + if ( $wp_current_db_version < 19799 ) { + $wpdb->hide_errors(); + $wpdb->query("ALTER TABLE $wpdb->comments DROP INDEX comment_approved"); + $wpdb->show_errors(); + } + + if ( $wp_current_db_version < 20022 && is_main_site() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) { + $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key = 'themes_last_view'" ); + } + + if ( $wp_current_db_version < 20080 ) { + if ( 'yes' == $wpdb->get_var( "SELECT autoload FROM $wpdb->options WHERE option_name = 'uninstall_plugins'" ) ) { + $uninstall_plugins = get_option( 'uninstall_plugins' ); + delete_option( 'uninstall_plugins' ); + add_option( 'uninstall_plugins', $uninstall_plugins, null, 'no' ); + } + } +} + +/** + * Execute network level changes + * + * @since 3.0.0 + */ +function upgrade_network() { + global $wp_current_db_version, $wpdb; + // 2.8 + if ( $wp_current_db_version < 11549 ) { + $wpmu_sitewide_plugins = get_site_option( 'wpmu_sitewide_plugins' ); + $active_sitewide_plugins = get_site_option( 'active_sitewide_plugins' ); + if ( $wpmu_sitewide_plugins ) { + if ( !$active_sitewide_plugins ) + $sitewide_plugins = (array) $wpmu_sitewide_plugins; + else + $sitewide_plugins = array_merge( (array) $active_sitewide_plugins, (array) $wpmu_sitewide_plugins ); + + update_site_option( 'active_sitewide_plugins', $sitewide_plugins ); + } + delete_site_option( 'wpmu_sitewide_plugins' ); + delete_site_option( 'deactivated_sitewide_plugins' ); + + $start = 0; + while( $rows = $wpdb->get_results( "SELECT meta_key, meta_value FROM {$wpdb->sitemeta} ORDER BY meta_id LIMIT $start, 20" ) ) { + foreach( $rows as $row ) { + $value = $row->meta_value; + if ( !@unserialize( $value ) ) + $value = stripslashes( $value ); + if ( $value !== $row->meta_value ) { + update_site_option( $row->meta_key, $value ); + } + } + $start += 20; + } + } + + // 3.0 + if ( $wp_current_db_version < 13576 ) + update_site_option( 'global_terms_enabled', '1' ); + + // 3.3 + if ( $wp_current_db_version < 19390 ) + update_site_option( 'initial_db_version', $wp_current_db_version ); + + if ( $wp_current_db_version < 19470 ) { + if ( false === get_site_option( 'active_sitewide_plugins' ) ) + update_site_option( 'active_sitewide_plugins', array() ); + } + + // 3.4 + if ( $wp_current_db_version < 20148 ) { + // 'allowedthemes' keys things by stylesheet. 'allowed_themes' keyed things by name. + $allowedthemes = get_site_option( 'allowedthemes' ); + $allowed_themes = get_site_option( 'allowed_themes' ); + if ( false === $allowedthemes && is_array( $allowed_themes ) && $allowed_themes ) { + $converted = array(); + $themes = wp_get_themes(); + foreach ( $themes as $stylesheet => $theme_data ) { + if ( isset( $allowed_themes[ $theme_data->get('Name') ] ) ) + $converted[ $stylesheet ] = true; + } + update_site_option( 'allowedthemes', $converted ); + delete_site_option( 'allowed_themes' ); + } + } +} + +// The functions we use to actually do stuff + +// General + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.0.0 + * + * @param string $table_name Database table name to create. + * @param string $create_ddl SQL statement to create table. + * @return bool If table already exists or was created by function. + */ +function maybe_create_table($table_name, $create_ddl) { + global $wpdb; + if ( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name ) + return true; + //didn't find it try to create it. + $q = $wpdb->query($create_ddl); + // we cannot directly tell that whether this succeeded! + if ( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name ) + return true; + return false; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.0.1 + * + * @param string $table Database table name. + * @param string $index Index name to drop. + * @return bool True, when finished. + */ +function drop_index($table, $index) { + global $wpdb; + $wpdb->hide_errors(); + $wpdb->query("ALTER TABLE `$table` DROP INDEX `$index`"); + // Now we need to take out all the extra ones we may have created + for ($i = 0; $i < 25; $i++) { + $wpdb->query("ALTER TABLE `$table` DROP INDEX `{$index}_$i`"); + } + $wpdb->show_errors(); + return true; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.0.1 + * + * @param string $table Database table name. + * @param string $index Database table index column. + * @return bool True, when done with execution. + */ +function add_clean_index($table, $index) { + global $wpdb; + drop_index($table, $index); + $wpdb->query("ALTER TABLE `$table` ADD INDEX ( `$index` )"); + return true; +} + +/** + ** maybe_add_column() + ** Add column to db table if it doesn't exist. + ** Returns: true if already exists or on successful completion + ** false on error + */ +function maybe_add_column($table_name, $column_name, $create_ddl) { + global $wpdb; + foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) { + if ($column == $column_name) { + return true; + } + } + //didn't find it try to create it. + $q = $wpdb->query($create_ddl); + // we cannot directly tell that whether this succeeded! + foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) { + if ($column == $column_name) { + return true; + } + } + return false; +} + +/** + * Retrieve all options as it was for 1.2. + * + * @since 1.2.0 + * + * @return array List of options. + */ +function get_alloptions_110() { + global $wpdb; + $all_options = new stdClass; + if ( $options = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" ) ) { + foreach ( $options as $option ) { + if ( 'siteurl' == $option->option_name || 'home' == $option->option_name || 'category_base' == $option->option_name ) + $option->option_value = untrailingslashit( $option->option_value ); + $all_options->{$option->option_name} = stripslashes( $option->option_value ); + } + } + return $all_options; +} + +/** + * Version of get_option that is private to install/upgrade. + * + * @since 1.5.1 + * @access private + * + * @param string $setting Option name. + * @return mixed + */ +function __get_option($setting) { + global $wpdb; + + if ( $setting == 'home' && defined( 'WP_HOME' ) ) + return untrailingslashit( WP_HOME ); + + if ( $setting == 'siteurl' && defined( 'WP_SITEURL' ) ) + return untrailingslashit( WP_SITEURL ); + + $option = $wpdb->get_var( $wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s", $setting ) ); + + if ( 'home' == $setting && '' == $option ) + return __get_option( 'siteurl' ); + + if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting || 'tag_base' == $setting ) + $option = untrailingslashit( $option ); + + @ $kellogs = unserialize( $option ); + if ( $kellogs !== false ) + return $kellogs; + else + return $option; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + * + * @param string $content + * @return string + */ +function deslash($content) { + // Note: \\\ inside a regex denotes a single backslash. + + // Replace one or more backslashes followed by a single quote with + // a single quote. + $content = preg_replace("/\\\+'/", "'", $content); + + // Replace one or more backslashes followed by a double quote with + // a double quote. + $content = preg_replace('/\\\+"/', '"', $content); + + // Replace one or more backslashes with one backslash. + $content = preg_replace("/\\\+/", "\\", $content); + + return $content; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + * + * @param unknown_type $queries + * @param unknown_type $execute + * @return unknown + */ +function dbDelta( $queries = '', $execute = true ) { + global $wpdb; + + if ( in_array( $queries, array( '', 'all', 'blog', 'global', 'ms_global' ), true ) ) + $queries = wp_get_db_schema( $queries ); + + // Separate individual queries into an array + if ( !is_array($queries) ) { + $queries = explode( ';', $queries ); + $queries = array_filter( $queries ); + } + $queries = apply_filters( 'dbdelta_queries', $queries ); + + $cqueries = array(); // Creation Queries + $iqueries = array(); // Insertion Queries + $for_update = array(); + + // Create a tablename index for an array ($cqueries) of queries + foreach($queries as $qry) { + if (preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)) { + $cqueries[ trim( $matches[1], '`' ) ] = $qry; + $for_update[$matches[1]] = 'Created table '.$matches[1]; + } else if (preg_match("|CREATE DATABASE ([^ ]*)|", $qry, $matches)) { + array_unshift($cqueries, $qry); + } else if (preg_match("|INSERT INTO ([^ ]*)|", $qry, $matches)) { + $iqueries[] = $qry; + } else if (preg_match("|UPDATE ([^ ]*)|", $qry, $matches)) { + $iqueries[] = $qry; + } else { + // Unrecognized query type + } + } + $cqueries = apply_filters( 'dbdelta_create_queries', $cqueries ); + $iqueries = apply_filters( 'dbdelta_insert_queries', $iqueries ); + + $global_tables = $wpdb->tables( 'global' ); + foreach ( $cqueries as $table => $qry ) { + // Upgrade global tables only for the main site. Don't upgrade at all if DO_NOT_UPGRADE_GLOBAL_TABLES is defined. + if ( in_array( $table, $global_tables ) && ( !is_main_site() || defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) ) + continue; + + // Fetch the table column structure from the database + $wpdb->suppress_errors(); + $tablefields = $wpdb->get_results("DESCRIBE {$table};"); + $wpdb->suppress_errors( false ); + + if ( ! $tablefields ) + continue; + + // Clear the field and index arrays + $cfields = $indices = array(); + // Get all of the field names in the query from between the parens + preg_match("|\((.*)\)|ms", $qry, $match2); + $qryline = trim($match2[1]); + + // Separate field lines into an array + $flds = explode("\n", $qryline); + + //echo "
    \n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."

    "; + + // For every field line specified in the query + foreach ($flds as $fld) { + // Extract the field name + preg_match("|^([^ ]*)|", trim($fld), $fvals); + $fieldname = trim( $fvals[1], '`' ); + + // Verify the found field name + $validfield = true; + switch (strtolower($fieldname)) { + case '': + case 'primary': + case 'index': + case 'fulltext': + case 'unique': + case 'key': + $validfield = false; + $indices[] = trim(trim($fld), ", \n"); + break; + } + $fld = trim($fld); + + // If it's a valid field, add it to the field array + if ($validfield) { + $cfields[strtolower($fieldname)] = trim($fld, ", \n"); + } + } + + // For every field in the table + foreach ($tablefields as $tablefield) { + // If the table field exists in the field array... + if (array_key_exists(strtolower($tablefield->Field), $cfields)) { + // Get the field type from the query + preg_match("|".$tablefield->Field." ([^ ]*( unsigned)?)|i", $cfields[strtolower($tablefield->Field)], $matches); + $fieldtype = $matches[1]; + + // Is actual field type different from the field type in query? + if ($tablefield->Type != $fieldtype) { + // Add a query to change the column type + $cqueries[] = "ALTER TABLE {$table} CHANGE COLUMN {$tablefield->Field} " . $cfields[strtolower($tablefield->Field)]; + $for_update[$table.'.'.$tablefield->Field] = "Changed type of {$table}.{$tablefield->Field} from {$tablefield->Type} to {$fieldtype}"; + } + + // Get the default value from the array + //echo "{$cfields[strtolower($tablefield->Field)]}
    "; + if (preg_match("| DEFAULT '(.*)'|i", $cfields[strtolower($tablefield->Field)], $matches)) { + $default_value = $matches[1]; + if ($tablefield->Default != $default_value) { + // Add a query to change the column's default value + $cqueries[] = "ALTER TABLE {$table} ALTER COLUMN {$tablefield->Field} SET DEFAULT '{$default_value}'"; + $for_update[$table.'.'.$tablefield->Field] = "Changed default value of {$table}.{$tablefield->Field} from {$tablefield->Default} to {$default_value}"; + } + } + + // Remove the field from the array (so it's not added) + unset($cfields[strtolower($tablefield->Field)]); + } else { + // This field exists in the table, but not in the creation queries? + } + } + + // For every remaining field specified for the table + foreach ($cfields as $fieldname => $fielddef) { + // Push a query line into $cqueries that adds the field to that table + $cqueries[] = "ALTER TABLE {$table} ADD COLUMN $fielddef"; + $for_update[$table.'.'.$fieldname] = 'Added column '.$table.'.'.$fieldname; + } + + // Index stuff goes here + // Fetch the table index structure from the database + $tableindices = $wpdb->get_results("SHOW INDEX FROM {$table};"); + + if ($tableindices) { + // Clear the index array + unset($index_ary); + + // For every index in the table + foreach ($tableindices as $tableindex) { + // Add the index to the index data array + $keyname = $tableindex->Key_name; + $index_ary[$keyname]['columns'][] = array('fieldname' => $tableindex->Column_name, 'subpart' => $tableindex->Sub_part); + $index_ary[$keyname]['unique'] = ($tableindex->Non_unique == 0)?true:false; + } + + // For each actual index in the index array + foreach ($index_ary as $index_name => $index_data) { + // Build a create string to compare to the query + $index_string = ''; + if ($index_name == 'PRIMARY') { + $index_string .= 'PRIMARY '; + } else if($index_data['unique']) { + $index_string .= 'UNIQUE '; + } + $index_string .= 'KEY '; + if ($index_name != 'PRIMARY') { + $index_string .= $index_name; + } + $index_columns = ''; + // For each column in the index + foreach ($index_data['columns'] as $column_data) { + if ($index_columns != '') $index_columns .= ','; + // Add the field to the column list string + $index_columns .= $column_data['fieldname']; + if ($column_data['subpart'] != '') { + $index_columns .= '('.$column_data['subpart'].')'; + } + } + // Add the column list to the index create string + $index_string .= ' ('.$index_columns.')'; + if (!(($aindex = array_search($index_string, $indices)) === false)) { + unset($indices[$aindex]); + //echo "
    {$table}:
    Found index:".$index_string."
    \n"; + } + //else echo "
    {$table}:
    Did not find index:".$index_string."
    ".print_r($indices, true)."
    \n"; + } + } + + // For every remaining index specified for the table + foreach ( (array) $indices as $index ) { + // Push a query line into $cqueries that adds the index to that table + $cqueries[] = "ALTER TABLE {$table} ADD $index"; + $for_update[$table.'.'.$fieldname] = 'Added index '.$table.' '.$index; + } + + // Remove the original table creation query from processing + unset( $cqueries[ $table ], $for_update[ $table ] ); + } + + $allqueries = array_merge($cqueries, $iqueries); + if ($execute) { + foreach ($allqueries as $query) { + //echo "
    ".print_r($query, true)."
    \n"; + $wpdb->query($query); + } + } + + return $for_update; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + */ +function make_db_current( $tables = 'all' ) { + $alterations = dbDelta( $tables ); + echo "
      \n"; + foreach($alterations as $alteration) echo "
    1. $alteration
    2. \n"; + echo "
    \n"; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + */ +function make_db_current_silent( $tables = 'all' ) { + $alterations = dbDelta( $tables ); +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + * + * @param unknown_type $theme_name + * @param unknown_type $template + * @return unknown + */ +function make_site_theme_from_oldschool($theme_name, $template) { + $home_path = get_home_path(); + $site_dir = WP_CONTENT_DIR . "/themes/$template"; + + if (! file_exists("$home_path/index.php")) + return false; + + // Copy files from the old locations to the site theme. + // TODO: This does not copy arbitrary include dependencies. Only the + // standard WP files are copied. + $files = array('index.php' => 'index.php', 'wp-layout.css' => 'style.css', 'wp-comments.php' => 'comments.php', 'wp-comments-popup.php' => 'comments-popup.php'); + + foreach ($files as $oldfile => $newfile) { + if ($oldfile == 'index.php') + $oldpath = $home_path; + else + $oldpath = ABSPATH; + + if ($oldfile == 'index.php') { // Check to make sure it's not a new index + $index = implode('', file("$oldpath/$oldfile")); + if (strpos($index, 'WP_USE_THEMES') !== false) { + if (! @copy(WP_CONTENT_DIR . '/themes/' . WP_DEFAULT_THEME . '/index.php', "$site_dir/$newfile")) + return false; + continue; // Don't copy anything + } + } + + if (! @copy("$oldpath/$oldfile", "$site_dir/$newfile")) + return false; + + chmod("$site_dir/$newfile", 0777); + + // Update the blog header include in each file. + $lines = explode("\n", implode('', file("$site_dir/$newfile"))); + if ($lines) { + $f = fopen("$site_dir/$newfile", 'w'); + + foreach ($lines as $line) { + if (preg_match('/require.*wp-blog-header/', $line)) + $line = '//' . $line; + + // Update stylesheet references. + $line = str_replace("/wp-layout.css", "", $line); + + // Update comments template inclusion. + $line = str_replace("", "", $line); + + fwrite($f, "{$line}\n"); + } + fclose($f); + } + } + + // Add a theme header. + $header = "/*\nTheme Name: $theme_name\nTheme URI: " . __get_option('siteurl') . "\nDescription: A theme automatically created by the update.\nVersion: 1.0\nAuthor: Moi\n*/\n"; + + $stylelines = file_get_contents("$site_dir/style.css"); + if ($stylelines) { + $f = fopen("$site_dir/style.css", 'w'); + + fwrite($f, $header); + fwrite($f, $stylelines); + fclose($f); + } + + return true; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + * + * @param unknown_type $theme_name + * @param unknown_type $template + * @return unknown + */ +function make_site_theme_from_default($theme_name, $template) { + $site_dir = WP_CONTENT_DIR . "/themes/$template"; + $default_dir = WP_CONTENT_DIR . '/themes/' . WP_DEFAULT_THEME; + + // Copy files from the default theme to the site theme. + //$files = array('index.php', 'comments.php', 'comments-popup.php', 'footer.php', 'header.php', 'sidebar.php', 'style.css'); + + $theme_dir = @ opendir($default_dir); + if ($theme_dir) { + while(($theme_file = readdir( $theme_dir )) !== false) { + if (is_dir("$default_dir/$theme_file")) + continue; + if (! @copy("$default_dir/$theme_file", "$site_dir/$theme_file")) + return; + chmod("$site_dir/$theme_file", 0777); + } + } + @closedir($theme_dir); + + // Rewrite the theme header. + $stylelines = explode("\n", implode('', file("$site_dir/style.css"))); + if ($stylelines) { + $f = fopen("$site_dir/style.css", 'w'); + + foreach ($stylelines as $line) { + if (strpos($line, 'Theme Name:') !== false) $line = 'Theme Name: ' . $theme_name; + elseif (strpos($line, 'Theme URI:') !== false) $line = 'Theme URI: ' . __get_option('url'); + elseif (strpos($line, 'Description:') !== false) $line = 'Description: Your theme.'; + elseif (strpos($line, 'Version:') !== false) $line = 'Version: 1'; + elseif (strpos($line, 'Author:') !== false) $line = 'Author: You'; + fwrite($f, $line . "\n"); + } + fclose($f); + } + + // Copy the images. + umask(0); + if (! mkdir("$site_dir/images", 0777)) { + return false; + } + + $images_dir = @ opendir("$default_dir/images"); + if ($images_dir) { + while(($image = readdir($images_dir)) !== false) { + if (is_dir("$default_dir/images/$image")) + continue; + if (! @copy("$default_dir/images/$image", "$site_dir/images/$image")) + return; + chmod("$site_dir/images/$image", 0777); + } + } + @closedir($images_dir); +} + +// Create a site theme from the default theme. +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + * + * @return unknown + */ +function make_site_theme() { + // Name the theme after the blog. + $theme_name = __get_option('blogname'); + $template = sanitize_title($theme_name); + $site_dir = WP_CONTENT_DIR . "/themes/$template"; + + // If the theme already exists, nothing to do. + if ( is_dir($site_dir)) { + return false; + } + + // We must be able to write to the themes dir. + if (! is_writable(WP_CONTENT_DIR . "/themes")) { + return false; + } + + umask(0); + if (! mkdir($site_dir, 0777)) { + return false; + } + + if (file_exists(ABSPATH . 'wp-layout.css')) { + if (! make_site_theme_from_oldschool($theme_name, $template)) { + // TODO: rm -rf the site theme directory. + return false; + } + } else { + if (! make_site_theme_from_default($theme_name, $template)) + // TODO: rm -rf the site theme directory. + return false; + } + + // Make the new site theme active. + $current_template = __get_option('template'); + if ($current_template == WP_DEFAULT_THEME) { + update_option('template', $template); + update_option('stylesheet', $template); + } + return $template; +} + +/** + * Translate user level to user role name. + * + * @since 2.0.0 + * + * @param int $level User level. + * @return string User role name. + */ +function translate_level_to_role($level) { + switch ($level) { + case 10: + case 9: + case 8: + return 'administrator'; + case 7: + case 6: + case 5: + return 'editor'; + case 4: + case 3: + case 2: + return 'author'; + case 1: + return 'contributor'; + case 0: + return 'subscriber'; + } +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + */ +function wp_check_mysql_version() { + global $wpdb; + $result = $wpdb->check_database_version(); + if ( is_wp_error( $result ) ) + die( $result->get_error_message() ); +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.2.0 + */ +function maybe_disable_automattic_widgets() { + $plugins = __get_option( 'active_plugins' ); + + foreach ( (array) $plugins as $plugin ) { + if ( basename( $plugin ) == 'widgets.php' ) { + array_splice( $plugins, array_search( $plugin, $plugins ), 1 ); + update_option( 'active_plugins', $plugins ); + break; + } + } +} + +/** + * Runs before the schema is upgraded. + * + * @since 2.9.0 + */ +function pre_schema_upgrade() { + global $wp_current_db_version, $wp_db_version, $wpdb; + + // Upgrade versions prior to 2.9 + if ( $wp_current_db_version < 11557 ) { + // Delete duplicate options. Keep the option with the highest option_id. + $wpdb->query("DELETE o1 FROM $wpdb->options AS o1 JOIN $wpdb->options AS o2 USING (`option_name`) WHERE o2.option_id > o1.option_id"); + + // Drop the old primary key and add the new. + $wpdb->query("ALTER TABLE $wpdb->options DROP PRIMARY KEY, ADD PRIMARY KEY(option_id)"); + + // Drop the old option_name index. dbDelta() doesn't do the drop. + $wpdb->query("ALTER TABLE $wpdb->options DROP INDEX option_name"); + } + +} + +/** + * Install global terms. + * + * @since 3.0.0 + * + */ +if ( !function_exists( 'install_global_terms' ) ) : +function install_global_terms() { + global $wpdb, $charset_collate; + $ms_queries = " +CREATE TABLE $wpdb->sitecategories ( + cat_ID bigint(20) NOT NULL auto_increment, + cat_name varchar(55) NOT NULL default '', + category_nicename varchar(200) NOT NULL default '', + last_updated timestamp NOT NULL, + PRIMARY KEY (cat_ID), + KEY category_nicename (category_nicename), + KEY last_updated (last_updated) +) $charset_collate; +"; +// now create tables + dbDelta( $ms_queries ); +} +endif; diff --git a/wp-admin/includes/user.php b/wp-admin/includes/user.php new file mode 100644 index 0000000..ff1e91d --- /dev/null +++ b/wp-admin/includes/user.php @@ -0,0 +1,358 @@ +ID = (int) $user_id; + $userdata = get_userdata( $user_id ); + $user->user_login = $wpdb->escape( $userdata->user_login ); + } else { + $update = false; + } + + if ( !$update && isset( $_POST['user_login'] ) ) + $user->user_login = sanitize_user($_POST['user_login'], true); + + $pass1 = $pass2 = ''; + if ( isset( $_POST['pass1'] )) + $pass1 = $_POST['pass1']; + if ( isset( $_POST['pass2'] )) + $pass2 = $_POST['pass2']; + + if ( isset( $_POST['role'] ) && current_user_can( 'edit_users' ) ) { + $new_role = sanitize_text_field( $_POST['role'] ); + $potential_role = isset($wp_roles->role_objects[$new_role]) ? $wp_roles->role_objects[$new_role] : false; + // Don't let anyone with 'edit_users' (admins) edit their own role to something without it. + // Multisite super admins can freely edit their blog roles -- they possess all caps. + if ( ( is_multisite() && current_user_can( 'manage_sites' ) ) || $user_id != get_current_user_id() || ($potential_role && $potential_role->has_cap( 'edit_users' ) ) ) + $user->role = $new_role; + + // If the new role isn't editable by the logged-in user die with error + $editable_roles = get_editable_roles(); + if ( ! empty( $new_role ) && empty( $editable_roles[$new_role] ) ) + wp_die(__('You can’t give users that role.')); + } + + if ( isset( $_POST['email'] )) + $user->user_email = sanitize_text_field( $_POST['email'] ); + if ( isset( $_POST['url'] ) ) { + if ( empty ( $_POST['url'] ) || $_POST['url'] == 'http://' ) { + $user->user_url = ''; + } else { + $user->user_url = esc_url_raw( $_POST['url'] ); + $user->user_url = preg_match('/^(https?|ftps?|mailto|news|irc|gopher|nntp|feed|telnet):/is', $user->user_url) ? $user->user_url : 'http://'.$user->user_url; + } + } + if ( isset( $_POST['first_name'] ) ) + $user->first_name = sanitize_text_field( $_POST['first_name'] ); + if ( isset( $_POST['last_name'] ) ) + $user->last_name = sanitize_text_field( $_POST['last_name'] ); + if ( isset( $_POST['nickname'] ) ) + $user->nickname = sanitize_text_field( $_POST['nickname'] ); + if ( isset( $_POST['display_name'] ) ) + $user->display_name = sanitize_text_field( $_POST['display_name'] ); + + if ( isset( $_POST['description'] ) ) + $user->description = trim( $_POST['description'] ); + + foreach ( _wp_get_user_contactmethods( $user ) as $method => $name ) { + if ( isset( $_POST[$method] )) + $user->$method = sanitize_text_field( $_POST[$method] ); + } + + if ( $update ) { + $user->rich_editing = isset( $_POST['rich_editing'] ) && 'false' == $_POST['rich_editing'] ? 'false' : 'true'; + $user->admin_color = isset( $_POST['admin_color'] ) ? sanitize_text_field( $_POST['admin_color'] ) : 'fresh'; + $user->show_admin_bar_front = isset( $_POST['admin_bar_front'] ) ? 'true' : 'false'; + } + + $user->comment_shortcuts = isset( $_POST['comment_shortcuts'] ) && 'true' == $_POST['comment_shortcuts'] ? 'true' : ''; + + $user->use_ssl = 0; + if ( !empty($_POST['use_ssl']) ) + $user->use_ssl = 1; + + $errors = new WP_Error(); + + /* checking that username has been typed */ + if ( $user->user_login == '' ) + $errors->add( 'user_login', __( 'ERROR: Please enter a username.' )); + + /* checking the password has been typed twice */ + do_action_ref_array( 'check_passwords', array ( $user->user_login, & $pass1, & $pass2 )); + + if ( $update ) { + if ( empty($pass1) && !empty($pass2) ) + $errors->add( 'pass', __( 'ERROR: You entered your new password only once.' ), array( 'form-field' => 'pass1' ) ); + elseif ( !empty($pass1) && empty($pass2) ) + $errors->add( 'pass', __( 'ERROR: You entered your new password only once.' ), array( 'form-field' => 'pass2' ) ); + } else { + if ( empty($pass1) ) + $errors->add( 'pass', __( 'ERROR: Please enter your password.' ), array( 'form-field' => 'pass1' ) ); + elseif ( empty($pass2) ) + $errors->add( 'pass', __( 'ERROR: Please enter your password twice.' ), array( 'form-field' => 'pass2' ) ); + } + + /* Check for "\" in password */ + if ( false !== strpos( stripslashes($pass1), "\\" ) ) + $errors->add( 'pass', __( 'ERROR: Passwords may not contain the character "\\".' ), array( 'form-field' => 'pass1' ) ); + + /* checking the password has been typed twice the same */ + if ( $pass1 != $pass2 ) + $errors->add( 'pass', __( 'ERROR: Please enter the same password in the two password fields.' ), array( 'form-field' => 'pass1' ) ); + + if ( !empty( $pass1 ) ) + $user->user_pass = $pass1; + + if ( !$update && isset( $_POST['user_login'] ) && !validate_username( $_POST['user_login'] ) ) + $errors->add( 'user_login', __( 'ERROR: This username is invalid because it uses illegal characters. Please enter a valid username.' )); + + if ( !$update && username_exists( $user->user_login ) ) + $errors->add( 'user_login', __( 'ERROR: This username is already registered. Please choose another one.' )); + + /* checking e-mail address */ + if ( empty( $user->user_email ) ) { + $errors->add( 'empty_email', __( 'ERROR: Please enter an e-mail address.' ), array( 'form-field' => 'email' ) ); + } elseif ( !is_email( $user->user_email ) ) { + $errors->add( 'invalid_email', __( 'ERROR: The e-mail address isn’t correct.' ), array( 'form-field' => 'email' ) ); + } elseif ( ( $owner_id = email_exists($user->user_email) ) && ( !$update || ( $owner_id != $user->ID ) ) ) { + $errors->add( 'email_exists', __('ERROR: This email is already registered, please choose another one.'), array( 'form-field' => 'email' ) ); + } + + // Allow plugins to return their own errors. + do_action_ref_array('user_profile_update_errors', array ( &$errors, $update, &$user ) ); + + if ( $errors->get_error_codes() ) + return $errors; + + if ( $update ) { + $user_id = wp_update_user( get_object_vars( $user ) ); + } else { + $user_id = wp_insert_user( get_object_vars( $user ) ); + wp_new_user_notification( $user_id, isset($_POST['send_password']) ? $pass1 : '' ); + } + return $user_id; +} + +/** + * Fetch a filtered list of user roles that the current user is + * allowed to edit. + * + * Simple function who's main purpose is to allow filtering of the + * list of roles in the $wp_roles object so that plugins can remove + * inappropriate ones depending on the situation or user making edits. + * Specifically because without filtering anyone with the edit_users + * capability can edit others to be administrators, even if they are + * only editors or authors. This filter allows admins to delegate + * user management. + * + * @since 2.8 + * + * @return unknown + */ +function get_editable_roles() { + global $wp_roles; + + $all_roles = $wp_roles->roles; + $editable_roles = apply_filters('editable_roles', $all_roles); + + return $editable_roles; +} + +/** + * Retrieve user data and filter it. + * + * @since 2.0.5 + * + * @param int $user_id User ID. + * @return object WP_User object with user data. + */ +function get_user_to_edit( $user_id ) { + $user = new WP_User( $user_id ); + + $user->filter = 'edit'; + + return $user; +} + +/** + * Retrieve the user's drafts. + * + * @since 2.0.0 + * + * @param int $user_id User ID. + * @return array + */ +function get_users_drafts( $user_id ) { + global $wpdb; + $query = $wpdb->prepare("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'draft' AND post_author = %d ORDER BY post_modified DESC", $user_id); + $query = apply_filters('get_users_drafts', $query); + return $wpdb->get_results( $query ); +} + +/** + * Remove user and optionally reassign posts and links to another user. + * + * If the $reassign parameter is not assigned to an User ID, then all posts will + * be deleted of that user. The action 'delete_user' that is passed the User ID + * being deleted will be run after the posts are either reassigned or deleted. + * The user meta will also be deleted that are for that User ID. + * + * @since 2.0.0 + * + * @param int $id User ID. + * @param int $reassign Optional. Reassign posts and links to new User ID. + * @return bool True when finished. + */ +function wp_delete_user( $id, $reassign = 'novalue' ) { + global $wpdb; + + $id = (int) $id; + $user = new WP_User( $id ); + + // allow for transaction statement + do_action('delete_user', $id); + + if ( 'novalue' === $reassign || null === $reassign ) { + $post_types_to_delete = array(); + foreach ( get_post_types( array(), 'objects' ) as $post_type ) { + if ( $post_type->delete_with_user ) { + $post_types_to_delete[] = $post_type->name; + } elseif ( null === $post_type->delete_with_user && post_type_supports( $post_type->name, 'author' ) ) { + $post_types_to_delete[] = $post_type->name; + } + } + + $post_types_to_delete = apply_filters( 'post_types_to_delete_with_user', $post_types_to_delete, $id ); + $post_types_to_delete = implode( "', '", $post_types_to_delete ); + $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d AND post_type IN ('$post_types_to_delete')", $id ) ); + if ( $post_ids ) { + foreach ( $post_ids as $post_id ) + wp_delete_post( $post_id ); + } + + // Clean links + $link_ids = $wpdb->get_col( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id) ); + + if ( $link_ids ) { + foreach ( $link_ids as $link_id ) + wp_delete_link($link_id); + } + } else { + $reassign = (int) $reassign; + $wpdb->update( $wpdb->posts, array('post_author' => $reassign), array('post_author' => $id) ); + $wpdb->update( $wpdb->links, array('link_owner' => $reassign), array('link_owner' => $id) ); + } + + // FINALLY, delete user + if ( is_multisite() ) { + remove_user_from_blog( $id, get_current_blog_id() ); + } else { + $meta = $wpdb->get_col( $wpdb->prepare( "SELECT umeta_id FROM $wpdb->usermeta WHERE user_id = %d", $id ) ); + foreach ( $meta as $mid ) + delete_metadata_by_mid( 'user', $mid ); + + $wpdb->delete( $wpdb->users, array( 'ID' => $id ) ); + } + + clean_user_cache( $user ); + + // allow for commit transaction + do_action('deleted_user', $id); + + return true; +} + +/** + * Remove all capabilities from user. + * + * @since 2.1.0 + * + * @param int $id User ID. + */ +function wp_revoke_user($id) { + $id = (int) $id; + + $user = new WP_User($id); + $user->remove_all_caps(); +} + +add_action('admin_init', 'default_password_nag_handler'); +/** + * @since 2.8.0 + */ +function default_password_nag_handler($errors = false) { + global $user_ID; + if ( ! get_user_option('default_password_nag') ) //Short circuit it. + return; + + //get_user_setting = JS saved UI setting. else no-js-fallback code. + if ( 'hide' == get_user_setting('default_password_nag') || isset($_GET['default_password_nag']) && '0' == $_GET['default_password_nag'] ) { + delete_user_setting('default_password_nag'); + update_user_option($user_ID, 'default_password_nag', false, true); + } +} + +add_action('profile_update', 'default_password_nag_edit_user', 10, 2); +/** + * @since 2.8.0 + */ +function default_password_nag_edit_user($user_ID, $old_data) { + if ( ! get_user_option('default_password_nag', $user_ID) ) //Short circuit it. + return; + + $new_data = get_userdata($user_ID); + + if ( $new_data->user_pass != $old_data->user_pass ) { //Remove the nag if the password has been changed. + delete_user_setting('default_password_nag', $user_ID); + update_user_option($user_ID, 'default_password_nag', false, true); + } +} + +add_action('admin_notices', 'default_password_nag'); +/** + * @since 2.8.0 + */ +function default_password_nag() { + global $pagenow; + if ( 'profile.php' == $pagenow || ! get_user_option('default_password_nag') ) //Short circuit it. + return; + + echo '
    '; + echo '

    '; + echo '' . __('Notice:') . ' '; + _e('You’re using the auto-generated password for your account. Would you like to change it to something easier to remember?'); + echo '

    '; + printf( '' . __('Yes, take me to my profile page') . ' | ', admin_url('profile.php') . '#password' ); + printf( '' . __('No thanks, do not remind me again') . '', '?default_password_nag=0' ); + echo '

    '; +} diff --git a/wp-admin/includes/widgets.php b/wp-admin/includes/widgets.php new file mode 100644 index 0000000..318cf3f --- /dev/null +++ b/wp-admin/includes/widgets.php @@ -0,0 +1,224 @@ + $widget['id'], 'widget_name' => $widget['name'], '_display' => 'template' ); + + if ( isset($wp_registered_widget_controls[$widget['id']]['id_base']) && isset($widget['params'][0]['number']) ) { + $id_base = $wp_registered_widget_controls[$widget['id']]['id_base']; + $args['_temp_id'] = "$id_base-__i__"; + $args['_multi_num'] = next_widget_id_number($id_base); + $args['_add'] = 'multi'; + } else { + $args['_add'] = 'single'; + if ( $sidebar ) + $args['_hide'] = '1'; + } + + $args = wp_list_widget_controls_dynamic_sidebar( array( 0 => $args, 1 => $widget['params'][0] ) ); + call_user_func_array( 'wp_widget_control', $args ); + } +} + +/** + * Callback to sort array by a 'name' key. + * + * @since 3.1.0 + * @access private + */ +function _sort_name_callback( $a, $b ) { + return strnatcasecmp( $a['name'], $b['name'] ); +} + +/** + * Show the widgets and their settings for a sidebar. + * Used in the the admin widget config screen. + * + * @since 2.5.0 + * + * @param string $sidebar id slug of the sidebar + */ +function wp_list_widget_controls( $sidebar ) { + add_filter( 'dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar' ); + + echo "
    \n"; + + $description = wp_sidebar_description( $sidebar ); + + if ( !empty( $description ) ) { + echo "\n"; + } + + dynamic_sidebar( $sidebar ); + echo "
    \n"; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param array $params + * @return array + */ +function wp_list_widget_controls_dynamic_sidebar( $params ) { + global $wp_registered_widgets; + static $i = 0; + $i++; + + $widget_id = $params[0]['widget_id']; + $id = isset($params[0]['_temp_id']) ? $params[0]['_temp_id'] : $widget_id; + $hidden = isset($params[0]['_hide']) ? ' style="display:none;"' : ''; + + $params[0]['before_widget'] = "
    "; + $params[0]['after_widget'] = "
    "; + $params[0]['before_title'] = "%BEG_OF_TITLE%"; // deprecated + $params[0]['after_title'] = "%END_OF_TITLE%"; // deprecated + if ( is_callable( $wp_registered_widgets[$widget_id]['callback'] ) ) { + $wp_registered_widgets[$widget_id]['_callback'] = $wp_registered_widgets[$widget_id]['callback']; + $wp_registered_widgets[$widget_id]['callback'] = 'wp_widget_control'; + } + + return $params; +} + +function next_widget_id_number($id_base) { + global $wp_registered_widgets; + $number = 1; + + foreach ( $wp_registered_widgets as $widget_id => $widget ) { + if ( preg_match( '/' . $id_base . '-([0-9]+)$/', $widget_id, $matches ) ) + $number = max($number, $matches[1]); + } + $number++; + + return $number; +} + +/** + * Meta widget used to display the control form for a widget. + * + * Called from dynamic_sidebar(). + * + * @since 2.5.0 + * + * @param array $sidebar_args + * @return array + */ +function wp_widget_control( $sidebar_args ) { + global $wp_registered_widgets, $wp_registered_widget_controls, $sidebars_widgets; + + $widget_id = $sidebar_args['widget_id']; + $sidebar_id = isset($sidebar_args['id']) ? $sidebar_args['id'] : false; + $key = $sidebar_id ? array_search( $widget_id, $sidebars_widgets[$sidebar_id] ) : '-1'; // position of widget in sidebar + $control = isset($wp_registered_widget_controls[$widget_id]) ? $wp_registered_widget_controls[$widget_id] : array(); + $widget = $wp_registered_widgets[$widget_id]; + + $id_format = $widget['id']; + $widget_number = isset($control['params'][0]['number']) ? $control['params'][0]['number'] : ''; + $id_base = isset($control['id_base']) ? $control['id_base'] : $widget_id; + $multi_number = isset($sidebar_args['_multi_num']) ? $sidebar_args['_multi_num'] : ''; + $add_new = isset($sidebar_args['_add']) ? $sidebar_args['_add'] : ''; + + $query_arg = array( 'editwidget' => $widget['id'] ); + if ( $add_new ) { + $query_arg['addnew'] = 1; + if ( $multi_number ) { + $query_arg['num'] = $multi_number; + $query_arg['base'] = $id_base; + } + } else { + $query_arg['sidebar'] = $sidebar_id; + $query_arg['key'] = $key; + } + + // We aren't showing a widget control, we're outputting a template for a multi-widget control + if ( isset($sidebar_args['_display']) && 'template' == $sidebar_args['_display'] && $widget_number ) { + // number == -1 implies a template where id numbers are replaced by a generic '__i__' + $control['params'][0]['number'] = -1; + // with id_base widget id's are constructed like {$id_base}-{$id_number} + if ( isset($control['id_base']) ) + $id_format = $control['id_base'] . '-__i__'; + } + + $wp_registered_widgets[$widget_id]['callback'] = $wp_registered_widgets[$widget_id]['_callback']; + unset($wp_registered_widgets[$widget_id]['_callback']); + + $widget_title = esc_html( strip_tags( $sidebar_args['widget_name'] ) ); + $has_form = 'noform'; + + echo $sidebar_args['before_widget']; ?> +
    +
    + + +
    +

    +
    + +
    +
    +
    +" . __('There are no options for this widget.') . "

    \n"; ?> +
    + + + + + + + + +
    +
    + | + +
    +
    + + 'widget-' . esc_attr( $id_format ) . '-savewidget' ) ); ?> +
    +
    +
    +
    +
    + +
    + +
    + 4, 'default' => 1) ); +else + add_screen_option('layout_columns', array('max' => 4, 'default' => 2) ); + +$help = '

    ' . __( 'Welcome to your WordPress Dashboard! This is the screen you will see when you log in to your site, and gives you access to all the site management features of WordPress. You can get help for any screen by clicking the Help tab in the upper corner.' ) . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __( 'Overview' ), + 'content' => $help, +) ); + +// Help tabs + +$help = '

    ' . __('The left-hand navigation menu provides links to all of the WordPress administration screens, with submenu items displayed on hover. You can minimize this menu to a narrow icon strip by clicking on the Collapse Menu arrow at the bottom.') . '

    '; +$help .= '

    ' . __('Links in the Toolbar at the top of the screen connect your dashboard and the front end of your site, and provide access to your profile and helpful WordPress information.') . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'help-navigation', + 'title' => __('Navigation'), + 'content' => $help, +) ); + +$help = '

    ' . __('You can use the following controls to arrange your Dashboard screen to suit your workflow. This is true on most other administration screens as well.') . '

    '; +$help .= '

    ' . __('Screen Options - Use the Screen Options tab to choose which Dashboard boxes to show, and how many columns to display.') . '

    '; +$help .= '

    ' . __('Drag and Drop - To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box.') . '

    '; +$help .= '

    ' . __('Box Controls - Click the title bar of the box to expand or collapse it. In addition, some box have configurable content, and will show a “Configure” link in the title bar if you hover over it.') . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'help-layout', + 'title' => __('Layout'), + 'content' => $help, +) ); + +$help = '

    ' . __('The boxes on your Dashboard screen are:') . '

    '; +if ( current_user_can( 'edit_posts' ) ) + $help .= '

    ' . __('Right Now - Displays a summary of the content on your site and identifies which theme and version of WordPress you are using.') . '

    '; +if ( current_user_can( 'moderate_comments' ) ) + $help .= '

    ' . __('Recent Comments - Shows the most recent comments on your posts (configurable, up to 30) and allows you to moderate them.') . '

    '; +if ( current_user_can( 'publish_posts' ) ) + $help .= '

    ' . __('Incoming Links - Shows links to your site found by Google Blog Search.') . '

    '; +if ( current_user_can( 'edit_posts' ) ) { + $help .= '

    ' . __('QuickPress - Allows you to create a new post and either publish it or save it as a draft.') . '

    '; + $help .= '

    ' . __('Recent Drafts - Displays links to the 5 most recent draft posts you’ve started.') . '

    '; +} +$help .= '

    ' . __('WordPress Blog - Latest news from the official WordPress project.') . '

    '; +$help .= '

    ' . __('Other WordPress News - Shows the WordPress Planet feed. You can configure it to show a different feed of your choosing.') . '

    '; +if ( ! is_multisite() && current_user_can( 'install_plugins' ) ) + $help .= '

    ' . __('Plugins - Features the most popular, newest, and recently updated plugins from the WordPress.org Plugin Directory.') . '

    '; +if ( current_user_can( 'edit_theme_options' ) ) + $help .= '

    ' . __('Welcome - Shows links for some of the most common tasks when setting up a new site.') . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'help-content', + 'title' => __('Content'), + 'content' => $help, +) ); + +unset( $help ); + +get_current_screen()->set_help_sidebar( + '

    ' . __( 'For more information:' ) . '

    ' . + '

    ' . __( 'Documentation on Dashboard' ) . '

    ' . + '

    ' . __( 'Support Forums' ) . '

    ' +); + +include (ABSPATH . 'wp-admin/admin-header.php'); + +$today = current_time('mysql', 1); +?> + +
    + +

    + + + +
    + + + +
    +
    + +
    + + diff --git a/wp-admin/install-helper.php b/wp-admin/install-helper.php new file mode 100644 index 0000000..c98b28c --- /dev/null +++ b/wp-admin/install-helper.php @@ -0,0 +1,198 @@ + + * check_column('wp_links', 'link_description', 'mediumtext'); + * if (check_column($wpdb->comments, 'comment_author', 'tinytext')) + * echo "ok\n"; + * + * $error_count = 0; + * $tablename = $wpdb->links; + * // check the column + * if (!check_column($wpdb->links, 'link_description', 'varchar(255)')) { + * $ddl = "ALTER TABLE $wpdb->links MODIFY COLUMN link_description varchar(255) NOT NULL DEFAULT '' "; + * $q = $wpdb->query($ddl); + * } + * + * if (check_column($wpdb->links, 'link_description', 'varchar(255)')) { + * $res .= $tablename . ' - ok
    '; + * } else { + * $res .= 'There was a problem with ' . $tablename . '
    '; + * ++$error_count; + * } + * + * + * @package WordPress + * @subpackage Plugin + */ + +/** Load WordPress Bootstrap */ +require_once(dirname(dirname(__FILE__)).'/wp-load.php'); + +if ( ! function_exists('maybe_create_table') ) : +/** + * Create database table, if it doesn't already exist. + * + * @since 1.0.0 + * @package WordPress + * @subpackage Plugin + * @uses $wpdb + * + * @param string $table_name Database table name. + * @param string $create_ddl Create database table SQL. + * @return bool False on error, true if already exists or success. + */ +function maybe_create_table($table_name, $create_ddl) { + global $wpdb; + foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) { + if ($table == $table_name) { + return true; + } + } + //didn't find it try to create it. + $wpdb->query($create_ddl); + // we cannot directly tell that whether this succeeded! + foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) { + if ($table == $table_name) { + return true; + } + } + return false; +} +endif; + +if ( ! function_exists('maybe_add_column') ) : +/** + * Add column to database table, if column doesn't already exist in table. + * + * @since 1.0.0 + * @package WordPress + * @subpackage Plugin + * @uses $wpdb + * + * @param string $table_name Database table name + * @param string $column_name Table column name + * @param string $create_ddl SQL to add column to table. + * @return bool False on failure. True, if already exists or was successful. + */ +function maybe_add_column($table_name, $column_name, $create_ddl) { + global $wpdb; + foreach ($wpdb->get_col("DESC $table_name",0) as $column ) { + + if ($column == $column_name) { + return true; + } + } + //didn't find it try to create it. + $wpdb->query($create_ddl); + // we cannot directly tell that whether this succeeded! + foreach ($wpdb->get_col("DESC $table_name",0) as $column ) { + if ($column == $column_name) { + return true; + } + } + return false; +} +endif; + +/** + * Drop column from database table, if it exists. + * + * @since 1.0.0 + * @package WordPress + * @subpackage Plugin + * @uses $wpdb + * + * @param string $table_name Table name + * @param string $column_name Column name + * @param string $drop_ddl SQL statement to drop column. + * @return bool False on failure, true on success or doesn't exist. + */ +function maybe_drop_column($table_name, $column_name, $drop_ddl) { + global $wpdb; + foreach ($wpdb->get_col("DESC $table_name",0) as $column ) { + if ($column == $column_name) { + //found it try to drop it. + $wpdb->query($drop_ddl); + // we cannot directly tell that whether this succeeded! + foreach ($wpdb->get_col("DESC $table_name",0) as $column ) { + if ($column == $column_name) { + return false; + } + } + } + } + // else didn't find it + return true; +} + +/** + * Check column matches criteria. + * + * Uses the SQL DESC for retrieving the table info for the column. It will help + * understand the parameters, if you do more research on what column information + * is returned by the SQL statement. Pass in null to skip checking that + * criteria. + * + * Column names returned from DESC table are case sensitive and are listed: + * Field + * Type + * Null + * Key + * Default + * Extra + * + * @since 1.0.0 + * @package WordPress + * @subpackage Plugin + * + * @param string $table_name Table name + * @param string $col_name Column name + * @param string $col_type Column type + * @param bool $is_null Optional. Check is null. + * @param mixed $key Optional. Key info. + * @param mixed $default Optional. Default value. + * @param mixed $extra Optional. Extra value. + * @return bool True, if matches. False, if not matching. + */ +function check_column($table_name, $col_name, $col_type, $is_null = null, $key = null, $default = null, $extra = null) { + global $wpdb; + $diffs = 0; + $results = $wpdb->get_results("DESC $table_name"); + + foreach ($results as $row ) { + + if ($row->Field == $col_name) { + // got our column, check the params + if (($col_type != null) && ($row->Type != $col_type)) { + ++$diffs; + } + if (($is_null != null) && ($row->Null != $is_null)) { + ++$diffs; + } + if (($key != null) && ($row->Key != $key)) { + ++$diffs; + } + if (($default != null) && ($row->Default != $default)) { + ++$diffs; + } + if (($extra != null) && ($row->Extra != $extra)) { + ++$diffs; + } + if ($diffs > 0) { + return false; + } + return true; + } // end if found our column + } + return false; +} diff --git a/wp-admin/install.php b/wp-admin/install.php new file mode 100644 index 0000000..e39d1f4 --- /dev/null +++ b/wp-admin/install.php @@ -0,0 +1,254 @@ + + + + + + Error: PHP is not running + + +

    WordPress

    +

    Error: PHP is not running

    +

    WordPress requires that your web server is running PHP. Your server does not have PHP installed, or PHP is turned off.

    + + + + +> + + + <?php _e( 'WordPress › Installation' ); ?> + + +> +

    WordPress

    + +get_var("SHOW TABLES LIKE '$wpdb->users'") != null ); + + // Ensure that Blogs appear in search engines by default + $blog_public = 1; + if ( ! empty( $_POST ) ) + $blog_public = isset( $_POST['blog_public'] ); + + $weblog_title = isset( $_POST['weblog_title'] ) ? trim( stripslashes( $_POST['weblog_title'] ) ) : ''; + $user_name = isset($_POST['user_name']) ? trim( stripslashes( $_POST['user_name'] ) ) : 'admin'; + $admin_password = isset($_POST['admin_password']) ? trim( stripslashes( $_POST['admin_password'] ) ) : ''; + $admin_email = isset( $_POST['admin_email'] ) ? trim( stripslashes( $_POST['admin_email'] ) ) : ''; + + if ( ! is_null( $error ) ) { +?> +

    ERROR: %s' ), $error ); ?>

    + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    + +

    + +
    + +

    +
    + +

    +
    +

    +
    +

    +

    +
    +' . __( 'Already Installed' ) . '

    ' . __( 'You appear to have already installed WordPress. To reinstall please clear your old database tables first.' ) . '

    ' . __('Log In') . '

    ' ); +} + +$php_version = phpversion(); +$mysql_version = $wpdb->db_version(); +$php_compat = version_compare( $php_version, $required_php_version, '>=' ); +$mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' ); + +if ( !$mysql_compat && !$php_compat ) + $compat = sprintf( __( 'You cannot install because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.' ), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version ); +elseif ( !$php_compat ) + $compat = sprintf( __( 'You cannot install because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.' ), $wp_version, $required_php_version, $php_version ); +elseif ( !$mysql_compat ) + $compat = sprintf( __( 'You cannot install because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.' ), $wp_version, $required_mysql_version, $mysql_version ); + +if ( !$mysql_compat || !$php_compat ) { + display_header(); + die( '

    ' . __( 'Insufficient Requirements' ) . '

    ' . $compat . '

    ' ); +} + +if ( ! is_string( $wpdb->base_prefix ) || '' === $wpdb->base_prefix ) { + display_header(); + die( '

    ' . __( 'Configuration Error' ) . '

    ' . __( 'Your wp-config.php file has an empty database table prefix, which is not supported.' ) . '

    ' ); +} + +switch($step) { + case 0: // Step 1 + case 1: // Step 1, direct link. + display_header(); +?> +

    +

    ReadMe documentation at your leisure. Otherwise, just fill in the information below and you’ll be on your way to using the most extendable and powerful personal publishing platform in the world.' ), '../readme.html' ); ?>

    + +

    +

    + +error ) ) + wp_die( $wpdb->error->get_error_message() ); + + display_header(); + // Fill in the data we gathered + $weblog_title = isset( $_POST['weblog_title'] ) ? trim( stripslashes( $_POST['weblog_title'] ) ) : ''; + $user_name = isset($_POST['user_name']) ? trim( stripslashes( $_POST['user_name'] ) ) : 'admin'; + $admin_password = isset($_POST['admin_password']) ? $_POST['admin_password'] : ''; + $admin_password_check = isset($_POST['admin_password2']) ? $_POST['admin_password2'] : ''; + $admin_email = isset( $_POST['admin_email'] ) ?trim( stripslashes( $_POST['admin_email'] ) ) : ''; + $public = isset( $_POST['blog_public'] ) ? (int) $_POST['blog_public'] : 0; + // check e-mail address + $error = false; + if ( empty( $user_name ) ) { + // TODO: poka-yoke + display_setup_form( __('you must provide a valid username.') ); + $error = true; + } elseif ( $user_name != sanitize_user( $user_name, true ) ) { + display_setup_form( __('the username you provided has invalid characters.') ); + $error = true; + } elseif ( $admin_password != $admin_password_check ) { + // TODO: poka-yoke + display_setup_form( __( 'your passwords do not match. Please try again' ) ); + $error = true; + } else if ( empty( $admin_email ) ) { + // TODO: poka-yoke + display_setup_form( __( 'you must provide an e-mail address.' ) ); + $error = true; + } elseif ( ! is_email( $admin_email ) ) { + // TODO: poka-yoke + display_setup_form( __( 'that isn’t a valid e-mail address. E-mail addresses look like: username@example.com' ) ); + $error = true; + } + + if ( $error === false ) { + $wpdb->show_errors(); + $result = wp_install($weblog_title, $user_name, $admin_email, $public, '', $admin_password); + extract( $result, EXTR_SKIP ); +?> + +

    + +

    + + + + + + + + + + +
    '. esc_html($password) .'
    '; + echo "

    $password_message

    "; ?> +
    + +

    + + + + + + diff --git a/wp-admin/js/cat.dev.js b/wp-admin/js/cat.dev.js new file mode 100644 index 0000000..cbc2900 --- /dev/null +++ b/wp-admin/js/cat.dev.js @@ -0,0 +1,5 @@ +jQuery(document).ready( function($) { + var myConfirm = function() { return '' !== $('#newcat').val(); }; + $('#jaxcat').prepend('' + catL10n.how + ''); + $('#categorychecklist').wpList( { alt: '', response: 'cat-ajax-response', confirm: myConfirm } ); +} ); diff --git a/wp-admin/js/cat.js b/wp-admin/js/cat.js new file mode 100644 index 0000000..deee8c4 --- /dev/null +++ b/wp-admin/js/cat.js @@ -0,0 +1 @@ +jQuery(document).ready(function(b){var a=function(){return""!==b("#newcat").val()};b("#jaxcat").prepend(''+catL10n.how+'');b("#categorychecklist").wpList({alt:"",response:"cat-ajax-response",confirm:a})}); \ No newline at end of file diff --git a/wp-admin/js/categories.dev.js b/wp-admin/js/categories.dev.js new file mode 100644 index 0000000..cc58eb4 --- /dev/null +++ b/wp-admin/js/categories.dev.js @@ -0,0 +1,34 @@ +jQuery(document).ready(function($) { + var options = false, addAfter, delBefore, delAfter; + if ( document.forms['addcat'].category_parent ) + options = document.forms['addcat'].category_parent.options; + + addAfter = function( r, settings ) { + var name, id; + + name = $("" + $('name', r).text() + "").text(); + id = $('cat', r).attr('id'); + options[options.length] = new Option(name, id); + } + + delAfter = function( r, settings ) { + var id = $('cat', r).attr('id'), o; + for ( o = 0; o < options.length; o++ ) + if ( id == options[o].value ) + options[o] = null; + } + + delBefore = function(s) { + if ( 'undefined' != showNotice ) + return showNotice.warn() ? s : false; + + return s; + } + + if ( options ) + $('#the-list').wpList( { addAfter: addAfter, delBefore: delBefore, delAfter: delAfter } ); + else + $('#the-list').wpList({ delBefore: delBefore }); + + $('.delete a[class^="delete"]').live('click', function(){return false;}); +}); diff --git a/wp-admin/js/categories.js b/wp-admin/js/categories.js new file mode 100644 index 0000000..45c2358 --- /dev/null +++ b/wp-admin/js/categories.js @@ -0,0 +1 @@ +jQuery(document).ready(function(d){var b=false,e,c,a;if(document.forms.addcat.category_parent){b=document.forms.addcat.category_parent.options}e=function(h,g){var f,i;f=d(""+d("name",h).text()+"").text();i=d("cat",h).attr("id");b[b.length]=new Option(f,i)};a=function(g,f){var i=d("cat",g).attr("id"),h;for(h=0;h' + + $( '#mm option[value="' + mm + '"]' ).text() + ' ' + + jj + ', ' + + aa + ' @ ' + + hh + ':' + + mn + ' ' + ); + return false; + }); +}); diff --git a/wp-admin/js/comment.js b/wp-admin/js/comment.js new file mode 100644 index 0000000..5816ebb --- /dev/null +++ b/wp-admin/js/comment.js @@ -0,0 +1 @@ +jQuery(document).ready(function(b){var a=b("#timestamp").html();b(".edit-timestamp").click(function(){if(b("#timestampdiv").is(":hidden")){b("#timestampdiv").slideDown("normal");b(".edit-timestamp").hide()}return false});b(".cancel-timestamp").click(function(){b("#timestampdiv").slideUp("normal");b("#mm").val(b("#hidden_mm").val());b("#jj").val(b("#hidden_jj").val());b("#aa").val(b("#hidden_aa").val());b("#hh").val(b("#hidden_hh").val());b("#mn").val(b("#hidden_mn").val());b("#timestamp").html(a);b(".edit-timestamp").show();return false});b(".save-timestamp").click(function(){var g=b("#aa").val(),h=b("#mm").val(),d=b("#jj").val(),c=b("#hh").val(),f=b("#mn").val(),e=new Date(g,h-1,d,c,f);if(e.getFullYear()!=g||(1+e.getMonth())!=h||e.getDate()!=d||e.getMinutes()!=f){b(".timestamp-wrap","#timestampdiv").addClass("form-invalid");return false}else{b(".timestamp-wrap","#timestampdiv").removeClass("form-invalid")}b("#timestampdiv").slideUp("normal");b(".edit-timestamp").show();b("#timestamp").html(commentL10n.submittedOn+" "+b('#mm option[value="'+h+'"]').text()+" "+d+", "+g+" @ "+c+":"+f+" ");return false})}); \ No newline at end of file diff --git a/wp-admin/js/common.dev.js b/wp-admin/js/common.dev.js new file mode 100644 index 0000000..e839327 --- /dev/null +++ b/wp-admin/js/common.dev.js @@ -0,0 +1,370 @@ +var showNotice, adminMenu, columns, validateForm, screenMeta; +(function($){ +// Removed in 3.3. +// (perhaps) needed for back-compat +adminMenu = { + init : function() {}, + fold : function() {}, + restoreMenuState : function() {}, + toggle : function() {}, + favorites : function() {} +}; + +// show/hide/save table columns +columns = { + init : function() { + var that = this; + $('.hide-column-tog', '#adv-settings').click( function() { + var $t = $(this), column = $t.val(); + if ( $t.prop('checked') ) + that.checked(column); + else + that.unchecked(column); + + columns.saveManageColumnsState(); + }); + }, + + saveManageColumnsState : function() { + var hidden = this.hidden(); + $.post(ajaxurl, { + action: 'hidden-columns', + hidden: hidden, + screenoptionnonce: $('#screenoptionnonce').val(), + page: pagenow + }); + }, + + checked : function(column) { + $('.column-' + column).show(); + this.colSpanChange(+1); + }, + + unchecked : function(column) { + $('.column-' + column).hide(); + this.colSpanChange(-1); + }, + + hidden : function() { + return $('.manage-column').filter(':hidden').map(function() { return this.id; }).get().join(','); + }, + + useCheckboxesForHidden : function() { + this.hidden = function(){ + return $('.hide-column-tog').not(':checked').map(function() { + var id = this.id; + return id.substring( id, id.length - 5 ); + }).get().join(','); + }; + }, + + colSpanChange : function(diff) { + var $t = $('table').find('.colspanchange'), n; + if ( !$t.length ) + return; + n = parseInt( $t.attr('colspan'), 10 ) + diff; + $t.attr('colspan', n.toString()); + } +} + +$(document).ready(function(){columns.init();}); + +validateForm = function( form ) { + return !$( form ).find('.form-required').filter( function() { return $('input:visible', this).val() == ''; } ).addClass( 'form-invalid' ).find('input:visible').change( function() { $(this).closest('.form-invalid').removeClass( 'form-invalid' ); } ).size(); +} + +// stub for doing better warnings +showNotice = { + warn : function() { + var msg = commonL10n.warnDelete || ''; + if ( confirm(msg) ) { + return true; + } + + return false; + }, + + note : function(text) { + alert(text); + } +}; + +screenMeta = { + element: null, // #screen-meta + toggles: null, // .screen-meta-toggle + page: null, // #wpcontent + + init: function() { + this.element = $('#screen-meta'); + this.toggles = $('.screen-meta-toggle a'); + this.page = $('#wpcontent'); + + this.toggles.click( this.toggleEvent ); + }, + + toggleEvent: function( e ) { + var panel = $( this.href.replace(/.+#/, '#') ); + e.preventDefault(); + + if ( !panel.length ) + return; + + if ( panel.is(':visible') ) + screenMeta.close( panel, $(this) ); + else + screenMeta.open( panel, $(this) ); + }, + + open: function( panel, link ) { + + $('.screen-meta-toggle').not( link.parent() ).css('visibility', 'hidden'); + + panel.parent().show(); + panel.slideDown( 'fast', function() { + link.addClass('screen-meta-active'); + }); + }, + + close: function( panel, link ) { + panel.slideUp( 'fast', function() { + link.removeClass('screen-meta-active'); + $('.screen-meta-toggle').css('visibility', ''); + panel.parent().hide(); + }); + } +}; + +/** + * Help tabs. + */ +$('.contextual-help-tabs').delegate('a', 'click focus', function(e) { + var link = $(this), + panel; + + e.preventDefault(); + + // Don't do anything if the click is for the tab already showing. + if ( link.is('.active a') ) + return false; + + // Links + $('.contextual-help-tabs .active').removeClass('active'); + link.parent('li').addClass('active'); + + panel = $( link.attr('href') ); + + // Panels + $('.help-tab-content').not( panel ).removeClass('active').hide(); + panel.addClass('active').show(); +}); + +$(document).ready( function() { + var lastClicked = false, checks, first, last, checked, menu = $('#adminmenu'), + pageInput = $('input.current-page'), currentPage = pageInput.val(), refresh; + + // admin menu + refresh = function(i, el){ // force the browser to refresh the tabbing index + var node = $(el), tab = node.attr('tabindex'); + if ( tab ) + node.attr('tabindex', '0').attr('tabindex', tab); + }; + + $('#collapse-menu', menu).click(function(){ + var body = $(document.body); + + // reset any compensation for submenus near the bottom of the screen + $('#adminmenu div.wp-submenu').css('margin-top', ''); + + if ( body.hasClass('folded') ) { + body.removeClass('folded'); + setUserSetting('mfold', 'o'); + } else { + body.addClass('folded'); + setUserSetting('mfold', 'f'); + } + return false; + }); + + $('li.wp-has-submenu', menu).hoverIntent({ + over: function(e){ + var b, h, o, f, m = $(this).find('.wp-submenu'), menutop, wintop, maxtop; + + if ( m.is(':visible') ) + return; + + menutop = $(this).offset().top; + wintop = $(window).scrollTop(); + maxtop = menutop - wintop - 30; // max = make the top of the sub almost touch admin bar + + b = menutop + m.height() + 1; // Bottom offset of the menu + h = $('#wpwrap').height(); // Height of the entire page + o = 60 + b - h; + f = $(window).height() + wintop - 15; // The fold + + if ( f < (b - o) ) + o = b - f; + + if ( o > maxtop ) + o = maxtop; + + if ( o > 1 ) + m.css('margin-top', '-'+o+'px'); + else + m.css('margin-top', ''); + + menu.find('.wp-submenu').removeClass('sub-open'); + m.addClass('sub-open'); + }, + out: function(){ + $(this).find('.wp-submenu').removeClass('sub-open').css('margin-top', ''); + }, + timeout: 200, + sensitivity: 7, + interval: 90 + }); + + // Tab to select, Enter to open sub, Esc to close sub and focus the top menu + $('li.wp-has-submenu > a.wp-not-current-submenu', menu).bind('keydown.adminmenu', function(e){ + if ( e.which != 13 ) + return; + + var target = $(e.target); + + e.stopPropagation(); + e.preventDefault(); + + menu.find('.wp-submenu').removeClass('sub-open'); + target.siblings('.wp-submenu').toggleClass('sub-open').find('a[role="menuitem"]').each(refresh); + }).each(refresh); + + $('a[role="menuitem"]', menu).bind('keydown.adminmenu', function(e){ + if ( e.which != 27 ) + return; + + var target = $(e.target); + + e.stopPropagation(); + e.preventDefault(); + + target.add( target.siblings() ).closest('.sub-open').removeClass('sub-open').siblings('a.wp-not-current-submenu').focus(); + }); + + // Move .updated and .error alert boxes. Don't move boxes designed to be inline. + $('div.wrap h2:first').nextAll('div.updated, div.error').addClass('below-h2'); + $('div.updated, div.error').not('.below-h2, .inline').insertAfter( $('div.wrap h2:first') ); + + // Init screen meta + screenMeta.init(); + + // check all checkboxes + $('tbody').children().children('.check-column').find(':checkbox').click( function(e) { + if ( 'undefined' == e.shiftKey ) { return true; } + if ( e.shiftKey ) { + if ( !lastClicked ) { return true; } + checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' ); + first = checks.index( lastClicked ); + last = checks.index( this ); + checked = $(this).prop('checked'); + if ( 0 < first && 0 < last && first != last ) { + checks.slice( first, last ).prop( 'checked', function(){ + if ( $(this).closest('tr').is(':visible') ) + return checked; + + return false; + }); + } + } + lastClicked = this; + return true; + }); + + $('thead, tfoot').find('.check-column :checkbox').click( function(e) { + var c = $(this).prop('checked'), + kbtoggle = 'undefined' == typeof toggleWithKeyboard ? false : toggleWithKeyboard, + toggle = e.shiftKey || kbtoggle; + + $(this).closest( 'table' ).children( 'tbody' ).filter(':visible') + .children().children('.check-column').find(':checkbox') + .prop('checked', function() { + if ( $(this).closest('tr').is(':hidden') ) + return false; + if ( toggle ) + return $(this).prop( 'checked' ); + else if (c) + return true; + return false; + }); + + $(this).closest('table').children('thead, tfoot').filter(':visible') + .children().children('.check-column').find(':checkbox') + .prop('checked', function() { + if ( toggle ) + return false; + else if (c) + return true; + return false; + }); + }); + + $('#default-password-nag-no').click( function() { + setUserSetting('default_password_nag', 'hide'); + $('div.default-password-nag').hide(); + return false; + }); + + // tab in textareas + $('#newcontent').bind('keydown.wpevent_InsertTab', function(e) { + if ( e.keyCode != 9 ) + return true; + + var el = e.target, selStart = el.selectionStart, selEnd = el.selectionEnd, val = el.value, scroll, sel; + + try { + this.lastKey = 9; // not a standard DOM property, lastKey is to help stop Opera tab event. See blur handler below. + } catch(err) {} + + if ( document.selection ) { + el.focus(); + sel = document.selection.createRange(); + sel.text = '\t'; + } else if ( selStart >= 0 ) { + scroll = this.scrollTop; + el.value = val.substring(0, selStart).concat('\t', val.substring(selEnd) ); + el.selectionStart = el.selectionEnd = selStart + 1; + this.scrollTop = scroll; + } + + if ( e.stopPropagation ) + e.stopPropagation(); + if ( e.preventDefault ) + e.preventDefault(); + }); + + $('#newcontent').bind('blur.wpevent_InsertTab', function(e) { + if ( this.lastKey && 9 == this.lastKey ) + this.focus(); + }); + + if ( pageInput.length ) { + pageInput.closest('form').submit( function(e){ + + // Reset paging var for new filters/searches but not for bulk actions. See #17685. + if ( $('select[name="action"]').val() == -1 && $('select[name="action2"]').val() == -1 && pageInput.val() == currentPage ) + pageInput.val('1'); + }); + } + +}); + +// internal use +$(document).bind( 'wp_CloseOnEscape', function( e, data ) { + if ( typeof(data.cb) != 'function' ) + return; + + if ( typeof(data.condition) != 'function' || data.condition() ) + data.cb(); + + return true; +}); + +})(jQuery); diff --git a/wp-admin/js/common.js b/wp-admin/js/common.js new file mode 100644 index 0000000..dbbcb1d --- /dev/null +++ b/wp-admin/js/common.js @@ -0,0 +1 @@ +var showNotice,adminMenu,columns,validateForm,screenMeta;(function(a){adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}};columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var d=a(this),c=d.val();if(d.prop("checked")){b.checked(c)}else{b.unchecked(c)}columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).show();this.colSpanChange(+1)},unchecked:function(b){a(".column-"+b).hide();this.colSpanChange(-1)},hidden:function(){return a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var b=this.id;return b.substring(b,b.length-5)}).get().join(",")}},colSpanChange:function(b){var d=a("table").find(".colspanchange"),c;if(!d.length){return}c=parseInt(d.attr("colspan"),10)+b;d.attr("colspan",c.toString())}};a(document).ready(function(){columns.init()});validateForm=function(b){return !a(b).find(".form-required").filter(function(){return a("input:visible",this).val()==""}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()};showNotice={warn:function(){var b=commonL10n.warnDelete||"";if(confirm(b)){return true}return false},note:function(b){alert(b)}};screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta");this.toggles=a(".screen-meta-toggle a");this.page=a("#wpcontent");this.toggles.click(this.toggleEvent)},toggleEvent:function(c){var b=a(this.href.replace(/.+#/,"#"));c.preventDefault();if(!b.length){return}if(b.is(":visible")){screenMeta.close(b,a(this))}else{screenMeta.open(b,a(this))}},open:function(b,c){a(".screen-meta-toggle").not(c.parent()).css("visibility","hidden");b.parent().show();b.slideDown("fast",function(){c.addClass("screen-meta-active")})},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active");a(".screen-meta-toggle").css("visibility","");b.parent().hide()})}};a(".contextual-help-tabs").delegate("a","click focus",function(d){var c=a(this),b;d.preventDefault();if(c.is(".active a")){return false}a(".contextual-help-tabs .active").removeClass("active");c.parent("li").addClass("active");b=a(c.attr("href"));a(".help-tab-content").not(b).removeClass("active").hide();b.addClass("active").show()});a(document).ready(function(){var i=false,c,e,j,h,b=a("#adminmenu"),d=a("input.current-page"),f=d.val(),g;g=function(k,m){var n=a(m),l=n.attr("tabindex");if(l){n.attr("tabindex","0").attr("tabindex",l)}};a("#collapse-menu",b).click(function(){var k=a(document.body);a("#adminmenu div.wp-submenu").css("margin-top","");if(k.hasClass("folded")){k.removeClass("folded");setUserSetting("mfold","o")}else{k.addClass("folded");setUserSetting("mfold","f")}return false});a("li.wp-has-submenu",b).hoverIntent({over:function(s){var t,q,k,r,l=a(this).find(".wp-submenu"),u,n,p;if(l.is(":visible")){return}u=a(this).offset().top;n=a(window).scrollTop();p=u-n-30;t=u+l.height()+1;q=a("#wpwrap").height();k=60+t-q;r=a(window).height()+n-15;if(r<(t-k)){k=t-r}if(k>p){k=p}if(k>1){l.css("margin-top","-"+k+"px")}else{l.css("margin-top","")}b.find(".wp-submenu").removeClass("sub-open");l.addClass("sub-open")},out:function(){a(this).find(".wp-submenu").removeClass("sub-open").css("margin-top","")},timeout:200,sensitivity:7,interval:90});a("li.wp-has-submenu > a.wp-not-current-submenu",b).bind("keydown.adminmenu",function(l){if(l.which!=13){return}var k=a(l.target);l.stopPropagation();l.preventDefault();b.find(".wp-submenu").removeClass("sub-open");k.siblings(".wp-submenu").toggleClass("sub-open").find('a[role="menuitem"]').each(g)}).each(g);a('a[role="menuitem"]',b).bind("keydown.adminmenu",function(l){if(l.which!=27){return}var k=a(l.target);l.stopPropagation();l.preventDefault();k.add(k.siblings()).closest(".sub-open").removeClass("sub-open").siblings("a.wp-not-current-submenu").focus()});a("div.wrap h2:first").nextAll("div.updated, div.error").addClass("below-h2");a("div.updated, div.error").not(".below-h2, .inline").insertAfter(a("div.wrap h2:first"));screenMeta.init();a("tbody").children().children(".check-column").find(":checkbox").click(function(k){if("undefined"==k.shiftKey){return true}if(k.shiftKey){if(!i){return true}c=a(i).closest("form").find(":checkbox");e=c.index(i);j=c.index(this);h=a(this).prop("checked");if(0=0){k=this.scrollTop;m.value=q.substring(0,r).concat("\t",q.substring(l));m.selectionStart=m.selectionEnd=r+1;this.scrollTop=k}}if(p.stopPropagation){p.stopPropagation()}if(p.preventDefault){p.preventDefault()}});a("#newcontent").bind("blur.wpevent_InsertTab",function(k){if(this.lastKey&&9==this.lastKey){this.focus()}});if(d.length){d.closest("form").submit(function(k){if(a('select[name="action"]').val()==-1&&a('select[name="action2"]').val()==-1&&d.val()==f){d.val("1")}})}});a(document).bind("wp_CloseOnEscape",function(c,b){if(typeof(b.cb)!="function"){return}if(typeof(b.condition)!="function"||b.condition()){b.cb()}return true})})(jQuery); \ No newline at end of file diff --git a/wp-admin/js/custom-background.dev.js b/wp-admin/js/custom-background.dev.js new file mode 100644 index 0000000..5bf085d --- /dev/null +++ b/wp-admin/js/custom-background.dev.js @@ -0,0 +1,66 @@ +var farbtastic, pickColor; + +(function($) { + + var defaultColor = ''; + + pickColor = function(color) { + farbtastic.setColor(color); + $('#background-color').val(color); + $('#custom-background-image').css('background-color', color); + // If we have a default color, and they match, then we need to hide the 'Default' link. + // Otherwise, we hide the 'Clear' link when it is empty. + if ( ( defaultColor && color === defaultColor ) || ( ! defaultColor && ( '' === color || '#' === color ) ) ) + $('#clearcolor').hide(); + else + $('#clearcolor').show(); + } + + $(document).ready(function() { + + defaultColor = $('#defaultcolor').val(); + + $('#pickcolor').click(function() { + $('#colorPickerDiv').show(); + return false; + }); + + $('#clearcolor a').click( function(e) { + pickColor( defaultColor ); + e.preventDefault(); + }); + + $('#background-color').keyup(function() { + var _hex = $('#background-color').val(), hex = _hex; + if ( hex.charAt(0) != '#' ) + hex = '#' + hex; + hex = hex.replace(/[^#a-fA-F0-9]+/, ''); + if ( hex != _hex ) + $('#background-color').val(hex); + if ( hex.length == 4 || hex.length == 7 ) + pickColor( hex ); + }); + + $('input[name="background-position-x"]').change(function() { + $('#custom-background-image').css('background-position', $(this).val() + ' top'); + }); + + $('input[name="background-repeat"]').change(function() { + $('#custom-background-image').css('background-repeat', $(this).val()); + }); + + farbtastic = $.farbtastic('#colorPickerDiv', function(color) { + pickColor(color); + }); + pickColor($('#background-color').val()); + + $(document).mousedown(function(){ + $('#colorPickerDiv').each(function(){ + var display = $(this).css('display'); + if ( display == 'block' ) + $(this).fadeOut(2); + }); + }); + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-admin/js/custom-background.js b/wp-admin/js/custom-background.js new file mode 100644 index 0000000..66b8bbf --- /dev/null +++ b/wp-admin/js/custom-background.js @@ -0,0 +1 @@ +var farbtastic,pickColor;(function(b){var a="";pickColor=function(c){farbtastic.setColor(c);b("#background-color").val(c);b("#custom-background-image").css("background-color",c);if((a&&c===a)||(!a&&(""===c||"#"===c))){b("#clearcolor").hide()}else{b("#clearcolor").show()}};b(document).ready(function(){a=b("#defaultcolor").val();b("#pickcolor").click(function(){b("#colorPickerDiv").show();return false});b("#clearcolor a").click(function(c){pickColor(a);c.preventDefault()});b("#background-color").keyup(function(){var d=b("#background-color").val(),c=d;if(c.charAt(0)!="#"){c="#"+c}c=c.replace(/[^#a-fA-F0-9]+/,"");if(c!=d){b("#background-color").val(c)}if(c.length==4||c.length==7){pickColor(c)}});b('input[name="background-position-x"]').change(function(){b("#custom-background-image").css("background-position",b(this).val()+" top")});b('input[name="background-repeat"]').change(function(){b("#custom-background-image").css("background-repeat",b(this).val())});farbtastic=b.farbtastic("#colorPickerDiv",function(c){pickColor(c)});pickColor(b("#background-color").val());b(document).mousedown(function(){b("#colorPickerDiv").each(function(){var c=b(this).css("display");if(c=="block"){b(this).fadeOut(2)}})})})})(jQuery); \ No newline at end of file diff --git a/wp-admin/js/custom-fields.dev.js b/wp-admin/js/custom-fields.dev.js new file mode 100644 index 0000000..9eab214 --- /dev/null +++ b/wp-admin/js/custom-fields.dev.js @@ -0,0 +1,34 @@ +jQuery(document).ready( function($) { + var before, addBefore, addAfter, delBefore; + + before = function() { + var nonce = $('#newmeta [name="_ajax_nonce"]').val(), postId = $('#post_ID').val(); + if ( !nonce || !postId ) { return false; } + return [nonce,postId]; + } + + addBefore = function( s ) { + var b = before(); + if ( !b ) { return false; } + s.data = s.data.replace(/_ajax_nonce=[a-f0-9]+/, '_ajax_nonce=' + b[0]) + '&post_id=' + b[1]; + return s; + }; + + addAfter = function( r, s ) { + var postId = $('postid', r).text(), h; + if ( !postId ) { return; } + $('#post_ID').attr( 'name', 'post_ID' ).val( postId ); + h = $('#hiddenaction'); + if ( 'post' == h.val() ) { h.val( 'postajaxpost' ); } + }; + + delBefore = function( s ) { + var b = before(); if ( !b ) return false; + s.data._ajax_nonce = b[0]; s.data.post_id = b[1]; + return s; + } + + $('#the-list') + .wpList( { addBefore: addBefore, addAfter: addAfter, delBefore: delBefore } ) + .find('.updatemeta, .deletemeta').attr( 'type', 'button' ); +} ); diff --git a/wp-admin/js/custom-fields.js b/wp-admin/js/custom-fields.js new file mode 100644 index 0000000..dbe2f48 --- /dev/null +++ b/wp-admin/js/custom-fields.js @@ -0,0 +1 @@ +jQuery(document).ready(function(d){var c,b,e,a;c=function(){var g=d('#newmeta [name="_ajax_nonce"]').val(),f=d("#post_ID").val();if(!g||!f){return false}return[g,f]};b=function(g){var f=c();if(!f){return false}g.data=g.data.replace(/_ajax_nonce=[a-f0-9]+/,"_ajax_nonce="+f[0])+"&post_id="+f[1];return g};e=function(j,i){var f=d("postid",j).text(),g;if(!f){return}d("#post_ID").attr("name","post_ID").val(f);g=d("#hiddenaction");if("post"==g.val()){g.val("postajaxpost")}};a=function(g){var f=c();if(!f){return false}g.data._ajax_nonce=f[0];g.data.post_id=f[1];return g};d("#the-list").wpList({addBefore:b,addAfter:e,delBefore:a}).find(".updatemeta, .deletemeta").attr("type","button")}); \ No newline at end of file diff --git a/wp-admin/js/customize-controls.dev.js b/wp-admin/js/customize-controls.dev.js new file mode 100644 index 0000000..c37e43b --- /dev/null +++ b/wp-admin/js/customize-controls.dev.js @@ -0,0 +1,955 @@ +(function( exports, $ ){ + var api = wp.customize; + + /* + * @param options + * - previewer - The Previewer instance to sync with. + * - transport - The transport to use for previewing. Supports 'refresh' and 'postMessage'. + */ + api.Setting = api.Value.extend({ + initialize: function( id, value, options ) { + var element; + + api.Value.prototype.initialize.call( this, value, options ); + + this.id = id; + this.transport = this.transport || 'refresh'; + + this.bind( this.preview ); + }, + preview: function() { + switch ( this.transport ) { + case 'refresh': + return this.previewer.refresh(); + case 'postMessage': + return this.previewer.send( 'setting', [ this.id, this() ] ); + } + } + }); + + api.Control = api.Class.extend({ + initialize: function( id, options ) { + var control = this, + nodes, radios, settings; + + this.params = {}; + $.extend( this, options || {} ); + + this.id = id; + this.selector = '#customize-control-' + id.replace( ']', '' ).replace( '[', '-' ); + this.container = $( this.selector ); + + settings = $.map( this.params.settings, function( value ) { + return value; + }); + + api.apply( api, settings.concat( function() { + var key; + + control.settings = {}; + for ( key in control.params.settings ) { + control.settings[ key ] = api( control.params.settings[ key ] ); + } + + control.setting = control.settings['default'] || null; + control.ready(); + }) ); + + control.elements = []; + + nodes = this.container.find('[data-customize-setting-link]'); + radios = {}; + + nodes.each( function() { + var node = $(this), + name; + + if ( node.is(':radio') ) { + name = node.prop('name'); + if ( radios[ name ] ) + return; + + radios[ name ] = true; + node = nodes.filter( '[name="' + name + '"]' ); + } + + api( node.data('customizeSettingLink'), function( setting ) { + var element = new api.Element( node ); + control.elements.push( element ); + element.sync( setting ); + element.set( setting() ); + }); + }); + }, + + ready: function() {}, + + dropdownInit: function() { + var control = this, + statuses = this.container.find('.dropdown-status'), + params = this.params, + update = function( to ) { + if ( typeof to === 'string' && params.statuses && params.statuses[ to ] ) + statuses.html( params.statuses[ to ] ).show(); + else + statuses.hide(); + }; + + // Support the .dropdown class to open/close complex elements + this.container.on( 'click', '.dropdown', function( event ) { + event.preventDefault(); + control.container.toggleClass('open'); + }); + + this.setting.bind( update ); + update( this.setting() ); + } + }); + + api.ColorControl = api.Control.extend({ + ready: function() { + var control = this, + rhex, spot, input, text, update; + + rhex = /^#([A-Fa-f0-9]{3}){0,2}$/; + spot = this.container.find('.dropdown-content'); + input = new api.Element( this.container.find('.color-picker-hex') ); + update = function( color ) { + spot.css( 'background', color ); + control.farbtastic.setColor( color ); + }; + + this.farbtastic = $.farbtastic( this.container.find('.farbtastic-placeholder'), control.setting.set ); + + // Only pass through values that are valid hexes/empty. + input.sync( this.setting ).validate = function( to ) { + return rhex.test( to ) ? to : null; + }; + + this.setting.bind( update ); + update( this.setting() ); + + this.dropdownInit(); + } + }); + + api.UploadControl = api.Control.extend({ + ready: function() { + var control = this; + + this.params.removed = this.params.removed || ''; + + this.success = $.proxy( this.success, this ); + + this.uploader = $.extend({ + container: this.container, + browser: this.container.find('.upload'), + dropzone: this.container.find('.upload-dropzone'), + success: this.success + }, this.uploader || {} ); + + if ( this.uploader.supported ) { + if ( control.params.context ) + control.uploader.param( 'post_data[context]', this.params.context ); + + control.uploader.param( 'post_data[theme]', api.settings.theme.stylesheet ); + } + + this.uploader = new wp.Uploader( this.uploader ); + + this.remover = this.container.find('.remove'); + this.remover.click( function( event ) { + control.setting.set( control.params.removed ); + event.preventDefault(); + }); + + this.removerVisibility = $.proxy( this.removerVisibility, this ); + this.setting.bind( this.removerVisibility ); + this.removerVisibility( this.setting.get() ); + }, + success: function( attachment ) { + this.setting.set( attachment.url ); + }, + removerVisibility: function( to ) { + this.remover.toggle( to != this.params.removed ); + } + }); + + api.ImageControl = api.UploadControl.extend({ + ready: function() { + var control = this, + panels; + + this.uploader = { + init: function( up ) { + var fallback, button; + + if ( this.supports.dragdrop ) + return; + + // Maintain references while wrapping the fallback button. + fallback = control.container.find( '.upload-fallback' ); + button = fallback.children().detach(); + + this.browser.detach().empty().append( button ); + fallback.append( this.browser ).show(); + } + }; + + api.UploadControl.prototype.ready.call( this ); + + this.thumbnail = this.container.find('.preview-thumbnail img'); + this.thumbnailSrc = $.proxy( this.thumbnailSrc, this ); + this.setting.bind( this.thumbnailSrc ); + + this.library = this.container.find('.library'); + + // Generate tab objects + this.tabs = {}; + panels = this.library.find('.library-content'); + + this.library.children('ul').children('li').each( function() { + var link = $(this), + id = link.data('customizeTab'), + panel = panels.filter('[data-customize-tab="' + id + '"]'); + + control.tabs[ id ] = { + both: link.add( panel ), + link: link, + panel: panel + }; + }); + + // Select a tab + this.selected = this.tabs[ panels.first().data('customizeTab') ]; + this.selected.both.addClass('library-selected'); + + // Bind tab switch events + this.library.children('ul').on( 'click', 'li', function( event ) { + var id = $(this).data('customizeTab'), + tab = control.tabs[ id ]; + + event.preventDefault(); + + if ( tab.link.hasClass('library-selected') ) + return; + + control.selected.both.removeClass('library-selected'); + control.selected = tab; + control.selected.both.addClass('library-selected'); + }); + + // Bind events to switch image urls. + this.library.on( 'click', 'a', function( event ) { + var value = $(this).data('customizeImageValue'); + + if ( value ) { + control.setting.set( value ); + event.preventDefault(); + } + }); + + if ( this.tabs.uploaded ) { + this.tabs.uploaded.target = this.library.find('.uploaded-target'); + if ( ! this.tabs.uploaded.panel.find('.thumbnail').length ) + this.tabs.uploaded.both.addClass('hidden'); + } + + this.dropdownInit(); + }, + success: function( attachment ) { + api.UploadControl.prototype.success.call( this, attachment ); + + // Add the uploaded image to the uploaded tab. + if ( this.tabs.uploaded && this.tabs.uploaded.target.length ) { + this.tabs.uploaded.both.removeClass('hidden'); + + attachment.element = $( '' ) + .data( 'customizeImageValue', attachment.url ) + .append( '' ) + .appendTo( this.tabs.uploaded.target ); + } + }, + thumbnailSrc: function( to ) { + if ( /^(https?:)?\/\//.test( to ) ) + this.thumbnail.prop( 'src', to ).show(); + else + this.thumbnail.hide(); + } + }); + + // Change objects contained within the main customize object to Settings. + api.defaultConstructor = api.Setting; + + // Create the collection of Control objects. + api.control = new api.Values({ defaultConstructor: api.Control }); + + api.PreviewFrame = api.Messenger.extend({ + sensitivity: 2000, + + initialize: function( params, options ) { + var deferred = $.Deferred(), + self = this; + + // This is the promise object. + deferred.promise( this ); + + this.container = params.container; + this.signature = params.signature; + + $.extend( params, { channel: api.PreviewFrame.uuid() }); + + api.Messenger.prototype.initialize.call( this, params, options ); + + this.add( 'previewUrl', params.previewUrl ); + + this.query = $.extend( params.query || {}, { customize_messenger_channel: this.channel() }); + + this.run( deferred ); + }, + + run: function( deferred ) { + var self = this, + loaded = false, + ready = false; + + if ( this._ready ) + this.unbind( 'ready', this._ready ); + + this._ready = function() { + ready = true; + + if ( loaded ) + deferred.resolveWith( self ); + }; + + this.bind( 'ready', this._ready ); + + this.request = $.ajax( this.previewUrl(), { + type: 'POST', + data: this.query, + xhrFields: { + withCredentials: true + } + } ); + + this.request.fail( function() { + deferred.rejectWith( self, [ 'request failure' ] ); + }); + + this.request.done( function( response ) { + var location = self.request.getResponseHeader('Location'), + signature = self.signature, + index; + + // Check if the location response header differs from the current URL. + // If so, the request was redirected; try loading the requested page. + if ( location && location != self.previewUrl() ) { + deferred.rejectWith( self, [ 'redirect', location ] ); + return; + } + + // Check if the user is not logged in. + if ( '0' === response ) { + self.login( deferred ); + return; + } + + // Check for cheaters. + if ( '-1' === response ) { + deferred.rejectWith( self, [ 'cheatin' ] ); + return; + } + + // Check for a signature in the request. + index = response.lastIndexOf( signature ); + if ( -1 === index || index < response.lastIndexOf('') ) { + deferred.rejectWith( self, [ 'unsigned' ] ); + return; + } + + // Strip the signature from the request. + response = response.slice( 0, index ) + response.slice( index + signature.length ); + + // Create the iframe and inject the html content. + self.iframe = $('"; + echo ''; + require_once(ABSPATH . 'wp-admin/admin-footer.php'); + exit; + break; + case 'delete-selected': + if ( ! current_user_can( 'delete_themes' ) ) + wp_die( __('You do not have sufficient permissions to delete themes for this site.') ); + check_admin_referer( 'bulk-themes' ); + + $themes = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array(); + + unset( $themes[ get_option( 'stylesheet' ) ], $themes[ get_option( 'template' ) ] ); + + if ( empty( $themes ) ) { + wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) ); + exit; + } + + $files_to_delete = $theme_info = array(); + foreach ( $themes as $key => $theme ) { + $theme_info[ $theme ] = wp_get_theme( $theme ); + $files_to_delete = array_merge( $files_to_delete, list_files( $theme_info[ $theme ]->get_stylesheet_directory() ) ); + } + + if ( empty( $themes ) ) { + wp_safe_redirect( add_query_arg( 'error', 'main', $referer ) ); + exit; + } + + include(ABSPATH . 'wp-admin/update.php'); + + $parent_file = 'themes.php'; + + if ( ! isset( $_REQUEST['verify-delete'] ) ) { + wp_enqueue_script( 'jquery' ); + require_once( ABSPATH . 'wp-admin/admin-header.php' ); + ?> +
    + ' . _n( 'Delete Theme', 'Delete Themes', $themes_to_delete ) . ''; + ?> +

    +

    +
      + ', sprintf( __('%1$s by %2$s' ), $theme->display('Name'), $theme->display('Author') ), ''; /* translators: 1: theme name, 2: theme author */ ?> +
    +

    +
    + + + '; + ?> + + +
    +
    + +
    + +

    + +
    + 1), $_SERVER['REQUEST_URI'] ) ) ); + $paged = ( $_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1; + wp_redirect( network_admin_url( "themes.php?deleted=".count( $themes )."&paged=$paged&s=$s" ) ); + exit; + break; + } +} + +$wp_list_table->prepare_items(); + +add_thickbox(); + +add_screen_option( 'per_page', array('label' => _x( 'Themes', 'themes per page (screen options)' )) ); + +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

    ' . __('This screen enables and disables the inclusion of themes available to choose in the Appearance menu for each site. It does not activate or deactivate which theme a site is currently using.') . '

    ' . + '

    ' . __('If the network admin disables a theme that is in use, it can still remain selected on that site. If another theme is chosen, the disabled theme will not appear in the site’s Appearance > Themes screen.') . '

    ' . + '

    ' . __('Themes can be enabled on a site by site basis by the network admin on the Edit Site screen (which has a Themes tab); get there via the Edit action link on the All Sites screen. Only network admins are able to install or edit themes.') . '

    ' +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Network Themes') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +$title = __('Themes'); +$parent_file = 'themes.php'; + +require_once(ABSPATH . 'wp-admin/admin-header.php'); + +?> + +
    + +

    ' . __('Search results for “%s”') . '', esc_html( $s ) ); ?> +

    + +

    ' . sprintf( _n( 'Theme enabled.', '%s themes enabled.', $_GET['enabled'] ), number_format_i18n( $_GET['enabled'] ) ) . '

    '; +} elseif ( isset( $_GET['disabled'] ) ) { + $_GET['disabled'] = absint( $_GET['disabled'] ); + echo '

    ' . sprintf( _n( 'Theme disabled.', '%s themes disabled.', $_GET['disabled'] ), number_format_i18n( $_GET['disabled'] ) ) . '

    '; +} elseif ( isset( $_GET['deleted'] ) ) { + $_GET['deleted'] = absint( $_GET['deleted'] ); + echo '

    ' . sprintf( _nx( 'Theme deleted.', '%s themes deleted.', $_GET['deleted'], 'network' ), number_format_i18n( $_GET['deleted'] ) ) . '

    '; +} elseif ( isset( $_GET['error'] ) && 'none' == $_GET['error'] ) { + echo '

    ' . __( 'No theme selected.' ) . '

    '; +} elseif ( isset( $_GET['error'] ) && 'main' == $_GET['error'] ) { + echo '

    ' . __( 'You cannot delete a theme while it is active on the main site.' ) . '

    '; +} + +?> + +
    +search_box( __( 'Search Installed Themes' ), 'theme' ); ?> +
    + +views(); + +if ( 'broken' == $status ) + echo '

    ' . __('The following themes are installed but incomplete. Themes must have a stylesheet and a template.') . '

    '; +?> + +
    + + + +display(); ?> +
    + + + +add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

    ' . __('Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Toolbar). Clicking the Update Network button will step through each site in the network, five at a time, and make sure any database updates are applied.') . '

    ' . + '

    ' . __('If a version update to core has not happened, clicking this button won’t affect anything.') . '

    ' . + '

    ' . __('If this process fails for any reason, users logging in to their sites will force the same update.') . '

    ' +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Update Network') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +require_once('../admin-header.php'); + +if ( ! current_user_can( 'manage_network' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + +echo '
    '; +screen_icon('tools'); +echo '

    ' . __( 'Update Network' ) . '

    '; + +$action = isset($_GET['action']) ? $_GET['action'] : 'show'; + +switch ( $action ) { + case "upgrade": + $n = ( isset($_GET['n']) ) ? intval($_GET['n']) : 0; + + if ( $n < 5 ) { + global $wp_db_version; + update_site_option( 'wpmu_upgrade_site', $wp_db_version ); + } + + $blogs = $wpdb->get_results( "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND spam = '0' AND deleted = '0' AND archived = '0' ORDER BY registered DESC LIMIT {$n}, 5", ARRAY_A ); + if ( empty( $blogs ) ) { + echo '

    ' . __( 'All done!' ) . '

    '; + break; + } + echo "
      "; + foreach ( (array) $blogs as $details ) { + $siteurl = get_blog_option( $details['blog_id'], 'siteurl' ); + echo "
    • $siteurl
    • "; + $response = wp_remote_get( trailingslashit( $siteurl ) . "wp-admin/upgrade.php?step=upgrade_db", array( 'timeout' => 120, 'httpversion' => '1.1' ) ); + if ( is_wp_error( $response ) ) + wp_die( sprintf( __( 'Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: %2$s' ), $siteurl, $response->get_error_message() ) ); + do_action( 'after_mu_upgrade', $response ); + do_action( 'wpmu_upgrade_site', $details[ 'blog_id' ] ); + } + echo "
    "; + ?>

    +

    +

    +
    + + diff --git a/wp-admin/network/user-edit.php b/wp-admin/network/user-edit.php new file mode 100644 index 0000000..0b2cfd2 --- /dev/null +++ b/wp-admin/network/user-edit.php @@ -0,0 +1,16 @@ +add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

    ' . __('Add User will set up a new user account on the network and send that person an email with username and password.') . '

    ' . + '

    ' . __('Users who are signed up to the network without a site are added as subscribers to the main or primary dashboard site, giving them profile pages to manage their accounts. These users will only see Dashboard and My Sites in the main navigation until a site is created for them.') . '

    ' +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Network Users') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +if ( isset($_REQUEST['action']) && 'add-user' == $_REQUEST['action'] ) { + check_admin_referer( 'add-user', '_wpnonce_add-user' ); + if ( ! current_user_can( 'manage_network_users' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + if ( ! is_array( $_POST['user'] ) ) + wp_die( __( 'Cannot create an empty user.' ) ); + + $user = $_POST['user']; + + $user_details = wpmu_validate_user_signup( $user['username'], $user['email'] ); + if ( is_wp_error( $user_details[ 'errors' ] ) && ! empty( $user_details[ 'errors' ]->errors ) ) { + $add_user_errors = $user_details[ 'errors' ]; + } else { + $password = wp_generate_password( 12, false); + $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) ); + + if ( ! $user_id ) { + $add_user_errors = new WP_Error( 'add_user_fail', __( 'Cannot add user.' ) ); + } else { + wp_new_user_notification( $user_id, $password ); + wp_redirect( add_query_arg( array('update' => 'added'), 'user-new.php' ) ); + exit; + } + } +} + +if ( isset($_GET['update']) ) { + $messages = array(); + if ( 'added' == $_GET['update'] ) + $messages[] = __('User added.'); +} + +$title = __('Add New User'); +$parent_file = 'users.php'; + +require('../admin-header.php'); ?> + +
    + +

    +

    ' . $msg . '

    '; +} + +if ( isset( $add_user_errors ) && is_wp_error( $add_user_errors ) ) { ?> +
    + get_error_messages() as $message ) + echo "

    $message

    "; + ?> +
    + +
    + + + + + + + + + + + + +
    + + +
    + + +

    +

    +
    + + ID'>$current_user->user_login"; + + foreach ( ( $allusers = (array) $_POST['allusers'] ) as $key => $val ) { + if ( $val != '' && $val != '0' ) { + $delete_user = new WP_User( $val ); + + if ( ! current_user_can( 'delete_user', $delete_user->ID ) ) + wp_die( sprintf( __( 'Warning! User %s cannot be deleted.' ), $delete_user->user_login ) ); + + if ( in_array( $delete_user->user_login, $site_admins ) ) + wp_die( sprintf( __( 'Warning! User cannot be deleted. The user %s is a network administrator.' ), $delete_user->user_login ) ); + + echo "\n"; + $blogs = get_blogs_of_user( $val, true ); + + if ( !empty( $blogs ) ) { + ?> +

    %s?" ), $delete_user->user_login ); ?>

    + $details ) { + $blog_users = get_users( array( 'blog_id' => $details->userblog_id ) ); + if ( is_array( $blog_users ) && !empty( $blog_users ) ) { + $user_site = "{$details->blogname}"; + $user_dropdown = "\n"; + ?> +
      +
    • +
    • +
    • +
    + "; + } + } + } + + submit_button( __('Confirm Deletion'), 'delete' ); + ?> + + '; + confirm_delete_users( $_POST['allusers'] ); + echo ''; + require_once( '../admin-footer.php' ); + } else { + wp_redirect( network_admin_url( 'users.php' ) ); + } + exit(); + break; + + case 'allusers': + if ( !current_user_can( 'manage_network_users' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + if ( ( isset( $_POST['action']) || isset($_POST['action2'] ) ) && isset( $_POST['allusers'] ) ) { + check_admin_referer( 'bulk-users-network' ); + + $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2']; + $userfunction = ''; + + foreach ( (array) $_POST['allusers'] as $key => $val ) { + if ( !empty( $val ) ) { + switch ( $doaction ) { + case 'delete': + if ( ! current_user_can( 'delete_users' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + $title = __( 'Users' ); + $parent_file = 'users.php'; + require_once( '../admin-header.php' ); + echo '
    '; + confirm_delete_users( $_POST['allusers'] ); + echo '
    '; + require_once( '../admin-footer.php' ); + exit(); + break; + + case 'spam': + $user = new WP_User( $val ); + if ( in_array( $user->user_login, get_super_admins() ) ) + wp_die( sprintf( __( 'Warning! User cannot be modified. The user %s is a network administrator.' ), esc_html( $user->user_login ) ) ); + + $userfunction = 'all_spam'; + $blogs = get_blogs_of_user( $val, true ); + foreach ( (array) $blogs as $key => $details ) { + if ( $details->userblog_id != $current_site->blog_id ) // main blog not a spam ! + update_blog_status( $details->userblog_id, 'spam', '1' ); + } + update_user_status( $val, 'spam', '1' ); + break; + + case 'notspam': + $userfunction = 'all_notspam'; + $blogs = get_blogs_of_user( $val, true ); + foreach ( (array) $blogs as $key => $details ) + update_blog_status( $details->userblog_id, 'spam', '0' ); + + update_user_status( $val, 'spam', '0' ); + break; + } + } + } + + wp_safe_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $userfunction ), wp_get_referer() ) ); + } else { + $location = network_admin_url( 'users.php' ); + + if ( ! empty( $_REQUEST['paged'] ) ) + $location = add_query_arg( 'paged', (int) $_REQUEST['paged'], $location ); + wp_redirect( $location ); + } + exit(); + break; + + case 'dodelete': + check_admin_referer( 'ms-users-delete' ); + if ( ! ( current_user_can( 'manage_network_users' ) && current_user_can( 'delete_users' ) ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + if ( ! empty( $_POST['blog'] ) && is_array( $_POST['blog'] ) ) { + foreach ( $_POST['blog'] as $id => $users ) { + foreach ( $users as $blogid => $user_id ) { + if ( ! current_user_can( 'delete_user', $id ) ) + continue; + + if ( ! empty( $_POST['delete'] ) && 'reassign' == $_POST['delete'][$blogid][$id] ) + remove_user_from_blog( $id, $blogid, $user_id ); + else + remove_user_from_blog( $id, $blogid ); + } + } + } + $i = 0; + if ( is_array( $_POST['user'] ) && ! empty( $_POST['user'] ) ) + foreach( $_POST['user'] as $id ) { + if ( ! current_user_can( 'delete_user', $id ) ) + continue; + wpmu_delete_user( $id ); + $i++; + } + + if ( $i == 1 ) + $deletefunction = 'delete'; + else + $deletefunction = 'all_delete'; + + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $deletefunction ), network_admin_url( 'users.php' ) ) ); + exit(); + break; + } +} + +$wp_list_table = _get_list_table('WP_MS_Users_List_Table'); +$pagenum = $wp_list_table->get_pagenum(); +$wp_list_table->prepare_items(); +$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); + +if ( $pagenum > $total_pages && $total_pages > 0 ) { + wp_redirect( add_query_arg( 'paged', $total_pages ) ); + exit; +} +$title = __( 'Users' ); +$parent_file = 'users.php'; + +add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) ); + +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

    ' . __('This table shows all users across the network and the sites to which they are assigned.') . '

    ' . + '

    ' . __('Hover over any user on the list to make the edit links appear. The Edit link on the left will take you to his or her Edit User profile page; the Edit link on the right by any site name goes to an Edit Site screen for that site.') . '

    ' . + '

    ' . __('You can also go to the user’s profile page by clicking on the individual username.') . '

    ' . + '

    ' . __('You can sort the table by clicking on any of the bold headings and switch between list and excerpt views by using the icons in the upper right.') . '

    ' . + '

    ' . __('The bulk action will permanently delete selected users, or mark/unmark those selected as spam. Spam users will have posts removed and will be unable to sign up again with the same email addresses.') . '

    ' . + '

    ' . __('You can make an existing user an additional super admin by going to the Edit User profile page and checking the box to grant that privilege.') . '

    ' +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Network Users') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +require_once( '../admin-header.php' ); + +if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) { + ?> +

    + +

    + +
    + +

    + ' . __( 'Search results for “%s”' ) . '', esc_html( $usersearch ) ); + ?> +

    + + views(); ?> + +
    + search_box( __( 'Search Users' ), 'all-user' ); ?> +
    + +
    + display(); ?> +
    +
    + + diff --git a/wp-admin/options-discussion.php b/wp-admin/options-discussion.php new file mode 100644 index 0000000..22039fd --- /dev/null +++ b/wp-admin/options-discussion.php @@ -0,0 +1,253 @@ +add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => '

    ' . __('This screen provides many options for controlling the management and display of comments and links to your posts/pages. So many, in fact, they won’t all fit here! :) Use the documentation links to get information on what each discussion setting does.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ', +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Discussion Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include('./admin-header.php'); +?> + +
    + +

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +

    + +

    +

    + +

    +
    +

    +

    + +

    +
    + +

    + +

    + + + + + + + + + + + + + + + + + +
    + __( 'Don’t show Avatars' ), 1 => __( 'Show Avatars' ) ); + foreach ( $yesorno as $key => $value) { + $selected = (get_option('show_avatars') == $key) ? 'checked="checked"' : ''; + echo "\n\t
    "; + } +?> +
    + + __('G — Suitable for all audiences'), + /* translators: Content suitability rating: http://bit.ly/89QxZA */ + 'PG' => __('PG — Possibly offensive, usually for audiences 13 and above'), + /* translators: Content suitability rating: http://bit.ly/89QxZA */ + 'R' => __('R — Intended for adult audiences above 17'), + /* translators: Content suitability rating: http://bit.ly/89QxZA */ + 'X' => __('X — Even more mature than above') +); +foreach ($ratings as $key => $rating) : + $selected = (get_option('avatar_rating') == $key) ? 'checked="checked"' : ''; + echo "\n\t
    "; +endforeach; +?> + +
    + +
    + + __('Mystery Man'), + 'blank' => __('Blank'), + 'gravatar_default' => __('Gravatar Logo'), + 'identicon' => __('Identicon (Generated)'), + 'wavatar' => __('Wavatar (Generated)'), + 'monsterid' => __('MonsterID (Generated)'), + 'retro' => __('Retro (Generated)') +); +$avatar_defaults = apply_filters('avatar_defaults', $avatar_defaults); +$default = get_option('avatar_default'); +if ( empty($default) ) + $default = 'mystery'; +$size = 32; +$avatar_list = ''; +foreach ( $avatar_defaults as $default_key => $default_name ) { + $selected = ($default == $default_key) ? 'checked="checked" ' : ''; + $avatar_list .= "\n\t'; + $avatar_list .= '
    '; +} +echo apply_filters('default_avatar_select', $avatar_list); +?> + +
    + + + + +
    +
    + + diff --git a/wp-admin/options-general.php b/wp-admin/options-general.php new file mode 100644 index 0000000..d8a8b80 --- /dev/null +++ b/wp-admin/options-general.php @@ -0,0 +1,328 @@ + + +' . __('The fields on this screen determine some of the basics of your site setup.') . '

    ' . + '

    ' . __('Most themes display the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. The tagline is also displayed by many themes.') . '

    '; + +if ( ! is_multisite() ) { + $options_help .= '

    ' . __('The WordPress URL and the Site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory.') . '

    ' . + '

    ' . __('If you want site visitors to be able to register themselves, as opposed to by the site administrator, check the membership box. A default user role can be set for all new users, whether self-registered or registered by the site admin.') . '

    '; +} + +$options_help .= '

    ' . __('UTC means Coordinated Universal Time.') . '

    ' . + '

    ' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => $options_help, +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on General Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include('./admin-header.php'); +?> + +
    + +

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    class="regular-text code" />
    class="regular-text code" /> +

    to be different from the directory you installed WordPress.'); ?>

    +

    +
    + +
    +

    The new address will not become active until confirmed.') ?>

    + +
    +

    %1$s. Cancel'), esc_html( $new_admin_email ), esc_url( admin_url( 'options.php?dismiss=new_admin_email' ) ) ); ?>

    +
    + +
    + + + + UTC time is %s'), date_i18n($timezone_format, false, 'gmt')); ?> + + %1$s'), date_i18n($timezone_format)); ?> + +

    + +
    + + +
    + $right_now ) { + $found = true; + break; + } + } + + if ( $found ) { + echo ' '; + $message = $tr['isdst'] ? + __('Daylight saving time begins on: %s.') : + __('Standard time begins on: %s.'); + // Add the difference between the current offset and the new offset to ts to get the correct transition time from date_i18n(). + printf( $message, date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $tr['ts'] + ($tz_offset - $tr['offset']) ) ); + } else { + _e('This timezone does not observe daylight saving time.'); + } + } + // Set back to UTC. + date_default_timezone_set('UTC'); + ?> +
    + +
    +
    + ' . date_i18n( $format ) . "
    \n"; + } + + echo ' ' . date_i18n( get_option('date_format') ) . " \n"; + + echo "\t

    " . __('Documentation on date and time formatting.') . "

    \n"; +?> +
    +
    +
    + ' . date_i18n( $format ) . "
    \n"; + } + + echo ' ' . date_i18n( get_option('time_format') ) . " \n"; + ; +?> +
    +
    + +
    + + + + +
    + +
    + + diff --git a/wp-admin/options-head.php b/wp-admin/options-head.php new file mode 100644 index 0000000..066caaf --- /dev/null +++ b/wp-admin/options-head.php @@ -0,0 +1,19 @@ +' . __('You can set maximum sizes for images inserted into your written content; you can also insert an image as Full Size.') . '

    ' . + '

    ' . __('The Embed option allows you embed a video, image, or other media content into your content automatically by typing the URL (of the web page where the file lives) on its own line when you create your content.'); + +if ( ! empty( $content_width ) ) + $media_options_help .= ' ' . __( 'If you do not set the maximum embed size, it will be automatically sized to fit into your content area.' ); + +$media_options_help .= '

    '; + +if ( ! is_multisite() ) { + $media_options_help .= '

    ' . __('Uploading Files allows you to choose the folder and path for storing your uploaded files.') . '

    '; +} + +$media_options_help .= '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => $media_options_help, +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Media Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include('./admin-header.php'); + +?> + +
    + +

    + +
    + + +

    +

    + + + + + + + + + + + + + + + + + + +
    + + + +
    +/> + +
    + + + + +
    + + + + +
    + +

    + + + + + + + + + + + + + + +
    + +
    + + + + +' . __( 'If the width value is left blank, embeds will default to the max width of your theme.' ) . '

    '; +?> +
    + + +

    + + + + + + + + + + + + + + + + +
    +

    wp-content/uploads'); ?>

    +
    +

    +
    + +
    + + + + + + +
    + +
    + + diff --git a/wp-admin/options-permalink.php b/wp-admin/options-permalink.php new file mode 100644 index 0000000..9ccb62f --- /dev/null +++ b/wp-admin/options-permalink.php @@ -0,0 +1,285 @@ +add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => '

    ' . __('Permalinks are the permanent URLs to your individual pages and blog posts, as well as your category and tag archives. A permalink is the web address used to link to your content. The URL to each post should be permanent, and never change — hence the name permalink.') . '

    ' . + '

    ' . __('This screen allows you to choose your default permalink structure. You can choose from common settings or create custom URL structures.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ', +) ); + +get_current_screen()->add_help_tab( array( + 'id' => 'common-settings', + 'title' => __('Common Settings'), + 'content' => '

    ' . __('Many people choose to use “pretty permalinks,” URLs that contain useful information such as the post title rather than generic post ID numbers. You can choose from any of the permalink formats under Common Settings, or can craft your own if you select Custom Structure.') . '

    ' . + '

    ' . __('If you pick an option other than Default, your general URL path with structure tags, terms surrounded by %, will also appear in the custom structure field and your path can be further modified there.') . '

    ' . + '

    ' . __('When you assign multiple categories or tags to a post, only one can show up in the permalink: the lowest numbered category. This applies if your custom structure includes %category% or %tag%.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ', +) ); + +get_current_screen()->add_help_tab( array( + 'id' => 'custom-structures', + 'title' => __('Custom Structures'), + 'content' => '

    ' . __('The Optional fields let you customize the “category” and “tag” base names that will appear in archive URLs. For example, the page listing all posts in the “Uncategorized” category could be /topics/uncategorized instead of /category/uncategorized.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ', +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Permalinks Settings') . '

    ' . + '

    ' . __('Documentation on Using Permalinks') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +/** + * Display JavaScript on the page. + * + * @package WordPress + * @subpackage Permalink_Settings_Screen + */ +function add_js() { + ?> + +set_permalink_structure( $permalink_structure ); + } + + if ( isset( $_POST['category_base'] ) ) { + $category_base = $_POST['category_base']; + if ( ! empty( $category_base ) ) + $category_base = $blog_prefix . preg_replace('#/+#', '/', '/' . str_replace( '#', '', $category_base ) ); + $wp_rewrite->set_category_base( $category_base ); + } + + if ( isset( $_POST['tag_base'] ) ) { + $tag_base = $_POST['tag_base']; + if ( ! empty( $tag_base ) ) + $tag_base = $blog_prefix . preg_replace('#/+#', '/', '/' . str_replace( '#', '', $tag_base ) ); + $wp_rewrite->set_tag_base( $tag_base ); + } + + create_initial_taxonomies(); +} + +$permalink_structure = get_option('permalink_structure'); +$category_base = get_option('category_base'); +$tag_base = get_option( 'tag_base' ); + +if ( $iis7_permalinks ) { + if ( ( ! file_exists($home_path . 'web.config') && win_is_writable($home_path) ) || win_is_writable($home_path . 'web.config') ) + $writable = true; + else + $writable = false; +} else { + if ( ( ! file_exists($home_path . '.htaccess') && is_writable($home_path) ) || is_writable($home_path . '.htaccess') ) + $writable = true; + else + $writable = false; +} + +if ( $wp_rewrite->using_index_permalinks() ) + $usingpi = true; +else + $usingpi = false; + +flush_rewrite_rules(); + +if (isset($_POST['submit'])) : ?> +

    +

    + + +
    + +

    + +
    + + +

    URLs which have question marks and lots of numbers in them, however WordPress offers you the ability to create a custom URL structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links. A number of tags are available, and here are some examples to get you started.'); ?>

    + + '', + 1 => $prefix . '/%year%/%monthnum%/%day%/%postname%/', + 2 => $prefix . '/%year%/%monthnum%/%postname%/', + 3 => $prefix . '/' . _x( 'archives', 'sample permalink base' ) . '/%post_id%', + 4 => $prefix . '/%postname%/', +); +?> +

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    /?p=123
    + + + + +
    + +

    + +

    URLs here. For example, using topics as your category base would make your category links like http://example.org/%stopics/uncategorized/. If you leave these blank the defaults will be used.'), $suffix ); ?>

    + + + + + + + + + + + +
    + + + + +
    + + +

    web.config file were writable, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your web.config file. Click in the field and press CTRL + a to select all. Then insert this rule inside of the /<configuration>/<system.webServer>/<rewrite>/<rules> element in web.config file.') ?>

    +
    + +

    +
    +

    web.config file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved.') ?>

    + +

    writable, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your web.config file. Create a new file, called web.config in the root directory of your site. Click in the field and press CTRL + a to select all. Then insert this code into the web.config file.') ?>

    +
    + +

    +
    +

    web.config file automatically, do not forget to revert the permissions after the file has been created.') ?>

    + + + +

    .htaccess file were writable, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your .htaccess file. Click in the field and press CTRL + a to select all.') ?>

    +
    + +

    +
    + + + + +
    + + diff --git a/wp-admin/options-privacy.php b/wp-admin/options-privacy.php new file mode 100644 index 0000000..d0d4336 --- /dev/null +++ b/wp-admin/options-privacy.php @@ -0,0 +1,63 @@ +add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => '

    ' . __('You can choose whether or not your site will be crawled by robots, ping services, and spiders. If you want those services to ignore your site, click the radio button next to “Ask search engines not to index this site” and click the Save Changes button at the bottom of the screen. Note that your privacy is not complete; your site is still visible on the web.') . '

    ' . + '

    ' . __('When this setting is in effect a reminder is shown in the Right Now box of the Dashboard that says, “Search Engines Blocked,” to remind you that your site is not being crawled.') . '

    ', +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Privacy Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include('./admin-header.php'); +?> + +
    + +

    + +
    + + + + + + + + +
    + /> +
    + /> + +

    + +
    + + + + +
    + +
    + + diff --git a/wp-admin/options-reading.php b/wp-admin/options-reading.php new file mode 100644 index 0000000..28897c1 --- /dev/null +++ b/wp-admin/options-reading.php @@ -0,0 +1,136 @@ + + +add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => '

    ' . __('This screen contains the settings that affect the display of your content.') . '

    ' . + '

    ' . sprintf(__('You can choose what’s displayed on the front page of your site. It can be posts in reverse chronological order (classic blog), or a fixed/static page. To set a static home page, you first need to create two Pages. One will become the front page, and the other will be where your posts are displayed.'), 'post-new.php?post_type=page') . '

    ' . + '

    ' . __('You can also control the display of your content in RSS feeds, including the maximum numbers of posts to display, whether to show full text or a summary, and the character set encoding.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ', +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Reading Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include( './admin-header.php' ); +?> + +
    + +

    + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    +

    +

    +

    +

    +
      +
    • +
    • +
    + +

    Warning: these pages should not be the same!' ); ?>

    + +
    + +
    +


    +

    +
    +

    character encoding of your site (UTF-8 is recommended, if you are adventurous there are some other encodings)' ); ?>

    + + + + +
    +
    + diff --git a/wp-admin/options-writing.php b/wp-admin/options-writing.php new file mode 100644 index 0000000..fdf3a08 --- /dev/null +++ b/wp-admin/options-writing.php @@ -0,0 +1,210 @@ +add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => '

    ' . __('You can submit content in several different ways; this screen holds the settings for all of them. The top section controls the editor within the dashboard, while the rest control external publishing methods. For more information on any of these methods, use the documentation links.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ', +) ); + +get_current_screen()->add_help_tab( array( + 'id' => 'options-press', + 'title' => __('Press This'), + 'content' => '

    ' . __('Press This is a bookmarklet that makes it easy to blog about something you come across on the web. You can use it to just grab a link, or to post an excerpt. Press This will even allow you to choose from images included on the page and use them in your post. Just drag the Press This link on this screen to your bookmarks bar in your browser, and you’ll be on your way to easier content creation. Clicking on it while on another website opens a popup window with all these options.') . '

    ', +) ); + +if ( is_multisite() ) { + $post_email_help = '

    ' . __('Due to security issues, you cannot use Post By Email on Multisite Installs.') . '

    '; +} else { + $post_email_help = '

    ' . __('Post via email settings allow you to send your WordPress install an email with the content of your post. You must set up a secret e-mail account with POP3 access to use this, and any mail received at this address will be posted, so it’s a good idea to keep this address very secret.') . '

    '; +} + +get_current_screen()->add_help_tab( array( + 'id' => 'options-postemail', + 'title' => __('Post Via Email'), + 'content' => $post_email_help, +) ); + +get_current_screen()->add_help_tab( array( + 'id' => 'options-remote', + 'title' => __('Remote Publishing'), + 'content' => '

    ' . __('Remote Publishing allows you to use an external editor (like the iOS or Android app) to write your posts.') . '

    ', +) ); + +get_current_screen()->add_help_tab( array( + 'id' => 'options-services', + 'title' => __('Update Services'), + 'content' => '

    ' . __('If desired, WordPress will automatically alert various services of your new posts.') . '

    ', +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Writing Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include('./admin-header.php'); +?> + +
    + +

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + 0, 'name' => 'default_category', 'orderby' => 'name', 'selected' => get_option('default_category'), 'hierarchical' => true)); +?> +
    + +
    + 0, 'name' => 'default_link_category', 'orderby' => 'name', 'selected' => get_option('default_link_category'), 'hierarchical' => true, 'taxonomy' => 'link_category')); +?> +
    + +

    +

    +

    +

    +

    + + + +

    +

    %s, %s, %s.'), wp_generate_password(8, false), wp_generate_password(8, false), wp_generate_password(8, false)) ?>

    + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    + 0, 'name' => 'default_email_category', 'orderby' => 'name', 'selected' => get_option('default_email_category'), 'hierarchical' => true)); +?> +
    + + +

    +

    + + + + + + + + + + +
    +
    +
    +
    +
    + + +

    + + + +

    + + + + + +

    Update Services because of your site’s privacy settings.'), 'options-privacy.php'); ?>

    + + + + + + + +
    +
    + + diff --git a/wp-admin/options.php b/wp-admin/options.php new file mode 100644 index 0000000..e141995 --- /dev/null +++ b/wp-admin/options.php @@ -0,0 +1,225 @@ + array( 'blogname', 'blogdescription', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'timezone_string' ), + 'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ), + 'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type', 'embed_autourls', 'embed_size_w', 'embed_size_h' ), + 'privacy' => array( 'blog_public' ), + 'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'blog_charset', 'show_on_front', 'page_on_front', 'page_for_posts' ), + 'writing' => array( 'default_post_edit_rows', 'use_smilies', 'default_category', 'default_email_category', 'use_balanceTags', 'default_link_category', 'default_post_format', 'enable_app', 'enable_xmlrpc' ), + 'options' => array( '' ) ); + +$mail_options = array('mailserver_url', 'mailserver_port', 'mailserver_login', 'mailserver_pass'); +$uploads_options = array('uploads_use_yearmonth_folders', 'upload_path', 'upload_url_path'); + +if ( !is_multisite() ) { + if ( !defined( 'WP_SITEURL' ) ) + $whitelist_options['general'][] = 'siteurl'; + if ( !defined( 'WP_HOME' ) ) + $whitelist_options['general'][] = 'home'; + + $whitelist_options['general'][] = 'admin_email'; + $whitelist_options['general'][] = 'users_can_register'; + $whitelist_options['general'][] = 'default_role'; + + $whitelist_options['writing'] = array_merge($whitelist_options['writing'], $mail_options); + $whitelist_options['writing'][] = 'ping_sites'; + + $whitelist_options['media'] = array_merge($whitelist_options['media'], $uploads_options); +} else { + $whitelist_options['general'][] = 'new_admin_email'; + $whitelist_options['general'][] = 'WPLANG'; + $whitelist_options['general'][] = 'language'; + + if ( apply_filters( 'enable_post_by_email_configuration', true ) ) + $whitelist_options['writing'] = array_merge($whitelist_options['writing'], $mail_options); + + $whitelist_options[ 'misc' ] = array(); +} + +$whitelist_options = apply_filters( 'whitelist_options', $whitelist_options ); + +/* + * If $_GET['action'] == 'update' we are saving settings sent from a settings page + */ +if ( 'update' == $action ) { + if ( 'options' == $option_page && !isset( $_POST['option_page'] ) ) { // This is for back compat and will eventually be removed. + $unregistered = true; + check_admin_referer( 'update-options' ); + } else { + $unregistered = false; + check_admin_referer( $option_page . '-options' ); + } + + if ( !isset( $whitelist_options[ $option_page ] ) ) + wp_die( __( 'ERROR: options page not found.' ) ); + + if ( 'options' == $option_page ) { + if ( is_multisite() && ! is_super_admin() ) + wp_die( __( 'You do not have sufficient permissions to modify unregistered settings for this site.' ) ); + $options = explode( ',', stripslashes( $_POST[ 'page_options' ] ) ); + } else { + $options = $whitelist_options[ $option_page ]; + } + + // Handle custom date/time formats + if ( 'general' == $option_page ) { + if ( !empty($_POST['date_format']) && isset($_POST['date_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['date_format'] ) ) + $_POST['date_format'] = $_POST['date_format_custom']; + if ( !empty($_POST['time_format']) && isset($_POST['time_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['time_format'] ) ) + $_POST['time_format'] = $_POST['time_format_custom']; + // Map UTC+- timezones to gmt_offsets and set timezone_string to empty. + if ( !empty($_POST['timezone_string']) && preg_match('/^UTC[+-]/', $_POST['timezone_string']) ) { + $_POST['gmt_offset'] = $_POST['timezone_string']; + $_POST['gmt_offset'] = preg_replace('/UTC\+?/', '', $_POST['gmt_offset']); + $_POST['timezone_string'] = ''; + } + } + + if ( $options ) { + foreach ( $options as $option ) { + if ( $unregistered ) + _deprecated_argument( 'options.php', '2.7', sprintf( __( 'The %1$s setting is unregistered. Unregistered settings are deprecated. See http://codex.wordpress.org/Settings_API' ), $option, $option_page ) ); + + $option = trim($option); + $value = null; + if ( isset($_POST[$option]) ) + $value = $_POST[$option]; + if ( !is_array($value) ) + $value = trim($value); + $value = stripslashes_deep($value); + update_option($option, $value); + } + } + + /** + * Handle settings errors and return to options page + */ + // If no settings errors were registered add a general 'updated' message. + if ( !count( get_settings_errors() ) ) + add_settings_error('general', 'settings_updated', __('Settings saved.'), 'updated'); + set_transient('settings_errors', get_settings_errors(), 30); + + /** + * Redirect back to the settings page that was submitted + */ + $goback = add_query_arg( 'settings-updated', 'true', wp_get_referer() ); + wp_redirect( $goback ); + exit; +} + +include('./admin-header.php'); ?> + +
    + +

    +
    + + + + +get_results( "SELECT * FROM $wpdb->options ORDER BY option_name" ); + +foreach ( (array) $options as $option ) : + $disabled = false; + if ( $option->option_name == '' ) + continue; + if ( is_serialized( $option->option_value ) ) { + if ( is_serialized_string( $option->option_value ) ) { + // this is a serialized string, so we should display it + $value = maybe_unserialize( $option->option_value ); + $options_to_update[] = $option->option_name; + $class = 'all-options'; + } else { + $value = 'SERIALIZED DATA'; + $disabled = true; + $class = 'all-options disabled'; + } + } else { + $value = $option->option_value; + $options_to_update[] = $option->option_name; + $class = 'all-options'; + } + $name = esc_attr( $option->option_name ); + echo " + + + +"; +endforeach; +?> +
    "; + if ( strpos( $value, "\n" ) !== false ) + echo ""; + else + echo ""; + echo "
    + + + + + +
    +
    + + time() ) + (array) get_option( 'recently_activated' ) ); + + wp_redirect(add_query_arg('_wpnonce', wp_create_nonce('edit-plugin-test_' . $file), "plugin-editor.php?file=$file&liveupdate=1&scrollto=$scrollto&networkwide=" . $network_wide)); + exit; + } + wp_redirect( self_admin_url("plugin-editor.php?file=$file&a=te&scrollto=$scrollto") ); + } else { + wp_redirect( self_admin_url("plugin-editor.php?file=$file&scrollto=$scrollto") ); + } + exit; + +break; + +default: + + if ( isset($_GET['liveupdate']) ) { + check_admin_referer('edit-plugin-test_' . $file); + + $error = validate_plugin($file); + if ( is_wp_error($error) ) + wp_die( $error ); + + if ( ( ! empty( $_GET['networkwide'] ) && ! is_plugin_active_for_network($file) ) || ! is_plugin_active($file) ) + activate_plugin($file, "plugin-editor.php?file=$file&phperror=1", ! empty( $_GET['networkwide'] ) ); // we'll override this later if the plugin can be included without fatal error + + wp_redirect( self_admin_url("plugin-editor.php?file=$file&a=te&scrollto=$scrollto") ); + exit; + } + + // List of allowable extensions + $editable_extensions = array('php', 'txt', 'text', 'js', 'css', 'html', 'htm', 'xml', 'inc', 'include'); + $editable_extensions = (array) apply_filters('editable_extensions', $editable_extensions); + + if ( ! is_file($real_file) ) { + wp_die(sprintf('

    %s

    ', __('No such file exists! Double check the name and try again.'))); + } else { + // Get the extension of the file + if ( preg_match('/\.([^.]+)$/', $real_file, $matches) ) { + $ext = strtolower($matches[1]); + // If extension is not in the acceptable list, skip it + if ( !in_array( $ext, $editable_extensions) ) + wp_die(sprintf('

    %s

    ', __('Files of this type are not editable.'))); + } + } + + get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => + '

    ' . __('You can use the editor to make changes to any of your plugins’ individual PHP files. Be aware that if you make changes, plugins updates will overwrite your customizations.') . '

    ' . + '

    ' . __('Choose a plugin to edit from the menu in the upper right and click the Select button. Click once on any file name to load it in the editor, and make your changes. Don’t forget to save your changes (Update File) when you’re finished.') . '

    ' . + '

    ' . __('The Documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Lookup takes you to a web page about that particular function.') . '

    ' . + '

    ' . __('If you want to make changes but don’t want them to be overwritten when the plugin is updated, you may be ready to think about writing your own plugin. For information on how to edit plugins, write your own from scratch, or just better understand their anatomy, check out the links below.') . '

    ' . + ( is_network_admin() ? '

    ' . __('Any edits to files from this screen will be reflected on all sites in the network.') . '

    ' : '' ) + ) ); + + get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Editing Plugins') . '

    ' . + '

    ' . __('Documentation on Writing Plugins') . '

    ' . + '

    ' . __('Support Forums') . '

    ' + ); + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + update_recently_edited(WP_PLUGIN_DIR . '/' . $file); + + $content = file_get_contents( $real_file ); + + if ( '.php' == substr( $real_file, strrpos( $real_file, '.' ) ) ) { + $functions = wp_doc_link_parse( $content ); + + if ( !empty($functions) ) { + $docs_select = ''; + } + } + + $content = esc_textarea( $content ); + ?> + +

    + +

    fatal error.') ?>

    + + + +
    + +
    + +

    + +
    +
    +%s (active)'), $file); + else + echo sprintf(__('Browsing %s (active)'), $file); + } else { + if ( is_writeable($real_file) ) + echo sprintf(__('Editing %s (inactive)'), $file); + else + echo sprintf(__('Browsing %s (inactive)'), $file); + } + ?> +
    +
    +
    + + + +
    +
    +
    +
    + +
    +

    + +
      + + > + +
    +
    +
    + +
    + + + + +
    + +
    + + + +

    Warning: Making changes to active plugins is not recommended. If your changes cause a fatal error, the plugin will be automatically deactivated.'); ?>

    + +

    + "; + submit_button( __( 'Update File and Attempt to Reactivate' ), 'primary', 'submit', false, array( 'tabindex' => '2' ) ); + } else { + submit_button( __( 'Update File' ), 'primary', 'submit', false, array( 'tabindex' => '2' ) ); + } + ?> +

    + +

    the Codex for more information.'); ?>

    + +
    +
    +
    + +get_pagenum(); +$wp_list_table->prepare_items(); + +$title = __('Install Plugins'); +$parent_file = 'plugins.php'; + +wp_enqueue_script( 'plugin-install' ); +if ( 'plugin-information' != $tab ) + add_thickbox(); + +$body_id = $tab; + +do_action('install_plugins_pre_' . $tab); //Used to override the general interface, Eg, install or plugin information. + +get_current_screen()->add_help_tab( array( +'id' => 'overview', +'title' => __('Overview'), +'content' => + '

    ' . sprintf(__('Plugins hook into WordPress to extend its functionality with custom features. Plugins are developed independently from the core WordPress application by thousands of developers all over the world. All plugins in the official WordPress.org Plugin Directory are compatible with the license WordPress uses. You can find new plugins to install by searching or browsing the Directory right here in your own Plugins section.'), 'http://wordpress.org/extend/plugins/') . '

    ' +) ); +get_current_screen()->add_help_tab( array( +'id' => 'adding-plugins', +'title' => __('Adding Plugins'), +'content' => + '

    ' . __('If you know what you’re looking for, Search is your best bet. The Search screen has options to search the WordPress.org Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting a popular tags. Tags in larger type mean more plugins have been labeled with that tag.') . '

    ' . + '

    ' . __('If you just want to get an idea of what’s available, you can browse Featured, Popular, and Newest plugins by using the links in the upper left of the screen. These sections rotate regularly.') . '

    ' . + '

    ' . __('If you want to install a plugin that you’ve downloaded elsewhere, click the Upload in the upper left. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin.') . '

    ' +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Installing Plugins') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include(ABSPATH . 'wp-admin/admin-header.php'); +?> +
    + +

    + +views(); ?> + +
    + +
    +get_pagenum(); + +$action = $wp_list_table->current_action(); + +$plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : ''; +$s = isset($_REQUEST['s']) ? urlencode($_REQUEST['s']) : ''; + +// Clean up request URI from temporary args for screen options/paging uri's to work as expected. +$_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', 'activate-multi', 'deactivate', 'deactivate-multi', '_error_nonce'), $_SERVER['REQUEST_URI']); + +if ( $action ) { + + switch ( $action ) { + case 'activate': + if ( ! current_user_can('activate_plugins') ) + wp_die(__('You do not have sufficient permissions to activate plugins for this site.')); + + check_admin_referer('activate-plugin_' . $plugin); + + $result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), is_network_admin() ); + if ( is_wp_error( $result ) ) { + if ( 'unexpected_output' == $result->get_error_code() ) { + $redirect = self_admin_url('plugins.php?error=true&charsout=' . strlen($result->get_error_data()) . '&plugin=' . $plugin . "&plugin_status=$status&paged=$page&s=$s"); + wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); + exit; + } else { + wp_die($result); + } + } + + if ( ! is_network_admin() ) { + $recent = (array) get_option( 'recently_activated' ); + unset( $recent[ $plugin ] ); + update_option( 'recently_activated', $recent ); + } + + if ( isset($_GET['from']) && 'import' == $_GET['from'] ) { + wp_redirect( self_admin_url("import.php?import=" . str_replace('-importer', '', dirname($plugin))) ); // overrides the ?error=true one above and redirects to the Imports page, stripping the -importer suffix + } else { + wp_redirect( self_admin_url("plugins.php?activate=true&plugin_status=$status&paged=$page&s=$s") ); // overrides the ?error=true one above + } + exit; + break; + case 'activate-selected': + if ( ! current_user_can('activate_plugins') ) + wp_die(__('You do not have sufficient permissions to activate plugins for this site.')); + + check_admin_referer('bulk-plugins'); + + $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array(); + + // Only activate plugins which are not already active. + $check = is_network_admin() ? 'is_plugin_active_for_network' : 'is_plugin_active'; + foreach ( $plugins as $i => $plugin ) + if ( $check( $plugin ) ) + unset( $plugins[ $i ] ); + + if ( empty($plugins) ) { + wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") ); + exit; + } + + activate_plugins($plugins, self_admin_url('plugins.php?error=true'), is_network_admin() ); + + if ( ! is_network_admin() ) { + $recent = (array) get_option('recently_activated' ); + foreach ( $plugins as $plugin ) + unset( $recent[ $plugin ] ); + update_option( 'recently_activated', $recent ); + } + + wp_redirect( self_admin_url("plugins.php?activate-multi=true&plugin_status=$status&paged=$page&s=$s") ); + exit; + break; + case 'update-selected' : + + check_admin_referer( 'bulk-plugins' ); + + if ( isset( $_GET['plugins'] ) ) + $plugins = explode( ',', $_GET['plugins'] ); + elseif ( isset( $_POST['checked'] ) ) + $plugins = (array) $_POST['checked']; + else + $plugins = array(); + + $title = __( 'Update Plugins' ); + $parent_file = 'plugins.php'; + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + echo '
    '; + screen_icon(); + echo '

    ' . esc_html( $title ) . '

    '; + + $url = self_admin_url('update.php?action=update-selected&plugins=' . urlencode( join(',', $plugins) )); + $url = wp_nonce_url($url, 'bulk-update-plugins'); + + echo ""; + echo '
    '; + require_once(ABSPATH . 'wp-admin/admin-footer.php'); + exit; + break; + case 'error_scrape': + if ( ! current_user_can('activate_plugins') ) + wp_die(__('You do not have sufficient permissions to activate plugins for this site.')); + + check_admin_referer('plugin-activation-error_' . $plugin); + + $valid = validate_plugin($plugin); + if ( is_wp_error($valid) ) + wp_die($valid); + + if ( ! WP_DEBUG ) { + error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR ); + } + + @ini_set('display_errors', true); //Ensure that Fatal errors are displayed. + // Go back to "sandbox" scope so we get the same errors as before + function plugin_sandbox_scrape( $plugin ) { + include( WP_PLUGIN_DIR . '/' . $plugin ); + } + plugin_sandbox_scrape( $plugin ); + do_action('activate_' . $plugin); + exit; + break; + case 'deactivate': + if ( ! current_user_can('activate_plugins') ) + wp_die(__('You do not have sufficient permissions to deactivate plugins for this site.')); + + check_admin_referer('deactivate-plugin_' . $plugin); + + if ( ! is_network_admin() && is_plugin_active_for_network( $plugin ) ) { + wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") ); + exit; + } + + deactivate_plugins( $plugin, false, is_network_admin() ); + if ( ! is_network_admin() ) + update_option( 'recently_activated', array( $plugin => time() ) + (array) get_option( 'recently_activated' ) ); + if ( headers_sent() ) + echo ""; + else + wp_redirect( self_admin_url("plugins.php?deactivate=true&plugin_status=$status&paged=$page&s=$s") ); + exit; + break; + case 'deactivate-selected': + if ( ! current_user_can('activate_plugins') ) + wp_die(__('You do not have sufficient permissions to deactivate plugins for this site.')); + + check_admin_referer('bulk-plugins'); + + $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array(); + // Do not deactivate plugins which are already deactivated. + if ( is_network_admin() ) { + $plugins = array_filter( $plugins, 'is_plugin_active_for_network' ); + } else { + $plugins = array_filter( $plugins, 'is_plugin_active' ); + $plugins = array_diff( $plugins, array_filter( $plugins, 'is_plugin_active_for_network' ) ); + } + if ( empty($plugins) ) { + wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") ); + exit; + } + + deactivate_plugins( $plugins, false, is_network_admin() ); + + if ( ! is_network_admin() ) { + $deactivated = array(); + foreach ( $plugins as $plugin ) + $deactivated[ $plugin ] = time(); + update_option( 'recently_activated', $deactivated + (array) get_option( 'recently_activated' ) ); + } + + wp_redirect( self_admin_url("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page&s=$s") ); + exit; + break; + case 'delete-selected': + if ( ! current_user_can('delete_plugins') ) + wp_die(__('You do not have sufficient permissions to delete plugins for this site.')); + + check_admin_referer('bulk-plugins'); + + //$_POST = from the plugin form; $_GET = from the FTP details screen. + $plugins = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array(); + if ( empty( $plugins ) ) { + wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") ); + exit; + } + + $plugins = array_filter($plugins, 'is_plugin_inactive'); // Do not allow to delete Activated plugins. + if ( empty( $plugins ) ) { + wp_redirect( self_admin_url( "plugins.php?error=true&main=true&plugin_status=$status&paged=$page&s=$s" ) ); + exit; + } + + include(ABSPATH . 'wp-admin/update.php'); + + $parent_file = 'plugins.php'; + + if ( ! isset($_REQUEST['verify-delete']) ) { + wp_enqueue_script('jquery'); + require_once(ABSPATH . 'wp-admin/admin-header.php'); + ?> +
    + $data ) { + $plugin_info[ $plugin_file ] = _get_plugin_data_markup_translate( $plugin_file, $data ); + $plugin_info[ $plugin_file ]['is_uninstallable'] = is_uninstallable_plugin( $plugin ); + if ( ! $plugin_info[ $plugin_file ]['Network'] ) + $have_non_network_plugins = true; + } + } + } + } + screen_icon(); + $plugins_to_delete = count( $plugin_info ); + echo '

    ' . _n( 'Delete Plugin', 'Delete Plugins', $plugins_to_delete ) . '

    '; + ?> + +

    + +

    +
      + ', sprintf( __( '%1$s by %2$s (will also delete its data)' ), esc_html($plugin['Name']), esc_html($plugin['AuthorName']) ), ''; + $data_to_delete = true; + } else { + /* translators: 1: plugin name, 2: plugin author */ + echo '
    • ', sprintf( __('%1$s by %2$s' ), esc_html($plugin['Name']), esc_html($plugin['AuthorName']) ), '
    • '; + } + } + ?> +
    +

    +
    + + + '; + ?> + + +
    +
    + +
    + +

    + +
    + prepare_items(); + +wp_enqueue_script('plugin-install'); +add_thickbox(); + +add_screen_option( 'per_page', array('label' => _x( 'Plugins', 'plugins per page (screen options)' ), 'default' => 999 ) ); + +get_current_screen()->add_help_tab( array( +'id' => 'overview', +'title' => __('Overview'), +'content' => + '

    ' . __('Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.') . '

    ' . + '

    ' . sprintf(__('You can find additional plugins for your site by using the Plugin Browser/Installer functionality or by browsing the WordPress Plugin Directory directly and installing new plugins manually. To manually install a plugin you generally just need to upload the plugin file into your /wp-content/plugins directory. Once a plugin has been installed, you can activate it here.'), 'plugin-install.php', 'http://wordpress.org/extend/plugins/') . '

    ' +) ); +get_current_screen()->add_help_tab( array( +'id' => 'compatibility-problems', +'title' => __('Troubleshooting'), +'content' => + '

    ' . __('Most of the time, plugins play nicely with the core of WordPress and with other plugins. Sometimes, though, a plugin’s code will get in the way of another plugin, causing compatibility issues. If your site starts doing strange things, this may be the problem. Try deactivating all your plugins and re-activating them in various combinations until you isolate which one(s) caused the issue.') . '

    ' . + '

    ' . sprintf( __('If something goes wrong with a plugin and you can’t use WordPress, delete or rename that file in the %s directory and it will be automatically deactivated.'), WP_PLUGIN_DIR) . '

    ' +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Managing Plugins') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +$title = __('Plugins'); +$parent_file = 'plugins.php'; + +require_once(ABSPATH . 'wp-admin/admin-header.php'); + +$invalid = validate_active_plugins(); +if ( !empty($invalid) ) + foreach ( $invalid as $plugin_file => $error ) + echo '

    ' . sprintf(__('The plugin %s has been deactivated due to an error: %s'), esc_html($plugin_file), $error->get_error_message()) . '

    '; +?> + +unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'), $_GET['charsout']); + else + $errmsg = __('Plugin could not be activated because it triggered a fatal error.'); + ?> +

    + + + +
    + +

    get_error_message() ); ?>

    + +

    deleted.'); ?>

    + + +

    activated.') ?>

    + +

    activated.'); ?>

    + +

    deactivated.') ?>

    + +

    deactivated.'); ?>

    + +

    + + +
    + +

    + +' . __('Search results for “%s”') . '', esc_html( $s ) ); ?> +

    + + + +views(); ?> + +
    +search_box( __( 'Search Installed Plugins' ), 'plugin' ); ?> +
    + +
    + + + + +display(); ?> +
    + +
    + + true ) ) ) ) + $post_type = $_GET['post_type']; +else + wp_die( __('Invalid post type') ); + +$post_type_object = get_post_type_object( $post_type ); + +if ( 'post' == $post_type ) { + $parent_file = 'edit.php'; + $submenu_file = 'post-new.php'; +} else { + $submenu_file = "post-new.php?post_type=$post_type"; + if ( isset( $post_type_object ) && $post_type_object->show_in_menu && $post_type_object->show_in_menu !== true ) { + $parent_file = $post_type_object->show_in_menu; + if ( ! isset( $_registered_pages[ get_plugin_page_hookname( "post-new.php?post_type=$post_type", $post_type_object->show_in_menu ) ] ) ) + $submenu_file = $parent_file; + } else { + $parent_file = "edit.php?post_type=$post_type"; + } +} + +$title = $post_type_object->labels->add_new_item; + +$editing = true; + +if ( ! current_user_can( $post_type_object->cap->edit_posts ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + +// Schedule auto-draft cleanup +if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) ) + wp_schedule_event( time(), 'daily', 'wp_scheduled_auto_draft_delete' ); + +wp_enqueue_script('autosave'); + +// Show post form. +$post = get_default_post_to_edit( $post_type, true ); +$post_ID = $post->ID; +include('edit-form-advanced.php'); +include('./admin-footer.php'); diff --git a/wp-admin/post.php b/wp-admin/post.php new file mode 100644 index 0000000..035a185 --- /dev/null +++ b/wp-admin/post.php @@ -0,0 +1,264 @@ +post_type; + $post_type_object = get_post_type_object( $post_type ); +} + +/** + * Redirect to previous page. + * + * @param int $post_id Optional. Post ID. + */ +function redirect_post($post_id = '') { + if ( isset($_POST['save']) || isset($_POST['publish']) ) { + $status = get_post_status( $post_id ); + + if ( isset( $_POST['publish'] ) ) { + switch ( $status ) { + case 'pending': + $message = 8; + break; + case 'future': + $message = 9; + break; + default: + $message = 6; + } + } else { + $message = 'draft' == $status ? 10 : 1; + } + + $location = add_query_arg( 'message', $message, get_edit_post_link( $post_id, 'url' ) ); + } elseif ( isset($_POST['addmeta']) && $_POST['addmeta'] ) { + $location = add_query_arg( 'message', 2, wp_get_referer() ); + $location = explode('#', $location); + $location = $location[0] . '#postcustom'; + } elseif ( isset($_POST['deletemeta']) && $_POST['deletemeta'] ) { + $location = add_query_arg( 'message', 3, wp_get_referer() ); + $location = explode('#', $location); + $location = $location[0] . '#postcustom'; + } elseif ( 'post-quickpress-save-cont' == $_POST['action'] ) { + $location = "post.php?action=edit&post=$post_id&message=7"; + } else { + $location = add_query_arg( 'message', 4, get_edit_post_link( $post_id, 'url' ) ); + } + + wp_redirect( apply_filters( 'redirect_post_location', $location, $post_id ) ); + exit; +} + +if ( isset( $_POST['deletepost'] ) ) + $action = 'delete'; +elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] ) + $action = 'preview'; + +$sendback = wp_get_referer(); +if ( ! $sendback || + strpos( $sendback, 'post.php' ) !== false || + strpos( $sendback, 'post-new.php' ) !== false ) { + $sendback = admin_url( 'edit.php' ); + $sendback .= ( ! empty( $post_type ) ) ? '?post_type=' . $post_type : ''; +} else { + $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), $sendback ); +} + +switch($action) { +case 'postajaxpost': +case 'post': +case 'post-quickpress-publish': +case 'post-quickpress-save': + check_admin_referer('add-' . $post_type); + + if ( 'post-quickpress-publish' == $action ) + $_POST['publish'] = 'publish'; // tell write_post() to publish + + if ( 'post-quickpress-publish' == $action || 'post-quickpress-save' == $action ) { + $_POST['comment_status'] = get_option('default_comment_status'); + $_POST['ping_status'] = get_option('default_ping_status'); + $post_id = edit_post(); + } else { + $post_id = 'postajaxpost' == $action ? edit_post() : write_post(); + } + + if ( 0 === strpos( $action, 'post-quickpress' ) ) { + $_POST['post_ID'] = $post_id; + // output the quickpress dashboard widget + require_once(ABSPATH . 'wp-admin/includes/dashboard.php'); + wp_dashboard_quick_press(); + exit; + } + + redirect_post($post_id); + exit(); + break; + +case 'edit': + $editing = true; + + if ( empty( $post_id ) ) { + wp_redirect( admin_url('post.php') ); + exit(); + } + + $p = $post_id; + + if ( empty($post->ID) ) + wp_die( __('You attempted to edit an item that doesn’t exist. Perhaps it was deleted?') ); + + if ( null == $post_type_object ) + wp_die( __('Unknown post type.') ); + + if ( !current_user_can($post_type_object->cap->edit_post, $post_id) ) + wp_die( __('You are not allowed to edit this item.') ); + + if ( 'trash' == $post->post_status ) + wp_die( __('You can’t edit this item because it is in the Trash. Please restore it and try again.') ); + + $post_type = $post->post_type; + if ( 'post' == $post_type ) { + $parent_file = "edit.php"; + $submenu_file = "edit.php"; + $post_new_file = "post-new.php"; + } else { + if ( isset( $post_type_object ) && $post_type_object->show_in_menu && $post_type_object->show_in_menu !== true ) + $parent_file = $post_type_object->show_in_menu; + else + $parent_file = "edit.php?post_type=$post_type"; + $submenu_file = "edit.php?post_type=$post_type"; + $post_new_file = "post-new.php?post_type=$post_type"; + } + + if ( $last = wp_check_post_lock( $post->ID ) ) { + add_action('admin_notices', '_admin_notice_post_locked' ); + } else { + $active_post_lock = wp_set_post_lock( $post->ID ); + wp_enqueue_script('autosave'); + } + + $title = $post_type_object->labels->edit_item; + $post = get_post_to_edit($post_id); + + if ( post_type_supports($post_type, 'comments') ) { + wp_enqueue_script('admin-comments'); + enqueue_comment_hotkeys_js(); + } + + include('./edit-form-advanced.php'); + + break; + +case 'editattachment': + check_admin_referer('update-attachment_' . $post_id); + + // Don't let these be changed + unset($_POST['guid']); + $_POST['post_type'] = 'attachment'; + + // Update the thumbnail filename + $newmeta = wp_get_attachment_metadata( $post_id, true ); + $newmeta['thumb'] = $_POST['thumb']; + + wp_update_attachment_metadata( $post_id, $newmeta ); + +case 'editpost': + check_admin_referer('update-' . $post_type . '_' . $post_id); + + $post_id = edit_post(); + + redirect_post($post_id); // Send user on their way while we keep working + + exit(); + break; + +case 'trash': + check_admin_referer('trash-' . $post_type . '_' . $post_id); + + $post = & get_post($post_id); + + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to move this item to the Trash.') ); + + if ( ! wp_trash_post($post_id) ) + wp_die( __('Error in moving to Trash.') ); + + wp_redirect( add_query_arg( array('trashed' => 1, 'ids' => $post_id), $sendback ) ); + exit(); + break; + +case 'untrash': + check_admin_referer('untrash-' . $post_type . '_' . $post_id); + + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to move this item out of the Trash.') ); + + if ( ! wp_untrash_post($post_id) ) + wp_die( __('Error in restoring from Trash.') ); + + wp_redirect( add_query_arg('untrashed', 1, $sendback) ); + exit(); + break; + +case 'delete': + check_admin_referer('delete-' . $post_type . '_' . $post_id); + + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to delete this item.') ); + + $force = !EMPTY_TRASH_DAYS; + if ( $post->post_type == 'attachment' ) { + $force = ( $force || !MEDIA_TRASH ); + if ( ! wp_delete_attachment($post_id, $force) ) + wp_die( __('Error in deleting.') ); + } else { + if ( !wp_delete_post($post_id, $force) ) + wp_die( __('Error in deleting.') ); + } + + wp_redirect( add_query_arg('deleted', 1, $sendback) ); + exit(); + break; + +case 'preview': + check_admin_referer( 'autosave', 'autosavenonce' ); + + $url = post_preview(); + + wp_redirect($url); + exit(); + break; + +default: + wp_redirect( admin_url('edit.php') ); + exit(); + break; +} // end switch +include('./admin-footer.php'); diff --git a/wp-admin/press-this.php b/wp-admin/press-this.php new file mode 100644 index 0000000..facae8a --- /dev/null +++ b/wp-admin/press-this.php @@ -0,0 +1,654 @@ + $image) { + // see if files exist in content - we don't want to upload non-used selected files. + if ( strpos($_POST['content'], htmlspecialchars($image)) !== false ) { + $desc = isset($_POST['photo_description'][$key]) ? $_POST['photo_description'][$key] : ''; + $upload = media_sideload_image($image, $post_ID, $desc); + + // Replace the POSTED content with correct uploaded ones. Regex contains fix for Magic Quotes + if ( !is_wp_error($upload) ) + $content = preg_replace('/]*)src=\\\?(\"|\')'.preg_quote(htmlspecialchars($image), '/').'\\\?(\2)([^>\/]*)\/*>/is', $upload, $content); + } + } + } + // set the post_content and status + $post['post_content'] = $content; + if ( isset( $_POST['publish'] ) && current_user_can( 'publish_posts' ) ) + $post['post_status'] = 'publish'; + elseif ( isset( $_POST['review'] ) ) + $post['post_status'] = 'pending'; + else + $post['post_status'] = 'draft'; + + // error handling for media_sideload + if ( is_wp_error($upload) ) { + wp_delete_post($post_ID); + wp_die($upload); + } else { + // Post formats + if ( isset( $_POST['post_format'] ) ) { + if ( current_theme_supports( 'post-formats', $_POST['post_format'] ) ) + set_post_format( $post_ID, $_POST['post_format'] ); + elseif ( '0' == $_POST['post_format'] ) + set_post_format( $post_ID, false ); + } + + $post_ID = wp_update_post($post); + } + + return $post_ID; +} + +// For submitted posts. +if ( isset($_REQUEST['action']) && 'post' == $_REQUEST['action'] ) { + check_admin_referer('press-this'); + $posted = $post_ID = press_it(); +} else { + $post = get_default_post_to_edit('post', true); + $post_ID = $post->ID; +} + +// Set Variables +$title = isset( $_GET['t'] ) ? trim( strip_tags( html_entity_decode( stripslashes( $_GET['t'] ) , ENT_QUOTES) ) ) : ''; + +$selection = ''; +if ( !empty($_GET['s']) ) { + $selection = str_replace(''', "'", stripslashes($_GET['s'])); + $selection = trim( htmlspecialchars( html_entity_decode($selection, ENT_QUOTES) ) ); +} + +if ( ! empty($selection) ) { + $selection = preg_replace('/(\r?\n|\r)/', '

    ', $selection); + $selection = '

    ' . str_replace('

    ', '', $selection) . '

    '; +} + +$url = isset($_GET['u']) ? esc_url($_GET['u']) : ''; +$image = isset($_GET['i']) ? $_GET['i'] : ''; + +if ( !empty($_REQUEST['ajax']) ) { + switch ($_REQUEST['ajax']) { + case 'video': ?> + +
    +

    +
    + +

    +
    +
    + + +

    +
    +
    + +
    +
    + +

    + + + <?php echo esc_attr(__('Click to insert.')); ?> + +

    + +

    + ]*)src=(\"|\')([^<>\'\"]+)(\2)([^>]*)\/*>/i'; + $content = str_replace(array("\n","\t","\r"), '', $content); + preg_match_all($pattern, $content, $matches); + if ( empty($matches[0]) ) + return ''; + $sources = array(); + foreach ($matches[3] as $src) { + // if no http in url + if (strpos($src, 'http') === false) + // if it doesn't have a relative uri + if ( strpos($src, '../') === false && strpos($src, './') === false && strpos($src, '/') === 0) + $src = 'http://'.str_replace('//','/', $host['host'].'/'.$src); + else + $src = 'http://'.str_replace('//','/', $host['host'].'/'.dirname($host['path']).'/'.$src); + $sources[] = esc_url($src); + } + return "'" . implode("','", $sources) . "'"; + } + $url = wp_kses(urldecode($url), null); + echo 'new Array('.get_images_from_uri($url).')'; + break; + + case 'photo_js': ?> + // gather images and load some default JS + var last = null + var img, img_tag, aspect, w, h, skip, i, strtoappend = ""; + if(photostorage == false) { + var my_src = eval( + jQuery.ajax({ + type: "GET", + url: "", + cache : false, + async : false, + data: "ajax=photo_images&u=", + dataType : "script" + }).responseText + ); + if(my_src.length == 0) { + var my_src = eval( + jQuery.ajax({ + type: "GET", + url: "", + cache : false, + async : false, + data: "ajax=photo_images&u=", + dataType : "script" + }).responseText + ); + if(my_src.length == 0) { + strtoappend = ''; + } + } + } + for (i = 0; i < my_src.length; i++) { + img = new Image(); + img.src = my_src[i]; + img_attr = 'id="img' + i + '"'; + skip = false; + + maybeappend = ''; + + if (img.width && img.height) { + if (img.width >= 30 && img.height >= 30) { + aspect = img.width / img.height; + scale = (aspect > 1) ? (71 / img.width) : (71 / img.height); + + w = img.width; + h = img.height; + + if (scale < 1) { + w = parseInt(img.width * scale); + h = parseInt(img.height * scale); + } + img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"'; + strtoappend += maybeappend; + } + } else { + strtoappend += maybeappend; + } + } + + function pick(img, desc) { + if (img) { + if('object' == typeof jQuery('.photolist input') && jQuery('.photolist input').length != 0) length = jQuery('.photolist input').length; + if(length == 0) length = 1; + jQuery('.photolist').append(''); + jQuery('.photolist').append(''); + insert_editor( "\n\n" + encodeURI('

    ' + desc + '

    ')); + } + return false; + } + + function image_selector(el) { + var desc, src, parent = jQuery(el).closest('#photo-add-url-div'); + + if ( parent.length ) { + desc = parent.find('input.tb_this_photo_description').val() || ''; + src = parent.find('input.tb_this_photo').val() || '' + } else { + desc = jQuery('#tb_this_photo_description').val() || ''; + src = jQuery('#tb_this_photo').val() || '' + } + + tb_remove(); + pick(src, desc); + jQuery('#extra-fields').hide(); + jQuery('#extra-fields').html(''); + return false; + } + + jQuery('#extra-fields').html('

    ()

    '); + jQuery('#img_container').html(strtoappend); + +<?php _e('Press This') ?> + + + + + + + +
    +
    +
    +
    + + + + + + + + +
    + +
    +

    +

    +
    +

    + 'save' ) ); + if ( current_user_can('publish_posts') ) { + submit_button( __( 'Publish' ), 'primary', 'publish', false ); + } else { + echo '

    '; + submit_button( __( 'Submit for Review' ), 'primary', 'review', false ); + } ?> + +

    + +

    + +

    + +
    +
    + + +
    +

    +

    +
    +
    + + + + + +
    +
      + 'category', 'popular_cats' => $popular_ids ) ) ?> +
    +
    + + cap->assign_terms) ) : ?> +

    + + cap->edit_terms) ) : ?> +
    +

    + + labels->add_new_item ); ?> + +

    +

    + + + + 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— ' . $tax->labels->parent_item . ' —', 'tab_index' => 3 ) ); ?> + + + +

    +
    + +
    +
    +
    + +
    +

    +

    +
    +
    +
    + + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + + +
    +

    + + | + |

    +
    + + +
    +
    + +
    +
    + + + + + +
    + true, + 'textarea_rows' => '15' + ); + + $content = ''; + if ( $selection ) + $content .= $selection; + + if ( $url ) { + $content .= '

    '; + + if ( $selection ) + $content .= __('via '); + + $content .= sprintf( "%s.

    ", esc_url( $url ), esc_html( $title ) ); + } + + remove_action( 'media_buttons', 'media_buttons' ); + add_action( 'media_buttons', 'press_this_media_buttons' ); + function press_this_media_buttons() { + _e( 'Add:' ); + + if ( current_user_can('upload_files') ) { + ?> + + <?php esc_attr_e('Insert an Image'); ?> + + <?php esc_attr_e('Embed a Video'); ?> + +
    +
    +
    +
    + + + + + diff --git a/wp-admin/profile.php b/wp-admin/profile.php new file mode 100644 index 0000000..c5021f1 --- /dev/null +++ b/wp-admin/profile.php @@ -0,0 +1,18 @@ +post_parent ) ) + break; + if ( !$post = get_post( $revision->post_parent ) ) + break; + + // Revisions disabled and we're not looking at an autosave + if ( ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) && !wp_is_post_autosave( $revision ) ) { + $redirect = 'edit.php?post_type=' . $post->post_type; + break; + } + + check_admin_referer( "restore-post_$post->ID|$revision->ID" ); + + wp_restore_post_revision( $revision->ID ); + $redirect = add_query_arg( array( 'message' => 5, 'revision' => $revision->ID ), get_edit_post_link( $post->ID, 'url' ) ); + break; +case 'diff' : + if ( !$left_revision = get_post( $left ) ) + break; + if ( !$right_revision = get_post( $right ) ) + break; + + if ( !current_user_can( 'read_post', $left_revision->ID ) || !current_user_can( 'read_post', $right_revision->ID ) ) + break; + + // If we're comparing a revision to itself, redirect to the 'view' page for that revision or the edit page for that post + if ( $left_revision->ID == $right_revision->ID ) { + $redirect = get_edit_post_link( $left_revision->ID ); + include( './js/revisions-js.php' ); + break; + } + + // Don't allow reverse diffs? + if ( strtotime($right_revision->post_modified_gmt) < strtotime($left_revision->post_modified_gmt) ) { + $redirect = add_query_arg( array( 'left' => $right, 'right' => $left ) ); + break; + } + + if ( $left_revision->ID == $right_revision->post_parent ) // right is a revision of left + $post =& $left_revision; + elseif ( $left_revision->post_parent == $right_revision->ID ) // left is a revision of right + $post =& $right_revision; + elseif ( $left_revision->post_parent == $right_revision->post_parent ) // both are revisions of common parent + $post = get_post( $left_revision->post_parent ); + else + break; // Don't diff two unrelated revisions + + if ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) { // Revisions disabled + if ( + // we're not looking at an autosave + ( !wp_is_post_autosave( $left_revision ) && !wp_is_post_autosave( $right_revision ) ) + || + // we're not comparing an autosave to the current post + ( $post->ID !== $left_revision->ID && $post->ID !== $right_revision->ID ) + ) { + $redirect = 'edit.php?post_type=' . $post->post_type; + break; + } + } + + if ( + // They're the same + $left_revision->ID == $right_revision->ID + || + // Neither is a revision + ( !wp_get_post_revision( $left_revision->ID ) && !wp_get_post_revision( $right_revision->ID ) ) + ) + break; + + $post_title = '' . get_the_title() . ''; + $h2 = sprintf( __( 'Compare Revisions of “%1$s”' ), $post_title ); + $title = __( 'Revisions' ); + + $left = $left_revision->ID; + $right = $right_revision->ID; + + $redirect = false; + break; +case 'view' : +default : + if ( !$revision = wp_get_post_revision( $revision_id ) ) + break; + if ( !$post = get_post( $revision->post_parent ) ) + break; + + if ( !current_user_can( 'read_post', $revision->ID ) || !current_user_can( 'read_post', $post->ID ) ) + break; + + // Revisions disabled and we're not looking at an autosave + if ( ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) && !wp_is_post_autosave( $revision ) ) { + $redirect = 'edit.php?post_type=' . $post->post_type; + break; + } + + $post_title = '' . get_the_title() . ''; + $revision_title = wp_post_revision_title( $revision, false ); + $h2 = sprintf( __( 'Revision for “%1$s” created on %2$s' ), $post_title, $revision_title ); + $title = __( 'Revisions' ); + + // Sets up the diff radio buttons + $left = $revision->ID; + $right = $post->ID; + + $redirect = false; + break; +endswitch; + +// Empty post_type means either malformed object found, or no valid parent was found. +if ( !$redirect && empty($post->post_type) ) + $redirect = 'edit.php'; + +if ( !empty($redirect) ) { + wp_redirect( $redirect ); + exit; +} + +// This is so that the correct "Edit" menu item is selected. +if ( !empty($post->post_type) && 'post' != $post->post_type ) + $parent_file = $submenu_file = 'edit.php?post_type=' . $post->post_type; +else + $parent_file = $submenu_file = 'edit.php'; + +require_once( './admin-header.php' ); + +?> + +
    + +

    + + + + + + + + + $field_title ) : + if ( 'diff' == $action ) { + $left_content = apply_filters( "_wp_post_revision_field_$field", $left_revision->$field, $field ); + $right_content = apply_filters( "_wp_post_revision_field_$field", $right_revision->$field, $field ); + if ( !$content = wp_text_diff( $left_content, $right_content ) ) + continue; // There is no difference between left and right + $identical = false; + } else { + add_filter( "_wp_post_revision_field_$field", 'htmlspecialchars' ); + $content = apply_filters( "_wp_post_revision_field_$field", $revision->$field, $field ); + } + ?> + + + + + + + + + + + + +
    + + +

    + +
    + +

    + + 'form-table', 'parent' => true, 'right' => $right, 'left' => $left ); +if ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) + $args['type'] = 'autosave'; + +wp_list_post_revisions( $post, $args ); + +?> + +
    + +' . sprintf( __( "The file 'wp-config.php' already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now." ), 'install.php' ) . '

    ' ); + +// Check if wp-config.php exists above the root directory but is not part of another install +if ( file_exists(ABSPATH . '../wp-config.php' ) && ! file_exists( ABSPATH . '../wp-settings.php' ) ) + wp_die( '

    ' . sprintf( __( "The file 'wp-config.php' already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now."), 'install.php' ) . '

    ' ); + +$step = isset( $_GET['step'] ) ? (int) $_GET['step'] : 0; + +/** + * Display setup wp-config.php file header. + * + * @ignore + * @since 2.3.0 + * @package WordPress + * @subpackage Installer_WP_Config + */ +function display_header() { + global $wp_version; + + header( 'Content-Type: text/html; charset=utf-8' ); +?> + +> + + +<?php _e( 'WordPress › Setup Configuration File' ); ?> + + + +> +

    WordPress

    + + +

    +
      +
    1. +
    2. +
    3. +
    4. +
    5. +
    +

    wp-config-sample.php in a text editor, fill in your information, and save it as wp-config.php." ); ?>

    +

    + +

    + +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    localhost does not work.' ); ?>
    + +

    +
    +

    ' . __( 'Try Again' ) . ''; + + if ( empty( $prefix ) ) + wp_die( __( 'ERROR: "Table Prefix" must not be empty.' . $tryagain_link ) ); + + // Validate $prefix: it can only contain letters, numbers and underscores. + if ( preg_match( '|[^a-z0-9_]|i', $prefix ) ) + wp_die( __( 'ERROR: "Table Prefix" can only contain numbers, letters, and underscores.' . $tryagain_link ) ); + + // Test the db connection. + /**#@+ + * @ignore + */ + define('DB_NAME', $dbname); + define('DB_USER', $uname); + define('DB_PASSWORD', $pwd); + define('DB_HOST', $dbhost); + /**#@-*/ + + // We'll fail here if the values are no good. + require_wp_db(); + if ( ! empty( $wpdb->error ) ) + wp_die( $wpdb->error->get_error_message() . $tryagain_link ); + + // Fetch or generate keys and salts. + $no_api = isset( $_POST['noapi'] ); + if ( ! $no_api ) { + require_once( ABSPATH . WPINC . '/class-http.php' ); + require_once( ABSPATH . WPINC . '/http.php' ); + wp_fix_server_vars(); + /**#@+ + * @ignore + */ + function get_bloginfo() { + return ( ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . str_replace( $_SERVER['PHP_SELF'], '/wp-admin/setup-config.php', '' ) ); + } + /**#@-*/ + $secret_keys = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); + } + + if ( $no_api || is_wp_error( $secret_keys ) ) { + $secret_keys = array(); + require_once( ABSPATH . WPINC . '/pluggable.php' ); + for ( $i = 0; $i < 8; $i++ ) { + $secret_keys[] = wp_generate_password( 64, true, true ); + } + } else { + $secret_keys = explode( "\n", wp_remote_retrieve_body( $secret_keys ) ); + foreach ( $secret_keys as $k => $v ) { + $secret_keys[$k] = substr( $v, 28, 64 ); + } + } + + $key = 0; + foreach ( $config_file as &$line ) { + if ( '$table_prefix =' == substr( $line, 0, 16 ) ) { + $line = '$table_prefix = \'' . addcslashes( $prefix, "\\'" ) . "';\r\n"; + continue; + } + + if ( ! preg_match( '/^define\(\'([A-Z_]+)\',([ ]+)/', $line, $match ) ) + continue; + + $constant = $match[1]; + $padding = $match[2]; + + switch ( $constant ) { + case 'DB_NAME' : + case 'DB_USER' : + case 'DB_PASSWORD' : + case 'DB_HOST' : + $line = "define('" . $constant . "'," . $padding . "'" . addcslashes( constant( $constant ), "\\'" ) . "');\r\n"; + break; + case 'AUTH_KEY' : + case 'SECURE_AUTH_KEY' : + case 'LOGGED_IN_KEY' : + case 'NONCE_KEY' : + case 'AUTH_SALT' : + case 'SECURE_AUTH_SALT' : + case 'LOGGED_IN_SALT' : + case 'NONCE_SALT' : + $line = "define('" . $constant . "'," . $padding . "'" . $secret_keys[$key++] . "');\r\n"; + break; + } + } + unset( $line ); + + if ( ! is_writable(ABSPATH) ) : + display_header(); +?> +

    wp-config.php file." ); ?>

    +

    wp-config.php manually and paste the following text into it.' ); ?>

    + +

    +

    + +

    + +

    + + + diff --git a/wp-admin/theme-editor.php b/wp-admin/theme-editor.php new file mode 100644 index 0000000..8eab075 --- /dev/null +++ b/wp-admin/theme-editor.php @@ -0,0 +1,245 @@ +'.__('You do not have sufficient permissions to edit templates for this site.').'

    '); + +$title = __("Edit Themes"); +$parent_file = 'themes.php'; + +get_current_screen()->add_help_tab( array( +'id' => 'overview', +'title' => __('Overview'), +'content' => + '

    ' . __('You can use the Theme Editor to edit the individual CSS and PHP files which make up your theme.') . '

    +

    ' . __('Begin by choosing a theme to edit from the dropdown menu and clicking Select. A list then appears of all the template files. Clicking once on any file name causes the file to appear in the large Editor box.') . '

    +

    ' . __('For PHP files, you can use the Documentation dropdown to select from functions recognized in that file. Lookup takes you to a web page with reference material about that particular function.') . '

    +

    ' . __('After typing in your edits, click Update File.') . '

    +

    ' . __('Advice: think very carefully about your site crashing if you are live-editing the theme currently in use.') . '

    +

    ' . __('Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a child theme instead.') . '

    ' . + ( is_network_admin() ? '

    ' . __('Any edits to files from this screen will be reflected on all sites in the network.') . '

    ' : '' ) +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Theme Development') . '

    ' . + '

    ' . __('Documentation on Using Themes') . '

    ' . + '

    ' . __('Documentation on Editing Files') . '

    ' . + '

    ' . __('Documentation on Template Tags') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +wp_reset_vars( array( 'action', 'error', 'file', 'theme' ) ); + +if ( $theme ) + $stylesheet = urldecode( $theme ); +else + $stylesheet = get_stylesheet(); + +$theme = wp_get_theme( $stylesheet ); + +if ( ! $theme->exists() ) + wp_die( __( 'The requested theme does not exist.' ) ); + +if ( $theme->errors() && 'theme_no_stylesheet' == $theme->errors()->get_error_code() ) + wp_die( __( 'The requested theme does not exist.' ) . ' ' . $theme->errors()->get_error_message() ); + +$allowed_files = $theme->get_files( 'php', 1 ); +$has_templates = ! empty( $allowed_files ); +$style_files = $theme->get_files( 'css' ); +$allowed_files['style.css'] = $style_files['style.css']; +$allowed_files += $style_files; + +if ( empty( $file ) ) { + $relative_file = 'style.css'; + $file = $allowed_files['style.css']; +} else { + $relative_file = urldecode( stripslashes( $file ) ); + $file = $theme->get_stylesheet_directory() . '/' . $relative_file; +} + +validate_file_to_edit( $file, $allowed_files ); +$scrollto = isset( $_REQUEST['scrollto'] ) ? (int) $_REQUEST['scrollto'] : 0; + +switch( $action ) { +case 'update': + check_admin_referer( 'edit-theme_' . $file . $stylesheet ); + $newcontent = stripslashes( $_POST['newcontent'] ); + $location = 'theme-editor.php?file=' . urlencode( $relative_file ) . '&theme=' . urlencode( $stylesheet ) . '&scrollto=' . $scrollto; + if ( is_writeable( $file ) ) { + //is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable + $f = fopen( $file, 'w+' ); + if ( $f !== false ) { + fwrite( $f, $newcontent ); + fclose( $f ); + $location .= '&updated=true'; + $theme->cache_delete(); + } + } + wp_redirect( $location ); + exit; +break; + +default: + + require_once( ABSPATH . 'wp-admin/admin-header.php' ); + + update_recently_edited( $file ); + + if ( ! is_file( $file ) ) + $error = true; + + $content = ''; + if ( ! $error && filesize( $file ) > 0 ) { + $f = fopen($file, 'r'); + $content = fread($f, filesize($file)); + + if ( '.php' == substr( $file, strrpos( $file, '.' ) ) ) { + $functions = wp_doc_link_parse( $content ); + + $docs_select = ''; + } + + $content = esc_textarea( $content ); + } + + ?> + +

    +(' . $file_show . ')'; +?> +
    + +

    + +
    +
    +

    display('Name'); if ( $description ) echo ': ' . $description; ?>

    +
    +
    +
    + + + +
    +
    +
    +
    +errors() ) + echo '

    ' . __( 'This theme is broken.' ) . ' ' . $theme->errors()->get_error_message() . '

    '; +?> +
    +parent() ) : +?> +

    + parent() ) : ?> +

    get_template() ) ) . '">' . $theme->parent()->display('Name') . '' ); ?>

    + +
      + $absolute_filename ) : + if ( 'style.css' == $filename ) + echo "\t
    \n\t

    " . _x( 'Styles', 'Theme stylesheets in theme editor' ) . "

    \n\t
      \n"; + + $file_description = get_file_description( $absolute_filename ); + if ( $file_description != basename( $filename ) ) + $file_description .= '
      (' . $filename . ')'; + + if ( $absolute_filename == $file ) + $file_description = '' . $file_description . ''; +?> +
    • + +
    + +
    +

    ' . __('Oops, no such file exists! Double check the name and try again, merci.') . '

    '; +else : ?> +
    + +
    + + + + +
    + +
    + + + +
    + + +
    + get_stylesheet() == get_template() ) : ?> +

    +

    + + '2' ) ); + else : ?> +

    the Codex for more information.'); ?>

    + +
    +
    + +
    +
    + +get_pagenum(); +$wp_list_table->prepare_items(); + +$title = __('Install Themes'); +$parent_file = 'themes.php'; +if ( !is_network_admin() ) + $submenu_file = 'themes.php'; + +wp_enqueue_script( 'theme-install' ); +wp_enqueue_script( 'theme' ); + +$body_id = $tab; + +do_action('install_themes_pre_' . $tab); //Used to override the general interface, Eg, install or theme information. + +$help_overview = + '

    ' . sprintf(__('You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the WordPress.org Theme Directory. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses.'), 'http://wordpress.org/extend/themes/') . '

    ' . + '

    ' . __('You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter. Alternately, you can browse the themes that are Featured, Newest, or Recently Updated. When you find a theme you like, you can preview it or install it.') . '

    ' . + '

    ' . __('You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme’s folder via FTP into your /wp-content/themes directory.') . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => $help_overview +) ); + +$help_installing = + '

    ' . __('Once you have generated a list of themes, you can preview and install any of them. Click on the thumbnail of the theme you’re interested in previewing. It will open up in a full-screen Preview page to give you a better idea of how that theme will look.') . '

    ' . + '

    ' . __('To install the theme so you can preview it with your site’s content and customize its theme options, click the "Install" button at the top of the left-hand pane. The theme files will be downloaded to your website automatically. When this is complete, the theme is now available for activation, which you can do by clicking the "Activate" link, or by navigating to your Installed Themes page and clicking the "Live Preview" link under any installed theme’s thumbnail image.') . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'installing', + 'title' => __('Previewing and Installing'), + 'content' => $help_installing +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Adding New Themes') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include(ABSPATH . 'wp-admin/admin-header.php'); +?> +
    + +

    + + + +views(); ?> + +
    + +
    +exists() || ! $theme->is_allowed() ) + wp_die( __( 'Cheatin’ uh?' ) ); + switch_theme( $theme->get_template(), $theme->get_stylesheet() ); + wp_redirect( admin_url('themes.php?activated=true') ); + exit; + } elseif ( 'delete' == $_GET['action'] ) { + check_admin_referer('delete-theme_' . $_GET['stylesheet']); + $theme = wp_get_theme( $_GET['stylesheet'] ); + if ( !current_user_can('delete_themes') || ! $theme->exists() ) + wp_die( __( 'Cheatin’ uh?' ) ); + delete_theme($_GET['stylesheet']); + wp_redirect( admin_url('themes.php?deleted=true') ); + exit; + } +} + +$wp_list_table->prepare_items(); + +$title = __('Manage Themes'); +$parent_file = 'themes.php'; + +if ( current_user_can( 'switch_themes' ) ) : + +$help_manage = '

    ' . __('Aside from the default theme included with your WordPress installation, themes are designed and developed by third parties.') . '

    ' . + '

    ' . __('You can see your active theme at the top of the screen. Below are the other themes you have installed that are not currently in use. You can see what your site would look like with one of these themes by clicking the Live Preview link (see "Previewing and Customizing" help tab). To change themes, click the Activate link.') . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => $help_manage +) ); + +if ( current_user_can( 'install_themes' ) ) { + if ( is_multisite() ) { + $help_install = '

    ' . __('Installing themes on Multisite can only be done from the Network Admin section.') . '

    '; + } else { + $help_install = '

    ' . sprintf( __('If you would like to see more themes to choose from, click on the “Install Themes” tab and you will be able to browse or search for additional themes from the WordPress.org Theme Directory. Themes in the WordPress.org Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they’re free!'), 'http://wordpress.org/extend/themes/' ) . '

    '; + } + + get_current_screen()->add_help_tab( array( + 'id' => 'adding-themes', + 'title' => __('Adding Themes'), + 'content' => $help_install + ) ); +} + +add_thickbox(); + +endif; // switch_themes + +if ( current_user_can( 'edit_theme_options' ) ) { + $help_customize = + '

    ' . __('Click on the "Live Preview" link under any theme to preview that theme and change theme options in a separate, full-screen view. Any installed theme can be previewed and customized in this way.') . '

    '. + '

    ' . __('The theme being previewed is fully interactive — navigate to different pages to see how the theme handles posts, archives, and other page templates.') . '

    ' . + '

    ' . __('In the left-hand pane you can edit the theme settings. The settings will differ, depending on what theme features the theme being previewed supports. To accept the new settings and activate the theme all in one step, click the "Save & Activate" button at the top of the left-hand pane.') . '

    ' . + '

    ' . __('When previewing on smaller monitors, you can use the "Collapse" icon at the bottom of the left-hand pane. This will hide the pane, giving you more room to preview your site in the new theme. To bring the pane back, click on the Collapse icon again.') . '

    '; + + get_current_screen()->add_help_tab( array( + 'id' => 'customize-preview-themes', + 'title' => __('Previewing and Customizing'), + 'content' => $help_customize + ) ); +} + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Using Themes') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +wp_enqueue_script( 'theme' ); +wp_enqueue_script( 'customize-loader' ); + +require_once('./admin-header.php'); +?> + +
    +

    + +

    + +

    + +

    Visit site.' ), home_url( '/' ) ); ?>

    + +

    widgets settings screen to configure them.'), admin_url( 'widgets.php' ) ); ?>

    +

    Visit site' ), home_url( '/' ) ); ?>

    +

    +get_screenshot(); +$class = $screenshot ? 'has-screenshot' : ''; + +$customize_title = sprintf( __( 'Customize “%s”' ), $ct->display('Name') ); + +?> +
    + + + + <?php esc_attr_e( 'Current theme preview' ); ?> + + + <?php esc_attr_e( 'Current theme preview' ); ?> + + +

    +

    + display('Name'); ?> +

    + +
    +
      +
    • display('Author') ); ?>
    • +
    • display('Version') ); ?>
    • +
    +

    display('Description'); ?>

    + +
    + + {$item[0]}"; + else + $options[] = "{$item[0]}"; + } else if ( current_user_can($item[1]) ) { + if ( file_exists(ABSPATH . 'wp-admin/' . $item[2]) ) { + $options[] = "{$item[0]}"; + } else { + $options[] = "{$item[0]}"; + } + } + } + } + + if ( $options || current_user_can( 'edit_theme_options' ) ) : + ?> +
    + + + + +
      + +
    • + +
    +
    + + +
    + +
    +'; + require( './admin-footer.php' ); + exit; +} +?> + +
    + +

    + +has_items() ) : ?> + + + +
    + +
    +

    + + + + $features ) : + $feature_name = esc_html( $feature_name ); ?> + +
    +
    + +
      + $feature ) : + $feature_name = $feature; + $feature_name = esc_html( $feature_name ); + $feature = esc_attr( $feature ); + ?> +
    1. + features ) ); ?>/> + +
    2. + +
    +
    + + +
    + 'filter-submit' ) ); ?> +   + +
    +
    +
    +
    +
    + + + +
    + +display(); ?> + +
    +
    + + true ) ) ) { +?> + +

    +

    + + + + + + + + + + "; + } +?> +
    " . $broken_theme->get('Name') ."" . $broken_theme->errors()->get_error_message() . "
    + +
    + + diff --git a/wp-admin/tools.php b/wp-admin/tools.php new file mode 100644 index 0000000..a036f28 --- /dev/null +++ b/wp-admin/tools.php @@ -0,0 +1,71 @@ +add_help_tab( array( + 'id' => 'press-this', + 'title' => __('Press This'), + 'content' => '

    ' . __('Press This is a bookmarklet that makes it easy to blog about something you come across on the web. You can use it to just grab a link, or to post an excerpt. Press This will even allow you to choose from images included on the page and use them in your post. Just drag the Press This link on this screen to your bookmarks bar in your browser, and you’ll be on your way to easier content creation. Clicking on it while on another website opens a popup window with all these options.') . '

    ', +) ); +get_current_screen()->add_help_tab( array( + 'id' => 'converter', + 'title' => __('Categories and Tags Converter'), + 'content' => '

    ' . __('Categories have hierarchy, meaning that you can nest sub-categories. Tags do not have hierarchy and cannot be nested. Sometimes people start out using one on their posts, then later realize that the other would work better for their content.' ) . '

    ' . + '

    ' . __( 'The Categories and Tags Converter link on this screen will take you to the Import screen, where that Converter is one of the plugins you can install. Once that plugin is installed, the Activate Plugin & Run Importer link will take you to a screen where you can choose to convert tags into categories or vice versa.' ) . '

    ', +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Tools') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +require_once('./admin-header.php'); + +?> +
    + +

    + + +
    +

    +

    + +

    +

    +

    + +
    +cap->manage_terms) || current_user_can($tags->cap->manage_terms) ) : ?> +
    +

    +

    Categories and Tags Converter available from the Import screen.'), 'import.php' ); ?>

    +
    + +
    +locale && 'en_US' == get_locale() ) ? + $update->current : sprintf("%s–%s", $update->current, $update->locale); + $current = false; + if ( !isset($update->response) || 'latest' == $update->response ) + $current = true; + $submit = __('Update Now'); + $form_action = 'update-core.php?action=do-core-upgrade'; + $php_version = phpversion(); + $mysql_version = $wpdb->db_version(); + $show_buttons = true; + if ( 'development' == $update->response ) { + $message = __('You are using a development version of WordPress. You can update to the latest nightly build automatically or download the nightly build and install it manually:'); + $download = __('Download nightly build'); + } else { + if ( $current ) { + $message = sprintf(__('You have the latest version of WordPress. You do not need to update. However, if you want to re-install version %s, you can do so automatically or download the package and re-install manually:'), $version_string); + $submit = __('Re-install Now'); + $form_action = 'update-core.php?action=do-core-reinstall'; + } else { + $php_compat = version_compare( $php_version, $update->php_version, '>=' ); + if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) ) + $mysql_compat = true; + else + $mysql_compat = version_compare( $mysql_version, $update->mysql_version, '>=' ); + + if ( !$mysql_compat && !$php_compat ) + $message = sprintf( __('You cannot update because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $update->current, $update->php_version, $update->mysql_version, $php_version, $mysql_version ); + elseif ( !$php_compat ) + $message = sprintf( __('You cannot update because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.'), $update->current, $update->php_version, $php_version ); + elseif ( !$mysql_compat ) + $message = sprintf( __('You cannot update because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'), $update->current, $update->mysql_version, $mysql_version ); + else + $message = sprintf(__('You can update to WordPress %2$s automatically or download the package and install it manually:'), $update->current, $version_string); + if ( !$mysql_compat || !$php_compat ) + $show_buttons = false; + } + $download = sprintf(__('Download %s'), $version_string); + } + + echo '

    '; + echo $message; + echo '

    '; + echo '
    '; + wp_nonce_field('upgrade-core'); + echo '

    '; + echo ''; + echo ''; + if ( $show_buttons ) { + if ( $first_pass ) { + submit_button( $submit, $current ? 'button' : 'primary', 'upgrade', false ); + $first_pass = false; + } else { + submit_button( $submit, 'button', 'upgrade', false ); + } + echo ' ' . $download . ' '; + } + if ( 'en_US' != $update->locale ) + if ( !isset( $update->dismissed ) || !$update->dismissed ) + submit_button( __('Hide this update'), 'button', 'dismiss', false ); + else + submit_button( __('Bring back this update'), 'button', 'undismiss', false ); + echo '

    '; + if ( 'en_US' != $update->locale && ( !isset($wp_local_package) || $wp_local_package != $update->locale ) ) + echo '

    '.__('This localized version contains both the translation and various other localization fixes. You can skip upgrading if you want to keep your current translation.').'

    '; + else if ( 'en_US' == $update->locale && get_locale() != 'en_US' ) { + echo '

    '.sprintf( __('You are about to install WordPress %s in English (US). There is a chance this update will break your translation. You may prefer to wait for the localized version to be released.'), $update->response != 'development' ? $update->current : '' ).'

    '; + } + echo '
    '; + +} + +function dismissed_updates() { + $dismissed = get_core_updates( array( 'dismissed' => true, 'available' => false ) ); + if ( $dismissed ) { + + $show_text = esc_js(__('Show hidden updates')); + $hide_text = esc_js(__('Hide hidden updates')); + ?> + + '.__('Show hidden updates').'

    '; + echo '
      '; + foreach( (array) $dismissed as $update) { + echo '
    • '; + list_core_update( $update ); + echo '
    • '; + } + echo '
    '; + } +} + +/** + * Display upgrade WordPress for downloading latest or upgrading automatically form. + * + * @since 2.7 + * + * @return null + */ +function core_upgrade_preamble() { + global $upgrade_error, $wp_version; + + $updates = get_core_updates(); +?> +
    + +

    +

    '; + if ( $upgrade_error == 'themes' ) + _e('Please select one or more themes to update.'); + else + _e('Please select one or more plugins to update.'); + echo '

    '; + } + + echo '

    '; + /* translators: %1 date, %2 time. */ + printf( __('Last checked on %1$s at %2$s.'), date_i18n( get_option( 'date_format' ) ), date_i18n( get_option( 'time_format' ) ) ); + echo '   ' . __( 'Check Again' ) . ''; + echo '

    '; + + if ( !isset($updates[0]->response) || 'latest' == $updates[0]->response ) { + echo '

    '; + _e('You have the latest version of WordPress.'); + echo '

    '; + } else { + echo '

    '; + _e('Important: before updating, please back up your database and files. For help with updates, visit the Updating WordPress Codex page.'); + echo '

    '; + + echo '

    '; + _e( 'An updated version of WordPress is available.' ); + echo '

    '; + } + + echo '
      '; + $alternate = true; + foreach( (array) $updates as $update ) { + echo '
    • '; + list_core_update( $update ); + echo '
    • '; + } + echo '
    '; + if ( $updates ) { + echo '

    ' . __( 'While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, your site will return to normal.' ) . '

    '; + } else { + list( $normalized_version ) = explode( '-', $wp_version ); + echo '

    ' . sprintf( __( 'Learn more about WordPress %s.' ), esc_url( self_admin_url( 'about.php' ) ), $normalized_version ) . '

    '; + } + dismissed_updates(); + + if ( current_user_can( 'update_plugins' ) ) + list_plugin_updates(); + if ( current_user_can( 'update_themes' ) ) + list_theme_updates(); + do_action('core_upgrade_preamble'); + echo ''; +} + +function list_plugin_updates() { + global $wp_version; + + $cur_wp_version = preg_replace('/-.*$/', '', $wp_version); + + require_once(ABSPATH . 'wp-admin/includes/plugin-install.php'); + $plugins = get_plugin_updates(); + if ( empty( $plugins ) ) { + echo '

    ' . __( 'Plugins' ) . '

    '; + echo '

    ' . __( 'Your plugins are all up to date.' ) . '

    '; + return; + } + $form_action = 'update-core.php?action=do-plugin-upgrade'; + + $core_updates = get_core_updates(); + if ( !isset($core_updates[0]->response) || 'latest' == $core_updates[0]->response || 'development' == $core_updates[0]->response || version_compare( $core_updates[0]->current, $cur_wp_version, '=') ) + $core_update_version = false; + else + $core_update_version = $core_updates[0]->current; + ?> +

    +

    +
    + +

    + + + + + + + + + + + + + + + + $plugin_data) { + $info = plugins_api('plugin_information', array('slug' => $plugin_data->update->slug )); + // Get plugin compat for running version of WordPress. + if ( isset($info->tested) && version_compare($info->tested, $cur_wp_version, '>=') ) { + $compat = '
    ' . sprintf(__('Compatibility with WordPress %1$s: 100%% (according to its author)'), $cur_wp_version); + } elseif ( isset($info->compatibility[$cur_wp_version][$plugin_data->update->new_version]) ) { + $compat = $info->compatibility[$cur_wp_version][$plugin_data->update->new_version]; + $compat = '
    ' . sprintf(__('Compatibility with WordPress %1$s: %2$d%% (%3$d "works" votes out of %4$d total)'), $cur_wp_version, $compat[0], $compat[2], $compat[1]); + } else { + $compat = '
    ' . sprintf(__('Compatibility with WordPress %1$s: Unknown'), $cur_wp_version); + } + // Get plugin compat for updated version of WordPress. + if ( $core_update_version ) { + if ( isset($info->compatibility[$core_update_version][$plugin_data->update->new_version]) ) { + $update_compat = $info->compatibility[$core_update_version][$plugin_data->update->new_version]; + $compat .= '
    ' . sprintf(__('Compatibility with WordPress %1$s: %2$d%% (%3$d "works" votes out of %4$d total)'), $core_update_version, $update_compat[0], $update_compat[2], $update_compat[1]); + } else { + $compat .= '
    ' . sprintf(__('Compatibility with WordPress %1$s: Unknown'), $core_update_version); + } + } + // Get the upgrade notice for the new plugin version. + if ( isset($plugin_data->update->upgrade_notice) ) { + $upgrade_notice = '
    ' . strip_tags($plugin_data->update->upgrade_notice); + } else { + $upgrade_notice = ''; + } + + $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $plugin_data->update->slug . '§ion=changelog&TB_iframe=true&width=640&height=662'); + $details_text = sprintf(__('View version %1$s details'), $plugin_data->update->new_version); + $details = sprintf('%3$s.', esc_url($details_url), esc_attr($plugin_data->Name), $details_text); + + echo " + + + + "; + } +?> + +

    {$plugin_data->Name}
    " . sprintf(__('You have version %1$s installed. Update to %2$s.'), $plugin_data->Version, $plugin_data->update->new_version) . ' ' . $details . $compat . $upgrade_notice . "

    +

    +
    +' . __( 'Themes' ) . ''; + echo '

    ' . __( 'Your themes are all up to date.' ) . '

    '; + return; + } + + $form_action = 'update-core.php?action=do-theme-upgrade'; + +?> +

    +

    +

    Please Note: Any customizations you have made to theme files will be lost. Please consider using child themes for modifications.'), _x('http://codex.wordpress.org/Child_Themes', 'Link used in suggestion to use child themes in GUU') ); ?>

    +
    + +

    + + + + + + + + + + + + + + + + $theme ) { + echo " + + + + "; + } +?> + +
    " . $theme->display('Name') . ' ' . sprintf( __( 'You have version %1$s installed. Update to %2$s.' ), $theme->display('Version'), $theme->update['new_version'] ) . "
    +

    +
    + +
    + +

    +errors->get_error_code() ) { + foreach ( $wp_filesystem->errors->get_error_messages() as $message ) + show_message($message); + echo '
    '; + return; + } + + if ( $reinstall ) + $update->response = 'reinstall'; + + $result = wp_update_core($update, 'show_message'); + + if ( is_wp_error($result) ) { + show_message($result); + if ('up_to_date' != $result->get_error_code() ) + show_message( __('Installation Failed') ); + echo ''; + return; + } + + show_message( __('WordPress updated successfully') ); + show_message( '' . sprintf( __( 'Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click here.' ), $result, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '' ); + show_message( '' . sprintf( __( 'Welcome to WordPress %1$s. Learn more.' ), $result, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '' ); + ?> + + + add_help_tab( array( +'id' => 'overview', +'title' => __('Overview'), +'content' => + '

    ' . __('This screen lets you update to the latest version of WordPress as well as update your themes and plugins from the WordPress.org repository. When updates are available, the number of available updates will appear in a bubble on the left hand menu as a notification.') . '

    ' . + '

    ' . __('It is very important to keep your WordPress installation up to date for security reasons, so when you see a number appear, make sure you take the time to update, which is an easy process.') . '

    ' +) ); + +get_current_screen()->add_help_tab( array( +'id' => 'how-to-update', +'title' => __('How to Update'), +'content' => + '

    ' . __('Updating your WordPress installation is a simple one-click procedure; just click on the Update button when it says a new version is available.') . '

    ' . + '

    ' . __('To update themes or plugins from this screen, use the checkboxes to make your selection and click on the appropriate Update button. Check the box at the top of the Themes or Plugins section to select all and update them all at once.') . '

    ' +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Updating WordPress') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +if ( 'upgrade-core' == $action ) { + + wp_version_check(); + require_once(ABSPATH . 'wp-admin/admin-header.php'); + core_upgrade_preamble(); + include(ABSPATH . 'wp-admin/admin-footer.php'); + +} elseif ( 'do-core-upgrade' == $action || 'do-core-reinstall' == $action ) { + check_admin_referer('upgrade-core'); + + // do the (un)dismiss actions before headers, + // so that they can redirect + if ( isset( $_POST['dismiss'] ) ) + do_dismiss_core_update(); + elseif ( isset( $_POST['undismiss'] ) ) + do_undismiss_core_update(); + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + if ( 'do-core-reinstall' == $action ) + $reinstall = true; + else + $reinstall = false; + + if ( isset( $_POST['upgrade'] ) ) + do_core_upgrade($reinstall); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + +} elseif ( 'do-plugin-upgrade' == $action ) { + + if ( ! current_user_can( 'update_plugins' ) ) + wp_die( __( 'You do not have sufficient permissions to update this site.' ) ); + + check_admin_referer('upgrade-core'); + + if ( isset( $_GET['plugins'] ) ) { + $plugins = explode( ',', $_GET['plugins'] ); + } elseif ( isset( $_POST['checked'] ) ) { + $plugins = (array) $_POST['checked']; + } else { + wp_redirect( admin_url('update-core.php') ); + exit; + } + + $url = 'update.php?action=update-selected&plugins=' . urlencode(implode(',', $plugins)); + $url = wp_nonce_url($url, 'bulk-update-plugins'); + + $title = __('Update Plugins'); + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + echo '
    '; + screen_icon('plugins'); + echo '

    ' . esc_html__('Update Plugins') . '

    '; + echo ""; + echo '
    '; + include(ABSPATH . 'wp-admin/admin-footer.php'); + +} elseif ( 'do-theme-upgrade' == $action ) { + + if ( ! current_user_can( 'update_themes' ) ) + wp_die( __( 'You do not have sufficient permissions to update this site.' ) ); + + check_admin_referer('upgrade-core'); + + if ( isset( $_GET['themes'] ) ) { + $themes = explode( ',', $_GET['themes'] ); + } elseif ( isset( $_POST['checked'] ) ) { + $themes = (array) $_POST['checked']; + } else { + wp_redirect( admin_url('update-core.php') ); + exit; + } + + $url = 'update.php?action=update-selected-themes&themes=' . urlencode(implode(',', $themes)); + $url = wp_nonce_url($url, 'bulk-update-themes'); + + $title = __('Update Themes'); + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + echo '
    '; + screen_icon('themes'); + echo '

    ' . esc_html__('Update Themes') . '

    '; + echo ""; + echo '
    '; + include(ABSPATH . 'wp-admin/admin-footer.php'); + +} else { + do_action('update-core-custom_' . $action); +} \ No newline at end of file diff --git a/wp-admin/update.php b/wp-admin/update.php new file mode 100644 index 0000000..4fdf206 --- /dev/null +++ b/wp-admin/update.php @@ -0,0 +1,257 @@ +bulk_upgrade( $plugins ); + + iframe_footer(); + + } elseif ( 'upgrade-plugin' == $action ) { + if ( ! current_user_can('update_plugins') ) + wp_die(__('You do not have sufficient permissions to update plugins for this site.')); + + check_admin_referer('upgrade-plugin_' . $plugin); + + $title = __('Update Plugin'); + $parent_file = 'plugins.php'; + $submenu_file = 'plugins.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $nonce = 'upgrade-plugin_' . $plugin; + $url = 'update.php?action=upgrade-plugin&plugin=' . $plugin; + + $upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact('title', 'nonce', 'url', 'plugin') ) ); + $upgrader->upgrade($plugin); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + } elseif ('activate-plugin' == $action ) { + if ( ! current_user_can('update_plugins') ) + wp_die(__('You do not have sufficient permissions to update plugins for this site.')); + + check_admin_referer('activate-plugin_' . $plugin); + if ( ! isset($_GET['failure']) && ! isset($_GET['success']) ) { + wp_redirect( admin_url('update.php?action=activate-plugin&failure=true&plugin=' . $plugin . '&_wpnonce=' . $_GET['_wpnonce']) ); + activate_plugin( $plugin, '', ! empty( $_GET['networkwide'] ), true ); + wp_redirect( admin_url('update.php?action=activate-plugin&success=true&plugin=' . $plugin . '&_wpnonce=' . $_GET['_wpnonce']) ); + die(); + } + iframe_header( __('Plugin Reactivation'), true ); + if ( isset($_GET['success']) ) + echo '

    ' . __('Plugin reactivated successfully.') . '

    '; + + if ( isset($_GET['failure']) ){ + echo '

    ' . __('Plugin failed to reactivate due to a fatal error.') . '

    '; + + error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR ); + @ini_set('display_errors', true); //Ensure that Fatal errors are displayed. + include(WP_PLUGIN_DIR . '/' . $plugin); + } + iframe_footer(); + } elseif ( 'install-plugin' == $action ) { + + if ( ! current_user_can('install_plugins') ) + wp_die(__('You do not have sufficient permissions to install plugins for this site.')); + + include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; //for plugins_api.. + + check_admin_referer('install-plugin_' . $plugin); + $api = plugins_api('plugin_information', array('slug' => $plugin, 'fields' => array('sections' => false) ) ); //Save on a bit of bandwidth. + + if ( is_wp_error($api) ) + wp_die($api); + + $title = __('Plugin Install'); + $parent_file = 'plugins.php'; + $submenu_file = 'plugin-install.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $title = sprintf( __('Installing Plugin: %s'), $api->name . ' ' . $api->version ); + $nonce = 'install-plugin_' . $plugin; + $url = 'update.php?action=install-plugin&plugin=' . $plugin; + if ( isset($_GET['from']) ) + $url .= '&from=' . urlencode(stripslashes($_GET['from'])); + + $type = 'web'; //Install plugin type, From Web or an Upload. + + $upgrader = new Plugin_Upgrader( new Plugin_Installer_Skin( compact('title', 'url', 'nonce', 'plugin', 'api') ) ); + $upgrader->install($api->download_link); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + } elseif ( 'upload-plugin' == $action ) { + + if ( ! current_user_can('install_plugins') ) + wp_die(__('You do not have sufficient permissions to install plugins for this site.')); + + check_admin_referer('plugin-upload'); + + $file_upload = new File_Upload_Upgrader('pluginzip', 'package'); + + $title = __('Upload Plugin'); + $parent_file = 'plugins.php'; + $submenu_file = 'plugin-install.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $title = sprintf( __('Installing Plugin from uploaded file: %s'), basename( $file_upload->filename ) ); + $nonce = 'plugin-upload'; + $url = add_query_arg(array('package' => $file_upload->id), 'update.php?action=upload-plugin'); + $type = 'upload'; //Install plugin type, From Web or an Upload. + + $upgrader = new Plugin_Upgrader( new Plugin_Installer_Skin( compact('type', 'title', 'nonce', 'url') ) ); + $result = $upgrader->install( $file_upload->package ); + + if ( $result || is_wp_error($result) ) + $file_upload->cleanup(); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + } elseif ( 'upgrade-theme' == $action ) { + + if ( ! current_user_can('update_themes') ) + wp_die(__('You do not have sufficient permissions to update themes for this site.')); + + check_admin_referer('upgrade-theme_' . $theme); + + wp_enqueue_script( 'customize-loader' ); + + $title = __('Update Theme'); + $parent_file = 'themes.php'; + $submenu_file = 'themes.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $nonce = 'upgrade-theme_' . $theme; + $url = 'update.php?action=upgrade-theme&theme=' . $theme; + + $upgrader = new Theme_Upgrader( new Theme_Upgrader_Skin( compact('title', 'nonce', 'url', 'theme') ) ); + $upgrader->upgrade($theme); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + } elseif ( 'update-selected-themes' == $action ) { + if ( ! current_user_can( 'update_themes' ) ) + wp_die( __( 'You do not have sufficient permissions to update themes for this site.' ) ); + + check_admin_referer( 'bulk-update-themes' ); + + if ( isset( $_GET['themes'] ) ) + $themes = explode( ',', stripslashes($_GET['themes']) ); + elseif ( isset( $_POST['checked'] ) ) + $themes = (array) $_POST['checked']; + else + $themes = array(); + + $themes = array_map('urldecode', $themes); + + $url = 'update.php?action=update-selected-themes&themes=' . urlencode(implode(',', $themes)); + $nonce = 'bulk-update-themes'; + + wp_enqueue_script('jquery'); + iframe_header(); + + $upgrader = new Theme_Upgrader( new Bulk_Theme_Upgrader_Skin( compact( 'nonce', 'url' ) ) ); + $upgrader->bulk_upgrade( $themes ); + + iframe_footer(); + } elseif ( 'install-theme' == $action ) { + + if ( ! current_user_can('install_themes') ) + wp_die(__('You do not have sufficient permissions to install themes for this site.')); + + include_once ABSPATH . 'wp-admin/includes/theme-install.php'; //for themes_api.. + + check_admin_referer('install-theme_' . $theme); + $api = themes_api('theme_information', array('slug' => $theme, 'fields' => array('sections' => false, 'tags' => false) ) ); //Save on a bit of bandwidth. + + if ( is_wp_error($api) ) + wp_die($api); + + wp_enqueue_script( 'customize-loader' ); + + $title = __('Install Themes'); + $parent_file = 'themes.php'; + $submenu_file = 'themes.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $title = sprintf( __('Installing Theme: %s'), $api->name . ' ' . $api->version ); + $nonce = 'install-theme_' . $theme; + $url = 'update.php?action=install-theme&theme=' . $theme; + $type = 'web'; //Install theme type, From Web or an Upload. + + $upgrader = new Theme_Upgrader( new Theme_Installer_Skin( compact('title', 'url', 'nonce', 'plugin', 'api') ) ); + $upgrader->install($api->download_link); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + } elseif ( 'upload-theme' == $action ) { + + if ( ! current_user_can('install_themes') ) + wp_die(__('You do not have sufficient permissions to install themes for this site.')); + + check_admin_referer('theme-upload'); + + $file_upload = new File_Upload_Upgrader('themezip', 'package'); + + wp_enqueue_script( 'customize-loader' ); + + $title = __('Upload Theme'); + $parent_file = 'themes.php'; + $submenu_file = 'theme-install.php'; + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $title = sprintf( __('Installing Theme from uploaded file: %s'), basename( $file_upload->filename ) ); + $nonce = 'theme-upload'; + $url = add_query_arg(array('package' => $file_upload->id), 'update.php?action=upload-theme'); + $type = 'upload'; //Install plugin type, From Web or an Upload. + + $upgrader = new Theme_Upgrader( new Theme_Installer_Skin( compact('type', 'title', 'nonce', 'url') ) ); + $result = $upgrader->install( $file_upload->package ); + + if ( $result || is_wp_error($result) ) + $file_upload->cleanup(); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + } else { + do_action('update-custom_' . $action); + } +} diff --git a/wp-admin/upgrade-functions.php b/wp-admin/upgrade-functions.php new file mode 100644 index 0000000..080d74d --- /dev/null +++ b/wp-admin/upgrade-functions.php @@ -0,0 +1,12 @@ +db_version(); +$php_compat = version_compare( $php_version, $required_php_version, '>=' ); +if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) ) + $mysql_compat = true; +else + $mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ); + +@header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); +?> + +> + + + <?php _e( 'WordPress › Update' ); ?> + + + +

    WordPress

    + + + +

    +

    +

    + +WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version ); + elseif ( !$php_compat ) + printf( __('You cannot update because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.'), $wp_version, $required_php_version, $php_version ); + elseif ( !$mysql_compat ) + printf( __('You cannot update because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version ); +?> + +

    +

    +

    +

    + +

    +

    +

    + + + + + + diff --git a/wp-admin/upload.php b/wp-admin/upload.php new file mode 100644 index 0000000..d172327 --- /dev/null +++ b/wp-admin/upload.php @@ -0,0 +1,248 @@ +get_pagenum(); + +// Handle bulk actions +$doaction = $wp_list_table->current_action(); + +if ( $doaction ) { + check_admin_referer('bulk-media'); + + if ( 'delete_all' == $doaction ) { + $post_ids = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_type='attachment' AND post_status = 'trash'" ); + $doaction = 'delete'; + } elseif ( isset( $_REQUEST['media'] ) ) { + $post_ids = $_REQUEST['media']; + } elseif ( isset( $_REQUEST['ids'] ) ) { + $post_ids = explode( ',', $_REQUEST['ids'] ); + } + + $location = 'upload.php'; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'upload.php' ) ) + $location = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'message', 'ids', 'posted' ), $referer ); + } + + switch ( $doaction ) { + case 'find_detached': + if ( !current_user_can('edit_posts') ) + wp_die( __('You are not allowed to scan for lost attachments.') ); + + $lost = $wpdb->get_col( " + SELECT ID FROM $wpdb->posts + WHERE post_type = 'attachment' AND post_parent > '0' + AND post_parent NOT IN ( + SELECT ID FROM $wpdb->posts + WHERE post_type NOT IN ( 'attachment', '" . join( "', '", get_post_types( array( 'public' => false ) ) ) . "' ) + ) + " ); + + $_REQUEST['detached'] = 1; + break; + case 'attach': + $parent_id = (int) $_REQUEST['found_post_id']; + if ( !$parent_id ) + return; + + $parent = &get_post( $parent_id ); + if ( !current_user_can( 'edit_post', $parent_id ) ) + wp_die( __( 'You are not allowed to edit this post.' ) ); + + $attach = array(); + foreach ( (array) $_REQUEST['media'] as $att_id ) { + $att_id = (int) $att_id; + + if ( !current_user_can( 'edit_post', $att_id ) ) + continue; + + $attach[] = $att_id; + clean_attachment_cache( $att_id ); + } + + if ( ! empty( $attach ) ) { + $attach = implode( ',', $attach ); + $attached = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_parent = %d WHERE post_type = 'attachment' AND ID IN ( $attach )", $parent_id ) ); + } + + if ( isset( $attached ) ) { + $location = 'upload.php'; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'upload.php' ) ) + $location = $referer; + } + + $location = add_query_arg( array( 'attached' => $attached ) , $location ); + wp_redirect( $location ); + exit; + } + break; + case 'trash': + if ( !isset( $post_ids ) ) + break; + foreach ( (array) $post_ids as $post_id ) { + if ( !current_user_can( 'delete_post', $post_id ) ) + wp_die( __( 'You are not allowed to move this post to the trash.' ) ); + + if ( !wp_trash_post( $post_id ) ) + wp_die( __( 'Error in moving to trash...' ) ); + } + $location = add_query_arg( array( 'trashed' => count( $post_ids ), 'ids' => join( ',', $post_ids ) ), $location ); + break; + case 'untrash': + if ( !isset( $post_ids ) ) + break; + foreach ( (array) $post_ids as $post_id ) { + if ( !current_user_can( 'delete_post', $post_id ) ) + wp_die( __( 'You are not allowed to move this post out of the trash.' ) ); + + if ( !wp_untrash_post( $post_id ) ) + wp_die( __( 'Error in restoring from trash...' ) ); + } + $location = add_query_arg( 'untrashed', count( $post_ids ), $location ); + break; + case 'delete': + if ( !isset( $post_ids ) ) + break; + foreach ( (array) $post_ids as $post_id_del ) { + if ( !current_user_can( 'delete_post', $post_id_del ) ) + wp_die( __( 'You are not allowed to delete this post.' ) ); + + if ( !wp_delete_attachment( $post_id_del ) ) + wp_die( __( 'Error in deleting...' ) ); + } + $location = add_query_arg( 'deleted', count( $post_ids ), $location ); + break; + } + + wp_redirect( $location ); + exit; +} elseif ( ! empty( $_GET['_wp_http_referer'] ) ) { + wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) ); + exit; +} + +$wp_list_table->prepare_items(); + +$title = __('Media Library'); +$parent_file = 'upload.php'; + +wp_enqueue_script( 'wp-ajax-response' ); +wp_enqueue_script( 'jquery-ui-draggable' ); +wp_enqueue_script( 'media' ); + +add_screen_option( 'per_page', array('label' => _x( 'Media items', 'items per page (screen options)' )) ); + +get_current_screen()->add_help_tab( array( +'id' => 'overview', +'title' => __('Overview'), +'content' => + '

    ' . __( 'All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first. You can use the Screen Options tab to customize the display of this screen.' ) . '

    ' . + '

    ' . __( 'You can narrow the list by file type/status using the text link filters at the top of the screen. You also can refine the list by date using the dropdown menu above the media table.' ) . '

    ' +) ); +get_current_screen()->add_help_tab( array( +'id' => 'actions-links', +'title' => __('Available Actions'), +'content' => + '

    ' . __( 'Hovering over a row reveals action links: Edit, Delete Permanently, and View. Clicking Edit or on the media file’s name displays a simple screen to edit that individual file’s metadata. Clicking Delete Permanently will delete the file from the media library (as well as from any posts to which it is currently attached). View will take you to the display page for that file.' ) . '

    ' +) ); +get_current_screen()->add_help_tab( array( +'id' => 'attaching-files', +'title' => __('Attaching Files'), +'content' => + '

    ' . __( 'If a media file has not been attached to any post, you will see that in the Attached To column, and can click on Attach File to launch a small popup that will allow you to search for a post and attach the file.' ) . '

    ' +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __( 'For more information:' ) . '

    ' . + '

    ' . __( 'Documentation on Media Library' ) . '

    ' . + '

    ' . __( 'Support Forums' ) . '

    ' +); + +require_once('./admin-header.php'); +?> + +
    + +

    + + ' . __('Search results for “%s”') . '', get_search_query() ); ?> +

    + +' . __('Undo') . ''; + $_SERVER['REQUEST_URI'] = remove_query_arg(array('trashed'), $_SERVER['REQUEST_URI']); +} + +if ( ! empty( $_GET['untrashed'] ) && $untrashed = absint( $_GET['untrashed'] ) ) { + $message = sprintf( _n( 'Media attachment restored from the trash.', '%d media attachments restored from the trash.', $untrashed ), number_format_i18n( $_GET['untrashed'] ) ); + $_SERVER['REQUEST_URI'] = remove_query_arg(array('untrashed'), $_SERVER['REQUEST_URI']); +} + +$messages[1] = __('Media attachment updated.'); +$messages[2] = __('Media permanently deleted.'); +$messages[3] = __('Error saving media attachment.'); +$messages[4] = __('Media moved to the trash.') . ' ' . __('Undo') . ''; +$messages[5] = __('Media restored from the trash.'); + +if ( ! empty( $_GET['message'] ) && isset( $messages[ $_GET['message'] ] ) ) { + $message = $messages[ $_GET['message'] ]; + $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']); +} + +if ( !empty($message) ) { ?> +

    + + +views(); ?> + +
    + +search_box( __( 'Search Media' ), 'media' ); ?> + +display(); ?> + +
    + +
    + +
    +
    + +ID ) ); + +if ( ! $user_id && IS_PROFILE_PAGE ) + $user_id = $current_user->ID; +elseif ( ! $user_id && ! IS_PROFILE_PAGE ) + wp_die(__( 'Invalid user ID.' ) ); +elseif ( ! get_userdata( $user_id ) ) + wp_die( __('Invalid user ID.') ); + +wp_enqueue_script('user-profile'); + +$title = IS_PROFILE_PAGE ? __('Profile') : __('Edit User'); +if ( current_user_can('edit_users') && !IS_PROFILE_PAGE ) + $submenu_file = 'users.php'; +else + $submenu_file = 'profile.php'; + +if ( current_user_can('edit_users') && !is_user_admin() ) + $parent_file = 'users.php'; +else + $parent_file = 'profile.php'; + +$profile_help = '

    ' . __('Your profile contains information about you (your “account”) as well as some personal options related to using WordPress.') . '

    ' . + '

    ' . __('You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things. You can hide the Toolbar (formerly called the Admin Bar) from the front end of your site, however it cannot be disabled on the admin screens.') . '

    ' . + '

    ' . __('Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts.') . '

    ' . + '

    ' . __('Required fields are indicated; the rest are optional. Profile information will only be displayed if your theme is set up to do so.') . '

    ' . + '

    ' . __('Remember to click the Update Profile button when you are finished.') . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => $profile_help, +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on User Profiles') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +$wp_http_referer = remove_query_arg(array('update', 'delete_count'), stripslashes($wp_http_referer)); + +$user_can_edit = current_user_can( 'edit_posts' ) || current_user_can( 'edit_pages' ); + +/** + * Optional SSL preference that can be turned on by hooking to the 'personal_options' action. + * + * @since 2.7.0 + * + * @param object $user User data object + */ +function use_ssl_preference($user) { +?> + + + + +ID && ! apply_filters( 'enable_edit_any_user_configuration', true ) ) + wp_die( __( 'You do not have permission to edit this user.' ) ); + +// Execute confirmed email change. See send_confirmation_on_profile_email(). +if ( is_multisite() && IS_PROFILE_PAGE && isset( $_GET[ 'newuseremail' ] ) && $current_user->ID ) { + $new_email = get_option( $current_user->ID . '_new_email' ); + if ( $new_email[ 'hash' ] == $_GET[ 'newuseremail' ] ) { + $user->ID = $current_user->ID; + $user->user_email = esc_html( trim( $new_email[ 'newemail' ] ) ); + if ( $wpdb->get_var( $wpdb->prepare( "SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", $current_user->user_login ) ) ) + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $user->user_email, $current_user->user_login ) ); + wp_update_user( get_object_vars( $user ) ); + delete_option( $current_user->ID . '_new_email' ); + wp_redirect( add_query_arg( array('updated' => 'true'), self_admin_url( 'profile.php' ) ) ); + die(); + } +} elseif ( is_multisite() && IS_PROFILE_PAGE && !empty( $_GET['dismiss'] ) && $current_user->ID . '_new_email' == $_GET['dismiss'] ) { + delete_option( $current_user->ID . '_new_email' ); + wp_redirect( add_query_arg( array('updated' => 'true'), self_admin_url( 'profile.php' ) ) ); + die(); +} + +switch ($action) { +case 'update': + +check_admin_referer('update-user_' . $user_id); + +if ( !current_user_can('edit_user', $user_id) ) + wp_die(__('You do not have permission to edit this user.')); + +if ( IS_PROFILE_PAGE ) + do_action('personal_options_update', $user_id); +else + do_action('edit_user_profile_update', $user_id); + +if ( !is_multisite() ) { + $errors = edit_user($user_id); +} else { + $user = get_userdata( $user_id ); + + // Update the email address in signups, if present. + if ( $user->user_login && isset( $_POST[ 'email' ] ) && is_email( $_POST[ 'email' ] ) && $wpdb->get_var( $wpdb->prepare( "SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", $user->user_login ) ) ) + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $_POST[ 'email' ], $user_login ) ); + + // WPMU must delete the user from the current blog if WP added him after editing. + $delete_role = false; + $blog_prefix = $wpdb->get_blog_prefix(); + if ( $user_id != $current_user->ID ) { + $cap = $wpdb->get_var( "SELECT meta_value FROM {$wpdb->usermeta} WHERE user_id = '{$user_id}' AND meta_key = '{$blog_prefix}capabilities' AND meta_value = 'a:0:{}'" ); + if ( !is_network_admin() && null == $cap && $_POST[ 'role' ] == '' ) { + $_POST[ 'role' ] = 'contributor'; + $delete_role = true; + } + } + if ( !isset( $errors ) || ( isset( $errors ) && is_object( $errors ) && false == $errors->get_error_codes() ) ) + $errors = edit_user($user_id); + if ( $delete_role ) // stops users being added to current blog when they are edited + delete_user_meta( $user_id, $blog_prefix . 'capabilities' ); + + if ( is_multisite() && is_network_admin() && !IS_PROFILE_PAGE && current_user_can( 'manage_network_options' ) && !isset($super_admins) && empty( $_POST['super_admin'] ) == is_super_admin( $user_id ) ) + empty( $_POST['super_admin'] ) ? revoke_super_admin( $user_id ) : grant_super_admin( $user_id ); +} + +if ( !is_wp_error( $errors ) ) { + $redirect = (IS_PROFILE_PAGE ? "profile.php?" : "user-edit.php?user_id=$user_id&"). "updated=true"; + if ( $wp_http_referer ) + $redirect = add_query_arg('wp_http_referer', urlencode($wp_http_referer), $redirect); + wp_redirect($redirect); + exit; +} + +default: +$profileuser = get_user_to_edit($user_id); + +if ( !current_user_can('edit_user', $user_id) ) + wp_die(__('You do not have permission to edit this user.')); + +include (ABSPATH . 'wp-admin/admin-header.php'); +?> + +ID ) && current_user_can( 'manage_network_options' ) ) { ?> +

    + + +
    + +

    + +

    + + +

    + +
    + + +

    \n

    ", $errors->get_error_messages() ); ?>

    + + +
    + +

    + + + + + +

    + +
    > + + + + +

    + + +

    + +

    + + + + + + + + + 1 && has_action('admin_color_scheme_picker') ) : ?> + + + + + + + + + + + + + + + +
    More information'); ?>
    +
    +
    +
    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +user_email != get_site_option( 'admin_email' ) ) : ?> +

    + +

    + +
    + +
    + +

    + + + + + + + + + + + + + $desc) { +?> + + + + + +
    + ID . '_new_email' ); + if ( $new_email && $new_email != $current_user->user_email ) : ?> +
    +

    %1$s. Cancel'), $new_email['newemail'], esc_url( self_admin_url( 'profile.php?dismiss=' . $current_user->ID . '_new_email' ) ) ); ?>

    +
    + +
    + +

    + + + + + + + + + + + + + +

    +

    +
    +
    +

    +
    + + + +caps) > count($profileuser->roles) && apply_filters('additional_capabilities_display', true, $profileuser) ) { ?> +
    + + + + + +
    caps as $cap => $value ) { + if ( !$wp_roles->is_role($cap) ) { + if ( $output != '' ) + $output .= ', '; + $output .= $value ? $cap : "Denied: {$cap}"; + } + } + echo $output; + ?>
    + + + + + + + +
    +
    + + + 'enter_email'), 'user-new.php' ) ); + die(); + } + } + + if ( !$user_details ) { + wp_redirect( add_query_arg( array('update' => 'does_not_exist'), 'user-new.php' ) ); + die(); + } + + if ( ! current_user_can('promote_user', $user_details->ID) ) + wp_die(__('Cheatin’ uh?')); + + // Adding an existing user to this blog + $new_user_email = $user_details->user_email; + $redirect = 'user-new.php'; + $username = $user_details->user_login; + $user_id = $user_details->ID; + if ( ( $username != null && !is_super_admin( $user_id ) ) && ( array_key_exists($blog_id, get_blogs_of_user($user_id)) ) ) { + $redirect = add_query_arg( array('update' => 'addexisting'), 'user-new.php' ); + } else { + if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) { + add_existing_user_to_blog( array( 'user_id' => $user_id, 'role' => $_REQUEST[ 'role' ] ) ); + $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' ); + } else { + $newuser_key = substr( md5( $user_id ), 0, 5 ); + add_option( 'new_user_' . $newuser_key, array( 'user_id' => $user_id, 'email' => $user_details->user_email, 'role' => $_REQUEST[ 'role' ] ) ); + /* translators: 1: Site name, 2: site URL, 3: role, 4: activation URL */ + $message = __( 'Hi, + +You\'ve been invited to join \'%1$s\' at +%2$s with the role of %3$s. + +Please click the following link to confirm the invite: +%4$s' ); + wp_mail( $new_user_email, sprintf( __( '[%s] Joining confirmation' ), get_option( 'blogname' ) ), sprintf($message, get_option('blogname'), home_url(), $_REQUEST[ 'role' ], home_url("/newbloguser/$newuser_key/"))); + $redirect = add_query_arg( array('update' => 'add'), 'user-new.php' ); + } + } + wp_redirect( $redirect ); + die(); +} elseif ( isset($_REQUEST['action']) && 'createuser' == $_REQUEST['action'] ) { + check_admin_referer( 'create-user', '_wpnonce_create-user' ); + + if ( ! current_user_can('create_users') ) + wp_die(__('Cheatin’ uh?')); + + if ( ! is_multisite() ) { + $user_id = edit_user(); + + if ( is_wp_error( $user_id ) ) { + $add_user_errors = $user_id; + } else { + if ( current_user_can( 'list_users' ) ) + $redirect = 'users.php?update=add&id=' . $user_id; + else + $redirect = add_query_arg( 'update', 'add', 'user-new.php' ); + wp_redirect( $redirect ); + die(); + } + } else { + // Adding a new user to this blog + $user_details = wpmu_validate_user_signup( $_REQUEST[ 'user_login' ], $_REQUEST[ 'email' ] ); + unset( $user_details[ 'errors' ]->errors[ 'user_email_used' ] ); + if ( is_wp_error( $user_details[ 'errors' ] ) && !empty( $user_details[ 'errors' ]->errors ) ) { + $add_user_errors = $user_details[ 'errors' ]; + } else { + $new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true)); + if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) { + add_filter( 'wpmu_signup_user_notification', '__return_false' ); // Disable confirmation email + } + wpmu_signup_user( $new_user_login, $_REQUEST[ 'email' ], array( 'add_to_blog' => $wpdb->blogid, 'new_role' => $_REQUEST[ 'role' ] ) ); + if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) { + $key = $wpdb->get_var( $wpdb->prepare( "SELECT activation_key FROM {$wpdb->signups} WHERE user_login = %s AND user_email = %s", $new_user_login, $_REQUEST[ 'email' ] ) ); + wpmu_activate_signup( $key ); + $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' ); + } else { + $redirect = add_query_arg( array('update' => 'newuserconfimation'), 'user-new.php' ); + } + wp_redirect( $redirect ); + die(); + } + } +} + +$title = __('Add New User'); +$parent_file = 'users.php'; + +$do_both = false; +if ( is_multisite() && current_user_can('promote_users') && current_user_can('create_users') ) + $do_both = true; + +$help = '

    ' . __('To add a new user to your site, fill in the form on this screen and click the Add New User button at the bottom.') . '

    '; + +if ( is_multisite() ) { + $help .= '

    ' . __('Because this is a multisite installation, you may add accounts that already exist on the Network by specifying a username or email, and defining a role. For more options, such as specifying a password, you have to be a Network Administrator and use the hover link under an existing user’s name to Edit the user profile under Network Admin > All Users.') . '

    ' . + '

    ' . __('New users will receive an email letting them know they’ve been added as a user for your site. This email will also contain their password. Check the box if you don’t want the user to receive a welcome email.') . '

    '; +} else { + $help .= '

    ' . __('You must assign a password to the new user, which they can change after logging in. The username, however, cannot be changed.') . '

    ' . + '

    ' . __('New users will receive an email letting them know they’ve been added as a user for your site. By default, this email will also contain their password. Uncheck the box if you don’t want the password to be included in the welcome email.') . '

    '; +} + +$help .= '

    ' . __('Remember to click the Add New User button at the bottom of this screen when you are finished.') . '

    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => $help, +) ); + +get_current_screen()->add_help_tab( array( +'id' => 'user-roles', +'title' => __('User Roles'), +'content' => '

    ' . __('Here is a basic overview of the different user roles and the permissions associated with each one:') . '

    ' . + '
      ' . + '
    • ' . __('Administrators have access to all the administration features.') . '
    • ' . + '
    • ' . __('Editors can publish posts, manage posts as well as manage other people’s posts, etc.') . '
    • ' . + '
    • ' . __('Authors can publish and manage their own posts, and are able to upload files.') . '
    • ' . + '
    • ' . __('Contributors can write and manage their posts but not publish posts or upload media files.') . '
    • ' . + '
    • ' . __('Subscribers can read comments/comment/receive newsletters, etc. but cannot create regular site content.') . '
    • ' . + '
    ' +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Adding New Users') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +wp_enqueue_script('wp-ajax-response'); +wp_enqueue_script('user-profile'); + +if ( is_multisite() && current_user_can( 'promote_users' ) && ! wp_is_large_network( 'users' ) + && ( is_super_admin() || apply_filters( 'autocomplete_users_for_site_admins', false ) ) +) { + wp_enqueue_script( 'user-suggest' ); +} + +require_once( 'admin-header.php' ); + +if ( isset($_GET['update']) ) { + $messages = array(); + if ( is_multisite() ) { + switch ( $_GET['update'] ) { + case "newuserconfimation": + $messages[] = __('Invitation email sent to new user. A confirmation link must be clicked before their account is created.'); + break; + case "add": + $messages[] = __('Invitation email sent to user. A confirmation link must be clicked for them to be added to your site.'); + break; + case "addnoconfirmation": + $messages[] = __('User has been added to your site.'); + break; + case "addexisting": + $messages[] = __('That user is already a member of this site.'); + break; + case "does_not_exist": + $messages[] = __('The requested user does not exist.'); + break; + case "does_not_exist": + $messages[] = __('Please enter a valid email address.'); + break; + } + } else { + if ( 'add' == $_GET['update'] ) + $messages[] = __('User added.'); + } +} +?> +
    + +

    +

    + + +
    +
      + get_error_messages() as $err ) + echo "
    • $err
    • \n"; + ?> +
    +
    +

    ' . $msg . '

    '; +} ?> + + +
    + get_error_messages() as $message ) + echo "

    $message

    "; + ?> +
    + +
    + +' . __('Add Existing User') . ''; + if ( !is_super_admin() ) { + _e( 'Enter the email address of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.' ); + $label = __('E-mail'); + } else { + _e( 'Enter the email address or username of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.' ); + $label = __('E-mail or Username'); + } +?> +
    > + + + + + + + + + + + + + + + + + + +
    +
    + 'addusersub' ) ); ?> +
    +' . __( 'Add New User' ) . ''; +?> +

    +
    > + + + 'login', 'first_name' => 'firstname', 'last_name' => 'lastname', + 'email' => 'email', 'url' => 'uri', 'role' => 'role', 'send_password' => 'send_password', 'noconfirmation' => 'ignore_pass' ) as $post_field => $var ) { + $var = "new_user_$var"; + if( isset( $_POST['createuser'] ) ) { + if ( ! isset($$var) ) + $$var = isset( $_POST[$post_field] ) ? stripslashes( $_POST[$post_field] ) : ''; + } else { + $$var = false; + } +} + +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +

    +
    +
    + + 'createusersub' ) ); ?> + +
    + + +domain != $current_site->domain ) || ( $current_blog->path != $current_site->path ) ); +$redirect_user_admin_request = apply_filters( 'redirect_user_admin_request', $redirect_user_admin_request ); +if ( $redirect_user_admin_request ) { + wp_redirect( user_admin_url() ); + exit; +} +unset( $redirect_user_admin_request ); diff --git a/wp-admin/user/credits.php b/wp-admin/user/credits.php new file mode 100644 index 0000000..faba84d --- /dev/null +++ b/wp-admin/user/credits.php @@ -0,0 +1,13 @@ +get_pagenum(); +$title = __('Users'); +$parent_file = 'users.php'; + +add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) ); + +// contextual help - choose Help on the top right of admin panel to preview this. +get_current_screen()->add_help_tab( array( + 'id' => 'overview', + 'title' => __('Overview'), + 'content' => '

    ' . __('This screen lists all the existing users for your site. Each user has one of five defined roles as set by the site admin: Site Administrator, Editor, Author, Contributor, or Subscriber. Users with roles other than Administrator will see fewer options in the dashboard navigation when they are logged in, based on their role.') . '

    ' . + '

    ' . __('To add a new user for your site, click the Add New button at the top of the screen or Add New in the Users menu section.') . '

    ' +) ) ; + +get_current_screen()->add_help_tab( array( + 'id' => 'screen-display', + 'title' => __('Screen Display'), + 'content' => '

    ' . __('You can customize the display of this screen in a number of ways:') . '

    ' . + '
      ' . + '
    • ' . __('You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab.') . '
    • ' . + '
    • ' . __('You can filter the list of users by User Role using the text links in the upper left to show All, Administrator, Editor, Author, Contributor, or Subscriber. The default view is to show all users. Unused User Roles are not listed.') . '
    • ' . + '
    • ' . __('You can view all posts made by a user by clicking on the number under the Posts column.') . '
    • ' . + '
    ' +) ); + +$help = '

    ' . __('Hovering over a row in the users list will display action links that allow you to manage users. You can perform the following actions:') . '

    ' . + '
      ' . + '
    • ' . __('Edit takes you to the editable profile screen for that user. You can also reach that screen by clicking on the username.') . '
    • '; + +if ( is_multisite() ) + $help .= '
    • ' . __( 'Remove allows you to remove a user from your site. It does not delete their posts. You can also remove multiple users at once by using Bulk Actions.' ) . '
    • '; +else + $help .= '
    • ' . __( 'Delete brings you to the Delete Users screen for confirmation, where you can permanently remove a user from your site and delete their posts. You can also delete multiple users at once by using Bulk Actions.' ) . '
    • '; + +$help .= '
    '; + +get_current_screen()->add_help_tab( array( + 'id' => 'actions', + 'title' => __('Actions'), + 'content' => $help, +) ); +unset( $help ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Managing Users') . '

    ' . + '

    ' . __('Descriptions of Roles and Capabilities') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +if ( empty($_REQUEST) ) { + $referer = ''; +} elseif ( isset($_REQUEST['wp_http_referer']) ) { + $redirect = remove_query_arg(array('wp_http_referer', 'updated', 'delete_count'), stripslashes($_REQUEST['wp_http_referer'])); + $referer = ''; +} else { + $redirect = 'users.php'; + $referer = ''; +} + +$update = ''; + +switch ( $wp_list_table->current_action() ) { + +/* Bulk Dropdown menu Role changes */ +case 'promote': + check_admin_referer('bulk-users'); + + if ( ! current_user_can( 'promote_users' ) ) + wp_die( __( 'You can’t edit that user.' ) ); + + if ( empty($_REQUEST['users']) ) { + wp_redirect($redirect); + exit(); + } + + $editable_roles = get_editable_roles(); + if ( empty( $editable_roles[$_REQUEST['new_role']] ) ) + wp_die(__('You can’t give users that role.')); + + $userids = $_REQUEST['users']; + $update = 'promote'; + foreach ( $userids as $id ) { + $id = (int) $id; + + if ( ! current_user_can('promote_user', $id) ) + wp_die(__('You can’t edit that user.')); + // The new role of the current user must also have the promote_users cap or be a multisite super admin + if ( $id == $current_user->ID && ! $wp_roles->role_objects[ $_REQUEST['new_role'] ]->has_cap('promote_users') + && ! ( is_multisite() && is_super_admin() ) ) { + $update = 'err_admin_role'; + continue; + } + + // If the user doesn't already belong to the blog, bail. + if ( is_multisite() && !is_user_member_of_blog( $id ) ) + wp_die(__('Cheatin’ uh?')); + + $user = new WP_User($id); + $user->set_role($_REQUEST['new_role']); + } + + wp_redirect(add_query_arg('update', $update, $redirect)); + exit(); + +break; + +case 'dodelete': + if ( is_multisite() ) + wp_die( __('User deletion is not allowed from this screen.') ); + + check_admin_referer('delete-users'); + + if ( empty($_REQUEST['users']) ) { + wp_redirect($redirect); + exit(); + } + + if ( ! current_user_can( 'delete_users' ) ) + wp_die(__('You can’t delete users.')); + + $userids = $_REQUEST['users']; + $update = 'del'; + $delete_count = 0; + + foreach ( (array) $userids as $id) { + $id = (int) $id; + + if ( ! current_user_can( 'delete_user', $id ) ) + wp_die(__( 'You can’t delete that user.' ) ); + + if ( $id == $current_user->ID ) { + $update = 'err_admin_del'; + continue; + } + switch ( $_REQUEST['delete_option'] ) { + case 'delete': + if ( current_user_can('delete_user', $id) ) + wp_delete_user($id); + break; + case 'reassign': + if ( current_user_can('delete_user', $id) ) + wp_delete_user($id, $_REQUEST['reassign_user']); + break; + } + ++$delete_count; + } + + $redirect = add_query_arg( array('delete_count' => $delete_count, 'update' => $update), $redirect); + wp_redirect($redirect); + exit(); + +break; + +case 'delete': + if ( is_multisite() ) + wp_die( __('User deletion is not allowed from this screen.') ); + + check_admin_referer('bulk-users'); + + if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) { + wp_redirect($redirect); + exit(); + } + + if ( ! current_user_can( 'delete_users' ) ) + $errors = new WP_Error( 'edit_users', __( 'You can’t delete users.' ) ); + + if ( empty($_REQUEST['users']) ) + $userids = array(intval($_REQUEST['user'])); + else + $userids = (array) $_REQUEST['users']; + + include ('admin-header.php'); +?> +
    + + + +
    + +

    +

    +
      +ID ) { + echo "
    • " . sprintf(__('ID #%1s: %2s The current user will not be deleted.'), $id, $user->user_login) . "
    • \n"; + } else { + echo "
    • " . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "
    • \n"; + $go_delete++; + } + } + ?> +
    + +

    +
      +
    • +
    • + '.__('Attribute all posts and links to:').''; + wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?>
    • +
    + + + +

    + +
    +
    +ID && !is_super_admin() ) { + $update = 'err_admin_remove'; + continue; + } + if ( !current_user_can('remove_user', $id) ) { + $update = 'err_admin_remove'; + continue; + } + remove_user_from_blog($id, $blog_id); + } + + $redirect = add_query_arg( array('update' => $update), $redirect); + wp_redirect($redirect); + exit; + +break; + +case 'remove': + + check_admin_referer('bulk-users'); + + if ( ! is_multisite() ) + wp_die( __( 'You can’t remove users.' ) ); + + if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) { + wp_redirect($redirect); + exit(); + } + + if ( !current_user_can('remove_users') ) + $error = new WP_Error('edit_users', __('You can’t remove users.')); + + if ( empty($_REQUEST['users']) ) + $userids = array(intval($_REQUEST['user'])); + else + $userids = $_REQUEST['users']; + + include ('admin-header.php'); +?> +
    + + + +
    + +

    +

    +
      +ID && !is_super_admin() ) { + echo "
    • " . sprintf(__('ID #%1s: %2s The current user will not be removed.'), $id, $user->user_login) . "
    • \n"; + } elseif ( !current_user_can('remove_user', $id) ) { + echo "
    • " . sprintf(__('ID #%1s: %2s You don\'t have permission to remove this user.'), $id, $user->user_login) . "
    • \n"; + } else { + echo "
    • " . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "
    • \n"; + $go_remove = true; + } + } + ?> + + + + +

      + +
    +
    +prepare_items(); + $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); + if ( $pagenum > $total_pages && $total_pages > 0 ) { + wp_redirect( add_query_arg( 'paged', $total_pages ) ); + exit; + } + + include('./admin-header.php'); + + $messages = array(); + if ( isset($_GET['update']) ) : + switch($_GET['update']) { + case 'del': + case 'del_many': + $delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0; + $messages[] = '

    ' . sprintf( _n( 'User deleted.', '%s users deleted.', $delete_count ), number_format_i18n( $delete_count ) ) . '

    '; + break; + case 'add': + if ( isset( $_GET['id'] ) && ( $user_id = $_GET['id'] ) && current_user_can( 'edit_user', $user_id ) ) { + $messages[] = '

    ' . sprintf( __( 'New user created. Edit user' ), + esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), + self_admin_url( 'user-edit.php?user_id=' . $user_id ) ) ) ) . '

    '; + } else { + $messages[] = '

    ' . __( 'New user created.' ) . '

    '; + } + break; + case 'promote': + $messages[] = '

    ' . __('Changed roles.') . '

    '; + break; + case 'err_admin_role': + $messages[] = '

    ' . __('The current user’s role must have user editing capabilities.') . '

    '; + $messages[] = '

    ' . __('Other user roles have been changed.') . '

    '; + break; + case 'err_admin_del': + $messages[] = '

    ' . __('You can’t delete the current user.') . '

    '; + $messages[] = '

    ' . __('Other users have been deleted.') . '

    '; + break; + case 'remove': + $messages[] = '

    ' . __('User removed from this site.') . '

    '; + break; + case 'err_admin_remove': + $messages[] = '

    ' . __("You can't remove the current user.") . '

    '; + $messages[] = '

    ' . __('Other users have been removed.') . '

    '; + break; + } + endif; ?> + + +
    +
      + get_error_messages() as $err ) + echo "
    • $err
    • \n"; + ?> +
    +
    + + +
    + +

    + + + + +' . __('Search results for “%s”') . '', esc_html( $usersearch ) ); ?> +

    + +views(); ?> + +
    + +search_box( __( 'Search Users' ), 'user' ); ?> + +display(); ?> +
    + +
    +
    +add_help_tab( array( +'id' => 'overview', +'title' => __('Overview'), +'content' => + '

    ' . __('Widgets are independent sections of content that can be placed into any widgetized area provided by your theme (commonly called sidebars). To populate your sidebars/widget areas with individual widgets, drag and drop the title bars into the desired area. By default, only the first widget area is expanded. To populate additional widget areas, click on their title bars to expand them.') . '

    +

    ' . __('The Available Widgets section contains all the widgets you can choose from. Once you drag a widget into a sidebar, it will open to allow you to configure its settings. When you are happy with the widget settings, click the Save button and the widget will go live on your site. If you click Delete, it will remove the widget.') . '

    ' +) ); +get_current_screen()->add_help_tab( array( +'id' => 'removing-reusing', +'title' => __('Removing and Reusing'), +'content' => + '

    ' . __('If you want to remove the widget but save its setting for possible future use, just drag it into the Inactive Widgets area. You can add them back anytime from there. This is especially helpful when you switch to a theme with fewer or different widget areas.') . '

    +

    ' . __('Widgets may be used multiple times. You can give each widget a title, to display on your site, but it’s not required.') . '

    +

    ' . __('Enabling Accessibility Mode, via Screen Options, allows you to use Add and Edit buttons instead of using drag and drop.') . '

    ' +) ); +get_current_screen()->add_help_tab( array( +'id' => 'missing-widgets', +'title' => __('Missing Widgets'), +'content' => + '

    ' . __('Many themes show some sidebar widgets by default until you edit your sidebars, but they are not automatically displayed in your sidebar management tool. After you make your first widget change, you can re-add the default widgets by adding them from the Available Widgets area.') . '

    ' . + '

    ' . __('When changing themes, there is often some variation in the number and setup of widget areas/sidebars and sometimes these conflicts make the transition a bit less smooth. If you changed themes and seem to be missing widgets, scroll down on this screen to the Inactive area, where all your widgets and their settings will have been saved.') . '

    ' +) ); + +get_current_screen()->set_help_sidebar( + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Widgets') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +if ( empty($wp_registered_sidebars) ) { + // the theme has no sidebars, die. + require_once( './admin-header.php' ); +?> + +
    + +

    +
    +

    +
    +

    follow these instructions.' ); ?>

    +
    + + $widgets ) { + if ( 'wp_inactive_widgets' == $sidebar_id ) + continue; + + if ( !isset( $wp_registered_sidebars[ $sidebar_id ] ) ) { + if ( ! empty( $widgets ) ) { // register the inactive_widgets area as sidebar + register_sidebar(array( + 'name' => __( 'Inactive Sidebar (not used)' ), + 'id' => $sidebar_id, + 'class' => 'inactive-sidebar orphan-sidebar', + 'description' => __( 'This sidebar is no longer available and does not show anywhere on your site. Remove each of the widgets below to fully remove this inactive sidebar.' ), + 'before_widget' => '', + 'after_widget' => '', + 'before_title' => '', + 'after_title' => '', + )); + } else { + unset( $sidebars_widgets[ $sidebar_id ] ); + } + } +} + +// register the inactive_widgets area as sidebar +register_sidebar(array( + 'name' => __('Inactive Widgets'), + 'id' => 'wp_inactive_widgets', + 'class' => 'inactive-sidebar', + 'description' => __( 'Drag widgets here to remove them from the sidebar but keep their settings.' ), + 'before_widget' => '', + 'after_widget' => '', + 'before_title' => '', + 'after_title' => '', +)); + +retrieve_widgets(); + +// We're saving a widget without js +if ( isset($_POST['savewidget']) || isset($_POST['removewidget']) ) { + $widget_id = $_POST['widget-id']; + check_admin_referer("save-delete-widget-$widget_id"); + + $number = isset($_POST['multi_number']) ? (int) $_POST['multi_number'] : ''; + if ( $number ) { + foreach ( $_POST as $key => $val ) { + if ( is_array($val) && preg_match('/__i__|%i%/', key($val)) ) { + $_POST[$key] = array( $number => array_shift($val) ); + break; + } + } + } + + $sidebar_id = $_POST['sidebar']; + $position = isset($_POST[$sidebar_id . '_position']) ? (int) $_POST[$sidebar_id . '_position'] - 1 : 0; + + $id_base = $_POST['id_base']; + $sidebar = isset($sidebars_widgets[$sidebar_id]) ? $sidebars_widgets[$sidebar_id] : array(); + + // delete + if ( isset($_POST['removewidget']) && $_POST['removewidget'] ) { + + if ( !in_array($widget_id, $sidebar, true) ) { + wp_redirect( admin_url('widgets.php?error=0') ); + exit; + } + + $sidebar = array_diff( $sidebar, array($widget_id) ); + $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1'); + } + + $_POST['widget-id'] = $sidebar; + + foreach ( (array) $wp_registered_widget_updates as $name => $control ) { + if ( $name != $id_base || !is_callable($control['callback']) ) + continue; + + ob_start(); + call_user_func_array( $control['callback'], $control['params'] ); + ob_end_clean(); + + break; + } + + $sidebars_widgets[$sidebar_id] = $sidebar; + + // remove old position + if ( !isset($_POST['delete_widget']) ) { + foreach ( $sidebars_widgets as $key => $sb ) { + if ( is_array($sb) ) + $sidebars_widgets[$key] = array_diff( $sb, array($widget_id) ); + } + array_splice( $sidebars_widgets[$sidebar_id], $position, 0, $widget_id ); + } + + wp_set_sidebars_widgets($sidebars_widgets); + wp_redirect( admin_url('widgets.php?message=0') ); + exit; +} + +// Output the widget form without js +if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) { + $widget_id = $_GET['editwidget']; + + if ( isset($_GET['addnew']) ) { + // Default to the first sidebar + $sidebar = array_shift( $keys = array_keys($wp_registered_sidebars) ); + + if ( isset($_GET['base']) && isset($_GET['num']) ) { // multi-widget + // Copy minimal info from an existing instance of this widget to a new instance + foreach ( $wp_registered_widget_controls as $control ) { + if ( $_GET['base'] === $control['id_base'] ) { + $control_callback = $control['callback']; + $multi_number = (int) $_GET['num']; + $control['params'][0]['number'] = -1; + $widget_id = $control['id'] = $control['id_base'] . '-' . $multi_number; + $wp_registered_widget_controls[$control['id']] = $control; + break; + } + } + } + } + + if ( isset($wp_registered_widget_controls[$widget_id]) && !isset($control) ) { + $control = $wp_registered_widget_controls[$widget_id]; + $control_callback = $control['callback']; + } elseif ( !isset($wp_registered_widget_controls[$widget_id]) && isset($wp_registered_widgets[$widget_id]) ) { + $name = esc_html( strip_tags($wp_registered_widgets[$widget_id]['name']) ); + } + + if ( !isset($name) ) + $name = esc_html( strip_tags($control['name']) ); + + if ( !isset($sidebar) ) + $sidebar = isset($_GET['sidebar']) ? $_GET['sidebar'] : 'wp_inactive_widgets'; + + if ( !isset($multi_number) ) + $multi_number = isset($control['params'][0]['number']) ? $control['params'][0]['number'] : ''; + + $id_base = isset($control['id_base']) ? $control['id_base'] : $control['id']; + + // show the widget form + $width = ' style="width:' . max($control['width'], 350) . 'px"'; + $key = isset($_GET['key']) ? (int) $_GET['key'] : 0; + + require_once( './admin-header.php' ); ?> +
    + +

    +
    > +

    + +
    +
    +' . __('There are no options for this widget.') . "

    \n"; ?> +
    + +

    +
    + + $sbvalue ) { + echo "\t\t\n"; + } ?> +
    "; + if ( 'wp_inactive_widgets' == $sbname || 'orphaned_widgets' == substr( $sbname, 0, 16 ) ) { + echo ' '; + } else { + if ( !isset($sidebars_widgets[$sbname]) || !is_array($sidebars_widgets[$sbname]) ) { + $j = 1; + $sidebars_widgets[$sbname] = array(); + } else { + $j = count($sidebars_widgets[$sbname]); + if ( isset($_GET['addnew']) || !in_array($widget_id, $sidebars_widgets[$sbname], true) ) + $j++; + } + $selected = ''; + echo "\t\t\n"; + } + echo "
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    + + +
    + +

    + + +

    + + +

    + + + + +
    +
    +
    + +
    +

    +
    + +
    +
    +
    +
    +
    + + $registered_sidebar ) { + if ( false !== strpos( $registered_sidebar['class'], 'inactive-sidebar' ) || 'orphaned_widgets' == substr( $sidebar, 0, 16 ) ) { + $wrap_class = 'widgets-holder-wrap'; + if ( !empty( $registered_sidebar['class'] ) ) + $wrap_class .= ' ' . $registered_sidebar['class']; + +?> + +
    + +
    + +
    +
    +
    + + +
    +
    + +
    +
    + $registered_sidebar ) { + if ( false !== strpos( $registered_sidebar['class'], 'inactive-sidebar' ) || 'orphaned_widgets' == substr( $sidebar, 0, 16 ) ) + continue; + + $wrap_class = 'widgets-holder-wrap'; + if ( !empty( $registered_sidebar['class'] ) ) + $wrap_class .= ' sidebar-' . $registered_sidebar['class']; + + if ( $i ) + $wrap_class .= ' closed'; ?> + +
    + + +
    + +
    +
    +
    + +
    +
    +
    + +handle_request(); + +exit; + +/** + * Writes logging info to a file. + * + * @since 2.2.0 + * @deprecated 3.4.0 + * @deprecated Use error_log() + * @link http://www.php.net/manual/en/function.error-log.php + * + * @param string $label Type of logging + * @param string $msg Information describing logging reason. + */ +function log_app( $label, $msg ) { + _deprecated_function( __FUNCTION__, '3.4', 'error_log()' ); + if ( ! empty( $GLOBALS['app_logging'] ) ) + error_log( $label . ' - ' . $msg ); +} diff --git a/wp-atom.php b/wp-atom.php new file mode 100644 index 0000000..a83ac7d --- /dev/null +++ b/wp-atom.php @@ -0,0 +1,12 @@ + diff --git a/wp-blog-header.php b/wp-blog-header.php new file mode 100644 index 0000000..3e1b8ef --- /dev/null +++ b/wp-blog-header.php @@ -0,0 +1,18 @@ +comment_status) ) { + do_action('comment_id_not_found', $comment_post_ID); + exit; +} + +// get_post_status() will get the parent status for attachments. +$status = get_post_status($post); + +$status_obj = get_post_status_object($status); + +if ( !comments_open($comment_post_ID) ) { + do_action('comment_closed', $comment_post_ID); + wp_die( __('Sorry, comments are closed for this item.') ); +} elseif ( 'trash' == $status ) { + do_action('comment_on_trash', $comment_post_ID); + exit; +} elseif ( !$status_obj->public && !$status_obj->private ) { + do_action('comment_on_draft', $comment_post_ID); + exit; +} elseif ( post_password_required($comment_post_ID) ) { + do_action('comment_on_password_protected', $comment_post_ID); + exit; +} else { + do_action('pre_comment_on_post', $comment_post_ID); +} + +$comment_author = ( isset($_POST['author']) ) ? trim(strip_tags($_POST['author'])) : null; +$comment_author_email = ( isset($_POST['email']) ) ? trim($_POST['email']) : null; +$comment_author_url = ( isset($_POST['url']) ) ? trim($_POST['url']) : null; +$comment_content = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null; + +// If the user is logged in +$user = wp_get_current_user(); +if ( $user->exists() ) { + if ( empty( $user->display_name ) ) + $user->display_name=$user->user_login; + $comment_author = $wpdb->escape($user->display_name); + $comment_author_email = $wpdb->escape($user->user_email); + $comment_author_url = $wpdb->escape($user->user_url); + if ( current_user_can('unfiltered_html') ) { + if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) { + kses_remove_filters(); // start with a clean slate + kses_init_filters(); // set up the filters + } + } +} else { + if ( get_option('comment_registration') || 'private' == $status ) + wp_die( __('Sorry, you must be logged in to post a comment.') ); +} + +$comment_type = ''; + +if ( get_option('require_name_email') && !$user->exists() ) { + if ( 6 > strlen($comment_author_email) || '' == $comment_author ) + wp_die( __('ERROR: please fill the required fields (name, email).') ); + elseif ( !is_email($comment_author_email)) + wp_die( __('ERROR: please enter a valid email address.') ); +} + +if ( '' == $comment_content ) + wp_die( __('ERROR: please type a comment.') ); + +$comment_parent = isset($_POST['comment_parent']) ? absint($_POST['comment_parent']) : 0; + +$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); + +$comment_id = wp_new_comment( $commentdata ); + +$comment = get_comment($comment_id); +do_action('set_comment_cookies', $comment, $user); + +$location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id; +$location = apply_filters('comment_post_redirect', $location, $comment); + +wp_safe_redirect( $location ); +exit; diff --git a/wp-commentsrss2.php b/wp-commentsrss2.php new file mode 100644 index 0000000..280766e --- /dev/null +++ b/wp-commentsrss2.php @@ -0,0 +1,12 @@ + diff --git a/wp-config-sample.php b/wp-config-sample.php new file mode 100644 index 0000000..e47e1b5 --- /dev/null +++ b/wp-config-sample.php @@ -0,0 +1,90 @@ +iD:#Zz nT(o_|)5uQazH(|coD^hd?@aPpa9#5_6>?N,B!u0d_dW@fk>2*L'); +define('NONCE_KEY', 'DgwH0G;-fPFz3sXE4&P#_ D:-L~[Yu-#Wr;;U!]BdOlb}(oBs9It.3#f*?{rSfZP'); +define('AUTH_SALT', ')cnxgDm^vee+Y>P[wBfk[hW-9rD`Zs?A7L}?lu;74Ew#P+@NVgyZWSHF1=,29q^>'); +define('SECURE_AUTH_SALT', 'w:D[s#D^eO)K!tez/u/vR$dt&x3z[%)!Vnu~p^v}7XX}DYRp&9P8q_a3Xk:*BXV='); +define('LOGGED_IN_SALT', '9gv>`RT2e3~!T#9PW.iB5)QN73%NAb?Fj.Cr^/GLWAzdq7LeHpb*PIX16J-{11.b'); +define('NONCE_SALT', 'fQ:7c{*z/3j00dK/y4Jk!c_T0EL`gEMkp5B!7_UqzD!{IOFN1RtpA0~V1>w86]pq'); + +/**#@-*/ + +/** + * WordPress Database Table prefix. + * + * You can have multiple installations in one database if you give each a unique + * prefix. Only numbers, letters, and underscores please! + */ +$table_prefix = 'wp_'; + +/** + * WordPress Localized Language, defaults to English. + * + * Change this to localize WordPress. A corresponding MO file for the chosen + * language must be installed to wp-content/languages. For example, install + * de_DE.mo to wp-content/languages and set WPLANG to 'de_DE' to enable German + * language support. + */ +define('WPLANG', ''); + +/** + * For developers: WordPress debugging mode. + * + * Change this to true to enable the display of notices during development. + * It is strongly recommended that plugin and theme developers use WP_DEBUG + * in their development environments. + */ +//define('WP_DEBUG', false); +// Enable WP_DEBUG mode +define('WP_DEBUG', true); + +// Enable Debug logging to the /wp-content/debug.log file +define('WP_DEBUG_LOG', true); + +// Disable display of errors and warnings +define('WP_DEBUG_DISPLAY', false); +@ini_set('display_errors',0); + +// Use dev versions of core JS and CSS files (only needed if you are modifying these core files) +define('SCRIPT_DEBUG', true); + +/* That's all, stop editing! Happy blogging. */ + +/** Absolute path to the WordPress directory. */ +if ( !defined('ABSPATH') ) + define('ABSPATH', dirname(__FILE__) . '/'); + +/** Sets up WordPress vars and included files. */ +require_once(ABSPATH . 'wp-settings.php'); diff --git a/wp-content/debug.log b/wp-content/debug.log new file mode 100644 index 0000000..63c2abf --- /dev/null +++ b/wp-content/debug.log @@ -0,0 +1,9805 @@ +[10-Jul-2012 16:57:03] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:03] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:03] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:03] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 16:57:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:37] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 16:57:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:57:58] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 16:58:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:58:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:58:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:59:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:59:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 16:59:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:46] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:00:46] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:00:46] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:00:46] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:00:46] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:48] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:00:52] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:52] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:00:52] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:00:52] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:00:52] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:00:52] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:00:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:02] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:02] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:02] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:02] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:01:19] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:19] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:19] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:19] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:01:19] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:01:19] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:01:19] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:01:19] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:22] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:01:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:01:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:02:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:02:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:02:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:02:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:02:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:02:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:29] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:03:29] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_example_directory_setup' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:03:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:32] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:03:32] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_example_directory_setup' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:03:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:35] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:03:35] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_example_directory_setup' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:03:35] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:03:35] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:03:35] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:03:35] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:37] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:03:37] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_example_directory_setup' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:03:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:51] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:51] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:51] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:03:51] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:03:51] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:03:51] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:03:51] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:53] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:03:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:03:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:01] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:01] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:01] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:01] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:04:01] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:04:01] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:04:01] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:04:01] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:04] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:04:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:10] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:04:10] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:04:10] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:04:10] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:04:10] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:17] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:04:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:40] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:04:40] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:04:40] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:04:41] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:04:41] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:43] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:04:56] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:56] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:56] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:56] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:04:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:04:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:05:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:05:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:05:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:05:15] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:05:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:05:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:05:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:06:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:06:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:06:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:07:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:07:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:07:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:08:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:08:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:08:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:09:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:09:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:09:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:10:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:10:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:10:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:11:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:11:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:11:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:12:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:12:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:12:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:13:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:13:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:13:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:14:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:14:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:14:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:15:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:15:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:15:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:16:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:16:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:16:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:17:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:17:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:17:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:18:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:18:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:18:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:19:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:19:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:19:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:20:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:20:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:20:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:21:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:21:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:21:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:22:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:22:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:22:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:23:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:23:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:23:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:24:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:24:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:24:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:25:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:25:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:25:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:26:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:26:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:26:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:27:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:27:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:27:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:28:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:28:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:28:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:29:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:29:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:29:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:30:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:30:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:30:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:31:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:31:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:31:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:32:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:32:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:32:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:33:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:33:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:33:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:34:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:34:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:34:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:35:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:35:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:35:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:36:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:36:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:36:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:37:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:37:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:37:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:38:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:38:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:38:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:39:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:39:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:39:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:40:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:40:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:40:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:41:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:41:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:41:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:42:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:42:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:42:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:43:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:43:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:43:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:43:59] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:43:59] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:43:59] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:43:59] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:44:21] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:44:21] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:44:21] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:44:21] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:44:21] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:44:21] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:44:21] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:44:21] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:44:21] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[10-Jul-2012 17:44:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:44:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:44:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:44:29] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:44:29] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:44:29] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:44:29] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:44:29] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:44:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:44:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:44:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:45:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:45:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:45:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:45:33] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:45:33] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:45:33] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:45:33] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:45:33] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:45:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:45:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:45:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:46:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:46:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:46:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:47:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:47:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:47:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:48:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:48:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:48:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:49:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:49:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:49:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:50:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:50:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:50:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:51:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:51:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:51:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:03] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:03] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:03] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:03] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:52:03] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:52:03] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:52:03] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:52:03] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:13] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:13] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:13] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:13] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:52:13] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:52:13] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:52:13] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:52:13] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\inc\page-styling.php on line 23 +[10-Jul-2012 17:52:13] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\inc\page-styling.php on line 30 +[10-Jul-2012 17:52:13] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\inc\page-styling.php on line 354 +[10-Jul-2012 17:52:13] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\inc\page-styling.php on line 361 +[10-Jul-2012 17:52:13] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\inc\page-styling.php on line 366 +[10-Jul-2012 17:52:13] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\inc\page-styling.php on line 373 +[10-Jul-2012 17:52:13] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\inc\page-styling.php on line 380 +[10-Jul-2012 17:52:13] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\inc\page-styling.php on line 387 +[10-Jul-2012 17:52:13] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:13] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[10-Jul-2012 17:52:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:52:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:53:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:53:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:53:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:53:57] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:53:58] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 17:53:58] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 17:53:58] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 17:53:58] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:53:58] PHP Fatal error: Call to undefined function bp_example_get_highfives_for_user() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\members\single\dedications\my-dedications.php on line 83 +[10-Jul-2012 17:53:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:53:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:53:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:54:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:54:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:54:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:54:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:54:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:54:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:54:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:55:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:55:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:55:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:55:45] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:55:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:55:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:55:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:56:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:56:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:56:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:57:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:57:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:57:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:57:27] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 17:57:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:57:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:57:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:58:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:58:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:58:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:59:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:59:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 17:59:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:00:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:00:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:00:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:01:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:01:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:01:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:02:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:02:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:02:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:03:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:03:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:03:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:04:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:04:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:04:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:50] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:50] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:50] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:50] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 18:05:50] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 18:05:50] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 18:05:50] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 18:05:50] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:52] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:52] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 18:05:52] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 18:05:52] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 18:05:52] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 18:05:52] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:58] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 18:05:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:05:58] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 18:05:58] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 18:05:58] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 18:05:58] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:06:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:06:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:06:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:06:45] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 18:06:45] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 18:06:45] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 18:06:45] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 18:06:46] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:06:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:06:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:06:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:07:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:07:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:07:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:07:04] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 18:07:04] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 18:07:04] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 18:07:04] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 18:07:04] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:07:04] PHP Fatal error: Call to undefined function bp_example_get_highfives_for_user() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 43 +[10-Jul-2012 18:07:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:07:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:07:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 18:08:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:09:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:10:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:11:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:12:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:13:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:14:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:15:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:16:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:17:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:18:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:19:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:20:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:21:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:22:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:23:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:24:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:25:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:26:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:27:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:28:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:29:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:30:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:31:58] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:32:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:33:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:34:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:35:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:36:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:37:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:38:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:39:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:40:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:41:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:42:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:43:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:44:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:45:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:46:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:47:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:48:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:49:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:50:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:51:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:52:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:53:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:54:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:55:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:56:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:57:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:58:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 18:59:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:00:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:01:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:02:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:03:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:04:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:05:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:06:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:07:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:08:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:09:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:10:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:11:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:12:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:13:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:14:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:15:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:16:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:17:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:18:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:19:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:20:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:21:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:22:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:23:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:24:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:25:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:26:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:27:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:28:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:29:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:30:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:31:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:32:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:33:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:34:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:35:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:36:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:37:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:38:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:39:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:40:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:41:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:42:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:43:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:44:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:45:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:46:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:47:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:48:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:49:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:50:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:51:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:52:50] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:52:59] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 76 +[10-Jul-2012 19:53:13] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:53:13] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:53:13] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:53:13] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 19:53:13] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 19:53:13] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 19:53:13] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 19:53:13] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:53:13] PHP Notice: Use of undefined constant BPRP_ROOT_PATH - assumed 'BPRP_ROOT_PATH' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 34 +[10-Jul-2012 19:53:13] PHP Warning: include(BPRP_ROOT_PATHpages/style.php) [function.include]: failed to open stream: No such file or directory in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 34 +[10-Jul-2012 19:53:13] PHP Warning: include() [function.include]: Failed opening 'BPRP_ROOT_PATHpages/style.php' for inclusion (include_path='.;D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\server\php\PEAR') in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 34 +[10-Jul-2012 19:53:13] PHP Fatal error: Using $this when not in object context in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 36 +[10-Jul-2012 19:53:55] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:53:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:53:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:53:55] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 19:53:55] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 19:53:55] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 19:53:55] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 19:53:55] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:53:55] PHP Notice: Use of undefined constant BPRP_ROOT_PATH - assumed 'BPRP_ROOT_PATH' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 34 +[10-Jul-2012 19:53:55] PHP Warning: include(BPRP_ROOT_PATHpages/style.php) [function.include]: failed to open stream: No such file or directory in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 34 +[10-Jul-2012 19:53:55] PHP Warning: include() [function.include]: Failed opening 'BPRP_ROOT_PATHpages/style.php' for inclusion (include_path='.;D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\server\php\PEAR') in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 34 +[10-Jul-2012 19:53:55] PHP Fatal error: Using $this when not in object context in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 36 +[10-Jul-2012 19:54:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:54:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:54:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:54:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:54:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:54:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:54:24] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 19:54:24] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 19:54:24] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 19:54:24] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 19:54:24] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:54:24] PHP Catchable fatal error: Object of class stdClass could not be converted to string in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-core\bp-core-avatars.php on line 145 +[10-Jul-2012 19:55:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:55:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:55:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:20] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:20] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:20] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:20] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 19:56:20] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 19:56:20] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 19:56:20] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 19:56:20] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:20] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:34] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 19:56:34] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 19:56:34] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 19:56:34] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 19:56:34] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 52 +[10-Jul-2012 19:56:34] PHP Notice: Undefined property: stdClass::$athor in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 19:57:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:57:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:57:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:58:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:58:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:58:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:58:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:58:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:58:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:58:39] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 19:58:40] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 19:58:40] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 19:58:40] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 19:58:40] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:02] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:02] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:02] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:02] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 19:59:02] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 19:59:02] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 19:59:02] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 19:59:02] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 19:59:38] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 19:59:38] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 19:59:39] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 19:59:39] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 19:59:40] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 19:59:40] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 19:59:40] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:00:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:00:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:00:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:25] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:01:25] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:01:25] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:01:25] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:01:26] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:26] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:35] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:01:36] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:01:36] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:01:36] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:01:36] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:36] PHP Notice: Undefined property: stdClass::$title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 53 +[10-Jul-2012 20:01:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:54] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:54] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:54] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:01:54] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:01:54] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:01:54] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:01:54] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:59] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:59] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:59] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:59] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:01:59] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:59] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:59] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:01:59] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:01:59] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:01:59] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:01:59] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:01:59] PHP Notice: Undefined index: user_comments in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\comments.php on line 22 +[10-Jul-2012 20:01:59] PHP Notice: Undefined variable: gp_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 21 +[10-Jul-2012 20:01:59] PHP Notice: Undefined variable: gp_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 25 +[10-Jul-2012 20:02:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:02:00] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:02:00] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:02:00] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:02:00] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:02:00] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:02:00] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:02:00] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:02:00] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:02:00] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[10-Jul-2012 20:02:00] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[10-Jul-2012 20:03:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:03:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:03:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:04:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:04:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:04:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:05:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:05:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:05:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:05:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:05:51] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:05:51] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:05:51] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:05:51] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:05:51] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:05:51] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:05:51] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:06:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:06:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:06:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:06:48] PHP Parse error: syntax error, unexpected T_DOUBLE_ARROW, expecting ')' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 41 +[10-Jul-2012 20:06:48] PHP Parse error: syntax error, unexpected T_DOUBLE_ARROW, expecting ')' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 41 +[10-Jul-2012 20:06:52] PHP Parse error: syntax error, unexpected T_DOUBLE_ARROW, expecting ')' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 41 +[10-Jul-2012 20:06:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:06:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:06:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:06:58] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:06:58] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:06:58] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:06:59] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:06:59] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:06:59] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:06:59] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:06:59] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:06:59] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:02] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[10-Jul-2012 20:07:02] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[10-Jul-2012 20:07:02] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:02] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:02] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:07:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:07:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:07:02] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:03] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:07:03] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:07:03] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:07:03] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:07:03] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[10-Jul-2012 20:07:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[10-Jul-2012 20:07:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:07:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:08:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:08:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:08:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:09:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:09:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:09:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:09:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:09:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:09:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:09:45] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:09:45] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:09:45] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:09:45] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:09:45] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:10:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:10:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:10:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:11:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:11:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:11:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:12:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:12:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:12:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:12:56] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:12:56] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:12:56] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:12:56] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:12:56] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:12:56] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:12:56] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:12:56] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:00] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:13:00] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:13:00] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:13:00] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:13:00] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:11] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:11] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:11] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:11] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:11] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:11] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:11] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:11] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:11] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:13:11] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:11] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:11] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:12] PHP Notice: get_usermeta is deprecated since version 3.0! Use get_user_meta() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:12] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:12] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:12] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:12] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:12] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:12] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:22] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[10-Jul-2012 20:13:22] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[10-Jul-2012 20:13:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:22] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: users_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: video_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: users_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: video_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[10-Jul-2012 20:13:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[10-Jul-2012 20:13:23] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[10-Jul-2012 20:13:23] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[10-Jul-2012 20:13:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:24] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:24] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:24] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:24] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:24] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:24] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:13:24] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:24] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[10-Jul-2012 20:13:24] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[10-Jul-2012 20:13:24] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[10-Jul-2012 20:13:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:13:28] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[10-Jul-2012 20:13:28] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[10-Jul-2012 20:13:28] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[10-Jul-2012 20:13:28] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[10-Jul-2012 20:13:28] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:14:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:14:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:14:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:15:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:15:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:15:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:16:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:16:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:16:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:17:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:17:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:17:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:18:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:18:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:18:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:19:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:19:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:19:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:20:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:20:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:20:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:21:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:21:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:21:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:22:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:22:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:22:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:23:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:23:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:23:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:24:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:24:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:24:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:25:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:25:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:25:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:26:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:26:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:26:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:27:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:27:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:27:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:28:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:28:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:28:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:29:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:29:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:29:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:30:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:30:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:30:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:31:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:31:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:31:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:32:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:32:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:32:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:33:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:33:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:33:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:34:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:34:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:34:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:35:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:35:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:35:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:36:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:36:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:36:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:37:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:37:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:37:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:38:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:38:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:38:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:39:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:39:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:39:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:40:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:40:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:40:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:41:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:41:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:41:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:42:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:42:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:42:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:43:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:43:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:43:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:44:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:44:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:44:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:45:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:45:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:45:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:46:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:46:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:46:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:47:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:47:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:47:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:48:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:48:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:48:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:49:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:49:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:49:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:50:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:50:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:50:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:51:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:51:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:51:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:52:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:52:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:52:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:53:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:53:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:53:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:54:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:54:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:54:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:55:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:55:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:55:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:56:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:56:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:56:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:57:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:57:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:57:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:58:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:58:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:58:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:59:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:59:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 20:59:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:00:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:00:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:00:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:01:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:01:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:01:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:02:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:02:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:02:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:03:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:03:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:03:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:04:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:04:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:04:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:05:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:05:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:05:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:06:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:06:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:06:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:07:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:07:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:07:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:08:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:08:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:08:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:09:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:09:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:09:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:10:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:10:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:10:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:11:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:11:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:11:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:12:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:12:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:12:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:13:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:13:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:13:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:14:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:14:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:14:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:15:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:15:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:15:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:16:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:16:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:16:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:17:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:17:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:17:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:18:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:18:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:18:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:19:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:19:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:19:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:20:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:20:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:20:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:21:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:21:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:21:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:22:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:22:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:22:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:23:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:23:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:23:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:24:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:24:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:24:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:25:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:25:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:25:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:26:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:26:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:26:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:27:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:27:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:27:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:28:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:28:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:28:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:29:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:29:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:29:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:30:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:30:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:30:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:31:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:31:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:31:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:32:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:32:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:32:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:33:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:33:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:33:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:34:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:34:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:34:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:35:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:35:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:35:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:36:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:36:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:36:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:37:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:37:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:37:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:38:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:38:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:38:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:39:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:39:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:39:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:40:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:40:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:40:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:41:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:41:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:41:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:42:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:42:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:42:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:43:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:43:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:43:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:44:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:44:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:44:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:45:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:45:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:45:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:46:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:46:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:46:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:47:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:47:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:47:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:48:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:48:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:48:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:49:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:49:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:49:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:50:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:50:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:50:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:51:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:51:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:51:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:52:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:52:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:52:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:53:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:53:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:53:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:54:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:54:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:54:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:55:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:55:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:55:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:56:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:56:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:56:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:57:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:57:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:57:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:58:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:58:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:58:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:59:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:59:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 21:59:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:00:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:00:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:00:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:01:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:01:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:01:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:02:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:02:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:02:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:03:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:03:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:03:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:04:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:04:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:04:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:05:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:05:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:05:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:06:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:06:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:06:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:07:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:07:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:07:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:08:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:08:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:08:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:09:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:09:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:09:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:10:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:10:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:10:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:11:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:11:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:11:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:12:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:12:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:12:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:13:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:13:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:13:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:14:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:14:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:14:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:15:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:15:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:15:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:16:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:16:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:16:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:17:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:17:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:17:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:18:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:18:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:18:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:19:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:19:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:19:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:20:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:20:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:20:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:21:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:21:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:21:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:22:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:22:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:22:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:23:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:23:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:23:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:24:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:24:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:24:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:25:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:25:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:25:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:26:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:26:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:26:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:27:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:27:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:27:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:28:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:28:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:28:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:29:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:29:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:29:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:30:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:30:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:30:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:31:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:31:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:31:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:32:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:32:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:32:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:33:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:33:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:33:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:34:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:34:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:34:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:35:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:35:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:35:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:36:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:36:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:36:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:37:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:37:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:37:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:38:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:38:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:38:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:39:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:39:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:39:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:40:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:40:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:40:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:41:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:41:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:41:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:42:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:42:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:42:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:43:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:43:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:43:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:44:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:44:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:44:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:45:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:45:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:45:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:46:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:46:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:46:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:47:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:47:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:47:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:48:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:48:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:48:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:49:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:49:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:49:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:50:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:50:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:50:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:51:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:51:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:51:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:52:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:52:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:52:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:53:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:53:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:53:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:54:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:54:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:54:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:55:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:55:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:55:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:56:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:56:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:56:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:57:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:57:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:57:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:58:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:58:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:58:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:59:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:59:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 22:59:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:00:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:00:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:00:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:01:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:01:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:01:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:02:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:02:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:02:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:03:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:03:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:03:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:04:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:04:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:04:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:05:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:05:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:05:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:06:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:06:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:06:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:07:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:07:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:07:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:08:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:08:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:08:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:09:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:09:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:09:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:10:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:10:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:10:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:11:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:11:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:11:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:12:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:12:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:12:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:13:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:13:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:13:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:14:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:14:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:14:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:15:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:15:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:15:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:16:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:16:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:16:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:17:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:17:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:17:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:18:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:18:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:18:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:19:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:19:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:19:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:20:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:20:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:20:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:21:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:21:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:21:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:22:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:22:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:22:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:23:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:23:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:23:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:24:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:24:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:24:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:25:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:25:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:25:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:26:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:26:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:26:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:27:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:27:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:27:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:28:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:28:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:28:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:29:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:29:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:29:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:30:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:30:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:30:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:31:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:31:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:31:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:32:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:32:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:32:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:33:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:33:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:33:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:34:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:34:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:34:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:35:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:35:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:35:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:36:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:36:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:36:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:37:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:37:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:37:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:38:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:38:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:38:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:39:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:39:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:39:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:40:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:40:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:40:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:41:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:41:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:41:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:42:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:42:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:42:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:43:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:43:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:43:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:44:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:44:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:44:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:45:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:45:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:45:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:46:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:46:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:46:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:47:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:47:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:47:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:48:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:48:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:48:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:49:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:49:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:49:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:50:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:50:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:50:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:51:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:51:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:51:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:52:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:52:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:52:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:53:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:53:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:53:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:54:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:54:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:54:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:55:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:55:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:55:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:56:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:56:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:56:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:57:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:57:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:57:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:58:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:58:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:58:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:59:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:59:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[10-Jul-2012 23:59:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:00:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:00:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:00:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:01:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:01:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:01:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:02:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:02:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:02:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:03:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:03:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:03:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:04:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:04:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:04:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:05:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:05:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:05:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:06:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:06:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:06:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:07:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:07:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:07:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:08:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:08:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:08:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:09:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:09:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:09:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:10:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:10:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:10:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:11:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:11:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:11:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:12:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:12:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:12:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:13:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:13:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:13:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:14:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:14:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:14:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:15:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:15:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:15:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:16:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:16:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:16:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:17:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:17:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:17:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:18:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:18:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:18:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:19:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:19:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:19:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:20:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:20:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:20:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:21:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:21:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:21:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:22:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:22:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:22:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:23:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:23:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:23:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:24:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:24:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:24:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:25:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:25:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:25:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:26:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:26:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:26:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:27:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:27:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:27:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:28:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:28:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:28:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:29:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:29:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:29:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:30:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:30:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:30:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:31:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:31:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:31:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:32:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:32:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:32:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:33:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:33:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:33:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:34:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:34:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:34:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:35:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:35:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:35:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:36:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:36:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:36:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:37:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:37:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:37:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:38:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:38:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:38:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:39:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:39:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:39:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:40:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:40:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:40:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:41:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:41:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:41:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:42:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:42:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:42:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:43:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:43:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:43:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:44:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:44:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:44:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:45:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:45:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:45:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:46:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:46:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:46:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:47:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:47:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:47:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:48:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:48:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:48:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:49:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:49:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:49:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:50:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:50:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:50:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:51:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:51:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:51:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:52:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:52:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:52:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:53:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:53:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:53:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:54:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:54:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:54:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:55:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:55:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:55:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:56:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:56:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:56:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:57:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:57:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:57:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:58:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:58:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:58:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:59:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:59:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 00:59:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:00:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:00:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:00:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:01:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:01:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:01:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:02:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:02:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:02:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:03:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:03:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:03:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:04:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:04:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:04:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:05:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:05:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:05:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:06:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:06:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:06:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:07:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:07:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:07:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:08:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:08:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:08:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:09:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:09:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:09:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:10:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:10:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:10:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:11:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:11:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:11:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:12:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:12:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:12:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:13:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:13:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:13:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:14:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:14:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:14:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:15:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:15:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:15:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:16:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:16:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:16:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:17:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:17:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:17:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:18:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:18:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:18:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:19:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:19:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:19:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:20:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:20:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:20:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:21:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:21:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:21:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:22:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:22:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:22:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:23:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:23:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:23:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:24:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:24:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:24:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:25:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:25:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:25:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:26:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:26:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:26:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:27:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:27:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:27:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:28:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:28:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:28:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:29:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:29:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:29:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:30:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:30:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:30:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:31:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:31:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:31:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:32:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:32:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:32:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:33:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:33:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:33:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:34:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:34:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:34:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:35:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:35:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:35:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:36:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:36:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:36:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:37:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:37:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:37:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:38:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:38:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:38:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:39:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:39:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:39:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:40:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:40:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:40:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:41:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:41:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:41:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:42:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:42:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:42:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:43:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:43:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:43:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:44:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:44:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:44:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:45:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:45:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:45:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:46:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:46:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:46:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:47:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:47:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:47:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:48:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:48:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:48:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:49:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:49:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:49:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:50:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:50:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:50:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:51:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:51:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:51:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:52:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:52:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:52:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:53:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:53:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:53:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:54:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:54:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:54:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:55:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:55:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:55:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:56:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:56:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:56:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:57:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:57:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:57:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:58:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:58:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:58:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:59:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:59:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 01:59:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:00:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:00:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:00:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:01:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:01:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:01:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:02:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:02:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:02:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:03:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:03:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:03:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:04:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:04:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:04:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:05:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:05:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:05:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:06:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:06:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:06:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:07:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:07:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:07:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:08:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:08:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:08:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:09:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:09:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:09:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:10:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:10:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:10:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:11:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:11:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:11:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:12:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:12:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:12:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:13:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:13:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:13:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:14:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:14:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:14:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:15:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:15:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:15:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:16:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:16:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:16:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:17:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:17:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:17:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:18:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:18:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:18:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:19:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:19:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:19:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:20:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:20:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:20:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:21:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:21:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:21:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:22:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:22:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:22:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:23:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:23:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:23:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:24:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:24:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:24:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:25:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:25:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:25:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:26:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:26:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:26:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:27:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:27:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:27:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:28:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:28:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:28:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:29:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:29:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:29:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:30:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:30:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:30:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:31:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:31:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:31:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:32:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:32:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:32:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:33:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:33:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:33:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:34:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:34:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:34:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:35:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:35:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:35:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:36:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:36:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:36:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:37:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:37:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:37:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:38:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:38:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:38:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:39:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:39:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:39:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:40:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:40:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:40:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:41:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:41:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:41:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:42:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:42:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:42:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:43:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:43:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:43:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:44:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:44:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:44:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:45:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:45:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:45:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:46:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:46:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:46:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:47:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:47:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:47:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:48:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:48:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:48:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:49:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:49:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:49:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:50:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:50:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:50:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:51:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:51:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:51:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:52:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:52:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:52:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:53:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:53:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:53:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:54:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:54:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:54:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:55:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:55:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:55:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:56:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:56:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:56:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:57:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:57:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:57:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:58:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:58:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:58:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:59:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:59:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 02:59:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:00:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:00:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:00:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:01:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:01:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:01:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:02:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:02:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:02:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:03:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:03:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:03:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:04:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:04:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:04:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:05:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:05:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:05:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:06:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:06:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:06:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:07:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:07:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:07:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:08:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:08:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:08:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:09:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:09:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:09:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:10:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:10:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:10:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:11:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:11:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:11:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:12:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:12:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:12:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:13:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:13:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:13:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:14:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:14:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:14:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:15:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:15:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:15:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:16:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:16:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:16:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:17:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:17:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:17:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:18:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:18:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:18:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:19:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:19:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:19:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:20:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:20:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:20:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:21:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:21:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:21:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:22:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:22:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:22:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:23:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:23:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:23:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:24:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:24:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:24:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:25:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:25:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:25:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:26:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:26:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:26:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:27:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:27:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:27:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:28:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:28:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:28:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:29:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:29:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:29:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:30:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:30:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:30:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:31:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:31:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:31:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:32:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:32:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:32:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:33:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:33:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:33:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:34:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:34:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:34:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:35:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:35:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:35:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:36:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:36:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:36:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:37:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:37:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:37:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:38:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:38:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:38:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:39:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:39:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:39:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:40:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:40:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:40:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:41:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:41:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:41:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:42:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:42:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:42:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:43:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:43:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:43:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:44:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:44:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:44:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:45:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:45:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:45:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:46:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:46:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:46:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:47:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:47:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:47:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:48:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:48:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:48:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:49:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:49:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:49:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:50:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:50:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:50:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:51:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:51:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:51:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:52:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:52:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:52:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:53:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:53:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:53:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:54:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:54:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:54:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:55:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:55:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:55:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:56:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:56:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:56:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:57:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:57:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:57:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:58:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:58:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:58:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:59:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:59:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 03:59:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:00:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:00:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:00:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:01:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:01:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:01:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:02:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:02:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:02:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:03:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:03:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:03:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:04:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:04:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:04:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:05:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:05:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:05:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:06:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:06:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:06:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:07:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:07:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:07:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:08:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:08:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:08:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:09:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:09:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:09:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:10:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:10:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:10:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:11:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:11:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:11:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:12:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:12:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:12:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:13:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:13:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:13:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:14:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:14:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:14:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:15:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:15:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:15:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:16:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:16:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:16:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:17:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:17:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:17:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:18:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:18:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:18:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:19:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:19:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:19:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:20:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:20:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:20:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:21:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:21:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:21:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:22:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:22:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:22:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:23:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:23:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:23:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:24:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:24:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:24:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:25:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:25:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:25:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:26:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:26:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:26:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:27:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:27:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:27:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:28:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:28:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:28:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:29:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:29:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:29:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:30:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:30:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:30:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:31:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:31:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:31:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:32:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:32:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:32:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:33:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:33:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:33:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:34:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:34:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:34:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:35:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:35:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:35:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:36:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:36:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:36:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:37:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:37:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:37:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:38:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:38:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:38:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:39:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:39:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:39:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:40:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:40:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:40:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:41:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:41:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:41:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:42:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:42:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:42:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:43:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:43:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:43:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:44:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:44:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:44:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:45:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:45:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:45:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:46:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:46:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:46:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:47:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:47:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:47:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:48:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:48:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:48:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:49:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:49:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:49:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:50:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:50:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:50:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:51:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:51:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:51:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:52:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:52:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:52:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:53:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:53:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:53:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:54:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:54:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:54:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:55:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:55:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:55:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:56:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:56:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:56:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:57:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:57:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:57:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:58:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:58:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:58:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:59:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:59:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 04:59:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:00:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:00:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:00:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:01:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:01:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:01:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:02:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:02:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:02:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:03:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:03:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:03:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:04:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:04:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:04:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:05:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:05:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:05:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:06:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:06:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:06:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:07:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:07:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:07:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:08:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:08:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:08:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:09:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:09:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:09:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:10:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:10:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:10:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:11:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:11:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:11:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:12:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:12:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:12:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:13:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:13:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:13:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:14:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:14:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:14:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:15:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:15:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:15:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:16:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:16:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:16:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:17:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:17:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:17:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:18:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:18:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:18:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:19:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:19:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:19:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:20:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:20:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:20:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:21:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:21:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:21:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:22:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:22:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:22:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:23:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:23:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:23:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:24:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:24:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:24:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:25:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:25:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:25:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:26:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:26:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:26:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:27:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:27:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:27:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:28:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:28:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:28:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:29:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:29:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:29:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:30:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:30:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:30:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:31:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:31:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:31:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:32:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:32:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:32:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:33:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:33:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:33:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:34:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:34:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:34:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:35:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:35:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:35:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:36:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:36:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:36:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:37:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:37:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:37:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:38:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:38:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:38:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:39:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:39:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:39:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:40:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:40:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:40:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:41:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:41:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:41:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:42:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:42:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:42:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:43:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:43:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:43:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:44:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:44:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:44:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:45:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:45:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:45:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:46:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:46:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:46:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:47:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:47:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:47:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:48:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:48:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:48:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:49:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:49:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:49:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:50:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:50:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:50:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:51:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:51:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:51:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:52:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:52:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:52:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:53:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:53:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:53:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:54:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:54:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:54:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:55:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:55:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:55:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:56:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:56:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:56:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:57:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:57:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:57:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:58:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:58:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:58:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:59:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:59:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 05:59:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:00:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:00:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:00:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:01:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:01:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:01:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:02:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:02:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:02:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:03:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:03:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:03:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:04:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:04:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:04:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:05:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:05:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:05:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:06:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:06:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:06:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:07:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:07:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:07:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:08:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:08:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:08:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:09:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:09:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:09:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:10:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:10:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:10:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:11:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:11:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:11:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:12:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:12:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:12:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:13:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:13:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:13:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:14:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:14:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:14:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:15:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:15:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:15:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:16:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:16:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:16:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:17:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:17:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:17:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:18:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:18:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:18:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:19:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:19:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:19:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:20:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:20:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:20:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:21:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:21:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:21:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:22:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:22:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:22:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:23:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:23:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:23:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:24:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:24:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:24:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:25:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:25:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:25:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:26:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:26:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:26:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:27:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:27:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:27:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:28:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:28:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:28:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:29:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:29:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:29:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:30:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:30:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:30:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:31:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:31:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:31:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:32:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:32:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:32:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:33:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:33:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:33:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:34:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:34:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:34:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:35:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:35:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:35:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:36:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:36:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:36:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:37:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:37:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:37:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:38:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:38:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:38:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:39:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:39:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:39:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:40:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:40:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:40:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:41:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:41:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:41:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:42:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:42:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:42:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:43:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:43:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:43:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:44:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:44:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:44:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:45:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:45:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:45:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:46:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:46:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:46:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:47:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:47:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:47:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:48:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:48:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:48:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:49:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:49:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:49:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:50:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:50:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:50:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:51:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:51:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:51:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:52:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:52:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:52:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:53:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:53:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:53:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:54:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:54:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:54:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:55:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:55:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:55:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:56:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:56:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:56:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:57:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:57:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:57:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:58:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:58:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:58:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:59:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:59:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 06:59:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:00:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:00:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:00:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:01:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:01:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:01:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:02:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:02:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:02:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:03:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:03:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:03:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:04:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:04:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:04:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:05:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:05:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:05:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:06:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:06:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:06:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:07:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:07:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:07:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:08:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:08:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:08:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:09:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:09:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:09:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:10:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:10:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:10:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:11:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:11:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:11:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:12:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:12:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:12:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:13:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:13:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:13:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:14:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:14:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:14:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:15:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:15:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:15:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:16:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:16:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:16:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:17:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:17:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:17:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:18:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:18:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:18:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:19:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:19:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:19:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:20:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:20:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:20:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:21:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:21:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:21:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:22:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:22:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:22:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:23:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:23:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:23:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:24:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:24:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:24:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:25:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:25:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:25:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:26:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:26:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:26:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:27:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:27:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:27:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:28:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:28:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:28:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:29:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:29:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:29:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:30:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:30:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:30:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:31:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:31:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:31:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:32:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:32:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:32:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:33:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:33:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:33:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:34:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:34:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:34:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:35:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:35:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:35:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:36:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:36:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:36:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:37:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:37:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:37:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:38:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:38:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:38:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:39:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:39:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:39:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:40:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:40:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:40:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:41:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:41:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:41:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:42:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:42:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:42:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:43:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:43:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:43:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:44:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:44:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:44:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:45:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:45:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:45:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:46:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:46:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:46:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:47:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:47:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:47:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:48:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:48:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:48:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:49:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:49:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:49:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:50:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:50:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:50:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:51:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:51:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:51:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:52:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:52:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:52:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:53:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:53:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:53:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:54:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:54:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:54:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:55:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:55:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:55:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:56:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:56:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:56:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:57:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:57:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:57:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:58:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:58:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:58:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:59:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:59:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:59:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:59:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:59:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:59:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 07:59:40] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 07:59:40] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:00:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:00:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:00:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:01:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:01:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:01:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:02:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:02:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:02:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:03:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:03:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:03:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:04:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:04:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:04:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:05:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:05:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:05:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:06:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:06:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:06:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:07:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:07:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:07:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:08:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:08:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:08:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:09:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:09:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:09:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:10:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:10:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:10:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:11:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:11:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:11:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:12:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:12:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:12:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:13:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:13:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:13:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:14:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:14:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:14:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:15:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:15:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:15:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:16:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:16:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:16:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:17:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:17:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:17:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:18:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:18:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:18:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:19:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:19:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:19:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:20:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:20:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:20:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:21:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:21:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:21:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:22:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:22:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:22:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:13] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:13] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:13] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:14] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:14] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:14] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:14] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:14] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:16] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:16] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:16] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:16] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:16] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:19] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:19] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:19] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:19] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:19] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:19] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:19] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:19] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:21] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:21] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:21] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:21] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:21] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:21] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:21] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:21] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:26] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:26] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:26] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:26] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:26] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:29] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:29] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:29] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:29] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:29] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:34] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:35] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:35] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:35] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:35] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 08:23:35] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 08:23:35] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 08:23:35] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 08:23:35] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 08:23:35] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 08:23:35] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 08:23:35] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:23:35] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:35] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:35] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 08:23:35] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:35] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:35] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 08:23:35] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:35] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:35] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 08:23:35] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:35] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:35] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 08:23:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:52] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:52] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:52] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:52] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:52] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:52] PHP Notice: Undefined index: user_comments in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\comments.php on line 22 +[11-Jul-2012 08:23:52] PHP Notice: Undefined variable: gp_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 21 +[11-Jul-2012 08:23:52] PHP Notice: Undefined variable: gp_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 25 +[11-Jul-2012 08:23:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:53] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:53] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:53] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:53] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:53] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:53] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:53] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:53] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:53] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:53] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 08:23:53] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:53] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 08:23:54] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:54] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:54] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:54] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:54] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:54] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:54] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:59] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:59] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:59] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:23:59] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:23:59] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:23:59] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:23:59] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:23:59] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 08:23:59] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 08:23:59] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 08:23:59] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 08:23:59] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 08:23:59] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 08:23:59] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 08:23:59] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:23:59] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:59] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:59] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 08:23:59] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:59] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:59] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 08:23:59] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:59] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:59] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 08:23:59] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:59] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 08:23:59] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 08:24:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:24:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:24:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:24:15] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:24:15] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:24:15] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:24:15] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:24:15] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:24:15] PHP Notice: Use of undefined constant get_category_parents - assumed 'get_category_parents' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 8 +[11-Jul-2012 08:24:15] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 08:24:15] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 08:24:15] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 08:24:15] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:24:15] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:24:15] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:24:15] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:24:15] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:24:15] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:24:15] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:24:20] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:24:20] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:24:20] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:24:20] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:24:20] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:24:20] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:24:20] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:24:20] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:24:20] PHP Notice: Use of undefined constant get_category_parents - assumed 'get_category_parents' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 8 +[11-Jul-2012 08:24:20] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 08:24:20] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 08:24:20] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 08:24:20] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:24:20] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:24:20] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:24:20] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:24:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:24:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:24:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:05] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:25:05] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:25:05] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:25:05] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:25:05] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:05] PHP Notice: Use of undefined constant get_category_parents - assumed 'get_category_parents' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 8 +[11-Jul-2012 08:25:05] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 08:25:05] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 08:25:05] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 08:25:05] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:25:05] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:25:05] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:25:05] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 08:25:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:29] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:25:29] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:25:29] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:25:29] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:25:29] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:25:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:26:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:26:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:26:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:27:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:27:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:27:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:27:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:27:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:27:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:27:49] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:27:49] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:27:49] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:27:49] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:27:50] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:50] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:50] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:50] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:50] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:28:50] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:28:50] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:28:51] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:51] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:28:51] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:28:51] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:28:51] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:28:51] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:52] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:52] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:53] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:28:53] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:28:53] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:28:53] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:28:53] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:28:53] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 08:29:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:22] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:22] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:29:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:22] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:33] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:33] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:29:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:29:33] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:33] PHP Notice: Undefined index: isDefault_checkbox_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 637 +[11-Jul-2012 08:29:33] PHP Notice: Undefined index: isDefault_selectbox_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 635 +[11-Jul-2012 08:29:33] PHP Notice: Undefined index: isDefault_selectbox_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 637 +[11-Jul-2012 08:29:33] PHP Notice: Undefined index: isDefault_multiselectbox_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 637 +[11-Jul-2012 08:29:33] PHP Notice: Undefined index: isDefault_radio_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 635 +[11-Jul-2012 08:29:33] PHP Notice: Undefined index: isDefault_radio_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 637 +[11-Jul-2012 08:29:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:29:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:30:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:30:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:30:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:31:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:31:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:31:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:32:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:32:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:32:33] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:32:33] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:32:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:32:33] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:32:33] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:32:34] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:32:34] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:32:34] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:32:34] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:34] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 08:32:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:32:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:33:40] PHP Parse error: syntax error, unexpected T_STRING in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 460 +[11-Jul-2012 08:34:40] PHP Parse error: syntax error, unexpected T_STRING in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 460 +[11-Jul-2012 08:35:40] PHP Parse error: syntax error, unexpected T_STRING in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 460 +[11-Jul-2012 08:36:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:36:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:36:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:36:17] PHP Fatal error: Call to a member function profile_fields() on a non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-template.php on line 288 +[11-Jul-2012 08:36:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:36:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:36:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:36:40] PHP Fatal error: Call to a member function profile_fields() on a non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-template.php on line 288 +[11-Jul-2012 08:37:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:37:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:37:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:37:40] PHP Fatal error: Call to a member function profile_fields() on a non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-template.php on line 288 +[11-Jul-2012 08:38:41] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:38:41] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:38:41] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:38:41] PHP Fatal error: Call to a member function profile_fields() on a non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-template.php on line 288 +[11-Jul-2012 08:39:40] PHP Parse error: syntax error, unexpected T_VARIABLE in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 460 +[11-Jul-2012 08:40:07] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:07] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:07] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:07] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:07] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:40:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:07] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:08] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:08] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:08] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:08] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:08] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:08] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:08] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:495) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 10 +[11-Jul-2012 08:40:08] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:495) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 11 +[11-Jul-2012 08:40:08] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:495) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 10 +[11-Jul-2012 08:40:08] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:495) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 11 +[11-Jul-2012 08:40:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:17] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:17] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:40:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:40:17] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:18] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:18] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:18] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:18] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:18] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:18] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:18] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:457) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 10 +[11-Jul-2012 08:40:18] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:457) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 11 +[11-Jul-2012 08:40:18] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:457) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 10 +[11-Jul-2012 08:40:18] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:457) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 11 +[11-Jul-2012 08:40:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:40:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:41:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:41:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:41:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:42:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:42:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:42:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:43:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:43:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:43:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:44:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:44:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:44:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:45:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:45:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:45:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:46:40] PHP Parse error: syntax error, unexpected T_VARIABLE in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 456 +[11-Jul-2012 08:47:40] PHP Parse error: syntax error, unexpected T_VARIABLE in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 456 +[11-Jul-2012 08:48:32] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 08:48:32] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 08:48:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:32] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:32] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:48:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:32] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 08:48:32] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 08:48:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:39] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:39] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:48:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:39] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:48:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 10 +[11-Jul-2012 08:48:40] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 11 +[11-Jul-2012 08:48:40] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:48:40] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:48:40] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 10 +[11-Jul-2012 08:48:40] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 11 +[11-Jul-2012 08:48:40] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:48:40] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:40] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 08:48:42] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 08:48:42] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 08:48:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:42] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:42] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:42] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:42] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:42] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:42] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:42] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:42] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:48:42] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:42] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:48:42] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 08:48:42] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 08:48:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:42] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:42] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:44] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 10 +[11-Jul-2012 08:48:44] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 11 +[11-Jul-2012 08:48:44] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 10 +[11-Jul-2012 08:48:44] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 11 +[11-Jul-2012 08:48:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:48:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:49:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:49:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:49:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:49:44] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\class-wp-ajax-response.php on line 129 +[11-Jul-2012 08:50:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:50:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:50:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:50:44] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\class-wp-ajax-response.php on line 129 +[11-Jul-2012 08:51:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:51:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:51:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:51:44] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\class-wp-ajax-response.php on line 129 +[11-Jul-2012 08:52:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:44] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\class-wp-ajax-response.php on line 129 +[11-Jul-2012 08:52:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:57] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:52:57] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:52:57] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:52:57] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:57] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:52:57] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:52:57] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:52:57] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:52:57] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:52:58] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 10 +[11-Jul-2012 08:52:58] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 10 +[11-Jul-2012 08:52:58] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 11 +[11-Jul-2012 08:52:58] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:463) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\ajax.php on line 11 +[11-Jul-2012 08:53:12] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:12] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:12] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:53:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:53:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:53:12] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:53:12] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:53:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:53:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:53:12] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 08:53:13] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 08:53:13] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 08:53:13] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:53:13] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:13] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 08:53:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:53:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:54:44] PHP Parse error: syntax error, unexpected ',' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 478 +[11-Jul-2012 08:55:40] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 08:55:40] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 08:55:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:55:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:55:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:55:40] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:55:40] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 08:55:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:55:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 08:55:40] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 08:55:40] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 08:55:41] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:41] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:41] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:42] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:42] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:42] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:42] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:55:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:56:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:56:42] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:56:42] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:57:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:57:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:57:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:58:42] PHP Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 480 +[11-Jul-2012 08:59:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:59:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 08:59:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:00:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:00:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:00:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:01:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:01:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:01:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:43] PHP Notice: Undefined variable: countries_array in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 481 +[11-Jul-2012 09:02:43] PHP Warning: Invalid argument supplied for foreach() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 481 +[11-Jul-2012 09:02:44] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 09:02:44] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 09:02:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:02:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:02:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:02:44] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:02:44] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:02:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:02:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:02:44] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 09:02:44] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 09:02:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:02:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:03:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:03:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:03:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:04:18] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:04:18] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:04:18] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Afghanistan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Aland Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Albania in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Algeria in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: American Samoa in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Andorra in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Angola in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Anguilla in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Antarctica in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Antigua and Barbuda in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Argentina in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Armenia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Aruba in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Australia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Austria in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Azerbaijan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Bahamas in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Bahrain in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Bangladesh in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Barbados in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Belarus in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Belgium in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Belize in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Benin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Bermuda in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Bhutan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Bolivia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Bosnia and Herzegovina in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Botswana in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Bouvet Island in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Brazil in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: British Indian Ocean Territory in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Brunei Darussalam in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Bulgaria in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Burkina Faso in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Burundi in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Cambodia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Cameroon in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Canada in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Cape Verde in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Cayman Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Central African Republic in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Chad in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Chile in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: China in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Christmas Island in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Cocos (Keeling) Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Colombia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Comoros in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Congo in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Congo, The Democratic Republic of The in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Cook Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Costa Rica in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Cote D'ivoire in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Croatia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Cuba in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Cyprus in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Czech Republic in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Denmark in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Djibouti in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Dominica in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Dominican Republic in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Ecuador in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Egypt in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: El Salvador in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Equatorial Guinea in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Eritrea in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Estonia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Ethiopia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Falkland Islands (Malvinas) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Faroe Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Fiji in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Finland in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: France in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: French Guiana in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: French Polynesia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: French Southern Territories in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Gabon in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Gambia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Georgia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Germany in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Ghana in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Gibraltar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Greece in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Greenland in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Grenada in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Guadeloupe in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Guam in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Guatemala in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Guernsey in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Guinea in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Guinea-bissau in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Guyana in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Haiti in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Heard Island and Mcdonald Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Holy See (Vatican City State) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Honduras in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Hong Kong in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Hungary in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Iceland in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: India in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Indonesia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Iran, Islamic Republic of in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Iraq in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Ireland in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Isle of Man in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Israel in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Italy in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Jamaica in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Japan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Jersey in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Jordan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Kazakhstan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Kenya in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Kiribati in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Korea, Democratic People's Republic of in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Korea, Republic of in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Kuwait in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Kyrgyzstan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Lao People's Democratic Republic in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Latvia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Lebanon in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Lesotho in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Liberia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Libyan Arab Jamahiriya in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Liechtenstein in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Lithuania in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Luxembourg in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Macao in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Macedonia, The Former Yugoslav Republic of in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Madagascar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Malawi in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Malaysia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Maldives in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Mali in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Malta in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Marshall Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Martinique in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Mauritania in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Mauritius in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Mayotte in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Mexico in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Micronesia, Federated States of in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Moldova, Republic of in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Monaco in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Mongolia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Montenegro in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Montserrat in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Morocco in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Mozambique in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Myanmar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Namibia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Nauru in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Nepal in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Netherlands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Netherlands Antilles in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: New Caledonia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: New Zealand in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Nicaragua in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Niger in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Nigeria in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Niue in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Norfolk Island in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Northern Mariana Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Norway in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Oman in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Pakistan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Palau in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Palestinian Territory, Occupied in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Panama in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Papua New Guinea in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Paraguay in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Peru in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Philippines in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Pitcairn in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Poland in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Portugal in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Puerto Rico in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Qatar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Reunion in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Romania in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Russian Federation in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Rwanda in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Saint Helena in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Saint Kitts and Nevis in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Saint Lucia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Saint Pierre and Miquelon in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Saint Vincent and The Grenadines in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Samoa in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: San Marino in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Sao Tome and Principe in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Saudi Arabia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Senegal in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Serbia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Seychelles in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Sierra Leone in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Singapore in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Slovakia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Slovenia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Solomon Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Somalia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: South Africa in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: South Georgia and The South Sandwich Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Spain in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Sri Lanka in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Sudan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Suriname in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Svalbard and Jan Mayen in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Swaziland in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Sweden in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Switzerland in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Syrian Arab Republic in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Taiwan, Province of China in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Tajikistan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Tanzania, United Republic of in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Thailand in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Timor-leste in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Togo in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Tokelau in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Tonga in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Trinidad and Tobago in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Tunisia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Turkey in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Turkmenistan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Turks and Caicos Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Tuvalu in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Uganda in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Ukraine in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: United Arab Emirates in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: United Kingdom in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: United States in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: United States Minor Outlying Islands in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Uruguay in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Uzbekistan in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Vanuatu in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Venezuela in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Viet Nam in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Virgin Islands, British in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Virgin Islands, U.S. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Wallis and Futuna in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Western Sahara in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Yemen in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Zambia in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: Zimbabwe in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php on line 490 +[11-Jul-2012 09:04:18] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:04:18] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:04:18] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:04:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:04:18] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:04:18] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:04:18] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:04:18] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:04:18] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:04:18] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:04:18] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:04:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:04:18] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:04:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:04:18] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:04:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:04:18] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:04:18] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:04:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:04:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:04:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:04:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:05:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:05:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:05:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:05:43] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:05:43] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:05:43] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:05:43] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:05:43] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:05:43] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:05:43] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:05:43] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:05:43] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:05:43] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:05:43] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:05:43] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:05:43] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:05:43] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:05:43] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:05:43] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:05:43] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:05:43] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:05:43] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:05:43] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:05:43] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:05:43] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:05:43] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:05:43] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:05:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:05:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:05:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:05:46] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\buddypress\functions-buddypress.php:484) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\class-wp-ajax-response.php on line 129 +[11-Jul-2012 09:06:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:17] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:06:18] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:06:18] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:06:18] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:06:18] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:06:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:06:18] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:06:18] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:06:18] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:06:18] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:06:18] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:06:18] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:06:18] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:18] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:18] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:18] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:18] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:18] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:18] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:18] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:38] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:06:38] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:06:38] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:06:38] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:06:38] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:06:38] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:06:38] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:06:38] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:06:38] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:06:38] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:06:38] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:06:38] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:06:38] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:38] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:38] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:38] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:38] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:38] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:38] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:38] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:38] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:38] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:38] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:38] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:44] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:06:44] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:06:44] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:06:44] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:06:45] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:06:45] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:06:45] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:06:45] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:06:45] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:06:45] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:06:45] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:06:45] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:06:45] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:45] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:45] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:45] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:45] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:45] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:45] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:45] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:45] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:45] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:45] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:06:45] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:06:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:06:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:16] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:16] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:07:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:16] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:07:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:07:17] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:07:17] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:07:17] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:17] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 09:07:21] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:21] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:21] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:21] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:21] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:07:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:21] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:28] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:28] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:28] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:28] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:28] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:28] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:07:28] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:28] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:28] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:29] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:07:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:29] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:07:29] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:07:29] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:07:29] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:29] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 09:07:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:38] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:38] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:38] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:38] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:38] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:38] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:07:38] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:38] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:38] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:38] PHP Notice: get_usermeta is deprecated since version 3.0! Use get_user_meta() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:54] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:54] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:54] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:54] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:54] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:54] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:54] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:54] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:54] PHP Notice: Undefined index: icl_show_hidden_languages in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\sitepress.class.php on line 6368 +[11-Jul-2012 09:07:54] PHP Notice: Undefined index: icl_admin_language_for_edit in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\sitepress-multilingual-cms\sitepress.class.php on line 6369 +[11-Jul-2012 09:07:54] PHP Notice: update_usermeta is deprecated since version 3.0! Use update_user_meta() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:55] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:55] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:55] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:55] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:55] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:55] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:55] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:07:55] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:55] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:55] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:55] PHP Notice: get_usermeta is deprecated since version 3.0! Use get_user_meta() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:55] PHP Notice: get_bloginfo was called with an argument that is deprecated since version 2.2! The home option is deprecated for the family of bloginfo() functions. Use the url option instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:56] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:56] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:56] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:56] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:56] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:56] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:59] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:59] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:59] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:07:59] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:07:59] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:07:59] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:07:59] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:07:59] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:07:59] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:07:59] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:07:59] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:07:59] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:07:59] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:07:59] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:07:59] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:07:59] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:07:59] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:07:59] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:07:59] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:07:59] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:07:59] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:07:59] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:07:59] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:07:59] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:07:59] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:07:59] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:07:59] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:08:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:06] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:08:06] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:08:06] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:08:06] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:08:06] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:08:06] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:08:06] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:08:06] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:08:06] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:08:06] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:08:06] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:08:06] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:08:06] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:06] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:06] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:08:06] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:06] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:06] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:08:06] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:06] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:06] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:08:06] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:06] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:06] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:08:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:09] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:08:09] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:08:09] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:08:09] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:08:09] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:18] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:18] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:18] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:18] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:08:18] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:08:18] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:08:18] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:08:19] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:08:19] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:08:19] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:08:19] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:08:19] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:08:19] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:08:19] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:08:19] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:08:19] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:19] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:19] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:08:19] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:19] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:19] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:08:19] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:19] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:19] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:08:19] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:19] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:08:19] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:08:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:23] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:08:23] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:08:23] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:08:23] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:08:23] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:23] PHP Notice: get_usermeta is deprecated since version 3.0! Use get_user_meta() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:27] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:08:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:27] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:08:27] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:08:27] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:08:27] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:08:27] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:39] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:08:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:40] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:08:40] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:08:40] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:08:40] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:08:40] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:55] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:55] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:08:56] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:56] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:56] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:08:56] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:08:56] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:08:56] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:08:56] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:08:56] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:02] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:02] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:02] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:02] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:02] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:09:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:02] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:09:03] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:09:03] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:09:03] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:09:03] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:03] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 09:09:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:05] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:05] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:09:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:05] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:16] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:16] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:09:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:16] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:16] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:16] PHP Notice: Undefined index: isDefault_checkbox_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 637 +[11-Jul-2012 09:09:16] PHP Notice: Undefined index: isDefault_selectbox_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 635 +[11-Jul-2012 09:09:16] PHP Notice: Undefined index: isDefault_selectbox_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 637 +[11-Jul-2012 09:09:16] PHP Notice: Undefined index: isDefault_multiselectbox_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 637 +[11-Jul-2012 09:09:16] PHP Notice: Undefined index: isDefault_radio_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 635 +[11-Jul-2012 09:09:16] PHP Notice: Undefined index: isDefault_radio_option in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-xprofile\bp-xprofile-classes.php on line 637 +[11-Jul-2012 09:09:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:21] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:21] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:21] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:21] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:21] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:09:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:21] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:09:21] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:09:22] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:09:22] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:09:22] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:09:22] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:22] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 09:09:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:09:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:24] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:10:24] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:10:24] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:10:24] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:10:24] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:32] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:10:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:33] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:10:33] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:10:33] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:10:33] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:10:33] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:36] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:10:36] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:10:36] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:10:36] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:10:36] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:10:36] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:10:36] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:10:36] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:10:36] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:10:36] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:10:36] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:10:36] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:10:36] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:10:36] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:10:36] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:10:36] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:10:36] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:10:36] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:10:36] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:10:36] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:10:36] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:10:36] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:10:36] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:10:36] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:10:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:10:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:07] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:07] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:07] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:07] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:11:07] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:11:07] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:11:07] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:11:07] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:11:07] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:11:07] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:11:07] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:11:07] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:11:07] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:11:07] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:11:07] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:11:07] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:07] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:07] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:11:07] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:07] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:07] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:11:07] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:07] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:07] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:11:07] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:07] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:07] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:11:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:11:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:11:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:11:17] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:11:17] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:11:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:11:17] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:11:18] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:18] PHP Notice: attribute_escape is deprecated since version 2.8! Use esc_attr() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:18] PHP Notice: attribute_escape is deprecated since version 2.8! Use esc_attr() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:18] PHP Notice: Undefined variable: field_1 in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-profile-widget-for-blogs\bp-profile-for-blogs.php on line 83 +[11-Jul-2012 09:11:18] PHP Notice: Undefined variable: field_500 in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-profile-widget-for-blogs\bp-profile-for-blogs.php on line 83 +[11-Jul-2012 09:11:18] PHP Notice: Undefined index: title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\invite-anyone\widgets\widgets.php on line 85 +[11-Jul-2012 09:11:18] PHP Notice: Undefined index: email_fields in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\invite-anyone\widgets\widgets.php on line 88 +[11-Jul-2012 09:11:18] PHP Notice: Undefined index: instruction_text in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\invite-anyone\widgets\widgets.php on line 91 +[11-Jul-2012 09:11:19] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:20] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:20] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:20] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:20] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:20] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:35] PHP Notice: Undefined index: exclude_admin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\most-active-members\most-active-members.php on line 240 +[11-Jul-2012 09:11:35] PHP Notice: Undefined index: exclude_zero in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\most-active-members\most-active-members.php on line 241 +[11-Jul-2012 09:11:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:38] PHP Notice: Undefined index: exclude_admin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\most-active-members\most-active-members.php on line 240 +[11-Jul-2012 09:11:38] PHP Notice: Undefined index: exclude_zero in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\most-active-members\most-active-members.php on line 241 +[11-Jul-2012 09:11:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:43] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:11:43] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:11:43] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:11:43] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:11:44] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:11:44] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:11:44] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:11:44] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:11:44] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:11:44] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:11:44] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:11:44] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:11:44] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:44] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:44] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:11:44] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:44] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:44] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:11:44] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:44] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:44] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:11:44] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:44] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:11:44] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:11:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:54] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:59] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:59] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:11:59] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:12:01] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:12:01] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:12:01] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:12:02] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 09:12:02] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 09:12:02] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 09:12:02] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 09:12:02] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:12:02] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:12:02] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 09:12:02] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 09:12:02] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:12:02] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:12:02] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:12:02] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:12:02] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:12:02] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:12:02] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:12:02] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:12:02] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:12:02] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:12:02] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 09:12:02] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 09:12:02] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 09:12:02] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:12:02] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:12:02] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 09:12:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:12:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:12:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:13:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:13:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:13:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:14:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:14:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:14:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:15:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:15:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:15:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:16:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:16:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:16:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:17:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:17:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:17:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:18:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:18:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:18:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:19:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:19:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:19:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:20:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:20:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:20:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:21:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:21:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:21:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:22:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:22:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:22:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:23:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:23:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:23:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:24:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:24:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:24:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:25:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:25:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:25:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:26:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:26:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:26:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:27:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:27:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:27:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:28:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:28:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:28:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:29:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:29:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:29:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:30:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:30:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:30:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:31:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:31:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:31:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:32:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:32:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:32:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:33:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:33:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:33:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:34:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:34:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:34:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:35:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:35:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:35:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:36:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:36:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:36:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:37:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:37:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:37:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:38:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:38:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:38:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:39:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:39:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:39:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:40:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:40:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:40:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:41:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:41:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:41:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:42:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:42:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:42:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:43:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:43:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:43:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:44:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:44:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:44:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:45:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:45:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:45:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:46:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:46:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:46:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:47:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:47:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:47:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:48:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:48:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:48:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:49:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:49:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:49:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:50:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:50:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:50:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:51:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:51:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:51:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:52:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:52:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:52:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:53:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:53:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:53:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:54:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:54:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:54:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:55:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:55:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:55:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:56:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:56:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:56:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:57:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:57:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:57:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:58:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:58:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:58:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:59:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:59:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 09:59:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:00:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:00:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:00:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:01:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:01:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:01:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:02:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:02:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:02:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:03:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:03:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:03:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:04:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:04:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:04:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:05:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:05:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:05:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:06:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:06:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:06:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:07:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:07:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:07:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:08:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:08:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:08:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:09:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:09:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:09:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:10:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:10:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:10:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:11:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:11:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:11:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:12:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:12:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:12:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:13:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:13:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:13:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:14:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:14:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:14:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:14:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:14:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:14:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:14:32] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:14:32] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:14:32] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:14:32] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:14:32] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:14:32] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:14:32] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:14:32] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:14:32] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:14:32] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:14:32] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:14:32] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:14:32] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:14:32] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:14:32] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:14:32] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:14:32] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:14:32] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:14:32] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:14:32] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:14:32] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 10:14:32] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:14:32] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:14:32] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:15:19] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:19] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:19] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:19] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:19] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:15:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:19] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:19] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:19] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:25] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:25] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:25] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:26] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:30] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:30] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:30] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:30] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:30] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:30] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:15:30] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:30] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:15:30] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:30] PHP Notice: attribute_escape is deprecated since version 2.8! Use esc_attr() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:30] PHP Notice: attribute_escape is deprecated since version 2.8! Use esc_attr() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:30] PHP Notice: Undefined variable: field_1 in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-profile-widget-for-blogs\bp-profile-for-blogs.php on line 83 +[11-Jul-2012 10:15:30] PHP Notice: Undefined variable: field_500 in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-profile-widget-for-blogs\bp-profile-for-blogs.php on line 83 +[11-Jul-2012 10:15:30] PHP Notice: Undefined index: title in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\invite-anyone\widgets\widgets.php on line 85 +[11-Jul-2012 10:15:30] PHP Notice: Undefined index: email_fields in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\invite-anyone\widgets\widgets.php on line 88 +[11-Jul-2012 10:15:30] PHP Notice: Undefined index: instruction_text in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\invite-anyone\widgets\widgets.php on line 91 +[11-Jul-2012 10:15:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:52] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:52] PHP Notice: Undefined index: score_type in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 158 +[11-Jul-2012 10:15:52] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:15:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:21] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:21] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:21] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:21] PHP Notice: Undefined index: score_type in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 158 +[11-Jul-2012 10:16:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:26] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:16:26] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:16:26] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:16:26] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:16:26] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 10:16:26] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:16:26] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:16:26] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:16:26] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:16:26] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:16:26] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:16:26] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:16:26] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:16:26] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:16:26] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:16:26] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:16:26] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:16:26] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:16:26] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:16:26] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:16:26] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:16:26] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:16:26] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:16:26] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:16:26] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 10:16:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:50] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:50] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:50] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:16:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:03] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:03] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:03] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:08] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:08] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:08] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:29] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:17:29] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:17:29] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:17:29] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:17:30] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 10:17:30] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:17:30] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:17:30] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:17:30] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:17:30] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:17:30] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:17:30] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:17:30] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:30] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:17:30] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:30] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:17:30] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:30] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:17:30] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:30] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:17:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:41] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:41] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:41] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:41] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:17:41] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:17:41] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:17:41] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:17:41] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 10:17:41] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:17:41] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:17:41] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 10:17:41] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:17:41] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:17:41] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 10:17:41] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:17:41] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:41] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:41] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:17:41] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:41] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:41] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:17:41] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:41] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:41] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:17:41] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:41] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 10:17:41] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 10:17:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:49] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:17:49] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:17:49] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:17:49] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:17:49] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:54] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:54] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:54] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:17:54] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:17:54] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:17:54] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:17:54] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:17:54] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:18:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:18:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:18:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:18:10] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:18:10] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:18:10] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:18:10] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:18:10] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:18:10] PHP Notice: Use of undefined constant get_category_parents - assumed 'get_category_parents' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 8 +[11-Jul-2012 10:18:10] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 10:18:10] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 10:18:10] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 10:18:10] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:18:10] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 10:18:10] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 10:18:10] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 10:18:10] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 10:18:10] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 10:18:10] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 10:18:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:18:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:18:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:18:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:18:31] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:18:31] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:18:31] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:18:31] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:21:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:21:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:21:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:21:58] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:21:58] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:21:58] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:21:58] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:21:58] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:01] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:01] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:01] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:01] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:22:01] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:22:01] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:22:01] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:22:01] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:03] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:03] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:03] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:03] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:22:03] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:22:03] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:22:03] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:22:03] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:04] PHP Notice: Undefined property: stdClass::$example in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 126 +[11-Jul-2012 10:22:04] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 126 +[11-Jul-2012 10:22:04] PHP Notice: Undefined property: stdClass::$example in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 127 +[11-Jul-2012 10:22:04] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 127 +[11-Jul-2012 10:22:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:09] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:22:09] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:22:09] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:22:09] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:22:09] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:22:09] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 10:23:07] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:23:07] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:23:07] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:23:07] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:23:07] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:23:07] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:23:07] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:23:07] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:23:07] PHP Notice: Undefined property: stdClass::$example in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 124 +[11-Jul-2012 10:23:07] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 124 +[11-Jul-2012 10:23:07] PHP Notice: Undefined property: stdClass::$example in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 125 +[11-Jul-2012 10:23:07] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 125 +[11-Jul-2012 10:23:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:23:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:23:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:23:10] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:23:10] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:23:10] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:23:10] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:23:10] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:23:10] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 10:24:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:24:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:24:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:24:44] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:24:44] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:24:44] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:24:44] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:24:44] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:24:44] PHP Notice: Undefined property: stdClass::$example in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 156 +[11-Jul-2012 10:24:44] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 156 +[11-Jul-2012 10:24:44] PHP Notice: Undefined property: stdClass::$example in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 157 +[11-Jul-2012 10:24:44] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 157 +[11-Jul-2012 10:24:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:24:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:24:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:24:47] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:24:47] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:24:47] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:24:47] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:24:47] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:24:47] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 10:25:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:25:51] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:25:51] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:25:51] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:25:51] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:25:51] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:25:51] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:25:51] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:25:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:25:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:25:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:25:53] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:25:53] PHP Fatal error: Call to undefined function bp_example_accept_terms() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 110 +[11-Jul-2012 10:26:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:40] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:40] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:26:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:40] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:41] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:41] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:41] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:41] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:41] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:41] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:52] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:26:52] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:26:52] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:52] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:52] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:26:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:52] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:26:52] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:26:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:54] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:26:54] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:26:54] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:54] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:54] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:54] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:54] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:54] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:54] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:54] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:54] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:26:54] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:54] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:26:54] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:26:55] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:26:55] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:55] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:26:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:02] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:02] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:02] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:02] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:02] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:02] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:02] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: thumbnail_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: image_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: format_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: thumbnail_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: image_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: format_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:02] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:03] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:03] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:03] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:03] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:03] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:03] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:03] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:03] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:03] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:03] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:03] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:27:03] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:03] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:03] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:03] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:06] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:06] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:06] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:06] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:06] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:06] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:06] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: thumbnail_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: image_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: format_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: thumbnail_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: image_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: format_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:06] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:07] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:07] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:07] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:07] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:07] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:07] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:07] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:27:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:07] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:07] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:12] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:12] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:12] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:12] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:12] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:12] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:12] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:27:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:12] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:12] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:13] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:14] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:14] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:14] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:14] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:14] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:27:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:14] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:14] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:18] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:18] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:18] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:18] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:18] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:18] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:18] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:18] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:18] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:18] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:18] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:27:18] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:18] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:18] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:18] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:19] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:19] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:19] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:19] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:19] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:19] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:22] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:22] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:22] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: thumbnail_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: image_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: format_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: thumbnail_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: image_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: format_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:22] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:23] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:23] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:23] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:23] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:27:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:23] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:23] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:25] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:25] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:25] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:25] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:25] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:25] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:25] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: thumbnail_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: image_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: format_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: thumbnail_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: image_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: format_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 715 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 724 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 726 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 729 +[11-Jul-2012 10:27:25] PHP Notice: Undefined index: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 730 +[11-Jul-2012 10:27:26] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:26] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 10:27:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:26] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:26] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:27:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 10:27:26] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: i in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: selected_sidebar in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 553 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 449 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:26] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 10:27:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:27:36] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:27:36] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:27:36] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:27:36] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:27:36] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:51] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:51] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:28:51] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:28:51] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:28:51] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:28:51] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:28:51] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:23] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:29:23] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:29:23] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:29:23] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:29:23] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:29] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:29:29] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:29:29] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:29:29] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:29:29] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:29] PHP Notice: get_usermeta is deprecated since version 3.0! Use get_user_meta() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:29:32] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:29:32] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:29:32] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:29:32] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:29:32] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:05] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:30:05] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:30:05] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:30:05] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:30:05] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:12] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:12] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:12] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:12] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:30:12] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:30:12] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:30:12] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:30:12] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:12] PHP Notice: get_usermeta is deprecated since version 3.0! Use get_user_meta() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:14] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:30:14] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:30:14] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:30:14] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:30:14] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:16] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:30:16] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:30:17] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:30:17] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:30:17] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:19] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:19] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:19] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:19] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:30:19] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:30:19] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:30:19] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:30:19] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:22] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:30:22] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:30:22] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:30:22] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:30:22] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:25] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 10:30:25] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 10:30:25] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 10:30:25] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 10:30:25] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:30:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:31:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:32:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:33:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:34:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:35:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:36:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:37:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:38:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:39:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:40:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:41:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:42:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:43:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:44:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:45:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:46:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:47:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:48:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:49:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:50:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:51:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:52:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:53:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:54:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:55:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:56:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:57:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:58:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 10:59:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:00:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:01:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:02:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:03:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:20] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:20] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:20] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:20] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:04:20] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:04:20] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:04:20] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:04:20] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 11:04:20] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 11:04:20] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 11:04:20] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 11:04:20] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 11:04:20] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 11:04:20] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 11:04:20] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:04:20] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:04:20] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:04:20] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 11:04:20] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:04:20] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:04:20] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 11:04:20] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:04:20] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:04:20] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 11:04:20] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:04:20] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:04:20] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 11:04:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:27] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:04:27] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:04:27] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:04:27] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:04:27] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:27] PHP Notice: Use of undefined constant get_category_parents - assumed 'get_category_parents' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 8 +[11-Jul-2012 11:04:27] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 11:04:27] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 11:04:27] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 19 +[11-Jul-2012 11:04:27] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:04:27] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 11:04:27] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 11:04:27] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 11:04:27] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 11:04:27] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 11:04:27] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-loop-dedication.php on line 34 +[11-Jul-2012 11:04:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:04:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:05:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:06:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:07:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:54] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:54] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:54] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:54] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:08:54] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:08:54] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:08:54] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:08:54] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:08:58] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:08:58] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:08:58] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:08:58] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:08:58] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:01] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:01] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:01] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:01] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:09:01] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:09:01] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:09:01] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:09:01] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:50] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:50] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:50] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:50] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:09:50] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:09:50] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:09:50] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:09:50] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:09:57] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:09:57] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:09:57] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:09:57] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:09:57] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:36] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:10:36] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:10:36] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:10:36] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:36] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:10:36] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:10:36] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:10:39] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:10:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:10:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:10:39] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:10:52] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:10:52] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:10:52] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:10:52] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:10:52] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:09] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:11:09] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:11:09] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:11:09] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:11:09] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 11:11:09] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 11:11:09] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 11:11:09] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 11:11:09] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 11:11:09] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 11:11:09] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 11:11:09] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:11:09] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:11:09] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:11:09] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 11:11:09] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:11:09] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:11:09] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 11:11:09] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:11:09] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:11:09] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 11:11:09] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:11:09] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 11:11:09] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 11:11:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:17] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:11:17] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:11:17] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:11:17] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:11:18] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:11:32] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:11:32] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:11:32] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:11:32] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:36] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:11:36] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:11:36] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:11:36] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:11:36] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:51] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:51] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:11:51] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:11:52] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:11:52] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:11:52] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:11:52] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:12:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:13:48] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:13:48] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:13:48] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:13:48] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:13:48] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:05] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:14:06] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:14:06] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:14:06] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:14:06] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:18] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:18] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:18] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:18] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:14:18] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:14:18] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:14:18] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:14:18] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:22] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:22] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:22] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:22] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:14:22] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:14:22] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:14:22] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:14:22] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:24] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:14:24] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:14:24] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:14:24] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:14:24] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:27] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:14:27] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:14:27] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:14:27] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:14:27] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:14:33] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:14:33] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:14:33] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:14:33] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:14:33] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:16] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:15:16] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:15:16] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:15:16] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:15:16] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:15:29] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:15:29] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:15:29] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:15:29] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:15:29] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:39] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:16:39] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:16:39] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:16:39] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:16:39] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:42] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:42] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:42] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:16:42] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:16:42] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:16:42] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:16:42] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:42] PHP Notice: get_usermeta is deprecated since version 3.0! Use get_user_meta() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:46] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:16:46] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:16:46] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:16:46] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:16:46] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:49] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:16:49] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:16:49] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:16:49] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:16:49] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:16:53] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:16:53] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:16:53] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:16:53] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:16:53] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:39] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:39] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:39] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:42] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:17:42] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:42] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:42] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:46] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:46] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:46] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:46] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:46] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:46] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:46] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:46] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:17:46] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:46] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:17:46] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:17:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:53] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:18:53] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:18:53] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:18:53] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:18:53] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:55] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:56] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:18:56] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:18:56] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:18:56] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:18:56] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:18:56] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:18:56] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:18:59] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:18:59] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:18:59] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:18:59] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:04] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:04] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:04] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:04] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:04] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:04] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:04] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:05] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:05] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:05] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:05] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:19:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:05] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 11:19:05] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:19:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:20:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:21:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:22:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:23:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:24:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:25:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:26:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:27:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:28:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:29:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:41] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:41] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:41] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:42] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:42] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:30:48] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:30:48] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:30:48] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:30:48] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:30:49] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:43:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:43:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:43:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:43:38] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:43:38] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:43:38] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:43:38] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:43:38] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:43:54] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:43:54] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:43:54] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:43:54] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:43:54] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:43:54] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:43:54] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:43:54] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:44:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:44:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:44:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:44:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:44:31] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:44:31] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:44:31] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:44:31] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:46:01] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:46:01] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:46:01] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:46:01] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:46:01] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:46:01] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:46:01] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:46:01] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:46:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:46:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:46:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:46:04] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:46:04] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:46:04] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:46:04] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:46:04] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:15] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:49:15] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:49:15] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:49:15] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:49:15] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:15] PHP Warning: require_once(dedication/new-dedication) [function.require-once]: failed to open stream: No such file or directory in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\template.php on line 390 +[11-Jul-2012 11:49:15] PHP Fatal error: require_once() [function.require]: Failed opening required 'dedication/new-dedication' (include_path='.;D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\server\php\PEAR') in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\template.php on line 390 +[11-Jul-2012 11:49:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:29] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:49:29] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:49:29] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:49:29] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:49:29] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:46] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:46] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:46] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:49:46] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:49:46] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:49:46] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:49:46] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:49:46] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:51:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:51:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:51:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:51:34] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:51:34] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:51:34] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:51:34] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:51:34] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:51:34] PHP Notice: Undefined variable: located in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 164 +[11-Jul-2012 11:51:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:51:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:51:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:51:53] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:51:53] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:51:53] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:51:53] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:51:53] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:23] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:52:23] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:52:23] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:52:23] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:52:23] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:41] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:41] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:41] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:41] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:52:41] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:52:41] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:52:41] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:52:41] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:41] PHP Fatal error: Cannot break/continue 1 level in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 158 +[11-Jul-2012 11:52:50] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:50] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:50] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:50] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:52:50] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:52:50] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:52:50] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:52:50] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:52:50] PHP Fatal error: Cannot break/continue 1 level in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 158 +[11-Jul-2012 11:53:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:53:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:53:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:53:16] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:53:16] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:53:16] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:53:16] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:53:16] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:53:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:53:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:53:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:53:39] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:53:39] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:53:39] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:53:39] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:53:39] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:54:18] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:54:18] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:54:18] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:54:18] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:54:18] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:54:18] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:54:18] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:54:18] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:54:40] PHP Parse error: syntax error, unexpected '}' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 154 +[11-Jul-2012 11:54:50] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:54:50] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:54:50] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 11:54:50] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 11:54:50] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 11:54:50] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 11:54:50] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 11:54:50] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:21:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:21:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:21:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:21:45] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:21:45] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:21:45] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:21:45] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:21:45] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:21:45] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:21:45] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 68 +[11-Jul-2012 13:21:45] PHP Notice: Undefined variable: items in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 78 +[11-Jul-2012 13:23:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:23:42] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:23:42] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:23:42] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:23:42] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:23:42] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:23:42] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:23:42] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:23:42] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:23:42] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 68 +[11-Jul-2012 13:23:42] PHP Notice: Undefined variable: items in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 79 +[11-Jul-2012 13:24:08] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:08] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:08] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:08] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:24:08] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:24:08] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:24:08] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:24:08] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:08] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:24:08] PHP Notice: Undefined variable: items in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 79 +[11-Jul-2012 13:24:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:35] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:24:35] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:24:35] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:24:35] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:24:35] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:35] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:24:56] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:56] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:56] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:56] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:24:56] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:24:56] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:24:56] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:24:56] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:24:56] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:25:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:28] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:25:28] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:25:28] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:25:28] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:25:28] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:28] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:25:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:32] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:25:32] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:25:32] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:25:32] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:25:32] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:37] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:25:37] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:25:37] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:25:37] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:25:38] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:40] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:25:40] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:25:40] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:25:40] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:25:40] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:25:43] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:25:43] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:25:43] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:25:43] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:25:43] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:34] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:26:34] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:26:34] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:26:35] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:26:35] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:37] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:26:37] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:26:37] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:26:37] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:26:37] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:41] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:41] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:41] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:41] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:26:41] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:26:41] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:26:41] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:26:41] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:45] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:26:45] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:26:45] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:26:45] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:26:46] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 13:26:46] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 13:26:46] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 13:26:46] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 13:26:46] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 13:26:46] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 13:26:46] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 13:26:46] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:26:46] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 13:26:46] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 13:26:46] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 13:26:46] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 13:26:46] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 13:26:46] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 13:26:46] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 13:26:46] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 13:26:46] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 13:26:46] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 13:26:46] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 13:26:46] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 13:26:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:49] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:26:49] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:26:49] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:26:49] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:26:49] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:53] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:26:53] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:26:53] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:26:53] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:26:53] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:55] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:55] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:26:55] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:26:55] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:26:55] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:26:55] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:26:57] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:26:58] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:26:58] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:26:58] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:26:58] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:31] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:31] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:31] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:31] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:31] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:31] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:27:31] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:31] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:31] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:37] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:37] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:37] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:37] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:37] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:38] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: add_contextual_help is deprecated since version 3.3! Use get_current_screen()->add_help_tab() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:38] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:38] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:38] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:27:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:27:45] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:27:52] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:27:55] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:27:57] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:28:00] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:28:04] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:28:08] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:28:11] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:28:14] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:28:22] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:28:26] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:28:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:32] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:32] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:28:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:32] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:32] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:33] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:33] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:33] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:37] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:37] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:37] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:37] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:37] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:37] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:28:37] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:37] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:37] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:43] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:43] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:43] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:43] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:43] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:43] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:28:43] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:43] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:43] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:44] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:44] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:28:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:44] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:52] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:52] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:52] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:28:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:52] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:52] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:56] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:56] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:56] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:56] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:56] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:56] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:56] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:56] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:56] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:28:56] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:56] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:28:56] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:28:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:00] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:00] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:29:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:00] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:01] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:01] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:01] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:01] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:01] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:01] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:03] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:04] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:05] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:06] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:08] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:10] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:14] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:18] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:18] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:18] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:24] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:30] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:32] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:34] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:29:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:40] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:40] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:40] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:40] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:44] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:29:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:44] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:44] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:48] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:48] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:48] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:48] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:48] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:48] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:48] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:53] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:53] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:53] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:53] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:53] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:53] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:53] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:53] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:29:53] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:53] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:29:53] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:54] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:54] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:54] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:54] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:54] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:54] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:59] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:59] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:29:59] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:00] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:00] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:30:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:00] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:00] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:01] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:01] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:01] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:01] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:01] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:01] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:21] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:21] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:21] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:22] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:22] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:30:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:22] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 13:30:22] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:22] PHP Notice: Object of class WP_Error could not be converted to int in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2558 +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:23] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by do_action('buddypress_page_bpdd-setup'), call_user_func_array, bpdd_admin_page_content, bpdd_import_users_activity, bp_activity_post_update, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 13:30:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:36] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:30:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:44] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:30:44] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:30:44] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:30:44] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:30:44] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:47] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:30:47] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:30:47] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:30:47] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:30:47] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:49] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:49] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:49] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:49] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:30:50] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:30:50] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:30:50] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:30:50] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:30:50] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:30:50] PHP Notice: Undefined variable: checked in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 72 +[11-Jul-2012 13:30:50] PHP Fatal error: Cannot use string offset as an array in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 72 +[11-Jul-2012 13:31:02] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:31:02] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:31:02] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:31:02] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:31:02] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:31:02] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:31:02] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:31:02] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:31:02] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:31:02] PHP Notice: Undefined variable: checked in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 71 +[11-Jul-2012 13:31:02] PHP Fatal error: Cannot use string offset as an array in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 71 +[11-Jul-2012 13:33:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:33:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:33:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:33:24] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:33:24] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:33:24] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:33:24] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:33:24] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:33:24] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:33:24] PHP Notice: Undefined variable: checked in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 72 +[11-Jul-2012 13:33:59] PHP Parse error: syntax error, unexpected T_VARIABLE in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 69 +[11-Jul-2012 13:34:06] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:34:06] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:34:06] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:34:06] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:34:06] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:34:06] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:34:06] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:34:06] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:34:06] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:34:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:34:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:34:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:34:24] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:34:24] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:34:24] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:34:24] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:34:24] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:34:24] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:35:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:35:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:35:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:35:47] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:35:47] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:35:47] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:35:47] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:35:47] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:35:47] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:35:47] PHP Warning: Invalid argument supplied for foreach() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 71 +[11-Jul-2012 13:36:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:36:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:36:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:36:04] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:36:04] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:36:04] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:36:04] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:36:04] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:36:04] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:36:04] PHP Warning: Invalid argument supplied for foreach() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 71 +[11-Jul-2012 13:37:02] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:02] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:02] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:02] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:37:02] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:37:02] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:37:02] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:37:02] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:02] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:37:18] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:18] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:18] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:18] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:37:18] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:37:18] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:37:18] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:37:18] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:18] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:37:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:26] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:37:26] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:37:26] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:37:26] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:37:26] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:26] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:37:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:37:31] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:37:31] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:37:31] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:37:31] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:56] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:56] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:56] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:56] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:37:56] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:37:56] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:37:56] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:37:56] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:37:56] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:40:12] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:40:12] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:40:12] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:40:12] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:40:12] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:40:12] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:40:12] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:40:12] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:40:12] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:40:12] PHP Warning: mysql_real_escape_string() expects parameter 1 to be string, object given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\wp-db.php on line 789 +[11-Jul-2012 13:40:12] PHP Warning: mysql_real_escape_string() expects parameter 1 to be string, object given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\wp-db.php on line 789 +[11-Jul-2012 13:40:12] PHP Warning: mysql_real_escape_string() expects parameter 1 to be string, object given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\wp-db.php on line 789 +[11-Jul-2012 13:40:12] PHP Warning: mysql_real_escape_string() expects parameter 1 to be string, object given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\wp-db.php on line 789 +[11-Jul-2012 13:40:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:40:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:40:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:40:28] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:40:28] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:40:28] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:40:28] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:40:28] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:40:28] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:40:28] PHP Warning: mysql_real_escape_string() expects parameter 1 to be string, object given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\wp-db.php on line 789 +[11-Jul-2012 13:40:28] PHP Warning: mysql_real_escape_string() expects parameter 1 to be string, object given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\wp-db.php on line 789 +[11-Jul-2012 13:40:28] PHP Warning: mysql_real_escape_string() expects parameter 1 to be string, object given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\wp-db.php on line 789 +[11-Jul-2012 13:40:28] PHP Warning: mysql_real_escape_string() expects parameter 1 to be string, object given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\wp-db.php on line 789 +[11-Jul-2012 13:43:07] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:43:07] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:43:07] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:43:07] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:43:07] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:43:07] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:43:07] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:43:07] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:43:07] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:43:07] PHP Fatal error: Cannot use object of type stdClass as array in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 75 +[11-Jul-2012 13:43:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:43:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:43:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:43:24] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:43:24] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:43:24] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:43:24] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:43:24] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:43:24] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:43:24] PHP Fatal error: Cannot use object of type stdClass as array in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\functions.php on line 76 +[11-Jul-2012 13:44:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:44:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:44:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:44:00] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:44:00] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:44:00] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:44:00] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:44:00] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:44:00] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:44:38] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:44:38] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:44:38] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:44:38] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:44:38] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:44:38] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:44:38] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:44:38] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:44:38] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:45:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:45:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:45:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:45:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:45:31] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:45:31] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:45:31] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:45:31] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:45:31] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:46:12] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:46:12] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:46:12] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:46:12] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:46:12] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:46:12] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:46:12] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:46:12] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:46:12] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:46:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:46:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:46:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:46:32] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:46:32] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:46:32] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:46:32] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:46:32] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:46:32] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 13:47:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:47:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:47:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:47:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:47:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:47:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:47:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:47:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:47:31] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:47:31] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:47:31] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:47:31] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:47:31] PHP Notice: Undefined index: meta_cats in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-meta.php on line 3 +[11-Jul-2012 13:47:31] PHP Notice: Undefined index: meta_tags in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\post-meta.php on line 57 +[11-Jul-2012 13:47:31] PHP Fatal error: Class 'DedicationFromSite' not found in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\page-new-dedication.php on line 19 +[11-Jul-2012 13:55:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:55:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:55:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:55:36] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 13:55:36] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 13:55:36] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 13:55:36] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 13:55:36] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 13:55:36] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 14:01:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:01:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:01:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:01:45] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:01:45] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:01:45] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:01:45] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:01:45] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:01:45] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 14:03:12] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:03:12] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:03:12] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:03:12] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:03:12] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:03:12] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:03:12] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:03:12] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:03:12] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 14:03:12] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 78 +[11-Jul-2012 14:03:12] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:03:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:03:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:03:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:03:27] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:03:27] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:03:27] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:03:27] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:03:27] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:03:27] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 14:03:27] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 78 +[11-Jul-2012 14:03:27] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:04:21] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:04:21] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:04:21] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:04:21] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:04:21] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:04:21] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:04:21] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:04:21] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:04:21] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 14:04:21] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 78 +[11-Jul-2012 14:04:21] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:05:20] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:05:20] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:05:20] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:05:20] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:05:20] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:05:20] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:05:20] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:05:20] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:05:20] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 14:05:20] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:06:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:34] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:06:34] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:06:34] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:06:34] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:06:35] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:35] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 14:06:35] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:06:50] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:50] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:50] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:50] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:06:50] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:06:50] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:06:50] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:06:51] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:51] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 446 +[11-Jul-2012 14:06:51] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:06:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:58] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:06:58] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:06:58] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:06:58] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:06:58] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:06:58] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 14:10:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:10:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:10:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:10:30] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:10:30] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:10:30] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:10:30] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:10:30] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:10:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:10:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:10:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:10:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:10:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:10:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:10:30] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:12:48] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:12:48] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:12:48] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:12:48] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:12:48] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:12:48] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:12:48] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:12:48] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:12:48] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:12:48] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:12:48] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:12:48] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:12:48] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:12:48] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:12:48] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:13:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:13:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:13:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:13:10] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:13:10] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:13:10] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:13:10] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:13:10] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:13:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:13:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:13:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:13:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:13:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:13:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:13:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:15:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:15:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:15:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:15:28] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:15:28] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:15:29] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:15:29] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:15:29] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:15:29] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:15:29] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:15:29] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:15:29] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:15:29] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:15:29] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-members\bp-members-template.php on line 499 +[11-Jul-2012 14:15:29] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:16:01] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:16:01] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:16:01] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:16:01] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:16:01] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:16:01] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:16:01] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:16:01] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:16:02] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:16:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:16:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:16:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:16:27] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:16:27] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:16:27] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:16:27] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:16:27] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:16:27] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:17:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:17:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:17:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:17:28] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:17:28] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:17:28] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:17:28] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:17:28] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:17:28] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:17:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:17:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:17:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:17:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:17:31] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:17:31] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:17:31] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:17:31] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:17:31] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:18:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:18:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:18:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:18:23] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:18:23] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:18:23] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:18:23] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:18:23] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:18:23] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 14:18:23] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:18:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:18:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:18:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:18:28] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:18:28] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:18:28] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:18:28] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:18:28] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:18:28] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 14:18:28] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:20:11] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:20:11] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:20:11] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:20:11] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:20:11] PHP Fatal error: Call to undefined function bp_example_accept_terms() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 110 +[11-Jul-2012 14:21:02] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:21:02] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:21:02] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:21:02] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:21:02] PHP Fatal error: Call to undefined function bp_get_example_slug() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php on line 116 +[11-Jul-2012 14:21:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:21:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:21:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:21:36] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:21:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:21:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:21:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:21:37] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:21:37] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:21:37] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:21:37] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:21:37] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:20] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:20] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:20] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:20] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:24:20] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:24:20] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:24:20] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:24:20] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:20] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 14:24:20] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:24:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:23] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:24:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:28] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:24:28] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:24:28] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:24:28] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:24:28] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:24:28] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 14:24:28] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:28:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:28:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:28:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:28:37] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:28:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:28:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:28:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:28:40] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:28:40] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:28:40] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:28:40] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:28:40] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:28:40] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 14:28:40] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:28:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:28:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:28:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:28:44] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:28:44] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:28:44] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:28:44] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:28:44] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:44] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:29:44] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:29:44] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:29:44] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:29:44] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:47] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:47] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:47] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:47] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:29:47] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:29:47] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:29:47] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:29:47] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:47] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 14:29:47] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:29:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:51] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:51] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:29:52] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:30:53] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:30:53] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:30:53] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:30:53] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:31:08] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:31:08] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:31:08] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:31:08] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:31:08] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php:110) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\pluggable.php on line 881 +[11-Jul-2012 14:31:25] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:31:25] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:31:25] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:31:25] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:31:25] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php:110) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\pluggable.php on line 881 +[11-Jul-2012 14:31:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:31:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:31:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:31:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:31:31] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:31:31] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:31:31] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:31:31] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:04] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:53:04] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\bp-dedication-screens.php:110) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\pluggable.php on line 881 +[11-Jul-2012 14:53:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:37] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:53:37] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:37] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:37] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:37] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:53:37] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:53:37] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:53:37] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:53:37] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:53:57] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:53:57] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:53:57] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:53:57] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:53:57] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:00] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:00] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:00] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:00] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:54:00] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:54:00] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:54:00] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:54:00] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:00] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 14:54:00] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:54:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:05] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:54:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:05] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:54:05] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:54:05] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:54:05] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:54:05] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:14] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:54:14] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:54:14] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:54:14] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:54:14] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:14] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 14:54:14] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 14:54:18] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:18] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:18] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:18] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:54:44] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:44] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:44] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:54:44] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:54:44] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by require('D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-blog-header.php'), wp, WP->main, do_action_ref_array, call_user_func_array, bp_screens, do_action('bp_screens'), call_user_func_array, bp_dedication_new_dedication, bp_dedication_create_new_dedication, bp_dedication_record_activity, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 14:54:44] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\wp-db.php:959) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\pluggable.php on line 881 +[11-Jul-2012 14:55:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:55:51] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:55:51] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:55:51] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:55:51] WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 for query DELETE FROM wp_bp_activity_meta WHERE meta_key='bpml_google_translation' AND activity_id= made by require('D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-blog-header.php'), wp, WP->main, do_action_ref_array, call_user_func_array, bp_screens, do_action('bp_screens'), call_user_func_array, bp_dedication_new_dedication, bp_dedication_create_new_dedication, bp_dedication_record_activity, bp_activity_add, BP_Activity_Activity->save, do_action_ref_array, call_user_func_array, bpml_activities_bp_activity_after_save_hook, bpml_activities_clear_cache +[11-Jul-2012 14:55:51] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\wp-db.php:959) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\pluggable.php on line 881 +[11-Jul-2012 14:59:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:59:51] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:59:51] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:59:51] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:59:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:59:51] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:59:51] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:59:51] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:59:51] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:59:51] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:59:51] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:59:51] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:59:55] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:59:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:59:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 14:59:55] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 14:59:55] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 14:59:55] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 14:59:55] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 14:59:55] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:01:30] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:01:30] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:01:30] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:01:30] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:01:31] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:01:31] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:01:31] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:01:31] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:08] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:08] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:08] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:08] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:02:08] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:02:08] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:02:08] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:02:08] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:10] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:02:10] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:02:10] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:02:10] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:02:10] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:10] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 15:02:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 15:02:14] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:14] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:14] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:02:14] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:07:27] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:27] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:27] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:27] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:07:27] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:07:27] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:07:27] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:07:27] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:27] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 15:07:27] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 15:07:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:07:32] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:32] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:32] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:32] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:07:32] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:07:32] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:07:32] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:07:32] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:36] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:36] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:36] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:36] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:07:36] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:07:36] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:07:36] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:07:36] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:45] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:45] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:45] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:45] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:07:52] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:52] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:52] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:52] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:07:52] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:07:52] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:07:52] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:07:52] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:57] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:57] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:57] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:57] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:07:57] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:07:57] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:07:57] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:07:57] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:07:57] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 15:07:57] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 15:14:31] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:14:31] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:14:31] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:14:31] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:14:31] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\create-dedication.php:13) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\pluggable.php on line 881 +[11-Jul-2012 15:24:07] PHP Parse error: syntax error, unexpected '=' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\create-dedication.php on line 21 +[11-Jul-2012 15:24:55] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:24:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:24:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:24:55] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:24:55] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:24:55] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:24:55] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:24:55] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:24:55] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 15:24:55] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 15:24:58] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:24:58] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:24:58] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:24:58] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:24:58] PHP Notice: Undefined variable: post_status in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\create-dedication.php on line 38 +[11-Jul-2012 15:24:58] PHP Warning: array_filter() expects parameter 1 to be array, string given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\post.php on line 2503 +[11-Jul-2012 15:24:58] PHP Notice: Undefined index: post_type in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 708 +[11-Jul-2012 15:24:58] PHP Notice: Undefined index: post_type in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 710 +[11-Jul-2012 15:24:58] PHP Notice: Undefined variable: meta_boxes in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 713 +[11-Jul-2012 15:24:58] PHP Warning: Invalid argument supplied for foreach() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 713 +[11-Jul-2012 15:24:58] PHP Warning: Cannot modify header information - headers already sent by (output started at D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\create-dedication.php:13) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\pluggable.php on line 881 +[11-Jul-2012 15:26:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:26:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:26:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:26:09] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:26:09] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:26:09] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:26:09] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:26:09] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:26:09] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 15:26:09] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 15:29:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:42] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:42] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:42] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:29:42] PHP Warning: array_filter() expects parameter 1 to be array, string given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\post.php on line 2503 +[11-Jul-2012 15:29:42] PHP Notice: Undefined index: post_type in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 708 +[11-Jul-2012 15:29:42] PHP Notice: Undefined index: post_type in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 710 +[11-Jul-2012 15:29:42] PHP Notice: Undefined variable: meta_boxes in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 713 +[11-Jul-2012 15:29:42] PHP Warning: Invalid argument supplied for foreach() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 713 +[11-Jul-2012 15:29:42] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:42] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:42] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:43] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:43] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:43] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:44] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:29:44] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:29:44] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:29:44] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:29:44] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:51] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:51] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:51] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:51] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:29:51] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:29:51] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:29:51] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:29:51] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:51] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 15:29:51] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 15:29:55] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:55] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:55] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:55] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:29:55] PHP Warning: array_filter() expects parameter 1 to be array, string given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\post.php on line 2503 +[11-Jul-2012 15:29:55] PHP Notice: Undefined index: post_type in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 708 +[11-Jul-2012 15:29:55] PHP Notice: Undefined index: post_type in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 710 +[11-Jul-2012 15:29:55] PHP Notice: Undefined variable: meta_boxes in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 713 +[11-Jul-2012 15:29:55] PHP Warning: Invalid argument supplied for foreach() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 713 +[11-Jul-2012 15:29:56] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:56] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:56] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:56] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:56] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:56] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:29:57] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:29:57] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:29:57] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:29:57] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:29:57] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:02] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:02] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:02] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:02] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:30:03] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:03] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:03] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:03] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:30:03] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:30:03] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:30:03] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:30:03] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:03] PHP Notice: Undefined index: user_comments in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\comments.php on line 22 +[11-Jul-2012 15:30:03] PHP Notice: Undefined variable: gp_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 21 +[11-Jul-2012 15:30:03] PHP Notice: Undefined variable: gp_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 25 +[11-Jul-2012 15:30:03] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 15:30:03] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:03] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:03] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:04] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:04] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:04] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:04] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:30:04] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:30:04] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:30:04] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:30:04] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:30:04] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:30:04] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:30:04] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:30:04] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:04] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:04] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 15:30:04] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 15:30:04] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 15:30:04] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 15:30:04] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:04] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:04] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:04] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:04] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:04] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:05] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:05] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:05] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:05] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:30:05] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:30:05] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:30:05] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:30:05] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:30:05] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:30:05] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:30:05] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:30:05] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:05] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:30:05] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 15:30:05] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 15:30:05] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 15:30:05] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 15:30:05] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:05] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:05] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:05] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:05] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:30:05] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:31:03] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:03] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:03] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:03] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:31:03] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:31:03] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:31:03] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:31:03] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:17] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:31:17] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:31:17] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:31:17] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:31:17] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:17] PHP Notice: Undefined index: user_comments in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\comments.php on line 22 +[11-Jul-2012 15:31:17] PHP Notice: Undefined variable: gp_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 21 +[11-Jul-2012 15:31:17] PHP Notice: Undefined variable: gp_settings in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 25 +[11-Jul-2012 15:31:17] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 15:31:17] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:31:17] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:31:17] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:31:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:17] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:17] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:17] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:18] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:31:18] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:31:18] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:31:18] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:31:18] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:31:18] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:31:18] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:31:18] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:31:18] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:18] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:31:18] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 15:31:18] PHP Notice: Use of undefined constant is_home - assumed 'is_home' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\sidebar.php on line 33 +[11-Jul-2012 15:31:18] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 15:31:18] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 15:31:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:31:18] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:31:18] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:31:18] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:31:18] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:31:18] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 15:32:09] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:09] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:09] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:09] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:32:09] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:32:09] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:32:09] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:32:09] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:11] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:11] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:11] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:11] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:32:12] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:32:12] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:32:12] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:32:12] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:12] PHP Notice: Undefined variable: event in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\dedication\new-dedication.php on line 8 +[11-Jul-2012 15:32:12] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\buddypress\bp-groups\bp-groups-template.php on line 328 +[11-Jul-2012 15:32:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:15] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:32:15] PHP Warning: array_filter() expects parameter 1 to be array, string given in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\post.php on line 2503 +[11-Jul-2012 15:32:15] PHP Notice: Undefined index: post_type in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 708 +[11-Jul-2012 15:32:15] PHP Notice: Undefined index: post_type in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 710 +[11-Jul-2012 15:32:15] PHP Notice: Undefined variable: meta_boxes in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 713 +[11-Jul-2012 15:32:15] PHP Warning: Invalid argument supplied for foreach() in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 713 +[11-Jul-2012 15:32:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:16] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:16] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:16] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:17] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:32:17] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:32:17] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:32:17] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:32:17] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:20] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:20] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:20] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:32:20] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 421 +[11-Jul-2012 15:32:20] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 15:32:20] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 142 +[11-Jul-2012 15:32:20] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:32:20] PHP Notice: bp_is_home is deprecated since version 1.5! Use bp_is_my_profile instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:07] PHP Parse error: syntax error, unexpected ')' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\create-dedication.php on line 60 +[11-Jul-2012 15:55:12] PHP Parse error: syntax error, unexpected ')' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\create-dedication.php on line 60 +[11-Jul-2012 15:55:17] PHP Parse error: syntax error, unexpected ')' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\create-dedication.php on line 60 +[11-Jul-2012 15:55:20] PHP Parse error: syntax error, unexpected ')' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\create-dedication.php on line 60 +[11-Jul-2012 15:55:26] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:26] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:26] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:26] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:27] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:27] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:27] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:55:27] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:27] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:27] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:27] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:27] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:28] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:28] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:28] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:29] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:29] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:29] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:34] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:34] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:34] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:34] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:34] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:34] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:34] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:34] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:34] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:55:34] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:34] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:34] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:35] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:35] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:35] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:39] PHP Notice: wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 15:55:39] PHP Notice: wp_enqueue_script was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or init hooks. Please see Debugging in WordPress for more information. (This message was added in version 3.3.) in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2748 +[11-Jul-2012 15:55:39] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:39] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:39] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:39] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:39] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:55:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:39] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:55:39] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 460 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 480 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: size in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: details in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 482 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 438 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 15:55:39] PHP Notice: Undefined variable: name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-meta-options.php on line 470 +[11-Jul-2012 15:55:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:55:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:56:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:56:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:56:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:57:40] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:57:40] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:57:40] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:58:40] PHP Parse error: syntax error, unexpected ';' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\plugins\bp-dedication\includes\create-dedication.php on line 70 +[11-Jul-2012 15:59:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:10] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:59:10] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:59:10] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:59:10] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:10] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:59:10] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 15:59:10] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:59:10] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 15:59:10] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:11] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:11] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:11] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:11] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:11] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 15:59:11] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:08:10] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:08:10] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:08:10] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:08:10] PHP Notice: Undefined variable: page_var in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 441 +[11-Jul-2012 16:08:10] PHP Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'bp_dedication_add_css' not found or invalid function name in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\plugin.php on line 403 +[11-Jul-2012 16:08:10] PHP Notice: Undefined index: skin in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\functions.php on line 147 +[11-Jul-2012 16:08:10] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 16:08:10] PHP Notice: Undefined variable: counter in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 59 +[11-Jul-2012 16:08:10] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 16:08:10] PHP Notice: Use of undefined constant width - assumed 'width' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 16:08:10] PHP Notice: Use of undefined constant height - assumed 'height' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\admin\inc\theme-widgets.php on line 79 +[11-Jul-2012 16:08:10] PHP Notice: Undefined variable: orderby in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 16:08:10] PHP Notice: Undefined variable: gdsr_sort in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 16:08:10] PHP Notice: Undefined variable: gdsr_order in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 9 +[11-Jul-2012 16:08:10] PHP Notice: WP_Query was called with an argument that is deprecated since version 3.1! "caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:08:10] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 16:08:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 16:08:10] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 16:08:10] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 16:08:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 16:08:10] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 16:08:10] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 16:08:10] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 16:08:10] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 16:08:11] PHP Notice: Undefined index: gp_gdsr in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 16:08:11] PHP Notice: Trying to get property of non-object in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\loop-data.php on line 46 +[11-Jul-2012 16:08:11] PHP Notice: Use of undefined constant url - assumed 'url' in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\index.php on line 26 +[11-Jul-2012 16:11:07] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:07] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:07] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:07] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:07] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:07] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:07] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:10] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 16:11:10] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:10] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:10] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:11] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:11] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:11] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:11] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:11] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:11] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:15] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:15] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:15] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:15] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:15] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:15] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:15] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:15] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:15] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:15] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:19] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:19] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:19] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:19] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:19] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:19] PHP Notice: get_plugin_data was called with an argument that is deprecated since version 3.0! The Site Wide Only: true plugin header is deprecated. Use Network: true instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:19] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 16:11:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:19] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:19] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:20] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:20] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:20] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:20] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:20] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:20] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:23] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:23] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:23] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:23] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:23] PHP Notice: Undefined index: dont_load_js_file in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-content\themes\score\lib\scripts\wp-favorite-posts\wp-favorite-posts.php on line 430 +[11-Jul-2012 16:11:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:23] PHP Notice: has_cap was called with an argument that is deprecated since version 2.0! Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2712 +[11-Jul-2012 16:11:23] PHP Notice: get_theme_data is deprecated since version 3.4! Use wp_get_theme() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:24] PHP Notice: add_custom_background is deprecated since version 3.4! Use add_theme_support( 'custom-background', $args ) instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:24] PHP Notice: register_sidebar_widget is deprecated since version 2.8! Use wp_register_sidebar_widget() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 +[11-Jul-2012 16:11:24] PHP Notice: register_widget_control is deprecated since version 2.8! Use wp_register_widget_control() instead. in D:\Trabajo\Asong2u\WP\InstantWP_4.2\iwpserver\htdocs\wordpress\wp-includes\functions.php on line 2628 diff --git a/wp-content/index.php b/wp-content/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/bp-dedication/bp-dedication.php b/wp-content/plugins/bp-dedication/bp-dedication.php new file mode 100644 index 0000000..4f9a565 --- /dev/null +++ b/wp-content/plugins/bp-dedication/bp-dedication.php @@ -0,0 +1,76 @@ + diff --git a/wp-content/plugins/bp-dedication/dedication.php b/wp-content/plugins/bp-dedication/dedication.php new file mode 100644 index 0000000..f43923f --- /dev/null +++ b/wp-content/plugins/bp-dedication/dedication.php @@ -0,0 +1,234 @@ +current_action == BP_DEDICATION_SLUG || ( isset($bp->action_variables[1]) && $bp->action_variables[1] == BP_DEDICATION_SLUG )) { + wp_enqueue_script('jquery-autocomplete-js', plugins_url("includes/js/jquery.autocomplete-min.js", __FILE__), array('jquery')); + /* wp_enqueue_script('invite-anyone-autocomplete-js', WP_PLUGIN_URL . '/invite-anyone/group-invites/jquery.autocomplete/jquery.autocomplete-min.js', array('jquery')); + wp_register_script('invite-anyone-js', WP_PLUGIN_URL . '/invite-anyone/group-invites/group-invites-js.js', array('invite-anyone-autocomplete-js')); + wp_enqueue_script('invite-anyone-js'); */ + } +} + +add_action('wp_head', 'bp_dedication_add_js', 1); + +function bp_dedication_css() { + global $bp; + + if ($bp->current_action == BP_DEDICATION_SLUG || ( isset($bp->action_variables[1]) && $bp->action_variables[1] == BP_DEDICATION_SLUG )) { + /* $style_url = WP_PLUGIN_URL . '/invite-anyone/group-invites/group-invites-css.css'; + $style_file = WP_PLUGIN_DIR . '/invite-anyone/group-invites/group-invites-css.css'; + + if (file_exists($style_file)) { + wp_register_style('invite-anyone-group-invites-style', $style_url); + wp_enqueue_style('invite-anyone-group-invites-style'); + } */ + } +} + +add_action('wp_print_styles', 'bp_dedication_add_css'); + +class BP_Dedication extends BP_Component { + /* var $enable_nav_item = true; + var $enable_create_step = true; + var $enable_edit_item = false; */ + + /** + * Constructor method + * + * You can do all sorts of stuff in your constructor, but it's recommended that, at the + * very least, you call the parent::start() function. This tells the parent BP_Component + * to begin its setup routine. + * + * BP_Component::start() takes three parameters: + * (1) $id - A unique identifier for the component. Letters, numbers, and underscores + * only. + * (2) $name - This is a translatable name for your component, which will be used in + * various places through the BuddyPress admin screens to identify it. + * (3) $path - The path to your plugin directory. Primarily, this is used by + * BP_Component::includes(), to include your plugin's files. See loader.php + * to see how BP_EXAMPLE_PLUGIN_DIR was defined. + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ + function __construct() { + global $bp; + + parent::start( + BP_DEDICATION_SLUG, __('Dedications', 'bp-dedication'), BP_DEDICATION_PLUGIN_DIR + ); + + $this->includes(); + + /** + * Put your component into the active components array, so that + * bp_is_active( 'example' ); + * returns true when appropriate. We have to do this manually, because non-core + * components are not saved as active components in the database. + */ + $bp->active_components[$this->id] = '1'; + + /** + * Hook the register_post_types() method. If you're using custom post types to store + * data (which is recommended), you will need to hook your function manually to + * 'init'. + */ + //add_action( 'init', array( &$this, 'register_post_types' ) ); + } + + function includes() { + + // Files to include + $includes = array( + 'includes/create-dedication.php', + 'includes/bp-dedication-screens.php', + 'includes/bp-dedication-activity.php', + 'includes/bp-example-functions.php', + /* 'includes/bp-example-filters.php', + 'includes/bp-example-classes.php', + + 'includes/bp-example-template.php', + + 'includes/bp-example-notifications.php', + 'includes/bp-example-widgets.php', + 'includes/bp-example-cssjs.php', + 'includes/bp-example-ajax.php' */ + ); + + parent::includes($includes); + + /* if ( is_admin() || is_network_admin() ) { + include( BP_EXAMPLE_PLUGIN_DIR . '/includes/bp-example-admin.php' ); + } */ + } + + function setup_nav() { + $main_nav = array( + 'name' => __('Dedications', 'bp-dedication'), + 'slug' => bp_get_dedication_slug(), + 'position' => 80, + 'screen_function' => 'bp_dedication_my_dedications', + 'default_subnav_slug' => 'my-dedications' + ); + + $dedication_link = trailingslashit(bp_loggedin_user_domain() . bp_get_dedication_slug()); + + // Add a few subnav items under the main Example tab + $sub_nav[] = array( + 'name' => __('My dedications', 'bp-dedication'), + 'slug' => 'my-dedications', + 'parent_url' => $dedication_link, + 'parent_slug' => bp_get_dedication_slug(), + 'screen_function' => 'bp_dedication_my_dedications', + 'position' => 10 + ); + + // Add the subnav items to the friends nav item + $sub_nav[] = array( + 'name' => __('Dedicated 2u', 'bp-dedication'), + 'slug' => 'dedicated-2u', + 'parent_url' => $dedication_link, + 'parent_slug' => bp_get_dedication_slug(), + 'screen_function' => 'bp_dedication_dedications_to_me', + 'position' => 20 + ); + + // Add the subnav items to the friends nav item + $sub_nav[] = array( + 'name' => __('New dedication', 'bp-dedication'), + 'slug' => 'new-dedication', + 'parent_url' => $dedication_link, + 'parent_slug' => bp_get_dedication_slug(), + 'screen_function' => 'bp_dedication_new_dedication', + 'position' => 30 + ); + + parent::setup_nav($main_nav, $sub_nav); + //parent::setup_nav( $main_nav ); + // If your component needs additional navigation menus that are not handled by + // BP_Component::setup_nav(), you can register them manually here. For example, + // if your component needs a subsection under a user's Settings menu, add + // it like this. See bp_example_screen_settings_menu() for more info + /* bp_core_new_subnav_item( array( + 'name' => __( 'Example', 'bp-example' ), + 'slug' => 'example-admin', + 'parent_slug' => bp_get_settings_slug(), + 'parent_url' => trailingslashit( bp_loggedin_user_domain() . bp_get_settings_slug() ), + 'screen_function' => 'bp_example_screen_settings_menu', + 'position' => 40, + 'user_has_access' => bp_is_my_profile() // Only the logged in user can access this on his/her profile + ) ); */ + } + +} + +function bp_load_dedication_component() { + global $bp; + + $bp->dedications = new BP_Dedication; +} + +add_action('bp_loaded', 'bp_load_dedication_component'); + +//function bp_example_var_dump() { +// global $bp; +// var_dump( $bp->dedications ); +// } +//add_action( 'bp_init', 'bp_example_var_dump' ); + +/** + * Extends the WP_User_Query class to make it easier for us to search across different fields + * + * @package Invite Anyone + * @since 1.0.4 + */ +class User_Dedication_Query extends WP_User_Query { + + function __construct($query = null) { + add_action('pre_user_query', array(&$this, 'filter_registered_users_only')); + parent::__construct($query); + } + + /** + * BuddyPress has different user statuses. We need to filter the user list so only registered users are shown. + */ + function filter_registered_users_only($query) { + $query->query_where .= ' AND user_status = 0'; + } + + /** + * @see WP_User_Query::get_search_sql() + */ + function get_search_sql($string, $cols, $wild = false) { + $string = esc_sql($string); + + // Always search all columns + $cols = array( + 'user_email', + 'user_login', + 'user_nicename', + 'user_url', + 'display_name' + ); + + // Always do 'both' for trailing_wild + $wild = 'both'; + + $searches = array(); + $leading_wild = ( 'leading' == $wild || 'both' == $wild ) ? '%' : ''; + $trailing_wild = ( 'trailing' == $wild || 'both' == $wild ) ? '%' : ''; + foreach ($cols as $col) { + if ('ID' == $col) + $searches[] = "$col = '$string'"; + else + $searches[] = "$col LIKE '$leading_wild" . like_escape($string) . "$trailing_wild'"; + } + + return ' AND (' . implode(' OR ', $searches) . ') AND user_status = 0'; + } + +} + +?> diff --git a/wp-content/plugins/bp-dedication/functions.php b/wp-content/plugins/bp-dedication/functions.php new file mode 100644 index 0000000..d5c6942 --- /dev/null +++ b/wp-content/plugins/bp-dedication/functions.php @@ -0,0 +1,140 @@ +dedications->slug ) ? $bp->dedications->slug : BP_DEDICATION_SLUG; + + return apply_filters( 'bp_get_dedication_slug', $dedication_slug ); +} + +function bp_dedication_get_dedications_from_user( $user_id ) { + if ( !$user_id ) + return false; + + $args = array( + 'numberposts' => -1, + 'category' => 'dedication', + 'author' => $user_id + ); + $posts_array = get_posts( $args ); + + return maybe_unserialize( $posts_array ); +} + +function bp_dedication_get_dedications_to_user( $user_id ) { + if ( !$user_id ) + return false; + + $user_info = get_userdata($user_id); + + $args = array( + 'numberposts' => -1, + 'category' => 'dedication', + 'meta_key' => 'ghostpool_destination_user_email', + 'meta_value' => $user_info->user_email + ); + $posts_array = get_posts( $args ); + + return maybe_unserialize( $posts_array ); +} + +function bp_is_dedication_component() { + $is_dedication_component = bp_is_current_component( BP_DEDICATION_SLUG ); + + return apply_filters( 'bp_is_dedication_component', $is_dedication_component ); +} + +function bp_dedication_new_dedication_form_action() { + echo wp_nonce_url(bp_dedication_get_new_dedication_form_action(), 'bp_dedication_create_new_dedication'); +} + function bp_dedication_get_new_dedication_form_action() { + global $bp; + return apply_filters( 'bp_dedication_new_dedication_form_action', bp_get_loggedin_user_link() . bp_get_dedication_slug() . '/new-dedication/create' ); + } + +/* Crea una lista de amigos para mandar la invitacion */ +function bp_new_dedication_invite_member_list() { + echo bp_get_new_dedication_invite_member_list(); +} + function bp_get_new_dedication_invite_member_list( $args = '' ) { + global $bp; + + $defaults = array( + 'group_id' => false, + 'separator' => 'li' + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + $friends = friends_get_alphabetically( $user_id ); + + $items = array(); + foreach ($friends["users"] as $friend) { + $items[] = '<' . $separator . '>id . '" value="' . + esc_html( $friend->id ) . '" /> ' . $friend->fullname . ''; + } + return implode( "\n", (array)$items ); + } + +function bp_dedication_options() { + global $iaoptions; + + // We set our own options cache because of some stupid limitations in the way that page + // loads work + if ( !empty( $iaoptions ) ) { + $options = $iaoptions; + } else { + if ( function_exists( 'bp_update_option' ) ) { + $options = bp_get_option( 'bp_dedication' ); + } else { + $options = get_option( 'bp_dedication' ); + } + } + + if ( !$options ) + $options = array(); + + $defaults_array = array(); + /*$defaults_array = array( + 'max_invites' => 5, + 'allow_email_invitations' => 'all', + 'message_is_customizable' => 'yes', + 'subject_is_customizable' => 'no', + 'can_send_group_invites_email' => 'yes', + 'bypass_registration_lock' => 'yes', + 'email_visibility_toggle' => 'nolimit', + 'email_since_toggle' => 'no', + 'days_since' => 0, + 'email_role_toggle' => 'no', + 'minimum_role' => 'subscriber', + 'email_blacklist_toggle' => 'no', + 'email_blacklist' => '', + 'group_invites_can_admin' => 'anyone', + 'group_invites_can_group_admin' => 'anyone', + 'group_invites_can_group_mod' => 'anyone', + 'group_invites_can_group_member' => 'anyone', + 'cloudsponge_enabled' => 'off', + 'email_limit_invites_toggle' => 'no', + 'limit_invites_per_user' => 10 + );*/ + + foreach ( $defaults_array as $key => $value ) { + if ( !isset( $options[$key] ) ) + $options[$key] = $value; + } + + $iaoptions = $options; + + return apply_filters( 'bp_dedication_options', $options ); +} + + + +?> \ No newline at end of file diff --git a/wp-content/plugins/bp-dedication/includes/bp-dedication-activity.php b/wp-content/plugins/bp-dedication/includes/bp-dedication-activity.php new file mode 100644 index 0000000..fc77dfc --- /dev/null +++ b/wp-content/plugins/bp-dedication/includes/bp-dedication-activity.php @@ -0,0 +1,71 @@ + For example: "Andy high-fived John", "Andy posted a new update". + * 'type' => The type of action being carried out, for example 'new_friendship', 'joined_group'. This should be unique within your component. + * + * OPTIONAL PARAMS + * 'id' => The ID of an existing activity item that you want to update. + * 'content' => The content of your activity, if it has any, for example a photo, update content or blog post excerpt. + * 'component' => The slug of the component. + * 'primary_link' => The link for the title of the item when appearing in RSS feeds (defaults to the activity permalink) + * 'item_id' => The ID of the main piece of data being recorded, for example a group_id, user_id, forum_post_id - useful for filtering and deleting later on. + * 'user_id' => The ID of the user that this activity is being recorded for. Pass false if it's not for a user. + * 'recorded_time' => (optional) The time you want to set as when the activity was carried out (defaults to now) + * 'hide_sitewide' => Should this activity item appear on the site wide stream? + * 'secondary_item_id' => (optional) If the activity is more complex you may need a second ID. For example a group forum post may need the group_id AND the forum_post_id. + * ) + * + * Example usage would be: + * + * bp_example_record_activity( array( 'type' => 'new_highfive', 'action' => 'Andy high-fived John', 'user_id' => $bp->loggedin_user->id, 'item_id' => $bp->displayed_user->id ) ); + * + */ +function bp_dedication_record_activity( $args = '' ) { + global $bp; + + if ( !function_exists( 'bp_activity_add' ) ) + return false; + + $defaults = array( + 'id' => false, + 'user_id' => $bp->loggedin_user->id, + 'action' => '', + 'content' => '', + 'primary_link' => '', + 'component' => '', //$bp->dedications->id, + 'type' => false, + 'item_id' => false, + 'secondary_item_id' => false, + 'recorded_time' => gmdate( "Y-m-d H:i:s" ), + 'hide_sitewide' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + return bp_activity_add( array( + 'id' => $id, + 'user_id' => $user_id, + 'action' => $action, + 'content' => $content, + 'primary_link' => $primary_link, + 'component' => $component, + 'type' => $type, + 'item_id' => $item_id, + 'secondary_item_id' => $secondary_item_id, + 'recorded_time' => $recorded_time, + 'hide_sitewide' => $hide_sitewide + ) ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/bp-dedication/includes/bp-dedication-functions.php b/wp-content/plugins/bp-dedication/includes/bp-dedication-functions.php new file mode 100644 index 0000000..d545cef --- /dev/null +++ b/wp-content/plugins/bp-dedication/includes/bp-dedication-functions.php @@ -0,0 +1,63 @@ + diff --git a/wp-content/plugins/bp-dedication/includes/bp-dedication-screens.php b/wp-content/plugins/bp-dedication/includes/bp-dedication-screens.php new file mode 100644 index 0000000..815be47 --- /dev/null +++ b/wp-content/plugins/bp-dedication/includes/bp-dedication-screens.php @@ -0,0 +1,247 @@ +is_directory flag to true, which help other + // content to display content properly on your directory. + bp_update_is_directory( true, BP_DEDICATION_SLUG ); + + // Add an action so that plugins can add content or modify behavior + do_action( 'bp_dedication_directory_setup' ); + + bp_core_load_template( apply_filters( 'bp_dedication_template_index', 'dedications/index' ) ); + } +} +add_action( 'bp_screens', 'bp_dedication_directory_setup' ); + +function bp_dedication_my_dedications() { + global $bp; + + do_action( 'bp_dedication_my_dedications' ); + + add_action( 'bp_template_title', 'bp_dedication_my_dedications_title' ); + add_action( 'bp_template_content', 'bp_dedication_my_dedications_content' ); + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); +} + + function bp_dedication_my_dedications_title() { + _e( 'My dedications', 'bp-dedication' ); + } + + function bp_dedication_my_dedications_content() { + global $bp; + + $dedications = bp_dedication_get_dedications_from_user( $bp->displayed_user->id ); + + /** + * For security reasons, we MUST use the wp_nonce_url() function on any actions. + * This will stop naughty people from tricking users into performing actions without their + * knowledge or intent. + */ + $send_link = wp_nonce_url( $bp->displayed_user->domain . $bp->current_component . '/screen-one/send-h5', 'bp_example_send_high_five' ); + ?> +

    +

    high-five!', 'bp-example' ), $bp->displayed_user->fullname, $send_link ) ?>

    + + +

    + + + + + + + + +
      post_title, $dedication->ID ); ?>
    + + displayed_user->id ); + + /** + * For security reasons, we MUST use the wp_nonce_url() function on any actions. + * This will stop naughty people from tricking users into performing actions without their + * knowledge or intent. + */ + $send_link = wp_nonce_url( $bp->displayed_user->domain . $bp->current_component . '/screen-one/send-h5', 'bp_example_send_high_five' ); + ?> +

    +

    high-five!', 'bp-example' ), $bp->displayed_user->fullname, $send_link ) ?>

    + + +

    + + + + + + + + +
      post_title, $dedication->ID ); ?>
    + + loggedin_user->id, 'bp-example-option-one', attribute_escape( $_POST['bp-example-option-one'] ) ); + } + + add_action( 'bp_template_content_header', 'bp_example_screen_settings_menu_header' ); + add_action( 'bp_template_title', 'bp_example_screen_settings_menu_title' ); + add_action( 'bp_template_content', 'bp_example_screen_settings_menu_content' ); + + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); +} + + function bp_example_screen_settings_menu_header() { + _e( 'Example Settings Header', 'bp-example' ); + } + + function bp_example_screen_settings_menu_title() { + _e( 'Example Settings', 'bp-example' ); + } + + function bp_example_screen_settings_menu_content() { + global $bp, $bp_settings_updated; ?> + + +
    +

    +
    + + +
    + + loggedin_user->id, 'bp-example-option-one', true ) ) : ?> checked="checked" /> +

    + +

    + + + +
    + \ No newline at end of file diff --git a/wp-content/plugins/bp-dedication/includes/create-dedication.php b/wp-content/plugins/bp-dedication/includes/create-dedication.php new file mode 100644 index 0000000..1931085 --- /dev/null +++ b/wp-content/plugins/bp-dedication/includes/create-dedication.php @@ -0,0 +1,141 @@ +title != 'YouTube Videos') { + $videoData['videoURL'] = $video_url; + $videoData['title'] = $xml->title; + $videoData['description'] = $xml->content; + $videoData['thumbnail'] = "http://i.ytimg.com/vi/" . $videoID . "/0.jpg"; + } + } + + $category = get_category_by_slug(DEDICATION_CATEGORY_SLUG); + + $new_post = array( + 'post_title' => wp_strip_all_tags($title), + 'post_content' => '', + 'post_category' => array($category->term_id), //Dedication + 'post_status' => 'publish', + 'post_status' => $post_status, + 'post_type' => 'post' //'post',page' or use a custom post type if you want to + ); + + $pid = wp_insert_post($new_post); + if ($pid) { + $link = get_permalink($pid); + + add_post_meta($pid, 'ghostpool_dedication_artist', $artist_name); + add_post_meta($pid, 'ghostpool_dedication_song', $song_name); + add_post_meta($pid, 'ghostpool_dedication_url', $videoData['videoURL']); + + + $imageurl = $videoData['thumbnail']; + $imageurl = stripslashes($imageurl); + $uploads = wp_upload_dir(); + + $filename = wp_unique_filename($uploads['path'], basename($imageurl), $unique_filename_callback = null); + $wp_filetype = wp_check_filetype($filename, null); + $fullpathfilename = $uploads['path'] . "/" . $filename; + + try { + if (!substr_count($wp_filetype['type'], "image")) { + throw new Exception(basename($imageurl) . ' is not a valid image. ' . $wp_filetype['type'] . ''); + } + + $image_string = fetch_image($imageurl); + $fileSaved = file_put_contents($uploads['path'] . "/" . $filename, $image_string); + if (!$fileSaved) { + throw new Exception("The file cannot be saved."); + } + + $attachment = array( + 'post_mime_type' => $wp_filetype['type'], + 'post_title' => preg_replace('/\.[^.]+$/', '', $filename), + 'post_content' => '', + 'post_status' => 'inherit', + 'guid' => $uploads['url'] . "/" . $filename + ); + $attach_id = wp_insert_attachment($attachment, $fullpathfilename, $post_id); + if (!$attach_id) { + throw new Exception("Failed to save record into database."); + } + + $attach_data = wp_generate_attachment_metadata($attach_id, $fullpathfilename); + wp_update_attachment_metadata($attach_id, $attach_data); + update_post_meta($post_id, '_thumbnail_id', $attach_id); + } catch (Exception $e) { + $error = '

    ' . $e->getMessage() . '

    '; + return false; + } + + $user_id = $bp->loggedin_user->id; + $user_link = bp_core_get_userlink($user_id); + + /* bp_dedication_record_activity(array( + 'type' => 'accepted_terms', + 'action' => apply_filters('bp_dedication_create_new_dedication_activity_action', + sprintf(__('%s sent a new dedication %s!', 'bp-dedication'), $user_link, $link), $user_id, ), + )); */ + + /* See bp_example_reject_terms() for an explanation of deleting activity items */ +// if ( function_exists( 'bp_activity_delete') ) +// bp_activity_delete( array( 'type' => 'rejected_terms', 'user_id' => $bp->loggedin_user->id ) ); + + /* Add a do_action here so other plugins can hook in */ + do_action('bp_dedication_create_new_dedication', $bp->loggedin_user->id); + + /* * * + * You'd want to do something here, like set a flag in the database, or set usermeta. + * just for the sake of the demo we're going to return true. + */ + + return true; + } +} + +?> diff --git a/wp-content/plugins/bp-dedication/includes/css/minimal.css b/wp-content/plugins/bp-dedication/includes/css/minimal.css new file mode 100644 index 0000000..59fc806 --- /dev/null +++ b/wp-content/plugins/bp-dedication/includes/css/minimal.css @@ -0,0 +1,73 @@ +/* Tried getting an in-admin link... didn't work well. todo for later version? +#wpadminbar .quicklinks #wp-admin-bar-post_from_site ul { + width:550px; +} +#wpadminbar .quicklinks #wp-admin-bar-post_from_site.menupop ul li, +#wpadminbar .quicklinks #wp-admin-bar-post_from_site.menupop ul li a, +#wpadminbar .quicklinks #wp-admin-bar-post_from_site.menupop ul li a span, +#wpadminbar .quicklinks #wp-admin-bar-post_from_site.menupop ul li a strong { + color: #555; + text-shadow: none; +} +#wpadminbar .quicklinks #wp-admin-bar-post_from_site.menupop ul li a { + display:inline; +} +#wpadminbar .quicklinks #wp-admin-bar-post_from_site.menupop ul li:hover, +#wpadminbar .quicklinks #wp-admin-bar-post_from_site.menupop ul li.hover, +#wpadminbar .quicklinks #wp-admin-bar-post_from_site.menupop ul li:hover > a, +#wpadminbar .quicklinks #wp-admin-bar-post_from_site.menupop ul li:hover > a span, +#wpadminbar .quicklinks #wp-admin-bar-post_from_site.menupop ul li:hover > a strong { + background:white; +} +*/ + +.pfs_postform { + display:block; + position:absolute; +} +.pfs-post-box{ + background-color:white; + position:absolute; + width:600px; + z-index:9999; + padding:20px 20px 10px; +} +#pfs_form .input-text { + display: block; + width: 97%; +} +#recaptcha_response_field { left:0 !important; } +#recaptcha_area input { + text-indent: 0; + margin: 0; +} +#recaptcha_area label { + margin:0; +} + +#alert,.error{ + border:1px solid red; + padding:10px; + margin:3px; + background-color:#eda9a9; + font-weight:normal; +} +.clear {clear:both;} +.clearfix:after { + content: "."; + display: block; + clear: both; + visibility: hidden; + line-height: 0; + height: 0; +} +.clearfix { + display: inline-block; +} +html[xmlns] .clearfix { + display: block; +} +* html .clearfix { + height: 1%; +} + diff --git a/wp-content/plugins/bp-dedication/includes/css/twentyeleven.css b/wp-content/plugins/bp-dedication/includes/css/twentyeleven.css new file mode 100644 index 0000000..d71b574 --- /dev/null +++ b/wp-content/plugins/bp-dedication/includes/css/twentyeleven.css @@ -0,0 +1,162 @@ + + +.pfs_postform { + display:block; + position:absolute; +} +.pfs-post-box{ + background-color:#ddd; + border:1px solid #d3d3d3; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border-radius:3px; + position:absolute; + width:600px; + z-index:9999; + padding:20px 20px 10px; + font-size:12px; + line-height:18px; + font-weight:normal; + margin-bottom:30px; +} +.pfs_postform { + position:relative; + width:91%; + padding:2% 4%; +} +.pfs-post-box .closex { + position:absolute; + top:0; + right:0; + font-size:25px; + line-height:13px; + font-weight:bold; + text-decoration:none; + color:#EEE; + text-shadow: 0 1px 3px rgba(204, 204, 204, 0.95); + padding:5px; + margin:15px; + cursor:pointer; +} + +.pfs-post-box img.dedicationFlag { + vertical-align: middle; +} + +.pfs-post-box span { + display: inline-block; + text-indent: 0; +} + +.pfs-post-box input[type=text], .pfs-post-box input[type=email], .pfs-post-box input[type=button], .pfs-post-box textarea, .pfs-post-box select, div.input-text { + background: none repeat scroll 0 0 #fff; + border: 4px solid #EEEEEE; + border-radius: 5px 5px 5px 5px; + box-shadow: 0 1px 3px rgba(204, 204, 204, 0.95) inset; + padding: 10px; + position: relative; + text-indent: 80px; + width:95%; +} + +.pfs_postform input[type="text"]:focus, .pfs_postform input[type="password"]:focus, +.pfs_postform textarea:focus { + background: #fff; + border: 4px solid #bbb; +} + +.pfs-post-box select { + width:100%; + padding-left:100px; +} +.pfs-post-box option { + height:20px; + line-height:20px; + vertical-align:middle; + font-size:15px; + font-weight:300; + font-family:"Helvetica Neue",Helvetica,Arial,sans-serif; +} +.pfs-post-box input[type=text],.pfs-post-box input[type=email], div.input-text { + display: block; + height: 24px; +} +.pfs-post-box input[type=button] { + height:50px; + width:100%; +} +.pfs-post-box textarea { + resize: vertical; +} + +.pfs-post-box label { + background: none repeat scroll 0 0 #EEEEEE; + box-shadow: 1px 2px 2px rgba(204, 204, 204, 0.8); + color: #555555; + display: inline-block; + font-size: 13px; + left: 4px; + min-width: 60px; + padding: 4px 10px; + position: relative; + top: 40px; + z-index: 1; + line-height:2.2em; +} +.pfs-post-box input.submit { + background: none repeat scroll 0 0 #222222; + border: medium none; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + color: #EEEEEE; + cursor: pointer; + font-size: 15px; + left: 30px; + margin: 40px 0 20px; + padding: 5px 42px 5px 22px; + position: relative; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); +} + +input.multi#pfs-imgdivClicktopost-input { + line-height: 28px; + padding: 4px; +} +.MultiFile-wrap { + margin-left: 100px; +} +/*input.multi { display:none; } +input.multi#pfs-imgdivClicktopost-input { + display:none; + visibility:hidden; +}*/ +.MultiFile-label { + margin:5px 10px; +} +#recaptcha_widget_div { + margin-top:30px; +} + +/* Autocomplete */ +.pfs-post-box .ui-menu { + margin-left: 80px; + border: 4px solid #bbb; + border-top: 0; + border-radius: 5px 5px 5px 5px; + box-shadow: 0 1px 3px rgba(204, 204, 204, 0.95) inset; + margin-top: -5px; +} + + +.pfs-post-box .ui-menu-item { + background: none repeat scroll 0 0 #fff; + padding: 10px; + position: relative; + text-indent: 80px; + width:95%; +} + +.pfs-post-box .ui-menu-item a { + cursor: pointer; +} + diff --git a/wp-content/plugins/bp-dedication/includes/js/jquery.autocomplete-min.js b/wp-content/plugins/bp-dedication/includes/js/jquery.autocomplete-min.js new file mode 100644 index 0000000..7018fd0 --- /dev/null +++ b/wp-content/plugins/bp-dedication/includes/js/jquery.autocomplete-min.js @@ -0,0 +1,11 @@ +/** +* Ajax Autocomplete for jQuery, version 1.1.3 +* (c) 2010 Tomas Kirda +* +* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. +* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/ +* +* Last Review: 04/19/2010 +*/ + +(function(d){function l(b,a,c){a="("+c.replace(m,"\\$1")+")";return b.replace(new RegExp(a,"gi"),"$1")}function i(b,a){this.el=d(b);this.el.attr("autocomplete","off");this.suggestions=[];this.data=[];this.badQueries=[];this.selectedIndex=-1;this.currentValue=this.el.val();this.intervalId=0;this.cachedResponse=[];this.onChangeInterval=null;this.ignoreValueChange=false;this.serviceUrl=a.serviceUrl;this.isLocal=false;this.options={autoSubmit:false,minChars:1,maxHeight:300,deferRequestBy:0, width:0,highlight:true,params:{},fnFormatResult:l,delimiter:null,zIndex:9999};this.initialize();this.setOptions(a)}var m=new RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)","g");d.fn.autocomplete=function(b){return new i(this.get(0)||d(""),b)};i.prototype={killerFn:null,initialize:function(){var b,a,c;b=this;a=Math.floor(Math.random()*1048576).toString(16);c="Autocomplete_"+a;this.killerFn=function(e){if(d(e.target).parents(".autocomplete").size()===0){b.killSuggestions(); b.disableKillerFn()}};if(!this.options.width)this.options.width=this.el.width();this.mainContainerId="AutocompleteContainter_"+a;d('
    ').appendTo("body");this.container=d("#"+c);this.fixPosition();window.opera?this.el.keypress(function(e){b.onKeyPress(e)}):this.el.keydown(function(e){b.onKeyPress(e)});this.el.keyup(function(e){b.onKeyUp(e)}); this.el.blur(function(){b.enableKillerFn()});this.el.focus(function(){b.fixPosition()})},setOptions:function(b){var a=this.options;d.extend(a,b);if(a.lookup){this.isLocal=true;if(d.isArray(a.lookup))a.lookup={suggestions:a.lookup,data:[]}}d("#"+this.mainContainerId).css({zIndex:a.zIndex});this.container.css({maxHeight:a.maxHeight+"px",width:a.width})},clearCache:function(){this.cachedResponse=[];this.badQueries=[]},disable:function(){this.disabled=true},enable:function(){this.disabled=false},fixPosition:function(){var b= this.el.offset();d("#"+this.mainContainerId).css({top:b.top+this.el.innerHeight()+"px",left:b.left+"px"})},enableKillerFn:function(){d(document).bind("click",this.killerFn)},disableKillerFn:function(){d(document).unbind("click",this.killerFn)},killSuggestions:function(){var b=this;this.stopKillSuggestions();this.intervalId=window.setInterval(function(){b.hide();b.stopKillSuggestions()},300)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},onKeyPress:function(b){if(!(this.disabled|| !this.enabled)){switch(b.keyCode){case 27:this.el.val(this.currentValue);this.hide();break;case 9:case 13:if(this.selectedIndex===-1){this.hide();return}this.select(this.selectedIndex);if(b.keyCode===9)return;break;case 38:this.moveUp();break;case 40:this.moveDown();break;default:return}b.stopImmediatePropagation();b.preventDefault()}},onKeyUp:function(b){if(!this.disabled){switch(b.keyCode){case 38:case 40:return}clearInterval(this.onChangeInterval);if(this.currentValue!==this.el.val())if(this.options.deferRequestBy> 0){var a=this;this.onChangeInterval=setInterval(function(){a.onValueChange()},this.options.deferRequestBy)}else this.onValueChange()}},onValueChange:function(){clearInterval(this.onChangeInterval);this.currentValue=this.el.val();var b=this.getQuery(this.currentValue);this.selectedIndex=-1;if(this.ignoreValueChange)this.ignoreValueChange=false;else b===""||b.length'+e(c,this.data[f],g)+"");c.mouseover(j(f));c.click(k(f));this.container.append(c)}this.enabled=true;this.container.show()}},processResponse:function(b){var a;try{a=eval("("+b+")")}catch(c){return}if(!d.isArray(a.data))a.data=[];if(!this.options.noCache){this.cachedResponse[a.query]= a;a.suggestions.length===0&&this.badQueries.push(a.query)}if(a.query===this.getQuery(this.currentValue)){this.suggestions=a.suggestions;this.data=a.data;this.suggest()}},activate:function(b){var a,c;a=this.container.children();this.selectedIndex!==-1&&a.length>this.selectedIndex&&d(a.get(this.selectedIndex)).removeClass();this.selectedIndex=b;if(this.selectedIndex!==-1&&a.length>this.selectedIndex){c=a.get(this.selectedIndex);d(c).addClass("selected")}return c},deactivate:function(b,a){b.className= "";if(this.selectedIndex===a)this.selectedIndex=-1},select:function(b){var a;if(a=this.suggestions[b]){this.el.val(a);if(this.options.autoSubmit){a=this.el.parents("form");a.length>0&&a.get(0).submit()}this.ignoreValueChange=true;this.hide();this.onSelect(b)}},moveUp:function(){if(this.selectedIndex!==-1)if(this.selectedIndex===0){this.container.children().get(0).className="";this.selectedIndex=-1;this.el.val(this.currentValue)}else this.adjustScroll(this.selectedIndex-1)},moveDown:function(){this.selectedIndex!== this.suggestions.length-1&&this.adjustScroll(this.selectedIndex+1)},adjustScroll:function(b){var a,c,e;a=this.activate(b).offsetTop;c=this.container.scrollTop();e=c+this.options.maxHeight-25;if(ae&&this.container.scrollTop(a-this.options.maxHeight+25);this.el.val(this.getValue(this.suggestions[b]))},onSelect:function(b){var a,c;a=this.options.onSelect;c=this.suggestions[b];b=this.data[b];this.el.val(this.getValue(c));d.isFunction(a)&&a(c,b,this.el)},getValue:function(b){var a, c;a=this.options.delimiter;if(!a)return b;c=this.currentValue;a=c.split(a);if(a.length===1)return b;return c.substr(0,c.length-a[a.length-1].length)+b}}})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/bp-dedication/includes/js/jquery.autocomplete.js b/wp-content/plugins/bp-dedication/includes/js/jquery.autocomplete.js new file mode 100644 index 0000000..6dd1b86 --- /dev/null +++ b/wp-content/plugins/bp-dedication/includes/js/jquery.autocomplete.js @@ -0,0 +1,392 @@ +/** +* Ajax Autocomplete for jQuery, version 1.1.3 +* (c) 2010 Tomas Kirda +* +* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. +* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/ +* +* Last Review: 04/19/2010 +*/ + +/*jslint onevar: true, evil: true, nomen: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */ +/*global window: true, document: true, clearInterval: true, setInterval: true, jQuery: true */ + +(function($) { + + var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); + + function fnFormatResult(value, data, currentValue) { + var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')'; + return value.replace(new RegExp(pattern, 'gi'), '$1<\/strong>'); + } + + function Autocomplete(el, options) { + this.el = $(el); + this.el.attr('autocomplete', 'off'); + this.suggestions = []; + this.data = []; + this.badQueries = []; + this.selectedIndex = -1; + this.currentValue = this.el.val(); + this.intervalId = 0; + this.cachedResponse = []; + this.onChangeInterval = null; + this.ignoreValueChange = false; + this.serviceUrl = options.serviceUrl; + this.isLocal = false; + this.options = { + autoSubmit: false, + minChars: 1, + maxHeight: 300, + deferRequestBy: 0, + width: 0, + highlight: true, + params: {}, + fnFormatResult: fnFormatResult, + delimiter: null, + zIndex: 9999 + }; + this.initialize(); + this.setOptions(options); + } + + $.fn.autocomplete = function(options) { + return new Autocomplete(this.get(0)||$(''), options); + }; + + + Autocomplete.prototype = { + + killerFn: null, + + initialize: function() { + + var me, uid, autocompleteElId; + me = this; + uid = Math.floor(Math.random()*0x100000).toString(16); + autocompleteElId = 'Autocomplete_' + uid; + + this.killerFn = function(e) { + if ($(e.target).parents('.autocomplete').size() === 0) { + me.killSuggestions(); + me.disableKillerFn(); + } + }; + + if (!this.options.width) { this.options.width = this.el.width(); } + this.mainContainerId = 'AutocompleteContainter_' + uid; + + $('
    ').appendTo('body'); + + this.container = $('#' + autocompleteElId); + this.fixPosition(); + if (window.opera) { + this.el.keypress(function(e) { me.onKeyPress(e); }); + } else { + this.el.keydown(function(e) { me.onKeyPress(e); }); + } + this.el.keyup(function(e) { me.onKeyUp(e); }); + this.el.blur(function() { me.enableKillerFn(); }); + this.el.focus(function() { me.fixPosition(); }); + }, + + setOptions: function(options){ + var o = this.options; + $.extend(o, options); + if(o.lookup){ + this.isLocal = true; + if($.isArray(o.lookup)){ o.lookup = { suggestions:o.lookup, data:[] }; } + } + $('#'+this.mainContainerId).css({ zIndex:o.zIndex }); + this.container.css({ maxHeight: o.maxHeight + 'px', width:o.width }); + }, + + clearCache: function(){ + this.cachedResponse = []; + this.badQueries = []; + }, + + disable: function(){ + this.disabled = true; + }, + + enable: function(){ + this.disabled = false; + }, + + fixPosition: function() { + var offset = this.el.offset(); + $('#' + this.mainContainerId).css({ top: (offset.top + this.el.innerHeight()) + 'px', left: offset.left + 'px' }); + }, + + enableKillerFn: function() { + var me = this; + $(document).bind('click', me.killerFn); + }, + + disableKillerFn: function() { + var me = this; + $(document).unbind('click', me.killerFn); + }, + + killSuggestions: function() { + var me = this; + this.stopKillSuggestions(); + this.intervalId = window.setInterval(function() { me.hide(); me.stopKillSuggestions(); }, 300); + }, + + stopKillSuggestions: function() { + window.clearInterval(this.intervalId); + }, + + onKeyPress: function(e) { + if (this.disabled || !this.enabled) { return; } + // return will exit the function + // and event will not be prevented + switch (e.keyCode) { + case 27: //KEY_ESC: + this.el.val(this.currentValue); + this.hide(); + break; + case 9: //KEY_TAB: + case 13: //KEY_RETURN: + if (this.selectedIndex === -1) { + this.hide(); + return; + } + this.select(this.selectedIndex); + if(e.keyCode === 9){ return; } + break; + case 38: //KEY_UP: + this.moveUp(); + break; + case 40: //KEY_DOWN: + this.moveDown(); + break; + default: + return; + } + e.stopImmediatePropagation(); + e.preventDefault(); + }, + + onKeyUp: function(e) { + if(this.disabled){ return; } + switch (e.keyCode) { + case 38: //KEY_UP: + case 40: //KEY_DOWN: + return; + } + clearInterval(this.onChangeInterval); + if (this.currentValue !== this.el.val()) { + if (this.options.deferRequestBy > 0) { + // Defer lookup in case when value changes very quickly: + var me = this; + this.onChangeInterval = setInterval(function() { me.onValueChange(); }, this.options.deferRequestBy); + } else { + this.onValueChange(); + } + } + }, + + onValueChange: function() { + clearInterval(this.onChangeInterval); + this.currentValue = this.el.val(); + var q = this.getQuery(this.currentValue); + this.selectedIndex = -1; + if (this.ignoreValueChange) { + this.ignoreValueChange = false; + return; + } + if (q === '' || q.length < this.options.minChars) { + this.hide(); + } else { + this.getSuggestions(q); + } + }, + + getQuery: function(val) { + var d, arr; + d = this.options.delimiter; + if (!d) { return $.trim(val); } + arr = val.split(d); + return $.trim(arr[arr.length - 1]); + }, + + getSuggestionsLocal: function(q) { + var ret, arr, len, val, i; + arr = this.options.lookup; + len = arr.suggestions.length; + ret = { suggestions:[], data:[] }; + q = q.toLowerCase(); + for(i=0; i< len; i++){ + val = arr.suggestions[i]; + if(val.toLowerCase().indexOf(q) === 0){ + ret.suggestions.push(val); + ret.data.push(arr.data[i]); + } + } + return ret; + }, + + getSuggestions: function(q) { + var cr, me; + cr = this.isLocal ? this.getSuggestionsLocal(q) : this.cachedResponse[q]; + + if (cr && $.isArray(cr.suggestions)) { + this.suggestions = cr.suggestions; + this.data = cr.data; + this.suggest(); + } else if (!this.isBadQuery(q)) { + me = this; + me.options.params.query = q; + $.get(this.serviceUrl, me.options.params, function(txt) { me.processResponse(txt); }, 'text'); + } + }, + + isBadQuery: function(q) { + var i = this.badQueries.length; + while (i--) { + if (q.indexOf(this.badQueries[i]) === 0) { return true; } + } + return false; + }, + + hide: function() { + this.enabled = false; + this.selectedIndex = -1; + this.container.hide(); + }, + + suggest: function() { + if (this.suggestions.length === 0) { + this.hide(); + return; + } + + var me, len, div, f, v, i, s, mOver, mClick; + me = this; + len = this.suggestions.length; + f = this.options.fnFormatResult; + v = this.getQuery(this.currentValue); + mOver = function(xi) { return function() { me.activate(xi); }; }; + mClick = function(xi) { return function() { me.select(xi); }; }; + this.container.hide().empty(); + for (i = 0; i < len; i++) { + s = this.suggestions[i]; + div = $((me.selectedIndex === i ? '
    ' + f(s, this.data[i], v) + '
    '); + div.mouseover(mOver(i)); + div.click(mClick(i)); + this.container.append(div); + } + this.enabled = true; + this.container.show(); + }, + + processResponse: function(text) { + var response; + try { + response = eval('(' + text + ')'); + } catch (err) { return; } + if (!$.isArray(response.data)) { response.data = []; } + if(!this.options.noCache){ + this.cachedResponse[response.query] = response; + if (response.suggestions.length === 0) { this.badQueries.push(response.query); } + } + if (response.query === this.getQuery(this.currentValue)) { + + this.suggestions = response.suggestions; + this.data = response.data; + this.suggest(); + } + }, + + activate: function(index) { + var divs, activeItem; + divs = this.container.children(); + // Clear previous selection: + if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) { + $(divs.get(this.selectedIndex)).removeClass(); + } + this.selectedIndex = index; + if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) { + activeItem = divs.get(this.selectedIndex); + $(activeItem).addClass('selected'); + } + return activeItem; + }, + + deactivate: function(div, index) { + div.className = ''; + if (this.selectedIndex === index) { this.selectedIndex = -1; } + }, + + select: function(i) { + var selectedValue, f; + selectedValue = this.suggestions[i]; + if (selectedValue) { + this.el.val(selectedValue); + if (this.options.autoSubmit) { + f = this.el.parents('form'); + if (f.length > 0) { f.get(0).submit(); } + } + this.ignoreValueChange = true; + this.hide(); + this.onSelect(i); + } + }, + + moveUp: function() { + if (this.selectedIndex === -1) { return; } + if (this.selectedIndex === 0) { + this.container.children().get(0).className = ''; + this.selectedIndex = -1; + this.el.val(this.currentValue); + return; + } + this.adjustScroll(this.selectedIndex - 1); + }, + + moveDown: function() { + if (this.selectedIndex === (this.suggestions.length - 1)) { return; } + this.adjustScroll(this.selectedIndex + 1); + }, + + adjustScroll: function(i) { + var activeItem, offsetTop, upperBound, lowerBound; + activeItem = this.activate(i); + offsetTop = activeItem.offsetTop; + upperBound = this.container.scrollTop(); + lowerBound = upperBound + this.options.maxHeight - 25; + if (offsetTop < upperBound) { + this.container.scrollTop(offsetTop); + } else if (offsetTop > lowerBound) { + this.container.scrollTop(offsetTop - this.options.maxHeight + 25); + } + this.el.val(this.getValue(this.suggestions[i])); + }, + + onSelect: function(i) { + var me, fn, s, d; + me = this; + fn = me.options.onSelect; + s = me.suggestions[i]; + d = me.data[i]; + me.el.val(me.getValue(s)); + if ($.isFunction(fn)) { fn(s, d, me.el); } + }, + + getValue: function(value){ + var del, currVal, arr, me; + me = this; + del = me.options.delimiter; + if (!del) { return value; } + currVal = me.currentValue; + arr = currVal.split(del); + if (arr.length === 1) { return value; } + return currVal.substr(0, currVal.length - arr[arr.length - 1].length) + value; + } + + }; + +}(jQuery)); diff --git a/wp-content/plugins/bp-dedication/includes/js/pfs-script.bak.js b/wp-content/plugins/bp-dedication/includes/js/pfs-script.bak.js new file mode 100644 index 0000000..e9789e5 --- /dev/null +++ b/wp-content/plugins/bp-dedication/includes/js/pfs-script.bak.js @@ -0,0 +1,85 @@ +jQuery(document).ready(function(){ + var availableTags = [ + "ActionScript", + "AppleScript", + "Asp", + "BASIC", + "C", + "C++", + "Clojure", + "COBOL", + "ColdFusion", + "Erlang", + "Fortran", + "Groovy", + "Haskell", + "Java", + "JavaScript", + "Lisp", + "Perl", + "PHP", + "Python", + "Ruby", + "Scala", + "Scheme" + ]; + var to_config = { + minLength: 1, + appendTo: "#pfs_form", + url:'search.php', + onSelect:function(){ + alert(this.ac.val()) + } + }; + /*jQuery("#pfs_to").autocomplete(to_config); */ + jQuery("#pfs_to").autocomplete("", + { + width: 260, + matchContains: true, + selectFirst: false, + multiple: true + }); + + + jQuery(".pfs-post-link").click(function(){ + var $box = jQuery(this).siblings('div'); + if ('relative' == jQuery(this).parents('article').css('position')) { + var top = 0; + var diff = jQuery(this).parents('article').offset(); + var left = ( jQuery(window).width() - $box.width() )/2 - diff.left; + } else { + var top = 90; + var left = ( jQuery(window).width() - $box.width() )/2; + } + if (top<0) top = 50; + $box.css({top:top+"px",left:left+"px"}).show(); + }); + jQuery(".closex").click(function(){ + jQuery(this).parent().hide(); + }); + /*jQuery("form.pfs").submit(function() { + alert(jQuery("form.pfs").serialize()); + jQuery(this).ajaxSubmit({ + type: "POST", + url: jQuery(this).attr('action'), + dataType:'json', + data: jQuery("form.pfs").serialize(), + beforeSend: function(){ + //jQuery('.pfs-post-form #post').val('posting...'); + jQuery('#header-bottom').val('posting...'); + }, + complete: function(request, textStatus, error) { + data = jQuery.parseJSON(request.responseText); + if (data && data.error) { + alert(data); + jQuery('#pfs-alert').addClass('error').html('

    '+data.error+'

    ').show(); + jQuery('.pfs-post-form #post').val('Post'); + } else { + jQuery('form.pfs').reset(); + location.reload(); + } + } + }); + return false; + });*/ +}); diff --git a/wp-content/plugins/bp-dedication/includes/js/pfs-script.js b/wp-content/plugins/bp-dedication/includes/js/pfs-script.js new file mode 100644 index 0000000..12eb47b --- /dev/null +++ b/wp-content/plugins/bp-dedication/includes/js/pfs-script.js @@ -0,0 +1,11 @@ +jQuery(document).ready(function(){ + var to_config = { + minLength: 1, + appendTo: "#pfs_form", + source: pfs_script_vars.source_url, + onSelect:function(){ + alert(this.ac.val()) + } + }; + jQuery("#pfs_to").autocomplete(to_config); +}); \ No newline at end of file diff --git a/wp-content/plugins/bp-default-data/bp-default-data.php b/wp-content/plugins/bp-default-data/bp-default-data.php new file mode 100644 index 0000000..6088599 --- /dev/null +++ b/wp-content/plugins/bp-default-data/bp-default-data.php @@ -0,0 +1,556 @@ + +
    + + + +

    v

    + +

    '.__('Everything was deleted', 'bpdd') .'

    '; + } + + if ( isset( $_POST['bpdd-admin-submit'] ) ) { + // default values + $users = false; + $profile = false; + $messages = false; + $activity = false; + $friends = false; + $groups = false; + $forums = false; + $g_activity = false; + $g_members = false; + + // Import users + if(isset($_POST['bpdd']['import-users'])){ + $users = bpdd_import_users(); + $imported['users'] = sprintf(__('%d new users','bpdd'), count($users)); + if(isset($_POST['bpdd']['import-friends'])){ + $friends = bpdd_import_users_friends(); + $imported['friends'] = sprintf(__('%d friends connections','bpdd'), $friends); + } + if(isset($_POST['bpdd']['import-profile'])){ + $profile = bpdd_import_users_profile(); + $imported['profile'] = sprintf(__('%d profile entries','bpdd'), $profile); + } + if(isset($_POST['bpdd']['import-messages'])){ + $messages = bpdd_import_users_messages(); + $imported['messages'] = sprintf(__('%d private messages', 'bpdd'), count($messages)); + } + if(isset($_POST['bpdd']['import-activity'])){ + $activity = bpdd_import_users_activity(); + $imported['activity'] = sprintf(__('%d personal activity items','bpdd'), $activity); + } + } + // Import groups + if(isset($_POST['bpdd']['import-groups'])){ + $groups = bpdd_import_groups($users); + $imported['groups'] = sprintf(__('%d new groups','bpdd'), count($groups)); + if(isset($_POST['bpdd']['import-g-members'])){ + $g_members = bpdd_import_groups_members($groups); + $imported['g_members'] = sprintf(__('%d groups members (1 user can be in several groups)', 'bpdd'), count($g_members)); + } + if(isset($_POST['bpdd']['import-forums'])){ + $forums = bpdd_import_groups_forums($groups); + $imported['forums'] = sprintf(__('%d groups forum topics', 'bpdd'), count($forums)); + } + if(isset($_POST['bpdd']['import-g-activity'])){ + $g_activity = bpdd_import_groups_activity(); + $imported['g_activity'] = sprintf(__('%d groups activity items', 'bpdd'), $g_activity); + } + } + + ?> +
    +

    0){ + echo ':

    • '; + echo implode('
    • ', $imported); + echo '
    '; + } ?> +

    +
    + + + +
    + + +

    +

    + +
      +
    • + +
        + +
      • + +
      • + + + +
      • + +
      • + + + +
      • + +
      • + + + +
      • + +
      • + +
      +
    • + +
    • + +
        +
      • + +
      • + +
      • + +
      • + + +
      • + +
      • + +
      • + +
      +
    • + +
    + +

    + + +

    + +

    1234567890', 'bpdd') ?>

    +

    +

    IMDB.com for movies titles (groups names), Wikipedia.org (users names), Lorem Ipsum (messages and forum posts), Dr. Gabriel Robins (for a list of quotes collected by him), Youtube and Vimeo (for videos).', 'bpdd') ?>

    + + +
    + + + + $user['login'], + 'user_pass' => $user['pass'], + 'display_name' => $user['display_name'], + 'user_email' => $user['email'] + )); + bp_update_user_meta( $cur, 'last_activity', bpdd_get_random_date(5) ); + bp_update_user_meta( $cur, 'notification_messages_new_message', 'no' ); + $users[]->ID = $cur; + } + + return $users; +} + +function bpdd_import_users_profile(){ + return true; +} + +function bpdd_import_users_messages(){ + $messages = array(); + + require (dirname(__FILE__) . '/data/messages.php'); + + // first level messages + for($i = 0; $i < 33; $i++){ + $messages[] = messages_new_message(array( + 'sender_id' => bpdd_get_random_users_ids(1, 'string'), + 'recipients' => bpdd_get_random_users_ids(1, 'array'), + 'subject' => $messages_subjects[array_rand($messages_subjects)], + 'content' => $messages_content[array_rand($messages_content)], + 'date_sent' => bpdd_get_random_date(15, 5) + )); + } + + for($i = 0; $i < 33; $i++){ + $messages[] = messages_new_message(array( + 'sender_id' => bpdd_get_random_users_ids(1, 'string'), + 'recipients' => bpdd_get_random_users_ids(2, 'array'), + 'subject' => $messages_subjects[array_rand($messages_subjects)], + 'content' => $messages_content[array_rand($messages_content)], + 'date_sent' => bpdd_get_random_date(13, 3) + )); + } + + for($i = 0; $i < 33; $i++){ + $messages[] = messages_new_message(array( + 'sender_id' => bpdd_get_random_users_ids(1, 'string'), + 'recipients' => bpdd_get_random_users_ids(3, 'array'), + 'subject' => $messages_subjects[array_rand($messages_subjects)], + 'content' => $messages_content[array_rand($messages_content)], + 'date_sent' => bpdd_get_random_date(10) + )); + } + + $messages[] = messages_new_message(array( + 'sender_id' => bpdd_get_random_users_ids(1, 'string'), + 'recipients' => bpdd_get_random_users_ids(5, 'array'), + 'subject' => $messages_subjects[array_rand($messages_subjects)], + 'content' => $messages_content[array_rand($messages_content)], + 'date_sent' => bpdd_get_random_date(5) + )); + + return $messages; +} + +function bpdd_import_users_activity(){ + $users = bpdd_get_random_users_ids(0); + + require (dirname(__FILE__) . '/data/activity.php'); + + for($i = 0, $count = 0; $i < 75; $i++){ + $user = $users[array_rand($users)]; + $content = $activity[array_rand($activity)]; + if(bp_activity_post_update(array('user_id' => $user,'content' => $content))){ + $count++; + } + } + + return $count; +} + +function bpdd_import_users_friends(){ + $users = bpdd_get_random_users_ids(50); + + for($con = 0, $i = 0; $i < 100; $i++){ + $user_one = $users[array_rand($users)]; + $user_two = $users[array_rand($users)]; + if(BP_Friends_Friendship::check_is_friend( $user_one, $user_two ) == 'not_friends'){ + // make them friends + if(friends_add_friend( $user_one, $user_two, true )){ + // update counters for front-end + friends_update_friend_totals($user_one, $user_two); + $con++; + } + } + } + + return $con; +} + +/* + * Importer engine - GROUPS + */ +function bpdd_import_groups($users = false){ + $groups = array(); + $group_ids = array(); + if (empty($users)) + $users = get_users(); + require (dirname(__FILE__) . '/data/groups.php'); + foreach($groups as $group){ + $cur = groups_create_group(array( + 'creator_id' => $users[array_rand($users)]->ID, + 'name' => $group['name'], + 'description' => $group['description'], + 'slug' => groups_check_slug( sanitize_title( esc_attr( $group['name'] ) ) ), + 'status' => $group['status'], + 'date_created' => bpdd_get_random_date(30,5), + 'enable_forum' => $group['enable_forum'] + )); + groups_update_groupmeta( $cur, 'total_member_count', 1 ); + groups_update_groupmeta( $cur, 'last_activity', bpdd_get_random_date(10) ); + // create forums if Forum Component is active + if ( bp_is_active( 'forums' ) && bp_forums_is_installed_correctly() ) { + groups_new_group_forum( $cur, $group['name'], $group['description'] ); + } + $group_ids[] = $cur; + } + return $group_ids; +} + +function bpdd_import_groups_activity(){ + $users = bpdd_get_random_users_ids(0); + $groups = bpdd_get_random_groups_ids(0); + + require (dirname(__FILE__) . '/data/activity.php'); + + for($i = 0, $count = 0; $i < 150; $i++){ + $user_id = $users[array_rand($users)]; + $group_id = $groups[array_rand($groups)]; + $content = $activity[array_rand($activity)]; + if ( !groups_is_user_member( $user_id, $group_id ) ) + continue; + if(groups_post_update(array('user_id' => $user_id,'group_id' => $group_id,'content' => $content))) + $count++; + } + + return $count; +} + +function bpdd_import_groups_members($groups = false){ + $members = array(); + if(!$groups) + $groups = bpdd_get_random_groups_ids(0); + + $new_member = new BP_Groups_Member; + foreach($groups as $group_id){ + + $user_ids = bpdd_get_random_users_ids(rand(2, 15)); + + foreach($user_ids as $user_id){ + if ( groups_is_user_member( $user_id, $group_id ) ) + continue; + + $time = bpdd_get_random_date(25,1); + + $new_member->id = false; + $new_member->group_id = $group_id; + $new_member->user_id = $user_id; + $new_member->inviter_id = 0; + $new_member->is_admin = 0; + $new_member->user_title = ''; + $new_member->date_modified = $time; + $new_member->is_confirmed = 1; + + // save data - finally + if($new_member->save()){ + $group = new BP_Groups_Group( $group_id ); + // record this in activity streams + $activity_id[] = groups_record_activity( array( + 'action' => apply_filters( 'groups_activity_joined_group', sprintf( __( '%1$s joined the group %2$s', 'buddypress'), bp_core_get_userlink( $user_id ), '' . esc_attr( bp_get_group_name( $group ) ) . '' ) ), + 'type' => 'joined_group', + 'item_id' => $group_id, + 'user_id' => $user_id, + 'recorded_time' => $time + ) ); + + // modify group meta + groups_update_groupmeta( $group_id, 'total_member_count', (int) groups_get_groupmeta( $group_id, 'total_member_count') + 1 ); + groups_update_groupmeta( $group_id, 'last_activity', $time ); + do_action( 'groups_join_group', $group_id, $user_id ); + // I need to know how many users were added to display in report after the import + $members[] = $group_id; + } + } + } + + return $members; +} + +function bpdd_import_groups_forums(){ + return true; +} + +/* + * Helpers + */ +function bpdd_clear_db(){ + global $wpdb; + $sqls[] = "TRUNCATE TABLE {$wpdb->prefix}bp_activity;"; + $sqls[] = "TRUNCATE TABLE {$wpdb->prefix}bp_activity_meta;"; + $sqls[] = "TRUNCATE TABLE {$wpdb->prefix}bp_groups;"; + $sqls[] = "TRUNCATE TABLE {$wpdb->prefix}bp_groups_members;"; + $sqls[] = "TRUNCATE TABLE {$wpdb->prefix}bp_groups_groupmeta;"; + $sqls[] = "TRUNCATE TABLE {$wpdb->prefix}bb_posts;"; + $sqls[] = "TRUNCATE TABLE {$wpdb->prefix}bp_messages_recipients;"; + $sqls[] = "TRUNCATE TABLE {$wpdb->prefix}bp_messages_messages;"; + $sqls[] = "TRUNCATE TABLE {$wpdb->prefix}bp_notifications;"; + $sqls[] = "TRUNCATE TABLE {$wpdb->prefix}bp_friends;"; + $sqls[] = "DELETE FROM {$wpdb->prefix}users WHERE ID > 1;"; + $sqls[] = "DELETE FROM {$wpdb->prefix}usermeta WHERE user_id > 1;"; + $sqls[] = "DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key = 'total_friend_count';"; + $sqls[] = "DELETE FROM {$wpdb->prefix}bp_xprofile_data WHERE user_id > 1;"; + $sqls[] = "DELETE FROM {$wpdb->prefix}bb_forums WHERE forum_id > 1;"; + $sqls[] = "DELETE FROM {$wpdb->prefix}bp_activity WHERE user_id > 1;"; + foreach($sqls as $sql){ + $wpdb->query( $sql ); + } +} + +function bpdd_get_random_groups_ids($count = 1, $output = 'array'){ + global $wpdb; + $groups = array(); + $data = array(); + $limit = ''; + + if($count > 0) + $limit = ' LIMIT ' . $count; + + $sql = 'SELECT id FROM ' . $wpdb->prefix . 'bp_groups ORDER BY rand()' . $limit; + $groups = $wpdb->get_results($wpdb->prepare($sql)); + + // reformat the array + foreach($groups as $group){ + $data[] = $group->id; + } + + if($output == 'array'){ + return $data; + }elseif($output == 'string'){ + return implode(',', $data); + } +} + +function bpdd_get_random_users_ids($count = 1, $output = 'array'){ + global $wpdb; + $users = array(); + $limit = ''; + + if($count > 0) + $limit = ' LIMIT ' . $count; + + $sql = 'SELECT ID FROM ' . $wpdb->prefix . 'users ORDER BY rand()' . $limit; + $users = $wpdb->get_results($wpdb->prepare($sql)); + + // reformat the array + foreach($users as $user){ + $data[] = $user->ID; + } + + if($output == 'array'){ + return $data; + }elseif($output == 'string'){ + return implode(',', $data); + } +} + +function bpdd_get_random_date($days_from = 30, $days_to = 0){ + // 1 day in seconds is 86400 + $from = $days_from * 86400; + + // $days_from should always be less than $days_to + if ($days_to > $days_from) + $days_to = $days_from - 1; + $to = $days_to * 86400; + + $date_from = time() - $from; + $date_to = time() - $to; + return date( 'Y-m-d H:i:s', rand($date_from, $date_to)); +} + +if(!function_exists('print_var')){ + function print_var($var, $die = false){ + echo '
    ';
    +        if (!empty($var))
    +            print_r($var);
    +        else
    +            var_dump($var);
    +        echo '
    '; + + if ($die) + die; + } +} \ No newline at end of file diff --git a/wp-content/plugins/bp-default-data/data/activity.php b/wp-content/plugins/bp-default-data/data/activity.php new file mode 100644 index 0000000..c14bdff --- /dev/null +++ b/wp-content/plugins/bp-default-data/data/activity.php @@ -0,0 +1,122 @@ + \ No newline at end of file diff --git a/wp-content/plugins/bp-default-data/data/groups.php b/wp-content/plugins/bp-default-data/data/groups.php new file mode 100644 index 0000000..9269dc0 --- /dev/null +++ b/wp-content/plugins/bp-default-data/data/groups.php @@ -0,0 +1,274 @@ + array( + 'name' => 'Gone in 60 Seconds', + 'description' => 'A retired master car thief must come back to the industry and steal 50 cars with his crew in one night to save his brother\'s life.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 1 => array( + 'name' => 'Next', + 'description' => 'A Las Vegas magician who can see into the future is pursued by FBI agents seeking to use his abilities to prevent a nuclear terrorist attack.', + 'status' => 'hidden', + 'enable_forum' => 1 + ), + 2 => array( + 'name' => 'RocknRolla', + 'description' => 'In London, a real-estate scam puts millions of pounds up for grabs, attracting some of the city\'s scrappiest tough guys and its more established underworld types, all of whom are looking to get rich quick. While the city\'s seasoned criminals vie for the cash, an unexpected player -- a drugged out rock \'n\' roller presumed to be dead but very much alive...', + 'status' => 'public', + 'enable_forum' => 1 + ), + 3 => array( + 'name' => 'Sherlock Holmes', + 'description' => 'Detective Sherlock Holmes and his stalwart partner Watson engage in a battle of wits and brawn with a nemesis whose plot is a threat to all of England.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 4 => array( + 'name' => 'Snatch', + 'description' => 'Unscrupulous boxing promoters, violent bookmakers, a Russian gangster, incompetent amateur robbers, and supposedly Jewish jewelers fight to track down a priceless stolen diamond.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 5 => array( + 'name' => 'Lock, Stock and Two Smoking Barrels', + 'description' => 'Four London working class stiffs pool their money to put one in a high stakes card game, but things go wrong and they end up owing half a million pounds and having one week to come up with the cash.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 6 => array( + 'name' => 'Inglourious Basterds', + 'description' => 'In Nazi-occupied France during World War II, a group of Jewish-American soldiers known as "The Basterds" are chosen specifically to spread fear throughout the Third Reich by scalping and brutally killing Nazis.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 7 => array( + 'name' => 'Kill Bill', + 'description' => 'The Bride wakes up after a long coma. The baby that she carried before entering the coma is gone. The only thing on her mind is to have revenge on the assassination team that betrayed her - a team she was once part of.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 8 => array( + 'name' => 'Pulp Fiction', + 'description' => 'The lives of two mob hit men, a boxer, a gangster\'s wife, and a pair of diner bandits intertwine in four tales of violence and redemption.', + 'status' => 'hidden', + 'enable_forum' => 1 + ), + 9 => array( + 'name' => 'The Godfather', + 'description' => 'The aging patriarch of an organized crime dynasty transfers control of his clandestine empire to his reluctant son.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 10 => array( + 'name' => 'The Shawshank Redemption', + 'description' => 'Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 11=> array( + 'name' => 'Schindler\'s List', + 'description' => 'In Poland during World War II, Oskar Schindler gradually becomes concerned for his Jewish workforce after witnessing their persecution by the Nazis.', + 'status' => 'private', + 'enable_forum' => 1 + ), + 12 => array( + 'name' => 'Men in Black', + 'description' => 'Two men who keep an eye on aliens in New York City must try to save the world after the aliens threaten to blow it up.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 13 => array( + 'name' => 'Transformers', + 'description' => 'An ancient struggle re-erupts on Earth between two extraterrestrial clans, the heroic Autobots and the evil Decepticons, with a clue to the ultimate power held by a young teenager.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 14 => array( + 'name' => 'The Legend of Zorro', + 'description' => 'Despite trying to keep his swashbuckling to a minimum, a threat to California\'s pending statehood causes the adventure-loving Alejandro de la Vega (Banderas) -- and his wife, Elena (Zeta-Jones) -- to take action.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 15 => array( + 'name' => 'Star Wars', + 'description' => 'Luke Skywalker leaves his home planet, teams up with other rebels, and tries to save Princess Leia from the evil clutches of Darth Vader.', + 'status' => 'hidden', + 'enable_forum' => 1 + ), + 16 => array( + 'name' => 'Fight Club', + 'description' => 'An office employee and a soap salesman build a global organization to help vent male aggression.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 17 => array( + 'name' => 'The Matrix', + 'description' => 'A computer hacker learns from mysterious rebels about the true nature of his reality and his role in the war against its controllers.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 18 => array( + 'name' => 'The Lord of the Rings', + 'description' => 'In a small village in the Shire a young Hobbit named Frodo has been entrusted with an ancient Ring. Now he must embark on an Epic quest to the Cracks of Doom in order to destroy it.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 19 => array( + 'name' => 'Forrest Gump', + 'description' => 'Forrest Gump, while not intelligent, has accidentally been present at many historic moments, but his true love, Jenny, eludes him.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 20 => array( + 'name' => 'Leon', + 'description' => 'Professional assassin Leon reluctantly takes care of 12-year-old Mathilda, a neighbor whose parents are killed, and teaches her his trade.', + 'status' => 'private', + 'enable_forum' => 1 + ), + 21 => array( + 'name' => 'Terminator', + 'description' => 'A human-looking, apparently unstoppable cyborg is sent from the future to kill Sarah Connor; Kyle Reese is sent to stop it.', + 'status' => 'public', + 'enable_forum' => 0 + ), + 22 => array( + 'name' => 'WALL-E', + 'description' => 'In the distant future, a small waste collecting robot inadvertently embarks on a space journey that will ultimately decide the fate of mankind.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 23 => array( + 'name' => 'Back to the Future', + 'description' => 'In 1985, Doc Brown invents time travel; in 1955, Marty McFly accidentally prevents his parents from meeting, putting his own existence at stake.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 24 => array( + 'name' => 'Braveheart', + 'description' => 'William Wallace, a commoner, unites the 13th Century Scots in their battle to overthrow English rule.', + 'status' => 'hidden', + 'enable_forum' => 1 + ), + 25 => array( + 'name' => 'Gladiator', + 'description' => 'When a Roman general is betrayed and his family murdered by a corrupt prince, he comes to Rome as a gladiator to seek revenge.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 26 => array( + 'name' => 'Harry Potter', + 'description' => 'Harry Potter is a series of seven fantasy novels written by the British author J. K. Rowling. The books chronicle the adventures of the adolescent wizard Harry Potter and his best friends Ron Weasley and Hermione Granger, all of whom are students at Hogwarts School of Witchcraft and Wizardry.', + 'status' => 'public', + 'enable_forum' => 0 + ), + 27 => array( + 'name' => 'Blade Runner', + 'description' => 'Deckard, a blade runner, has to track down and terminate 4 replicants who hijacked a ship in space and have returned to earth seeking their maker.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 28 => array( + 'name' => 'The Bourne Ultimatum', + 'description' => 'Jason Bourne dodges a ruthless CIA official and his agents from a new assassination program while searching for the origins of his life as a trained killer.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 29 => array( + 'name' => 'The Wrestler', + 'description' => 'A faded professional wrestler must retire, but finds his quest for a new life outside the ring a dispiriting struggle.', + 'status' => 'private', + 'enable_forum' => 0 + ), + 30 => array( + 'name' => 'The Social Network', + 'description' => 'A chronicle of the founding of Facebook, the social-networking Web site.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 31 => array( + 'name' => 'Monsters, Inc.', + 'description' => 'Monsters generate their city\'s power by scaring children, but they are terribly afraid themselves of being contaminated by children, so when one enters Monstropolis, top scarer Sulley finds his world disrupted.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 32 => array( + 'name' => 'Rocky', + 'description' => 'A small time boxer gets a once in a lifetime chance to fight the heavyweight champ in a bout in which he strives to go the distance for his self-respect.', + 'status' => 'hidden', + 'enable_forum' => 1 + ), + 33 => array( + 'name' => 'Game of Thrones', + 'description' => 'Kings, queens, knights and renegades use schemes and swords to battle for the throne.', + 'status' => 'public', + 'enable_forum' => 0 + ), + 34 => array( + 'name' => 'Source Code', + 'description' => 'An action thriller centered on a soldier who wakes up in the body of an unknown man and discovers he\'s part of a mission to find the bomber of a Chicago commuter train.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 35 => array( + 'name' => 'Inception', + 'description' => 'In a world where technology exists to enter the human mind through dream invasion, a highly skilled thief is given a final chance at redemption which involves executing his toughest job to date: Inception.', + 'status' => 'private', + 'enable_forum' => 1 + ), + 36 => array( + 'name' => 'The Tourist', + 'description' => 'Revolves around Frank, an American tourist visiting Italy to mend a broken heart. Elise is an extraordinary woman who deliberately crosses his path.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 37 => array( + 'name' => 'Season of the Witch', + 'description' => '14th-century knights transport a suspected witch to a monastery, where monks deduce her powers could be the source of the Black Plague.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 38 => array( + 'name' => 'Black Swan', + 'description' => 'A ballet dancer wins the lead in "Swan Lake" and is perfect for the role of the delicate White Swan - Princess Odette - but slowly loses her mind as she becomes more and more like Odile, the Black Swan.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 39 => array( + 'name' => 'Robin Hood', + 'description' => 'In 13th century England, Robin and his band of marauders confront corruption in a local village and lead an uprising against the crown that will forever alter the balance of world power.', + 'status' => 'public', + 'enable_forum' => 1 + ), + 40 => array( + 'name' => 'The Town', + 'description' => 'As he plans his next job, a longtime thief tries to balance his feelings for a bank manager connected to one of his earlier heists, as well as the FBI agent looking to bring him and his crew down.', + 'status' => 'hidden', + 'enable_forum' => 0 + ), + 41 => array( + 'name' => 'TRON: Legacy', + 'description' => 'The son of a virtual world designer goes looking for his father and ends up inside the digital world that his father designed. He meets his father\'s creation turned bad and a unique ally who was born inside the digital domain of The Grid.', + 'status' => 'public', + 'enable_forum' => 0 + ), + 42 => array( + 'name' => 'Unstoppable', + 'description' => 'With an unmanned, half-mile-long freight train barreling toward a city, a veteran engineer and a young conductor race against the clock to prevent a catastrophe.', + 'status' => 'public', + 'enable_forum' => 0 + ), + 43 => array( + 'name' => 'Pirates of the Caribbean', + 'description' => 'Blacksmith Will Turner teams up with eccentric pirate "Captain" Jack Sparrow to save his love, the governor\'s daughter, from Jack\'s former pirate allies, who are now undead.', + 'status' => 'private', + 'enable_forum' => 1 + ), + 44 => array( + 'name' => '127 Hours', + 'description' => 'A mountain climber becomes trapped under a boulder while canyoneering alone near Moab, Utah and resorts to desperate measures in order to survive.', + 'status' => 'hidden', + 'enable_forum' => 1 + ), + +); diff --git a/wp-content/plugins/bp-default-data/data/messages.php b/wp-content/plugins/bp-default-data/data/messages.php new file mode 100644 index 0000000..36ec212 --- /dev/null +++ b/wp-content/plugins/bp-default-data/data/messages.php @@ -0,0 +1,42 @@ + array( + 'login' => 'antawn', + 'pass' => '1234567890', + 'display_name' => 'Antawn Jamison', + 'email' => 'email1@aol.com' + ), + 1 => array( + 'login' => 'chynna', + 'pass' => '1234567890', + 'display_name' => 'Chynna Phillips', + 'email' => 'email2@aol.com' + ), + 2 => array( + 'login' => 'kiki', + 'pass' => '1234567890', + 'display_name' => 'Kiki Cuyler', + 'email' => 'email3@aol.com' + ), + 3 => array( + 'login' => 'malivai', + 'pass' => '1234567890', + 'display_name' => 'MaliVai Washington', + 'email' => 'email4@aol.com' + ), + 4 => array( + 'login' => 'matraca', + 'pass' => '1234567890', + 'display_name' => 'Matraca Berg', + 'email' => 'email5@aol.com' + ), + 5 => array( + 'login' => 'ron', + 'pass' => '1234567890', + 'display_name' => 'Ron Faucheux', + 'email' => 'email6@aol.com' + ), + 6 => array( + 'login' => 'michellie', + 'pass' => '1234567890', + 'display_name' => 'Michellie Jones', + 'email' => 'email7@aol.com' + ), + 7 => array( + 'login' => 'monta', + 'pass' => '1234567890', + 'display_name' => 'Monta Ellis', + 'email' => 'email8@aol.com' + ), + 8 => array( + 'login' => 'picabo', + 'pass' => '1234567890', + 'display_name' => 'Picabo Street', + 'email' => 'email9@aol.com' + ), + 9 => array( + 'login' => 'ralph', + 'pass' => '1234567890', + 'display_name' => 'Ralph Fiennes', + 'email' => 'email10@aol.com' + ), + 10 => array( + 'login' => 'seamus', + 'pass' => '1234567890', + 'display_name' => 'Seamus', + 'email' => 'email11@aol.com' + ), + 11 => array( + 'login' => 'shan', + 'pass' => '1234567890', + 'display_name' => 'Shan Foster', + 'email' => 'email12@aol.com' + ), + 12 => array( + 'login' => 'siobhan', + 'pass' => '1234567890', + 'display_name' => 'Siobhan ', + 'email' => 'email13@aol.com' + ), + 13 => array( + 'login' => 'stephen', + 'pass' => '1234567890', + 'display_name' => 'Stephen Curry', + 'email' => 'email14@aol.com' + ), + 14 => array( + 'login' => 'wynonna', + 'pass' => '1234567890', + 'display_name' => 'Wynonna Judd', + 'email' => 'email15@aol.com' + ), + 15 => array( + 'login' => 'john', + 'pass' => '1234567890', + 'display_name' => 'John Caius', + 'email' => 'email16@aol.com' + ), + 16 => array( + 'login' => 'thomas', + 'pass' => '1234567890', + 'display_name' => 'Thomas Carew', + 'email' => 'email17@aol.com' + ), + + 17 => array( + 'login' => 'jason', + 'pass' => '1234567890', + 'display_name' => 'Jason Chaffetz', + 'email' => 'email18@aol.com' + ), + 18 => array( + 'login' => 'mamah', + 'pass' => '1234567890', + 'display_name' => 'Mamah Cheney', + 'email' => 'email19@aol.com' + ), + 19 => array( + 'login' => 'cecelia', + 'pass' => '1234567890', + 'display_name' => 'Cecelia Cichan ', + 'email' => 'email20@aol.com' + ), + 20 => array( + 'login' => 'dan', + 'pass' => '1234567890', + 'display_name' => 'Dan Cortese ', + 'email' => 'email21@aol.com' + ), + 21 => array( + 'login' => 'vernon', + 'pass' => '1234567890', + 'display_name' => 'Vernon Dahmer', + 'email' => 'email22@aol.com' + ), + 22 => array( + 'login' => 'andre', + 'pass' => '1234567890', + 'display_name' => 'Andre Dubus', + 'email' => 'email23@aol.com' + ), + 23 => array( + 'login' => 'justin', + 'pass' => '1234567890', + 'display_name' => 'Justin Duchscherer', + 'email' => 'email24@aol.com' + ), + 24 => array( + 'login' => 'keir', + 'pass' => '1234567890', + 'display_name' => 'Keir Dullea ', + 'email' => 'email25@aol.com' + ) +); \ No newline at end of file diff --git a/wp-content/plugins/bp-default-data/readme.txt b/wp-content/plugins/bp-default-data/readme.txt new file mode 100644 index 0000000..275460a --- /dev/null +++ b/wp-content/plugins/bp-default-data/readme.txt @@ -0,0 +1,50 @@ +=== BuddyPress Default Data === +Contributors: slaFFik, valant +Tags: buddypress, members, groups, bulk, messages, activity, forums, posts +Requires at least: WordPress 3.2.1 and BuddyPress 1.5 +Tested up to: WordPress 3.2.1 and BuddyPress 1.5 +Stable tag: 0.8 + +Plugin will create lots of users, messages, friends connections, groups, topics, activity items - useful for testing purpose. + +== Description == + +Plugin will create lots of users, messages, friends connections, groups, topics, activity items - useful for testing purpose. + +Please use this plugin with caution and not on a live site! + +Clear BuddyPress button will truncate tables: messages, groups, notifications, friends and forum posts. All users except one with ID=1 and all corresponding data (usermeta, activity etc) will be deleted too. + +And turn off email notifications in profile - or you will spam yourself :) + +== Installation == + +1. Upload plugin folder `/bp-default-data/` to the `/wp-content/plugins/` directory +1. Activate the plugin through the 'Plugins' menu in WordPress +1. Go to Default Data page under BuddyPress menu and do what you want. + +== Screenshots == + +1. Admin Page with Import Status + +== Changelog == + += 0.8 = +* 0.6 + personal (0.1) and groups (0.1) activities = 0.8 + += 0.6 = +* 0.5 + friends connection between imported users (0.1) = 0.6 +* Released for Paul Gibbs (@pgibbs) :) + += 0.5.1 = +* Fixing some compatibility issues +* better support of forums (check whether they are activated properly or not) + += 0.5 = +* 0.4 + groups members import (0.1) = 0.5 + += 0.4 = +* 0.3 + messages import (0.1) = 0.4 + += 0.3 = +* Initial release: admin page (0.1) + users import (0.1) + groups import (0.1) = 0.3 diff --git a/wp-content/plugins/bp-default-data/screenshot-1.png b/wp-content/plugins/bp-default-data/screenshot-1.png new file mode 100644 index 0000000..192d443 Binary files /dev/null and b/wp-content/plugins/bp-default-data/screenshot-1.png differ diff --git a/wp-content/plugins/bp-my-groups-widget/bp-my-groups-widget.php b/wp-content/plugins/bp-my-groups-widget/bp-my-groups-widget.php new file mode 100644 index 0000000..179d309 --- /dev/null +++ b/wp-content/plugins/bp-my-groups-widget/bp-my-groups-widget.php @@ -0,0 +1,91 @@ + + + loggedin_user->id )&& is_user_logged_in()) : ?> + +
      + +
    • +
      + +
      + +
      +
      +
      +
      +
    • + + +
    + + + + + +
    + +
    + + + + + '' ) ); + $title = esc_attr( $instance['title'] ); + ?> + +

    + . + + */ + + class BpDev_BPProfile_Widget extends WP_Widget + { + function __construct() { + parent::__construct( false, $name = __( 'BP Profile for Blogs', 'bpdev' ) ); + } + function widget($args, $instance) { + extract( $args ); + + echo $before_widget; + echo $before_title + . $instance['title'] + . $after_title; + + BpDev_BPProfile_Widget::bpdev_show_blog_profile($instance);/*** show the profile fields**/ + + + echo $after_widget; + } + + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + foreach($new_instance as $key=>$val) + $instance[$key]=$val;//update the instance + + return $instance; + } + + function form( $instance ) { + $instance = wp_parse_args( (array) $instance, array( 'title' => __('My Profile','bpdev'), 'show_avatar' => "yes",'user_role'=>'administrator') ); + $title = strip_tags( $instance['title'] ); + extract($instance,EXTR_SKIP); + + ?> + +

    + +

    + + +

    + +

    + +

    + + + + + + + + + +
    + + + >Show + >Hide +
    + + 'administrator')){ + global $wpdb,$current_blog; + + $blog_prefix = $wpdb->get_blog_prefix($current_blog->blog_id); + $role_sql = "SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = '{$blog_prefix}capabilities' ORDER BY {$wpdb->usermeta}.user_id" ; + $role=$wpdb->get_results($wpdb->prepare($role_sql),ARRAY_A); + //clean the role + $all_user=array_map("bpdev_serialize_role",$role);//we are unserializing the role to make that as an array + $users=array(); + + foreach($all_user as $key=>$user_info){ + foreach ($user_roles as $user_role){ + if($user_info['meta_value'][$user_role]==1)//if the role is admin + $users[]=$user_info['user_id']; + + continue ; + + } + } + return $users; + + } + function get_users($user_role=null){ + global $wpdb,$current_blog; + + $blog_prefix = $wpdb->get_blog_prefix($current_blog->blog_id); + $role_sql = "SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = '{$blog_prefix}capabilities' ORDER BY {$wpdb->usermeta}.user_id" ; + $role=$wpdb->get_results($wpdb->prepare($role_sql),ARRAY_A); + //clean the role + $all_user=array_map("bpdev_serialize_role",$role);//we are unserializing the role to make that as an array + $users=array(); + foreach($all_user as $key=>$user_info) + if($user_info['meta_value'][$user_role]==1)//if the role is admin + $users[]=$user_info['user_id']; + + return $users; + + } + function get_admin_users_for_current_blog() { + global $wpdb,$current_blog; + // $memers=BpDev_BPProfile_Widget::get_users_with_roles(array("administrator")); + + // $roles= + return BpDev_BPProfile_Widget::get_admins(); + +} + function bpdev_show_blog_profile($instance){ + //if buddypress is not active, return + if(!function_exists("bp_get_root_domain")) + return; + $show_avatar=$instance["show_avatar"];//we need to preserve for multi admin + $user_role=$instance['user_role']; + unset($instance["show_avatar"]); + unset($instance["title"]);//unset the title of the widget,because we will be iterating over the instance fields + unset($instance['user_role']);//unset the title of the widget,because we will be iterating over the instance fields + +global $current_blog; +$users=apply_filters("bp_profile_for_users",BpDev_BPProfile_Widget::get_users($user_role));//may be we can improve it too + if(empty($users)) + return; + foreach($users as $user){ + /*** we many not need this loop if the blog has single owner and /or we just want to show a single users profile + */ + + $user_id=$user;//["user_id"]; + + $op=""; + if($show_avatar=="yes") + $op.=""; + + //bad approach, because buddypress does not allow to fetch the field name from field key + if ( function_exists( 'bp_has_profile' ) ) : + if ( bp_has_profile( "user_id=".$user_id ) ) : + while ( bp_profile_groups() ) : bp_the_profile_group(); + while ( bp_profile_fields() ) : bp_the_profile_field(); + $fld_name=bp_get_the_profile_field_input_name(); + if(array_key_exists($fld_name,$instance)&&$instance[$fld_name]=="yes") + $op.=""; + endwhile; + endwhile; + endif; + endif; + $op.="
    ".bp_core_get_userlink($user_id) ."".bp_core_fetch_avatar(array("item_id"=>$user_id,"type"=>"thumb"))."
    ".bp_get_the_profile_field_name()."".bp_get_profile_field_data(array('field'=>bp_get_the_profile_field_id(),'user_id'=>$user_id))."
    "; + echo $op; + } + } + } + /** Let us register the widget*/ + function bpdev_register_bpprofile_for_blogs_widgets() { + add_action('widgets_init', create_function('', 'return register_widget("BpDev_BPProfile_Widget");') ); + } +add_action( 'bp_loaded', 'bpdev_register_bpprofile_for_blogs_widgets' ); + +function bpdev_serialize_role($roles){ + $roles['meta_value']=maybe_unserialize($roles['meta_value']); +return $roles; +} +?> \ No newline at end of file diff --git a/wp-content/plugins/bp-profile-widget-for-blogs/gpl.txt b/wp-content/plugins/bp-profile-widget-for-blogs/gpl.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/wp-content/plugins/bp-profile-widget-for-blogs/gpl.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/wp-content/plugins/bp-profile-widget-for-blogs/readme.txt b/wp-content/plugins/bp-profile-widget-for-blogs/readme.txt new file mode 100644 index 0000000..ba00126 --- /dev/null +++ b/wp-content/plugins/bp-profile-widget-for-blogs/readme.txt @@ -0,0 +1,53 @@ +=== Buddypress Profile Widget for Blogs === +Contributors:sbrajesh +Donate link: http://buddydev.com/donate/ +Tags: buddypress,buddypress profile,xprofile, profile widget,buddypress profile widget +Requires at least: WordPress 3.2+BuddyPress 1.5 +Tested up to:WordPress MultiSite 3.2.1 +BuddyPress 1.5.1 +Stable tag: 1.2.2 + +Buddypress Profile Widget for Blogs is a buddypress plugin which allows blog admins to show their buddypress profile on their blogs. +== Description == +Buddypress Profile Widget for Blogs is a plugin for buddypress +wpmu based site, which enables blog admins to show their profile on their blogs. + +Features include: +* Show list of users of current blog by their role(e.g list of admins, list of authors) +* Show Avatar/Hide avatar +* Show All xprofile fields/ only selected xprofile fields + +== Installation == + +The plugin is simple to install: + +1. Download `bp-profile-for-blogs.zip` +1. Unzip +1. Upload `bp-profile-for-blogs` directory to your `/wp-content/plugins` directory +1. Go to the plugin management page and enable the plugin, Activate the plugin sitewide + +Otherwise, Use the Plugin browser, upload it and activate, you are done. +Please note, The plugin must be activated sitewide. +== Frequently Asked Questions == += How to Use = +Add the widget "Bp Profile For Blogs" and save the settings in the widget. That's it. += I want to show authors profile instead of admins, Is it possible ? = +Yes. With version 1.2 You can list members of any role, please go to the widget section and select a role, by default, It will list admins +== Changelog == += Version 1.2. = +* Added support for WordPress 3.2 and BuddyPress 1.5+ += Version 1.2.1 = +* Added support for wordpress Multisite 3.0.1 +* added support for listing the profiles of users by role +* Code level support for showing profile for any type of member by ther roles. + = Version 1.2 = +* Fixed a bug with finding admin user by level, now it works on role +* Buddypress awareness is brought back, so should not cause issue when buddypress is disabled + + = Version 1.1 = +* Porfile Fields linking is removed +* Fixed a bug when admin users of a blog were not found + + = Version 1.0 released = + +== Other == + +For more info visit us at [BuddyDev.com](http://buddydev.com/ "The best place for all buddypress based plugins,themes tutorials") diff --git a/wp-content/plugins/bp-webcam-avatar/cam.swf b/wp-content/plugins/bp-webcam-avatar/cam.swf new file mode 100644 index 0000000..308e994 Binary files /dev/null and b/wp-content/plugins/bp-webcam-avatar/cam.swf differ diff --git a/wp-content/plugins/bp-webcam-avatar/images/cam_icon.png b/wp-content/plugins/bp-webcam-avatar/images/cam_icon.png new file mode 100644 index 0000000..92cbaa3 Binary files /dev/null and b/wp-content/plugins/bp-webcam-avatar/images/cam_icon.png differ diff --git a/wp-content/plugins/bp-webcam-avatar/playerProductInstall.swf b/wp-content/plugins/bp-webcam-avatar/playerProductInstall.swf new file mode 100644 index 0000000..bdc3437 Binary files /dev/null and b/wp-content/plugins/bp-webcam-avatar/playerProductInstall.swf differ diff --git a/wp-content/plugins/bp-webcam-avatar/readme.txt b/wp-content/plugins/bp-webcam-avatar/readme.txt new file mode 100644 index 0000000..6402ad9 --- /dev/null +++ b/wp-content/plugins/bp-webcam-avatar/readme.txt @@ -0,0 +1,26 @@ +=== BP Webcam Avatar === +Contributors: michaelvar , Vardi +Donate link: http://web-world.co.il/donate +Tags: BuddyPress,Avatar,webcam,camera +Requires at least: WP 3.2, BuddyPress 1.5 +Tested up to: WP 3.2.1, BuddyPress 1.5 +Stable tag: trunk + + +Add a webcam snapshot option for uploading an avatar in BuddyPress. +== Description == +Add a webcam snapshot option for uploading an avatar in BuddyPress. +== Installation == +* Upload the directory '/bp-webcam-avatar/' to your WP plugins directory and activate from the Dashboard of the main blog. + == Frequently Asked Questions == + None at this time + + == Upgrade Notice == + + == Screenshots == +1. A view of a webcam avatar displayed in the change avatar page. + + +== Changelog == +** V 0.8 ** 19/12/2011 +Beta initial release diff --git a/wp-content/plugins/bp-webcam-avatar/screenshot-1.png b/wp-content/plugins/bp-webcam-avatar/screenshot-1.png new file mode 100644 index 0000000..dbbd50c Binary files /dev/null and b/wp-content/plugins/bp-webcam-avatar/screenshot-1.png differ diff --git a/wp-content/plugins/bp-webcam-avatar/swfobject.js b/wp-content/plugins/bp-webcam-avatar/swfobject.js new file mode 100644 index 0000000..bf35c07 --- /dev/null +++ b/wp-content/plugins/bp-webcam-avatar/swfobject.js @@ -0,0 +1,777 @@ +/*! SWFObject v2.2 + is released under the MIT License +*/ + +var swfobject = function() { + + var UNDEF = "undefined", + OBJECT = "object", + SHOCKWAVE_FLASH = "Shockwave Flash", + SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash", + FLASH_MIME_TYPE = "application/x-shockwave-flash", + EXPRESS_INSTALL_ID = "SWFObjectExprInst", + ON_READY_STATE_CHANGE = "onreadystatechange", + + win = window, + doc = document, + nav = navigator, + + plugin = false, + domLoadFnArr = [main], + regObjArr = [], + objIdArr = [], + listenersArr = [], + storedAltContent, + storedAltContentId, + storedCallbackFn, + storedCallbackObj, + isDomLoaded = false, + isExpressInstallActive = false, + dynamicStylesheet, + dynamicStylesheetMedia, + autoHideShow = true, + + /* Centralized function for browser feature detection + - User agent string detection is only used when no good alternative is possible + - Is executed directly for optimal performance + */ + ua = function() { + var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF, + u = nav.userAgent.toLowerCase(), + p = nav.platform.toLowerCase(), + windows = p ? /win/.test(p) : /win/.test(u), + mac = p ? /mac/.test(p) : /mac/.test(u), + webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit + ie = !+"\v1", // feature detection based on Andrea Giammarchi's solution: http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html + playerVersion = [0,0,0], + d = null; + if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) { + d = nav.plugins[SHOCKWAVE_FLASH].description; + if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+ + plugin = true; + ie = false; // cascaded feature detection for Internet Explorer + d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); + playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10); + playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10); + playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0; + } + } + else if (typeof win.ActiveXObject != UNDEF) { + try { + var a = new ActiveXObject(SHOCKWAVE_FLASH_AX); + if (a) { // a will return null when ActiveX is disabled + d = a.GetVariable("$version"); + if (d) { + ie = true; // cascaded feature detection for Internet Explorer + d = d.split(" ")[1].split(","); + playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; + } + } + } + catch(e) {} + } + return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac }; + }(), + + /* Cross-browser onDomLoad + - Will fire an event as soon as the DOM of a web page is loaded + - Internet Explorer workaround based on Diego Perini's solution: http://javascript.nwbox.com/IEContentLoaded/ + - Regular onload serves as fallback + */ + onDomLoad = function() { + if (!ua.w3) { return; } + if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) { // function is fired after onload, e.g. when script is inserted dynamically + callDomLoadFunctions(); + } + if (!isDomLoaded) { + if (typeof doc.addEventListener != UNDEF) { + doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false); + } + if (ua.ie && ua.win) { + doc.attachEvent(ON_READY_STATE_CHANGE, function() { + if (doc.readyState == "complete") { + doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee); + callDomLoadFunctions(); + } + }); + if (win == top) { // if not inside an iframe + (function(){ + if (isDomLoaded) { return; } + try { + doc.documentElement.doScroll("left"); + } + catch(e) { + setTimeout(arguments.callee, 0); + return; + } + callDomLoadFunctions(); + })(); + } + } + if (ua.wk) { + (function(){ + if (isDomLoaded) { return; } + if (!/loaded|complete/.test(doc.readyState)) { + setTimeout(arguments.callee, 0); + return; + } + callDomLoadFunctions(); + })(); + } + addLoadEvent(callDomLoadFunctions); + } + }(); + + function callDomLoadFunctions() { + if (isDomLoaded) { return; } + try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early + var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span")); + t.parentNode.removeChild(t); + } + catch (e) { return; } + isDomLoaded = true; + var dl = domLoadFnArr.length; + for (var i = 0; i < dl; i++) { + domLoadFnArr[i](); + } + } + + function addDomLoadEvent(fn) { + if (isDomLoaded) { + fn(); + } + else { + domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+ + } + } + + /* Cross-browser onload + - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/ + - Will fire an event as soon as a web page including all of its assets are loaded + */ + function addLoadEvent(fn) { + if (typeof win.addEventListener != UNDEF) { + win.addEventListener("load", fn, false); + } + else if (typeof doc.addEventListener != UNDEF) { + doc.addEventListener("load", fn, false); + } + else if (typeof win.attachEvent != UNDEF) { + addListener(win, "onload", fn); + } + else if (typeof win.onload == "function") { + var fnOld = win.onload; + win.onload = function() { + fnOld(); + fn(); + }; + } + else { + win.onload = fn; + } + } + + /* Main function + - Will preferably execute onDomLoad, otherwise onload (as a fallback) + */ + function main() { + if (plugin) { + testPlayerVersion(); + } + else { + matchVersions(); + } + } + + /* Detect the Flash Player version for non-Internet Explorer browsers + - Detecting the plug-in version via the object element is more precise than using the plugins collection item's description: + a. Both release and build numbers can be detected + b. Avoid wrong descriptions by corrupt installers provided by Adobe + c. Avoid wrong descriptions by multiple Flash Player entries in the plugin Array, caused by incorrect browser imports + - Disadvantage of this method is that it depends on the availability of the DOM, while the plugins collection is immediately available + */ + function testPlayerVersion() { + var b = doc.getElementsByTagName("body")[0]; + var o = createElement(OBJECT); + o.setAttribute("type", FLASH_MIME_TYPE); + var t = b.appendChild(o); + if (t) { + var counter = 0; + (function(){ + if (typeof t.GetVariable != UNDEF) { + var d = t.GetVariable("$version"); + if (d) { + d = d.split(" ")[1].split(","); + ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; + } + } + else if (counter < 10) { + counter++; + setTimeout(arguments.callee, 10); + return; + } + b.removeChild(o); + t = null; + matchVersions(); + })(); + } + else { + matchVersions(); + } + } + + /* Perform Flash Player and SWF version matching; static publishing only + */ + function matchVersions() { + var rl = regObjArr.length; + if (rl > 0) { + for (var i = 0; i < rl; i++) { // for each registered object element + var id = regObjArr[i].id; + var cb = regObjArr[i].callbackFn; + var cbObj = {success:false, id:id}; + if (ua.pv[0] > 0) { + var obj = getElementById(id); + if (obj) { + if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match! + setVisibility(id, true); + if (cb) { + cbObj.success = true; + cbObj.ref = getObjectById(id); + cb(cbObj); + } + } + else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported + var att = {}; + att.data = regObjArr[i].expressInstall; + att.width = obj.getAttribute("width") || "0"; + att.height = obj.getAttribute("height") || "0"; + if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); } + if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); } + // parse HTML object param element's name-value pairs + var par = {}; + var p = obj.getElementsByTagName("param"); + var pl = p.length; + for (var j = 0; j < pl; j++) { + if (p[j].getAttribute("name").toLowerCase() != "movie") { + par[p[j].getAttribute("name")] = p[j].getAttribute("value"); + } + } + showExpressInstall(att, par, id, cb); + } + else { // Flash Player and SWF version mismatch or an older Webkit engine that ignores the HTML object element's nested param elements: display alternative content instead of SWF + displayAltContent(obj); + if (cb) { cb(cbObj); } + } + } + } + else { // if no Flash Player is installed or the fp version cannot be detected we let the HTML object element do its job (either show a SWF or alternative content) + setVisibility(id, true); + if (cb) { + var o = getObjectById(id); // test whether there is an HTML object element or not + if (o && typeof o.SetVariable != UNDEF) { + cbObj.success = true; + cbObj.ref = o; + } + cb(cbObj); + } + } + } + } + } + + function getObjectById(objectIdStr) { + var r = null; + var o = getElementById(objectIdStr); + if (o && o.nodeName == "OBJECT") { + if (typeof o.SetVariable != UNDEF) { + r = o; + } + else { + var n = o.getElementsByTagName(OBJECT)[0]; + if (n) { + r = n; + } + } + } + return r; + } + + /* Requirements for Adobe Express Install + - only one instance can be active at a time + - fp 6.0.65 or higher + - Win/Mac OS only + - no Webkit engines older than version 312 + */ + function canExpressInstall() { + return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312); + } + + /* Show the Adobe Express Install dialog + - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75 + */ + function showExpressInstall(att, par, replaceElemIdStr, callbackFn) { + isExpressInstallActive = true; + storedCallbackFn = callbackFn || null; + storedCallbackObj = {success:false, id:replaceElemIdStr}; + var obj = getElementById(replaceElemIdStr); + if (obj) { + if (obj.nodeName == "OBJECT") { // static publishing + storedAltContent = abstractAltContent(obj); + storedAltContentId = null; + } + else { // dynamic publishing + storedAltContent = obj; + storedAltContentId = replaceElemIdStr; + } + att.id = EXPRESS_INSTALL_ID; + if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; } + if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; } + doc.title = doc.title.slice(0, 47) + " - Flash Player Installation"; + var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn", + fv = "MMredirectURL=" + encodeURI(window.location).toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title; + if (typeof par.flashvars != UNDEF) { + par.flashvars += "&" + fv; + } + else { + par.flashvars = fv; + } + // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it, + // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work + if (ua.ie && ua.win && obj.readyState != 4) { + var newObj = createElement("div"); + replaceElemIdStr += "SWFObjectNew"; + newObj.setAttribute("id", replaceElemIdStr); + obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + obj.parentNode.removeChild(obj); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + createSWF(att, par, replaceElemIdStr); + } + } + + /* Functions to abstract and display alternative content + */ + function displayAltContent(obj) { + if (ua.ie && ua.win && obj.readyState != 4) { + // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it, + // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work + var el = createElement("div"); + obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content + el.parentNode.replaceChild(abstractAltContent(obj), el); + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + obj.parentNode.removeChild(obj); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + else { + obj.parentNode.replaceChild(abstractAltContent(obj), obj); + } + } + + function abstractAltContent(obj) { + var ac = createElement("div"); + if (ua.win && ua.ie) { + ac.innerHTML = obj.innerHTML; + } + else { + var nestedObj = obj.getElementsByTagName(OBJECT)[0]; + if (nestedObj) { + var c = nestedObj.childNodes; + if (c) { + var cl = c.length; + for (var i = 0; i < cl; i++) { + if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) { + ac.appendChild(c[i].cloneNode(true)); + } + } + } + } + } + return ac; + } + + /* Cross-browser dynamic SWF creation + */ + function createSWF(attObj, parObj, id) { + var r, el = getElementById(id); + if (ua.wk && ua.wk < 312) { return r; } + if (el) { + if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content + attObj.id = id; + } + if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML + var att = ""; + for (var i in attObj) { + if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries + if (i.toLowerCase() == "data") { + parObj.movie = attObj[i]; + } + else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword + att += ' class="' + attObj[i] + '"'; + } + else if (i.toLowerCase() != "classid") { + att += ' ' + i + '="' + attObj[i] + '"'; + } + } + } + var par = ""; + for (var j in parObj) { + if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries + par += ''; + } + } + el.outerHTML = '' + par + ''; + objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only) + r = getElementById(attObj.id); + } + else { // well-behaving browsers + var o = createElement(OBJECT); + o.setAttribute("type", FLASH_MIME_TYPE); + for (var m in attObj) { + if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries + if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword + o.setAttribute("class", attObj[m]); + } + else if (m.toLowerCase() != "classid") { // filter out IE specific attribute + o.setAttribute(m, attObj[m]); + } + } + } + for (var n in parObj) { + if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element + createObjParam(o, n, parObj[n]); + } + } + el.parentNode.replaceChild(o, el); + r = o; + } + } + return r; + } + + function createObjParam(el, pName, pValue) { + var p = createElement("param"); + p.setAttribute("name", pName); + p.setAttribute("value", pValue); + el.appendChild(p); + } + + /* Cross-browser SWF removal + - Especially needed to safely and completely remove a SWF in Internet Explorer + */ + function removeSWF(id) { + var obj = getElementById(id); + if (obj && obj.nodeName == "OBJECT") { + if (ua.ie && ua.win) { + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + removeObjectInIE(id); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + else { + obj.parentNode.removeChild(obj); + } + } + } + + function removeObjectInIE(id) { + var obj = getElementById(id); + if (obj) { + for (var i in obj) { + if (typeof obj[i] == "function") { + obj[i] = null; + } + } + obj.parentNode.removeChild(obj); + } + } + + /* Functions to optimize JavaScript compression + */ + function getElementById(id) { + var el = null; + try { + el = doc.getElementById(id); + } + catch (e) {} + return el; + } + + function createElement(el) { + return doc.createElement(el); + } + + /* Updated attachEvent function for Internet Explorer + - Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks + */ + function addListener(target, eventType, fn) { + target.attachEvent(eventType, fn); + listenersArr[listenersArr.length] = [target, eventType, fn]; + } + + /* Flash Player and SWF content version matching + */ + function hasPlayerVersion(rv) { + var pv = ua.pv, v = rv.split("."); + v[0] = parseInt(v[0], 10); + v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0" + v[2] = parseInt(v[2], 10) || 0; + return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; + } + + /* Cross-browser dynamic CSS creation + - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php + */ + function createCSS(sel, decl, media, newStyle) { + if (ua.ie && ua.mac) { return; } + var h = doc.getElementsByTagName("head")[0]; + if (!h) { return; } // to also support badly authored HTML pages that lack a head element + var m = (media && typeof media == "string") ? media : "screen"; + if (newStyle) { + dynamicStylesheet = null; + dynamicStylesheetMedia = null; + } + if (!dynamicStylesheet || dynamicStylesheetMedia != m) { + // create dynamic stylesheet + get a global reference to it + var s = createElement("style"); + s.setAttribute("type", "text/css"); + s.setAttribute("media", m); + dynamicStylesheet = h.appendChild(s); + if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) { + dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1]; + } + dynamicStylesheetMedia = m; + } + // add style rule + if (ua.ie && ua.win) { + if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) { + dynamicStylesheet.addRule(sel, decl); + } + } + else { + if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) { + dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}")); + } + } + } + + function setVisibility(id, isVisible) { + if (!autoHideShow) { return; } + var v = isVisible ? "visible" : "hidden"; + if (isDomLoaded && getElementById(id)) { + getElementById(id).style.visibility = v; + } + else { + createCSS("#" + id, "visibility:" + v); + } + } + + /* Filter to avoid XSS attacks + */ + function urlEncodeIfNecessary(s) { + var regex = /[\\\"<>\.;]/; + var hasBadChars = regex.exec(s) != null; + return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s; + } + + /* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only) + */ + var cleanup = function() { + if (ua.ie && ua.win) { + window.attachEvent("onunload", function() { + // remove listeners to avoid memory leaks + var ll = listenersArr.length; + for (var i = 0; i < ll; i++) { + listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]); + } + // cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect + var il = objIdArr.length; + for (var j = 0; j < il; j++) { + removeSWF(objIdArr[j]); + } + // cleanup library's main closures to avoid memory leaks + for (var k in ua) { + ua[k] = null; + } + ua = null; + for (var l in swfobject) { + swfobject[l] = null; + } + swfobject = null; + }); + } + }(); + + return { + /* Public API + - Reference: http://code.google.com/p/swfobject/wiki/documentation + */ + registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) { + if (ua.w3 && objectIdStr && swfVersionStr) { + var regObj = {}; + regObj.id = objectIdStr; + regObj.swfVersion = swfVersionStr; + regObj.expressInstall = xiSwfUrlStr; + regObj.callbackFn = callbackFn; + regObjArr[regObjArr.length] = regObj; + setVisibility(objectIdStr, false); + } + else if (callbackFn) { + callbackFn({success:false, id:objectIdStr}); + } + }, + + getObjectById: function(objectIdStr) { + if (ua.w3) { + return getObjectById(objectIdStr); + } + }, + + embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) { + var callbackObj = {success:false, id:replaceElemIdStr}; + if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) { + setVisibility(replaceElemIdStr, false); + addDomLoadEvent(function() { + widthStr += ""; // auto-convert to string + heightStr += ""; + var att = {}; + if (attObj && typeof attObj === OBJECT) { + for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs + att[i] = attObj[i]; + } + } + att.data = swfUrlStr; + att.width = widthStr; + att.height = heightStr; + var par = {}; + if (parObj && typeof parObj === OBJECT) { + for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs + par[j] = parObj[j]; + } + } + if (flashvarsObj && typeof flashvarsObj === OBJECT) { + for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs + if (typeof par.flashvars != UNDEF) { + par.flashvars += "&" + k + "=" + flashvarsObj[k]; + } + else { + par.flashvars = k + "=" + flashvarsObj[k]; + } + } + } + if (hasPlayerVersion(swfVersionStr)) { // create SWF + var obj = createSWF(att, par, replaceElemIdStr); + if (att.id == replaceElemIdStr) { + setVisibility(replaceElemIdStr, true); + } + callbackObj.success = true; + callbackObj.ref = obj; + } + else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install + att.data = xiSwfUrlStr; + showExpressInstall(att, par, replaceElemIdStr, callbackFn); + return; + } + else { // show alternative content + setVisibility(replaceElemIdStr, true); + } + if (callbackFn) { callbackFn(callbackObj); } + }); + } + else if (callbackFn) { callbackFn(callbackObj); } + }, + + switchOffAutoHideShow: function() { + autoHideShow = false; + }, + + ua: ua, + + getFlashPlayerVersion: function() { + return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] }; + }, + + hasFlashPlayerVersion: hasPlayerVersion, + + createSWF: function(attObj, parObj, replaceElemIdStr) { + if (ua.w3) { + return createSWF(attObj, parObj, replaceElemIdStr); + } + else { + return undefined; + } + }, + + showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) { + if (ua.w3 && canExpressInstall()) { + showExpressInstall(att, par, replaceElemIdStr, callbackFn); + } + }, + + removeSWF: function(objElemIdStr) { + if (ua.w3) { + removeSWF(objElemIdStr); + } + }, + + createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) { + if (ua.w3) { + createCSS(selStr, declStr, mediaStr, newStyleBoolean); + } + }, + + addDomLoadEvent: addDomLoadEvent, + + addLoadEvent: addLoadEvent, + + getQueryParamValue: function(param) { + var q = doc.location.search || doc.location.hash; + if (q) { + if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark + if (param == null) { + return urlEncodeIfNecessary(q); + } + var pairs = q.split("&"); + for (var i = 0; i < pairs.length; i++) { + if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) { + return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1))); + } + } + } + return ""; + }, + + // For internal usage only + expressInstallCallback: function() { + if (isExpressInstallActive) { + var obj = getElementById(EXPRESS_INSTALL_ID); + if (obj && storedAltContent) { + obj.parentNode.replaceChild(storedAltContent, obj); + if (storedAltContentId) { + setVisibility(storedAltContentId, true); + if (ua.ie && ua.win) { storedAltContent.style.display = "block"; } + } + if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); } + } + isExpressInstallActive = false; + } + } + }; +}(); diff --git a/wp-content/plugins/bp-webcam-avatar/wa-loader.php b/wp-content/plugins/bp-webcam-avatar/wa-loader.php new file mode 100644 index 0000000..e6e1bdf --- /dev/null +++ b/wp-content/plugins/bp-webcam-avatar/wa-loader.php @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/wp-content/plugins/bp-webcam-avatar/wa.php b/wp-content/plugins/bp-webcam-avatar/wa.php new file mode 100644 index 0000000..134bfd5 --- /dev/null +++ b/wp-content/plugins/bp-webcam-avatar/wa.php @@ -0,0 +1,189 @@ +wa->id = 'wa'; + + /* Register this in the active components array */ + $bp->active_components[$bp->wa->slug] = $bp->wa->id; +} + +add_action( 'bp_setup_globals', 'bp_wa_setup_globals' );?> +loggedin_user->id.'/'; +if(file_exists($dir)){} +else +mkdir($dir); +$picname = $uniqueStamp."-bpfull.jpg"; +$fp = fopen( $dir.$picname,"wb"); +fwrite( $fp, base64_decode($GLOBALS[ 'HTTP_RAW_POST_DATA' ]) ); +fclose( $fp ); +$picnamethumb = $uniqueStamp."-bpthumb.jpg"; + $resized_img = imagecreatetruecolor(50,50); + $image = imagecreatefromjpeg($dir.$picname); + imagecopyresampled($resized_img,$image, 0, 0, 0, 0, 50, 50, 150, 150); + imagejpeg( $resized_img, $dir.$picnamethumb ,100); + imagedestroy($resized_img); + imagedestroy($image); +$dh = opendir($dir); +while (false !== ($filename = readdir($dh))) { + $arr=explode('-',$filename); + if($arr[sizeof($arr)-1]=='bpfull.jpg') + if($filename!=$picname) + if(!is_dir($filename)) + unlink($dir.$filename); + if($arr[sizeof($arr)-1]=='bpthumb.jpg') + if($filename!=$picnamethumb) + if(!is_dir($filename)) + unlink($dir.$filename); +} +echo "result=OK";}?> + + + + + +
    +
    + +

    + + To view this page ensure that Adobe Flash Player version + + 10.0.0 or greater is installed. + +

    + + + +
    +
    +
    + + \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/_inc/MCAPI.class.php b/wp-content/plugins/bp-xtra-signup/_inc/MCAPI.class.php new file mode 100644 index 0000000..ae945a4 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/_inc/MCAPI.class.php @@ -0,0 +1,2471 @@ +secure = $secure; + $this->apiUrl = parse_url("http://api.mailchimp.com/" . $this->version . "/?output=php"); + $this->api_key = $apikey; + } + function setTimeout($seconds){ + if (is_int($seconds)){ + $this->timeout = $seconds; + return true; + } + } + function getTimeout(){ + return $this->timeout; + } + function useSecure($val){ + if ($val===true){ + $this->secure = true; + } else { + $this->secure = false; + } + } + + /** + * Unschedule a campaign that is scheduled to be sent in the future + * + * @section Campaign Related + * @example mcapi_campaignUnschedule.php + * @example xml-rpc_campaignUnschedule.php + * + * @param string $cid the id of the campaign to unschedule + * @return boolean true on success + */ + function campaignUnschedule($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignUnschedule", $params); + } + + /** + * Schedule a campaign to be sent in the future + * + * @section Campaign Related + * @example mcapi_campaignSchedule.php + * @example xml-rpc_campaignSchedule.php + * + * @param string $cid the id of the campaign to schedule + * @param string $schedule_time the time to schedule the campaign. For A/B Split "schedule" campaigns, the time for Group A - in YYYY-MM-DD HH:II:SS format in GMT + * @param string $schedule_time_b optional -the time to schedule Group B of an A/B Split "schedule" campaign - in YYYY-MM-DD HH:II:SS format in GMT + * @return boolean true on success + */ + function campaignSchedule($cid, $schedule_time, $schedule_time_b=NULL) { + $params = array(); + $params["cid"] = $cid; + $params["schedule_time"] = $schedule_time; + $params["schedule_time_b"] = $schedule_time_b; + return $this->callServer("campaignSchedule", $params); + } + + /** + * Resume sending an AutoResponder or RSS campaign + * + * @section Campaign Related + * + * @param string $cid the id of the campaign to pause + * @return boolean true on success + */ + function campaignResume($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignResume", $params); + } + + /** + * Pause an AutoResponder orRSS campaign from sending + * + * @section Campaign Related + * + * @param string $cid the id of the campaign to pause + * @return boolean true on success + */ + function campaignPause($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignPause", $params); + } + + /** + * Send a given campaign immediately. For RSS campaigns, this will "start" them. + * + * @section Campaign Related + * + * @example mcapi_campaignSendNow.php + * @example xml-rpc_campaignSendNow.php + * + * @param string $cid the id of the campaign to send + * @return boolean true on success + */ + function campaignSendNow($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignSendNow", $params); + } + + /** + * Send a test of this campaign to the provided email address + * + * @section Campaign Related + * + * @example mcapi_campaignSendTest.php + * @example xml-rpc_campaignSendTest.php + * + * @param string $cid the id of the campaign to test + * @param array $test_emails an array of email address to receive the test message + * @param string $send_type optional by default (null) both formats are sent - "html" or "text" send just that format + * @return boolean true on success + */ + function campaignSendTest($cid, $test_emails=array ( +), $send_type=NULL) { + $params = array(); + $params["cid"] = $cid; + $params["test_emails"] = $test_emails; + $params["send_type"] = $send_type; + return $this->callServer("campaignSendTest", $params); + } + + /** + * Allows one to test their segmentation rules before creating a campaign using them + * + * @section Campaign Related + * @example mcapi_campaignSegmentTest.php + * @example xml-rpc_campaignSegmentTest.php + * + * @param string $list_id the list to test segmentation on - get lists using lists() + * @param array $options with 2 keys: + string "match" controls whether to use AND or OR when applying your options - expects "any" (for OR) or "all" (for AND) + array "conditions" - up to 10 different criteria to apply while segmenting. Each criteria row must contain 3 keys - "field", "op", and "value" - and possibly a fourth, "extra", based on these definitions: + + Field = "date" : Select based on signup date + Valid Op(eration): eq (is) / gt (after) / lt (before) + Valid Values: + string last_campaign_sent uses the date of the last campaign sent + string campaign_id - uses the send date of the campaign that carriers the Id submitted - see campaigns() + string YYYY-MM-DD - any date in the form of YYYY-MM-DD - note: anything that appears to start with YYYY will be treated as a date + + Field = "interests-X": where X is the Grouping Id from listGroupings() + Valid Op(erations): one / none / all + Valid Values: a comma delimited of interest groups for the list - see listInterestGroupings() + + Field = "aim" + Valid Op(erations): open / noopen / click / noclick + Valid Values: "any" or a valid AIM-enabled Campaign that has been sent + + Field = "rating" : allows matching based on list member ratings + Valid Op(erations): eq (=) / ne (!=) / gt (>) / lt (<) + Valid Values: a number between 0 and 5 + + Field = "ecomm_prod" or "ecomm_prod": allows matching product and category names from purchases + Valid Op(erations): + eq (=) / ne (!=) / gt (>) / lt (<) / like (like '%blah%') / nlike (not like '%blah%') / starts (like 'blah%') / ends (like '%blah') + Valid Values: any string + + Field = "ecomm_spent_one" or "ecomm_spent_all" : allows matching purchase amounts on a single order or all orders + Valid Op(erations): gt (>) / lt (<) + Valid Values: a number + + Field = "ecomm_date" : allow matching based on order dates + Valid Op(eration): eq (is) / gt (after) / lt (before) + Valid Values: + string YYYY-MM-DD - any date in the form of YYYY-MM-DD + + Field = "social_gender" : allows matching against the gender acquired from SocialPro + Valid Op(eration): eq (is) / ne (is not) + Valid Values: male, female + + Field = "social_age" : allows matching against the age acquired from SocialPro + Valid Op(erations): eq (=) / ne (!=) / gt (>) / lt (<) + Valid Values: any number + + Field = "social_influence" : allows matching against the influence acquired from SocialPro + Valid Op(erations): eq (=) / ne (!=) / gt (>) / lt (<) + Valid Values: a number between 0 and 5 + + Field = "social_network" : + Valid Op(erations): member (is a member of) / notmember (is not a member of) + Valid Values: twitter, facebook, myspace, linkedin, flickr + + Field = "static_segment" : + Valid Op(eration): eq (is in) / ne (is not in) + Valid Values: an int - get from listStaticSegments() + + Field = An Address Merge Var. Use Merge0-Merge30 or the Custom Tag you've setup for your merge field - see listMergeVars(). Note, Address fields can still be used with the default operations below - this section is broken out solely to highlight the differences in using the geolocation routines. + Valid Op(erations): geoin + Valid Values: The number of miles an address should be within + Extra Value: The Zip Code to be used as the center point + + Default Field = A Merge Var. Use Merge0-Merge30 or the Custom Tag you've setup for your merge field - see listMergeVars() + Valid Op(erations): + eq (=) / ne (!=) / gt (>) / lt (<) / like (like '%blah%') / nlike (not like '%blah%') / starts (like 'blah%') / ends (like '%blah') + Valid Values: any string + * @return int total The total number of subscribers matching your segmentation options + */ + function campaignSegmentTest($list_id, $options) { + $params = array(); + $params["list_id"] = $list_id; + $params["options"] = $options; + return $this->callServer("campaignSegmentTest", $params); + } + + /** + * Create a new draft campaign to send. You can not have more than 32,000 campaigns in your account. + * + * @section Campaign Related + * @example mcapi_campaignCreate.php + * @example xml-rpc_campaignCreate.php + * @example xml-rpc_campaignCreateABSplit.php + * @example xml-rpc_campaignCreateRss.php + * + * @param string $type the Campaign Type to create - one of "regular", "plaintext", "absplit", "rss", "trans", "auto" + * @param array $options a hash of the standard options for this campaign : + string list_id the list to send this campaign to- get lists using lists() + string subject the subject line for your campaign message + string from_email the From: email address for your campaign message + string from_name the From: name for your campaign message (not an email address) + string to_name the To: name recipients will see (not email address) + int template_id optional - use this user-created template to generate the HTML content of the campaign (takes precendence over other template options) + int gallery_template_id optional - use a template from the public gallery to generate the HTML content of the campaign (takes precendence over base template options) + int base_template_id optional - use this a base/start-from-scratch template to generate the HTML content of the campaign + int folder_id optional - automatically file the new campaign in the folder_id passed. Get using folders() - note that Campaigns and Autoresponders have separate folder setupsn + array tracking optional - set which recipient actions will be tracked, as a struct of boolean values with the following keys: "opens", "html_clicks", and "text_clicks". By default, opens and HTML clicks will be tracked. Click tracking can not be disabled for Free accounts. + string title optional - an internal name to use for this campaign. By default, the campaign subject will be used. + boolean authenticate optional - set to true to enable SenderID, DomainKeys, and DKIM authentication, defaults to false. + array analytics optional - if provided, use a struct with "service type" as a key and the "service tag" as a value. For Google, this should be "google"=>"your_google_analytics_key_here". Note that only "google" is currently supported - a Google Analytics tags will be added to all links in the campaign with this string attached. Others may be added in the future + boolean auto_footer optional Whether or not we should auto-generate the footer for your content. Mostly useful for content from URLs or Imports + boolean inline_css optional Whether or not css should be automatically inlined when this campaign is sent, defaults to false. + boolean generate_text optional Whether of not to auto-generate your Text content from the HTML content. Note that this will be ignored if the Text part of the content passed is not empty, defaults to false. + boolean auto_tweet optional If set, this campaign will be auto-tweeted when it is sent - defaults to false. Note that if a Twitter account isn't linked, this will be silently ignored. + boolean timewarp optional If set, this campaign must be scheduled 24 hours in advance of sending - default to false. Only valid for "regular" campaigns and "absplit" campaigns that split on schedule_time. + boolean ecomm360 optional If set, our Ecommerce360 tracking will be enabled for links in the campaign + + * @param array $content the content for this campaign - use a struct with the following keys: + string html for pasted HTML content + string text for the plain-text version + string url to have us pull in content from a URL. Note, this will override any other content options - for lists with Email Format options, you'll need to turn on generate_text as well + string archive to send a Base64 encoded archive file for us to import all media from. Note, this will override any other content options - for lists with Email Format options, you'll need to turn on generate_text as well + string archive_type optional - only necessary for the "archive" option. Supported formats are: zip, tar.gz, tar.bz2, tar, tgz, tbz . If not included, we will default to zip + + If you chose a template instead of pasting in your HTML content, then use "html_" followed by the template sections as keys - for example, use a key of "html_MAIN" to fill in the "MAIN" section of a template. Supported template sections include: "html_HEADER", "html_MAIN", "html_SIDECOLUMN", and "html_FOOTER" + * @param array $segment_opts optional - if you wish to do Segmentation with this campaign this array should contain: see campaignSegmentTest(). It's suggested that you test your options against campaignSegmentTest(). Also, "trans" campaigns do not support segmentation. + * @param array $type_opts optional - + For RSS Campaigns this, array should contain: + string url the URL to pull RSS content from - it will be verified and must exist + string schedule optional one of "daily", "weekly", "monthly" - defaults to "daily" + string schedule_hour optional an hour between 0 and 24 - default to 4 (4am local time) - applies to all schedule types + string schedule_weekday optional for "weekly" only, a number specifying the day of the week to send: 0 (Sunday) - 6 (Saturday) - defaults to 1 (Monday) + string schedule_monthday optional for "monthly" only, a number specifying the day of the month to send (1 - 28) or "last" for the last day of a given month. Defaults to the 1st day of the month + + For A/B Split campaigns, this array should contain: + string split_test The values to segment based on. Currently, one of: "subject", "from_name", "schedule". NOTE, for "schedule", you will need to call campaignSchedule() separately! + string pick_winner How the winner will be picked, one of: "opens" (by the open_rate), "clicks" (by the click rate), "manual" (you pick manually) + int wait_units optional the default time unit to wait before auto-selecting a winner - use "3600" for hours, "86400" for days. Defaults to 86400. + int wait_time optional the number of units to wait before auto-selecting a winner - defaults to 1, so if not set, a winner will be selected after 1 Day. + int split_size optional this is a percentage of what size the Campaign's List plus any segmentation options results in. "schedule" type forces 50%, all others default to 10% + string from_name_a optional sort of, required when split_test is "from_name" + string from_name_b optional sort of, required when split_test is "from_name" + string from_email_a optional sort of, required when split_test is "from_name" + string from_email_b optional sort of, required when split_test is "from_name" + string subject_a optional sort of, required when split_test is "subject" + string subject_b optional sort of, required when split_test is "subject" + + For AutoResponder campaigns, this array should contain: + string offset-units one of "day", "week", "month", "year" - required + string offset-time optional, sort of - the number of units must be a number greater than 0 for signup based autoresponders + string offset-dir either "before" or "after" + string event optional "signup" (default) to base this on double-optin signup, "date" or "annual" to base this on merge field in the list + string event-datemerge optional sort of, this is required if the event is "date" or "annual" + + * + * @return string the ID for the created campaign + */ + function campaignCreate($type, $options, $content, $segment_opts=NULL, $type_opts=NULL) { + $params = array(); + $params["type"] = $type; + $params["options"] = $options; + $params["content"] = $content; + $params["segment_opts"] = $segment_opts; + $params["type_opts"] = $type_opts; + return $this->callServer("campaignCreate", $params); + } + + /** Update just about any setting for a campaign that has not been sent. See campaignCreate() for details. + * + * + * Caveats:
      + *
    • If you set list_id, all segmentation options will be deleted and must be re-added.
    • + *
    • If you set template_id, you need to follow that up by setting it's 'content'
    • + *
    • If you set segment_opts, you should have tested your options against campaignSegmentTest() as campaignUpdate() will not allow you to set a segment that includes no members.
    + * @section Campaign Related + * + * @example mcapi_campaignUpdate.php + * @example mcapi_campaignUpdateAB.php + * @example xml-rpc_campaignUpdate.php + * @example xml-rpc_campaignUpdateAB.php + * + * @param string $cid the Campaign Id to update + * @param string $name the parameter name ( see campaignCreate() ). For items in the options array, this will be that parameter's name (subject, from_email, etc.). Additional parameters will be that option name (content, segment_opts). "type_opts" will be the name of the type - rss, auto, trans, etc. + * @param mixed $value an appropriate value for the parameter ( see campaignCreate() ). For items in the options array, this will be that parameter's value. For additional parameters, this is the same value passed to them. + * @return boolean true if the update succeeds, otherwise an error will be thrown + */ + function campaignUpdate($cid, $name, $value) { + $params = array(); + $params["cid"] = $cid; + $params["name"] = $name; + $params["value"] = $value; + return $this->callServer("campaignUpdate", $params); + } + + /** Replicate a campaign. + * + * @section Campaign Related + * + * @example mcapi_campaignReplicate.php + * + * @param string $cid the Campaign Id to replicate + * @return string the id of the replicated Campaign created, otherwise an error will be thrown + */ + function campaignReplicate($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignReplicate", $params); + } + + /** Delete a campaign. Seriously, "poof, gone!" - be careful! + * + * @section Campaign Related + * + * @example mcapi_campaignDelete.php + * + * @param string $cid the Campaign Id to delete + * @return boolean true if the delete succeeds, otherwise an error will be thrown + */ + function campaignDelete($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignDelete", $params); + } + + /** + * Get the list of campaigns and their details matching the specified filters + * + * @section Campaign Related + * @example mcapi_campaigns.php + * @example xml-rpc_campaigns.php + * + * @param array $filters a hash of filters to apply to this query - all are optional: + string campaign_id optional - return a single campaign using a know campaign_id + string list_id optional - the list to send this campaign to- get lists using lists(). Accepts multiples separated by commas when not using exact matching. + int folder_id optional - only show campaigns from this folder id - get folders using campaignFolders(). Accepts multiples separated by commas when not using exact matching. + int template_id optional - only show campaigns using this template id - get templates using templates(). Accepts multiples separated by commas when not using exact matching. + string status optional - return campaigns of a specific status - one of "sent", "save", "paused", "schedule", "sending". Accepts multiples separated by commas when not using exact matching. + string type optional - return campaigns of a specific type - one of "regular", "plaintext", "absplit", "rss", "trans", "auto". Accepts multiples separated by commas when not using exact matching. + string from_name optional - only show campaigns that have this "From Name" + string from_email optional - only show campaigns that have this "Reply-to Email" + string title optional - only show campaigns that have this title + string subject optional - only show campaigns that have this subject + string sendtime_start optional - only show campaigns that have been sent since this date/time (in GMT) - format is YYYY-MM-DD HH:mm:ss (24hr) + string sendtime_end optional - only show campaigns that have been sent before this date/time (in GMT) - format is YYYY-MM-DD HH:mm:ss (24hr) + boolean exact optional - flag for whether to filter on exact values when filtering, or search within content for filter values - defaults to true. Using this disables the use of any filters that accept multiples. + * @param int $start optional - control paging of campaigns, start results at this campaign #, defaults to 1st page of data (page 0) + * @param int $limit optional - control paging of campaigns, number of campaigns to return with each call, defaults to 25 (max=1000) + * @return array an array containing a count of all matching campaigns and the specific ones for the current page (see Returned Fields for description) + * @returnf int total the total number of campaigns matching the filters passed in + * @returnf array data the data for each campaign being returned + string id Campaign Id (used for all other campaign functions) + int web_id The Campaign id used in our web app, allows you to create a link directly to it + string list_id The List used for this campaign + int folder_id The Folder this campaign is in + int template_id The Template this campaign uses + string content_type How the campaign's content is put together - one of 'template', 'html', 'url' + string title Title of the campaign + string type The type of campaign this is (regular,plaintext,absplit,rss,inspection,trans,auto) + string create_time Creation time for the campaign + string send_time Send time for the campaign - also the scheduled time for scheduled campaigns. + int emails_sent Number of emails email was sent to + string status Status of the given campaign (save,paused,schedule,sending,sent) + string from_name From name of the given campaign + string from_email Reply-to email of the given campaign + string subject Subject of the given campaign + string to_name Custom "To:" email string using merge variables + string archive_url Archive link for the given campaign + boolean inline_css Whether or not the campaign content's css was auto-inlined + string analytics Either "google" if enabled or "N" if disabled + string analytics_tag The name/tag the campaign's links were tagged with if analytics were enabled. + boolean authenticate Whether or not the campaign was authenticated + boolean ecomm360 Whether or not ecomm360 tracking was appended to links + boolean auto_tweet Whether or not the campaign was auto tweeted after sending + string auto_fb_post A comma delimited list of Facebook Profile/Page Ids the campaign was posted to after sending. If not used, blank. + boolean auto_footer Whether or not the auto_footer was manually turned on + boolean timewarp Whether or not the campaign used Timewarp + boolean timewarp_schedule The time, in GMT, that the Timewarp campaign is being sent. For A/B Split campaigns, this is blank and is instead in their schedule_a and schedule_b in the type_opts array + array tracking containing "text_clicks", "html_clicks", and "opens" as boolean values representing whether or not they were enabled + string segment_text a string marked-up with HTML explaining the segment used for the campaign in plain English + array segment_opts the segment used for the campaign - can be passed to campaignSegmentTest() or campaignCreate() + array type_opts the type-specific options for the campaign - can be passed to campaignCreate() + */ + function campaigns($filters=array ( +), $start=0, $limit=25) { + $params = array(); + $params["filters"] = $filters; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("campaigns", $params); + } + + /** + * Given a list and a campaign, get all the relevant campaign statistics (opens, bounces, clicks, etc.) + * + * @section Campaign Stats + * + * @example mcapi_campaignStats.php + * @example xml-rpc_campaignStats.php + * + * @param string $cid the campaign id to pull stats for (can be gathered using campaigns()) + * @return array struct of the statistics for this campaign + * @returnf int syntax_errors Number of email addresses in campaign that had syntactical errors. + * @returnf int hard_bounces Number of email addresses in campaign that hard bounced. + * @returnf int soft_bounces Number of email addresses in campaign that soft bounced. + * @returnf int unsubscribes Number of email addresses in campaign that unsubscribed. + * @returnf int abuse_reports Number of email addresses in campaign that reported campaign for abuse. + * @returnf int forwards Number of times email was forwarded to a friend. + * @returnf int forwards_opens Number of times a forwarded email was opened. + * @returnf int opens Number of times the campaign was opened. + * @returnf date last_open Date of the last time the email was opened. + * @returnf int unique_opens Number of people who opened the campaign. + * @returnf int clicks Number of times a link in the campaign was clicked. + * @returnf int unique_clicks Number of unique recipient/click pairs for the campaign. + * @returnf date last_click Date of the last time a link in the email was clicked. + * @returnf int users_who_clicked Number of unique recipients who clicked on a link in the campaign. + * @returnf int emails_sent Number of email addresses campaign was sent to. + * @returnf array absplit If this was an absplit campaign, stats for the A and B groups will be returned + int bounces_a bounces for the A group + int bounces_b bounces for the B group + int forwards_a forwards for the A group + int forwards_b forwards for the B group + int abuse_reports_a abuse reports for the A group + int abuse_reports_b abuse reports for the B group + int unsubs_a unsubs for the A group + int unsubs_b unsubs for the B group + int recipients_click_a clicks for the A group + int recipients_click_b clicks for the B group + int forwards_opens_a opened forwards for the A group + int forwards_opens_b opened forwards for the A group + * @returnf array timewarp If this campaign was a Timewarp campaign, an array of stats from each timezone for it, with the GMT offset as they key. Each timezone will contain: + int opens opens for this timezone + string last_open the date/time of the last open for this timezone + int unique_opens the unique opens for this timezone + int clicks the total clicks for this timezone + string last_click the date/time of the last click for this timezone + int unique_opens the unique clicks for this timezone + int bounces the total bounces for this timezone + int total the total number of members sent to in this timezone + int sent the total number of members delivered to in this timezone + */ + function campaignStats($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignStats", $params); + } + + /** + * Get an array of the urls being tracked, and their click counts for a given campaign + * + * @section Campaign Stats + * + * @example mcapi_campaignClickStats.php + * @example xml-rpc_campaignClickStats.php + * + * @param string $cid the campaign id to pull stats for (can be gathered using campaigns()) + * @return struct urls will be keys and contain their associated statistics: + * @returnf int clicks Number of times the specific link was clicked + * @returnf int unique Number of unique people who clicked on the specific link + */ + function campaignClickStats($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignClickStats", $params); + } + + /** + * Get the top 5 performing email domains for this campaign. Users want more than 5 should use campaign campaignEmailStatsAIM() + * or campaignEmailStatsAIMAll() and generate any additional stats they require. + * + * @section Campaign Stats + * + * @example mcapi_campaignEmailDomainPerformance.php + * + * @param string $cid the campaign id to pull email domain performance for (can be gathered using campaigns()) + * @return array domains email domains and their associated stats + * @returnf string domain Domain name or special "Other" to roll-up stats past 5 domains + * @returnf int total_sent Total Email across all domains - this will be the same in every row + * @returnf int emails Number of emails sent to this domain + * @returnf int bounces Number of bounces + * @returnf int opens Number of opens + * @returnf int clicks Number of clicks + * @returnf int unsubs Number of unsubs + * @returnf int delivered Number of deliveries + * @returnf int emails_pct Percentage of emails that went to this domain (whole number) + * @returnf int bounces_pct Percentage of bounces from this domain (whole number) + * @returnf int opens_pct Percentage of opens from this domain (whole number) + * @returnf int clicks_pct Percentage of clicks from this domain (whole number) + * @returnf int unsubs_pct Percentage of unsubs from this domain (whole number) + */ + function campaignEmailDomainPerformance($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignEmailDomainPerformance", $params); + } + + /** + * Get all email addresses the campaign was successfully sent to (ie, no bounces) + * + * @section Campaign Stats + * + * @param string $cid the campaign id to pull members for (can be gathered using campaigns()) + * @param string $status optional the status to pull - one of 'sent', 'hard' (bounce), or 'soft' (bounce). By default, all records are returned + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000 + * @return array a total of all matching emails and the specific emails for this page + * @returnf int total the total number of succesful members for the campaign + * @returnf array data the full campaign member records + string email the email address sent to + string status the status of the send - one of 'sent', 'hard', 'soft' + string absplit_group if this was an absplit campaign, one of 'a','b', or 'winner' + string tz_group if this was an timewarp campaign the timezone GMT offset the member was included in + */ + function campaignMembers($cid, $status=NULL, $start=0, $limit=1000) { + $params = array(); + $params["cid"] = $cid; + $params["status"] = $status; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("campaignMembers", $params); + } + + /** + * DEPRECATED Get all email addresses with Hard Bounces for a given campaign + * + * @deprecated See campaignMembers() for a replacement + * + * @section Campaign Stats + * + * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns()) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000 + * @return array a total of all hard bounced emails and the specific emails for this page + * @returnf int total the total number of hard bounces for the campaign + * @returnf array data the full email addresses that bounced + string email the email address that bounced + */ + function campaignHardBounces($cid, $start=0, $limit=1000) { + $params = array(); + $params["cid"] = $cid; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("campaignHardBounces", $params); + } + + /** + * DEPRECATED Get all email addresses with Soft Bounces for a given campaign + * + * @deprecated See campaignMembers() for a replacement + * + * @section Campaign Stats + * + * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns()) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000 + * @return array a total of all soft bounced emails and the specific emails for this page + * @returnf int total the total number of soft bounces for the campaign + * @returnf array data the full email addresses that bounced + string email the email address that bounced + */ + function campaignSoftBounces($cid, $start=0, $limit=1000) { + $params = array(); + $params["cid"] = $cid; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("campaignSoftBounces", $params); + } + + /** + * Get all unsubscribed email addresses for a given campaign + * + * @section Campaign Stats + * + * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns()) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000 + * @return array email addresses that unsubscribed from this campaign along with reasons, if given + * @return array a total of all unsubscribed emails and the specific emails for this page + * @returnf int total the total number of unsubscribes for the campaign + * @returnf array data the full email addresses that unsubscribed + string email the email address that unsubscribed + string reason For unsubscribes only - the reason collected for the unsubscribe. If populated, one of 'NORMAL','NOSIGNUP','INAPPROPRIATE','SPAM','OTHER' + string reason_text For unsubscribes only - if the reason is OTHER, the text entered. + */ + function campaignUnsubscribes($cid, $start=0, $limit=1000) { + $params = array(); + $params["cid"] = $cid; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("campaignUnsubscribes", $params); + } + + /** + * Get all email addresses that complained about a given campaign + * + * @section Campaign Stats + * + * @example mcapi_campaignAbuseReports.php + * + * @param string $cid the campaign id to pull abuse reports for (can be gathered using campaigns()) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 500, upper limit set at 1000 + * @param string $since optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT + * @return array reports the abuse reports for this campaign + * @returnf string date date/time the abuse report was received and processed + * @returnf string email the email address that reported abuse + * @returnf string type an internal type generally specifying the orginating mail provider - may not be useful outside of filling report views + */ + function campaignAbuseReports($cid, $since=NULL, $start=0, $limit=500) { + $params = array(); + $params["cid"] = $cid; + $params["since"] = $since; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("campaignAbuseReports", $params); + } + + /** + * Retrieve the text presented in our app for how a campaign performed and any advice we may have for you - best + * suited for display in customized reports pages. Note: some messages will contain HTML - clean tags as necessary + * + * @section Campaign Stats + * + * @example mcapi_campaignAdvice.php + * + * @param string $cid the campaign id to pull advice text for (can be gathered using campaigns()) + * @return array advice on the campaign's performance + * @returnf msg the advice message + * @returnf type the "type" of the message. one of: negative, positive, or neutral + */ + function campaignAdvice($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignAdvice", $params); + } + + /** + * Retrieve the Google Analytics data we've collected for this campaign. Note, requires Google Analytics Add-on to be installed and configured. + * + * @section Campaign Stats + * + * @example mcapi_campaignAnalytics.php + * + * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns()) + * @return array analytics we've collected for the passed campaign. + * @returnf int visits number of visits + * @returnf int pages number of page views + * @returnf int new_visits new visits recorded + * @returnf int bounces vistors who "bounced" from your site + * @returnf double time_on_site the total time visitors spent on your sites + * @returnf int goal_conversions number of goals converted + * @returnf double goal_value value of conversion in dollars + * @returnf double revenue revenue generated by campaign + * @returnf int transactions number of transactions tracked + * @returnf int ecomm_conversions number Ecommerce transactions tracked + * @returnf array goals an array containing goal names and number of conversions + */ + function campaignAnalytics($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignAnalytics", $params); + } + + /** + * Retrieve the countries and number of opens tracked for each. Email address are not returned. + * + * @section Campaign Stats + * + * + * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns()) + * @return array countries an array of countries where opens occurred + * @returnf string code The ISO3166 2 digit country code + * @returnf string name A version of the country name, if we have it + * @returnf int opens The total number of opens that occurred in the country + * @returnf bool region_detail Whether or not a subsequent call to campaignGeoOpensByCountry() will return anything + */ + function campaignGeoOpens($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignGeoOpens", $params); + } + + /** + * Retrieve the regions and number of opens tracked for a certain country. Email address are not returned. + * + * @section Campaign Stats + * + * + * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns()) + * @param string $code An ISO3166 2 digit country code + * @return array regions an array of regions within the provided country where opens occurred. + * @returnf string code An internal code for the region. When this is blank, it indicates we know the country, but not the region + * @returnf string name The name of the region, if we have one. For blank "code" values, this will be "Rest of Country" + * @returnf int opens The total number of opens that occurred in the country + */ + function campaignGeoOpensForCountry($cid, $code) { + $params = array(); + $params["cid"] = $cid; + $params["code"] = $code; + return $this->callServer("campaignGeoOpensForCountry", $params); + } + + /** + * Retrieve the tracked eepurl mentions on Twitter + * + * @section Campaign Stats + * + * + * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns()) + * @return array stats an array containing tweets, retweets, clicks, and referrer related to using the campaign's eepurl + * @returnf array twitter various Twitter related stats + int tweets Total number of tweets seen + string first_tweet date and time of the first tweet seen + string last_tweet date and time of the last tweet seen + int retweets Total number of retweets seen + string first_retweet date and time of the first retweet seen + string last_retweet date and time of the last retweet seen + array statuses an array of statuses recorded inclduing the status, screen_name, status_id, and datetime fields plus an is_retweet flag + * @returnf array clicks stats related to click-throughs on the eepurl + int clicks Total number of clicks seen + string first_click date and time of the first click seen + string last_click date and time of the first click seen + array locations an array of geographic locations including country, region, and total clicks + * @returnf array referrers an array of arrays, each containing + string referrer the referrer, truncated to 100 characters + int clicks Total number of clicks seen from this referrer + string first_click date and time of the first click seen from this referrer + string last_click date and time of the first click seen from this referrer + */ + function campaignEepUrlStats($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignEepUrlStats", $params); + } + + /** + * Retrieve the most recent full bounce message for a specific email address on the given campaign. + * Messages over 30 days old are subject to being removed + * + * + * @section Campaign Stats + * + * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns()) + * @param string $email the email address or unique id of the member to pull a bounce message for. + * @return array the full bounce message for this email+campaign along with some extra data. + * @returnf string date date/time the bounce was received and processed + * @returnf string email the email address that bounced + * @returnf string message the entire bounce message received + */ + function campaignBounceMessage($cid, $email) { + $params = array(); + $params["cid"] = $cid; + $params["email"] = $email; + return $this->callServer("campaignBounceMessage", $params); + } + + /** + * Retrieve the full bounce messages for the given campaign. Note that this can return very large amounts + * of data depending on how large the campaign was and how much cruft the bounce provider returned. Also, + * message over 30 days old are subject to being removed + * + * @section Campaign Stats + * + * @example mcapi_campaignBounceMessages.php + * + * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns()) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 25, upper limit set at 50 + * @param string $since optional pull only messages since this time - use YYYY-MM-DD format in GMT (we only store the date, not the time) + * @return array bounces the full bounce messages for this campaign + * @returnf int total that total number of bounce messages for the campaign + * @returnf array data an array containing the data for this page + string date date/time the bounce was received and processed + string email the email address that bounced + string message the entire bounce message received + */ + function campaignBounceMessages($cid, $start=0, $limit=25, $since=NULL) { + $params = array(); + $params["cid"] = $cid; + $params["start"] = $start; + $params["limit"] = $limit; + $params["since"] = $since; + return $this->callServer("campaignBounceMessages", $params); + } + + /** + * Retrieve the Ecommerce Orders tracked by campaignEcommOrderAdd() + * + * @section Campaign Stats + * + * @param string $cid the campaign id to pull bounces for (can be gathered using campaigns()) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 100, upper limit set at 500 + * @param string $since optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT + * @return array the total matching orders and the specific orders for the requested page + * @returnf int total the total matching orders + * @returnf array data the actual data for each order being returned + string store_id the store id generated by the plugin used to uniquely identify a store + string store_name the store name collected by the plugin - often the domain name + string order_id the internal order id the store tracked this order by + string email the email address that received this campaign and is associated with this order + double order_total the order total + double tax_total the total tax for the order (if collected) + double ship_total the shipping total for the order (if collected) + string order_date the date the order was tracked - from the store if possible, otherwise the GMT time we recieved it + array lines containing detail of the order - product, category, quantity, item cost + */ + function campaignEcommOrders($cid, $start=0, $limit=100, $since=NULL) { + $params = array(); + $params["cid"] = $cid; + $params["start"] = $start; + $params["limit"] = $limit; + $params["since"] = $since; + return $this->callServer("campaignEcommOrders", $params); + } + + /** + * Get the URL to a customized VIP Report for the specified campaign and optionally send an email to someone with links to it. Note subsequent calls will overwrite anything already set for the same campign (eg, the password) + * + * @section Campaign Related + * + * @param string $cid the campaign id to share a report for (can be gathered using campaigns()) + * @param array $opts optional various parameters which can be used to configure the shared report + string header_type optional - "text" or "image', defaults to "text' + string header_data optional - if "header_type" is text, the text to display. if "header_type" is "image" a valid URL to an image file. Note that images will be resized to be no more than 500x150. Defaults to the Accounts Company Name. + boolean secure optional - whether to require a password for the shared report. defaults to "true" + string password optional - if secure is true and a password is not included, we will generate one. It is always returned. + string to_email optional - optional, email address to share the report with - no value means an email will not be sent + array theme optional - an array containing either 3 or 6 character color code values for: "bg_color", "header_color", "current_tab", "current_tab_text", "normal_tab", "normal_tab_text", "hover_tab", "hover_tab_text" + string css_url optional - a link to an external CSS file to be included after our default CSS (http://vip-reports.net/css/vip.css) only if loaded via the "secure_url" - max 255 characters + * @return struct Struct containing details for the shared report + * @returnf string title The Title of the Campaign being shared + * @returnf string url The URL to the shared report + * @returnf string secure_url The URL to the shared report, including the password (good for loading in an IFRAME). For non-secure reports, this will not be returned + * @returnf string password If secured, the password for the report, otherwise this field will not be returned + */ + function campaignShareReport($cid, $opts=array ( +)) { + $params = array(); + $params["cid"] = $cid; + $params["opts"] = $opts; + return $this->callServer("campaignShareReport", $params); + } + + /** + * Get the content (both html and text) for a campaign either as it would appear in the campaign archive or as the raw, original content + * + * @section Campaign Related + * + * @param string $cid the campaign id to get content for (can be gathered using campaigns()) + * @param bool $for_archive optional controls whether we return the Archive version (true) or the Raw version (false), defaults to true + * @return struct Struct containing all content for the campaign (see Returned Fields for details + * @returnf string html The HTML content used for the campgain with merge tags intact + * @returnf string text The Text content used for the campgain with merge tags intact + */ + function campaignContent($cid, $for_archive=true) { + $params = array(); + $params["cid"] = $cid; + $params["for_archive"] = $for_archive; + return $this->callServer("campaignContent", $params); + } + + /** + * Get the HTML template content sections for a campaign. Note that this will return very jagged, non-standard results based on the template + * a campaign is using. You only want to use this if you want to allow editing template sections in your applicaton. + * + * @section Campaign Related + * + * @param string $cid the campaign id to get content for (can be gathered using campaigns()) + * @return array array containing all content section for the campaign - + */ + function campaignTemplateContent($cid) { + $params = array(); + $params["cid"] = $cid; + return $this->callServer("campaignTemplateContent", $params); + } + + /** + * Retrieve the list of email addresses that opened a given campaign with how many times they opened - note: this AIM function is free and does + * not actually require the AIM module to be installed + * + * @section Campaign Report Data + * + * @param string $cid the campaign id to get opens for (can be gathered using campaigns()) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000 + * @return array array containing the total records matched and the specific records for this page + * @returnf int total the total number of records matched + * @returnf array data the actual opens data, including: + string email Email address that opened the campaign + int open_count Total number of times the campaign was opened by this email address + */ + function campaignOpenedAIM($cid, $start=0, $limit=1000) { + $params = array(); + $params["cid"] = $cid; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("campaignOpenedAIM", $params); + } + + /** + * Retrieve the list of email addresses that did not open a given campaign + * + * @section Campaign Report Data + * + * @param string $cid the campaign id to get no opens for (can be gathered using campaigns()) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000 + * @return array array containing the total records matched and the specific records for this page + * @returnf int total the total number of records matched + * @returnf array data the email addresses that did not open the campaign + string email Email address that opened the campaign + */ + function campaignNotOpenedAIM($cid, $start=0, $limit=1000) { + $params = array(); + $params["cid"] = $cid; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("campaignNotOpenedAIM", $params); + } + + /** + * Return the list of email addresses that clicked on a given url, and how many times they clicked + * + * @section Campaign Report Data + * + * @param string $cid the campaign id to get click stats for (can be gathered using campaigns()) + * @param string $url the URL of the link that was clicked on + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000 + * @return array array containing the total records matched and the specific records for this page + * @returnf int total the total number of records matched + * @returnf array data the email addresses that did not open the campaign + string email Email address that opened the campaign + int clicks Total number of times the URL was clicked on by this email address + */ + function campaignClickDetailAIM($cid, $url, $start=0, $limit=1000) { + $params = array(); + $params["cid"] = $cid; + $params["url"] = $url; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("campaignClickDetailAIM", $params); + } + + /** + * Given a campaign and email address, return the entire click and open history with timestamps, ordered by time + * + * @section Campaign Report Data + * + * @param string $cid the campaign id to get stats for (can be gathered using campaigns()) + * @param array $email_address an array of up to 50 email addresses to check OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns. For backwards compatibility, if a string is passed, it will be treated as an array with a single element (will not work with XML-RPC). + * @return array an array with the keys listed in Returned Fields below + * @returnf int success the number of email address records found + * @returnf int error the number of email address records which could not be found + * @returnf array data arrays containing the actions (opens and clicks) that the email took, with timestamps + string action The action taken (open or click) + string timestamp Time the action occurred + string url For clicks, the URL that was clicked + */ + function campaignEmailStatsAIM($cid, $email_address) { + $params = array(); + $params["cid"] = $cid; + $params["email_address"] = $email_address; + return $this->callServer("campaignEmailStatsAIM", $params); + } + + /** + * Given a campaign and correct paging limits, return the entire click and open history with timestamps, ordered by time, + * for every user a campaign was delivered to. + * + * @section Campaign Report Data + * @example mcapi_campaignEmailStatsAIMAll.php + * + * @param string $cid the campaign id to get stats for (can be gathered using campaigns()) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 100, upper limit set at 1000 + * @return array Array containing a total record count and data including the actions (opens and clicks) for each email, with timestamps + * @returnf int total the total number of records + * @returnf array data each record with their details: + string action The action taken (open or click) + string timestamp Time the action occurred + string url For clicks, the URL that was clicked + */ + function campaignEmailStatsAIMAll($cid, $start=0, $limit=100) { + $params = array(); + $params["cid"] = $cid; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("campaignEmailStatsAIMAll", $params); + } + + /** + * Attach Ecommerce Order Information to a Campaign. This will generall be used by ecommerce package plugins + * that we provide or by 3rd part system developers. + * @section Campaign Related + * + * @param array $order an array of information pertaining to the order that has completed. Use the following keys: + string id the Order Id + string campaign_id the Campaign Id to track this order with (see the "mc_cid" query string variable a campaign passes) + string email_id the Email Id of the subscriber we should attach this order to (see the "mc_eid" query string variable a campaign passes) + double total The Order Total (ie, the full amount the customer ends up paying) + string order_date optional the date of the order - if this is not provided, we will default the date to now + double shipping optional the total paid for Shipping Fees + double tax optional the total tax paid + string store_id a unique id for the store sending the order in (20 character max) + string store_name optional a "nice" name for the store - typically the base web address (ie, "store.mailchimp.com"). We will automatically update this if it changes (based on store_id) + string plugin_id the MailChimp assigned Plugin Id. Get yours by registering here + array items the individual line items for an order using these keys: +
    + int line_num optional the line number of the item on the order. We will generate these if they are not passed + int product_id the store's internal Id for the product. Lines that do no contain this will be skipped + string product_name the product name for the product_id associated with this item. We will auto update these as they change (based on product_id) + int category_id the store's internal Id for the (main) category associated with this product. Our testing has found this to be a "best guess" scenario + string category_name the category name for the category_id this product is in. Our testing has found this to be a "best guess" scenario. Our plugins walk the category heirarchy up and send "Root - SubCat1 - SubCat4", etc. + double qty the quantity of the item ordered + double cost the cost of a single item (ie, not the extended cost of the line) +
    + * @return bool true if the data is saved, otherwise an error is thrown. + */ + function campaignEcommOrderAdd($order) { + $params = array(); + $params["order"] = $order; + return $this->callServer("campaignEcommOrderAdd", $params); + } + + /** + * Retrieve all of the lists defined for your user account + * + * @section List Related + * @example mcapi_lists.php + * @example xml-rpc_lists.php + * + * @param array $filters a hash of filters to apply to this query - all are optional: + string list_id optional - return a single list using a known list_id. Accepts multiples separated by commas when not using exact matching + string list_name optional - only lists that match this name + string from_name optional - only lists that have a default from name matching this + string from_email optional - only lists that have a default from email matching this + string from_subject optional - only lists that have a default from email matching this + string created_before optional - only show lists that were created before this date/time (in GMT) - format is YYYY-MM-DD HH:mm:ss (24hr) + string created_after optional - only show lists that were created since this date/time (in GMT) - format is YYYY-MM-DD HH:mm:ss (24hr) + boolean exact optional - flag for whether to filter on exact values when filtering, or search within content for filter values - defaults to true + * @param int $start optional - control paging of lists, start results at this list #, defaults to 1st page of data (page 0) + * @param int $limit optional - control paging of lists, number of lists to return with each call, defaults to 25 (max=100) + * @return array an array with keys listed in Returned Fields below + * @returnf int total the total number of lists which matched the provided filters + * @returnf array data the lists which matched the provided filters, including the following for + string id The list id for this list. This will be used for all other list management functions. + int web_id The list id used in our web app, allows you to create a link directly to it + string name The name of the list. + string date_created The date that this list was created. + boolean email_type_option Whether or not the List supports multiple formats for emails or just HTML + boolean use_awesomebar Whether or not campaigns for this list use the Awesome Bar in archives by default + string default_from_name Default From Name for campaigns using this list + string default_from_email Default From Email for campaigns using this list + string default_subject Default Subject Line for campaigns using this list + string default_language Default Language for this list's forms + int list_rating An auto-generated activity score for the list (0 - 5) + array stats various stats and counts for the list + int member_count The number of active members in the given list. + int unsubscribe_count The number of members who have unsubscribed from the given list. + int cleaned_count The number of members cleaned from the given list. + int member_count_since_send The number of active members in the given list since the last campaign was sent + int unsubscribe_count_since_send The number of members who have unsubscribed from the given list since the last campaign was sent + int cleaned_count_since_send The number of members cleaned from the given list since the last campaign was sent + int campaign_count The number of campaigns in any status that use this list + int grouping_count The number of Interest Groupings for this list + int group_count The number of Interest Groups (regardless of grouping) for this list + int merge_var_count The number of merge vars for this list (not including the required EMAIL one) + int avg_sub_rate the average number of subscribe per month for the list (empty value if we haven't calculated this yet) + int avg_unsub_rate the average number of unsubscribe per month for the list (empty value if we haven't calculated this yet) + int target_sub_rate the target subscription rate for the list to keep it growing (empty value if we haven't calculated this yet) + int open_rate the average open rate per campaign for the list (empty value if we haven't calculated this yet) + int click_rate the average click rate per campaign for the list (empty value if we haven't calculated this yet) + array modules Any list specific modules installed for this list (example is SocialPro) + */ + function lists($filters=array ( +), $start=0, $limit=25) { + $params = array(); + $params["filters"] = $filters; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("lists", $params); + } + + /** + * Get the list of merge tags for a given list, including their name, tag, and required setting + * + * @section List Related + * @example xml-rpc_listMergeVars.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @return array list of merge tags for the list + * @returnf string name Name of the merge field + * @returnf bool req Denotes whether the field is required (true) or not (false) + * @returnf string field_type The "data type" of this merge var. One of: email, text, number, radio, dropdown, date, address, phone, url, imageurl + * @returnf bool public Whether or not this field is visible to list subscribers + * @returnf bool show Whether the list owner has this field displayed on their list dashboard + * @returnf string order The order the list owner has set this field to display in + * @returnf string default The default value the list owner has set for this field + * @returnf string size The width of the field to be used + * @returnf string tag The merge tag that's used for forms and listSubscribe() and listUpdateMember() + * @returnf array choices For radio and dropdown field types, an array of the options available + */ + function listMergeVars($id) { + $params = array(); + $params["id"] = $id; + return $this->callServer("listMergeVars", $params); + } + + /** + * Add a new merge tag to a given list + * + * @section List Related + * @example xml-rpc_listMergeVarAdd.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $tag The merge tag to add, e.g. FNAME + * @param string $name The long description of the tag being added, used for user displays + * @param array $options optional Various options for this merge var. note: for historical purposes this can also take a "boolean" + string field_type optional one of: text, number, radio, dropdown, date, address, phone, url, imageurl - defaults to text + boolean req optional indicates whether the field is required - defaults to false + boolean public optional indicates whether the field is displayed in public - defaults to true + boolean show optional indicates whether the field is displayed in the app's list member view - defaults to true + string default_value optional the default value for the field. See listSubscribe() for formatting info. Defaults to blank + array choices optional kind of - an array of strings to use as the choices for radio and dropdown type fields + + * @return bool true if the request succeeds, otherwise an error will be thrown + */ + function listMergeVarAdd($id, $tag, $name, $options=array ( +)) { + $params = array(); + $params["id"] = $id; + $params["tag"] = $tag; + $params["name"] = $name; + $params["options"] = $options; + return $this->callServer("listMergeVarAdd", $params); + } + + /** + * Update most parameters for a merge tag on a given list. You cannot currently change the merge type + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $tag The merge tag to update + * @param array $options The options to change for a merge var. See listMergeVarAdd() for valid options + * @return bool true if the request succeeds, otherwise an error will be thrown + */ + function listMergeVarUpdate($id, $tag, $options) { + $params = array(); + $params["id"] = $id; + $params["tag"] = $tag; + $params["options"] = $options; + return $this->callServer("listMergeVarUpdate", $params); + } + + /** + * Delete a merge tag from a given list and all its members. Seriously - the data is removed from all members as well! + * Note that on large lists this method may seem a bit slower than calls you typically make. + * + * @section List Related + * @example xml-rpc_listMergeVarDel.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $tag The merge tag to delete + * @return bool true if the request succeeds, otherwise an error will be thrown + */ + function listMergeVarDel($id, $tag) { + $params = array(); + $params["id"] = $id; + $params["tag"] = $tag; + return $this->callServer("listMergeVarDel", $params); + } + + /** + * Get the list of interest groupings for a given list, including the label, form information, and included groups for each + * + * @section List Related + * @example xml-rpc_listInterestGroupings.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @return struct list of interest groups for the list + * @returnf string id The id for the Grouping + * @returnf string name Name for the Interest groups + * @returnf string form_field Gives the type of interest group: checkbox,radio,select + * @returnf array groups Array of the grouping options including the "bit" value, "name", "display_order", and number of "subscribers" with the option selected. + */ + function listInterestGroupings($id) { + $params = array(); + $params["id"] = $id; + return $this->callServer("listInterestGroupings", $params); + } + + /** Add a single Interest Group - if interest groups for the List are not yet enabled, adding the first + * group will automatically turn them on. + * + * @section List Related + * @example xml-rpc_listInterestGroupAdd.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $group_name the interest group to add - group names must be unique within a grouping + * @param int optional $grouping_id The grouping to add the new group to - get using listInterestGrouping() . If not supplied, the first grouping on the list is used. + * @return bool true if the request succeeds, otherwise an error will be thrown + */ + function listInterestGroupAdd($id, $group_name, $grouping_id=NULL) { + $params = array(); + $params["id"] = $id; + $params["group_name"] = $group_name; + $params["grouping_id"] = $grouping_id; + return $this->callServer("listInterestGroupAdd", $params); + } + + /** Delete a single Interest Group - if the last group for a list is deleted, this will also turn groups for the list off. + * + * @section List Related + * @example xml-rpc_listInterestGroupDel.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $group_name the interest group to delete + * @param int $grouping_id The grouping to delete the group from - get using listInterestGrouping() . If not supplied, the first grouping on the list is used. + * @return bool true if the request succeeds, otherwise an error will be thrown + */ + function listInterestGroupDel($id, $group_name, $grouping_id=NULL) { + $params = array(); + $params["id"] = $id; + $params["group_name"] = $group_name; + $params["grouping_id"] = $grouping_id; + return $this->callServer("listInterestGroupDel", $params); + } + + /** Change the name of an Interest Group + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $old_name the interest group name to be changed + * @param string $new_name the new interest group name to be set + * @param int optional $grouping_id The grouping to delete the group from - get using listInterestGrouping() . If not supplied, the first grouping on the list is used. + * @return bool true if the request succeeds, otherwise an error will be thrown + */ + function listInterestGroupUpdate($id, $old_name, $new_name, $grouping_id=NULL) { + $params = array(); + $params["id"] = $id; + $params["old_name"] = $old_name; + $params["new_name"] = $new_name; + $params["grouping_id"] = $grouping_id; + return $this->callServer("listInterestGroupUpdate", $params); + } + + /** Add a new Interest Grouping - if interest groups for the List are not yet enabled, adding the first + * grouping will automatically turn them on. + * + * @section List Related + * @example xml-rpc_listInterestGroupingAdd.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $name the interest grouping to add - grouping names must be unique + * @param string $type The type of the grouping to add - one of "checkboxes", "hidden", "dropdown", "radio" + * @param array $groups The lists of initial group names to be added - at least 1 is required and the names must be unique within a grouping. If the number takes you over the 60 group limit, an error will be thrown. + * @return int the new grouping id if the request succeeds, otherwise an error will be thrown + */ + function listInterestGroupingAdd($id, $name, $type, $groups) { + $params = array(); + $params["id"] = $id; + $params["name"] = $name; + $params["type"] = $type; + $params["groups"] = $groups; + return $this->callServer("listInterestGroupingAdd", $params); + } + + /** Update an existing Interest Grouping + * + * @section List Related + * @example xml-rpc_listInterestGroupingUpdate.php + * + * @param int $grouping_id the interest grouping id - get from listInterestGroupings() + * @param string $name The name of the field to update - either "name" or "type". Groups with in the grouping should be manipulated using the standard listInterestGroup* methods + * @param string $value The new value of the field. Grouping names must be unique - only "hidden" and "checkboxes" grouping types can be converted between each other. + * @return bool true if the request succeeds, otherwise an error will be thrown + */ + function listInterestGroupingUpdate($grouping_id, $name, $value) { + $params = array(); + $params["grouping_id"] = $grouping_id; + $params["name"] = $name; + $params["value"] = $value; + return $this->callServer("listInterestGroupingUpdate", $params); + } + + /** Delete an existing Interest Grouping - this will permanently delete all contained interest groups and will remove those selections from all list members + * + * @section List Related + * @example xml-rpc_listInterestGroupingDel.php + * + * @param int $grouping_id the interest grouping id - get from listInterestGroupings() + * @return bool true if the request succeeds, otherwise an error will be thrown + */ + function listInterestGroupingDel($grouping_id) { + $params = array(); + $params["grouping_id"] = $grouping_id; + return $this->callServer("listInterestGroupingDel", $params); + } + + /** Return the Webhooks configured for the given list + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @return array list of webhooks + * @returnf string url the URL for this Webhook + * @returnf array actions the possible actions and whether they are enabled + * @returnf array sources the possible sources and whether they are enabled + */ + function listWebhooks($id) { + $params = array(); + $params["id"] = $id; + return $this->callServer("listWebhooks", $params); + } + + /** Add a new Webhook URL for the given list + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $url a valid URL for the Webhook - it will be validated. note that a url may only exist on a list once. + * @param array $actions optional a hash of actions to fire this Webhook for + boolean subscribe optional as subscribes occur, defaults to true + boolean unsubscribe optional as subscribes occur, defaults to true + boolean profile optional as profile updates occur, defaults to true + boolean cleaned optional as emails are cleaned from the list, defaults to true + boolean upemail optional when subscribers change their email address, defaults to true + * @param array $sources optional a hash of sources to fire this Webhook for + boolean user optional user/subscriber initiated actions, defaults to true + boolean admin optional admin actions in our web app, defaults to true + boolean api optional actions that happen via API calls, defaults to false + * @return bool true if the call succeeds, otherwise an exception will be thrown + */ + function listWebhookAdd($id, $url, $actions=array ( +), $sources=array ( +)) { + $params = array(); + $params["id"] = $id; + $params["url"] = $url; + $params["actions"] = $actions; + $params["sources"] = $sources; + return $this->callServer("listWebhookAdd", $params); + } + + /** Delete an existing Webhook URL from a given list + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $url the URL of a Webhook on this list + * @return boolean true if the call succeeds, otherwise an exception will be thrown + */ + function listWebhookDel($id, $url) { + $params = array(); + $params["id"] = $id; + $params["url"] = $url; + return $this->callServer("listWebhookDel", $params); + } + + /** Retrieve all of the Static Segments for a list. + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @return array an array of parameters for each static segment + * @returnf int id the id of the segment + * @returnf string name the name for the segment + * @returnf int member_count the total number of members currently in a segment + * @returnf date created_date the date/time the segment was created + * @returnf date last_update the date/time the segment was last updated (add or del) + * @returnf date last_reset the date/time the segment was last reset (ie had all members cleared from it) + */ + function listStaticSegments($id) { + $params = array(); + $params["id"] = $id; + return $this->callServer("listStaticSegments", $params); + } + + /** Save a segment against a list for later use. There is no limit to the number of segments which can be saved. Static Segments are not tied + * to any merge data, interest groups, etc. They essentially allow you to configure an unlimited number of custom segments which will have standard performance. + * When using proper segments, Static Segments are one of the available options for segmentation just as if you used a merge var (and they can be used with other segmentation + * options), though performance may degrade at that point. + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $name a unique name per list for the segment - 50 character maximum length, anything longer will be truncated + * @return int the id of the new segment, otherwise an error will be thrown. + */ + function listStaticSegmentAdd($id, $name) { + $params = array(); + $params["id"] = $id; + $params["name"] = $name; + return $this->callServer("listStaticSegmentAdd", $params); + } + + /** Resets a static segment - removes all members from the static segment. Note: does not actually affect list member data + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @param int $seg_id the id of the static segment to reset - get from listStaticSegments() + * @return bool true if it worked, otherwise an error is thrown. + */ + function listStaticSegmentReset($id, $seg_id) { + $params = array(); + $params["id"] = $id; + $params["seg_id"] = $seg_id; + return $this->callServer("listStaticSegmentReset", $params); + } + + /** Delete a static segment. Note that this will, of course, remove any member affiliations with the segment + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @param int $seg_id the id of the static segment to delete - get from listStaticSegments() + * @return bool true if it worked, otherwise an error is thrown. + */ + function listStaticSegmentDel($id, $seg_id) { + $params = array(); + $params["id"] = $id; + $params["seg_id"] = $seg_id; + return $this->callServer("listStaticSegmentDel", $params); + } + + /** Add list members to a static segment. It is suggested that you limit batch size to no more than 10,000 addresses per call. Email addresses must exist on the list + * in order to be included - this will not subscribe them to the list! + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @param int $seg_id the id of the static segment to modify - get from listStaticSegments() + * @param array $batch an array of email addresses and/or unique_ids to add to the segment + * @return array an array with the results of the operation + * @returnf int success the total number of successful updates (will include members already in the segment) + * @returnf array errors the email address, an error code, and a message explaining why they couldn't be added + */ + function listStaticSegmentMembersAdd($id, $seg_id, $batch) { + $params = array(); + $params["id"] = $id; + $params["seg_id"] = $seg_id; + $params["batch"] = $batch; + return $this->callServer("listStaticSegmentMembersAdd", $params); + } + + /** Remove list members from a static segment. It is suggested that you limit batch size to no more than 10,000 addresses per call. Email addresses must exist on the list + * in order to be removed - this will not unsubscribe them from the list! + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @param int $seg_id the id of the static segment to delete - get from listStaticSegments() + * @param array $batch an array of email addresses and/or unique_ids to remove from the segment + * @return array an array with the results of the operation + * @returnf int success the total number of succesful removals + * @returnf array errors the email address, an error code, and a message explaining why they couldn't be removed + */ + function listStaticSegmentMembersDel($id, $seg_id, $batch) { + $params = array(); + $params["id"] = $id; + $params["seg_id"] = $seg_id; + $params["batch"] = $batch; + return $this->callServer("listStaticSegmentMembersDel", $params); + } + + /** + * Subscribe the provided email to a list. By default this sends a confirmation email - you will not see new members until the link contained in it is clicked! + * + * @section List Related + * + * @example mcapi_listSubscribe.php + * @example json_listSubscribe.php + * @example xml-rpc_listSubscribe.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $email_address the email address to subscribe + * @param array $merge_vars optional merges for the email (FNAME, LNAME, etc.) (see examples below for handling "blank" arrays). Note that a merge field can only hold up to 255 characters. Also, there are a few "special" keys: + string EMAIL set this to change the email address. This is only respected on calls using update_existing or when passed to listUpdateMember() + array GROUPINGS Set Interest Groups by Grouping. Each element in this array should be an array containing the "groups" parameter which contains a comma delimited list of Interest Groups to add. Commas in Interest Group names should be escaped with a backslash. ie, "," => "\," and either an "id" or "name" parameter to specify the Grouping - get from listInterestGroupings() + string OPTINIP Set the Opt-in IP fields. Abusing this may cause your account to be suspended. We do validate this and it must not be a private IP address. + array MC_LOCATION Set the members geographic location. By default if this merge field exists, we'll update using the optin_ip if it exists. If the array contains LATITUDE and LONGITUDE keys, they will be used. NOTE - this will slow down each subscribe call a bit, especially for lat/lng pairs in sparsely populated areas. Currently our automated background processes can and will overwrite this based on opens and clicks. + + Handling Field Data Types - most fields you can just pass a string and all is well. For some, though, that is not the case... + Field values should be formatted as follows: + string address For the string version of an Address, the fields should be delimited by 2 spaces. Address 2 can be skipped. The Country should be a 2 character ISO-3166-1 code and will default to your default country if not set + array address For the array version of an Address, the requirements for Address 2 and Country are the same as with the string version. Then simply pass us an array with the keys addr1, addr2, city, state, zip, country and appropriate values for each + + string date use YYYY-MM-DD to be safe. Generally, though, anything strtotime() understands we'll understand - http://us2.php.net/strtotime + string dropdown can be a normal string - we will validate that the value is a valid option + string image must be a valid, existing url. we will check its existence + string multi_choice can be a normal string - we will validate that the value is a valid option + double number pass in a valid number - anything else will turn in to zero (0). Note, this will be rounded to 2 decimal places + string phone If your account has the US Phone numbers option set, this must be in the form of NPA-NXX-LINE (404-555-1212). If not, we assume an International number and will simply set the field with what ever number is passed in. + string website This is a standard string, but we will verify that it looks like a valid URL + + * @param string $email_type optional email type preference for the email (html, text, or mobile defaults to html) + * @param bool $double_optin optional flag to control whether a double opt-in confirmation message is sent, defaults to true. Abusing this may cause your account to be suspended. + * @param bool $update_existing optional flag to control whether a existing subscribers should be updated instead of throwing and error, defaults to false + * @param bool $replace_interests optional flag to determine whether we replace the interest groups with the groups provided, or we add the provided groups to the member's interest groups (optional, defaults to true) + * @param bool $send_welcome optional if your double_optin is false and this is true, we will send your lists Welcome Email if this subscribe succeeds - this will *not* fire if we end up updating an existing subscriber. If double_optin is true, this has no effect. defaults to false. + * @return boolean true on success, false on failure. When using MCAPI.class.php, the value can be tested and error messages pulled from the MCAPI object (see below) + */ + function listSubscribe($id, $email_address, $merge_vars=NULL, $email_type='html', $double_optin=true, $update_existing=false, $replace_interests=true, $send_welcome=false) { + $params = array(); + $params["id"] = $id; + $params["email_address"] = $email_address; + $params["merge_vars"] = $merge_vars; + $params["email_type"] = $email_type; + $params["double_optin"] = $double_optin; + $params["update_existing"] = $update_existing; + $params["replace_interests"] = $replace_interests; + $params["send_welcome"] = $send_welcome; + return $this->callServer("listSubscribe", $params); + } + + /** + * Unsubscribe the given email address from the list + * + * @section List Related + * @example mcapi_listUnsubscribe.php + * @example xml-rpc_listUnsubscribe.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $email_address the email address to unsubscribe OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns + * @param boolean $delete_member flag to completely delete the member from your list instead of just unsubscribing, default to false + * @param boolean $send_goodbye flag to send the goodbye email to the email address, defaults to true + * @param boolean $send_notify flag to send the unsubscribe notification email to the address defined in the list email notification settings, defaults to true + * @return boolean true on success, false on failure. When using MCAPI.class.php, the value can be tested and error messages pulled from the MCAPI object (see below) + */ + function listUnsubscribe($id, $email_address, $delete_member=false, $send_goodbye=true, $send_notify=true) { + $params = array(); + $params["id"] = $id; + $params["email_address"] = $email_address; + $params["delete_member"] = $delete_member; + $params["send_goodbye"] = $send_goodbye; + $params["send_notify"] = $send_notify; + return $this->callServer("listUnsubscribe", $params); + } + + /** + * Edit the email address, merge fields, and interest groups for a list member. If you are doing a batch update on lots of users, + * consider using listBatchSubscribe() with the update_existing and possible replace_interests parameter. + * + * @section List Related + * @example mcapi_listUpdateMember.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $email_address the current email address of the member to update OR the "id" for the member returned from listMemberInfo, Webhooks, and Campaigns + * @param array $merge_vars array of new field values to update the member with. See merge_vars in listSubscribe() for details. + * @param string $email_type change the email type preference for the member ("html", "text", or "mobile"). Leave blank to keep the existing preference (optional) + * @param boolean $replace_interests flag to determine whether we replace the interest groups with the updated groups provided, or we add the provided groups to the member's interest groups (optional, defaults to true) + * @return boolean true on success, false on failure. When using MCAPI.class.php, the value can be tested and error messages pulled from the MCAPI object + */ + function listUpdateMember($id, $email_address, $merge_vars, $email_type='', $replace_interests=true) { + $params = array(); + $params["id"] = $id; + $params["email_address"] = $email_address; + $params["merge_vars"] = $merge_vars; + $params["email_type"] = $email_type; + $params["replace_interests"] = $replace_interests; + return $this->callServer("listUpdateMember", $params); + } + + /** + * Subscribe a batch of email addresses to a list at once. If you are using a serialized version of the API, we strongly suggest that you + * only run this method as a POST request, and not a GET request. Maximum batch sizes vary based on the amount of data in each record, + * though you should cap them at 5k - 10k records, depending on your experience. These calls are also long, so be sure you increase your timeout values. + * + * @section List Related + * + * @example mcapi_listBatchSubscribe.php + * @example xml-rpc_listBatchSubscribe.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param array $batch an array of structs for each address to import with two special keys: "EMAIL" for the email address, and "EMAIL_TYPE" for the email type option (html, text, or mobile) + * @param boolean $double_optin flag to control whether to send an opt-in confirmation email - defaults to true + * @param boolean $update_existing flag to control whether to update members that are already subscribed to the list or to return an error, defaults to false (return error) + * @param boolean $replace_interests flag to determine whether we replace the interest groups with the updated groups provided, or we add the provided groups to the member's interest groups (optional, defaults to true) + * @return struct Array of result counts and any errors that occurred + * @returnf int add_count Number of email addresses that were succesfully added + * @returnf int update_count Number of email addresses that were succesfully updated + * @returnf int error_count Number of email addresses that failed during addition/updating + * @returnf array errors Array of error arrays, each containing: + string code the error code + string message the full error message + string email the email address being processed + */ + function listBatchSubscribe($id, $batch, $double_optin=true, $update_existing=false, $replace_interests=true) { + $params = array(); + $params["id"] = $id; + $params["batch"] = $batch; + $params["double_optin"] = $double_optin; + $params["update_existing"] = $update_existing; + $params["replace_interests"] = $replace_interests; + return $this->callServer("listBatchSubscribe", $params); + } + + /** + * Unsubscribe a batch of email addresses to a list + * + * @section List Related + * @example mcapi_listBatchUnsubscribe.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param array $emails array of email addresses to unsubscribe + * @param boolean $delete_member flag to completely delete the member from your list instead of just unsubscribing, default to false + * @param boolean $send_goodbye flag to send the goodbye email to the email addresses, defaults to true + * @param boolean $send_notify flag to send the unsubscribe notification email to the address defined in the list email notification settings, defaults to false + * @return struct Array of result counts and any errors that occurred + * @returnf int success_count Number of email addresses that were succesfully added/updated + * @returnf int error_count Number of email addresses that failed during addition/updating + * @returnf array errors Array of error structs. Each error struct will contain "code", "message", and "email" + */ + function listBatchUnsubscribe($id, $emails, $delete_member=false, $send_goodbye=true, $send_notify=false) { + $params = array(); + $params["id"] = $id; + $params["emails"] = $emails; + $params["delete_member"] = $delete_member; + $params["send_goodbye"] = $send_goodbye; + $params["send_notify"] = $send_notify; + return $this->callServer("listBatchUnsubscribe", $params); + } + + /** + * Get all of the list members for a list that are of a particular status. Are you trying to get a dump including lots of merge + * data or specific members of a list? If so, checkout the Export API + * + * @section List Related + * @example mcapi_listMembers.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param string $status the status to get members for - one of(subscribed, unsubscribed, cleaned, updated), defaults to subscribed + * @param string $since optional pull all members whose status (subscribed/unsubscribed/cleaned) has changed or whose profile (updated) has changed since this date/time (in GMT) - format is YYYY-MM-DD HH:mm:ss (24hr) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 100, upper limit set at 15000 + * @return array Array of a the total records match and matching list member data for this page (see Returned Fields for details) + * @returnf int total the total matching records + * @returnf array data the data for each member, including: + string email Member email address + date timestamp timestamp of their associated status date (subscribed, unsubscribed, cleaned, or updated) in GMT + string reason For unsubscribes only - the reason collected for the unsubscribe. If populated, one of 'NORMAL','NOSIGNUP','INAPPROPRIATE','SPAM','OTHER' + string reason_text For unsubscribes only - if the reason is OTHER, the text entered. + */ + function listMembers($id, $status='subscribed', $since=NULL, $start=0, $limit=100) { + $params = array(); + $params["id"] = $id; + $params["status"] = $status; + $params["since"] = $since; + $params["start"] = $start; + $params["limit"] = $limit; + return $this->callServer("listMembers", $params); + } + + /** + * Get all the information for particular members of a list + * + * @section List Related + * @example mcapi_listMemberInfo.php + * @example xml-rpc_listMemberInfo.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param array $email_address an array of up to 50 email addresses to get information for OR the "id"(s) for the member returned from listMembers, Webhooks, and Campaigns. For backwards compatibility, if a string is passed, it will be treated as an array with a single element (will not work with XML-RPC). + * @return array array of list members with their info in an array (see Returned Fields for details) + * @returnf int success the number of subscribers successfully found on the list + * @returnf int errors the number of subscribers who were not found on the list + * @returnf array data an array of arrays where each one has member info: + string id The unique id for this email address on an account + string email The email address associated with this record + string email_type The type of emails this customer asked to get: html, text, or mobile + array merges An associative array of all the merge tags and the data for those tags for this email address. Note: Interest Groups are returned as comma delimited strings - if a group name contains a comma, it will be escaped with a backslash. ie, "," => "\,". Groupings will be returned with their "id" and "name" as well as a "groups" field formatted just like Interest Groups + string status The subscription status for this email address, either subscribed, unsubscribed or cleaned + string ip_opt IP Address this address opted in from. + string ip_signup IP Address this address signed up from. + int member_rating the rating of the subscriber. This will be 1 - 5 as described here + string campaign_id If the user is unsubscribed and they unsubscribed from a specific campaign, that campaign_id will be listed, otherwise this is not returned. + array lists An associative array of the other lists this member belongs to - the key is the list id and the value is their status in that list. + date timestamp The time this email address was added to the list + date info_changed The last time this record was changed. If the record is old enough, this may be blank. + int web_id The Member id used in our web app, allows you to create a link directly to it + array clients the various clients we've tracked the address as using - each included array includes client 'name' and 'icon_url' + array static_segments the 'id', 'name', and date 'added' for any static segment this member is in + */ + function listMemberInfo($id, $email_address) { + $params = array(); + $params["id"] = $id; + $params["email_address"] = $email_address; + return $this->callServer("listMemberInfo", $params); + } + + /** + * Get the most recent 100 activities for particular list members (open, click, bounce, unsub, abuse, sent to) + * + * @section List Related + * @example mcapi_listMemberInfo.php + * @example xml-rpc_listMemberInfo.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @param array $email_address an array of up to 50 email addresses to get information for OR the "id"(s) for the member returned from listMembers, Webhooks, and Campaigns. + * @return array array of data and success/error counts + * @returnf int success the number of subscribers successfully found on the list + * @returnf int errors the number of subscribers who were not found on the list + * @returnf array data an array of arrays where each activity record has: + string action The action name, one of: open, click, bounce, unsub, abuse, sent + string timestamp The date/time of the action + string url For click actions, the url clicked, otherwise this is empty + string bounce_type For bounce actions, the bounce type, otherwise this is empty + string campaign_id The campaign id the action was related to, if it exists - otherwise empty (ie, direct unsub from list) + */ + function listMemberActivity($id, $email_address) { + $params = array(); + $params["id"] = $id; + $params["email_address"] = $email_address; + return $this->callServer("listMemberActivity", $params); + } + + /** + * Get all email addresses that complained about a given campaign + * + * @section List Related + * + * @example mcapi_listAbuseReports.php + * + * @param string $id the list id to pull abuse reports for (can be gathered using lists()) + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 500, upper limit set at 1000 + * @param string $since optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT + * @return array the total of all reports and the specific reports reports this page + * @returnf int total the total number of matching abuse reports + * @returnf array data the actual data for each reports, including: + string date date/time the abuse report was received and processed + string email the email address that reported abuse + string campaign_id the unique id for the campaign that report was made against + string type an internal type generally specifying the orginating mail provider - may not be useful outside of filling report views + */ + function listAbuseReports($id, $start=0, $limit=500, $since=NULL) { + $params = array(); + $params["id"] = $id; + $params["start"] = $start; + $params["limit"] = $limit; + $params["since"] = $since; + return $this->callServer("listAbuseReports", $params); + } + + /** + * Access the Growth History by Month for a given list. + * + * @section List Related + * + * @example mcapi_listGrowthHistory.php + * + * @param string $id the list id to connect to. Get by calling lists() + * @return array array of months and growth + * @returnf string month The Year and Month in question using YYYY-MM format + * @returnf int existing number of existing subscribers to start the month + * @returnf int imports number of subscribers imported during the month + * @returnf int optins number of subscribers who opted-in during the month + */ + function listGrowthHistory($id) { + $params = array(); + $params["id"] = $id; + return $this->callServer("listGrowthHistory", $params); + } + + /** + * Access up to the previous 180 days of daily detailed aggregated activity stats for a given list + * + * @section List Related + * + * + * @param string $id the list id to connect to. Get by calling lists() + * @return array array of array of daily values, each containing: + * @returnf string day The day in YYYY-MM-DD + * @returnf int emails_sent number of emails sent to the list + * @returnf int unique_opens number of unique opens for the list + * @returnf int recipient_clicks number of clicks for the list + * @returnf int hard_bounce number of hard bounces for the list + * @returnf int soft_bounce number of soft bounces for the list + * @returnf int abuse_reports number of abuse reports for the list + * @returnf int subs number of double optin subscribes for the list + * @returnf int unsubs number of manual unsubscribes for the list + * @returnf int other_adds number of non-double optin subscribes for the list (manual, API, or import) + * @returnf int other_removes number of non-manual unsubscribes for the list (deletions, empties, soft-bounce removals) + */ + function listActivity($id) { + $params = array(); + $params["id"] = $id; + return $this->callServer("listActivity", $params); + } + + /** + * Retrieve the locations (countries) that the list's subscribers have been tagged to based on geocoding their IP address + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @return array array of locations + * @returnf string country the country name + * @returnf string cc the 2 digit country code + * @returnf double percent the percent of subscribers in the country + * @returnf double total the total number of subscribers in the country + */ + function listLocations($id) { + $params = array(); + $params["id"] = $id; + return $this->callServer("listLocations", $params); + } + + /** + * Retrieve the clients that the list's subscribers have been tagged as being used based on user agents seen. Made possible by user-agent-string.info + * + * @section List Related + * + * @param string $id the list id to connect to. Get by calling lists() + * @return array the desktop and mobile user agents in use on the list + * @returnf array desktop desktop user agents and percentages + double penetration the percent of desktop clients in use + array clients a record containing the 'client', an 'icon' image url, the 'percent' using the client, and the total 'members' represented + * @returnf array mobile mobile user agents and percentages + double penetration the percent of mobile clients in use + array clients a record containing the 'client', an 'icon' image url, the 'percent' using the client, and the total 'members' represented + */ + function listClients($id) { + $params = array(); + $params["id"] = $id; + return $this->callServer("listClients", $params); + } + + /** + * Retrieve various templates available in the system, allowing some thing similar to our template gallery to be created. + * + * @section Template Related + * @example mcapi_templates.php + * @example xml-rpc_templates.php + * + * @param array $types optional the types of templates to return + boolean user Customer template for this user account. Defaults to true. + boolean gallery Templates from our Gallery. Note that some templates that require extra configuration are withheld. (eg, the Etsy template). Defaults to false. + boolean base Our "start from scratch" extremely basic templates + * @param string $category optional for Gallery templates only, limit to a specific template category + * @param array $inactives optional options to control how inactive templates are returned, if at all + boolean include user templates are not deleted, only set inactive. defaults to false. + boolean only only include inactive templates. defaults to false. + * @return array An array of structs, one for each template (see Returned Fields for details) + * @returnf int id Id of the template + * @returnf string name Name of the template + * @returnf string layout Layout of the template - "basic", "left_column", "right_column", or "postcard" + * @returnf string preview_image If we've generated it, the url of the preview image for the template. We do out best to keep these up to date, but Preview image urls are not guaranteed to be available + * @returnf string date_created The date/time the template was created + * @returnf bool edit_source Whether or not you are able to edit the source of a template. + */ + function templates($types=array ( +), $category=NULL, $inactives=array ( +)) { + $params = array(); + $params["types"] = $types; + $params["category"] = $category; + $params["inactives"] = $inactives; + return $this->callServer("templates", $params); + } + + /** + * Pull details for a specific template to help support editing + * + * @section Template Related + * + * @param int $tid the template id - get from templates() + * @param string $type the template type to load - one of 'user', 'gallery', 'base' + * @return array an array of info to be used when editing + * @returnf array default_content the default content broken down into the named editable sections for the template + * @returnf array sections the valid editable section names + * @returnf string source the full source of the template as if you exported it via our template editor + * @returnf string preview similar to the source, but the rendered version of the source from our popup preview + */ + function templateInfo($tid, $type='user') { + $params = array(); + $params["tid"] = $tid; + $params["type"] = $type; + return $this->callServer("templateInfo", $params); + } + + /** + * Create a new user template, NOT campaign content. These templates can then be applied while creating campaigns. + * + * @section Template Related + * @example mcapi_create_template.php + * @example xml-rpc_create_template.php + * + * @param string $name the name for the template - names must be unique and a max of 50 bytes + * @param string $html a string specifying the entire template to be created. This is NOT campaign content. They are intended to utilize our template language. + * @return int the new template id, otherwise an error is thrown. + */ + function templateAdd($name, $html) { + $params = array(); + $params["name"] = $name; + $params["html"] = $html; + return $this->callServer("templateAdd", $params); + } + + /** + * Replace the content of a user template, NOT campaign content. + * + * @section Template Related + * + * @param int $id the id of the user template to update + * @param array $values the values to updates - while both are optional, at least one should be provided. Both can be updated at the same time. + string name optional the name for the template - names must be unique and a max of 50 bytes + string html optional a string specifying the entire template to be created. This is NOT campaign content. They are intended to utilize our template language. + + * @return boolean true if the template was updated, otherwise an error will be thrown + */ + function templateUpdate($id, $values) { + $params = array(); + $params["id"] = $id; + $params["values"] = $values; + return $this->callServer("templateUpdate", $params); + } + + /** + * Delete (deactivate) a user template + * + * @section Template Related + * + * @param int $id the id of the user template to delete + * @return boolean true if the template was deleted, otherwise an error will be thrown + */ + function templateDel($id) { + $params = array(); + $params["id"] = $id; + return $this->callServer("templateDel", $params); + } + + /** + * Undelete (reactivate) a user template + * + * @section Template Related + * + * @param int $id the id of the user template to reactivate + * @return boolean true if the template was deleted, otherwise an error will be thrown + */ + function templateUndel($id) { + $params = array(); + $params["id"] = $id; + return $this->callServer("templateUndel", $params); + } + + /** + * Retrieve lots of account information including payments made, plan info, some account stats, installed modules, + * contact info, and more. No private information like Credit Card numbers is available. + * + * @section Helper + * + * @return array containing the details for the account tied to this API Key + * @returnf string username The Account username + * @returnf string user_id The Account user unique id (for building some links) + * @returnf bool is_trial Whether the Account is in Trial mode (can only send campaigns to less than 100 emails) + * @returnf string timezone The timezone for the Account - default is "US/Eastern" + * @returnf string plan_type Plan Type - "monthly", "payasyougo", or "free" + * @returnf int plan_low only for Monthly plans - the lower tier for list size + * @returnf int plan_high only for Monthly plans - the upper tier for list size + * @returnf string plan_start_date only for Monthly plans - the start date for a monthly plan + * @returnf int emails_left only for Free and Pay-as-you-go plans emails credits left for the account + * @returnf bool pending_monthly Whether the account is finishing Pay As You Go credits before switching to a Monthly plan + * @returnf string first_payment date of first payment + * @returnf string last_payment date of most recent payment + * @returnf int times_logged_in total number of times the account has been logged into via the web + * @returnf string last_login date/time of last login via the web + * @returnf string affiliate_link Monkey Rewards link for our Affiliate program + * @returnf array contact Contact details for the account + string fname First Name + string lname Last Name + string email Email Address + string company Company Name + string address1 Address Line 1 + string address2 Address Line 2 + string city City + string state State or Province + string zip Zip or Postal Code + string country Country name + string url Website URL + string phone Phone number + string fax Fax number + * @returnf array modules Addons installed in the account + string name The module name + string added The date the module was added + * @returnf array orders Order details for the account + int order_id The order id + string type The order type - either "monthly" or "credits" + double amount The order amount + string date The order date + double credits_used The total credits used + * @returnf array rewards Rewards details for the account including credits & inspections earned, number of referals, referal details, and rewards used + int referrals_this_month the total number of referrals this month + string notify_on whether or not we notify the user when rewards are earned + string notify_email the email address address used for rewards notifications + array credits Email credits earned "this_month", "total_earned", and "remaining" + array inspections Inbox Inspections earned "this_month", "total_earned", and "remaining" + array referrals All referrals, including "name", "email", "signup_date", and "type" + array applied Applied rewards, including "value", "date", "order_id", and "order_desc" + */ + function getAccountDetails() { + $params = array(); + return $this->callServer("getAccountDetails", $params); + } + + /** + * Have HTML content auto-converted to a text-only format. You can send: plain HTML, an array of Template content, an existing Campaign Id, or an existing Template Id. Note that this will not save anything to or update any of your lists, campaigns, or templates. + * + * @section Helper + * @example xml-rpc_generateText.php + * + * @param string $type The type of content to parse. Must be one of: "html", "template", "url", "cid" (Campaign Id), or "tid" (Template Id) + * @param mixed $content The content to use. For "html" expects a single string value, "template" expects an array like you send to campaignCreate, "url" expects a valid & public URL to pull from, "cid" expects a valid Campaign Id, and "tid" expects a valid Template Id on your account. + * @return string the content pass in converted to text. + */ + function generateText($type, $content) { + $params = array(); + $params["type"] = $type; + $params["content"] = $content; + return $this->callServer("generateText", $params); + } + + /** + * Send your HTML content to have the CSS inlined and optionally remove the original styles. + * + * @section Helper + * @example xml-rpc_inlineCss.php + * + * @param string $html Your HTML content + * @param bool $strip_css optional Whether you want the CSS <style> tags stripped from the returned document. Defaults to false. + * @return string Your HTML content with all CSS inlined, just like if we sent it. + */ + function inlineCss($html, $strip_css=false) { + $params = array(); + $params["html"] = $html; + $params["strip_css"] = $strip_css; + return $this->callServer("inlineCss", $params); + } + + /** + * List all the folders for a user account + * + * @section Folder Related + * @example mcapi_folders.php + * @example xml-rpc_folders.php + * + * @param string $type optional the type of folders to return - either "campaign" or "autoresponder". Defaults to "campaign" + * @return array Array of folder structs (see Returned Fields for details) + * @returnf int folder_id Folder Id for the given folder, this can be used in the campaigns() function to filter on. + * @returnf string name Name of the given folder + * @returnf string date_created The date/time the folder was created + * @returnf string type The type of the folders being returned, just to make sure you know. + */ + function folders($type='campaign') { + $params = array(); + $params["type"] = $type; + return $this->callServer("folders", $params); + } + + /** + * Add a new folder to file campaigns or autoresponders in + * + * @section Folder Related + * @example mcapi_folderAdd.php + * @example xml-rpc_folderAdd.php + * + * @param string $name a unique name for a folder (max 100 bytes) + * @param string $type optional the type of folder to create - either "campaign" or "autoresponder". Defaults to "campaign" + * @return int the folder_id of the newly created folder. + */ + function folderAdd($name, $type='campaign') { + $params = array(); + $params["name"] = $name; + $params["type"] = $type; + return $this->callServer("folderAdd", $params); + } + + /** + * Update the name of a folder for campaigns or autoresponders + * + * @section Folder Related + * + * @param int $fid the folder id to update - retrieve from folders() + * @param string $name a new, unique name for the folder (max 100 bytes) + * @param string $type optional the type of folder to create - either "campaign" or "autoresponder". Defaults to "campaign" + * @return bool true if the update worked, otherwise an exception is thrown + */ + function folderUpdate($fid, $name, $type='campaign') { + $params = array(); + $params["fid"] = $fid; + $params["name"] = $name; + $params["type"] = $type; + return $this->callServer("folderUpdate", $params); + } + + /** + * Delete a campaign or autoresponder folder. Note that this will simply make campaigns in the folder appear unfiled, they are not removed. + * + * @section Folder Related + * + * @param int $fid the folder id to update - retrieve from folders() + * @param string $type optional the type of folder to create - either "campaign" or "autoresponder". Defaults to "campaign" + * @return bool true if the delete worked, otherwise an exception is thrown + */ + function folderDel($fid, $type='campaign') { + $params = array(); + $params["fid"] = $fid; + $params["type"] = $type; + return $this->callServer("folderDel", $params); + } + + /** + * Retrieve the Ecommerce Orders for an account + * + * @section Ecommerce + * + * @param int $start optional for large data sets, the page number to start at - defaults to 1st page of data (page 0) + * @param int $limit optional for large data sets, the number of results to return - defaults to 100, upper limit set at 500 + * @param string $since optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT + * @return array the total matching orders and the specific orders for the requested page + * @returnf int total the total matching orders + * @returnf array data the actual data for each order being returned + string store_id the store id generated by the plugin used to uniquely identify a store + string store_name the store name collected by the plugin - often the domain name + string order_id the internal order id the store tracked this order by + string email the email address that received this campaign and is associated with this order + double order_total the order total + double tax_total the total tax for the order (if collected) + double ship_total the shipping total for the order (if collected) + string order_date the date the order was tracked - from the store if possible, otherwise the GMT time we recieved it + array lines containing detail of the order - product, category, quantity, item cost + */ + function ecommOrders($start=0, $limit=100, $since=NULL) { + $params = array(); + $params["start"] = $start; + $params["limit"] = $limit; + $params["since"] = $since; + return $this->callServer("ecommOrders", $params); + } + + /** + * Import Ecommerce Order Information to be used for Segmentation. This will generally be used by ecommerce package plugins + * that we provide or by 3rd part system developers. + * @section Ecommerce + * + * @param array $order an array of information pertaining to the order that has completed. Use the following keys: + string id the Order Id + string email_id optional (kind of) the Email Id of the subscriber we should attach this order to (see the "mc_eid" query string variable a campaign passes) - either this or email is required. If both are provided, email_id takes precedence + string email optional (kind of) the Email Address we should attach this order to - either this or email_id is required. If both are provided, email_id takes precedence + double total The Order Total (ie, the full amount the customer ends up paying) + string order_date optional the date of the order - if this is not provided, we will default the date to now + double shipping optional the total paid for Shipping Fees + double tax optional the total tax paid + string store_id a unique id for the store sending the order in (20 character max) + string store_name optional a "nice" name for the store - typically the base web address (ie, "store.mailchimp.com"). We will automatically update this if it changes (based on store_id) + string plugin_id the MailChimp assigned Plugin Id. Get yours by registering here + string campaign_id optional the Campaign Id to track this order with (see the "mc_cid" query string variable a campaign passes) + array items the individual line items for an order using these keys: +
    + int line_num optional the line number of the item on the order. We will generate these if they are not passed + int product_id the store's internal Id for the product. Lines that do no contain this will be skipped + string product_name the product name for the product_id associated with this item. We will auto update these as they change (based on product_id) + int category_id the store's internal Id for the (main) category associated with this product. Our testing has found this to be a "best guess" scenario + string category_name the category name for the category_id this product is in. Our testing has found this to be a "best guess" scenario. Our plugins walk the category heirarchy up and send "Root - SubCat1 - SubCat4", etc. + double qty the quantity of the item ordered + double cost the cost of a single item (ie, not the extended cost of the line) +
    + * @return bool true if the data is saved, otherwise an error is thrown. + */ + function ecommOrderAdd($order) { + $params = array(); + $params["order"] = $order; + return $this->callServer("ecommOrderAdd", $params); + } + + /** + * Delete Ecommerce Order Information used for segmentation. This will generally be used by ecommerce package plugins + * that we provide or by 3rd part system developers. + * @section Ecommerce + * + * @param string $store_id the store id the order belongs to + * @param string $order_id the order id (generated by the store) to delete + * @return bool true if an order is deleted, otherwise an error is thrown. + */ + function ecommOrderDel($store_id, $order_id) { + $params = array(); + $params["store_id"] = $store_id; + $params["order_id"] = $order_id; + return $this->callServer("ecommOrderDel", $params); + } + + /** + * Retrieve all List Ids a member is subscribed to. + * + * @section Helper + * + * @param string $email_address the email address to check OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns + * @return array An array of list_ids the member is subscribed to. + */ + function listsForEmail($email_address) { + $params = array(); + $params["email_address"] = $email_address; + return $this->callServer("listsForEmail", $params); + } + + /** + * Retrieve all Campaigns Ids a member was sent + * + * @section Helper + * + * @param string $email_address the email address to unsubscribe OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns + * @return array An array of campaign_ids the member received + */ + function campaignsForEmail($email_address) { + $params = array(); + $params["email_address"] = $email_address; + return $this->callServer("campaignsForEmail", $params); + } + + /** + * Return the current Chimp Chatter messages for an account. + * + * @section Helper + * + * @return array An array of chatter messages and properties + * @returnf string message The chatter message + * @returnf string type The type of the message - one of scheduled, sent, inspection, subscribes, unsubscribes, low_credits, absplit, best_opens, best_clicks, or abuse + * @returnf string list_id the list_id a message relates to, if applicable + * @returnf string campaign_id the list_id a message relates to, if applicable + * @returnf string update_time The date/time the message was last updated + */ + function chimpChatter() { + $params = array(); + return $this->callServer("chimpChatter", $params); + } + + /** + * Retrieve a list of all MailChimp API Keys for this User + * + * @section Security Related + * @example xml-rpc_apikeyAdd.php + * @example mcapi_apikeyAdd.php + * + * @param string $username Your MailChimp user name + * @param string $password Your MailChimp password + * @param boolean $expired optional - whether or not to include expired keys, defaults to false + * @return array an array of API keys including: + * @returnf string apikey The api key that can be used + * @returnf string created_at The date the key was created + * @returnf string expired_at The date the key was expired + */ + function apikeys($username, $password, $expired=false) { + $params = array(); + $params["username"] = $username; + $params["password"] = $password; + $params["expired"] = $expired; + return $this->callServer("apikeys", $params); + } + + /** + * Add an API Key to your account. We will generate a new key for you and return it. + * + * @section Security Related + * @example xml-rpc_apikeyAdd.php + * + * @param string $username Your MailChimp user name + * @param string $password Your MailChimp password + * @return string a new API Key that can be immediately used. + */ + function apikeyAdd($username, $password) { + $params = array(); + $params["username"] = $username; + $params["password"] = $password; + return $this->callServer("apikeyAdd", $params); + } + + /** + * Expire a Specific API Key. Note that if you expire all of your keys, just visit your API dashboard + * to create a new one. If you are trying to shut off access to your account for an old developer, change your + * MailChimp password, then expire all of the keys they had access to. Note that this takes effect immediately, so make + * sure you replace the keys in any working application before expiring them! Consider yourself warned... + * + * @section Security Related + * @example mcapi_apikeyExpire.php + * @example xml-rpc_apikeyExpire.php + * + * @param string $username Your MailChimp user name + * @param string $password Your MailChimp password + * @return boolean true if it worked, otherwise an error is thrown. + */ + function apikeyExpire($username, $password) { + $params = array(); + $params["username"] = $username; + $params["password"] = $password; + return $this->callServer("apikeyExpire", $params); + } + + /** + * "Ping" the MailChimp API - a simple method you can call that will return a constant value as long as everything is good. Note + * than unlike most all of our methods, we don't throw an Exception if we are having issues. You will simply receive a different + * string back that will explain our view on what is going on. + * + * @section Helper + * @example xml-rpc_ping.php + * + * @return string returns "Everything's Chimpy!" if everything is chimpy, otherwise returns an error message + */ + function ping() { + $params = array(); + return $this->callServer("ping", $params); + } + + /** + * Internal function - proxy method for certain XML-RPC calls | DO NOT CALL + * @param mixed Method to call, with any parameters to pass along + * @return mixed the result of the call + */ + function callMethod() { + $params = array(); + return $this->callServer("callMethod", $params); + } + + /** + * Actually connect to the server and call the requested methods, parsing the result + * You should never have to call this function manually + */ + function callServer($method, $params) { + $dc = "us1"; + if (strstr($this->api_key,"-")){ + list($key, $dc) = explode("-",$this->api_key,2); + if (!$dc) $dc = "us1"; + } + $host = $dc.".".$this->apiUrl["host"]; + $params["apikey"] = $this->api_key; + + $this->errorMessage = ""; + $this->errorCode = ""; + $sep_changed = false; + //sigh, apparently some distribs change this to & by default + if (ini_get("arg_separator.output")!="&"){ + $sep_changed = true; + $orig_sep = ini_get("arg_separator.output"); + ini_set("arg_separator.output", "&"); + } + $post_vars = http_build_query($params); + if ($sep_changed){ + ini_set("arg_separator.output", $orig_sep); + } + + $payload = "POST " . $this->apiUrl["path"] . "?" . $this->apiUrl["query"] . "&method=" . $method . " HTTP/1.0\r\n"; + $payload .= "Host: " . $host . "\r\n"; + $payload .= "User-Agent: MCAPI/" . $this->version ."\r\n"; + $payload .= "Content-type: application/x-www-form-urlencoded\r\n"; + $payload .= "Content-length: " . strlen($post_vars) . "\r\n"; + $payload .= "Connection: close \r\n\r\n"; + $payload .= $post_vars; + + ob_start(); + if ($this->secure){ + $sock = fsockopen("ssl://".$host, 443, $errno, $errstr, 30); + } else { + $sock = fsockopen($host, 80, $errno, $errstr, 30); + } + if(!$sock) { + $this->errorMessage = "Could not connect (ERR $errno: $errstr)"; + $this->errorCode = "-99"; + ob_end_clean(); + return false; + } + + $response = ""; + fwrite($sock, $payload); + stream_set_timeout($sock, $this->timeout); + $info = stream_get_meta_data($sock); + while ((!feof($sock)) && (!$info["timed_out"])) { + $response .= fread($sock, $this->chunkSize); + $info = stream_get_meta_data($sock); + } + if ($info["timed_out"]) { + $this->errorMessage = "Could not read response (timed out)"; + $this->errorCode = -98; + } + fclose($sock); + ob_end_clean(); + if ($info["timed_out"]) return false; + + list($throw, $response) = explode("\r\n\r\n", $response, 2); + + if(ini_get("magic_quotes_runtime")) $response = stripslashes($response); + + $serial = unserialize($response); + if($response && $serial === false) { + $response = array("error" => "Bad Response. Got This: " . $response, "code" => "-99"); + } else { + $response = $serial; + } + if(is_array($response) && isset($response["error"])) { + $this->errorMessage = $response["error"]; + $this->errorCode = $response["code"]; + return false; + } + + return $response; + } + +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/_inc/bpxs-core.php b/wp-content/plugins/bp-xtra-signup/_inc/bpxs-core.php new file mode 100644 index 0000000..009983a --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/_inc/bpxs-core.php @@ -0,0 +1,458 @@ +options->tos == true ) + $usermeta['accept_tos'] = $_POST['accept_tos']; + + if( $bpxs->options->newsletter == true ) + { + if( isset( $_POST['newsletter'] ) ) + $usermeta['newsletter'] = $_POST['newsletter']; + } + + return $usermeta; +} +add_filter( 'bp_signup_usermeta', 'bpxs_add_to_signup' ); + +/** +* Perform checks for custom registration data +* @since 1.0 +*/ +function bpxs_check_additional_signup() +{ + global $bp, $bpxs; + + if( $bpxs->options->tos == true ) + { + if( $_POST['accept_tos'] != 'agreed' ) + $bp->signup->errors['accept_tos'] = stripcslashes( $bpxs->options->tos_error_text ); + } + + if( $bpxs->options->date_of_birth == true && ! empty( $bpxs->options->dob_field ) ) + { + $dob = $_POST['field_'. $bpxs->options->dob_field .'_year'] .'-'. bpxs_get_month_number( $_POST['field_'. $bpxs->options->dob_field .'_month'] ) .'-'. $_POST['field_'. $bpxs->options->dob_field .'_day']; + + if( ! bpxs_check_dob( $dob ) ) + $bp->signup->errors['field_' . $bpxs->options->dob_field] = sprintf( __( 'You need to be at least %d years old to join this network.', 'bpxs' ), $bpxs->options->dob_age ); + } +} +add_action( 'bp_signup_validate', 'bpxs_check_additional_signup' ); + +/** +* Update usermeta with custom registration data +* @since 1.0 +*/ +function bpxs_user_activate_fields( $user_id, $user_login, $user_password, $user_email, $usermeta ) +{ + global $bpxs; + + if( $bpxs->options->tos == true ) + update_usermeta( $user_id, 'accept_tos', $usermeta['accept_tos'] ); + + if( $bpxs->options->newsletter == true ) + update_usermeta( $user_id, 'newsletter', $usermeta['newsletter'] ); + + return $user_id; +} +add_action( 'bp_core_signup_user', 'bpxs_user_activate_fields', 5, 5 ); + +/** +* Subscribes a user to our newsletter if checked +* @since 4.0 +*/ +function bpxs_subscribe_newsletter( $user_id, $user_login, $user_password, $user_email, $usermeta ) +{ + global $bpxs; + + if( $bpxs->options->newsletter == true ) + { + if( $usermeta['newsletter'] == 'agreed' ) + { + require_once( BPXS_ABSPATH . '_inc/MCAPI.class.php' ); + + $api = new MCAPI( $bpxs->options->mcapi_key ); + + $u = get_userdata( $user_id ); + + $merge_vars = array( 'FNAME' => $u->nickname, 'LNAME'=> '' ); + + $retval = $api->listSubscribe( $bpxs->options->mcapi_list_id, $u->user_email, $merge_vars ); + + if( $api->errorCode && ! empty( $bpxs->options->email_recipient ) ) + { + $body = stripslashes( $bpxs->options->email_message ); + $body = str_replace( '{ERROR_CODE}', $api->errorCode, $body ); + $body = str_replace( '{ERROR_MESSAGE}', $api->errorMessage, $body ); + $body = str_replace( '{USER_ID}', $user_id, $body ); + $body = str_replace( '{USER_NAME}', $auth->nickname, $body ); + $body = str_replace( '{USER_EMAIL}', $auth->user_email, $body ); + + wp_mail( $bpxs->options->email_recipient, $bpxs->options->email_subject, $body ); + } + } + else + update_usermeta( $user_id, 'newsletter', 'declined' ); + } +} +add_action( 'bp_core_signup_user', 'bpxs_subscribe_newsletter', 5, 5 ); + +/** + * Add newsletter and TOS to register page + * @since 1.0 + */ +function bpxs_add_to_registration() +{ + global $bpxs; + + ?> +
    +

    options->signup_title ) ?>

    + + options->tos == true ) { ?> + + + + + options->newsletter == true ) { ?> + + +
    + options->email_confirmation == true ) + { + $email = empty( $_POST['signup_email_first'] ) ? '' : $_POST['signup_email_first']; + + do_action( 'bp_signup_email_first_errors' ); ?> + + + + + options->email_confirmation == true ) + { + // unset any existing errors + unset( $bp->signup->errors['signup_email'] ); + + //check if email address is correct and set an error message for the first field if any + $account_details = bp_core_validate_user_signup( $_POST['signup_username'], $_POST['signup_email_first'] ); + + if( ! empty( $account_details['errors']->errors['user_email'] ) ) + $bp->signup->errors['signup_email_first'] = $account_details['errors']->errors['user_email'][0]; + + if( ! empty( $_POST['signup_email_first'] ) ) + { + if( empty( $_POST['signup_email'] ) ) + $bp->signup->errors['signup_email_second'] = __( 'Please make sure you enter your email twice', 'bpxs' ); + + elseif( $_POST['signup_email'] != $_POST['signup_email_first'] ) + $bp->signup->errors['signup_email_second'] = __( 'The emails you entered do not match.', 'bpxs' ); + } + } +} +add_action('bp_signup_validate', 'bpxs_check_email_confirm'); + +/** + * Check username availability + * Code mostly by Brajesh Singh + * http://buddydev.com/buddypress/creating-a-buddypress-wordpress-username-availability-checker-for-your-site/ + * @since 1.3 + */ +function bpxs_check_username() +{ + global $bpxs; + + if( $bpxs->options->u_availability == true ) + { + if( ! empty( $_POST['user_name'] ) ) + { + $user_name = sanitize_user( $_POST['user_name'] ); + + if( bpxs_username_exists( $user_name ) ) + { + $new_name = bpxs_next_username( $user_name ); + $msg = array( 'code' => 'taken', 'message' => sprintf( __( 'This usename is taken, please choose another one, e.g. %s', 'bpxs' ), $new_name ) ); + } + + if( empty( $msg ) ) + { + $check = bpxs_validate_username( $user_name ); + + if( empty( $check ) ) + $msg = array( 'code' => 'success', 'message' => __( 'This username is available.', 'bpxs' ) ); + else + $msg = array( 'code' => 'error', 'message' => $check ); + } + } + else + $msg = array( 'code' => 'error', 'message' => __( 'You have to chose a username.', 'bpxs' ) ); + + $msg = apply_filters( 'bpxs_custom_message_filter', $msg ); + + echo json_encode( $msg ); + } +} +add_action( 'wp_ajax_check_username', 'bpxs_check_username' ); + +/** + * Check if a username exists already + * @since 1.3.1 + */ +function bpxs_username_exists( $user_name ) +{ + include_once( ABSPATH. WPINC . '/registration.php' ); + + if( username_exists( $user_name ) ) + return true; + + elseif( defined( 'WP_ALLOW_MULTISITE' ) ) + { + global $wpdb; + + if( $user = $wpdb->get_row( $wpdb->prepare("SELECT * FROM {$wpdb->signups} WHERE user_login = %s", $user_name ) ) ) + return true; + } + + return false; +} + +/** + * Look for the next available username + * @since 1.3.1 + */ +function bpxs_next_username( $user_name ) +{ + $new_name = $user_name . '2'; + $check = bpxs_username_exists( $new_name ); + + if( $check ) + { + $suffix = 3; + do { + $alt_user_name = $user_name . $suffix; + $check = bpxs_username_exists( $user_name . $suffix ); + $suffix++; + } while ( $check ); + + $new_name = $alt_user_name; + } + + return apply_filters( 'bpxs_next_available_username', $new_name ); +} + +/** + * Validate a username + * Code by Brajesh Singh + * http://buddydev.com/buddypress/creating-a-buddypress-wordpress-username-availability-checker-for-your-site/ + * @since 1.3 + */ +function bpxs_validate_username( $user_name ) +{ + global $wpdb; + + $maybe = array(); + preg_match( "/[a-z0-9]+/", $user_name, $maybe ); + + $db_illegal_names = get_option( 'illegal_names' ); + $filtered_illegal_names = apply_filters( 'bp_core_illegal_usernames', array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator', BP_GROUPS_SLUG, BP_MEMBERS_SLUG, BP_FORUMS_SLUG, BP_BLOGS_SLUG, BP_REGISTER_SLUG, BP_ACTIVATION_SLUG ) ); + + $illegal_names = array_merge( (array)$db_illegal_names, (array)$filtered_illegal_names ); + + if( ! validate_username( $user_name ) || $user_name != $maybe[0] ) + $error = __( 'Only lowercase letters and numbers allowed.', 'bpxs' ); + + if( in_array( $user_name, (array)$illegal_names ) ) + $error = __( 'This username is reserved. Please chose another one.', 'bpxs' ); + + if( strlen( $user_name ) < 4 ) + $error = __( 'Username must be at least 4 characters.', 'bpxs' ) ; + + if( strpos( ' ' . $user_name, '_' ) != false ) + $error = __( 'Usernames must not contain the character "_"!', 'bpxs' ) ; + + $match = array(); + preg_match( '/[0-9]*/', $user_name, $match ); + + if( $match[0] == $user_name ) + $error = __( 'Usernames must contain letters too!', 'bpxs' ) ; + + $error = apply_filters( 'bpxs_custom_error', $error, $user_name ); + + return $error; +} + +/** + * Add js translation strings for password strength meter + * @since 1.3 + */ +function bpxs_add_js_l10n() +{ + global $bpxs; + + if( $bpxs->options->psw_strength == true ) + { + ?> + + options->email_check == true ) + { + ?> + + options->email_confirmation == true ) + { + ?> + + = $bpxs->options->dob_age ) + return true; + + return false; +} + +/** + * Transform month names into their numbers + * @since 1.4 + */ +function bpxs_get_month_number( $name ) +{ + $names = array( + 1 => __( 'January', 'bpxs' ), + 2 => __( 'February', 'bpxs' ), + 3 => __( 'March', 'bpxs' ), + 4 => __( 'April', 'bpxs' ), + 5 => __( 'May', 'bpxs' ), + 6 => __( 'June', 'bpxs' ), + 7 => __( 'July', 'bpxs' ), + 8 => __( 'August', 'bpxs' ), + 9 => __( 'September', 'bpxs' ), + 10 => __( 'October', 'bpxs' ), + 11 => __( 'November', 'bpxs' ), + 12 => __( 'December', 'bpxs' ) + ); + + return array_search( $name, $names ); +} + +/** + * Check for existing email + * @since 1.5 + */ +function bpxs_check_useremail() +{ + global $bpxs; + + if( $bpxs->options->email_check == true ) + { + include_once( ABSPATH. WPINC . '/registration.php' ); + + if( ! empty( $_POST['email'] ) ) + { + if( ! is_email( $_POST['email'] ) ) + $msg = array( 'code' => 'error', 'message' => __( 'Please enter a valid email address.', 'bpxs' ) ); + + if( email_exists( $_POST['email'] ) ) + $msg = array( 'code' => 'error', 'message' => __( 'Sorry, that email address is already in use!', 'bpxs' ) ); + + if( ! $msg ) + $msg = array( 'code' => 'success', 'message' => __( 'This email address is valid.', 'bpxs' ) ); + } + else + $msg = array( 'code' => 'error', 'message' => __( 'You have to enter an email address.', 'bpxs' ) ); + + $msg = apply_filters( 'bpxs_custom_email_message_filter', $msg ); + + echo json_encode( $msg ); + } +} +add_action( 'wp_ajax_check_email', 'bpxs_check_useremail' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/_inc/bpxs-js-css.php b/wp-content/plugins/bp-xtra-signup/_inc/bpxs-js-css.php new file mode 100644 index 0000000..b3d4d93 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/_inc/bpxs-js-css.php @@ -0,0 +1,39 @@ +options->u_availability == true || $bpxs->options->psw_strength == true || $bpxs->options->email_check == true ) + wp_enqueue_script( 'bpxs-js', BPXS_URLPATH .'js/js.php', array( 'jquery' ), '1.0', true ); + } +} +$bpxs_js_css = new BPXS_JS_CSS(); +?> \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/admin/bpxs-admin.php b/wp-content/plugins/bp-xtra-signup/admin/bpxs-admin.php new file mode 100644 index 0000000..1878b77 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/admin/bpxs-admin.php @@ -0,0 +1,119 @@ +options_page = new BPXS_Options(); + $bpxs->options_page->controller(); + } + + /** + * Load necessary scripts + * @since 1.0 + */ + function load_scripts() + { + // no need to go on if it's not a plugin page + if( ! isset( $_GET['page'] ) ) + return; + + if( $_GET['page'] == BPXS_FOLDER ) + { + wp_enqueue_script( 'jquery-ui-tabs' ); + } + } + + /** + * Load necessary styles + * @since 1.0 + */ + function load_styles() + { + // no need to go on if it's not a plugin page + if( ! isset( $_GET['page'] ) ) + return; + + if( $_GET['page'] == BPXS_FOLDER ) + { + wp_enqueue_style( 'bpxstabs', BPXS_URLPATH .'admin/css/jquery.ui.tabs.css', false, '1.0', 'screen' ); + wp_enqueue_style( 'bpxsadmin', BPXS_URLPATH .'admin/css/bpxs-admin.css', false, '1.0', 'screen' ); + } + } + + /** + * Add some helpful links + * @since 1.0 + */ + function show_help( $help, $screen_id ) + { + global $bpxs; + + if( $screen_id == 'buddypress_page_'. BPXS_FOLDER ) + { + $help = '
    ' . __( 'Get help for BP Xtra Signup', 'bpxs' ) . '
    '; + $help .= ''; + + return $help; + } + } + + /** + * Show a success message + * @since 1.0 + */ + function show_message( $message ) + { + echo '

    ' . $message . '

    ' . "\n"; + } + + /** + * Show an error message + * @since 1.0 + */ + function show_error( $error ) + { + echo '

    ' . $error . '

    ' . "\n"; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/admin/bpxs-install.php b/wp-content/plugins/bp-xtra-signup/admin/bpxs-install.php new file mode 100644 index 0000000..1c4f141 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/admin/bpxs-install.php @@ -0,0 +1,68 @@ +options = new stdClass; + $bpxs->options->tos = true; + $bpxs->options->email_confirmation = false; + $bpxs->options->newsletter = false; + $bpxs->options->psw_strength = true; + $bpxs->options->u_availability = true; + $bpxs->options->email_check = true; + $bpxs->options->date_of_birth = true; + $bpxs->options->dob_field = ''; + $bpxs->options->dob_age = 13; + $bpxs->options->mcapi_list_id = ''; + $bpxs->options->mcapi_key = ''; + $bpxs->options->signup_title = __( "Don't forget", 'bpxs' ); + $bpxs->options->newsletter_text = __( 'Check this box if you want to subscribe to our newsletter.', 'bpxs' ); + $bpxs->options->tos_text = __( 'Please make sure to read our Terms of Service and then check this box (required).', 'bpxs' ); + $bpxs->options->tos_error_text = __( 'You have to check our Terms Of Service to continue.', 'bpxs' ); + $bpxs->options->email_recipient = get_option( 'admin_email' ); + $bpxs->options->email_subject = __( 'Unsuccessful newsletter signup', 'bpxs' ); + $bpxs->options->email_message = __( 'Hello, + +there has been an error with a new subscriber to your newsletter! Check the error and send a message to the user if signup to the newsletter has been unsuccessful. + +Unable to load listSubscribe()! + +UserID: {USER_ID} +Name: {USER_NAME} +Email: {USER_EMAIL} + +Code: {ERROR_CODE} +Msg: {ERROR_MESSAGE}', 'bpxs' ); + + // write to the database + update_option( 'bpxs_options', $bpxs->options ); + } +} + +/** + * Delete all options and database tables + * @since 1.0 + */ +function bpxs_uninstall() +{ + delete_option( 'bpxs_options' ); +} +?> \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/admin/bpxs-settings.php b/wp-content/plugins/bp-xtra-signup/admin/bpxs-settings.php new file mode 100644 index 0000000..3c2a7d5 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/admin/bpxs-settings.php @@ -0,0 +1,590 @@ +filepath = admin_url() . 'admin.php?page=' . $_GET['page']; + $this->price_url = $bpxs->home_url . 'prices.php'; + + // only process if $_POST vars are available + if( ! empty( $_POST ) ) + $this->processor(); + } + + /** + * Process any $_POST variables + * @since 1.0 + */ + function processor() + { + global $bpxs; + + if ( isset( $_POST['update_bpxs'] ) ) + { + check_admin_referer( 'bpxs_settings' ); + + $error = false; + $message = ''; + + if( $_POST['newsletter'] == true ) + { + if( empty( $_POST['mcapi_list_id'] ) || empty( $_POST['mcapi_key'] ) ) + { + $message .= __( 'You need to enter a Mailchimp List ID and an API Key.', 'bpxs' ); + $error = true; + } + + if( ! empty( $_POST['email_recipient'] ) ) + { + if( ! is_email( $_POST['email_recipient'] ) ) + { + $message .= __( 'You need to enter a valid email address.', 'bpxs' ); + $error = true; + } + } + } + + if( $_POST['date_of_birth'] == true ) + { + if( empty( $_POST['dob_field'] ) ) + { + $message .= __( 'You need to specify a date of birth profile field.', 'bpxs' ); + $error = true; + } + + if( empty( $_POST['dob_age'] ) || $_POST['dob_age'] == '----' ) + { + $message .= __( 'You need to specify an age.', 'bpxs' ); + $error = true; + } + } + + // proceed if there is no error + if( ! $error ) + { + if( $_POST['page_options'] ) + $options = explode( ',', stripslashes( $_POST['page_options'] ) ); + + if( $options ) + { + foreach( $options as $option ) + { + $option = trim( $option ); + $value = trim( $_POST[$option] ); + + // make sure all boolean values get saved as such + if( in_array( $option, array( 'tos', 'newsletter', 'email_confirmation', 'u_availability', 'psw_strength', 'date_of_birth', 'email_check' ) ) ) + $bpxs->options->{$option} = (bool)$value; + else + $bpxs->options->{$option} = $value; + } + } + // Save options + update_option( 'bpxs_options', $bpxs->options ); + + BPXS_Admin_Loader::show_message( __( 'Update Successfully', 'bpxs' ) ); + } + // or show any errors + else + { + BPXS_Admin_Loader::show_error( $message ); + } + } + do_action( 'bpxs_update_options_page' ); + } + + /** + * Render the page content + * @since 1.0 + */ + function controller() + { + // get list of tabs + $tabs = $this->tabs_order(); + ?> + + + +
    + +
      + $tab_name ) + echo "\n\t\t
    • $tab_name
    • "; + ?> +
    + + $tab_name ) + { + echo "\n\t
    \n"; + + // Looks for the internal class function, otherwise enable a hook for plugins + if( method_exists( $this, "tab_$tab_key" ) ) + call_user_func( array( &$this , "tab_$tab_key" ) ); + else + do_action( 'bpxs_tab_content_' . $tab_key ); + + echo "\n\t
    "; + } + ?> +
    + get_results( $wpdb->prepare( "SELECT id, name FROM {$bp->profile->table_name_fields} WHERE parent_id = 0" ) ); + $field_ids = array_merge( array(''), (array)$field_ids ); + ?> + +

    + +
    + + + + + +
    +
    +

    +

    +
    + + + + + + + + + + + + + + + + + +
    + ()
    +
    + () +
    +
    + () +
    +
    + () +
    +
    +
    +
    +

    +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + ()
    +
    + () +
    +
    + () +
    +
    + () +
    +
    + () +
    +
    + () +
    +
    + () +
    +
    +
    +
    +

    +

    +
    + + + + + +
    + ()
    +
    +
    +
    +

    +

    +
    + + + + + +
    + ()
    +
    +
    +
    +

    +

    +
    + + + + + +
    + ()
    +
    +
    +
    +

    +

    +
    + + + + + +
    + ()
    +
    +
    +
    +

    +

    +
    + + + + + + + + + + + + + + + +
    + ()
    + ()
    + ()
    +
    +
    +
    +
    +
    + = $api_time_seconds ) + { + if( ! class_exists( 'WP_Http' ) ) + include_once( ABSPATH . WPINC. '/class-http.php' ); + + $request = new WP_Http; + $http = $request->request( $this->price_url ); + + if( is_array( $http ) ) + { + $result = unserialize( $http['body'] ); + + $shabu_array = array( 'time' => date( 'Y-m-d H:i:s' ), 'info' => $result ); + + update_option( 'shabu_software', $shabu_array ); + } + else + $http_error = true; + } + else + $result = $shabu['info']; + + if( ! $http_error ) + { + ?> +

    + +

    register on ShabuShabu.eu.', 'jobs' ), $jb->home_url . 'membership-options/', $jb->home_url ); ?>

    +

    + + + + + + + + + $price ) + { + $alt = $this->alternate( 'odd', 'even' ); + ?> + + + + + +
    EUR
    + +

    + +

    + + + + + + + + + + + alternate( 'odd', 'even' ); + ?> + + + + + + + +
    + + + + + +
    + + + + +

    + + + + + + + + + + + alternate( 'odd', 'even' ); + ?> + + + + + + + +
    + + + + + +
    + + '. __( 'Help', 'jobs' ) .''; + echo '

    '. __( 'Information could not be retrieved.', 'jobs' ) .'

    '; + } + } + + /** + * Content of the Donate tab + * @since 1.0 + */ + function tab_donate() + { + ?> +

    + +

    +

    +

    +

    + + + + + + + + + +
    +

    +


    ShabuShabu Webdesign Team

    + \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/admin/css/bpxs-admin.css b/wp-content/plugins/bp-xtra-signup/admin/css/bpxs-admin.css new file mode 100644 index 0000000..73f4636 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/admin/css/bpxs-admin.css @@ -0,0 +1,6 @@ +.required{color:red;} +#poststuff h3{cursor:pointer !important;} +.long-text{width:99% !important;} +#bpxs-last{margin-bottom:0 !important;} +#slider h2{padding:0 15px 7px 45px !important;background:transparent url(../images/shabu-logo.png) no-repeat left top;} +#show_all_label{margin:10px 0 20px;display:block;} \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/admin/css/jquery.ui.tabs.css b/wp-content/plugins/bp-xtra-signup/admin/css/jquery.ui.tabs.css new file mode 100644 index 0000000..0e8d492 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/admin/css/jquery.ui.tabs.css @@ -0,0 +1,160 @@ +/* Caution! Ensure accessibility in print and other media types... */ +@media projection, screen { /* Use class for showing/hiding tab content, so that visibility can be better controlled in different media types... */ + .ui-tabs-hide { + display: none; + } +} + +/* Hide useless elements in print layouts... */ +@media print { + .ui-tabs-nav { + display: none; + } +} + +/* Skin */ +#slider { + border:1px solid #DFDFDF; + margin:30px 15px 0pt 15px; + clear:both; + -moz-border-radius: 6px; + -khtml-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; +} +#tabs{ + display: block; + background:transparent url(../images/admin-header-footer.png) repeat-x bottom; + font-size:14px; + overflow:hidden; +} + +.ui-tabs-nav { + list-style: none; + margin: 0; + padding: 5px 0 0 5px; + +} +.ui-tabs-nav:after { /* clearing without presentational markup, IE gets extra treatment */ + display: block; + clear: both; + content: " "; +} +.ui-tabs-nav li { + float: left; + padding: 6px 10px; + margin: 2px 2px 0px 1px !important; + text-decoration: none; + list-style: none; + position:relative; + top:1px; +} +.ui-tabs-nav a, .ui-tabs-nav a span { + display: block; + padding: 0 1px; +} + +.ui-tabs-nav a { + margin: 1px 0 0; /* position: relative makes opacity fail for disabled tab in IE */ + padding-left: 0; + color: #2583AD; + line-height: 1.2; + text-align: center; + text-decoration: none; + white-space: nowrap; /* required in IE 6 */ + outline: 0; /* prevent dotted border in Firefox */ +} +.ui-tabs-nav .ui-tabs-selected{ + background: #fff; + border: 1px solid #DFDFDF; + color: #222; + -moz-border-radius-topright: 6px; + -khtml-border-top-right-radius: 6px; + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -moz-border-radius-topleft: 6px; + -khtml-border-top-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; +} + +.ui-tabs-selected a, +.ui-tabs-selected a:hover { + color:#222 !important; +} + +.ui-tabs-nav .ui-tabs-selected a, +.ui-tabs-nav .ui-tabs-selected a:hover { + position: relative; + top: 1px; + z-index: 2; + margin-top: 0; +} + +.ui-tabs-nav li a:hover { + color:#D54E21; +} + +.ui-tabs-nav a span { + width: 64px; /* IE 6 treats width as min-width */ + min-width: 64px; + height: 18px; /* IE 6 treats height as min-height */ + min-height: 18px; + padding-top: 6px; + padding-right: 0; +} +*>.ui-tabs-nav a span { /* hide from IE 6 */ + width: auto; + height: auto; +} +.ui-tabs-nav .ui-tabs-selected a span { + padding-bottom: 1px; +} +.ui-tabs-nav .ui-tabs-selected a, .ui-tabs-nav a:hover, .ui-tabs-nav a:focus, .ui-tabs-nav a:active { + background-position: 100% -150px; +} +.ui-tabs-nav a, .ui-tabs-nav .ui-tabs-disabled a:hover, .ui-tabs-nav .ui-tabs-disabled a:focus, .ui-tabs-nav .ui-tabs-disabled a:active { + background-position: 100% -100px; +} +.ui-tabs-nav .ui-tabs-selected a span, .ui-tabs-nav a:hover span, .ui-tabs-nav a:focus span, .ui-tabs-nav a:active span { + background-position: 0 -50px; +} +.ui-tabs-nav a span, .ui-tabs-nav .ui-tabs-disabled a:hover span, .ui-tabs-nav .ui-tabs-disabled a:focus span, .ui-tabs-nav .ui-tabs-disabled a:active span { + background-position: 0 0; +} +.ui-tabs-nav .ui-tabs-selected a:link, .ui-tabs-nav .ui-tabs-selected a:visited, .ui-tabs-nav .ui-tabs-disabled a:link, .ui-tabs-nav .ui-tabs-disabled a:visited { /* @ Opera, use pseudo classes otherwise it confuses cursor... */ + cursor: text; +} +.ui-tabs-nav a:hover, .ui-tabs-nav a:focus, .ui-tabs-nav a:active, +.ui-tabs-nav .ui-tabs-unselect a:hover, .ui-tabs-nav .ui-tabs-unselect a:focus, .ui-tabs-nav .ui-tabs-unselect a:active { /* @ Opera, we need to be explicit again here now... */ + cursor: pointer; +} +.ui-tabs-disabled { + opacity: .4; + filter: alpha(opacity=40); +} +.ui-tabs-panel { + border-top: 1px solid #97a5b0 !important; + padding: 1em 8px; + background: #fff; /* declare background color for container to avoid distorted fonts in IE while fading */ + + /* overwrite wp-admin */ + border:none !important; + height:100% !important; + margin:0pt 0pt 0pt 0px !important; + overflow:visible !important; +} + +.ui-tabs-panel a { + display:inline; +} + + +/* Additional IE specific bug fixes... */ +* html .ui-tabs-nav { /* auto clear, @ IE 6 & IE 7 Quirks Mode */ + display: inline-block; +} +*:first-child+html .ui-tabs-nav { /* @ IE 7 Standards Mode - do not group selectors, otherwise IE 6 will ignore complete rule (because of the unknown + combinator)... */ + display: inline-block; +} + diff --git a/wp-content/plugins/bp-xtra-signup/admin/images/admin-header-footer.png b/wp-content/plugins/bp-xtra-signup/admin/images/admin-header-footer.png new file mode 100644 index 0000000..a4bed73 Binary files /dev/null and b/wp-content/plugins/bp-xtra-signup/admin/images/admin-header-footer.png differ diff --git a/wp-content/plugins/bp-xtra-signup/admin/images/shabu-logo.png b/wp-content/plugins/bp-xtra-signup/admin/images/shabu-logo.png new file mode 100644 index 0000000..c112e7e Binary files /dev/null and b/wp-content/plugins/bp-xtra-signup/admin/images/shabu-logo.png differ diff --git a/wp-content/plugins/bp-xtra-signup/bp-xtra-signup.php b/wp-content/plugins/bp-xtra-signup/bp-xtra-signup.php new file mode 100644 index 0000000..612e7de --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/bp-xtra-signup.php @@ -0,0 +1,250 @@ +__construct(); + } + + /** + * PHP5 constructor + * @since 1.0 + */ + function __construct() + { + $this->constants(); + $this->translate(); + + // Stop the plugin if we missed the requirements + if( ! $this->check_requirements() ) + return; + + $this->plugin_name = plugin_basename( __FILE__ ); + $this->globals(); + $this->dependencies(); + + // activate and uninstall hooks + register_activation_hook( $this->plugin_name, array( &$this, 'activate' ) ); + register_uninstall_hook( $this->plugin_name, array( &$this, 'uninstall' ) ); + + // load BP related files only if BP is present + if( defined( 'BP_VERSION' ) ) + $this->start(); + else + add_action( 'bp_init', array( &$this, 'start' ) ); + + add_filter( 'plugin_row_meta', array( &$this, 'add_links' ), 10, 2 ); + } + + /** + * Load all BP related files + * @since 1.0 + */ + function start() + { + // Stop the plugin if we don't have the correct BP version or the options haven't been set up yet + if( ! $this->check_plugin() ) + return; + + require_once( dirname( __FILE__ ) . '/_inc/bpxs-core.php'); + } + + /** + * Check for required wp version + * @since 1.0 + */ + function check_requirements() + { + global $wp_version; + + if( version_compare( $wp_version, $this->min_wp, '>=' ) == false ) + { + add_action( 'admin_notices', create_function( '', 'global $bpxs; printf(\'

    \' . __(\'BP Xtra Signup works only under WordPress %s or higher. Upgrade now!\', "bpxs" ) . \'

    \', $bpxs->min_wp, admin_url() );' ) ); + $error = true; + } + + if( version_compare( PHP_VERSION, $this->min_php, '>=' ) == false ) + { + add_action( 'admin_notices', create_function( '', 'global $bpxs; printf(\'

    \' . __(\'BP Xtra Signup works only under PHP %s or higher. Please ask your hosting company for support!\', "bpxs" ) . \'

    \', $bpxs->min_php );' ) ); + $error = true; + } + + return ( ! $error ) ? true : false; + } + + /** + * Check for correct setup of options + * @since 1.0 + */ + function check_plugin() + { + if( version_compare( BP_VERSION, $this->min_bp, '>=' ) == false ) + { + add_action( 'admin_notices', create_function( '', 'global $bpxs; printf(\'

    \' . __(\'BP Xtra Signup works only under BuddyPress %s or higher. Upgrade now!\', "bpxs" ) . \'

    \', $bpxs->min_bp, admin_url() );' ) ); + $error = true; + } + + return ( ! $error ) ? true : false; + } + + /** + * Load the languages + * @since 1.0 + */ + function translate() + { + if( file_exists( BPXS_ABSPATH . 'languages/bpxs-' . get_locale() . '.mo' ) ) + load_textdomain( 'bpxs', BPXS_ABSPATH . 'languages/bpxs-' . get_locale() . '.mo' ); + } + + /** + * Declare our options + * @since 1.0 + */ + function globals() + { + if( $options = get_option( 'bpxs_options' ) ) + { + foreach( $options as $key => $var ) + $this->options->{$key} = $var; + } + } + + /** + * Include all dependent files + * @since 1.0 + */ + function dependencies() + { + if( is_admin() ) + { + require_once( dirname( __FILE__ ) . '/admin/bpxs-admin.php'); + $this->bpxs_admin = new BPXS_Admin_Loader(); + } + } + + /** + * Declare all constants + * @since 1.0 + */ + function constants() + { + define( 'BPXS_VERSION', $this->version ); + define( 'BPXS_FOLDER', plugin_basename( dirname( __FILE__ ) ) ); + define( 'BPXS_ABSPATH', trailingslashit( str_replace("\\","/", WP_PLUGIN_DIR . '/' . BPXS_FOLDER ) ) ); + define( 'BPXS_URLPATH', trailingslashit( WP_PLUGIN_URL . '/' . BPXS_FOLDER ) ); + } + + /** + * Activate the plugin + * @since 1.0 + */ + function activate() + { + include_once( dirname( __FILE__ ) .'/admin/bpxs-install.php' ); + bpxs_install(); + } + + /** + * Delete all options + * @since 1.0 + */ + function uninstall() + { + include_once( dirname( __FILE__ ) .'/admin/bpxs-install.php' ); + bpxs_uninstall(); + } + + /** + * Add some links to plugin setup page + * @since 1.0 + */ + function add_links( $links, $file ) + { + if( $file == $this->plugin_name ) + { + $links[] = '' . __( 'Support Forums', 'bpxs' ) . ''; + $links[] = '' . __( 'Donate', 'bpxs' ) . ''; + } + + return $links; + } +} +// get the show on the road +$bpxs = new BPXS_Loader(); +global $bpxs; +?> \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/bpxs-config.php b/wp-content/plugins/bp-xtra-signup/bpxs-config.php new file mode 100644 index 0000000..44ffe51 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/bpxs-config.php @@ -0,0 +1,33 @@ + ");jQuery("#username_checker").append("");jQuery("#username_checker").append(" ");jQuery("input#signup_username").bind("blur",function(){jQuery("#username_checker #name-info").css({display:"none"});jQuery("#username_checker span.loading").css({display:"block"});var b=jQuery("input#signup_username").val();jQuery.post(ajaxurl,{action:"check_username",cookie:encodeURIComponent(document.cookie),user_name:b},function(c){var d=jQuery.parseJSON(c);if(d.code=="success"){a(d.message,0)}else{a(d.message,1)}})});function a(c,b){jQuery("#username_checker #name-info").removeClass().css({display:"block"});jQuery("#username_checker span.loading").css({display:"none"});jQuery("#username_checker #name-info").empty().html(c);if(b){jQuery("#username_checker #name-info").addClass("error")}else{jQuery("#username_checker #name-info").addClass("available")}}}); \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/js/dev/availability.js b/wp-content/plugins/bp-xtra-signup/js/dev/availability.js new file mode 100644 index 0000000..b52b5b8 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/js/dev/availability.js @@ -0,0 +1,37 @@ +jQuery(document).ready(function(){ + jQuery("input#signup_username").wrap("
    "); + jQuery("#username_checker").append("") + jQuery("#username_checker").append(" "); + + jQuery("input#signup_username").bind("blur",function(){ + jQuery("#username_checker #name-info").css({display:'none'}); + jQuery("#username_checker span.loading").css({display:'block'}); + + var user_name = jQuery("input#signup_username").val(); + + jQuery.post( ajaxurl, { + action: 'check_username', + 'cookie': encodeURIComponent(document.cookie), + 'user_name':user_name + }, + function(response){ + var resp = jQuery.parseJSON(response); + + if(resp.code == 'success') + show_message(resp.message,0); + else + show_message(resp.message,1); + }); + }); + + function show_message(msg,is_error) { + jQuery("#username_checker #name-info").removeClass().css({display:'block'}); + jQuery("#username_checker span.loading").css({display:'none'}); + jQuery("#username_checker #name-info").empty().html(msg); + + if(is_error) + jQuery("#username_checker #name-info").addClass("error"); + else + jQuery("#username_checker #name-info").addClass("available"); + } +}); \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/js/dev/email-check.js b/wp-content/plugins/bp-xtra-signup/js/dev/email-check.js new file mode 100644 index 0000000..4a514dc --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/js/dev/email-check.js @@ -0,0 +1,37 @@ +jQuery(document).ready(function(){ + jQuery(signup_mail_field).wrap("
    "); + jQuery("#email_checker").append("") + jQuery("#email_checker").append(" "); + + jQuery(signup_mail_field).bind("blur",function(){ + jQuery("#email_checker #email-info").css({display:'none'}); + jQuery("#email_checker span.loading").css({display:'block'}); + + var email = jQuery(signup_mail_field).val(); + + jQuery.post( ajaxurl, { + action: 'check_email', + 'cookie': encodeURIComponent(document.cookie), + 'email': email + }, + function(response){ + var resp = jQuery.parseJSON(response); + + if(resp.code == 'success') + show_email_message(resp.message,0); + else + show_email_message(resp.message,1); + }); + }); + + function show_email_message(msg,is_error) { + jQuery("#email_checker #email-info").removeClass().css({display:'block'}); + jQuery("#email_checker span.loading").css({display:'none'}); + jQuery("#email_checker #email-info").empty().html(msg); + + if(is_error) + jQuery("#email_checker #email-info").addClass("error"); + else + jQuery("#email_checker #email-info").addClass("available"); + } +}); \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/js/dev/email-compare.js b/wp-content/plugins/bp-xtra-signup/js/dev/email-compare.js new file mode 100644 index 0000000..f710798 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/js/dev/email-compare.js @@ -0,0 +1,9 @@ +jQuery(document).ready(function(){ + jQuery("input#signup_email").bind("blur",function(){ + var first_value = jQuery("input#signup_email_first").val(); + var second_value = jQuery("input#signup_email").val(); + + if( first_value != second_value ) + jQuery('input#signup_email').after( ''+ compare_error +'' ); + }); +}); \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/js/dev/strengthmeter.js b/wp-content/plugins/bp-xtra-signup/js/dev/strengthmeter.js new file mode 100644 index 0000000..169efd7 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/js/dev/strengthmeter.js @@ -0,0 +1,72 @@ +jQuery(document).ready(function(){ + // add the password strength meter + jQuery("#signup_password_confirm").after('
    ' + pwsL10n['title'] + '

    ' + pwsL10n['desc'] + '

    '); + // do the deed + jQuery('#signup_password').val('').keyup( check_pass_strength ); + jQuery('#signup_password_confirm').val('').keyup( check_pass_strength ); + + function check_pass_strength() { + var pass1 = jQuery('#signup_password').val(), user = jQuery('#signup_username').val(), pass2 = jQuery('#signup_password_confirm').val(), strength; + + jQuery('#pass-strength-result').removeClass('short bad good strong'); + if ( ! pass1 ) { + jQuery('#pass-strength-result').html( pwsL10n.empty ); + return; + } + + strength = passwordStrength(pass1, user, pass2); + + switch ( strength ) { + case 2: + jQuery('#pass-strength-result').addClass('bad').html( pwsL10n['bad'] ); + break; + case 3: + jQuery('#pass-strength-result').addClass('good').html( pwsL10n['good'] ); + break; + case 4: + jQuery('#pass-strength-result').addClass('strong').html( pwsL10n['strong'] ); + break; + case 5: + jQuery('#pass-strength-result').addClass('short').html( pwsL10n['mismatch'] ); + break; + default: + jQuery('#pass-strength-result').addClass('short').html( pwsL10n['short'] ); + } + } + + function passwordStrength(password1, username, password2) { + var shortPass = 1, badPass = 2, goodPass = 3, strongPass = 4, mismatch = 5, symbolSize = 0, natLog, score; + + // password 1 != password 2 + if ( (password1 != password2) && password2.length > 0) + return mismatch + + //password < 4 + if ( password1.length < 4 ) + return shortPass + + //password1 == username + if ( password1.toLowerCase() == username.toLowerCase() ) + return badPass; + + if ( password1.match(/[0-9]/) ) + symbolSize +=10; + if ( password1.match(/[a-z]/) ) + symbolSize +=26; + if ( password1.match(/[A-Z]/) ) + symbolSize +=26; + if ( password1.match(/[^a-zA-Z0-9]/) ) + symbolSize +=31; + + natLog = Math.log( Math.pow(symbolSize, password1.length) ); + score = natLog / Math.LN2; + + if (score < 40 ) + return badPass + + if (score < 56 ) + return goodPass + + return strongPass; + } +}); \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/js/email-check.js b/wp-content/plugins/bp-xtra-signup/js/email-check.js new file mode 100644 index 0000000..65e5af7 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/js/email-check.js @@ -0,0 +1 @@ +jQuery(document).ready(function(){jQuery(signup_mail_field).wrap("
    ");jQuery("#email_checker").append("");jQuery("#email_checker").append(" ");jQuery(signup_mail_field).bind("blur",function(){jQuery("#email_checker #email-info").css({display:"none"});jQuery("#email_checker span.loading").css({display:"block"});var b=jQuery(signup_mail_field).val();jQuery.post(ajaxurl,{action:"check_email",cookie:encodeURIComponent(document.cookie),email:b},function(c){var d=jQuery.parseJSON(c);if(d.code=="success"){a(d.message,0)}else{a(d.message,1)}})});function a(c,b){jQuery("#email_checker #email-info").removeClass().css({display:"block"});jQuery("#email_checker span.loading").css({display:"none"});jQuery("#email_checker #email-info").empty().html(c);if(b){jQuery("#email_checker #email-info").addClass("error")}else{jQuery("#email_checker #email-info").addClass("available")}}}); \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/js/email-compare.js b/wp-content/plugins/bp-xtra-signup/js/email-compare.js new file mode 100644 index 0000000..09bca2c --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/js/email-compare.js @@ -0,0 +1 @@ +jQuery(document).ready(function(){jQuery("input#signup_email").bind("blur",function(){jQuery("#compare-info").remove();var b=jQuery("input#signup_email_first").val();var a=jQuery("input#signup_email").val();if(b!=a){jQuery("input#signup_email").after(''+compare_error+"")}})}); \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/js/js.php b/wp-content/plugins/bp-xtra-signup/js/js.php new file mode 100644 index 0000000..68ea8fc --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/js/js.php @@ -0,0 +1,39 @@ +options->u_availability == true ) + $load[] = 'availability.js'; + +if( $bpxs->options->psw_strength == true ) + $load[] = 'strengthmeter.js'; + +if( $bpxs->options->email_check == true ) + $load[] = 'email-check.js'; + +if( $bpxs->options->email_confirmation == true ) + $load[] = 'email-compare.js'; + +ob_start( "ob_gzhandler" ); + +header( 'Content-type: text/javascript' ); +header( "Cache-Control: public" ); +header( 'Expires: '. gmdate( 'D, d M Y H:i:s', time() + 86400 ) . 'GMT' ); + +foreach( (array)$load as $file ) +{ + include( dirname( __FILE__ ) .'/'. $file ); + echo "\t"; +} +?> \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/js/strengthmeter.js b/wp-content/plugins/bp-xtra-signup/js/strengthmeter.js new file mode 100644 index 0000000..0f85ab2 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/js/strengthmeter.js @@ -0,0 +1 @@ +jQuery(document).ready(function(){jQuery("#signup_password_confirm").after('
    '+pwsL10n.title+"

    "+pwsL10n.desc+"

    ");jQuery("#signup_password").val("").keyup(b);jQuery("#signup_password_confirm").val("").keyup(b);function b(){var e=jQuery("#signup_password").val(),d=jQuery("#signup_username").val(),c=jQuery("#signup_password_confirm").val(),f;jQuery("#pass-strength-result").removeClass("short bad good strong");if(!e){jQuery("#pass-strength-result").html(pwsL10n.empty);return}f=a(e,d,c);switch(f){case 2:jQuery("#pass-strength-result").addClass("bad").html(pwsL10n.bad);break;case 3:jQuery("#pass-strength-result").addClass("good").html(pwsL10n.good);break;case 4:jQuery("#pass-strength-result").addClass("strong").html(pwsL10n.strong);break;case 5:jQuery("#pass-strength-result").addClass("short").html(pwsL10n.mismatch);break;default:jQuery("#pass-strength-result").addClass("short").html(pwsL10n["short"])}}function a(h,k,f){var m=1,j=2,d=3,c=4,e=5,i=0,l,g;if((h!=f)&&f.length>0){return e}if(h.length<4){return m}if(h.toLowerCase()==k.toLowerCase()){return j}if(h.match(/[0-9]/)){i+=10}if(h.match(/[a-z]/)){i+=26}if(h.match(/[A-Z]/)){i+=26}if(h.match(/[^a-zA-Z0-9]/)){i+=31}l=Math.log(Math.pow(i,h.length));g=l/Math.LN2;if(g<40){return j}if(g<56){return d}return c}}); \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/languages/bpxs.po b/wp-content/plugins/bp-xtra-signup/languages/bpxs.po new file mode 100644 index 0000000..277ec8b --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/languages/bpxs.po @@ -0,0 +1,531 @@ +msgid "" +msgstr "" +"Project-Id-Version: NextGEN ImageFlow\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-09-11 20:09+0100\n" +"PO-Revision-Date: 2010-09-11 20:09+0100\n" +"Last-Translator: Boris Glumpler \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-KeywordsList: _e;__\n" +"X-Poedit-SearchPath-0: .\n" + +#: bp-xtra-signup.php:239 +#: admin/bpxs-admin.php:93 +msgid "Support Forums" +msgstr "" + +#: bp-xtra-signup.php:240 +#: admin/bpxs-admin.php:94 +#: admin/bpxs-settings.php:168 +#: admin/bpxs-settings.php:569 +msgid "Donate" +msgstr "" + +#: admin/bpxs-admin.php:32 +msgid "BP Xtra Signup" +msgstr "" + +#: admin/bpxs-admin.php:91 +msgid "Get help for BP Xtra Signup" +msgstr "" + +#: admin/bpxs-install.php:32 +msgid "Don't forget" +msgstr "" + +#: admin/bpxs-install.php:33 +msgid "Uncheck this box if you do not want to subscribe to our newsletter." +msgstr "" + +#: admin/bpxs-install.php:34 +msgid "Please make sure to read our {url}Terms of Service{/url} and then check this box (required)." +msgstr "" + +#: admin/bpxs-install.php:36 +msgid "You have to check our Terms Of Service to continue." +msgstr "" + +#: admin/bpxs-install.php:38 +msgid "Unsuccessful newsletter signup" +msgstr "" + +#: admin/bpxs-install.php:39 +msgid "" +"Hello,\n" +"\n" +"there has been an error with a new subscriber to your newsletter! Check the error and send a message to the user if signup to the newsletter has been unsuccessful.\n" +"\n" +"Unable to load listSubscribe()!\n" +"\n" +"UserID: {USER_ID}\n" +"Name: {USER_NAME}\n" +"Email: {USER_EMAIL}\n" +"\n" +"Code: {ERROR_CODE}\n" +"Msg: {ERROR_MESSAGE}" +msgstr "" + +#: admin/bpxs-settings.php:52 +msgid "You need to enter a Mailchimp List ID and an API Key." +msgstr "" + +#: admin/bpxs-settings.php:60 +msgid "You need to enter a valid email address." +msgstr "" + +#: admin/bpxs-settings.php:70 +msgid "You need to specify a date of birth profile field." +msgstr "" + +#: admin/bpxs-settings.php:76 +msgid "You need to specify an age." +msgstr "" + +#: admin/bpxs-settings.php:104 +msgid "Update Successfully" +msgstr "" + +#: admin/bpxs-settings.php:166 +#: admin/bpxs-settings.php:201 +msgid "Settings" +msgstr "" + +#: admin/bpxs-settings.php:167 +#: admin/bpxs-settings.php:467 +#: admin/bpxs-settings.php:557 +msgid "Help" +msgstr "" + +#: admin/bpxs-settings.php:205 +msgid "Click to open all option boxes." +msgstr "" + +#: admin/bpxs-settings.php:211 +#: admin/bpxs-settings.php:256 +#: admin/bpxs-settings.php:315 +#: admin/bpxs-settings.php:332 +#: admin/bpxs-settings.php:349 +#: admin/bpxs-settings.php:366 +#: admin/bpxs-settings.php:383 +msgid "Click to toggle" +msgstr "" + +#: admin/bpxs-settings.php:212 +msgid "Terms of Service" +msgstr "" + +#: admin/bpxs-settings.php:216 +msgid "Activate TOS" +msgstr "" + +#: admin/bpxs-settings.php:219 +#: admin/bpxs-settings.php:264 +#: admin/bpxs-settings.php:323 +#: admin/bpxs-settings.php:340 +#: admin/bpxs-settings.php:357 +#: admin/bpxs-settings.php:374 +#: admin/bpxs-settings.php:391 +msgid "Yes" +msgstr "" + +#: admin/bpxs-settings.php:220 +#: admin/bpxs-settings.php:265 +#: admin/bpxs-settings.php:324 +#: admin/bpxs-settings.php:341 +#: admin/bpxs-settings.php:358 +#: admin/bpxs-settings.php:375 +#: admin/bpxs-settings.php:392 +msgid "No" +msgstr "" + +#: admin/bpxs-settings.php:222 +msgid "Show the TOS checkbox on the registration screen?" +msgstr "" + +#: admin/bpxs-settings.php:225 +msgid "Signup Title" +msgstr "" + +#: admin/bpxs-settings.php:228 +msgid "The header title of the extra signup options." +msgstr "" + +#: admin/bpxs-settings.php:232 +msgid "Checkbox Text" +msgstr "" + +#: admin/bpxs-settings.php:235 +msgid "Will be displayed next to the checkbox a new user needs to check. These placeholders are allowed: {url},{/url}" +msgstr "" + +#: admin/bpxs-settings.php:239 +msgid "TOS Link" +msgstr "" + +#: admin/bpxs-settings.php:242 +msgid "The link to your Terms of Service page." +msgstr "" + +#: admin/bpxs-settings.php:246 +msgid "Error Text" +msgstr "" + +#: admin/bpxs-settings.php:249 +msgid "The text that appears when a user does not check the TOS checkbox." +msgstr "" + +#: admin/bpxs-settings.php:257 +msgid "Mailchimp Integration" +msgstr "" + +#: admin/bpxs-settings.php:261 +msgid "Activate Newsletter" +msgstr "" + +#: admin/bpxs-settings.php:267 +msgid "Only activate the newsletter if you have a Mailchimp account." +msgstr "" + +#: admin/bpxs-settings.php:270 +msgid "Newsletter Text" +msgstr "" + +#: admin/bpxs-settings.php:273 +msgid "The text next to the checkbox on the registration page." +msgstr "" + +#: admin/bpxs-settings.php:277 +msgid "API Key" +msgstr "" + +#: admin/bpxs-settings.php:280 +msgid "Your Mailchimp API key." +msgstr "" + +#: admin/bpxs-settings.php:284 +msgid "List ID" +msgstr "" + +#: admin/bpxs-settings.php:287 +msgid "The list ID you want new users to subscribe to." +msgstr "" + +#: admin/bpxs-settings.php:291 +msgid "Email Recipient" +msgstr "" + +#: admin/bpxs-settings.php:294 +msgid "Enter an email address you want newsletter signup errors sent to." +msgstr "" + +#: admin/bpxs-settings.php:298 +msgid "Email Subject" +msgstr "" + +#: admin/bpxs-settings.php:301 +msgid "The subject of the error message." +msgstr "" + +#: admin/bpxs-settings.php:305 +msgid "Email Message" +msgstr "" + +#: admin/bpxs-settings.php:308 +msgid "The body of the error message." +msgstr "" + +#: admin/bpxs-settings.php:316 +msgid "Email Confirmation" +msgstr "" + +#: admin/bpxs-settings.php:320 +msgid "Activate Email Confirmation" +msgstr "" + +#: admin/bpxs-settings.php:326 +msgid "Select yes if you want your users to confirm their email address." +msgstr "" + +#: admin/bpxs-settings.php:333 +msgid "Ajax Username Availability" +msgstr "" + +#: admin/bpxs-settings.php:337 +msgid "Activate Username Check" +msgstr "" + +#: admin/bpxs-settings.php:343 +msgid "Select yes if you want to activate the ajax username availability check." +msgstr "" + +#: admin/bpxs-settings.php:350 +msgid "Ajax Email Check" +msgstr "" + +#: admin/bpxs-settings.php:354 +msgid "Activate Email Check" +msgstr "" + +#: admin/bpxs-settings.php:360 +msgid "Select yes if you want to activate the ajax email check." +msgstr "" + +#: admin/bpxs-settings.php:367 +msgid "Password Strength Meter" +msgstr "" + +#: admin/bpxs-settings.php:371 +msgid "Activate Password Strength Meter" +msgstr "" + +#: admin/bpxs-settings.php:377 +msgid "Select yes if you want to activate the password strength meter." +msgstr "" + +#: admin/bpxs-settings.php:384 +msgid "Date of Birth Check" +msgstr "" + +#: admin/bpxs-settings.php:388 +msgid "Activate DOB Check" +msgstr "" + +#: admin/bpxs-settings.php:394 +msgid "Select yes if you want to activate the date of birth check." +msgstr "" + +#: admin/bpxs-settings.php:397 +msgid "DOB Field ID" +msgstr "" + +#: admin/bpxs-settings.php:404 +msgid "Select the profile field that represents the date of birth." +msgstr "" + +#: admin/bpxs-settings.php:408 +msgid "Pick your age" +msgstr "" + +#: admin/bpxs-settings.php:416 +msgid "Select the age you need your users to be above." +msgstr "" + +#: admin/bpxs-settings.php:423 +msgid "Update" +msgstr "" + +#: admin/bpxs-settings.php:469 +#, php-format +msgid "To receive support for this plugin, please register on ShabuShabu.eu." +msgstr "" + +#: admin/bpxs-settings.php:470 +msgid "Registration is free. Support, however, will only be provided within the support group of this plugin, for which we charge a small monthly subscription fee." +msgstr "" + +#: admin/bpxs-settings.php:475 +#: admin/bpxs-settings.php:499 +#: admin/bpxs-settings.php:529 +msgid "Description" +msgstr "" + +#: admin/bpxs-settings.php:476 +#: admin/bpxs-settings.php:501 +#: admin/bpxs-settings.php:531 +msgid "Price" +msgstr "" + +#: admin/bpxs-settings.php:492 +msgid "Below you find a list of all our available and planned plugins and themes. Items that have a price tag attached come with 3 months free support." +msgstr "" + +#: admin/bpxs-settings.php:494 +msgid "Plugins" +msgstr "" + +#: admin/bpxs-settings.php:498 +#: admin/bpxs-settings.php:528 +msgid "Name" +msgstr "" + +#: admin/bpxs-settings.php:500 +#: admin/bpxs-settings.php:530 +msgid "Release Date" +msgstr "" + +#: admin/bpxs-settings.php:524 +msgid "Themes" +msgstr "" + +#: admin/bpxs-settings.php:558 +msgid "Information could not be retrieved." +msgstr "" + +#: admin/bpxs-settings.php:571 +msgid "We spend a lot of time and effort on implementing new features and on the maintenance of this plugin, so if you feel generous and have a few bucks to spare, then please consider to donate." +msgstr "" + +#: admin/bpxs-settings.php:572 +msgid "Click on the button below and you will be redirected to the PayPal site where you can make a safe donation" +msgstr "" + +#: admin/bpxs-settings.php:576 +msgid "BP Xtra Signup @ http://shabushabu.eu" +msgstr "" + +#: admin/bpxs-settings.php:583 +msgid "Make payments with PayPal - it's fast, free and secure!" +msgstr "" + +#: admin/bpxs-settings.php:586 +msgid "Thank you and all the best!" +msgstr "" + +#: _inc/bpxs-core.php:54 +#, php-format +msgid "You need to be at least %d years old to join this network." +msgstr "" + +#: _inc/bpxs-core.php:171 +msgid "Confirm Email (required)" +msgstr "" + +#: _inc/bpxs-core.php:201 +msgid "Please make sure you enter your email twice" +msgstr "" + +#: _inc/bpxs-core.php:204 +msgid "The emails you entered do not match." +msgstr "" + +#: _inc/bpxs-core.php:229 +#, php-format +msgid "This usename is taken, please choose another one, e.g. %s" +msgstr "" + +#: _inc/bpxs-core.php:237 +msgid "This username is available." +msgstr "" + +#: _inc/bpxs-core.php:243 +msgid "You have to chose a username." +msgstr "" + +#: _inc/bpxs-core.php:317 +msgid "Only lowercase letters and numbers allowed." +msgstr "" + +#: _inc/bpxs-core.php:320 +msgid "This username is reserved. Please chose another one." +msgstr "" + +#: _inc/bpxs-core.php:323 +msgid "Username must be at least 4 characters." +msgstr "" + +#: _inc/bpxs-core.php:326 +msgid "Usernames must not contain the character \"_\"!" +msgstr "" + +#: _inc/bpxs-core.php:332 +msgid "Usernames must contain letters too!" +msgstr "" + +#: _inc/bpxs-core.php:353 +#: _inc/bpxs-core.php:359 +msgid "Strength indicator" +msgstr "" + +#: _inc/bpxs-core.php:354 +msgid "Very weak" +msgstr "" + +#: _inc/bpxs-core.php:355 +msgid "Weak" +msgstr "" + +#: _inc/bpxs-core.php:357 +msgid "Strong" +msgstr "" + +#: _inc/bpxs-core.php:358 +msgid "Mismatch" +msgstr "" + +#: _inc/bpxs-core.php:360 +msgid "Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ & )." +msgstr "" + +#: _inc/bpxs-core.php:374 +#: _inc/bpxs-core.php:388 +msgid "The emails don't match!" +msgstr "" + +#: _inc/bpxs-core.php:420 +msgid "January" +msgstr "" + +#: _inc/bpxs-core.php:421 +msgid "February" +msgstr "" + +#: _inc/bpxs-core.php:422 +msgid "March" +msgstr "" + +#: _inc/bpxs-core.php:423 +msgid "April" +msgstr "" + +#: _inc/bpxs-core.php:424 +msgid "May" +msgstr "" + +#: _inc/bpxs-core.php:425 +msgid "June" +msgstr "" + +#: _inc/bpxs-core.php:426 +msgid "July" +msgstr "" + +#: _inc/bpxs-core.php:427 +msgid "August" +msgstr "" + +#: _inc/bpxs-core.php:428 +msgid "September" +msgstr "" + +#: _inc/bpxs-core.php:429 +msgid "October" +msgstr "" + +#: _inc/bpxs-core.php:430 +msgid "November" +msgstr "" + +#: _inc/bpxs-core.php:431 +msgid "December" +msgstr "" + +#: _inc/bpxs-core.php:452 +msgid "Please enter a valid email address." +msgstr "" + +#: _inc/bpxs-core.php:455 +msgid "Sorry, that email address is already in use!" +msgstr "" + +#: _inc/bpxs-core.php:458 +msgid "This email address is valid." +msgstr "" + +#: _inc/bpxs-core.php:461 +msgid "You have to enter an email address." +msgstr "" + diff --git a/wp-content/plugins/bp-xtra-signup/readme.txt b/wp-content/plugins/bp-xtra-signup/readme.txt new file mode 100644 index 0000000..de3b487 --- /dev/null +++ b/wp-content/plugins/bp-xtra-signup/readme.txt @@ -0,0 +1,107 @@ +=== BP Xtra Signup === +Contributors: travel-junkie +Donate link: http://shabushabu.eu/donation/ +Tags: buddypress, registration, eula, newsletter, tos, username, check, ajax, password, strength +Requires at least: WP 3.0, BP 1.2.6 +Tested up to: WP 3.0.1, BP 1.3bleeding +Stable tag: 1.6 + +Adds extra signup options to the registration page of a BuddyPress installation. + +== Description == + +This plugin lets you add a Terms of Service checkbox and, optionally, a Mailchimp signup checkbox to your BuddyPress registration page. +Additionally, an ajax username availability check, a password strength meter, email check and date of birth check can be activated. + +== Installation == + +1. Upload the files to wp-content/plugins/bp-xtra-signup + +2. Activate the plugin in your admin backend + +4. Go to BuddyPress->BP Xtra Signup and change the options to your liking + +That's it ... enjoy! + +== Frequently Asked Questions == + += What about feature requests? = + +You can register on our [support site](http://shabushabu.eu/membership-options/) and leave a comment in our support forums. + += But you charge for support, right? = + +Yes, we do. It's not a lot, though, and you can obviously download the plugin for free. + +== Screenshots == + +1. Admin Panel +2. Register Page + +== Changelog == + += v1.0 = +* initial release + += v1.1 = +* Changed: TOS display is optional now +* Added: slight code improvements + += v1.2 = +* NEW: Optional email confirmation on registration (THX to Francesco Laffi) +* Bugfix: Newsletter selection is repaired + += v1.3 = +* NEW: Ajax username availability (THX to Brajesh Singh) +* NEW: Password strength meter +* Changed: Newsletter checkbox is unchecked by default due to legal issues in certain countries + += v1.3.1 = +* NEW: Alternative username suggestion if desired username is taken already +* Added: Support for WP MS when checking for usernames + += v1.4 = +* NEW: Date of Birth check on registration +* Added: Various filters and hooks +* Added: Some admin UX enhancements + += v1.5 = +* NEW: Ajax email check +* NEW: Comparison of email values +* NEW: JS files get concatinated +* Added: Minified/dev js and css files + += v1.5.1 = +* Bugfix: IE Compatibility by substituting JSON.parse with jQuery.parseJSON (THX James Smith) + += v1.5.2 = +* Changed: TOS link and TOS text option have been combined + += v1.5.3 = +* Bugfix: Admin help has been fixed + += v1.5.4 = +* Bugfix: Fixed problems when translating the plugin + += v1.6 = +* General housekeeping + +== Upgrade Notice == + += v1.5.2 = +Go to the plugin settings page and manually add the link to your TOS to the 'Checkbox Text' option + += v1.5 = +Go to the plugin settings page to activate the ajax email check + += v1.4 = +Go to the plugin settings page to activate the date of birth check + += v1.3 = +Go to the plugin settings page and activate the password strength meter and ajax username availability if needed + += v1.2 = +Visit the plugin admin page to activate email confirmation + += v1.0 = +Slight code improvements over the beta version \ No newline at end of file diff --git a/wp-content/plugins/bp-xtra-signup/screenshot-1.png b/wp-content/plugins/bp-xtra-signup/screenshot-1.png new file mode 100644 index 0000000..a170b86 Binary files /dev/null and b/wp-content/plugins/bp-xtra-signup/screenshot-1.png differ diff --git a/wp-content/plugins/bp-xtra-signup/screenshot-2.png b/wp-content/plugins/bp-xtra-signup/screenshot-2.png new file mode 100644 index 0000000..9432f5a Binary files /dev/null and b/wp-content/plugins/bp-xtra-signup/screenshot-2.png differ diff --git a/wp-content/plugins/buddypress-multilingual/activities.php b/wp-content/plugins/buddypress-multilingual/activities.php new file mode 100644 index 0000000..f010dd8 --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/activities.php @@ -0,0 +1,314 @@ + $item + */ +function bpml_activities_bp_activity_before_save_hook($item) { + if ($item->type == 'new_blog') { + global $sitepress; + $item->action = bpml_filter_hrefs_from_to($item->action, ICL_LANGUAGE_CODE, + $sitepress->get_default_language(), -1, 1); + } +} + +/** + * Saves activity language. + * + * @global $sitepress + * @param $item + */ +function bpml_activities_bp_activity_after_save_hook($item) { + switch ($item->type) { + case 'new_blog_post': + $lang = bpml_get_item_language($item); + if (empty($lang)) { + return FALSE; + } else if (!empty($lang['language'])) { + bp_activity_update_meta($item->id, 'bpml_lang', $lang['language']); + } else { + bp_activity_update_meta($item->id, 'bpml_lang', $lang['default_language']); + } + if (!empty($lang['recorded_language'])) { + bp_activity_update_meta($item->id, 'bpml_lang_recorded', $lang['recorded_language']); + } + break; + + case 'new_blog_comment': + $lang = bpml_get_item_language($item, 'comment'); + if (empty($lang)) { + return FALSE; + } else if (!empty($lang['language'])) { + bp_activity_update_meta($item->id, 'bpml_lang', $lang['language']); + } else { + bp_activity_update_meta($item->id, 'bpml_lang', $lang['default_language']); + } + break; + + default: + if (defined('ICL_LANGUAGE_CODE')) { + bp_activity_update_meta($item->id, 'bpml_lang', ICL_LANGUAGE_CODE); + } + break; + } + bpml_activities_clear_cache($item->item_id, 'bpml_google_translation', 'main'); +} + +/** + * Triggers indicator that we're in activity loop. + */ +function bpml_activities_bp_before_activity_loop_hook() { + global $bpml_in_activity_loop; + $bpml_in_activity_loop = TRUE; +} + +/** + * Filters activities. + * + * @todo This filter is called twice on favorites page via hook + * 'bp_activity_get_specific'. See if that is a problem. + * + * @global $sitepress $sitepress + * @param $activity + * @param $r + * @return + */ +function bpml_activities_bp_activity_get_filter($activity, $r = NULL) { + global $sitepress, $bpml_in_activity_loop; + static $cache = array(); + $default_language = $sitepress->get_default_language(); + $current_language = $sitepress->get_current_language(); + foreach ($activity['activities'] as $key => $result) { + if (isset($cache[$result->id])) { + $activity['activities'][$key] = $cache[$result->id]; + continue; + } + $activity['activities'][$key] = bpml_activities_translate_activity($result, $default_language, $current_language); + if ($activity['activities'][$key] == FALSE) { + unset($activity['activities'][$key]); + } else { + $cache[$result->id] = $activity['activities'][$key]; + } + } +// if (!empty($bpml_in_activity_loop) && function_exists('bpml_google_translate_button')) { + if (function_exists('bpml_google_translate_button')) { + echo bpml_google_translate_button(); + } + $activity['total'] = count($activity['activities']); + return $activity; +} + +/** + * Translates activity entry. + * + * @param $result + * @param $default_language + * @param $current_language + * @param $options + * @return + */ +function bpml_activities_translate_activity($result, $default_language, $current_language) { + global $bpml; + // Record activity if isn't registered + if (!isset($bpml['collected_activities'][$result->type])) { + $bpml['collected_activities'][$result->type] = bpml_collected_activities_defaults(); + bpml_save_setting('collected_activities', $bpml['collected_activities']); + bpml_store_admin_notice($result->type, '

    New activities to handle: ' . $result->type . '

    '); + } + // Set options for current activity type (merge to cover missing options) + $type_options = array_merge(bpml_collected_activities_defaults(), $bpml['collected_activities'][$result->type]); + + // Get language + $lang = bp_activity_get_meta($result->id, 'bpml_lang'); + $lang_recorded = bp_activity_get_meta($result->id, 'bpml_lang_recorded'); + + // Set/fix orphans (missing lang) + if (empty($lang)) { + if ($bpml['activities']['orphans_fix']) { + $lang = bpml_activities_fix_orphan_activity($result, $default_language); + bpml_debug('

    Orphaned activity FIXED ID:' . $result->id . ' (Missing language - assigning \'' . $lang . '\')

    '); + } else { + bpml_debug('

    Orphaned activity ID:' . $result->id . ' (Missing language - setting \'' . $default_language . '\')

    '); + $lang = $default_language; + } + if (!$bpml['activities']['orphans_fix'] + && ($bpml['activities']['display_orphans'] === 'none' + || ($bpml['activities']['display_orphans'] === 'default' + && $current_language != $default_language))) { + return FALSE; + } + } + + // Filter activities + if (($bpml['activities']['filter'] && $lang == $current_language) + || (!$bpml['activities']['filter'])) { + + $result->lang = $lang; + if (!empty($lang_recorded)) { + $result->lang_recorded = $lang_recorded; + } + + // Process children + if (!empty($result->children)) { + foreach ($result->children as $child_key => $child) { + $result->children[$child_key] = bpml_activities_translate_activity($child, $default_language, $current_language, $options); + } + } + + // Filter links + if (0 !== intval($type_options['translate_links'])) { + $result->action = bpml_filter_hrefs($result->action, $result->lang, intval($type_options['translate_links'])); + } + + // Apply filters to activity + $result = apply_filters('bpml_activity_filter', $result, $default_language, $current_language, $type_options); + + return $result; + } else { + return FALSE; + } +} + +function bpml_activities_fix_orphan_activity($item, $default_language) { + switch ($item->type) { + case 'new_blog_post': + $lang = bpml_get_item_language($item, 'post_post', TRUE); + if (empty($lang)) { + bp_activity_update_meta($item->id, 'bpml_lang', $default_language); + } else if (!empty($lang['language'])) { + bp_activity_update_meta($item->id, 'bpml_lang', $lang['language']); + } else { + bp_activity_update_meta($item->id, 'bpml_lang', $lang['default_language']); + } + break; + + case 'new_blog_comment': + $lang = bpml_get_item_language($item, 'comment', TRUE); + if (empty($lang)) { + bp_activity_update_meta($item->id, 'bpml_lang', $default_language); + } else if (!empty($lang['language'])) { + bp_activity_update_meta($item->id, 'bpml_lang', $lang['language']); + } else { + bp_activity_update_meta($item->id, 'bpml_lang', $lang['default_language']); + } + break; + + default: + bp_activity_update_meta($item->id, 'bpml_lang', $default_language); + break; + } + bp_activity_update_meta($result->id, 'bpml_lang_orphan', $default_language); + bpml_activities_clear_cache($item->item_id, 'bpml_google_translation', 'main'); + return bp_activity_get_meta($item->id, 'bpml_lang'); +} + +/** + * Returns default collected activity settings. + * + * @return + */ +function bpml_collected_activities_defaults() { + return array( + 'translate_title' => 0, + 'translate_title_cache' => 0, + 'translate_content' => 0, + 'translate_content_cache' => 0, + 'translate_links' => 0 + ); +} + +/** + * Clears activity cache + * + * @global $wpdb + * @param $ID + * @param $type + */ +function bpml_activities_clear_cache($ID, $type = 'bpml_google_translation', + $blog_id = NULL) { + if ($blog_id == 'main' && !is_main_site()) { + global $current_site; + $blog_id = $current_site->blog_id; + } else if ($blog_id == 'main') { + $blog_id = NULL; + } + if (!is_null($blog_id)) { + switch_to_blog($blog_id); + } + global $wpdb; + if ($ID == 'all') { + $wpdb->query("DELETE FROM {$wpdb->prefix}bp_activity_meta WHERE meta_key='" . $type . "'"); + } else { + $wpdb->query("DELETE FROM {$wpdb->prefix}bp_activity_meta WHERE meta_key='" . $type . "' AND activity_id=" . $ID); + } + if (!is_null($blog_id)) { + restore_current_blog(); + } +} + +/** + * Clears all BPML activity data. + */ +function bpml_activities_clear_all_data($ID = 'all') { + bpml_activities_clear_cache($ID, 'bpml_google_translation'); + bpml_activities_clear_cache($ID, 'bpml_lang'); + bpml_activities_clear_cache($ID, 'bpml_lang_recorded'); + bpml_activities_clear_cache($ID, 'bpml_lang_orphan'); +} + +/** + * Admin language assign dropdown for single activity. + * + * @global $activities_template + * @global $sitepress + * @return + */ +function bpml_activities_assign_language_dropdown() { + if (!current_user_can('administrator')) { + return ''; + } + global $activities_template, $sitepress; + $langs = $sitepress->get_active_languages(); + $data = ''; + foreach ($langs as $lang) { + $selected = $activities_template->activity->lang == $lang['code'] ? ' selected="selected"' : ''; + $data .= ''; + } + + echo '
  • '; + echo ' 
  • '; +} + +/** + * BPML activities AJAX process. + */ +function bpml_activities_ajax() { + if (current_user_can('administrator') && isset($_POST['bpml-activity-assign-language'])) { + $ID = key($_POST['bpml-activity-assign-language']); + $lang = $_POST['bpml-activity-assign-language'][$ID]; + bp_activity_update_meta($ID, 'bpml_lang', $lang); + bpml_activities_clear_cache($ID, 'bpml_google_translation'); + echo json_encode(array('output' => 'Language assigned')); + } +} + +/** + * Translates latest update on the fly. + * + * @global $bpml + * @param $content + * @return + */ +function bpml_bp_get_activity_latest_update_filter($content) { + global $bpml; + if ($bpml['activities']['enable_google_translation'] === 0) { + return $content; + } + require_once dirname(__FILE__) . '/google-translate.php'; + return bpml_google_translate($content, '', ICL_LANGUAGE_CODE); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress-multilingual/admin-form.php b/wp-content/plugins/buddypress-multilingual/admin-form.php new file mode 100644 index 0000000..5c53362 --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/admin-form.php @@ -0,0 +1,306 @@ + $wpdb + */ +function bpml_admin_save_settings_submit() { + if (current_user_can('manage_options') && wp_verify_nonce(isset($_POST['_wpnonce']), 'bpml_save_options') && isset($_POST['bpml'])) { + if (isset($_POST['bpml_clear_google_cache'])) { + bpml_activities_clear_cache('all', 'bpml_google_translation'); + bpml_store_admin_notice('settings_saved', '

    Cache cleared

    '); + } else if (isset($_POST['bpml_clear_all_activity_data'])) { + bpml_activities_clear_all_data(); + bpml_store_admin_notice('settings_saved', '

    Activities data cleared

    '); + } else if (isset($_POST['bpml_admin_clear_activity_translations_single'])) { + bpml_admin_clear_activity_translations_single(key($_POST['bpml_admin_clear_activity_translations_single'])); + bpml_store_admin_notice('settings_saved', '

    Activity data cleared

    '); + } else if (isset($_POST['bpml_admin_clear_activity_data_single'])) { + bpml_admin_clear_activity_data_single(key($_POST['bpml_admin_clear_activity_data_single'])); + bpml_store_admin_notice('settings_saved', '

    Activity data cleared

    '); + } else if (isset($_POST['bpml_reset_options'])) { + bpml_save_settings(bpml_default_settings()); + bpml_store_admin_notice('settings_saved', '

    Settings set to default

    '); + } else { + bpml_admin_save_settings_submit_recursive(&$_POST['bpml']); + bpml_save_settings($_POST['bpml']); + do_action('bpml_settings_saved', $_POST['bpml']); + bpml_store_admin_notice('settings_saved', '

    Settings saved

    '); + } + wp_redirect(admin_url('options-general.php?page=bpml')); + exit; + } +} + +/** + * Sets POST values. + * + * @param $array + */ +function bpml_admin_save_settings_submit_recursive(&$array) { + foreach ($array as $key => &$value) { + if (is_array($value)) { + bpml_admin_save_settings_submit_recursive(&$value); + } else if ($value == '0' || $value == '1' || $value == '-1') { + $value = intval($value); + } + } +} + +/** + * Renders admin page. + * + * @global $bpml + */ +function bpml_admin_page() { + bpml_delete_setting('admin_notices'); + global $bpml; + echo '
    +

    +

    BuddyPress Multilingual

    '; + echo '
    '; + wp_nonce_field('bpml_save_options'); + + echo '

    General

    '; + + echo 'Enable debugging (visible on frontend for admin only)
    '; + echo '  '; + echo ''; + + echo '

    '; + + do_action('bpml_settings_form_before'); + + echo '

    Activities

    '; + + echo 'Filter activity entries per language
    Default: No (activities are all displayed and optionally translated)
    '; + echo '  '; + echo ''; + + echo '

    '; + + echo ''; + + echo '

    '; + + echo 'Show activity language assign dropdown for admin
    '; + echo '  '; + echo ''; + + echo '

    '; + + echo 'Display activity updates without language in:
    '; + echo '  '; + echo '  '; + echo ''; + + echo '

    '; + + echo 'Auto-assing default language to activities without language data
    '; + echo '  '; + echo ''; + + echo '

    '; + + echo 'Enable Google Translation for titles and content
    will not be used if filtering is enabled
    '; + echo '  '; + echo '  '; + echo ''; + echo '  '; + + echo '

    '; + + echo '
    '; + echo 'Collected activities:
    '; + echo 'Soon as some activity is registered on site it will be displayed here.

    '; + echo 'Set all for translation | '; + echo 'Clear all

    '; + ksort($bpml['collected_activities']); + foreach ($bpml['collected_activities'] as $type => $activity) { + + echo ''; + + echo ''; + + echo ''; + + echo ''; + + echo ''; + + echo ''; + + echo ''; + echo ''; + + do_action('bpml_settings_form_collected_activities', $type, $activity); + + echo '
    ' . $type . '
    '; + + echo '
    '; + + echo '
    + + +
    '; + } + echo '
    '; + + do_action('bpml_settings_form_after'); + + echo '

    '; + echo ' '; + echo '
    '; + echo '
    '; +} + +/** + * Clears cached translation by activity type. + * + * @global $wpdb + * @param $type + */ +function bpml_admin_clear_activity_translations_single($type) { + global $wpdb; + $results = $wpdb->get_results("SELECT id from {$wpdb->prefix}bp_activity WHERE type='" . $type . "'"); + foreach ($results as $key => $result) { + bpml_activities_clear_cache($result->id, 'bpml_google_translation'); + } +} + +/** + * Clears cached data by activity type. + * + * @global $wpdb + * @param $type + */ +function bpml_admin_clear_activity_data_single($type) { + global $wpdb; + $results = $wpdb->get_results("SELECT id FROM {$wpdb->prefix}bp_activity WHERE type='" . $type . "'"); + foreach ($results as $key => $result) { + bpml_activities_clear_cache($result->id, 'bpml_google_translation'); + bpml_activities_clear_cache($result->id, 'bpml_lang'); + bpml_activities_clear_cache($result->id, 'bpml_lang_recorded'); + bpml_activities_clear_cache($result->id, 'bpml_lang_orphan'); + } +} + +/** + * Admin form hook. + * + * @global $bpml + * @return + */ +function bpml_profiles_admin_form() { + global $bpml; + echo '

    Profile fields

    '; + echo '  
    '; + echo '  
    '; + + echo '

    '; + + echo 'Select fields that can be translated:'; + // get fields + $groups = BP_XProfile_Group::get(array( + 'fetch_fields' => true + )); + if (empty($groups)) { + echo 'No profile fields.'; + return FALSE; + } + + foreach ($groups as $group) { + if (empty($group->fields)) { + echo 'No fields in this group'; + continue; + } + echo '

    ' . $group->name . '

    '; + foreach ($group->fields as $field) { + $checked = isset($bpml['profiles']['fields'][$field->id]) ? ' checked="checked"' : ''; + echo '  '; + } + } + + echo '


    Translate field titles
    '; + $checked = isset($bpml['profiles']['translate_fields_title']) ? ' checked="checked"' : ''; + echo '  '; + + echo '

    '; + echo '

    '; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress-multilingual/admin.php b/wp-content/plugins/buddypress-multilingual/admin.php new file mode 100644 index 0000000..cab2b8b --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/admin.php @@ -0,0 +1,31 @@ + + */ +function bpml_admin_show_stored_admin_notices() { + $messages = bpml_get_setting('admin_notices'); + if (empty($messages)) { + return ''; + } + foreach ($messages as $message) { + bpml_admin_message($message, 'updated', 'all_admin_notices'); + } +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress-multilingual/frontend.php b/wp-content/plugins/buddypress-multilingual/frontend.php new file mode 100644 index 0000000..aac3b99 --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/frontend.php @@ -0,0 +1,315 @@ + $a + */ +function bpml_test($a = '') { + echo '
    '; print_r($a); echo '
    '; +} + +/** + * Before BP header hook. + * + * Activate site_url() filter. + */ +function bpml_bp_before_header_hook() { + add_filter('site_url', 'bpml_site_url_filter', 0); +} + +/** + * After BP footer hook. + * + * Remove site_url() filter. + */ +function bpml_bp_after_footer_hook() { + remove_filter('site_url', 'bpml_site_url_filter', 0); +} + +/** + * Filters site_url() calls. + * + * @global $sitepress + * @param $url + * @return + */ +function bpml_site_url_filter($url, $path = '') { + global $sitepress; + return rtrim($sitepress->convert_url($url), '/'); +} + +/** + * Removes site_url() filter when redirecting to random blog. + */ +function bpml_blogs_redirect_to_random_blog() { + global $bp; + if ($bp->current_component == $bp->blogs->slug && isset($_GET['random-blog'])) { + remove_filter('site_url', 'bpml_site_url_filter', 0); + } +} + +/** + * Filters BuddyPress root domain. + * + * @global $sitepress $sitepress + * @param $url + * @return + */ +function bpml_bp_core_get_root_domain_filter($url) { + global $sitepress; + return rtrim($sitepress->convert_url($url), '/'); +} + +/** + * Filters admin URL (removes language). + * + * @global $sitepress $sitepress + * @param $url + * @param $path + * @param $blog_id + * @return + */ +function bpml_admin_url_filter($url, $path, $blog_id) { + $url = str_replace('/' . ICL_LANGUAGE_CODE . '/wp-admin', '/wp-admin/', $url); + return $url; +} + +/** + * Translates all links in given string. + * + * @global $bpml_filter_hrefs_lang + * @param $string + * @param $lang + * @param $limit + * @return + */ +function bpml_filter_hrefs($string = '', $lang = '', $limit = -1, + $position = NULL) { + global $bpml_filter_hrefs_lang, $bpml_filter_hrefs_count; + $bpml_filter_hrefs_count = 0; + $bpml_filter_hrefs_lang = $lang; + if (!is_null($position)) { + global $bpml_filter_hrefs_position; + $bpml_filter_hrefs_position = $position; + } + $return = preg_replace_callback('/href=["\'](.+?)["\']/', 'bpml_filter_href_matches', $string, $limit); + $bpml_filter_hrefs_count = 0; + return $return; +} + +/** + * Translates all links in given string from to. + * + * @global $bpml_filter_hrefs_lang + * @param $string + * @param $lang + * @param $limit + * @return + */ +function bpml_filter_hrefs_from_to($string = '', $lang_from = '', $lang_to = '', + $limit = -1, $position = NULL) { + global $bpml_filter_hrefs_lang, $bpml_filter_hrefs_lang_to, $bpml_filter_hrefs_count; + $bpml_filter_hrefs_count = 0; + $bpml_filter_hrefs_lang = $lang_from; + $bpml_filter_hrefs_lang_to = $lang_to; + if (!is_null($position)) { + global $bpml_filter_hrefs_position; + $bpml_filter_hrefs_position = $position; + } + $return = preg_replace_callback('/href=["\'](.+?)["\']/', 'bpml_filter_href_matches', $string, $limit); + $bpml_filter_hrefs_count = 0; + return $return; +} + +/** + * Translates links in matches provided from bpml_filter_hrefs(). + * + * @global $sitepress $sitepress + * @global $bpml_filter_hrefs_lang + * @param $match + * @return + */ +function bpml_filter_href_matches($match = array()) { + global $sitepress, $bpml_filter_hrefs_lang, $bpml_filter_hrefs_lang_to, $bpml_filter_hrefs_position, $bpml_filter_hrefs_count; + + if (!empty($bpml_filter_hrefs_position)) { + if ($bpml_filter_hrefs_count != $bpml_filter_hrefs_position) { + $bpml_filter_hrefs_count += 1; + return $match[0]; + } + } + + if (!empty($bpml_filter_hrefs_lang_to)) { + $lang_to = ($bpml_filter_hrefs_lang_to == $sitepress->get_default_language()) ? '' : $bpml_filter_hrefs_lang_to . '/'; + $converted = preg_replace('/\/' . $bpml_filter_hrefs_lang . '\//', '/' . $lang_to, $match[1], 1); + } else if ($sitepress->get_current_language() != $sitepress->get_default_language()) { + if ($bpml_filter_hrefs_lang !== $sitepress->get_default_language()) { + $converted = preg_replace('/\/' . $bpml_filter_hrefs_lang . '\//', '/' . $sitepress->get_current_language() . '/', $match[1], 1); + } else { + $converted = $sitepress->convert_url($match[1]); + } + // Check doubled + $converted = preg_replace('/\/' . $sitepress->get_current_language() . '\/' . $sitepress->get_current_language() . '\//', '/' . $sitepress->get_current_language() . '/', $converted, 1); + } else { + $replace = !empty($bpml_filter_hrefs_lang) ? '/\/' . $bpml_filter_hrefs_lang . '\//' : '/\//'; + $converted = preg_replace($replace, '/', $match[1], 1); + } + return str_replace($match[1], $converted, $match[0]); +} + +/** + * Filters bp_uri. + * + * This URI is important for BuddyPress. + * By that it determines some components and actions. + * We remove language component so BP can determine things right. + * + * @param $url + * @return + */ +function bpml_bp_uri_filter($url) { + global $sitepress; + $default_language = $sitepress->get_default_language(); + if ($default_language == ICL_LANGUAGE_CODE) { + return $url; + } + return preg_replace('/\/' . ICL_LANGUAGE_CODE . '\//', '/', $url, 1); + + echo $default_language; + +} + +/** + * Filters WPML languages switcher. + * + * This filtering is performed on BP pages + * where WPML actually don't detect any post/page. + * + * @global $sitepress + * @global $bp + * @global $bp_unfiltered_uri + * @global $post + * @return + */ +function bpml_icl_ls_languages_filter($langs) { + global $sitepress, $bp, $bp_unfiltered_uri, $post; + $default_language = $sitepress->get_default_language(); + + foreach($bp->active_components as $key => $value){ + $components[] = $key; + } + + if(!isset($bp_unfiltered_uri[0])){ + $bp_unfiltered_uri[0] = ''; + } + + // Unset the languages for missing translations + if(!in_array($bp_unfiltered_uri[0], $components)) { + foreach ($langs as $key => $lang) { + $url = ($default_language !== $key) ? $url = get_option('home') . "/$key/" : $url = get_option('home') . "/"; + if($url == $langs[$key]['url']){ + if(!is_home() && !is_front_page($post->ID)){ + unset($langs[$key]); + } + } + } + + return $langs; + } + + // Recreates language selector - the all components should have all languages + if(version_compare(BP_VERSION, '1.2.9') >= 0){ + $langs = $sitepress->get_active_languages(); + $url = ''; + foreach($bp_unfiltered_uri as $key => $path){ + $url .= '/' . $path; + } + + $homepage = get_option('home'); + $urlToFlags = ICL_PLUGIN_URL . '/res/flags/'; + foreach ($langs as $key => $lang) { + $langs[$key]['country_flag_url'] = $urlToFlags . "$key.png"; + $langs[$key]['language_code'] = $key; + $langs[$key]['translated_name'] = $lang['english_name']; + + if($default_language == $key){ + $langs[$key]['url'] = $homepage . $url; + } else { + $langs[$key]['url'] = $homepage . '/' . $lang['code'] . $url; + } + } + } else { + if (!in_array($bp_unfiltered_uri[0], $bp->root_components)) { + return $langs; + } + + foreach ($langs as $key => $lang) { + $langs[$key]['url'] = $sitepress->convert_url(get_option('home') + . '/' . implode('/', $bp_unfiltered_uri), $lang['language_code']); + } + } + return $langs; +} + +/** + * Stores/returns debug messages. + * + * @staticvar array $messages + * @param $message + * @param $class + * @return array + */ +function bpml_debug($message, $class = 'bpml-debug-updated') { + if (!current_user_can('administrator') || !defined('BPML_DEBUG') || !BPML_DEBUG) { + return ''; + } + static $messages = array(); + if ($message == 'get') { + return $messages; + } + $messages[] = array('message' => $message, 'class' => 'updated bpml-debug ' . $class); +} + +/** + * Header hook. + */ +function bpml_wp_head_hook() { +} + +/** + * Renders debug info. + * + * @global $bp + * @return + */ +function bpml_wp_footer() { + + if (!current_user_can('administrator') || !defined('BPML_DEBUG') || !BPML_DEBUG) { + return ''; + } + + echo '

    BPML Debug

    '; + $messages = bpml_debug('get'); + foreach ($messages as $message) { + echo bpml_message($message['message'], $message['class']); + } + global $bp, $bpml; + + var_dump($bpml); + + echo '
    ';
    +    echo '
    +		BPML Settings
    +		';
    +    var_dump($bpml);
    +    echo '
    +
    +		BuddyPress ';
    +    print_r($bp);
    +    echo '
    '; + +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress-multilingual/google-translate.php b/wp-content/plugins/buddypress-multilingual/google-translate.php new file mode 100644 index 0000000..9181dc7 --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/google-translate.php @@ -0,0 +1,220 @@ + $result + * @param $default_language + * @param $current_language + * @param $options + * @return + */ +function bpml_google_translate_activity_filter($result, $default_language, + $current_language, $type_options) { + + $to_translate_title = FALSE; + $to_translate_content = FALSE; + + if ((!empty($result->lang_recorded))) { + if ($result->lang_recorded != $current_language && $type_options['translate_title']) { + $to_translate_title = TRUE; + } + } else if ($result->lang != $current_language && $type_options['translate_title']) { + $to_translate_title = TRUE; + } + + if ($result->lang != $current_language && !empty($result->content) && $type_options['translate_content']) { + $to_translate_content = TRUE; + } + + // Apply display filters + $result->action = apply_filters('bp_get_activity_action', $result->action); + if (!empty($result->content)) { + $result->content = apply_filters('bp_get_activity_content_body', $result->content); + } + + global $bpml; + // Stored in DB + if ($bpml['activities']['enable_google_translation'] === 'store') { + // Store original values + $original_translation_title = $result->action; + $original_translation_content = $result->content; + // Check if cached + $translation = bp_activity_get_meta($result->id, 'bpml_google_translation'); + + // Translate title + if ($to_translate_title && $type_options['translate_title_cache']) { + if (empty($translation) || !isset($translation[$current_language]) || !isset($translation[$current_language]['title'])) { + bpml_debug('

    Fetched Google translation for activity title ID:' . $result->id . ' (original lang \'' . $result->lang . '\', current lang \'' . $current_language . '\')

    '); + // Translate with Google + if (!empty($result->lang_recorded)) { + $translation_title = bpml_google_translate($result->action, $result->lang_recorded, $current_language); + } else { + $translation_title = bpml_google_translate($result->action, $result->lang, $current_language); + } + $translation[$current_language]['title'] = $translation_title; + // Set cache + bp_activity_update_meta($result->id, 'bpml_google_translation', $translation); + } else { + bpml_debug('

    Cached Google translation for activity title ID:' . $result->id . ' (original lang \'' . $result->lang . '\', current lang \'' . $current_language . '\')

    '); + $translation_title = $translation[$current_language]['title']; + } + } else if ($to_translate_title) { + if (!empty($result->lang_recorded)) { + $translation_title = bpml_google_translate($result->action, $result->lang_recorded, $current_language); + } else { + $translation_title = bpml_google_translate($result->action, $result->lang, $current_language); + } + } + + // Translate content + if ($to_translate_content && $type_options['translate_content_cache']) { + if (empty($translation) || !isset($translation[$current_language]) || !isset($translation[$current_language]['content'])) { + bpml_debug('

    Fetched Google translation for activity content ID:' . $result->id . ' (original lang \'' . $result->lang . '\', current lang \'' . $current_language . '\')

    '); + // Translate with Google + $translation_content = bpml_google_translate($result->content, $result->lang, $current_language); + $translation[$current_language]['content'] = $translation_content; + // Set cache + bp_activity_update_meta($result->id, 'bpml_google_translation', $translation); + } else { + bpml_debug('

    Cached Google translation for activity content ID:' . $result->id . ' (original lang \'' . $result->lang . '\', current lang \'' . $current_language . '\')

    '); + $translation_content = $translation[$current_language]['content']; + } + } else if ($to_translate_content) { + $translation_content = bpml_google_translate($result->content, $result->lang, $current_language); + } + + // Wrap contents + if ($to_translate_title) { + $result->action = '
    ' . $original_translation_title . '
    ' . $translation_title; + } + if ($to_translate_content) { + $result->content = '
    ' . $original_translation_content . '
    ' . $translation_content; + } + } else if ($bpml['activities']['enable_google_translation'] === 'js') { + + // Translate with JS (wrap contents) + + if ($to_translate_title) { + if (!empty($result->lang_recorded)) { + $result->action = bpml_google_translate_wrap($result->action, $result->lang_recorded); + } else { + $result->action = bpml_google_translate_wrap($result->action, $result->lang); + } + } + if ($to_translate_content) { + $result->content = bpml_google_translate_wrap($result->content, $result->lang); + } + } + return $result; +} + +/** + * Translates strings using Google Translate. + * + * @staticvar string $client + * @param $item + * @param $current_language + * @return + */ +function bpml_google_translate($content, $from_language, $to_language) { + static $client = NULL; + if (is_null($client)) { + $client = new WP_Http(); + } + $gtranslateurl = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s|%s'; + $url = sprintf($gtranslateurl, urlencode($content), $from_language, $to_language); + $url = str_replace('|', '%7C', $url); + $response = $client->request($url); + if (!is_wp_error($response) && $response['response']['code'] == '200' && $response['response']['code'] == '403') { + $translation = json_decode($response['body']); + + $content = $translation->responseData->translatedText; + } else { + $content = null; + } + + return $content; +} + +/** + * Renders Google translate control button. + * + * Only rendered once per page. + * + * @global $bpml_google_translate_js + * @staticvar boolean $called + * @param string $output + * @return string + */ +function bpml_google_translate_button($output = '') { + global $bpml_google_translate_js, $bpml_in_activity_loop; +// if (empty($bpml_in_activity_loop)) { +// return ''; +// } + static $called = FALSE; + if ($called) { + return ''; + } + $called = TRUE; + if (!empty($bpml_google_translate_js)) { + $output .= '
    ' . bpml_google_translate_js(); + } + return $output; +} + +/** + * Wraps content in divs found by Google translate. + * + * @global boolean $bpml_google_translate_js + * Sets flag that translate button is needed + * @param $content + * @param $lang + * @param $element + * @return + */ +function bpml_google_translate_wrap($content, $lang, $element = 'div') { + global $bpml_google_translate_js, $bpml_google_translate_ajax; + $suffix = !empty($bpml_google_translate_ajax) ? '-ajax' : ''; + $bpml_google_translate_js = TRUE; + return '
    ' . $content . '
    '; +} + +/** + * Returns JS needed for Google translate. + * + * @param string $lang + * @return + */ +function bpml_google_translate_js($lang = NULL) { + if (is_null($lang)) { + $lang = ICL_LANGUAGE_CODE; + } + global $bpml_google_translate_ajax; + $suffix = !empty($bpml_google_translate_ajax) ? '-ajax' : ''; + return ' +'; +} diff --git a/wp-content/plugins/buddypress-multilingual/incubator.php b/wp-content/plugins/buddypress-multilingual/incubator.php new file mode 100644 index 0000000..4693d01 --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/incubator.php @@ -0,0 +1,53 @@ + array( + 'filter' => 0, + 'display_orphans' => 'all', + 'orphans_fix' => 0, + 'translate_name' => 0, + 'translate_description' => 0, + )); +} + + + +function bpml_bp_get_group_name_filter($name) { + global $bp, $sitepress; + $default_language = $sitepress->get_default_language(); + $original_language = groups_get_groupmeta($bp->groups->current_group->id, 'bpml_lang'); + if ($original_language == ICL_LANGUAGE_CODE) { + return $name; + } + $options = bpml_settings(); + if ($options['groups']['translate_name'] === 'google_translate_store') { + $translations = groups_get_groupmeta($bp->groups->current_group->id, 'bpml_google_translation'); + if (!isset($translations[ICL_LANGUAGE_CODE])) { + bpml_google_translate_wrap($name); + } + } else if ($options['groups']['translate_name'] === 'google_translate_js') { + + } + return $name; +} diff --git a/wp-content/plugins/buddypress-multilingual/profiles.php b/wp-content/plugins/buddypress-multilingual/profiles.php new file mode 100644 index 0000000..7701e50 --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/profiles.php @@ -0,0 +1,197 @@ + $bp + * @global $bpml + * @global $sitepress + * @global boolean $bpml_profiles_field_value_suppress_filter + * @return + */ +function bpml_profiles_bp_after_profile_edit_content_hook() { + global $bp, $bpml, $sitepress, $bpml_profiles_field_value_suppress_filter; + $bpml_profiles_field_value_suppress_filter = TRUE; + require_once dirname(__FILE__) . '/google-translate.php'; + $default_language = $sitepress->get_default_language(); + $langs = $sitepress->get_active_languages(); + $group = BP_XProfile_Group::get(array( + 'fetch_fields' => true, + 'profile_group_id' => $bp->action_variables[1], + 'fetch_field_data' => true + )); + echo ' 

    Translate fields

    '; + foreach ($group[0]->fields as $field) { + if (!isset($bpml['profiles']['fields'][$field->id]) || empty($field->data->value)) { + continue; + } + echo '
    ' . $field->name . '
    '; + foreach ($langs as $lang) { + if ($lang['code'] == $default_language) { + continue; + } + echo ''; + echo '
    '; + } + echo '
    '; + } +} + +/** + * Processes AJAX call for updating field translation. + * + * @global $current_user + */ +function bpml_profiles_ajax() { + if (isset($_POST['bpml_profiles_translate_field']) && is_user_logged_in()) { + global $current_user; + $field_id = $_POST['bpml_profiles_translate_field']; + $lang = $_POST['bpml_profiles_translate_field_lang']; + bpml_profile_update_translation($current_user->ID, $field_id, $lang, $_POST['content']); + echo json_encode(array('output' => 'Done')); + } +} + +/** + * Updates field translation. + * + * @global $wpdb $wpdb + * @param $user_id + * @param $field_id + * @param $lang + * @param $content + */ +function bpml_profile_update_translation($user_id, $field_id, $lang, $content) { + global $wpdb; + $exists = $wpdb->get_var($wpdb->prepare("SELECT id FROM {$wpdb->prefix}bp_xprofile_data_bpml WHERE field_id=%d AND user_id=%d AND lang=%s", $field_id, $user_id, $lang)); + + if (empty($exists)) { + $wpdb->insert($wpdb->prefix . 'bp_xprofile_data_bpml', array( + 'field_id' => $field_id, + 'user_id' => $user_id, + 'lang' => $lang, + 'value' => $content, + ), array('%d', '%d', '%s', '%s')); + } else { + $wpdb->update($wpdb->prefix . 'bp_xprofile_data_bpml', array( + 'value' => $_POST['content'] + ), array( + 'user_id' => $user_id, + 'field_id' => $field_id, + 'lang' => $lang), + array('%s'), + array('%d', '%d', '%s')); + } +} + +/** + * Fetches field translation. + * + * @global $wpdb $wpdb + * @global $bpml + * @global $sitepress + * @global boolean $bpml_profiles_field_value_suppress_filter + * @param $field_id + * @param $lang + * @param $value + * @return + */ +function bpml_profiles_get_field_translation($field_id, $lang, $value = '') { + global $wpdb, $bpml, $sitepress, $bpml_profiles_field_value_suppress_filter; + if ($sitepress->get_default_language() == $lang) { + return $value; + } + $translation = apply_filters('bp_get_the_profile_field_edit_value', $wpdb->get_var($wpdb->prepare("SELECT value FROM {$wpdb->prefix}bp_xprofile_data_bpml WHERE field_id=%d and lang=%s", $field_id, $lang))); + if (empty($translation)) { + bpml_debug('Missing tranlsation for field: ' . $field_id); + if ($bpml['profiles']['translation']['user-missing'] && empty($bpml_profiles_field_value_suppress_filter)) { + require_once dirname(__FILE__) . '/google-translate.php'; + $value = bpml_google_translate(apply_filters('bp_get_the_profile_field_edit_value', $value), $sitepress->get_default_language(), $lang); + bpml_debug('Fetching Google translation for field: ' . $field_id); + } + return $value; + } else { + return $translation; + } +} + +/** + * Profilae field value filter. + * + * @global $sitepress + * @global $bpml + * @global boolean $bpml_profiles_field_value_suppress_filter + * @param $value + * @param $type + * @param $field_id + * @return + */ +function bpml_profiles_bp_get_the_profile_field_value_filter($value, $type, + $field_id) { + global $sitepress, $bpml, $bpml_profiles_field_value_suppress_filter; + if (!empty($bpml_profiles_field_value_suppress_filter)) { + return $value; + } + if (!isset($bpml['profiles']['fields'][$field_id])) { + return $value; + } + $lang = $sitepress->get_current_language(); + $value = bpml_profiles_get_field_translation($field_id, $lang, $value); + return $value; +} + +/** + * Notices user about changed fields. + * + * @param $field + */ +function bpml_xprofile_data_before_save_hook($field) { + bpml_store_frontend_notice('profile-field-updated', 'Check if fields need translation updated.'); +} + +/** + * Translates field names. + * + * @global $sitepress + * @global $field + * @staticvar array $cache + * @param $name + * @return array + */ +function bpml_bp_get_the_profile_field_name_filter($name) { + global $sitepress, $field; + if ($sitepress->get_default_language() == ICL_LANGUAGE_CODE) { + return $name; + } + static $cache = NULL; + if (is_null($cache)) { + $cache = get_option('bpml_profile_fileds_names', array()); + } + if (isset($cache[$field->id][ICL_LANGUAGE_CODE])) { + return $cache[$field->id][ICL_LANGUAGE_CODE]; + } + require_once dirname(__FILE__) . '/google-translate.php'; + $name = bpml_google_translate($name, $sitepress->get_default_language(), ICL_LANGUAGE_CODE); + $cache[$field->id][ICL_LANGUAGE_CODE] = $name; + update_option('bpml_profile_fileds_names', $cache); + return $name; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress-multilingual/readme.txt b/wp-content/plugins/buddypress-multilingual/readme.txt new file mode 100644 index 0000000..c82d66d --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/readme.txt @@ -0,0 +1,101 @@ +=== Plugin Name === +Contributors: icanlocalize, jozik +Donate link: http://wpml.org/documentation/related-projects/buddypress-multilingual/ +Tags: i18n, translation, localization, language, multilingual, WPML, BuddyPress +Requires at least: 3.0 +Tested up to: 3.3.1 +Stable tag: 1.3.0 + +BuddyPress Multilingual allows BuddyPress sites to run fully multilingual using the WPML plugin. + +== Description == + +The plugin allows building multilingual BuddyPress sites. It works with single-site or multi-site BuddyPress installs. Both the main site and child blogs can run multilingual. + +Guest blogs can choose their language and create multilingual contents. Additionally, each guest can choose the admin language individually. + +This plugin requires [WPML](http://wpml.org/). It uses WPML's language API and hooks to BuddyPress to make it multilingual. + +Requirements: + +* WPML 2.4.2 or higher. You must enable 'languages per directories'. +* Supports BuddyPress versions up to 1.5.x + += Features = + + * Enables multilingual BuddyPress components + * Filters all links to maintain right language selection + * Records language and allows Google translation for BuddyPress activity component + * Allows translation control for each type of activity + += New! Customize BuddyPress further using Types and Views = + +BPML is now compatible with [Types - The Custom Types and Custom Fields Plugin](http://wp-types.com/home/types-manage-post-types-taxonomy-and-custom-fields/) and [Views - The Custom Content Display Plugin](http://wp-types.com/). Types and Views allow you to customize BuddyPress futher by controlling custom content and displaying it any way you choose. + += Need Support? = + +Please submit support requests to **[WPML forum](http://forum.wpml.org)**. Remember to report: + +* The versions of BuddyPress, WPML and WordPress that you're using. +* A URL to your site, where we can see the problem happening. +* A description of what you expect to see and what you're seeing in practice. + +== Installation == + +1. Unzip and upload contents of sitepress-bp.zip file to the `/wp-content/plugins/` directory. +2. Activate the plugin through the Network 'Plugins' menu in WordPress (only available as 'Network' plugin). +3. Enable WPML (can be enabled before this BuddyPress Multilingual). +4. To set preferences go to Settings/BuddyPress Multilingual on main blog. + +== Frequently Asked Questions == + += Why do I need to enable languages per directories? = + +BuddyPress itself uses virtual directories for its elements. The only way we managed to add language information is by adding a language prefix to paths. + +For example, /fr/members/ to the French members list. + +== Screenshots == + +1. Multilingual main BuddyPress page. + +== Changelog == + += 1.3.0 = +* Support BP 1.5.x +* Language selector doesn't appear on the home page when a page is selected as the front page +* Pages widget exclude function doesn't work in the right way +* Small fix on main navigation menu + += 1.2.1 = +* Supports BP 1.2 + += 1.1.0 = +* Added translation support for XProfile fields + += 1.0.1 = +* Supports BuddyPress 1.2.8 and WP Network mode +* Added Google translation and translation control for BuddyPress activities + += 1.0.0 = +* Supports BuddyPress 1.2 + += 0.9.2 = +* Bugfixes + += 0.9.1 = +* Bugfixes + += 0.9 = +* First public release. Supports BuddyPress 1.0 + += 0.1.0 = +* Developers version, not recommended for production sites - feedback welcome! + +== Upgrade Notice == + += 1.1.0 = +* Runs on BuddyPress 1.2.8 + += 1.3.0 = +* Runs with BuddyPress 1.5.x diff --git a/wp-content/plugins/buddypress-multilingual/screenshot-1.jpg b/wp-content/plugins/buddypress-multilingual/screenshot-1.jpg new file mode 100644 index 0000000..7477b48 Binary files /dev/null and b/wp-content/plugins/buddypress-multilingual/screenshot-1.jpg differ diff --git a/wp-content/plugins/buddypress-multilingual/scripts.js b/wp-content/plugins/buddypress-multilingual/scripts.js new file mode 100644 index 0000000..4a8ce92 --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/scripts.js @@ -0,0 +1,92 @@ + +jQuery(document).ready(function() { + jQuery('.bpml-translation-original-toggle a').click(function(){ + jQuery(this).parent().next().toggle(); + return false; + }); + bpmlAdminToggleCollectedActivities(); + jQuery('.bpml-show-collected-activities').click(function(){ + if (jQuery(this).val() == 'store') { + jQuery('.bpml-activities-hide-cache-option, .bpml-activities-hide-titlecontent-option').fadeIn(); + } else { + jQuery('.bpml-activities-hide-cache-option').fadeOut(); + jQuery('.bpml-activities-hide-titlecontent-option').fadeIn(); + } + }); + jQuery('.bpml-hide-collected-activities').click(function(){ + jQuery('.bpml-activities-hide-cache-option, .bpml-activities-hide-titlecontent-option').fadeOut(); + }); + jQuery('#bpml-activities-select-all').click(function(){ + jQuery('#bpml-collected-activities input').attr('checked', 1); + jQuery('#bpml-collected-activities select').val(-1); + }); + jQuery('#bpml-activities-clear-all').click(function(){ + jQuery('#bpml-collected-activities input').attr('checked', 0); + jQuery('#bpml-collected-activities select').val(0); + }); + jQuery('.bpml-activity-assign-language').live('submit', function(){ + var form = jQuery(this); + jQuery.ajax({ + url: jQuery(this).attr('action'), + type: 'post', + data: jQuery(this).serialize(jQuery(this))+'&action=bpml_ajax', + dataType: 'json', + cache: false, + beforeSend: function(){ + form.children('.bmp-ajax-update').html('Processing...').show(); + }, + success: function(data){ + if (data.output != 'undefined') { + form.children('.bmp-ajax-update').html(data.output).delay(2000).fadeOut(); + } else if (data.error != 'undefined') { + form.children('.bmp-ajax-update').html(data.error).delay(2000).fadeOut(); + } + }, + error: function() { + } + }); + return false; + }); + jQuery('.bpml-form-ajax').live('submit', function(){ + var form = jQuery(this); + jQuery.ajax({ + url: jQuery(this).attr('action'), + type: 'post', + data: jQuery(this).serialize(jQuery(this))+'&action=bpml_ajax', + dataType: 'json', + cache: false, + beforeSend: function(){ + form.children('.bmp-ajax-update').html('Processing...').show(); + }, + success: function(data){ + if (data.output != 'undefined') { + form.children('.bmp-ajax-update').html(data.output).delay(2000).fadeOut(); + } else if (data.error != 'undefined') { + form.children('.bmp-ajax-update').html(data.error).delay(2000).fadeOut(); + } + }, + error: function() { + } + }); + return false; + }); + jQuery('.bpml_profiles_translate_with_google').click(function() { + jQuery(this).parent().find('textarea').val(jQuery(this).parent().find('.bpml_profiles_translate_field_google_translated').val()); + return false; + }); +}); + +function bpmlAdminToggleCollectedActivities() { + var val = jQuery("input:radio[name='bpml[activities][enable_google_translation]']:checked").val(); + if (val != 0) { + if (val == 'store') { + jQuery('.bpml-activities-hide-cache-option, .bpml-activities-hide-titlecontent-option').show(); + } else { + jQuery('.bpml-activities-hide-cache-option').hide(); + jQuery('.bpml-activities-hide-titlecontent-option').show(); + } + } else { + jQuery('.bpml-activities-hide-cache-option, .bpml-activities-hide-titlecontent-option').hide(); + } + jQuery('#bpml-collected-activities').slideDown(); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress-multilingual/sitepress-bp.php b/wp-content/plugins/buddypress-multilingual/sitepress-bp.php new file mode 100644 index 0000000..e6c784e --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/sitepress-bp.php @@ -0,0 +1,567 @@ +Documentation. + Author: OnTheGoSystems + Author URI: http://www.onthegosystems.com + Version: 1.3.0 + Network: true + */ + +/* + BuddyPress Multilingual is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + BuddyPress Multilingual is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with BuddyPress Multilingual. If not, see . + */ + +/** + * Define constants + */ +define('BPML_VERSION', '1.3.0'); +define('BPML_PLUGIN_URL', plugins_url(basename(dirname(__FILE__)))); + +add_action('plugins_loaded', 'bpml_plugins_loaded_hook', 0); +add_action('plugins_loaded', 'bpml_init_check', 11); + +/** + * Trigger this before anything. + * + * Force getting cookie language on: + * Search + * AJAX call + */ +function bpml_plugins_loaded_hook() { + if (defined('BP_VERSION') && defined('ICL_SITEPRESS_VERSION')) { + if (!is_admin() && (isset($_POST['search-terms']) || isset($_REQUEST['action']) + || (defined('DOING_AJAX') && DOING_AJAX))) { + add_filter('icl_set_current_language', 'bpml_get_cookie_lang'); + } + } +} + +/** + * Returns WPML cookie. + * + * @global $sitepress + * @param $lang + * @return + */ +function bpml_get_cookie_lang($lang = '') { + global $sitepress; + $lang_cookie = $sitepress->get_language_cookie(); + if (empty($lang_cookie)) { + return empty($lang) ? ICL_LANGUAGE_CODE : $lang; + } + return $lang_cookie; +} + +/** + * Checks if necessary conditions are met. + * + * @global $sitepress_settings + */ +function bpml_init_check() { + global $sitepress_settings; + if (defined('BP_VERSION') && defined('ICL_SITEPRESS_VERSION')) { + if ((!isset($sitepress_settings['language_negotiation_type']) + || $sitepress_settings['language_negotiation_type'] != 1) + && is_main_site()) { + bpml_admin_message('

    ' . __('For BuddyPress Multilingual to work you must set WPML language negotiation to "languages in different directories".') . '

    '); + } else { + + global $bpml; + $bpml = bpml_get_settings(); + define('BPML_DEBUG', bpml_get_setting('debug', 0)); + + // Site wide + include_once dirname(__FILE__) . '/activities.php'; + add_action('bp_activity_after_save', 'bpml_activities_bp_activity_after_save_hook'); + add_action('bp_activity_before_save', 'bpml_activities_bp_activity_before_save_hook'); + + // Main blog + if (is_main_site ()) { + // Profiles + if (isset($bpml['profiles']) && $bpml['profiles']['translation'] != 'no') { + require_once dirname(__FILE__) . '/profiles.php'; + if (!is_admin() && isset($bpml['profiles']['translate_fields_title'])) { + add_filter('bp_get_the_profile_field_name', 'bpml_bp_get_the_profile_field_name_filter'); + } + add_action('xprofile_data_before_save', 'bpml_xprofile_data_before_save_hook'); + add_action('init', 'bpml_profiles_init'); + add_action('bp_after_profile_edit_content', 'bpml_profiles_bp_after_profile_edit_content_hook'); + add_action('bpml_ajax', 'bpml_profiles_ajax'); + add_filter('bp_get_the_profile_field_value', 'bpml_profiles_bp_get_the_profile_field_value_filter', 0, 3); + } + + if (!is_admin()) { + require_once dirname(__FILE__) . '/frontend.php'; + add_action('wp_head', 'bpml_wp_head_hook'); + add_action('wp_footer', 'bpml_wp_footer', 9999); + add_action('wp', 'bpml_blogs_redirect_to_random_blog', 0); + add_action('bp_before_activity_loop', 'bpml_activities_bp_before_activity_loop_hook'); + add_action('bp_core_render_message', 'bpml_show_frontend_notices'); + + // Filter site_url on regular pages + add_action('bp_before_header', 'bpml_bp_before_header_hook'); + add_action('bp_after_footer', 'bpml_bp_after_footer_hook'); + + // Force filtering site_url on: + // Search + // AJAX call + if (isset($_POST['search-terms']) || isset($_REQUEST['action']) || (defined('DOING_AJAX') && DOING_AJAX)) { + add_filter('site_url', 'bpml_site_url_filter', 0); + } + + // Filters main navigation menu + if(version_compare(BP_VERSION, '1.2.9') >= 0){ + add_filter( 'wp_list_pages', 'nav_menu_filter' ); + } + + add_filter('admin_url', 'bpml_admin_url_filter', 0, 3); + add_filter('bp_core_get_root_domain', 'bpml_bp_core_get_root_domain_filter', 0); + add_filter('bp_uri', 'bpml_bp_uri_filter', 0); + add_filter('icl_ls_languages', 'bpml_icl_ls_languages_filter'); + add_filter('bp_activity_get', 'bpml_activities_bp_activity_get_filter', 10, 2); + add_filter('bp_activity_get_specific', 'bpml_activities_bp_activity_get_filter', 10, 2); + add_filter('bp_get_activity_latest_update', 'bpml_bp_get_activity_latest_update_filter'); + + if ($bpml['activities']['show_activity_switcher']) { + add_action('bp_before_activity_entry', 'bpml_activities_assign_language_dropdown'); + } + + if ($bpml['activities']['enable_google_translation']) { + require_once dirname(__FILE__) . '/google-translate.php'; + add_filter('bpml_activity_filter', 'bpml_google_translate_activity_filter', 10, 5); + add_action('wp_ajax_activity_widget_filter', 'bpml_google_translate_indicate_ajax'); + add_action('wp_ajax_activity_get_older_updates', 'bpml_google_translate_indicate_ajax'); + } + + add_action('init', 'additional_css_js'); + } else { + require_once dirname(__FILE__) . '/admin.php'; + $version = get_option('bpml_version', FALSE); + if (empty($version) || version_compare($version, BPML_VERSION, '<')) { + require_once dirname(__FILE__) . '/upgrade.php'; + bpml_upgrade(); + } + add_action('admin_init', 'bpml_admin_show_stored_admin_notices'); + add_action('admin_menu', 'bpml_admin_menu'); + if (isset($_GET['page']) && $_GET['page'] == 'bpml') { + require_once dirname(__FILE__) . '/admin-form.php'; + add_action('bpml_settings_form_before', 'bpml_profiles_admin_form'); + add_action('admin_init', 'bpml_admin_save_settings_submit'); + add_action('admin_init', 'admin_additional_css_js'); + } + } + add_action('wp_ajax_bpml_ajax', 'bpml_ajax'); + add_action('bpml_ajax', 'bpml_activities_ajax'); + } + } + } else if (is_main_site ()) { + bpml_admin_message('

    ' . __('For BuddyPress Multilingual to work you must enable WPML and BuddyPress.') . '

    '); + } +} + +/** + * Adds hook for CSS styles and jQuery to client-side. + * + */ +function additional_css_js() { + wp_enqueue_style('sitepress-language-switcher', ICL_PLUGIN_URL . '/res/css/language-selector.css', array(), ICL_SITEPRESS_VERSION); + wp_enqueue_style('bpml', BPML_PLUGIN_URL . '/style.css', array(), BPML_VERSION); + wp_enqueue_script('bpml', BPML_PLUGIN_URL . '/scripts.js', array('jquery'), BPML_VERSION); +} + +/** + * Adds hook for Admin CSS styles and jQuery to admin-side. + * + */ +function admin_additional_css_js() { + wp_enqueue_style('bpml', BPML_PLUGIN_URL . '/style.css', array(), BPML_VERSION); + wp_enqueue_script('bpml', BPML_PLUGIN_URL . '/scripts.js', array('jquery'), BPML_VERSION); +} + +/** + * Returns HTML output for admin message. + * + * @param $message + * @param $class + * @return + */ +function bpml_message($message, $class = 'updated', $ID = NULL) { + $ID = is_null($ID) ? '' : ' id="' . $ID . '"'; + return '
    ' . $message . '
    '; +} + +/** + * Adds hook for admin_notices. + * + * @param $message + * @param $class + */ +function bpml_admin_message($message, $class = 'updated', + $action = 'admin_notices') { + add_action($action, create_function('$a=1', 'echo \'
    ' . $message . '
    \';')); +} + +/** + * Returns default BPML settings. + * + * @return + */ +function bpml_default_settings() { + return array( + 'debug' => 0, + 'activities' => array( + 'filter' => 0, + 'display_orphans' => 'all', + 'orphans_fix' => 0, + 'enable_google_translation' => 0, + 'show_activity_switcher' => 0, + ), + 'collected_activities' => array( + 'activity_update' => array( + 'translate_title' => 1, + 'translate_title_cache' => 1, + 'translate_content' => 1, + 'translate_content_cache' => 1, + 'translate_links' => -1 + ), + 'friendship_created' => array( + 'translate_title' => 1, + 'translate_title_cache' => 1, + 'translate_content' => 1, + 'translate_content_cache' => 1, + 'translate_links' => -1 + ), + 'joined_group' => array( + 'translate_title' => 1, + 'translate_title_cache' => 1, + 'translate_content' => 1, + 'translate_content_cache' => 1, + 'translate_links' => -1 + ), + 'created_group' => array( + 'translate_title' => 1, + 'translate_title_cache' => 1, + 'translate_content' => 1, + 'translate_content_cache' => 1, + 'translate_links' => -1 + ), + 'new_blog' => array( + 'translate_title' => 1, + 'translate_title_cache' => 1, + 'translate_content' => 1, + 'translate_content_cache' => 1, + 'translate_links' => -1 + ), + 'new_blog_post' => array( + 'translate_title' => 1, + 'translate_title_cache' => 1, + 'translate_content' => 1, + 'translate_content_cache' => 1, + 'translate_links' => 1 + ), + 'new_blog_comment' => array( + 'translate_title' => 1, + 'translate_title_cache' => 1, + 'translate_content' => 1, + 'translate_content_cache' => 1, + 'translate_links' => 1 + ), + 'activity_comment' => array( + 'translate_title' => 1, + 'translate_title_cache' => 1, + 'translate_content' => 1, + 'translate_content_cache' => 1, + 'translate_links' => -1 + ), + ), + ); +} + +/** + * Returns all settings. + * + * @return + */ +function bpml_get_settings() { + return apply_filters('bpml_default_settings', + get_option('bpml', bpml_default_settings())); +} + +/** + * Returns specific setting. + * + * @global $bpml + * @param $ID + * @param $default + * @return + */ +function bpml_get_setting($ID, $default = NULL) { + global $bpml; + if (isset($bpml[$ID])) { + return $bpml[$ID]; + } else if (!is_null($default)) { + $bpml[$ID] = $default; + bpml_save_setting($ID, $default); + return $default; + } +} + +/** + * Saves all settings. + * + * @global array $bpml + * @param $data + */ +function bpml_save_settings($data) { + global $bpml; + $bpml = $data; + update_option('bpml', $bpml); +} + +/** + * Saves specific setting. + * + * @global array $bpml + * @param $ID + * @param $data + */ +function bpml_save_setting($ID, $data) { + global $bpml; + $bpml[$ID] = $data; + update_option('bpml', $bpml); +} + +/** + * Deletes specific setting. + * + * @global $bpml + * @param $ID + */ +function bpml_delete_setting($ID) { + global $bpml; + if (isset($bpml[$ID])) { + unset($bpml[$ID]); + update_option('bpml', $bpml); + } +} + +/** + * Caches admin notices. + * + * Notices are kept until BPML admin page is visited. + * + * @global array $bpml + * @param $ID + * @param $message + */ +function bpml_store_admin_notice($ID, $message) { + global $bpml; + $bpml['admin_notices'][$ID] = $message; + bpml_save_setting('admin_notices', $bpml['admin_notices']); +} + +/** + * Caches frontend notices. + * + * @global array $bpml + * @param $ID + * @param $message + */ +function bpml_store_frontend_notice($ID, $message) { + global $bpml; + if (!isset($bpml['frontend_notices'])) { + $bpml['frontend_notices'] = array(); + } + $bpml['frontend_notices'][$ID] = $message; + bpml_save_setting('frontend_notices', $bpml['frontend_notices']); +} + +/** + * Displays frontend notices. + * + * @global array $bpml + * @param $ID + * @param $message + */ +function bpml_show_frontend_notices() { + global $bpml; + if (empty($bpml['frontend_notices'])) { + return ''; + } + foreach ($bpml['frontend_notices'] as $message) { + echo bpml_message('

    ' . $message . '

    ', 'bpml-frontend-notice'); + } + bpml_delete_setting('frontend_notices'); +} + +/** + * Fetches WPML language data from subblogs. + * + * @global $wpdb + * @param $blog_id + * @param $type + * @param $element_id + * @return + */ +function bpml_get_wpml_language_data($blog_id, $type = 'post_post', + $element_id = NULL, $switch_db = FALSE) { + static $sitepress_settings = array(); + + if (isset($sitepress_settings[$blog_id][$type][$element_id])) { + return $sitepress_settings[$blog_id][$type][$element_id]; + } + + $result = array(); + if ($switch_db) { + switch_to_blog($blog_id); + } + global $wpdb; + $table_name = $wpdb->prefix . 'icl_translations'; + if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { + if ($switch_db) { + restore_current_blog(); + } + return FALSE; + } + if (!isset($sitepress_settings[$blog_id])) { + $fetch = unserialize($wpdb->get_var("SELECT option_value FROM {$wpdb->prefix}options WHERE option_name='icl_sitepress_settings'")); + $sitepress_settings[$blog_id]['default_language'] = $fetch['default_language']; + } + switch ($type) { + case 'comment': + $post_id = $wpdb->get_var("SELECT comment_post_ID FROM {$wpdb->prefix}comments WHERE comment_ID=" . $element_id); + $post_type = 'post_' . $wpdb->get_var("SELECT post_type FROM {$wpdb->prefix}posts WHERE ID=" . $post_id); + $result['language'] = $wpdb->get_var("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE element_type='" . $post_type . "' AND element_id=" . $post_id); + break; + + default: + $result['language'] = $wpdb->get_var("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE element_type='" . $type . "' AND element_id=" . $element_id); + break; + } + $result['default_language'] = $sitepress_settings[$blog_id]['default_language']; + $sitepress_settings[$blog_id][$type][$element_id] = $result; + if ($switch_db) { + restore_current_blog(); + } + return $result; +} + +/** + * Tries to get language data for item. + * + * @global $sitepress + * @param $item + * @param $type + * @param $switch_db + * @return + */ +function bpml_get_item_language($item = NULL, $type = 'post_post', + $switch_db = FALSE) { + $lang = array(); + global $sitepress; + if ($type == 'post_post' && !empty($sitepress) && isset($_POST['icl_post_language'])) { // In moment of save if WPML is active + $lang['language'] = $_POST['icl_post_language']; + $lang['default_language'] = $sitepress->get_default_language(); + $lang['recorded_language'] = $sitepress->get_current_language(); + } else if (!is_null($item)) { // Check in DB + $lang = bpml_get_wpml_language_data($item->item_id, $type, $item->secondary_item_id, $switch_db); + if (!empty($lang)) { + $lang['recorded_language'] = $lang['default_language']; + } + } + // Try to get WPLANG + if (empty($lang) && !empty($sitepress)) { + $temp = get_site_option('WPLANG'); + if (!empty($temp)) { + if (strlen($temp) > 2) { + $temp = $wpdb->get_var("SELECT code FROM {$wpdb->prefix}icl_locale_map WHERE locale='" . $temp . "'"); + } + $lang['default_language'] = $lang['language'] = $lang['recorded_language'] = $temp; + } + } + // Try to get RSS lang + if (empty($lang)) { + $temp = get_site_option('rss_language'); + if (!empty($temp)) { + $lang['default_language'] = $lang['language'] = $lang['recorded_language'] = $temp; + } + } + return $lang; +} + +/** + * BPML AJAX hook. + */ +function bpml_ajax() { + do_action('bpml_ajax'); + exit; +} + + +/** + * Filters main navigation menu + * + * @global $sitepress + * @global $bp + * @global $sitepress_settings + * @param $items + * @return $items + */ +function nav_menu_filter($items) { + global $sitepress, $bp, $sitepress_settings; + $default_language = $sitepress->get_default_language(); + $additionalItems = ''; + + foreach($bp->active_components as $component => $value){ + $pos = @strpos($items, $component); + $show_menu = ($pos !== false) ? $show_menu = false : $show_menu = true; + } + + if(bp_is_page( BP_ACTIVITY_SLUG ) || bp_is_page( BP_MEMBERS_SLUG ) || bp_is_page( BP_GROUPS_SLUG ) || bp_is_page( BP_FORUMS_SLUG ) || bp_is_page( BP_BLOGS_SLUG )) + $currentLang = '/' . ICL_LANGUAGE_CODE; + else + bp_is_user() ? $currentLang = '/' . ICL_LANGUAGE_CODE : $currentLang = ''; + + if( $show_menu ){ + $item_class = ( bp_is_page( BP_ACTIVITY_SLUG ) ) ? $activity_class = 'current_page_item' : $activity_class = ''; + $item_class = ( bp_is_page( BP_MEMBERS_SLUG ) ) || bp_is_user() ? $members_class = 'current_page_item' : $members_class = ''; + $item_class = ( bp_is_page( BP_GROUPS_SLUG ) ) || bp_is_group() ? $groups_class = 'current_page_item' : $groups_class = ''; + $item_class = ( bp_is_page( BP_FORUMS_SLUG ) ) ? $forums_class = 'current_page_item' : $forums_class = ''; + $item_class = ( bp_is_page( BP_BLOGS_SLUG ) ) ? $blogs_class = 'current_page_item' : $blogs_class = ''; + + if(!$currentLang == '') : $currentLang = $currentLang . '/'; endif; + if($default_language == ICL_LANGUAGE_CODE) : $currentLang = $currentLang = '/'; endif; + + if ( bp_is_active( 'activity' ) ) : + $additionalItems .= '
  • ' . __('Activity') . '
  • '; + endif; + if ( bp_is_active( 'groups' ) ) : + $additionalItems .= '
  • ' . __('Groups') . '
  • '; + endif; + $additionalItems .= '
  • ' . __('Members') . '
  • '; + if ( bp_is_active( 'forums' ) ) : + $additionalItems .= '
  • ' . __('Forums') . '
  • '; + endif; + if ( bp_is_active( 'blogs' ) && is_multisite() ) : + $additionalItems .= '
  • ' . __('Blogs') . '
  • '; + endif; + } + + $items = $additionalItems . $items; + + return $items; +} + \ No newline at end of file diff --git a/wp-content/plugins/buddypress-multilingual/style.css b/wp-content/plugins/buddypress-multilingual/style.css new file mode 100644 index 0000000..75505c1 --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/style.css @@ -0,0 +1,117 @@ +#bpml-debug { + margin: 10px; +} +.bpml-debug { + padding: 5px; + margin: 0 0 10px 0; + -moz-border-radius: 3px 3px 3px 3px; +} +.bpml-debug-updated { + border: 1px solid #FFFFE0; + background-color: #FFFFE0; + color: #000000; +} +.bpml-debug-error { + border: 1px solid #FFFFFF; + background-color: #cc0000; + color: #FFFFFF; +} +#bpml_google_sectional_element { + margin-bottom: 10px; + border-left: 1px dotted #cccccc; + border-bottom: 1px dotted #cccccc; + padding: 0 15px; +} +/*.activity-header .bpml-goog-trans-control,*/ +/*.activity-header .bpml-goog-trans-control div,*/ +.activity-header .bpml-goog-trans-section, +.activity-header .bpml-goog-trans-section p, +.activity-header .bpml-goog-trans-control +/*.activity-header .bpml-goog-trans-section div */ +{ + float: left; +} +.activity-inreplyto .bpml-goog-trans-section, +.activity-inreplyto .bpml-goog-trans-section p, +.activity-inreplyto .bpml-goog-trans-control +{ +/* float: right;*/ +} +.activity-inreplyto .goog-te-sectional-gadget-link-text { + margin-right: 5px; +} +.bpml-translation-original-toggle-title { + float: left; + margin-right: 5px; +/* font-size: 0.8em;*/ +} +.bpml-translation-original-toggle-content { + margin-right: 5px; +/* font-size: 0.8em;*/ +} +.bpml-translation-original-wrapper { + display: none; +} +.bpml-translation-original-wrapper-content { + color: #000000; + background-color: #fbfafa; + border: 1px solid #cccccc; + padding: 5px 15px; + margin: 10px 0; +} +.bpml-admin-form { + background-color: #ffffff; + border: 1px solid #cccccc; + padding: 10px 25px; +} +.bpml-admin-form h4 { + margin: 10px 0 5px 0; +} +#bpml-collected-activities { + display: none; +} +.bpml-collected-activities-wrapper { + margin-bottom: 15px; + border: 1px solid #eeeeee; + padding: 0; + border-collapse: collapse; +} +.bpml-collected-activities-wrapper td { + padding: 2px 10px; + padding-right: 10px; +} +.bpml-collected-activities-wrapper tr:first-child td { + border-bottom: 1px solid #eeeeee; + background-color: #eeeeee; +} +.bpml-collected-activities-title { + font-style: italic; +} +ul.item-list li.bpml-activity-assign-language-wrapper { + border-bottom: 0px; +} +.bpml-activity-assign-language-wrapper form { + margin: 0; +} +.bpml-profiles-field-toggle-button { + margin-bottom: 5px; +} +div.bpml-frontend-notice p { + background: none repeat scroll 0 0 #DFFCD9; + color: #1A9B00; + display: block; + font-size: 12px; + padding: 10px 15px; + -moz-border-radius: 3px 3px 3px 3px; + border-bottom: 1px solid #C4E9BD; + border-right: 1px solid #C4E9BD; + font-weight: normal; + margin-top: 6px; + text-decoration: none; +} +div.bpml-frontend-notice { + clear: both; +} +div.bpml-frontend-notice { + margin: 15px 0; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress-multilingual/upgrade.php b/wp-content/plugins/buddypress-multilingual/upgrade.php new file mode 100644 index 0000000..72ce796 --- /dev/null +++ b/wp-content/plugins/buddypress-multilingual/upgrade.php @@ -0,0 +1,101 @@ +BuddyPress Multilingual: There has been problems with upgrade.

    '); + } + update_option('bpml_version', BPML_VERSION); +} + +function bpml_install() { + global $wpdb, $bpml; + + bpml_save_settings($bpml); + + // Profiles + $table_name = $wpdb->prefix . "bp_xprofile_data_bpml"; + if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { + $sql = "CREATE TABLE " . $table_name . " ( + id bigint(20) NOT NULL AUTO_INCREMENT, + field_id bigint(20) NOT NULL, + user_id bigint(20) NOT NULL, + value longtext, + lang varchar(10) NOT NULL, + PRIMARY KEY (id), + KEY field_id (field_id), + KEY user_id (user_id), + KEY lang (lang) + );"; + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + dbDelta($sql); + } + + // For users had 1.0.1 and earlier + bpml_upgrade_110(); +} + +function bpml_upgrade_110() { + global $bpml, $wpdb; + + // New activity + if (!isset($bpml['collected_activities']['new_blog'])) { + $bpml['collected_activities']['new_blog'] = array( + 'translate_title' => 1, + 'translate_title_cache' => 1, + 'translate_content' => 1, + 'translate_content_cache' => 1, + 'translate_links' => -1 + ); + } + + // Profiles + $table_name = $wpdb->prefix . "bp_xprofile_data_bpml"; + if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { + $sql = "CREATE TABLE " . $table_name . " ( + id bigint(20) NOT NULL AUTO_INCREMENT, + field_id bigint(20) NOT NULL, + user_id bigint(20) NOT NULL, + value longtext, + lang varchar(10) NOT NULL, + PRIMARY KEY (id), + KEY field_id (field_id), + KEY user_id (user_id), + KEY lang (lang) + );"; + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + dbDelta($sql); + } + if (!isset($bpml['profiles'])) { + $bpml['profiles'] = array('translation' => 'no'); + } + + bpml_save_settings($bpml); + + return TRUE; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/history.txt b/wp-content/plugins/buddypress-skeleton-component/history.txt new file mode 100644 index 0000000..f7cfeb9 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/history.txt @@ -0,0 +1,89 @@ +Version 1.6.1 ( October 20, 2011 ) +-------------------------------------------------------------- +- Removed deprecated function bp_core_get_userurl() + +Version 1.6 ( September 29, 2011 ) +-------------------------------------------------------------- +- Updated for BuddyPress 1.5 +- Updated to use BP_Component core class +- Refactored to store and retrieve data using WP custom post types rather than custom database tables +- Added a sitewide directory + +Version 1.5 ( July 18, 2011 ) +-------------------------------------------------------------- +- Updated for BuddyPress 1.2.9 +- Replaced deprecated _usermeta() functions +- Corrected template name in bp_example_screen_settings_menu() +- Fixed markup on notifications settings page +- Switched the loader function to hook to bp_include + +Version 1.4 ( February 23, 2009 ) +-------------------------------------------------------------- +- Updated for BuddyPress 1.2 +- Added support for template files bundled with a plugin. + +Version 1.3.1 ( November 3rd 2009 ) +-------------------------------------------------------------- +- Fixed "Cannot redeclare bp_example_register_widgets()" error. + +Version 1.3 ( September 29th 2009 ) +-------------------------------------------------------------- +- Updated component to use new features and functions of BuddyPress 1.1 + + +Version 1.2.1 ( June 10th 2009 ) +-------------------------------------------------------------- +- Fixed line ending bug causing invisible syntax error + + +Version 1.2.1 ( June 10th 2009 ) +-------------------------------------------------------------- +- Updated to support changes up to BuddyPress 1.0.1 (r1538) +- Added a check to make sure BuddyPress is installed and active before your component is loaded +- Switched out bp_fetch_user_fullname(), which is deprecated, for bp_core_get_user_displayname() +- Added get_() functions to template functions so that values can be returned inside of template loops as well as echoed +- Added WP_PLUGIN_DIR to all require() calls to provide absolute paths +- Added filters to bp_core_load_template() calls +- Applied security enhancement to bp-example-widgets. Instead of echoing a variable, now directly references the set option via attribute_escape() +- Added a missing stripslashes() to bp-example-notifications +- Added missing $wpdb and $bp global declarations to bp_example_tablename() +- Added max fallback to commented out groups widget example +- Fixed pagination bug for when the max value is more than the total number of items being returned +- Added deprecated.txt file to list all BuddyPress functions deprecated up to V1.0.1 +- Changed skeleton directory structure so all component files are located in bp-example folder. This is necessary to make require() work properly + + + +Version 1.2 ( April 25th 2009 ) +-------------------------------------------------------------- +Big thanks to Jeff Sayre for his help and changeset scouring for this version! + +- Updated to support changes up to BuddyPress 1.0-RC2 (r1406) +- Added "Do not run you component in /wp-content/plugins/buddypress/" notice +- Replaced BP_PLUGIN_URL calls with WP_PLUGIN_URL calls as custom components should not run in /buddypress/ dir. +- Removed require call to bp-core.php as this is no longer needed and will cause problems. +- Updated filters on internal settings to 'is_defined' calls (can then override in wp-config.php) +- Moved bp-example-admin.php require call to an admin function so it is only loaded in the admin area. +- Fixed missing translation function calls on strings +- Added 'recorded_time' parameter to record_activity() function +- Updated add_submenu() admin calls to use the new "BuddyPress" admin menu +- Added before save filters to database save() method. +- Added before and after save actions to save() method. +- Removed call to bp_example_add_activity_bullets_css() as will no longer work and is theme specific. +- Added much more emphasis on the importance of using wp_filter_kses() +- Updated custom template loop class to use 'user_id=1&per_page=10&max=30' WordPress style parameter support. +- Added wp_cache_get() object caching calls to show where data can be cached if used. + + +Version 1.1 ( February 10th 2009 ) +-------------------------------------------------------------- + +- Changed naming convention from 'component' to 'example' to avoid confusion +- Added wp_nonce_url() checking for security on user actions + + +Version 1.0 ( Feburary 7th 2009 ) +-------------------------------------------------------------- + +- Initial Release. + diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-actions.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-actions.php new file mode 100644 index 0000000..3e9cdb6 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-actions.php @@ -0,0 +1,34 @@ + \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-activity.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-activity.php new file mode 100644 index 0000000..f8500e7 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-activity.php @@ -0,0 +1,59 @@ + For example: "Andy high-fived John", "Andy posted a new update". + * 'type' => The type of action being carried out, for example 'new_friendship', 'joined_group'. This should be unique within your component. + * + * OPTIONAL PARAMS + * 'id' => The ID of an existing activity item that you want to update. + * 'content' => The content of your activity, if it has any, for example a photo, update content or blog post excerpt. + * 'component' => The slug of the component. + * 'primary_link' => The link for the title of the item when appearing in RSS feeds (defaults to the activity permalink) + * 'item_id' => The ID of the main piece of data being recorded, for example a group_id, user_id, forum_post_id - useful for filtering and deleting later on. + * 'user_id' => The ID of the user that this activity is being recorded for. Pass false if it's not for a user. + * 'recorded_time' => (optional) The time you want to set as when the activity was carried out (defaults to now) + * 'hide_sitewide' => Should this activity item appear on the site wide stream? + * 'secondary_item_id' => (optional) If the activity is more complex you may need a second ID. For example a group forum post may need the group_id AND the forum_post_id. + * ) + * + * Example usage would be: + * + * bp_example_record_activity( array( 'type' => 'new_highfive', 'action' => 'Andy high-fived John', 'user_id' => $bp->loggedin_user->id, 'item_id' => $bp->displayed_user->id ) ); + * + */ +function bp_example_record_activity( $args = '' ) { + global $bp; + + if ( !function_exists( 'bp_activity_add' ) ) + return false; + + $defaults = array( + 'id' => false, + 'user_id' => $bp->loggedin_user->id, + 'action' => '', + 'content' => '', + 'primary_link' => '', + 'component' => $bp->example->id, + 'type' => false, + 'item_id' => false, + 'secondary_item_id' => false, + 'recorded_time' => gmdate( "Y-m-d H:i:s" ), + 'hide_sitewide' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + return bp_activity_add( array( 'id' => $id, 'user_id' => $user_id, 'action' => $action, 'content' => $content, 'primary_link' => $primary_link, 'component' => $component, 'type' => $type, 'item_id' => $item_id, 'secondary_item_id' => $secondary_item_id, 'recorded_time' => $recorded_time, 'hide_sitewide' => $hide_sitewide ) ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-admin.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-admin.php new file mode 100644 index 0000000..6d31688 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-admin.php @@ -0,0 +1,140 @@ + +
    +

    +
    + +

    " . __( 'Settings Updated.', 'bp-example' ) . "

    " ?> + +
    + + + + + + + + + +
    + +
    + +
    +

    + +

    + + +
    + +charset) ) + $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; + + /** + * If you want to create new tables you'll need to install them on + * activation. + * + * You should try your best to use existing tables if you can. The + * activity stream and meta tables are very flexible. + * + * Write your table definition below, you can define multiple + * tables by adding SQL to the $sql array. + */ + $sql = array(); + $sql[] = "CREATE TABLE IF NOT EXISTS {$wpdb->base_prefix}bp_example ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + high_fiver_id bigint(20) NOT NULL, + recipient_id bigint(20) NOT NULL, + date_notified datetime NOT NULL, + KEY high_fiver_id (high_fiver_id), + KEY recipient_id (recipient_id) + ) {$charset_collate};"; + + //require_once( ABSPATH . 'wp-admin/upgrade.php' ); + + /** + * The dbDelta call is commented out so the example table is not installed. + * Once you define the SQL for your new table, uncomment this line to install + * the table. (Make sure you increment the BP_EXAMPLE_DB_VERSION constant though). + */ + dbDelta($sql); + + update_site_option( 'bp-example-db-version', BP_EXAMPLE_DB_VERSION ); +} +//add_action( 'admin_init', 'bp_example_install_tables' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-ajax.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-ajax.php new file mode 100644 index 0000000..53680a6 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-ajax.php @@ -0,0 +1,61 @@ +loggedin_user->id, $_POST['fid'] ) ) { + + if ( !friends_remove_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + echo __( 'Friendship could not be canceled.', 'bp-component' ); + } else { + echo '' . __( 'Add Friend', 'bp-component' ) . ''; + } + + } else if ( 'not_friends' == BP_Friends_Friendship::check_is_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + + if ( !friends_add_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + echo __( 'Friendship could not be requested.', 'bp-component'); + } else { + echo '' . __( 'Friendship Requested', 'bp-component' ) . ''; + } + + } else { + echo __( 'Request Pending', 'bp-component' ); + } + + return false; +} +//add_action( 'wp_ajax_addremove_friend', 'friends_ajax_addremove_friend' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-classes.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-classes.php new file mode 100644 index 0000000..e005149 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-classes.php @@ -0,0 +1,252 @@ + 0, + 'high_fiver_id' => 0, + 'recipient_id' => 0, + 'date' => date( 'Y-m-d H:i:s' ) + ); + + // Parse the defaults with the arguments passed + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + if ( $id ) { + $this->id = $id; + $this->populate( $this->id ); + } else { + foreach( $r as $key => $value ) { + $this->{$key} = $value; + } + } + } + + /** + * populate() + * + * This method will populate the object with a row from the database, based on the + * ID passed to the constructor. + */ + function populate() { + global $wpdb, $bp, $creds; + + if ( $row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->example->table_name} WHERE id = %d", $this->id ) ) ) { + $this->high_fiver_id = $row->high_fiver_id; + $this->recipient_id = $row->recipient_id; + $this->date = $row->date; + } + } + + /** + * save() + * + * This method will save an object to the database. It will dynamically switch between + * INSERT and UPDATE depending on whether or not the object already exists in the database. + */ + + function save() { + global $wpdb, $bp; + + /*** + * In this save() method, you should add pre-save filters to all the values you are + * saving to the database. This helps with two things - + * + * 1. Blanket filtering of values by plugins (for example if a plugin wanted to + * force a specific value for all saves) + * + * 2. Security - attaching a wp_filter_kses() call to all filters, so you are not + * saving potentially dangerous values to the database. + * + * It's very important that for number 2 above, you add a call like this for each + * filter to 'bp-example-filters.php' + * + * add_filter( 'example_data_fieldname1_before_save', 'wp_filter_kses' ); + */ + + $this->high_fiver_id = apply_filters( 'bp_example_data_high_fiver_id_before_save', $this->high_fiver_id, $this->id ); + $this->recipient_id = apply_filters( 'bp_example_data_recipient_id_before_save', $this->recipient_id, $this->id ); + $this->date = apply_filters( 'bp_example_data_date_before_save', $this->date, $this->id ); + + // Call a before save action here + do_action( 'bp_example_data_before_save', $this ); + + if ( $this->id ) { + // Set up the arguments for wp_insert_post() + $wp_update_post_args = array( + 'ID' => $this->id, + 'post_author' => $this->high_fiver_id, + 'post_title' => sprintf( __( '%1$s high-fives %2$s', 'bp-example' ), bp_core_get_user_displayname( $this->high_fiver_id ), bp_core_get_user_displayname( $this->recipient_id ) ) + ); + + // Save the post + $result = wp_update_post( $wp_update_post_args ); + + // We'll store the reciever's ID as postmeta + if ( $result ) { + update_post_meta( $result, 'bp_example_recipient_id', $this->recipient_id ); + } + } else { + // Set up the arguments for wp_insert_post() + $wp_insert_post_args = array( + 'post_status' => 'publish', + 'post_type' => 'example', + 'post_author' => $this->high_fiver_id, + 'post_title' => sprintf( __( '%1$s high-fives %2$s', 'bp-example' ), bp_core_get_user_displayname( $this->high_fiver_id ), bp_core_get_user_displayname( $this->recipient_id ) ) + ); + + // Save the post + $result = wp_insert_post( $wp_insert_post_args ); + + // We'll store the reciever's ID as postmeta + if ( $result ) { + update_post_meta( $result, 'bp_example_recipient_id', $this->recipient_id ); + } + } + + /* Add an after save action here */ + do_action( 'bp_example_data_after_save', $this ); + + return $result; + } + + /** + * Fire the WP_Query + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ + function get( $args = array() ) { + // Only run the query once + if ( empty( $this->query ) ) { + $defaults = array( + 'high_fiver_id' => 0, + 'recipient_id' => 0, + 'per_page' => 10, + 'paged' => 1 + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + $query_args = array( + 'post_status' => 'publish', + 'post_type' => 'example', + 'posts_per_page' => $per_page, + 'paged' => $paged, + 'meta_query' => array() + ); + + // Some optional query args + // Note that some values are cast as arrays. This allows you to query for multiple + // authors/recipients at a time + if ( $high_fiver_id ) { + $query_args['author'] = (array)$high_fiver_id; + } + + // We can filter by postmeta by adding a meta_query argument. Note that + if ( $recipient_id ) { + $query_args['meta_query'][] = array( + 'key' => 'bp_example_recipient_id', + 'value' => (array)$recipient_id, + 'compare' => 'IN' // Allows $recipient_id to be an array + ); + } + + // Run the query, and store as an object property, so we can access from + // other methods + $this->query = new WP_Query( $query_args ); + + // Let's also set up some pagination + $this->pag_links = paginate_links( array( + 'base' => add_query_arg( 'items_page', '%#%' ), + 'format' => '', + 'total' => ceil( (int) $this->query->found_posts / (int) $this->query->query_vars['posts_per_page'] ), + 'current' => (int) $paged, + 'prev_text' => '←', + 'next_text' => '→', + 'mid_size' => 1 + ) ); + } + } + + /** + * Part of our bp_example_has_high_fives() loop + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ + function have_posts() { + return $this->query->have_posts(); + } + + /** + * Part of our bp_example_has_high_fives() loop + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ + function the_post() { + return $this->query->the_post(); + } + + /** + * delete() + * + * This method will delete the corresponding row for an object from the database. + */ + function delete() { + return wp_trash_post( $this->id ); + } + + /* Static Functions */ + + /** + * Static functions can be used to bulk delete items in a table, or do something that + * doesn't necessarily warrant the instantiation of the class. + * + * Look at bp-core-classes.php for examples of mass delete. + */ + + function delete_all() { + + } + + function delete_by_user_id() { + + } +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-cssjs.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-cssjs.php new file mode 100644 index 0000000..e392cee --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-cssjs.php @@ -0,0 +1,22 @@ +current_component == $bp->example->slug ) + wp_enqueue_script( 'bp-example-js', plugins_url( '/bp-example/js/general.js' ) ); +} +add_action( 'template_redirect', 'bp_example_add_js', 1 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-filters.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-filters.php new file mode 100644 index 0000000..bd801da --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-filters.php @@ -0,0 +1,43 @@ + \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-functions.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-functions.php new file mode 100644 index 0000000..50ad796 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-functions.php @@ -0,0 +1,286 @@ +current_component != $bp->example->slug ) + return $found_template; + + foreach ( (array) $templates as $template ) { + if ( file_exists( STYLESHEETPATH . '/' . $template ) ) + $filtered_templates[] = STYLESHEETPATH . '/' . $template; + else + $filtered_templates[] = dirname( __FILE__ ) . '/templates/' . $template; + } + + $found_template = $filtered_templates[0]; + + return apply_filters( 'bp_example_load_template_filter', $found_template ); +} +add_filter( 'bp_located_template', 'bp_example_load_template_filter', 10, 2 ); + +/*** + * From now on you will want to add your own functions that are specific to the component you are developing. + * For example, in this section in the friends component, there would be functions like: + * friends_add_friend() + * friends_remove_friend() + * friends_check_friendship() + * + * Some guidelines: + * - Don't set up error messages in these functions, just return false if you hit a problem and + * deal with error messages in screen or action functions. + * + * - Don't directly query the database in any of these functions. Use database access classes + * or functions in your bp-example-classes.php file to fetch what you need. Spraying database + * access all over your plugin turns into a maintenance nightmare, trust me. + * + * - Try to include add_action() functions within all of these functions. That way others will + * find it easy to extend your component without hacking it to pieces. + */ + +/** + * bp_example_accept_terms() + * + * Accepts the terms and conditions screen for the logged in user. + * Records an activity stream item for the user. + */ +function bp_example_accept_terms() { + global $bp; + + /** + * First check the nonce to make sure that the user has initiated this + * action. Remember the wp_nonce_url() call? The second parameter is what + * you need to check for. + */ + check_admin_referer( 'bp_example_accept_terms' ); + + /*** + * Here is a good example of where we can post something to a users activity stream. + * The user has excepted the terms on screen two, and now we want to post + * "Andy accepted the really exciting terms and conditions!" to the stream. + */ + $user_link = bp_core_get_userlink( $bp->loggedin_user->id ); + + bp_example_record_activity( array( + 'type' => 'accepted_terms', + 'action' => apply_filters( 'bp_example_accepted_terms_activity_action', sprintf( __( '%s accepted the really exciting terms and conditions!', 'bp-example' ), $user_link ), $user_link ), + ) ); + + /* See bp_example_reject_terms() for an explanation of deleting activity items */ + if ( function_exists( 'bp_activity_delete') ) + bp_activity_delete( array( 'type' => 'rejected_terms', 'user_id' => $bp->loggedin_user->id ) ); + + /* Add a do_action here so other plugins can hook in */ + do_action( 'bp_example_accept_terms', $bp->loggedin_user->id ); + + /*** + * You'd want to do something here, like set a flag in the database, or set usermeta. + * just for the sake of the demo we're going to return true. + */ + + return true; +} + +/** + * bp_example_reject_terms() + * + * Rejects the terms and conditions screen for the logged in user. + * Records an activity stream item for the user. + */ +function bp_example_reject_terms() { + global $bp; + + check_admin_referer( 'bp_example_reject_terms' ); + + /*** + * In this example component, the user can reject the terms even after they have + * previously accepted them. + * + * If a user has accepted the terms previously, then this will be in their activity + * stream. We don't want both 'accepted' and 'rejected' in the activity stream, so + * we should remove references to the user accepting from all activity streams. + * A real world example of this would be a user deleting a published blog post. + */ + + $user_link = bp_core_get_userlink( $bp->loggedin_user->id ); + + /* Now record the new 'rejected' activity item */ + bp_example_record_activity( array( + 'type' => 'rejected_terms', + 'action' => apply_filters( 'bp_example_rejected_terms_activity_action', sprintf( __( '%s rejected the really exciting terms and conditions.', 'bp-example' ), $user_link ), $user_link ), + ) ); + + /* Delete any accepted_terms activity items for the user */ + if ( function_exists( 'bp_activity_delete') ) + bp_activity_delete( array( 'type' => 'accepted_terms', 'user_id' => $bp->loggedin_user->id ) ); + + do_action( 'bp_example_reject_terms', $bp->loggedin_user->id ); + + return true; +} + +/** + * bp_example_send_high_five() + * + * Sends a high five message to a user. Registers an notification to the user + * via their notifications menu, as well as sends an email to the user. + * + * Also records an activity stream item saying "User 1 high-fived User 2". + */ +function bp_example_send_highfive( $to_user_id, $from_user_id ) { + global $bp; + + check_admin_referer( 'bp_example_send_high_five' ); + + /** + * We'll store high-fives as usermeta, so we don't actually need + * to do any database querying. If we did, and we were storing them + * in a custom DB table, we'd want to reference a function in + * bp-example-classes.php that would run the SQL query. + */ + delete_user_meta( $to_user_id, 'high-fives' ); + /* Get existing fives */ + $existing_fives = maybe_unserialize( get_user_meta( $to_user_id, 'high-fives', true ) ); + + /* Check to see if the user has already high-fived. That's okay, but lets not + * store duplicate high-fives in the database. What's the point, right? + */ + if ( !in_array( $from_user_id, (array)$existing_fives ) ) { + $existing_fives[] = (int)$from_user_id; + + /* Now wrap it up and fire it back to the database overlords. */ + update_user_meta( $to_user_id, 'high-fives', serialize( $existing_fives ) ); + + // Let's also record it in our custom database tables + $db_args = array( + 'recipient_id' => (int)$to_user_id, + 'high_fiver_id' => (int)$from_user_id + ); + + $high_five = new BP_Example_Highfive( $db_args ); + $high_five->save(); + } + + /*** + * Now we've registered the new high-five, lets work on some notification and activity + * stream magic. + */ + + /*** + * Post a screen notification to the user's notifications menu. + * Remember, like activity streams we need to tell the activity stream component how to format + * this notification in bp_example_format_notifications() using the 'new_high_five' action. + */ + bp_core_add_notification( $from_user_id, $to_user_id, $bp->example->slug, 'new_high_five' ); + + /* Now record the new 'new_high_five' activity item */ + $to_user_link = bp_core_get_userlink( $to_user_id ); + $from_user_link = bp_core_get_userlink( $from_user_id ); + + bp_example_record_activity( array( + 'type' => 'rejected_terms', + 'action' => apply_filters( 'bp_example_new_high_five_activity_action', sprintf( __( '%s high-fived %s!', 'bp-example' ), $from_user_link, $to_user_link ), $from_user_link, $to_user_link ), + 'item_id' => $to_user_id, + ) ); + + /* We'll use this do_action call to send the email notification. See bp-example-notifications.php */ + do_action( 'bp_example_send_high_five', $to_user_id, $from_user_id ); + + return true; +} + +/** + * bp_example_get_highfives_for_user() + * + * Returns an array of user ID's for users who have high fived the user passed to the function. + */ +function bp_example_get_highfives_for_user( $user_id ) { + global $bp; + + if ( !$user_id ) + return false; + + return maybe_unserialize( get_user_meta( $user_id, 'high-fives', true ) ); +} + + +/** + * bp_example_remove_data() + * + * It's always wise to clean up after a user is deleted. This stops the database from filling up with + * redundant information. + */ +function bp_example_remove_data( $user_id ) { + /* You'll want to run a function here that will delete all information from any component tables + for this $user_id */ + + /* Remember to remove usermeta for this component for the user being deleted */ + delete_user_meta( $user_id, 'bp_example_some_setting' ); + + do_action( 'bp_example_remove_data', $user_id ); +} +add_action( 'wpmu_delete_user', 'bp_example_remove_data', 1 ); +add_action( 'delete_user', 'bp_example_remove_data', 1 ); + +/*** + * Object Caching Support ---- + * + * It's a good idea to implement object caching support in your component if it is fairly database + * intensive. This is not a requirement, but it will help ensure your component works better under + * high load environments. + * + * In parts of this example component you will see calls to wp_cache_get() often in template tags + * or custom loops where database access is common. This is where cached data is being fetched instead + * of querying the database. + * + * However, you will need to make sure the cache is cleared and updated when something changes. For example, + * the groups component caches groups details (such as description, name, news, number of members etc). + * But when those details are updated by a group admin, we need to clear the group's cache so the new + * details are shown when users view the group or find it in search results. + * + * We know that there is a do_action() call when the group details are updated called 'groups_settings_updated' + * and the group_id is passed in that action. We need to create a function that will clear the cache for the + * group, and then add an action that calls that function when the 'groups_settings_updated' is fired. + * + * Example: + * + * function groups_clear_group_object_cache( $group_id ) { + * wp_cache_delete( 'groups_group_' . $group_id ); + * } + * add_action( 'groups_settings_updated', 'groups_clear_group_object_cache' ); + * + * The "'groups_group_' . $group_id" part refers to the unique identifier you gave the cached object in the + * wp_cache_set() call in your code. + * + * If this has completely confused you, check the function documentation here: + * http://codex.wordpress.org/Function_Reference/WP_Cache + * + * If you're still confused, check how it works in other BuddyPress components, or just don't use it, + * but you should try to if you can (it makes a big difference). :) + */ + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-loader.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-loader.php new file mode 100644 index 0000000..12c1f73 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-loader.php @@ -0,0 +1,394 @@ +includes(); + + /** + * Put your component into the active components array, so that + * bp_is_active( 'example' ); + * returns true when appropriate. We have to do this manually, because non-core + * components are not saved as active components in the database. + */ + $bp->active_components[$this->id] = '1'; + + /** + * Hook the register_post_types() method. If you're using custom post types to store + * data (which is recommended), you will need to hook your function manually to + * 'init'. + */ + add_action( 'init', array( &$this, 'register_post_types' ) ); + } + + /** + * Include your component's files + * + * BP_Component has a method called includes(), which will automatically load your plugin's + * files, as long as they are properly named and arranged. BP_Component::includes() loops + * through the $includes array, defined below, and for each $file in the array, it tries + * to load files in the following locations: + * (1) $this->path . '/' . $file - For example, if your $includes array is defined as + * $includes = array( 'notifications.php', 'filters.php' ); + * BP_Component::includes() will try to load these files (assuming a typical WP + * setup): + * /wp-content/plugins/bp-example/notifications.php + * /wp-content/plugins/bp-example/filters.php + * Our includes function, listed below, uses a variation on this method, by specifying + * the 'includes' directory in our $includes array. + * (2) $this->path . '/bp-' . $this->id . '/' . $file - Assuming the same $includes array + * as above, BP will look for the following files: + * /wp-content/plugins/bp-example/bp-example/notifications.php + * /wp-content/plugins/bp-example/bp-example/filters.php + * (3) $this->path . '/bp-' . $this->id . '/' . 'bp-' . $this->id . '-' . $file . '.php' - + * This is the format that BuddyPress core components use to load their files. Given + * an $includes array like + * $includes = array( 'notifications', 'filters' ); + * BP looks for files at: + * /wp-content/plugins/bp-example/bp-example/bp-example-notifications.php + * /wp-content/plugins/bp-example/bp-example/bp-example-filters.php + * + * If you'd prefer not to use any of these naming or organizational schemas, you are not + * required to use parent::includes(); your own includes() method can require the files + * manually. For example: + * require( $this->path . '/includes/notifications.php' ); + * require( $this->path . '/includes/filters.php' ); + * + * Notice that this method is called directly in $this->__construct(). While this step is + * not necessary for BuddyPress core components, plugins are loaded later, and thus their + * includes() method must be invoked manually. + * + * Our example component includes a fairly large number of files. Your component may not + * need to have versions of all of these files. What follows is a short description of + * what each file does; for more details, open the file itself and see its inline docs. + * - -actions.php - Functions hooked to bp_actions, mainly used to catch action + * requests (save, delete, etc) + * - -screens.php - Functions hooked to bp_screens. These are the screen functions + * responsible for the display of your plugin's content. + * - -filters.php - Functions that are hooked via apply_filters() + * - -classes.php - Your plugin's classes. Depending on how you organize your + * plugin, this could mean: a database query class, a custom post + * type data schema, and so forth + * - -activity.php - Functions related to the BP Activity Component. This is where + * you put functions responsible for creating, deleting, and + * modifying activity items related to your component + * - -template.php - Template tags. These are functions that are called from your + * templates, or from your screen functions. If your plugin + * contains its own version of the WordPress Loop (such as + * bp_example_has_items()), those functions should go in this file. + * - -functions.php - Miscellaneous utility functions required by your component. + * - -notifications.php - Functions related to email notification, as well as the + * BuddyPress notifications that show up in the admin bar. + * - -widgets.php - If your plugin includes any sidebar widgets, define them in this + * file. + * - -buddybar.php - Functions related to the BuddyBar. + * - -adminbar.php - Functions related to the WordPress Admin Bar. + * - -cssjs.php - Here is where you set up and enqueue your CSS and JS. + * - -ajax.php - Functions used in the process of AJAX requests. + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ + function includes() { + + // Files to include + $includes = array( + 'includes/bp-example-actions.php', + 'includes/bp-example-screens.php', + 'includes/bp-example-filters.php', + 'includes/bp-example-classes.php', + 'includes/bp-example-activity.php', + 'includes/bp-example-template.php', + 'includes/bp-example-functions.php', + 'includes/bp-example-notifications.php', + 'includes/bp-example-widgets.php', + 'includes/bp-example-cssjs.php', + 'includes/bp-example-ajax.php' + ); + + parent::includes( $includes ); + + // As an example of how you might do it manually, let's include the functions used + // on the WordPress Dashboard conditionally: + if ( is_admin() || is_network_admin() ) { + include( BP_EXAMPLE_PLUGIN_DIR . '/includes/bp-example-admin.php' ); + } + } + + /** + * Set up your plugin's globals + * + * Use the parent::setup_globals() method to set up the key global data for your plugin: + * - 'slug' - This is the string used to create URLs when your component + * adds navigation underneath profile URLs. For example, + * in the URL http://testbp.com/members/boone/example, the + * 'example' portion of the URL is formed by the 'slug'. + * Site admins can customize this value by defining + * BP_EXAMPLE_SLUG in their wp-config.php or bp-custom.php + * files. + * - 'root_slug' - This is the string used to create URLs when your component + * adds navigation to the root of the site. In other words, + * you only need to define root_slug if your component is a + * "root component". Eg, in: + * http://testbp.com/example/test + * 'example' is a root slug. This should always be defined + * in terms of $bp->pages; see the example below. Site admins + * can customize this value by changing the permalink of the + * corresponding WP page in the Dashboard. NOTE: + * 'root_slug' requires that 'has_directory' is true. + * - 'has_directory' - Set this to true if your component requires a top-level + * directory, such as http://testbp.com/example. When + * 'has_directory' is true, BP will require that site admins + * associate a WordPress page with your component. NOTE: + * When 'has_directory' is true, you must also define your + * component's 'root_slug'; see previous item. Defaults to + * false. + * - 'notification_callback' - The name of the function that is used to format BP + * admin bar notifications for your component. + * - 'search_string' - If your component is a root component (has_directory), + * you can provide a custom string that will be used as the + * default text in the directory search box. + * - 'global_tables' - If your component creates custom database tables, store + * the names of the tables in a $global_tables array, so that + * they are available to other BP functions. + * + * You can also use this function to put data directly into the $bp global. + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + * + * @global obj $bp BuddyPress's global object + */ + function setup_globals() { + global $bp; + + // Defining the slug in this way makes it possible for site admins to override it + if ( !defined( 'BP_EXAMPLE_SLUG' ) ) + define( 'BP_EXAMPLE_SLUG', $this->id ); + + // Global tables for the example component. Build your table names using + // $bp->table_prefix (instead of hardcoding 'wp_') to ensure that your component + // works with $wpdb, multisite, and custom table prefixes. + $global_tables = array( + 'table_name' => $bp->table_prefix . 'bp_example' + ); + + // Set up the $globals array to be passed along to parent::setup_globals() + $globals = array( + 'slug' => BP_EXAMPLE_SLUG, + 'root_slug' => isset( $bp->pages->{$this->id}->slug ) ? $bp->pages->{$this->id}->slug : BP_EXAMPLE_SLUG, + 'has_directory' => true, // Set to false if not required + 'notification_callback' => 'bp_example_format_notifications', + 'search_string' => __( 'Search Examples...', 'buddypress' ), + 'global_tables' => $global_tables + ); + + // Let BP_Component::setup_globals() do its work. + parent::setup_globals( $globals ); + + // If your component requires any other data in the $bp global, put it there now. + $bp->{$this->id}->misc_data = '123'; + } + + /** + * Set up your component's navigation. + * + * The navigation elements created here are responsible for the main site navigation (eg + * Profile > Activity > Mentions), as well as the navigation in the BuddyBar. WP Admin Bar + * navigation is broken out into a separate method; see + * BP_Example_Component::setup_admin_bar(). + * + * @global obj $bp + */ + function setup_nav() { + // Add 'Example' to the main navigation + $main_nav = array( + 'name' => __( 'Example', 'bp-example' ), + 'slug' => bp_get_example_slug(), + 'position' => 80, + 'screen_function' => 'bp_example_screen_one', + 'default_subnav_slug' => 'screen-one' + ); + + $example_link = trailingslashit( bp_loggedin_user_domain() . bp_get_example_slug() ); + + // Add a few subnav items under the main Example tab + $sub_nav[] = array( + 'name' => __( 'Screen One', 'bp-example' ), + 'slug' => 'screen-one', + 'parent_url' => $example_link, + 'parent_slug' => bp_get_example_slug(), + 'screen_function' => 'bp_example_screen_one', + 'position' => 10 + ); + + // Add the subnav items to the friends nav item + $sub_nav[] = array( + 'name' => __( 'Screen Two', 'bp-example' ), + 'slug' => 'screen-two', + 'parent_url' => $example_link, + 'parent_slug' => bp_get_example_slug(), + 'screen_function' => 'bp_example_screen_two', + 'position' => 20 + ); + + parent::setup_nav( $main_nav, $sub_nav ); + + // If your component needs additional navigation menus that are not handled by + // BP_Component::setup_nav(), you can register them manually here. For example, + // if your component needs a subsection under a user's Settings menu, add + // it like this. See bp_example_screen_settings_menu() for more info + bp_core_new_subnav_item( array( + 'name' => __( 'Example', 'bp-example' ), + 'slug' => 'example-admin', + 'parent_slug' => bp_get_settings_slug(), + 'parent_url' => trailingslashit( bp_loggedin_user_domain() . bp_get_settings_slug() ), + 'screen_function' => 'bp_example_screen_settings_menu', + 'position' => 40, + 'user_has_access' => bp_is_my_profile() // Only the logged in user can access this on his/her profile + ) ); + } + + /** + * If your component needs to store data, it is highly recommended that you use WordPress + * custom post types for that data, instead of creating custom database tables. + * + * In the future, BuddyPress will have its own bp_register_post_types hook. For the moment, + * hook to init. See BP_Example_Component::__construct(). + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + * @see http://codex.wordpress.org/Function_Reference/register_post_type + */ + function register_post_types() { + // Set up some labels for the post type + $labels = array( + 'name' => __( 'High Fives', 'bp-example' ), + 'singular' => __( 'High Five', 'bp-example' ) + ); + + // Set up the argument array for register_post_type() + $args = array( + 'label' => __( 'High Fives', 'bp-example' ), + 'labels' => $labels, + 'public' => false, + 'show_ui' => true, + 'supports' => array( 'title' ) + ); + + // Register the post type. + // Here we are using $this->id ('example') as the name of the post type. You may + // choose to use a different name for the post type; if you register more than one, + // you will have to declare more names. + register_post_type( $this->id, $args ); + + parent::register_post_types(); + } + + function register_taxonomies() { + + } + +} + +/** + * Loads your component into the $bp global + * + * This function loads your component into the $bp global. By hooking to bp_loaded, we ensure that + * BP_Example_Component is loaded after BuddyPress's core components. This is a good thing because + * it gives us access to those components' functions and data, should our component interact with + * them. + * + * Keep in mind that, when this function is launched, your component has only started its setup + * routine. Using print_r( $bp->example ) or var_dump( $bp->example ) at the end of this function + * will therefore only give you a partial picture of your component. If you need to dump the content + * of your component for troubleshooting, try doing it at bp_init, ie + * function bp_example_var_dump() { + * global $bp; + * var_dump( $bp->example ); + * } + * add_action( 'bp_init', 'bp_example_var_dump' ); + * It goes without saying that you should not do this on a production site! + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ +function bp_example_load_core_component() { + global $bp; + + $bp->example = new BP_Example_Component; +} +add_action( 'bp_loaded', 'bp_example_load_core_component' ); + + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-notifications.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-notifications.php new file mode 100644 index 0000000..e6417e2 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-notifications.php @@ -0,0 +1,186 @@ + Notifications within a users profile page they will see + * settings to turn off notifications for each component. + * + * You can plug your custom notification settings into this page, so that when your + * component is active, the user will see options to turn off notifications that are + * specific to your component. + */ + + /** + * Each option is stored in a posted array notifications[SETTING_NAME] + * When saved, the SETTING_NAME is stored as usermeta for that user. + * + * For example, notifications[notification_friends_friendship_accepted] could be + * used like this: + * + * if ( 'no' == get_user_meta( $bp->displayed_user->id, 'notification_friends_friendship_accepted', true ) ) + * // don't send the email notification + * else + * // send the email notification. + */ + + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    id, 'notification_example_action_one', true ) || 'yes' == get_user_meta( $current_user->id, 'notification_example_action_one', true ) ) { ?>checked="checked" />id, 'notification_example_action_one') == 'no' ) { ?>checked="checked" />
    id, 'notification_example_action_two', true ) || 'yes' == get_user_meta( $current_user->id, 'notification_example_action_two', true ) ) { ?>checked="checked" />id, 'notification_example_action_two', true ) ) { ?>checked="checked" />
    +loggedin_user->id, $bp->example->slug, 'new_high_five' ); +} +add_action( 'bp_example_screen_one', 'bp_example_remove_screen_notifications' ); +add_action( 'xprofile_screen_display_profile', 'bp_example_remove_screen_notifications' ); + + +/** + * bp_example_format_notifications() + * + * The format notification function will take DB entries for notifications and format them + * so that they can be displayed and read on the screen. + * + * Notifications are "screen" notifications, that is, they appear on the notifications menu + * in the site wide navigation bar. They are not for email notifications. + * + * + * The recording is done by using bp_core_add_notification() which you can search for in this file for + * examples of usage. + */ +function bp_example_format_notifications( $action, $item_id, $secondary_item_id, $total_items ) { + global $bp; + + switch ( $action ) { + case 'new_high_five': + /* In this case, $item_id is the user ID of the user who sent the high five. */ + + /*** + * We don't want a whole list of similar notifications in a users list, so we group them. + * If the user has more than one action from the same component, they are counted and the + * notification is rendered differently. + */ + if ( (int)$total_items > 1 ) { + return apply_filters( 'bp_example_multiple_new_high_five_notification', '' . sprintf( __( '%d new high-fives, multi-five!', 'bp-example' ), (int)$total_items ) . '', $total_items ); + } else { + $user_fullname = bp_core_get_user_displayname( $item_id, false ); + $user_url = bp_core_get_user_domain( $item_id ); + return apply_filters( 'bp_example_single_new_high_five_notification', '' . sprintf( __( '%s sent you a high-five!', 'bp-example' ), $user_fullname ) . '', $user_fullname ); + } + break; + } + + do_action( 'bp_example_format_notifications', $action, $item_id, $secondary_item_id, $total_items ); + + return false; +} + +/** + * Notification functions are used to send email notifications to users on specific events + * They will check to see the users notification settings first, if the user has the notifications + * turned on, they will be sent a formatted email notification. + * + * You should use your own custom actions to determine when an email notification should be sent. + */ + +function bp_example_send_high_five_notification( $to_user_id, $from_user_id ) { + global $bp; + + /* Let's grab both user's names to use in the email. */ + $sender_name = bp_core_get_user_displayname( $from_user_id, false ); + $reciever_name = bp_core_get_user_displayname( $to_user_id, false ); + + /* We need to check to see if the recipient has opted not to recieve high-five emails */ + if ( 'no' == get_user_meta( (int)$to_user_id, 'notification_example_new_high_five', true ) ) + return false; + + /* Get the userdata for the reciever and sender, this will include usernames and emails that we need. */ + $reciever_ud = get_userdata( $to_user_id ); + $sender_ud = get_userdata( $from_user_id ); + + /* Now we need to construct the URL's that we are going to use in the email */ + $sender_profile_link = site_url( BP_MEMBERS_SLUG . '/' . $sender_ud->user_login . '/' . $bp->profile->slug ); + $sender_highfive_link = site_url( BP_MEMBERS_SLUG . '/' . $sender_ud->user_login . '/' . $bp->example->slug . '/screen-one' ); + $reciever_settings_link = site_url( BP_MEMBERS_SLUG . '/' . $reciever_ud->user_login . '/settings/notifications' ); + + /* Set up and send the message */ + $to = $reciever_ud->user_email; + $subject = '[' . get_blog_option( 1, 'blogname' ) . '] ' . sprintf( __( '%s high-fived you!', 'bp-example' ), stripslashes($sender_name) ); + + $message = sprintf( __( +'%s sent you a high-five! Why not send one back? + +To see %s\'s profile: %s + +To send %s a high five: %s + +--------------------- +', 'bp-example' ), $sender_name, $sender_name, $sender_profile_link, $sender_name, $sender_highfive_link ); + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'bp-example' ), $reciever_settings_link ); + + // Send it! + wp_mail( $to, $subject, $message ); +} +add_action( 'bp_example_send_high_five', 'bp_example_send_high_five_notification', 10, 2 ); + +?> diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-screens.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-screens.php new file mode 100644 index 0000000..922970e --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-screens.php @@ -0,0 +1,288 @@ +is_directory flag to true, which help other + // content to display content properly on your directory. + bp_update_is_directory( true, 'example' ); + + // Add an action so that plugins can add content or modify behavior + do_action( 'bp_example_directory_setup' ); + + bp_core_load_template( apply_filters( 'example_directory_template', 'example/index' ) ); + } +} +add_action( 'bp_screens', 'bp_example_directory_setup' ); + + +/** + * bp_example_screen_one() + * + * Sets up and displays the screen output for the sub nav item "example/screen-one" + */ +function bp_example_screen_one() { + global $bp; + + /** + * There are three global variables that you should know about and you will + * find yourself using often. + * + * $bp->current_component (string) + * This will tell you the current component the user is viewing. + * + * Example: If the user was on the page http://example.org/members/andy/groups/my-groups + * $bp->current_component would equal 'groups'. + * + * $bp->current_action (string) + * This will tell you the current action the user is carrying out within a component. + * + * Example: If the user was on the page: http://example.org/members/andy/groups/leave/34 + * $bp->current_action would equal 'leave'. + * + * $bp->action_variables (array) + * This will tell you which action variables are set for a specific action + * + * Example: If the user was on the page: http://example.org/members/andy/groups/join/34 + * $bp->action_variables would equal array( '34' ); + * + * There are three handy functions you can use for these purposes: + * bp_is_current_component() + * bp_is_current_action() + * bp_is_action_variable() + */ + + /* Add a do action here, so your component can be extended by others. */ + do_action( 'bp_example_screen_one' ); + + /**** + * Displaying Content + */ + + /**** + * OPTION 1: + * You've got a few options for displaying content. Your first option is to bundle template files + * with your plugin that will be used to output content. + * + * In an earlier function bp_example_load_template_filter() we set up a filter on the core BP template + * loading function that will make it first look in the plugin directory for template files. + * If it doesn't find any matching templates it will look in the active theme directory. + * + * This example component comes bundled with a template for screen one, so we can load that + * template to display what we need. If you copied this template from the plugin into your theme + * then it would load that one instead. This allows users to override templates in their theme. + */ + + /* This is going to look in wp-content/plugins/[plugin-name]/includes/templates/ first */ + bp_core_load_template( apply_filters( 'bp_example_template_screen_one', 'example/screen-one' ) ); + + /**** + * OPTION 2 (NOT USED FOR THIS SCREEN): + * If your component is simple, and you just want to insert some HTML into the user's active theme + * then you can use the bundle plugin template. + * + * There are two actions you need to hook into. One for the title, and one for the content. + * The functions you hook these into should simply output the content you want to display on the + * page. + * + * The follow lines are commented out because we are not using this method for this screen. + * You'd want to remove the OPTION 1 parts above and uncomment these lines if you want to use + * this option instead. + * + * Generally, this method of adding content is preferred, as it makes your plugin + * work better with a wider variety of themes. + */ + +// add_action( 'bp_template_title', 'bp_example_screen_one_title' ); +// add_action( 'bp_template_content', 'bp_example_screen_one_content' ); + +// bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); +} + /*** + * The second argument of each of the above add_action() calls is a function that will + * display the corresponding information. The functions are presented below: + */ + function bp_example_screen_one_title() { + _e( 'Screen One', 'bp-example' ); + } + + function bp_example_screen_one_content() { + global $bp; + + $high_fives = bp_example_get_highfives_for_user( $bp->displayed_user->id ); + + /** + * For security reasons, we MUST use the wp_nonce_url() function on any actions. + * This will stop naughty people from tricking users into performing actions without their + * knowledge or intent. + */ + $send_link = wp_nonce_url( $bp->displayed_user->domain . $bp->current_component . '/screen-one/send-h5', 'bp_example_send_high_five' ); + ?> +

    +

    high-five!', 'bp-example' ), $bp->displayed_user->fullname, $send_link ) ?>

    + + +

    + + + + + + + + +
    $user_id, 'width' => 25, 'height' => 25 ) ) ?> 
    + + + +

    + + loggedin_user->domain . $bp->example->slug . '/screen-two/accept', 'bp_example_accept_terms' ) . '">' . __( 'Accept', 'bp-example' ) . ''; + $reject_link = '' . __( 'Reject', 'bp-example' ) . ''; + ?> + +

    + loggedin_user->id, 'bp-example-option-one', attribute_escape( $_POST['bp-example-option-one'] ) ); + } + + add_action( 'bp_template_content_header', 'bp_example_screen_settings_menu_header' ); + add_action( 'bp_template_title', 'bp_example_screen_settings_menu_title' ); + add_action( 'bp_template_content', 'bp_example_screen_settings_menu_content' ); + + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); +} + + function bp_example_screen_settings_menu_header() { + _e( 'Example Settings Header', 'bp-example' ); + } + + function bp_example_screen_settings_menu_title() { + _e( 'Example Settings', 'bp-example' ); + } + + function bp_example_screen_settings_menu_content() { + global $bp, $bp_settings_updated; ?> + + +
    +

    +
    + + +
    + + loggedin_user->id, 'bp-example-option-one', true ) ) : ?> checked="checked" /> +

    + +

    + + + +
    + \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-template.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-template.php new file mode 100644 index 0000000..8990392 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-template.php @@ -0,0 +1,343 @@ + + * + * + * + *

    + * + * + * + * + * + *

    No items!

    + * + * + * + * Obviously, you'd want to be more specific than the word 'item'. + * + * In our example here, we've used a custom post type for storing and fetching our content. Though + * the custom post type method is recommended, you can also create custom database tables for this + * purpose. See bp-example-classes.php for more details. + * + */ + +function bp_example_has_items( $args = '' ) { + global $bp, $items_template; + + // This keeps us from firing the query more than once + if ( empty( $items_template ) ) { + /*** + * This function should accept arguments passes as a string, just the same + * way a 'query_posts()' call accepts parameters. + * At a minimum you should accept 'per_page' and 'max' parameters to determine + * the number of items to show per page, and the total number to return. + * + * e.g. bp_get_example_has_items( 'per_page=10&max=50' ); + */ + + /*** + * Set the defaults for the parameters you are accepting via the "bp_get_example_has_items()" + * function call + */ + $defaults = array( + 'high_fiver_id' => 0, + 'recipient_id' => 0, + 'per_page' => 10, + 'paged' => 1 + ); + + /*** + * This function will extract all the parameters passed in the string, and turn them into + * proper variables you can use in the code - $per_page, $max + */ + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + $items_template = new BP_Example_Highfive(); + $items_template->get( $r ); + } + + return $items_template->have_posts(); +} + +function bp_example_the_item() { + global $items_template; + return $items_template->query->the_post(); +} + +function bp_example_item_name() { + echo bp_example_get_item_name(); +} + /* Always provide a "get" function for each template tag, that will return, not echo. */ + function bp_example_get_item_name() { + global $items_template; + echo apply_filters( 'bp_example_get_item_name', $items_template->item->name ); // Example: $items_template->item->name; + } + +/** + * Echo "Viewing x of y pages" + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ +function bp_example_pagination_count() { + echo bp_example_get_pagination_count(); +} + /** + * Return "Viewing x of y pages" + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ + function bp_example_get_pagination_count() { + global $items_template; + + $pagination_count = sprintf( __( 'Viewing page %1$s of %2$s', 'bp-example' ), $items_template->query->query_vars['paged'], $items_template->query->max_num_pages ); + + return apply_filters( 'bp_example_get_pagination_count', $pagination_count ); + } + +/** + * Echo pagination links + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ +function bp_example_item_pagination() { + echo bp_example_get_item_pagination(); +} + /** + * return pagination links + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ + function bp_example_get_item_pagination() { + global $items_template; + return apply_filters( 'bp_example_get_item_pagination', $items_template->pag_links ); + } + +/** + * Echo the high-fiver avatar (post author) + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ +function bp_example_high_fiver_avatar( $args = array() ) { + echo bp_example_get_high_fiver_avatar( $args ); +} + /** + * Return the high-fiver avatar (the post author) + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + * + * @param mixed $args Accepts WP style arguments - either a string of URL params, or an array + * @return str The HTML for a user avatar + */ + function bp_example_get_high_fiver_avatar( $args = array() ) { + $defaults = array( + 'item_id' => get_the_author_meta( 'ID' ), + 'object' => 'user' + ); + + $r = wp_parse_args( $args, $defaults ); + + return bp_core_fetch_avatar( $r ); + } + +/** + * Echo the "title" of the high-five + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ +function bp_example_high_five_title() { + echo bp_example_get_high_five_title(); +} + /** + * Return the "title" of the high-five + * + * We'll assemble the title out of the available information. This way, we can insert + * fancy stuff link links, and secondary avatars. + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ + function bp_example_get_high_five_title() { + // First, set up the high fiver's information + $high_fiver_link = bp_core_get_userlink( get_the_author_meta( 'ID' ) ); + + // Next, get the information for the high five recipient + $recipient_id = get_post_meta( get_the_ID(), 'bp_example_recipient_id', true ); + $recipient_link = bp_core_get_userlink( $recipient_id ); + + // Use sprintf() to make a translatable message + $title = sprintf( __( '%1$s gave %2$s a high-five!', 'bp-example' ), $high_fiver_link, $recipient_link ); + + return apply_filters( 'bp_example_get_high_five_title', $title, $high_fiver_link, $recipient_link ); + } + +/** + * Is this page part of the Example component? + * + * Having a special function just for this purpose makes our code more readable elsewhere, and also + * allows us to place filter 'bp_is_example_component' for other components to interact with. + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + * + * @uses bp_is_current_component() + * @uses apply_filters() to allow this value to be filtered + * @return bool True if it's the example component, false otherwise + */ +function bp_is_example_component() { + $is_example_component = bp_is_current_component( 'example' ); + + return apply_filters( 'bp_is_example_component', $is_example_component ); +} + +/** + * Echo the component's slug + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ +function bp_example_slug() { + echo bp_get_example_slug(); +} + /** + * Return the component's slug + * + * Having a template function for this purpose is not absolutely necessary, but it helps to + * avoid too-frequent direct calls to the $bp global. + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + * + * @uses apply_filters() Filter 'bp_get_example_slug' to change the output + * @return str $example_slug The slug from $bp->example->slug, if it exists + */ + function bp_get_example_slug() { + global $bp; + + // Avoid PHP warnings, in case the value is not set for some reason + $example_slug = isset( $bp->example->slug ) ? $bp->example->slug : ''; + + return apply_filters( 'bp_get_example_slug', $example_slug ); + } + +/** + * Echo the component's root slug + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ +function bp_example_root_slug() { + echo bp_get_example_root_slug(); +} + /** + * Return the component's root slug + * + * Having a template function for this purpose is not absolutely necessary, but it helps to + * avoid too-frequent direct calls to the $bp global. + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + * + * @uses apply_filters() Filter 'bp_get_example_root_slug' to change the output + * @return str $example_root_slug The slug from $bp->example->root_slug, if it exists + */ + function bp_get_example_root_slug() { + global $bp; + + // Avoid PHP warnings, in case the value is not set for some reason + $example_root_slug = isset( $bp->example->root_slug ) ? $bp->example->root_slug : ''; + + return apply_filters( 'bp_get_example_root_slug', $example_root_slug ); + } + +/** + * Echo the total of all high-fives across the site + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ +function bp_example_total_high_five_count() { + echo bp_example_get_total_high_five_count(); +} + /** + * Return the total of all high-fives across the site + * + * The most straightforward way to get a post count is to run a WP_Query. In your own plugin + * you might consider storing data like this with update_option(), incrementing each time + * a new item is published. + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + * + * @return int + */ + function bp_example_get_total_high_five_count() { + $high_fives = new BP_Example_Highfive(); + $high_fives->get(); + + return apply_filters( 'bp_example_get_total_high_five_count', $high_fives->query->found_posts, $high_fives ); + } + +/** + * Echo the total of all high-fives given to a particular user + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + */ +function bp_example_total_high_five_count_for_user( $user_id = false ) { + echo bp_example_get_total_high_five_count_for_user( $user_id = false ); +} + /** + * Return the total of all high-fives given to a particular user + * + * The most straightforward way to get a post count is to run a WP_Query. In your own plugin + * you might consider storing data like this with update_option(), incrementing each time + * a new item is published. + * + * @package BuddyPress_Skeleton_Component + * @since 1.6 + * + * @return int + */ + function bp_example_get_total_high_five_count_for_user( $user_id = false ) { + // If no explicit user id is passed, fall back on the loggedin user + if ( !$user_id ) { + $user_id = bp_loggedin_user_id(); + } + + if ( !$user_id ) { + return 0; + } + + $high_fives = new BP_Example_Highfive(); + $high_fives->get( array( 'recipient_id' => $user_id ) ); + + return apply_filters( 'bp_example_get_total_high_five_count', $high_fives->query->found_posts, $high_fives ); + } + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-widgets.php b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-widgets.php new file mode 100644 index 0000000..d45ea6b --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/bp-example-widgets.php @@ -0,0 +1,71 @@ + + + + + + 200, 'per_page' => 25 ) ); + $per_page = strip_tags( $instance['per_page'] ); + $max_items = strip_tags( $instance['max_items'] ); + ?> + +

    +

    + \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/js/general.js b/wp-content/plugins/buddypress-skeleton-component/includes/js/general.js new file mode 100644 index 0000000..234db7c --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/js/general.js @@ -0,0 +1,13 @@ +jQuery(document).ready( function() { + // Put your JS in here, and it will run after the DOM has loaded. + + // jQuery.post( ajaxurl, { + // action: 'my_example_action', + // 'cookie': encodeURIComponent(document.cookie), + // 'parameter_1': 'some_value' + // }, + // function(response) { + // ... + // } ); + +}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/license.txt b/wp-content/plugins/buddypress-skeleton-component/includes/license.txt new file mode 100644 index 0000000..b5fcfa6 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/license.txt @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/templates/example/example-loop.php b/wp-content/plugins/buddypress-skeleton-component/includes/templates/example/example-loop.php new file mode 100644 index 0000000..0c2577a --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/templates/example/example-loop.php @@ -0,0 +1,82 @@ + + + + + + + + + + +
      + + + +
    • +
      + +
      + +
      +
      + + + +
      + +
      +
    • + + + +
    + + + + + + + +
    +

    +
    + + + + diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/templates/example/index.php b/wp-content/plugins/buddypress-skeleton-component/includes/templates/example/index.php new file mode 100644 index 0000000..2c374c9 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/templates/example/index.php @@ -0,0 +1,60 @@ + + + + + + +
    +
    + + + +
    + +

    + + + + + + + +
    + + + +
    + + + + + + + +
    + + + +
    +
    + + + + + + diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/templates/example/screen-one.php b/wp-content/plugins/buddypress-skeleton-component/includes/templates/example/screen-one.php new file mode 100644 index 0000000..a330386 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/templates/example/screen-one.php @@ -0,0 +1,49 @@ + + +
    +
    + +
    + +
    + +
    +
    +
      + +
    +
    +
    + +
    + + + +

    +

    high-five!', 'bp-example' ), bp_get_displayed_user_fullname(), wp_nonce_url( bp_displayed_user_domain() . bp_current_component() . '/screen-one/send-h5/', 'bp_example_send_high_five' ) ) ?>

    + + +

    + + + + + + + + +
    $user_id, 'width' => 25, 'height' => 25 ) ) ?> 
    + + +
    + +
    +
    + + + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/includes/templates/readme.txt b/wp-content/plugins/buddypress-skeleton-component/includes/templates/readme.txt new file mode 100644 index 0000000..8d93d79 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/includes/templates/readme.txt @@ -0,0 +1,13 @@ +You can bundle template files in your plugin that are used to output screens. + +By default these will be loaded when you call bp_core_load_template(), however if a user +copies a given template file into their active theme, they will override the templates in your plugin. That way users can style your templates for their own themes. + +If you make changes to the templates in future versions you will need to let users know what +has changes, so they can update their templates accordingly. + +Of course, templates are not required. You can just build screens in your plugin files with HTML. +However, this reduces flexbility for end users. + +For more information, see the functions bp_example_load_template_filter() for how template locations +are filtered, and bp_example_screen_one() for how they are loaded for a screen (all in bp-example-core.php) \ No newline at end of file diff --git a/wp-content/plugins/buddypress-skeleton-component/languages/bp-example.pot b/wp-content/plugins/buddypress-skeleton-component/languages/bp-example.pot new file mode 100644 index 0000000..0a003a1 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/languages/bp-example.pot @@ -0,0 +1,249 @@ +# Copyright (C) 2010 +# This file is distributed under the same license as the package. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/buddypress-skeleton-" +"component\n" +"POT-Creation-Date: 2011-09-29 16:11:57+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" + +#: includes/bp-example-template.php:113 +msgid "Viewing page %1$s of %2$s" +msgstr "" + +#: includes/bp-example-template.php:194 +msgid "%1$s gave %2$s a high-five!" +msgstr "" + +#: includes/bp-example-widgets.php:23 +msgid "Example Widget" +msgstr "" + +#: includes/bp-example-widgets.php:65 +msgid "Number of Items Per Page:" +msgstr "" + +#: includes/bp-example-widgets.php:66 +msgid "Max items to show:" +msgstr "" + +#: includes/bp-example-loader.php:68 includes/bp-example-loader.php:276 +#: includes/bp-example-loader.php:312 includes/bp-example-notifications.php:50 +msgid "Example" +msgstr "" + +#: includes/bp-example-loader.php:252 +msgid "Search Examples..." +msgstr "" + +#: includes/bp-example-loader.php:287 includes/bp-example-screens.php:120 +msgid "Screen One" +msgstr "" + +#: includes/bp-example-loader.php:297 includes/bp-example-screens.php:213 +msgid "Screen Two" +msgstr "" + +#: includes/bp-example-loader.php:336 includes/bp-example-loader.php:342 +msgid "High Fives" +msgstr "" + +#: includes/bp-example-loader.php:337 +msgid "High Five" +msgstr "" + +#: includes/bp-example-actions.php:21 +msgid "No self-fives! :)" +msgstr "" + +#: includes/bp-example-actions.php:24 +msgid "High-five sent!" +msgstr "" + +#: includes/bp-example-actions.php:26 +msgid "High-five could not be sent." +msgstr "" + +#: includes/templates/example/example-loop.php:77 +msgid "There were no high-fives found." +msgstr "" + +#: includes/templates/example/screen-one.php:26 +#: includes/bp-example-screens.php:135 +msgid "Welcome to Screen One" +msgstr "" + +#: includes/templates/example/screen-one.php:27 +#: includes/bp-example-screens.php:136 +msgid "Send %s a high-five!" +msgstr "" + +#: includes/templates/example/screen-one.php:30 +#: includes/bp-example-screens.php:139 +msgid "Received High Fives!" +msgstr "" + +#: includes/templates/example/index.php:22 +msgid "High Fives Directory" +msgstr "" + +#: includes/templates/example/index.php:30 +msgid "All High Fives %s" +msgstr "" + +#: includes/bp-example-functions.php:90 +msgid "%s accepted the really exciting terms and conditions!" +msgstr "" + +#: includes/bp-example-functions.php:134 +msgid "%s rejected the really exciting terms and conditions." +msgstr "" + +#: includes/bp-example-functions.php:206 +msgid "%s high-fived %s!" +msgstr "" + +#: includes/bp-example-classes.php:111 includes/bp-example-classes.php:127 +msgid "%1$s high-fives %2$s" +msgstr "" + +#: includes/bp-example-notifications.php:51 +msgid "Yes" +msgstr "" + +#: includes/bp-example-notifications.php:52 +msgid "No" +msgstr "" + +#: includes/bp-example-notifications.php:59 +msgid "Action One" +msgstr "" + +#: includes/bp-example-notifications.php:65 +msgid "Action Two" +msgstr "" + +#: includes/bp-example-notifications.php:123 +msgid "Multiple high-fives" +msgstr "" + +#: includes/bp-example-notifications.php:123 +msgid "%d new high-fives, multi-five!" +msgstr "" + +#: includes/bp-example-notifications.php:127 +msgid "%s sent you a high-five!" +msgstr "" + +#: includes/bp-example-notifications.php:167 +msgid "%s high-fived you!" +msgstr "" + +#: includes/bp-example-notifications.php:169 +msgid "" +"%s sent you a high-five! Why not send one back?\n" +"\n" +"To see %s's profile: %s\n" +"\n" +"To send %s a high five: %s\n" +"\n" +"---------------------\n" +msgstr "" + +#: includes/bp-example-notifications.php:179 +msgid "To disable these notifications please log in and go to: %s" +msgstr "" + +#: includes/bp-example-ajax.php:40 +msgid "Friendship could not be canceled." +msgstr "" + +#: includes/bp-example-ajax.php:42 +msgid "Add Friend" +msgstr "" + +#: includes/bp-example-ajax.php:48 +msgid "Friendship could not be requested." +msgstr "" + +#: includes/bp-example-ajax.php:50 +msgid "Friendship Requested" +msgstr "" + +#: includes/bp-example-ajax.php:54 +msgid "Request Pending" +msgstr "" + +#: includes/bp-example-screens.php:170 +msgid "Terms were accepted!" +msgstr "" + +#: includes/bp-example-screens.php:173 +msgid "Terms could not be accepted." +msgstr "" + +#: includes/bp-example-screens.php:186 +msgid "Terms were rejected!" +msgstr "" + +#: includes/bp-example-screens.php:189 +msgid "Terms could not be rejected." +msgstr "" + +#: includes/bp-example-screens.php:219 +msgid "Welcome to Screen Two" +msgstr "" + +#: includes/bp-example-screens.php:222 +msgid "Accept" +msgstr "" + +#: includes/bp-example-screens.php:223 +msgid "Reject" +msgstr "" + +#: includes/bp-example-screens.php:226 +msgid "You must %s or %s the terms of use policy." +msgstr "" + +#: includes/bp-example-screens.php:257 +msgid "Example Settings Header" +msgstr "" + +#: includes/bp-example-screens.php:261 +msgid "Example Settings" +msgstr "" + +#: includes/bp-example-screens.php:269 +msgid "Changes Saved." +msgstr "" + +#: includes/bp-example-screens.php:275 +msgid "Do you love clicking checkboxes?" +msgstr "" + +#: includes/bp-example-screens.php:277 includes/bp-example-admin.php:72 +msgid "Save Settings" +msgstr "" + +#: includes/bp-example-admin.php:25 includes/bp-example-admin.php:51 +msgid "Example Admin" +msgstr "" + +#: includes/bp-example-admin.php:54 +msgid "Settings Updated." +msgstr "" + +#: includes/bp-example-admin.php:60 +msgid "Option One" +msgstr "" + +#: includes/bp-example-admin.php:65 +msgid "Option Two" +msgstr "" diff --git a/wp-content/plugins/buddypress-skeleton-component/loader.php b/wp-content/plugins/buddypress-skeleton-component/loader.php new file mode 100644 index 0000000..1bde30f --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/loader.php @@ -0,0 +1,82 @@ +' ) ) + require( dirname( __FILE__ ) . '/includes/bp-example-loader.php' ); +} +add_action( 'bp_include', 'bp_example_init' ); + +/* Put setup procedures to be run when the plugin is activated in the following function */ +function bp_example_activate() { + +} +register_activation_hook( __FILE__, 'bp_example_activate' ); + +/* On deacativation, clean up anything your component has added. */ +function bp_example_deactivate() { + /* You might want to delete any options or tables that your component created. */ +} +register_deactivation_hook( __FILE__, 'bp_example_deactivate' ); +?> diff --git a/wp-content/plugins/buddypress-skeleton-component/readme.txt b/wp-content/plugins/buddypress-skeleton-component/readme.txt new file mode 100644 index 0000000..d836337 --- /dev/null +++ b/wp-content/plugins/buddypress-skeleton-component/readme.txt @@ -0,0 +1,27 @@ +=== Plugin Name === +Contributors: apeatling, jeffsayre, boonebgorges +Tags: buddypress +Requires at least: WordPress 3.2, BuddyPress 1.5 +Tested up to: WordPress 3.2.1 / BuddyPress 1.5 +Stable tag: 1.6.1 + +This is a bare-bones component that should provide a good starting block to building your own custom BuddyPress component. + +== Description == + +This is a bare-bones component that should provide a good starting block to building your own custom BuddyPress component. + +It includes some of the functions that will make it easy to get your component registering activity stream items, posting notifications, setting up widgets, adding AJAX functionality and also structuring your component in a standardized way. + +This plugin is not designed for functional use, it is designed as an educational starting point. + +Please note that this plugin has been updated for BuddyPress 1.5, and uses features of BP 1.5 (in particular, BP_Component) that are not available in earlier versions of BuddyPress. + +== Installation == + +Download and upload the plugin to your plugins folder. You can activate it to test the examples it provides. You will want to edit and use the plugin to learn or as a base, it is not designed to be a plugin for functional use. + +== Notes == + +History.txt - contains all the changes since version 1.0 +License.txt - contains the licensing details for this component. diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-actions.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-actions.php new file mode 100644 index 0000000..fa0e23e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-actions.php @@ -0,0 +1,530 @@ + bp_action_variable( 0 ), 'show_hidden' => true ) ); + + // 404 if activity does not exist + if ( empty( $activity['activities'][0] ) ) { + bp_do_404(); + return; + + } else { + $activity = $activity['activities'][0]; + } + + // Do not redirect at default + $redirect = false; + + // Redirect based on the type of activity + if ( bp_is_active( 'groups' ) && $activity->component == $bp->groups->id ) { + + // Activity is a user update + if ( !empty( $activity->user_id ) ) { + $redirect = bp_core_get_user_domain( $activity->user_id, $activity->user_nicename, $activity->user_login ) . bp_get_activity_slug() . '/' . $activity->id . '/'; + + // Activity is something else + } else { + + // Set redirect to group activity stream + if ( $group = groups_get_group( array( 'group_id' => $activity->item_id ) ) ) { + $redirect = bp_get_group_permalink( $group ) . bp_get_activity_slug() . '/' . $activity->id . '/'; + } + } + + // Set redirect to users' activity stream + } else { + $redirect = bp_core_get_user_domain( $activity->user_id, $activity->user_nicename, $activity->user_login ) . bp_get_activity_slug() . '/' . $activity->id; + } + + // Allow redirect to be filtered + if ( !$redirect = apply_filters_ref_array( 'bp_activity_permalink_redirect_url', array( $redirect, &$activity ) ) ) + bp_core_redirect( bp_get_root_domain() ); + + // Redirect to the actual activity permalink page + bp_core_redirect( $redirect ); +} +add_action( 'bp_actions', 'bp_activity_action_permalink_router' ); + +/** + * Delete specific activity item and redirect to previous page. + * + * @since 1.1.0 + * + * @param int $activity_id Activity id to be deleted. Defaults to 0. + * + * @global object $bp BuddyPress global settings + * @uses bp_is_activity_component() + * @uses bp_is_current_action() + * @uses bp_action_variable() + * @uses check_admin_referer() + * @uses bp_activity_user_can_delete() + * @uses do_action() Calls 'bp_activity_before_action_delete_activity' hook to allow actions to be taken before the activity is deleted. + * @uses bp_activity_delete() + * @uses bp_core_add_message() + * @uses do_action() Calls 'bp_activity_action_delete_activity' hook to allow actions to be taken after the activity is deleted. + * @uses bp_core_redirect() + * + * @return bool False on failure + */ +function bp_activity_action_delete_activity( $activity_id = 0 ) { + global $bp; + + // Not viewing activity or action is not delete + if ( !bp_is_activity_component() || !bp_is_current_action( 'delete' ) ) + return false; + + if ( empty( $activity_id ) && bp_action_variable( 0 ) ) + $activity_id = (int) bp_action_variable( 0 ); + + // Not viewing a specific activity item + if ( empty( $activity_id ) ) + return false; + + // Check the nonce + check_admin_referer( 'bp_activity_delete_link' ); + + // Load up the activity item + $activity = new BP_Activity_Activity( $activity_id ); + + // Check access + if ( empty( $activity->user_id ) || !bp_activity_user_can_delete( $activity ) ) + return false; + + // Call the action before the delete so plugins can still fetch information about it + do_action( 'bp_activity_before_action_delete_activity', $activity_id, $activity->user_id ); + + // Delete the activity item and provide user feedback + if ( bp_activity_delete( array( 'id' => $activity_id, 'user_id' => $activity->user_id ) ) ) + bp_core_add_message( __( 'Activity deleted successfully', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was an error when deleting that activity', 'buddypress' ), 'error' ); + + do_action( 'bp_activity_action_delete_activity', $activity_id, $activity->user_id ); + + // Check for the redirect query arg, otherwise let WP handle things + if ( !empty( $_GET['redirect_to'] ) ) + bp_core_redirect( esc_url( $_GET['redirect_to'] ) ); + else + bp_core_redirect( wp_get_referer() ); +} +add_action( 'bp_actions', 'bp_activity_action_delete_activity' ); + +/** + * Post user/group activity update. + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses is_user_logged_in() + * @uses bp_is_activity_component() + * @uses bp_is_current_action() + * @uses check_admin_referer() + * @uses apply_filters() To call 'bp_activity_post_update_content' hook. + * @uses apply_filters() To call 'bp_activity_post_update_object' hook. + * @uses apply_filters() To call 'bp_activity_post_update_item_id' hook. + * @uses bp_core_add_message() + * @uses bp_core_redirect() + * @uses bp_activity_post_update() + * @uses groups_post_update() + * @uses bp_core_redirect() + * @uses apply_filters() To call 'bp_activity_custom_update' hook. + * + * @return bool False on failure + */ +function bp_activity_action_post_update() { + global $bp; + + // Do not proceed if user is not logged in, not viewing activity, or not posting + if ( !is_user_logged_in() || !bp_is_activity_component() || !bp_is_current_action( 'post' ) ) + return false; + + // Check the nonce + check_admin_referer( 'post_update', '_wpnonce_post_update' ); + + // Get activity info + $content = apply_filters( 'bp_activity_post_update_content', $_POST['whats-new'] ); + $object = apply_filters( 'bp_activity_post_update_object', $_POST['whats-new-post-object'] ); + $item_id = apply_filters( 'bp_activity_post_update_item_id', $_POST['whats-new-post-in'] ); + + // No activity content so provide feedback and redirect + if ( empty( $content ) ) { + bp_core_add_message( __( 'Please enter some content to post.', 'buddypress' ), 'error' ); + bp_core_redirect( wp_get_referer() ); + } + + // No existing item_id + if ( empty( $item_id ) ) { + $activity_id = bp_activity_post_update( array( 'content' => $content ) ); + + // Post to groups object + } else if ( 'groups' == $object && bp_is_active( 'groups' ) ) { + if ( (int)$item_id ) { + $activity_id = groups_post_update( array( 'content' => $content, 'group_id' => $item_id ) ); + } + + // Special circumstance so let filters handle it + } else { + $activity_id = apply_filters( 'bp_activity_custom_update', $object, $item_id, $content ); + } + + // Provide user feedback + if ( !empty( $activity_id ) ) + bp_core_add_message( __( 'Update Posted!', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was an error when posting your update, please try again.', 'buddypress' ), 'error' ); + + // Redirect + bp_core_redirect( wp_get_referer() ); +} +add_action( 'bp_actions', 'bp_activity_action_post_update' ); + +/** + * Post new activity comment. + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses is_user_logged_in() + * @uses bp_is_activity_component() + * @uses bp_is_current_action() + * @uses check_admin_referer() + * @uses apply_filters() To call 'bp_activity_post_comment_activity_id' hook. + * @uses apply_filters() To call 'bp_activity_post_comment_content' hook. + * @uses bp_core_add_message() + * @uses bp_core_redirect() + * @uses bp_activity_new_comment() + * @uses wp_get_referer() + * + * @return bool False on failure + */ +function bp_activity_action_post_comment() { + global $bp; + + if ( !is_user_logged_in() || ( bp_is_activity_component() ) || !bp_is_current_action( 'reply' ) ) + return false; + + // Check the nonce + check_admin_referer( 'new_activity_comment', '_wpnonce_new_activity_comment' ); + + $activity_id = apply_filters( 'bp_activity_post_comment_activity_id', $_POST['comment_form_id'] ); + $content = apply_filters( 'bp_activity_post_comment_content', $_POST['ac_input_' . $activity_id] ); + + if ( empty( $content ) ) { + bp_core_add_message( __( 'Please do not leave the comment area blank.', 'buddypress' ), 'error' ); + bp_core_redirect( wp_get_referer() . '#ac-form-' . $activity_id ); + } + + $comment_id = bp_activity_new_comment( array( + 'content' => $content, + 'activity_id' => $activity_id, + 'parent_id' => $parent_id + )); + + if ( !empty( $comment_id ) ) + bp_core_add_message( __( 'Reply Posted!', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was an error posting that reply, please try again.', 'buddypress' ), 'error' ); + + bp_core_redirect( wp_get_referer() . '#ac-form-' . $activity_id ); +} +add_action( 'bp_actions', 'bp_activity_action_post_comment' ); + +/** + * Mark activity as favorite. + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses is_user_logged_in() + * @uses bp_is_activity_component() + * @uses bp_is_current_action() + * @uses check_admin_referer() + * @uses bp_activity_add_user_favorite() + * @uses bp_action_variable() + * @uses bp_core_add_message() + * @uses bp_core_redirect() + * @uses wp_get_referer() + * + * @return bool False on failure + */ +function bp_activity_action_mark_favorite() { + global $bp; + + if ( !is_user_logged_in() || ( bp_is_activity_component() ) || !bp_is_current_action( 'favorite' ) ) + return false; + + // Check the nonce + check_admin_referer( 'mark_favorite' ); + + if ( bp_activity_add_user_favorite( bp_action_variable( 0 ) ) ) + bp_core_add_message( __( 'Activity marked as favorite.', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was an error marking that activity as a favorite, please try again.', 'buddypress' ), 'error' ); + + bp_core_redirect( wp_get_referer() . '#activity-' . bp_action_variable( 0 ) ); +} +add_action( 'bp_actions', 'bp_activity_action_mark_favorite' ); + +/** + * Remove activity from favorites. + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses is_user_logged_in() + * @uses bp_is_activity_component() + * @uses bp_is_current_action() + * @uses check_admin_referer() + * @uses bp_activity_remove_user_favorite() + * @uses bp_action_variable() + * @uses bp_core_add_message() + * @uses bp_core_redirect() + * @uses wp_get_referer() + * + * @return bool False on failure + */ +function bp_activity_action_remove_favorite() { + global $bp; + + if ( !is_user_logged_in() || ( bp_is_activity_component() ) || !bp_is_current_action( 'unfavorite' ) ) + return false; + + // Check the nonce + check_admin_referer( 'unmark_favorite' ); + + if ( bp_activity_remove_user_favorite( bp_action_variable( 0 ) ) ) + bp_core_add_message( __( 'Activity removed as favorite.', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was an error removing that activity as a favorite, please try again.', 'buddypress' ), 'error' ); + + bp_core_redirect( wp_get_referer() . '#activity-' . bp_action_variable( 0 ) ); +} +add_action( 'bp_actions', 'bp_activity_action_remove_favorite' ); + +/** + * Load the sitewide feed. + * + * @since 1.0.0 + * + * @global object $bp BuddyPress global settings + * @global object $wp_query + * @uses bp_is_activity_component() + * @uses bp_is_current_action() + * @uses bp_is_user() + * @uses status_header() + * + * @return bool False on failure + */ +function bp_activity_action_sitewide_feed() { + global $bp, $wp_query; + + if ( !bp_is_activity_component() || !bp_is_current_action( 'feed' ) || bp_is_user() || !empty( $bp->groups->current_group ) ) + return false; + + $wp_query->is_404 = false; + status_header( 200 ); + + include_once( 'feeds/bp-activity-sitewide-feed.php' ); + die; +} +add_action( 'bp_actions', 'bp_activity_action_sitewide_feed' ); + +/** + * Load a user's personal feed. + * + * @since 1.0.0 + * + * @global object $bp BuddyPress global settings + * @global object $wp_query + * @uses bp_is_user_activity() + * @uses bp_is_current_action() + * @uses status_header() + * + * @return bool False on failure + */ +function bp_activity_action_personal_feed() { + global $bp, $wp_query; + + if ( !bp_is_user_activity() || !bp_is_current_action( 'feed' ) ) + return false; + + $wp_query->is_404 = false; + status_header( 200 ); + + include_once( 'feeds/bp-activity-personal-feed.php' ); + die; +} +add_action( 'bp_actions', 'bp_activity_action_personal_feed' ); + +/** + * Load a user's friends feed. + * + * @since 1.0.0 + * + * @global object $bp BuddyPress global settings + * @global object $wp_query + * @uses bp_is_active() + * @uses bp_is_user_activity() + * @uses bp_is_current_action() + * @uses bp_get_friends_slug() + * @uses bp_is_action_variable() + * @uses status_header() + * + * @return bool False on failure + */ +function bp_activity_action_friends_feed() { + global $bp, $wp_query; + + if ( !bp_is_active( 'friends' ) || !bp_is_user_activity() || !bp_is_current_action( bp_get_friends_slug() ) || !bp_is_action_variable( 'feed', 0 ) ) + return false; + + $wp_query->is_404 = false; + status_header( 200 ); + + include_once( 'feeds/bp-activity-friends-feed.php' ); + die; +} +add_action( 'bp_actions', 'bp_activity_action_friends_feed' ); + +/** + * Load a user's my groups feed. + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @global object $wp_query + * @uses bp_is_active() + * @uses bp_is_user_activity() + * @uses bp_is_current_action() + * @uses bp_get_groups_slug() + * @uses bp_is_action_variable() + * @uses status_header() + * + * @return bool False on failure + */ +function bp_activity_action_my_groups_feed() { + global $bp, $wp_query; + + if ( !bp_is_active( 'groups' ) || !bp_is_user_activity() || !bp_is_current_action( bp_get_groups_slug() ) || !bp_is_action_variable( 'feed', 0 ) ) + return false; + + $wp_query->is_404 = false; + status_header( 200 ); + + include_once( 'feeds/bp-activity-mygroups-feed.php' ); + die; +} +add_action( 'bp_actions', 'bp_activity_action_my_groups_feed' ); + +/** + * Load a user's @mentions feed. + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @global object $wp_query + * @uses bp_is_user_activity() + * @uses bp_is_current_action() + * @uses bp_is_action_variable() + * @uses status_header() + * + * @return bool False on failure + */ +function bp_activity_action_mentions_feed() { + global $bp, $wp_query; + + if ( !bp_is_user_activity() || !bp_is_current_action( 'mentions' ) || !bp_is_action_variable( 'feed', 0 ) ) + return false; + + $wp_query->is_404 = false; + status_header( 200 ); + + include_once( 'feeds/bp-activity-mentions-feed.php' ); + die; +} +add_action( 'bp_actions', 'bp_activity_action_mentions_feed' ); + +/** + * Load a user's favorites feed. + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @global object $wp_query + * @uses bp_is_user_activity() + * @uses bp_is_current_action() + * @uses bp_is_action_variable() + * @uses status_header() + * + * @return bool False on failure + */ +function bp_activity_action_favorites_feed() { + global $bp, $wp_query; + + if ( !bp_is_user_activity() || !bp_is_current_action( 'favorites' ) || !bp_is_action_variable( 'feed', 0 ) ) + return false; + + $wp_query->is_404 = false; + status_header( 200 ); + + include_once( 'feeds/bp-activity-favorites-feed.php' ); + die; +} +add_action( 'bp_actions', 'bp_activity_action_favorites_feed' ); + +?> diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-classes.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-classes.php new file mode 100644 index 0000000..d87fddb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-classes.php @@ -0,0 +1,561 @@ +__construct( $id ); + } + + function __construct( $id = false ) { + global $bp; + + if ( !empty( $id ) ) { + $this->id = $id; + $this->populate(); + } + } + + function populate() { + global $wpdb, $bp; + + if ( $row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE id = %d", $this->id ) ) ) { + $this->id = $row->id; + $this->item_id = $row->item_id; + $this->secondary_item_id = $row->secondary_item_id; + $this->user_id = $row->user_id; + $this->primary_link = $row->primary_link; + $this->component = $row->component; + $this->type = $row->type; + $this->action = $row->action; + $this->content = $row->content; + $this->date_recorded = $row->date_recorded; + $this->hide_sitewide = $row->hide_sitewide; + $this->mptt_left = $row->mptt_left; + $this->mptt_right = $row->mptt_right; + } + } + + function save() { + global $wpdb, $bp, $current_user; + + $this->id = apply_filters_ref_array( 'bp_activity_id_before_save', array( $this->id, &$this ) ); + $this->item_id = apply_filters_ref_array( 'bp_activity_item_id_before_save', array( $this->item_id, &$this ) ); + $this->secondary_item_id = apply_filters_ref_array( 'bp_activity_secondary_item_id_before_save', array( $this->secondary_item_id, &$this ) ); + $this->user_id = apply_filters_ref_array( 'bp_activity_user_id_before_save', array( $this->user_id, &$this ) ); + $this->primary_link = apply_filters_ref_array( 'bp_activity_primary_link_before_save', array( $this->primary_link, &$this ) ); + $this->component = apply_filters_ref_array( 'bp_activity_component_before_save', array( $this->component, &$this ) ); + $this->type = apply_filters_ref_array( 'bp_activity_type_before_save', array( $this->type, &$this ) ); + $this->action = apply_filters_ref_array( 'bp_activity_action_before_save', array( $this->action, &$this ) ); + $this->content = apply_filters_ref_array( 'bp_activity_content_before_save', array( $this->content, &$this ) ); + $this->date_recorded = apply_filters_ref_array( 'bp_activity_date_recorded_before_save', array( $this->date_recorded, &$this ) ); + $this->hide_sitewide = apply_filters_ref_array( 'bp_activity_hide_sitewide_before_save', array( $this->hide_sitewide, &$this ) ); + $this->mptt_left = apply_filters_ref_array( 'bp_activity_mptt_left_before_save', array( $this->mptt_left, &$this ) ); + $this->mptt_right = apply_filters_ref_array( 'bp_activity_mptt_right_before_save', array( $this->mptt_right, &$this ) ); + + // Use this, not the filters above + do_action_ref_array( 'bp_activity_before_save', array( &$this ) ); + + if ( !$this->component || !$this->type ) + return false; + + if ( !$this->primary_link ) + $this->primary_link = $bp->loggedin_user->domain; + + // If we have an existing ID, update the activity item, otherwise insert it. + if ( $this->id ) + $q = $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET user_id = %d, component = %s, type = %s, action = %s, content = %s, primary_link = %s, date_recorded = %s, item_id = %s, secondary_item_id = %s, hide_sitewide = %d WHERE id = %d", $this->user_id, $this->component, $this->type, $this->action, $this->content, $this->primary_link, $this->date_recorded, $this->item_id, $this->secondary_item_id, $this->hide_sitewide, $this->id ); + else + $q = $wpdb->prepare( "INSERT INTO {$bp->activity->table_name} ( user_id, component, type, action, content, primary_link, date_recorded, item_id, secondary_item_id, hide_sitewide ) VALUES ( %d, %s, %s, %s, %s, %s, %s, %s, %s, %d )", $this->user_id, $this->component, $this->type, $this->action, $this->content, $this->primary_link, $this->date_recorded, $this->item_id, $this->secondary_item_id, $this->hide_sitewide ); + + if ( !$wpdb->query( $q ) ) + return false; + + if ( empty( $this->id ) ) + $this->id = $wpdb->insert_id; + + do_action_ref_array( 'bp_activity_after_save', array( &$this ) ); + + return true; + } + + // Static Functions + + function get( $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $search_terms = false, $filter = false, $display_comments = false, $show_hidden = false, $exclude = false, $in = false ) { + global $wpdb, $bp; + + // Select conditions + $select_sql = "SELECT a.*, u.user_email, u.user_nicename, u.user_login, u.display_name"; + + $from_sql = " FROM {$bp->activity->table_name} a LEFT JOIN {$wpdb->users} u ON a.user_id = u.ID"; + + // Where conditions + $where_conditions = array(); + + // Searching + if ( $search_terms ) { + $search_terms = $wpdb->escape( $search_terms ); + $where_conditions['search_sql'] = "a.content LIKE '%%" . like_escape( $search_terms ) . "%%'"; + } + + // Filtering + if ( $filter && $filter_sql = BP_Activity_Activity::get_filter_sql( $filter ) ) + $where_conditions['filter_sql'] = $filter_sql; + + // Sorting + if ( $sort != 'ASC' && $sort != 'DESC' ) + $sort = 'DESC'; + + // Hide Hidden Items? + if ( !$show_hidden ) + $where_conditions['hidden_sql'] = "a.hide_sitewide = 0"; + + // Exclude specified items + if ( !empty( $exclude ) ) { + $exclude = implode( ',', wp_parse_id_list( $exclude ) ); + $where_conditions['exclude'] = "a.id NOT IN ({$exclude})"; + } + + // The specific ids to which you want to limit the query + if ( !empty( $in ) ) { + $in = implode( ',', wp_parse_id_list( $in ) ); + $where_conditions['in'] = "a.id IN ({$in})"; + } + + // Alter the query based on whether we want to show activity item + // comments in the stream like normal comments or threaded below + // the activity. + if ( false === $display_comments || 'threaded' === $display_comments ) + $where_conditions[] = "a.type != 'activity_comment'"; + + $where_sql = 'WHERE ' . join( ' AND ', $where_conditions ); + + if ( !empty( $per_page ) && !empty( $page ) ) { + + // Make sure page values are absolute integers + $page = absint( $page ); + $per_page = absint( $per_page ); + + $pag_sql = $wpdb->prepare( "LIMIT %d, %d", absint( ( $page - 1 ) * $per_page ), $per_page ); + $activities = $wpdb->get_results( apply_filters( 'bp_activity_get_user_join_filter', $wpdb->prepare( "{$select_sql} {$from_sql} {$where_sql} ORDER BY a.date_recorded {$sort} {$pag_sql}" ), $select_sql, $from_sql, $where_sql, $sort, $pag_sql ) ); + } else { + $activities = $wpdb->get_results( apply_filters( 'bp_activity_get_user_join_filter', $wpdb->prepare( "{$select_sql} {$from_sql} {$where_sql} ORDER BY a.date_recorded {$sort}" ), $select_sql, $from_sql, $where_sql, $sort ) ); + } + + $total_activities_sql = apply_filters( 'bp_activity_total_activities_sql', $wpdb->prepare( "SELECT count(a.id) FROM {$bp->activity->table_name} a {$where_sql} ORDER BY a.date_recorded {$sort}" ), $where_sql, $sort ); + + $total_activities = $wpdb->get_var( $total_activities_sql ); + + // Get the fullnames of users so we don't have to query in the loop + if ( bp_is_active( 'xprofile' ) && $activities ) { + foreach ( (array)$activities as $activity ) { + if ( (int)$activity->user_id ) + $activity_user_ids[] = $activity->user_id; + } + + $activity_user_ids = implode( ',', array_unique( (array)$activity_user_ids ) ); + if ( !empty( $activity_user_ids ) ) { + if ( $names = $wpdb->get_results( $wpdb->prepare( "SELECT user_id, value AS user_fullname FROM {$bp->profile->table_name_data} WHERE field_id = 1 AND user_id IN ({$activity_user_ids})" ) ) ) { + foreach ( (array)$names as $name ) + $tmp_names[$name->user_id] = $name->user_fullname; + + foreach ( (array)$activities as $i => $activity ) { + if ( !empty( $tmp_names[$activity->user_id] ) ) + $activities[$i]->user_fullname = $tmp_names[$activity->user_id]; + } + + unset( $names ); + unset( $tmp_names ); + } + } + } + + if ( $activities && $display_comments ) + $activities = BP_Activity_Activity::append_comments( $activities ); + + // If $max is set, only return up to the max results + if ( !empty( $max ) ) { + if ( (int)$total_activities > (int)$max ) + $total_activities = $max; + } + + return array( 'activities' => $activities, 'total' => (int)$total_activities ); + } + + /** + * In BuddyPress 1.2.x, this was used to retrieve specific activity stream items (for example, on an activity's permalink page). + * As of 1.5.x, use BP_Activity_Activity::get( ..., $in ) instead. + * + * @deprecated 1.5 + * @deprecated Use BP_Activity_Activity::get( ..., $in ) instead. + * @param mixed $activity_ids Array or comma-separated string of activity IDs to retrieve + * @param int $max Maximum number of results to return. (Optional; default is no maximum) + * @param int $page The set of results that the user is viewing. Used in pagination. (Optional; default is 1) + * @param int $per_page Specifies how many results per page. Used in pagination. (Optional; default is 25) + * @param string MySQL column sort; ASC or DESC. (Optional; default is DESC) + * @param bool $display_comments Retrieve an activity item's associated comments or not. (Optional; default is false) + * @return array + * @since 1.2 + */ + function get_specific( $activity_ids, $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $display_comments = false ) { + _deprecated_function( __FUNCTION__, '1.5', 'Use BP_Activity_Activity::get( ..., $in ) instead.' ); + return BP_Activity_Activity::get( $max, $page, $per_page, $sort, false, false, $display_comments, false, false, $activity_ids ); + } + + function get_id( $user_id, $component, $type, $item_id, $secondary_item_id, $action, $content, $date_recorded ) { + global $bp, $wpdb; + + $where_args = false; + + if ( !empty( $user_id ) ) + $where_args[] = $wpdb->prepare( "user_id = %d", $user_id ); + + if ( !empty( $component ) ) + $where_args[] = $wpdb->prepare( "component = %s", $component ); + + if ( !empty( $type ) ) + $where_args[] = $wpdb->prepare( "type = %s", $type ); + + if ( !empty( $item_id ) ) + $where_args[] = $wpdb->prepare( "item_id = %s", $item_id ); + + if ( !empty( $secondary_item_id ) ) + $where_args[] = $wpdb->prepare( "secondary_item_id = %s", $secondary_item_id ); + + if ( !empty( $action ) ) + $where_args[] = $wpdb->prepare( "action = %s", $action ); + + if ( !empty( $content ) ) + $where_args[] = $wpdb->prepare( "content = %s", $content ); + + if ( !empty( $date_recorded ) ) + $where_args[] = $wpdb->prepare( "date_recorded = %s", $date_recorded ); + + if ( !empty( $where_args ) ) + $where_sql = 'WHERE ' . join( ' AND ', $where_args ); + else + return false; + + return $wpdb->get_var( "SELECT id FROM {$bp->activity->table_name} {$where_sql}" ); + } + + function delete( $args ) { + global $wpdb, $bp; + + $defaults = array( + 'id' => false, + 'action' => false, + 'content' => false, + 'component' => false, + 'type' => false, + 'primary_link' => false, + 'user_id' => false, + 'item_id' => false, + 'secondary_item_id' => false, + 'date_recorded' => false, + 'hide_sitewide' => false + ); + $params = wp_parse_args( $args, $defaults ); + extract( $params ); + + $where_args = false; + + if ( !empty( $id ) ) + $where_args[] = $wpdb->prepare( "id = %d", $id ); + + if ( !empty( $user_id ) ) + $where_args[] = $wpdb->prepare( "user_id = %d", $user_id ); + + if ( !empty( $action ) ) + $where_args[] = $wpdb->prepare( "action = %s", $action ); + + if ( !empty( $content ) ) + $where_args[] = $wpdb->prepare( "content = %s", $content ); + + if ( !empty( $component ) ) + $where_args[] = $wpdb->prepare( "component = %s", $component ); + + if ( !empty( $type ) ) + $where_args[] = $wpdb->prepare( "type = %s", $type ); + + if ( !empty( $primary_link ) ) + $where_args[] = $wpdb->prepare( "primary_link = %s", $primary_link ); + + if ( !empty( $item_id ) ) + $where_args[] = $wpdb->prepare( "item_id = %s", $item_id ); + + if ( !empty( $secondary_item_id ) ) + $where_args[] = $wpdb->prepare( "secondary_item_id = %s", $secondary_item_id ); + + if ( !empty( $date_recorded ) ) + $where_args[] = $wpdb->prepare( "date_recorded = %s", $date_recorded ); + + if ( !empty( $hide_sitewide ) ) + $where_args[] = $wpdb->prepare( "hide_sitewide = %d", $hide_sitewide ); + + if ( !empty( $where_args ) ) + $where_sql = 'WHERE ' . join( ' AND ', $where_args ); + else + return false; + + // Fetch the activity IDs so we can delete any comments for this activity item + $activity_ids = $wpdb->get_col( $wpdb->prepare( "SELECT id FROM {$bp->activity->table_name} {$where_sql}" ) ); + + if ( !$wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->activity->table_name} {$where_sql}" ) ) ) + return false; + + if ( $activity_ids ) { + BP_Activity_Activity::delete_activity_item_comments( $activity_ids ); + BP_Activity_Activity::delete_activity_meta_entries( $activity_ids ); + + return $activity_ids; + } + + return $activity_ids; + } + + function delete_activity_item_comments( $activity_ids ) { + global $bp, $wpdb; + + if ( is_array( $activity_ids ) ) + $activity_ids = implode ( ',', array_map( 'absint', $activity_ids ) ); + else + $activity_ids = implode ( ',', array_map( 'absint', explode ( ',', $activity_ids ) ) ); + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->activity->table_name} WHERE type = 'activity_comment' AND item_id IN ({$activity_ids})" ) ); + } + + function delete_activity_meta_entries( $activity_ids ) { + global $bp, $wpdb; + + if ( is_array( $activity_ids ) ) + $activity_ids = implode ( ',', array_map( 'absint', $activity_ids ) ); + else + $activity_ids = implode ( ',', array_map( 'absint', explode ( ',', $activity_ids ) ) ); + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->activity->table_name_meta} WHERE activity_id IN ({$activity_ids})" ) ); + } + + function append_comments( $activities ) { + global $bp, $wpdb; + + $activity_comments = array(); + + /* Now fetch the activity comments and parse them into the correct position in the activities array. */ + foreach( (array)$activities as $activity ) { + if ( 'activity_comment' != $activity->type && $activity->mptt_left && $activity->mptt_right ) + $activity_comments[$activity->id] = BP_Activity_Activity::get_activity_comments( $activity->id, $activity->mptt_left, $activity->mptt_right ); + } + + /* Merge the comments with the activity items */ + foreach( (array)$activities as $key => $activity ) + if ( isset( $activity_comments[$activity->id] ) ) + $activities[$key]->children = $activity_comments[$activity->id]; + + return $activities; + } + + function get_activity_comments( $activity_id, $left, $right ) { + global $wpdb, $bp; + + if ( !$comments = wp_cache_get( 'bp_activity_comments_' . $activity_id ) ) { + // Select the user's fullname with the query + if ( bp_is_active( 'xprofile' ) ) { + $fullname_select = ", pd.value as user_fullname"; + $fullname_from = ", {$bp->profile->table_name_data} pd "; + $fullname_where = "AND pd.user_id = a.user_id AND pd.field_id = 1"; + + // Prevent debug errors + } else { + $fullname_select = $fullname_from = $fullname_where = ''; + } + + // Retrieve all descendants of the $root node + $descendants = $wpdb->get_results( apply_filters( 'bp_activity_comments_user_join_filter', $wpdb->prepare( "SELECT a.*, u.user_email, u.user_nicename, u.user_login, u.display_name{$fullname_select} FROM {$bp->activity->table_name} a, {$wpdb->users} u{$fullname_from} WHERE u.ID = a.user_id {$fullname_where} AND a.type = 'activity_comment' AND a.item_id = %d AND a.mptt_left BETWEEN %d AND %d ORDER BY a.date_recorded ASC", $activity_id, $left, $right ), $activity_id, $left, $right ) ); + + // Loop descendants and build an assoc array + foreach ( (array)$descendants as $d ) { + $d->children = array(); + + // If we have a reference on the parent + if ( isset( $ref[ $d->secondary_item_id ] ) ) { + $ref[ $d->secondary_item_id ]->children[ $d->id ] = $d; + $ref[ $d->id ] =& $ref[ $d->secondary_item_id ]->children[ $d->id ]; + + // If we don't have a reference on the parent, put in the root level + } else { + $comments[ $d->id ] = $d; + $ref[ $d->id ] =& $comments[ $d->id ]; + } + } + wp_cache_set( 'bp_activity_comments_' . $activity_id, $comments, 'bp' ); + } + + return $comments; + } + + function rebuild_activity_comment_tree( $parent_id, $left = 1 ) { + global $wpdb, $bp; + + // The right value of this node is the left value + 1 + $right = $left + 1; + + // Get all descendants of this node + $descendants = BP_Activity_Activity::get_child_comments( $parent_id ); + + // Loop the descendants and recalculate the left and right values + foreach ( (array)$descendants as $descendant ) + $right = BP_Activity_Activity::rebuild_activity_comment_tree( $descendant->id, $right ); + + // We've got the left value, and now that we've processed the children + // of this node we also know the right value + if ( 1 == $left ) + $wpdb->query( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET mptt_left = %d, mptt_right = %d WHERE id = %d", $left, $right, $parent_id ) ); + else + $wpdb->query( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET mptt_left = %d, mptt_right = %d WHERE type = 'activity_comment' AND id = %d", $left, $right, $parent_id ) ); + + // Return the right value of this node + 1 + return $right + 1; + } + + function get_child_comments( $parent_id ) { + global $bp, $wpdb; + + return $wpdb->get_results( $wpdb->prepare( "SELECT id FROM {$bp->activity->table_name} WHERE type = 'activity_comment' AND secondary_item_id = %d", $parent_id ) ); + } + + function get_recorded_components() { + global $wpdb, $bp; + + return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT component FROM {$bp->activity->table_name} ORDER BY component ASC" ) ); + } + + function get_sitewide_items_for_feed( $limit = 35 ) { + global $wpdb, $bp; + + $activities = bp_activity_get_sitewide( array( 'max' => $limit ) ); + + for ( $i = 0, $count = count( $activities ); $i < $count; ++$i ) { + $title = explode( 'prepare( '%d', $item ) : $wpdb->prepare( '%s', $item ); + } + + // build IN operator sql syntax + if ( count( $items_prepared ) ) + return sprintf( '%s IN ( %s )', trim( $field ), implode( ',', $items_prepared ) ); + else + return false; + } + + function get_filter_sql( $filter_array ) { + global $wpdb; + + if ( !empty( $filter_array['user_id'] ) ) { + $user_sql = BP_Activity_Activity::get_in_operator_sql( 'a.user_id', $filter_array['user_id'] ); + if ( !empty( $user_sql ) ) + $filter_sql[] = $user_sql; + } + + if ( !empty( $filter_array['object'] ) ) { + $object_sql = BP_Activity_Activity::get_in_operator_sql( 'a.component', $filter_array['object'] ); + if ( !empty( $object_sql ) ) + $filter_sql[] = $object_sql; + } + + if ( !empty( $filter_array['action'] ) ) { + $action_sql = BP_Activity_Activity::get_in_operator_sql( 'a.type', $filter_array['action'] ); + if ( !empty( $action_sql ) ) + $filter_sql[] = $action_sql; + } + + if ( !empty( $filter_array['primary_id'] ) ) { + $pid_sql = BP_Activity_Activity::get_in_operator_sql( 'a.item_id', $filter_array['primary_id'] ); + if ( !empty( $pid_sql ) ) + $filter_sql[] = $pid_sql; + } + + if ( !empty( $filter_array['secondary_id'] ) ) { + $sid_sql = BP_Activity_Activity::get_in_operator_sql( 'a.secondary_item_id', $filter_array['secondary_id'] ); + if ( !empty( $sid_sql ) ) + $filter_sql[] = $sid_sql; + } + + if ( empty($filter_sql) ) + return false; + + return join( ' AND ', $filter_sql ); + } + + function get_last_updated() { + global $bp, $wpdb; + + return $wpdb->get_var( $wpdb->prepare( "SELECT date_recorded FROM {$bp->activity->table_name} ORDER BY date_recorded DESC LIMIT 1" ) ); + } + + function total_favorite_count( $user_id ) { + if ( !$favorite_activity_entries = bp_get_user_meta( $user_id, 'bp_favorite_activities', true ) ) + return 0; + + return count( maybe_unserialize( $favorite_activity_entries ) ); + } + + function check_exists_by_content( $content ) { + global $wpdb, $bp; + + return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->activity->table_name} WHERE content = %s", $content ) ); + } + + function hide_all_for_user( $user_id ) { + global $wpdb, $bp; + + return $wpdb->get_var( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET hide_sitewide = 1 WHERE user_id = %d", $user_id ) ); + } +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-filters.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-filters.php new file mode 100644 index 0000000..5e207cf --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-filters.php @@ -0,0 +1,268 @@ +@$username", $content ); + } + + // Adjust the activity count for this item + if ( $activity_id ) + bp_activity_adjust_mention_count( $activity_id, 'add' ); + + return $content; +} + +/** + * Catch mentions in saved activity items + * + * @since 1.5.0 + * + * @param obj $activity + * + * @uses remove_filter() To remove the 'bp_activity_at_name_filter_updates' hook. + * @uses bp_activity_at_name_filter() + * @uses BP_Activity_Activity::save() {@link BP_Activity_Activity} + */ +function bp_activity_at_name_filter_updates( $activity ) { + // Only run this function once for a given activity item + remove_filter( 'bp_activity_after_save', 'bp_activity_at_name_filter_updates' ); + + // Run the content through the linking filter, making sure to increment mention count + $activity->content = bp_activity_at_name_filter( $activity->content, $activity->id ); + + // Resave the activity with the new content + $activity->save(); +} +add_filter( 'bp_activity_after_save', 'bp_activity_at_name_filter_updates' ); + +/** + * Catches links in activity text so rel=nofollow can be added + * + * @since 1.2.0 + * + * @param string $text Activity text + * + * @return string $text Text with rel=nofollow added to any links + */ +function bp_activity_make_nofollow_filter( $text ) { + return preg_replace_callback( '||i', 'bp_activity_make_nofollow_filter_callback', $text ); +} + + /** + * Adds rel=nofollow to a link + * + * @since 1.2.0 + * + * @param array $matches + * + * @return string $text Link with rel=nofollow added + */ + function bp_activity_make_nofollow_filter_callback( $matches ) { + $text = $matches[1]; + $text = str_replace( array( ' rel="nofollow"', " rel='nofollow'"), '', $text ); + return ""; + } + +/** + * Truncates long activity entries when viewed in activity streams + * + * @since 1.5.0 + * + * @param $text The original activity entry text + * + * @uses bp_is_single_activity() + * @uses apply_filters() To call the 'bp_activity_excerpt_append_text' hook + * @uses apply_filters() To call the 'bp_activity_excerpt_length' hook + * @uses bp_create_excerpt() + * @uses bp_get_activity_id() + * @uses bp_get_activity_thread_permalink() + * @uses apply_filters() To call the 'bp_activity_truncate_entry' hook + * + * @return string $excerpt The truncated text + */ +function bp_activity_truncate_entry( $text ) { + global $activities_template; + + // The full text of the activity update should always show on the single activity screen + if ( bp_is_single_activity() ) + return $text; + + $append_text = apply_filters( 'bp_activity_excerpt_append_text', __( '[Read more]', 'buddypress' ) ); + $excerpt_length = apply_filters( 'bp_activity_excerpt_length', 358 ); + + // Run the text through the excerpt function. If it's too short, the original text will be + // returned. + $excerpt = bp_create_excerpt( $text, $excerpt_length, array( 'ending' => __( '…', 'buddypress' ) ) ); + + // If the text returned by bp_create_excerpt() is different from the original text (ie it's + // been truncated), add the "Read More" link. + if ( $excerpt != $text ) { + $id = !empty( $activities_template->activity->current_comment->id ) ? 'acomment-read-more-' . $activities_template->activity->current_comment->id : 'activity-read-more-' . bp_get_activity_id(); + + $excerpt = sprintf( '%1$s%4$s', $excerpt, $id, bp_get_activity_thread_permalink(), $append_text ); + } + + return apply_filters( 'bp_activity_truncate_entry', $excerpt, $text, $append_text ); +} +add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 ); +add_filter( 'bp_get_activity_content', 'bp_activity_truncate_entry', 5 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-functions.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-functions.php new file mode 100644 index 0000000..519d004 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-functions.php @@ -0,0 +1,1437 @@ +pages->activity->id ); +} + +/** + * Searches through the content of an activity item to locate usernames, designated by an @ sign + * + * @since 1.5.0 + * + * @param string $content The content of the activity, usually found in $activity->content + * + * @return bool|array $usernames Array of the found usernames that match existing users. False if no matches + */ +function bp_activity_find_mentions( $content ) { + $pattern = '/[@]+([A-Za-z0-9-_\.@]+)/'; + preg_match_all( $pattern, $content, $usernames ); + + // Make sure there's only one instance of each username + if ( !$usernames = array_unique( $usernames[1] ) ) + return false; + + return $usernames; +} + +/** + * Resets a user's unread mentions list and count + * + * @since 1.5.0 + * + * @param int $user_id The id of the user whose unread mentions are being reset + * @uses bp_delete_user_meta() + */ +function bp_activity_clear_new_mentions( $user_id ) { + bp_delete_user_meta( $user_id, 'bp_new_mention_count' ); + bp_delete_user_meta( $user_id, 'bp_new_mentions' ); +} + +/** + * Adjusts new mention count for mentioned users when activity items are deleted or created + * + * @since 1.5.0 + * + * @param int $activity_id The unique id for the activity item + * @param string $action Can be 'delete' or 'add'. Defaults to 'add' + * + * @uses BP_Activity_Activity() {@link BP_Activity_Activity} + * @uses bp_activity_find_mentions() + * @uses bp_is_username_compatibility_mode() + * @uses bp_core_get_userid_from_nicename() + * @uses bp_get_user_meta() + * @uses bp_update_user_meta() + */ +function bp_activity_adjust_mention_count( $activity_id, $action = 'add' ) { + $activity = new BP_Activity_Activity( $activity_id ); + + if ( $usernames = bp_activity_find_mentions( strip_tags( $activity->content ) ) ) { + foreach( (array)$usernames as $username ) { + if ( bp_is_username_compatibility_mode() ) + $user_id = username_exists( $username ); + else + $user_id = bp_core_get_userid_from_nicename( $username ); + + if ( empty( $user_id ) ) + continue; + + // Adjust the mention list and count for the member + $new_mention_count = (int)bp_get_user_meta( $user_id, 'bp_new_mention_count', true ); + if ( !$new_mentions = bp_get_user_meta( $user_id, 'bp_new_mentions', true ) ) + $new_mentions = array(); + + switch ( $action ) { + case 'delete' : + $key = array_search( $activity_id, $new_mentions ); + if ( $key !== false ) { + unset( $new_mentions[$key] ); + } + break; + + case 'add' : + default : + if ( !in_array( $activity_id, $new_mentions ) ) { + $new_mentions[] = (int)$activity_id; + } + break; + } + + // Get an updated mention count + $new_mention_count = count( $new_mentions ); + + // Resave the user_meta + bp_update_user_meta( $user_id, 'bp_new_mention_count', $new_mention_count ); + bp_update_user_meta( $user_id, 'bp_new_mentions', $new_mentions ); + } + } +} + +/** + * Formats notifications related to activity + * + * @since 1.5.0 + * + * @param string $action The type of activity item. Just 'new_at_mention' for now + * @param int $item_id The activity id + * @param int $secondary_item_id In the case of at-mentions, this is the mentioner's id + * @param int $total_items The total number of notifications to format + * @param string $format 'string' to get a BuddyBar-compatible notification, 'array' otherwise + * + * @global object $bp BuddyPress global settings + * @uses bp_loggedin_user_domain() + * @uses bp_get_activity_slug() + * @uses bp_core_get_user_displayname() + * @uses apply_filters() To call the 'bp_activity_multiple_at_mentions_notification' hook + * @uses apply_filters() To call the 'bp_activity_single_at_mentions_notification' hook + * @uses do_action() To call 'activity_format_notifications' hook + * + * @return string $return Formatted @mention notification + */ +function bp_activity_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) { + global $bp; + + switch ( $action ) { + case 'new_at_mention': + $activity_id = $item_id; + $poster_user_id = $secondary_item_id; + $at_mention_link = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/'; + $at_mention_title = sprintf( __( '@%s Mentions', 'buddypress' ), $bp->loggedin_user->userdata->user_nicename ); + + if ( (int)$total_items > 1 ) { + $text = sprintf( __( 'You have %1$d new activity mentions', 'buddypress' ), (int)$total_items ); + $filter = 'bp_activity_multiple_at_mentions_notification'; + } else { + $user_fullname = bp_core_get_user_displayname( $poster_user_id ); + $text = sprintf( __( '%1$s mentioned you in an activity update', 'buddypress' ), $user_fullname ); + $filter = 'bp_activity_single_at_mentions_notification'; + } + break; + } + + if ( 'string' == $format ) { + $return = apply_filters( $filter, '' . $text . '', $at_mention_link, (int)$total_items, $activity_id, $poster_user_id ); + } else { + $return = apply_filters( $filter, array( + 'text' => $text, + 'link' => $at_mention_link + ), $at_mention_link, (int)$total_items, $activity_id, $poster_user_id ); + } + + do_action( 'activity_format_notifications', $action, $item_id, $secondary_item_id, $total_items ); + + return $return; +} + +/** Actions ******************************************************************/ + +/** + * Sets the current action for a given activity stream location + * + * @since 1.1.0 + * + * @param string $component_id + * @param string $key + * @param string $value + * + * @global object $bp BuddyPress global settings + * @uses apply_filters() To call the 'bp_activity_set_action' hook + * + * @return bool False if any param is empty, otherwise true + */ +function bp_activity_set_action( $component_id, $key, $value ) { + global $bp; + + // Return false if any of the above values are not set + if ( empty( $component_id ) || empty( $key ) || empty( $value ) ) + return false; + + // Set activity action + $bp->activity->actions->{$component_id}->{$key} = apply_filters( 'bp_activity_set_action', array( + 'key' => $key, + 'value' => $value + ), $component_id, $key, $value ); + + return true; +} + +/** + * Retreives the current action from a component and key + * + * @since 1.1.0 + * + * @param string $component_id + * @param string $key + * + * @global object $bp BuddyPress global settings + * @uses apply_filters() To call the 'bp_activity_get_action' hook + * + * @return mixed False on error, action on success + */ +function bp_activity_get_action( $component_id, $key ) { + global $bp; + + // Return false if any of the above values are not set + if ( empty( $component_id ) || empty( $key ) ) + return false; + + return apply_filters( 'bp_activity_get_action', $bp->activity->actions->{$component_id}->{$key}, $component_id, $key ); +} + +/** Favorites ****************************************************************/ + +/** + * Get a users favorite activity stream items + * + * @since 1.2.0 + * + * @param int $user_id + * + * @global object $bp BuddyPress global settings + * @uses bp_get_user_meta() + * @uses apply_filters() To call the 'bp_activity_get_user_favorites' hook + * + * @return array Array of users favorite activity stream ID's + */ +function bp_activity_get_user_favorites( $user_id = 0 ) { + global $bp; + + // Fallback to logged in user if no user_id is passed + if ( empty( $user_id ) ) + $user_id = $bp->displayed_user->id; + + // Get favorites for user + $favs = bp_get_user_meta( $user_id, 'bp_favorite_activities', true ); + + return apply_filters( 'bp_activity_get_user_favorites', $favs ); +} + +/** + * Add an activity stream item as a favorite for a user + * + * @since 1.2.0 + * + * @param int $activity_id + * @param int $user_id + * + * @global object $bp BuddyPress global settings + * @uses is_user_logged_in() + * @uses bp_get_user_meta() + * @uses bp_activity_get_meta() + * @uses bp_update_user_meta() + * @uses bp_activity_update_meta() + * @uses do_action() To call the 'bp_activity_add_user_favorite' hook + * @uses do_action() To call the 'bp_activity_add_user_favorite_fail' hook + * + * @return bool True on success, false on failure + */ +function bp_activity_add_user_favorite( $activity_id, $user_id = 0 ) { + global $bp; + + // Favorite activity stream items are for logged in users only + if ( !is_user_logged_in() ) + return false; + + // Fallback to logged in user if no user_id is passed + if ( empty( $user_id ) ) + $user_id = $bp->loggedin_user->id; + + // Update the user's personal favorites + $my_favs = bp_get_user_meta( $bp->loggedin_user->id, 'bp_favorite_activities', true ); + $my_favs[] = $activity_id; + + // Update the total number of users who have favorited this activity + $fav_count = bp_activity_get_meta( $activity_id, 'favorite_count' ); + $fav_count = !empty( $fav_count ) ? (int)$fav_count + 1 : 1; + + // Update user meta + bp_update_user_meta( $bp->loggedin_user->id, 'bp_favorite_activities', $my_favs ); + + // Update activity meta counts + if ( true === bp_activity_update_meta( $activity_id, 'favorite_count', $fav_count ) ) { + + // Execute additional code + do_action( 'bp_activity_add_user_favorite', $activity_id, $user_id ); + + // Success + return true; + + // Saving meta was unsuccessful for an unknown reason + } else { + // Execute additional code + do_action( 'bp_activity_add_user_favorite_fail', $activity_id, $user_id ); + + return false; + } +} + +/** + * Remove an activity stream item as a favorite for a user + * + * @since 1.2.0 + * + * @param int $activity_id + * @param int $user_id + * + * @global object $bp BuddyPress global settings + * @uses is_user_logged_in() + * @uses bp_get_user_meta() + * @uses bp_activity_get_meta() + * @uses bp_activity_update_meta() + * @uses bp_update_user_meta() + * @uses do_action() To call the 'bp_activity_remove_user_favorite' hook + * + * @return bool True on success, false on failure + */ +function bp_activity_remove_user_favorite( $activity_id, $user_id = 0 ) { + global $bp; + + // Favorite activity stream items are for logged in users only + if ( !is_user_logged_in() ) + return false; + + // Fallback to logged in user if no user_id is passed + if ( empty( $user_id ) ) + $user_id = $bp->loggedin_user->id; + + // Remove the fav from the user's favs + $my_favs = bp_get_user_meta( $user_id, 'bp_favorite_activities', true ); + $my_favs = array_flip( (array) $my_favs ); + unset( $my_favs[$activity_id] ); + $my_favs = array_unique( array_flip( $my_favs ) ); + + // Update the total number of users who have favorited this activity + if ( $fav_count = bp_activity_get_meta( $activity_id, 'favorite_count' ) ) { + + // Deduct from total favorites + if ( bp_activity_update_meta( $activity_id, 'favorite_count', (int)$fav_count - 1 ) ) { + + // Update users favorites + if ( bp_update_user_meta( $user_id, 'bp_favorite_activities', $my_favs ) ) { + + // Execute additional code + do_action( 'bp_activity_remove_user_favorite', $activity_id, $user_id ); + + // Success + return true; + + // Error updating + } else { + return false; + } + + // Error updating favorite count + } else { + return false; + } + + // Error getting favorite count + } else { + return false; + } +} + +/** + * Check if activity exists by scanning content + * + * @since 1.1.0 + * + * @param string $content + * + * @uses BP_Activity_Activity::check_exists_by_content() {@link BP_Activity_Activity} + * @uses apply_filters() To call the 'bp_activity_check_exists_by_content' hook + * + * @return bool + */ +function bp_activity_check_exists_by_content( $content ) { + return apply_filters( 'bp_activity_check_exists_by_content', BP_Activity_Activity::check_exists_by_content( $content ) ); +} + +/** + * Retrieve the last time activity was updated + * + * @since 1.0.0 + * + * @uses BP_Activity_Activity::get_last_updated() {@link BP_Activity_Activity} + * @uses apply_filters() To call the 'bp_activity_get_last_updated' hook + * + * @return string Date last updated + */ +function bp_activity_get_last_updated() { + return apply_filters( 'bp_activity_get_last_updated', BP_Activity_Activity::get_last_updated() ); +} + +/** + * Retrieve the number of favorite activity stream items a user has + * + * @since 1.2.0 + * + * @param int $user_id + * + * @global object $bp BuddyPress global settings + * @uses BP_Activity_Activity::total_favorite_count() {@link BP_Activity_Activity} + * + * @return int Total favorite count + */ +function bp_activity_total_favorites_for_user( $user_id = 0 ) { + global $bp; + + // Fallback on displayed user, and then logged in user + if ( empty( $user_id ) ) + $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + + return BP_Activity_Activity::total_favorite_count( $user_id ); +} + +/** Meta *********************************************************************/ + +/** + * Delete a meta entry from the DB for an activity stream item + * + * @since 1.2.0 + * + * @param int $activity_id + * @param string $meta_key + * @param string $meta_value + * + * @global object $wpdb + * @global object $bp BuddyPress global settings + * @uses wp_cache_delete() + * @uses is_wp_error() + * + * @return bool True on success, false on failure + */ +function bp_activity_delete_meta( $activity_id, $meta_key = '', $meta_value = '' ) { + global $wpdb, $bp; + + // Return false if any of the above values are not set + if ( !is_numeric( $activity_id ) ) + return false; + + // Sanitize key + $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); + + if ( is_array( $meta_value ) || is_object( $meta_value ) ) + $meta_value = serialize( $meta_value ); + + // Trim off whitespace + $meta_value = trim( $meta_value ); + + // Delete all for activity_id + if ( empty( $meta_key ) ) + $retval = $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->activity->table_name_meta} WHERE activity_id = %d", $activity_id ) ); + + // Delete only when all match + else if ( $meta_value ) + $retval = $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->activity->table_name_meta} WHERE activity_id = %d AND meta_key = %s AND meta_value = %s", $activity_id, $meta_key, $meta_value ) ); + + // Delete only when activity_id and meta_key match + else + $retval = $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->activity->table_name_meta} WHERE activity_id = %d AND meta_key = %s", $activity_id, $meta_key ) ); + + // Delete cache entry + wp_cache_delete( 'bp_activity_meta_' . $meta_key . '_' . $activity_id, 'bp' ); + + // Success + if ( !is_wp_error( $retval ) ) + return true; + + // Fail + else + return false; +} + +/** + * Get activity meta + * + * @since 1.2.0 + * + * @param int $activity_id + * @param string $meta_key + * + * @global object $wpdb + * @global object $bp BuddyPress global settings + * @uses wp_cache_get() + * @uses wp_cache_set() + * @uses apply_filters() To call the 'bp_activity_get_meta' hook + * + * @return bool + */ +function bp_activity_get_meta( $activity_id = 0, $meta_key = '' ) { + global $wpdb, $bp; + + // Make sure activity_id is valid + if ( empty( $activity_id ) || !is_numeric( $activity_id ) ) + return false; + + // We have a key to look for + if ( !empty( $meta_key ) ) { + + // Sanitize key + $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); + + // Check cache + if ( !$metas = wp_cache_get( 'bp_activity_meta_' . $meta_key . '_' . $activity_id, 'bp' ) ) { + + // No cache so hit the DB + $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM {$bp->activity->table_name_meta} WHERE activity_id = %d AND meta_key = %s", $activity_id, $meta_key ) ); + + // Set cache + wp_cache_set( 'bp_activity_meta_' . $meta_key . '_' . $activity_id, $metas, 'bp' ); + } + + // No key so get all for activity_id + } else { + $metas = $wpdb->get_col( $wpdb->prepare( "SELECT meta_value FROM {$bp->activity->table_name_meta} WHERE activity_id = %d", $activity_id ) ); + } + + // No result so return false + if ( empty( $metas ) ) + return false; + + // Maybe, just maybe... unserialize + $metas = array_map( 'maybe_unserialize', (array)$metas ); + + // Return first item in array if only 1, else return all metas found + $retval = ( 1 == count( $metas ) ? $metas[0] : $metas ); + + // Filter result before returning + return apply_filters( 'bp_activity_get_meta', $retval, $activity_id, $meta_key ); +} + +/** + * Update activity meta + * + * @since 1.2.0 + * + * @param int $activity_id + * @param string $meta_key + * @param string $meta_value + * + * @global object $wpdb + * @global object $bp BuddyPress global settings + * @uses maybe_serialize() + * @uses bp_activity_delete_meta() + * @uses wp_cache_set() + * + * @return bool True on success, false on failure + */ +function bp_activity_update_meta( $activity_id, $meta_key, $meta_value ) { + global $wpdb, $bp; + + // Make sure activity_id is valid + if ( !is_numeric( $activity_id ) ) + return false; + + // Sanitize key + $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); + + // Sanitize value + if ( is_string( $meta_value ) ) + $meta_value = stripslashes( $wpdb->escape( $meta_value ) ); + + // Maybe, just maybe... serialize + $meta_value = maybe_serialize( $meta_value ); + + // If value is empty, delete the meta key + if ( empty( $meta_value ) ) + return bp_activity_delete_meta( $activity_id, $meta_key ); + + // See if meta key exists for activity_id + $cur = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name_meta} WHERE activity_id = %d AND meta_key = %s", $activity_id, $meta_key ) ); + + // Meta key does not exist so INSERT + if ( empty( $cur ) ) + $wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->activity->table_name_meta} ( activity_id, meta_key, meta_value ) VALUES ( %d, %s, %s )", $activity_id, $meta_key, $meta_value ) ); + + // Meta key exists, so UPDATE + else if ( $cur->meta_value != $meta_value ) + $wpdb->query( $wpdb->prepare( "UPDATE {$bp->activity->table_name_meta} SET meta_value = %s WHERE activity_id = %d AND meta_key = %s", $meta_value, $activity_id, $meta_key ) ); + + // Weirdness, so return false + else + return false; + + // Set cache + wp_cache_set( 'bp_activity_meta_' . $meta_key . '_' . $activity_id, $meta_value, 'bp' ); + + // Victory is ours! + return true; +} + +/** Clean up *****************************************************************/ + +/** + * Completely remove a user's activity data + * + * @since 1.5.0 + * + * @param int $user_id + * + * @uses is_user_logged_in() + * @uses bp_activity_delete() + * @uses bp_delete_user_meta() + * @uses do_action() To call the 'bp_activity_remove_data' hook + * @uses do_action() To call the 'bp_activity_remove_all_user_data' hook + */ +function bp_activity_remove_all_user_data( $user_id = 0 ) { + + // Do not delete user data unless a logged in user says so + if ( empty( $user_id ) || !is_user_logged_in() ) + return false; + + // Clear the user's activity from the sitewide stream and clear their activity tables + bp_activity_delete( array( 'user_id' => $user_id ) ); + + // Remove any usermeta + bp_delete_user_meta( $user_id, 'bp_latest_update' ); + bp_delete_user_meta( $user_id, 'bp_favorite_activities' ); + + // Execute additional code + do_action( 'bp_activity_remove_data', $user_id ); // Deprecated! Do not use! + + // Use this going forward + do_action( 'bp_activity_remove_all_user_data', $user_id ); +} +add_action( 'wpmu_delete_user', 'bp_activity_remove_all_user_data' ); +add_action( 'delete_user', 'bp_activity_remove_all_user_data' ); +add_action( 'bp_make_spam_user', 'bp_activity_remove_all_user_data' ); + +/** + * Register the activity stream actions for updates + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses bp_activity_set_action() + * @uses do_action() To call the 'updates_register_activity_actions' hook + */ +function updates_register_activity_actions() { + global $bp; + + bp_activity_set_action( $bp->activity->id, 'activity_update', __( 'Posted an update', 'buddypress' ) ); + + do_action( 'updates_register_activity_actions' ); +} +add_action( 'bp_register_activity_actions', 'updates_register_activity_actions' ); + +/****************************************************************************** + * Business functions are where all the magic happens in BuddyPress. They will + * handle the actual saving or manipulation of information. Usually they will + * hand off to a database class for data access, then return + * true or false on success or failure. + */ + +/** + * Retrieve an activity or activities + * + * @since 1.2.0 + * + * @param array $args + * + * @uses wp_parse_args() + * @uses wp_cache_get() + * @uses wp_cache_set() + * @uses BP_Activity_Activity::get() {@link BP_Activity_Activity} + * @uses apply_filters_ref_array() To call the 'bp_activity_get' hook + * + * @return object $activity The activity/activities object + */ +function bp_activity_get( $args = '' ) { + $defaults = array( + 'max' => false, // Maximum number of results to return + 'page' => 1, // page 1 without a per_page will result in no pagination. + 'per_page' => false, // results per page + 'sort' => 'DESC', // sort ASC or DESC + 'display_comments' => false, // false for no comments. 'stream' for within stream display, 'threaded' for below each activity item + + 'search_terms' => false, // Pass search terms as a string + 'show_hidden' => false, // Show activity items that are hidden site-wide? + 'exclude' => false, // Comma-separated list of activity IDs to exclude + 'in' => false, // Comma-separated list or array of activity IDs to which you want to limit the query + + /** + * Pass filters as an array -- all filter items can be multiple values comma separated: + * array( + * 'user_id' => false, // user_id to filter on + * 'object' => false, // object to filter on e.g. groups, profile, status, friends + * 'action' => false, // action to filter on e.g. activity_update, profile_updated + * 'primary_id' => false, // object ID to filter on e.g. a group_id or forum_id or blog_id etc. + * 'secondary_id' => false, // secondary object ID to filter on e.g. a post_id + * ); + */ + 'filter' => array() + ); + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // Attempt to return a cached copy of the first page of sitewide activity. + if ( 1 == (int)$page && empty( $max ) && empty( $search_terms ) && empty( $filter ) && 'DESC' == $sort && empty( $exclude ) ) { + if ( !$activity = wp_cache_get( 'bp_activity_sitewide_front', 'bp' ) ) { + $activity = BP_Activity_Activity::get( $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments, $show_hidden ); + wp_cache_set( 'bp_activity_sitewide_front', $activity, 'bp' ); + } + } else + $activity = BP_Activity_Activity::get( $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments, $show_hidden, $exclude, $in ); + + return apply_filters_ref_array( 'bp_activity_get', array( &$activity, &$r ) ); +} + +/** + * Fetch specific activity items + * + * @since 1.2.0 + * + * @param array $args See docs for $defaults for details + * + * @uses wp_parse_args() + * @uses apply_filters() To call the 'bp_activity_get_specific' hook + * @uses BP_Activity_Activity::get() {@link BP_Activity_Activity} + * + * @return array The array returned by BP_Activity_Activity::get() + */ +function bp_activity_get_specific( $args = '' ) { + $defaults = array( + 'activity_ids' => false, // A single activity_id or array of IDs. + 'page' => 1, // page 1 without a per_page will result in no pagination. + 'per_page' => false, // results per page + 'max' => false, // Maximum number of results to return + 'sort' => 'DESC', // sort ASC or DESC + 'display_comments' => false, // true or false to display threaded comments for these specific activity items + 'show_hidden' => true // When fetching specific items, show all + ); + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_activity_get_specific', BP_Activity_Activity::get( $max, $page, $per_page, $sort, false, false, $display_comments, $show_hidden, false, $activity_ids ) ); +} + +/** + * Add an activity item + * + * @since 1.1.0 + * + * @param array $args See docs for $defaults for details + * + * @global object $bp BuddyPress global settings + * @uses wp_parse_args() + * @uses BP_Activity_Activity::save() {@link BP_Activity_Activity} + * @uses BP_Activity_Activity::rebuild_activity_comment_tree() {@link BP_Activity_Activity} + * @uses wp_cache_delete() + * @uses do_action() To call the 'bp_activity_add' hook + * + * @return int The activity id + */ +function bp_activity_add( $args = '' ) { + global $bp; + + $defaults = array( + 'id' => false, // Pass an existing activity ID to update an existing entry. + + 'action' => '', // The activity action - e.g. "Jon Doe posted an update" + 'content' => '', // Optional: The content of the activity item e.g. "BuddyPress is awesome guys!" + + 'component' => false, // The name/ID of the component e.g. groups, profile, mycomponent + 'type' => false, // The activity type e.g. activity_update, profile_updated + 'primary_link' => '', // Optional: The primary URL for this item in RSS feeds (defaults to activity permalink) + + 'user_id' => $bp->loggedin_user->id, // Optional: The user to record the activity for, can be false if this activity is not for a user. + 'item_id' => false, // Optional: The ID of the specific item being recorded, e.g. a blog_id + 'secondary_item_id' => false, // Optional: A second ID used to further filter e.g. a comment_id + 'recorded_time' => bp_core_current_time(), // The GMT time that this activity was recorded + 'hide_sitewide' => false // Should this be hidden on the sitewide activity stream? + ); + $params = wp_parse_args( $args, $defaults ); + extract( $params, EXTR_SKIP ); + + // Make sure we are backwards compatible + if ( empty( $component ) && !empty( $component_name ) ) + $component = $component_name; + + if ( empty( $type ) && !empty( $component_action ) ) + $type = $component_action; + + // Setup activity to be added + $activity = new BP_Activity_Activity( $id ); + $activity->user_id = $user_id; + $activity->component = $component; + $activity->type = $type; + $activity->action = $action; + $activity->content = $content; + $activity->primary_link = $primary_link; + $activity->item_id = $item_id; + $activity->secondary_item_id = $secondary_item_id; + $activity->date_recorded = $recorded_time; + $activity->hide_sitewide = $hide_sitewide; + + if ( !$activity->save() ) + return false; + + // If this is an activity comment, rebuild the tree + if ( 'activity_comment' == $activity->type ) + BP_Activity_Activity::rebuild_activity_comment_tree( $activity->item_id ); + + wp_cache_delete( 'bp_activity_sitewide_front', 'bp' ); + do_action( 'bp_activity_add', $params ); + + return $activity->id; +} + +/** + * Post an activity update + * + * @since 1.2.0 + * + * @param array $args See docs for $defaults for details + * + * @global object $bp BuddyPress global settings + * @uses wp_parse_args() + * @uses bp_core_is_user_spammer() + * @uses bp_core_is_user_deleted() + * @uses bp_core_get_userlink() + * @uses bp_activity_add() + * @uses apply_filters() To call the 'bp_activity_new_update_action' hook + * @uses apply_filters() To call the 'bp_activity_new_update_content' hook + * @uses apply_filters() To call the 'bp_activity_new_update_primary_link' hook + * @uses bp_update_user_meta() + * @uses wp_filter_kses() + * @uses do_action() To call the 'bp_activity_posted_update' hook + * + * @return int $activity_id The activity id + */ +function bp_activity_post_update( $args = '' ) { + global $bp; + + $defaults = array( + 'content' => false, + 'user_id' => $bp->loggedin_user->id + ); + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( empty( $content ) || !strlen( trim( $content ) ) ) + return false; + + if ( bp_core_is_user_spammer( $user_id ) || bp_core_is_user_deleted( $user_id ) ) + return false; + + // Record this on the user's profile + $from_user_link = bp_core_get_userlink( $user_id ); + $activity_action = sprintf( __( '%s posted an update', 'buddypress' ), $from_user_link ); + $activity_content = $content; + $primary_link = bp_core_get_userlink( $user_id, false, true ); + + // Now write the values + $activity_id = bp_activity_add( array( + 'user_id' => $user_id, + 'action' => apply_filters( 'bp_activity_new_update_action', $activity_action ), + 'content' => apply_filters( 'bp_activity_new_update_content', $activity_content ), + 'primary_link' => apply_filters( 'bp_activity_new_update_primary_link', $primary_link ), + 'component' => $bp->activity->id, + 'type' => 'activity_update' + ) ); + + // Add this update to the "latest update" usermeta so it can be fetched anywhere. + bp_update_user_meta( $bp->loggedin_user->id, 'bp_latest_update', array( 'id' => $activity_id, 'content' => wp_filter_kses( $content ) ) ); + + do_action( 'bp_activity_posted_update', $content, $user_id, $activity_id ); + + return $activity_id; +} + +/** + * Add an activity comment + * + * @since 1.2.0 + * + * @param array $args See docs for $defaults for details + * + * @global object $bp BuddyPress global settings + * @uses wp_parse_args() + * @uses bp_activity_add() + * @uses apply_filters() To call the 'bp_activity_comment_action' hook + * @uses apply_filters() To call the 'bp_activity_comment_content' hook + * @uses bp_activity_new_comment_notification() + * @uses wp_cache_delete() + * @uses do_action() To call the 'bp_activity_comment_posted' hook + * + * @return int $comment_id The comment id + */ +function bp_activity_new_comment( $args = '' ) { + global $bp; + + $defaults = array( + 'id' => false, + 'content' => false, + 'user_id' => $bp->loggedin_user->id, + 'activity_id' => false, // ID of the root activity item + 'parent_id' => false // ID of a parent comment (optional) + ); + + $params = wp_parse_args( $args, $defaults ); + extract( $params, EXTR_SKIP ); + + if ( empty($content) || empty($user_id) || empty($activity_id) ) + return false; + + if ( empty($parent_id) ) + $parent_id = $activity_id; + + // Check to see if the parent activity is hidden, and if so, hide this comment publically. + $activity = new BP_Activity_Activity( $activity_id ); + $is_hidden = ( (int)$activity->hide_sitewide ) ? 1 : 0; + + // Insert the activity comment + $comment_id = bp_activity_add( array( + 'id' => $id, + 'action' => apply_filters( 'bp_activity_comment_action', sprintf( __( '%s posted a new activity comment', 'buddypress' ), bp_core_get_userlink( $user_id ) ) ), + 'content' => apply_filters( 'bp_activity_comment_content', $content ), + 'component' => $bp->activity->id, + 'type' => 'activity_comment', + 'user_id' => $user_id, + 'item_id' => $activity_id, + 'secondary_item_id' => $parent_id, + 'hide_sitewide' => $is_hidden + ) ); + + // Send an email notification if settings allow + bp_activity_new_comment_notification( $comment_id, $user_id, $params ); + + // Clear the comment cache for this activity + wp_cache_delete( 'bp_activity_comments_' . $parent_id ); + + do_action( 'bp_activity_comment_posted', $comment_id, $params ); + + return $comment_id; +} + +/** + * Fetch the activity_id for an existing activity entry in the DB. + * + * @since 1.2.0 + * + * @param array $args See docs for $defaults for details + * + * @uses wp_parse_args() + * @uses apply_filters() To call the 'bp_activity_get_activity_id' hook + * @uses BP_Activity_Activity::save() {@link BP_Activity_Activity} + * + * @return int $activity_id The activity id + */ +function bp_activity_get_activity_id( $args = '' ) { + $defaults = array( + 'user_id' => false, + 'component' => false, + 'type' => false, + 'item_id' => false, + 'secondary_item_id' => false, + 'action' => false, + 'content' => false, + 'date_recorded' => false, + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_activity_get_activity_id', BP_Activity_Activity::get_id( $user_id, $component, $type, $item_id, $secondary_item_id, $action, $content, $date_recorded ) ); +} + +/** + * Deleting Activity + * + * If you're looking to hook into one action that provides the ID(s) of + * the activity/activities deleted, then use: + * + * add_action( 'bp_activity_deleted_activities', 'my_function' ); + * + * The action passes one parameter that is a single activity ID or an + * array of activity IDs depending on the number deleted. + * + * If you are deleting an activity comment please use bp_activity_delete_comment(); + * + * @since 1.0.0 + * + * @param array $args See docs for $defaults for details + * + * @global object $bp BuddyPress global settings + * @uses wp_parse_args() + * @uses bp_activity_adjust_mention_count() + * @uses BP_Activity_Activity::delete() {@link BP_Activity_Activity} + * @uses do_action() To call the 'bp_before_activity_delete' hook + * @uses bp_get_user_meta() + * @uses bp_delete_user_meta() + * @uses do_action() To call the 'bp_activity_delete' hook + * @uses do_action() To call the 'bp_activity_deleted_activities' hook + * @uses wp_cache_delete() + * + * @return bool True on success, false on failure + */ +function bp_activity_delete( $args = '' ) { + global $bp; + + // Pass one or more the of following variables to delete by those variables + $defaults = array( + 'id' => false, + 'action' => false, + 'content' => false, + 'component' => false, + 'type' => false, + 'primary_link' => false, + 'user_id' => false, + 'item_id' => false, + 'secondary_item_id' => false, + 'date_recorded' => false, + 'hide_sitewide' => false + ); + + $args = wp_parse_args( $args, $defaults ); + + // Adjust the new mention count of any mentioned member + bp_activity_adjust_mention_count( $args['id'], 'delete' ); + + if ( !$activity_ids_deleted = BP_Activity_Activity::delete( $args ) ) + return false; + + // Check if the user's latest update has been deleted + if ( empty( $args['user_id'] ) ) + $user_id = $bp->loggedin_user->id; + else + $user_id = $args['user_id']; + + do_action( 'bp_before_activity_delete', $args ); + + $latest_update = bp_get_user_meta( $user_id, 'bp_latest_update', true ); + if ( !empty( $latest_update ) ) { + if ( in_array( (int)$latest_update['id'], (array)$activity_ids_deleted ) ) + bp_delete_user_meta( $user_id, 'bp_latest_update' ); + } + + do_action( 'bp_activity_delete', $args ); + do_action( 'bp_activity_deleted_activities', $activity_ids_deleted ); + + wp_cache_delete( 'bp_activity_sitewide_front', 'bp' ); + + return true; +} + + /** + * Delete an activity item by activity id + * + * You should use bp_activity_delete() instead + * + * @since 1.1.0 + * @deprecated 1.2.0 + * + * @param array $args See docs for $defaults for details + * + * @global object $bp BuddyPress global settings + * @uses wp_parse_args() + * @uses bp_activity_delete() + * + * @return bool True on success, false on failure + */ + function bp_activity_delete_by_item_id( $args = '' ) { + global $bp; + + $defaults = array( 'item_id' => false, 'component' => false, 'type' => false, 'user_id' => false, 'secondary_item_id' => false ); + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return bp_activity_delete( array( 'item_id' => $item_id, 'component' => $component, 'type' => $type, 'user_id' => $user_id, 'secondary_item_id' => $secondary_item_id ) ); + } + + /** + * Delete an activity item by activity id + * + * You should use bp_activity_delete() instead + * + * @since 1.1.0 + * @deprecated 1.2.0 + * + * @param int $activity_id The activity id + * + * @uses bp_activity_delete() + * + * @return bool True on success, false on failure + */ + function bp_activity_delete_by_activity_id( $activity_id ) { + return bp_activity_delete( array( 'id' => $activity_id ) ); + } + + /** + * Delete an activity item by it's content + * + * You should use bp_activity_delete() instead + * + * @since 1.1.0 + * @deprecated 1.2.0 + * + * @param int $user_id The user id + * @param string $content The activity id + * @param string $component The activity component + * @param string $type The activity type + * + * @uses bp_activity_delete() + * + * @return bool True on success, false on failure + */ + function bp_activity_delete_by_content( $user_id, $content, $component, $type ) { + return bp_activity_delete( array( 'user_id' => $user_id, 'content' => $content, 'component' => $component, 'type' => $type ) ); + } + + /** + * Delete a user's activity for a component + * + * You should use bp_activity_delete() instead + * + * @since 1.1.0 + * @deprecated 1.2.0 + * + * @param int $user_id The user id + * @param string $component The activity component + * + * @uses bp_activity_delete() + * + * @return bool True on success, false on failure + */ + function bp_activity_delete_for_user_by_component( $user_id, $component ) { + return bp_activity_delete( array( 'user_id' => $user_id, 'component' => $component ) ); + } + +/** + * Delete an activity comment + * + * @since 1.2.0 + * + * @param int $activity_id The activity id + * @param int $comment_id The activity comment id + * + * @uses apply_filters() To call the 'bp_activity_delete_comment_pre' hook + * @uses bp_activity_delete_children() + * @uses bp_activity_delete() + * @uses BP_Activity_Activity::rebuild_activity_comment_tree() {@link BP_Activity_Activity} + * @uses do_action() To call the 'bp_activity_delete_comment' hook + * + * @return bool True on success, false on failure + */ +function bp_activity_delete_comment( $activity_id, $comment_id ) { + /*** + * You may want to hook into this filter if you want to override this function and + * handle the deletion of child comments differently. Make sure you return false. + */ + if ( !apply_filters( 'bp_activity_delete_comment_pre', true, $activity_id, $comment_id ) ) + return false; + + // Delete any children of this comment. + bp_activity_delete_children( $activity_id, $comment_id ); + + // Delete the actual comment + if ( !bp_activity_delete( array( 'id' => $comment_id, 'type' => 'activity_comment' ) ) ) + return false; + + // Recalculate the comment tree + BP_Activity_Activity::rebuild_activity_comment_tree( $activity_id ); + + do_action( 'bp_activity_delete_comment', $activity_id, $comment_id ); + + return true; +} + + /** + * Delete an activity comment's children + * + * @since 1.2.0 + * + * @param int $activity_id The activity id + * @param int $comment_id The activity comment id + * + * @uses BP_Activity_Activity::get_child_comments() {@link BP_Activity_Activity} + * @uses bp_activity_delete_children() + * @uses bp_activity_delete() + */ + function bp_activity_delete_children( $activity_id, $comment_id) { + // Recursively delete all children of this comment. + if ( $children = BP_Activity_Activity::get_child_comments( $comment_id ) ) { + foreach( (array)$children as $child ) + bp_activity_delete_children( $activity_id, $child->id ); + } + bp_activity_delete( array( 'secondary_item_id' => $comment_id, 'type' => 'activity_comment', 'item_id' => $activity_id ) ); + } + +/** + * Get the permalink for a single activity item + * + * When only the $activity_id param is passed, BP has to instantiate a new BP_Activity_Activity + * object. To save yourself some processing overhead, be sure to pass the full $activity_obj param + * as well, if you already have it available. + * + * @since 1.2.0 + * + * @param int $activity_id The unique id of the activity object + * @param object $activity_obj (optional) The activity object + * + * @global object $bp BuddyPress global settings + * @uses bp_get_root_domain() + * @uses bp_get_activity_root_slug() + * @uses apply_filters_ref_array() To call the 'bp_activity_get_permalink' hook + * + * @return string $link Permalink for the activity item + */ +function bp_activity_get_permalink( $activity_id, $activity_obj = false ) { + global $bp; + + if ( !$activity_obj ) + $activity_obj = new BP_Activity_Activity( $activity_id ); + + if ( isset( $activity_obj->current_comment ) ) { + $activity_obj = $activity_obj->current_comment; + } + + if ( 'new_blog_post' == $activity_obj->type || 'new_blog_comment' == $activity_obj->type || 'new_forum_topic' == $activity_obj->type || 'new_forum_post' == $activity_obj->type ) + $link = $activity_obj->primary_link; + else { + if ( 'activity_comment' == $activity_obj->type ) + $link = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $activity_obj->item_id . '/'; + else + $link = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $activity_obj->id . '/'; + } + + return apply_filters_ref_array( 'bp_activity_get_permalink', array( $link, &$activity_obj ) ); +} + +/** + * Hide a user's activity + * + * @since 1.2.0 + * + * @param int $user_id The user id + * + * @uses BP_Activity_Activity::hide_all_for_user() {@link BP_Activity_Activity} + * + * @return bool True on success, false on failure + */ +function bp_activity_hide_user_activity( $user_id ) { + return BP_Activity_Activity::hide_all_for_user( $user_id ); +} + +/** + * Take content, remove all images and replace them with one thumbnail image. + * + * @since 1.2.0 + * + * @param string $content The content to work with + * @param string $link Optional. The URL that the image should link to + * + * @uses esc_attr() + * @uses apply_filters() To call the 'bp_activity_thumbnail_content_images' hook + * + * @return string $content The content with images stripped and replaced with a single thumb. + */ +function bp_activity_thumbnail_content_images( $content, $link = false ) { + global $post; + + preg_match_all( '/]*>/Ui', $content, $matches ); + $content = preg_replace('/]*>/Ui', '', $content ); + + if ( !empty( $matches ) && !empty( $matches[0] ) ) { + // Get the SRC value + preg_match( '/]{1}/i', $matches[0][0], $src ); + + // Get the width and height + preg_match( '/]{1}/i', $matches[0][0], $height ); + preg_match( '/]{1}/i', $matches[0][0], $width ); + + if ( !empty( $src ) ) { + $src = substr( substr( str_replace( 'src=', '', $src[1] ), 0, -1 ), 1 ); + $height = substr( substr( str_replace( 'height=', '', $height[1] ), 0, -1 ), 1 ); + $width = substr( substr( str_replace( 'width=', '', $width[1] ), 0, -1 ), 1 ); + + if ( empty( $width ) || empty( $height ) ) { + $width = 100; + $height = 100; + } + + $ratio = (int)$width / (int)$height; + $new_height = (int)$height >= 100 ? 100 : $height; + $new_width = $new_height * $ratio; + + $image = '' . __( 'Thumbnail', 'buddypress' ) . ''; + + if ( !empty( $link ) ) { + $image = '' . $image . ''; + } + + $content = $image . $content; + } + } + + return apply_filters( 'bp_activity_thumbnail_content_images', $content, $matches ); +} + +/** Embeds *******************************************************************/ + +/** + * Grabs the activity update ID and attempts to retrieve the oEmbed cache (if it exists) + * during the activity loop. If no cache and link is embeddable, cache it. + * + * This does not cover recursive activity comments, as they do not use a real loop. + * For that, see {@link bp_activity_comment_embed()}. + * + * @since 1.5 + * + * @see BP_Embed + * @see bp_embed_activity_cache() + * @see bp_embed_activity_save_cache() + * + * @uses add_filter() To attach 'bp_get_activity_id' to 'embed_post_id' + * @uses add_filter() To attach 'bp_embed_activity_cache' to 'bp_embed_get_cache' + * @uses add_action() To attach 'bp_embed_activity_save_cache' to 'bp_embed_update_cache' + */ +function bp_activity_embed() { + add_filter( 'embed_post_id', 'bp_get_activity_id' ); + add_filter( 'bp_embed_get_cache', 'bp_embed_activity_cache', 10, 3 ); + add_action( 'bp_embed_update_cache', 'bp_embed_activity_save_cache', 10, 3 ); +} +add_action( 'activity_loop_start', 'bp_activity_embed' ); + +/** + * Grabs the activity comment ID and attempts to retrieve the oEmbed cache (if it exists) + * when BP is recursing through activity comments {@link bp_activity_recurse_comments()}. + * If no cache and link is embeddable, cache it. + * + * @since 1.5 + * + * @see BP_Embed + * @see bp_embed_activity_cache() + * @see bp_embed_activity_save_cache() + * + * @uses add_filter() To attach 'bp_get_activity_comment_id' to 'embed_post_id' + * @uses add_filter() To attach 'bp_embed_activity_cache' to 'bp_embed_get_cache' + * @uses add_action() To attach 'bp_embed_activity_save_cache' to 'bp_embed_update_cache' + */ +function bp_activity_comment_embed() { + add_filter( 'embed_post_id', 'bp_get_activity_comment_id' ); + add_filter( 'bp_embed_get_cache', 'bp_embed_activity_cache', 10, 3 ); + add_action( 'bp_embed_update_cache', 'bp_embed_activity_save_cache', 10, 3 ); +} +add_action( 'bp_before_activity_comment', 'bp_activity_comment_embed' ); + +/** + * When a user clicks on a "Read More" item, make sure embeds are correctly parsed and shown for the expanded content. + * + * @since 1.5 + * + * @see BP_Embed + * + * @param object $activity The activity that is being expanded + * + * @global object $bp BuddyPress global settings + * @uses add_filter() To attach create_function() to 'embed_post_id' + * @uses add_filter() To attach 'bp_embed_activity_cache' to 'bp_embed_get_cache' + * @uses add_action() To attach 'bp_embed_activity_save_cache' to 'bp_embed_update_cache' + */ +function bp_dtheme_embed_read_more( $activity ) { + global $bp; + + $bp->activity->read_more_id = $activity->id; + + add_filter( 'embed_post_id', create_function( '', 'global $bp; return $bp->activity->read_more_id;' ) ); + add_filter( 'bp_embed_get_cache', 'bp_embed_activity_cache', 10, 3 ); + add_action( 'bp_embed_update_cache', 'bp_embed_activity_save_cache', 10, 3 ); +} +add_action( 'bp_dtheme_get_single_activity_content', 'bp_dtheme_embed_read_more' ); + +/** + * Removes the 'embed_post_id' filter after {@link bp_activity_recurse_comments()} + * is rendered to avoid conflict with the 'embed_post_id' filter in + * {@link bp_activity_embed()} or any other component embeds. + * + * @since 1.5 + * + * @see bp_activity_comment_embed() + * + * @uses remove_filter() To remove 'bp_get_activity_comment_id' from 'embed_post_id' + */ +function bp_activity_comment_embed_after_recurse() { + remove_filter( 'embed_post_id', 'bp_get_activity_comment_id' ); +} +add_action( 'bp_after_activity_comment', 'bp_activity_comment_embed_after_recurse' ); + +/** + * Wrapper function for {@link bp_activity_get_meta()}. + * Used during {@link BP_Embed::parse_oembed()} via {@link bp_activity_embed()}. + * + * @since 1.5 + * + * @uses bp_activity_get_meta() + * + * @return mixed The activity meta + */ +function bp_embed_activity_cache( $cache, $id, $cachekey ) { + return bp_activity_get_meta( $id, $cachekey ); +} + +/** + * Wrapper function for {@link bp_activity_update_meta()}. + * Used during {@link BP_Embed::parse_oembed()} via {@link bp_activity_embed()}. + * + * @since 1.5 + * + * @uses bp_activity_update_meta() + */ +function bp_embed_activity_save_cache( $cache, $cachekey, $id ) { + bp_activity_update_meta( $id, $cachekey, $cache ); +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-loader.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-loader.php new file mode 100644 index 0000000..a31b777 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-loader.php @@ -0,0 +1,320 @@ +__construct(); + } + + function __construct() { + parent::start( + 'activity', + __( 'Activity Streams', 'buddypress' ), + BP_PLUGIN_DIR + ); + } + + /** + * Include files + * + * @since 1.5.0 + */ + function includes() { + // Files to include + $includes = array( + 'actions', + 'screens', + 'filters', + 'classes', + 'template', + 'functions', + 'notifications', + ); + + parent::includes( $includes ); + } + + /** + * Setup globals + * + * The BP_ACTIVITY_SLUG constant is deprecated, and only used here for + * backwards compatibility. + * + * @since 1.5.0 + * + * @global object $bp BuddyPress global settings + */ + function setup_globals() { + global $bp; + + // Define a slug, if necessary + if ( !defined( 'BP_ACTIVITY_SLUG' ) ) + define( 'BP_ACTIVITY_SLUG', $this->id ); + + // Global tables for activity component + $global_tables = array( + 'table_name' => $bp->table_prefix . 'bp_activity', + 'table_name_meta' => $bp->table_prefix . 'bp_activity_meta', + ); + + // All globals for activity component. + // Note that global_tables is included in this array. + $globals = array( + 'path' => BP_PLUGIN_DIR, + 'slug' => BP_ACTIVITY_SLUG, + 'root_slug' => isset( $bp->pages->activity->slug ) ? $bp->pages->activity->slug : BP_ACTIVITY_SLUG, + 'has_directory' => true, + 'search_string' => __( 'Search Activity...', 'buddypress' ), + 'global_tables' => $global_tables, + 'notification_callback' => 'bp_activity_format_notifications', + ); + + parent::setup_globals( $globals ); + } + + /** + * Setup BuddyBar navigation + * + * @since 1.5.0 + * + * @global object $bp BuddyPress global settings + * @uses bp_is_active() + * @uses is_user_logged_in() + * @uses bp_get_friends_slug() + * @uses bp_get_groups_slug() + */ + function setup_nav() { + global $bp; + + // Add 'Activity' to the main navigation + $main_nav = array( + 'name' => __( 'Activity', 'buddypress' ), + 'slug' => $this->slug, + 'position' => 10, + 'screen_function' => 'bp_activity_screen_my_activity', + 'default_subnav_slug' => 'just-me', + 'item_css_id' => $this->id + ); + + // Stop if there is no user displayed or logged in + if ( !is_user_logged_in() && !isset( $bp->displayed_user->id ) ) + return; + + // Determine user to use + if ( isset( $bp->displayed_user->domain ) ) + $user_domain = $bp->displayed_user->domain; + elseif ( isset( $bp->loggedin_user->domain ) ) + $user_domain = $bp->loggedin_user->domain; + else + return; + + // User link + $activity_link = trailingslashit( $user_domain . $this->slug ); + + // Add the subnav items to the activity nav item if we are using a theme that supports this + $sub_nav[] = array( + 'name' => __( 'Personal', 'buddypress' ), + 'slug' => 'just-me', + 'parent_url' => $activity_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_activity_screen_my_activity', + 'position' => 10 + ); + + // @ mentions + $sub_nav[] = array( + 'name' => __( 'Mentions', 'buddypress' ), + 'slug' => 'mentions', + 'parent_url' => $activity_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_activity_screen_mentions', + 'position' => 20, + 'item_css_id' => 'activity-mentions' + ); + + // Favorite activity items + $sub_nav[] = array( + 'name' => __( 'Favorites', 'buddypress' ), + 'slug' => 'favorites', + 'parent_url' => $activity_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_activity_screen_favorites', + 'position' => 30, + 'item_css_id' => 'activity-favs' + ); + + // Additional menu if friends is active + if ( bp_is_active( 'friends' ) ) { + $sub_nav[] = array( + 'name' => __( 'Friends', 'buddypress' ), + 'slug' => bp_get_friends_slug(), + 'parent_url' => $activity_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_activity_screen_friends', + 'position' => 40, + 'item_css_id' => 'activity-friends' + ) ; + } + + // Additional menu if groups is active + if ( bp_is_active( 'groups' ) ) { + $sub_nav[] = array( + 'name' => __( 'Groups', 'buddypress' ), + 'slug' => bp_get_groups_slug(), + 'parent_url' => $activity_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_activity_screen_groups', + 'position' => 50, + 'item_css_id' => 'activity-groups' + ); + } + + parent::setup_nav( $main_nav, $sub_nav ); + } + + /** + * Set up the admin bar + * + * @since 1.5.0 + * + * @global object $bp BuddyPress global settings + * @uses is_user_logged_in() + * @uses trailingslashit() + * @uses bp_get_total_mention_count_for_user() + * @uses bp_loggedin_user_id() + * @uses bp_is_active() + * @uses bp_get_friends_slug() + * @uses bp_get_groups_slug() + */ + function setup_admin_bar() { + global $bp; + + // Prevent debug notices + $wp_admin_nav = array(); + + // Menus for logged in user + if ( is_user_logged_in() ) { + + // Setup the logged in user variables + $user_domain = $bp->loggedin_user->domain; + $activity_link = trailingslashit( $user_domain . $this->slug ); + + // Unread message count + if ( $count = bp_get_total_mention_count_for_user( bp_loggedin_user_id() ) ) { + $title = sprintf( __( 'Mentions %s', 'buddypress' ), $count ); + } else { + $title = __( 'Mentions', 'buddypress' ); + } + + // Add the "Activity" sub menu + $wp_admin_nav[] = array( + 'parent' => $bp->my_account_menu_id, + 'id' => 'my-account-' . $this->id, + 'title' => __( 'Activity', 'buddypress' ), + 'href' => trailingslashit( $activity_link ) + ); + + // Mentions + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-mentions', + 'title' => $title, + 'href' => trailingslashit( $activity_link . 'mentions' ) + ); + + // Personal + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-personal', + 'title' => __( 'Personal', 'buddypress' ), + 'href' => trailingslashit( $activity_link ) + ); + + // Favorites + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-favorites', + 'title' => __( 'Favorites', 'buddypress' ), + 'href' => trailingslashit( $activity_link . 'favorites' ) + ); + + // Friends? + if ( bp_is_active( 'friends' ) ) { + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-friends', + 'title' => __( 'Friends', 'buddypress' ), + 'href' => trailingslashit( $activity_link . bp_get_friends_slug() ) + ); + } + + // Groups? + if ( bp_is_active( 'groups' ) ) { + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-groups', + 'title' => __( 'Groups', 'buddypress' ), + 'href' => trailingslashit( $activity_link . bp_get_groups_slug() ) + ); + } + } + + parent::setup_admin_bar( $wp_admin_nav ); + } + + /** + * Sets up the title for pages and + * + * @since 1.5.0 + * + * @global object $bp BuddyPress global settings + * @uses bp_is_activity_component() + * @uses bp_is_my_profile() + * @uses bp_core_fetch_avatar() + */ + function setup_title() { + global $bp; + + // Adjust title based on view + if ( bp_is_activity_component() ) { + if ( bp_is_my_profile() ) { + $bp->bp_options_title = __( 'My Activity', 'buddypress' ); + } else { + $bp->bp_options_avatar = bp_core_fetch_avatar( array( + 'item_id' => $bp->displayed_user->id, + 'type' => 'thumb' + ) ); + $bp->bp_options_title = $bp->displayed_user->fullname; + } + } + + parent::setup_title(); + } +} + +// Create the activity component +$bp->activity = new BP_Activity_Component(); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-notifications.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-notifications.php new file mode 100644 index 0000000..e144395 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-notifications.php @@ -0,0 +1,225 @@ +<?php + +/** + * BuddyPress Activity Notifications + * + * @package BuddyPress + * @subpackage ActivityNotifications + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Sends an email notification and a BP notification when someone mentions you in an update + * + * @since 1.2.0 + * + * @param int $activity_id The id of the activity update + * @param int $receiver_user_id The unique user_id of the user who is receiving the update + * + * @global object $bp BuddyPress global settings + * @uses bp_core_add_notification() + * @uses bp_get_user_meta() + * @uses bp_core_get_user_displayname() + * @uses bp_activity_get_permalink() + * @uses bp_core_get_user_domain() + * @uses bp_get_settings_slug() + * @uses bp_activity_filter_kses() + * @uses bp_core_get_core_userdata() + * @uses wp_specialchars_decode() + * @uses get_blog_option() + * @uses bp_is_active() + * @uses bp_is_group() + * @uses bp_get_current_group_name() + * @uses apply_filters() To call the 'bp_activity_at_message_notification_to' hook + * @uses apply_filters() To call the 'bp_activity_at_message_notification_subject' hook + * @uses apply_filters() To call the 'bp_activity_at_message_notification_message' hook + * @uses wp_mail() + * @uses do_action() To call the 'bp_activity_sent_mention_email' hook + */ +function bp_activity_at_message_notification( $activity_id, $receiver_user_id ) { + global $bp; + + $activity = new BP_Activity_Activity( $activity_id ); + + $subject = ''; + $message = ''; + + // Add the BP notification + bp_core_add_notification( $activity_id, $receiver_user_id, 'activity', 'new_at_mention', $activity->user_id ); + + // Now email the user with the contents of the message (if they have enabled email notifications) + if ( 'no' != bp_get_user_meta( $receiver_user_id, 'notification_activity_new_mention', true ) ) { + $poster_name = bp_core_get_user_displayname( $activity->user_id ); + + $message_link = bp_activity_get_permalink( $activity_id ); + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $receiver_user_id ) . $settings_slug . '/notifications/'; + + $poster_name = stripslashes( $poster_name ); + $content = bp_activity_filter_kses( strip_tags( stripslashes( $activity->content ) ) ); + + // Set up and send the message + $ud = bp_core_get_core_userdata( $receiver_user_id ); + $to = $ud->user_email; + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + $subject = '[' . $sitename . '] ' . sprintf( __( '%s mentioned you in an update', 'buddypress' ), $poster_name ); + + if ( bp_is_active( 'groups' ) && bp_is_group() ) { + $message = sprintf( __( +'%1$s mentioned you in the group "%2$s": + +"%3$s" + +To view and respond to the message, log in and visit: %4$s + +--------------------- +', 'buddypress' ), $poster_name, bp_get_current_group_name(), $content, $message_link ); + } else { + $message = sprintf( __( +'%1$s mentioned you in an update: + +"%2$s" + +To view and respond to the message, log in and visit: %3$s + +--------------------- +', 'buddypress' ), $poster_name, $content, $message_link ); + } + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'bp_activity_at_message_notification_to', $to ); + $subject = apply_filters( 'bp_activity_at_message_notification_subject', $subject, $poster_name ); + $message = apply_filters( 'bp_activity_at_message_notification_message', $message, $poster_name, $content, $message_link, $settings_link ); + + wp_mail( $to, $subject, $message ); + } + + do_action( 'bp_activity_sent_mention_email', $activity, $subject, $message, $content ); +} + +/** + * Sends an email notification and a BP notification when someone mentions you in an update + * + * @since 1.2.0 + * + * @param int $comment_id The comment id + * @param int $commenter_id The unique user_id of the user who posted the comment + * @param array $params {@link bp_activity_new_comment()} + * + * @global object $bp BuddyPress global settings + * @uses bp_get_user_meta() + * @uses bp_core_get_user_displayname() + * @uses bp_activity_get_permalink() + * @uses bp_core_get_user_domain() + * @uses bp_get_settings_slug() + * @uses bp_activity_filter_kses() + * @uses bp_core_get_core_userdata() + * @uses wp_specialchars_decode() + * @uses get_blog_option() + * @uses bp_get_root_blog_id() + * @uses apply_filters() To call the 'bp_activity_new_comment_notification_to' hook + * @uses apply_filters() To call the 'bp_activity_new_comment_notification_subject' hook + * @uses apply_filters() To call the 'bp_activity_new_comment_notification_message' hook + * @uses wp_mail() + * @uses do_action() To call the 'bp_activity_sent_reply_to_update_email' hook + * @uses apply_filters() To call the 'bp_activity_new_comment_notification_comment_author_to' hook + * @uses apply_filters() To call the 'bp_activity_new_comment_notification_comment_author_subject' hook + * @uses apply_filters() To call the 'bp_activity_new_comment_notification_comment_author_message' hook + * @uses do_action() To call the 'bp_activity_sent_reply_to_reply_email' hook + */ +function bp_activity_new_comment_notification( $comment_id, $commenter_id, $params ) { + global $bp; + + extract( $params ); + + $original_activity = new BP_Activity_Activity( $activity_id ); + + if ( $original_activity->user_id != $commenter_id && 'no' != bp_get_user_meta( $original_activity->user_id, 'notification_activity_new_reply', true ) ) { + $poster_name = bp_core_get_user_displayname( $commenter_id ); + $thread_link = bp_activity_get_permalink( $activity_id ); + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $original_activity->user_id ) . $settings_slug . '/notifications/'; + + $poster_name = stripslashes( $poster_name ); + $content = bp_activity_filter_kses( stripslashes($content) ); + + // Set up and send the message + $ud = bp_core_get_core_userdata( $original_activity->user_id ); + $to = $ud->user_email; + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + $subject = '[' . $sitename . '] ' . sprintf( __( '%s replied to one of your updates', 'buddypress' ), $poster_name ); + +$message = sprintf( __( +'%1$s replied to one of your updates: + +"%2$s" + +To view your original update and all comments, log in and visit: %3$s + +--------------------- +', 'buddypress' ), $poster_name, $content, $thread_link ); + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'bp_activity_new_comment_notification_to', $to ); + $subject = apply_filters( 'bp_activity_new_comment_notification_subject', $subject, $poster_name ); + $message = apply_filters( 'bp_activity_new_comment_notification_message', $message, $poster_name, $content, $thread_link, $settings_link ); + + wp_mail( $to, $subject, $message ); + + do_action( 'bp_activity_sent_reply_to_update_email', $original_activity->user_id, $subject, $message, $comment_id, $commenter_id, $params ); + } + + /*** + * If this is a reply to another comment, send an email notification to the + * author of the immediate parent comment. + */ + if ( $activity_id == $parent_id ) + return false; + + $parent_comment = new BP_Activity_Activity( $parent_id ); + + if ( $parent_comment->user_id != $commenter_id && $original_activity->user_id != $parent_comment->user_id && 'no' != bp_get_user_meta( $parent_comment->user_id, 'notification_activity_new_reply', true ) ) { + $poster_name = bp_core_get_user_displayname( $commenter_id ); + $thread_link = bp_activity_get_permalink( $activity_id ); + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $parent_comment->user_id ) . $settings_slug . '/notifications/'; + + // Set up and send the message + $ud = bp_core_get_core_userdata( $parent_comment->user_id ); + $to = $ud->user_email; + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + $subject = '[' . $sitename . '] ' . sprintf( __( '%s replied to one of your comments', 'buddypress' ), $poster_name ); + + $poster_name = stripslashes( $poster_name ); + $content = bp_activity_filter_kses( stripslashes( $content ) ); + +$message = sprintf( __( +'%1$s replied to one of your comments: + +"%2$s" + +To view the original activity, your comment and all replies, log in and visit: %3$s + +--------------------- +', 'buddypress' ), $poster_name, $content, $thread_link ); + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'bp_activity_new_comment_notification_comment_author_to', $to ); + $subject = apply_filters( 'bp_activity_new_comment_notification_comment_author_subject', $subject, $poster_name ); + $message = apply_filters( 'bp_activity_new_comment_notification_comment_author_message', $message, $poster_name, $content, $settings_link, $thread_link ); + + wp_mail( $to, $subject, $message ); + + do_action( 'bp_activity_sent_reply_to_reply_email', $original_activity->user_id, $subject, $message, $comment_id, $commenter_id, $params ); + } +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-screens.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-screens.php new file mode 100644 index 0000000..ff40b5b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-screens.php @@ -0,0 +1,308 @@ +<?php + +/** + * BuddyPress Activity Screens + * + * @package BuddyPress + * @subpackage ActivityScreens + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Activity screen index + * + * @since 1.5.0 + * + * @uses bp_displayed_user_id() + * @uses bp_is_activity_component() + * @uses bp_current_action() + * @uses bp_update_is_directory() + * @uses do_action() To call the 'bp_activity_screen_index' hook + * @uses bp_core_load_template() + * @uses apply_filters() To call the 'bp_activity_screen_index' hook + */ +function bp_activity_screen_index() { + if ( !bp_displayed_user_id() && bp_is_activity_component() && !bp_current_action() ) { + bp_update_is_directory( true, 'activity' ); + + do_action( 'bp_activity_screen_index' ); + + bp_core_load_template( apply_filters( 'bp_activity_screen_index', 'activity/index' ) ); + } +} +add_action( 'bp_screens', 'bp_activity_screen_index' ); + +/** + * Activity screen 'my activity' index + * + * @since 1.0.0 + * + * @uses do_action() To call the 'bp_activity_screen_my_activity' hook + * @uses bp_core_load_template() + * @uses apply_filters() To call the 'bp_activity_template_my_activity' hook + */ +function bp_activity_screen_my_activity() { + do_action( 'bp_activity_screen_my_activity' ); + bp_core_load_template( apply_filters( 'bp_activity_template_my_activity', 'members/single/home' ) ); +} + +/** + * Activity screen 'friends' index + * + * @since 1.0.0 + * + * @uses bp_is_active() + * @uses bp_update_is_item_admin() + * @uses is_super_admin() + * @uses do_action() To call the 'bp_activity_screen_friends' hook + * @uses bp_core_load_template() + * @uses apply_filters() To call the 'bp_activity_template_friends_activity' hook + */ +function bp_activity_screen_friends() { + if ( !bp_is_active( 'friends' ) ) + return false; + + bp_update_is_item_admin( is_super_admin(), 'activity' ); + do_action( 'bp_activity_screen_friends' ); + bp_core_load_template( apply_filters( 'bp_activity_template_friends_activity', 'members/single/home' ) ); +} + +/** + * Activity screen 'groups' index + * + * @since 1.2.0 + * + * @uses bp_is_active() + * @uses bp_update_is_item_admin() + * @uses is_super_admin() + * @uses do_action() To call the 'bp_activity_screen_groups' hook + * @uses bp_core_load_template() + * @uses apply_filters() To call the 'bp_activity_template_groups_activity' hook + */ +function bp_activity_screen_groups() { + if ( !bp_is_active( 'groups' ) ) + return false; + + bp_update_is_item_admin( is_super_admin(), 'activity' ); + do_action( 'bp_activity_screen_groups' ); + bp_core_load_template( apply_filters( 'bp_activity_template_groups_activity', 'members/single/home' ) ); +} + +/** + * Activity screen 'favorites' index + * + * @since 1.2.0 + * + * @uses bp_update_is_item_admin() + * @uses is_super_admin() + * @uses do_action() To call the 'bp_activity_screen_favorites' hook + * @uses bp_core_load_template() + * @uses apply_filters() To call the 'bp_activity_template_favorite_activity' hook + */ +function bp_activity_screen_favorites() { + bp_update_is_item_admin( is_super_admin(), 'activity' ); + do_action( 'bp_activity_screen_favorites' ); + bp_core_load_template( apply_filters( 'bp_activity_template_favorite_activity', 'members/single/home' ) ); +} + +/** + * Activity screen 'mentions' index + * + * @since 1.2.0 + * + * @uses bp_update_is_item_admin() + * @uses is_super_admin() + * @uses do_action() To call the 'bp_activity_screen_mentions' hook + * @uses bp_core_load_template() + * @uses apply_filters() To call the 'bp_activity_template_mention_activity' hook + */ +function bp_activity_screen_mentions() { + bp_update_is_item_admin( is_super_admin(), 'activity' ); + do_action( 'bp_activity_screen_mentions' ); + bp_core_load_template( apply_filters( 'bp_activity_template_mention_activity', 'members/single/home' ) ); +} + +/** + * Removes activity notifications from the notification menu when a user clicks on them and + * is taken to a specific screen. + * + * @since 1.5.0 + * + * @global object $bp BuddyPress global settings + * @uses bp_core_delete_notifications_by_type() + */ +function bp_activity_remove_screen_notifications() { + global $bp; + + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->activity->id, 'new_at_mention' ); +} +add_action( 'bp_activity_screen_my_activity', 'bp_activity_remove_screen_notifications' ); +add_action( 'bp_activity_screen_single_activity_permalink', 'bp_activity_remove_screen_notifications' ); +add_action( 'bp_activity_screen_mentions', 'bp_activity_remove_screen_notifications' ); + +/** + * Reset the logged-in user's new mentions data when he visits his mentions screen + * + * @since 1.5.0 + * + * @uses bp_is_my_profile() + * @uses bp_activity_clear_new_mentions() + * @uses bp_loggedin_user_id() + */ +function bp_activity_reset_my_new_mentions() { + if ( bp_is_my_profile() ) + bp_activity_clear_new_mentions( bp_loggedin_user_id() ); +} +add_action( 'bp_activity_screen_mentions', 'bp_activity_reset_my_new_mentions' ); + +/** + * Reset the logged-in user's new mentions data when he visits his mentions screen + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses bp_is_activity_component() + * @uses bp_activity_get_specific() + * @uses bp_current_action() + * @uses bp_action_variables() + * @uses bp_do_404() + * @uses bp_is_active() + * @uses groups_get_group() + * @uses groups_is_user_member() + * @uses apply_filters_ref_array() To call the 'bp_activity_permalink_access' hook + * @uses do_action() To call the 'bp_activity_screen_single_activity_permalink' hook + * @uses bp_core_add_message() + * @uses is_user_logged_in() + * @uses bp_core_redirect() + * @uses site_url() + * @uses esc_url() + * @uses bp_get_root_domain() + * @uses bp_get_activity_root_slug() + * @uses bp_core_load_template() + * @uses apply_filters() To call the 'bp_activity_template_profile_activity_permalink' hook + */ +function bp_activity_screen_single_activity_permalink() { + global $bp; + + // No displayed user or not viewing activity component + if ( !bp_is_activity_component() ) + return false; + + if ( empty( $bp->current_action ) || !is_numeric( $bp->current_action ) ) + return false; + + // Get the activity details + $activity = bp_activity_get_specific( array( 'activity_ids' => bp_current_action(), 'show_hidden' => true ) ); + + // 404 if activity does not exist + if ( empty( $activity['activities'][0] ) || bp_action_variables() ) { + bp_do_404(); + return; + + } else { + $activity = $activity['activities'][0]; + } + + // Default access is true + $has_access = true; + + // If activity is from a group, do an extra cap check + if ( isset( $bp->groups->id ) && $activity->component == $bp->groups->id ) { + + // Activity is from a group, but groups is currently disabled + if ( !bp_is_active( 'groups') ) { + bp_do_404(); + return; + } + + // Check to see if the group is not public, if so, check the + // user has access to see this activity + if ( $group = groups_get_group( array( 'group_id' => $activity->item_id ) ) ) { + + // Group is not public + if ( 'public' != $group->status ) { + + // User is not a member of group + if ( !groups_is_user_member( $bp->loggedin_user->id, $group->id ) ) { + $has_access = false; + } + } + } + } + + // Allow access to be filtered + $has_access = apply_filters_ref_array( 'bp_activity_permalink_access', array( $has_access, &$activity ) ); + + // Allow additional code execution + do_action( 'bp_activity_screen_single_activity_permalink', $activity, $has_access ); + + // Access is specifically disallowed + if ( false === $has_access ) { + + // User feedback + bp_core_add_message( __( 'You do not have access to this activity.', 'buddypress' ), 'error' ); + + // Redirect based on logged in status + is_user_logged_in() ? + bp_core_redirect( $bp->loggedin_user->domain ) : + bp_core_redirect( site_url( 'wp-login.php?redirect_to=' . esc_url( bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $bp->current_action ) ) ); + } + + bp_core_load_template( apply_filters( 'bp_activity_template_profile_activity_permalink', 'members/single/activity/permalink' ) ); +} +add_action( 'bp_screens', 'bp_activity_screen_single_activity_permalink' ); + +/** + * Add activity notifications settings to the notifications settings page + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses bp_get_user_meta() + * @uses bp_core_get_username() + * @uses do_action() To call the 'bp_activity_screen_notification_settings' hook + */ +function bp_activity_screen_notification_settings() { + global $bp; + + if ( !$mention = bp_get_user_meta( $bp->displayed_user->id, 'notification_activity_new_mention', true ) ) + $mention = 'yes'; + + if ( !$reply = bp_get_user_meta( $bp->displayed_user->id, 'notification_activity_new_reply', true ) ) + $reply = 'yes'; ?> + + <table class="notification-settings" id="activity-notification-settings"> + <thead> + <tr> + <th class="icon"> </th> + <th class="title"><?php _e( 'Activity', 'buddypress' ) ?></th> + <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> + <th class="no"><?php _e( 'No', 'buddypress' )?></th> + </tr> + </thead> + + <tbody> + <tr id="activity-notification-settings-mentions"> + <td> </td> + <td><?php printf( __( 'A member mentions you in an update using "@%s"', 'buddypress' ), bp_core_get_username( $bp->displayed_user->id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_activity_new_mention]" value="yes" <?php checked( $mention, 'yes', true ) ?>/></td> + <td class="no"><input type="radio" name="notifications[notification_activity_new_mention]" value="no" <?php checked( $mention, 'no', true ) ?>/></td> + </tr> + <tr id="activity-notification-settings-replies"> + <td> </td> + <td><?php _e( "A member replies to an update or comment you've posted", 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_activity_new_reply]" value="yes" <?php checked( $reply, 'yes', true ) ?>/></td> + <td class="no"><input type="radio" name="notifications[notification_activity_new_reply]" value="no" <?php checked( $reply, 'no', true ) ?>/></td> + </tr> + + <?php do_action( 'bp_activity_screen_notification_settings' ) ?> + </tbody> + </table> + +<?php +} +add_action( 'bp_notification_settings', 'bp_activity_screen_notification_settings', 1 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-template.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-template.php new file mode 100644 index 0000000..9e8128c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-template.php @@ -0,0 +1,2696 @@ +<?php + +/** + * BuddyPress Activity Template Functions + * + * @package BuddyPress + * @subpackage ActivityTemplate + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Output the activity component slug + * + * @since 1.5.0 + * + * @uses bp_get_activity_slug() + */ +function bp_activity_slug() { + echo bp_get_activity_slug(); +} + /** + * Return the activity component slug + * + * @since 1.5.0 + * + * @global object $bp BuddyPress global settings + * @uses apply_filters() To call the 'bp_get_activity_slug' hook + */ + function bp_get_activity_slug() { + global $bp; + return apply_filters( 'bp_get_activity_slug', $bp->activity->slug ); + } + +/** + * Output the activity component root slug + * + * @since 1.5.0 + * + * @uses bp_get_activity_root_slug() + */ +function bp_activity_root_slug() { + echo bp_get_activity_root_slug(); +} + /** + * Return the activity component root slug + * + * @since 1.5.0 + * + * @global object $bp BuddyPress global settings + * @uses apply_filters() To call the 'bp_get_activity_root_slug' hook + */ + function bp_get_activity_root_slug() { + global $bp; + return apply_filters( 'bp_get_activity_root_slug', $bp->activity->root_slug ); + } + +/** + * Output member directory permalink + * + * @since 1.5.0 + * + * @uses bp_get_activity_directory_permalink() + */ +function bp_activity_directory_permalink() { + echo bp_get_activity_directory_permalink(); +} + /** + * Return member directory permalink + * + * @since 1.5.0 + * + * @uses traisingslashit() + * @uses bp_get_root_domain() + * @uses bp_get_activity_root_slug() + * @uses apply_filters() To call the 'bp_get_activity_directory_permalink' hook + * + * @return string Activity directory permalink + */ + function bp_get_activity_directory_permalink() { + return apply_filters( 'bp_get_activity_directory_permalink', trailingslashit( bp_get_root_domain() . '/' . bp_get_activity_root_slug() ) ); + } + +/** + * The main activity template loop + * + * This is responsible for loading a group of activity items and displaying them + * + * @since 1.0.0 + */ +class BP_Activity_Template { + var $current_activity = -1; + var $activity_count; + var $total_activity_count; + var $activities; + var $activity; + + var $in_the_loop; + + var $pag_page; + var $pag_num; + var $pag_links; + + var $full_name; + + function bp_activity_template( $page, $per_page, $max, $include, $sort, $filter, $search_terms, $display_comments, $show_hidden, $exclude = false, $in = false ) { + $this->__construct( $page, $per_page, $max, $include, $sort, $filter, $search_terms, $display_comments, $show_hidden, $exclude, $in ); + } + + function __construct( $page, $per_page, $max, $include, $sort, $filter, $search_terms, $display_comments, $show_hidden, $exclude = false, $in = false ) { + global $bp; + + $this->pag_page = isset( $_REQUEST['acpage'] ) ? intval( $_REQUEST['acpage'] ) : $page; + $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page; + + // Check if blog/forum replies are disabled + $this->disable_blogforum_replies = isset( $bp->site_options['bp-disable-blogforum-comments'] ) ? $bp->site_options['bp-disable-blogforum-comments'] : false; + + // Get an array of the logged in user's favorite activities + $this->my_favs = maybe_unserialize( bp_get_user_meta( $bp->loggedin_user->id, 'bp_favorite_activities', true ) ); + + // Fetch specific activity items based on ID's + if ( !empty( $include ) ) + $this->activities = bp_activity_get_specific( array( 'activity_ids' => explode( ',', $include ), 'max' => $max, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'sort' => $sort, 'display_comments' => $display_comments, 'show_hidden' => $show_hidden ) ); + // Fetch all activity items + else + $this->activities = bp_activity_get( array( 'display_comments' => $display_comments, 'max' => $max, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'sort' => $sort, 'search_terms' => $search_terms, 'filter' => $filter, 'show_hidden' => $show_hidden, 'exclude' => $exclude, 'in' => $in ) ); + + if ( !$max || $max >= (int)$this->activities['total'] ) + $this->total_activity_count = (int)$this->activities['total']; + else + $this->total_activity_count = (int)$max; + + $this->activities = $this->activities['activities']; + + if ( $max ) { + if ( $max >= count($this->activities) ) { + $this->activity_count = count( $this->activities ); + } else { + $this->activity_count = (int)$max; + } + } else { + $this->activity_count = count( $this->activities ); + } + + $this->full_name = $bp->displayed_user->fullname; + + // Fetch parent content for activity comments so we do not have to query in the loop + foreach ( (array)$this->activities as $activity ) { + if ( 'activity_comment' != $activity->type ) + continue; + + $parent_ids[] = $activity->item_id; + } + + if ( !empty( $parent_ids ) ) + $activity_parents = bp_activity_get_specific( array( 'activity_ids' => $parent_ids ) ); + + if ( !empty( $activity_parents['activities'] ) ) { + foreach( $activity_parents['activities'] as $parent ) + $this->activity_parents[$parent->id] = $parent; + + unset( $activity_parents ); + } + + if ( (int)$this->total_activity_count && (int)$this->pag_num ) { + $this->pag_links = paginate_links( array( + 'base' => add_query_arg( 'acpage', '%#%' ), + 'format' => '', + 'total' => ceil( (int)$this->total_activity_count / (int)$this->pag_num ), + 'current' => (int)$this->pag_page, + 'prev_text' => _x( '←', 'Activity pagination previous text', 'buddypress' ), + 'next_text' => _x( '→', 'Activity pagination next text', 'buddypress' ), + 'mid_size' => 1 + ) ); + } + } + + function has_activities() { + if ( $this->activity_count ) + return true; + + return false; + } + + function next_activity() { + $this->current_activity++; + $this->activity = $this->activities[$this->current_activity]; + + return $this->activity; + } + + function rewind_activities() { + $this->current_activity = -1; + if ( $this->activity_count > 0 ) { + $this->activity = $this->activities[0]; + } + } + + function user_activities() { + if ( $this->current_activity + 1 < $this->activity_count ) { + return true; + } elseif ( $this->current_activity + 1 == $this->activity_count ) { + do_action('activity_loop_end'); + // Do some cleaning up after the loop + $this->rewind_activities(); + } + + $this->in_the_loop = false; + return false; + } + + function the_activity() { + global $activity; + + $this->in_the_loop = true; + $this->activity = $this->next_activity(); + + if ( is_array( $this->activity ) ) + $this->activity = (object) $this->activity; + + if ( $this->current_activity == 0 ) // loop has just started + do_action('activity_loop_start'); + } +} + +/** + * Initializes the activity loop. + * + * Based on the $args passed, bp_has_activities() populates the $activities_template global. + * + * @since 1.0.0 + * + * @param array $args Arguments for limiting the contents of the activity loop. Can be passed as an associative array or as a URL argument string + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses groups_is_user_member() + * @uses bp_current_action() + * @uses bp_is_current_action() + * @uses bp_get_activity_slug() + * @uses bp_action_variable() + * @uses wp_parse_args() + * @uses bp_is_active() + * @uses friends_get_friend_user_ids() + * @uses groups_get_user_groups() + * @uses bp_activity_get_user_favorites() + * @uses apply_filters() To call the 'bp_has_activities' hook + * + * @return bool Returns true when activities are found + */ +function bp_has_activities( $args = '' ) { + global $activities_template, $bp; + + /*** + * Set the defaults based on the current page. Any of these will be overridden + * if arguments are directly passed into the loop. Custom plugins should always + * pass their parameters directly to the loop. + */ + $user_id = false; + $include = false; + $exclude = false; + $in = false; + $show_hidden = false; + $object = false; + $primary_id = false; + + // User filtering + if ( !empty( $bp->displayed_user->id ) ) + $user_id = $bp->displayed_user->id; + + // Group filtering + if ( !empty( $bp->groups->current_group ) ) { + $object = $bp->groups->id; + $primary_id = $bp->groups->current_group->id; + + if ( 'public' != $bp->groups->current_group->status && ( groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) || $bp->loggedin_user->is_super_admin ) ) + $show_hidden = true; + } + + // The default scope should recognize custom slugs + if ( array_key_exists( $bp->current_action, (array)$bp->loaded_components ) ) { + $scope = $bp->loaded_components[$bp->current_action]; + } + else + $scope = bp_current_action(); + + // Support for permalinks on single item pages: /groups/my-group/activity/124/ + if ( bp_is_current_action( bp_get_activity_slug() ) ) + $include = bp_action_variable( 0 ); + + // Note: any params used for filtering can be a single value, or multiple values comma separated. + $defaults = array( + 'display_comments' => 'threaded', // false for none, stream/threaded - show comments in the stream or threaded under items + 'include' => $include, // pass an activity_id or string of IDs comma-separated + 'exclude' => $exclude, // pass an activity_id or string of IDs comma-separated + 'in' => $in, // comma-separated list or array of activity IDs among which to search + 'sort' => 'DESC', // sort DESC or ASC + 'page' => 1, // which page to load + 'per_page' => 20, // number of items per page + 'max' => false, // max number to return + 'show_hidden' => $show_hidden, // Show activity items that are hidden site-wide? + + // Scope - pre-built activity filters for a user (friends/groups/favorites/mentions) + 'scope' => $scope, + + // Filtering + 'user_id' => $user_id, // user_id to filter on + 'object' => $object, // object to filter on e.g. groups, profile, status, friends + 'action' => false, // action to filter on e.g. activity_update, new_forum_post, profile_updated + 'primary_id' => $primary_id, // object ID to filter on e.g. a group_id or forum_id or blog_id etc. + 'secondary_id' => false, // secondary object ID to filter on e.g. a post_id + + // Searching + 'search_terms' => false // specify terms to search on + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + // If you have passed a "scope" then this will override any filters you have passed. + if ( 'just-me' == $scope || 'friends' == $scope || 'groups' == $scope || 'favorites' == $scope || 'mentions' == $scope ) { + if ( 'just-me' == $scope ) + $display_comments = 'stream'; + + // determine which user_id applies + if ( empty( $user_id ) ) + $user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + + // are we displaying user specific activity? + if ( is_numeric( $user_id ) ) { + $show_hidden = ( $user_id == $bp->loggedin_user->id && $scope != 'friends' ) ? 1 : 0; + + switch ( $scope ) { + case 'friends': + if ( bp_is_active( 'friends' ) ) + $friends = friends_get_friend_user_ids( $user_id ); + if ( empty( $friends ) ) + return false; + + $user_id = implode( ',', (array)$friends ); + break; + case 'groups': + if ( bp_is_active( 'groups' ) ) { + $groups = groups_get_user_groups( $user_id ); + if ( empty( $groups['groups'] ) ) + return false; + + $object = $bp->groups->id; + $primary_id = implode( ',', (array)$groups['groups'] ); + + $user_id = 0; + } + break; + case 'favorites': + $favs = bp_activity_get_user_favorites( $user_id ); + if ( empty( $favs ) ) + return false; + + $include = implode( ',', (array)$favs ); + $display_comments = true; + break; + case 'mentions': + $user_nicename = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->userdata->user_nicename : $bp->loggedin_user->userdata->user_nicename; + $user_login = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->userdata->user_login : $bp->loggedin_user->userdata->user_login; + $search_terms = '@' . bp_core_get_username( $user_id, $user_nicename, $user_login ) . '<'; // Start search at @ symbol and stop search at closing tag delimiter. + $display_comments = 'stream'; + $user_id = 0; + break; + } + } + } + + // Do not exceed the maximum per page + if ( !empty( $max ) && ( (int)$per_page > (int)$max ) ) + $per_page = $max; + + // Support for basic filters in earlier BP versions. + if ( isset( $_GET['afilter'] ) ) + $filter = array( 'object' => $_GET['afilter'] ); + else if ( !empty( $user_id ) || !empty( $object ) || !empty( $action ) || !empty( $primary_id ) || !empty( $secondary_id ) ) + $filter = array( 'user_id' => $user_id, 'object' => $object, 'action' => $action, 'primary_id' => $primary_id, 'secondary_id' => $secondary_id ); + else + $filter = false; + + $activities_template = new BP_Activity_Template( $page, $per_page, $max, $include, $sort, $filter, $search_terms, $display_comments, $show_hidden, $exclude, $in ); + + return apply_filters( 'bp_has_activities', $activities_template->has_activities(), $activities_template ); +} + +/** + * Determines if there are still activities left in the loop. + * + * @since 1.0.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses BP_Activity_Template::user_activities() {@link BP_Activity_Template::user_activities()} + * + * @return bool Returns true when activities are found + */ +function bp_activities() { + global $activities_template; + return $activities_template->user_activities(); +} + +/** + * Gets the current activity object in the loop + * + * @since 1.0.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses BP_Activity_Template::the_activity() {@link BP_Activity_Template::the_activity()} + * + * @return object The current activity within the loop + */ +function bp_the_activity() { + global $activities_template; + return $activities_template->the_activity(); +} + +/** + * Outputs the activity pagination count + * + * @since 1.0.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses BP_Activity_Template::the_activity() {@link BP_Activity_Template::the_activity()} + */ +function bp_activity_pagination_count() { + echo bp_get_activity_pagination_count(); +} + + /** + * Returns the activity pagination count + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @global object $activities_template {@link BP_Activity_Template} + * @uses bp_core_number_format() + * + * @return string The pagination text + */ + function bp_get_activity_pagination_count() { + global $bp, $activities_template; + + $start_num = intval( ( $activities_template->pag_page - 1 ) * $activities_template->pag_num ) + 1; + $from_num = bp_core_number_format( $start_num ); + $to_num = bp_core_number_format( ( $start_num + ( $activities_template->pag_num - 1 ) > $activities_template->total_activity_count ) ? $activities_template->total_activity_count : $start_num + ( $activities_template->pag_num - 1 ) ); + $total = bp_core_number_format( $activities_template->total_activity_count ); + + return sprintf( __( 'Viewing item %1$s to %2$s (of %3$s items)', 'buddypress' ), $from_num, $to_num, $total ); + } + +/** + * Outputs the activity pagination links + * + * @since 1.0.0 + * + * @uses bp_get_activity_pagination_links() + */ +function bp_activity_pagination_links() { + echo bp_get_activity_pagination_links(); +} + + /** + * Outputs the activity pagination links + * + * @since 1.0.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_pagination_links' hook + * + * @return string The pagination links + */ + function bp_get_activity_pagination_links() { + global $activities_template; + + return apply_filters( 'bp_get_activity_pagination_links', $activities_template->pag_links ); + } + +/** + * Returns true when there are more activity items to be shown than currently appear + * + * @since 1.5.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_activity_has_more_items' hook + * + * @return bool $has_more_items True if more items, false if not + */ +function bp_activity_has_more_items() { + global $activities_template; + + $remaining_pages = floor( ( $activities_template->total_activity_count - 1 ) / ( $activities_template->pag_num * $activities_template->pag_page ) ); + $has_more_items = (int)$remaining_pages ? true : false; + + return apply_filters( 'bp_activity_has_more_items', $has_more_items ); +} + +/** + * Outputs the activity count + * + * @since 1.2.0 + * + * @uses bp_get_activity_count() + */ +function bp_activity_count() { + echo bp_get_activity_count(); +} + + /** + * Returns the activity count + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_count' hook + * + * @return int The activity count + */ + function bp_get_activity_count() { + global $activities_template; + + return apply_filters( 'bp_get_activity_count', (int)$activities_template->activity_count ); + } + +/** + * Outputs the number of activities per page + * + * @since 1.2.0 + * + * @uses bp_get_activity_per_page() + */ +function bp_activity_per_page() { + echo bp_get_activity_per_page(); +} + + /** + * Returns the number of activities per page + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_per_page' hook + * + * @return int The activities per page + */ + function bp_get_activity_per_page() { + global $activities_template; + + return apply_filters( 'bp_get_activity_per_page', (int)$activities_template->pag_num ); + } + +/** + * Outputs the activities title + * + * @since 1.0.0 + * + * @uses bp_get_activities_title() + */ +function bp_activities_title() { + global $bp_activity_title; + + echo bp_get_activities_title(); +} + + /** + * Returns the activities title + * + * @since 1.0.0 + * + * @global string $bp_activity_title + * @uses apply_filters() To call the 'bp_get_activities_title' hook + * + * @return int The activities title + */ + function bp_get_activities_title() { + global $bp_activity_title; + + return apply_filters( 'bp_get_activities_title', $bp_activity_title ); + } + +/** + * {@internal Missing Description} + * + * @since 1.0.0 + * + * @uses bp_get_activities_no_activity() + */ +function bp_activities_no_activity() { + global $bp_activity_no_activity; + + echo bp_get_activities_no_activity(); +} + + /** + * {@internal Missing Description} + * + * @since 1.0.0 + * + * @global string $bp_activity_no_activity + * @uses apply_filters() To call the 'bp_get_activities_no_activity' hook + * + * @return unknown_type + */ + function bp_get_activities_no_activity() { + global $bp_activity_no_activity; + + return apply_filters( 'bp_get_activities_no_activity', $bp_activity_no_activity ); + } + +/** + * Outputs the activity id + * + * @since 1.2.0 + * + * @uses bp_get_activity_id() + */ +function bp_activity_id() { + echo bp_get_activity_id(); +} + + /** + * Returns the activity id + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_id' hook + * + * @return int The activity id + */ + function bp_get_activity_id() { + global $activities_template; + return apply_filters( 'bp_get_activity_id', $activities_template->activity->id ); + } + +/** + * Outputs the activity item id + * + * @since 1.2.0 + * + * @uses bp_get_activity_item_id() + */ +function bp_activity_item_id() { + echo bp_get_activity_item_id(); +} + + /** + * Returns the activity item id + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_item_id' hook + * + * @return int The activity item id + */ + function bp_get_activity_item_id() { + global $activities_template; + return apply_filters( 'bp_get_activity_item_id', $activities_template->activity->item_id ); + } + +/** + * Outputs the activity secondary item id + * + * @since 1.2.0 + * + * @uses bp_get_activity_secondary_item_id() + */ +function bp_activity_secondary_item_id() { + echo bp_get_activity_secondary_item_id(); +} + + /** + * Returns the activity secondary item id + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_secondary_item_id' hook + * + * @return int The activity secondary item id + */ + function bp_get_activity_secondary_item_id() { + global $activities_template; + return apply_filters( 'bp_get_activity_secondary_item_id', $activities_template->activity->secondary_item_id ); + } + +/** + * Outputs the date the activity was recorded + * + * @since 1.2.0 + * + * @uses bp_get_activity_date_recorded() + */ +function bp_activity_date_recorded() { + echo bp_get_activity_date_recorded(); +} + + /** + * Returns the date the activity was recorded + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_date_recorded' hook + * + * @return string The date the activity was recorded + */ + function bp_get_activity_date_recorded() { + global $activities_template; + return apply_filters( 'bp_get_activity_date_recorded', $activities_template->activity->date_recorded ); + } + +/** + * Outputs the activity object name + * + * @since 1.2.0 + * + * @uses bp_get_activity_object_name() + */ +function bp_activity_object_name() { + echo bp_get_activity_object_name(); +} + + /** + * Returns the activity object name + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_object_name' hook + * + * @return string The activity object name + */ + function bp_get_activity_object_name() { + global $activities_template; + return apply_filters( 'bp_get_activity_object_name', $activities_template->activity->component ); + } + +/** + * Outputs the activity type + * + * @since 1.2.0 + * + * @uses bp_get_activity_type() + */ +function bp_activity_type() { + echo bp_get_activity_type(); +} + + /** + * Returns the activity type + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_type' hook + * + * @return string The activity type + */ + function bp_get_activity_type() { + global $activities_template; + return apply_filters( 'bp_get_activity_type', $activities_template->activity->type ); + } + + /** + * Outputs the activity action name + * + * Just a wrapper for bp_activity_type() + * + * @since 1.2.0 + * @deprecated 1.5.0 + * + * @todo Properly deprecate in favor of bp_activity_type() and + * remove redundant echo + * + * @uses bp_activity_type() + */ + function bp_activity_action_name() { echo bp_activity_type(); } + + /** + * Returns the activity type + * + * Just a wrapper for bp_get_activity_type() + * + * @since 1.2.0 + * @deprecated 1.5.0 + * + * @todo Properly deprecate in favor of bp_get_activity_type() + * + * @uses bp_get_activity_type() + * + * @return string The activity type + */ + function bp_get_activity_action_name() { return bp_get_activity_type(); } + +/** + * Outputs the activity user id + * + * @since 1.1.0 + * + * @uses bp_get_activity_user_id() + */ +function bp_activity_user_id() { + echo bp_get_activity_user_id(); +} + + /** + * Returns the activity user id + * + * @since 1.1.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_user_id' hook + * + * @return int The activity user id + */ + function bp_get_activity_user_id() { + global $activities_template; + return apply_filters( 'bp_get_activity_user_id', $activities_template->activity->user_id ); + } + +/** + * Outputs the activity user link + * + * @since 1.2.0 + * + * @uses bp_get_activity_user_link() + */ +function bp_activity_user_link() { + echo bp_get_activity_user_link(); +} + + /** + * Returns the activity user link + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses bp_core_get_user_domain() + * @uses apply_filters() To call the 'bp_get_activity_user_link' hook + * + * @return string $link The activity user link + */ + function bp_get_activity_user_link() { + global $activities_template; + + if ( empty( $activities_template->activity->user_id ) ) + $link = $activities_template->activity->primary_link; + else + $link = bp_core_get_user_domain( $activities_template->activity->user_id, $activities_template->activity->user_nicename, $activities_template->activity->user_login ); + + return apply_filters( 'bp_get_activity_user_link', $link ); + } + +/** + * Output the avatar of the user that performed the action + * + * @since 1.1.0 + * + * @param array $args + * + * @uses bp_get_activity_avatar() + */ +function bp_activity_avatar( $args = '' ) { + echo bp_get_activity_avatar( $args ); +} + /** + * Return the avatar of the user that performed the action + * + * @since 1.1.0 + * + * @param array $args optional + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses bp_is_single_activity() + * @uses wp_parse_args() + * @uses apply_filters() To call the 'bp_get_activity_avatar_object_' . $current_activity_item->component hook + * @uses apply_filters() To call the 'bp_get_activity_avatar_item_id' hook + * @uses bp_core_fetch_avatar() + * @uses apply_filters() To call the 'bp_get_activity_avatar' hook + * + * @return string User avatar + */ + function bp_get_activity_avatar( $args = '' ) { + global $activities_template, $bp; + + // On activity permalink pages, default to the full-size avatar + $type_default = bp_is_single_activity() ? 'full' : 'thumb'; + + $defaults = array( + 'alt' => __( 'Profile picture of %s', 'buddypress' ), + 'class' => 'avatar', + 'email' => false, + 'type' => $type_default, + 'user_id' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( !isset( $height ) && !isset( $width ) ) { + // Backpat + if ( isset( $bp->avatar->full->height ) || isset( $bp->avatar->thumb->height ) ) { + $height = ( 'full' == $type ) ? $bp->avatar->full->height : $bp->avatar->thumb->height; + } else { + $height = 20; + } + + // Backpat + if ( isset( $bp->avatar->full->width ) || isset( $bp->avatar->thumb->width ) ) { + $width = ( 'full' == $type ) ? $bp->avatar->full->width : $bp->avatar->thumb->width; + } else { + $width = 20; + } + + } + + // Within the loop, we the current activity should be set first to the + // current_comment, if available + $current_activity_item = isset( $activities_template->activity->current_comment ) ? $activities_template->activity->current_comment : $activities_template->activity; + + // Primary activity avatar is always a user, but can be modified via a filter + $object = apply_filters( 'bp_get_activity_avatar_object_' . $current_activity_item->component, 'user' ); + $item_id = $user_id ? $user_id : $current_activity_item->user_id; + $item_id = apply_filters( 'bp_get_activity_avatar_item_id', $item_id ); + + // If this is a user object pass the users' email address for Gravatar so we don't have to refetch it. + if ( 'user' == $object && empty( $user_id ) && empty( $email ) && isset( $activities_template->activity->user_email ) ) + $email = $current_activity_item->user_email; + + return apply_filters( 'bp_get_activity_avatar', bp_core_fetch_avatar( array( 'item_id' => $item_id, 'object' => $object, 'type' => $type, 'alt' => $alt, 'class' => $class, 'width' => $width, 'height' => $height, 'email' => $email ) ) ); + } + +/** + * Output the avatar of the object that action was performed on + * + * @since 1.2.0 + * + * @param array $args optional + * + * @uses bp_get_activity_secondary_avatar() + */ +function bp_activity_secondary_avatar( $args = '' ) { + echo bp_get_activity_secondary_avatar( $args ); +} + + /** + * Return the avatar of the object that action was performed on + * + * @since 1.2.0 + * + * @param array $args optional + * + * @global object $bp BuddyPress global settings + * @global object $activities_template {@link BP_Activity_Template} + * @uses wp_parse_args() + * @uses get_blog_option() + * @uses apply_filters() To call the 'bp_get_activity_secondary_avatar_object_' . $activities_template->activity->component hook + * @uses apply_filters() To call the 'bp_get_activity_secondary_avatar_item_id' hook + * @uses bp_core_fetch_avatar() + * @uses apply_filters() To call the 'bp_get_activity_secondary_avatar' hook + * + * @return string The secondary avatar + */ + function bp_get_activity_secondary_avatar( $args = '' ) { + global $bp, $activities_template; + + $defaults = array( + 'type' => 'thumb', + 'width' => 20, + 'height' => 20, + 'class' => 'avatar', + 'email' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // Set item_id and object (default to user) + switch ( $activities_template->activity->component ) { + case 'groups' : + $object = 'group'; + $item_id = $activities_template->activity->item_id; + + if ( empty( $alt ) ) + $alt = __( 'Group logo of %s', 'buddypress' ); + + break; + case 'blogs' : + $object = 'blog'; + $item_id = $activities_template->activity->item_id; + + if ( !$alt ) + $alt = sprintf( __( 'Site authored by %s', 'buddypress' ), get_blog_option( $item_id, 'blogname' ) ); + + break; + case 'friends' : + $object = 'user'; + $item_id = $activities_template->activity->secondary_item_id; + + if ( empty( $alt ) ) + $alt = __( 'Profile picture of %s', 'buddypress' ); + + break; + default : + $object = 'user'; + $item_id = $activities_template->activity->user_id; + $email = $activities_template->activity->user_email; + + if ( !$alt ) + $alt = __( 'Profile picture of %s', 'buddypress' ); + + break; + } + + // Allow object and item_id to be filtered + $object = apply_filters( 'bp_get_activity_secondary_avatar_object_' . $activities_template->activity->component, $object ); + $item_id = apply_filters( 'bp_get_activity_secondary_avatar_item_id', $item_id ); + + // If we have no item_id or object, there is no avatar to display + if ( empty( $item_id ) || empty( $object ) ) + return false; + + return apply_filters( 'bp_get_activity_secondary_avatar', bp_core_fetch_avatar( array( 'item_id' => $item_id, 'object' => $object, 'type' => $type, 'alt' => $alt, 'class' => $class, 'width' => $width, 'height' => $height, 'email' => $email ) ) ); + } + +/** + * Output the activity action + * + * @since 1.2.0 + * + * @uses bp_get_activity_action() + */ +function bp_activity_action() { + echo bp_get_activity_action(); +} + + /** + * Return the activity action + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters_ref_array() To call the 'bp_get_activity_action_pre_meta' hook + * @uses bp_insert_activity_meta() + * @uses apply_filters_ref_array() To call the 'bp_get_activity_action' hook + * + * @return string The activity action + */ + function bp_get_activity_action() { + global $activities_template; + + $action = $activities_template->activity->action; + $action = apply_filters_ref_array( 'bp_get_activity_action_pre_meta', array( $action, &$activities_template->activity ) ); + + if ( !empty( $action ) ) + $action = bp_insert_activity_meta( $action ); + + return apply_filters_ref_array( 'bp_get_activity_action', array( $action, &$activities_template->activity ) ); + } + +/** + * Output the activity content body + * + * @since 1.2.0 + * + * @uses bp_get_activity_content_body() + */ +function bp_activity_content_body() { + echo bp_get_activity_content_body(); +} + + /** + * Return the activity content body + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses bp_insert_activity_meta() + * @uses apply_filters_ref_array() To call the 'bp_get_activity_content_body' hook + * + * @return string The activity content body + */ + function bp_get_activity_content_body() { + global $activities_template; + + // Backwards compatibility if action is not being used + if ( empty( $activities_template->activity->action ) && !empty( $activities_template->activity->content ) ) + $activities_template->activity->content = bp_insert_activity_meta( $activities_template->activity->content ); + + return apply_filters_ref_array( 'bp_get_activity_content_body', array( $activities_template->activity->content, &$activities_template->activity ) ); + } + +/** + * Does the activity have content? + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * + * @return bool True if activity has content, false otherwise + */ +function bp_activity_has_content() { + global $activities_template; + + if ( !empty( $activities_template->activity->content ) ) + return true; + + return false; +} + +/** + * Output the activity content + * + * @since 1.0.0 + * @deprecated 1.5.0 + * + * @todo properly deprecate this function + * + * @uses bp_get_activity_content() + */ +function bp_activity_content() { + echo bp_get_activity_content(); +} + + /** + * Return the activity content + * + * @since 1.0.0 + * @deprecated 1.5.0 + * + * @todo properly deprecate this function + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses bp_get_activity_action() + * @uses bp_get_activity_content_body() + * @uses apply_filters() To call the 'bp_get_activity_content' hook + * + * @return string The activity content + */ + function bp_get_activity_content() { + global $activities_template; + + /** + * If you want to filter activity update content, please use + * the filter 'bp_get_activity_content_body' + * + * This function is mainly for backwards comptibility. + */ + + $content = bp_get_activity_action() . ' ' . bp_get_activity_content_body(); + return apply_filters( 'bp_get_activity_content', $content ); + } + +/** + * Insert activity meta + * + * @since 1.2.0 + * + * @param string $content + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses bp_core_time_since() + * @uses apply_filters_ref_array() To call the 'bp_activity_time_since' hook + * @uses bp_is_single_activity() + * @uses bp_activity_get_permalink() + * @uses esc_attr__() + * @uses apply_filters_ref_array() To call the 'bp_activity_permalink' hook + * @uses apply_filters() To call the 'bp_insert_activity_meta' hook + * + * @return string The activity content + */ +function bp_insert_activity_meta( $content ) { + global $activities_template, $bp; + + // Strip any legacy time since placeholders from BP 1.0-1.1 + $content = str_replace( '<span class="time-since">%s</span>', '', $content ); + + // Insert the time since. + $time_since = apply_filters_ref_array( 'bp_activity_time_since', array( '<span class="time-since">' . bp_core_time_since( $activities_template->activity->date_recorded ) . '</span>', &$activities_template->activity ) ); + + // Insert the permalink + if ( !bp_is_single_activity() ) + $content = apply_filters_ref_array( 'bp_activity_permalink', array( sprintf( '%1$s <a href="%2$s" class="view activity-time-since" title="%3$s">%4$s</a>', $content, bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ), esc_attr__( 'View Discussion', 'buddypress' ), $time_since ), &$activities_template->activity ) ); + else + $content .= str_pad( $time_since, strlen( $time_since ) + 2, ' ', STR_PAD_BOTH ); + + return apply_filters( 'bp_insert_activity_meta', $content ); +} + +/** + * Determine if the current user can delete an activity item + * + * @since 1.2.0 + * + * @param object $activity Optional + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses apply_filters() To call the 'bp_activity_user_can_delete' hook + * + * @return bool True if can delete, false otherwise + */ +function bp_activity_user_can_delete( $activity = false ) { + global $activities_template, $bp; + + if ( !$activity ) + $activity = $activities_template->activity; + + if ( isset( $activity->current_comment ) ) + $activity = $activity->current_comment; + + $can_delete = false; + + if ( $bp->loggedin_user->is_super_admin ) + $can_delete = true; + + if ( $activity->user_id == $bp->loggedin_user->id ) + $can_delete = true; + + if ( $bp->is_item_admin && $bp->is_single_item ) + $can_delete = true; + + return apply_filters( 'bp_activity_user_can_delete', $can_delete ); +} + +/** + * Output the activity parent content + * + * @since 1.2.0 + * + * @param array $args Optional + * + * @uses bp_get_activity_parent_content() + */ +function bp_activity_parent_content( $args = '' ) { + echo bp_get_activity_parent_content($args); +} + + /** + * Return the activity content + * + * @since 1.2.0 + * + * @param array $args Optional + * + * @global object $bp BuddyPress global settings + * @global object $activities_template {@link BP_Activity_Template} + * @uses wp_parse_args() + * @uses apply_filters() To call the 'bp_get_activity_parent_content' hook + * + * @return mixed False on failure, otherwise the activity parent content + */ + function bp_get_activity_parent_content( $args = '' ) { + global $bp, $activities_template; + + $defaults = array( + 'hide_user' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // Get the ID of the parent activity content + if ( !$parent_id = $activities_template->activity->item_id ) + return false; + + // Get the content of the parent + if ( empty( $activities_template->activity_parents[$parent_id] ) ) + return false; + + if ( empty( $activities_template->activity_parents[$parent_id]->content ) ) + $content = $activities_template->activity_parents[$parent_id]->action; + else + $content = $activities_template->activity_parents[$parent_id]->action . ' ' . $activities_template->activity_parents[$parent_id]->content; + + // Remove the time since content for backwards compatibility + $content = str_replace( '<span class="time-since">%s</span>', '', $content ); + + // Remove images + $content = preg_replace( '/<img[^>]*>/Ui', '', $content ); + + return apply_filters( 'bp_get_activity_parent_content', $content ); + } + +/** + * Output whether or not the current activity is in a current user's favorites + * + * @since 1.2.0 + * + * @uses bp_get_activity_is_favorite() + */ +function bp_activity_is_favorite() { + echo bp_get_activity_is_favorite(); +} + + /** + * Return whether or not the current activity is in a current user's favorites + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_is_favorite' hook + * + * @return bool True if user favorite, false otherwise + */ + function bp_get_activity_is_favorite() { + global $bp, $activities_template; + + return apply_filters( 'bp_get_activity_is_favorite', in_array( $activities_template->activity->id, (array)$activities_template->my_favs ) ); + } + +/** + * Echoes the comment markup for an activity item + * + * @since 1.2.0 + * + * @todo deprecate $args param + * + * @param string $args Unused. Appears to be left over from an earlier implementation. + */ +function bp_activity_comments( $args = '' ) { + echo bp_activity_get_comments( $args ); +} + + /** + * Gets the comment markup for an activity item + * + * @since 1.2.0 + * + * @todo deprecate $args param + * + * @todo Given that checks for children already happen in bp_activity_recurse_comments(), + * this function can probably be streamlined or removed. + * + * @param string $args Unused. Appears to be left over from an earlier implementation. + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses bp_activity_recurse_comments() + */ + function bp_activity_get_comments( $args = '' ) { + global $activities_template, $bp; + + if ( !isset( $activities_template->activity->children ) || !$activities_template->activity->children ) + return false; + + bp_activity_recurse_comments( $activities_template->activity ); + } + + /** + * Loops through a level of activity comments and loads the template for each + * + * Note: The recursion itself used to happen entirely in this function. Now it is + * split between here and the comment.php template. + * + * @since 1.2.0 + * + * @todo remove $counter global + * + * @param object $comment The activity object currently being recursed + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses locate_template() + */ + function bp_activity_recurse_comments( $comment ) { + global $activities_template, $bp, $counter; + + if ( !$comment ) + return false; + + if ( empty( $comment->children ) ) + return false; + + echo '<ul>'; + foreach ( (array)$comment->children as $comment_child ) { + // Put the comment into the global so it's available to filters + $activities_template->activity->current_comment = $comment_child; + + $template = locate_template( 'activity/comment.php', false, false ); + + // Backward compatibility. In older versions of BP, the markup was + // generated in the PHP instead of a template. This ensures that + // older themes (which are not children of bp-default and won't + // have the new template) will still work. + if ( !$template ) { + $template = BP_PLUGIN_DIR . '/bp-themes/bp-default/activity/comment.php'; + } + + load_template( $template, false ); + + unset( $activities_template->activity->current_comment ); + } + echo '</ul>'; + } + +/** + * Utility function that returns the comment currently being recursed + * + * @since 1.5.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_activity_current_comment' hook + * + * @return object|bool $current_comment The activity comment currently being displayed. False on failure + */ +function bp_activity_current_comment() { + global $activities_template; + + $current_comment = !empty( $activities_template->activity->current_comment ) ? $activities_template->activity->current_comment : false; + + return apply_filters( 'bp_activity_current_comment', $current_comment ); +} + + +/** + * Echoes the id of the activity comment currently being displayed + * + * @since 1.5.0 + * + * @uses bp_get_activity_comment_id() + */ +function bp_activity_comment_id() { + echo bp_get_activity_comment_id(); +} + + /** + * Gets the id of the activity comment currently being displayed + * + * @since 1.5.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_activity_comment_id' hook + * + * @return int $comment_id The id of the activity comment currently being displayed + */ + function bp_get_activity_comment_id() { + global $activities_template; + + $comment_id = isset( $activities_template->activity->current_comment->id ) ? $activities_template->activity->current_comment->id : false; + + return apply_filters( 'bp_activity_comment_id', $comment_id ); + } + +/** + * Echoes the user_id of the author of the activity comment currently being displayed + * + * @since 1.5.0 + * + * @uses bp_get_activity_comment_user_id() + */ +function bp_activity_comment_user_id() { + echo bp_get_activity_comment_user_id(); +} + + /** + * Gets the user_id of the author of the activity comment currently being displayed + * + * @since 1.5.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_activity_comment_user_id' hook + * + * @return int|bool $user_id The user_id of the author of the displayed activity comment. False on failure + */ + function bp_get_activity_comment_user_id() { + global $activities_template; + + $user_id = isset( $activities_template->activity->current_comment->user_id ) ? $activities_template->activity->current_comment->user_id : false; + + return apply_filters( 'bp_activity_comment_user_id', $user_id ); + } + +/** + * Echoes the author link for the activity comment currently being displayed + * + * @since 1.5.0 + * + * @uses bp_get_activity_comment_user_link() + */ +function bp_activity_comment_user_link() { + echo bp_get_activity_comment_user_link(); +} + + /** + * Gets the author link for the activity comment currently being displayed + * + * @since 1.5.0 + * + * @uses bp_core_get_user_domain() + * @uses bp_get_activity_comment_user_id() + * @uses apply_filters() To call the 'bp_activity_comment_user_link' hook + * + * @return string $user_link The URL of the activity comment author's profile + */ + function bp_get_activity_comment_user_link() { + $user_link = bp_core_get_user_domain( bp_get_activity_comment_user_id() ); + + return apply_filters( 'bp_activity_comment_user_link', $user_link ); + } + +/** + * Echoes the author name for the activity comment currently being displayed + * + * @since 1.5.0 + * + * @uses bp_get_activity_comment_name() + */ +function bp_activity_comment_name() { + echo bp_get_activity_comment_name(); +} + + /** + * Gets the author name for the activity comment currently being displayed + * + * The use of the bp_acomment_name filter is deprecated. Please use bp_activity_comment_name + * + * @since 1.5.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_acomment_name' hook + * @uses apply_filters() To call the 'bp_activity_comment_name' hook + * + * @return string $name The full name of the activity comment author + */ + function bp_get_activity_comment_name() { + global $activities_template; + + $name = apply_filters( 'bp_acomment_name', $activities_template->activity->current_comment->user_fullname, $activities_template->activity->current_comment ); // backward compatibility + + return apply_filters( 'bp_activity_comment_name', $name ); + } + +/** + * Echoes the date_recorded of the activity comment currently being displayed + * + * @since 1.5.0 + * + * @uses bp_get_activity_comment_date_recorded() + */ +function bp_activity_comment_date_recorded() { + echo bp_get_activity_comment_date_recorded(); +} + + /** + * Gets the date_recorded for the activity comment currently being displayed + * + * @since 1.5.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses bp_core_time_since() + * @uses apply_filters() To call the 'bp_activity_comment_date_recorded' hook + * + * @return string|bool $date_recorded Time since the activity was recorded, of the form "%s ago". False on failure + */ + function bp_get_activity_comment_date_recorded() { + global $activities_template; + + if ( empty( $activities_template->activity->current_comment->date_recorded ) ) + return false; + + $date_recorded = bp_core_time_since( $activities_template->activity->current_comment->date_recorded ); + + return apply_filters( 'bp_activity_comment_date_recorded', $date_recorded ); + } + +/** + * Echoes the 'delete' URL for the activity comment currently being displayed + * + * @since 1.5.0 + * + * @uses bp_get_activity_comment_delete_link() + */ +function bp_activity_comment_delete_link() { + echo bp_get_activity_comment_delete_link(); +} + + /** + * Gets the 'delete' URL for the activity comment currently being displayed + * + * @since 1.5.0 + * + * @global object $bp BuddyPress global settings + * @uses wp_nonce_url() + * @uses bp_get_root_domain() + * @uses bp_get_activity_slug() + * @uses bp_get_activity_comment_id() + * @uses apply_filters() To call the 'bp_activity_comment_delete_link' hook + * + * @return string $link The nonced URL for deleting the current activity comment + */ + function bp_get_activity_comment_delete_link() { + global $bp; + + $link = wp_nonce_url( bp_get_root_domain() . '/' . bp_get_activity_slug() . '/delete/?cid=' . bp_get_activity_comment_id(), 'bp_activity_delete_link' ); + + return apply_filters( 'bp_activity_comment_delete_link', $link ); + } + +/** + * Echoes the content of the activity comment currently being displayed + * + * @since 1.5.0 + * + * @uses bp_get_activity_comment_content() + */ +function bp_activity_comment_content() { + echo bp_get_activity_comment_content(); +} + + /** + * Gets the content of the activity comment currently being displayed + * + * The content is run through two filters. bp_get_activity_content will apply all filters + * applied to activity items in general. Use bp_activity_comment_content to modify the + * content of activity comments only. + * + * @since 1.5.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_content' hook + * @uses apply_filters() To call the 'bp_activity_comment_content' hook + * + * @return string $content The content of the current activity comment + */ + function bp_get_activity_comment_content() { + global $activities_template; + + $content = apply_filters( 'bp_get_activity_content', $activities_template->activity->current_comment->content ); + + return apply_filters( 'bp_activity_comment_content', $content ); + } + +/** + * Echoes the activity comment count + * + * @since 1.2.0 + * + * @uses bp_activity_get_comment_count() + */ +function bp_activity_comment_count() { + echo bp_activity_get_comment_count(); +} + + /** + * Gets the content of the activity comment currently being displayed + * + * The content is run through two filters. bp_get_activity_content will apply all filters + * applied to activity items in general. Use bp_activity_comment_content to modify the + * content of activity comments only. + * + * @since 1.2.0 + * + * @todo deprecate $args + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses bp_activity_recurse_comment_count() + * @uses apply_filters() To call the 'bp_activity_get_comment_count' hook + * + * @return int $count The activity comment count. Defaults to zero + */ + function bp_activity_get_comment_count( $args = '' ) { + global $activities_template, $bp; + + if ( !isset( $activities_template->activity->children ) || !$activities_template->activity->children ) + return 0; + + $count = bp_activity_recurse_comment_count( $activities_template->activity ); + + return apply_filters( 'bp_activity_get_comment_count', (int)$count ); + } + + /** + * Gets the content of the activity comment currently being displayed + * + * The content is run through two filters. bp_get_activity_content will apply all filters + * applied to activity items in general. Use bp_activity_comment_content to modify the + * content of activity comments only. + * + * @since 1.2.0 + * + * @todo investigate why bp_activity_recurse_comment_count() is used while being declared + * + * @param object $comment Activity comments object + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses bp_activity_recurse_comment_count() + * @uses apply_filters() To call the 'bp_activity_get_comment_count' hook + * + * @return int $count The activity comment count. + */ + function bp_activity_recurse_comment_count( $comment, $count = 0 ) { + global $activities_template, $bp; + + if ( !$comment->children ) + return $count; + + foreach ( (array)$comment->children as $comment ) { + $count++; + $count = bp_activity_recurse_comment_count( $comment, $count ); + } + + return $count; + } + +/** + * Echoes the activity comment link + * + * @since 1.2.0 + * + * @uses bp_get_activity_comment_link() + */ +function bp_activity_comment_link() { + echo bp_get_activity_comment_link(); +} + + /** + * Gets the activity comment link + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_comment_link' hook + * + * @return string The activity comment link + */ + function bp_get_activity_comment_link() { + global $activities_template; + return apply_filters( 'bp_get_activity_comment_link', '?ac=' . $activities_template->activity->id . '/#ac-form-' . $activities_template->activity->id ); + } + +/** + * Echoes the activity comment form no javascript display CSS + * + * @since 1.2.0 + * + * @uses bp_get_activity_comment_form_nojs_display() + */ +function bp_activity_comment_form_nojs_display() { + echo bp_get_activity_comment_form_nojs_display(); +} + + /** + * Gets the activity comment form no javascript display CSS + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * + * @return string|bool The activity comment form no javascript display CSS. False on failure + */ + function bp_get_activity_comment_form_nojs_display() { + global $activities_template; + if ( isset( $_GET['ac'] ) && $_GET['ac'] == $activities_template->activity->id . '/' ) + return 'style="display: block"'; + + return false; + } + +/** + * Echoes the activity comment form action + * + * @since 1.2.0 + * + * @uses bp_get_activity_comment_form_action() + */ +function bp_activity_comment_form_action() { + echo bp_get_activity_comment_form_action(); +} + + /** + * Gets the activity comment form action + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses home_url() + * @uses bp_get_activity_root_slug() + * @uses apply_filters() To call the 'bp_get_activity_comment_form_action' hook + * + * @return string The activity comment form action + */ + function bp_get_activity_comment_form_action() { + global $bp; + + return apply_filters( 'bp_get_activity_comment_form_action', home_url( bp_get_activity_root_slug() . '/reply/' ) ); + } + +/** + * Echoes the activity permalink id + * + * @since 1.2.0 + * + * @uses bp_get_activity_permalink_id() + */ +function bp_activity_permalink_id() { + echo bp_get_activity_permalink_id(); +} + + /** + * Gets the activity permalink id + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses apply_filters() To call the 'bp_get_activity_permalink_id' hook + * + * @return string The activity permalink id + */ + function bp_get_activity_permalink_id() { + global $bp; + + return apply_filters( 'bp_get_activity_permalink_id', $bp->current_action ); + } + +/** + * Echoes the activity thread permalink + * + * @since 1.2.0 + * + * @uses bp_get_activity_permalink_id() + */ +function bp_activity_thread_permalink() { + echo bp_get_activity_thread_permalink(); +} + + /** + * Gets the activity thread permalink + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses bp_activity_get_permalink() + * @uses apply_filters() To call the 'bp_get_activity_thread_permalink' hook + * + * @return string $link The activity thread permalink + */ + function bp_get_activity_thread_permalink() { + global $bp, $activities_template; + + $link = bp_activity_get_permalink( $activities_template->activity->id, $activities_template->activity ); + + return apply_filters( 'bp_get_activity_thread_permalink', $link ); + } + +/** + * Echoes the activity favorite link + * + * @since 1.2.0 + * + * @uses bp_get_activity_favorite_link() + */ +function bp_activity_favorite_link() { + echo bp_get_activity_favorite_link(); +} + + /** + * Gets the activity favorite link + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @global object $activities_template {@link BP_Activity_Template} + * @uses wp_nonce_url() + * @uses home_url() + * @uses bp_get_activity_root_slug() + * @uses apply_filters() To call the 'bp_get_activity_favorite_link' hook + * + * @return string The activity favorite link + */ + function bp_get_activity_favorite_link() { + global $bp, $activities_template; + return apply_filters( 'bp_get_activity_favorite_link', wp_nonce_url( home_url( bp_get_activity_root_slug() . '/favorite/' . $activities_template->activity->id . '/' ), 'mark_favorite' ) ); + } + +/** + * Echoes the activity unfavorite link + * + * @since 1.2.0 + * + * @uses bp_get_activity_unfavorite_link() + */ +function bp_activity_unfavorite_link() { + echo bp_get_activity_unfavorite_link(); +} + + /** + * Gets the activity unfavorite link + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @global object $activities_template {@link BP_Activity_Template} + * @uses wp_nonce_url() + * @uses home_url() + * @uses bp_get_activity_root_slug() + * @uses apply_filters() To call the 'bp_get_activity_unfavorite_link' hook + * + * @return string The activity unfavorite link + */ + function bp_get_activity_unfavorite_link() { + global $bp, $activities_template; + return apply_filters( 'bp_get_activity_unfavorite_link', wp_nonce_url( home_url( bp_get_activity_root_slug() . '/unfavorite/' . $activities_template->activity->id . '/' ), 'unmark_favorite' ) ); + } + +/** + * Echoes the activity CSS class + * + * @since 1.0.0 + * + * @uses bp_get_activity_css_class() + */ +function bp_activity_css_class() { + echo bp_get_activity_css_class(); +} + + /** + * Gets the activity CSS class + * + * @since 1.0.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_activity_mini_activity_types' hook + * @uses bp_activity_get_comment_count() + * @uses bp_activity_can_comment() + * @uses apply_filters() To call the 'bp_get_activity_css_class' hook + * + * @return string The activity css class + */ + function bp_get_activity_css_class() { + global $activities_template; + + $mini_activity_actions = apply_filters( 'bp_activity_mini_activity_types', array( + 'friendship_accepted', + 'friendship_created', + 'new_blog', + 'joined_group', + 'created_group', + 'new_member' + ) ); + + $class = ''; + if ( in_array( $activities_template->activity->type, (array)$mini_activity_actions ) || empty( $activities_template->activity->content ) ) + $class = ' mini'; + + if ( bp_activity_get_comment_count() && bp_activity_can_comment() ) + $class .= ' has-comments'; + + return apply_filters( 'bp_get_activity_css_class', $activities_template->activity->component . ' ' . $activities_template->activity->type . $class ); + } + +/** + * Display the activity delete link. + * + * @since 1.1.0 + * + * @uses bp_get_activity_delete_link() + */ +function bp_activity_delete_link() { + echo bp_get_activity_delete_link(); +} + + /** + * Return the activity delete link. + * + * @since 1.1.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses bp_get_root_domain() + * @uses bp_get_activity_root_slug() + * @uses bp_is_activity_component() + * @uses bp_current_action() + * @uses add_query_arg() + * @uses wp_get_referer() + * @uses wp_nonce_url() + * @uses apply_filters() To call the 'bp_get_activity_delete_link' hook + * + * @return string $link Activity delete link. Contains $redirect_to arg if on single activity page. + */ + function bp_get_activity_delete_link() { + global $activities_template, $bp; + + $url = bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/delete/' . $activities_template->activity->id; + $class = 'delete-activity'; + + // Determine if we're on a single activity page, and customize accordingly + if ( bp_is_activity_component() && is_numeric( bp_current_action() ) ) { + $url = add_query_arg( array( 'redirect_to' => wp_get_referer() ), $url ); + $class = 'delete-activity-single'; + } + + $link = '<a href="' . wp_nonce_url( $url, 'bp_activity_delete_link' ) . '" class="button item-button bp-secondary-action ' . $class . ' confirm" rel="nofollow">' . __( 'Delete', 'buddypress' ) . '</a>'; + return apply_filters( 'bp_get_activity_delete_link', $link ); + } + +/** + * Display the activity latest update link. + * + * @since 1.2.0 + * + * @param int $user_id Defaults to 0 + * + * @uses bp_get_activity_latest_update() + */ +function bp_activity_latest_update( $user_id = 0 ) { + echo bp_get_activity_latest_update( $user_id ); +} + + /** + * Return the activity latest update link. + * + * @since 1.2.0 + * + * @param int $user_id Defaults to 0 + * + * @global object $bp BuddyPress global settings + * @uses bp_core_is_user_spammer() + * @uses bp_core_is_user_deleted() + * @uses bp_get_user_meta() + * @uses apply_filters() To call the 'bp_get_activity_latest_update_excerpt' hook + * @uses bp_create_excerpt() + * @uses bp_get_root_domain() + * @uses bp_get_activity_root_slug() + * @uses apply_filters() To call the 'bp_get_activity_latest_update' hook + * + * @return string|bool $latest_update The activity latest update link. False on failure + */ + function bp_get_activity_latest_update( $user_id = 0 ) { + global $bp; + + if ( !$user_id ) + $user_id = $bp->displayed_user->id; + + if ( bp_core_is_user_spammer( $user_id ) || bp_core_is_user_deleted( $user_id ) ) + return false; + + if ( !$update = bp_get_user_meta( $user_id, 'bp_latest_update', true ) ) + return false; + + $latest_update = apply_filters( 'bp_get_activity_latest_update_excerpt', trim( strip_tags( bp_create_excerpt( $update['content'], 358 ) ) ) ); + $latest_update .= ' <a href="' . bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/p/' . $update['id'] . '/"> ' . __( 'View', 'buddypress' ) . '</a>'; + + return apply_filters( 'bp_get_activity_latest_update', $latest_update ); + } + +/** + * Display the activity filter links. + * + * @since 1.1.0 + * + * @param array $args Defaults to false + * + * @uses bp_get_activity_filter_links() + */ +function bp_activity_filter_links( $args = false ) { + echo bp_get_activity_filter_links( $args ); +} + + /** + * Return the activity filter links. + * + * @since 1.1.0 + * + * @param array $args Defaults to false + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses wp_parse_args() + * @uses BP_Activity_Activity::get_recorded_components() {@link BP_Activity_Activity} + * @uses esc_attr() + * @uses add_query_arg() + * @uses remove_query_arg() + * @uses apply_filters() To call the 'bp_get_activity_filter_link_href' hook + * @uses apply_filters() To call the 'bp_get_activity_filter_links' hook + * + * @return string|bool $component_links The activity filter links. False on failure + */ + function bp_get_activity_filter_links( $args = false ) { + global $activities_template, $bp; + + $defaults = array( + 'style' => 'list' + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // Fetch the names of components that have activity recorded in the DB + $components = BP_Activity_Activity::get_recorded_components(); + + if ( !$components ) + return false; + + foreach ( (array) $components as $component ) { + /* Skip the activity comment filter */ + if ( 'activity' == $component ) + continue; + + if ( isset( $_GET['afilter'] ) && $component == $_GET['afilter'] ) + $selected = ' class="selected"'; + else + unset($selected); + + $component = esc_attr( $component ); + + switch ( $style ) { + case 'list': + $tag = 'li'; + $before = '<li id="afilter-' . $component . '"' . $selected . '>'; + $after = '</li>'; + break; + case 'paragraph': + $tag = 'p'; + $before = '<p id="afilter-' . $component . '"' . $selected . '>'; + $after = '</p>'; + break; + case 'span': + $tag = 'span'; + $before = '<span id="afilter-' . $component . '"' . $selected . '>'; + $after = '</span>'; + break; + } + + $link = add_query_arg( 'afilter', $component ); + $link = remove_query_arg( 'acpage' , $link ); + + $link = apply_filters( 'bp_get_activity_filter_link_href', $link, $component ); + + // Make sure all core internal component names are translatable + $translatable_components = array( __( 'xprofile', 'buddypress'), __( 'friends', 'buddypress' ), __( 'groups', 'buddypress' ), __( 'status', 'buddypress' ), __( 'sites', 'buddypress' ) ); + + $component_links[] = $before . '<a href="' . esc_attr( $link ) . '">' . ucwords( __( $component, 'buddypress' ) ) . '</a>' . $after; + } + + $link = remove_query_arg( 'afilter' , $link ); + + if ( isset( $_GET['afilter'] ) ) + $component_links[] = '<' . $tag . ' id="afilter-clear"><a href="' . esc_attr( $link ) . '">' . __( 'Clear Filter', 'buddypress' ) . '</a></' . $tag . '>'; + + return apply_filters( 'bp_get_activity_filter_links', implode( "\n", $component_links ) ); + } + +/** + * Determine if a comment can be made on an activity item + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @global object $bp BuddyPress global settings + * @uses bp_get_activity_action_name() + * @uses apply_filters() To call the 'bp_activity_can_comment' hook + * + * @return bool $can_comment Defaults to true + */ +function bp_activity_can_comment() { + global $activities_template, $bp; + + $can_comment = true; + + if ( false === $activities_template->disable_blogforum_replies || (int)$activities_template->disable_blogforum_replies ) { + if ( 'new_blog_post' == bp_get_activity_action_name() || 'new_blog_comment' == bp_get_activity_action_name() || 'new_forum_topic' == bp_get_activity_action_name() || 'new_forum_post' == bp_get_activity_action_name() ) + $can_comment = false; + } + + if ( 'activity_comment' == bp_get_activity_action_name() ) + $can_comment = false; + + return apply_filters( 'bp_activity_can_comment', $can_comment ); +} + +/** + * Determine if a comment can be made on an activity reply item + * + * @since 1.5.0 + * + * @param object $comment Activity comment + * + * @uses apply_filters() To call the 'bp_activity_can_comment_reply' hook + * + * @return bool $can_comment Defaults to true + */ +function bp_activity_can_comment_reply( $comment ) { + $can_comment = true; + + return apply_filters( 'bp_activity_can_comment_reply', $can_comment, $comment ); +} + +/** + * Determine if an favorites are allowed + * + * @since 1.5.0 + * + * @uses apply_filters() To call the 'bp_activity_can_favorite' hook + * + * @return bool $can_favorite Defaults to true + */ +function bp_activity_can_favorite() { + $can_favorite = true; + + return apply_filters( 'bp_activity_can_favorite', $can_favorite ); +} + +/** + * Echoes the total favorite count for a specified user + * + * @since 1.2.0 + * + * @param int $user_id Defaults to 0 + * + * @uses bp_get_total_favorite_count_for_user() + */ +function bp_total_favorite_count_for_user( $user_id = 0 ) { + echo bp_get_total_favorite_count_for_user( $user_id ); +} + + /** + * Returns the total favorite count for a specified user + * + * @since 1.2.0 + * + * @param int $user_id Defaults to 0 + * + * @uses bp_activity_total_favorites_for_user() + * @uses apply_filters() To call the 'bp_get_total_favorite_count_for_user' hook + * + * @return int The total favorite count for a specified user + */ + function bp_get_total_favorite_count_for_user( $user_id = 0 ) { + return apply_filters( 'bp_get_total_favorite_count_for_user', bp_activity_total_favorites_for_user( $user_id ) ); + } + +/** + * Echoes the total mention count for a specified user + * + * @since 1.2.0 + * + * @param int $user_id Defaults to 0 + * + * @uses bp_get_total_favorite_count_for_user() + */ +function bp_total_mention_count_for_user( $user_id = 0 ) { + echo bp_get_total_favorite_count_for_user( $user_id ); +} + + /** + * Returns the total mention count for a specified user + * + * @since 1.2.0 + * + * @todo remove unnecessary $bp global + * + * @param int $user_id Defaults to 0 + * + * @uses bp_get_user_meta() + * @uses apply_filters() To call the 'bp_get_total_mention_count_for_user' hook + * + * @return int The total mention count for a specified user + */ + function bp_get_total_mention_count_for_user( $user_id = 0 ) { + global $bp; + + return apply_filters( 'bp_get_total_mention_count_for_user', bp_get_user_meta( $user_id, 'bp_new_mention_count', true ) ); + } + +/** + * Echoes the public message link for displayed user + * + * @since 1.2.0 + * + * @uses bp_get_send_public_message_link() + */ +function bp_send_public_message_link() { + echo bp_get_send_public_message_link(); +} + + /** + * Returns the public message link for displayed user + * + * @since 1.2.0 + * + * @global object $bp BuddyPress global settings + * @uses bp_is_my_profile() + * @uses is_user_logged_in() + * @uses wp_nonce_url() + * @uses bp_loggedin_user_domain() + * @uses bp_get_activity_slug() + * @uses bp_core_get_username() + * @uses apply_filters() To call the 'bp_get_send_public_message_link' hook + * + * @return string The public message link for displayed user + */ + function bp_get_send_public_message_link() { + global $bp; + + if ( bp_is_my_profile() || !is_user_logged_in() ) + return false; + + return apply_filters( 'bp_get_send_public_message_link', wp_nonce_url( bp_loggedin_user_domain() . bp_get_activity_slug() . '/?r=' . bp_core_get_username( $bp->displayed_user->id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) ) ); + } + +/** + * Echoes the mentioned user display name + * + * @since 1.2.0 + * + * @param int|string User id or username + * + * @uses bp_get_mentioned_user_display_name() + */ +function bp_mentioned_user_display_name( $user_id_or_username ) { + echo bp_get_mentioned_user_display_name( $user_id_or_username ); +} + + /** + * Returns the mentioned user display name + * + * @since 1.2.0 + * + * @param int|string User id or username + * + * @uses bp_core_get_user_displayname() + * @uses apply_filters() To call the 'bp_get_mentioned_user_display_name' hook + * + * @return string The mentioned user display name + */ + function bp_get_mentioned_user_display_name( $user_id_or_username ) { + if ( !$name = bp_core_get_user_displayname( $user_id_or_username ) ) + $name = __( 'a user', 'buddypress' ); + + return apply_filters( 'bp_get_mentioned_user_display_name', $name, $user_id_or_username ); + } + +/** + * Output button for sending a public message + * + * @since 1.2.0 + * + * @param array $args Optional + * + * @uses bp_get_send_public_message_button() + */ +function bp_send_public_message_button( $args = '' ) { + echo bp_get_send_public_message_button( $args ); +} + + /** + * Return button for sending a public message + * + * @since 1.2.0 + * + * @param array $args Optional + * + * @uses bp_get_send_public_message_link() + * @uses wp_parse_args() + * @uses bp_get_button() + * @uses apply_filters() To call the 'bp_get_send_public_message_button' hook + * + * @return string The button for sending a public message + */ + function bp_get_send_public_message_button( $args = '' ) { + $defaults = array( + 'id' => 'public_message', + 'component' => 'activity', + 'must_be_logged_in' => true, + 'block_self' => true, + 'wrapper_id' => 'post-mention', + 'link_href' => bp_get_send_public_message_link(), + 'link_title' => __( 'Send a public message on your activity stream.', 'buddypress' ), + 'link_text' => __( 'Public Message', 'buddypress' ), + 'link_class' => 'activity-button mention' + ); + + $button = wp_parse_args( $args, $defaults ); + + // Filter and return the HTML button + return bp_get_button( apply_filters( 'bp_get_send_public_message_button', $button ) ); + } + +/** + * Outputs the activity post form action + * + * @since 1.2.0 + * + * @uses bp_get_activity_post_form_action() + */ +function bp_activity_post_form_action() { + echo bp_get_activity_post_form_action(); +} + + /** + * Returns the activity post form action + * + * @since 1.2.0 + * + * @uses home_url() + * @uses bp_get_activity_root_slug() + * @uses apply_filters() To call the 'bp_get_activity_post_form_action' hook + * + * @return string The activity post form action + */ + function bp_get_activity_post_form_action() { + return apply_filters( 'bp_get_activity_post_form_action', home_url( bp_get_activity_root_slug() . '/post/' ) ); + } + +/* RSS Feed Template Tags ****************************************************/ + +/** + * Outputs the sitewide activity feed link + * + * @since 1.0.0 + * + * @uses bp_get_sitewide_activity_feed_link() + */ +function bp_sitewide_activity_feed_link() { + echo bp_get_sitewide_activity_feed_link(); +} + + /** + * Returns the sitewide activity feed link + * + * @since 1.0.0 + * + * @uses home_url() + * @uses bp_get_activity_root_slug() + * @uses apply_filters() To call the 'bp_get_sitewide_activity_feed_link' hook + * + * @return string The sitewide activity feed link + */ + function bp_get_sitewide_activity_feed_link() { + return apply_filters( 'bp_get_sitewide_activity_feed_link', bp_get_root_domain() . '/' . bp_get_activity_root_slug() . '/feed/' ); + } + +/** + * Outputs the member activity feed link + * + * @since 1.2.0 + * + * @uses bp_get_member_activity_feed_link() + */ +function bp_member_activity_feed_link() { + echo bp_get_member_activity_feed_link(); +} + +/** + * Outputs the member activity feed link + * + * @since 1.0.0 + * @deprecated 1.2.0 + * + * @todo properly deprecated in favor of bp_member_activity_feed_link() + * + * @uses bp_get_member_activity_feed_link() + */ +function bp_activities_member_rss_link() { echo bp_get_member_activity_feed_link(); } + + /** + * Returns the member activity feed link + * + * @since 1.2.0 + * + * @uses bp_is_profile_component() + * @uses bp_is_current_action() + * @uses bp_displayed_user_domain() + * @uses bp_get_activity_slug() + * @uses bp_is_active() + * @uses bp_get_friends_slug() + * @uses bp_get_groups_slug() + * @uses apply_filters() To call the 'bp_get_activities_member_rss_link' hook + * + * @return string $link The member activity feed link + */ + function bp_get_member_activity_feed_link() { + global $bp; + + if ( bp_is_profile_component() || bp_is_current_action( 'just-me' ) ) + $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/feed/'; + elseif ( bp_is_active( 'friends' ) && bp_is_current_action( bp_get_friends_slug() ) ) + $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_friends_slug() . '/feed/'; + elseif ( bp_is_active( 'groups' ) && bp_is_current_action( bp_get_groups_slug() ) ) + $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_groups_slug() . '/feed/'; + elseif ( 'favorites' == $bp->current_action ) + $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/favorites/feed/'; + elseif ( 'mentions' == $bp->current_action ) + $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/mentions/feed/'; + else + $link = ''; + + return apply_filters( 'bp_get_activities_member_rss_link', $link ); + } + + /** + * Returns the member activity feed link + * + * @since 1.0.0 + * @deprecated 1.2.0 + * + * @todo properly deprecated in favor of bp_get_member_activity_feed_link() + * + * @uses bp_get_member_activity_feed_link() + * + * @return string The member activity feed link + */ + function bp_get_activities_member_rss_link() { return bp_get_member_activity_feed_link(); } + + +/** Template tags for RSS feed output ****************************************/ + +/** + * Outputs the activity feed item guid + * + * @since 1.0.0 + * + * @uses bp_activity_feed_item_guid() + */ +function bp_activity_feed_item_guid() { + echo bp_get_activity_feed_item_guid(); +} + + /** + * Returns the activity feed item guid + * + * @since 1.2.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_feed_item_guid' hook + * + * @return string The activity feed item guid + */ + function bp_get_activity_feed_item_guid() { + global $activities_template; + + return apply_filters( 'bp_get_activity_feed_item_guid', md5( $activities_template->activity->date_recorded . '-' . $activities_template->activity->content ) ); + } + +/** + * Outputs the activity feed item title + * + * @since 1.0.0 + * + * @uses bp_get_activity_feed_item_title() + */ +function bp_activity_feed_item_title() { + echo bp_get_activity_feed_item_title(); +} + + /** + * Returns the activity feed item title + * + * @since 1.0.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses ent2ncr() + * @uses convert_chars() + * @uses bp_create_excerpt() + * @uses apply_filters() To call the 'bp_get_activity_feed_item_title' hook + * + * @return string $title The activity feed item title + */ + function bp_get_activity_feed_item_title() { + global $activities_template; + + if ( !empty( $activities_template->activity->action ) ) + $content = $activities_template->activity->action; + else + $content = $activities_template->activity->content; + + $content = explode( '<span', $content ); + $title = strip_tags( ent2ncr( trim( convert_chars( $content[0] ) ) ) ); + + if ( ':' == substr( $title, -1 ) ) + $title = substr( $title, 0, -1 ); + + if ( 'activity_update' == $activities_template->activity->type ) + $title .= ': ' . strip_tags( ent2ncr( trim( convert_chars( bp_create_excerpt( $activities_template->activity->content, 70, array( 'ending' => " […]" ) ) ) ) ) ); + + return apply_filters( 'bp_get_activity_feed_item_title', $title ); + } + +/** + * Outputs the activity feed item link + * + * @since 1.0.0 + * + * @uses bp_get_activity_feed_item_link() + */ +function bp_activity_feed_item_link() { + echo bp_get_activity_feed_item_link(); +} + + /** + * Returns the activity feed item link + * + * @since 1.0.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_feed_item_link' hook + * + * @return string The activity feed item link + */ + function bp_get_activity_feed_item_link() { + global $activities_template; + + return apply_filters( 'bp_get_activity_feed_item_link', $activities_template->activity->primary_link ); + } + +/** + * Outputs the activity feed item date + * + * @since 1.0.0 + * + * @uses bp_get_activity_feed_item_date() + */ +function bp_activity_feed_item_date() { + echo bp_get_activity_feed_item_date(); +} + + /** + * Returns the activity feed item date + * + * @since 1.0.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses apply_filters() To call the 'bp_get_activity_feed_item_date' hook + * + * @return string The activity feed item date + */ + function bp_get_activity_feed_item_date() { + global $activities_template; + + return apply_filters( 'bp_get_activity_feed_item_date', $activities_template->activity->date_recorded ); + } + +/** + * Outputs the activity feed item description + * + * @since 1.0.0 + * + * @uses bp_get_activity_feed_item_description() + */ +function bp_activity_feed_item_description() { + echo bp_get_activity_feed_item_description(); +} + + /** + * Returns the activity feed item description + * + * @since 1.0.0 + * + * @global object $activities_template {@link BP_Activity_Template} + * @uses ent2ncr() + * @uses convert_chars() + * @uses apply_filters() To call the 'bp_get_activity_feed_item_description' hook + * + * @return string The activity feed item description + */ + function bp_get_activity_feed_item_description() { + global $activities_template; + + if ( empty( $activities_template->activity->action ) ) + $content = $activities_template->activity->content; + else + $content = $activities_template->activity->action . ' ' . $activities_template->activity->content; + + return apply_filters( 'bp_get_activity_feed_item_description', ent2ncr( convert_chars( str_replace( '%s', '', $content ) ) ) ); + } + +/** + * Template tag so we can hook activity feed to <head> + * + * @since 1.5.0 + * + * @uses bloginfo() + * @uses bp_sitewide_activity_feed_link() + */ +function bp_activity_sitewide_feed() { +?> + + <link rel="alternate" type="application/rss+xml" title="<?php bloginfo( 'name' ) ?> | <?php _e( 'Site Wide Activity RSS Feed', 'buddypress' ) ?>" href="<?php bp_sitewide_activity_feed_link() ?>" /> + +<?php +} +add_action( 'bp_head', 'bp_activity_sitewide_feed' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-favorites-feed.php b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-favorites-feed.php new file mode 100644 index 0000000..b99de10 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-favorites-feed.php @@ -0,0 +1,74 @@ +<?php + +/** + * RSS2 Feed Template for displaying a member's favorite activity + * + * @package BuddyPress + * @subpackage ActivityFeeds + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +header('Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); +header('Status: 200 OK'); +?> +<?php echo '<?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?'.'>'; ?> + +<rss version="2.0" + xmlns:content="http://purl.org/rss/1.0/modules/content/" + xmlns:wfw="http://wellformedweb.org/CommentAPI/" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:atom="http://www.w3.org/2005/Atom" + <?php do_action('bp_activity_favorites_feed'); ?> +> + +<channel> + <title><?php bp_site_name() ?> | <?php echo $bp->displayed_user->fullname; ?> | <?php _e( 'Favorite Activity', 'buddypress' ) ?> + + + displayed_user->fullname; ?> - + + http://buddypress.org/?v= + + + + + displayed_user->id ); + $fav_ids = implode( ',', (array)$favs ); + ?> + + + + + + + <?php bp_activity_feed_item_title() ?> + + + + + + + +

    + + + +
    - + + + ]]> +
    + + + +
    + + + + + + diff --git a/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-friends-feed.php b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-friends-feed.php new file mode 100644 index 0000000..e1d83ab --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-friends-feed.php @@ -0,0 +1,64 @@ + +'; ?> + + +> + + + <?php bp_site_name() ?> | <?php bp_displayed_user_fullname(); ?> | <?php _e( 'Friends Activity', 'buddypress' ); ?> + + + + + http://buddypress.org/?v= + + + + + + + + <?php bp_activity_feed_item_title(); ?> + + + + + + + +

    + + + +
    - + + + ]]> +
    + +
    + + + +
    +
    diff --git a/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-group-feed.php b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-group-feed.php new file mode 100644 index 0000000..4300e17 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-group-feed.php @@ -0,0 +1,59 @@ + +'; ?> + + +> + + + <?php bp_site_name() ?> | <?php echo $bp->groups->current_group->name ?> | <?php _e( 'Group Activity', 'buddypress' ) ?> + + groups->current_group ) . bp_get_activity_slug() . '/feed' ?> + groups->current_group->name ) ?> + + http://buddypress.org/?v= + + + + groups->id . '&primary_id=' . $bp->groups->current_group->id . '&max=50&display_comments=threaded' ) ) : ?> + + + + <?php bp_activity_feed_item_title() ?> + + + + + + + +

    + + ]]> +
    + +
    + + + +
    +
    diff --git a/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-mentions-feed.php b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-mentions-feed.php new file mode 100644 index 0000000..40228d2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-mentions-feed.php @@ -0,0 +1,64 @@ + +'; ?> + + +> + + + <?php bp_site_name() ?> | <?php echo $bp->displayed_user->fullname; ?> | <?php _e( 'Mentions', 'buddypress' ) ?> + + + displayed_user->fullname; ?> - + + http://buddypress.org/?v= + + + + displayed_user->id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) ) ) : ?> + + + + <?php bp_activity_feed_item_title() ?> + + + + + + + +

    + + + +
    - + + + ]]> +
    + +
    + + + +
    +
    diff --git a/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-mygroups-feed.php b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-mygroups-feed.php new file mode 100644 index 0000000..21b8d26 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-mygroups-feed.php @@ -0,0 +1,64 @@ + +'; ?> + + +> + + + <?php bp_site_name() ?> | <?php echo $bp->displayed_user->fullname; ?> | <?php _e( 'My Groups - Public Activity', 'buddypress' ) ?> + + + displayed_user->fullname; ?> - + + http://buddypress.org/?v= + + + + loggedin_user->id ); + $group_ids = implode( ',', $groups['groups'] ); + ?> + + groups->id . '&primary_id=' . $group_ids . '&max=50&display_comments=threaded' ) ) : ?> + + + + <?php bp_activity_feed_item_title() ?> + + + + + + + +

    + + ]]> +
    + +
    + + + +
    +
    diff --git a/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-personal-feed.php b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-personal-feed.php new file mode 100644 index 0000000..02e41ab --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-personal-feed.php @@ -0,0 +1,64 @@ + +'; ?> + + +> + + + <?php bp_site_name() ?> | <?php echo $bp->displayed_user->fullname; ?> | <?php _e( 'Activity', 'buddypress' ) ?> + + + displayed_user->fullname ) ?> + + http://buddypress.org/?v= + + + + displayed_user->id . '&max=50&display_comments=stream' ) ) : ?> + + + + <?php bp_activity_feed_item_title() ?> + + + + + + + +

    + + + +
    - + + + ]]> +
    + +
    + + + +
    +
    diff --git a/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-sitewide-feed.php b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-sitewide-feed.php new file mode 100644 index 0000000..5a3a0f6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/feeds/bp-activity-sitewide-feed.php @@ -0,0 +1,59 @@ + +'; ?> + + +> + + + <?php bp_site_name() ?> | <?php _e( 'Site Wide Activity', 'buddypress' ) ?> + + + + + http://buddypress.org/?v= + + + + + + + + <?php bp_activity_feed_item_title() ?> + + + + + + + +

    + + ]]> +
    + +
    + + + +
    +
    diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-actions.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-actions.php new file mode 100644 index 0000000..dd248b4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-actions.php @@ -0,0 +1,16 @@ +blog_id ) ); + } +} +add_action( 'bp_actions', 'bp_blogs_redirect_to_random_blog' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-activity.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-activity.php new file mode 100644 index 0000000..ec5f484 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-activity.php @@ -0,0 +1,94 @@ +blogs->id, 'new_blog', __( 'New site created', 'buddypress' ) ); + bp_activity_set_action( $bp->blogs->id, 'new_blog_post', __( 'New post published', 'buddypress' ) ); + bp_activity_set_action( $bp->blogs->id, 'new_blog_comment', __( 'New post comment posted', 'buddypress' ) ); + + do_action( 'bp_blogs_register_activity_actions' ); +} +add_action( 'bp_register_activity_actions', 'bp_blogs_register_activity_actions' ); + +function bp_blogs_record_activity( $args = '' ) { + global $bp; + + if ( !bp_is_active( 'activity' ) ) + return false; + + $defaults = array( + 'user_id' => $bp->loggedin_user->id, + 'action' => '', + 'content' => '', + 'primary_link' => '', + 'component' => $bp->blogs->id, + 'type' => false, + 'item_id' => false, + 'secondary_item_id' => false, + 'recorded_time' => bp_core_current_time(), + 'hide_sitewide' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // Remove large images and replace them with just one image thumbnail + if ( bp_is_active( 'activity' ) && !empty( $content ) ) + $content = bp_activity_thumbnail_content_images( $content, $primary_link ); + + if ( !empty( $action ) ) + $action = apply_filters( 'bp_blogs_record_activity_action', $action ); + + if ( !empty( $content ) ) + $content = apply_filters( 'bp_blogs_record_activity_content', bp_create_excerpt( $content ), $content ); + + // Check for an existing entry and update if one exists. + $id = bp_activity_get_activity_id( array( + 'user_id' => $user_id, + 'component' => $component, + 'type' => $type, + 'item_id' => $item_id, + 'secondary_item_id' => $secondary_item_id + ) ); + + return bp_activity_add( array( 'id' => $id, 'user_id' => $user_id, 'action' => $action, 'content' => $content, 'primary_link' => $primary_link, 'component' => $component, 'type' => $type, 'item_id' => $item_id, 'secondary_item_id' => $secondary_item_id, 'recorded_time' => $recorded_time, 'hide_sitewide' => $hide_sitewide ) ); +} + +function bp_blogs_delete_activity( $args = true ) { + global $bp; + + if ( bp_is_active( 'activity' ) ) { + $defaults = array( + 'item_id' => false, + 'component' => $bp->blogs->id, + 'type' => false, + 'user_id' => false, + 'secondary_item_id' => false + ); + + $params = wp_parse_args( $args, $defaults ); + extract( $params, EXTR_SKIP ); + + bp_activity_delete_by_item_id( array( + 'item_id' => $item_id, + 'component' => $component, + 'type' => $type, + 'user_id' => $user_id, + 'secondary_item_id' => $secondary_item_id + ) ); + } +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-buddybar.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-buddybar.php new file mode 100644 index 0000000..06384fd --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-buddybar.php @@ -0,0 +1,63 @@ +loggedin_user->id . '_inc_hidden', 'bp' ) ) { + $blogs = bp_blogs_get_blogs_for_user( $bp->loggedin_user->id, true ); + wp_cache_set( 'bp_blogs_of_user_' . $bp->loggedin_user->id . '_inc_hidden', $blogs, 'bp' ); + } + + $counter = 0; + if ( is_array( $blogs['blogs'] ) && (int)$blogs['count'] ) { + + echo '
  • '; + + _e( 'My Sites', 'buddypress' ); + + echo ''; + echo ''; + echo '
  • '; + } +} +add_action( 'bp_adminbar_menus', 'bp_adminbar_blogs_menu', 6 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-cache.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-cache.php new file mode 100644 index 0000000..24f69ff --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-cache.php @@ -0,0 +1,37 @@ +user_id ); + wp_cache_delete( 'bp_total_blogs', 'bp' ); +} + +// List actions to clear object caches on +add_action( 'bp_blogs_remove_blog_for_user', 'bp_blogs_clear_blog_object_cache', 10, 2 ); +add_action( 'bp_blogs_new_blog', 'bp_blogs_format_clear_blog_cache', 10, 2 ); + +// List actions to clear super cached pages on, if super cache is installed +add_action( 'bp_blogs_remove_data_for_blog', 'bp_core_clear_cache' ); +add_action( 'bp_blogs_remove_comment', 'bp_core_clear_cache' ); +add_action( 'bp_blogs_remove_post', 'bp_core_clear_cache' ); +add_action( 'bp_blogs_remove_blog_for_user', 'bp_core_clear_cache' ); +add_action( 'bp_blogs_remove_blog', 'bp_core_clear_cache' ); +add_action( 'bp_blogs_new_blog_comment', 'bp_core_clear_cache' ); +add_action( 'bp_blogs_new_blog_post', 'bp_core_clear_cache' ); +add_action( 'bp_blogs_new_blog', 'bp_core_clear_cache' ); +add_action( 'bp_blogs_remove_data', 'bp_core_clear_cache' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-classes.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-classes.php new file mode 100644 index 0000000..73b5640 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-classes.php @@ -0,0 +1,282 @@ +__construct( $id ); + } + + function __construct( $id = null ) { + global $bp, $wpdb; + + $user_id = bp_displayed_user_id(); + + if ( $id ) { + $this->id = $id; + $this->populate(); + } + } + + function populate() { + global $wpdb, $bp; + + $blog = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name} WHERE id = %d", $this->id ) ); + + $this->user_id = $blog->user_id; + $this->blog_id = $blog->blog_id; + } + + function save() { + global $wpdb, $bp; + + $this->user_id = apply_filters( 'bp_blogs_blog_user_id_before_save', $this->user_id, $this->id ); + $this->blog_id = apply_filters( 'bp_blogs_blog_id_before_save', $this->blog_id, $this->id ); + + do_action_ref_array( 'bp_blogs_blog_before_save', array( &$this ) ); + + // Don't try and save if there is no user ID or blog ID set. + if ( !$this->user_id || !$this->blog_id ) + return false; + + // Don't save if this blog has already been recorded for the user. + if ( !$this->id && $this->exists() ) + return false; + + if ( $this->id ) { + // Update + $sql = $wpdb->prepare( "UPDATE {$bp->blogs->table_name} SET user_id = %d, blog_id = %d WHERE id = %d", $this->user_id, $this->blog_id, $this->id ); + } else { + // Save + $sql = $wpdb->prepare( "INSERT INTO {$bp->blogs->table_name} ( user_id, blog_id ) VALUES ( %d, %d )", $this->user_id, $this->blog_id ); + } + + if ( !$wpdb->query($sql) ) + return false; + + do_action_ref_array( 'bp_blogs_blog_after_save', array( &$this ) ); + + if ( $this->id ) + return $this->id; + else + return $wpdb->insert_id; + } + + function exists() { + global $bp, $wpdb; + + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->blogs->table_name} WHERE user_id = %d AND blog_id = %d", $this->user_id, $this->blog_id ) ); + } + + /* Static Functions */ + + function get( $type, $limit = false, $page = false, $user_id = 0, $search_terms = false ) { + global $bp, $wpdb; + + if ( !is_user_logged_in() || ( !is_super_admin() && ( $user_id != $bp->loggedin_user->id ) ) ) + $hidden_sql = "AND wb.public = 1"; + else + $hidden_sql = ''; + + $pag_sql = ( $limit && $page ) ? $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ) : ''; + + $user_sql = !empty( $user_id ) ? $wpdb->prepare( " AND b.user_id = %d", $user_id ) : ''; + + switch ( $type ) { + case 'active': default: + $order_sql = "ORDER BY bm.meta_value DESC"; + break; + case 'alphabetical': + $order_sql = "ORDER BY bm2.meta_value ASC"; + break; + case 'newest': + $order_sql = "ORDER BY wb.registered DESC"; + break; + case 'random': + $order_sql = "ORDER BY RAND()"; + break; + } + + if ( !empty( $search_terms ) ) { + $filter = like_escape( $wpdb->escape( $search_terms ) ); + $paged_blogs = $wpdb->get_results( "SELECT b.blog_id, b.user_id as admin_user_id, u.user_email as admin_user_email, wb.domain, wb.path, bm.meta_value as last_activity, bm2.meta_value as name FROM {$bp->blogs->table_name} b, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2, {$wpdb->base_prefix}blogs wb, {$wpdb->users} u WHERE b.blog_id = wb.blog_id AND b.user_id = u.ID AND b.blog_id = bm.blog_id AND b.blog_id = bm2.blog_id AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'last_activity' AND bm2.meta_key = 'name' AND bm2.meta_value LIKE '%%$filter%%' {$user_sql} GROUP BY b.blog_id {$order_sql} {$pag_sql}" ); + $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b, {$wpdb->base_prefix}blogs wb, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2 WHERE b.blog_id = wb.blog_id AND bm.blog_id = b.blog_id AND bm2.blog_id = b.blog_id AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'name' AND bm2.meta_key = 'description' AND ( bm.meta_value LIKE '%%$filter%%' || bm2.meta_value LIKE '%%$filter%%' ) {$user_sql}" ); + } else { + $paged_blogs = $wpdb->get_results( $wpdb->prepare( "SELECT b.blog_id, b.user_id as admin_user_id, u.user_email as admin_user_email, wb.domain, wb.path, bm.meta_value as last_activity, bm2.meta_value as name FROM {$bp->blogs->table_name} b, {$bp->blogs->table_name_blogmeta} bm, {$bp->blogs->table_name_blogmeta} bm2, {$wpdb->base_prefix}blogs wb, {$wpdb->users} u WHERE b.blog_id = wb.blog_id AND b.user_id = u.ID AND b.blog_id = bm.blog_id AND b.blog_id = bm2.blog_id {$user_sql} AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql} AND bm.meta_key = 'last_activity' AND bm2.meta_key = 'name' GROUP BY b.blog_id {$order_sql} {$pag_sql}" ) ); + $total_blogs = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b, {$wpdb->base_prefix}blogs wb WHERE b.blog_id = wb.blog_id {$user_sql} AND wb.archived = '0' AND wb.spam = 0 AND wb.mature = 0 AND wb.deleted = 0 {$hidden_sql}" ) ); + } + + $blog_ids = array(); + foreach ( (array)$paged_blogs as $blog ) { + $blog_ids[] = $blog->blog_id; + } + + $blog_ids = $wpdb->escape( join( ',', (array)$blog_ids ) ); + $paged_blogs = BP_Blogs_Blog::get_blog_extras( $paged_blogs, $blog_ids, $type ); + + return array( 'blogs' => $paged_blogs, 'total' => $total_blogs ); + } + + function delete_blog_for_all( $blog_id ) { + global $wpdb, $bp; + + bp_blogs_delete_blogmeta( $blog_id ); + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name} WHERE blog_id = %d", $blog_id ) ); + } + + function delete_blog_for_user( $blog_id, $user_id = null ) { + global $wpdb, $bp; + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name} WHERE user_id = %d AND blog_id = %d", $user_id, $blog_id ) ); + } + + function delete_blogs_for_user( $user_id = null ) { + global $wpdb, $bp; + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name} WHERE user_id = %d", $user_id ) ); + } + + function get_blogs_for_user( $user_id = 0, $show_hidden = false ) { + global $bp, $wpdb; + + if ( !$user_id ) + $user_id = $bp->displayed_user->id; + + // Show logged in users their hidden blogs. + if ( !bp_is_my_profile() && !$show_hidden ) + $blogs = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT b.blog_id, b.id, bm1.meta_value as name, wb.domain, wb.path FROM {$bp->blogs->table_name} b, {$wpdb->base_prefix}blogs wb, {$bp->blogs->table_name_blogmeta} bm1 WHERE b.blog_id = wb.blog_id AND b.blog_id = bm1.blog_id AND bm1.meta_key = 'name' AND wb.public = 1 AND wb.deleted = 0 AND wb.spam = 0 AND wb.mature = 0 AND wb.archived = '0' AND b.user_id = %d ORDER BY b.blog_id", $user_id ) ); + else + $blogs = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT b.blog_id, b.id, bm1.meta_value as name, wb.domain, wb.path FROM {$bp->blogs->table_name} b, {$wpdb->base_prefix}blogs wb, {$bp->blogs->table_name_blogmeta} bm1 WHERE b.blog_id = wb.blog_id AND b.blog_id = bm1.blog_id AND bm1.meta_key = 'name' AND wb.deleted = 0 AND wb.spam = 0 AND wb.mature = 0 AND wb.archived = '0' AND b.user_id = %d ORDER BY b.blog_id", $user_id ) ); + + $total_blog_count = BP_Blogs_Blog::total_blog_count_for_user( $user_id ); + + $user_blogs = array(); + foreach ( (array)$blogs as $blog ) { + $user_blogs[$blog->blog_id] = new stdClass; + $user_blogs[$blog->blog_id]->id = $blog->id; + $user_blogs[$blog->blog_id]->blog_id = $blog->blog_id; + $user_blogs[$blog->blog_id]->siteurl = ( is_ssl() ) ? 'https://' . $blog->domain . $blog->path : 'http://' . $blog->domain . $blog->path; + $user_blogs[$blog->blog_id]->name = $blog->name; + } + + return array( 'blogs' => $user_blogs, 'count' => $total_blog_count ); + } + + function get_blog_ids_for_user( $user_id = 0 ) { + global $bp, $wpdb; + + if ( !$user_id ) + $user_id = $bp->displayed_user->id; + + return $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM {$bp->blogs->table_name} WHERE user_id = %d", $user_id ) ); + } + + function is_recorded( $blog_id ) { + global $bp, $wpdb; + + return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->blogs->table_name} WHERE blog_id = %d", $blog_id ) ); + } + + function total_blog_count_for_user( $user_id = null ) { + global $bp, $wpdb; + + if ( !$user_id ) + $user_id = $bp->displayed_user->id; + + // If the user is logged in return the blog count including their hidden blogs. + if ( ( is_user_logged_in() && $user_id == $bp->loggedin_user->id ) || is_super_admin() ) + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.deleted = 0 AND wb.spam = 0 AND wb.mature = 0 AND wb.archived = '0' AND user_id = %d", $user_id) ); + else + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.public = 1 AND wb.deleted = 0 AND wb.spam = 0 AND wb.mature = 0 AND wb.archived = '0' AND user_id = %d", $user_id) ); + } + + function search_blogs( $filter, $limit = null, $page = null ) { + global $wpdb, $bp; + + $filter = like_escape( $wpdb->escape( $filter ) ); + + if ( !is_super_admin() ) + $hidden_sql = "AND wb.public = 1"; + + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + $paged_blogs = $wpdb->get_results( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND bm.meta_value LIKE '%%$filter%%' ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC{$pag_sql}" ); + $total_blogs = $wpdb->get_var( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE ( ( bm.meta_key = 'name' OR bm.meta_key = 'description' ) AND bm.meta_value LIKE '%%$filter%%' ) {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY meta_value ASC" ); + + return array( 'blogs' => $paged_blogs, 'total' => $total_blogs ); + } + + function get_all( $limit = null, $page = null ) { + global $bp, $wpdb; + + $hidden_sql = !is_super_admin() ? "AND wb.public = 1" : ''; + $pag_sql = ( $limit && $page ) ? $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ) : ''; + + $paged_blogs = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT b.blog_id FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 {$hidden_sql} {$pag_sql}" ) ); + $total_blogs = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT b.blog_id) FROM {$bp->blogs->table_name} b LEFT JOIN {$wpdb->base_prefix}blogs wb ON b.blog_id = wb.blog_id WHERE wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 {$hidden_sql}" ) ); + + return array( 'blogs' => $paged_blogs, 'total' => $total_blogs ); + } + + function get_by_letter( $letter, $limit = null, $page = null ) { + global $bp, $wpdb; + + $letter = like_escape( $wpdb->escape( $letter ) ); + + if ( !is_super_admin() ) + $hidden_sql = "AND wb.public = 1"; + + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + $paged_blogs = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT bm.blog_id FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE bm.meta_key = 'name' AND bm.meta_value LIKE '$letter%%' {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY bm.meta_value ASC{$pag_sql}" ) ); + $total_blogs = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT bm.blog_id) FROM {$bp->blogs->table_name_blogmeta} bm LEFT JOIN {$wpdb->base_prefix}blogs wb ON bm.blog_id = wb.blog_id WHERE bm.meta_key = 'name' AND bm.meta_value LIKE '$letter%%' {$hidden_sql} AND wb.mature = 0 AND wb.spam = 0 AND wb.archived = '0' AND wb.deleted = 0 ORDER BY bm.meta_value ASC" ) ); + + return array( 'blogs' => $paged_blogs, 'total' => $total_blogs ); + } + + function get_blog_extras( &$paged_blogs, &$blog_ids, $type = false ) { + global $bp, $wpdb; + + if ( empty( $blog_ids ) ) + return $paged_blogs; + + for ( $i = 0, $count = count( $paged_blogs ); $i < $count; ++$i ) { + $blog_prefix = $wpdb->get_blog_prefix( $paged_blogs[$i]->blog_id ); + $paged_blogs[$i]->latest_post = $wpdb->get_row( "SELECT post_title, guid FROM {$blog_prefix}posts WHERE post_status = 'publish' AND post_type = 'post' AND id != 1 ORDER BY id DESC LIMIT 1" ); + } + + /* Fetch the blog description for each blog (as it may be empty we can't fetch it in the main query). */ + $blog_descs = $wpdb->get_results( $wpdb->prepare( "SELECT blog_id, meta_value as description FROM {$bp->blogs->table_name_blogmeta} WHERE meta_key = 'description' AND blog_id IN ( {$blog_ids} )" ) ); + + for ( $i = 0, $count = count( $paged_blogs ); $i < $count; ++$i ) { + foreach ( (array)$blog_descs as $desc ) { + if ( $desc->blog_id == $paged_blogs[$i]->blog_id ) + $paged_blogs[$i]->description = $desc->description; + } + } + + return $paged_blogs; + } + + function is_hidden( $blog_id ) { + global $wpdb; + + if ( !(int)$wpdb->get_var( $wpdb->prepare( "SELECT DISTINCT public FROM {$wpdb->base_prefix}blogs WHERE blog_id = %d", $blog_id ) ) ) + return true; + + return false; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-functions.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-functions.php new file mode 100644 index 0000000..6606631 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-functions.php @@ -0,0 +1,573 @@ +pages->blogs->id ); +} + +function bp_blogs_get_blogs( $args = '' ) { + global $bp; + + $defaults = array( + 'type' => 'active', // active, alphabetical, newest, or random + 'user_id' => false, // Pass a user_id to limit to only blogs that this user has privilages higher than subscriber on + 'search_terms' => false, // Limit to blogs that match these search terms + 'per_page' => 20, // The number of results to return per page + 'page' => 1, // The page to return if limiting per page + ); + + $params = wp_parse_args( $args, $defaults ); + extract( $params, EXTR_SKIP ); + + return apply_filters( 'bp_blogs_get_blogs', BP_Blogs_Blog::get( $type, $per_page, $page, $user_id, $search_terms ), $params ); +} + +/** + * Populates the BP blogs table with existing blogs. + * + * @package BuddyPress Blogs + * + * @global object $bp BuddyPress global settings + * @global object $wpdb WordPress database object + * @uses get_users() + * @uses bp_blogs_record_blog() + */ +function bp_blogs_record_existing_blogs() { + global $bp, $wpdb; + + // Truncate user blogs table and re-record. + $wpdb->query( "TRUNCATE TABLE {$bp->blogs->table_name}" ); + + if ( is_multisite() ) + $blog_ids = $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM {$wpdb->base_prefix}blogs WHERE mature = 0 AND spam = 0 AND deleted = 0" ) ); + else + $blog_ids = 1; + + if ( $blog_ids ) { + foreach( (array)$blog_ids as $blog_id ) { + $users = get_users( array( 'blog_id' => $blog_id ) ); + $subscribers = get_users( array( 'blog_id' => $blog_id, 'role' => 'subscriber' ) ); + + if ( !empty( $users ) ) { + foreach ( (array)$users as $user ) { + // Don't record blogs for subscribers + if ( !in_array( $user, $subscribers ) ) + bp_blogs_record_blog( $blog_id, $user->ID, true ); + } + } + } + } +} + +/** + * Makes BuddyPress aware of a new site so that it can track its activity. + * + * @global object $bp BuddyPress global settings + * @param int $blog_id + * @param int $user_id + * @param $bool $no_activity ; optional. + * @since 1.0 + * @uses BP_Blogs_Blog + */ +function bp_blogs_record_blog( $blog_id, $user_id, $no_activity = false ) { + global $bp; + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + $name = get_blog_option( $blog_id, 'blogname' ); + $description = get_blog_option( $blog_id, 'blogdescription' ); + + if ( empty( $name ) ) + return false; + + $recorded_blog = new BP_Blogs_Blog; + $recorded_blog->user_id = $user_id; + $recorded_blog->blog_id = $blog_id; + + $recorded_blog_id = $recorded_blog->save(); + + $is_recorded = !empty( $recorded_blog_id ) ? true : false; + + bp_blogs_update_blogmeta( $recorded_blog->blog_id, 'name', $name ); + bp_blogs_update_blogmeta( $recorded_blog->blog_id, 'description', $description ); + bp_blogs_update_blogmeta( $recorded_blog->blog_id, 'last_activity', bp_core_current_time() ); + + $is_private = !empty( $_POST['blog_public'] ) && (int)$_POST['blog_public'] ? false : true; + $is_private = !apply_filters( 'bp_is_new_blog_public', !$is_private ); + + // Only record this activity if the blog is public + if ( !$is_private && !$no_activity ) { + // Record this in activity streams + bp_blogs_record_activity( array( + 'user_id' => $recorded_blog->user_id, + 'action' => apply_filters( 'bp_blogs_activity_created_blog_action', sprintf( __( '%s created the site %s', 'buddypress'), bp_core_get_userlink( $recorded_blog->user_id ), '' . esc_attr( $name ) . '' ), $recorded_blog, $name, $description ), + 'primary_link' => apply_filters( 'bp_blogs_activity_created_blog_primary_link', get_site_url( $recorded_blog->blog_id ), $recorded_blog->blog_id ), + 'type' => 'new_blog', + 'item_id' => $recorded_blog->blog_id + ) ); + } + + do_action_ref_array( 'bp_blogs_new_blog', array( &$recorded_blog, $is_private, $is_recorded ) ); +} +add_action( 'wpmu_new_blog', 'bp_blogs_record_blog', 10, 2 ); + +/** + * Updates blogname in BuddyPress blogmeta table + * + * @global object $wpdb DB Layer + * @param string $oldvalue Value before save (not used) + * @param string $newvalue Value to change meta to + */ +function bp_blogs_update_option_blogname( $oldvalue, $newvalue ) { + global $wpdb; + + bp_blogs_update_blogmeta( $wpdb->blogid, 'name', $newvalue ); +} +add_action( 'update_option_blogname', 'bp_blogs_update_option_blogname', 10, 2 ); + +/** + * Updates blogdescription in BuddyPress blogmeta table + * + * @global object $wpdb DB Layer + * @param string $oldvalue Value before save (not used) + * @param string $newvalue Value to change meta to + */ +function bp_blogs_update_option_blogdescription( $oldvalue, $newvalue ) { + global $wpdb; + + bp_blogs_update_blogmeta( $wpdb->blogid, 'description', $newvalue ); +} +add_action( 'update_option_blogdescription', 'bp_blogs_update_option_blogdescription', 10, 2 ); + +function bp_blogs_record_post( $post_id, $post, $user_id = 0 ) { + global $bp, $wpdb; + + $post_id = (int)$post_id; + $blog_id = (int)$wpdb->blogid; + + if ( !$user_id ) + $user_id = (int)$post->post_author; + + // Stop infinite loops with WordPress MU Sitewide Tags. + // That plugin changed the way its settings were stored at some point. Thus the dual check. + if ( !empty( $bp->site_options['sitewide_tags_blog'] ) ) { + $st_options = maybe_unserialize( $bp->site_options['sitewide_tags_blog'] ); + $tags_blog_id = isset( $st_options['tags_blog_id'] ) ? $st_options['tags_blog_id'] : 0; + } else { + $tags_blog_id = isset( $bp->site_options['tags_blog_id'] ) ? $bp->site_options['tags_blog_id'] : 0; + } + + if ( (int)$blog_id == $tags_blog_id && apply_filters( 'bp_blogs_block_sitewide_tags_activity', true ) ) + return false; + + // Don't record this if it's not a post + if ( !in_array( $post->post_type, apply_filters( 'bp_blogs_record_post_post_types', array( 'post' ) ) ) ) + return false; + + $is_blog_public = apply_filters( 'bp_is_blog_public', (int)get_blog_option( $blog_id, 'blog_public' ) ); + + if ( 'publish' == $post->post_status && empty( $post->post_password ) ) { + if ( $is_blog_public || !is_multisite() ) { + // Record this in activity streams + $post_permalink = get_permalink( $post_id ); + + if ( is_multisite() ) + $activity_action = sprintf( __( '%1$s wrote a new post, %2$s, on the site %3$s', 'buddypress' ), bp_core_get_userlink( (int)$post->post_author ), '' . $post->post_title . '', '' . get_blog_option( $blog_id, 'blogname' ) . '' ); + else + $activity_action = sprintf( __( '%1$s wrote a new post, %2$s', 'buddypress' ), bp_core_get_userlink( (int)$post->post_author ), '' . $post->post_title . '' ); + + $activity_content = $post->post_content; + + bp_blogs_record_activity( array( + 'user_id' => (int)$post->post_author, + 'action' => apply_filters( 'bp_blogs_activity_new_post_action', $activity_action, $post, $post_permalink ), + 'content' => apply_filters( 'bp_blogs_activity_new_post_content', $activity_content, $post, $post_permalink ), + 'primary_link' => apply_filters( 'bp_blogs_activity_new_post_primary_link', $post_permalink, $post_id ), + 'type' => 'new_blog_post', + 'item_id' => $blog_id, + 'secondary_item_id' => $post_id, + 'recorded_time' => $post->post_modified_gmt + )); + } + + // Update the blogs last activity + bp_blogs_update_blogmeta( $blog_id, 'last_activity', bp_core_current_time() ); + } else { + bp_blogs_remove_post( $post_id, $blog_id, $user_id ); + } + + do_action( 'bp_blogs_new_blog_post', $post_id, $post, $user_id ); +} +add_action( 'save_post', 'bp_blogs_record_post', 10, 2 ); + +/** + * Record blog comment activity. Checks if blog is public and post is not + * password protected. + * + * @global $bp $bp + * @param int $comment_id + * @param bool $is_approved + * @return mixed + */ +function bp_blogs_record_comment( $comment_id, $is_approved = true ) { + global $bp; + + // Get the users comment + $recorded_comment = get_comment( $comment_id ); + + // Don't record activity if the comment hasn't been approved + if ( empty( $is_approved ) ) + return false; + + // Don't record activity if no email address has been included + if ( empty( $recorded_comment->comment_author_email ) ) + return false; + + // Get the user_id from the comment author email. + $user = get_user_by( 'email', $recorded_comment->comment_author_email ); + $user_id = (int)$user->ID; + + // If there's no registered user id, don't record activity + if ( empty( $user_id ) ) + return false; + + // Get blog and post data + $blog_id = get_current_blog_id(); + $recorded_comment->post = get_post( $recorded_comment->comment_post_ID ); + + if ( empty( $recorded_comment->post ) || is_wp_error( $recorded_comment->post ) ) + return false; + + // If this is a password protected post, don't record the comment + if ( !empty( $recorded_comment->post->post_password ) ) + return false; + + // Don't record activity if the comment's associated post isn't a WordPress Post + if ( !in_array( $recorded_comment->post->post_type, apply_filters( 'bp_blogs_record_comment_post_types', array( 'post' ) ) ) ) + return false; + + $is_blog_public = apply_filters( 'bp_is_blog_public', (int)get_blog_option( $blog_id, 'blog_public' ) ); + + // If blog is public allow activity to be posted + if ( $is_blog_public ) { + + // Get activity related links + $post_permalink = get_permalink( $recorded_comment->comment_post_ID ); + $comment_link = htmlspecialchars( get_comment_link( $recorded_comment->comment_ID ) ); + + // Prepare to record in activity streams + if ( is_multisite() ) + $activity_action = sprintf( __( '%1$s commented on the post, %2$s, on the site %3$s', 'buddypress' ), bp_core_get_userlink( $user_id ), '' . apply_filters( 'the_title', $recorded_comment->post->post_title ) . '', '' . get_blog_option( $blog_id, 'blogname' ) . '' ); + else + $activity_action = sprintf( __( '%1$s commented on the post, %2$s', 'buddypress' ), bp_core_get_userlink( $user_id ), '' . apply_filters( 'the_title', $recorded_comment->post->post_title ) . '' ); + + $activity_content = $recorded_comment->comment_content; + + // Record in activity streams + bp_blogs_record_activity( array( + 'user_id' => $user_id, + 'action' => apply_filters_ref_array( 'bp_blogs_activity_new_comment_action', array( $activity_action, &$recorded_comment, $comment_link ) ), + 'content' => apply_filters_ref_array( 'bp_blogs_activity_new_comment_content', array( $activity_content, &$recorded_comment, $comment_link ) ), + 'primary_link' => apply_filters_ref_array( 'bp_blogs_activity_new_comment_primary_link', array( $comment_link, &$recorded_comment ) ), + 'type' => 'new_blog_comment', + 'item_id' => $blog_id, + 'secondary_item_id' => $comment_id, + 'recorded_time' => $recorded_comment->comment_date_gmt + ) ); + + // Update the blogs last active date + bp_blogs_update_blogmeta( $blog_id, 'last_activity', bp_core_current_time() ); + } + + return $recorded_comment; +} +add_action( 'comment_post', 'bp_blogs_record_comment', 10, 2 ); +add_action( 'edit_comment', 'bp_blogs_record_comment', 10 ); + +function bp_blogs_manage_comment( $comment_id, $comment_status ) { + if ( 'spam' == $comment_status || 'hold' == $comment_status || 'delete' == $comment_status || 'trash' == $comment_status ) + return bp_blogs_remove_comment( $comment_id ); + + return bp_blogs_record_comment( $comment_id, true ); +} +add_action( 'wp_set_comment_status', 'bp_blogs_manage_comment', 10, 2 ); + +function bp_blogs_add_user_to_blog( $user_id, $role = false, $blog_id = 0 ) { + global $wpdb; + + if ( empty( $blog_id ) ) { + $blog_id = isset( $wpdb->blogid ) ? $wpdb->blogid : bp_get_root_blog_id(); + } + + if ( empty( $role ) ) { + $key = $wpdb->get_blog_prefix( $blog_id ). 'capabilities'; + + $roles = get_user_meta( $user_id, $key, true ); + + if ( is_array( $roles ) ) + $role = array_search( 1, $roles ); + else + return false; + } + + if ( $role != 'subscriber' ) + bp_blogs_record_blog( $blog_id, $user_id, true ); +} +add_action( 'add_user_to_blog', 'bp_blogs_add_user_to_blog', 10, 3 ); +add_action( 'profile_update', 'bp_blogs_add_user_to_blog' ); +add_action( 'user_register', 'bp_blogs_add_user_to_blog' ); + +function bp_blogs_remove_user_from_blog( $user_id, $blog_id = 0 ) { + global $wpdb; + + if ( empty( $blog_id ) ) + $blog_id = $wpdb->blogid; + + bp_blogs_remove_blog_for_user( $user_id, $blog_id ); +} +add_action( 'remove_user_from_blog', 'bp_blogs_remove_user_from_blog', 10, 2 ); + +function bp_blogs_remove_blog( $blog_id ) { + global $bp; + + $blog_id = (int)$blog_id; + do_action( 'bp_blogs_before_remove_blog', $blog_id ); + + BP_Blogs_Blog::delete_blog_for_all( $blog_id ); + + // Delete activity stream item + bp_blogs_delete_activity( array( 'item_id' => $blog_id, 'component' => $bp->blogs->id, 'type' => 'new_blog' ) ); + + do_action( 'bp_blogs_remove_blog', $blog_id ); +} +add_action( 'delete_blog', 'bp_blogs_remove_blog' ); + +function bp_blogs_remove_blog_for_user( $user_id, $blog_id ) { + global $bp, $current_user; + + $blog_id = (int)$blog_id; + $user_id = (int)$user_id; + + do_action( 'bp_blogs_before_remove_blog_for_user', $blog_id, $user_id ); + + BP_Blogs_Blog::delete_blog_for_user( $blog_id, $user_id ); + + // Delete activity stream item + bp_blogs_delete_activity( array( 'item_id' => $blog_id, 'component' => $bp->blogs->id, 'type' => 'new_blog' ) ); + + do_action( 'bp_blogs_remove_blog_for_user', $blog_id, $user_id ); +} +add_action( 'remove_user_from_blog', 'bp_blogs_remove_blog_for_user', 10, 2 ); + +function bp_blogs_remove_post( $post_id, $blog_id = 0, $user_id = 0 ) { + global $wpdb, $bp; + + if ( empty( $wpdb->blogid ) ) + return false; + + $post_id = (int)$post_id; + + if ( !$blog_id ) + $blog_id = (int)$wpdb->blogid; + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + do_action( 'bp_blogs_before_remove_post', $blog_id, $post_id, $user_id ); + + // Delete activity stream item + bp_blogs_delete_activity( array( 'item_id' => $blog_id, 'secondary_item_id' => $post_id, 'component' => $bp->blogs->id, 'type' => 'new_blog_post' ) ); + + do_action( 'bp_blogs_remove_post', $blog_id, $post_id, $user_id ); +} +add_action( 'delete_post', 'bp_blogs_remove_post' ); + +function bp_blogs_remove_comment( $comment_id ) { + global $wpdb, $bp; + + // Delete activity stream item + bp_blogs_delete_activity( array( 'item_id' => $wpdb->blogid, 'secondary_item_id' => $comment_id, 'type' => 'new_blog_comment' ) ); + + do_action( 'bp_blogs_remove_comment', $wpdb->blogid, $comment_id, $bp->loggedin_user->id ); +} +add_action( 'delete_comment', 'bp_blogs_remove_comment' ); + +function bp_blogs_total_blogs() { + if ( !$count = wp_cache_get( 'bp_total_blogs', 'bp' ) ) { + $blogs = BP_Blogs_Blog::get_all(); + $count = $blogs['total']; + wp_cache_set( 'bp_total_blogs', $count, 'bp' ); + } + return $count; +} + +function bp_blogs_total_blogs_for_user( $user_id = 0 ) { + global $bp; + + if ( !$user_id ) + $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + + if ( !$count = wp_cache_get( 'bp_total_blogs_for_user_' . $user_id, 'bp' ) ) { + $count = BP_Blogs_Blog::total_blog_count_for_user( $user_id ); + wp_cache_set( 'bp_total_blogs_for_user_' . $user_id, $count, 'bp' ); + } + + return $count; +} + +function bp_blogs_remove_data_for_blog( $blog_id ) { + global $bp; + + do_action( 'bp_blogs_before_remove_data_for_blog', $blog_id ); + + // If this is regular blog, delete all data for that blog. + BP_Blogs_Blog::delete_blog_for_all( $blog_id ); + + // Delete activity stream item + bp_blogs_delete_activity( array( 'item_id' => $blog_id, 'component' => $bp->blogs->id, 'type' => false ) ); + + do_action( 'bp_blogs_remove_data_for_blog', $blog_id ); +} +add_action( 'delete_blog', 'bp_blogs_remove_data_for_blog', 1 ); + +function bp_blogs_get_blogs_for_user( $user_id, $show_hidden = false ) { + return BP_Blogs_Blog::get_blogs_for_user( $user_id, $show_hidden ); +} + +function bp_blogs_get_all_blogs( $limit = null, $page = null ) { + return BP_Blogs_Blog::get_all( $limit, $page ); +} + +function bp_blogs_get_random_blogs( $limit = null, $page = null ) { + return BP_Blogs_Blog::get( 'random', $limit, $page ); +} + +function bp_blogs_is_blog_hidden( $blog_id ) { + return BP_Blogs_Blog::is_hidden( $blog_id ); +} + +/******************************************************************************* + * Blog meta functions + * + * These functions are used to store specific blogmeta in one global table, + * rather than in each blog's options table. Significantly speeds up global blog + * queries. By default each blog's name, description and last updated time are + * stored and synced here. + */ + +function bp_blogs_delete_blogmeta( $blog_id, $meta_key = false, $meta_value = false ) { + global $wpdb, $bp; + + if ( !is_numeric( $blog_id ) ) + return false; + + $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); + + if ( is_array($meta_value) || is_object($meta_value) ) + $meta_value = serialize($meta_value); + + $meta_value = trim( $meta_value ); + + if ( !$meta_key ) + $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d", $blog_id ) ); + else if ( $meta_value ) + $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d AND meta_key = %s AND meta_value = %s", $blog_id, $meta_key, $meta_value ) ); + else + $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d AND meta_key = %s", $blog_id, $meta_key ) ); + + wp_cache_delete( 'bp_blogs_blogmeta_' . $blog_id . '_' . $meta_key, 'bp' ); + + return true; +} + +function bp_blogs_get_blogmeta( $blog_id, $meta_key = '') { + global $wpdb, $bp; + + $blog_id = (int) $blog_id; + + if ( !$blog_id ) + return false; + + if ( !empty($meta_key) ) { + $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); + + if ( !$metas = wp_cache_get( 'bp_blogs_blogmeta_' . $blog_id . '_' . $meta_key, 'bp' ) ) { + $metas = $wpdb->get_col( $wpdb->prepare( "SELECT meta_value FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d AND meta_key = %s", $blog_id, $meta_key ) ); + wp_cache_set( 'bp_blogs_blogmeta_' . $blog_id . '_' . $meta_key, $metas, 'bp' ); + } + } else { + $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d", $blog_id) ); + } + + if ( empty($metas) ) { + if ( empty($meta_key) ) + return array(); + else + return ''; + } + + $metas = array_map('maybe_unserialize', (array)$metas); + + if ( 1 == count($metas) ) + return $metas[0]; + else + return $metas; +} + +function bp_blogs_update_blogmeta( $blog_id, $meta_key, $meta_value ) { + global $wpdb, $bp; + + if ( !is_numeric( $blog_id ) ) + return false; + + $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); + + if ( is_string($meta_value) ) + $meta_value = stripslashes($wpdb->escape($meta_value)); + + $meta_value = maybe_serialize($meta_value); + + if (empty( $meta_value ) ) + return bp_blogs_delete_blogmeta( $blog_id, $meta_key ); + + $cur = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->blogs->table_name_blogmeta} WHERE blog_id = %d AND meta_key = %s", $blog_id, $meta_key ) ); + + if ( !$cur ) + $wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->blogs->table_name_blogmeta} ( blog_id, meta_key, meta_value ) VALUES ( %d, %s, %s )", $blog_id, $meta_key, $meta_value ) ); + else if ( $cur->meta_value != $meta_value ) + $wpdb->query( $wpdb->prepare( "UPDATE {$bp->blogs->table_name_blogmeta} SET meta_value = %s WHERE blog_id = %d AND meta_key = %s", $meta_value, $blog_id, $meta_key ) ); + else + return false; + + wp_cache_set( 'bp_blogs_blogmeta_' . $blog_id . '_' . $meta_key, $meta_value, 'bp' ); + + return true; +} + +function bp_blogs_remove_data( $user_id ) { + if ( !is_multisite() ) + return false; + + do_action( 'bp_blogs_before_remove_data', $user_id ); + + // If this is regular blog, delete all data for that blog. + BP_Blogs_Blog::delete_blogs_for_user( $user_id ); + + do_action( 'bp_blogs_remove_data', $user_id ); +} +add_action( 'wpmu_delete_user', 'bp_blogs_remove_data' ); +add_action( 'delete_user', 'bp_blogs_remove_data' ); +add_action( 'bp_make_spam_user', 'bp_blogs_remove_data' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-loader.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-loader.php new file mode 100644 index 0000000..fc23a66 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-loader.php @@ -0,0 +1,197 @@ +id ); + + // Global tables for messaging component + $global_tables = array( + 'table_name' => $bp->table_prefix . 'bp_user_blogs', + 'table_name_blogmeta' => $bp->table_prefix . 'bp_user_blogs_blogmeta', + ); + + // All globals for messaging component. + // Note that global_tables is included in this array. + $globals = array( + 'path' => BP_PLUGIN_DIR, + 'slug' => BP_BLOGS_SLUG, + 'root_slug' => isset( $bp->pages->blogs->slug ) ? $bp->pages->blogs->slug : BP_BLOGS_SLUG, + 'has_directory' => is_multisite(), // Non-multisite installs don't need a top-level Sites directory, since there's only one site + 'notification_callback' => 'bp_blogs_format_notifications', + 'search_string' => __( 'Search sites...', 'buddypress' ), + 'autocomplete_all' => defined( 'BP_MESSAGES_AUTOCOMPLETE_ALL' ), + 'global_tables' => $global_tables, + ); + + // Setup the globals + parent::setup_globals( $globals ); + } + + /** + * Include files + */ + function includes() { + // Files to include + $includes = array( + 'cache', + 'actions', + 'screens', + 'classes', + 'template', + 'activity', + 'functions', + 'buddybar' + ); + + if ( is_multisite() ) + $includes[] = 'widgets'; + + // Include the files + parent::includes( $includes ); + } + + /** + * Setup BuddyBar navigation + * + * @global obj $bp + */ + function setup_nav() { + global $bp; + + /** + * Blog/post/comment menus should not appear on single WordPress setups. + * Although comments and posts made by users will still show on their + * activity stream. + */ + if ( !is_multisite() ) + return false; + + // Add 'Sites' to the main navigation + $main_nav = array( + 'name' => sprintf( __( 'Sites %d', 'buddypress' ), bp_blogs_total_blogs_for_user() ), + 'slug' => $this->slug, + 'position' => 30, + 'screen_function' => 'bp_blogs_screen_my_blogs', + 'default_subnav_slug' => 'my-blogs', + 'item_css_id' => $this->id + ); + + // Setup navigation + parent::setup_nav( $main_nav ); + } + + /** + * Set up the admin bar + * + * @global obj $bp + */ + function setup_admin_bar() { + global $bp; + + /** + * Blog/post/comment menus should not appear on single WordPress setups. + * Although comments and posts made by users will still show on their + * activity stream. + */ + if ( !is_multisite() ) + return false; + + // Prevent debug notices + $wp_admin_nav = array(); + + // Menus for logged in user + if ( is_user_logged_in() ) { + + $blogs_link = trailingslashit( $bp->loggedin_user->domain . $this->slug ); + + // Add the "Blogs" sub menu + $wp_admin_nav[] = array( + 'parent' => $bp->my_account_menu_id, + 'id' => 'my-account-' . $this->id, + 'title' => __( 'Sites', 'buddypress' ), + 'href' => trailingslashit( $blogs_link ) + ); + + // My Blogs + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-my-sites', + 'title' => __( 'My Sites', 'buddypress' ), + 'href' => trailingslashit( $blogs_link ) + ); + + } + + parent::setup_admin_bar( $wp_admin_nav ); + } + + /** + * Sets up the title for pages and + * + * @global obj $bp + */ + function setup_title() { + global $bp; + + // Set up the component options navigation for Blog + if ( bp_is_blogs_component() ) { + if ( bp_is_my_profile() ) { + if ( bp_is_active( 'xprofile' ) ) { + $bp->bp_options_title = __( 'My Sites', 'buddypress' ); + } + + // If we are not viewing the logged in user, set up the current + // users avatar and name + } else { + $bp->bp_options_avatar = bp_core_fetch_avatar( array( + 'item_id' => $bp->displayed_user->id, + 'type' => 'thumb' + ) ); + $bp->bp_options_title = $bp->displayed_user->fullname; + } + } + + parent::setup_title(); + } +} +// Create the blogs component +$bp->blogs = new BP_Blogs_Component(); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-screens.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-screens.php new file mode 100644 index 0000000..c7cedf2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-screens.php @@ -0,0 +1,38 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function bp_blogs_screen_my_blogs() { + if ( !is_multisite() ) + return false; + + do_action( 'bp_blogs_screen_my_blogs' ); + + bp_core_load_template( apply_filters( 'bp_blogs_template_my_blogs', 'members/single/home' ) ); +} + +function bp_blogs_screen_create_a_blog() { + if ( !is_multisite() || !bp_is_blogs_component() || !bp_is_current_action( 'create' ) ) + return false; + + if ( !is_user_logged_in() || !bp_blog_signup_enabled() ) + return false; + + do_action( 'bp_blogs_screen_create_a_blog' ); + + bp_core_load_template( apply_filters( 'bp_blogs_template_create_a_blog', 'blogs/create' ) ); +} +add_action( 'bp_screens', 'bp_blogs_screen_create_a_blog', 3 ); + +function bp_blogs_screen_index() { + if ( is_multisite() && bp_is_blogs_component() && !bp_current_action() ) { + bp_update_is_directory( true, 'blogs' ); + + do_action( 'bp_blogs_screen_index' ); + + bp_core_load_template( apply_filters( 'bp_blogs_screen_index', 'blogs/index' ) ); + } +} +add_action( 'bp_screens', 'bp_blogs_screen_index', 2 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-template.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-template.php new file mode 100644 index 0000000..b5cfd6f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-template.php @@ -0,0 +1,660 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Output the blogs component slug + * + * @package BuddyPress + * @subpackage Blogs Template + * @since BuddyPress (r4100) + * + * @uses bp_get_blogs_slug() + */ +function bp_blogs_slug() { + echo bp_get_blogs_slug(); +} + /** + * Return the blogs component slug + * + * @package BuddyPress + * @subpackage Blogs Template + * @since BuddyPress (r4100) + */ + function bp_get_blogs_slug() { + global $bp; + return apply_filters( 'bp_get_blogs_slug', $bp->blogs->slug ); + } + +/** + * Output the blogs component root slug + * + * @package BuddyPress + * @subpackage Blogs Template + * @since BuddyPress (r4100) + * + * @uses bp_get_blogs_root_slug() + */ +function bp_blogs_root_slug() { + echo bp_get_blogs_root_slug(); +} + /** + * Return the blogs component root slug + * + * @package BuddyPress + * @subpackage Blogs Template + * @since BuddyPress (r4100) + */ + function bp_get_blogs_root_slug() { + global $bp; + return apply_filters( 'bp_get_blogs_root_slug', $bp->blogs->root_slug ); + } + +/** + * Output blog directory permalink + * + * @package BuddyPress + * @subpackage Blogs Template + * @since 1.5 + * @uses bp_get_blogs_directory_permalink() + */ +function bp_blogs_directory_permalink() { + echo bp_get_blogs_directory_permalink(); +} + /** + * Return blog directory permalink + * + * @package BuddyPress + * @subpackage Blogs Template + * @since 1.5 + * @uses apply_filters() + * @uses traisingslashit() + * @uses bp_get_root_domain() + * @uses bp_get_blogs_root_slug() + * @return string + */ + function bp_get_blogs_directory_permalink() { + return apply_filters( 'bp_get_blogs_directory_permalink', trailingslashit( bp_get_root_domain() . '/' . bp_get_blogs_root_slug() ) ); + } + +/********************************************************************** + * Blog listing template class. + */ + +class BP_Blogs_Template { + var $current_blog = -1; + var $blog_count; + var $blogs; + var $blog; + + var $in_the_loop; + + var $pag_page; + var $pag_num; + var $pag_links; + var $total_blog_count; + + function bp_blogs_template( $type, $page, $per_page, $max, $user_id, $search_terms ) { + $this->__construct( $type, $page, $per_page, $max, $user_id, $search_terms ); + } + + function __construct( $type, $page, $per_page, $max, $user_id, $search_terms ) { + global $bp; + + $this->pag_page = isset( $_REQUEST['bpage'] ) ? intval( $_REQUEST['bpage'] ) : $page; + $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page; + + if ( isset( $_REQUEST['letter'] ) && '' != $_REQUEST['letter'] ) + $this->blogs = BP_Blogs_Blog::get_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page ); + else + $this->blogs = bp_blogs_get_blogs( array( 'type' => $type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'search_terms' => $search_terms ) ); + + if ( !$max || $max >= (int)$this->blogs['total'] ) + $this->total_blog_count = (int)$this->blogs['total']; + else + $this->total_blog_count = (int)$max; + + $this->blogs = $this->blogs['blogs']; + + if ( $max ) { + if ( $max >= count($this->blogs) ) { + $this->blog_count = count( $this->blogs ); + } else { + $this->blog_count = (int)$max; + } + } else { + $this->blog_count = count( $this->blogs ); + } + + if ( (int)$this->total_blog_count && (int)$this->pag_num ) { + $this->pag_links = paginate_links( array( + 'base' => add_query_arg( 'bpage', '%#%' ), + 'format' => '', + 'total' => ceil( (int)$this->total_blog_count / (int)$this->pag_num ), + 'current' => (int)$this->pag_page, + 'prev_text' => _x( '←', 'Blog pagination previous text', 'buddypress' ), + 'next_text' => _x( '→', 'Blog pagination next text', 'buddypress' ), + 'mid_size' => 1 + ) ); + } + } + + function has_blogs() { + if ( $this->blog_count ) + return true; + + return false; + } + + function next_blog() { + $this->current_blog++; + $this->blog = $this->blogs[$this->current_blog]; + + return $this->blog; + } + + function rewind_blogs() { + $this->current_blog = -1; + if ( $this->blog_count > 0 ) { + $this->blog = $this->blogs[0]; + } + } + + function blogs() { + if ( $this->current_blog + 1 < $this->blog_count ) { + return true; + } elseif ( $this->current_blog + 1 == $this->blog_count ) { + do_action('blog_loop_end'); + // Do some cleaning up after the loop + $this->rewind_blogs(); + } + + $this->in_the_loop = false; + return false; + } + + function the_blog() { + global $blog; + + $this->in_the_loop = true; + $this->blog = $this->next_blog(); + + if ( 0 == $this->current_blog ) // loop has just started + do_action('blog_loop_start'); + } +} + +function bp_rewind_blogs() { + global $blogs_template; + + $blogs_template->rewind_blogs(); +} + +function bp_has_blogs( $args = '' ) { + global $bp, $blogs_template; + + /*** + * Set the defaults based on the current page. Any of these will be overridden + * if arguments are directly passed into the loop. Custom plugins should always + * pass their parameters directly to the loop. + */ + $type = 'active'; + $user_id = 0; + $search_terms = null; + + /* User filtering */ + if ( !empty( $bp->displayed_user->id ) ) + $user_id = $bp->displayed_user->id; + + $defaults = array( + 'type' => $type, + 'page' => 1, + 'per_page' => 20, + 'max' => false, + + 'user_id' => $user_id, // Pass a user_id to limit to only blogs this user has higher than subscriber access to + 'search_terms' => $search_terms // Pass search terms to filter on the blog title or description. + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + if ( is_null( $search_terms ) ) { + if ( isset( $_REQUEST['s'] ) && !empty( $_REQUEST['s'] ) ) + $search_terms = $_REQUEST['s']; + else + $search_terms = false; + } + + if ( $max ) { + if ( $per_page > $max ) + $per_page = $max; + } + + $blogs_template = new BP_Blogs_Template( $type, $page, $per_page, $max, $user_id, $search_terms ); + return apply_filters( 'bp_has_blogs', $blogs_template->has_blogs(), $blogs_template ); +} + +function bp_blogs() { + global $blogs_template; + + return $blogs_template->blogs(); +} + +function bp_the_blog() { + global $blogs_template; + + return $blogs_template->the_blog(); +} + +function bp_blogs_pagination_count() { + global $bp, $blogs_template; + + $start_num = intval( ( $blogs_template->pag_page - 1 ) * $blogs_template->pag_num ) + 1; + $from_num = bp_core_number_format( $start_num ); + $to_num = bp_core_number_format( ( $start_num + ( $blogs_template->pag_num - 1 ) > $blogs_template->total_blog_count ) ? $blogs_template->total_blog_count : $start_num + ( $blogs_template->pag_num - 1 ) ); + $total = bp_core_number_format( $blogs_template->total_blog_count ); + + echo sprintf( __( 'Viewing site %1$s to %2$s (of %3$s sites)', 'buddypress' ), $from_num, $to_num, $total ); +} + +function bp_blogs_pagination_links() { + echo bp_get_blogs_pagination_links(); +} + function bp_get_blogs_pagination_links() { + global $blogs_template; + + return apply_filters( 'bp_get_blogs_pagination_links', $blogs_template->pag_links ); + } + +function bp_blog_avatar( $args = '' ) { + echo bp_get_blog_avatar( $args ); +} + function bp_get_blog_avatar( $args = '' ) { + global $blogs_template, $bp; + + $defaults = array( + 'type' => 'full', + 'width' => false, + 'height' => false, + 'class' => 'avatar', + 'id' => false, + 'alt' => __( 'Site authored by %s', 'buddypress' ), + 'no_grav' => true + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + /*** + * In future BuddyPress versions you will be able to set the avatar for a blog. + * Right now you can use a filter with the ID of the blog to change it if you wish. + * By default it will return the avatar for the primary blog admin. + * + * This filter is deprecated as of BuddyPress 1.5 and may be removed in a future version. + * Use the 'bp_get_blog_avatar' filter instead. + */ + $avatar = apply_filters( 'bp_get_blog_avatar_' . $blogs_template->blog->blog_id, bp_core_fetch_avatar( array( 'item_id' => $blogs_template->blog->admin_user_id, 'type' => $type, 'alt' => $alt, 'width' => $width, 'height' => $height, 'class' => $class, 'email' => $blogs_template->blog->admin_user_email ) ) ); + + return apply_filters( 'bp_get_blog_avatar', $avatar, $blogs_template->blog->blog_id, array( 'item_id' => $blogs_template->blog->admin_user_id, 'type' => $type, 'alt' => $alt, 'width' => $width, 'height' => $height, 'class' => $class, 'email' => $blogs_template->blog->admin_user_email ) ); + } + +function bp_blog_permalink() { + echo bp_get_blog_permalink(); +} + function bp_get_blog_permalink() { + global $blogs_template; + + if ( empty( $blogs_template->blog->domain ) ) + $permalink = bp_get_root_domain() . $blogs_template->blog->path; + else { + $protocol = 'http://'; + if ( is_ssl() ) + $protocol = 'https://'; + + $permalink = $protocol . $blogs_template->blog->domain . $blogs_template->blog->path; + } + + return apply_filters( 'bp_get_blog_permalink', $permalink ); + } + +function bp_blog_name() { + echo bp_get_blog_name(); +} + function bp_get_blog_name() { + global $blogs_template; + + return apply_filters( 'bp_get_blog_name', $blogs_template->blog->name ); + } + +function bp_blog_description() { + echo apply_filters( 'bp_blog_description', bp_get_blog_description() ); +} + function bp_get_blog_description() { + global $blogs_template; + + return apply_filters( 'bp_get_blog_description', $blogs_template->blog->description ); + } + +function bp_blog_last_active() { + echo bp_get_blog_last_active(); +} + function bp_get_blog_last_active() { + global $blogs_template; + + return apply_filters( 'bp_blog_last_active', bp_core_get_last_activity( $blogs_template->blog->last_activity, __( 'active %s', 'buddypress' ) ) ); + } + +function bp_blog_latest_post() { + echo bp_get_blog_latest_post(); +} + function bp_get_blog_latest_post() { + global $blogs_template; + + if ( null == $blogs_template->blog->latest_post ) + return false; + + return apply_filters( 'bp_get_blog_latest_post', sprintf( __( 'Latest Post: %s', 'buddypress' ), '<a href="' . $blogs_template->blog->latest_post->guid . '">' . apply_filters( 'the_title', $blogs_template->blog->latest_post->post_title ) . '</a>' ) ); + } + +function bp_blog_hidden_fields() { + if ( isset( $_REQUEST['s'] ) ) + echo '<input type="hidden" id="search_terms" value="' . esc_attr( $_REQUEST['s'] ). '" name="search_terms" />'; + + if ( isset( $_REQUEST['letter'] ) ) + echo '<input type="hidden" id="selected_letter" value="' . esc_attr( $_REQUEST['letter'] ) . '" name="selected_letter" />'; + + if ( isset( $_REQUEST['blogs_search'] ) ) + echo '<input type="hidden" id="search_terms" value="' . esc_attr( $_REQUEST['blogs_search'] ) . '" name="search_terms" />'; +} + +function bp_total_blog_count() { + echo bp_get_total_blog_count(); +} + function bp_get_total_blog_count() { + return apply_filters( 'bp_get_total_blog_count', bp_blogs_total_blogs() ); + } + add_filter( 'bp_get_total_blog_count', 'bp_core_number_format' ); + +function bp_total_blog_count_for_user( $user_id = 0 ) { + echo bp_get_total_blog_count_for_user( $user_id ); +} + function bp_get_total_blog_count_for_user( $user_id = 0 ) { + return apply_filters( 'bp_get_total_blog_count_for_user', bp_blogs_total_blogs_for_user( $user_id ) ); + } + add_filter( 'bp_get_total_blog_count_for_user', 'bp_core_number_format' ); + + +/* Blog registration template tags */ + +function bp_blog_signup_enabled() { + global $bp; + + $active_signup = isset( $bp->site_options['registration'] ) ? $bp->site_options['registration'] : 'all'; + + $active_signup = apply_filters( 'wpmu_active_signup', $active_signup ); // return "all", "none", "blog" or "user" + + if ( 'none' == $active_signup || 'user' == $active_signup ) + return false; + + return true; +} + +function bp_show_blog_signup_form($blogname = '', $blog_title = '', $errors = '') { + global $current_user, $current_site; + global $bp; + + if ( isset($_POST['submit']) ) { + bp_blogs_validate_blog_signup(); + } else { + if ( ! is_wp_error($errors) ) { + $errors = new WP_Error(); + } + + // allow definition of default variables + $filtered_results = apply_filters('signup_another_blog_init', array('blogname' => $blogname, 'blog_title' => $blog_title, 'errors' => $errors )); + $blogname = $filtered_results['blogname']; + $blog_title = $filtered_results['blog_title']; + $errors = $filtered_results['errors']; + + if ( $errors->get_error_code() ) { + echo "<p>" . __('There was a problem, please correct the form below and try again.', 'buddypress') . "</p>"; + } + ?> + <p><?php printf(__("By filling out the form below, you can <strong>add a site to your account</strong>. There is no limit to the number of sites that you can have, so create to your heart's content, but blog responsibly!", 'buddypress'), $current_user->display_name) ?></p> + + <p><?php _e("If you’re not going to use a great domain, leave it for a new user. Now have at it!", 'buddypress') ?></p> + + <form class="standard-form" id="setupform" method="post" action=""> + + <input type="hidden" name="stage" value="gimmeanotherblog" /> + <?php do_action( 'signup_hidden_fields' ); ?> + + <?php bp_blogs_signup_blog($blogname, $blog_title, $errors); ?> + <p> + <input id="submit" type="submit" name="submit" class="submit" value="<?php _e('Create Site', 'buddypress') ?>" /> + </p> + + <?php wp_nonce_field( 'bp_blog_signup_form' ) ?> + </form> + <?php + } +} + +function bp_blogs_signup_blog( $blogname = '', $blog_title = '', $errors = '' ) { + global $current_site; + + // Blog name + if( !is_subdomain_install() ) + echo '<label for="blogname">' . __('Site Name:', 'buddypress') . '</label>'; + else + echo '<label for="blogname">' . __('Site Domain:', 'buddypress') . '</label>'; + + if ( $errmsg = $errors->get_error_message('blogname') ) { ?> + + <p class="error"><?php echo $errmsg ?></p> + + <?php } + + if ( !is_subdomain_install() ) + echo '<span class="prefix_address">' . $current_site->domain . $current_site->path . '</span> <input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="50" /><br />'; + else + echo '<input name="blogname" type="text" id="blogname" value="'.$blogname.'" maxlength="50" /> <span class="suffix_address">.' . bp_blogs_get_subdomain_base() . '</span><br />'; + + if ( !is_user_logged_in() ) { + print '(<strong>' . __( 'Your address will be ' , 'buddypress'); + + if ( !is_subdomain_install() ) { + print $current_site->domain . $current_site->path . __( 'blogname' , 'buddypress'); + } else { + print __( 'domain.' , 'buddypress') . $current_site->domain . $current_site->path; + } + + echo '.</strong> ' . __( 'Must be at least 4 characters, letters and numbers only. It cannot be changed so choose carefully!)' , 'buddypress') . '</p>'; + } + + // Blog Title + ?> + + <label for="blog_title"><?php _e('Site Title:', 'buddypress') ?></label> + + <?php if ( $errmsg = $errors->get_error_message('blog_title') ) { ?> + + <p class="error"><?php echo $errmsg ?></p> + + <?php } + echo '<input name="blog_title" type="text" id="blog_title" value="'.esc_html($blog_title, 1).'" /></p>'; + ?> + + <p> + <label for="blog_public_on"><?php _e('Privacy:', 'buddypress') ?></label> + <?php _e( 'I would like my site to appear in search engines, and in public listings around this network.', 'buddypress' ); ?> + + <label class="checkbox" for="blog_public_on"> + <input type="radio" id="blog_public_on" name="blog_public" value="1" <?php if( !isset( $_POST['blog_public'] ) || '1' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> /> + <strong><?php _e( 'Yes' , 'buddypress'); ?></strong> + </label> + <label class="checkbox" for="blog_public_off"> + <input type="radio" id="blog_public_off" name="blog_public" value="0" <?php if( isset( $_POST['blog_public'] ) && '0' == $_POST['blog_public'] ) { ?>checked="checked"<?php } ?> /> + <strong><?php _e( 'No' , 'buddypress'); ?></strong> + </label> + </p> + + <?php + do_action('signup_blogform', $errors); +} + +/** + * Echo the value of bp_blogs_get_subdomain_base() + * + * @since 1.6 + */ +function bp_blogs_subdomain_base() { + echo bp_blogs_get_subdomain_base(); +} + /** + * Return the base URL to be displayed when a user chooses an address for a new blog, on + * a subdomain installation of WordPress MS + * + * @since 1.6 + * @return str The base URL - eg, 'example.com' for site_url() example.com or www.example.com + */ + function bp_blogs_get_subdomain_base() { + global $current_site; + + return apply_filters( 'bp_blogs_subdomain_base', preg_replace( '|^www\.|', '', $current_site->domain ) . $current_site->path ); + } + +function bp_blogs_validate_blog_signup() { + global $wpdb, $current_user, $blogname, $blog_title, $errors, $domain, $path, $current_site; + + if ( !check_admin_referer( 'bp_blog_signup_form' ) ) + return false; + + $current_user = wp_get_current_user(); + + if( !is_user_logged_in() ) + die(); + + $result = bp_blogs_validate_blog_form(); + extract($result); + + if ( $errors->get_error_code() ) { + unset($_POST['submit']); + bp_show_blog_signup_form( $blogname, $blog_title, $errors ); + return false; + } + + $public = (int) $_POST['blog_public']; + + $meta = apply_filters( 'signup_create_blog_meta', array( 'lang_id' => 1, 'public' => $public ) ); // depreciated + $meta = apply_filters( 'add_signup_meta', $meta ); + + // If this is a subdomain install, set up the site inside the root domain. + if ( is_subdomain_install() ) + $domain = $blogname . '.' . preg_replace( '|^www\.|', '', $current_site->domain ); + + wpmu_create_blog( $domain, $path, $blog_title, $current_user->ID, $meta, $wpdb->siteid ); + bp_blogs_confirm_blog_signup($domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta); + return true; +} + +function bp_blogs_validate_blog_form() { + $user = ''; + if ( is_user_logged_in() ) + $user = wp_get_current_user(); + + return wpmu_validate_blog_signup($_POST['blogname'], $_POST['blog_title'], $user); +} + +function bp_blogs_confirm_blog_signup( $domain, $path, $blog_title, $user_name, $user_email = '', $meta = '' ) { + $protocol = is_ssl() ? 'https://' : 'http://'; + $blog_url = $protocol . $domain . $path; ?> + + <p><?php _e( 'Congratulations! You have successfully registered a new site.', 'buddypress' ) ?></p> + <p> + <?php printf(__( '<a href="%1$s">%2$s</a> is your new site. <a href="%3$s">Login</a> as "%4$s" using your existing password.', 'buddypress' ), $blog_url, $blog_url, $blog_url . "wp-login.php", $user_name ); ?> + </p> + +<?php + do_action('signup_finished'); +} + +function bp_create_blog_link() { + global $bp; + + if ( bp_is_my_profile() ) + echo apply_filters( 'bp_create_blog_link', '<a href="' . bp_get_root_domain() . '/' . bp_get_blogs_root_slug() . '/create/">' . __( 'Create a Site', 'buddypress' ) . '</a>' ); +} + +function bp_blogs_blog_tabs() { + global $bp, $groups_template; + + // Don't show these tabs on a user's own profile + if ( bp_is_my_profile() ) + return false; + + ?> + + <ul class="content-header-nav"> + <li<?php if ( bp_is_current_action( 'my-blogs' ) || !bp_current_action() ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_displayed_user_domain() . bp_get_blogs_slug() . '/my-blogs' ); ?>"><?php printf( __( "%s's Sites", 'buddypress' ), bp_get_displayed_user_fullname() ); ?></a></li> + <li<?php if ( bp_is_current_action( 'recent-posts' ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_displayed_user_domain() . bp_get_blogs_slug() . '/recent-posts' ); ?>"><?php printf( __( "%s's Recent Posts", 'buddypress' ), bp_get_displayed_user_fullname() ); ?></a></li> + <li<?php if ( bp_is_current_action( 'recent-comments' ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_displayed_user_domain() . bp_get_blogs_slug() . '/recent-comments' ); ?>"><?php printf( __( "%s's Recent Comments", 'buddypress' ), bp_get_displayed_user_fullname() ); ?></a></li> + </ul> + +<?php + do_action( 'bp_blogs_blog_tabs', $current_tab ); +} + +function bp_directory_blogs_search_form() { + global $bp; + + $default_search_value = bp_get_search_default_text(); + $search_value = !empty( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : $default_search_value; ?> + + <form action="" method="get" id="search-blogs-form"> + <label><input type="text" name="s" id="blogs_search" value="<?php echo esc_attr( $search_value ) ?>" onfocus="if (this.value == '<?php echo $default_search_value ?>') {this.value = '';}" onblur="if (this.value == '') {this.value = '<?php echo $default_search_value ?>';}" /></label> + <input type="submit" id="blogs_search_submit" name="blogs_search_submit" value="<?php _e( 'Search', 'buddypress' ) ?>" /> + </form> + +<?php +} + +/** + * bp_blogs_visit_blog_button() + * + * Output button for visiting a blog in a loop + * + * @param array $args Custom button properties + */ +function bp_blogs_visit_blog_button( $args = '' ) { + echo bp_get_blogs_visit_blog_button( $args ); +} + /** + * bp_get_blogs_visit_blog_button() + * + * Return button for visiting a blog in a loop + * + * @param array $args Custom button properties + * @return string + */ + function bp_get_blogs_visit_blog_button( $args = '' ) { + $defaults = array( + 'id' => 'visit_blog', + 'component' => 'blogs', + 'must_be_logged_in' => false, + 'block_self' => false, + 'wrapper_class' => 'blog-button visit', + 'link_href' => bp_get_blog_permalink(), + 'link_class' => 'blog-button visit', + 'link_text' => __( 'Visit Site', 'buddypress' ), + 'link_title' => __( 'Visit Site', 'buddypress' ), + ); + + $button = wp_parse_args( $args, $defaults ); + + // Filter and return the HTML button + return bp_get_button( apply_filters( 'bp_get_blogs_visit_blog_button', $button ) ); + } + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-widgets.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-widgets.php new file mode 100644 index 0000000..9ff4642 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-widgets.php @@ -0,0 +1,92 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/*** + * The recent blogs widget is actually just the activity feed filtered on "new_blog_post". + * Why not make some of your own widgets using a filtered activity stream? + */ + +function bp_blogs_register_widgets() { + global $wpdb, $bp; + + if ( bp_is_active( 'activity' ) && (int)$wpdb->blogid == bp_get_root_blog_id() ) + add_action('widgets_init', create_function('', 'return register_widget("BP_Blogs_Recent_Posts_Widget");') ); +} +add_action( 'bp_register_widgets', 'bp_blogs_register_widgets' ); + +class BP_Blogs_Recent_Posts_Widget extends WP_Widget { + + function bp_blogs_recent_posts_widget() { + $this->__construct(); + } + + function __construct() { + parent::__construct( false, $name = __( 'Recent Networkwide Posts', 'buddypress' ) ); + } + + function widget($args, $instance) { + global $bp; + + extract( $args ); + + echo $before_widget; + echo $before_title . $widget_name . $after_title; + + if ( empty( $instance['max_posts'] ) || !$instance['max_posts'] ) + $instance['max_posts'] = 10; ?> + + <?php /* Override some of the contextually set parameters for bp_has_activities() */ ?> + <?php if ( bp_has_activities( array( 'action' => 'new_blog_post', 'max' => $instance['max_posts'], 'per_page' => $instance['max_posts'], 'user_id' => 0, 'scope' => false, 'object' => false, 'primary_id' => false ) ) ) : ?> + + <ul id="blog-post-list" class="activity-list item-list"> + + <?php while ( bp_activities() ) : bp_the_activity(); ?> + + <li> + <div class="activity-content" style="margin: 0"> + + <div class="activity-header"> + <?php bp_activity_action() ?> + </div> + + <?php if ( bp_get_activity_content_body() ) : ?> + <div class="activity-inner"> + <?php bp_activity_content_body() ?> + </div> + <?php endif; ?> + + </div> + </li> + + <?php endwhile; ?> + + </ul> + + <?php else : ?> + <div id="message" class="info"> + <p><?php _e( 'Sorry, there were no posts found. Why not write one?', 'buddypress' ) ?></p> + </div> + <?php endif; ?> + + <?php echo $after_widget; ?> + <?php + } + + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['max_posts'] = strip_tags( $new_instance['max_posts'] ); + + return $instance; + } + + function form( $instance ) { + $instance = wp_parse_args( (array) $instance, array( 'max_posts' => 10 ) ); + $max_posts = strip_tags( $instance['max_posts'] ); + ?> + + <p><label for="bp-blogs-widget-posts-max"><?php _e('Max posts to show:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_posts' ); ?>" name="<?php echo $this->get_field_name( 'max_posts' ); ?>" type="text" value="<?php echo esc_attr( $max_posts ); ?>" style="width: 30%" /></label></p> + <?php + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin.php b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin.php new file mode 100644 index 0000000..e598c89 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin.php @@ -0,0 +1,637 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Add an extra update message to the update plugin notification. + * + * @package BuddyPress Core + */ +function bp_core_update_message() { + echo '<p style="color: red; margin: 3px 0 0 0; border-top: 1px solid #ddd; padding-top: 3px">' . __( 'IMPORTANT: <a href="http://codex.buddypress.org/buddypress-site-administration/upgrading-buddypress/">Read this before attempting to update BuddyPress</a>', 'buddypress' ) . '</p>'; +} +add_action( 'in_plugin_update_message-buddypress/bp-loader.php', 'bp_core_update_message' ); + +/** + * Output the tabs in the admin area + * + * @since 1.5 + * @param string $active_tab Name of the tab that is active + */ +function bp_core_admin_tabs( $active_tab = '' ) { + + // Declare local variables + $tabs_html = ''; + $idle_class = 'nav-tab'; + $active_class = 'nav-tab nav-tab-active'; + + // Setup core admin tabs + $tabs = array( + '0' => array( + 'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bp-general-settings' ), 'admin.php' ) ), + 'name' => __( 'Components', 'buddypress' ) + ), + '1' => array( + 'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings' ), 'admin.php' ) ), + 'name' => __( 'Pages', 'buddypress' ) + ), + '2' => array( + 'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bp-settings' ), 'admin.php' ) ), + 'name' => __( 'Settings', 'buddypress' ) + ) + ); + + // If forums component is active, add additional tab + if ( bp_is_active( 'forums' ) ) { + $tabs['3'] = array( + 'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bb-forums-setup' ), 'admin.php' ) ), + 'name' => __( 'Forums', 'buddypress' ) + ); + } + + // Loop through tabs and build navigation + foreach( $tabs as $tab_id => $tab_data ) { + $is_current = (bool) ( $tab_data['name'] == $active_tab ); + $tab_class = $is_current ? $active_class : $idle_class; + $tabs_html .= '<a href="' . $tab_data['href'] . '" class="' . $tab_class . '">' . $tab_data['name'] . '</a>'; + } + + // Output the tabs + echo $tabs_html; + + // Do other fun things + do_action( 'bp_admin_tabs' ); +} + +/** + * Renders the Settings admin panel. + * + * @package BuddyPress Core + * @since {@internal Unknown}} + */ +function bp_core_admin_settings() { + global $wpdb, $bp; + + $ud = get_userdata( $bp->loggedin_user->id ); + + if ( isset( $_POST['bp-admin-submit'] ) && isset( $_POST['bp-admin'] ) ) { + if ( !check_admin_referer('bp-admin') ) + return false; + + // Settings form submitted, now save the settings. + foreach ( (array)$_POST['bp-admin'] as $key => $value ) + bp_update_option( $key, $value ); + + } ?> + + <div class="wrap"> + + <?php screen_icon( 'buddypress' ); ?> + + <h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( __( 'Settings', 'buddypress' ) ); ?></h2> + + <?php if ( isset( $_POST['bp-admin'] ) ) : ?> + + <div id="message" class="updated fade"> + <p><?php _e( 'Settings Saved', 'buddypress' ); ?></p> + </div> + + <?php endif; ?> + + <form action="" method="post" id="bp-admin-form"> + + <table class="form-table"> + <tbody> + + <?php if ( bp_is_active( 'xprofile' ) ) : ?> + + <tr> + <th scope="row"><?php _e( 'Disable BuddyPress to WordPress profile syncing?', 'buddypress' ) ?></th> + <td> + <input type="radio" name="bp-admin[bp-disable-profile-sync]"<?php if ( (int)bp_get_option( 'bp-disable-profile-sync' ) ) : ?> checked="checked"<?php endif; ?> id="bp-disable-profile-sync" value="1" /> <?php _e( 'Yes', 'buddypress' ) ?>   + <input type="radio" name="bp-admin[bp-disable-profile-sync]"<?php if ( !(int)bp_get_option( 'bp-disable-profile-sync' ) || '' == bp_get_option( 'bp-disable-profile-sync' ) ) : ?> checked="checked"<?php endif; ?> id="bp-disable-profile-sync" value="0" /> <?php _e( 'No', 'buddypress' ) ?> + </td> + </tr> + + <?php endif; ?> + + <tr> + <th scope="row"><?php _e( 'Hide admin bar for logged out users?', 'buddypress' ) ?></th> + <td> + <input type="radio" name="bp-admin[hide-loggedout-adminbar]"<?php if ( (int)bp_get_option( 'hide-loggedout-adminbar' ) ) : ?> checked="checked"<?php endif; ?> id="bp-admin-hide-loggedout-adminbar-yes" value="1" /> <?php _e( 'Yes', 'buddypress' ) ?>   + <input type="radio" name="bp-admin[hide-loggedout-adminbar]"<?php if ( !(int)bp_get_option( 'hide-loggedout-adminbar' ) ) : ?> checked="checked"<?php endif; ?> id="bp-admin-hide-loggedout-adminbar-no" value="0" /> <?php _e( 'No', 'buddypress' ) ?> + </td> + </tr> + + <tr> + <th scope="row"><?php _e( 'Disable avatar uploads? (Gravatars will still work)', 'buddypress' ) ?></th> + <td> + <input type="radio" name="bp-admin[bp-disable-avatar-uploads]"<?php if ( (int)bp_get_option( 'bp-disable-avatar-uploads' ) ) : ?> checked="checked"<?php endif; ?> id="bp-admin-disable-avatar-uploads-yes" value="1" /> <?php _e( 'Yes', 'buddypress' ) ?>   + <input type="radio" name="bp-admin[bp-disable-avatar-uploads]"<?php if ( !(int)bp_get_option( 'bp-disable-avatar-uploads' ) ) : ?> checked="checked"<?php endif; ?> id="bp-admin-disable-avatar-uploads-no" value="0" /> <?php _e( 'No', 'buddypress' ) ?> + </td> + </tr> + + <tr> + <th scope="row"><?php _e( 'Disable user account deletion?', 'buddypress' ) ?></th> + <td> + <input type="radio" name="bp-admin[bp-disable-account-deletion]"<?php if ( (int)bp_get_option( 'bp-disable-account-deletion' ) ) : ?> checked="checked"<?php endif; ?> id="bp-disable-account-deletion" value="1" /> <?php _e( 'Yes', 'buddypress' ) ?>   + <input type="radio" name="bp-admin[bp-disable-account-deletion]"<?php if ( !(int)bp_get_option( 'bp-disable-account-deletion' ) ) : ?> checked="checked"<?php endif; ?> id="bp-disable-account-deletion" value="0" /> <?php _e( 'No', 'buddypress' ) ?> + </td> + </tr> + + <?php if ( bp_is_active( 'activity' ) ) : ?> + + <tr> + <th scope="row"><?php _e( 'Disable activity stream commenting on blog and forum posts?', 'buddypress' ) ?></th> + <td> + <input type="radio" name="bp-admin[bp-disable-blogforum-comments]"<?php if ( (int)bp_get_option( 'bp-disable-blogforum-comments' ) || false === bp_get_option( 'bp-disable-blogforum-comments' ) ) : ?> checked="checked"<?php endif; ?> id="bp-disable-blogforum-comments" value="1" /> <?php _e( 'Yes', 'buddypress' ) ?>   + <input type="radio" name="bp-admin[bp-disable-blogforum-comments]"<?php if ( !(int)bp_get_option( 'bp-disable-blogforum-comments' ) ) : ?> checked="checked"<?php endif; ?> id="bp-disable-blogforum-comments" value="0" /> <?php _e( 'No', 'buddypress' ) ?> + </td> + </tr> + + <?php endif; ?> + + <?php if ( bp_is_active( 'groups' ) ) : ?> + + <tr> + <th scope="row"><?php _e( 'Restrict group creation to Site Admins?', 'buddypress' ) ?></th> + <td> + <input type="radio" name="bp-admin[bp_restrict_group_creation]"<?php checked( '1', bp_get_option( 'bp_restrict_group_creation', '0' ) ); ?>id="bp-restrict-group-creation" value="1" /> <?php _e( 'Yes', 'buddypress' ) ?>   + <input type="radio" name="bp-admin[bp_restrict_group_creation]"<?php checked( '0', bp_get_option( 'bp_restrict_group_creation', '0' ) ); ?>id="bp-restrict-group-creation" value="0" /> <?php _e( 'No', 'buddypress' ) ?> + </td> + </tr> + + <?php endif; ?> + + <?php do_action( 'bp_core_admin_screen_fields' ) ?> + + </tbody> + </table> + + <?php do_action( 'bp_core_admin_screen' ); ?> + + <p class="submit"> + <input class="button-primary" type="submit" name="bp-admin-submit" id="bp-admin-submit" value="<?php _e( 'Save Settings', 'buddypress' ); ?>" /> + </p> + + <?php wp_nonce_field( 'bp-admin' ); ?> + + </form> + + </div> + +<?php +} + +function bp_core_admin_component_setup_handler() { + global $wpdb, $bp; + + if ( isset( $_POST['bp-admin-component-submit'] ) ) { + if ( !check_admin_referer('bp-admin-component-setup') ) + return false; + + // Settings form submitted, now save the settings. First, set active components + if ( isset( $_POST['bp_components'] ) ) { + // Save settings and upgrade schema + require( BP_PLUGIN_DIR . '/bp-core/admin/bp-core-update.php' ); + $bp->active_components = stripslashes_deep( $_POST['bp_components'] ); + bp_core_install( $bp->active_components ); + + bp_update_option( 'bp-active-components', $bp->active_components ); + } + + $base_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-general-settings', 'updated' => 'true' ), 'admin.php' ) ); + + wp_redirect( $base_url ); + } +} +add_action( 'admin_init', 'bp_core_admin_component_setup_handler' ); + +function bp_core_admin_pages_setup_handler() { + global $wpdb, $bp; + + if ( isset( $_POST['bp-admin-pages-submit'] ) || isset( $_POST['bp-admin-pages-single'] ) ) { + if ( !check_admin_referer( 'bp-admin-pages-setup' ) ) + return false; + + // Then, update the directory pages + if ( isset( $_POST['bp_pages'] ) ) { + + $directory_pages = array(); + + foreach ( (array)$_POST['bp_pages'] as $key => $value ) { + if ( !empty( $value ) ) { + $directory_pages[$key] = (int)$value; + } + } + bp_core_update_directory_page_ids( $directory_pages ); + } + + $base_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings', 'updated' => 'true' ), 'admin.php' ) ); + + wp_redirect( $base_url ); + } +} +add_action( 'admin_init', 'bp_core_admin_pages_setup_handler' ); + +/** + * Renders the Component Setup admin panel. + * + * @package BuddyPress Core + * @since {@internal Unknown}} + * @uses bp_core_admin_component_options() + */ +function bp_core_admin_component_setup() { +?> + + <div class="wrap"> + + <?php screen_icon( 'buddypress'); ?> + + <h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( __( 'Components', 'buddypress' ) ); ?></h2> + + <?php if ( isset( $_GET['updated'] ) && 'true' === $_GET['updated'] ) : ?> + + <div id="message" class="updated fade"> + + <p><?php _e( 'Settings Saved', 'buddypress' ); ?></p> + + </div> + + <?php endif; ?> + + <form action="" method="post" id="bp-admin-component-form"> + + <?php bp_core_admin_component_options(); ?> + + <p class="submit clear"> + <input class="button-primary" type="submit" name="bp-admin-component-submit" id="bp-admin-component-submit" value="<?php _e( 'Save Settings', 'buddypress' ) ?>"/> + </p> + + <?php wp_nonce_field( 'bp-admin-component-setup' ); ?> + + </form> + </div> + +<?php +} + +/** + * Renders the Component Setup admin panel. + * + * @package BuddyPress Core + * @since {@internal Unknown}} + * @uses bp_core_admin_component_options() + */ +function bp_core_admin_page_setup() { +?> + + <div class="wrap"> + + <?php screen_icon( 'buddypress'); ?> + + <h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( __( 'Pages', 'buddypress' ) ); ?></h2> + + <?php if ( isset( $_GET['updated'] ) && 'true' === $_GET['updated'] ) : ?> + + <div id="message" class="updated fade"> + + <p><?php _e( 'Settings Saved', 'buddypress' ); ?></p> + + </div> + + <?php endif; ?> + + <form action="" method="post" id="bp-admin-page-form"> + + <?php bp_core_admin_page_options(); ?> + + <p class="submit clear"> + <input class="button-primary" type="submit" name="bp-admin-pages-submit" id="bp-admin-pages-submit" value="<?php _e( 'Save All', 'buddypress' ) ?>"/> + </p> + + <?php wp_nonce_field( 'bp-admin-pages-setup' ); ?> + + </form> + </div> + +<?php +} + +/** + * Creates reusable markup for component setup on the Components and Pages dashboard panel. + * + * This markup has been abstracted so that it can be used both during the setup wizard as well as + * when BP has been fully installed. + * + * @package BuddyPress Core + * @since 1.5 + */ +function bp_core_admin_component_options() { + global $bp_wizard; + + // Load core functions, if needed + if ( !function_exists( 'bp_get_option' ) ) + require( BP_PLUGIN_DIR . '/bp-core/bp-core-functions.php' ); + + $active_components = apply_filters( 'bp_active_components', bp_get_option( 'bp-active-components' ) ); + + // An array of strings looped over to create component setup markup + $optional_components = array( + 'xprofile' => array( + 'title' => __( 'Extended Profiles', 'buddypress' ), + 'description' => __( 'Customize your community with fully editable profile fields that allow your users to describe themselves.', 'buddypress' ) + ), + 'settings' => array( + 'title' => __( 'Account Settings', 'buddypress' ), + 'description' => __( 'Allow your users to modify their account and notification settings directly from within their profiles.', 'buddypress' ) + ), + 'friends' => array( + 'title' => __( 'Friend Connections', 'buddypress' ), + 'description' => __( 'Let your users make connections so they can track the activity of others and focus on the people they care about the most.', 'buddypress' ) + ), + 'messages' => array( + 'title' => __( 'Private Messaging', 'buddypress' ), + 'description' => __( 'Allow your users to talk to each other directly and in private. Not just limited to one-on-one discussions, messages can be sent between any number of members.', 'buddypress' ) + ), + 'activity' => array( + 'title' => __( 'Activity Streams', 'buddypress' ), + 'description' => __( 'Global, personal, and group activity streams with threaded commenting, direct posting, favoriting and @mentions, all with full RSS feed and email notification support.', 'buddypress' ) + ), + 'groups' => array( + 'title' => __( 'User Groups', 'buddypress' ), + 'description' => __( 'Groups allow your users to organize themselves into specific public, private or hidden sections with separate activity streams and member listings.', 'buddypress' ) + ), + 'forums' => array( + 'title' => __( 'Discussion Forums', 'buddypress' ), + 'description' => __( 'Full-powered discussion forums built directly into groups allow for more conventional in-depth conversations. NOTE: This will require an extra (but easy) setup step.', 'buddypress' ) + ), + 'blogs' => array( + 'title' => __( 'Site Tracking', 'buddypress' ), + 'description' => __( 'Make BuddyPress aware of new posts and new comments from your site.', 'buddypress' ) + ) + ); + + if ( is_multisite() ) + $optional_components['blogs']['description'] = __( 'Make BuddyPress aware of new sites, new posts and new comments from across your entire network.', 'buddypress' ); + + // If this is an upgrade from before BuddyPress 1.5, we'll have to convert deactivated + // components into activated ones + if ( empty( $active_components ) ) { + $deactivated_components = bp_get_option( 'bp-deactivated-components' ); + + // Trim off namespace and filename + $trimmed = array(); + foreach ( (array) $deactivated_components as $component => $value ) { + $trimmed[] = str_replace( '.php', '', str_replace( 'bp-', '', $component ) ); + } + + // Loop through the optional components to create an active component array + foreach ( (array) $optional_components as $ocomponent => $ovalue ) { + if ( !in_array( $ocomponent, $trimmed ) ) { + $active_components[$ocomponent] = 1; + } + } + } + + // Required components + $required_components = array( + 'core' => array( + 'title' => __( 'BuddyPress Core', 'buddypress' ), + 'description' => __( 'It‘s what makes <del>time travel</del> BuddyPress possible!', 'buddypress' ) + ), + 'members' => array( + 'title' => __( 'Community Members', 'buddypress' ), + 'description' => __( 'Everything in a BuddyPress community revolves around its members.', 'buddypress' ) + ), + ); + + // On new install, set all components to be active by default + if ( !empty( $bp_wizard ) && 'install' == $bp_wizard->setup_type && empty( $active_components ) ) + $active_components = $optional_components; + + ?> + + <?php /* The setup wizard uses different, more descriptive text here */ ?> + <?php if ( empty( $bp_wizard ) ) : ?> + + <h3><?php _e( 'Available Components', 'buddypress' ); ?></h3> + + <p><?php _e( 'Each component has a unique purpose, and your community may not need each one.', 'buddypress' ); ?></p> + + <?php endif ?> + + <table class="form-table"> + <tbody> + + <?php foreach ( $optional_components as $name => $labels ) : ?> + + <tr valign="top"> + <th scope="row"><?php echo esc_html( $labels['title'] ); ?></th> + + <td> + <label for="bp_components[<?php echo esc_attr( $name ); ?>]"> + <input type="checkbox" id="bp_components[<?php echo esc_attr( $name ); ?>]" name="bp_components[<?php echo esc_attr( $name ); ?>]" value="1"<?php checked( isset( $active_components[esc_attr( $name )] ) ); ?> /> + + <?php echo $labels['description']; ?> + + </label> + + </td> + </tr> + + <?php endforeach ?> + + </tbody> + </table> + + <?php if ( empty( $bp_wizard ) ) : ?> + + <h3><?php _e( 'Required Components', 'buddypress' ); ?></h3> + + <p><?php _e( 'The following components are required by BuddyPress and cannot be turned off.', 'buddypress' ); ?></p> + + <?php endif ?> + + <table class="form-table"> + <tbody> + + <?php foreach ( $required_components as $name => $labels ) : ?> + + <tr valign="top"> + <th scope="row"><?php echo esc_html( $labels['title'] ); ?></th> + + <td> + <label for="bp_components[<?php echo esc_attr( $name ); ?>]"> + <input type="checkbox" id="bp_components[<?php echo esc_attr( $name ); ?>]" name="" disabled="disabled" value="1"<?php checked( true ); ?> /> + + <?php echo $labels['description']; ?> + + </label> + + </td> + </tr> + + <?php endforeach ?> + + </tbody> + </table> + + <input type="hidden" name="bp_components[members]" value="1" /> + + <?php +} + +/** + * Creates reusable markup for page setup on the Components and Pages dashboard panel. + * + * This markup has been abstracted so that it can be used both during the setup wizard as well as + * when BP has been fully installed. + * + * @package BuddyPress Core + * @since 1.5 + */ +function bp_core_admin_page_options() { + global $bp; + + // Get the existing WP pages + $existing_pages = bp_core_get_directory_page_ids(); + + // Set up an array of components (along with component names) that have + // directory pages. + $directory_pages = array(); + + foreach( $bp->loaded_components as $component_slug => $component_id ) { + + // Only components that need directories should be listed here + if ( isset( $bp->{$component_id} ) && !empty( $bp->{$component_id}->has_directory ) ) { + + // component->name was introduced in BP 1.5, so we must provide a fallback + $component_name = !empty( $bp->{$component_id}->name ) ? $bp->{$component_id}->name : ucwords( $component_id ); + + $directory_pages[$component_id] = $component_name; + } + } + + $directory_pages = apply_filters( 'bp_directory_pages', $directory_pages ); + + ?> + + <h3><?php _e( 'Directories', 'buddypress' ); ?></h3> + + <p><?php _e( 'Associate a WordPress Page with each BuddyPress component directory.', 'buddypress' ); ?></p> + + <table class="form-table"> + <tbody> + + <?php foreach ( $directory_pages as $name => $label ) : ?> + <?php $disabled = !bp_is_active( $name ) ? ' disabled="disabled"' : ''; ?> + + <tr valign="top"> + <th scope="row"> + <label for="bp_pages[<?php echo esc_attr( $name ) ?>]"><?php echo esc_html( $label ) ?></label> + </th> + + <td> + <?php if ( !bp_is_root_blog() ) + switch_to_blog( bp_get_root_blog_id() ) ?> + + <?php echo wp_dropdown_pages( array( + 'name' => 'bp_pages[' . esc_attr( $name ) . ']', + 'echo' => false, + 'show_option_none' => __( '- None -', 'buddypress' ), + 'selected' => !empty( $existing_pages[$name] ) ? $existing_pages[$name] : false + ) ); ?> + + <a href="<?php echo admin_url( add_query_arg( array( 'post_type' => 'page' ), 'post-new.php' ) ); ?>" class="button-secondary"><?php _e( 'New Page' ); ?></a> + <input class="button-primary" type="submit" name="bp-admin-pages-single" value="<?php _e( 'Save', 'buddypress' ) ?>" /> + + <?php if ( !empty( $existing_pages[$name] ) ) : ?> + + <a href="<?php echo get_permalink( $existing_pages[$name] ); ?>" class="button-secondary" target="_bp"><?php _e( 'View' ); ?></a> + + <?php endif; ?> + + <?php if ( !bp_is_root_blog() ) + restore_current_blog() ?> + + </td> + </tr> + + + <?php endforeach ?> + + <?php do_action( 'bp_active_external_directories' ); ?> + + </tbody> + </table> + + <?php + + // Static pages + $static_pages = array( + 'register' => __( 'Register', 'buddypress' ), + 'activate' => __( 'Activate', 'buddypress' ), + ); ?> + + <h3><?php _e( 'Registration', 'buddypress' ); ?></h3> + + <p><?php _e( 'Associate WordPress Pages with the following BuddyPress Registration pages.', 'buddypress' ); ?></p> + + <table class="form-table"> + <tbody> + + <?php foreach ( $static_pages as $name => $label ) : ?> + + <tr valign="top"> + <th scope="row"> + <label for="bp_pages[<?php echo esc_attr( $name ) ?>]"><?php echo esc_html( $label ) ?></label> + </th> + + <td> + <?php echo wp_dropdown_pages( array( + 'name' => 'bp_pages[' . esc_attr( $name ) . ']', + 'echo' => false, + 'show_option_none' => __( '- None -', 'buddypress' ), + 'selected' => !empty( $existing_pages[$name] ) ? $existing_pages[$name] : false + ) ) ?> + + <a href="<?php echo admin_url( add_query_arg( array( 'post_type' => 'page' ), 'post-new.php' ) ); ?>" class="button-secondary"><?php _e( 'New Page' ); ?></a> + <input class="button-primary" type="submit" name="bp-admin-pages-single" value="<?php _e( 'Save', 'buddypress' ) ?>" /> + + <?php if ( !empty( $existing_pages[$name] ) ) : ?> + + <a href="<?php echo get_permalink( $existing_pages[$name] ); ?>" class="button-secondary" target="_bp"><?php _e( 'View' ); ?></a> + + <?php endif; ?> + + </td> + </tr> + + <?php endforeach ?> + + <?php do_action( 'bp_active_external_pages' ); ?> + + </tbody> + </table> + + <?php +} + +/** + * Loads admin panel styles and scripts. + * + * @package BuddyPress Core + * @since {@internal Unknown}} + */ +function bp_core_add_admin_menu_styles() { + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) + wp_enqueue_style( 'bp-admin-css', apply_filters( 'bp_core_admin_css', BP_PLUGIN_URL . '/bp-core/css/admin.dev.css' ), array(), '20110723' ); + else + wp_enqueue_style( 'bp-admin-css', apply_filters( 'bp_core_admin_css', BP_PLUGIN_URL . '/bp-core/css/admin.css' ), array(), '20110723' ); + + wp_enqueue_script( 'thickbox' ); + wp_enqueue_style( 'thickbox' ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/admin/bp-core-schema.php b/wp-content/plugins/buddypress/bp-core/admin/bp-core-schema.php new file mode 100644 index 0000000..ccd3ef8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/bp-core-schema.php @@ -0,0 +1,306 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function bp_core_set_charset() { + global $wpdb; + + require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); + + /* BuddyPress component DB schema */ + if ( !empty($wpdb->charset) ) + return "DEFAULT CHARACTER SET $wpdb->charset"; + + return ''; +} + +function bp_core_install_notifications() { + global $wpdb; + + $charset_collate = bp_core_set_charset(); + $bp_prefix = bp_core_get_table_prefix(); + + $sql[] = "CREATE TABLE {$bp_prefix}bp_notifications ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + user_id bigint(20) NOT NULL, + item_id bigint(20) NOT NULL, + secondary_item_id bigint(20), + component_name varchar(75) NOT NULL, + component_action varchar(75) NOT NULL, + date_notified datetime NOT NULL, + is_new bool NOT NULL DEFAULT 0, + KEY item_id (item_id), + KEY secondary_item_id (secondary_item_id), + KEY user_id (user_id), + KEY is_new (is_new), + KEY component_name (component_name), + KEY component_action (component_action), + KEY useritem (user_id,is_new) + ) {$charset_collate};"; + + dbDelta($sql); +} + +function bp_core_install_activity_streams() { + global $wpdb; + + $charset_collate = bp_core_set_charset(); + $bp_prefix = bp_core_get_table_prefix(); + + $sql[] = "CREATE TABLE {$bp_prefix}bp_activity ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + user_id bigint(20) NOT NULL, + component varchar(75) NOT NULL, + type varchar(75) NOT NULL, + action text NOT NULL, + content longtext NOT NULL, + primary_link varchar(150) NOT NULL, + item_id varchar(75) NOT NULL, + secondary_item_id varchar(75) DEFAULT NULL, + date_recorded datetime NOT NULL, + hide_sitewide bool DEFAULT 0, + mptt_left int(11) NOT NULL DEFAULT 0, + mptt_right int(11) NOT NULL DEFAULT 0, + KEY date_recorded (date_recorded), + KEY user_id (user_id), + KEY item_id (item_id), + KEY secondary_item_id (secondary_item_id), + KEY component (component), + KEY type (type), + KEY mptt_left (mptt_left), + KEY mptt_right (mptt_right), + KEY hide_sitewide (hide_sitewide) + ) {$charset_collate};"; + + $sql[] = "CREATE TABLE {$bp_prefix}bp_activity_meta ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + activity_id bigint(20) NOT NULL, + meta_key varchar(255) DEFAULT NULL, + meta_value longtext DEFAULT NULL, + KEY activity_id (activity_id), + KEY meta_key (meta_key) + ) {$charset_collate};"; + + dbDelta($sql); +} + +function bp_core_install_friends() { + global $wpdb; + + $charset_collate = bp_core_set_charset(); + $bp_prefix = bp_core_get_table_prefix(); + + $sql[] = "CREATE TABLE {$bp_prefix}bp_friends ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + initiator_user_id bigint(20) NOT NULL, + friend_user_id bigint(20) NOT NULL, + is_confirmed bool DEFAULT 0, + is_limited bool DEFAULT 0, + date_created datetime NOT NULL, + KEY initiator_user_id (initiator_user_id), + KEY friend_user_id (friend_user_id) + ) {$charset_collate};"; + + dbDelta($sql); +} + +function bp_core_install_groups() { + global $wpdb; + + $charset_collate = bp_core_set_charset(); + $bp_prefix = bp_core_get_table_prefix(); + + $sql[] = "CREATE TABLE {$bp_prefix}bp_groups ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + creator_id bigint(20) NOT NULL, + name varchar(100) NOT NULL, + slug varchar(200) NOT NULL, + description longtext NOT NULL, + status varchar(10) NOT NULL DEFAULT 'public', + enable_forum tinyint(1) NOT NULL DEFAULT '1', + date_created datetime NOT NULL, + KEY creator_id (creator_id), + KEY status (status) + ) {$charset_collate};"; + + $sql[] = "CREATE TABLE {$bp_prefix}bp_groups_members ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + group_id bigint(20) NOT NULL, + user_id bigint(20) NOT NULL, + inviter_id bigint(20) NOT NULL, + is_admin tinyint(1) NOT NULL DEFAULT '0', + is_mod tinyint(1) NOT NULL DEFAULT '0', + user_title varchar(100) NOT NULL, + date_modified datetime NOT NULL, + comments longtext NOT NULL, + is_confirmed tinyint(1) NOT NULL DEFAULT '0', + is_banned tinyint(1) NOT NULL DEFAULT '0', + invite_sent tinyint(1) NOT NULL DEFAULT '0', + KEY group_id (group_id), + KEY is_admin (is_admin), + KEY is_mod (is_mod), + KEY user_id (user_id), + KEY inviter_id (inviter_id), + KEY is_confirmed (is_confirmed) + ) {$charset_collate};"; + + $sql[] = "CREATE TABLE {$bp_prefix}bp_groups_groupmeta ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + group_id bigint(20) NOT NULL, + meta_key varchar(255) DEFAULT NULL, + meta_value longtext DEFAULT NULL, + KEY group_id (group_id), + KEY meta_key (meta_key) + ) {$charset_collate};"; + + dbDelta($sql); +} + +function bp_core_install_private_messaging() { + global $wpdb; + + $charset_collate = bp_core_set_charset(); + $bp_prefix = bp_core_get_table_prefix(); + + $sql[] = "CREATE TABLE {$bp_prefix}bp_messages_messages ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + thread_id bigint(20) NOT NULL, + sender_id bigint(20) NOT NULL, + subject varchar(200) NOT NULL, + message longtext NOT NULL, + date_sent datetime NOT NULL, + KEY sender_id (sender_id), + KEY thread_id (thread_id) + ) {$charset_collate};"; + + $sql[] = "CREATE TABLE {$bp_prefix}bp_messages_recipients ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + user_id bigint(20) NOT NULL, + thread_id bigint(20) NOT NULL, + unread_count int(10) NOT NULL DEFAULT '0', + sender_only tinyint(1) NOT NULL DEFAULT '0', + is_deleted tinyint(1) NOT NULL DEFAULT '0', + KEY user_id (user_id), + KEY thread_id (thread_id), + KEY is_deleted (is_deleted), + KEY sender_only (sender_only), + KEY unread_count (unread_count) + ) {$charset_collate};"; + + $sql[] = "CREATE TABLE {$bp_prefix}bp_messages_notices ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + subject varchar(200) NOT NULL, + message longtext NOT NULL, + date_sent datetime NOT NULL, + is_active tinyint(1) NOT NULL DEFAULT '0', + KEY is_active (is_active) + ) {$charset_collate};"; + + dbDelta($sql); +} + +function bp_core_install_extended_profiles() { + global $wpdb; + + $charset_collate = bp_core_set_charset(); + $bp_prefix = bp_core_get_table_prefix(); + + // These values should only be updated if they are not already present + if ( !$base_group_name = bp_get_option( 'bp-xprofile-base-group-name' ) ) { + bp_update_option( 'bp-xprofile-base-group-name', _x( 'Base', 'First XProfile group name', 'buddypress' ) ); + } + + if ( !$fullname_field_name = bp_get_option( 'bp-xprofile-fullname-field-name' ) ) { + bp_update_option( 'bp-xprofile-fullname-field-name', _x( 'Name', 'XProfile fullname field name', 'buddypress' ) ); + } + + $sql[] = "CREATE TABLE {$bp_prefix}bp_xprofile_groups ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, + name varchar(150) NOT NULL, + description mediumtext NOT NULL, + group_order bigint(20) NOT NULL DEFAULT '0', + can_delete tinyint(1) NOT NULL, + KEY can_delete (can_delete) + ) {$charset_collate};"; + + $sql[] = "CREATE TABLE {$bp_prefix}bp_xprofile_fields ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, + group_id bigint(20) unsigned NOT NULL, + parent_id bigint(20) unsigned NOT NULL, + type varchar(150) NOT NULL, + name varchar(150) NOT NULL, + description longtext NOT NULL, + is_required tinyint(1) NOT NULL DEFAULT '0', + is_default_option tinyint(1) NOT NULL DEFAULT '0', + field_order bigint(20) NOT NULL DEFAULT '0', + option_order bigint(20) NOT NULL DEFAULT '0', + order_by varchar(15) NOT NULL DEFAULT '', + can_delete tinyint(1) NOT NULL DEFAULT '1', + KEY group_id (group_id), + KEY parent_id (parent_id), + KEY field_order (field_order), + KEY can_delete (can_delete), + KEY is_required (is_required) + ) {$charset_collate};"; + + $sql[] = "CREATE TABLE {$bp_prefix}bp_xprofile_data ( + id bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, + field_id bigint(20) unsigned NOT NULL, + user_id bigint(20) unsigned NOT NULL, + value longtext NOT NULL, + last_updated datetime NOT NULL, + KEY field_id (field_id), + KEY user_id (user_id) + ) {$charset_collate};"; + + $sql[] = "CREATE TABLE {$bp_prefix}bp_xprofile_meta ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + object_id bigint(20) NOT NULL, + object_type varchar(150) NOT NULL, + meta_key varchar(255) DEFAULT NULL, + meta_value longtext DEFAULT NULL, + KEY object_id (object_id), + KEY meta_key (meta_key) + ) {$charset_collate};"; + + dbDelta( $sql ); + + // Insert the default group and fields + $insert_sql = array(); + + if ( !$wpdb->get_var( "SELECT id FROM {$bp_prefix}bp_xprofile_groups WHERE id = 1" ) ) + $insert_sql[] = "INSERT INTO {$bp_prefix}bp_xprofile_groups ( name, description, can_delete ) VALUES ( " . $wpdb->prepare( '%s', stripslashes( bp_get_option( 'bp-xprofile-base-group-name' ) ) ) . ", '', 0 );"; + + if ( !$wpdb->get_var( "SELECT id FROM {$bp_prefix}bp_xprofile_fields WHERE id = 1" ) ) + $insert_sql[] = "INSERT INTO {$bp_prefix}bp_xprofile_fields ( group_id, parent_id, type, name, description, is_required, can_delete ) VALUES ( 1, 0, 'textbox', " . $wpdb->prepare( '%s', stripslashes( bp_get_option( 'bp-xprofile-fullname-field-name' ) ) ) . ", '', 1, 0 );"; + + dbDelta( $insert_sql ); +} + +function bp_core_install_blog_tracking() { + global $wpdb; + + $charset_collate = bp_core_set_charset(); + $bp_prefix = bp_core_get_table_prefix(); + + $sql[] = "CREATE TABLE {$bp_prefix}bp_user_blogs ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + user_id bigint(20) NOT NULL, + blog_id bigint(20) NOT NULL, + KEY user_id (user_id), + KEY blog_id (blog_id) + ) {$charset_collate};"; + + $sql[] = "CREATE TABLE {$bp_prefix}bp_user_blogs_blogmeta ( + id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, + blog_id bigint(20) NOT NULL, + meta_key varchar(255) DEFAULT NULL, + meta_value longtext DEFAULT NULL, + KEY blog_id (blog_id), + KEY meta_key (meta_key) + ) {$charset_collate};"; + + dbDelta($sql); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/admin/bp-core-update.php b/wp-content/plugins/buddypress/bp-core/admin/bp-core-update.php new file mode 100644 index 0000000..31cebbc --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/bp-core-update.php @@ -0,0 +1,1354 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +class BP_Core_Setup_Wizard { + var $current_step; + var $steps; + + var $database_version; + var $is_network_activate; + var $new_version; + var $setup_type; + + function bp_core_setup_wizard() { + $this->__construct(); + } + + function __construct() { + global $bp; + + // Ensure that we have access to some utility functions. Must use require_once() + // because BP Core is loaded during incremental upgrades + require_once( BP_PLUGIN_DIR . '/bp-core/bp-core-functions.php' ); + + // Get current DB version + $this->database_version = !empty( $bp->database_version ) ? (int) $bp->database_version : 0; + + if ( !empty( $bp->is_network_activate ) ) { + $this->is_network_activate = $bp->is_network_activate; + + } elseif ( !$this->current_step() ) { + setcookie( 'bp-wizard-step', 0, time() + 60 * 60 * 24, COOKIEPATH ); + $_COOKIE['bp-wizard-step'] = 0; + } + + $this->new_version = constant( 'BP_DB_VERSION' ); + $this->setup_type = !empty( $bp->maintenance_mode ) ? $bp->maintenance_mode : ''; + $this->current_step = $this->current_step(); + + // Remove the admin menu while we update/install + remove_action( bp_core_admin_hook(), 'bp_core_add_admin_menu', 9 ); + + // Call the save method that will save data and modify $current_step + if ( isset( $_POST['save'] ) ) + $this->save( $_POST['save'] ); + + // Build the steps needed for update or new installations + $this->steps = $this->add_steps(); + } + + function current_step() { + if ( isset( $_POST['step'] ) ) { + $current_step = (int)$_POST['step'] + 1; + } else { + if ( !empty( $_COOKIE['bp-wizard-step'] ) ) + $current_step = $_COOKIE['bp-wizard-step']; + else + $current_step = 0; + } + + return $current_step; + } + + function add_steps() { + global $wp_rewrite; + + // Setup wizard steps + $steps = array(); + + if ( 'install' == $this->setup_type ) { + $steps = array( + __( 'Components', 'buddypress' ), + __( 'Pages', 'buddypress' ), + __( 'Permalinks', 'buddypress' ), + __( 'Theme', 'buddypress' ), + __( 'Finish', 'buddypress' ) + ); + + // Update wizard steps + } else { + if ( $this->is_network_activate ) + $steps[] = __( 'Multisite Update', 'buddypress' ); + + if ( $this->database_version < (int) $this->new_version ) + $steps[] = __( 'Database Update', 'buddypress' ); + + if ( $this->database_version < 1801 || !bp_core_get_directory_page_ids() ) { + $steps[] = __( 'Components', 'buddypress' ); + $steps[] = __( 'Pages', 'buddypress' ); + } + + $steps[] = __( 'Finish', 'buddypress' ); + } + + return $steps; + } + + function save( $step_name ) { + + // Save any posted values + switch ( $step_name ) { + case 'db_update': default: + $result = $this->step_db_update_save(); + break; + + case 'ms_update': default: + $result = $this->step_ms_update_save(); + break; + + case 'ms_pages': default: + $result = $this->step_ms_update_save(); + break; + + case 'components': default: + $result = $this->step_components_save(); + break; + + case 'pages': default: + $result = $this->step_pages_save(); + break; + + case 'permalinks': default: + $result = $this->step_permalinks_save(); + break; + + case 'theme': default: + $result = $this->step_theme_save(); + break; + + case 'finish': default: + $result = $this->step_finish_save(); + break; + } + + if ( !$result && $this->current_step ) + $this->current_step--; + + if ( 'finish' != $step_name ) + setcookie( 'bp-wizard-step', (int)$this->current_step, time() + 60 * 60 * 24, COOKIEPATH ); + } + + function html() { + + // Update or Setup + $type = ( 'update' == $this->setup_type ) ? __( 'Update', 'buddypress' ) : __( 'Setup', 'buddypress' ); + + ?> + + <div class="wrap" id="bp-admin"> + + <?php screen_icon( 'buddypress' ); ?> + + <h2><?php printf( __( 'BuddyPress %s', 'buddypress' ), $type ); ?></h2> + + <?php + do_action( 'bp_admin_notices' ); + + $step_count = count( $this->steps ) - 1; + $wiz_or_set = $this->current_step >= $step_count ? 'bp-general-settings' : 'bp-wizard'; + $form_action = bp_core_update_do_network_admin() ? network_admin_url( add_query_arg( array( 'page' => $wiz_or_set ), 'admin.php' ) ) : admin_url( add_query_arg( array( 'page' => $wiz_or_set ), 'admin.php' ) ); + ?> + + <form action="<?php echo $form_action; ?>" method="post" id="bp-admin-form"> + <div id="bp-admin-nav"> + <ol> + + <?php foreach( (array)$this->steps as $i => $name ) : ?> + + <li<?php if ( $this->current_step == $i ) : ?> class="current"<?php endif; ?>> + <?php if ( $this->current_step > $i ) : ?> + + <span class="complete"> </span> + + <?php else : + + echo $i + 1 . '. '; + + endif; + + echo esc_attr( $name ) ?> + + </li> + + <?php endforeach; ?> + + </ol> + + <?php if ( __( 'Finish', 'buddypress' ) == $this->steps[$this->current_step] ) : ?> + + <div class="prev-next submit clear"> + <input type="submit" value="<?php _e( 'Finish & Activate', 'buddypress' ); ?>" name="submit" /> + </div> + + <?php else : ?> + + <div class="prev-next submit clear"> + <input type="submit" value="<?php _e( 'Save & Next', 'buddypress' ); ?>" name="submit" /> + </div> + + <?php endif; ?> + + </div> + + <div id="bp-admin-content"> + + <?php switch ( $this->steps[$this->current_step] ) { + case __( 'Database Update', 'buddypress') : + $this->step_db_update(); + break; + + case __( 'Multisite Update', 'buddypress') : + $this->step_ms_update(); + break; + + case __( 'Site Directory', 'buddypress') : + $this->step_ms_update(); + break; + + case __( 'Components', 'buddypress') : + $this->step_components(); + break; + + case __( 'Pages', 'buddypress') : + $this->step_pages(); + break; + + case __( 'Permalinks', 'buddypress') : + $this->step_permalinks(); + break; + + case __( 'Theme', 'buddypress') : + $this->step_theme(); + break; + + case __( 'Finish', 'buddypress') : + $this->step_finish(); + break; + + } ?> + + </div> + </form> + </div> + + <?php + } + + /** Screen methods ********************************************************/ + + function step_db_update() { + if ( !current_user_can( 'activate_plugins' ) ) + return false; ?> + + <p><?php _e( 'Before you can continue using BuddyPress, a few minor adjustments need to be made. These changes are not destructive and will not remove or change any existing settings.', 'buddypress' ); ?></p> + + <div class="submit clear"> + <input type="hidden" name="save" value="db_update" /> + <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step ); ?>" /> + + <?php wp_nonce_field( 'bpwizard_db_update' ) ?> + + </div> + + <?php + } + + function step_ms_update() { + global $wpdb; + + // Make sure that page info is pulled from bp_get_root_blog_id() (except when in + // multisite mode) + if ( !empty( $wpdb->blogid ) && ( $wpdb->blogid != bp_get_root_blog_id() ) && ( !defined( 'BP_ENABLE_MULTIBLOG' ) ) ) + switch_to_blog( bp_get_root_blog_id() ); + + if ( !current_user_can( 'activate_plugins' ) ) + return false; + + $active_components = bp_get_option( 'bp-active-components' ); + + if ( defined( 'BP_BLOGS_SLUG' ) ) + $blogs_slug = constant( 'BP_BLOGS_SLUG' ); + else + $blogs_slug = 'blogs'; + + // Call up old bp-pages to see if a page has been previously linked to Blogs + $existing_pages = bp_get_option( 'bp-pages' ); + + if ( !empty( $existing_pages['blogs'] ) ) + $existing_blog_page = '&selected=' . $existing_pages['blogs']; + else + $existing_blog_page = ''; + ?> + + <script type="text/javascript"> + jQuery( document ).ready( function() { + jQuery( 'select' ).change( function() { + jQuery( this ).siblings( 'input[@type=radio]' ).click(); + }); + }); + </script> + + <p><?php printf( __( 'BuddyPress has detected a recent change to WordPress Multisite, which allows members of your community to have their own WordPress sites. You can enable or disable this feature at any time at <a href="%s">Network Options</a>.', 'buddypress' ), network_admin_url( 'settings.php' ) ); ?></p> + + <p><?php __( "Please select the WordPress page you would like to use to display the site directory. You can either choose an existing page or let BuddyPress auto-create a page for you. If you'd like, you can go to manually create pages now, and return to this step when you are finished.", 'buddypress' ) ?></p> + + <p><strong><?php _e( 'Please Note:', 'buddypress' ) ?></strong> <?php _e( "If you have manually added BuddyPress navigation links in your theme you may need to remove these from your header.php to avoid duplicate links.", 'buddypress' ) ?></p> + + <p><?php _e( 'Would you like to enable site tracking, which tracks blog posts and comments from across your network?', 'buddypress' ); ?></p> + + <table class="form-table"> + + <tr valign="top"> + <th scope="row"><?php _e( "Enable Site Tracking?", 'buddypress' ) ?></th> + + <td> + <label for="bp_components[blogs]"> + <input id="site-tracking-enabled" type="checkbox" id="bp_components[blogs]" name="bp_components[blogs]" value="1"<?php checked( isset( $active_components['blogs'] ) ); ?> /> + + <?php _e( "Track new sites, new posts and new comments across your entire network.", 'buddypress' ) ?> + + </label> + + </td> + </tr> + + <tr valign="top" id="site-tracking-page-selector"> + <th scope="row"><?php _e( 'Select a WordPress page for the Sites directory.', 'buddypress' ); ?></th> + + <td> + <p><input type="radio" name="bp_pages[blogs]" checked="checked" value="<?php echo $blogs_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo site_url( $blogs_slug ); ?>/</p> + <p><input type="radio" name="bp_pages[blogs]" value="page" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo wp_dropdown_pages( "name=bp-blogs-page&echo=0&show_option_none=" . __( '- Select -', 'buddypress' ) . $existing_blog_page ); ?></p> + </td> + </tr> + + </table> + + + <div class="submit clear"> + <input type="hidden" name="save" value="ms_update" /> + <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step ); ?>" /> + + <?php wp_nonce_field( 'bpwizard_ms_update' ); ?> + + </div> + + <?php + + restore_current_blog(); + } + + function step_components() { + if ( !current_user_can( 'activate_plugins' ) ) + return false; + + if ( !function_exists( 'bp_core_admin_component_options' ) ) + require ( WP_PLUGIN_DIR . '/buddypress/bp-core/admin/bp-core-admin.php' ); ?> + + <p><?php _e( "BuddyPress bundles several individual social components together, each one adding a distinct feature. This first step decides which features are enabled on your site; all features are enabled by default. Don't worry, you can change your mind at any point in the future.", 'buddypress' ); ?></p> + + <?php bp_core_admin_component_options(); ?> + + <div class="submit clear"> + <input type="hidden" name="save" value="components" /> + <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step ); ?>" /> + + <?php wp_nonce_field( 'bpwizard_components' ); ?> + + </div> + + <?php + } + + function step_pages() { + global $bp, $wpdb; + + // Make sure that page info is pulled from bp_get_root_blog_id() (except when in + // multisite mode) + if ( !empty( $wpdb->blogid ) && ( $wpdb->blogid != bp_get_root_blog_id() ) && ( !defined( 'BP_ENABLE_MULTIBLOG' ) ) ) + switch_to_blog( bp_get_root_blog_id() ); + + if ( !current_user_can( 'activate_plugins' ) ) + return false; + + $existing_pages = bp_core_update_get_page_meta(); + + // Provide empty indexes to avoid PHP errors with wp_dropdown_pages() + $indexes = array( 'members', 'activity', 'groups', 'forums', 'blogs', 'register', 'activate' ); + foreach ( $indexes as $index ) { + if ( !isset( $existing_pages[$index] ) ) + $existing_pages[$index] = ''; + } + + if ( !empty( $existing_pages['blogs'] ) ) + $existing_blog_page = '&selected=' . $existing_pages['blogs']; + else + $existing_blog_page = ''; + + // Get active components + $active_components = apply_filters( 'bp_active_components', bp_get_option( 'bp-active-components' ) ); + + // Check for defined slugs + $members_slug = !empty( $bp->members->slug ) ? $bp->members->slug : __( 'members', 'buddypress' ); + + // Groups + $groups_slug = !empty( $bp->groups->slug ) ? $bp->groups->slug : __( 'groups', 'buddypress' ); + + // Activity + $activity_slug = !empty( $bp->activity->slug ) ? $bp->activity->slug : __( 'activity', 'buddypress' ); + + // Forums + $forums_slug = !empty( $bp->forums->slug ) ? $bp->forums->slug : __( 'forums', 'buddypress' ); + + // Blogs + $blogs_slug = !empty( $bp->blogs->slug ) ? $bp->blogs->slug : __( 'blogs', 'buddypress' ); + + // Register + $register_slug = !empty( $bp->register->slug ) ? $bp->register->slug : __( 'register', 'buddypress' ); + + // Activation + $activation_slug = !empty( $bp->activation->slug ) ? $bp->activation->slug : __( 'activate', 'buddypress' ); + + ?> + + <script type="text/javascript"> + jQuery( document ).ready( function() { + jQuery( 'select' ).change( function() { + jQuery( this ).siblings( 'input[@type=radio]' ).click(); + }); + }); + </script> + + <p><?php _e( 'BuddyPress now uses WordPress pages to display content. This allows you to easily change the names of pages or move them to a sub page.', 'buddypress' ); ?></p> + + <p><?php _e( 'Either choose an existing page or let BuddyPress auto-create pages for you. To manually create custom pages, come back to this step once you are finished.', 'buddypress' ); ?></p> + + <p><strong><?php _e( 'Please Note:', 'buddypress' ); ?></strong> <?php _e( 'If you have manually added BuddyPress navigation links in your theme you may need to remove these from your header.php to avoid duplicate links.', 'buddypress' ); ?></p> + + <table class="form-table"> + + <tr valign="top"> + <th scope="row"> + <h5><?php _e( 'Members', 'buddypress' ); ?></h5> + <p><?php _e( 'Displays member profiles, and a directory of all site members.', 'buddypress' ); ?></p> + </th> + <td> + <p><label><input type="radio" name="bp_pages[members]" <?php checked( empty( $existing_pages['members'] ) ); ?> value="<?php echo $members_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ) ?> <?php echo home_url( $members_slug ); ?>/</label></p> + <p><label><input type="radio" name="bp_pages[members]" <?php checked( !empty( $existing_pages['members'] ) ); ?> value="page" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo wp_dropdown_pages( "name=bp-members-page&echo=0&show_option_none=" . __( '- Select -', 'buddypress' ) . "&selected=" . $existing_pages['members'] ); ?></label></p> + </td> + </tr> + + <?php if ( isset( $active_components['activity'] ) ) : ?> + + <tr valign="top"> + <th scope="row"> + <h5><?php _e( 'Site Activity', 'buddypress' ); ?></h5> + <p><?php _e( "Displays the activity for the entire site, a member's friends, groups and @mentions.", 'buddypress' ); ?></p> + </th> + <td> + <p><label><input type="radio" name="bp_pages[activity]" <?php checked( empty( $existing_pages['activity'] ) ); ?> value="<?php echo $activity_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo home_url( $activity_slug ); ?>/</label></p> + <p><label><input type="radio" name="bp_pages[activity]" <?php checked( !empty( $existing_pages['activity'] ) ); ?> value="page" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo wp_dropdown_pages( "name=bp-activity-page&echo=0&show_option_none=" . __( '- Select -', 'buddypress' ) . "&selected=" . $existing_pages['activity'] ); ?></label></p> + </td> + </tr> + + <?php endif; ?> + + <?php if ( isset( $active_components['groups'] ) ) : ?> + + <tr valign="top"> + <th scope="row"> + <h5><?php _e( 'Groups', 'buddypress' ); ?></h5> + <p><?php _e( 'Displays individual groups as well as a directory of groups.', 'buddypress' ); ?></p> + </th> + <td> + <p><label><input type="radio" name="bp_pages[groups]" <?php checked( empty( $existing_pages['groups'] ) ); ?> value="<?php echo $groups_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo home_url( $groups_slug ); ?>/</label></p> + <p><label><input type="radio" name="bp_pages[groups]" <?php checked( !empty( $existing_pages['groups'] ) ); ?> value="page" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo wp_dropdown_pages( "name=bp-groups-page&echo=0&show_option_none=" . __( '- Select -', 'buddypress' ) . "&selected=" . $existing_pages['groups'] ); ?></label></p> + </td> + </tr> + + <?php endif; ?> + + <?php if ( isset( $active_components['forums'] ) ) : ?> + + <tr valign="top"> + <th scope="row"> + <h5><?php _e( 'Forums', 'buddypress' ); ?></h5> + <p><?php _e( 'Displays a directory of public forum topics.', 'buddypress' ); ?></p> + </th> + <td> + <p><label><input type="radio" name="bp_pages[forums]" <?php checked( empty( $existing_pages['forums'] ) ); ?> value="<?php echo $forums_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo home_url( $forums_slug ); ?>/</label></p> + <p><label><input type="radio" name="bp_pages[forums]" <?php checked( !empty( $existing_pages['forums'] ) ); ?> value="page" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo wp_dropdown_pages( "name=bp-forums-page&echo=0&show_option_none=" . __( '- Select -', 'buddypress' ) . "&selected=" . $existing_pages['forums'] ); ?></label></p> + </td> + </tr> + + <?php endif; ?> + + <?php /* The Blogs component only needs a directory page when Multisite is enabled */ ?> + <?php if ( is_multisite() && isset( $active_components['blogs'] ) ) : ?> + + <tr valign="top"> + <th scope="row"> + <h5><?php _e( 'Sites', 'buddypress' ); ?></h5> + <p><?php _e( 'Displays a directory of the sites in your network.', 'buddypress' ); ?></p> + </th> + <td> + <p><label><input type="radio" name="bp_pages[blogs]" <?php checked( empty( $existing_pages['blogs'] ) ); ?> value="<?php echo $blogs_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo home_url( $blogs_slug ); ?>/</label></p> + <p><label><input type="radio" name="bp_pages[blogs]" <?php checked( !empty( $existing_pages['blogs'] ) ); ?> value="page" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo wp_dropdown_pages( "name=bp-blogs-page&echo=0&show_option_none=" . __( '- Select -', 'buddypress' ) . "&selected=" . $existing_pages['blogs'] ); ?></label></p> + </td> + </tr> + + <?php endif; ?> + + <tr valign="top"> + <th scope="row"> + <h5><?php _e( 'Register', 'buddypress' ); ?></h5> + <p><?php _e( 'Displays a site registration page where users can create new accounts.', 'buddypress' ); ?></p> + </th> + <td> + <p><label><input type="radio" name="bp_pages[register]" <?php checked( empty( $existing_pages['register'] ) ); ?> value="<?php echo $register_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ) ?> <?php echo home_url( $register_slug ) ?>/</label></p> + <p><label><input type="radio" name="bp_pages[register]" <?php checked( !empty( $existing_pages['register'] ) ); ?> value="page" /> <?php _e( 'Use an existing page:', 'buddypress' ) ?> <?php echo wp_dropdown_pages( "name=bp-register-page&echo=0&show_option_none=" . __( '- Select -', 'buddypress' ) . "&selected=" . $existing_pages['register'] ); ?></label></p> + </td> + </tr> + + <tr valign="top"> + <th scope="row"> + <h5><?php _e( 'Activate', 'buddypress' ); ?></h5> + <p><?php _e( 'The page users will visit to activate their account once they have registered.', 'buddypress' ); ?></p> + </th> + <td> + <p><label><input type="radio" name="bp_pages[activate]" <?php checked( empty( $existing_pages['activate'] ) ); ?> value="<?php echo $activation_slug; ?>" /> <?php _e( 'Automatically create a page at:', 'buddypress' ); ?> <?php echo home_url( $activation_slug ); ?>/</label></p> + <p><label><input type="radio" name="bp_pages[activate]" <?php checked( !empty( $existing_pages['activate'] ) ); ?> value="page" /> <?php _e( 'Use an existing page:', 'buddypress' ); ?> <?php echo wp_dropdown_pages( "name=bp-activate-page&echo=0&show_option_none=" . __( '- Select -', 'buddypress' ) . "&selected=" . $existing_pages['activate'] ); ?></label></p> + </td> + </tr> + </table> + + <div class="submit clear"> + <input type="hidden" name="save" value="pages" /> + <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step ); ?>" /> + + <?php wp_nonce_field( 'bpwizard_pages' ); ?> + + </div> + + <?php + + restore_current_blog(); + } + + function step_permalinks() { + if ( !current_user_can( 'activate_plugins' ) ) + return false; + + $prefix = ''; + $permalink_structure = get_option( 'permalink_structure' ); + $using_permalinks = ( !empty( $permalink_structure ) ) ? true : false; + $structures = array( '', $prefix . '/%year%/%monthnum%/%day%/%postname%/', $prefix . '/%year%/%monthnum%/%postname%/', $prefix . '/archives/%post_id%' ); + + // If we're using permalinks already, adjust text accordingly + if ( $permalink_structure ) + $permalink_setup_text = __( 'Congratulations! You are already using pretty permalinks, which BuddyPress requires. If you\'d like to change your settings, you may do so now. If you\'re happy with your current settings, click Save & Next to continue.', 'buddypress' ); + else + $permalink_setup_text = __( 'To make sure the pages created in the previous step work correctly, pretty permalinks must be active on your site.', 'buddypress' ); + + if ( !got_mod_rewrite() && !iis7_supports_permalinks() ) + $prefix = '/index.php'; ?> + + <p><?php echo $permalink_setup_text; ?></p> + <p><?php printf( __( 'Please select the permalink setting you would like to use. For more advanced options please visit the <a href="%s">permalink settings page</a> first, and complete this setup wizard later.', 'buddypress' ), admin_url( 'options-permalink.php' ) ); ?> + + <table class="form-table"> + <tr> + <th><label><input name="permalink_structure" type="radio"<?php if ( empty( $permalink_structure ) || false != strpos( $permalink_structure, $structures[1] ) ) : ?> checked="checked" <?php endif; ?>value="<?php echo esc_attr( $structures[1] ); ?>" class="tog" <?php checked( $structures[1], $permalink_structure ); ?> /> <?php _e( 'Day and name' ); ?></label></th> + <td><code><?php echo get_home_url() . $prefix . '/' . date('Y') . '/' . date('m') . '/' . date('d') . '/sample-post/'; ?></code></td> + </tr> + <tr> + <th><label><input name="permalink_structure" type="radio"<?php if ( empty( $permalink_structure ) || false != strpos( $permalink_structure, $structures[2] ) ) : ?> checked="checked" <?php endif; ?> value="<?php echo esc_attr( $structures[2] ); ?>" class="tog" <?php checked( $structures[2], $permalink_structure ); ?> /> <?php _e( 'Month and name' ); ?></label></th> + <td><code><?php echo get_home_url() . $prefix . '/' . date('Y') . '/' . date('m') . '/sample-post/'; ?></code></td> + </tr> + <tr> + <th><label><input name="permalink_structure" type="radio"<?php if ( empty( $permalink_structure ) || false != strpos( $permalink_structure, $structures[3] ) ) : ?> checked="checked" <?php endif; ?> value="<?php echo esc_attr( $structures[3] ); ?>" class="tog" <?php checked( $structures[3], $permalink_structure ); ?> /> <?php _e( 'Numeric' ); ?></label></th> + <td><code><?php echo get_home_url() . $prefix ?>/archives/123</code></td> + </tr> + </table> + + <div class="submit clear"> + <input type="hidden" name="save" value="permalinks" /> + <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step ); ?>" /> + + <?php if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && empty( $_POST['skip-htaccess'] ) ) : ?> + + <input type="hidden" name="skip-htaccess" value="skip-htaccess" /> + + <?php endif; ?> + + <?php wp_nonce_field( 'bpwizard_permalinks' ); ?> + + </div> + + <?php + } + + function step_theme() { + if ( !current_user_can( 'activate_plugins' ) ) + return false; + + $installed_plugins = get_plugins(); + + // Backward-compatibility with WP < 3.4 will be removed in a future release + if ( bp_get_major_wp_version() >= 3.4 ) { + $installed_themes = wp_get_themes(); + } else { + $installed_themes = get_themes(); + } + + $template_pack_installed = false; + $bp_autotheme_installed = false; + $bp_theme_installed = false; + + foreach ( (array)$installed_plugins as $plugin ) { + if ( 'BuddyPress Template Pack' == $plugin['Name'] ) { + $template_pack_installed = true; + } + } + + foreach ( (array)$installed_themes as $theme ) { + foreach ( (array)$theme['Tags'] as $tag ) { + if ( ( 'BuddyPress Default' != $theme['Name'] ) && ( 'buddypress' == $tag ) ) { + $bp_theme_installed = true; + $bp_themes[] = $theme; + } + } + } + + // Get theme screenshot + // Backward-compatibility with WP < 3.4 will be removed in a future release + if ( bp_get_major_wp_version() >= 3.4 ) { + $current_theme = wp_get_theme(); + } else { + $current_theme = get_current_theme(); + } + $screenshot = ''; + + if ( !empty( $installed_themes[$current_theme]['Screenshot'] ) ) + $screenshot = trailingslashit( get_stylesheet_directory_uri() ) . $installed_themes[$current_theme]['Screenshot']; + ?> + + <script type="text/javascript"> + jQuery( document ).ready( function() { + jQuery( 'select' ).change( function() { + jQuery( this ).siblings( 'input[@type=radio]' ).click(); + }); + }); + </script> + + <p><?php _e( "BuddyPress introduces a whole range of new screens to display content. To display these screens, you need to decide how you want to handle them in your current theme.", 'buddypress' ); ?></p> + + <table class="form-table"> + <tr> + <th> + <h5><?php _e( 'Use BuddyPress Default', 'buddypress' ); ?></h5> + <img src="<?php echo plugins_url( '/buddypress/bp-themes/bp-default/screenshot.png' ); ?>" alt="<?php _e( 'BuddyPress Default', 'buddypress' ); ?>" /> + </th> + <td> + <p><?php _e( 'BuddyPress Default contains everything you need to get up and running out of the box. It supports all features and is highly customizable.', 'buddypress' ); ?></p> + <p><strong><?php _e( 'This is the best choice if you do not have an existing WordPress theme, or want to start using BuddyPress immediately.', 'buddypress' ); ?></strong></p> + <p><label><input type="radio" name="theme" value="bp_default" checked="checked" /> <?php _e( 'Yes, please!', 'buddypress' ); ?></label></p> + </td> + </tr> + + <?php if ( $bp_theme_installed ) : ?> + <tr> + <th> + <h5><?php _e( 'Other themes', 'buddypress' ); ?></h5> + <img src="<?php echo plugins_url( '/buddypress/bp-core/images/find.png' ); ?>" alt="<?php _e( 'A BuddyPress theme', 'buddypress' ); ?>" /> + </th> + <td> + <p><?php _e( "We've found that you already have some other BuddyPress-compatible themes available. To use one of those, pick it from this list.", 'buddypress' ); ?></p> + <p> + <label> + <input type="radio" name="theme" value="3rd_party" /> <?php _e( 'Use this theme', 'buddypress' ); ?> + </label> + <select name="3rd_party_theme"> + + <?php foreach( (array) $bp_themes as $theme ) : ?> + <option value="<?php echo $theme['Template'] . ',' . $theme['Stylesheet']; ?>"><?php echo $theme['Name']; ?></option> + <?php endforeach; ?> + + </select> + </p> + </td> + </tr> + <?php endif; ?> + + <tr> + <th> + <h5><?php _e( 'Manually update current theme', 'buddypress' ); ?></h5> + <?php if ( !empty( $screenshot ) ) : ?> + <img src="<?php echo esc_url( $screenshot ); ?>" alt="<?php _e( 'Your existing theme', 'buddypress' ); ?>" /> + <?php endif; ?> + </th> + <td> + <p><?php _e( 'The BuddyPress Template Pack plugin will guide you through the process of manually upgrading your existing WordPress theme. This usually involves following the step-by-step instructions and copying the BuddyPress template files into your theme. This option requires a working knowledge of CSS and HTML, as you will need to tweak the new templates to match your existing theme.', 'buddypress' ); ?></p> + + <?php if ( empty( $template_pack_installed ) ) : ?> + + <p><a id="bp-template-pack" class="thickbox onclick button" href="<?php echo network_admin_url( 'plugin-install.php?tab=plugin-information&plugin=bp-template-pack&TB_iframe=true&width=640&height=500' ); ?>"><?php _e( 'Install BuddyPress Template Pack', 'buddypress' ); ?></a></p> + + <?php else : ?> + + <p><label><input type="radio" name="theme" value="manual_wp" /> <?php _e( 'Choose this option (go to Appearance → BP Compatibility after setup is complete)', 'buddypress' ); ?></label></p> + <p><a id="bp-template-pack" class="button installed disabled" href="javascript:void();"><span></span><?php _e( 'Plugin Installed', 'buddypress' ); ?></a></p> + + <?php endif; ?> + + </td> + </tr> + + <tr> + <th> + <h5><?php _e( 'Do not change theme', 'buddypress' ) ?></h5> + </th> + <td> + <p><?php _e( "You are happy with your current theme and plan on changing it later.", 'buddypress' ); ?></p> + <p><strong><?php _e( 'This is the best choice if you have a highly customized theme on your site already, and want to later manually integrate BuddyPress into your site.', 'buddypress' ); ?></strong></p> + + <p><label><input type="radio" name="theme" value="do_not_change" /> <?php _e( "Don't change my current theme", 'buddypress' ); ?></label></p> + + </td> + </tr> + </table> + + <div class="submit clear"> + <input type="hidden" name="save" value="theme" /> + <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step ) ?>" /> + + <?php wp_nonce_field( 'bpwizard_theme' ) ?> + + </div> + + <?php + } + + function step_finish() { + if ( !current_user_can( 'activate_plugins' ) ) + return false; + + // What type of action is happening here? + $type = ( 'install' == $this->setup_type ) ? __( 'setup', 'buddypress' ) : __( 'update', 'buddypress' ); ?> + + <p><?php printf( __( "The BuddyPress %1\$s is complete, and your site is ready to go!", 'buddypress' ), $type, $type ); ?></p> + + <div class="submit clear"> + <input type="hidden" name="save" value="finish" /> + <input type="hidden" name="step" value="<?php echo esc_attr( $this->current_step ); ?>" /> + + <?php wp_nonce_field( 'bpwizard_finish' ); ?> + + </div> + + <?php + } + + /** Save Step Methods *****************************************************/ + + function step_db_update_save() { + global $bp; + + if ( isset( $_POST['submit'] ) ) { + check_admin_referer( 'bpwizard_db_update' ); + + // Run the schema install to update tables + bp_core_install(); + + if ( $this->database_version < 1801 ) + $this->update_1_5(); + + // Update the active components option early if we're updating + if ( 'update' == $this->setup_type ) + bp_update_option( 'bp-active-components', $bp->active_components ); + + return true; + } + + return false; + } + + function step_ms_update_save() { + global $wpdb; + + if ( isset( $_POST['submit'] ) ) { + check_admin_referer( 'bpwizard_ms_update' ); + + if ( !$active_components = bp_get_option( 'bp-active-components' ) ) + $active_components = array(); + + // Transfer important settings from blog options to site options + $options = array( + 'bp-db-version' => $this->database_version, + 'bp-active-components' => $active_components, + 'avatar-default' => get_option( 'avatar-default' ) + ); + bp_core_activate_site_options( $options ); + + if ( isset( $_POST['bp_components']['blogs'] ) ) { + $active_components['blogs'] = 1; + + // Make sure that the pages are created on the bp_get_root_blog_id(), no matter which Dashboard the setup is being run on + if ( !empty( $wpdb->blogid ) && ( $wpdb->blogid != bp_get_root_blog_id() ) && ( !defined( 'BP_ENABLE_MULTIBLOG' ) ) ) + switch_to_blog( bp_get_root_blog_id() ); + + // Move bp-pages data from the blog options table to site options + $existing_pages = bp_get_option( 'bp-pages' ); + + $bp_pages = $this->setup_pages( (array)$_POST['bp_pages'] ); + $bp_pages = array_merge( (array)$existing_pages, (array)$bp_pages ); + + bp_update_option( 'bp-pages', $bp_pages ); + + if ( !empty( $wpdb->blogid ) && ( $wpdb->blogid != bp_get_root_blog_id() ) && ( !defined( 'BP_ENABLE_MULTIBLOG' ) ) ) + restore_current_blog(); + + bp_core_install( $active_components ); + } + + bp_update_option( 'bp-active-components', $active_components ); + + return true; + } + + return false; + } + + + function step_components_save() { + if ( isset( $_POST['submit'] ) && isset( $_POST['bp_components'] ) ) { + check_admin_referer( 'bpwizard_components' ); + + $active_components = array(); + + // Settings form submitted, now save the settings. + foreach ( (array)$_POST['bp_components'] as $key => $value ) + $active_components[$key] = 1; + + bp_update_option( 'bp-active-components', $active_components ); + + wp_cache_flush(); + bp_core_install(); + + return true; + } + + return false; + } + + function step_pages_save() { + global $wpdb; + + if ( isset( $_POST['submit'] ) && isset( $_POST['bp_pages'] ) ) { + check_admin_referer( 'bpwizard_pages' ); + + // Make sure that the pages are created on the bp_get_root_blog_id(), no matter which Dashboard the setup is being run on + if ( !empty( $wpdb->blogid ) && ( $wpdb->blogid != bp_get_root_blog_id() ) && ( !defined( 'BP_ENABLE_MULTIBLOG' ) ) ) + switch_to_blog( bp_get_root_blog_id() ); + + // Delete any existing pages + $existing_pages = bp_core_update_get_page_meta( 'bp-pages' ); + + foreach ( (array)$existing_pages as $page_id ) + wp_delete_post( $page_id, true ); + + $blog_pages = $this->setup_pages( (array)$_POST['bp_pages'] ); + bp_update_option( 'bp-pages', $blog_pages ); + + if ( !empty( $wpdb->blogid ) && ( $wpdb->blogid != bp_get_root_blog_id() ) && ( !defined( 'BP_ENABLE_MULTIBLOG' ) ) ) + restore_current_blog(); + + return true; + } + + return false; + } + + function step_permalinks_save() { + global $wp_rewrite, $current_site, $current_blog; + + // Prevent debug notices + $iis7_permalinks = $usingpi = $writable = false; + + if ( isset( $_POST['submit'] ) ) { + check_admin_referer( 'bpwizard_permalinks' ); + + $home_path = get_home_path(); + $iis7_permalinks = iis7_supports_permalinks(); + + if ( isset( $_POST['permalink_structure'] ) ) { + $permalink_structure = $_POST['permalink_structure']; + + if ( !empty( $permalink_structure ) ) + $permalink_structure = preg_replace( '#/+#', '/', '/' . $_POST['permalink_structure'] ); + + if ( ( defined( 'VHOST' ) && constant( 'VHOST' ) == 'no' ) && $permalink_structure != '' && $current_site->domain . $current_site->path == $current_blog->domain . $current_blog->path ) + $permalink_structure = '/blog' . $permalink_structure; + + $wp_rewrite->set_permalink_structure( $permalink_structure ); + } + + if ( !empty( $iis7_permalinks ) ) { + if ( ( !file_exists( $home_path . 'web.config' ) && win_is_writable( $home_path ) ) || win_is_writable( $home_path . 'web.config' ) ) { + $writable = true; + } + } else { + if ( ( !file_exists( $home_path . '.htaccess' ) && is_writable( $home_path ) ) || is_writable( $home_path . '.htaccess' ) ) { + $writable = true; + } + } + + if ( $wp_rewrite->using_index_permalinks() ) + $usingpi = true; + + $wp_rewrite->flush_rules(); + + if ( !empty( $iis7_permalinks ) || ( empty( $usingpi ) && empty( $writable ) ) ) { + + function _bp_core_wizard_step_permalinks_message() { + global $wp_rewrite; ?> + + <div id="message" class="updated fade"><p> + + <?php + _e( 'Oops, there was a problem creating a configuration file. ', 'buddypress' ); + + if ( !empty( $iis7_permalinks ) ) { + + if ( !empty( $permalink_structure ) && empty( $usingpi ) && empty( $writable ) ) { + + _e( 'If your <code>web.config</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your <code>web.config</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this rule inside of the <code>/<configuration>/<system.webServer>/<rewrite>/<rules></code> element in <code>web.config</code> file.' ); ?> + + <br /><br /> + + <textarea rows="9" class="large-text readonly" style="background: #fff;" name="rules" id="rules" readonly="readonly"><?php echo esc_html( $wp_rewrite->iis7_url_rewrite_rules() ); ?></textarea> + + <?php + + } else if ( !empty( $permalink_structure ) && empty( $usingpi ) && !empty( $writable ) ); { + _e( 'Permalink structure updated. Remove write access on web.config file now!' ); + } + + } else { + + _e( 'If your <code>.htaccess</code> file were <a href="http://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your <code>.htaccess</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all.' ); ?> + + <br /><br /> + + <textarea rows="6" class="large-text readonly" style="background: #fff;" name="rules" id="rules" readonly="readonly"><?php echo esc_html( $wp_rewrite->mod_rewrite_rules() ); ?></textarea> + + <?php } ?> + + <br /><br /> + + <?php + if ( empty( $iis7_permalinks ) ) + _e( 'Paste all these rules into a new <code>.htaccess</code> file in the root of your WordPress installation and save the file. Once you\'re done, please hit the "Save and Next" button to continue.', 'buddypress' ); + ?> + + </p></div> + + <?php + } + + if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && !empty( $_POST['skip-htaccess'] ) ) { + return true; + } else { + add_action( 'bp_admin_notices', '_bp_core_wizard_step_permalinks_message' ); + return false; + } + } + + return true; + } + + return false; + } + + function step_theme_save() { + if ( isset( $_POST['submit'] ) && isset( $_POST['theme'] ) ) { + check_admin_referer( 'bpwizard_theme' ); + + if ( is_multisite() && bp_get_root_blog_id() != get_current_blog_id() ) + switch_to_blog( bp_get_root_blog_id() ); + + switch ( $_POST['theme'] ) { + + // Activate the bp-default theme + case 'bp_default' : + switch_theme( 'bp-default', 'bp-default' ); + break; + + // Activate Template Pack plugin + case 'manual_wp' : + + // Include + require_once( ABSPATH . WPINC . '/plugin.php' ); + $installed_plugins = get_plugins(); + + foreach ( $installed_plugins as $key => $plugin ) { + if ( 'BuddyPress Template Pack' == $plugin['Name'] ) { + activate_plugin( $key ); + } + } + break; + + // Pick a theme from the repo + case '3rd_party' : + if ( empty( $_POST['3rd_party_theme'] ) ) + return false; + + $theme = explode( ',', $_POST['3rd_party_theme'] ); + switch_theme( $theme[0], $theme[1] ); + break; + + // Keep existing theme + case 'do_not_change' : + return true; + break; + } + + if ( is_multisite() ) + restore_current_blog(); + + return true; + } + + return false; + } + + function step_finish_save() { + if ( isset( $_POST['submit'] ) ) { + check_admin_referer( 'bpwizard_finish' ); + + // Update the DB version in the database + // Stored in sitemeta. Do not use bp_update_option() + update_site_option( 'bp-db-version', $this->new_version ); + delete_site_option( 'bp-core-db-version' ); + + // Delete the setup cookie + @setcookie( 'bp-wizard-step', '', time() - 3600, COOKIEPATH ); + + // Load BP and hook the admin menu, so that the redirect is successful + if ( !function_exists( 'bp_core_update_message' ) ) + require( WP_PLUGIN_DIR . '/buddypress/bp-core/admin/bp-core-admin.php' ); + + bp_core_add_admin_menu(); + + // Redirect to the BuddyPress dashboard + $redirect = bp_core_update_do_network_admin() ? add_query_arg( array( 'page' => 'bp-general-settings' ), network_admin_url( 'admin.php' ) ) : add_query_arg( array( 'page' => 'bp-general-settings' ), admin_url( 'admin.php' ) ); + + wp_redirect( $redirect ); + + return true; + } + + return false; + } + + function setup_pages( $pages ) { + foreach ( $pages as $key => $value ) { + if ( 'page' == $value ) { + // Check for the selected page + if ( !empty( $_POST['bp-' . $key . '-page'] ) ) + $bp_pages[$key] = (int)$_POST['bp-' . $key . '-page']; + else + $bp_pages[$key] = wp_insert_post( array( 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_title' => ucwords( $key ), 'post_status' => 'publish', 'post_type' => 'page' ) ); + } else { + // Create a new page + $bp_pages[$key] = wp_insert_post( array( 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_title' => ucwords( $value ), 'post_status' => 'publish', 'post_type' => 'page' ) ); + } + } + + return $bp_pages; + } + + // Database update methods based on version numbers + function update_1_5() { + // Delete old database version options + delete_site_option( 'bp-activity-db-version' ); + delete_site_option( 'bp-blogs-db-version' ); + delete_site_option( 'bp-friends-db-version' ); + delete_site_option( 'bp-groups-db-version' ); + delete_site_option( 'bp-messages-db-version' ); + delete_site_option( 'bp-xprofile-db-version' ); + } + + /** + * Reset the cookie so the install script starts over + */ + function reset_cookie() { + @setcookie( 'bp-wizard-step', '', time() - 3600, COOKIEPATH ); + } +} + +function bp_core_setup_wizard_init() { + global $bp_wizard; + + $bp_wizard = new BP_Core_Setup_Wizard; +} +add_action( bp_core_update_admin_hook(), 'bp_core_setup_wizard_init', 7 ); + +function bp_core_install( $active_components = false ) { + global $wpdb; + + if ( empty( $active_components ) ) + $active_components = apply_filters( 'bp_active_components', bp_get_option( 'bp-active-components' ) ); + + require( dirname( __FILE__ ) . '/bp-core-schema.php' ); + + // Core DB Tables + bp_core_install_notifications(); + + // Activity Streams + if ( !empty( $active_components['activity'] ) ) + bp_core_install_activity_streams(); + + // Friend Connections + if ( !empty( $active_components['friends'] ) ) + bp_core_install_friends(); + + // Extensible Groups + if ( !empty( $active_components['groups'] ) ) + bp_core_install_groups(); + + // Private Messaging + if ( !empty( $active_components['messages'] ) ) + bp_core_install_private_messaging(); + + // Extended Profiles + if ( !empty( $active_components['xprofile'] ) ) + bp_core_install_extended_profiles(); + + // Blog tracking + if ( !empty( $active_components['blogs'] ) ) + bp_core_install_blog_tracking(); +} + +function bp_core_update( $disabled ) { + global $wpdb; + + require( dirname( __FILE__ ) . '/bp-core-schema.php' ); +} + +function bp_update_db_stuff() { + $bp_prefix = bp_core_get_table_prefix(); + // Rename the old user activity cached table if needed. + if ( $wpdb->get_var( "SHOW TABLES LIKE '%{$bp_prefix}bp_activity_user_activity_cached%'" ) ) + $wpdb->query( "RENAME TABLE {$bp_prefix}bp_activity_user_activity_cached TO {$bp->activity->table_name}" ); + + // Rename fields from pre BP 1.2 + if ( $wpdb->get_var( "SHOW TABLES LIKE '%{$bp->activity->table_name}%'" ) ) { + if ( $wpdb->get_var( "SHOW COLUMNS FROM {$bp->activity->table_name} LIKE 'component_action'" ) ) + $wpdb->query( "ALTER TABLE {$bp->activity->table_name} CHANGE component_action type varchar(75) NOT NULL" ); + + if ( $wpdb->get_var( "SHOW COLUMNS FROM {$bp->activity->table_name} LIKE 'component_name'" ) ) + $wpdb->query( "ALTER TABLE {$bp->activity->table_name} CHANGE component_name component varchar(75) NOT NULL" ); + } + + // On first installation - record all existing blogs in the system. + if ( !(int)$bp->site_options['bp-blogs-first-install'] ) { + bp_blogs_record_existing_blogs(); + bp_update_option( 'bp-blogs-first-install', 1 ); + } + + if ( is_multisite() ) + bp_core_add_illegal_names(); + + // Update and remove the message threads table if it exists + if ( $wpdb->get_var( "SHOW TABLES LIKE '%{$bp_prefix}bp_messages_threads%'" ) ) { + $update = BP_Messages_Thread::update_tables(); + + if ( $update ) + $wpdb->query( "DROP TABLE {$bp_prefix}bp_messages_threads" ); + } + +} + +function bp_core_wizard_message() { + if ( isset( $_GET['updated'] ) ) + $message = __( 'Installation was successful. The available options have now been updated, please continue with your selection.', 'buddypress' ); + else + return false; ?> + + <div id="message" class="updated"> + <p><?php echo esc_attr( $message ) ?></p> + </div> + +<?php +} +add_action( 'bp_admin_notices', 'bp_core_wizard_message' ); + +// Alter thickbox screens so the entire plugin download and install +// interface is contained within. +function bp_core_wizard_thickbox() { + $form_action = bp_core_update_do_network_admin() ? network_admin_url( add_query_arg( array( 'page' => 'bp-wizard', 'updated' => '1' ), 'admin.php' ) ) : admin_url( add_query_arg( array( 'page' => 'bp-wizard', 'updated' => '1' ), 'admin.php' ) ); ?> + + <script type="text/javascript"> + jQuery('p.action-button a').attr( 'target', '' ); + + if ( window.location != window.parent.location ) { + jQuery('#adminmenu, #wphead, #footer, #update-nag, #screen-meta').hide(); + jQuery('#wpbody').css( 'margin', '15px' ); + jQuery('body').css( 'min-width', '30px' ); + jQuery('#wpwrap').css( 'min-height', '30px' ); + jQuery('a').removeClass( 'thickbox thickbox-preview onclick' ); + jQuery('body.update-php div.wrap p:last').hide(); + jQuery('body.update-php div.wrap p:last').after( '<p><a class="button" target="_parent" href="<?php echo $form_action; ?>"><?php _e( 'Finish', 'buddypress' ) ?></a></p>' ); + } + </script> + +<?php +} +add_action( 'admin_footer', 'bp_core_wizard_thickbox' ); + +/** + * Adds the "BuddyPress" admin submenu item to the Site Admin tab. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + * @global $wpdb WordPress DB access object. + * @uses add_submenu_page() WP function to add a submenu item + */ +function bp_core_update_add_admin_menu() { + global $bp_wizard; + + // Only load this version of the menu if this is an upgrade or a new installation + if ( empty( $bp_wizard->setup_type ) ) + return false; + + if ( !current_user_can( 'activate_plugins' ) ) + return false; + + if ( 'install' == $bp_wizard->setup_type ) + $status = __( 'Setup', 'buddypress' ); + else + $status = __( 'Update', 'buddypress' ); + + // Add the administration tab under the "Site Admin" tab for site administrators + add_menu_page( __( 'BuddyPress', 'buddypress' ), __( 'BuddyPress', 'buddypress' ), 'manage_options', 'bp-wizard', '' ); + $hook = add_submenu_page( 'bp-wizard', $status, $status, 'manage_options', 'bp-wizard', array( $bp_wizard, 'html' ) ); + + // Add a hook for css/js + add_action( "admin_print_styles-$hook", 'bp_core_update_add_admin_menu_styles' ); +} +add_action( bp_core_update_admin_hook(), 'bp_core_update_add_admin_menu', 9 ); + +function bp_core_update_add_admin_menu_styles() { + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) { + wp_enqueue_style( 'bp-admin-css', apply_filters( 'bp_core_admin_css', plugins_url( '/buddypress' ) . '/bp-core/css/admin.dev.css' ), array(), '20110723' ); + wp_enqueue_script( 'bp-update-js', apply_filters( 'bp_core_update_js', plugins_url( '/buddypress' ) . '/bp-core/js/update.dev.js' ), array( 'jquery' ), '20110723' ); + } else { + wp_enqueue_style( 'bp-admin-css', apply_filters( 'bp_core_admin_css', plugins_url( '/buddypress' ) . '/bp-core/css/admin.css' ), array(), '20110723' ); + wp_enqueue_script( 'bp-update-js', apply_filters( 'bp_core_update_js', plugins_url( '/buddypress' ) . '/bp-core/js/update.js' ), array( 'jquery' ), '20110723' ); + + } + + wp_enqueue_script( 'thickbox' ); + wp_enqueue_style( 'thickbox' ); ?> + + <style type="text/css"> + /* Wizard Icon */ + ul#adminmenu li.toplevel_page_bp-wizard .wp-menu-image a img { display: none; } + ul#adminmenu li.toplevel_page_bp-wizard .wp-menu-image a { background-image: url( <?php echo plugins_url( 'buddypress/bp-core/images/admin_menu_icon.png' ) ?> ) !important; background-position: -1px -32px; } + ul#adminmenu li.toplevel_page_bp-wizard:hover .wp-menu-image a, + ul#adminmenu li.toplevel_page_bp-wizard.wp-has-current-submenu .wp-menu-image a { + background-position: -1px 0; + } + + /* Settings Icon */ + ul#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image a img { display: none; } + ul#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image a { background-image: url( <?php echo plugins_url( 'buddypress/bp-core/images/admin_menu_icon.png' ) ?> ) !important; background-position: -1px -32px; } + ul#adminmenu li.toplevel_page_bp-general-settings:hover .wp-menu-image a, + ul#adminmenu li.toplevel_page_bp-general-settings.wp-has-current-submenu .wp-menu-image a { + background-position: -1px 0; + } + </style> + +<?php +} +add_action( 'admin_head', 'bp_core_update_add_admin_menu_styles' ); + +/** + * Fetches BP pages from the meta table + * + * @package BuddyPress Core + * @since 1.5 + * + * @return array $page_ids + */ +function bp_core_update_get_page_meta() { + if ( !$page_ids = bp_get_option( 'bp-pages' ) ) + $page_ids = array(); + + return apply_filters( 'bp_core_update_get_page_meta', $page_ids ); +} + +function bp_core_update_do_network_admin() { + $do_network_admin = false; + + if ( is_multisite() && ( !defined( 'BP_ENABLE_MULTIBLOG' ) || !BP_ENABLE_MULTIBLOG ) ) + $do_network_admin = true; + + return apply_filters( 'bp_core_do_network_admin', $do_network_admin ); +} + +function bp_core_update_admin_hook() { + $hook = bp_core_update_do_network_admin() ? 'network_admin_menu' : 'admin_menu'; + + return apply_filters( 'bp_core_admin_hook', $hook ); +} + +/** + * Adds an admin nag about running the BP upgrade/install wizard + * + * @package BuddyPress Core + * @since 1.5 + * @global $pagenow The current admin page + */ +function bp_core_update_nag() { + global $bp_wizard, $pagenow; + + if ( empty( $bp_wizard->setup_type ) ) + return; + + if ( !is_super_admin() ) + return; + + if ( 'admin.php' == $pagenow && ( empty( $_GET['page'] ) || 'bp-wizard' == $_GET['page'] ) ) + return; + + $url = bp_core_update_do_network_admin() ? network_admin_url( 'admin.php?page=bp-wizard' ) : admin_url( 'admin.php?page=bp-wizard' ); + + switch( $bp_wizard->setup_type ) { + case 'update': + $msg = sprintf( __( 'BuddyPress has been updated! Please run the <a href="%s">update wizard</a>.', 'buddypress' ), $url ); + break; + + default: + case 'install': + $msg = sprintf( __( 'BuddyPress was successfully installed! Please run the <a href="%s">installation wizard</a>.', 'buddypress' ), $url ); + break; + } + + echo '<div class="update-nag">' . $msg . '</div>'; +} +add_action( 'admin_notices', 'bp_core_update_nag', 5 ); +add_action( 'network_admin_notices', 'bp_core_update_nag', 5 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-adminbar.php b/wp-content/plugins/buddypress/bp-core/bp-core-adminbar.php new file mode 100644 index 0000000..8cef534 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-adminbar.php @@ -0,0 +1,266 @@ +<?php +/** + * BuddyPress Core Admin Bar + * + * Handles the core functions related to the WordPress Admin Bar + * + * @package BuddyPress + * @subpackage Core + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +if ( !bp_use_wp_admin_bar() || defined( 'DOING_AJAX' ) ) + return; + +/** + * Adjust the admin bar menus based on which WordPress version this is + * + * @since BuddyPress (1.5.2) + */ +function bp_core_admin_bar_version_check() { + if ( 3.2 == bp_get_major_wp_version() ) { + add_action( 'bp_setup_admin_bar', 'bp_admin_bar_root_site', 3 ); + add_action( 'bp_setup_admin_bar', 'bp_admin_bar_comments_menu', 3 ); + add_action( 'bp_setup_admin_bar', 'bp_admin_bar_appearance_menu', 3 ); + add_action( 'bp_setup_admin_bar', 'bp_admin_bar_updates_menu', 3 ); + } +} +add_action( 'admin_bar_menu', 'bp_core_admin_bar_version_check', 4 ); + +/** + * Unhook the WordPress core menus. + * + * @since BuddyPress (r4151) + * + * @uses remove_action + * @uses is_network_admin() + * @uses is_user_admin() + */ +function bp_admin_bar_remove_wp_menus() { + + if ( 3.2 == bp_get_major_wp_version() ) { + remove_action( 'admin_bar_menu', 'wp_admin_bar_my_account_menu', 10 ); + remove_action( 'admin_bar_menu', 'wp_admin_bar_my_sites_menu', 20 ); + remove_action( 'admin_bar_menu', 'wp_admin_bar_dashboard_view_site_menu', 25 ); + + // Don't show the 'Edit Page' menu on BP pages + if ( !bp_is_blog_page() ) + remove_action( 'admin_bar_menu', 'wp_admin_bar_edit_menu', 30 ); + + remove_action( 'admin_bar_menu', 'wp_admin_bar_shortlink_menu', 80 ); + remove_action( 'admin_bar_menu', 'wp_admin_bar_updates_menu', 70 ); + + if ( !is_network_admin() && !is_user_admin() ) { + remove_action( 'admin_bar_menu', 'wp_admin_bar_comments_menu', 50 ); + remove_action( 'admin_bar_menu', 'wp_admin_bar_appearance_menu', 60 ); + } + + remove_action( 'admin_bar_menu', 'wp_admin_bar_updates_menu', 70 ); + } else { + if ( !bp_is_blog_page() ) { + remove_action( 'admin_bar_menu', 'wp_admin_bar_edit_menu', 80 ); + } + } +} +add_action( 'bp_init', 'bp_admin_bar_remove_wp_menus', 2 ); + +/** + * Add a menu for the root site of this BuddyPress network + * + * @global type $wp_admin_bar + * @return If in ajax + */ +function bp_admin_bar_root_site() { + global $wp_admin_bar; + + // Create the root blog menu + $wp_admin_bar->add_menu( array( + 'id' => 'bp-root-blog', + 'title' => get_blog_option( bp_get_root_blog_id(), 'blogname' ), + 'href' => bp_get_root_domain() + ) ); + + // Logged in user + if ( is_user_logged_in() ) { + + // Dashboard links + if ( is_super_admin() ) { + + // Add site admin link + $wp_admin_bar->add_menu( array( + 'id' => 'dashboard', + 'parent' => 'bp-root-blog', + 'title' => __( 'Admin Dashboard', 'buddypress' ), + 'href' => get_admin_url( bp_get_root_blog_id() ) + ) ); + + // Add network admin link + if ( is_multisite() ) { + + // Link to the network admin dashboard + $wp_admin_bar->add_menu( array( + 'id' => 'network-dashboard', + 'parent' => 'bp-root-blog', + 'title' => __( 'Network Dashboard', 'buddypress' ), + 'href' => network_admin_url() + ) ); + } + } + } +} + +/** + * Add the "My Sites/[Site Name]" menu and all submenus. + */ +function bp_admin_bar_my_sites_menu() { + global $wp_admin_bar; + + /* Add the 'My Sites' menu if the user has more than one site. */ + if ( count( $wp_admin_bar->user->blogs ) <= 1 ) + return; + + $wp_admin_bar->add_menu( array( 'id' => 'my-blogs', 'title' => __( 'My Sites' ), 'href' => admin_url( 'my-sites.php' ) ) ); + + $default = includes_url( 'images/wpmini-blue.png' ); + + foreach ( (array)$wp_admin_bar->user->blogs as $blog ) { + // @todo Replace with some favicon lookup. + //$blavatar = '<img src="' . esc_url( blavatar_url( blavatar_domain( $blog->siteurl ), 'img', 16, $default ) ) . '" alt="Blavatar" width="16" height="16" />'; + $blavatar = '<img src="' . esc_url( $default ) . '" alt="' . esc_attr__( 'Blavatar' ) . '" width="16" height="16" class="blavatar"/>'; + + $blogname = empty( $blog->blogname ) ? $blog->domain : $blog->blogname; + + $wp_admin_bar->add_menu( array( 'parent' => 'my-blogs', 'id' => 'blog-' . $blog->userblog_id, 'title' => $blavatar . $blogname, 'href' => get_admin_url( $blog->userblog_id ) ) ); + $wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-d', 'title' => __( 'Dashboard' ), 'href' => get_admin_url( $blog->userblog_id ) ) ); + + if ( current_user_can_for_blog( $blog->userblog_id, 'edit_posts' ) ) { + $wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-n', 'title' => __( 'New Post' ), 'href' => get_admin_url( $blog->userblog_id, 'post-new.php' ) ) ); + $wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-c', 'title' => __( 'Manage Comments' ), 'href' => get_admin_url( $blog->userblog_id, 'edit-comments.php' ) ) ); + } + + $wp_admin_bar->add_menu( array( 'parent' => 'blog-' . $blog->userblog_id, 'id' => 'blog-' . $blog->userblog_id . '-v', 'title' => __( 'Visit Site' ), 'href' => get_home_url( $blog->userblog_id ) ) ); + } +} + +/** + * Add edit comments link with awaiting moderation count bubble + */ +function bp_admin_bar_comments_menu( $wp_admin_bar ) { + global $wp_admin_bar; + + if ( !current_user_can( 'edit_posts' ) ) + return; + + $awaiting_mod = wp_count_comments(); + $awaiting_mod = $awaiting_mod->moderated; + + $awaiting_mod = $awaiting_mod ? "<span id='ab-awaiting-mod' class='pending-count'>" . number_format_i18n( $awaiting_mod ) . "</span>" : ''; + $wp_admin_bar->add_menu( array( 'parent' => 'dashboard', 'id' => 'comments', 'title' => sprintf( __( 'Comments %s' ), $awaiting_mod ), 'href' => admin_url( 'edit-comments.php' ) ) ); +} + +/** + * Add "Appearance" menu with widget and nav menu submenu + */ +function bp_admin_bar_appearance_menu() { + global $wp_admin_bar; + + // You can have edit_theme_options but not switch_themes. + if ( !current_user_can( 'switch_themes' ) && !current_user_can( 'edit_theme_options' ) ) + return; + + $wp_admin_bar->add_menu( array( 'parent' => 'dashboard', 'id' => 'appearance', 'title' => __( 'Appearance' ), 'href' => admin_url( 'themes.php' ) ) ); + + if ( !current_user_can( 'edit_theme_options' ) ) + return; + + if ( current_user_can( 'switch_themes' ) ) + $wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'themes', 'title' => __( 'Themes' ), 'href' => admin_url( 'themes.php' ) ) ); + + if ( current_theme_supports( 'widgets' ) ) + $wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'widgets', 'title' => __( 'Widgets' ), 'href' => admin_url( 'widgets.php' ) ) ); + + if ( current_theme_supports( 'menus' ) || current_theme_supports( 'widgets' ) ) + $wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'menus', 'title' => __( 'Menus' ), 'href' => admin_url( 'nav-menus.php' ) ) ); + + if ( current_theme_supports( 'custom-background' ) ) + $wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'background', 'title' => __( 'Background' ), 'href' => admin_url( 'themes.php?page=custom-background' ) ) ); + + if ( current_theme_supports( 'custom-header' ) ) + $wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'header', 'title' => __( 'Header' ), 'href' => admin_url( 'themes.php?page=custom-header' ) ) ); +} + +/** + * Provide an update link if theme/plugin/core updates are available + */ +function bp_admin_bar_updates_menu() { + global $wp_admin_bar; + + if ( !current_user_can( 'install_plugins' ) ) + return; + + $plugin_update_count = $theme_update_count = $wordpress_update_count = 0; + $update_plugins = get_site_transient( 'update_plugins' ); + if ( !empty( $update_plugins->response ) ) + $plugin_update_count = count( $update_plugins->response ); + $update_themes = get_site_transient( 'update_themes' ); + if ( !empty( $update_themes->response ) ) + $theme_update_count = count( $update_themes->response ); + /* @todo get_core_updates() is only available on admin page loads + $update_wordpress = get_core_updates( array('dismissed' => false) ); + if ( !empty($update_wordpress) && !in_array( $update_wordpress[0]->response, array('development', 'latest') ) ) + $wordpress_update_count = 1; + */ + + $update_count = $plugin_update_count + $theme_update_count + $wordpress_update_count; + + if ( !$update_count ) + return; + + $update_title = array( ); + if ( !empty( $wordpress_update_count ) ) + $update_title[] = sprintf( __( '%d WordPress Update' ), $wordpress_update_count ); + if ( $plugin_update_count ) + $update_title[] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $plugin_update_count ), $plugin_update_count ); + if ( $theme_update_count ) + $update_title[] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $theme_update_count ), $theme_update_count ); + + $update_title = !empty( $update_title ) ? esc_attr( implode( ', ', $update_title ) ) : ''; + + $update_title = "<span title='$update_title'>"; + $update_title .= sprintf( __( 'Updates %s' ), "<span id='ab-updates' class='update-count'>" . number_format_i18n( $update_count ) . '</span>' ); + $update_title .= '</span>'; + + $wp_admin_bar->add_menu( array( 'parent' => 'dashboard', 'id' => 'updates', 'title' => $update_title, 'href' => network_admin_url( 'update-core.php' ) ) ); +} + +/** + * Handle the Admin Bar CSS + */ +function bp_core_load_admin_bar_css() { + + if ( !bp_use_wp_admin_bar() ) + return; + + // Admin bar styles + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) + $stylesheet = BP_PLUGIN_URL . '/bp-core/css/admin-bar.dev.css'; + else + $stylesheet = BP_PLUGIN_URL . '/bp-core/css/admin-bar.css'; + + wp_enqueue_style( 'bp-admin-bar', apply_filters( 'bp_core_admin_bar_css', $stylesheet ), array( 'admin-bar' ), '20110723' ); + + if ( !is_rtl() ) + return; + + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) + $stylesheet = BP_PLUGIN_URL . '/bp-core/css/admin-bar-rtl.dev.css'; + else + $stylesheet = BP_PLUGIN_URL . '/bp-core/css/admin-bar-rtl.css'; + + wp_enqueue_style( 'bp-admin-bar-rtl', apply_filters( 'bp_core_admin_bar_rtl_css', $stylesheet ), array( 'bp-admin-bar' ), '20110723' ); +} +add_action( 'bp_init', 'bp_core_load_admin_bar_css' ); + +?> diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-avatars.php b/wp-content/plugins/buddypress/bp-core/bp-core-avatars.php new file mode 100644 index 0000000..7f80b3e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-avatars.php @@ -0,0 +1,857 @@ +<?php +/** + * BuddyPress Avatars + * + * Based on contributions from: Beau Lebens - http://www.dentedreality.com.au/ + * Modified for BuddyPress by: Andy Peatling - http://apeatling.wordpress.com/ + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/*** + * Set up the constants we need for avatar support + */ +function bp_core_set_avatar_constants() { + global $bp; + + if ( !defined( 'BP_AVATAR_THUMB_WIDTH' ) ) + define( 'BP_AVATAR_THUMB_WIDTH', 50 ); + + if ( !defined( 'BP_AVATAR_THUMB_HEIGHT' ) ) + define( 'BP_AVATAR_THUMB_HEIGHT', 50 ); + + if ( !defined( 'BP_AVATAR_FULL_WIDTH' ) ) + define( 'BP_AVATAR_FULL_WIDTH', 150 ); + + if ( !defined( 'BP_AVATAR_FULL_HEIGHT' ) ) + define( 'BP_AVATAR_FULL_HEIGHT', 150 ); + + if ( !defined( 'BP_AVATAR_ORIGINAL_MAX_WIDTH' ) ) + define( 'BP_AVATAR_ORIGINAL_MAX_WIDTH', 450 ); + + if ( !defined( 'BP_AVATAR_ORIGINAL_MAX_FILESIZE' ) ) { + if ( !isset( $bp->site_options['fileupload_maxk'] ) ) + define( 'BP_AVATAR_ORIGINAL_MAX_FILESIZE', 5120000 ); // 5mb + else + define( 'BP_AVATAR_ORIGINAL_MAX_FILESIZE', $bp->site_options['fileupload_maxk'] * 1024 ); + } + + if ( !defined( 'BP_AVATAR_DEFAULT' ) ) + define( 'BP_AVATAR_DEFAULT', BP_PLUGIN_URL . '/bp-core/images/mystery-man.jpg' ); + + if ( !defined( 'BP_AVATAR_DEFAULT_THUMB' ) ) + define( 'BP_AVATAR_DEFAULT_THUMB', BP_PLUGIN_URL . '/bp-core/images/mystery-man-50.jpg' ); +} +add_action( 'bp_init', 'bp_core_set_avatar_constants', 3 ); + +function bp_core_set_avatar_globals() { + global $bp; + + // Dimensions + $bp->avatar->thumb->width = BP_AVATAR_THUMB_WIDTH; + $bp->avatar->thumb->height = BP_AVATAR_THUMB_HEIGHT; + $bp->avatar->full->width = BP_AVATAR_FULL_WIDTH; + $bp->avatar->full->height = BP_AVATAR_FULL_HEIGHT; + + // Upload maximums + $bp->avatar->original_max_width = BP_AVATAR_ORIGINAL_MAX_WIDTH; + $bp->avatar->original_max_filesize = BP_AVATAR_ORIGINAL_MAX_FILESIZE; + + // Defaults + $bp->avatar->thumb->default = BP_AVATAR_DEFAULT_THUMB; + $bp->avatar->full->default = BP_AVATAR_DEFAULT; + + // These have to be set on page load in order to avoid infinite filter loops at runtime + $bp->avatar->upload_path = bp_core_avatar_upload_path(); + $bp->avatar->url = bp_core_avatar_url(); + + do_action( 'bp_core_set_avatar_globals' ); +} +add_action( 'bp_setup_globals', 'bp_core_set_avatar_globals' ); + +/** + * bp_core_fetch_avatar() + * + * Fetches an avatar from a BuddyPress object. Supports user/group/blog as + * default, but can be extended to include your own custom components too. + * + * @global object $bp Global BuddyPress settings object + * @global $current_blog WordPress global containing information and settings for the current blog being viewed. + * @param array $args Determine the output of this function + * @return string Formatted HTML <img> element, or raw avatar URL based on $html arg + */ +function bp_core_fetch_avatar( $args = '' ) { + global $bp, $current_blog; + + // Set a few default variables + $def_object = 'user'; + $def_type = 'thumb'; + $def_class = 'avatar'; + $def_alt = __( 'Avatar Image', 'buddypress' ); + + // Set the default variables array + $defaults = array( + 'item_id' => false, + 'object' => $def_object, // user/group/blog/custom type (if you use filters) + 'type' => $def_type, // thumb or full + 'avatar_dir' => false, // Specify a custom avatar directory for your object + 'width' => false, // Custom width (int) + 'height' => false, // Custom height (int) + 'class' => $def_class, // Custom <img> class (string) + 'css_id' => false, // Custom <img> ID (string) + 'alt' => $def_alt, // Custom <img> alt (string) + 'email' => false, // Pass the user email (for gravatar) to prevent querying the DB for it + 'no_grav' => false, // If there is no avatar found, return false instead of a grav? + 'html' => true, // Wrap the return img URL in <img /> + 'title' => '' // Custom <img> title (string) + ); + + // Compare defaults to passed and extract + $params = wp_parse_args( $args, $defaults ); + extract( $params, EXTR_SKIP ); + + // Set item_id if not passed + if ( !$item_id ) { + if ( 'user' == $object ) + $item_id = $bp->displayed_user->id; + else if ( bp_is_active( 'groups' ) && 'group' == $object ) + $item_id = $bp->groups->current_group->id; + else if ( 'blog' == $object ) + $item_id = $current_blog->id; + + $item_id = apply_filters( 'bp_core_avatar_item_id', $item_id, $object ); + + if ( !$item_id ) + return false; + } + + // Set avatar_dir if not passed (uses $object) + if ( !$avatar_dir ) { + if ( 'user' == $object ) + $avatar_dir = 'avatars'; + else if ( bp_is_active( 'groups' ) && 'group' == $object ) + $avatar_dir = 'group-avatars'; + else if ( 'blog' == $object ) + $avatar_dir = 'blog-avatars'; + + $avatar_dir = apply_filters( 'bp_core_avatar_dir', $avatar_dir, $object ); + + if ( !$avatar_dir ) + return false; + } + + // Add an identifying class to each item + $class .= ' ' . $object . '-' . $item_id . '-avatar'; + + // Get item name for alt/title tags + $item_name = ''; + + if ( 'user' == $object ) + $item_name = bp_core_get_user_displayname( $item_id ); + elseif ( 'group' == $object ) + $item_name = bp_get_group_name( new BP_Groups_Group( $item_id ) ); + elseif ( 'blog' == $object ) + $item_name = get_blog_option( $item_id, 'blogname' ); + + $alt = sprintf( $alt, apply_filters( 'bp_core_avatar_alt', $item_name, $item_id, $object ) ); + + // Set title tag + if ( $title ) + $title = " title='" . esc_attr( apply_filters( 'bp_core_avatar_title', $title, $item_id, $object ) ) . "'"; + elseif ( $item_name ) + $title = " title='" . esc_attr( apply_filters( 'bp_core_avatar_title', $item_name, $item_id, $object ) ) . "'"; + + // Set CSS ID if passed + if ( !empty( $css_id ) ) + $css_id = " id='{$css_id}'"; + + // Set avatar width + if ( $width ) + $html_width = " width='{$width}'"; + else + $html_width = ( 'thumb' == $type ) ? ' width="' . bp_core_avatar_thumb_width() . '"' : ' width="' . bp_core_avatar_full_width() . '"'; + + // Set avatar height + if ( $height ) + $html_height = " height='{$height}'"; + else + $html_height = ( 'thumb' == $type ) ? ' height="' . bp_core_avatar_thumb_height() . '"' : ' height="' . bp_core_avatar_full_height() . '"'; + + // Set avatar URL and DIR based on prepopulated constants + $avatar_folder_url = apply_filters( 'bp_core_avatar_folder_url', bp_core_avatar_url() . '/' . $avatar_dir . '/' . $item_id, $item_id, $object, $avatar_dir ); + $avatar_folder_dir = apply_filters( 'bp_core_avatar_folder_dir', bp_core_avatar_upload_path() . '/' . $avatar_dir . '/' . $item_id, $item_id, $object, $avatar_dir ); + + /**** + * Look for uploaded avatar first. Use it if it exists. + * Set the file names to search for, to select the full size + * or thumbnail image. + */ + $avatar_size = ( 'full' == $type ) ? '-bpfull' : '-bpthumb'; + $legacy_user_avatar_name = ( 'full' == $type ) ? '-avatar2' : '-avatar1'; + $legacy_group_avatar_name = ( 'full' == $type ) ? '-groupavatar-full' : '-groupavatar-thumb'; + + // Check for directory + if ( file_exists( $avatar_folder_dir ) ) { + + // Open directory + if ( $av_dir = opendir( $avatar_folder_dir ) ) { + + // Stash files in an array once to check for one that matches + $avatar_files = array(); + while ( false !== ( $avatar_file = readdir($av_dir) ) ) { + // Only add files to the array (skip directories) + if ( 2 < strlen( $avatar_file ) ) + $avatar_files[] = $avatar_file; + } + + // Check for array + if ( 0 < count( $avatar_files ) ) { + + // Check for current avatar + foreach( $avatar_files as $key => $value ) { + if ( strpos ( $value, $avatar_size )!== false ) + $avatar_url = $avatar_folder_url . '/' . $avatar_files[$key]; + } + + // Legacy avatar check + if ( !isset( $avatar_url ) ) { + foreach( $avatar_files as $key => $value ) { + if ( strpos ( $value, $legacy_user_avatar_name )!== false ) + $avatar_url = $avatar_folder_url . '/' . $avatar_files[$key]; + } + + // Legacy group avatar check + if ( !isset( $avatar_url ) ) { + foreach( $avatar_files as $key => $value ) { + if ( strpos ( $value, $legacy_group_avatar_name )!== false ) + $avatar_url = $avatar_folder_url . '/' . $avatar_files[$key]; + } + } + } + } + } + + // Close the avatar directory + closedir( $av_dir ); + + // If we found a locally uploaded avatar + if ( isset( $avatar_url ) ) { + + // Return it wrapped in an <img> element + if ( true === $html ) { + return apply_filters( 'bp_core_fetch_avatar', '<img src="' . $avatar_url . '" alt="' . esc_attr( $alt ) . '" class="' . esc_attr( $class ) . '"' . $css_id . $html_width . $html_height . $title . ' />', $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir ); + + // ...or only the URL + } else { + return apply_filters( 'bp_core_fetch_avatar_url', $avatar_url ); + } + } + } + + // If no avatars could be found, try to display a gravatar + + // Skips gravatar check if $no_grav is passed + if ( ! apply_filters( 'bp_core_fetch_avatar_no_grav', $no_grav ) ) { + + // Set gravatar size + if ( $width ) + $grav_size = $width; + else if ( 'full' == $type ) + $grav_size = bp_core_avatar_full_width(); + else if ( 'thumb' == $type ) + $grav_size = bp_core_avatar_thumb_width(); + + // Set gravatar type + if ( empty( $bp->grav_default->{$object} ) ) + $default_grav = 'wavatar'; + else if ( 'mystery' == $bp->grav_default->{$object} ) + $default_grav = apply_filters( 'bp_core_mysteryman_src', bp_core_avatar_default(), $grav_size ); + else + $default_grav = $bp->grav_default->{$object}; + + // Set gravatar object + if ( empty( $email ) ) { + if ( 'user' == $object ) { + $email = bp_core_get_user_email( $item_id ); + } else if ( 'group' == $object || 'blog' == $object ) { + $email = "{$item_id}-{$object}@{bp_get_root_domain()}"; + } + } + + // Set host based on if using ssl + if ( is_ssl() ) + $host = 'https://secure.gravatar.com/avatar/'; + else + $host = 'http://www.gravatar.com/avatar/'; + + // Filter gravatar vars + $email = apply_filters( 'bp_core_gravatar_email', $email, $item_id, $object ); + $gravatar = apply_filters( 'bp_gravatar_url', $host ) . md5( strtolower( $email ) ) . '?d=' . $default_grav . '&s=' . $grav_size; + + } else { + // No avatar was found, and we've been told not to use a gravatar. + $gravatar = apply_filters( "bp_core_default_avatar_$object", BP_PLUGIN_URL . '/bp-core/images/mystery-man.jpg', $params ); + } + + if ( true === $html ) + return apply_filters( 'bp_core_fetch_avatar', '<img src="' . $gravatar . '" alt="' . esc_attr( $alt ) . '" class="' . esc_attr( $class ) . '"' . $css_id . $html_width . $html_height . $title . ' />', $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir ); + else + return apply_filters( 'bp_core_fetch_avatar_url', $gravatar ); +} + +/** + * Delete an existing avatar + * + * Accepted values for $args are: + * item_id - item id which relates to the object type. + * object - the objetc type user, group, blog, etc. + * avatar_dir - The directory where the avatars to be uploaded. + * + * @global object $bp BuddyPress global settings + * @param mixed $args + * @return bool Success/failure + */ +function bp_core_delete_existing_avatar( $args = '' ) { + global $bp; + + $defaults = array( + 'item_id' => false, + 'object' => 'user', // user OR group OR blog OR custom type (if you use filters) + 'avatar_dir' => false + ); + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + if ( !$item_id ) { + if ( 'user' == $object ) + $item_id = $bp->displayed_user->id; + else if ( 'group' == $object ) + $item_id = $bp->groups->current_group->id; + else if ( 'blog' == $object ) + $item_id = $current_blog->id; + + $item_id = apply_filters( 'bp_core_avatar_item_id', $item_id, $object ); + + if ( !$item_id ) return false; + } + + if ( !$avatar_dir ) { + if ( 'user' == $object ) + $avatar_dir = 'avatars'; + else if ( 'group' == $object ) + $avatar_dir = 'group-avatars'; + else if ( 'blog' == $object ) + $avatar_dir = 'blog-avatars'; + + $avatar_dir = apply_filters( 'bp_core_avatar_dir', $avatar_dir, $object ); + + if ( !$avatar_dir ) return false; + } + + $avatar_folder_dir = apply_filters( 'bp_core_avatar_folder_dir', bp_core_avatar_upload_path() . '/' . $avatar_dir . '/' . $item_id, $item_id, $object, $avatar_dir ); + + if ( !file_exists( $avatar_folder_dir ) ) + return false; + + if ( $av_dir = opendir( $avatar_folder_dir ) ) { + while ( false !== ( $avatar_file = readdir($av_dir) ) ) { + if ( ( preg_match( "/-bpfull/", $avatar_file ) || preg_match( "/-bpthumb/", $avatar_file ) ) && '.' != $avatar_file && '..' != $avatar_file ) + @unlink( $avatar_folder_dir . '/' . $avatar_file ); + } + } + closedir($av_dir); + + @rmdir( $avatar_folder_dir ); + + do_action( 'bp_core_delete_existing_avatar', $args ); + + return true; +} + +/** + * Handles avatar uploading. + * + * The functions starts off by checking that the file has been uploaded properly using bp_core_check_avatar_upload(). + * It then checks that the file size is within limits, and that it has an accepted file extension (jpg, gif, png). + * If everything checks out, crop the image and move it to its real location. + * + * @global object $bp BuddyPress global settings + * @param array $file The appropriate entry the from $_FILES superglobal. + * @param string $upload_dir_filter A filter to be applied to upload_dir + * @return bool Success/failure + * @see bp_core_check_avatar_upload() + * @see bp_core_check_avatar_type() + */ +function bp_core_avatar_handle_upload( $file, $upload_dir_filter ) { + global $bp; + + /*** + * You may want to hook into this filter if you want to override this function. + * Make sure you return false. + */ + if ( !apply_filters( 'bp_core_pre_avatar_handle_upload', true, $file, $upload_dir_filter ) ) + return true; + + require_once( ABSPATH . '/wp-admin/includes/image.php' ); + require_once( ABSPATH . '/wp-admin/includes/file.php' ); + + $uploadErrors = array( + 0 => __("There is no error, the file uploaded with success", 'buddypress'), + 1 => __("Your image was bigger than the maximum allowed file size of: ", 'buddypress') . size_format( bp_core_avatar_original_max_filesize() ), + 2 => __("Your image was bigger than the maximum allowed file size of: ", 'buddypress') . size_format( bp_core_avatar_original_max_filesize() ), + 3 => __("The uploaded file was only partially uploaded", 'buddypress'), + 4 => __("No file was uploaded", 'buddypress'), + 6 => __("Missing a temporary folder", 'buddypress') + ); + + if ( !bp_core_check_avatar_upload( $file ) ) { + bp_core_add_message( sprintf( __( 'Your upload failed, please try again. Error was: %s', 'buddypress' ), $uploadErrors[$file['file']['error']] ), 'error' ); + return false; + } + + if ( !bp_core_check_avatar_size( $file ) ) { + bp_core_add_message( sprintf( __( 'The file you uploaded is too big. Please upload a file under %s', 'buddypress'), size_format( bp_core_avatar_original_max_filesize() ) ), 'error' ); + return false; + } + + if ( !bp_core_check_avatar_type( $file ) ) { + bp_core_add_message( __( 'Please upload only JPG, GIF or PNG photos.', 'buddypress' ), 'error' ); + return false; + } + + // Filter the upload location + add_filter( 'upload_dir', $upload_dir_filter, 10, 0 ); + + $bp->avatar_admin->original = wp_handle_upload( $file['file'], array( 'action'=> 'bp_avatar_upload' ) ); + + // Move the file to the correct upload location. + if ( !empty( $bp->avatar_admin->original['error'] ) ) { + bp_core_add_message( sprintf( __( 'Upload Failed! Error was: %s', 'buddypress' ), $bp->avatar_admin->original['error'] ), 'error' ); + return false; + } + + // Get image size + $size = @getimagesize( $bp->avatar_admin->original['file'] ); + + // Check image size and shrink if too large + if ( $size[0] > bp_core_avatar_original_max_width() ) { + $thumb = wp_create_thumbnail( $bp->avatar_admin->original['file'], bp_core_avatar_original_max_width() ); + + // Check for thumbnail creation errors + if ( is_wp_error( $thumb ) ) { + bp_core_add_message( sprintf( __( 'Upload Failed! Error was: %s', 'buddypress' ), $thumb->get_error_message() ), 'error' ); + return false; + } + + // Thumbnail is good so proceed + $bp->avatar_admin->resized = $thumb; + } + + // We only want to handle one image after resize. + if ( empty( $bp->avatar_admin->resized ) ) + $bp->avatar_admin->image->dir = str_replace( bp_core_avatar_upload_path(), '', $bp->avatar_admin->original['file'] ); + else { + $bp->avatar_admin->image->dir = str_replace( bp_core_avatar_upload_path(), '', $bp->avatar_admin->resized ); + @unlink( $bp->avatar_admin->original['file'] ); + } + + // Check for WP_Error on what should be an image + if ( is_wp_error( $bp->avatar_admin->image->dir ) ) { + bp_core_add_message( sprintf( __( 'Upload failed! Error was: %s', 'buddypress' ), $bp->avatar_admin->image->dir->get_error_message() ), 'error' ); + return false; + } + + // Set the url value for the image + $bp->avatar_admin->image->url = bp_core_avatar_url() . $bp->avatar_admin->image->dir; + + return true; +} + +/** + * Crop an uploaded avatar + * + * $args has the following parameters: + * object - What component the avatar is for, e.g. "user" + * avatar_dir The absolute path to the avatar + * item_id - Item ID + * original_file - The absolute path to the original avatar file + * crop_w - Crop width + * crop_h - Crop height + * crop_x - The horizontal starting point of the crop + * crop_y - The vertical starting point of the crop + * + * @global object $bp BuddyPress global settings + * @param mixed $args + * @return bool Success/failure + */ +function bp_core_avatar_handle_crop( $args = '' ) { + global $bp; + + $defaults = array( + 'object' => 'user', + 'avatar_dir' => 'avatars', + 'item_id' => false, + 'original_file' => false, + 'crop_w' => bp_core_avatar_full_width(), + 'crop_h' => bp_core_avatar_full_height(), + 'crop_x' => 0, + 'crop_y' => 0 + ); + + $r = wp_parse_args( $args, $defaults ); + + /*** + * You may want to hook into this filter if you want to override this function. + * Make sure you return false. + */ + if ( !apply_filters( 'bp_core_pre_avatar_handle_crop', true, $r ) ) + return true; + + extract( $r, EXTR_SKIP ); + + if ( !$original_file ) + return false; + + $original_file = bp_core_avatar_upload_path() . $original_file; + + if ( !file_exists( $original_file ) ) + return false; + + if ( !$item_id ) + $avatar_folder_dir = apply_filters( 'bp_core_avatar_folder_dir', dirname( $original_file ), $item_id, $object, $avatar_dir ); + else + $avatar_folder_dir = apply_filters( 'bp_core_avatar_folder_dir', bp_core_avatar_upload_path() . '/' . $avatar_dir . '/' . $item_id, $item_id, $object, $avatar_dir ); + + if ( !file_exists( $avatar_folder_dir ) ) + return false; + + require_once( ABSPATH . '/wp-admin/includes/image.php' ); + require_once( ABSPATH . '/wp-admin/includes/file.php' ); + + // Delete the existing avatar files for the object + bp_core_delete_existing_avatar( array( 'object' => $object, 'avatar_path' => $avatar_folder_dir ) ); + + // Make sure we at least have a width and height for cropping + if ( !(int)$crop_w ) + $crop_w = bp_core_avatar_full_width(); + + if ( !(int)$crop_h ) + $crop_h = bp_core_avatar_full_height(); + + // Set the full and thumb filenames + $full_filename = wp_hash( $original_file . time() ) . '-bpfull.jpg'; + $thumb_filename = wp_hash( $original_file . time() ) . '-bpthumb.jpg'; + + // Crop the image + $full_cropped = wp_crop_image( $original_file, (int)$crop_x, (int)$crop_y, (int)$crop_w, (int)$crop_h, bp_core_avatar_full_width(), bp_core_avatar_full_height(), false, $avatar_folder_dir . '/' . $full_filename ); + $thumb_cropped = wp_crop_image( $original_file, (int)$crop_x, (int)$crop_y, (int)$crop_w, (int)$crop_h, bp_core_avatar_thumb_width(), bp_core_avatar_thumb_height(), false, $avatar_folder_dir . '/' . $thumb_filename ); + + // Remove the original + @unlink( $original_file ); + + return true; +} + +/** + * bp_core_fetch_avatar_filter() + * + * Attempts to filter get_avatar function and let BuddyPress have a go + * at finding an avatar that may have been uploaded locally. + * + * @global array $authordata + * @param string $avatar The result of get_avatar from before-filter + * @param int|string|object $user A user ID, email address, or comment object + * @param int $size Size of the avatar image (thumb/full) + * @param string $default URL to a default image to use if no avatar is available + * @param string $alt Alternate text to use in image tag. Defaults to blank + * @return <type> + */ +function bp_core_fetch_avatar_filter( $avatar, $user, $size, $default, $alt = '' ) { + global $pagenow; + + // Do not filter if inside WordPress options page + if ( 'options-discussion.php' == $pagenow ) + return $avatar; + + // If passed an object, assume $user->user_id + if ( is_object( $user ) ) + $id = $user->user_id; + + // If passed a number, assume it was a $user_id + else if ( is_numeric( $user ) ) + $id = $user; + + // If passed a string and that string returns a user, get the $id + else if ( is_string( $user ) && ( $user_by_email = get_user_by( 'email', $user ) ) ) + $id = $user_by_email->ID; + + // If somehow $id hasn't been assigned, return the result of get_avatar + if ( empty( $id ) ) + return !empty( $avatar ) ? $avatar : $default; + + if ( !$alt ) + $alt = __( 'Avatar of %s', 'buddypress' ); + + // Let BuddyPress handle the fetching of the avatar + $bp_avatar = bp_core_fetch_avatar( array( 'item_id' => $id, 'width' => $size, 'height' => $size, 'alt' => $alt ) ); + + // If BuddyPress found an avatar, use it. If not, use the result of get_avatar + return ( !$bp_avatar ) ? $avatar : $bp_avatar; +} +add_filter( 'get_avatar', 'bp_core_fetch_avatar_filter', 10, 5 ); + +/** + * Has the current avatar upload generated an error? + * + * @param array $file + * @return bool + */ +function bp_core_check_avatar_upload( $file ) { + if ( isset( $file['error'] ) && $file['error'] ) + return false; + + return true; +} + +/** + * Is the file size of the current avatar upload permitted? + * + * @param array $file + * @return bool + */ +function bp_core_check_avatar_size( $file ) { + if ( $file['file']['size'] > bp_core_avatar_original_max_filesize() ) + return false; + + return true; +} + +/** + * Does the current avatar upload have an allowed file type? + * + * Permitted file types are JPG, GIF and PNG. + * + * @param string $file + * @return bool + */ +function bp_core_check_avatar_type($file) { + if ( ( !empty( $file['file']['type'] ) && !preg_match('/(jpe?g|gif|png)$/i', $file['file']['type'] ) ) || !preg_match( '/(jpe?g|gif|png)$/i', $file['file']['name'] ) ) + return false; + + return true; +} + +/** + * bp_core_avatar_upload_path() + * + * Returns the absolute upload path for the WP installation + * + * @uses wp_upload_dir To get upload directory info + * @return string Absolute path to WP upload directory + */ +function bp_core_avatar_upload_path() { + global $bp; + + // See if the value has already been calculated and stashed in the $bp global + if ( isset( $bp->avatar->upload_path ) ) { + $basedir = $bp->avatar->upload_path; + } else { + // If this value has been set in a constant, just use that + if ( defined( 'BP_AVATAR_UPLOAD_PATH' ) ) { + $basedir = BP_AVATAR_UPLOAD_PATH; + } else { + if ( !bp_is_root_blog() ) { + // Switch dynamically in order to support BP_ENABLE_MULTIBLOG + switch_to_blog( bp_get_root_blog_id() ); + } + + // Get upload directory information from current site + $upload_dir = wp_upload_dir(); + + // Directory does not exist and cannot be created + if ( !empty( $upload_dir['error'] ) ) { + $basedir = ''; + + } else { + $basedir = $upload_dir['basedir']; + } + + // Will bail if not switched + restore_current_blog(); + } + + // Stash in $bp for later use + $bp->avatar->upload_path = $basedir; + } + + return apply_filters( 'bp_core_avatar_upload_path', $basedir ); +} + +/** + * bp_core_avatar_url() + * + * Returns the raw base URL for root site upload location + * + * @uses wp_upload_dir To get upload directory info + * @return string Full URL to current upload location + */ +function bp_core_avatar_url() { + global $bp; + + // See if the value has already been calculated and stashed in the $bp global + if ( isset( $bp->avatar->url ) ) { + $baseurl = $bp->avatar->url; + } else { + // If this value has been set in a constant, just use that + if ( defined( 'BP_AVATAR_URL' ) ) { + $baseurl = BP_AVATAR_URL; + } else { + // Get upload directory information from current site + $upload_dir = wp_upload_dir(); + + // Directory does not exist and cannot be created + if ( !empty( $upload_dir['error'] ) ) { + $baseurl = ''; + + } else { + $baseurl = $upload_dir['baseurl']; + + // If multisite, and current blog does not match root blog, make adjustments + if ( is_multisite() && bp_get_root_blog_id() != get_current_blog_id() ) + $baseurl = trailingslashit( get_blog_option( bp_get_root_blog_id(), 'home' ) ) . get_blog_option( bp_get_root_blog_id(), 'upload_path' ); + } + } + + // Stash in $bp for later use + $bp->avatar->url = $baseurl; + } + + return apply_filters( 'bp_core_avatar_url', $baseurl ); +} + +/** + * Utility function for fetching an avatar dimension setting + * + * @package BuddyPress + * @since 1.5 + * + * @param str $type 'thumb' for thumbs, otherwise full + * @param str $h_or_w 'height' for height, otherwise width + * @return int $dim The dimension + */ +function bp_core_avatar_dimension( $type = 'thumb', $h_or_w = 'height' ) { + global $bp; + + $dim = isset( $bp->avatar->{$type}->{$h_or_w} ) ? (int)$bp->avatar->{$type}->{$h_or_w} : false; + + return apply_filters( 'bp_core_avatar_dimension', $dim, $type, $h_or_w ); +} + +/** + * Get the avatar thumb width setting + * + * @package BuddyPress + * @since 1.5 + * + * @return int The thumb width + */ +function bp_core_avatar_thumb_width() { + return apply_filters( 'bp_core_avatar_thumb_width', bp_core_avatar_dimension( 'thumb', 'width' ) ); +} + +/** + * Get the avatar thumb height setting + * + * @package BuddyPress + * @since 1.5 + * + * @return int The thumb height + */ +function bp_core_avatar_thumb_height() { + return apply_filters( 'bp_core_avatar_thumb_height', bp_core_avatar_dimension( 'thumb', 'height' ) ); +} + +/** + * Get the avatar full width setting + * + * @package BuddyPress + * @since 1.5 + * + * @return int The full width + */ +function bp_core_avatar_full_width() { + return apply_filters( 'bp_core_avatar_full_width', bp_core_avatar_dimension( 'full', 'width' ) ); +} + +/** + * Get the avatar full height setting + * + * @package BuddyPress + * @since 1.5 + * + * @return int The full height + */ +function bp_core_avatar_full_height() { + return apply_filters( 'bp_core_avatar_full_height', bp_core_avatar_dimension( 'full', 'height' ) ); +} + +/** + * Get the max width for original avatar uploads + * + * @package BuddyPress + * @since 1.5 + * + * @return int The width + */ +function bp_core_avatar_original_max_width() { + global $bp; + + return apply_filters( 'bp_core_avatar_original_max_width', (int)$bp->avatar->original_max_width ); +} + +/** + * Get the max filesize for original avatar uploads + * + * @package BuddyPress + * @since 1.5 + * + * @return int The filesize + */ +function bp_core_avatar_original_max_filesize() { + global $bp; + + return apply_filters( 'bp_core_avatar_original_max_filesize', (int)$bp->avatar->original_max_filesize ); +} + +/** + * Get the default avatar + * + * @package BuddyPress + * @since 1.5 + * + * @return int The URL of the default avatar + */ +function bp_core_avatar_default() { + global $bp; + + return apply_filters( 'bp_core_avatar_default', $bp->avatar->full->default ); +} + +/** + * Get the default avatar thumb + * + * @package BuddyPress + * @since 1.5 + * + * @return int The URL of the default avatar thumb + */ +function bp_core_avatar_default_thumb() { + global $bp; + + return apply_filters( 'bp_core_avatar_thumb', $bp->avatar->thumb->default ); +} + + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-buddybar.php b/wp-content/plugins/buddypress/bp-core/bp-core-buddybar.php new file mode 100644 index 0000000..0cd1b0b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-buddybar.php @@ -0,0 +1,627 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Adds a navigation item to the main navigation array used in BuddyPress themes. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + */ +function bp_core_new_nav_item( $args = '' ) { + global $bp; + + $defaults = array( + 'name' => false, // Display name for the nav item + 'slug' => false, // URL slug for the nav item + 'item_css_id' => false, // The CSS ID to apply to the HTML of the nav item + 'show_for_displayed_user' => true, // When viewing another user does this nav item show up? + 'site_admin_only' => false, // Can only site admins see this nav item? + 'position' => 99, // Index of where this nav item should be positioned + 'screen_function' => false, // The name of the function to run when clicked + 'default_subnav_slug' => false // The slug of the default subnav item to select when clicked + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // If we don't have the required info we need, don't create this subnav item + if ( empty( $name ) || empty( $slug ) ) + return false; + + // If this is for site admins only and the user is not one, don't create the subnav item + if ( $site_admin_only && !is_super_admin() ) + return false; + + if ( empty( $item_css_id ) ) + $item_css_id = $slug; + + $bp->bp_nav[$slug] = array( + 'name' => $name, + 'slug' => $slug, + 'link' => $bp->loggedin_user->domain . $slug . '/', + 'css_id' => $item_css_id, + 'show_for_displayed_user' => $show_for_displayed_user, + 'position' => $position, + 'screen_function' => &$screen_function + ); + + /*** + * If this nav item is hidden for the displayed user, and + * the logged in user is not the displayed user + * looking at their own profile, don't create the nav item. + */ + if ( !$show_for_displayed_user && !bp_user_has_access() ) + return false; + + /*** + * If the nav item is visible, we are not viewing a user, and this is a root + * component, don't attach the default subnav function so we can display a + * directory or something else. + */ + if ( ( -1 != $position ) && bp_is_root_component( $slug ) && !bp_displayed_user_id() ) + return; + + // Look for current component + if ( bp_is_current_component( $slug ) && !bp_current_action() ) { + if ( !is_object( $screen_function[0] ) ) + add_action( 'bp_screens', $screen_function ); + else + add_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ), 3 ); + + if ( !empty( $default_subnav_slug ) ) + $bp->current_action = apply_filters( 'bp_default_component_subnav', $default_subnav_slug, $r ); + + // Look for current item + } elseif ( bp_is_current_item( $slug ) && !bp_current_action() ) { + if ( !is_object( $screen_function[0] ) ) + add_action( 'bp_screens', $screen_function ); + else + add_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ), 3 ); + + if ( !empty( $default_subnav_slug ) ) + $bp->current_action = apply_filters( 'bp_default_component_subnav', $default_subnav_slug, $r ); + } + + do_action( 'bp_core_new_nav_item', $r, $args, $defaults ); +} + +/** + * Modify the default subnav item to load when a top level nav item is clicked. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + */ +function bp_core_new_nav_default( $args = '' ) { + global $bp; + + $defaults = array( + 'parent_slug' => false, // Slug of the parent + 'screen_function' => false, // The name of the function to run when clicked + 'subnav_slug' => false // The slug of the subnav item to select when clicked + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( $function = $bp->bp_nav[$parent_slug]['screen_function'] ) { + if ( !is_object( $function[0] ) ) + remove_action( 'bp_screens', $function, 3 ); + else + remove_action( 'bp_screens', array( &$function[0], $function[1] ), 3 ); + } + + $bp->bp_nav[$parent_slug]['screen_function'] = &$screen_function; + + if ( $bp->current_component == $parent_slug && !$bp->current_action ) { + if ( !is_object( $screen_function[0] ) ) + add_action( 'bp_screens', $screen_function ); + else + add_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ) ); + + if ( $subnav_slug ) + $bp->current_action = $subnav_slug; + } +} + +/** + * We can only sort nav items by their position integer at a later point in time, once all + * plugins have registered their navigation items. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + */ +function bp_core_sort_nav_items() { + global $bp; + + if ( empty( $bp->bp_nav ) || !is_array( $bp->bp_nav ) ) + return false; + + foreach ( (array)$bp->bp_nav as $slug => $nav_item ) { + if ( empty( $temp[$nav_item['position']]) ) + $temp[$nav_item['position']] = $nav_item; + else { + // increase numbers here to fit new items in. + do { + $nav_item['position']++; + } while ( !empty( $temp[$nav_item['position']] ) ); + + $temp[$nav_item['position']] = $nav_item; + } + } + + ksort( $temp ); + $bp->bp_nav = &$temp; +} +add_action( 'wp_head', 'bp_core_sort_nav_items' ); +add_action( 'admin_head', 'bp_core_sort_nav_items' ); + +/** + * Adds a navigation item to the sub navigation array used in BuddyPress themes. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + */ +function bp_core_new_subnav_item( $args = '' ) { + global $bp; + + $defaults = array( + 'name' => false, // Display name for the nav item + 'slug' => false, // URL slug for the nav item + 'parent_slug' => false, // URL slug of the parent nav item + 'parent_url' => false, // URL of the parent item + 'item_css_id' => false, // The CSS ID to apply to the HTML of the nav item + 'user_has_access' => true, // Can the logged in user see this nav item? + 'site_admin_only' => false, // Can only site admins see this nav item? + 'position' => 90, // Index of where this nav item should be positioned + 'screen_function' => false, // The name of the function to run when clicked + 'link' => '' // The link for the subnav item; optional, not usually required. + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // If we don't have the required info we need, don't create this subnav item + if ( empty( $name ) || empty( $slug ) || empty( $parent_slug ) || empty( $parent_url ) || empty( $screen_function ) ) + return false; + + if ( empty( $link ) ) + $link = $parent_url . $slug; + + // If this is for site admins only and the user is not one, don't create the subnav item + if ( $site_admin_only && !is_super_admin() ) + return false; + + if ( empty( $item_css_id ) ) + $item_css_id = $slug; + + $bp->bp_options_nav[$parent_slug][$slug] = array( + 'name' => $name, + 'link' => trailingslashit( $link ), + 'slug' => $slug, + 'css_id' => $item_css_id, + 'position' => $position, + 'user_has_access' => $user_has_access, + 'screen_function' => &$screen_function + ); + + /** + * The last step is to hook the screen function for the added subnav item. But this only + * needs to be done if this subnav item is the current view, and the user has access to the + * subnav item. We figure out whether we're currently viewing this subnav by checking the + * following two conditions: + * (1) Either: + * (a) the parent slug matches the current_component, or + * (b) the parent slug matches the current_item + * (2) And either: + * (a) the current_action matches $slug, or + * (b) there is no current_action (ie, this is the default subnav for the parent nav) + * and this subnav item is the default for the parent item (which we check by + * comparing this subnav item's screen function with the screen function of the + * parent nav item in $bp->bp_nav). This condition only arises when viewing a + * user, since groups should always have an action set. + */ + + // If we *don't* meet condition (1), return + if ( $bp->current_component != $parent_slug && $bp->current_item != $parent_slug ) + return; + + // If we *do* meet condition (2), then the added subnav item is currently being requested + if ( ( !empty( $bp->current_action ) && $slug == $bp->current_action ) || ( bp_is_user() && empty( $bp->current_action ) && $screen_function == $bp->bp_nav[$parent_slug]['screen_function'] ) ) { + + // Before hooking the screen function, check user access + if ( $user_has_access ) { + if ( !is_object( $screen_function[0] ) ) + add_action( 'bp_screens', $screen_function ); + else + add_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ) ); + } else { + // When the content is off-limits, we handle the situation differently + // depending on whether the current user is logged in + if ( is_user_logged_in() ) { + // Off-limits to this user. Throw an error and redirect to the displayed user's domain + bp_core_no_access( array( + 'message' => __( 'You do not have access to this page.', 'buddypress' ), + 'root' => bp_displayed_user_domain(), + 'redirect' => false + ) ); + } else { + // Not logged in. Allow the user to log in, and attempt to redirect + bp_core_no_access(); + } + } + } +} + +function bp_core_sort_subnav_items() { + global $bp; + + if ( empty( $bp->bp_options_nav ) || !is_array( $bp->bp_options_nav ) ) + return false; + + foreach ( (array)$bp->bp_options_nav as $parent_slug => $subnav_items ) { + if ( !is_array( $subnav_items ) ) + continue; + + foreach ( (array)$subnav_items as $subnav_item ) { + if ( empty( $temp[$subnav_item['position']]) ) + $temp[$subnav_item['position']] = $subnav_item; + else { + // increase numbers here to fit new items in. + do { + $subnav_item['position']++; + } while ( !empty( $temp[$subnav_item['position']] ) ); + + $temp[$subnav_item['position']] = $subnav_item; + } + } + ksort( $temp ); + $bp->bp_options_nav[$parent_slug] = &$temp; + unset( $temp ); + } +} +add_action( 'wp_head', 'bp_core_sort_subnav_items' ); +add_action( 'admin_head', 'bp_core_sort_subnav_items' ); + +/** + * Determines whether a given nav item has subnav items + * + * @package BuddyPress + * @since 1.5 + * + * @param str $nav_item The id of the top-level nav item whose nav items you're checking + * @return bool $has_subnav True if the nav item is found and has subnav items; false otherwise + */ +function bp_nav_item_has_subnav( $nav_item = '' ) { + global $bp; + + if ( !$nav_item ) + $nav_item = bp_current_component(); + + $has_subnav = isset( $bp->bp_options_nav[$nav_item] ) && count( $bp->bp_options_nav[$nav_item] ) > 0; + + return apply_filters( 'bp_nav_item_has_subnav', $has_subnav, $nav_item ); +} + +/** + * Removes a navigation item from the sub navigation array used in BuddyPress themes. + * + * @package BuddyPress Core + * @param $parent_id The id of the parent navigation item. + * @param $slug The slug of the sub navigation item. + */ +function bp_core_remove_nav_item( $parent_id ) { + global $bp; + + // Unset subnav items for this nav item + if ( isset( $bp->bp_options_nav[$parent_id] ) && is_array( $bp->bp_options_nav[$parent_id] ) ) { + foreach( (array)$bp->bp_options_nav[$parent_id] as $subnav_item ) { + bp_core_remove_subnav_item( $parent_id, $subnav_item['slug'] ); + } + } + + if ( $function = $bp->bp_nav[$parent_id]['screen_function'] ) { + if ( !is_object( $function[0] ) ) { + remove_action( 'bp_screens', $function ); + } else { + remove_action( 'bp_screens', array( &$function[0], $function[1] ) ); + } + } + + unset( $bp->bp_nav[$parent_id] ); +} + +/** + * Removes a navigation item from the sub navigation array used in BuddyPress themes. + * + * @package BuddyPress Core + * @param $parent_id The id of the parent navigation item. + * @param $slug The slug of the sub navigation item. + */ +function bp_core_remove_subnav_item( $parent_id, $slug ) { + global $bp; + + $screen_function = ( isset( $bp->bp_options_nav[$parent_id][$slug]['screen_function'] ) ) ? $bp->bp_options_nav[$parent_id][$slug]['screen_function'] : false; + + if ( $screen_function ) { + if ( !is_object( $screen_function[0] ) ) + remove_action( 'bp_screens', $screen_function ); + else + remove_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ) ); + } + + unset( $bp->bp_options_nav[$parent_id][$slug] ); + + if ( isset( $bp->bp_options_nav[$parent_id] ) && !count( $bp->bp_options_nav[$parent_id] ) ) + unset($bp->bp_options_nav[$parent_id]); +} + +/** + * Clear the subnav items for a specific nav item. + * + * @package BuddyPress Core + * @param $parent_id The id of the parent navigation item. + * @global object $bp Global BuddyPress settings object + */ +function bp_core_reset_subnav_items( $parent_slug ) { + global $bp; + + unset( $bp->bp_options_nav[$parent_slug] ); +} + +/** Template functions ********************************************************/ + +function bp_core_admin_bar() { + global $bp; + + if ( defined( 'BP_DISABLE_ADMIN_BAR' ) && BP_DISABLE_ADMIN_BAR ) + return false; + + if ( (int)bp_get_option( 'hide-loggedout-adminbar' ) && !is_user_logged_in() ) + return false; + + $bp->doing_admin_bar = true; + + echo '<div id="wp-admin-bar"><div class="padder">'; + + // **** Do bp-adminbar-logo Actions ******** + do_action( 'bp_adminbar_logo' ); + + echo '<ul class="main-nav">'; + + // **** Do bp-adminbar-menus Actions ******** + do_action( 'bp_adminbar_menus' ); + + echo '</ul>'; + echo "</div></div><!-- #wp-admin-bar -->\n\n"; + + $bp->doing_admin_bar = false; +} + +// **** Default BuddyPress admin bar logo ******** +function bp_adminbar_logo() { + global $bp; + + echo '<a href="' . bp_get_root_domain() . '" id="admin-bar-logo">' . get_blog_option( bp_get_root_blog_id(), 'blogname' ) . '</a>'; +} + +// **** "Log In" and "Sign Up" links (Visible when not logged in) ******** +function bp_adminbar_login_menu() { + global $bp; + + if ( is_user_logged_in() ) + return false; + + echo '<li class="bp-login no-arrow"><a href="' . bp_get_root_domain() . '/wp-login.php?redirect_to=' . urlencode( bp_get_root_domain() ) . '">' . __( 'Log In', 'buddypress' ) . '</a></li>'; + + // Show "Sign Up" link if user registrations are allowed + if ( bp_get_signup_allowed() ) + echo '<li class="bp-signup no-arrow"><a href="' . bp_get_signup_page(false) . '">' . __( 'Sign Up', 'buddypress' ) . '</a></li>'; +} + + +// **** "My Account" Menu ****** +function bp_adminbar_account_menu() { + global $bp; + + if ( !$bp->bp_nav || !is_user_logged_in() ) + return false; + + echo '<li id="bp-adminbar-account-menu"><a href="' . bp_loggedin_user_domain() . '">'; + echo __( 'My Account', 'buddypress' ) . '</a>'; + echo '<ul>'; + + // Loop through each navigation item + $counter = 0; + foreach( (array)$bp->bp_nav as $nav_item ) { + $alt = ( 0 == $counter % 2 ) ? ' class="alt"' : ''; + + if ( -1 == $nav_item['position'] ) + continue; + + echo '<li' . $alt . '>'; + echo '<a id="bp-admin-' . $nav_item['css_id'] . '" href="' . $nav_item['link'] . '">' . $nav_item['name'] . '</a>'; + + if ( isset( $bp->bp_options_nav[$nav_item['slug']] ) && is_array( $bp->bp_options_nav[$nav_item['slug']] ) ) { + echo '<ul>'; + $sub_counter = 0; + + foreach( (array)$bp->bp_options_nav[$nav_item['slug']] as $subnav_item ) { + $link = $subnav_item['link']; + $name = $subnav_item['name']; + + if ( isset( $bp->displayed_user->domain ) ) + $link = str_replace( $bp->displayed_user->domain, $bp->loggedin_user->domain, $subnav_item['link'] ); + + if ( isset( $bp->displayed_user->userdata->user_login ) ) + $name = str_replace( $bp->displayed_user->userdata->user_login, $bp->loggedin_user->userdata->user_login, $subnav_item['name'] ); + + $alt = ( 0 == $sub_counter % 2 ) ? ' class="alt"' : ''; + echo '<li' . $alt . '><a id="bp-admin-' . $subnav_item['css_id'] . '" href="' . $link . '">' . $name . '</a></li>'; + $sub_counter++; + } + echo '</ul>'; + } + + echo '</li>'; + + $counter++; + } + + $alt = ( 0 == $counter % 2 ) ? ' class="alt"' : ''; + + echo '<li' . $alt . '><a id="bp-admin-logout" class="logout" href="' . wp_logout_url( home_url() ) . '">' . __( 'Log Out', 'buddypress' ) . '</a></li>'; + echo '</ul>'; + echo '</li>'; +} + +function bp_adminbar_thisblog_menu() { + if ( current_user_can( 'edit_posts' ) ) { + echo '<li id="bp-adminbar-thisblog-menu"><a href="' . admin_url() . '">'; + _e( 'Dashboard', 'buddypress' ); + echo '</a>'; + echo '<ul>'; + + echo '<li class="alt"><a href="' . admin_url() . 'post-new.php">' . __( 'New Post', 'buddypress' ) . '</a></li>'; + echo '<li><a href="' . admin_url() . 'edit.php">' . __( 'Manage Posts', 'buddypress' ) . '</a></li>'; + echo '<li class="alt"><a href="' . admin_url() . 'edit-comments.php">' . __( 'Manage Comments', 'buddypress' ) . '</a></li>'; + + do_action( 'bp_adminbar_thisblog_items' ); + + echo '</ul>'; + echo '</li>'; + } +} + + +// **** "Random" Menu (visible when not logged in) ******** +function bp_adminbar_random_menu() { + global $bp; ?> + + <li class="align-right" id="bp-adminbar-visitrandom-menu"> + <a href="#"><?php _e( 'Visit', 'buddypress' ) ?></a> + <ul class="random-list"> + <li><a href="<?php echo trailingslashit( bp_get_root_domain() . '/' . bp_get_members_root_slug() ) . '?random-member' ?>" rel="nofollow"><?php _e( 'Random Member', 'buddypress' ) ?></a></li> + + <?php if ( bp_is_active( 'groups' ) ) : ?> + + <li class="alt"><a href="<?php echo trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() ) . '?random-group' ?>" rel="nofollow"><?php _e( 'Random Group', 'buddypress' ) ?></a></li> + + <?php endif; ?> + + <?php if ( is_multisite() && bp_is_active( 'blogs' ) ) : ?> + + <li><a href="<?php echo trailingslashit( bp_get_root_domain() . '/' . bp_get_blogs_root_slug() ) . '?random-blog' ?>" rel="nofollow"><?php _e( 'Random Site', 'buddypress' ) ?></a></li> + + <?php endif; ?> + + <?php do_action( 'bp_adminbar_random_menu' ) ?> + + </ul> + </li> + + <?php +} + +/** + * Retrieve the admin bar display preference of a user based on context. + * + * This is a direct copy of WP's private _get_admin_bar_pref() + * + * @since 1.5.0 + * + * @param string $context Context of this preference check, either 'admin' or 'front'. + * @param int $user Optional. ID of the user to check, defaults to 0 for current user. + * + * @uses get_user_option() + * + * @return bool Whether the admin bar should be showing for this user. + */ +function bp_get_admin_bar_pref( $context, $user = 0 ) { + $pref = get_user_option( "show_admin_bar_{$context}", $user ); + if ( false === $pref ) + return true; + + return 'true' === $pref; +} + +/** + * Handle the Admin Bar/BuddyBar business + * + * @since 1.2.0 + * + * @global string $wp_version + * @uses bp_get_option() + * @uses is_user_logged_in() + * @uses bp_use_wp_admin_bar() + * @uses show_admin_bar() + * @uses add_action() To hook 'bp_adminbar_logo' to 'bp_adminbar_logo' + * @uses add_action() To hook 'bp_adminbar_login_menu' to 'bp_adminbar_menus' + * @uses add_action() To hook 'bp_adminbar_account_menu' to 'bp_adminbar_menus' + * @uses add_action() To hook 'bp_adminbar_thisblog_menu' to 'bp_adminbar_menus' + * @uses add_action() To hook 'bp_adminbar_random_menu' to 'bp_adminbar_menus' + * @uses add_action() To hook 'bp_core_admin_bar' to 'wp_footer' + * @uses add_action() To hook 'bp_core_admin_bar' to 'admin_footer' + */ +function bp_core_load_admin_bar() { + global $wp_version; + + // Don't show if admin bar is disabled for non-logged in users + if ( (int) bp_get_option( 'hide-loggedout-adminbar' ) && !is_user_logged_in() ) + return; + + // Show the WordPress admin bar + if ( bp_use_wp_admin_bar() && $wp_version >= 3.1 ) { + // Respect user's admin bar display preferences + if ( bp_get_admin_bar_pref( 'front', bp_loggedin_user_id() ) || bp_get_admin_bar_pref( 'admin', bp_loggedin_user_id() ) ) + return; + + show_admin_bar( true ); + + // Hide the WordPress admin bar + } elseif ( !bp_use_wp_admin_bar() ) { + + // Keep the WP admin bar from loading + show_admin_bar( false ); + + // Actions used to build the BP admin bar + add_action( 'bp_adminbar_logo', 'bp_adminbar_logo' ); + add_action( 'bp_adminbar_menus', 'bp_adminbar_login_menu', 2 ); + add_action( 'bp_adminbar_menus', 'bp_adminbar_account_menu', 4 ); + add_action( 'bp_adminbar_menus', 'bp_adminbar_thisblog_menu', 6 ); + add_action( 'bp_adminbar_menus', 'bp_adminbar_random_menu', 100 ); + + // Actions used to append BP admin bar to footer + add_action( 'wp_footer', 'bp_core_admin_bar', 8 ); + add_action( 'admin_footer', 'bp_core_admin_bar' ); + } +} + +/** + * Handle the BuddyBar CSS + */ +function bp_core_load_buddybar_css() { + if ( bp_use_wp_admin_bar() || ( (int) bp_get_option( 'hide-loggedout-adminbar' ) && !is_user_logged_in() ) || ( defined( 'BP_DISABLE_ADMIN_BAR' ) && BP_DISABLE_ADMIN_BAR ) ) + return; + + if ( file_exists( get_stylesheet_directory() . '/_inc/css/adminbar.css' ) ) // Backwards compatibility + $stylesheet = get_stylesheet_directory_uri() . '/_inc/css/adminbar.css'; + elseif ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) + $stylesheet = BP_PLUGIN_URL . '/bp-core/css/buddybar.dev.css'; + else + $stylesheet = BP_PLUGIN_URL . '/bp-core/css/buddybar.css'; + + wp_enqueue_style( 'bp-admin-bar', apply_filters( 'bp_core_admin_bar_css', $stylesheet ), array(), '20110723' ); + + if ( !is_rtl() ) + return; + + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) + $stylesheet = BP_PLUGIN_URL . '/bp-core/css/buddybar-rtl.dev.css'; + else + $stylesheet = BP_PLUGIN_URL . '/bp-core/css/buddybar-rtl.css'; + + wp_enqueue_style( 'bp-admin-bar-rtl', apply_filters( 'bp_core_buddybar_rtl_css', $stylesheet ), array( 'bp-admin-bar' ), '20110723' ); +} +add_action( 'bp_init', 'bp_core_load_buddybar_css' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-cache.php b/wp-content/plugins/buddypress/bp-core/bp-core-cache.php new file mode 100644 index 0000000..0c30cb1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-cache.php @@ -0,0 +1,51 @@ +<?php +/** + * Caching functions handle the clearing of cached objects and pages on specific + * actions throughout BuddyPress. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * REQUIRES WP-SUPER-CACHE + * + * When wp-super-cache is installed this function will clear cached pages + * so that success/error messages are not cached, or time sensitive content. + * + * @package BuddyPress Core + */ +function bp_core_clear_cache() { + global $cache_path, $cache_filename; + + if ( function_exists( 'prune_super_cache' ) ) { + do_action( 'bp_core_clear_cache' ); + return prune_super_cache( $cache_path, true ); + } +} + +/** + * Add's 'bp' to global group of network wide cachable objects + * + * @package BuddyPress Core + */ +function bp_core_add_global_group() { + wp_cache_init(); + wp_cache_add_global_groups( array( 'bp' ) ); +} +add_action( 'bp_loaded', 'bp_core_add_global_group' ); + +/** + * Clears all cached objects for a user, or a user is part of. + * + * @package BuddyPress Core + */ +function bp_core_clear_user_object_cache( $user_id ) { + wp_cache_delete( 'bp_user_' . $user_id, 'bp' ); +} + +// List actions to clear super cached pages on, if super cache is installed +add_action( 'wp_login', 'bp_core_clear_cache' ); +add_action( 'bp_core_render_notice', 'bp_core_clear_cache' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-catchuri.php b/wp-content/plugins/buddypress/bp-core/bp-core-catchuri.php new file mode 100644 index 0000000..bcc5f68 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-catchuri.php @@ -0,0 +1,466 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/* +Based on contributions from: Chris Taylor - http://www.stillbreathing.co.uk/ +Modified for BuddyPress by: Andy Peatling - http://apeatling.wordpress.com/ +*/ + +/** + * Analyzes the URI structure and breaks it down into parts for use in code. + * The idea is that BuddyPress can use complete custom friendly URI's without the + * user having to add new re-write rules. + * + * Future custom components would then be able to use their own custom URI structure. + * + * @package BuddyPress Core + * @since BuddyPress (r100) + * + * The URI's are broken down as follows: + * - http:// domain.com / members / andy / [current_component] / [current_action] / [action_variables] / [action_variables] / ... + * - OUTSIDE ROOT: http:// domain.com / sites / buddypress / members / andy / [current_component] / [current_action] / [action_variables] / [action_variables] / ... + * + * Example: + * - http://domain.com/members/andy/profile/edit/group/5/ + * - $bp->current_component: string 'xprofile' + * - $bp->current_action: string 'edit' + * - $bp->action_variables: array ['group', 5] + * + */ +function bp_core_set_uri_globals() { + global $bp, $bp_unfiltered_uri, $bp_unfiltered_uri_offset; + global $current_blog, $wpdb; + + // Create global component, action, and item variables + $bp->current_component = $bp->current_action = $bp->current_item =''; + $bp->action_variables = $bp->displayed_user->id = ''; + + // Don't catch URIs on non-root blogs unless multiblog mode is on + if ( !bp_is_root_blog() && !bp_is_multiblog_mode() ) + return false; + + // Fetch all the WP page names for each component + if ( empty( $bp->pages ) ) + $bp->pages = bp_core_get_directory_pages(); + + // Ajax or not? + if ( strpos( $_SERVER['REQUEST_URI'], 'wp-load.php' ) ) + $path = bp_core_referrer(); + else + $path = esc_url( $_SERVER['REQUEST_URI'] ); + + // Filter the path + $path = apply_filters( 'bp_uri', $path ); + + // Take GET variables off the URL to avoid problems, + // they are still registered in the global $_GET variable + if ( $noget = substr( $path, 0, strpos( $path, '?' ) ) ) + $path = $noget; + + // Fetch the current URI and explode each part separated by '/' into an array + $bp_uri = explode( '/', $path ); + + // Loop and remove empties + foreach ( (array)$bp_uri as $key => $uri_chunk ) + if ( empty( $bp_uri[$key] ) ) unset( $bp_uri[$key] ); + + // Running off blog other than root + if ( is_multisite() && !is_subdomain_install() && ( bp_is_multiblog_mode() || 1 != bp_get_root_blog_id() ) ) { + + // Any subdirectory names must be removed from $bp_uri. + // This includes two cases: (1) when WP is installed in a subdirectory, + // and (2) when BP is running on secondary blog of a subdirectory + // multisite installation. Phew! + if ( $chunks = explode( '/', $current_blog->path ) ) { + foreach( $chunks as $key => $chunk ) { + $bkey = array_search( $chunk, $bp_uri ); + + if ( $bkey !== false ) { + unset( $bp_uri[$bkey] ); + } + + $bp_uri = array_values( $bp_uri ); + } + } + } + + // Set the indexes, these are incresed by one if we are not on a VHOST install + $component_index = 0; + $action_index = $component_index + 1; + + // Get site path items + $paths = explode( '/', bp_core_get_site_path() ); + + // Take empties off the end of path + if ( empty( $paths[count( $paths ) - 1] ) ) + array_pop( $paths ); + + // Take empties off the start of path + if ( empty( $paths[0] ) ) + array_shift( $paths ); + + // Unset URI indices if they intersect with the paths + foreach ( (array) $bp_uri as $key => $uri_chunk ) { + if ( in_array( $uri_chunk, $paths ) ) { + unset( $bp_uri[$key] ); + } + } + + // Reset the keys by merging with an empty array + $bp_uri = array_merge( array(), $bp_uri ); + + // If a component is set to the front page, force its name into $bp_uri + // so that $current_component is populated (unless a specific WP post is being requested + // via a URL parameter, usually signifying Preview mode) + if ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_on_front' ) && empty( $bp_uri ) && empty( $_GET['p'] ) && empty( $_GET['page_id'] ) ) { + $post = get_post( get_option( 'page_on_front' ) ); + if ( !empty( $post ) ) { + $bp_uri[0] = $post->post_name; + } + } + + // Keep the unfiltered URI safe + $bp_unfiltered_uri = $bp_uri; + + // Get slugs of pages into array + foreach ( (array) $bp->pages as $page_key => $bp_page ) + $key_slugs[$page_key] = trailingslashit( '/' . $bp_page->slug ); + + // Bail if keyslugs are empty, as BP is not setup correct + if ( empty( $key_slugs ) ) + return; + + // Loop through page slugs and look for exact match to path + foreach ( $key_slugs as $key => $slug ) { + if ( $slug == $path ) { + $match = $bp->pages->{$key}; + $match->key = $key; + $matches[] = 1; + break; + } + } + + // No exact match, so look for partials + if ( empty( $match ) ) { + + // Loop through each page in the $bp->pages global + foreach ( (array) $bp->pages as $page_key => $bp_page ) { + + // Look for a match (check members first) + if ( in_array( $bp_page->name, (array) $bp_uri ) ) { + + // Match found, now match the slug to make sure. + $uri_chunks = explode( '/', $bp_page->slug ); + + // Loop through uri_chunks + foreach ( (array) $uri_chunks as $key => $uri_chunk ) { + + // Make sure chunk is in the correct position + if ( !empty( $bp_uri[$key] ) && ( $bp_uri[$key] == $uri_chunk ) ) { + $matches[] = 1; + + // No match + } else { + $matches[] = 0; + } + } + + // Have a match + if ( !in_array( 0, (array) $matches ) ) { + $match = $bp_page; + $match->key = $page_key; + break; + }; + + // Unset matches + unset( $matches ); + } + + // Unset uri chunks + unset( $uri_chunks ); + } + } + + // URLs with BP_ENABLE_ROOT_PROFILES enabled won't be caught above + if ( empty( $matches ) && defined( 'BP_ENABLE_ROOT_PROFILES' ) && BP_ENABLE_ROOT_PROFILES ) { + + // Make sure there's a user corresponding to $bp_uri[0] + if ( !empty( $bp->pages->members ) && !empty( $bp_uri[0] ) && $root_profile = get_user_by( 'login', $bp_uri[0] ) ) { + + // Force BP to recognize that this is a members page + $matches[] = 1; + $match = $bp->pages->members; + $match->key = 'members'; + + // Without the 'members' URL chunk, WordPress won't know which page to load + // This filter intercepts the WP query and tells it to load the members page + add_filter( 'request', create_function( '$query_args', '$query_args["pagename"] = "' . $match->name . '"; return $query_args;' ) ); + } + } + + // Search doesn't have an associated page, so we check for it separately + if ( !empty( $bp_uri[0] ) && ( bp_get_search_slug() == $bp_uri[0] ) ) { + $matches[] = 1; + $match = new stdClass; + $match->key = 'search'; + $match->slug = bp_get_search_slug(); + } + + // This is not a BuddyPress page, so just return. + if ( !isset( $matches ) ) + return false; + + // Find the offset. With $root_profile set, we fudge the offset down so later parsing works + $slug = !empty ( $match ) ? explode( '/', $match->slug ) : ''; + $uri_offset = empty( $root_profile ) ? 0 : -1; + + // Rejig the offset + if ( !empty( $slug ) && ( 1 < count( $slug ) ) ) { + array_pop( $slug ); + $uri_offset = count( $slug ); + } + + // Global the unfiltered offset to use in bp_core_load_template(). + // To avoid PHP warnings in bp_core_load_template(), it must always be >= 0 + $bp_unfiltered_uri_offset = $uri_offset >= 0 ? $uri_offset : 0; + + // We have an exact match + if ( isset( $match->key ) ) { + + // Set current component to matched key + $bp->current_component = $match->key; + + // If members component, do more work to find the actual component + if ( 'members' == $match->key ) { + + // Viewing a specific user + if ( !empty( $bp_uri[$uri_offset + 1] ) ) { + + // Switch the displayed_user based on compatbility mode + if ( bp_is_username_compatibility_mode() ) + $bp->displayed_user->id = (int) bp_core_get_userid( urldecode( $bp_uri[$uri_offset + 1] ) ); + else + $bp->displayed_user->id = (int) bp_core_get_userid_from_nicename( urldecode( $bp_uri[$uri_offset + 1] ) ); + + if ( empty( $bp->displayed_user->id ) ) { + // Prevent components from loading their templates + $bp->current_component = ''; + + bp_do_404(); + return; + } + + // If the displayed user is marked as a spammer, 404 (unless logged- + // in user is a super admin) + if ( !empty( $bp->displayed_user->id ) && bp_core_is_user_spammer( $bp->displayed_user->id ) ) { + if ( is_super_admin() ) { + bp_core_add_message( __( 'This user has been marked as a spammer. Only site admins can view this profile.', 'buddypress' ), 'error' ); + } else { + bp_do_404(); + return; + } + } + + // Bump the offset + if ( isset( $bp_uri[$uri_offset + 2] ) ) { + $bp_uri = array_merge( array(), array_slice( $bp_uri, $uri_offset + 2 ) ); + $bp->current_component = $bp_uri[0]; + + // No component, so default will be picked later + } else { + $bp_uri = array_merge( array(), array_slice( $bp_uri, $uri_offset + 2 ) ); + $bp->current_component = ''; + } + + // Reset the offset + $uri_offset = 0; + } + } + } + + // Set the current action + $bp->current_action = isset( $bp_uri[$uri_offset + 1] ) ? $bp_uri[$uri_offset + 1] : ''; + + // Slice the rest of the $bp_uri array and reset offset + $bp_uri = array_slice( $bp_uri, $uri_offset + 2 ); + $uri_offset = 0; + + // Set the entire URI as the action variables, we will unset the current_component and action in a second + $bp->action_variables = $bp_uri; + + // Remove the username from action variables if this is not a VHOST install + // @todo - move or remove this all together + if ( defined( 'VHOST' ) && ( 'no' == VHOST ) && empty( $bp->current_component ) ) + array_shift( $bp_uri ); + + // Reset the keys by merging with an empty array + $bp->action_variables = array_merge( array(), $bp->action_variables ); +} + +/** + * bp_core_load_template() + * + * Load a specific template file with fallback support. + * + * Example: + * bp_core_load_template( 'members/index' ); + * Loads: + * wp-content/themes/[activated_theme]/members/index.php + * + * @package BuddyPress Core + * @param $username str Username to check. + * @return false|int The user ID of the matched user, or false. + */ +function bp_core_load_template( $templates ) { + global $post, $bp, $wpdb, $wp_query, $bp_unfiltered_uri, $bp_unfiltered_uri_offset; + + // Determine if the root object WP page exists for this request (TODO: is there an API function for this? + if ( !empty( $bp_unfiltered_uri_offset ) && !$page_exists = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_name = %s", $bp_unfiltered_uri[$bp_unfiltered_uri_offset] ) ) ) + return false; + + // Set the root object as the current wp_query-ied item + $object_id = 0; + foreach ( (array)$bp->pages as $page ) { + if ( isset( $bp_unfiltered_uri[$bp_unfiltered_uri_offset] ) && $page->name == $bp_unfiltered_uri[$bp_unfiltered_uri_offset] ) { + $object_id = $page->id; + } + } + + // Make the queried/post object an actual valid page + if ( !empty( $object_id ) ) { + $wp_query->queried_object = &get_post( $object_id ); + $wp_query->queried_object_id = $object_id; + $post = $wp_query->queried_object; + } + + // Fetch each template and add the php suffix + foreach ( (array)$templates as $template ) + $filtered_templates[] = $template . '.php'; + + // Filter the template locations so that plugins can alter where they are located + if ( $located_template = apply_filters( 'bp_located_template', locate_template( (array) $filtered_templates, false ), $filtered_templates ) ) { + // Template was located, lets set this as a valid page and not a 404. + status_header( 200 ); + $wp_query->is_page = true; + $wp_query->is_404 = false; + + load_template( apply_filters( 'bp_load_template', $located_template ) ); + } + + // Kill any other output after this. + die; +} + +/** + * bp_core_catch_profile_uri() + * + * If the extended profiles component is not installed we still need + * to catch the /profile URI's and display whatever we have installed. + * + */ +function bp_core_catch_profile_uri() { + global $bp; + + if ( !bp_is_active( 'xprofile' ) ) + bp_core_load_template( apply_filters( 'bp_core_template_display_profile', 'members/single/home' ) ); +} + +/** + * Catches invalid access to BuddyPress pages and redirects them accordingly. + * + * @package BuddyPress Core + * @since 1.5 + */ +function bp_core_catch_no_access() { + global $bp, $bp_no_status_set, $wp_query; + + // If bp_core_redirect() and $bp_no_status_set is true, + // we are redirecting to an accessible page, so skip this check. + if ( $bp_no_status_set ) + return false; + + if ( !isset( $wp_query->queried_object ) && !bp_is_blog_page() ) { + bp_do_404(); + } +} +add_action( 'wp', 'bp_core_catch_no_access' ); + +/** + * Redirects a user to login for BP pages that require access control and adds an error message (if + * one is provided). + * If authenticated, redirects user back to requested content by default. + * + * @package BuddyPress Core + * @since 1.5 + */ +function bp_core_no_access( $args = '' ) { + global $bp; + + $defaults = array( + 'mode' => '1', // 1 = $root, 2 = wp-login.php + 'message' => __( 'You must log in to access the page you requested.', 'buddypress' ), + 'redirect' => wp_guess_url(), // the URL you get redirected to when a user successfully logs in + 'root' => $bp->root_domain // the landing page you get redirected to when a user doesn't have access + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // Apply filters to these variables + $mode = apply_filters( 'bp_no_access_mode', $mode, $root, $redirect, $message ); + $redirect = apply_filters( 'bp_no_access_redirect', $redirect, $root, $message, $mode ); + $root = trailingslashit( apply_filters( 'bp_no_access_root', $root, $redirect, $message, $mode ) ); + $message = apply_filters( 'bp_no_access_message', $message, $root, $redirect, $mode ); + + switch ( $mode ) { + // Option to redirect to wp-login.php + // Error message is displayed with bp_core_no_access_wp_login_error() + case 2 : + if ( $redirect ) { + bp_core_redirect( wp_login_url( $redirect ) . '&action=bpnoaccess' ); + } else { + bp_core_redirect( $root ); + } + + break; + + // Redirect to root with "redirect_to" parameter + // Error message is displayed with bp_core_add_message() + case 1 : + default : + if ( $redirect ) { + $url = add_query_arg( 'redirect_to', urlencode( $redirect ), $root ); + } else { + $url = $root; + } + + if ( $message ) { + bp_core_add_message( $message, 'error' ); + } + + bp_core_redirect( $url ); + + break; + } +} + +/** + * Adds an error message to wp-login.php. + * Hooks into the "bpnoaccess" action defined in bp_core_no_access(). + * + * @package BuddyPress Core + * @global $error + * @since 1.5 + */ +function bp_core_no_access_wp_login_error() { + global $error; + + $error = apply_filters( 'bp_wp_login_error', __( 'You must log in to access the page you requested.', 'buddypress' ), $_REQUEST['redirect_to'] ); + + // shake shake shake! + add_action( 'login_head', 'wp_shake_js', 12 ); +} +add_action( 'login_form_bpnoaccess', 'bp_core_no_access_wp_login_error' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-classes.php b/wp-content/plugins/buddypress/bp-core/bp-core-classes.php new file mode 100644 index 0000000..2bd1827 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-classes.php @@ -0,0 +1,1254 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * BP_Core_User class can be used by any component. It will fetch useful + * details for any user when provided with a user_id. + * + * Example: + * $user = new BP_Core_User( $user_id ); + * $user_avatar = $user->avatar; + * $user_email = $user->email; + * $user_status = $user->status; + * etc. + * + * @package BuddyPress Core + */ +class BP_Core_User { + + /** + * ID of the user which the object relates to. + * + * @var integer + */ + var $id; + + /** + * The URL to the full size of the avatar for the user. + * + * @var string + */ + var $avatar; + + /** + * The URL to the thumb size of the avatar for the user. + * + * @var string + */ + var $avatar_thumb; + + /** + * The URL to the mini size of the avatar for the user. + * + * @var string + */ + var $avatar_mini; + + /** + * The full name of the user + * + * @var string + */ + var $fullname; + + /** + * The email for the user. + * + * @var string + */ + var $email; + + /** + * The absolute url for the user's profile. + * + * @var string + */ + var $user_url; + + /** + * The HTML for the user link, with the link text being the user's full name. + * + * @var string + */ + var $user_link; + + /** + * Contains a formatted string when the last time the user was active. + * + * Example: "active 2 hours and 50 minutes ago" + * + * @var string + */ + var $last_active; + + /* Extras */ + + /** + * The total number of "Friends" the user has on site. + * + * @var integer + */ + var $total_friends; + + /** + * The total number of blog posts posted by the user + * + * @var integer + * @deprecated No longer used + */ + var $total_blogs; + + /** + * The total number of groups the user is a part of. + * + * Example: "1 group", "2 groups" + * + * @var string + */ + var $total_groups; + + /** + * PHP4 constructor. + * + * @see BP_Core_User::__construct() + */ + function bp_core_user( $user_id, $populate_extras = false ) { + $this->__construct( $user_id, $populate_extras ); + } + + /** + * Class constructor. + * + * @param integer $user_id The ID for the user + * @param boolean $populate_extras Whether to fetch extra information such as group/friendship counts or not. + */ + function __construct( $user_id, $populate_extras = false ) { + if ( $user_id ) { + $this->id = $user_id; + $this->populate(); + + if ( $populate_extras ) + $this->populate_extras(); + } + } + + /** + * Populate the instantiated class with data based on the User ID provided. + * + * @global object $bp Global BuddyPress settings object + * @uses bp_core_get_userurl() Returns the URL with no HTML markup for a user based on their user id + * @uses bp_core_get_userlink() Returns a HTML formatted link for a user with the user's full name as the link text + * @uses bp_core_get_user_email() Returns the email address for the user based on user ID + * @uses bp_get_user_meta() BP function returns the value of passed usermeta name from usermeta table + * @uses bp_core_fetch_avatar() Returns HTML formatted avatar for a user + * @uses bp_profile_last_updated_date() Returns the last updated date for a user. + */ + function populate() { + global $bp; + + if ( bp_is_active( 'xprofile' ) ) + $this->profile_data = $this->get_profile_data(); + + if ( !empty( $this->profile_data ) ) { + $full_name_field_name = bp_xprofile_fullname_field_name(); + + $this->user_url = bp_core_get_user_domain( $this->id, $this->profile_data['user_nicename'], $this->profile_data['user_login'] ); + $this->fullname = esc_attr( $this->profile_data[$full_name_field_name]['field_data'] ); + $this->user_link = "<a href='{$this->user_url}' title='{$this->fullname}'>{$this->fullname}</a>"; + $this->email = esc_attr( $this->profile_data['user_email'] ); + } else { + $this->user_url = bp_core_get_user_domain( $this->id ); + $this->user_link = bp_core_get_userlink( $this->id ); + $this->fullname = esc_attr( bp_core_get_user_displayname( $this->id ) ); + $this->email = esc_attr( bp_core_get_user_email( $this->id ) ); + } + + // Cache a few things that are fetched often + wp_cache_set( 'bp_user_fullname_' . $this->id, $this->fullname, 'bp' ); + wp_cache_set( 'bp_user_email_' . $this->id, $this->email, 'bp' ); + wp_cache_set( 'bp_user_url_' . $this->id, $this->user_url, 'bp' ); + + $this->avatar = bp_core_fetch_avatar( array( 'item_id' => $this->id, 'type' => 'full' ) ); + $this->avatar_thumb = bp_core_fetch_avatar( array( 'item_id' => $this->id, 'type' => 'thumb' ) ); + $this->avatar_mini = bp_core_fetch_avatar( array( 'item_id' => $this->id, 'type' => 'thumb', 'width' => 30, 'height' => 30 ) ); + $this->last_active = bp_core_get_last_activity( bp_get_user_meta( $this->id, 'last_activity', true ), __( 'active %s', 'buddypress' ) ); + } + + /** + * Populates extra fields such as group and friendship counts. + * + * @global object $bp Global BuddyPress settings object + */ + function populate_extras() { + global $bp; + + if ( bp_is_active( 'friends' ) ) + $this->total_friends = BP_Friends_Friendship::total_friend_count( $this->id ); + + if ( bp_is_active( 'groups' ) ) { + $this->total_groups = BP_Groups_Member::total_group_count( $this->id ); + $this->total_groups = sprintf( _n( '%d group', '%d groups', $this->total_groups ), $this->total_groups ); + } + } + + function get_profile_data() { + return BP_XProfile_ProfileData::get_all_for_user( $this->id ); + } + + /** Static Functions ******************************************************/ + + function get_users( $type, $limit = 0, $page = 1, $user_id = 0, $include = false, $search_terms = false, $populate_extras = true, $exclude = false, $meta_key = false, $meta_value = false ) { + global $wpdb, $bp; + + $sql = array(); + + $sql['select_main'] = "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.display_name, u.user_email"; + + if ( 'active' == $type || 'online' == $type || 'newest' == $type ) + $sql['select_active'] = ", um.meta_value as last_activity"; + + if ( 'popular' == $type ) + $sql['select_popular'] = ", um.meta_value as total_friend_count"; + + if ( 'alphabetical' == $type ) + $sql['select_alpha'] = ", pd.value as fullname"; + + if ( $meta_key ) { + $sql['select_meta'] = ", umm.meta_key"; + + if ( $meta_value ) + $sql['select_meta'] .= ", umm.meta_value"; + } + + $sql['from'] = "FROM $wpdb->users u LEFT JOIN $wpdb->usermeta um ON um.user_id = u.ID"; + + // We search against xprofile fields, so we must join the table + if ( $search_terms && bp_is_active( 'xprofile' ) ) + $sql['join_profiledata_search'] = "LEFT JOIN {$bp->profile->table_name_data} spd ON u.ID = spd.user_id"; + + // Alphabetical sorting is done by the xprofile Full Name field + if ( 'alphabetical' == $type ) + $sql['join_profiledata_alpha'] = "LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id"; + + if ( $meta_key ) + $sql['join_meta'] = "LEFT JOIN {$wpdb->usermeta} umm ON umm.user_id = u.ID"; + + $sql['where'] = 'WHERE ' . bp_core_get_status_sql( 'u.' ); + + if ( 'active' == $type || 'online' == $type || 'newest' == $type ) + $sql['where_active'] = $wpdb->prepare( "AND um.meta_key = %s", bp_get_user_meta_key( 'last_activity' ) ); + + if ( 'popular' == $type ) + $sql['where_popular'] = $wpdb->prepare( "AND um.meta_key = %s", bp_get_user_meta_key( 'total_friend_count' ) ); + + if ( 'online' == $type ) + $sql['where_online'] = "AND DATE_ADD( um.meta_value, INTERVAL 5 MINUTE ) >= UTC_TIMESTAMP()"; + + if ( 'alphabetical' == $type ) + $sql['where_alpha'] = "AND pd.field_id = 1"; + + if ( !empty( $exclude ) ) + $sql['where_exclude'] = "AND u.ID NOT IN ({$exclude})"; + + if ( $include ) { + if ( is_array( $include ) ) + $uids = $wpdb->escape( implode( ',', (array)$include ) ); + else + $uids = $wpdb->escape( $include ); + + if ( !empty( $uids ) ) + $sql['where_users'] = "AND u.ID IN ({$uids})"; + } + + else if ( $user_id && bp_is_active( 'friends' ) ) { + $friend_ids = friends_get_friend_user_ids( $user_id ); + $friend_ids = $wpdb->escape( implode( ',', (array)$friend_ids ) ); + + if ( !empty( $friend_ids ) ) + $sql['where_friends'] = "AND u.ID IN ({$friend_ids})"; + + // User has no friends, return false since there will be no users to fetch. + else + return false; + + } + + if ( $search_terms && bp_is_active( 'xprofile' ) ) { + $search_terms = like_escape( $wpdb->escape( $search_terms ) ); + $sql['where_searchterms'] = "AND spd.value LIKE '%%$search_terms%%'"; + } + + if ( $meta_key ) { + $sql['where_meta'] = $wpdb->prepare( " AND umm.meta_key = %s", $meta_key ); + + // If a meta value is provided, match it + if ( $meta_value ) { + $sql['where_meta'] .= $wpdb->prepare( " AND umm.meta_value = %s", $meta_value ); + } + } + + switch ( $type ) { + case 'active': case 'online': default: + $sql[] = "ORDER BY um.meta_value DESC"; + break; + case 'newest': + $sql[] = "ORDER BY u.ID DESC"; + break; + case 'alphabetical': + $sql[] = "ORDER BY pd.value ASC"; + break; + case 'random': + $sql[] = "ORDER BY rand()"; + break; + case 'popular': + $sql[] = "ORDER BY CONVERT(um.meta_value, SIGNED) DESC"; + break; + } + + if ( $limit && $page ) + $sql['pagination'] = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + // Get paginated results + $paged_users_sql = apply_filters( 'bp_core_get_paged_users_sql', join( ' ', (array)$sql ), $sql ); + $paged_users = $wpdb->get_results( $paged_users_sql ); + + // Re-jig the SQL so we can get the total user count + unset( $sql['select_main'] ); + + if ( !empty( $sql['select_active'] ) ) + unset( $sql['select_active'] ); + + if ( !empty( $sql['select_popular'] ) ) + unset( $sql['select_popular'] ); + + if ( !empty( $sql['select_alpha'] ) ) + unset( $sql['select_alpha'] ); + + if ( !empty( $sql['pagination'] ) ) + unset( $sql['pagination'] ); + + array_unshift( $sql, "SELECT COUNT(DISTINCT u.ID)" ); + + // Get total user results + $total_users_sql = apply_filters( 'bp_core_get_total_users_sql', join( ' ', (array)$sql ), $sql ); + $total_users = $wpdb->get_var( $total_users_sql ); + + /*** + * Lets fetch some other useful data in a separate queries, this will be faster than querying the data for every user in a list. + * We can't add these to the main query above since only users who have this information will be returned (since the much of the data is in usermeta and won't support any type of directional join) + */ + if ( !empty( $populate_extras ) ) { + $user_ids = array(); + + foreach ( (array)$paged_users as $user ) + $user_ids[] = $user->id; + + $user_ids = $wpdb->escape( join( ',', (array)$user_ids ) ); + + // Add additional data to the returned results + $paged_users = BP_Core_User::get_user_extras( $paged_users, $user_ids, $type ); + } + + return array( 'users' => $paged_users, 'total' => $total_users ); + } + + + /** + * Fetches the user details for all the users who username starts with the letter given. + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + * @param string $letter The letter the users names are to start with. + * @param integer $limit The number of users we wish to retrive. + * @param integer $page The page number we are currently on, used in conjunction with $limit to get the start position for the limit. + * @param boolean $populate_extras Populate extra user fields? + * @param string $exclude Comma-separated IDs of users whose results aren't to be fetched. + * @return mixed False on error, otherwise associative array of results. + * @static + */ + function get_users_by_letter( $letter, $limit = null, $page = 1, $populate_extras = true, $exclude = '' ) { + global $bp, $wpdb; + + $pag_sql = ''; + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + // Multibyte compliance + if ( function_exists( 'mb_strlen' ) ) { + if ( mb_strlen( $letter, 'UTF-8' ) > 1 || is_numeric( $letter ) || !$letter ) { + return false; + } + } else { + if ( strlen( $letter ) > 1 || is_numeric( $letter ) || !$letter ) { + return false; + } + } + + $letter = like_escape( $wpdb->escape( $letter ) ); + $status_sql = bp_core_get_status_sql( 'u.' ); + + $exclude_sql = ( !empty( $exclude ) ) ? " AND u.ID NOT IN ({$exclude})" : ""; + + $total_users_sql = apply_filters( 'bp_core_users_by_letter_count_sql', $wpdb->prepare( "SELECT COUNT(DISTINCT u.ID) FROM {$wpdb->users} u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id LEFT JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id WHERE {$status_sql} AND pf.name = %s {$exclude_sql} AND pd.value LIKE '$letter%%' ORDER BY pd.value ASC", bp_xprofile_fullname_field_name() ), $letter ); + $paged_users_sql = apply_filters( 'bp_core_users_by_letter_sql', $wpdb->prepare( "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.user_email FROM {$wpdb->users} u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id LEFT JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id WHERE {$status_sql} AND pf.name = %s {$exclude_sql} AND pd.value LIKE '$letter%%' ORDER BY pd.value ASC{$pag_sql}", bp_xprofile_fullname_field_name() ), $letter, $pag_sql ); + + $total_users = $wpdb->get_var( $total_users_sql ); + $paged_users = $wpdb->get_results( $paged_users_sql ); + + /*** + * Lets fetch some other useful data in a separate queries, this will be faster than querying the data for every user in a list. + * We can't add these to the main query above since only users who have this information will be returned (since the much of the data is in usermeta and won't support any type of directional join) + */ + $user_ids = array(); + foreach ( (array)$paged_users as $user ) + $user_ids[] = $user->id; + + $user_ids = $wpdb->escape( join( ',', (array)$user_ids ) ); + + /* Add additional data to the returned results */ + if ( $populate_extras ) + $paged_users = BP_Core_User::get_user_extras( $paged_users, $user_ids ); + + return array( 'users' => $paged_users, 'total' => $total_users ); + } + + /** + * Get details of specific users from the database + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + * @param array $user_ids The user IDs of the users who we wish to fetch information on. + * @param integer $limit The limit of results we want. + * @param integer $page The page we are on for pagination. + * @param boolean $populate_extras Populate extra user fields? + * @return array Associative array + * @static + */ + function get_specific_users( $user_ids, $limit = null, $page = 1, $populate_extras = true ) { + global $bp, $wpdb; + + $pag_sql = ''; + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + $user_sql = " AND user_id IN ( " . $wpdb->escape( $user_ids ) . " ) "; + $status_sql = bp_core_get_status_sql(); + + $total_users_sql = apply_filters( 'bp_core_get_specific_users_count_sql', $wpdb->prepare( "SELECT COUNT(DISTINCT ID) FROM {$wpdb->users} WHERE {$status_sql} AND ID IN ( " . $wpdb->escape( $user_ids ) . " ) " ), $wpdb->escape( $user_ids ) ); + $paged_users_sql = apply_filters( 'bp_core_get_specific_users_count_sql', $wpdb->prepare( "SELECT DISTINCT ID as id, user_registered, user_nicename, user_login, user_email FROM {$wpdb->users} WHERE {$status_sql} AND ID IN ( " . $wpdb->escape( $user_ids ) . " ) {$pag_sql}" ), $wpdb->escape( $user_ids ) ); + + $total_users = $wpdb->get_var( $total_users_sql ); + $paged_users = $wpdb->get_results( $paged_users_sql ); + + /*** + * Lets fetch some other useful data in a separate queries, this will be faster than querying the data for every user in a list. + * We can't add these to the main query above since only users who have this information will be returned (since the much of the data is in usermeta and won't support any type of directional join) + */ + + /* Add additional data to the returned results */ + if ( $populate_extras ) + $paged_users = BP_Core_User::get_user_extras( $paged_users, $user_ids ); + + return array( 'users' => $paged_users, 'total' => $total_users ); + } + + /** + * Find users who match on the value of an xprofile data. + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + * @param string $search_terms The terms to search the profile table value column for. + * @param integer $limit The limit of results we want. + * @param integer $page The page we are on for pagination. + * @param boolean $populate_extras Populate extra user fields? + * @return array Associative array + * @static + */ + function search_users( $search_terms, $limit = null, $page = 1, $populate_extras = true ) { + global $bp, $wpdb; + + $pag_sql = $limit && $page ? $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * intval( $limit ) ), intval( $limit ) ) : ''; + + $search_terms = like_escape( $wpdb->escape( $search_terms ) ); + $status_sql = bp_core_get_status_sql( 'u.' ); + + $total_users_sql = apply_filters( 'bp_core_search_users_count_sql', "SELECT COUNT(DISTINCT u.ID) as id FROM {$wpdb->users} u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id WHERE {$status_sql} AND pd.value LIKE '%%$search_terms%%' ORDER BY pd.value ASC", $search_terms ); + $paged_users_sql = apply_filters( 'bp_core_search_users_sql', "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.user_email FROM {$wpdb->users} u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id WHERE {$status_sql} AND pd.value LIKE '%%$search_terms%%' ORDER BY pd.value ASC{$pag_sql}", $search_terms, $pag_sql ); + + $total_users = $wpdb->get_var( $total_users_sql ); + $paged_users = $wpdb->get_results( $paged_users_sql ); + + /*** + * Lets fetch some other useful data in a separate queries, this will be faster than querying the data for every user in a list. + * We can't add these to the main query above since only users who have this information will be returned (since the much of the data is in usermeta and won't support any type of directional join) + */ + foreach ( (array)$paged_users as $user ) + $user_ids[] = $user->id; + + $user_ids = $wpdb->escape( join( ',', (array)$user_ids ) ); + + // Add additional data to the returned results + if ( $populate_extras ) + $paged_users = BP_Core_User::get_user_extras( $paged_users, $user_ids ); + + return array( 'users' => $paged_users, 'total' => $total_users ); + } + + /** + * Fetch extra user information, such as friend count and last profile update message. + * + * Accepts multiple user IDs to fetch data for. + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + * @param array $paged_users an array of stdClass containing the users + * @param string $user_ids the user ids to select information about + * @param string $type the type of fields we wish to get + * @return mixed False on error, otherwise associative array of results. + * @static + */ + function get_user_extras( &$paged_users, &$user_ids, $type = false ) { + global $bp, $wpdb; + + if ( empty( $user_ids ) ) + return $paged_users; + + // Fetch the user's full name + if ( bp_is_active( 'xprofile' ) && 'alphabetical' != $type ) { + $names = $wpdb->get_results( $wpdb->prepare( "SELECT pd.user_id as id, pd.value as fullname FROM {$bp->profile->table_name_fields} pf, {$bp->profile->table_name_data} pd WHERE pf.id = pd.field_id AND pf.name = %s AND pd.user_id IN ( {$user_ids} )", bp_xprofile_fullname_field_name() ) ); + for ( $i = 0, $count = count( $paged_users ); $i < $count; ++$i ) { + foreach ( (array)$names as $name ) { + if ( $name->id == $paged_users[$i]->id ) + $paged_users[$i]->fullname = $name->fullname; + } + } + } + + // Fetch the user's total friend count + if ( 'popular' != $type ) { + $friend_count = $wpdb->get_results( $wpdb->prepare( "SELECT user_id as id, meta_value as total_friend_count FROM {$wpdb->usermeta} WHERE meta_key = %s AND user_id IN ( {$user_ids} )", bp_get_user_meta_key( 'total_friend_count' ) ) ); + for ( $i = 0, $count = count( $paged_users ); $i < $count; ++$i ) { + foreach ( (array)$friend_count as $fcount ) { + if ( $fcount->id == $paged_users[$i]->id ) + $paged_users[$i]->total_friend_count = (int)$fcount->total_friend_count; + } + } + } + + // Fetch whether or not the user is a friend + if ( bp_is_active( 'friends' ) ) { + $friend_status = $wpdb->get_results( $wpdb->prepare( "SELECT initiator_user_id, friend_user_id, is_confirmed FROM {$bp->friends->table_name} WHERE (initiator_user_id = %d AND friend_user_id IN ( {$user_ids} ) ) OR (initiator_user_id IN ( {$user_ids} ) AND friend_user_id = %d )", $bp->loggedin_user->id, $bp->loggedin_user->id ) ); + for ( $i = 0, $count = count( $paged_users ); $i < $count; ++$i ) { + foreach ( (array)$friend_status as $status ) { + if ( $status->initiator_user_id == $paged_users[$i]->id || $status->friend_user_id == $paged_users[$i]->id ) + $paged_users[$i]->is_friend = $status->is_confirmed; + } + } + } + + if ( 'active' != $type ) { + $user_activity = $wpdb->get_results( $wpdb->prepare( "SELECT user_id as id, meta_value as last_activity FROM {$wpdb->usermeta} WHERE meta_key = %s AND user_id IN ( {$user_ids} )", bp_get_user_meta_key( 'last_activity' ) ) ); + for ( $i = 0, $count = count( $paged_users ); $i < $count; ++$i ) { + foreach ( (array)$user_activity as $activity ) { + if ( $activity->id == $paged_users[$i]->id ) + $paged_users[$i]->last_activity = $activity->last_activity; + } + } + } + + // Fetch the user's last_activity + if ( 'active' != $type ) { + $user_activity = $wpdb->get_results( $wpdb->prepare( "SELECT user_id as id, meta_value as last_activity FROM {$wpdb->usermeta} WHERE meta_key = %s AND user_id IN ( {$user_ids} )", bp_get_user_meta_key( 'last_activity' ) ) ); + for ( $i = 0, $count = count( $paged_users ); $i < $count; ++$i ) { + foreach ( (array)$user_activity as $activity ) { + if ( $activity->id == $paged_users[$i]->id ) + $paged_users[$i]->last_activity = $activity->last_activity; + } + } + } + + // Fetch the user's latest update + $user_update = $wpdb->get_results( $wpdb->prepare( "SELECT user_id as id, meta_value as latest_update FROM {$wpdb->usermeta} WHERE meta_key = %s AND user_id IN ( {$user_ids} )", bp_get_user_meta_key( 'bp_latest_update' ) ) ); + for ( $i = 0, $count = count( $paged_users ); $i < $count; ++$i ) { + foreach ( (array)$user_update as $update ) { + if ( $update->id == $paged_users[$i]->id ) + $paged_users[$i]->latest_update = $update->latest_update; + } + } + + return $paged_users; + } + + /** + * Get WordPress user details for a specified user. + * + * @global wpdb $wpdb WordPress database object + * @param integer $user_id User ID + * @return array Associative array + * @static + */ + function get_core_userdata( $user_id ) { + global $wpdb; + + if ( !$user = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->users WHERE ID = %d LIMIT 1", $user_id ) ) ) + return false; + + return $user; + } +} + + +/** + * BP_Core_Notification class can be used by any component. + * It will handle the fetching, saving and deleting of a user notification. + * + * @package BuddyPress Core + */ + +class BP_Core_Notification { + + /** + * The notification id + * + * @var integer + */ + var $id; + + /** + * The ID to which the notification relates to within the component. + * + * @var integer + */ + var $item_id; + + /** + * The secondary ID to which the notification relates to within the component. + * + * @var integer + */ + var $secondary_item_id = null; + + /** + * The user ID for who the notification is for. + * + * @var integer + */ + var $user_id; + + /** + * The name of the component that the notification is for. + * + * @var string + */ + var $component_name; + + /** + * The action within the component which the notification is related to. + * + * @var string + */ + var $component_action; + + /** + * The date the notification was created. + * + * @var string + */ + var $date_notified; + + /** + * Is the notification new or has it already been read. + * + * @var boolean + */ + var $is_new; + + + /** + * PHP4 constructor + * + * @param integer $id + */ + function bp_core_notification( $id = 0 ) { + $this->__construct($id); + } + + /** + * Constructor + * + * @param integer $id + */ + function __construct( $id = 0 ) { + if ( $id ) { + $this->id = $id; + $this->populate(); + } + } + + /** + * Fetches the notification data from the database. + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + */ + function populate() { + global $bp, $wpdb; + + if ( $notification = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->core->table_name_notifications} WHERE id = %d", $this->id ) ) ) { + $this->item_id = $notification->item_id; + $this->secondary_item_id = $notification->secondary_item_id; + $this->user_id = $notification->user_id; + $this->component_name = $notification->component_name; + $this->component_action = $notification->component_action; + $this->date_notified = $notification->date_notified; + $this->is_new = $notification->is_new; + } + } + + /** + * Update or insert notification details into the database. + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + * @return bool Success or failure + */ + function save() { + global $bp, $wpdb; + + // Update + if ( $this->id ) + $sql = $wpdb->prepare( "UPDATE {$bp->core->table_name_notifications} SET item_id = %d, secondary_item_id = %d, user_id = %d, component_name = %s, component_action = %d, date_notified = %s, is_new = %d ) WHERE id = %d", $this->item_id, $this->secondary_item_id, $this->user_id, $this->component_name, $this->component_action, $this->date_notified, $this->is_new, $this->id ); + + // Save + else + $sql = $wpdb->prepare( "INSERT INTO {$bp->core->table_name_notifications} ( item_id, secondary_item_id, user_id, component_name, component_action, date_notified, is_new ) VALUES ( %d, %d, %d, %s, %s, %s, %d )", $this->item_id, $this->secondary_item_id, $this->user_id, $this->component_name, $this->component_action, $this->date_notified, $this->is_new ); + + if ( !$result = $wpdb->query( $sql ) ) + return false; + + $this->id = $wpdb->insert_id; + return true; + } + + /** Static functions ******************************************************/ + + function check_access( $user_id, $notification_id ) { + global $wpdb, $bp; + + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->core->table_name_notifications} WHERE id = %d AND user_id = %d", $notification_id, $user_id ) ); + } + + /** + * Fetches all the notifications in the database for a specific user. + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + * @param integer $user_id User ID + * @return array Associative array + * @static + */ + function get_all_for_user( $user_id ) { + global $bp, $wpdb; + + return $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->core->table_name_notifications} WHERE user_id = %d AND is_new = 1", $user_id ) ); + } + + /** + * Delete all the notifications for a user based on the component name and action. + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + * @param integer $user_id + * @param string $component_name + * @param string $component_action + * @static + */ + function delete_for_user_by_type( $user_id, $component_name, $component_action ) { + global $bp, $wpdb; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->core->table_name_notifications} WHERE user_id = %d AND component_name = %s AND component_action = %s", $user_id, $component_name, $component_action ) ); + } + + /** + * Delete all the notifications that have a specific item id, component name and action. + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + * @param integer $user_id The ID of the user who the notifications are for. + * @param integer $item_id The item ID of the notifications we wish to delete. + * @param string $component_name The name of the component that the notifications we wish to delete. + * @param string $component_action The action of the component that the notifications we wish to delete. + * @param integer $secondary_item_id (optional) The secondary item id of the notifications that we wish to use to delete. + * @static + */ + function delete_for_user_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id = false ) { + global $bp, $wpdb; + + $secondary_item_sql = !empty( $secondary_item_id ) ? $wpdb->prepare( " AND secondary_item_id = %d", $secondary_item_id ) : ''; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->core->table_name_notifications} WHERE user_id = %d AND item_id = %d AND component_name = %s AND component_action = %s{$secondary_item_sql}", $user_id, $item_id, $component_name, $component_action ) ); + } + + /** + * Deletes all the notifications sent by a specific user, by component and action. + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + * @param integer $user_id The ID of the user whose sent notifications we wish to delete. + * @param string $component_name The name of the component the notification was sent from. + * @param string $component_action The action of the component the notification was sent from. + * @static + */ + function delete_from_user_by_type( $user_id, $component_name, $component_action ) { + global $bp, $wpdb; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->core->table_name_notifications} WHERE item_id = %d AND component_name = %s AND component_action = %s", $user_id, $component_name, $component_action ) ); + } + + /** + * Deletes all the notifications for all users by item id, and optional secondary item id, and component name and action. + * + * @global object $bp Global BuddyPress settings object + * @global wpdb $wpdb WordPress database object + * @param string $item_id The item id that they notifications are to be for. + * @param string $component_name The component that the notifications are to be from. + * @param string $component_action The action that the notificationsa are to be from. + * @param string $secondary_item_id Optional secondary item id that the notifications are to have. + * @static + */ + function delete_all_by_type( $item_id, $component_name, $component_action, $secondary_item_id ) { + global $bp, $wpdb; + + if ( $component_action ) + $component_action_sql = $wpdb->prepare( "AND component_action = %s", $component_action ); + else + $component_action_sql = ''; + + if ( $secondary_item_id ) + $secondary_item_sql = $wpdb->prepare( "AND secondary_item_id = %d", $secondary_item_id ); + else + $secondary_item_sql = ''; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->core->table_name_notifications} WHERE item_id = %d AND component_name = %s {$component_action_sql} {$secondary_item_sql}", $item_id, $component_name ) ); + } +} + +/** + * BP_Button + * + * API to create BuddyPress buttons + * + * @package BuddyPress Core + * @since 1.2.6 + */ +class BP_Button { + // Button properties + + /** + * The button ID + * + * @var integer + */ + var $id; + + /** + * The component name that button belongs to. + * + * @var string + */ + var $component; + + /** + * Does the user need to be logged in to see this button? + * + * @var boolean + */ + var $must_be_logged_in; + + /** + * True or false if the button should not be displayed while viewing your own profile. + * + * @var boolean + */ + var $block_self; + + + // Wrapper + + /** + * What type of DOM element to use for a wrapper. + * + * + * @var mixed div|span|p|li, or false for no wrapper + */ + var $wrapper; + + /** + * The DOM class of the button wrapper + * + * @var string + */ + var $wrapper_class; + + /** + * The DOM ID of the button wrapper + * + * @var string + */ + var $wrapper_id; + + + // Button + + /** + * The destination link of the button + * + * @var string + */ + var $link_href; + + /** + * The DOM class of the button link + * + * @var string + */ + var $link_class; + + /** + * The DOM ID of the button link + * + * @var string + */ + var $link_id; + + /** + * The DOM rel value of the button link + * + * @var string + */ + var $link_rel; + + /** + * Title of the button link + * + * @var string + */ + var $link_title; + + /** + * The contents of the button link + * + * @var string + */ + var $link_text; + + + // HTML result + + var $contents; + + /** + * bp_button() + * + * Builds the button based on passed parameters: + * + * component: Which component this button is for + * must_be_logged_in: Button only appears for logged in users + * block_self: Button will not appear when viewing your own profile. + * wrapper: div|span|p|li|false for no wrapper + * wrapper_id: The DOM ID of the button wrapper + * wrapper_class: The DOM class of the button wrapper + * link_href: The destination link of the button + * link_title: Title of the button + * link_id: The DOM ID of the button + * link_class: The DOM class of the button + * link_rel: The DOM rel of the button + * link_text: The contents of the button + * + * @param array $args + * @return bool False if not allowed + */ + function bp_button( $args = '' ) { + $this->__construct($args); + } + + function __construct( $args = '' ) { + + // Default arguments + $defaults = array( + 'id' => '', + 'component' => 'core', + 'must_be_logged_in' => true, + 'block_self' => true, + + 'wrapper' => 'div', + 'wrapper_id' => '', + 'wrapper_class' => '', + + 'link_href' => '', + 'link_title' => '', + 'link_id' => '', + 'link_class' => '', + 'link_rel' => '', + 'link_text' => '', + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // Required button properties + $this->id = $id; + $this->component = $component; + $this->must_be_logged_in = (bool)$must_be_logged_in; + $this->block_self = (bool)$block_self; + $this->wrapper = $wrapper; + + // $id and $component are required + if ( empty( $id ) || empty( $component ) ) + return false; + + // No button if component is not active + if ( !bp_is_active( $this->component ) ) + return false; + + // No button for guests if must be logged in + if ( true == $this->must_be_logged_in && !is_user_logged_in() ) + return false; + + // No button if viewing your own profile + if ( true == $this->block_self && bp_is_my_profile() ) + return false; + + // Wrapper properties + if ( false !== $this->wrapper ) { + + // Wrapper ID + if ( !empty( $wrapper_id ) ) + $this->wrapper_id = ' id="' . $wrapper_id . '"'; + + // Wrapper class + if ( !empty( $wrapper_class ) ) + $this->wrapper_class = ' class="generic-button ' . $wrapper_class . '"'; + else + $this->wrapper_class = ' class="generic-button"'; + + // Set before and after + $before = '<' . $wrapper . $this->wrapper_class . $this->wrapper_id . '>'; + $after = '</' . $wrapper . '>'; + + // No wrapper + } else { + $before = $after = ''; + } + + // Link properties + if ( !empty( $link_id ) ) + $this->link_id = ' id="' . $link_id . '"'; + + if ( !empty( $link_href ) ) + $this->link_href = ' href="' . $link_href . '"'; + + if ( !empty( $link_title ) ) + $this->link_title = ' title="' . $link_title . '"'; + + if ( !empty( $link_rel ) ) + $this->link_rel = ' rel="' . $link_rel . '"'; + + if ( !empty( $link_class ) ) + $this->link_class = ' class="' . $link_class . '"'; + + if ( !empty( $link_text ) ) + $this->link_text = $link_text; + + // Build the button + $this->contents = $before . '<a'. $this->link_href . $this->link_title . $this->link_id . $this->link_rel . $this->link_class . '>' . $this->link_text . '</a>' . $after; + + // Allow button to be manipulated externally + $this->contents = apply_filters( 'bp_button_' . $component . '_' . $id, $this->contents, $this, $before, $after ); + } + + /** + * contents() + * + * Return contents of button + * + * @return string + */ + function contents() { + return $this->contents; + } + + /** + * display() + * + * Output contents of button + */ + function display() { + if ( !empty( $this->contents ) ) + echo $this->contents; + } +} + +/** + * BP_Embed + * + * Extends WP_Embed class for use with BuddyPress. + * + * @package BuddyPress Core + * @since 1.5 + * @see WP_Embed + */ +class BP_Embed extends WP_Embed { + /** + * Constructor + * + * @global unknown $wp_embed + */ + function __construct() { + global $wp_embed; + + // Make sure we populate the WP_Embed handlers array. + // These are providers that use a regex callback on the URL in question. + // Do not confuse with oEmbed providers, which require an external ping. + // Used in WP_Embed::shortcode() + $this->handlers = $wp_embed->handlers; + + if ( bp_use_embed_in_activity() ) { + add_filter( 'bp_get_activity_content_body', array( &$this, 'autoembed' ), 8 ); + add_filter( 'bp_get_activity_content_body', array( &$this, 'run_shortcode' ), 7 ); + } + + if ( bp_use_embed_in_activity_replies() ) { + add_filter( 'bp_get_activity_content', array( &$this, 'autoembed' ), 8 ); + add_filter( 'bp_get_activity_content', array( &$this, 'run_shortcode' ), 7 ); + } + + if ( bp_use_embed_in_forum_posts() ) { + add_filter( 'bp_get_the_topic_post_content', array( &$this, 'autoembed' ), 8 ); + add_filter( 'bp_get_the_topic_post_content', array( &$this, 'run_shortcode' ), 7 ); + } + + if ( bp_use_embed_in_private_messages() ) { + add_filter( 'bp_get_the_thread_message_content', array( &$this, 'autoembed' ), 8 ); + add_filter( 'bp_get_the_thread_message_content', array( &$this, 'run_shortcode' ), 7 ); + } + + do_action_ref_array( 'bp_core_setup_oembed', array( &$this ) ); + } + + /** + * The {@link do_shortcode()} callback function. + * + * Attempts to convert a URL into embed HTML. Starts by checking the URL against the regex of the registered embed handlers. + * Next, checks the URL against the regex of registered {@link WP_oEmbed} providers if oEmbed discovery is false. + * If none of the regex matches and it's enabled, then the URL will be passed to {@link BP_Embed::parse_oembed()} for oEmbed parsing. + * + * @uses wp_parse_args() + * @uses wp_embed_defaults() + * @uses current_user_can() + * @uses _wp_oembed_get_object() + * @uses WP_Embed::maybe_make_link() + * + * @param array $attr Shortcode attributes. + * @param string $url The URL attempting to be embeded. + * @return string The embed HTML on success, otherwise the original URL. + */ + function shortcode( $attr, $url = '' ) { + if ( empty( $url ) ) + return ''; + + $rawattr = $attr; + $attr = wp_parse_args( $attr, wp_embed_defaults() ); + + // kses converts & into & and we need to undo this + // See http://core.trac.wordpress.org/ticket/11311 + $url = str_replace( '&', '&', $url ); + + // Look for known internal handlers + ksort( $this->handlers ); + foreach ( $this->handlers as $priority => $handlers ) { + foreach ( $handlers as $hid => $handler ) { + if ( preg_match( $handler['regex'], $url, $matches ) && is_callable( $handler['callback'] ) ) { + if ( false !== $return = call_user_func( $handler['callback'], $matches, $attr, $url, $rawattr ) ) + return apply_filters( 'embed_handler_html', $return, $url, $attr ); + } + } + } + + // Get object ID + $id = apply_filters( 'embed_post_id', 0 ); + + // Is oEmbed discovery on? + $attr['discover'] = ( apply_filters( 'bp_embed_oembed_discover', false ) && current_user_can( 'unfiltered_html' ) ); + + // Set up a new WP oEmbed object to check URL with registered oEmbed providers + require_once( ABSPATH . WPINC . '/class-oembed.php' ); + $oembed_obj = _wp_oembed_get_object(); + + // If oEmbed discovery is true, skip oEmbed provider check + $is_oembed_link = false; + if ( !$attr['discover'] ) { + foreach ( (array)$oembed_obj->providers as $provider_matchmask => $provider ) { + $regex = ( $is_regex = $provider[1] ) ? $provider_matchmask : '#' . str_replace( '___wildcard___', '(.+)', preg_quote( str_replace( '*', '___wildcard___', $provider_matchmask ), '#' ) ) . '#i'; + + if ( preg_match( $regex, $url ) ) + $is_oembed_link = true; + } + + // If url doesn't match a WP oEmbed provider, stop parsing + if ( !$is_oembed_link ) + return $this->maybe_make_link( $url ); + } + + return $this->parse_oembed( $id, $url, $attr, $rawattr ); + } + + /** + * Base function so BP components / plugins can parse links to be embedded. + * View an example to add support in {@link bp_activity_embed()}. + * + * @uses apply_filters() Filters cache. + * @uses do_action() To save cache. + * @uses wp_oembed_get() Connects to oEmbed provider and returns HTML on success. + * @uses WP_Embed::maybe_make_link() Process URL for hyperlinking on oEmbed failure. + * @param int $id ID to do the caching for. + * @param string $url The URL attempting to be embedded. + * @param array $attr Shortcode attributes from {@link WP_Embed::shortcode()}. + * @param array $rawattr Untouched shortcode attributes from {@link WP_Embed::shortcode()}. + * @return string The embed HTML on success, otherwise the original URL. + */ + function parse_oembed( $id, $url, $attr, $rawattr ) { + $id = intval( $id ); + + if ( $id ) { + // Setup the cachekey + $cachekey = '_oembed_' . md5( $url . serialize( $attr ) ); + + // Let components / plugins grab their cache + $cache = ''; + $cache = apply_filters( 'bp_embed_get_cache', $cache, $id, $cachekey, $url, $attr, $rawattr ); + + // Grab cache and return it if available + if ( !empty( $cache ) ) { + return apply_filters( 'bp_embed_oembed_html', $cache, $url, $attr, $rawattr ); + + // If no cache, ping the oEmbed provider and cache the result + } else { + $html = wp_oembed_get( $url, $attr ); + $cache = ( $html ) ? $html : $url; + + // Let components / plugins save their cache + do_action( 'bp_embed_update_cache', $cache, $cachekey, $id ); + + // If there was a result, return it + if ( $html ) + return apply_filters( 'bp_embed_oembed_html', $html, $url, $attr, $rawattr ); + } + } + + // Still unknown + return $this->maybe_make_link( $url ); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-component.php b/wp-content/plugins/buddypress/bp-core/bp-core-component.php new file mode 100644 index 0000000..b857b24 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-component.php @@ -0,0 +1,358 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +if ( !class_exists( 'BP_Component' ) ) : +/** + * BuddyPress Component Class + * + * The BuddyPress component class is responsible for simplifying the creation + * of components that share similar behaviors and routines. It is used + * internally by BuddyPress to create the bundled components, but can be + * extended to create other really neat things. + * + * @package BuddyPress + * @subpackage Component + * + * @since 1.5 + */ +class BP_Component { + + /** + * @var string Unique name (for internal identification) + * @internal + */ + var $name; + + /** + * @var Unique ID (normally for custom post type) + */ + var $id; + + /** + * @var string Unique slug (used in query string and permalinks) + */ + var $slug; + + /** + * @var bool Does this component need a top-level directory? + */ + var $has_directory; + + /** + * @var string The path to the component's files + */ + var $path; + + /** + * @var WP_Query The loop for this component + */ + var $query; + + /** + * @var string The current ID of the queried object + */ + var $current_id; + + /** + * @var string Function to call for notifications + */ + var $notification_callback; + + /** + * @var array WordPress admin bar links + */ + var $admin_menu; + + /** + * Component loader + * + * @since 1.5 + * + * @param mixed $args Required. Supports these args: + * - id: Unique ID (for internal identification). Letters, numbers, and underscores only + * - name: Unique name. This should be a translatable name, eg __( 'Groups', 'buddypress' ) + * - path: The file path for the component's files. Used by BP_Component::includes() + * @uses bp_Component::setup_actions() Setup the hooks and actions + */ + function start( $id, $name, $path ) { + // Internal identifier of component + $this->id = $id; + + // Internal component name + $this->name = $name; + + // Path for includes + $this->path = $path; + + // Move on to the next step + $this->setup_actions(); + } + + /** + * Component global variables + * + * @since 1.5 + * @access private + * + * @uses apply_filters() Calls 'bp_{@link bp_Component::name}_id' + * @uses apply_filters() Calls 'bp_{@link bp_Component::name}_slug' + * + * @param arr $args Used to + */ + function setup_globals( $args = '' ) { + global $bp; + + /** Slugs *************************************************************/ + + $defaults = array( + 'slug' => $this->id, + 'root_slug' => '', + 'has_directory' => false, + 'notification_callback' => '', + 'search_string' => '', + 'global_tables' => '' + ); + $r = wp_parse_args( $args, $defaults ); + + // Slug used for permalink URI chunk after root + $this->slug = apply_filters( 'bp_' . $this->id . '_slug', $r['slug'] ); + + // Slug used for root directory + $this->root_slug = apply_filters( 'bp_' . $this->id . '_root_slug', $r['root_slug'] ); + + // Does this component have a top-level directory? + $this->has_directory = apply_filters( 'bp_' . $this->id . '_has_directory', $r['has_directory'] ); + + // Search string + $this->search_string = apply_filters( 'bp_' . $this->id . '_search_string', $r['search_string'] ); + + // Notifications callback + $this->notification_callback = apply_filters( 'bp_' . $this->id . '_notification_callback', $r['notification_callback'] ); + + // Setup global table names + if ( !empty( $r['global_tables'] ) ) + foreach ( $r['global_tables'] as $global_name => $table_name ) + $this->$global_name = $table_name; + + /** BuddyPress ********************************************************/ + + // Register this component in the loaded components array + $bp->loaded_components[$this->slug] = $this->id; + + // Call action + do_action( 'bp_' . $this->id . '_setup_globals' ); + } + + /** + * Include required files + * + * Please note that, by default, this method is fired on the bp_include hook, with priority + * 8. This is necessary so that core components are loaded in time to be available to + * third-party plugins. However, this load order means that third-party plugins whose main + * files are loaded at bp_include with priority 10 (as recommended), will not be loaded in + * time for their includes() method to fire automatically. + * + * For this reason, it is recommended that your plugin has its own method or function for + * requiring necessary files. If you must use this method, you will have to call it manually + * in your constructor class, ie + * $this->includes(); + * + * Note that when you pass an array value like 'actions' to includes, it looks for the + * following three files (assuming your component is called 'my_component'): + * - ./actions + * - ./bp-my_component/actions + * - ./bp-my_component/bp-my_component-actions.php + * + * @since 1.5 + * @access private + * + * @uses do_action() Calls 'bp_{@link bp_Component::name}includes' + */ + function includes( $includes = '' ) { + if ( empty( $includes ) ) + return; + + // Loop through files to be included + foreach ( $includes as $file ) { + + // Check path + file + if ( @is_file( $this->path . '/' . $file ) ) + require( $this->path . '/' . $file ); + + // Check path + /bp-component/ + file + elseif ( @is_file( $this->path . '/bp-' . $this->id . '/' . $file ) ) + require( $this->path . '/bp-' . $this->id . '/' . $file ); + + // Check buddypress/bp-component/bp-component-$file.php + elseif ( @is_file( $this->path . '/bp-' . $this->id . '/bp-' . $this->id . '-' . $file . '.php' ) ) + require( $this->path . '/bp-' . $this->id . '/bp-' . $this->id . '-' . $file . '.php' ); + + } + + // Call action + do_action( 'bp_' . $this->id . '_includes' ); + } + + /** + * Setup the actions + * + * @since 1.5 + * @access private + * + * @uses add_action() To add various actions + * @uses do_action() Calls 'bp_{@link BP_Component::name}setup_actions' + */ + function setup_actions() { + + // Setup globals + add_action( 'bp_setup_globals', array ( $this, 'setup_globals' ), 10 ); + + // Include required files. Called early to ensure that BP core + // components are loaded before plugins that hook their loader functions + // to bp_include with the default priority of 10. This is for backwards + // compatibility; henceforth, plugins should register themselves by + // extending this base class. + add_action( 'bp_include', array ( $this, 'includes' ), 8 ); + + // Setup navigation + add_action( 'bp_setup_nav', array ( $this, 'setup_nav' ), 10 ); + + // Setup WP Admin Bar menus + add_action( 'bp_setup_admin_bar', array ( $this, 'setup_admin_bar' ), 10 ); + + // Setup component title + add_action( 'bp_setup_title', array ( $this, 'setup_title' ), 10 ); + + // Register post types + add_action( 'bp_register_post_types', array ( $this, 'register_post_types' ), 10 ); + + // Register taxonomies + add_action( 'bp_register_taxonomies', array ( $this, 'register_taxonomies' ), 10 ); + + // Add the rewrite tags + add_action( 'bp_add_rewrite_tags', array ( $this, 'add_rewrite_tags' ), 10 ); + + // Generate rewrite rules + add_action( 'bp_generate_rewrite_rules', array ( $this, 'generate_rewrite_rules' ), 10 ); + + // Additional actions can be attached here + do_action( 'bp_' . $this->id . '_setup_actions' ); + } + + /** + * Setup the navigation + * + * @param arr $main_nav Optional + * @param arr $sub_nav Optional + */ + function setup_nav( $main_nav = '', $sub_nav = '' ) { + + // No sub nav items without a main nav item + if ( !empty( $main_nav ) ) { + bp_core_new_nav_item( $main_nav ); + + // Sub nav items are not required + if ( !empty( $sub_nav ) ) { + foreach( $sub_nav as $nav ) { + bp_core_new_subnav_item( $nav ); + } + } + } + + // Call action + do_action( 'bp_' . $this->id . '_setup_nav' ); + } + + /** + * Setup the admin bar + * + * @global obj $wp_admin_bar + * @param array $wp_admin_menus + */ + function setup_admin_bar( $wp_admin_nav = '' ) { + + // Bail if this is an ajax request + if ( defined( 'DOING_AJAX' ) ) + return; + + // Do not proceed if BP_USE_WP_ADMIN_BAR constant is not set or is false + if ( !bp_use_wp_admin_bar() ) + return; + + // Do we have admin bar menus to add? + if ( !empty( $wp_admin_nav ) ) { + + // Set this objects menus + $this->admin_menu = $wp_admin_nav; + + // Define the WordPress global + global $wp_admin_bar; + + // Add each admin menu + foreach( $this->admin_menu as $admin_menu ) + $wp_admin_bar->add_menu( $admin_menu ); + } + + // Call action + do_action( 'bp_' . $this->id . '_setup_admin_bar' ); + } + + /** + * Setup the component title + * + * @since 1.5 + * + * @uses do_action() Calls 'bp_{@link bp_Component::name}setup_title' + */ + function setup_title( ) { + do_action( 'bp_' . $this->id . '_setup_title' ); + } + + /** + * Setup the component post types + * + * @since 1.5 + * + * @uses do_action() Calls 'bp_{@link bp_Component::name}_register_post_types' + */ + function register_post_types() { + do_action( 'bp_' . $this->id . '_register_post_types' ); + } + + /** + * Register component specific taxonomies + * + * @since 1.5 + * + * @uses do_action() Calls 'bp_{@link bp_Component::name}_register_taxonomies' + */ + function register_taxonomies() { + do_action( 'bp_' . $this->id . '_register_taxonomies' ); + } + + /** + * Add any additional rewrite tags + * + * @since 1.5 + * + * @uses do_action() Calls 'bp_{@link bp_Component::name}_add_rewrite_tags' + */ + function add_rewrite_tags() { + do_action( 'bp_' . $this->id . '_add_rewrite_tags' ); + } + + /** + * Generate any additional rewrite rules + * + * @since 1.5 + * + * @uses do_action() Calls 'bp_{@link bp_Component::name}_generate_rewrite_rules' + */ + function generate_rewrite_rules ( $wp_rewrite ) { + do_action( 'bp_' . $this->id . '_generate_rewrite_rules' ); + } +} +endif; // BP_Component + +?> diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-cssjs.php b/wp-content/plugins/buddypress/bp-core/bp-core-cssjs.php new file mode 100644 index 0000000..0c6c7f8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-cssjs.php @@ -0,0 +1,176 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * bp_core_admin_menu_icon_css() + * + * Add a hover-able icon to the "BuddyPress" wp-admin area menu. + * + * @package BuddyPress Core + */ +function bp_core_admin_menu_icon_css() { + global $bp; ?> + + <style type="text/css"> + /* Wizard Icon */ + ul#adminmenu li.toplevel_page_bp-wizard .wp-menu-image a img { display: none; } + ul#adminmenu li.toplevel_page_bp-wizard .wp-menu-image a { background-image: url( <?php echo plugins_url( 'buddypress/bp-core/images/admin_menu_icon.png' ) ?> ) !important; background-position: -1px -32px; } + ul#adminmenu li.toplevel_page_bp-wizard:hover .wp-menu-image a, + ul#adminmenu li.toplevel_page_bp-wizard.wp-has-current-submenu .wp-menu-image a { + background-position: -1px 0; + } + + /* Settings Icon */ + ul#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image a img { display: none; } + ul#adminmenu li.toplevel_page_bp-general-settings .wp-menu-image a { background-image: url( <?php echo plugins_url( 'buddypress/bp-core/images/admin_menu_icon.png' ) ?> ) !important; background-position: -1px -32px; } + ul#adminmenu li.toplevel_page_bp-general-settings:hover .wp-menu-image a, + ul#adminmenu li.toplevel_page_bp-general-settings.wp-has-current-submenu .wp-menu-image a { + background-position: -1px 0; + } + </style> + +<?php +} +add_action( 'admin_head', 'bp_core_admin_menu_icon_css' ); + +function bp_core_confirmation_js() { + global $wpdb; + + if ( is_multisite() && $wpdb->blogid != bp_get_root_blog_id() ) + return false; + + if ( !wp_script_is( 'jquery' ) ) + wp_enqueue_script( 'jquery' ); + + if ( !wp_script_is( 'jquery', 'done' ) ) + wp_print_scripts( 'jquery' ); ?> + + <script type="text/javascript"> jQuery(document).ready( function() { jQuery("a.confirm").click( function() { if ( confirm( '<?php _e( 'Are you sure?', 'buddypress' ) ?>' ) ) return true; else return false; }); });</script> + +<?php +} +add_action( 'wp_head', 'bp_core_confirmation_js', 100 ); + +/** + * bp_core_add_jquery_cropper() + * + * Makes sure the jQuery jCrop library is loaded. + * + * @package BuddyPress Core + */ +function bp_core_add_jquery_cropper() { + wp_enqueue_script( 'jcrop', array( 'jquery' ) ); + add_action( 'wp_head', 'bp_core_add_cropper_inline_js' ); + add_action( 'wp_head', 'bp_core_add_cropper_inline_css' ); +} + +/** + * bp_core_add_cropper_inline_js() + * + * Adds the inline JS needed for the cropper to work on a per-page basis. + * + * @package BuddyPress Core + */ +function bp_core_add_cropper_inline_js() { + global $bp; + + $image = apply_filters( 'bp_inline_cropper_image', getimagesize( bp_core_avatar_upload_path() . $bp->avatar_admin->image->dir ) ); + $aspect_ratio = 1; + + $full_height = bp_core_avatar_full_height(); + $full_width = bp_core_avatar_full_width(); + + // Calculate Aspect Ratio + if ( $full_height && ( $full_width != $full_height ) ) + $aspect_ratio = $full_width / $full_height; + + $width = $image[0] / 2; + $height = $image[1] / 2; +?> + + <script type="text/javascript"> + jQuery(window).load( function(){ + jQuery('#avatar-to-crop').Jcrop({ + onChange: showPreview, + onSelect: showPreview, + onSelect: updateCoords, + aspectRatio: <?php echo $aspect_ratio ?>, + setSelect: [ 50, 50, <?php echo $width ?>, <?php echo $height ?> ] + }); + updateCoords({x: 50, y: 50, w: <?php echo $width ?>, h: <?php echo $height ?>}); + }); + + function updateCoords(c) { + jQuery('#x').val(c.x); + jQuery('#y').val(c.y); + jQuery('#w').val(c.w); + jQuery('#h').val(c.h); + }; + + function showPreview(coords) { + if ( parseInt(coords.w) > 0 ) { + var rx = <?php echo $full_width; ?> / coords.w; + var ry = <?php echo $full_height; ?> / coords.h; + + jQuery('#avatar-crop-preview').css({ + <?php if ( $image ) : ?> + width: Math.round(rx * <?php echo $image[0]; ?>) + 'px', + height: Math.round(ry * <?php echo $image[1]; ?>) + 'px', + <?php endif; ?> + marginLeft: '-' + Math.round(rx * coords.x) + 'px', + marginTop: '-' + Math.round(ry * coords.y) + 'px' + }); + } + } + </script> + +<?php +} + +/** + * bp_core_add_cropper_inline_css() + * + * Adds the inline CSS needed for the cropper to work on a per-page basis. + * + * @package BuddyPress Core + */ +function bp_core_add_cropper_inline_css() { + global $bp; +?> + + <style type="text/css"> + .jcrop-holder { float: left; margin: 0 20px 20px 0; text-align: left; } + .jcrop-vline, .jcrop-hline { font-size: 0; position: absolute; background: white top left repeat url( <?php echo BP_PLUGIN_URL ?>/bp-core/images/Jcrop.gif ); } + .jcrop-vline { height: 100%; width: 1px !important; } + .jcrop-hline { width: 100%; height: 1px !important; } + .jcrop-handle { font-size: 1px; width: 7px !important; height: 7px !important; border: 1px #eee solid; background-color: #333; *width: 9px; *height: 9px; } + .jcrop-tracker { width: 100%; height: 100%; } + .custom .jcrop-vline, .custom .jcrop-hline { background: yellow; } + .custom .jcrop-handle { border-color: black; background-color: #C7BB00; -moz-border-radius: 3px; -webkit-border-radius: 3px; } + #avatar-crop-pane { width: <?php echo bp_core_avatar_full_width() ?>px; height: <?php echo bp_core_avatar_full_height() ?>px; overflow: hidden; } + #avatar-crop-submit { margin: 20px 0; } + #avatar-upload-form img, #create-group-form img, #group-settings-form img { border: none !important; } + </style> + +<?php +} + +/** + * bp_core_add_ajax_url_js() + * + * Adds AJAX target URL so themes can access the WordPress AJAX functionality. + * + * @package BuddyPress Core + */ +function bp_core_add_ajax_url_js() { + global $bp; +?> + + <script type="text/javascript">var ajaxurl = "<?php echo site_url( 'wp-load.php' ); ?>";</script> + +<?php +} +add_action( 'wp_head', 'bp_core_add_ajax_url_js' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-filters.php b/wp-content/plugins/buddypress/bp-core/bp-core-filters.php new file mode 100644 index 0000000..ecb9808 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-filters.php @@ -0,0 +1,340 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +// Add some filters to feedback messages +add_filter( 'bp_core_render_message_content', 'wptexturize' ); +add_filter( 'bp_core_render_message_content', 'convert_smilies' ); +add_filter( 'bp_core_render_message_content', 'convert_chars' ); +add_filter( 'bp_core_render_message_content', 'wpautop' ); +add_filter( 'bp_core_render_message_content', 'shortcode_unautop' ); + +/** + * bp_core_exclude_pages() + * + * Excludes specific pages from showing on page listings, for example the "Activation" page. + * + * @package BuddyPress Core + * @uses bp_is_active() checks if a BuddyPress component is active. + * @return array The list of page ID's to exclude + */ +function bp_core_exclude_pages( $pages ) { + global $bp; + + if ( bp_is_root_blog() ) { + if ( !empty( $bp->pages->activate ) ) + $pages[] = $bp->pages->activate->id; + + if ( !empty( $bp->pages->register ) ) + $pages[] = $bp->pages->register->id; + + if ( !empty( $bp->pages->forums ) && ( !bp_is_active( 'forums' ) || ( bp_is_active( 'forums' ) && bp_forums_has_directory() && !bp_forums_is_installed_correctly() ) ) ) + $pages[] = $bp->pages->forums->id; + } + + return apply_filters( 'bp_core_exclude_pages', $pages ); +} +add_filter( 'wp_list_pages_excludes', 'bp_core_exclude_pages' ); + +/** + * bp_core_email_from_name_filter() + * + * Sets the "From" name in emails sent to the name of the site and not "WordPress" + * + * @package BuddyPress Core + * @uses get_blog_option() fetches the value for a meta_key in the wp_X_options table + * @return The blog name for the root blog + */ +function bp_core_email_from_name_filter() { + return apply_filters( 'bp_core_email_from_name_filter', wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ) ); +} +add_filter( 'wp_mail_from_name', 'bp_core_email_from_name_filter' ); + +/** + * bp_core_email_from_name_filter() + * + * Sets the "From" address in emails sent + * + * @package BuddyPress Core + * @return noreply@sitedomain email address + */ +function bp_core_email_from_address_filter() { + $domain = (array) explode( '/', site_url() ); + + return apply_filters( 'bp_core_email_from_address_filter', 'noreply@' . $domain[2] ); +} +add_filter( 'wp_mail_from', 'bp_core_email_from_address_filter' ); + +/** + * bp_core_allow_default_theme() + * + * On multiblog installations you must first allow themes to be activated and show + * up on the theme selection screen. This function will let the BuddyPress bundled + * themes show up on the root blog selection screen and bypass this step. It also + * means that the themes won't show for selection on other blogs. + * + * @package BuddyPress Core + */ +function bp_core_allow_default_theme( $themes ) { + global $bp, $wpdb; + + if ( !is_super_admin() ) + return $themes; + + if ( $wpdb->blogid == bp_get_root_blog_id() ) { + $themes['bp-default'] = 1; + } + + return $themes; +} +add_filter( 'allowed_themes', 'bp_core_allow_default_theme' ); + +/** + * bp_core_filter_comments() + * + * Filter the blog post comments array and insert BuddyPress URLs for users. + * + * @package BuddyPress Core + */ +function bp_core_filter_comments( $comments, $post_id ) { + global $wpdb; + + foreach( (array)$comments as $comment ) { + if ( $comment->user_id ) + $user_ids[] = $comment->user_id; + } + + if ( empty( $user_ids ) ) + return $comments; + + $user_ids = implode( ',', $user_ids ); + + if ( !$userdata = $wpdb->get_results( $wpdb->prepare( "SELECT ID as user_id, user_login, user_nicename FROM {$wpdb->users} WHERE ID IN ({$user_ids})" ) ) ) + return $comments; + + foreach( (array)$userdata as $user ) + $users[$user->user_id] = bp_core_get_user_domain( $user->user_id, $user->user_nicename, $user->user_login ); + + foreach( (array)$comments as $i => $comment ) { + if ( !empty( $comment->user_id ) ) { + if ( !empty( $users[$comment->user_id] ) ) + $comments[$i]->comment_author_url = $users[$comment->user_id]; + } + } + + return $comments; +} +add_filter( 'comments_array', 'bp_core_filter_comments', 10, 2 ); + +/** + * bp_core_login_redirect() + * + * When a user logs in, always redirect them back to the previous page. NOT the admin area. + * + * @package BuddyPress Core + */ +function bp_core_login_redirect( $redirect_to ) { + global $bp, $wpdb; + + // Don't mess with the redirect if this is not the root blog + if ( is_multisite() && $wpdb->blogid != bp_get_root_blog_id() ) + return $redirect_to; + + // If the redirect doesn't contain 'wp-admin', it's OK + if ( !empty( $_REQUEST['redirect_to'] ) && false === strpos( $_REQUEST['redirect_to'], 'wp-admin' ) ) + return $redirect_to; + + if ( false === strpos( wp_get_referer(), 'wp-login.php' ) && false === strpos( wp_get_referer(), 'activate' ) && empty( $_REQUEST['nr'] ) ) + return wp_get_referer(); + + return bp_get_root_domain(); +} +add_filter( 'login_redirect', 'bp_core_login_redirect' ); + +/*** + * bp_core_filter_user_welcome_email() + * + * Replace the generated password in the welcome email. + * This will not filter when the site admin registers a user. + * + * @uses locate_template To see if custom registration files exist + * @param string $welcome_email Complete email passed through WordPress + * @return string Filtered $welcome_email with 'PASSWORD' replaced by [User Set] + */ +function bp_core_filter_user_welcome_email( $welcome_email ) { + /* Don't touch the email if we don't have a custom registration template */ + if ( '' == locate_template( array( 'registration/register.php' ), false ) && '' == locate_template( array( 'register.php' ), false ) ) + return $welcome_email; + + // [User Set] Replaces 'PASSWORD' in welcome email; Represents value set by user + return str_replace( 'PASSWORD', __( '[User Set]', 'buddypress' ), $welcome_email ); +} +if ( !is_admin() && empty( $_GET['e'] ) ) + add_filter( 'update_welcome_user_email', 'bp_core_filter_user_welcome_email' ); + +/*** + * bp_core_filter_blog_welcome_email() + * + * Replace the generated password in the welcome email. + * This will not filter when the site admin registers a user. + * + * @uses locate_template To see if custom registration files exist + * @param string $welcome_email Complete email passed through WordPress + * @param integer $blog_id ID of the blog user is joining + * @param integer $user_id ID of the user joining + * @param string $password Password of user + * @return string Filtered $welcome_email with $password replaced by [User Set] + */ +function bp_core_filter_blog_welcome_email( $welcome_email, $blog_id, $user_id, $password ) { + /* Don't touch the email if we don't have a custom registration template */ + if ( '' == locate_template( array( 'registration/register.php' ), false ) && '' == locate_template( array( 'register.php' ), false ) ) + return $welcome_email; + + // [User Set] Replaces $password in welcome email; Represents value set by user + return str_replace( $password, __( '[User Set]', 'buddypress' ), $welcome_email ); +} +if ( !is_admin() && empty( $_GET['e'] ) ) + add_filter( 'update_welcome_email', 'bp_core_filter_blog_welcome_email', 10, 4 ); + +// Notify user of signup success. +function bp_core_activation_signup_blog_notification( $domain, $path, $title, $user, $user_email, $key, $meta ) { + + // Send email with activation link. + $activate_url = bp_get_activation_page() ."?key=$key"; + $activate_url = esc_url( $activate_url ); + + $admin_email = get_site_option( 'admin_email' ); + + if ( empty( $admin_email ) ) + $admin_email = 'support@' . $_SERVER['SERVER_NAME']; + + $from_name = ( '' == get_site_option( 'site_name' ) ) ? 'WordPress' : esc_html( get_site_option( 'site_name' ) ); + $message_headers = "MIME-Version: 1.0\n" . "From: \"{$from_name}\" <{$admin_email}>\n" . "Content-Type: text/plain; charset=\"" . get_option( 'blog_charset' ) . "\"\n"; + $message = sprintf( __( "Thanks for registering! To complete the activation of your account and blog, please click the following link:\n\n%1\$s\n\n\n\nAfter you activate, you can visit your blog here:\n\n%2\$s", 'buddypress' ), $activate_url, esc_url( "http://{$domain}{$path}" ) ); + $subject = '[' . $from_name . '] ' . sprintf(__( 'Activate %s', 'buddypress' ), esc_url( 'http://' . $domain . $path ) ); + + // Send the message + $to = apply_filters( 'bp_core_activation_signup_blog_notification_to', $user_email, $domain, $path, $title, $user, $user_email, $key, $meta ); + $subject = apply_filters( 'bp_core_activation_signup_blog_notification_subject', $subject, $domain, $path, $title, $user, $user_email, $key, $meta ); + $message = apply_filters( 'bp_core_activation_signup_blog_notification_message', $message, $domain, $path, $title, $user, $user_email, $key, $meta ); + + wp_mail( $to, $subject, $message, $message_headers ); + + do_action( 'bp_core_sent_blog_signup_email', $admin_email, $subject, $message, $domain, $path, $title, $user, $user_email, $key, $meta ); + + // Return false to stop the original WPMU function from continuing + return false; +} +if ( !is_admin() ) + add_filter( 'wpmu_signup_blog_notification', 'bp_core_activation_signup_blog_notification', 1, 7 ); + +function bp_core_activation_signup_user_notification( $user, $user_email, $key, $meta ) { + + $activate_url = bp_get_activation_page() . "?key=$key"; + $activate_url = esc_url($activate_url); + $admin_email = get_site_option( 'admin_email' ); + + if ( empty( $admin_email ) ) + $admin_email = 'support@' . $_SERVER['SERVER_NAME']; + + // If this is an admin generated activation, add a param to email the + // user login details + $email = is_admin() ? '&e=1' : ''; + + $from_name = ( '' == get_site_option( 'site_name' ) ) ? 'WordPress' : esc_html( get_site_option( 'site_name' ) ); + $message_headers = "MIME-Version: 1.0\n" . "From: \"{$from_name}\" <{$admin_email}>\n" . "Content-Type: text/plain; charset=\"" . get_option( 'blog_charset' ) . "\"\n"; + $message = sprintf( __( "Thanks for registering! To complete the activation of your account please click the following link:\n\n%s\n\n", 'buddypress' ), $activate_url . $email ); + $subject = '[' . $from_name . '] ' . __( 'Activate Your Account', 'buddypress' ); + + // Send the message + $to = apply_filters( 'bp_core_activation_signup_user_notification_to', $user_email, $user, $user_email, $key, $meta ); + $subject = apply_filters( 'bp_core_activation_signup_user_notification_subject', $subject, $user, $user_email, $key, $meta ); + $message = apply_filters( 'bp_core_activation_signup_user_notification_message', $message, $user, $user_email, $key, $meta ); + + wp_mail( $to, $subject, $message, $message_headers ); + + do_action( 'bp_core_sent_user_signup_email', $admin_email, $subject, $message, $user, $user_email, $key, $meta ); + + // Return false to stop the original WPMU function from continuing + return false; +} +if ( !is_admin() || ( is_admin() && empty( $_POST['noconfirmation'] ) ) ) + add_filter( 'wpmu_signup_user_notification', 'bp_core_activation_signup_user_notification', 1, 4 ); + +/** + * Filter the page title for BuddyPress pages + * + * @global object $bp BuddyPress global settings + * @global unknown $post + * @global WP_Query $wp_query WordPress query object + * @param string $title Original page title + * @param string $sep How to separate the various items within the page title. + * @param string $seplocation Direction to display title + * @return string new page title + * @see wp_title() + * @since 1.5 + */ +function bp_modify_page_title( $title, $sep, $seplocation ) { + global $bp, $post, $wp_query; + + // If this is not a BP page, just return the title produced by WP + if ( bp_is_blog_page() ) + return $title; + + // If this is the front page of the site, return WP's title + if ( is_front_page() || is_home() ) + return $title; + + $title = ''; + + // Displayed user + if ( !empty( $bp->displayed_user->fullname ) && !is_404() ) { + // translators: "displayed user's name | canonicalised component name" + $title = strip_tags( sprintf( __( '%1$s | %2$s', 'buddypress' ), bp_get_displayed_user_fullname(), __( ucwords( bp_current_component() ), 'buddypress' ) ) ); + + // A single group + } elseif ( bp_is_active( 'groups' ) && !empty( $bp->groups->current_group ) && !empty( $bp->bp_options_nav[$bp->groups->current_group->slug] ) ) { + $subnav = isset( $bp->bp_options_nav[$bp->groups->current_group->slug][$bp->current_action]['name'] ) ? $bp->bp_options_nav[$bp->groups->current_group->slug][$bp->current_action]['name'] : ''; + // translators: "group name | group nav section name" + $title = sprintf( __( '%1$s | %2$s', 'buddypress' ), $bp->bp_options_title, $subnav ); + + // A single item from a component other than groups + } elseif ( bp_is_single_item() ) { + // translators: "component item name | component nav section name | root component name" + $title = sprintf( __( '%1$s | %2$s | %3$s', 'buddypress' ), $bp->bp_options_title, $bp->bp_options_nav[$bp->current_item][$bp->current_action]['name'], bp_get_name_from_root_slug( bp_get_root_slug() ) ); + + // An index or directory + } elseif ( bp_is_directory() ) { + if ( !bp_current_component() ) + $title = sprintf( __( '%s Directory', 'buddypress' ), __( bp_get_name_from_root_slug(), 'buddypress' ) ); + else + $title = sprintf( __( '%s Directory', 'buddypress' ), __( bp_get_name_from_root_slug(), 'buddypress' ) ); + + // Sign up page + } elseif ( bp_is_register_page() ) { + $title = __( 'Create an Account', 'buddypress' ); + + // Activation page + } elseif ( bp_is_activation_page() ) { + $title = __( 'Activate your Account', 'buddypress' ); + + // Group creation page + } elseif ( bp_is_group_create() ) { + $title = __( 'Create a Group', 'buddypress' ); + + // Blog creation page + } elseif ( bp_is_create_blog() ) { + $title = __( 'Create a Site', 'buddypress' ); + } + + // Some BP nav items contain item counts. Remove them + $title = preg_replace( '|<span>[0-9]+</span>|', '', $title ); + + return apply_filters( 'bp_modify_page_title', $title . " $sep ", $title, $sep, $seplocation ); +} +add_filter( 'wp_title', 'bp_modify_page_title', 10, 3 ); +add_filter( 'bp_modify_page_title', 'wptexturize' ); +add_filter( 'bp_modify_page_title', 'convert_chars' ); +add_filter( 'bp_modify_page_title', 'esc_html' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-functions.php b/wp-content/plugins/buddypress/bp-core/bp-core-functions.php new file mode 100644 index 0000000..5271576 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-functions.php @@ -0,0 +1,1477 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Retrieve an option + * + * This is a wrapper for get_blog_option(), which in turn stores settings data (such as bp-pages) + * on the appropriate blog, given your current setup. + * + * The 'bp_get_option' filter is primarily for backward-compatibility. + * + * @package BuddyPress + * @since 1.5 + * + * @uses bp_get_root_blog_id() + * @param str $option_name The option to be retrieved + * @param str $default Optional. Default value to be returned if the option isn't set + * @return mixed The value for the option + */ +function bp_get_option( $option_name, $default = '' ) { + $value = get_blog_option( bp_get_root_blog_id(), $option_name, $default ); + + return apply_filters( 'bp_get_option', $value ); +} + +/** + * Save an option + * + * This is a wrapper for update_blog_option(), which in turn stores settings data (such as bp-pages) + * on the appropriate blog, given your current setup. + * + * @package BuddyPress + * @since 1.5 + * + * @uses bp_get_root_blog_id() + * @param str $option_name The option key to be set + * @param str $value The value to be set + */ +function bp_update_option( $option_name, $value ) { + update_blog_option( bp_get_root_blog_id(), $option_name, $value ); +} + +/** + * Delete an option + * + * This is a wrapper for delete_blog_option(), which in turn deletes settings data (such as + * bp-pages) on the appropriate blog, given your current setup. + * + * @package BuddyPress + * @since 1.5 + * + * @uses bp_get_root_blog_id() + * @param str $option_name The option key to be set + */ +function bp_delete_option( $option_name ) { + delete_blog_option( bp_get_root_blog_id(), $option_name ); +} + +/** + * Allow filtering of database prefix. Intended for use in multinetwork installations. + * + * @global object $wpdb WordPress database object + * @return string Filtered database prefix + */ +function bp_core_get_table_prefix() { + global $wpdb; + + return apply_filters( 'bp_core_get_table_prefix', $wpdb->base_prefix ); +} + +/** + * Fetches BP pages from the meta table, depending on setup + * + * @package BuddyPress Core + * @since 1.5 + * + * @todo Remove the "Upgrading from an earlier version of BP pre-1.5" block. Temporary measure for + * people running trunk installations. Leave for a version or two, then remove. + */ +function bp_core_get_directory_page_ids() { + $page_ids = bp_get_option( 'bp-pages' ); + + // Upgrading from an earlier version of BP pre-1.5 + if ( !isset( $page_ids['members'] ) && $ms_page_ids = get_site_option( 'bp-pages' ) ) { + $page_blog_id = bp_is_multiblog_mode() ? get_current_blog_id() : bp_get_root_blog_id(); + + if ( isset( $ms_page_ids[$page_blog_id] ) ) { + $page_ids = $ms_page_ids[$page_blog_id]; + + bp_update_option( 'bp-pages', $page_ids ); + } + } + + // Ensure that empty indexes are unset. Should only matter in edge cases + if ( $page_ids && is_array( $page_ids ) ) { + foreach( (array)$page_ids as $component_name => $page_id ) { + if ( empty( $component_name ) || empty( $page_id ) ) { + unset( $page_ids[$component_name] ); + } + } + } + + return apply_filters( 'bp_core_get_directory_page_ids', $page_ids ); +} + +/** + * Stores BP pages in the meta table, depending on setup + * + * bp-pages data is stored in site_options (falls back to options on non-MS), in an array keyed by + * blog_id. This allows you to change your bp_get_root_blog_id() and go through the setup process again. + * + * @package BuddyPress Core + * @since 1.5 + * + * @param array $blog_page_ids The IDs of the WP pages corresponding to BP component directories + */ +function bp_core_update_directory_page_ids( $blog_page_ids ) { + bp_update_option( 'bp-pages', $blog_page_ids ); +} + +/** + * Get bp-pages names and slugs + * + * @package BuddyPress Core + * @since 1.5 + * + * @return obj $pages Page names, IDs, and slugs + */ +function bp_core_get_directory_pages() { + global $wpdb, $bp; + + // Set pages as standard class + $pages = new stdClass; + + // Get pages and IDs + if ( $page_ids = bp_core_get_directory_page_ids() ) { + + // Always get page data from the root blog, except on multiblog mode, when it comes + // from the current blog + $posts_table_name = bp_is_multiblog_mode() ? $wpdb->posts : $wpdb->get_blog_prefix( bp_get_root_blog_id() ) . 'posts'; + $page_ids_sql = implode( ',', (array)$page_ids ); + $page_names = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_name, post_parent, post_title FROM {$posts_table_name} WHERE ID IN ({$page_ids_sql}) AND post_status = 'publish' " ) ); + + foreach ( (array)$page_ids as $component_id => $page_id ) { + foreach ( (array)$page_names as $page_name ) { + if ( $page_name->ID == $page_id ) { + $pages->{$component_id}->name = $page_name->post_name; + $pages->{$component_id}->id = $page_name->ID; + $pages->{$component_id}->title = $page_name->post_title; + $slug[] = $page_name->post_name; + + // Get the slug + while ( $page_name->post_parent != 0 ) { + $parent = $wpdb->get_results( $wpdb->prepare( "SELECT post_name, post_parent FROM {$posts_table_name} WHERE ID = %d", $page_name->post_parent ) ); + $slug[] = $parent[0]->post_name; + $page_name->post_parent = $parent[0]->post_parent; + } + + $pages->{$component_id}->slug = implode( '/', array_reverse( (array)$slug ) ); + } + + unset( $slug ); + } + } + } + + return apply_filters( 'bp_core_get_directory_pages', $pages ); +} + +/** + * Creates a default component slug from a WP page root_slug + * + * Since 1.5, BP components get their root_slug (the slug used immediately + * following the root domain) from the slug of a corresponding WP page. + * + * E.g. if your BP installation at example.com has its members page at + * example.com/community/people, $bp->members->root_slug will be 'community/people'. + * + * By default, this function creates a shorter version of the root_slug for + * use elsewhere in the URL, by returning the content after the final '/' + * in the root_slug ('people' in the example above). + * + * Filter on 'bp_core_component_slug_from_root_slug' to override this method + * in general, or define a specific component slug constant (e.g. BP_MEMBERS_SLUG) + * to override specific component slugs. + * + * @package BuddyPress Core + * @since 1.5 + * + * @param str $root_slug The root slug, which comes from $bp->pages->[component]->slug + * @return str $slug The short slug for use in the middle of URLs + */ +function bp_core_component_slug_from_root_slug( $root_slug ) { + $slug_chunks = explode( '/', $root_slug ); + $slug = array_pop( $slug_chunks ); + + return apply_filters( 'bp_core_component_slug_from_root_slug', $slug, $root_slug ); +} + +function bp_core_do_network_admin() { + $do_network_admin = false; + + if ( is_multisite() && !bp_is_multiblog_mode() ) + $do_network_admin = true; + + return apply_filters( 'bp_core_do_network_admin', $do_network_admin ); +} + +function bp_core_admin_hook() { + $hook = bp_core_do_network_admin() ? 'network_admin_menu' : 'admin_menu'; + + return apply_filters( 'bp_core_admin_hook', $hook ); +} + +/** + * Initializes the wp-admin area "BuddyPress" menus and sub menus. + * + * @package BuddyPress Core + * @uses is_super_admin() returns true if the current user is a site admin, false if not + */ +function bp_core_admin_menu_init() { + if ( !is_super_admin() ) + return false; + + add_action( bp_core_admin_hook(), 'bp_core_add_admin_menu', 9 ); + + require ( BP_PLUGIN_DIR . '/bp-core/admin/bp-core-admin.php' ); +} +add_action( 'bp_init', 'bp_core_admin_menu_init' ); + +/** + * Adds the "BuddyPress" admin submenu item to the Site Admin tab. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + * @uses is_super_admin() returns true if the current user is a site admin, false if not + * @uses add_submenu_page() WP function to add a submenu item + */ +function bp_core_add_admin_menu() { + if ( !is_super_admin() ) + return false; + + // Don't add this version of the admin menu if a BP upgrade is in progress + // See bp_core_update_add_admin_menu() + if ( defined( 'BP_IS_UPGRADE' ) && BP_IS_UPGRADE ) + return false; + + $hooks = array(); + + // Add the administration tab under the "Site Admin" tab for site administrators + $hooks[] = add_menu_page( __( 'BuddyPress', 'buddypress' ), __( 'BuddyPress', 'buddypress' ), 'manage_options', 'bp-general-settings', 'bp_core_admin_component_setup', '' ); + $hooks[] = add_submenu_page( 'bp-general-settings', __( 'Components', 'buddypress' ), __( 'Components', 'buddypress' ), 'manage_options', 'bp-general-settings', 'bp_core_admin_component_setup' ); + $hooks[] = add_submenu_page( 'bp-general-settings', __( 'Pages', 'buddypress' ), __( 'Pages', 'buddypress' ), 'manage_options', 'bp-page-settings', 'bp_core_admin_page_setup' ); + $hooks[] = add_submenu_page( 'bp-general-settings', __( 'Settings', 'buddypress' ), __( 'Settings', 'buddypress' ), 'manage_options', 'bp-settings', 'bp_core_admin_settings' ); + + // Add a hook for css/js + foreach( $hooks as $hook ) + add_action( "admin_print_styles-$hook", 'bp_core_add_admin_menu_styles' ); +} + +/** + * Print admin messages to admin_notices or network_admin_notices + * + * BuddyPress combines all its messages into a single notice, to avoid a preponderance of yellow + * boxes. + * + * @package BuddyPress Core + * @since 1.5 + * + * @global object $bp Global BuddyPress settings object + * @uses is_super_admin() to check current user permissions before showing the notices + * @uses bp_is_root_blog() + */ +function bp_core_print_admin_notices() { + global $bp; + + // Only the super admin should see messages + if ( !is_super_admin() ) + return; + + // On multisite installs, don't show on the Site Admin of a non-root blog, unless + // do_network_admin is overridden + if ( is_multisite() && bp_core_do_network_admin() && !bp_is_root_blog() ) + return; + + // Show the messages + if ( !empty( $bp->admin->notices ) ) { + ?> + <div id="message" class="updated fade"> + <?php foreach( $bp->admin->notices as $notice ) : ?> + <p><?php echo $notice ?></p> + <?php endforeach ?> + </div> + <?php + } +} +add_action( 'admin_notices', 'bp_core_print_admin_notices' ); +add_action( 'network_admin_notices', 'bp_core_print_admin_notices' ); + +/** + * Add an admin notice to the BP queue + * + * Messages added with this function are displayed in BuddyPress's general purpose admin notices + * box. It is recommended that you hook this function to admin_init, so that your messages are + * loaded in time. + * + * @package BuddyPress Core + * @since 1.5 + * + * @global object $bp Global BuddyPress settings object + * @param string $notice The notice you are adding to the queue + */ +function bp_core_add_admin_notice( $notice ) { + global $bp; + + if ( empty( $bp->admin->notices ) ) { + $bp->admin->notices = array(); + } + + $bp->admin->notices[] = $notice; +} + +/** + * Verify that some BP prerequisites are set up properly, and notify the admin if not + * + * On every Dashboard page, this function checks the following: + * - that pretty permalinks are enabled + * - that a BP-compatible theme is activated + * - that every BP component that needs a WP page for a directory has one + * - that no WP page has multiple BP components associated with it + * The administrator will be shown a notice for each check that fails. + * + * @package BuddyPress Core + */ +function bp_core_activation_notice() { + global $wp_rewrite, $wpdb, $bp; + + // Only the super admin gets warnings + if ( !is_super_admin() ) + return; + + // On multisite installs, don't load on a non-root blog, unless do_network_admin is + // overridden + if ( is_multisite() && bp_core_do_network_admin() && !bp_is_root_blog() ) + return; + + // Don't show these messages during setup or upgrade + if ( isset( $bp->maintenance_mode ) ) + return; + + /** + * Check to make sure that the blog setup routine has run. This can't happen during the + * wizard because of the order which the components are loaded. We check for multisite here + * on the off chance that someone has activated the blogs component and then disabled MS + */ + if ( bp_is_active( 'blogs' ) ) { + $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$bp->blogs->table_name}" ) ); + + if ( !$count ) + bp_blogs_record_existing_blogs(); + } + + /** + * Are pretty permalinks enabled? + */ + if ( isset( $_POST['permalink_structure'] ) ) + return false; + + if ( empty( $wp_rewrite->permalink_structure ) ) { + bp_core_add_admin_notice( sprintf( __( '<strong>BuddyPress is almost ready</strong>. You must <a href="%s">update your permalink structure</a> to something other than the default for it to work.', 'buddypress' ), admin_url( 'options-permalink.php' ) ) ); + } + + /** + * Are you using a BP-compatible theme? + */ + + // Get current theme info + // Backward-compatibility with WP < 3.4 will be removed in a future release + if ( function_exists( 'wp_get_theme' ) ) { + $ct = wp_get_theme(); + } else { + $ct = current_theme_info(); + } + + // The best way to remove this notice is to add a "buddypress" tag to + // your active theme's CSS header. + if ( !defined( 'BP_SILENCE_THEME_NOTICE' ) && !in_array( 'buddypress', (array)$ct->tags ) ) { + bp_core_add_admin_notice( sprintf( __( "You'll need to <a href='%s'>activate a <strong>BuddyPress-compatible theme</strong></a> to take advantage of all of BuddyPress's features. We've bundled a default theme, but you can always <a href='%s'>install some other compatible themes</a> or <a href='%s'>update your existing WordPress theme</a>.", 'buddypress' ), admin_url( 'themes.php' ), network_admin_url( 'theme-install.php?type=tag&s=buddypress&tab=search' ), network_admin_url( 'plugin-install.php?type=term&tab=search&s=%22bp-template-pack%22' ) ) ); + } + + /** + * Check for orphaned BP components (BP component is enabled, no WP page exists) + */ + + $orphaned_components = array(); + $wp_page_components = array(); + + // Only components with 'has_directory' require a WP page to function + foreach( $bp->loaded_components as $component_id => $is_active ) { + if ( !empty( $bp->{$component_id}->has_directory ) ) { + $wp_page_components[] = array( + 'id' => $component_id, + 'name' => isset( $bp->{$component_id}->name ) ? $bp->{$component_id}->name : ucwords( $bp->{$component_id}->id ) + ); + } + } + + // Activate and Register are special cases. They are not components but they need WP pages. + // If user registration is disabled, we can skip this step. + if ( bp_get_signup_allowed() ) { + $wp_page_components[] = array( + 'id' => 'activate', + 'name' => __( 'Activate', 'buddypress' ) + ); + + $wp_page_components[] = array( + 'id' => 'register', + 'name' => __( 'Register', 'buddypress' ) + ); + } + + foreach( $wp_page_components as $component ) { + if ( !isset( $bp->pages->{$component['id']} ) ) { + $orphaned_components[] = $component['name']; + } + } + + if ( !empty( $orphaned_components ) ) { + $admin_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings' ), 'admin.php' ) ); + $notice = sprintf( __( 'The following active BuddyPress Components do not have associated WordPress Pages: %2$s. <a href="%1$s" class="button-secondary">Repair</a>', 'buddypress' ), $admin_url, '<strong>' . implode( '</strong>, <strong>', $orphaned_components ) . '</strong>' ); + + bp_core_add_admin_notice( $notice ); + } + + /** + * BP components cannot share a single WP page. Check for duplicate assignments, and post + * a message if found. + */ + $dupe_names = array(); + $page_ids = (array)bp_core_get_directory_page_ids(); + $dupes = array_diff_assoc( $page_ids, array_unique( $page_ids ) ); + + if ( !empty( $dupes ) ) { + foreach( $dupes as $dupe_component => $dupe_id ) { + $dupe_names[] = $bp->pages->{$dupe_component}->title; + } + + // Make sure that there are no duplicate duplicates :) + $dupe_names = array_unique( $dupe_names ); + } + + // If there are duplicates, post a message about them + if ( !empty( $dupe_names ) ) { + $admin_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings' ), 'admin.php' ) ); + $notice = sprintf( __( 'Each BuddyPress Component needs its own WordPress page. The following WordPress Pages have more than one component associated with them: %2$s. <a href="%1$s" class="button-secondary">Repair</a>', 'buddypress' ), $admin_url, '<strong>' . implode( '</strong>, <strong>', $dupe_names ) . '</strong>' ); + + bp_core_add_admin_notice( $notice ); + } +} +add_action( 'admin_init', 'bp_core_activation_notice' ); + +/** + * Returns the domain for the root blog. + * eg: http://domain.com/ OR https://domain.com + * + * @package BuddyPress Core + * @uses get_blog_option() WordPress function to fetch blog meta. + * @return $domain The domain URL for the blog. + */ +function bp_core_get_root_domain() { + global $wpdb; + + $domain = get_home_url( bp_get_root_blog_id() ); + + return apply_filters( 'bp_core_get_root_domain', $domain ); +} + +/** + * Get the current GMT time to save into the DB + * + * @package BuddyPress Core + * @since 1.2.6 + */ +function bp_core_current_time( $gmt = true ) { + // Get current time in MYSQL format + $current_time = current_time( 'mysql', $gmt ); + + return apply_filters( 'bp_core_current_time', $current_time ); +} + +/** + * Adds a feedback (error/success) message to the WP cookie so it can be + * displayed after the page reloads. + * + * @package BuddyPress Core + * + * @global obj $bp + * @param str $message Feedback to give to user + * @param str $type updated|success|error|warning + */ +function bp_core_add_message( $message, $type = '' ) { + global $bp; + + // Success is the default + if ( empty( $type ) ) + $type = 'success'; + + // Send the values to the cookie for page reload display + @setcookie( 'bp-message', $message, time() + 60 * 60 * 24, COOKIEPATH ); + @setcookie( 'bp-message-type', $type, time() + 60 * 60 * 24, COOKIEPATH ); + + /*** + * Send the values to the $bp global so we can still output messages + * without a page reload + */ + $bp->template_message = $message; + $bp->template_message_type = $type; +} + +/** + * Checks if there is a feedback message in the WP cookie, if so, adds a + * "template_notices" action so that the message can be parsed into the template + * and displayed to the user. + * + * After the message is displayed, it removes the message vars from the cookie + * so that the message is not shown to the user multiple times. + * + * @package BuddyPress Core + * @global $bp_message The message text + * @global $bp_message_type The type of message (error/success) + * @uses setcookie() Sets a cookie value for the user. + */ +function bp_core_setup_message() { + global $bp; + + if ( empty( $bp->template_message ) && isset( $_COOKIE['bp-message'] ) ) + $bp->template_message = $_COOKIE['bp-message']; + + if ( empty( $bp->template_message_type ) && isset( $_COOKIE['bp-message-type'] ) ) + $bp->template_message_type = $_COOKIE['bp-message-type']; + + add_action( 'template_notices', 'bp_core_render_message' ); + + @setcookie( 'bp-message', false, time() - 1000, COOKIEPATH ); + @setcookie( 'bp-message-type', false, time() - 1000, COOKIEPATH ); +} +add_action( 'bp_actions', 'bp_core_setup_message', 5 ); + +/** + * Renders a feedback message (either error or success message) to the theme template. + * The hook action 'template_notices' is used to call this function, it is not called directly. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + */ +function bp_core_render_message() { + global $bp; + + if ( !empty( $bp->template_message ) ) : + $type = ( 'success' == $bp->template_message_type ) ? 'updated' : 'error'; + $content = apply_filters( 'bp_core_render_message_content', $bp->template_message, $type ); ?> + + <div id="message" class="<?php echo $type; ?>"> + + <?php echo $content; ?> + + </div> + + <?php + + do_action( 'bp_core_render_message' ); + + endif; +} + +/** + * Format numbers the BuddyPress way + * + * @param str $number + * @param bool $decimals + * @return str + */ +function bp_core_number_format( $number, $decimals = false ) { + // Check we actually have a number first. + if ( empty( $number ) ) + return $number; + + return apply_filters( 'bp_core_number_format', number_format( $number, $decimals ), $number, $decimals ); +} + +/** + * Based on function created by Dunstan Orchard - http://1976design.com + * + * This function will return an English representation of the time elapsed + * since a given date. + * eg: 2 hours and 50 minutes + * eg: 4 days + * eg: 4 weeks and 6 days + * + * @package BuddyPress Core + * @param $older_date int Unix timestamp of date you want to calculate the time since for + * @param $newer_date int Unix timestamp of date to compare older date to. Default false (current time). + * @return str The time since. + */ +function bp_core_time_since( $older_date, $newer_date = false ) { + + // Setup the strings + $unknown_text = apply_filters( 'bp_core_time_since_unknown_text', __( 'sometime', 'buddypress' ) ); + $right_now_text = apply_filters( 'bp_core_time_since_right_now_text', __( 'right now', 'buddypress' ) ); + $ago_text = apply_filters( 'bp_core_time_since_ago_text', __( '%s ago', 'buddypress' ) ); + + // array of time period chunks + $chunks = array( + array( 60 * 60 * 24 * 365 , __( 'year', 'buddypress' ), __( 'years', 'buddypress' ) ), + array( 60 * 60 * 24 * 30 , __( 'month', 'buddypress' ), __( 'months', 'buddypress' ) ), + array( 60 * 60 * 24 * 7, __( 'week', 'buddypress' ), __( 'weeks', 'buddypress' ) ), + array( 60 * 60 * 24 , __( 'day', 'buddypress' ), __( 'days', 'buddypress' ) ), + array( 60 * 60 , __( 'hour', 'buddypress' ), __( 'hours', 'buddypress' ) ), + array( 60 , __( 'minute', 'buddypress' ), __( 'minutes', 'buddypress' ) ), + array( 1, __( 'second', 'buddypress' ), __( 'seconds', 'buddypress' ) ) + ); + + if ( !empty( $older_date ) && !is_numeric( $older_date ) ) { + $time_chunks = explode( ':', str_replace( ' ', ':', $older_date ) ); + $date_chunks = explode( '-', str_replace( ' ', '-', $older_date ) ); + $older_date = gmmktime( (int)$time_chunks[1], (int)$time_chunks[2], (int)$time_chunks[3], (int)$date_chunks[1], (int)$date_chunks[2], (int)$date_chunks[0] ); + } + + /** + * $newer_date will equal false if we want to know the time elapsed between + * a date and the current time. $newer_date will have a value if we want to + * work out time elapsed between two known dates. + */ + $newer_date = ( !$newer_date ) ? strtotime( bp_core_current_time() ) : $newer_date; + + // Difference in seconds + $since = $newer_date - $older_date; + + // Something went wrong with date calculation and we ended up with a negative date. + if ( 0 > $since ) { + $output = $unknown_text; + + /** + * We only want to output two chunks of time here, eg: + * x years, xx months + * x days, xx hours + * so there's only two bits of calculation below: + */ + } else { + + // Step one: the first chunk + for ( $i = 0, $j = count( $chunks ); $i < $j; ++$i ) { + $seconds = $chunks[$i][0]; + + // Finding the biggest chunk (if the chunk fits, break) + if ( ( $count = floor($since / $seconds) ) != 0 ) { + break; + } + } + + // If $i iterates all the way to $j, then the event happened 0 seconds ago + if ( !isset( $chunks[$i] ) ) { + $output = $right_now_text; + + } else { + + // Set output var + $output = ( 1 == $count ) ? '1 '. $chunks[$i][1] : $count . ' ' . $chunks[$i][2]; + + // Step two: the second chunk + if ( $i + 2 < $j ) { + $seconds2 = $chunks[$i + 1][0]; + $name2 = $chunks[$i + 1][1]; + + if ( ( $count2 = floor( ( $since - ( $seconds * $count ) ) / $seconds2 ) ) != 0 ) { + // Add to output var + $output .= ( 1 == $count2 ) ? _x( ',', 'Separator in time since', 'buddypress' ) . ' 1 '. $chunks[$i + 1][1] : _x( ',', 'Separator in time since', 'buddypress' ) . ' ' . $count2 . ' ' . $chunks[$i + 1][2]; + } + } + + // No output, so happened right now + if ( !(int)trim( $output ) ) { + $output = $right_now_text; + } + } + } + + // Append 'ago' to the end of time-since if not 'right now' + if ( $output != $right_now_text ) { + $output = sprintf( $ago_text, $output ); + } + + return $output; +} + +/** + * Record user activity to the database. Many functions use a "last active" feature to + * show the length of time since the user was last active. + * This function will update that time as a usermeta setting for the user every 5 minutes. + * + * @package BuddyPress Core + * @global $userdata WordPress user data for the current logged in user. + * @uses bp_update_user_meta() BP function to update user metadata in the usermeta table. + */ +function bp_core_record_activity() { + global $bp; + + if ( !is_user_logged_in() ) + return false; + + $user_id = $bp->loggedin_user->id; + + if ( bp_core_is_user_spammer( $user_id ) || bp_core_is_user_deleted( $user_id ) ) + return false; + + $activity = bp_get_user_meta( $user_id, 'last_activity', true ); + + if ( !is_numeric( $activity ) ) + $activity = strtotime( $activity ); + + // Get current time + $current_time = bp_core_current_time(); + + if ( empty( $activity ) || strtotime( $current_time ) >= strtotime( '+5 minutes', $activity ) ) + bp_update_user_meta( $user_id, 'last_activity', $current_time ); +} +add_action( 'wp_head', 'bp_core_record_activity' ); + +/** + * Formats last activity based on time since date given. + * + * @package BuddyPress Core + * @param last_activity_date The date of last activity. + * @param $before The text to prepend to the activity time since figure. + * @param $after The text to append to the activity time since figure. + * @uses bp_core_time_since() This function will return an English representation of the time elapsed. + */ +function bp_core_get_last_activity( $last_activity_date, $string ) { + if ( !$last_activity_date || empty( $last_activity_date ) ) + $last_active = __( 'not recently active', 'buddypress' ); + else + $last_active = sprintf( $string, bp_core_time_since( $last_activity_date ) ); + + return apply_filters( 'bp_core_get_last_activity', $last_active, $last_activity_date, $string ); +} + +/** + * Get the path of of the current site. + * + * @package BuddyPress Core + * + * @global $bp $bp + * @global object $current_site + * @return string + */ +function bp_core_get_site_path() { + global $bp, $current_site; + + if ( is_multisite() ) + $site_path = $current_site->path; + else { + $site_path = (array) explode( '/', home_url() ); + + if ( count( $site_path ) < 2 ) + $site_path = '/'; + else { + // Unset the first three segments (http(s)://domain.com part) + unset( $site_path[0] ); + unset( $site_path[1] ); + unset( $site_path[2] ); + + if ( !count( $site_path ) ) + $site_path = '/'; + else + $site_path = '/' . implode( '/', $site_path ) . '/'; + } + } + + return apply_filters( 'bp_core_get_site_path', $site_path ); +} + +/** + * Performs a status safe wp_redirect() that is compatible with bp_catch_uri() + * + * @package BuddyPress Core + * @global $bp_no_status_set Makes sure that there are no conflicts with status_header() called in bp_core_do_catch_uri() + * @uses get_themes() + * @return An array containing all of the themes. + */ +function bp_core_redirect( $location, $status = 302 ) { + global $bp_no_status_set; + + // Make sure we don't call status_header() in bp_core_do_catch_uri() + // as this conflicts with wp_redirect() + $bp_no_status_set = true; + + wp_redirect( $location, $status ); + die; +} + +/** + * Returns the referrer URL without the http(s):// + * + * @package BuddyPress Core + * @return The referrer URL + */ +function bp_core_referrer() { + $referer = explode( '/', wp_get_referer() ); + unset( $referer[0], $referer[1], $referer[2] ); + return implode( '/', $referer ); +} + +/** + * Adds illegal names to WP so that root components will not conflict with + * blog names on a subdirectory installation. + * + * For example, it would stop someone creating a blog with the slug "groups". + */ +function bp_core_add_illegal_names() { + update_site_option( 'illegal_names', get_site_option( 'illegal_names' ), array() ); +} + +/** + * A javascript free implementation of the search functions in BuddyPress + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + * @param string $slug The slug to redirect to for searching. + */ +function bp_core_action_search_site( $slug = '' ) { + global $bp; + + if ( !bp_is_current_component( bp_get_search_slug() ) ) + return; + + if ( empty( $_POST['search-terms'] ) ) { + bp_core_redirect( bp_get_root_domain() ); + return; + } + + $search_terms = stripslashes( $_POST['search-terms'] ); + $search_which = !empty( $_POST['search-which'] ) ? $_POST['search-which'] : ''; + $query_string = '/?s='; + + if ( empty( $slug ) ) { + switch ( $search_which ) { + case 'posts': + $slug = ''; + $var = '/?s='; + + // If posts aren't displayed on the front page, find the post page's slug. + if ( 'page' == get_option( 'show_on_front' ) ) { + $page = get_post( get_option( 'page_for_posts' ) ); + + if ( !is_wp_error( $page ) && !empty( $page->post_name ) ) { + $slug = $page->post_name; + $var = '?s='; + } + } + break; + + case 'blogs': + $slug = bp_is_active( 'blogs' ) ? bp_get_blogs_root_slug() : ''; + break; + + case 'forums': + $slug = bp_is_active( 'forums' ) ? bp_get_forums_root_slug() : ''; + $query_string = '/?fs='; + break; + + case 'groups': + $slug = bp_is_active( 'groups' ) ? bp_get_groups_root_slug() : ''; + break; + + case 'members': + default: + $slug = bp_get_members_root_slug(); + break; + } + + if ( empty( $slug ) && 'posts' != $search_which ) { + bp_core_redirect( bp_get_root_domain() ); + return; + } + } + + bp_core_redirect( apply_filters( 'bp_core_search_site', home_url( $slug . $query_string . urlencode( $search_terms ) ), $search_terms ) ); +} +add_action( 'bp_init', 'bp_core_action_search_site', 7 ); + +/** + * Prints the generation time in the footer of the site. + * + * @package BuddyPress Core + */ +function bp_core_print_generation_time() { +?> + +<!-- Generated in <?php timer_stop(1); ?> seconds. (<?php echo get_num_queries(); ?> q) --> + + <?php +} +add_action( 'wp_footer', 'bp_core_print_generation_time' ); + +/** + * Load the buddypress translation file for current language + * + * @package BuddyPress Core + */ +function bp_core_load_buddypress_textdomain() { + $locale = apply_filters( 'buddypress_locale', get_locale() ); + $mofile = sprintf( 'buddypress-%s.mo', $locale ); + $mofile_global = WP_LANG_DIR . '/' . $mofile; + $mofile_local = BP_PLUGIN_DIR . '/bp-languages/' . $mofile; + + if ( file_exists( $mofile_global ) ) + return load_textdomain( 'buddypress', $mofile_global ); + elseif ( file_exists( $mofile_local ) ) + return load_textdomain( 'buddypress', $mofile_local ); + else + return false; +} +add_action ( 'bp_init', 'bp_core_load_buddypress_textdomain', 2 ); + +function bp_core_add_ajax_hook() { + // Theme only, we already have the wp_ajax_ hook firing in wp-admin + if ( !defined( 'WP_ADMIN' ) && isset( $_REQUEST['action'] ) ) + do_action( 'wp_ajax_' . $_REQUEST['action'] ); +} +add_action( 'bp_init', 'bp_core_add_ajax_hook' ); + +/** + * Initializes {@link BP_Embed} after everything is loaded. + * + * @global object $bp BuddyPress global settings + * @package BuddyPress Core + * @since 1.5 + */ +function bp_embed_init() { + global $bp; + + if ( empty( $bp->embed ) ) + $bp->embed = new BP_Embed(); +} +add_action( 'bp_init', 'bp_embed_init', 9 ); + +/** + * When switching from single to multisite we need to copy blog options to + * site options. + * + * @package BuddyPress Core + * @todo Does this need to be here anymore after the introduction of bp_get_option etc? + */ +function bp_core_activate_site_options( $keys = array() ) { + global $bp; + + if ( !empty( $keys ) && is_array( $keys ) ) { + $errors = false; + + foreach ( $keys as $key => $default ) { + if ( empty( $bp->site_options[ $key ] ) ) { + $bp->site_options[ $key ] = bp_get_option( $key, $default ); + + if ( !bp_update_option( $key, $bp->site_options[ $key ] ) ) + $errors = true; + } + } + + if ( empty( $errors ) ) + return true; + } + + return false; +} + +/** + * BuddyPress uses common options to store configuration settings. Many of these + * settings are needed at run time. Instead of fetching them all and adding many + * initial queries to each page load, let's fetch them all in one go. + * + * @package BuddyPress Core + * @todo Use settings API and audit these methods + */ +function bp_core_get_root_options() { + global $wpdb; + + // These options come from the root blog options table + $root_blog_options = apply_filters( 'bp_core_site_options', array( + + // BuddyPress core settings + 'bp-deactivated-components' => serialize( array( ) ), + 'bp-blogs-first-install' => '0', + 'bp-disable-blogforum-comments' => '0', + 'bp-xprofile-base-group-name' => 'Base', + 'bp-xprofile-fullname-field-name' => 'Name', + 'bp-disable-profile-sync' => '0', + 'bp-disable-avatar-uploads' => '0', + 'bp-disable-account-deletion' => '0', + 'bp-disable-blogforum-comments' => '0', + 'bb-config-location' => ABSPATH . 'bb-config.php', + 'hide-loggedout-adminbar' => '0', + + // Useful WordPress settings + 'registration' => '0', + 'avatar_default' => 'mysteryman' + ) ); + + $root_blog_option_keys = array_keys( $root_blog_options ); + $blog_options_keys = "'" . join( "', '", (array) $root_blog_option_keys ) . "'"; + $blog_options_table = bp_is_multiblog_mode() ? $wpdb->options : $wpdb->get_blog_prefix( bp_get_root_blog_id() ) . 'options'; + + $blog_options_query = $wpdb->prepare( "SELECT option_name AS name, option_value AS value FROM {$blog_options_table} WHERE option_name IN ( {$blog_options_keys} )" ); + $root_blog_options_meta = $wpdb->get_results( $blog_options_query ); + + // On Multisite installations, some options must always be fetched from sitemeta + if ( is_multisite() ) { + $network_options = apply_filters( 'bp_core_network_options', array( + 'tags_blog_id' => '0', + 'sitewide_tags_blog' => '', + 'registration' => '0', + 'fileupload_maxk' => '1500' + ) ); + + $current_site = get_current_site(); + $network_option_keys = array_keys( $network_options ); + $sitemeta_options_keys = "'" . join( "', '", (array) $network_option_keys ) . "'"; + $sitemeta_options_query = $wpdb->prepare( "SELECT meta_key AS name, meta_value AS value FROM {$wpdb->sitemeta} WHERE meta_key IN ( {$sitemeta_options_keys} ) AND site_id = %d", $current_site->id ); + $network_options_meta = $wpdb->get_results( $sitemeta_options_query ); + + // Sitemeta comes second in the merge, so that network 'registration' value wins + $root_blog_options_meta = array_merge( $root_blog_options_meta, $network_options_meta ); + } + + // Missing some options, so do some one-time fixing + if ( empty( $root_blog_options_meta ) || ( count( $root_blog_options_meta ) < count( $root_blog_option_keys ) ) ) { + + // Unset the query - We'll be resetting it soon + unset( $root_blog_options_meta ); + + // Loop through options + foreach ( $root_blog_options as $old_meta_key => $old_meta_default ) { + // Clear out the value from the last time around + unset( $old_meta_value ); + + // Get old site option + if ( is_multisite() ) + $old_meta_value = get_site_option( $old_meta_key ); + + // No site option so look in root blog + if ( empty( $old_meta_value ) ) + $old_meta_value = bp_get_option( $old_meta_key, $old_meta_default ); + + // Update the root blog option + bp_update_option( $old_meta_key, $old_meta_value ); + + // Update the global array + $root_blog_options_meta[$old_meta_key] = $old_meta_value; + } + + // We're all matched up + } else { + // Loop through our results and make them usable + foreach ( $root_blog_options_meta as $root_blog_option ) + $root_blog_options[$root_blog_option->name] = $root_blog_option->value; + + // Copy the options no the return val + $root_blog_options_meta = $root_blog_options; + + // Clean up our temporary copy + unset( $root_blog_options ); + } + + return apply_filters( 'bp_core_get_root_options', $root_blog_options_meta ); +} + +/** + * This function originally let plugins add support for pages in the root of the install. + * These root level pages are now handled by actual WordPress pages and this function is now + * a convenience for compatibility with the new method. + * + * @global $bp BuddyPress global settings + * @param $slug str The slug of the component + */ +function bp_core_add_root_component( $slug ) { + global $bp; + + if ( empty( $bp->pages ) ) + $bp->pages = bp_core_get_directory_pages(); + + $match = false; + + // Check if the slug is registered in the $bp->pages global + foreach ( (array)$bp->pages as $key => $page ) { + if ( $key == $slug || $page->slug == $slug ) + $match = true; + } + + // If there was no match, add a page for this root component + if ( empty( $match ) ) { + $bp->add_root[] = $slug; + } + + // Make sure that this component is registered as requiring a top-level directory + if ( isset( $bp->{$slug} ) ) { + $bp->loaded_components[$bp->{$slug}->slug] = $bp->{$slug}->id; + $bp->{$slug}->has_directory = true; + } +} + +function bp_core_create_root_component_page() { + global $bp; + + $new_page_ids = array(); + + foreach ( (array)$bp->add_root as $slug ) + $new_page_ids[$slug] = wp_insert_post( array( 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_title' => ucwords( $slug ), 'post_status' => 'publish', 'post_type' => 'page' ) ); + + $page_ids = array_merge( (array) $new_page_ids, (array) bp_core_get_directory_page_ids() ); + bp_core_update_directory_page_ids( $page_ids ); +} + +/** + * Is this the root blog ID? + * + * @package BuddyPress + * @since 1.5 + * + * @param int $blog_id Optional. Defaults to the current blog id. + * @return bool $is_root_blog Returns true if this is bp_get_root_blog_id(). + */ +function bp_is_root_blog( $blog_id = 0 ) { + // Assume false + $is_root_blog = false; + + // Use current blog if no ID is passed + if ( empty( $blog_id ) ) + $blog_id = get_current_blog_id(); + + // Compare to root blog ID + if ( $blog_id == bp_get_root_blog_id() ) + $is_root_blog = true; + + return apply_filters( 'bp_is_root_blog', (bool) $is_root_blog ); +} + +/** + * Is this bp_get_root_blog_id()? + * + * @package BuddyPress + * @since 1.5 + * + * @param int $blog_id Optional. Defaults to the current blog id. + * @return bool $is_root_blog Returns true if this is bp_get_root_blog_id(). + */ +function bp_get_root_blog_id( $blog_id = false ) { + + // Define on which blog ID BuddyPress should run + if ( !defined( 'BP_ROOT_BLOG' ) ) { + + // Root blog is the main site on this network + if ( is_multisite() && !bp_is_multiblog_mode() ) { + $current_site = get_current_site(); + $root_blog_id = $current_site->blog_id; + + // Root blog is whatever the current site is (could be any site on the network) + } elseif ( is_multisite() && bp_is_multiblog_mode() ) { + $root_blog_id = get_current_blog_id(); + + // Root blog is the only blog on this network + } elseif( !is_multisite() ) { + $root_blog_id = 1; + } + + define( 'BP_ROOT_BLOG', $root_blog_id ); + + // Root blog is defined + } else { + $root_blog_id = BP_ROOT_BLOG; + } + + return apply_filters( 'bp_get_root_blog_id', (int) $root_blog_id ); +} + +/** + * Get the meta_key for a given piece of user metadata + * + * BuddyPress stores a number of pieces of userdata in the WordPress central usermeta table. In + * order to allow plugins to enable multiple instances of BuddyPress on a single WP installation, + * BP's usermeta keys are filtered with this function, so that they can be altered on the fly. + * + * Plugin authors should use BP's _user_meta() functions, which bakes in bp_get_user_meta_key(). + * $last_active = bp_get_user_meta( $user_id, 'last_activity', true ); + * If you have to use WP's _user_meta() functions for some reason, you should use this function, eg + * $last_active = get_user_meta( $user_id, bp_get_user_meta_key( 'last_activity' ), true ); + * If using the WP functions, do not not hardcode your meta keys. + * + * @package BuddyPress + * @since 1.5 + * + * @uses apply_filters() Filter bp_get_user_meta_key to modify keys individually + * @param str $key + * @return str $key + */ +function bp_get_user_meta_key( $key = false ) { + return apply_filters( 'bp_get_user_meta_key', $key ); +} + +/** + * Get a piece of usermeta + * + * This is a wrapper for get_user_meta() that allows for easy use of bp_get_user_meta_key(), thereby + * increasing compatibility with non-standard BP setups. + * + * @package BuddyPress + * @since 1.5 + * + * @uses bp_get_user_meta_key() For a filterable version of the meta key + * @uses get_user_meta() See get_user_meta() docs for more details on parameters + * @param int $user_id The id of the user whose meta you're fetching + * @param string $key The meta key to retrieve. + * @param bool $single Whether to return a single value. + * @return mixed Will be an array if $single is false. Will be value of meta data field if $single + * is true. + */ +function bp_get_user_meta( $user_id, $key, $single = false ) { + return get_user_meta( $user_id, bp_get_user_meta_key( $key ), $single ); +} + +/** + * Update a piece of usermeta + * + * This is a wrapper for update_user_meta() that allows for easy use of bp_get_user_meta_key(), + * thereby increasing compatibility with non-standard BP setups. + * + * @package BuddyPress + * @since 1.5 + * + * @uses bp_get_user_meta_key() For a filterable version of the meta key + * @uses update_user_meta() See update_user_meta() docs for more details on parameters + * @param int $user_id The id of the user whose meta you're setting + * @param string $key The meta key to set. + * @param mixed $value Metadata value. + * @param mixed $prev_value Optional. Previous value to check before removing. + * @return bool False on failure, true if success. + */ +function bp_update_user_meta( $user_id, $key, $value, $prev_value = '' ) { + return update_user_meta( $user_id, bp_get_user_meta_key( $key ), $value, $prev_value ); +} + +/** + * Delete a piece of usermeta + * + * This is a wrapper for delete_user_meta() that allows for easy use of bp_get_user_meta_key(), + * thereby increasing compatibility with non-standard BP setups. + * + * @package BuddyPress + * @since 1.5 + * + * @uses bp_get_user_meta_key() For a filterable version of the meta key + * @uses delete_user_meta() See delete_user_meta() docs for more details on parameters + * @param int $user_id The id of the user whose meta you're deleting + * @param string $key The meta key to delete. + * @param mixed $value Optional. Metadata value. + * @return bool False for failure. True for success. + */ +function bp_delete_user_meta( $user_id, $key, $value = '' ) { + return delete_user_meta( $user_id, bp_get_user_meta_key( $key ), $value ); +} + +/** + * Are we running username compatibility mode? + * + * @package BuddyPress + * @since 1.5 + * + * @uses apply_filters() Filter 'bp_is_username_compatibility_mode' to alter + * @return bool False when compatibility mode is disabled (default); true when enabled + */ +function bp_is_username_compatibility_mode() { + return apply_filters( 'bp_is_username_compatibility_mode', defined( 'BP_ENABLE_USERNAME_COMPATIBILITY_MODE' ) && BP_ENABLE_USERNAME_COMPATIBILITY_MODE ); +} + +/** + * Are we running multiblog mode? + * + * Note that BP_ENABLE_MULTIBLOG is different from (but dependent on) WP Multisite. "Multiblog" is + * a BP setup that allows BP content to be viewed in the theme, and with the URL, of every blog + * on the network. Thus, instead of having all 'boonebgorges' links go to + * http://example.com/members/boonebgorges + * on the root blog, each blog will have its own version of the same profile content, eg + * http://site2.example.com/members/boonebgorges (for subdomains) + * http://example.com/site2/members/boonebgorges (for subdirectories) + * + * Multiblog mode is disabled by default, meaning that all BP content must be viewed on the root + * blog. + * + * @package BuddyPress + * @since 1.5 + * + * @uses apply_filters() Filter 'bp_is_multiblog_mode' to alter + * @return bool False when multiblog mode is disabled (default); true when enabled + */ +function bp_is_multiblog_mode() { + return apply_filters( 'bp_is_multiblog_mode', is_multisite() && defined( 'BP_ENABLE_MULTIBLOG' ) && BP_ENABLE_MULTIBLOG ); +} + +/** + * Should we use the WP admin bar? + * + * The WP Admin Bar, introduced in WP 3.1, is fully supported in BuddyPress as of BP 1.5. + * + * For the BP 1.5 development cycle, the BuddyBar will remain the default navigation for BP + * installations. In the future, this behavior will be changed, so that the WP Admin Bar is the + * default. + * + * @package BuddyPress + * @since 1.5 + * + * @uses apply_filters() Filter 'bp_use_wp_admin_bar' to alter + * @return bool False when WP Admin Bar support is disabled (default); true when enabled + */ +function bp_use_wp_admin_bar() { + return apply_filters( 'bp_use_wp_admin_bar', defined( 'BP_USE_WP_ADMIN_BAR' ) && BP_USE_WP_ADMIN_BAR ); +} + +/** + * Are oembeds allowed in activity items? + * + * @return bool False when activity embed support is disabled; true when enabled (default) + * @since 1.5 + */ +function bp_use_embed_in_activity() { + return apply_filters( 'bp_use_oembed_in_activity', !defined( 'BP_EMBED_DISABLE_ACTIVITY' ) || !BP_EMBED_DISABLE_ACTIVITY ); +} + +/** + * Are oembeds allwoed in activity replies? + * + * @return bool False when activity replies embed support is disabled; true when enabled (default) + * @since 1.5 + */ +function bp_use_embed_in_activity_replies() { + return apply_filters( 'bp_use_embed_in_activity_replies', !defined( 'BP_EMBED_DISABLE_ACTIVITY_REPLIES' ) || !BP_EMBED_DISABLE_ACTIVITY_REPLIES ); +} + +/** + * Are oembeds allowed in forum posts? + * + * @return bool False when form post embed support is disabled; true when enabled (default) + * @since 1.5 + */ +function bp_use_embed_in_forum_posts() { + return apply_filters( 'bp_use_embed_in_forum_posts', !defined( 'BP_EMBED_DISABLE_FORUM_POSTS' ) || !BP_EMBED_DISABLE_FORUM_POSTS ); +} + +/** + * Are oembeds allowed in private messages? + * + * @return bool False when form post embed support is disabled; true when enabled (default) + * @since 1.5 + */ +function bp_use_embed_in_private_messages() { + return apply_filters( 'bp_use_embed_in_private_messages', !defined( 'BP_EMBED_DISABLE_PRIVATE_MESSAGES' ) || !BP_EMBED_DISABLE_PRIVATE_MESSAGES ); +} + +/** + * Output the correct URL based on BuddyPress and WordPress configuration + * + * @package BuddyPress + * @since 1.5 + * + * @param string $path + * @param string $scheme + * + * @uses bp_get_admin_url() + */ +function bp_admin_url( $path = '', $scheme = 'admin' ) { + echo bp_get_admin_url( $path, $scheme ); +} + /** + * Return the correct URL based on BuddyPress and WordPress configuration + * + * @package BuddyPress + * @since 1.5 + * + * @param string $path + * @param string $scheme + * + * @uses bp_core_do_network_admin() + * @uses network_admin_url() + * @uses admin_url() + */ + function bp_get_admin_url( $path = '', $scheme = 'admin' ) { + + // Links belong in network admin + if ( bp_core_do_network_admin() ) + $url = network_admin_url( $path, $scheme ); + + // Links belong in site admin + else + $url = admin_url( $path, $scheme ); + + return $url; + } + +/** Global Manipulators *******************************************************/ + +/** + * Set the $bp->is_directory global + * + * @global obj $bp + * @param bool $is_directory + * @param str $component + */ +function bp_update_is_directory( $is_directory = false, $component = '' ) { + global $bp; + + if ( empty( $component ) ) + $component = bp_current_component(); + + $bp->is_directory = apply_filters( 'bp_update_is_directory', $is_directory, $component ); +} + +/** + * Set the $bp->is_item_admin global + * + * @global obj $bp + * @param bool $is_item_admin + * @param str $component + */ +function bp_update_is_item_admin( $is_item_admin = false, $component = '' ) { + global $bp; + + if ( empty( $component ) ) + $component = bp_current_component(); + + $bp->is_item_admin = apply_filters( 'bp_update_is_item_admin', $is_item_admin, $component ); +} + +/** + * Set the $bp->is_item_mod global + * + * @global obj $bp + * @param bool $is_item_mod + * @param str $component + */ +function bp_update_is_item_mod( $is_item_mod = false, $component = '' ) { + global $bp; + + if ( empty( $component ) ) + $component = bp_current_component(); + + $bp->is_item_mod = apply_filters( 'bp_update_is_item_mod', $is_item_mod, $component ); +} + +/** + * Trigger a 404 + * + * @global object $bp Global BuddyPress settings object + * @global WP_Query $wp_query WordPress query object + * @param string $redirect If 'remove_canonical_direct', remove WordPress' "helpful" redirect_canonical action. + * @since 1.5 + */ +function bp_do_404( $redirect = 'remove_canonical_direct' ) { + global $bp, $wp_query; + + do_action( 'bp_do_404', $redirect ); + + $wp_query->set_404(); + status_header( 404 ); + nocache_headers(); + + if ( 'remove_canonical_direct' == $redirect ) + remove_action( 'template_redirect', 'redirect_canonical' ); +} +?> diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-hooks.php b/wp-content/plugins/buddypress/bp-core/bp-core-hooks.php new file mode 100644 index 0000000..b440490 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-hooks.php @@ -0,0 +1,114 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** Loaded ********************************************************************/ + +add_action( 'plugins_loaded', 'bp_loaded', 10 ); + +add_action( 'bp_loaded', 'bp_include', 2 ); + +add_action( 'wp', 'bp_actions', 3 ); + +add_action( 'wp', 'bp_screens', 4 ); + +/** Init **********************************************************************/ + +// Attach bp_init to WordPress init +add_action( 'init', 'bp_init' ); + +// Parse the URI and set globals +add_action( 'bp_init', 'bp_core_set_uri_globals', 2 ); + +// Setup component globals +add_action( 'bp_init', 'bp_setup_globals', 4 ); + +// Setup the navigation menu +add_action( 'bp_init', 'bp_setup_nav', 7 ); + +// Setup the navigation menu +add_action( 'admin_bar_menu', 'bp_setup_admin_bar' ); + +// Setup the title +add_action( 'bp_init', 'bp_setup_title', 9 ); + +// Setup widgets +add_action( 'bp_loaded', 'bp_setup_widgets' ); + +// Setup admin bar +add_action( 'bp_loaded', 'bp_core_load_admin_bar' ); + +/** The hooks *****************************************************************/ + +/** + * Include files on this action + */ +function bp_include() { + do_action( 'bp_include' ); +} + +/** + * Setup global variables and objects + */ +function bp_setup_globals() { + do_action( 'bp_setup_globals' ); +} + +/** + * Set navigation elements + */ +function bp_setup_nav() { + do_action( 'bp_setup_nav' ); +} + +/** + * Set up BuddyPress implementation of the WP admin bar + */ +function bp_setup_admin_bar() { + if ( bp_use_wp_admin_bar() ) + do_action( 'bp_setup_admin_bar' ); +} + +/** + * Set the page title + */ +function bp_setup_title() { + do_action( 'bp_setup_title' ); +} + +/** + * Register widgets + */ +function bp_setup_widgets() { + do_action( 'bp_register_widgets' ); +} + +/** + * Initlialize code + */ +function bp_init() { + do_action( 'bp_init' ); +} + +/** + * Attached to plugins_loaded + */ +function bp_loaded() { + do_action( 'bp_loaded' ); +} + +/** + * Attach potential template actions + */ +function bp_actions() { + do_action( 'bp_actions' ); +} + +/** + * Attach potential template screens + */ +function bp_screens() { + do_action( 'bp_screens' ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-loader.php b/wp-content/plugins/buddypress/bp-core/bp-core-loader.php new file mode 100644 index 0000000..3a16710 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-loader.php @@ -0,0 +1,234 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +// Require all of the BuddyPress core libraries +require( BP_PLUGIN_DIR . '/bp-core/bp-core-cache.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-hooks.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-cssjs.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-classes.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-filters.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-avatars.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-widgets.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-template.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-buddybar.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-catchuri.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-component.php' ); +require( BP_PLUGIN_DIR . '/bp-core/bp-core-functions.php' ); + +// Load deprecated functions +require( BP_PLUGIN_DIR . '/bp-core/deprecated/1.5.php' ); + +// Load the WP admin bar. +if ( !defined( 'BP_DISABLE_ADMIN_BAR' ) ) + require( BP_PLUGIN_DIR . '/bp-core/bp-core-adminbar.php' ); + +// Move active components from sitemeta, if necessary +// Provides backpat with earlier versions of BP +if ( is_multisite() && $active_components = get_site_option( 'bp-active-components' ) ) + bp_update_option( 'bp-active-components', $active_components ); + +/** "And now for something completely different" ******************************/ + +class BP_Core extends BP_Component { + + function __construct() { + parent::start( + '_core', + __( 'BuddyPress Core', 'buddypress' ) + , BP_PLUGIN_DIR + ); + + $this->bootstrap(); + } + + private function bootstrap() { + global $bp; + + /** + * At this point in the stack, BuddyPress core has been loaded but + * individual components (friends/activity/groups/etc...) have not. + * + * The 'bp_core_loaded' action lets you execute code ahead of the + * other components. + */ + do_action( 'bp_core_loaded' ); + + /** Components ********************************************************/ + + // Set the included and optional components. + $bp->optional_components = apply_filters( 'bp_optional_components', array( 'activity', 'blogs', 'forums', 'friends', 'groups', 'messages', 'settings', 'xprofile' ) ); + + // Set the required components + $bp->required_components = apply_filters( 'bp_required_components', array( 'members' ) ); + + // Get a list of activated components + if ( $active_components = bp_get_option( 'bp-active-components' ) ) { + $bp->active_components = apply_filters( 'bp_active_components', $active_components ); + $bp->deactivated_components = apply_filters( 'bp_deactivated_components', array_values( array_diff( array_values( array_merge( $bp->optional_components, $bp->required_components ) ), array_keys( $bp->active_components ) ) ) ); + + // Pre 1.5 Backwards compatibility + } elseif ( $deactivated_components = bp_get_option( 'bp-deactivated-components' ) ) { + // Trim off namespace and filename + foreach ( (array) $deactivated_components as $component => $value ) + $trimmed[] = str_replace( '.php', '', str_replace( 'bp-', '', $component ) ); + + // Set globals + $bp->deactivated_components = apply_filters( 'bp_deactivated_components', $trimmed ); + + // Setup the active components + $active_components = array_flip( array_diff( array_values( array_merge( $bp->optional_components, $bp->required_components ) ), array_values( $bp->deactivated_components ) ) ); + + // Loop through active components and set the values + $bp->active_components = array_map( '__return_true', $active_components ); + + // Set the active component global + $bp->active_components = apply_filters( 'bp_active_components', $bp->active_components ); + + // Default to all components active + } else { + // Set globals + $bp->deactivated_components = array(); + + // Setup the active components + $active_components = array_flip( array_values( array_merge( $bp->optional_components, $bp->required_components ) ) ); + + // Loop through active components and set the values + $bp->active_components = array_map( '__return_true', $active_components ); + + // Set the active component global + $bp->active_components = apply_filters( 'bp_active_components', $bp->active_components ); + } + + // Loop through optional components + foreach( $bp->optional_components as $component ) + if ( bp_is_active( $component ) && file_exists( BP_PLUGIN_DIR . '/bp-' . $component . '/bp-' . $component . '-loader.php' ) ) + include( BP_PLUGIN_DIR . '/bp-' . $component . '/bp-' . $component . '-loader.php' ); + + // Loop through required components + foreach( $bp->required_components as $component ) + if ( file_exists( BP_PLUGIN_DIR . '/bp-' . $component . '/bp-' . $component . '-loader.php' ) ) + include( BP_PLUGIN_DIR . '/bp-' . $component . '/bp-' . $component . '-loader.php' ); + + // Add Core to required components + $bp->required_components[] = 'core'; + } + + function setup_globals() { + global $bp; + + /** Database **********************************************************/ + + // Get the base database prefix + if ( empty( $bp->table_prefix ) ) + $bp->table_prefix = bp_core_get_table_prefix(); + + // The domain for the root of the site where the main blog resides + if ( empty( $bp->root_domain ) ) + $bp->root_domain = bp_core_get_root_domain(); + + // Fetches all of the core BuddyPress settings in one fell swoop + if ( empty( $bp->site_options ) ) + $bp->site_options = bp_core_get_root_options(); + + // The names of the core WordPress pages used to display BuddyPress content + if ( empty( $bp->pages ) ) + $bp->pages = bp_core_get_directory_pages(); + + /** Admin Bar *********************************************************/ + + // Set the 'My Account' global to prevent debug notices + $bp->my_account_menu_id = false; + + /** Component and Action **********************************************/ + + // Used for overriding the 2nd level navigation menu so it can be used to + // display custom navigation for an item (for example a group) + $bp->is_single_item = false; + + // Sets up the array container for the component navigation rendered + // by bp_get_nav() + $bp->bp_nav = array(); + + // Sets up the array container for the component options navigation + // rendered by bp_get_options_nav() + $bp->bp_options_nav = array(); + + // Contains an array of all the active components. The key is the slug, + // value the internal ID of the component. + //$bp->active_components = array(); + + /** Basic current user data *******************************************/ + + // Logged in user is the 'current_user' + $current_user = wp_get_current_user(); + + // The user ID of the user who is currently logged in. + $bp->loggedin_user->id = $current_user->ID; + + /** Avatars ***********************************************************/ + + // Fetches the default Gravatar image to use if the user/group/blog has no avatar or gravatar + $bp->grav_default->user = apply_filters( 'bp_user_gravatar_default', $bp->site_options['avatar_default'] ); + $bp->grav_default->group = apply_filters( 'bp_group_gravatar_default', $bp->grav_default->user ); + $bp->grav_default->blog = apply_filters( 'bp_blog_gravatar_default', $bp->grav_default->user ); + + // Notifications Table + $bp->core->table_name_notifications = $bp->table_prefix . 'bp_notifications'; + + /** + * Used to determine if user has admin rights on current content. If the + * logged in user is viewing their own profile and wants to delete + * something, is_item_admin is used. This is a generic variable so it + * can be used by other components. It can also be modified, so when + * viewing a group 'is_item_admin' would be 'true' if they are a group + * admin, and 'false' if they are not. + */ + bp_update_is_item_admin( bp_user_has_access(), 'core' ); + + // Is the logged in user is a mod for the current item? + bp_update_is_item_mod( false, 'core' ); + + do_action( 'bp_core_setup_globals' ); + } + + function setup_nav() { + global $bp; + + /*** + * If the extended profiles component is disabled, we need to revert to using the + * built in WordPress profile information + */ + if ( !bp_is_active( 'xprofile' ) ) { + + // Fallback values if xprofile is disabled + $bp->core->profile->slug = 'profile'; + $bp->active_components[$bp->core->profile->slug] = $bp->core->profile->slug; + + // Add 'Profile' to the main navigation + $main_nav = array( + 'name' => __( 'Profile', 'buddypress' ), + 'slug' => $bp->core->profile->slug, + 'position' => 20, + 'screen_function' => 'bp_core_catch_profile_uri', + 'default_subnav_slug' => 'public' + ); + + $profile_link = trailingslashit( $bp->loggedin_user->domain . '/' . $bp->core->profile->slug ); + + // Add the subnav items to the profile + $sub_nav[] = array( + 'name' => __( 'Public', 'buddypress' ), + 'slug' => 'public', + 'parent_url' => $profile_link, + 'parent_slug' => $bp->core->profile->slug, + 'screen_function' => 'bp_core_catch_profile_uri' + ); + } + } +} + +// Initialize the BuddyPress Core +$bp->core = new BP_Core(); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-template.php b/wp-content/plugins/buddypress/bp-core/bp-core-template.php new file mode 100644 index 0000000..8cb9694 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-template.php @@ -0,0 +1,1661 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Uses the $bp->bp_options_nav global to render out the sub navigation for the current component. + * Each component adds to its sub navigation array within its own setup_nav() function. + * + * This sub navigation array is the secondary level navigation, so for profile it contains: + * [Public, Edit Profile, Change Avatar] + * + * The function will also analyze the current action for the current component to determine whether + * or not to highlight a particular sub nav item. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + * @uses bp_get_user_nav() Renders the navigation for a profile of a currently viewed user. + */ +function bp_get_options_nav() { + global $bp; + + // If we are looking at a member profile, then the we can use the current component as an + // index. Otherwise we need to use the component's root_slug + $component_index = !empty( $bp->displayed_user ) ? $bp->current_component : bp_get_root_slug( $bp->current_component ); + + if ( !bp_is_single_item() ) { + if ( !isset( $bp->bp_options_nav[$component_index] ) || count( $bp->bp_options_nav[$component_index] ) < 1 ) { + return false; + } else { + $the_index = $component_index; + } + } else { + if ( !isset( $bp->bp_options_nav[$bp->current_item] ) || count( $bp->bp_options_nav[$bp->current_item] ) < 1 ) { + return false; + } else { + $the_index = $bp->current_item; + } + } + + // Loop through each navigation item + foreach ( (array)$bp->bp_options_nav[$the_index] as $subnav_item ) { + if ( !$subnav_item['user_has_access'] ) + continue; + + // If the current action or an action variable matches the nav item id, then add a highlight CSS class. + if ( $subnav_item['slug'] == $bp->current_action ) { + $selected = ' class="current selected"'; + } else { + $selected = ''; + } + + // List type depends on our current component + $list_type = bp_is_group() ? 'groups' : 'personal'; + + // echo out the final list item + echo apply_filters( 'bp_get_options_nav_' . $subnav_item['css_id'], '<li id="' . $subnav_item['css_id'] . '-' . $list_type . '-li" ' . $selected . '><a id="' . $subnav_item['css_id'] . '" href="' . $subnav_item['link'] . '">' . $subnav_item['name'] . '</a></li>', $subnav_item ); + } +} + +function bp_get_options_title() { + global $bp; + + if ( empty( $bp->bp_options_title ) ) + $bp->bp_options_title = __( 'Options', 'buddypress' ); + + echo apply_filters( 'bp_get_options_title', esc_attr( $bp->bp_options_title ) ); +} + +/** Avatars *******************************************************************/ + +/** + * Check to see if there is an options avatar. An options avatar is an avatar for something + * like a group, or a friend. Basically an avatar that appears in the sub nav options bar. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + */ +function bp_has_options_avatar() { + global $bp; + + if ( empty( $bp->bp_options_avatar ) ) + return false; + + return true; +} + +function bp_get_options_avatar() { + global $bp; + + echo apply_filters( 'bp_get_options_avatar', $bp->bp_options_avatar ); +} + +function bp_comment_author_avatar() { + global $comment; + + if ( function_exists( 'bp_core_fetch_avatar' ) ) + echo apply_filters( 'bp_comment_author_avatar', bp_core_fetch_avatar( array( 'item_id' => $comment->user_id, 'type' => 'thumb' ) ) ); + else if ( function_exists('get_avatar') ) + get_avatar(); +} + +function bp_post_author_avatar() { + global $post; + + if ( function_exists( 'bp_core_fetch_avatar' ) ) + echo apply_filters( 'bp_post_author_avatar', bp_core_fetch_avatar( array( 'item_id' => $post->post_author, 'type' => 'thumb' ) ) ); + else if ( function_exists('get_avatar') ) + get_avatar(); +} + +function bp_avatar_admin_step() { + echo bp_get_avatar_admin_step(); +} + function bp_get_avatar_admin_step() { + global $bp; + + if ( isset( $bp->avatar_admin->step ) ) + $step = $bp->avatar_admin->step; + else + $step = 'upload-image'; + + return apply_filters( 'bp_get_avatar_admin_step', $step ); + } + +function bp_avatar_to_crop() { + echo bp_get_avatar_to_crop(); +} + function bp_get_avatar_to_crop() { + global $bp; + + if ( isset( $bp->avatar_admin->image->url ) ) + $url = $bp->avatar_admin->image->url; + else + $url = ''; + + return apply_filters( 'bp_get_avatar_to_crop', $url ); + } + +function bp_avatar_to_crop_src() { + echo bp_get_avatar_to_crop_src(); +} + function bp_get_avatar_to_crop_src() { + global $bp; + + return apply_filters( 'bp_get_avatar_to_crop_src', str_replace( WP_CONTENT_DIR, '', $bp->avatar_admin->image->dir ) ); + } + +function bp_avatar_cropper() { + global $bp; + + echo '<img id="avatar-to-crop" class="avatar" src="' . $bp->avatar_admin->image . '" />'; +} + +function bp_site_name() { + echo apply_filters( 'bp_site_name', get_bloginfo( 'name', 'display' ) ); +} + +function bp_get_profile_header() { + locate_template( array( '/profile/profile-header.php' ), true ); +} + +function bp_exists( $component_name ) { + if ( function_exists( $component_name . '_install' ) ) + return true; + + return false; +} + +function bp_format_time( $time, $just_date = false, $localize_time = true ) { + if ( !isset( $time ) || !is_numeric( $time ) ) + return false; + + // Get GMT offset from root blog + $root_blog_offset = false; + if ( $localize_time ) + $root_blog_offset = get_blog_option( bp_get_root_blog_id(), 'gmt_offset' ); + + // Calculate offset time + $time_offset = $time + ( $root_blog_offset * 3600 ); + + // Current date (January 1, 2010) + $date = date_i18n( get_option( 'date_format' ), $time_offset ); + + // Should we show the time also? + if ( !$just_date ) { + // Current time (9:50pm) + $time = date_i18n( get_option( 'time_format' ), $time_offset ); + + // Return string formatted with date and time + $date = sprintf( __( '%1$s at %2$s', 'buddypress' ), $date, $time ); + } + + return apply_filters( 'bp_format_time', $date ); +} + +function bp_word_or_name( $youtext, $nametext, $capitalize = true, $echo = true ) { + global $bp; + + if ( $capitalize ) + $youtext = bp_core_ucfirst($youtext); + + if ( $bp->displayed_user->id == $bp->loggedin_user->id ) { + if ( $echo ) + echo apply_filters( 'bp_word_or_name', $youtext ); + else + return apply_filters( 'bp_word_or_name', $youtext ); + } else { + $fullname = (array)explode( ' ', $bp->displayed_user->fullname ); + $nametext = sprintf( $nametext, $fullname[0] ); + if ( $echo ) + echo apply_filters( 'bp_word_or_name', $nametext ); + else + return apply_filters( 'bp_word_or_name', $nametext ); + } +} + +function bp_get_plugin_sidebar() { + locate_template( array( 'plugin-sidebar.php' ), true ); +} + +function bp_styles() { + do_action( 'bp_styles' ); + wp_print_styles(); +} + +/** Search Form ***************************************************************/ + +function bp_search_form_action() { + return apply_filters( 'bp_search_form_action', bp_get_root_domain() . '/' . bp_get_search_slug() ); +} + +/** + * Generates the basic search form as used in BP-Default's header. + * + * @global object $bp BuddyPress global settings + * @return string HTML <select> element + * @since 1.0 + */ +function bp_search_form_type_select() { + global $bp; + + $options = array(); + + if ( bp_is_active( 'xprofile' ) ) + $options['members'] = __( 'Members', 'buddypress' ); + + if ( bp_is_active( 'groups' ) ) + $options['groups'] = __( 'Groups', 'buddypress' ); + + if ( bp_is_active( 'blogs' ) && is_multisite() ) + $options['blogs'] = __( 'Blogs', 'buddypress' ); + + if ( bp_is_active( 'forums' ) && bp_forums_is_installed_correctly() && bp_forums_has_directory() ) + $options['forums'] = __( 'Forums', 'buddypress' ); + + $options['posts'] = __( 'Posts', 'buddypress' ); + + // Eventually this won't be needed and a page will be built to integrate all search results. + $selection_box = '<label for="search-which" class="accessibly-hidden">' . __( 'Search these:', 'buddypress' ) . '</label>'; + $selection_box .= '<select name="search-which" id="search-which" style="width: auto">'; + + $options = apply_filters( 'bp_search_form_type_select_options', $options ); + foreach( (array)$options as $option_value => $option_title ) + $selection_box .= sprintf( '<option value="%s">%s</option>', $option_value, $option_title ); + + $selection_box .= '</select>'; + + return apply_filters( 'bp_search_form_type_select', $selection_box ); +} + +/** + * Get the default text for the search box for a given component. + * + * @global object $bp BuddyPress global settings + * @return string + * @since 1.5 + */ +function bp_search_default_text( $component = '' ) { + echo bp_get_search_default_text( $component ); +} + function bp_get_search_default_text( $component = '' ) { + global $bp; + + if ( empty( $component ) ) + $component = bp_current_component(); + + $default_text = __( 'Search anything...', 'buddypress' ); + + // Most of the time, $component will be the actual component ID + if ( !empty( $component ) ) { + if ( !empty( $bp->{$component}->search_string ) ) { + $default_text = $bp->{$component}->search_string; + } else { + // When the request comes through AJAX, we need to get the component + // name out of $bp->pages + if ( !empty( $bp->pages->{$component}->slug ) ) { + $key = $bp->pages->{$component}->slug; + if ( !empty( $bp->{$key}->search_string ) ) + $default_text = $bp->{$key}->search_string; + } + } + } + + return apply_filters( 'bp_get_search_default_text', $default_text, $component ); + } + +function bp_custom_profile_boxes() { + do_action( 'bp_custom_profile_boxes' ); +} + +function bp_custom_profile_sidebar_boxes() { + do_action( 'bp_custom_profile_sidebar_boxes' ); +} + +/** + * Creates and outputs a button. + * + * @param array $args See bp_get_button() for the list of arguments. + * @see bp_get_button() + */ +function bp_button( $args = '' ) { + echo bp_get_button( $args ); +} + /** + * Creates and returns a button. + * + * Args: + * component: Which component this button is for + * must_be_logged_in: Button only appears for logged in users + * block_self: Button will not appear when viewing your own profile. + * wrapper: div|span|p|li| + * wrapper_id: The DOM ID of the button wrapper + * wrapper_class: The DOM class of the button wrapper + * link_href: The destination link of the button + * link_title: Title of the button + * link_id: The DOM ID of the button + * link_class: The DOM class of the button + * link_rel: The DOM rel of the button + * link_text: The contents of the button + * + * @param array $button + * @return string + * @see bp_add_friend_button() + * @see bp_send_public_message_button() + * @see bp_send_private_message_button() + */ + function bp_get_button( $args = '' ) { + $button = new BP_Button( $args ); + return apply_filters( 'bp_get_button', $button->contents, $args, $button ); + } + + +/** + * Truncates text. + * + * Cuts a string to the length of $length and replaces the last characters + * with the ending if the text is longer than length. + * + * This function is borrowed from CakePHP v2.0, under the MIT license. See + * http://book.cakephp.org/view/1469/Text#truncate-1625 + * + * ### Options: + * + * - `ending` Will be used as Ending and appended to the trimmed string + * - `exact` If false, $text will not be cut mid-word + * - `html` If true, HTML tags would be handled correctly + * - `filter_shortcodes` If true, shortcodes will be stripped before truncating + * + * @package BuddyPress + * + * @param string $text String to truncate. + * @param integer $length Length of returned string, including ellipsis. + * @param array $options An array of html attributes and options. + * @return string Trimmed string. + */ +function bp_create_excerpt( $text, $length = 225, $options = array() ) { + // Backward compatibility. The third argument used to be a boolean $filter_shortcodes + $filter_shortcodes_default = is_bool( $options ) ? $options : true; + + $defaults = array( + 'ending' => __( ' […]', 'buddypress' ), + 'exact' => false, + 'html' => true, + 'filter_shortcodes' => $filter_shortcodes_default + ); + $r = wp_parse_args( $options, $defaults ); + extract( $r ); + + // Save the original text, to be passed along to the filter + $original_text = $text; + + // Allow plugins to modify these values globally + $length = apply_filters( 'bp_excerpt_length', $length ); + $ending = apply_filters( 'bp_excerpt_append_text', $ending ); + + // Remove shortcodes if necessary + if ( $filter_shortcodes ) + $text = strip_shortcodes( $text ); + + // When $html is true, the excerpt should be created without including HTML tags in the + // excerpt length + if ( $html ) { + // The text is short enough. No need to truncate + if ( mb_strlen( preg_replace( '/<.*?>/', '', $text ) ) <= $length ) { + return $text; + } + + $totalLength = mb_strlen( strip_tags( $ending ) ); + $openTags = array(); + $truncate = ''; + + // Find all the tags and put them in a stack for later use + preg_match_all( '/(<\/?([\w+]+)[^>]*>)?([^<>]*)/', $text, $tags, PREG_SET_ORDER ); + foreach ( $tags as $tag ) { + // Process tags that need to be closed + if ( !preg_match( '/img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param/s', $tag[2] ) ) { + if ( preg_match( '/<[\w]+[^>]*>/s', $tag[0] ) ) { + array_unshift( $openTags, $tag[2] ); + } else if ( preg_match('/<\/([\w]+)[^>]*>/s', $tag[0], $closeTag ) ) { + $pos = array_search( $closeTag[1], $openTags ); + if ( $pos !== false ) { + array_splice( $openTags, $pos, 1 ); + } + } + } + $truncate .= $tag[1]; + + $contentLength = mb_strlen( preg_replace( '/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', ' ', $tag[3] ) ); + if ( $contentLength + $totalLength > $length ) { + $left = $length - $totalLength; + $entitiesLength = 0; + if ( preg_match_all( '/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', $tag[3], $entities, PREG_OFFSET_CAPTURE ) ) { + foreach ( $entities[0] as $entity ) { + if ( $entity[1] + 1 - $entitiesLength <= $left ) { + $left--; + $entitiesLength += mb_strlen( $entity[0] ); + } else { + break; + } + } + } + + $truncate .= mb_substr( $tag[3], 0 , $left + $entitiesLength ); + break; + } else { + $truncate .= $tag[3]; + $totalLength += $contentLength; + } + if ( $totalLength >= $length ) { + break; + } + } + } else { + if ( mb_strlen( $text ) <= $length ) { + return $text; + } else { + $truncate = mb_substr( $text, 0, $length - mb_strlen( $ending ) ); + } + } + + // If $exact is false, we can't break on words + if ( !$exact ) { + $spacepos = mb_strrpos( $truncate, ' ' ); + if ( isset( $spacepos ) ) { + if ( $html ) { + $bits = mb_substr( $truncate, $spacepos ); + preg_match_all( '/<\/([a-z]+)>/', $bits, $droppedTags, PREG_SET_ORDER ); + if ( !empty( $droppedTags ) ) { + foreach ( $droppedTags as $closingTag ) { + if ( !in_array( $closingTag[1], $openTags ) ) { + array_unshift( $openTags, $closingTag[1] ); + } + } + } + } + $truncate = mb_substr( $truncate, 0, $spacepos ); + } + } + $truncate .= $ending; + + if ( $html ) { + foreach ( $openTags as $tag ) { + $truncate .= '</' . $tag . '>'; + } + } + + return apply_filters( 'bp_create_excerpt', $truncate, $original_text, $length, $options ); + +} +add_filter( 'bp_create_excerpt', 'stripslashes_deep' ); +add_filter( 'bp_create_excerpt', 'force_balance_tags' ); + +function bp_total_member_count() { + echo bp_get_total_member_count(); +} + function bp_get_total_member_count() { + return apply_filters( 'bp_get_total_member_count', bp_core_get_total_member_count() ); + } + add_filter( 'bp_get_total_member_count', 'bp_core_number_format' ); + +function bp_blog_signup_allowed() { + echo bp_get_blog_signup_allowed(); +} + function bp_get_blog_signup_allowed() { + global $bp; + + if ( !is_multisite() ) + return false; + + $status = $bp->site_options['registration']; + if ( 'none' != $status && 'user' != $status ) + return true; + + return false; + } + +function bp_account_was_activated() { + global $bp; + + $activation_complete = !empty( $bp->activation_complete ) ? $bp->activation_complete : false; + + return $activation_complete; +} + +function bp_registration_needs_activation() { + return apply_filters( 'bp_registration_needs_activation', true ); +} + +/** + * Allow templates to pass parameters directly into the template loops via AJAX + * + * For the most part this will be filtered in a theme's functions.php for example + * in the default theme it is filtered via bp_dtheme_ajax_querystring() + * + * By using this template tag in the templates it will stop them from showing errors + * if someone copies the templates from the default theme into another WordPress theme + * without coping the functions from functions.php. + */ +function bp_ajax_querystring( $object = false ) { + global $bp; + + if ( !isset( $bp->ajax_querystring ) ) + $bp->ajax_querystring = ''; + + return apply_filters( 'bp_ajax_querystring', $bp->ajax_querystring, $object ); +} + +/** Template Classes and _is functions ****************************************/ + +function bp_current_component() { + global $bp; + $current_component = !empty( $bp->current_component ) ? $bp->current_component : false; + return apply_filters( 'bp_current_component', $current_component ); +} + +function bp_current_action() { + global $bp; + $current_action = !empty( $bp->current_action ) ? $bp->current_action : false; + return apply_filters( 'bp_current_action', $current_action ); +} + +function bp_current_item() { + global $bp; + $current_item = !empty( $bp->current_item ) ? $bp->current_item : false; + return apply_filters( 'bp_current_item', $current_item ); +} + +/** + * Return the value of $bp->action_variables + * + * @package BuddyPress + * + * @param mixed $action_variables The action variables array, or false if the array is empty + */ +function bp_action_variables() { + global $bp; + $action_variables = !empty( $bp->action_variables ) ? $bp->action_variables : false; + return apply_filters( 'bp_action_variables', $action_variables ); +} + +/** + * Return the value of a given action variable + * + * @package BuddyPress + * @since 1.5 + * + * @param int $position The key of the action_variables array that you want + * @return str $action_variable The value of that position in the array + */ +function bp_action_variable( $position = 0 ) { + $action_variables = bp_action_variables(); + $action_variable = isset( $action_variables[$position] ) ? $action_variables[$position] : false; + + return apply_filters( 'bp_action_variable', $action_variable, $position ); +} + +function bp_root_domain() { + echo bp_get_root_domain(); +} + function bp_get_root_domain() { + global $bp; + + if ( isset( $bp->root_domain ) && !empty( $bp->root_domain ) ) { + $domain = $bp->root_domain; + } else { + $domain = bp_core_get_root_domain(); + $bp->root_domain = $domain; + } + + return apply_filters( 'bp_get_root_domain', $domain ); + } + +/** + * Echoes the output of bp_get_root_slug() + * + * @package BuddyPress Core + * @since 1.5 + */ +function bp_root_slug( $component = '' ) { + echo bp_get_root_slug( $component ); +} + /** + * Gets the root slug for a component slug + * + * In order to maintain backward compatibility, the following procedure is used: + * 1) Use the short slug to get the canonical component name from the + * active component array + * 2) Use the component name to get the root slug out of the appropriate part of the $bp + * global + * 3) If nothing turns up, it probably means that $component is itself a root slug + * + * Example: If your groups directory is at /community/companies, this function first uses + * the short slug 'companies' (ie the current component) to look up the canonical name + * 'groups' in $bp->active_components. Then it uses 'groups' to get the root slug, from + * $bp->groups->root_slug. + * + * @package BuddyPress Core + * @since 1.5 + * + * @global object $bp Global BuddyPress settings object + * @param string $component Optional. Defaults to the current component + * @return string $root_slug The root slug + */ + function bp_get_root_slug( $component = '' ) { + global $bp; + + $root_slug = ''; + + // Use current global component if none passed + if ( empty( $component ) ) + $component = $bp->current_component; + + // Component is active + if ( !empty( $bp->active_components[$component] ) ) { + // Backward compatibility: in legacy plugins, the canonical component id + // was stored as an array value in $bp->active_components + $component_name = '1' == $bp->active_components[$component] ? $component : $bp->active_components[$component]; + + // Component has specific root slug + if ( !empty( $bp->{$component_name}->root_slug ) ) { + $root_slug = $bp->{$component_name}->root_slug; + } + } + + // No specific root slug, so fall back to component slug + if ( empty( $root_slug ) ) + $root_slug = $component; + + return apply_filters( 'bp_get_root_slug', $root_slug, $component ); + } + +/** + * Return the component name based on the current root slug + * + * @since BuddyPress {r3923} + * @global object $bp Global BuddyPress settings object + * @param str $root_slug Needle to our active component haystack + * @return mixed False if none found, component name if found + */ +function bp_get_name_from_root_slug( $root_slug = '' ) { + global $bp; + + // If no slug is passed, look at current_component + if ( empty( $root_slug ) ) + $root_slug = $bp->current_component; + + // No current component or root slug, so flee + if ( empty( $root_slug ) ) + return false; + + // Loop through active components and look for a match + foreach ( $bp->active_components as $component => $id ) + if ( isset( $bp->{$component}->root_slug ) && + !empty( $bp->{$component}->root_slug ) && + $bp->{$component}->root_slug == $root_slug ) + return $bp->{$component}->name; + + return false; +} + +function bp_user_has_access() { + $has_access = ( is_super_admin() || bp_is_my_profile() ) ? true : false; + + return apply_filters( 'bp_user_has_access', $has_access ); +} + +/** + * Output the search slug + * + * @package BuddyPress + * @since 1.5 + * + * @uses bp_get_search_slug() + */ +function bp_search_slug() { + echo bp_get_search_slug(); +} + /** + * Return the search slug + * + * @package BuddyPress + * @since 1.5 + */ + function bp_get_search_slug() { + return apply_filters( 'bp_get_search_slug', BP_SEARCH_SLUG ); + } + +/** is_() functions to determine the current page *****************************/ + +/** + * Checks to see whether the current page belongs to the specified component + * + * This function is designed to be generous, accepting several different kinds + * of value for the $component parameter. It checks $component_name against: + * - the component's root_slug, which matches the page slug in $bp->pages + * - the component's regular slug + * - the component's id, or 'canonical' name + * + * @package BuddyPress Core + * @since 1.5 + * @return bool Returns true if the component matches, or else false. + */ +function bp_is_current_component( $component ) { + global $bp; + + $is_current_component = false; + + // Backward compatibility: 'xprofile' should be read as 'profile' + if ( 'xprofile' == $component ) + $component = 'profile'; + + if ( !empty( $bp->current_component ) ) { + // First, check to see whether $component_name and the current + // component are a simple match + if ( $bp->current_component == $component ) { + $is_current_component = true; + + // Since the current component is based on the visible URL slug let's + // check the component being passed and see if its root_slug matches + } elseif ( isset( $bp->{$component}->root_slug ) && $bp->{$component}->root_slug == $bp->current_component ) { + $is_current_component = true; + + // Because slugs can differ from root_slugs, we should check them too + } elseif ( isset( $bp->{$component}->slug ) && $bp->{$component}->slug == $bp->current_component ) { + $is_current_component = true; + + // Next, check to see whether $component is a canonical, + // non-translatable component name. If so, we can return its + // corresponding slug from $bp->active_components. + } else if ( $key = array_search( $component, $bp->active_components ) ) { + if ( strstr( $bp->current_component, $key ) ) + $is_current_component = true; + + // If we haven't found a match yet, check against the root_slugs + // created by $bp->pages, as well as the regular slugs + } else { + foreach ( $bp->active_components as $id ) { + // If the $component parameter does not match the current_component, + // then move along, these are not the droids you are looking for + if ( empty( $bp->{$id}->root_slug ) || $bp->{$id}->root_slug != $bp->current_component ) + continue; + + if ( $id == $component ) { + $is_current_component = true; + break; + } + } + } + + // Page template fallback check if $bp->current_component is empty + } elseif ( !is_admin() && is_page() ) { + global $wp_query; + $page = $wp_query->get_queried_object(); + $custom_fields = get_post_custom_values( '_wp_page_template', $page->ID ); + $page_template = $custom_fields[0]; + + // Component name is in the page template name + if ( !empty( $page_template ) && strstr( strtolower( $page_template ), strtolower( $component ) ) ) + $is_current_component = true; + } + + return apply_filters( 'bp_is_current_component', $is_current_component, $component ); +} + +/** + * Check to see whether the current page matches a given action. + * + * Along with bp_is_current_component() and bp_is_action_variable(), this function is mostly used + * to help determine when to use a given screen function. + * + * In BP parlance, the current_action is the URL chunk that comes directly after the + * current item slug. E.g., in + * http://example.com/groups/my-group/members + * the current_action is 'members'. + * + * @package BuddyPress + * @since 1.5 + * + * @param str $action The action being tested against + * @return bool True if the current action matches $action + */ +function bp_is_current_action( $action = '' ) { + global $bp; + + if ( $action == $bp->current_action ) + return true; + + return false; +} + +/** + * Check to see whether the current page matches a given action_variable. + * + * Along with bp_is_current_component() and bp_is_current_action(), this function is mostly used + * to help determine when to use a given screen function. + * + * In BP parlance, action_variables are an array made up of the URL chunks appearing after the + * current_action in a URL. For example, + * http://example.com/groups/my-group/admin/group-settings + * $action_variables[0] is 'group-settings'. + * + * @package BuddyPress + * @since 1.5 + * + * @param str $action_variable The action_variable being tested against + * @param int $position The array key you're testing against. If you don't provide a $position, + * the function will return true if the $action_variable is found *anywhere* in the action + * variables array. + * @return bool + */ +function bp_is_action_variable( $action_variable = '', $position = false ) { + $is_action_variable = false; + + if ( false !== $position ) { + // When a $position is specified, check that slot in the action_variables array + if ( $action_variable ) { + $is_action_variable = $action_variable == bp_action_variable( $position ); + } else { + // If no $action_variable is provided, we are essentially checking to see + // whether the slot is empty + $is_action_variable = !bp_action_variable( $position ); + } + } else { + // When no $position is specified, check the entire array + $is_action_variable = in_array( $action_variable, (array)bp_action_variables() ); + } + + return apply_filters( 'bp_is_action_variable', $is_action_variable, $action_variable, $position ); +} + +function bp_is_current_item( $item = '' ) { + if ( !empty( $item ) && $item == bp_current_item() ) + return true; + + return false; +} + +function bp_is_single_item() { + global $bp; + + if ( !empty( $bp->is_single_item ) ) + return true; + + return false; +} + +function bp_is_item_admin() { + global $bp; + + if ( !empty( $bp->is_item_admin ) ) + return true; + + return false; +} + +function bp_is_item_mod() { + global $bp; + + if ( !empty( $bp->is_item_mod ) ) + return true; + + return false; +} + +function bp_is_directory() { + global $bp; + + if ( !empty( $bp->is_directory ) ) + return true; + + return false; +} + +/** + * Checks to see if a component's URL should be in the root, not under a + * member page: + * + * Yes: http://domain.com/groups/the-group + * No: http://domain.com/members/andy/groups/the-group + * + * @package BuddyPress Core + * @return true if root component, else false. + */ +function bp_is_root_component( $component_name ) { + global $bp; + + if ( !isset( $bp->active_components ) ) + return false; + + foreach ( (array) $bp->active_components as $key => $slug ) { + if ( $key == $component_name || $slug == $component_name ) + return true; + } + + return false; +} + +/** + * Checks if the site's front page is set to the specified BuddyPress component + * page in wp-admin's Settings > Reading screen. + * + * @global object $bp Global BuddyPress settings object + * @global $current_blog WordPress global for the current blog + * @param string $component Optional; Name of the component to check for. + * @return bool True If the specified component is set to be the site's front page. + * @since 1.5 + */ +function bp_is_component_front_page( $component = '' ) { + global $bp, $current_blog; + + if ( !$component && !empty( $bp->current_component ) ) + $component = $bp->current_component; + + $path = is_main_site() ? bp_core_get_site_path() : $current_blog->path; + + if ( 'page' != get_option( 'show_on_front' ) || !$component || empty( $bp->pages->{$component} ) || $_SERVER['REQUEST_URI'] != $path ) + return false; + + return apply_filters( 'bp_is_component_front_page', ( $bp->pages->{$component}->id == get_option( 'page_on_front' ) ), $component ); +} + +/** + * Is this a blog page, ie a non-BP page? + * + * You can tell if a page is displaying BP content by whether the current_component has been defined + * + * @package BuddyPress + * + * @return bool True if it's a non-BP page, false otherwise + */ +function bp_is_blog_page() { + global $wp_query; + + $is_blog_page = false; + + // Generally, we can just check to see that there's no current component. The one exception + // is single user home tabs, where $bp->current_component is unset. Thus the addition + // of the bp_is_user() check. + if ( !bp_current_component() && !bp_is_user() ) + $is_blog_page = true; + + return apply_filters( 'bp_is_blog_page', $is_blog_page ); +} + +function bp_is_page( $page ) { + if ( !bp_is_user() && bp_is_current_component( $page ) ) + return true; + + if ( 'home' == $page ) + return is_front_page(); + + return false; +} + +/** Components ****************************************************************/ + +function bp_is_active( $component ) { + global $bp; + + if ( isset( $bp->active_components[$component] ) ) + return true; + + return false; +} + +function bp_is_members_component() { + if ( bp_is_current_component( 'members' ) ) + return true; + + return false; +} + +function bp_is_profile_component() { + if ( bp_is_current_component( 'xprofile' ) ) + return true; + + return false; +} + +function bp_is_activity_component() { + if ( bp_is_current_component( 'activity' ) ) + return true; + + return false; +} + +function bp_is_blogs_component() { + if ( is_multisite() && bp_is_current_component( 'blogs' ) ) + return true; + + return false; +} + +function bp_is_messages_component() { + if ( bp_is_current_component( 'messages' ) ) + return true; + + return false; +} + +function bp_is_friends_component() { + if ( bp_is_current_component( 'friends' ) ) + return true; + + return false; +} + +function bp_is_groups_component() { + if ( bp_is_current_component( 'groups' ) ) + return true; + + return false; +} + +function bp_is_forums_component() { + if ( bp_is_current_component( 'forums' ) ) + return true; + + return false; +} + +function bp_is_settings_component() { + if ( bp_is_current_component( 'settings' ) ) + return true; + + return false; +} + +/** Activity ******************************************************************/ + +function bp_is_single_activity() { + global $bp; + + if ( bp_is_activity_component() && is_numeric( $bp->current_action ) ) + return true; + + return false; +} + +/** User **********************************************************************/ + +function bp_is_my_profile() { + global $bp; + + if ( is_user_logged_in() && $bp->loggedin_user->id == $bp->displayed_user->id ) + $my_profile = true; + else + $my_profile = false; + + return apply_filters( 'bp_is_my_profile', $my_profile ); +} + +function bp_is_user() { + global $bp; + + if ( !empty( $bp->displayed_user->id ) ) + return true; + + return false; +} + +function bp_is_user_activity() { + if ( bp_is_user() && bp_is_activity_component() ) + return true; + + return false; +} + +function bp_is_user_friends_activity() { + + if ( !bp_is_active( 'friends' ) ) + return false; + + $slug = bp_get_friends_slug(); + + if ( empty( $slug ) ) + $slug = 'friends'; + + if ( bp_is_user_activity() && bp_is_current_action( $slug ) ) + return true; + + return false; +} + +function bp_is_user_groups_activity() { + + if ( !bp_is_active( 'groups' ) ) + return false; + + $slug = bp_get_groups_slug(); + + if ( empty( $slug ) ) + $slug = 'groups'; + + if ( bp_is_user_activity() && bp_is_current_action( $slug ) ) + return true; + + return false; +} + +function bp_is_user_profile() { + if ( bp_is_profile_component() || bp_is_current_component( 'profile' ) ) + return true; + + return false; +} + +function bp_is_user_profile_edit() { + if ( bp_is_profile_component() && bp_is_current_action( 'edit' ) ) + return true; + + return false; +} + +function bp_is_user_change_avatar() { + if ( bp_is_profile_component() && bp_is_current_action( 'change-avatar' ) ) + return true; + + return false; +} + +/** + * Is this a user's forums page? + * + * @package BuddyPress + * + * @return bool + */ +function bp_is_user_forums() { + if ( bp_is_user() && bp_is_forums_component() ) + return true; + + return false; +} + +/** + * Is this a user's "Topics Started" page? + * + * @package BuddyPress + * @since 1.5 + * + * @return bool + */ +function bp_is_user_forums_started() { + if ( bp_is_user_forums() && bp_is_current_action( 'topics' ) ) + return true; + + return false; +} + +/** + * Is this a user's "Replied To" page? + * + * @package BuddyPress + * @since 1.5 + * + * @return bool + */ +function bp_is_user_forums_replied_to() { + if ( bp_is_user_forums() && bp_is_current_action( 'replies' ) ) + return true; + + return false; +} + +function bp_is_user_groups() { + if ( bp_is_user() && bp_is_groups_component() ) + return true; + + return false; +} + +function bp_is_user_blogs() { + if ( bp_is_user() && bp_is_blogs_component() ) + return true; + + return false; +} + +function bp_is_user_recent_posts() { + if ( bp_is_user_blogs() && bp_is_current_action( 'recent-posts' ) ) + return true; + + return false; +} + +function bp_is_user_recent_commments() { + if ( bp_is_user_blogs() && bp_is_current_action( 'recent-comments' ) ) + return true; + + return false; +} + +function bp_is_user_friends() { + if ( bp_is_user() && bp_is_friends_component() ) + return true; + + return false; +} + +function bp_is_user_friend_requests() { + if ( bp_is_user_friends() && bp_is_current_action( 'requests' ) ) + return true; + + return false; +} + +/** + * Is this a user's settings page? + * + * @package BuddyPress + * + * @return bool + */ +function bp_is_user_settings() { + if ( bp_is_user() && bp_is_settings_component() ) + return true; + + return false; +} + +/** + * Is this a user's General Settings page? + * + * @package BuddyPress + * @since 1.5 + * + * @return bool + */ +function bp_is_user_settings_general() { + if ( bp_is_user_settings() && bp_is_current_action( 'general' ) ) + return true; + + return false; +} + +/** + * Is this a user's Notification Settings page? + * + * @package BuddyPress + * @since 1.5 + * + * @return bool + */ +function bp_is_user_settings_notifications() { + if ( bp_is_user_settings() && bp_is_current_action( 'notifications' ) ) + return true; + + return false; +} + +/** + * Is this a user's Account Deletion page? + * + * @package BuddyPress + * @since 1.5 + * + * @return bool + */ +function bp_is_user_settings_account_delete() { + if ( bp_is_user_settings() && bp_is_current_action( 'delete-account' ) ) + return true; + + return false; +} + + +/** Groups ******************************************************************/ + +function bp_is_group() { + global $bp; + + if ( bp_is_groups_component() && isset( $bp->groups->current_group ) && $bp->groups->current_group ) + return true; + + return false; +} + +function bp_is_group_home() { + if ( bp_is_single_item() && bp_is_groups_component() && ( !bp_current_action() || bp_is_current_action( 'home' ) ) ) + return true; + + return false; +} + +function bp_is_group_create() { + if ( bp_is_groups_component() && bp_is_current_action( 'create' ) ) + return true; + + return false; +} + +function bp_is_group_admin_page() { + if ( bp_is_single_item() && bp_is_groups_component() && bp_is_current_action( 'admin' ) ) + return true; + + return false; +} + +function bp_is_group_forum() { + if ( bp_is_single_item() && bp_is_groups_component() && bp_is_current_action( 'forum' ) ) + return true; + + return false; +} + +function bp_is_group_activity() { + if ( bp_is_single_item() && bp_is_groups_component() && bp_is_current_action( 'activity' ) ) + return true; + + return false; +} + +function bp_is_group_forum_topic() { + if ( bp_is_single_item() && bp_is_groups_component() && bp_is_current_action( 'forum' ) && bp_is_action_variable( 'topic', 0 ) ) + return true; + + return false; +} + +function bp_is_group_forum_topic_edit() { + if ( bp_is_single_item() && bp_is_groups_component() && bp_is_current_action( 'forum' ) && bp_is_action_variable( 'topic', 0 ) && bp_is_action_variable( 'edit', 2 ) ) + return true; + + return false; +} + +function bp_is_group_members() { + if ( bp_is_single_item() && bp_is_groups_component() && bp_is_current_action( 'members' ) ) + return true; + + return false; +} + +function bp_is_group_invites() { + if ( bp_is_groups_component() && bp_is_current_action( 'send-invites' ) ) + return true; + + return false; +} + +function bp_is_group_membership_request() { + if ( bp_is_groups_component() && bp_is_current_action( 'request-membership' ) ) + return true; + + return false; +} + +function bp_is_group_leave() { + + if ( bp_is_groups_component() && bp_is_single_item() && bp_is_current_action( 'leave-group' ) ) + return true; + + return false; +} + +function bp_is_group_single() { + if ( bp_is_groups_component() && bp_is_single_item() ) + return true; + + return false; +} + +function bp_is_create_blog() { + if ( bp_is_blogs_component() && bp_is_current_action( 'create' ) ) + return true; + + return false; +} + +/** Messages ******************************************************************/ + +function bp_is_user_messages() { + if ( bp_is_user() && bp_is_messages_component() ) + return true; + + return false; +} + +function bp_is_messages_inbox() { + if ( bp_is_user_messages() && ( !bp_current_action() || bp_is_current_action( 'inbox' ) ) ) + return true; + + return false; +} + +function bp_is_messages_sentbox() { + if ( bp_is_user_messages() && bp_is_current_action( 'sentbox' ) ) + return true; + + return false; +} + +function bp_is_messages_compose_screen() { + if ( bp_is_user_messages() && bp_is_current_action( 'compose' ) ) + return true; + + return false; +} + +function bp_is_notices() { + if ( bp_is_user_messages() && bp_is_current_action( 'notices' ) ) + return true; + + return false; +} + + +function bp_is_single( $component, $callback ) { + if ( bp_is_current_component( $component ) && ( true === call_user_func( $callback ) ) ) + return true; + + return false; +} + +/** Registration **************************************************************/ + +function bp_is_activation_page() { + if ( bp_is_current_component( 'activate' ) ) + return true; + + return false; +} + +function bp_is_register_page() { + if ( bp_is_current_component( 'register' ) ) + return true; + + return false; +} + +/** + * Use the above is_() functions to output a body class for each scenario + * + * @package BuddyPress + * @subpackage Core Template + * + * @param array $wp_classes The body classes coming from WP + * @param array $custom_classes Classes that were passed to get_body_class() + * @return array $classes The BP-adjusted body classes + */ +function bp_the_body_class() { + echo bp_get_the_body_class(); +} + function bp_get_the_body_class( $wp_classes, $custom_classes = false ) { + + $bp_classes = array(); + + /** Pages *************************************************************/ + + if ( is_front_page() ) + $bp_classes[] = 'home-page'; + + if ( bp_is_directory() ) + $bp_classes[] = 'directory'; + + if ( bp_is_single_item() ) + $bp_classes[] = 'single-item'; + + /** Components ********************************************************/ + + if ( !bp_is_blog_page() ) : + if ( bp_is_user_profile() ) + $bp_classes[] = 'xprofile'; + + if ( bp_is_activity_component() ) + $bp_classes[] = 'activity'; + + if ( bp_is_blogs_component() ) + $bp_classes[] = 'blogs'; + + if ( bp_is_messages_component() ) + $bp_classes[] = 'messages'; + + if ( bp_is_friends_component() ) + $bp_classes[] = 'friends'; + + if ( bp_is_groups_component() ) + $bp_classes[] = 'groups'; + + if ( bp_is_settings_component() ) + $bp_classes[] = 'settings'; + endif; + + /** User **************************************************************/ + + if ( !bp_is_directory() ) : + if ( bp_is_user_blogs() ) + $bp_classes[] = 'my-blogs'; + + if ( bp_is_user_groups() ) + $bp_classes[] = 'my-groups'; + + if ( bp_is_user_activity() ) + $bp_classes[] = 'my-activity'; + endif; + + if ( bp_is_my_profile() ) + $bp_classes[] = 'my-account'; + + if ( bp_is_user_profile() ) + $bp_classes[] = 'my-profile'; + + if ( bp_is_user_friends() ) + $bp_classes[] = 'my-friends'; + + if ( bp_is_user_messages() ) + $bp_classes[] = 'my-messages'; + + if ( bp_is_user_recent_commments() ) + $bp_classes[] = 'recent-comments'; + + if ( bp_is_user_recent_posts() ) + $bp_classes[] = 'recent-posts'; + + if ( bp_is_user_change_avatar() ) + $bp_classes[] = 'change-avatar'; + + if ( bp_is_user_profile_edit() ) + $bp_classes[] = 'profile-edit'; + + if ( bp_is_user_friends_activity() ) + $bp_classes[] = 'friends-activity'; + + if ( bp_is_user_groups_activity() ) + $bp_classes[] = 'groups-activity'; + + if ( is_user_logged_in() ) + $bp_classes[] = 'logged-in'; + + /** Messages **********************************************************/ + + if ( bp_is_messages_inbox() ) + $bp_classes[] = 'inbox'; + + if ( bp_is_messages_sentbox() ) + $bp_classes[] = 'sentbox'; + + if ( bp_is_messages_compose_screen() ) + $bp_classes[] = 'compose'; + + if ( bp_is_notices() ) + $bp_classes[] = 'notices'; + + if ( bp_is_user_friend_requests() ) + $bp_classes[] = 'friend-requests'; + + if ( bp_is_create_blog() ) + $bp_classes[] = 'create-blog'; + + /** Groups ************************************************************/ + + if ( bp_is_group_leave() ) + $bp_classes[] = 'leave-group'; + + if ( bp_is_group_invites() ) + $bp_classes[] = 'group-invites'; + + if ( bp_is_group_members() ) + $bp_classes[] = 'group-members'; + + if ( bp_is_group_forum_topic() ) + $bp_classes[] = 'group-forum-topic'; + + if ( bp_is_group_forum_topic_edit() ) + $bp_classes[] = 'group-forum-topic-edit'; + + if ( bp_is_group_forum() ) + $bp_classes[] = 'group-forum'; + + if ( bp_is_group_admin_page() ) + $bp_classes[] = 'group-admin'; + + if ( bp_is_group_create() ) + $bp_classes[] = 'group-create'; + + if ( bp_is_group_home() ) + $bp_classes[] = 'group-home'; + + if ( bp_is_single_activity() ) + $bp_classes[] = 'activity-permalink'; + + /** Registration ******************************************************/ + + if ( bp_is_register_page() ) + $bp_classes[] = 'registration'; + + if ( bp_is_activation_page() ) + $bp_classes[] = 'activation'; + + /** Current Component & Action ****************************************/ + + if ( !bp_is_blog_page() ) { + $bp_classes[] = bp_current_component(); + $bp_classes[] = bp_current_action(); + } + + /** Clean up***********************************************************/ + + // We don't want WordPress blog classes to appear on non-blog pages. + if ( !bp_is_blog_page() ) { + + // Preserve any custom classes already set + if ( !empty( $custom_classes ) ) { + $wp_classes = (array) $custom_classes; + } else { + $wp_classes = array(); + } + } + + // Merge WP classes with BP classes + $classes = array_merge( (array) $bp_classes, (array) $wp_classes ); + + // Remove any duplicates + $classes = array_unique( $classes ); + + return apply_filters( 'bp_get_the_body_class', $classes, $bp_classes, $wp_classes, $custom_classes ); + } + add_filter( 'body_class', 'bp_get_the_body_class', 10, 2 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-widgets.php b/wp-content/plugins/buddypress/bp-core/bp-core-widgets.php new file mode 100644 index 0000000..11dff4c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-widgets.php @@ -0,0 +1,334 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/* Register widgets for the core component */ +function bp_core_register_widgets() { + add_action('widgets_init', create_function('', 'return register_widget("BP_Core_Members_Widget");') ); + add_action('widgets_init', create_function('', 'return register_widget("BP_Core_Whos_Online_Widget");') ); + add_action('widgets_init', create_function('', 'return register_widget("BP_Core_Recently_Active_Widget");') ); +} +add_action( 'bp_register_widgets', 'bp_core_register_widgets' ); + +/*** MEMBERS WIDGET *****************/ + +class BP_Core_Members_Widget extends WP_Widget { + + function bp_core_members_widget() { + $this->__construct(); + } + + function __construct() { + $widget_ops = array( 'description' => __( 'A dynamic list of recently active, popular, and newest members', 'buddypress' ) ); + parent::__construct( false, $name = __( 'Members', 'buddypress' ), $widget_ops ); + + if ( is_active_widget( false, false, $this->id_base ) && !is_admin() && !is_network_admin() ) { + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) + wp_enqueue_script( 'bp_core_widget_members-js', BP_PLUGIN_URL . '/bp-core/js/widget-members.dev.js', array( 'jquery' ), '20110723' ); + else + wp_enqueue_script( 'bp_core_widget_members-js', BP_PLUGIN_URL . '/bp-core/js/widget-members.js', array( 'jquery' ), '20110723' ); + } + } + + function widget( $args, $instance ) { + global $bp; + + extract( $args ); + + if ( !$instance['member_default'] ) + $instance['member_default'] = 'active'; + + echo $before_widget; + echo $before_title + . $instance['title'] + . $after_title; ?> + + <?php if ( bp_has_members( 'user_id=0&type=' . $instance['member_default'] . '&max=' . $instance['max_members'] . '&populate_extras=0' ) ) : ?> + <div class="item-options" id="members-list-options"> + <a href="<?php echo site_url( bp_get_members_root_slug() ); ?>" id="newest-members" <?php if ( $instance['member_default'] == 'newest' ) : ?>class="selected"<?php endif; ?>><?php _e( 'Newest', 'buddypress' ) ?></a> + | <a href="<?php echo site_url( bp_get_members_root_slug() ); ?>" id="recently-active-members" <?php if ( $instance['member_default'] == 'active' ) : ?>class="selected"<?php endif; ?>><?php _e( 'Active', 'buddypress' ) ?></a> + + <?php if ( bp_is_active( 'friends' ) ) : ?> + + | <a href="<?php echo site_url( bp_get_members_root_slug() ); ?>" id="popular-members" <?php if ( $instance['member_default'] == 'popular' ) : ?>class="selected"<?php endif; ?>><?php _e( 'Popular', 'buddypress' ) ?></a> + + <?php endif; ?> + </div> + + <ul id="members-list" class="item-list"> + <?php while ( bp_members() ) : bp_the_member(); ?> + <li class="vcard"> + <div class="item-avatar"> + <a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_avatar() ?></a> + </div> + + <div class="item"> + <div class="item-title fn"><a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_name() ?></a></div> + <div class="item-meta"> + <span class="activity"> + <?php + if ( 'newest' == $instance['member_default'] ) + bp_member_registered(); + if ( 'active' == $instance['member_default'] ) + bp_member_last_active(); + if ( 'popular' == $instance['member_default'] ) + bp_member_total_friend_count(); + ?> + </span> + </div> + </div> + </li> + + <?php endwhile; ?> + </ul> + <?php wp_nonce_field( 'bp_core_widget_members', '_wpnonce-members' ); ?> + <input type="hidden" name="members_widget_max" id="members_widget_max" value="<?php echo esc_attr( $instance['max_members'] ); ?>" /> + + <?php else: ?> + + <div class="widget-error"> + <?php _e('No one has signed up yet!', 'buddypress') ?> + </div> + + <?php endif; ?> + + <?php echo $after_widget; ?> + <?php + } + + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['max_members'] = strip_tags( $new_instance['max_members'] ); + $instance['member_default'] = strip_tags( $new_instance['member_default'] ); + + return $instance; + } + + function form( $instance ) { + $defaults = array( + 'title' => __( 'Members', 'buddypress' ), + 'max_members' => 5, + 'member_default' => 'active' + ); + $instance = wp_parse_args( (array) $instance, $defaults ); + + $title = strip_tags( $instance['title'] ); + $max_members = strip_tags( $instance['max_members'] ); + $member_default = strip_tags( $instance['member_default'] ); + ?> + + <p><label for="bp-core-widget-title"><?php _e('Title:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" style="width: 100%" /></label></p> + + <p><label for="bp-core-widget-members-max"><?php _e('Max members to show:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_members' ); ?>" name="<?php echo $this->get_field_name( 'max_members' ); ?>" type="text" value="<?php echo esc_attr( $max_members ); ?>" style="width: 30%" /></label></p> + + <p> + <label for="bp-core-widget-groups-default"><?php _e('Default members to show:', 'buddypress'); ?> + <select name="<?php echo $this->get_field_name( 'member_default' ) ?>"> + <option value="newest" <?php if ( $member_default == 'newest' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Newest', 'buddypress' ) ?></option> + <option value="active" <?php if ( $member_default == 'active' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Active', 'buddypress' ) ?></option> + <option value="popular" <?php if ( $member_default == 'popular' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Popular', 'buddypress' ) ?></option> + </select> + </label> + </p> + + <?php + } +} + +/*** WHO'S ONLINE WIDGET *****************/ + +class BP_Core_Whos_Online_Widget extends WP_Widget { + + function bp_core_whos_online_widget() { + $this->__construct(); + } + + function __construct() { + $widget_ops = array( 'description' => __( 'Avatars of users who are currently online', 'buddypress' ) ); + parent::__construct( false, $name = __( "Who's Online Avatars", 'buddypress' ), $widget_ops ); + } + + function widget($args, $instance) { + global $bp; + + extract( $args ); + + echo $before_widget; + echo $before_title + . $instance['title'] + . $after_title; ?> + + <?php if ( bp_has_members( 'user_id=0&type=online&per_page=' . $instance['max_members'] . '&max=' . $instance['max_members'] . '&populate_extras=0' ) ) : ?> + <div class="avatar-block"> + <?php while ( bp_members() ) : bp_the_member(); ?> + <div class="item-avatar"> + <a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_avatar() ?></a> + </div> + <?php endwhile; ?> + </div> + <?php else: ?> + + <div class="widget-error"> + <?php _e( 'There are no users currently online', 'buddypress' ) ?> + </div> + + <?php endif; ?> + + <?php echo $after_widget; ?> + <?php + } + + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['max_members'] = strip_tags( $new_instance['max_members'] ); + + return $instance; + } + + function form( $instance ) { + $defaults = array( + 'title' => __( "Who's Online", 'buddypress' ), + 'max_members' => 15 + ); + $instance = wp_parse_args( (array) $instance, $defaults ); + + $title = strip_tags( $instance['title'] ); + $max_members = strip_tags( $instance['max_members'] ); + ?> + + <p><label for="bp-core-widget-title"><?php _e('Title:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" style="width: 100%" /></label></p> + + <p><label for="bp-core-widget-members-max"><?php _e('Max Members to show:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_members' ); ?>" name="<?php echo $this->get_field_name( 'max_members' ); ?>" type="text" value="<?php echo esc_attr( $max_members ); ?>" style="width: 30%" /></label></p> + <?php + } +} + +/*** RECENTLY ACTIVE WIDGET *****************/ + +class BP_Core_Recently_Active_Widget extends WP_Widget { + + function bp_core_recently_active_widget() { + $this->__construct(); + } + + function __construct() { + $widget_ops = array( 'description' => __( 'Avatars of recently active members', 'buddypress' ) ); + parent::__construct( false, $name = __( 'Recently Active Member Avatars', 'buddypress' ), $widget_ops ); + } + + function widget($args, $instance) { + global $bp; + + extract( $args ); + + echo $before_widget; + echo $before_title + . $instance['title'] + . $after_title; ?> + + <?php if ( bp_has_members( 'user_id=0&type=active&per_page=' . $instance['max_members'] . '&max=' . $instance['max_members'] . '&populate_extras=0' ) ) : ?> + <div class="avatar-block"> + <?php while ( bp_members() ) : bp_the_member(); ?> + <div class="item-avatar"> + <a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_avatar() ?></a> + </div> + <?php endwhile; ?> + </div> + <?php else: ?> + + <div class="widget-error"> + <?php _e( 'There are no recently active members', 'buddypress' ) ?> + </div> + + <?php endif; ?> + + <?php echo $after_widget; ?> + <?php + } + + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['max_members'] = strip_tags( $new_instance['max_members'] ); + + return $instance; + } + + function form( $instance ) { + $defaults = array( + 'title' => 'Recently Active Members', + 'max_members' => 15 + ); + $instance = wp_parse_args( (array) $instance, $defaults ); + + $title = strip_tags( $instance['title'] ); + $max_members = strip_tags( $instance['max_members'] ); + ?> + + <p><label for="bp-core-widget-members-title"><?php _e('Title:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" style="width: 100%" /></label></p> + + <p><label for="bp-core-widget-members-max"><?php _e('Max Members to show:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_members' ); ?>" name="<?php echo $this->get_field_name( 'max_members' ); ?>" type="text" value="<?php echo esc_attr( $max_members ); ?>" style="width: 30%" /></label></p> + <?php + } +} + +/** Widget AJAX ******************/ + +function bp_core_ajax_widget_members() { + global $bp; + + check_ajax_referer( 'bp_core_widget_members' ); + + switch ( $_POST['filter'] ) { + case 'newest-members': + $type = 'newest'; + break; + + case 'recently-active-members': + $type = 'active'; + break; + + case 'popular-members': + if ( bp_is_active( 'friends' ) ) + $type = 'popular'; + else + $type = 'active'; + + break; + } + + if ( bp_has_members( 'user_id=0&type=' . $type . '&per_page=' . $_POST['max-members'] . '&max=' . $_POST['max-members'] . '&populate_extras=0' ) ) : ?> + <?php echo '0[[SPLIT]]'; // return valid result. TODO: remove this. ?> + <div class="avatar-block"> + <?php while ( bp_members() ) : bp_the_member(); ?> + <li class="vcard"> + <div class="item-avatar"> + <a href="<?php bp_member_permalink() ?>"><?php bp_member_avatar() ?></a> + </div> + + <div class="item"> + <div class="item-title fn"><a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_name() ?></a></div> + <?php if ( 'active' == $type ) : ?> + <div class="item-meta"><span class="activity"><?php bp_member_last_active() ?></span></div> + <?php elseif ( 'newest' == $type ) : ?> + <div class="item-meta"><span class="activity"><?php bp_member_registered() ?></span></div> + <?php elseif ( bp_is_active( 'friends' ) ) : ?> + <div class="item-meta"><span class="activity"><?php bp_member_total_friend_count() ?></span></div> + <?php endif; ?> + </div> + </li> + + <?php endwhile; ?> + </div> + + <?php else: ?> + <?php echo "-1[[SPLIT]]<li>"; ?> + <?php _e( 'There were no members found, please try another filter.', 'buddypress' ) ?> + <?php echo "</li>"; ?> + <?php endif; +} +add_action( 'wp_ajax_widget_members', 'bp_core_ajax_widget_members' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-wpabstraction.php b/wp-content/plugins/buddypress/bp-core/bp-core-wpabstraction.php new file mode 100644 index 0000000..6f2a069 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/bp-core-wpabstraction.php @@ -0,0 +1,175 @@ +<?php +/***** + * WordPress Abstraction + * + * The functions within this file will detect the version of WordPress you are running + * and will alter the environment so BuddyPress can run regardless. + * + * The code below mostly contains function mappings. This code is subject to change once + * the 3.0 WordPress version merge takes place. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Parso the WordPress core version number into the major release + * + * @since BuddyPress (1.5.2) + * @global string $wp_version + * @return string + */ +function bp_get_major_wp_version() { + global $wp_version; + + return (float) $wp_version; +} + +/** + * Only add abstraction functions if WordPress is not in multisite mode + */ +if ( !is_multisite() ) { + global $wpdb; + + $wpdb->base_prefix = $wpdb->prefix; + $wpdb->blogid = BP_ROOT_BLOG; + + if ( !function_exists( 'get_blog_option' ) ) { + function get_blog_option( $blog_id, $option_name, $default = false ) { + return get_option( $option_name, $default ); + } + } + + if ( !function_exists( 'update_blog_option' ) ) { + function update_blog_option( $blog_id, $option_name, $value ) { + return update_option( $option_name, $value ); + } + } + + if ( !function_exists( 'delete_blog_option' ) ) { + function delete_blog_option( $blog_id, $option_name ) { + return delete_option( $option_name ); + } + } + + if ( !function_exists( 'switch_to_blog' ) ) { + function switch_to_blog() { + return bp_get_root_blog_id(); + } + } + + if ( !function_exists( 'restore_current_blog' ) ) { + function restore_current_blog() { + return bp_get_root_blog_id(); + } + } + + if ( !function_exists( 'get_blogs_of_user' ) ) { + function get_blogs_of_user() { + return false; + } + } + + if ( !function_exists( 'update_blog_status' ) ) { + function update_blog_status() { + return true; + } + } + + if ( !function_exists( 'is_subdomain_install' ) ) { + function is_subdomain_install() { + if ( ( defined( 'VHOST' ) && 'yes' == VHOST ) || ( defined( 'SUBDOMAIN_INSTALL' ) && SUBDOMAIN_INSTALL ) ) + return true; + + return false; + } + } +} + +function bp_core_get_status_sql( $prefix = false ) { + if ( !is_multisite() ) + return "{$prefix}user_status = 0"; + else + return "{$prefix}spam = 0 AND {$prefix}deleted = 0 AND {$prefix}user_status = 0"; +} + +/** + * Multibyte encoding fallback functions + * + * The PHP multibyte encoding extension is not enabled by default. In cases where it is not enabled, + * these functions provide a fallback. + * + * Borrowed from MediaWiki, under the GPLv2. Thanks! + */ +if ( !function_exists( 'mb_strlen' ) ) { + /** + * Fallback implementation of mb_strlen, hardcoded to UTF-8. + * @param string $str + * @param string $enc optional encoding; ignored + * @return int + */ + function mb_strlen( $str, $enc = '' ) { + $counts = count_chars( $str ); + $total = 0; + + // Count ASCII bytes + for( $i = 0; $i < 0x80; $i++ ) { + $total += $counts[$i]; + } + + // Count multibyte sequence heads + for( $i = 0xc0; $i < 0xff; $i++ ) { + $total += $counts[$i]; + } + return $total; + } +} + +if ( !function_exists( 'mb_strpos' ) ) { + /** + * Fallback implementation of mb_strpos, hardcoded to UTF-8. + * @param $haystack String + * @param $needle String + * @param $offset String: optional start position + * @param $encoding String: optional encoding; ignored + * @return int + */ + function mb_strpos( $haystack, $needle, $offset = 0, $encoding = '' ) { + $needle = preg_quote( $needle, '/' ); + + $ar = array(); + preg_match( '/' . $needle . '/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset ); + + if( isset( $ar[0][1] ) ) { + return $ar[0][1]; + } else { + return false; + } + } +} + +if ( !function_exists( 'mb_strrpos' ) ) { + /** + * Fallback implementation of mb_strrpos, hardcoded to UTF-8. + * @param $haystack String + * @param $needle String + * @param $offset String: optional start position + * @param $encoding String: optional encoding; ignored + * @return int + */ + function mb_strrpos( $haystack, $needle, $offset = 0, $encoding = '' ) { + $needle = preg_quote( $needle, '/' ); + + $ar = array(); + preg_match_all( '/' . $needle . '/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset ); + + if( isset( $ar[0] ) && count( $ar[0] ) > 0 && + isset( $ar[0][count( $ar[0] ) - 1][1] ) ) { + return $ar[0][count( $ar[0] ) - 1][1]; + } else { + return false; + } + } +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/css/admin-bar-rtl.css b/wp-content/plugins/buddypress/bp-core/css/admin-bar-rtl.css new file mode 100644 index 0000000..3c33211 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/css/admin-bar-rtl.css @@ -0,0 +1 @@ +#wpadminbar .quicklinks li#wp-admin-bar-my-account ul,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar ul{left:auto;right:0;}#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a img,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a img{margin:-2px -5px 0 23px;}#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar ul,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul{left:auto;right:30px;}#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar ul ul,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{left:auto;right:0;}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul{left:auto;right:0;}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{left:auto;right:0;} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/css/admin-bar-rtl.dev.css b/wp-content/plugins/buddypress/bp-core/css/admin-bar-rtl.dev.css new file mode 100644 index 0000000..3896384 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/css/admin-bar-rtl.dev.css @@ -0,0 +1,27 @@ +#wpadminbar .quicklinks li#wp-admin-bar-my-account ul, +#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar ul { + left: auto; + right: 0; +} +#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar > a img, +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar > a img { + margin: -2px -5px 0 23px; +} +#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar ul, +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul { + left: auto; + right: 30px; +} +#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar ul ul, +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul { + left: auto; + right: 0; +} +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul { + left: auto; + right: 0; +} +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/css/admin-bar.css b/wp-content/plugins/buddypress/bp-core/css/admin-bar.css new file mode 100644 index 0000000..a26d0cf --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/css/admin-bar.css @@ -0,0 +1 @@ +#wpadminbar .quicklinks li#wp-admin-bar-my-account ul,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar ul{left:0;right:auto;}#wp-admin-bar-user-info img.avatar{height:64px;width:64px;}#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a{border-left:none;background:url(../images/admin-bar-sprite.png?d=11122010) top left no-repeat;}#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar>a img,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a img{width:16px;height:16px;display:inline;border:1px solid #999;vertical-align:middle;margin:-2px 23px 0 -5px;padding:0;background:#eee;float:none;}#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar ul,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul{left:30px;}#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar ul ul,#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{left:0;}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar>a{border-left:none;background:url(../images/admin-bar-sprite.png?d=11122010) top left no-repeat;}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul{left:0;}#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul{left:0;}#wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count,#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count,#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications{background:#eee;color:#333;text-shadow:none;display:inline;padding:2px 5px;font-size:10px;font-weight:bold;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/css/admin-bar.dev.css b/wp-content/plugins/buddypress/bp-core/css/admin-bar.dev.css new file mode 100644 index 0000000..78259bc --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/css/admin-bar.dev.css @@ -0,0 +1,62 @@ +#wpadminbar .quicklinks li#wp-admin-bar-my-account ul, +#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar ul { + left: 0; + right: auto; +} +#wp-admin-bar-user-info img.avatar { + height: 64px; + width: 64px; +} + +/* Displayed User */ +#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar > a { + border-left: none; + background: url(../images/admin-bar-sprite.png?d=11122010) top left no-repeat; +} +#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar > a img, +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar > a img { + width: 16px; + height: 16px; + display: inline; + border: 1px solid #999; + vertical-align: middle; + margin: -2px 23px 0 -5px; + padding: 0; + background: #eee; + float: none; +} +#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar ul, +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul { + left: 30px; +} +#wpadminbar .quicklinks li#wp-admin-bar-user-admin-with-avatar ul ul, +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul { + left: 0; +} + +/* Displayed Group */ +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar > a { + border-left: none; + background: url(../images/admin-bar-sprite.png?d=11122010) top left no-repeat; +} +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul { + left: 0; +} +#wpadminbar .quicklinks li#wp-admin-bar-group-admin-with-avatar ul ul { + left: 0; +} +#wpadminbar .quicklinks li#wp-admin-bar-my-account a span.count, +#wpadminbar .quicklinks li#wp-admin-bar-my-account-with-avatar a span.count, +#wpadminbar .quicklinks li#wp-admin-bar-bp-notifications #ab-pending-notifications { + background: #eee; + color: #333; + text-shadow: none; + display: inline; + padding: 2px 5px; + font-size: 10px; + font-weight: bold; + -moz-border-radius: 10px; + -khtml-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/css/admin.css b/wp-content/plugins/buddypress/bp-core/css/admin.css new file mode 100644 index 0000000..69c4cfc --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/css/admin.css @@ -0,0 +1 @@ +div#icon-buddypress{background:url(../images/icons32.png) no-repeat -4px 0;}div#bp-admin{color:#555;min-width:680px;}div#bp-admin p{line-height:170%;}form#bp-admin-form{margin:0 10px;}div#bp-admin-nav{background:#e0e0e0;margin:15px -10px 10px;padding:10px 10px 0 10px;height:30px;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}div#bp-admin-nav div.submit{position:relative;float:right;margin-top:-36px!important;}div#bp-admin-nav div.submit input{padding:6px 10px;}div#bp-admin-nav ol{list-style-type:decimal;margin:0;padding:0;}div#bp-admin-nav ol li{float:left;margin:0 10px 0 0;color:#666;}div#bp-admin-nav ol li{padding:8px 12px;display:block;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none;}div#bp-admin-nav ol li.current{background:#f9f9f9;color:#555;}div#bp-admin-nav ol li span.complete{background:url(../images/completed.gif) center left no-repeat;padding:6px;}div.component{width:323px;float:left;margin:15px 30px 0 0;}div.component div.radio{position:relative;background:#e0e0e0;padding:5px 10px;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;top:-6px;}div.component img{margin-top:10px;}div.component p{margin-left:4px;}div.component h5{font-size:18px;float:left;margin:0 0 0 4px;width:100px;}div.component div.radio{font-size:11px;float:right;top:5px;}div#bp-admin div.prev-next,div#bp-admin div.prev-next p,div#bp-admin div.submit,div#bp-admin div.submit p{margin:0;padding:0;}div#bp-admin div.submit{margin-top:30px;}div#bp-admin div.prev-next{text-align:right;margin-top:0;}div#bp-admin div.prev-next{margin:0 -20px;padding:0 20px 10px;}div#bp-admin table td{font-family:helvetica,arial,tahoma,sans-serif;vertical-align:top;}div#bp-admin table.form-table th{border-right:1px solid #eee;padding:15px 25px 15px 0;color:#555;vertical-align:top;}div#bp-admin table.form-table tr{border-bottom:1px dotted #f0f0f0;}div#bp-admin table.form-table td{padding-left:25px;font-size:12px;}div#bp-admin table.form-table th h5{font-size:14px;margin:0;line-height:150%;}div#bp-admin table.form-table th img{margin-top:5px;}div#bp-admin table.form-table th p{margin:3px 0 0 0;}div#bp-admin code,div#bp-admin kbd{font-size:12px;background:#f0f0f0;}div#bp-admin div#message code,div#bp-admin div#message kbd{background:#ffe293;}a.button{padding-top:4px;}a.installed,a.installed:hover,a.installed:active{padding-left:15px;color:#888;border-color:#ccc;cursor:default;}a.installed span{background:url(../images/installed.gif) left center no-repeat;padding:6px 10px 7px 6px;margin-left:-5px;} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/css/admin.dev.css b/wp-content/plugins/buddypress/bp-core/css/admin.dev.css new file mode 100644 index 0000000..8185b4a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/css/admin.dev.css @@ -0,0 +1,160 @@ +div#icon-buddypress { + background: url( ../images/icons32.png ) no-repeat -4px 0px; +} + +div#bp-admin { + color: #555; + min-width: 680px; + } + div#bp-admin p { line-height: 170%; } + +form#bp-admin-form { + margin: 0 10px; +} + +div#bp-admin-nav { + background: #e0e0e0; + margin: 15px -10px 10px; + padding: 10px 10px 0 10px; + height: 30px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; +} +div#bp-admin-nav div.submit { + position: relative; + float: right; + margin-top: -36px !important; +} +div#bp-admin-nav div.submit input { + padding: 6px 10px; +} + div#bp-admin-nav ol { + list-style-type: decimal; + margin: 0; + padding: 0; + } + div#bp-admin-nav ol li { + float: left; + margin: 0 10px 0 0; + color: #666; + } + div#bp-admin-nav ol li { + padding: 8px 12px; + display: block; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + text-decoration: none; + } + div#bp-admin-nav ol li.current { + background: #f9f9f9; + color: #555; + } + div#bp-admin-nav ol li span.complete { + background: url( ../images/completed.gif ) center left no-repeat; + padding: 6px; + } + +div.component { + width: 323px; + float: left; + margin: 15px 30px 0 0; +} + div.component div.radio { + position: relative; + background: #e0e0e0; + padding: 5px 10px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + top: -6px; + } + + div.component img { + margin-top: 10px; + } + + div.component p { + margin-left: 4px; + } + + div.component h5 { + font-size: 18px; + float: left; + margin: 0 0 0 4px; + width: 100px; + } + + div.component div.radio { + font-size: 11px; + float: right; + top: 5px; + } + +div#bp-admin div.prev-next, div#bp-admin div.prev-next p, +div#bp-admin div.submit, div#bp-admin div.submit p { + margin: 0; + padding: 0; +} +div#bp-admin div.submit { margin-top: 30px; } +div#bp-admin div.prev-next { text-align: right; margin-top: 0; } + +div#bp-admin div.prev-next { + margin: 0 -20px; + padding: 0 20px 10px; +} + +div#bp-admin table td { + font-family: helvetica, arial, tahoma, sans-serif; + vertical-align: top; +} + +div#bp-admin table.form-table th { + border-right: 1px solid #eee; + padding: 15px 25px 15px 0; + color: #555; + vertical-align: top; +} + div#bp-admin table.form-table tr { + border-bottom: 1px dotted #f0f0f0; + } + div#bp-admin table.form-table td { padding-left: 25px; font-size: 12px; } + + div#bp-admin table.form-table th h5 { + font-size: 14px; + margin: 0; + line-height: 150%; + } + + div#bp-admin table.form-table th img { + margin-top: 5px; + } + + div#bp-admin table.form-table th p { margin: 3px 0 0 0; } + +div#bp-admin code, div#bp-admin kbd { + font-size: 12px; + background: #f0f0f0; +} + +div#bp-admin div#message code, div#bp-admin div#message kbd { + background: #ffe293; +} + +a.button { + padding-top: 4px; +} + +a.installed, a.installed:hover, a.installed:active { + padding-left: 15px; + color: #888; + border-color: #ccc; + cursor: default; +} + +a.installed span { + background: url( ../images/installed.gif) left center no-repeat; + padding: 6px 10px 7px 6px; + margin-left: -5px; +} diff --git a/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.css b/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.css new file mode 100644 index 0000000..425dff0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.css @@ -0,0 +1 @@ +#wp-admin-bar{right:0;left:auto;}#wp-admin-bar div#admin-bar-logo{right:10px;left:auto;}#wp-admin-bar li{text-align:right;}#wp-admin-bar li.no-arrow a{padding-left:15px;padding-right:0;}#admin-bar-logo{float:right;}#wp-admin-bar ul li{float:right;background:url(_inc/images/admin-menu-arrow.gif) 12% 53% no-repeat;padding-left:11px;padding-right:0;}#wp-admin-bar ul li.no-arrow{padding-left:0;}#wp-admin-bar ul li.align-right{left:0;right:auto;}#wp-admin-bar ul li ul{right:-999em;left:auto;margin-right:0;}#wp-admin-bar ul li ul li{float:right;}#wp-admin-bar ul li ul ul{margin:-25px 184px 0 0;}#wp-admin-bar ul li:hover ul,#wp-admin-bar ul li li:hover ul,#wp-admin-bar ul li.sfhover ul,#wp-admin-bar ul li ul li.sfhover ul{right:auto;}#wp-admin-bar ul li.align-right:hover ul{left:0;right:auto;}#wp-admin-bar ul li:hover ul ul,#wp-admin-bar li.sfhover ul li ul{right:-999em;left:auto;}#wp-admin-bar img.avatar{float:right;margin-left:8px;margin-right:0;}#wp-admin-bar span.activity{margin-right:34px;margin-left:0;}#wp-admin-bar ul li#bp-adminbar-notifications-menu a span{margin-right:2px;margin-left:0;} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.dev.css b/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.dev.css new file mode 100644 index 0000000..57f713d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.dev.css @@ -0,0 +1,77 @@ +#wp-admin-bar { + right: 0; + left: auto; +} +#wp-admin-bar div#admin-bar-logo { + right: 10px; + left: auto; +} +#wp-admin-bar li { + text-align: right; +} +#wp-admin-bar li.no-arrow a { + padding-left: 15px; + padding-right: 0; +} +#admin-bar-logo { + float: right; +} + +#wp-admin-bar ul li {/* all list items */ + float: right; + background: url( _inc/images/admin-menu-arrow.gif ) 12% 53% no-repeat; + padding-left: 11px; + padding-right: 0; +} +#wp-admin-bar ul li.no-arrow { + padding-left: 0; +} +#wp-admin-bar ul li.align-right { + left: 0; + right: auto; +} + +/* second-level lists */ +#wp-admin-bar ul li ul { + right: -999em; + left: auto; + margin-right: 0; +} +#wp-admin-bar ul li ul li { + float: right; +} + +/* third-and-above-level lists */ +#wp-admin-bar ul li ul ul { + margin: -25px 184px 0 0; +} +#wp-admin-bar ul li:hover ul, +#wp-admin-bar ul li li:hover ul, +#wp-admin-bar ul li.sfhover ul, +#wp-admin-bar ul li ul li.sfhover ul {/* lists nested under hovered list items */ + right: auto; +} +#wp-admin-bar ul li.align-right:hover ul { + left: 0; + right: auto; +} +#wp-admin-bar ul li:hover ul ul, +#wp-admin-bar li.sfhover ul li ul { + right: -999em; + left: auto; +} + +/* Menu item css */ +#wp-admin-bar img.avatar { + float: right; + margin-left: 8px; + margin-right: 0; +} +#wp-admin-bar span.activity { + margin-right: 34px; + margin-left: 0; +} +#wp-admin-bar ul li#bp-adminbar-notifications-menu a span { + margin-right: 2px; + margin-left: 0; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/css/buddybar.css b/wp-content/plugins/buddypress/bp-core/css/buddybar.css new file mode 100644 index 0000000..88b866f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/css/buddybar.css @@ -0,0 +1 @@ +body,body.wp-admin{padding-top:25px!important;}#wp-admin-bar{position:fixed;top:0;left:0;z-index:99;height:25px;font-size:11px;width:100%;z-index:1000;}#wp-admin-bar .padder{position:relative;padding:0;width:100%;margin:0 auto;background:url(../images/60pc_black.png);height:25px;}body#bp-default #wp-admin-bar .padder{min-width:960px;max-width:1250px;}#wp-admin-bar *{z-index:999;}#wp-admin-bar div#admin-bar-logo{position:absolute;top:5px;left:10px;}#wp-admin-bar a img{border:none;}#wp-admin-bar li{list-style:none;margin:0;padding:0;line-height:100%;text-align:left;}#wp-admin-bar li a{padding:7px 15px 7px 15px;color:#eee;text-decoration:none;font-size:11px;}#wp-admin-bar li.alt{border:none;}#wp-admin-bar li.no-arrow a{padding-right:15px;}#wp-admin-bar ul li ul li a span{display:none;}#wp-admin-bar li:hover,#wp-admin-bar li.hover{position:static;}#admin-bar-logo{float:left;font-weight:bold;font-size:11px;padding:5px 8px;margin:0;text-decoration:none;color:#fff;}body#bp-default #admin-bar-logo{padding:2px 8px;}#wp-admin-bar ul{margin:0;list-style:none;line-height:1;cursor:pointer;height:auto;padding:0;}#wp-admin-bar ul li{padding:0;float:left;position:relative;background:url(../images/admin-menu-arrow.gif) 88% 53% no-repeat;padding-right:11px;}#wp-admin-bar ul li.no-arrow{background:none;padding-right:0;}#wp-admin-bar ul li ul li{background-image:none;}#wp-admin-bar ul li.align-right{position:absolute;right:0;}#wp-admin-bar ul li a{display:block;}#wp-admin-bar ul.main-nav li:hover,#wp-admin-bar ul.main-nav li.sfhover,#wp-admin-bar ul.main-nav li ul li.sfhover{background-color:#333;}#wp-admin-bar ul li ul{position:absolute;width:185px;left:-999em;margin-left:0;background:#333;border:1px solid #222;-moz-box-shadow:0 4px 8px rgba(0,0,0,0.1);-webkit-box-shadow:0 4px 8px rgba(0,0,0,0.1);-moz-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;}#wp-admin-bar ul li>ul{border-top:none;}#wp-admin-bar ul li ul a{color:#eee;}#wp-admin-bar ul li ul li{float:left;width:174px;margin:0;}#wp-admin-bar ul li ul li:hover a{color:#fff;}#wp-admin-bar ul li div.admin-bar-clear{clear:both;}#wp-admin-bar ul.main-nav li ul li:hover,#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li ul li.sfhover{background-color:#222;}#wp-admin-bar ul li ul ul{margin:-25px 0 0 184px;-moz-border-radius:3px;-webkit-border-radius:3px;}#wp-admin-bar ul li ul li:hover ul li a{color:#eee;}#wp-admin-bar ul li ul li ul li:hover a{color:#fff;}#wp-admin-bar ul li:hover ul,#wp-admin-bar ul li ul li:hover ul,#wp-admin-bar ul li.sfhover ul,#wp-admin-bar ul li ul li.sfhover ul{left:auto;}#wp-admin-bar ul li.align-right:hover ul{right:0;}#wp-admin-bar ul li:hover ul ul,#wp-admin-bar li.sfhover ul li ul{left:-999em;}#wp-admin-bar img.avatar{float:left;margin-right:8px;}#wp-admin-bar span.activity{display:block;margin-left:34px;padding:0;}#wp-admin-bar ul.author-list li a{height:17px;}#wp-admin-bar ul li#bp-adminbar-notifications-menu a span{padding:0 6px;margin-left:2px;background:#fff;color:#000;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/css/buddybar.dev.css b/wp-content/plugins/buddypress/bp-core/css/buddybar.dev.css new file mode 100644 index 0000000..3827756 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/css/buddybar.dev.css @@ -0,0 +1,205 @@ +body, +body.wp-admin { + padding-top: 25px !important; +} +#wp-admin-bar { + position: fixed; + top: 0; + left: 0; + z-index: 99; + height: 25px; + font-size: 11px; + width: 100%; + z-index: 1000; +} +#wp-admin-bar .padder { + position: relative; + padding: 0; + width: 100%; + margin: 0 auto; + background: url( ../images/60pc_black.png ); + height: 25px; +} +body#bp-default #wp-admin-bar .padder { + max-width: 1250px; +} +#wp-admin-bar * { + z-index: 999; +} +#wp-admin-bar div#admin-bar-logo { + position: absolute; + top: 5px; + left: 10px; +} +#wp-admin-bar a img { + border: none; +} +#wp-admin-bar li { + list-style: none; + margin: 0; + padding: 0; + line-height: 100%; + text-align: left; +} +#wp-admin-bar li a { + padding: 7px 15px 7px 15px; + color: #eee; + text-decoration: none; + font-size: 11px; +} +#wp-admin-bar li.alt { + border: none; +} +#wp-admin-bar li.no-arrow a { + padding-right: 15px; +} +#wp-admin-bar ul li ul li a span { + display: none; +} +#wp-admin-bar li:hover, +#wp-admin-bar li.hover { + position: static; +} +#admin-bar-logo { + float: left; + font-weight: bold; + font-size: 11px; + padding: 5px 8px; + margin: 0; + text-decoration: none; + color: #fff; +} +body#bp-default #admin-bar-logo { + padding: 2px 8px; +} + +/* all lists */ +#wp-admin-bar ul { + margin: 0; + list-style: none; + line-height: 1; + cursor: pointer; + height: auto; + padding: 0; +} + +/* all list items */ +#wp-admin-bar ul li { + padding: 0; + float: left; + position: relative; + background: url( ../images/admin-menu-arrow.gif ) 88% 53% no-repeat; + padding-right: 11px; +} +#wp-admin-bar ul li.no-arrow { + background: none; + padding-right: 0; +} +#wp-admin-bar ul li ul li { + background-image: none; +} +#wp-admin-bar ul li.align-right { + position: absolute; + right: 0; +} +#wp-admin-bar ul li a { + display: block; +} +#wp-admin-bar ul.main-nav li:hover, +#wp-admin-bar ul.main-nav li.sfhover, +#wp-admin-bar ul.main-nav li ul li.sfhover { + background-color: #333; +} + +/* second-level lists */ +#wp-admin-bar ul li ul { + position: absolute; + width: 185px; + left: -999em; + margin-left: 0; + background: #333; + border: 1px solid #222; + -moz-box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; +} +#wp-admin-bar ul li > ul { + border-top: none; +} +#wp-admin-bar ul li ul a { + color: #eee; +} +#wp-admin-bar ul li ul li { + float: left; + width: 174px; + margin: 0; +} +#wp-admin-bar ul li ul li:hover a { + color: #fff; +} +#wp-admin-bar ul li div.admin-bar-clear { + clear: both; +} +#wp-admin-bar ul.main-nav li ul li:hover, +#wp-admin-bar ul.main-nav li ul li.sfhover, +#wp-admin-bar ul.main-nav li ul li.sfhover { + background-color: #222; +} + +/* third-and-above-level lists */ +#wp-admin-bar ul li ul ul { + margin: -25px 0 0 184px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} +#wp-admin-bar ul li ul li:hover ul li a { + color: #eee; +} +#wp-admin-bar ul li ul li ul li:hover a { + color: #fff; +} +#wp-admin-bar ul li:hover ul, +#wp-admin-bar ul li ul li:hover ul, +#wp-admin-bar ul li.sfhover ul, +#wp-admin-bar ul li ul li.sfhover ul { + left: auto; +} +#wp-admin-bar ul li.align-right:hover ul { + right: 0; +} +#wp-admin-bar ul li:hover ul ul, +#wp-admin-bar li.sfhover ul li ul { + left: -999em; +} + +/* Menu item css */ +#wp-admin-bar img.avatar { + float: left; + margin-right: 8px; +} +#wp-admin-bar span.activity { + display: block; + margin-left: 34px; + padding: 0; +} +#wp-admin-bar ul.author-list li a { + height: 17px; +} +#wp-admin-bar ul li#bp-adminbar-notifications-menu a span { + padding: 0 6px; + margin-left: 2px; + background: #fff; + color: #000; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +#wp-admin-bar-user-info img.avatar { + height: 64px; + width: 64px; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/deprecated/1.5.php b/wp-content/plugins/buddypress/bp-core/deprecated/1.5.php new file mode 100644 index 0000000..d2ca186 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/deprecated/1.5.php @@ -0,0 +1,537 @@ +<?php +/** + * Deprecated Functions + * + * @package BuddyPress + * @subpackage Core + * @deprecated Since 1.5 + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** Loader ********************************************************************/ + +function bp_setup_root_components() { + do_action( 'bp_setup_root_components' ); +} +add_action( 'bp_init', 'bp_setup_root_components', 6 ); + +/** WP Abstraction ************************************************************/ + +/** + * bp_core_is_multisite() + * + * This function originally served as a wrapper when WordPress and WordPress MU were separate entities. + * Use is_multisite() instead. + * + * @deprecated 1.5 + * @deprecated Use is_multisite() + */ +function bp_core_is_multisite() { + _deprecated_function( __FUNCTION__, '1.5', 'is_multisite()' ); + return is_multisite(); +} + +/** + * bp_core_is_main_site + * + * Checks if current blog is root blog of site. Deprecated in 1.5. + * + * @deprecated 1.5 + * @deprecated Use is_main_site() + * @package BuddyPress + * @param int $blog_id optional blog id to test (default current blog) + * @return bool True if not multisite or $blog_id is main site + * @since 1.2.6 + */ +function bp_core_is_main_site( $blog_id = '' ) { + _deprecated_function( __FUNCTION__, '1.5', 'is_main_site()' ); + return is_main_site( $blog_id ); +} + +/** + * WPMU version of is_super_admin() + * + * @deprecated 1.5 + * @deprecated Use is_super_admin() + * @param int $user_id Optional. Defaults to logged-in user + * @return bool True if is super admin + */ +if ( !function_exists( 'is_site_admin' ) ) { + function is_site_admin( $user_id = false ) { + _deprecated_function( __FUNCTION__, '1.5', 'is_super_admin()' ); + return is_super_admin( $user_id ); + } +} + +/** Admin ******************************************************************/ + +/** + * In BuddyPress 1.1 - 1.2.x, this function provided a better version of add_menu_page() + * that allowed positioning of menus. Deprecated in 1.5 in favour of a WP core function. + * + * @deprecated 1.5 + * @deprecated Use add_menu_page(). + * @since 1.1 + */ +function bp_core_add_admin_menu_page( $args = '' ) { + global $_registered_pages, $admin_page_hooks, $menu; + + _deprecated_function( __FUNCTION__, '1.5', 'Use add_menu_page()' ); + + $defaults = array( + 'access_level' => 2, + 'file' => false, + 'function' => false, + 'icon_url' => false, + 'menu_title' => '', + 'page_title' => '', + 'position' => 100 + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + $file = plugin_basename( $file ); + $hookname = get_plugin_page_hookname( $file, '' ); + + $admin_page_hooks[$file] = sanitize_title( $menu_title ); + + if ( !empty( $function ) && !empty ( $hookname ) ) + add_action( $hookname, $function ); + + if ( empty( $icon_url ) ) + $icon_url = 'images/generic.png'; + elseif ( is_ssl() && 0 === strpos( $icon_url, 'http://' ) ) + $icon_url = 'https://' . substr( $icon_url, 7 ); + + do { + $position++; + } while ( !empty( $menu[$position] ) ); + + $menu[$position] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url ); + $_registered_pages[$hookname] = true; + + return $hookname; +} +/** Activity ******************************************************************/ + +function bp_is_activity_permalink() { + _deprecated_function( __FUNCTION__, '1.5', 'bp_is_single_activity' ); + bp_is_single_activity(); +} + +/** Core **********************************************************************/ + +function bp_core_get_wp_profile() { + _deprecated_function( __FUNCTION__, '1.5' ); + + global $bp; + + $ud = get_userdata( $bp->displayed_user->id ); ?> + +<div class="bp-widget wp-profile"> + <h4><?php _e( 'My Profile' ) ?></h4> + + <table class="wp-profile-fields"> + + <?php if ( $ud->display_name ) : ?> + + <tr id="wp_displayname"> + <td class="label"><?php _e( 'Name', 'buddypress' ); ?></td> + <td class="data"><?php echo $ud->display_name; ?></td> + </tr> + + <?php endif; ?> + + <?php if ( $ud->user_description ) : ?> + + <tr id="wp_desc"> + <td class="label"><?php _e( 'About Me', 'buddypress' ); ?></td> + <td class="data"><?php echo $ud->user_description; ?></td> + </tr> + + <?php endif; ?> + + <?php if ( $ud->user_url ) : ?> + + <tr id="wp_website"> + <td class="label"><?php _e( 'Website', 'buddypress' ); ?></td> + <td class="data"><?php echo make_clickable( $ud->user_url ); ?></td> + </tr> + + <?php endif; ?> + + <?php if ( $ud->jabber ) : ?> + + <tr id="wp_jabber"> + <td class="label"><?php _e( 'Jabber', 'buddypress' ); ?></td> + <td class="data"><?php echo $ud->jabber; ?></td> + </tr> + + <?php endif; ?> + + <?php if ( $ud->aim ) : ?> + + <tr id="wp_aim"> + <td class="label"><?php _e( 'AOL Messenger', 'buddypress' ); ?></td> + <td class="data"><?php echo $ud->aim; ?></td> + </tr> + + <?php endif; ?> + + <?php if ( $ud->yim ) : ?> + + <tr id="wp_yim"> + <td class="label"><?php _e( 'Yahoo Messenger', 'buddypress' ); ?></td> + <td class="data"><?php echo $ud->yim; ?></td> + </tr> + + <?php endif; ?> + + </table> +</div> + +<?php +} + +function bp_is_home() { + _deprecated_function( __FUNCTION__, '1.5', 'bp_is_my_profile' ); + return bp_is_my_profile(); +} + +/** + * Is the user on the front page of the site? + * + * @deprecated 1.5 + * @deprecated Use is_front_page() + * @return bool + */ +function bp_is_front_page() { + _deprecated_function( __FUNCTION__, '1.5', "is_front_page()" ); + return is_front_page(); +} + +/** + * Is the front page of the site set to the Activity component? + * + * @deprecated 1.5 + * @deprecated Use bp_is_component_front_page( 'activity' ) + * @return bool + */ +function bp_is_activity_front_page() { + _deprecated_function( __FUNCTION__, '1.5', "bp_is_component_front_page( 'activity' )" ); + return bp_is_component_front_page( 'activity' ); +} + +function bp_is_member() { + _deprecated_function( __FUNCTION__, '1.5', 'bp_is_user' ); + bp_is_user(); +} + +function bp_loggedinuser_link() { + _deprecated_function( __FUNCTION__, '1.5', 'bp_logged_in_user_link' ); + bp_loggedin_user_link(); +} + +/** + * Only show the search form if there are available objects to search for. + * Deprecated in 1.5; not used anymore. + * + * @return bool + */ +function bp_search_form_enabled() { + _deprecated_function( __FUNCTION__, '1.5', 'No longer required.' ); + return apply_filters( 'bp_search_form_enabled', true ); +} + +/** + * Template tag version of bp_get_page_title() + * + * @deprecated 1.5 + * @deprecated Use wp_title() + * @since 1.0 + */ +function bp_page_title() { + echo bp_get_page_title(); +} + /** + * Prior to BuddyPress 1.5, this was used to generate the page's <title> text. + * Now, just simply use wp_title(). + * + * @deprecated 1.5 + * @deprecated Use wp_title() + * @since 1.0 + */ + function bp_get_page_title() { + _deprecated_function( __FUNCTION__, '1.5', 'wp_title()' ); + $title = wp_title( '|', false, 'right' ) . get_bloginfo( 'name', 'display' ); + + // Backpat for BP 1.2 filter + $title = apply_filters( 'bp_page_title', esc_attr( $title ), esc_attr( $title ) ); + + return apply_filters( 'bp_get_page_title', $title ); + } + +/** + * Generate a link to log out. Last used in BP 1.2-beta. You should be using wp_logout_url(). + * + * @deprecated 1.5 + * @deprecated Use wp_logout_url() + * @since 1.0 + */ +function bp_log_out_link() { + _deprecated_function( __FUNCTION__, '1.5', 'wp_logout_url()' ); + + $logout_link = '<a href="' . wp_logout_url( bp_get_root_domain() ) . '">' . __( 'Log Out', 'buddypress' ) . '</a>'; + echo apply_filters( 'bp_logout_link', $logout_link ); +} + +/** + * Send an email and a BP notification on receipt of an @-mention in a group + * + * @deprecated 1.5 + * @deprecated Deprecated in favor of the more general bp_activity_at_message_notification() + */ +function groups_at_message_notification( $content, $poster_user_id, $group_id, $activity_id ) { + global $bp; + + _deprecated_function( __FUNCTION__, '1.5', 'bp_activity_at_message_notification()' ); + + /* Scan for @username strings in an activity update. Notify each user. */ + $pattern = '/[@]+([A-Za-z0-9-_\.@]+)/'; + preg_match_all( $pattern, $content, $usernames ); + + /* Make sure there's only one instance of each username */ + if ( !$usernames = array_unique( $usernames[1] ) ) + return false; + + $group = new BP_Groups_Group( $group_id ); + + foreach( (array)$usernames as $username ) { + if ( !$receiver_user_id = bp_core_get_userid( $username ) ) + continue; + + /* Check the user is a member of the group before sending the update. */ + if ( !groups_is_user_member( $receiver_user_id, $group_id ) ) + continue; + + // Now email the user with the contents of the message (if they have enabled email notifications) + if ( 'no' != bp_get_user_meta( $receiver_user_id, 'notification_activity_new_mention', true ) ) { + $poster_name = bp_core_get_user_displayname( $poster_user_id ); + + $message_link = bp_activity_get_permalink( $activity_id ); + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $receiver_user_id ) . $settings_slug . '/notifications/'; + + $poster_name = stripslashes( $poster_name ); + $content = bp_groups_filter_kses( stripslashes( $content ) ); + + // Set up and send the message + $ud = bp_core_get_core_userdata( $receiver_user_id ); + $to = $ud->user_email; + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + $subject = '[' . $sitename . '] ' . sprintf( __( '%1$s mentioned you in the group "%2$s"', 'buddypress' ), $poster_name, $group->name ); + +$message = sprintf( __( +'%1$s mentioned you in the group "%2$s": + +"%3$s" + +To view and respond to the message, log in and visit: %4$s + +--------------------- +', 'buddypress' ), $poster_name, $group->name, $content, $message_link ); + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'groups_at_message_notification_to', $to ); + $subject = apply_filters( 'groups_at_message_notification_subject', $subject, $group, $poster_name ); + $message = apply_filters( 'groups_at_message_notification_message', $message, $group, $poster_name, $content, $message_link, $settings_link ); + + wp_mail( $to, $subject, $message ); + } + } + + do_action( 'bp_groups_sent_mention_email', $usernames, $subject, $message, $content, $poster_user_id, $group_id, $activity_id ); +} + +/** + * BP 1.5 simplified notification functions a bit + */ +function bp_core_delete_notifications_for_user_by_type( $user_id, $component_name, $component_action ) { + _deprecated_function( __FUNCTION__, '1.5', 'bp_core_delete_notifications_by_type()' ); + return BP_Core_Notification::delete_for_user_by_type( $user_id, $component_name, $component_action ); +} + +function bp_core_delete_notifications_for_user_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id = false ) { + _deprecated_function( __FUNCTION__, '1.5', 'bp_core_delete_notifications_by_item_id()' ); + return BP_Core_Notification::delete_for_user_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id ); +} + +/** + * In BP 1.5, these functions were renamed for greater consistency + */ +function bp_forum_directory_permalink() { + _deprecated_function( __FUNCTION__, '1.5', 'bp_forums_directory_permalink()' ); + bp_forums_directory_permalink(); +} + function bp_get_forum_directory_permalink() { + _deprecated_function( __FUNCTION__, '1.5', 'bp_get_forums_directory_permalink()' ); + return bp_get_forums_directory_permalink(); + } + +/** + * Last used by core in BP 1.1. The markup was merged into DTheme's header.php template. + */ +function bp_search_form() { + _deprecated_function( __FUNCTION__, '1.1', 'No longer required.' ); + + $form = ' + <form action="' . bp_search_form_action() . '" method="post" id="search-form"> + <input type="text" id="search-terms" name="search-terms" value="" /> + ' . bp_search_form_type_select() . ' + + <input type="submit" name="search-submit" id="search-submit" value="' . __( 'Search', 'buddypress' ) . '" /> + ' . wp_nonce_field( 'bp_search_form' ) . ' + </form> + '; + + echo apply_filters( 'bp_search_form', $form ); +} + +/** + * Some _is_ function had their names normalized + */ +function bp_is_profile_edit() { + _deprecated_function( __FUNCTION__, '1.5', 'bp_is_user_profile_edit()' ); + return bp_is_user_profile_edit(); +} + +function bp_is_change_avatar() { + _deprecated_function( __FUNCTION__, '1.5', 'bp_is_user_change_avatar()' ); + return bp_is_user_change_avatar(); +} + +function bp_is_friend_requests() { + _deprecated_function( __FUNCTION__, '1.5', 'bp_is_user_friend_requests()' ); + return bp_is_user_friend_requests(); +} + +/** Theme *********************************************************************/ + +/** + * Contains functions which were moved out of BP-Default's functions.php + * in BuddyPress 1.5. + * + * @since 1.5 + */ +function bp_dtheme_deprecated() { + if ( !function_exists( 'bp_dtheme_wp_pages_filter' ) ) : + /** + * In BuddyPress 1.2.x, this function filtered the dropdown on the + * Settings > Reading screen for selecting the page to show on front to + * include "Activity Stream." As of 1.5.x, it is no longer required. + * + * @deprecated 1.5 + * @deprecated No longer required. + * @param string $page_html A list of pages as a dropdown (select list) + * @return string + * @see wp_dropdown_pages() + * @since 1.2 + */ + function bp_dtheme_wp_pages_filter( $page_html ) { + _deprecated_function( __FUNCTION__, '1.5', "No longer required." ); + return $page_html; + } + endif; + + if ( !function_exists( 'bp_dtheme_page_on_front_update' ) ) : + /** + * In BuddyPress 1.2.x, this function hijacked the saving of page on front setting to save the activity stream setting. + * As of 1.5.x, it is no longer required. + * + * @deprecated 1.5 + * @deprecated No longer required. + * @param $string $oldvalue Previous value of get_option( 'page_on_front' ) + * @param $string $oldvalue New value of get_option( 'page_on_front' ) + * @return string + * @since 1.2 + */ + function bp_dtheme_page_on_front_update( $oldvalue, $newvalue ) { + _deprecated_function( __FUNCTION__, '1.5', "No longer required." ); + if ( !is_admin() || !is_super_admin() ) + return false; + + return $oldvalue; + } + endif; + + if ( !function_exists( 'bp_dtheme_page_on_front_template' ) ) : + /** + * In BuddyPress 1.2.x, this function loaded the activity stream template if the front page display settings allow. + * As of 1.5.x, it is no longer required. + * + * @deprecated 1.5 + * @deprecated No longer required. + * @param string $template Absolute path to the page template + * @return string + * @since 1.2 + */ + function bp_dtheme_page_on_front_template( $template ) { + _deprecated_function( __FUNCTION__, '1.5', "No longer required." ); + return $template; + } + endif; + + if ( !function_exists( 'bp_dtheme_fix_get_posts_on_activity_front' ) ) : + /** + * In BuddyPress 1.2.x, this forced the page ID as a string to stop the get_posts query from kicking up a fuss. + * As of 1.5.x, it is no longer required. + * + * @deprecated 1.5 + * @deprecated No longer required. + * @since 1.2 + */ + function bp_dtheme_fix_get_posts_on_activity_front() { + _deprecated_function( __FUNCTION__, '1.5', "No longer required." ); + } + endif; + + if ( !function_exists( 'bp_dtheme_fix_the_posts_on_activity_front' ) ) : + /** + * In BuddyPress 1.2.x, this was used as part of the code that set the activity stream to be on the front page. + * As of 1.5.x, it is no longer required. + * + * @deprecated 1.5 + * @deprecated No longer required. + * @param array $posts Posts as retrieved by WP_Query + * @return array + * @since 1.2.5 + */ + function bp_dtheme_fix_the_posts_on_activity_front( $posts ) { + _deprecated_function( __FUNCTION__, '1.5', "No longer required." ); + return $posts; + } + endif; + + if ( !function_exists( 'bp_dtheme_add_blog_comments_js' ) ) : + /** + * In BuddyPress 1.2.x, this added the javascript needed for blog comment replies. + * As of 1.5.x, we recommend that you enqueue the comment-reply javascript in your theme's header.php. + * + * @deprecated 1.5 + * @deprecated Enqueue the comment-reply script in your theme's header.php. + * @since 1.2 + */ + function bp_dtheme_add_blog_comments_js() { + _deprecated_function( __FUNCTION__, '1.5', "Enqueue the comment-reply script in your theme's header.php." ); + if ( is_singular() && bp_is_blog_page() && get_option( 'thread_comments' ) ) + wp_enqueue_script( 'comment-reply' ); + } + endif; +} +add_action( 'after_setup_theme', 'bp_dtheme_deprecated', 15 ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/images/60pc_black.png b/wp-content/plugins/buddypress/bp-core/images/60pc_black.png new file mode 100644 index 0000000..ce7c1c7 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/60pc_black.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/Jcrop.gif b/wp-content/plugins/buddypress/bp-core/images/Jcrop.gif new file mode 100644 index 0000000..72ea7cc Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/Jcrop.gif differ diff --git a/wp-content/plugins/buddypress/bp-core/images/admin-bar-sprite-rtl.png b/wp-content/plugins/buddypress/bp-core/images/admin-bar-sprite-rtl.png new file mode 100644 index 0000000..f49aae7 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/admin-bar-sprite-rtl.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/admin-bar-sprite.png b/wp-content/plugins/buddypress/bp-core/images/admin-bar-sprite.png new file mode 100644 index 0000000..8eb1c08 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/admin-bar-sprite.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/admin-menu-arrow.gif b/wp-content/plugins/buddypress/bp-core/images/admin-menu-arrow.gif new file mode 100644 index 0000000..ba8eab7 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/admin-menu-arrow.gif differ diff --git a/wp-content/plugins/buddypress/bp-core/images/admin_menu_icon.png b/wp-content/plugins/buddypress/bp-core/images/admin_menu_icon.png new file mode 100644 index 0000000..71677f2 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/admin_menu_icon.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/completed.gif b/wp-content/plugins/buddypress/bp-core/images/completed.gif new file mode 100644 index 0000000..aaca988 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/completed.gif differ diff --git a/wp-content/plugins/buddypress/bp-core/images/find.png b/wp-content/plugins/buddypress/bp-core/images/find.png new file mode 100644 index 0000000..7ef0e37 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/find.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/icons32.png b/wp-content/plugins/buddypress/bp-core/images/icons32.png new file mode 100644 index 0000000..d783073 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/icons32.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/installed.gif b/wp-content/plugins/buddypress/bp-core/images/installed.gif new file mode 100644 index 0000000..878b8bd Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/installed.gif differ diff --git a/wp-content/plugins/buddypress/bp-core/images/logo-column-header.png b/wp-content/plugins/buddypress/bp-core/images/logo-column-header.png new file mode 100644 index 0000000..a8f3b0b Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/logo-column-header.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/logo.png b/wp-content/plugins/buddypress/bp-core/images/logo.png new file mode 100644 index 0000000..cdb41a4 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/logo.png differ diff --git a/wp-content/plugins/buddypress/bp-core/images/mystery-man-50.jpg b/wp-content/plugins/buddypress/bp-core/images/mystery-man-50.jpg new file mode 100644 index 0000000..e0e8679 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/mystery-man-50.jpg differ diff --git a/wp-content/plugins/buddypress/bp-core/images/mystery-man.jpg b/wp-content/plugins/buddypress/bp-core/images/mystery-man.jpg new file mode 100644 index 0000000..61917a7 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-core/images/mystery-man.jpg differ diff --git a/wp-content/plugins/buddypress/bp-core/js/update.dev.js b/wp-content/plugins/buddypress/bp-core/js/update.dev.js new file mode 100644 index 0000000..9d87b47 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/js/update.dev.js @@ -0,0 +1,11 @@ +jQuery(document).ready( function($) { + var toggle = $('#site-tracking-enabled'); + + if ( !$(toggle).is(':checked') ) { + $('#site-tracking-page-selector').hide(); + } + + $(toggle).click(function(){ + $('#site-tracking-page-selector').toggle('fast'); + }); +},jQuery ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/update.js b/wp-content/plugins/buddypress/bp-core/js/update.js new file mode 100644 index 0000000..e6a007f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/js/update.js @@ -0,0 +1 @@ +jQuery(document).ready(function(b){var a=b("#site-tracking-enabled");if(!b(a).is(":checked")){b("#site-tracking-page-selector").hide()}b(a).click(function(){b("#site-tracking-page-selector").toggle("fast")})},jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/widget-members.dev.js b/wp-content/plugins/buddypress/bp-core/js/widget-members.dev.js new file mode 100644 index 0000000..fdd8925 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/js/widget-members.dev.js @@ -0,0 +1,49 @@ +jQuery(document).ready( function() { + jQuery(".widget div#members-list-options a").live('click', + function() { + var link = this; + jQuery(link).addClass('loading'); + + jQuery(".widget div#members-list-options a").removeClass("selected"); + jQuery(this).addClass('selected'); + + jQuery.post( ajaxurl, { + action: 'widget_members', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': jQuery("input#_wpnonce-members").val(), + 'max-members': jQuery("input#members_widget_max").val(), + 'filter': jQuery(this).attr('id') + }, + function(response) + { + jQuery(link).removeClass('loading'); + member_wiget_response(response); + }); + + return false; + } + ); +}); + +function member_wiget_response(response) { + response = response.substr(0, response.length-1); + response = response.split('[[SPLIT]]'); + + if ( response[0] != "-1" ) { + jQuery(".widget ul#members-list").fadeOut(200, + function() { + jQuery(".widget ul#members-list").html(response[1]); + jQuery(".widget ul#members-list").fadeIn(200); + } + ); + + } else { + jQuery(".widget ul#members-list").fadeOut(200, + function() { + var message = '<p>' + response[1] + '</p>'; + jQuery(".widget ul#members-list").html(message); + jQuery(".widget ul#members-list").fadeIn(200); + } + ); + } +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/widget-members.js b/wp-content/plugins/buddypress/bp-core/js/widget-members.js new file mode 100644 index 0000000..cf2c8d2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/js/widget-members.js @@ -0,0 +1 @@ +jQuery(document).ready(function(){jQuery(".widget div#members-list-options a").live("click",function(){var a=this;jQuery(a).addClass("loading");jQuery(".widget div#members-list-options a").removeClass("selected");jQuery(this).addClass("selected");jQuery.post(ajaxurl,{action:"widget_members",cookie:encodeURIComponent(document.cookie),_wpnonce:jQuery("input#_wpnonce-members").val(),"max-members":jQuery("input#members_widget_max").val(),filter:jQuery(this).attr("id")},function(b){jQuery(a).removeClass("loading");member_wiget_response(b)});return false})});function member_wiget_response(a){a=a.substr(0,a.length-1);a=a.split("[[SPLIT]]");if(a[0]!="-1"){jQuery(".widget ul#members-list").fadeOut(200,function(){jQuery(".widget ul#members-list").html(a[1]);jQuery(".widget ul#members-list").fadeIn(200)})}else{jQuery(".widget ul#members-list").fadeOut(200,function(){var b="<p>"+a[1]+"</p>";jQuery(".widget ul#members-list").html(b);jQuery(".widget ul#members-list").fadeIn(200)})}}; \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bb-config.php b/wp-content/plugins/buddypress/bp-forums/bb-config.php new file mode 100644 index 0000000..b34b28b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bb-config.php @@ -0,0 +1,11 @@ +<?php +/*** + * *** IMPORTANT **** + * This file will stop people from accessing your bbPress installation directly. + * It is very important from a security standpoint that this file is not moved. + * Your actual bb-config.php file will be installed in the root of your WordPress + * installation once you have set up the forums component in BuddyPress. + */ + +header("HTTP/1.0 403 Forbidden"); die; +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-action.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-action.php new file mode 100644 index 0000000..d51f5eb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-action.php @@ -0,0 +1,5 @@ +<?php +require_once('../bb-load.php'); + +bb_auth(); +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-ajax.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-ajax.php new file mode 100644 index 0000000..efdf669 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-ajax.php @@ -0,0 +1,264 @@ +<?php + +define( 'BB_IS_ADMIN', true ); +define( 'DOING_AJAX', true ); + +require_once('../bb-load.php'); + +if ( !class_exists( 'WP_Ajax_Response' ) ) + require_once( BACKPRESS_PATH . 'class.wp-ajax-response.php' ); + +require_once( BB_PATH . 'bb-admin/includes/functions.bb-admin.php' ); + +if ( !$bb_current_id = bb_get_current_user_info( 'id' ) ) + die('-1'); + +function bb_grab_results() { + global $ajax_results; + $ajax_results = @ unserialize(func_get_arg(0)); + if ( false === $ajax_results ) + $ajax_results = func_get_args(); + return; +} + +$id = (int) @$_POST['id']; + +switch ( $action = $_POST['action'] ) : +case 'add-tag' : // $id is topic_id + if ( !bb_current_user_can('edit_tag_by_on', $bb_current_id, $id) ) + die('-1'); + + bb_check_ajax_referer( "add-tag_$id" ); + + global $tag, $topic; + add_action('bb_tag_added', 'bb_grab_results', 10, 3); + add_action('bb_already_tagged', 'bb_grab_results', 10, 3); + $tag_name = @$_POST['tag']; + $tag_name = stripslashes( $tag_name ); + + $topic = get_topic( $id ); + if ( !$topic ) + die('0'); + + $tag_name = rawurldecode($tag_name); + $x = new WP_Ajax_Response(); + foreach ( bb_add_topic_tags( $id, $tag_name ) as $tag_id ) { + if ( !is_numeric($tag_id) || !$tag = bb_get_tag( (int) $tag_id, bb_get_current_user_info( 'id' ), $topic->topic_id ) ) { + if ( !$tag = bb_get_tag( $tag_id ) ) { + continue; + } + } + $tag->tag_id = $tag_id; + $tag->user_id = bb_get_current_user_info( 'id' ); + $tag_id_val = $tag->tag_id . '_' . $tag->user_id; + $tag->raw_tag = esc_attr( $tag_name ); + $x->add( array( + 'what' => 'tag', + 'id' => $tag_id_val, + 'data' => _bb_list_tag_item( $tag, array( 'list_id' => 'tags-list', 'format' => 'list' ) ) + ) ); + } + $x->send(); + break; + +case 'delete-tag' : + list($tag_id, $user_id) = explode('_', $_POST['id']); + $tag_id = (int) $tag_id; + $user_id = (int) $user_id; + $topic_id = (int) $_POST['topic_id']; + + if ( !bb_current_user_can('edit_tag_by_on', $user_id, $topic_id) ) + die('-1'); + + bb_check_ajax_referer( "remove-tag_$tag_id|$topic_id" ); + + add_action('bb_rpe_tag_removed', 'bb_grab_results', 10, 3); + + $tag = bb_get_tag( $tag_id ); + $user = bb_get_user( $user_id ); + $topic = get_topic ( $topic_id ); + if ( !$tag || !$topic ) + die('0'); + if ( false !== bb_remove_topic_tag( $tag_id, $user_id, $topic_id ) ) + die('1'); + break; + +case 'dim-favorite' : + $user_id = bb_get_current_user_info( 'id' ); + + if ( !$topic = get_topic( $id ) ) + die('0'); + + if ( !bb_current_user_can( 'edit_favorites_of', $user_id ) ) + die('-1'); + + bb_check_ajax_referer( "toggle-favorite_$topic->topic_id" ); + + $is_fav = is_user_favorite( $user_id, $topic->topic_id ); + + if ( 1 == $is_fav ) { + if ( bb_remove_user_favorite( $user_id, $topic->topic_id ) ) + die('1'); + } elseif ( false === $is_fav ) { + if ( bb_add_user_favorite( $user_id, $topic->topic_id ) ) + die('1'); + } + break; + +case 'delete-post' : // $id is post_id + if ( !bb_current_user_can( 'delete_post', $id ) ) + die('-1'); + + bb_check_ajax_referer( "delete-post_$id" ); + + $status = (int) $_POST['status']; + + if ( !$bb_post = bb_get_post( $id ) ) + die('0'); + + if ( $status == $bb_post->post_status ) + die('1'); // We're already there + + if ( bb_delete_post( $id, $status ) ) { + $topic = get_topic( $bb_post->topic_id ); + if ( 0 == $topic->topic_posts ) { + // If we deleted the only post, send back a WP_Ajax_Response object with a URL to redirect to + if ( $ref = wp_get_referer() ) { + $ref_topic = bb_get_topic_from_uri( $ref ); + if ( $ref_topic && $ref_topic->topic_id == $topic->topic_id ) + $ref = add_query_arg( 'view', 'all', $ref ); + if ( false === strpos( $ref, '#' ) ) + $ref .= "#post-{$bb_post->post_id}"; + } else { + $ref = add_query_arg( 'view', 'all', get_post_link( $topic->topic_id ) ); + } + $x = new WP_Ajax_Response( array( + 'what' => 'post', + 'id' => $bb_post->post_id, + 'data' => $ref, + ) ); + $x->send(); + } + die('1'); + } + break; +/* +case 'add-post' : // Can put last_modified stuff back in later + bb_check_ajax_referer( $action ); + $error = false; + $post_id = 0; + $topic_id = (int) $_POST['topic_id']; + $last_mod = (int) $_POST['last_mod']; + if ( !$post_content = trim($_POST['post_content']) ) + $error = new WP_Error( 'no-content', __('You need to actually submit some content!') ); + if ( !bb_current_user_can( 'write_post', $topic_id ) ) + die('-1'); + if ( !$topic = get_topic( $topic_id ) ) + die('0'); + if ( !topic_is_open( $topic_id ) ) + $error = new WP_Error( 'topic-closed', __('This topic is closed.') ); + if ( $throttle_time = bb_get_option( 'throttle_time' ) ) + if ( isset($bb_current_user->data->last_posted) && time() < $bb_current_user->data->last_posted + $throttle_time && !bb_current_user_can('throttle') ) + $error = new WP_Error( 'throttle-limit', sprintf( __('Slow down! You can only post every %d seconds.'), $throttle_time ); + + if ( !$error ) : + if ( !$post_id = bb_new_post( $topic_id, rawurldecode($_POST['post_content']) ) ) + die('0'); + + $bb_post = bb_get_post( $post_id ); + + $new_page = bb_get_page_number( $bb_post->post_position ); + + ob_start(); + echo "<li id='post-$post_id'>"; + bb_post_template(); + echo '</li>'; + $data = ob_get_contents(); + ob_end_clean(); + endif; + $x = new WP_Ajax_Response( array( + 'what' => 'post', + 'id' => $post_id, + 'data' => is_wp_error($error) ? $error : $data + ) ); + $x->send(); + break; +*/ +case 'add-forum' : + if ( !bb_current_user_can( 'manage_forums' ) ) + die('-1'); + + bb_check_ajax_referer( $action ); + + if ( !$forum_id = bb_new_forum( $_POST ) ) + die('0'); + + global $forums_count; + $forums_count = 2; // Hack + + $data = bb_forum_row( $forum_id, false, true ); + + $forum = bb_get_forum( $forum_id ); + if ( $forum->forum_parent ) { + $siblings = bb_get_forums( $forum->forum_parent ); + $last_sibling = array_pop( $siblings ); + if ( $last_sibling->forum_id == $forum_id ) + $last_sibling = array_pop( $siblings ); + if ( $last_sibling ) { + $position = "forum-$last_sibling->forum_id"; + } else { + $position = "+forum-$forum->forum_parent"; + $data = "<ul id='forum-root-$forum->forum_parent' class='list-block holder'>$data</ul>"; + } + } else { + $position = 1; + } + + $x = new WP_Ajax_Response( array( + 'what' => 'forum', + 'id' => $forum_id, + 'data' => $data, + 'position' => $position, + 'supplemental' => array( 'name' => $forum->forum_name ) + ) ); + $x->send(); + break; + +case 'order-forums' : + if ( !bb_current_user_can( 'manage_forums' ) ) + die('-1'); + + bb_check_ajax_referer( $action ); + + if ( !is_array($_POST['order']) ) + die('0'); + + global $bbdb; + + $forums = array(); + + bb_get_forums(); // cache + + foreach ( $_POST['order'] as $pos => $forum_id ) : + $forum = $bbdb->escape_deep( get_object_vars( bb_get_forum( $forum_id ) ) ); + $forum['forum_order'] = $pos; + $forums[(int) $forum_id] = $forum; + endforeach; + + foreach ( $_POST['root'] as $root => $ids ) + foreach ( $ids as $forum_id ) + $forums[(int) $forum_id]['forum_parent'] = (int) $root; + + foreach ( $forums as $forum ) + bb_update_forum( $forum ); + + die('1'); + break; + +default : + do_action( 'bb_ajax_' . $_POST['action'] ); + break; +endswitch; + +die('0'); +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-base.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-base.php new file mode 100644 index 0000000..3b8e7d6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-base.php @@ -0,0 +1,23 @@ +<?php +require_once('admin.php'); + +do_action( $bb_admin_page . '_pre_head' ); + +bb_get_admin_header(); +?> + +<div class="wrap"> + +<?php if ( is_callable($bb_admin_page) ) : call_user_func( $bb_admin_page ); else : ?> + +<h2><?php _e( 'Page not found' ); ?></h2> +<?php +bb_admin_notice( __( 'There is no administration page at the requested address. Please check the address you entered and try again.' ), 'error' ); +do_action( 'bb_admin_notices' ); +?> + +<?php endif; ?> + +</div> + +<?php bb_get_admin_footer(); ?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-footer.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-footer.php new file mode 100644 index 0000000..41dea7c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-footer.php @@ -0,0 +1,33 @@ + </div> + <div class="clear"></div> + <!-- If you like showing off the fact that your server rocks --> + <!-- <p id="bbShowOff"> +<?php +global $bbdb; +printf( +__( 'This page generated in %s seconds, using %d queries.' ), +bb_number_format_i18n( bb_timer_stop(), 2 ), +bb_number_format_i18n( $bbdb->num_queries ) +); +?> + </p> --> + <div class="clear"></div> + </div> + </div> + <div id="bbFoot"> + <p id="bbThanks"> +<?php +printf( + __( 'Thank you for using <a href="%s">bbPress</a>. | <a href="%s">Documentation</a> | <a href="%s">Feedback</a>' ), + 'http://bbpress.org/', + 'http://bbpress.org/documentation/', + 'http://bbpress.org/forums/forum/requests-and-feedback' +); +?> + </p> + <p id="bbVersion"><?php printf( __( 'Version %s' ), bb_get_option( 'version' ) ); ?></p> + </div> + + <?php do_action( 'bb_admin_footer' ); ?> +</body> +</html> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-header.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-header.php new file mode 100644 index 0000000..8fb5e5b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin-header.php @@ -0,0 +1,57 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"<?php bb_language_attributes( '1.1' ); ?>> +<head> + <meta http-equiv="X-UA-Compatible" content="IE=8" /> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <title><?php bb_admin_title() ?> + + + + + + + + + + + + + + +
    +
    +
    +

    +
    +

    + bb_get_current_user_info( 'name' ) ) ) );?> + | bb_get_uri( null, null, BB_URI_CONTEXT_HEADER ) ) ); ?> +

    +
    +
    + +
    + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin.php new file mode 100644 index 0000000..469d304 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/admin.php @@ -0,0 +1,45 @@ + bb_get_option_from_db( 'bb_db_version' ) ) { + bb_safe_redirect( 'upgrade.php' ); + die(); +} + +require_once( BB_PATH . 'bb-admin/includes/functions.bb-admin.php' ); + +$bb_admin_page = bb_find_filename( $_SERVER['PHP_SELF'] ); + +$_check_callback = false; +if ( $bb_admin_page == 'admin-base.php' ) { + $bb_admin_page = (string) @$_GET['plugin']; + $_check_callback = true; +} + +wp_enqueue_script( 'common' ); + +bb_user_settings(); +if ( isset( $_GET['foldmenu'] ) ) { + if ( $_GET['foldmenu'] ) { + bb_update_user_setting( 'fm', 'f' ); + } else { + bb_delete_user_setting( 'fm' ); + } + bb_safe_redirect( remove_query_arg( 'foldmenu', stripslashes( $_SERVER['REQUEST_URI'] ) ) ); + die; +} +bb_admin_menu_generator(); +bb_get_current_admin_menu(); + +if ( $_check_callback ) { + if ( empty( $bb_registered_plugin_callbacks ) || empty( $bb_admin_page ) || !in_array( $bb_admin_page, $bb_registered_plugin_callbacks ) ) { + unset( $bb_admin_page ); + } +} +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/bb-forum.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/bb-forum.php new file mode 100644 index 0000000..3e168fa --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/bb-forum.php @@ -0,0 +1,61 @@ + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/delete-post.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/delete-post.php new file mode 100644 index 0000000..5c8e0b8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/delete-post.php @@ -0,0 +1,81 @@ +post_status; + +if ( !$bb_post ) + bb_die(__('There is a problem with that post, pardner.')); + +if ( 0 == $status && 0 != $bb_post->post_status ) // We're undeleting + add_filter('bb_delete_post', 'bb_topics_replied_on_undelete_post'); + +bb_delete_post( $post_id, $status ); + +$message = ''; +switch ( $old_status ) { + case 0: + switch ( $status ) { + case 0: + break; + case 1: + $message = 'deleted'; + break; + default: + $message = 'spammed'; + break; + } + break; + case 1: + switch ( $status ) { + case 0: + $message = 'undeleted'; + break; + case 1: + break; + default: + $message = 'spammed'; + break; + } + break; + default: + switch ( $status ) { + case 0: + $message = 'unspammed-normal'; + break; + case 1: + $message = 'unspammed-deleted'; + break; + default: + break; + } + break; +} + +$topic = get_topic( $bb_post->topic_id ); + +if ( $sendto = wp_get_referer() ) { + $sendto = remove_query_arg( 'message', $sendto ); + $sendto = add_query_arg( 'message', $message, $sendto ); + $send_to_topic = bb_get_topic_from_uri( $sendto ); + if ( $send_to_topic && $topic->topic_id == $send_to_topic->topic_id ) + $sendto = add_query_arg( 'view', 'all', $sendto ); +} else if ( $topic->topic_posts == 0 ) { + $sendto = get_forum_link( $topic->forum_id ); +} else { + $the_page = bb_get_page_number( $bb_post->post_position ); + $sendto = get_topic_link( $bb_post->topic_id, $the_page ); +} + +bb_safe_redirect( $sendto ); +exit; diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/delete-topic.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/delete-topic.php new file mode 100644 index 0000000..a613383 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/delete-topic.php @@ -0,0 +1,53 @@ +topic_status; + +if ( !$topic ) + bb_die(__('There is a problem with that topic, pardner.')); + +$status = $topic->topic_status ? 0 : 1; +bb_delete_topic( $topic->topic_id, $status ); + +$message = ''; +switch ( $old_status ) { + case 0: + switch ( $status ) { + case 0: + break; + case 1: + $message = 'deleted'; + break; + } + break; + case 1: + switch ( $status ) { + case 0: + $message = 'undeleted'; + break; + case 1: + break; + } + break; +} + +if ( $sendto = wp_get_referer() ) { + $sendto = remove_query_arg( 'message', $sendto ); + $sendto = add_query_arg( 'message', $message, $sendto ); +} elseif ( 0 == $topic->topic_status ) + $sendto = get_forum_link( $topic->forum_id ); +else + $sendto = get_topic_link( $topic_id ); + +wp_redirect( $sendto ); +exit; diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/export.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/export.php new file mode 100644 index 0000000..49a3f03 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/export.php @@ -0,0 +1,305 @@ + $v ) { + if ( 'id' == $att ) { + $id = $v; + $v = $type . '_' . $v; + } + $atts .= " $att='$v'"; + } + unset($att, $v); + + $r .= str_repeat("\t", $tabs) . "<$type{$atts}>\n"; + + foreach ( (array) $properties as $k => $v ) { + if ( 'meta' == $k ) { + $data = ''; + foreach ( $v as $mk => $mv ) + $data .= str_repeat("\t", $tabs + 1) . "\n"; + } else { + if ( '!' == $k{0} ) { + $k = substr($k, 1); + $v = ""; + } + $data = str_repeat("\t", $tabs + 1) . "<$k>$v\n"; + } + $r .= $data; + } + + $r .= apply_filters( 'in_bb_export_object_' . $type, '', $id ); + + $r .= str_repeat("\t", $tabs) . "\n\n"; + + return $r; +} + +// See bb_export_user for syntax +function _bb_translate_for_export( $translate, &$data ) { + $r = array(); + foreach ( $translate as $prop => $export ) { + if ( '?' == $export{0} ) { + $export = substr($export, 1); + if ( !$data[$prop] ) { + unset($data[$prop]); + continue; + } + } + if ( false === $export ) { + unset($data[$prop]); + continue; + } + $r[$export] = $data[$prop]; + unset($data[$prop]); + } + unset($export, $prop); + return $r; +} + +function bb_export_user( $user_id ) { + global $bbdb; + if ( !$_user = bb_get_user( $user_id ) ) + return; + + $_user = get_object_vars($_user); + + $atts = array( + 'type' => 'user', + 'id' => $_user['ID'] + ); + + // ?url means url is optional. Only include it in the export if it exists + // !title means the title should be wrapped in CDATA + // ?! is the correct order, not !? + $translate = array( + 'user_login' => 'login', + 'user_pass' => 'pass', + 'user_email' => 'email', + 'user_url' => '?url', + 'user_registered' => 'incept', + 'display_name' => '?!title', + 'user_nicename' => '?nicename', + 'user_status' => '?status', + 'ID' => false + ); + + $user = _bb_translate_for_export( $translate, $_user ); + + $meta = array(); + foreach ( $_user as $k => $v ) { + if ( 0 !== strpos($k, $bbdb->prefix) && isset($_user[$bbdb->prefix . $k]) ) + continue; + $meta[$k] = maybe_serialize($v); + } + unset($_user, $k, $v); + + $user['meta'] = $meta; + + return _bb_export_object( $atts, $user ); +} + +function bb_export_forum( $forum_id ) { + if ( !$_forum = bb_get_forum( $forum_id ) ) + return; + + $_forum = get_object_vars( $_forum ); + + $translate = array( + 'forum_name' => '!title', + 'forum_desc' => '?!content', + 'forum_parent' => '?parent' + ); + + $forum = _bb_translate_for_export( $translate, $_forum ); + + return _bb_export_object( array('type' => 'forum', 'id' => $_forum['forum_id']), $forum ); +} + +function bb_export_topic( $topic_id ) { + if ( !$_topic = get_topic( $topic_id ) ) + return; + + $_topic = get_object_vars( $_topic ); + + $atts = array( + 'type' => 'topic', + 'id' => $_topic['topic_id'], + 'author' => 'user_' . $_topic['topic_poster'], + 'in' => 'forum_' . $_topic['forum_id'] + ); + + $translate = array( + 'topic_title' => '!title', + 'topic_start_time' => 'incept', + 'topic_status' => '?status', + 'topic_id' => false, + 'topic_poster' => false, + 'topic_poster_name' => false, + 'topic_last_poster' => false, + 'topic_last_poster_name' => false, + 'topic_time' => false, + 'forum_id' => false, + 'topic_last_post_id' => false, + 'topic_posts' => false, + 'tag_count' => false + ); + + $topic = _bb_translate_for_export( $translate, $_topic ); + + $meta = array(); + foreach ( $_topic as $k => $v ) + $meta[$k] = maybe_serialize($v); + unset($_topic, $k, $v); + + $topic['meta'] = $meta; + + return _bb_export_object( $atts, $topic ); +} + +function bb_export_post( $post_id ) { + if ( !$_post = bb_get_post( $post_id ) ) + return; + + $_post = get_object_vars($_post); + + $atts = array( + 'type' => 'post', + 'id' => $_post['post_id'], + 'author' => 'user_' . $_post['poster_id'] + ); + + $translate = array( + 'post_time' => 'incept', + 'post_text' => '!content', + 'post_status' => '?status', + 'post_id' => false, + 'poster_id' => false, + 'forum_id' => false, + 'topic_id' => false, + 'post_position' => false + ); + + $post = _bb_translate_for_export( $translate, $_post ); + + $post['meta'] = $_post; + + return _bb_export_object( $atts, $post, 2 ); +} + +// One of these things is not like the others... +function bb_export_tag( $tag ) { + // id here is not numeric. does not currently preserve tagged_on + return "\t\traw_tag]]>\n"; +} + +function bb_export_topic_tags( $r, $topic_id ) { + global $topic_tag_cache; + if ( !get_topic( $topic_id ) ) + return; + + if ( !$tags = bb_get_topic_tags( $topic_id ) ) + return $r; + + $r .= "\n"; + + foreach ( (array) $tags as $tag ) + $r .= bb_export_tag( $tag ); + $topic_tag_cache = array(); + + return $r; +} + +function bb_export_topic_posts( $r, $topic_id ) { + if ( !get_topic( $topic_id ) ) + return; + + $r .= "\n"; + + $page = 1; + while ( $posts = get_thread( $topic_id, array( 'post_status' => 'all', 'page' => $page++ ) ) ) { + foreach ( $posts as $post ) + $r .= bb_export_post( $post->post_id ); + } + + return $r; +} + +function bb_export() { + global $bb; + + define( 'BB_EXPORTING', true ); + do_action( 'bb_pre_export' ); + + $bb->use_cache = false; // Turn off hard cache + $bb->page_topics = 100; + + echo "\n"; + + if (BB_EXPORT_LEVEL & BB_EXPORT_USERS) { + $page = 1; + while ( ( $users = bb_user_search( array('page' => $page++) ) ) && !is_wp_error( $users ) ) { + foreach ( $users as $user ) + echo bb_export_user( $user->ID ); + } + unset($users, $user, $page); + } + + if (BB_EXPORT_LEVEL & BB_EXPORT_FORUMS) { + $forums = bb_get_forums(); + foreach ( $forums as $forum ) + echo bb_export_forum( $forum->forum_id ); + unset($forums, $forum); + } + + if (BB_EXPORT_LEVEL & BB_EXPORT_TOPICS) { + $page = 1; + while ( $topics = get_latest_topics( 0, $page++ ) ) { + foreach ( $topics as $topic ) + echo bb_export_topic( $topic->topic_id ); + } + unset($topics, $topic, $page); + } + + do_action( 'bb_export' ); + + echo ''; +} + +add_filter( 'in_bb_export_object_topic', 'bb_export_topic_tags', 10, 2 ); +add_filter( 'in_bb_export_object_topic', 'bb_export_topic_posts', 10, 2 ); +add_filter( 'get_forum_where', 'bb_no_where', 9999 ); +add_filter( 'get_forums_where', 'bb_no_where', 9999 ); +add_filter( 'get_latest_topics_where', 'bb_no_where', 9999 ); +add_filter( 'get_user_where', 'bb_no_where', 9999 ); +add_filter( 'cache_users_where', 'bb_no_where', 9999 ); + +bb_export(); + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/forums.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/forums.php new file mode 100644 index 0000000..c2fdecb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/forums.php @@ -0,0 +1,106 @@ + false, 'id' => false) ) ); + exit; + } +} + +if ( isset($_GET['message']) ) { + switch ( $_GET['message'] ) : + case 'updated' : + bb_admin_notice( __( 'Forum Updated.' ) ); + break; + case 'deleted' : + bb_admin_notice( sprintf( + __( 'Forum deleted. You should recount your site information.' ), + bb_get_uri('bb-admin/tools-recount.php', null, BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN) + ) ); + break; + endswitch; +} + +if ( !isset($_GET['action']) ) + wp_enqueue_script( 'admin-forums' ); +elseif ( 'delete' == @$_GET['action'] ) + bb_admin_notice( sprintf( __( 'Are you sure you want to delete the "%s" forum?' ), $deleted_forum->forum_name ) ); + +$bb_admin_body_class = ' bb-admin-forums'; + +bb_get_admin_header(); +?> + +
    + +

    + + + + + + +
    +
    + +

    +
      +
    • topics), $deleted_forum->topics); ?>
    • +
    • posts), $deleted_forum->posts); ?>
    • +
    +
    +
    +
    + + +
    +
    +
    + +
    + 'move_topics_forum', 'callback' => 'strcmp', 'callback_args' => array($deleted_forum->forum_id), 'selected' => $deleted_forum->forum_parent) ); ?> +
    +
    +
    +
    + + + + + +
    +
    + + + + + +
      +
    • + + + +
    + + +
    + + + + + +
    + +
    + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/admin-header-logo.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/admin-header-logo.gif new file mode 100644 index 0000000..8696dba Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/admin-header-logo.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/bbpress-logo.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/bbpress-logo.png new file mode 100644 index 0000000..2487b2d Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/bbpress-logo.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/blank.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/blank.gif new file mode 100644 index 0000000..e565824 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/blank.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/button-grad.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/button-grad.png new file mode 100644 index 0000000..0f10176 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/button-grad.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/drag.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/drag.gif new file mode 100644 index 0000000..381a620 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/drag.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/favicon.ico b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/favicon.ico new file mode 100644 index 0000000..6002cfa Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/favicon.ico differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/gray-grad.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/gray-grad.png new file mode 100644 index 0000000..99c45ce Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/gray-grad.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/icons32.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/icons32.png new file mode 100644 index 0000000..3dd6ea4 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/icons32.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/input-lock.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/input-lock.png new file mode 100644 index 0000000..61da0fd Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/input-lock.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-arrows.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-arrows.gif new file mode 100644 index 0000000..ec854c1 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-arrows.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-bits-rtl.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-bits-rtl.gif new file mode 100644 index 0000000..3765bfb Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-bits-rtl.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-bits.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-bits.gif new file mode 100644 index 0000000..9a10a9a Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-bits.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-dark-rtl.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-dark-rtl.gif new file mode 100644 index 0000000..7bfd25d Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-dark-rtl.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-dark.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-dark.gif new file mode 100644 index 0000000..739b888 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu-dark.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu.png new file mode 100644 index 0000000..a213aa7 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/menu.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/visit-site-button-grad.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/visit-site-button-grad.gif new file mode 100644 index 0000000..a7b703e Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/visit-site-button-grad.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/white-grad-active.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/white-grad-active.png new file mode 100644 index 0000000..0478015 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/white-grad-active.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/white-grad.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/white-grad.png new file mode 100644 index 0000000..aaf57aa Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/images/white-grad.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/class.bb-install.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/class.bb-install.php new file mode 100644 index 0000000..2393a2a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/class.bb-install.php @@ -0,0 +1,2766 @@ + 'en_US' ); + + /** + * The currently selected language for the installer + * + * @var string + */ + var $language = 'en_US'; + + /** + * The current step in the install process + * + * @var integer + */ + var $step; + + /** + * Info about config files and their locations + * + * @var array + */ + var $configs = array( + 'writable' => false, + 'bb-config.php' => false, + 'config.php' => false + ); + + /** + * An array of the current status of each step + * + * @var array + */ + var $step_status = array( + 0 => 'incomplete', + 1 => 'incomplete', + 2 => 'incomplete', + 3 => 'incomplete', + 4 => 'incomplete' + ); + + /** + * An array of most strings in use, including errors + * + * @var array + */ + var $strings = array(); + + /** + * The data being manipulated as we go through the forms + * + * @var array + */ + var $data = array(); + + /** + * A boolean that can get flagged to stop posting of a form getting processed + * + * @var boolean + */ + var $stop_process = false; + + /** + * Keeps track of where the tabindex is up to + * + * @var integer + */ + var $tabindex = 0; + + /** + * Constructor + * + * Loads everything we might need to do the business + * + * @param string $caller The full path of the file that instantiated the class + * @return boolean Always returns true + */ + function BB_Install( $caller ) + { + $this->caller = $caller; + + $this->set_initial_step(); + $this->define_paths(); + + // We need to load these when bb-settings.php isn't loaded + if ( $this->load_includes ) { + require_once( BACKPRESS_PATH . 'functions.core.php' ); + require_once( BACKPRESS_PATH . 'functions.compat.php' ); + require_once( BACKPRESS_PATH . 'functions.formatting.php' ); + require_once( BACKPRESS_PATH . 'functions.plugin-api.php' ); + require_once( BACKPRESS_PATH . 'class.wp-error.php' ); + require_once( BB_PATH . BB_INC . 'functions.bb-core.php' ); + require_once( BB_PATH . BB_INC . 'functions.bb-meta.php' ); + require_once( BB_PATH . BB_INC . 'class.bp-options.php' ); + require_once( BACKPRESS_PATH . 'functions.bp-options.php' ); + require_once( BACKPRESS_PATH . 'functions.kses.php' ); + require_once( BB_PATH . BB_INC . 'functions.bb-l10n.php' ); + require_once( BB_PATH . BB_INC . 'functions.bb-template.php' ); + } + + $this->get_languages(); + $this->set_language(); + + if ( $this->language ) { + global $locale; + global $l10n; + $locale = $this->language; + unset( $l10n['default'] ); + + if ( !class_exists( 'MO' ) ) { + require_once( BACKPRESS_PATH . 'pomo/mo.php' ); + } + } + + // Load the default text localization domain. Doing this twice doesn't hurt too much. + bb_load_default_textdomain(); + + // Pull in locale data after loading text domain. + if ( $this->load_includes ) { + require_once( BB_PATH . BB_INC . 'class.bb-locale.php' ); + } + global $bb_locale; + $bb_locale = new BB_Locale(); + + $this->prepare_strings(); + $this->check_prerequisites(); + $this->check_configs(); + + if ( $this->step > -1 ) { + $this->set_step(); + $this->prepare_data(); + $this->process_form(); + } + + return true; + } + + /** + * Set initial step + * + * Sets the step from the post data and keeps it within range + * + * @return integer The calculated step + */ + function set_initial_step() + { + // Set the step based on the $_POST value or 0 + $this->step = $_POST['step'] ? (integer) $_POST['step'] : 0; + + // Make sure the requested step is from 0-4 + if ( 0 > $this->step || 4 < $this->step ) { + $this->step = 0; + } + return $this->step; + } + + /** + * Prepare text strings + * + * Sets up many of the strings to be used by the class that may + * be later subject to change due to processing of the forms + */ + function prepare_strings() + { + $this->strings = array( + -1 => array( + 'title' => __( 'bbPress › Error' ), + 'h1' => __( 'Oh dear!' ), + 'messages' => array() + ), + 0 => array( + 'title' => sprintf( __( '%1$s › %2$s' ), __( 'bbPress installer' ), __( 'Welcome' ) ), + 'h2' => __( 'Welcome to the bbPress installer' ), + 'status' => '', + 'messages' => array(), + 'intro' => array( + __( 'We\'re now going to go through a few steps to get you up and running.' ), + __( 'Ready? Then let\'s get started!' ) + ) + ), + 1 => array( + 'title' => sprintf( __( '%1$s › %2$s' ), __( 'bbPress installer' ), __( 'Step 1' ) ), + 'h2' => sprintf( __( '%1$s - %2$s' ), __( 'Step 1' ), __( 'Database configuration' ) ), + 'status' => '', + 'intro' => array( + __( 'In this step you need to enter your database connection details. The installer will attempt to create a file called bb-config.php in the root directory of your bbPress installation.' ), + __( 'If you\'re not sure what to put here, contact your web hosting provider.' ) + ), + 'messages' => array() + ), + 2 => array( + 'title' => sprintf( __( '%1$s › %2$s' ), __( 'bbPress installer' ), __( 'Step 2' ) ), + 'h2' => sprintf( __( '%1$s - %2$s' ), __( 'Step 2' ), __( 'WordPress integration (optional)' ) ), + 'status' => __( '« skipped' ), + 'intro' => array( + __( 'bbPress can integrate login and user data seamlessly with WordPress. You can safely skip this step if you do not wish to integrate with an existing WordPress install.' ) + ), + 'messages' => array(), + 'form_errors' => array() + ), + 3 => array( + 'title' => sprintf( __( '%1$s › %2$s' ), __( 'bbPress installer' ), __( 'Step 3' ) ), + 'h2' => sprintf( __( '%1$s - %2$s' ), __( 'Step 3' ), __( 'Site settings' ) ), + 'status' => '', + 'intro' => array( + __( 'Finalize your installation by adding a name, your first user and your first forum.' ) + ), + 'messages' => array(), + 'form_errors' => array(), + 'scripts' => array() + ), + 4 => array( + 'title' => sprintf( __( '%1$s › %2$s' ), __( 'bbPress installer' ), __( 'Finished' ) ), + 'h2' => __( 'Installation complete!' ), + 'messages' => array() + ) + ); + } + + /** + * Check installation pre-requisites + * + * Checks for appropriate PHP extensions. + * + * @return boolean False if any pre-requisites are not met, otherwise true + */ + function check_prerequisites() + { + // BPDB wants the MySQL extension - this is also checked when BPDB is initialised so may be a bit redundant here + if ( !extension_loaded( 'mysql' ) ) { + $this->strings[-1]['messages']['error'][] = __( 'Your PHP installation appears to be missing the MySQL extension which is required for bbPress' ); + $this->step = -1; + } + + if ( defined( 'BB_IS_WP_LOADED' ) && BB_IS_WP_LOADED ) { + $this->strings[-1]['messages']['error'][] = __( 'Please complete your installation before attempting to include WordPress within bbPress' ); + $this->step = -1; + } + + if ( $this->step === -1 ) { + return false; + } + + return true; + } + + /** + * Define path constants + * + * Sets some bbPress constants if they are not otherwise available based + * on the classes initiating file path. + * + * @return boolean False if no path was supplied, otherwise always true + */ + function define_paths() + { + if ( !$this->caller ) { + return false; + } + + if ( !defined( 'BACKPRESS_PATH' ) ) { + // Define BACKPRESS_PATH + // Tell us to load includes because bb-settings.php was not loaded + // bb-settings.php is generally not loaded on steps -1, 0 and 1 but + // there are exceptions, so this is safer than just reading the step + $this->load_includes = true; + define( 'BACKPRESS_PATH', BB_PATH . BB_INC . 'backpress/' ); + } + + // Define the language file directory + if ( !defined( 'BB_LANG_DIR' ) ) { + define( 'BB_LANG_DIR', BB_PATH . 'my-languages/' ); + } + + return true; + } + + /** + * Gets an array of available languages form the language directory + * + * @return array + */ + function get_languages() + { + foreach ( bb_glob( BB_LANG_DIR . '*.mo' ) as $language ) { + if ( substr( $language, 0, 18 ) === 'continents-cities-' ) { + continue; + } + $language = str_replace( '.mo', '', basename( $language ) ); + $this->languages[$language] = $language; + } + + return $this->languages; + } + + /** + * Returns a language selector for switching installation languages + * + * @return string|false Either the html for the selector or false if there are no languages + */ + function get_language_selector() + { + // Don't provide a selection if there is only english + if ( 2 > count( $this->languages ) ) { + return false; + } + + $r = '' . "\n"; + //$r .= '
    ' . "\n"; + $r .= "\t" . '
    ' . "\n"; + $r .= "\t\t" . '' . "\n"; + $r .= "\t" . '
    ' . "\n"; + //$r .= '
    ' . "\n"; + + echo $r; + } + + /** + * Sets the current installation language + * + * @return string The currently set language + */ + function set_language() + { + if ( isset( $_COOKIE['bb_install_language'] ) && 1 < count( $this->languages ) ) { + if ( in_array( $_COOKIE['bb_install_language'], $this->languages ) ) { + $this->language = $_COOKIE['bb_install_language']; + } + } + + $language_requested = false; + if ( isset( $_POST['language'] ) && $_POST['language'] ) { + $language_requested = (string) $_POST['language']; + } elseif ( isset( $_GET['language'] ) && $_GET['language'] ) { + $language_requested = (string) $_GET['language']; + } + + if ( $language_requested && 1 < count( $this->languages ) ) { + if ( in_array( $language_requested, $this->languages ) ) { + $this->language = $language_requested; + setcookie( 'bb_install_language', $this->language ); + } + } + + if ( !$this->language || 'en_US' === $this->language ) { + $this->language = 'en_US'; + setcookie( 'bb_install_language', ' ', time() - 31536000 ); + } + + return $this->language; + } + + /** + * Tests whether database tables exist + * + * Checks for the existence of the forum table in the database that is + * currently configured. + * + * @return boolean False if the table isn't found, otherwise true + */ + function database_tables_are_installed() + { + global $bbdb; + $bbdb->suppress_errors(); + $installed = (boolean) $bbdb->get_results( 'DESCRIBE `' . $bbdb->forums . '`;', ARRAY_A ); + $bbdb->suppress_errors( false ); + return $installed; + } + + /** + * Tests whether an option is set in the database + * + * @return boolean False if the option isn't set, otherwise true + */ + function bb_options_are_set() + { + if ( $this->load_includes ) { + return false; + } + if ( !bb_get_option( 'uri' ) ) { + return false; + } + return true; + } + + /** + * Tests whether bbPress is installed + * + * @return boolean False if bbPress isn't installed, otherwise true + */ + function is_installed() + { + if ( !$this->database_tables_are_installed() ) { + return false; + } + if ( !$this->bb_options_are_set() ) { + return false; + } + return true; + } + + /** + * Checks for configs and sets variables describing current install state + * + * @return integer The current step we should be on based on the existence of the config file + */ + function check_configs() + { + // Check for a config file + if ( file_exists( BB_PATH . 'bb-config.php' ) ) { + $this->configs['bb-config.php'] = BB_PATH . 'bb-config.php'; + } elseif ( file_exists( dirname( BB_PATH ) . '/bb-config.php' ) ) { + $this->configs['bb-config.php'] = dirname( BB_PATH ) . '/bb-config.php'; + } + + // Check for an old config file + if ( file_exists( BB_PATH . 'config.php' ) ) { + $this->configs['config.php'] = BB_PATH . 'config.php'; + } elseif ( file_exists( dirname( BB_PATH ) . '/config.php' ) ) { + $this->configs['config.php'] = dirname( BB_PATH ) . '/config.php'; + } + + if ( $this->configs['config.php'] && !$this->configs['bb-config.php'] ) { + // There is an old school config file + // Step -1 is where we send fatal errors from any screen + $this->strings[-1]['messages']['error'][] = __( 'An old config.php file has been detected in your installation. You should remove it and run the installer again. You can use the same database connection details if you do.' ); + $this->step = -1; + return $this->step; + } + + // Check if bbPress is already installed + // Is there a current config file + if ( $this->configs['bb-config.php'] ) { + + // Is it valid + if ( $this->validate_current_config() ) { + // Step 1 is complete + $this->step_status[1] = 'complete'; + $this->strings[1]['status'] = __( '« completed' ); + + // On step 1 we want to report that the file is good and allow the user to continue + if ( $this->step === 1 ) { + // Stop form processing if it is posted + $this->stop_process = true; + + // Display a nice message saying the config file exists + $this->strings[1]['messages']['message'][] = __( 'A valid configuration file was found at bb-config.php
    You may continue to the next step.' ); + return $this->step; + } + } else { + // Invalid config files on any step cause us to exit to step 0 + $this->strings[-1]['messages']['error'][] = __( 'An invalid configuration file was found at bb-config.php
    The installation cannot continue.' ); + $this->strings[-1]['messages'][0][] = __( 'Usually this is caused by one of the database connection settings being incorrect. Make sure that the specified user has appropriate permission to access the database.' ); + $this->step = -1; + } + + // If we have made it this far, then we can check if the database tables exist and have content + if ( $this->is_installed() ) { + // The database is installed + // The following standard functions should be available + if ( bb_get_option( 'bb_db_version' ) > bb_get_option_from_db( 'bb_db_version' ) ) { + // The database needs upgrading + $this->strings[-1]['messages'][0][] = __( 'bbPress is already installed, but appears to require an upgrade.' ); + } else { + $this->strings[-1]['messages'][0][] = __( 'bbPress is already installed.' ); + } + $this->strings[-1]['messages'][0][] = sprintf( + __( 'Perhaps you meant to run the upgrade script instead?' ), + bb_get_uri( 'bb-admin/upgrade.php', null, BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN ) + ); + $this->step = -1; + } + + } else { + + if ( 2 > $this->step && !file_exists( BB_PATH . 'bb-config-sample.php' ) ) { + // There is no sample config file + $this->strings[0]['messages']['error'][] = __( 'I could not find the file bb-config-sample.php
    Please upload it to the root directory of your bbPress installation.' ); + $this->step = 0; + } + + if ( 1 !== $this->step ) { + // There is no config file, go back to the beginning + $this->strings[0]['messages']['message'][] = __( 'There doesn\'t seem to be a bb-config.php file. This usually means that you want to install bbPress.' ); + $this->step = 0; + } + + } + + // Check if the config file path is writable + if ( file_exists( $this->configs['bb-config.php'] ) ) { + if ( is_writable( $this->configs['bb-config.php'] ) ) { + $this->configs['writable'] = true; + } + } elseif ( is_writable( BB_PATH ) ) { + $this->configs['writable'] = true; + } + + return $this->step; + } + + /** + * Determines if the current config is valid + * + * @return boolean False if the config is bad, otherwise true + */ + function validate_current_config() + { + // If we are validating then the config file has already been included + // So we can just check for valid constants + + // The required constants for a valid config file + $required_constants = array( + 'BBDB_NAME', + 'BBDB_USER', + 'BBDB_PASSWORD', + 'BBDB_HOST' + ); + + // Check the required constants are defined + foreach ( $required_constants as $required_constant ) { + if ( !defined( $required_constant ) ) { + return false; + } + } + + global $bb_table_prefix; + + if ( !isset( $bb_table_prefix ) ) { + return false; + } + + // Everthing is OK so far, validate the connection as well + return $this->validate_current_database(); + } + + /** + * Validates the current database settings + * + * @return boolean False if the current database isn't valid, otherwise true + */ + function validate_current_database() + { + global $bbdb; + $db = $bbdb->db_connect( "SELECT * FROM $bbdb->forums LIMIT 1" ); + + if ( !is_resource( $db ) ) { + return false; + } + + return true; + } + + /** + * Sets up default values for input data as well as labels and notes + * + * @return void + */ + function prepare_data() + { + /** + * Should be exactly the same as the default value of the KEYS in bb-config-sample.php + * @since 1.0 + */ + $_bb_default_secret_key = 'put your unique phrase here'; + + $this->data = array( + 0 => array( + 'form' => array( + 'forward_0_0' => array( + 'value' => __( 'Go to step 1' ) + ) + ) + ), + 1 => array( + 'form' => array( + 'bbdb_name' => array( + 'value' => '', + 'label' => __( 'Database name' ), + 'note' => __( 'The name of the database in which you want to run bbPress.' ) + ), + 'bbdb_user' => array( + 'value' => '', + 'label' => __( 'Database user' ), + 'note' => __( 'The database user that has access to that database.' ), + 'autocomplete' => 'off' + ), + 'bbdb_password' => array( + 'type' => 'password', + 'value' => '', + 'label' => __( 'Database password' ), + 'note' => __( 'That database user\'s password.' ), + 'autocomplete' => 'off' + ), + 'bb_lang' => array( + 'value' => '', + 'label' => __( 'Language' ), + 'note' => sprintf( __( 'The language which bbPress will be presented in once installed. Your current installer language choice (%s) will be the same for the rest of the install process.' ), $this->language ) + ), + 'toggle_1' => array( + 'value' => 0, + 'label' => __( 'Show advanced settings' ), + 'note' => __( 'These settings usually do not have to be changed.' ), + 'checked' => '', + 'display' => 'none' + ), + 'bbdb_host' => array( + 'value' => 'localhost', + 'label' => __( 'Database host' ), + 'note' => __( 'The domain name or IP address of the server where the database is located. If the database is on the same server as the web site, then this probably should remain localhost.' ), + 'prerequisite' => 'toggle_1' + ), + 'bbdb_charset' => array( + 'value' => 'utf8', + 'label' => __( 'Database character set' ), + 'note' => __( 'The best choice is utf8, but you will need to match the character set which you created the database with.' ), + 'prerequisite' => 'toggle_1' + ), + 'bbdb_collate' => array( + 'value' => '', + 'label' => __( 'Database character collation' ), + 'note' => __( 'The character collation value set when the database was created.' ), + 'prerequisite' => 'toggle_1' + ), + /* + 'bb_auth_key' => array( + 'value' => $_bb_default_secret_key, + 'label' => __( 'bbPress "auth" cookie key' ), + 'note' => __( 'This should be a unique and secret phrase, it will be used to make your bbPress "auth" cookie unique and harder for an attacker to decipher.' ), + 'prerequisite' => 'toggle_1' + ), + 'bb_secure_auth_key' => array( + 'value' => $_bb_default_secret_key, + 'label' => __( 'bbPress "secure auth" cookie key' ), + 'note' => __( 'This should be a unique and secret phrase, it will be used to make your bbPress "secure auth" cookie unique and harder for an attacker to decipher.' ), + 'prerequisite' => 'toggle_1' + ), + 'bb_logged_in_key' => array( + 'value' => $_bb_default_secret_key, + 'label' => __( 'bbPress "logged in" cookie key' ), + 'note' => __( 'This should be a unique and secret phrase, it will be used to make your bbPress "logged in" cookie unique and harder for an attacker to decipher.' ), + 'prerequisite' => 'toggle_1' + ), + 'bb_nonce_key' => array( + 'value' => $_bb_default_secret_key, + 'label' => __( 'bbPress "nonce" key' ), + 'note' => __( 'This should be a unique and secret phrase, it will be used to make form submission harder for an attacker to spoof.' ), + 'prerequisite' => 'toggle_1' + ), + */ + 'bb_table_prefix' => array( + 'value' => 'bb_', + 'label' => __( 'Table name prefix' ), + 'note' => __( 'If you are running multiple bbPress sites in a single database, you will probably want to change this.' ), + 'prerequisite' => 'toggle_1' + ), + 'config' => array( + 'value' => '', + 'label' => __( 'Contents for bb-config.php' ), + 'note' => __( 'Once you have created the configuration file, you can check for it below.' ) + ), + 'forward_1_0' => array( + 'value' => __( 'Save database configuration file' ) + ), + 'back_1_1' => array( + 'value' => __( '« Go back' ) + ), + 'forward_1_1' => array( + 'value' => __( 'Check for configuration file' ) + ), + 'forward_1_2' => array( + 'value' => __( 'Go to step 2' ) + ) + ) + ), + + 2 => array( + 'form' => array( + 'toggle_2_0' => array( + 'value' => 0, + 'label' => __( 'Add integration settings' ), + 'note' => __( 'If you want to integrate bbPress with an existing WordPress site.' ), + 'checked' => '', + 'display' => 'none', + 'toggle_value' => array( + 'target' => 'forward_2_0', + 'off_value' => __( 'Skip WordPress integration' ), + 'on_value' => __( 'Save WordPress integration settings' ) + ) + ), + 'toggle_2_1' => array( + 'value' => 0, + 'label' => __( 'Add cookie integration settings' ), + 'note' => __( 'If you want to allow shared logins with an existing WordPress site.' ), + 'checked' => '', + 'display' => 'none', + 'prerequisite' => 'toggle_2_0' + ), + 'wp_siteurl' => array( + 'value' => '', + 'label' => __( 'WordPress address (URL)' ), + 'note' => __( 'This value should exactly match the WordPress address (URL) setting in your WordPress general settings.' ), + 'prerequisite' => 'toggle_2_1' + ), + 'wp_home' => array( + 'value' => '', + 'label' => __( 'Blog address (URL)' ), + 'note' => __( 'This value should exactly match the Blog address (URL) setting in your WordPress general settings.' ), + 'prerequisite' => 'toggle_2_1' + ), + 'wp_auth_key' => array( + 'value' => '', + 'label' => __( 'WordPress "auth" cookie key' ), + 'note' => __( 'This value must match the value of the constant named "AUTH_KEY" in your WordPress wp-config.php file. This will replace the bbPress "auth" cookie key set in the first step.' ), + 'prerequisite' => 'toggle_2_1', + 'autocomplete' => 'off' + ), + 'wp_auth_salt' => array( + 'value' => '', + 'label' => __( 'WordPress "auth" cookie salt' ), + 'note' => __( 'This must match the value of the WordPress setting named "auth_salt" in your WordPress site. Look for the option labeled "auth_salt" in this WordPress admin page. If you leave this blank the installer will try to fetch the value based on your WordPress database integration settings.' ), + 'prerequisite' => 'toggle_2_1', + 'autocomplete' => 'off' + ), + 'wp_secure_auth_key' => array( + 'value' => '', + 'label' => __( 'WordPress "secure auth" cookie key' ), + 'note' => __( 'This value must match the value of the constant named "SECURE_AUTH_KEY" in your WordPress wp-config.php file. This will replace the bbPress "secure auth" cookie key set in the first step.' ), + 'prerequisite' => 'toggle_2_1', + 'autocomplete' => 'off' + ), + 'wp_secure_auth_salt' => array( + 'value' => '', + 'label' => __( 'WordPress "secure auth" cookie salt' ), + 'note' => __( 'This must match the value of the WordPress setting named "secure_auth_salt" in your WordPress site. Look for the option labeled "secure_auth_salt" in this WordPress admin page. If you leave this blank the installer will try to fetch the value based on your WordPress database integration settings. Sometimes this value is not set in WordPress, in that case you can leave this setting blank as well.' ), + 'prerequisite' => 'toggle_2_1', + 'autocomplete' => 'off' + ), + 'wp_logged_in_key' => array( + 'value' => '', + 'label' => __( 'WordPress "logged in" cookie key' ), + 'note' => __( 'This value must match the value of the constant named "LOGGED_IN_KEY" in your WordPress wp-config.php file. This will replace the bbPress "logged in" cookie key set in the first step.' ), + 'prerequisite' => 'toggle_2_1', + 'autocomplete' => 'off' + ), + 'wp_logged_in_salt' => array( + 'value' => '', + 'label' => __( 'WordPress "logged in" cookie salt' ), + 'note' => __( 'This must match the value of the WordPress setting named "logged_in_salt" in your WordPress site. Look for the option labeled "logged_in_salt" in this WordPress admin page. If you leave this blank the installer will try to fetch the value based on your WordPress database integration settings.' ), + 'prerequisite' => 'toggle_2_1', + 'autocomplete' => 'off' + ), + 'toggle_2_2' => array( + 'value' => 0, + 'label' => __( 'Add user database integration settings' ), + 'note' => __( 'If you want to share user data with an existing WordPress site.' ), + 'checked' => '', + 'display' => 'none', + 'prerequisite' => 'toggle_2_0' + ), + 'wp_table_prefix' => array( + 'value' => 'wp_', + 'default_value' => '', // Used when setting is ignored + 'label' => __( 'User database table prefix' ), + 'note' => __( 'If your bbPress and WordPress sites share the same database, then this is the same value as $table_prefix in your WordPress wp-config.php file. It is usually wp_.' ), + 'prerequisite' => 'toggle_2_2' + ), + 'wordpress_mu_primary_blog_id' => array( + 'value' => '', + 'default_value' => '', + 'label' => __( 'WordPress MU primary blog ID' ), + 'note' => __( 'If you are integrating with a WordPress MU site you need to specify the primary blog ID for that site. It is usually 1. You should probably leave this blank if you are integrating with a standard WordPress site' ), + 'prerequisite' => 'toggle_2_2' + ), + 'toggle_2_3' => array( + 'value' => 0, + 'label' => __( 'Show advanced database settings' ), + 'note' => __( 'If your bbPress and WordPress site do not share the same database, then you will need to add advanced settings.' ), + 'checked' => '', + 'display' => 'none', + 'prerequisite' => 'toggle_2_2' + ), + 'user_bbdb_name' => array( + 'value' => '', + 'label' => __( 'User database name' ), + 'note' => __( 'The name of the database in which your user tables reside.' ), + 'prerequisite' => 'toggle_2_3' + ), + 'user_bbdb_user' => array( + 'value' => '', + 'label' => __( 'User database user' ), + 'note' => __( 'The database user that has access to that database.' ), + 'prerequisite' => 'toggle_2_3', + 'autocomplete' => 'off' + ), + 'user_bbdb_password' => array( + 'type' => 'password', + 'value' => '', + 'label' => __( 'User database password' ), + 'note' => __( 'That database user\'s password.' ), + 'prerequisite' => 'toggle_2_3', + 'autocomplete' => 'off' + ), + 'user_bbdb_host' => array( + 'value' => '', + 'label' => __( 'User database host' ), + 'note' => __( 'The domain name or IP address of the server where the database is located. If the database is on the same server as the web site, then this probably should be localhost.' ), + 'prerequisite' => 'toggle_2_3' + ), + 'user_bbdb_charset' => array( + 'value' => '', + 'label' => __( 'User database character set' ), + 'note' => __( 'The best choice is utf8, but you will need to match the character set which you created the database with.' ), + 'prerequisite' => 'toggle_2_3' + ), + 'user_bbdb_collate' => array( + 'value' => '', + 'label' => __( 'User database character collation' ), + 'note' => __( 'The character collation value set when the user database was created.' ), + 'prerequisite' => 'toggle_2_3' + ), + 'custom_user_table' => array( + 'value' => '', + 'label' => __( 'User database "user" table' ), + 'note' => __( 'The complete table name, including any prefix.' ), + 'prerequisite' => 'toggle_2_3' + ), + 'custom_user_meta_table' => array( + 'value' => '', + 'label' => __( 'User database "user meta" table' ), + 'note' => __( 'The complete table name, including any prefix.' ), + 'prerequisite' => 'toggle_2_3' + ), + 'forward_2_0' => array( + 'value' => __( 'Skip WordPress integration' ) + ), + 'back_2_1' => array( + 'value' => __( '« Go back' ) + ), + 'forward_2_1' => array( + 'value' => __( 'Go to step 3' ) + ) + ) + ), + + 3 => array( + 'form' => array( + 'name' => array( + 'value' => '', + 'label' => __( 'Site name' ), + 'note' => __( 'This is what you are going to call your bbPress site.' ) + ), + 'uri' => array( + 'value' => $this->guess_uri(), + 'label' => __( 'Site address (URL)' ), + 'note' => __( 'We have attempted to guess this; it\'s usually correct, but change it here if you wish.' ) + ), + 'keymaster_user_login' => array( + 'value' => '', + 'maxlength' => 60, + 'label' => __( '"Key Master" Username' ), + 'note' => __( 'This is the user login for the initial bbPress administrator (known as a "Key Master").' ), + 'autocomplete' => 'off' + ), + 'keymaster_user_email' => array( + 'value' => '', + 'maxlength' => 100, + 'label' => __( '"Key Master" Email address' ), + 'note' => __( 'The login details will be emailed to this address.' ), + 'autocomplete' => 'off' + ), + 'keymaster_user_type' => array( + 'value' => 'new' + ), + 'forum_name' => array( + 'value' => '', + 'maxlength' => 150, + 'label' => __( 'First forum name' ), + 'note' => __( 'This can be changed after installation, so don\'t worry about it too much.' ) + ), + 'forward_3_0' => array( + 'value' => __( 'Save site settings' ) + ), + 'back_3_1' => array( + 'value' => __( '« Go back' ) + ), + 'forward_3_1' => array( + 'value' => __( 'Complete the installation' ) + ) + ) + ), + + 4 => array( + 'form' => array( + 'toggle_4' => array( + 'value' => 0, + 'label' => __( 'Show installation messages' ) + ), + 'error_log' => array( + 'value' => '', + 'label' => __( 'Installation errors' ) + ), + 'installation_log' => array( + 'value' => '', + 'label' => __( 'Installation log' ) + ) + ) + ) + ); + } + + /** + * Guesses the final installed URI based on the location of the install script + * + * @return string The guessed URI + */ + function guess_uri() + { + global $bb; + + if ( $bb->uri ) { + $uri = $bb->uri; + } else { + $schema = 'http://'; + if ( isset( $_SERVER['HTTPS'] ) && strtolower( $_SERVER['HTTPS'] ) == 'on' ) { + $schema = 'https://'; + } + $uri = preg_replace( '|/bb-admin/.*|i', '/', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); + } + + return rtrim( $uri, " \t\n\r\0\x0B/" ) . '/'; + } + + /** + * Writes the given alterations to file + * + * @param $file_source string The full path to the file to be read from + * @param $file_target string The full path to the file to be written to + * @param $alterations array An array of arrays containing alterations to be made + * @return void + */ + function write_lines_to_file( $file_source, $file_target, $alterations ) + { + if ( !$file_source || !file_exists( $file_source ) || !is_file( $file_source ) ) { + return -1; + } + + if ( !$file_target ) { + $file_target = $file_source; + } + + if ( !$alterations || !is_array( $alterations ) ) { + return -2; + } + + /* + Alterations array takes the form + array( + '1st 20 chars of line' => array( 'Search string', 'Replacement string' ), + '1st 20 chars of line' => array( 'Search string', 'Replacement string' ) + ); + */ + + // Get the existing lines in the file + $lines = file( $file_source ); + + // Initialise an array to store the modified lines + $modified_lines = array(); + + // Loop through the lines and modify them + foreach ( $lines as $line ) { + if ( isset( $alterations[substr( $line, 0, 20 )] ) ) { + $alteration = $alterations[substr( $line, 0, 20 )]; + $modified_lines[] = str_replace( $alteration[0], $alteration[1], $line ); + } else { + $modified_lines[] = $line; + } + } + + $writable = true; + if ( file_exists( $file_target ) ) { + if ( !is_writable( $file_target ) ) { + $writable = false; + } + } else { + $dir_target = dirname( $file_target ); + if ( file_exists( $dir_target ) ) { + if ( !is_writable( $dir_target ) || !is_dir( $dir_target ) ) { + $writable = false; + } + } else { + $writable = false; + } + } + + if ( !$writable ) { + return trim( join( null, $modified_lines ) ); + } + + // Open the file for writing - rewrites the whole file + $file_handle = fopen( $file_target, 'w' ); + + // Write lines one by one to avoid OS specific newline hassles + foreach ( $modified_lines as $modified_line ) { + if ( false !== strpos( $modified_line, '?>' ) ) { + $modified_line = '?>'; + } + fwrite( $file_handle, $modified_line ); + if ( $modified_line == '?>' ) { + break; + } + } + + // Close the config file + fclose( $file_handle ); + + @chmod( $file_target, 0666 ); + + return 1; + } + + /** + * Reports whether the request method is post or not + * + * @return boolean True if the page was posted, otherwise false + */ + function is_posted() + { + if ( 'post' === strtolower( $_SERVER['REQUEST_METHOD'] ) ) { + return true; + } + return false; + } + + /** + * Determines which step the installer is on based on user input + * + * @return boolean Always returns true + **/ + function set_step() + { + if ( $this->is_posted() ) { + switch ( $this->step ) { + case 1: + $this->set_language(); + if ( $_POST['forward_0_0'] ) { + $this->stop_process = 1; + } + break; + + case 2: + if ( $_POST['forward_1_2'] ) { + $this->stop_process = 1; + } + break; + + case 3: + // If this is actually a request to go back to step 2 + if ( $_POST['back_2_1'] ) { + $this->step = 2; + break; + } + + // If we have come forward from step 2 then don't process form 3 + if ( $_POST['forward_2_1'] ) { + $this->stop_process = true; + } + + // Determine what the status of the previous step was based on input + if ( $_POST['toggle_2_0'] ) { + $this->strings[2]['status'] = __( '« completed' ); + $this->step_status[2] = 'complete'; + } + break; + + case 4: + // Determine what the status of the previous step was based on input + if ( $_POST['toggle_2_0'] ) { + $this->strings[2]['status'] = __( '« completed' ); + $this->step_status[2] = 'complete'; + } + + // If this is actually a request to go back to step 3 + if ( $_POST['back_3_1'] ) { + $this->step = 3; + break; + } + + // We have to have come forward from step 3 + if ( $_POST['forward_3_1'] ) { + $this->strings[3]['status'] = __( '« completed' ); + $this->step_status[3] = 'complete'; + } else { + $this->step = 2; + } + break; + } + } + return true; + } + + /** + * Sanitizes all data stored in the data array + * + * @return boolean Always returns true + **/ + function sanitize_form_data() + { + foreach ( $this->data as $step => $data ) { + if ( isset( $data['form'] ) && is_array( $data['form'] ) ) { + foreach ( $data['form'] as $key => $value ) { + $this->data[$step]['form'][$key]['value'] = esc_attr( $value['value'] ); + } + } + } + return true; + } + + /** + * Directs processing of the form data based on the current step + * + * @return boolean Always returns true + **/ + function process_form() + { + if ( $this->is_posted() && !$this->stop_process ) { + switch ( $this->step ) { + case 1: + $this->process_form_config_file(); + break; + + case 2: + $this->process_form_wordpress_integration(); + break; + + case 3: + $this->process_form_site_options(); + break; + + case 4: + $this->process_form_finalise_installation(); + break; + } + } + return true; + } + + /** + * Takes inputted form data and injects it into the data array + * + * @param integer $step Which steps data to process + * @return boolean Always returns true + **/ + function inject_form_values_into_data( $step ) + { + $data =& $this->data[$step]['form']; + + foreach ( $data as $key => $value ) { + if ( 'forward_' !== substr( $key, 0, 8 ) && 'back_' !== substr( $key, 0, 5 ) ) { + if ( isset( $data[$key]['prerequisite'] ) && !$_POST[$data[$key]['prerequisite']] ) { + if ( isset( $data[$key]['default_value'] ) ) { + $data[$key]['value'] = $data[$key]['default_value']; + } + // do nothing - keep the default value + } else { + $data[$key]['value'] = stripslashes_deep( trim( $_POST[$key] ) ); + } + } + } + + return true; + } + + /** + * Validates the supplied config file data and writes it to the config file. + * + * @return void + **/ + function process_form_config_file() + { + $this->inject_form_values_into_data( 1 ); + + $data =& $this->data[1]['form']; + + if ( 'en_US' == $data['bb_lang']['value'] ) { + $data['bb_lang']['value'] = ''; + } + + if ( $data['toggle_1']['value'] ) { + $data['toggle_1']['checked'] = 'checked="checked"'; + $data['toggle_1']['display'] = 'block'; + + // Deal with slashes in the keys + //$data['bb_auth_key']['value'] = addslashes( stripslashes( $data['bb_auth_key']['value'] ) ); + //$data['bb_secure_auth_key']['value'] = addslashes( stripslashes( $data['bb_secure_auth_key']['value'] ) ); + //$data['bb_logged_in_key']['value'] = addslashes( stripslashes( $data['bb_logged_in_key']['value'] ) ); + //$data['bb_nonce_key']['value'] = addslashes( stripslashes( $data['bb_nonce_key']['value'] ) ); + } + + $requested_prefix = $data['bb_table_prefix']['value']; + $data['bb_table_prefix']['value'] = preg_replace( '/[^0-9a-zA-Z_]/', '', $data['bb_table_prefix']['value'] ); + if ( $requested_prefix !== $data['bb_table_prefix']['value'] ) { + $data['toggle_1']['checked'] = 'checked="checked"'; + $data['toggle_1']['display'] = 'block'; + $this->step_status[1] = 'incomplete'; + $this->strings[1]['messages']['error'][] = __( 'The table prefix can only contain letters, numbers and underscores.
    Please review the suggestion below.' ); + $this->strings[1]['form_errors']['bb_table_prefix'][] = __( '• Based on your input the following prefix is suggested.' ); + return 'incomplete'; + } + if ( empty( $data['bb_table_prefix']['value'] ) ) { + $data['bb_table_prefix']['value'] = 'bb_'; + $data['toggle_1']['checked'] = 'checked="checked"'; + $data['toggle_1']['display'] = 'block'; + $this->step_status[1] = 'incomplete'; + $this->strings[1]['messages']['error'][] = __( 'The table prefix can not be blank.
    Please review the suggestion below.' ); + $this->strings[1]['form_errors']['bb_table_prefix'][] = __( '• The default prefix has been inserted.' ); + return 'incomplete'; + } + + // Stop here if we are going backwards + if ( $_POST['back_1_1'] ) { + $this->step_status[1] = 'incomplete'; + return 'incomplete'; + } + + // Test the db connection. + define( 'BBDB_NAME', $data['bbdb_name']['value'] ); + define( 'BBDB_USER', $data['bbdb_user']['value'] ); + define( 'BBDB_PASSWORD', $data['bbdb_password']['value'] ); + define( 'BBDB_HOST', $data['bbdb_host']['value'] ); + define( 'BBDB_CHARSET', $data['bbdb_charset']['value'] ); + define( 'BBDB_COLLATE', $data['bbdb_collate']['value'] ); + + // We'll fail here if the values are no good. + require_once( BACKPRESS_PATH . 'class.bpdb-multi.php' ); + + $bbdb =& new BPDB_Multi( array( + 'name' => BBDB_NAME, + 'user' => BBDB_USER, + 'password' => BBDB_PASSWORD, + 'host' => BBDB_HOST, + 'charset' => defined( 'BBDB_CHARSET' ) ? BBDB_CHARSET : false, + 'collate' => defined( 'BBDB_COLLATE' ) ? BBDB_COLLATE : false, + 'errors' => 'suppress' + ) ); + + if ( !$bbdb->db_connect( 'SHOW TABLES;' ) ) { + $bbdb->suppress_errors( false ); + $this->step_status[1] = 'incomplete'; + $this->strings[1]['messages']['error'][] = __( 'There was a problem connecting to the database you specified.
    Please check the settings, then try again.' ); + return 'error'; + } + $bbdb->suppress_errors( false ); + + $config_result = $this->write_lines_to_file( + BB_PATH . 'bb-config-sample.php', + BB_PATH . 'bb-config.php', + array( + "define( 'BBDB_NAME'," => array( "'bbpress'", "'" . $data['bbdb_name']['value'] . "'" ), + "define( 'BBDB_USER'," => array( "'username'", "'" . $data['bbdb_user']['value'] . "'" ), + "define( 'BBDB_PASSWO" => array( "'password'", "'" . $data['bbdb_password']['value'] . "'" ), + "define( 'BBDB_HOST'," => array( "'localhost'", "'" . $data['bbdb_host']['value'] . "'" ), + "define( 'BBDB_CHARSE" => array( "'utf8'", "'" . $data['bbdb_charset']['value'] . "'" ), + "define( 'BBDB_COLLAT" => array( "''", "'" . $data['bbdb_collate']['value'] . "'" ), + //"define( 'BB_AUTH_KEY" => array( "'put your unique phrase here'", "'" . $data['bb_auth_key']['value'] . "'" ), + //"define( 'BB_SECURE_A" => array( "'put your unique phrase here'", "'" . $data['bb_secure_auth_key']['value'] . "'" ), + //"define( 'BB_LOGGED_I" => array( "'put your unique phrase here'", "'" . $data['bb_logged_in_key']['value'] . "'" ), + //"define( 'BB_NONCE_KE" => array( "'put your unique phrase here'", "'" . $data['bb_nonce_key']['value'] . "'" ), + "\$bb_table_prefix = '" => array( "'bb_'", "'" . $data['bb_table_prefix']['value'] . "'" ), + "define( 'BB_LANG', '" => array( "''", "'" . $data['bb_lang']['value'] . "'" ) + ) + ); + + switch ( $config_result ) { + case -1: + $this->step_status[1] = 'error'; + $this->strings[1]['messages']['error'][] = __( 'I could not find the file bb-config-sample.php
    Please upload it to the root directory of your bbPress installation.' ); + return 'error'; + break; + case 1: + $this->configs['bb-config.php'] = BB_PATH . 'bb-config.php'; + $this->step_status[1] = 'complete'; + $this->strings[1]['messages']['message'][] = __( 'Your settings have been saved to the file bb-config.php
    You can now continue to the next step.' ); + break; + default: + // Just write the contents to screen + $this->data[1]['form']['config']['value'] = $config_result; + + $this->step_status[1] = 'manual'; + $this->strings[1]['messages']['error'][] = __( 'Your settings could not be saved to a configuration file. You will need to save the text shown below into a file named bb-config.php in the root directory of your bbPress installation before you can continue.' ); + break; + } + } + + /** + * Validates the WordPress integration settings + * + * @return void + **/ + function process_form_wordpress_integration() + { + // Check the referer + bb_check_admin_referer( 'bbpress-installer' ); + + $this->inject_form_values_into_data( 2 ); + + $data =& $this->data[2]['form']; + + // If there are no settings then goto step 3 + if ( !$data['toggle_2_0']['value'] && !$_POST['back_2_1'] ) { + $this->step_status[2] = 'complete'; + $this->strings[2]['messages']['message'][] = __( 'You have chosen to skip the WordPress integration step. You can always integrate WordPress later from within the admin area of bbPress.' ); + return 'complete'; + } + + // If integration is selected + if ( $data['toggle_2_0']['value'] ) { + $data['toggle_2_0']['checked'] = 'checked="checked"'; + $data['toggle_2_0']['display'] = 'block'; + $data['forward_2_0']['value'] = $data['toggle_2_0']['toggle_value']['on_value']; + + if ( $data['toggle_2_1']['value'] ) { + $data['toggle_2_1']['checked'] = 'checked="checked"'; + $data['toggle_2_1']['display'] = 'block'; + + // Check the wp_siteurl URL for errors + $data['wp_siteurl']['value'] = $data['wp_siteurl']['value'] ? rtrim( $data['wp_siteurl']['value'], " \t\n\r\0\x0B/" ) . '/' : ''; + $this->strings[2]['form_errors']['wp_siteurl'][] = empty( $data['wp_siteurl']['value'] ) ? 'empty' : false; + if ( $parsed = parse_url( $data['wp_siteurl']['value'] ) ) { + $this->strings[2]['form_errors']['wp_siteurl'][] = preg_match( '/https?/i', $parsed['scheme'] ) ? false : 'urlscheme'; + $this->strings[2]['form_errors']['wp_siteurl'][] = empty( $parsed['host'] ) ? 'urlhost' : false; + } else { + $this->strings[2]['form_errors']['wp_siteurl'][] = 'urlparse'; + } + + // Check the wp_home URL for errors + $data['wp_home']['value'] = $data['wp_home']['value'] ? rtrim( $data['wp_home']['value'], " \t\n\r\0\x0B/" ) . '/' : ''; + $this->strings[2]['form_errors']['wp_home'][] = empty( $data['wp_home']['value'] ) ? 'empty' : false; + if ( $parsed = parse_url( $data['wp_home']['value'] ) ) { + $this->strings[2]['form_errors']['wp_home'][] = preg_match( '/https?/i', $parsed['scheme'] ) ? false : 'urlscheme'; + $this->strings[2]['form_errors']['wp_home'][] = empty( $parsed['host'] ) ? 'urlhost' : false; + } else { + $this->strings[2]['form_errors']['wp_home'][] = 'urlparse'; + } + + // Deal with slashes in the keys + $data['wp_auth_key']['value'] = addslashes( stripslashes( $data['wp_auth_key']['value'] ) ); + $data['wp_auth_salt']['value'] = addslashes( stripslashes( $data['wp_auth_salt']['value'] ) ); + $data['wp_secure_auth_key']['value'] = addslashes( stripslashes( $data['wp_secure_auth_key']['value'] ) ); + $data['wp_secure_auth_salt']['value'] = addslashes( stripslashes( $data['wp_secure_auth_salt']['value'] ) ); + $data['wp_logged_in_key']['value'] = addslashes( stripslashes( $data['wp_logged_in_key']['value'] ) ); + $data['wp_logged_in_salt']['value'] = addslashes( stripslashes( $data['wp_logged_in_salt']['value'] ) ); + + // Check the keys for errors + $this->strings[2]['form_errors']['wp_auth_key'][] = empty( $data['wp_auth_key']['value'] ) ? 'empty' : false; + $this->strings[2]['form_errors']['wp_secure_auth_key'][] = empty( $data['wp_secure_auth_key']['value'] ) ? 'empty' : false; + $this->strings[2]['form_errors']['wp_logged_in_key'][] = empty( $data['wp_logged_in_key']['value'] ) ? 'empty' : false; + + // Salts can be taken from the database if specified + if ( !$data['toggle_2_2']['value'] ) { + $this->strings[2]['form_errors']['wp_auth_salt'][] = empty( $data['wp_auth_salt']['value'] ) ? 'empty' : false; + // NB; secure_auth_salt is not always set in WordPress + $this->strings[2]['form_errors']['wp_logged_in_salt'][] = empty( $data['wp_logged_in_salt']['value'] ) ? 'empty' : false; + } + } + + // If database integration is selected + if ( $data['toggle_2_2']['value'] ) { + $data['toggle_2_2']['checked'] = 'checked="checked"'; + $data['toggle_2_2']['display'] = 'block'; + + // Make the wp_table_prefix valid + $data['wp_table_prefix']['value'] = preg_replace( '/[^0-9a-zA-Z_]/', '', $data['wp_table_prefix']['value'] ); + $data['wp_table_prefix']['value'] = empty( $data['wp_table_prefix']['value'] ) ? 'wp_' : $data['wp_table_prefix']['value']; + + // Make the wordpress_mu_primary_blog_id valid + $data['wordpress_mu_primary_blog_id']['value'] = preg_replace( '/[^0-9]/', '', $data['wordpress_mu_primary_blog_id']['value'] ); + + // If advanced database integration is selected + if ( $data['toggle_2_3']['value'] ) { + $data['toggle_2_3']['checked'] = 'checked="checked"'; + $data['toggle_2_3']['display'] = 'block'; + } + } + + if ( !$data['toggle_2_1']['value'] && !$data['toggle_2_2']['value'] ) { + $this->step_status[2] = 'incomplete'; + $this->strings[2]['messages']['error'][] = __( 'You must enter your settings for integration setup to complete. Choose which integration settings you wish to enter from the options below.' ); + $this->strings[2]['form_errors']['toggle_2_1'][] = true; + $this->strings[2]['form_errors']['toggle_2_2'][] = true; + return 'incomplete'; + } + + // Remove empty values from the error array + foreach ( $this->strings[2]['form_errors'] as $input => $types) { + $types = array_filter( $types); + if ( !count( $types ) ) { + unset( $this->strings[2]['form_errors'][$input] ); + } + } + + // Check for errors and build error messages + if ( count( $this->strings[2]['form_errors'] ) ) { + + $this->step_status[2] = 'incomplete'; + $this->strings[2]['messages']['error'][] = __( 'Your integration settings have not been processed due to errors with the items marked below.' ); + + foreach ( $this->strings[2]['form_errors'] as $input => $types ) { + $errors = array(); + + foreach ( $types as $type ) { + switch ( $type ) { + case 'empty': + // Only return this error when empty + $errors = array( __( '• This value is required to continue.' ) ); + break(2); + case 'urlparse': + $errors[] = __( '• This does not appear to be a valid URL.' ); + break; + case 'urlscheme': + $errors[] = __( '• The URL must begin with "http" or "https".' ); + break; + case 'urlhost': + $errors[] = __( '• The URL does not contain a host name.' ); + break; + } + } + + $this->strings[2]['form_errors'][$input] = $errors; + } + + return 'incomplete'; + } + + // If database integration is selected + if ( $data['toggle_2_2']['value'] ) { + + // Test the db connection. + + // Setup variables and constants if available + global $bb; + $bb->wp_table_prefix = $data['wp_table_prefix']['value']; + if ( $data['toggle_2_3']['value'] ) { + // These may be empty at this particular stage + if ( !empty( $data['user_bbdb_name']['value'] ) ) { + $bb->user_bbdb_name = $data['user_bbdb_name']['value']; + } + if ( !empty( $data['user_bbdb_user']['value'] ) ) { + $bb->user_bbdb_user = $data['user_bbdb_user']['value']; + } + if ( !empty( $data['user_bbdb_password']['value'] ) ) { + $bb->user_bbdb_password = $data['user_bbdb_password']['value']; + } + if ( !empty( $data['user_bbdb_host']['value'] ) ) { + $bb->user_bbdb_host = $data['user_bbdb_host']['value']; + } + if ( !empty( $data['user_bbdb_charset']['value'] ) ) { + $bb->user_bbdb_charset = preg_replace( '/[^a-z0-9_-]/i', '', $data['user_bbdb_charset']['value'] ); + } + if ( !empty( $data['user_bbdb_collate']['value'] ) ) { + $bb->user_bbdb_collate = preg_replace( '/[^a-z0-9_-]/i', '', $data['user_bbdb_collate']['value'] ); + } + if ( !empty( $data['custom_user_table']['value'] ) ) { + $bb->custom_user_table = preg_replace( '/[^a-z0-9_-]/i', '', $data['custom_user_table']['value'] ); + } + if ( !empty( $data['custom_user_meta_table']['value'] ) ) { + $bb->custom_user_meta_table = preg_replace( '/[^a-z0-9_-]/i', '', $data['custom_user_meta_table']['value'] ); + } + } + + // Bring in the database object + global $bbdb; + global $bb_table_prefix; + + // Resolve the custom user tables for bpdb + bb_set_custom_user_tables(); + + if ( isset( $bb->custom_databases) && isset( $bb->custom_databases['user'] ) ) { + $bbdb->add_db_server( 'user', $bb->custom_databases['user'] ); + } + + // Add custom tables if required + if ( isset( $bb->custom_tables['users'] ) || isset( $bb->custom_tables['usermeta'] ) ) { + $bbdb->tables = array_merge( $bbdb->tables, $bb->custom_tables ); + if ( is_wp_error( $bbdb->set_prefix( $bb_table_prefix ) ) ) { + die( __( 'Your user table prefix may only contain letters, numbers and underscores.' ) ); + } + } + + // Hide errors for the test + $bbdb->hide_errors(); + + $result = $bbdb->query( 'DESCRIBE ' . $bbdb->users . ';' ); + $result_error = $bbdb->get_error(); + + // Select from the user table (may fail if there are no records in the table) + if ( !$result && $result_error ) { + // We couldn't connect to the database at all + + // Turn errors back on + $bbdb->show_errors(); + + // Set the status + $this->step_status[2] = 'incomplete'; + if ( !empty( $data['user_bbdb_name']['value'] ) ) { + $this->strings[2]['form_errors']['user_bbdb_name'][] = true; + } + if ( !empty( $data['user_bbdb_user']['value'] ) ) { + $this->strings[2]['form_errors']['user_bbdb_user'][] = true; + } + if ( !empty( $data['user_bbdb_password']['value'] ) ) { + $this->strings[2]['form_errors']['user_bbdb_password'][] = true; + } + if ( !empty( $data['user_bbdb_host']['value'] ) ) { + $this->strings[2]['form_errors']['user_bbdb_host'][] = true; + } + if ( !empty( $data['custom_user_table']['value'] ) ) { + $this->strings[2]['form_errors']['custom_user_table'][] = true; + } + if ( !empty( $data['custom_user_meta_table']['value'] ) ) { + $this->strings[2]['form_errors']['custom_user_meta_table'][] = true; + } + $this->strings[2]['messages']['error'][] = __( 'There was a problem connecting to the WordPress user database you specified. Please check the settings, then try again.' ); + return 'incomplete'; + } + + if ( $result_error ) { + // The result is an error, presumably telling us the table doesn't exist + + // Turn errors back on + $bbdb->show_errors(); + + // Set the status + $this->step_status[2] = 'incomplete'; + + if ( $data['toggle_2_3']['value'] ) { + $this->strings[2]['messages']['error'][] = __( 'Existing WordPress user tables could not be found in the WordPress database you specified.' ); + } else { + $this->strings[2]['messages']['error'][] = __( 'Existing WordPress user tables could not be found in the bbPress database you specified in step 1.

    This is probably because the database does not already contain working WordPress tables. You may need to specify advanced database settings or leave integration until after installation.' ); + } + $this->strings[2]['form_errors']['wp_table_prefix'][] = __( '• This may not be a valid user table prefix.' ); + return 'incomplete'; + } + + // Turn errors back on + $bbdb->show_errors(); + } + } + + // Stop here if we are going backwards + if ( $_POST['back_2_1'] ) { + $this->step_status[2] = 'incomplete'; + return 'incomplete'; + } + + // If we make it this may we are complete, so set the status to complete + $this->step_status[2] = 'complete'; + $this->strings[2]['messages']['message'][] = __( 'Your WordPress integration cookie and database settings have been successfully validated. They will be saved after the next step.

    Once you have finished installing, you should visit the WordPress integration section of the bbPress admin area for further options and integration instructions, including user mapping and the correct cookie settings to add to your WordPress configuration file.' ); + return 'complete'; + } + + /** + * Validates the site options. + * + * @return void + **/ + function process_form_site_options() + { + // Check the referer + bb_check_admin_referer( 'bbpress-installer' ); + + $this->inject_form_values_into_data( 2 ); + $this->inject_form_values_into_data( 3 ); + + $data =& $this->data[3]['form']; + + $this->strings[3]['form_errors']['name'][] = empty( $data['name']['value'] ) ? 'empty' : false; + + $data['uri']['value'] = $data['uri']['value'] ? rtrim( $data['uri']['value'], " \t\n\r\0\x0B/" ) . '/' : ''; + $this->strings[3]['form_errors']['uri'][] = empty( $data['uri']['value'] ) ? 'empty' : false; + if ( $parsed = parse_url( $data['uri']['value'] ) ) { + $this->strings[3]['form_errors']['uri'][] = preg_match( '/https?/i', $parsed['scheme'] ) ? false : 'urlscheme'; + $this->strings[3]['form_errors']['uri'][] = empty( $parsed['host'] ) ? 'urlhost' : false; + } else { + $this->strings[3]['form_errors']['uri'][] = 'urlparse'; + } + + $this->strings[3]['form_errors']['keymaster_user_login'][] = empty( $data['keymaster_user_login']['value'] ) ? 'empty' : false; + if ( $data['keymaster_user_login']['value'] != sanitize_user( $data['keymaster_user_login']['value'], true ) ) { + $this->strings[3]['form_errors']['keymaster_user_login'][] = 'userlogin'; + } + $data['keymaster_user_login']['value'] = sanitize_user( $data['keymaster_user_login']['value'], true ); + + // Check for a valid email + $this->strings[3]['form_errors']['keymaster_user_email'][] = empty( $data['keymaster_user_email']['value'] ) ? 'empty' : false; + $this->strings[3]['form_errors']['keymaster_user_email'][] = !is_email( $data['keymaster_user_email']['value'] ) ? 'email' : false; + + // Check for a forum name + if ( !$this->database_tables_are_installed() ) { + $this->strings[3]['form_errors']['forum_name'][] = empty( $data['forum_name']['value'] ) ? 'empty' : false; + } + + // Remove empty values from the error array + foreach ( $this->strings[3]['form_errors'] as $input => $types ) { + $types = array_filter( $types ); + if ( !count( $types ) ) { + unset( $this->strings[3]['form_errors'][$input] ); + } + } + + // Check for errors and build error messages + if ( count( $this->strings[3]['form_errors'] ) ) { + + $this->step_status[3] = 'incomplete'; + $this->strings[3]['messages']['error'][] = __( 'Your site settings have not been processed due to errors with the items marked below.' ); + + foreach ( $this->strings[3]['form_errors'] as $input => $types ) { + $errors = array(); + + foreach ( $types as $type ) { + switch ( $type ) { + case 'empty': + // Only return this error when empty + $errors = array( __( '• This value is required to continue.' ) ); + break(2); + case 'urlparse': + $errors[] = __( '• This does not appear to be a valid URL.' ); + break; + case 'urlscheme': + $errors[] = __( '• The URL must begin with "http" or "https".' ); + break; + case 'urlhost': + $errors[] = __( '• The URL does not contain a host name.' ); + break; + case 'userlogin': + $errors[] = __( '• Contains disallowed characters which have been removed.' ); + break; + case 'email': + $errors[] = __( '• The user email address appears to be invalid.' ); + break; + } + } + + $this->strings[3]['form_errors'][$input] = $errors; + } + + return 'incomplete'; + } + + // Stop here if we are going backwards + if ( $_POST['back_3_1'] ) { + $this->step_status[3] = 'incomplete'; + return 'incomplete'; + } + + // If we make it this far we are good to go + $this->step_status[3] = 'complete'; + $this->strings[3]['messages']['message'][] = __( 'Your site settings have been saved and we are now ready to complete the installation. So what are you waiting for?' ); + return 'complete'; + } + + /** + * Finalises the installation by creating the database and writing all the supplied data to the database. + * + * @return void + **/ + function process_form_finalise_installation() + { + require_once( BB_PATH . 'bb-admin/includes/functions.bb-upgrade.php' ); + require_once( BB_PATH . 'bb-admin/includes/functions.bb-admin.php' ); + + $this->inject_form_values_into_data( 2 ); + $this->inject_form_values_into_data( 3 ); + + $data2 =& $this->data[2]['form']; + $data3 =& $this->data[3]['form']; + $data4 =& $this->data[4]['form']; + + $error_log = array(); + $installation_log = array(); + + // Check the referer + bb_check_admin_referer( 'bbpress-installer' ); + $installation_log[] = __( 'Referrer is OK, beginning installation…' ); + + global $bbdb; + + // Setup user table variables and constants if available + if ( $data2['toggle_2_2']['value'] ) { + + $installation_log[] = '>>> ' . __( 'Setting up custom user table constants' ); + + global $bb; + global $bb_table_prefix; + + if ( !empty( $data2['wp_table_prefix']['value'] ) ) { + $bb->wp_table_prefix = $data2['wp_table_prefix']['value']; + } + if ( !empty( $data2['user_bbdb_name']['value'] ) ) { + $bb->user_bbdb_name = $data2['user_bbdb_name']['value']; + } + if ( !empty( $data2['user_bbdb_user']['value'] ) ) { + $bb->user_bbdb_user = $data2['user_bbdb_user']['value']; + } + if ( !empty( $data2['user_bbdb_password']['value'] ) ) { + $bb->user_bbdb_password = $data2['user_bbdb_password']['value']; + } + if ( !empty( $data2['user_bbdb_host']['value'] ) ) { + $bb->user_bbdb_host = $data2['user_bbdb_host']['value']; + } + if ( !empty( $data2['user_bbdb_charset']['value'] ) ) { + $bb->user_bbdb_charset = preg_replace( '/[^a-z0-9_-]/i', '', $data2['user_bbdb_charset']['value'] ); + } + if ( !empty( $data2['user_bbdb_collate']['value'] ) ) { + $bb->user_bbdb_collate = preg_replace( '/[^a-z0-9_-]/i', '', $data2['user_bbdb_collate']['value'] ); + } + + bb_set_custom_user_tables(); + + // Add custom user database if required + if ( isset( $bb->custom_databases['user'] ) ) { + $bbdb->add_db_server( 'user', $bb->custom_databases['user'] ); + } + + // Add custom tables if required + if ( isset( $bb->custom_tables ) ) { + $bbdb->tables = array_merge( $bbdb->tables, $bb->custom_tables ); + if ( is_wp_error( $bbdb->set_prefix( $bb_table_prefix ) ) ) + die( __( 'Your user table prefix may only contain letters, numbers and underscores.' ) ); + } + } + + // Create the database + $installation_log[] = "\n" . __( 'Step 1 - Creating database tables' ); + + if ( !$this->database_tables_are_installed() ) { + // Hide db errors + $bbdb->hide_errors(); + // Install the database + $alterations = bb_install(); + // Show db errors + $bbdb->show_errors(); + + if ( isset( $alterations['errors'] ) && is_array( $alterations['errors'] ) ) { + $error_log = array_merge( $error_log, $alterations['errors'] ); + } + if ( isset( $alterations['messages'] ) && is_array( $alterations['messages'] ) ) { + $installation_log = array_merge( $installation_log, $alterations['messages'] ); + } + + if ( !$this->database_tables_are_installed() ) { + $installation_log[] = '>>> ' . __( 'Database installation failed!!!' ); + $installation_log[] = '>>>>>> ' . __( 'Halting installation!' ); + $error_log[] = __( 'Database installation failed!!!' ); + + $this->step_status[4] = 'incomplete'; + $this->strings[4]['h2'] = __( 'Installation failed!' ); + $this->strings[4]['messages']['error'][] = __( 'The database failed to install. You may need to replace bbPress with a fresh copy and start again.' ); + + $data4['installation_log']['value'] = join( "\n", $installation_log ); + $data4['error_log']['value'] = join( "\n", $error_log ); + + return 'incomplete'; + } + } else { + $installation_log[] = '>>> ' . __( 'Database is already installed!!!' ); + } + + // Integration settings passed from step 2 + // These are already validated provided that the referer checks out + $installation_log[] = "\n" . __( 'Step 2 - WordPress integration (optional)' ); + if ( $data2['toggle_2_0']['value'] ) { + if ( $data2['toggle_2_1']['value'] ) { + bb_update_option( 'wp_siteurl', $data2['wp_siteurl']['value'] ); + $installation_log[] = '>>> ' . __( 'WordPress address (URL):' ) . ' ' . $data2['wp_siteurl']['value']; + + bb_update_option( 'wp_home', $data2['wp_home']['value'] ); + $installation_log[] = '>>> ' . __( 'Blog address (URL):' ) . ' ' . $data2['wp_home']['value']; + + $config_result = $this->write_lines_to_file( + BB_PATH . 'bb-config.php', + false, + array( + "define( 'BB_AUTH_KEY" => array( "'" . BB_AUTH_KEY . "'", "'" . $data2['wp_auth_key']['value'] . "'" ), + "define( 'BB_SECURE_A" => array( "'" . BB_SECURE_AUTH_KEY . "'", "'" . $data2['wp_secure_auth_key']['value'] . "'" ), + "define( 'BB_LOGGED_I" => array( "'" . BB_LOGGED_IN_KEY . "'", "'" . $data2['wp_logged_in_key']['value'] . "'" ), + ) + ); + + switch ( $config_result ) { + case 1: + $installation_log[] = '>>> ' . __( 'WordPress cookie keys set.' ); + break; + default: + $error_log[] = '>>> ' . __( 'WordPress cookie keys not set.' ); + $error_log[] = '>>>>>> ' . __( 'Your "bb-config.php" file was not writable.' ); + $error_log[] = '>>>>>> ' . __( 'You will need to manually re-define "BB_AUTH_KEY", "BB_SECURE_AUTH_KEY" and "BB_LOGGED_IN_KEY" in your "bb-config.php" file.' ); + $installation_log[] = '>>> ' . __( 'WordPress cookie keys not set.' ); + break; + } + + if ( !empty( $data2['wp_auth_salt']['value'] ) ) { + bb_update_option( 'bb_auth_salt', $data2['wp_auth_salt']['value'] ); + $installation_log[] = '>>> ' . __( 'WordPress "auth" cookie salt set from input.' ); + } + + if ( !empty( $data2['wp_secure_auth_salt']['value'] ) ) { + bb_update_option( 'bb_secure_auth_salt', $data2['wp_secure_auth_salt']['value'] ); + $installation_log[] = '>>> ' . __( 'WordPress "secure auth" cookie salt set from input.' ); + } + + if ( !empty( $data2['wp_logged_in_salt']['value'] ) ) { + bb_update_option( 'bb_logged_in_salt', $data2['wp_logged_in_salt']['value'] ); + $installation_log[] = '>>> ' . __( 'WordPress "logged in" cookie salt set from input.' ); + } + } + + if ( $data2['toggle_2_2']['value'] ) { + if ( + !bb_get_option( 'bb_auth_salt' ) || + !bb_get_option( 'bb_secure_auth_salt' ) || + !bb_get_option( 'bb_logged_in_salt' ) + ) { + $installation_log[] = '>>> ' . __( 'Fetching missing WordPress cookie salts.' ); + + $_prefix = $bb->wp_table_prefix; + if ( !empty( $data2['wordpress_mu_primary_blog_id']['value'] ) ) { + $_prefix .= $data2['wordpress_mu_primary_blog_id']['value'] . '_'; + } + + if ( isset( $bb->custom_databases['user'] ) ) { + $bbdb->tables['options'] = array( 'user', $_prefix . 'options' ); + } else { + $bbdb->tables['options'] = $_prefix . 'options'; + } + + unset( $_prefix ); + + $bbdb->set_prefix( $bb_table_prefix ); + + if ( !bb_get_option( 'bb_auth_salt' ) ) { + $wp_auth_salt = $bbdb->get_var( "SELECT `option_value` FROM $bbdb->options WHERE `option_name` = 'auth_salt' LIMIT 1" ); + if ( $wp_auth_salt ) { + bb_update_option( 'bb_auth_salt', $wp_auth_salt ); + $installation_log[] = '>>>>>> ' . __( 'WordPress "auth" cookie salt set.' ); + } else { + $error_log[] = '>>> ' . __( 'WordPress "auth" cookie salt not set.' ); + $error_log[] = '>>>>>> ' . __( 'Could not fetch "auth" cookie salt from the WordPress options table.' ); + $error_log[] = '>>>>>> ' . __( 'You will need to manually define the "auth" cookie salt in your database.' ); + $installation_log[] = '>>>>>> ' . __( 'WordPress "auth" cookie salt not set.' ); + } + } + + if ( !bb_get_option( 'bb_secure_auth_salt' ) ) { + $wp_secure_auth_salt = $bbdb->get_var( "SELECT `option_value` FROM $bbdb->options WHERE `option_name` = 'secure_auth_salt' LIMIT 1" ); + if ( $wp_secure_auth_salt ) { + bb_update_option( 'bb_secure_auth_salt', $wp_secure_auth_salt ); + $installation_log[] = '>>>>>> ' . __( 'WordPress "secure auth" cookie salt set.' ); + } else { + // This cookie salt is sometimes empty so don't error + $installation_log[] = '>>>>>> ' . __( 'WordPress "secure auth" cookie salt not set.' ); + } + } + + if ( !bb_get_option( 'bb_logged_in_salt' ) ) { + $wp_logged_in_salt = $bbdb->get_var( "SELECT `option_value` FROM $bbdb->options WHERE `option_name` = 'logged_in_salt' LIMIT 1" ); + if ( $wp_logged_in_salt ) { + bb_update_option( 'bb_logged_in_salt', $wp_logged_in_salt ); + $installation_log[] = '>>>>>> ' . __( 'WordPress "logged in" cookie salt set.' ); + } else { + $error_log[] = '>>> ' . __( 'WordPress "logged in" cookie salt not set.' ); + $error_log[] = '>>>>>> ' . __( 'Could not fetch "logged in" cookie salt from the WordPress options table.' ); + $error_log[] = '>>>>>> ' . __( 'You will need to manually define the "logged in" cookie salt in your database.' ); + $installation_log[] = '>>>>>> ' . __( 'WordPress "logged in" cookie salt not set.' ); + } + } + } + + if ( !empty( $data2['wp_table_prefix']['value'] ) ) { + bb_update_option( 'wp_table_prefix', $data2['wp_table_prefix']['value'] ); + $installation_log[] = '>>> ' . __( 'User database table prefix:' ) . ' ' . $data2['wp_table_prefix']['value']; + } + + if ( !empty( $data2['wordpress_mu_primary_blog_id']['value'] ) ) { + bb_update_option( 'wordpress_mu_primary_blog_id', $data2['wordpress_mu_primary_blog_id']['value'] ); + $installation_log[] = '>>> ' . __( 'WordPress MU primary blog ID:' ) . ' ' . $data2['wordpress_mu_primary_blog_id']['value']; + } + + if ( $data2['toggle_2_3']['value'] ) { + if ( !empty( $data2['user_bbdb_name']['value'] ) ) { + bb_update_option( 'user_bbdb_name', $data2['user_bbdb_name']['value'] ); + $installation_log[] = '>>> ' . __( 'User database name:' ) . ' ' . $data2['user_bbdb_name']['value']; + } + if ( !empty( $data2['user_bbdb_user']['value'] ) ) { + bb_update_option( 'user_bbdb_user', $data2['user_bbdb_user']['value'] ); + $installation_log[] = '>>> ' . __( 'User database user:' ) . ' ' . $data2['user_bbdb_user']['value']; + } + if ( !empty( $data2['user_bbdb_password']['value'] ) ) { + bb_update_option( 'user_bbdb_password', $data2['user_bbdb_password']['value'] ); + $installation_log[] = '>>> ' . __( 'User database password:' ) . ' ' . $data2['user_bbdb_password']['value']; + } + if ( !empty( $data2['user_bbdb_host']['value'] ) ) { + bb_update_option( 'user_bbdb_host', $data2['user_bbdb_host']['value'] ); + $installation_log[] = '>>> ' . __( 'User database host:' ) . ' ' . $data2['user_bbdb_host']['value']; + } + if ( !empty( $data2['user_bbdb_charset']['value'] ) ) { + bb_update_option( 'user_bbdb_charset', $data2['user_bbdb_charset']['value'] ); + $installation_log[] = '>>> ' . __( 'User database character set:' ) . ' ' . $data2['user_bbdb_charset']['value']; + } + if ( !empty( $data2['user_bbdb_collate']['value'] ) ) { + bb_update_option( 'user_bbdb_collate', $data2['user_bbdb_collate']['value'] ); + $installation_log[] = '>>> ' . __( 'User database collation:' ) . ' ' . $data2['user_bbdb_collate']['value']; + } + if ( !empty( $data2['custom_user_table']['value'] ) ) { + bb_update_option( 'custom_user_table', $data2['custom_user_table']['value'] ); + $installation_log[] = '>>> ' . __( 'User database "user" table:' ) . ' ' . $data2['custom_user_table']['value']; + } + if ( !empty( $data2['custom_user_meta_table']['value'] ) ) { + bb_update_option( 'custom_user_meta_table', $data2['custom_user_meta_table']['value'] ); + $installation_log[] = '>>> ' . __( 'User database "user meta" table:' ) . ' ' . $data2['custom_user_meta_table']['value']; + } + } + } + } else { + $installation_log[] = '>>> ' . __( 'Integration not enabled' ); + } + + // Site settings passed from step 3 + // These are already validated provided that the referer checks out + $installation_log[] = "\n" . __( 'Step 3 - Site settings' ); + bb_update_option( 'name', $data3['name']['value'] ); + $installation_log[] = '>>> ' . __( 'Site name:' ) . ' ' . $data3['name']['value']; + bb_update_option( 'uri', $data3['uri']['value'] ); + $installation_log[] = '>>> ' . __( 'Site address (URL):' ) . ' ' . $data3['uri']['value']; + bb_update_option( 'from_email', $data3['keymaster_user_email']['value'] ); + $installation_log[] = '>>> ' . __( 'From email address:' ) . ' ' . $data3['keymaster_user_email']['value']; + + // Create the key master + $keymaster_created = false; + + switch ( $data3['keymaster_user_type']['value'] ) { + case 'new': + + // Check to see if the user login already exists + if ( $keymaster_user = bb_get_user( $data3['keymaster_user_login']['value'], array( 'by' => 'login' ) ) ) { + // The keymaster is an existing bbPress user + $installation_log[] = '>>> ' . __( 'Key master could not be created!' ); + $installation_log[] = '>>>>>> ' . __( 'That login is already taken!' ); + $error_log[] = __( 'Key master could not be created!' ); + + if ( $keymaster_user->bb_capabilities['keymaster'] ) { + // The existing user is a key master - continue + $bb_current_user = bb_set_current_user( $keymaster_user->ID ); + $installation_log[] = '>>>>>> ' . __( 'Existing key master entered!' ); + $data4['keymaster_user_password']['value'] = __( 'Your bbPress password' ); + $data3['keymaster_user_email']['value'] = $keymaster_user->user_email; + bb_update_option( 'from_email', $keymaster_user->user_email); + $installation_log[] = '>>>>>> ' . __( 'Re-setting admin email address.' ); + $keymaster_created = true; + } else { + // The existing user is a non-key master user - halt installation + $installation_log[] = '>>>>>> ' . __( 'Existing user without key master role entered!' ); + $installation_log[] = '>>>>>>>>> ' . __( 'Halting installation!' ); + $this->step_status[4] = 'incomplete'; + $this->strings[4]['h2'] = __( 'Installation failed!' ); + $this->strings[4]['messages']['error'][] = __( 'The key master could not be created. An existing user was found with that user login.' ); + + $data4['installation_log']['value'] = join( "\n", $installation_log ); + $data4['error_log']['value'] = join( "\n", $error_log ); + + return 'incomplete'; + } + + break; + } + + // Helper function to let us know the password that was created + global $keymaster_password; + function bb_get_keymaster_password( $user_id, $pass ) { + global $keymaster_password; + $keymaster_password = $pass; + } + add_action( 'bb_new_user', 'bb_get_keymaster_password', 10, 2 ); + + // Create the new user (automattically given key master role when BB_INSTALLING is true) + if ( $keymaster_user_id = bb_new_user( $data3['keymaster_user_login']['value'], $data3['keymaster_user_email']['value'], '' ) ) { + $bb_current_user = bb_set_current_user( $keymaster_user_id ); + $data4['keymaster_user_password']['value'] = $keymaster_password; + $installation_log[] = '>>> ' . __( 'Key master created' ); + $installation_log[] = '>>>>>> ' . __( 'Username:' ) . ' ' . $data3['keymaster_user_login']['value']; + $installation_log[] = '>>>>>> ' . __( 'Email address:' ) . ' ' . $data3['keymaster_user_email']['value']; + $installation_log[] = '>>>>>> ' . __( 'Password:' ) . ' ' . $data4['keymaster_user_password']['value']; + $keymaster_created = true; + } else { + $installation_log[] = '>>> ' . __( 'Key master could not be created!' ); + $installation_log[] = '>>>>>> ' . __( 'Halting installation!' ); + $error_log[] = __( 'Key master could not be created!' ); + $this->step_status[4] = 'incomplete'; + $this->strings[4]['h2'] = __( 'Installation failed!' ); + $this->strings[4]['messages']['error'][] = __( 'The key master could not be created. You may need to replace bbPress with a fresh copy and start again.' ); + + $data4['installation_log']['value'] = join( "\n", $installation_log ); + $data4['error_log']['value'] = join( "\n", $error_log ); + + return 'incomplete'; + } + break; + + case 'old': + if ( $keymaster_user = bb_get_user( $data3['keymaster_user_login']['value'], array( 'by' => 'login' ) ) ) { + // The keymaster is an existing bbPress or WordPress user + $bb_current_user = bb_set_current_user( $keymaster_user->ID ); + $bb_current_user->set_role( 'keymaster' ); + $data4['keymaster_user_password']['value'] = __( 'Your existing password' ); + $installation_log[] = '>>> ' . __( 'Key master role assigned to existing user' ); + $installation_log[] = '>>>>>> ' . __( 'Username:' ) . ' ' . $data3['keymaster_user_login']['value']; + $installation_log[] = '>>>>>> ' . __( 'Email address:' ) . ' ' . $data3['keymaster_user_email']['value']; + $installation_log[] = '>>>>>> ' . __( 'Password:' ) . ' ' . $data4['keymaster_user_password']['value']; + $keymaster_created = true; + } else { + $installation_log[] = '>>> ' . __( 'Key master role could not be assigned to existing user!' ); + $installation_log[] = '>>>>>> ' . __( 'Halting installation!' ); + $error_log[] = __( 'Key master could not be created!' ); + $this->step_status[4] = 'incomplete'; + $this->strings[4]['h2'] = __( 'Installation failed!' ); + $this->strings[4]['messages']['error'][] = __( 'The key master could not be assigned. You may need to replace bbPress with a fresh copy and start again.' ); + + $data4['installation_log']['value'] = join( "\n", $installation_log ); + $data4['error_log']['value'] = join( "\n", $error_log ); + + return 'incomplete'; + } + break; + } + + // Don't create an initial forum if any forums already exist + if (!$bbdb->get_results( 'SELECT `forum_id` FROM `' . $bbdb->forums . '` LIMIT 1;' ) ) { + if ( $this->language != BB_LANG) { + global $locale, $l10n; + $locale = BB_LANG; + unset( $l10n['default'] ); + bb_load_default_textdomain(); + } + + $description = __( 'Just another bbPress community' ); + bb_update_option( 'description', $description); + + if ( $this->language != BB_LANG) { + $locale = $this->language; + unset( $l10n['default'] ); + bb_load_default_textdomain(); + } + + $installation_log[] = '>>> ' . __( 'Description:' ) . ' ' . $description; + + if ( $forum_id = bb_new_forum( array( 'forum_name' => $data3['forum_name']['value'] ) ) ) { + $installation_log[] = '>>> ' . __( 'Forum name:' ) . ' ' . $data3['forum_name']['value']; + + if ( $this->language != BB_LANG) { + $locale = BB_LANG; + unset( $l10n['default'] ); + bb_load_default_textdomain(); + } + + $topic_title = __( 'Your first topic' ); + $topic_id = bb_insert_topic( + array( + 'topic_title' => $topic_title, + 'forum_id' => $forum_id, + 'tags' => 'bbPress' + ) + ); + $post_text = __( 'First Post! w00t.' ); + bb_insert_post( + array( + 'topic_id' => $topic_id, + 'post_text' => $post_text + ) + ); + + if ( $this->language != BB_LANG ) { + $locale = $this->language; + unset( $l10n['default'] ); + bb_load_default_textdomain(); + } + + $installation_log[] = '>>>>>> ' . __( 'Topic:' ) . ' ' . $topic_title; + $installation_log[] = '>>>>>>>>> ' . __( 'Post:' ) . ' ' . $post_text; + } else { + $installation_log[] = '>>> ' . __( 'Forum could not be created!' ); + $error_log[] = __( 'Forum could not be created!' ); + } + } else { + $installation_log[] = '>>> ' . __( 'There are existing forums in this database.' ); + $installation_log[] = '>>>>>> ' . __( 'No new forum created.' ); + $error_log[] = __( 'Forums already exist!' ); + } + + if ( defined( 'BB_PLUGIN_DIR' ) && BB_PLUGIN_DIR && !file_exists( BB_PLUGIN_DIR ) ) { + // Just suppress errors as this is not critical + if ( @mkdir( BB_PLUGIN_DIR, 0755 ) ) { + $installation_log[] = '>>> ' . sprintf( __( 'Making plugin directory at %s.' ), BB_PLUGIN_DIR ); + } + } + + if ( defined( 'BB_THEME_DIR' ) && BB_THEME_DIR && !file_exists( BB_THEME_DIR ) ) { + // Just suppress errors as this is not critical + if ( @mkdir( BB_THEME_DIR, 0755 ) ) { + $installation_log[] = '>>> ' . sprintf( __( 'Making theme directory at %s.' ), BB_THEME_DIR ); + } + } + + if ( $keymaster_created ) { + $keymaster_email_message = sprintf( + __( "Your new bbPress site has been successfully set up at:\n\n%1\$s\n\nYou can log in to the key master account with the following information:\n\nUsername: %2\$s\nPassword: %3\$s\n\nWe hope you enjoy your new forums. Thanks!\n\n--The bbPress Team\nhttp://bbpress.org/" ), + bb_get_uri( null, null, BB_URI_CONTEXT_TEXT ), + $data3['keymaster_user_login']['value'], + $data4['keymaster_user_password']['value'] + ); + + if ( bb_mail( $data3['keymaster_user_email']['value'], __( 'New bbPress installation' ), $keymaster_email_message ) ) { + $installation_log[] = '>>> ' . __( 'Key master email sent' ); + } else { + $installation_log[] = '>>> ' . __( 'Key master email not sent!' ); + $error_log[] = __( 'Key master email not sent!' ); + } + } + + if ( count( $error_log ) ) { + $this->strings[4]['h2'] = __( 'Installation completed with some errors!' ); + $this->strings[4]['messages']['error'][] = __( 'Your installation completed with some minor errors. See the error log below for more specific information.' ); + $installation_log[] = "\n" . __( 'There were some errors encountered during installation!' ); + } else { + $this->strings[4]['messages']['message'][] = __( 'Your installation completed successfully.' ); + $installation_log[] = "\n" . __( 'Installation complete!' ); + } + + $this->step_status[4] = 'complete'; + + $data4['installation_log']['value'] = join( "\n", $installation_log ); + $data4['error_log']['value'] = join( "\n", $error_log ); + + return 'complete'; + } + + /** + * Prints a text input form element. + * + * @param $key string The key of the data to populate the element with. + * @param $direction string Optional. The text direction, only 'ltr' or 'rtl' are acceptable. + * @return void + **/ + function input_text( $key, $direction = false ) + { + $data = $this->data[$this->step]['form'][$key]; + + $class = ''; + $classes = array(); + if ( isset( $data['note'] ) ) { + $classes[] = 'has-note'; + } + if ( isset( $data['label'] ) ) { + $classes[] = 'has-label'; + } + + if ( isset( $this->data[$this->step]['form'][$key]['type'] ) ) { + $type = $this->data[$this->step]['form'][$key]['type']; + } else { + $type = 'text'; + } + $classes[] = 'for-input-' . $type; + + if ( isset( $this->strings[$this->step]['form_errors'][$key] ) ) { + $classes[] = 'error'; + } + if ( count( $classes ) ) { + $class = ' class="' . join( ' ', $classes ) . '"'; + } + + $r = "\t" . '' . "\n"; + + echo $r; + } + + /** + * Prints a hidden input form element. + * + * @param $key string The key of the data to populate the element with. + * @return void + **/ + function input_hidden( $key ) + { + $r = "\t" . '' . "\n"; + + echo $r; + } + + /** + * Prints a textarea form element. + * + * @param $key string The key of the data to populate the element with. + * @param $direction string Optional. The text direction, only 'ltr' or 'rtl' are acceptable. + * @return void + **/ + function textarea( $key, $direction = false) + { + $data = $this->data[$this->step]['form'][$key]; + + $class = ''; + $classes = array( 'for-textarea' ); + if ( isset( $data['note'] ) ) { + $classes[] = 'has-note'; + } + if ( isset( $data['label'] ) ) { + $classes[] = 'has-label'; + } + if ( count( $classes ) ) { + $class = ' class="' . join( ' ', $classes ) . '"'; + } + + $r = "\t" . '' . "\n"; + + echo $r; + } + + /** + * Prints a select form element populated with options. + * + * @param $key string The key of the data to populate the element with. + * @return void + **/ + function select( $key ) + { + $data = $this->data[$this->step]['form'][$key]; + + $class = ''; + $classes = array( 'for-select' ); + if ( isset( $data['note'] ) ) { + $classes[] = 'has-note'; + } + if ( isset( $data['label'] ) ) { + $classes[] = 'has-label'; + } + if ( count( $classes ) ) { + $class = ' class="' . join( ' ', $classes ) . '"'; + } + + $r = "\t" . '' . "\n"; + + echo $r; + } + + /** + * Prints an appropriate language selection form element if there are any available. + * + * @return void + **/ + function select_language() + { + if ( count( $this->languages ) > 1 ) { + $this->data[1]['form']['bb_lang']['value'] = $this->language; + $this->data[1]['form']['bb_lang']['options'] = $this->languages; + $this->select( 'bb_lang' ); + } else { + $this->data[1]['form']['bb_lang']['value'] = 'en_US'; + $this->input_hidden( 'bb_lang' ); + } + } + + /** + * Prints an input checkbox which controls display of an optional section of settings. + * + * @param string $key The identifier of the area to be toggled. + * @return void + **/ + function input_toggle( $key ) + { + $data = $this->data[$this->step]['form'][$key]; + + $class = ''; + $classes = array( 'for-toggle' ); + if ( isset( $data['note'] ) ) { + $classes[] = 'has-note'; + } + if ( isset( $data['label'] ) ) { + $classes[] = 'has-label'; + } + + $onclick = 'toggleBlock(this, \'' . esc_js( $key . '_target' ) . '\' );'; + if ( isset( $data['toggle_value'] ) ) { + $onclick .= ' toggleValue(this, \'' . esc_js( $data['toggle_value']['target'] ) . '\', \'' . esc_js( $data['toggle_value']['off_value'] ) . '\', \'' . esc_js( $data['toggle_value']['on_value'] ) . '\' );'; + } + + $checked = $data['checked'] ? ' ' . trim( $data['checked'] ) : ''; + + if ( isset( $this->strings[$this->step]['form_errors'][$key] ) ) { + $classes[] = 'error'; + } + if ( count( $classes ) ) { + $class = ' class="' . join( ' ', $classes ) . '"'; + } + + $r = "\t" . '' . "\n"; + + echo $r; + } + + /** + * Prints the input buttons which post each step and optionally go back a step. + * + * @param string $forward The HTML element ID of the forward button. + * @param string $back Optional. The HTML element ID of the back button. + * @return void + **/ + function input_buttons( $forward, $back = false, $step = false ) + { + $data_back = $back ? $this->data[$this->step]['form'][$back] : false; + $data_forward = $this->data[$this->step]['form'][$forward]; + + $r = '
    ' . "\n"; + + if ( !$step ) { + $step = $this->step; + } + $r .= "\t" . '' . "\n"; + + if ( $back) { + $r .= "\t" . '' . "\n"; + } + + $r .= "\t" . '' . "\n"; + + $r .= '
    ' . "\n"; + + echo $r; + } + + /** + * Prints hidden input elements containing the data inputted in a given step. + * + * @param integer $step Optional. The number of the step whose hidden inputs should be printed. + * @return void + **/ + function hidden_step_inputs( $step = false ) + { + if ( !$step ) { + $step = $this->step; + } elseif ( $step !== $this->step ) { + $this->inject_form_values_into_data( $step ); + } + + $data = $this->data[$step]['form']; + + $r = '
    ' . "\n"; + + foreach ( $data as $key => $value ) { + if ( 'forward_' !== substr( $key, 0, 8 ) && 'back_' !== substr( $key, 0, 5 ) ) { + $r .= "\t" . '' . "\n"; + } + } + + $r .= '
    ' . "\n"; + + echo $r; + } + + /** + * Rewrites the admin user input into a select element containing existing WordPress administrators. + * + * @return boolean True if the select element was created, otherwise false. + **/ + function populate_keymaster_user_login_from_user_tables() + { + $data =& $this->data[3]['form']['keymaster_user_login']; + + // Get the existing WordPress admin users + + // Setup variables and constants if available + global $bb; + if ( !empty( $this->data[2]['form']['wp_table_prefix']['value'] ) ) { + $bb->wp_table_prefix = $this->data[2]['form']['wp_table_prefix']['value']; + } + if ( !empty( $this->data[2]['form']['user_bbdb_name']['value'] ) ) { + $bb->user_bbdb_name = $this->data[2]['form']['user_bbdb_name']['value']; + } + if ( !empty( $this->data[2]['form']['user_bbdb_user']['value'] ) ) { + $bb->user_bbdb_user = $this->data[2]['form']['user_bbdb_user']['value']; + } + if ( !empty( $this->data[2]['form']['user_bbdb_password']['value'] ) ) { + $bb->user_bbdb_password = $this->data[2]['form']['user_bbdb_password']['value']; + } + if ( !empty( $this->data[2]['form']['user_bbdb_host']['value'] ) ) { + $bb->user_bbdb_host = $this->data[2]['form']['user_bbdb_host']['value']; + } + if ( !empty( $this->data[2]['form']['user_bbdb_charset']['value'] ) ) { + $bb->user_bbdb_charset = preg_replace( '/[^a-z0-9_-]/i', '', $this->data[2]['form']['user_bbdb_charset']['value'] ); + } + if ( !empty( $this->data[2]['form']['user_bbdb_collate']['value'] ) ) { + $bb->user_bbdb_charset = preg_replace( '/[^a-z0-9_-]/i', '', $this->data[2]['form']['user_bbdb_collate']['value'] ); + } + if ( !empty( $this->data[2]['form']['custom_user_table']['value'] ) ) { + $bb->custom_user_table = preg_replace( '/[^a-z0-9_-]/i', '', $this->data[2]['form']['custom_user_table']['value'] ); + } + if ( !empty( $this->data[2]['form']['custom_user_meta_table']['value'] ) ) { + $bb->custom_user_meta_table = preg_replace( '/[^a-z0-9_-]/i', '', $this->data[2]['form']['custom_user_meta_table']['value'] ); + } + + global $bbdb; + global $bb_table_prefix; + + // Resolve the custom user tables for bpdb + bb_set_custom_user_tables(); + + if ( isset( $bb->custom_databases ) && isset( $bb->custom_databases['user'] ) ) { + $bbdb->add_db_server( 'user', $bb->custom_databases['user'] ); + } + + // Add custom tables if required + if ( isset( $bb->custom_tables['users'] ) || isset( $bb->custom_tables['usermeta'] ) ) { + $bbdb->tables = array_merge( $bbdb->tables, $bb->custom_tables ); + if ( is_wp_error( $bbdb->set_prefix( $bb_table_prefix ) ) ) { + die( __( 'Your user table prefix may only contain letters, numbers and underscores.' ) ); + } + } + + $bb_keymaster_meta_key = $bbdb->escape( $bb_table_prefix . 'capabilities' ); + $wp_administrator_meta_key = $bbdb->escape( $bb->wp_table_prefix . 'capabilities' ); + if ( !empty( $this->data[2]['form']['wordpress_mu_primary_blog_id']['value'] ) ) { + $wp_administrator_meta_key = $bb->wp_table_prefix . $this->data[2]['form']['wordpress_mu_primary_blog_id']['value'] . '_capabilities'; + } + + $keymaster_query = <<users + LEFT JOIN + $bbdb->usermeta ON + $bbdb->users.ID = $bbdb->usermeta.user_id + WHERE + ( + ( + meta_key = '$wp_administrator_meta_key' AND + meta_value LIKE '%administrator%' + ) OR + ( + meta_key = '$bb_keymaster_meta_key' AND + meta_value LIKE '%keymaster%' + ) + ) AND + user_email IS NOT NULL AND + user_email != '' + ORDER BY + user_login; +EOQ; + $bbdb->suppress_errors(); + + if ( $keymasters = $bbdb->get_results( $keymaster_query, ARRAY_A ) ) { + + $bbdb->suppress_errors( false ); + + if ( count( $keymasters ) ) { + $email_maps = ''; + $data['options'] = array(); + $data['onchange'] = 'changeKeymasterEmail( this, \'keymaster_user_email\' );'; + $data['note'] = __( 'Please select an existing bbPress Keymaster or WordPress administrator.' ); + + $data['options'][''] = ''; + foreach ( $keymasters as $keymaster ) { + $email_maps .= 'emailMap[\'' . $keymaster['user_login'] . '\'] = \'' . $keymaster['user_email'] . '\';' . "\n\t\t\t\t\t\t\t\t"; + if ( $keymaster['display_name'] ) { + $data['options'][$keymaster['user_login']] = $keymaster['user_login'] . ' (' . $keymaster['display_name'] . ')'; + } else { + $data['options'][$keymaster['user_login']] = $keymaster['user_login']; + } + } + + $this->strings[3]['scripts']['changeKeymasterEmail'] = << + function changeKeymasterEmail( selectObj, target ) { + var emailMap = new Array; + emailMap[''] = ''; + $email_maps + var targetObj = document.getElementById( target ); + var selectedAdmin = selectObj.options[selectObj.selectedIndex].value; + targetObj.value = emailMap[selectedAdmin]; + } + +EOS; + + $this->data[3]['form']['keymaster_user_type']['value'] = 'old'; + + return true; + } + } + + $bbdb->suppress_errors( false ); + + return false; + } + + /** + * Sends HTTP headers and prints the page header. + * + * @return void + **/ + function header() + { + nocache_headers(); + + bb_install_header( $this->strings[$this->step]['title'], $this->strings[$this->step]['h1'], true ); + } + + /** + * Prints the page footer. + * + * @return void + **/ + function footer() + { + bb_install_footer(); + } + + /** + * Prints the returned messages for the current step. + * + * @return void + **/ + function messages() + { + if ( isset( $this->strings[$this->step]['messages'] ) ) { + $messages = $this->strings[$this->step]['messages']; + + // This count works as long as $messages is only two-dimensional + $count = ( count( $messages, COUNT_RECURSIVE ) - count( $messages ) ); + $i = 0; + $r = ''; + foreach ( $messages as $type => $paragraphs ) { + $class = $type ? $type : ''; + + foreach ( $paragraphs as $paragraph ) { + $i++; + $class = ( $i === $count ) ? ( $class . ' last' ) : $class; + $r .= '

    ' . $paragraph . '

    ' . "\n"; + } + } + echo $r; + } + } + + /** + * Prints the introduction paragraphs for the current step. + * + * @return void + **/ + function intro() + { + if ( 'incomplete' == $this->step_status[$this->step] && isset( $this->strings[$this->step]['intro'] ) ) { + $messages = $this->strings[$this->step]['intro']; + $count = count( $messages ); + $i = 0; + $r = ''; + foreach ( $messages as $paragraph ) { + $i++; + $class = ( $i === $count ) ? 'intro last' : 'intro'; + $r .= '

    ' . $paragraph . '

    ' . "\n"; + } + echo $r; + } + } + + /** + * Prints the standard header for each step. + * + * @param integer $step The number of the step whose header should be printed. + * @return void + **/ + function step_header( $step ) + { + $class = ( $step == $this->step ) ? 'open' : 'closed'; + + $r = '
    ' . "\n"; + $r .= '

    ' . $this->strings[$step]['h2'] . '

    ' . "\n"; + $r .= '
    ' . "\n"; + + if ( $step < $this->step && $this->strings[$step]['status'] ) { + $r .= '

    ' . $this->strings[$step]['status'] . '

    ' . "\n"; + } + + echo $r; + + if ( $step == $this->step ) { + $this->intro(); + } + + $this->tabindex = 0; + } + + /** + * Prints the standard step footer. + * + * @return void + **/ + function step_footer() + { + $r = '
    ' . "\n"; + + echo $r; + } +} // END class BB_Install diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/defaults.bb-htaccess.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/defaults.bb-htaccess.php new file mode 100644 index 0000000..25a3f8e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/defaults.bb-htaccess.php @@ -0,0 +1,46 @@ + +RewriteEngine On +RewriteBase %PATH% + +RewriteRule ^page/([0-9]+)/?$ %PATH%index.php?page=$1 [L,QSA] +RewriteRule ^forum/([^/]+)/page/([0-9]+)/?$ %PATH%forum.php?id=$1&page=$2 [L,QSA] +RewriteRule ^forum/([^/]+)/?$ %PATH%forum.php?id=$1 [L,QSA] +RewriteRule ^forum/?$ %PATH% [R=302,L,QSA] +RewriteRule ^topic/([^/]+)/page/([0-9]+)/?$ %PATH%topic.php?id=$1&page=$2 [L,QSA] +RewriteRule ^topic/([^/]+)/?$ %PATH%topic.php?id=$1 [L,QSA] +RewriteRule ^topic/?$ %PATH% [R=302,L,QSA] +RewriteRule ^tags/([^/]+)/page/([0-9]+)/?$ %PATH%tags.php?tag=$1&page=$2 [L,QSA] +RewriteRule ^tags/([^/]+)/?$ %PATH%tags.php?tag=$1 [L,QSA] +RewriteRule ^tags/?$ %PATH%tags.php [L,QSA] +RewriteRule ^profile/([^/]+)/page/([0-9]+)/?$ %PATH%profile.php?id=$1&page=$2 [L,QSA] +RewriteRule ^profile/([^/]+)/([^/]+)/?$ %PATH%profile.php?id=$1&tab=$2 [L,QSA] +RewriteRule ^profile/([^/]+)/([^/]+)/page/([0-9]+)/?$ %PATH%profile.php?id=$1&tab=$2&page=$3 [L,QSA] +RewriteRule ^profile/([^/]+)/?$ %PATH%profile.php?id=$1 [L,QSA] +RewriteRule ^profile/?$ %PATH%profile.php [L,QSA] +RewriteRule ^view/([^/]+)/page/([0-9]+)/?$ %PATH%view.php?view=$1&page=$2 [L,QSA] +RewriteRule ^view/([^/]+)/?$ %PATH%view.php?view=$1 [L,QSA] +RewriteRule ^rss/?$ %PATH%rss.php [L,QSA] +RewriteRule ^rss/topics/?$ %PATH%rss.php?topics=1 [L,QSA] +RewriteRule ^rss/forum/([^/]+)/?$ %PATH%rss.php?forum=$1 [L,QSA] +RewriteRule ^rss/forum/([^/]+)/topics/?$ %PATH%rss.php?forum=$1&topics=1 [L,QSA] +RewriteRule ^rss/topic/([^/]+)/?$ %PATH%rss.php?topic=$1 [L,QSA] +RewriteRule ^rss/tags/([^/]+)/?$ %PATH%rss.php?tag=$1 [L,QSA] +RewriteRule ^rss/tags/([^/]+)/topics/?$ %PATH%rss.php?tag=$1&topics=1 [L,QSA] +RewriteRule ^rss/profile/([^/]+)/?$ %PATH%rss.php?profile=$1 [L,QSA] +RewriteRule ^rss/view/([^/]+)/?$ %PATH%rss.php?view=$1 [L,QSA] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^.*$ %PATH%index.php [L] + + +# END bbPress +EOF; + +$_rules = str_replace( '%PATH%', bb_get_option( 'path' ), $_rules ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/defaults.bb-schema.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/defaults.bb-schema.php new file mode 100644 index 0000000..2e9d26f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/defaults.bb-schema.php @@ -0,0 +1,235 @@ +forums` ( + `forum_id` int(10) NOT NULL auto_increment, + `forum_name` varchar(150) NOT NULL default '', + `forum_slug` varchar(255) NOT NULL default '', + `forum_desc` text NOT NULL, + `forum_parent` int(10) NOT NULL default 0, + `forum_order` int(10) NOT NULL default 0, + `topics` bigint(20) NOT NULL default 0, + `posts` bigint(20) NOT NULL default 0, + PRIMARY KEY (`forum_id`), + KEY `forum_slug` (`forum_slug`) +);"; + +// meta +$bb_queries['meta'] = "CREATE TABLE IF NOT EXISTS `$bbdb->meta` ( + `meta_id` bigint(20) NOT NULL auto_increment, + `object_type` varchar(16) NOT NULL default 'bb_option', + `object_id` bigint(20) NOT NULL default 0, + `meta_key` varchar(255) default NULL, + `meta_value` longtext default NULL, + PRIMARY KEY (`meta_id`), + KEY `object_type__meta_key` (`object_type`, `meta_key`), + KEY `object_type__object_id__meta_key` (`object_type`, `object_id`, `meta_key`) +);"; + +// posts +$bb_queries['posts'] = "CREATE TABLE IF NOT EXISTS `$bbdb->posts` ( + `post_id` bigint(20) NOT NULL auto_increment, + `forum_id` int(10) NOT NULL default 1, + `topic_id` bigint(20) NOT NULL default 1, + `poster_id` int(10) NOT NULL default 0, + `post_text` text NOT NULL, + `post_time` datetime NOT NULL default '0000-00-00 00:00:00', + `poster_ip` varchar(15) NOT NULL default '', + `post_status` tinyint(1) NOT NULL default 0, + `post_position` bigint(20) NOT NULL default 0, + PRIMARY KEY (`post_id`), + KEY `topic_time` (`topic_id`, `post_time`), + KEY `poster_time` (`poster_id`, `post_time`), + KEY `post_time` (`post_time`), + FULLTEXT KEY `post_text` (`post_text`) +) ENGINE = MYISAM;"; + +// terms +$bb_queries['terms'] = "CREATE TABLE IF NOT EXISTS `$bbdb->terms` ( + `term_id` bigint(20) NOT NULL auto_increment, + `name` varchar(55) NOT NULL default '', + `slug` varchar(200) NOT NULL default '', + `term_group` bigint(10) NOT NULL default 0, + PRIMARY KEY (`term_id`), + UNIQUE KEY `slug` (`slug`), + KEY name (name) +);"; + +// term_relationships +$bb_queries['term_relationships'] = "CREATE TABLE IF NOT EXISTS `$bbdb->term_relationships` ( + `object_id` bigint(20) NOT NULL default 0, + `term_taxonomy_id` bigint(20) NOT NULL default 0, + `user_id` bigint(20) NOT NULL default 0, + `term_order` int(11) NOT NULL default 0, + PRIMARY KEY (`object_id`, `term_taxonomy_id`), + KEY `term_taxonomy_id` (`term_taxonomy_id`) +);"; + +// term_taxonomy +$bb_queries['term_taxonomy'] = "CREATE TABLE IF NOT EXISTS `$bbdb->term_taxonomy` ( + `term_taxonomy_id` bigint(20) NOT NULL auto_increment, + `term_id` bigint(20) NOT NULL default 0, + `taxonomy` varchar(32) NOT NULL default '', + `description` longtext NOT NULL, + `parent` bigint(20) NOT NULL default 0, + `count` bigint(20) NOT NULL default 0, + PRIMARY KEY (`term_taxonomy_id`), + UNIQUE KEY `term_id_taxonomy` (`term_id`, `taxonomy`), + KEY `taxonomy` (`taxonomy`) +);"; + +// topics +$bb_queries['topics'] = "CREATE TABLE IF NOT EXISTS `$bbdb->topics` ( + `topic_id` bigint(20) NOT NULL auto_increment, + `topic_title` varchar(100) NOT NULL default '', + `topic_slug` varchar(255) NOT NULL default '', + `topic_poster` bigint(20) NOT NULL default 0, + `topic_poster_name` varchar(40) NOT NULL default 'Anonymous', + `topic_last_poster` bigint(20) NOT NULL default 0, + `topic_last_poster_name` varchar(40) NOT NULL default '', + `topic_start_time` datetime NOT NULL default '0000-00-00 00:00:00', + `topic_time` datetime NOT NULL default '0000-00-00 00:00:00', + `forum_id` int(10) NOT NULL default 1, + `topic_status` tinyint(1) NOT NULL default 0, + `topic_open` tinyint(1) NOT NULL default 1, + `topic_last_post_id` bigint(20) NOT NULL default 1, + `topic_sticky` tinyint(1) NOT NULL default 0, + `topic_posts` bigint(20) NOT NULL default 0, + `tag_count` bigint(20) NOT NULL default 0, + PRIMARY KEY (`topic_id`), + KEY `topic_slug` (`topic_slug`), + KEY `forum_time` (`forum_id`, `topic_time`), + KEY `user_start_time` (`topic_poster`, `topic_start_time`), + KEY `stickies` (`topic_status`, `topic_sticky`, `topic_time`) +);"; + +if ( bb_get_option( 'wp_table_prefix' ) || ( defined( 'BB_SCHEMA_IGNORE_WP_USERS_TABLES' ) && BB_SCHEMA_IGNORE_WP_USERS_TABLES ) ) { + // Don't add user tables +} else { + // users - 'user_login', 'user_nicename' and 'user_registered' indices are inconsistent with WordPress + $bb_queries['users'] = "CREATE TABLE IF NOT EXISTS `$bbdb->users` ( + `ID` bigint(20) unsigned NOT NULL auto_increment, + `user_login` varchar(60) NOT NULL default '', + `user_pass` varchar(64) NOT NULL default '', + `user_nicename` varchar(50) NOT NULL default '', + `user_email` varchar(100) NOT NULL default '', + `user_url` varchar(100) NOT NULL default '', + `user_registered` datetime NOT NULL default '0000-00-00 00:00:00', + `user_status` int(11) NOT NULL default 0, + `display_name` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + UNIQUE KEY `user_login` (`user_login`), + UNIQUE KEY `user_nicename` (`user_nicename`), + KEY `user_registered` (`user_registered`) + );"; + + // usermeta + $bb_queries['usermeta'] = "CREATE TABLE IF NOT EXISTS `$bbdb->usermeta` ( + `umeta_id` bigint(20) NOT NULL auto_increment, + `user_id` bigint(20) NOT NULL default 0, + `meta_key` varchar(255), + `meta_value` longtext, + PRIMARY KEY (`umeta_id`), + KEY `user_id` (`user_id`), + KEY `meta_key` (`meta_key`) + );"; +} + +$bb_queries = apply_filters( 'bb_schema_pre_charset', $bb_queries ); + +// Set the charset and collation on each table +foreach ($bb_queries as $_table_name => $_sql) { + // Skip SQL that isn't creating a table + if (!preg_match('@^\s*CREATE\s+TABLE\s+@im', $_sql)) { + continue; + } + + // Skip if the table's database doesn't support collation + if (!$bbdb->has_cap('collation', $bbdb->$_table_name)) { + continue; + } + + // Find out if the table has a custom database set + if ( + isset($bbdb->db_tables) && + is_array($bbdb->db_tables) && + isset($bbdb->db_tables[$bbdb->$_table_name]) + ) { + // Set the database for this table + $_database = $bbdb->db_tables[$bbdb->$_table_name]; + } else { + // Set the default global database + $_database = 'dbh_global'; + } + + // Make sure the database exists + if ( + isset($bbdb->db_servers) && + is_array($bbdb->db_servers) && + isset($bbdb->db_servers[$_database]) && + is_array($bbdb->db_servers[$_database]) + ) { + $_charset_collate = ''; + if (isset($bbdb->db_servers[$_database]['charset']) && !empty($bbdb->db_servers[$_database]['charset'])) { + // Add a charset if set + $_charset_collate .= ' DEFAULT CHARACTER SET \'' . $bbdb->db_servers[$_database]['charset'] . '\''; + } + if (isset($bbdb->db_servers[$_database]['collate']) && !empty($bbdb->db_servers[$_database]['collate'])) { + // Add a collation if set + $_charset_collate .= ' COLLATE \'' . $bbdb->db_servers[$_database]['collate'] . '\''; + } + if ($_charset_collate) { + // Modify the SQL + $bb_queries[$_table_name] = str_replace(';', $_charset_collate . ';', $_sql); + } + } + unset($_database, $_charset_collate); +} +unset($_table_name, $_sql); + +$bb_queries = apply_filters( 'bb_schema', $bb_queries ); + +// These elements in the schema may need to be ignored when doing comparisons due to inconsistencies with WordPress +if ( bb_get_option('wp_table_prefix') || ( defined( 'BB_SCHEMA_IGNORE_WP_USERS_KEYS' ) && BB_SCHEMA_IGNORE_WP_USERS_KEYS ) ) { + $bb_schema_ignore = array( + 'tables' => array(), + 'columns' => array(), + 'indices' => array( + $bbdb->users => array( + 'user_login', + 'user_nicename', + 'user_registered' + ) + ) + ); +} else { + $bb_schema_ignore = false; +} + +if ( bb_get_option('wp_table_prefix') || ( defined( 'BB_SCHEMA_IGNORE_WP_USERS_TABLES' ) && BB_SCHEMA_IGNORE_WP_USERS_TABLES ) ) { + if ( $bb_schema_ignore ) { + $bb_schema_ignore['tables'] = array( $bbdb->users, $bbdb->usermeta ); + } else { + $bb_schema_ignore = array( + 'tables' => array( $bbdb->users, $bbdb->usermeta ), + 'columns' => array(), + 'indices' => array() + ); + } +} + +$bb_schema_ignore = apply_filters( 'bb_schema_ignore', $bb_schema_ignore ); + +do_action( 'bb_schema_defined' ); + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/functions.bb-admin.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/functions.bb-admin.php new file mode 100644 index 0000000..e3594f9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/functions.bb-admin.php @@ -0,0 +1,1731 @@ +' . $message . '

    '; + $class = $class ? $class : 'updated'; + } elseif ( is_wp_error( $message ) ) { + $errors = $message->get_error_messages(); + switch ( count( $errors ) ) { + case 0: + return false; + break; + case 1: + $message = '

    ' . $errors[0] . '

    '; + break; + default: + $message = '
      ' . "\n\t" . '
    • ' . join( '
    • ' . "\n\t" . '
    • ', $errors ) . '
    • ' . "\n" . '
    '; + break; + } + $class = $class ? $class : 'error'; + } else { + return false; + } + + $message = '
    ' . $message . '
    '; + $message = str_replace( "'", "\'", $message ); + $lambda = create_function( '', "echo '$message';" ); + add_action( 'bb_admin_notices', $lambda ); + return $lambda; +} + +/* Menu */ + +function bb_admin_menu_generator() +{ + global $bb_menu, $bb_submenu; + $bb_menu = array(); + $bb_submenu = array(); + + // Dashboard menu items < 50 + $bb_menu[0] = array( __( 'Dashboard' ), 'moderate', 'index.php', '', 'bb-menu-dashboard' ); + $bb_submenu['index.php'][5] = array( __( 'Dashboard' ), 'moderate', 'index.php' ); + + // 50 < Plugin added menu items < 100 + + $bb_menu[100] = array( '', 'read', 'separator' ); + + // 100 < Plugin added menu items < 150 + + // 150 < First menu items < 200 + $bb_menu[150] = array( __( 'Forums' ), 'manage_forums', 'forums.php', '', 'bb-menu-forums' ); + $bb_submenu['forums.php'][5] = array( __( 'Forums' ), 'manage_forums', 'forums.php' ); + $bb_menu[155] = array( __( 'Topics' ), 'moderate', 'topics.php', '', 'bb-menu-topics' ); + $bb_submenu['topics.php'][5] = array( __( 'Topics' ), 'moderate', 'topics.php' ); + $bb_menu[160] = array( __( 'Posts' ), 'moderate', 'posts.php', '', 'bb-menu-posts' ); + $bb_submenu['posts.php'][5] = array( __( 'Posts' ), 'moderate', 'posts.php' ); + + // 200 < Plugin added menu items < 250 + + $bb_menu[250] = array( '', 'read', 'separator' ); + + // 250 < Plugin added menu items < 300 + + // 300 < Second menu items < 350 + $bb_menu[300] = array( __( 'Appearance' ), 'manage_themes', 'themes.php', '', 'bb-menu-appearance' ); + $bb_submenu['themes.php'][5] = array(__('Themes'), 'manage_themes', 'themes.php'); + $bb_menu[305] = array( __( 'Plugins' ), 'use_keys', 'plugins.php', '', 'bb-menu-plugins' ); + $bb_submenu['plugins.php'][5] = array( __( 'Installed' ), 'manage_plugins', 'plugins.php' ); + $bb_menu[310] = array( __( 'Users' ), 'moderate', 'users.php', '', 'bb-menu-users' ); + $bb_submenu['users.php'][5] = array( __( 'Users' ), 'moderate', 'users.php' ); + $bb_submenu['users.php'][10] = array( __( 'Add New' ), 'manage_options', 'user-add-new.php' ); + $bb_menu[315] = array( __( 'Tools' ), 'recount', 'tools-recount.php', '', 'bb-menu-tools' ); + $bb_submenu['tools-recount.php'][5] = array( __( 'Re-count' ), 'recount', 'tools-recount.php' ); + $bb_menu[320] = array( __( 'Settings' ), 'manage_options', 'options-general.php', '', 'bb-menu-settings' ); + $bb_submenu['options-general.php'][5] = array( __( 'General' ), 'manage_options', 'options-general.php' ); + //$bb_submenu['options-general.php'][10] = array( __( 'Date and Time' ), 'manage_options', 'options-time.php' ); + $bb_submenu['options-general.php'][15] = array( __( 'Writing' ), 'manage_options', 'options-writing.php' ); + $bb_submenu['options-general.php'][20] = array( __( 'Reading' ), 'manage_options', 'options-reading.php' ); + $bb_submenu['options-general.php'][25] = array( __( 'Discussion' ), 'manage_options', 'options-discussion.php' ); + $bb_submenu['options-general.php'][30] = array( __( 'Permalinks' ), 'manage_options', 'options-permalinks.php' ); + $bb_submenu['options-general.php'][35] = array( __( 'WordPress Integration' ), 'manage_options', 'options-wordpress.php' ); + + // 350 < Plugin added menu items + + do_action( 'bb_admin_menu_generator' ); + ksort( $bb_menu ); + + $last_key = false; + foreach ( $bb_menu as $key => $m ) { + if ( $last_key === false || $bb_menu[$last_key][2] === 'separator' ) { + $bb_menu[$key][3] .= ' bb-menu-first'; + } + if ( $bb_menu[$key][2] === 'separator' ) { + $bb_menu[$last_key][3] .= ' bb-menu-last'; + } + $last_key = $key; + if ( isset( $bb_submenu[$m[2]] ) ) { + ksort( $bb_submenu[$m[2]] ); + } + } + $bb_menu[$last_key][3] .= ' bb-menu-last'; +} + +function bb_admin_add_menu( $display_name, $capability, $file_name, $menu_position = false, $class = '', $id = '' ) +{ + global $bb_menu; + global $bb_registered_plugin_callbacks; + if ( empty( $bb_registered_plugin_callbacks ) ) { + $bb_registered_plugin_callbacks = array(); + } + + if ( $display_name && $capability && $file_name ) { + // Get an array of the keys + $menu_keys = array_keys( $bb_menu ); + + if ( $menu_position ) { + if ( is_numeric( $menu_position ) ) { + if ( !isset( $bb_menu[$menu_position] ) ) { + $plugin_menu_next = $menu_position; + } else { + return bb_admin_add_menu( $display_name, $capability, $file_name, ( $menu_position + 1 ), $class, $id ); + } + } else { + // Set the bounds for different menu groups (main or side) + switch ( $menu_position ) { + case 'dash': + $lower = 50; + $upper = 100; + break; + case 'main': + $lower = 200; + $upper = 250; + break; + default: + $lower = 350; + $upper = 500; + break; + } + + // Get an array of all plugin added keys + $plugin_menu_keys = array_filter( $menu_keys, create_function( '$v', 'if ($v >= ' . $lower . ' && $v < ' . $upper . ') { return $v; }' ) ); + + // If there is an array of keys + if ( is_array( $plugin_menu_keys ) && count( $plugin_menu_keys ) ) { + // Get the highest key value and add one + $plugin_menu_next = max( $plugin_menu_keys ) + 1; + } else { + // It's the first one + $plugin_menu_next = $lower; + } + } + } else { + $plugin_menu_next = max( array_keys( $bb_menu ) ) + 1; + $bb_menu[$plugin_menu_next] = array( '', 'read', 'separator' ); + $plugin_menu_next++; + } + + if ( strpos( $file_name, '.php' ) === false ) { + $bb_registered_plugin_callbacks[] = $file_name; + } + + // Add the menu item at the given key + $bb_menu[$plugin_menu_next] = array( $display_name, $capability, $file_name, $class, $id ); + + ksort( $bb_menu ); + + return $plugin_menu_next; + } + + return false; +} + +function bb_admin_add_submenu( $display_name, $capability, $file_name, $parent = 'plugins.php' ) +{ + global $bb_submenu; + global $bb_registered_plugin_callbacks; + if ( empty( $bb_registered_plugin_callbacks ) ) { + $bb_registered_plugin_callbacks = array(); + } + + if ( $display_name && $capability && $file_name ) { + if ( strpos( $file_name, '.php' ) === false ) { + $bb_registered_plugin_callbacks[] = $file_name; + } + $bb_submenu[$parent][] = array( $display_name, $capability, $file_name ); + ksort( $bb_submenu ); + } +} + +function bb_get_current_admin_menu() +{ + global $bb_menu, $bb_submenu, $bb_admin_page, $bb_current_menu, $bb_current_submenu; + foreach ( $bb_submenu as $m => $b ) { + foreach ( $b as $s ) { + if ( $s[2] == $bb_admin_page ) { + $bb_current_submenu = $s; + $bb_current_menu = $m; + break; + } + } + } + if ( !isset($bb_current_menu) ) { + $bb_current_menu = $bb_menu[0]; + $bb_current_submenu = $bb_submenu['index.php'][5]; + } else { + foreach ( $bb_menu as $m ) { + if ( $m[2] == $bb_current_menu ) { + $bb_current_menu = $m; + break; + } + } + } + if ( $bb_current_submenu && !bb_current_user_can( $bb_current_submenu[1] ) || !bb_current_user_can( $bb_current_menu[1] ) ) { + wp_redirect( bb_get_uri(null, null, BB_URI_CONTEXT_HEADER) ); + exit; + } +} + +function bb_admin_title() +{ + global $bb_current_menu, $bb_current_submenu; + + $title = $bb_current_menu[0] . ' ‹ ' . bb_get_option( 'name' ) . ' — ' . __( 'bbPress' ); + + if ( $bb_current_submenu && $bb_current_submenu[0] !== $bb_current_menu[0] ) { + $title = $bb_current_submenu[0] . ' ‹ ' . $title; + } + + echo esc_html( $title ); +} + +function bb_admin_menu() +{ + global $bb_menu, $bb_submenu, $bb_current_menu, $bb_current_submenu; + + if ( !is_array( $bb_menu ) || !count( $bb_menu ) ) { + return ''; + } + + $r = "\t\t\t" . '
      ' . "\n"; + + foreach ( $bb_menu as $key => $m ) { + if ( !bb_current_user_can( $m[1] ) ) { + continue; + } + $class = 'bb-menu'; + if ( isset( $m[3] ) ) { + $class .= ' ' . $m[3]; + } + $id = ''; + if ( isset( $m[4] ) ) { + $id .= ' id="' . $m[4] . '"'; + } + $m[0] = esc_html( $m[0] ); + if ( $m[2] === 'separator' ) { + if ( 'f' == bb_get_user_setting( 'fm' ) ) { + $href = '?foldmenu=0'; + } else { + $href = '?foldmenu=1'; + } + $m[0] = '
      '; + $class .= ' bb-menu-separator'; + } elseif ( strpos( $m[2], 'http://' ) === 0 || strpos( $m[2], 'https://' ) === 0 ) { + $href = esc_url( $m[2] ); + $class .= ' bb-menu-external'; + } else { + $href = esc_url( bb_get_option( 'path' ) . 'bb-admin/' . bb_get_admin_tab_link( $m[2] ) ); + } + if ( $m[2] == $bb_current_menu[2] ) { + $class .= ' bb-menu-current'; + } + + $sr = ''; + if ( $m[2] !== 'separator' && isset( $bb_submenu[$m[2]] ) && is_array( $bb_submenu[$m[2]] ) && count( $bb_submenu[$m[2]] ) ) { + $sr .= "\t\t\t\t\t" . '
      ' . $m[0] . '' . "\n"; + $sr .= "\t\t\t\t\t\t" . '
        ' . "\n"; + $sc = 0; + foreach ( $bb_submenu[$m[2]] as $skey => $sm ) { + if ( !bb_current_user_can( $sm[1] ) ) { + continue; + } + if ( $sc === 0 && $sm[2] === $m[2] ) { + $no_submenu = true; + } + if ( $sc > 0 ) { + $no_submenu = false; + } + $sc++; + $sclass = 'bb-menu-sub'; + if ( isset( $sm[3] ) ) { + $sclass .= ' ' . $sm[3]; + } + if ( strpos( $sm[2], 'http://' ) === 0 || strpos( $sm[2], 'https://' ) === 0 ) { + $shref = $sm[2]; + $sclass .= ' bb-menu-external'; + } else { + $shref = bb_get_option( 'path' ) . 'bb-admin/' . bb_get_admin_tab_link( $sm[2] ); + } + if ( $sm[2] == $bb_current_submenu[2] ) { + $sclass .= ' bb-menu-sub-current'; + } + $sr .= "\t\t\t\t\t\t\t" . '
      • ' . esc_html( $sm[0] ) . '
      • ' . "\n"; + } + $sr .= "\t\t\t\t\t\t" . '
      ' . "\n"; + $sr .= "\t\t\t\t\t" . '
      ' . "\n"; + } + + if ( $sr && !$no_submenu ) { + $class .= ' bb-menu-has-submenu'; + if ( $m[2] == $bb_current_menu[2] ) { + $class .= ' bb-menu-open'; + } + } + + $r .= "\t\t\t\t" . ''; + + if ( $m[2] !== 'separator' ) { + $r .= '
      '; + } + + $r .= '' . $m[0] . '
      ' . "\n"; + + if ( $sr && !$no_submenu ) { + $r .= '
      '; + $r .= $sr; + } + + $r .= "\t\t\t\t" . '' . "\n"; + } + + $r .= "\t\t\t" . '
    ' . "\n"; + + echo $r; +} + +function bb_get_admin_tab_link( $tab ) +{ + if ( is_array( $tab ) ) { + $tab = $tab[2]; + } + if ( strpos( $tab, '.php' ) !== false ) { + return $tab; + } else { + return 'admin-base.php?plugin=' . $tab; + } +} + +/* Stats */ + +function bb_get_recently_moderated_objects( $num = 5 ) { + $post_query = new BB_Query( 'post', array( 'per_page' => $num, 'post_status' => '-normal', 'topic_status' => 0 ) ); // post_time != moderation_time; + $topic_query = new BB_Query( 'topic', array( 'per_page' => $num, 'topic_status' => '-normal' ) ); // topic_time == topic_start_time != moderation_time; + + $objects = array(); + if ( $post_query->results ) + foreach ( array_keys($post_query->results) as $key ) + $objects[bb_gmtstrtotime($post_query->results[$key]->post_time)] = array('type' => 'post', 'data' => $post_query->results[$key]); + if ( $topic_query->results ) + foreach ( array_keys($topic_query->results) as $key ) + $objects[bb_gmtstrtotime($topic_query->results[$key]->topic_time)] = array('type' => 'topic', 'data' => $topic_query->results[$key]); + krsort($objects); + return array_slice($objects, 0, $num); +} + +/* Users */ + +function bb_manage_user_fields( $edit_user = '' ) { + global $wp_roles, $wp_users_object, $bbdb; + + // Cap checks + $user_roles = $wp_roles->role_names; + $can_keep_gate = bb_current_user_can( 'keep_gate' ); + + if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) ) { + + bb_check_admin_referer( 'user-manage' ); + + // Instantiate required vars + $_POST = stripslashes_deep( $_POST ); + $create_user_errors = new WP_Error; + + // User login + $trimmed_user_login = str_replace( ' ', '', $_POST['user_login'] ); + $user_login = sanitize_user( $_POST['user_login'], true ); + $user_meta['first_name'] = $_POST['first_name']; + $user_meta['last_name'] = $_POST['last_name']; + $user_display_name = $_POST['display_name']; + $user_email = $_POST['user_email']; + $user_url = $_POST['user_url']; + $user_meta['from'] = $_POST['from']; + $user_meta['occ'] = $_POST['occ']; + $user_meta['interest'] = $_POST['interest']; + $user_role = $_POST['userrole']; + $user_meta['throttle'] = $_POST['throttle']; + $user_pass1 = $_POST['pass1']; + $user_pass2 = $_POST['pass2']; + $user_status = 0; + $user_pass = false; + $user_url = $user_url ? bb_fix_link( $user_url ) : ''; + + // Check user_login + if ( !isset( $_GET['action'] ) && empty( $user_login ) ) { + $create_user_errors->add( 'user_login', __( 'Username is a required field.' ) ); + } else { + if ( $user_login !== $trimmed_user_login ) { + $create_user_errors->add( 'user_login', sprintf( __( '%s is an invalid username. How\'s this one?' ), esc_html( $_POST['user_login'] ) ) ); + $user_login = $trimmed_user_login; + } + } + + // Check email + if ( isset( $user_email ) && empty( $user_email ) ) + $create_user_errors->add( 'user_email', __( 'Email address is a required field.' ) ); + + // Password Sanity Check + if ( ( !empty( $user_pass1 ) || !empty( $user_pass2 ) ) && $user_pass1 !== $user_pass2 ) + $create_user_errors->add( 'pass', __( 'You must enter the same password twice.' ) ); + elseif ( !isset( $_GET['action'] ) && ( empty( $user_pass1 ) && empty( $user_pass2 ) ) ) + $create_user_errors->add( 'pass', __( 'You must enter a password.' ) ); + elseif ( isset( $_GET['action'] ) && ( empty( $user_pass1 ) && empty( $user_pass2 ) ) ) + $user_pass = ''; + else + $user_pass = $user_pass1; + + // No errors + if ( !$create_user_errors->get_error_messages() ) { + + // Create or udpate + switch ( $_POST['action'] ) { + case 'create' : + $goback = bb_get_uri( 'bb-admin/users.php', array( 'created' => 'true' ), BB_URI_CONTEXT_FORM_ACTION + BB_URI_CONTEXT_BB_ADMIN ); + $user = $wp_users_object->new_user( compact( 'user_login', 'user_email', 'user_url', 'user_nicename', 'user_status', 'user_pass' ) ); + + // Error handler + if ( is_wp_error( $user ) ) { + bb_admin_notice( $user ); + unset( $goback ); + + // Update additional user data + } else { + // Update caps + bb_update_usermeta( $user['ID'], $bbdb->prefix . 'capabilities', array( $user_role => true ) ); + + // Update all user meta + foreach ( $user_meta as $key => $value ) + bb_update_usermeta( $user['ID'], $key, $value ); + + // Don't send email if empty + if ( !empty( $user_pass ) ) + bb_send_pass( $user['ID'], $user_pass ); + + do_action( 'bb_new_user', $user['ID'], $user_pass ); + } + + break; + + case 'update' : + $goback = bb_get_uri( 'bb-admin/users.php', array( 'updated' => 'true' ), BB_URI_CONTEXT_FORM_ACTION + BB_URI_CONTEXT_BB_ADMIN ); + $user = $wp_users_object->get_user( $_GET['user_id'], array( 'output' => ARRAY_A ) ); + bb_update_user( $user['ID'], $user_email, $user_url, $user_display_name ); + + // Don't change PW if empty + if ( !empty( $user_pass ) ) + bb_update_user_password( $user['ID'], $user_pass ); + + // Error handler + if ( is_wp_error( $user ) ) { + bb_admin_notice( $user ); + unset( $goback ); + + // Update additional user data + } else { + // Update caps + bb_update_usermeta( $user['ID'], $bbdb->prefix . 'capabilities', array( $user_role => true ) ); + + // Update all user meta + foreach ( $user_meta as $key => $value ) + bb_update_usermeta( $user['ID'], $key, $value ); + + // Don't send email if empty + if ( !empty( $user_pass ) ) + bb_send_pass( $user['ID'], $user_pass ); + + do_action( 'bb_update_user', $user['ID'], $user_pass ); + } + + break; + } + + // Redirect + if ( isset( $goback ) && !empty( $goback ) ) + bb_safe_redirect( $goback ); + + // Error handler + } else { + bb_admin_notice( $create_user_errors ); + } + } elseif ( isset( $_GET['action'] ) && $_GET['action'] == 'edit' ) { + if ( isset( $_GET['user_id'] ) && is_numeric( $_GET['user_id'] ) ) { + $disabled = true; + + // Get the user + if ( empty( $edit_user ) ) + $edit_user = bb_get_user( bb_get_user_id( $_GET['user_id'] ) ); + + // Instantiate required vars + $user_login = $edit_user->user_login; + $user_meta['first_name'] = $edit_user->first_name; + $user_meta['last_name'] = $edit_user->last_name; + $user_display_name = $edit_user->display_name; + $user_email = $edit_user->user_email; + $user_url = $edit_user->user_url; + $user_meta['from'] = $edit_user->from; + $user_meta['occ'] = $edit_user->occ; + $user_meta['interest'] = $edit_user->interest; + $user_role = array_search( 'true', $edit_user->capabilities ); + $user_meta['throttle'] = $edit_user->throttle; + + // Keymasters can't demote themselves + if ( ( $edit_user->ID == bb_get_current_user_info( 'id' ) && $can_keep_gate ) || ( isset( $edit_user->capabilities ) && is_array( $edit_user->capabilities ) && array_key_exists( 'keymaster', $edit_user->capabilities ) && !$can_keep_gate ) ) + $user_roles = array( 'keymaster' => $user_roles['keymaster'] ); + + // only keymasters can promote others to keymaster status + elseif ( !$can_keep_gate ) + unset( $user_roles['keymaster'] ); + } + } + + // Load password strength checker + wp_enqueue_script( 'password-strength-meter' ); + wp_enqueue_script( 'profile-edit' ); + + // Generate a few PW hints + $some_pass_hints = ''; + for ( $l = 3; $l != 0; $l-- ) + $some_pass_hints .= '

    ' . bb_generate_password() . '

    '; + + // Create the user fields + $user_fields = array( + 'user_login' => array( + 'title' => __( 'Username' ), + 'note' => __( 'Required! Unique identifier for new user.' ), + 'value' => $user_login, + 'disabled' => $disabled + ), + 'first_name' => array( + 'title' => __( 'First Name' ), + 'value' => $user_meta['first_name'] + ), + 'last_name' => array( + 'title' => __( 'Last Name' ), + 'value' => $user_meta['last_name'] + ), + 'display_name' => array( + 'title' => __( 'Display Name' ), + 'value' => $user_display_name + ), + 'user_email' => array( + 'title' => __( 'Email' ), + 'note' => __( 'Required! Will be used for notifications and profile settings changes.' ), + 'value' => $user_email + ), + 'user_url' => array( + 'title' => __( 'Website' ), + 'class' => array( 'long', 'code' ), + 'note' => __( 'The full URL of user\'s homepage or blog.' ), + 'value' => $user_url + ), + 'from' => array( + 'title' => __( 'Location' ), + 'class' => array( 'long' ), + 'value' => $user_meta['from'] + ), + 'occ' => array( + 'title' => __( 'Occupation' ), + 'class' => array( 'long' ), + 'value' => $user_meta['occ'] + ), + 'interest' => array( + 'title' => __( 'Interests' ), + 'class' => array( 'long' ), + 'value' => $user_meta['interest'] + ), + 'userrole' => array( + 'title' => __( 'User Role' ), + 'type' => 'select', + 'options' => $user_roles, + 'note' => __( 'Allow user the above privileges.' ), + 'value' => $user_role, + ), + 'pass1' => array( + 'title' => __( 'New Password' ), + 'type' => 'password', + 'class' => array( 'short', 'text', 'code' ), + 'note' => __( 'Hints: ' ) . $some_pass_hints, + 'value' => $user_pass1, + ), + 'pass2' => array( + 'title' => __( 'Repeat New Password' ), + 'type' => 'password', + 'class' => array( 'short', 'text', 'code' ), + 'note' => __( 'If you ignore hints, remember: the password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ & ).' ), + 'value' => $user_pass2, + ), + 'email_pass' => array( + 'title' => '', + 'type' => 'checkbox', + 'options' => array( + '1' => array( + 'label' => __( 'Email the new password.' ), + 'attributes' => array( 'checked' => true ) + ) + ), + ), + 'pass-strength-fake-input' => array( + 'title' => __( 'Password Strength' ), + 'type' => 'hidden', + ), + ); + + return apply_filters( 'bb_manage_user_fields', $user_fields ); +} + +// Not bbdb::prepared +function bb_get_ids_by_role( $role = 'moderator', $sort = 0, $page = 1, $limit = 50 ) { + global $bbdb, $bb_last_countable_query; + $sort = $sort ? 'DESC' : 'ASC'; + $key = $bbdb->escape( $bbdb->prefix . 'capabilities' ); + + if ( !$page = abs( (int) $page ) ) + $page = 1; + $limit = abs( (int) $limit ); + + $limit = ($limit * ($page - 1)) . ", $limit"; + + $role = $bbdb->escape_deep($role); + + if ( is_array($role) ) + $and_where = "( meta_value LIKE '%" . join("%' OR meta_value LIKE '%", $role) . "%' )"; + else + $and_where = "meta_value LIKE '%$role%'"; + $bb_last_countable_query = "SELECT user_id FROM $bbdb->usermeta WHERE meta_key = '$key' AND $and_where ORDER BY user_id $sort LIMIT $limit"; + + $ids = false; + + $_tuple = compact( 'ids', 'role', 'sort', 'page', 'key', 'limit', 'bb_last_countable_query' ); + $_tuple = apply_filters( 'bb_get_ids_by_role', $_tuple ); + extract( $_tuple, EXTR_OVERWRITE ); + + if ( !$ids ) { + $ids = (array) $bbdb->get_col( $bb_last_countable_query ); + } + + if ( $ids ) { + bb_cache_users( $ids ); + } + + return $ids; +} + +function bb_user_row( $user, $role = '', $email = false ) { + $actions = "" . __('View') . ""; + $title = ''; + if ( bb_current_user_can( 'edit_user', $user_id ) ) { + $actions .= " | " . __('Edit') . ""; + $title = " title='" . esc_attr( sprintf( __( 'User ID: %d' ), $user->ID ) ) . "'"; + } + $r = "\t\n"; + $r .= "\t\t" . bb_get_avatar( $user->ID, 32 ) . "" . get_user_name( $user->ID ) . "
    $actions 
    \n"; + $r .= "\t\t" . get_user_display_name( $user->ID ) . "\n"; + if ( $email ) { + $email = bb_get_user_email( $user->ID ); + $r .= "\t\t$email\n"; + } + + $registered_time = bb_gmtstrtotime( $user->user_registered ); + if ( $registered_time < ( time() - 86400 ) ) { + $time = date( 'Y/m/d\<\b\r \/\>H:i:s', bb_offset_time( $registered_time ) ); + } else { + $time = sprintf( __( '%s ago' ), bb_since( $registered_time ) ); + } + + $r .= "\t\t" . $time . "\n"; + + if ( + !isset($user->capabilities) || + !is_array($user->capabilities) || + empty($user->capabilities) + ) { + $role = array( __('Inactive (no role)') ); + } else { + global $wp_roles; + $_roles = $wp_roles->get_names(); + $role = array(); + foreach ( $user->capabilities as $cap => $cap_set ) { + if (!$cap_set) { + continue; + } + $role[] = $_roles[$cap]; + } + if ( !count( $role ) ) { + $role[] = __('None'); + } + } + + $r .= "\t\t" . join(', ', $role) . "\n\t"; + return $r; +} + +// BB_User_Search class +// by Mark Jaquith + +class BB_User_Search { + var $results; + var $search_term; + var $page; + var $raw_page; + var $users_per_page = 50; + var $first_user; + var $last_user; + var $query_limit; + var $total_users_for_query = 0; + var $search_errors; + var $paging_text; + var $paging_text_bottom; + + function BB_User_Search ($search_term = false, $page = 1, $roles = false ) { // constructor + $this->search_term = $search_term ? stripslashes($search_term) : false; + $this->raw_page = ( '' == $page ) ? false : (int) $page; + $page = (int) $page; + $this->page = $page < 2 ? 1 : $page; + $roles = (array) $roles; + $_roles = array(); + foreach ( $roles as $role ) { + if ( false !== $role ) { + $_roles[] = stripslashes( $role ); + } + } + $this->roles = empty( $_roles ) ? false : $_roles; + + $this->prepare_query(); + $this->query(); + $this->prepare_vars_for_template_usage(); + $this->do_paging(); + } + + function prepare_query() { + $this->first_user = ($this->page - 1) * $this->users_per_page; + } + + function query() { + $users = bb_user_search( array( + 'query' => $this->search_term, + 'user_email' => true, + 'users_per_page' => $this->users_per_page, + 'page' => $this->page, + 'roles' => $this->roles + ) ); + + if ( is_wp_error($users) ) + $this->search_errors = $users; + else if ( $users ) + $this->results = $users; + // foreach ( (array) $users as $user ) + // $this->results[] = $user->ID; + + if ( $this->results ) + $this->total_users_for_query = bb_count_last_query(); + elseif ( !is_wp_error($this->search_errors) ) + $this->search_errors = new WP_Error( 'no_matching_users_found', __( 'No matching users were found!' ) ); + + if ( is_wp_error( $this->search_errors ) ) + bb_admin_notice( $this->search_errors ); + } + + function prepare_vars_for_template_usage() { + $this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone + } + + function do_paging() { + global $bb_current_submenu; + $displaying_num = sprintf( + __( '%1$s to %2$s of %3$s' ), + bb_number_format_i18n( ( $this->page - 1 ) * $this->users_per_page + 1 ), + $this->page * $this->users_per_page < $this->total_users_for_query ? bb_number_format_i18n( $this->page * $this->users_per_page ) : '' . bb_number_format_i18n( $this->total_users_for_query ) . '', + '' . bb_number_format_i18n( $this->total_users_for_query ) . '' + ); + $page_number_links = $this->total_users_for_query > $this->users_per_page ? get_page_number_links( $this->page, $this->total_users_for_query, $this->users_per_page, false ) : ''; + $this->paging_text = "
    $displaying_num$page_number_links
    \n"; + $this->paging_text_bottom = "
    $page_number_links
    \n"; + } + + function get_results() { + return (array) $this->results; + } + + function page_links() { + echo $this->paging_text; + } + + function results_are_paged() { + if ( isset($this->paging_text) && $this->paging_text ) + return true; + return false; + } + + function is_search() { + if ( $this->search_term ) + return true; + return false; + } + + function display( $show_search = true, $show_email = false ) { + global $wp_roles; + + $r = ''; + + if ( isset($this->title) ) + $title = $this->title; + elseif ( $this->is_search() ) + $title = sprintf(__('Users Matching "%s" by Role'), esc_html( $this->search_term )); + + $h2_search = $this->search_term; + $h2_role = $this->roles[0]; + + $roles = $wp_roles->get_names(); + if ( in_array( $h2_role, array_keys( $roles ) ) ) { + $h2_role = $roles[$h2_role]; + } + + $h2_search = $h2_search ? ' ' . sprintf( __('containing “%s”'), esc_html( $h2_search ) ) : ''; + $h2_role = $h2_role ? ' ' . sprintf( __('with role “%s”'), esc_html( $h2_role ) ) : ''; + + $h2_span = ''; + $h2_span .= apply_filters( 'bb_user_search_description', sprintf( __( '%1$s%2$s' ), $h2_search, $h2_role ), $h2_search, $h2_role, $this ); + $h2_span .= ''; + + echo "

    " . apply_filters( 'bb_user_search_title', __('Users') ) . $h2_span . "

    \n"; + do_action( 'bb_admin_notices' ); + + if ( $show_search ) { + $roles = apply_filters( 'bb_user_search_form_roles', $wp_roles->get_names() ); + + $r .= "\n\n"; + } + + if ( $this->get_results() ) { + if ( $this->results_are_paged() ) + $r .= "
    \n" . $this->paging_text . "
    \n\n"; + + //foreach($roleclasses as $role => $roleclass) { + //ksort($roleclass); + //if ( !empty($role) ) + // $r .= "\t\t

    {$wp_roles->role_names[$role]}

    \n"; + //else + // $r .= "\t\t

    " . __('Users with no role in these forums') . "

    \n"; + $r .= "\n"; + $r .= "\n"; + $r .= "\t\n"; + if ( $show_email ) { + $r .= "\t\t\n"; + $r .= "\t\t\n"; + $r .= "\t\t\n"; + } else { + $r .= "\t\t\n"; + $r .= "\t\t\n"; + } + $r .= "\t\t\n"; + $r .= "\t\t\n"; + $r .= "\t\n"; + $r .= "\n\n"; + $r .= "\n"; + $r .= "\t\n"; + if ( $show_email ) { + $r .= "\t\t\n"; + $r .= "\t\t\n"; + $r .= "\t\t\n"; + } else { + $r .= "\t\t\n"; + $r .= "\t\t\n"; + } + $r .= "\t\t\n"; + $r .= "\t\t\n"; + $r .= "\t\n"; + $r .= "\n\n"; + + $r .= "\n"; + foreach ( (array) $this->get_results() as $user_object ) + $r .= bb_user_row($user_object, $role, $show_email); + $r .= "\n"; + $r .= "
    " . __('Username') . "" . __('Name') . "" . __('E-mail') . "" . __('Username') . "" . __('Name') . "" . __('Registered') . "" . __('Role') . "
    " . __('Username') . "" . __('Name') . "" . __('E-mail') . "" . __('Username') . "" . __('Name') . "" . __('Registered') . "" . __('Role') . "
    \n\n"; + //} + + if ( $this->results_are_paged() ) + $r .= "
    \n" . $this->paging_text_bottom . "
    \n\n"; + } + echo $r; + } + +} + +class BB_Users_By_Role extends BB_User_Search { + var $role = ''; + var $title = ''; + + function BB_Users_By_Role($role = '', $page = '') { // constructor + $this->role = $role ? $role : 'member'; + $this->raw_page = ( '' == $page ) ? false : (int) $page; + $this->page = (int) ( '' == $page ) ? 1 : $page; + + $this->prepare_query(); + $this->query(); + $this->do_paging(); + } + + function query() { + if ( $_results = bb_get_ids_by_role( $this->role, 0, $this->page, $this->users_per_page ) ) { + $this->results = bb_get_user($_results); + $this->total_users_for_query = bb_count_last_query(); + } else + $this->search_errors = new WP_Error( 'no_matching_users_found', __( 'No matching users were found!' ) ); + + if ( is_wp_error( $this->search_errors ) ) + bb_admin_notice( $this->search_errors ); + } +} + +/* Forums */ + +// Expects forum_name, forum_desc to be pre-escaped +function bb_new_forum( $args ) { + global $bbdb; + if ( !bb_current_user_can( 'manage_forums' ) ) + return false; + + $defaults = array( 'forum_name' => '', 'forum_desc' => '', 'forum_parent' => 0, 'forum_order' => false, 'forum_is_category' => 0 ); + $args = wp_parse_args( $args, $defaults ); + if ( 1 < func_num_args() ) : // For back compat + $args['forum_name'] = func_get_arg(0); + $args['forum_desc'] = func_get_arg(1); + $args['forum_order'] = 2 < func_num_args() ? func_get_arg(2) : 0; + endif; + + extract($args, EXTR_SKIP); + + if ( !is_numeric($forum_order) ) + $forum_order = (int) $bbdb->get_var("SELECT MAX(forum_order) FROM $bbdb->forums") + 1; + + $forum_order = (int) $forum_order; + $forum_parent = (int) $forum_parent; + $forum_is_category = (int) $forum_is_category; + + $forum_name = apply_filters( 'bb_pre_forum_name', stripslashes( wp_specialchars_decode( $forum_name, ENT_QUOTES ) ) ); + $forum_desc = apply_filters( 'bb_pre_forum_desc', stripslashes($forum_desc) ); + + if ( strlen($forum_name) < 1 ) + return false; + + $forum_sql = "SELECT forum_slug FROM $bbdb->forums WHERE forum_slug = %s"; + + $forum_slug = $_forum_slug = bb_slug_sanitize($forum_name); + if ( strlen($_forum_slug) < 1 ) + return false; + + while ( is_numeric($forum_slug) || $existing_slug = $bbdb->get_var( $bbdb->prepare( $forum_sql, $forum_slug ) ) ) + $forum_slug = bb_slug_increment($_forum_slug, $existing_slug); + + $bbdb->insert( $bbdb->forums, compact( 'forum_name', 'forum_slug', 'forum_desc', 'forum_parent', 'forum_order' ) ); + $forum_id = $bbdb->insert_id; + if ($forum_id && $forum_is_category) + bb_update_forummeta($forum_id, 'forum_is_category', $forum_is_category); + wp_cache_flush( 'bb_forums' ); + + return $forum_id; +} + +// Expects forum_name, forum_desc to be pre-escaped +function bb_update_forum( $args ) { + global $bbdb; + if ( !bb_current_user_can( 'manage_forums' ) ) + return false; + + $defaults = array( 'forum_id' => 0, 'forum_name' => '', 'forum_slug' => '', 'forum_desc' => '', 'forum_parent' => 0, 'forum_order' => 0, 'forum_is_category' => 0 ); + $fields = array( 'forum_name', 'forum_desc', 'forum_parent', 'forum_order' ); + $args = wp_parse_args( $args, $defaults ); + if ( 1 < func_num_args() ) : // For back compat + $args['forum_id'] = func_get_arg(0); + $args['forum_name'] = func_get_arg(1); + $args['forum_desc'] = 2 < func_num_args() ? func_get_arg(2) : ''; + $args['forum_order'] = 3 < func_num_args() && is_numeric(func_get_arg(3)) ? func_get_arg(3) : 0; + endif; + + extract($args, EXTR_SKIP); + + if ( !$forum_id = (int) $forum_id ) + return false; + if ( !$forum = bb_get_forum( $forum_id ) ) + return false; + $forum_order = (int) $forum_order; + $forum_parent = (int) $forum_parent; + $forum_is_category = (int) $forum_is_category; + + $forum_name = apply_filters( 'bb_pre_forum_name', stripslashes( wp_specialchars_decode( $forum_name, ENT_QUOTES ) ), $forum_id ); + $forum_desc = apply_filters( 'bb_pre_forum_desc', stripslashes($forum_desc), $forum_id ); + + if ( strlen($forum_name) < 1 ) + return false; + + // Slug is not changing, don't update it + if ( !$forum_slug || $forum_slug == $forum->forum_slug ) { + // [sic] + } else { + $forum_slug = $_forum_slug = bb_slug_sanitize($forum_slug); + if ( strlen($_forum_slug) < 1 ) + return false; + + $forum_sql = "SELECT forum_slug FROM $bbdb->forums WHERE forum_slug = %s"; + + while ( is_numeric($forum_slug) || $existing_slug = $bbdb->get_var( $bbdb->prepare( $forum_sql, $forum_slug ) ) ) + $forum_slug = bb_slug_increment($_forum_slug, $existing_slug); + + $fields[] = 'forum_slug'; + } + + wp_cache_delete( $forum_id, 'bb_forum' ); + wp_cache_flush( 'bb_forums' ); + + $update_result = $bbdb->update( $bbdb->forums, compact( $fields ), compact( 'forum_id' ) ); + + if ($forum_is_category) + bb_update_forummeta($forum_id, 'forum_is_category', $forum_is_category); + else + bb_delete_forummeta($forum_id, 'forum_is_category'); + + return $update_result; +} + +// When you delete a forum, you delete *everything* +// NOT bbdb::prepared +function bb_delete_forum( $forum_id ) { + global $bbdb; + if ( !bb_current_user_can( 'delete_forum', $forum_id ) ) + return false; + if ( !$forum_id = (int) $forum_id ) + return false; + + if ( !$forum = bb_get_forum( $forum_id ) ) + return false; + + if ( $topic_ids = $bbdb->get_col( $bbdb->prepare( "SELECT topic_id FROM $bbdb->topics WHERE forum_id = %d", $forum_id ) ) ) { + foreach ($topic_ids as $topic_id) { + bb_remove_topic_tags( $topic_id ); + } + $_topic_ids = join(',', array_map('intval', $topic_ids)); + $bbdb->query("DELETE FROM $bbdb->posts WHERE topic_id IN ($_topic_ids) AND topic_id != 0"); + $bbdb->query("DELETE FROM $bbdb->meta WHERE object_type = 'bb_topic' AND object_id IN ($_topic_ids)"); + $bbdb->query( $bbdb->prepare( "DELETE FROM $bbdb->topics WHERE forum_id = %d", $forum_id ) ); + } + + $bbdb->update( $bbdb->forums, array( 'forum_parent' => $forum->forum_parent ), array( 'forum_parent' => $forum_id ) ); + + $return = $bbdb->query( $bbdb->prepare( "DELETE FROM $bbdb->forums WHERE forum_id = %d", $forum_id ) ); + + wp_cache_flush( 'bb_post' ); + + if ( $topic_ids ) + foreach ( $topic_ids as $topic_id ) { + // should maybe just flush these groups instead + wp_cache_delete( $topic_id, 'bb_topic' ); + wp_cache_delete( $topic_id, 'bb_thread' ); + } + + wp_cache_delete( $forum_id, 'bb_forum' ); + wp_cache_flush( 'bb_forums' ); + + return $return; +} + +function bb_forum_row( $forum_id = 0, $echo = true, $close = false ) { + global $forum, $forums_count; + if ( $forum_id ) + $_forum = bb_get_forum( $forum_id ); + else + $_forum =& $forum; + + if ( !$_forum ) + return; + + $description = get_forum_description( $_forum->forum_id ); + + $r = ''; + if ( $close ) + $r .= "\t
  • \n"; + $r .= "\t\t
    \n"; + $r .= "\t\t\t
    " . get_forum_name( $_forum->forum_id ) . "
    \n"; + if ( $description ) + $r .= "\t\t\t

    " . get_forum_description( $_forum->forum_id ) . "

    \n"; + $r .= "\t\t\t
    \n"; + $r .= "\t\t\t\t" . __('View') . "\n"; + if ( bb_current_user_can( 'manage_forums' ) ) + $r .= "\t\t\t\t| 'edit', 'id' => $_forum->forum_id), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN) ) . "'>" . __('Edit') . "\n"; + if ( bb_current_user_can( 'delete_forum', $_forum->forum_id ) && 1 < $forums_count ) + $r .= "\t\t\t\t| 'delete', 'id' => $_forum->forum_id), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN) ) . "'>" . __('Delete') . "\n"; + $r .= "\t\t\t 
    \n"; + $r .= "\t\t
    \n"; + if ( $close ) + $r .= "\t
  • \n"; + + if ( $echo ) + echo $r; + return $r; +} + +function bb_forum_form( $forum_id = 0 ) { + $forum_id = (int) $forum_id; + if ( $forum_id && !$forum = bb_get_forum( $forum_id ) ) { + return; + } + + $forum_name = ''; + $forum_slug = ''; + $forum_description = ''; + $forum_position = ''; + + if ( $forum_id ) { + $forum_name = get_forum_name( $forum_id ); + $forum_slug = apply_filters('editable_slug', $forum->forum_slug); + $forum_description = get_forum_description( $forum_id ); + $forum_position = get_forum_position( $forum_id ); + $legend = __( 'Edit Forum' ); + $submit = __( 'Save Changes' ); + $action = 'update'; + } else { + $legend = __( 'Add Forum' ); + $submit = __( 'Add Forum' ); + $action = 'add'; + } + + $forum_options = array( + 'forum_name' => array( + 'title' => __( 'Name' ), + 'value' => $forum_name + ), + 'forum_slug' => array( + 'title' => __( 'Slug' ), + 'value' => $forum_slug + ), + 'forum_desc' => array( + 'title' => __( 'Description' ), + 'value' => $forum_description, + 'class' => 'long' + ), + 'forum_parent' => array( + 'title' => __( 'Parent' ), + 'type' => 'select', + 'options' => bb_get_forum_dropdown( array( + 'cut_branch' => $forum_id, + 'id' => 'forum_parent', + 'none' => true, + 'selected' => $forum_id ? get_forum_parent( $forum_id ) : 0, + 'disable_categories' => 0, + 'options_only' => true + ) ) + ), + 'forum_order' => array( + 'title' => __( 'Position' ), + 'value' => $forum_position, + 'class' => 'short' + ), + 'forum_is_category' => array( + 'title' => __( 'Category' ), + 'type' => 'checkbox', + 'options' => array( + 1 => array( + 'label' => __( 'Make this forum a category' ), + 'value' => bb_get_forum_is_category( $forum_id ), + ) + ), + 'note' => __( 'Categories are forums where new topics cannot be created. Categories usually contain a group of sub-forums.' ) + ) + ); + + if ( !$forum_id ) { + unset( $forum_options['forum_slug'] ); + unset( $forum_options['forum_order'] ); + } + +?> +
    +
    + + $args ) { + bb_option_form_element( $option, $args ); +} +?> +
    + + + + + + + +
    +
    +
    + 'forum_parent', 'id' => 'forum_id'); //TODO: decouple this + + function start_lvl($output, $depth) { + $indent = str_repeat("\t", $depth) . ' '; + $output .= $indent . "
      \n"; + return $output; + } + + function end_lvl($output, $depth) { + $indent = str_repeat("\t", $depth) . ' '; + $output .= $indent . "
    \n"; + return $output; + } + + function start_el($output, $forum, $depth) { + $this->forum_id = $forum->forum_id; + $indent = str_repeat("\t", $depth + 1); + $output .= $indent . "
  • \n"; + + return $output; + } + + function end_el($output, $forum, $depth) { + $indent = str_repeat("\t", $depth + 1); + $output .= $indent . "
  • \n"; + return $output; + } +} + + + +/* Topics */ + +function bb_move_forum_topics( $from_forum_id, $to_forum_id ) { + global $bbdb; + + $from_forum_id = (int) $from_forum_id ; + $to_forum_id = (int) $to_forum_id; + + add_filter('get_forum_where', 'bb_no_where'); // Just in case + + $from_forum = bb_get_forum( $from_forum_id ); + if ( !$to_forum = bb_get_forum( $to_forum_id ) ) + return false; + + $posts = $to_forum->posts + ( $from_forum ? $from_forum->posts : 0 ); + $topics = $to_forum->topics + ( $from_forum ? $from_forum->topics : 0 ); + + $bbdb->update( $bbdb->forums, compact( 'topics', 'posts' ), array( 'forum_id' => $to_forum_id ) ); + $bbdb->update( $bbdb->forums, array( 'topics' => 0, 'posts' => 0 ), array( 'forum_id' => $from_forum_id ) ); + $bbdb->update( $bbdb->posts, array( 'forum_id' => $to_forum_id ), array( 'forum_id' => $from_forum_id ) ); + $topic_ids = $bbdb->get_col( $bbdb->prepare( "SELECT topic_id FROM $bbdb->topics WHERE forum_id = %d", $from_forum_id ) ); + $return = $bbdb->update( $bbdb->topics, array( 'forum_id' => $to_forum_id ), array( 'forum_id' => $from_forum_id ) ); + + wp_cache_flush( 'bb_post' ); + + if ( $topic_ids ) + foreach ( $topic_ids as $topic_id ) { + // should maybe just flush these groups + wp_cache_delete( $topic_id, 'bb_topic' ); + wp_cache_delete( $topic_id, 'bb_thread' ); + } + + wp_cache_delete( $from_forum_id, 'bb_forum' ); + wp_cache_delete( $to_forum_id, 'bb_forum' ); + wp_cache_flush( 'bb_forums' ); + + return $return; +} + +/* Posts */ + +function bb_admin_list_posts() { + global $bb_posts, $bb_post; + + if ( !$bb_posts ) { +?> +

    + + + + + + + + + + + + + + + + + + + + + + + > + + + + + + + + + + + +
    + +
    + + + ' | ', + 'each' => array( + 'undelete' => array( + 'before' => ' ' + ) + ), + 'last_each' => array( + 'before' => ' | ' + ) + ) ); +?> +   +
    +
    + + + + + + + + + + + + + + + + + topic_id ); ?> + +H:i:s' ); + } else { + printf( __( '%s ago' ), bb_get_post_time( 'since' ) ); + } +?> +
    + array( 'topic-posts', __( 'Count posts of every topic' ) ), + 6 => array( 'topic-voices', __( 'Count voices of every topic' ) ), + 10 => array( 'topic-deleted-posts', __( 'Count deleted posts on every topic' ) ), + 15 => array( 'forums', __( 'Count topics and posts in every forum' ) ), + 20 => array( 'topics-replied', __( 'Count topics to which each user has replied' ) ), + 25 => array( 'topic-tag-count', __( 'Count tags for every topic' ) ), + 30 => array( 'tags-tag-count', __( 'Count topics for every tag' ) ), + 35 => array( 'tags-delete-empty', __( 'Delete tags with no topics' ) ), + 40 => array( 'clean-favorites', __( 'Remove deleted topics from users\' favorites' ) ) + ); + do_action( 'bb_recount_list' ); + ksort( $recount_list ); + return $recount_list; +} + +/* Themes */ + +function bb_get_current_theme_data( $property = 'all' ) { + if (!$property) { + $property = 'all'; + } + $directory = bb_get_active_theme_directory(); + $stylesheet = $directory . 'style.css'; + if (file_exists($stylesheet)) { + $data = bb_get_theme_data($stylesheet); + } + if ($property == 'all') { + return $data; + } elseif (isset($data[$property])) { + return $data[$property]; + } else { + return false; + } +} + +// Output sanitized for display +function bb_get_theme_data( $theme_file ) +{ + if ( strpos($theme_file, '#') !== false ) { + $theme_file = bb_get_theme_directory( $theme_file ) . 'style.css'; + } + $theme_code = implode( '', file( $theme_file ) ); + $theme_code = str_replace ( '\r', '\n', $theme_code ); + // Grab just the first commented area from the file + preg_match( '|/\*(.*)\*/|msU', $theme_code, $theme_block ); + $theme_data = trim( $theme_block[1] ); + preg_match( '|Theme Name:(.*)|i', $theme_data, $theme_name ); + preg_match( '|Theme URI:(.*)|i', $theme_data, $theme_uri ); + preg_match( '|Description:(.*)|i', $theme_data, $description ); + preg_match( '|Author:(.*)|i', $theme_data, $author_name ); + preg_match( '|Author URI:(.*)|i', $theme_data, $author_uri ); + preg_match( '|Ported By:(.*)|i', $theme_data, $porter_name ); + preg_match( '|Porter URI:(.*)|i', $theme_data, $porter_uri ); +// preg_match( '|Template:(.*)|i', $theme_data, $template ); + if ( preg_match( '|Version:(.*)|i', $theme_data, $version ) ) + $version = esc_html( trim( $version[1] ) ); + else + $version =''; + if ( preg_match('|Status:(.*)|i', $theme_data, $status) ) + $status = esc_html( trim($status[1]) ); + else + $status = 'publish'; + + $description = trim($description[1]); + $description = bb_encode_bad( $description ); + $description = bb_code_trick( $description ); + $description = force_balance_tags( $description ); + $description = bb_filter_kses( $description ); + $description = bb_autop( $description ); + + $name = $theme_name[1]; + $name = esc_html( trim($name) ); + $theme = $name; + + if ( $author_name || $author_uri ) { + if ( empty($author_uri[1]) ) { + $author = bb_filter_kses( trim($author_name[1]) ); + } else { + $author = '' . bb_filter_kses( trim($author_name[1]) ) . ''; + } + } else { + $author = ''; + } + + if ( $porter_name || $porter_uri ) { + if ( empty($porter_uri[1]) ) { + $porter = bb_filter_kses( trim($porter_name[1]) ); + } else { + $porter = '' . bb_filter_kses( trim($porter_name[1]) ) . ''; + } + } else { + $porter = ''; + } + + global $bb; + + // Normalise the path to the theme + $theme_file = str_replace( '\\', '/', $theme_file ); + + foreach ( $bb->theme_locations as $_name => $_data ) { + $_directory = str_replace( '\\', '/', $_data['dir'] ); + if ( 0 === strpos( $theme_file, $_directory ) ) { + $location = $_name; + break; + } + } + + return array( + 'Location' => $location, + 'Name' => $name, + 'Title' => $theme, + 'Description' => $description, + 'Author' => $author, + 'Porter' => $porter, + 'Version' => $version, +// 'Template' => $template[1], + 'Status' => $status, + 'URI' => esc_url( $theme_uri[1] ) + ); +} + +if ( !function_exists( 'checked' ) ) : +function checked( $checked, $current) { + if ( $checked == $current) + echo ' checked="checked"'; +} +endif; + +if ( !function_exists( 'selected' ) ) : +function selected( $selected, $current) { + if ( $selected === $current) + echo ' selected="selected"'; +} +endif; + +/* Options */ + +function bb_option_form_element( $name = 'name', $args = null ) { + global $bb_hardcoded; + + $defaults = array( + 'title' => 'title', + 'type' => 'text', + 'value' => false, + 'options' => false, + 'message' => false, + 'class' => false, + 'default' => false, + 'before' => '', + 'after' => '', + 'note' => false, + 'attributes' => false, + 'disabled' => false, + ); + + $args = wp_parse_args( $args, $defaults ); + + $id = str_replace( array( '_', '[', ']' ), array( '-', '-', '' ), $name ); + if ( false !== strpos( $name, '[' ) ) { + list( $option_name, $option_key ) = preg_split( '/[\[\]]/', $name, -1, PREG_SPLIT_NO_EMPTY ); + $option = bb_get_option( $option_name ); + $value = false === $args['value'] ? esc_attr( $option[$option_key] ) : esc_attr( $args['value'] ); + $hardcoded = isset( $bb_hardcoded[$option_name][$option_key] ); + } else { + $value = false === $args['value'] ? bb_get_form_option( $name ) : esc_attr( $args['value'] ); + $hardcoded = isset( $bb_hardcoded[$name] ); + } + + $class = $args['class'] ? (array) $args['class'] : array(); + array_unshift( $class, $args['type'] ); + + if ( $hardcoded || $args['disabled'] ) + $disabled = ' disabled="disabled"'; + else + $disabled = false; + + if ( $args['attributes'] ) { + $attributes = array(); + foreach ( $args['attributes'] as $k => $v ) + $attributes[] = "$k='$v'"; + $attributes = ' ' . join( ' ', $attributes ); + } else { + $attributes = ''; + } + +?> + +
    > + +
    + +
    + + + + + +
    + +' . $args['before'] . ''; + } + switch ( $args['type'] ) { + case 'select' : + echo "\n"; + if ( is_array( $args['options'] ) ) { + foreach ( $args['options'] as $option => $label ) + echo "\t\n"; + } elseif ( is_string( $args['options'] ) ) { + echo $args['options'] . "\n"; + } + echo "\n"; + break; + case 'radio' : + case 'checkbox' : + if ( is_array( $args['options'] ) ) { + $_id = 0; + if ( 'radio' === $args['type'] && !in_array( $value, array_keys( $args['options'] ) ) && empty( $value ) ) { + $use_first_value = true; + } + $type = $args['type']; + foreach ( $args['options'] as $option => $label ) { + if ( $use_first_value ) { + $use_first_value = false; + $value = $option; + } + if ( is_array( $label ) ) { + if ( isset( $label['attributes'] ) ) { + $attributes = array(); + foreach ( $label['attributes'] as $k => $v ) + $attributes[] = "$k='$v'"; + $attributes = ' ' . join( ' ', $attributes ); + } else { + $attributes = ''; + } + if ( isset( $label['name'] ) ) { + $name = $label['name']; + $id = str_replace( array( '_', '[', ']' ), array( '-', '-', '' ), $name ); + $hardcoded = isset( $bb_hardcoded[$name] ); + } + if ( isset( $label['value'] ) ) { + $_value = $label['value']; + } else { + $_value = $args['value']; + } + $value = false === $_value ? bb_get_form_option( $name ) : esc_attr( $_value ); + $label = $label['label']; + } + echo "\n"; + $_id++; + } + } elseif ( is_string( $args['options'] ) ) { + echo $args['options'] . "\n"; + } + break; + case 'message' : + if ( $args['message'] ) { + echo $args['message']; + } + break; + default : + echo "\n"; + break; + } + if ( $args['after'] ) { + echo '' . $args['after'] . ''; + } + + if ( $args['note'] ) { + foreach ( (array) $args['note'] as $note ) { +?> + +

    + + + +
    +
    + + 0 ); + + if ( $has_underscore = '_' === substr( $filename, 0, 1 ) ) { + switch ( $type ) { + case 'all': + case 'autoload': + $data['autoload'] = 1; + break; + case 'normal': + default: + return false; + break; + } + } elseif ( 'autoload' === $type ) { + return false; + } + + if ( $_data = bb_get_plugin_data( $path ) ) { + return array_merge( $_data , $data ); + } + + return false; +} + +function bb_get_plugins( $location = 'all', $type = 'normal', $status = 'all' ) +{ + static $plugin_cache = array(); + + if ( !in_array( $type, array( 'all', 'autoload', 'normal' ) ) ) { + $type = 'normal'; + } + + if ( 'autoload' === $type || !in_array( $status, array( 'all', 'active', 'inactive' ) ) ) { + $status = 'all'; + } + + if ( isset( $plugin_cache[$location][$type][$status] ) ) { + return $plugin_cache[$location][$type][$status]; + } + + global $bb; + $directories = array(); + if ( 'all' === $location ) { + foreach ( $bb->plugin_locations as $_data ) { + $directories[] = $_data['dir']; + } + } elseif ( isset( $bb->plugin_locations[$location]['dir'] ) ) { + $directories[] = $bb->plugin_locations[$location]['dir']; + } + + require_once( BB_PATH . BB_INC . 'class.bb-dir-map.php' ); + + $plugin_arrays = array(); + foreach ( $directories as $directory ) { + $dir_map = new BB_Dir_Map( + $directory, + array( + 'callback' => 'bb_get_plugins_callback', + 'callback_args' => array( $type ), + 'recurse' => 1 + ) + ); + $dir_plugins = $dir_map->get_results(); + $dir_plugins = is_wp_error( $dir_plugins ) ? array() : $dir_plugins; + $plugin_arrays[] = $dir_plugins; + unset($dir_map, $dir_plugins); + } + + $plugins = array(); + foreach ($plugin_arrays as $plugin_array) { + $plugins = array_merge($plugins, $plugin_array); + } + + $active_plugins = (array) bb_get_option( 'active_plugins' ); + + $adjusted_plugins = array(); + foreach ($plugins as $plugin => $plugin_data) { + $_id = $plugin_data['location'] . '#' . $plugin; + $plugin_data['active'] = 0; + if ( 'autoload' === $type || in_array( $_id, $active_plugins ) ) { + $plugin_data['active'] = 1; + } + if ( + 'active' === $status && $plugin_data['active'] || + 'inactive' === $status && !$plugin_data['active'] || + 'all' === $status + ) { + $adjusted_plugins[$_id] = $plugin_data; + } + } + + uasort( $adjusted_plugins, 'bb_plugins_sort' ); + + $plugin_cache[$location][$type][$status] = $adjusted_plugins; + + return $adjusted_plugins; +} + +function bb_plugins_sort( $a, $b ) +{ + return strnatcasecmp( $a['name'], $b['name'] ); +} + +function bb_get_plugin_counts() +{ + $all_plugins = bb_get_plugins( 'all', 'all' ); + $active_plugins = (array) bb_get_option( 'active_plugins' ); + $counts = array( + 'plugin_count_all' => count( $all_plugins ), + 'plugin_count_active' => count( $active_plugins ), + 'plugin_count_inactive' => 0, + 'plugin_count_autoload' => 0 + ); + foreach ( $all_plugins as $id => $all_plugin ) { + if ( $all_plugin['autoload'] ) { + $counts['plugin_count_autoload']++; + } elseif ( !in_array( $id, $active_plugins ) ) { + $counts['plugin_count_inactive']++; + } + } + return $counts; +} + +/** + * Parse the plugin contents to retrieve plugin's metadata. + * + * The metadata of the plugin's data searches for the following in the plugin's + * header. All plugin data must be on its own line. For plugin description, it + * must not have any newlines or only parts of the description will be displayed + * and the same goes for the plugin data. The below is formatted for printing. + * + * + * /* + * Plugin Name: Name of Plugin + * Plugin URI: Link to plugin information + * Description: Plugin Description + * Author: Plugin author's name + * Author URI: Link to the author's web site + * Version: Must be set + * Requires at least: Optional. Minimum bbPress version this plugin requires + * Tested up to: Optional. Maximum bbPress version this plugin has been tested with + * Text Domain: Optional. Unique identifier, should be same as the one used in + * bb_load_plugin_textdomain() + * Domain Path: Optional. Only useful if the translations are located in a + * folder above the plugin's base path. For example, if .mo files are + * located in the locale folder then Domain Path will be "/locale/" and + * must have the first slash. Defaults to the base folder the plugin is + * located in. + * * / # You must remove the space to close comment (the space is here only for documentation purposes). + * + * + * Plugin data returned array contains the following: + * 'location' - Location of plugin file + * 'name' - Name of the plugin, must be unique. + * 'uri' - Plugin's web site. + * 'plugin_link' - Title of plugin linked to plugin's web site. + * 'description' - Description of what the plugin does and/or notes + * from the author. + * 'author' - The author's name + * 'author_uri' - The author's web site address. + * 'author_link' - The author's name linked to the author's web site. + * 'version' - The plugin version number. + * 'requires' - Minimum bbPress version plugin requires + * 'tested' - Maximum bbPress version plugin has been tested with + * 'text_domain' - Plugin's text domain for localization. + * 'domain_path' - Plugin's relative directory path to .mo files. + * + * Some users have issues with opening large files and manipulating the contents + * for want is usually the first 1kiB or 2kiB. This function stops pulling in + * the plugin contents when it has all of the required plugin data. + * + * The first 8kiB of the file will be pulled in and if the plugin data is not + * within that first 8kiB, then the plugin author should correct their plugin + * and move the plugin data headers to the top. + * + * The plugin file is assumed to have permissions to allow for scripts to read + * the file. This is not checked however and the file is only opened for + * reading. + * + * @link http://trac.wordpress.org/ticket/5651 Previous Optimizations. + * @link http://trac.wordpress.org/ticket/7372 Further and better Optimizations. + * @since 1.5.0 + * + * @param string $plugin_file Path to the plugin file + * @param bool $markup If the returned data should have HTML markup applied + * @param bool $translate If the returned data should be translated + * @return array See above for description. + */ +function bb_get_plugin_data( $plugin_file, $markup = true, $translate = true ) { + global $bb; + + if ( preg_match( '/^([a-z0-9_-]+)#((?:[a-z0-9\/\\_-]+.)+)(php)$/i', $plugin_file, $_matches ) ) { + $plugin_file = $bb->plugin_locations[$_matches[1]]['dir'] . $_matches[2] . $_matches[3]; + + $_directory = $bb->plugin_locations[$_matches[1]]['dir']; + $_plugin = $_matches[2] . $_matches[3]; + + if ( !$_plugin ) { + // Not likely + return false; + } + + if ( validate_file( $_plugin ) ) { + // $plugin has .., :, etc. + return false; + } + + $plugin_file = $_directory . $_plugin; + unset( $_matches, $_directory, $_plugin ); + } + + if ( !file_exists( $plugin_file ) ) { + // The plugin isn't there + return false; + } + + // We don't need to write to the file, so just open for reading. + $fp = fopen($plugin_file, 'r'); + + // Pull only the first 8kiB of the file in. + $plugin_code = fread( $fp, 8192 ); + + // PHP will close file handle, but we are good citizens. + fclose($fp); + + // Grab just the first commented area from the file + if ( !preg_match( '|/\*(.*?Plugin Name:.*?)\*/|ims', $plugin_code, $plugin_block ) ) + return false; + $plugin_data = trim( $plugin_block[1] ); + + preg_match( '|Plugin Name:(.*)$|mi', $plugin_data, $name ); + preg_match( '|Plugin URI:(.*)$|mi', $plugin_data, $uri ); + preg_match( '|Version:(.*)|i', $plugin_data, $version ); + preg_match( '|Description:(.*)$|mi', $plugin_data, $description ); + preg_match( '|Author:(.*)$|mi', $plugin_data, $author ); + preg_match( '|Author URI:(.*)$|mi', $plugin_data, $author_uri ); + preg_match( '|Text Domain:(.*)$|mi', $plugin_data, $text_domain ); + preg_match( '|Domain Path:(.*)$|mi', $plugin_data, $domain_path ); + preg_match( '|Requires at least:(.*)$|mi', $plugin_data, $requires ); + preg_match( '|Tested up to:(.*)$|mi', $plugin_data, $tested ); + + // Normalise the path to the plugin + $plugin_file = str_replace( '\\', '/', $plugin_file ); + + foreach ( $bb->plugin_locations as $_name => $_data ) { + $_directory = str_replace( '\\', '/', $_data['dir'] ); + if ( 0 === strpos( $plugin_file, $_directory ) ) { + $location = array( 1 => $_name ); + break; + } + } + + $plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array()); + + $fields = array( + 'location' => '', + 'name' => 'html', + 'uri' => 'url', + 'version' => 'text', + 'description' => 'html', + 'author' => 'html', + 'author_uri' => 'url', + 'text_domain' => '', + 'domain_path' => '', + 'requires' => 'text', + 'tested' => 'text', + ); + foreach ( $fields as $field => $san ) { + if ( !empty( ${$field} ) ) { + ${$field} = trim(${$field}[1]); + switch ( $san ) { + case 'html' : + ${$field} = bb_filter_kses( ${$field} ); + break; + case 'text' : + ${$field} = esc_html( ${$field} ); + break; + case 'url' : + ${$field} = esc_url( ${$field} ); + break; + } + } else { + ${$field} = ''; + } + } + + $plugin_data = compact( array_keys( $fields ) ); + + if ( $translate ) + $plugin_data = _bb_get_plugin_data_translate( $plugin_data, $plugin_file ); + + if ( $markup ) + $plugin_data['description'] = bb_autop( preg_replace( '/[\r\n]+/', "\n", trim( $plugin_data['description'] ) ) ); + + $plugin_data['plugin_link'] = ( $plugin_data['uri'] ) ? + "{$plugin_data['name']}" : + $plugin_data['name']; + $plugin_data['author_link'] = ( $plugin_data['author'] && $plugin_data['author_uri'] ) ? + "{$plugin_data['author']}" : + $plugin_data['author']; + + return $plugin_data; +} + +function _bb_get_plugin_data_translate( $plugin_data, $plugin_file ) { + //Translate fields + if( !empty($plugin_data['text_domain']) ) { + if( ! empty( $plugin_data['domain_path'] ) ) + bb_load_plugin_textdomain($plugin_data['text_domain'], dirname($plugin_file). $plugin_data['domain_path']); + else + bb_load_plugin_textdomain($plugin_data['text_domain'], dirname($plugin_file)); + + foreach ( array('name', 'plugin_url', 'description', 'author', 'author_uri', 'version') as $field ) + $plugin_data[$field] = translate($plugin_data[$field], $plugin_data['text_domain']); + } + + return $plugin_data; +} + +/** + * Attempts activation of plugin in a "sandbox" and redirects on success. + * + * A plugin that is already activated will not attempt to be activated again. + * + * The way it works is by setting the redirection to the error before trying to + * include the plugin file. If the plugin fails, then the redirection will not + * be overwritten with the success message. Also, the options will not be + * updated and the activation hook will not be called on plugin error. + * + * It should be noted that in no way the below code will actually prevent errors + * within the file. The code should not be used elsewhere to replicate the + * "sandbox", which uses redirection to work. + * + * If any errors are found or text is outputted, then it will be captured to + * ensure that the success redirection will update the error redirection. + * + * @since 1.0 + * + * @param string $plugin Plugin path to main plugin file with plugin data. + * @param string $redirect Optional. URL to redirect to. + * @return WP_Error|null WP_Error on invalid file or null on success. + */ +function bb_activate_plugin( $plugin, $redirect = '' ) { + $active_plugins = (array) bb_get_option( 'active_plugins' ); + $plugin = bb_plugin_basename( trim( $plugin ) ); + + $valid_path = bb_validate_plugin( $plugin ); + if ( is_wp_error( $valid_path ) ) + return $valid_path; + + if ( in_array( $plugin, $active_plugins ) ) { + return false; + } + + if ( !empty( $redirect ) ) { + // We'll override this later if the plugin can be included without fatal error + wp_redirect( add_query_arg( '_scrape_nonce', bb_create_nonce( 'scrape-plugin_' . $plugin ), $redirect ) ); + } + + ob_start(); + @include( $valid_path ); + // Add to the active plugins array + $active_plugins[] = $plugin; + ksort( $active_plugins ); + bb_update_option( 'active_plugins', $active_plugins ); + do_action( 'bb_activate_plugin_' . $plugin ); + ob_end_clean(); + + return $valid_path; +} + +/** + * Deactivate a single plugin or multiple plugins. + * + * The deactivation hook is disabled by the plugin upgrader by using the $silent + * parameter. + * + * @since unknown + * + * @param string|array $plugins Single plugin or list of plugins to deactivate. + * @param bool $silent Optional, default is false. Prevent calling deactivate hook. + */ +function bb_deactivate_plugins( $plugins, $silent = false ) { + $active_plugins = (array) bb_get_option( 'active_plugins' ); + + if ( !is_array( $plugins ) ) { + $plugins = array( $plugins ); + } + + foreach ( $plugins as $plugin ) { + $plugin = bb_plugin_basename( trim( $plugin ) ); + if ( !in_array( $plugin, $active_plugins ) ) { + continue; + } + // Remove the deactivated plugin + array_splice( $active_plugins, array_search( $plugin, $active_plugins ), 1 ); + if ( !$silent ) { + do_action( 'bb_deactivate_plugin_' . $plugin ); + } + } + + bb_update_option( 'active_plugins', $active_plugins ); +} + +/** + * Validate the plugin path. + * + * Checks that the file exists and is valid file. + * + * @since 1.0 + * @uses validate_file() to check the passed plugin identifier isn't malformed + * @uses bb_get_plugin_path() to get the full path of the plugin + * @uses bb_get_plugins() to get the plugins that actually exist + * + * @param string $plugin Plugin Path + * @param string $location The location of plugin, one of 'user', 'core' or 'all' + * @param string $type The type of plugin, one of 'all', 'autoload' or 'normal' + * @return WP_Error|int 0 on success, WP_Error on failure. + */ +function bb_validate_plugin( $plugin, $location = 'all', $type = 'all' ) { + if ( validate_file( trim( $plugin ) ) ) { + return new WP_Error( 'plugin_invalid', __( 'Invalid plugin path.' ) ); + } + $path = bb_get_plugin_path( trim( $plugin ) ); + if ( !file_exists( $path ) ) { + return new WP_Error( 'plugin_not_found', __( 'Plugin file does not exist.' ) ); + } + if ( !in_array( trim( $plugin ), array_keys( bb_get_plugins( $location, $type ) ) ) ) { + return new WP_Error( 'plugin_not_available', __( 'That type of plugin is not available in the specified location.' ) ); + } + + return $path; +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/functions.bb-recount.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/functions.bb-recount.php new file mode 100644 index 0000000..720e9ca --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/functions.bb-recount.php @@ -0,0 +1,461 @@ +topics` (`topic_id`, `topic_posts`) (SELECT `topic_id`, COUNT(`post_status`) as `topic_posts` FROM `$bbdb->posts` WHERE `post_status` = '0' GROUP BY `topic_id`) ON DUPLICATE KEY UPDATE `topic_posts` = VALUES(`topic_posts`);"; + if ( is_wp_error( $bbdb->query( $sql ) ) ) { + return array( 1, sprintf( $statement, $result ) ); + } + + $result = __( 'Complete!' ); + return array( 0, sprintf( $statement, $result ) ); +} + +function bb_recount_topic_voices() +{ + global $bbdb; + + $statement = __( 'Counting the number of voices in each topic… %s' ); + $result = __( 'Failed!' ); + + $sql_delete = "DELETE FROM `$bbdb->meta` WHERE `object_type` = 'bb_topic' AND `meta_key` = 'voices_count';"; + if ( is_wp_error( $bbdb->query( $sql_delete ) ) ) { + return array( 1, sprintf( $statement, $result ) ); + } + + $sql = "INSERT INTO `$bbdb->meta` (`object_type`, `object_id`, `meta_key`, `meta_value`) (SELECT 'bb_topic', `topic_id`, 'voices_count', COUNT(DISTINCT `poster_id`) as `meta_value` FROM `$bbdb->posts` WHERE `post_status` = '0' GROUP BY `topic_id`);"; + if ( is_wp_error( $bbdb->query( $sql ) ) ) { + return array( 2, sprintf( $statement, $result ) ); + } + + $result = __( 'Complete!' ); + return array( 0, sprintf( $statement, $result ) ); +} + +function bb_recount_topic_deleted_posts() +{ + global $bbdb; + + $statement = __( 'Counting the number of deleted posts in each topic… %s' ); + $result = __( 'Failed!' ); + + $sql_delete = "DELETE FROM `$bbdb->meta` WHERE `object_type` = 'bb_topic' AND `meta_key` = 'deleted_posts';"; + if ( is_wp_error( $bbdb->query( $sql_delete ) ) ) { + return array( 1, sprintf( $statement, $result ) ); + } + + $sql = "INSERT INTO `$bbdb->meta` (`object_type`, `object_id`, `meta_key`, `meta_value`) (SELECT 'bb_topic', `topic_id`, 'deleted_posts', COUNT(`post_status`) as `meta_value` FROM `$bbdb->posts` WHERE `post_status` != '0' GROUP BY `topic_id`);"; + if ( is_wp_error( $bbdb->query( $sql ) ) ) { + return array( 2, sprintf( $statement, $result ) ); + } + + $result = __( 'Complete!' ); + return array( 0, sprintf( $statement, $result ) ); +} + +function bb_recount_forum_topics() +{ + global $bbdb; + + $statement = __( 'Counting the number of topics in each forum… %s' ); + $result = __( 'Failed!' ); + + $sql = "INSERT INTO `$bbdb->forums` (`forum_id`, `topics`) (SELECT `forum_id`, COUNT(`topic_status`) as `topics` FROM `$bbdb->topics` WHERE `topic_status` = '0' GROUP BY `forum_id`) ON DUPLICATE KEY UPDATE `topics` = VALUES(`topics`);"; + if ( is_wp_error( $bbdb->query( $sql ) ) ) { + return array( 1, sprintf( $statement, $result ) ); + } + + $result = __( 'Complete!' ); + return array( 0, sprintf( $statement, $result ) ); +} + +function bb_recount_forum_posts() +{ + global $bbdb; + + $statement = __( 'Counting the number of posts in each forum… %s' ); + $result = __( 'Failed!' ); + + $sql = "INSERT INTO `$bbdb->forums` (`forum_id`, `posts`) (SELECT `forum_id`, COUNT(`post_status`) as `posts` FROM `$bbdb->posts` WHERE `post_status` = '0' GROUP BY `forum_id`) ON DUPLICATE KEY UPDATE `posts` = VALUES(`posts`);"; + if ( is_wp_error( $bbdb->query( $sql ) ) ) { + return array( 1, sprintf( $statement, $result ) ); + } + + $result = __( 'Complete!' ); + return array( 0, sprintf( $statement, $result ) ); +} + +function bb_recount_user_topics_replied() +{ + global $bbdb; + + $statement = __( 'Counting the number of topics to which each user has replied… %s' ); + $result = __( 'Failed!' ); + + $sql_select = "SELECT `poster_id`, COUNT(DISTINCT `topic_id`) as `_count` FROM `$bbdb->posts` WHERE `post_status` = '0' GROUP BY `poster_id`;"; + $insert_rows = $bbdb->get_results( $sql_select ); + + if ( is_wp_error( $insert_rows ) ) { + return array( 1, sprintf( $statement, $result ) ); + } + + $meta_key = $bbdb->prefix . 'topics_replied'; + + $insert_values = array(); + foreach ( $insert_rows as $insert_row ) { + $insert_values[] = "('$insert_row->poster_id', '$meta_key', '$insert_row->_count')"; + } + + if ( !count( $insert_values ) ) { + return array( 2, sprintf( $statement, $result ) ); + } + + $sql_delete = "DELETE FROM `$bbdb->usermeta` WHERE `meta_key` = '$meta_key';"; + if ( is_wp_error( $bbdb->query( $sql_delete ) ) ) { + return array( 3, sprintf( $statement, $result ) ); + } + + $insert_values = array_chunk( $insert_values, 10000 ); + foreach ( $insert_values as $chunk ) { + $chunk = "\n" . join( ",\n", $chunk ); + $sql_insert = "INSERT INTO `$bbdb->usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES $chunk;"; + + if ( is_wp_error( $bbdb->query( $sql_insert ) ) ) { + return array( 4, sprintf( $statement, $result ) ); + } + } + + $result = __( 'Complete!' ); + return array( 0, sprintf( $statement, $result ) ); +} + +// This function bypasses the taxonomy API +function bb_recount_topic_tags() +{ + global $bbdb; + + $statement = __( 'Counting the number of topic tags in each topic… %s' ); + $result = __( 'Failed!' ); + + // Delete empty tags + $delete = bb_recount_tag_delete_empty(); + if ( $delete[0] > 0 ) { + $result = __( 'Could not delete empty tags.' ); + return array( 1, sprintf( $statement, $result ) ); + } + + // Get all tags + $sql_terms = "SELECT + `$bbdb->term_relationships`.`object_id`, + `$bbdb->term_taxonomy`.`term_id` + FROM `$bbdb->term_relationships` + JOIN `$bbdb->term_taxonomy` + ON `$bbdb->term_taxonomy`.`term_taxonomy_id` = `$bbdb->term_relationships`.`term_taxonomy_id` + WHERE + `$bbdb->term_taxonomy`.`taxonomy` = 'bb_topic_tag' + ORDER BY + `$bbdb->term_relationships`.`object_id`, + `$bbdb->term_taxonomy`.`term_id`;"; + + $terms = $bbdb->get_results( $sql_terms ); + if ( is_wp_error( $terms ) || !is_array( $terms ) ) { + return array( 2, sprintf( $statement, $result ) ); + } + if ( empty( $terms ) ) { + $result = __( 'No topic tags found.' ); + return array( 3, sprintf( $statement, $result ) ); + } + + // Count the tags in each topic + $topics = array(); + foreach ( $terms as $term ) { + if ( !isset( $topics[$term->object_id] ) ) { + $topics[$term->object_id] = 1; + } else { + $topics[$term->object_id]++; + } + } + if ( empty( $topics ) ) { + return array( 4, sprintf( $statement, $result ) ); + } + + // Build the values to insert into the SQL statement + $values = array(); + foreach ($topics as $topic_id => $tag_count) { + $values[] = '(' . $topic_id . ', ' . $tag_count . ')'; + } + if ( empty( $values ) ) { + return array( 5, sprintf( $statement, $result ) ); + } + + // Update the topics with the new tag counts + $values = array_chunk( $values, 10000 ); + foreach ($values as $chunk) { + $sql = "INSERT INTO `$bbdb->topics` (`topic_id`, `tag_count`) VALUES " . implode(", ", $chunk) . " ON DUPLICATE KEY UPDATE `tag_count` = VALUES(`tag_count`);"; + if ( is_wp_error( $bbdb->query( $sql ) ) ) { + return array( 6, sprintf( $statement, $result ) ); + } + } + + $result = __( 'Complete!' ); + return array( 0, sprintf( $statement, $result ) ); +} + +// This function bypasses the taxonomy API +function bb_recount_tag_topics() +{ + global $bbdb; + + $statement = __( 'Counting the number of topics in each topic tag… %s' ); + $result = __( 'Failed!' ); + + // Delete empty tags + $delete = bb_recount_tag_delete_empty(); + if ( $delete[0] > 0 ) { + $result = __( 'Could not delete empty tags.' ); + return array( 1, sprintf( $statement, $result ) ); + } + + // Get all tags + $sql_terms = "SELECT + `$bbdb->term_taxonomy`.`term_taxonomy_id`, + `$bbdb->term_relationships`.`object_id` + FROM `$bbdb->term_relationships` + JOIN `$bbdb->term_taxonomy` + ON `$bbdb->term_taxonomy`.`term_taxonomy_id` = `$bbdb->term_relationships`.`term_taxonomy_id` + WHERE + `$bbdb->term_taxonomy`.`taxonomy` = 'bb_topic_tag' + ORDER BY + `$bbdb->term_taxonomy`.`term_taxonomy_id`, + `$bbdb->term_relationships`.`object_id`;"; + + $terms = $bbdb->get_results( $sql_terms ); + if ( is_wp_error( $terms ) || !is_array( $terms ) ) { + return array( 2, sprintf( $statement, $result ) ); + } + if ( empty( $terms ) ) { + $result = __( 'No topic tags found.' ); + return array( 3, sprintf( $statement, $result ) ); + } + + // Count the topics in each tag + $tags = array(); + foreach ( $terms as $term ) { + if ( !isset( $tags[$term->term_taxonomy_id] ) ) { + $tags[$term->term_taxonomy_id] = 1; + } else { + $tags[$term->term_taxonomy_id]++; + } + } + if ( empty( $tags ) ) { + return array( 4, sprintf( $statement, $result ) ); + } + + // Build the values to insert into the SQL statement + $values = array(); + foreach ($tags as $term_taxonomy_id => $count) { + $values[] = '(' . $term_taxonomy_id . ', ' . $count . ')'; + } + if ( empty( $values ) ) { + return array( 5, sprintf( $statement, $result ) ); + } + + // Update the terms with the new tag counts + $values = array_chunk( $values, 10000 ); + foreach ($values as $chunk) { + $sql = "INSERT INTO `$bbdb->term_taxonomy` (`term_taxonomy_id`, `count`) VALUES " . implode(", ", $chunk) . " ON DUPLICATE KEY UPDATE `count` = VALUES(`count`);"; + if ( is_wp_error( $bbdb->query( $sql ) ) ) { + return array( 6, sprintf( $statement, $result ) ); + } + } + + if ($return_boolean) { + return true; + } + $result = __( 'Complete!' ); + return array( 0, sprintf( $statement, $result ) ); +} + +// This function bypasses the taxonomy API +function bb_recount_tag_delete_empty() +{ + global $bbdb; + + $statement = __( 'Deleting topic tags with no topics… %s' ); + $result = __( 'Failed!' ); + + static $run_once; + if ( isset( $run_once ) ) { + if ($run_once > 0) { + $exit = sprintf( __( 'failure (returned code %s)' ), $run_once ); + } else { + $exit = __( 'success' ); + } + $result = sprintf( __( 'Already run with %s.' ), $exit ); + return array( $run_once, sprintf( $statement, $result ) ); + } + + // Get all topic ids + $sql_topics = "SELECT `topic_id` FROM $bbdb->topics ORDER BY `topic_id`;"; + $topics = $bbdb->get_results( $sql_topics ); + if ( is_wp_error( $topics ) ) { + $result = __('No topics found.'); + $run_once = 1; + return array( 1, sprintf( $statement, $result ) ); + } + $topic_ids = array(); + foreach ($topics as $topic) { + $topic_ids[] = $topic->topic_id; + } + + // Get all topic tag term relationships without a valid topic id + $in_topic_ids = implode(', ', $topic_ids); + $sql_bad_term_relationships = "SELECT + `$bbdb->term_taxonomy`.`term_taxonomy_id`, + `$bbdb->term_taxonomy`.`term_id`, + `$bbdb->term_relationships`.`object_id` + FROM `$bbdb->term_relationships` + JOIN `$bbdb->term_taxonomy` + ON `$bbdb->term_taxonomy`.`term_taxonomy_id` = `$bbdb->term_relationships`.`term_taxonomy_id` + WHERE + `$bbdb->term_taxonomy`.`taxonomy` = 'bb_topic_tag' AND + `$bbdb->term_relationships`.`object_id` NOT IN ($in_topic_ids) + ORDER BY + `$bbdb->term_relationships`.`object_id`, + `$bbdb->term_taxonomy`.`term_id`, + `$bbdb->term_taxonomy`.`term_taxonomy_id`;"; + + $bad_term_relationships = $bbdb->get_results( $sql_bad_term_relationships ); + if ( is_wp_error( $bad_term_relationships ) || !is_array( $bad_term_relationships ) ) { + $run_once = 2; + return array( 2, sprintf( $statement, $result ) ); + } + + // Delete those bad term relationships + if ( !empty( $bad_term_relationships ) ) { + $values = array(); + foreach ( $bad_term_relationships as $bad_term_relationship ) { + $values[] = '(`object_id` = ' . $bad_term_relationship->object_id . ' AND `term_taxonomy_id` = ' . $bad_term_relationship->term_taxonomy_id . ')'; + } + if ( !empty( $values ) ) { + $values = join(' OR ', $values); + $sql_bad_term_relationships_delete = "DELETE + FROM `$bbdb->term_relationships` + WHERE $values;"; + if ( is_wp_error( $bbdb->query( $sql_bad_term_relationships_delete ) ) ) { + $run_once = 3; + return array( 3, sprintf( $statement, $result ) ); + } + } + } + + // Now get all term taxonomy ids with term relationships + $sql_term_relationships = "SELECT `term_taxonomy_id` FROM $bbdb->term_relationships ORDER BY `term_taxonomy_id`;"; + $term_taxonomy_ids = $bbdb->get_col($sql_term_relationships); + if ( is_wp_error( $term_taxonomy_ids ) ) { + $run_once = 4; + return array( 4, sprintf( $statement, $result ) ); + } + $term_taxonomy_ids = array_unique( $term_taxonomy_ids ); + + // Delete topic tags that don't have any term relationships + if ( !empty( $term_taxonomy_ids ) ) { + $in_term_taxonomy_ids = implode(', ', $term_taxonomy_ids); + $sql_delete_term_relationships = "DELETE + FROM $bbdb->term_taxonomy + WHERE + `taxonomy` = 'bb_topic_tag' AND + `term_taxonomy_id` NOT IN ($in_term_taxonomy_ids);"; + if ( is_wp_error( $bbdb->query( $sql_delete_term_relationships ) ) ) { + $run_once = 5; + return array( 5, sprintf( $statement, $result ) ); + } + } + + // Get all valid term ids + $sql_terms = "SELECT `term_id` FROM $bbdb->term_taxonomy ORDER BY `term_id`;"; + $term_ids = $bbdb->get_col($sql_terms); + if ( is_wp_error( $term_ids ) ) { + $run_once = 6; + return array( 6, sprintf( $statement, $result ) ); + } + $term_ids = array_unique( $term_ids ); + + // Delete terms that don't have any associated term taxonomies + if ( !empty( $term_ids ) ) { + $in_term_ids = implode(', ', $term_ids); + $sql_delete_terms = "DELETE + FROM $bbdb->terms + WHERE + `term_id` NOT IN ($in_term_ids);"; + if ( is_wp_error( $bbdb->query( $sql_delete_terms ) ) ) { + $run_once = 7; + return array( 7, sprintf( $statement, $result ) ); + } + } + + $result = __( 'Complete!' ); + $run_once = 0; + return array( 0, sprintf( $statement, $result ) ); +} + +function bb_recount_clean_favorites() +{ + global $bbdb; + + $statement = __( 'Removing deleted topics from user favorites… %s' ); + $result = __( 'Failed!' ); + + $meta_key = $bbdb->prefix . 'favorites'; + + $users = $bbdb->get_results( "SELECT `user_id`, `meta_value` AS `favorites` FROM `$bbdb->usermeta` WHERE `meta_key` = '$meta_key';" ); + if ( is_wp_error( $users ) ) { + return array( 1, sprintf( $statement, $result ) ); + } + + $topics = $bbdb->get_col( "SELECT `topic_id` FROM `$bbdb->topics` WHERE `topic_status` = '0';" ); + + if ( is_wp_error( $topics ) ) { + return array( 2, sprintf( $statement, $result ) ); + } + + $values = array(); + foreach ( $users as $user ) { + if ( empty( $user->favorites ) || !is_string( $user->favorites ) ) { + continue; + } + $favorites = explode( ',', $user->favorites ); + if ( empty( $favorites ) || !is_array( $favorites ) ) { + continue; + } + $favorites = join( ',', array_intersect( $topics, $favorites ) ); + $values[] = "('$user->user_id', '$meta_key', '$favorites')"; + } + + if ( !count( $values ) ) { + $result = __( 'Nothing to remove!' ); + return array( 0, sprintf( $statement, $result ) ); + } + + $sql_delete = "DELETE FROM `$bbdb->usermeta` WHERE `meta_key` = '$meta_key';"; + if ( is_wp_error( $bbdb->query( $sql_delete ) ) ) { + return array( 4, sprintf( $statement, $result ) ); + } + + $values = array_chunk( $values, 10000 ); + foreach ( $values as $chunk ) { + $chunk = "\n" . join( ",\n", $chunk ); + $sql_insert = "INSERT INTO `$bbdb->usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES $chunk;"; + if ( is_wp_error( $bbdb->query( $sql_insert ) ) ) { + return array( 5, sprintf( $statement, $result ) ); + } + } + + $result = __( 'Complete!' ); + return array( 0, sprintf( $statement, $result ) ); +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/functions.bb-upgrade.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/functions.bb-upgrade.php new file mode 100644 index 0000000..d021c96 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/includes/functions.bb-upgrade.php @@ -0,0 +1,533 @@ +get_results("SELECT forum_id, forum_name FROM $bbdb->forums ORDER BY forum_order ASC" ); + + $slugs = array(); + foreach ( $forums as $forum ) : + $slug = bb_slug_sanitize( wp_specialchars_decode( $forum->forum_name, ENT_QUOTES ) ); + $slugs[$slug][] = $forum->forum_id; + endforeach; + + foreach ( $slugs as $slug => $forum_ids ) : + foreach ( $forum_ids as $count => $forum_id ) : + $_slug = $slug; + $count = - $count; // madness + if ( is_numeric($slug) || $count ) + $_slug = bb_slug_increment( $slug, $count ); + $bbdb->query("UPDATE $bbdb->forums SET forum_slug = '$_slug' WHERE forum_id = '$forum_id';"); + endforeach; + endforeach; + unset($forums, $forum, $slugs, $slug, $_slug, $forum_ids, $forum_id, $count); + + // Topics + + $topics = (array) $bbdb->get_results("SELECT topic_id, topic_title FROM $bbdb->topics ORDER BY topic_start_time ASC" ); + + $slugs = array(); + foreach ( $topics as $topic) : + $slug = bb_slug_sanitize( wp_specialchars_decode( $topic->topic_title, ENT_QUOTES ) ); + $slugs[$slug][] = $topic->topic_id; + endforeach; + + foreach ( $slugs as $slug => $topic_ids ) : + foreach ( $topic_ids as $count => $topic_id ) : + $_slug = $slug; + $count = - $count; + if ( is_numeric($slug) || $count ) + $_slug = bb_slug_increment( $slug, $count ); + $bbdb->query("UPDATE $bbdb->topics SET topic_slug = '$_slug' WHERE topic_id = '$topic_id';"); + endforeach; + endforeach; + unset($topics, $topic, $slugs, $slug, $_slug, $topic_ids, $topic_id, $count); +} + +// Reversibly break passwords of blocked users. +function bb_upgrade_160() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 535 ) + return; + + require_once( BB_PATH . 'bb-admin/includes/functions.bb-admin.php' ); + $blocked = bb_get_ids_by_role( 'blocked' ); + foreach ( $blocked as $b ) + bb_break_password( $b ); + return 'Done reversibly breaking passwords: ' . __FUNCTION__; +} + +function bb_upgrade_170() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 536 ) + return; + + global $bbdb; + foreach ( (array) $bbdb->get_results("SELECT * FROM $bbdb->usermeta WHERE meta_value LIKE '%"%' OR meta_value LIKE '%'%'") as $meta ) { + $value = str_replace(array('"', '''), array('"', "'"), $meta->meta_value); + $value = stripslashes($value); + bb_update_usermeta( $meta->user_id, $meta->meta_key, $value); + } + bb_update_option( 'bb_db_version', 536 ); + return 'Done updating usermeta: ' . __FUNCTION__; +} + +function bb_upgrade_180() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 559 ) + return; + + global $bbdb; + + foreach ( (array) $bbdb->get_col("SELECT ID FROM $bbdb->users WHERE user_status = 1") as $user_id ) + bb_delete_user( $user_id ); + bb_update_option( 'bb_db_version', 559 ); + return 'Done clearing deleted users: ' . __FUNCTION__; +} + +function bb_upgrade_190() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 630 ) + return; + + global $bbdb; + + $exists = false; + foreach ( (array) $bbdb->get_col("DESC $bbdb->topics") as $col ) + if ( 'topic_resolved' == $col ) + $exists = true; + if ( !$exists ) + return; + + $topics = (array) $bbdb->get_results("SELECT topic_id, topic_resolved FROM $bbdb->topics" ); + foreach ( $topics as $topic ) + bb_update_topicmeta( $topic->topic_id, 'topic_resolved', $topic->topic_resolved ); + unset($topics,$topic); + + $bbdb->query("ALTER TABLE $bbdb->topics DROP topic_resolved"); + + bb_update_option( 'bb_db_version', 630 ); + + return 'Done converting topic_resolved: ' . __FUNCTION__; +} + +function bb_upgrade_200() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 845 ) + return; + + global $bbdb; + + $bbdb->hide_errors(); + $bbdb->query( "DROP INDEX tag_id_index ON $bbdb->tagged" ); + $bbdb->query( "DROP INDEX user_id ON $bbdb->topicmeta" ); + $bbdb->query( "DROP INDEX forum_id ON $bbdb->topics" ); + $bbdb->query( "DROP INDEX topic_time ON $bbdb->topics" ); + $bbdb->query( "DROP INDEX topic_start_time ON $bbdb->topics" ); + $bbdb->query( "DROP INDEX tag_id_index ON $bbdb->tagged" ); + $bbdb->query( "DROP INDEX topic_id ON $bbdb->posts" ); + $bbdb->query( "DROP INDEX poster_id ON $bbdb->posts" ); + $bbdb->show_errors(); + + bb_update_option( 'bb_db_version', 845 ); + + return 'Done removing old indices: ' . __FUNCTION__; +} + +// 210 converts text slugs to varchar(255) width slugs (upgrading from alpha version - fires before dbDelta) +// 1000 Gives new slugs (upgrading from previous release - fires after dbDelta) +function bb_upgrade_210() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 846 ) + return; + + global $bbdb; + + $bbdb->hide_errors(); + if ( !$bbdb->get_var("SELECT forum_slug FROM $bbdb->forums ORDER BY forum_order ASC LIMIT 1" ) ) + return; // Wait till after dbDelta + $bbdb->show_errors(); + + bb_upgrade_process_all_slugs(); + + bb_update_option( 'bb_db_version', 846 ); + + return 'Done adding slugs: ' . __FUNCTION__; +} + +function bb_upgrade_220() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 1051 ) + return; + + global $bbdb; + + $bbdb->query( "ALTER TABLE $bbdb->tagged DROP PRIMARY KEY" ); + $bbdb->query( "ALTER TABLE $bbdb->tagged ADD tagged_id bigint(20) unsigned NOT NULL auto_increment PRIMARY KEY FIRST" ); + + return "Done removing key from $bbdb->tagged: " . __FUNCTION__; +} + +function bb_upgrade_1000() { // Give all topics and forums slugs + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 846 ) + return; + + bb_upgrade_process_all_slugs(); + + bb_update_option( 'bb_db_version', 846 ); + + return 'Done adding slugs: ' . __FUNCTION__;; +} + +// Make sure all forums have a valid parent +function bb_upgrade_1010() { + global $bbdb; + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 952 ) + return; + + $forums = (array) $bbdb->get_results( "SELECT forum_id, forum_parent FROM $bbdb->forums" ); + $forum_ids = (array) $bbdb->get_col( '', 0 ); + + foreach ( $forums as $forum ) { + if ( $forum->forum_parent && !in_array( $forum->forum_parent, $forum_ids ) ) + $bbdb->query( "UPDATE $bbdb->forums SET forum_parent = 0 WHERE forum_id = '$forum->forum_id'" ); + } + + bb_update_option( 'bb_db_version', 952 ); + + return 'Done re-parenting orphaned forums: ' . __FUNCTION__; +} + +// Add a nicename for existing users if they don't have one already +function bb_upgrade_1020() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 977 ) + return; + + global $bbdb; + + $users = $bbdb->get_results( "SELECT ID, user_login, user_nicename FROM $bbdb->users WHERE user_nicename IS NULL OR user_nicename = ''" ); + + if ( $users ) { + foreach ( $users as $user ) { + $user_nicename = $_user_nicename = bb_user_nicename_sanitize( $user->user_login ); + while ( is_numeric($user_nicename) || $existing_user = bb_get_user_by_nicename( $user_nicename ) ) + $user_nicename = bb_slug_increment($_user_nicename, $existing_user->user_nicename, 50); + + $bbdb->query( "UPDATE $bbdb->users SET user_nicename = '$user_nicename' WHERE ID = $user->ID;" ); + } + } + + bb_update_option( 'bb_db_version', 977 ); + + return 'Done adding nice-names to existing users: ' . __FUNCTION__; +} + +// Move admin_email option to from_email +function bb_upgrade_1030() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 1058 ) + return; + + $admin_email = bb_get_option('admin_email'); + if ($admin_email) { + bb_update_option('from_email', $admin_email); + } + bb_delete_option('admin_email'); + + bb_update_option( 'bb_db_version', 1058 ); + + return 'Done moving admin_email to from_email: ' . __FUNCTION__; +} + +// Activate Akismet and bozo plugins and convert active plugins to new convention on upgrade only +function bb_upgrade_1040() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 1230 ) + return; + + // Only do this when upgrading + if ( defined( 'BB_UPGRADING' ) && BB_UPGRADING ) { + $plugins = bb_get_option('active_plugins'); + if ( bb_get_option('akismet_key') && !in_array('core#akismet.php', $plugins) ) { + $plugins[] = 'core#akismet.php'; + } + if ( !in_array('core#bozo.php', $plugins) ) { + $plugins[] = 'core#bozo.php'; + } + + $new_plugins = array(); + foreach ($plugins as $plugin) { + if (substr($plugin, 0, 5) != 'core#') { + if ($plugin != 'akismet.php' && $plugin != 'bozo.php') { + $new_plugins[] = 'user#' . $plugin; + } + } else { + $new_plugins[] = $plugin; + } + } + + bb_update_option( 'active_plugins', $new_plugins ); + } + + bb_update_option( 'bb_db_version', 1230 ); + + return 'Done activating Akismet and Bozo plugins and converting active plugins to new convention on upgrade only: ' . __FUNCTION__; +} + +// Update active theme if present +function bb_upgrade_1050() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 1234 ) + return; + + // Only do this when upgrading + if ( defined( 'BB_UPGRADING' ) && BB_UPGRADING ) { + if ( $theme = bb_get_option( 'bb_active_theme' ) ) { + bb_update_option( 'bb_active_theme', bb_theme_basename( $theme ) ); + } + } + + bb_update_option( 'bb_db_version', 1234 ); + + return 'Done updating active theme if present: ' . __FUNCTION__; +} + +function bb_upgrade_1070() { + global $bbdb; + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 1467 ) + return; + + $bbdb->query( "UPDATE `$bbdb->tags` SET `raw_tag` = TRIM(`raw_tag`)" ); + + bb_update_option( 'bb_db_version', 1467 ); + + return 'Whitespace trimmed from raw_tag: ' . __FUNCTION__; +} + +function bb_upgrade_1080() { + global $bbdb, $wp_taxonomy_object; + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 1526 ) + return; + + $offset = 0; + while ( $tags = (array) $bbdb->get_results( "SELECT * FROM $bbdb->tags LIMIT $offset, 100" ) ) { + if ( !ini_get('safe_mode') ) set_time_limit(600); + $wp_taxonomy_object->defer_term_counting(true); + for ( $i = 0; isset($tags[$i]); $i++ ) { + $bbdb->insert( $bbdb->terms, array( + 'name' => $tags[$i]->raw_tag, + 'slug' => $tags[$i]->tag + ) ); + $term_id = $bbdb->insert_id; + $bbdb->insert( $bbdb->term_taxonomy, array( + 'term_id' => $term_id, + 'taxonomy' => 'bb_topic_tag', + 'description' => '' + ) ); + $term_taxonomy_id = $bbdb->insert_id; + $topics = (array) $bbdb->get_results( $bbdb->prepare( "SELECT user_id, topic_id FROM $bbdb->tagged WHERE tag_id = %d", $tags[$i]->tag_id ) ); + for ( $j = 0; isset($topics[$j]); $j++ ) { + $bbdb->insert( $bbdb->term_relationships, array( + 'object_id' => $topics[$j]->topic_id, + 'term_taxonomy_id' => $term_taxonomy_id, + 'user_id' => $topics[$j]->user_id + ) ); + } + $wp_taxonomy_object->update_term_count( array( $term_taxonomy_id ), 'bb_topic_tag' ); + } + $wp_taxonomy_object->defer_term_counting(false); + $offset += 100; + } + + bb_update_option( 'bb_db_version', 1526 ); + + return 'Tags copied to taxonomy tables: ' . __FUNCTION__; +} + +function bb_upgrade_1090() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 1589 ) + return; + + global $bbdb; + + $users = (array) $bbdb->get_results( "SELECT `ID`, `user_login` FROM $bbdb->users WHERE `display_name` = '' OR `display_name` IS NULL;" ); + + if ($users) { + foreach ($users as $user) { + $bbdb->query( "UPDATE $bbdb->users SET `display_name` = '" . $user->user_login . "' WHERE ID = " . $user->ID . ";" ); + } + unset($user, $users); + } + + bb_update_option( 'bb_db_version', 1589 ); + + return 'Display names populated: ' . __FUNCTION__; +} + +function bb_upgrade_1100() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 1638 ) + return; + + global $bbdb; + + $bbdb->query( "DROP INDEX forum_stickies ON $bbdb->topics" ); + + bb_update_option( 'bb_db_version', 1638 ); + + return 'Index forum_stickies dropped: ' . __FUNCTION__; +} + +function bb_upgrade_1110() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 2077 ) + return; + + // No matter what happens, update the db version + bb_update_option( 'bb_db_version', 2077 ); + + if ( !defined( 'BB_PLUGIN_DIR' ) ) { + return; + } + + if ( !BB_PLUGIN_DIR ) { + return; + } + + if ( file_exists( BB_PLUGIN_DIR ) ) { + return; + } + + // Just suppress errors as this is not critical + if ( @mkdir( BB_PLUGIN_DIR, 0755 ) ) { + return 'Making plugin directory at ' . BB_PLUGIN_DIR . ': ' . __FUNCTION__; + } + + return; +} + +function bb_upgrade_1120() { + if ( ( $dbv = bb_get_option_from_db( 'bb_db_version' ) ) && $dbv >= 2078 ) { + return; + } + + // No matter what happens, update the db version + bb_update_option( 'bb_db_version', 2078 ); + + if ( !defined( 'BB_THEME_DIR' ) ) { + return; + } + + if ( !BB_THEME_DIR ) { + return; + } + + if ( file_exists( BB_THEME_DIR ) ) { + return; + } + + // Just suppress errors as this is not critical + if ( @mkdir( BB_THEME_DIR, 0755 ) ) { + return 'Making theme directory at ' . BB_THEME_DIR . ': ' . __FUNCTION__; + } + + return; +} + +// Subscription Option +function bb_upgrade_1130() { + if ( $dbv = bb_get_option_from_db( 'bb_db_version' ) && $dbv >= 2471 ) + return; + + // If the option is already there, then return + if ( bb_get_option( 'enable_subscriptions' ) ) + return; + + bb_update_option( 'enable_subscriptions', 1 ); + + bb_update_option( 'bb_db_version', 2471 ); + + return 'Added subscriptions option and set its value to true: ' . __FUNCTION__; +} + +function bb_deslash($content) { + // Note: \\\ inside a regex denotes a single backslash. + + // Replace one or more backslashes followed by a single quote with + // a single quote. + $content = preg_replace("/\\\+'/", "'", $content); + + // Replace one or more backslashes followed by a double quote with + // a double quote. + $content = preg_replace('/\\\+"/', '"', $content); + + // Replace one or more backslashes with one backslash. + $content = preg_replace("/\\\+/", "\\", $content); + + return $content; +} + +function bb_update_db_version() { + bb_update_option( 'bb_db_version', bb_get_option( 'bb_db_version' ) ); +} +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/index.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/index.php new file mode 100644 index 0000000..da6ec45 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/index.php @@ -0,0 +1,149 @@ +%s forum', '%s forums', $rn_forums), $rn_forums ); + +$rn_topics = number_format( get_total_topics() ); +$rn_topics = sprintf(__ngettext('%s topic', '%s topics', $rn_topics), $rn_topics ); + +$rn_posts = number_format( get_total_posts() ); +$rn_posts = sprintf(__ngettext('%s post', '%s posts', $rn_posts), $rn_posts ); + +$rn_users = number_format( bb_get_total_users() ); +$rn_users = sprintf(__ngettext('%s user', '%s users', $rn_users), $rn_users ); + +$rn_topic_tags = number_format( bb_get_total_topic_tags() ); +$rn_topic_tags = sprintf(__ngettext('%s tag', '%s tags', $rn_topic_tags), $rn_topic_tags ); + +$rn_topics_average = number_format( get_topics_per_day() ); +$rn_topics_average = sprintf(__ngettext('%s topic', '%s topics', $rn_topics_average), $rn_topics_average ); + +$rn_posts_average = number_format( get_posts_per_day() ); +$rn_posts_average = sprintf(__ngettext('%s post', '%s posts', $rn_posts_average), $rn_posts_average ); + +$rn_users_average = number_format( get_registrations_per_day() ); +$rn_users_average = sprintf(__ngettext('%s user', '%s users', $rn_users_average), $rn_users_average ); + +$rn_topic_tags_average = number_format( bb_get_topic_tags_per_day() ); +$rn_topic_tags_average = sprintf(__ngettext('%s tag', '%s tags', $rn_topic_tags_average), $rn_topic_tags_average ); + +// Filter the numbers +$rn = apply_filters( 'bb_admin_right_now', array( + 'forums' => array( $rn_forums, '-' ), + 'topics' => array( $rn_topics, $rn_topics_average ), + 'posts' => array( $rn_posts, $rn_posts_average ), + 'topic_tags' => array( $rn_topic_tags, $rn_topic_tags_average ), + 'users' => array( $rn_users, $rn_users_average ) +) ); + +$bb_admin_body_class = ' bb-admin-dashboard'; + +bb_get_admin_header(); ?> + +
    +

    + + + +
    +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +

    %2$s' ), bb_get_uri( 'bb-admin/themes.php', null, BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN ), bb_get_current_theme_data( 'Name' ) ); ?>

    +

    bbPress %s' ), bb_get_option( 'version' ) ); ?>

    +
    +
    + +
    +

    + +
      + + +
    • + poster_id ) { + printf( + __( 'Post on %3$s by %5$s' ), + esc_attr( add_query_arg( 'view', 'all', get_post_link() ) ), + get_topic_link( $bb_post->topic_id ), + get_topic_title( $bb_post->topic_id ), + get_user_profile_link( $bb_post->poster_id ), + get_post_author() + ); + } else { + printf( + __( 'Post on %3$s by %4$s' ), + esc_attr( add_query_arg( 'view', 'all', get_post_link() ) ), + get_topic_link( $bb_post->topic_id ), + get_topic_title( $bb_post->topic_id ), + get_post_author() + ); + } + ?> +
    • + +
    • + topic_poster ) { + printf( + __( 'Topic titled %2$s started by %4$s' ), + esc_attr( add_query_arg( 'view', 'all', get_topic_link() ) ), + get_topic_title( $topic->topic_id ), + get_user_profile_link( $topic->topic_poster ), + get_topic_author( $topic->topic_id ) + ); + } else { + printf( + __( 'Topic titled %2$s started by %3$s' ), + esc_attr( add_query_arg( 'view', 'all', get_topic_link() ) ), + get_topic_title( $topic->topic_id ), + get_topic_author( $topic->topic_id ) + ); + } + ?> +
    • + +
    + +

    + +

    + +
    +
    +
    + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/install-rtl.css b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/install-rtl.css new file mode 100644 index 0000000..9accfa7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/install-rtl.css @@ -0,0 +1,100 @@ +body { + font-family: Tahoma, "Times New Roman"; +} + +div#container { + text-align: right; +} + +dl { + border-left-width: 0; + border-right: 1px solid rgb(125, 125, 125); + margin-right: 2.5em; + margin-left: 0; +} + +dt { + padding-right: 0.6em; + padding-left: 0; +} + +dd { + padding-right: 3.6em; + padding-left: 0; +} + +p.status { + right: auto; + left: 0; + text-shadow: none; +} + +h2 { + text-shadow: none; +} + +label a.note-toggle { + float: right; + padding-left: 0; + width: 18px; + margin-left: 0; + margin-right: 6px; +} + +label.has-note.for-textarea a.note-toggle { + margin-left: 0; + margin-right: 6px; +} + +label.has-note.for-select a.note-toggle { + margin-left: 0; + margin-right: 4px; +} + +label.has-note.for-toggle a.note-toggle { + margin-left: 0; + margin-right: 6px; +} + +label.for-textarea span, +label.for-toggle span { + float: right; +} + +label span.error { + margin-right: 3em; + margin-left: 0.4em; +} + +fieldset.buttons label.forward { + float: left; +} + +fieldset.buttons label.back { + float: right; +} + +p.note { + margin-right: 2.5em; + margin-left: 0; + border-left-width: 0; + border-right: 1px solid rgb(50, 140, 0); +} + +input.text { + font-family: Tahoma, "Times New Roman"; + float: right; +} + +select { + font-family: Tahoma, "Times New Roman"; + float: right; +} + +textarea { + font-family: Tahoma, "Times New Roman"; +} + +input.button { + font-family: Tahoma, "Times New Roman"; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/install.css b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/install.css new file mode 100644 index 0000000..6870df0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/install.css @@ -0,0 +1,433 @@ +/* +Start with some basic resets +*/ + +/* +Copyright (c) 2009, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.7.0 +*/ +html{color:#000;background:#FFF;} +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;} +table{border-collapse:collapse;border-spacing:0;} +fieldset,img{border:0;} +address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;} +del,ins{text-decoration:none;} +li{list-style:none;} +caption,th{text-align:left;} +h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;} +q:before,q:after{content:'';} +abbr,acronym{border:0;font-variant:normal;} +sup{vertical-align:baseline;} +sub{vertical-align:baseline;} +legend{color:#000;} +input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;} +input,button,textarea,select{*font-size:100%;} +body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;} +select,input,button,textarea,button{font:99% arial,helvetica,clean,sans-serif;} +table{font-size:inherit;font:100%;} +pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;} + +/* +Now for our own code +*/ + +html { + background-color: rgb(247, 247, 247); +} + +body { + text-align: center; + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 1em; + color: rgb(255, 255, 255); +} + +div#container { + margin: 2em auto 1em auto; + padding: 1em 32px; + width: 700px; + background-color: rgb(255, 255, 255); + text-align: left; + -moz-border-radius: 11px; + -khtml-border-radius: 11px; + -webkit-border-radius: 11px; + border-radius: 11px; + border: 1px solid rgb(223, 223, 223); + color: rgb(51, 51, 51); +} + +a { + color: rgb(50, 140, 0); + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +div.logo img { + margin: 12px 0 27px 0; + width: 200px; + height: 57px; + display: block; +} + +h1 { + margin: 0 0 2em 0; + font-size: 0.75em; + font-weight: bold; +} + +p { + margin: 0 0 1em 0; + font-size: 0.75em; + line-height: 1.4em; +} + +dl { + border-left: 1px solid rgb(125, 125, 125); + margin: 1.5em 0 1.5em 2.5em; + font-size: 0.75em; +} + +dl code { + font-size: 1.4em; +} + +dt { + font-size: 1em; + padding: 0.6em 0 0.2em 0.6em; +} + +dd { + font-size: 1em; + padding: 0 0 0.6em 3.6em; +} + +p.status { + position: absolute; + right: 0; + top: -2.4em; + margin: 0; + padding: 0.5em 1em; + line-height: 1.4em; + text-shadow: rgb(255, 255, 255) 0px 1px 0px; + color: rgb(70, 70, 70); +} + +p code { + font-size: 1.25em; +} + +div.open div p.error.last, +div.open div p.message.last { + margin-bottom: 1.4em; +} + +h2 { + font-size: 0.75em; + background-color: rgb(236, 236, 236); + padding: 0.5em 1em; + text-shadow: rgb(255, 255, 255) 0px 1px 0px; + color: rgb(70, 70, 70); + font-weight: bold; + line-height: 1.4em; +} + +div.open, +div.closed { + border: 1px solid rgb(223, 223, 223); + -moz-border-radius: 6px; + -khtml-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + margin-bottom: 1em; + background-color: rgb(247, 247, 247); +} + +div.open div { + padding: 1em; + margin: 1px 0; +} + +div.closed div { + position: relative; +} + +p.error { + border: 1px solid rgb(204, 0, 0); + background-color: rgb(255, 235, 232); + padding: 0.6em; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +p.error a { + color: rgb(204, 0, 0); +} + +dl.error { + margin-top: -1em; +} + +p.message { + border: 1px solid rgb(230, 219, 85); + background-color: rgb(255, 251, 204); + padding: 0.6em; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +div.open div.toggle { + margin: 0; + padding: 0; +} + +div.open h2 { + color: rgb(0, 0, 0); +} + +form { + clear: both; + border: 1px solid rgb(223, 223, 223); + background-color: rgb(255, 255, 255); + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + padding: 1em 1em 1em 1em; +} + +legend { + font-size: 0.9em; + font-weight: bold; + padding-bottom: 0.5em; +} + +label { + display: block; + margin: 0 0 1.8em 0; + font-size: 0.75em; + color: rgb(34, 34, 34); + cursor: pointer; + clear: both; +} + +label span { + display: block; + margin-bottom: 5px; +} + +label.error { + border: 1px solid rgb(204, 0, 0); + background-color: rgb(255, 235, 232); + padding: 0.6em; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +label.forward { + clear: none; +} + +label a.note-toggle { + background-color: rgb(223, 223, 223); + color: rgb(255, 255, 255); + display: block; + text-align: center; + float: left; + font-weight: bold; + font-size: 1.2em; + padding-top: 1px; + padding-left: 1px; + width: 18px; + height: 18px; + line-height: 18px; + margin-left: 6px; + margin-top: 4px; + -moz-border-radius: 9px; + -khtml-border-radius: 9px; + -webkit-border-radius: 9px; + border-radius: 9px; +} + +label a.note-toggle:hover { + text-decoration: none; + background-color: rgb(50, 140, 0); +} + +label.has-note.for-textarea a.note-toggle { + margin-top: -2px; + margin-left: 6px; +} + +label.has-note.for-select a.note-toggle { + margin-top: 3px; + margin-left: 4px; +} + +label.has-note.for-toggle a.note-toggle { + margin-top: -2px; + margin-left: 6px; +} + +label.for-textarea span, +label.for-toggle span { + float: left; +} + +label.for-toggle span { + margin-bottom: 0; +} + +label span.error { + color: rgb(204, 0, 0); + display: block; + margin: 0.4em 0.4em 0.4em 3em; +} + +label code { + font-size: 1.25em; +} + +fieldset.buttons label.forward { + margin: 0; + float: right; +} + +fieldset.buttons label.back { + margin: 0; + float: left; +} + +p.note { + margin: 0 0 0 2.5em; + color: rgb(102, 102, 102); + border-left: 1px solid rgb(50, 140, 0); + padding: 0.6em; + font-size: 0.9em; + font-style: italic; + clear: both; +} + +input.text { + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 1.2em; + padding: 4px; + border: 1px solid rgb(187, 187, 187); + width: 400px; + display: block; + float: left; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + clear: both; +} + +select { + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 1.2em; + padding: 0; + border: 1px solid rgb(187, 187, 187); + display: block; + float: left; +} + +textarea { + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 0.9em; + padding: 0; + border: 1px solid rgb(187, 187, 187); + width: 630px; + max-width: 630px; + height: 38em; + display: block; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + clear: both; +} + +textarea#config { + text-align: left; +} + +textarea.short, +textarea#error_log { + height: 15em; +} + +textarea#error_log { + border-color: rgb(153, 0, 0); + color: rgb(153, 0, 0); +} + +input.checkbox { + font-size: 1.25em; +} + +input.button { + background: url('images/white-grad.png') repeat-x 0 0 rgb(242, 242, 242); + -moz-border-radius: 15px; + -khtml-border-radius: 15px; + -webkit-border-radius: 15px; + border-radius: 15px; + border: 1px solid rgb(187, 187, 187); + color: rgb(70, 70, 70); + cursor: pointer; + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 1.2em; + line-height: 1.2em; + padding: 0.45em 0.9em; + text-decoration: none; +} + +input.button:hover { + border-color: rgb(102, 102, 102); + color: rgb(0, 0, 0); +} + +input.button:active { + background-image: url('images/white-grad-active.png'); +} + +label#label-toggle_4 { + margin-bottom: 0; +} + +label#label-toggle_4 span { + margin-bottom: 0.4em; +} + +label#label-error_log, +label#label-installation_log { + margin-top: 1.8em; + margin-bottom: 0; +} + +div.clear { + clear: both; + height: 0; + line-height: 0; + font-size: 0; + margin: 0 !important; + padding: 0 !important; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/install.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/install.php new file mode 100644 index 0000000..2d2e2f1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/install.php @@ -0,0 +1,401 @@ +header(); +?> + +step) { + case -1: + $bb_install->messages(); + $bb_install->intro(); + break; + + default: + $bb_install->step_header(0); + + if ($bb_install->step === 0) { +?> +
    +messages(); + $bb_install->get_language_selector(); + $bb_install->input_buttons('forward_0_0', false, 1); +?> +
    +sanitize_form_data(); + } + + $bb_install->step_footer(); + + $bb_install->step_header(1); + + if ($bb_install->step === 1) { + + switch($bb_install->step_status[1]) { + case 'incomplete': +?> +
    +messages(); +?> +
    +input_text('bbdb_name'); + $bb_install->input_text('bbdb_user'); + $bb_install->input_text('bbdb_password'); + $bb_install->input_text('bbdb_host'); + $bb_install->select_language(); + $bb_install->input_toggle('toggle_1'); +?> +
    +input_text('bbdb_charset'); + $bb_install->input_text('bbdb_collate'); + //$bb_install->input_text('bb_auth_key'); + //$bb_install->input_text('bb_secure_auth_key'); + //$bb_install->input_text('bb_logged_in_key'); + //$bb_install->input_text('bb_nonce_key'); + $bb_install->input_text('bb_table_prefix', 'ltr'); +?> +
    +
    +input_buttons('forward_1_0'); +?> +
    + +
    +messages(); + $bb_install->hidden_step_inputs(); +?> +
    +textarea('config', 'ltr'); +?> +
    +input_buttons('forward_1_1', 'back_1_1'); +?> +
    + +
    +messages(); + $bb_install->input_buttons('forward_1_2', false, 2); +?> +
    +step_footer(); + + $bb_install->step_header(2); + + if ($bb_install->step === 2) { + + switch ($bb_install->step_status[2]) { + case 'incomplete': +?> +
    +messages(); +?> +
    +input_toggle('toggle_2_0'); +?> +
    +
    +
    +input_toggle('toggle_2_1'); +?> +
    +
    +
    + +

    +

    +input_text('wp_siteurl', 'ltr'); + $bb_install->input_text('wp_home', 'ltr'); + $bb_install->input_text('wp_auth_key'); + $bb_install->input_text('wp_auth_salt'); + $bb_install->input_text('wp_secure_auth_key'); + $bb_install->input_text('wp_secure_auth_salt'); + $bb_install->input_text('wp_logged_in_key'); + $bb_install->input_text('wp_logged_in_salt'); +?> +
    +
    +
    +input_toggle('toggle_2_2'); +?> +
    +
    +
    + +

    +input_text('wp_table_prefix', 'ltr'); + $bb_install->input_text('wordpress_mu_primary_blog_id', 'ltr'); + $bb_install->input_toggle('toggle_2_3'); +?> +
    +
    +
    + +

    not required. Look before you leap!'); ?>

    +

    +input_text('user_bbdb_name'); + $bb_install->input_text('user_bbdb_user'); + $bb_install->input_text('user_bbdb_password'); + $bb_install->input_text('user_bbdb_host'); + $bb_install->input_text('user_bbdb_charset'); + $bb_install->input_text('user_bbdb_collate'); +?> +
    +
    + +

    wp_user and wp_usermeta.'); ?>

    +input_text('custom_user_table'); + $bb_install->input_text('custom_user_meta_table'); +?> +
    +
    +
    +
    +input_buttons('forward_2_0'); +?> +
    + + +
    +messages(); +?> +
    + +
    +hidden_step_inputs(); + $bb_install->input_buttons('forward_2_1', 'back_2_1', 3); +?> +
    +step_footer(); + + $bb_install->step_header(3); + + if ($bb_install->step === 3) { + + switch($bb_install->step_status[3]) { + case 'incomplete': +?> +
    +messages(); +?> +
    + +
    +hidden_step_inputs(2); +?> +
    +input_text('name'); + $bb_install->input_text('uri', 'ltr'); + + if ($bb_install->populate_keymaster_user_login_from_user_tables()) { + echo $bb_install->strings[3]['scripts']['changeKeymasterEmail']; + $bb_install->select('keymaster_user_login'); + $bb_install->input_hidden('keymaster_user_email'); + } else { + $bb_install->input_text('keymaster_user_login'); + $bb_install->input_text('keymaster_user_email', 'ltr'); + } + $bb_install->input_hidden('keymaster_user_type'); + + if (!$bb_install->database_tables_are_installed()) { + $bb_install->input_text('forum_name'); + } +?> +
    +input_buttons('forward_3_0'); +?> +
    + +
    +messages(); +?> +
    + +
    +hidden_step_inputs(2); + $bb_install->hidden_step_inputs(); // The current step (3) is assumed here + $bb_install->input_buttons('forward_3_1', 'back_3_1', 4); +?> +
    +step_footer(); + + if ($bb_install->step === 4) { + + $bb_install->step_header(4); + $bb_install->messages(); + + if ($bb_install->step_status[4] == 'complete') { +?> +

    +
    +
    +
    data[3]['form']['keymaster_user_login']['value'] ); ?>
    +
    +
    data[4]['form']['keymaster_user_password']['value'] ); ?>
    +
    +
    +
    +data[3]['form']['keymaster_user_type']['value'] == 'bbPress') { +?> +

    Note that password carefully! It is a random password that was generated just for you. If you lose it, you will have to delete the tables from the database yourself, and re-install bbPress.'); ?>

    + +
    +
    +input_toggle('toggle_4'); +?> + +
    +
    +step_footer(); + + } else { +//? > +//
    +//footer(); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/js/admin-forums.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/js/admin-forums.js new file mode 100644 index 0000000..4414acd --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/js/admin-forums.js @@ -0,0 +1,140 @@ +jQuery( function($) { // In here $ is jQuery + +bbSortForums = { + handleText: 'drag', + handle: '', + sortCfg: { + accept: 'forum', + handle: 'img.sort-handle', + opacity: .3, + helperclass: 'helper', + onStop: function() { + bbSortForums.place = null; + bbSortForums.recolor(); + } + }, + editText: 'Edit Forum Order', + saveText: 'Save Forum Order', + place: null, // The id of the list item it's currently hovering before + placed: null, // The id of the list item it's been made a child of + rtl: 'rtl' == $('html').attr( 'dir' ), + + recolor: function() { + $('#forum-list li:gt(0)').css( 'background-color', '' ).filter(':even').removeClass('alt').end().filter(':odd').addClass('alt'); + }, + + checkHover: function(el, doit) { + if ( this.place == el.id && doit ) + return; + + if ( !doit ) { + this.place = null; + return; + } + + this.place = el.id; + if ( $('#' + this.place).children('ul:has(li:visible)').size() ) // Don't shift over if there's already a UL with stuff in it + return; + + var id = this.place.split('-')[1]; + $('#' + this.place).not(':has(ul)').append("
      ").end().children('ul').append(jQuery.iSort.helper.get(0)); // Place in shifted box + this.placed = 'forum-' + id; + }, + + serialize: function () { + h = ''; + $('#forum-list, #forum-list ul').each( function() { + var i = this.id; + $('#' + i + '> .forum').each( function () { + if (h.length > 0) + h += '&'; + var root = 'forum-list' == i ? 0 : i.split('-')[2]; + h += 'root[' + root + '][]=' + this.id.split('-')[1]; + } ); + } ); + return h; + }, + + init: function() { + this.handle = "" + this.handleText +  ""; + var div = document.createElement('div'); + div.innerHTML = this.saveText; // Save the raquo! + this.saveText = div.childNodes[0].nodeValue; + div.innerHTML = this.editText; // Save the raquo! + this.editText = div.childNodes[0].nodeValue; + div = null; + $('#forum-list').after("
      "); + + $('#forum-order-edit').toggle( function() { + $(this).val(bbSortForums.saveText); + $('#forum-list li:gt(0) div.row-title').before(bbSortForums.handle); + $('#forum-list').Sortable( bbSortForums.sortCfg ); + $('body').addClass('sorting'); + }, function() { + $(this).val(bbSortForums.editText); + $('.sort-handle').remove(); + + var hash = bbSortForums.serialize(); + hash += '&' + $.SortSerialize('forum-list').hash.replace(/forum-list/g, 'order').replace(/forum-/g, '') + $('#forum-list').SortableDestroy(); + $('body').removeClass('sorting'); + + $.post( + 'admin-ajax.php', + 'action=order-forums&_ajax_nonce=' + $('#add-forum input[name=order-nonce]').val() + '&' + hash + ); + } ); + } +} + +// overwrite with more advanced function +jQuery.iSort.checkhover = function(e,o) { + if (!jQuery.iDrag.dragged) + return; + + if ( e.dropCfg.el.size() > 0 ) { + var bottom = jQuery.grep(e.dropCfg.el, function(i) { // All the list items whose bottom edges are inside the draggable + var x = bbSortForums.rtl ? i.pos.x + i.pos.wb > jQuery.iDrag.dragged.dragCfg.nx + jQuery.iDrag.dragged.dragCfg.oC.wb : i.pos.x < jQuery.iDrag.dragged.dragCfg.nx; + return i.pos.y + i.pos.hb > jQuery.iDrag.dragged.dragCfg.ny && i.pos.y + i.pos.hb < jQuery.iDrag.dragged.dragCfg.ny + 30 && x; + } ); + + if ( bottom.length > 0 ) { // Use the lowest one one the totem pole + var x = bbSortForums.rtl ? bottom[bottom.length-1].pos.x + bottom[bottom.length-1].pos.wb - 30 > jQuery.iDrag.dragged.dragCfg.nx + jQuery.iDrag.dragged.dragCfg.oC.wb : bottom[bottom.length-1].pos.x + 30 < jQuery.iDrag.dragged.dragCfg.nx; + if ( bbSortForums.placed != bottom[bottom.length-1].id || !x ) { // Testing to see if still placed in shifted box + bbSortForums.placed = null; + jQuery(bottom[bottom.length-1]).after(jQuery.iSort.helper.get(0)); + } + bbSortForums.checkHover(bottom[bottom.length-1], x); // If far enough right, shift it over + return; + } + + // Didn't find anything by checking bottems. Look at tops + var top = jQuery.grep(e.dropCfg.el, function(i) { // All the list items whose top edges are inside the draggable + var x = bbSortForums.rtl ? i.pos.x + i.pos.wb > jQuery.iDrag.dragged.dragCfg.nx : i.pos.x < jQuery.iDrag.dragged.dragCfg.nx; + return i.pos.y > jQuery.iDrag.dragged.dragCfg.ny && i.pos.y < jQuery.iDrag.dragged.dragCfg.ny + 30 && x; + } ); + + if ( top.length ) { // Use the highest one (should be only one) + jQuery(top[0]).before(jQuery.iSort.helper.get(0)); + bbSortForums.checkHover(top[0], false); + return; + } + } + jQuery.iSort.helper.get(0).style.display = 'block'; +} + +if ( 'undefined' != typeof bbSortForumsL10n ) + $.extend( bbSortForums, bbSortForumsL10n ); + +bbSortForums.init(); + +var options = $('#forum-parent').get(0).options; +var addAfter = function( r, settings ) { + var name = $("" + $('name', r).text() + "").html(); + var id = $('forum', r).attr('id'); + options[options.length] = new Option(name, id); +} + +$('#forum-list').wpList( { addAfter: addAfter } ); + +} ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/js/common.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/js/common.js new file mode 100644 index 0000000..d5eb81e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/js/common.js @@ -0,0 +1,93 @@ +var showNotice, adminMenu, columns; +(function($){ +// sidebar admin menu +adminMenu = { + + init : function() { + $('ul#bbAdminMenu li.bb-menu div.bb-menu-toggle').each( function() { + if ( $(this).siblings('div.bb-menu-sub-wrap').length ) + $(this).click(function(){ adminMenu.toggle( $(this).siblings('div.bb-menu-sub-wrap') ); }); + else + $(this).hide(); + }); + + $('#bbAdminMenu li.bb-menu.bb-menu-separator a').click(function(){ + if ( $('body').hasClass('bb-menu-folded') ) { + adminMenu.fold(1); + deleteUserSetting( 'fm' ); + } else { + adminMenu.fold(); + setUserSetting( 'fm', 'f' ); + } + return false; + }); + + if ( $('body').hasClass('bb-menu-folded') ) { + this.fold(); + } + this.restoreMenuState(); + }, + + restoreMenuState : function() { + $('ul#bbAdminMenu li.bb-menu.bb-menu-has-submenu').each(function(i, e) { + var v = getUserSetting( 'm'+i ); + if ( $(e).hasClass('bb-menu-current') ) return true; // leave the current parent open + + if ( 'o' == v ) $(e).addClass('bb-menu-open'); + else if ( 'c' == v ) $(e).removeClass('bb-menu-open'); + }); + }, + + toggle : function(el) { + el['slideToggle'](150, function(){el.css('display','');}).parent().toggleClass( 'bb-menu-open' ); + + $('ul#bbAdminMenu li.bb-menu.bb-menu-has-submenu').each(function(i, e) { + var v = $(e).hasClass('bb-menu-open') ? 'o' : 'c'; + setUserSetting( 'm'+i, v ); + }); + + return false; + }, + + fold : function(off) { + if (off) { + $('body').removeClass('bb-menu-folded'); + $('#bbAdminMenu li.bb-menu.bb-menu-has-submenu').unbind(); + } else { + $('body').addClass('bb-menu-folded'); + $('#bbAdminMenu li.bb-menu.bb-menu-has-submenu').hoverIntent({ + over: function(e){ + var m, b, h, o, f; + m = $(this).find('div.bb-menu-sub-wrap'); + b = m.parent().offset().top + m.height() + 1; // Bottom offset of the menu + h = $('#bbWrap').height(); // Height of the entire page + o = 60 + b - h; + f = $(window).height() + $('body').scrollTop() - 15; // The fold + if (f < (b - o)) { + o = b - f; + } + if (o > 1) { + m.css({'marginTop':'-'+o+'px'}); + } else if ( m.css('marginTop') ) { + m.css({'marginTop':''}); + } + m.addClass('bb-menu-sub-open'); + }, + out: function(){ $(this).find('div.bb-menu-sub-wrap').removeClass('bb-menu-sub-open').css({'marginTop':''}); }, + timeout: 220, + sensitivity: 8, + interval: 100 + }); + } + } +}; + +$(document).ready(function(){ + adminMenu.init(); + $('thead .check-column :checkbox, tfoot .check-column :checkbox').click( function() { + $(this).parents( 'table' ).find( '.check-column :checkbox' ).attr( 'checked', $(this).is( ':checked' ) ? 'checked' : false ); + } ); +}); + + +})(jQuery); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/js/utils.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/js/utils.js new file mode 100644 index 0000000..3125bff --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/js/utils.js @@ -0,0 +1,166 @@ +// utility functions +function convertEntities(o) { + var c, v; + c = function(s) { + if (/&[^;]+;/.test(s)) { + var e = document.createElement("div"); + e.innerHTML = s; + return !e.firstChild ? s : e.firstChild.nodeValue; + } + return s; + } + + if ( typeof o === 'string' ) { + return c(o); + } else if ( typeof o === 'object' ) { + for (v in o) { + if ( typeof o[v] === 'string' ) { + o[v] = c(o[v]); + } + } + } + return o; +} + +var wpCookies = { +// The following functions are from Cookie.js class in TinyMCE, Moxiecode, used under LGPL. + + each : function(o, cb, s) { + var n, l; + + if (!o) + return 0; + + s = s || o; + + if (typeof(o.length) != 'undefined') { + for (n=0, l = o.length; n $value ) { + if ( !in_array( $option, array( '_wpnonce', '_wp_http_referer', 'action', 'submit' ) ) ) { + $option = trim( $option ); + $value = is_array( $value ) ? $value : trim( $value ); + $value = stripslashes_deep( $value ); + if ( $value ) { + bb_update_option( $option, $value ); + } else { + bb_delete_option( $option ); + } + } + } + + $goback = add_query_arg('updated', 'true', wp_get_referer()); + bb_safe_redirect($goback); + exit; +} + +if ( !empty($_GET['updated']) ) { + bb_admin_notice( __( 'Settings saved.' ) ); +} + +$general_options = array( + 'enable_pingback' => array( + 'title' => __( 'Enable Pingbacks' ), + 'type' => 'checkbox', + 'options' => array( + 1 => __( 'Allow link notifications from other sites.' ) + ) + ), + + 'enable_loginless' => array( + 'title' => __( 'Enable Login-less Posting' ), + 'type' => 'checkbox', + 'options' => array( + 1 => __( 'Allow users to create topics and posts without logging in.' ) + ), + ), + + 'enable_subscriptions' => array( + 'title' => __( 'Enable Subscriptions' ), + 'type' => 'checkbox', + 'options' => array( + 1 => __( 'Allow users to subscribe to topics and receive new posts via email.' ) + ), + ), +); + +$bb_get_option_avatars_show = create_function( '$a', 'return 1;' ); +add_filter( 'bb_get_option_avatars_show', $bb_get_option_avatars_show ); +$avatar_options = array( + 'avatars_show' => array( + 'title' => __( 'Avatar display' ), + 'type' => 'radio', + 'options' => array( + 0 => __( 'Don’t show avatars' ), + 1 => __( 'Show avatars' ) + ) + ), + 'avatars_rating' => array( + 'title' => __( 'Maximum rating' ), + 'type' => 'radio', + 'options' => array( + 'g' => __( 'G — Suitable for all audiences' ), + 'pg' => __( 'PG — Possibly offensive, usually for audiences 13 and above' ), + 'r' => __( 'R — Intended for adult audiences above 17' ), + 'x' => __( 'X — Even more mature than above' ) + ) + ), + 'avatars_default' => array( + 'title' => __( 'Default avatar' ), + 'type' => 'radio', + 'options' => array( + 'default' => bb_get_avatar( '', 32, 'default' ) . ' ' . __( 'Mystery Man' ), + 'blank' => bb_get_avatar( '', 32, 'blank' ) . ' ' . __( 'Blank' ), + 'logo' => bb_get_avatar( '', 32, 'logo' ) . ' ' . __( 'Gravatar Logo' ), + 'identicon' => bb_get_avatar( rand( 0, 999 ), 32, 'identicon' ) . ' ' . __( 'Identicon (Generated)' ), + 'wavatar' => bb_get_avatar( rand( 0, 999 ), 32, 'wavatar' ) . ' ' . __( 'Wavatar (Generated)' ), + 'monsterid' => bb_get_avatar( rand( 0, 999 ), 32, 'monsterid' ) . ' ' . __( 'MonsterID (Generated)' ), + 'retro' => bb_get_avatar( rand( 0, 999 ), 32, 'retro' ) . ' ' . __( 'Retro (Generated)' ) + ), + 'note' => array( + __( 'For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their email address.' ) + ), + ) +); +remove_filter( 'bb_get_option_avatars_show', $bb_get_option_avatars_show ); + +$bb_admin_body_class = ' bb-admin-settings'; + +bb_get_admin_header(); + +?> + +
      + +

      + + +
      +
      + $args ) { + bb_option_form_element( $option, $args ); +} +?> +
      +
      + +

      + Gravatars. A Gravatar is an image that follows you from site to site, appearing beside your name when you comment on Gravatar enabled sites. Here you can enable the display of Gravatars on your site.'); ?> +

      + $args ) { + bb_option_form_element( $option, $args ); +} +?> +
      +
      + + + +
      +
      + +
      + + $value ) { + if ( !in_array( $option, array( '_wpnonce', '_wp_http_referer', 'action', 'submit' ) ) ) { + $option = trim( $option ); + $value = is_array( $value ) ? $value : trim( $value ); + $value = stripslashes_deep( $value ); + if ( $option == 'uri' && !empty( $value ) ) { + $value = rtrim( $value, " \t\n\r\0\x0B/" ) . '/'; + } + if ( $value ) { + bb_update_option( $option, $value ); + } else { + bb_delete_option( $option ); + } + } + } + + $goback = add_query_arg( 'updated', 'true', wp_get_referer() ); + bb_safe_redirect( $goback ); + exit; +} + +if ( !empty( $_GET['updated'] ) ) { + bb_admin_notice( __( 'Settings saved.' ) ); +} + +$general_options = array( + 'name' => array( + 'title' => __( 'Site title' ), + 'class' => 'long', + ), + 'description' => array( + 'title' => __( 'Tagline' ), + 'class' => 'long', + 'note' => __( 'In a few words, explain what this site is about.' ) + ), + 'uri' => array( + 'title' => __( 'bbPress address (URL)' ), + 'class' => array('long', 'code'), + 'note' => __( 'The full URL of your bbPress install.' ), + ), + 'from_email' => array( + 'title' => __( 'E-mail address' ), + 'note' => __( 'This address is used for admin purposes, like new user notification.' ), + ) +); + +$time_options = array( + 'gmt_offset' => array( + 'title' => __( 'Time zone' ), + 'type' => 'select', + 'options' => array( + '-12' => '-12:00', + '-11.5' => '-11:30', + '-11' => '-11:00', + '-10.5' => '-10:30', + '-10' => '-10:00', + '-9.5' => '-9:30', + '-9' => '-9:00', + '-8.5' => '-8:30', + '-8' => '-8:00', + '-7.5' => '-7:30', + '-7' => '-7:00', + '-6.5' => '-6:30', + '-6' => '-6:00', + '-5.5' => '-5:30', + '-5' => '-5:00', + '-4.5' => '-4:30', + '-4' => '-4:00', + '-3.5' => '-3:30', + '-3' => '-3:00', + '-2.5' => '-2:30', + '-2' => '-2:00', + '-1.5' => '-1:30', + '-1' => '-1:00', + '-0.5' => '-0:30', + '0' => '', + '0.5' => '+0:30', + '1' => '+1:00', + '1.5' => '+1:30', + '2' => '+2:00', + '2.5' => '+2:30', + '3' => '+3:00', + '3.5' => '+3:30', + '4' => '+4:00', + '4.5' => '+4:30', + '5' => '+5:00', + '5.5' => '+5:30', + '5.75' => '+5:45', + '6' => '+6:00', + '6.5' => '+6:30', + '7' => '+7:00', + '7.5' => '+7:30', + '8' => '+8:00', + '8.5' => '+8:30', + '8.75' => '+8:45', + '9' => '+9:00', + '9.5' => '+9:30', + '10' => '+10:00', + '10.5' => '+10:30', + '11' => '+11:00', + '11.5' => '+11:30', + '12' => '+12:00', + '12.75' => '+12:45', + '13' => '+13:00', + '13.75' => '+13:45', + '14' => '+14:00' + ), + 'after' => __( 'hours' ) + ), + 'datetime_format' => array( + 'title' => __( 'Date and time format' ), + 'class' => 'short', + 'value' => bb_get_datetime_formatstring_i18n(), + 'after' => bb_datetime_format_i18n( bb_current_time() ), + 'note' => array( + __( 'Documentation on date formatting.' ), + __( 'Click "Save Changes" to update sample output.' ) + ) + ), + 'date_format' => array( + 'title' => __( 'Date format' ), + 'class' => 'short', + 'value' => bb_get_datetime_formatstring_i18n( 'date' ), + 'after' => bb_datetime_format_i18n( bb_current_time(), 'date' ) + ) +); + +if ( !$gmt_offset = bb_get_option( 'gmt_offset' ) ) { + $gmt_offset = 0; +} + +if ( wp_timezone_supported() ) { + unset( $time_options['gmt_offset'] ); + + if ( !$timezone_string = bb_get_option( 'timezone_string' ) ) { + // set the Etc zone if no timezone string exists + $_gmt_offset = (integer) round( $gmt_offset ); + if ( $_gmt_offset === 0 ) { + $timezone_string = 'Etc/UTC'; + } elseif ( $_gmt_offset > 0 ) { + // Zoneinfo has these signed backwards to common convention + $timezone_string = 'Etc/GMT-' . abs( $_gmt_offset ); + } else { + // Zoneinfo has these signed backwards to common convention + $timezone_string = 'Etc/GMT+' . abs( $_gmt_offset ); + } + unset( $_gmt_offset ); + } + + // Build the new selector + $_time_options = array( + 'timezone_string' => array( + 'title' => __( 'Time zone' ), + 'type' => 'select', + 'options' => wp_timezone_choice( $timezone_string ), // This passes a string of html, which gets used verbatim + 'note' => array( + __( 'Choose a city in the same time zone as you.' ), + sprintf( __( 'UTC time is %s' ), bb_gmdate_i18n( bb_get_datetime_formatstring_i18n(), bb_current_time() ) ), + sprintf( __( 'Local time is %s' ), bb_datetime_format_i18n( bb_current_time() ) ) + ) + ) + ); + + $_now = localtime( bb_current_time(), true ); + if ( $now['tm_isdst'] ) { + $_time_options['timezone_string']['note'][] = __( 'This time zone is currently in daylight savings time.' ); + } else { + $_time_options['timezone_string']['note'][] = __( 'This time zone is currently in standard time.' ); + } + + if ( function_exists( 'timezone_transitions_get' ) ) { + $timezone_object = new DateTimeZone( $timezone_string ); + $found_transition = false; + foreach ( timezone_transitions_get( $timezone_object ) as $timezone_transition ) { + if ( $timezone_transition['ts'] > time() ) { + $note = $timezone_transition['isdst'] ? __('Daylight savings time begins on %s') : __('Standard time begins on %s'); + $_time_options['timezone_string']['note'][] = sprintf( $note, bb_gmdate_i18n( bb_get_datetime_formatstring_i18n(), $timezone_transition['ts'], false ) ); + break; + } + } + } + + $time_options = array_merge( $_time_options, $time_options ); + +} else { + // Tidy up the old style dropdown + $time_options['gmt_offset']['note'] = array( + 1 => sprintf( __( 'UTC %s is %s' ), $time_options['gmt_offset']['options'][$gmt_offset], bb_datetime_format_i18n( bb_current_time() ) ), + 2 => __( 'Unfortunately, you have to manually update this for Daylight Savings Time.' ) + ); + + if ( $gmt_offset ) { + $time_options['gmt_offset']['note'][0] = sprintf( __( 'UTC time is %s' ), bb_gmdate_i18n( bb_get_datetime_formatstring_i18n(), bb_current_time(), true ) ); + ksort($time_options['gmt_offset']['note']); + } + + foreach ( $time_options['gmt_offset']['options'] as $_key => $_value ) { + $time_options['gmt_offset']['options'][$_key] = sprintf( __( 'UTC %s' ), $_value ); + } +} + + +$bb_admin_body_class = ' bb-admin-settings'; + +bb_get_admin_header(); + +?> + +
      + +

      + + +
      +
      + $args ) { + bb_option_form_element( $option, $args ); +} +foreach ( $time_options as $option => $args ) { + bb_option_form_element( $option, $args ); +} +?> +
      +
      + + + +
      +
      + +
      + + $value ) { + if ( !in_array( $option, array('_wpnonce', '_wp_http_referer', 'action', 'submit') ) ) { + $option = trim( $option ); + $value = is_array( $value ) ? $value : trim( $value ); + $value = stripslashes_deep( $value ); + if ( $value ) { + bb_update_option( $option, $value ); + } else { + bb_delete_option( $option ); + } + } + } + + $mod_rewrite = (string) bb_get_option( 'mod_rewrite' ); + + $goback = remove_query_arg( array( 'updated', 'notapache', 'notmodrewrite' ), wp_get_referer() ); + + // Make sure mod_rewrite is possible on the server + if ( !$is_apache ) { + bb_delete_option( 'mod_rewrite_writable' ); + $goback = add_query_arg( 'notapache', 'true', $goback ); + bb_safe_redirect( $goback ); + exit; + } elseif ( '0' !== $mod_rewrite && !apache_mod_loaded( 'mod_rewrite', true ) ) { + bb_delete_option( 'mod_rewrite_writable' ); + bb_update_option( 'mod_rewrite', '0' ); + $goback = add_query_arg( 'notmodrewrite', 'true', $goback ); + bb_safe_redirect( $goback ); + exit; + } + + $file_target_rules = array(); + + $file_target_exists = false; + $file_target_writable = true; + if ( file_exists( $file_target ) ) { + if ( is_readable( $file_target ) ) { + $file_target_rules = explode( "\n", implode( '', file( $file_target ) ) ); + } + $file_target_exists = true; + if ( !is_writable( $file_target ) ) { + $file_target_writable = false; + } + } else { + $file_target_dir = dirname( $file_target ); + if ( file_exists( $file_target_dir ) ) { + if ( !is_writable( $file_target_dir ) || !is_dir( $file_target_dir ) ) { + $file_target_writable = false; + } + } else { + $file_target_writable = false; + } + } + + // Strip out existing bbPress rules + $_keep_rule = true; + $_kept_rules = array(); + foreach ( $file_target_rules as $_rule ) { + if ( false !== strpos( $_rule, '# BEGIN bbPress' ) ) { + $_keep_rule = false; + continue; + } elseif ( false !== strpos( $_rule, '# END bbPress' ) ) { + $_keep_rule = true; + continue; + } + if ( $_keep_rule ) { + $_kept_rules[] = $_rule; + } + } + + $file_target_rules = join( "\n", $_kept_rules ) . "\n" . $file_source_rules; + + $file_target_written = 0; + if ( $file_target_writable ) { + // Open the file for writing - rewrites the whole file + if ( $file_target_handle = fopen( $file_target, 'w' ) ) { + if ( fwrite( $file_target_handle, $file_target_rules ) ) { + $file_target_written = 1; + } + // Close the file + fclose( $file_target_handle ); + @chmod( $file_target, 0666 ); + } + } + + bb_update_option( 'mod_rewrite_writable', $file_target_writable ); + $goback = add_query_arg( 'updated', 'true', $goback ); + bb_safe_redirect( $goback ); + exit; +} + +if ( $is_apache && bb_get_option( 'mod_rewrite' ) && !bb_get_option( 'mod_rewrite_writable' ) ) { + $manual_instructions = true; +} + +if ( !empty( $_GET['notmodrewrite'] ) ) { + $manual_instructions = false; + bb_admin_notice( __( 'It appears that your server does not support custom permalink structures.' ), 'error' ); +} + +if ( !empty( $_GET['notapache'] ) ) { + $manual_instructions = false; + bb_admin_notice( __( 'Rewriting on webservers other than Apache using mod_rewrite is currently unsupported, but we won’t stop you from trying.' ), 'error' ); +} + +if ( !empty( $_GET['updated'] ) ) { + if ( $manual_instructions ) { + bb_admin_notice( __( 'You should update your .htaccess now.' ) ); + } else { + bb_admin_notice( __( 'Permalink structure updated.' ) ); + } +} + +$permalink_options = array( + 'mod_rewrite' => array( + 'title' => __( 'Permalink type' ), + 'type' => 'radio', + 'options' => array( + '0' => sprintf( __( 'None %s' ), bb_get_uri( 'forum.php', array( 'id' => 1 ), BB_URI_CONTEXT_TEXT ) ), + '1' => sprintf( __( 'Numeric %s' ), bb_get_uri( 'forum/1', null, BB_URI_CONTEXT_TEXT ) ), + 'slugs' => sprintf( __( 'Name based %s' ), bb_get_uri( '/forum/first-forum', null, BB_URI_CONTEXT_TEXT ) ) + ) + ) +); + +$bb_admin_body_class = ' bb-admin-settings'; + +bb_get_admin_header(); + +?> + +
      + +

      + + +
      +
      +

      + +

      + $args ) { + bb_option_form_element( $option, $args ); +} +?> +
      +
      + + + +
      +
      + + +
      +
      +

      + .htaccess file were writable, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your .htaccess file. Click in the field and press CTRL + a to select all.' ); ?> +

      + +
      +
      + + + +
      + + $value ) { + if ( !in_array( $option, array('_wpnonce', '_wp_http_referer', 'action', 'submit') ) ) { + $option = trim( $option ); + $value = is_array( $value ) ? $value : trim( $value ); + $value = stripslashes_deep( $value ); + if ( $value ) { + bb_update_option( $option, $value ); + } else { + bb_delete_option( $option ); + } + } + } + + $goback = add_query_arg('updated', 'true', wp_get_referer()); + bb_safe_redirect($goback); + exit; +} + +if ( !empty( $_GET['updated'] ) ) + bb_admin_notice( '' . __( 'Settings saved.' ) . '' ); + +$reading_options = array( + 'page_topics' => array( + 'title' => __( 'Items per page' ), + 'class' => 'short', + 'note' => __( 'Number of topics, posts or tags to show per page.' ) + ), + 'name_link_profile' => array( + 'title' => __( 'Link name to' ), + 'type' => 'radio', + 'options' => array( + 0 => __( 'Website' ), + 1 => __( 'Profile' ) + ), + 'note' => __( 'What should the user\'s name link to on the topic page? The user\'s title would automatically get linked to the option you don\'t choose. By default, the user\'s name is linked to his/her website.' ) + ) +); + +$bb_admin_body_class = ' bb-admin-settings'; + +bb_get_admin_header(); + +?> + +
      + +

      + + +
      +
      + $args ) { + bb_option_form_element( $option, $args ); +} +?> +
      +
      + + + +
      +
      + +
      + + $value ) { + if ( !in_array( $option, array('_wpnonce', '_wp_http_referer', 'action', 'submit') ) ) { + $option = trim( $option ); + $value = is_array( $value ) ? $value : trim( $value ); + $value = stripslashes_deep( $value ); + if ( ( $option == 'wp_siteurl' || $option == 'wp_home' ) && !empty( $value ) ) { + $value = rtrim( $value, " \t\n\r\0\x0B/" ) . '/'; + } + if ( $value ) { + bb_update_option( $option, $value ); + } else { + bb_delete_option( $option ); + } + } + } + + if ($action == 'update-users') { + bb_apply_wp_role_map_to_orphans(); + } + + $goback = add_query_arg('updated', $action, wp_get_referer()); + bb_safe_redirect($goback); + exit; +} + +switch (@$_GET['updated']) { + case 'update-users': + bb_admin_notice( __( 'User role mapping saved.' ) ); + break; + case 'update-options': + bb_admin_notice( __( 'User integration settings saved.' ) ); + break; +} + + + +$bb_role_names[''] = _c( 'none|no bbPress role' ); +$bb_role_names = array_merge( $bb_role_names, array_map( create_function( '$a', 'return sprintf( _c( "bbPress %s|bbPress role" ), $a );' ), $wp_roles->get_names() ) ); + +$wpRoles = array( + 'administrator' => __('WordPress Administrator'), + 'editor' => __('WordPress Editor'), + 'author' => __('WordPress Author'), + 'contributor' => __('WordPress Contributor'), + 'subscriber' => __('WordPress Subscriber') +); + +$wpRoles = apply_filters( 'role_map_wp_roles', $wpRoles ); + +$cookie_options = array( + 'wp_siteurl' => array( + 'title' => __( 'WordPress address (URL)' ), + 'class' => 'long', + 'note' => __( 'This value should exactly match the WordPress address (URL) setting in your WordPress general settings.' ) + ), + 'wp_home' => array( + 'title' => __( 'Blog address (URL)' ), + 'class' => 'long', + 'note' => __( 'This value should exactly match the Blog address (URL) setting in your WordPress general settings.' ) + ), + 'bb_auth_salt' => array( + 'title' => __( 'WordPress "auth" cookie salt' ), + 'note' => __( 'This must match the value of the WordPress setting named "auth_salt" in your WordPress site. Look for the option labeled "auth_salt" in this WordPress admin page.' ) + ), + 'bb_secure_auth_salt' => array( + 'title' => __( 'WordPress "secure auth" cookie salt' ), + 'note' => __( 'This must match the value of the WordPress setting named "secure_auth_salt" in your WordPress site. Look for the option labeled "secure_auth_salt" in this WordPress admin page. Sometimes this value is not set in WordPress, in that case you can leave this setting blank as well.' ) + ), + 'bb_logged_in_salt' => array( + 'title' => __( 'WordPress "logged in" cookie salt' ), + 'note' => __( 'This must match the value of the WordPress setting named "logged_in_salt" in your WordPress site. Look for the option labeled "logged_in_salt" in this WordPress admin page.' ) + ) +); + +foreach ( array( 'bb_auth_salt', 'bb_secure_auth_salt', 'bb_logged_in_salt' ) as $salt_constant ) { + if ( defined( strtoupper( $salt_constant ) ) ) { + $cookie_options[$salt_constant]['note'] = array( + sprintf( __( 'You have defined the "%s" constant which locks this setting.' ), strtoupper( $salt_constant ) ), + $cookie_options[$salt_constant]['note'], + ); + $cookie_options[$salt_constant]['value'] = constant( strtoupper( $salt_constant ) ); + $bb_hardcoded[$salt_constant] = true; + } +} + +$user_db_options = array( + 'wp_table_prefix' => array( + 'title' => __( 'User database table prefix' ), + 'note' => __( 'If your bbPress and WordPress sites share the same database, then this is the same value as $table_prefix in your WordPress wp-config.php file. It is usually wp_.' ) + ), + 'wordpress_mu_primary_blog_id' => array( + 'title' => __( 'WordPress MU primary blog ID' ), + 'note' => __( 'If you are integrating with a WordPress MU site you need to specify the primary blog ID for that site. It is usually 1. You should probably leave this blank if you are integrating with a standard WordPress site' ) + ), + 'user_bbdb_advanced' => array( + 'title' => __( 'Show advanced database settings' ), + 'type' => 'checkbox', + 'options' => array( + 1 => array( + 'label' => __( 'If your bbPress and WordPress site do not share the same database, then you will need to add advanced settings.' ), + 'attributes' => array( 'onclick' => 'toggleAdvanced(this);' ) + ) + ) + ) +); + +$advanced_user_db_options = array( + 'user_bbdb_name' => array( + 'title' => __( 'User database name' ), + 'note' => __( 'The name of the database in which your user tables reside.' ) + ), + 'user_bbdb_user' => array( + 'title' => __( 'User database user' ), + 'note' => __( 'The database user that has access to that database.' ) + ), + 'user_bbdb_password' => array( + 'title' => __( 'User database password' ), + 'note' => __( 'That database user\'s password.' ) + ), + 'user_bbdb_host' => array( + 'title' => __( 'User database host' ), + 'note' => __( 'The domain name or IP address of the server where the database is located. If the database is on the same server as the web site, then this probably should be localhost.' ) + ), + 'user_bbdb_charset' => array( + 'title' => __( 'User database character set' ), + 'note' => __( 'The best choice is utf8, but you will need to match the character set which you created the database with.' ) + ), + 'user_bbdb_collate' => array( + 'title' => __( 'User database character collation' ), + 'note' => __( 'The character collation value set when the user database was created.' ) + ) +); + +$custom_table_options = array( + 'custom_user_table' => array( + 'title' => __( 'User database "user" table' ), + 'note' => __( 'The complete table name, including any prefix.' ), + ), + 'custom_user_meta_table' => array( + 'title' => __( 'User database "user meta" table' ), + 'note' => __( 'The complete table name, including any prefix.' ), + ), +); + +$advanced_display = bb_get_option( 'user_bbdb_advanced' ) ? 'block' : 'none'; + +$bb_admin_body_class = ' bb-admin-settings'; + +bb_get_admin_header(); + +?> + +
      + +

      + + +
      +
      + +

      +

      + $wpRoleName ) bb_option_form_element( "wp_roles_map[$wpRole]", array( 'title' => $wpRoleName, 'type' => 'select', 'options' => $bb_role_names ) ); ?> +
      +
      + + + +
      +
      + +
      + +
      +

      +

      +

      Note: changing the settings below may cause you to be logged out!'); ?>

      +
      + +
      +
      + +

      + $args ) bb_option_form_element( $option, $args ); ?> + + 'COOKIE_DOMAIN', + 'cookiepath' => 'COOKIEPATH' +); +$wp_settings = ''; +foreach ($cookie_settings as $bb_setting => $wp_setting) { + if ( isset($bb->$bb_setting) ) { + $wp_settings .= 'define(\'' . $wp_setting . '\', \'' . $bb->$bb_setting . '\');' . "\n"; + } +} +?> +

      wp-config.php file in the root directory of your WordPress installation. To get those settings, you will need to install and configure the "bbPress Integration" plugin for WordPress.'), 'http://wordpress.org/extend/plugins/bbpress-integration/'); ?>

      +

      +
      + + + + + + + + + + + + + + + + + + + + + +
      AUTH_KEY<=>BB_AUTH_KEY
      SECURE_AUTH_KEY<=>BB_SECURE_AUTH_KEY
      LOGGED_IN_KEY<=>BB_LOGGED_IN_KEY
      +
      +
      + +
      + +

      +

      + + $args ) bb_option_form_element( $option, $args ); ?> +
      +
      + +

      not required. Look before you leap!'); ?>

      +

      + $args ) bb_option_form_element( $option, $args ); ?> +
      +
      + +

      + $args ) bb_option_form_element( $option, $args ); ?> +
      +
      + + + +
      +
      + +
      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/options-writing.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/options-writing.php new file mode 100644 index 0000000..d8611f2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/options-writing.php @@ -0,0 +1,92 @@ + $value ) { + if ( !in_array( $option, array( '_wpnonce', '_wp_http_referer', 'action', 'submit' ) ) ) { + $option = trim( $option ); + $value = is_array( $value ) ? $value : trim( $value ); + $value = stripslashes_deep( $value ); + if ( $value ) { + bb_update_option( $option, $value ); + } else { + bb_delete_option( $option ); + } + } + } + + $goback = add_query_arg( 'updated', 'true', wp_get_referer() ); + bb_safe_redirect( $goback ); + exit; +} + +if ( !empty($_GET['updated']) ) { + bb_admin_notice( __( 'Settings saved.' ) ); +} + +$general_options = array( + 'edit_lock' => array( + 'title' => __( 'Lock post editing after' ), + 'class' => 'short', + 'after' => __( 'minutes' ), + 'note' => __( 'A user can edit a post for this many minutes after submitting.' ), + ), + 'throttle_time' => array( + 'title' => __( 'Throttle time' ), + 'class' => 'short', + 'after' => __( 'seconds' ), + 'note' => __( 'Users must wait this many seconds between posts. By default, moderators, administrators and keymasters are not throttled.' ) + ) +); + +$remote_options = array( + 'enable_xmlrpc' => array( + 'title' => __( 'XML-RPC' ), + 'type' => 'checkbox', + 'options' => array( + 1 => __( 'Enable the bbPress XML-RPC publishing protocol.' ) + ) + ) +); + +$bb_admin_body_class = ' bb-admin-settings'; + +bb_get_admin_header(); + +?> + +
      + +

      + + +
      +
      $args ) bb_option_form_element( $option, $args ); ?>
      +
      + +

      + +

      + $args ) bb_option_form_element( $option, $args ); ?> +
      +
      + + + +
      +
      + +
      + + '', + 'active' => '', + 'inactive' => '', + 'autoload' => '' +); +$plugin_nav_class[$plugin_request] = ' class="current"'; + +// Get plugin counts +extract( bb_get_plugin_counts() ); + +// Get requested plugins +$requested_plugins = bb_get_plugins( 'all', $_plugin_type, $_plugin_status ); + +// Get currently active +$active_plugins = (array) bb_get_option( 'active_plugins' ); + +// Check for missing plugin files and remove them from the active plugins array +$update = false; +foreach ( $active_plugins as $index => $plugin ) { + if ( !file_exists( bb_get_plugin_path( $plugin ) ) ) { + $update = true; + unset( $active_plugins[$index] ); + } +} +if ( $update ) { + bb_update_option( 'active_plugins', $active_plugins ); +} +unset( $update, $index, $plugin ); + +// Set the action +$action = ''; +if( isset( $_GET['action'] ) && !empty( $_GET['action'] ) ) { + $action = trim( $_GET['action'] ); +} + +// Set the plugin +$plugin = isset( $_GET['plugin'] ) ? trim( stripslashes( $_GET['plugin'] ) ) : ''; + +// Deal with user actions +if ( !empty( $action ) ) { + switch ( $action ) { + case 'activate': + // Activation + bb_check_admin_referer( 'activate-plugin_' . $plugin ); + + $result = bb_activate_plugin( $plugin, 'plugins.php?message=error&plugin=' . urlencode( $plugin ) ); + if ( is_wp_error( $result ) ) + bb_die( $result ); + + // Overrides the ?message=error one above + wp_redirect( 'plugins.php?plugin_request=' . $plugin_request . '&message=activate&plugin=' . urlencode( $plugin ) ); + break; + + case 'deactivate': + // Deactivation + bb_check_admin_referer( 'deactivate-plugin_' . $plugin ); + + // Remove the deactivated plugin + bb_deactivate_plugins( $plugin ); + + // Redirect + wp_redirect( 'plugins.php?plugin_request=' . $plugin_request . '&message=deactivate&plugin=' . urlencode( $plugin ) ); + break; + + case 'scrape': + // Scrape php errors from the plugin + bb_check_admin_referer('scrape-plugin_' . $plugin); + + $valid_path = bb_validate_plugin( $plugin ); + if ( is_wp_error( $valid_path ) ) + bb_die( $valid_path ); + + // Pump up the errors and output them to screen + error_reporting( E_ALL ^ E_NOTICE ); + @ini_set( 'display_errors', true ); + + include( $valid_path ); + break; + } + + // Stop processing + exit; +} + +// Display notices +if ( isset($_GET['message']) ) { + switch ( $_GET['message'] ) { + case 'error' : + bb_admin_notice( __( 'Plugin could not be activated, it produced a Fatal Error. The error is shown below.' ), 'error' ); + break; + case 'activate' : + $plugin_data = bb_get_plugin_data( $plugin ); + bb_admin_notice( sprintf( __( '"%s" plugin activated' ), esc_attr( $plugin_data['name'] ) ) ); + break; + case 'deactivate' : + $plugin_data = bb_get_plugin_data( $plugin ); + bb_admin_notice( sprintf( __( '"%s" plugin deactivated' ), esc_attr( $plugin_data['name'] ) ) ); + break; + } +} + +if ( isset( $bb->safemode ) && $bb->safemode === true ) { + bb_admin_notice( __( '"Safe mode" is on, all plugins are disabled even if they are listed as active.' ), 'error' ); +} + +$bb_admin_body_class = ' bb-admin-plugins'; + +bb_get_admin_header(); +?> + +
      + +

      + + + 'scrape', + 'plugin' => urlencode( $plugin ) + ), + BB_URI_CONTEXT_IFRAME_SRC + BB_URI_CONTEXT_BB_ADMIN + ), + 'scrape-plugin_' . $plugin + ) + ); +?> + +
      + + + +
      + href="">(%d)' ), $plugin_count_all ); ?> | + href=" 'active' ), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN ); ?>">(%d)' ), $plugin_count_active ); ?> | + href=" 'inactive' ), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN ); ?>">(%d)' ), $plugin_count_inactive ); ?> | + href=" 'autoload' ), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN ); ?>">(%d)' ), $plugin_count_autoload ); ?> +
      + + + + + + + + + + + + + + + + + + + $plugin_data ) : + $class = ' class="inactive"'; + $action = 'activate'; + $action_class = 'edit'; + $action_text = __( 'Activate' ); + if ( $plugin_data['autoload'] ) { + $class = ' class="autoload"'; + } elseif ( in_array( $plugin, $active_plugins ) ) { + $class = ' class="active"'; + $action = 'deactivate'; + $action_class = 'delete'; + $action_text = __( 'Deactivate' ); + } + $href = esc_attr( + bb_nonce_url( + bb_get_uri( + 'bb-admin/plugins.php', + array( + 'plugin_request' => $plugin_request, + 'action' => $action, + 'plugin' => urlencode($plugin) + ), + BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN + ), + $action . '-plugin_' . $plugin + ) + ); + $meta = array(); + if ( $plugin_data['version'] ) $meta[] = sprintf( __( 'Version %s' ), $plugin_data['version'] ); + if ( $plugin_data['author_link'] ) $meta[] = sprintf( __( 'By %s' ), $plugin_data['author_link'] ); + if ( $plugin_data['uri'] ) $meta[] = '' . esc_html__( 'Visit plugin site' ) . ''; + if ( count( $meta ) ) { + $meta = '

      ' . join( ' | ', $meta ) . '

      '; + } else { + $meta = ''; + } +?> + + > + + + + + + + +
      + +
       
      +
      + + +
      + + + +

      + + + +
      + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/posts.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/posts.php new file mode 100644 index 0000000..1f26f17 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/posts.php @@ -0,0 +1,195 @@ + 'deleted', 'count' => $count ); + break; + case 'undelete' : + foreach ( $post_ids as $post_id ) { + $count += (int) (bool) bb_delete_post( $post_id, 0 ); + } + $query_vars = array( 'message' => 'undeleted', 'count' => $count ); + break; + default : + if ( $action ) + $query_vars = apply_filters( "bulk_post__$action", array(), $post_ids, $action ); + break; + } + + bb_safe_redirect( add_query_arg( $query_vars ) ); + exit; +} + +if ( !empty( $_GET['message'] ) ) { + $message_count = isset( $_GET['count'] ) ? (int) $_GET['count'] : 1; + + switch ( (string) $_GET['message'] ) { + case 'undeleted': + bb_admin_notice( sprintf( _n( 'Post undeleted.', '%s posts undeleted.', $message_count ), bb_number_format_i18n( $message_count ) ) ); + break; + case 'deleted': + bb_admin_notice( sprintf( _n( 'Post deleted.', '%s posts deleted.', $message_count ), bb_number_format_i18n( $message_count ) ) ); + break; + case 'spammed': + bb_admin_notice( sprintf( _n( 'Post spammed.', '%s posts spammed.', $message_count ), bb_number_format_i18n( $message_count ) ) ); + break; + case 'unspammed-normal': + bb_admin_notice( sprintf( _n( 'Post removed from spam. It is now a normal post.', '%s posts removed from spam. They are now normal posts.', $message_count ), bb_number_format_i18n( $message_count ) ) ); + break; + case 'unspammed-deleted': + bb_admin_notice( sprintf( _n( 'Post removed from spam. It is now a deleted post.', '%s posts removed from spam. They are nowdeleted posts.', $message_count ), bb_number_format_i18n( $message_count ) ) ); + break; + } +} + +$ip_available = false; +if ( bb_current_user_can( 'view_by_ip' ) ) { + $ip_available = true; +} elseif (isset($_GET['poster_ip'])) { + unset( $_GET['poster_ip'] ); +} + +$bb_admin_body_class = ' bb-admin-posts'; + +bb_get_admin_header(); + +if ( !bb_current_user_can('browse_deleted') ) + die(__("Now how'd you get here? And what did you think you'd being doing?")); //This should never happen. +add_filter( 'get_topic_where', 'bb_no_where' ); +add_filter( 'get_topic_link', 'bb_make_link_view_all' ); +add_filter( 'post_edit_uri', 'bb_make_link_view_all' ); +$post_query = new BB_Query_Form( 'post', array( 'post_status' => 'normal', 'count' => true, 'per_page' => 20 ) ); +$bb_posts =& $post_query->results; +$total = $post_query->found_rows; +?> + +
      + +

      +get( 'post_text' ); +$h2_forum = $post_query->get( 'forum_id' ); +$h2_tag = $post_query->get( 'tag_id' ); +$h2_author = $post_query->get( 'post_author_id' ); + +$h2_search = $h2_search ? ' ' . sprintf( __('containing “%s”'), esc_html( $h2_search ) ) : ''; +$h2_forum = $h2_forum ? ' ' . sprintf( __('in “%s”') , get_forum_name( $h2_forum ) ) : ''; +$h2_tag = $h2_tag ? ' ' . sprintf( __('with tag “%s”'), esc_html( bb_get_tag_name( $h2_tag ) ) ) : ''; +$h2_author = $h2_author ? ' ' . sprintf( __('by %s') , esc_html( get_user_name( $h2_author ) ) ) : ''; + +if ($ip_available) { + $h2_ip = $post_query->get( 'poster_ip' ); + $h2_ip = $h2_ip ? ' ' . sprintf( __('from IP address %s'), esc_html( $h2_ip ) ) : ''; +} else { + $h2_ip = ''; +} + +if ( $h2_search || $h2_forum || $h2_tag || $h2_author || $h2_ip ) { + echo ''; + + printf( __( '%1$s%2$s%3$s%4$s%5$s' ), $h2_search, $h2_forum, $h2_tag, $h2_author, $h2_ip ); + + echo ''; +} +?> +

      +form( array( 'poster_ip' => $ip_available, 'tag' => true, 'post_author' => true, 'post_status' => true, 'submit' => __( 'Filter' ) ) ); + +$bulk_actions = array( + 'delete' => __( 'Delete' ), + 'undelete' => __( 'Undelete' ), +); + +if ( is_numeric( $bulk_action = $post_query->get( 'post_status' ) ) ) { + switch ( $bulk_action ) { + case 0 : + unset( $bulk_actions['undelete'] ); + break; + case 1 : + unset( $bulk_actions['delete'] ); + } +} + +unset( $bulk_action ); + +do_action_ref_array( 'bulk_post_actions', array( &$bulk_actions, &$post_query ) ); + +?> + +
      + +
      + +
      + + + +
      + +
      + +
      + get( 'per_page' ) + 1 ), + $page * $post_query->get( 'per_page' ) < $total ? bb_number_format_i18n( $page * $post_query->get( 'per_page' ) ) : '' . bb_number_format_i18n( $total ) . '', + '' . bb_number_format_i18n( $total ) . '' + ); ?> + $page, + 'total' => $total, + 'per_page' => $post_query->get( 'per_page' ), + 'mod_rewrite' => false, + 'prev_text' => __( '«' ), + 'next_text' => __( '»' ) +); +echo $page_number_links = get_page_number_links( $_page_link_args ); +?> +
      +
      + +
      + +
      + + + +
      + +
      + +
      + +
      +
      + +
      +
      + +
      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/rewrite-rules.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/rewrite-rules.php new file mode 100644 index 0000000..5728211 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/rewrite-rules.php @@ -0,0 +1,4 @@ + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/style-rtl.css b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/style-rtl.css new file mode 100644 index 0000000..d9bff99 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/style-rtl.css @@ -0,0 +1,465 @@ +/* +Start with some basic resets +*/ + +caption,th{text-align:right;} + + +body { + font-family: Tahoma, "Times New Roman"; +} + + + +/* Header */ + +div#bbHead h1 { + padding-right: 39px; + padding-left: 0; + margin-right: 16px; + margin-left: 0; + background-position: 100% 7px; + font-family: "Times New Roman", Tahoma; +} + +div#bbHead h1 a em { + margin-left: auto; + margin-right: 5px; +} + +div#bbUserInfo { + right: auto; + left: 15px; +} + + + +/* Body */ + +div#bbBody { + margin-left: 0; + margin-right: 175px; + padding-right: 0; + padding-left: 15px; +} + +body.bb-menu-folded div#bbBody { + margin-left: auto; + margin-right: 59px; +} + +h2 { + padding-right: 0; + padding-left: 15px; + font-family: "Times New Roman", Tahoma; +} + +body.bb-admin-dashboard h2 { + padding-left: auto; + padding-right: 47px; + background-position: 100% -172px; +} + +body.bb-admin-forums h2 { + padding-left: auto; + padding-right: 47px; + background-position: 100% -802px; +} + +body.bb-admin-topics h2 { + padding-left: auto; + padding-right: 47px; + background-position: 100% -802px; +} + +body.bb-admin-posts h2 { + padding-left: auto; + padding-right: 47px; + background-position: 100% -802px; +} + +body.bb-admin-appearance h2 { + padding-left: auto; + padding-right: 47px; + background-position: 100% 8px; +} + +body.bb-admin-plugins h2 { + padding-left: auto; + padding-right: 47px; + background-position: 100% -532px; +} + +body.bb-admin-users h2 { + padding-left: auto; + padding-right: 47px; + background-position: 100% -891px; +} + +body.bb-admin-tools h2 { + padding-left: auto; + padding-right: 47px; + background-position: 100% -621px; +} + +body.bb-admin-settings h2 { + padding-left: auto; + padding-right: 47px; + background-position: 100% -712px; +} + + + + + +/* Menu */ +ul#bbAdminMenu { + float: right; + margin-right: -160px; + margin-left: 5px; +} + +body.bb-menu-folded ul#bbAdminMenu { + margin-left: 5px; + margin-right: -44px; +} + +ul#bbAdminMenu li.bb-menu a { + font-family: "Times New Roman", Tahoma; +} + +ul#bbAdminMenu li.bb-menu div.bb-menu-toggle { + float: left; + background-image: url('images/menu-bits-rtl.gif'); + background-position: 100% -110px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-has-submenu.bb-menu-current div.bb-menu-toggle { + background-position: 100% -208px; +} + +ul#bbAdminMenu li.bb-menu a div.bb-menu-icon { + float: right; + background-position: -331px -39px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li.bb-menu a:hover div.bb-menu-icon { + background-position: -331px -7px; +} + +ul#bbAdminMenu li#bb-menu-dashboard a div.bb-menu-icon { + background-position: -62px -39px; +} + +ul#bbAdminMenu li#bb-menu-dashboard.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-dashboard a:hover div.bb-menu-icon { + background-position: -62px -7px; +} + +ul#bbAdminMenu li#bb-menu-forums a div.bb-menu-icon { + background-position: -272px -39px; +} + +ul#bbAdminMenu li#bb-menu-forums.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-forums a:hover div.bb-menu-icon { + background-position: -272px -7px; +} + +ul#bbAdminMenu li#bb-menu-topics a div.bb-menu-icon { + background-position: -272px -39px; +} + +ul#bbAdminMenu li#bb-menu-topics.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-topics a:hover div.bb-menu-icon { + background-position: -272px -7px; +} + +ul#bbAdminMenu li#bb-menu-posts a div.bb-menu-icon { + background-position: -272px -39px; +} + +ul#bbAdminMenu li#bb-menu-posts.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-posts a:hover div.bb-menu-icon { + background-position: -272px -7px; +} + +ul#bbAdminMenu li#bb-menu-appearance a div.bb-menu-icon { + background-position: -1px -39px; +} + +ul#bbAdminMenu li#bb-menu-appearance.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-appearance a:hover div.bb-menu-icon { + background-position: -1px -7px; +} + +ul#bbAdminMenu li#bb-menu-plugins a div.bb-menu-icon { + background-position: -181px -39px; +} + +ul#bbAdminMenu li#bb-menu-plugins.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-plugins a:hover div.bb-menu-icon { + background-position: -181px -7px; +} + +ul#bbAdminMenu li#bb-menu-users a div.bb-menu-icon { + background-position: -303px -39px; +} + +ul#bbAdminMenu li#bb-menu-users.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-users a:hover div.bb-menu-icon { + background-position: -303px -7px; +} + +ul#bbAdminMenu li#bb-menu-tools a div.bb-menu-icon { + background-position: -212px -39px; +} + +ul#bbAdminMenu li#bb-menu-tools.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-tools a:hover div.bb-menu-icon { + background-position: -212px -7px; +} + +ul#bbAdminMenu li#bb-menu-settings a div.bb-menu-icon { + background-position: -241px -39px; +} + +ul#bbAdminMenu li#bb-menu-settings.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-settings a:hover div.bb-menu-icon { + background-position: -241px -7px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-separator a { + background-position: -55px -34px; + cursor: e-resize; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-separator a { + background-position: 0 5px; + cursor: w-resize; +} + +ul#bbAdminMenu li.bb-menu div.bb-menu-sub-wrap { + border-left-width: 1px; + border-right-width: 0; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu div.bb-menu-sub-wrap { + left: auto; + right: 36px; +} + +ul#bbAdminMenu li.bb-menu div.bb-menu-sub-wrap span { + font-family: "Times New Roman", Tahoma; + padding-right: 10px; + padding-left: 5px; +} + +ul#bbAdminMenu li.bb-menu li.bb-menu-sub a { + font-family: Tahoma, "Times New Roman"; + padding-right:12px; + padding-left: 5px; + background-image: url('images/menu-bits-rtl.gif'); + background-position: 100% -306px; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu li.bb-menu-sub a { + background-image: url('images/menu-bits-rtl.gif'); + background-position: 100% -306px; + border-right-width: 0 !important; + border-left-width: 1px !important; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current li.bb-menu-sub a { + background-image: url('images/menu-dark-rtl.gif'); + background-position: 100% -20px !important; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-current li.bb-menu-sub a { + background-image: url('images/menu-dark-rtl.gif'); + background-position: 100% -20px !important; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current li.bb-menu-sub.bb-menu-sub-current a { + background-position: 100% 0 !important; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-current li.bb-menu-sub.bb-menu-sub-current a { + background-position: 100% 0 !important; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-open li.bb-menu-sub a { + background-position: 100% -306px; +} + + + +/* Dashboard */ + +div.dashboard div.versions p.theme a.button { + float: left; +} + + + +/* Search forms */ + +form.search-form fieldset, form.bulk-form fieldset { + clear: right; + float: right; +} + +form.search-form fieldset div { + float: right; + margin-right: 0; + margin-left: 5px; +} + + + +/* Table nav */ + +div.tablenav { + float: left; +} + +span.displaying-num { + text-align: left; +} + +span.displaying-pages { + float: left; +} + +span.displaying-pages span, +span.displaying-pages a { + float: right; +} + + + +/* Tabled info */ + +table#plugins-list.widefat tr.autoload td.plugin-name { + background-position: 0 0; + padding-right: 7px; + padding-left: 20px; +} + +table.widefat .check-column { + padding-right: 7px; + padding-left: 0; +} + +/* Forums */ + +ul#forum-list li ul li { + border-left-width: 0; + border-right: 1px dashed rgb(223, 223, 223); +} + +ul#forum-list li ul.list-block { + padding: 0 30px 0 0; +} + +ul#forum-list li img.sort-handle { + float: right; + margin: 0 -4px 0 3px; +} + +#dragHelper img.sort-handle { + float: right; + margin: 0 0 0 3px; +} + +#dragHelper div.row-description { + margin: 0 4px 0 0; +} + + + +/* Themes */ + +table.theme-list td { + border-left: 1px solid rgb(221, 221, 221); + border-right-width: 0; +} + +table.theme-list td.position-3 { + border-left: none; +} + +table.theme-list-active td div.screen-shot { + float: right; + margin-right: 0; + margin-left: 15px; +} + + + +/* Options */ + +form.settings div { + margin-right: 0; + margin-left: 10px; +} + +form.settings div label, +form.settings div div.label { + float: right; +} + +form.settings div.disabled label, +form.settings div.disabled div.label { + background-position: 0 0; + padding-right: 0; + padding-left: 20px; +} + +form.settings div div.inputs { + margin: 0 210px 0 0; +} + +form.settings div.table { + margin: 0 220px 0 0; +} + +form.settings div p { + margin: 0 3em 0 0; + border-left-width: 0; + border-right: 1px solid rgb(223, 223, 223); +} + +form.settings a.cancel { + float: right; + margin-right: 0; + margin-left: 6px; +} + +form.settings select#timezone-string option { + margin-left: auto; + margin-right: 1em; +} + + + +/* Footer */ + +p#bbShowOff { + margin-right: 0; + margin-left: 8px; + float: left; + font-family: "Times New Roman", Tahoma; +} + +div#bbFoot { + font-family: "Times New Roman", Tahoma; +} + +p#bbThanks { + float: right; +} + +p#bbVersion { + text-align: left; +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/style.css b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/style.css new file mode 100644 index 0000000..9d359ce --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/style.css @@ -0,0 +1,1932 @@ +/* +Start with some basic resets +*/ + +/* +Copyright (c) 2009, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.7.0 +*/ +html{color:#000;background:#FFF;} +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{margin:0;padding:0;} +table{border-collapse:collapse;border-spacing:0;} +fieldset,img{border:0;} +address,caption,cite,code,dfn,em,strong,th,var,optgroup{font-style:inherit;font-weight:inherit;} +del,ins{text-decoration:none;} +li{list-style:none;} +caption,th{text-align:left;} +h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;} +q:before,q:after{content:'';} +abbr,acronym{border:0;font-variant:normal;} +sup{vertical-align:baseline;} +sub{vertical-align:baseline;} +legend{color:#000;} +input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;} +input,button,textarea,select{*font-size:100%;} +body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;} +select,input,button,textarea,button{font:99% arial,helvetica,clean,sans-serif;} +table{font-size:inherit;font:100%;} +pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;} + + +html { + height: 100%; + background-color: rgb(249, 249, 249); +} + +body { + height: 100%; + min-width: 785px; + color: rgb(51, 51, 51); + line-height: 1.4em; + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 0.8em; +} + +a { + outline: none; +} + +div#bbWrap { + height: auto; + min-height: 100%; + width: 100%; +} + +div#bbContent { + height: 100%; + padding-bottom: 45px; +} + + +pre { + /* http://www.longren.org/2006/09/27/wrapping-text-inside-pre-tags/ */ + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ +} + +/* Header */ + +div#bbHead { + position: relative; + background-color: rgb(70, 70, 70); +} + +div#bbHead h1 { + padding: 10px 0 5px 39px; + margin-left: 16px; + min-height: 31px; + background: transparent url('images/admin-header-logo.gif') no-repeat 0 8px; + font: normal normal normal 22px/normal Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; + color: white; +} + +div#bbHead h1 a { + text-decoration: none; +} + +div#bbHead h1 a span { + color: rgb(255, 255, 255); +} + +div#bbHead h1 a:hover span { + text-decoration: underline; +} + +div#bbHead h1 a em { + background: rgb(88, 88, 88) url('images/visit-site-button-grad.gif') repeat-x 0 0; + color: rgb(170, 170, 170); + text-shadow: rgb(63, 63, 63) 0px -1px 0px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + cursor: pointer; + display: inline-block; + font-size: 0.5em; + font-style: normal; + line-height: 17px; + margin-left: 5px; + padding: 0px 6px; + vertical-align: middle; +} + +div#bbHead h1 a:hover em { + color: rgb(255, 255, 255); +} + +div#bbHead h1 a:active em { + background-position: 0 -27px; +} + +div#bbUserInfo { + position: absolute; + top: 14px; + right: 15px; + font-size: 0.95em; + color: rgb(153, 153, 153); +} + +div#bbUserInfo a { + color: rgb(204, 204, 204); + text-decoration: none; +} + +div#bbUserInfo a:hover { + color: rgb(255, 255, 255); + text-decoration: underline; +} + + + + +/* Body */ + +div#bbBody { + margin-left: 180px; + padding-right: 15px; +} + +body.bb-menu-folded div#bbBody { + margin-left: 65px; +} + +h2 { + display: block; + color: rgb(70, 70, 70); + font: italic normal normal 1.9em/1.45em Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; + padding: 14px 15px 3px 0; + text-shadow: rgb(255, 255, 255) 0px 1px 0px; + background: transparent none no-repeat 0 0; + margin-left: -5px; +} + +h2 span.subtitle { + font-size: 0.75em; + padding-left: 25px; +} + +body.bb-admin-dashboard h2 { + padding-left: 47px; + background-image: url('images/icons32.png'); + background-position: 0 -172px; +} + +body.bb-admin-forums h2 { + padding-left: 47px; + background-image: url('images/icons32.png'); + background-position: 0 -981px; +} + +body.bb-admin-topics h2 { + padding-left: 47px; + background-image: url('images/icons32.png'); + background-position: 0 -1071px; +} + +body.bb-admin-posts h2 { + padding-left: 47px; + background-image: url('images/icons32.png'); + background-position: 0 -1161px; +} + +body.bb-admin-appearance h2 { + padding-left: 47px; + background-image: url('images/icons32.png'); + background-position: 0 8px; +} + +body.bb-admin-plugins h2 { + padding-left: 47px; + background-image: url('images/icons32.png'); + background-position: 0 -532px; +} + +body.bb-admin-users h2 { + padding-left: 47px; + background-image: url('images/icons32.png'); + background-position: 0 -891px; +} + +body.bb-admin-user-manage h2 { + padding-left: 47px; + background-image: url('images/icons32.png'); + background-position: 0 -891px; +} + +body.bb-admin-tools h2 { + padding-left: 47px; + background-image: url('images/icons32.png'); + background-position: 0 -621px; +} + +body.bb-admin-settings h2 { + padding-left: 47px; + background-image: url('images/icons32.png'); + background-position: 0 -712px; +} + + + + + +/* Menu */ +ul#bbAdminMenu * { + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; +} + +ul#bbAdminMenu { + float: left; + margin: 15px 5px 15px -165px; + position: relative; + width: 145px; +} + +body.bb-menu-folded ul#bbAdminMenu { + margin-left: -50px; + width: auto; +} + +ul#bbAdminMenu li.bb-menu { + +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu { + position: relative; +} + +ul#bbAdminMenu li.bb-menu a { + display: block; + color: rgb(0, 102, 0); + background: rgb(241, 241, 241) url('images/menu-bits.gif') repeat-x 0 -379px; + border: 1px solid rgb(227, 227, 227); + width: 133px; + padding: 5px; + font: normal normal normal 1em/1.4em Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; + text-decoration: none; + border-bottom-width: 0; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu a { + height: 17px; + width: 17px; + background-image: none; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu a span { + display: none; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current a { + background-position: 0 0; + border-color: rgb(109, 109, 109); + color: rgb(255, 255, 255); + text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0px; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-current a { + background-color: rgb(230, 230, 230); + background-image: none; + border-color: rgb(227, 227, 227); +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current a:hover { + border-color: rgb(181, 181, 181); + color: rgb(255, 255, 255); +} + +ul#bbAdminMenu li.bb-menu.bb-menu-first a { + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; + -khtml-border-top-left-radius: 6px; + -khtml-border-top-right-radius: 6px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-last a { + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-bottomright: 6px; + -khtml-border-bottom-left-radius: 6px; + -khtml-border-bottom-right-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-bottom-width: 1px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-open.bb-menu-has-submenu a, +ul#bbAdminMenu li.bb-menu.bb-menu-open a { + -moz-border-radius-bottomleft: 0; + -moz-border-radius-bottomright: 0; + -khtml-border-bottom-left-radius: 0; + -khtml-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-last a { + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-bottomright: 6px; + -khtml-border-bottom-left-radius: 6px; + -khtml-border-bottom-right-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-bottom-width: 1px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-open a { + border-bottom-width: 0; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current.bb-menu-has-submenu a:hover { + border-color: rgb(109, 109, 109); +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-current.bb-menu-has-submenu a:hover { + border-color: rgb(227, 227, 227); +} + +ul#bbAdminMenu li.bb-menu div.bb-menu-toggle { + float: right; + height: 27px; + width: 24px; + display: none; + background-image: url('images/menu-bits.gif'); + background-repeat: no-repeat; + background-position: 0 -110px; + margin-top: -27px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-last div.bb-menu-toggle { + margin-top: -28px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-last.bb-menu-open div.bb-menu-toggle { + margin-top: -27px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-has-submenu:hover div.bb-menu-toggle, +ul#bbAdminMenu li.bb-menu.bb-menu-has-submenu.bb-menu-open div.bb-menu-toggle { + display: block; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-has-submenu:hover div.bb-menu-toggle, +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-has-submenu.bb-menu-open div.bb-menu-toggle { + display: none; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-has-submenu.bb-menu-current div.bb-menu-toggle { + background-position: 0 -208px; +} + +ul#bbAdminMenu li.bb-menu a:hover, +ul#bbAdminMenu li.bb-menu a:active, +ul#bbAdminMenu li.bb-menu a:focus { + color: rgb(213, 78, 33); +} + +ul#bbAdminMenu li.bb-menu a div.bb-menu-icon { + height: 22px; + width: 22px; + float: left; + background: transparent url('images/menu.png') no-repeat -337px -39px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li.bb-menu a:hover div.bb-menu-icon { + background-position: -337px -7px; +} + +ul#bbAdminMenu li#bb-menu-dashboard a div.bb-menu-icon { + background-position: -67px -39px; +} + +ul#bbAdminMenu li#bb-menu-dashboard.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-dashboard a:hover div.bb-menu-icon { + background-position: -67px -7px; +} + +ul#bbAdminMenu li#bb-menu-forums a div.bb-menu-icon { + background-position: -367px -39px; +} + +ul#bbAdminMenu li#bb-menu-forums.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-forums a:hover div.bb-menu-icon { + background-position: -367px -7px; +} + +ul#bbAdminMenu li#bb-menu-topics a div.bb-menu-icon { + background-position: -397px -39px; +} + +ul#bbAdminMenu li#bb-menu-topics.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-topics a:hover div.bb-menu-icon { + background-position: -397px -7px; +} + +ul#bbAdminMenu li#bb-menu-posts a div.bb-menu-icon { + background-position: -427px -39px; +} + +ul#bbAdminMenu li#bb-menu-posts.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-posts a:hover div.bb-menu-icon { + background-position: -427px -7px; +} + +ul#bbAdminMenu li#bb-menu-appearance a div.bb-menu-icon { + background-position: -6px -39px; +} + +ul#bbAdminMenu li#bb-menu-appearance.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-appearance a:hover div.bb-menu-icon { + background-position: -6px -7px; +} + +ul#bbAdminMenu li#bb-menu-plugins a div.bb-menu-icon { + background-position: -186px -39px; +} + +ul#bbAdminMenu li#bb-menu-plugins.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-plugins a:hover div.bb-menu-icon { + background-position: -186px -7px; +} + +ul#bbAdminMenu li#bb-menu-users a div.bb-menu-icon { + background-position: -308px -39px; +} + +ul#bbAdminMenu li#bb-menu-users.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-users a:hover div.bb-menu-icon { + background-position: -308px -7px; +} + +ul#bbAdminMenu li#bb-menu-tools a div.bb-menu-icon { + background-position: -217px -39px; +} + +ul#bbAdminMenu li#bb-menu-tools.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-tools a:hover div.bb-menu-icon { + background-position: -217px -7px; +} + +ul#bbAdminMenu li#bb-menu-settings a div.bb-menu-icon { + background-position: -246px -39px; +} + +ul#bbAdminMenu li#bb-menu-settings.bb-menu-current a div.bb-menu-icon, +ul#bbAdminMenu li#bb-menu-settings a:hover div.bb-menu-icon { + background-position: -246px -7px; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-separator { + +} + +ul#bbAdminMenu li.bb-menu.bb-menu-separator a { + background: transparent url('images/menu-arrows.gif') no-repeat 0 5px; + border-width: 0; + padding: 0; + height: 21px; + cursor: w-resize; + width: 145px; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-separator a { + background: transparent url('images/menu-arrows.gif') no-repeat -171px -34px; + height: 21px; + cursor: e-resize; + width: 29px; +} + +ul#bbAdminMenu li.bb-menu div.bb-menu-sub-wrap { + display: none; + border: 1px solid rgb(227, 227, 227); + border-bottom-width: 0; + border-left-width: 0; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu div.bb-menu-sub-wrap { + display: none; + position: absolute; + left: 36px; + top: 0; + width: 145px; + z-index: 1000; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current div.bb-menu-sub-wrap { + border-color: rgb(170, 170, 170); + border-bottom-width: 1px; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu div.bb-menu-sub-wrap { + border-width: 0; + border-color: rgb(227, 227, 227); + border-style: solid; + border-bottom-width: 1px; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-current div.bb-menu-sub-wrap { + border-color: rgb(170, 170, 170); +} + +ul#bbAdminMenu li.bb-menu.bb-menu-open div.bb-menu-sub-wrap { + display: block; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-last div.bb-menu-sub-wrap { + border-bottom-width: 1px; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu div.bb-menu-sub-wrap.bb-menu-sub-open { + display: block; + border-bottom-width: 1px; +} + +ul#bbAdminMenu li.bb-menu div.bb-menu-sub-wrap span { + display: none; + font: normal normal normal 1em/1.45em Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; + background-color: rgb(241, 241, 241); + border: 1px solid rgb(227, 227, 227); + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; + -khtml-border-top-left-radius: 6px; + -khtml-border-top-right-radius: 6px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + padding: 5px 5px 4px 10px; + cursor: default; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current div.bb-menu-sub-wrap span { + background-color: rgb(234, 234, 234); + border-color: rgb(170, 170, 170); +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu div.bb-menu-sub-wrap span { + display: block; +} + +ul#bbAdminMenu li.bb-menu li.bb-menu-sub a { + width: 127px !important; + -moz-border-radius: 0 !important; + -khtml-border-radius: 0 !important; + -webkit-border-radius: 0 !important; + border-radius: 0 !important; + border-width: 0 !important; + font: normal normal normal 0.85em/1.7em 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + padding: 1px 5px 3px 12px; + color: rgb(0, 102, 0); + text-shadow: none; + background: rgb(255, 255, 255) url('images/menu-bits.gif') no-repeat 0 -306px; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu li.bb-menu-sub a { + height: auto; + background: rgb(255, 255, 255) url('images/menu-bits.gif') no-repeat 0 -306px; + border-right-width: 1px !important; +} + +ul#bbAdminMenu li.bb-menu li.bb-menu-sub a:hover { + background-color: rgb(222, 236, 225) !important; + color: rgb(51, 51, 51); +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current li.bb-menu-sub a { + background-image: url('images/menu-dark.gif'); + background-position: 0 -20px !important; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-current li.bb-menu-sub a { + background-image: url('images/menu-dark.gif'); + background-position: 0 -20px !important; + border-color: rgb(170, 170, 170) !important; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-current li.bb-menu-sub.bb-menu-sub-current a { + color: rgb(51, 51, 51); + font-weight: bold; + background-color: rgb(245, 245, 245) !important; + background-position: 0 0 !important; +} + +body.bb-menu-folded ul#bbAdminMenu li.bb-menu.bb-menu-current li.bb-menu-sub.bb-menu-sub-current a { + background-position: 0 0 !important; +} + +ul#bbAdminMenu li.bb-menu.bb-menu-open li.bb-menu-sub a { + background-position: 0 -306px; +} + +div.wrap { + float: left; + width: 100%; +} + +div#message { + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border-style: solid; + border-width: 1px; + margin: 5px 0 2px 0; + padding: 0 0.65em; + font-size: 0.9em; +} + +div#message.updated { + background-color: rgb(255, 251, 204); + border-color: rgb(230, 219, 85); +} + +div#message.error { + background-color: rgb(255, 235, 232); + border-color: rgb(204, 0, 0); +} + +div#message p { + line-height: 1; + margin: 0.6em 0; + padding: 2px; +} + +div#message p strong { + font-weight: bold; +} + +div#message a { + color: rgb(0, 102, 0); + text-decoration: none; +} + +div#message a:hover { + color: rgb(213, 78, 33); +} + +div.plugin-error { + background-color: rgb(255, 235, 232); + border-color: rgb(204, 0, 0); + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border-style: solid; + border-width: 1px; + margin: 5px 0 2px 0; + padding: 0; + height: 160px; +} + +div.plugin-error iframe { + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + display: block; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + border-width: 0; +} + + +/* Dashboard */ + +div.dashboard { + background-color: rgb(255, 255, 255); + border: 1px solid rgb(223, 223, 223); + -moz-border-radius: 6px; + -khtml-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + margin: 10px 5px 20px 5px; +} + +div.dashboard a { + color: rgb(0, 102, 0); +} + +div.dashboard a:hover { + color: rgb(213, 78, 33); +} + +div.dashboard h3 { + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; + -khtml-border-top-left-radius: 6px; + -khtml-border-top-right-radius: 6px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + background: url('images/gray-grad.png') repeat-x rgb(223, 223, 223); + text-shadow: rgb(255, 255, 255) 0px 1px 0px; + color: rgb(70, 70, 70); + font-size: 0.9em; + font-weight: bold; + line-height: 1; + margin: 0px; + padding: 7px 9px; +} + +div.dashboard div.table { + border-bottom: 1px solid rgb(236, 236, 236); + background: rgb(249, 249, 249); +} + +div.dashboard div.table table { + width: 100%; +} + +div.dashboard div.table thead th { + color: rgb(119, 119, 119); + font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; + font-size: 1em; + font-style: italic; + padding: 3px 8px 4px; + background: rgb(255, 255, 255); + width: 50%; +} + +div.dashboard div.table tbody td { + border-top: 1px solid rgb(236, 236, 236); + padding: 4px 16px; + white-space: nowrap; + font-size: 0.9em; + color: rgb(70, 70, 70); +} + +div.dashboard div.table tbody td span { + font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; + font-size: 1.6em; + padding-right: 6px; +} + +div.dashboard p { + color: rgb(51, 51, 51); + font-size: 0.85em; + margin: 8px; +} + +div.dashboard div.versions p span.b { + font-weight: bold; +} + +div.dashboard div.versions p a { + text-decoration: none; + font-weight: bold; +} + +div.dashboard div.versions p.theme a.button { + display: block; + float: right; + font-weight: normal; + -moz-border-radius: 10px; + -khtml-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + padding: 4px 10px; + background: url('images/white-grad.png') repeat-x scroll rgb(242, 242, 242); + border: 1px solid rgb(187, 187, 187); + color: rgb(70, 70, 70); + cursor: pointer; + font-size: 1em; + line-height: 1.2em; +} + +div.dashboard div.versions p.theme a.button:hover { + border-color: rgb(102, 102, 102); + color: rgb(0, 0, 0); +} + +div.dashboard div.versions p.theme a.button:active { + background: url('images/white-grad-active.png') repeat-x scroll rgb(238, 238, 238); +} + +div.dashboard ul li { + color: rgb(51, 51, 51); + font-size: 0.85em; + margin: 8px; +} + +div.dashboard ul li a { + text-decoration: none; + font-weight: bold; +} + + + +/* Search forms */ + +form.search-form fieldset, form.bulk-form fieldset { + margin: 10px 0 0 0; + clear: left; + float: left; +} + +form.search-form fieldset div { + float: left; + margin-right: 5px; + margin-top: 3px; +} + +form.search-form fieldset div div { + float: none; + margin: 0; +} + +form.search-form fieldset div label { + display: block; + line-height: 1; + padding: 0 0 3px 0; + font-size: 0.8em; + color: rgb(70, 70, 70); +} + +form.search-form fieldset div div input.text-input { + width: 100px; + padding: 3px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + border: 1px solid rgb(223, 223, 223); + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 0.85em; + line-height: 1.3em; +} + +form.search-form fieldset div div input.checkbox-input { + margin: 4px; +} + +form.search-form select, form.bulk-form select { + height: 2.1em; + margin: 0; + padding: 3px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + border: 1px solid rgb(223, 223, 223); + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 0.85em; +} + +form.search-form fieldset div div option { + padding: 3px; + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 0.9em; +} + +form.search-form div.submit label { + width: 0; + overflow: hidden; +} + +form.search-form div.submit input.button, form.bulk-form input.button { + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + -moz-border-radius: 10px; + -khtml-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + padding: 4px 9px 5px; + background: url('images/white-grad.png') repeat-x scroll rgb(242, 242, 242); + border: 1px solid rgb(187, 187, 187); + color: rgb(70, 70, 70); + cursor: pointer; + line-height: 1.1em; + font-size: 0.85em; +} + +form.search-form div.submit input.button:hover, form.bulk-form input.button:hover { + border-color: rgb(102, 102, 102); + color: rgb(0, 0, 0); +} + +form.search-form div.submit input.button:active, form.bulk-form input.button:active { + background: url('images/white-grad-active.png') repeat-x scroll rgb(238, 238, 238); +} + + + +/* Table nav */ + +div.tablenav { + margin-top: -1em; + float: right; +} + +div.bottom { + margin-top: 0; +} + +div.tablenav a { + color: rgb(0, 102, 0); +} + +div.tablenav a:hover { + color: rgb(213, 78, 33); +} + +div.tablenav-pages { + margin: 13px 0 0 0; +} + +div.tablenav.bottom div.tablenav-pages { + margin: 0 0 16px 0; +} + +span.displaying-num { + display: block; + text-align: right; + line-height: 1; + font-size: 0.8em; + color: rgb(70, 70, 70); + padding: 0 0 3px 0; +} + +span.displaying-pages { + display: block; + float: right; + cursor: default; + color: rgb(85, 85, 85); +} + +span.displaying-pages span, +span.displaying-pages a { + display: block; + float: left; + -moz-border-radius: 5px; + -khtml-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + border: 1px solid rgb(211, 211, 211); + padding: 3px 7px; + text-decoration: none; + background-color: rgb(223, 223, 223); + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 0.85em; + line-height: 1.3em; + margin-left: 3px; +} + +span.displaying-pages span.dots { + border-width: 0; + background-color: transparent; + padding: 4px 0 0 0; + font-weight: bold; +} + +span.displaying-pages a { + font-weight: bold; + background: url('images/menu-bits.gif') repeat-x 0 -379px rgb(238, 238, 238); + border-color: rgb(227, 227, 227); +} + +span.displaying-pages a:hover { + border-color: rgb(213, 78, 33); +} + +span.displaying-pages a:active { + color: rgb(255, 255, 255); +} + +div.table-filter { + color: rgb(102, 102, 102); + margin: 8px 0px 5px; + font-size: 0.85em; +} + +div.table-filter a { + color: rgb(0, 102, 0); + text-decoration: none; +} + +div.table-filter a.current { + color: rgb(0, 0, 0); + font-weight: bold; +} + +div.table-filter a:hover { + color: rgb(213, 78, 33); +} + +div.table-filter a span.count { + color: rgb(153, 153, 153); + font-weight: normal; +} + + + + +/* Tabled info */ + +p.no-results { + margin: 10px 0; + font-size: 0.85em; +} + +table.widefat { + width: 100%; + border: 1px solid rgb(223, 223, 223); + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + border-collapse: separate; + margin: 10px 0; +} + +table.widefat a { + color: rgb(0, 102, 0); + text-decoration: none; +} + +table.widefat a:hover { + color: rgb(213, 78, 33); +} + +table.widefat tr td { + width: 18%; + vertical-align: top; + padding: 3px 7px; + font-size: 0.85em; + border-bottom: 1px solid rgb(223, 223, 223); +} + +table.widefat tr.alt td { + background-color: rgb(255, 255, 255); +} + +table.widefat tr.deleted td { + background-color: rgb(245, 224, 224); +} + +table.widefat tr.deleted.alt td { + background-color: rgb(248, 233, 233); +} + +table.widefat tr.spam td { + background-color: rgb(238, 218, 204); +} + +table.widefat tr.spam.alt td { + background-color: rgb(243, 228, 218); +} + +table#plugins-list.widefat tr.inactive td { + background-color: rgb(238, 238, 238); +} + +table#plugins-list.widefat tr.active td { + background-color: rgb(255, 255, 255); +} + +table#plugins-list.widefat tr.autoload td { + background-color: rgb(249, 249, 249); +} + +table#plugins-list.widefat tr.autoload td.plugin-name { + background-image: url('images/input-lock.png'); + background-repeat: no-repeat; + background-position: 100% 0; + padding-right: 20px; +} + +table.widefat tr th { + background: url('images/gray-grad.png') repeat-x rgb(223, 223, 223); + text-shadow: rgb(255, 255, 255) 0px 1px 0px; + color: rgb(51, 51, 51); + font-weight: bold; + vertical-align: top; + padding: 7px 7px 8px; + font-size: 0.85em; + line-height: 1.3em; + border-bottom: 1px solid rgb(223, 223, 223); +} + +table.widefat tfoot tr th { + border-bottom-width: 0; +} + +table.widefat .check-column { + width: 2.2em; + padding-right: 0; +} + +table#posts-list.widefat tr td.post { + width: 46%; + font-size: 0.9em; +} + +table#topics-list.widefat tr td.topic { + width: 28%; + font-size: 0.9em; +} + +table#plugins-list.widefat tr td.plugin-name { + width: 25%; + font-size: 0.9em; +} + +table#plugins-list.widefat tr td.plugin-description { + width: 75%; +} + +table.widefat tr td.author img.avatar { + vertical-align: top; + border: 1px solid rgb(223, 223, 223); +} + +table.widefat tr td.post p { + margin-bottom: 0.4em; +} + +table.widefat tr td.plugin-description p { + margin-bottom: 0.8em; +} + +table.widefat tr td.plugin-description p.meta { + margin-bottom: 0; +} + +table.widefat tr td.topic span.row-title, +table.widefat tr td.user span.row-title { + margin-bottom: 0.4em; + display: block; + font-weight: bold; +} + +table.widefat tr td.user img.avatar { + display: block; + float: left; + margin: 3px 8px 3px -1px; + border: 1px solid rgb(223, 223, 223); +} + +table.widefat tr td.plugin-name span.row-title { + margin-bottom: 0.8em; + display: block; + font-weight: bold; +} + +table.widefat tr td.post div, +table.widefat tr td.topic div, +table.widefat tr td.plugin-name div { + font-size: 0.85em; +} + +table.widefat tr span.row-actions { + display: none; +} + +table#plugins-list.widefat tr span.row-actions { + display: inline; +} + +table.widefat tr:hover span.row-actions { + display: inline; +} + +table.widefat tr span.row-actions span.note { + color: rgb(102, 102, 102); +} + +table.widefat tr a.post-undelete-link { + display: none; +} + +table.widefat tr.deleted a.post-undelete-link { + display: inline; +} + +table.widefat tr.deleted a.post-delete-link { + display: none; +} + +table.widefat tr td em { + font-style: italic; +} + +table.widefat tr td strong { + font-weight: bold; +} + +table.widefat tr td code, +table.widefat tr td kbd { + font-family: Consolas, Monaco, Courier, monospace; + font-size: 1.2em; + line-height: 1.4; + background: rgb(234, 234, 234); + margin: 0px 1px; + padding: 1px 3px; + color: rgb(51, 51, 51); +} + + + +/* Forums */ + +body.sorting { + overflow-x: hidden; +} + +ul#forum-list { + xwidth: 100%; + border: 1px solid rgb(223, 223, 223); + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin: 10px 0; +} + +ul#forum-list a { + color: rgb(0, 102, 0); + text-decoration: none; +} + +ul#forum-list a:hover { + color: rgb(213, 78, 33); +} + +ul#forum-list li { + border-top: 1px solid rgb(223, 223, 223); + background-color: rgb(249, 249, 249); +} + +ul#forum-list li.alt { + background-color: rgb(255, 255, 255); +} + +ul#forum-list li ul li { + border-left: 1px dashed rgb(223, 223, 223); +} + +ul#forum-list li ul.list-block { + padding: 0 0 0 30px; +} + +ul#forum-list li.list-block { + padding: 3px 0 0 0; +} + +ul#forum-list li div.list-block { + padding: 0 7px 3px 7px; +} + +ul#forum-list li.thead { + background: url('images/gray-grad.png') repeat-x rgb(223, 223, 223); + text-shadow: rgb(255, 255, 255) 0px 1px 0px; + color: rgb(51, 51, 51); + font-weight: bold; + vertical-align: top; + padding: 7px 7px 8px; + font-size: 0.85em; + line-height: 1.3em; + border-top-width: 0; +} + +ul#forum-list li img.sort-handle { + float: left; + margin: 0 3px 0 -4px; + cursor: move; +} + +ul#forum-list li div.row-title { + font-size: 0.9em; + font-weight: bold; +} + +ul#forum-list li p.row-description { + font-size: 0.85em; +} + +ul#forum-list li div.list-block div.row-actions { + font-size: 0.8em; + margin-top: 0.4em; +} + +ul#forum-list li div.list-block div.row-actions span { + display: none; +} + +ul#forum-list li div.list-block:hover div.row-actions span { + display: inline; +} + +ul#forum-list.sorting li div.list-block div.row-actions span { + display: none; +} + +ul#forum-list.sorting li div.list-block div.row-actions span { + display: none; +} + +.helper { + background-color: rgb(200, 250, 200); + outline: 1px dashed #777; + width: 100% !important; + padding: 3px 0; +} + +#dragHelper { + xwidth: auto !important; + padding: 3px; +} + +#dragHelper img.sort-handle { + float: left; + margin: 0 3px 0 0; +} + +#dragHelper div.row-description { + margin: 0 0 0 4px; +} + +#dragHelper div.row-actions span { + display: none; +} + + + +/* Themes */ + +h3.themes { + display: block; + color: rgb(51, 51, 51); + font-size: 1.17em; + font-weight: bold; + padding: 0 0 1em 0; + margin-top: 10px; +} + +table.theme-list-active, +table.theme-list { + margin: 0 auto 40px; + width: 100%; + border-collapse: collapse; +} + +table.theme-list { + margin-bottom: 20px; + width: 100%; + border-top: 1px solid rgb(221, 221, 221); + border-bottom: 1px solid rgb(221, 221, 221); + border-collapse: collapse; +} + +table.theme-list td { + width: 240px; + padding: 20px; + border-bottom: 1px solid rgb(221, 221, 221); + border-right: 1px solid rgb(221, 221, 221); + vertical-align: top; +} + +table.theme-list td.position-3 { + border-right: none; +} + +table.theme-list td h3.themes, +table.theme-list-active td h3.themes { + margin-top: 0; + font-size: 1em; +} + +table.theme-list td div.screen-shot { + border: 1px solid rgb(204, 204, 204); + width: 240px; + height: 180px; + margin-bottom: 10px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +table.theme-list td div.screen-shot img { + width: 240px; + height: 180px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +table.theme-list-active td div.screen-shot { + border: 1px solid rgb(153, 153, 153); + width: 150px; + height: 112px; + float: left; + margin-right: 15px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +table.theme-list-active td div.screen-shot img { + width: 150px; + height: 112px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +table.theme-list td div.description p, +table.theme-list-active td div.description p { + color: rgb(102, 102, 102); + font-style: italic; + margin: 0 0 1em 0; + font-size: 0.9em; +} + +table.theme-list td div.description div.actions { + margin: 0 0 1em 0; + font-size: 1em; +} + +table.theme-list td div.description p.location, +table.theme-list-active td div.description p.location { + color: inherit; + font-style: normal; + margin: 0 0 0 0; +} + +table.theme-list td a, +table.theme-list-active td a { + color: rgb(0, 102, 0); +} + +table.theme-list td a:hover, +table.theme-list-active td a:hover { + color: rgb(213, 78, 33); +} + + +/* Users */ + +.bb-admin-user-manage form { + width: 550px; +} + +#option-pass-strength-fake-input { + clear: none; + width: 200px; +} +.bb-admin-user-manage #pass-strength-result { + clear: left; + float: left; + margin-top: -25px; +} + +#pass-strength-result { + padding: 2px; + text-align: center; + width: 280px; + border: 1px solid #ccc; + background-color: #e3e3e3; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +#pass-strength-result.bad { + background-color: #ffeff7; + border-color: #c69; +} + +#pass-strength-result.good { + background-color: #effff4; + border-color: #66cc87; +} + +#pass-strength-result.short { + background-color: #e3e3e3; +} + +#pass-strength-result.strong { + background-color: #59ef86; + border-color: #319f52; +} + + +/* Options */ + +form.settings fieldset { + margin-top: 10px; + margin-bottom: 20px; +} + +form.settings legend, +div.settings h3 { + display: block; + color: rgb(51, 51, 51); + font-size: 1.17em; + font-weight: bold; + padding: 0 0 1em 0; +} + +div.settings { + margin-bottom: 20px; +} + +hr.settings { + height: 1px; + background-color: rgb(221, 221, 221); + border-width: 0; + margin-bottom: 20px; +} + +form.settings p, +div.settings p { + float: none; + display: block; + color: rgb(51, 51, 51); + font-size: 0.9em; + margin: 0 0 1em 0; +} + +form.settings ul, +div.settings ul { + float: none; + display: block; + color: rgb(51, 51, 51); + font-size: 0.9em; + margin: 0 4em 1em 4em; +} + +form.settings ul li, +div.settings ul li { + list-style: disc outside none; +} + +form.settings strong, +div.settings strong { + font-weight: bold; +} + +form.settings em, +div.settings em { + font-style: italic; +} + +form.settings code, +form.settings kbd { + font-family: Consolas, Monaco, Courier, monospace; + font-size: 1.2em; + background: rgb(234, 234, 234); + margin: 0px 1px; + padding: 1px 3px; + color: rgb(51, 51, 51); +} + +form.settings a { + color: rgb(0, 102, 0); +} + +form.settings a:hover { + color: rgb(213, 78, 33); +} + +form.settings div { + clear: both; + padding: 10px; + margin-right: 10px; +} + +form.settings div label { + float: left; + display: block; + padding: 3px; + width: 200px; + color: rgb(34, 34, 34); + text-shadow: rgb(255, 255, 255) 0px 1px 0px; +} + +form.settings div div.label { + float: left; + display: block; + padding: 3px; + width: 190px; + color: rgb(34, 34, 34); + text-shadow: rgb(255, 255, 255) 0px 1px 0px; +} + +form.settings div.disabled label, +form.settings div.disabled div.label { + background-image: url('images/input-lock.png'); + background-repeat: no-repeat; + background-position: 100% 0; + padding-right: 20px; + width: 180px; +} + +form.settings div.disabled div.label { + width: 170px; +} + +form.settings div div.inputs { + clear: none; + padding: 0; + margin: 0 0 0 210px; +} + +form.settings div div.inputs label { + float: none; + clear: none; + display: block; + padding: 0; + margin: 3px 0 6px 0; + width: auto; + color: rgb(51, 51, 51); + text-shadow: none; + font-size: 0.85em; +} + +form.settings div.disabled div.inputs label { + background-image: none; +} + +form.settings div div.inputs label.radios img { + margin: -2px 0 0 0; + vertical-align: middle; + border: 1px solid rgb(223, 223, 223); +} + +form.settings input.text, +form.settings textarea { + width: 300px; + padding: 3px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + border: 1px solid rgb(223, 223, 223); + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + font-size: 1em; +} + +form.settings div.disabled input.text, +form.settings div.disabled textarea { + background-color: rgb(221, 221, 221); +} + +form.settings div input.text.short { + width: 100px; +} + +form.settings div input.text.code { + font-family: Consolas, Monaco, Courier, monospace; + font-size: 1.2em; +} + +form.settings input.readonly, +form.settings textarea.readonly { + background-color: rgb(221, 221, 221); +} + +form.settings div.table { + margin: 0 0 0 220px; + padding: 3px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + border: 1px solid rgb(223, 223, 223); + background-color: rgb(221, 221, 221); + width: 400px; +} + +form.settings div.table table { + width: 100%; + font-family: Consolas, Monaco, Courier, monospace; + font-size: 1.2em; + border-collapse: collapse; +} + +form.settings div.table table th { + border-bottom: 1px dotted rgb(70, 70, 70); + padding: 6px; +} + +form.settings div.table table td { + padding: 6px; +} + +form.settings div span.after { + font-size: 0.85em; +} + +form.settings div p { + color: rgb(102, 102, 102); + font-style: italic; + margin: 0 0 0 3em; + padding: 0.3em; + border-left: 1px solid rgb(223, 223, 223); +} + +form.settings input.submit { + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + -moz-border-radius: 11px; + -khtml-border-radius: 11px; + -webkit-border-radius: 11px; + border-radius: 11px; + border: 1px solid rgb(63, 163, 50); + cursor: pointer; + font-size: 11px; + line-height: 16px; + padding: 2px 8px; + background: url('images/button-grad.png') 0 0 rgb(33, 117, 155); + color: rgb(255, 255, 255); + font-weight: bold; + text-shadow: rgba(0, 0, 0, 0.3) 0 -1px 0; +} + +form.settings input.submit:hover { + border-color: rgb(0, 102, 0); +} + +form.settings input.submit:active { + background-position: 0 30px; +} + +form.settings a.cancel { + display: block; + float: left; + font-family: 'Lucida Grande', Verdana, Arial, 'Bitstream Vera Sans', sans-serif; + -moz-border-radius: 11px; + -khtml-border-radius: 11px; + -webkit-border-radius: 11px; + border-radius: 11px; + border: 1px solid rgb(187, 187, 187); + cursor: pointer; + font-size: 11px; + line-height: 16px; + padding: 2px 8px; + background: url('images/white-grad.png') repeat-x scroll rgb(242, 242, 242); + color: rgb(70, 70, 70); + cursor: pointer; + font-weight: bold; + text-shadow: rgba(255, 255, 255, 0.7) 0 -1px 0; + margin-right: 6px; + text-decoration: none; +} + +form.settings a.cancel:hover { + border-color: rgb(153, 51, 51); + color: rgb(204, 51, 51); +} + +form.settings a.cancel:active { + background: url('images/white-grad-active.png') repeat-x scroll rgb(238, 238, 238); +} + +form.settings div#option-mod-rewrite div.inputs label.radios span { + display: inline-block; + width: 7em; +} + +form.settings div#option-mod-rewrite div.inputs label.radios code { + white-space: nowrap; +} + +form.settings textarea#rewrite-rules { + width: 99%; +} + +form.settings select#timezone-string option { + margin-left: 1em; +} + + +/* Footer */ + +p#bbShowOff { + margin: 0 8px 8px 0; + padding: 6px 8px; + color: rgb(255, 255, 255); + background-color: rgb(170, 170, 170); + font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; + font-size: 0.9em; + font-style: italic; + -moz-border-radius: 6px; + -khtml-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + float: right; +} + +div#bbFoot { + background-color: rgb(70, 70, 70); + color: rgb(153, 153, 153); + margin-top: -45px; + clear: both; + position: relative; + width: 100%; + font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; + font-size: 0.9em; + font-style: italic; +} + +div#bbFoot p { + line-height: 15px; + padding: 15px; +} + +div#bbFoot p a { + color: rgb(204, 204, 204); + text-decoration: none; +} + +p#bbThanks { + float: left; +} + +p#bbVersion { + text-align: right; +} + +div.clear { + clear: both !important; + height: 0; + line-height: 0; + font-size: 0; +} + + + + + + + + +/* Layout classes */ +/* +.absleft { + position: absolute; + left: 0; +} + +.absright { + position: absolute; + right: 0; +} + +.abstop { + position: absolute; + top: 0; +} + +.posrel { + position: relative; +} + +.alignleft { + float: left; +} + +.alignright { + float: right; +} +*/ +/* +.alternate, .alt { + background: #f1f1f1; +} +*/ +/* +.active { + background-color: rgb(200, 250, 200); +} +*/ + + + + +/* List Blocks */ + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tag-destroy.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tag-destroy.php new file mode 100644 index 0000000..e4fc38e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tag-destroy.php @@ -0,0 +1,20 @@ +\nTry Again?" ), wp_get_referer() ) ) ; + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tag-merge.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tag-merge.php new file mode 100644 index 0000000..2a44c6b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tag-merge.php @@ -0,0 +1,29 @@ +tag_id ) ) + bb_die( + sprintf( __( "Number of topics from which the old tag was removed: %d
      \n"), $merged['old_count'] ) . + sprintf( __( "Number of topics to which the new tag was added: %d
      \n"),$merged['diff_count'] ) . + sprintf( __( "Number of rows deleted from tags table:%d
      \n"),$merged['destroyed']['tags'] ) . + sprintf( __( 'View Results of Merge'), bb_get_tag_link() ) + ); +else + bb_die( printf( __( "Something odd happened when attempting to merge those tags.
      \nTry Again?" ), wp_get_referer() ) ); + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tag-rename.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tag-rename.php new file mode 100644 index 0000000..19933db --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tag-rename.php @@ -0,0 +1,23 @@ +Try Again'), wp_get_referer() ) ); + +exit; + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/themes.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/themes.php new file mode 100644 index 0000000..703c5e2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/themes.php @@ -0,0 +1,159 @@ + 1, 'name' => urlencode( $name ) ), BB_URI_CONTEXT_HEADER + BB_URI_CONTEXT_BB_ADMIN ) ); + exit; +} + +if ( isset($_GET['activated']) ) + $theme_notice = bb_admin_notice( sprintf( __( 'Theme "%s" activated' ), esc_attr($_GET['name'])) ); + +if ( !in_array($activetheme, $themes) ) { + if ($activetheme == BB_DEFAULT_THEME) { + remove_action( 'bb_admin_notices', $theme_notice ); + bb_admin_notice( __( 'Default theme is missing.' ), 'error' ); + } else { + bb_delete_option( 'bb_active_theme' ); + remove_action( 'bb_admin_notices', $theme_notice ); + bb_admin_notice( __( 'Theme not found. Default theme applied.' ), 'error' ); + } +} + +function bb_admin_theme_row( $theme, $position ) { + $theme_directory = bb_get_theme_directory( $theme ); + $theme_data = file_exists( $theme_directory . 'style.css' ) ? bb_get_theme_data( $theme ) : false; + $screen_shot = file_exists( $theme_directory . 'screenshot.png' ) ? esc_url( bb_get_theme_uri( $theme ) . 'screenshot.png' ) : false; + $activation_url = bb_get_uri('bb-admin/themes.php', array('theme' => urlencode($theme)), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN); + $activation_url = esc_url( bb_nonce_url( $activation_url, 'switch-theme' ) ); + + if ( 1 === $position || 0 === $position ) { + echo ''; + } +?> + + +
      +

      +%3$s' ), + $theme_data['Title'], + $theme_data['Version'], + $theme_data['Author'] + ); +?> +

      + + +

      +%s' ), + $theme_data['Porter'] + ); +?> +

      + + + + +
      + "> +
      + +

      +
      + +'; + } +} + +if ( isset( $bb->safemode ) && $bb->safemode === true ) { + bb_admin_notice( __( '"Safe mode" is on, the default theme will be used instead of the active theme indicated below.' ), 'error' ); +} + +$bb_admin_body_class = ' bb-admin-appearance'; + +bb_get_admin_header(); +?> + +

      + + +

      +
      + + +
      +
      + + + +

      +
      + +'; + break; + case 2: + echo ''; + break; + case 3: + break; +} +?> +
      +
      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tools-recount.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tools-recount.php new file mode 100644 index 0000000..b1a486d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/tools-recount.php @@ -0,0 +1,121 @@ +' . "\n" . '

      ', $messages ); + bb_admin_notice( $messages ); + } +} + + +$bb_admin_body_class = ' bb-admin-tools'; + +bb_get_admin_header(); +?> +

      + + +
      +
      + +

      +

      + +
      +
      + +
      +
      + ' . esc_html( $item[1] ) . '' . "\n"; + } +?> +
      +
      + +

      + +
      +
      + + +
      +
      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/topic-move.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/topic-move.php new file mode 100644 index 0000000..fcf0d1a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/topic-move.php @@ -0,0 +1,30 @@ + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/topic-toggle.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/topic-toggle.php new file mode 100644 index 0000000..ac8c10a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/topic-toggle.php @@ -0,0 +1,33 @@ + 'closed', 'count' => $affected ); + break; + case 'open' : + foreach ( $topic_ids as $topic_id ) { + $affected += bb_open_topic( $topic_id ); + } + $query_vars = array( 'message' => 'opened', 'count' => $affected ); + break; + case 'delete' : + foreach ( $topic_ids as $topic_id ) { + $affected += (int) (bool) bb_delete_topic( $topic_id, 1 ); + } + $query_vars = array( 'message' => 'deleted', 'count' => $affected ); + break; + case 'undelete' : + foreach ( $topic_ids as $topic_id ) { + $affected += (int) (bool) bb_delete_topic( $topic_id, 0 ); + } + $query_vars = array( 'message' => 'undeleted', 'count' => $affected ); + break; + default : + if ( $action ) + $query_vars = apply_filters( "bulk_topic__$action", array(), $topic_ids ); + break; + } + + bb_safe_redirect( add_query_arg( $query_vars ) ); + exit; +} + +if ( !empty( $_GET['message'] ) ) { + $message_count = isset( $_GET['count'] ) ? (int) $_GET['count'] : 1; + + switch ( (string) $_GET['message'] ) { + case 'undeleted': + bb_admin_notice( sprintf( _n( 'Topic undeleted.', '%s topics undeleted.', $message_count ), bb_number_format_i18n( $message_count ) ) ); + break; + case 'deleted': + bb_admin_notice( sprintf( _n( 'Topic deleted.', '%s topics deleted.', $message_count ), bb_number_format_i18n( $message_count ) ) ); + break; + case 'opened': + bb_admin_notice( sprintf( _n( 'Topic opened.', '%s topics opened.', $message_count ), bb_number_format_i18n( $message_count ) ) ); + break; + case 'closed': + bb_admin_notice( sprintf( _n( 'Topic closed.', '%s topics closed.', $message_count ), bb_number_format_i18n( $message_count ) ) ); + break; + } +} + +$bb_admin_body_class = ' bb-admin-topics'; + +bb_get_admin_header(); + +if ( !bb_current_user_can('browse_deleted') ) + die(__("Now how'd you get here? And what did you think you'd being doing?")); //This should never happen. +add_filter( 'topic_link', 'bb_make_link_view_all' ); +add_filter( 'topic_last_post_link', 'bb_make_link_view_all' ); +$topic_query_vars = array( 'topic_status' => 'normal', 'open' => 'open', 'count' => true, 'per_page' => 20 ); +if ( isset($_POST['search']) && $_POST['search'] ) { + $topic_query_vars['post_status'] = 'all'; +} elseif ( isset($_GET['search']) && $_GET['search'] ) { + $topic_query_vars['post_status'] = 'all'; +} +$topic_query = new BB_Query_Form( 'topic', $topic_query_vars ); +$topics = $topic_query->results; +?> + +
      + +

      +get( 'search' ); +$h2_forum = $topic_query->get( 'forum_id' ); +$h2_tag = $topic_query->get( 'tag_id' ); +$h2_author = $topic_query->get( 'topic_author_id' ); + +$h2_search = $h2_search ? ' ' . sprintf( __('containing “%s”'), esc_html( $h2_search ) ) : ''; +$h2_forum = $h2_forum ? ' ' . sprintf( __('in “%s”') , get_forum_name( $h2_forum ) ) : ''; +$h2_tag = $h2_tag ? ' ' . sprintf( __('with tag “%s”'), esc_html( bb_get_tag_name( $h2_tag ) ) ) : ''; +$h2_author = $h2_author ? ' ' . sprintf( __('by %s') , esc_html( get_user_name( $h2_author ) ) ) : ''; + +if ( $h2_search || $h2_forum || $h2_tag || $h2_author ) { + echo ''; + + printf( __( '%1$s%2$s%3$s%4$s' ), $h2_search, $h2_forum, $h2_tag, $h2_author ); + + echo ''; +} +?> +

      + + +form( array('tag' => true, 'topic_author' => true, 'topic_status' => true, 'open' => true, 'submit' => __('Filter')) ); ?> + +
      + + + +

      + + __( 'Delete' ), + 'undelete' => __( 'Undelete' ), + 'open' => __( 'Open' ), + 'close' => __( 'Close' ), + ); + + if ( is_numeric( $bulk_action = $topic_query->get( 'topic_status' ) ) ) + unset( $bulk_actions[ $bulk_action ? 'delete' : 'undelete' ] ); + + + if ( is_numeric( $bulk_action = $topic_query->get( 'open' ) ) ) + unset( $bulk_actions[ $bulk_action ? 'open' : 'close' ] ); + + unset( $bulk_action ); + + do_action_ref_array( 'bulk_topic_actions', array( &$bulk_actions, $topic_query ) ); +?> + +
      +
      + + + +
      + +
      +found_rows ) : ?> +
      + get( 'per_page' ) + 1 ), + $page * $topic_query->get( 'per_page' ) < $topic_query->found_rows ? bb_number_format_i18n( $page * $topic_query->get( 'per_page' ) ) : '' . bb_number_format_i18n( $topic_query->found_rows ) . '', + '' . bb_number_format_i18n( $topic_query->found_rows ) . '' + ); ?> + $page, + 'total' => $topic_query->found_rows, + 'per_page' => $topic_query->get( 'per_page' ), + 'mod_rewrite' => false, + 'prev_text' => __( '«' ), + 'next_text' => __( '»' ) +); +echo $page_number_links = get_page_number_links( $_page_link_args ); +?> +
      +
      + +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + +> + + + + + + + + + +
      + +
      + + | + post_id ); ?> | + $topic->topic_id, 'before' => '', 'after' => '', 'close_text' => __( 'Close' ), 'open_text' => _x( 'Open', 'action' ) ) ); ?> | + $topic->topic_id, 'before' => '', 'after' => '', 'delete_text' => __( 'Delete' ), 'undelete_text' => __( 'Undelete' ) ) ); ?> +   +
      +
      + + topic_poster, '16' ); ?> + + + +H:i:s' ); + } else { + printf( __( '%s ago' ), get_topic_start_time( 'since' ) ); + } +?> + +H:i:s' ); + } else { + printf( __( '%s ago' ), get_topic_time( 'since' ) ); + } +?> + + + + +
      +
      + + +
      +found_rows ) : ?> +
      + +
      +
      + +
      +
      + +
      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/upgrade.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/upgrade.php new file mode 100644 index 0000000..e3cc6d1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/upgrade.php @@ -0,0 +1,210 @@ +bb-admin/upgrade.php + file. Backups are always a good idea."); +// Stop removing lines + +// Very old (pre 0.7) installs may need further upgrade utilities. +// Post to http://lists.bbpress.org/mailman/listinfo/bbdev if needed + +require('../bb-load.php'); +require( BB_PATH . 'bb-admin/includes/functions.bb-upgrade.php' ); + +$step = 'unrequired'; + +$forced = false; +if ( isset( $_POST['force'] ) && 1 == $_POST['force'] ) { + $forced = true; +} elseif ( isset( $_GET['force'] ) && 1 == $_GET['force'] ) { + $forced = true; +} + +if ( bb_get_option( 'bb_db_version' ) > bb_get_option_from_db( 'bb_db_version' ) || $forced ) { + + $forced_input = ''; + if ( $forced ) { + $forced_input = ''; + } + + $step = 'required'; + + if ( strtolower( $_SERVER['REQUEST_METHOD']) == 'post' ) { + + bb_check_admin_referer( 'bbpress-upgrader' ); + + define('BB_UPGRADING', true); + + $bbdb->hide_errors(); + + $messages = bb_upgrade_all(); + + $bbdb->show_errors(); + + $upgrade_log = array(__('Beginning upgrade…')); + if (is_array($messages['messages'])) { + $upgrade_log = array_merge($upgrade_log, $messages['messages']); + } + $upgrade_log[] = '>>> ' . __('Done'); + + $error_log = array(); + if (is_array($messages['errors'])) { + $error_log = $messages['errors']; + } + + if ( bb_get_option( 'bb_db_version' ) === bb_get_option_from_db( 'bb_db_version' ) && !count($error_log) ) { + $step = 'complete'; + } else { + $step = 'error'; + } + + wp_cache_flush(); + } + +} + +bb_install_header( __('bbPress database upgrade'), false, true ); +?> + + +

      + Get back to work!'), bb_get_uri('bb-admin/', null, BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN) ); ?> +

      + +
      +

      +
      +
      +

      + +

      +
      + + + +
      +
      +
      +
      + +
      +

      +
      +
      +

      + +

      +
      + +
      + +
      + + +
      +
      +
      +
      + +
      +

      +
      +
      +

      +
      Attempting to go to the admin area without resolving the listed errors will return you to this upgrade page.'); ?> +

      +
      + + + +
      + +
      + + +
      +
      +
      +
      + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/user-add-new.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/user-add-new.php new file mode 100644 index 0000000..1ba092b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/user-add-new.php @@ -0,0 +1,49 @@ + + +
      +

      + + + +
      +
      + $args ) { + bb_option_form_element( $field, $args ); + } + ?> + + +
      +
      + + + + +
      +
      +
      + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/users.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/users.php new file mode 100644 index 0000000..284389f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-admin/users.php @@ -0,0 +1,68 @@ +User Created.' ) ); + +if ( isset( $_GET['updated'] ) ) + bb_admin_notice( __( 'User Updated.' ) ); + +if ( isset( $_GET['action'] ) || isset( $_GET['user_id'] ) && ( 'edit' == $_GET['action'] || 'create' == $_GET['action'] ) ) { + + $edit_user = bb_get_user( bb_get_user_id( $_GET['user_id'] ) ); + $user_fields = bb_manage_user_fields( $edit_user ); + + $bb_admin_body_class = 'bb-admin-user-manage'; + bb_get_admin_header(); ?> + +
      +

      + + + +
      +
      + $args ) { + bb_option_form_element( $field, $args ); + } + ?> + + +
      +
      + + + + +
      +
      +
      + + + +
      + + display( true, bb_current_user_can( 'edit_users' ) ); ?> + +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-config-sample.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-config-sample.php new file mode 100644 index 0000000..f073f06 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-config-sample.php @@ -0,0 +1,63 @@ + $local_time ) ) { + die(); +} + +foreach ( $crons as $timestamp => $cronhooks ) { + if ( $timestamp > $local_time ) { + break; + } + foreach ( $cronhooks as $hook => $keys ) { + foreach ( $keys as $key => $args ) { + $schedule = $args['schedule']; + if ( $schedule != false ) { + $new_args = array( $timestamp, $schedule, $hook, $args['args'] ); + call_user_func_array( 'wp_reschedule_event' , $new_args ); + } + wp_unschedule_event( $timestamp, $hook, $args['args'] ); + do_action_ref_array( $hook, $args['args'] ); + } + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-edit.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-edit.php new file mode 100644 index 0000000..4c2a079 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-edit.php @@ -0,0 +1,68 @@ +post_status && 'all' == $_GET['view'] ) // We're trying to edit a deleted post + add_filter('bb_is_first_where', 'bb_no_where'); + +// Check possible anonymous user data +$post_author = $post_email = $post_url = ''; + +if ( !bb_get_user( get_post_author_id( $post_id ) ) ) { + if ( !$post_author = sanitize_user( trim( $_POST['author'] ) ) ) + bb_die( __( 'Every post needs an author name!' ) ); + elseif ( !$post_email = sanitize_email( trim( $_POST['email'] ) ) ) + bb_die( __( 'Every post needs a valid email address!' ) ); + + if ( !empty( $_POST['url'] ) ) + $post_url = esc_url( trim( $_POST['url'] ) ); +} + +// Loop through possible anonymous post data +foreach( array('post_author', 'post_email', 'post_url') as $field ) { + if ( ! empty( $$field ) ) { + $post_data[$field] = $$field; + } +} + +// Setup topic data +if ( bb_is_first( $bb_post->post_id ) && bb_current_user_can( 'edit_topic', $bb_post->topic_id ) ) { + + $post_data['topic_title'] = stripslashes( $_POST['topic'] ); + $post_data['topic_id'] = $bb_post->topic_id; + + bb_insert_topic( $post_data ); +} + +// Setup post data +$post_data['post_text'] = stripslashes( $_POST['post_content'] ); +$post_data['post_id'] = $post_id; + +bb_insert_post( $post_data ); + +if ( $post_id ) { + if ( $_REQUEST['view'] === 'all' ) { + add_filter( 'get_post_link', 'bb_make_link_view_all' ); + } + $post_link = get_post_link( $post_id ); + wp_redirect( $post_link ); +} else { + wp_redirect( bb_get_uri(null, null, BB_URI_CONTEXT_HEADER) ); +} +exit; +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/action.subscribe.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/action.subscribe.php new file mode 100644 index 0000000..133f39e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/action.subscribe.php @@ -0,0 +1,29 @@ +topic_id, $_GET['and'] ); + +wp_redirect( get_topic_link( $topic_id, 1 ) ); + +exit; diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bp-log.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bp-log.php new file mode 100644 index 0000000..f30628f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bp-log.php @@ -0,0 +1,550 @@ +set_level($level); + $this->set_type($type); + $this->set_filename($filename); + } + + /** + * Sets the logging level + * + * @return integer|boolean The old level on success or false + * @uses BP_LOG_LEVEL + */ + function set_level($level) + { + $old_level = $this->level; + + if (is_integer($level)) { + $this->level = $level; + } elseif (defined('BP_LOG_LEVEL') && is_integer(BP_LOG_LEVEL)) { + $this->level = BP_LOG_LEVEL; + } else { + return false; + } + + return $old_level; + } + + /** + * Sets the logging type + * + * @return string|false The old type on success or false + * @uses BP_LOG_TYPE + */ + function set_type($type) + { + $old_type = $this->type; + $type = strtolower($type); + + if (in_array($type, $this->types)) { + $this->type = $type; + } elseif (defined('BP_LOG_TYPE') && in_array(BP_LOG_TYPE, $this->types)) { + $this->type = BP_LOG_TYPE; + } else { + return false; + } + + return $old_type; + } + + /** + * Sets the logging filename + * + * @return string|boolean The old filename on success or false + * @uses BP_LOG_FILENAME + */ + function set_filename($filename) + { + $old_filename = $this->filename; + + if (is_string($filename)) { + $_filename = $filename; + } elseif (defined('BP_LOG_FILENAME') && is_string(BP_LOG_FILENAME)) { + $_filename = BP_LOG_FILENAME; + } else { + return false; + } + + if (isset($_filename) && file_exists($_filename) && is_file($_filename) && is_writable($_filename)) { + $this->filename = $_filename; + } else { + return false; + } + + return $old_filename; + } + + /** + * Sends a message to the log + * + * @return boolean True on success, false on failure + */ + function send($message = '', $level = BP_LOG_DEBUG, $type = false, $prefix = false) + { + // Make sure the level of this message is set to be logged + if (($level & $this->level) === 0) { + return; + } + + // Format the message into an array of lines to be logged + $lines = $this->format_message($message, $level, $prefix); + + // Do some validation on the type + if ($type && in_array($type, $this->types)) { + $_type = $type; + } else { + $_type = $this->type; + } + + // Get a name for the level + if ($level) { + $_level = $this->get_level_from_integer($level); + } + + // Setup strings to prepend to some of the types + $prepend = $_level . ': '; + if ($prefix) { + $prepend .= $prefix . ': '; + } + $pad = str_repeat(' ', strlen($prepend) - 2) . '| '; + + // Switch over the four types + switch ($_type) { + case 'php': + $php_fail = false; + + // Check that the error_log() function is available + if (function_exists('error_log') && is_callable('error_log')) { + foreach ($lines as $key => $line) { + if ($key === 0) { + $_prepend = $prepend; + } else { + $_prepend = $pad; + } + if (!error_log($_prepend . $line, 0)) { + $php_fail = true; + break; + } + } + } else { + $php_fail = true; + } + + if ($php_fail) { + // The PHP error log process failed, path of least resistance is to write to display + $this->send($message, $level, 'display', $prefix); + return; + } + break; + + case 'file': + $file_fail = false; + + // We've already done the prerequisite checks on the file by now so just write to it + if (!$file_handle = fopen($this->filename, 'a')) { + $file_fail = true; + } else { + // Prepare a string to write + $_lines = array( + '[' . date('c') . ']', + '[client ' . $_SERVER['REMOTE_ADDR'] . ']', + $prepend, + join("\n", $lines) + ); + } + if (fwrite($file_handle, join(' ', $_lines) . "\n") === false) { + $file_fail = true; + } + if ($file_handle) { + fclose($file_handle); + } + if ($file_fail) { + // Writing to file failed, output to display + $this->send($message, $level, 'display', $prefix); + return; + } + break; + + case 'display': + $_lines = array(); + foreach ($lines as $key => $line) { + if ($key === 0) { + $_lines[] = $prepend . $line; + } else { + $_lines[] = $pad . $line; + } + } + echo '
      ' . join("\n", $_lines) . '
      ' . "\n"; + break; + + case 'console': + $_lines = array(); + foreach ($lines as $key => $line) { + if ($key === 0 && $prefix) { + $_lines[] = $prefix . ': ' . $line; + } else { + $_lines[] = $line; + } + } + + $_lines = $ident . $_level . ' ~\n' . str_replace('\'', '\\\'', join('\n', $_lines)); + + if (!$this->console_javascript_loaded) { + // Queue it for logging onload + $this->console_javascript_onloads[] = array('message' => $_lines, 'level' => $level, 'time' => date('c')); + } else { + // Log it now + echo '' . "\n"; + } + break; + } + + return true; + } + + /** + * Gets the name of the log level from an integer + * + * @return string The logging level + */ + function get_level_from_integer($integer) + { + switch ($integer) { + case BP_LOG_NONE: + return 'BP_LOG_NONE'; + break; + case BP_LOG_FAIL: + return 'BP_LOG_FAIL'; + break; + case BP_LOG_ERROR: + return 'BP_LOG_ERROR'; + break; + case BP_LOG_WARNING: + return 'BP_LOG_WARNING'; + break; + case BP_LOG_NOTICE: + return 'BP_LOG_NOTICE'; + break; + case BP_LOG_DEBUG: + return 'BP_LOG_DEBUG'; + break; + default: + return 'BP_LOG_UNDEFINED'; + break; + } + } + + /** + * Formats a message for output to a log file + * + * @return boolean True on success, false on failure + */ + function format_message($message, $level = BP_LOG_DEBUG, $prefix = false, $tabs = 0) + { + $lines = array(); + + if (is_null($message)) { + $lines[] = 'null (' . var_export($message, true) . ')'; + return $lines; + } + + if (is_bool($message)) { + $lines[] = 'bool (' . var_export($message, true) . ')'; + return $lines; + } + + if (is_string($message)) { + if ($level === BP_LOG_DEBUG || $message === '') { + $lines[] = 'string(' . strlen($message) . ') ("' . $message . '")'; + } else { + $lines[] = $message; + } + return $lines; + } + + if (is_array($message) || is_object($message)) { + if (is_array($message)) { + $lines[] = 'array(' . count($message) . ') ('; + } else { + $lines[] = 'object(' . get_class($message) . ') ('; + } + $tabs++; + foreach ($message as $key => $value) { + $array = $this->format_message($value, $level, false, $tabs); + if (is_array($array)) { + $array[0] = str_repeat(' ', $tabs) . $key . ' => ' . $array[0]; + $lines = array_merge($lines, $array); + } else { + $lines[] = str_repeat(' ', $tabs) . $key . ' => ' . $array; + } + } + $tabs--; + $lines[] = str_repeat(' ', $tabs) . ')'; + return $lines; + } + + if (is_int($message)) { + $lines[] = 'int (' . $message . ')'; + return $lines; + } + + if (is_float($message)) { + $lines[] = 'float (' . $message . ')'; + return $lines; + } + + if (is_resource($message)) { + $lines[] = 'resource (' . get_resource_type($message) . ')'; + return $lines; + } + + $lines[] = 'unknown (' . $message . ')'; + return $lines; + } + + /** + * Send a debug message + * + * @return boolean True on success, false on failure + */ + function debug($message, $prefix = false) + { + $this->send($message, BP_LOG_DEBUG, false, $prefix); + } + + /** + * Send a notice message + * + * If the message is an array, then it sends each index as a separate message + * + * @return boolean True on success, false on failure + */ + function notice($message) + { + if (is_array($message)) { + foreach ($message as $value) { + $this->send($value, BP_LOG_NOTICE); + } + } else { + $this->send($message, BP_LOG_NOTICE); + } + } + + /** + * Send a warning message + * + * If the message is an array, then it sends each index as a separate message + * + * @return boolean True on success, false on failure + */ + function warning($message) + { + if (is_array($message)) { + foreach ($message as $value) { + $this->send($value, BP_LOG_WARNING); + } + } else { + $this->send($message, BP_LOG_WARNING); + } + } + + /** + * Send an error message + * + * If the message is an array, then it sends each index as a separate message + * + * @return boolean True on success, false on failure + */ + function error($message) + { + if (is_array($message)) { + foreach ($message as $value) { + $this->send($value, BP_LOG_ERROR); + } + } else { + $this->send($message, BP_LOG_ERROR); + } + } + + /** + * Send an error message and die + * + * If the message is an array, then it sends each index as a separate message + * + * @return boolean True on success, false on failure + */ + function fail($message) + { + if (is_array($message)) { + foreach ($message as $value) { + $this->send($value, BP_LOG_FAIL); + } + } else { + $this->send($message, BP_LOG_FAIL); + } + + die(); + } + + /** + * Outputs javascript functions for the head of the html document + * + * Must be included in the head of the debug document somehow when using 'console' type. + * + * @return void + **/ + function console_javascript() + { + if ($this->type !== 'console') { + return; + } + + $this->console_javascript_loaded = true; +?> + + + +__construct(); + } + + function __construct() { + do_action_ref_array('init_roles', array(&$this) ); + } + + function add_role($role, $display_name, $capabilities = '') { + if ( isset($this->role_objects[$role]) ) + return; + + $this->role_objects[$role] = new BP_Role($role, $capabilities, $this); + $this->role_names[$role] = $display_name; + return $this->role_objects[$role]; + } + + function remove_role($role) { + if ( ! isset($this->role_objects[$role]) ) + return; + + unset($this->role_objects[$role]); + unset($this->role_names[$role]); + } + + function add_cap($role, $cap, $grant = true) { + if ( isset($this->role_objects[$role]) ) + $this->role_objects[$role]->add_cap($cap, $grant); + } + + function remove_cap($role, $cap) { + if ( isset($this->role_objects[$role]) ) + $this->role_objects[$role]->remove_cap($cap, $grant); + } + + function &get_role($role) { + if ( isset($this->role_objects[$role]) ) + return $this->role_objects[$role]; + else + return null; + } + + function get_names() { + return $this->role_names; + } + + function is_role($role) { + return isset($this->role_names[$role]); + } + + function map_meta_cap( $cap, $user_id ) { + $args = array_slice(func_get_args(), 2); + return apply_filters( 'map_meta_cap', array( $cap ), $cap, $user_id, $args ); + } +} + +class BP_Role { + var $name; + var $capabilities; + + function BP_Role($role, $capabilities) { + $this->name = $role; + $this->capabilities = $capabilities; + } + + function add_cap($cap, $grant = true) { + $this->capabilities[$cap] = $grant; + } + + function remove_cap($cap) { + unset($this->capabilities[$cap]); + } + + function has_cap($cap) { + $capabilities = apply_filters('role_has_cap', $this->capabilities, $cap, $this->name); + $grant = !empty( $capabilities[$cap] ); + return apply_filters("{$this->name}_has_cap", $grant); + } + +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bp-sql-schema-parser.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bp-sql-schema-parser.php new file mode 100644 index 0000000..a0eaeaf --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bp-sql-schema-parser.php @@ -0,0 +1,615 @@ + $_index_column ) { + preg_match( '@`?(\w+)`?(?:\s*\(\s*(\d+)\s*\))?@i', $_index_column, $_matches_column ); + + $_indices[$_index_name][] = array( + 'Table' => $_table_name, + 'Non_unique' => ( 'UNIQUE KEY' == $_index_type || 'PRIMARY' == $_index_name ) ? '0' : '1', + 'Key_name' => $_index_name, + 'Seq_in_index' => (string) ( $_index_columns_index + 1 ), + 'Column_name' => $_matches_column[1], + 'Sub_part' => ( isset( $_matches_column[2] ) && $_matches_column[2] ) ? $_matches_column[2] : null, + 'Index_type' => ( 'FULLTEXT KEY' == $_index_type ) ? 'FULLTEXT' : 'BTREE' + ); + } + unset( $_index_type, $_index_name, $_index_columns, $_index_columns_index, $_index_column, $_matches_column ); + + } elseif ( preg_match( "@^`?(\w+)`?\s+(?:(\w+)(?:\s*\(\s*(\d+)\s*\))?(?:\s+(unsigned)){0,1})(?:\s+(NOT\s+NULL))?(?:\s+(auto_increment))?(?:\s+(default)\s+(?:(NULL|'[^']*'|\d+)))?@im", $_column_index, $_matches ) ) { + // It's a column + + // Tidy the NOT NULL + $_matches[5] = isset( $_matches[5] ) ? strtoupper( preg_replace( '@\s+@', ' ', trim( $_matches[5] ) ) ) : ''; + + $_columns[$_matches[1]] = array( + 'Field' => $_matches[1], + 'Type' => ( is_numeric( $_matches[3] ) ) ? $_matches[2] . '(' . $_matches[3] . ')' . ( ( isset( $_matches[4] ) && strtolower( $_matches[4] ) == 'unsigned' ) ? ' unsigned' : '' ) : $_matches[2], + 'Null' => ( 'NOT NULL' == strtoupper( $_matches[5] ) ) ? 'NO' : 'YES', + 'Default' => ( isset( $_matches[7] ) && 'default' == strtolower( $_matches[7] ) && 'NULL' !== strtoupper( $_matches[8] ) ) ? trim( $_matches[8], "'" ) : null, + 'Extra' => ( isset( $_matches[6] ) && 'auto_increment' == strtolower( $_matches[6] ) ) ? 'auto_increment' : '' + ); + } + } + unset( $_matches, $_columns_indices, $_column_index ); + + // Tidy up the original query + $_tidy_query = 'CREATE TABLE'; + if ( $_if_not_exists ) { + $_tidy_query .= ' IF NOT EXISTS'; + } + $_tidy_query .= ' `' . $_table_name . '` (' . "\n"; + foreach ( $_columns as $_column ) { + $_tidy_query .= "\t" . BP_SQL_Schema_Parser::get_column_definition( $_column ) . ",\n"; + } + unset( $_column ); + foreach ( $_indices as $_index ) { + $_tidy_query .= "\t" . BP_SQL_Schema_Parser::get_index_definition( $_index ) . ",\n"; + } + $_tidy_query = substr( $_tidy_query, 0, -2 ) . "\n" . ') ' . $_attributes . ';'; + + // Add to the query array using the table name as the index + $description = array( + 'query_original' => $query, + 'query_tidy' => $_tidy_query, + 'columns' => $_columns, + 'indices' => $_indices + ); + unset( $_table_name, $_columns, $_indices, $_tidy_query ); + + return $description; + } + + /** + * Helper function to flatten arrays + */ + function _flatten_array( $array, $cut_branch = 0, $keep_child_array_keys = true ) + { + if ( !is_array( $array ) ) { + return $array; + } + + if ( empty( $array ) ) { + return null; + } + + $temp = array(); + foreach ( $array as $k => $v ) { + if ( $cut_branch && $k == $cut_branch ) + continue; + if ( is_array( $v ) ) { + if ( $keep_child_array_keys ) { + $temp[$k] = true; + } + $temp += BP_SQL_Schema_Parser::_flatten_array( $v, $cut_branch, $keep_child_array_keys ); + } else { + $temp[$k] = $v; + } + } + return $temp; + } + + /** + * Splits grouped SQL statements into queries within a highly structured array + * Only supports CREATE TABLE, INSERT and UPDATE + */ + function parse( $sql ) + { + // Only accept strings or arrays + if ( is_string( $sql ) ) { + // Just pop strings into an array to start with + $queries = array( $sql ); + } elseif ( is_array( $sql ) ) { + // Flatten the array + $queries = BP_SQL_Schema_Parser::_flatten_array( $sql, 0, false ); + // Remove empty nodes + $queries = array_filter( $queries ); + } else { + return false; + } + + // Clean up the queries + $_clean_queries = array(); + foreach ( $queries as $_query ) { + // Trim space and semi-colons + $_query = trim( $_query, "; \t\n\r\0\x0B" ); + // If it exists and isn't a number + if ( $_query && !is_numeric( $_query ) ) { + // Is it more than one query? + if ( strpos( ';', $_query ) !== false ) { + // Explode by semi-colon + foreach ( explode( ';', $_query ) as $_part ) { + $_part = trim( $_part ); + if ( $_part && !is_numeric( $_part ) ) { + // Pull out any commented code + // Can't properly deal with /*!4321 FOO `bar` */ version specific inclusion, just includes it regardless of version + $_part = preg_replace( '@/\*![0-9]*([^\*]*)\*/@', '$1', $_part ); + $_part = preg_replace( '@/\*[^\*]*\*/@', '', $_part ); + $_part = preg_replace( '@[\-\-|#].*$@m', '', $_part ); + $_clean_queries[] = trim( $_part ) . ';'; + } + } + unset( $_part ); + } else { + $_clean_queries[] = $_query . ';'; + } + } + } + unset( $_query ); + if ( !count( $_clean_queries ) ) { + return false; + } + $queries = $_clean_queries; + unset( $_clean_queries ); + + $_queries = array(); + foreach ( $queries as $_query ) { + // Only process table creation, inserts and updates, capture the table/database name while we are at it + if ( !preg_match( '@^(CREATE\s+TABLE(?:\s+IF\s+NOT\s+EXISTS)?|INSERT\s+INTO|UPDATE)\s+`?([^\s|`]+)`?@im', $_query, $_matches ) ) { + continue; + } + + // Tidy up the type so we can switch it + $_type = strtoupper( preg_replace( '@\s+@', ' ', trim( $_matches[1] ) ) ); + $_table_name = trim( $_matches[2] ); + unset( $_matches ); + + switch ( $_type ) { + case 'CREATE TABLE': + case 'CREATE TABLE IF NOT EXISTS': + $_description = BP_SQL_Schema_Parser::describe_table( $_query ); + if ( is_array( $_description ) ) { + $_queries['tables'][$_table_name] = $_description; + } + break; + + case 'INSERT INTO': + // Just add the query as is for now + $_queries['insert'][$_table_name][] = $_query; + break; + + case 'UPDATE': + // Just add the query as is for now + $_queries['update'][$_table_name][] = $_query; + break; + } + unset( $_type, $_table_name ); + } + unset( $_query ); + + if ( !count( $_queries ) ) { + return false; + } + return $_queries; + } + + /** + * Evaluates the difference between a given set of SQL queries and real database structure + */ + function delta( $db_object, $queries, $ignore = false, $execute = true ) + { + if ( !$db_object || !is_object( $db_object ) || !( is_a( $db_object, 'BPDB' ) || is_a( $db_object, 'BPDB_Multi' ) || is_a( $db_object, 'BPDB_Hyper' ) ) ) { + return __( 'Passed variable is not a BackPress database object.' ); + } + + if ( !$_queries = BP_SQL_Schema_Parser::parse( $queries ) ) { + return __( 'No schema available.' ); + } + + // Set up default elements to ignore + $ignore_defaults = array( + 'tables' => array(), // Just a list of tablenames, including prefix. Does not affect INSERT and UPDATE queries. + 'columns' => array(), // Arrays of column names, keyed with the table names, including prefix. + 'indices' => array() // Arrays of index names, keyed with the table names, including prefix. + ); + + // Add the elements to ignore that were passed to the function + if ( !$ignore || !is_array( $ignore ) ) { + $ignore = $ignore_defaults; + } else { + if ( isset( $ignore['tables'] ) && is_array( $ignore['tables'] ) ) { + $ignore['tables'] = array_merge( $ignore_defaults['tables'], $ignore['tables'] ); + } + if ( isset( $ignore['columns'] ) && is_array( $ignore['columns'] ) ) { + $ignore['columns'] = array_merge( $ignore_defaults['columns'], $ignore['columns'] ); + } + if ( isset( $ignore['indices'] ) && is_array( $ignore['indices'] ) ) { + $ignore['indices'] = array_merge( $ignore_defaults['indices'], $ignore['indices'] ); + } + } + + // Build an array of $db_object registered tables and their database identifiers + $_tables = $db_object->tables; + $db_object_tables = array(); + foreach ( $_tables as $_table_id => $_table_name ) { + if ( is_array( $_table_name ) && isset( $db_object->db_servers['dbh_' . $_table_name[0]] ) ) { + $db_object_tables[$db_object->$_table_id] = 'dbh_' . $_table_name[0]; + } else { + $db_object_tables[$db_object->$_table_id] = 'dbh_global'; + } + } + unset( $_tables, $_table_id, $_table_name ); + + $alterations = array(); + + // Loop through table queries + if ( isset( $_queries['tables'] ) ) { + foreach ( $_queries['tables'] as $_new_table_name => $_new_table_data ) { + if ( in_array( $_new_table_name, $ignore['tables'] ) ) { + continue; + } + + // See if the table is custom and registered in $db_object under a custom database + if ( + isset( $db_object_tables[$_new_table_name] ) && + $db_object_tables[$_new_table_name] != 'dbh_global' && + isset( $db_object->db_servers[$db_object_tables[$_new_table_name]]['ds'] ) + ) { + // Force the database connection + $_dbhname = $db_object->db_servers[$db_object_tables[$_new_table_name]]['ds']; + $db_object->_force_dbhname = $_dbhname; + } else { + $_dbhname = 'dbh_global'; + } + + // Fetch the existing table column structure from the database + $db_object->suppress_errors(); + if ( !$_existing_table_columns = $db_object->get_results( 'DESCRIBE `' . $_new_table_name . '`;', ARRAY_A ) ) { + $db_object->suppress_errors( false ); + // The table doesn't exist, add it and then continue to the next table + $alterations[$_dbhname][$_new_table_name][] = array( + 'action' => 'create_table', + 'message' => __( 'Creating table' ), + 'query' => $_new_table_data['query_tidy'] + ); + continue; + } + $db_object->suppress_errors( false ); + + // Add an index to the existing columns array + $__existing_table_columns = array(); + foreach ( $_existing_table_columns as $_existing_table_column ) { + // Remove 'Key' from returned column structure + unset( $_existing_table_column['Key'] ); + $__existing_table_columns[$_existing_table_column['Field']] = $_existing_table_column; + } + $_existing_table_columns = $__existing_table_columns; + unset( $__existing_table_columns ); + + // Loop over the columns in this table and look for differences + foreach ( $_new_table_data['columns'] as $_new_column_name => $_new_column_data ) { + if ( isset( $ignore['columns'][$_new_table_name] ) && in_array( $_new_column_name, $ignore['columns'][$_new_table_name] ) ) { + continue; + } + + if ( !in_array( $_new_column_data, $_existing_table_columns ) ) { + // There is a difference + if ( !isset( $_existing_table_columns[$_new_column_name] ) ) { + // The column doesn't exist, so add it + $alterations[$_dbhname][$_new_table_name][] = array( + 'action' => 'add_column', + 'message' => sprintf( __( 'Adding column: %s' ), $_new_column_name ), + 'column' => $_new_column_name, + 'query' => 'ALTER TABLE `' . $_new_table_name . '` ADD COLUMN ' . BP_SQL_Schema_Parser::get_column_definition( $_new_column_data ) . ';' + ); + continue; + } + + // Adjust defaults on columns that allow defaults + if ( + $_new_column_data['Default'] !== $_existing_table_columns[$_new_column_name]['Default'] && + !in_array( + strtolower( $_new_column_data['Type'] ), + array( 'tinytext', 'text', 'mediumtext', 'longtext', 'blob', 'mediumblob', 'longblob' ) + ) + ) { + // Change the default value for the column + $alterations[$_dbhname][$_new_table_name][] = array( + 'action' => 'set_default', + 'message' => sprintf( __( 'Setting default on column: %s' ), $_new_column_name ), + 'column' => $_new_column_name, + 'query' => 'ALTER TABLE `' . $_new_table_name . '` ALTER COLUMN `' . $_new_column_name . '` SET DEFAULT \'' . $_new_column_data['Default'] . '\';' + ); + // Don't continue, overwrite this if the next conditional is met + } + + if ( + $_new_column_data['Type'] !== $_existing_table_columns[$_new_column_name]['Type'] || + ( 'YES' === $_new_column_data['Null'] xor 'YES' === $_existing_table_columns[$_new_column_name]['Null'] ) || + $_new_column_data['Extra'] !== $_existing_table_columns[$_new_column_name]['Extra'] + ) { + // Change the structure for the column + $alterations[$_dbhname][$_new_table_name][] = array( + 'action' => 'change_column', + 'message' => sprintf( __( 'Changing column: %s' ), $_new_column_name ), + 'column' => $_new_column_name, + 'query' => 'ALTER TABLE `' . $_new_table_name . '` CHANGE COLUMN `' . $_new_column_name . '` ' . BP_SQL_Schema_Parser::get_column_definition( $_new_column_data ) . ';' + ); + } + } + } + unset( $_existing_table_columns, $_new_column_name, $_new_column_data ); + + // Fetch the table index structure from the database + if ( !$_existing_table_indices = $db_object->get_results( 'SHOW INDEX FROM `' . $_new_table_name . '`;', ARRAY_A ) ) { + continue; + } + + // Add an index to the existing columns array and organise by index name + $__existing_table_indices = array(); + foreach ( $_existing_table_indices as $_existing_table_index ) { + // Remove unused parts from returned index structure + unset( + $_existing_table_index['Collation'], + $_existing_table_index['Cardinality'], + $_existing_table_index['Packed'], + $_existing_table_index['Null'], + $_existing_table_index['Comment'] + ); + $__existing_table_indices[$_existing_table_index['Key_name']][] = $_existing_table_index; + } + $_existing_table_indices = $__existing_table_indices; + unset( $__existing_table_indices ); + + // Loop over the indices in this table and look for differences + foreach ( $_new_table_data['indices'] as $_new_index_name => $_new_index_data ) { + if ( isset( $ignore['indices'][$_new_table_name] ) && in_array( $_new_index_name, $ignore['indices'][$_new_table_name] ) ) { + continue; + } + + if ( !in_array( $_new_index_data, $_existing_table_indices ) ) { + // There is a difference + if ( !isset( $_existing_table_indices[$_new_index_name] ) ) { + // The index doesn't exist, so add it + $alterations[$_dbhname][$_new_table_name][] = array( + 'action' => 'add_index', + 'message' => sprintf( __( 'Adding index: %s' ), $_new_index_name ), + 'index' => $_new_index_name, + 'query' => 'ALTER TABLE `' . $_new_table_name . '` ADD ' . BP_SQL_Schema_Parser::get_index_definition( $_new_index_data ) . ';' + ); + continue; + } + + if ( $_new_index_data !== $_existing_table_indices[$_new_index_name] ) { + // The index is incorrect, so drop it and add the new one + if ( $_new_index_name == 'PRIMARY' ) { + $_drop_index_name = 'PRIMARY KEY'; + } else { + $_drop_index_name = 'INDEX `' . $_new_index_name . '`'; + } + $alterations[$_dbhname][$_new_table_name][] = array( + 'action' => 'drop_index', + 'message' => sprintf( __( 'Dropping index: %s' ), $_new_index_name ), + 'index' => $_new_index_name, + 'query' => 'ALTER TABLE `' . $_new_table_name . '` DROP ' . $_drop_index_name . ';' + ); + unset( $_drop_index_name ); + $alterations[$_dbhname][$_new_table_name][] = array( + 'action' => 'add_index', + 'message' => sprintf( __( 'Adding index: %s' ), $_new_index_name ), + 'index' => $_new_index_name, + 'query' => 'ALTER TABLE `' . $_new_table_name . '` ADD ' . BP_SQL_Schema_Parser::get_index_definition( $_new_index_data ) . ';' + ); + } + } + } + unset( $_new_index_name, $_new_index_data ); + + // Go back to the default database connection + $db_object->_force_dbhname = false; + } + unset( $_new_table_name, $_new_table_data, $_dbhname ); + } + + // Now deal with the sundry INSERT and UPDATE statements (if any) + if ( isset( $_queries['insert'] ) && is_array( $_queries['insert'] ) && count( $_queries['insert'] ) ) { + foreach ( $_queries['insert'] as $_table_name => $_inserts ) { + foreach ( $_inserts as $_insert ) { + $alterations['dbh_global'][$_table_name][] = array( + 'action' => 'insert', + 'message' => __( 'Inserting data' ), + 'query' => $_insert + ); + } + unset( $_insert ); + } + unset( $_table_name, $_inserts ); + } + if ( isset( $_queries['update'] ) && is_array( $_queries['update'] ) && count( $_queries['update'] ) ) { + foreach ( $_queries['update'] as $_table_name => $_updates ) { + foreach ( $_updates as $_update ) { + $alterations['dbh_global'][$_table_name][] = array( + 'action' => 'update', + 'message' => __( 'Updating data' ), + 'query' => $_update + ); + } + unset( $_update ); + } + unset( $_table_name, $_updates ); + } + + // Initialise an array to hold the output messages + $messages = array(); + $errors = array(); + + foreach ( $alterations as $_dbhname => $_tables ) { + // Force the database connection (this was already checked to be valid in the previous loop) + $db_object->_force_dbhname = $_dbhname; + + // Note the database in the return messages + $messages[] = '>>> ' . sprintf( __( 'Modifying database: %s (%s)' ), $db_object->db_servers[$_dbhname]['name'], $db_object->db_servers[$_dbhname]['host'] ); + + foreach ( $_tables as $_table_name => $_alterations ) { + // Note the table in the return messages + $messages[] = '>>>>>> ' . sprintf( __( 'Table: %s' ), $_table_name ); + + foreach ( $_alterations as $_alteration ) { + // If there is no query, then skip + if ( !$_alteration['query'] ) { + continue; + } + + // Note the action in the return messages + $messages[] = '>>>>>>>>> ' . $_alteration['message']; + + if ( !$execute ) { + $messages[] = '>>>>>>>>>>>> ' . __( 'Skipped' ); + continue; + } + + // Run the query + $_result = $db_object->query( $_alteration['query'] ); + $_result_error = $db_object->get_error(); + + if ( $_result_error ) { + // There was an error + $_result =& $_result_error; + unset( $_result_error ); + $messages[] = '>>>>>>>>>>>> ' . __( 'SQL ERROR! See the error log for more detail' ); + $errors[] = __( 'SQL ERROR!' ); + $errors[] = '>>> ' . sprintf( __( 'Database: %s (%s)' ), $db_object->db_servers[$_dbhname]['name'], $db_object->db_servers[$_dbhname]['host'] ); + $errors[] = '>>>>>> ' . $_result->error_data['db_query']['query']; + $errors[] = '>>>>>> ' . $_result->error_data['db_query']['error']; + } else { + $messages[] = '>>>>>>>>>>>> ' . __( 'Done' ); + } + unset( $_result ); + } + unset( $_alteration ); + } + unset( $_table_name, $_alterations ); + } + unset( $_dbhname, $_tables ); + + // Reset the database connection + $db_object->_force_dbhname = false; + + return array( 'messages' => $messages, 'errors' => $errors ); + } +} // END class BP_SQL_Schema_Parser diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bp-user.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bp-user.php new file mode 100644 index 0000000..584672f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bp-user.php @@ -0,0 +1,398 @@ +data = $wp_users_object->get_user( $id ); + else + $this->data = $wp_users_object->get_user( $name, array( 'by' => 'login' ) ); + + if ( empty( $this->data->ID ) ) + return; + + foreach ( get_object_vars( $this->data ) as $key => $value ) { + $this->{$key} = $value; + } + + $this->id = $this->ID; + $this->_init_caps(); + } + + /** + * Setup capability object properties. + * + * Will set the value for the 'cap_key' property to current database table + * prefix, followed by 'capabilities'. Will then check to see if the + * property matching the 'cap_key' exists and is an array. If so, it will be + * used. + * + * @since 2.1.0 + * @access protected + */ + function _init_caps() { + global $wp_users_object; + $this->cap_key = $wp_users_object->db->prefix . 'capabilities'; + $this->caps = &$this->{$this->cap_key}; + if ( ! is_array( $this->caps ) ) + $this->caps = array(); + $this->get_role_caps(); + } + + /** + * Retrieve all of the role capabilities and merge with individual capabilities. + * + * All of the capabilities of the roles the user belongs to are merged with + * the users individual roles. This also means that the user can be denied + * specific roles that their role might have, but the specific user isn't + * granted permission to. + * + * @since 2.0.0 + * @uses $wp_roles + * @access public + */ + function get_role_caps() { + global $wp_roles, $wp_users_object; + + if ( ! isset( $wp_roles ) ) + $wp_roles = new BP_Roles( $wp_users_object->db ); + + //Filter out caps that are not role names and assign to $this->roles + if ( is_array( $this->caps ) ) + $this->roles = array_filter( array_keys( $this->caps ), array( &$wp_roles, 'is_role' ) ); + + //Build $allcaps from role caps, overlay user's $caps + $this->allcaps = array(); + foreach ( (array) $this->roles as $role ) { + $role = $wp_roles->get_role( $role ); + $this->allcaps = array_merge( (array) $this->allcaps, (array) $role->capabilities ); + } + $this->allcaps = array_merge( (array) $this->allcaps, (array) $this->caps ); + } + + /** + * Add role to user. + * + * Updates the user's meta data option with capabilities and roles. + * + * @since 2.0.0 + * @access public + * + * @param string $role Role name. + */ + function add_role( $role ) { + $this->caps[$role] = true; + $this->update_user(); + } + + /** + * Remove role from user. + * + * @since 2.0.0 + * @access public + * + * @param string $role Role name. + */ + function remove_role( $role ) { + if ( empty( $this->caps[$role] ) || ( count( $this->caps ) <= 1 ) ) + return; + unset( $this->caps[$role] ); + $this->update_user(); + } + + /** + * Set the role of the user. + * + * This will remove the previous roles of the user and assign the user the + * new one. You can set the role to an empty string and it will remove all + * of the roles from the user. + * + * @since 2.0.0 + * @access public + * + * @param string $role Role name. + */ + function set_role( $role ) { + foreach ( (array) $this->roles as $oldrole ) + unset( $this->caps[$oldrole] ); + if ( !empty( $role ) ) { + $this->caps[$role] = true; + $this->roles = array( $role => true ); + } else { + $this->roles = false; + } + $this->update_user(); + } + + function update_user() { + global $wp_users_object; + $wp_users_object->update_meta( array( 'id' => $this->ID, 'meta_key' => $this->cap_key, 'meta_value' => $this->caps ) ); + $this->get_role_caps(); + //$this->update_user_level_from_caps(); // WP + } + + /** + * Choose the maximum level the user has. + * + * Will compare the level from the $item parameter against the $max + * parameter. If the item is incorrect, then just the $max parameter value + * will be returned. + * + * Used to get the max level based on the capabilities the user has. This + * is also based on roles, so if the user is assigned the Administrator role + * then the capability 'level_10' will exist and the user will get that + * value. + * + * @since 2.0.0 + * @access public + * + * @param int $max Max level of user. + * @param string $item Level capability name. + * @return int Max Level. + */ +/* + function level_reduction( $max, $item ) { + if ( preg_match( '/^level_(10|[0-9])$/i', $item, $matches ) ) { + $level = intval( $matches[1] ); + return max( $max, $level ); + } else { + return $max; + } + } +*/ + + /** + * Update the maximum user level for the user. + * + * Updates the 'user_level' user metadata (includes prefix that is the + * database table prefix) with the maximum user level. Gets the value from + * the all of the capabilities that the user has. + * + * @since 2.0.0 + * @access public + */ +/* + function update_user_level_from_caps() { + global $wp_users_object; + $this->user_level = array_reduce( array_keys( $this->allcaps ), array( &$this, 'level_reduction' ), 0 ); + update_usermeta( $this->ID, $wpdb->prefix.'user_level', $this->user_level ); + } +*/ + +/* + function translate_level_to_cap($level) { + return 'level_' . $level; + } +*/ + + /** + * Add capability and grant or deny access to capability. + * + * @since 2.0.0 + * @access public + * + * @param string $cap Capability name. + * @param bool $grant Whether to grant capability to user. + */ + function add_cap( $cap, $grant = true ) { + $this->caps[$cap] = $grant; + $this->update_user(); + } + + /** + * Remove capability from user. + * + * @since 2.0.0 + * @access public + * + * @param string $cap Capability name. + */ + function remove_cap( $cap ) { + if ( empty( $this->caps[$cap] ) ) return; + unset( $this->caps[$cap] ); + $this->update_user(); + } + + /** + * Remove all of the capabilities of the user. + * + * @since 2.1.0 + * @access public + */ + function remove_all_caps() { + global $wp_users_object; + $this->caps = array(); + $wp_users_object->delete_meta( $this->ID, $this->cap_key ); + $this->get_role_caps(); + } + + /** + * Whether user has capability or role name. + * + * This is useful for looking up whether the user has a specific role + * assigned to the user. The second optional parameter can also be used to + * check for capabilities against a specfic post. + * + * @since 2.0.0 + * @access public + * + * @param string|int $cap Capability or role name to search. + * @param int $post_id Optional. Post ID to check capability against specific post. + * @return bool True, if user has capability; false, if user does not have capability. + */ + function has_cap( $cap ) { + global $wp_roles; + + if ( is_numeric( $cap ) ) + $cap = $this->translate_level_to_cap( $cap ); + + $args = array_slice( func_get_args(), 1 ); + $args = array_merge( array( $cap, $this->ID ), $args ); + $caps = call_user_func_array( array(&$wp_roles, 'map_meta_cap'), $args ); + // Must have ALL requested caps + $capabilities = apply_filters( 'user_has_cap', $this->allcaps, $caps, $args ); + foreach ( (array) $caps as $cap ) { + //echo "Checking cap $cap
      "; + if ( empty( $capabilities[$cap] ) || !$capabilities[$cap] ) + return false; + } + + return true; + } + + /** + * Convert numeric level to level capability name. + * + * Prepends 'level_' to level number. + * + * @since 2.0.0 + * @access public + * + * @param int $level Level number, 1 to 10. + * @return string + */ + function translate_level_to_cap( $level ) { + return 'level_' . $level; + } + +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bpdb-multi.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bpdb-multi.php new file mode 100644 index 0000000..fb5027f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bpdb-multi.php @@ -0,0 +1,196 @@ + dbh) for established mysql connections + * @var array + */ + var $dbhs = array(); + + var $_force_dbhname = false; + var $last_table = ''; + var $db_tables = array(); + var $db_servers = array(); + + // function BPDB_Multi() {} // Not used - rely on PHP4 constructor from BPDB to call BPDB_Multi::__construct + + function __construct() { + $args = func_get_args(); + $args = call_user_func_array( array(&$this, '_init'), $args ); + + if ( $args['host'] ) { + $this->db_servers['dbh_global'] = $args; + $this->db_connect( '/* */' ); + } + } + + /** + * Figure out which database server should handle the query, and connect to it. + * @param string query + * @return resource mysql database connection + */ + function &db_connect( $query = '' ) { + $false = false; + if ( empty( $query ) ) + return $false; + + $this->last_table = $table = $this->get_table_from_query( $query ); + + // We can attempt to force the connection identifier in use + if ( $this->_force_dbhname && isset($this->db_servers[$this->_force_dbhname]) ) + $dbhname = $this->_force_dbhname; + + if ( !isset($dbhname) ) { + if ( isset( $this->db_tables[$table] ) ) + $dbhname = $this->db_tables[$table]; + else + $dbhname = 'dbh_global'; + } + + if ( !isset($this->db_servers[$dbhname]) ) + return $false; + + if ( isset($this->dbhs[$dbhname]) && is_resource($this->dbhs[$dbhname]) ) // We're already connected! + return $this->dbhs[$dbhname]; + + $success = $this->db_connect_host( $this->db_servers[$dbhname] ); + + if ( $success && is_resource($this->dbh) ) { + $this->dbhs[$dbhname] =& $this->dbh; + } else { + unset($this->dbhs[$dbhname]); + unset($this->dbh); + return $false; + } + + return $this->dbhs[$dbhname]; + } + + /** + * Sets the prefix of the database tables + * @param string prefix + * @param false|array tables (optional: false) + * table identifiers are array keys + * array values + * empty: set prefix: array( 'posts' => false, 'users' => false, ... ) + * string: set to that array value: array( 'posts' => 'my_posts', 'users' => 'my_users' ) + * array: array[0] is DB identifier, array[1] is table name: array( 'posts' => array( 'global', 'my_posts' ), 'users' => array( 'users', 'my_users' ) ) + * OR array values (with numeric keys): array( 'posts', 'users', ... ) + * + * @return string the previous prefix (mostly only meaningful if all $table parameter was false) + */ + function set_prefix( $prefix, $tables = false ) { + $old_prefix = parent::set_prefix( $prefix, $tables ); + if ( !$old_prefix || is_wp_error($old_prefix) ) { + return $old_prefix; + } + + if ( $tables && is_array($tables) ) { + $_tables = $tables; + } else { + $_tables = $this->tables; + } + + foreach ( $_tables as $key => $value ) { + // array( 'posts' => array( 'global', 'my_posts' ), 'users' => array( 'users', 'my_users' ) ) + if ( is_array($value) && isset($this->db_servers['dbh_' . $value[0]]) ) { + $this->add_db_table( $value[0], $value[1] ); + $this->$key = $value[1]; + } + } + + return $old_prefix; + } + + /** + * Find the first table name referenced in a query + * @param string query + * @return string table + */ + function get_table_from_query ( $q ) { + // Remove characters that can legally trail the table name + rtrim($q, ';/-#'); + + // Quickly match most common queries + if ( preg_match('/^\s*(?:' + . 'SELECT.*?\s+FROM' + . '|INSERT(?:\s+IGNORE)?(?:\s+INTO)?' + . '|REPLACE(?:\s+INTO)?' + . '|UPDATE(?:\s+IGNORE)?' + . '|DELETE(?:\s+IGNORE)?(?:\s+FROM)?' + . ')\s+`?(\w+)`?/is', $q, $maybe) ) + return $maybe[1]; + + // Refer to the previous query + if ( preg_match('/^\s*SELECT.*?\s+FOUND_ROWS\(\)/is', $q) ) + return $this->last_table; + + // Big pattern for the rest of the table-related queries in MySQL 5.0 + if ( preg_match('/^\s*(?:' + . '(?:EXPLAIN\s+(?:EXTENDED\s+)?)?SELECT.*?\s+FROM' + . '|INSERT(?:\s+LOW_PRIORITY|\s+DELAYED|\s+HIGH_PRIORITY)?(?:\s+IGNORE)?(?:\s+INTO)?' + . '|REPLACE(?:\s+LOW_PRIORITY|\s+DELAYED)?(?:\s+INTO)?' + . '|UPDATE(?:\s+LOW_PRIORITY)?(?:\s+IGNORE)?' + . '|DELETE(?:\s+LOW_PRIORITY|\s+QUICK|\s+IGNORE)*(?:\s+FROM)?' + . '|DESCRIBE|DESC|EXPLAIN|HANDLER' + . '|(?:LOCK|UNLOCK)\s+TABLE(?:S)?' + . '|(?:RENAME|OPTIMIZE|BACKUP|RESTORE|CHECK|CHECKSUM|ANALYZE|OPTIMIZE|REPAIR).*\s+TABLE' + . '|TRUNCATE(?:\s+TABLE)?' + . '|CREATE(?:\s+TEMPORARY)?\s+TABLE(?:\s+IF\s+NOT\s+EXISTS)?' + . '|ALTER(?:\s+IGNORE)?' + . '|DROP\s+TABLE(?:\s+IF\s+EXISTS)?' + . '|CREATE(?:\s+\w+)?\s+INDEX.*\s+ON' + . '|DROP\s+INDEX.*\s+ON' + . '|LOAD\s+DATA.*INFILE.*INTO\s+TABLE' + . '|(?:GRANT|REVOKE).*ON\s+TABLE' + . '|SHOW\s+(?:.*FROM|.*TABLE)' + . ')\s+`?(\w+)`?/is', $q, $maybe) ) + return $maybe[1]; + + // All unmatched queries automatically fall to the global master + return ''; + } + + /** + * Add a database server's information. Does not automatically connect. + * @param string $ds Dataset: the name of the dataset. + * @param array $args + * name => string DB name (required) + * user => string DB user (optional: false) + * password => string DB user password (optional: false) + * host => string DB hostname (optional: 'localhost') + * charset => string DB default charset. Used in a SET NAMES query. (optional) + * collate => string DB default collation. If charset supplied, optionally added to the SET NAMES query (optional) + */ + function add_db_server( $ds, $args = null ) { + $defaults = array( + 'user' => false, + 'password' => false, + 'name' => false, + 'host' => 'localhost', + 'charset' => false, + 'collate' => false + ); + + $args = wp_parse_args( $args, $defaults ); + $args['ds'] = 'dbh_' . $ds; + + $this->db_servers['dbh_' . $ds] = $args; + } + + /** + * Maps a table to a dataset. + * @param string $ds Dataset: the name of the dataset. + * @param string $table + */ + function add_db_table( $ds, $table ) { + $this->db_tables[$table] = 'dbh_' . $ds; + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bpdb.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bpdb.php new file mode 100644 index 0000000..a2b9095 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.bpdb.php @@ -0,0 +1,1164 @@ +

      DB Error in %3$s: %1$s

      %2$s
      ' ); +} +if ( !defined( 'BPDB__CONNECT_ERROR_MESSAGE' ) ) { + define( 'BPDB__CONNECT_ERROR_MESSAGE', 'DB Error: cannot connect' ); +} +if ( !defined( 'BPDB__SELECT_ERROR_MESSAGE' ) ) { + define( 'BPDB__SELECT_ERROR_MESSAGE', 'DB Error: cannot select' ); +} +if ( !defined( 'BPDB__DB_VERSION_ERROR' ) ) { + define( 'BPDB__DB_VERSION_ERROR', 'DB Requires MySQL version 4.0 or higher' ); +} +if ( !defined( 'BPDB__PHP_EXTENSION_MISSING' ) ) { + define( 'BPDB__PHP_EXTENSION_MISSING', 'DB Requires The MySQL PHP extension' ); +} + +class BPDB +{ + /** + * Whether to show SQL/DB errors + * + * @since 1.0 + * @access private + * @var bool + */ + var $show_errors = false; + + /** + * Whether to suppress errors during the DB bootstrapping. + * + * @access private + * @since 1.0 + * @var bool + */ + var $suppress_errors = false; + + /** + * The last error during query. + * + * @since 1.0 + * @var string + */ + var $last_error = ''; + + /** + * Amount of queries made + * + * @since 1.0 + * @access private + * @var int + */ + var $num_queries = 0; + + /** + * The last query made + * + * @since 1.0 + * @access private + * @var string + */ + var $last_query = null; + + /** + * Saved info on the table column + * + * @since 1.0 + * @access private + * @var array + */ + var $col_info = array(); + + /** + * Saved queries that were executed + * + * @since 1.0 + * @access private + * @var array + */ + var $queries = array(); + + /** + * Whether to use the query log + * + * @since 1.0 + * @access private + * @var bool + */ + var $save_queries = false; + + /** + * Table prefix + * + * You can set this to have multiple installations + * in a single database. The second reason is for possible + * security precautions. + * + * @since 1.0 + * @access private + * @var string + */ + var $prefix = ''; + + /** + * Whether the database queries are ready to start executing. + * + * @since 1.0 + * @access private + * @var bool + */ + var $ready = false; + + /** + * The currently connected MySQL connection resource. + * + * @since 1.0 + * @access private + * @var bool|resource + */ + var $dbh = false; + + /** + * List of tables + * + * @since 1.0 + * @access private + * @var array + */ + var $tables = array(); + + /** + * Whether to use mysql_real_escape_string + * + * @since 1.0 + * @access public + * @var bool + */ + var $real_escape = false; + + /** + * PHP4 style constructor + * + * @since 1.0 + * + * @return unknown Returns the result of bpdb::__construct() + */ + function BPDB() + { + $args = func_get_args(); + register_shutdown_function( array( &$this, '__destruct' ) ); + return call_user_func_array( array( &$this, '__construct' ), $args ); + } + + /** + * PHP5 style constructor + * + * Grabs the arguments, calls bpdb::_init() and then connects to the database + * + * @since 1.0 + * + * @return void + */ + function __construct() + { + $args = func_get_args(); + $args = call_user_func_array( array( &$this, '_init' ), $args ); + + $this->db_connect_host( $args ); + } + + /** + * Initialises the class variables based on provided arguments + * + * @since 1.0 + * + * @param array $args The provided connection settings + * @return array The current connection settings after processing by init + */ + function _init( $args ) + { + if ( !extension_loaded( 'mysql' ) ) { + $this->show_errors(); + $this->bail( BPDB__PHP_EXTENSION_MISSING ); + return; + } + + if ( 4 == func_num_args() ) { + $args = array( + 'user' => $args, + 'password' => func_get_arg( 1 ), + 'name' => func_get_arg( 2 ), + 'host' => func_get_arg( 3 ) + ); + } + + $defaults = array( + 'user' => false, + 'password' => false, + 'name' => false, + 'host' => 'localhost', + 'charset' => false, + 'collate' => false, + 'errors' => false + ); + + $args = wp_parse_args( $args, $defaults ); + + switch ( $args['errors'] ) { + case 'show' : + $this->show_errors( true ); + break; + case 'suppress' : + $this->suppress_errors( true ); + break; + } + + return $args; + } + + /** + * PHP5 style destructor, registered as shutdown function in PHP4 + * + * @since 1.0 + * + * @return bool Always returns true + */ + function __destruct() + { + return true; + } + + /** + * Figure out which database server should handle the query, and connect to it. + * + * @since 1.0 + * + * @param string query + * @return resource mysql database connection + */ + function &db_connect( $query = '' ) + { + $false = false; + if ( empty( $query ) ) { + return $false; + } + return $this->dbh; + } + + /** + * Connects to the database server and selects a database + * + * @since 1.0 + * + * @param array args + * name => string DB name (required) + * user => string DB user (optional: false) + * password => string DB user password (optional: false) + * host => string DB hostname (optional: 'localhost') + * charset => string DB default charset. Used in a SET NAMES query. (optional) + * collate => string DB default collation. If charset supplied, optionally added to the SET NAMES query (optional) + * @return void|bool void if cannot connect, false if cannot select, true if success + */ + function db_connect_host( $args ) + { + extract( $args, EXTR_SKIP ); + + unset( $this->dbh ); // De-reference before re-assigning + $this->dbh = @mysql_connect( $host, $user, $password, true ); + + if ( !$this->dbh ) { + if ( !$this->suppress_errors ) { + $this->show_errors(); + } + $this->bail( BPDB__CONNECT_ERROR_MESSAGE ); + return; + } + + $this->ready = true; + + if ( $this->has_cap( 'collation' ) ) { + if ( !empty( $charset ) ) { + if ( function_exists( 'mysql_set_charset' ) ) { + mysql_set_charset( $charset, $this->dbh ); + $this->real_escape = true; + } else { + $collation_query = "SET NAMES '{$charset}'"; + if ( !empty( $collate ) ) { + $collation_query .= " COLLATE '{$collate}'"; + } + $this->query( $collation_query, true ); + } + } + } + + return $this->select( $name, $this->dbh ); + } + + /** + * Sets the table prefix for the WordPress tables. + * + * @since 1.0 + * + * @param string prefix + * @param false|array tables (optional: false) + * table identifiers are array keys + * array values + * empty: set prefix: array( 'posts' => false, 'users' => false, ... ) + * string: set to that array value: array( 'posts' => 'my_posts', 'users' => 'my_users' ) + * OR array values (with numeric keys): array( 'posts', 'users', ... ) + * + * @return string the previous prefix (mostly only meaningful if all $table parameter was false) + */ + function set_prefix( $prefix, $tables = false ) + { + if ( !$prefix ) { + return false; + } + if ( preg_match( '|[^a-z0-9_]|i', $prefix ) ) { + return new WP_Error( 'invalid_db_prefix', 'Invalid database prefix' ); // No gettext here + } + + $old_prefix = $this->prefix; + + if ( $tables && is_array( $tables ) ) { + $_tables =& $tables; + } else { + $_tables =& $this->tables; + $this->prefix = $prefix; + } + + foreach ( $_tables as $key => $value ) { + if ( is_numeric( $key ) ) { // array( 'posts', 'users', ... ) + $this->$value = $prefix . $value; + } elseif ( !$value ) { + $this->$key = $prefix . $key; // array( 'posts' => false, 'users' => false, ... ) + } elseif ( is_string( $value ) ) { // array( 'posts' => 'my_posts', 'users' => 'my_users' ) + $this->$key = $value; + } + } + + return $old_prefix; + } + + /** + * Selects a database using the current database connection. + * + * The database name will be changed based on the current database + * connection. On failure, the execution will bail and display an DB error. + * + * @since 1.0 + * + * @param string $db MySQL database name + * @return bool True on success, false on failure. + */ + function select( $db, &$dbh ) + { + if ( !@mysql_select_db( $db, $dbh ) ) { + $this->ready = false; + $this->show_errors(); + $this->bail( BPDB__SELECT_ERROR_MESSAGE ); + return false; + } + return true; + } + + function _weak_escape( $string ) + { + return addslashes( $string ); + } + + function _real_escape( $string ) + { + if ( $this->dbh && $this->real_escape ) { + return mysql_real_escape_string( $string, $this->dbh ); + } else { + return addslashes( $string ); + } + } + + function _escape( $data ) + { + if ( is_array( $data ) ) { + foreach ( (array) $data as $k => $v ) { + if ( is_array( $v ) ) { + $data[$k] = $this->_escape( $v ); + } else { + $data[$k] = $this->_real_escape( $v ); + } + } + } else { + $data = $this->_real_escape( $data ); + } + + return $data; + } + + /** + * Escapes content for insertion into the database using addslashes(), for security + * + * @since 1.0 + * + * @param string|array $data + * @return string query safe string + */ + function escape( $data ) + { + if ( is_array( $data ) ) { + foreach ( (array) $data as $k => $v ) { + if ( is_array( $v ) ) { + $data[$k] = $this->escape( $v ); + } else { + $data[$k] = $this->_weak_escape( $v ); + } + } + } else { + $data = $this->_weak_escape( $data ); + } + + return $data; + } + + /** + * Escapes content by reference for insertion into the database, for security + * + * @since 1.0 + * + * @param string $s + */ + function escape_by_ref( &$string ) + { + $string = $this->_real_escape( $string ); + } + + /** + * Escapes array recursively for insertion into the database, for security + * @param array $array + */ + function escape_deep( $array ) + { + return $this->_escape( $array ); + } + + /** + * Prepares a SQL query for safe execution. Uses sprintf()-like syntax. + * + * This function only supports a small subset of the sprintf syntax; it only supports %d (decimal number), %s (string). + * Does not support sign, padding, alignment, width or precision specifiers. + * Does not support argument numbering/swapping. + * + * May be called like {@link http://php.net/sprintf sprintf()} or like {@link http://php.net/vsprintf vsprintf()}. + * + * Both %d and %s should be left unquoted in the query string. + * + * + * wpdb::prepare( "SELECT * FROM `table` WHERE `column` = %s AND `field` = %d", "foo", 1337 ) + * + * + * @link http://php.net/sprintf Description of syntax. + * @since 1.0 + * + * @param string $query Query statement with sprintf()-like placeholders + * @param array|mixed $args The array of variables to substitute into the query's placeholders if being called like {@link http://php.net/vsprintf vsprintf()}, or the first variable to substitute into the query's placeholders if being called like {@link http://php.net/sprintf sprintf()}. + * @param mixed $args,... further variables to substitute into the query's placeholders if being called like {@link http://php.net/sprintf sprintf()}. + * @return null|string Sanitized query string + */ + function prepare( $query = null ) // ( $query, *$args ) + { + if ( is_null( $query ) ) { + return; + } + $args = func_get_args(); + array_shift( $args ); + // If args were passed as an array (as in vsprintf), move them up + if ( isset( $args[0] ) && is_array( $args[0] ) ) { + $args = $args[0]; + } + $query = str_replace( "'%s'", '%s', $query ); // in case someone mistakenly already singlequoted it + $query = str_replace( '"%s"', '%s', $query ); // doublequote unquoting + $query = str_replace( '%s', "'%s'", $query ); // quote the strings + array_walk( $args, array( &$this, 'escape_by_ref' ) ); + return @vsprintf( $query, $args ); + } + + /** + * Get SQL/DB error + * + * @since 1.0 + * + * @param string $str Error string + */ + function get_error( $str = '' ) + { + if ( empty( $str ) ) { + if ( $this->last_error ) { + $str = $this->last_error; + } else { + return false; + } + } + + $caller = $this->get_caller(); + $error_str = sprintf( BPDB__ERROR_STRING, $str, $this->last_query, $caller ); + + if ( class_exists( 'WP_Error' ) ) { + return new WP_Error( 'db_query', $error_str, array( 'query' => $this->last_query, 'error' => $str, 'caller' => $caller ) ); + } else { + return array( 'query' => $this->last_query, 'error' => $str, 'caller' => $caller, 'error_str' => $error_str ); + } + } + + /** + * Print SQL/DB error. + * + * @since 1.0 + * + * @param string $str The error to display + * @return bool False if the showing of errors is disabled. + */ + function print_error( $str = '' ) + { + if ( $this->suppress_errors ) { + return false; + } + + $error = $this->get_error( $str ); + if ( is_object( $error ) && is_a( $error, 'WP_Error' ) ) { + $err = $error->get_error_data(); + $err['error_str'] = $error->get_error_message(); + } else { + $err =& $error; + } + + $log_file = ini_get( 'error_log' ); + if ( !empty( $log_file ) && ( 'syslog' != $log_file ) && is_writable( $log_file ) && function_exists( 'error_log' ) ) { + error_log($err['error_str'], 0); + } + + // Is error output turned on or not + if ( !$this->show_errors ) { + return false; + } + + $str = htmlspecialchars( $err['error'], ENT_QUOTES ); + $query = htmlspecialchars( $err['query'], ENT_QUOTES ); + $caller = htmlspecialchars( $err['caller'], ENT_QUOTES ); + + // If there is an error then take note of it + + printf( BPDB__ERROR_HTML, $str, $query, $caller ); + } + + /** + * Enables showing of database errors. + * + * This function should be used only to enable showing of errors. + * bpdb::hide_errors() should be used instead for hiding of errors. However, + * this function can be used to enable and disable showing of database + * errors. + * + * @since 1.0 + * + * @param bool $show Whether to show or hide errors + * @return bool Old value for showing errors. + */ + function show_errors( $show = true ) + { + $errors = $this->show_errors; + $this->show_errors = $show; + return $errors; + } + + /** + * Disables showing of database errors. + * + * @since 1.0 + * + * @return bool Whether showing of errors was active or not + */ + function hide_errors() + { + return $this->show_errors( false ); + } + + /** + * Whether to suppress database errors. + * + * @since 1.0 + * + * @param bool $suppress + * @return bool previous setting + */ + function suppress_errors( $suppress = true ) + { + $errors = $this->suppress_errors; + $this->suppress_errors = $suppress; + return $errors; + } + + /** + * Kill cached query results. + * + * @since 1.0 + */ + function flush() + { + $this->last_result = array(); + $this->col_info = array(); + $this->last_query = null; + $this->last_error = ''; + $this->num_rows = 0; + } + + /** + * Perform a MySQL database query, using current database connection. + * + * More information can be found on the codex page. + * + * @since 1.0 + * + * @param string $query + * @return int|false Number of rows affected/selected or false on error + */ + function query( $query, $use_current = false ) + { + if ( !$this->ready ) { + return false; + } + + // filter the query, if filters are available + // NOTE: some queries are made before the plugins have been loaded, and thus cannot be filtered with this method + if ( function_exists( 'apply_filters' ) ) { + $query = apply_filters( 'query', $query ); + } + + // initialise return + $return_val = 0; + $this->flush(); + + // Log how the function was called + $this->func_call = "\$db->query(\"$query\")"; + + // Keep track of the last query for debug.. + $this->last_query = $query; + + // Perform the query via std mysql_query function.. + if ( SAVEQUERIES ) { + $this->timer_start(); + } + + if ( $use_current ) { + $dbh =& $this->dbh; + } else { + $dbh = $this->db_connect( $query ); + } + + $this->result = @mysql_query( $query, $dbh ); + ++$this->num_queries; + + if ( SAVEQUERIES ) { + $this->queries[] = array( $query, $this->timer_stop(), $this->get_caller() ); + } + + // If there is an error then take note of it.. + if ( $this->last_error = mysql_error( $dbh ) ) { + return $this->print_error( $this->last_error ); + } + + if ( preg_match( "/^\\s*(insert|delete|update|replace|alter) /i", $query ) ) { + $this->rows_affected = mysql_affected_rows( $dbh ); + // Take note of the insert_id + if ( preg_match( "/^\\s*(insert|replace) /i", $query ) ) { + $this->insert_id = mysql_insert_id( $dbh ); + } + // Return number of rows affected + $return_val = $this->rows_affected; + } else { + $i = 0; + while ( $i < @mysql_num_fields( $this->result ) ) { + $this->col_info[$i] = @mysql_fetch_field( $this->result ); + $i++; + } + $num_rows = 0; + while ( $row = @mysql_fetch_object( $this->result ) ) { + $this->last_result[$num_rows] = $row; + $num_rows++; + } + + @mysql_free_result( $this->result ); + + // Log number of rows the query returned + $this->num_rows = $num_rows; + + // Return number of rows selected + $return_val = $this->num_rows; + } + + return $return_val; + } + + /** + * Insert a row into a table. + * + * + * wpdb::insert( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( '%s', '%d' ) ) + * + * + * @since 1.0 + * @see bpdb::prepare() + * + * @param string $table table name + * @param array $data Data to insert (in column => value pairs). Both $data columns and $data values should be "raw" (neither should be SQL escaped). + * @param array|string $format (optional) An array of formats to be mapped to each of the value in $data. If string, that format will be used for all of the values in $data. A format is one of '%d', '%s' (decimal number, string). If omitted, all values in $data will be treated as strings. + * @return int|false The number of rows inserted, or false on error. + */ + function insert( $table, $data, $format = null ) + { + $formats = $format = (array) $format; + $fields = array_keys( $data ); + $formatted_fields = array(); + foreach ( $fields as $field ) { + if ( !empty( $format ) ) { + $form = ( $form = array_shift( $formats ) ) ? $form : $format[0]; + } elseif ( isset( $this->field_types[$field] ) ) { + $form = $this->field_types[$field]; + } elseif ( is_null( $data[$field] ) ) { + $form = 'NULL'; + unset( $data[$field] ); + } else { + $form = '%s'; + } + $formatted_fields[] = $form; + } + $sql = "INSERT INTO `$table` (`" . implode( '`,`', $fields ) . "`) VALUES (" . implode( ",", $formatted_fields ) . ")"; + return $this->query( $this->prepare( $sql, $data ) ); + } + + /** + * Update a row in the table + * + * + * wpdb::update( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( 'ID' => 1 ), array( '%s', '%d' ), array( '%d' ) ) + * + * + * @since 1.0 + * @see bpdb::prepare() + * + * @param string $table table name + * @param array $data Data to update (in column => value pairs). Both $data columns and $data values should be "raw" (neither should be SQL escaped). + * @param array $where A named array of WHERE clauses (in column => value pairs). Multiple clauses will be joined with ANDs. Both $where columns and $where values should be "raw". + * @param array|string $format (optional) An array of formats to be mapped to each of the values in $data. If string, that format will be used for all of the values in $data. A format is one of '%d', '%s' (decimal number, string). If omitted, all values in $data will be treated as strings. + * @param array|string $format_where (optional) An array of formats to be mapped to each of the values in $where. If string, that format will be used for all of the items in $where. A format is one of '%d', '%s' (decimal number, string). If omitted, all values in $where will be treated as strings. + * @return int|false The number of rows updated, or false on error. + */ + function update( $table, $data, $where, $format = null, $where_format = null ) + { + if ( !is_array( $where ) ) { + return false; + } + + $formats = $format = (array) $format; + $bits = $wheres = array(); + foreach ( (array) array_keys( $data ) as $field ) { + if ( !empty( $format ) ) { + $form = ( $form = array_shift( $formats ) ) ? $form : $format[0]; + } elseif ( isset( $this->field_types[$field] ) ) { + $form = $this->field_types[$field]; + } elseif ( is_null( $data[$field] ) ) { + $form = 'NULL'; + unset( $data[$field] ); + } else { + $form = '%s'; + } + $bits[] = "`$field` = {$form}"; + } + + $where_formats = $where_format = (array) $where_format; + foreach ( (array) array_keys( $where ) as $field ) { + if ( !empty( $where_format ) ) { + $form = ( $form = array_shift( $where_formats ) ) ? $form : $where_format[0]; + } elseif ( isset( $this->field_types[$field] ) ) { + $form = $this->field_types[$field]; + } elseif ( is_null( $where[$field] ) ) { + unset( $where[$field] ); + $wheres[] = "`$field` IS NULL"; + continue; + } else { + $form = '%s'; + } + $wheres[] = "`$field` = {$form}"; + } + + $sql = "UPDATE `$table` SET " . implode( ', ', $bits ) . ' WHERE ' . implode( ' AND ', $wheres ); + return $this->query( $this->prepare( $sql, array_merge( array_values( $data ), array_values( $where ) ) ) ); + } + + /** + * Retrieve one variable from the database. + * + * Executes a SQL query and returns the value from the SQL result. + * If the SQL result contains more than one column and/or more than one row, this function returns the value in the column and row specified. + * If $query is null, this function returns the value in the specified column and row from the previous SQL result. + * + * @since 1.0 + * + * @param string|null $query SQL query. If null, use the result from the previous query. + * @param int $x (optional) Column of value to return. Indexed from 0. + * @param int $y (optional) Row of value to return. Indexed from 0. + * @return string Database query result + */ + function get_var( $query=null, $x = 0, $y = 0 ) + { + $this->func_call = "\$db->get_var(\"$query\",$x,$y)"; + if ( $query ) { + $this->query( $query ); + } + + // Extract var out of cached results based x,y vals + if ( !empty( $this->last_result[$y] ) ) { + $values = array_values( get_object_vars( $this->last_result[$y] ) ); + } + + // If there is a value return it else return null + return ( isset($values[$x]) && $values[$x]!=='' ) ? $values[$x] : null; + } + + /** + * Retrieve one row from the database. + * + * Executes a SQL query and returns the row from the SQL result. + * + * @since 1.0 + * + * @param string|null $query SQL query. + * @param string $output (optional) one of ARRAY_A | ARRAY_N | OBJECT constants. Return an associative array (column => value, ...), a numerically indexed array (0 => value, ...) or an object ( ->column = value ), respectively. + * @param int $y (optional) Row to return. Indexed from 0. + * @return mixed Database query result in format specifed by $output + */ + function get_row( $query = null, $output = OBJECT, $y = 0 ) + { + $this->func_call = "\$db->get_row(\"$query\",$output,$y)"; + if ( $query ) { + $this->query( $query ); + } else { + return null; + } + + if ( !isset( $this->last_result[$y] ) ) { + return null; + } + + if ( $output == OBJECT ) { + return $this->last_result[$y] ? $this->last_result[$y] : null; + } elseif ( $output == ARRAY_A ) { + return $this->last_result[$y] ? get_object_vars( $this->last_result[$y] ) : null; + } elseif ( $output == ARRAY_N ) { + return $this->last_result[$y] ? array_values( get_object_vars( $this->last_result[$y] ) ) : null; + } else { + $this->print_error( " \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N" ); + } + } + + /** + * Retrieve one column from the database. + * + * Executes a SQL query and returns the column from the SQL result. + * If the SQL result contains more than one column, this function returns the column specified. + * If $query is null, this function returns the specified column from the previous SQL result. + * + * @since 1.0 + * + * @param string|null $query SQL query. If null, use the result from the previous query. + * @param int $x Column to return. Indexed from 0. + * @return array Database query result. Array indexed from 0 by SQL result row number. + */ + function get_col( $query = null , $x = 0 ) + { + if ( $query ) { + $this->query( $query ); + } + + $new_array = array(); + // Extract the column values + for ( $i=0; $i < count( $this->last_result ); $i++ ) { + $new_array[$i] = $this->get_var( null, $x, $i ); + } + return $new_array; + } + + /** + * Retrieve an entire SQL result set from the database (i.e., many rows) + * + * Executes a SQL query and returns the entire SQL result. + * + * @since 1.0 + * + * @param string $query SQL query. + * @param string $output (optional) ane of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K | ARRAY_K constants. With one of the first three, return an array of rows indexed from 0 by SQL result row number. Each row is an associative array (column => value, ...), a numerically indexed array (0 => value, ...), or an object. ( ->column = value ), respectively. With OBJECT_K and ARRAY_K, return an associative array of row objects keyed by the value of each row's first column's value. Duplicate keys are discarded. + * @return mixed Database query results + */ + function get_results( $query = null, $output = OBJECT ) + { + $this->func_call = "\$db->get_results(\"$query\", $output)"; + + if ( $query ) { + $this->query($query); + } else { + return null; + } + + if ( $output == OBJECT ) { + // Return an integer-keyed array of row objects + return $this->last_result; + } elseif ( $output == OBJECT_K || $output == ARRAY_K ) { + // Return an array of row objects with keys from column 1 + // (Duplicates are discarded) + $key = $this->col_info[0]->name; + foreach ( $this->last_result as $row ) { + if ( !isset( $new_array[ $row->$key ] ) ) { + $new_array[ $row->$key ] = $row; + } + } + if ( $output == ARRAY_K ) { + return array_map( 'get_object_vars', $new_array ); + } + return $new_array; + } elseif ( $output == ARRAY_A || $output == ARRAY_N ) { + // Return an integer-keyed array of... + if ( $this->last_result ) { + $i = 0; + foreach( $this->last_result as $row ) { + if ( $output == ARRAY_N ) { + // ...integer-keyed row arrays + $new_array[$i] = array_values( get_object_vars( $row ) ); + } else { + // ...column name-keyed row arrays + $new_array[$i] = get_object_vars( $row ); + } + ++$i; + } + return $new_array; + } + } + } + + /** + * Retrieve column metadata from the last query. + * + * @since 1.0 + * + * @param string $info_type one of name, table, def, max_length, not_null, primary_key, multiple_key, unique_key, numeric, blob, type, unsigned, zerofill + * @param int $col_offset 0: col name. 1: which table the col's in. 2: col's max length. 3: if the col is numeric. 4: col's type + * @return mixed Column Results + */ + function get_col_info( $info_type = 'name', $col_offset = -1 ) + { + if ( $this->col_info ) { + if ( $col_offset == -1 ) { + $i = 0; + foreach( (array) $this->col_info as $col ) { + $new_array[$i] = $col->{$info_type}; + $i++; + } + return $new_array; + } else { + return $this->col_info[$col_offset]->{$info_type}; + } + } + } + + /** + * Starts the timer, for debugging purposes. + * + * @since 1.0 + * + * @return true + */ + function timer_start() + { + $mtime = microtime(); + $mtime = explode( ' ', $mtime ); + $this->time_start = $mtime[1] + $mtime[0]; + return true; + } + + /** + * Stops the debugging timer. + * + * @since 1.0 + * + * @return int Total time spent on the query, in milliseconds + */ + function timer_stop() + { + $mtime = microtime(); + $mtime = explode( ' ', $mtime ); + $time_end = $mtime[1] + $mtime[0]; + $time_total = $time_end - $this->time_start; + return $time_total; + } + + /** + * Wraps errors in a nice header and footer and dies. + * + * Will not die if bpdb::$show_errors is true + * + * @since 1.0 + * + * @param string $message + * @return false|void + */ + function bail( $message ) + { + if ( !$this->show_errors ) { + if ( class_exists( 'WP_Error' ) ) + $this->error = new WP_Error( '500', $message ); + else + $this->error = $message; + return false; + } + backpress_die( $message ); + } + + /** + * Whether or not MySQL database is at least the required minimum version. + * + * @since 1.0 + * + * @return WP_Error + */ + function check_database_version( $dbh_or_table = false ) + { + // Make sure the server has MySQL 4.0 + if ( version_compare( $this->db_version( $dbh_or_table ), '4.0.0', '<' ) ) { + return new WP_Error( 'database_version', BPDB__DB_VERSION_ERROR ); + } + } + + /** + * Whether of not the database supports collation. + * + * Called when BackPress is generating the table scheme. + * + * @since 1.0 + * + * @return bool True if collation is supported, false if version does not + */ + function supports_collation() + { + return $this->has_cap( 'collation' ); + } + + /** + * Generic function to determine if a database supports a particular feature + * + * @since 1.0 + * + * @param string $db_cap the feature + * @param false|string|resource $dbh_or_table Which database to test. False = the currently selected database, string = the database containing the specified table, resource = the database corresponding to the specified mysql resource. + * @return bool + */ + function has_cap( $db_cap, $dbh_or_table = false ) + { + $version = $this->db_version( $dbh_or_table ); + + switch ( strtolower( $db_cap ) ) { + case 'collation' : + case 'group_concat' : + case 'subqueries' : + return version_compare( $version, '4.1', '>=' ); + break; + + case 'index_hint_for_join' : + return version_compare( $version, '5.0', '>=' ); + break; + + case 'index_hint_lists' : + case 'index_hint_for_any' : + return version_compare( $version, '5.1', '>=' ); + break; + } + + return false; + } + + /** + * The database version number + * + * @since 1.0 + * + * @param false|string|resource $dbh_or_table Which database to test. False = the currently selected database, string = the database containing the specified table, resource = the database corresponding to the specified mysql resource. + * @return false|string false on failure, version number on success + */ + function db_version( $dbh_or_table = false ) + { + if ( !$dbh_or_table ) { + $dbh =& $this->dbh; + } elseif ( is_resource( $dbh_or_table ) ) { + $dbh =& $dbh_or_table; + } else { + $dbh = $this->db_connect( "DESCRIBE $dbh_or_table" ); + } + + if ( $dbh ) { + return preg_replace( '|[^0-9\.]|', '', mysql_get_server_info( $dbh ) ); + } + return false; + } + + /** + * Retrieve the name of the function that called bpdb. + * + * Requires PHP 4.3 and searches up the list of functions until it reaches + * the one that would most logically had called this method. + * + * @since 1.0 + * + * @return string The name of the calling function + */ + function get_caller() + { + // requires PHP 4.3+ + if ( !is_callable( 'debug_backtrace' ) ) { + return ''; + } + + $bt = debug_backtrace(); + $caller = array(); + + $bt = array_reverse( $bt ); + foreach ( (array) $bt as $call ) { + if ( @$call['class'] == __CLASS__ ) { + continue; + } + $function = $call['function']; + if ( isset( $call['class'] ) ) { + $function = $call['class'] . "->$function"; + } + $caller[] = $function; + } + $caller = join( ', ', $caller ); + + return $caller; + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.ixr.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.ixr.php new file mode 100644 index 0000000..69c019e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.ixr.php @@ -0,0 +1,1065 @@ +data = $data; + if (!$type) { + $type = $this->calculateType(); + } + $this->type = $type; + if ($type == 'struct') { + // Turn all the values in the array in to new IXR_Value objects + foreach ($this->data as $key => $value) { + $this->data[$key] = new IXR_Value($value); + } + } + if ($type == 'array') { + for ($i = 0, $j = count($this->data); $i < $j; $i++) { + $this->data[$i] = new IXR_Value($this->data[$i]); + } + } + } + + function calculateType() + { + if ($this->data === true || $this->data === false) { + return 'boolean'; + } + if (is_integer($this->data)) { + return 'int'; + } + if (is_double($this->data)) { + return 'double'; + } + + // Deal with IXR object types base64 and date + if (is_object($this->data) && is_a($this->data, 'IXR_Date')) { + return 'date'; + } + if (is_object($this->data) && is_a($this->data, 'IXR_Base64')) { + return 'base64'; + } + + // If it is a normal PHP object convert it in to a struct + if (is_object($this->data)) { + $this->data = get_object_vars($this->data); + return 'struct'; + } + if (!is_array($this->data)) { + return 'string'; + } + + // We have an array - is it an array or a struct? + if ($this->isStruct($this->data)) { + return 'struct'; + } else { + return 'array'; + } + } + + function getXml() + { + // Return XML for this value + switch ($this->type) { + case 'boolean': + return ''.(($this->data) ? '1' : '0').''; + break; + case 'int': + return ''.$this->data.''; + break; + case 'double': + return ''.$this->data.''; + break; + case 'string': + return ''.htmlspecialchars($this->data).''; + break; + case 'array': + $return = ''."\n"; + foreach ($this->data as $item) { + $return .= ' '.$item->getXml()."\n"; + } + $return .= ''; + return $return; + break; + case 'struct': + $return = ''."\n"; + foreach ($this->data as $name => $value) { + $name = htmlspecialchars($name); + $return .= " $name"; + $return .= $value->getXml()."\n"; + } + $return .= ''; + return $return; + break; + case 'date': + case 'base64': + return $this->data->getXml(); + break; + } + return false; + } + + /** + * Checks whether or not the supplied array is a struct or not + * + * @param unknown_type $array + * @return boolean + */ + function isStruct($array) + { + $expected = 0; + foreach ($array as $key => $value) { + if ((string)$key != (string)$expected) { + return true; + } + $expected++; + } + return false; + } +} + +/** + * IXR_MESSAGE + * + * @package IXR + * @since 1.5 + * + */ +class IXR_Message +{ + var $message; + var $messageType; // methodCall / methodResponse / fault + var $faultCode; + var $faultString; + var $methodName; + var $params; + + // Current variable stacks + var $_arraystructs = array(); // The stack used to keep track of the current array/struct + var $_arraystructstypes = array(); // Stack keeping track of if things are structs or array + var $_currentStructName = array(); // A stack as well + var $_param; + var $_value; + var $_currentTag; + var $_currentTagContents; + // The XML parser + var $_parser; + + function IXR_Message($message) + { + $this->message =& $message; + } + + function parse() + { + // first remove the XML declaration + // merged from WP #10698 - this method avoids the RAM usage of preg_replace on very large messages + $header = preg_replace( '/<\?xml.*?\?'.'>/', '', substr($this->message, 0, 100), 1); + $this->message = substr_replace($this->message, $header, 0, 100); + if (trim($this->message) == '') { + return false; + } + $this->_parser = xml_parser_create(); + // Set XML parser to take the case of tags in to account + xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false); + // Set XML parser callback functions + xml_set_object($this->_parser, $this); + xml_set_element_handler($this->_parser, 'tag_open', 'tag_close'); + xml_set_character_data_handler($this->_parser, 'cdata'); + $chunk_size = 262144; // 256Kb, parse in chunks to avoid the RAM usage on very large messages + do { + if (strlen($this->message) <= $chunk_size) { + $final = true; + } + $part = substr($this->message, 0, $chunk_size); + $this->message = substr($this->message, $chunk_size); + if (!xml_parse($this->_parser, $part, $final)) { + return false; + } + if ($final) { + break; + } + } while (true); + xml_parser_free($this->_parser); + + // Grab the error messages, if any + if ($this->messageType == 'fault') { + $this->faultCode = $this->params[0]['faultCode']; + $this->faultString = $this->params[0]['faultString']; + } + return true; + } + + function tag_open($parser, $tag, $attr) + { + $this->_currentTagContents = ''; + $this->currentTag = $tag; + switch($tag) { + case 'methodCall': + case 'methodResponse': + case 'fault': + $this->messageType = $tag; + break; + /* Deal with stacks of arrays and structs */ + case 'data': // data is to all intents and puposes more interesting than array + $this->_arraystructstypes[] = 'array'; + $this->_arraystructs[] = array(); + break; + case 'struct': + $this->_arraystructstypes[] = 'struct'; + $this->_arraystructs[] = array(); + break; + } + } + + function cdata($parser, $cdata) + { + $this->_currentTagContents .= $cdata; + } + + function tag_close($parser, $tag) + { + $valueFlag = false; + switch($tag) { + case 'int': + case 'i4': + $value = (int)trim($this->_currentTagContents); + $valueFlag = true; + break; + case 'double': + $value = (double)trim($this->_currentTagContents); + $valueFlag = true; + break; + case 'string': + $value = (string)trim($this->_currentTagContents); + $valueFlag = true; + break; + case 'dateTime.iso8601': + $value = new IXR_Date(trim($this->_currentTagContents)); + $valueFlag = true; + break; + case 'value': + // "If no type is indicated, the type is string." + if (trim($this->_currentTagContents) != '') { + $value = (string)$this->_currentTagContents; + $valueFlag = true; + } + break; + case 'boolean': + $value = (boolean)trim($this->_currentTagContents); + $valueFlag = true; + break; + case 'base64': + $value = base64_decode($this->_currentTagContents); + $valueFlag = true; + break; + /* Deal with stacks of arrays and structs */ + case 'data': + case 'struct': + $value = array_pop($this->_arraystructs); + array_pop($this->_arraystructstypes); + $valueFlag = true; + break; + case 'member': + array_pop($this->_currentStructName); + break; + case 'name': + $this->_currentStructName[] = trim($this->_currentTagContents); + break; + case 'methodName': + $this->methodName = trim($this->_currentTagContents); + break; + } + + if ($valueFlag) { + if (count($this->_arraystructs) > 0) { + // Add value to struct or array + if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') { + // Add to struct + $this->_arraystructs[count($this->_arraystructs)-1][$this->_currentStructName[count($this->_currentStructName)-1]] = $value; + } else { + // Add to array + $this->_arraystructs[count($this->_arraystructs)-1][] = $value; + } + } else { + // Just add as a paramater + $this->params[] = $value; + } + } + $this->_currentTagContents = ''; + } +} + +/** + * IXR_Server + * + * @package IXR + * @since 1.5 + */ +class IXR_Server +{ + var $data; + var $callbacks = array(); + var $message; + var $capabilities; + + function IXR_Server($callbacks = false, $data = false, $wait = false) + { + $this->setCapabilities(); + if ($callbacks) { + $this->callbacks = $callbacks; + } + $this->setCallbacks(); + if (!$wait) { + $this->serve($data); + } + } + + function serve($data = false) + { + if (!$data) { + if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] !== 'POST') { + header('Content-Type: text/plain'); // merged from WP #9093 + die('XML-RPC server accepts POST requests only.'); + } + + global $HTTP_RAW_POST_DATA; + if (empty($HTTP_RAW_POST_DATA)) { + // workaround for a bug in PHP 5.2.2 - http://bugs.php.net/bug.php?id=41293 + $data = file_get_contents('php://input'); + } else { + $data =& $HTTP_RAW_POST_DATA; + } + } + $this->message = new IXR_Message($data); + if (!$this->message->parse()) { + $this->error(-32700, 'parse error. not well formed'); + } + if ($this->message->messageType != 'methodCall') { + $this->error(-32600, 'server error. invalid xml-rpc. not conforming to spec. Request must be a methodCall'); + } + $result = $this->call($this->message->methodName, $this->message->params); + + // Is the result an error? + if (is_a($result, 'IXR_Error')) { + $this->error($result); + } + + // Encode the result + $r = new IXR_Value($result); + $resultxml = $r->getXml(); + + // Create the XML + $xml = << + + + + $resultxml + + + + + +EOD; + // Send it + $this->output($xml); + } + + function call($methodname, $args) + { + if (!$this->hasMethod($methodname)) { + return new IXR_Error(-32601, 'server error. requested method '.$methodname.' does not exist.'); + } + $method = $this->callbacks[$methodname]; + + // Perform the callback and send the response + if (count($args) == 1) { + // If only one paramater just send that instead of the whole array + $args = $args[0]; + } + + // Are we dealing with a function or a method? + if (is_string($method) && substr($method, 0, 5) == 'this:') { + // It's a class method - check it exists + $method = substr($method, 5); + if (!method_exists($this, $method)) { + return new IXR_Error(-32601, 'server error. requested class method "'.$method.'" does not exist.'); + } + + //Call the method + $result = $this->$method($args); + } else { + // It's a function - does it exist? + if (is_array($method)) { + if (!method_exists($method[0], $method[1])) { + return new IXR_Error(-32601, 'server error. requested object method "'.$method[1].'" does not exist.'); + } + } else if (!function_exists($method)) { + return new IXR_Error(-32601, 'server error. requested function "'.$method.'" does not exist.'); + } + + // Call the function + $result = call_user_func($method, $args); + } + return $result; + } + + function error($error, $message = false) + { + // Accepts either an error object or an error code and message + if ($message && !is_object($error)) { + $error = new IXR_Error($error, $message); + } + $this->output($error->getXml()); + } + + function output($xml) + { + $xml = ''."\n".$xml; + $length = strlen($xml); + header('Connection: close'); + header('Content-Length: '.$length); + header('Content-Type: text/xml'); + header('Date: '.date('r')); + echo $xml; + exit; + } + + function hasMethod($method) + { + return in_array($method, array_keys($this->callbacks)); + } + + function setCapabilities() + { + // Initialises capabilities array + $this->capabilities = array( + 'xmlrpc' => array( + 'specUrl' => 'http://www.xmlrpc.com/spec', + 'specVersion' => 1 + ), + 'faults_interop' => array( + 'specUrl' => 'http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php', + 'specVersion' => 20010516 + ), + 'system.multicall' => array( + 'specUrl' => 'http://www.xmlrpc.com/discuss/msgReader$1208', + 'specVersion' => 1 + ), + ); + } + + function getCapabilities($args) + { + return $this->capabilities; + } + + function setCallbacks() + { + $this->callbacks['system.getCapabilities'] = 'this:getCapabilities'; + $this->callbacks['system.listMethods'] = 'this:listMethods'; + $this->callbacks['system.multicall'] = 'this:multiCall'; + } + + function listMethods($args) + { + // Returns a list of methods - uses array_reverse to ensure user defined + // methods are listed before server defined methods + return array_reverse(array_keys($this->callbacks)); + } + + function multiCall($methodcalls) + { + // See http://www.xmlrpc.com/discuss/msgReader$1208 + $return = array(); + foreach ($methodcalls as $call) { + $method = $call['methodName']; + $params = $call['params']; + if ($method == 'system.multicall') { + $result = new IXR_Error(-32600, 'Recursive calls to system.multicall are forbidden'); + } else { + $result = $this->call($method, $params); + } + if (is_a($result, 'IXR_Error')) { + $return[] = array( + 'faultCode' => $result->code, + 'faultString' => $result->message + ); + } else { + $return[] = array($result); + } + } + return $return; + } +} + +/** + * IXR_Request + * + * @package IXR + * @since 1.5 + */ +class IXR_Request +{ + var $method; + var $args; + var $xml; + + function IXR_Request($method, $args) + { + $this->method = $method; + $this->args = $args; + $this->xml = << + +{$this->method} + + +EOD; + foreach ($this->args as $arg) { + $this->xml .= ''; + $v = new IXR_Value($arg); + $this->xml .= $v->getXml(); + $this->xml .= "\n"; + } + $this->xml .= ''; + } + + function getLength() + { + return strlen($this->xml); + } + + function getXml() + { + return $this->xml; + } +} + +/** + * IXR_Client + * + * @package IXR + * @since 1.5 + * + */ +class IXR_Client +{ + var $server; + var $port; + var $path; + var $useragent; + var $response; + var $message = false; + var $debug = false; + var $timeout; + var $headers = array(); + + // Storage place for an error message + var $error = false; + + function IXR_Client($server, $path = false, $port = 80, $timeout = 15) + { + if (!$path) { + // Assume we have been given a URL instead + $bits = parse_url($server); + $this->server = $bits['host']; + $this->port = isset($bits['port']) ? $bits['port'] : 80; + $this->path = isset($bits['path']) ? $bits['path'] : '/'; + + // Make absolutely sure we have a path + if (!$this->path) { + $this->path = '/'; + } + } else { + $this->server = $server; + $this->path = $path; + $this->port = $port; + } + $this->useragent = 'The Incutio XML-RPC PHP Library'; + $this->timeout = $timeout; + } + + function query() + { + $args = func_get_args(); + $method = array_shift($args); + $request = new IXR_Request($method, $args); + $length = $request->getLength(); + $xml = $request->getXml(); + $r = "\r\n"; + $request = "POST {$this->path} HTTP/1.0$r"; + + // Merged from WP #8145 - allow custom headers + $this->headers['Host'] = $this->server; + $this->headers['Content-Type'] = 'text/xml'; + $this->headers['User-Agent'] = $this->useragent; + $this->headers['Content-Length']= $length; + + foreach( $this->headers as $header => $value ) { + $request .= "{$header}: {$value}{$r}"; + } + $request .= $r; + + $request .= $xml; + + // Now send the request + if ($this->debug) { + echo '
      '.htmlspecialchars($request)."\n
      \n\n"; + } + + if ($this->timeout) { + $fp = @fsockopen($this->server, $this->port, $errno, $errstr, $this->timeout); + } else { + $fp = @fsockopen($this->server, $this->port, $errno, $errstr); + } + if (!$fp) { + $this->error = new IXR_Error(-32300, 'transport error - could not open socket'); + return false; + } + fputs($fp, $request); + $contents = ''; + $debugContents = ''; + $gotFirstLine = false; + $gettingHeaders = true; + while (!feof($fp)) { + $line = fgets($fp, 4096); + if (!$gotFirstLine) { + // Check line for '200' + if (strstr($line, '200') === false) { + $this->error = new IXR_Error(-32300, 'transport error - HTTP status code was not 200'); + return false; + } + $gotFirstLine = true; + } + if (trim($line) == '') { + $gettingHeaders = false; + } + if (!$gettingHeaders) { + // merged from WP #12559 - remove trim + $contents .= $line; + } + if ($this->debug) { + $debugContents .= $line; + } + } + if ($this->debug) { + echo '
      '.htmlspecialchars($debugContents)."\n
      \n\n"; + } + + // Now parse what we've got back + $this->message = new IXR_Message($contents); + if (!$this->message->parse()) { + // XML error + $this->error = new IXR_Error(-32700, 'parse error. not well formed'); + return false; + } + + // Is the message a fault? + if ($this->message->messageType == 'fault') { + $this->error = new IXR_Error($this->message->faultCode, $this->message->faultString); + return false; + } + + // Message must be OK + return true; + } + + function getResponse() + { + // methodResponses can only have one param - return that + return $this->message->params[0]; + } + + function isError() + { + return (is_object($this->error)); + } + + function getErrorCode() + { + return $this->error->code; + } + + function getErrorMessage() + { + return $this->error->message; + } +} + + +/** + * IXR_Error + * + * @package IXR + * @since 1.5 + */ +class IXR_Error +{ + var $code; + var $message; + + function IXR_Error($code, $message) + { + $this->code = $code; + $this->message = htmlspecialchars($message); + } + + function getXml() + { + $xml = << + + + + + faultCode + {$this->code} + + + faultString + {$this->message} + + + + + + +EOD; + return $xml; + } +} + +/** + * IXR_Date + * + * @package IXR + * @since 1.5 + */ +class IXR_Date { + var $year; + var $month; + var $day; + var $hour; + var $minute; + var $second; + var $timezone; + + function IXR_Date($time) + { + // $time can be a PHP timestamp or an ISO one + if (is_numeric($time)) { + $this->parseTimestamp($time); + } else { + $this->parseIso($time); + } + } + + function parseTimestamp($timestamp) + { + $this->year = date('Y', $timestamp); + $this->month = date('m', $timestamp); + $this->day = date('d', $timestamp); + $this->hour = date('H', $timestamp); + $this->minute = date('i', $timestamp); + $this->second = date('s', $timestamp); + $this->timezone = ''; + } + + function parseIso($iso) + { + $this->year = substr($iso, 0, 4); + $this->month = substr($iso, 4, 2); + $this->day = substr($iso, 6, 2); + $this->hour = substr($iso, 9, 2); + $this->minute = substr($iso, 12, 2); + $this->second = substr($iso, 15, 2); + $this->timezone = substr($iso, 17); + } + + function getIso() + { + return $this->year.$this->month.$this->day.'T'.$this->hour.':'.$this->minute.':'.$this->second.$this->timezone; + } + + function getXml() + { + return ''.$this->getIso().''; + } + + function getTimestamp() + { + return mktime($this->hour, $this->minute, $this->second, $this->month, $this->day, $this->year); + } +} + +/** + * IXR_Base64 + * + * @package IXR + * @since 1.5 + */ +class IXR_Base64 +{ + var $data; + + function IXR_Base64($data) + { + $this->data = $data; + } + + function getXml() + { + return ''.base64_encode($this->data).''; + } +} + +/** + * IXR_IntrospectionServer + * + * @package IXR + * @since 1.5 + */ +class IXR_IntrospectionServer extends IXR_Server +{ + var $signatures; + var $help; + + function IXR_IntrospectionServer() + { + $this->setCallbacks(); + $this->setCapabilities(); + $this->capabilities['introspection'] = array( + 'specUrl' => 'http://xmlrpc.usefulinc.com/doc/reserved.html', + 'specVersion' => 1 + ); + $this->addCallback( + 'system.methodSignature', + 'this:methodSignature', + array('array', 'string'), + 'Returns an array describing the return type and required parameters of a method' + ); + $this->addCallback( + 'system.getCapabilities', + 'this:getCapabilities', + array('struct'), + 'Returns a struct describing the XML-RPC specifications supported by this server' + ); + $this->addCallback( + 'system.listMethods', + 'this:listMethods', + array('array'), + 'Returns an array of available methods on this server' + ); + $this->addCallback( + 'system.methodHelp', + 'this:methodHelp', + array('string', 'string'), + 'Returns a documentation string for the specified method' + ); + } + + function addCallback($method, $callback, $args, $help) + { + $this->callbacks[$method] = $callback; + $this->signatures[$method] = $args; + $this->help[$method] = $help; + } + + function call($methodname, $args) + { + // Make sure it's in an array + if ($args && !is_array($args)) { + $args = array($args); + } + + // Over-rides default call method, adds signature check + if (!$this->hasMethod($methodname)) { + return new IXR_Error(-32601, 'server error. requested method "'.$this->message->methodName.'" not specified.'); + } + $method = $this->callbacks[$methodname]; + $signature = $this->signatures[$methodname]; + $returnType = array_shift($signature); + + // Check the number of arguments + if (count($args) != count($signature)) { + return new IXR_Error(-32602, 'server error. wrong number of method parameters'); + } + + // Check the argument types + $ok = true; + $argsbackup = $args; + for ($i = 0, $j = count($args); $i < $j; $i++) { + $arg = array_shift($args); + $type = array_shift($signature); + switch ($type) { + case 'int': + case 'i4': + if (is_array($arg) || !is_int($arg)) { + $ok = false; + } + break; + case 'base64': + case 'string': + if (!is_string($arg)) { + $ok = false; + } + break; + case 'boolean': + if ($arg !== false && $arg !== true) { + $ok = false; + } + break; + case 'float': + case 'double': + if (!is_float($arg)) { + $ok = false; + } + break; + case 'date': + case 'dateTime.iso8601': + if (!is_a($arg, 'IXR_Date')) { + $ok = false; + } + break; + } + if (!$ok) { + return new IXR_Error(-32602, 'server error. invalid method parameters'); + } + } + // It passed the test - run the "real" method call + return parent::call($methodname, $argsbackup); + } + + function methodSignature($method) + { + if (!$this->hasMethod($method)) { + return new IXR_Error(-32601, 'server error. requested method "'.$method.'" not specified.'); + } + // We should be returning an array of types + $types = $this->signatures[$method]; + $return = array(); + foreach ($types as $type) { + switch ($type) { + case 'string': + $return[] = 'string'; + break; + case 'int': + case 'i4': + $return[] = 42; + break; + case 'double': + $return[] = 3.1415; + break; + case 'dateTime.iso8601': + $return[] = new IXR_Date(time()); + break; + case 'boolean': + $return[] = true; + break; + case 'base64': + $return[] = new IXR_Base64('base64'); + break; + case 'array': + $return[] = array('array'); + break; + case 'struct': + $return[] = array('struct' => 'struct'); + break; + } + } + return $return; + } + + function methodHelp($method) + { + return $this->help[$method]; + } +} + +/** + * IXR_ClientMulticall + * + * @package IXR + * @since 1.5 + */ +class IXR_ClientMulticall extends IXR_Client +{ + var $calls = array(); + + function IXR_ClientMulticall($server, $path = false, $port = 80) + { + parent::IXR_Client($server, $path, $port); + $this->useragent = 'The Incutio XML-RPC PHP Library (multicall client)'; + } + + function addCall() + { + $args = func_get_args(); + $methodName = array_shift($args); + $struct = array( + 'methodName' => $methodName, + 'params' => $args + ); + $this->calls[] = $struct; + } + + function query() + { + // Prepare multicall, then call the parent::query() method + return parent::query('system.multicall', $this->calls); + } +} + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.mailer-smtp.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.mailer-smtp.php new file mode 100644 index 0000000..0d473ce --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.mailer-smtp.php @@ -0,0 +1,1061 @@ +smtp_conn = 0; + $this->error = null; + $this->helo_rply = null; + + $this->do_debug = 0; + } + + /************************************************************* + * CONNECTION FUNCTIONS * + ***********************************************************/ + + /** + * Connect to the server specified on the port specified. + * If the port is not specified use the default SMTP_PORT. + * If tval is specified then a connection will try and be + * established with the server for that number of seconds. + * If tval is not specified the default is 30 seconds to + * try on the connection. + * + * SMTP CODE SUCCESS: 220 + * SMTP CODE FAILURE: 421 + * @access public + * @return bool + */ + function Connect($host,$port=0,$tval=30) { + # set the error val to null so there is no confusion + $this->error = null; + + # make sure we are __not__ connected + if($this->connected()) { + # ok we are connected! what should we do? + # for now we will just give an error saying we + # are already connected + $this->error = array("error" => "Already connected to a server"); + return false; + } + + if(empty($port)) { + $port = $this->SMTP_PORT; + } + + #connect to the smtp server + $this->smtp_conn = fsockopen($host, # the host of the server + $port, # the port to use + $errno, # error number if any + $errstr, # error message if any + $tval); # give up after ? secs + # verify we connected properly + if(empty($this->smtp_conn)) { + $this->error = array("error" => "Failed to connect to server", + "errno" => $errno, + "errstr" => $errstr); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": $errstr ($errno)" . $this->CRLF; + } + return false; + } + + # sometimes the SMTP server takes a little longer to respond + # so we will give it a longer timeout for the first read + // Windows still does not have support for this timeout function + if(substr(PHP_OS, 0, 3) != "WIN") + socket_set_timeout($this->smtp_conn, $tval, 0); + + # get any announcement stuff + $announce = $this->get_lines(); + + # set the timeout of any socket functions at 1/10 of a second + //if(function_exists("socket_set_timeout")) + // socket_set_timeout($this->smtp_conn, 0, 100000); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $announce; + } + + return true; + } + + /** + * Performs SMTP authentication. Must be run after running the + * Hello() method. Returns true if successfully authenticated. + * @access public + * @return bool + */ + function Authenticate($username, $password) { + // Start authentication + fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($code != 334) { + $this->error = + array("error" => "AUTH not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + + // Send encoded username + fputs($this->smtp_conn, base64_encode($username) . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($code != 334) { + $this->error = + array("error" => "Username not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + + // Send encoded password + fputs($this->smtp_conn, base64_encode($password) . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($code != 235) { + $this->error = + array("error" => "Password not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + + return true; + } + + /** + * Returns true if connected to a server otherwise false + * @access private + * @return bool + */ + function Connected() { + if(!empty($this->smtp_conn)) { + $sock_status = socket_get_status($this->smtp_conn); + if($sock_status["eof"]) { + # hmm this is an odd situation... the socket is + # valid but we are not connected anymore + if($this->do_debug >= 1) { + echo "SMTP -> NOTICE:" . $this->CRLF . + "EOF caught while checking if connected"; + } + $this->Close(); + return false; + } + return true; # everything looks good + } + return false; + } + + /** + * Closes the socket and cleans up the state of the class. + * It is not considered good to use this function without + * first trying to use QUIT. + * @access public + * @return void + */ + function Close() { + $this->error = null; # so there is no confusion + $this->helo_rply = null; + if(!empty($this->smtp_conn)) { + # close the connection and cleanup + fclose($this->smtp_conn); + $this->smtp_conn = 0; + } + } + + /*************************************************************** + * SMTP COMMANDS * + *************************************************************/ + + /** + * Issues a data command and sends the msg_data to the server + * finializing the mail transaction. $msg_data is the message + * that is to be send with the headers. Each header needs to be + * on a single line followed by a with the message headers + * and the message body being separated by and additional . + * + * Implements rfc 821: DATA + * + * SMTP CODE INTERMEDIATE: 354 + * [data] + * . + * SMTP CODE SUCCESS: 250 + * SMTP CODE FAILURE: 552,554,451,452 + * SMTP CODE FAILURE: 451,554 + * SMTP CODE ERROR : 500,501,503,421 + * @access public + * @return bool + */ + function Data($msg_data) { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Data() without being connected"); + return false; + } + + fputs($this->smtp_conn,"DATA" . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 354) { + $this->error = + array("error" => "DATA command not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + + # the server is ready to accept data! + # according to rfc 821 we should not send more than 1000 + # including the CRLF + # characters on a single line so we will break the data up + # into lines by \r and/or \n then if needed we will break + # each of those into smaller lines to fit within the limit. + # in addition we will be looking for lines that start with + # a period '.' and append and additional period '.' to that + # line. NOTE: this does not count towards are limit. + + # normalize the line breaks so we know the explode works + $msg_data = str_replace("\r\n","\n",$msg_data); + $msg_data = str_replace("\r","\n",$msg_data); + $lines = explode("\n",$msg_data); + + # we need to find a good way to determine is headers are + # in the msg_data or if it is a straight msg body + # currently I am assuming rfc 822 definitions of msg headers + # and if the first field of the first line (':' sperated) + # does not contain a space then it _should_ be a header + # and we can process all lines before a blank "" line as + # headers. + $field = substr($lines[0],0,strpos($lines[0],":")); + $in_headers = false; + if(!empty($field) && !strstr($field," ")) { + $in_headers = true; + } + + $max_line_length = 998; # used below; set here for ease in change + + while(list(,$line) = @each($lines)) { + $lines_out = null; + if($line == "" && $in_headers) { + $in_headers = false; + } + # ok we need to break this line up into several + # smaller lines + while(strlen($line) > $max_line_length) { + $pos = strrpos(substr($line,0,$max_line_length)," "); + + # Patch to fix DOS attack + if(!$pos) { + $pos = $max_line_length - 1; + } + + $lines_out[] = substr($line,0,$pos); + $line = substr($line,$pos + 1); + # if we are processing headers we need to + # add a LWSP-char to the front of the new line + # rfc 822 on long msg headers + if($in_headers) { + $line = "\t" . $line; + } + } + $lines_out[] = $line; + + # now send the lines to the server + while(list(,$line_out) = @each($lines_out)) { + if(strlen($line_out) > 0) + { + if(substr($line_out, 0, 1) == ".") { + $line_out = "." . $line_out; + } + } + fputs($this->smtp_conn,$line_out . $this->CRLF); + } + } + + # ok all the message data has been sent so lets get this + # over with aleady + fputs($this->smtp_conn, $this->CRLF . "." . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 250) { + $this->error = + array("error" => "DATA not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + return true; + } + + /** + * Expand takes the name and asks the server to list all the + * people who are members of the _list_. Expand will return + * back and array of the result or false if an error occurs. + * Each value in the array returned has the format of: + * [ ] + * The definition of is defined in rfc 821 + * + * Implements rfc 821: EXPN + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE FAILURE: 550 + * SMTP CODE ERROR : 500,501,502,504,421 + * @access public + * @return string array + */ + function Expand($name) { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Expand() without being connected"); + return false; + } + + fputs($this->smtp_conn,"EXPN " . $name . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 250) { + $this->error = + array("error" => "EXPN not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + + # parse the reply and place in our array to return to user + $entries = explode($this->CRLF,$rply); + while(list(,$l) = @each($entries)) { + $list[] = substr($l,4); + } + + return $list; + } + + /** + * Sends the HELO command to the smtp server. + * This makes sure that we and the server are in + * the same known state. + * + * Implements from rfc 821: HELO + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE ERROR : 500, 501, 504, 421 + * @access public + * @return bool + */ + function Hello($host="") { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Hello() without being connected"); + return false; + } + + # if a hostname for the HELO was not specified determine + # a suitable one to send + if(empty($host)) { + # we need to determine some sort of appopiate default + # to send to the server + $host = "localhost"; + } + + // Send extended hello first (RFC 2821) + if(!$this->SendHello("EHLO", $host)) + { + if(!$this->SendHello("HELO", $host)) + return false; + } + + return true; + } + + /** + * Sends a HELO/EHLO command. + * @access private + * @return bool + */ + function SendHello($hello, $host) { + fputs($this->smtp_conn, $hello . " " . $host . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER: " . $this->CRLF . $rply; + } + + if($code != 250) { + $this->error = + array("error" => $hello . " not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + + $this->helo_rply = $rply; + + return true; + } + + /** + * Gets help information on the keyword specified. If the keyword + * is not specified then returns generic help, ussually contianing + * A list of keywords that help is available on. This function + * returns the results back to the user. It is up to the user to + * handle the returned data. If an error occurs then false is + * returned with $this->error set appropiately. + * + * Implements rfc 821: HELP [ ] + * + * SMTP CODE SUCCESS: 211,214 + * SMTP CODE ERROR : 500,501,502,504,421 + * @access public + * @return string + */ + function Help($keyword="") { + $this->error = null; # to avoid confusion + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Help() without being connected"); + return false; + } + + $extra = ""; + if(!empty($keyword)) { + $extra = " " . $keyword; + } + + fputs($this->smtp_conn,"HELP" . $extra . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 211 && $code != 214) { + $this->error = + array("error" => "HELP not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + + return $rply; + } + + /** + * Starts a mail transaction from the email address specified in + * $from. Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more Recipient + * commands may be called followed by a Data command. + * + * Implements rfc 821: MAIL FROM: + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE SUCCESS: 552,451,452 + * SMTP CODE SUCCESS: 500,501,421 + * @access public + * @return bool + */ + function Mail($from) { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Mail() without being connected"); + return false; + } + + $useVerp = ($this->do_verp ? "XVERP" : ""); + fputs($this->smtp_conn,"MAIL FROM:<" . $from . ">" . $useVerp . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 250) { + $this->error = + array("error" => "MAIL not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + return true; + } + + /** + * Sends the command NOOP to the SMTP server. + * + * Implements from rfc 821: NOOP + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE ERROR : 500, 421 + * @access public + * @return bool + */ + function Noop() { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Noop() without being connected"); + return false; + } + + fputs($this->smtp_conn,"NOOP" . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 250) { + $this->error = + array("error" => "NOOP not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + return true; + } + + /** + * Sends the quit command to the server and then closes the socket + * if there is no error or the $close_on_error argument is true. + * + * Implements from rfc 821: QUIT + * + * SMTP CODE SUCCESS: 221 + * SMTP CODE ERROR : 500 + * @access public + * @return bool + */ + function Quit($close_on_error=true) { + $this->error = null; # so there is no confusion + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Quit() without being connected"); + return false; + } + + # send the quit command to the server + fputs($this->smtp_conn,"quit" . $this->CRLF); + + # get any good-bye messages + $byemsg = $this->get_lines(); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $byemsg; + } + + $rval = true; + $e = null; + + $code = substr($byemsg,0,3); + if($code != 221) { + # use e as a tmp var cause Close will overwrite $this->error + $e = array("error" => "SMTP server rejected quit command", + "smtp_code" => $code, + "smtp_rply" => substr($byemsg,4)); + $rval = false; + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $e["error"] . ": " . + $byemsg . $this->CRLF; + } + } + + if(empty($e) || $close_on_error) { + $this->Close(); + } + + return $rval; + } + + /** + * Sends the command RCPT to the SMTP server with the TO: argument of $to. + * Returns true if the recipient was accepted false if it was rejected. + * + * Implements from rfc 821: RCPT TO: + * + * SMTP CODE SUCCESS: 250,251 + * SMTP CODE FAILURE: 550,551,552,553,450,451,452 + * SMTP CODE ERROR : 500,501,503,421 + * @access public + * @return bool + */ + function Recipient($to) { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Recipient() without being connected"); + return false; + } + + fputs($this->smtp_conn,"RCPT TO:<" . $to . ">" . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 250 && $code != 251) { + $this->error = + array("error" => "RCPT not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + return true; + } + + /** + * Sends the RSET command to abort and transaction that is + * currently in progress. Returns true if successful false + * otherwise. + * + * Implements rfc 821: RSET + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE ERROR : 500,501,504,421 + * @access public + * @return bool + */ + function Reset() { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Reset() without being connected"); + return false; + } + + fputs($this->smtp_conn,"RSET" . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 250) { + $this->error = + array("error" => "RSET failed", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + + return true; + } + + /** + * Starts a mail transaction from the email address specified in + * $from. Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more Recipient + * commands may be called followed by a Data command. This command + * will send the message to the users terminal if they are logged + * in. + * + * Implements rfc 821: SEND FROM: + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE SUCCESS: 552,451,452 + * SMTP CODE SUCCESS: 500,501,502,421 + * @access public + * @return bool + */ + function Send($from) { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Send() without being connected"); + return false; + } + + fputs($this->smtp_conn,"SEND FROM:" . $from . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 250) { + $this->error = + array("error" => "SEND not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + return true; + } + + /** + * Starts a mail transaction from the email address specified in + * $from. Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more Recipient + * commands may be called followed by a Data command. This command + * will send the message to the users terminal if they are logged + * in and send them an email. + * + * Implements rfc 821: SAML FROM: + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE SUCCESS: 552,451,452 + * SMTP CODE SUCCESS: 500,501,502,421 + * @access public + * @return bool + */ + function SendAndMail($from) { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called SendAndMail() without being connected"); + return false; + } + + fputs($this->smtp_conn,"SAML FROM:" . $from . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 250) { + $this->error = + array("error" => "SAML not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + return true; + } + + /** + * Starts a mail transaction from the email address specified in + * $from. Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more Recipient + * commands may be called followed by a Data command. This command + * will send the message to the users terminal if they are logged + * in or mail it to them if they are not. + * + * Implements rfc 821: SOML FROM: + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE SUCCESS: 552,451,452 + * SMTP CODE SUCCESS: 500,501,502,421 + * @access public + * @return bool + */ + function SendOrMail($from) { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called SendOrMail() without being connected"); + return false; + } + + fputs($this->smtp_conn,"SOML FROM:" . $from . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 250) { + $this->error = + array("error" => "SOML not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + return true; + } + + /** + * This is an optional command for SMTP that this class does not + * support. This method is here to make the RFC821 Definition + * complete for this class and __may__ be implimented in the future + * + * Implements from rfc 821: TURN + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE FAILURE: 502 + * SMTP CODE ERROR : 500, 503 + * @access public + * @return bool + */ + function Turn() { + $this->error = array("error" => "This method, TURN, of the SMTP ". + "is not implemented"); + if($this->do_debug >= 1) { + echo "SMTP -> NOTICE: " . $this->error["error"] . $this->CRLF; + } + return false; + } + + /** + * Verifies that the name is recognized by the server. + * Returns false if the name could not be verified otherwise + * the response from the server is returned. + * + * Implements rfc 821: VRFY + * + * SMTP CODE SUCCESS: 250,251 + * SMTP CODE FAILURE: 550,551,553 + * SMTP CODE ERROR : 500,501,502,421 + * @access public + * @return int + */ + function Verify($name) { + $this->error = null; # so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Verify() without being connected"); + return false; + } + + fputs($this->smtp_conn,"VRFY " . $name . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply; + } + + if($code != 250 && $code != 251) { + $this->error = + array("error" => "VRFY failed on name '$name'", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . + ": " . $rply . $this->CRLF; + } + return false; + } + return $rply; + } + + /******************************************************************* + * INTERNAL FUNCTIONS * + ******************************************************************/ + + /** + * Read in as many lines as possible + * either before eof or socket timeout occurs on the operation. + * With SMTP we can tell if we have more lines to read if the + * 4th character is '-' symbol. If it is a space then we don't + * need to read anything else. + * @access private + * @return string + */ + function get_lines() { + $data = ""; + while($str = @fgets($this->smtp_conn,515)) { + if($this->do_debug >= 4) { + echo "SMTP -> get_lines(): \$data was \"$data\"" . + $this->CRLF; + echo "SMTP -> get_lines(): \$str is \"$str\"" . + $this->CRLF; + } + $data .= $str; + if($this->do_debug >= 4) { + echo "SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF; + } + # if the 4th character is a space then we are done reading + # so just break the loop + if(substr($str,3,1) == " ") { break; } + } + return $data; + } + +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.mailer.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.mailer.php new file mode 100644 index 0000000..9ad6d4f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.mailer.php @@ -0,0 +1,1921 @@ +ContentType = 'text/html'; + } else { + $this->ContentType = 'text/plain'; + } + } + + /** + * Sets Mailer to send message using SMTP. + * @return void + */ + function IsSMTP() { + $this->Mailer = 'smtp'; + } + + /** + * Sets Mailer to send message using PHP mail() function. + * @return void + */ + function IsMail() { + $this->Mailer = 'mail'; + } + + /** + * Sets Mailer to send message using the $Sendmail program. + * @return void + */ + function IsSendmail() { + $this->Mailer = 'sendmail'; + } + + /** + * Sets Mailer to send message using the qmail MTA. + * @return void + */ + function IsQmail() { + $this->Sendmail = '/var/qmail/bin/sendmail'; + $this->Mailer = 'sendmail'; + } + + ///////////////////////////////////////////////// + // METHODS, RECIPIENTS + ///////////////////////////////////////////////// + + /** + * Adds a "To" address. + * @param string $address + * @param string $name + * @return void + */ + function AddAddress($address, $name = '') { + $cur = count($this->to); + $this->to[$cur][0] = trim($address); + $this->to[$cur][1] = $name; + } + + /** + * Adds a "Cc" address. Note: this function works + * with the SMTP mailer on win32, not with the "mail" + * mailer. + * @param string $address + * @param string $name + * @return void + */ + function AddCC($address, $name = '') { + $cur = count($this->cc); + $this->cc[$cur][0] = trim($address); + $this->cc[$cur][1] = $name; + } + + /** + * Adds a "Bcc" address. Note: this function works + * with the SMTP mailer on win32, not with the "mail" + * mailer. + * @param string $address + * @param string $name + * @return void + */ + function AddBCC($address, $name = '') { + $cur = count($this->bcc); + $this->bcc[$cur][0] = trim($address); + $this->bcc[$cur][1] = $name; + } + + /** + * Adds a "Reply-To" address. + * @param string $address + * @param string $name + * @return void + */ + function AddReplyTo($address, $name = '') { + $cur = count($this->ReplyTo); + $this->ReplyTo[$cur][0] = trim($address); + $this->ReplyTo[$cur][1] = $name; + } + + ///////////////////////////////////////////////// + // METHODS, MAIL SENDING + ///////////////////////////////////////////////// + + /** + * Creates message and assigns Mailer. If the message is + * not sent successfully then it returns false. Use the ErrorInfo + * variable to view description of the error. + * @return bool + */ + function Send() { + $header = ''; + $body = ''; + $result = true; + + if((count($this->to) + count($this->cc) + count($this->bcc)) < 1) { + $this->SetError($this->Lang('provide_address')); + return false; + } + + /* Set whether the message is multipart/alternative */ + if(!empty($this->AltBody)) { + $this->ContentType = 'multipart/alternative'; + } + + $this->error_count = 0; // reset errors + $this->SetMessageType(); + $header .= $this->CreateHeader(); + $body = $this->CreateBody(); + + if($body == '') { + return false; + } + + /* Choose the mailer */ + switch($this->Mailer) { + case 'sendmail': + $result = $this->SendmailSend($header, $body); + break; + case 'smtp': + $result = $this->SmtpSend($header, $body); + break; + case 'mail': + $result = $this->MailSend($header, $body); + break; + default: + $result = $this->MailSend($header, $body); + break; + //$this->SetError($this->Mailer . $this->Lang('mailer_not_supported')); + //$result = false; + //break; + } + + return $result; + } + + /** + * Sends mail using the $Sendmail program. + * @access private + * @return bool + */ + function SendmailSend($header, $body) { + if ($this->Sender != '') { + $sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender)); + } else { + $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail)); + } + + if(!@$mail = popen($sendmail, 'w')) { + $this->SetError($this->Lang('execute') . $this->Sendmail); + return false; + } + + fputs($mail, $header); + fputs($mail, $body); + + $result = pclose($mail); + if (version_compare(phpversion(), '4.2.3') == -1) { + $result = $result >> 8 & 0xFF; + } + if($result != 0) { + $this->SetError($this->Lang('execute') . $this->Sendmail); + return false; + } + return true; + } + + /** + * Sends mail using the PHP mail() function. + * @access private + * @return bool + */ + function MailSend($header, $body) { + + $to = ''; + for($i = 0; $i < count($this->to); $i++) { + if($i != 0) { $to .= ', '; } + $to .= $this->AddrFormat($this->to[$i]); + } + + $toArr = split(',', $to); + + $params = sprintf("-oi -f %s", $this->Sender); + if ($this->Sender != '' && strlen(ini_get('safe_mode')) < 1) { + $old_from = ini_get('sendmail_from'); + ini_set('sendmail_from', $this->Sender); + if ($this->SingleTo === true && count($toArr) > 1) { + foreach ($toArr as $key => $val) { + $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params); + } + } else { + $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params); + } + } else { + if ($this->SingleTo === true && count($toArr) > 1) { + foreach ($toArr as $key => $val) { + $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params); + } + } else { + $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header); + } + } + + if (isset($old_from)) { + ini_set('sendmail_from', $old_from); + } + + if(!$rt) { + $this->SetError($this->Lang('instantiate')); + return false; + } + + return true; + } + + /** + * Sends mail via SMTP using PhpSMTP (Author: + * Chris Ryan). Returns bool. Returns false if there is a + * bad MAIL FROM, RCPT, or DATA input. + * @access private + * @return bool + */ + function SmtpSend($header, $body) { + include_once('class.mailer-smtp.php'); + $error = ''; + $bad_rcpt = array(); + + if(!$this->SmtpConnect()) { + return false; + } + + $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender; + if(!$this->smtp->Mail($smtp_from)) { + $error = $this->Lang('from_failed') . $smtp_from; + $this->SetError($error); + $this->smtp->Reset(); + return false; + } + + /* Attempt to send attach all recipients */ + for($i = 0; $i < count($this->to); $i++) { + if(!$this->smtp->Recipient($this->to[$i][0])) { + $bad_rcpt[] = $this->to[$i][0]; + } + } + for($i = 0; $i < count($this->cc); $i++) { + if(!$this->smtp->Recipient($this->cc[$i][0])) { + $bad_rcpt[] = $this->cc[$i][0]; + } + } + for($i = 0; $i < count($this->bcc); $i++) { + if(!$this->smtp->Recipient($this->bcc[$i][0])) { + $bad_rcpt[] = $this->bcc[$i][0]; + } + } + + if(count($bad_rcpt) > 0) { // Create error message + for($i = 0; $i < count($bad_rcpt); $i++) { + if($i != 0) { + $error .= ', '; + } + $error .= $bad_rcpt[$i]; + } + $error = $this->Lang('recipients_failed') . $error; + $this->SetError($error); + $this->smtp->Reset(); + return false; + } + + if(!$this->smtp->Data($header . $body)) { + $this->SetError($this->Lang('data_not_accepted')); + $this->smtp->Reset(); + return false; + } + if($this->SMTPKeepAlive == true) { + $this->smtp->Reset(); + } else { + $this->SmtpClose(); + } + + return true; + } + + /** + * Initiates a connection to an SMTP server. Returns false if the + * operation failed. + * @access private + * @return bool + */ + function SmtpConnect() { + if($this->smtp == NULL) { + $this->smtp = new SMTP(); + } + + $this->smtp->do_debug = $this->SMTPDebug; + $hosts = explode(';', $this->Host); + $index = 0; + $connection = ($this->smtp->Connected()); + + /* Retry while there is no connection */ + while($index < count($hosts) && $connection == false) { + $hostinfo = array(); + if(eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo)) { + $host = $hostinfo[1]; + $port = $hostinfo[2]; + } else { + $host = $hosts[$index]; + $port = $this->Port; + } + + if($this->smtp->Connect(((!empty($this->SMTPSecure))?$this->SMTPSecure.'://':'').$host, $port, $this->Timeout)) { + if ($this->Helo != '') { + $this->smtp->Hello($this->Helo); + } else { + $this->smtp->Hello($this->ServerHostname()); + } + + $connection = true; + if($this->SMTPAuth) { + if(!$this->smtp->Authenticate($this->Username, $this->Password)) { + $this->SetError($this->Lang('authenticate')); + $this->smtp->Reset(); + $connection = false; + } + } + } + $index++; + } + if(!$connection) { + $this->SetError($this->Lang('connect_host')); + } + + return $connection; + } + + /** + * Closes the active SMTP session if one exists. + * @return void + */ + function SmtpClose() { + if($this->smtp != NULL) { + if($this->smtp->Connected()) { + $this->smtp->Quit(); + $this->smtp->Close(); + } + } + } + + /** + * Sets the language for all class error messages. Returns false + * if it cannot load the language file. The default language type + * is English. + * @param string $lang_type Type of language (e.g. Portuguese: "br") + * @param string $lang_path Path to the language file directory + * @access public + * @return bool + */ + function SetLanguage($lang_type, $lang_path = 'language/') { + if(file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php')) { + include($lang_path.'phpmailer.lang-'.$lang_type.'.php'); + } elseif (file_exists($lang_path.'phpmailer.lang-en.php')) { + include($lang_path.'phpmailer.lang-en.php'); + } else { + $PHPMAILER_LANG = array(); + $PHPMAILER_LANG["provide_address"] = 'You must provide at least one ' . + $PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.'; + $PHPMAILER_LANG["execute"] = 'Could not execute: '; + $PHPMAILER_LANG["instantiate"] = 'Could not instantiate mail function.'; + $PHPMAILER_LANG["authenticate"] = 'SMTP Error: Could not authenticate.'; + $PHPMAILER_LANG["from_failed"] = 'The following From address failed: '; + $PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: The following ' . + $PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data not accepted.'; + $PHPMAILER_LANG["connect_host"] = 'SMTP Error: Could not connect to SMTP host.'; + $PHPMAILER_LANG["file_access"] = 'Could not access file: '; + $PHPMAILER_LANG["file_open"] = 'File Error: Could not open file: '; + $PHPMAILER_LANG["encoding"] = 'Unknown encoding: '; + $PHPMAILER_LANG["signing"] = 'Signing Error: '; + } + $this->language = $PHPMAILER_LANG; + + return true; + } + + ///////////////////////////////////////////////// + // METHODS, MESSAGE CREATION + ///////////////////////////////////////////////// + + /** + * Creates recipient headers. + * @access private + * @return string + */ + function AddrAppend($type, $addr) { + $addr_str = $type . ': '; + $addr_str .= $this->AddrFormat($addr[0]); + if(count($addr) > 1) { + for($i = 1; $i < count($addr); $i++) { + $addr_str .= ', ' . $this->AddrFormat($addr[$i]); + } + } + $addr_str .= $this->LE; + + return $addr_str; + } + + /** + * Formats an address correctly. + * @access private + * @return string + */ + function AddrFormat($addr) { + if(empty($addr[1])) { + $formatted = $this->SecureHeader($addr[0]); + } else { + $formatted = $this->EncodeHeader($this->SecureHeader($addr[1]), 'phrase') . " <" . $this->SecureHeader($addr[0]) . ">"; + } + + return $formatted; + } + + /** + * Wraps message for use with mailers that do not + * automatically perform wrapping and for quoted-printable. + * Original written by philippe. + * @access private + * @return string + */ + function WrapText($message, $length, $qp_mode = false) { + $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE; + // If utf-8 encoding is used, we will need to make sure we don't + // split multibyte characters when we wrap + $is_utf8 = (strtolower($this->CharSet) == "utf-8"); + + $message = $this->FixEOL($message); + if (substr($message, -1) == $this->LE) { + $message = substr($message, 0, -1); + } + + $line = explode($this->LE, $message); + $message = ''; + for ($i=0 ;$i < count($line); $i++) { + $line_part = explode(' ', $line[$i]); + $buf = ''; + for ($e = 0; $e $length)) { + $space_left = $length - strlen($buf) - 1; + if ($e != 0) { + if ($space_left > 20) { + $len = $space_left; + if ($is_utf8) { + $len = $this->UTF8CharBoundary($word, $len); + } elseif (substr($word, $len - 1, 1) == "=") { + $len--; + } elseif (substr($word, $len - 2, 1) == "=") { + $len -= 2; + } + $part = substr($word, 0, $len); + $word = substr($word, $len); + $buf .= ' ' . $part; + $message .= $buf . sprintf("=%s", $this->LE); + } else { + $message .= $buf . $soft_break; + } + $buf = ''; + } + while (strlen($word) > 0) { + $len = $length; + if ($is_utf8) { + $len = $this->UTF8CharBoundary($word, $len); + } elseif (substr($word, $len - 1, 1) == "=") { + $len--; + } elseif (substr($word, $len - 2, 1) == "=") { + $len -= 2; + } + $part = substr($word, 0, $len); + $word = substr($word, $len); + + if (strlen($word) > 0) { + $message .= $part . sprintf("=%s", $this->LE); + } else { + $buf = $part; + } + } + } else { + $buf_o = $buf; + $buf .= ($e == 0) ? $word : (' ' . $word); + + if (strlen($buf) > $length and $buf_o != '') { + $message .= $buf_o . $soft_break; + $buf = $word; + } + } + } + $message .= $buf . $this->LE; + } + + return $message; + } + + /** + * Finds last character boundary prior to maxLength in a utf-8 + * quoted (printable) encoded string. + * Original written by Colin Brown. + * @access private + * @param string $encodedText utf-8 QP text + * @param int $maxLength find last character boundary prior to this length + * @return int + */ + function UTF8CharBoundary($encodedText, $maxLength) { + $foundSplitPos = false; + $lookBack = 3; + while (!$foundSplitPos) { + $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack); + $encodedCharPos = strpos($lastChunk, "="); + if ($encodedCharPos !== false) { + // Found start of encoded character byte within $lookBack block. + // Check the encoded byte value (the 2 chars after the '=') + $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2); + $dec = hexdec($hex); + if ($dec < 128) { // Single byte character. + // If the encoded char was found at pos 0, it will fit + // otherwise reduce maxLength to start of the encoded char + $maxLength = ($encodedCharPos == 0) ? $maxLength : + $maxLength - ($lookBack - $encodedCharPos); + $foundSplitPos = true; + } elseif ($dec >= 192) { // First byte of a multi byte character + // Reduce maxLength to split at start of character + $maxLength = $maxLength - ($lookBack - $encodedCharPos); + $foundSplitPos = true; + } elseif ($dec < 192) { // Middle byte of a multi byte character, look further back + $lookBack += 3; + } + } else { + // No encoded character found + $foundSplitPos = true; + } + } + return $maxLength; + } + + /** + * Set the body wrapping. + * @access private + * @return void + */ + function SetWordWrap() { + if($this->WordWrap < 1) { + return; + } + + switch($this->message_type) { + case 'alt': + /* fall through */ + case 'alt_attachments': + $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap); + break; + default: + $this->Body = $this->WrapText($this->Body, $this->WordWrap); + break; + } + } + + /** + * Assembles message header. + * @access private + * @return string + */ + function CreateHeader() { + $result = ''; + + /* Set the boundaries */ + $uniq_id = md5(uniqid(time())); + $this->boundary[1] = 'b1_' . $uniq_id; + $this->boundary[2] = 'b2_' . $uniq_id; + + $result .= $this->HeaderLine('Date', $this->RFCDate()); + if($this->Sender == '') { + $result .= $this->HeaderLine('Return-Path', trim($this->From)); + } else { + $result .= $this->HeaderLine('Return-Path', trim($this->Sender)); + } + + /* To be created automatically by mail() */ + if($this->Mailer != 'mail') { + if(count($this->to) > 0) { + $result .= $this->AddrAppend('To', $this->to); + } elseif (count($this->cc) == 0) { + $result .= $this->HeaderLine('To', 'undisclosed-recipients:;'); + } + } + + $from = array(); + $from[0][0] = trim($this->From); + $from[0][1] = $this->FromName; + $result .= $this->AddrAppend('From', $from); + + /* sendmail and mail() extract Cc from the header before sending */ + if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->cc) > 0)) { + $result .= $this->AddrAppend('Cc', $this->cc); + } + + /* sendmail and mail() extract Bcc from the header before sending */ + if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) { + $result .= $this->AddrAppend('Bcc', $this->bcc); + } + + if(count($this->ReplyTo) > 0) { + $result .= $this->AddrAppend('Reply-To', $this->ReplyTo); + } + + /* mail() sets the subject itself */ + if($this->Mailer != 'mail') { + $result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject))); + } + + if($this->MessageID != '') { + $result .= $this->HeaderLine('Message-ID',$this->MessageID); + } else { + $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE); + } + $result .= $this->HeaderLine('X-Priority', $this->Priority); + $result .= $this->HeaderLine('X-Mailer', 'PHPMailer (phpmailer.sourceforge.net) [version ' . $this->Version . ']'); + + if($this->ConfirmReadingTo != '') { + $result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>'); + } + + // Add custom headers + for($index = 0; $index < count($this->CustomHeader); $index++) { + $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1]))); + } + if (!$this->sign_key_file) { + $result .= $this->HeaderLine('MIME-Version', '1.0'); + $result .= $this->GetMailMIME(); + } + + return $result; + } + + /** + * Returns the message MIME. + * @access private + * @return string + */ + function GetMailMIME() { + $result = ''; + switch($this->message_type) { + case 'plain': + $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding); + $result .= sprintf("Content-Type: %s; charset=\"%s\"", $this->ContentType, $this->CharSet); + break; + case 'attachments': + /* fall through */ + case 'alt_attachments': + if($this->InlineImageExists()){ + $result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s", 'multipart/related', $this->LE, $this->LE, $this->boundary[1], $this->LE); + } else { + $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;'); + $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); + } + break; + case 'alt': + $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;'); + $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + } + + if($this->Mailer != 'mail') { + $result .= $this->LE.$this->LE; + } + + return $result; + } + + /** + * Assembles the message body. Returns an empty string on failure. + * @access private + * @return string + */ + function CreateBody() { + $result = ''; + if ($this->sign_key_file) { + $result .= $this->GetMailMIME(); + } + + $this->SetWordWrap(); + + switch($this->message_type) { + case 'alt': + $result .= $this->GetBoundary($this->boundary[1], '', 'text/plain', ''); + $result .= $this->EncodeString($this->AltBody, $this->Encoding); + $result .= $this->LE.$this->LE; + $result .= $this->GetBoundary($this->boundary[1], '', 'text/html', ''); + $result .= $this->EncodeString($this->Body, $this->Encoding); + $result .= $this->LE.$this->LE; + $result .= $this->EndBoundary($this->boundary[1]); + break; + case 'plain': + $result .= $this->EncodeString($this->Body, $this->Encoding); + break; + case 'attachments': + $result .= $this->GetBoundary($this->boundary[1], '', '', ''); + $result .= $this->EncodeString($this->Body, $this->Encoding); + $result .= $this->LE; + $result .= $this->AttachAll(); + break; + case 'alt_attachments': + $result .= sprintf("--%s%s", $this->boundary[1], $this->LE); + $result .= sprintf("Content-Type: %s;%s" . "\tboundary=\"%s\"%s", 'multipart/alternative', $this->LE, $this->boundary[2], $this->LE.$this->LE); + $result .= $this->GetBoundary($this->boundary[2], '', 'text/plain', '') . $this->LE; // Create text body + $result .= $this->EncodeString($this->AltBody, $this->Encoding); + $result .= $this->LE.$this->LE; + $result .= $this->GetBoundary($this->boundary[2], '', 'text/html', '') . $this->LE; // Create the HTML body + $result .= $this->EncodeString($this->Body, $this->Encoding); + $result .= $this->LE.$this->LE; + $result .= $this->EndBoundary($this->boundary[2]); + $result .= $this->AttachAll(); + break; + } + + if($this->IsError()) { + $result = ''; + } else if ($this->sign_key_file) { + $file = tempnam("", "mail"); + $fp = fopen($file, "w"); + fwrite($fp, $result); + fclose($fp); + $signed = tempnam("", "signed"); + + if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), null)) { + $fp = fopen($signed, "r"); + $result = fread($fp, filesize($this->sign_key_file)); + $result = ''; + while(!feof($fp)){ + $result = $result . fread($fp, 1024); + } + fclose($fp); + } else { + $this->SetError($this->Lang("signing").openssl_error_string()); + $result = ''; + } + + unlink($file); + unlink($signed); + } + + return $result; + } + + /** + * Returns the start of a message boundary. + * @access private + */ + function GetBoundary($boundary, $charSet, $contentType, $encoding) { + $result = ''; + if($charSet == '') { + $charSet = $this->CharSet; + } + if($contentType == '') { + $contentType = $this->ContentType; + } + if($encoding == '') { + $encoding = $this->Encoding; + } + $result .= $this->TextLine('--' . $boundary); + $result .= sprintf("Content-Type: %s; charset = \"%s\"", $contentType, $charSet); + $result .= $this->LE; + $result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding); + $result .= $this->LE; + + return $result; + } + + /** + * Returns the end of a message boundary. + * @access private + */ + function EndBoundary($boundary) { + return $this->LE . '--' . $boundary . '--' . $this->LE; + } + + /** + * Sets the message type. + * @access private + * @return void + */ + function SetMessageType() { + if(count($this->attachment) < 1 && strlen($this->AltBody) < 1) { + $this->message_type = 'plain'; + } else { + if(count($this->attachment) > 0) { + $this->message_type = 'attachments'; + } + if(strlen($this->AltBody) > 0 && count($this->attachment) < 1) { + $this->message_type = 'alt'; + } + if(strlen($this->AltBody) > 0 && count($this->attachment) > 0) { + $this->message_type = 'alt_attachments'; + } + } + } + + /* Returns a formatted header line. + * @access private + * @return string + */ + function HeaderLine($name, $value) { + return $name . ': ' . $value . $this->LE; + } + + /** + * Returns a formatted mail line. + * @access private + * @return string + */ + function TextLine($value) { + return $value . $this->LE; + } + + ///////////////////////////////////////////////// + // CLASS METHODS, ATTACHMENTS + ///////////////////////////////////////////////// + + /** + * Adds an attachment from a path on the filesystem. + * Returns false if the file could not be found + * or accessed. + * @param string $path Path to the attachment. + * @param string $name Overrides the attachment name. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @return bool + */ + function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') { + if(!@is_file($path)) { + $this->SetError($this->Lang('file_access') . $path); + return false; + } + + $filename = basename($path); + if($name == '') { + $name = $filename; + } + + $cur = count($this->attachment); + $this->attachment[$cur][0] = $path; + $this->attachment[$cur][1] = $filename; + $this->attachment[$cur][2] = $name; + $this->attachment[$cur][3] = $encoding; + $this->attachment[$cur][4] = $type; + $this->attachment[$cur][5] = false; // isStringAttachment + $this->attachment[$cur][6] = 'attachment'; + $this->attachment[$cur][7] = 0; + + return true; + } + + /** + * Attaches all fs, string, and binary attachments to the message. + * Returns an empty string on failure. + * @access private + * @return string + */ + function AttachAll() { + /* Return text of body */ + $mime = array(); + + /* Add all attachments */ + for($i = 0; $i < count($this->attachment); $i++) { + /* Check for string attachment */ + $bString = $this->attachment[$i][5]; + if ($bString) { + $string = $this->attachment[$i][0]; + } else { + $path = $this->attachment[$i][0]; + } + + $filename = $this->attachment[$i][1]; + $name = $this->attachment[$i][2]; + $encoding = $this->attachment[$i][3]; + $type = $this->attachment[$i][4]; + $disposition = $this->attachment[$i][6]; + $cid = $this->attachment[$i][7]; + + $mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE); + $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE); + $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE); + + if($disposition == 'inline') { + $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE); + } + + $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE); + + /* Encode as string attachment */ + if($bString) { + $mime[] = $this->EncodeString($string, $encoding); + if($this->IsError()) { + return ''; + } + $mime[] = $this->LE.$this->LE; + } else { + $mime[] = $this->EncodeFile($path, $encoding); + if($this->IsError()) { + return ''; + } + $mime[] = $this->LE.$this->LE; + } + } + + $mime[] = sprintf("--%s--%s", $this->boundary[1], $this->LE); + + return join('', $mime); + } + + /** + * Encodes attachment in requested format. Returns an + * empty string on failure. + * @access private + * @return string + */ + function EncodeFile ($path, $encoding = 'base64') { + if(!@$fd = fopen($path, 'rb')) { + $this->SetError($this->Lang('file_open') . $path); + return ''; + } + $magic_quotes = get_magic_quotes_runtime(); + set_magic_quotes_runtime(0); + $file_buffer = fread($fd, filesize($path)); + $file_buffer = $this->EncodeString($file_buffer, $encoding); + fclose($fd); + set_magic_quotes_runtime($magic_quotes); + + return $file_buffer; + } + + /** + * Encodes string to requested format. Returns an + * empty string on failure. + * @access private + * @return string + */ + function EncodeString ($str, $encoding = 'base64') { + $encoded = ''; + switch(strtolower($encoding)) { + case 'base64': + /* chunk_split is found in PHP >= 3.0.6 */ + $encoded = chunk_split(base64_encode($str), 76, $this->LE); + break; + case '7bit': + case '8bit': + $encoded = $this->FixEOL($str); + if (substr($encoded, -(strlen($this->LE))) != $this->LE) + $encoded .= $this->LE; + break; + case 'binary': + $encoded = $str; + break; + case 'quoted-printable': + $encoded = $this->EncodeQP($str); + break; + default: + $this->SetError($this->Lang('encoding') . $encoding); + break; + } + return $encoded; + } + + /** + * Encode a header string to best of Q, B, quoted or none. + * @access private + * @return string + */ + function EncodeHeader ($str, $position = 'text') { + $x = 0; + + switch (strtolower($position)) { + case 'phrase': + if (!preg_match('/[\200-\377]/', $str)) { + /* Can't use addslashes as we don't know what value has magic_quotes_sybase. */ + $encoded = addcslashes($str, "\0..\37\177\\\""); + if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) { + return ($encoded); + } else { + return ("\"$encoded\""); + } + } + $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches); + break; + case 'comment': + $x = preg_match_all('/[()"]/', $str, $matches); + /* Fall-through */ + case 'text': + default: + $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); + break; + } + + if ($x == 0) { + return ($str); + } + + $maxlen = 75 - 7 - strlen($this->CharSet); + /* Try to select the encoding which should produce the shortest output */ + if (strlen($str)/3 < $x) { + $encoding = 'B'; + if (function_exists('mb_strlen') && $this->HasMultiBytes($str)) { + // Use a custom function which correctly encodes and wraps long + // multibyte strings without breaking lines within a character + $encoded = $this->Base64EncodeWrapMB($str); + } else { + $encoded = base64_encode($str); + $maxlen -= $maxlen % 4; + $encoded = trim(chunk_split($encoded, $maxlen, "\n")); + } + } else { + $encoding = 'Q'; + $encoded = $this->EncodeQ($str, $position); + $encoded = $this->WrapText($encoded, $maxlen, true); + $encoded = str_replace('='.$this->LE, "\n", trim($encoded)); + } + + $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded); + $encoded = trim(str_replace("\n", $this->LE, $encoded)); + + return $encoded; + } + + /** + * Checks if a string contains multibyte characters. + * @access private + * @param string $str multi-byte text to wrap encode + * @return bool + */ + function HasMultiBytes($str) { + if (function_exists('mb_strlen')) { + return (strlen($str) > mb_strlen($str, $this->CharSet)); + } else { // Assume no multibytes (we can't handle without mbstring functions anyway) + return False; + } + } + + /** + * Correctly encodes and wraps long multibyte strings for mail headers + * without breaking lines within a character. + * Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php + * @access private + * @param string $str multi-byte text to wrap encode + * @return string + */ + function Base64EncodeWrapMB($str) { + $start = "=?".$this->CharSet."?B?"; + $end = "?="; + $encoded = ""; + + $mb_length = mb_strlen($str, $this->CharSet); + // Each line must have length <= 75, including $start and $end + $length = 75 - strlen($start) - strlen($end); + // Average multi-byte ratio + $ratio = $mb_length / strlen($str); + // Base64 has a 4:3 ratio + $offset = $avgLength = floor($length * $ratio * .75); + + for ($i = 0; $i < $mb_length; $i += $offset) { + $lookBack = 0; + + do { + $offset = $avgLength - $lookBack; + $chunk = mb_substr($str, $i, $offset, $this->CharSet); + $chunk = base64_encode($chunk); + $lookBack++; + } + while (strlen($chunk) > $length); + + $encoded .= $chunk . $this->LE; + } + + // Chomp the last linefeed + $encoded = substr($encoded, 0, -strlen($this->LE)); + return $encoded; + } + + /** + * Encode string to quoted-printable. + * @access private + * @return string + */ + function EncodeQP( $input = '', $line_max = 76, $space_conv = false ) { + $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'); + $lines = preg_split('/(?:\r\n|\r|\n)/', $input); + $eol = "\r\n"; + $escape = '='; + $output = ''; + while( list(, $line) = each($lines) ) { + $linlen = strlen($line); + $newline = ''; + for($i = 0; $i < $linlen; $i++) { + $c = substr( $line, $i, 1 ); + $dec = ord( $c ); + if ( ( $i == 0 ) && ( $dec == 46 ) ) { // convert first point in the line into =2E + $c = '=2E'; + } + if ( $dec == 32 ) { + if ( $i == ( $linlen - 1 ) ) { // convert space at eol only + $c = '=20'; + } else if ( $space_conv ) { + $c = '=20'; + } + } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required + $h2 = floor($dec/16); + $h1 = floor($dec%16); + $c = $escape.$hex[$h2].$hex[$h1]; + } + if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted + $output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay + $newline = ''; + // check if newline first character will be point or not + if ( $dec == 46 ) { + $c = '=2E'; + } + } + $newline .= $c; + } // end of for + $output .= $newline.$eol; + } // end of while + return $output; + } + + /** + * Callback for converting to "=XX". + * @access private + * @return string + */ + function EncodeQ_callback ($matches) { + return sprintf('=%02X', ord($matches[1])); + } + + /** + * Encode string to q encoding. + * @access private + * @return string + */ + function EncodeQ ($str, $position = 'text') { + /* There should not be any EOL in the string */ + $encoded = preg_replace("/[\r\n]/", '', $str); + + switch (strtolower($position)) { + case 'phrase': + $encoded = preg_replace_callback("/([^A-Za-z0-9!*+\/ -])/", + array('PHPMailer', 'EncodeQ_callback'), $encoded); + break; + case 'comment': + $encoded = preg_replace_callback("/([\(\)\"])/", + array('PHPMailer', 'EncodeQ_callback'), $encoded); + break; + case 'text': + default: + /* Replace every high ascii, control =, ? and _ characters */ + $encoded = preg_replace_callback('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/', + array('PHPMailer', 'EncodeQ_callback'), $encoded); + break; + } + + /* Replace every spaces to _ (more readable than =20) */ + $encoded = str_replace(' ', '_', $encoded); + + return $encoded; + } + + /** + * Adds a string or binary attachment (non-filesystem) to the list. + * This method can be used to attach ascii or binary data, + * such as a BLOB record from a database. + * @param string $string String attachment data. + * @param string $filename Name of the attachment. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @return void + */ + function AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream') { + /* Append to $attachment array */ + $cur = count($this->attachment); + $this->attachment[$cur][0] = $string; + $this->attachment[$cur][1] = $filename; + $this->attachment[$cur][2] = $filename; + $this->attachment[$cur][3] = $encoding; + $this->attachment[$cur][4] = $type; + $this->attachment[$cur][5] = true; // isString + $this->attachment[$cur][6] = 'attachment'; + $this->attachment[$cur][7] = 0; + } + + /** + * Adds an embedded attachment. This can include images, sounds, and + * just about any other document. Make sure to set the $type to an + * image type. For JPEG images use "image/jpeg" and for GIF images + * use "image/gif". + * @param string $path Path to the attachment. + * @param string $cid Content ID of the attachment. Use this to identify + * the Id for accessing the image in an HTML form. + * @param string $name Overrides the attachment name. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @return bool + */ + function AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') { + + if(!@is_file($path)) { + $this->SetError($this->Lang('file_access') . $path); + return false; + } + + $filename = basename($path); + if($name == '') { + $name = $filename; + } + + /* Append to $attachment array */ + $cur = count($this->attachment); + $this->attachment[$cur][0] = $path; + $this->attachment[$cur][1] = $filename; + $this->attachment[$cur][2] = $name; + $this->attachment[$cur][3] = $encoding; + $this->attachment[$cur][4] = $type; + $this->attachment[$cur][5] = false; + $this->attachment[$cur][6] = 'inline'; + $this->attachment[$cur][7] = $cid; + + return true; + } + + /** + * Returns true if an inline attachment is present. + * @access private + * @return bool + */ + function InlineImageExists() { + $result = false; + for($i = 0; $i < count($this->attachment); $i++) { + if($this->attachment[$i][6] == 'inline') { + $result = true; + break; + } + } + + return $result; + } + + ///////////////////////////////////////////////// + // CLASS METHODS, MESSAGE RESET + ///////////////////////////////////////////////// + + /** + * Clears all recipients assigned in the TO array. Returns void. + * @return void + */ + function ClearAddresses() { + $this->to = array(); + } + + /** + * Clears all recipients assigned in the CC array. Returns void. + * @return void + */ + function ClearCCs() { + $this->cc = array(); + } + + /** + * Clears all recipients assigned in the BCC array. Returns void. + * @return void + */ + function ClearBCCs() { + $this->bcc = array(); + } + + /** + * Clears all recipients assigned in the ReplyTo array. Returns void. + * @return void + */ + function ClearReplyTos() { + $this->ReplyTo = array(); + } + + /** + * Clears all recipients assigned in the TO, CC and BCC + * array. Returns void. + * @return void + */ + function ClearAllRecipients() { + $this->to = array(); + $this->cc = array(); + $this->bcc = array(); + } + + /** + * Clears all previously set filesystem, string, and binary + * attachments. Returns void. + * @return void + */ + function ClearAttachments() { + $this->attachment = array(); + } + + /** + * Clears all custom headers. Returns void. + * @return void + */ + function ClearCustomHeaders() { + $this->CustomHeader = array(); + } + + ///////////////////////////////////////////////// + // CLASS METHODS, MISCELLANEOUS + ///////////////////////////////////////////////// + + /** + * Adds the error message to the error container. + * Returns void. + * @access private + * @return void + */ + function SetError($msg) { + $this->error_count++; + $this->ErrorInfo = $msg; + } + + /** + * Returns the proper RFC 822 formatted date. + * @access private + * @return string + */ + function RFCDate() { + $tz = date('Z'); + $tzs = ($tz < 0) ? '-' : '+'; + $tz = abs($tz); + $tz = (int)($tz/3600)*100 + ($tz%3600)/60; + $result = sprintf("%s %s%04d", date('D, j M Y H:i:s'), $tzs, $tz); + + return $result; + } + + /** + * Returns the appropriate server variable. Should work with both + * PHP 4.1.0+ as well as older versions. Returns an empty string + * if nothing is found. + * @access private + * @return mixed + */ + function ServerVar($varName) { + global $HTTP_SERVER_VARS; + global $HTTP_ENV_VARS; + + if(!isset($_SERVER)) { + $_SERVER = $HTTP_SERVER_VARS; + if(!isset($_SERVER['REMOTE_ADDR'])) { + $_SERVER = $HTTP_ENV_VARS; // must be Apache + } + } + + if(isset($_SERVER[$varName])) { + return $_SERVER[$varName]; + } else { + return ''; + } + } + + /** + * Returns the server hostname or 'localhost.localdomain' if unknown. + * @access private + * @return string + */ + function ServerHostname() { + if ($this->Hostname != '') { + $result = $this->Hostname; + } elseif ($this->ServerVar('SERVER_NAME') != '') { + $result = $this->ServerVar('SERVER_NAME'); + } else { + $result = 'localhost.localdomain'; + } + + return $result; + } + + /** + * Returns a message in the appropriate language. + * @access private + * @return string + */ + function Lang($key) { + if(count($this->language) < 1) { + $this->SetLanguage('en'); // set the default language + } + + if(isset($this->language[$key])) { + return $this->language[$key]; + } else { + return 'Language string failed to load: ' . $key; + } + } + + /** + * Returns true if an error occurred. + * @return bool + */ + function IsError() { + return ($this->error_count > 0); + } + + /** + * Changes every end of line from CR or LF to CRLF. + * @access private + * @return string + */ + function FixEOL($str) { + $str = str_replace("\r\n", "\n", $str); + $str = str_replace("\r", "\n", $str); + $str = str_replace("\n", $this->LE, $str); + return $str; + } + + /** + * Adds a custom header. + * @return void + */ + function AddCustomHeader($custom_header) { + $this->CustomHeader[] = explode(':', $custom_header, 2); + } + + /** + * Evaluates the message and returns modifications for inline images and backgrounds + * @access public + * @return $message + */ + function MsgHTML($message,$basedir='') { + preg_match_all("/(src|background)=\"(.*)\"/Ui", $message, $images); + if(isset($images[2])) { + foreach($images[2] as $i => $url) { + // do not change urls for absolute images (thanks to corvuscorax) + if (!preg_match('/^[A-z][A-z]*:\/\//',$url)) { + $filename = basename($url); + $directory = dirname($url); + ($directory == '.')?$directory='':''; + $cid = 'cid:' . md5($filename); + $fileParts = split("\.", $filename); + $ext = $fileParts[1]; + $mimeType = $this->_mime_types($ext); + if ( strlen($basedir) > 1 && substr($basedir,-1) != '/') { $basedir .= '/'; } + if ( strlen($directory) > 1 && substr($directory,-1) != '/') { $directory .= '/'; } + if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64',$mimeType) ) { + $message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message); + } + } + } + } + $this->IsHTML(true); + $this->Body = $message; + $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message))); + if ( !empty($textMsg) && empty($this->AltBody) ) { + $this->AltBody = html_entity_decode($textMsg); + } + if ( empty($this->AltBody) ) { + $this->AltBody = 'To view this email message, open the email in with HTML compatibility!' . "\n\n"; + } + } + + /** + * Gets the mime type of the embedded or inline image + * @access private + * @return mime type of ext + */ + function _mime_types($ext = '') { + $mimes = array( + 'ai' => 'application/postscript', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'avi' => 'video/x-msvideo', + 'bin' => 'application/macbinary', + 'bmp' => 'image/bmp', + 'class' => 'application/octet-stream', + 'cpt' => 'application/mac-compactpro', + 'css' => 'text/css', + 'dcr' => 'application/x-director', + 'dir' => 'application/x-director', + 'dll' => 'application/octet-stream', + 'dms' => 'application/octet-stream', + 'doc' => 'application/msword', + 'dvi' => 'application/x-dvi', + 'dxr' => 'application/x-director', + 'eml' => 'message/rfc822', + 'eps' => 'application/postscript', + 'exe' => 'application/octet-stream', + 'gif' => 'image/gif', + 'gtar' => 'application/x-gtar', + 'htm' => 'text/html', + 'html' => 'text/html', + 'jpe' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'hqx' => 'application/mac-binhex40', + 'js' => 'application/x-javascript', + 'lha' => 'application/octet-stream', + 'log' => 'text/plain', + 'lzh' => 'application/octet-stream', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mif' => 'application/vnd.mif', + 'mov' => 'video/quicktime', + 'movie' => 'video/x-sgi-movie', + 'mp2' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'mpe' => 'video/mpeg', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpga' => 'audio/mpeg', + 'oda' => 'application/oda', + 'pdf' => 'application/pdf', + 'php' => 'application/x-httpd-php', + 'php3' => 'application/x-httpd-php', + 'php4' => 'application/x-httpd-php', + 'phps' => 'application/x-httpd-php-source', + 'phtml' => 'application/x-httpd-php', + 'png' => 'image/png', + 'ppt' => 'application/vnd.ms-powerpoint', + 'ps' => 'application/postscript', + 'psd' => 'application/octet-stream', + 'qt' => 'video/quicktime', + 'ra' => 'audio/x-realaudio', + 'ram' => 'audio/x-pn-realaudio', + 'rm' => 'audio/x-pn-realaudio', + 'rpm' => 'audio/x-pn-realaudio-plugin', + 'rtf' => 'text/rtf', + 'rtx' => 'text/richtext', + 'rv' => 'video/vnd.rn-realvideo', + 'sea' => 'application/octet-stream', + 'shtml' => 'text/html', + 'sit' => 'application/x-stuffit', + 'so' => 'application/octet-stream', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'swf' => 'application/x-shockwave-flash', + 'tar' => 'application/x-tar', + 'text' => 'text/plain', + 'txt' => 'text/plain', + 'tgz' => 'application/x-tar', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'wav' => 'audio/x-wav', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'word' => 'application/msword', + 'xht' => 'application/xhtml+xml', + 'xhtml' => 'application/xhtml+xml', + 'xl' => 'application/excel', + 'xls' => 'application/vnd.ms-excel', + 'xml' => 'text/xml', + 'xsl' => 'text/xml', + 'zip' => 'application/zip' + ); + return ( ! isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)]; + } + + /** + * Set (or reset) Class Objects (variables) + * + * Usage Example: + * $page->set('X-Priority', '3'); + * + * @access public + * @param string $name Parameter Name + * @param mixed $value Parameter Value + * NOTE: will not work with arrays, there are no arrays to set/reset + */ + function set ( $name, $value = '' ) { + if ( isset($this->$name) ) { + $this->$name = $value; + } else { + $this->SetError('Cannot set or reset variable ' . $name); + return false; + } + } + + /** + * Read a file from a supplied filename and return it. + * + * @access public + * @param string $filename Parameter File Name + */ + function getFile($filename) { + $return = ''; + if ($fp = fopen($filename, 'rb')) { + while (!feof($fp)) { + $return .= fread($fp, 1024); + } + fclose($fp); + return $return; + } else { + return false; + } + } + + /** + * Strips newlines to prevent header injection. + * @access private + * @param string $str String + * @return string + */ + function SecureHeader($str) { + $str = trim($str); + $str = str_replace("\r", "", $str); + $str = str_replace("\n", "", $str); + return $str; + } + + /** + * Set the private key file and password to sign the message. + * + * @access public + * @param string $key_filename Parameter File Name + * @param string $key_pass Password for private key + */ + function Sign($cert_filename, $key_filename, $key_pass) { + $this->sign_cert_file = $cert_filename; + $this->sign_key_file = $key_filename; + $this->sign_key_pass = $key_pass; + } + +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.passwordhash.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.passwordhash.php new file mode 100644 index 0000000..c26cf57 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.passwordhash.php @@ -0,0 +1,258 @@ + in 2004-2006 and placed in +# the public domain. +# +# There's absolutely no warranty. +# +# Please be sure to update the Version line if you edit this file in any way. +# It is suggested that you leave the main version number intact, but indicate +# your project name (after the slash) and add your own revision information. +# +# Please do not change the "private" password hashing method implemented in +# here, thereby making your hashes incompatible. However, if you must, please +# change the hash type identifier (the "$P$") to something different. +# +# Obviously, since this code is in the public domain, the above are not +# requirements (there can be none), but merely suggestions. +# + +/** + * Portable PHP password hashing framework. + * + * @package phpass + * @version 0.2 / genuine. + * @link http://www.openwall.com/phpass/ + * @since 2.5 + */ +class PasswordHash { + var $itoa64; + var $iteration_count_log2; + var $portable_hashes; + var $random_state; + + function PasswordHash($iteration_count_log2, $portable_hashes) + { + $this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; + + if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31) + $iteration_count_log2 = 8; + $this->iteration_count_log2 = $iteration_count_log2; + + $this->portable_hashes = $portable_hashes; + + $this->random_state = microtime() . uniqid(rand(), TRUE); // removed getmypid() for compability reasons + } + + function get_random_bytes($count) + { + $output = ''; + if ( @is_readable('/dev/urandom') && + ($fh = @fopen('/dev/urandom', 'rb'))) { + $output = fread($fh, $count); + fclose($fh); + } + + if (strlen($output) < $count) { + $output = ''; + for ($i = 0; $i < $count; $i += 16) { + $this->random_state = + md5(microtime() . $this->random_state); + $output .= + pack('H*', md5($this->random_state)); + } + $output = substr($output, 0, $count); + } + + return $output; + } + + function encode64($input, $count) + { + $output = ''; + $i = 0; + do { + $value = ord($input[$i++]); + $output .= $this->itoa64[$value & 0x3f]; + if ($i < $count) + $value |= ord($input[$i]) << 8; + $output .= $this->itoa64[($value >> 6) & 0x3f]; + if ($i++ >= $count) + break; + if ($i < $count) + $value |= ord($input[$i]) << 16; + $output .= $this->itoa64[($value >> 12) & 0x3f]; + if ($i++ >= $count) + break; + $output .= $this->itoa64[($value >> 18) & 0x3f]; + } while ($i < $count); + + return $output; + } + + function gensalt_private($input) + { + $output = '$P$'; + $output .= $this->itoa64[min($this->iteration_count_log2 + + ((PHP_VERSION >= '5') ? 5 : 3), 30)]; + $output .= $this->encode64($input, 6); + + return $output; + } + + function crypt_private($password, $setting) + { + $output = '*0'; + if (substr($setting, 0, 2) == $output) + $output = '*1'; + + if (substr($setting, 0, 3) != '$P$') + return $output; + + $count_log2 = strpos($this->itoa64, $setting[3]); + if ($count_log2 < 7 || $count_log2 > 30) + return $output; + + $count = 1 << $count_log2; + + $salt = substr($setting, 4, 8); + if (strlen($salt) != 8) + return $output; + + # We're kind of forced to use MD5 here since it's the only + # cryptographic primitive available in all versions of PHP + # currently in use. To implement our own low-level crypto + # in PHP would result in much worse performance and + # consequently in lower iteration counts and hashes that are + # quicker to crack (by non-PHP code). + if (PHP_VERSION >= '5') { + $hash = md5($salt . $password, TRUE); + do { + $hash = md5($hash . $password, TRUE); + } while (--$count); + } else { + $hash = pack('H*', md5($salt . $password)); + do { + $hash = pack('H*', md5($hash . $password)); + } while (--$count); + } + + $output = substr($setting, 0, 12); + $output .= $this->encode64($hash, 16); + + return $output; + } + + function gensalt_extended($input) + { + $count_log2 = min($this->iteration_count_log2 + 8, 24); + # This should be odd to not reveal weak DES keys, and the + # maximum valid value is (2**24 - 1) which is odd anyway. + $count = (1 << $count_log2) - 1; + + $output = '_'; + $output .= $this->itoa64[$count & 0x3f]; + $output .= $this->itoa64[($count >> 6) & 0x3f]; + $output .= $this->itoa64[($count >> 12) & 0x3f]; + $output .= $this->itoa64[($count >> 18) & 0x3f]; + + $output .= $this->encode64($input, 3); + + return $output; + } + + function gensalt_blowfish($input) + { + # This one needs to use a different order of characters and a + # different encoding scheme from the one in encode64() above. + # We care because the last character in our encoded string will + # only represent 2 bits. While two known implementations of + # bcrypt will happily accept and correct a salt string which + # has the 4 unused bits set to non-zero, we do not want to take + # chances and we also do not want to waste an additional byte + # of entropy. + $itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + + $output = '$2a$'; + $output .= chr(ord('0') + $this->iteration_count_log2 / 10); + $output .= chr(ord('0') + $this->iteration_count_log2 % 10); + $output .= '$'; + + $i = 0; + do { + $c1 = ord($input[$i++]); + $output .= $itoa64[$c1 >> 2]; + $c1 = ($c1 & 0x03) << 4; + if ($i >= 16) { + $output .= $itoa64[$c1]; + break; + } + + $c2 = ord($input[$i++]); + $c1 |= $c2 >> 4; + $output .= $itoa64[$c1]; + $c1 = ($c2 & 0x0f) << 2; + + $c2 = ord($input[$i++]); + $c1 |= $c2 >> 6; + $output .= $itoa64[$c1]; + $output .= $itoa64[$c2 & 0x3f]; + } while (1); + + return $output; + } + + function HashPassword($password) + { + $random = ''; + + if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) { + $random = $this->get_random_bytes(16); + $hash = + crypt($password, $this->gensalt_blowfish($random)); + if (strlen($hash) == 60) + return $hash; + } + + if (CRYPT_EXT_DES == 1 && !$this->portable_hashes) { + if (strlen($random) < 3) + $random = $this->get_random_bytes(3); + $hash = + crypt($password, $this->gensalt_extended($random)); + if (strlen($hash) == 20) + return $hash; + } + + if (strlen($random) < 6) + $random = $this->get_random_bytes(6); + $hash = + $this->crypt_private($password, + $this->gensalt_private($random)); + if (strlen($hash) == 34) + return $hash; + + # Returning '*' on error is safe here, but would _not_ be safe + # in a crypt(3)-like function used _both_ for generating new + # hashes and for validating passwords against existing hashes. + return '*'; + } + + function CheckPassword($password, $stored_hash) + { + $hash = $this->crypt_private($password, $stored_hash); + if ($hash[0] == '*') + $hash = crypt($password, $stored_hash); + + return $hash == $stored_hash; + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-ajax-response.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-ajax-response.php new file mode 100644 index 0000000..ee25285 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-ajax-response.php @@ -0,0 +1,138 @@ +add($args); + } + + /** + * Append to XML response based on given arguments. + * + * The arguments that can be passed in the $args parameter are below. It is + * also possible to pass a WP_Error object in either the 'id' or 'data' + * argument. The parameter isn't actually optional, content should be given + * in order to send the correct response. + * + * 'what' argument is a string that is the XMLRPC response type. + * 'action' argument is a boolean or string that acts like a nonce. + * 'id' argument can be WP_Error or an integer. + * 'old_id' argument is false by default or an integer of the previous ID. + * 'position' argument is an integer or a string with -1 = top, 1 = bottom, + * html ID = after, -html ID = before. + * 'data' argument is a string with the content or message. + * 'supplemental' argument is an array of strings that will be children of + * the supplemental element. + * + * @since 2.1.0 + * + * @param string|array $args Override defaults. + * @return string XML response. + */ + function add( $args = '' ) { + $defaults = array( + 'what' => 'object', 'action' => false, + 'id' => '0', 'old_id' => false, + 'position' => 1, + 'data' => '', 'supplemental' => array() + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + $position = preg_replace( '/[^a-z0-9:_-]/i', '', $position ); + + if ( is_wp_error($id) ) { + $data = $id; + $id = 0; + } + + $response = ''; + if ( is_wp_error($data) ) { + foreach ( (array) $data->get_error_codes() as $code ) { + $response .= "get_error_message($code) . "]]>"; + if ( !$error_data = $data->get_error_data($code) ) + continue; + $class = ''; + if ( is_object($error_data) ) { + $class = ' class="' . get_class($error_data) . '"'; + $error_data = get_object_vars($error_data); + } + + $response .= ""; + + if ( is_scalar($error_data) ) { + $response .= ""; + } elseif ( is_array($error_data) ) { + foreach ( $error_data as $k => $v ) + $response .= "<$k>"; + } + + $response .= ""; + } + } else { + $response = ""; + } + + $s = ''; + if ( is_array($supplemental) ) { + foreach ( $supplemental as $k => $v ) + $s .= "<$k>"; + $s = "$s"; + } + + if ( false === $action ) + $action = $_POST['action']; + + $x = ''; + $x .= ""; // The action attribute in the xml output is formatted like a nonce action + $x .= "<$what id='$id' " . ( false === $old_id ? '' : "old_id='$old_id' " ) . "position='$position'>"; + $x .= $response; + $x .= $s; + $x .= ""; + $x .= ""; + + $this->responses[] = $x; + return $x; + } + + /** + * Display XML formatted responses. + * + * Sets the content type header to text/xml. + * + * @since 2.1.0 + */ + function send() { + header('Content-Type: text/xml'); + echo ""; + foreach ( (array) $this->responses as $response ) + echo $response; + echo ''; + die(); + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-auth.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-auth.php new file mode 100644 index 0000000..a121e75 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-auth.php @@ -0,0 +1,305 @@ +__construct( $db, $users, $cookies ); + } + + /** + * @param array $cookies Array indexed by internal name of cookie. Values are arrays of array defining cookie parameters. + * $cookies = array( + * 'auth' => array( + * 0 => array( + * 'domain' => (string) cookie domain + * 'path' => (string) cookie path + * 'name' => (string) cookie name + * 'secure' => (bool) restrict cookie to HTTPS only + * ) + * ) + * ); + * + * At least one cookie is required. Give it an internal name of 'auth'. + * + * Suggested cookie structure: + * logged_in: whether or not a user is logged in. Send everywhere. + * auth: used to authorize user's actions. Send only to domains/paths that need it (e.g. wp-admin/) + * secure_auth: used to authorize user's actions. Send only to domains/paths that need it and only over HTTPS + * + * You should be very careful when setting cookie domain to ensure that it always follows the rules set out in + * the {@link http://curl.haxx.se/rfc/cookie_spec.html Set Cookie spec}. In most cases it is best to leave cookie + * set to false and allow for user configuration to define a cookie domain in a configuration file when + * cross subdomain cookies are required. + * + * @link + */ + function __construct( &$db, &$users, $cookies ) + { + $this->db =& $db; + $this->users =& $users; + + $cookies = wp_parse_args( $cookies, array( 'auth' => null ) ); + $_cookies = array(); + foreach ( $cookies as $_scheme => $_scheme_cookies ) { + foreach ( $_scheme_cookies as $_scheme_cookie ) { + $_cookies[$_scheme][] = wp_parse_args( $_scheme_cookie, array( 'domain' => null, 'path' => null, 'name' => '' ) ); + } + unset( $_scheme_cookie ); + } + unset( $_scheme, $_scheme_cookies ); + $this->cookies = $_cookies; + unset( $_cookies ); + } + + /** + * Changes the current user by ID or name + * + * Set $id to null and specify a name if you do not know a user's ID + * + * Some WordPress functionality is based on the current user and + * not based on the signed in user. Therefore, it opens the ability + * to edit and perform actions on users who aren't signed in. + * + * @since 2.0.4 + * @uses do_action() Calls 'set_current_user' hook after setting the current user. + * + * @param int $id User ID + * @param string $name User's username + * @return BP_User Current user User object + */ + function set_current_user( $user_id ) + { + $user = $this->users->get_user( $user_id ); + if ( !$user || is_wp_error( $user ) ) { + $this->current = 0; + return $this->current; + } + + $user_id = $user->ID; + + if ( isset( $this->current->ID ) && $user_id == $this->current->ID ) { + return $this->current; + } + + if ( class_exists( 'BP_User' ) ) { + $this->current = new BP_User( $user_id ); + } else { + $this->current =& $user; + } + + // WP add_action( 'set_current_user', 'setup_userdata', 1 ); + + do_action( 'set_current_user', $user_id ); + + return $this->current; + } + + /** + * Populate variables with information about the currently logged in user + * + * Will set the current user, if the current user is not set. The current + * user will be set to the logged in person. If no user is logged in, then + * it will set the current user to 0, which is invalid and won't have any + * permissions. + * + * @since 0.71 + * @uses $current_user Checks if the current user is set + * @uses wp_validate_auth_cookie() Retrieves current logged in user. + * + * @return bool|null False on XMLRPC Request and invalid auth cookie. Null when current user set + */ + function get_current_user() + { + if ( !empty( $this->current ) ) { + return $this->current; + } + + if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) { + $this->set_current_user( 0 ); + } elseif ( $user_id = $this->validate_auth_cookie( null, 'logged_in' ) ) { + $this->set_current_user( $user_id ); + } else { + $this->set_current_user( 0 ); + } + + return $this->current; + } + + /** + * Validates authentication cookie + * + * The checks include making sure that the authentication cookie + * is set and pulling in the contents (if $cookie is not used). + * + * Makes sure the cookie is not expired. Verifies the hash in + * cookie is what is should be and compares the two. + * + * @since 2.5 + * + * @param string $cookie Optional. If used, will validate contents instead of cookie's + * @return bool|int False if invalid cookie, User ID if valid. + */ + function validate_auth_cookie( $cookie = null, $scheme = 'auth' ) + { + if ( empty( $cookie ) ) { + foreach ( $this->cookies[$scheme] as $_scheme_cookie ) { + // Take the first cookie of type scheme that exists + if ( !empty( $_COOKIE[$_scheme_cookie['name']] ) ) { + $cookie = $_COOKIE[$_scheme_cookie['name']]; + break; + } + } + } + + if ( !$cookie ) { + return false; + } + + $cookie_elements = explode( '|', $cookie ); + if ( count( $cookie_elements ) != 3 ) { + do_action( 'auth_cookie_malformed', $cookie, $scheme ); + return false; + } + + list( $username, $expiration, $hmac ) = $cookie_elements; + + $expired = $expiration; + + // Allow a grace period for POST and AJAX requests + if ( defined( 'DOING_AJAX' ) || 'POST' == $_SERVER['REQUEST_METHOD'] ) { + $expired += 3600; + } + + if ( $expired < time() ) { + do_action( 'auth_cookie_expired', $cookie_elements ); + return false; + } + + $user = $this->users->get_user( $username, array( 'by' => 'login' ) ); + if ( !$user || is_wp_error( $user ) ) { + do_action( 'auth_cookie_bad_username', $cookie_elements ); + return $user; + } + + $pass_frag = ''; + if ( 1 < WP_AUTH_COOKIE_VERSION ) { + $pass_frag = substr( $user->user_pass, 8, 4 ); + } + + $key = call_user_func( backpress_get_option( 'hash_function_name' ), $username . $pass_frag . '|' . $expiration, $scheme ); + $hash = hash_hmac( 'md5', $username . '|' . $expiration, $key ); + + if ( $hmac != $hash ) { + do_action( 'auth_cookie_bad_hash', $cookie_elements ); + return false; + } + + do_action( 'auth_cookie_valid', $cookie_elements, $user ); + + return $user->ID; + } + + /** + * Generate authentication cookie contents + * + * @since 2.5 + * @uses apply_filters() Calls 'auth_cookie' hook on $cookie contents, User ID + * and expiration of cookie. + * + * @param int $user_id User ID + * @param int $expiration Cookie expiration in seconds + * @return string Authentication cookie contents + */ + function generate_auth_cookie( $user_id, $expiration, $scheme = 'auth' ) + { + $user = $this->users->get_user( $user_id ); + if ( !$user || is_wp_error( $user ) ) { + return $user; + } + + $pass_frag = ''; + if ( 1 < WP_AUTH_COOKIE_VERSION ) { + $pass_frag = substr( $user->user_pass, 8, 4 ); + } + + $key = call_user_func( backpress_get_option( 'hash_function_name' ), $user->user_login . $pass_frag . '|' . $expiration, $scheme ); + $hash = hash_hmac('md5', $user->user_login . '|' . $expiration, $key); + + $cookie = $user->user_login . '|' . $expiration . '|' . $hash; + + return apply_filters( 'auth_cookie', $cookie, $user_id, $expiration, $scheme ); + } + + /** + * Sets the authentication cookies based User ID + * + * The $remember parameter increases the time that the cookie will + * be kept. The default the cookie is kept without remembering is + * two days. When $remember is set, the cookies will be kept for + * 14 days or two weeks. + * + * @since 2.5 + * + * @param int $user_id User ID + * @param int $expiration the UNIX time after which the cookie's authentication token is no longer valid + * @param int $expire the UNIX time at which the cookie expires + * @param int $scheme name of the + */ + function set_auth_cookie( $user_id, $expiration = 0, $expire = 0, $scheme = 'auth' ) + { + if ( !isset( $this->cookies[$scheme] ) ) { + return; + } + + if ( !$expiration = absint( $expiration ) ) { + $expiration = time() + 172800; // 2 days + } + + $expire = absint( $expire ); + + foreach ( $this->cookies[$scheme] as $_cookie ) { + $cookie = $this->generate_auth_cookie( $user_id, $expiration, $scheme ); + if ( is_wp_error( $cookie ) ) { + return $cookie; + } + + do_action( 'set_' . $scheme . '_cookie', $cookie, $expire, $expiration, $user_id, $scheme ); + + $domain = $_cookie['domain']; + $secure = isset($_cookie['secure']) ? (bool) $_cookie['secure'] : false; + + // Set httponly if the php version is >= 5.2.0 + if ( version_compare( phpversion(), '5.2.0', 'ge' ) ) { + backpress_set_cookie( $_cookie['name'], $cookie, $expire, $_cookie['path'], $domain, $secure, true ); + } else { + $domain = ( empty( $domain ) ) ? $domain : $domain . '; HttpOnly'; + backpress_set_cookie( $_cookie['name'], $cookie, $expire, $_cookie['path'], $domain, $secure ); + } + } + unset( $_cookie ); + } + + /** + * Deletes all of the cookies associated with authentication + * + * @since 2.5 + */ + function clear_auth_cookie() + { + do_action( 'clear_auth_cookie' ); + foreach ( $this->cookies as $_scheme => $_scheme_cookies ) { + foreach ( $_scheme_cookies as $_cookie ) { + backpress_set_cookie( $_cookie['name'], ' ', time() - 31536000, $_cookie['path'], $_cookie['domain'] ); + } + unset( $_cookie ); + } + unset( $_scheme, $_scheme_cookies ); + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-dependencies.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-dependencies.php new file mode 100644 index 0000000..ea607de --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-dependencies.php @@ -0,0 +1,243 @@ +queue : (array) $handles; + $this->all_deps( $handles ); + + foreach( $this->to_do as $key => $handle ) { + if ( !in_array($handle, $this->done) && isset($this->registered[$handle]) ) { + + if ( ! $this->registered[$handle]->src ) { // Defines a group. + $this->done[] = $handle; + continue; + } + + if ( $this->do_item( $handle, $group ) ) + $this->done[] = $handle; + + unset( $this->to_do[$key] ); + } + } + + return $this->done; + } + + function do_item( $handle ) { + return isset($this->registered[$handle]); + } + + /** + * Determines dependencies + * + * Recursively builds array of items to process taking dependencies into account. Does NOT catch infinite loops. + * + + * @param mixed handles Accepts (string) dep name or (array of strings) dep names + * @param bool recursion Used internally when function calls itself + */ + function all_deps( $handles, $recursion = false, $group = false ) { + if ( !$handles = (array) $handles ) + return false; + + foreach ( $handles as $handle ) { + $handle_parts = explode('?', $handle); + $handle = $handle_parts[0]; + $queued = in_array($handle, $this->to_do, true); + + if ( in_array($handle, $this->done, true) ) // Already done + continue; + + $moved = $this->set_group( $handle, $recursion, $group ); + + if ( $queued && !$moved ) // already queued and in the right group + continue; + + $keep_going = true; + if ( !isset($this->registered[$handle]) ) + $keep_going = false; // Script doesn't exist + elseif ( $this->registered[$handle]->deps && array_diff($this->registered[$handle]->deps, array_keys($this->registered)) ) + $keep_going = false; // Script requires deps which don't exist (not a necessary check. efficiency?) + elseif ( $this->registered[$handle]->deps && !$this->all_deps( $this->registered[$handle]->deps, true, $group ) ) + $keep_going = false; // Script requires deps which don't exist + + if ( !$keep_going ) { // Either script or its deps don't exist. + if ( $recursion ) + return false; // Abort this branch. + else + continue; // We're at the top level. Move on to the next one. + } + + if ( $queued ) // Already grobbed it and its deps + continue; + + if ( isset($handle_parts[1]) ) + $this->args[$handle] = $handle_parts[1]; + + $this->to_do[] = $handle; + } + + return true; + } + + /** + * Adds item + * + * Adds the item only if no item of that name already exists + * + * @param string handle Script name + * @param string src Script url + * @param array deps (optional) Array of script names on which this script depends + * @param string ver (optional) Script version (used for cache busting) + * @return array Hierarchical array of dependencies + */ + function add( $handle, $src, $deps = array(), $ver = false, $args = null ) { + if ( isset($this->registered[$handle]) ) + return false; + $this->registered[$handle] = new _WP_Dependency( $handle, $src, $deps, $ver, $args ); + return true; + } + + /** + * Adds extra data + * + * Adds data only if script has already been added + * + * @param string handle Script name + * @param string data_name Name of object in which to store extra data + * @param array data Array of extra data + * @return bool success + */ + function add_data( $handle, $data_name, $data ) { + if ( !isset($this->registered[$handle]) ) + return false; + return $this->registered[$handle]->add_data( $data_name, $data ); + } + + function remove( $handles ) { + foreach ( (array) $handles as $handle ) + unset($this->registered[$handle]); + } + + function enqueue( $handles ) { + foreach ( (array) $handles as $handle ) { + $handle = explode('?', $handle); + if ( !in_array($handle[0], $this->queue) && isset($this->registered[$handle[0]]) ) { + $this->queue[] = $handle[0]; + if ( isset($handle[1]) ) + $this->args[$handle[0]] = $handle[1]; + } + } + } + + function dequeue( $handles ) { + foreach ( (array) $handles as $handle ) { + $handle = explode('?', $handle); + $key = array_search($handle[0], $this->queue); + if ( false !== $key ) { + unset($this->queue[$key]); + unset($this->args[$handle[0]]); + } + } + } + + function query( $handle, $list = 'registered' ) { // registered, queue, done, to_do + switch ( $list ) : + case 'registered': + case 'scripts': // back compat + if ( isset($this->registered[$handle]) ) + return $this->registered[$handle]; + break; + case 'to_print': // back compat + case 'printed': // back compat + if ( 'to_print' == $list ) + $list = 'to_do'; + else + $list = 'printed'; + default: + if ( in_array($handle, $this->$list) ) + return true; + break; + endswitch; + return false; + } + + function set_group( $handle, $recursion, $group ) { + $group = (int) $group; + + if ( $recursion ) + $group = min($this->group, $group); + else + $this->group = $group; + + if ( isset($this->groups[$handle]) && $this->groups[$handle] <= $group ) + return false; + + $this->groups[$handle] = $group; + return true; + } + +} + +class _WP_Dependency { + var $handle; + var $src; + var $deps = array(); + var $ver = false; + var $args = null; + + var $extra = array(); + + function _WP_Dependency() { + @list($this->handle, $this->src, $this->deps, $this->ver, $this->args) = func_get_args(); + if ( !is_array($this->deps) ) + $this->deps = array(); + } + + function add_data( $name, $data ) { + if ( !is_scalar($name) ) + return false; + $this->extra[$name] = $data; + return true; + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-error.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-error.php new file mode 100644 index 0000000..e77d07e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-error.php @@ -0,0 +1,204 @@ +errors[$code][] = $message; + + if ( ! empty($data) ) + $this->error_data[$code] = $data; + } + + /** + * Retrieve all error codes. + * + * @since 2.1.0 + * @access public + * + * @return array List of error codes, if avaiable. + */ + function get_error_codes() { + if ( empty($this->errors) ) + return array(); + + return array_keys($this->errors); + } + + /** + * Retrieve first error code available. + * + * @since 2.1.0 + * @access public + * + * @return string|int Empty string, if no error codes. + */ + function get_error_code() { + $codes = $this->get_error_codes(); + + if ( empty($codes) ) + return ''; + + return $codes[0]; + } + + /** + * Retrieve all error messages or error messages matching code. + * + * @since 2.1.0 + * + * @param string|int $code Optional. Retrieve messages matching code, if exists. + * @return array Error strings on success, or empty array on failure (if using codee parameter). + */ + function get_error_messages($code = '') { + // Return all messages if no code specified. + if ( empty($code) ) { + $all_messages = array(); + foreach ( (array) $this->errors as $code => $messages ) + $all_messages = array_merge($all_messages, $messages); + + return $all_messages; + } + + if ( isset($this->errors[$code]) ) + return $this->errors[$code]; + else + return array(); + } + + /** + * Get single error message. + * + * This will get the first message available for the code. If no code is + * given then the first code available will be used. + * + * @since 2.1.0 + * + * @param string|int $code Optional. Error code to retrieve message. + * @return string + */ + function get_error_message($code = '') { + if ( empty($code) ) + $code = $this->get_error_code(); + $messages = $this->get_error_messages($code); + if ( empty($messages) ) + return ''; + return $messages[0]; + } + + /** + * Retrieve error data for error code. + * + * @since 2.1.0 + * + * @param string|int $code Optional. Error code. + * @return mixed Null, if no errors. + */ + function get_error_data($code = '') { + if ( empty($code) ) + $code = $this->get_error_code(); + + if ( isset($this->error_data[$code]) ) + return $this->error_data[$code]; + return null; + } + + /** + * Append more error messages to list of error messages. + * + * @since 2.1.0 + * @access public + * + * @param string|int $code Error code. + * @param string $message Error message. + * @param mixed $data Optional. Error data. + */ + function add($code, $message, $data = '') { + $this->errors[$code][] = $message; + if ( ! empty($data) ) + $this->error_data[$code] = $data; + } + + /** + * Add data for error code. + * + * The error code can only contain one error data. + * + * @since 2.1.0 + * + * @param mixed $data Error data. + * @param string|int $code Error code. + */ + function add_data($data, $code = '') { + if ( empty($code) ) + $code = $this->get_error_code(); + + $this->error_data[$code] = $data; + } +} + +/** + * Check whether variable is a WordPress Error. + * + * Looks at the object and if a WP_Error class. Does not check to see if the + * parent is also WP_Error, so can't inherit WP_Error and still use this + * function. + * + * @since 2.1.0 + * + * @param mixed $thing Check if unknown variable is WordPress Error object. + * @return bool True, if WP_Error. False, if not WP_Error. + */ +function is_wp_error($thing) { + if ( is_object($thing) && is_a($thing, 'WP_Error') ) + return true; + return false; +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-http-ixr-client.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-http-ixr-client.php new file mode 100644 index 0000000..6a1b2f8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-http-ixr-client.php @@ -0,0 +1,97 @@ +scheme = $bits['scheme']; + $this->server = $bits['host']; + $this->port = isset($bits['port']) ? $bits['port'] : 80; + $this->path = isset($bits['path']) ? $bits['path'] : '/'; + + // Make absolutely sure we have a path + if (!$this->path) { + $this->path = '/'; + } + } else { + $this->scheme = 'http'; + $this->server = $server; + $this->path = $path; + $this->port = $port; + } + $this->useragent = 'The Incutio XML-RPC PHP Library'; + $this->timeout = $timeout; + } + + function query() + { + $args = func_get_args(); + $method = array_shift($args); + $request = new IXR_Request($method, $args); + $xml = $request->getXml(); + + $url = $this->scheme . '://' . $this->server . ':' . $this->port . $this->path; + $args = array( + 'headers' => array('Content-Type' => 'text/xml'), + 'user-agent' => $this->useragent, + 'body' => $xml, + ); + + // Merge Custom headers ala #8145 + foreach ( $this->headers as $header => $value ) + $args['headers'][$header] = $value; + + if ( $this->timeout !== false ) + $args['timeout'] = $this->timeout; + + // Now send the request + if ($this->debug) { + echo '
      '.htmlspecialchars($xml)."\n
      \n\n"; + } + + $response = wp_remote_post($url, $args); + + if ( is_wp_error($response) ) { + $errno = $response->get_error_code(); + $errorstr = $response->get_error_message(); + $this->error = new IXR_Error(-32300, "transport error: $errno $errstr"); + return false; + } + + $code = $response['response']['code']; + if ( $code != 200 ) { + $this->error = new IXR_Error(-32301, "transport error - HTTP status code was not 200 ($code)"); return false; + } + + if ($this->debug) { + echo '
      '.htmlspecialchars($response['body'])."\n
      \n\n"; + } + + // Now parse what we've got back + $this->message = new IXR_Message( $response['body'] ); + if (!$this->message->parse()) { + // XML error + $this->error = new IXR_Error(-32700, 'parse error. not well formed'); + return false; + } + + // Is the message a fault? + if ($this->message->messageType == 'fault') { + $this->error = new IXR_Error($this->message->faultCode, $this->message->faultString); + return false; + } + + // Message must be OK + return true; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-http.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-http.php new file mode 100644 index 0000000..6916afb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-http.php @@ -0,0 +1,2052 @@ + + */ + +/** + * WordPress HTTP Class for managing HTTP Transports and making HTTP requests. + * + * This class is called for the functionality of making HTTP requests and should replace Snoopy + * functionality, eventually. There is no available functionality to add HTTP transport + * implementations, since most of the HTTP transports are added and available for use. + * + * The exception is that cURL is not available as a transport and lacking an implementation. It will + * be added later and should be a patch on the WordPress Trac. + * + * There are no properties, because none are needed and for performance reasons. Some of the + * functions are static and while they do have some overhead over functions in PHP4, the purpose is + * maintainability. When PHP5 is finally the requirement, it will be easy to add the static keyword + * to the code. It is not as easy to convert a function to a method after enough code uses the old + * way. + * + * Debugging includes several actions, which pass different variables for debugging the HTTP API. + * + * http_transport_get_debug - gives working, nonblocking, and blocking transports. + * + * http_transport_post_debug - gives working, nonblocking, and blocking transports. + * + * @package WordPress + * @subpackage HTTP + * @since 2.7.0 + */ +class WP_Http { + + /** + * PHP4 style Constructor - Calls PHP5 Style Constructor + * + * @since 2.7.0 + * @return WP_Http + */ + function WP_Http() { + $this->__construct(); + } + + /** + * PHP5 style Constructor - Setup available transport if not available. + * + * PHP4 does not have the 'self' keyword and since WordPress supports PHP4, + * the class needs to be used for the static call. + * + * The transport are setup to save time. This should only be called once, so + * the overhead should be fine. + * + * @since 2.7.0 + * @return WP_Http + */ + function __construct() { + WP_Http::_getTransport(); + WP_Http::_postTransport(); + } + + /** + * Tests the WordPress HTTP objects for an object to use and returns it. + * + * Tests all of the objects and returns the object that passes. Also caches + * that object to be used later. + * + * The order for the GET/HEAD requests are HTTP Extension, FSockopen Streams, + * Fopen, and finally cURL. Whilst Fsockopen has the highest overhead, Its + * used 2nd due to high compatibility with most hosts, The HTTP Extension is + * tested first due to hosts which have it enabled, are likely to work + * correctly with it. + * + * There are currently issues with "localhost" not resolving correctly with + * DNS. This may cause an error "failed to open stream: A connection attempt + * failed because the connected party did not properly respond after a + * period of time, or established connection failed because connected host + * has failed to respond." + * + * @since 2.7.0 + * @access private + * + * @param array $args Request args, default us an empty array + * @return object|null Null if no transports are available, HTTP transport object. + */ + function &_getTransport( $args = array() ) { + static $working_transport, $blocking_transport, $nonblocking_transport; + + if ( is_null($working_transport) ) { + if ( true === WP_Http_ExtHttp::test($args) ) { + $working_transport['exthttp'] = new WP_Http_ExtHttp(); + $blocking_transport[] = &$working_transport['exthttp']; + } else if ( true === WP_Http_Fsockopen::test($args) ) { + $working_transport['fsockopen'] = new WP_Http_Fsockopen(); + $blocking_transport[] = &$working_transport['fsockopen']; + } else if ( true === WP_Http_Streams::test($args) ) { + $working_transport['streams'] = new WP_Http_Streams(); + $blocking_transport[] = &$working_transport['streams']; + } else if ( true === WP_Http_Fopen::test($args) ) { + $working_transport['fopen'] = new WP_Http_Fopen(); + $blocking_transport[] = &$working_transport['fopen']; + } else if ( true === WP_Http_Curl::test($args) ) { + $working_transport['curl'] = new WP_Http_Curl(); + $blocking_transport[] = &$working_transport['curl']; + } + + foreach ( array('curl', 'streams', 'fopen', 'fsockopen', 'exthttp') as $transport ) { + if ( isset($working_transport[$transport]) ) + $nonblocking_transport[] = &$working_transport[$transport]; + } + } + + if ( has_filter('http_transport_get_debug') ) + do_action('http_transport_get_debug', $working_transport, $blocking_transport, $nonblocking_transport); + + if ( isset($args['blocking']) && !$args['blocking'] ) + return $nonblocking_transport; + else + return $blocking_transport; + } + + /** + * Tests the WordPress HTTP objects for an object to use and returns it. + * + * Tests all of the objects and returns the object that passes. Also caches + * that object to be used later. This is for posting content to a URL and + * is used when there is a body. The plain Fopen Transport can not be used + * to send content, but the streams transport can. This is a limitation that + * is addressed here, by just not including that transport. + * + * @since 2.7.0 + * @access private + * + * @param array $args Request args, default us an empty array + * @return object|null Null if no transports are available, HTTP transport object. + */ + function &_postTransport( $args = array() ) { + static $working_transport, $blocking_transport, $nonblocking_transport; + + if ( is_null($working_transport) ) { + if ( true === WP_Http_ExtHttp::test($args) ) { + $working_transport['exthttp'] = new WP_Http_ExtHttp(); + $blocking_transport[] = &$working_transport['exthttp']; + } else if ( true === WP_Http_Fsockopen::test($args) ) { + $working_transport['fsockopen'] = new WP_Http_Fsockopen(); + $blocking_transport[] = &$working_transport['fsockopen']; + } else if ( true === WP_Http_Streams::test($args) ) { + $working_transport['streams'] = new WP_Http_Streams(); + $blocking_transport[] = &$working_transport['streams']; + } else if ( true === WP_Http_Curl::test($args) ) { + $working_transport['curl'] = new WP_Http_Curl(); + $blocking_transport[] = &$working_transport['curl']; + } + + foreach ( array('curl', 'streams', 'fsockopen', 'exthttp') as $transport ) { + if ( isset($working_transport[$transport]) ) + $nonblocking_transport[] = &$working_transport[$transport]; + } + } + + if ( has_filter('http_transport_post_debug') ) + do_action('http_transport_post_debug', $working_transport, $blocking_transport, $nonblocking_transport); + + if ( isset($args['blocking']) && !$args['blocking'] ) + return $nonblocking_transport; + else + return $blocking_transport; + } + + /** + * Send a HTTP request to a URI. + * + * The body and headers are part of the arguments. The 'body' argument is for the body and will + * accept either a string or an array. The 'headers' argument should be an array, but a string + * is acceptable. If the 'body' argument is an array, then it will automatically be escaped + * using http_build_query(). + * + * The only URI that are supported in the HTTP Transport implementation are the HTTP and HTTPS + * protocols. HTTP and HTTPS are assumed so the server might not know how to handle the send + * headers. Other protocols are unsupported and most likely will fail. + * + * The defaults are 'method', 'timeout', 'redirection', 'httpversion', 'blocking' and + * 'user-agent'. + * + * Accepted 'method' values are 'GET', 'POST', and 'HEAD', some transports technically allow + * others, but should not be assumed. The 'timeout' is used to sent how long the connection + * should stay open before failing when no response. 'redirection' is used to track how many + * redirects were taken and used to sent the amount for other transports, but not all transports + * accept setting that value. + * + * The 'httpversion' option is used to sent the HTTP version and accepted values are '1.0', and + * '1.1' and should be a string. Version 1.1 is not supported, because of chunk response. The + * 'user-agent' option is the user-agent and is used to replace the default user-agent, which is + * 'WordPress/WP_Version', where WP_Version is the value from $wp_version. + * + * 'blocking' is the default, which is used to tell the transport, whether it should halt PHP + * while it performs the request or continue regardless. Actually, that isn't entirely correct. + * Blocking mode really just means whether the fread should just pull what it can whenever it + * gets bytes or if it should wait until it has enough in the buffer to read or finishes reading + * the entire content. It doesn't actually always mean that PHP will continue going after making + * the request. + * + * @access public + * @since 2.7.0 + * + * @param string $url URI resource. + * @param str|array $args Optional. Override the defaults. + * @return array containing 'headers', 'body', 'response', 'cookies' + */ + function request( $url, $args = array() ) { + $defaults = array( + 'method' => 'GET', + 'timeout' => apply_filters( 'http_request_timeout', 5), + 'redirection' => apply_filters( 'http_request_redirection_count', 5), + 'httpversion' => apply_filters( 'http_request_version', '1.0'), + 'user-agent' => apply_filters( 'http_headers_useragent', backpress_get_option( 'wp_http_version' ) ), + 'blocking' => true, + 'headers' => array(), + 'cookies' => array(), + 'body' => null, + 'compress' => false, + 'decompress' => true, + 'sslverify' => true + ); + + $r = wp_parse_args( $args, $defaults ); + $r = apply_filters( 'http_request_args', $r, $url ); + + $arrURL = parse_url($url); + + if ( $this->block_request( $url ) ) + return new WP_Error('http_request_failed', 'User has blocked requests through HTTP.'); + + // Determine if this is a https call and pass that on to the transport functions + // so that we can blacklist the transports that do not support ssl verification + $r['ssl'] = $arrURL['scheme'] == 'https' || $arrURL['scheme'] == 'ssl'; + + // Determine if this request is to OUR install of WordPress + $homeURL = parse_url( backpress_get_option( 'application_uri' ) ); + $r['local'] = $homeURL['host'] == $arrURL['host'] || 'localhost' == $arrURL['host']; + unset($homeURL); + + if ( is_null( $r['headers'] ) ) + $r['headers'] = array(); + + if ( ! is_array($r['headers']) ) { + $processedHeaders = WP_Http::processHeaders($r['headers']); + $r['headers'] = $processedHeaders['headers']; + } + + if ( isset($r['headers']['User-Agent']) ) { + $r['user-agent'] = $r['headers']['User-Agent']; + unset($r['headers']['User-Agent']); + } + + if ( isset($r['headers']['user-agent']) ) { + $r['user-agent'] = $r['headers']['user-agent']; + unset($r['headers']['user-agent']); + } + + // Construct Cookie: header if any cookies are set + WP_Http::buildCookieHeader( $r ); + + if ( WP_Http_Encoding::is_available() ) + $r['headers']['Accept-Encoding'] = WP_Http_Encoding::accept_encoding(); + + if ( is_null($r['body']) ) { + // Some servers fail when sending content without the content-length + // header being set. + $r['headers']['Content-Length'] = 0; + $transports = WP_Http::_getTransport($r); + } else { + if ( is_array( $r['body'] ) || is_object( $r['body'] ) ) { + if ( ! version_compare(phpversion(), '5.1.2', '>=') ) + $r['body'] = _http_build_query($r['body'], null, '&'); + else + $r['body'] = http_build_query($r['body'], null, '&'); + $r['headers']['Content-Type'] = 'application/x-www-form-urlencoded; charset=' . backpress_get_option( 'charset' ); + $r['headers']['Content-Length'] = strlen($r['body']); + } + + if ( ! isset( $r['headers']['Content-Length'] ) && ! isset( $r['headers']['content-length'] ) ) + $r['headers']['Content-Length'] = strlen($r['body']); + + $transports = WP_Http::_postTransport($r); + } + + if ( has_action('http_api_debug') ) + do_action('http_api_debug', $transports, 'transports_list'); + + $response = array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() ); + foreach ( (array) $transports as $transport ) { + $response = $transport->request($url, $r); + + if ( has_action('http_api_debug') ) + do_action( 'http_api_debug', $response, 'response', get_class($transport) ); + + if ( ! is_wp_error($response) ) + return $response; + } + + return $response; + } + + /** + * Uses the POST HTTP method. + * + * Used for sending data that is expected to be in the body. + * + * @access public + * @since 2.7.0 + * + * @param string $url URI resource. + * @param str|array $args Optional. Override the defaults. + * @return boolean + */ + function post($url, $args = array()) { + $defaults = array('method' => 'POST'); + $r = wp_parse_args( $args, $defaults ); + return $this->request($url, $r); + } + + /** + * Uses the GET HTTP method. + * + * Used for sending data that is expected to be in the body. + * + * @access public + * @since 2.7.0 + * + * @param string $url URI resource. + * @param str|array $args Optional. Override the defaults. + * @return boolean + */ + function get($url, $args = array()) { + $defaults = array('method' => 'GET'); + $r = wp_parse_args( $args, $defaults ); + return $this->request($url, $r); + } + + /** + * Uses the HEAD HTTP method. + * + * Used for sending data that is expected to be in the body. + * + * @access public + * @since 2.7.0 + * + * @param string $url URI resource. + * @param str|array $args Optional. Override the defaults. + * @return boolean + */ + function head($url, $args = array()) { + $defaults = array('method' => 'HEAD'); + $r = wp_parse_args( $args, $defaults ); + return $this->request($url, $r); + } + + /** + * Parses the responses and splits the parts into headers and body. + * + * @access public + * @static + * @since 2.7.0 + * + * @param string $strResponse The full response string + * @return array Array with 'headers' and 'body' keys. + */ + function processResponse($strResponse) { + list($theHeaders, $theBody) = explode("\r\n\r\n", $strResponse, 2); + return array('headers' => $theHeaders, 'body' => $theBody); + } + + /** + * Transform header string into an array. + * + * If an array is given then it is assumed to be raw header data with numeric keys with the + * headers as the values. No headers must be passed that were already processed. + * + * @access public + * @static + * @since 2.7.0 + * + * @param string|array $headers + * @return array Processed string headers. If duplicate headers are encountered, + * Then a numbered array is returned as the value of that header-key. + */ + function processHeaders($headers) { + // split headers, one per array element + if ( is_string($headers) ) { + // tolerate line terminator: CRLF = LF (RFC 2616 19.3) + $headers = str_replace("\r\n", "\n", $headers); + // unfold folded header fields. LWS = [CRLF] 1*( SP | HT ) , (RFC 2616 2.2) + $headers = preg_replace('/\n[ \t]/', ' ', $headers); + // create the headers array + $headers = explode("\n", $headers); + } + + $response = array('code' => 0, 'message' => ''); + + $cookies = array(); + $newheaders = array(); + foreach ( $headers as $tempheader ) { + if ( empty($tempheader) ) + continue; + + if ( false === strpos($tempheader, ':') ) { + list( , $iResponseCode, $strResponseMsg) = explode(' ', $tempheader, 3); + $response['code'] = $iResponseCode; + $response['message'] = $strResponseMsg; + continue; + } + + list($key, $value) = explode(':', $tempheader, 2); + + if ( !empty( $value ) ) { + $key = strtolower( $key ); + if ( isset( $newheaders[$key] ) ) { + $newheaders[$key] = array( $newheaders[$key], trim( $value ) ); + } else { + $newheaders[$key] = trim( $value ); + } + if ( 'set-cookie' == strtolower( $key ) ) + $cookies[] = new WP_Http_Cookie( $value ); + } + } + + return array('response' => $response, 'headers' => $newheaders, 'cookies' => $cookies); + } + + /** + * Takes the arguments for a ::request() and checks for the cookie array. + * + * If it's found, then it's assumed to contain WP_Http_Cookie objects, which are each parsed + * into strings and added to the Cookie: header (within the arguments array). Edits the array by + * reference. + * + * @access public + * @version 2.8.0 + * @static + * + * @param array $r Full array of args passed into ::request() + */ + function buildCookieHeader( &$r ) { + if ( ! empty($r['cookies']) ) { + $cookies_header = ''; + foreach ( (array) $r['cookies'] as $cookie ) { + $cookies_header .= $cookie->getHeaderValue() . '; '; + } + $cookies_header = substr( $cookies_header, 0, -2 ); + $r['headers']['cookie'] = $cookies_header; + } + } + + /** + * Decodes chunk transfer-encoding, based off the HTTP 1.1 specification. + * + * Based off the HTTP http_encoding_dechunk function. Does not support UTF-8. Does not support + * returning footer headers. Shouldn't be too difficult to support it though. + * + * @todo Add support for footer chunked headers. + * @access public + * @since 2.7.0 + * @static + * + * @param string $body Body content + * @return string Chunked decoded body on success or raw body on failure. + */ + function chunkTransferDecode($body) { + $body = str_replace(array("\r\n", "\r"), "\n", $body); + // The body is not chunked encoding or is malformed. + if ( ! preg_match( '/^[0-9a-f]+(\s|\n)+/mi', trim($body) ) ) + return $body; + + $parsedBody = ''; + //$parsedHeaders = array(); Unsupported + + while ( true ) { + $hasChunk = (bool) preg_match( '/^([0-9a-f]+)(\s|\n)+/mi', $body, $match ); + + if ( $hasChunk ) { + if ( empty( $match[1] ) ) + return $body; + + $length = hexdec( $match[1] ); + $chunkLength = strlen( $match[0] ); + + $strBody = substr($body, $chunkLength, $length); + $parsedBody .= $strBody; + + $body = ltrim(str_replace(array($match[0], $strBody), '', $body), "\n"); + + if ( "0" == trim($body) ) + return $parsedBody; // Ignore footer headers. + } else { + return $body; + } + } + } + + /** + * Block requests through the proxy. + * + * Those who are behind a proxy and want to prevent access to certain hosts may do so. This will + * prevent plugins from working and core functionality, if you don't include api.wordpress.org. + * + * You block external URL requests by defining WP_HTTP_BLOCK_EXTERNAL in your wp-config.php file + * and this will only allow localhost and your blog to make requests. The constant + * WP_ACCESSIBLE_HOSTS will allow additional hosts to go through for requests. The format of the + * WP_ACCESSIBLE_HOSTS constant is a comma separated list of hostnames to allow. + * + * @since 2.8.0 + * @link http://core.trac.wordpress.org/ticket/8927 Allow preventing external requests. + * + * @param string $uri URI of url. + * @return bool True to block, false to allow. + */ + function block_request($uri) { + // We don't need to block requests, because nothing is blocked. + if ( ! defined('WP_HTTP_BLOCK_EXTERNAL') || ( defined('WP_HTTP_BLOCK_EXTERNAL') && WP_HTTP_BLOCK_EXTERNAL == false ) ) + return false; + + // parse_url() only handles http, https type URLs, and will emit E_WARNING on failure. + // This will be displayed on blogs, which is not reasonable. + $check = @parse_url($uri); + + /* Malformed URL, can not process, but this could mean ssl, so let through anyway. + * + * This isn't very security sound. There are instances where a hacker might attempt + * to bypass the proxy and this check. However, the reason for this behavior is that + * WordPress does not do any checking currently for non-proxy requests, so it is keeps with + * the default unsecure nature of the HTTP request. + */ + if ( $check === false ) + return false; + + $home = parse_url( backpress_get_option( 'application_uri' ) ); + + // Don't block requests back to ourselves by default + if ( $check['host'] == 'localhost' || $check['host'] == $home['host'] ) + return apply_filters('block_local_requests', false); + + if ( !defined('WP_ACCESSIBLE_HOSTS') ) + return true; + + static $accessible_hosts; + if ( null == $accessible_hosts ) + $accessible_hosts = preg_split('|,\s*|', WP_ACCESSIBLE_HOSTS); + + return !in_array( $check['host'], $accessible_hosts ); //Inverse logic, If its in the array, then we can't access it. + } +} + +/** + * HTTP request method uses fsockopen function to retrieve the url. + * + * This would be the preferred method, but the fsockopen implementation has the most overhead of all + * the HTTP transport implementations. + * + * @package WordPress + * @subpackage HTTP + * @since 2.7.0 + */ +class WP_Http_Fsockopen { + /** + * Send a HTTP request to a URI using fsockopen(). + * + * Does not support non-blocking mode. + * + * @see WP_Http::request For default options descriptions. + * + * @since 2.7 + * @access public + * @param string $url URI resource. + * @param str|array $args Optional. Override the defaults. + * @return array 'headers', 'body', 'cookies' and 'response' keys. + */ + function request($url, $args = array()) { + $defaults = array( + 'method' => 'GET', 'timeout' => 5, + 'redirection' => 5, 'httpversion' => '1.0', + 'blocking' => true, + 'headers' => array(), 'body' => null, 'cookies' => array() + ); + + $r = wp_parse_args( $args, $defaults ); + + if ( isset($r['headers']['User-Agent']) ) { + $r['user-agent'] = $r['headers']['User-Agent']; + unset($r['headers']['User-Agent']); + } else if( isset($r['headers']['user-agent']) ) { + $r['user-agent'] = $r['headers']['user-agent']; + unset($r['headers']['user-agent']); + } + + // Construct Cookie: header if any cookies are set + WP_Http::buildCookieHeader( $r ); + + $iError = null; // Store error number + $strError = null; // Store error string + + $arrURL = parse_url($url); + + $fsockopen_host = $arrURL['host']; + + $secure_transport = false; + + if ( ! isset( $arrURL['port'] ) ) { + if ( ( $arrURL['scheme'] == 'ssl' || $arrURL['scheme'] == 'https' ) && extension_loaded('openssl') ) { + $fsockopen_host = "ssl://$fsockopen_host"; + $arrURL['port'] = 443; + $secure_transport = true; + } else { + $arrURL['port'] = 80; + } + } + + // There are issues with the HTTPS and SSL protocols that cause errors that can be safely + // ignored and should be ignored. + if ( true === $secure_transport ) + $error_reporting = error_reporting(0); + + $startDelay = time(); + + $proxy = new WP_HTTP_Proxy(); + + if ( !defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) ) { + if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) + $handle = @fsockopen( $proxy->host(), $proxy->port(), $iError, $strError, $r['timeout'] ); + else + $handle = @fsockopen( $fsockopen_host, $arrURL['port'], $iError, $strError, $r['timeout'] ); + } else { + if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) + $handle = fsockopen( $proxy->host(), $proxy->port(), $iError, $strError, $r['timeout'] ); + else + $handle = fsockopen( $fsockopen_host, $arrURL['port'], $iError, $strError, $r['timeout'] ); + } + + $endDelay = time(); + + // If the delay is greater than the timeout then fsockopen should't be used, because it will + // cause a long delay. + $elapseDelay = ($endDelay-$startDelay) > $r['timeout']; + if ( true === $elapseDelay ) + backpress_add_option( 'disable_fsockopen', $endDelay, null, true ); + + if ( false === $handle ) + return new WP_Error('http_request_failed', $iError . ': ' . $strError); + + stream_set_timeout($handle, $r['timeout'] ); + + if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) //Some proxies require full URL in this field. + $requestPath = $url; + else + $requestPath = $arrURL['path'] . ( isset($arrURL['query']) ? '?' . $arrURL['query'] : '' ); + + if ( empty($requestPath) ) + $requestPath .= '/'; + + $strHeaders = strtoupper($r['method']) . ' ' . $requestPath . ' HTTP/' . $r['httpversion'] . "\r\n"; + + if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) + $strHeaders .= 'Host: ' . $arrURL['host'] . ':' . $arrURL['port'] . "\r\n"; + else + $strHeaders .= 'Host: ' . $arrURL['host'] . "\r\n"; + + if ( isset($r['user-agent']) ) + $strHeaders .= 'User-agent: ' . $r['user-agent'] . "\r\n"; + + if ( is_array($r['headers']) ) { + foreach ( (array) $r['headers'] as $header => $headerValue ) + $strHeaders .= $header . ': ' . $headerValue . "\r\n"; + } else { + $strHeaders .= $r['headers']; + } + + if ( $proxy->use_authentication() ) + $strHeaders .= $proxy->authentication_header() . "\r\n"; + + $strHeaders .= "\r\n"; + + if ( ! is_null($r['body']) ) + $strHeaders .= $r['body']; + + fwrite($handle, $strHeaders); + + if ( ! $r['blocking'] ) { + fclose($handle); + return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() ); + } + + $strResponse = ''; + while ( ! feof($handle) ) + $strResponse .= fread($handle, 4096); + + fclose($handle); + + if ( true === $secure_transport ) + error_reporting($error_reporting); + + $process = WP_Http::processResponse($strResponse); + $arrHeaders = WP_Http::processHeaders($process['headers']); + + // Is the response code within the 400 range? + if ( (int) $arrHeaders['response']['code'] >= 400 && (int) $arrHeaders['response']['code'] < 500 ) + return new WP_Error('http_request_failed', $arrHeaders['response']['code'] . ': ' . $arrHeaders['response']['message']); + + // If location is found, then assume redirect and redirect to location. + if ( isset($arrHeaders['headers']['location']) ) { + if ( $r['redirection']-- > 0 ) { + return $this->request($arrHeaders['headers']['location'], $r); + } else { + return new WP_Error('http_request_failed', __('Too many redirects.')); + } + } + + // If the body was chunk encoded, then decode it. + if ( ! empty( $process['body'] ) && isset( $arrHeaders['headers']['transfer-encoding'] ) && 'chunked' == $arrHeaders['headers']['transfer-encoding'] ) + $process['body'] = WP_Http::chunkTransferDecode($process['body']); + + if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($arrHeaders['headers']) ) + $process['body'] = WP_Http_Encoding::decompress( $process['body'] ); + + return array('headers' => $arrHeaders['headers'], 'body' => $process['body'], 'response' => $arrHeaders['response'], 'cookies' => $arrHeaders['cookies']); + } + + /** + * Whether this class can be used for retrieving an URL. + * + * @since 2.7.0 + * @static + * @return boolean False means this class can not be used, true means it can. + */ + function test( $args = array() ) { + if ( false !== ($option = backpress_get_option( 'disable_fsockopen' )) && time()-$option < 43200 ) // 12 hours + return false; + + $is_ssl = isset($args['ssl']) && $args['ssl']; + + if ( ! $is_ssl && function_exists( 'fsockopen' ) ) + $use = true; + elseif ( $is_ssl && extension_loaded('openssl') && function_exists( 'fsockopen' ) ) + $use = true; + else + $use = false; + + return apply_filters('use_fsockopen_transport', $use, $args); + } +} + +/** + * HTTP request method uses fopen function to retrieve the url. + * + * Requires PHP version greater than 4.3.0 for stream support. Does not allow for $context support, + * but should still be okay, to write the headers, before getting the response. Also requires that + * 'allow_url_fopen' to be enabled. + * + * @package WordPress + * @subpackage HTTP + * @since 2.7.0 + */ +class WP_Http_Fopen { + /** + * Send a HTTP request to a URI using fopen(). + * + * This transport does not support sending of headers and body, therefore should not be used in + * the instances, where there is a body and headers. + * + * Notes: Does not support non-blocking mode. Ignores 'redirection' option. + * + * @see WP_Http::retrieve For default options descriptions. + * + * @access public + * @since 2.7.0 + * + * @param string $url URI resource. + * @param str|array $args Optional. Override the defaults. + * @return array 'headers', 'body', 'cookies' and 'response' keys. + */ + function request($url, $args = array()) { + $defaults = array( + 'method' => 'GET', 'timeout' => 5, + 'redirection' => 5, 'httpversion' => '1.0', + 'blocking' => true, + 'headers' => array(), 'body' => null, 'cookies' => array() + ); + + $r = wp_parse_args( $args, $defaults ); + + $arrURL = parse_url($url); + + if ( false === $arrURL ) + return new WP_Error('http_request_failed', sprintf(__('Malformed URL: %s'), $url)); + + if ( 'http' != $arrURL['scheme'] && 'https' != $arrURL['scheme'] ) + $url = str_replace($arrURL['scheme'], 'http', $url); + + if ( !defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) ) + $handle = @fopen($url, 'r'); + else + $handle = fopen($url, 'r'); + + if (! $handle) + return new WP_Error('http_request_failed', sprintf(__('Could not open handle for fopen() to %s'), $url)); + + stream_set_timeout($handle, $r['timeout'] ); + + if ( ! $r['blocking'] ) { + fclose($handle); + return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() ); + } + + $strResponse = ''; + while ( ! feof($handle) ) + $strResponse .= fread($handle, 4096); + + if ( function_exists('stream_get_meta_data') ) { + $meta = stream_get_meta_data($handle); + $theHeaders = $meta['wrapper_data']; + if ( isset( $meta['wrapper_data']['headers'] ) ) + $theHeaders = $meta['wrapper_data']['headers']; + } else { + //$http_response_header is a PHP reserved variable which is set in the current-scope when using the HTTP Wrapper + //see http://php.oregonstate.edu/manual/en/reserved.variables.httpresponseheader.php + $theHeaders = $http_response_header; + } + + fclose($handle); + + $processedHeaders = WP_Http::processHeaders($theHeaders); + + if ( ! empty( $strResponse ) && isset( $processedHeaders['headers']['transfer-encoding'] ) && 'chunked' == $processedHeaders['headers']['transfer-encoding'] ) + $strResponse = WP_Http::chunkTransferDecode($strResponse); + + if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($processedHeaders['headers']) ) + $strResponse = WP_Http_Encoding::decompress( $strResponse ); + + return array('headers' => $processedHeaders['headers'], 'body' => $strResponse, 'response' => $processedHeaders['response'], 'cookies' => $processedHeaders['cookies']); + } + + /** + * Whether this class can be used for retrieving an URL. + * + * @since 2.7.0 + * @static + * @return boolean False means this class can not be used, true means it can. + */ + function test($args = array()) { + if ( ! function_exists('fopen') || (function_exists('ini_get') && true != ini_get('allow_url_fopen')) ) + return false; + + $use = true; + + //PHP does not verify SSL certs, We can only make a request via this transports if SSL Verification is turned off. + $is_ssl = isset($args['ssl']) && $args['ssl']; + if ( $is_ssl ) { + $is_local = isset($args['local']) && $args['local']; + $ssl_verify = isset($args['sslverify']) && $args['sslverify']; + if ( $is_local && true != apply_filters('https_local_ssl_verify', true) ) + $use = true; + elseif ( !$is_local && true != apply_filters('https_ssl_verify', true) ) + $use = true; + elseif ( !$ssl_verify ) + $use = true; + else + $use = false; + } + + return apply_filters('use_fopen_transport', $use, $args); + } +} + +/** + * HTTP request method uses Streams to retrieve the url. + * + * Requires PHP 5.0+ and uses fopen with stream context. Requires that 'allow_url_fopen' PHP setting + * to be enabled. + * + * Second preferred method for getting the URL, for PHP 5. + * + * @package WordPress + * @subpackage HTTP + * @since 2.7.0 + */ +class WP_Http_Streams { + /** + * Send a HTTP request to a URI using streams with fopen(). + * + * @access public + * @since 2.7.0 + * + * @param string $url + * @param str|array $args Optional. Override the defaults. + * @return array 'headers', 'body', 'cookies' and 'response' keys. + */ + function request($url, $args = array()) { + $defaults = array( + 'method' => 'GET', 'timeout' => 5, + 'redirection' => 5, 'httpversion' => '1.0', + 'blocking' => true, + 'headers' => array(), 'body' => null, 'cookies' => array() + ); + + $r = wp_parse_args( $args, $defaults ); + + if ( isset($r['headers']['User-Agent']) ) { + $r['user-agent'] = $r['headers']['User-Agent']; + unset($r['headers']['User-Agent']); + } else if( isset($r['headers']['user-agent']) ) { + $r['user-agent'] = $r['headers']['user-agent']; + unset($r['headers']['user-agent']); + } + + // Construct Cookie: header if any cookies are set + WP_Http::buildCookieHeader( $r ); + + $arrURL = parse_url($url); + + if ( false === $arrURL ) + return new WP_Error('http_request_failed', sprintf(__('Malformed URL: %s'), $url)); + + if ( 'http' != $arrURL['scheme'] && 'https' != $arrURL['scheme'] ) + $url = preg_replace('|^' . preg_quote($arrURL['scheme'], '|') . '|', 'http', $url); + + // Convert Header array to string. + $strHeaders = ''; + if ( is_array( $r['headers'] ) ) + foreach ( $r['headers'] as $name => $value ) + $strHeaders .= "{$name}: $value\r\n"; + else if ( is_string( $r['headers'] ) ) + $strHeaders = $r['headers']; + + $is_local = isset($args['local']) && $args['local']; + $ssl_verify = isset($args['sslverify']) && $args['sslverify']; + if ( $is_local ) + $ssl_verify = apply_filters('https_local_ssl_verify', $ssl_verify); + elseif ( ! $is_local ) + $ssl_verify = apply_filters('https_ssl_verify', $ssl_verify); + + $arrContext = array('http' => + array( + 'method' => strtoupper($r['method']), + 'user_agent' => $r['user-agent'], + 'max_redirects' => $r['redirection'], + 'protocol_version' => (float) $r['httpversion'], + 'header' => $strHeaders, + 'timeout' => $r['timeout'], + 'ssl' => array( + 'verify_peer' => $ssl_verify, + 'verify_host' => $ssl_verify + ) + ) + ); + + $proxy = new WP_HTTP_Proxy(); + + if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { + $arrContext['http']['proxy'] = 'tcp://' . $proxy->host() . ':' . $proxy->port(); + $arrContext['http']['request_fulluri'] = true; + + // We only support Basic authentication so this will only work if that is what your proxy supports. + if ( $proxy->use_authentication() ) + $arrContext['http']['header'] .= $proxy->authentication_header() . "\r\n"; + } + + if ( ! is_null($r['body']) && ! empty($r['body'] ) ) + $arrContext['http']['content'] = $r['body']; + + $context = stream_context_create($arrContext); + + if ( ! defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) ) + $handle = @fopen($url, 'r', false, $context); + else + $handle = fopen($url, 'r', false, $context); + + if ( ! $handle) + return new WP_Error('http_request_failed', sprintf(__('Could not open handle for fopen() to %s'), $url)); + + // WordPress supports PHP 4.3, which has this function. Removed sanity checking for + // performance reasons. + stream_set_timeout($handle, $r['timeout'] ); + + if ( ! $r['blocking'] ) { + stream_set_blocking($handle, 0); + fclose($handle); + return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() ); + } + + $strResponse = stream_get_contents($handle); + $meta = stream_get_meta_data($handle); + + fclose($handle); + + $processedHeaders = array(); + if ( isset( $meta['wrapper_data']['headers'] ) ) + $processedHeaders = WP_Http::processHeaders($meta['wrapper_data']['headers']); + else + $processedHeaders = WP_Http::processHeaders($meta['wrapper_data']); + + if ( ! empty( $strResponse ) && isset( $processedHeaders['headers']['transfer-encoding'] ) && 'chunked' == $processedHeaders['headers']['transfer-encoding'] ) + $strResponse = WP_Http::chunkTransferDecode($strResponse); + + if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($processedHeaders['headers']) ) + $strResponse = WP_Http_Encoding::decompress( $strResponse ); + + return array('headers' => $processedHeaders['headers'], 'body' => $strResponse, 'response' => $processedHeaders['response'], 'cookies' => $processedHeaders['cookies']); + } + + /** + * Whether this class can be used for retrieving an URL. + * + * @static + * @access public + * @since 2.7.0 + * + * @return boolean False means this class can not be used, true means it can. + */ + function test($args = array()) { + if ( ! function_exists('fopen') || (function_exists('ini_get') && true != ini_get('allow_url_fopen')) ) + return false; + + if ( version_compare(PHP_VERSION, '5.0', '<') ) + return false; + + //HTTPS via Proxy was added in 5.1.0 + $is_ssl = isset($args['ssl']) && $args['ssl']; + if ( $is_ssl && version_compare(PHP_VERSION, '5.1.0', '<') ) { + $proxy = new WP_HTTP_Proxy(); + /** + * No URL check, as its not currently passed to the ::test() function + * In the case where a Proxy is in use, Just bypass this transport for HTTPS. + */ + if ( $proxy->is_enabled() ) + return false; + } + + return apply_filters('use_streams_transport', true, $args); + } +} + +/** + * HTTP request method uses HTTP extension to retrieve the url. + * + * Requires the HTTP extension to be installed. This would be the preferred transport since it can + * handle a lot of the problems that forces the others to use the HTTP version 1.0. Even if PHP 5.2+ + * is being used, it doesn't mean that the HTTP extension will be enabled. + * + * @package WordPress + * @subpackage HTTP + * @since 2.7.0 + */ +class WP_Http_ExtHTTP { + /** + * Send a HTTP request to a URI using HTTP extension. + * + * Does not support non-blocking. + * + * @access public + * @since 2.7 + * + * @param string $url + * @param str|array $args Optional. Override the defaults. + * @return array 'headers', 'body', 'cookies' and 'response' keys. + */ + function request($url, $args = array()) { + $defaults = array( + 'method' => 'GET', 'timeout' => 5, + 'redirection' => 5, 'httpversion' => '1.0', + 'blocking' => true, + 'headers' => array(), 'body' => null, 'cookies' => array() + ); + + $r = wp_parse_args( $args, $defaults ); + + if ( isset($r['headers']['User-Agent']) ) { + $r['user-agent'] = $r['headers']['User-Agent']; + unset($r['headers']['User-Agent']); + } else if( isset($r['headers']['user-agent']) ) { + $r['user-agent'] = $r['headers']['user-agent']; + unset($r['headers']['user-agent']); + } + + // Construct Cookie: header if any cookies are set + WP_Http::buildCookieHeader( $r ); + + switch ( $r['method'] ) { + case 'POST': + $r['method'] = HTTP_METH_POST; + break; + case 'HEAD': + $r['method'] = HTTP_METH_HEAD; + break; + case 'GET': + default: + $r['method'] = HTTP_METH_GET; + } + + $arrURL = parse_url($url); + + if ( 'http' != $arrURL['scheme'] || 'https' != $arrURL['scheme'] ) + $url = preg_replace('|^' . preg_quote($arrURL['scheme'], '|') . '|', 'http', $url); + + $is_local = isset($args['local']) && $args['local']; + $ssl_verify = isset($args['sslverify']) && $args['sslverify']; + if ( $is_local ) + $ssl_verify = apply_filters('https_local_ssl_verify', $ssl_verify); + elseif ( ! $is_local ) + $ssl_verify = apply_filters('https_ssl_verify', $ssl_verify); + + $options = array( + 'timeout' => $r['timeout'], + 'connecttimeout' => $r['timeout'], + 'redirect' => $r['redirection'], + 'useragent' => $r['user-agent'], + 'headers' => $r['headers'], + 'ssl' => array( + 'verifypeer' => $ssl_verify, + 'verifyhost' => $ssl_verify + ) + ); + + // The HTTP extensions offers really easy proxy support. + $proxy = new WP_HTTP_Proxy(); + + if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { + $options['proxyhost'] = $proxy->host(); + $options['proxyport'] = $proxy->port(); + $options['proxytype'] = HTTP_PROXY_HTTP; + + if ( $proxy->use_authentication() ) { + $options['proxyauth'] = $proxy->authentication(); + $options['proxyauthtype'] = HTTP_AUTH_BASIC; + } + } + + if ( !defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) ) //Emits warning level notices for max redirects and timeouts + $strResponse = @http_request($r['method'], $url, $r['body'], $options, $info); + else + $strResponse = http_request($r['method'], $url, $r['body'], $options, $info); //Emits warning level notices for max redirects and timeouts + + // Error may still be set, Response may return headers or partial document, and error + // contains a reason the request was aborted, eg, timeout expired or max-redirects reached. + if ( false === $strResponse || ! empty($info['error']) ) + return new WP_Error('http_request_failed', $info['response_code'] . ': ' . $info['error']); + + if ( ! $r['blocking'] ) + return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() ); + + list($theHeaders, $theBody) = explode("\r\n\r\n", $strResponse, 2); + $theHeaders = WP_Http::processHeaders($theHeaders); + + if ( ! empty( $theBody ) && isset( $theHeaders['headers']['transfer-encoding'] ) && 'chunked' == $theHeaders['headers']['transfer-encoding'] ) { + if ( !defined('WP_DEBUG') || ( defined('WP_DEBUG') && false === WP_DEBUG ) ) + $theBody = @http_chunked_decode($theBody); + else + $theBody = http_chunked_decode($theBody); + } + + if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers']) ) + $theBody = http_inflate( $theBody ); + + $theResponse = array(); + $theResponse['code'] = $info['response_code']; + $theResponse['message'] = get_status_header_desc($info['response_code']); + + return array('headers' => $theHeaders['headers'], 'body' => $theBody, 'response' => $theResponse, 'cookies' => $theHeaders['cookies']); + } + + /** + * Whether this class can be used for retrieving an URL. + * + * @static + * @since 2.7.0 + * + * @return boolean False means this class can not be used, true means it can. + */ + function test($args = array()) { + return apply_filters('use_http_extension_transport', function_exists('http_request'), $args ); + } +} + +/** + * HTTP request method uses Curl extension to retrieve the url. + * + * Requires the Curl extension to be installed. + * + * @package WordPress + * @subpackage HTTP + * @since 2.7 + */ +class WP_Http_Curl { + + /** + * Send a HTTP request to a URI using cURL extension. + * + * @access public + * @since 2.7.0 + * + * @param string $url + * @param str|array $args Optional. Override the defaults. + * @return array 'headers', 'body', 'cookies' and 'response' keys. + */ + function request($url, $args = array()) { + $defaults = array( + 'method' => 'GET', 'timeout' => 5, + 'redirection' => 5, 'httpversion' => '1.0', + 'blocking' => true, + 'headers' => array(), 'body' => null, 'cookies' => array() + ); + + $r = wp_parse_args( $args, $defaults ); + + if ( isset($r['headers']['User-Agent']) ) { + $r['user-agent'] = $r['headers']['User-Agent']; + unset($r['headers']['User-Agent']); + } else if( isset($r['headers']['user-agent']) ) { + $r['user-agent'] = $r['headers']['user-agent']; + unset($r['headers']['user-agent']); + } + + // Construct Cookie: header if any cookies are set. + WP_Http::buildCookieHeader( $r ); + + // cURL extension will sometimes fail when the timeout is less than 1 as it may round down + // to 0, which gives it unlimited timeout. + if ( $r['timeout'] > 0 && $r['timeout'] < 1 ) + $r['timeout'] = 1; + + $handle = curl_init(); + + // cURL offers really easy proxy support. + $proxy = new WP_HTTP_Proxy(); + + if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { + + $isPHP5 = version_compare(PHP_VERSION, '5.0.0', '>='); + + if ( $isPHP5 ) { + curl_setopt( $handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP ); + curl_setopt( $handle, CURLOPT_PROXY, $proxy->host() ); + curl_setopt( $handle, CURLOPT_PROXYPORT, $proxy->port() ); + } else { + curl_setopt( $handle, CURLOPT_PROXY, $proxy->host() .':'. $proxy->port() ); + } + + if ( $proxy->use_authentication() ) { + if ( $isPHP5 ) + curl_setopt( $handle, CURLOPT_PROXYAUTH, CURLAUTH_BASIC ); + + curl_setopt( $handle, CURLOPT_PROXYUSERPWD, $proxy->authentication() ); + } + } + + $is_local = isset($args['local']) && $args['local']; + $ssl_verify = isset($args['sslverify']) && $args['sslverify']; + if ( $is_local ) + $ssl_verify = apply_filters('https_local_ssl_verify', $ssl_verify); + elseif ( ! $is_local ) + $ssl_verify = apply_filters('https_ssl_verify', $ssl_verify); + + curl_setopt( $handle, CURLOPT_URL, $url); + curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true ); + curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, $ssl_verify ); + curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify ); + curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] ); + curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $r['timeout'] ); + curl_setopt( $handle, CURLOPT_TIMEOUT, $r['timeout'] ); + curl_setopt( $handle, CURLOPT_MAXREDIRS, $r['redirection'] ); + + switch ( $r['method'] ) { + case 'HEAD': + curl_setopt( $handle, CURLOPT_NOBODY, true ); + break; + case 'POST': + curl_setopt( $handle, CURLOPT_POST, true ); + curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] ); + break; + } + + if ( true === $r['blocking'] ) + curl_setopt( $handle, CURLOPT_HEADER, true ); + else + curl_setopt( $handle, CURLOPT_HEADER, false ); + + // The option doesn't work with safe mode or when open_basedir is set. + if ( !ini_get('safe_mode') && !ini_get('open_basedir') ) + curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, true ); + + if ( !empty( $r['headers'] ) ) { + // cURL expects full header strings in each element + $headers = array(); + foreach ( $r['headers'] as $name => $value ) { + $headers[] = "{$name}: $value"; + } + curl_setopt( $handle, CURLOPT_HTTPHEADER, $headers ); + } + + if ( $r['httpversion'] == '1.0' ) + curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 ); + else + curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 ); + + // Cookies are not handled by the HTTP API currently. Allow for plugin authors to handle it + // themselves... Although, it is somewhat pointless without some reference. + do_action_ref_array( 'http_api_curl', array(&$handle) ); + + // We don't need to return the body, so don't. Just execute request and return. + if ( ! $r['blocking'] ) { + curl_exec( $handle ); + curl_close( $handle ); + return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() ); + } + + $theResponse = curl_exec( $handle ); + + if ( !empty($theResponse) ) { + $parts = explode("\r\n\r\n", $theResponse); + + $headerLength = curl_getinfo($handle, CURLINFO_HEADER_SIZE); + $theHeaders = trim( substr($theResponse, 0, $headerLength) ); + $theBody = substr( $theResponse, $headerLength ); + if ( false !== strrpos($theHeaders, "\r\n\r\n") ) { + $headerParts = explode("\r\n\r\n", $theHeaders); + $theHeaders = $headerParts[ count($headerParts) -1 ]; + } + $theHeaders = WP_Http::processHeaders($theHeaders); + } else { + if ( $curl_error = curl_error($handle) ) + return new WP_Error('http_request_failed', $curl_error); + if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array(301, 302) ) ) + return new WP_Error('http_request_failed', __('Too many redirects.')); + + $theHeaders = array( 'headers' => array(), 'cookies' => array() ); + $theBody = ''; + } + + $response = array(); + $response['code'] = curl_getinfo( $handle, CURLINFO_HTTP_CODE ); + $response['message'] = get_status_header_desc($response['code']); + + curl_close( $handle ); + + if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers']) ) + $theBody = WP_Http_Encoding::decompress( $theBody ); + + return array('headers' => $theHeaders['headers'], 'body' => $theBody, 'response' => $response, 'cookies' => $theHeaders['cookies']); + } + + /** + * Whether this class can be used for retrieving an URL. + * + * @static + * @since 2.7.0 + * + * @return boolean False means this class can not be used, true means it can. + */ + function test($args = array()) { + if ( function_exists('curl_init') && function_exists('curl_exec') ) + return apply_filters('use_curl_transport', true, $args); + + return false; + } +} + +/** + * Adds Proxy support to the WordPress HTTP API. + * + * There are caveats to proxy support. It requires that defines be made in the wp-config.php file to + * enable proxy support. There are also a few filters that plugins can hook into for some of the + * constants. + * + * The constants are as follows: + *
        + *
      1. WP_PROXY_HOST - Enable proxy support and host for connecting.
      2. + *
      3. WP_PROXY_PORT - Proxy port for connection. No default, must be defined.
      4. + *
      5. WP_PROXY_USERNAME - Proxy username, if it requires authentication.
      6. + *
      7. WP_PROXY_PASSWORD - Proxy password, if it requires authentication.
      8. + *
      9. WP_PROXY_BYPASS_HOSTS - Will prevent the hosts in this list from going through the proxy. + * You do not need to have localhost and the blog host in this list, because they will not be passed + * through the proxy. The list should be presented in a comma separated list
      10. + *
      + * + * An example can be as seen below. + * + * define('WP_PROXY_HOST', '192.168.84.101'); + * define('WP_PROXY_PORT', '8080'); + * define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com'); + * + * + * @link http://core.trac.wordpress.org/ticket/4011 Proxy support ticket in WordPress. + * @since 2.8 + */ +class WP_HTTP_Proxy { + + /** + * Whether proxy connection should be used. + * + * @since 2.8 + * @use WP_PROXY_HOST + * @use WP_PROXY_PORT + * + * @return bool + */ + function is_enabled() { + return defined('WP_PROXY_HOST') && defined('WP_PROXY_PORT'); + } + + /** + * Whether authentication should be used. + * + * @since 2.8 + * @use WP_PROXY_USERNAME + * @use WP_PROXY_PASSWORD + * + * @return bool + */ + function use_authentication() { + return defined('WP_PROXY_USERNAME') && defined('WP_PROXY_PASSWORD'); + } + + /** + * Retrieve the host for the proxy server. + * + * @since 2.8 + * + * @return string + */ + function host() { + if ( defined('WP_PROXY_HOST') ) + return WP_PROXY_HOST; + + return ''; + } + + /** + * Retrieve the port for the proxy server. + * + * @since 2.8 + * + * @return string + */ + function port() { + if ( defined('WP_PROXY_PORT') ) + return WP_PROXY_PORT; + + return ''; + } + + /** + * Retrieve the username for proxy authentication. + * + * @since 2.8 + * + * @return string + */ + function username() { + if ( defined('WP_PROXY_USERNAME') ) + return WP_PROXY_USERNAME; + + return ''; + } + + /** + * Retrieve the password for proxy authentication. + * + * @since 2.8 + * + * @return string + */ + function password() { + if ( defined('WP_PROXY_PASSWORD') ) + return WP_PROXY_PASSWORD; + + return ''; + } + + /** + * Retrieve authentication string for proxy authentication. + * + * @since 2.8 + * + * @return string + */ + function authentication() { + return $this->username() . ':' . $this->password(); + } + + /** + * Retrieve header string for proxy authentication. + * + * @since 2.8 + * + * @return string + */ + function authentication_header() { + return 'Proxy-Authentication: Basic ' . base64_encode( $this->authentication() ); + } + + /** + * Whether URL should be sent through the proxy server. + * + * We want to keep localhost and the blog URL from being sent through the proxy server, because + * some proxies can not handle this. We also have the constant available for defining other + * hosts that won't be sent through the proxy. + * + * @uses WP_PROXY_BYPASS_HOSTS + * @since unknown + * + * @param string $uri URI to check. + * @return bool True, to send through the proxy and false if, the proxy should not be used. + */ + function send_through_proxy( $uri ) { + // parse_url() only handles http, https type URLs, and will emit E_WARNING on failure. + // This will be displayed on blogs, which is not reasonable. + $check = @parse_url($uri); + + // Malformed URL, can not process, but this could mean ssl, so let through anyway. + if ( $check === false ) + return true; + + $home = parse_url( backpress_get_option( 'application_uri' ) ); + + if ( $check['host'] == 'localhost' || $check['host'] == $home['host'] ) + return false; + + if ( !defined('WP_PROXY_BYPASS_HOSTS') ) + return true; + + static $bypass_hosts; + if ( null == $bypass_hosts ) + $bypass_hosts = preg_split('|,\s*|', WP_PROXY_BYPASS_HOSTS); + + return !in_array( $check['host'], $bypass_hosts ); + } +} +/** + * Internal representation of a single cookie. + * + * Returned cookies are represented using this class, and when cookies are set, if they are not + * already a WP_Http_Cookie() object, then they are turned into one. + * + * @todo The WordPress convention is to use underscores instead of camelCase for function and method + * names. Need to switch to use underscores instead for the methods. + * + * @package WordPress + * @subpackage HTTP + * @since 2.8.0 + * @author Beau Lebens + */ +class WP_Http_Cookie { + + /** + * Cookie name. + * + * @since 2.8.0 + * @var string + */ + var $name; + + /** + * Cookie value. + * + * @since 2.8.0 + * @var string + */ + var $value; + + /** + * When the cookie expires. + * + * @since 2.8.0 + * @var string + */ + var $expires; + + /** + * Cookie URL path. + * + * @since 2.8.0 + * @var string + */ + var $path; + + /** + * Cookie Domain. + * + * @since 2.8.0 + * @var string + */ + var $domain; + + /** + * PHP4 style Constructor - Calls PHP5 Style Constructor. + * + * @access public + * @since 2.8.0 + * @param string|array $data Raw cookie data. + */ + function WP_Http_Cookie( $data ) { + $this->__construct( $data ); + } + + /** + * Sets up this cookie object. + * + * The parameter $data should be either an associative array containing the indices names below + * or a header string detailing it. + * + * If it's an array, it should include the following elements: + *
        + *
      1. Name
      2. + *
      3. Value - should NOT be urlencoded already.
      4. + *
      5. Expires - (optional) String or int (UNIX timestamp).
      6. + *
      7. Path (optional)
      8. + *
      9. Domain (optional)
      10. + *
      + * + * @access public + * @since 2.8.0 + * + * @param string|array $data Raw cookie data. + */ + function __construct( $data ) { + if ( is_string( $data ) ) { + // Assume it's a header string direct from a previous request + $pairs = explode( ';', $data ); + + // Special handling for first pair; name=value. Also be careful of "=" in value + $name = trim( substr( $pairs[0], 0, strpos( $pairs[0], '=' ) ) ); + $value = substr( $pairs[0], strpos( $pairs[0], '=' ) + 1 ); + $this->name = $name; + $this->value = urldecode( $value ); + array_shift( $pairs ); //Removes name=value from items. + + // Set everything else as a property + foreach ( $pairs as $pair ) { + if ( empty($pair) ) //Handles the cookie ending in ; which results in a empty final pair + continue; + + list( $key, $val ) = explode( '=', $pair ); + $key = strtolower( trim( $key ) ); + if ( 'expires' == $key ) + $val = strtotime( $val ); + $this->$key = $val; + } + } else { + if ( !isset( $data['name'] ) ) + return false; + + // Set properties based directly on parameters + $this->name = $data['name']; + $this->value = isset( $data['value'] ) ? $data['value'] : ''; + $this->path = isset( $data['path'] ) ? $data['path'] : ''; + $this->domain = isset( $data['domain'] ) ? $data['domain'] : ''; + + if ( isset( $data['expires'] ) ) + $this->expires = is_int( $data['expires'] ) ? $data['expires'] : strtotime( $data['expires'] ); + else + $this->expires = null; + } + } + + /** + * Confirms that it's OK to send this cookie to the URL checked against. + * + * Decision is based on RFC 2109/2965, so look there for details on validity. + * + * @access public + * @since 2.8.0 + * + * @param string $url URL you intend to send this cookie to + * @return boolean TRUE if allowed, FALSE otherwise. + */ + function test( $url ) { + // Expires - if expired then nothing else matters + if ( time() > $this->expires ) + return false; + + // Get details on the URL we're thinking about sending to + $url = parse_url( $url ); + $url['port'] = isset( $url['port'] ) ? $url['port'] : 80; + $url['path'] = isset( $url['path'] ) ? $url['path'] : '/'; + + // Values to use for comparison against the URL + $path = isset( $this->path ) ? $this->path : '/'; + $port = isset( $this->port ) ? $this->port : 80; + $domain = isset( $this->domain ) ? strtolower( $this->domain ) : strtolower( $url['host'] ); + if ( false === stripos( $domain, '.' ) ) + $domain .= '.local'; + + // Host - very basic check that the request URL ends with the domain restriction (minus leading dot) + $domain = substr( $domain, 0, 1 ) == '.' ? substr( $domain, 1 ) : $domain; + if ( substr( $url['host'], -strlen( $domain ) ) != $domain ) + return false; + + // Port - supports "port-lists" in the format: "80,8000,8080" + if ( !in_array( $url['port'], explode( ',', $port) ) ) + return false; + + // Path - request path must start with path restriction + if ( substr( $url['path'], 0, strlen( $path ) ) != $path ) + return false; + + return true; + } + + /** + * Convert cookie name and value back to header string. + * + * @access public + * @since 2.8.0 + * + * @return string Header encoded cookie name and value. + */ + function getHeaderValue() { + if ( empty( $this->name ) || empty( $this->value ) ) + return ''; + + return $this->name . '=' . urlencode( $this->value ); + } + + /** + * Retrieve cookie header for usage in the rest of the WordPress HTTP API. + * + * @access public + * @since 2.8.0 + * + * @return string + */ + function getFullHeader() { + return 'Cookie: ' . $this->getHeaderValue(); + } +} + +/** + * Implementation for deflate and gzip transfer encodings. + * + * Includes RFC 1950, RFC 1951, and RFC 1952. + * + * @since 2.8 + * @package WordPress + * @subpackage HTTP + */ +class WP_Http_Encoding { + + /** + * Compress raw string using the deflate format. + * + * Supports the RFC 1951 standard. + * + * @since 2.8 + * + * @param string $raw String to compress. + * @param int $level Optional, default is 9. Compression level, 9 is highest. + * @param string $supports Optional, not used. When implemented it will choose the right compression based on what the server supports. + * @return string|bool False on failure. + */ + function compress( $raw, $level = 9, $supports = null ) { + return gzdeflate( $raw, $level ); + } + + /** + * Decompression of deflated string. + * + * Will attempt to decompress using the RFC 1950 standard, and if that fails + * then the RFC 1951 standard deflate will be attempted. Finally, the RFC + * 1952 standard gzip decode will be attempted. If all fail, then the + * original compressed string will be returned. + * + * @since 2.8 + * + * @param string $compressed String to decompress. + * @param int $length The optional length of the compressed data. + * @return string|bool False on failure. + */ + function decompress( $compressed, $length = null ) { + $decompressed = gzinflate( $compressed ); + + if ( false !== $decompressed ) + return $decompressed; + + $decompressed = gzuncompress( $compressed ); + + if ( false !== $decompressed ) + return $decompressed; + + if ( function_exists('gzdecode') ) { + $decompressed = gzdecode( $compressed ); + + if ( false !== $decompressed ) + return $decompressed; + } + + return $compressed; + } + + /** + * What encoding types to accept and their priority values. + * + * @since 2.8 + * + * @return string Types of encoding to accept. + */ + function accept_encoding() { + $type = array(); + if ( function_exists( 'gzinflate' ) ) + $type[] = 'deflate;q=1.0'; + + if ( function_exists( 'gzuncompress' ) ) + $type[] = 'compress;q=0.5'; + + if ( function_exists( 'gzdecode' ) ) + $type[] = 'gzip;q=0.5'; + + return implode(', ', $type); + } + + /** + * What enconding the content used when it was compressed to send in the headers. + * + * @since 2.8 + * + * @return string Content-Encoding string to send in the header. + */ + function content_encoding() { + return 'deflate'; + } + + /** + * Whether the content be decoded based on the headers. + * + * @since 2.8 + * + * @param array|string $headers All of the available headers. + * @return bool + */ + function should_decode($headers) { + if ( is_array( $headers ) ) { + if ( array_key_exists('content-encoding', $headers) && ! empty( $headers['content-encoding'] ) ) + return true; + } else if( is_string( $headers ) ) { + return ( stripos($headers, 'content-encoding:') !== false ); + } + + return false; + } + + /** + * Whether decompression and compression are supported by the PHP version. + * + * Each function is tested instead of checking for the zlib extension, to + * ensure that the functions all exist in the PHP version and aren't + * disabled. + * + * @since 2.8 + * + * @return bool + */ + function is_available() { + return ( function_exists('gzuncompress') || function_exists('gzdeflate') || function_exists('gzinflate') ); + } +} + +/** + * Returns the initialized WP_Http Object + * + * @since 2.7.0 + * @access private + * + * @return WP_Http HTTP Transport object. + */ +function &_wp_http_get_object() { + static $http; + + if ( is_null($http) ) + $http = new WP_Http(); + + return $http; +} + +/** + * Retrieve the raw response from the HTTP request. + * + * The array structure is a little complex. + * + * + * $res = array( 'headers' => array(), 'response' => array('code' => int, 'message' => string) ); + * + * + * All of the headers in $res['headers'] are with the name as the key and the + * value as the value. So to get the User-Agent, you would do the following. + * + * + * $user_agent = $res['headers']['user-agent']; + * + * + * The body is the raw response content and can be retrieved from $res['body']. + * + * This function is called first to make the request and there are other API + * functions to abstract out the above convoluted setup. + * + * @since 2.7.0 + * + * @param string $url Site URL to retrieve. + * @param array $args Optional. Override the defaults. + * @return WP_Error|array The response or WP_Error on failure. + */ +function wp_remote_request($url, $args = array()) { + $objFetchSite = _wp_http_get_object(); + return $objFetchSite->request($url, $args); +} + +/** + * Retrieve the raw response from the HTTP request using the GET method. + * + * @see wp_remote_request() For more information on the response array format. + * + * @since 2.7.0 + * + * @param string $url Site URL to retrieve. + * @param array $args Optional. Override the defaults. + * @return WP_Error|array The response or WP_Error on failure. + */ +function wp_remote_get($url, $args = array()) { + $objFetchSite = _wp_http_get_object(); + return $objFetchSite->get($url, $args); +} + +/** + * Retrieve the raw response from the HTTP request using the POST method. + * + * @see wp_remote_request() For more information on the response array format. + * + * @since 2.7.0 + * + * @param string $url Site URL to retrieve. + * @param array $args Optional. Override the defaults. + * @return WP_Error|array The response or WP_Error on failure. + */ +function wp_remote_post($url, $args = array()) { + $objFetchSite = _wp_http_get_object(); + return $objFetchSite->post($url, $args); +} + +/** + * Retrieve the raw response from the HTTP request using the HEAD method. + * + * @see wp_remote_request() For more information on the response array format. + * + * @since 2.7.0 + * + * @param string $url Site URL to retrieve. + * @param array $args Optional. Override the defaults. + * @return WP_Error|array The response or WP_Error on failure. + */ +function wp_remote_head($url, $args = array()) { + $objFetchSite = _wp_http_get_object(); + return $objFetchSite->head($url, $args); +} + +/** + * Retrieve only the headers from the raw response. + * + * @since 2.7.0 + * + * @param array $response HTTP response. + * @return array The headers of the response. Empty array if incorrect parameter given. + */ +function wp_remote_retrieve_headers(&$response) { + if ( is_wp_error($response) || ! isset($response['headers']) || ! is_array($response['headers'])) + return array(); + + return $response['headers']; +} + +/** + * Retrieve a single header by name from the raw response. + * + * @since 2.7.0 + * + * @param array $response + * @param string $header Header name to retrieve value from. + * @return string The header value. Empty string on if incorrect parameter given, or if the header doesnt exist. + */ +function wp_remote_retrieve_header(&$response, $header) { + if ( is_wp_error($response) || ! isset($response['headers']) || ! is_array($response['headers'])) + return ''; + + if ( array_key_exists($header, $response['headers']) ) + return $response['headers'][$header]; + + return ''; +} + +/** + * Retrieve only the response code from the raw response. + * + * Will return an empty array if incorrect parameter value is given. + * + * @since 2.7.0 + * + * @param array $response HTTP response. + * @return string the response code. Empty string on incorrect parameter given. + */ +function wp_remote_retrieve_response_code(&$response) { + if ( is_wp_error($response) || ! isset($response['response']) || ! is_array($response['response'])) + return ''; + + return $response['response']['code']; +} + +/** + * Retrieve only the response message from the raw response. + * + * Will return an empty array if incorrect parameter value is given. + * + * @since 2.7.0 + * + * @param array $response HTTP response. + * @return string The response message. Empty string on incorrect parameter given. + */ +function wp_remote_retrieve_response_message(&$response) { + if ( is_wp_error($response) || ! isset($response['response']) || ! is_array($response['response'])) + return ''; + + return $response['response']['message']; +} + +/** + * Retrieve only the body from the raw response. + * + * @since 2.7.0 + * + * @param array $response HTTP response. + * @return string The body of the response. Empty string if no body or incorrect parameter given. + */ +function wp_remote_retrieve_body(&$response) { + if ( is_wp_error($response) || ! isset($response['body']) ) + return ''; + + return $response['body']; +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-object-cache-memcached.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-object-cache-memcached.php new file mode 100644 index 0000000..24b4bb8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-object-cache-memcached.php @@ -0,0 +1,467 @@ + array('127.0.0.1:11211')); + } + + foreach ( $buckets as $bucket => $servers ) { + $this->mc[$bucket] = new Memcache(); + foreach ( $servers as $server ) { + list ( $node, $port ) = explode( ':', $server ); + $this->mc[$bucket]->addServer( $node, $port, true, 1, 1, 15, true, array( $this, 'failure_callback' ) ); + $this->mc[$bucket]->setCompressThreshold( 20000, 0.2 ); + } + } + } + + function &get_mc( $group ) + { + if ( isset( $this->mc[$group] ) ) { + return $this->mc[$group]; + } + return $this->mc['default']; + } + + function failure_callback( $host, $port ) + { + //error_log( "Connection failure for $host:$port\n", 3, '/tmp/memcached.txt' ); + } + + function close() + { + foreach ( $this->mc as $bucket => $mc ) { + $mc->close(); + } + } + + function add_global_groups( $groups ) + { + if ( !is_array( $groups ) ) { + $groups = (array) $groups; + } + + $this->global_groups = array_merge( $this->global_groups, $groups ); + $this->global_groups = array_unique( $this->global_groups ); + } + + function add_non_persistent_groups( $groups ) + { + if ( !is_array( $groups ) ) { + $groups = (array) $groups; + } + + $this->no_mc_groups = array_merge( $this->no_mc_groups, $groups ); + $this->no_mc_groups = array_unique( $this->no_mc_groups ); + } + + function key( $key, $group ) + { + if ( empty( $group ) ) { + $group = 'default'; + } + + if ( false !== array_search( $group, $this->global_groups ) ) { + $prefix = ''; + } else { + $prefix = backpress_get_option( 'application_id' ) . ':'; + } + + return preg_replace( '/\s+/', '', $prefix . $group . ':' . $key ); + } + + function get( $id, $group = 'default' ) + { + $key = $this->key( $id, $group ); + $mc =& $this->get_mc( $group ); + + if ( isset( $this->cache[$key] ) ) { + $value = $this->cache[$key]; + } elseif ( in_array( $group, $this->no_mc_groups ) ) { + $value = false; + } else { + $value = $mc->get($key); + } + + @ ++$this->stats['get']; + $this->group_ops[$group][] = "get $id"; + + if ( NULL === $value ) { + $value = false; + } + + $this->cache[$key] = $value; + + if ( 'checkthedatabaseplease' === $value ) { + $value = false; + } + + return $value; + } + + /* + format: $get['group-name'] = array( 'key1', 'key2' ); + */ + function get_multi( $groups ) + { + $return = array(); + foreach ( $groups as $group => $ids ) { + $mc =& $this->get_mc( $group ); + foreach ( $ids as $id ) { + $key = $this->key( $id, $group ); + if ( isset( $this->cache[$key] ) ) { + $return[$key] = $this->cache[$key]; + continue; + } elseif ( in_array( $group, $this->no_mc_groups ) ) { + $return[$key] = false; + continue; + } else { + $return[$key] = $mc->get( $key ); + } + } + if ( $to_get ) { + $vals = $mc->get_multi( $to_get ); + $return = array_merge( $return, $vals ); + } + } + + @ ++$this->stats['get_multi']; + $this->group_ops[$group][] = "get_multi $id"; + + $this->cache = array_merge( $this->cache, $return ); + + return $return; + } + + function add( $id, $data, $group = 'default', $expire = 0 ) + { + $key = $this->key( $id, $group ); + + if ( in_array( $group, $this->no_mc_groups ) ) { + $this->cache[$key] = $data; + return true; + } + + $mc =& $this->get_mc( $group ); + $expire = ( $expire == 0 ) ? $this->default_expiration : $expire; + $result = $mc->add( $key, $data, false, $expire ); + + @ ++$this->stats['add']; + $this->group_ops[$group][] = "add $id"; + + if ( false !== $result ) { + $this->cache[$key] = $data; + $this->add_key_to_group_keys_cache( $key, $group ); + } + + return $result; + } + + function set( $id, $data, $group = 'default', $expire = 0 ) + { + $key = $this->key($id, $group); + + if ( isset( $this->cache[$key] ) && 'checkthedatabaseplease' === $this->cache[$key] ) { + return false; + } + $this->cache[$key] = $data; + + if ( in_array( $group, $this->no_mc_groups ) ) { + return true; + } + + $expire = ( $expire == 0 ) ? $this->default_expiration : $expire; + $mc =& $this->get_mc( $group ); + $result = $mc->set( $key, $data, false, $expire ); + + if ( false !== $result ) { + $this->add_key_to_group_keys_cache($key, $group); + } + + return $result; + } + + function replace($id, $data, $group = 'default', $expire = 0) { + $key = $this->key($id, $group); + if ( in_array( $group, $this->no_mc_groups ) ) { + $this->cache[$key] = $data; + return true; + } + $expire = ($expire == 0) ? $this->default_expiration : $expire; + $mc =& $this->get_mc($group); + $result = $mc->replace($key, $data, false, $expire); + if ( false !== $result ) { + $this->cache[$key] = $data; + $this->add_key_to_group_keys_cache( $key, $group ); + } + return $result; + } + + function delete( $id, $group = 'default' ) + { + $key = $this->key( $id, $group ); + + if ( in_array( $group, $this->no_mc_groups ) ) { + unset( $this->cache[$key] ); + return true; + } + + $mc =& $this->get_mc( $group ); + + $result = $mc->delete( $key ); + + @ ++$this->stats['delete']; + $this->group_ops[$group][] = "delete $id"; + + if ( false !== $result ) { + unset( $this->cache[$key] ); + $this->remove_key_from_group_keys_cache( $key, $group ); + } + + return $result; + } + + function flush( $group = null ) + { + // Get all the group keys + if ( !$_groups = $this->get( 1, '_group_keys' ) ) { + return true; + } + + if ( !is_array( $_groups ) || !count( $_groups ) ) { + return $this->delete( 1, '_group_keys' ); + } + + if ( is_null( $group ) ) { + $results = array(); + foreach ( $_groups as $_group => $_keys ) { + $results[] = $this->delete_all_keys_in_group_key_cache( $_group ); + } + if ( in_array( false, $results ) ) { + return false; + } + return true; + } + + return $this->delete_all_keys_in_group_key_cache( $group ); + } + + // Update the cache of group keys or add a new cache if it isn't there + function add_key_to_group_keys_cache( $key, $group ) + { + if ( '_group_keys' === $group ) { + return; + } + + //error_log( 'Adding key ' . $key . ' to group ' . $group ); + + // Get all the group keys + if ( !$_groups = $this->get( 1, '_group_keys' ) ) { + $_groups = array( $group => array( $key ) ); + return $this->add( 1, $_groups, '_group_keys' ); + } + + // Don't blow up if it isn't an array + if ( !is_array( $_groups ) ) { + $_groups = array(); + } + + // If this group isn't in there, then insert it + if ( !isset( $_groups[$group] ) || !is_array( $_groups[$group] ) ) { + $_groups[$group] = array(); + } + + // If it's already there then do nothing + if ( in_array( $key, $_groups[$group] ) ) { + return true; + } + + $_groups[$group][] = $key; + + // Remove duplicates + $_groups[$group] = array_unique( $_groups[$group] ); + + return $this->replace( 1, $_groups, '_group_keys' ); + } + + // Remove the key from the cache of group keys, delete the cache if it is emptied + function remove_key_from_group_keys_cache( $key, $group ) + { + if ( '_group_keys' === $group ) { + return; + } + + //error_log( 'Removing key ' . $key . ' from group ' . $group ); + + // Get all the group keys + if ( !$_groups = $this->get( 1, '_group_keys' ) ) { + return true; + } + + // If group keys are somehow borked delete it all + if ( !is_array( $_groups ) ) { + return $this->delete( 1, '_group_keys' ); + } + + // If it's not there, we're good + if ( + !isset( $_groups[$group] ) || + !is_array( $_groups[$group] ) || + !in_array( $key, $_groups[$group] ) + ) { + return true; + } + + // Remove duplicates + $_groups[$group] = array_unique( $_groups[$group] ); + + // If there is only one key or no keys in the group then delete the group + if ( 2 > count( $_groups[$group] ) ) { + unset( $_groups[$group] ); + return $this->replace( 1, $_groups, '_group_keys' ); + } + + // array_unique() made sure there is only one + if ( $_key = array_search( $key, $_groups[$group] ) ) { + unset( $_groups[$group][$_key] ); + } + + return $this->replace( 1, $_groups, '_group_keys' ); + } + + function delete_all_keys_in_group_key_cache( $group ) + { + if ( '_group_keys' === $group ) { + return; + } + + //error_log( 'Deleting all keys in group ' . $group ); + + // Get all the group keys + if ( !$_groups = $this->get( 1, '_group_keys' ) ) { + //error_log( '--> !!!! No groups' ); + return true; + } + + // Check that what we want to loop over is there + if ( !is_array( $_groups ) ) { + //error_log( '--> !!!! Groups is not an array, delete whole key' ); + return $this->delete( 1, '_group_keys' ); + } + + // Check that what we want to loop over is there + if ( + !isset( $_groups[$group] ) || + !is_array( $_groups[$group] ) + ) { + //error_log( '--> !!!! No specific group' ); + return true; + } + + $_groups[$group] = array_unique( $_groups[$group] ); + + $_remaining_keys = array(); + $mc =& $this->get_mc($group); + foreach ( $_groups[$group] as $_key ) { + //error_log( '--> Deleting key ' . $_key ); + if ( false !== $mc->delete( $_key ) ) { + //error_log( '--> Deleted key ' . $_key ); + unset( $this->cache[$_key] ); + } + } + + unset( $_groups[$group] ); + if ( count( $_groups ) ) { + //error_log( '--> Remove single group' ); + return $this->replace( 1, $_groups, '_group_keys' ); + } + + //error_log( '--> No groups left, delete whole key' ); + return $this->delete( 1, '_group_keys' ); + } + + function incr( $id, $n, $group ) + { + $key = $this->key( $id, $group ); + $mc =& $this->get_mc( $group ); + + return $mc->increment( $key, $n ); + } + + function decr( $id, $n, $group ) + { + $key = $this->key( $id, $group ); + $mc =& $this->get_mc( $group ); + + return $mc->decrement( $key, $n ); + } + + function colorize_debug_line( $line ) + { + $colors = array( + 'get' => 'green', + 'set' => 'purple', + 'add' => 'blue', + 'delete' => 'red' + ); + + $cmd = substr( $line, 0, strpos( $line, ' ' ) ); + + $cmd2 = "$cmd"; + + return $cmd2 . substr( $line, strlen( $cmd ) ) . "\n"; + } + + function stats() + { + echo "

      \n"; + foreach ( $this->stats as $stat => $n ) { + echo "$stat $n"; + echo "
      \n"; + } + echo "

      \n"; + echo "

      Memcached:

      "; + foreach ( $this->group_ops as $group => $ops ) { + if ( !isset( $_GET['debug_queries'] ) && 500 < count( $ops ) ) { + $ops = array_slice( $ops, 0, 500 ); + echo "Too many to show! Show them anyway.\n"; + } + echo "

      $group commands

      "; + echo "
      \n";
      +			$lines = array();
      +			foreach ( $ops as $op ) {
      +				$lines[] = $this->colorize_debug_line( $op ); 
      +			}
      +			print_r( $lines );
      +			echo "
      \n"; + } + + if ( $this->debug ) { + var_dump( $this->memcache_debug ); + } + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-object-cache.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-object-cache.php new file mode 100644 index 0000000..5c6975d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-object-cache.php @@ -0,0 +1,305 @@ +get($id, $group, false)) + return false; + + return $this->set($id, $data, $group, $expire); + } + + /** + * Remove the contents of the cache ID in the group + * + * If the cache ID does not exist in the group and $force parameter is set + * to false, then nothing will happen. The $force parameter is set to false + * by default. + * + * On success the group and the id will be added to the + * $non_existant_objects property in the class. + * + * @since 2.0.0 + * + * @param int|string $id What the contents in the cache are called + * @param string $group Where the cache contents are grouped + * @param bool $force Optional. Whether to force the unsetting of the cache + * ID in the group + * @return bool False if the contents weren't deleted and true on success + */ + function delete($id, $group = 'default', $force = false) { + if (empty ($group)) + $group = 'default'; + + if (!$force && false === $this->get($id, $group, false)) + return false; + + unset ($this->cache[$group][$id]); + $this->non_existant_objects[$group][$id] = true; + return true; + } + + /** + * Clears the object cache of all data + * + * @since 2.0.0 + * + * @return bool Always returns true + */ + function flush( $group = null ) { + // WP does not support group flushing + if ( is_null($group) ) { + $this->cache = array(); + $this->non_existant_objects = array(); + return true; + } + + if ( isset($this->cache[$group]) ) + $this->cache[$group] = array(); + if ( isset($this->non_existant_objects[$group]) ) + $this->non_existant_objects[$group] = array(); + } + + /** + * Retrieves the cache contents, if it exists + * + * The contents will be first attempted to be retrieved by searching by the + * ID in the cache group. If the cache is hit (success) then the contents + * are returned. + * + * On failure, the $non_existant_objects property is checked and if the + * cache group and ID exist in there the cache misses will not be + * incremented. If not in the nonexistant objects property, then the cache + * misses will be incremented and the cache group and ID will be added to + * the nonexistant objects. + * + * @since 2.0.0 + * + * @param int|string $id What the contents in the cache are called + * @param string $group Where the cache contents are grouped + * @return bool|mixed False on failure to retrieve contents or the cache + * contents on success + */ + function get($id, $group = 'default') { + if (empty ($group)) + $group = 'default'; + + if (isset ($this->cache[$group][$id])) { + $this->cache_hits += 1; + if ( is_object($this->cache[$group][$id]) ) + return wp_clone($this->cache[$group][$id]); + else + return $this->cache[$group][$id]; + } + + if ( isset ($this->non_existant_objects[$group][$id]) ) + return false; + + $this->non_existant_objects[$group][$id] = true; + $this->cache_misses += 1; + return false; + } + + /** + * Replace the contents in the cache, if contents already exist + * + * @since 2.0.0 + * @see WP_Object_Cache::set() + * + * @param int|string $id What to call the contents in the cache + * @param mixed $data The contents to store in the cache + * @param string $group Where to group the cache contents + * @param int $expire When to expire the cache contents + * @return bool False if not exists, true if contents were replaced + */ + function replace($id, $data, $group = 'default', $expire = '') { + if (empty ($group)) + $group = 'default'; + + if (false === $this->get($id, $group, false)) + return false; + + return $this->set($id, $data, $group, $expire); + } + + /** + * Sets the data contents into the cache + * + * The cache contents is grouped by the $group parameter followed by the + * $id. This allows for duplicate ids in unique groups. Therefore, naming of + * the group should be used with care and should follow normal function + * naming guidelines outside of core WordPress usage. + * + * The $expire parameter is not used, because the cache will automatically + * expire for each time a page is accessed and PHP finishes. The method is + * more for cache plugins which use files. + * + * @since 2.0.0 + * + * @param int|string $id What to call the contents in the cache + * @param mixed $data The contents to store in the cache + * @param string $group Where to group the cache contents + * @param int $expire Not Used + * @return bool Always returns true + */ + function set($id, $data, $group = 'default', $expire = '') { + if (empty ($group)) + $group = 'default'; + + if (NULL === $data) + $data = ''; + + if ( is_object($data) ) + $data = wp_clone($data); + + $this->cache[$group][$id] = $data; + + if(isset($this->non_existant_objects[$group][$id])) + unset ($this->non_existant_objects[$group][$id]); + + return true; + } + + /** + * Echos the stats of the caching. + * + * Gives the cache hits, and cache misses. Also prints every cached group, + * key and the data. + * + * @since 2.0.0 + */ + function stats() { + echo "

      "; + echo "Cache Hits: {$this->cache_hits}
      "; + echo "Cache Misses: {$this->cache_misses}
      "; + echo "

      "; + + foreach ($this->cache as $group => $cache) { + echo "

      "; + echo "Group: $group
      "; + echo "Cache:"; + echo "

      ";
      +			print_r($cache);
      +			echo "
      "; + } + } + + function add_global_groups( $groups ) + { + return true; + } + + function add_non_persistent_groups( $groups ) + { + return true; + } + + /** + * PHP4 constructor; Calls PHP 5 style constructor + * + * @since 2.0.0 + * + * @return WP_Object_Cache + */ + function WP_Object_Cache() { + return $this->__construct(); + } + + /** + * Sets up object properties; PHP 5 style constructor + * + * @since 2.0.8 + * @return null|WP_Object_Cache If cache is disabled, returns null. + */ + function __construct() { + /** + * @todo This should be moved to the PHP4 style constructor, PHP5 + * already calls __destruct() + */ + register_shutdown_function(array(&$this, "__destruct")); + } + + /** + * Will save the object cache before object is completely destroyed. + * + * Called upon object destruction, which should be when PHP ends. + * + * @since 2.0.8 + * + * @return bool True value. Won't be used by PHP + */ + function __destruct() { + return true; + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-pass.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-pass.php new file mode 100644 index 0000000..0581a8a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-pass.php @@ -0,0 +1,141 @@ +HashPassword($password); + } + + /** + * Checks the plaintext password against the encrypted Password. + * + * Maintains compatibility between old version and the new cookie authentication + * protocol using PHPass library. The $hash parameter is the encrypted password + * and the function compares the plain text password when encypted similarly + * against the already encrypted password to see if they match. + * + * For integration with other applications, this function can be overwritten to + * instead use the other package password checking algorithm. + * + * @since WP 2.5 + * @global object $wp_hasher PHPass object used for checking the password + * against the $hash + $password + * @uses PasswordHash::CheckPassword + * + * @param string $password Plaintext user's password + * @param string $hash Hash of the user's password to check against. + * @return bool False, if the $password does not match the hashed password + */ + function check_password($password, $hash, $user_id = '') { + global $wp_hasher, $wp_users_object; + + list($hash, $broken) = array_pad( explode( '---', $hash ), 2, '' ); + + // If the hash is still md5... + if ( strlen($hash) <= 32 ) { + $check = ( $hash == md5($password) ); + if ( $check && $user_id && !$broken ) { + // Rehash using new hash. + $wp_users_object->set_password($password, $user_id); + $hash = WP_Pass::hash_password($password); + } + + return apply_filters('check_password', $check, $password, $hash, $user_id); + } + + // If the stored hash is longer than an MD5, presume the + // new style phpass portable hash. + if ( empty($wp_hasher) ) { + require_once( BACKPRESS_PATH . 'class.passwordhash.php'); + // By default, use the portable hash from phpass + $wp_hasher = new PasswordHash(8, TRUE); + } + + $check = $wp_hasher->CheckPassword($password, $hash); + + return apply_filters('check_password', $check, $password, $hash, $user_id); + } + + /** + * Generates a random password drawn from the defined set of characters + * + * @since WP 2.5 + * + * @param int $length The length of password to generate + * @param bool $special_chars Whether to include standard special characters + * @return string The random password + */ + function generate_password($length = 12, $special_chars = true) { + $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + if ( $special_chars ) + $chars .= '!@#$%^&*()'; + + $password = ''; + for ( $i = 0; $i < $length; $i++ ) + $password .= substr($chars, WP_Pass::rand(0, strlen($chars) - 1), 1); + return $password; + } + + /** + * Generates a random number + * + * Not verbatim WordPress, keeps seed value in backpress options. + * + * @since WP 2.6.2 + * + * @param int $min Lower limit for the generated number (optional, default is 0) + * @param int $max Upper limit for the generated number (optional, default is 4294967295) + * @return int A random number between min and max + */ + function rand( $min = 0, $max = 0 ) { + global $rnd_value; + + $seed = backpress_get_transient('random_seed'); + + // Reset $rnd_value after 14 uses + // 32(md5) + 40(sha1) + 40(sha1) / 8 = 14 random numbers from $rnd_value + if ( strlen($rnd_value) < 8 ) { + $rnd_value = md5( uniqid(microtime() . mt_rand(), true ) . $seed ); + $rnd_value .= sha1($rnd_value); + $rnd_value .= sha1($rnd_value . $seed); + $seed = md5($seed . $rnd_value); + backpress_set_transient('random_seed', $seed); + } + + // Take the first 8 digits for our value + $value = substr($rnd_value, 0, 8); + + // Strip the first eight, leaving the remainder for the next call to wp_rand(). + $rnd_value = substr($rnd_value, 8); + + $value = abs(hexdec($value)); + + // Reduce the value to be within the min - max range + // 4294967295 = 0xffffffff = max random number + if ( $max != 0 ) + $value = $min + (($max - $min + 1) * ($value / (4294967295 + 1))); + + return abs(intval($value)); + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-scripts.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-scripts.php new file mode 100644 index 0000000..45d2e54 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-scripts.php @@ -0,0 +1,202 @@ +do_items( $handles, $group ); + } + + function print_scripts_l10n( $handle, $echo = true ) { + if ( empty($this->registered[$handle]->extra['l10n']) || empty($this->registered[$handle]->extra['l10n'][0]) || !is_array($this->registered[$handle]->extra['l10n'][1]) ) + return false; + + $object_name = $this->registered[$handle]->extra['l10n'][0]; + + $data = "var $object_name = {\n"; + $eol = ''; + foreach ( $this->registered[$handle]->extra['l10n'][1] as $var => $val ) { + if ( 'l10n_print_after' == $var ) { + $after = $val; + continue; + } + $data .= "$eol\t$var: \"" . esc_js( $val ) . '"'; + $eol = ",\n"; + } + $data .= "\n};\n"; + $data .= isset($after) ? "$after\n" : ''; + + if ( $echo ) { + echo "\n"; + return true; + } else { + return $data; + } + } + + function do_item( $handle, $group = false ) { + if ( !parent::do_item($handle) ) + return false; + + if ( 0 === $group && $this->groups[$handle] > 0 ) { + $this->in_footer[] = $handle; + return false; + } + + if ( false === $group && in_array($handle, $this->in_footer, true) ) + $this->in_footer = array_diff( $this->in_footer, (array) $handle ); + + if ( null === $this->registered[$handle]->ver ) + $ver = ''; + else + $ver = $this->registered[$handle]->ver ? $this->registered[$handle]->ver : $this->default_version; + + if ( isset($this->args[$handle]) ) + $ver = $ver ? $ver . '&' . $this->args[$handle] : $this->args[$handle]; + + $src = $this->registered[$handle]->src; + + if ( $this->do_concat ) { + $srce = apply_filters( 'script_loader_src', $src, $handle ); + if ( $this->in_default_dir($srce) ) { + $this->print_code .= $this->print_scripts_l10n( $handle, false ); + $this->concat .= "$handle,"; + $this->concat_version .= "$handle$ver"; + return true; + } else { + $this->ext_handles .= "$handle,"; + $this->ext_version .= "$handle$ver"; + } + } + + $this->print_scripts_l10n( $handle ); + if ( !preg_match('|^https?://|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) { + $src = $this->base_url . $src; + } + + if ( !empty($ver) ) + $src = add_query_arg('ver', $ver, $src); + $src = esc_url(apply_filters( 'script_loader_src', $src, $handle )); + + if ( $this->do_concat ) + $this->print_html .= "\n"; + else + echo "\n"; + + return true; + } + + /** + * Localizes a script + * + * Localizes only if script has already been added + * + * @param string handle Script name + * @param string object_name Name of JS object to hold l10n info + * @param array l10n Array of JS var name => localized string + * @return bool Successful localization + */ + function localize( $handle, $object_name, $l10n ) { + if ( !$object_name || !$l10n ) + return false; + return $this->add_data( $handle, 'l10n', array( $object_name, $l10n ) ); + } + + function set_group( $handle, $recursion, $group = false ) { + $grp = isset($this->registered[$handle]->extra['group']) ? (int) $this->registered[$handle]->extra['group'] : 0; + if ( false !== $group && $grp > $group ) + $grp = $group; + + return parent::set_group( $handle, $recursion, $grp ); + } + + function all_deps( $handles, $recursion = false, $group = false ) { + $r = parent::all_deps( $handles, $recursion ); + if ( !$recursion ) + $this->to_do = apply_filters( 'print_scripts_array', $this->to_do ); + return $r; + } + + function do_head_items() { + $this->do_items(false, 0); + return $this->done; + } + + function do_footer_items() { + if ( !empty($this->in_footer) ) { + foreach( $this->in_footer as $key => $handle ) { + if ( !in_array($handle, $this->done, true) && isset($this->registered[$handle]) ) { + $this->do_item($handle); + $this->done[] = $handle; + unset( $this->in_footer[$key] ); + } + } + } + return $this->done; + } + + function in_default_dir($src) { + if ( ! $this->default_dirs ) + return true; + + foreach ( (array) $this->default_dirs as $test ) { + if ( 0 === strpos($src, $test) ) + return true; + } + return false; + } + + function reset() { + $this->do_concat = false; + $this->print_code = ''; + $this->concat = ''; + $this->concat_version = ''; + $this->print_html = ''; + $this->ext_version = ''; + $this->ext_handles = ''; + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-styles.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-styles.php new file mode 100644 index 0000000..83b4add --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-styles.php @@ -0,0 +1,124 @@ +registered[$handle]->ver ) + $ver = ''; + else + $ver = $this->registered[$handle]->ver ? $this->registered[$handle]->ver : $this->default_version; + + if ( isset($this->args[$handle]) ) + $ver = $ver ? $ver . '&' . $this->args[$handle] : $this->args[$handle]; + + if ( $this->do_concat ) { + if ( $this->in_default_dir($this->registered[$handle]->src) && !isset($this->registered[$handle]->extra['conditional']) && !isset($this->registered[$handle]->extra['alt']) ) { + $this->concat .= "$handle,"; + $this->concat_version .= "$handle$ver"; + return true; + } + } + + if ( isset($this->registered[$handle]->args) ) + $media = esc_attr( $this->registered[$handle]->args ); + else + $media = 'all'; + + $href = $this->_css_href( $this->registered[$handle]->src, $ver, $handle ); + $rel = isset($this->registered[$handle]->extra['alt']) && $this->registered[$handle]->extra['alt'] ? 'alternate stylesheet' : 'stylesheet'; + $title = isset($this->registered[$handle]->extra['title']) ? "title='" . esc_attr( $this->registered[$handle]->extra['title'] ) . "'" : ''; + + $end_cond = $tag = ''; + if ( isset($this->registered[$handle]->extra['conditional']) && $this->registered[$handle]->extra['conditional'] ) { + $tag .= "\n"; + } + + $tag .= apply_filters( 'style_loader_tag', "\n", $handle ); + if ( 'rtl' === $this->text_direction && isset($this->registered[$handle]->extra['rtl']) && $this->registered[$handle]->extra['rtl'] ) { + if ( is_bool( $this->registered[$handle]->extra['rtl'] ) ) + $rtl_href = str_replace( '.css', '-rtl.css', $this->_css_href( $this->registered[$handle]->src , $ver, "$handle-rtl" )); + else + $rtl_href = $this->_css_href( $this->registered[$handle]->extra['rtl'], $ver, "$handle-rtl" ); + + $tag .= apply_filters( 'style_loader_tag', "\n", $handle ); + } + + $tag .= $end_cond; + + if ( $this->do_concat ) + $this->print_html .= $tag; + else + echo $tag; + + // Could do something with $this->registered[$handle]->extra here to print out extra CSS rules +// echo "\n"; + + return true; + } + + function all_deps( $handles, $recursion = false, $group = false ) { + $r = parent::all_deps( $handles, $recursion ); + if ( !$recursion ) + $this->to_do = apply_filters( 'print_styles_array', $this->to_do ); + return $r; + } + + function _css_href( $src, $ver, $handle ) { + if ( !preg_match('|^https?://|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) { + $src = $this->base_url . $src; + } + + if ( !empty($ver) ) + $src = add_query_arg('ver', $ver, $src); + $src = apply_filters( 'style_loader_src', $src, $handle ); + return esc_url( $src ); + } + + function in_default_dir($src) { + if ( ! $this->default_dirs ) + return true; + + foreach ( (array) $this->default_dirs as $test ) { + if ( 0 === strpos($src, $test) ) + return true; + } + return false; + } + +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-taxonomy.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-taxonomy.php new file mode 100644 index 0000000..acb4377 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-taxonomy.php @@ -0,0 +1,2082 @@ +__construct( $db ); + register_shutdown_function( array(&$this, '__destruct') ); + } + + /** + * PHP5 constructor - Assigns the database to an attribute of the class. + * + * @param unknown_type $db + */ + function __construct( &$db ) { + $this->db =& $db; + } + + /** + * Does nothing. + * + * @package BackPress + * @subpackage Taxonomy + */ + function __destruct() { + } + + /** + * Return all of the taxonomy names that are of $object_type. + * + * It appears that this function can be used to find all of the names inside of + * $this->taxonomies variable. + * + * get_object_taxonomies('post'); ?> Should + * result in Array('category', 'post_tag') + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses $this->taxonomies + * + * @param array|string|object $object_type Name of the type of taxonomy object, or an object (row from posts) + * @return array The names of all taxonomy of $object_type. + */ + function get_object_taxonomies($object_type) { + $object_type = (array) $object_type; + + // WP DIFF + $taxonomies = array(); + foreach ( (array) $this->taxonomies as $taxonomy ) { + if ( array_intersect($object_type, (array) $taxonomy->object_type) ) + $taxonomies[] = $taxonomy->name; + } + + return $taxonomies; + } + + /** + * Retrieves the taxonomy object of $taxonomy. + * + * The get_taxonomy function will first check that the parameter string given + * is a taxonomy object and if it is, it will return it. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses $this->taxonomies + * @uses $this->is_taxonomy() Checks whether taxonomy exists + * + * @param string $taxonomy Name of taxonomy object to return + * @return object|bool The Taxonomy Object or false if $taxonomy doesn't exist + */ + function get_taxonomy( $taxonomy ) { + if ( !$this->is_taxonomy($taxonomy) ) + return false; + + return $this->taxonomies[$taxonomy]; + } + + /** + * Checks that the taxonomy name exists. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses $this->taxonomies + * + * @param string $taxonomy Name of taxonomy object + * @return bool Whether the taxonomy exists or not. + */ + function is_taxonomy( $taxonomy ) { + return isset($this->taxonomies[$taxonomy]); + } + + /** + * Whether the taxonomy object is hierarchical. + * + * Checks to make sure that the taxonomy is an object first. Then Gets the + * object, and finally returns the hierarchical value in the object. + * + * A false return value might also mean that the taxonomy does not exist. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses $this->is_taxonomy() Checks whether taxonomy exists + * @uses $this->get_taxonomy() Used to get the taxonomy object + * + * @param string $taxonomy Name of taxonomy object + * @return bool Whether the taxonomy is hierarchical + */ + function is_taxonomy_hierarchical($taxonomy) { + if ( !$this->is_taxonomy($taxonomy) ) + return false; + + $taxonomy = $this->get_taxonomy($taxonomy); + return $taxonomy->hierarchical; + } + + /** + * Create or modify a taxonomy object. Do not use before init. + * + * A simple function for creating or modifying a taxonomy object based on the + * parameters given. The function will accept an array (third optional + * parameter), along with strings for the taxonomy name and another string for + * the object type. + * + * The function keeps a default set, allowing for the $args to be optional but + * allow the other functions to still work. It is possible to overwrite the + * default set, which contains two keys: hierarchical and update_count_callback. + * + * Nothing is returned, so expect error maybe or use is_taxonomy() to check + * whether taxonomy exists. + * + * Optional $args contents: + * + * hierarachical - has some defined purpose at other parts of the API and is a + * boolean value. + * + * update_count_callback - works much like a hook, in that it will be called + * when the count is updated. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * @uses $this->taxonomies Inserts new taxonomy object into the list + * + * @param string $taxonomy Name of taxonomy object + * @param string $object_type Name of the object type for the taxonomy object. + * @param array|string $args See above description for the two keys values. + */ + function register_taxonomy( $taxonomy, $object_type, $args = array() ) { + $defaults = array('hierarchical' => false, 'update_count_callback' => ''); + $args = wp_parse_args($args, $defaults); + + $args['name'] = $taxonomy; + $args['object_type'] = $object_type; + $this->taxonomies[$taxonomy] = (object) $args; + } + + // + // Term API + // + + /** + * Retrieve object_ids of valid taxonomy and term. + * + * The strings of $taxonomies must exist before this function will continue. On + * failure of finding a valid taxonomy, it will return an WP_Error class, kind + * of like Exceptions in PHP 5, except you can't catch them. Even so, you can + * still test for the WP_Error class and get the error message. + * + * The $terms aren't checked the same as $taxonomies, but still need to exist + * for $object_ids to be returned. + * + * It is possible to change the order that object_ids is returned by either + * using PHP sort family functions or using the database by using $args with + * either ASC or DESC array. The value should be in the key named 'order'. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses wp_parse_args() Creates an array from string $args. + * + * @param string|array $terms String of term or array of string values of terms that will be used + * @param string|array $taxonomies String of taxonomy name or Array of string values of taxonomy names + * @param array|string $args Change the order of the object_ids, either ASC or DESC + * @return WP_Error|array If the taxonomy does not exist, then WP_Error will be returned. On success + * the array can be empty meaning that there are no $object_ids found or it will return the $object_ids found. + */ + function get_objects_in_term( $terms, $taxonomies, $args = null ) { + if ( !is_array($terms) ) + $terms = array($terms); + + if ( !is_array($taxonomies) ) + $taxonomies = array($taxonomies); + + foreach ( (array) $taxonomies as $taxonomy ) { + if ( !$this->is_taxonomy($taxonomy) ) + return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); + } + + $defaults = array('order' => 'ASC', 'field' => 'term_id'); + $args = wp_parse_args( $args, $defaults ); + extract($args, EXTR_SKIP); + + if ( 'tt_id' == $field ) + $field = 'tt.term_taxonomy_id'; + else + $field = 'tt.term_id'; + + $order = ( 'desc' == strtolower($order) ) ? 'DESC' : 'ASC'; + + $terms = array_map('intval', $terms); + + $taxonomies = "'" . implode("', '", $taxonomies) . "'"; + $terms = "'" . implode("', '", $terms) . "'"; + + $object_ids = $this->db->get_col("SELECT tr.object_id FROM {$this->db->term_relationships} AS tr INNER JOIN {$this->db->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ($taxonomies) AND $field IN ($terms) ORDER BY tr.object_id $order"); + + if ( ! $object_ids ) + return array(); + + return $object_ids; + } + + /** + * Get all Term data from database by Term ID. + * + * The usage of the get_term function is to apply filters to a term object. It + * is possible to get a term object from the database before applying the + * filters. + * + * $term ID must be part of $taxonomy, to get from the database. Failure, might + * be able to be captured by the hooks. Failure would be the same value as $this->db + * returns for the get_row method. + * + * There are two hooks, one is specifically for each term, named 'get_term', and + * the second is for the taxonomy name, 'term_$taxonomy'. Both hooks gets the + * term object, and the taxonomy name as parameters. Both hooks are expected to + * return a Term object. + * + * 'get_term' hook - Takes two parameters the term Object and the taxonomy name. + * Must return term object. Used in get_term() as a catch-all filter for every + * $term. + * + * 'get_$taxonomy' hook - Takes two parameters the term Object and the taxonomy + * name. Must return term object. $taxonomy will be the taxonomy name, so for + * example, if 'category', it would be 'get_category' as the filter name. Useful + * for custom taxonomies or plugging into default taxonomies. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses $this->sanitize_term() Cleanses the term based on $filter context before returning. + * @see $this->sanitize_term_field() The $context param lists the available values for get_term_by() $filter param. + * + * @param int|object $term If integer, will get from database. If object will apply filters and return $term. + * @param string $taxonomy Taxonomy name that $term is part of. + * @param string $output Constant OBJECT, ARRAY_A, or ARRAY_N + * @param string $filter Optional, default is raw or no WordPress defined filter will applied. + * @return mixed|null|WP_Error Term Row from database. Will return null if $term is empty. If taxonomy does not + * exist then WP_Error will be returned. + */ + function &get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') { + if ( empty($term) ) { + $error = new WP_Error('invalid_term', __('Empty Term')); + return $error; + } + + if ( !$this->is_taxonomy($taxonomy) ) { + $error = new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); + return $error; + } + + if ( is_object($term) ) { + wp_cache_add($term->term_id, $term, $taxonomy); + wp_cache_add($term->term_taxonomy_id, $term->term_id, "$taxonomy:tt_id" ); + $_term = $term; + } else { + $term = (int) $term; + if ( ! $_term = wp_cache_get($term, $taxonomy) ) { + $_term = $this->db->get_row( $this->db->prepare( "SELECT t.*, tt.* FROM {$this->db->terms} AS t INNER JOIN {$this->db->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND t.term_id = %s LIMIT 1", $taxonomy, $term) ); + wp_cache_add($term, $_term, $taxonomy); + wp_cache_add($_term->term_taxonomy_id, $_term->term_id, "$taxonomy:tt_id" ); + } + } + + $_term = apply_filters('get_term', $_term, $taxonomy); + $_term = apply_filters("get_$taxonomy", $_term, $taxonomy); + $_term = $this->sanitize_term($_term, $taxonomy, $filter); + + backpress_convert_object( $_term, $output ); + + return $_term; + } + + /** + * Get all Term data from database by Term field and data. + * + * Warning: $value is not escaped for 'name' $field. You must do it yourself, if + * required. + * + * The default $field is 'id', therefore it is possible to also use null for + * field, but not recommended that you do so. + * + * If $value does not exist, the return value will be false. If $taxonomy exists + * and $field and $value combinations exist, the Term will be returned. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses $this->sanitize_term() Cleanses the term based on $filter context before returning. + * @see $this->sanitize_term_field() The $context param lists the available values for get_term_by() $filter param. + * + * @param string $field Either 'slug', 'name', 'id', or 'tt_id' + * @param string|int $value Search for this term value + * @param string $taxonomy Taxonomy Name + * @param string $output Constant OBJECT, ARRAY_A, or ARRAY_N + * @param string $filter Optional, default is raw or no WordPress defined filter will applied. + * @return mixed Term Row from database. Will return false if $taxonomy does not exist or $term was not found. + */ + function get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw') { + if ( !$this->is_taxonomy($taxonomy) ) + return false; + + if ( 'slug' == $field ) { + $field = 't.slug'; + $value = $this->sanitize_term_slug($value, $taxonomy); + if ( empty($value) ) + return false; + } else if ( 'name' == $field ) { + // Assume already escaped + $field = 't.name'; + } else if ( 'tt_id' == $field ) { + $field = 'tt.term_taxonomy_id'; + $value = (int) $value; + if ( $_term_id = wp_cache_get( $value, "$taxonomy:tt_id" ) ) + return $this->get_term( $_term_id, $taxonomy, $output, $filter ); + } else { + $field = 't.term_id'; + $value = (int) $value; + } + + $term = $this->db->get_row( $this->db->prepare( "SELECT t.*, tt.* FROM {$this->db->terms} AS t INNER JOIN {$this->db->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value) ); + if ( !$term ) + return false; + + wp_cache_add($term->term_id, $term, $taxonomy); + wp_cache_add($term->term_taxonomy_id, $term->term_id, "$taxonomy:tt_id" ); + + $term = $this->sanitize_term($term, $taxonomy, $filter); + + backpress_convert_object( $term, $output ); + + return $term; + } + + /** + * Merge all term children into a single array of their IDs. + * + * This recursive function will merge all of the children of $term into the same + * array of term IDs. Only useful for taxonomies which are hierarchical. + * + * Will return an empty array if $term does not exist in $taxonomy. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses $this->_get_term_hierarchy() + * @uses $this->get_term_children() Used to get the children of both $taxonomy and the parent $term + * + * @param string $term ID of Term to get children + * @param string $taxonomy Taxonomy Name + * @return array|WP_Error List of Term Objects. WP_Error returned if $taxonomy does not exist + */ + function get_term_children( $term_id, $taxonomy ) { + if ( !$this->is_taxonomy($taxonomy) ) + return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); + + $term_id = intval( $term_id ); + + $terms = $this->_get_term_hierarchy($taxonomy); + + if ( ! isset($terms[$term_id]) ) + return array(); + + $children = $terms[$term_id]; + + foreach ( (array) $terms[$term_id] as $child ) { + if ( isset($terms[$child]) ) + $children = array_merge($children, $this->get_term_children($child, $taxonomy)); + } + + return $children; + } + + /** + * Get sanitized Term field. + * + * Does checks for $term, based on the $taxonomy. The function is for contextual + * reasons and for simplicity of usage. See sanitize_term_field() for more + * information. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses $this->sanitize_term_field() Passes the return value in sanitize_term_field on success. + * + * @param string $field Term field to fetch + * @param int $term Term ID + * @param string $taxonomy Taxonomy Name + * @param string $context Optional, default is display. Look at sanitize_term_field() for available options. + * @return mixed Will return an empty string if $term is not an object or if $field is not set in $term. + */ + function get_term_field( $field, $term, $taxonomy, $context = 'display' ) { + $term = (int) $term; + $term = $this->get_term( $term, $taxonomy ); + if ( is_wp_error($term) ) + return $term; + + if ( !is_object($term) ) + return ''; + + if ( !isset($term->$field) ) + return ''; + + return $this->sanitize_term_field($field, $term->$field, $term->term_id, $taxonomy, $context); + } + + /** + * Sanitizes Term for editing. + * + * Return value is sanitize_term() and usage is for sanitizing the term for + * editing. Function is for contextual and simplicity. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses $this->sanitize_term() Passes the return value on success + * + * @param int|object $id Term ID or Object + * @param string $taxonomy Taxonomy Name + * @return mixed|null|WP_Error Will return empty string if $term is not an object. + */ + function get_term_to_edit( $id, $taxonomy ) { + $term = $this->get_term( $id, $taxonomy ); + + if ( is_wp_error($term) ) + return $term; + + if ( !is_object($term) ) + return ''; + + return $this->sanitize_term($term, $taxonomy, 'edit'); + } + + /** + * Retrieve the terms in a given taxonomy or list of taxonomies. + * + * You can fully inject any customizations to the query before it is sent, as + * well as control the output with a filter. + * + * The 'get_terms' filter will be called when the cache has the term and will + * pass the found term along with the array of $taxonomies and array of $args. + * This filter is also called before the array of terms is passed and will pass + * the array of terms, along with the $taxonomies and $args. + * + * The 'list_terms_exclusions' filter passes the compiled exclusions along with + * the $args. + * + * The 'get_terms_orderby' filter passes the ORDER BY clause for the query + * along with the $args array. + * + * The 'get_terms_fields' filter passes the fields for the SELECT query + * along with the $args array. + * + * The list of arguments that $args can contain, which will overwrite the defaults: + * + * orderby - Default is 'name'. Can be name, count, term_group, slug or nothing + * (will use term_id), Passing a custom value other than these will cause it to + * order based on the custom value. + * + * order - Default is ASC. Can use DESC. + * + * hide_empty - Default is true. Will not return empty terms, which means + * terms whose count is 0 according to the given taxonomy. + * + * exclude - Default is an empty string. A comma- or space-delimited string + * of term ids to exclude from the return array. If 'include' is non-empty, + * 'exclude' is ignored. + * + * include - Default is an empty string. A comma- or space-delimited string + * of term ids to include in the return array. + * + * number - The maximum number of terms to return. Default is empty. + * + * offset - The number by which to offset the terms query. + * + * fields - Default is 'all', which returns an array of term objects. + * If 'fields' is 'ids' or 'names', returns an array of + * integers or strings, respectively. + * + * slug - Returns terms whose "slug" matches this value. Default is empty string. + * + * hierarchical - Whether to include terms that have non-empty descendants + * (even if 'hide_empty' is set to true). + * + * search - Returned terms' names will contain the value of 'search', + * case-insensitive. Default is an empty string. + * + * name__like - Returned terms' names will begin with the value of 'name__like', + * case-insensitive. Default is empty string. + * + * The argument 'pad_counts', if set to true will include the quantity of a term's + * children in the quantity of each term's "count" object variable. + * + * The 'get' argument, if set to 'all' instead of its default empty string, + * returns terms regardless of ancestry or whether the terms are empty. + * + * The 'child_of' argument, when used, should be set to the integer of a term ID. Its default + * is 0. If set to a non-zero value, all returned terms will be descendants + * of that term according to the given taxonomy. Hence 'child_of' is set to 0 + * if more than one taxonomy is passed in $taxonomies, because multiple taxonomies + * make term ancestry ambiguous. + * + * The 'parent' argument, when used, should be set to the integer of a term ID. Its default is + * the empty string '', which has a different meaning from the integer 0. + * If set to an integer value, all returned terms will have as an immediate + * ancestor the term whose ID is specified by that integer according to the given taxonomy. + * The 'parent' argument is different from 'child_of' in that a term X is considered a 'parent' + * of term Y only if term X is the father of term Y, not its grandfather or great-grandfather, etc. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses wp_parse_args() Merges the defaults with those defined by $args and allows for strings. + * + * @param string|array Taxonomy name or list of Taxonomy names + * @param string|array $args The values of what to search for when returning terms + * @return array|WP_Error List of Term Objects and their children. Will return WP_Error, if any of $taxonomies do not exist. + */ + function &get_terms($taxonomies, $args = '') { + $empty_array = array(); + + $single_taxonomy = false; + if ( !is_array($taxonomies) ) { + $single_taxonomy = true; + $taxonomies = array($taxonomies); + } + + foreach ( (array) $taxonomies as $taxonomy ) { + if ( ! $this->is_taxonomy($taxonomy) ) { + $error = & new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); + return $error; + } + } + + $in_taxonomies = "'" . implode("', '", $taxonomies) . "'"; + + $defaults = array('orderby' => 'name', 'order' => 'ASC', + 'hide_empty' => true, 'exclude' => '', 'exclude_tree' => '', 'include' => '', + 'number' => '', 'fields' => 'all', 'slug' => '', 'parent' => '', + 'hierarchical' => true, 'child_of' => 0, 'get' => '', 'name__like' => '', + 'pad_counts' => false, 'offset' => '', 'search' => ''); + $args = wp_parse_args( $args, $defaults ); + $args['number'] = absint( $args['number'] ); + $args['offset'] = absint( $args['offset'] ); + if ( !$single_taxonomy || !$this->is_taxonomy_hierarchical($taxonomies[0]) || + '' !== $args['parent'] ) { + $args['child_of'] = 0; + $args['hierarchical'] = false; + $args['pad_counts'] = false; + } + + if ( 'all' == $args['get'] ) { + $args['child_of'] = 0; + $args['hide_empty'] = 0; + $args['hierarchical'] = false; + $args['pad_counts'] = false; + } + extract($args, EXTR_SKIP); + + if ( $child_of ) { + $hierarchy = $this->_get_term_hierarchy($taxonomies[0]); + if ( !isset($hierarchy[$child_of]) ) + return $empty_array; + } + + if ( $parent ) { + $hierarchy = $this->_get_term_hierarchy($taxonomies[0]); + if ( !isset($hierarchy[$parent]) ) + return $empty_array; + } + + // $args can be whatever, only use the args defined in defaults to compute the key + $filter_key = ( has_filter('list_terms_exclusions') ) ? serialize($GLOBALS['wp_filter']['list_terms_exclusions']) : ''; + $key = md5( serialize( compact(array_keys($defaults)) ) . serialize( $taxonomies ) . $filter_key ); + $last_changed = wp_cache_get('last_changed', 'terms'); + if ( !$last_changed ) { + $last_changed = time(); + wp_cache_set('last_changed', $last_changed, 'terms'); + } + $cache_key = "get_terms:$key:$last_changed"; + $cache = wp_cache_get( $cache_key, 'terms' ); + if ( false !== $cache ) { + $cache = apply_filters('get_terms', $cache, $taxonomies, $args); + return $cache; + } + + $_orderby = strtolower($orderby); + if ( 'count' == $_orderby ) + $orderby = 'tt.count'; + else if ( 'name' == $_orderby ) + $orderby = 't.name'; + else if ( 'slug' == $_orderby ) + $orderby = 't.slug'; + else if ( 'term_group' == $_orderby ) + $orderby = 't.term_group'; + elseif ( empty($_orderby) || 'id' == $_orderby ) + $orderby = 't.term_id'; + + $orderby = apply_filters( 'get_terms_orderby', $orderby, $args ); + + $where = ''; + $inclusions = ''; + if ( !empty($include) ) { + $exclude = ''; + $exclude_tree = ''; + $interms = preg_split('/[\s,]+/',$include); + if ( count($interms) ) { + foreach ( (array) $interms as $interm ) { + if (empty($inclusions)) + $inclusions = ' AND ( t.term_id = ' . intval($interm) . ' '; + else + $inclusions .= ' OR t.term_id = ' . intval($interm) . ' '; + } + } + } + + if ( !empty($inclusions) ) + $inclusions .= ')'; + $where .= $inclusions; + + $exclusions = ''; + if ( ! empty( $exclude_tree ) ) { + $excluded_trunks = preg_split('/[\s,]+/',$exclude_tree); + foreach( (array) $excluded_trunks as $extrunk ) { + $excluded_children = (array) $this->get_terms($taxonomies[0], array('child_of' => intval($extrunk), 'fields' => 'ids')); + $excluded_children[] = $extrunk; + foreach( (array) $excluded_children as $exterm ) { + if ( empty($exclusions) ) + $exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' '; + else + $exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' '; + + } + } + } + if ( !empty($exclude) ) { + $exterms = preg_split('/[\s,]+/',$exclude); + if ( count($exterms) ) { + foreach ( (array) $exterms as $exterm ) { + if ( empty($exclusions) ) + $exclusions = ' AND ( t.term_id <> ' . intval($exterm) . ' '; + else + $exclusions .= ' AND t.term_id <> ' . intval($exterm) . ' '; + } + } + } + + if ( !empty($exclusions) ) + $exclusions .= ')'; + $exclusions = apply_filters('list_terms_exclusions', $exclusions, $args ); + $where .= $exclusions; + + if ( !empty($slug) ) { + $slug = $this->sanitize_term_slug($slug); + $where .= " AND t.slug = '$slug'"; + } + + if ( !empty($name__like) ) + $where .= " AND t.name LIKE '{$name__like}%'"; + + if ( '' !== $parent ) { + $parent = (int) $parent; + $where .= " AND tt.parent = '$parent'"; + } + + if ( $hide_empty && !$hierarchical ) + $where .= ' AND tt.count > 0'; + + // don't limit the query results when we have to descend the family tree + if ( ! empty($number) && ! $hierarchical && empty( $child_of ) && '' === $parent ) { + if( $offset ) + $limit = 'LIMIT ' . $offset . ',' . $number; + else + $limit = 'LIMIT ' . $number; + + } else + $limit = ''; + + if ( !empty($search) ) { + $search = like_escape($search); + $where .= " AND (t.name LIKE '%$search%')"; + } + + if ( !in_array( $fields, array( 'all', 'ids', 'names', 'tt_ids' ) ) ) + $fields = 'all'; + + $selects = array(); + if ( 'all' == $fields ) + $selects = array('t.*', 'tt.*'); + else if ( 'ids' == $fields ) + $selects = array('t.term_id', 'tt.parent', 'tt.count'); + else if ( 'names' == $fields ) + $selects = array('t.term_id', 'tt.parent', 'tt.count', 't.name'); + $select_this = implode(', ', apply_filters( 'get_terms_fields', $selects, $args )); + + $query = "SELECT $select_this FROM {$this->db->terms} AS t INNER JOIN {$this->db->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ($in_taxonomies) $where ORDER BY $orderby $order $limit"; + + $terms = $this->db->get_results($query); + if ( 'all' == $fields ) { + $this->update_term_cache($terms); + } + + if ( empty($terms) ) { + wp_cache_add( $cache_key, array(), 'terms' ); + $terms = apply_filters('get_terms', array(), $taxonomies, $args); + return $terms; + } + + if ( $child_of || $hierarchical ) { + $children = $this->_get_term_hierarchy($taxonomies[0]); + if ( ! empty($children) ) + $terms = & $this->_get_term_children($child_of, $terms, $taxonomies[0]); + } + + // Update term counts to include children. + if ( $pad_counts ) + $this->_pad_term_counts($terms, $taxonomies[0]); + + // Make sure we show empty categories that have children. + if ( $hierarchical && $hide_empty && is_array($terms) ) { + foreach ( $terms as $k => $term ) { + if ( ! $term->count ) { + $children = $this->_get_term_children($term->term_id, $terms, $taxonomies[0]); + if( is_array($children) ) + foreach ( $children as $child ) + if ( $child->count ) + continue 2; + + // It really is empty + unset($terms[$k]); + } + } + } + reset ( $terms ); + + $_terms = array(); + if ( 'ids' == $fields ) { + while ( $term = array_shift($terms) ) + $_terms[] = $term->term_id; + $terms = $_terms; + } elseif ( 'names' == $fields ) { + while ( $term = array_shift($terms) ) + $_terms[] = $term->name; + $terms = $_terms; + } + + if ( 0 < $number && intval(@count($terms)) > $number ) { + $terms = array_slice($terms, $offset, $number); + } + + wp_cache_add( $cache_key, $terms, 'terms' ); + + $terms = apply_filters('get_terms', $terms, $taxonomies, $args); + return $terms; + } + + /** + * Check if Term exists. + * + * Returns the index of a defined term, or 0 (false) if the term doesn't exist. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @param int|string $term The term to check + * @param string $taxonomy The taxonomy name to use + * @param int $parent ID of parent term under which to confine the exists search. + * @return mixed Get the term id or Term Object, if exists. + */ + function is_term($term, $taxonomy = '', $parent = 0) { + $select = "SELECT term_id FROM {$this->db->terms} as t WHERE "; + $tax_select = "SELECT tt.term_id, tt.term_taxonomy_id FROM {$this->db->terms} AS t INNER JOIN {$this->db->term_taxonomy} as tt ON tt.term_id = t.term_id WHERE "; + + if ( is_int($term) ) { + if ( 0 == $term ) + return 0; + $where = 't.term_id = %d'; + if ( !empty($taxonomy) ) + return $this->db->get_row( $this->db->prepare( $tax_select . $where . " AND tt.taxonomy = %s", $term, $taxonomy ), ARRAY_A ); + else + return $this->db->get_var( $this->db->prepare( $select . $where, $term ) ); + } + + $term = trim( stripslashes( $term ) ); + + if ( '' === $slug = $this->sanitize_term_slug($term) ) + return 0; + + $where = 't.slug = %s'; + $else_where = 't.name = %s'; + $where_fields = array($slug); + $else_where_fields = array($term); + if ( !empty($taxonomy) ) { + $parent = (int) $parent; + if ( $parent > 0 ) { + $where_fields[] = $parent; + $else_where_fields[] = $parent; + $where .= ' AND tt.parent = %d'; + $else_where .= ' AND tt.parent = %d'; + } + + $where_fields[] = $taxonomy; + $else_where_fields[] = $taxonomy; + + if ( $result = $this->db->get_row( $this->db->prepare("SELECT tt.term_id, tt.term_taxonomy_id FROM {$this->db->terms} AS t INNER JOIN {$this->db->term_taxonomy} as tt ON tt.term_id = t.term_id WHERE $where AND tt.taxonomy = %s", $where_fields), ARRAY_A) ) + return $result; + + return $this->db->get_row( $this->db->prepare("SELECT tt.term_id, tt.term_taxonomy_id FROM {$this->db->terms} AS t INNER JOIN {$this->db->term_taxonomy} as tt ON tt.term_id = t.term_id WHERE $else_where AND tt.taxonomy = %s", $else_where_fields), ARRAY_A); + } + + if ( $result = $this->db->get_var( $this->db->prepare("SELECT term_id FROM {$this->db->terms} as t WHERE $where", $where_fields) ) ) + return $result; + + return $this->db->get_var( $this->db->prepare("SELECT term_id FROM {$this->db->terms} as t WHERE $else_where", $else_where_fields) ); + } + + function sanitize_term_slug( $title, $taxonomy = '', $term_id = 0 ) { + return apply_filters( 'pre_term_slug', $title, $taxonomy, $term_id ); + } + + function format_to_edit( $text ) { + return format_to_edit( $text ); + } + + /** + * Sanitize Term all fields + * + * Relies on sanitize_term_field() to sanitize the term. The difference + * is that this function will sanitize all fields. The + * context is based on sanitize_term_field(). + * + * The $term is expected to be either an array or an object. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses $this->sanitize_term_field Used to sanitize all fields in a term + * + * @param array|object $term The term to check + * @param string $taxonomy The taxonomy name to use + * @param string $context Default is 'display'. + * @return array|object Term with all fields sanitized + */ + function sanitize_term($term, $taxonomy, $context = 'display') { + + if ( 'raw' == $context ) + return $term; + + $fields = array('term_id', 'name', 'description', 'slug', 'count', 'parent', 'term_group'); + + $do_object = false; + if ( is_object($term) ) + $do_object = true; + + $term_id = $do_object ? $term->term_id : (isset($term['term_id']) ? $term['term_id'] : 0); + + foreach ( (array) $fields as $field ) { + if ( $do_object ) { + if ( isset($term->$field) ) + $term->$field = $this->sanitize_term_field($field, $term->$field, $term_id, $taxonomy, $context); + } else { + if ( isset($term[$field]) ) + $term[$field] = $this->sanitize_term_field($field, $term[$field], $term_id, $taxonomy, $context); + } + } + + if ( $do_object ) + $term->filter = $context; + else + $term['filter'] = $context; + + return $term; + } + + /** + * Cleanse the field value in the term based on the context. + * + * Passing a term field value through the function should be assumed to have + * cleansed the value for whatever context the term field is going to be used. + * + * If no context or an unsupported context is given, then default filters will + * be applied. + * + * There are enough filters for each context to support a custom filtering + * without creating your own filter function. Simply create a function that + * hooks into the filter you need. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @param string $field Term field to sanitize + * @param string $value Search for this term value + * @param int $term_id Term ID + * @param string $taxonomy Taxonomy Name + * @param string $context Either edit, db, display, attribute, or js. + * @return mixed sanitized field + */ + function sanitize_term_field($field, $value, $term_id, $taxonomy, $context) { + if ( 'parent' == $field || 'term_id' == $field || 'count' == $field || 'term_group' == $field ) { + $value = (int) $value; + if ( $value < 0 ) + $value = 0; + } + + if ( 'raw' == $context ) + return $value; + + if ( 'edit' == $context ) { + $value = apply_filters("edit_term_$field", $value, $term_id, $taxonomy); + $value = apply_filters("edit_${taxonomy}_$field", $value, $term_id); + if ( 'description' == $field ) + $value = $this->format_to_edit($value); + else + $value = esc_attr($value); + } else if ( 'db' == $context ) { + $value = apply_filters("pre_term_$field", $value, $taxonomy); + $value = apply_filters("pre_${taxonomy}_$field", $value); + // WP DIFF + } else if ( 'rss' == $context ) { + $value = apply_filters("term_${field}_rss", $value, $taxonomy); + $value = apply_filters("${taxonomy}_${field}_rss", $value); + } else { + // Use display filters by default. + $value = apply_filters("term_$field", $value, $term_id, $taxonomy, $context); + $value = apply_filters("${taxonomy}_$field", $value, $term_id, $context); + } + + if ( 'attribute' == $context ) + $value = esc_attr($value); + else if ( 'js' == $context ) + $value = esc_js($value); + + return $value; + } + + /** + * Count how many terms are in Taxonomy. + * + * Default $args is 'ignore_empty' which can be 'ignore_empty=true' + * or array('ignore_empty' => true);. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses wp_parse_args() Turns strings into arrays and merges defaults into an array. + * + * @param string $taxonomy Taxonomy name + * @param array|string $args Overwrite defaults + * @return int How many terms are in $taxonomy + */ + function count_terms( $taxonomy, $args = array() ) { + $defaults = array('ignore_empty' => false); + $args = wp_parse_args($args, $defaults); + extract($args, EXTR_SKIP); + + $where = ''; + if ( $ignore_empty ) + $where = 'AND count > 0'; + + return $this->db->get_var( $this->db->prepare( "SELECT COUNT(*) FROM {$this->db->term_taxonomy} WHERE taxonomy = %s $where", $taxonomy ) ); + } + + /** + * Will unlink the term from the taxonomy. + * + * Will remove the term's relationship to the taxonomy, not the term or taxonomy + * itself. The term and taxonomy will still exist. Will require the term's + * object ID to perform the operation. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @param int $object_id The term Object Id that refers to the term + * @param string|array $taxonomy List of Taxonomy Names or single Taxonomy name. + */ + function delete_object_term_relationships( $object_id, $taxonomies ) { + $object_id = (int) $object_id; + + if ( !is_array($taxonomies) ) + $taxonomies = array($taxonomies); + + foreach ( (array) $taxonomies as $taxonomy ) { + $terms = $this->get_object_terms($object_id, $taxonomy, array('fields' => 'tt_ids')); + $in_terms = "'" . implode("', '", $terms) . "'"; + $this->db->query( $this->db->prepare( "DELETE FROM {$this->db->term_relationships} WHERE object_id = %d AND term_taxonomy_id IN ($in_terms)", $object_id ) ); + $this->update_term_count($terms, $taxonomy); + } + } + + /** + * Removes a term from the database. + * + * If the term is a parent of other terms, then the children will be updated to + * that term's parent. + * + * The $args 'default' will only override the terms found, if there is only one + * term found. Any other and the found terms are used. + * + * The $args 'force_default' will force the term supplied as default to be + * assigned even if the object was not going to be termless + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses do_action() Calls both 'delete_term' and 'delete_$taxonomy' action + * hooks, passing term object, term id. 'delete_term' gets an additional + * parameter with the $taxonomy parameter. + * + * @param int $term Term ID + * @param string $taxonomy Taxonomy Name + * @param array|string $args Optional. Change 'default' term id and override found term ids. + * @return bool|WP_Error Returns false if not term; true if completes delete action. + */ + function delete_term( $term, $taxonomy, $args = array() ) { + $term = (int) $term; + + if ( ! $ids = $this->is_term($term, $taxonomy) ) + return false; + if ( is_wp_error( $ids ) ) + return $ids; + + $tt_id = $ids['term_taxonomy_id']; + + $defaults = array(); + $args = wp_parse_args($args, $defaults); + extract($args, EXTR_SKIP); + + if ( isset($default) ) { + $default = (int) $default; + if ( !$this->is_term($default, $taxonomy) ) + unset($default); + } + + // Update children to point to new parent + if ( $this->is_taxonomy_hierarchical($taxonomy) ) { + $term_obj = $this->get_term($term, $taxonomy); + if ( is_wp_error( $term_obj ) ) + return $term_obj; + $parent = $term_obj->parent; + + $this->db->update( $this->db->term_taxonomy, compact( 'parent' ), array( 'parent' => $term_obj->term_id ) + compact( 'taxonomy' ) ); + } + + $objects = $this->db->get_col( $this->db->prepare( "SELECT object_id FROM {$this->db->term_relationships} WHERE term_taxonomy_id = %d", $tt_id ) ); + + foreach ( (array) $objects as $object ) { + $terms = $this->get_object_terms($object, $taxonomy, array('fields' => 'ids', 'orderby' => 'none')); + if ( 1 == count($terms) && isset($default) ) { + $terms = array($default); + } else { + $terms = array_diff($terms, array($term)); + if (isset($default) && isset($force_default) && $force_default) + $terms = array_merge($terms, array($default)); + } + $terms = array_map('intval', $terms); + $this->set_object_terms($object, $terms, $taxonomy); + } + + $this->db->query( $this->db->prepare( "DELETE FROM {$this->db->term_taxonomy} WHERE term_taxonomy_id = %d", $tt_id ) ); + + // Delete the term if no taxonomies use it. + if ( !$this->db->get_var( $this->db->prepare( "SELECT COUNT(*) FROM {$this->db->term_taxonomy} WHERE term_id = %d", $term) ) ) + $this->db->query( $this->db->prepare( "DELETE FROM {$this->db->terms} WHERE term_id = %d", $term) ); + + $this->clean_term_cache($term, $taxonomy); + + do_action('delete_term', $term, $tt_id, $taxonomy); + do_action("delete_$taxonomy", $term, $tt_id); + + return true; + } + + /** + * Retrieves the terms associated with the given object(s), in the supplied taxonomies. + * + * The following information has to do the $args parameter and for what can be + * contained in the string or array of that parameter, if it exists. + * + * The first argument is called, 'orderby' and has the default value of 'name'. + * The other value that is supported is 'count'. + * + * The second argument is called, 'order' and has the default value of 'ASC'. + * The only other value that will be acceptable is 'DESC'. + * + * The final argument supported is called, 'fields' and has the default value of + * 'all'. There are multiple other options that can be used instead. Supported + * values are as follows: 'all', 'ids', 'names', and finally + * 'all_with_object_id'. + * + * The fields argument also decides what will be returned. If 'all' or + * 'all_with_object_id' is choosen or the default kept intact, then all matching + * terms objects will be returned. If either 'ids' or 'names' is used, then an + * array of all matching term ids or term names will be returned respectively. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @param int|array $object_id The id of the object(s) to retrieve. + * @param string|array $taxonomies The taxonomies to retrieve terms from. + * @param array|string $args Change what is returned + * @return array|WP_Error The requested term data or empty array if no terms found. WP_Error if $taxonomy does not exist. + */ + function get_object_terms($object_ids, $taxonomies, $args = array()) { + if ( !is_array($taxonomies) ) + $taxonomies = array($taxonomies); + + foreach ( (array) $taxonomies as $taxonomy ) { + if ( !$this->is_taxonomy($taxonomy) ) + return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); + } + + if ( !is_array($object_ids) ) + $object_ids = array($object_ids); + $object_ids = array_map('intval', $object_ids); + + $defaults = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all'); + $args = wp_parse_args( $args, $defaults ); + + $terms = array(); + if ( count($taxonomies) > 1 ) { + foreach ( $taxonomies as $index => $taxonomy ) { + $t = $this->get_taxonomy($taxonomy); + if ( isset($t->args) && is_array($t->args) && $args != array_merge($args, $t->args) ) { + unset($taxonomies[$index]); + $terms = array_merge($terms, $this->get_object_terms($object_ids, $taxonomy, array_merge($args, $t->args))); + } + } + } else { + $t = $this->get_taxonomy($taxonomies[0]); + if ( isset($t->args) && is_array($t->args) ) + $args = array_merge($args, $t->args); + } + + extract($args, EXTR_SKIP); + + if ( 'count' == $orderby ) + $orderby = 'tt.count'; + else if ( 'name' == $orderby ) + $orderby = 't.name'; + else if ( 'slug' == $orderby ) + $orderby = 't.slug'; + else if ( 'term_group' == $orderby ) + $orderby = 't.term_group'; + else if ( 'term_order' == $orderby ) + $orderby = 'tr.term_order'; + else if ( 'none' == $orderby ) { + $orderby = ''; + $order = ''; + } else { + $orderby = 't.term_id'; + } + + // tt_ids queries can only be none or tr.term_taxonomy_id + if ( ('tt_ids' == $fields) && !empty($orderby) ) + $orderby = 'tr.term_taxonomy_id'; + + if ( !empty($orderby) ) + $orderby = "ORDER BY $orderby"; + + $taxonomies = "'" . implode("', '", $taxonomies) . "'"; + $object_ids = implode(', ', $object_ids); + + $select_this = ''; + if ( 'all' == $fields ) + $select_this = 't.*, tt.*'; + else if ( 'ids' == $fields ) + $select_this = 't.term_id'; + else if ( 'names' == $fields ) + $select_this = 't.name'; + else if ( 'all_with_object_id' == $fields ) + $select_this = 't.*, tt.*, tr.object_id'; + + $query = "SELECT $select_this FROM {$this->db->terms} AS t INNER JOIN {$this->db->term_taxonomy} AS tt ON tt.term_id = t.term_id INNER JOIN {$this->db->term_relationships} AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ($taxonomies) AND tr.object_id IN ($object_ids) $orderby $order"; + + if ( 'all' == $fields || 'all_with_object_id' == $fields ) { + $terms = array_merge($terms, $this->db->get_results($query)); + $this->update_term_cache($terms); + } else if ( 'ids' == $fields || 'names' == $fields ) { + $terms = array_merge($terms, $this->db->get_col($query)); + } else if ( 'tt_ids' == $fields ) { + $terms = $this->db->get_col("SELECT tr.term_taxonomy_id FROM {$this->db->term_relationships} AS tr INNER JOIN {$this->db->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id IN ($object_ids) AND tt.taxonomy IN ($taxonomies) $orderby $order"); + } + + if ( ! $terms ) + $terms = array(); + + return apply_filters('wp_get_object_terms', $terms, $object_ids, $taxonomies, $args); + } + + /** + * Adds a new term to the database. Optionally marks it as an alias of an existing term. + * + * Error handling is assigned for the nonexistance of the $taxonomy and $term + * parameters before inserting. If both the term id and taxonomy exist + * previously, then an array will be returned that contains the term id and the + * contents of what is returned. The keys of the array are 'term_id' and + * 'term_taxonomy_id' containing numeric values. + * + * It is assumed that the term does not yet exist or the above will apply. The + * term will be first added to the term table and then related to the taxonomy + * if everything is well. If everything is correct, then several actions will be + * run prior to a filter and then several actions will be run after the filter + * is run. + * + * The arguments decide how the term is handled based on the $args parameter. + * The following is a list of the available overrides and the defaults. + * + * 'alias_of'. There is no default, but if added, expected is the slug that the + * term will be an alias of. Expected to be a string. + * + * 'description'. There is no default. If exists, will be added to the database + * along with the term. Expected to be a string. + * + * 'parent'. Expected to be numeric and default is 0 (zero). Will assign value + * of 'parent' to the term. + * + * 'slug'. Expected to be a string. There is no default. + * + * If 'slug' argument exists then the slug will be checked to see if it is not + * a valid term. If that check succeeds (it is not a valid term), then it is + * added and the term id is given. If it fails, then a check is made to whether + * the taxonomy is hierarchical and the parent argument is not empty. If the + * second check succeeds, the term will be inserted and the term id will be + * given. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses do_action() Calls 'create_term' hook with the term id and taxonomy id as parameters. + * @uses do_action() Calls 'create_$taxonomy' hook with term id and taxonomy id as parameters. + * @uses apply_filters() Calls 'term_id_filter' hook with term id and taxonomy id as parameters. + * @uses do_action() Calls 'created_term' hook with the term id and taxonomy id as parameters. + * @uses do_action() Calls 'created_$taxonomy' hook with term id and taxonomy id as parameters. + * + * @param int|string $term The term to add or update. + * @param string $taxonomy The taxonomy to which to add the term + * @param array|string $args Change the values of the inserted term + * @return array|WP_Error The Term ID and Term Taxonomy ID + */ + function insert_term( $term, $taxonomy, $args = array() ) { + if ( !$this->is_taxonomy($taxonomy) ) + return new WP_Error('invalid_taxonomy', __('Invalid taxonomy')); + + if ( is_int($term) && 0 == $term ) + return new WP_Error('invalid_term_id', __('Invalid term ID')); + + if ( '' == trim($term) ) + return new WP_Error('empty_term_name', __('A name is required for this term')); + + $defaults = array( 'alias_of' => '', 'description' => '', 'parent' => 0, 'slug' => ''); + $args = wp_parse_args($args, $defaults); + $args['name'] = $term; + $args['taxonomy'] = $taxonomy; + $args = $this->sanitize_term($args, $taxonomy, 'db'); + extract($args, EXTR_SKIP); + + // expected_slashed ($name) + $name = stripslashes($name); + $description = stripslashes($description); + + if ( empty($slug) ) + $slug = $this->sanitize_term_slug($name, $taxonomy); + + $term_group = 0; + if ( $alias_of ) { + $alias = $this->db->get_row( $this->db->prepare( "SELECT term_id, term_group FROM {$this->db->terms} WHERE slug = %s", $alias_of) ); + if ( $alias->term_group ) { + // The alias we want is already in a group, so let's use that one. + $term_group = $alias->term_group; + } else { + // The alias isn't in a group, so let's create a new one and firstly add the alias term to it. + $term_group = $this->db->get_var("SELECT MAX(term_group) FROM {$this->db->terms}") + 1; + $this->db->query( $this->db->prepare( "UPDATE {$this->db->terms} SET term_group = %d WHERE term_id = %d", $term_group, $alias->term_id ) ); + } + } + + if ( ! $term_id = $this->is_term($slug) ) { + if ( false === $this->db->insert( $this->db->terms, compact( 'name', 'slug', 'term_group' ) ) ) + return new WP_Error('db_insert_error', __('Could not insert term into the database'), $this->db->last_error); + $term_id = (int) $this->db->insert_id; + } else if ( $this->is_taxonomy_hierarchical($taxonomy) && !empty($parent) ) { + // If the taxonomy supports hierarchy and the term has a parent, make the slug unique + // by incorporating parent slugs. + $slug = $this->unique_term_slug($slug, (object) $args); + if ( false === $this->db->insert( $this->db->terms, compact( 'name', 'slug', 'term_group' ) ) ) + return new WP_Error('db_insert_error', __('Could not insert term into the database'), $this->db->last_error); + $term_id = (int) $this->db->insert_id; + } + + if ( empty($slug) ) { + $slug = $this->sanitize_term_slug($slug, $taxonomy, $term_id); + $this->db->update( $this->db->terms, compact( 'slug' ), compact( 'term_id' ) ); + } + + $tt_id = $this->db->get_var( $this->db->prepare( "SELECT tt.term_taxonomy_id FROM {$this->db->term_taxonomy} AS tt INNER JOIN {$this->db->terms} AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d", $taxonomy, $term_id ) ); + + if ( !empty($tt_id) ) + return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id); + + $this->db->insert( $this->db->term_taxonomy, compact( 'term_id', 'taxonomy', 'description', 'parent') + array( 'count' => 0 ) ); + $tt_id = (int) $this->db->insert_id; + + do_action("create_term", $term_id, $tt_id); + do_action("create_$taxonomy", $term_id, $tt_id); + + $term_id = apply_filters('term_id_filter', $term_id, $tt_id); + + $this->clean_term_cache($term_id, $taxonomy); + + do_action("created_term", $term_id, $tt_id); + do_action("created_$taxonomy", $term_id, $tt_id); + + return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id); + } + + /** + * Create Term and Taxonomy Relationships. + * + * Relates an object (post, link etc) to a term and taxonomy type. Creates the + * term and taxonomy relationship if it doesn't already exist. Creates a term if + * it doesn't exist (using the slug). + * + * A relationship means that the term is grouped in or belongs to the taxonomy. + * A term has no meaning until it is given context by defining which taxonomy it + * exists under. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @param int $object_id The object to relate to. + * @param array|int|string $term The slug or id of the term, will replace all existing + * related terms in this taxonomy. + * @param array|string $taxonomy The context in which to relate the term to the object. + * @param bool $append If false will delete difference of terms. + * @return array|WP_Error Affected Term IDs + */ + function set_object_terms($object_id, $terms, $taxonomy, $append = false) { + $object_id = (int) $object_id; + + if ( !$this->is_taxonomy($taxonomy) ) + return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); + + if ( !is_array($terms) ) + $terms = array($terms); + + if ( ! $append ) + $old_tt_ids = $this->get_object_terms($object_id, $taxonomy, array('fields' => 'tt_ids', 'orderby' => 'none')); + + $tt_ids = array(); + $term_ids = array(); + + foreach ( (array) $terms as $term ) { + if ( !strlen(trim($term)) ) + continue; + + if ( !$id = $this->is_term($term, $taxonomy) ) + $id = $this->insert_term($term, $taxonomy); + if ( is_wp_error($id) ) + return $id; + $term_ids[] = $id['term_id']; + $id = $id['term_taxonomy_id']; + $tt_ids[] = $id; + + if ( $this->db->get_var( $this->db->prepare( "SELECT term_taxonomy_id FROM {$this->db->term_relationships} WHERE object_id = %d AND term_taxonomy_id = %d", $object_id, $id ) ) ) + continue; + $this->db->insert( $this->db->term_relationships, array( 'object_id' => $object_id, 'term_taxonomy_id' => $id ) ); + } + + $this->update_term_count($tt_ids, $taxonomy); + + if ( ! $append ) { + $delete_terms = array_diff($old_tt_ids, $tt_ids); + if ( $delete_terms ) { + $in_delete_terms = "'" . implode("', '", $delete_terms) . "'"; + $this->db->query( $this->db->prepare("DELETE FROM {$this->db->term_relationships} WHERE object_id = %d AND term_taxonomy_id IN ($in_delete_terms)", $object_id) ); + $this->update_term_count($delete_terms, $taxonomy); + } + } + + $t = $this->get_taxonomy($taxonomy); + if ( ! $append && isset($t->sort) && $t->sort ) { + $values = array(); + $term_order = 0; + $final_tt_ids = $this->get_object_terms($object_id, $taxonomy, 'fields=tt_ids'); + foreach ( $tt_ids as $tt_id ) + if ( in_array($tt_id, $final_tt_ids) ) + $values[] = $this->db->prepare( "(%d, %d, %d)", $object_id, $tt_id, ++$term_order); + if ( $values ) + $this->db->query("INSERT INTO {$this->db->term_relationships} (object_id, term_taxonomy_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)"); + } + + do_action('set_object_terms', $object_id, $terms, $tt_ids, $taxonomy, $append); + return $tt_ids; + } + + /** + * Will make slug unique, if it isn't already. + * + * The $slug has to be unique global to every taxonomy, meaning that one + * taxonomy term can't have a matching slug with another taxonomy term. Each + * slug has to be globally unique for every taxonomy. + * + * The way this works is that if the taxonomy that the term belongs to is + * heirarchical and has a parent, it will append that parent to the $slug. + * + * If that still doesn't return an unique slug, then it try to append a number + * until it finds a number that is truely unique. + * + * The only purpose for $term is for appending a parent, if one exists. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @param string $slug The string that will be tried for a unique slug + * @param object $term The term object that the $slug will belong too + * @return string Will return a true unique slug. + */ + function unique_term_slug($slug, $term) { + // If the taxonomy supports hierarchy and the term has a parent, make the slug unique + // by incorporating parent slugs. + if ( $this->is_taxonomy_hierarchical($term->taxonomy) && !empty($term->parent) ) { + $the_parent = $term->parent; + while ( ! empty($the_parent) ) { + $parent_term = $this->get_term($the_parent, $term->taxonomy); + if ( is_wp_error($parent_term) || empty($parent_term) ) + break; + $slug .= '-' . $parent_term->slug; + if ( empty($parent_term->parent) ) + break; + $the_parent = $parent_term->parent; + } + } + + // If we didn't get a unique slug, try appending a number to make it unique. + if ( !empty($args['term_id']) ) + $query = $this->db->prepare( "SELECT slug FROM {$this->db->terms} WHERE slug = %s AND term_id != %d", $slug, $args['term_id'] ); + else + $query = $this->db->prepare( "SELECT slug FROM {$this->db->terms} WHERE slug = %s", $slug ); + + if ( $this->db->get_var( $query ) ) { + $num = 2; + do { + $alt_slug = $slug . "-$num"; + $num++; + $slug_check = $this->db->get_var( $this->db->prepare( "SELECT slug FROM {$this->db->terms} WHERE slug = %s", $alt_slug ) ); + } while ( $slug_check ); + $slug = $alt_slug; + } + + return $slug; + } + + /** + * Update term based on arguments provided. + * + * The $args will indiscriminately override all values with the same field name. + * Care must be taken to not override important information need to update or + * update will fail (or perhaps create a new term, neither would be acceptable). + * + * Defaults will set 'alias_of', 'description', 'parent', and 'slug' if not + * defined in $args already. + * + * 'alias_of' will create a term group, if it doesn't already exist, and update + * it for the $term. + * + * If the 'slug' argument in $args is missing, then the 'name' in $args will be + * used. It should also be noted that if you set 'slug' and it isn't unique then + * a WP_Error will be passed back. If you don't pass any slug, then a unique one + * will be created for you. + * + * For what can be overrode in $args, check the term scheme can contain and stay + * away from the term keys. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses do_action() Will call both 'edit_term' and 'edit_$taxonomy' twice. + * @uses apply_filters() Will call the 'term_id_filter' filter and pass the term + * id and taxonomy id. + * + * @param int $term_id The ID of the term + * @param string $taxonomy The context in which to relate the term to the object. + * @param array|string $args Overwrite term field values + * @return array|WP_Error Returns Term ID and Taxonomy Term ID + */ + function update_term( $term_id, $taxonomy, $args = array() ) { + if ( !$this->is_taxonomy($taxonomy) ) + return new WP_Error('invalid_taxonomy', __('Invalid taxonomy')); + + $term_id = (int) $term_id; + + // First, get all of the original args + $term = $this->get_term($term_id, $taxonomy, ARRAY_A); + + if ( is_wp_error( $term ) ) + return $term; + + // Merge old and new args with new args overwriting old ones. + $args = array_merge($term, $args); + + $defaults = array( 'alias_of' => '', 'description' => '', 'parent' => 0, 'slug' => ''); + $args = wp_parse_args($args, $defaults); + $args = $this->sanitize_term($args, $taxonomy, 'db'); + extract($args, EXTR_SKIP); + + // expected_slashed ($name) + $name = stripslashes($name); + $description = stripslashes($description); + + if ( '' == trim($name) ) + return new WP_Error('empty_term_name', __('A name is required for this term')); + + $empty_slug = false; + if ( empty($slug) ) { + $empty_slug = true; + $slug = $this->sanitize_term_slug($name, $taxonomy, $term_id); + } + + if ( $alias_of ) { + $alias = $this->db->get_row( $this->db->prepare( "SELECT term_id, term_group FROM {$this->db->terms} WHERE slug = %s", $alias_of) ); + if ( $alias->term_group ) { + // The alias we want is already in a group, so let's use that one. + $term_group = $alias->term_group; + } else { + // The alias isn't in a group, so let's create a new one and firstly add the alias term to it. + $term_group = $this->db->get_var("SELECT MAX(term_group) FROM {$this->db->terms}") + 1; + $this->db->update( $this->db->terms, compact('term_group'), array( 'term_id' => $alias->term_id ) ); + } + } + + // Check for duplicate slug + $id = $this->db->get_var( $this->db->prepare( "SELECT term_id FROM {$this->db->terms} WHERE slug = %s", $slug ) ); + if ( $id && ($id != $term_id) ) { + // If an empty slug was passed or the parent changed, reset the slug to something unique. + // Otherwise, bail. + if ( $empty_slug || ( $parent != $term->parent) ) + $slug = $this->unique_term_slug($slug, (object) $args); + else + return new WP_Error('duplicate_term_slug', sprintf(__('The slug “%s” is already in use by another term'), $slug)); + } + + $this->db->update($this->db->terms, compact( 'name', 'slug', 'term_group' ), compact( 'term_id' ) ); + + if ( empty($slug) ) { + $slug = $this->sanitize_term_slug($name, $taxonomy, $term_id); + $this->db->update( $this->db->terms, compact( 'slug' ), compact( 'term_id' ) ); + } + + $tt_id = $this->db->get_var( $this->db->prepare( "SELECT tt.term_taxonomy_id FROM {$this->db->term_taxonomy} AS tt INNER JOIN {$this->db->terms} AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d", $taxonomy, $term_id) ); + + $this->db->update( $this->db->term_taxonomy, compact( 'term_id', 'taxonomy', 'description', 'parent' ), array( 'term_taxonomy_id' => $tt_id ) ); + + do_action("edit_term", $term_id, $tt_id); + do_action("edit_$taxonomy", $term_id, $tt_id); + + $term_id = apply_filters('term_id_filter', $term_id, $tt_id); + + $this->clean_term_cache($term_id, $taxonomy); + + do_action("edited_term", $term_id, $tt_id); + do_action("edited_$taxonomy", $term_id, $tt_id); + + return array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id); + } + + /** + * Enable or disable term counting. + * + * @since 2.5.0 + * + * @param bool $defer Optional. Enable if true, disable if false. + * @return bool Whether term counting is enabled or disabled. + */ + function defer_term_counting($defer=NULL) { + static $_defer = false; + + if ( is_bool($defer) ) { + $_defer = $defer; + // flush any deferred counts + if ( !$defer ) + $this->update_term_count( NULL, NULL, true ); + } + + return $_defer; + } + + /** + * Updates the amount of terms in taxonomy. + * + * If there is a taxonomy callback applied, then it will be called for updating + * the count. + * + * The default action is to count what the amount of terms have the relationship + * of term ID. Once that is done, then update the database. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * @uses $this->db + * + * @param int|array $terms The ID of the terms + * @param string $taxonomy The context of the term. + * @return bool If no terms will return false, and if successful will return true. + */ + function update_term_count( $terms, $taxonomy, $do_deferred=false ) { + static $_deferred = array(); + + if ( $do_deferred ) { + foreach ( (array) array_keys($_deferred) as $tax ) { + $this->update_term_count_now( $_deferred[$tax], $tax ); + unset( $_deferred[$tax] ); + } + } + + if ( empty($terms) ) + return false; + + if ( !is_array($terms) ) + $terms = array($terms); + + if ( $this->defer_term_counting() ) { + if ( !isset($_deferred[$taxonomy]) ) + $_deferred[$taxonomy] = array(); + $_deferred[$taxonomy] = array_unique( array_merge($_deferred[$taxonomy], $terms) ); + return true; + } + + return $this->update_term_count_now( $terms, $taxonomy ); + } + + /** + * Perform term count update immediately. + * + * @since 2.5.0 + * + * @param array $terms The term_taxonomy_id of terms to update. + * @param string $taxonomy The context of the term. + * @return bool Always true when complete. + */ + function update_term_count_now( $terms, $taxonomy ) { + $terms = array_map('intval', $terms); + + $taxonomy = $this->get_taxonomy($taxonomy); + if ( !empty($taxonomy->update_count_callback) ) { + call_user_func($taxonomy->update_count_callback, $terms); + } else { + // Default count updater + foreach ( (array) $terms as $term ) { + $count = $this->db->get_var( $this->db->prepare( "SELECT COUNT(*) FROM {$this->db->term_relationships} WHERE term_taxonomy_id = %d", $term) ); + $this->db->update( $this->db->term_taxonomy, compact( 'count' ), array( 'term_taxonomy_id' => $term ) ); + } + + } + + $this->clean_term_cache($terms); + + return true; + } + + // + // Cache + // + + /** + * Removes the taxonomy relationship to terms from the cache. + * + * Will remove the entire taxonomy relationship containing term $object_id. The + * term IDs have to exist within the taxonomy $object_type for the deletion to + * take place. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3 + * + * @see $this->get_object_taxonomies() for more on $object_type + * @uses do_action() Will call action hook named, 'clean_object_term_cache' after completion. + * Passes, function params in same order. + * + * @param int|array $object_ids Single or list of term object ID(s) + * @param string $object_type The taxonomy object type + */ + function clean_object_term_cache($object_ids, $object_type) { + if ( !is_array($object_ids) ) + $object_ids = array($object_ids); + + foreach ( $object_ids as $id ) + foreach ( $this->get_object_taxonomies($object_type) as $taxonomy ) + wp_cache_delete($id, "{$taxonomy}_relationships"); + + do_action('clean_object_term_cache', $object_ids, $object_type); + } + + /** + * Will remove all of the term ids from the cache. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @param int|array $ids Single or list of Term IDs + * @param string $taxonomy Can be empty and will assume tt_ids, else will use for context. + */ + function clean_term_cache($ids, $taxonomy = '') { + static $cleaned = array(); + + if ( !is_array($ids) ) + $ids = array($ids); + + $taxonomies = array(); + // If no taxonomy, assume tt_ids. + if ( empty($taxonomy) ) { + $tt_ids = implode( ',', array_map( 'intval', $ids ) ); + $terms = $this->db->get_results("SELECT term_id, term_taxonomy_id, taxonomy FROM {$this->db->term_taxonomy} WHERE term_taxonomy_id IN ($tt_ids)"); + foreach ( (array) $terms as $term ) { + $taxonomies[] = $term->taxonomy; + wp_cache_delete($term->term_id, $term->taxonomy); + wp_cache_delete($term->term_taxonomy_id, "{$term->taxonomy}:tt_id"); + } + $taxonomies = array_unique($taxonomies); + } else { + $tt_ids = implode( ',', array_map( 'intval', $ids ) ); + $terms = $this->db->get_results("SELECT term_id, term_taxonomy_id FROM {$this->db->term_taxonomy} WHERE term_id IN ($tt_ids)"); + foreach ( (array) $terms as $term ) { + wp_cache_delete($term->term_id, $taxonomy); + wp_cache_delete($term->term_taxonomy_id, "$taxonomy:tt_id"); + } + $taxonomies = array($taxonomy); + } + + foreach ( $taxonomies as $taxonomy ) { + if ( isset($cleaned[$taxonomy]) ) + continue; + $cleaned[$taxonomy] = true; + wp_cache_delete('all_ids', $taxonomy); + wp_cache_delete('get', $taxonomy); + $this->delete_children_cache($taxonomy); + } + + wp_cache_delete('get_terms', 'terms'); + + do_action('clean_term_cache', $ids, $taxonomy); + } + + /** + * Retrieves the taxonomy relationship to the term object id. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @uses wp_cache_get() Retrieves taxonomy relationship from cache + * + * @param int|array $id Term object ID + * @param string $taxonomy Taxonomy Name + * @return bool|array Empty array if $terms found, but not $taxonomy. False if nothing is in cache for $taxonomy and $id. + */ + function &get_object_term_cache($id, $taxonomy) { + $cache = wp_cache_get($id, "{$taxonomy}_relationships"); + return $cache; + } + + /** + * Updates the cache for Term ID(s). + * + * Will only update the cache for terms not already cached. + * + * The $object_ids expects that the ids be separated by commas, if it is a + * string. + * + * It should be noted that update_object_term_cache() is very time extensive. It + * is advised that the function is not called very often or at least not for a + * lot of terms that exist in a lot of taxonomies. The amount of time increases + * for each term and it also increases for each taxonomy the term belongs to. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * @uses $this->get_object_terms() Used to get terms from the database to update + * + * @param string|array $object_ids Single or list of term object ID(s) + * @param string $object_type The taxonomy object type + * @return null|bool Null value is given with empty $object_ids. False if + */ + function update_object_term_cache($object_ids, $object_type) { + if ( empty($object_ids) ) + return; + + if ( !is_array($object_ids) ) + $object_ids = explode(',', $object_ids); + + $object_ids = array_map('intval', $object_ids); + + $taxonomies = $this->get_object_taxonomies($object_type); + + $ids = array(); + foreach ( (array) $object_ids as $id ) { + foreach ( $taxonomies as $taxonomy ) { + if ( false === wp_cache_get($id, "{$taxonomy}_relationships") ) { + $ids[] = $id; + break; + } + } + } + + if ( empty( $ids ) ) + return false; + + $terms = $this->get_object_terms($ids, $taxonomies, 'fields=all_with_object_id'); + + $object_terms = array(); + foreach ( (array) $terms as $term ) + $object_terms[$term->object_id][$term->taxonomy][$term->term_id] = $term; + + foreach ( $ids as $id ) { + foreach ( $taxonomies as $taxonomy ) { + if ( ! isset($object_terms[$id][$taxonomy]) ) { + if ( !isset($object_terms[$id]) ) + $object_terms[$id] = array(); + $object_terms[$id][$taxonomy] = array(); + } + } + } + + foreach ( $object_terms as $id => $value ) { + foreach ( $value as $taxonomy => $terms ) { + wp_cache_set($id, $terms, "{$taxonomy}_relationships"); + } + } + } + + /** + * Updates Terms to Taxonomy in cache. + * + * @package WordPress + * @subpackage Taxonomy + * @since 2.3.0 + * + * @param array $terms List of Term objects to change + * @param string $taxonomy Optional. Update Term to this taxonomy in cache + */ + function update_term_cache($terms, $taxonomy = '') { + foreach ( (array) $terms as $term ) { + $term_taxonomy = $taxonomy; + if ( empty($term_taxonomy) ) + $term_taxonomy = $term->taxonomy; + + wp_cache_add($term->term_id, $term, $term_taxonomy); + wp_cache_add($term->term_taxonomy_id, $term->term_id, "$term_taxonomy:tt_id"); + } + } + + // + // Private + // + + /** + * Retrieves children of taxonomy as Term IDs. + * + * @package WordPress + * @subpackage Taxonomy + * @access private + * @since 2.3.0 + * + * @uses backpress_update_option() Stores all of the children in "$taxonomy_children" + * option. That is the name of the taxonomy, immediately followed by '_children'. + * + * @param string $taxonomy Taxonomy Name + * @return array Empty if $taxonomy isn't hierarachical or returns children as Term IDs. + */ + function _get_term_hierarchy($taxonomy) { + if ( !$this->is_taxonomy_hierarchical($taxonomy) ) + return array(); + $children = $this->get_children_cache($taxonomy); + if ( is_array($children) ) + return $children; + + $children = array(); + $terms = $this->get_terms($taxonomy, 'get=all'); + foreach ( $terms as $term ) { + if ( $term->parent > 0 ) + $children[$term->parent][] = $term->term_id; + } + $this->set_children_cache($taxonomy, $children); + + return $children; + } + + /** + * Get the subset of $terms that are descendants of $term_id. + * + * If $terms is an array of objects, then _get_term_children returns an array of objects. + * If $terms is an array of IDs, then _get_term_children returns an array of IDs. + * + * @package WordPress + * @subpackage Taxonomy + * @access private + * @since 2.3.0 + * + * @param int $term_id The ancestor term: all returned terms should be descendants of $term_id. + * @param array $terms The set of terms---either an array of term objects or term IDs---from which those that are descendants of $term_id will be chosen. + * @param string $taxonomy The taxonomy which determines the hierarchy of the terms. + * @return array The subset of $terms that are descendants of $term_id. + */ + function &_get_term_children($term_id, $terms, $taxonomy) { + $empty_array = array(); + if ( empty($terms) ) + return $empty_array; + + $term_list = array(); + $has_children = $this->_get_term_hierarchy($taxonomy); + + if ( ( 0 != $term_id ) && ! isset($has_children[$term_id]) ) + return $empty_array; + + foreach ( (array) $terms as $term ) { + $use_id = false; + if ( !is_object($term) ) { + $term = $this->get_term($term, $taxonomy); + if ( is_wp_error( $term ) ) + return $term; + $use_id = true; + } + + if ( $term->term_id == $term_id ) + continue; + + if ( $term->parent == $term_id ) { + if ( $use_id ) + $term_list[] = $term->term_id; + else + $term_list[] = $term; + + if ( !isset($has_children[$term->term_id]) ) + continue; + + if ( $children = $this->_get_term_children($term->term_id, $terms, $taxonomy) ) + $term_list = array_merge($term_list, $children); + } + } + + return $term_list; + } + + /** + * Add count of children to parent count. + * + * Recalculates term counts by including items from child terms. Assumes all + * relevant children are already in the $terms argument. + * + * @package WordPress + * @subpackage Taxonomy + * @access private + * @since 2.3 + * + * @param array $terms List of Term IDs + * @param string $taxonomy Term Context + * @return null Will break from function if conditions are not met. + */ + function _pad_term_counts(&$terms, $taxonomy) { + return; + } + + /** + * Determine if the given object is associated with any of the given terms. + * + * The given terms are checked against the object's terms' term_ids, names and slugs. + * Terms given as integers will only be checked against the object's terms' term_ids. + * If no terms are given, determines if object is associated with any terms in the given taxonomy. + * + * @since 2.7.0 + * @uses WP_Taxonomy::get_object_term_cache() + * @uses WP_Taxonomy::get_object_terms() + * + * @param int $object_id. ID of the object (post ID, link ID, ...) + * @param string $taxonomy. Single taxonomy name + * @param int|string|array $terms Optional. Term term_id, name, slug or array of said + * @return bool|WP_Error. WP_Error on input error. + */ + function is_object_in_term( $object_id, $taxonomy, $terms = null ) { + if ( !$object_id = (int) $object_id ) + return new WP_Error( 'invalid_object', __( 'Invalid object ID' ) ); + + $object_terms = $this->get_object_term_cache( $object_id, $taxonomy ); + if ( empty( $object_terms ) ) + $object_terms = $this->get_object_terms( $object_id, $taxonomy ); + + if ( is_wp_error( $object_terms ) ) + return $object_terms; + if ( empty( $object_terms ) ) + return false; + if ( empty( $terms ) ) + return ( !empty( $object_terms ) ); + + $terms = (array) $terms; + + if ( $ints = array_filter( $terms, 'is_int' ) ) + $strs = array_diff( $terms, $ints ); + else + $strs =& $terms; + + foreach ( $object_terms as $object_term ) { + if ( $ints && in_array( $object_term->term_id, $ints ) ) return true; // If int, check against term_id + if ( $strs ) { + if ( in_array( $object_term->term_id, $strs ) ) return true; + if ( in_array( $object_term->name, $strs ) ) return true; + if ( in_array( $object_term->slug, $strs ) ) return true; + } + } + + return false; + } + + function get_children_cache( $taxonomy ) { return false; } + function set_children_cache( $taxonomy, $children ) {} + function delete_children_cache( $taxonomy ) {} +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-users.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-users.php new file mode 100644 index 0000000..2adc1b6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/class.wp-users.php @@ -0,0 +1,579 @@ +__construct( $db ); +// register_shutdown_function( array(&$this, '__destruct') ); + } + + function __construct( &$db ) { + $this->db =& $db; + } + +// function __destruct() { +// } + + function _put_user( $args = null ) { + $defaults = array( + 'ID' => false, + 'user_login' => '', + 'user_nicename' => '', + 'user_email' => '', + 'user_url' => '', + 'user_pass' => false, + 'user_registered' => time(), + 'display_name' => '', + 'user_status' => 0, + 'strict_user_login' => true + ); + + $fields = array_keys( wp_parse_args( $args ) ); + $args = wp_parse_args( $args, $defaults ); + unset($defaults['strict_user_login']); + + if ( isset($args['ID']) && $args['ID'] ) { + unset($defaults['ID']); + $fields = array_intersect( $fields, array_keys( $defaults ) ); + } else { + $fields = array_keys( $defaults ); + } + + extract( $args, EXTR_SKIP ); + + $ID = (int) $ID; + + if ( !$ID || in_array( 'user_login', $fields ) ) { + $user_login = $this->sanitize_user( $user_login, $strict_user_login ); + + if ( !$user_login ) + return new WP_Error( 'user_login', __('Invalid login name') ); + if ( !$ID && $this->get_user( $user_login, array( 'by' => 'login' ) ) ) + return new WP_Error( 'user_login', __('Name already exists') ); + } + + if ( !$ID || in_array( 'user_nicename', $fields ) ) { + if ( !$user_nicename = $this->sanitize_nicename( $user_nicename ? $user_nicename : $user_login ) ) + return new WP_Error( 'user_nicename', __('Invalid nicename') ); + if ( !$ID && $this->get_user( $user_nicename, array( 'by' => 'nicename' ) ) ) + return new WP_Error( 'user_nicename', __('Nicename already exists') ); + } + + if ( !$ID || in_array( 'user_email', $fields ) ) { + if ( !$this->is_email( $user_email ) ) + return new WP_Error( 'user_email', __('Invalid email address') ); + + if ( $already_email = $this->get_user( $user_email, array( 'by' => 'email' ) ) ) { + // if new user, or if multiple users with that email, or if only one user with that email, but it's not the user being updated + if ( !$ID || is_wp_error( $already_email ) || $already_email->ID != $ID ) + return new WP_Error( 'user_email', __('Email already exists') ); + } + } + + if ( !$ID || in_array( 'user_url', $fields ) ) { + $user_url = esc_url( $user_url ); + } + + if ( !$ID || in_array( 'user_pass', $fields ) ) { + if ( !$user_pass ) + $user_pass = WP_Pass::generate_password(); + $plain_pass = $user_pass; + $user_pass = WP_Pass::hash_password( $user_pass ); + } + + if ( !$ID || in_array( 'user_registered', $fields ) ) { + if ( !is_numeric($user_registered) ) + $user_registered = backpress_gmt_strtotime( $user_registered ); + + if ( !$user_registered || $user_registered < 0 ) + return new WP_Error( 'user_registered', __('Invalid registration time') ); + + if ( !$user_registered = @gmdate('Y-m-d H:i:s', $user_registered) ) + return new WP_Error( 'user_registered', __('Invalid registration timestamp') ); + } + + if ( !$ID || in_array( 'user_display', $fields ) ) { + if ( !$display_name ) + $display_name = $user_login; + } + + $db_return = NULL; + if ( $ID ) { + $db_return = $this->db->update( $this->db->users, compact( $fields ), compact('ID') ); + } else { + $db_return = $this->db->insert( $this->db->users, compact( $fields ) ); + $ID = $this->db->insert_id; + } + + if ( !$db_return ) + return new WP_Error( 'WP_Users::_put_user', __('Query failed') ); + + // Cache the result + if ( $ID ) { + wp_cache_delete( $ID, 'users' ); + $this->get_user( $ID, array( 'from_cache' => false ) ); + } + + $args = compact( array_keys($args) ); + $args['plain_pass'] = $plain_pass; + + do_action( __CLASS__ . '::' . __FUNCTION__, $args ); + + return $args; + } + + function new_user( $args = null ) { + $args = wp_parse_args( $args ); + $args['ID'] = false; + + $r = $this->_put_user( $args ); + + if ( is_wp_error($r) ) + return $r; + + do_action( __CLASS__ . '::' . __FUNCTION__, $r, $args ); + + return $r; + } + + function update_user( $ID, $args = null ) { + $args = wp_parse_args( $args ); + + $args['output'] = OBJECT; + $user = $this->get_user( $ID, $args ); + if ( !$user || is_wp_error( $user ) ) + return $user; + + $args['ID'] = $user->ID; + + $r = $this->_put_user( $args ); + + if ( is_wp_error($r) ) + return $r; + + do_action( __CLASS__ . '::' . __FUNCTION__, $r, $args ); + + return $r; + } + + /** + * set_password() - Updates the user's password with a new encrypted one + * + * For integration with other applications, this function can be + * overwritten to instead use the other package password checking + * algorithm. + * + * @since 2.5 + * @uses WP_Pass::hash_password() Used to encrypt the user's password before passing to the database + * + * @param string $password The plaintext new user password + * @param int $user_id User ID + */ + function set_password( $password, $user_id ) { + $user = $this->get_user( $user_id ); + if ( !$user || is_wp_error( $user ) ) + return $user; + + $user_id = $user->ID; + $hash = WP_Pass::hash_password($password); + $this->update_user( $user->ID, array( 'user_pass' => $password ) ); + } + + // $user_id can be user ID#, user_login, user_email (by specifying by = email) + function get_user( $user_id = 0, $args = null ) { + $defaults = array( 'output' => OBJECT, 'by' => false, 'from_cache' => true, 'append_meta' => true ); + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + if ( !$user_id ) { + return false; + } + + // Let's just deal with arrays + $user_ids = (array) $user_id; + + if ( !count( $user_ids ) ) { + return false; + } + + // Validate passed ids + $safe_user_ids = array(); + foreach ( $user_ids as $_user_id ) { + switch ( $by ) { + case 'login': + $safe_user_ids[] = $this->sanitize_user( $_user_id, true ); + break; + case 'email': + if ( $this->is_email( $_user_id ) ) { + $safe_user_ids[] = $_user_id; + } + break; + case 'nicename': + $safe_user_ids[] = $this->sanitize_nicename( $_user_id ); + break; + default: + if ( is_numeric( $_user_id ) ) { + $safe_user_ids[] = (int) $_user_id; + } else { // If one $_user_id is non-numerical, treat all $user_ids as user_logins + $safe_user_ids[] = $this->sanitize_user( $_user_id, true ); + $by = 'login'; + } + break; + } + } + + // No soup for you! + if ( !count( $safe_user_ids ) ) { + return false; + } + + // Name the cache storing non-existant ids and the SQL field to query by + switch ( $by ) { + case 'login': + $non_existant_cache = 'userlogins'; + $sql_field = 'user_login'; + break; + case 'email': + $non_existant_cache = 'useremail'; + $sql_field = 'user_email'; + break; + case 'nicename': + $non_existant_cache = 'usernicename'; + $sql_field = 'user_nicename'; + break; + default: + $non_existant_cache = 'users'; + $sql_field = 'ID'; + break; + } + + // Check if the numeric user IDs exist from caches + $cached_users = array(); + if ( $from_cache ) { + $existant_user_ids = array(); + $maybe_existant_user_ids = array(); + + switch ( $by ) { + case 'login': + case 'email': + case 'nicename': + foreach ( $safe_user_ids as $_safe_user_id ) { + $ID = wp_cache_get( $_safe_user_id, $non_existant_cache ); + if ( false === $ID ) { + $maybe_existant_user_ids[] = $_safe_user_id; + } elseif ( 0 !== $ID ) { + $existant_user_ids[] = $ID; + } + } + if ( count( $existant_user_ids ) ) { + // We need to run again using numeric ids + $args['by'] = false; + $cached_users = $this->get_user( $existant_user_ids, $args ); + } + break; + default: + foreach ( $safe_user_ids as $_safe_user_id ) { + $user = wp_cache_get( $_safe_user_id, 'users' ); + if ( false === $user ) { + $maybe_existant_user_ids[] = $_safe_user_id; + } elseif ( 0 !== $user ) { + $cached_users[] = $user; + } + } + break; + } + + // No maybes? Then it's definite. + if ( !count( $maybe_existant_user_ids ) ) { + if ( !count( $cached_users ) ) { + // Nothing there sorry + return false; + } + + // Deal with the case where one record was requested but multiple records are returned + if ( !is_array( $user_id ) && $user_id ) { + if ( 1 < count( $cached_users ) ) { + if ( 'user_email' == $sql_field ) { + $err = __( 'Multiple email matches. Log in with your username.' ); + } else { + $err = sprintf( __( 'Multiple %s matches' ), $sql_field ); + } + return new WP_Error( $sql_field, $err, $args + array( 'user_id' => $user_id, 'unique' => false ) ); + } + + // If one item was requested, it expects a single user object back + $cached_users = array_shift( $cached_users ); + } + + backpress_convert_object( $cached_users, $output ); + return $cached_users; + } + + // If we get this far, there are some maybes so try and grab them + } else { + $maybe_existant_user_ids = $safe_user_ids; + } + + // Escape the ids for the SQL query + $maybe_existant_user_ids = $this->db->escape_deep( $maybe_existant_user_ids ); + + // Sort the ids so the MySQL will more consistently cache the query + sort( $maybe_existant_user_ids ); + + // Get the users from the database + $sql = "SELECT * FROM `{$this->db->users}` WHERE `$sql_field` in ('" . join( "','", $maybe_existant_user_ids ) . "');"; + $db_users = $this->db->get_results( $sql ); + + // Merge in the cached users if available + if ( count( $cached_users ) ) { + // Create a convenient array of database fetched user ids + $db_user_ids = array(); + foreach ( $db_users as $_db_user ) { + $db_user_ids[] = $_db_user->ID; + } + $users = array_merge( $cached_users, $db_users ); + } else { + $users = $db_users; + } + + // Deal with the case where one record was requested but multiple records are returned + if ( !is_array( $user_id ) && $user_id ) { + if ( 1 < count( $users ) ) { + if ( 'user_email' == $sql_field ) { + $err = __( 'Multiple email matches. Log in with your username.' ); + } else { + $err = sprintf( __( 'Multiple %s matches' ), $sql_field ); + } + return new WP_Error( $sql_field, $err, $args + array( 'user_id' => $user_id, 'unique' => false ) ); + } + } + + // Create a convenient array of final user ids + $final_user_ids = array(); + foreach ( $users as $_user ) { + $final_user_ids[] = $_user->$sql_field; + } + + foreach ( $safe_user_ids as $_safe_user_id ) { + if ( !in_array( $_safe_user_id, $final_user_ids ) ) { + wp_cache_add( $_safe_user_id, 0, $non_existant_cache ); + } + } + + if ( !count( $users ) ) { + return false; + } + + // Add display names + $final_users = array(); + foreach ( $users as $_user ) { + // Make sure there is a display_name set + if ( !$_user->display_name ) { + $_user->display_name = $_user->user_login; + } + + $final_users[] = $_user; + } + + // append_meta() does the user object, useremail, userlogins caching + if ( $append_meta ) { + if ( count( $cached_users ) ) { + $db_final_users =array(); + $cached_final_users = array(); + foreach ( $final_users as $final_user ) { + if ( in_array( $final_user->ID, $db_user_ids ) ) { + $db_final_users[] = $final_user; + } else { + $cached_final_users[] = $final_user; + } + } + $db_final_users = $this->append_meta( $db_final_users ); + $final_users = array_merge( $cached_final_users, $db_final_users ); + } else { + $final_users = $this->append_meta( $final_users ); + } + } + + // If one item was requested, it expects a single user object back + if ( !is_array( $user_id ) && $user_id ) { + $final_users = array_shift( $final_users ); + } + + backpress_convert_object( $final_users, $output ); + return $final_users; + } + + function delete_user( $user_id ) { + $user = $this->get_user( $user_id ); + + if ( !$user || is_wp_error( $user ) ) + return $user; + + do_action( 'pre_' . __CLASS__ . '::' . __FUNCTION__, $user->ID ); + + $r = $this->db->query( $this->db->prepare( "DELETE FROM {$this->db->users} WHERE ID = %d", $user->ID ) ); + $this->db->query( $this->db->prepare( "DELETE FROM {$this->db->usermeta} WHERE user_id = %d", $user->ID ) ); + + wp_cache_delete( $user->ID, 'users' ); + wp_cache_delete( $user->user_nicename, 'usernicename' ); + wp_cache_delete( $user->user_email, 'useremail' ); + wp_cache_delete( $user->user_login, 'userlogins' ); + + do_action( __CLASS__ . '::' . __FUNCTION__, $user->ID ); + + return $r; + } + + // Used for user meta, but can be used for other meta data (such as bbPress' topic meta) + // Should this be in the class or should it be it's own special function? + function append_meta( $object, $args = null ) { + $defaults = array( 'meta_table' => 'usermeta', 'meta_field' => 'user_id', 'id_field' => 'ID', 'cache_group' => 'users' ); + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + if ( is_array($object) ) { + $trans = array(); + foreach ( array_keys($object) as $i ) + $trans[$object[$i]->$id_field] =& $object[$i]; + $ids = join(',', array_keys($trans)); + if ( $ids && $metas = $this->db->get_results("SELECT $meta_field, meta_key, meta_value FROM {$this->db->$meta_table} WHERE $meta_field IN ($ids) /* WP_Users::append_meta */") ) { + usort( $metas, array(&$this, '_append_meta_sort') ); + foreach ( $metas as $meta ) { + if ( empty( $meta->meta_key ) ) + continue; + $trans[$meta->$meta_field]->{$meta->meta_key} = maybe_unserialize( $meta->meta_value ); + if ( strpos($meta->meta_key, $this->db->prefix) === 0 ) + $trans[$meta->$meta_field]->{substr($meta->meta_key, strlen($this->db->prefix))} = maybe_unserialize( $meta->meta_value ); + } + } + foreach ( array_keys($trans) as $i ) { + wp_cache_set( $i, $trans[$i], $cache_group ); + if ( 'users' == $cache_group ) { + wp_cache_set( $trans[$i]->user_login, $i, 'userlogins' ); + wp_cache_set( $trans[$i]->user_email, $i, 'useremail' ); + wp_cache_set( $trans[$i]->user_nicename, $i, 'usernicename' ); + } + } + return $object; + } elseif ( $object ) { + if ( $metas = $this->db->get_results("SELECT meta_key, meta_value FROM {$this->db->$meta_table} WHERE $meta_field = '{$object->$id_field}' /* WP_Users::append_meta */") ) { + usort( $metas, array(&$this, '_append_meta_sort') ); + foreach ( $metas as $meta ) { + if ( empty( $meta->meta_key ) ) + continue; + $object->{$meta->meta_key} = maybe_unserialize( $meta->meta_value ); + if ( strpos($meta->meta_key, $this->db->prefix) === 0 ) + $object->{substr($meta->meta_key, strlen($this->db->prefix))} = maybe_unserialize( $meta->meta_value ); + } + } + wp_cache_set( $object->$id_field, $object, $cache_group ); + if ( 'users' == $cache_group ) { + wp_cache_set($object->user_login, $object->ID, 'userlogins'); + wp_cache_set($object->user_email, $object->ID, 'useremail'); + wp_cache_set($object->user_nicename, $object->ID, 'usernicename'); + } + return $object; + } + } + + /** + * _append_meta_sort() - sorts meta keys by length to ensure $appended_object->{$bbdb->prefix}key overwrites $appended_object->key as desired + * + * @internal + */ + function _append_meta_sort( $a, $b ) { + return strlen( $a->meta_key ) - strlen( $b->meta_key ); + } + + function update_meta( $args = null ) { + $defaults = array( 'id' => 0, 'meta_key' => null, 'meta_value' => null, 'meta_table' => 'usermeta', 'meta_field' => 'user_id', 'cache_group' => 'users' ); + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $user = $this->get_user( $id ); + if ( !$user || is_wp_error($user) ) + return $user; + + $id = (int) $user->ID; + + if ( is_null($meta_key) || is_null($meta_value) ) + return false; + + $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); + if ( 'usermeta' == $meta_table && 'capabilities' == $meta_key ) + $meta_key = $this->db->prefix . 'capabilities'; + + $meta_tuple = compact('id', 'meta_key', 'meta_value', 'meta_table'); + $meta_tuple = apply_filters( __CLASS__ . '::' . __FUNCTION__, $meta_tuple ); + extract($meta_tuple, EXTR_OVERWRITE); + + $_meta_value = maybe_serialize( $meta_value ); + + $cur = $this->db->get_row( $this->db->prepare( "SELECT * FROM {$this->db->$meta_table} WHERE $meta_field = %d AND meta_key = %s", $id, $meta_key ) ); + + if ( !$cur ) { + $this->db->insert( $this->db->$meta_table, array( $meta_field => $id, 'meta_key' => $meta_key, 'meta_value' => $_meta_value ) ); + } elseif ( $cur->meta_value != $meta_value ) { + $this->db->update( $this->db->$meta_table, array( 'meta_value' => $_meta_value ), array( $meta_field => $id, 'meta_key' => $meta_key ) ); + } + + + wp_cache_delete( $id, $cache_group ); + + return true; + } + + function delete_meta( $args = null ) { + $defaults = array( 'id' => 0, 'meta_key' => null, 'meta_value' => null, 'meta_table' => 'usermeta', 'meta_field' => 'user_id', 'meta_id_field' => 'umeta_id', 'cache_group' => 'users' ); + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $user = $this->get_user( $id ); + if ( !$user || is_wp_error($user) ) + return $user; + + $id = (int) $id; + + if ( is_null($meta_key) ) + return false; + + $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); + + $meta_tuple = compact('id', 'meta_key', 'meta_value', 'meta_table'); + $meta_tuple = apply_filters( __CLASS__ . '::' . __FUNCTION__, $meta_tuple ); + extract($meta_tuple, EXTR_OVERWRITE); + + $_meta_value = is_null($meta_value) ? null : maybe_serialize( $meta_value ); + + if ( is_null($_meta_value) ) + $meta_id = $this->db->get_var( $this->db->prepare( "SELECT $meta_id_field FROM {$this->db->$meta_table} WHERE $meta_field = %d AND meta_key = %s", $id, $meta_key ) ); + else + $meta_id = $this->db->get_var( $this->db->prepare( "SELECT $meta_id_field FROM {$this->db->$meta_table} WHERE $meta_field = %d AND meta_key = %s AND meta_value = %s", $id, $meta_key, $_meta_value ) ); + + if ( !$meta_id ) + return false; + + if ( is_null($_meta_value) ) + $this->db->query( $this->db->prepare( "DELETE FROM {$this->db->$meta_table} WHERE $meta_field = %d AND meta_key = %s", $id, $meta_key ) ); + else + $this->db->query( $this->db->prepare( "DELETE FROM {$this->db->$meta_table} WHERE $meta_id_field = %d", $meta_id ) ); + + wp_cache_delete( $id, $cache_group ); + + return true; + } + + function sanitize_user( $user_login, $strict = false ) { + return sanitize_user( $user_login, $strict ); + } + + function sanitize_nicename( $slug ) { + return sanitize_title( $slug ); + } + + function is_email( $email ) { + return is_email( $email ); + } + +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/functions.bp-options.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/functions.bp-options.php new file mode 100644 index 0000000..75a3fd1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/functions.bp-options.php @@ -0,0 +1,64 @@ + $v ) { + if ( $urlencode) { + $k = urlencode( $k ); + } + if ( is_int( $k ) && $prefix != null ) { + $k = $prefix.$k; + } + if ( !empty( $key ) ) { + $k = $key . '%5B' . $k . '%5D'; + } + if ( $v === NULL ) { + continue; + } elseif ( $v === FALSE ) { + $v = '0'; + } + + if ( is_array( $v ) || is_object( $v ) ) { + array_push( $ret, _http_build_query( $v, '', $sep, $k, $urlencode ) ); + } elseif ( $urlencode ) { + array_push( $ret, $k . '=' . urlencode( $v ) ); + } else { + array_push( $ret, $k . '=' . $v ); + } + } + + if ( NULL === $sep ) { + $sep = ini_get( 'arg_separator.output' ); + } + + return implode( $sep, $ret ); + } +} + +if ( !function_exists( '_' ) ) { + // Alias of gettext() - requires l10n functions + function _( $string ) + { + return $string; + } +} + +if ( !function_exists( 'stripos' ) ) { + // Added in PHP 5.0.0 + function stripos( $haystack, $needle, $offset = 0 ) + { + return strpos( strtolower( $haystack ), strtolower( $needle ), $offset ); + } +} + +if ( !function_exists( 'hash_hmac' ) ) { + // Added in PHP 5.1.2 + function hash_hmac( $algo, $data, $key, $raw_output = false ) + { + $packs = array( 'md5' => 'H32', 'sha1' => 'H40' ); + + if ( !isset( $packs[$algo] ) ) { + return false; + } + + $pack = $packs[$algo]; + + if ( strlen( $key ) > 64 ) { + $key = pack( $pack, $algo( $key ) ); + } elseif ( strlen($key) < 64 ) { + $key = str_pad( $key, 64, chr( 0 ) ); + } + + $ipad = ( substr( $key, 0, 64 ) ^ str_repeat( chr( 0x36 ), 64 ) ); + $opad = ( substr( $key, 0, 64 ) ^ str_repeat( chr( 0x5C ), 64 ) ); + + return $algo( $opad . pack( $pack, $algo ( $ipad . $data ) ) ); + } +} + +if ( !function_exists( 'mb_substr' ) ) { + // Requires multi-byte support in PHP + function mb_substr( $str, $start, $length = null, $encoding = null ) + { + return _mb_substr( $str, $start, $length, $encoding ); + } +} + +if ( !function_exists( '_mb_substr' ) ) { + function _mb_substr( $str, $start, $length = null, $encoding = null ) + { + // the solution below, works only for utf-8, so in case of a different + // charset, just use built-in substr + $charset = backpress_get_option( 'charset' ); + if ( !in_array( $charset, array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) ) { + return is_null( $length )? substr( $str, $start ) : substr( $str, $start, $length); + } + // use the regex unicode support to separate the UTF-8 characters into an array + preg_match_all( '/./us', $str, $match ); + $chars = is_null( $length )? array_slice( $match[0], $start ) : array_slice( $match[0], $start, $length ); + return implode( '', $chars ); + } +} + +if ( !function_exists( 'htmlspecialchars_decode' ) ) { + // Added in PHP 5.1.0 + // Error checks from PEAR::PHP_Compat + function htmlspecialchars_decode( $str, $quote_style = ENT_COMPAT ) + { + if ( !is_scalar( $string ) ) { + trigger_error( 'htmlspecialchars_decode() expects parameter 1 to be string, ' . gettype( $string ) . ' given', E_USER_WARNING ); + return; + } + + if ( !is_int( $quote_style ) && $quote_style !== null ) { + trigger_error( 'htmlspecialchars_decode() expects parameter 2 to be integer, ' . gettype( $quote_style ) . ' given', E_USER_WARNING ); + return; + } + + return wp_specialchars_decode( $str, $quote_style ); + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/functions.core.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/functions.core.php new file mode 100644 index 0000000..caa6122 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/backpress/functions.core.php @@ -0,0 +1,1249 @@ + $v ) { + if ( $v === false ) + unset( $qs[$k] ); + } + + $ret = build_query( $qs ); + $ret = trim( $ret, '?' ); + $ret = preg_replace( '#=(&|$)#', '$1', $ret ); + $ret = $protocol . $base . $ret . $frag; + $ret = rtrim( $ret, '?' ); + return $ret; +} +endif; + +if ( !function_exists( 'remove_query_arg' ) ) : +/** + * Removes an item or list from the query string. + * + * @since 1.5.0 + * + * @param string|array $key Query key or keys to remove. + * @param bool $query When false uses the $_SERVER value. + * @return string New URL query string. + */ +function remove_query_arg( $key, $query=false ) { + if ( is_array( $key ) ) { // removing multiple keys + foreach ( $key as $k ) + $query = add_query_arg( $k, false, $query ); + return $query; + } + return add_query_arg( $key, false, $query ); +} +endif; + +// ! function add_magic_quotes() + +if ( !function_exists( 'wp_remote_fopen' ) ) : +/** + * HTTP request for URI to retrieve content. + * + * @since 1.5.1 + * @uses wp_remote_get() + * + * @param string $uri URI/URL of web page to retrieve. + * @return bool|string HTTP content. False on failure. + */ +function wp_remote_fopen( $uri ) { + $parsed_url = @parse_url( $uri ); + + if ( !$parsed_url || !is_array( $parsed_url ) ) + return false; + + $options = array(); + $options['timeout'] = 10; + + $response = wp_remote_get( $uri, $options ); + + if ( is_wp_error( $response ) ) + return false; + + return $response['body']; +} +endif; + +// ! function wp() + +if ( !function_exists( 'get_status_header_desc' ) ) : +/** + * Retrieve the description for the HTTP status. + * + * @since 2.3.0 + * + * @param int $code HTTP status code. + * @return string Empty string if not found, or description if found. + */ +function get_status_header_desc( $code ) { + global $wp_header_to_desc; + + $code = absint( $code ); + + if ( !isset( $wp_header_to_desc ) ) { + $wp_header_to_desc = array( + 100 => 'Continue', + 101 => 'Switching Protocols', + 102 => 'Processing', + + 200 => 'OK', + 201 => 'Created', + 202 => 'Accepted', + 203 => 'Non-Authoritative Information', + 204 => 'No Content', + 205 => 'Reset Content', + 206 => 'Partial Content', + 207 => 'Multi-Status', + 226 => 'IM Used', + + 300 => 'Multiple Choices', + 301 => 'Moved Permanently', + 302 => 'Found', + 303 => 'See Other', + 304 => 'Not Modified', + 305 => 'Use Proxy', + 306 => 'Reserved', + 307 => 'Temporary Redirect', + + 400 => 'Bad Request', + 401 => 'Unauthorized', + 402 => 'Payment Required', + 403 => 'Forbidden', + 404 => 'Not Found', + 405 => 'Method Not Allowed', + 406 => 'Not Acceptable', + 407 => 'Proxy Authentication Required', + 408 => 'Request Timeout', + 409 => 'Conflict', + 410 => 'Gone', + 411 => 'Length Required', + 412 => 'Precondition Failed', + 413 => 'Request Entity Too Large', + 414 => 'Request-URI Too Long', + 415 => 'Unsupported Media Type', + 416 => 'Requested Range Not Satisfiable', + 417 => 'Expectation Failed', + 422 => 'Unprocessable Entity', + 423 => 'Locked', + 424 => 'Failed Dependency', + 426 => 'Upgrade Required', + + 500 => 'Internal Server Error', + 501 => 'Not Implemented', + 502 => 'Bad Gateway', + 503 => 'Service Unavailable', + 504 => 'Gateway Timeout', + 505 => 'HTTP Version Not Supported', + 506 => 'Variant Also Negotiates', + 507 => 'Insufficient Storage', + 510 => 'Not Extended' + ); + } + + if ( isset( $wp_header_to_desc[$code] ) ) + return $wp_header_to_desc[$code]; + else + return ''; +} +endif; + +if ( !function_exists( 'status_header' ) ) : +/** + * Set HTTP status header. + * + * @since 2.0.0 + * @uses apply_filters() Calls 'status_header' on status header string, HTTP + * HTTP code, HTTP code description, and protocol string as separate + * parameters. + * + * @param int $header HTTP status code + * @return null Does not return anything. + */ +function status_header( $header ) { + $text = get_status_header_desc( $header ); + + if ( empty( $text ) ) + return false; + + $protocol = $_SERVER["SERVER_PROTOCOL"]; + if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol ) + $protocol = 'HTTP/1.0'; + $status_header = "$protocol $header $text"; + if ( function_exists( 'apply_filters' ) ) + $status_header = apply_filters( 'status_header', $status_header, $header, $text, $protocol ); + + return @header( $status_header, true, $header ); +} +endif; + +if ( !function_exists( 'wp_get_nocache_headers' ) ) : +/** + * Gets the header information to prevent caching. + * + * The several different headers cover the different ways cache prevention is handled + * by different browsers + * + * @since 2.8 + * + * @uses apply_filters() + * @return array The associative array of header names and field values. + */ +function wp_get_nocache_headers() { + $headers = array( + 'Expires' => 'Wed, 11 Jan 1984 05:00:00 GMT', + 'Last-Modified' => gmdate( 'D, d M Y H:i:s' ) . ' GMT', + 'Cache-Control' => 'no-cache, must-revalidate, max-age=0', + 'Pragma' => 'no-cache', + ); + + if ( function_exists('apply_filters') ) { + $headers = apply_filters('nocache_headers', $headers); + } + return $headers; +} +endif; + +if ( !function_exists( 'nocache_headers' ) ) : +/** + * Sets the headers to prevent caching for the different browsers. + * + * Different browsers support different nocache headers, so several headers must + * be sent so that all of them get the point that no caching should occur. + * + * @since 2.0.0 + * @uses wp_get_nocache_headers() + */ +function nocache_headers() { + $headers = wp_get_nocache_headers(); + foreach( (array) $headers as $name => $field_value ) + @header("{$name}: {$field_value}"); +} +endif; + +if ( !function_exists( 'cache_javascript_headers' ) ) : +/** + * Set the headers for caching for 10 days with JavaScript content type. + * + * @since 2.1.0 + */ +function cache_javascript_headers() { + $expiresOffset = 864000; // 10 days + header( "Content-Type: text/javascript; charset=" . backpress_get_option( 'charset' ) ); + header( "Vary: Accept-Encoding" ); // Handle proxies + header( "Expires: " . gmdate( "D, d M Y H:i:s", time() + $expiresOffset ) . " GMT" ); +} +endif; + +// ! function get_num_queries() +// ! function bool_from_yn() +// ! function do_feed() +// ! function do_feed_rdf() +// ! function do_feed_rss() +// ! function do_feed_rss2() +// ! function do_feed_atom() +// ! function do_robots() +// ! function is_blog_installed() +// ! function wp_nonce_url() +// ! function wp_nonce_field() + +if ( !function_exists( 'wp_referer_field' ) ) : +/** + * Retrieve or display referer hidden field for forms. + * + * The referer link is the current Request URI from the server super global. The + * input name is '_wp_http_referer', in case you wanted to check manually. + * + * @package WordPress + * @subpackage Security + * @since 2.0.4 + * + * @param bool $echo Whether to echo or return the referer field. + * @return string Referer field. + */ +function wp_referer_field( $echo = true) { + $ref = esc_attr( $_SERVER['REQUEST_URI'] ); + $referer_field = ''; + + if ( $echo ) + echo $referer_field; + return $referer_field; +} +endif; + +if ( !function_exists( 'wp_original_referer_field' ) ) : +/** + * Retrieve or display original referer hidden field for forms. + * + * The input name is '_wp_original_http_referer' and will be either the same + * value of {@link wp_referer_field()}, if that was posted already or it will + * be the current page, if it doesn't exist. + * + * @package WordPress + * @subpackage Security + * @since 2.0.4 + * + * @param bool $echo Whether to echo the original http referer + * @param string $jump_back_to Optional, default is 'current'. Can be 'previous' or page you want to jump back to. + * @return string Original referer field. + */ +function wp_original_referer_field( $echo = true, $jump_back_to = 'current' ) { + $jump_back_to = ( 'previous' == $jump_back_to ) ? wp_get_referer() : $_SERVER['REQUEST_URI']; + $ref = ( wp_get_original_referer() ) ? wp_get_original_referer() : $jump_back_to; + $orig_referer_field = ''; + if ( $echo ) + echo $orig_referer_field; + return $orig_referer_field; +} +endif; + +if ( !function_exists( 'wp_get_referer' ) ) : +/** + * Retrieve referer from '_wp_http_referer', HTTP referer, or current page respectively. + * + * @package WordPress + * @subpackage Security + * @since 2.0.4 + * + * @return string|bool False on failure. Referer URL on success. + */ +function wp_get_referer() { + $ref = ''; + if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) + $ref = $_REQUEST['_wp_http_referer']; + else if ( ! empty( $_SERVER['HTTP_REFERER'] ) ) + $ref = $_SERVER['HTTP_REFERER']; + + if ( $ref !== $_SERVER['REQUEST_URI'] ) + return $ref; + return false; +} +endif; + +if ( !function_exists( 'wp_get_original_referer' ) ) : +/** + * Retrieve original referer that was posted, if it exists. + * + * @package WordPress + * @subpackage Security + * @since 2.0.4 + * + * @return string|bool False if no original referer or original referer if set. + */ +function wp_get_original_referer() { + if ( !empty( $_REQUEST['_wp_original_http_referer'] ) ) + return $_REQUEST['_wp_original_http_referer']; + return false; +} +endif; + +// ! function wp_mkdir_p() +// ! function path_is_absolute() +// ! function path_join() +// ! function wp_upload_dir() +// ! function wp_unique_filename() +// ! function wp_upload_bits() +// ! function wp_ext2type() +// ! function wp_check_filetype() +// ! function wp_explain_nonce() +// ! function wp_nonce_ays() +// ! function wp_die() +// ! function _config_wp_home() +// ! function _config_wp_siteurl() +// ! function _mce_set_direction() +// ! function smilies_init() + +if ( !function_exists('wp_parse_args') ) : +/** + * Merge user defined arguments into defaults array. + * + * This function is used throughout WordPress to allow for both string or array + * to be merged into another array. + * + * @since 2.2.0 + * + * @param string|array $args Value to merge with $defaults + * @param array $defaults Array that serves as the defaults. + * @return array Merged user defined values with defaults. + */ +function wp_parse_args( $args, $defaults = '' ) { + if ( is_object( $args ) ) + $r = get_object_vars( $args ); + elseif ( is_array( $args ) ) + $r =& $args; + else + wp_parse_str( $args, $r ); + + if ( is_array( $defaults ) ) + return array_merge( $defaults, $r ); + return $r; +} +endif; + +// ! function wp_maybe_load_widgets() +// ! function wp_widgets_add_menu() +// ! function wp_ob_end_flush_all() +// ! function require_wp_db() +// ! function dead_db() + +if ( !function_exists('absint') ) : +/** + * Converts value to nonnegative integer. + * + * @since 2.5.0 + * + * @param mixed $maybeint Data you wish to have convered to an nonnegative integer + * @return int An nonnegative integer + */ +function absint( $maybeint ) { + return abs( intval( $maybeint ) ); +} +endif; + +// ! function url_is_accessable_via_ssl() +// ! function atom_service_url_filter() +// ! function _deprecated_function() +// ! function _deprecated_file() + +if ( !function_exists('is_lighttpd_before_150') ) : +/** + * Is the server running earlier than 1.5.0 version of lighttpd + * + * @since 2.5.0 + * + * @return bool Whether the server is running lighttpd < 1.5.0 + */ +function is_lighttpd_before_150() { + $server_parts = explode( '/', isset( $_SERVER['SERVER_SOFTWARE'] )? $_SERVER['SERVER_SOFTWARE'] : '' ); + $server_parts[1] = isset( $server_parts[1] )? $server_parts[1] : ''; + return 'lighttpd' == $server_parts[0] && -1 == version_compare( $server_parts[1], '1.5.0' ); +} +endif; + +if ( !function_exists('apache_mod_loaded') ) : +/** + * Does the specified module exist in the apache config? + * + * @since 2.5.0 + * + * @param string $mod e.g. mod_rewrite + * @param bool $default The default return value if the module is not found + * @return bool + */ +function apache_mod_loaded($mod, $default = false) { + global $is_apache; + + if ( !$is_apache ) + return false; + + if ( function_exists('apache_get_modules') ) { + $mods = apache_get_modules(); + if ( in_array($mod, $mods) ) + return true; + } elseif ( function_exists('phpinfo') ) { + ob_start(); + phpinfo(8); + $phpinfo = ob_get_clean(); + if ( false !== strpos($phpinfo, $mod) ) + return true; + } + return $default; +} +endif; + +if ( !function_exists('validate_file') ) : +/** + * File validates against allowed set of defined rules. + * + * A return value of '1' means that the $file contains either '..' or './'. A + * return value of '2' means that the $file contains ':' after the first + * character. A return value of '3' means that the file is not in the allowed + * files list. + * + * @since 1.2.0 + * + * @param string $file File path. + * @param array $allowed_files List of allowed files. + * @return int 0 means nothing is wrong, greater than 0 means something was wrong. + */ +function validate_file( $file, $allowed_files = '' ) { + if ( false !== strpos( $file, '..' )) + return 1; + + if ( false !== strpos( $file, './' )) + return 1; + + if (':' == substr( $file, 1, 1 )) + return 2; + + if (!empty ( $allowed_files ) && (!in_array( $file, $allowed_files ) ) ) + return 3; + + return 0; +} +endif; + +if ( !function_exists('is_ssl') ) : +/** + * Determine if SSL is used. + * + * @since 2.6.0 + * + * @return bool True if SSL, false if not used. + */ +function is_ssl() { + if ( isset($_SERVER['HTTPS']) ) { + if ( 'on' == strtolower($_SERVER['HTTPS']) ) + return true; + if ( '1' == $_SERVER['HTTPS'] ) + return true; + } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) { + return true; + } + return false; +} +endif; + +if ( !function_exists('force_ssl_login') ) : +/** + * Whether SSL login should be forced. + * + * @since 2.6.0 + * + * @param string|bool $force Optional. + * @return bool True if forced, false if not forced. + */ +function force_ssl_login($force = '') { + static $forced; + + if ( '' != $force ) { + $old_forced = $forced; + $forced = $force; + return $old_forced; + } + + return $forced; +} +endif; + +if ( !function_exists('force_ssl_admin') ) : +/** + * Whether to force SSL used for the Administration Panels. + * + * @since 2.6.0 + * + * @param string|bool $force + * @return bool True if forced, false if not forced. + */ +function force_ssl_admin($force = '') { + static $forced; + + if ( '' != $force ) { + $old_forced = $forced; + $forced = $force; + return $old_forced; + } + + return $forced; +} +endif; + +// ! function wp_guess_url() +// ! function wp_suspend_cache_invalidation() +// ! function get_site_option() +// ! function add_site_option() +// ! function update_site_option() + +if ( !function_exists('wp_timezone_override_offset') ) : +/** + * gmt_offset modification for smart timezone handling + * + * Overrides the gmt_offset option if we have a timezone_string available + */ +function wp_timezone_override_offset() { + if ( !wp_timezone_supported() ) { + return false; + } + if ( !$timezone_string = backpress_get_option( 'timezone_string' ) ) { + return false; + } + + @date_default_timezone_set( $timezone_string ); + $timezone_object = timezone_open( $timezone_string ); + $datetime_object = date_create(); + if ( false === $timezone_object || false === $datetime_object ) { + return false; + } + return round( timezone_offset_get( $timezone_object, $datetime_object ) / 3600, 2 ); +} +endif; + +if ( !function_exists('wp_timezone_supported') ) : +/** + * Check for PHP timezone support + */ +function wp_timezone_supported() { + $support = false; + if ( + function_exists( 'date_default_timezone_set' ) && + function_exists( 'timezone_identifiers_list' ) && + function_exists( 'timezone_open' ) && + function_exists( 'timezone_offset_get' ) + ) { + $support = true; + } + return apply_filters( 'timezone_support', $support ); +} +endif; + +if ( !function_exists('_wp_timezone_choice_usort_callback') ) : +function _wp_timezone_choice_usort_callback( $a, $b ) { + // Don't use translated versions of Etc + if ( 'Etc' === $a['continent'] && 'Etc' === $b['continent'] ) { + // Make the order of these more like the old dropdown + if ( 'GMT+' === substr( $a['city'], 0, 4 ) && 'GMT+' === substr( $b['city'], 0, 4 ) ) { + return -1 * ( strnatcasecmp( $a['city'], $b['city'] ) ); + } + if ( 'UTC' === $a['city'] ) { + if ( 'GMT+' === substr( $b['city'], 0, 4 ) ) { + return 1; + } + return -1; + } + if ( 'UTC' === $b['city'] ) { + if ( 'GMT+' === substr( $a['city'], 0, 4 ) ) { + return -1; + } + return 1; + } + return strnatcasecmp( $a['city'], $b['city'] ); + } + if ( $a['t_continent'] == $b['t_continent'] ) { + if ( $a['t_city'] == $b['t_city'] ) { + return strnatcasecmp( $a['t_subcity'], $b['t_subcity'] ); + } + return strnatcasecmp( $a['t_city'], $b['t_city'] ); + } else { + // Force Etc to the bottom of the list + if ( 'Etc' === $a['continent'] ) { + return 1; + } + if ( 'Etc' === $b['continent'] ) { + return -1; + } + return strnatcasecmp( $a['t_continent'], $b['t_continent'] ); + } +} +endif; + +if ( !function_exists('wp_timezone_choice') ) : +/** + * Gives a nicely formatted list of timezone strings // temporary! Not in final + * + * @param $selected_zone string Selected Zone + * + */ +function wp_timezone_choice( $selected_zone ) { + static $mo_loaded = false; + + $continents = array( 'Africa', 'America', 'Antarctica', 'Arctic', 'Asia', 'Atlantic', 'Australia', 'Europe', 'Indian', 'Pacific', 'Etc' ); + + // Load translations for continents and cities + if ( !$mo_loaded ) { + $locale = backpress_get_option( 'language_locale' ); + $mofile = backpress_get_option( 'language_directory' ) . 'continents-cities-' . $locale . '.mo'; + load_textdomain( 'continents-cities', $mofile ); + $mo_loaded = true; + } + + $zonen = array(); + foreach ( timezone_identifiers_list() as $zone ) { + $zone = explode( '/', $zone ); + if ( !in_array( $zone[0], $continents ) ) { + continue; + } + if ( 'Etc' === $zone[0] && in_array( $zone[1], array( 'UCT', 'GMT', 'GMT0', 'GMT+0', 'GMT-0', 'Greenwich', 'Universal', 'Zulu' ) ) ) { + continue; + } + + // This determines what gets set and translated - we don't translate Etc/* strings here, they are done later + $exists = array( + 0 => ( isset( $zone[0] ) && $zone[0] ) ? true : false, + 1 => ( isset( $zone[1] ) && $zone[1] ) ? true : false, + 2 => ( isset( $zone[2] ) && $zone[2] ) ? true : false + ); + $exists[3] = ( $exists[0] && 'Etc' !== $zone[0] ) ? true : false; + $exists[4] = ( $exists[1] && $exists[3] ) ? true : false; + $exists[5] = ( $exists[2] && $exists[3] ) ? true : false; + + $zonen[] = array( + 'continent' => ( $exists[0] ? $zone[0] : '' ), + 'city' => ( $exists[1] ? $zone[1] : '' ), + 'subcity' => ( $exists[2] ? $zone[2] : '' ), + 't_continent' => ( $exists[3] ? translate( str_replace( '_', ' ', $zone[0] ), 'continents-cities' ) : '' ), + 't_city' => ( $exists[4] ? translate( str_replace( '_', ' ', $zone[1] ), 'continents-cities' ) : '' ), + 't_subcity' => ( $exists[5] ? translate( str_replace( '_', ' ', $zone[2] ), 'continents-cities' ) : '' ) + ); + } + usort( $zonen, '_wp_timezone_choice_usort_callback' ); + + $structure = array(); + + if ( empty( $selected_zone ) ) { + $structure[] = ''; + } + + foreach ( $zonen as $key => $zone ) { + // Build value in an array to join later + $value = array( $zone['continent'] ); + + if ( empty( $zone['city'] ) ) { + // It's at the continent level (generally won't happen) + $display = $zone['t_continent']; + } else { + // It's inside a continent group + + // Continent optgroup + if ( !isset( $zonen[$key - 1] ) || $zonen[$key - 1]['continent'] !== $zone['continent'] ) { + $label = ( 'Etc' === $zone['continent'] ) ? __( 'Manual offsets' ) : $zone['t_continent']; + $structure[] = ''; + } + + // Add the city to the value + $value[] = $zone['city']; + if ( 'Etc' === $zone['continent'] ) { + if ( 'UTC' === $zone['city'] ) { + $display = ''; + } else { + $display = str_replace( 'GMT', '', $zone['city'] ); + $display = strtr( $display, '+-', '-+' ) . ':00'; + } + $display = sprintf( __( 'UTC %s' ), $display ); + } else { + $display = $zone['t_city']; + if ( !empty( $zone['subcity'] ) ) { + // Add the subcity to the value + $value[] = $zone['subcity']; + $display .= ' - ' . $zone['t_subcity']; + } + } + } + + // Build the value + $value = join( '/', $value ); + $selected = ''; + if ( $value === $selected_zone ) { + $selected = 'selected="selected" '; + } + $structure[] = '"; + + // Close continent optgroup + if ( !empty( $zone['city'] ) && ( !isset($zonen[$key + 1]) || (isset( $zonen[$key + 1] ) && $zonen[$key + 1]['continent'] !== $zone['continent']) ) ) { + $structure[] = ''; + } + } + + return join( "\n", $structure ); +} +endif; + +if ( !function_exists('_cleanup_header_comment') ) : +/** + * Strip close comment and close php tags from file headers used by WP + * See http://core.trac.wordpress.org/ticket/8497 + * + * @since 2.8 + */ +function _cleanup_header_comment($str) { + return trim(preg_replace("/\s*(?:\*\/|\?>).*/", '', $str)); +} +endif; + + + +/** + * From WP wp-settings.php + */ + +if ( !function_exists( 'wp_clone' ) ) : +/** + * Copy an object. + * + * Returns a cloned copy of an object. + * + * @since 2.7.0 + * + * @param object $object The object to clone + * @return object The cloned object + */ +function wp_clone( $object ) { + static $can_clone; + if ( !isset( $can_clone ) ) { + $can_clone = version_compare( phpversion(), '5.0', '>=' ); + } + return $can_clone ? clone( $object ) : $object; +} +endif; + + + +/** + * BackPress only below + */ + +if ( !function_exists('backpress_gmt_strtotime') ) : +function backpress_gmt_strtotime( $string ) { + if ( is_numeric($string) ) + return $string; + if ( !is_string($string) ) + return -1; + + if ( stristr($string, 'utc') || stristr($string, 'gmt') || stristr($string, '+0000') ) + return strtotime($string); + + if ( -1 == $time = strtotime($string . ' +0000') ) + return strtotime($string); + + return $time; +} +endif; + +if ( !function_exists('backpress_convert_object') ) : +function backpress_convert_object( &$object, $output ) { + if ( is_array( $object ) ) { + foreach ( array_keys( $object ) as $key ) + backpress_convert_object( $object[$key], $output ); + } else { + switch ( $output ) { + case OBJECT : break; + case ARRAY_A : $object = get_object_vars($object); break; + case ARRAY_N : $object = array_values(get_object_vars($object)); break; + } + } +} +endif; + +if ( !function_exists('backpress_die') ) : +/** + * Kill BackPress execution and display HTML message with error message. + * + * This function calls the die() PHP function. The difference is that a message + * in HTML will be displayed to the user. It is recommended to use this function + * only when the execution should not continue any further. It is not + * recommended to call this function very often and normally you should try to + * handle as many errors as possible silently. + * + * @param string $message Error message. + * @param string $title Error title. + * @param string|array $args Optional arguments to control behaviour. + */ +function backpress_die( $message, $title = '', $args = array() ) +{ + $defaults = array( 'response' => 500, 'language' => 'en-US', 'text_direction' => 'ltr' ); + $r = wp_parse_args( $args, $defaults ); + + if ( function_exists( 'is_wp_error' ) && is_wp_error( $message ) ) { + if ( empty( $title ) ) { + $error_data = $message->get_error_data(); + if ( is_array( $error_data ) && isset( $error_data['title'] ) ) { + $title = $error_data['title']; + } + } + $errors = $message->get_error_messages(); + switch ( count( $errors ) ) { + case 0: + $message = ''; + break; + case 1: + $message = '

      ' . $errors[0] . '

      '; + break; + default: + $message = "
        \n\t\t
      • " . join( "
      • \n\t\t
      • ", $errors ) . "
      • \n\t
      "; + break; + } + } elseif ( is_string( $message ) ) { + $message = '

      ' . $message . '

      '; + } + + if ( !headers_sent() ) { + status_header( $r['response'] ); + nocache_headers(); + header( 'Content-Type: text/html; charset=utf-8' ); + } + + if ( empty( $title ) ) { + if ( function_exists( '__' ) ) { + $title = __( 'BackPress › Error' ); + } else { + $title = 'BackPress › Error'; + } + } + + if ( $r['text_direction'] ) { + $language_attributes = ' dir="' . $r['text_direction'] . '"'; + } + + if ( $r['language'] ) { + // Always XHTML 1.1 style + $language_attributes .= ' lang="' . $r['language'] . '"'; + } +?> + +> + + + <?php echo $title ?> + + + + + + + + * 'cause today's effort makes it worth tomorrow's "holiday"... + * + * Becomes: + * + * ’cause today’s effort makes it worth tomorrow’s “holiday”… + * + * Code within certain html blocks are skipped. + * + * @since 0.71 + * @uses $wp_cockneyreplace Array of formatted entities for certain common phrases + * + * @param string $text The text to be formatted + * @return string The string replaced with html entities + */ +function wptexturize($text) { + global $wp_cockneyreplace; + static $static_setup = false, $opening_quote, $closing_quote, $default_no_texturize_tags, $default_no_texturize_shortcodes, $static_characters, $static_replacements, $dynamic_characters, $dynamic_replacements; + $output = ''; + $curl = ''; + $textarr = preg_split('/(<.*>|\[.*\])/Us', $text, -1, PREG_SPLIT_DELIM_CAPTURE); + $stop = count($textarr); + + // No need to setup these variables more than once + if (!$static_setup) { + /* translators: opening curly quote */ + $opening_quote = _x('“', 'opening curly quote'); + /* translators: closing curly quote */ + $closing_quote = _x('”', 'closing curly quote'); + + $default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt'); + $default_no_texturize_shortcodes = array('code'); + + // if a plugin has provided an autocorrect array, use it + if ( isset($wp_cockneyreplace) ) { + $cockney = array_keys($wp_cockneyreplace); + $cockneyreplace = array_values($wp_cockneyreplace); + } else { + $cockney = array("'tain't","'twere","'twas","'tis","'twill","'til","'bout","'nuff","'round","'cause"); + $cockneyreplace = array("’tain’t","’twere","’twas","’tis","’twill","’til","’bout","’nuff","’round","’cause"); + } + + $static_characters = array_merge(array('---', ' -- ', '--', ' - ', 'xn–', '...', '``', '\'s', '\'\'', ' (tm)'), $cockney); + $static_replacements = array_merge(array('—', ' — ', '–', ' – ', 'xn--', '…', $opening_quote, '’s', $closing_quote, ' ™'), $cockneyreplace); + + $dynamic_characters = array('/\'(\d\d(?:’|\')?s)/', '/(\s|\A|[([{<]|")\'/', '/(\d+)"/', '/(\d+)\'/', '/(\S)\'([^\'\s])/', '/(\s|\A|[([{<])"(?!\s)/', '/"(\s|\S|\Z)/', '/\'([\s.]|\Z)/', '/(\d+)x(\d+)/'); + $dynamic_replacements = array('’$1','$1‘', '$1″', '$1′', '$1’$2', '$1' . $opening_quote . '$2', $closing_quote . '$1', '’$1', '$1×$2'); + + $static_setup = true; + } + + // Transform into regexp sub-expression used in _wptexturize_pushpop_element + // Must do this everytime in case plugins use these filters in a context sensitive manner + $no_texturize_tags = '(' . implode('|', apply_filters('no_texturize_tags', $default_no_texturize_tags) ) . ')'; + $no_texturize_shortcodes = '(' . implode('|', apply_filters('no_texturize_shortcodes', $default_no_texturize_shortcodes) ) . ')'; + + $no_texturize_tags_stack = array(); + $no_texturize_shortcodes_stack = array(); + + for ( $i = 0; $i < $stop; $i++ ) { + $curl = $textarr[$i]; + + if ( !empty($curl) && '<' != $curl{0} && '[' != $curl{0} + && empty($no_texturize_shortcodes_stack) && empty($no_texturize_tags_stack)) { + // This is not a tag, nor is the texturization disabled + // static strings + $curl = str_replace($static_characters, $static_replacements, $curl); + // regular expressions + $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl); + } elseif (!empty($curl)) { + /* + * Only call _wptexturize_pushpop_element if first char is correct + * tag opening + */ + if ('<' == $curl{0}) + _wptexturize_pushpop_element($curl, $no_texturize_tags_stack, $no_texturize_tags, '<', '>'); + elseif ('[' == $curl{0}) + _wptexturize_pushpop_element($curl, $no_texturize_shortcodes_stack, $no_texturize_shortcodes, '[', ']'); + } + + $curl = preg_replace('/&([^#])(?![a-zA-Z1-4]{1,8};)/', '&$1', $curl); + $output .= $curl; + } + + return $output; +} +endif; + +if ( !function_exists( '_wptexturize_pushpop_element' ) ) : +/** + * Search for disabled element tags. Push element to stack on tag open and pop + * on tag close. Assumes first character of $text is tag opening. + * + * @access private + * @since 2.9.0 + * + * @param string $text Text to check. First character is assumed to be $opening + * @param array $stack Array used as stack of opened tag elements + * @param string $disabled_elements Tags to match against formatted as regexp sub-expression + * @param string $opening Tag opening character, assumed to be 1 character long + * @param string $opening Tag closing character + * @return object + */ +function _wptexturize_pushpop_element($text, &$stack, $disabled_elements, $opening = '<', $closing = '>') { + // Check if it is a closing tag -- otherwise assume opening tag + if (strncmp($opening . '/', $text, 2)) { + // Opening? Check $text+1 against disabled elements + if (preg_match('/^' . $disabled_elements . '\b/', substr($text, 1), $matches)) { + /* + * This disables texturize until we find a closing tag of our type + * (e.g.
      ) even if there was invalid nesting before that
      +			 * 
      +			 * Example: in the case 
      sadsadasd"baba"
      + * "baba" won't be texturize + */ + + array_push($stack, $matches[1]); + } + } else { + // Closing? Check $text+2 against disabled elements + $c = preg_quote($closing, '/'); + if (preg_match('/^' . $disabled_elements . $c . '/', substr($text, 2), $matches)) { + $last = array_pop($stack); + + // Make sure it matches the opening tag + if ($last != $matches[1]) + array_push($stack, $last); + } + } +} +endif; + +if ( !function_exists( 'clean_pre' ) ) : +/** + * Accepts matches array from preg_replace_callback in wpautop() or a string. + * + * Ensures that the contents of a <
      >...<
      > HTML block are not + * converted into paragraphs or line-breaks. + * + * @since 1.2.0 + * + * @param array|string $matches The array or string + * @return string The pre block without paragraph/line-break conversion. + */ +function clean_pre($matches) { + if ( is_array($matches) ) + $text = $matches[1] . $matches[2] . "
      "; + else + $text = $matches; + + $text = str_replace('
      ', '', $text); + $text = str_replace('

      ', "\n", $text); + $text = str_replace('

      ', '', $text); + + return $text; +} +endif; + +// ! function wpautop() + +if ( !function_exists('seems_utf8') ) : +/** + * Checks to see if a string is utf8 encoded. + * + * NOTE: This function checks for 5-Byte sequences, UTF8 + * has Bytes Sequences with a maximum length of 4. + * + * @author bmorel at ssi dot fr (modified) + * @since 1.2.1 + * + * @param string $str The string to be checked + * @return bool True if $str fits a UTF-8 model, false otherwise. + */ +function seems_utf8($str) { + $length = strlen($str); + for ($i=0; $i < $length; $i++) { + $c = ord($str[$i]); + if ($c < 0x80) $n = 0; # 0bbbbbbb + elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb + elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb + elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb + elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb + elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b + else return false; # Does not match any model + for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? + if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80)) + return false; + } + } + return true; +} +endif; + + + +if ( !function_exists('_wp_specialchars') ) : +/** + * Converts a number of special characters into their HTML entities. + * + * Specifically deals with: &, <, >, ", and '. + * + * $quote_style can be set to ENT_COMPAT to encode " to + * ", or ENT_QUOTES to do both. Default is ENT_NOQUOTES where no quotes are encoded. + * + * @since 1.2.2 + * + * @param string $string The text which is to be encoded. + * @param mixed $quote_style Optional. Converts double quotes if set to ENT_COMPAT, both single and double if set to ENT_QUOTES or none if set to ENT_NOQUOTES. Also compatible with old values; converting single quotes if set to 'single', double if set to 'double' or both if otherwise set. Default is ENT_NOQUOTES. + * @param string $charset Optional. The character encoding of the string. Default is false. + * @param boolean $double_encode Optional. Whether or not to encode existing html entities. Default is false. + * @return string The encoded text with HTML entities. + */ +function _wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) { + $string = (string) $string; + + if ( 0 === strlen( $string ) ) { + return ''; + } + + // Don't bother if there are no specialchars - saves some processing + if ( !preg_match( '/[&<>"\']/', $string ) ) { + return $string; + } + + // Account for the previous behaviour of the function when the $quote_style is not an accepted value + if ( empty( $quote_style ) ) { + $quote_style = ENT_NOQUOTES; + } elseif ( !in_array( $quote_style, array( 0, 2, 3, 'single', 'double' ), true ) ) { + $quote_style = ENT_QUOTES; + } + + // Store the site charset as a static to avoid multiple calls to backpress_get_option() + if ( !$charset ) { + static $_charset; + if ( !isset( $_charset ) ) { + $_charset = backpress_get_option( 'charset' ); + } + $charset = $_charset; + } + if ( in_array( $charset, array( 'utf8', 'utf-8', 'UTF8' ) ) ) { + $charset = 'UTF-8'; + } + + $_quote_style = $quote_style; + + if ( $quote_style === 'double' ) { + $quote_style = ENT_COMPAT; + $_quote_style = ENT_COMPAT; + } elseif ( $quote_style === 'single' ) { + $quote_style = ENT_NOQUOTES; + } + + // Handle double encoding ourselves + if ( !$double_encode ) { + $string = wp_specialchars_decode( $string, $_quote_style ); + $string = preg_replace( '/&(#?x?[0-9a-z]+);/i', '|wp_entity|$1|/wp_entity|', $string ); + } + + $string = @htmlspecialchars( $string, $quote_style, $charset ); + + // Handle double encoding ourselves + if ( !$double_encode ) { + $string = str_replace( array( '|wp_entity|', '|/wp_entity|' ), array( '&', ';' ), $string ); + } + + // Backwards compatibility + if ( 'single' === $_quote_style ) { + $string = str_replace( "'", ''', $string ); + } + + return $string; +} +endif; + +if ( !function_exists( 'wp_specialchars_decode' ) ) : +/** + * Converts a number of HTML entities into their special characters. + * + * Specifically deals with: &, <, >, ", and '. + * + * $quote_style can be set to ENT_COMPAT to decode " entities, + * or ENT_QUOTES to do both " and '. Default is ENT_NOQUOTES where no quotes are decoded. + * + * @since 2.8 + * + * @param string $string The text which is to be decoded. + * @param mixed $quote_style Optional. Converts double quotes if set to ENT_COMPAT, both single and double if set to ENT_QUOTES or none if set to ENT_NOQUOTES. Also compatible with old _wp_specialchars() values; converting single quotes if set to 'single', double if set to 'double' or both if otherwise set. Default is ENT_NOQUOTES. + * @return string The decoded text without HTML entities. + */ +function wp_specialchars_decode( $string, $quote_style = ENT_NOQUOTES ) { + $string = (string) $string; + + if ( 0 === strlen( $string ) ) { + return ''; + } + + // Don't bother if there are no entities - saves a lot of processing + if ( strpos( $string, '&' ) === false ) { + return $string; + } + + // Match the previous behaviour of _wp_specialchars() when the $quote_style is not an accepted value + if ( empty( $quote_style ) ) { + $quote_style = ENT_NOQUOTES; + } elseif ( !in_array( $quote_style, array( 0, 2, 3, 'single', 'double' ), true ) ) { + $quote_style = ENT_QUOTES; + } + + // More complete than get_html_translation_table( HTML_SPECIALCHARS ) + $single = array( ''' => '\'', ''' => '\'' ); + $single_preg = array( '/�*39;/' => ''', '/�*27;/i' => ''' ); + $double = array( '"' => '"', '"' => '"', '"' => '"' ); + $double_preg = array( '/�*34;/' => '"', '/�*22;/i' => '"' ); + $others = array( '<' => '<', '<' => '<', '>' => '>', '>' => '>', '&' => '&', '&' => '&', '&' => '&' ); + $others_preg = array( '/�*60;/' => '<', '/�*62;/' => '>', '/�*38;/' => '&', '/�*26;/i' => '&' ); + + if ( $quote_style === ENT_QUOTES ) { + $translation = array_merge( $single, $double, $others ); + $translation_preg = array_merge( $single_preg, $double_preg, $others_preg ); + } elseif ( $quote_style === ENT_COMPAT || $quote_style === 'double' ) { + $translation = array_merge( $double, $others ); + $translation_preg = array_merge( $double_preg, $others_preg ); + } elseif ( $quote_style === 'single' ) { + $translation = array_merge( $single, $others ); + $translation_preg = array_merge( $single_preg, $others_preg ); + } elseif ( $quote_style === ENT_NOQUOTES ) { + $translation = $others; + $translation_preg = $others_preg; + } + + // Remove zero padding on numeric entities + $string = preg_replace( array_keys( $translation_preg ), array_values( $translation_preg ), $string ); + + // Replace characters according to translation table + return strtr( $string, $translation ); +} +endif; + +if ( !function_exists( 'wp_check_invalid_utf8' ) ) : +/** + * Checks for invalid UTF8 in a string. + * + * @since 2.8 + * + * @param string $string The text which is to be checked. + * @param boolean $strip Optional. Whether to attempt to strip out invalid UTF8. Default is false. + * @return string The checked text. + */ +function wp_check_invalid_utf8( $string, $strip = false ) { + $string = (string) $string; + + if ( 0 === strlen( $string ) ) { + return ''; + } + + // Store the site charset as a static to avoid multiple calls to backpress_get_option() + static $is_utf8; + if ( !isset( $is_utf8 ) ) { + $is_utf8 = in_array( backpress_get_option( 'charset' ), array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ); + } + if ( !$is_utf8 ) { + return $string; + } + + // Check for support for utf8 in the installed PCRE library once and store the result in a static + static $utf8_pcre; + if ( !isset( $utf8_pcre ) ) { + $utf8_pcre = @preg_match( '/^./u', 'a' ); + } + // We can't demand utf8 in the PCRE installation, so just return the string in those cases + if ( !$utf8_pcre ) { + return $string; + } + + // preg_match fails when it encounters invalid UTF8 in $string + if ( 1 === @preg_match( '/^./us', $string ) ) { + return $string; + } + + // Attempt to strip the bad chars if requested (not recommended) + if ( $strip && function_exists( 'iconv' ) ) { + return iconv( 'utf-8', 'utf-8', $string ); + } + + return ''; +} +endif; + +if ( !function_exists('utf8_uri_encode') ) : +/** + * Encode the Unicode values to be used in the URI. + * + * @since 1.5.0 + * + * @param string $utf8_string + * @param int $length Max length of the string + * @return string String with Unicode encoded for URI. + */ +function utf8_uri_encode( $utf8_string, $length = 0 ) { + $unicode = ''; + $values = array(); + $num_octets = 1; + $unicode_length = 0; + + $string_length = strlen( $utf8_string ); + for ($i = 0; $i < $string_length; $i++ ) { + + $value = ord( $utf8_string[ $i ] ); + + if ( $value < 128 ) { + if ( $length && ( $unicode_length >= $length ) ) + break; + $unicode .= chr($value); + $unicode_length++; + } else { + if ( count( $values ) == 0 ) $num_octets = ( $value < 224 ) ? 2 : 3; + + $values[] = $value; + + if ( $length && ( $unicode_length + ($num_octets * 3) ) > $length ) + break; + if ( count( $values ) == $num_octets ) { + if ($num_octets == 3) { + $unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]) . '%' . dechex($values[2]); + $unicode_length += 9; + } else { + $unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]); + $unicode_length += 6; + } + + $values = array(); + $num_octets = 1; + } + } + } + + return $unicode; +} +endif; + +if ( !function_exists('remove_accents') ) : +/** + * Converts all accent characters to ASCII characters. + * + * If there are no accent characters, then the string given is just returned. + * + * @since 1.2.1 + * + * @param string $string Text that might have accent characters + * @return string Filtered string with replaced "nice" characters. + */ +function remove_accents($string) { + if ( !preg_match('/[\x80-\xff]/', $string) ) + return $string; + + if (seems_utf8($string)) { + $chars = array( + // Decompositions for Latin-1 Supplement + chr(195).chr(128) => 'A', chr(195).chr(129) => 'A', + chr(195).chr(130) => 'A', chr(195).chr(131) => 'A', + chr(195).chr(132) => 'A', chr(195).chr(133) => 'A', + chr(195).chr(135) => 'C', chr(195).chr(136) => 'E', + chr(195).chr(137) => 'E', chr(195).chr(138) => 'E', + chr(195).chr(139) => 'E', chr(195).chr(140) => 'I', + chr(195).chr(141) => 'I', chr(195).chr(142) => 'I', + chr(195).chr(143) => 'I', chr(195).chr(145) => 'N', + chr(195).chr(146) => 'O', chr(195).chr(147) => 'O', + chr(195).chr(148) => 'O', chr(195).chr(149) => 'O', + chr(195).chr(150) => 'O', chr(195).chr(153) => 'U', + chr(195).chr(154) => 'U', chr(195).chr(155) => 'U', + chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y', + chr(195).chr(159) => 's', chr(195).chr(160) => 'a', + chr(195).chr(161) => 'a', chr(195).chr(162) => 'a', + chr(195).chr(163) => 'a', chr(195).chr(164) => 'a', + chr(195).chr(165) => 'a', chr(195).chr(167) => 'c', + chr(195).chr(168) => 'e', chr(195).chr(169) => 'e', + chr(195).chr(170) => 'e', chr(195).chr(171) => 'e', + chr(195).chr(172) => 'i', chr(195).chr(173) => 'i', + chr(195).chr(174) => 'i', chr(195).chr(175) => 'i', + chr(195).chr(177) => 'n', chr(195).chr(178) => 'o', + chr(195).chr(179) => 'o', chr(195).chr(180) => 'o', + chr(195).chr(181) => 'o', chr(195).chr(182) => 'o', + chr(195).chr(182) => 'o', chr(195).chr(185) => 'u', + chr(195).chr(186) => 'u', chr(195).chr(187) => 'u', + chr(195).chr(188) => 'u', chr(195).chr(189) => 'y', + chr(195).chr(191) => 'y', + // Decompositions for Latin Extended-A + chr(196).chr(128) => 'A', chr(196).chr(129) => 'a', + chr(196).chr(130) => 'A', chr(196).chr(131) => 'a', + chr(196).chr(132) => 'A', chr(196).chr(133) => 'a', + chr(196).chr(134) => 'C', chr(196).chr(135) => 'c', + chr(196).chr(136) => 'C', chr(196).chr(137) => 'c', + chr(196).chr(138) => 'C', chr(196).chr(139) => 'c', + chr(196).chr(140) => 'C', chr(196).chr(141) => 'c', + chr(196).chr(142) => 'D', chr(196).chr(143) => 'd', + chr(196).chr(144) => 'D', chr(196).chr(145) => 'd', + chr(196).chr(146) => 'E', chr(196).chr(147) => 'e', + chr(196).chr(148) => 'E', chr(196).chr(149) => 'e', + chr(196).chr(150) => 'E', chr(196).chr(151) => 'e', + chr(196).chr(152) => 'E', chr(196).chr(153) => 'e', + chr(196).chr(154) => 'E', chr(196).chr(155) => 'e', + chr(196).chr(156) => 'G', chr(196).chr(157) => 'g', + chr(196).chr(158) => 'G', chr(196).chr(159) => 'g', + chr(196).chr(160) => 'G', chr(196).chr(161) => 'g', + chr(196).chr(162) => 'G', chr(196).chr(163) => 'g', + chr(196).chr(164) => 'H', chr(196).chr(165) => 'h', + chr(196).chr(166) => 'H', chr(196).chr(167) => 'h', + chr(196).chr(168) => 'I', chr(196).chr(169) => 'i', + chr(196).chr(170) => 'I', chr(196).chr(171) => 'i', + chr(196).chr(172) => 'I', chr(196).chr(173) => 'i', + chr(196).chr(174) => 'I', chr(196).chr(175) => 'i', + chr(196).chr(176) => 'I', chr(196).chr(177) => 'i', + chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij', + chr(196).chr(180) => 'J', chr(196).chr(181) => 'j', + chr(196).chr(182) => 'K', chr(196).chr(183) => 'k', + chr(196).chr(184) => 'k', chr(196).chr(185) => 'L', + chr(196).chr(186) => 'l', chr(196).chr(187) => 'L', + chr(196).chr(188) => 'l', chr(196).chr(189) => 'L', + chr(196).chr(190) => 'l', chr(196).chr(191) => 'L', + chr(197).chr(128) => 'l', chr(197).chr(129) => 'L', + chr(197).chr(130) => 'l', chr(197).chr(131) => 'N', + chr(197).chr(132) => 'n', chr(197).chr(133) => 'N', + chr(197).chr(134) => 'n', chr(197).chr(135) => 'N', + chr(197).chr(136) => 'n', chr(197).chr(137) => 'N', + chr(197).chr(138) => 'n', chr(197).chr(139) => 'N', + chr(197).chr(140) => 'O', chr(197).chr(141) => 'o', + chr(197).chr(142) => 'O', chr(197).chr(143) => 'o', + chr(197).chr(144) => 'O', chr(197).chr(145) => 'o', + chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe', + chr(197).chr(148) => 'R',chr(197).chr(149) => 'r', + chr(197).chr(150) => 'R',chr(197).chr(151) => 'r', + chr(197).chr(152) => 'R',chr(197).chr(153) => 'r', + chr(197).chr(154) => 'S',chr(197).chr(155) => 's', + chr(197).chr(156) => 'S',chr(197).chr(157) => 's', + chr(197).chr(158) => 'S',chr(197).chr(159) => 's', + chr(197).chr(160) => 'S', chr(197).chr(161) => 's', + chr(197).chr(162) => 'T', chr(197).chr(163) => 't', + chr(197).chr(164) => 'T', chr(197).chr(165) => 't', + chr(197).chr(166) => 'T', chr(197).chr(167) => 't', + chr(197).chr(168) => 'U', chr(197).chr(169) => 'u', + chr(197).chr(170) => 'U', chr(197).chr(171) => 'u', + chr(197).chr(172) => 'U', chr(197).chr(173) => 'u', + chr(197).chr(174) => 'U', chr(197).chr(175) => 'u', + chr(197).chr(176) => 'U', chr(197).chr(177) => 'u', + chr(197).chr(178) => 'U', chr(197).chr(179) => 'u', + chr(197).chr(180) => 'W', chr(197).chr(181) => 'w', + chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y', + chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z', + chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z', + chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z', + chr(197).chr(190) => 'z', chr(197).chr(191) => 's', + // Euro Sign + chr(226).chr(130).chr(172) => 'E', + // GBP (Pound) Sign + chr(194).chr(163) => ''); + + $string = strtr($string, $chars); + } else { + // Assume ISO-8859-1 if not UTF-8 + $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158) + .chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194) + .chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202) + .chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210) + .chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218) + .chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227) + .chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235) + .chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243) + .chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251) + .chr(252).chr(253).chr(255); + + $chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy"; + + $string = strtr($string, $chars['in'], $chars['out']); + $double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254)); + $double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th'); + $string = str_replace($double_chars['in'], $double_chars['out'], $string); + } + + return $string; +} +endif; + +// ! function sanitize_file_name() + +if ( !function_exists('sanitize_user') ) : +/** + * Sanitize username stripping out unsafe characters. + * + * If $strict is true, only alphanumeric characters (as well as _, space, ., -, + * @) are returned. + * Removes tags, octets, entities, and if strict is enabled, will remove all + * non-ASCII characters. After sanitizing, it passes the username, raw username + * (the username in the parameter), and the strict parameter as parameters for + * the filter. + * + * @since 2.0.0 + * @uses apply_filters() Calls 'sanitize_user' hook on username, raw username, + * and $strict parameter. + * + * @param string $username The username to be sanitized. + * @param bool $strict If set limits $username to specific characters. Default false. + * @return string The sanitized username, after passing through filters. + */ +function sanitize_user( $username, $strict = false ) { + $raw_username = $username; + $username = wp_strip_all_tags($username); + // Kill octets + $username = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '', $username); + $username = preg_replace('/&.+?;/', '', $username); // Kill entities + + // If strict, reduce to ASCII for max portability. + if ( $strict ) + $username = preg_replace('|[^a-z0-9 _.\-@]|i', '', $username); + + // Consolidate contiguous whitespace + $username = preg_replace('|\s+|', ' ', $username); + + return apply_filters('sanitize_user', $username, $raw_username, $strict); +} +endif; + +if ( !function_exists('sanitize_title') ) : +/** + * Sanitizes title or use fallback title. + * + * Specifically, HTML and PHP tags are stripped. Further actions can be added + * via the plugin API. If $title is empty and $fallback_title is set, the latter + * will be used. + * + * @since 1.0.0 + * + * @param string $title The string to be sanitized. + * @param string $fallback_title Optional. A title to use if $title is empty. + * @return string The sanitized string. + */ +function sanitize_title($title, $fallback_title = '') { + $raw_title = $title; + $title = strip_tags($title); + $title = apply_filters('sanitize_title', $title, $raw_title); + + if ( '' === $title || false === $title ) + $title = $fallback_title; + + return $title; +} +endif; + +if ( !function_exists('sanitize_title_with_dashes') ) : +/** + * Sanitizes title, replacing whitespace with dashes. + * + * Limits the output to alphanumeric characters, underscore (_) and dash (-). + * Whitespace becomes a dash. + * + * @since 1.2.0 + * + * @param string $title The title to be sanitized. + * @return string The sanitized title. + */ +function sanitize_title_with_dashes($title) { + $title = strip_tags($title); + // Preserve escaped octets. + $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title); + // Remove percent signs that are not part of an octet. + $title = str_replace('%', '', $title); + // Restore octets. + $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title); + + $title = remove_accents($title); + if (seems_utf8($title)) { + if (function_exists('mb_strtolower')) { + $title = mb_strtolower($title, 'UTF-8'); + } + $title = utf8_uri_encode($title, 200); + } + + $title = strtolower($title); + $title = preg_replace('/&.+?;/', '', $title); // kill entities + $title = str_replace('.', '-', $title); + $title = preg_replace('/[^%a-z0-9 _-]/', '', $title); + $title = preg_replace('/\s+/', '-', $title); + $title = preg_replace('|-+|', '-', $title); + $title = trim($title, '-'); + + return $title; +} +endif; + +// ! function sanitize_sql_orderby() +// ! function sanitize_html_class() +// ! function convert_chars() +// ! function funky_javascript_callback() +// ! function funky_javascript_fix() +// ! function balanceTags() + +if ( !function_exists( 'force_balance_tags' ) ) : +/** + * Balances tags of string using a modified stack. + * + * @since 2.0.4 + * + * @author Leonard Lin + * @license GPL v2.0 + * @copyright November 4, 2001 + * @version 1.1 + * @todo Make better - change loop condition to $text in 1.2 + * @internal Modified by Scott Reilly (coffee2code) 02 Aug 2004 + * 1.1 Fixed handling of append/stack pop order of end text + * Added Cleaning Hooks + * 1.0 First Version + * + * @param string $text Text to be balanced. + * @return string Balanced text. + */ +function force_balance_tags( $text ) { + $tagstack = array(); $stacksize = 0; $tagqueue = ''; $newtext = ''; + $single_tags = array('br', 'hr', 'img', 'input'); //Known single-entity/self-closing tags + $nestable_tags = array('blockquote', 'div', 'span'); //Tags that can be immediately nested within themselves + + # WP bug fix for comments - in case you REALLY meant to type '< !--' + $text = str_replace('< !--', '< !--', $text); + # WP bug fix for LOVE <3 (and other situations with '<' before a number) + $text = preg_replace('#<([0-9]{1})#', '<$1', $text); + + while (preg_match("/<(\/?\w*)\s*([^>]*)>/",$text,$regex)) { + $newtext .= $tagqueue; + + $i = strpos($text,$regex[0]); + $l = strlen($regex[0]); + + // clear the shifter + $tagqueue = ''; + // Pop or Push + if ( isset($regex[1][0]) && '/' == $regex[1][0] ) { // End Tag + $tag = strtolower(substr($regex[1],1)); + // if too many closing tags + if($stacksize <= 0) { + $tag = ''; + //or close to be safe $tag = '/' . $tag; + } + // if stacktop value = tag close value then pop + else if ($tagstack[$stacksize - 1] == $tag) { // found closing tag + $tag = ''; // Close Tag + // Pop + array_pop ($tagstack); + $stacksize--; + } else { // closing tag not at top, search for it + for ($j=$stacksize-1;$j>=0;$j--) { + if ($tagstack[$j] == $tag) { + // add tag to tagqueue + for ($k=$stacksize-1;$k>=$j;$k--){ + $tagqueue .= ''; + $stacksize--; + } + break; + } + } + $tag = ''; + } + } else { // Begin Tag + $tag = strtolower($regex[1]); + + // Tag Cleaning + + // If self-closing or '', don't do anything. + if((substr($regex[2],-1) == '/') || ($tag == '')) { + } + // ElseIf it's a known single-entity tag but it doesn't close itself, do so + elseif ( in_array($tag, $single_tags) ) { + $regex[2] .= '/'; + } else { // Push the tag onto the stack + // If the top of the stack is the same as the tag we want to push, close previous tag + if (($stacksize > 0) && !in_array($tag, $nestable_tags) && ($tagstack[$stacksize - 1] == $tag)) { + $tagqueue = ''; + $stacksize--; + } + $stacksize = array_push ($tagstack, $tag); + } + + // Attributes + $attributes = $regex[2]; + if($attributes) { + $attributes = ' '.$attributes; + } + $tag = '<'.$tag.$attributes.'>'; + //If already queuing a close tag, then put this tag on, too + if ($tagqueue) { + $tagqueue .= $tag; + $tag = ''; + } + } + $newtext .= substr($text,0,$i) . $tag; + $text = substr($text,$i+$l); + } + + // Clear Tag Queue + $newtext .= $tagqueue; + + // Add Remaining text + $newtext .= $text; + + // Empty Stack + while($x = array_pop($tagstack)) { + $newtext .= ''; // Add remaining tags to close + } + + // WP fix for the bug with HTML comments + $newtext = str_replace("< !--","|$))|(<[^>]*(>|$)|>))%', '_wp_kses_split_callback', $string ); +} + +/** + * Callback for wp_kses_split. + * + * @since 3.1.0 + * @access private + */ +function _wp_kses_split_callback( $match ) { + global $pass_allowed_html, $pass_allowed_protocols; + return wp_kses_split2( $match[1], $pass_allowed_html, $pass_allowed_protocols ); +} + +/** + * Callback for wp_kses_split for fixing malformed HTML tags. + * + * This function does a lot of work. It rejects some very malformed things like + * <:::>. It returns an empty string, if the element isn't allowed (look ma, no + * strip_tags()!). Otherwise it splits the tag into an element and an attribute + * list. + * + * After the tag is split into an element and an attribute list, it is run + * through another filter which will remove illegal attributes and once that is + * completed, will be returned. + * + * @access private + * @since 1.0.0 + * @uses wp_kses_attr() + * + * @param string $string Content to filter + * @param array $allowed_html Allowed HTML elements + * @param array $allowed_protocols Allowed protocols to keep + * @return string Fixed HTML element + */ +function wp_kses_split2($string, $allowed_html, $allowed_protocols) { + $string = wp_kses_stripslashes($string); + + if (substr($string, 0, 1) != '<') + return '>'; + # It matched a ">" character + + if (preg_match('%^)?$%', $string, $matches)) { + $string = str_replace(array(''), '', $matches[1]); + while ( $string != $newstring = wp_kses($string, $allowed_html, $allowed_protocols) ) + $string = $newstring; + if ( $string == '' ) + return ''; + // prevent multiple dashes in comments + $string = preg_replace('/--+/', '-', $string); + // prevent three dashes closing a comment + $string = preg_replace('/-$/', '', $string); + return ""; + } + # Allow HTML comments + + if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9]+)([^>]*)>?$%', $string, $matches)) + return ''; + # It's seriously malformed + + $slash = trim($matches[1]); + $elem = $matches[2]; + $attrlist = $matches[3]; + + if (!@isset($allowed_html[strtolower($elem)])) + return ''; + # They are using a not allowed HTML element + + if ($slash != '') + return "<$slash$elem>"; + # No attributes are allowed for closing elements + + return wp_kses_attr("$slash$elem", $attrlist, $allowed_html, $allowed_protocols); +} + +/** + * Removes all attributes, if none are allowed for this element. + * + * If some are allowed it calls wp_kses_hair() to split them further, and then + * it builds up new HTML code from the data that kses_hair() returns. It also + * removes "<" and ">" characters, if there are any left. One more thing it does + * is to check if the tag has a closing XHTML slash, and if it does, it puts one + * in the returned code as well. + * + * @since 1.0.0 + * + * @param string $element HTML element/tag + * @param string $attr HTML attributes from HTML element to closing HTML element tag + * @param array $allowed_html Allowed HTML elements + * @param array $allowed_protocols Allowed protocols to keep + * @return string Sanitized HTML element + */ +function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) { + # Is there a closing XHTML slash at the end of the attributes? + + $xhtml_slash = ''; + if (preg_match('%\s*/\s*$%', $attr)) + $xhtml_slash = ' /'; + + # Are any attributes allowed at all for this element? + + if (@ count($allowed_html[strtolower($element)]) == 0) + return "<$element$xhtml_slash>"; + + # Split it + + $attrarr = wp_kses_hair($attr, $allowed_protocols); + + # Go through $attrarr, and save the allowed attributes for this element + # in $attr2 + + $attr2 = ''; + + foreach ($attrarr as $arreach) { + if (!@ isset ($allowed_html[strtolower($element)][strtolower($arreach['name'])])) + continue; # the attribute is not allowed + + $current = $allowed_html[strtolower($element)][strtolower($arreach['name'])]; + if ($current == '') + continue; # the attribute is not allowed + + if (!is_array($current)) + $attr2 .= ' '.$arreach['whole']; + # there are no checks + + else { + # there are some checks + $ok = true; + foreach ($current as $currkey => $currval) + if (!wp_kses_check_attr_val($arreach['value'], $arreach['vless'], $currkey, $currval)) { + $ok = false; + break; + } + + if ( strtolower($arreach['name']) == 'style' ) { + $orig_value = $arreach['value']; + + $value = safecss_filter_attr($orig_value); + + if ( empty($value) ) + continue; + + $arreach['value'] = $value; + + $arreach['whole'] = str_replace($orig_value, $value, $arreach['whole']); + } + + if ($ok) + $attr2 .= ' '.$arreach['whole']; # it passed them + } # if !is_array($current) + } # foreach + + # Remove any "<" or ">" characters + + $attr2 = preg_replace('/[<>]/', '', $attr2); + + return "<$element$attr2$xhtml_slash>"; +} + +/** + * Builds an attribute list from string containing attributes. + * + * This function does a lot of work. It parses an attribute list into an array + * with attribute data, and tries to do the right thing even if it gets weird + * input. It will add quotes around attribute values that don't have any quotes + * or apostrophes around them, to make it easier to produce HTML code that will + * conform to W3C's HTML specification. It will also remove bad URL protocols + * from attribute values. It also reduces duplicate attributes by using the + * attribute defined first (foo='bar' foo='baz' will result in foo='bar'). + * + * @since 1.0.0 + * + * @param string $attr Attribute list from HTML element to closing HTML element tag + * @param array $allowed_protocols Allowed protocols to keep + * @return array List of attributes after parsing + */ +function wp_kses_hair($attr, $allowed_protocols) { + $attrarr = array (); + $mode = 0; + $attrname = ''; + $uris = array('xmlns', 'profile', 'href', 'src', 'cite', 'classid', 'codebase', 'data', 'usemap', 'longdesc', 'action'); + + # Loop through the whole attribute list + + while (strlen($attr) != 0) { + $working = 0; # Was the last operation successful? + + switch ($mode) { + case 0 : # attribute name, href for instance + + if (preg_match('/^([-a-zA-Z]+)/', $attr, $match)) { + $attrname = $match[1]; + $working = $mode = 1; + $attr = preg_replace('/^[-a-zA-Z]+/', '', $attr); + } + + break; + + case 1 : # equals sign or valueless ("selected") + + if (preg_match('/^\s*=\s*/', $attr)) # equals sign + { + $working = 1; + $mode = 2; + $attr = preg_replace('/^\s*=\s*/', '', $attr); + break; + } + + if (preg_match('/^\s+/', $attr)) # valueless + { + $working = 1; + $mode = 0; + if(FALSE === array_key_exists($attrname, $attrarr)) { + $attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y'); + } + $attr = preg_replace('/^\s+/', '', $attr); + } + + break; + + case 2 : # attribute value, a URL after href= for instance + + if (preg_match('%^"([^"]*)"(\s+|/?$)%', $attr, $match)) + # "value" + { + $thisval = $match[1]; + if ( in_array(strtolower($attrname), $uris) ) + $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols); + + if(FALSE === array_key_exists($attrname, $attrarr)) { + $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n'); + } + $working = 1; + $mode = 0; + $attr = preg_replace('/^"[^"]*"(\s+|$)/', '', $attr); + break; + } + + if (preg_match("%^'([^']*)'(\s+|/?$)%", $attr, $match)) + # 'value' + { + $thisval = $match[1]; + if ( in_array(strtolower($attrname), $uris) ) + $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols); + + if(FALSE === array_key_exists($attrname, $attrarr)) { + $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname='$thisval'", 'vless' => 'n'); + } + $working = 1; + $mode = 0; + $attr = preg_replace("/^'[^']*'(\s+|$)/", '', $attr); + break; + } + + if (preg_match("%^([^\s\"']+)(\s+|/?$)%", $attr, $match)) + # value + { + $thisval = $match[1]; + if ( in_array(strtolower($attrname), $uris) ) + $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols); + + if(FALSE === array_key_exists($attrname, $attrarr)) { + $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n'); + } + # We add quotes to conform to W3C's HTML spec. + $working = 1; + $mode = 0; + $attr = preg_replace("%^[^\s\"']+(\s+|$)%", '', $attr); + } + + break; + } # switch + + if ($working == 0) # not well formed, remove and try again + { + $attr = wp_kses_html_error($attr); + $mode = 0; + } + } # while + + if ($mode == 1 && FALSE === array_key_exists($attrname, $attrarr)) + # special case, for when the attribute list ends with a valueless + # attribute like "selected" + $attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y'); + + return $attrarr; +} + +/** + * Performs different checks for attribute values. + * + * The currently implemented checks are "maxlen", "minlen", "maxval", "minval" + * and "valueless" with even more checks to come soon. + * + * @since 1.0.0 + * + * @param string $value Attribute value + * @param string $vless Whether the value is valueless. Use 'y' or 'n' + * @param string $checkname What $checkvalue is checking for. + * @param mixed $checkvalue What constraint the value should pass + * @return bool Whether check passes + */ +function wp_kses_check_attr_val($value, $vless, $checkname, $checkvalue) { + $ok = true; + + switch (strtolower($checkname)) { + case 'maxlen' : + # The maxlen check makes sure that the attribute value has a length not + # greater than the given value. This can be used to avoid Buffer Overflows + # in WWW clients and various Internet servers. + + if (strlen($value) > $checkvalue) + $ok = false; + break; + + case 'minlen' : + # The minlen check makes sure that the attribute value has a length not + # smaller than the given value. + + if (strlen($value) < $checkvalue) + $ok = false; + break; + + case 'maxval' : + # The maxval check does two things: it checks that the attribute value is + # an integer from 0 and up, without an excessive amount of zeroes or + # whitespace (to avoid Buffer Overflows). It also checks that the attribute + # value is not greater than the given value. + # This check can be used to avoid Denial of Service attacks. + + if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value)) + $ok = false; + if ($value > $checkvalue) + $ok = false; + break; + + case 'minval' : + # The minval check checks that the attribute value is a positive integer, + # and that it is not smaller than the given value. + + if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value)) + $ok = false; + if ($value < $checkvalue) + $ok = false; + break; + + case 'valueless' : + # The valueless check checks if the attribute has a value + # (like ) or not (]+)>@im', make_clickable( $post_text ), $post_links ) ) { + return 0; + } + + $_links = array(); + foreach ( $post_links[1] as $post_link_attributes ) { + $post_link_attributes = preg_split( '@\s+@im', $post_link_attributes, -1, PREG_SPLIT_NO_EMPTY ); + foreach ( $post_link_attributes as $post_link_attribute ) { + if ( strpos( $post_link_attribute, '=', 1 ) !== false ) { + list( $_key, $_value ) = explode( '=', $post_link_attribute, 2 ); + if ( strtolower( $_key ) === 'href' ) { + $_links[] = trim( $_value, "'\"" ); + } + } + } + } + + // Get pingbacks which have already been performed from this topic + $past_pingbacks = bb_get_topicmeta( $topic_id, 'pingback_performed' ); + $new_pingbacks = array(); + + foreach ( $_links as $_link ) { + // If it's already been pingbacked, then skip it + if ( $past_pingbacks && in_array( $_link, $past_pingbacks ) ) { + continue; + } + + // If it's trying to ping itself, then skip it + if ( $topic = bb_get_topic_from_uri( $_link ) ) { + if ( $topic->topic_id === $topic_id ) { + continue; + } + } + + // Make sure it's a page on a site and not the root + if ( !$_url = parse_url( $_link ) ) { + continue; + } + if ( !isset( $_url['query'] ) ) { + if ( $_url['path'] == '' || $_url['path'] == '/' ) { + continue; + } + } + + // Add the URL to the array of those to be pingbacked + $new_pingbacks[] = $_link; + } + + include_once( BACKPRESS_PATH . '/class.ixr.php' ); + + $count = 0; + foreach ( $new_pingbacks as $pingback_to_url ) { + if ( !$pingback_endpoint_uri = BB_Pingbacks::get_endpoint_uri( $pingback_to_url ) ) { + continue; + } + + // Stop this nonsense after 60 seconds + @set_time_limit( 60 ); + + // Get the URL to pingback from + $pingback_from_url = get_topic_link( $topic_id ); + + // Using a timeout of 3 seconds should be enough to cover slow servers + $client = new IXR_Client( $pingback_endpoint_uri ); + $client->timeout = 3; + $client->useragent .= ' -- bbPress/' . bb_get_option( 'version' ); + + // When set to true, this outputs debug messages by itself + $client->debug = false; + + // If successful or the ping already exists then add to the pingbacked list + if ( + $client->query( 'pingback.ping', $pingback_from_url, $pingback_to_url ) || + ( isset( $client->error->code ) && 48 == $client->error->code ) + ) { + $count++; + $past_pingbacks[] = $pingback_to_url; + } + } + + bb_update_topicmeta( $topic_id, 'pingback_performed', $past_pingbacks ); + + return $count; + } +} // END class BB_Pingbacks diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bb-query.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bb-query.php new file mode 100644 index 0000000..8ce1b2b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bb-query.php @@ -0,0 +1,1037 @@ +init( $type, $query, $id ); + + if ( !empty($this->query) ) + $this->query(); + } + + function init( $type = null, $query = null, $id = null ) { + if ( !is_null($type) || !isset($this->type) ) + $this->type = is_null($type) ? 'topic' : $type; + if ( !is_null($query) || !isset($this->query) ) + $this->query = $query; + if ( !is_null($id) || !isset($this->query_id) ) + $this->query_id = $id; + + $this->query_vars = array(); + $this->not_set = array(); + unset($this->request); + $this->match_query = false; + + unset($this->results, $this->errors); + $this->count = 0; + $this->found_rows = false; + } + + function &query() { + global $bbdb; + + if ( $args = func_get_args() ) + call_user_func_array( array(&$this, 'init'), $args ); + + if ( !$this->generate_query() ) + return; + + do_action_ref_array( 'bb_query', array(&$this) ); + + $key = md5( $this->request ); + if ( false === $cached_ids = wp_cache_get( $key, 'bb_query' ) ) { + if ( 'post' == $this->type ) { + $this->results = bb_cache_posts( $this->request, $this->query_vars['post_id_only'] ); // This always appends meta + $_the_id = 'post_id'; + $this->query_vars['append_meta'] = false; + } else { + $this->results = $bbdb->get_results( $this->request ); + $_the_id = 'topic_id'; + } + $cached_ids = array(); + if ( is_array($this->results) ) + foreach ( $this->results as $object ) + $cached_ids[] = $object->$_the_id; + wp_cache_set( $key, $cached_ids, 'bb_query' ); + } else { + if ( 'post' == $this->type ) { + $_query_ids = array(); + $_cached_posts = array(); + foreach ( $cached_ids as $_cached_id ) { + if ( false !== $_post = wp_cache_get( $_cached_id, 'bb_post' ) ) { + $_cached_posts[$_post->post_id] = $_post; + } else { + $_query_ids[] = $_cached_id; + } + } + if ( count( $_query_ids ) ) { + $_query_ids = join( ',', array_map( 'intval', $_query_ids ) ); + $results = $bbdb->get_results( "SELECT * FROM $bbdb->posts WHERE post_id IN($_query_ids)" ); + $results = array_merge( $results, $_cached_posts ); + } else { + $results = $_cached_posts; + } + $_the_id = 'post_id'; + } else { + $_query_ids = array(); + $_cached_topics = array(); + foreach ( $cached_ids as $_cached_id ) { + if ( false !== $_topic = wp_cache_get( $_cached_id, 'bb_topic' ) ) { + $_cached_topics[$_topic->topic_id] = $_topic; + } else { + $_query_ids[] = $_cached_id; + } + } + if ( count( $_query_ids ) ) { + $_query_ids = join( ',', array_map( 'intval', $_query_ids ) ); + $results = $bbdb->get_results( "SELECT * FROM $bbdb->topics WHERE topic_id IN($_query_ids)" ); + $results = array_merge( $results, $_cached_topics ); + } else { + $results = $_cached_topics; + } + $_the_id = 'topic_id'; + } + + $this->results = array(); + $trans = array(); + + foreach ( $results as $object ) + $trans[$object->$_the_id] = $object; + foreach ( $cached_ids as $cached_id ) + $this->results[] = $trans[$cached_id]; + } + + $this->count = count( $this->results ); + + if ( false === $this->found_rows && $this->query_vars['count'] ) // handles FOUND_ROWS() or COUNT(*) + $this->found_rows = bb_count_last_query( $this->request ); + if ( 'post' == $this->type ) { + if ( $this->query_vars['append_meta'] ) + $this->results = bb_append_meta( $this->results, 'post' ); + if ( $this->query_vars['cache_users'] ) + bb_post_author_cache( $this->results ); + if ( $this->query_vars['cache_topics'] ) + bb_cache_post_topics( $this->results ); + } else { + if ( $this->query_vars['append_meta'] ) + $this->results = bb_append_meta( $this->results, 'topic' ); + } + + return $this->results; + } + + function generate_query() { + if ( $args = func_get_args() ) + call_user_func_array( array(&$this, 'init'), $args ); + + $this->parse_query(); + + // Allow filter to abort query + if ( false === $this->query_vars ) + return false; + + if ( 'post' == $this->type ) + $this->generate_post_sql(); + else + $this->generate_topic_sql(); + + return $this->request; + } + + // $defaults = vars to use if not set in GET, POST or allowed + // $allowed = array( key_name => value, key_name, key_name, key_name => value ); + // key_name => value pairs override anything from defaults, GET, POST + // Lone key_names are a whitelist. Only those can be set by defaults, GET, POST + // If there are no lone key_names, allow everything but still override with key_name => value pairs + // Ex: $allowed = array( 'topic_status' => 0, 'post_status' => 0, 'topic_author', 'started' ); + // Will only take topic_author and started values from defaults, GET, POST and will query with topic_status = 0 and post_status = 0 + function &query_from_env( $type = 'topic', $defaults = null, $allowed = null, $id = '' ) { + $this->init_from_env( $type, $defaults, $allowed, $id ); + return $this->query(); + } + + function init_from_env( $type = 'topic', $defaults = null, $allowed = null, $id = '' ) { + $vars = $this->fill_query_vars( array() ); + + $defaults = wp_parse_args($defaults); + $get_vars = stripslashes_deep( $_GET ); + $post_vars = stripslashes_deep( $_POST ); + $allowed = wp_parse_args($allowed); + + $_allowed = array(); + foreach ( array_keys($allowed) as $k ) { + if ( is_numeric($k) ) { + $_allowed[] = $allowed[$k]; + unset($allowed[$k]); + } elseif ( !isset($$k) ) { + $$k = $allowed[$k]; + } + } + + extract($post_vars, EXTR_SKIP); + extract($get_vars, EXTR_SKIP); + extract($defaults, EXTR_SKIP); + + $vars = $_allowed ? compact($_allowed, array_keys($allowed)) : compact(array_keys($vars)); + + $this->init( $type, $vars, $id ); + } + + function fill_query_vars( $array ) { + // Should use 0, '' for empty values + // Function should return false iff not set + + // parameters commented out are handled farther down + + $ints = array( +// 'page', // Defaults to global or number in URI +// 'per_page', // Defaults to page_topics + 'tag_id', // one tag ID + 'favorites', // one user ID, + 'offset', // first item to query + 'number' // number of items to retrieve + ); + + $parse_ints = array( + // Both + 'post_id', + 'topic_id', + 'forum_id', + + // Topics + 'topic_author_id', + 'post_count', + 'tag_count', + + // Posts + 'post_author_id', + 'position' + ); + + $dates = array( + 'started', // topic + 'updated', // topic + 'posted' // post + ); + + $others = array( + // Both + 'topic', // one topic name + 'forum', // one forum name + 'tag', // one tag name + + // Topics + 'topic_author', // one username + 'topic_status', // *normal, deleted, all, parse_int ( and - ) + 'open', // *all, yes = open, no = closed, parse_int ( and - ) + 'sticky', // *all, no = normal, forum, super = front, parse_int ( and - ) + 'meta_key', // one meta_key ( and - ) + 'meta_value', // range + 'topic_title', // LIKE search. Understands "doublequoted strings" + 'search', // generic search: topic_title OR post_text + // Can ONLY be used in a topic query + // Returns additional search_score and (concatenated) post_text columns + + // Posts + 'post_author', // one username + 'post_status', // *noraml, deleted, all, parse_int ( and - ) + 'post_text', // FULLTEXT search + // Returns additional search_score column (and (concatenated) post_text column if topic query) + 'poster_ip', // one IPv4 address + + // SQL + 'index_hint', // A full index hint using valid index hint syntax, can be multiple hints an array + 'order_by', // fieldname + 'order', // *DESC, ASC + 'count', // *false = none, true = COUNT(*), found_rows = FOUND_ROWS() + '_join_type', // not implemented: For benchmarking only. Will disappear. join (1 query), in (2 queries) + + // Utility +// 'append_meta', // *true, false: topics only +// 'cache_users', // *true, false +// 'cache_topics, // *true, false: posts only +// 'post_id_only', // true, *false: this query is only returning post IDs + 'cache_posts' // not implemented: none, first, last + ); + + foreach ( $ints as $key ) + if ( ( false === $array[$key] = isset($array[$key]) ? (int) $array[$key] : false ) && isset($this) ) + $this->not_set[] = $key; + + foreach ( $parse_ints as $key ) + if ( ( false === $array[$key] = isset($array[$key]) ? preg_replace( '/[^<=>0-9,-]/', '', $array[$key] ) : false ) && isset($this) ) + $this->not_set[] = $key; + + foreach ( $dates as $key ) + if ( ( false === $array[$key] = isset($array[$key]) ? preg_replace( '/[^<>0-9-]/', '', $array[$key] ) : false ) && isset($this) ) + $this->not_set[] = $key; + + foreach ( $others as $key ) { + if ( !isset($array[$key]) ) + $array[$key] = false; + if ( isset($this) && false === $array[$key] ) + $this->not_set[] = $key; + } + + // Both + if ( isset($array['page']) ) + $array['page'] = (int) $array['page']; + elseif ( isset($GLOBALS['page']) ) + $array['page'] = (int) $GLOBALS['page']; + else + $array['page'] = bb_get_uri_page(); + + if ( $array['page'] < 1 ) + $array['page'] = 1; + + $array['per_page'] = isset($array['per_page']) ? (int) $array['per_page'] : 0; + if ( $array['per_page'] < -1 ) + $array['per_page'] = 1; + + // Posts + if ( ( !$array['poster_ip'] = isset($array['poster_ip']) ? preg_replace("@[^0-9a-f:.]@i", '', $array['poster_ip']) : false ) && isset($this) ) { + $this->not_set[] = 'poster_ip'; + $array['poster_ip'] = false; + } + + // Utility + $array['append_meta'] = isset($array['append_meta']) ? (int) (bool) $array['append_meta'] : 1; + $array['cache_users'] = isset($array['cache_users']) ? (int) (bool) $array['cache_users'] : 1; + $array['cache_topics'] = isset($array['cache_topics']) ? (int) (bool) $array['cache_topics'] : 1; + $array['post_id_only'] = isset($array['post_id_only']) ? (int) (bool) $array['post_id_only'] : 1; + + // Only one FULLTEXT search per query please + if ( $array['search'] ) + $array['post_text'] = false; + + return $array; + } + + // Parse a query string and set query flag booleans. + function parse_query() { + if ( $args = func_get_args() ) + call_user_func_array( array(&$this, 'init'), $args ); + + if ( is_array($this->query) ) + $this->query_vars = $this->query; + else + wp_parse_str($this->query, $this->query_vars); + + do_action_ref_array('bb_parse_query', array(&$this)); + + if ( false === $this->query_vars ) + return; + + $this->query_vars = $this->fill_query_vars($this->query_vars); + } + + function get($query_var) { + return isset($this->query_vars[$query_var]) ? $this->query_vars[$query_var] : null; + } + + function set($query_var, $value) { + $this->query_vars[$query_var] = $value; + } + + function generate_topic_sql( $_part_of_post_query = false ) { + global $bbdb; + + $q =& $this->query_vars; + $distinct = ''; + $sql_calc_found_rows = 'found_rows' === $q['count'] ? 'SQL_CALC_FOUND_ROWS' : ''; // unfiltered + $fields = 't.*'; + $index_hint = ''; + $join = ''; + $where = ''; + $group_by = ''; + $having = ''; + $order_by = ''; + + $post_where = ''; + $post_queries = array('post_author_id', 'post_author', 'posted', 'post_status', 'position', 'post_text', 'poster_ip'); + + if ( !$_part_of_post_query && ( $q['search'] || array_diff($post_queries, $this->not_set) ) ) : + $join .= " JOIN $bbdb->posts as p ON ( t.topic_id = p.topic_id )"; + $post_where = $this->generate_post_sql( true ); + if ( $q['search'] ) { + $post_where .= ' AND ( '; + $post_where .= $this->generate_topic_title_sql( $q['search'] ); + $post_where .= ' OR '; + $post_where .= $this->generate_post_text_sql( $q['search'] ); + $post_where .= ' )'; + } + + $group_by = 't.topic_id'; + + $fields .= ", MIN(p.post_id) as post_id"; + + if ( $bbdb->has_cap( 'GROUP_CONCAT', $bbdb->posts ) ) + $fields .= ", GROUP_CONCAT(p.post_text SEPARATOR ' ') AS post_text"; + else + $fields .= ", p.post_text"; + + if ( $this->match_query ) { + $fields .= ", AVG($this->match_query) AS search_score"; + if ( !$q['order_by'] ) + $q['order_by'] = 'search_score'; + } elseif ( $q['search'] || $q['post_text'] ) { + $fields .= ", 0 AS search_score"; + } + endif; + + if ( !$_part_of_post_query ) : + if ( $q['post_id'] ) : + $post_topics = $post_topics_no = array(); + $op = substr($q['post_id'], 0, 1); + if ( in_array($op, array('>','<')) ) : + $post_topics = $bbdb->get_col( "SELECT DISTINCT topic_id FROM $bbdb->posts WHERE post_id $op '" . (int) substr($q['post_id'], 1) . "'" ); + else : + $posts = explode(',', $q['post_id']); + $get_posts = array(); + foreach ( $posts as $post_id ) { + $post_id = (int) $post_id; + $_post_id = abs($post_id); + $get_posts[] = $_post_id; + } + bb_cache_posts( $get_posts ); + + foreach ( $posts as $post_id ) : + $post = bb_get_post( abs($post_id) ); + if ( $post_id < 0 ) + $post_topics_no[] = $post->topic_id; + else + $post_topics[] = $post->topic_id; + endforeach; + endif; + if ( $post_topics ) + $where .= " AND t.topic_id IN (" . join(',', $post_topics) . ")"; + if ( $post_topics_no ) + $where .= " AND t.topic_id NOT IN (" . join(',', $post_topics_no) . ")"; + endif; + + if ( $q['topic_id'] ) : + $where .= $this->parse_value( 't.topic_id', $q['topic_id'] ); + elseif ( $q['topic'] ) : + $q['topic'] = bb_slug_sanitize( $q['topic'] ); + $where .= " AND t.topic_slug = '$q[topic]'"; + endif; + + if ( $q['forum_id'] ) : + $where .= $this->parse_value( 't.forum_id', $q['forum_id'] ); + elseif ( $q['forum'] ) : + if ( !$q['forum_id'] = bb_get_id_from_slug( 'forum', $q['forum'] ) ) + $this->error( 'query_var:forum', 'No forum by that name' ); + $where .= " AND t.forum_id = $q[forum_id]"; + endif; + + if ( $q['tag'] && !is_int($q['tag_id']) ) + $q['tag_id'] = (int) bb_get_tag_id( $q['tag'] ); + + if ( is_numeric($q['tag_id']) ) : + $join .= " JOIN `$bbdb->term_relationships` AS tr ON ( t.`topic_id` = tr.`object_id` AND tr.`term_taxonomy_id` = $q[tag_id] )"; + endif; + + if ( is_numeric($q['favorites']) && $f_user = bb_get_user( $q['favorites'] ) ) + $where .= $this->parse_value( 't.topic_id', $f_user->favorites ); + endif; // !_part_of_post_query + + if ( $q['topic_title'] ) + $where .= ' AND ' . $this->generate_topic_title_sql( $q['topic_title'] ); + + if ( $q['started'] ) + $where .= $this->date( 't.topic_start_time', $q['started'] ); + + if ( $q['updated'] ) + $where .= $this->date( 't.topic_time', $q['updated'] ); + + if ( $q['topic_author_id'] ) : + $where .= $this->parse_value( 't.topic_poster', $q['topic_author_id'] ); + elseif ( $q['topic_author'] ) : + $user = bb_get_user( $q['topic_author'], array( 'by' => 'login' ) ); + if ( !$q['topic_author_id'] = (int) $user->ID ) + $this->error( 'query_var:user', 'No user by that name' ); + $where .= " AND t.topic_poster = $q[topic_author_id]"; + endif; + + if ( !$q['topic_status'] ) : + $where .= " AND t.topic_status = '0'"; + elseif ( false === strpos($q['topic_status'], 'all') ) : + $stati = array( 'normal' => 0, 'deleted' => 1 ); + $q['topic_status'] = str_replace(array_keys($stati), array_values($stati), $q['topic_status']); + $where .= $this->parse_value( 't.topic_status', $q['topic_status'] ); + endif; + + if ( false !== $q['open'] && false === strpos($q['open'], 'all') ) : + $stati = array( 'no' => 0, 'closed' => 0, 'yes' => 1, 'open' => 1 ); + $q['open'] = str_replace(array_keys($stati), array_values($stati), $q['open']); + $where .= $this->parse_value( 't.topic_open', $q['open'] ); + endif; + + if ( false !== $q['sticky'] && false === strpos($q['sticky'], 'all') ) : + $stickies = array( 'no' => 0, 'normal' => 0, 'forum' => 1, 'super' => 2, 'front' => 2, 'sticky' => '-0' ); + $q['sticky'] = str_replace(array_keys($stickies), array_values($stickies), $q['sticky']); + $where .= $this->parse_value( 't.topic_sticky', $q['sticky'] ); + endif; + + if ( false !== $q['post_count'] ) + $where .= $this->parse_value( 't.topic_posts', $q['post_count'] ); + + if ( false !== $q['tag_count'] ) + $where .= $this->parse_value( 't.tag_count', $q['tag_count'] ); + + if ( $q['meta_key'] && $q['meta_key'] = preg_replace('|[^a-z0-9_-]|i', '', $q['meta_key']) ) : + if ( '-' == substr($q['meta_key'], 0, 1) ) : + $join .= " LEFT JOIN $bbdb->meta AS tm ON ( tm.object_type = 'bb_topic' AND t.topic_id = tm.object_id AND tm.meta_key = '" . substr( $q['meta_key'], 1 ) . "' )"; + $where .= " AND tm.meta_key IS NULL"; + else : + $join .= " JOIN $bbdb->meta AS tm ON ( tm.object_type = 'bb_topic' AND t.topic_id = tm.object_id AND tm.meta_key = '$q[meta_key]' )"; + + if ( $q['meta_value'] ) : + $q['meta_value'] = maybe_serialize( $q['meta_value'] ); + if ( strpos( $q['meta_value'], 'NULL' ) !== false ) + $join = ' LEFT' . $join; + $where .= $this->parse_value( 'tm.meta_value', $q['meta_value'] ); + endif; + endif; + endif; + + // Just getting topic part for inclusion in post query + if ( $_part_of_post_query ) + return $where; + + $where .= $post_where; + + if ( $where ) // Get rid of initial " AND " (this is pre-filters) + $where = substr($where, 5); + + if ( $q['index_hint'] ) + $index_hint = $q['index_hint']; + + if ( $q['order_by'] ) + $order_by = $q['order_by']; + else + $order_by = 't.topic_time'; + + $bits = compact( array('distinct', 'sql_calc_found_rows', 'fields', 'index_hint', 'join', 'where', 'group_by', 'having', 'order_by') ); + $this->request = $this->_filter_sql( $bits, "$bbdb->topics AS t" ); + return $this->request; + } + + function generate_post_sql( $_part_of_topic_query = false ) { + global $bbdb; + + $q =& $this->query_vars; + $distinct = ''; + $sql_calc_found_rows = 'found_rows' === $q['count'] ? 'SQL_CALC_FOUND_ROWS' : ''; // unfiltered + $fields = 'p.*'; + $index_hint = ''; + $join = ''; + $where = ''; + $group_by = ''; + $having = ''; + $order_by = ''; + + $topic_where = ''; + $topic_queries = array( 'topic_author_id', 'topic_author', 'topic_status', 'post_count', 'tag_count', 'started', 'updated', 'open', 'sticky', 'meta_key', 'meta_value', 'topic_title' ); + if ( !$_part_of_topic_query && array_diff($topic_queries, $this->not_set) ) : + $join .= " JOIN $bbdb->topics as t ON ( t.topic_id = p.topic_id )"; + $topic_where = $this->generate_topic_sql( true ); + endif; + + if ( !$_part_of_topic_query ) : + if ( $q['post_id'] ) + $where .= $this->parse_value( 'p.post_id', $q['post_id'] ); + + if ( $q['topic_id'] ) : + $where .= $this->parse_value( 'p.topic_id', $q['topic_id'] ); + elseif ( $q['topic'] ) : + if ( !$q['topic_id'] = bb_get_id_from_slug( 'topic', $q['topic'] ) ) + $this->error( 'query_var:topic', 'No topic by that name' ); + $where .= " AND p.topic_id = " . $q['topic_id']; + endif; + + if ( $q['forum_id'] ) : + $where .= $this->parse_value( 'p.forum_id', $q['forum_id'] ); + elseif ( $q['forum'] ) : + if ( !$q['forum_id'] = bb_get_id_from_slug( 'forum', $q['forum'] ) ) + $this->error( 'query_var:forum', 'No forum by that name' ); + $where .= " AND p.forum_id = " . $q['forum_id']; + endif; + + if ( $q['tag'] && !is_int($q['tag_id']) ) + $q['tag_id'] = (int) bb_get_tag_id( $q['tag'] ); + + if ( is_numeric($q['tag_id']) ) : + $join .= " JOIN `$bbdb->term_relationships` AS tr ON ( p.`topic_id` = tr.`object_id` AND tr.`term_taxonomy_id` = $q[tag_id] )"; + endif; + + if ( is_numeric($q['favorites']) && $f_user = bb_get_user( $q['favorites'] ) ) + $where .= $this->parse_value( 'p.topic_id', $f_user->favorites ); + endif; // !_part_of_topic_query + + if ( $q['post_text'] ) : + $where .= ' AND ' . $this->generate_post_text_sql( $q['post_text'] ); + if ( $this->match_query ) { + $fields .= ", $this->match_query AS search_score"; + if ( !$q['order_by'] ) + $q['order_by'] = 'search_score'; + } else { + $fields .= ', 0 AS search_score'; + } + endif; + + if ( $q['posted'] ) + $where .= $this->date( 'p.post_time', $q['posted'] ); + + if ( $q['post_author_id'] ) : + $where .= $this->parse_value( 'p.poster_id', $q['post_author_id'] ); + elseif ( $q['post_author'] ) : + $user = bb_get_user( $q['post_author'], array( 'by' => 'login' ) ); + if ( !$q['post_author_id'] = (int) $user->ID ) + $this->error( 'query_var:user', 'No user by that name' ); + $where .= " AND p.poster_id = $q[post_author_id]"; + endif; + + if ( !$q['post_status'] ) : + $where .= " AND p.post_status = '0'"; + elseif ( false === strpos($q['post_status'], 'all') ) : + $stati = array( 'normal' => 0, 'deleted' => 1 ); + $q['post_status'] = str_replace(array_keys($stati), array_values($stati), $q['post_status']); + $where .= $this->parse_value( 'p.post_status', $q['post_status'] ); + endif; + + if ( false !== $q['position'] ) + $where .= $this->parse_value( 'p.post_position', $q['position'] ); + + if ( false !== $q['poster_ip'] ) + $where .= " AND poster_ip = '" . $q['poster_ip'] . "'"; + + // Just getting post part for inclusion in topic query + if ( $_part_of_topic_query ) + return $where; + + $where .= $topic_where; + + if ( $where ) // Get rid of initial " AND " (this is pre-filters) + $where = substr($where, 5); + + if ( $q['index_hint'] ) + $index_hint = $q['index_hint']; + + if ( $q['order_by'] ) + $order_by = $q['order_by']; + else + $order_by = 'p.post_time'; + + $bits = compact( array('distinct', 'sql_calc_found_rows', 'fields', 'index_hint', 'join', 'where', 'group_by', 'having', 'order_by') ); + $this->request = $this->_filter_sql( $bits, "$bbdb->posts AS p" ); + + return $this->request; + } + + function generate_topic_title_sql( $string ) { + global $bbdb; + $string = trim($string); + + if ( !preg_match_all('/".*?("|$)|((?<=[\s",+])|^)[^\s",+]+/', $string, $matches) ) { + $string = $bbdb->escape($string); + return "(t.topic_title LIKE '%$string%')"; + } + + $where = ''; + + foreach ( $matches[0] as $match ) { + $term = trim($match, "\"\n\r "); + $term = $bbdb->escape($term); + $where .= " AND t.topic_title LIKE '%$term%'"; + } + + if ( count($matches[0]) > 1 && $string != $matches[0][0] ) { + $string = $bbdb->escape($string); + $where .= " OR t.topic_title LIKE '%$string%'"; + } + + return '(' . substr($where, 5) . ')'; + } + + function generate_post_text_sql( $string ) { + global $bbdb; + $string = trim($string); + $_string = $bbdb->escape( $string ); + if ( strlen($string) < 5 ) + return "p.post_text LIKE '%$_string%'"; + + return $this->match_query = "MATCH(p.post_text) AGAINST('$_string')"; + } + + function _filter_sql( $bits, $from ) { + global $bbdb; + + $q =& $this->query_vars; + + // MySQL 5.1 allows multiple index hints per query - earlier versions only get the first hint + if ( $bits['index_hint'] ) { + if ( !is_array( $bits['index_hint'] ) ) { + $bits['index_hint'] = array( (string) $bits['index_hint'] ); + } + if ( $bbdb->has_cap( 'index_hint_for_any' ) ) { + // 5.1 <= MySQL + $_regex = '/\s*(USE|IGNORE|FORCE)\s+(INDEX|KEY)\s+(FOR\s+(JOIN|ORDER\s+BY|GROUP\s+BY)\s+)?\(\s*`?[a-z0-9_]+`?(\s*,\s*`?[a-z0-9_]+`?)*\s*\)\s*/i'; + } elseif ( $bbdb->has_cap( 'index_hint_for_join' ) ) { + // 5.0 <= MySQL < 5.1 + $_regex = '/\s*(USE|IGNORE|FORCE)\s+(INDEX|KEY)\s+(FOR\s+JOIN\s+)?\(\s*`?[a-z0-9_]+`?(\s*,\s*`?[a-z0-9_]+`?)*\s*\)\s*/i'; + } else { + // MySQL < 5.0 + $_regex = '/\s*(USE|IGNORE|FORCE)\s+(INDEX|KEY)\s+\(\s*`?[a-z0-9_]+`?(\s*,\s*`?[a-z0-9_]+`?)*\s*\)\s*/i'; + } + $_index_hint = array(); + foreach ( $bits['index_hint'] as $_hint ) { + if ( preg_match( $_regex, $_hint ) ) { + $_index_hint[] = trim( $_hint ); + } + } + unset( $_regex, $_hint ); + if ( $bbdb->has_cap( 'index_hint_lists' ) ) { + // 5.1 <= MySQL + $bits['index_hint'] = join( ' ', $_index_hint ); + } else { + // MySQL < 5.1 + $bits['index_hint'] = isset( $_index_hint[0] ) ? $_index_hint[0] : ''; + } + unset( $_index_hint ); + } + + $q['order'] = strtoupper($q['order']); + if ( $q['order'] && in_array($q['order'], array('ASC', 'DESC')) ) + $bits['order_by'] .= " $q[order]"; + else + $bits['order_by'] .= " DESC"; + + $bits['limit'] = ''; + + // When offset and number are provided, skip per_page and limit checks + if ( !empty( $q['offset'] ) && !empty( $q['number'] ) ) { + $bits['limit'] .= $q['offset'] . ", " . $q['number']; + + // Else proceed as normal + } else { + if ( !$q['per_page'] ) { + $q['per_page'] = (int) bb_get_option( 'page_topics' ); + } + + if ( $q['per_page'] > 0 ) { + if ( $q['page'] > 1 ) { + $bits['limit'] .= $q['per_page'] * ( $q['page'] - 1 ) . ", "; + } + $bits['limit'] .= $q['per_page']; + } + } + + $name = "get_{$this->type}s_"; + + // Unfiltered + $sql_calc_found_rows = $bits['sql_calc_found_rows']; + unset($bits['sql_calc_found_rows']); + + foreach ( $bits as $bit => $value ) { + if ( $this->query_id ) + $value = apply_filters( "{$this->query_id}_$bit", $value ); + $$bit = apply_filters( "$name$bit", $value ); + } + + if ( $where ) + $where = "WHERE $where"; + if ( $group_by ) + $group_by = "GROUP BY $group_by"; + if ( $having ) + $having = "HAVING $having"; + if ( $order_by ) + $order_by = "ORDER BY $order_by"; + if ( $limit ) + $limit = "LIMIT $limit"; + + return "SELECT $distinct $sql_calc_found_rows $fields FROM $from $index_hint $join $where $group_by $having $order_by $limit"; + } + + function parse_value( $field, $value = '' ) { + if ( !$value && !is_numeric($value) ) + return ''; + + global $bbdb; + + $op = substr($value, 0, 1); + + // #, =whatever, <#, >#. Cannot do < and > at same time + if ( in_array($op, array('<', '=', '>')) ) : + $value = substr($value, 1); + $value = is_numeric($value) ? (float) $value : $bbdb->escape( $value ); + return " AND $field $op '$value'"; + elseif ( false === strpos($value, ',') && 'NULL' !== $value && '-NULL' !== $value ) : + $value = is_numeric($value) ? (float) $value : $bbdb->escape( $value ); + return '-' == $op ? " AND $field != '" . substr($value, 1) . "'" : " AND $field = '$value'"; + endif; + + $y = $n = array(); + foreach ( explode(',', $value) as $v ) { + $v = is_numeric($v) ? (int) $v : $bbdb->escape( $v ); + if ( '-' == substr($v, 0, 1) ) + if ( $v === '-NULL' ) + $not_null_flag = true; + else + $n[] = substr($v, 1); + else + if ( $v === 'NULL' ) + $null_flag = true; + else + $y[] = $v; + } + + $r = ''; + if ( $y ) { + $r .= " AND "; + if ( $null_flag ) + $r .= "("; + $r .= "$field IN ('" . join("','", $y) . "')"; + if ( $null_flag ) + $r .= " OR $field IS NULL)"; + } elseif ( $null_flag ) { + $r .= " AND $field IS NULL"; + } + + if ( $n ) { + $r .= " AND "; + if ( $not_null_flag ) + $r .= "("; + $r .= "$field NOT IN ('" . join("','", $n) . "')"; + if ( $not_null_flag ) + $r .= " AND $field IS NOT NULL)"; + } elseif ( $not_null_flag ) { + $r .= " AND $field IS NOT NULL"; + } + + return $r; + } + + function date( $field, $date ) { + if ( !$date && !is_int($date) ) + return ''; + + if ( $is_range = false !== strpos( $date, '--' ) ) + $dates = explode( '--', $date, 2 ); + else + $dates = array( $date ); + + $op = false; + $r = ''; + foreach ( $dates as $date ) { + if ( $is_range ) { + $op = $op ? '<' : '>'; + $date = (int) substr($date, 0, 14); + } else { + $op = substr($date, 0, 1); + if ( !in_array($op, array('>', '<')) ) + break; + $date = (int) substr($date, 1, 14); + } + if ( strlen($date) < 14 ) + $date .= str_repeat('0', 14 - strlen($date)); + $r .= " AND $field $op $date"; + } + if ( $r ) + return $r; + + $date = (int) $date; + $r = " AND YEAR($field) = " . substr($date, 0, 4); + if ( strlen($date) > 5 ) + $r .= " AND MONTH($field) = " . substr($date, 4, 2); + if ( strlen($date) > 7 ) + $r .= " AND DAYOFMONTH($field) = " . substr($date, 6, 2); + if ( strlen($date) > 9 ) + $r .= " AND HOUR($field) = " . substr($date, 8, 2); + if ( strlen($date) > 11 ) + $r .= " AND MINUTE($field) = " . substr($date, 10, 2); + if ( strlen($date) > 13 ) + $r .= " AND SECOND($field) = " . substr($date, 12, 2); + return $r; + } + + function error( $code, $message ) { + if ( is_wp_error($this->errors) ) + $this->errors->add( $code, $message ); + else + $this->errors = new WP_Error( $code, $message ); + } +} + +class BB_Query_Form extends BB_Query { + var $defaults; + var $allowed; + + // Can optionally pass unique id string to help out filters + function BB_Query_Form( $type = 'topic', $defaults = '', $allowed = '', $id = '' ) { + $this->defaults = wp_parse_args( $defaults ); + $this->allowed = wp_parse_args( $allowed ); + if ( !empty($defaults) || !empty($allowed) ) + $this->query_from_env($type, $defaults, $allowed, $id); + } + + function form( $args = null ) { + $_post = 'post' == $this->type; + + $defaults = array( + 'search' => true, + 'forum' => true, + 'tag' => false, + 'open' => false, + 'topic_author' => false, + 'post_author' => false, + 'topic_status' => false, + 'post_status' => false, + 'topic_title' => false, + 'poster_ip' => false, + + 'method' => 'get', + 'submit' => __('Search »'), + 'action' => '' + ); + $defaults['id'] = $_post ? 'post-search-form' : 'topic-search-form'; + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $id = esc_attr( $id ); + $method = 'get' == strtolower($method) ? 'get' : 'post'; + $submit = esc_attr( $submit ); + if ( !$action = esc_url( $action ) ) + $action = ''; + + if ( $this->query_vars ) + $query_vars =& $this->query_vars; + else + $query_vars = $this->fill_query_vars( $this->defaults ); + + extract($query_vars, EXTR_PREFIX_ALL, 'q'); + + $r = "
      \n"; + + $r .= "\t
      \n"; + + if ( $search ) { + if ( $_post ) { + $s_value = esc_attr( $q_post_text ); + $s_name = 'post_text'; + $s_id = 'post-text'; + } else { + $s_value = esc_attr( $q_search ); + $s_name = $s_id = 'search'; + } + $r .= "\t
      \n"; + $r .= "\t\t
      \n"; + $r .= "\t
      \n\n"; + } + + if ( $forum ) { + $r .= "\t
      \n"; + $r .= "\t\t
      " . bb_get_forum_dropdown( array( 'selected' => $q_forum_id, 'none' => __('Any') ) ) . "
      \n"; + $r .= "\t
      \n\n"; + } + + if ( $tag ) { + $q_tag = esc_attr( $q_tag ); + $r .= "\t
      \n"; + $r .= "\t\t
      \n"; + $r .= "\t
      \n\n"; + } + + if ( $topic_author ) { + $q_topic_author = esc_attr( $q_topic_author ); + $r .= "\t
      \n"; + $r .= "\t\t
      \n"; + $r .= "\t
      \n\n"; + } + + if ( $post_author ) { + $q_post_author = esc_attr( $q_post_author ); + $r .= "\t
      \n"; + $r .= "\t\t
      \n"; + $r .= "\t
      \n\n"; + } + + $stati = apply_filters( 'bb_query_form_post_status', array( 'all' => _x( 'All', 'post status' ), '0' => __('Normal'), '1' => __('Deleted') ), $this->type ); + + if ( $topic_status ) { + $r .= "\t
      \n"; + $r .= "\t\t
      \n"; + $r .= "\t
      \n\n"; + } + + if ( $post_status ) { + $r .= "\t
      \n"; + $r .= "\t\t
      \n"; + $r .= "\t
      \n\n"; + } + + if ( $poster_ip ) { + $r .= "\t
      \n"; + $r .= "\t\t
      \n"; + $r .= "\t
      \n\n"; + } + + if ( $open ) { + $r .= "\t
      \n"; + $r .= "\t\t
      \n"; + $r .= "\t
      \n\n"; + } + + if ( $topic_title ) { + $q_topic_title = esc_attr( $q_topic_title ); + $r .= "\t
      \n"; + $r .= "\t\t
      \n"; + $r .= "\t
      \n\n"; + } + + $r .= apply_filters( 'bb_query_form_inputs', '', $args, $query_vars ); + + $r .= "\t
      \n"; + $r .= "\t\t
      \n"; + $r .= "\t
      \n"; + + $r .= "\t
      \n\n"; + + do_action( 'bb_query_form', $args, $query_vars ); + + $r .= "
      \n\n"; + + echo $r; + } +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bb-taxonomy.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bb-taxonomy.php new file mode 100644 index 0000000..7c98a42 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bb-taxonomy.php @@ -0,0 +1,329 @@ +is_taxonomy($taxonomy) ) + return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); + } + + $defaults = array('order' => 'ASC', 'field' => 'term_id', 'user_id' => 0); + $args = wp_parse_args( $args, $defaults ); + extract($args, EXTR_SKIP); + + if ( 'tt_id' == $field ) + $field = 'tt.term_taxonomy_id'; + else + $field = 'tt.term_id'; + + $order = ( 'desc' == strtolower($order) ) ? 'DESC' : 'ASC'; + $user_id = (int) $user_id; + + $terms = array_map('intval', $terms); + + $taxonomies = "'" . implode("', '", $taxonomies) . "'"; + $terms = "'" . implode("', '", $terms) . "'"; + + $sql = "SELECT tr.object_id FROM {$this->db->term_relationships} AS tr INNER JOIN {$this->db->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ($taxonomies) AND $field IN ($terms)"; + if ( $user_id ) + $sql .= " AND tr.user_id = '$user_id'"; + $sql .= " ORDER BY tr.object_id $order"; + + $object_ids = $this->db->get_col( $sql ); + + if ( ! $object_ids ) + return array(); + + return $object_ids; + } + + /** + * Will unlink the term from the taxonomy. + * + * Will remove the term's relationship to the taxonomy, not the term or taxonomy + * itself. The term and taxonomy will still exist. Will require the term's + * object ID to perform the operation. + * + * @package bbPress + * @subpackage Taxonomy + * @since 1.0 + * + * @param int $object_id The term Object Id that refers to the term + * @param string|array $taxonomy List of Taxonomy Names or single Taxonomy name. + * @param int $user_id The ID of the user who created the relationship. + */ + function delete_object_term_relationships( $object_id, $taxonomies, $user_id = 0 ) { + $object_id = (int) $object_id; + $user_id = (int) $user_id; + + if ( !is_array($taxonomies) ) + $taxonomies = array($taxonomies); + + foreach ( (array) $taxonomies as $taxonomy ) { + $terms = $this->get_object_terms($object_id, $taxonomy, array('fields' => 'tt_ids', 'user_id' => $user_id)); + $in_terms = "'" . implode("', '", $terms) . "'"; + $sql = "DELETE FROM {$this->db->term_relationships} WHERE object_id = %d AND term_taxonomy_id IN ($in_terms)"; + if ( $user_id ) + $sql .= " AND user_id = %d"; + $this->db->query( $this->db->prepare( $sql, $object_id, $user_id ) ); + $this->update_term_count($terms, $taxonomy); + } + } + + /** + * Retrieves the terms associated with the given object(s), in the supplied taxonomies. + * + * The following information has to do the $args parameter and for what can be + * contained in the string or array of that parameter, if it exists. + * + * The first argument is called, 'orderby' and has the default value of 'name'. + * The other value that is supported is 'count'. + * + * The second argument is called, 'order' and has the default value of 'ASC'. + * The only other value that will be acceptable is 'DESC'. + * + * The final argument supported is called, 'fields' and has the default value of + * 'all'. There are multiple other options that can be used instead. Supported + * values are as follows: 'all', 'ids', 'names', and finally + * 'all_with_object_id'. + * + * The fields argument also decides what will be returned. If 'all' or + * 'all_with_object_id' is choosen or the default kept intact, then all matching + * terms objects will be returned. If either 'ids' or 'names' is used, then an + * array of all matching term ids or term names will be returned respectively. + * + * @package bbPress + * @subpackage Taxonomy + * @since 1.0 + * + * @param int|array $object_id The id of the object(s) to retrieve. + * @param string|array $taxonomies The taxonomies to retrieve terms from. + * @param array|string $args Change what is returned + * @return array|WP_Error The requested term data or empty array if no terms found. WP_Error if $taxonomy does not exist. + */ + function get_object_terms($object_ids, $taxonomies, $args = array()) { + if ( !is_array($taxonomies) ) + $taxonomies = array($taxonomies); + + foreach ( (array) $taxonomies as $taxonomy ) { + if ( !$this->is_taxonomy($taxonomy) ) + return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); + } + + if ( !is_array($object_ids) ) + $object_ids = array($object_ids); + $object_ids = array_map('intval', $object_ids); + + $defaults = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all', 'user_id' => 0); + $args = wp_parse_args( $args, $defaults ); + $args['user_id'] = (int) $args['user_id']; + + $terms = array(); + if ( count($taxonomies) > 1 ) { + foreach ( $taxonomies as $index => $taxonomy ) { + $t = $this->get_taxonomy($taxonomy); + if ( isset($t->args) && is_array($t->args) && $args != array_merge($args, $t->args) ) { + unset($taxonomies[$index]); + $terms = array_merge($terms, $this->get_object_terms($object_ids, $taxonomy, array_merge($args, $t->args))); + } + } + } else { + $t = $this->get_taxonomy($taxonomies[0]); + if ( isset($t->args) && is_array($t->args) ) + $args = array_merge($args, $t->args); + } + + extract($args, EXTR_SKIP); + $user_id = (int) $user_id; + + if ( 'count' == $orderby ) + $orderby = 'tt.count'; + else if ( 'name' == $orderby ) + $orderby = 't.name'; + else if ( 'slug' == $orderby ) + $orderby = 't.slug'; + else if ( 'term_group' == $orderby ) + $orderby = 't.term_group'; + else if ( 'term_order' == $orderby ) + $orderby = 'tr.term_order'; + else if ( 'none' == $orderby ) { + $orderby = ''; + $order = ''; + } else { + $orderby = 't.term_id'; + } + + // tt_ids queries can only be none or tr.term_taxonomy_id + if ( ('tt_ids' == $fields) && !empty($orderby) ) + $orderby = 'tr.term_taxonomy_id'; + + if ( !empty($orderby) ) + $orderby = "ORDER BY $orderby"; + + $taxonomies = "'" . implode("', '", $taxonomies) . "'"; + $object_ids = implode(', ', $object_ids); + + $select_this = ''; + if ( 'all' == $fields ) + $select_this = 't.*, tt.*, tr.user_id'; + else if ( 'ids' == $fields ) + $select_this = 't.term_id'; + else if ( 'names' == $fields ) + $select_this = 't.name'; + else if ( 'all_with_object_id' == $fields ) + $select_this = 't.*, tt.*, tr.user_id, tr.object_id'; + + $query = "SELECT $select_this FROM {$this->db->terms} AS t INNER JOIN {$this->db->term_taxonomy} AS tt ON tt.term_id = t.term_id INNER JOIN {$this->db->term_relationships} AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ($taxonomies) AND tr.object_id IN ($object_ids)"; + if ( $user_id ) + $query .= " AND user_id = '$user_id'"; + $query .= " $orderby $order"; + + if ( 'all' == $fields || 'all_with_object_id' == $fields ) { + $terms = array_merge($terms, $this->db->get_results($query)); + $this->update_term_cache($terms); + } else if ( 'ids' == $fields || 'names' == $fields ) { + $terms = array_merge($terms, $this->db->get_col($query)); + } else if ( 'tt_ids' == $fields ) { + $query = "SELECT tr.term_taxonomy_id FROM {$this->db->term_relationships} AS tr INNER JOIN {$this->db->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id IN ($object_ids) AND tt.taxonomy IN ($taxonomies)"; + if ( $user_id ) + $query .= " AND tr.user_id = '$user_id'"; + $query .= " $orderby $order"; + $terms = $this->db->get_col( $query ); + } + + if ( ! $terms ) + $terms = array(); + + return apply_filters('wp_get_object_terms', $terms, $object_ids, $taxonomies, $args); + } + + /** + * Create Term and Taxonomy Relationships. + * + * Relates an object (post, link etc) to a term and taxonomy type. Creates the + * term and taxonomy relationship if it doesn't already exist. Creates a term if + * it doesn't exist (using the slug). + * + * A relationship means that the term is grouped in or belongs to the taxonomy. + * A term has no meaning until it is given context by defining which taxonomy it + * exists under. + * + * @package bbPress + * @subpackage Taxonomy + * @since 1.0 + * + * @param int $object_id The object to relate to. + * @param array|int|string $term The slug or id of the term, will replace all existing + * related terms in this taxonomy. + * @param array|string $taxonomy The context in which to relate the term to the object. + * @param bool $append If false will delete difference of terms. + * @return array|WP_Error Affected Term IDs + */ + function set_object_terms($object_id, $terms, $taxonomy, $args = null) { + $object_id = (int) $object_id; + + $defaults = array( 'append' => false, 'user_id' => 0 ); + if ( is_scalar( $args ) ) + $args = array( 'append' => (bool) $args ); + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + if ( !$user_id = (int) $user_id ) + return new WP_Error('invalid_user_id', __('Invalid User ID')); + + if ( !$this->is_taxonomy($taxonomy) ) + return new WP_Error('invalid_taxonomy', __('Invalid Taxonomy')); + + if ( !is_array($terms) ) + $terms = array($terms); + + if ( ! $append ) + $old_tt_ids = $this->get_object_terms($object_id, $taxonomy, array('user_id' => $user_id, 'fields' => 'tt_ids', 'orderby' => 'none')); + + $tt_ids = array(); + $term_ids = array(); + + foreach ( (array) $terms as $term ) { + if ( !strlen(trim($term)) ) + continue; + + if ( !$id = $this->is_term($term, $taxonomy) ) + $id = $this->insert_term($term, $taxonomy); + if ( is_wp_error($id) ) + return $id; + $term_ids[] = $id['term_id']; + $id = $id['term_taxonomy_id']; + $tt_ids[] = $id; + + if ( $this->db->get_var( $this->db->prepare( "SELECT term_taxonomy_id FROM {$this->db->term_relationships} WHERE object_id = %d AND term_taxonomy_id = %d AND user_id = %d", $object_id, $id, $user_id ) ) ) + continue; + $this->db->insert( $this->db->term_relationships, array( 'object_id' => $object_id, 'term_taxonomy_id' => $id, 'user_id' => $user_id ) ); + } + + $this->update_term_count($tt_ids, $taxonomy); + + if ( ! $append ) { + $delete_terms = array_diff($old_tt_ids, $tt_ids); + if ( $delete_terms ) { + $in_delete_terms = "'" . implode("', '", $delete_terms) . "'"; + $this->db->query( $this->db->prepare("DELETE FROM {$this->db->term_relationships} WHERE object_id = %d AND user_id = %d AND term_taxonomy_id IN ($in_delete_terms)", $object_id, $user_id) ); + $this->update_term_count($delete_terms, $taxonomy); + } + } + + $t = $this->get_taxonomy($taxonomy); + if ( ! $append && isset($t->sort) && $t->sort ) { + $values = array(); + $term_order = 0; + $final_tt_ids = $this->get_object_terms($object_id, $taxonomy, array( 'user_id' => $user_id, 'fields' => 'tt_ids' )); + foreach ( $tt_ids as $tt_id ) + if ( in_array($tt_id, $final_tt_ids) ) + $values[] = $this->db->prepare( "(%d, %d, %d, %d)", $object_id, $tt_id, $user_id, ++$term_order); + if ( $values ) + $this->db->query("INSERT INTO {$this->db->term_relationships} (object_id, term_taxonomy_id, user_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)"); + } + + do_action('set_object_terms', $object_id, $terms, $tt_ids, $taxonomy, $append); + return $tt_ids; + } +} // END class BB_Taxonomy extends WP_Taxonomy diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bb-walker.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bb-walker.php new file mode 100644 index 0000000..b398c93 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bb-walker.php @@ -0,0 +1,253 @@ +parents = array(); + $this->depth = 1; + $this->previous_element = ''; + } + + function walk($elements, $to_depth) { + $args = array_slice(func_get_args(), 2); + $output = ''; + + // padding at the end + $last_element->{$this->db_fields['parent']} = 0; + $last_element->{$this->db_fields['id']} = 0; + $elements[] = $last_element; + + $flat = (-1 == $to_depth) ? true : false; + foreach ( $elements as $element ) + $output .= call_user_func_array( array(&$this, 'step'), array_merge( array($element, $to_depth), $args ) ); + + return $output; + } + + function step( $element, $to_depth ) { + if ( !isset($this->depth) ) + $this->_init(); + + $args = array_slice(func_get_args(), 2); + $id_field = $this->db_fields['id']; + $parent_field = $this->db_fields['parent']; + + $flat = (-1 == $to_depth) ? true : false; + + $output = ''; + + // If flat, start and end the element and skip the level checks. + if ( $flat ) { + // Start the element. + if ( isset($element->$id_field) && $element->$id_field != 0 ) { + $cb_args = array_merge( array(&$output, $element, $this->depth - 1), $args); + call_user_func_array(array(&$this, 'start_el'), $cb_args); + } + + // End the element. + if ( isset($element->$id_field) && $element->$id_field != 0 ) { + $cb_args = array_merge( array(&$output, $element, $this->depth - 1), $args); + call_user_func_array(array(&$this, 'end_el'), $cb_args); + } + + return; + } + + // Walk the tree. + if ( !empty($element) && !empty($this->previous_element) && $element->$parent_field == $this->previous_element->$id_field ) { + // Previous element is my parent. Descend a level. + array_unshift($this->parents, $this->previous_element); + if ( !$to_depth || ($this->depth < $to_depth) ) { //only descend if we're below $to_depth + $cb_args = array_merge( array(&$output, $this->depth), $args); + call_user_func_array(array(&$this, 'start_lvl'), $cb_args); + } else if ( $to_depth && $this->depth == $to_depth ) { // If we've reached depth, end the previous element. + $cb_args = array_merge( array(&$output, $this->previous_element, $this->depth), $args); + call_user_func_array(array(&$this, 'end_el'), $cb_args); + } + $this->depth++; //always do this so when we start the element further down, we know where we are + } else if ( !empty($element) && !empty($this->previous_element) && $element->$parent_field == $this->previous_element->$parent_field) { + // On the same level as previous element. + if ( !$to_depth || ($this->depth <= $to_depth) ) { + $cb_args = array_merge( array(&$output, $this->previous_element, $this->depth - 1), $args); + call_user_func_array(array(&$this, 'end_el'), $cb_args); + } + } else if ( $this->depth > 1 ) { + // Ascend one or more levels. + if ( !$to_depth || ($this->depth <= $to_depth) ) { + $cb_args = array_merge( array(&$output, $this->previous_element, $this->depth - 1), $args); + call_user_func_array(array(&$this, 'end_el'), $cb_args); + } + + while ( $parent = array_shift($this->parents) ) { + $this->depth--; + if ( !$to_depth || ($this->depth < $to_depth) ) { + $cb_args = array_merge( array(&$output, $this->depth), $args); + call_user_func_array(array(&$this, 'end_lvl'), $cb_args); + $cb_args = array_merge( array(&$output, $parent, $this->depth - 1), $args); + call_user_func_array(array(&$this, 'end_el'), $cb_args); + } + if ( !empty($element) && isset($this->parents[0]) && $element->$parent_field == $this->parents[0]->$id_field ) { + break; + } + } + } else if ( !empty($this->previous_element) ) { + // Close off previous element. + if ( !$to_depth || ($this->depth <= $to_depth) ) { + $cb_args = array_merge( array(&$output, $this->previous_element, $this->depth - 1), $args); + call_user_func_array(array(&$this, 'end_el'), $cb_args); + } + } + + // Start the element. + if ( !$to_depth || ($this->depth <= $to_depth) ) { + if ( !empty($element) && $element->$id_field != 0 ) { + $cb_args = array_merge( array(&$output, $element, $this->depth - 1), $args); + call_user_func_array(array(&$this, 'start_el'), $cb_args); + } + } + + $this->previous_element = $element; + return $output; + } +} + +class BB_Walker_Blank extends BB_Walker { // Used for template functions + var $tree_type; + var $db_fields = array( 'id' => '', 'parent' => '' ); + + var $start_lvl = ''; + var $end_lvl = ''; + + //abstract callbacks + function start_lvl( $output, $depth ) { + if ( !$this->start_lvl ) + return ''; + $indent = str_repeat("\t", $depth); + $output .= $indent . "$this->start_lvl\n"; + return $output; + } + + function end_lvl( $output, $depth ) { + if ( !$this->end_lvl ) + return ''; + $indent = str_repeat("\t", $depth); + $output .= $indent . "$this->end_lvl\n"; + return $output; + } + + function start_el() { return ''; } + function end_el() { return ''; } +} + +class BB_Loop { + var $elements; + var $walker; + var $_preserve = array(); + var $_looping = false; + + function &start( $elements, $walker = 'BB_Walker_Blank' ) { + $null = null; + $a = new BB_Loop( $elements ); + if ( !$a->elements ) + return $null; + $a->walker = new $walker; + return $a; + } + + function BB_Loop( &$elements ) { + $this->elements = $elements; + if ( !is_array($this->elements) || empty($this->elements) ) + return $this->elements = false; + } + + function step() { + if ( !is_array($this->elements) || !current($this->elements) || !is_object($this->walker) ) + return false; + + if ( !$this->_looping ) { + $r = reset($this->elements); + $this->_looping = true; + } else { + $r = next($this->elements); + } + + if ( !$args = func_get_args() ) + $args = array( 0 ); + echo call_user_func_array( array(&$this->walker, 'step'), array_merge(array(current($this->elements)), $args) ); + return $r; + } + + function pad( $pad, $offset = 0 ) { + if ( !is_array($this->elements) || !is_object($this->walker) ) + return false; + + if ( is_numeric($pad) ) + return $pad * ($this->walker->depth - 1) + (int) $offset; + + return str_repeat( $pad, $this->walker->depth - 1 ); + } + + function preserve( $array ) { + if ( !is_array( $array ) ) + return false; + + foreach ( $array as $key ) + $this->_preserve[$key] = isset( $GLOBALS[$key] ) ? $GLOBALS[$key] : null; + } + + function reinstate() { + foreach ( $this->_preserve as $key => $value ) + $GLOBALS[$key] = $value; + } + + function classes( $output = 'string' ) { + if ( !is_array($this->elements) || !is_object($this->walker) ) + return false; + $classes = array(); + + $current = current($this->elements); + + if ( $prev = prev($this->elements) ) + next($this->elements); + else + reset($this->elements); + + if ( $next = next($this->elements) ) + prev($this->elements); + else + end($this->elements); + + if ( !empty($next) && $next->{$this->walker->db_fields['parent']} == $current->{$this->walker->db_fields['id']} ) + $classes[] = 'bb-parent'; + elseif ( !empty($next) && $next->{$this->walker->db_fields['parent']} == $current->{$this->walker->db_fields['parent']} ) + $classes[] = 'bb-precedes-sibling'; + else + $classes[] = 'bb-last-child'; + + if ( !empty($prev) && $current->{$this->walker->db_fields['parent']} == $prev->{$this->walker->db_fields['id']} ) + $classes[] = 'bb-first-child'; + elseif ( !empty($prev) && $current->{$this->walker->db_fields['parent']} == $prev->{$this->walker->db_fields['parent']} ) + $classes[] = 'bb-follows-sibling'; + elseif ( $prev ) + $classes[] = 'bb-follows-niece'; + + if ( $this->walker->depth > 1 ) + $classes[] = 'bb-child'; + else + $classes[] = 'bb-root'; + + if ( $output === 'string' ) + $classes = join(' ', $classes); + + return $classes; + } + +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bp-options.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bp-options.php new file mode 100644 index 0000000..76f3cb2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/class.bp-options.php @@ -0,0 +1,94 @@ + BP_Options::get( 'cron_check' ) ), BB_URI_CONTEXT_WP_HTTP_REQUEST ); + break; + case 'wp_http_version': + return 'bbPress/' . bb_get_option( 'version' ); + break; + case 'hash_function_name': + return 'bb_hash'; + break; + case 'language_locale': + return bb_get_locale(); + break; + case 'language_directory': + return BB_LANG_DIR; + break; + case 'charset': + case 'gmt_offset': + case 'timezone_string': + return bb_get_option( $option ); + break; + default: + return bb_get_option( BP_Options::prefix() . $option ); + break; + } + } + + function add( $option, $value ) + { + return BP_Options::update( $option, $value ); + } + + function update( $option, $value ) + { + return bb_update_option( BP_Options::prefix() . $option, $value ); + } + + function delete( $option ) + { + return bb_delete_option( BP_Options::prefix() . $option ); + } +} // END class BP_Options + +/** + * Allows storage of transients for BackPress + * + * @see BP_Transients_Interface + * @package bbPress + */ +class BP_Transients +{ + function prefix() + { + return 'bp_bbpress_'; + } + + function get( $transient ) + { + return bb_get_transient( BP_Transients::prefix() . $transient ); + } + + function set( $transient, $value, $expiration = 0 ) + { + return bb_set_transient( BP_Transients::prefix() . $transient, $value, $expiration ); + } + + function delete( $transient ) + { + return bb_delete_transient( BP_Transients::prefix() . $transient ); + } +} // END class BP_Transients diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/defaults.bb-filters.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/defaults.bb-filters.php new file mode 100644 index 0000000..4ae3b30 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/defaults.bb-filters.php @@ -0,0 +1,175 @@ +type === 'console' ) { + add_action('bb_head', array(&$bb_log, 'console_javascript')); + add_action('bb_admin_head', array(&$bb_log, 'console_javascript')); +} +add_action('bb_send_headers', 'bb_pingback_header'); +add_action('bb_admin_print_scripts', 'wp_print_scripts'); + +add_action('bb_user_has_no_caps', 'bb_give_user_default_role'); + +add_action('do_pingbacks', array('BB_Pingbacks', 'send_all'), 10, 1); + +add_action( 'bb_init', 'bb_register_default_views' ); + +add_action( 'set_current_user', 'bb_apply_wp_role_map_to_user' ); + +add_filter( 'bb_pre_get_option_gmt_offset', 'wp_timezone_override_offset' ); + +// Subscriptions + +if ( bb_is_subscriptions_active() ) { + add_action( 'bb_new_post', 'bb_notify_subscribers' ); + add_action( 'bb_insert_post', 'bb_user_subscribe_checkbox_update' ); + add_action( 'topicmeta', 'bb_user_subscribe_link' ); + add_action( 'edit_form', 'bb_user_subscribe_checkbox' ); + add_action( 'post_form', 'bb_user_subscribe_checkbox' ); +} + +add_action( 'bb_post-form.php', 'bb_anonymous_post_form' ); + +unset( $filters, $filter ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-capabilities.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-capabilities.php new file mode 100644 index 0000000..1a3ffeb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-capabilities.php @@ -0,0 +1,348 @@ +set_role('member'); +} + +/** + * Setup all default roles and associate them with capabilities + * + * @since 0.7.2 + * + * @param BP_Roles $roles Roles object to add default roles to + */ +function bb_init_roles( &$roles ) { + $roles->add_role( 'keymaster', __('Key Master'), array( + 'use_keys' => true, // Verb forms of roles - keymaster + 'administrate' => true, // administrator + 'moderate' => true, // moderator + 'participate' => true, // member + + 'keep_gate' => true, // Make new Key Masters //+ + 'import_export' => true, // Import and export data //+ + 'recount' => true, // bb-do-counts.php //+ + 'manage_options' => true, // backend //+ + 'manage_themes' => true, // Themes //+ + 'manage_plugins' => true, // Plugins //+ + 'manage_options' => true, // Options //+ + 'edit_users' => true, + 'manage_tags' => true, // Rename, Merge, Destroy + 'edit_others_favorites' => true, + 'manage_forums' => true, // Add/Rename forum + 'delete_forums' => true, // Delete forum + 'delete_topics' => true, + 'close_topics' => true, + 'stick_topics' => true, + 'move_topics' => true, + 'view_by_ip' => true, // view-ip.php + 'edit_closed' => true, // Edit closed topics + 'edit_deleted' => true, // Edit deleted topics/posts + 'browse_deleted' => true, // Use 'deleted' view + 'edit_others_tags' => true, + 'edit_others_topics' => true, + 'delete_posts' => true, + 'throttle' => true, // Post back to back arbitrarily quickly + 'ignore_edit_lock' => true, + 'edit_others_posts' => true, + 'edit_favorites' => true, + 'edit_tags' => true, + 'edit_topics' => true, // Edit title, resolution status + 'edit_posts' => true, + 'edit_profile' => true, + 'write_topics' => true, + 'write_posts' => true, + 'change_password' => true, + 'read' => true + ) ); + + $roles->add_role( 'administrator', __('Administrator'), array( + 'administrate' => true, + 'moderate' => true, + 'participate' => true, + + 'edit_users' => true, //+ + 'edit_others_favorites' => true, //+ + 'manage_forums' => true, //+ + 'delete_forums' => true, //+ + 'manage_tags' => true, + 'delete_topics' => true, + 'close_topics' => true, + 'stick_topics' => true, + 'move_topics' => true, + 'view_by_ip' => true, + 'edit_closed' => true, + 'edit_deleted' => true, + 'browse_deleted' => true, + 'edit_others_tags' => true, + 'edit_others_topics' => true, + 'delete_posts' => true, + 'throttle' => true, + 'ignore_edit_lock' => true, + 'edit_others_posts' => true, + 'edit_favorites' => true, + 'edit_tags' => true, + 'edit_topics' => true, + 'edit_posts' => true, + 'edit_profile' => true, + 'write_topics' => true, + 'write_posts' => true, + 'change_password' => true, + 'read' => true + ) ); + + $roles->add_role( 'moderator', __('Moderator'), array( + 'moderate' => true, + 'participate' => true, + + 'manage_tags' => true, //+ + 'delete_topics' => true, //+ + 'close_topics' => true, //+ + 'stick_topics' => true, //+ + 'move_topics' => true, //+ + 'view_by_ip' => true, //+ + 'edit_closed' => true, //+ + 'edit_deleted' => true, //+ + 'browse_deleted' => true, //+ + 'edit_others_tags' => true, //+ + 'edit_others_topics' => true, //+ + 'delete_posts' => true, //+ + 'throttle' => true, //+ + 'ignore_edit_lock' => true, //+ + 'edit_others_posts' => true, //+ + 'edit_favorites' => true, + 'edit_tags' => true, + 'edit_topics' => true, + 'edit_posts' => true, + 'edit_profile' => true, + 'write_topics' => true, + 'write_posts' => true, + 'change_password' => true, + 'read' => true + ) ); + + + $roles->add_role( 'member', __('Member'), array( + 'participate' => true, + + 'edit_favorites' => true, + 'edit_tags' => true, + 'edit_topics' => true, + 'edit_posts' => true, + 'edit_profile' => true, + 'write_topics' => true, + 'write_posts' => true, + 'change_password' => true, + 'read' => true + ) ); + + $roles->add_role( 'inactive', __('Inactive'), array( + 'change_password' => true, + 'read' => true + ) ); + + $roles->add_role( 'blocked', __('Blocked'), array( + 'not_play_nice' => true // Madness - a negative capability. Don't try this at home. + ) ); +} + +/** + * Map meta capabilities to primitive capabilities. + * + * This does not actually compare whether the user ID has the actual capability, + * just what the capability or capabilities are. Meta capability list value can + * be 'delete_user', 'edit_user', 'delete_post', 'delete_page', 'edit_post', + * 'edit_page', 'read_post', or 'read_page'. + * + * @since 0.7.2 + * + * @param array $caps Previously existing capabilities + * @param string $cap Capability name. + * @param int $user_id User ID. + * @return array Actual capabilities for meta capability. + */ +function bb_map_meta_cap( $caps, $cap, $user_id, $args ) { + // Unset the meta cap + if ( false !== $cap_pos = array_search( $cap, $caps ) ) + unset( $caps[$cap_pos] ); + + switch ( $cap ) { + case 'write_post': + $caps[] = 'write_posts'; + break; + case 'edit_post': + // edit_posts, edit_others_posts, edit_deleted, edit_closed, ignore_edit_lock + if ( !$bb_post = bb_get_post( $args[0] ) ) { + $caps[] = 'magically_provide_data_given_bad_input'; + return $caps; + } + if ( $user_id == $bb_post->poster_id ) + $caps[] = 'edit_posts'; + else + $caps[] = 'edit_others_posts'; + if ( $bb_post->post_status == '1' ) + $caps[] = 'edit_deleted'; + if ( !topic_is_open( $bb_post->topic_id ) ) + $caps[] = 'edit_closed'; + $post_time = bb_gmtstrtotime( $bb_post->post_time ); + $curr_time = time() + 1; + $edit_lock = bb_get_option( 'edit_lock' ); + if ( $edit_lock >= 0 && $curr_time - $post_time > $edit_lock * 60 ) + $caps[] = 'ignore_edit_lock'; + break; + case 'delete_post' : + // edit_deleted, delete_posts + if ( !$bb_post = bb_get_post( $args[0] ) ) { + $caps[] = 'magically_provide_data_given_bad_input'; + return $caps; + } + if ( 0 != $bb_post->post_status ) + $caps[] = 'edit_deleted'; + // NO BREAK + case 'manage_posts' : // back compat + $caps[] = 'delete_posts'; + break; + case 'write_topic': + $caps[] = 'write_topics'; + break; + case 'edit_topic': + // edit_closed, edit_deleted, edit_topics, edit_others_topics + if ( !$topic = get_topic( $args[0] ) ) { + $caps[] = 'magically_provide_data_given_bad_input'; + return $caps; + } + if ( !topic_is_open( $args[0]) ) + $caps[] = 'edit_closed'; + if ( '1' == $topic->topic_status ) + $caps[] = 'edit_deleted'; + if ( $user_id == $topic->topic_poster ) + $caps[] = 'edit_topics'; + else + $caps[] = 'edit_others_topics'; + break; + case 'move_topic' : + $caps[] = 'move_topics'; + break; + case 'stick_topic' : + $caps[] = 'stick_topics'; + break; + case 'close_topic' : + $caps[] = 'close_topics'; + break; + case 'delete_topic' : + $caps[] = 'delete_topics'; + add_filter( 'get_topic_where', 'bb_no_where', 9999 ); + if ( !$topic = get_topic( $args[0] ) ) { + $caps[] = 'magically_provide_data_given_bad_input'; + return $caps; + } + if ( 0 != $topic->topic_status ) + $caps[] = 'edit_deleted'; + remove_filter( 'get_topic_where', 'bb_no_where', 9999 ); + break; + case 'manage_topics' : + // back compat + $caps[] = 'move_topics'; + $caps[] = 'stick_topics'; + $caps[] = 'close_topics'; + $caps[] = 'delete_topics'; + break; + case 'add_tag_to': + // edit_closed, edit_deleted, edit_tags; + if ( !$topic = get_topic( $args[0] ) ) { + $caps[] = 'magically_provide_data_given_bad_input'; + return $caps; + } + if ( !topic_is_open( $topic->topic_id ) ) + $caps[] = 'edit_closed'; + if ( '1' == $topic->topic_status ) + $caps[] = 'edit_deleted'; + $caps[] = 'edit_tags'; + break; + case 'edit_tag_by_on': + // edit_closed, edit_deleted, edit_tags, edit_others_tags + if ( !$topic = get_topic( $args[1] ) ) { + $caps[] = 'magically_provide_data_given_bad_input'; + return $caps; + } + if ( !topic_is_open( $topic->topic_id ) ) + $caps[] = 'edit_closed'; + if ( '1' == $topic->topic_status ) + $caps[] = 'edit_deleted'; + if ( $user_id == $args[0] ) + $caps[] = 'edit_tags'; + else + $caps[] = 'edit_others_tags'; + break; + case 'edit_user': + // edit_profile, edit_users; + if ( $user_id == $args[0] ) + $caps[] = 'edit_profile'; + else + $caps[] = 'edit_users'; + break; + case 'edit_favorites_of': + // edit_favorites, edit_others_favorites; + if ( $user_id == $args[0] ) + $caps[] = 'edit_favorites'; + else + $caps[] = 'edit_others_favorites'; + break; + case 'delete_forum': + $caps[] = 'delete_forums'; + break; + case 'change_user_password': + // change_password, edit_users + $caps[] = 'change_password'; + if ( $user_id != $args[0] ) + $caps[] = 'edit_users'; + break; + default: + // If no meta caps match, return the original cap. + $caps[] = $cap; + } + return $caps; +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-core.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-core.php new file mode 100644 index 0000000..95f84ea --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-core.php @@ -0,0 +1,1836 @@ +notice( sprintf( __( 'Using deprecated bbPress %1$s - %2$s - replace with - %3$s' ), $type, $name, $replacement ) ); + + if ( $bb_log->level & BP_LOG_DEBUG && $bb_log->level & BP_LOG_NOTICE ) { // Only compute the location if we're going to log it. + $backtrace = debug_backtrace(); + + $file = $backtrace[2]['file']; + + if ( substr( $file, 0, strlen( BB_PATH ) - 1 ) == rtrim( BB_PATH, '\\/') ) + $file = substr( $file, strlen( BB_PATH ) ); + + $file = str_replace( '\\', '/', $file ); + + // 0 = this function, 1 = the deprecated function + $bb_log->notice( ' ' . sprintf( __( 'on line %1$d of file %2$s' ), $backtrace[2]['line'], $file ) ); + } +} + +/** + * Sanitizes user input en-masse. + * + * @param mixed $array The array of values or a single value to sanitize, usually a global variable like $_GET or $_POST. + * @param boolean $trim Optional. Whether to trim the value or not. Default is true. + * @return mixed The sanitized data. + */ +function bb_global_sanitize( $array, $trim = true ) +{ + foreach ( $array as $k => $v ) { + if ( is_array( $v ) ) { + $array[$k] = bb_global_sanitize( $v ); + } else { + if ( !get_magic_quotes_gpc() ) { + $array[$k] = addslashes( $v ); + } + if ( $trim ) { + $array[$k] = trim( $array[$k] ); + } + } + } + + return $array; +} + +/** + * Reports whether bbPress is installed by getting forums. + * + * @return boolean True if there are forums, otherwise false. + */ +function bb_is_installed() +{ + // Maybe grab all the forums and cache them + global $bbdb; + $bbdb->suppress_errors(); + $forums = (array) @bb_get_forums(); + $bbdb->suppress_errors(false); + + if ( !$forums ) { + return false; + } + + return true; +} + +/** + * Sets the required variables to connect to custom user tables. + * + * @return boolean Always returns true. + */ +function bb_set_custom_user_tables() +{ + global $bb; + + // Check for older style custom user table + if ( !isset( $bb->custom_tables['users'] ) ) { // Don't stomp new setting style + if ( $bb->custom_user_table = bb_get_option( 'custom_user_table' ) ) { + if ( !isset( $bb->custom_tables ) ) { + $bb->custom_tables = array(); + } + $bb->custom_tables['users'] = $bb->custom_user_table; + } + } + + // Check for older style custom user meta table + if ( !isset( $bb->custom_tables['usermeta'] ) ) { // Don't stomp new setting style + if ( $bb->custom_user_meta_table = bb_get_option( 'custom_user_meta_table' ) ) { + if ( !isset( $bb->custom_tables ) ) { + $bb->custom_tables = array(); + } + $bb->custom_tables['usermeta'] = $bb->custom_user_meta_table; + } + } + + // Check for older style wp_table_prefix + if ( $bb->wp_table_prefix = bb_get_option( 'wp_table_prefix' ) ) { // User has set old constant + if ( !isset( $bb->custom_tables ) ) { + $bb->custom_tables = array( + 'users' => $bb->wp_table_prefix . 'users', + 'usermeta' => $bb->wp_table_prefix . 'usermeta' + ); + } else { + if ( !isset( $bb->custom_tables['users'] ) ) { // Don't stomp new setting style + $bb->custom_tables['users'] = $bb->wp_table_prefix . 'users'; + } + if ( !isset( $bb->custom_tables['usermeta'] ) ) { + $bb->custom_tables['usermeta'] = $bb->wp_table_prefix . 'usermeta'; + } + } + } + + if ( bb_get_option( 'wordpress_mu_primary_blog_id' ) ) { + $bb->wordpress_mu_primary_blog_id = bb_get_option( 'wordpress_mu_primary_blog_id' ); + } + + // Check for older style user database + if ( !isset( $bb->custom_databases ) ) { + $bb->custom_databases = array(); + } + if ( !isset( $bb->custom_databases['user'] ) ) { + if ( $bb->user_bbdb_name = bb_get_option( 'user_bbdb_name' ) ) { + $bb->custom_databases['user']['name'] = $bb->user_bbdb_name; + } + if ( $bb->user_bbdb_user = bb_get_option( 'user_bbdb_user' ) ) { + $bb->custom_databases['user']['user'] = $bb->user_bbdb_user; + } + if ( $bb->user_bbdb_password = bb_get_option( 'user_bbdb_password' ) ) { + $bb->custom_databases['user']['password'] = $bb->user_bbdb_password; + } + if ( $bb->user_bbdb_host = bb_get_option( 'user_bbdb_host' ) ) { + $bb->custom_databases['user']['host'] = $bb->user_bbdb_host; + } + if ( $bb->user_bbdb_charset = bb_get_option( 'user_bbdb_charset' ) ) { + $bb->custom_databases['user']['charset'] = $bb->user_bbdb_charset; + } + if ( $bb->user_bbdb_collate = bb_get_option( 'user_bbdb_collate' ) ) { + $bb->custom_databases['user']['collate'] = $bb->user_bbdb_collate; + } + if ( isset( $bb->custom_databases['user'] ) ) { + if ( isset( $bb->custom_tables['users'] ) ) { + $bb->custom_tables['users'] = array( 'user', $bb->custom_tables['users'] ); + } + if ( isset( $bb->custom_tables['usermeta'] ) ) { + $bb->custom_tables['usermeta'] = array( 'user', $bb->custom_tables['usermeta'] ); + } + } + } + + return true; +} + + +/* Pagination */ + +/** + * Retrieve paginated links for pages. + * + * Technically, the function can be used to create paginated link list for any + * area. The 'base' argument is used to reference the url, which will be used to + * create the paginated links. The 'format' argument is then used for replacing + * the page number. It is however, most likely and by default, to be used on the + * archive post pages. + * + * The 'type' argument controls format of the returned value. The default is + * 'plain', which is just a string with the links separated by a newline + * character. The other possible values are either 'array' or 'list'. The + * 'array' value will return an array of the paginated link list to offer full + * control of display. The 'list' value will place all of the paginated links in + * an unordered HTML list. + * + * The 'total' argument is the total amount of pages and is an integer. The + * 'current' argument is the current page number and is also an integer. + * + * An example of the 'base' argument is "http://example.com/all_posts.php%_%" + * and the '%_%' is required. The '%_%' will be replaced by the contents of in + * the 'format' argument. An example for the 'format' argument is "?page=%#%" + * and the '%#%' is also required. The '%#%' will be replaced with the page + * number. + * + * You can include the previous and next links in the list by setting the + * 'prev_next' argument to true, which it is by default. You can set the + * previous text, by using the 'prev_text' argument. You can set the next text + * by setting the 'next_text' argument. + * + * If the 'show_all' argument is set to true, then it will show all of the pages + * instead of a short list of the pages near the current page. By default, the + * 'show_all' is set to false and controlled by the 'end_size' and 'mid_size' + * arguments. The 'end_size' argument is how many numbers on either the start + * and the end list edges, by default is 1. The 'mid_size' argument is how many + * numbers to either side of current page, but not including current page. + * + * It is possible to add query vars to the link by using the 'add_args' argument + * and see {@link add_query_arg()} for more information. + * + * @since 1.0 + * + * @param string|array $args Optional. Override defaults. + * @return array|string String of page links or array of page links. + */ +function bb_paginate_links( $args = '' ) { + $defaults = array( + 'base' => '%_%', // http://example.com/all_posts.php%_% : %_% is replaced by format (below) + 'format' => '?page=%#%', // ?page=%#% : %#% is replaced by the page number + 'total' => 1, + 'current' => 0, + 'show_all' => false, + 'prev_next' => true, + 'prev_text' => __( '« Previous' ), + 'next_text' => __( 'Next »' ), + 'end_size' => 1, // How many numbers on either end including the end + 'mid_size' => 2, // How many numbers to either side of current not including current + 'type' => 'plain', + 'add_args' => false, // array of query args to add + 'add_fragment' => '', + 'n_title' => __( 'Page %d' ), // Not from WP version + 'prev_title' => __( 'Previous page' ), // Not from WP version + 'next_title' => __( 'Next page' ) // Not from WP version + ); + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + // Who knows what else people pass in $args + $total = (int) $total; + if ( $total < 2 ) + return; + $current = (int) $current; + $end_size = 0 < (int) $end_size ? (int) $end_size : 1; // Out of bounds? Make it the default. + $mid_size = 0 <= (int) $mid_size ? (int) $mid_size : 2; + $add_args = is_array($add_args) ? $add_args : false; + $r = ''; + $page_links = array(); + $n = 0; + $dots = false; + + $empty_format = ''; + if ( strpos( $format, '?' ) === 0 ) { + $empty_format = '?'; + } + + if ( $prev_next && $current && 1 < $current ) { + $link = str_replace( '%_%', 2 == $current ? $empty_format : $format, $base ); + $link = str_replace( '%#%', $current - 1, $link ); + $link = str_replace( '?&', '?', $link ); + if ( $add_args ) + $link = add_query_arg( $add_args, $link ); + $link .= $add_fragment; + $page_links[] = '
      '; + } + + for ( $n = 1; $n <= $total; $n++ ) { + if ( $n == $current ) { + $n_display = bb_number_format_i18n( $n ); + $n_display_title = esc_attr( sprintf( $n_title, $n ) ); + $page_links[] = '' . $n_display . ''; + $dots = true; + } else { + if ( $show_all || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) { + $n_display = bb_number_format_i18n( $n ); + $n_display_title = esc_attr( sprintf( $n_title, $n ) ); + $link = str_replace( '%_%', 1 == $n ? $empty_format : $format, $base ); + $link = str_replace( '%#%', $n, $link ); + $link = str_replace( '?&', '?', $link ); + if ( $add_args ) + $link = add_query_arg( $add_args, $link ); + $link .= $add_fragment; + $page_links[] = '' . $n_display . ''; + $dots = true; + } elseif ( $dots && !$show_all ) { + $page_links[] = ''; + $dots = false; + } + } + } + if ( $prev_next && $current && ( $current < $total || -1 == $total ) ) { + $link = str_replace( '%_%', $format, $base ); + $link = str_replace( '%#%', $current + 1, $link ); + if ( $add_args ) + $link = add_query_arg( $add_args, $link ); + $link .= $add_fragment; + $page_links[] = ''; + } + switch ( $type ) { + case 'array': + return $page_links; + break; + case 'list': + $r .= '
        ' . "\n\t" . '
      • '; + $r .= join( '
      • ' . "\n\t" . '
      • ', $page_links ); + $r .= '
      • ' . "\n" . '
      ' . "\n"; + break; + default: + $r = join( "\n", $page_links ); + break; + } + return $r; +} + +function bb_get_uri_page() { + if ( isset($_GET['page']) && is_numeric($_GET['page']) && 1 < (int) $_GET['page'] ) + return (int) $_GET['page']; + + if ( isset($_SERVER['PATH_INFO']) ) + $path = $_SERVER['PATH_INFO']; + else + if ( !$path = strtok($_SERVER['REQUEST_URI'], '?') ) + return 1; + + if ( preg_match( '/^\/([0-9]+)\/?$/', $path, $matches ) ) { + $page = (int) $matches[1]; + if ( 1 < $page ) { + return $page; + } + } + + if ( $page = strstr($path, '/page/') ) { + $page = (int) substr($page, 6); + if ( 1 < $page ) + return $page; + } + return 1; +} + +//expects $item = 1 to be the first, not 0 +function bb_get_page_number( $item, $per_page = 0 ) { + if ( !$per_page ) + $per_page = bb_get_option('page_topics'); + return intval( ceil( $item / $per_page ) ); // page 1 is the first page +} + + + +/* Time */ + +function bb_timer_stop($display = 0, $precision = 3) { //if called like bb_timer_stop(1), will echo $timetotal + global $bb_timestart, $timeend; + $mtime = explode(' ', microtime()); + $timeend = $mtime[1] + $mtime[0]; + $timetotal = $timeend - $bb_timestart; + if ($display) + echo bb_number_format_i18n($timetotal, $precision); + return bb_number_format_i18n($timetotal, $precision); +} + +// GMT -> so many minutes ago +function bb_since( $original, $args = '' ) +{ + $defaults = array( + 'levels' => 1, + 'separator' => ', ' + ); + + // $args used to be $do_more + // $do_more = 0 is equivalent to $args['levels'] = 1 + // $do_more = 1 is equivalent to $args['levels'] = 2 + if ( !is_array( $args ) ) { + $args = array( + 'levels' => abs( (integer) $args ) + 1 + ); + } + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $today = (integer) time(); + + if ( !is_numeric( $original ) ) { + if ( $today < $_original = bb_gmtstrtotime( str_replace( ',', ' ', $original ) ) ) { // Looks like bb_since was called twice + return $original; + } else { + $original = $_original; + } + } + + $seconds = $today - ( (integer) $original ); + if ( 0 === $seconds ) { + return sprintf( _n( '%d second', '%d seconds', 0 ), 0 ); + } + + $levels = abs( (integer) $levels ); + if ( 0 === $levels ) { + return ''; + } + + // array of time period chunks + $chunks = array( + ( 60 * 60 * 24 * 365 ), // years + ( 60 * 60 * 24 * 30 ), // months + ( 60 * 60 * 24 * 7 ), // weeks + ( 60 * 60 * 24 ), // days + ( 60 * 60 ), // hours + ( 60 ), // minutes + ( 1 ) // seconds + ); + + $caught = 0; + $parts = array(); + for ( $i = 0; $i < count( $chunks ); $i++ ) { + if ( ( $count = floor( $seconds / $chunks[$i] ) ) || $caught ) { + if ( $count ) { + $trans = array( + _n( '%d year', '%d years', $count ), + _n( '%d month', '%d months', $count ), + _n( '%d week', '%d weeks', $count ), + _n( '%d day', '%d days', $count ), + _n( '%d hour', '%d hours', $count ), + _n( '%d minute', '%d minutes', $count ), + _n( '%d second', '%d seconds', $count ) + ); + $parts[] = sprintf( $trans[$i], $count ); + } + $caught++; + $seconds = $seconds - ( $count * $chunks[$i] ); + } + if ( $caught === $levels ) { + break; + } + } + + if ( empty( $parts ) ) { + return sprintf( _n( '%d second', '%d seconds', 0 ), 0 ); + } + + return join( $separator, $parts ); +} + +function bb_current_time( $type = 'timestamp' ) { + return current_time( $type, true ); +} + +// GMT -> Local +// in future versions this could eaily become a user option. +function bb_offset_time( $time, $args = null ) { + if ( isset($args['format']) && 'since' == $args['format'] ) + return $time; + if ( !is_numeric($time) ) { + if ( -1 !== $_time = bb_gmtstrtotime( $time ) ) + return gmdate('Y-m-d H:i:s', $_time + bb_get_option( 'gmt_offset' ) * 3600); + else + return $time; // Perhaps should return -1 here + } else { + return $time + bb_get_option( 'gmt_offset' ) * 3600; + } +} + + + +/* Permalinking / URLs / Paths */ + +/** + * BB_URI_CONTEXT_* - Bitwise definitions for bb_uri() and bb_get_uri() contexts + * + * @since 1.0 + */ +define( 'BB_URI_CONTEXT_NONE', 0 ); +define( 'BB_URI_CONTEXT_HEADER', 1 ); +define( 'BB_URI_CONTEXT_TEXT', 2 ); +define( 'BB_URI_CONTEXT_A_HREF', 4 ); +define( 'BB_URI_CONTEXT_FORM_ACTION', 8 ); +define( 'BB_URI_CONTEXT_IMG_SRC', 16 ); +define( 'BB_URI_CONTEXT_LINK_STYLESHEET_HREF', 32 ); +define( 'BB_URI_CONTEXT_LINK_ALTERNATE_HREF', 64 ); +define( 'BB_URI_CONTEXT_LINK_OTHER', 128 ); +define( 'BB_URI_CONTEXT_SCRIPT_SRC', 256 ); +define( 'BB_URI_CONTEXT_IFRAME_SRC', 512 ); +define( 'BB_URI_CONTEXT_BB_FEED', 1024 ); +define( 'BB_URI_CONTEXT_BB_USER_FORMS', 2048 ); +define( 'BB_URI_CONTEXT_BB_ADMIN', 4096 ); +define( 'BB_URI_CONTEXT_BB_XMLRPC', 8192 ); +define( 'BB_URI_CONTEXT_WP_HTTP_REQUEST', 16384 ); +//define( 'BB_URI_CONTEXT_*', 32768 ); // Reserved for future definitions +//define( 'BB_URI_CONTEXT_*', 65536 ); // Reserved for future definitions +//define( 'BB_URI_CONTEXT_*', 131072 ); // Reserved for future definitions +//define( 'BB_URI_CONTEXT_*', 262144 ); // Reserved for future definitions +define( 'BB_URI_CONTEXT_AKISMET', 524288 ); + +/** + * Echo a URI based on the URI setting + * + * @since 1.0 + * + * @param $resource string The directory, may include a querystring + * @param $query mixed The query arguments as a querystring or an associative array + * @param $context integer The context of the URI, use BB_URI_CONTEXT_* + * @return void + */ +function bb_uri( $resource = null, $query = null, $context = BB_URI_CONTEXT_A_HREF ) +{ + echo apply_filters( 'bb_uri', bb_get_uri( $resource, $query, $context ), $resource, $query, $context ); +} + +/** + * Return a URI based on the URI setting + * + * @since 1.0 + * + * @param $resource string The directory, may include a querystring + * @param $query mixed The query arguments as a querystring or an associative array + * @param $context integer The context of the URI, use BB_URI_CONTEXT_* + * @return string The complete URI + */ +function bb_get_uri( $resource = null, $query = null, $context = BB_URI_CONTEXT_A_HREF ) +{ + // If there is a querystring in the resource then extract it + if ( $resource && strpos( $resource, '?' ) !== false ) { + list( $_resource, $_query ) = explode( '?', trim( $resource ), 2 ); + $resource = $_resource; + $_query = wp_parse_args( $_query ); + } else { + // Make sure $_query is an array for array_merge() + $_query = array(); + } + + // $query can be an array as well as a string + if ( $query ) { + if ( is_string( $query ) ) { + $query = ltrim( trim( $query ), '?' ); + } + $query = wp_parse_args( $query ); + } + + // Make sure $query is an array for array_merge() + if ( !$query ) { + $query = array(); + } + + // Merge the queries into a single array + $query = array_merge( $_query, $query ); + + // Make sure context is an integer + if ( !$context || !is_integer( $context ) ) { + $context = BB_URI_CONTEXT_A_HREF; + } + + // Get the base URI + static $_uri; + if( !isset( $_uri ) ) { + $_uri = bb_get_option( 'uri' ); + } + $uri = $_uri; + + // Use https? + if ( + ( ( $context & BB_URI_CONTEXT_BB_USER_FORMS ) && force_ssl_login() ) // Force https when required on user forms + || + ( ( $context & BB_URI_CONTEXT_BB_ADMIN ) && force_ssl_admin() ) // Force https when required in admin + ) { + static $_uri_ssl; + if( !isset( $_uri_ssl ) ) { + $_uri_ssl = bb_get_option( 'uri_ssl' ); + } + $uri = $_uri_ssl; + } + + // Add the directory + $uri .= ltrim( $resource, '/' ); + + // Add the query string to the URI + $uri = add_query_arg( $query, $uri ); + + return apply_filters( 'bb_get_uri', $uri, $resource, $context ); +} + +/** + * Forces redirection to an SSL page when required + * + * @since 1.0 + * + * @return void + */ +function bb_ssl_redirect() +{ + $page = bb_get_location(); + + do_action( 'bb_ssl_redirect' ); + + if ( BB_IS_ADMIN ) { + if ( !force_ssl_admin() ) { + return; + } + } else { + switch ( $page ) { + case 'login-page': + case 'register-page': + if ( !force_ssl_login() ) { + return; + } + break; + case 'profile-page': + global $self; + if ( $self == 'profile-edit.php' ) { + if ( !force_ssl_login() ) { + return; + } + } else { + return; + } + break; + default: + return; + break; + } + } + + if ( is_ssl() ) { + return; + } + + $uri_ssl = parse_url( bb_get_option( 'uri_ssl' ) ); + $uri = $uri_ssl['scheme'] . '://' . $uri_ssl['host'] . $_SERVER['REQUEST_URI']; + bb_safe_redirect( $uri ); + exit; +} + +function bb_get_path( $level = 1, $base = false, $request = false ) { + if ( !$request ) + $request = $_SERVER['REQUEST_URI']; + if ( is_string($request) ) + $request = parse_url($request); + if ( !is_array($request) || !isset($request['path']) ) + return ''; + + $path = rtrim($request['path'], " \t\n\r\0\x0B/"); + if ( !$base ) + $base = rtrim(bb_get_option('path'), " \t\n\r\0\x0B/"); + $path = preg_replace('|' . preg_quote($base, '|') . '/?|','',$path,1); + if ( !$path ) + return ''; + if ( strpos($path, '/') === false ) + return ''; + + $url = explode('/',$path); + if ( !isset($url[$level]) ) + return ''; + + return urldecode($url[$level]); +} + +function bb_find_filename( $text ) { + if ( preg_match('|.*?/([a-z\-]+\.php)/?.*|', $text, $matches) ) + return $matches[1]; + else { + $path = bb_get_option( 'path' ); + $text = preg_replace("#^$path#", '', $text); + $text = preg_replace('#/.+$#', '', $text); + return $text . '.php'; + } + return false; +} + +function bb_send_headers() { + if ( bb_is_user_logged_in() ) + nocache_headers(); + @header('Content-Type: ' . bb_get_option( 'html_type' ) . '; charset=' . bb_get_option( 'charset' )); + do_action( 'bb_send_headers' ); +} + +function bb_pingback_header() { + if (bb_get_option('enable_pingback')) + @header('X-Pingback: '. bb_get_uri('xmlrpc.php', null, BB_URI_CONTEXT_HEADER + BB_URI_CONTEXT_BB_XMLRPC)); +} + +// Inspired by and adapted from Yung-Lung Scott YANG's http://scott.yang.id.au/2005/05/permalink-redirect/ (GPL) +function bb_repermalink() { + global $page; + $location = bb_get_location(); + $uri = $_SERVER['REQUEST_URI']; + if ( isset($_GET['id']) ) + $id = $_GET['id']; + else + $id = bb_get_path(); + $_original_id = $id; + + do_action( 'pre_permalink', $id ); + + $id = apply_filters( 'bb_repermalink', $id ); + + switch ($location) { + case 'front-page': + $path = null; + $querystring = null; + if ($page > 1) { + if (bb_get_option( 'mod_rewrite' )) { + $path = 'page/' . $page; + } else { + $querystring = array('page' => $page); + } + } + $permalink = bb_get_uri($path, $querystring, BB_URI_CONTEXT_HEADER); + $issue_404 = true; + break; + case 'forum-page': + if (empty($id)) { + $permalink = bb_get_uri(null, null, BB_URI_CONTEXT_HEADER); + break; + } + global $forum_id, $forum; + $forum = bb_get_forum( $id ); + $forum_id = $forum->forum_id; + $permalink = get_forum_link( $forum->forum_id, $page ); + break; + case 'topic-edit-page': + case 'topic-page': + if (empty($id)) { + $permalink = bb_get_uri(null, null, BB_URI_CONTEXT_HEADER); + break; + } + global $topic_id, $topic; + $topic = get_topic( $id ); + $topic_id = $topic->topic_id; + $permalink = get_topic_link( $topic->topic_id, $page ); + break; + case 'profile-page': // This handles the admin side of the profile as well. + global $user_id, $user, $profile_hooks, $self; + if ( isset($_GET['id']) ) + $id = $_GET['id']; + elseif ( isset($_GET['username']) ) + $id = $_GET['username']; + else + $id = bb_get_path(); + $_original_id = $id; + + if ( !$id ) { + $user = bb_get_current_user(); // Attempt to go to the current users profile + } else { + if ( bb_get_option( 'mod_rewrite' ) === 'slugs') { + if ( !$user = bb_get_user_by_nicename( $id ) ) { + $user = bb_get_user( $id ); + } + } else { + if ( !$user = bb_get_user( $id ) ) { + $user = bb_get_user_by_nicename( $id ); + } + } + } + + if ( !$user || ( 1 == $user->user_status && !bb_current_user_can( 'moderate' ) ) ) + bb_die(__('User not found.'), '', 404); + + $user_id = $user->ID; + bb_global_profile_menu_structure(); + $valid = false; + if ( $tab = isset($_GET['tab']) ? $_GET['tab'] : bb_get_path(2) ) { + foreach ( $profile_hooks as $valid_tab => $valid_file ) { + if ( $tab == $valid_tab ) { + $valid = true; + $self = $valid_file; + } + } + } + if ( $valid ) { + $permalink = get_profile_tab_link( $user->ID, $tab, $page ); + } else { + $permalink = get_user_profile_link( $user->ID, $page ); + unset($self, $tab); + } + break; + case 'favorites-page': + $permalink = get_favorites_link(); + break; + case 'tag-page': // It's not an integer and tags.php pulls double duty. + $id = ( isset($_GET['tag']) ) ? $_GET['tag'] : false; + if ( ! $id || ! bb_get_tag( (string) $id ) ) + $permalink = bb_get_tag_page_link(); + else { + global $tag, $tag_name; + $tag_name = $id; + $tag = bb_get_tag( (string) $id ); + $permalink = bb_get_tag_link( 0, $page ); // 0 => grabs $tag from global. + } + break; + case 'view-page': // Not an integer + if ( isset($_GET['view']) ) + $id = $_GET['view']; + else + $id = bb_get_path(); + $_original_id = $id; + global $view; + $view = $id; + $permalink = get_view_link( $view, $page ); + break; + default: + return; + break; + } + + wp_parse_str($_SERVER['QUERY_STRING'], $args); + $args = urlencode_deep($args); + if ( $args ) { + $permalink = add_query_arg($args, $permalink); + if ( bb_get_option('mod_rewrite') ) { + $pretty_args = array('id', 'page', 'tag', 'tab', 'username'); // these are already specified in the path + if ( $location == 'view-page' ) + $pretty_args[] = 'view'; + foreach ( $pretty_args as $pretty_arg ) + $permalink = remove_query_arg( $pretty_arg, $permalink ); + } + } + + $permalink = apply_filters( 'bb_repermalink_result', $permalink, $location ); + + $domain = bb_get_option('domain'); + $domain = preg_replace('/^https?/', '', $domain); + $check = preg_replace( '|^.*' . trim($domain, ' /' ) . '|', '', $permalink, 1 ); + $uri = rtrim( $uri, " \t\n\r\0\x0B?" ); + $uri = str_replace( '/index.php', '/', $uri ); + + global $bb_log; + $bb_log->debug($uri, 'bb_repermalink() ' . __('REQUEST_URI')); + $bb_log->debug($check, 'bb_repermalink() ' . __('should be')); + $bb_log->debug($permalink, 'bb_repermalink() ' . __('full permalink')); + $bb_log->debug(isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : null, 'bb_repermalink() ' . __('PATH_INFO')); + + if ( $check != $uri && $check != str_replace(urlencode($_original_id), $_original_id, $uri) ) { + if ( $issue_404 && rtrim( $check, " \t\n\r\0\x0B/" ) !== rtrim( $uri, " \t\n\r\0\x0B/" ) ) { + status_header( 404 ); + bb_load_template( '404.php' ); + } else { + wp_redirect( $permalink ); + } + exit; + } + + do_action( 'post_permalink', $permalink ); +} + +/* Profile/Admin */ + +function bb_global_profile_menu_structure() { + global $user_id, $profile_menu, $profile_hooks; + // Menu item name + // The capability required for own user to view the tab ('' to allow non logged in access) + // The capability required for other users to view the tab ('' to allow non logged in access) + // The URL of the item's file + // Item name for URL (nontranslated) + $profile_menu[0] = array(__('Edit'), 'edit_profile', 'edit_users', 'profile-edit.php', 'edit'); + $profile_menu[5] = array(__('Favorites'), '', '', 'favorites.php', 'favorites'); + + // Create list of page plugin hook names the current user can access + $profile_hooks = array(); + foreach ($profile_menu as $profile_tab) + if ( bb_can_access_tab( $profile_tab, bb_get_current_user_info( 'id' ), $user_id ) ) + $profile_hooks[bb_sanitize_with_dashes($profile_tab[4])] = $profile_tab[3]; + + do_action('bb_profile_menu'); + ksort($profile_menu); +} + +function bb_add_profile_tab($tab_title, $users_cap, $others_cap, $file, $arg = false) { + global $profile_menu, $profile_hooks, $user_id; + + $arg = $arg ? $arg : $tab_title; + + $profile_tab = array($tab_title, $users_cap, $others_cap, $file, $arg); + $profile_menu[] = $profile_tab; + if ( bb_can_access_tab( $profile_tab, bb_get_current_user_info( 'id' ), $user_id ) ) + $profile_hooks[bb_sanitize_with_dashes($arg)] = $file; +} + +function bb_can_access_tab( $profile_tab, $viewer_id, $owner_id ) { + global $bb_current_user; + $viewer_id = (int) $viewer_id; + $owner_id = (int) $owner_id; + if ( $viewer_id == bb_get_current_user_info( 'id' ) ) + $viewer =& $bb_current_user; + else + $viewer = new BP_User( $viewer_id ); + if ( !$viewer ) + return '' === $profile_tab[2]; + + if ( $owner_id == $viewer_id ) { + if ( '' === $profile_tab[1] ) + return true; + else + return $viewer->has_cap($profile_tab[1]); + } else { + if ( '' === $profile_tab[2] ) + return true; + else + return $viewer->has_cap($profile_tab[2]); + } +} + +//meta_key => (required?, Label, hCard property). Don't use user_{anything} as the name of your meta_key. +function bb_get_profile_info_keys( $context = null ) { + return apply_filters( 'get_profile_info_keys', array( + 'first_name' => array(0, __('First name')), + 'last_name' => array(0, __('Last name')), + 'display_name' => array(1, __('Display name as')), + 'user_email' => array(1, __('Email'), 'email'), + 'user_url' => array(0, __('Website'), 'url'), + 'from' => array(0, __('Location')), + 'occ' => array(0, __('Occupation'), 'role'), + 'interest' => array(0, __('Interests')), + ), $context ); +} + +function bb_get_profile_admin_keys( $context = null ) { + global $bbdb; + return apply_filters( 'get_profile_admin_keys', array( + $bbdb->prefix . 'title' => array(0, __('Custom Title')) + ), $context ); +} + +function bb_get_assignable_caps() { + $caps = array(); + if ( $throttle_time = bb_get_option( 'throttle_time' ) ) + $caps['throttle'] = sprintf( __('Ignore the %d second post throttling limit'), $throttle_time ); + return apply_filters( 'get_assignable_caps', $caps ); +} + +/* Views */ + +function bb_get_views() { + global $bb_views; + + $views = array(); + foreach ( (array) $bb_views as $view => $array ) + $views[$view] = $array['title']; + + return $views; +} + +function bb_register_view( $view, $title, $query_args = '', $feed = TRUE ) { + global $bb_views; + + $view = bb_slug_sanitize( $view ); + $title = esc_html( $title ); + + if ( !$view || !$title ) + return false; + + $query_args = wp_parse_args( $query_args ); + + if ( !$sticky_set = isset($query_args['sticky']) ) + $query_args['sticky'] = 'no'; + + $bb_views[$view]['title'] = $title; + $bb_views[$view]['query'] = $query_args; + $bb_views[$view]['sticky'] = !$sticky_set; // No sticky set => split into stickies and not + $bb_views[$view]['feed'] = $feed; + return $bb_views[$view]; +} + +function bb_deregister_view( $view ) { + global $bb_views; + + $view = bb_slug_sanitize( $view ); + if ( !isset($bb_views[$view]) ) + return false; + + unset($GLOBALS['bb_views'][$view]); + return true; +} + +function bb_view_query( $view, $new_args = '' ) { + global $bb_views; + + $view = bb_slug_sanitize( $view ); + if ( !isset($bb_views[$view]) ) + return false; + + if ( $new_args ) { + $new_args = wp_parse_args( $new_args ); + $query_args = array_merge( $bb_views[$view]['query'], $new_args ); + } else { + $query_args = $bb_views[$view]['query']; + } + + return new BB_Query( 'topic', $query_args, "bb_view_$view" ); +} + +function bb_get_view_query_args( $view ) { + global $bb_views; + + $view = bb_slug_sanitize( $view ); + if ( !isset($bb_views[$view]) ) + return false; + + return $bb_views[$view]['query']; +} + +function bb_register_default_views() { + // no posts (besides the first one), older than 2 hours + bb_register_view( 'no-replies', __('Topics with no replies'), array( 'post_count' => 1, 'started' => '<' . gmdate( 'YmdH', time() - 7200 ) ) ); + bb_register_view( 'untagged' , __('Topics with no tags') , array( 'tag_count' => 0 ) ); +} + +/* Feeds */ + +/** + * Send status headers for clients supporting Conditional Get + * + * The function sends the Last-Modified and ETag headers for all clients. It + * then checks both the If-None-Match and If-Modified-Since headers to see if + * the client has used them. If so, and the ETag does matches the client ETag + * or the last modified date sent by the client is newer or the same as the + * generated last modified, the function sends a 304 Not Modified and exits. + * + * @link http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3 + * @param string $bb_last_modified Last modified time. Must be a HTTP-date + */ +function bb_send_304( $bb_last_modified ) { + $bb_etag = '"' . md5($bb_last_modified) . '"'; + @header("Last-Modified: $bb_last_modified"); + @header("ETag: $bb_etag"); + + // Support for Conditional GET + if (isset($_SERVER['HTTP_IF_NONE_MATCH'])) $client_etag = stripslashes($_SERVER['HTTP_IF_NONE_MATCH']); + else $client_etag = false; + + $client_last_modified = trim( $_SERVER['HTTP_IF_MODIFIED_SINCE']); + // If string is empty, return 0. If not, attempt to parse into a timestamp + $client_modified_timestamp = $client_last_modified ? bb_gmtstrtotime($client_last_modified) : 0; + + // Make a timestamp for our most recent modification... + $bb_modified_timestamp = bb_gmtstrtotime($bb_last_modified); + + if ( ($client_last_modified && $client_etag) ? + (($client_modified_timestamp >= $bb_modified_timestamp) && ($client_etag == $bb_etag)) : + (($client_modified_timestamp >= $bb_modified_timestamp) || ($client_etag == $bb_etag)) ) { + status_header( 304 ); + exit; + } +} + +/* Nonce */ + +/** + * Retrieve URL with nonce added to URL query. + * + * @package bbPress + * @subpackage Security + * @since 1.0 + * + * @param string $actionurl URL to add nonce action + * @param string $action Optional. Nonce action name + * @return string URL with nonce action added. + */ +function bb_nonce_url( $actionurl, $action = -1 ) { + $actionurl = str_replace( '&', '&', $actionurl ); + $nonce = bb_create_nonce( $action ); + return esc_html( add_query_arg( '_wpnonce', $nonce, $actionurl ) ); +} + +/** + * Retrieve or display nonce hidden field for forms. + * + * The nonce field is used to validate that the contents of the form came from + * the location on the current site and not somewhere else. The nonce does not + * offer absolute protection, but should protect against most cases. It is very + * important to use nonce field in forms. + * + * If you set $echo to true and set $referer to true, then you will need to + * retrieve the {@link wp_referer_field() wp referer field}. If you have the + * $referer set to true and are echoing the nonce field, it will also echo the + * referer field. + * + * The $action and $name are optional, but if you want to have better security, + * it is strongly suggested to set those two parameters. It is easier to just + * call the function without any parameters, because validation of the nonce + * doesn't require any parameters, but since crackers know what the default is + * it won't be difficult for them to find a way around your nonce and cause + * damage. + * + * The input name will be whatever $name value you gave. The input value will be + * the nonce creation value. + * + * @package bbPress + * @subpackage Security + * @since 1.0 + * + * @param string $action Optional. Action name. + * @param string $name Optional. Nonce name. + * @param bool $referer Optional, default true. Whether to set the referer field for validation. + * @param bool $echo Optional, default true. Whether to display or return hidden form field. + * @return string Nonce field. + */ +function bb_nonce_field( $action = -1, $name = "_wpnonce", $referer = true , $echo = true ) { + $name = esc_attr( $name ); + $nonce = bb_create_nonce( $action ); + $nonce_field = ''; + if ( $echo ) + echo $nonce_field; + + if ( $referer ) + wp_referer_field( $echo, 'previous' ); + + return $nonce_field; +} + +function bb_nonce_ays( $action ) +{ + $title = __( 'bbPress Failure Notice' ); + $html .= "\t
      \n\t

      " . esc_html( bb_explain_nonce( $action ) ) . "

      \n\t

      "; + if ( wp_get_referer() ) + $html .= "" . __( 'Please try again.' ) . ""; + $html .= "

      \n\t
      \n"; + $html .= "\n"; + bb_die( $html, $title ); +} + +function bb_install_header( $title = '', $header = false, $logo = false ) +{ + if ( empty($title) ) + if ( function_exists('__') ) + $title = __('bbPress'); + else + $title = 'bbPress'; + + $uri = false; + if ( function_exists('bb_get_uri') && !BB_INSTALLING ) { + $uri = bb_get_uri(); + $uri_stylesheet = bb_get_uri('bb-admin/install.css', null, BB_URI_CONTEXT_LINK_STYLESHEET_HREF + BB_URI_CONTEXT_BB_INSTALLER); + $uri_stylesheet_rtl = bb_get_uri('bb-admin/install-rtl.css', null, BB_URI_CONTEXT_LINK_STYLESHEET_HREF + BB_URI_CONTEXT_BB_INSTALLER); + $uri_logo = bb_get_uri('bb-admin/images/bbpress-logo.png', null, BB_URI_CONTEXT_IMG_SRC + BB_URI_CONTEXT_BB_INSTALLER); + } + + if (!$uri) { + $uri = preg_replace('|(/bb-admin)?/[^/]+?$|', '/', $_SERVER['PHP_SELF']); + $uri_stylesheet = $uri . 'bb-admin/install.css'; + $uri_stylesheet_rtl = $uri . 'bb-admin/install-rtl.css'; + $uri_logo = $uri . 'bb-admin/images/bbpress-logo.png'; + } + + header('Content-Type: text/html; charset=utf-8'); +?> + +> + + + <?php echo $title; ?> + + + + + + + +
      + + + +

      + +

      + +
      + + +get_error_data(); + if ( is_array( $error_data ) && isset( $error_data['title'] ) ) + $title = $error_data['title']; + } + $errors = $message->get_error_messages(); + switch ( count( $errors ) ) : + case 0 : + $message = ''; + break; + case 1 : + $message = "

      {$errors[0]}

      "; + break; + default : + $message = "
        \n\t\t
      • " . join( "
      • \n\t\t
      • ", $errors ) . "
      • \n\t
      "; + break; + endswitch; + } elseif ( is_string( $message ) ) { + $message = bb_autop( $message ); + } + + if ( empty($title) ) + $title = __('bbPress › Error'); + + bb_install_header( $title ); +?> + + +

      %s.'), $uri, bb_get_option( 'name' ) ); ?>

      +last_query; + + if ( false === strpos($q, 'SELECT') ) + return false; + + if ( false !== strpos($q, 'SQL_CALC_FOUND_ROWS') ) + return (int) $bbdb->get_var( "SELECT FOUND_ROWS()" ); + + $q_original = $q; + + $q = preg_replace( + array('/SELECT.*?\s+FROM/', '/LIMIT [0-9]+(\s*,\s*[0-9]+)?/', '/ORDER BY\s+.*$/', '/DESC/', '/ASC/'), + array('SELECT COUNT(*) FROM', ''), + $q + ); + + if ( preg_match( '/GROUP BY\s+(\S+)/', $q, $matches ) ) + $q = str_replace( array( 'COUNT(*)', $matches[0] ), array( "COUNT(DISTINCT $matches[1])", '' ), $q ); + + if ( !$query ) + $bb_last_countable_query = ''; + + $q = apply_filters( 'bb_count_last_query', $q, $q_original ); + + return (int) $bbdb->get_var($q); +} + +function bb_no_where( $where ) { + return; +} + +/* Plugins/Themes utility */ + +function bb_basename( $file, $directories ) +{ + if ( strpos( $file, '#' ) !== false ) { + return $file; // It's already a basename + } + + foreach ( $directories as $type => $directory ) { + if ( strpos( $file, $directory ) !== false ) { + break; // Keep the $file and $directory set and use them below, nifty huh? + } + } + + list( $file, $directory ) = str_replace( '\\','/', array( $file, $directory ) ); + list( $file, $directory ) = preg_replace( '|/+|','/', array( $file,$directory ) ); + $file = preg_replace( '|^.*' . preg_quote( $directory, '|' ) . '|', $type . '#', $file ); + + return $file; +} + +/* Plugins */ + +function bb_plugin_basename( $file ) +{ + global $bb; + $directories = array(); + foreach ( $bb->plugin_locations as $_name => $_data ) { + $directories[$_name] = $_data['dir']; + } + return bb_basename( $file, $directories ); +} + +function bb_register_plugin_activation_hook( $file, $function ) +{ + $file = bb_plugin_basename( $file ); + add_action( 'bb_activate_plugin_' . $file, $function ); +} + +function bb_register_plugin_deactivation_hook( $file, $function ) +{ + $file = bb_plugin_basename( $file ); + add_action( 'bb_deactivate_plugin_' . $file, $function ); +} + +function bb_get_plugin_uri( $plugin = false ) +{ + global $bb; + if ( preg_match( '/^([a-z0-9_-]+)#((?:[a-z0-9\/\\_-]+.)+)(php)$/i', $plugin, $_matches ) ) { + $plugin_uri = $bb->plugin_locations[$_matches[1]]['url'] . $_matches[2] . $_matches[3]; + $plugin_uri = dirname( $plugin_uri ) . '/'; + } else { + $plugin_uri = $bb->plugin_locations['core']['url']; + } + return apply_filters( 'bb_get_plugin_uri', $plugin_uri, $plugin ); +} + +function bb_get_plugin_directory( $plugin = false, $path = false ) +{ + global $bb; + if ( preg_match( '/^([a-z0-9_-]+)#((?:[a-z0-9\/\\_-]+.)+)(php)$/i', $plugin, $_matches ) ) { + $plugin_directory = $bb->plugin_locations[$_matches[1]]['dir'] . $_matches[2] . $_matches[3]; + if ( !$path ) { + $plugin_directory = dirname( $plugin_directory ) . '/'; + } + } else { + $plugin_directory = $bb->plugin_locations['core']['dir']; + } + return apply_filters( 'bb_get_plugin_directory', $plugin_directory, $plugin, $path ); +} + +function bb_get_plugin_path( $plugin = false ) +{ + $plugin_path = bb_get_plugin_directory( $plugin, true ); + return apply_filters( 'bb_get_plugin_path', $plugin_path, $plugin ); +} + +/* Themes / Templates */ + +function bb_get_active_theme_directory() +{ + return apply_filters( 'bb_get_active_theme_directory', bb_get_theme_directory() ); +} + +function bb_get_theme_directory( $theme = false ) +{ + global $bb; + if ( !$theme ) { + $theme = bb_get_option( 'bb_active_theme' ); + } + if ( preg_match( '/^([a-z0-9_-]+)#([\.a-z0-9_-]+)$/i', $theme, $_matches ) ) { + $theme_directory = $bb->theme_locations[$_matches[1]]['dir'] . $_matches[2] . '/'; + } else { + $theme_directory = BB_DEFAULT_THEME_DIR; + } + return $theme_directory; +} + +function bb_get_themes() +{ + $r = array(); + global $bb; + foreach ( $bb->theme_locations as $_name => $_data ) { + if ( $themes_dir = @dir( $_data['dir'] ) ) { + while( ( $theme_dir = $themes_dir->read() ) !== false ) { + if ( is_file( $_data['dir'] . $theme_dir . '/style.css' ) && is_readable( $_data['dir'] . $theme_dir . '/style.css' ) && '.' != $theme_dir{0} ) { + $r[$_name . '#' . $theme_dir] = $_name . '#' . $theme_dir; + } + } + } + } + ksort( $r ); + return $r; +} + +function bb_theme_basename( $file ) +{ + global $bb; + $directories = array(); + foreach ( $bb->theme_locations as $_name => $_data ) { + $directories[$_name] = $_data['dir']; + } + $file = bb_basename( $file, $directories ); + $file = preg_replace( '|/+.*|', '', $file ); + return $file; +} + +function bb_register_theme_activation_hook( $file, $function ) +{ + $file = bb_theme_basename( $file ); + add_action( 'bb_activate_theme_' . $file, $function ); +} + +function bb_register_theme_deactivation_hook( $file, $function ) +{ + $file = bb_theme_basename( $file ); + add_action( 'bb_deactivate_theme_' . $file, $function ); +} + +/* Search Functions */ +// NOT bbdb::prepared +function bb_user_search( $args = '' ) { + global $bbdb, $bb_last_countable_query; + + if ( $args && is_string( $args ) && false === strpos( $args, '=' ) ) { + $args = array( 'query' => $args ); + } + + $defaults = array( + 'query' => '', + 'append_meta' => true, + 'user_login' => true, + 'display_name' => true, + 'user_nicename' => false, + 'user_url' => true, + 'user_email' => false, + 'user_meta' => false, + 'users_per_page' => false, + 'page' => false, + 'roles' => false + ); + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $query = trim( $query ); + if ( $query && strlen( preg_replace( '/[^a-z0-9]/i', '', $query ) ) < 3 ) { + return new WP_Error( 'invalid-query', __('Your search term was too short') ); + } + $query = $bbdb->escape( $query ); + + if ( !$page ) { + $page = $GLOBALS['page']; + } + $page = (int) $page; + + $limit = 0 < (int) $users_per_page ? (int) $users_per_page : bb_get_option( 'page_topics' ); + if ( 1 < $page ) { + $limit = ($limit * ($page - 1)) . ", $limit"; + } + + $likeit = preg_replace( '/\s+/', '%', like_escape( $query ) ); + + $fields = array(); + foreach ( array( 'user_login', 'display_name', 'user_nicename', 'user_url', 'user_email' ) as $field ) { + if ( $$field ) { + $fields[] = $field; + } + } + + if ( $roles ) { + $roles = (array) $roles; + } + + if ( $roles && !empty( $roles ) && false === $role_user_ids = apply_filters( 'bb_user_search_role_user_ids', false, $roles, $args ) ) { + $role_meta_key = $bbdb->escape( $bbdb->prefix . 'capabilities' ); + $role_sql_terms = array(); + foreach ( $roles as $role ) { + $role_sql_terms[] = "`meta_value` LIKE '%" . $bbdb->escape( like_escape( $role ) ) . "%'"; + } + $role_sql_terms = join( ' OR ', $role_sql_terms ); + $role_sql = "SELECT `user_id` FROM `$bbdb->usermeta` WHERE `meta_key` = '$role_meta_key' AND ($role_sql_terms);"; + $role_user_ids = $bbdb->get_col( $role_sql, 0 ); + if ( is_wp_error( $role_user_ids ) ) { + return false; + } + } + + if ( is_array( $role_user_ids ) && empty( $role_user_ids ) ) { + return false; + } + + if ( $query && $user_meta && false === $meta_user_ids = apply_filters( 'bb_user_search_meta_user_ids', false, $args ) ) { + $meta_sql = "SELECT `user_id` FROM `$bbdb->usermeta` WHERE `meta_value` LIKE ('%$likeit%')"; + if ( empty( $fields ) ) { + $meta_sql .= " LIMIT $limit"; + } + $meta_user_ids = $bbdb->get_col( $meta_sql, 0 ); + if ( is_wp_error( $meta_user_ids ) ) { + $meta_user_ids = false; + } + } + + $user_ids = array(); + if ( $role_user_ids && $meta_user_ids ) { + $user_ids = array_intersect( (array) $role_user_ids, (array) $meta_user_ids ); + } elseif ( $role_user_ids ) { + $user_ids = (array) $role_user_ids; + } elseif ( $meta_user_ids ) { + $user_ids = (array) $meta_user_ids; + } + + $sql = "SELECT * FROM $bbdb->users"; + + $sql_terms = array(); + if ( $query && count( $fields ) ) { + foreach ( $fields as $field ) { + $sql_terms[] = "$field LIKE ('%$likeit%')"; + } + } + + $user_ids_sql = ''; + if ( $user_ids ) { + $user_ids_sql = "AND ID IN (". join(',', $user_ids) . ")"; + } + + if ( $query && empty( $sql_terms ) ) { + return new WP_Error( 'invalid-query', __( 'Your query parameters are invalid' ) ); + } + + if ( count( $sql_terms ) || count( $user_ids ) ) { + $sql .= ' WHERE '; + } + + if ( count( $sql_terms ) ) { + $sql .= '(' . implode( ' OR ', $sql_terms ) . ')'; + } + + if ( count( $sql_terms ) && count( $user_ids ) ) { + $sql .= ' AND '; + } + + if ( count( $user_ids ) ) { + $sql .= '`ID` IN (' . join( ',', $user_ids ) . ')'; + } + + $sql .= " ORDER BY user_login LIMIT $limit"; + + $bb_last_countable_query = $sql; + + do_action( 'bb_user_search', $sql, $args ); + + if ( ( $users = $bbdb->get_results( $sql ) ) && $append_meta ) { + return bb_append_meta( $users, 'user' ); + } + + return $users ? $users : false; +} + +function bb_tag_search( $args = '' ) { + global $page, $wp_taxonomy_object; + + if ( $args && is_string($args) && false === strpos($args, '=') ) + $args = array( 'search' => $args ); + + $defaults = array( 'search' => '', 'number' => false ); + + $args = wp_parse_args( $args ); + if ( isset( $args['query'] ) ) + $args['search'] = $args['query']; + if ( isset( $args['tags_per_page'] ) ) + $args['number'] = $args['tags_per_page']; + unset($args['query'], $args['tags_per_page']); + $args = wp_parse_args( $args, $defaults ); + + extract( $args, EXTR_SKIP ); + + $number = (int) $number; + $search = trim( $search ); + if ( strlen( $search ) < 3 ) + return new WP_Error( 'invalid-query', __('Your search term was too short') ); + + $number = 0 < $number ? $number : bb_get_option( 'page_topics' ); + if ( 1 < $page ) + $offset = ( intval($page) - 1 ) * $number; + + $args = array_merge( $args, compact( 'number', 'offset', 'search' ) ); + + $terms = $wp_taxonomy_object->get_terms( 'bb_topic_tag', $args ); + if ( is_wp_error( $terms ) ) + return false; + + for ( $i = 0; isset($terms[$i]); $i++ ) + _bb_make_tag_compat( $terms[$i] ); + + return $terms; +} + + + +/* Slugs */ + +function bb_slug_increment( $slug, $existing_slug, $slug_length = 255 ) { + if ( preg_match('/^.*-([0-9]+)$/', $existing_slug, $m) ) + $number = (int) $m[1] + 1; + else + $number = 1; + + $r = bb_encoded_utf8_cut( $slug, $slug_length - 1 - strlen($number) ); + return apply_filters( 'bb_slug_increment', "$r-$number", $slug, $existing_slug, $slug_length ); +} + +function bb_get_id_from_slug( $table, $slug, $slug_length = 255 ) { + global $bbdb; + $tablename = $table . 's'; + + list($_slug, $sql) = bb_get_sql_from_slug( $table, $slug, $slug_length ); + + if ( !$_slug || !$sql ) + return 0; + + return (int) $bbdb->get_var( "SELECT ${table}_id FROM {$bbdb->$tablename} WHERE $sql" ); +} + +function bb_get_sql_from_slug( $table, $slug, $slug_length = 255 ) { + global $bbdb; + + // Look for new style equiv of old style slug + $_slug = bb_slug_sanitize( (string) $slug ); + if ( strlen( $_slug ) < 1 ) + return ''; + + if ( strlen($_slug) > $slug_length && preg_match('/^.*-([0-9]+)$/', $_slug, $m) ) { + $_slug = bb_encoded_utf8_cut( $_slug, $slug_length - 1 - strlen($number) ); + $number = (int) $m[1]; + $_slug = "$_slug-$number"; + } + + return array( $_slug, $bbdb->prepare( "${table}_slug = %s", $_slug ) ); +} + + + +/* Utility */ + +function bb_flatten_array( $array, $cut_branch = 0, $keep_child_array_keys = true ) { + if ( !is_array($array) ) + return $array; + + if ( empty($array) ) + return null; + + $temp = array(); + foreach ( $array as $k => $v ) { + if ( $cut_branch && $k == $cut_branch ) + continue; + if ( is_array($v) ) { + if ( $keep_child_array_keys ) { + $temp[$k] = true; + } + $temp += bb_flatten_array($v, $cut_branch, $keep_child_array_keys); + } else { + $temp[$k] = $v; + } + } + return $temp; +} + +function bb_get_common_parts($string1 = false, $string2 = false, $delimiter = '', $reverse = false) { + if (!$string1 || !$string2) { + return false; + } + + if ($string1 === $string2) { + return $string1; + } + + $string1_parts = explode( $delimiter, (string) $string1 ); + $string2_parts = explode( $delimiter, (string) $string2 ); + + if ($reverse) { + $string1_parts = array_reverse( $string1_parts ); + $string2_parts = array_reverse( $string2_parts ); + ksort( $string1_parts ); + ksort( $string2_parts ); + } + + $common_parts = array(); + foreach ( $string1_parts as $index => $part ) { + if ( isset( $string2_parts[$index] ) && $string2_parts[$index] == $part ) { + $common_parts[] = $part; + } else { + break; + } + } + + if (!count($common_parts)) { + return false; + } + + if ($reverse) { + $common_parts = array_reverse( $common_parts ); + } + + return join( $delimiter, $common_parts ); +} + +function bb_get_common_domains($domain1 = false, $domain2 = false) { + if (!$domain1 || !$domain2) { + return false; + } + + $domain1 = strtolower( preg_replace( '@^https?://([^/]+).*$@i', '$1', $domain1 ) ); + $domain2 = strtolower( preg_replace( '@^https?://([^/]+).*$@i', '$1', $domain2 ) ); + + return bb_get_common_parts( $domain1, $domain2, '.', true ); +} + +function bb_get_common_paths($path1 = false, $path2 = false) { + if (!$path1 || !$path2) { + return false; + } + + $path1 = preg_replace('@^https?://[^/]+(.*)$@i', '$1', $path1); + $path2 = preg_replace('@^https?://[^/]+(.*)$@i', '$1', $path2); + + if ($path1 === $path2) { + return $path1; + } + + $path1 = trim( $path1, '/' ); + $path2 = trim( $path2, '/' ); + + $common_path = bb_get_common_parts( $path1, $path2, '/' ); + + if ($common_path) { + return '/' . $common_path . '/'; + } else { + return '/'; + } +} + +function bb_match_domains($domain1 = false, $domain2 = false) { + if (!$domain1 || !$domain2) { + return false; + } + + $domain1 = strtolower( preg_replace( '@^https?://([^/]+).*$@i', '$1', $domain1 ) ); + $domain2 = strtolower( preg_replace( '@^https?://([^/]+).*$@i', '$1', $domain2 ) ); + + if ( (string) $domain1 === (string) $domain2 ) { + return true; + } + + return false; +} + +function bb_glob($pattern) { + // On fail return an empty array so that loops don't explode + + if (!$pattern) + return array(); + + // May break if pattern contains forward slashes + $directory = dirname( $pattern ); + + if (!$directory) + return array(); + + if (!file_exists($directory)) + return array(); + + if (!is_dir($directory)) + return array(); + + if (!function_exists('glob')) + return array(); + + if (!is_callable('glob')) + return array(); + + $glob = glob($pattern); + + if (!is_array($glob)) + $glob = array(); + + return $glob; +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-deprecated.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-deprecated.php new file mode 100644 index 0000000..88dd1c7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-deprecated.php @@ -0,0 +1,1193 @@ +topic_time )'); + global $topic; + if ( $id ) + $topic = get_topic( $id ); + return bb_gmtstrtotime( $topic->topic_time ); +} + +// Use topic_start_time +function topic_start_date( $format = '', $id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_gmdate_i18n( $format, get_topic_start_timestamp( $id ) )'); + echo bb_gmdate_i18n( $format, get_topic_start_timestamp( $id ) ); +} +function get_topic_start_timestamp( $id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_gmtstrtotime( $topic->topic_start_time )'); + global $topic; + if ( $id ) + $topic = get_topic( $id ); + return bb_gmtstrtotime( $topic->topic_start_time ); +} + +// Use bb_post_time +function post_date( $format ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_gmdate_i18n( $format, bb_gmtstrtotime( $bb_post->post_time ) )'); + global $bb_post; + echo bb_gmdate_i18n( $format, bb_gmtstrtotime( $bb_post->post_time ) ); +} +function get_post_timestamp() { + bb_log_deprecated('function', __FUNCTION__, 'bb_gmtstrtotime( $bb_post->post_time )'); + global $bb_post; + return bb_gmtstrtotime( $bb_post->post_time ); +} + +function get_inception() { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_inception( \'timestamp\' )'); + return bb_get_inception( 'timestamp' ); +} + +function forum_dropdown( $c = false, $a = false ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_forum_dropdown'); + bb_forum_dropdown( $c, $a ); +} + +function get_ids_by_role( $role = 'moderator', $sort = 0, $limit_str = '' ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_ids_by_role'); + return bb_get_ids_by_role( $role , $sort , $limit_str); +} + +function get_deleted_posts( $page = 1, $limit = false, $status = 1, $topic_status = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); +} + +function bozo_posts( $where ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_posts'); + return bb_bozo_posts( $where ); +} + +function bozo_topics( $where ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_topics'); + return bb_bozo_topics( $where ); +} + +function get_bozos( $page = 1 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_bozos'); + return bb_get_bozos($page); +} + +function current_user_is_bozo( $topic_id = false ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_current_user_is_bozo'); + return bb_current_user_is_bozo( $topic_id ); +} + +function bozo_pre_permalink() { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_pre_permalink'); + return bb_bozo_pre_permalink(); +} + +function bozo_latest_filter() { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_latest_filter'); + return bb_bozo_latest_filter(); +} + +function bozo_topic_db_filter() { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_topic_db_filter'); + return bb_bozo_topic_db_filter(); +} + +function bozo_profile_db_filter() { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_profile_db_filter'); + return bb_bozo_profile_db_filter(); +} + +function bozo_recount_topics() { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_recount_topics'); + return bb_bozo_recount_topics(); +} + +function bozo_recount_users() { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_recount_users'); + return bb_bozo_recount_users(); +} + +function bozo_post_del_class( $status ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_post_del_class'); + return bb_bozo_post_del_class( $status ); +} + +function bozo_add_recount_list() { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_add_recount_list'); + return bb_bozo_add_recount_list() ; +} + +function bozo_topic_pages_add( $add ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_topic_pages_add'); + return bb_bozo_topic_pages_add( $add ); +} + +function bozo_get_topic_posts( $topic_posts ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_get_topic_posts'); + return bb_bozo_get_topic_posts( $topic_posts ) ; +} + +function bozo_new_post( $post_id ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_new_post'); + return bb_bozo_new_post( $post_id ); +} + +function bozo_pre_post_status( $status, $post_id, $topic_id ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_pre_post_status'); + return bb_bozo_pre_post_status( $status, $post_id, $topic_id ) ; +} + +function bozo_delete_post( $post_id, $new_status, $old_status ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_delete_post'); + return bb_bozo_delete_post( $post_id, $new_status, $old_status ) ; +} + +function bozon( $user_id, $topic_id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozon'); + return bb_bozon( $user_id, $topic_id ) ; +} + +function fermion( $user_id, $topic_id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_fermion'); + return bb_fermion( $user_id, $topic_id ) ; +} + +function bozo_profile_admin_keys( $a ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_profile_admin_keys'); + return bb_bozo_profile_admin_keys( $a ) ; +} +function bozo_add_admin_page() { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_add_admin_page'); + return bb_bozo_add_admin_page() ; +} + +function bozo_admin_page() { + bb_log_deprecated('function', __FUNCTION__, 'bb_bozo_admin_page'); + return bb_bozo_admin_page() ; +} + +function encodeit( $matches ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_encodeit'); + return bb_encodeit( $matches ) ; +} + +function decodeit( $matches ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_decodeit'); + return bb_decodeit( $matches ) ; +} + +function code_trick( $text ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_code_trick'); + return bb_code_trick( $text ) ; +} + +function code_trick_reverse( $text ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_code_trick_reverse'); + return bb_code_trick_reverse( $text ) ; +} + +function encode_bad( $text ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_encode_bad'); + return bb_encode_bad( $text ) ; +} + +function user_sanitize( $text, $strict = false ) { + bb_log_deprecated('function', __FUNCTION__, 'sanitize_user'); + return sanitize_user( $text, $strict ); +} + +function bb_user_sanitize( $text, $strict = false ) { + bb_log_deprecated('function', __FUNCTION__, 'sanitize_user'); + return sanitize_user( $text, $strict ); +} + +function utf8_cut( $utf8_string, $length ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_utf8_cut'); + return bb_utf8_cut( $utf8_string, $length ) ; +} + +function tag_sanitize( $tag ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_tag_sanitize'); + return bb_tag_sanitize( $tag ) ; +} + +function sanitize_with_dashes( $text, $length = 200 ) { // Multibyte aware + bb_log_deprecated('function', __FUNCTION__, 'bb_sanitize_with_dashes'); + return bb_sanitize_with_dashes( $text, $length ) ; +} + +function bb_make_feed( $link ) { + bb_log_deprecated('function', __FUNCTION__, 'no aternative'); + return trim( $link ); +} + +function show_context( $term, $text ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_show_context'); + return bb_show_context( $term, $text ); +} + +function closed_title( $title ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_closed_label'); + return bb_closed_label( $title ); +} + +// Closed label now applied using bb_topic_labels filters +function bb_closed_title( $title ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_closed_label'); + return bb_closed_label( $title ); +} + +function make_link_view_all( $link ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_make_link_view_all'); + return bb_make_link_view_all( $link ); +} + +function remove_topic_tag( $tag_id, $user_id, $topic_id ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_remove_topic_tag'); + return bb_remove_topic_tag( $tag_id, $user_id, $topic_id ); +} + +function add_topic_tag( $topic_id, $tag ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_add_topic_tag'); + return bb_add_topic_tag( $topic_id, $tag ); +} + +function add_topic_tags( $topic_id, $tags ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_add_topic_tags'); + return bb_add_topic_tags( $topic_id, $tags ); +} + +function create_tag( $tag ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_create_tag'); + return bb_create_tag( $tag ); +} + +function destroy_tag( $tag_id, $recount_topics = true ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_destroy_tag'); + return bb_destroy_tag( $tag_id, $recount_topics ); +} + +if ( !function_exists( 'get_tag_id' ) ) : +function get_tag_id( $tag ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tag_id'); + return bb_get_tag_id( $tag ); +} +endif; + +if ( !function_exists( 'get_tag' ) ) : +function get_tag( $tag_id, $user_id = 0, $topic_id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tag'); + return bb_get_tag( $tag_id, $user_id, $topic_id ); +} +endif; + +if ( !function_exists( 'get_tag_by_name' ) ) : +function get_tag_by_name( $tag ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tag_by_name'); + return bb_get_tag( $tag ); +} +endif; + +function get_topic_tags( $topic_id ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_topic_tags'); + return bb_get_topic_tags( $topic_id ); +} + +function get_user_tags( $topic_id, $user_id ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_user_tags'); + return bb_get_user_tags( $topic_id, $user_id ); +} + +function get_other_tags( $topic_id, $user_id ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_other_tags'); + return bb_get_other_tags( $topic_id, $user_id ); +} + +function get_public_tags( $topic_id ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_public_tags'); + return bb_get_public_tags( $topic_id ); +} + +function get_tagged_topic_ids( $tag_id ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tagged_topic_ids'); + return bb_get_tagged_topic_ids( $tag_id ); +} + +if ( !function_exists( 'get_top_tags' ) ) : +function get_top_tags( $recent = true, $limit = 40 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_top_tags'); + return bb_get_top_tags( array( 'number' => $limit ) ); +} +endif; + +if ( !function_exists( 'get_tag_name' ) ) : +function get_tag_name( $id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tag_name'); + return bb_get_tag_name( $id ); +} +endif; + +if ( !function_exists( 'tag_name' ) ) : +function tag_name( $id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_tag_name'); + bb_tag_name( $id ); +} +endif; + +if ( !function_exists( 'get_tag_rss_link' ) ) : +function get_tag_rss_link( $id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tag_posts_rss_link'); + return bb_get_tag_posts_rss_link( $id ); +} +endif; + +if ( !function_exists( 'tag_rss_link' ) ) : +function tag_rss_link( $id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_tag_posts_rss_link'); + bb_tag_posts_rss_link( $id ); +} +endif; + +if ( !function_exists( 'get_tag_page_link' ) ) : +function get_tag_page_link() { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tag_page_link'); + bb_get_tag_page_link(); +} +endif; + +if ( !function_exists( 'tag_page_link' ) ) : +function tag_page_link() { + bb_log_deprecated('function', __FUNCTION__, 'bb_tag_page_link'); + bb_tag_page_link(); +} +endif; + +if ( !function_exists( 'get_tag_remove_link' ) ) : +function get_tag_remove_link() { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tag_remove_link'); + bb_get_tag_remove_link(); +} +endif; + +if ( !function_exists( 'tag_remove_link' ) ) : +function tag_remove_link() { + bb_log_deprecated('function', __FUNCTION__, 'bb_tag_remove_link'); + bb_tag_remove_link(); +} +endif; + +if ( !function_exists( 'tag_heat_map' ) ) : +function tag_heat_map( $args = '' ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_tag_heat_map (with variations to arguments)'); + $defaults = array( 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'limit' => 45, 'format' => 'flat' ); + $args = wp_parse_args( $args, $defaults ); + + if ( 1 < $fn = func_num_args() ) : // For back compat + $args['smallest'] = func_get_arg(0); + $args['largest'] = func_get_arg(1); + $args['unit'] = 2 < $fn ? func_get_arg(2) : $unit; + $args['limit'] = 3 < $fn ? func_get_arg(3) : $limit; + endif; + + bb_tag_heat_map( $args ); +} +endif; + +function get_bb_location() { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + $r = bb_get_location(); + if ( !$r ) + $r = apply_filters( 'get_bb_location', '' ); // Deprecated filter + return $r; +} + +function bb_parse_args( $args, $defaults = '' ) { + bb_log_deprecated('function', __FUNCTION__, 'wp_parse_args'); + return wp_parse_args( $args, $defaults ); +} + +if ( !function_exists( 'is_tag' ) ) : +function is_tag() { + bb_log_deprecated('function', __FUNCTION__, 'bb_is_tag'); + return bb_is_tag(); +} +endif; + +if ( !function_exists( 'is_tags' ) ) : +function is_tags() { + bb_log_deprecated('function', __FUNCTION__, 'bb_is_tags'); + return bb_is_tags(); +} +endif; + +if ( !function_exists( 'tag_link' ) ) : +function tag_link() { + bb_log_deprecated('function', __FUNCTION__, 'bb_tag_link'); + bb_tag_link(); +} +endif; + +if ( !function_exists( 'tag_link_base' ) ) : +function tag_link_base() { + bb_log_deprecated('function', __FUNCTION__, 'bb_tag_link_base'); + bb_tag_link_base(); +} +endif; + +if ( !function_exists( 'get_tag_link' ) ) : +function get_tag_link() { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tag_link'); + bb_get_tag_link(); +} +endif; + +if ( !function_exists( 'get_tag_link_base' ) ) : +function get_tag_link_base() { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tag_link_base'); + bb_get_tag_link_base(); +} +endif; + +// It's not omnipotent +function bb_path_to_url( $path ) { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + return apply_filters( 'bb_path_to_url', bb_convert_path_base( $path, BB_PATH, bb_get_uri(null, null, BB_URI_CONTEXT_TEXT) ), $path ); +} + +// Neither is this one +function bb_url_to_path( $url ) { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + return apply_filters( 'bb_url_to_path', bb_convert_path_base( $url, bb_get_uri(null, null, BB_URI_CONTEXT_TEXT), BB_PATH ), $url ); +} + +function bb_convert_path_base( $path, $from_base, $to_base ) { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + $last_char = $path{strlen($path)-1}; + if ( '/' != $last_char && '\\' != $last_char ) + $last_char = ''; + + list($from_base, $to_base) = bb_trim_common_path_right($from_base, $to_base); + + if ( 0 === strpos( $path, $from_base ) ) + $r = $to_base . substr($path, strlen($from_base)) . $last_char; + else + return false; + + $r = str_replace(array('//', '\\\\'), array('/', '\\'), $r); + $r = preg_replace('|:/([^/])|', '://$1', $r); + + return $r; +} + +function bb_trim_common_path_right( $one, $two ) { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + $root_one = false; + $root_two = false; + + while ( false === $root_one ) { + $base_one = basename($one); + $base_two = basename($two); + if ( !$base_one || !$base_two ) + break; + if ( $base_one == $base_two ) { + $one = dirname($one); + $two = dirname($two); + } else { + $root_one = $one; + $root_two = $two; + } + } + + return array($root_one, $root_two); +} + +function deleted_topics( $where ) { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + return preg_replace( '/(\w+\.)?topic_status = ["\']?0["\']?/', "\\1topic_status = 1", $where); +} + +function no_replies( $where ) { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + return $where . ' AND topic_posts = 1 '; +} + +function untagged( $where ) { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + return $where . ' AND tag_count = 0 '; +} + +function get_views() { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_views'); + return bb_get_views(); +} + +if ( !function_exists( 'balanceTags' ) ) : +function balanceTags( $text ) { + bb_log_deprecated('function', __FUNCTION__, 'force_balance_tags'); + return force_balance_tags( $text ); +} +endif; + +// With no extra arguments, converts array of objects into object of arrays +// With extra arguments corresponding to name of object properties, returns array of arrays: +// list($a, $b) = bb_pull_cols( $obj_array, 'a', 'b' ); +function bb_pull_cols( $obj_array ) { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + $r = new stdClass; + foreach ( array_keys($obj_array) as $o ) + foreach ( get_object_vars( $obj_array[$o] ) as $k => $v ) + $r->{$k}[] = $v; + + if ( 1 == func_num_args() ) + return $r; + + $args = func_get_args(); + $args = array_splice($args, 1); + + $a = array(); + foreach ( $args as $arg ) + $a[] = $r->$arg; + return $a; +} + +// $length parameter is deprecated +function bb_random_pass( $length ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_generate_password'); + if ( 12 < (int) $length ) { + $length = 12; + } + return bb_generate_password( $length ); +} + +// Old RSS related functions +function get_recent_rss_link() { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_posts_rss_link'); + return bb_get_posts_rss_link(); +} + +function forum_rss_link( $forum_id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_forum_posts_rss_link'); + bb_forum_posts_rss_link( $forum_id ); +} + +function get_forum_rss_link( $forum_id = 0 ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_forum_posts_rss_link'); + return bb_get_forum_posts_rss_link( $forum_id ); +} + +function bb_register_activation_hook($file, $function) { + bb_log_deprecated('function', __FUNCTION__, 'bb_register_plugin_activation_hook'); + bb_register_plugin_activation_hook($file, $function); +} + +function bb_register_deactivation_hook($file, $function) { + bb_log_deprecated('function', __FUNCTION__, 'bb_register_plugin_deactivation_hook'); + bb_register_plugin_deactivation_hook($file, $function); +} + +function bb_enqueue_script( $handle, $src = false, $deps = array(), $ver = false ) { + bb_log_deprecated('function', __FUNCTION__, 'wp_enqueue_script'); + wp_enqueue_script( $handle, $src, $deps, $ver ); +} + +function bb_get_user_by_name( $name ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_user'); + return bb_get_user( $name, array( 'by' => 'login' ) ); +} + +function bb_user_exists( $user ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_user'); + return bb_get_user( $user ); +} + +function bb_maybe_serialize( $string ) { + bb_log_deprecated('function', __FUNCTION__, 'maybe_serialize'); + return maybe_serialize( $string ); +} + +function bb_maybe_unserialize( $string ) { + bb_log_deprecated('function', __FUNCTION__, 'maybe_unserialize'); + return maybe_unserialize( $string ); +} + +function bb_get_active_theme_folder() { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_active_theme_directory'); + return apply_filters( 'bb_get_active_theme_folder', bb_get_active_theme_directory() ); +} + +function bb_tag_sanitize( $tag ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_pre_term_slug'); + return bb_pre_term_slug( $tag ); +} + +function bb_get_tag_by_name( $tag ) { + bb_log_deprecated('function', __FUNCTION__, 'bb_get_tag'); + return bb_get_tag( $tag ); +} + +function bb_dbDelta($queries, $execute = true) { + bb_log_deprecated('function', __FUNCTION__, 'bb_sql_delta'); + return bb_sql_delta($queries, $execute); +} + +function bb_make_db_current() { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + return false; +} + +function bb_maybe_add_column( $table_name, $column_name, $create_ddl ) { + bb_log_deprecated('function', __FUNCTION__, 'no alternative'); + return false; +} + +class BB_Cache { + var $use_cache = false; + var $flush_freq = 100; + var $flush_time = 172800; // 2 days + + function get_user( $user_id, $use_cache = true ) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'bb_get_user'); + return bb_get_user( $user_id ); + } + + function append_current_user_meta( $user ) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'bb_append_meta'); + return bb_append_meta( $user, 'user' ); + } + + function append_user_meta( $user ) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'bb_append_meta'); + return bb_append_meta( $user, 'user' ); + } + + // NOT bbdb::prepared + function cache_users( $ids, $use_cache = true ) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'bb_cache_users'); + return bb_cache_users( $ids ); + } + + // NOT bbdb::prepared + function get_topic( $topic_id, $use_cache = true ) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'get_topic'); + return get_topic( $topic_id, $use_cache ); + } + + // NOT bbdb::prepared + function get_thread( $topic_id, $page = 1, $reverse = 0 ) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'get_thread'); + return get_thread( $topic_id, $page, $reverse ); + } + + // NOT bbdb::prepared + function cache_posts( $query ) { // soft cache + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'bb_cache_posts'); + return bb_cache_posts( $query ); + } + + // NOT bbdb::prepared + function get_forums() { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'bb_get_forums'); + return bb_get_forums(); + } + + function get_forum( $forum_id ) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'bb_get_forum'); + return bb_get_forum( $forum_id ); + } + + function read_cache($file) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'no alternative'); + return false; + } + + function write_cache($file, $data) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'no alternative'); + return false; + } + + function flush_one( $type, $id = false, $page = 0 ) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'no alternative'); + return true; + } + + function flush_many( $type, $id, $start = 0 ) { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'no alternative'); + return true; + } + + function flush_old() { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'no alternative'); + return true; + } + + function flush_all() { + bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'no alternative'); + return true; + } + +} + +function new_topic( $args = null ) { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_new_topic_link' ); + bb_new_topic_link( $args ); +} + +function bb_upgrade_1060() { + bb_log_deprecated( 'function', __FUNCTION__, 'no alternative' ); +} + +if ( !function_exists( 'paginate_links' ) ) : // Deprecated in bbPress not WordPress +function paginate_links( $args = '' ) { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_paginate_links' ); + return bb_paginate_links( $args ); +} +endif; + +if ( !function_exists('wp_clear_auth_cookie') ) : // Deprecated in bbPress not WordPress +function wp_clear_auth_cookie() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_clear_auth_cookie' ); + bb_clear_auth_cookie(); +} +endif; + +if ( !function_exists( 'wp_validate_auth_cookie' ) ) : // Deprecated in bbPress not WordPress +function wp_validate_auth_cookie( $cookie = '', $scheme = 'auth' ) { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_validate_auth_cookie' ); + return bb_validate_auth_cookie( $cookie, $scheme ); +} +endif; + +if ( !function_exists( 'wp_set_auth_cookie' ) ) : // Deprecated in bbPress not WordPress +function wp_set_auth_cookie( $user_id, $remember = false, $secure = '' ) { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_set_auth_cookie' ); + bb_set_auth_cookie( $user_id, $remember, $secure ); +} +endif; + +if ( !function_exists( 'wp_salt' ) ) : // Deprecated in bbPress not WordPress +function wp_salt( $scheme = 'auth' ) { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_salt' ); + return bb_salt( $scheme ); +} +endif; + +if ( !function_exists( 'wp_hash' ) ) : // Deprecated in bbPress not WordPress +function wp_hash( $data, $scheme = 'auth' ) { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_hash' ); + return bb_hash( $data, $scheme ); +} +endif; + +if ( !function_exists( 'wp_hash_password' ) ) : // Deprecated in bbPress not WordPress +function wp_hash_password( $password ) { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_hash_password' ); + return bb_hash_password( $password ); +} +endif; + +if ( !function_exists( 'wp_check_password') ) : // Deprecated in bbPress not WordPress +function wp_check_password( $password, $hash, $user_id = '' ) { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_check_password' ); + return bb_check_password( $password, $hash, $user_id ); +} +endif; + +if ( !function_exists( 'wp_generate_password' ) ) : // Deprecated in bbPress not WordPress +function wp_generate_password( $length = 12, $special_chars = true ) { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_generate_password' ); + return bb_generate_password( $length, $special_chars ); +} +endif; + +if ( !class_exists( 'WP_User' ) ) : // Deprecated in BackPress not WordPress +class WP_User extends BP_User { + function WP_User( $id, $name = '' ) { + return parent::BP_User( $id, $name ); + } +} +endif; + +function bb_sql_get_column_definition( $column_data ) { + require_once( BACKPRESS_PATH . 'class.bp-sql-schema-parser.php' ); + bb_log_deprecated( 'function', __FUNCTION__, 'BP_SQL_Schema_Parser::get_column_definition' ); + return BP_SQL_Schema_Parser::get_column_definition( $column_data ); +} + +function bb_sql_get_index_definition( $index_data ) { + require_once( BACKPRESS_PATH . 'class.bp-sql-schema-parser.php' ); + bb_log_deprecated( 'function', __FUNCTION__, 'BP_SQL_Schema_Parser::get_index_definition' ); + return BP_SQL_Schema_Parser::get_index_definition( $index_data ); +} + +function bb_sql_describe_table( $query ) { + require_once( BACKPRESS_PATH . 'class.bp-sql-schema-parser.php' ); + bb_log_deprecated( 'function', __FUNCTION__, 'BP_SQL_Schema_Parser::describe_table' ); + return BP_SQL_Schema_Parser::describe_table( $query ); +} + +function bb_sql_parse( $sql ) { + require_once( BACKPRESS_PATH . 'class.bp-sql-schema-parser.php' ); + bb_log_deprecated( 'function', __FUNCTION__, 'BP_SQL_Schema_Parser::parse' ); + return BP_SQL_Schema_Parser::parse( $sql ); +} + +function bb_sql_delta( $queries, $execute = true ) { + require_once( BACKPRESS_PATH . 'class.bp-sql-schema-parser.php' ); + bb_log_deprecated( 'function', __FUNCTION__, 'BP_SQL_Schema_Parser::delta' ); + global $bbdb; + return BP_SQL_Schema_Parser::delta( $bbdb, $queries, false, $execute ); +} + +function is_front() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_front' ); + return bb_is_front(); +} + +function is_forum() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_forum' ); + return bb_is_forum(); +} + +function is_bb_tags() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_tags' ); + return bb_is_tags(); +} + +function is_bb_tag() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_tag' ); + return bb_is_tag(); +} + +function is_topic_edit() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_topic_edit' ); + return bb_is_topic_edit(); +} + +function is_topic() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_topic' ); + return bb_is_topic(); +} + +function is_bb_feed() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_feed' ); + return bb_is_feed(); +} + +function is_bb_search() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_search' ); + return bb_is_search(); +} + +function is_bb_profile() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_profile' ); + return bb_is_profile(); +} + +function is_bb_favorites() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_favorites' ); + return bb_is_favorites(); +} + +function is_view() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_view' ); + return bb_is_view(); +} + +function is_bb_stats() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_statistics' ); + return bb_is_statistics(); +} + +function is_bb_admin() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_is_admin' ); + return bb_is_admin(); +} + +function bb_verify_email( $email, $check_dns = false ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'is_email' ); + return is_email( $email, $check_dns ); +} + +function bb_tag_rss_link( $tag_id = 0, $context = 0 ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_tag_posts_rss_link' ); + return bb_tag_posts_rss_link( $tag_id, $context ); +} + +function bb_get_tag_rss_link( $tag_id = 0, $context = 0 ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_tag_posts_rss_link' ); + return bb_get_tag_posts_rss_link( $tag_id, $context ); +} + +function rename_tag( $tag_id, $tag_name ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_rename_tag' ); + return bb_rename_tag( $tag_id, $tag_name ); +} + +function merge_tags( $old_id, $new_id ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_merge_tags' ); + return bb_merge_tags( $old_id, $new_id ); +} + +function bb_related_tags( $_tag = false, $number = 0 ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'no alternative' ); + return false; +} + +function bb_related_tags_heat_map( $args = '' ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'no alternative' ); + return; +} + +function bb_cache_javascript_headers() +{ + bb_log_deprecated( 'function', __FUNCTION__, 'cache_javascript_headers' ); + cache_javascript_headers(); +} + +function bb_is_ssl() +{ + bb_log_deprecated( 'function', __FUNCTION__, 'is_ssl' ); + return is_ssl(); +} + +function bb_force_ssl_user_forms( $force = '' ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'force_ssl_login' ); + return force_ssl_login( $force ); +} + +function bb_force_ssl_admin( $force = '' ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'force_ssl_admin' ); + return force_ssl_admin( $force ); +} + +function get_forums( $args = null ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_forums' ); + return bb_get_forums( $args ); +} + +function get_forum( $id ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_forum' ); + return bb_get_forum( $id ); +} + +function get_latest_posts( $limit = 0, $page = 1 ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_latest_posts' ); + return bb_get_latest_posts( $limit, $page ); +} + +function get_latest_forum_posts( $forum_id, $limit = 0, $page = 1 ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_latest_forum_posts' ); + return bb_get_latest_forum_posts( $forum_id, $limit, $page ); +} + +function update_post_positions( $topic_id ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_update_post_positions' ); + return bb_update_post_positions( $topic_id ); +} + +function topics_replied_on_undelete_post( $post_id ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_topics_replied_on_undelete_post' ); + return bb_topics_replied_on_undelete_post( $post_id ); +} + +function post_author_cache( $posts ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_post_author_cache' ); + return bb_post_author_cache( $posts ); +} + +function get_recent_user_replies( $user_id ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_recent_user_replies' ); + return bb_get_recent_user_replies( $user_id ); +} + +function no_where( $where ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_no_where' ); + return bb_no_where( $where ); +} + +function get_path( $level = 1, $base = false, $request = false ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_path' ); + return bb_get_path( $level, $base, $request ); +} + +function add_profile_tab( $tab_title, $users_cap, $others_cap, $file, $arg = false ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_add_profile_tab' ); + return bb_add_profile_tab( $tab_title, $users_cap, $others_cap, $file, $arg ); +} + +function can_access_tab( $profile_tab, $viewer_id, $owner_id ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_can_access_tab' ); + return bb_can_access_tab( $profile_tab, $viewer_id, $owner_id ); +} + +function get_profile_info_keys( $context = null ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_profile_info_keys' ); + return bb_get_profile_info_keys( $context ); +} + +function get_profile_admin_keys( $context = null ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_profile_admin_keys' ); + return bb_get_profile_admin_keys( $context ); +} + +function get_assignable_caps() +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_assignable_caps' ); + return bb_get_assignable_caps(); +} + +function get_page_number( $item, $per_page = 0 ) +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_page_number' ); + return bb_get_page_number( $item, $per_page ); +} + +function get_recent_registrants( $num = 10 ) +{ + bb_log_deprecated('function', __FUNCTION__, 'no aternative'); + return; +} + +if ( !function_exists( 'get_total_users' ) ) { + function get_total_users() + { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_total_users' ); + return bb_get_total_users(); + } +} + +function total_users() +{ + bb_log_deprecated( 'function', __FUNCTION__, 'bb_total_users' ); + bb_total_users(); +} + +if ( !function_exists( 'update_user_status' ) ) { + function update_user_status( $user_id, $user_status = 0 ) + { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_update_user_status' ); + return bb_update_user_status( $user_id, $user_status ); + } +} + +function bb_get_current_commenter() { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_get_current_poster' ); + extract( bb_get_current_poster() ); + return array( 'comment_author' => $post_author, 'comment_email' => $post_author_email, 'comment_author_url' => $post_author_url ); +} + +function bb_check_comment_flood( $ip = '', $email = '', $date = '' ) { + bb_log_deprecated( 'function', __FUNCTION__, 'bb_check_post_flood' ); + bb_check_post_flood(); +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-formatting.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-formatting.php new file mode 100644 index 0000000..e4b8e1d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-formatting.php @@ -0,0 +1,405 @@ +\s*
      |', "\n\n", $pee); + // Space things out a little + $pee = preg_replace('!(<(?:ul|ol|li|blockquote|pre|p)[^>]*>)!', "\n$1", $pee); + $pee = preg_replace('!()!', "$1\n", $pee); + $pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines + $pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates + $pee = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "

      $1

      \n", $pee); // make paragraphs, including one at the end + $pee = preg_replace('|

      \s*?

      |', '', $pee); // under certain strange conditions it could create a P of entirely whitespace + $pee = preg_replace('!

      \s*(]*>)\s*

      !', "$1", $pee); // don't pee all over a tag + $pee = preg_replace("|

      (|", "$1", $pee); // problem with nested lists + $pee = preg_replace('|

      ]*)>|i', "

      ", $pee); + $pee = str_replace('

      ', '

      ', $pee); + $pee = preg_replace('!

      \s*(]*>)!', "$1", $pee); + $pee = preg_replace('!(]*>)\s*

      !', "$1", $pee); + if ($br) $pee = preg_replace('|(?)\s*\n|', "
      \n", $pee); // optionally make line breaks + $pee = preg_replace('!(]*>)\s*
      !', "$1", $pee); + $pee = preg_replace('!
      (\s*)!', '$1', $pee); + if ( false !== strpos( $pee, ')(.*?)!is', 'clean_pre', $pee ); + return $pee; +} + +function bb_encodeit( $matches ) { + $text = trim($matches[2]); + $text = htmlspecialchars($text, ENT_QUOTES); + $text = str_replace(array("\r\n", "\r"), "\n", $text); + $text = preg_replace("|\n\n\n+|", "\n\n", $text); + $text = str_replace('&amp;', '&', $text); + $text = str_replace('&lt;', '<', $text); + $text = str_replace('&gt;', '>', $text); + $text = "$text"; + if ( "`" != $matches[1] ) + $text = "
      $text
      "; + return $text; +} + +function bb_decodeit( $matches ) { + $text = $matches[2]; + $trans_table = array_flip(get_html_translation_table(HTML_ENTITIES)); + $text = strtr($text, $trans_table); + $text = str_replace('
      ', '', $text); + $text = str_replace('

      ', '', $text); + $text = str_replace('

      ', '', $text); + $text = str_replace(array('&','&'), '&', $text); + $text = str_replace(''', "'", $text); + if ( '
      ' == $matches[1] )
      +		$text = "\n$text\n";
      +	return "`$text`";
      +}
      +
      +function bb_code_trick( $text ) {
      +	$text = str_replace(array("\r\n", "\r"), "\n", $text);
      +	$text = preg_replace_callback("|(`)(.*?)`|", 'bb_encodeit', $text);
      +	$text = preg_replace_callback("!(^|\n)`(.*?)`!s", 'bb_encodeit', $text);
      +	return $text;
      +}
      +
      +function bb_code_trick_reverse( $text ) {
      +	$text = preg_replace_callback("!(
      |)(.*?)(
      |)!s", 'bb_decodeit', $text); + $text = str_replace(array('

      ', '
      '), '', $text); + $text = str_replace('

      ', "\n", $text); + $text = str_replace('', '
      ', $text); + $text = str_replace('', '

      ', $text); + $text = str_replace('', '

      ', $text); + return $text; +} + +function _bb_encode_bad_empty(&$text, $key, $preg) { + if (strpos($text, '`') !== 0) + $text = preg_replace("|<($preg)\s*?/*?>|i", '<$1 />', $text); +} + +function _bb_encode_bad_normal(&$text, $key, $preg) { + if (strpos($text, '`') !== 0) + $text = preg_replace("|<(/?$preg)>|i", '<$1>', $text); +} + +function bb_encode_bad( $text ) { + $text = wp_specialchars( $text, ENT_NOQUOTES ); + + $text = preg_split('@(`[^`]*`)@m', $text, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE); + + $allowed = bb_allowed_tags(); + $empty = array( 'br' => true, 'hr' => true, 'img' => true, 'input' => true, 'param' => true, 'area' => true, 'col' => true, 'embed' => true ); + + foreach ( $allowed as $tag => $args ) { + $preg = $args ? "$tag(?:\s.*?)?" : $tag; + + if ( isset( $empty[$tag] ) ) + array_walk($text, '_bb_encode_bad_empty', $preg); + else + array_walk($text, '_bb_encode_bad_normal', $preg); + } + + return join('', $text); +} + +function bb_filter_kses($data) { + $allowedtags = bb_allowed_tags(); + return wp_kses($data, $allowedtags); +} + +function bb_allowed_tags() { + $tags = array( + 'a' => array( + 'href' => array(), + 'title' => array(), + 'rel' => array()), + 'blockquote' => array('cite' => array()), + 'br' => array(), + 'code' => array(), + 'pre' => array(), + 'em' => array(), + 'strong' => array(), + 'ul' => array(), + 'ol' => array(), + 'li' => array() + ); + return apply_filters( 'bb_allowed_tags', $tags ); +} + +function bb_rel_nofollow( $text ) { + return preg_replace_callback('||i', 'bb_rel_nofollow_callback', $text); +} + +function bb_rel_nofollow_callback( $matches ) { + $text = $matches[1]; + $text = str_replace(array(' rel="nofollow"', " rel='nofollow'"), '', $text); + return ""; +} + +// Should be able to take both escaped and unescaped data +function bb_trim_for_db( $string, $length ) { + $_string = $string; + if ( seems_utf8( $string ) ) { + $string = bb_utf8_cut( $string, $length ); + // if we have slashes at the end, make sure we have a reasonable number of them + if ( preg_match( '#[^\\\\](\\\\+)$#', $string, $matches ) ) { + $end = stripslashes($matches[1]); + $end = addslashes($end); + $string = trim( $string, '\\' ) . $end; + } + } + return apply_filters( 'bb_trim_for_db', $string, $_string, $length ); +} + +// Reduce utf8 string to $length in single byte character equivalents without breaking multibyte characters +function bb_utf8_cut( $utf8_string, $length = 0 ) { + if ( $length < 1 ) + return $utf8_string; + + $unicode = ''; + $chars = array(); + $num_octets = 1; + + for ($i = 0; $i < strlen( $utf8_string ); $i++ ) { + + $value = ord( $utf8_string[ $i ] ); + + if ( 128 > $value ) { + if ( strlen($unicode) + 1 > $length ) + break; + $unicode .= $utf8_string[ $i ]; + } else { + if ( count( $chars ) == 0 ) + $num_octets = ( 224 > $value ) ? 2 : 3; + + $chars[] = $utf8_string[ $i ]; + if ( strlen($unicode) + $num_octets > $length ) + break; + if ( count( $chars ) == $num_octets ) { + $unicode .= join('', $chars); + $chars = array(); + $num_octets = 1; + } + } + } + + return $unicode; +} + +function bb_encoded_utf8_cut( $encoded, $length = 0 ) { + if ( $length < 1 ) + return $encoded; + + $r = ''; + $values = preg_split( '/(%[0-9a-f]{2})/i', $encoded, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );; + + for ($i = 0; $i < count( $values ); $i += $num_octets ) { + $num_octets = 1; + if ( '%' != $values[$i][0] ) { + $r .= $values[$i]; + if ( $length && strlen($r) > $length ) + return substr($r, 0, $length); + } else { + $value = hexdec(substr($values[$i], 1)); + + if ( 1 == $num_octets ) + $num_octets = ( 224 > $value ) ? 2 : 3; + + if ( $length && ( strlen($r) + $num_octets * 3 ) > $length ) + return $r; + + $r .= $values[$i] . $values[$i + 1]; + if ( 3 == $num_octets ) + $r .= $values[$i + 2]; + } + } + + return $r; +} + +function bb_pre_term_slug( $slug, $taxonomy = '', $term_id = 0 ) { + return bb_sanitize_with_dashes( $slug, 200 ); +} + +function bb_trim_for_db_55( $string ) { + return bb_trim_for_db( $string, 55 ); +} + +function bb_trim_for_db_150( $string ) { + return bb_trim_for_db( $string, 150 ); +} + +function bb_slug_sanitize( $slug, $length = 255 ) { + $_slug = $slug; + return apply_filters( 'bb_slug_sanitize', bb_sanitize_with_dashes( $slug, $length ), $_slug, $length ); +} + +function bb_user_nicename_sanitize( $user_nicename, $length = 50 ) { + $_user_nicename = $user_nicename; + return apply_filters( 'bb_user_nicename_sanitize', bb_sanitize_with_dashes( $user_nicename, $length ), $_user_nicename, $length ); +} + +function bb_sanitize_with_dashes( $text, $length = 0 ) { // Multibyte aware + $_text = $text; + $text = trim($text); + $text = strip_tags($text); + // Preserve escaped octets. + $text = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $text); + // Remove percent signs that are not part of an octet. + $text = str_replace('%', '', $text); + // Restore octets. + $text = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $text); + + $text = apply_filters( 'pre_sanitize_with_dashes', $text, $_text, $length ); + + $text = strtolower($text); + $text = preg_replace('/&(^\x80-\xff)+?;/', '', $text); // kill entities + $text = preg_replace('/[^%a-z0-9\x80-\xff _-]/', '', $text); + $text = trim($text); + $text = preg_replace('/\s+/', '-', $text); + $text = preg_replace(array('|-+|', '|_+|'), array('-', '_'), $text); // Kill the repeats + + return $text; +} + +function bb_pre_sanitize_with_dashes_utf8( $text, $_text = '', $length = 0 ) { + $text = remove_accents($text); + + if ( seems_utf8( $text ) ) { + if ( function_exists('mb_strtolower') ) + $text = mb_strtolower($text, 'UTF-8'); + $text = utf8_uri_encode( $text, $length ); + } + + return $text; +} + +function bb_show_topic_context( $term, $text ) { + $text = strip_tags( $text ); + $term = preg_quote( $term ); + $text = preg_replace( "|.*?(.{0,80})$term(.{0,80}).*|is", "$1$term$2", $text, 1 ); + $text = substr( $text, 0, 210 ); + return $text; +} + +function bb_post_text_context( $post_text ) { + return bb_show_context( $GLOBALS['q'], $post_text ); +} + +function bb_show_context( $term, $text ) { + $text = strip_shortcodes( $text ); + $text = strip_tags( $text ); + $term = preg_quote( $term ); + $text = preg_replace( "|.*?(.{0,80})$term(.{0,80}).*|is", "... $1$term$2 ...", $text, 1 ); + $text = substr( $text, 0, 210 ); + return $text; +} + +function bb_fix_link( $link ) { + if ( false === strpos($link, '.') ) // these are usually random words + return ''; + $link = wp_kses_no_null( $link ); + return esc_url( $link ); +} + +function bb_sticky_label( $label ) { + global $topic; + if (bb_is_front()) { + if ( '2' === $topic->topic_sticky ) { + return sprintf(__('[sticky] %s'), $label); + } + } else { + if ( '1' === $topic->topic_sticky || '2' === $topic->topic_sticky ) { + return sprintf(__('[sticky] %s'), $label); + } + } + return $label; +} + +function bb_closed_label( $label ) { + global $topic; + if ( '0' === $topic->topic_open ) + return sprintf(__('[closed] %s'), $label); + return $label; +} + +function bb_make_link_view_all( $link ) { + return esc_html( add_query_arg( 'view', 'all', $link ) ); +} + +function bb_gmtstrtotime( $string ) { + if ( is_numeric($string) ) + return $string; + if ( !is_string($string) ) + return -1; + + if ( stristr($string, 'utc') || stristr($string, 'gmt') || stristr($string, '+0000') ) + return strtotime($string); + + if ( -1 == $time = strtotime($string . ' +0000') ) + return strtotime($string); + + return $time; +} + +/** + * Converts a number of characters from a string. + * + * Metadata tags <> and <<category>> are removed, <<br>> and <<hr>> are + * converted into correct XHTML and Unicode characters are converted to the + * valid range. + * + * @param string $content String of characters to be converted. + * + * @return string Converted string. + */ +function bb_convert_chars( $content ) { + // Translation of invalid Unicode references range to valid range + $wp_htmltranswinuni = array( + '€' => '€', // the Euro sign + '' => '', + '‚' => '‚', // these are Windows CP1252 specific characters + 'ƒ' => 'ƒ', // they would look weird on non-Windows browsers + '„' => '„', + '…' => '…', + '†' => '†', + '‡' => '‡', + 'ˆ' => 'ˆ', + '‰' => '‰', + 'Š' => 'Š', + '‹' => '‹', + 'Œ' => 'Œ', + '' => '', + 'Ž' => 'ž', + '' => '', + '' => '', + '‘' => '‘', + '’' => '’', + '“' => '“', + '”' => '”', + '•' => '•', + '–' => '–', + '—' => '—', + '˜' => '˜', + '™' => '™', + 'š' => 'š', + '›' => '›', + 'œ' => 'œ', + '' => '', + 'ž' => '', + 'Ÿ' => 'Ÿ' + ); + + // Remove metadata tags + $content = preg_replace( '/<title>(.+?)<\/title>/', '', $content ); + $content = preg_replace( '/<category>(.+?)<\/category>/', '', $content ); + + // Converts lone & characters into & (a.k.a. &) + $content = preg_replace( '/&([^#])(?![a-z1-4]{1,8};)/i', '&$1', $content ); + + // Fix Word pasting + $content = strtr( $content, $wp_htmltranswinuni ); + + // Just a little XHTML help + $content = str_replace( '<br>', '<br />', $content ); + $content = str_replace( '<hr>', '<hr />', $content ); + + return $content; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-forums.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-forums.php new file mode 100644 index 0000000..85e6f1e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-forums.php @@ -0,0 +1,157 @@ +<?php + +/* Forums */ + +function bb_get_forums_hierarchical( $root = 0, $depth = 0, $leaves = false, $_recursed = false ) { + static $_leaves = false; + + if (!$_recursed) + $_leaves = false; + + $root = (int) $root; + + if ( false === $_leaves ) + $_leaves = $leaves ? $leaves : bb_get_forums(); + + if ( !$_leaves ) + return false; + + $branch = array(); + + reset($_leaves); + + while ( list($l, $leaf) = each($_leaves) ) { + if ( $root == $leaf->forum_parent ) { + $new_root = (int) $leaf->forum_id; + unset($_leaves[$l]); + $branch[$new_root] = 1 == $depth ? true : bb_get_forums_hierarchical( $new_root, $depth - 1, false, true ); + reset($_leaves); + } + } + + if ( !$_recursed ) { + if ( !$root ) + foreach ( $_leaves as $leaf ) // Attach orphans to root + $branch[$leaf->forum_id] = true; + $_leaves = false; + return ( empty($branch) ? false : $branch ); + } + + return $branch ? $branch : true; +} + +function _bb_get_cached_data( $keys, $group, $callback ) { + $return = array(); + foreach ( $keys as $key ) { + // should use wp_cache_get_multi if available + if ( false === $value = wp_cache_get( $key, $group ) ) { + if ( !$value = call_user_func( $callback, $key ) ) { + continue; + } + } + $return[$key] = $value; + } + return $return; +} + +// 'where' arg provided for backward compatibility only +function bb_get_forums( $args = null ) { + global $bbdb; + + if ( is_numeric($args) ) { + $args = array( 'child_of' => $args, 'hierarchical' => 1, 'depth' => 0 ); + } elseif ( is_callable($args) ) { + $args = array( 'callback' => $args ); + if ( 1 < func_num_args() ) + $args['callback_args'] = func_get_arg(1); + } + + $defaults = array( 'callback' => false, 'callback_args' => false, 'child_of' => 0, 'hierarchical' => 0, 'depth' => 0, 'cut_branch' => 0, 'where' => '', 'order_by' => 'forum_order' ); + $args = wp_parse_args( $args, $defaults ); + + extract($args, EXTR_SKIP); + $child_of = (int) $child_of; + $hierarchical = 'false' === $hierarchical ? false : (bool) $hierarchical; + $depth = (int) $depth; + + $where = apply_filters( 'get_forums_where', $where ); + $key = md5( serialize( $where . '|' . $order_by ) ); // The keys that change the SQL query + if ( false !== $forum_ids = wp_cache_get( $key, 'bb_forums' ) ) { + $forums = _bb_get_cached_data( $forum_ids, 'bb_forum', 'bb_get_forum' ); + } else { + $forum_ids = array(); + $forums = array(); + $_forums = (array) $bbdb->get_results("SELECT * FROM $bbdb->forums $where ORDER BY `$order_by`;"); + $_forums = bb_append_meta( $_forums, 'forum' ); + foreach ( $_forums as $f ) { + $forums[(int) $f->forum_id] = $f; + $forum_ids[] = (int) $f->forum_id; + wp_cache_add( $f->forum_id, $f, 'bb_forum' ); + wp_cache_add( $f->forum_slug, $f->forum_id, 'bb_forum_slug' ); + } + wp_cache_set( $key, $forum_ids, 'bb_forums' ); + } + + $forums = (array) apply_filters( 'get_forums', $forums ); + + if ( $child_of || $hierarchical || $depth ) { + + $_forums = bb_get_forums_hierarchical( $child_of, $depth, $forums ); + + if ( !is_array( $_forums ) ) + return false; + + $_forums = (array) bb_flatten_array( $_forums, $cut_branch ); + + foreach ( array_keys($_forums) as $_id ) + $_forums[$_id] = $forums[$_id]; + + $forums = $_forums; + } + + if ( !is_callable($callback) ) + return $forums; + + if ( !is_array($callback_args) ) + $callback_args = array(); + + foreach ( array_keys($forums) as $f ) : + $_callback_args = $callback_args; + array_push( $_callback_args, $forums[$f]->forum_id ); + if ( false == call_user_func_array( $callback, $_callback_args ) ) // $forum_id will be last arg; + unset($forums[$f]); + endforeach; + return $forums; +} + +function bb_get_forum( $id ) { + global $bbdb; + + if ( !is_numeric($id) ) { + list($slug, $sql) = bb_get_sql_from_slug( 'forum', $id ); + $id = wp_cache_get( $slug, 'bb_forum_slug' ); + } + + // not else + if ( is_numeric($id) ) + $sql = $bbdb->prepare( "forum_id = %d", $id ); + + if ( 0 === $id || empty( $sql ) ) + return false; + + // $where is NOT bbdb:prepared + if ( $where = apply_filters( 'get_forum_where', '' ) ) { + $forum = $bbdb->get_row( "SELECT * FROM $bbdb->forums WHERE $sql $where" ); + return bb_append_meta( $forum, 'forum' ); + } + + if ( is_numeric($id) && false !== $forum = wp_cache_get( $id, 'bb_forum' ) ) + return $forum; + + $forum = $bbdb->get_row( "SELECT * FROM $bbdb->forums WHERE $sql" ); + $forum = bb_append_meta( $forum, 'forum' ); + wp_cache_set( $forum->forum_id, $forum, 'bb_forum' ); + wp_cache_add( $forum->forum_slug, $forum->forum_id, 'bb_forum_slug' ); + + return $forum; +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-l10n.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-l10n.php new file mode 100644 index 0000000..7eeb5be --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-l10n.php @@ -0,0 +1,490 @@ +<?php +/** + * bbPress Translation API + * + * @package bbPress + * @subpackage i18n + */ + +/** + * Gets the current locale. + * + * If the locale is set, then it will filter the locale in the 'locale' filter + * hook and return the value. + * + * If the locale is not set already, then the BB_LANG constant is used if it is + * defined. Then it is filtered through the 'locale' filter hook and the value + * for the locale global set and the locale is returned. + * + * The process to get the locale should only be done once but the locale will + * always be filtered using the 'locale' hook. + * + * @since 0.7.2 + * @uses apply_filters() Calls 'locale' hook on locale value. + * @uses $locale Gets the locale stored in the global. + * + * @return string The locale of the blog or from the 'locale' hook. + */ +function bb_get_locale() { + global $locale; + + if (isset($locale)) + return apply_filters( 'locale', $locale ); + + // BB_LANG is defined in bb-config.php + if (defined('BB_LANG')) + $locale = BB_LANG; + + if (empty($locale)) + $locale = 'en_US'; + + return apply_filters('locale', $locale); +} + +if ( !function_exists( 'get_locale' ) ) : +function get_locale() { + return bb_get_locale(); +} +endif; + +if ( !function_exists( 'translate' ) ) : +/** + * Retrieves the translation of $text. If there is no translation, or + * the domain isn't loaded the original text is returned. + * + * @see __() Don't use translate() directly, use __() + * @since 1.0 + * @uses apply_filters() Calls 'gettext' on domain translated text + * with the untranslated text as second parameter. + * + * @param string $text Text to translate. + * @param string $domain Domain to retrieve the translated text. + * @return string Translated text + */ +function translate( $text, $domain = 'default' ) { + $translations = &get_translations_for_domain( $domain ); + return apply_filters('gettext', $translations->translate($text), $text, $domain); +} +endif; + +if ( !function_exists( 'before_last_bar' ) ) : +/** + * @since 1.0 + */ +function before_last_bar( $string ) { + $last_bar = strrpos( $string, '|' ); + if ( false == $last_bar ) + return $string; + else + return substr( $string, 0, $last_bar ); +} +endif; + +if ( !function_exists( 'translate_with_context' ) ) : +/** + * Translate $text like translate(), but assumes that the text + * contains a context after its last vertical bar. + * + * @since 1.0 + * @uses translate() + * + * @param string $text Text to translate + * @param string $domain Domain to retrieve the translated text + * @return string Translated text + */ +function translate_with_context( $text, $domain = 'default' ) { + return before_last_bar( translate( $text, $domain ) ); + +} +endif; + +if ( !function_exists( 'translate_with_gettext_context' ) ) : +/** + * @since 1.0 + */ +function translate_with_gettext_context( $text, $context, $domain = 'default' ) { + $translations = &get_translations_for_domain( $domain ); + return apply_filters( 'gettext_with_context', $translations->translate( $text, $context ), $text, $context, $domain); +} +endif; + +if ( !function_exists( '__' ) ) : +/** + * Retrieves the translation of $text. If there is no translation, or + * the domain isn't loaded the original text is returned. + * + * @see translate() An alias of translate() + * @since 0.7.2 + * + * @param string $text Text to translate + * @param string $domain Optional. Domain to retrieve the translated text + * @return string Translated text + */ +function __( $text, $domain = 'default' ) { + return translate( $text, $domain ); +} +endif; + +if ( !function_exists( 'esc_attr__' ) ) : +/** + * Retrieves the translation of $text and escapes it for safe use in an attribute. + * If there is no translation, or the domain isn't loaded the original text is returned. + * + * @see translate() An alias of translate() + * @see esc_attr() + * @since 1.0 + * + * @param string $text Text to translate + * @param string $domain Optional. Domain to retrieve the translated text + * @return string Translated text + */ +function esc_attr__( $text, $domain = 'default' ) { + return esc_attr( translate( $text, $domain ) ); +} +endif; + +if ( !function_exists( 'esc_html__' ) ) : +/** + * Retrieves the translation of $text and escapes it for safe use in HTML output. + * If there is no translation, or the domain isn't loaded the original text is returned. + * + * @see translate() An alias of translate() + * @see esc_html() + * @since 1.0 + * + * @param string $text Text to translate + * @param string $domain Optional. Domain to retrieve the translated text + * @return string Translated text + */ +function esc_html__( $text, $domain = 'default' ) { + return esc_html( translate( $text, $domain ) ); +} +endif; + +if ( !function_exists( '_e' ) ) : +/** + * Displays the returned translated text from translate(). + * + * @see translate() Echos returned translate() string + * @since 0.7.2 + * + * @param string $text Text to translate + * @param string $domain Optional. Domain to retrieve the translated text + */ +function _e( $text, $domain = 'default' ) { + echo translate( $text, $domain ); +} +endif; + +if ( !function_exists( 'esc_attr_e' ) ) : +/** + * Displays translated text that has been escaped for safe use in an attribute. + * + * @see translate() Echoes returned translate() string + * @see esc_attr() + * @since 1.0 + * + * @param string $text Text to translate + * @param string $domain Optional. Domain to retrieve the translated text + */ +function esc_attr_e( $text, $domain = 'default' ) { + echo esc_attr( translate( $text, $domain ) ); +} +endif; + +if ( !function_exists( 'esc_html_e' ) ) : +/** + * Displays translated text that has been escaped for safe use in HTML output. + * + * @see translate() Echoes returned translate() string + * @see esc_html() + * @since 1.0 + * + * @param string $text Text to translate + * @param string $domain Optional. Domain to retrieve the translated text + */ +function esc_html_e( $text, $domain = 'default' ) { + echo esc_html( translate( $text, $domain ) ); +} +endif; + +if ( !function_exists( '_c' ) ) : +/** + * Retrieve translated string with vertical bar context + * + * Quite a few times, there will be collisions with similar translatable text + * found in more than two places but with different translated context. + * + * In order to use the separate contexts, the _c() function is used and the + * translatable string uses a pipe ('|') which has the context the string is in. + * + * When the translated string is returned, it is everything before the pipe, not + * including the pipe character. If there is no pipe in the translated text then + * everything is returned. + * + * @since 1.0 + * + * @param string $text Text to translate + * @param string $domain Optional. Domain to retrieve the translated text + * @return string Translated context string without pipe + */ +function _c($text, $domain = 'default') { + return translate_with_context($text, $domain); +} +endif; + +if ( !function_exists( '_x' ) ) : +/** + * @since 1.0 + */ +function _x( $single, $context, $domain = 'default' ) { + return translate_with_gettext_context( $single, $context, $domain ); +} +endif; + +if ( !function_exists( 'esc_attr_x' ) ) : +function esc_attr_x( $single, $context, $domain = 'default' ) { + return esc_attr( translate_with_gettext_context( $single, $context, $domain ) ); +} +endif; + +if ( !function_exists( '__ngettext' ) ) : +/** + * @deprecated Use _n() + */ +function __ngettext() { + //_deprecated_function( __FUNCTION__, '2.8', '_n()' ); + $args = func_get_args(); + return call_user_func_array('_n', $args); +} +endif; + +if ( !function_exists( '_n' ) ) : +/** + * Retrieve the plural or single form based on the amount. + * + * If the domain is not set in the $l10n list, then a comparsion will be made + * and either $plural or $single parameters returned. + * + * If the domain does exist, then the parameters $single, $plural, and $number + * will first be passed to the domain's ngettext method. Then it will be passed + * to the 'ngettext' filter hook along with the same parameters. The expected + * type will be a string. + * + * @since 1.0 + * @uses $l10n Gets list of domain translated string (gettext_reader) objects + * @uses apply_filters() Calls 'ngettext' hook on domains text returned, + * along with $single, $plural, and $number parameters. Expected to return string. + * + * @param string $single The text that will be used if $number is 1 + * @param string $plural The text that will be used if $number is not 1 + * @param int $number The number to compare against to use either $single or $plural + * @param string $domain Optional. The domain identifier the text should be retrieved in + * @return string Either $single or $plural translated text + */ +function _n($single, $plural, $number, $domain = 'default') { + $translations = &get_translations_for_domain( $domain ); + $translation = $translations->translate_plural( $single, $plural, $number ); + return apply_filters( 'ngettext', $translation, $single, $plural, $number ); +} +endif; + +if ( !function_exists( '_nc' ) ) : +/** + * @see _n() A version of _n(), which supports contexts -- + * strips everything from the translation after the last bar + * @since 1.0 + */ +function _nc( $single, $plural, $number, $domain = 'default' ) { + return before_last_bar( _n( $single, $plural, $number, $domain ) ); +} +endif; + +if ( !function_exists( '_nx' ) ) : +/** + * @since 1.0 + */ +function _nx($single, $plural, $number, $context, $domain = 'default') { + $translations = &get_translations_for_domain( $domain ); + $translation = $translations->translate_plural( $single, $plural, $number, $context ); + return apply_filters( 'ngettext_with_context ', $translation, $single, $plural, $number, $context ); +} +endif; + +if ( !function_exists( '__ngettext_noop' ) ) : +/** + * @deprecated Use _n_noop() + */ +function __ngettext_noop() { + //_deprecated_function( __FUNCTION__, '2.8', '_n_noop()' ); + $args = func_get_args(); + return call_user_func_array('_n_noop', $args); +} +endif; + +if ( !function_exists( '_n_noop' ) ) : +/** + * Register plural strings in POT file, but don't translate them. + * + * Used when you want do keep structures with translatable plural strings and + * use them later. + * + * Example: + * $messages = array( + * 'post' => _n_noop('%s post', '%s posts'), + * 'page' => _n_noop('%s pages', '%s pages') + * ); + * ... + * $message = $messages[$type]; + * $usable_text = sprintf(_n($message[0], $message[1], $count), $count); + * + * @since 1.0 + * @param $single Single form to be i18ned + * @param $plural Plural form to be i18ned + * @return array array($single, $plural) + */ +function _n_noop( $single, $plural ) { + return array( $single, $plural ); +} +endif; + +if ( !function_exists( '_nx_noop' ) ) : +/** + * Register plural strings with context in POT file, but don't translate them. + * + * @see _n_noop() + */ +function _nx_noop( $single, $plural, $context ) { + return array( $single, $plural, $context ); +} +endif; + +if ( !function_exists( 'load_textdomain' ) ) : +/** + * Loads MO file into the list of domains. + * + * If the domain already exists, the inclusion will fail. If the MO file is not + * readable, the inclusion will fail. + * + * On success, the mofile will be placed in the $l10n global by $domain and will + * be an gettext_reader object. + * + * @since 0.7.2 + * @uses $l10n Gets list of domain translated string (gettext_reader) objects + * @uses CacheFileReader Reads the MO file + * @uses gettext_reader Allows for retrieving translated strings + * + * @param string $domain Unique identifier for retrieving translated strings + * @param string $mofile Path to the .mo file + * @return null On failure returns null and also on success returns nothing. + */ +function load_textdomain($domain, $mofile) { + global $l10n; + + if ( !is_readable($mofile)) return; + + $mo = new MO(); + $mo->import_from_file( $mofile ); + + if (isset($l10n[$domain])) + $mo->merge_with( $l10n[$domain] ); + + $l10n[$domain] = &$mo; +} +endif; + +/** + * Loads default translated strings based on locale. + * + * Loads the .mo file in WP_LANG_DIR constant path from WordPress root. The + * translated (.mo) file is named based off of the locale. + * + * @since 1.5.0 + */ +function bb_load_default_textdomain() { + $locale = bb_get_locale(); + + $mofile = BB_LANG_DIR . "/$locale.mo"; + + load_textdomain('default', $mofile); +} + +if ( !function_exists( 'load_default_textdomain' ) ) : +function load_default_textdomain() { + bb_load_default_textdomain(); +} +endif; + +/** + * Loads the plugin's translated strings. + * + * If the path is not given then it will be the root of the plugin directory. + * The .mo file should be named based on the domain with a dash followed by a + * dash, and then the locale exactly. + * + * @since 0.7.2 + * + * @param string $domain Unique identifier for retrieving translated strings + * @param string $path Optional. Absolute path to folder where the .mo file resides + */ +function bb_load_plugin_textdomain($domain, $path = false) { + $locale = bb_get_locale(); + + if ( false === $path ) { + global $bb; + $path = $bb->plugin_locations['core']['dir']; + } + + $mofile = rtrim( trim( $path ), " \t\n\r\0\x0B/" ) . '/'. $domain . '-' . $locale . '.mo'; + load_textdomain($domain, $mofile); +} + +if ( !function_exists( 'load_plugin_textdomain' ) ) : +function load_plugin_textdomain( $domain, $path = false ) { + bb_load_plugin_textdomain( $domain, $path ); +} +endif; + +/** + * Loads the theme's translated strings. + * + * If the current locale exists as a .mo file in the theme's root directory, it + * will be included in the translated strings by the $domain. + * + * The .mo files must be named based on the locale exactly. + * + * @since 0.7.2 + * + * @param string $domain Unique identifier for retrieving translated strings + */ +function bb_load_theme_textdomain($domain, $path = false) { + $locale = bb_get_locale(); + + $mofile = ( empty( $path ) ) ? bb_get_template( $locale . '.mo' ) : "$path/$locale.mo"; + + load_textdomain($domain, $mofile); +} + +if ( !function_exists( 'load_theme_textdomain' ) ) : +function load_theme_textdomain( $domain, $path = false ) { + bb_load_theme_textdomain( $domain, $path ); +} +endif; + +if ( !function_exists( 'get_translations_for_domain' ) ) : +/** + * Returns the Translations instance for a domain. If there isn't one, + * returns empty Translations instance. + * + * @param string $domain + * @return object A Translation instance + */ +function &get_translations_for_domain( $domain ) { + global $l10n; + $empty =& new Translations; + if ( isset($l10n[$domain]) ) + return $l10n[$domain]; + else + return $empty; +} +endif; diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-meta.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-meta.php new file mode 100644 index 0000000..edcda6d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-meta.php @@ -0,0 +1,940 @@ +<?php + +/* Options/Meta */ + +/* Internal */ + +function bb_sanitize_meta_key( $key ) +{ + return preg_replace( '|[^a-z0-9_]|i', '', $key ); +} + +/** + * Adds and updates meta data in the database + * + * @internal + */ +function bb_update_meta( $object_id = 0, $meta_key, $meta_value, $type, $global = false ) +{ + global $bbdb; + if ( !is_numeric( $object_id ) || empty( $object_id ) && !$global ) { + return false; + } + $cache_object_id = $object_id = (int) $object_id; + switch ( $type ) { + case 'option': + $object_type = 'bb_option'; + break; + case 'user' : + global $wp_users_object; + $id = $object_id; + $return = $wp_users_object->update_meta( compact( 'id', 'meta_key', 'meta_value' ) ); + if ( is_wp_error( $return ) ) { + return false; + } + return $return; + break; + case 'forum' : + $object_type = 'bb_forum'; + break; + case 'topic' : + $object_type = 'bb_topic'; + break; + case 'post' : + $object_type = 'bb_post'; + break; + default : + $object_type = $type; + break; + } + + $meta_key = bb_sanitize_meta_key( $meta_key ); + + $meta_tuple = compact( 'object_type', 'object_id', 'meta_key', 'meta_value', 'type' ); + $meta_tuple = apply_filters( 'bb_update_meta', $meta_tuple ); + extract( $meta_tuple, EXTR_OVERWRITE ); + + $meta_value = $_meta_value = maybe_serialize( $meta_value ); + $meta_value = maybe_unserialize( $meta_value ); + + $cur = $bbdb->get_row( $bbdb->prepare( "SELECT * FROM `$bbdb->meta` WHERE `object_type` = %s AND `object_id` = %d AND `meta_key` = %s", $object_type, $object_id, $meta_key ) ); + if ( !$cur ) { + $bbdb->query( $bbdb->prepare( + "INSERT INTO `$bbdb->meta` ( `object_type`, `object_id`, `meta_key`, `meta_value` ) VALUES( %s, %d, %s, %s ) + ON DUPLICATE KEY UPDATE `meta_value` = VALUES( `meta_value` )", + $object_type, $object_id, $meta_key, $_meta_value + ) ); + } elseif ( $cur->meta_value != $meta_value ) { + $bbdb->update( $bbdb->meta, array( 'meta_value' => $_meta_value), array( 'object_type' => $object_type, 'object_id' => $object_id, 'meta_key' => $meta_key ) ); + } + + if ( $object_type === 'bb_option' ) { + $cache_object_id = $meta_key; + wp_cache_delete( $cache_object_id, 'bb_option_not_set' ); + } + wp_cache_delete( $cache_object_id, $object_type ); + + if ( !$cur ) { + return true; + } +} + +/** + * Deletes meta data from the database + * + * @internal + */ +function bb_delete_meta( $object_id = 0, $meta_key, $meta_value, $type, $global = false ) +{ + global $bbdb; + if ( !is_numeric( $object_id ) || empty( $object_id ) && !$global ) { + return false; + } + $cache_object_id = $object_id = (int) $object_id; + switch ( $type ) { + case 'option': + $object_type = 'bb_option'; + break; + case 'user': + global $wp_users_object; + $id = $object_id; + return $wp_users_object->delete_meta( compact( 'id', 'meta_key', 'meta_value' ) ); + break; + case 'forum': + $object_type = 'bb_forum'; + break; + case 'topic': + $object_type = 'bb_topic'; + break; + case 'post': + $object_type = 'bb_post'; + break; + default: + $object_type = $type; + break; + } + + $meta_key = bb_sanitize_meta_key( $meta_key ); + + $meta_tuple = compact( 'object_type', 'object_id', 'meta_key', 'meta_value', 'type' ); + $meta_tuple = apply_filters( 'bb_delete_meta', $meta_tuple ); + extract( $meta_tuple, EXTR_OVERWRITE ); + + $meta_value = maybe_serialize( $meta_value ); + + if ( empty( $meta_value ) ) { + $meta_sql = $bbdb->prepare( "SELECT `meta_id` FROM `$bbdb->meta` WHERE `object_type` = %s AND `object_id` = %d AND `meta_key` = %s", $object_type, $object_id, $meta_key ); + } else { + $meta_sql = $bbdb->prepare( "SELECT `meta_id` FROM `$bbdb->meta` WHERE `object_type` = %s AND `object_id` = %d AND `meta_key` = %s AND `meta_value` = %s", $object_type, $object_id, $meta_key, $meta_value ); + } + + if ( !$meta_id = $bbdb->get_var( $meta_sql ) ) { + return false; + } + + $bbdb->query( $bbdb->prepare( "DELETE FROM `$bbdb->meta` WHERE `meta_id` = %d", $meta_id ) ); + + if ( $object_type == 'bb_option' ) { + $cache_object_id = $meta_key; + wp_cache_delete( $cache_object_id, 'bb_option_not_set' ); + } + wp_cache_delete( $cache_object_id, $object_type ); + return true; +} + +/** + * Adds an objects meta data to the object + * + * This is the only function that should add to user / topic - NOT bbdb::prepared + * + * @internal + */ +function bb_append_meta( $object, $type ) +{ + global $bbdb; + switch ( $type ) { + case 'user': + global $wp_users_object; + return $wp_users_object->append_meta( $object ); + break; + case 'forum': + $object_id_column = 'forum_id'; + $object_type = 'bb_forum'; + $slug = 'forum_slug'; + break; + case 'topic': + $object_id_column = 'topic_id'; + $object_type = 'bb_topic'; + $slug = 'topic_slug'; + break; + case 'post': + $object_id_column = 'post_id'; + $object_type = 'bb_post'; + $slug = false; + break; + } + + if ( is_array( $object ) && count( $object ) ) { + $trans = array(); + foreach ( array_keys( $object ) as $i ) { + $trans[$object[$i]->$object_id_column] =& $object[$i]; + } + $ids = array_map( 'intval', array_keys( $trans ) ); + $query_ids = array(); + $cached_objects = array(); + $position = 0; + foreach ( $ids as $_id ) { + if ( false !== $_cached_object = wp_cache_get( $_id, $object_type ) ) { + $cached_objects[$position] = $_cached_object; + } else { + $query_ids[$position] = $_id; + } + $position++; + } + if ( !count( $query_ids ) ) { + return $cached_objects; + } + + $_query_ids = $query_ids; + sort( $_query_ids ); + $_query_ids = join( ',', $_query_ids ); + + if ( $metas = $bbdb->get_results( "SELECT `object_id`, `meta_key`, `meta_value` FROM `$bbdb->meta` WHERE `object_type` = '$object_type' AND `object_id` IN ($_query_ids) /* bb_append_meta */" ) ) { + usort( $metas, '_bb_append_meta_sort' ); + foreach ( $metas as $meta ) { + $trans[$meta->object_id]->{$meta->meta_key} = maybe_unserialize( $meta->meta_value ); + if ( strpos($meta->meta_key, $bbdb->prefix) === 0 ) { + $trans[$meta->object_id]->{substr($meta->meta_key, strlen($bbdb->prefix))} = maybe_unserialize( $meta->meta_value ); + } + } + } + foreach ( $query_ids as $position => $i ) { + $cached_objects[$position] = $trans[$i]; + wp_cache_add( $i, $trans[$i], $object_type ); + if ( $slug ) { + wp_cache_add( $trans[$i]->$slug, $i, 'bb_' . $slug ); + } + } + if ( !count( $cached_objects ) ) { + return $object; + } + ksort( $cached_objects ); + + return $cached_objects; + } elseif ( $object ) { + if ( false !== $cached_object = wp_cache_get( $object->$object_id_column, $object_type ) ) { + return $cached_object; + } + if ( $metas = $bbdb->get_results( $bbdb->prepare( "SELECT `object_id`, `meta_key`, `meta_value` FROM `$bbdb->meta` WHERE `object_type` = '$object_type' AND `object_id` = %d /* bb_append_meta */", $object->$object_id_column ) ) ) { + usort( $metas, '_bb_append_meta_sort' ); + foreach ( $metas as $meta ) { + $object->{$meta->meta_key} = maybe_unserialize( $meta->meta_value ); + if ( strpos( $meta->meta_key, $bbdb->prefix ) === 0 ) { + $object->{substr( $meta->meta_key, strlen( $bbdb->prefix ) )} = $object->{$meta->meta_key}; + } + } + } + if ( $object->$object_id_column ) { + wp_cache_add( $object->$object_id_column, $object, $object_type ); + if ( $slug ) { + wp_cache_add( $object->$slug, $object->$object_id_column, 'bb_' . $slug ); + } + } + return $object; + } +} + +/** + * Sorts meta keys by length to ensure $appended_object->{$bbdb->prefix} key overwrites $appended_object->key as desired + * + * @internal + */ +function _bb_append_meta_sort( $a, $b ) +{ + return strlen( $a->meta_key ) - strlen( $b->meta_key ); +} + + + +/* Options */ + +/** + * Echoes the requested bbPress option by calling bb_get_option() + * + * @param string The option to be echoed + * @return void + */ +function bb_option( $option ) +{ + echo apply_filters( 'bb_option_' . $option, bb_get_option( $option ) ); +} + +/** + * Returns the requested bbPress option from the meta table or the $bb object + * + * @param string The option to be echoed + * @return mixed The value of the option + */ +function bb_get_option( $option ) +{ + // Allow plugins to short-circuit options. + if ( false !== $r = apply_filters( 'bb_pre_get_option_' . $option, false, $option ) ) { + return $r; + } + + global $bb; + + switch ( $option ) { + case 'site_id': + if ( isset( $bb->site_id ) && is_numeric( $bb->site_id ) ) { + $r = (int) $bb->site_id; + } else { + $r = 1; + } + break; + case 'language': + $r = str_replace( '_', '-', bb_get_locale() ); + break; + case 'text_direction': + global $bb_locale; + $r = $bb_locale->text_direction; + break; + case 'version': + return '1.1'; // Don't filter + break; + case 'bb_db_version' : + return '2471'; // Don't filter + break; + case 'html_type': + $r = 'text/html'; + break; + case 'charset': + $r = 'UTF-8'; + break; + case 'bb_table_prefix': + case 'table_prefix': + global $bbdb; + return $bbdb->prefix; // Don't filter; + break; + case 'url': + $option = 'uri'; + default: + if ( isset( $bb->$option ) ) { + $r = $bb->$option; + if ( $option === 'mod_rewrite' ) { + if ( is_bool( $r ) ) { + $r = (int) $r; + } + } + break; + } + + $r = bb_get_option_from_db( $option ); + + if ( !$r ) { + switch ( $option ) { + case 'name': + $r = __( 'Please give me a name!' ); + break; + case 'wp_table_prefix' : + global $wp_table_prefix; // This global is deprecated + return $wp_table_prefix; // Don't filter; + break; + case 'mod_rewrite': + $r = 0; + break; + case 'page_topics': + $r = 30; + break; + case 'edit_lock': + $r = 60; + break; + case 'gmt_offset': + $r = 0; + break; + case 'uri_ssl': + $r = preg_replace( '|^http://|i', 'https://', bb_get_option( 'uri' ) ); + break; + case 'throttle_time': + $r = 30; + break; + case 'email_login': + $r = false; + break; + } + } + break; + } + + return apply_filters( 'bb_get_option_' . $option, $r, $option ); +} + +/** + * Retrieves and returns the requested bbPress option from the meta table + * + * @param string The option to be echoed + * @return void + */ +function bb_get_option_from_db( $option ) +{ + global $bbdb; + $option = bb_sanitize_meta_key( $option ); + + if ( wp_cache_get( $option, 'bb_option_not_set' ) ) { + $r = null; + } elseif ( false !== $_r = wp_cache_get( $option, 'bb_option' ) ) { + $r = $_r; + } else { + if ( BB_INSTALLING ) { + $bbdb->suppress_errors(); + } + $row = $bbdb->get_row( $bbdb->prepare( "SELECT `meta_value` FROM `$bbdb->meta` WHERE `object_type` = 'bb_option' AND `meta_key` = %s", $option ) ); + if ( BB_INSTALLING ) { + $bbdb->suppress_errors( false ); + } + + if ( is_object( $row ) ) { + $r = maybe_unserialize( $row->meta_value ); + } else { + $r = null; + } + } + + if ( $r === null ) { + wp_cache_set( $option, true, 'bb_option_not_set' ); + } else { + wp_cache_set( $option, $r, 'bb_option' ); + } + + return apply_filters( 'bb_get_option_from_db_' . $option, $r, $option ); +} + +function bb_form_option( $option ) +{ + echo bb_get_form_option( $option ); +} + +function bb_get_form_option( $option ) +{ + return esc_attr( bb_get_option( $option ) ); +} + +// Don't use the return value; use the API. Only returns options stored in DB. +function bb_cache_all_options() +{ + $base_options = array( + 'site_id', + 'bb_db_version', + 'name', + 'description', + 'uri_ssl', + 'from_email', + 'bb_auth_salt', + 'bb_secure_auth_salt', + 'bb_logged_in_salt', + 'bb_nonce_salt', + 'page_topics', + 'edit_lock', + 'bb_active_theme', + 'active_plugins', + 'mod_rewrite', + 'datetime_format', + 'date_format', + 'avatars_show', + 'avatars_default', + 'avatars_rating', + 'wp_table_prefix', + 'user_bbdb_name', + 'user_bbdb_user', + 'user_bbdb_password', + 'user_bbdb_host', + 'user_bbdb_charset', + 'user_bbdb_collate', + 'custom_user_table', + 'custom_user_meta_table', + 'wp_siteurl', + 'wp_home', + 'cookiedomain', + 'usercookie', + 'passcookie', + 'authcookie', + 'cookiepath', + 'sitecookiepath', + 'secure_auth_cookie', + 'logged_in_cookie', + 'admin_cookie_path', + 'core_plugins_cookie_path', + 'user_plugins_cookie_path', + 'wp_admin_cookie_path', + 'wp_plugins_cookie_path', + 'wordpress_mu_primary_blog_id', + 'enable_loginless', + 'enable_subscriptions', + 'enable_xmlrpc', + 'enable_pingback', + 'throttle_time', + 'bb_xmlrpc_allow_user_switching', + 'bp_bbpress_cron', + 'email_login', + 'static_title', + 'plugin_cookie_paths', + 'wp_roles_map', + 'gmt_offset', + 'timezone_string', + 'name_link_profile', + 'bp_bbpress_cron_check', + ); + + // Check that these aren't already in the cache + $query_options = array(); + foreach ( $base_options as $base_option ) { + if ( isset( $bb->$base_option ) ) { + continue; + } + if ( wp_cache_get( $base_option, 'bb_option_not_set' ) ) { + continue; + } + if ( false === wp_cache_get( $base_option, 'bb_option' ) ) { + $query_options[] = $base_option; + wp_cache_set( $base_option, true, 'bb_option_not_set' ); + } + } + if ( !count( $query_options ) ) { + // It's all in cache + return true; + } + + $query_keys = "('" . join( "','", $query_options ) . "')"; + + global $bbdb; + $results = $bbdb->get_results( "SELECT `meta_key`, `meta_value` FROM `$bbdb->meta` WHERE `object_type` = 'bb_option' AND `meta_key` IN $query_keys;" ); + + if ( count( $base_options ) === count( $query_options ) && ( !$results || !is_array( $results ) || !count( $results ) ) ) { + // Let's assume that the options haven't been populated from the old topicmeta table + if ( !BB_INSTALLING && ( !defined( 'BB_DO_NOT_UPGRADE_TOPICMETA' ) || !BB_DO_NOT_UPGRADE_TOPICMETA ) ) { + $topicmeta_exists = $bbdb->query( "SELECT * FROM $bbdb->topicmeta LIMIT 1" ); + if ($topicmeta_exists) { + require_once( BB_PATH . 'bb-admin/includes/defaults.bb-schema.php' ); + // Create the meta table + $bbdb->query( $bb_queries['meta'] ); + // Copy options + $bbdb->query( "INSERT INTO `$bbdb->meta` (`meta_key`, `meta_value`) SELECT `meta_key`, `meta_value` FROM `$bbdb->topicmeta` WHERE `topic_id` = 0;" ); + // Copy topic meta + $bbdb->query( "INSERT INTO `$bbdb->meta` (`object_id`, `meta_key`, `meta_value`) SELECT `topic_id`, `meta_key`, `meta_value` FROM `$bbdb->topicmeta` WHERE `topic_id` != 0;" ); + // Entries with an object_id are topic meta at this stage + $bbdb->query( "UPDATE `$bbdb->meta` SET `object_type` = 'bb_topic' WHERE `object_id` != 0" ); + } + unset( $topicmeta_exists ); + + return bb_cache_all_options(); + } + + return false; + } else { + foreach ( $results as $options ) { + wp_cache_delete( $options->meta_key, 'bb_option_not_set' ); + wp_cache_set( $options->meta_key, maybe_unserialize( $options->meta_value ), 'bb_option' ); + } + } + + return true; +} + +// Can store anything but NULL. +function bb_update_option( $option, $value ) +{ + return bb_update_meta( 0, $option, $value, 'option', true ); +} + +function bb_delete_option( $option, $value = '' ) +{ + return bb_delete_meta( 0, $option, $value, 'option', true ); +} + +/** + * Delete a transient + * + * @since 1.0 + * @package bbPress + * @subpackage Transient + * + * @param string $transient Transient name. Expected to not be SQL-escaped + * @return bool true if successful, false otherwise + */ +function bb_delete_transient( $transient ) +{ + global $_bb_using_ext_object_cache, $bbdb; + + if ( $_bb_using_ext_object_cache ) { + return wp_cache_delete( $transient, 'transient' ); + } else { + $transient = '_transient_' . $bbdb->escape( $transient ); + return bb_delete_option( $transient ); + } +} + +/** + * Get the value of a transient + * + * If the transient does not exist or does not have a value, then the return value + * will be false. + * + * @since 1.0 + * @package bbPress + * @subpackage Transient + * + * @param string $transient Transient name. Expected to not be SQL-escaped + * @return mixed Value of transient + */ +function bb_get_transient( $transient ) +{ + global $_bb_using_ext_object_cache, $bbdb; + + if ( $_bb_using_ext_object_cache ) { + $value = wp_cache_get( $transient, 'transient' ); + } else { + $transient_option = '_transient_' . $bbdb->escape( $transient ); + $transient_timeout = '_transient_timeout_' . $bbdb->escape( $transient ); + $timeout = bb_get_option( $transient_timeout ); + if ( $timeout && $timeout < time() ) { + bb_delete_option( $transient_option ); + bb_delete_option( $transient_timeout ); + return false; + } + + $value = bb_get_option( $transient_option ); + } + + return apply_filters( 'transient_' . $transient, $value ); +} + +/** + * Set/update the value of a transient + * + * You do not need to serialize values, if the value needs to be serialize, then + * it will be serialized before it is set. + * + * @since 1.0 + * @package bbPress + * @subpackage Transient + * + * @param string $transient Transient name. Expected to not be SQL-escaped + * @param mixed $value Transient value. + * @param int $expiration Time until expiration in seconds, default 0 + * @return bool False if value was not set and true if value was set. + */ +function bb_set_transient( $transient, $value, $expiration = 0 ) +{ + global $_bb_using_ext_object_cache, $bbdb; + + if ( $_bb_using_ext_object_cache ) { + return wp_cache_set( $transient, $value, 'transient', $expiration ); + } else { + $transient_timeout = '_transient_timeout_' . $bbdb->escape( $transient ); + $transient = '_transient_' . $bbdb->escape( $transient ); + if ( 0 != $expiration ) { + bb_update_option( $transient_timeout, time() + $expiration ); + } + return bb_update_option( $transient, $value ); + } +} + + + +/* User meta */ + +function bb_get_usermeta( $user_id, $meta_key ) +{ + if ( !$user = bb_get_user( $user_id ) ) { + return; + } + + $meta_key = bb_sanitize_meta_key( $meta_key ); + if ( !isset( $user->$meta_key ) ) { + return; + } + return $user->$meta_key; +} + +function bb_update_usermeta( $user_id, $meta_key, $meta_value ) +{ + return bb_update_meta( $user_id, $meta_key, $meta_value, 'user' ); +} + +// $meta_value defaults to null to conform to BackPress' WP_User::delete_meta() +function bb_delete_usermeta( $user_id, $meta_key, $meta_value = null ) +{ + return bb_delete_meta( $user_id, $meta_key, $meta_value, 'user' ); +} + +/** + * Saves and restores user interface settings stored in a cookie. + * + * Checks if the current user-settings cookie is updated and stores it. When no + * cookie exists (different browser used), adds the last saved cookie restoring + * the settings. + * + * @package bbPress + * @subpackage Meta + * @since 1.0 + */ +function bb_user_settings() +{ + if ( !defined( 'BB_IS_ADMIN' ) || !BB_IS_ADMIN ) { + return; + } + + if ( defined( 'DOING_AJAX' ) ) { + return; + } + + if ( !$user = bb_get_current_user() ) { + return; + } + + $settings = bb_get_usermeta( $user->ID, 'bb_user_settings' ); + + if ( isset( $_COOKIE['bb-user-settings-' . $user->ID] ) ) { + $cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['bb-user-settings-' . $user->ID] ); + + if ( !empty( $cookie ) && strpos( $cookie, '=' ) ) { + if ( $cookie == $settings ) { + return; + } + + $last_time = (int) bb_get_usermeta( $user->ID, 'bb_user_settings_time' ); + $saved = isset( $_COOKIE['bb-user-settings-time-' . $user->ID] ) ? preg_replace( '/[^0-9]/', '', $_COOKIE['bb-user-settings-time-' . $user->ID] ) : 0; + + if ( $saved > $last_time ) { + bb_update_usermeta( $user->ID, 'bb_user_settings', $cookie ); + bb_update_usermeta( $user->ID, 'bb_user_settings_time', time() - 5 ); + return; + } + } + } + + setcookie( 'bb-user-settings-' . $user->ID, $settings, time() + 31536000, $bb->cookiepath ); + setcookie( 'bb-user-settings-time-' . $user->ID, time(), time() + 31536000, $bb->cookiepath ); +} + +/** + * Retrieve user interface setting value based on setting name. + * + * @package bbPress + * @subpackage Meta + * @since 1.0 + * + * @param string $name The name of the setting. + * @param string $default Optional default value to return when $name is not set. + * @return mixed the last saved user setting or the default value/false if it doesn't exist. + */ +function bb_get_user_setting( $name, $default = false ) +{ + $arr = bb_get_all_user_settings(); + + return isset( $arr[$name] ) ? $arr[$name] : $default; +} + +/** + * Adds or updates a user interface setting value based on setting name. + * + * @package bbPress + * @subpackage Meta + * @since 1.0 + * + * @param string $name The name of the setting. + * @param string $value The value of the setting. + */ +function bb_update_user_setting( $name, $value ) +{ + if ( is_null( $value ) || $value === '' ) { + return; + } + + if ( !$user = bb_get_current_user() ) { + return; + } + + $name = (string) $name; + $name = preg_replace( '/[^A-Za-z0-9_]/', '', $name ); + + $value = (string) $value; + $value = preg_replace( '/[^A-Za-z0-9_]/', '', $value ); + + $arr = bb_get_all_user_settings(); + $arr[$name] = $value; + + foreach ( $arr as $k => $v ) { + $settings .= $k . '=' . $v . '&'; + } + $settings = rtrim( $settings, '&' ); + + bb_update_usermeta( $user->ID, 'bb_user_settings', $settings ); + setcookie( 'bb-user-settings-' . $user->ID, $settings, time() + 31536000, $bb->cookiepath ); +} + +/** + * Delete user interface settings. + * + * Deleting settings would reset them to the defaults. + * + * @package bbPress + * @subpackage Meta + * @since 1.0 + * + * @param mixed $names The name or array of names of the setting to be deleted. + */ +function bb_delete_user_setting( $names ) +{ + $arr = bb_get_all_user_settings(); + $names = (array) $names; + + if ( !$user = bb_get_current_user() ) { + return; + } + + foreach ( $names as $name ) { + if ( isset( $arr[$name] ) ) { + unset( $arr[$name] ); + $settings = ''; + } + } + + if ( isset( $settings ) ) { + foreach ( $arr as $k => $v ) { + $settings .= $k . '=' . $v . '&'; + } + $settings = rtrim( $settings, '&' ); + + bb_update_usermeta( $user->ID, 'bb_user_settings', $settings ); + setcookie( 'bb-user-settings-' . $user->ID, $settings, time() + 31536000, $bb->cookiepath ); + } +} + +/** + * Retrieve all user interface settings. + * + * @package bbPress + * @subpackage Meta + * @since 1.0 + * + * @return array the last saved user settings or empty array. + */ +function bb_get_all_user_settings() +{ + if ( ! $user = bb_get_current_user() ) { + return array(); + } + + $arr = array(); + if ( isset( $_COOKIE['bb-user-settings-' . $user->ID] ) ) { + $cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['bb-user-settings-' . $user->ID] ); + + if ( $cookie && strpos( $cookie, '=' ) ) { // the '=' cannot be 1st char + parse_str( $cookie, $arr ); + } + } elseif ( isset( $user->bb_user_settings ) && is_string( $user->bb_user_settings ) ) { + parse_str( $user->bb_user_settings, $arr ); + } + + return $arr; +} + +/** + * Delete the user settings of the current user. + * + * @package bbPress + * @subpackage Meta + * @since 1.0 + */ +function bb_delete_all_user_settings() +{ + if ( !$user = bb_get_current_user() ) { + return; + } + + bb_delete_usermeta( $user->ID, 'bb_user_settings' ); + setcookie( 'bb-user-settings-' . $user->ID, ' ', time() - 31536000, $bb->cookiepath ); +} + + + + +/* Forum meta */ + +function bb_get_forummeta( $forum_id, $meta_key ) +{ + if ( !$forum = bb_get_forum( $forum_id ) ) { + return; + } + + $meta_key = bb_sanitize_meta_key( $meta_key ); + if ( !isset( $forum->$meta_key ) ) { + return; + } + return $forum->$meta_key; +} + +function bb_update_forummeta( $forum_id, $meta_key, $meta_value ) +{ + return bb_update_meta( $forum_id, $meta_key, $meta_value, 'forum' ); +} + +function bb_delete_forummeta( $forum_id, $meta_key, $meta_value = '' ) +{ + return bb_delete_meta( $forum_id, $meta_key, $meta_value, 'forum' ); +} + + + +/* Topic meta */ + +function bb_get_topicmeta( $topic_id, $meta_key ) +{ + if ( !$topic = get_topic( $topic_id ) ) { + return; + } + + $meta_key = bb_sanitize_meta_key( $meta_key ); + if ( !isset($topic->$meta_key) ) { + return; + } + return $topic->$meta_key; +} + +function bb_update_topicmeta( $topic_id, $meta_key, $meta_value ) +{ + return bb_update_meta( $topic_id, $meta_key, $meta_value, 'topic' ); +} + +function bb_delete_topicmeta( $topic_id, $meta_key, $meta_value = '' ) +{ + return bb_delete_meta( $topic_id, $meta_key, $meta_value, 'topic' ); +} + + + +/* Post meta */ + +function bb_get_postmeta( $post_id, $meta_key ) +{ + if ( !$post = bb_get_post( $post_id ) ) { + return; + } + + $meta_key = bb_sanitize_meta_key( $meta_key ); + if ( !isset( $post->$meta_key ) ) { + return; + } + return $post->$meta_key; +} + +function bb_update_postmeta( $post_id, $meta_key, $meta_value ) +{ + return bb_update_meta( $post_id, $meta_key, $meta_value, 'post' ); +} + +function bb_delete_postmeta( $post_id, $meta_key, $meta_value = '' ) +{ + return bb_delete_meta( $post_id, $meta_key, $meta_value, 'post' ); +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-pluggable.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-pluggable.php new file mode 100644 index 0000000..18d02af --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-pluggable.php @@ -0,0 +1,937 @@ +<?php + +if ( !function_exists( 'bb_auth' ) ) : +function bb_auth( $scheme = 'auth' ) { // Checks if a user has a valid cookie, if not redirects them to the main page + if ( !bb_validate_auth_cookie( '', $scheme ) ) { + nocache_headers(); + if ( 'auth' === $scheme && !bb_is_user_logged_in() ) { + $protocol = 'http://'; + if ( is_ssl() ) { + $protocol = 'https://'; + } + wp_redirect( bb_get_uri( 'bb-login.php', array( 'redirect_to' => $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ), BB_URI_CONTEXT_HEADER + BB_URI_CONTEXT_BB_USER_FORMS ) ); + } else { + wp_redirect( bb_get_uri( null, null, BB_URI_CONTEXT_HEADER ) ); + } + exit; + } +} +endif; + +// $already_md5 variable is deprecated +if ( !function_exists('bb_check_login') ) : +function bb_check_login($user, $pass, $already_md5 = false) { + global $wp_users_object; + + if ( !bb_get_option( 'email_login' ) || false === strpos( $user, '@' ) ) { // user_login + $user = $wp_users_object->get_user( $user, array( 'by' => 'login' ) ); + } else { // maybe an email + $email_user = $wp_users_object->get_user( $user, array( 'by' => 'email' ) ); + $user = $wp_users_object->get_user( $user, array( 'by' => 'login' ) ); + // 9 cases. each can be FALSE, USER, or WP_ERROR + if ( + ( !$email_user && $user ) // FALSE && USER, FALSE && WP_ERROR + || + ( is_wp_error( $email_user ) && $user && !is_wp_error( $user ) ) // WP_ERROR && USER + ) { + // nope: it really was a user_login + // [sic]: use $user + } elseif ( + ( $email_user && !$user ) // USER && FALSE, WP_ERROR && FALSE + || + ( $email_user && !is_wp_error( $email_user ) && is_wp_error( $user ) ) // USER && WP_ERROR + ) { + // yup: it was an email + $user =& $email_user; + } elseif ( !$email_user && !$user ) { // FALSE && FALSE + // Doesn't matter what it was: neither worked + return false; + } elseif ( is_wp_error( $email_user ) && is_wp_error( $user ) ) { // WP_ERROR && WP_ERROR + // This can't happen. If it does, let's use the email error. It's probably "multiple matches", so maybe logging in with a username will work + $user =& $email_user; + } elseif ( $email_user && $user ) { // USER && USER + // both are user objects + if ( $email_user->ID == $user->ID ); // [sic]: they are the same, use $user + elseif ( bb_check_password($pass, $user->user_pass, $user->ID) ); // [sic]: use $user + elseif ( bb_check_password($pass, $email_user->user_pass, $email_user->ID) ) + $user =& $email_user; + } else { // This can't happen, that's all 9 cases. + // [sic]: use $user + } + } + + if ( !$user ) + return false; + + if ( is_wp_error($user) ) + return $user; + + if ( !bb_check_password($pass, $user->user_pass, $user->ID) ) + return false; + + // User is logging in for the first time, update their user_status to normal + if ( 1 == $user->user_status ) + bb_update_user_status( $user->ID, 0 ); + + return $user; +} +endif; + +if ( !function_exists('bb_get_current_user') ) : +function bb_get_current_user() { + global $wp_auth_object; + return $wp_auth_object->get_current_user(); +} +endif; + +if ( !function_exists('bb_set_current_user') ) : +function bb_set_current_user( $id ) { + global $wp_auth_object; + $current_user = $wp_auth_object->set_current_user( $id ); + + do_action('bb_set_current_user', isset($current_user->ID) ? $current_user->ID : 0 ); + + return $current_user; +} +endif; + +if ( !function_exists('bb_current_user') ) : +//This is only used at initialization. Use bb_get_current_user_info() (or $bb_current_user global if really needed) to grab user info. +function bb_current_user() { + if (BB_INSTALLING) + return false; + + return bb_get_current_user(); +} +endif; + +if ( !function_exists('bb_is_user_authorized') ) : +function bb_is_user_authorized() { + return bb_is_user_logged_in(); +} +endif; + +if ( !function_exists('bb_is_user_logged_in') ) : +function bb_is_user_logged_in() { + $current_user = bb_get_current_user(); + + if ( empty($current_user) ) + return false; + + return true; +} +endif; + +if ( !function_exists('bb_login') ) : +function bb_login( $login, $password, $remember = false ) { + $user = bb_check_login( $login, $password ); + if ( $user && !is_wp_error( $user ) ) { + bb_set_auth_cookie( $user->ID, $remember ); + do_action('bb_user_login', (int) $user->ID ); + } + + return $user; +} +endif; + +if ( !function_exists('bb_logout') ) : +function bb_logout() { + bb_clear_auth_cookie(); + + do_action('bb_user_logout'); +} +endif; + +if ( !function_exists( 'bb_validate_auth_cookie' ) ) : +function bb_validate_auth_cookie( $cookie = '', $scheme = 'auth' ) { + global $wp_auth_object; + if ( empty($cookie) && $scheme == 'auth' ) { + if ( is_ssl() ) { + $scheme = 'secure_auth'; + } else { + $scheme = 'auth'; + } + } + return $wp_auth_object->validate_auth_cookie( $cookie, $scheme ); +} +endif; + +if ( !function_exists( 'bb_set_auth_cookie' ) ) : +function bb_set_auth_cookie( $user_id, $remember = false, $schemes = false ) { + global $wp_auth_object; + + if ( $remember ) { + $expiration = $expire = time() + 1209600; + } else { + $expiration = time() + 172800; + $expire = 0; + } + + if ( true === $schemes ) { + $schemes = array( 'secure_auth', 'logged_in' ); + } elseif ( !is_array( $schemes ) ) { + $schemes = array(); + if ( force_ssl_login() || force_ssl_admin() ) { + $schemes[] = 'secure_auth'; + } + if ( !( force_ssl_login() && force_ssl_admin() ) ) { + $schemes[] = 'auth'; + } + $schemes[] = 'logged_in'; + } + $schemes = array_unique( $schemes ); + + foreach ( $schemes as $scheme ) { + $wp_auth_object->set_auth_cookie( $user_id, $expiration, $expire, $scheme ); + } +} +endif; + +if ( !function_exists('bb_clear_auth_cookie') ) : +function bb_clear_auth_cookie() { + global $bb, $wp_auth_object; + + $wp_auth_object->clear_auth_cookie(); + + // Old cookies + setcookie($bb->authcookie, ' ', time() - 31536000, $bb->cookiepath, $bb->cookiedomain); + setcookie($bb->authcookie, ' ', time() - 31536000, $bb->sitecookiepath, $bb->cookiedomain); + + // Even older cookies + setcookie($bb->usercookie, ' ', time() - 31536000, $bb->cookiepath, $bb->cookiedomain); + setcookie($bb->usercookie, ' ', time() - 31536000, $bb->sitecookiepath, $bb->cookiedomain); + setcookie($bb->passcookie, ' ', time() - 31536000, $bb->cookiepath, $bb->cookiedomain); + setcookie($bb->passcookie, ' ', time() - 31536000, $bb->sitecookiepath, $bb->cookiedomain); +} +endif; + +if ( !function_exists('wp_redirect') ) : // [WP11537] +/** + * Redirects to another page, with a workaround for the IIS Set-Cookie bug. + * + * @link http://support.microsoft.com/kb/q176113/ + * @since 1.5.1 + * @uses apply_filters() Calls 'wp_redirect' hook on $location and $status. + * + * @param string $location The path to redirect to + * @param int $status Status code to use + * @return bool False if $location is not set + */ +function wp_redirect($location, $status = 302) { + global $is_IIS; + + $location = apply_filters('wp_redirect', $location, $status); + $status = apply_filters('wp_redirect_status', $status, $location); + + if ( !$location ) // allows the wp_redirect filter to cancel a redirect + return false; + + $location = wp_sanitize_redirect($location); + + if ( $is_IIS ) { + header("Refresh: 0;url=$location"); + } else { + if ( php_sapi_name() != 'cgi-fcgi' ) + status_header($status); // This causes problems on IIS and some FastCGI setups + header("Location: $location"); + } +} +endif; + +if ( !function_exists('wp_sanitize_redirect') ) : // [WP11537] +/** + * Sanitizes a URL for use in a redirect. + * + * @since 2.3 + * + * @return string redirect-sanitized URL + **/ +function wp_sanitize_redirect($location) { + $location = preg_replace('|[^a-z0-9-~+_.?#=&;,/:%!]|i', '', $location); + $location = wp_kses_no_null($location); + + // remove %0d and %0a from location + $strip = array('%0d', '%0a'); + $found = true; + while($found) { + $found = false; + foreach( (array) $strip as $val ) { + while(strpos($location, $val) !== false) { + $found = true; + $location = str_replace($val, '', $location); + } + } + } + return $location; +} +endif; + +if ( !function_exists('bb_safe_redirect') ) : // based on [WP6145] (home is different) +/** + * Performs a safe (local) redirect, using wp_redirect(). + * + * Checks whether the $location is using an allowed host, if it has an absolute + * path. A plugin can therefore set or remove allowed host(s) to or from the + * list. + * + * If the host is not allowed, then the redirect is to the site url + * instead. This prevents malicious redirects which redirect to another host, + * but only used in a few places. + * + * @uses apply_filters() Calls 'allowed_redirect_hosts' on an array containing + * bbPress host string and $location host string. + * + * @return void Does not return anything + **/ +function bb_safe_redirect( $location, $status = 302 ) { + + // Need to look at the URL the way it will end up in wp_redirect() + $location = wp_sanitize_redirect($location); + + // browsers will assume 'http' is your protocol, and will obey a redirect to a URL starting with '//' + if ( substr($location, 0, 2) == '//' ) + $location = 'http:' . $location; + + // In php 5 parse_url may fail if the URL query part contains http://, bug #38143 + $test = ( $cut = strpos($location, '?') ) ? substr( $location, 0, $cut ) : $location; + + $lp = parse_url($test); + $bp = parse_url(bb_get_uri()); + + $allowed_hosts = (array) apply_filters('allowed_redirect_hosts', array($bp['host']), isset($lp['host']) ? $lp['host'] : ''); + + if ( isset($lp['host']) && ( !in_array($lp['host'], $allowed_hosts) && $lp['host'] != strtolower($bp['host'])) ) + $location = bb_get_uri(null, null, BB_URI_CONTEXT_HEADER); + + return wp_redirect($location, $status); +} +endif; + +if ( !function_exists('bb_nonce_tick') ) : +/** + * Get the time-dependent variable for nonce creation. + * + * A nonce has a lifespan of two ticks. Nonces in their second tick may be + * updated, e.g. by autosave. + * + * @since 1.0 + * + * @return int + */ +function bb_nonce_tick() { + $nonce_life = apply_filters('bb_nonce_life', 86400); + + return ceil(time() / ( $nonce_life / 2 )); +} +endif; + +if ( !function_exists('bb_verify_nonce') ) : +/** + * Verify that correct nonce was used with time limit. + * + * The user is given an amount of time to use the token, so therefore, since the + * UID and $action remain the same, the independent variable is the time. + * + * @param string $nonce Nonce that was used in the form to verify + * @param string|int $action Should give context to what is taking place and be the same when nonce was created. + * @return bool Whether the nonce check passed or failed. + */ +function bb_verify_nonce($nonce, $action = -1) { + $user = bb_get_current_user(); + $uid = (int) $user->ID; + + $i = bb_nonce_tick(); + + // Nonce generated 0-12 hours ago + if ( substr(bb_hash($i . $action . $uid, 'nonce'), -12, 10) == $nonce ) + return 1; + // Nonce generated 12-24 hours ago + if ( substr(bb_hash(($i - 1) . $action . $uid, 'nonce'), -12, 10) == $nonce ) + return 2; + // Invalid nonce + return false; +} +endif; + +if ( !function_exists('bb_create_nonce') ) : +/** + * Creates a random, one time use token. + * + * @since 2.0.4 + * + * @param string|int $action Scalar value to add context to the nonce. + * @return string The one use form token + */ +function bb_create_nonce($action = -1) { + $user = bb_get_current_user(); + $uid = (int) $user->ID; + + $i = bb_nonce_tick(); + + return substr(bb_hash($i . $action . $uid, 'nonce'), -12, 10); +} +endif; + +function _bb_get_key( $key, $default_key = false ) +{ + global $bb_default_secret_key; + + if ( defined( $key ) && '' != constant( $key ) && $bb_default_secret_key != constant( $key ) ) { + return constant( $key ); + } + + return ''; +} + +function _bb_get_salt( $constants, $option = false ) +{ + if ( !is_array( $constants ) ) { + $constants = array( $constants ); + } + + foreach ($constants as $constant ) { + if ( defined( $constant ) ) { + return constant( $constant ); + } + } + + if ( !defined( 'BB_INSTALLING' ) || !BB_INSTALLING ) { + if ( !$option ) { + $option = strtolower( $constants[0] ); + } + $salt = bb_get_option( $option ); + if ( empty( $salt ) ) { + $salt = bb_generate_password( 64 ); + bb_update_option( $option, $salt ); + } + return $salt; + } + + return ''; +} + +// Not verbatim WP, constants have different names, uses helper functions. +if ( !function_exists( 'bb_salt' ) ) : +/** + * Get salt to add to hashes to help prevent attacks. + * + * @since 0.9 + * @link http://api.wordpress.org/secret-key/1.1/bbpress/ Create a set of keys for bb-config.php + * @uses _bb_get_key() + * @uses _bb_get_salt() + * + * @return string Salt value for the given scheme + */ +function bb_salt( $scheme = 'auth' ) +{ + // Deprecated + $secret_key = _bb_get_key( 'BB_SECRET_KEY' ); + + switch ($scheme) { + case 'auth': + $secret_key = _bb_get_key( 'BB_AUTH_KEY' ); + $salt = _bb_get_salt( array( 'BB_AUTH_SALT', 'BB_SECRET_SALT' ) ); + break; + + case 'secure_auth': + $secret_key = _bb_get_key( 'BB_SECURE_AUTH_KEY' ); + $salt = _bb_get_salt( 'BB_SECURE_AUTH_SALT' ); + break; + + case 'logged_in': + $secret_key = _bb_get_key( 'BB_LOGGED_IN_KEY' ); + $salt = _bb_get_salt( 'BB_LOGGED_IN_SALT' ); + break; + + case 'nonce': + $secret_key = _bb_get_key( 'BB_NONCE_KEY' ); + $salt = _bb_get_salt( 'BB_NONCE_SALT' ); + break; + + default: + // ensure each auth scheme has its own unique salt + $salt = hash_hmac( 'md5', $scheme, $secret_key ); + break; + } + + return apply_filters( 'salt', $secret_key . $salt, $scheme ); +} +endif; + +if ( !function_exists( 'bb_hash' ) ) : +function bb_hash( $data, $scheme = 'auth' ) { + $salt = bb_salt( $scheme ); + + return hash_hmac( 'md5', $data, $salt ); +} +endif; + +if ( !function_exists( 'bb_hash_password' ) ) : +function bb_hash_password( $password ) { + return WP_Pass::hash_password( $password ); +} +endif; + +if ( !function_exists( 'bb_check_password') ) : +function bb_check_password( $password, $hash, $user_id = '' ) { + return WP_Pass::check_password( $password, $hash, $user_id ); +} +endif; + +if ( !function_exists( 'bb_generate_password' ) ) : +/** + * Generates a random password drawn from the defined set of characters + * @return string the password + */ +function bb_generate_password( $length = 12, $special_chars = true ) { + return WP_Pass::generate_password( $length, $special_chars ); +} +endif; + +if ( !function_exists('bb_check_admin_referer') ) : +function bb_check_admin_referer( $action = -1, $query_arg = '_wpnonce' ) { + $nonce = ''; + if ( isset( $_POST[$query_arg] ) && $_POST[$query_arg] ) { + $nonce = $_POST[$query_arg]; + } elseif ( isset( $_GET[$query_arg] ) && $_GET[$query_arg] ) { + $nonce = $_GET[$query_arg]; + } + if ( !bb_verify_nonce($nonce, $action) ) { + bb_nonce_ays($action); + die(); + } + do_action('bb_check_admin_referer', $action); +} +endif; + +if ( !function_exists('bb_check_ajax_referer') ) : +function bb_check_ajax_referer( $action = -1, $query_arg = false, $die = true ) { + $requests = array(); + if ( $query_arg ) { + $requests[] = $query_arg; + } + $requests[] = '_ajax_nonce'; + $requests[] = '_wpnonce'; + + $nonce = ''; + foreach ( $requests as $request ) { + if ( isset( $_POST[$request] ) && $_POST[$request] ) { + $nonce = $_POST[$request]; + break; + } elseif ( isset( $_GET[$request] ) && $_GET[$request] ) { + $nonce = $_GET[$request]; + break; + } + } + + $result = bb_verify_nonce( $nonce, $action ); + + if ( $die && false == $result ) + die('-1'); + + do_action('bb_check_ajax_referer', $action, $result); + return $result; +} +endif; + +if ( !function_exists('bb_break_password') ) : +function bb_break_password( $user_id ) { + global $bbdb; + $user_id = (int) $user_id; + if ( !$user = bb_get_user( $user_id ) ) + return false; + $secret = substr(bb_hash( 'bb_break_password' ), 0, 13); + if ( false === strpos( $user->user_pass, '---' ) ) + return $bbdb->query( $bbdb->prepare( + "UPDATE $bbdb->users SET user_pass = CONCAT(user_pass, '---', %s) WHERE ID = %d", + $secret, $user_id + ) ); + else + return true; +} +endif; + +if ( !function_exists('bb_fix_password') ) : +function bb_fix_password( $user_id ) { + global $bbdb; + $user_id = (int) $user_id; + if ( !$user = bb_get_user( $user_id ) ) + return false; + if ( false === strpos( $user->user_pass, '---' ) ) + return true; + else + return $bbdb->query( $bbdb->prepare( + "UPDATE $bbdb->users SET user_pass = SUBSTRING_INDEX(user_pass, '---', 1) WHERE ID = %d", + $user_id + ) ); +} +endif; + +if ( !function_exists('bb_has_broken_pass') ) : +function bb_has_broken_pass( $user_id = 0 ) { + global $bb_current_user; + if ( !$user_id ) + $user =& $bb_current_user->data; + else + $user = bb_get_user( $user_id ); + + return ( false !== strpos($user->user_pass, '---' ) ); +} +endif; + +if ( !function_exists('bb_new_user') ) : +function bb_new_user( $user_login, $user_email, $user_url, $user_status = 1 ) { + global $wp_users_object, $bbdb; + + // is_email check + dns + if ( !$user_email = is_email( $user_email ) ) + return new WP_Error( 'user_email', __( 'Invalid email address' ), $user_email ); + + if ( !$user_login = sanitize_user( $user_login, true ) ) + return new WP_Error( 'user_login', __( 'Invalid username' ), $user_login ); + + // user_status = 1 means the user has not yet been verified + $user_status = is_numeric($user_status) ? (int) $user_status : 1; + if ( defined( 'BB_INSTALLING' ) ) + $user_status = 0; + + $user_nicename = $_user_nicename = bb_user_nicename_sanitize( $user_login ); + if ( strlen( $_user_nicename ) < 1 ) + return new WP_Error( 'user_login', __( 'Invalid username' ), $user_login ); + + while ( is_numeric($user_nicename) || $existing_user = bb_get_user_by_nicename( $user_nicename ) ) + $user_nicename = bb_slug_increment($_user_nicename, $existing_user->user_nicename, 50); + + $user_url = $user_url ? bb_fix_link( $user_url ) : ''; + + $user_pass = bb_generate_password(); + + $user = $wp_users_object->new_user( compact( 'user_login', 'user_email', 'user_url', 'user_nicename', 'user_status', 'user_pass' ) ); + if ( is_wp_error($user) ) { + if ( 'user_nicename' == $user->get_error_code() ) + return new WP_Error( 'user_login', $user->get_error_message() ); + return $user; + } + + if (BB_INSTALLING) { + bb_update_usermeta( $user['ID'], $bbdb->prefix . 'capabilities', array('keymaster' => true) ); + } else { + bb_update_usermeta( $user['ID'], $bbdb->prefix . 'capabilities', array('member' => true) ); + bb_send_pass( $user['ID'], $user['plain_pass'] ); + } + + do_action('bb_new_user', $user['ID'], $user['plain_pass']); + return $user['ID']; +} +endif; + +if ( !function_exists( 'bb_mail' ) ) : +/** + * Send mail, similar to PHP's mail + * + * A true return value does not automatically mean that the user received the + * email successfully. It just only means that the method used was able to + * process the request without any errors. + * + * Using the two 'bb_mail_from' and 'bb_mail_from_name' hooks allow from + * creating a from address like 'Name <email@address.com>' when both are set. If + * just 'bb_mail_from' is set, then just the email address will be used with no + * name. + * + * The default content type is 'text/plain' which does not allow using HTML. + * However, you can set the content type of the email by using the + * 'bb_mail_content_type' filter. + * + * The default charset is based on the charset used on the blog. The charset can + * be set using the 'bb_mail_charset' filter. + * + * @uses apply_filters() Calls 'bb_mail' hook on an array of all of the parameters. + * @uses apply_filters() Calls 'bb_mail_from' hook to get the from email address. + * @uses apply_filters() Calls 'bb_mail_from_name' hook to get the from address name. + * @uses apply_filters() Calls 'bb_mail_content_type' hook to get the email content type. + * @uses apply_filters() Calls 'bb_mail_charset' hook to get the email charset + * @uses do_action_ref_array() Calls 'bb_phpmailer_init' hook on the reference to + * phpmailer object. + * @uses PHPMailer + * + * @param string $to Email address to send message + * @param string $subject Email subject + * @param string $message Message contents + * @param string|array $headers Optional. Additional headers. + * @param string|array $attachments Optional. Files to attach. + * @return bool Whether the email contents were sent successfully. + */ +function bb_mail( $to, $subject, $message, $headers = '', $attachments = array() ) { + // Compact the input, apply the filters, and extract them back out + extract( apply_filters( 'bb_mail', compact( 'to', 'subject', 'message', 'headers', 'attachments' ) ) ); + + if ( !is_array($attachments) ) + $attachments = explode( "\n", $attachments ); + + global $bb_phpmailer; + + // (Re)create it, if it's gone missing + if ( !is_object( $bb_phpmailer ) || !is_a( $bb_phpmailer, 'PHPMailer' ) ) { + require_once BACKPRESS_PATH . 'class.mailer.php'; + require_once BACKPRESS_PATH . 'class.mailer-smtp.php'; + $bb_phpmailer = new PHPMailer(); + } + + // Headers + if ( empty( $headers ) ) { + $headers = array(); + } else { + if ( !is_array( $headers ) ) { + // Explode the headers out, so this function can take both + // string headers and an array of headers. + $tempheaders = (array) explode( "\n", $headers ); + } else { + $tempheaders = $headers; + } + $headers = array(); + + // If it's actually got contents + if ( !empty( $tempheaders ) ) { + // Iterate through the raw headers + foreach ( (array) $tempheaders as $header ) { + if ( strpos($header, ':') === false ) { + if ( false !== stripos( $header, 'boundary=' ) ) { + $parts = preg_split('/boundary=/i', trim( $header ) ); + $boundary = trim( str_replace( array( "'", '"' ), '', $parts[1] ) ); + } + continue; + } + // Explode them out + list( $name, $content ) = explode( ':', trim( $header ), 2 ); + + // Cleanup crew + $name = trim( $name ); + $content = trim( $content ); + + // Mainly for legacy -- process a From: header if it's there + if ( 'from' == strtolower($name) ) { + if ( strpos($content, '<' ) !== false ) { + // So... making my life hard again? + $from_name = substr( $content, 0, strpos( $content, '<' ) - 1 ); + $from_name = str_replace( '"', '', $from_name ); + $from_name = trim( $from_name ); + + $from_email = substr( $content, strpos( $content, '<' ) + 1 ); + $from_email = str_replace( '>', '', $from_email ); + $from_email = trim( $from_email ); + } else { + $from_email = trim( $content ); + } + } elseif ( 'content-type' == strtolower($name) ) { + if ( strpos( $content,';' ) !== false ) { + list( $type, $charset ) = explode( ';', $content ); + $content_type = trim( $type ); + if ( false !== stripos( $charset, 'charset=' ) ) { + $charset = trim( str_replace( array( 'charset=', '"' ), '', $charset ) ); + } elseif ( false !== stripos( $charset, 'boundary=' ) ) { + $boundary = trim( str_replace( array( 'BOUNDARY=', 'boundary=', '"' ), '', $charset ) ); + $charset = ''; + } + } else { + $content_type = trim( $content ); + } + } elseif ( 'cc' == strtolower($name) ) { + $cc = explode(",", $content); + } elseif ( 'bcc' == strtolower($name) ) { + $bcc = explode(",", $content); + } else { + // Add it to our grand headers array + $headers[trim( $name )] = trim( $content ); + } + } + } + } + + // Empty out the values that may be set + $bb_phpmailer->ClearAddresses(); + $bb_phpmailer->ClearAllRecipients(); + $bb_phpmailer->ClearAttachments(); + $bb_phpmailer->ClearBCCs(); + $bb_phpmailer->ClearCCs(); + $bb_phpmailer->ClearCustomHeaders(); + $bb_phpmailer->ClearReplyTos(); + + // From email and name + // If we don't have a name from the input headers + if ( !isset( $from_name ) ) { + $from_name = bb_get_option('name'); + } + + // If we don't have an email from the input headers + if ( !isset( $from_email ) ) { + $from_email = bb_get_option('from_email'); + } + + // If there is still no email address + if ( !$from_email ) { + // Get the site domain and get rid of www. + $sitename = strtolower( $_SERVER['SERVER_NAME'] ); + if ( substr( $sitename, 0, 4 ) == 'www.' ) { + $sitename = substr( $sitename, 4 ); + } + + $from_email = 'bbpress@' . $sitename; + } + + // Plugin authors can override the potentially troublesome default + $bb_phpmailer->From = apply_filters( 'bb_mail_from', $from_email ); + $bb_phpmailer->FromName = apply_filters( 'bb_mail_from_name', $from_name ); + + // Set destination address + $bb_phpmailer->AddAddress( $to ); + + // Set mail's subject and body + $bb_phpmailer->Subject = $subject; + $bb_phpmailer->Body = $message; + + // Add any CC and BCC recipients + if ( !empty($cc) ) { + foreach ( (array) $cc as $recipient ) { + $bb_phpmailer->AddCc( trim($recipient) ); + } + } + if ( !empty($bcc) ) { + foreach ( (array) $bcc as $recipient) { + $bb_phpmailer->AddBcc( trim($recipient) ); + } + } + + // Set to use PHP's mail() + $bb_phpmailer->IsMail(); + + // Set Content-Type and charset + // If we don't have a content-type from the input headers + if ( !isset( $content_type ) ) { + $content_type = 'text/plain'; + } + + $content_type = apply_filters( 'bb_mail_content_type', $content_type ); + + $bb_phpmailer->ContentType = $content_type; + + // Set whether it's plaintext or not, depending on $content_type + if ( $content_type == 'text/html' ) { + $bb_phpmailer->IsHTML( true ); + } + + // If we don't have a charset from the input headers + if ( !isset( $charset ) ) { + $charset = bb_get_option( 'charset' ); + } + + // Set the content-type and charset + $bb_phpmailer->CharSet = apply_filters( 'bb_mail_charset', $charset ); + + // Set custom headers + if ( !empty( $headers ) ) { + foreach( (array) $headers as $name => $content ) { + $bb_phpmailer->AddCustomHeader( sprintf( '%1$s: %2$s', $name, $content ) ); + } + if ( false !== stripos( $content_type, 'multipart' ) && ! empty($boundary) ) { + $bb_phpmailer->AddCustomHeader( sprintf( "Content-Type: %s;\n\t boundary=\"%s\"", $content_type, $boundary ) ); + } + } + + if ( !empty( $attachments ) ) { + foreach ( $attachments as $attachment ) { + $bb_phpmailer->AddAttachment($attachment); + } + } + + do_action_ref_array( 'bb_phpmailer_init', array( &$bb_phpmailer ) ); + + // Send! + $result = @$bb_phpmailer->Send(); + + return $result; +} +endif; + +if ( !function_exists( 'bb_get_avatar' ) ) : +/** + * Retrieve the avatar for a user provided a user ID or email address + * + * @since 0.9 + * @param int|string $id_or_email A user ID or email address + * @param int $size Size of the avatar image + * @param string $default URL to a default image to use if no avatar is available + * @param string $alt Alternate text to use in image tag. Defaults to blank + * @return string <img> tag for the user's avatar +*/ +function bb_get_avatar( $id_or_email, $size = 80, $default = '', $alt = false ) { + if ( !bb_get_option('avatars_show') ) + return false; + + if ( false === $alt) + $safe_alt = ''; + else + $safe_alt = esc_attr( $alt ); + + if ( !is_numeric($size) ) + $size = 80; + + if ( $email = bb_get_user_email($id_or_email) ) { + $class = 'photo '; + } else { + $class = ''; + $email = $id_or_email; + } + + if ( !$email ) + $email = ''; + + if ( empty($default) ) + $default = bb_get_option('avatars_default'); + + if ( is_ssl() ) + $host = 'https://secure.gravatar.com'; + else + $host = 'http://www.gravatar.com'; + + switch ($default) { + case 'logo': + $default = ''; + break; + case 'blank': + $default = bb_get_uri( 'bb-admin/images/blank.gif', null, BB_URI_CONTEXT_IMG_SRC ); + break; + case 'monsterid': + case 'wavatar': + case 'identicon': + case 'retro': + break; + case 'default': + default: + $default = $host . '/avatar/ad516503a11cd5ca435acc9bb6523536?s=' . $size; + // ad516503a11cd5ca435acc9bb6523536 == md5('unknown@gravatar.com') + break; + } + + $src = $host . '/avatar/'; + $class .= 'avatar avatar-' . $size; + + if ( !empty($email) ) { + $src .= md5( strtolower( $email ) ); + } else { + $src .= 'd41d8cd98f00b204e9800998ecf8427e'; + // d41d8cd98f00b204e9800998ecf8427e == md5('') + $class .= ' avatar-noemail'; + } + + $src .= '?s=' . $size; + $src .= '&d=' . urlencode( $default ); + + $rating = bb_get_option('avatars_rating'); + if ( !empty( $rating ) ) + $src .= '&r=' . $rating; + + $avatar = '<img alt="' . $safe_alt . '" src="' . $src . '" class="' . $class . '" style="height:' . $size . 'px; width:' . $size . 'px;" />'; + + return apply_filters('bb_get_avatar', $avatar, $id_or_email, $size, $default, $alt); +} +endif; diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-posts.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-posts.php new file mode 100644 index 0000000..4a2fca3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-posts.php @@ -0,0 +1,739 @@ +<?php + +/* Posts */ + +/** + * Check to make sure that a user is not making too many posts in a short amount of time. + */ +function bb_check_post_flood() { + global $bbdb; + $user_id = (int) $user_id; + $throttle_time = bb_get_option( 'throttle_time' ); + + if ( bb_current_user_can( 'manage_options' ) || empty( $throttle_time ) ) + return; + + if ( bb_is_user_logged_in() ) { + $bb_current_user = bb_get_current_user(); + + if ( isset($bb_current_user->data->last_posted) && time() < $bb_current_user->data->last_posted + $throttle_time && ! bb_current_user_can( 'throttle' ) ) + if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) + die( __( 'Slow down; you move too fast.' ) ); + else + bb_die( __( 'Slow down; you move too fast.' ) ); + } else { + if ( ( $last_posted = bb_get_transient($_SERVER['REMOTE_ADDR'] . '_last_posted') ) && time() < $last_posted + $throttle_time ) + if ( defined('DOING_AJAX') && DOING_AJAX ) + die( __( 'Slow down; you move too fast.' ) ); + else + bb_die( __( 'Slow down; you move too fast.' ) ); + } +} + +/** + * Get the current, non-logged-in poster data. + * @return array The associative array of author, email, and url data. + */ +function bb_get_current_poster() { + // Cookies should already be sanitized. + $post_author = ''; + if ( isset( $_COOKIE['post_author_' . BB_HASH] ) ) + $post_author = $_COOKIE['post_author_' . BB_HASH]; + + $post_author_email = ''; + if ( isset( $_COOKIE['post_author_email_' . BB_HASH] ) ) + $post_author_email = $_COOKIE['post_author_email_' . BB_HASH]; + + $post_author_url = ''; + if ( isset( $_COOKIE['post_author_url_' . BB_HASH] ) ) + $post_author_url = $_COOKIE['post_author_url_' . BB_HASH]; + + return compact( 'post_author', 'post_author_email', 'post_author_url' ); +} + +function bb_get_post( $post_id ) { + global $bbdb; + $post_id = (int) $post_id; + if ( false === $post = wp_cache_get( $post_id, 'bb_post' ) ) { + $post = $bbdb->get_row( $bbdb->prepare( "SELECT * FROM $bbdb->posts WHERE post_id = %d", $post_id ) ); + $post = bb_append_meta( $post, 'post' ); + wp_cache_set( $post_id, $post, 'bb_post' ); + } + return $post; +} + +// NOT bbdb::prepared +function bb_is_first( $post_id ) { // First post in thread + global $bbdb; + if ( !$bb_post = bb_get_post( $post_id ) ) + return false; + $post_id = (int) $bb_post->post_id; + $topic_id = (int) $bb_post->topic_id; + + static $first_post; + if ( !isset( $first_post ) ) { + $where = apply_filters('bb_is_first_where', 'AND post_status = 0'); + $first_post = (int) $bbdb->get_var("SELECT post_id FROM $bbdb->posts WHERE topic_id = $topic_id $where ORDER BY post_id ASC LIMIT 1"); + } + + return $post_id == $first_post; +} + +// Globalizes the result. +function bb_get_first_post( $_topic = false, $author_cache = true ) { + global $topic, $bb_first_post_cache, $bb_post; + if ( !$_topic ) + $topic_id = (int) $topic->topic_id; + else if ( is_object($_topic) ) + $topic_id = (int) $_topic->topic_id; + else if ( is_numeric($_topic) ) + $topic_id = (int) $_topic; + + if ( !$topic_id ) + return false; + + if ( isset($bb_first_post_cache[$topic_id]) ) { + $post = bb_get_post( $bb_first_post_cache[$topic_id] ); + } else { + $first_posts = bb_cache_first_posts( array($topic_id), $author_cache ); + if ( isset($first_posts[$topic_id]) ) + $post = $first_posts[$topic_id]; + } + + if ( $post ) { + $bb_post = $post; + return $bb_post; + } + + return false; +} + +// Ignore the return value. Cache first posts with this function and use bb_get_first_post to grab each. +// NOT bbdb::prepared +function bb_cache_first_posts( $_topics = false, $author_cache = true ) { + global $topics, $bb_first_post_cache, $bbdb; + if ( !$_topics ) + $_topics =& $topics; + if ( !is_array($_topics) ) + return false; + + $topic_ids = array(); + foreach ( $_topics as $topic ) + if ( is_object($topic) ) + $topic_ids[] = (int) $topic->topic_id; + else if ( is_numeric($topic) ) + $topic_ids[] = (int) $topic; + + $_topic_ids = join(',', $topic_ids); + + $posts = (array) bb_cache_posts( "SELECT post_id FROM $bbdb->posts WHERE topic_id IN ($_topic_ids) AND post_position = 1", true ); + + $first_posts = array(); + foreach ( $posts as $post ) { + $bb_first_post_cache[(int) $post->topic_id] = (int) $post->post_id; + $first_posts[(int) $post->topic_id] = $post; + } + + if ( $author_cache ) + bb_post_author_cache( $posts ); + + return $first_posts; +} + +function bb_cache_posts( $query, $post_id_query = false ) { + global $bbdb; + + $_query = ''; + $_query_post_ids = array(); + $_query_posts = array(); + $_cached_posts = array(); + $ordered_post_ids = array(); + + if ( $post_id_query && is_string( $query ) ) { + // The query is a SQL query to retrieve post_ids only + $key = md5( $query ); + if ( false === $post_ids = wp_cache_get( $key, 'bb_cache_posts_post_ids' ) ) { + if ( !$post_ids = (array) $bbdb->get_col( $query, 0 ) ) { + return array(); + } + wp_cache_add( $key, $post_ids, 'bb_cache_posts_post_ids' ); + } + $query = $post_ids; + } + + if ( is_array( $query ) ) { + $get_order_from_query = false; + + foreach ( $query as $_post_id ) { + $ordered_post_ids[] = $_post_id; + if ( false === $_post = wp_cache_get( $_post_id, 'bb_post' ) ) { + $_query_post_ids[] = $_post_id; + } else { + $_cached_posts[$_post->post_id] = $_post; + } + } + + if ( count( $_query_post_ids ) ) { + // Escape the ids for the SQL query + $_query_post_ids = $bbdb->escape_deep( $_query_post_ids ); + + // Sort the ids so the MySQL will more consistently cache the query + sort( $_query_post_ids ); + + $_query = "SELECT * FROM $bbdb->posts WHERE post_id IN ('" . join( "','", $_query_post_ids ) . "')"; + } + } else { + // The query is a full SQL query which needs to be executed + $get_order_from_query = true; + $_query = $query; + } + + if ( $_query_posts = (array) $bbdb->get_results( $_query ) ) { + $_appendable_posts = array(); + foreach ( $_query_posts as $_query_post ) { + if ( $get_order_from_query ) { + $ordered_post_ids[] = $_query_post->post_id; + } + if ( false === $_post = wp_cache_get( $_query_post->post_id, 'bb_post' ) ) { + $_appendable_posts[] = $_query_post; + } else { + $_cached_posts[$_query_post->post_id] = $_post; + } + } + if ( count( $_appendable_posts ) ) { + $_query_posts = bb_append_meta( $_appendable_posts, 'post' ); + foreach( $_query_posts as $_query_post ) { + wp_cache_add( $_query_post->post_id, $_query_post, 'bb_post' ); + } + } else { + $_query_posts = array(); + } + } else { + $_query_posts = array(); + } + + foreach ( array_merge( $_cached_posts, $_query_posts ) as $_post ) { + $keyed_posts[$_post->post_id] = $_post; + } + + $the_posts = array(); + foreach ( $ordered_post_ids as $ordered_post_id ) { + $the_posts[] = $keyed_posts[$ordered_post_id]; + } + + return $the_posts; +} + +// Globalizes the result +function bb_get_last_post( $_topic = false, $author_cache = true ) { + global $topic, $bb_post; + if ( !$_topic ) + $topic_id = (int) $topic->topic_id; + else if ( is_object($_topic) ) + $topic_id = (int) $_topic->topic_id; + else if ( is_numeric($_topic) ) + $topic_id = (int) $_topic; + + if ( !$topic_id ) + return false; + + $_topic = get_topic( $topic_id ); + + if ( $post = bb_get_post( $_topic->topic_last_post_id ) ) { + if ( $author_cache ) + bb_post_author_cache( array($post) ); + $bb_post = $post; + } + + return $post; +} + +// No return value. Cache last posts with this function and use bb_get_last_post to grab each. +// NOT bbdb::prepared +function bb_cache_last_posts( $_topics = false, $author_cache = true ) { + global $topics, $bbdb; + if ( !$_topics ) + $_topics =& $topics; + if ( !is_array($_topics) ) + return false; + + $last_post_ids = array(); + $topic_ids = array(); + foreach ( $_topics as $topic ) + if ( is_object($topic) ) + $last_post_ids[] = (int) $topic->topic_last_post_id; + else if ( is_numeric($topic) && false !== $cached_topic = wp_cache_get( $topic, 'bb_topic' ) ) + $last_post_ids[] = (int) $cached_topic->topic_last_post_id; + else if ( is_numeric($topic) ) + $topic_ids[] = (int) $topic; + + if ( !empty($last_post_ids) ) { + $_last_post_ids = join(',', $last_post_ids); + $posts = (array) bb_cache_posts( "SELECT post_id FROM $bbdb->posts WHERE post_id IN ($_last_post_ids) AND post_status = 0", true ); + if ( $author_cache ) + bb_post_author_cache( $posts ); + } + + if ( !empty($topic_ids) ) { + $_topic_ids = join(',', $topic_ids); + $posts = (array) bb_cache_posts( "SELECT p.post_id FROM $bbdb->topics AS t LEFT JOIN $bbdb->posts AS p ON ( t.topic_last_post_id = p.post_id ) WHERE t.topic_id IN ($_topic_ids) AND p.post_status = 0", true ); + if ( $author_cache ) + bb_post_author_cache( $posts ); + } +} + +// NOT bbdb::prepared +function bb_cache_post_topics( $posts ) { + global $bbdb; + + if ( !$posts ) + return; + + $topic_ids = array(); + foreach ( $posts as $post ) + if ( false === wp_cache_get( $post->topic_id, 'bb_topic' ) ) + $topic_ids[] = (int) $post->topic_id; + + if ( !$topic_ids ) + return; + + sort( $topic_ids ); + $topic_ids = join(',', $topic_ids); + + if ( $topics = $bbdb->get_results( "SELECT * FROM $bbdb->topics WHERE topic_id IN($topic_ids)" ) ) + bb_append_meta( $topics, 'topic' ); +} + +function bb_get_latest_posts( $limit = 0, $page = 1 ) { + $limit = (int) $limit; + $post_query = new BB_Query( 'post', array( 'page' => $page, 'per_page' => $limit ), 'get_latest_posts' ); + return $post_query->results; +} + +function bb_get_latest_forum_posts( $forum_id, $limit = 0, $page = 1 ) { + $forum_id = (int) $forum_id; + $limit = (int) $limit; + $post_query = new BB_Query( 'post', array( 'forum_id' => $forum_id, 'page' => $page, 'per_page' => $limit ), 'get_latest_forum_posts' ); + return $post_query->results; +} + +function bb_insert_post( $args = null ) { + global $bbdb, $bb_current_user, $bb; + + if ( !$args = wp_parse_args( $args ) ) + return false; + + $fields = array_keys( $args ); + + if ( isset($args['post_id']) && false !== $args['post_id'] ) { + $update = true; + if ( !$post_id = (int) get_post_id( $args['post_id'] ) ) + return false; + // Get from db, not cache. Good idea? + $post = $bbdb->get_row( $bbdb->prepare( "SELECT * FROM $bbdb->posts WHERE post_id = %d", $post_id ) ); + $defaults = get_object_vars( $post ); + unset( $defaults['post_id'] ); + + // Only update the args we passed + $fields = array_intersect( $fields, array_keys($defaults) ); + if ( in_array( 'topic_id', $fields ) ) + $fields[] = 'forum_id'; + + // No need to run filters if these aren't changing + // bb_new_post() and bb_update_post() will always run filters + $run_filters = (bool) array_intersect( array( 'post_status', 'post_text' ), $fields ); + } else { + $post_id = false; + $update = false; + $now = bb_current_time( 'mysql' ); + $current_user_id = bb_get_current_user_info( 'id' ); + $ip_address = $_SERVER['REMOTE_ADDR']; + + $defaults = array( + 'topic_id' => 0, + 'post_text' => '', + 'post_time' => $now, + 'poster_id' => $current_user_id, // accepts ids or names + 'poster_ip' => $ip_address, + 'post_status' => 0, // use bb_delete_post() instead + 'post_position' => false + ); + + // Insert all args + $fields = array_keys($defaults); + $fields[] = 'forum_id'; + + $run_filters = true; + } + + $defaults['throttle'] = true; + extract( wp_parse_args( $args, $defaults ) ); + + // If the user is not logged in and loginless posting is ON, then this function expects $post_author, $post_email and $post_url to be sanitized (check bb-post.php for example) + + if ( !$topic = get_topic( $topic_id ) ) + return false; + + if ( bb_is_login_required() && ! $user = bb_get_user( $poster_id ) ) + return false; + + $topic_id = (int) $topic->topic_id; + $forum_id = (int) $topic->forum_id; + + if ( $run_filters && !$post_text = apply_filters('pre_post', $post_text, $post_id, $topic_id) ) + return false; + + if ( $update ) // Don't change post_status with this function. Use bb_delete_post(). + $post_status = $post->post_status; + + if ( $run_filters ) + $post_status = (int) apply_filters('pre_post_status', $post_status, $post_id, $topic_id); + + if ( false === $post_position ) + $post_position = $topic_posts = intval( ( 0 == $post_status ) ? $topic->topic_posts + 1 : $topic->topic_posts ); + + unset($defaults['throttle']); + + if ( $update ) { + $bbdb->update( $bbdb->posts, compact( $fields ), compact( 'post_id' ) ); + wp_cache_delete( $post_id, 'bb_post' ); + } else { + $bbdb->insert( $bbdb->posts, compact( $fields ) ); + $post_id = $topic_last_post_id = (int) $bbdb->insert_id; + + if ( 0 == $post_status ) { + $topic_time = $post_time; + $topic_last_poster = ( ! bb_is_user_logged_in() && ! bb_is_login_required() ) ? -1 : $poster_id; + $topic_last_poster_name = ( ! bb_is_user_logged_in() && ! bb_is_login_required() ) ? $post_author : $user->user_login; + + $bbdb->query( $bbdb->prepare( "UPDATE $bbdb->forums SET posts = posts + 1 WHERE forum_id = %d;", $topic->forum_id ) ); + $bbdb->update( + $bbdb->topics, + compact( 'topic_time', 'topic_last_poster', 'topic_last_poster_name', 'topic_last_post_id', 'topic_posts' ), + compact ( 'topic_id' ) + ); + + $query = new BB_Query( 'post', array( 'post_author_id' => $poster_id, 'topic_id' => $topic_id, 'post_id' => "-$post_id" ) ); + if ( !$query->results ) { + $topics_replied_key = $bbdb->prefix . 'topics_replied'; + bb_update_usermeta( $poster_id, $topics_replied_key, $user->$topics_replied_key + 1 ); + } + + } else { + bb_update_topicmeta( $topic->topic_id, 'deleted_posts', isset($topic->deleted_posts) ? $topic->deleted_posts + 1 : 1 ); + } + } + bb_update_topic_voices( $topic_id ); + + // if user not logged in, save user data as meta data + if ( !$user ) { + bb_update_meta($post_id, 'post_author', $post_author, 'post'); + bb_update_meta($post_id, 'post_email', $post_email, 'post'); + bb_update_meta($post_id, 'post_url', $post_url, 'post'); + } + + if ( $throttle && !bb_current_user_can( 'throttle' ) ) { + if ( $user ) + bb_update_usermeta( $poster_id, 'last_posted', time() ); + else + bb_set_transient( $_SERVER['REMOTE_ADDR'] . '_last_posted', time() ); + } + + if ( !bb_is_login_required() && !$user = bb_get_user( $poster_id ) ) { + $post_cookie_lifetime = apply_filters( 'bb_post_cookie_lifetime', 30000000 ); + setcookie( 'post_author_' . BB_HASH, $post_author, time() + $post_cookie_lifetime, $bb->cookiepath, $bb->cookiedomain ); + setcookie( 'post_author_email_' . BB_HASH, $post_email, time() + $post_cookie_lifetime, $bb->cookiepath, $bb->cookiedomain ); + setcookie( 'post_author_url_' . BB_HASH, $post_url, time() + $post_cookie_lifetime, $bb->cookiepath, $bb->cookiedomain ); + } + + wp_cache_delete( $topic_id, 'bb_topic' ); + wp_cache_delete( $topic_id, 'bb_thread' ); + wp_cache_delete( $forum_id, 'bb_forum' ); + wp_cache_flush( 'bb_forums' ); + wp_cache_flush( 'bb_query' ); + wp_cache_flush( 'bb_cache_posts_post_ids' ); + + if ( $update ) // fire actions after cache is flushed + do_action( 'bb_update_post', $post_id ); + else + do_action( 'bb_new_post', $post_id ); + + do_action( 'bb_insert_post', $post_id, $args, compact( array_keys($args) ) ); // post_id, what was passed, what was used + + if (bb_get_option('enable_pingback')) { + bb_update_postmeta($post_id, 'pingback_queued', ''); + wp_schedule_single_event(time(), 'do_pingbacks'); + } + + return $post_id; +} + +// Deprecated: expects $post_text to be pre-escaped +function bb_new_post( $topic_id, $post_text ) { + $post_text = stripslashes( $post_text ); + return bb_insert_post( compact( 'topic_id', 'post_text' ) ); +} + +// Deprecated: expects $post_text to be pre-escaped +function bb_update_post( $post_text, $post_id, $topic_id ) { + $post_text = stripslashes( $post_text ); + return bb_insert_post( compact( 'post_text', 'post_id', 'topic_id' ) ); +} + +function bb_update_post_positions( $topic_id ) { + global $bbdb; + $topic_id = (int) $topic_id; + $posts = get_thread( $topic_id, array( 'per_page' => '-1' ) ); + if ( $posts ) { + foreach ( $posts as $i => $post ) { + $bbdb->query( $bbdb->prepare( "UPDATE $bbdb->posts SET post_position = %d WHERE post_id = %d", $i + 1, $post->post_id ) ); + wp_cache_delete( (int) $post->post_id, 'bb_post' ); + } + wp_cache_delete( $topic_id, 'bb_thread' ); + wp_cache_flush( 'bb_query' ); + wp_cache_flush( 'bb_cache_posts_post_ids' ); + return true; + } else { + return false; + } +} + +function bb_delete_post( $post_id, $new_status = 0 ) { + global $bbdb, $topic, $bb_post; + $post_id = (int) $post_id; + $bb_post = bb_get_post ( $post_id ); + $new_status = (int) $new_status; + $old_status = (int) $bb_post->post_status; + add_filter( 'get_topic_where', 'bb_no_where' ); + $topic = get_topic( $bb_post->topic_id ); + $topic_id = (int) $topic->topic_id; + + if ( $bb_post ) { + $uid = (int) $bb_post->poster_id; + if ( $new_status == $old_status ) + return; + _bb_delete_post( $post_id, $new_status ); + if ( 0 == $old_status ) { + bb_update_topicmeta( $topic_id, 'deleted_posts', $topic->deleted_posts + 1 ); + $bbdb->query( $bbdb->prepare( "UPDATE $bbdb->forums SET posts = posts - 1 WHERE forum_id = %d", $topic->forum_id ) ); + } else if ( 0 == $new_status ) { + bb_update_topicmeta( $topic_id, 'deleted_posts', $topic->deleted_posts - 1 ); + $bbdb->query( $bbdb->prepare( "UPDATE $bbdb->forums SET posts = posts + 1 WHERE forum_id = %d", $topic->forum_id ) ); + } + $posts = (int) $bbdb->get_var( $bbdb->prepare( "SELECT COUNT(*) FROM $bbdb->posts WHERE topic_id = %d AND post_status = 0", $topic_id ) ); + $bbdb->update( $bbdb->topics, array( 'topic_posts' => $posts ), compact( 'topic_id' ) ); + + if ( 0 == $posts ) { + if ( 0 == $topic->topic_status || 1 == $new_status ) + bb_delete_topic( $topic_id, $new_status ); + } else { + if ( 0 != $topic->topic_status ) { + $bbdb->update( $bbdb->topics, array( 'topic_status' => 0 ), compact( 'topic_id' ) ); + $bbdb->query( $bbdb->prepare( "UPDATE $bbdb->forums SET topics = topics + 1 WHERE forum_id = %d", $topic->forum_id ) ); + } + bb_topic_set_last_post( $topic_id ); + bb_update_post_positions( $topic_id ); + bb_update_topic_voices( $topic_id ); + } + + $user = bb_get_user( $uid ); + + $user_posts = new BB_Query( 'post', array( 'post_author_id' => $user->ID, 'topic_id' => $topic_id ) ); + if ( $new_status && !$user_posts->results ) { + $topics_replied_key = $bbdb->prefix . 'topics_replied'; + bb_update_usermeta( $user->ID, $topics_replied_key, $user->$topics_replied_key - 1 ); + } + wp_cache_delete( $topic_id, 'bb_topic' ); + wp_cache_delete( $topic_id, 'bb_thread' ); + wp_cache_flush( 'bb_forums' ); + wp_cache_flush( 'bb_query' ); + wp_cache_flush( 'bb_cache_posts_post_ids' ); + do_action( 'bb_delete_post', $post_id, $new_status, $old_status ); + return $post_id; + } else { + return false; + } +} + +function _bb_delete_post( $post_id, $post_status ) { + global $bbdb; + $post_id = (int) $post_id; + $post_status = (int) $post_status; + $bbdb->update( $bbdb->posts, compact( 'post_status' ), compact( 'post_id' ) ); + wp_cache_delete( $post_id, 'bb_post' ); + do_action( '_bb_delete_post', $post_id, $post_status ); +} + +function bb_topics_replied_on_undelete_post( $post_id ) { + global $bbdb; + $bb_post = bb_get_post( $post_id ); + $topic = get_topic( $bb_post->topic_id ); + + $user_posts = new BB_Query( 'post', array( 'post_author_id' => $bb_post->poster_id, 'topic_id' => $topic->topic_id ) ); + + if ( 1 == count($user_posts) && $user = bb_get_user( $bb_post->poster_id ) ) { + $topics_replied_key = $bbdb->prefix . 'topics_replied'; + bb_update_usermeta( $user->ID, $topics_replied_key, $user->$topics_replied_key + 1 ); + } +} + +function bb_post_author_cache($posts) { + if ( !$posts ) + return; + + $ids = array(); + foreach ($posts as $bb_post) + $ids[] = $bb_post->poster_id; + + if ( $ids ) + bb_cache_users(array_unique($ids)); +} + +// These two filters are lame. It'd be nice if we could do this in the query parameters +function bb_get_recent_user_replies_fields( $fields ) { + return 'MAX( p.post_id ) AS post_id'; +} + +function bb_get_recent_user_replies_group_by() { + return 'p.topic_id'; +} + +function bb_get_recent_user_replies( $user_id ) { + global $bbdb; + $user_id = (int) $user_id; + + $post_query = new BB_Query( + 'post', + array( + 'post_author_id' => $user_id, + 'order_by' => 'post_id', + 'post_id_only' => true, + ), + 'get_recent_user_replies' + ); + + return $post_query->results; +} + +/** + * Sends notification emails for new posts. + * + * Gets new post's ID and check if there are subscribed + * user to that topic, and if there are, send notifications + * + * @since 1.1 + * + * @param int $post_id ID of new post + */ +function bb_notify_subscribers( $post_id ) { + global $bbdb, $bb_ksd_pre_post_status; + + if ( !empty( $bb_ksd_pre_post_status ) ) + return false; + + if ( !$post = bb_get_post( $post_id ) ) + return false; + + if ( !$topic = get_topic( $post->topic_id ) ) + return false; + + $post_id = $post->post_id; + $topic_id = $topic->topic_id; + + if ( !$poster_name = get_post_author( $post_id ) ) + return false; + + do_action( 'bb_pre_notify_subscribers', $post_id, $topic_id ); + + if ( !$user_ids = $bbdb->get_col( $bbdb->prepare( "SELECT `$bbdb->term_relationships`.`object_id` + FROM $bbdb->term_relationships, $bbdb->term_taxonomy, $bbdb->terms + WHERE `$bbdb->term_relationships`.`term_taxonomy_id` = `$bbdb->term_taxonomy`.`term_taxonomy_id` + AND `$bbdb->term_taxonomy`.`term_id` = `$bbdb->terms`.`term_id` + AND `$bbdb->term_taxonomy`.`taxonomy` = 'bb_subscribe' + AND `$bbdb->terms`.`slug` = 'topic-%d'", + $topic_id ) ) ) + return false; + + foreach ( (array) $user_ids as $user_id ) { + if ( $user_id == $post->poster_id ) + continue; // don't send notifications to the person who made the post + + $user = bb_get_user( $user_id ); + + if ( !$message = apply_filters( 'bb_subscription_mail_message', __( "%1\$s wrote:\n\n%2\$s\n\nRead this post on the forums: %3\$s\n\nYou're getting this email because you subscribed to '%4\$s.'\nPlease click the link above, login, and click 'Unsubscribe' at the top of the page to stop receiving emails from this topic." ), $post_id, $topic_id ) ) + continue; /* For plugins */ + + bb_mail( + $user->user_email, + apply_filters( 'bb_subscription_mail_title', '[' . bb_get_option( 'name' ) . '] ' . $topic->topic_title, $post_id, $topic_id ), + sprintf( $message, $poster_name, strip_tags( $post->post_text ), get_post_link( $post_id ), strip_tags( $topic->topic_title ) ) + ); + } + + do_action( 'bb_post_notify_subscribers', $post_id, $topic_id ); +} + +/** + * Updates user's subscription status in database. + * + * Gets user's new subscription status for topic and + * adds new status to database. + * + * @since 1.1 + * + * @param int $topic_id ID of topic for subscription + * @param string $new_status New subscription status + * @param int $user_id Optional. ID of user for subscription + */ +function bb_subscription_management( $topic_id, $new_status, $user_id = '' ) { + global $bbdb, $wp_taxonomy_object; + + $topic = get_topic( $topic_id ); + if (!$user_id) { + $user_id = bb_get_current_user_info( 'id' ); + } + + do_action( 'bb_subscripton_management', $topic_id, $new_status, $user_id ); + + switch ( $new_status ) { + case 'add': + $tt_ids = $wp_taxonomy_object->set_object_terms( $user_id, 'topic-' . $topic->topic_id, 'bb_subscribe', array( 'append' => true, 'user_id' => $user_id ) ); + break; + case 'remove': + // I hate this with the passion of a thousand suns + $term_id = $bbdb->get_var( "SELECT term_id FROM $bbdb->terms WHERE slug = 'topic-$topic->topic_id'" ); + $term_taxonomy_id = $bbdb->get_var( "SELECT term_taxonomy_id FROM $bbdb->term_taxonomy WHERE term_id = $term_id AND taxonomy = 'bb_subscribe'" ); + $bbdb->query( "DELETE FROM $bbdb->term_relationships WHERE object_id = $user_id AND term_taxonomy_id = $term_taxonomy_id" ); + $bbdb->query( "DELETE FROM $bbdb->term_taxonomy WHERE term_id = $term_id AND taxonomy = 'bb_subscribe'" ); + break; + } + +} + +/** + * Process subscription checkbox submission. + * + * Get ID of and new subscription status and pass values to + * bb_user_subscribe_checkbox_update function + * + * @since 1.1 + * + * @param int $post_id ID of new/edited post + */ +function bb_user_subscribe_checkbox_update( $post_id ) { + if ( !bb_is_user_logged_in() ) + return false; + + $post = bb_get_post( $post_id ); + $topic_id = (int) $post->topic_id; + $subscribed = bb_is_user_subscribed( array( 'topic_id' => $topic_id, 'user_id' => $post->poster_id ) ) ? true : false; + $check = $_REQUEST['subscription_checkbox']; + + do_action( 'bb_user_subscribe_checkbox_update', $post_id, $topic_id, $subscribe, $check ); + + if ( 'subscribe' == $check && !$subscribed ) + bb_subscription_management( $topic_id, 'add' ); + elseif ( !$check && $subscribed ) + bb_subscription_management( $topic_id, 'remove' ); + +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-script-loader.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-script-loader.php new file mode 100644 index 0000000..c90e70c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-script-loader.php @@ -0,0 +1,100 @@ +<?php + +function bb_default_scripts( &$scripts ) { + $scripts->base_url = bb_get_uri( BB_INC, null, BB_URI_CONTEXT_SCRIPT_SRC ); + $scripts->base_url_admin = bb_get_uri( 'bb-admin/', null, BB_URI_CONTEXT_SCRIPT_SRC + BB_URI_CONTEXT_BB_ADMIN ); + $scripts->content_url = ''; // May not work - might need to specify plugin and theme urls + $scripts->default_version = bb_get_option( 'version' ); + $scripts->default_dirs = array( '/bb-admin/js/', '/bb-includes/js/' ); + + // These are our enqueued scripts + $scripts->add( 'topic', $scripts->base_url . 'js/topic.js', array('wp-lists'), '20090602' ); + $scripts->add( 'profile-edit', $scripts->base_url . 'js/profile-edit.js', array('password-strength-meter'), '20080721' ); + $scripts->add( 'admin-forums', $scripts->base_url_admin . 'js/admin-forums.js', array('wp-lists', 'interface'), '20090320' ); + $scripts->add( 'utils', $scripts->base_url_admin . 'js/utils.js', false, '20090102' ); + $scripts->add( 'common', $scripts->base_url_admin . 'js/common.js', array('jquery', 'hoverIntent', 'utils'), '20090517' ); + $scripts->add_data( 'common', 'group', 1 ); + $scripts->localize( 'common', 'commonL10n', array( + 'warnDelete' => __( "You are about to delete the selected items.\n 'Cancel' to stop, 'OK' to delete." ), + 'l10n_print_after' => 'try{convertEntities(commonL10n);}catch(e){};' + ) ); + $scripts->localize( 'admin-forums', 'bbSortForumsL10n', array( + 'handleText' => __('drag'), + 'saveText' => __('Save Forum Order'), + 'editText' => __('Edit Forum Order') + )); + + // These are non-3rd-party libraries + $scripts->add( 'wp-lists', $scripts->base_url . 'js/wp-lists.js', array('wp-ajax-response','jquery-color'), '20080826' ); + $scripts->localize( 'wp-lists', 'wpListL10n', array( + 'url' => $scripts->base_url_admin . 'admin-ajax.php' + ) ); + $scripts->add( 'wp-ajax-response', $scripts->base_url . 'js/wp-ajax-response.js', array('jquery'), '20080316' ); + $scripts->localize( 'wp-ajax-response', 'wpAjax', array( + 'noPerm' => __('You do not have permission to do that.'), + 'broken' => __('An unidentified error has occurred.') + ) ); + + // jQuery and friends + $scripts->add( 'jquery', $scripts->base_url . 'js/jquery/jquery.js', false, '1.4.2' ); + $scripts->add( 'jquery-color', $scripts->base_url . 'js/jquery/jquery.color.js', array('jquery'), '2.0-4561' ); + $scripts->add( 'interface', $scripts->base_url . 'js/jquery/interface.js', array('jquery'), '1.2.3' ); + $scripts->add( 'password-strength-meter', $scripts->base_url . 'js/jquery/password-strength-meter.js', array('jquery'), '20070405' ); + $scripts->localize( 'password-strength-meter', 'pwsL10n', array( + 'short' => __('Too short'), + 'bad' => __('Bad'), + 'good' => __('Good'), + 'strong' => __('Strong') + )); + $scripts->add( 'hoverIntent', $scripts->base_url . 'js/jquery/hoverIntent.js', array('jquery'), '20090102' ); + $scripts->add_data( 'hoverIntent', 'group', 1 ); +} + +/** + * Reorder JavaScript scripts array to place prototype before jQuery. + * + * @param array $js_array JavaScript scripst array + * @return array Reordered array, if needed. + */ +function bb_prototype_before_jquery( $js_array ) { + if ( false === $jquery = array_search( 'jquery', $js_array, true ) ) + return $js_array; + + if ( false === $prototype = array_search( 'prototype', $js_array, true ) ) + return $js_array; + + if ( $prototype < $jquery ) + return $js_array; + + unset($js_array[$prototype]); + + array_splice( $js_array, $jquery, 0, 'prototype' ); + + return $js_array; +} + +/** + * Load localized script just in time for MCE. + * + * These localizations require information that may not be loaded even by init. + */ +function bb_just_in_time_script_localization() { + wp_localize_script( 'topic', 'bbTopicJS', array( + 'currentUserId' => bb_get_current_user_info( 'id' ), + 'topicId' => get_topic_id(), + 'favoritesLink' => get_favorites_link(), + 'isFav' => (int) is_user_favorite( bb_get_current_user_info( 'id' ) ), + 'confirmPostDelete' => __("Are you sure you want to delete this post?"), + 'confirmPostUnDelete' => __("Are you sure you want to undelete this post?"), + 'favLinkYes' => __( 'favorites' ), + 'favLinkNo' => __( '?' ), + 'favYes' => __( 'This topic is one of your %favLinkYes% [%favDel%]' ), + 'favNo' => __( '%favAdd% (%favLinkNo%)' ), + 'favDel' => __( '×' ), + 'favAdd' => __( 'Add this topic to your favorites' ) + )); +} + +add_action( 'wp_default_scripts', 'bb_default_scripts' ); +add_filter( 'wp_print_scripts', 'bb_just_in_time_script_localization' ); +add_filter( 'print_scripts_array', 'bb_prototype_before_jquery' ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-statistics.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-statistics.php new file mode 100644 index 0000000..5aec0b7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-statistics.php @@ -0,0 +1,250 @@ +<?php +/** + * bbPress Forum Content Statistics Functions + * + * @package bbPress + */ + + + +/** + * Get the total number of forums + * + * @since 1.0 + * @uses $bbdb Database Object + * @uses $bb_total_forums Cache of result generated by previous run + * + * @return int + */ +function get_total_forums() { + global $bbdb, $bb_total_forums; + if ( isset($bb_total_forums) ) + return $bb_total_forums; + $bb_total_forums = $bbdb->get_var("SELECT COUNT(*) FROM $bbdb->forums USE INDEX (PRIMARY)"); + return $bb_total_forums; +} + +/** + * Output the number of forums + * + * @since 1.0 + */ +function total_forums() { + echo apply_filters('total_forums', get_total_forums() ); +} + +/** + * Get the total number of users + * + * @since 1.0 + * @uses $bbdb Database Object + * @uses $bb_total_users Cache of result generated by previous run + * + * @return int + */ +function bb_get_total_users() +{ + global $bbdb, $bb_total_users; + if ( isset( $bb_total_users ) ) { + return $bb_total_users; + } + if ( false === $bb_total_users = apply_filters( 'bb_get_total_users', false ) ) { + $bb_total_users = $bbdb->get_var( "SELECT COUNT(*) FROM $bbdb->users USE INDEX (PRIMARY);" ); + } + return $bb_total_users; +} + +/** + * Output the number of users + * + * @since 1.0 + */ +function bb_total_users() +{ + echo apply_filters( 'total_users', bb_get_total_users() ); +} + +/** + * Get the total number of posts + * + * @since 0.7.2 + * @uses $bbdb Database Object + * @uses $bb_total_posts Cache of result generated by previous run + * + * @return int + */ +function get_total_posts() { + global $bbdb, $bb_total_posts; + if ( isset($bb_total_posts) ) + return $bb_total_posts; + $bb_total_posts = $bbdb->get_var("SELECT SUM(posts) FROM $bbdb->forums"); + return $bb_total_posts; +} + +/** + * Output the number of posts + * + * @since 0.7.2 + */ +function total_posts() { + echo apply_filters('total_posts', get_total_posts() ); +} + +/** + * Get the total number of topics + * + * @since 0.7.2 + * @uses $bbdb Database Object + * @uses $bb_total_topics Cache of result generated by previous run + * + * @return int + */ +function get_total_topics() { + global $bbdb, $bb_total_topics; + if ( isset($bb_total_topics) ) + return $bb_total_topics; + $bb_total_topics = $bbdb->get_var("SELECT SUM(topics) FROM $bbdb->forums"); + return $bb_total_topics; +} + +/** + * Output the number of topics + * + * @since 0.7.2 + */ +function total_topics() { + echo apply_filters('total_topics', get_total_topics()); +} + +/** + * Get the popular topics + * + * @since 0.7.2 + * + * @param int $num Number of topics to return + * @return array + */ +function get_popular_topics( $num = 10 ) { + $query = new BB_Query( 'topic', array('per_page' => $num, 'order_by' => 'topic_posts', 'append_meta' => 0) ); + return $query->results; +} + +/** + * Output the date when current installation was created + * + * @since 0.8 + * + * @param string|array $args Arguments to pass through to bb_get_inception() + */ +function bb_inception( $args = '' ) { + $args = _bb_parse_time_function_args( $args ); + $time = apply_filters( 'bb_inception', bb_get_inception( array('format' => 'mysql') + $args), $args ); + echo _bb_time_function_return( $time, $args ); +} + +/** + * Get the date when current installation was created + * + * @since 0.8 + * @uses $bbdb Database Object + * @uses $bb_inception Result cache + * + * @param string|array $args Formatting options for the timestamp. + * @return int + */ +function bb_get_inception( $args = '' ) { + $args = _bb_parse_time_function_args( $args ); + + global $bbdb, $bb_inception; + if ( !isset($bb_inception) ) + $bb_inception = $bbdb->get_var("SELECT topic_start_time FROM $bbdb->topics ORDER BY topic_start_time LIMIT 1"); + + return apply_filters( 'bb_get_inception', _bb_time_function_return( $bb_inception, $args ) ); +} + +/** + * Get the average number of registrations per day + * + * @since 0.7.2 + * + * @return int|float + */ +function get_registrations_per_day() +{ + return bb_get_total_users() / ceil( ( time() - bb_get_inception( 'timestamp' ) ) / 3600 / 24 ); +} + +/** + * Output the average number of registrations per day + * + * @since 0.7.2 + */ +function registrations_per_day() { + echo apply_filters('registrations_per_day', bb_number_format_i18n(get_registrations_per_day(),3)); +} + +/** + * Get the average number of posts per day + * + * @since 0.7.2 + * + * @return int|float + */ +function get_posts_per_day() { + return get_total_posts() / ceil( ( time() - bb_get_inception( 'timestamp' ) ) / 3600 / 24 ); +} + +/** + * Output the average number of posts per day + * + * @since 0.7.2 + */ +function posts_per_day() { + echo apply_filters('posts_per_day', bb_number_format_i18n(get_posts_per_day(),3)); +} + +/** + * Get the average number of topics per day + * + * @since 0.7.2 + * + * @return int|float + */ +function get_topics_per_day() { + return get_total_topics() / ceil( ( time() - bb_get_inception( 'timestamp' ) ) / 3600 / 24 ); +} + +/** + * Output the average number of topics per day + * + * @since 0.7.2 + */ +function topics_per_day() { + echo apply_filters('topics_per_day', bb_number_format_i18n(get_topics_per_day(),3)); +} + +function bb_get_total_topic_tags() +{ + global $bb_total_topic_tags; + if ( isset($bb_total_topic_tags) ) { + return $bb_total_topic_tags; + } + global $wp_taxonomy_object; + $bb_total_topic_tags = $wp_taxonomy_object->count_terms( 'bb_topic_tag' ); + return $bb_total_topic_tags; +} + +function bb_total_topic_tags() +{ + echo apply_filters( 'bb_total_topic_tags', bb_get_total_topic_tags() ); +} + +function bb_get_topic_tags_per_day() +{ + return bb_get_total_topic_tags() / ceil( ( time() - bb_get_inception( 'timestamp' ) ) / 3600 / 24 ); +} + +function bb_topic_tags_per_day() +{ + echo apply_filters('bb_topic_tags_per_day', bb_number_format_i18n( bb_get_topic_tags_per_day(), 3 ) ); +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-template.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-template.php new file mode 100644 index 0000000..187fd2f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-template.php @@ -0,0 +1,3764 @@ +<?php + +function bb_load_template( $files, $globals = false, $action_arg = null ) +{ + global $bb, $bbdb, $bb_current_user, $page, $bb_cache, + $posts, $bb_post, $post_id, $topics, $topic, $topic_id, + $forums, $forum, $forum_id, $tags, $tag, $tag_name, $user, $user_id, $view, + $del_class, $bb_alt; + + if ( $globals ) { + foreach ( $globals as $global => $v ) { + if ( !is_numeric($global) ) { + $$global = $v; + } else { + global $$v; + } + } + } + + $files = (array) $files; + $template = false; + $default_template = false; + $file_used = false; + $default_file_used = false; + + foreach ( $files as $file ) { + do_action( 'bb_' . $file, $action_arg ); + if ( false !== $template = bb_get_template( $file, false ) ) { + $file_used = $file; + break; + } + if ( !$default_template ) { + if ( false !== $default_template = bb_get_default_template( $file ) ) { + $default_file_used = $file; + } + } + } + + if ( !$template && $default_template ) { + $template = $default_template; + $file_used = $default_file_used; + } + + $template = apply_filters( 'bb_template', $template, $file_used ); + include( $template ); + + do_action( 'bb_after_' . $file_used, $action_arg ); +} + +function bb_get_template( $file, $default = true ) +{ + global $bb; + // Skip theme loading in "safe" mode + if ( !isset( $bb->safemode ) || $bb->safemode !== true ) { + if ( file_exists( bb_get_active_theme_directory() . $file ) ) { + return bb_get_active_theme_directory() . $file; + } + } + + if ( !$default ) { + return false; + } + + return bb_get_default_template( $file ); +} + +function bb_get_default_template( $file ) +{ + if ( file_exists( BB_DEFAULT_THEME_DIR . $file ) ) { + return BB_DEFAULT_THEME_DIR . $file; + } +} + +function bb_get_header() +{ + bb_load_template( 'header.php' ); +} + +function bb_language_attributes( $xhtml = 0 ) +{ + $output = ''; + if ( $dir = bb_get_option( 'text_direction' ) ) { + $output = 'dir="' . $dir . '" '; + } + if ( $lang = bb_get_option( 'language' ) ) { + $output .= 'xml:lang="' . $lang . '" '; + if ( $xhtml < '1.1' ) { + $output .= 'lang="' . $lang . '"'; + } + } + + echo ' ' . rtrim( $output ); +} + +function bb_generator( $type = 'xhtml' ) +{ + if ( !$type ) { + $type = 'xhtml'; + } + echo apply_filters( 'bb_generator', bb_get_generator( $type ) . "\n", $type ); +} + +function bb_get_generator( $type = 'xhtml' ) +{ + if ( !$type ) { + $type = 'xhtml'; + } + switch ( $type ) { + case 'html': + $gen = '<meta name="generator" content="bbPress ' . bb_get_option( 'version' ) . '">'; + break; + case 'xhtml': + $gen = '<meta name="generator" content="bbPress ' . bb_get_option( 'version' ) . '" />'; + break; + case 'atom': + $gen = '<generator uri="http://bbpress.org/" version="' . bb_get_option( 'version' ) . '">bbPress</generator>'; + break; + case 'rss2': + $gen = '<generator>http://bbpress.org/?v=' . bb_get_option( 'version' ) . '</generator>'; + break; + case 'rdf': + $gen = '<admin:generatorAgent rdf:resource="http://bbpress.org/?v=' . bb_get_option( 'version' ) . '" />'; + break; + case 'comment': + $gen = '<!-- generator="bbPress/' . bb_get_option( 'version' ) . '" -->'; + break; + case 'export': + $gen = '<!-- generator="bbPress/' . bb_get_option( 'version' ) . '" created="'. date( 'Y-m-d H:i' ) . '"-->'; + break; + } + return apply_filters( 'bb_get_generator', $gen, $type ); +} + +function bb_stylesheet_uri( $stylesheet = '' ) +{ + echo esc_html( bb_get_stylesheet_uri( $stylesheet ) ); +} + +function bb_get_stylesheet_uri( $stylesheet = '' ) +{ + if ( 'rtl' == $stylesheet ) { + $css_file = 'style-rtl.css'; + } else { + $css_file = 'style.css'; + } + + $active_theme = bb_get_active_theme_directory(); + + if ( file_exists( $active_theme . $css_file ) ) { + $r = bb_get_active_theme_uri() . $css_file; + } else { + $r = BB_DEFAULT_THEME_URL . $css_file; + } + + return apply_filters( 'bb_get_stylesheet_uri', $r, $stylesheet ); +} + +function bb_active_theme_uri() +{ + echo bb_get_active_theme_uri(); +} + +function bb_get_active_theme_uri() +{ + global $bb; + // Skip theme loading in "safe" mode + if ( isset( $bb->safemode ) && $bb->safemode === true ) { + $active_theme_uri = BB_DEFAULT_THEME_URL; + } elseif ( !$active_theme = bb_get_option( 'bb_active_theme' ) ) { + $active_theme_uri = BB_DEFAULT_THEME_URL; + } else { + $active_theme_uri = bb_get_theme_uri( $active_theme ); + } + return apply_filters( 'bb_get_active_theme_uri', $active_theme_uri ); +} + +function bb_get_theme_uri( $theme = false ) +{ + global $bb; + if ( preg_match( '/^([a-z0-9_-]+)#([a-z0-9_-]+)$/i', $theme, $_matches ) ) { + $theme_uri = $bb->theme_locations[$_matches[1]]['url'] . $_matches[2] . '/'; + } else { + $theme_uri = $bb->theme_locations['core']['url']; + } + return apply_filters( 'bb_get_theme_uri', $theme_uri, $theme ); +} + +function bb_get_footer() +{ + bb_load_template( 'footer.php' ); +} + +function bb_head() +{ + do_action('bb_head'); +} + +/** + * Display the link to the Really Simple Discovery service endpoint. + * + * @link http://archipelago.phrasewise.com/rsd + * @since 1.0 + */ +function bb_rsd_link() { + if (bb_get_option('enable_xmlrpc')) + echo '<link rel="EditURI" type="application/rsd+xml" title="RSD" href="' . bb_get_uri('xmlrpc.php', 'rsd', BB_URI_CONTEXT_LINK_OTHER + BB_URI_CONTEXT_BB_XMLRPC) . '" />' . "\n"; +} + +/** + * Display the link to the pingback service endpoint. + * + * @since 1.0 + */ +function bb_pingback_link() { + if (bb_get_option('enable_pingback')) + echo '<link rel="pingback" href="' . bb_get_uri('xmlrpc.php', null, BB_URI_CONTEXT_LINK_OTHER + BB_URI_CONTEXT_BB_XMLRPC) . '" />' . "\n"; +} + +function profile_menu() { + global $user_id, $profile_menu, $self, $profile_page_title; + $list = "<ul id='profile-menu'>"; + $list .= "\n\t<li" . ( ( $self ) ? '' : ' class="current"' ) . '><a href="' . esc_attr( get_user_profile_link( $user_id ) ) . '">' . __('Profile') . '</a></li>'; + $id = bb_get_current_user_info( 'id' ); + foreach ($profile_menu as $item) { + // 0 = name, 1 = users cap, 2 = others cap, 3 = file + $class = ''; + if ( $item[3] == $self ) { + $class = ' class="current"'; + $profile_page_title = $item[0]; + } + if ( bb_can_access_tab( $item, $id, $user_id ) ) + if ( file_exists($item[3]) || is_callable($item[3]) ) + $list .= "\n\t<li$class><a href='" . esc_attr( get_profile_tab_link($user_id, $item[4]) ) . "'>{$item[0]}</a></li>"; + } + $list .= "\n</ul>"; + echo $list; +} + +function login_form() { + if ( bb_is_user_logged_in() ) + bb_load_template( 'logged-in.php' ); + else + bb_load_template( 'login-form.php', array('user_login', 'remember_checked', 'redirect_to', 're') ); +} + +function search_form( $q = '' ) { + bb_load_template( 'search-form.php', array('q' => $q) ); +} + +function bb_post_template() { + bb_load_template( 'post.php' ); +} + +function post_form( $args = array() ) { + global $page, $topic, $forum; + + $defaults = array( + 'h2' => '', + 'last_page_only' => true + ); + if ( is_string( $args ) ) { + $defaults['h2'] = $args; + } + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + if ( isset( $forum->forum_is_category ) && $forum->forum_is_category ) { + return; + } + + $add = topic_pages_add(); + if ( empty( $h2 ) && false !== $h2 ) { + if ( bb_is_topic() ) { + $h2 = __( 'Reply' ); + } elseif ( bb_is_forum() ) { + $h2 = __( 'New Topic in this Forum' ); + } elseif ( bb_is_tag() || bb_is_front() ) { + $h2 = __( 'Add New Topic' ); + } + } + + $last_page = bb_get_page_number( ( isset( $topic->topic_posts ) ? $topic->topic_posts : 0 ) + $add ); + + if ( !empty( $h2 ) ) { + if ( bb_is_topic() && ( $page != $last_page && $last_page_only ) ) { + $h2 = '<a href="' . esc_attr( get_topic_link( 0, $last_page ) . '#postform' ) . '">' . $h2 . ' »</a>'; + } + echo '<h2 class="post-form">' . $h2 . '</h2>' . "\n"; + } + + do_action( 'pre_post_form' ); + + if ( + ( false === bb_is_login_required() ) || + ( bb_is_topic() && bb_current_user_can( 'write_post', $topic->topic_id ) && ( $page == $last_page || !$last_page_only ) ) || + ( !bb_is_topic() && bb_current_user_can( 'write_topic', isset( $forum->forum_id ) ? $forum->forum_id : 0 ) ) + ) { + echo '<form class="postform post-form" id="postform" method="post" action="' . bb_get_uri( 'bb-post.php', null, BB_URI_CONTEXT_FORM_ACTION ) . '">' . "\n"; + echo '<fieldset>' . "\n"; + bb_load_template( 'post-form.php', array('h2' => $h2) ); + bb_nonce_field( bb_is_topic() ? 'create-post_' . $topic->topic_id : 'create-topic' ); + if ( bb_is_forum() ) { + echo '<input type="hidden" name="forum_id" value="' . $forum->forum_id . '" />' . "\n"; + } elseif ( bb_is_topic() ) { + echo '<input type="hidden" name="topic_id" value="' . $topic->topic_id . '" />' . "\n"; + } + do_action( 'post_form' ); + echo "\n</fieldset>\n</form>\n"; + } elseif ( !bb_is_user_logged_in() ) { + echo '<p>'; + printf( + __('You must <a href="%s">log in</a> to post.'), + esc_attr( bb_get_uri( 'bb-login.php', null, BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_USER_FORMS ) ) + ); + echo '</p>'; + } + + do_action( 'post_post_form' ); +} + +function edit_form() { + global $bb_post; + do_action('pre_edit_form'); + echo '<form class="postform edit-form" method="post" action="' . bb_get_uri('bb-edit.php', null, BB_URI_CONTEXT_FORM_ACTION) . '">' . "\n"; + echo '<fieldset>' . "\n"; + bb_load_template( 'edit-form.php', array('topic_title') ); + bb_nonce_field( 'edit-post_' . $bb_post->post_id ); + do_action('edit_form'); + if ($_REQUEST['view'] === 'all') + echo "\n" . '<input type="hidden" name="view" value="all" />'; + echo "\n" . '</fieldset>' . "\n" . '</form>' . "\n"; + do_action('post_edit_form'); +} + +function bb_anonymous_post_form() { + if ( !bb_is_user_logged_in() && !bb_is_login_required() ) + bb_load_template( 'post-form-anonymous.php' ); +} + +function alt_class( $key, $others = '' ) { + echo get_alt_class( $key, $others ); +} + +function get_alt_class( $key, $others = '' ) { + global $bb_alt; + $class = ''; + if ( !isset( $bb_alt[$key] ) ) $bb_alt[$key] = -1; + ++$bb_alt[$key]; + $others = trim($others); + if ( $others xor $bb_alt[$key] % 2 ) + $class = ' class="' . ( ($others) ? $others : 'alt' ) . '"'; + elseif ( $others && $bb_alt[$key] % 2 ) + $class = ' class="' . $others . ' alt"'; + return $class; +} + +function bb_location() { + echo apply_filters( 'bb_location', bb_get_location() ); +} + +function bb_get_location() { // Not for display. Do not internationalize. + static $file; + static $filename; + + if ( !isset( $file ) ) { + $path = ''; + foreach ( array( $_SERVER['SCRIPT_NAME'], $_SERVER['SCRIPT_FILENAME'], $_SERVER['PHP_SELF'] ) as $_path ) { + if ( false !== strpos( $_path, '.php' ) ) { + $path = $_path; + break; + } + } + + $filename = bb_find_filename( $path ); + // Make $file relative to bbPress root directory + $file = str_replace( bb_get_option( 'path' ), '', $path ); + } + + switch ( $filename ) { + case 'index.php': + case 'page.php': + $location = 'front-page'; + break; + case 'forum.php': + $location = 'forum-page'; + break; + case 'tags.php': + $location = 'tag-page'; + break; + case 'edit.php': + $location = 'topic-edit-page'; + break; + case 'topic.php': + $location = 'topic-page'; + break; + case 'rss.php': + $location = 'feed-page'; + break; + case 'search.php': + $location = 'search-page'; + break; + case 'profile.php': + $location = 'profile-page'; + break; + case 'favorites.php': + $location = 'favorites-page'; + break; + case 'view.php': + $location = 'view-page'; + break; + case 'statistics.php': + $location = 'stats-page'; + break; + case 'bb-login.php': + $location = 'login-page'; + break; + case 'register.php': + $location = 'register-page'; + break; + default: + $location = apply_filters( 'bb_get_location', '', $file ); + break; + } + + return $location; +} + +function bb_is_front() { + return 'front-page' == bb_get_location(); +} + +function bb_is_forum() { + return 'forum-page' == bb_get_location(); +} + +/** + * Whether a user is required to log in in order to create posts and forums. + * @return bool Whether a user must be logged in. + */ +function bb_is_login_required() { + return ! (bool) bb_get_option('enable_loginless'); +} + +function bb_is_tags() { + return 'tag-page' == bb_get_location(); +} + +function bb_is_tag() { + global $tag, $tag_name; + return $tag && $tag_name && bb_is_tags(); +} + +function bb_is_topic_edit() { + return 'topic-edit-page' == bb_get_location(); +} + +function bb_is_topic() { + return 'topic-page' == bb_get_location(); +} + +function bb_is_feed() { + return 'feed-page' == bb_get_location(); +} + +function bb_is_search() { + return 'search-page' == bb_get_location(); +} + +function bb_is_profile() { + return 'profile-page' == bb_get_location(); +} + +function bb_is_favorites() { + return 'favorites-page' == bb_get_location(); +} + +function bb_is_view() { + return 'view-page' == bb_get_location(); +} + +function bb_is_statistics() { + return 'stats-page' == bb_get_location(); +} + +function bb_is_admin() { + if ( defined('BB_IS_ADMIN') ) + return BB_IS_ADMIN; + return false; +} + +function bb_title( $args = '' ) { + echo apply_filters( 'bb_title', bb_get_title( $args ), $args ); +} + +function bb_get_title( $args = '' ) { + $defaults = array( + 'separator' => ' « ', + 'order' => 'normal', + 'front' => '' + ); + $args = wp_parse_args( $args, $defaults ); + $title = array(); + + switch ( bb_get_location() ) { + case 'search-page': + if ( !$q = trim( @$_GET['search'] ) ) + if ( !$q = trim( @$_GET['q'] ) ) + break; + $title[] = sprintf( __( 'Search for %s' ), esc_html( $q ) ); + break; + case 'front-page': + if ( !empty( $args['front'] ) ) + $title[] = $args['front']; + break; + + case 'topic-edit-page': + case 'topic-page': + $title[] = get_topic_title(); + break; + + case 'forum-page': + $title[] = get_forum_name(); + break; + + case 'tag-page': + if ( bb_is_tag() ) + $title[] = esc_html( bb_get_tag_name() ); + + $title[] = __( 'Tags' ); + break; + + case 'profile-page': + $title[] = get_user_display_name(); + break; + + case 'view-page': + $title[] = get_view_name(); + break; + } + + if ( $st = bb_get_option( 'static_title' ) ) + $title = array( $st ); + + $title[] = bb_get_option( 'name' ); + + if ( 'reversed' == $args['order'] ) + $title = array_reverse( $title ); + + return apply_filters( 'bb_get_title', implode( $args['separator'], $title ), $args, $title ); +} + +function bb_feed_head() { + + $feeds = array(); + + switch (bb_get_location()) { + case 'profile-page': + if ( $tab = isset($_GET['tab']) ? $_GET['tab'] : bb_get_path(2) ) + if ($tab != 'favorites') + break; + + $feeds[] = array( + 'title' => sprintf(__('%1$s » User Favorites: %2$s'), bb_get_option( 'name' ), get_user_name()), + 'href' => get_favorites_rss_link(0, BB_URI_CONTEXT_LINK_ALTERNATE_HREF + BB_URI_CONTEXT_BB_FEED) + ); + break; + + case 'topic-page': + $feeds[] = array( + 'title' => sprintf(__('%1$s » Topic: %2$s'), bb_get_option( 'name' ), get_topic_title()), + 'href' => get_topic_rss_link(0, BB_URI_CONTEXT_LINK_ALTERNATE_HREF + BB_URI_CONTEXT_BB_FEED) + ); + break; + + case 'tag-page': + if (bb_is_tag()) { + $feeds[] = array( + 'title' => sprintf(__('%1$s » Tag: %2$s - Recent Posts'), bb_get_option( 'name' ), bb_get_tag_name()), + 'href' => bb_get_tag_posts_rss_link(0, BB_URI_CONTEXT_LINK_ALTERNATE_HREF + BB_URI_CONTEXT_BB_FEED) + ); + $feeds[] = array( + 'title' => sprintf(__('%1$s » Tag: %2$s - Recent Topics'), bb_get_option( 'name' ), bb_get_tag_name()), + 'href' => bb_get_tag_topics_rss_link(0, BB_URI_CONTEXT_LINK_ALTERNATE_HREF + BB_URI_CONTEXT_BB_FEED) + ); + } + break; + + case 'forum-page': + $feeds[] = array( + 'title' => sprintf(__('%1$s » Forum: %2$s - Recent Posts'), bb_get_option( 'name' ), get_forum_name()), + 'href' => bb_get_forum_posts_rss_link(0, BB_URI_CONTEXT_LINK_ALTERNATE_HREF + BB_URI_CONTEXT_BB_FEED) + ); + $feeds[] = array( + 'title' => sprintf(__('%1$s » Forum: %2$s - Recent Topics'), bb_get_option( 'name' ), get_forum_name()), + 'href' => bb_get_forum_topics_rss_link(0, BB_URI_CONTEXT_LINK_ALTERNATE_HREF + BB_URI_CONTEXT_BB_FEED) + ); + break; + + case 'front-page': + $feeds[] = array( + 'title' => sprintf(__('%1$s » Recent Posts'), bb_get_option( 'name' )), + 'href' => bb_get_posts_rss_link(BB_URI_CONTEXT_LINK_ALTERNATE_HREF + BB_URI_CONTEXT_BB_FEED) + ); + $feeds[] = array( + 'title' => sprintf(__('%1$s » Recent Topics'), bb_get_option( 'name' )), + 'href' => bb_get_topics_rss_link(BB_URI_CONTEXT_LINK_ALTERNATE_HREF + BB_URI_CONTEXT_BB_FEED) + ); + break; + + case 'view-page': + global $bb_views, $view; + if ($bb_views[$view]['feed']) { + $feeds[] = array( + 'title' => sprintf(__('%1$s » View: %2$s'), bb_get_option( 'name' ), get_view_name()), + 'href' => bb_get_view_rss_link(null, BB_URI_CONTEXT_LINK_ALTERNATE_HREF + BB_URI_CONTEXT_BB_FEED) + ); + } + break; + } + + if (count($feeds)) { + $feed_links = array(); + foreach ($feeds as $feed) { + $link = '<link rel="alternate" type="application/rss+xml" '; + $link .= 'title="' . esc_attr($feed['title']) . '" '; + $link .= 'href="' . esc_attr($feed['href']) . '" />'; + $feed_links[] = $link; + } + $feed_links = join("\n", $feed_links); + } else { + $feed_links = ''; + } + + echo apply_filters('bb_feed_head', $feed_links); +} + +function bb_get_posts_rss_link($context = 0) { + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + if ( bb_get_option( 'mod_rewrite' ) ) + $link = bb_get_uri('rss/', null, $context); + else + $link = bb_get_uri('rss.php', null, $context); + return apply_filters( 'bb_get_posts_rss_link', $link, $context ); +} + +function bb_get_topics_rss_link($context = 0) { + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + if ( bb_get_option( 'mod_rewrite' ) ) + $link = bb_get_uri('rss/topics', null, $context); + else + $link = bb_get_uri('rss.php', array('topics' => 1), $context); + return apply_filters( 'bb_get_topics_rss_link', $link, $context ); +} + +function bb_view_rss_link($view = null, $context = 0) { + echo apply_filters( 'bb_view_rss_link', bb_get_view_rss_link($view, $context), $context); +} + +function bb_get_view_rss_link($view = null, $context = 0) { + if (!$view) { + global $view; + } + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + if ( bb_get_option( 'mod_rewrite' ) ) + $link = bb_get_uri('rss/view/' . $view, null, $context); + else + $link = bb_get_uri('rss.php', array('view' => $view), $context); + return apply_filters( 'bb_get_view_rss_link', $link, $context ); +} + +function bb_latest_topics_pages( $args = null ) +{ + $defaults = array( 'before' => '', 'after' => '' ); + $args = wp_parse_args( $args, $defaults ); + + global $page; + static $bb_latest_topics_count; + if ( !$bb_latest_topics_count) { + global $bbdb; + $bb_latest_topics_count = $bbdb->get_var('SELECT COUNT(`topic_id`) FROM `' . $bbdb->topics . '` WHERE `topic_status` = 0 AND `topic_sticky` != 2;'); + } + if ( $pages = apply_filters( 'bb_latest_topics_pages', get_page_number_links( $page, $bb_latest_topics_count ), $bb_latest_topics_count ) ) { + echo $args['before'] . $pages . $args['after']; + } +} + +// FORUMS + +function forum_id( $forum_id = 0 ) { + echo apply_filters( 'forum_id', get_forum_id( $forum_id ) ); +} + +function get_forum_id( $forum_id = 0 ) { + global $forum; + $forum_id = (int) $forum_id; + if ( $forum_id ) + $_forum = bb_get_forum( $forum_id ); + else + $_forum =& $forum; + return $_forum->forum_id; +} + +function forum_link( $forum_id = 0, $page = 1, $context = BB_URI_CONTEXT_A_HREF ) { + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF; + } + echo apply_filters('forum_link', get_forum_link( $forum_id, $page, $context ), $forum_id, $context ); +} + +function get_forum_link( $forum_id = 0, $page = 1, $context = BB_URI_CONTEXT_A_HREF ) { + $forum = bb_get_forum( get_forum_id( $forum_id ) ); + + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF; + } + + $rewrite = bb_get_option( 'mod_rewrite' ); + if ( $rewrite ) { + if ( $rewrite === 'slugs' ) { + $column = 'forum_slug'; + } else { + $column = 'forum_id'; + } + $page = (1 < $page) ? '/page/' . $page : ''; + $link = bb_get_uri('forum/' . $forum->$column . $page, null, $context); + } else { + $query = array( + 'id' => $forum->forum_id, + 'page' => (1 < $page) ? $page : false + ); + $link = bb_get_uri('forum.php', $query, $context); + } + + return apply_filters( 'get_forum_link', $link, $forum->forum_id, $context ); +} + +function forum_name( $forum_id = 0 ) { + echo apply_filters( 'forum_name', get_forum_name( $forum_id ), $forum_id ); +} + +function get_forum_name( $forum_id = 0 ) { + $forum = bb_get_forum( get_forum_id( $forum_id ) ); + return apply_filters( 'get_forum_name', $forum->forum_name, $forum->forum_id ); +} + +function forum_description( $args = null ) { + if ( is_numeric($args) ) + $args = array( 'id' => $args ); + elseif ( $args && is_string($args) && false === strpos($args, '=') ) + $args = array( 'before' => $args ); + $defaults = array( 'id' => 0, 'before' => ' – ', 'after' => '' ); + $args = wp_parse_args( $args, $defaults ); + + if ( $desc = apply_filters( 'forum_description', get_forum_description( $args['id'] ), $args['id'], $args ) ) + echo $args['before'] . $desc . $args['after']; +} + +function get_forum_description( $forum_id = 0 ) { + $forum = bb_get_forum( get_forum_id( $forum_id ) ); + return apply_filters( 'get_forum_description', $forum->forum_desc, $forum->forum_id ); +} + +function get_forum_parent( $forum_id = 0 ) { + $forum = bb_get_forum( get_forum_id( $forum_id ) ); + return apply_filters( 'get_forum_parent', $forum->forum_parent, $forum->forum_id ); +} + +function get_forum_position( $forum_id = 0 ) { + $forum = bb_get_forum( get_forum_id( $forum_id ) ); + return apply_filters( 'get_forum_position', $forum->forum_order, $forum->forum_id ); +} + +function bb_get_forum_is_category( $forum_id = 0 ) { + $forum = bb_get_forum( get_forum_id( $forum_id ) ); + return apply_filters( 'bb_get_forum_is_category', isset($forum->forum_is_category) ? $forum->forum_is_category : false, $forum->forum_id ); +} + +function forum_topics( $forum_id = 0 ) { + echo apply_filters( 'forum_topics', get_forum_topics( $forum_id ), $forum_id ); +} + +function get_forum_topics( $forum_id = 0 ) { + $forum = bb_get_forum( get_forum_id( $forum_id ) ); + return apply_filters( 'get_forum_topics', $forum->topics, $forum->forum_id ); +} + +function forum_posts( $forum_id = 0 ) { + echo apply_filters( 'forum_posts', get_forum_posts( $forum_id ), $forum_id ); +} + +function get_forum_posts( $forum_id = 0 ) { + $forum = bb_get_forum( get_forum_id( $forum_id ) ); + return apply_filters( 'get_forum_posts', $forum->posts, $forum->forum_id ); +} + +function forum_pages( $args = null ) +{ + // Compatibility + if ( $args && is_numeric( $args ) ) { + $args = array( 'id' => $args ); + } + $defaults = array( 'id' => 0, 'before' => '', 'after' => '' ); + $args = wp_parse_args( $args, $defaults ); + + global $page; + $forum = bb_get_forum( get_forum_id( $args['id'] ) ); + if ( $pages = apply_filters( 'forum_pages', get_page_number_links( $page, $forum->topics ), $forum->topics ) ) { + echo $args['before'] . $pages . $args['after']; + } +} + +function bb_forum_posts_rss_link( $forum_id = 0, $context = 0 ) { + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + echo apply_filters('bb_forum_posts_rss_link', bb_get_forum_posts_rss_link( $forum_id, $context ), $context ); +} + +function bb_get_forum_posts_rss_link( $forum_id = 0, $context = 0 ) { + $forum = bb_get_forum( get_forum_id( $forum_id ) ); + + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + + $rewrite = bb_get_option( 'mod_rewrite' ); + if ( $rewrite ) { + if ( $rewrite === 'slugs' ) { + $column = 'forum_slug'; + } else { + $column = 'forum_id'; + } + $link = bb_get_uri('rss/forum/' . $forum->$column, null, $context); + } else { + $link = bb_get_uri('rss.php', array('forum' => $forum->forum_id), $context); + } + return apply_filters( 'bb_get_forum_posts_rss_link', $link, $forum->forum_id, $context ); +} + +function bb_forum_topics_rss_link( $forum_id = 0, $context = 0 ) { + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + echo apply_filters('bb_forum_topics_rss_link', bb_get_forum_topics_rss_link( $forum_id, $context ), $context ); +} + +function bb_get_forum_topics_rss_link( $forum_id = 0, $context = 0 ) { + $forum = bb_get_forum( get_forum_id( $forum_id ) ); + + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + + $rewrite = bb_get_option( 'mod_rewrite' ); + if ( $rewrite ) { + if ( $rewrite === 'slugs' ) { + $column = 'forum_slug'; + } else { + $column = 'forum_id'; + } + $link = bb_get_uri('rss/forum/' . $forum->$column . '/topics', null, $context); + } else { + $link = bb_get_uri('rss.php', array('forum' => $forum->forum_id, 'topics' => 1), $context); + } + return apply_filters( 'bb_get_forum_topics_rss_link', $link, $forum->forum_id, $context ); +} + +function bb_get_forum_bread_crumb($args = '') { + $defaults = array( + 'forum_id' => 0, + 'separator' => ' » ', + 'class' => null + ); + $args = wp_parse_args($args, $defaults); + extract($args, EXTR_SKIP); + + $trail = ''; + $trail_forum = bb_get_forum(get_forum_id($forum_id)); + if ($class) { + $class = ' class="' . $class . '"'; + } + $current_trail_forum_id = $trail_forum->forum_id; + while ( $trail_forum && $trail_forum->forum_id > 0 ) { + $crumb = $separator; + if ($current_trail_forum_id != $trail_forum->forum_id || !bb_is_forum()) { + $crumb .= '<a' . $class . ' href="' . get_forum_link($trail_forum->forum_id) . '">'; + } elseif ($class) { + $crumb .= '<span' . $class . '>'; + } + $crumb .= get_forum_name($trail_forum->forum_id); + if ($current_trail_forum_id != $trail_forum->forum_id || !bb_is_forum()) { + $crumb .= '</a>'; + } elseif ($class) { + $crumb .= '</span>'; + } + $trail = $crumb . $trail; + $trail_forum = bb_get_forum($trail_forum->forum_parent); + } + + return apply_filters('bb_get_forum_bread_crumb', $trail, $forum_id ); +} + +function bb_forum_bread_crumb( $args = '' ) { + echo apply_filters('bb_forum_bread_crumb', bb_get_forum_bread_crumb( $args ) ); +} + +// Forum Loop // + +function &bb_forums( $args = '' ) { + global $bb_forums_loop; + + $default_type = 'flat'; + + if ( is_numeric($args) ) { + $args = array( 'child_of' => $args ); + } elseif ( func_num_args() > 1 ) { // bb_forums( 'ul', $args ); Deprecated + $default_type = $args; + $args = func_get_arg(1); + } elseif ( $args && is_string($args) && false === strpos($args, '=') ) { + $args = array( 'type' => $args ); + } + + // hierarchical not used here. Sent to bb_get_forums for proper ordering. + $args = wp_parse_args( $args, array('hierarchical' => true, 'type' => $default_type, 'walker' => 'BB_Walker_Blank') ); + + $levels = array( '', '' ); + + if ( in_array($args['type'], array('list', 'ul')) ) + $levels = array( '<ul>', '</ul>' ); + + $forums = bb_get_forums( $args ); + + if ( !class_exists($args['walker']) ) + $args['walker'] = 'BB_Walker_Blank'; + + if ( $bb_forums_loop = BB_Loop::start( $forums, $args['walker'] ) ) { + $bb_forums_loop->preserve( array('forum', 'forum_id') ); + $bb_forums_loop->walker->db_fields = array( 'id' => 'forum_id', 'parent' => 'forum_parent' ); + list($bb_forums_loop->walker->start_lvl, $bb_forums_loop->walker->end_lvl) = $levels; + return $bb_forums_loop->elements; + } + $false = false; + return $false; +} + +function bb_forum() { // Returns current depth + global $bb_forums_loop; + if ( !is_object($bb_forums_loop) || !is_a($bb_forums_loop, 'BB_Loop') ) + return false; + if ( !is_array($bb_forums_loop->elements) ) + return false; + + if ( $bb_forums_loop->step() ) { + $GLOBALS['forum'] =& $bb_forums_loop->elements[key($bb_forums_loop->elements)]; // Globalize the current forum object + } else { + $bb_forums_loop->reinstate(); + return $bb_forums_loop = null; // All done? Kill the object and exit the loop. + } + + return $bb_forums_loop->walker->depth; +} + +function bb_forum_pad( $pad, $offset = 0 ) { + global $bb_forums_loop; + if ( !is_object($bb_forums_loop) || !is_a($bb_forums_loop, 'BB_Loop') ) + return false; + + echo $bb_forums_loop->pad( $pad, $offset ); +} + +function bb_forum_class( $args = null ) { + echo apply_filters( 'bb_forum_class', get_alt_class( 'forum', bb_get_forum_class_names( $args ) ), $args ); +} + +function bb_get_forum_class_names( $args = null ) { + if ( is_numeric( $args ) ) { // Not used + $args = array( 'id' => $args ); + } elseif ( $args && is_string( $args ) && false === strpos( $args, '=' ) ) { + $args = array( 'class' => $args ); + } + $defaults = array( 'id' => 0, 'key' => 'forum', 'class' => '', 'output' => 'string' ); + $args = wp_parse_args( $args, $defaults ); + + $classes = array(); + if ( $args['class'] ) { + $classes[] = $args['class']; + } + + global $bb_forums_loop; + if ( is_object( $bb_forums_loop ) && is_a( $bb_forums_loop, 'BB_Loop' ) ) { + $classes = array_merge( $classes, $bb_forums_loop->classes( 'array' ) ); + } + + if ( $args['output'] === 'string' ) { + $classes = join( ' ', $classes ); + } + + return apply_filters( 'bb_get_forum_class', $classes, $args ); +} + +// TOPICS +function topic_id( $id = 0 ) { + echo apply_filters( 'topic_id', get_topic_id( $id ) ); +} + +function get_topic_id( $id = 0 ) { + global $topic; + $id = (int) $id; + if ( $id ) + $_topic = get_topic( $id ); + else + $_topic =& $topic; + + if ( empty($_topic->topic_id) ) + return 0; + + return (int) $_topic->topic_id; +} + +function topic_link( $id = 0, $page = 1, $context = BB_URI_CONTEXT_A_HREF ) { + echo apply_filters( 'topic_link', get_topic_link( $id, $page, $context ), $id, $page, $context ); +} + +function get_topic_link( $id = 0, $page = 1, $context = BB_URI_CONTEXT_A_HREF ) { + $topic = get_topic( get_topic_id( $id ) ); + + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF; + } + + $args = array(); + + $rewrite = bb_get_option( 'mod_rewrite' ); + if ( $rewrite ) { + if ( $rewrite === 'slugs' ) { + $column = 'topic_slug'; + } else { + $column = 'topic_id'; + } + $page = (1 < $page) ? '/page/' . $page : ''; + $link = bb_get_uri('topic/' . $topic->$column . $page, null, $context); + } else { + $page = (1 < $page) ? $page : false; + $link = bb_get_uri('topic.php', array('id' => $topic->topic_id, 'page' => $page), $context); + } + + return apply_filters( 'get_topic_link', $link, $topic->topic_id, $context ); +} + +function topic_rss_link( $id = 0, $context = 0 ) { + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + echo apply_filters('topic_rss_link', get_topic_rss_link($id, $context), $id, $context ); +} + +function get_topic_rss_link( $id = 0, $context = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + + $rewrite = bb_get_option( 'mod_rewrite' ); + if ( $rewrite ) { + if ( $rewrite === 'slugs' ) { + $column = 'topic_slug'; + } else { + $column = 'topic_id'; + } + $link = bb_get_uri('rss/topic/' . $topic->$column, null, $context); + } else { + $link = bb_get_uri('rss.php', array('topic' => $topic->topic_id), $context); + } + return apply_filters( 'get_topic_rss_link', $link, $topic->topic_id, $context ); +} + +function bb_topic_labels() { + echo apply_filters( 'bb_topic_labels', null ); +} + +function topic_title( $id = 0 ) { + echo apply_filters( 'topic_title', get_topic_title( $id ), get_topic_id( $id ) ); +} + +function get_topic_title( $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + return apply_filters( 'get_topic_title', $topic->topic_title, $topic->topic_id ); +} + +function topic_page_links( $id = 0, $args = null ) { + echo apply_filters( 'topic_page_links', get_topic_page_links( $id, $args ), get_topic_id( $id ) ); +} + +function get_topic_page_links( $id = 0, $args = null ) { + + $defaults = array( + 'show_all' => false, + 'end_size' => 3, + 'before' => ' - ', + 'after' => null + ); + + $args = wp_parse_args( $args, $defaults ); + + $topic = get_topic( get_topic_id( $id ) ); + + $uri = get_topic_link(); + if ( bb_get_option('mod_rewrite') ) { + if ( false === $pos = strpos( $uri, '?' ) ) { + $uri = $uri . '%_%'; + } else { + $uri = substr_replace( $uri, '%_%', $pos, 0 ); + } + } else { + $uri = add_query_arg( 'page', '%_%', $uri ); + } + + $posts = $topic->topic_posts + topic_pages_add( $topic->topic_id ); + + $per_page = apply_filters( 'get_topic_page_links_per_page', bb_get_option('page_topics') ); + + $_links = bb_paginate_links( + array( + 'base' => $uri, + 'format' => bb_get_option('mod_rewrite') ? '/page/%#%' : '%#%', + 'total' => ceil($posts/$per_page), + 'current' => 0, + 'show_all' => $args['show_all'], + 'end_size' => $args['end_size'], + 'type' => 'array' + ) + ); + + $links = $_links; + + $r = ''; + + if ( $links ) { + if ( !$show_first ) { + unset( $links[0] ); + } + + if ( $args['before'] ) { + $r .= $args['before']; + } + $r .= join('', $links); + if ( $args['after'] ) { + $r .= $args['after']; + } + } + + return apply_filters( 'get_topic_page_links', $r, $_links, $topic->topic_id ); +} + +function bb_topic_voices( $id = 0 ) { + echo apply_filters( 'bb_topic_voices', bb_get_topic_voices( $id ), get_topic_id( $id ) ); +} + +function bb_get_topic_voices( $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + + if ( empty( $topic->voices_count ) ) { + global $bbdb; + + if ( $voices = $bbdb->get_col( $bbdb->prepare( "SELECT DISTINCT poster_id FROM $bbdb->posts WHERE topic_id = %s AND post_status = '0';", $topic->topic_id ) ) ) { + $voices = count( $voices ); + bb_update_topicmeta( $topic->topic_id, 'voices_count', $voices ); + } + } else { + $voices = $topic->voices_count; + } + + return apply_filters( 'bb_get_topic_voices', $voices, $topic->topic_id ); +} + +function topic_posts( $id = 0 ) { + echo apply_filters( 'topic_posts', get_topic_posts( $id ), get_topic_id( $id ) ); +} + +function get_topic_posts( $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + return apply_filters( 'get_topic_posts', $topic->topic_posts, $topic->topic_id ); +} + +function get_topic_deleted_posts( $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + return apply_filters( 'get_topic_deleted_posts', isset($topic->deleted_posts) ? $topic->deleted_posts : 0, $topic->topic_id ); +} + +function topic_noreply( $title ) { + if ( 1 == get_topic_posts() && ( bb_is_front() || bb_is_forum() ) ) + $title = "<strong>$title</strong>"; + return $title; +} + +function topic_last_poster( $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + echo apply_filters( 'topic_last_poster', get_topic_last_poster( $id ), $topic->topic_last_poster, $topic->topic_id ); // $topic->topic_last_poster = user ID +} + +function get_topic_last_poster( $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + $user_display_name = get_post_author( $topic->topic_last_post_id ); + return apply_filters( 'get_topic_last_poster', $user_display_name, $topic->topic_last_poster, $topic->topic_id ); // $topic->topic_last_poster = user ID +} + +function topic_author( $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + echo apply_filters( 'topic_author', get_topic_author( $id ), $topic->topic_poster, $topic->topic_id ); // $topic->topic_poster = user ID +} + +function get_topic_author( $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + $first_post = bb_get_first_post( $topic ); + $user_display_name = get_post_author( $first_post->post_id ); + return apply_filters( 'get_topic_author', $user_display_name, $topic->topic_poster, $topic->topic_id ); // $topic->topic_poster = user ID +} + +// Filters expect the format to by mysql on both topic_time and get_topic_time +function topic_time( $args = '' ) { + $args = _bb_parse_time_function_args( $args ); + $time = apply_filters( 'topic_time', get_topic_time( array('format' => 'mysql') + $args), $args ); + echo _bb_time_function_return( $time, $args ); +} + +function get_topic_time( $args = '' ) { + $args = _bb_parse_time_function_args( $args ); + + $topic = get_topic( get_topic_id( $args['id'] ) ); + + $time = apply_filters( 'get_topic_time', $topic->topic_time, $args ); + + return _bb_time_function_return( $time, $args ); +} + +function topic_start_time( $args = '' ) { + $args = _bb_parse_time_function_args( $args ); + $time = apply_filters( 'topic_start_time', get_topic_start_time( array('format' => 'mysql') + $args), $args ); + echo _bb_time_function_return( $time, $args ); +} + +function get_topic_start_time( $args = '' ) { + $args = _bb_parse_time_function_args( $args ); + + $topic = get_topic( get_topic_id( $args['id'] ) ); + + $time = apply_filters( 'get_topic_start_time', $topic->topic_start_time, $args, $topic->topic_id ); + + return _bb_time_function_return( $time, $args ); +} + +function topic_last_post_link( $id = 0 ) { + echo apply_filters( 'topic_last_post_link', get_topic_last_post_link( $id ), $id); +} + +function get_topic_last_post_link( $id = 0 ){ + $topic = get_topic( get_topic_id( $id ) ); + $page = bb_get_page_number( $topic->topic_posts ); + return apply_filters( 'get_post_link', get_topic_link( $topic->topic_id, $page ) . "#post-$topic->topic_last_post_id", $topic->topic_last_post_id, $topic->topic_id ); +} + +function topic_pages( $args = null ) +{ + // Compatibility + if ( $args && is_numeric( $args ) ) { + $args = array( 'id' => $args ); + } + $defaults = array( 'id' => 0, 'before' => '', 'after' => '' ); + $args = wp_parse_args( $args, $defaults ); + + global $page; + $topic = get_topic( get_topic_id( $args['id'] ) ); + $add = topic_pages_add( $topic->topic_id ); + if ( $pages = apply_filters( 'topic_pages', get_page_number_links( $page, $topic->topic_posts + $add ), $topic->topic_id ) ) { + echo $args['before'] . $pages . $args['after']; + } +} + +function topic_pages_add( $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + if ( isset($_GET['view']) && 'all' == $_GET['view'] && bb_current_user_can('browse_deleted') && isset( $topic->deleted_posts ) ) + $add = $topic->deleted_posts; + else + $add = 0; + return apply_filters( 'topic_pages_add', $add, isset($topic->topic_id) ? $topic->topic_id : 0 ); +} + +function get_page_number_links( $args ) { + if ( 1 < func_num_args() ) { + $_args = func_get_args(); + $args = array( + 'page' => $_args[0], + 'total' => $_args[1], + 'per_page' => isset( $_args[2] ) ? $_args[2] : '', + 'mod_rewrite' => isset( $_args[3] ) ? $_args[3] : 'use_option' + ); + } + $defaults = array( + 'page' => 1, + 'total' => false, + 'per_page' => '', + 'mod_rewrite' => 'use_option', + 'prev_text' => __( '« Previous' ), + 'next_text' => __( 'Next »' ) + ); + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $add_args = array(); + $uri = rtrim( $_SERVER['REQUEST_URI'], '?&' ); + + if ( $mod_rewrite === 'use_option' ) { + $mod_rewrite = bb_get_option( 'mod_rewrite' ); + } + + if ( $mod_rewrite ) { + $format = '/page/%#%'; + if ( 1 == $page ) { + if ( false === $pos = strpos($uri, '?') ) + $uri = $uri . '%_%'; + else + $uri = substr_replace($uri, '%_%', $pos, 0); + } else { + $uri = preg_replace('|/page/[0-9]+|', '%_%', $uri); + } + $uri = str_replace( '/%_%', '%_%', $uri ); + } else { + if ( 1 == $page ) { + if ( false === $pos = strpos($uri, '?') ) { + $uri = $uri . '%_%'; + $format = '?page=%#%'; + } else { + $uri = substr_replace($uri, '?%_%', $pos, 1); + $format = 'page=%#%&'; + } + } else { + if ( false === strpos($uri, '?page=') ) { + $uri = preg_replace('!&page=[0-9]+!', '%_%', $uri ); + $uri = str_replace( '&page=', '', $uri ); + $format = '&page=%#%'; + } else { + $uri = preg_replace('!\?page=[0-9]+!', '%_%', $uri ); + $uri = str_replace( '?page=', '', $uri ); + $format = '?page=%#%'; + } + } + } + + if ( isset($_GET['view']) && in_array($_GET['view'], bb_get_views()) ) + $add_args['view'] = $_GET['view']; + + if ( empty( $per_page ) ) { + $per_page = bb_get_option( 'page_topics' ); + } + + $links = bb_paginate_links( array( + 'base' => $uri, + 'format' => $format, + 'total' => ceil( $total/$per_page ), + 'current' => $page, + 'add_args' => $add_args, + 'type' => 'array', + 'mid_size' => 1, + 'prev_text' => $prev_text, + 'next_text' => $next_text + ) ); + + if ($links) { + $links = join('', $links); + } + return $links; +} + +function bb_topic_admin( $args = '' ) { + $parts = array( + 'delete' => bb_get_topic_delete_link( $args ), + 'close' => bb_get_topic_close_link( $args ), + 'sticky' => bb_get_topic_sticky_link( $args ), + 'move' => bb_get_topic_move_dropdown( $args ) + ); + + echo join( "\n", apply_filters( 'bb_topic_admin', $parts, $args ) ); +} + +function topic_delete_link( $args = '' ) { + echo bb_get_topic_delete_link( $args ); +} + +function bb_get_topic_delete_link( $args = '' ) { + $defaults = array( 'id' => 0, 'before' => '[', 'after' => ']', 'delete_text' => false, 'undelete_text' => false, 'redirect' => true ); + extract(wp_parse_args( $args, $defaults ), EXTR_SKIP); + $id = (int) $id; + + $topic = get_topic( get_topic_id( $id ) ); + + if ( !$topic || !bb_current_user_can( 'delete_topic', $topic->topic_id ) ) + return; + + if ( 0 == $topic->topic_status ) { + if ( true === $redirect ) + $redirect = add_query_arg( bb_is_admin() ? array() : array( 'view' => 'all' ) ); + + $query = array( 'id' => $topic->topic_id, '_wp_http_referer' => $redirect ? rawurlencode( $redirect ) : false ); + $confirm = __('Are you sure you want to delete that?'); + $display = esc_html( $delete_text ? $delete_text : __('Delete entire topic') ); + } else { + if ( true === $redirect ) + $redirect = remove_query_arg( bb_is_admin() ? array() : 'view' ); + + $query = array('id' => $topic->topic_id, 'view' => 'all', '_wp_http_referer' => $redirect ? rawurlencode( $redirect ) : false ); + $confirm = __('Are you sure you want to undelete that?'); + $display = esc_html( $undelete_text ? $undelete_text : __('Undelete entire topic') ); + } + $uri = bb_get_uri('bb-admin/delete-topic.php', $query, BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN); + $uri = esc_url( bb_nonce_url( $uri, 'delete-topic_' . $topic->topic_id ) ); + + return $before . '<a href="' . $uri . '" onclick="return confirm(\'' . esc_js( $confirm ) . '\');">' . $display . '</a>' . $after; +} + +function topic_close_link( $args = '' ) { + echo bb_get_topic_close_link( $args ); +} + +function bb_get_topic_close_link( $args = '' ) { + $defaults = array( 'id' => 0, 'before' => '[', 'after' => ']', 'close_text' => false, 'open_text' => false, 'redirect' => true ); + extract(wp_parse_args( $args, $defaults ), EXTR_SKIP); + $id = (int) $id; + + $topic = get_topic( get_topic_id( $id ) ); + + if ( !$topic || !bb_current_user_can( 'close_topic', $topic->topic_id ) ) + return; + + if ( topic_is_open( $topic->topic_id ) ) + $display = esc_html( $close_text ? $close_text : __( 'Close topic' ) ); + else + $display = esc_html( $open_text ? $open_text : __( 'Open topic' ) ); + + if ( true === $redirect ) + $redirect = $_SERVER['REQUEST_URI']; + + $uri = bb_get_uri('bb-admin/topic-toggle.php', array( 'id' => $topic->topic_id, '_wp_http_referer' => $redirect ? rawurlencode( $redirect ) : false ), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN); + $uri = esc_url( bb_nonce_url( $uri, 'close-topic_' . $topic->topic_id ) ); + + return $before . '<a href="' . $uri . '">' . $display . '</a>' . $after; +} + +function topic_sticky_link( $args = '' ) { + echo bb_get_topic_sticky_link( $args ); +} + +function bb_get_topic_sticky_link( $args = '' ) { + $defaults = array( 'id' => 0, 'before' => '[', 'after' => ']' ); + extract(wp_parse_args( $args, $defaults ), EXTR_SKIP); + $id = (int) $id; + + $topic = get_topic( get_topic_id( $id ) ); + + if ( !$topic || !bb_current_user_can( 'stick_topic', $topic->topic_id ) ) + return; + + $uri_stick = bb_get_uri('bb-admin/sticky.php', array('id' => $topic->topic_id), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN); + $uri_stick = esc_url( bb_nonce_url( $uri_stick, 'stick-topic_' . $topic->topic_id ) ); + + $uri_super = bb_get_uri('bb-admin/sticky.php', array('id' => $topic->topic_id, 'super' => 1), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN); + $uri_super = esc_url( bb_nonce_url( $uri_super, 'stick-topic_' . $topic->topic_id ) ); + + if ( topic_is_sticky( $topic->topic_id ) ) + return "$before<a href='" . $uri_stick . "'>". __('Unstick topic') ."</a>$after"; + else + return "$before<a href='" . $uri_stick . "'>". __('Stick topic') . "</a> (<a href='" . $uri_super . "'>" . __('to front') . "</a>)$after"; +} + +function topic_show_all_link( $id = 0 ) { + if ( !bb_current_user_can( 'browse_deleted' ) ) + return; + if ( 'all' == @$_GET['view'] ) + echo "<a href='" . esc_attr( get_topic_link( $id ) ) . "'>". __('View normal posts') ."</a>"; + else + echo "<a href='" . esc_attr( add_query_arg( 'view', 'all', get_topic_link( $id ) ) ) . "'>". __('View all posts') ."</a>"; +} + +function topic_posts_link( $id = 0 ) { + echo get_topic_posts_link( $id ); +} + +function get_topic_posts_link( $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + $post_num = get_topic_posts( $id ); + $posts = sprintf(__ngettext( '%s post', '%s posts', $post_num ), $post_num); + $r = ''; + + if ( ( 'all' == @$_GET['view'] || bb_is_admin() ) && bb_current_user_can('browse_deleted') ) + $r .= "<a href='" . esc_attr( get_topic_link( $id ) ) . "'>$posts</a>"; + else + $r .= $posts; + + if ( bb_current_user_can( 'browse_deleted' ) ) { + $user_id = bb_get_current_user_info( 'id' ); + if ( isset($topic->bozos[$user_id]) && 'all' != @$_GET['view'] ) + add_filter('get_topic_deleted_posts', create_function('$a', "\$a -= {$topic->bozos[$user_id]}; return \$a;") ); + if ( $deleted = get_topic_deleted_posts( $id ) ) { + $extra = sprintf(__('+%d more'), $deleted); + if ( 'all' == @$_GET['view'] ) + $r .= " $extra"; + else + $r .= " <a href='" . esc_attr( add_query_arg( 'view', 'all', get_topic_link( $id ) ) ) . "'>$extra</a>"; + } + } + + return $r; +} + +function topic_move_dropdown( $args = '' ) +{ + echo bb_get_topic_move_dropdown( $args ); +} + +function bb_get_topic_move_dropdown( $args = '' ) +{ + if ( $args && is_numeric( $args ) ) { + $args = array( 'id' => (integer) $args ); + } + + $defaults = array( 'id' => 0, 'before' => '[', 'after' => ']' ); + extract(wp_parse_args( $args, $defaults ), EXTR_SKIP); + $id = (int) $id; + + $topic = get_topic( get_topic_id( $id ) ); + if ( !bb_current_user_can( 'move_topic', $topic->topic_id ) ) + return; + + $dropdown = bb_get_forum_dropdown( array( + 'callback' => 'bb_current_user_can', + 'callback_args' => array('move_topic', $topic->topic_id), + 'selected' => $topic->forum_id, + 'tab' => false + ) ); + + if ( !$dropdown ) + return; + + $r = $before . '<form id="topic-move" method="post" action="' . bb_get_uri( 'bb-admin/topic-move.php', null, BB_URI_CONTEXT_FORM_ACTION + BB_URI_CONTEXT_BB_ADMIN ) . '"><fieldset><div>' . "\n"; + $r .= '<input type="hidden" name="topic_id" value="' . $topic->topic_id . '" />' . "\n"; + $r .= '<label for="forum-id">'. __( 'Move to' ) . '</label>' . "\n"; + $r .= $dropdown . "\n"; + $r .= bb_nonce_field( 'move-topic_' . $topic->topic_id, '_wpnonce', true , false ); + $r .= '<input type="submit" name="Submit" value="' . __( 'Move' ) . '" />' . "\n"; + $r .= '</div></fieldset></form>' . $after; + + return $r; +} + +function topic_class( $class = '', $key = 'topic', $id = 0 ) { + $topic = get_topic( get_topic_id( $id ) ); + $class = $class ? explode(' ', $class ) : array(); + if ( '1' === $topic->topic_status && bb_current_user_can( 'browse_deleted' ) ) + $class[] = 'deleted'; + elseif ( 1 < $topic->topic_status && bb_current_user_can( 'browse_deleted' ) ) + $class[] = 'bozo'; + if ( '0' === $topic->topic_open ) + $class[] = 'closed'; + if ( 1 == $topic->topic_sticky && ( bb_is_forum() || bb_is_view() ) ) + $class[] = 'sticky'; + elseif ( 2 == $topic->topic_sticky && ( bb_is_front() || bb_is_forum() || bb_is_view() ) ) + $class[] = 'sticky super-sticky'; + $class = apply_filters( 'topic_class', $class, $topic->topic_id ); + $class = join(' ', $class); + alt_class( $key, $class ); +} + +/** + * bb_get_new_topic_link() - Get the link to the form for a new topic + * + * @since 1.0 + * @param mixed The arguments for this function. + * @return string The link to the new topic form + */ +function bb_get_new_topic_link( $args = null ) { + $defaults = array( 'text' => __('Add New »'), 'forum' => 0, 'tag' => '' ); + if ( $args && is_string($args) && false === strpos($args, '=') ) + $args = array( 'text' => $args ); + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + if ( $forum && $forum = bb_get_forum( $forum ) ) + $url = get_forum_link( $forum->forum_id ) . '#postform'; + elseif ( $tag && $tag = bb_get_tag( $tag ) ) + $url = bb_get_tag_link( $tag->tag ) . '#postform'; + elseif ( bb_is_forum() ) { + global $forum; + $url = get_forum_link( $forum->forum_id ) . '#postform'; + } elseif ( bb_is_tag() ) { + global $tag; + $url = bb_get_tag_link( $tag ) . '#postform'; + } elseif ( bb_is_topic() ) + $url = get_forum_link() . '#postform'; + elseif ( bb_is_front() ) + $url = bb_get_uri(null, array('new' => 1)); + + if ( !bb_is_user_logged_in() && bb_is_login_required() ) + $url = bb_get_uri('bb-login.php', array('redirect_to' => $url), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_USER_FORMS); + elseif ( bb_is_forum() || bb_is_topic() ) { + if ( !bb_current_user_can( 'write_topic', get_forum_id() ) ) + return; + } else { + if ( !bb_current_user_can( 'write_topics' ) ) + return; + } + + if ( $url = esc_attr( apply_filters( 'new_topic_url', $url, $args ) ) ) + return '<a href="' . $url . '" class="new-topic">' . $text . '</a>' . "\n"; +} + +function bb_new_topic_link( $args = null ) { + echo bb_get_new_topic_link($args); +} + +function bb_new_topic_forum_dropdown( $args = '' ) { + if ( !is_array( $args ) ) { + $args = array( + 'callback' => 'bb_current_user_can', + 'callback_args' => array( 'write_topic' ) + ); + } + if ( !isset( $args['callback'] ) && !isset( $args['callback_args'] ) ) { + $args['callback'] = 'bb_current_user_can'; + $args['callback_args'] = array( 'write_topic' ); + } + bb_forum_dropdown( $args ); +} + +function bb_topic_search_form( $args = null, $query_obj = null ) { + global $bb_query_form; + + if ( $query_obj && is_a($query_obj, 'BB_Query_Form') ); // [sic] + else + $query_obj =& $bb_query_form; + + $query_obj->form( $args ); +} + +function bb_search_pages( $args = null ) { + global $page, $search_count, $per_page; + + $defaults = array( 'before' => '', 'after' => '' ); + $args = wp_parse_args( $args, $defaults ); + + if ( $pages = apply_filters( 'bb_search_pages', get_page_number_links( array( 'page' => $page, 'total' => $search_count, 'per_page' => $per_page, 'mod_rewrite' => false ) ) ) ) + echo $args['before'] . $pages . $args['after']; +} + +/** + * bb_topic_pagecount() - Print the total page count for a topic + * + * @since 0.9 + * @param int $topic_id The topic id of the topic being queried + * @return void + */ +function bb_topic_pagecount( $topic_id = 0 ) { + echo bb_get_topic_pagecount( $topic_id ); +} + +/** + * bb_get_topic_pagecount() - Get the total page count for a topic + * + * @since 0.9 + * @param int $topic_id The topic id of the topic being queried + * @return int The total number of pages in the topic + */ +function bb_get_topic_pagecount( $topic_id = 0 ) { + $topic = get_topic( get_topic_id( $topic_id ) ); + return bb_get_page_number( $topic->topic_posts + topic_pages_add() ); +} + +/** + * bb_is_topic_lastpage() - Report whether the current page is the last page of a given topic + * + * @since 0.9 + * @param int $topic_id The topic id of the topic being queried + * @return boolean True if called on the last page of a topic, otherwise false + */ +function bb_is_topic_lastpage( $topic_id = 0 ) { + global $page; + return ( $page == bb_get_topic_pagecount( $topic_id ) ); +} + +// POSTS + +function post_id( $post_id = 0 ) { + echo get_post_id( $post_id ); +} + +function get_post_id( $post_id = 0 ) { + global $bb_post; + $post_id = (int) $post_id; + if ( $post_id ) + $post = bb_get_post( $post_id ); + else + $post =& $bb_post; + return $post->post_id; +} + +function post_link( $post_id = 0 ) { + echo apply_filters( 'post_link', get_post_link( $post_id ), get_post_id( $post_id ) ); +} + +function get_post_link( $post_id = 0 ) { + $bb_post = bb_get_post( get_post_id( $post_id ) ); + $page = bb_get_page_number( $bb_post->post_position ); + return apply_filters( 'get_post_link', get_topic_link( $bb_post->topic_id, $page ) . "#post-$bb_post->post_id", $bb_post->post_id ); +} + +function post_anchor_link( $force_full = false ) { + if ( defined('DOING_AJAX') || $force_full ) + post_link(); + else + echo '#post-' . get_post_id(); +} + +function post_position( $post_id = 0 ) { + echo apply_filters( 'post_position', get_post_position( $post_id ), get_post_id( $post_id ) ); +} + +function get_post_position( $post_id = 0 ) { + $bb_post = bb_get_post( get_post_id( $post_id ) ); + return apply_filters( 'get_post_position', $bb_post->post_position, $bb_post->post_id ); +} + +function post_position_link( $topic_id = 0, $position = 1 ) { + echo apply_filters( 'post_position_link', get_post_position_link( $topic_id, $position ), get_topic_id( $topic_id ), (integer) $position ); +} + +function get_post_position_link( $topic_id = 0, $position = 1 ) { + $position = (integer) $position; + $bb_topic = get_topic( get_topic_id( $topic_id ) ); + if ( $bb_topic->topic_posts < $position ) { + return; + } + $page = bb_get_page_number( $position ); + return apply_filters( 'get_post_position_link', get_topic_link( $bb_post->topic_id, $page ) . "#position-$position", $bb_topic->topic_id, $position ); +} + +function bb_post_meta( $key, $post_id = 0 ) { + echo bb_get_post_meta( $key, $post_id ); +} + +function bb_get_post_meta( $key, $post_id = 0 ) { + $bb_post = bb_get_post( get_post_id( $post_id ) ); + if ( isset($bb_post->$key) ) + return $bb_post->$key; +} + + +function post_author( $post_id = 0 ) { + echo apply_filters('post_author', get_post_author( $post_id ), $post_id ); +} + +function get_post_author( $post_id = 0 ) { + if ( $user = bb_get_user( get_post_author_id( $post_id ) ) ) + return apply_filters( 'get_post_author', $user->display_name, $user->ID, $post_id ); + elseif ( $title = bb_get_post_meta( 'pingback_title', $post_id ) ) + return apply_filters( 'bb_get_pingback_title', $title, $post_id ); + elseif ( $title = bb_get_post_meta( 'post_author', $post_id ) ) + return apply_filters( 'get_post_author', $title, 0, $post_id ); + else + return apply_filters( 'get_post_author', __('Anonymous'), 0, $post_id ); +} + +function post_author_link( $post_id = 0 ) { + if ( $link = ( bb_get_option( 'name_link_profile' ) ? get_user_profile_link( get_post_author_id( $post_id ) ) : get_user_link( get_post_author_id( $post_id ) ) ) ) { + echo '<a href="' . esc_attr( $link ) . '">' . get_post_author( $post_id ) . '</a>'; + } elseif ( $link = bb_get_post_meta( 'pingback_uri' )) { + echo '<a href="' . esc_attr( $link ) . '">' . get_post_author( $post_id ) . '</a>'; + } elseif ( $link = bb_get_post_meta( 'post_url' ) ) { + echo '<a href="' . esc_attr( $link ) . '">' . get_post_author( $post_id ) . '</a>'; + } else { + post_author( $post_id ); + } +} + +function post_author_avatar( $size = '48', $default = '', $post_id = 0 ) { + if ( ! bb_get_option('avatars_show') ) + return false; + + $author_id = get_post_author_id( $post_id ); + echo bb_get_avatar( $author_id, $size, $default ); +} + +function post_author_avatar_link( $size = '48', $default = '', $post_id = 0 ) { + if ( ! bb_get_option('avatars_show') ) + return false; + + $author_id = get_post_author_id( $post_id ); + if ( $link = get_user_link( $author_id ) ) { + echo '<a href="' . esc_attr( $link ) . '">' . bb_get_avatar( $author_id, $size, $default ) . '</a>'; + } else { + echo bb_get_avatar( $author_id, $size, $default ); + } +} + +function post_text( $post_id = 0 ) { + echo apply_filters( 'post_text', get_post_text( $post_id ), get_post_id( $post_id ) ); +} + +function get_post_text( $post_id = 0 ) { + $bb_post = bb_get_post( get_post_id( $post_id ) ); + return apply_filters( 'get_post_text', $bb_post->post_text, $bb_post->post_id ); +} + +function bb_post_time( $args = '' ) { + $args = _bb_parse_time_function_args( $args ); + $time = apply_filters( 'bb_post_time', bb_get_post_time( array('format' => 'mysql') + $args ), $args ); + echo _bb_time_function_return( $time, $args ); +} + +function bb_get_post_time( $args = '' ) { + $args = _bb_parse_time_function_args( $args ); + + $bb_post = bb_get_post( get_post_id( $args['id'] ) ); + + $time = apply_filters( 'bb_get_post_time', $bb_post->post_time, $args ); + + return _bb_time_function_return( $time, $args ); +} + +function post_ip( $post_id = 0 ) { + if ( bb_current_user_can( 'view_by_ip' ) ) + echo apply_filters( 'post_ip', get_post_ip( $post_id ), get_post_id( $post_id ) ); +} + +function get_post_ip( $post_id = 0 ) { + $bb_post = bb_get_post( get_post_id( $post_id ) ); + return apply_filters( 'get_post_ip', $bb_post->poster_ip, $bb_post->post_id ); +} + +function bb_post_admin( $args = null ) +{ + $defaults = array( + 'post_id' => 0, + 'before' => '', + 'after' => '', + 'before_each' => '', + 'after_each' => "\n", + 'each' => array( + 'ip' => array( + 'post_id' => 0 + ), + 'edit' => array( + 'post_id' => 0 + ), + 'delete' => array( + 'post_id' => 0 + ), + 'undelete' => array( + 'post_id' => 0 + ) + ) + ); + if ( isset( $args['each'] ) ) { + $each_args = $args['each']; + $_each_args = $defaults['each']; + foreach ( $each_args as $_part_name => $_part_args ) { + if ( !isset( $defaults['each'][$_part_name] ) ) { + continue; + } + $_each_args[$_part_name] = wp_parse_args( $_part_args, $defaults['each'][$_part_name] ); + } + } + $args = wp_parse_args( $args, $defaults ); + if ( isset( $_each_args ) ) { + $args['each'] = $_each_args; + } + + $parts = array(); + if ( is_array( $args['each'] ) && count( $args['each'] ) ) { + foreach ( $args['each'] as $_part_name => $_part_args ) { + if ( $args['post_id'] && !$_part_args['post_id'] ) { + $_part_args['post_id'] = $args['post_id']; + } + if ( $args['before_each'] && !$_part_args['before'] ) { + $_part_args['before'] = $args['before_each']; + } + if ( $args['after_each'] && !$_part_args['after'] ) { + $_part_args['after'] = $args['after_each']; + } + $_part_function = 'bb_get_post_' . $_part_name . '_link'; + $parts[$_part_name] = $_part_function( $_part_args ); + } + + // For the benefit of filters, mark the final part + if ( !isset( $args['last_each'] ) ) { + $args['last_each'] = $_part_args; + } + } + + $parts = apply_filters( 'bb_post_admin', $parts, $args ); + + if ( !count( $parts ) ) { + return; + } + + echo $args['before'] . join( '', $parts ) . $args['after']; +} + +function post_ip_link( $args = null ) +{ + echo bb_get_post_ip_link( $args ); +} + +function bb_get_post_ip_link( $args = null ) +{ + if ( !bb_current_user_can( 'view_by_ip' ) ) { + return; + } + + $defaults = array( + 'post_id' => 0, + 'before' => '', + 'after' => '', + 'text' => '%s' + ); + if ( is_numeric( $args ) ) { + $args = array( 'post_id' => $args ); + } + $args = wp_parse_args( $args, $defaults ); + + $bb_post = bb_get_post( get_post_id( $args['post_id'] ) ); + + $uri = bb_get_uri( 'bb-admin/posts.php', array( 'poster_ip' => get_post_ip( $bb_post->post_id ) ), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN ); + + // Make sure that the last tag in $before gets a class (if it's there) + if ( preg_match( '/.*(<[^>]+>)[^<]*/', $args['before'], $_node ) ) { + if ( preg_match( '/class=(\'|")(.*)\1/U', $_node[1], $_class ) ) { + $args['before'] = str_replace( $_class[0], 'class=' . $_class[1] . 'before-post-ip-link ' . $_class[2] . $_class[1], $args['before'] ); + } else { + $args['before'] = preg_replace( '/(.*)<([a-z0-9_-]+)(\s?)([^>]*)>([^<]*)/i', '$1<$2 class="before-post-ip-link"$3$4>$5', $args['before'], 1 ); + } + } + + $link = $args['before'] . '<a class="post-ip-link" href="' . esc_attr( $uri ) . '">' . esc_html( sprintf( $args['text'], get_post_ip( $bb_post->post_id ) ) ) . '</a>' . $args['after']; + return apply_filters( 'post_ip_link', $link, $bb_post->post_id, $args ); +} + +function post_edit_link( $args = null ) +{ + echo bb_get_post_edit_link( $args ); +} + +function bb_get_post_edit_link( $args = null ) +{ + $defaults = array( + 'post_id' => 0, + 'before' => '', + 'after' => '', + 'text' => __( 'Edit' ) + ); + if ( is_numeric( $args ) ) { + $args = array( 'post_id' => $args ); + } + $args = wp_parse_args( $args, $defaults ); + + $bb_post = bb_get_post( get_post_id( $args['post_id'] ) ); + + if ( bb_current_user_can( 'edit_post', $bb_post->post_id ) ) { + $uri = bb_get_uri( 'edit.php', array( 'id' => $bb_post->post_id ) ); + + // Make sure that the last tag in $before gets a class (if it's there) + if ( preg_match( '/.*(<[^>]+>)[^<]*/', $args['before'], $_node ) ) { + if ( preg_match( '/class=(\'|")(.*)\1/U', $_node[1], $_class ) ) { + $args['before'] = str_replace( $_class[0], 'class=' . $_class[1] . 'before-post-edit-link ' . $_class[2] . $_class[1], $args['before'] ); + } else { + $args['before'] = preg_replace( '/(.*)<([a-z0-9_-]+)(\s?)([^>]*)>([^<]*)/i', '$1<$2 class="before-post-edit-link"$3$4>$5', $args['before'], 1 ); + } + } + + $r = $args['before'] . '<a class="post-edit-link" href="' . esc_attr( apply_filters( 'post_edit_uri', $uri, $bb_post->post_id, $args ) ) . '">' . esc_html( $args['text'] ) . '</a>' . $args['after']; + return apply_filters( 'bb_get_post_edit_link', $r, $bb_post->post_id, $args ); + } +} + +function post_del_class( $post_id = 0 ) +{ + $bb_post = bb_get_post( get_post_id( $post_id ) ); + $classes = array(); + if ( bb_get_post_meta( 'pingback_uri', $post_id ) ) { + $classes[] = 'pingback'; + } + if ( $bb_post->post_status == 1 ) { + $classes[] = 'deleted'; + } elseif ( $bb_post->post_status != 0 ) { + $classes[] = 'post-status-' . $bb_post->post_status; + } + if ( count( $classes ) ) { + $classes = join( ' ', $classes ); + } else { + $classes = ''; + } + return apply_filters( 'post_del_class', $classes, $bb_post->post_id, $bb_post ); +} + +function post_delete_link( $args = null ) +{ + echo bb_get_post_delete_link( $args ); +} + +function bb_get_post_delete_link( $args = null ) +{ + $defaults = array( + 'post_id' => 0, + 'before' => '', + 'after' => '', + 'text' => __( 'Delete' ), + 'redirect' => true + ); + if ( is_numeric( $args ) || is_object( $args ) ) { + $args = array( 'post_id' => $args ); + } + if ( isset( $args['delete_text'] ) && ( !isset( $args['text'] ) || !$args['text'] ) ) { + $args['text'] = $args['delete_text']; + } + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $bb_post = bb_get_post( get_post_id( $post_id ) ); + //if ( bb_is_first( $bb_post->post_id ) ) { + // $topic = get_topic( $bb_post->topic_id ); + // if ( 2 > $topic->topic_posts ) { + // Should delete the whole topic + // return; + // } + //} + + if ( !bb_current_user_can( 'delete_post', $bb_post->post_id ) ) { + return; + } + + if ( true === $redirect ) { + $redirect = $_SERVER['REQUEST_URI']; + } + + $uri = bb_get_uri('bb-admin/delete-post.php', array( + 'id' => $bb_post->post_id, + 'status' => 1, + '_wp_http_referer' => $redirect ? rawurlencode( $redirect ) : false + ), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN); + $uri = esc_url( bb_nonce_url( $uri, 'delete-post_' . $bb_post->post_id ) ); + + if ( ( bb_is_admin() || isset( $_GET['view'] ) && 'all' == $_GET['view'] ) ) { + $ajax_class = 'dim:thread:post-' . $bb_post->post_id . ':deleted:FF3333:FFFF33:action=delete-post&status=1'; + } else { + $ajax_class = 'delete:thread:post-' . $bb_post->post_id . '::status=1'; + } + + $text = esc_html( $text ); + + // Make sure that the last tag in $before gets a class (if it's there) + if ( preg_match( '/.*(<[^>]+>)[^<]*/', $before, $_node ) ) { + if ( preg_match( '/class=(\'|")(.*)\1/U', $_node[1], $_class ) ) { + $before = str_replace( $_class[0], 'class=' . $_class[1] . 'before-post-delete-link ' . $_class[2] . $_class[1], $before ); + } else { + $before = preg_replace( '/(.*)<([a-z0-9_-]+)(\s?)([^>]*)>([^<]*)/i', '$1<$2 class="before-post-delete-link"$3$4>$5', $before, 1 ); + } + } + + $r = $before . '<a href="' . $uri . '" class="' . $ajax_class . ' post-delete-link">' . $text . '</a>' . $after; + $r = apply_filters( 'post_delete_link', $r, $bb_post->post_status, $bb_post->post_id, $args ); + return $r; +} + +function bb_post_undelete_link( $args = null ) +{ + echo bb_get_post_undelete_link( $args ); +} + +function bb_get_post_undelete_link( $args = null ) +{ + $defaults = array( + 'post_id' => 0, + 'before' => '', + 'after' => '', + 'text' => __( 'Undelete' ), + 'redirect' => true + ); + if ( is_numeric( $args ) || is_object( $args ) ) { + $args = array( 'post_id' => $args ); + } + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $bb_post = bb_get_post( get_post_id( $post_id ) ); + + if ( !bb_current_user_can( 'delete_post', $bb_post->post_id ) ) { + return; + } + + if ( true === $redirect ) { + $redirect = $_SERVER['REQUEST_URI']; + } + + $uri = bb_get_uri('bb-admin/delete-post.php', array( + 'id' => $bb_post->post_id, + 'status' => 0, + 'view' => 'all', + '_wp_http_referer' => $redirect ? rawurlencode( $redirect ) : false + ), BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN); + $uri = esc_url( bb_nonce_url( $uri, 'delete-post_' . $bb_post->post_id ) ); + + $ajax_class = 'dim:thread:post-' . $bb_post->post_id . ':deleted:FF3333:FFFF33:action=delete-post&status=0'; + + $text = esc_html( $text ); + + // Make sure that the last tag in $before gets a class (if it's there) + if ( preg_match( '/.*(<[^>]+>)[^<]*/', $before, $_node ) ) { + if ( preg_match( '/class=(\'|")(.*)\1/U', $_node[1], $_class ) ) { + $before = str_replace( $_class[0], 'class=' . $_class[1] . 'before-post-undelete-link ' . $_class[2] . $_class[1], $before ); + } else { + $before = preg_replace( '/(.*)<([a-z0-9_-]+)(\s?)([^>]*)>([^<]*)/i', '$1<$2 class="before-post-undelete-link"$3$4>$5', $before, 1 ); + } + } + + $r = $before . '<a href="' . $uri . '" class="' . $ajax_class . ' post-undelete-link">' . $text . '</a>' . $after; + $r = apply_filters( 'post_undelete_link', $r, $bb_post->post_status, $bb_post->post_id, $args ); + return $r; +} + +function post_author_id( $post_id = 0 ) { + echo apply_filters( 'post_author_id', get_post_author_id( $post_id ), get_post_id( $post_id ) ); +} + +function get_post_author_id( $post_id = 0 ) { + $bb_post = bb_get_post( get_post_id( $post_id ) ); + return apply_filters( 'get_post_author_id', (int) $bb_post->poster_id, get_post_id( $post_id ) ); +} + +function post_author_title( $post_id = 0 ) { + echo apply_filters( 'post_author_title', get_post_author_title( $post_id ), get_post_id( $post_id ) ); +} + +function get_post_author_title( $post_id = 0 ) { + return get_user_title( get_post_author_id( $post_id ) ); +} + +function post_author_title_link( $post_id = 0 ) { + echo apply_filters( 'post_author_title_link', get_post_author_title_link( $post_id ), get_post_id( $post_id ) ); +} + +function get_post_author_title_link( $post_id = 0 ) { + $title = get_post_author_title( $post_id ); + if ( false === $title ) { + if ( bb_get_post_meta( 'pingback_uri', $post_id ) ) + $r = __('PingBack'); + else + $r = __('Unregistered'); // This should never happen + } else { + if ( $link = bb_get_option( 'name_link_profile' ) ? get_user_link( get_post_author_id( $post_id ) ) : get_user_profile_link( get_post_author_id( $post_id ) ) ) + $r = '<a href="' . esc_attr( $link ) . '">' . $title . '</a>'; + else + $r = $title; + } + + return apply_filters( 'get_post_author_title_link', $r, get_post_id( $post_id ) ); +} + +function post_author_type( $post_id = 0 ) { + $id = get_post_author_id( $post_id ); + $type = get_user_type( $id ); + if ( false === $type ) { + if ( bb_get_post_meta( 'pingback_uri', $post_id ) ) + $r = __('PingBack'); + else + $r = __('Unregistered'); // This should never happen + } else + $r = '<a href="' . esc_attr( get_user_profile_link( $id ) ) . '">' . $type . '</a>'; + + echo apply_filters( 'post_author_type', $r, $post_id ); +} + +function allowed_markup( $args = '' ) { + echo apply_filters( 'allowed_markup', get_allowed_markup( $args ) ); +} + +// format=list or array( 'format' => 'list' ) +function get_allowed_markup( $args = '' ) { + $args = wp_parse_args( $args, array('format' => 'flat') ); + extract($args, EXTR_SKIP); + + $tags = bb_allowed_tags(); + unset($tags['pre'], $tags['br']); + $tags = array_keys($tags); + + switch ( $format ) : + case 'array' : + $r = $tags; + break; + case 'list' : + $r = "<ul class='allowed-markup'>\n\t<li>"; + $r .= join("</li>\n\t<li>", $tags); + $r .= "</li>\n</ul>\n"; + break; + default : + $r = join(' ', $tags); + break; + endswitch; + return apply_filters( 'get_allowed_markup', $r, $format ); +} + +// USERS +function bb_get_user_id( $id = 0 ) { + global $user; + if ( is_object($id) && isset($id->ID) ) + return (int) $id->ID; + elseif ( !$id ) + return $user->ID; + + $_user = bb_get_user( (int) $id ); + return isset($_user->ID) ? $_user->ID : 0; +} + +function user_profile_link( $id = 0 , $page = 1, $context = BB_URI_CONTEXT_A_HREF ) { + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF; + } + echo apply_filters( 'user_profile_link', get_user_profile_link( $id ), bb_get_user_id( $id ), $context ); +} + +function get_user_profile_link( $id = 0, $page = 1, $context = BB_URI_CONTEXT_A_HREF ) { + $user = bb_get_user( bb_get_user_id( $id ) ); + + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF; + } + + $rewrite = bb_get_option( 'mod_rewrite' ); + if ( $rewrite ) { + if ( $rewrite === 'slugs' ) { + $column = 'user_nicename'; + } else { + $column = 'ID'; + } + $page = (1 < $page) ? '/page/' . $page : ''; + $r = bb_get_uri('profile/' . $user->$column . $page, null, $context); + } else { + $query = array( + 'id' => $user->ID, + 'page' => (1 < $page) ? $page : false + ); + $r = bb_get_uri('profile.php', $query, $context); + } + return apply_filters( 'get_user_profile_link', $r, $user->ID, $context ); +} + +function user_delete_button() { + global $user; + + $user_obj = new BP_User( $user->ID ); + if ( !bb_current_user_can( 'keep_gate' ) && 'keymaster' == $user_obj->roles[0] ) + return; + + if ( bb_current_user_can( 'edit_users' ) && bb_get_current_user_info( 'id' ) != (int) $user->ID ) + echo apply_filters( 'user_delete_button', get_user_delete_button() ); +} + +function get_user_delete_button() { + $r = '<input type="submit" class="delete" name="delete-user" value="' . __('Delete User »') . '" '; + $r .= 'onclick="return confirm(\'' . esc_js(__('Are you sure you want to delete this user?')) . '\')" />'; + return apply_filters( 'get_user_delete_button', $r); +} + +function profile_tab_link( $id = 0, $tab, $page = 1 ) { + echo apply_filters( 'profile_tab_link', get_profile_tab_link( $id, $tab ) ); +} + +function get_profile_tab_link( $id = 0, $tab, $page = 1, $context = BB_URI_CONTEXT_A_HREF ) { + $user = bb_get_user( bb_get_user_id( $id ) ); + + $tab = bb_sanitize_with_dashes($tab); + + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF; + } + + if ( $tab === 'edit' && !( $context & BB_URI_CONTEXT_BB_USER_FORMS ) ) { + $context += BB_URI_CONTEXT_BB_USER_FORMS; + } + + $rewrite = bb_get_option( 'mod_rewrite' ); + if ( $rewrite ) { + if ( $rewrite === 'slugs' ) { + $column = 'user_nicename'; + } else { + $column = 'ID'; + } + $page = (1 < $page) ? '/page/' . $page : ''; + $r = bb_get_uri('profile/' . $user->$column . '/' . $tab . $page, null, $context); + } else { + $query = array( + 'id' => $user->ID, + 'tab' => $tab, + 'page' => (1 < $page) ? $page : false + ); + $r = bb_get_uri('profile.php', $query, $context); + } + return apply_filters( 'get_profile_tab_link', $r, $user->ID, $context ); +} + +function user_link( $id = 0 ) { + echo apply_filters( 'user_link', get_user_link( $id ), $id ); +} + +function get_user_link( $id = 0 ) { + if ( $user = bb_get_user( bb_get_user_id( $id ) ) ) + return apply_filters( 'get_user_link', $user->user_url, $user->ID ); +} + +function full_user_link( $id = 0 ) { + echo get_full_user_link( $id ); +} + +function get_full_user_link( $id = 0 ) { + if ( get_user_link( $id ) ) + $r = '<a href="' . esc_attr( get_user_link( $id ) ) . '">' . get_user_display_name( $id ) . '</a>'; + else + $r = get_user_display_name( $id ); + return $r; +} + +function user_type_label( $type ) { + echo apply_filters( 'user_type_label', get_user_type_label( $type ), $type ); +} + +function get_user_type_label( $type ) { + global $wp_roles; + if ( $wp_roles->is_role( $type ) ) + return apply_filters( 'get_user_type_label', $wp_roles->role_names[$type], $type ); +} + +function user_type( $id = 0 ) { + echo apply_filters( 'user_type', get_user_type( $id ), $id ); +} + +function get_user_type( $id = 0 ) { + if ( $user = bb_get_user( bb_get_user_id( $id ) ) ) : + @$caps = array_keys($user->capabilities); + if ( !$caps ) + $caps[] = 'inactive'; + + $type = get_user_type_label( $caps[0] ); //Just support one role for now. + else : + $type = false; + endif; + return apply_filters( 'get_user_type', $type, $user->ID ); +} + +function get_user_name( $id = 0 ) { + $user = bb_get_user( bb_get_user_id( $id ) ); + return apply_filters( 'get_user_name', $user->user_login, $user->ID ); +} + +function get_user_display_name( $id = 0 ) { + $user = bb_get_user( bb_get_user_id( $id ) ); + return apply_filters( 'get_user_display_name', $user->display_name, $user->ID ); +} + +function user_title( $id = 0 ) { + echo apply_filters( 'user_title', get_user_title( $id ), bb_get_user_id( $id ) ); +} + +function get_user_title( $id = 0 ) { + $user = bb_get_user( bb_get_user_id( $id ) ); + return empty( $user->title ) ? get_user_type( $id ) : apply_filters( 'get_user_title', $user->title, $user->ID ); +} + +function profile_pages( $args = null ) +{ + $defaults = array( 'before' => '', 'after' => '' ); + $args = wp_parse_args( $args, $defaults ); + + global $page, $user; + $add = apply_filters( 'profile_pages_add', $add ); + if ( $pages = apply_filters( 'profile_pages', get_page_number_links( $page, $user->topics_replied + $add ), $user->user_id ) ) { + echo $args['before'] . $pages . $args['after']; + } +} + +function bb_profile_data( $id = 0 ) { + if ( !$user = bb_get_user( bb_get_user_id( $id ) ) ) + return; + + $reg_time = bb_gmtstrtotime( $user->user_registered ); + $profile_info_keys = bb_get_profile_info_keys(); + echo "<dl id='userinfo'>\n"; + echo "\t<dt>" . __('Member Since') . "</dt>\n"; + echo "\t<dd>" . bb_datetime_format_i18n($reg_time, 'date') . ' (' . bb_since($reg_time) . ")</dd>\n"; + if ( is_array( $profile_info_keys ) ) { + foreach ( $profile_info_keys as $key => $label ) { + if ( in_array($key, array('first_name', 'last_name', 'display_name')) || !isset($user->$key) ) + continue; + $val = 'user_url' == $key ? get_user_link( $user->ID ) : $user->$key; + if ( + ( 'user_email' != $key || ( 'user_email' == $key && bb_current_user_can( 'edit_users' ) ) ) + && $val + && 'http://' != $val + ) { + echo "\t<dt>{$label[1]}</dt>\n"; + $val = make_clickable( $val ); + $attributes = array(); + if (isset($label[2]) && !empty($label[2])) + if (preg_match("#^<a#i", $val)) + $val = preg_replace("#^<a#i", '<a class="' . esc_attr($label[2]) . '"', $val); + else + $val = '<span class="' . esc_attr($label[2]) . '">' . $val . '</span>'; + + echo "\t<dd>" . $val . "</dd>\n"; + } + } + } + echo "</dl>\n"; +} + +function bb_profile_base_content() { + global $self; + if ( !is_callable( $self ) ) + return; // should never happen + call_user_func( $self ); +} + +function bb_profile_data_form( $id = 0 ) { + global $errors; + if ( !$user = bb_get_user( bb_get_user_id( $id ) ) ) + return; + + if ( !bb_current_user_can( 'edit_user', $user->ID ) ) + return; + + $error_codes = $errors->get_error_codes(); + $profile_info_keys = bb_get_profile_info_keys(); + $required = false; + if ( in_array( 'delete', $error_codes ) ) + echo '<div class="form-invalid error">' . $errors->get_error_message( 'delete' ) . '</div>'; +?> +<table id="userinfo"> +<?php + if ( is_array($profile_info_keys) ) : + $bb_current_id = bb_get_current_user_info( 'id' ); + foreach ( $profile_info_keys as $key => $label ) : + if ( $label[0] ) { + $class = 'form-field form-required required'; + $required = true; + } else { + $class = 'form-field'; + } + $title = esc_attr( $label[1] ); + + $name = esc_attr( $key ); + $type = isset($label[2]) ? esc_attr( $label[2] ) : 'text'; + if ( !in_array( $type, array( 'checkbox', 'file', 'hidden', 'image', 'password', 'radio', 'text' ) ) ) { + $type = 'text'; + } + + $checked = false; + if ( in_array( $key, $error_codes ) ) { + $class .= ' form-invalid error'; + $data = $errors->get_error_data( $key ); + if ( 'checkbox' == $type ) { + if ( isset($data['data']) ) + $checked = $data['data']; + else + $checked = $_POST[$key]; + $value = $label[3]; + $checked = $checked == $value; + } else { + if ( isset($data['data']) ) + $value = $data['data']; + else + $value = $_POST[$key]; + } + + $message = esc_html( $errors->get_error_message( $key ) ); + $message = "<em>$message</em>"; + } else { + if ( 'checkbox' == $type ) { + $checked = $user->$key == $label[3] || $label[4] == $label[3]; + $value = $label[3]; + } else { + $value = isset($user->$key) ? $user->$key : ''; + } + $message = ''; + } + + $checked = $checked ? ' checked="checked"' : ''; + $value = esc_attr( $value ); + +?> + +<tr class="<?php echo $class; ?>"> + <th scope="row"> + <label for="<?php echo $name; ?>"><?php echo $title; ?></label> + <?php echo $message; ?> + </th> + <td> +<?php + if ($key == 'display_name') { +?> + <select name="display_name" id="display_name"> +<?php + $public_display = array(); + $public_display['display_displayname'] = $user->display_name; + //$public_display['display_nickname'] = $user->nickname; + $public_display['display_username'] = $user->user_login; + if ( isset($user->first_name) ) { + $public_display['display_firstname'] = $user->first_name; + if ( isset($user->last_name) ) { + $public_display['display_firstlast'] = $user->first_name.' '.$user->last_name; + $public_display['display_lastfirst'] = $user->last_name.' '.$user->first_name; + } + } + if ( isset($user->last_name) ) + $public_display['display_lastname'] = $user->last_name; + + $public_display = array_unique(array_filter(array_map('trim', $public_display))); + + foreach($public_display as $id => $item) { +?> + <option id="<?php echo esc_attr( $id ); ?>" value="<?php echo esc_attr( $item ); ?>"><?php echo esc_html( $item ); ?></option> +<?php + } +?> + </select> +<?php + } else { +?> + <?php if ( 'checkbox' == $type && isset($label[5]) ) echo '<label for="' . $name . '">'; ?> + <input name="<?php echo $name; ?>" id="<?php echo $name; ?>" type="<?php echo $type; ?>"<?php echo $checked; ?> value="<?php echo $value; ?>" /> + <?php if ( 'checkbox' == $type && isset($label[5]) ) echo esc_html( $label[5] ) . '</label>'; ?> +<?php + } +?> + </td> +</tr> + +<?php endforeach; endif; // $profile_info_keys; $profile_info_keys ?> + +</table> + +<?php bb_nonce_field( 'edit-profile_' . $user->ID ); if ( $required ) : ?> + +<p class="required-message"><?php _e('These items are <span class="required">required</span>.') ?></p> + +<?php + endif; + do_action( 'extra_profile_info', $user->ID ); +} + +function bb_profile_admin_form( $id = 0 ) { + global $wp_roles, $errors; + if ( !$user = bb_get_user( bb_get_user_id( $id ) ) ) + return; + + if ( !bb_current_user_can( 'edit_user', $user->ID ) ) + return; + + $error_codes = $errors->get_error_codes(); + $bb_current_id = bb_get_current_user_info( 'id' ); + + $profile_admin_keys = bb_get_profile_admin_keys(); + $assignable_caps = bb_get_assignable_caps(); + $required = false; + + $roles = $wp_roles->role_names; + $can_keep_gate = bb_current_user_can( 'keep_gate' ); + + // Keymasters can't demote themselves + if ( ( $bb_current_id == $user->ID && $can_keep_gate ) || ( isset( $user->capabilities ) && is_array( $user->capabilities ) && array_key_exists( 'keymaster', $user->capabilities ) && !$can_keep_gate ) ) { + $roles = array( 'keymaster' => $roles['keymaster'] ); + } elseif ( !$can_keep_gate ) { // only keymasters can promote others to keymaster status + unset($roles['keymaster']); + } + + $selected = array( 'inactive' => ' selected="selected"' ); +?> +<table id="admininfo"> +<tr class='form-field<?php if ( in_array( 'role', $error_codes ) ) echo ' form-invalid error'; ?>'> + <th scope="row"> + <label for="admininfo_role"><?php _e('User Type'); ?></label> + <?php if ( in_array( 'role', $error_codes ) ) echo '<em>' . $errors->get_error_message( 'role' ) . '</em>'; ?> + </th> + <td> + <select id="admininfo_role" name="role"> +<?php + foreach( $roles as $r => $n ) { + if ( isset( $user->capabilities ) && is_array( $user->capabilities ) && array_key_exists( $r, $user->capabilities ) ) { + $selected['inactive'] = ''; + $selected[$r] = ' selected="selected"'; + } elseif ( $r !== 'inactive' ) { + $selected[$r] = ''; + } +?> + <option value="<?php echo $r; ?>"<?php echo $selected[$r]; ?>><?php echo $n; ?></option> +<?php + } +?> + </select> + </td> +</tr> +<?php + if (count($assignable_caps)) : +?> +<tr class="extra-caps-row"> + <th scope="row"><?php _e('Allow this user to'); ?></th> + <td> +<?php + foreach( $assignable_caps as $cap => $label ) : + $name = esc_attr( $cap ); + $checked = ''; + if ( isset( $user->capabilities ) && is_array( $user->capabilities ) && array_key_exists( $cap, $user->capabilities ) ) { + $checked = ' checked="checked"'; + } + $label = esc_html( $label ); +?> + + <label><input name="<?php echo $name; ?>" value="1" type="checkbox"<?php echo $checked; ?> /> <?php echo $label; ?></label><br /> + +<?php endforeach; ?> + + </td> +</tr> + +<?php + endif; + + if ( is_array($profile_admin_keys) ) : + foreach ( $profile_admin_keys as $key => $label ) : + if ( $label[0] ) { + $class = 'form-field form-required required'; + $required = true; + } else { + $class = 'form-field'; + } + $title = esc_attr( $label[1] ); + + $name = esc_attr( $key ); + $type = isset($label[2]) ? esc_attr( $label[2] ) : 'text'; + + $checked = false; + if ( in_array( $key, $error_codes ) ) { + $class .= ' form-invalid error'; + $data = $errors->get_error_data( $key ); + if ( 'checkbox' == $type ) { + if ( isset($data['data']) ) + $checked = $data['data']; + else + $checked = $_POST[$key]; + $value = $label[3]; + $checked = $checked == $value; + } else { + if ( isset($data['data']) ) + $value = $data['data']; + else + $value = $_POST[$key]; + } + + $message = esc_html( $errors->get_error_message( $key ) ); + $message = "<em>$message</em>"; + } else { + if ( 'checkbox' == $type ) { + $checked = $user->$key == $label[3] || $label[4] == $label[3]; + $value = $label[3]; + } else { + $value = isset($user->$key) ? $user->$key : ''; + } + $message = ''; + } + + $checked = $checked ? ' checked="checked"' : ''; + $value = esc_attr( $value ); + +?> + +<tr class="<?php echo $class; ?>"> + <th scope="row"> + <label for="<?php echo $name; ?>"><?php echo $title ?></label> + <?php echo $message; ?> + </th> + <td> + <?php if ( 'checkbox' == $type && isset($label[5]) ) echo "<label for='$name'>"; ?> + <input name="<?php echo $name; ?>" id="<?php echo $name; ?>" type="<?php echo $type; ?>"<?php echo $checked; ?> value="<?php echo $value; ?>" /> + <?php if ( 'checkbox' == $type && isset($label[5]) ) echo esc_html( $label[5] ) . "</label>"; ?> + </td> +</tr> + +<?php endforeach; endif; // $profile_admin_keys; $profile_admin_keys ?> + +</table> + +<?php if ( $required ) : ?> +<p class="required-message"><?php _e('These items are <span class="required">required</span>.') ?></p> + +<?php endif; ?> +<p><?php _e('Inactive users can login and look around but not do anything. Blocked users just see a simple error message when they visit the site.'); ?></p> +<p><?php _e('<strong>Note</strong>: Blocking a user does <em>not</em> block any IP addresses.'); ?></p> +<?php +} + +function bb_profile_password_form( $id = 0 ) { + global $errors; + if ( !$user = bb_get_user( bb_get_user_id( $id ) ) ) + return; + + if ( !bb_current_user_can( 'change_user_password', $user->ID ) ) + return; + + $class = 'form-field'; + + if ( $message = $errors->get_error_message( 'pass' ) ) { + $class .= ' form-invalid error'; + $message = '<em>' . esc_html( $message ) . '</em>'; + } +?> + +<table> +<tr class="<?php echo $class; ?>"> + <th scope="row" rowspan="2"> + <label for="pass1"><?php _e('New password'); ?></label> + <?php echo $message; ?> + </th> + <td> + <input name="pass1" type="password" id="pass1" autocomplete="off" /> + </td> +</tr> +<tr class="<?php echo $class; ?>"> + <td> + <input name="pass2" type="password" id="pass2" autocomplete="off" /> + </td> +</tr> +<tr class="pass-strength"> + <th scope="row"><?php _e('Password Strength'); ?></th> + <td> + <input type="hidden" name="user_login" id="user_login" value="<?php echo $user->user_login; ?>" /> + <noscript> + <?php _e('Disabled (requires JavaScript)'); ?> + </noscript> + <script type="text/javascript" charset="utf-8"> + if (typeof jQuery != 'undefined') { + document.writeln('<div id="pass-strength-result">' + pwsL10n.short + '</div>'); + } else { + document.writeln('<?php echo str_replace("'", "\'", __('Disabled.')); ?>') + } + </script> + </td> +</tr> +</table> + +<p><?php _e('Hint: Use upper and lower case characters, numbers and symbols like !"?$%^&( in your password.'); ?></p> + +<?php + +} + +function bb_logout_link( $args = '' ) { + echo apply_filters( 'bb_logout_link', bb_get_logout_link( $args ), $args ); +} + +function bb_get_logout_link( $args = '' ) { + if ( $args && is_string($args) && false === strpos($args, '=') ) + $args = array( 'text' => $args ); + + $defaults = array('text' => __('Log Out'), 'before' => '', 'after' => '', 'redirect' => ''); + $args = wp_parse_args( $args, $defaults ); + extract($args, EXTR_SKIP); + + $query = array( 'action' => 'logout' ); + if ( $redirect ) { + $query['redirect_to'] = $redirect; + } + + $uri = esc_attr( bb_get_uri('bb-login.php', $query, BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_USER_FORMS) ); + + return apply_filters( 'bb_get_logout_link', $before . '<a href="' . $uri . '">' . $text . '</a>' . $after, $args ); +} + +function bb_admin_link( $args = '' ) { + if ( !bb_current_user_can( 'moderate' ) ) + return; + echo apply_filters( 'bb_admin_link', bb_get_admin_link( $args ), $args ); +} + +function bb_get_admin_link( $args = '' ) { + if ( !bb_current_user_can( 'moderate' ) ) + return; + if ( $args && is_string($args) && false === strpos($args, '=') ) + $args = array( 'text' => $args ); + + $defaults = array('text' => __('Admin'), 'before' => '', 'after' => ''); + $args = wp_parse_args( $args, $defaults ); + extract($args, EXTR_SKIP); + + $uri = esc_attr( bb_get_uri('bb-admin/', null, BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN) ); + + return apply_filters( 'bb_get_admin_link', $before . '<a href="' . $uri . '">' . $text . '</a>' . $after, $args ); +} + +function bb_get_user_admin_link( $user_id = null ) { + if( !$user_id || !bb_current_user_can( 'edit_user', $user_id ) ) + return; + + if( !bb_get_user_id( $user_id ) ) + return; + + $uri = bb_get_uri( 'bb-admin/users.php', array( 'action' => 'edit', 'user_id' => $user_id ) ); + + return apply_filters( 'bb_get_user_admin_link', $uri, $user_id ); +} + +function bb_profile_link( $args = '' ) { + echo apply_filters( 'bb_profile_link', bb_get_profile_link( $args ), $args ); +} + +function bb_get_profile_link( $args = '' ) { + if ( $args && is_string($args) && false === strpos($args, '=') ) + $args = array( 'text' => $args ); + elseif ( is_numeric($args) ) + $args = array( 'id' => $args ); + + $defaults = array( 'text' => __('View your profile'), 'before' => '', 'after' => '', 'id' => false ); + $args = wp_parse_args( $args, $defaults ); + extract($args, EXTR_SKIP); + + $id = (int) $id; + if ( !$id ) + $id = bb_get_current_user_info( 'id' ); + + return apply_filters( 'bb_get_profile_link', "$before<a href='" . esc_attr( get_user_profile_link( $id ) ) . "'>$text</a>$after", $args ); +} + +function bb_current_user_info( $key = '' ) { + if ( !$key ) + return; + echo apply_filters( 'bb_current_user_info', bb_get_current_user_info( $key ), $key ); +} + + +function bb_get_current_user_info( $key = '' ) { + if ( !is_string($key) ) + return; + if ( !$user = bb_get_current_user() ) // Not globalized + return false; + + switch ( $key ) : + case '' : + return $user; + break; + case 'id' : + case 'ID' : + return (int) $user->ID; + break; + case 'name' : + return get_user_display_name( $user->ID ); + break; + case 'login' : + case 'user_login' : + return get_user_name( $user->ID ); + break; + case 'email' : + case 'user_email' : + return bb_get_user_email( $user->ID ); + break; + case 'url' : + case 'uri' : + case 'user_url' : + return get_user_link( $user->ID ); + break; + endswitch; +} + +function bb_get_user_email( $id ) { + if ( !$user = bb_get_user( bb_get_user_id( $id ) ) ) + return false; + + return apply_filters( 'bb_get_user_email', $user->user_email, $id ); +} + +//TAGS +function topic_tags() +{ + global $tags, $tag, $topic_tag_cache, $user_tags, $other_tags, $topic; + if ( is_array( $tags ) || bb_current_user_can( 'edit_tag_by_on', bb_get_current_user_info( 'id' ), $topic->topic_id ) ) { + bb_load_template( 'topic-tags.php', array('user_tags', 'other_tags', 'public_tags') ); + } +} + +function bb_tag_page_link() +{ + echo bb_get_tag_page_link(); +} + +function bb_get_tag_page_link( $context = BB_URI_CONTEXT_A_HREF ) +{ + if ( bb_get_option( 'mod_rewrite' ) ) { + $r = bb_get_uri( 'tags/', null, $context ); + } else { + $r = bb_get_uri( 'tags.php', null, $context ); + } + return apply_filters( 'bb_get_tag_page_link', $r, $context ); +} + +function bb_tag_link( $tag_id = 0, $page = 1, $context = BB_URI_CONTEXT_A_HREF ) +{ + echo apply_filters( 'bb_tag_link', bb_get_tag_link( $tag_id, $page, $context ), $tag_id, $page, $context ); +} + +function bb_get_tag_link( $tag_id = 0, $page = 1, $context = BB_URI_CONTEXT_A_HREF ) +{ + global $tag; + + if ( $tag_id ) { + if ( is_object( $tag_id ) ) { + $_tag = $tag_id; + } else { + $_tag = bb_get_tag( $tag_id ); + } + } else { + $_tag =& $tag; + } + + if ( !is_object( $_tag ) ) { + return ''; + } + + if ( !$context || !is_integer( $context ) ) { + $context = BB_URI_CONTEXT_A_HREF; + } + + if ( bb_get_option( 'mod_rewrite' ) ) { + $page = (1 < $page) ? '/page/' . $page : ''; + $r = bb_get_uri( 'tags/' . $_tag->tag . $page, null, $context ); + } else { + $query = array( + 'tag' => $_tag->tag, + 'page' => ( 1 < $page ) ? $page : false + ); + $r = bb_get_uri( 'tags.php', $query, $context ); + } + + return apply_filters( 'bb_get_tag_link', $r, $_tag->tag, $page, $context ); +} + +function bb_tag_link_base() +{ + echo bb_get_tag_link_base(); +} + +function bb_get_tag_link_base() +{ + return bb_get_tag_page_link() . ( bb_get_option( 'mod_rewrite' ) ? '' : '?tag=' ); +} + +function bb_tag_name( $tag_id = 0 ) +{ + echo esc_html( bb_get_tag_name( $tag_id ) ); +} + +function bb_get_tag_name( $tag_id = 0 ) { + global $tag; + + if ( $tag_id ) { + if ( is_object( $tag_id ) ) { + $_tag = $tag_id; + } else { + $_tag = bb_get_tag( $tag_id ); + } + } else { + $_tag =& $tag; + } + + if ( !is_object( $_tag ) ) { + return ''; + } + + return $_tag->raw_tag; +} + +function bb_tag_posts_rss_link( $tag_id = 0, $context = 0 ) +{ + if ( !$context || !is_integer( $context ) ) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + + echo apply_filters( 'tag_posts_rss_link', bb_get_tag_posts_rss_link( $tagid, $context ), $tag_id, $context ); +} + +function bb_get_tag_posts_rss_link( $tag_id = 0, $context = 0 ) +{ + global $tag; + + if ( $tag_id ) { + if ( is_object( $tag_id ) ) { + $_tag = $tag_id; + } else { + $_tag = bb_get_tag( $tag_id ); + } + } else { + $_tag =& $tag; + } + + if ( !is_object( $_tag ) ) { + return ''; + } + + if ( !$context || !is_integer( $context ) ) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + + if ( bb_get_option( 'mod_rewrite' ) ) { + $link = bb_get_uri( 'rss/tags/' . $_tag->tag, null, $context ); + } else { + $link = bb_get_uri( 'rss.php', array( 'tag' => $_tag->tag ), $context ); + } + + return apply_filters( 'get_tag_posts_rss_link', $link, $tag_id, $context ); +} + +function bb_tag_topics_rss_link( $tag_id = 0, $context = 0 ) +{ + if ( !$context || !is_integer( $context ) ) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + + echo apply_filters( 'tag_topics_rss_link', bb_get_tag_topics_rss_link( $tag_id, $context ), $tag_id, $context ); +} + +function bb_get_tag_topics_rss_link( $tag_id = 0, $context = 0 ) +{ + global $tag; + + if ( $tag_id ) { + if ( is_object( $tag_id ) ) { + $_tag = $tag_id; + } else { + $_tag = bb_get_tag( $tag_id ); + } + } else { + $_tag =& $tag; + } + + if ( !is_object( $_tag ) ) { + return ''; + } + + if ( !$context || !is_integer( $context ) ) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + + if ( bb_get_option( 'mod_rewrite' ) ) { + $link = bb_get_uri( 'rss/tags/' . $_tag->tag . '/topics', null, $context ); + } else { + $link = bb_get_uri( 'rss.php', array('tag' => $_tag->tag, 'topics' => 1 ), $context ); + } + + return apply_filters( 'get_tag_topics_rss_link', $link, $tag_id, $context ); +} + +function bb_list_tags( $args = null ) +{ + $defaults = array( + 'tags' => false, + 'format' => 'list', + 'topic' => 0, + 'list_id' => 'tags-list' + ); + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + if ( !$topic = get_topic( get_topic_id( $topic ) ) ) { + return false; + } + + if ( !is_array( $tags ) ) { + $tags = bb_get_topic_tags( $topic->topic_id ); + } + + if ( !$tags ) { + return false; + } + + $list_id = esc_attr( $list_id ); + + $r = ''; + switch ( strtolower( $format ) ) { + case 'table' : + break; + + case 'list' : + default : + $args['format'] = 'list'; + $r .= '<ul id="' . $list_id . '" class="tags-list list:tag">' . "\n"; + foreach ( $tags as $tag ) { + $r .= _bb_list_tag_item( $tag, $args ); + } + $r .= '</ul>'; + break; + } + + echo $r; +} + +function _bb_list_tag_item( $tag, $args ) +{ + $url = esc_url( bb_get_tag_link( $tag ) ); + $name = esc_html( bb_get_tag_name( $tag ) ); + if ( 'list' == $args['format'] ) { + $id = 'tag-' . $tag->tag_id . '_' . $tag->user_id; + return "\t" . '<li id="' . $id . '"' . get_alt_class( 'topic-tags' ) . '><a href="' . $url . '" rel="tag">' . $name . '</a> ' . bb_get_tag_remove_link( array( 'tag' => $tag, 'list_id' => $args['list_id'] ) ) . '</li>' . "\n"; + } +} + +function tag_form( $args = null ) +{ + $defaults = array( 'topic' => 0, 'submit' => __('Add »'), 'list_id' => 'tags-list' ); + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + if ( !$topic = get_topic( get_topic_id( $topic ) ) ) { + return false; + } + + if ( !bb_current_user_can( 'edit_tag_by_on', bb_get_current_user_info( 'id' ), $topic->topic_id ) ) { + return false; + } + + global $page; +?> + +<form id="tag-form" method="post" action="<?php bb_uri('tag-add.php', null, BB_URI_CONTEXT_FORM_ACTION + BB_URI_CONTEXT_BB_ADMIN); ?>" class="add:<?php echo esc_attr( $list_id ); ?>:"> + <p> + <input name="tag" type="text" id="tag" /> + <input type="hidden" name="id" value="<?php echo $topic->topic_id; ?>" /> + <input type="hidden" name="page" value="<?php echo $page; ?>" /> + <?php bb_nonce_field( 'add-tag_' . $topic->topic_id ); ?> + <input type="submit" name="submit" id="tagformsub" value="<?php echo esc_attr( $submit ); ?>" /> + </p> +</form> + +<?php +} + +function manage_tags_forms() +{ + global $tag; + if ( !bb_current_user_can( 'manage_tags' ) ) { + return false; + } + + $form = '<ul id="manage-tags">' . "\n"; + $form .= '<li id="tag-rename">' . __('Rename tag:') . "\n\t"; + $form .= '<form method="post" action="' . bb_get_uri( 'bb-admin/tag-rename.php', null, BB_URI_CONTEXT_FORM_ACTION + BB_URI_CONTEXT_BB_ADMIN ) . '"><div>' . "\n\t"; + $form .= '<input type="text" name="tag" size="10" maxlength="30" />' . "\n\t"; + $form .= '<input type="hidden" name="id" value="' . $tag->tag_id . '" />' . "\n\t"; + $form .= "<input type='submit' name='Submit' value='" . __('Rename') . "' />\n\t"; + echo $form; + bb_nonce_field( 'rename-tag_' . $tag->tag_id ); + echo "\n\t</div></form>\n </li>\n "; + $form = "<li id='tag-merge'>" . __('Merge this tag into:') . "\n\t"; + $form .= "<form method='post' action='" . bb_get_uri('bb-admin/tag-merge.php', null, BB_URI_CONTEXT_FORM_ACTION + BB_URI_CONTEXT_BB_ADMIN) . "'><div>\n\t"; + $form .= "<input type='text' name='tag' size='10' maxlength='30' />\n\t"; + $form .= "<input type='hidden' name='id' value='$tag->tag_id' />\n\t"; + $form .= "<input type='submit' name='Submit' value='" . __('Merge') . "' "; + $form .= 'onclick="return confirm(\'' . esc_js( sprintf(__('Are you sure you want to merge the "%s" tag into the tag you specified? This is permanent and cannot be undone.'), $tag->raw_tag) ) . "');\" />\n\t"; + echo $form; + bb_nonce_field( 'merge-tag_' . $tag->tag_id ); + echo "\n\t</div></form>\n </li>\n "; + $form = "<li id='tag-destroy'>" . __('Destroy tag:') . "\n\t"; + $form .= "<form method='post' action='" . bb_get_uri('bb-admin/tag-destroy.php', null, BB_URI_CONTEXT_FORM_ACTION + BB_URI_CONTEXT_BB_ADMIN) . "'><div>\n\t"; + $form .= "<input type='hidden' name='id' value='$tag->tag_id' />\n\t"; + $form .= "<input type='submit' name='Submit' value='" . __('Destroy') . "' "; + $form .= 'onclick="return confirm(\'' . esc_js( sprintf(__('Are you sure you want to destroy the "%s" tag? This is permanent and cannot be undone.'), $tag->raw_tag) ) . "');\" />\n\t"; + echo $form; + bb_nonce_field( 'destroy-tag_' . $tag->tag_id ); + echo "\n\t</div></form>\n </li>\n</ul>"; +} + +function bb_tag_remove_link( $args = null ) { + echo bb_get_tag_remove_link( $args ); +} + +function bb_get_tag_remove_link( $args = null ) { + if ( is_scalar($args) || is_object( $args ) ) + $args = array( 'tag' => $args ); + $defaults = array( 'tag' => 0, 'topic' => 0, 'list_id' => 'tags-list' ); + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + if ( is_object( $tag ) && isset( $tag->tag_id ) ); // [sic] + elseif ( !$tag = bb_get_tag( bb_get_tag_id( $tag ) ) ) + return false; + if ( !$topic = get_topic( get_topic_id( $topic ) ) ) + return false; + if ( !bb_current_user_can( 'edit_tag_by_on', $tag->user_id, $topic->topic_id ) ) + return false; + $url = bb_get_uri('tag-remove.php', array('tag' => $tag->tag_id, 'user' => $tag->user_id, 'topic' => $topic->topic_id) ); + $url = esc_url( bb_nonce_url( $url, 'remove-tag_' . $tag->tag_id . '|' . $topic->topic_id) ); + $title = esc_attr__( 'Remove this tag' ); + $list_id = esc_attr( $list_id ); + return "[<a href='$url' class='delete:$list_id:tag-{$tag->tag_id}_{$tag->user_id}' title='$title'>×</a>]"; +} + +function bb_tag_heat_map( $args = '' ) { + $defaults = array( 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'limit' => 40, 'format' => 'flat' ); + $args = wp_parse_args( $args, $defaults ); + + if ( 1 < $fn = func_num_args() ) : // For back compat + $args['smallest'] = func_get_arg(0); + $args['largest'] = func_get_arg(1); + $args['unit'] = 2 < $fn ? func_get_arg(2) : $unit; + $args['limit'] = 3 < $fn ? func_get_arg(3) : $limit; + endif; + + extract($args, EXTR_SKIP); + + $tags = bb_get_top_tags( array( 'number' => $limit ) ); + + if ( empty($tags) ) + return; + + $r = bb_get_tag_heat_map( $tags, $args ); + echo apply_filters( 'tag_heat_map', $r, $args ); +} + +function bb_get_tag_heat_map( $tags, $args = '' ) { + $defaults = array( 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'limit' => 45, 'format' => 'flat' ); + $args = wp_parse_args( $args, $defaults ); + extract($args, EXTR_SKIP); + + if ( !$tags ) + return; + + foreach ( (array) $tags as $tag ) { + $counts{$tag->raw_tag} = $tag->tag_count; + $taglinks{$tag->raw_tag} = bb_get_tag_link( $tag ); + } + + $min_count = min($counts); + $spread = max($counts) - $min_count; + if ( $spread <= 0 ) + $spread = 1; + $fontspread = $largest - $smallest; + if ( $fontspread <= 0 ) + $fontspread = 1; + $fontstep = $fontspread / $spread; + + do_action_ref_array( 'sort_tag_heat_map', array(&$counts) ); + + $a = array(); + + foreach ( $counts as $tag => $count ) { + $taglink = esc_attr($taglinks{$tag}); + $tag = str_replace(' ', ' ', esc_html( $tag )); + $fontsize = round( $smallest + ( ( $count - $min_count ) * $fontstep ), 1 ); + $a[] = "<a href='$taglink' title='" . esc_attr( sprintf( __('%d topics'), $count ) ) . "' rel='tag' style='font-size:$fontsize$unit;'>$tag</a>"; + } + + switch ( $format ) : + case 'array' : + $r =& $a; + break; + case 'list' : + $r = "<ul class='bb-tag-heat-map'>\n\t<li>"; + $r .= join("</li>\n\t<li>", $a); + $r .= "</li>\n</ul>\n"; + break; + default : + $r = join("\n", $a); + break; + endswitch; + + return apply_filters( 'bb_get_tag_heat_map', $r, $tags, $args ); +} + +function bb_sort_tag_heat_map( &$tag_counts ) { + uksort($tag_counts, 'strnatcasecmp'); +} + +function tag_pages( $args = null ) +{ + $defaults = array( 'before' => '', 'after' => '' ); + $args = wp_parse_args( $args, $defaults ); + + global $page, $tagged_topic_count; + if ( $pages = apply_filters( 'tag_pages', get_page_number_links( $page, $tagged_topic_count ) ) ) { + echo $args['before'] . $pages . $args['after']; + } +} + +function bb_forum_dropdown( $args = '' ) { + if ( $args && is_string($args) && false === strpos($args, '=') ) + $args = array( 'callback' => $args ); + if ( 1 < func_num_args() ) + $args['callback_args'] = func_get_arg(1); + echo bb_get_forum_dropdown( $args ); +} + +function bb_get_forum_dropdown( $args = '' ) { + $defaults = array( 'callback' => false, 'callback_args' => false, 'id' => 'forum_id', 'none' => false, 'selected' => false, 'tab' => false, 'hierarchical' => 1, 'depth' => 0, 'child_of' => 0, 'disable_categories' => 1, 'options_only' => false ); + if ( $args && is_string($args) && false === strpos($args, '=') ) + $args = array( 'callback' => $args ); + if ( 1 < func_num_args() ) + $args['callback_args'] = func_get_arg(1); + + $args = wp_parse_args( $args, $defaults ); + + extract($args, EXTR_SKIP); + + if ( !bb_forums( $args ) ) + return; + + global $forum_id, $forum; + $old_global = $forum; + + $name = esc_attr( $id ); + $id = str_replace( '_', '-', $name ); + $tab = (int) $tab; + + if ( $none && 1 == $none ) + $none = __('- None -'); + + $r = ''; + if ( !$options_only ) { + if ( $tab ) { + $tab = ' tabindex="' . $tab . '"'; + } else { + $tab = ''; + } + $r .= '<select name="' . $name . '" id="' . $id . '"' . $tab . '>' . "\n"; + } + if ( $none ) + $r .= "\n" . '<option value="0">' . $none . '</option>' . "\n"; + + $no_option_selected = true; + $options = array(); + while ( $depth = bb_forum() ) : + global $forum; // Globals + References = Pain + $pad_left = str_repeat( '   ', $depth - 1 ); + if ( $disable_categories && isset($forum->forum_is_category) && $forum->forum_is_category ) { + $options[] = array( + 'value' => 0, + 'display' => $pad_left . $forum->forum_name, + 'disabled' => true, + 'selected' => false + ); + continue; + } + $_selected = false; + if ( (!$selected && $forum_id == $forum->forum_id) || $selected == $forum->forum_id ) { + $_selected = true; + $no_option_selected = false; + } + $options[] = array( + 'value' => $forum->forum_id, + 'display' => $pad_left . $forum->forum_name, + 'disabled' => false, + 'selected' => $_selected + ); + endwhile; + + if ( 1 === count( $options ) && !$none ) { + foreach ( $options as $option_index => $option_value ) { + if ( $option_value['disabled'] ) { + return; + } + return '<input type="hidden" name="' . $name . '" id="' . $id . '" value="' . esc_attr( $option_value['value'] ) . '" /><span>' . esc_html( $option_value['display'] ) . '</span>'; + } + } + + foreach ($options as $option_index => $option_value) { + if (!$none && !$selected && $no_option_selected && !$option_value['disabled']) { + $option_value['selected'] = true; + $no_option_selected = false; + } + $option_disabled = $option_value['disabled'] ? ' disabled="disabled"' : ''; + $option_selected = $option_value['selected'] ? ' selected="selected"' : ''; + $r .= "\n" . '<option value="' . esc_attr( $option_value['value'] ) . '"' . $option_disabled . $option_selected . '>' . esc_html( $option_value['display'] ) . '</option>' . "\n"; + } + + $forum = $old_global; + if ( !$options_only ) + $r .= '</select>' . "\n"; + + return $r; +} + +//FAVORITES +function favorites_link( $user_id = 0 ) { + echo apply_filters( 'favorites_link', get_favorites_link( $user_id ) ); +} + +function get_favorites_link( $user_id = 0 ) { + if ( !$user_id ) + $user_id = bb_get_current_user_info( 'id' ); + return apply_filters( 'get_favorites_link', get_profile_tab_link($user_id, 'favorites'), $user_id ); +} + +function user_favorites_link($add = array(), $rem = array(), $user_id = 0) { + global $topic, $bb_current_user; + if ( empty($add) || !is_array($add) ) + $add = array('mid' => __('Add this topic to your favorites'), 'post' => __(' (%?%)')); + if ( empty($rem) || !is_array($rem) ) + $rem = array( 'pre' => __('This topic is one of your %favorites% ['), 'mid' => __('×'), 'post' => __(']')); + if ( $user_id ) : + if ( !bb_current_user_can( 'edit_favorites_of', (int) $user_id ) ) + return false; + if ( !$user = bb_get_user( bb_get_user_id( $user_id ) ) ) : + return false; + endif; + else : + if ( !bb_current_user_can('edit_favorites') ) + return false; + $user =& $bb_current_user->data; + endif; + + $url = esc_url( get_favorites_link( $user_id ) ); + if ( $is_fav = is_user_favorite( $user->ID, $topic->topic_id ) ) : + $rem = preg_replace('|%(.+)%|', "<a href='$url'>$1</a>", $rem); + $favs = array('fav' => '0', 'topic_id' => $topic->topic_id); + $pre = ( is_array($rem) && isset($rem['pre']) ) ? $rem['pre'] : ''; + $mid = ( is_array($rem) && isset($rem['mid']) ) ? $rem['mid'] : ( is_string($rem) ? $rem : '' ); + $post = ( is_array($rem) && isset($rem['post']) ) ? $rem['post'] : ''; + elseif ( false === $is_fav ) : + $add = preg_replace('|%(.+)%|', "<a href='$url'>$1</a>", $add); + $favs = array('fav' => '1', 'topic_id' => $topic->topic_id); + $pre = ( is_array($add) && isset($add['pre']) ) ? $add['pre'] : ''; + $mid = ( is_array($add) && isset($add['mid']) ) ? $add['mid'] : ( is_string($add) ? $add : '' ); + $post = ( is_array($add) && isset($add['post']) ) ? $add['post'] : ''; + endif; + + $url = esc_url( bb_nonce_url( add_query_arg( $favs, get_favorites_link( $user_id ) ), 'toggle-favorite_' . $topic->topic_id ) ); + + if ( !is_null($is_fav) ) + echo "<span id='favorite-$topic->topic_id'>$pre<a href='$url' class='dim:favorite-toggle:favorite-$topic->topic_id:is-favorite'>$mid</a>$post</span>"; +} + +function favorites_rss_link( $id = 0, $context = 0 ) { + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + echo apply_filters('favorites_rss_link', get_favorites_rss_link( $id, $context ), $context, $id); +} + +function get_favorites_rss_link( $id = 0, $context = 0 ) { + $user = bb_get_user( bb_get_user_id( $id ) ); + + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_FEED; + } + + $rewrite = bb_get_option( 'mod_rewrite' ); + if ( $rewrite ) { + if ( $rewrite === 'slugs' ) { + $column = 'user_nicename'; + } else { + $column = 'ID'; + } + $link = bb_get_uri('rss/profile/' . $user->$column, null, $context); + } else { + $link = bb_get_uri('rss.php', array('profile' => $user->ID), $context); + } + return apply_filters( 'get_favorites_rss_link', $link, $user->ID, $context ); +} + +function favorites_pages( $args = null ) +{ + $defaults = array( 'before' => '', 'after' => '' ); + $args = wp_parse_args( $args, $defaults ); + + global $page, $user, $favorites_total; + if ( $pages = apply_filters( 'favorites_pages', get_page_number_links( $page, $favorites_total ), $user->user_id ) ) { + echo $args['before'] . $pages . $args['after']; + } +} + +//SUBSCRIPTION + +/** + * Checks if subscription is enabled. + * + * @since 1.1 + * + * @return bool is subscription enabled or not + */ +function bb_is_subscriptions_active() { + return (bool) bb_get_option( 'enable_subscriptions' ); +} + +/** + * Checks if user is subscribed to current topic. + * + * @since 1.1 + * + * @return bool is user subscribed or not + */ +function bb_is_user_subscribed( $args = null ) { + global $bbdb; + + $defaults = array( + 'user_id' => bb_is_topic_edit() ? bb_get_user_id( get_post_author_id() ) : bb_get_current_user_info( 'id' ), + 'topic_id' => get_topic_id() + ); + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $there = $bbdb->get_var( $bbdb->prepare( "SELECT `$bbdb->term_relationships`.`object_id` + FROM $bbdb->term_relationships, $bbdb->term_taxonomy, $bbdb->terms + WHERE `$bbdb->term_relationships`.`object_id` = %d + AND `$bbdb->term_relationships`.`term_taxonomy_id` = `$bbdb->term_taxonomy`.`term_taxonomy_id` + AND `$bbdb->term_taxonomy`.`term_id` = `$bbdb->terms`.`term_id` + AND `$bbdb->term_taxonomy`.`taxonomy` = 'bb_subscribe' + AND `$bbdb->terms`.`slug` = 'topic-%d'", + $user_id, $topic_id ) ); + + $there = apply_filters( 'bb_is_user_subscribed', $there, $args ); + + if ( $there ) + return true; + + return false; +} + +/** + * Outputs the subscribe/unsubscibe link. + * + * Checks if user is subscribed and outputs link based on status. + * + * @since 1.1 + */ +function bb_user_subscribe_link() { + $topic_id = get_topic_id(); + + if ( !bb_is_user_logged_in() ) + return false; + + if ( bb_is_user_subscribed() ) + echo '<li id="subscription-toggle"><a href="'. bb_nonce_url( bb_get_uri( null, array( 'doit' => 'bb-subscribe', 'topic_id' => $topic_id, 'and' => 'remove' ) ), 'toggle-subscribe_' . $topic_id ) .'">' . apply_filters( 'bb_user_subscribe_link_unsubscribe', __( 'Unsubscribe from Topic' ) ) . '</a></li>'; + else + echo '<li id="subscription-toggle"><a href="'. bb_nonce_url( bb_get_uri( null, array( 'doit' => 'bb-subscribe', 'topic_id' => $topic_id, 'and' => 'add' ) ), 'toggle-subscribe_' . $topic_id ) .'">' . apply_filters( 'bb_user_subscribe_link_subscribe', __( 'Subscribe to Topic' ) ) . '</a></li>'; + +} + +/** + * Outputs the post form subscription checkbox. + * + * Checks if user is subscribed and outputs checkbox based on status. + * + * @since 1.1 + */ +function bb_user_subscribe_checkbox( $args = null ) { + + if ( !bb_is_user_logged_in() ) + return false; + + $is_current = false; + $defaults = array( 'tab' => false ); + $args = wp_parse_args( $args, $defaults ); + $tab = $args['tab'] !== false ? ' tabindex="' . $args['tab'] . '"' : ''; + $is_current = bb_get_user_id( get_post_author_id() ) == bb_get_current_user_info( 'id' ); + + // Change subscription checkbox message if current or moderating + if ( bb_is_topic_edit() && !$is_current ) + $text = __( 'This user should be notified of follow-up posts via email' ); + else + $text = __( 'Notify me of follow-up posts via email' ); + + echo ' + <label for="subscription_checkbox"> + <input name="subscription_checkbox" id="subscription_checkbox" type="checkbox" value="subscribe" ' . checked( true, bb_is_user_subscribed(), false ) . $tab . ' /> + ' . apply_filters( 'bb_user_subscribe_checkbox_label', $text, (bool) $is_current ) . ' + </label>'; + +} + +//VIEWS +function view_name( $view = '' ) { // Filtration should be done at bb_register_view() + echo get_view_name( $view ); +} + +function get_view_name( $_view = '' ) { + global $view, $bb_views; + if ( $_view ) + $v = bb_slug_sanitize($_view); + else + $v =& $view; + + if ( isset($bb_views[$v]) ) + return $bb_views[$v]['title']; +} + +function view_pages() { + global $page, $view_count; + echo apply_filters( 'view_pages', get_page_number_links( $page, $view_count ) ); +} + +function view_link( $_view = false, $page = 1, $context = BB_URI_CONTEXT_A_HREF ) { + echo get_view_link( $_view, $page, $context ); +} + +function get_view_link( $_view = false, $page = 1, $context = BB_URI_CONTEXT_A_HREF ) { + global $view, $bb_views; + if ( $_view ) + $v = bb_slug_sanitize($_view); + else + $v =& $view; + + if (!$context || !is_integer($context)) { + $context = BB_URI_CONTEXT_A_HREF; + } + + if ( !array_key_exists($v, $bb_views) ) + return bb_get_uri(null, null, $context); + if ( bb_get_option('mod_rewrite') ) { + $page = ( 1 < $page ) ? '/page/' . $page : ''; + $link = bb_get_uri('view/' . $v . $page, null, $context); + } else { + $query = array( + 'view' => $v, + 'page' => ( 1 < $page ) ? $page : false, + ); + $link = bb_get_uri('view.php', $query, $context); + } + + return apply_filters( 'get_view_link', $link, $v, $page, $context ); +} + +function _bb_parse_time_function_args( $args ) { + if ( is_numeric($args) ) + $args = array('id' => $args); + elseif ( $args && is_string($args) && false === strpos($args, '=') ) + $args = array('format' => $args); + + $defaults = array( 'id' => 0, 'format' => 'since', 'more' => 0, 'localize' => true ); + return wp_parse_args( $args, $defaults ); +} + +function _bb_time_function_return( $time, $args ) { + $time = bb_gmtstrtotime( $time ); + + switch ( $format = $args['format'] ) : + case 'since' : + return bb_since( $time, $args['more'] ); + break; + case 'timestamp' : + $format = 'U'; + break; + case 'mysql' : + $format = 'Y-m-d H:i:s'; + break; + case 'datetime' : + $format = bb_get_option( 'datetime_format' ); + break; + endswitch; + + return $args['localize'] ? bb_gmdate_i18n( $format, $time ) : gmdate( $format, $time ); +} + +function bb_template_scripts() { + if ( bb_is_topic() && bb_is_user_logged_in() ) + wp_enqueue_script( 'topic' ); + elseif ( bb_is_profile() && bb_is_user_logged_in() ) { + global $self; + if ($self == 'profile-edit.php') { + wp_enqueue_script( 'profile-edit' ); + } + } +} + +if ( !function_exists( 'checked' ) ) : +/** + * Outputs the html checked attribute. + * + * Compares the first two arguments and if identical marks as checked + * + * @since 1.1 + * + * @param mixed $checked One of the values to compare + * @param mixed $current (true) The other value to compare if not just true + * @param bool $echo Whether to echo or just return the string + * @return string html attribute or empty string + */ +function checked( $checked, $current = true, $echo = true ) { + return __checked_selected_helper( $checked, $current, $echo, 'checked' ); +} +endif; + +if ( !function_exists( 'selected' ) ) : +/** + * Outputs the html selected attribute. + * + * Compares the first two arguments and if identical marks as selected + * + * @since 1.1 + * + * @param mixed selected One of the values to compare + * @param mixed $current (true) The other value to compare if not just true + * @param bool $echo Whether to echo or just return the string + * @return string html attribute or empty string + */ +function selected( $selected, $current = true, $echo = true ) { + return __checked_selected_helper( $selected, $current, $echo, 'selected' ); +} +endif; + +if ( !function_exists( 'disabled' ) ) : +/** + * Outputs the html disabled attribute. + * + * Compares the first two arguments and if identical marks as disabled + * + * @since 1.1 + * + * @param mixed $disabled One of the values to compare + * @param mixed $current (true) The other value to compare if not just true + * @param bool $echo Whether to echo or just return the string + * @return string html attribute or empty string + */ +function disabled( $disabled, $current = true, $echo = true ) { + return __checked_selected_helper( $disabled, $current, $echo, 'disabled' ); +} +endif; + +if ( !function_exists( '__checked_selected_helper' ) ) : +/** + * Private helper function for checked, selected, and disabled. + * + * Compares the first two arguments and if identical marks as $type + * + * @since 1.1 + * @access private + * + * @param any $helper One of the values to compare + * @param any $current (true) The other value to compare if not just true + * @param bool $echo Whether to echo or just return the string + * @param string $type The type of checked|selected|disabled we are doing + * @return string html attribute or empty string + */ +function __checked_selected_helper( $helper, $current, $echo, $type ) { + if ( (string) $helper === (string) $current ) + $result = " $type='$type'"; + else + $result = ''; + + if ( $echo ) + echo $result; + + return $result; +} +endif; diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-topic-tags.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-topic-tags.php new file mode 100644 index 0000000..a06bb72 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-topic-tags.php @@ -0,0 +1,514 @@ +<?php + +/* Tags */ + +/** + * bb_add_topic_tag() - Adds a single tag to a topic. + * + * @param int $topic_id + * @param string $tag The (unsanitized) full name of the tag to be added + * @return int|bool The TT_ID of the new bb_topic_tag or false on failure + */ +function bb_add_topic_tag( $topic_id, $tag ) { + $tt_ids = bb_add_topic_tags( $topic_id, $tag ); + if ( is_array( $tt_ids ) ) + return $tt_ids[0]; + return false; +} + +/** + * bb_add_topic_tag() - Adds a multiple tags to a topic. + * + * @param int $topic_id + * @param array|string $tags The (unsanitized) full names of the tag to be added. CSV or array. + * @return array|bool The TT_IDs of the new bb_topic_tags or false on failure + */ +function bb_add_topic_tags( $topic_id, $tags ) { + global $wp_taxonomy_object; + $topic_id = (int) $topic_id; + if ( !$topic = get_topic( $topic_id ) ) + return false; + if ( !bb_current_user_can( 'add_tag_to', $topic_id ) ) + return false; + + $user_id = bb_get_current_user_info( 'id' ); + + $tags = apply_filters( 'bb_add_topic_tags', $tags, $topic_id ); + + if ( !is_array( $tags ) ) + $tags = explode(',', (string) $tags); + + $tt_ids = $wp_taxonomy_object->set_object_terms( $topic->topic_id, $tags, 'bb_topic_tag', array( 'append' => true, 'user_id' => $user_id ) ); + + if ( is_array($tt_ids) ) { + global $bbdb; + $bbdb->query( $bbdb->prepare( + "UPDATE $bbdb->topics SET tag_count = tag_count + %d WHERE topic_id = %d", count( $tt_ids ), $topic->topic_id + ) ); + wp_cache_delete( $topic->topic_id, 'bb_topic' ); + foreach ( $tt_ids as $tt_id ) + do_action('bb_tag_added', $tt_id, $user_id, $topic_id); + return $tt_ids; + } + return false; +} + +/** + * bb_create_tag() - Creates a single bb_topic_tag. + * + * @param string $tag The (unsanitized) full name of the tag to be created + * @return int|bool The TT_ID of the new bb_topic_tags or false on failure + */ +function bb_create_tag( $tag ) { + global $wp_taxonomy_object; + + if ( list($term_id, $tt_id) = $wp_taxonomy_object->is_term( $tag, 'bb_topic_tag' ) ) + return $tt_id; + + list($term_id, $tt_id) = $wp_taxonomy_object->insert_term( $tag, 'bb_topic_tag' ); + + if ( is_wp_error($term_id) || is_wp_error($tt_id) || !$tt_id ) + return false; + + return $tt_id; +} + +/** + * bb_remove_topic_tag() - Removes a single bb_topic_tag by a user from a topic. + * + * @param int $tt_id The TT_ID of the bb_topic_tag to be removed + * @param int $user_id + * @param int $topic_id + * @return array|false The TT_IDs of the users bb_topic_tags on that topic or false on failure + */ +function bb_remove_topic_tag( $tt_id, $user_id, $topic_id ) { + global $wp_taxonomy_object; + $tt_id = (int) $tt_id; + $user_id = (int) $user_id; + $topic_id = (int) $topic_id; + if ( !$topic = get_topic( $topic_id ) ) + return false; + if ( !bb_current_user_can( 'edit_tag_by_on', $user_id, $topic_id ) ) + return false; + + $_tag = bb_get_tag( $tt_id ); + + do_action('bb_pre_tag_removed', $tt_id, $user_id, $topic_id); + $currents = $wp_taxonomy_object->get_object_terms( $topic_id, 'bb_topic_tag', array( 'user_id' => $user_id, 'fields' => 'all' ) ); + if ( !is_array( $currents ) ) + return false; + + $found_tag_to_remove = false; + $current_tag_term_ids = array(); + foreach ( $currents as $current ) { + if ( $current->term_taxonomy_id == $tt_id ) { + $found_tag_to_remove = true; + continue; + } + $current_tag_term_ids[] = $current->term_id; + } + + if ( !$found_tag_to_remove ) + return false; + + $current_tag_term_ids = array_map( 'intval', $current_tag_term_ids ); + + $tt_ids = $wp_taxonomy_object->set_object_terms( $topic_id, array_values($current_tag_term_ids), 'bb_topic_tag', array( 'user_id' => $user_id ) ); + if ( is_array( $tt_ids ) ) { + global $bbdb; + $bbdb->query( $bbdb->prepare( + "UPDATE $bbdb->topics SET tag_count = %d WHERE topic_id = %d", count( $tt_ids ), $topic_id + ) ); + wp_cache_delete( $topic_id, 'bb_topic' ); + + // Count is updated at set_object_terms() + if ( $_tag && 2 > $_tag->tag_count ) { + bb_destroy_tag( $_tag->term_taxonomy_id ); + } + } elseif ( is_wp_error( $tt_ids ) ) { + return false; + } + return $tt_ids; +} + +/** + * bb_remove_topic_tag() - Removes all bb_topic_tags from a topic. + * + * @param int $topic_id + * @return bool + */ +function bb_remove_topic_tags( $topic_id ) { + global $wp_taxonomy_object; + $topic_id = (int) $topic_id; + if ( !$topic_id || !get_topic( $topic_id ) ) + return false; + + $_tags = bb_get_topic_tags( $topic_id ); + + do_action( 'bb_pre_remove_topic_tags', $topic_id ); + + $wp_taxonomy_object->delete_object_term_relationships( $topic_id, 'bb_topic_tag' ); + + global $bbdb; + $bbdb->query( $bbdb->prepare( + "UPDATE $bbdb->topics SET tag_count = 0 WHERE topic_id = %d", $topic_id + ) ); + wp_cache_delete( $topic_id, 'bb_topic' ); + + if ( $_tags ) { + foreach ( $_tags as $_tag ) { + // Count is updated at delete_object_term_relationships() + if ( 2 > $_tag->tag_count ) { + bb_destroy_tag( $_tag->term_taxonomy_id ); + } + } + } + + return true; +} + +/** + * bb_destroy_tag() - Completely removes a bb_topic_tag. + * + * @param int $tt_id The TT_ID of the tag to destroy + * @return bool + */ +function bb_destroy_tag( $tt_id, $recount_topics = true ) { + global $wp_taxonomy_object; + + $tt_id = (int) $tt_id; + + if ( !$tag = bb_get_tag( $tt_id ) ) + return false; + + if ( is_wp_error($tag) ) + return false; + + $topic_ids = bb_get_tagged_topic_ids( $tag->term_id ); + + $return = $wp_taxonomy_object->delete_term( $tag->term_id, 'bb_topic_tag' ); + + if ( is_wp_error($return) ) + return false; + + if ( !is_wp_error( $topic_ids ) && is_array( $topic_ids ) ) { + global $bbdb; + $bbdb->query( + "UPDATE $bbdb->topics SET tag_count = tag_count - 1 WHERE topic_id IN (" . join( ',', $topic_ids ) . ")" + ); + foreach ( $topic_ids as $topic_id ) { + wp_cache_delete( $topic_id, 'bb_topic' ); + } + } + + return $return; +} + +/** + * bb_get_tag_id() - Returns the id of the specified or global tag. + * + * @param mixed $id The TT_ID, tag name of the desired tag, or 0 for the global tag + * @return int + */ +function bb_get_tag_id( $id = 0 ) { + global $tag; + if ( $id ) { + $_tag = bb_get_tag( $id ); + } else { + $_tag =& $tag; + } + return (int) $_tag->tag_id; +} + +/** + * bb_get_tag() - Returns the specified tag. If $user_id and $topic_id are passed, will check to see if that tag exists on that topic by that user. + * + * @param mixed $id The TT_ID or tag name of the desired tag + * @param int $user_id (optional) + * @param int $topic_id (optional) + * @return object Term object (back-compat) + */ +function bb_get_tag( $id, $user_id = 0, $topic_id = 0 ) { + global $wp_taxonomy_object; + $user_id = (int) $user_id; + $topic_id = (int) $topic_id; + + $term = false; + if ( is_integer( $id ) ) { + $tt_id = (int) $id; + } else { + if ( !$term = $wp_taxonomy_object->get_term_by( 'slug', $id, 'bb_topic_tag' ) ) + return false; + $tt_id = (int) $term->term_taxonomy_id; + } + + if ( $user_id && $topic_id ) { + $args = array( 'user_id' => $user_id, 'fields' => 'tt_ids' ); + $cache_id = $topic_id . serialize( $args ); + + $tt_ids = wp_cache_get( $cache_id, 'bb_topic_tag_terms' ); + if ( empty( $tt_ids ) ) { + $tt_ids = $wp_taxonomy_object->get_object_terms( $topic_id, 'bb_topic_tag', $args ); + wp_cache_set( $cache_id, $tt_ids, 'bb_topic_tag_terms' ); + } + if ( !in_array( $tt_id, $tt_ids ) ) + return false; + } + + if ( !$term ) + $term = $wp_taxonomy_object->get_term_by( 'tt_id', $tt_id, 'bb_topic_tag' ); + + _bb_make_tag_compat( $term ); + + return $term; +} + +/** + * bb_get_topic_tags() - Returns all of the bb_topic_tags associated with the specified topic. + * + * @param int $topic_id + * @param mixed $args + * @return array|false Term objects (back-compat), false on failure + */ +function bb_get_topic_tags( $topic_id = 0, $args = null ) { + global $wp_taxonomy_object; + + if ( !$topic = get_topic( get_topic_id( $topic_id ) ) ) + return false; + + $topic_id = (int) $topic->topic_id; + + $cache_id = $topic_id . serialize( $args ); + + $terms = wp_cache_get( $cache_id, 'bb_topic_tag_terms' ); + if ( false === $terms ) { + $terms = $wp_taxonomy_object->get_object_terms( (int) $topic->topic_id, 'bb_topic_tag', $args ); + wp_cache_set( $cache_id, $terms, 'bb_topic_tag_terms' ); + } + + if ( is_wp_error( $terms ) ) + return false; + + for ( $i = 0; isset($terms[$i]); $i++ ) + _bb_make_tag_compat( $terms[$i] ); + + return $terms; +} + +function bb_get_user_tags( $topic_id, $user_id ) { + $tags = bb_get_topic_tags( $topic_id ); + if ( !is_array( $tags ) ) + return; + $user_tags = array(); + + foreach ( $tags as $tag ) : + if ( $tag->user_id == $user_id ) + $user_tags[] = $tag; + endforeach; + return $user_tags; +} + +function bb_get_other_tags( $topic_id, $user_id ) { + $tags = bb_get_topic_tags( $topic_id ); + if ( !is_array( $tags ) ) + return; + $other_tags = array(); + + foreach ( $tags as $tag ) : + if ( $tag->user_id != $user_id ) + $other_tags[] = $tag; + endforeach; + return $other_tags; +} + +function bb_get_public_tags( $topic_id ) { + $tags = bb_get_topic_tags( $topic_id ); + if ( !is_array( $tags ) ) + return; + $used_tags = array(); + $public_tags = array(); + + foreach ( $tags as $tag ) : + if ( !in_array($tag->tag_id, $used_tags) ) : + $public_tags[] = $tag; + $used_tags[] = $tag->tag_id; + endif; + endforeach; + return $public_tags; +} + +function bb_get_tagged_topic_ids( $tag_id ) { + global $wp_taxonomy_object, $tagged_topic_count; + + if ( $topic_ids = (array) $wp_taxonomy_object->get_objects_in_term( $tag_id, 'bb_topic_tag', array( 'field' => 'tt_id' ) ) ) { + $tagged_topic_count = count($topic_ids); + return apply_filters('get_tagged_topic_ids', $topic_ids); + } else { + $tagged_topic_count = 0; + return false; + } +} + +function get_tagged_topics( $args ) { + global $tagged_topic_count; + $defaults = array( 'tag_id' => false, 'page' => 1, 'number' => false, 'count' => true ); + if ( is_numeric( $args ) ) + $args = array( 'tag_id' => $args ); + else + $args = wp_parse_args( $args ); // Make sure it's an array + if ( 1 < func_num_args() ) + $args['page'] = func_get_arg(1); + if ( 2 < func_num_args() ) + $args['number'] = func_get_arg(2); + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $q = array('tag_id' => (int) $tag_id, 'page' => (int) $page, 'per_page' => (int) $number, 'count' => $count ); + + $query = new BB_Query( 'topic', $q, 'get_tagged_topics' ); + $tagged_topic_count = $query->found_rows; + + return $query->results; +} + +function get_tagged_topic_posts( $args ) { + $defaults = array( 'tag_id' => false, 'page' => 1, 'number' => false ); + if ( is_numeric( $args ) ) + $args = array( 'tag_id' => $args ); + else + $args = wp_parse_args( $args ); // Make sure it's an array + if ( 1 < func_num_args() ) + $args['page'] = func_get_arg(1); + if ( 2 < func_num_args() ) + $args['number'] = func_get_arg(2); + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + $q = array('tag_id' => (int) $tag_id, 'page' => (int) $page, 'per_page' => (int) $number); + + $query = new BB_Query( 'post', $q, 'get_tagged_topic_posts' ); + return $query->results; +} + +/** + * bb_get_top_tags() - Returns most popular tags. + * + * @param mixed $args + * @return array|false Term objects (back-compat), false on failure + */ +function bb_get_top_tags( $args = null ) { + global $wp_taxonomy_object; + + $args = wp_parse_args( $args, array( 'number' => 40 ) ); + $args['order'] = 'DESC'; + $args['orderby'] = 'count'; + + $terms = $wp_taxonomy_object->get_terms( 'bb_topic_tag', $args ); + if ( is_wp_error( $terms ) ) + return false; + + foreach ( $terms as $term ) + _bb_make_tag_compat( $term ); + + return $terms; +} + +/** + * Adds some back-compat properties/elements to a term. + * + * Casting $tag->term_taxonomy_id to an integer is important since + * we check it against is_integer() in bb_get_tag() + * + * @internal + */ +function _bb_make_tag_compat( &$tag ) { + if ( is_object($tag) && isset($tag->term_id) ) { + $tag->term_taxonomy_id = (int) $tag->term_taxonomy_id; + $tag->tag_id =& $tag->term_taxonomy_id; + $tag->tag =& $tag->slug; + $tag->raw_tag =& $tag->name; + $tag->tag_count =& $tag->count; + } elseif ( is_array($tag) && isset($tag['term_id']) ) { + $tag['term_taxonomy_id'] = (int) $tag['term_taxonomy_id']; + $tag['tag_id'] =& $tag['term_taxonomy_id']; + $tag['tag'] =& $tag['slug']; + $tag['raw_tag'] =& $tag['name']; + $tag['tag_count'] =& $tag['count']; + } +} + +function bb_rename_tag( $tag_id, $tag_name ) { + if ( !bb_current_user_can( 'manage_tags' ) ) { + return false; + } + + $tag_id = (int) $tag_id; + $raw_tag = bb_trim_for_db( $tag_name, 50 ); + $tag_name = tag_sanitize( $tag_name ); + + if ( empty( $tag_name ) ) { + return false; + } + + if ( $existing_tag = bb_get_tag( $tag_name ) ) { + if ( $existing_tag->term_id !== $tag_id ) { + return false; + } + } + + if ( !$old_tag = bb_get_tag( $tag_id ) ) { + return false; + } + + global $wp_taxonomy_object; + $ret = $wp_taxonomy_object->update_term( $tag_id, 'bb_topic_tag', array( 'name' => $raw_tag, 'slug' => $tag_name ) ); + + if ( $ret && !is_wp_error( $ret ) ) { + do_action( 'bb_tag_renamed', $tag_id, $old_tag->raw_tag, $raw_tag ); + return bb_get_tag( $tag_id ); + } + return false; +} + +// merge $old_id into $new_id. +function bb_merge_tags( $old_id, $new_id ) { + if ( !bb_current_user_can( 'manage_tags' ) ) { + return false; + } + + $old_id = (int) $old_id; + $new_id = (int) $new_id; + + if ( $old_id == $new_id ) { + return false; + } + + do_action( 'bb_pre_merge_tags', $old_id, $new_id ); + + // Get all topics tagged with old tag + $old_topics = bb_get_tagged_topic_ids( $old_id ); + + // Get all toics tagged with new tag + $new_topics = bb_get_tagged_topic_ids( $new_id ); + + // Get intersection of those topics + $both_topics = array_intersect( $old_topics, $new_topics ); + + // Discard the intersection from the old tags topics + $old_topics = array_diff( $old_topics, $both_topics ); + + // Add the remainder of the old tag topics to the new tag + if ( count( $old_topics ) ) { + $new_tag = bb_get_tag( $new_id ); + foreach ( $old_topics as $old_topic ) { + bb_add_topic_tag( $old_topic, $new_tag->slug ); + } + } + + // Destroy the old tag + $old_tag = bb_destroy_tag( $old_id ); + + return array( 'destroyed' => $old_tag, 'old_count' => count( $old_topics ), 'diff_count' => count( $both_topics ) ); +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-topics.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-topics.php new file mode 100644 index 0000000..d4baa5d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-topics.php @@ -0,0 +1,460 @@ +<?php + +/* Topics */ + +function get_topic( $id, $cache = true ) { + global $bbdb; + + if ( !is_numeric($id) ) { + list($slug, $sql) = bb_get_sql_from_slug( 'topic', $id ); + $id = wp_cache_get( $slug, 'bb_topic_slug' ); + } + + // not else + if ( is_numeric($id) ) { + $id = (int) $id; + $sql = "topic_id = $id"; + } + + if ( 0 === $id || !$sql ) + return false; + + // &= not =& + $cache &= 'AND topic_status = 0' == $where = apply_filters( 'get_topic_where', 'AND topic_status = 0' ); + + if ( ( $cache || !$where ) && is_numeric($id) && false !== $topic = wp_cache_get( $id, 'bb_topic' ) ) + return $topic; + + // $where is NOT bbdb:prepared + $topic = $bbdb->get_row( "SELECT * FROM $bbdb->topics WHERE $sql $where" ); + $topic = bb_append_meta( $topic, 'topic' ); + + if ( $cache ) { + wp_cache_set( $topic->topic_id, $topic, 'bb_topic' ); + wp_cache_add( $topic->topic_slug, $topic->topic_id, 'bb_topic_slug' ); + } + + return $topic; +} + +function bb_get_topic_from_uri( $uri ) { + // Extract the topic id or slug of the uri + if ( 'topic' === bb_get_path(0, false, $uri) ) { + $topic_id_or_slug = bb_get_path(1, false, $uri); + } else { + if ($parsed_uri = parse_url($uri)) { + if (preg_match('@/topic\.php$@' ,$parsed_uri['path'])) { + $args = wp_parse_args($parsed_uri['query']); + if (isset($args['id'])) { + $topic_id_or_slug = $args['id']; + } + } + } + } + + if ( !$topic_id_or_slug ) + return false; + + return get_topic( $topic_id_or_slug ); +} + +function get_latest_topics( $args = null ) { + $defaults = array( 'forum' => false, 'page' => 1, 'exclude' => false, 'number' => false ); + if ( is_numeric( $args ) ) + $args = array( 'forum' => $args ); + else + $args = wp_parse_args( $args ); // Make sure it's an array + if ( 1 < func_num_args() ) + $args['page'] = func_get_arg(1); + if ( 2 < func_num_args() ) + $args['exclude'] = func_get_arg(2); + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + if ( $exclude ) { + $exclude = '-' . str_replace(',', ',-', $exclude); + $exclude = str_replace('--', '-', $exclude); + if ( $forum ) + $forum = (string) $forum . ",$exclude"; + else + $forum = $exclude; + } + + $q = array( + 'forum_id' => $forum, + 'page' => $page, + 'per_page' => $number, + 'index_hint' => 'USE INDEX (`forum_time`)' + ); + + if ( bb_is_front() ) + $q['sticky'] = '-2'; + elseif ( bb_is_forum() || bb_is_view() ) + $q['sticky'] = 0; + + // Last param makes filters back compat + $query = new BB_Query( 'topic', $q, 'get_latest_topics' ); + return $query->results; +} + +function get_sticky_topics( $forum = false, $display = 1 ) { + if ( 1 != $display ) // Why is this even here? + return false; + + $q = array( + 'forum_id' => $forum, + 'sticky' => bb_is_front() ? 'super' : 'sticky' + ); + + $query = new BB_Query( 'topic', $q, 'get_sticky_topics' ); + return $query->results; +} + +function get_recent_user_threads( $user_id ) { + global $page; + $q = array( 'page' => $page, 'topic_author_id' => $user_id, 'order_by' => 't.topic_time'); + + $query = new BB_Query( 'topic', $q, 'get_recent_user_threads' ); + + return $query->results; +} + +function bb_insert_topic( $args = null ) { + global $bbdb; + + if ( !$args = wp_parse_args( $args ) ) + return false; + + $fields = array_keys( $args ); + + if ( isset($args['topic_id']) && false !== $args['topic_id'] ) { + $update = true; + if ( !$topic_id = (int) get_topic_id( $args['topic_id'] ) ) + return false; + // Get from db, not cache. Good idea? Prevents trying to update meta_key names in the topic table (get_topic() returns appended topic obj) + $topic = $bbdb->get_row( $bbdb->prepare( "SELECT * FROM $bbdb->topics WHERE topic_id = %d", $topic_id ) ); + $defaults = get_object_vars( $topic ); + unset($defaults['topic_id']); + + // Only update the args we passed + $fields = array_intersect( $fields, array_keys($defaults) ); + if ( in_array( 'topic_poster', $fields ) ) + $fields[] = 'topic_poster_name'; + if ( in_array( 'topic_last_poster', $fields ) ) + $fields[] = 'topic_last_poster_name'; + } else { + $topic_id = false; + $update = false; + + $now = bb_current_time('mysql'); + $current_user_id = bb_get_current_user_info( 'id' ); + + $defaults = array( + 'topic_title' => '', + 'topic_slug' => '', + 'topic_poster' => $current_user_id, // accepts ids + 'topic_poster_name' => '', // accept names + 'topic_last_poster' => $current_user_id, // accepts ids + 'topic_last_poster_name' => '', // accept names + 'topic_start_time' => $now, + 'topic_time' => $now, + 'topic_open' => 1, + 'forum_id' => 0 // accepts ids or slugs + ); + + // Insert all args + $fields = array_keys($defaults); + } + + $defaults['tags'] = false; // accepts array or comma delimited string + extract( wp_parse_args( $args, $defaults ) ); + unset($defaults['tags']); + + if ( !$forum = bb_get_forum( $forum_id ) ) + return false; + $forum_id = (int) $forum->forum_id; + + if ( !$user = bb_get_user( $topic_poster ) ) + $user = bb_get_user( $topic_poster_name, array( 'by' => 'login' ) ); + + if ( !empty( $user ) ) { + $topic_poster = $user->ID; + $topic_poster_name = $user->user_login; + } + + if ( !$last_user = bb_get_user( $topic_last_poster ) ) + $last_user = bb_get_user( $topic_last_poster_name, array( 'by' => 'login' ) ); + + if ( !empty( $last_user ) ) { + $topic_last_poster = $last_user->ID; + $topic_last_poster_name = $last_user->user_login; + } + + if ( in_array( 'topic_title', $fields ) ) { + $topic_title = apply_filters( 'pre_topic_title', $topic_title, $topic_id ); + if ( strlen($topic_title) < 1 ) + return false; + } + + if ( in_array( 'topic_slug', $fields ) ) { + $slug_sql = $update ? + "SELECT topic_slug FROM $bbdb->topics WHERE topic_slug = %s AND topic_id != %d" : + "SELECT topic_slug FROM $bbdb->topics WHERE topic_slug = %s"; + + $topic_slug = $_topic_slug = bb_slug_sanitize( $topic_slug ? $topic_slug : wp_specialchars_decode( $topic_title, ENT_QUOTES ) ); + if ( strlen( $_topic_slug ) < 1 ) + $topic_slug = $_topic_slug = '0'; + + while ( is_numeric($topic_slug) || $existing_slug = $bbdb->get_var( $bbdb->prepare( $slug_sql, $topic_slug, $topic_id ) ) ) + $topic_slug = bb_slug_increment( $_topic_slug, $existing_slug ); + } + + if ( $update ) { + $bbdb->update( $bbdb->topics, compact( $fields ), compact( 'topic_id' ) ); + wp_cache_delete( $topic_id, 'bb_topic' ); + if ( in_array( 'topic_slug', $fields ) ) + wp_cache_delete( $topic->topic_slug, 'bb_topic_slug' ); + wp_cache_flush( 'bb_query' ); + wp_cache_flush( 'bb_cache_posts_post_ids' ); + do_action( 'bb_update_topic', $topic_id ); + } else { + $bbdb->insert( $bbdb->topics, compact( $fields ) ); + $topic_id = $bbdb->insert_id; + $bbdb->query( $bbdb->prepare( "UPDATE $bbdb->forums SET topics = topics + 1 WHERE forum_id = %d", $forum_id ) ); + wp_cache_delete( $forum_id, 'bb_forum' ); + wp_cache_flush( 'bb_forums' ); + wp_cache_flush( 'bb_query' ); + wp_cache_flush( 'bb_cache_posts_post_ids' ); + do_action( 'bb_new_topic', $topic_id ); + } + + if ( !empty( $tags ) ) + bb_add_topic_tags( $topic_id, $tags ); + + do_action( 'bb_insert_topic', $topic_id, $args, compact( array_keys($args) ) ); // topic_id, what was passed, what was used + + return $topic_id; +} + +// Deprecated: expects $title to be pre-escaped +function bb_new_topic( $title, $forum, $tags = '', $args = '' ) { + $title = stripslashes( $title ); + $tags = stripslashes( $tags ); + $forum = (int) $forum; + return bb_insert_topic( wp_parse_args( $args ) + array( 'topic_title' => $title, 'forum_id' => $forum, 'tags' => $tags ) ); +} + +// Deprecated: expects $title to be pre-escaped +function bb_update_topic( $title, $topic_id ) { + $title = stripslashes( $title ); + return bb_insert_topic( array( 'topic_title' => $title, 'topic_id' => $topic_id ) ); +} + +function bb_delete_topic( $topic_id, $new_status = 0 ) { + global $bbdb; + $topic_id = (int) $topic_id; + add_filter( 'get_topic_where', 'bb_no_where' ); + if ( $topic = get_topic( $topic_id ) ) { + $new_status = (int) $new_status; + $old_status = (int) $topic->topic_status; + if ( $new_status == $old_status ) + return; + + $thread_args = array( 'per_page' => -1, 'order' => 'DESC' ); + if ( 0 != $old_status && 0 == $new_status ) + $thread_args['post_status'] = 'all'; + $poster_ids = array(); + $posts = get_thread( $topic_id, $thread_args ); + if ( $posts && count( $posts ) ) { + foreach ( $posts as $post ) { + _bb_delete_post( $post->post_id, $new_status ); + $poster_ids[] = $post->poster_id; + } + } + + if ( count( $poster_ids ) ) { + foreach ( array_unique( $poster_ids ) as $id ) { + if ( $user = bb_get_user( $id ) ) { + $topics_replied_key = $bbdb->prefix . 'topics_replied'; + bb_update_usermeta( $user->ID, $topics_replied_key, ( $old_status ? $user->$topics_replied_key + 1 : $user->$topics_replied_key - 1 ) ); + } + } + } + + if ( $ids = $bbdb->get_col( "SELECT user_id, meta_value FROM $bbdb->usermeta WHERE meta_key = 'favorites' and FIND_IN_SET('$topic_id', meta_value) > 0" ) ) + foreach ( $ids as $id ) + bb_remove_user_favorite( $id, $topic_id ); + + switch ( $new_status ) { + case 0: // Undeleting + $bbdb->update( $bbdb->topics, array( 'topic_status' => $new_status ), compact( 'topic_id' ) ); + $topic_posts = (int) $bbdb->get_var( $bbdb->prepare( + "SELECT COUNT(*) FROM $bbdb->posts WHERE topic_id = %d AND post_status = 0", $topic_id + ) ); + $all_posts = (int) $bbdb->get_var( $bbdb->prepare( + "SELECT COUNT(*) FROM $bbdb->posts WHERE topic_id = %d", $topic_id + ) ); + bb_update_topicmeta( $topic_id, 'deleted_posts', $all_posts - $topic_posts ); + $bbdb->query( $bbdb->prepare( + "UPDATE $bbdb->forums SET topics = topics + 1, posts = posts + %d WHERE forum_id = %d", $topic_posts, $topic->forum_id + ) ); + $bbdb->update( $bbdb->topics, compact( 'topic_posts' ), compact( 'topic_id' ) ); + bb_topic_set_last_post( $topic_id ); + bb_update_post_positions( $topic_id ); + break; + + default: // Other statuses (like Delete and Bozo) + bb_remove_topic_tags( $topic_id ); + $bbdb->update( $bbdb->topics, array( 'topic_status' => $new_status, 'tag_count' => 0 ), compact( 'topic_id' ) ); + $bbdb->query( $bbdb->prepare( + "UPDATE $bbdb->forums SET topics = topics - 1, posts = posts - %d WHERE forum_id = %d", $topic->topic_posts, $topic->forum_id + ) ); + break; + } + + do_action( 'bb_delete_topic', $topic_id, $new_status, $old_status ); + wp_cache_delete( $topic_id, 'bb_topic' ); + wp_cache_delete( $topic->topic_slug, 'bb_topic_slug' ); + wp_cache_delete( $topic_id, 'bb_thread' ); + wp_cache_delete( $topic->forum_id, 'bb_forum' ); + wp_cache_flush( 'bb_forums' ); + wp_cache_flush( 'bb_query' ); + wp_cache_flush( 'bb_cache_posts_post_ids' ); + return $topic_id; + } else { + return false; + } +} + +function bb_move_topic( $topic_id, $forum_id ) { + global $bbdb; + $topic = get_topic( $topic_id ); + $forum = bb_get_forum( $forum_id ); + $topic_id = (int) $topic->topic_id; + $forum_id = (int) $forum->forum_id; + + if ( $topic && $forum && $topic->forum_id != $forum_id ) { + $bbdb->update( $bbdb->posts, compact( 'forum_id' ), compact( 'topic_id' ) ); + $bbdb->update( $bbdb->topics, compact( 'forum_id' ), compact( 'topic_id' ) ); + $bbdb->query( $bbdb->prepare( + "UPDATE $bbdb->forums SET topics = topics + 1, posts = posts + %d WHERE forum_id = %d", $topic->topic_posts, $forum_id + ) ); + $bbdb->query( $bbdb->prepare( + "UPDATE $bbdb->forums SET topics = topics - 1, posts = posts - %d WHERE forum_id = %d", $topic->topic_posts, $topic->forum_id + ) ); + wp_cache_flush( 'bb_post' ); + wp_cache_delete( $topic_id, 'bb_topic' ); + wp_cache_delete( $forum_id, 'bb_forum' ); + wp_cache_flush( 'bb_forums' ); + wp_cache_flush( 'bb_query' ); + wp_cache_flush( 'bb_cache_posts_post_ids' ); + + do_action( 'bb_move_topic', $topic_id, $forum_id, $topic->forum_id ); + + return $forum_id; + } + return false; +} + +function bb_topic_set_last_post( $topic_id ) { + global $bbdb; + $topic_id = (int) $topic_id; + $old_post = $bbdb->get_row( $bbdb->prepare( + "SELECT post_id, poster_id, post_time FROM $bbdb->posts WHERE topic_id = %d AND post_status = 0 ORDER BY post_time DESC LIMIT 1", $topic_id + ) ); + $old_poster = bb_get_user( $old_post->poster_id ); + wp_cache_delete( $topic_id, 'bb_topic' ); + return $bbdb->update( $bbdb->topics, array( 'topic_time' => $old_post->post_time, 'topic_last_poster' => $old_post->poster_id, 'topic_last_poster_name' => $old_poster->login_name, 'topic_last_post_id' => $old_post->post_id ), compact( 'topic_id' ) ); +} + +function bb_close_topic( $topic_id ) { + global $bbdb; + $topic_id = (int) $topic_id; + wp_cache_delete( $topic_id, 'bb_topic' ); + $r = $bbdb->update( $bbdb->topics, array( 'topic_open' => 0 ), compact( 'topic_id' ) ); + do_action('close_topic', $topic_id, $r); + return $r; +} + +function bb_open_topic( $topic_id ) { + global $bbdb; + $topic_id = (int) $topic_id; + wp_cache_delete( $topic_id, 'bb_topic' ); + $r = $bbdb->update( $bbdb->topics, array( 'topic_open' => 1 ), compact( 'topic_id' ) ); + do_action('open_topic', $topic_id, $r); + return $r; +} + +function bb_stick_topic( $topic_id, $super = 0 ) { + global $bbdb; + $topic_id = (int) $topic_id; + $stick = 1 + abs((int) $super); + wp_cache_delete( $topic_id, 'bb_topic' ); + $r = $bbdb->update( $bbdb->topics, array( 'topic_sticky' => $stick ), compact( 'topic_id' ) ); + do_action('stick_topic', $topic_id, $r); + return $r; +} + +function bb_unstick_topic( $topic_id ) { + global $bbdb; + $topic_id = (int) $topic_id; + wp_cache_delete( $topic_id, 'bb_topic' ); + $r = $bbdb->update( $bbdb->topics, array( 'topic_sticky' => 0 ), compact( 'topic_id' ) ); + do_action('unstick_topic', $topic_id, $r); + return $r; +} + +function topic_is_open( $topic_id = 0 ) { + $topic = get_topic( get_topic_id( $topic_id ) ); + return 1 == $topic->topic_open; +} + +function topic_is_sticky( $topic_id = 0 ) { + $topic = get_topic( get_topic_id( $topic_id ) ); + return '0' !== $topic->topic_sticky; +} + +function bb_update_topic_voices( $topic_id ) +{ + if ( !$topic_id ) { + return; + } + + $topic_id = abs( (int) $topic_id ); + + global $bbdb; + if ( $voices = $bbdb->get_col( $bbdb->prepare( "SELECT DISTINCT poster_id FROM $bbdb->posts WHERE topic_id = %s AND post_status = '0';", $topic_id ) ) ) { + $voices = count( $voices ); + bb_update_topicmeta( $topic_id, 'voices_count', $voices ); + } +} + +/* Thread */ + +// Thread, topic? Guh-wah? +// A topic is the container, the thread is it's contents (the posts) + +function get_thread( $topic_id, $args = null ) { + $defaults = array( 'page' => 1, 'order' => 'ASC' ); + if ( is_numeric( $args ) ) + $args = array( 'page' => $args ); + if ( @func_get_arg(2) ) + $defaults['order'] = 'DESC'; + + $args = wp_parse_args( $args, $defaults ); + $args['topic_id'] = $topic_id; + + $query = new BB_Query( 'post', $args, 'get_thread' ); + return $query->results; +} + +// deprecated +function get_thread_post_ids( $topic_id ) { + $return = array( 'post' => array(), 'poster' => array() ); + foreach ( get_thread( $topic_id, array( 'per_page' => -1 ) ) as $post ) { + $return['post'][] = $post->post_id; + $return['poster'][] = $post->poster_id; + } + return $return; +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-users.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-users.php new file mode 100644 index 0000000..186d488 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/functions.bb-users.php @@ -0,0 +1,496 @@ +<?php + +/* Users */ + +function bb_block_current_user() { + global $bbdb; + if ( $id = bb_get_current_user_info( 'id' ) ) + bb_update_usermeta( $id, $bbdb->prefix . 'been_blocked', 1 ); // Just for logging. + bb_logout(); + bb_die(__("You've been blocked. If you think a mistake has been made, contact this site's administrator.")); +} + +function bb_get_user( $user_id, $args = null ) { + global $bbdb, $wp_users_object; + + // Get user + $user = $wp_users_object->get_user( $user_id, $args ); + + // Return on no user or error object + if ( !is_object( $user ) || is_wp_error( $user ) ) + return false; + + // Re calculate the user's meta in case we're pulling from a value cached on another site + if ( $user_vars = get_object_vars( $user ) ) { + $prefix_length = strlen( $bbdb->prefix ); + foreach ( $user_vars as $k => $v ) { + if ( 0 === strpos( $k, $bbdb->prefix ) ) { + $user->{substr( $k, $prefix_length )} = $v; + } + } + } + + return $user; +} + +function bb_cache_users( $ids ) { + global $wp_users_object; + $wp_users_object->get_user( $ids ); +} + +function bb_get_user_by_nicename( $nicename ) { + global $wp_users_object; + $user = $wp_users_object->get_user( $nicename, array( 'by' => 'nicename' ) ); + if ( is_wp_error($user) ) + return false; + return $user; +} + +function bb_delete_user( $user_id, $reassign = 0 ) { + global $wp_users_object, $bbdb; + + if ( !$user = bb_get_user( $user_id ) ) + return false; + + if ( $reassign ) { + if ( !$new_user = bb_get_user( $reassign ) ) + return false; + $bbdb->update( $bbdb->posts, array( 'poster_id' => $new_user->ID ), array( 'poster_id' => $user->ID ) ); + $bbdb->update( $bbdb->term_relationships, array( 'user_id' => $new_user->ID ), array( 'user_id' => $user->ID ) ); + $bbdb->update( $bbdb->topics, array( 'topic_poster' => $new_user->ID, 'topic_poster_name' => $new_user->user_login), array( 'topic_poster' => $user->ID ) ); + $bbdb->update( $bbdb->topics, array( 'topic_last_poster' => $new_user->ID, 'topic_last_poster_name' => $new_user->user_login ), array( 'topic_last_poster' => $user->ID ) ); + bb_update_topics_replied( $new_user->ID ); + wp_cache_flush( 'bb_post' ); + wp_cache_flush( 'bb_thread' ); + wp_cache_flush( 'bb_topic_tag' ); + wp_cache_flush( 'bb_topic' ); + } + + do_action( 'bb_delete_user', $user->ID, $reassign ); + + $wp_users_object->delete_user( $user->ID ); + + return true; +} + +function bb_update_topics_replied( $user_id ) { + global $bbdb; + + $user_id = (int) $user_id; + + if ( !$user = bb_get_user( $user_id ) ) + return false; + + $topics_replied = (int) $bbdb->get_var( $bbdb->prepare( "SELECT COUNT(DISTINCT topic_id) FROM $bbdb->posts WHERE post_status = '0' AND poster_id = %d", $user_id ) ); + return bb_update_usermeta( $user_id, $bbdb->prefix . 'topics_replied', $topics_replied ); +} + +function bb_update_user_status( $user_id, $user_status = 0 ) { + global $wp_users_object; + $user = bb_get_user( $user_id ); + $user_status = (int) $user_status; + $wp_users_object->update_user( $user->ID, compact( 'user_status' ) ); +} + +function bb_trusted_roles() { + return apply_filters( 'bb_trusted_roles', array('moderator', 'administrator', 'keymaster') ); +} + +function bb_is_trusted_user( $user ) { // ID, user_login, WP_User, DB user obj + if ( is_numeric($user) || is_string($user) ) + $user = new BP_User( $user ); + elseif ( is_object($user) && is_a($user, 'BP_User') ); // Intentional + elseif ( is_object($user) && isset($user->ID) && isset($user->user_login) ) // Make sure it's actually a user object + $user = new BP_User( $user->ID ); + else + return; + + if ( !$user->ID ) + return; + + return apply_filters( 'bb_is_trusted_user', (bool) array_intersect(bb_trusted_roles(), $user->roles), $user->ID ); +} + +function bb_apply_wp_role_map_to_user( $user, $reload = true ) { + // Expects only user ids + if ( !is_numeric( $user ) ) { + return; + } + + $user = (int) $user; + + if ( !$wordpress_table_prefix = bb_get_option('wp_table_prefix') ) { + return; + } + + if ( $wordpress_mu_primary_blog_id = bb_get_option( 'wordpress_mu_primary_blog_id' ) ) { + $wordpress_table_prefix .= $wordpress_mu_primary_blog_id . '_'; + } + + if ( !$wordpress_roles_map = bb_get_option( 'wp_roles_map' ) ) { + return; + } + + global $bbdb; + global $wp_roles; + global $bb; + + static $bbpress_roles_map = false; + + if ( !$bbpress_roles_map ) { + $bbpress_roles_map = array(); + foreach ( $wp_roles->get_names() as $_bbpress_role => $_bbpress_rolename ) { + $bbpress_roles_map[$_bbpress_role] = 'subscriber'; + } + unset( $_bbpress_role, $_bbpress_rolename ); + $bbpress_roles_map = array_merge( $bbpress_roles_map, array_flip( $wordpress_roles_map ) ); + unset( $bbpress_roles_map['inactive'], $bbpress_roles_map['blocked'] ); + } + + static $wordpress_userlevel_map = array( + 'administrator' => 10, + 'editor' => 7, + 'author' => 2, + 'contributor' => 1, + 'subscriber' => 0 + ); + + $bbpress_roles = bb_get_usermeta( $user, $bbdb->prefix . 'capabilities' ); + $wordpress_roles = bb_get_usermeta( $user, $wordpress_table_prefix . 'capabilities' ); + + if ( !$bbpress_roles && is_array( $wordpress_roles ) ) { + $bbpress_roles_new = array(); + + foreach ( $wordpress_roles as $wordpress_role => $wordpress_role_value ) { + if ( $wordpress_roles_map[strtolower( $wordpress_role )] && $wordpress_role_value ) { + $bbpress_roles_new[$wordpress_roles_map[strtolower( $wordpress_role )]] = true; + } + } + + if ( count( $bbpress_roles_new ) ) { + bb_update_usermeta( $user, $bbdb->prefix . 'capabilities', $bbpress_roles_new ); + if ( $reload ) { + header( 'Location: ' . bb_get_uri( null, null, BB_URI_CONTEXT_HEADER ) ); + exit; + } + } + } elseif ( !$wordpress_roles && is_array( $bbpress_roles ) ) { + $wordpress_roles_new = array(); + + foreach ( $bbpress_roles as $bbpress_role => $bbpress_role_value ) { + if ( $bbpress_roles_map[strtolower( $bbpress_role )] && $bbpress_role_value ) { + $wordpress_roles_new[$bbpress_roles_map[strtolower( $bbpress_role )]] = true; + $wordpress_userlevels_new[] = $wordpress_userlevel_map[$bbpress_roles_map[strtolower( $bbpress_role )]]; + } + } + + if ( count( $wordpress_roles_new ) ) { + bb_update_usermeta( $user, $wordpress_table_prefix . 'capabilities', $wordpress_roles_new ); + bb_update_usermeta( $user, $wordpress_table_prefix . 'user_level', max( $wordpress_userlevels_new ) ); + } + } +} + +function bb_apply_wp_role_map_to_orphans() { + if ( !$wordpress_table_prefix = bb_get_option('wp_table_prefix') ) { + return; + } + + if ( $wordpress_mu_primary_blog_id = bb_get_option( 'wordpress_mu_primary_blog_id' ) ) { + $wordpress_table_prefix .= $wordpress_mu_primary_blog_id . '_'; + } + + $role_query = <<<EOQ + SELECT + ID + FROM + `%1\$s` + LEFT JOIN `%2\$s` AS bbrole + ON ID = bbrole.user_id + AND bbrole.meta_key = '%3\$scapabilities' + LEFT JOIN `%2\$s` AS wprole + ON ID = wprole.user_id + AND wprole.meta_key = '%4\$scapabilities' + WHERE + bbrole.meta_key IS NULL OR + bbrole.meta_value IS NULL OR + wprole.meta_key IS NULL OR + wprole.meta_value IS NULL + ORDER BY + ID +EOQ; + + global $bbdb; + + $role_query = $bbdb->prepare( $role_query, $bbdb->users, $bbdb->usermeta, $bbdb->prefix, $wordpress_table_prefix ); + + if ( $user_ids = $bbdb->get_col( $role_query ) ) { + foreach ( $user_ids as $user_id ) { + bb_apply_wp_role_map_to_user( $user_id, false ); + } + } +} + +/** + * Updates a user's details in the database + * + * {@internal Missing Long Description}} + * + * @since 0.7.2 + * @global bbdb $bbdb + * + * @param int $user_id + * @param string $user_email + * @param string $user_url + * @return int + */ +function bb_update_user( $user_id, $user_email, $user_url, $display_name ) { + global $wp_users_object; + + $user_id = (int) $user_id; + $user_url = bb_fix_link( $user_url ); + + $wp_users_object->update_user( $user_id, compact( 'user_email', 'user_url', 'display_name' ) ); + + do_action('bb_update_user', $user_id); + return $user_id; +} + +/** + * Sends a reset password email + * + * Sends an email to the email address specified in the user's profile + * prompting them to change their password. + * + * @since 0.7.2 + * @global bbdb $bbdb + * + * @param string $user_login + * @return bool + */ +function bb_reset_email( $user_login ) +{ + global $bbdb; + + $user_login = sanitize_user( $user_login, true ); + + if ( !$user = $bbdb->get_row( $bbdb->prepare( "SELECT * FROM $bbdb->users WHERE user_login = %s", $user_login ) ) ) { + return new WP_Error( 'user_does_not_exist', __( 'The specified user does not exist.' ) ); + } + + $resetkey = substr( md5( bb_generate_password() ), 0, 15 ); + bb_update_usermeta( $user->ID, 'newpwdkey', $resetkey ); + + $reseturi = bb_get_uri( + 'bb-reset-password.php', + array( 'key' => $resetkey ), + BB_URI_CONTEXT_TEXT + BB_URI_CONTEXT_BB_USER_FORMS + ); + + $message = sprintf( + __( "If you wanted to reset your password, you may do so by visiting the following address:\n\n%s\n\nIf you don't want to reset your password, just ignore this email. Thanks!" ), + $reseturi + ); + $message = apply_filters( 'bb_reset_email_message', $message, $user, $reseturi, $resetkey ); + + $subject = sprintf( + __( '%s: Password Reset' ), + bb_get_option( 'name' ) + ); + $subject = apply_filters( 'bb_reset_email_subject', $subject, $user ); + + $mail_result = bb_mail( + bb_get_user_email( $user->ID ), + $subject, + $message + ); + + if ( !$mail_result ) { + return new WP_Error( 'sending_mail_failed', __( 'The email containing the password reset link could not be sent.' ) ); + } + + return true; +} + +/** + * Handles the resetting of users' passwords + * + * Handles resetting a user's password, prompted by an email sent by + * {@see bb_reset_email()} + * + * @since 0.7.2 + * @global bbdb $bbdb + * + * @param string $key + * @return unknown + */ +function bb_reset_password( $key ) +{ + global $bbdb; + + $key = sanitize_user( $key, true ); + + if ( empty( $key ) || !is_string( $key ) ) { + return new WP_Error( 'invalid_key', __( 'Invalid key' ) ); + } + + if ( !$user_id = $bbdb->get_var( $bbdb->prepare( "SELECT user_id FROM $bbdb->usermeta WHERE meta_key = 'newpwdkey' AND meta_value = %s", $key ) ) ) { + return new WP_Error( 'invalid_key', __( 'Invalid key' ) ); + } + + $user = new BP_User( $user_id ); + + if ( !$user || is_wp_error( $user ) ) { + return new WP_Error( 'invalid_key', __( 'Invalid key' ) ); + } + + if ( bb_has_broken_pass( $user->ID ) ) { + bb_block_current_user(); + } + + if ( !$user->has_cap( 'change_user_password', $user->ID ) ) { + return new WP_Error( 'permission_denied', __( 'You are not allowed to change your password.' ) ); + } + + $newpass = bb_generate_password(); + bb_update_user_password( $user->ID, $newpass ); + if ( !bb_send_pass( $user->ID, $newpass ) ) { + return new WP_Error( 'sending_mail_failed', __( 'The email containing the new password could not be sent.' ) ); + } + + bb_update_usermeta( $user->ID, 'newpwdkey', '' ); + return true; +} + +/** + * Updates a user's password in the database + * + * {@internal Missing Long Description}} + * + * @since 0.7.2 + * @global bbdb $bbdb + * + * @param int $user_id + * @param string $password + * @return int + */ +function bb_update_user_password( $user_id, $password ) { + global $wp_users_object; + + $user_id = (int) $user_id; + + $wp_users_object->set_password( $password, $user_id ); + + do_action('bb_update_user_password', $user_id); + return $user_id; +} + +/** + * Sends an email with the user's new password + * + * {@internal Missing Long Description}} + * + * @since 0.7.2 + * @global bbdb $bbdb {@internal Not used}} + * + * @param int|string $user + * @param string $pass + * @return bool + */ +function bb_send_pass( $user, $pass ) +{ + if ( !$user = bb_get_user( $user ) ) { + return false; + } + + $message = sprintf( + __( "Your username is: %1\$s \nYour password is: %2\$s \nYou can now log in: %3\$s \n\nEnjoy!" ), + $user->user_login, + $pass, + bb_get_uri( null, null, BB_URI_CONTEXT_TEXT ) + ); + $message = apply_filters( 'bb_send_pass_message', $message, $user, $pass ); + + $subject = sprintf( + __( '%s: Password' ), + bb_get_option( 'name' ) + ); + $subject = apply_filters( 'bb_send_pass_subject', $subject, $user ); + + return bb_mail( + bb_get_user_email( $user->ID ), + $subject, + $message + ); +} + + + +/* Favorites */ + +function get_user_favorites( $user_id, $topics = false ) { + $user = bb_get_user( $user_id ); + if ( !empty($user->favorites) ) { + if ( $topics ) + $query = new BB_Query( 'topic', array('favorites' => $user_id, 'index_hint' => 'USE INDEX (`forum_time`)'), 'get_user_favorites' ); + else + $query = new BB_Query( 'post', array('favorites' => $user_id), 'get_user_favorites' ); + return $query->results; + } +} + +function is_user_favorite( $user_id = 0, $topic_id = 0 ) { + if ( $user_id ) + $user = bb_get_user( $user_id ); + else + global $user; + if ( $topic_id ) + $topic = get_topic( $topic_id ); + else + global $topic; + if ( !$user || !$topic ) + return; + + if ( isset($user->favorites) ) + return in_array($topic->topic_id, explode(',', $user->favorites)); + return false; +} + +function bb_add_user_favorite( $user_id, $topic_id ) { + global $bbdb; + $user_id = (int) $user_id; + $topic_id = (int) $topic_id; + $user = bb_get_user( $user_id ); + $topic = get_topic( $topic_id ); + if ( !$user || !$topic ) + return false; + + $favorites_key = $bbdb->prefix . 'favorites'; + $fav = $user->$favorites_key ? explode(',', $user->$favorites_key) : array(); + if ( ! in_array( $topic_id, $fav ) ) { + $fav[] = $topic_id; + $fav = implode(',', $fav); + bb_update_usermeta( $user->ID, $favorites_key, $fav ); + } + do_action('bb_add_user_favorite', $user_id, $topic_id); + return true; +} + +function bb_remove_user_favorite( $user_id, $topic_id ) { + global $bbdb; + $user_id = (int) $user_id; + $topic_id = (int) $topic_id; + $user = bb_get_user( $user_id ); + if ( !$user ) + return false; + + $favorites_key = $bbdb->prefix . 'favorites'; + $fav = explode(',', $user->$favorites_key); + if ( is_int( $pos = array_search($topic_id, $fav) ) ) { + array_splice($fav, $pos, 1); + $fav = implode(',', $fav); + bb_update_usermeta( $user->ID, $favorites_key, $fav); + } + do_action('bb_remove_user_favorite', $user_id, $topic_id); + return true; +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/hoverIntent.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/hoverIntent.js new file mode 100644 index 0000000..5cbf978 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/hoverIntent.js @@ -0,0 +1,128 @@ +/** +* hoverIntent is similar to jQuery's built-in "hover" function except that +* instead of firing the onMouseOver event immediately, hoverIntent checks +* to see if the user's mouse has slowed down (beneath the sensitivity +* threshold) before firing the onMouseOver event. +* +* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+ +* <http://cherne.net/brian/resources/jquery.hoverIntent.html> +* +* hoverIntent is currently available for use in all personal or commercial +* projects under both MIT and GPL licenses. This means that you can choose +* the license that best suits your project, and use it accordingly. +* +* // basic usage (just like .hover) receives onMouseOver and onMouseOut functions +* $("ul li").hoverIntent( showNav , hideNav ); +* +* // advanced usage receives configuration object only +* $("ul li").hoverIntent({ +* sensitivity: 7, // number = sensitivity threshold (must be 1 or higher) +* interval: 100, // number = milliseconds of polling interval +* over: showNav, // function = onMouseOver callback (required) +* timeout: 0, // number = milliseconds delay before onMouseOut function call +* out: hideNav // function = onMouseOut callback (required) +* }); +* +* @param f onMouseOver function || An object with configuration options +* @param g onMouseOut function || Nothing (use configuration options object) +* @author Brian Cherne <brian@cherne.net> +*/ +(function($) { + $.fn.hoverIntent = function(f,g) { + // default configuration options + var cfg = { + sensitivity: 7, + interval: 100, + timeout: 0 + }; + // override configuration options with user supplied object + cfg = $.extend(cfg, g ? { over: f, out: g } : f ); + + // instantiate variables + // cX, cY = current X and Y position of mouse, updated by mousemove event + // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval + var cX, cY, pX, pY; + + // A private function for getting mouse position + var track = function(ev) { + cX = ev.pageX; + cY = ev.pageY; + }; + + // A private function for comparing current and previous mouse position + var compare = function(ev,ob) { + ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); + // compare mouse positions to see if they've crossed the threshold + if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) { + $(ob).unbind("mousemove",track); + // set hoverIntent state to true (so mouseOut can be called) + ob.hoverIntent_s = 1; + return cfg.over.apply(ob,[ev]); + } else { + // set previous coordinates for next time + pX = cX; pY = cY; + // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs) + ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval ); + } + }; + + // A private function for delaying the mouseOut function + var delay = function(ev,ob) { + ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); + ob.hoverIntent_s = 0; + return cfg.out.apply(ob,[ev]); + }; + + // workaround for Mozilla bug: not firing mouseout/mouseleave on absolute positioned elements over textareas and input type="text" + var handleHover = function(e) { + var t = this; + + // next two lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut + var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget; + while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } } + if ( p == this ) { + if ( $.browser.mozilla ) { + if ( e.type == "mouseout" ) { + t.mtout = setTimeout( function(){doHover(e,t);}, 30 ); + } else { + if (t.mtout) { t.mtout = clearTimeout(t.mtout); } + } + } + return; + } else { + if (t.mtout) { t.mtout = clearTimeout(t.mtout); } + doHover(e,t); + } + }; + + // A private function for handling mouse 'hovering' + var doHover = function(e,ob) { + + // copy objects to be passed into t (required for event object to be passed in IE) + var ev = jQuery.extend({},e); + + // cancel hoverIntent timer if it exists + if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); } + + // else e.type == "onmouseover" + if (e.type == "mouseover") { + // set "previous" X and Y position based on initial entry point + pX = ev.pageX; pY = ev.pageY; + // update "current" X and Y position based on mousemove + $(ob).bind("mousemove",track); + // start polling interval (self-calling timeout) to compare mouse coordinates over time + if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );} + + // else e.type == "onmouseout" + } else { + // unbind expensive mousemove event + $(ob).unbind("mousemove",track); + // if hoverIntent state is true, then call the mouseOut function after the specified delay + if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );} + } + }; + + // bind the function to the two event listeners + return this.mouseover(handleHover).mouseout(handleHover); + }; +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/interface.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/interface.js new file mode 100644 index 0000000..ba04a17 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/interface.js @@ -0,0 +1,12 @@ +/** + * Interface Elements for jQuery + * + * http://interface.eyecon.ro + * + * Copyright (c) 2006 Stefan Petre + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * + */ + eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('k.f2={2r:u(M){E q.1E(u(){if(!M.aR||!M.aZ)E;D el=q;el.2l={aq:M.aq||cO,aR:M.aR,aZ:M.aZ,8e:M.8e||\'fV\',aJ:M.aJ||\'fV\',2Y:M.2Y&&2g M.2Y==\'u\'?M.2Y:I,3i:M.2Y&&2g M.3i==\'u\'?M.3i:I,7U:M.7U&&2g M.7U==\'u\'?M.7U:I,as:k(M.aR,q),8f:k(M.aZ,q),H:M.H||8J,67:M.67||0};el.2l.8f.2G().B(\'W\',\'9R\').eq(0).B({W:el.2l.aq+\'U\',19:\'2B\'}).2T();el.2l.as.1E(u(2N){q.7X=2N}).gC(u(){k(q).2R(el.2l.aJ)},u(){k(q).4i(el.2l.aJ)}).1J(\'5h\',u(e){if(el.2l.67==q.7X)E;el.2l.as.eq(el.2l.67).4i(el.2l.8e).2T().eq(q.7X).2R(el.2l.8e).2T();el.2l.8f.eq(el.2l.67).5w({W:0},el.2l.H,u(){q.14.19=\'1o\';if(el.2l.3i){el.2l.3i.1D(el,[q])}}).2T().eq(q.7X).1Y().5w({W:el.2l.aq},el.2l.H,u(){q.14.19=\'2B\';if(el.2l.2Y){el.2l.2Y.1D(el,[q])}}).2T();if(el.2l.7U){el.2l.7U.1D(el,[q,el.2l.8f.K(q.7X),el.2l.as.K(el.2l.67),el.2l.8f.K(el.2l.67)])}el.2l.67=q.7X}).eq(0).2R(el.2l.8e).2T();k(q).B(\'W\',k(q).B(\'W\')).B(\'2U\',\'2K\')})}};k.fn.gN=k.f2.2r;k.aA={2r:u(M){E q.1E(u(){D el=q;D 7E=2*18.2Q/f1;D an=2*18.2Q;if(k(el).B(\'Y\')!=\'2s\'&&k(el).B(\'Y\')!=\'1P\'){k(el).B(\'Y\',\'2s\')}el.1l={1R:k(M.1R,q),2F:M.2F,6q:M.6q,aD:M.aD,an:an,1N:k.1a.2o(q),Y:k.1a.3w(q),26:18.2Q/2,bi:M.bi,8p:M.6r,6r:[],aG:I,7E:2*18.2Q/f1};el.1l.fB=(el.1l.1N.w-el.1l.2F)/2;el.1l.7D=(el.1l.1N.h-el.1l.6q-el.1l.6q*el.1l.8p)/2;el.1l.2D=2*18.2Q/el.1l.1R.1N();el.1l.ba=el.1l.1N.w/2;el.1l.b9=el.1l.1N.h/2-el.1l.6q*el.1l.8p;D ak=1h.3F(\'22\');k(ak).B({Y:\'1P\',3I:1,Q:0,O:0});k(el).1S(ak);el.1l.1R.1E(u(2N){a6=k(\'1T\',q).K(0);W=T(el.1l.6q*el.1l.8p);if(k.3a.4t){3E=1h.3F(\'1T\');k(3E).B(\'Y\',\'1P\');3E.2J=a6.2J;3E.14.5E=\'gE 9n:9w.9y.cC(1G=60, 14=1, gB=0, gA=0, gv=0, gF=0)\'}P{3E=1h.3F(\'3E\');if(3E.fD){4L=3E.fD("2d");3E.14.Y=\'1P\';3E.14.W=W+\'U\';3E.14.Z=el.1l.2F+\'U\';3E.W=W;3E.Z=el.1l.2F;4L.gu();4L.gO(0,W);4L.gk(1,-1);4L.gp(a6,0,0,el.1l.2F,W);4L.6H();4L.gm="gG-4l";D ap=4L.hy(0,0,0,W);ap.fs(1,"fr(1V, 1V, 1V, 1)");ap.fs(0,"fr(1V, 1V, 1V, 0.6)");4L.hx=ap;if(hA.hB.3J(\'hw\')!=-1){4L.hv()}P{4L.hu(0,0,el.1l.2F,W)}}}el.1l.6r[2N]=3E;k(ak).1S(3E)}).1J(\'9z\',u(e){el.1l.aG=1b;el.1l.H=el.1l.7E*0.1*el.1l.H/18.3S(el.1l.H);E I}).1J(\'8B\',u(e){el.1l.aG=I;E I});k.aA.7T(el);el.1l.H=el.1l.7E*0.2;el.1l.ht=1X.6V(u(){el.1l.26+=el.1l.H;if(el.1l.26>an)el.1l.26=0;k.aA.7T(el)},20);k(el).1J(\'8B\',u(){el.1l.H=el.1l.7E*0.2*el.1l.H/18.3S(el.1l.H)}).1J(\'3D\',u(e){if(el.1l.aG==I){1s=k.1a.4a(e);fz=el.1l.1N.w-1s.x+el.1l.Y.x;el.1l.H=el.1l.bi*el.1l.7E*(el.1l.1N.w/2-fz)/(el.1l.1N.w/2)}})})},7T:u(el){el.1l.1R.1E(u(2N){b8=el.1l.26+2N*el.1l.2D;x=el.1l.fB*18.5H(b8);y=el.1l.7D*18.83(b8);f9=T(2a*(el.1l.7D+y)/(2*el.1l.7D));fk=(el.1l.7D+y)/(2*el.1l.7D);Z=T((el.1l.2F-el.1l.aD)*fk+el.1l.aD);W=T(Z*el.1l.6q/el.1l.2F);q.14.Q=el.1l.b9+y-W/2+"U";q.14.O=el.1l.ba+x-Z/2+"U";q.14.Z=Z+"U";q.14.W=W+"U";q.14.3I=f9;el.1l.6r[2N].14.Q=T(el.1l.b9+y+W-1-W/2)+"U";el.1l.6r[2N].14.O=T(el.1l.ba+x-Z/2)+"U";el.1l.6r[2N].14.Z=Z+"U";el.1l.6r[2N].14.W=T(W*el.1l.8p)+"U"})}};k.fn.hI=k.aA.2r;k.23({G:{c8:u(p,n,1W,1H,1m){E((-18.5H(p*18.2Q)/2)+0.5)*1H+1W},hK:u(p,n,1W,1H,1m){E 1H*(n/=1m)*n*n+1W},fl:u(p,n,1W,1H,1m){E-1H*((n=n/1m-1)*n*n*n-1)+1W},hm:u(p,n,1W,1H,1m){if((n/=1m/2)<1)E 1H/2*n*n*n*n+1W;E-1H/2*((n-=2)*n*n*n-2)+1W},8l:u(p,n,1W,1H,1m){if((n/=1m)<(1/2.75)){E 1H*(7.aB*n*n)+1W}P if(n<(2/2.75)){E 1H*(7.aB*(n-=(1.5/2.75))*n+.75)+1W}P if(n<(2.5/2.75)){E 1H*(7.aB*(n-=(2.25/2.75))*n+.gY)+1W}P{E 1H*(7.aB*(n-=(2.h2/2.75))*n+.gX)+1W}},cr:u(p,n,1W,1H,1m){if(k.G.8l)E 1H-k.G.8l(p,1m-n,0,1H,1m)+1W;E 1W+1H},gW:u(p,n,1W,1H,1m){if(k.G.cr&&k.G.8l)if(n<1m/2)E k.G.cr(p,n*2,0,1H,1m)*.5+1W;E k.G.8l(p,n*2-1m,0,1H,1m)*.5+1H*.5+1W;E 1W+1H},gQ:u(p,n,1W,1H,1m){D a,s;if(n==0)E 1W;if((n/=1m)==1)E 1W+1H;a=1H*0.3;p=1m*.3;if(a<18.3S(1H)){a=1H;s=p/4}P{s=p/(2*18.2Q)*18.cb(1H/a)}E-(a*18.6b(2,10*(n-=1))*18.83((n*1m-s)*(2*18.2Q)/p))+1W},gT:u(p,n,1W,1H,1m){D a,s;if(n==0)E 1W;if((n/=1m/2)==2)E 1W+1H;a=1H*0.3;p=1m*.3;if(a<18.3S(1H)){a=1H;s=p/4}P{s=p/(2*18.2Q)*18.cb(1H/a)}E a*18.6b(2,-10*n)*18.83((n*1m-s)*(2*18.2Q)/p)+1H+1W},gV:u(p,n,1W,1H,1m){D a,s;if(n==0)E 1W;if((n/=1m/2)==2)E 1W+1H;a=1H*0.3;p=1m*.3;if(a<18.3S(1H)){a=1H;s=p/4}P{s=p/(2*18.2Q)*18.cb(1H/a)}if(n<1){E-.5*(a*18.6b(2,10*(n-=1))*18.83((n*1m-s)*(2*18.2Q)/p))+1W}E a*18.6b(2,-10*(n-=1))*18.83((n*1m-s)*(2*18.2Q)/p)*.5+1H+1W}}});k.6n={2r:u(M){E q.1E(u(){D el=q;el.1F={1R:k(M.1R,q),1Z:k(M.1Z,q),1M:k.1a.3w(q),2F:M.2F,ax:M.ax,7Y:M.7Y,ge:M.ge,51:M.51,6x:M.6x};k.6n.aH(el,0);k(1X).1J(\'gU\',u(){el.1F.1M=k.1a.3w(el);k.6n.aH(el,0);k.6n.7T(el)});k.6n.7T(el);el.1F.1R.1J(\'9z\',u(){k(el.1F.ax,q).K(0).14.19=\'2B\'}).1J(\'8B\',u(){k(el.1F.ax,q).K(0).14.19=\'1o\'});k(1h).1J(\'3D\',u(e){D 1s=k.1a.4a(e);D 5s=0;if(el.1F.51&&el.1F.51==\'cv\')D aI=1s.x-el.1F.1M.x-(el.4c-el.1F.2F*el.1F.1R.1N())/2-el.1F.2F/2;P if(el.1F.51&&el.1F.51==\'2L\')D aI=1s.x-el.1F.1M.x-el.4c+el.1F.2F*el.1F.1R.1N();P D aI=1s.x-el.1F.1M.x;D fP=18.6b(1s.y-el.1F.1M.y-el.5W/2,2);el.1F.1R.1E(u(2N){45=18.ez(18.6b(aI-2N*el.1F.2F,2)+fP);45-=el.1F.2F/2;45=45<0?0:45;45=45>el.1F.7Y?el.1F.7Y:45;45=el.1F.7Y-45;bB=el.1F.6x*45/el.1F.7Y;q.14.Z=el.1F.2F+bB+\'U\';q.14.O=el.1F.2F*2N+5s+\'U\';5s+=bB});k.6n.aH(el,5s)})})},aH:u(el,5s){if(el.1F.51)if(el.1F.51==\'cv\')el.1F.1Z.K(0).14.O=(el.4c-el.1F.2F*el.1F.1R.1N())/2-5s/2+\'U\';P if(el.1F.51==\'O\')el.1F.1Z.K(0).14.O=-5s/el.1F.1R.1N()+\'U\';P if(el.1F.51==\'2L\')el.1F.1Z.K(0).14.O=(el.4c-el.1F.2F*el.1F.1R.1N())-5s/2+\'U\';el.1F.1Z.K(0).14.Z=el.1F.2F*el.1F.1R.1N()+5s+\'U\'},7T:u(el){el.1F.1R.1E(u(2N){q.14.Z=el.1F.2F+\'U\';q.14.O=el.1F.2F*2N+\'U\'})}};k.fn.hi=k.6n.2r;k.N={1c:S,8R:S,3A:S,2I:S,4y:S,cl:S,1d:S,2h:S,1R:S,5o:u(){k.N.8R.5o();if(k.N.3A){k.N.3A.2G()}},4w:u(){k.N.1R=S;k.N.2h=S;k.N.4y=k.N.1d.2y;if(k.N.1c.B(\'19\')==\'2B\'){if(k.N.1d.1f.fx){3m(k.N.1d.1f.fx.1u){1e\'c6\':k.N.1c.7a(k.N.1d.1f.fx.1m,k.N.5o);1r;1e\'1z\':k.N.1c.fq(k.N.1d.1f.fx.1m,k.N.5o);1r;1e\'a7\':k.N.1c.g3(k.N.1d.1f.fx.1m,k.N.5o);1r}}P{k.N.1c.2G()}if(k.N.1d.1f.3i)k.N.1d.1f.3i.1D(k.N.1d,[k.N.1c,k.N.3A])}P{k.N.5o()}1X.bH(k.N.2I)},dQ:u(){D 1d=k.N.1d;D 4d=k.N.aY(1d);if(1d&&4d.3o!=k.N.4y&&4d.3o.1g>=1d.1f.aL){k.N.4y=4d.3o;k.N.cl=4d.3o;81={2n:k(1d).1p(\'hj\')||\'2n\',2y:4d.3o};k.hl({1u:\'hk\',81:k.hf(81),he:u(fZ){1d.1f.4e=k(\'3o\',fZ);1N=1d.1f.4e.1N();if(1N>0){D 5p=\'\';1d.1f.4e.1E(u(2N){5p+=\'<8P 4I="\'+k(\'2y\',q).3g()+\'" 8K="\'+2N+\'" 14="9b: ad;">\'+k(\'3g\',q).3g()+\'</8P>\'});if(1d.1f.aU){D 3M=k(\'2y\',1d.1f.4e.K(0)).3g();1d.2y=4d.3j+3M+1d.1f.3N+4d.66;k.N.6J(1d,4d.3o.1g!=3M.1g?(4d.3j.1g+4d.3o.1g):3M.1g,4d.3o.1g!=3M.1g?(4d.3j.1g+3M.1g):3M.1g)}if(1N>0){k.N.cj(1d,5p)}P{k.N.4w()}}P{k.N.4w()}},5N:1d.1f.aN})}},cj:u(1d,5p){k.N.8R.3x(5p);k.N.1R=k(\'8P\',k.N.8R.K(0));k.N.1R.9z(k.N.di).1J(\'5h\',k.N.dj);D Y=k.1a.3w(1d);D 1N=k.1a.2o(1d);k.N.1c.B(\'Q\',Y.y+1N.hb+\'U\').B(\'O\',Y.x+\'U\').2R(1d.1f.aM);if(k.N.3A){k.N.3A.B(\'19\',\'2B\').B(\'Q\',Y.y+1N.hb+\'U\').B(\'O\',Y.x+\'U\').B(\'Z\',k.N.1c.B(\'Z\')).B(\'W\',k.N.1c.B(\'W\'))}k.N.2h=0;k.N.1R.K(0).3l=1d.1f.7H;k.N.8Q(1d,1d.1f.4e.K(0),\'7J\');if(k.N.1c.B(\'19\')==\'1o\'){if(1d.1f.bV){D cp=k.1a.aT(1d,1b);D cm=k.1a.6U(1d,1b);k.N.1c.B(\'Z\',1d.4c-(k.dF?(cp.l+cp.r+cm.l+cm.r):0)+\'U\')}if(1d.1f.fx){3m(1d.1f.fx.1u){1e\'c6\':k.N.1c.7f(1d.1f.fx.1m);1r;1e\'1z\':k.N.1c.fo(1d.1f.fx.1m);1r;1e\'a7\':k.N.1c.gb(1d.1f.fx.1m);1r}}P{k.N.1c.1Y()}if(k.N.1d.1f.2Y)k.N.1d.1f.2Y.1D(k.N.1d,[k.N.1c,k.N.3A])}},dO:u(){D 1d=q;if(1d.1f.4e){k.N.4y=1d.2y;k.N.cl=1d.2y;D 5p=\'\';1d.1f.4e.1E(u(2N){2y=k(\'2y\',q).3g().6c();fY=1d.2y.6c();if(2y.3J(fY)==0){5p+=\'<8P 4I="\'+k(\'2y\',q).3g()+\'" 8K="\'+2N+\'" 14="9b: ad;">\'+k(\'3g\',q).3g()+\'</8P>\'}});if(5p!=\'\'){k.N.cj(1d,5p);q.1f.9x=1b;E}}1d.1f.4e=S;q.1f.9x=I},6J:u(2n,26,2T){if(2n.b1){D 6t=2n.b1();6t.hp(1b);6t.dI("ck",26);6t.ha("ck",-2T+26);6t.8C()}P if(2n.aF){2n.aF(26,2T)}P{if(2n.5q){2n.5q=26;2n.dN=2T}}2n.6K()},f0:u(2n){if(2n.5q)E 2n.5q;P if(2n.b1){D 6t=1h.6J.dZ();D eX=6t.h9();E 0-eX.dI(\'ck\',-h6)}},aY:u(2n){D 4P={2y:2n.2y,3j:\'\',66:\'\',3o:\'\'};if(2n.1f.aQ){D 8N=I;D 5q=k.N.f0(2n)||0;D 4T=4P.2y.7C(2n.1f.3N);24(D i=0;i<4T.1g;i++){if((4P.3j.1g+4T[i].1g>=5q||5q==0)&&!8N){if(4P.3j.1g<=5q)4P.3o=4T[i];P 4P.66+=4T[i]+(4T[i]!=\'\'?2n.1f.3N:\'\');8N=1b}P if(8N){4P.66+=4T[i]+(4T[i]!=\'\'?2n.1f.3N:\'\')}if(!8N){4P.3j+=4T[i]+(4T.1g>1?2n.1f.3N:\'\')}}}P{4P.3o=4P.2y}E 4P},bU:u(e){1X.bH(k.N.2I);D 1d=k.N.aY(q);D 3K=e.7L||e.7K||-1;if(/13|27|35|36|38|40|9/.48(3K)&&k.N.1R){if(1X.2k){1X.2k.bT=1b;1X.2k.c0=I}P{e.aP();e.aW()}if(k.N.2h!=S)k.N.1R.K(k.N.2h||0).3l=\'\';P k.N.2h=-1;3m(3K){1e 9:1e 13:if(k.N.2h==-1)k.N.2h=0;D 2h=k.N.1R.K(k.N.2h||0);D 3M=2h.5C(\'4I\');q.2y=1d.3j+3M+q.1f.3N+1d.66;k.N.4y=1d.3o;k.N.6J(q,1d.3j.1g+3M.1g+q.1f.3N.1g,1d.3j.1g+3M.1g+q.1f.3N.1g);k.N.4w();if(q.1f.68){4u=T(2h.5C(\'8K\'))||0;k.N.8Q(q,q.1f.4e.K(4u),\'68\')}if(q.7W)q.7W(I);E 3K!=13;1r;1e 27:q.2y=1d.3j+k.N.4y+q.1f.3N+1d.66;q.1f.4e=S;k.N.4w();if(q.7W)q.7W(I);E I;1r;1e 35:k.N.2h=k.N.1R.1N()-1;1r;1e 36:k.N.2h=0;1r;1e 38:k.N.2h--;if(k.N.2h<0)k.N.2h=k.N.1R.1N()-1;1r;1e 40:k.N.2h++;if(k.N.2h==k.N.1R.1N())k.N.2h=0;1r}k.N.8Q(q,q.1f.4e.K(k.N.2h||0),\'7J\');k.N.1R.K(k.N.2h||0).3l=q.1f.7H;if(k.N.1R.K(k.N.2h||0).7W)k.N.1R.K(k.N.2h||0).7W(I);if(q.1f.aU){D aK=k.N.1R.K(k.N.2h||0).5C(\'4I\');q.2y=1d.3j+aK+q.1f.3N+1d.66;if(k.N.4y.1g!=aK.1g)k.N.6J(q,1d.3j.1g+k.N.4y.1g,1d.3j.1g+aK.1g)}E I}k.N.dO.1D(q);if(q.1f.9x==I){if(1d.3o!=k.N.4y&&1d.3o.1g>=q.1f.aL)k.N.2I=1X.9T(k.N.dQ,q.1f.54);if(k.N.1R){k.N.4w()}}E 1b},8Q:u(2n,3o,1u){if(2n.1f[1u]){D 81={};ar=3o.f3(\'*\');24(i=0;i<ar.1g;i++){81[ar[i].4Y]=ar[i].7c.h4}2n.1f[1u].1D(2n,[81])}},di:u(e){if(k.N.1R){if(k.N.2h!=S)k.N.1R.K(k.N.2h||0).3l=\'\';k.N.1R.K(k.N.2h||0).3l=\'\';k.N.2h=T(q.5C(\'8K\'))||0;k.N.1R.K(k.N.2h||0).3l=k.N.1d.1f.7H}},dj:u(2k){1X.bH(k.N.2I);2k=2k||k.2k.gS(1X.2k);2k.aP();2k.aW();D 1d=k.N.aY(k.N.1d);D 3M=q.5C(\'4I\');k.N.1d.2y=1d.3j+3M+k.N.1d.1f.3N+1d.66;k.N.4y=q.5C(\'4I\');k.N.6J(k.N.1d,1d.3j.1g+3M.1g+k.N.1d.1f.3N.1g,1d.3j.1g+3M.1g+k.N.1d.1f.3N.1g);k.N.4w();if(k.N.1d.1f.68){4u=T(q.5C(\'8K\'))||0;k.N.8Q(k.N.1d,k.N.1d.1f.4e.K(4u),\'68\')}E I},eJ:u(e){3K=e.7L||e.7K||-1;if(/13|27|35|36|38|40/.48(3K)&&k.N.1R){if(1X.2k){1X.2k.bT=1b;1X.2k.c0=I}P{e.aP();e.aW()}E I}},2r:u(M){if(!M.aN||!k.1a){E}if(!k.N.1c){if(k.3a.4t){k(\'2e\',1h).1S(\'<3A 14="19:1o;Y:1P;5E:9n:9w.9y.cC(1G=0);" id="ds" 2J="ek:I;" ej="0" ep="cD"></3A>\');k.N.3A=k(\'#ds\')}k(\'2e\',1h).1S(\'<22 id="dr" 14="Y: 1P; Q: 0; O: 0; z-cZ: h3; 19: 1o;"><9h 14="6w: 0;8F: 0; h1-14: 1o; z-cZ: h0;">&7k;</9h></22>\');k.N.1c=k(\'#dr\');k.N.8R=k(\'9h\',k.N.1c)}E q.1E(u(){if(q.4Y!=\'ch\'&&q.5C(\'1u\')!=\'3g\')E;q.1f={};q.1f.aN=M.aN;q.1f.aL=18.3S(T(M.aL)||1);q.1f.aM=M.aM?M.aM:\'\';q.1f.7H=M.7H?M.7H:\'\';q.1f.68=M.68&&M.68.1K==2A?M.68:S;q.1f.2Y=M.2Y&&M.2Y.1K==2A?M.2Y:S;q.1f.3i=M.3i&&M.3i.1K==2A?M.3i:S;q.1f.7J=M.7J&&M.7J.1K==2A?M.7J:S;q.1f.bV=M.bV||I;q.1f.aQ=M.aQ||I;q.1f.3N=q.1f.aQ?(M.3N||\', \'):\'\';q.1f.aU=M.aU?1b:I;q.1f.54=18.3S(T(M.54)||aC);if(M.fx&&M.fx.1K==7M){if(!M.fx.1u||!/c6|1z|a7/.48(M.fx.1u)){M.fx.1u=\'1z\'}if(M.fx.1u==\'1z\'&&!k.fx.1z)E;if(M.fx.1u==\'a7\'&&!k.fx.61)E;M.fx.1m=18.3S(T(M.fx.1m)||8J);if(M.fx.1m>q.1f.54){M.fx.1m=q.1f.54-2a}q.1f.fx=M.fx}q.1f.4e=S;q.1f.9x=I;k(q).1p(\'bU\',\'eN\').6K(u(){k.N.1d=q;k.N.4y=q.2y}).dH(k.N.eJ).6y(k.N.bU).5B(u(){k.N.2I=1X.9T(k.N.4w,hM)})})}};k.fn.hR=k.N.2r;k.1y={2I:S,4Q:S,29:S,2D:10,26:u(el,4J,2D,eG){k.1y.4Q=el;k.1y.29=4J;k.1y.2D=T(2D)||10;k.1y.2I=1X.6V(k.1y.eF,T(eG)||40)},eF:u(){24(i=0;i<k.1y.29.1g;i++){if(!k.1y.29[i].2X){k.1y.29[i].2X=k.23(k.1a.7G(k.1y.29[i]),k.1a.74(k.1y.29[i]),k.1a.6z(k.1y.29[i]))}P{k.1y.29[i].2X.t=k.1y.29[i].3d;k.1y.29[i].2X.l=k.1y.29[i].3c}if(k.1y.4Q.A&&k.1y.4Q.A.7q==1b){69={x:k.1y.4Q.A.2v,y:k.1y.4Q.A.2q,1C:k.1y.4Q.A.1B.1C,hb:k.1y.4Q.A.1B.hb}}P{69=k.23(k.1a.7G(k.1y.4Q),k.1a.74(k.1y.4Q))}if(k.1y.29[i].2X.t>0&&k.1y.29[i].2X.y+k.1y.29[i].2X.t>69.y){k.1y.29[i].3d-=k.1y.2D}P if(k.1y.29[i].2X.t<=k.1y.29[i].2X.h&&k.1y.29[i].2X.t+k.1y.29[i].2X.hb<69.y+69.hb){k.1y.29[i].3d+=k.1y.2D}if(k.1y.29[i].2X.l>0&&k.1y.29[i].2X.x+k.1y.29[i].2X.l>69.x){k.1y.29[i].3c-=k.1y.2D}P if(k.1y.29[i].2X.l<=k.1y.29[i].2X.hP&&k.1y.29[i].2X.l+k.1y.29[i].2X.1C<69.x+69.1C){k.1y.29[i].3c+=k.1y.2D}}},8o:u(){1X.5T(k.1y.2I);k.1y.4Q=S;k.1y.29=S;24(i in k.1y.29){k.1y.29[i].2X=S}}};k.11={1c:S,F:S,4U:u(){E q.1E(u(){if(q.9I){q.A.5e.3q(\'5v\',k.11.bN);q.A=S;q.9I=I;if(k.3a.4t){q.bE="eN"}P{q.14.hq=\'\';q.14.e1=\'\';q.14.e7=\'\'}}})},bN:u(e){if(k.11.F!=S){k.11.9A(e);E I}D C=q.3U;k(1h).1J(\'3D\',k.11.bX).1J(\'5P\',k.11.9A);C.A.1s=k.1a.4a(e);C.A.4B=C.A.1s;C.A.7q=I;C.A.ho=q!=q.3U;k.11.F=C;if(C.A.5i&&q!=q.3U){bS=k.1a.3w(C.31);bQ=k.1a.2o(C);bR={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};dx=C.A.4B.x-bS.x-bQ.1C/2-bR.x;dy=C.A.4B.y-bS.y-bQ.hb/2-bR.y;k.3b.5c(C,[dx,dy])}E k.7n||I},ea:u(e){D C=k.11.F;C.A.7q=1b;D 9G=C.14;C.A.7V=k.B(C,\'19\');C.A.4n=k.B(C,\'Y\');if(!C.A.cz)C.A.cz=C.A.4n;C.A.2c={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};C.A.9B=0;C.A.ai=0;if(k.3a.4t){D bW=k.1a.6U(C,1b);C.A.9B=bW.l||0;C.A.ai=bW.t||0}C.A.1B=k.23(k.1a.3w(C),k.1a.2o(C));if(C.A.4n!=\'2s\'&&C.A.4n!=\'1P\'){9G.Y=\'2s\'}k.11.1c.5o();D 5g=C.fI(1b);k(5g).B({19:\'2B\',O:\'2P\',Q:\'2P\'});5g.14.5K=\'0\';5g.14.5z=\'0\';5g.14.5k=\'0\';5g.14.5j=\'0\';k.11.1c.1S(5g);D 3Y=k.11.1c.K(0).14;if(C.A.bD){3Y.Z=\'9F\';3Y.W=\'9F\'}P{3Y.W=C.A.1B.hb+\'U\';3Y.Z=C.A.1B.1C+\'U\'}3Y.19=\'2B\';3Y.5K=\'2P\';3Y.5z=\'2P\';3Y.5k=\'2P\';3Y.5j=\'2P\';k.23(C.A.1B,k.1a.2o(5g));if(C.A.2V){if(C.A.2V.O){C.A.2c.x+=C.A.1s.x-C.A.1B.x-C.A.2V.O;C.A.1B.x=C.A.1s.x-C.A.2V.O}if(C.A.2V.Q){C.A.2c.y+=C.A.1s.y-C.A.1B.y-C.A.2V.Q;C.A.1B.y=C.A.1s.y-C.A.2V.Q}if(C.A.2V.2L){C.A.2c.x+=C.A.1s.x-C.A.1B.x-C.A.1B.hb+C.A.2V.2L;C.A.1B.x=C.A.1s.x-C.A.1B.1C+C.A.2V.2L}if(C.A.2V.4D){C.A.2c.y+=C.A.1s.y-C.A.1B.y-C.A.1B.hb+C.A.2V.4D;C.A.1B.y=C.A.1s.y-C.A.1B.hb+C.A.2V.4D}}C.A.2v=C.A.2c.x;C.A.2q=C.A.2c.y;if(C.A.8s||C.A.2p==\'94\'){8U=k.1a.6U(C.31,1b);C.A.1B.x=C.8t+(k.3a.4t?0:k.3a.7I?-8U.l:8U.l);C.A.1B.y=C.8G+(k.3a.4t?0:k.3a.7I?-8U.t:8U.t);k(C.31).1S(k.11.1c.K(0))}if(C.A.2p){k.11.c5(C);C.A.5t.2p=k.11.ce}if(C.A.5i){k.3b.ct(C)}3Y.O=C.A.1B.x-C.A.9B+\'U\';3Y.Q=C.A.1B.y-C.A.ai+\'U\';3Y.Z=C.A.1B.1C+\'U\';3Y.W=C.A.1B.hb+\'U\';k.11.F.A.9E=I;if(C.A.gx){C.A.5t.6a=k.11.c7}if(C.A.3I!=I){k.11.1c.B(\'3I\',C.A.3I)}if(C.A.1G){k.11.1c.B(\'1G\',C.A.1G);if(1X.71){k.11.1c.B(\'5E\',\'8V(1G=\'+C.A.1G*2a+\')\')}}if(C.A.7O){k.11.1c.2R(C.A.7O);k.11.1c.K(0).7c.14.19=\'1o\'}if(C.A.4o)C.A.4o.1D(C,[5g,C.A.2c.x,C.A.2c.y]);if(k.1x&&k.1x.8D>0){k.1x.ed(C)}if(C.A.46==I){9G.19=\'1o\'}E I},c5:u(C){if(C.A.2p.1K==b0){if(C.A.2p==\'94\'){C.A.28=k.23({x:0,y:0},k.1a.2o(C.31));D 8S=k.1a.6U(C.31,1b);C.A.28.w=C.A.28.1C-8S.l-8S.r;C.A.28.h=C.A.28.hb-8S.t-8S.b}P if(C.A.2p==\'1h\'){D bY=k.1a.bm();C.A.28={x:0,y:0,w:bY.w,h:bY.h}}}P if(C.A.2p.1K==7F){C.A.28={x:T(C.A.2p[0])||0,y:T(C.A.2p[1])||0,w:T(C.A.2p[2])||0,h:T(C.A.2p[3])||0}}C.A.28.dx=C.A.28.x-C.A.1B.x;C.A.28.dy=C.A.28.y-C.A.1B.y},9H:u(F){if(F.A.8s||F.A.2p==\'94\'){k(\'2e\',1h).1S(k.11.1c.K(0))}k.11.1c.5o().2G().B(\'1G\',1);if(1X.71){k.11.1c.B(\'5E\',\'8V(1G=2a)\')}},9A:u(e){k(1h).3q(\'3D\',k.11.bX).3q(\'5P\',k.11.9A);if(k.11.F==S){E}D F=k.11.F;k.11.F=S;if(F.A.7q==I){E I}if(F.A.44==1b){k(F).B(\'Y\',F.A.4n)}D 9G=F.14;if(F.5i){k.11.1c.B(\'9b\',\'8j\')}if(F.A.7O){k.11.1c.4i(F.A.7O)}if(F.A.6N==I){if(F.A.fx>0){if(!F.A.1O||F.A.1O==\'4j\'){D x=12 k.fx(F,{1m:F.A.fx},\'O\');x.1L(F.A.2c.x,F.A.8y)}if(!F.A.1O||F.A.1O==\'49\'){D y=12 k.fx(F,{1m:F.A.fx},\'Q\');y.1L(F.A.2c.y,F.A.8v)}}P{if(!F.A.1O||F.A.1O==\'4j\')F.14.O=F.A.8y+\'U\';if(!F.A.1O||F.A.1O==\'49\')F.14.Q=F.A.8v+\'U\'}k.11.9H(F);if(F.A.46==I){k(F).B(\'19\',F.A.7V)}}P if(F.A.fx>0){F.A.9E=1b;D dh=I;if(k.1x&&k.1t&&F.A.44){dh=k.1a.3w(k.1t.1c.K(0))}k.11.1c.5w({O:dh?dh.x:F.A.1B.x,Q:dh?dh.y:F.A.1B.y},F.A.fx,u(){F.A.9E=I;if(F.A.46==I){F.14.19=F.A.7V}k.11.9H(F)})}P{k.11.9H(F);if(F.A.46==I){k(F).B(\'19\',F.A.7V)}}if(k.1x&&k.1x.8D>0){k.1x.eO(F)}if(k.1t&&F.A.44){k.1t.fC(F)}if(F.A.2Z&&(F.A.8y!=F.A.2c.x||F.A.8v!=F.A.2c.y)){F.A.2Z.1D(F,F.A.b3||[0,0,F.A.8y,F.A.8v])}if(F.A.3T)F.A.3T.1D(F);E I},c7:u(x,y,dx,dy){if(dx!=0)dx=T((dx+(q.A.gx*dx/18.3S(dx))/2)/q.A.gx)*q.A.gx;if(dy!=0)dy=T((dy+(q.A.gy*dy/18.3S(dy))/2)/q.A.gy)*q.A.gy;E{dx:dx,dy:dy,x:0,y:0}},ce:u(x,y,dx,dy){dx=18.3L(18.3r(dx,q.A.28.dx),q.A.28.w+q.A.28.dx-q.A.1B.1C);dy=18.3L(18.3r(dy,q.A.28.dy),q.A.28.h+q.A.28.dy-q.A.1B.hb);E{dx:dx,dy:dy,x:0,y:0}},bX:u(e){if(k.11.F==S||k.11.F.A.9E==1b){E}D F=k.11.F;F.A.4B=k.1a.4a(e);if(F.A.7q==I){45=18.ez(18.6b(F.A.1s.x-F.A.4B.x,2)+18.6b(F.A.1s.y-F.A.4B.y,2));if(45<F.A.6M){E}P{k.11.ea(e)}}D dx=F.A.4B.x-F.A.1s.x;D dy=F.A.4B.y-F.A.1s.y;24(D i in F.A.5t){D 3y=F.A.5t[i].1D(F,[F.A.2c.x+dx,F.A.2c.y+dy,dx,dy]);if(3y&&3y.1K==7M){dx=i!=\'7R\'?3y.dx:(3y.x-F.A.2c.x);dy=i!=\'7R\'?3y.dy:(3y.y-F.A.2c.y)}}F.A.2v=F.A.1B.x+dx-F.A.9B;F.A.2q=F.A.1B.y+dy-F.A.ai;if(F.A.5i&&(F.A.3H||F.A.2Z)){k.3b.3H(F,F.A.2v,F.A.2q)}if(F.A.4m)F.A.4m.1D(F,[F.A.2c.x+dx,F.A.2c.y+dy]);if(!F.A.1O||F.A.1O==\'4j\'){F.A.8y=F.A.2c.x+dx;k.11.1c.K(0).14.O=F.A.2v+\'U\'}if(!F.A.1O||F.A.1O==\'49\'){F.A.8v=F.A.2c.y+dy;k.11.1c.K(0).14.Q=F.A.2q+\'U\'}if(k.1x&&k.1x.8D>0){k.1x.al(F)}E I},2r:u(o){if(!k.11.1c){k(\'2e\',1h).1S(\'<22 id="e8"></22>\');k.11.1c=k(\'#e8\');D el=k.11.1c.K(0);D 4J=el.14;4J.Y=\'1P\';4J.19=\'1o\';4J.9b=\'8j\';4J.eu=\'1o\';4J.2U=\'2K\';if(1X.71){el.bE="e4"}P{4J.gi=\'1o\';4J.e7=\'1o\';4J.e1=\'1o\'}}if(!o){o={}}E q.1E(u(){if(q.9I||!k.1a)E;if(1X.71){q.gh=u(){E I};q.gj=u(){E I}}D el=q;D 5e=o.3v?k(q).gf(o.3v):k(q);if(k.3a.4t){5e.1E(u(){q.bE="e4"})}P{5e.B(\'-gI-7R-8C\',\'1o\');5e.B(\'7R-8C\',\'1o\');5e.B(\'-gH-7R-8C\',\'1o\')}q.A={5e:5e,6N:o.6N?1b:I,46:o.46?1b:I,44:o.44?o.44:I,5i:o.5i?o.5i:I,8s:o.8s?o.8s:I,3I:o.3I?T(o.3I)||0:I,1G:o.1G?2m(o.1G):I,fx:T(o.fx)||S,6R:o.6R?o.6R:I,5t:{},1s:{},4o:o.4o&&o.4o.1K==2A?o.4o:I,3T:o.3T&&o.3T.1K==2A?o.3T:I,2Z:o.2Z&&o.2Z.1K==2A?o.2Z:I,1O:/49|4j/.48(o.1O)?o.1O:I,6M:o.6M?T(o.6M)||0:0,2V:o.2V?o.2V:I,bD:o.bD?1b:I,7O:o.7O||I};if(o.5t&&o.5t.1K==2A)q.A.5t.7R=o.5t;if(o.4m&&o.4m.1K==2A)q.A.4m=o.4m;if(o.2p&&((o.2p.1K==b0&&(o.2p==\'94\'||o.2p==\'1h\'))||(o.2p.1K==7F&&o.2p.1g==4))){q.A.2p=o.2p}if(o.2O){q.A.2O=o.2O}if(o.6a){if(2g o.6a==\'gz\'){q.A.gx=T(o.6a)||1;q.A.gy=T(o.6a)||1}P if(o.6a.1g==2){q.A.gx=T(o.6a[0])||1;q.A.gy=T(o.6a[1])||1}}if(o.3H&&o.3H.1K==2A){q.A.3H=o.3H}q.9I=1b;5e.1E(u(){q.3U=el});5e.1J(\'5v\',k.11.bN)})}};k.fn.23({aS:k.11.4U,7t:k.11.2r});k.1x={du:u(5J,5G,7Q,7S){E 5J<=k.11.F.A.2v&&(5J+7Q)>=(k.11.F.A.2v+k.11.F.A.1B.w)&&5G<=k.11.F.A.2q&&(5G+7S)>=(k.11.F.A.2q+k.11.F.A.1B.h)?1b:I},cV:u(5J,5G,7Q,7S){E!(5J>(k.11.F.A.2v+k.11.F.A.1B.w)||(5J+7Q)<k.11.F.A.2v||5G>(k.11.F.A.2q+k.11.F.A.1B.h)||(5G+7S)<k.11.F.A.2q)?1b:I},1s:u(5J,5G,7Q,7S){E 5J<k.11.F.A.4B.x&&(5J+7Q)>k.11.F.A.4B.x&&5G<k.11.F.A.4B.y&&(5G+7S)>k.11.F.A.4B.y?1b:I},5r:I,3Q:{},8D:0,3P:{},ed:u(C){if(k.11.F==S){E}D i;k.1x.3Q={};D bJ=I;24(i in k.1x.3P){if(k.1x.3P[i]!=S){D 1j=k.1x.3P[i].K(0);if(k(k.11.F).is(\'.\'+1j.1i.a)){if(1j.1i.m==I){1j.1i.p=k.23(k.1a.7G(1j),k.1a.74(1j));1j.1i.m=1b}if(1j.1i.ac){k.1x.3P[i].2R(1j.1i.ac)}k.1x.3Q[i]=k.1x.3P[i];if(k.1t&&1j.1i.s&&k.11.F.A.44){1j.1i.el=k(\'.\'+1j.1i.a,1j);C.14.19=\'1o\';k.1t.cT(1j);1j.1i.ay=k.1t.8x(k.1p(1j,\'id\')).7l;C.14.19=C.A.7V;bJ=1b}if(1j.1i.9i){1j.1i.9i.1D(k.1x.3P[i].K(0),[k.11.F])}}}}if(bJ){k.1t.26()}},dS:u(){k.1x.3Q={};24(i in k.1x.3P){if(k.1x.3P[i]!=S){D 1j=k.1x.3P[i].K(0);if(k(k.11.F).is(\'.\'+1j.1i.a)){1j.1i.p=k.23(k.1a.7G(1j),k.1a.74(1j));if(1j.1i.ac){k.1x.3P[i].2R(1j.1i.ac)}k.1x.3Q[i]=k.1x.3P[i];if(k.1t&&1j.1i.s&&k.11.F.A.44){1j.1i.el=k(\'.\'+1j.1i.a,1j);C.14.19=\'1o\';k.1t.cT(1j);C.14.19=C.A.7V}}}}},al:u(e){if(k.11.F==S){E}k.1x.5r=I;D i;D bK=I;D eQ=0;24(i in k.1x.3Q){D 1j=k.1x.3Q[i].K(0);if(k.1x.5r==I&&k.1x[1j.1i.t](1j.1i.p.x,1j.1i.p.y,1j.1i.p.1C,1j.1i.p.hb)){if(1j.1i.hc&&1j.1i.h==I){k.1x.3Q[i].2R(1j.1i.hc)}if(1j.1i.h==I&&1j.1i.7x){bK=1b}1j.1i.h=1b;k.1x.5r=1j;if(k.1t&&1j.1i.s&&k.11.F.A.44){k.1t.1c.K(0).3l=1j.1i.eV;k.1t.al(1j)}eQ++}P if(1j.1i.h==1b){if(1j.1i.7y){1j.1i.7y.1D(1j,[e,k.11.1c.K(0).7c,1j.1i.fx])}if(1j.1i.hc){k.1x.3Q[i].4i(1j.1i.hc)}1j.1i.h=I}}if(k.1t&&!k.1x.5r&&k.11.F.44){k.1t.1c.K(0).14.19=\'1o\'}if(bK){k.1x.5r.1i.7x.1D(k.1x.5r,[e,k.11.1c.K(0).7c])}},eO:u(e){D i;24(i in k.1x.3Q){D 1j=k.1x.3Q[i].K(0);if(1j.1i.ac){k.1x.3Q[i].4i(1j.1i.ac)}if(1j.1i.hc){k.1x.3Q[i].4i(1j.1i.hc)}if(1j.1i.s){k.1t.7s[k.1t.7s.1g]=i}if(1j.1i.9l&&1j.1i.h==1b){1j.1i.h=I;1j.1i.9l.1D(1j,[e,1j.1i.fx])}1j.1i.m=I;1j.1i.h=I}k.1x.3Q={}},4U:u(){E q.1E(u(){if(q.9j){if(q.1i.s){id=k.1p(q,\'id\');k.1t.5L[id]=S;k(\'.\'+q.1i.a,q).aS()}k.1x.3P[\'d\'+q.c2]=S;q.9j=I;q.f=S}})},2r:u(o){E q.1E(u(){if(q.9j==1b||!o.3C||!k.1a||!k.11){E}q.1i={a:o.3C,ac:o.9J||I,hc:o.a5||I,eV:o.58||I,9l:o.gq||o.9l||I,7x:o.7x||o.dC||I,7y:o.7y||o.fO||I,9i:o.9i||I,t:o.6I&&(o.6I==\'du\'||o.6I==\'cV\')?o.6I:\'1s\',fx:o.fx?o.fx:I,m:I,h:I};if(o.cQ==1b&&k.1t){id=k.1p(q,\'id\');k.1t.5L[id]=q.1i.a;q.1i.s=1b;if(o.2Z){q.1i.2Z=o.2Z;q.1i.ay=k.1t.8x(id).7l}}q.9j=1b;q.c2=T(18.6o()*c9);k.1x.3P[\'d\'+q.c2]=k(q);k.1x.8D++})}};k.fn.23({dR:k.1x.4U,do:k.1x.2r});k.gD=k.1x.dS;k.3B={1c:S,8L:u(){3g=q.2y;if(!3g)E;14={dz:k(q).B(\'dz\')||\'\',4A:k(q).B(\'4A\')||\'\',8Z:k(q).B(\'8Z\')||\'\',dP:k(q).B(\'dP\')||\'\',dT:k(q).B(\'dT\')||\'\',dU:k(q).B(\'dU\')||\'\',c3:k(q).B(\'c3\')||\'\',dY:k(q).B(\'dY\')||\'\'};k.3B.1c.B(14);3x=k.3B.dX(3g);3x=3x.4E(12 bb("\\\\n","g"),"<br />");k.3B.1c.3x(\'gL\');ci=k.3B.1c.K(0).4c;k.3B.1c.3x(3x);Z=k.3B.1c.K(0).4c+ci;if(q.6l.2M&&Z>q.6l.2M[0]){Z=q.6l.2M[0]}q.14.Z=Z+\'U\';if(q.4Y==\'cf\'){W=k.3B.1c.K(0).5W+ci;if(q.6l.2M&&W>q.6l.2M[1]){W=q.6l.2M[1]}q.14.W=W+\'U\'}},dX:u(3g){cg={\'&\':\'&gK;\',\'<\':\'&gJ;\',\'>\':\'>\',\'"\':\'&gs;\'};24(i in cg){3g=3g.4E(12 bb(i,\'g\'),cg[i])}E 3g},2r:u(2M){if(k.3B.1c==S){k(\'2e\',1h).1S(\'<22 id="dE" 14="Y: 1P; Q: 0; O: 0; 3n: 2K;"></22>\');k.3B.1c=k(\'#dE\')}E q.1E(u(){if(/cf|ch/.48(q.4Y)){if(q.4Y==\'ch\'){dB=q.5C(\'1u\');if(!/3g|gr/.48(dB)){E}}if(2M&&(2M.1K==bn||(2M.1K==7F&&2M.1g==2))){if(2M.1K==bn)2M=[2M,2M];P{2M[0]=T(2M[0])||8J;2M[1]=T(2M[1])||8J}q.6l={2M:2M}}k(q).5B(k.3B.8L).6y(k.3B.8L).dH(k.3B.8L);k.3B.8L.1D(q)}})}};k.fn.kc=k.3B.2r;k.4K=u(e){if(/^kd$|^ke$|^ka$|^6L$|^k9$|^k5$|^k4$|^k6$|^k7$|^2e$|^k8$|^kf$|^kg$|^kn$|^ko$|^kp$|^kq$/i.48(e.9N))E I;P E 1b};k.fx.a0=u(e,65){D c=e.7c;D cs=c.14;cs.Y=65.Y;cs.5K=65.3G.t;cs.5j=65.3G.l;cs.5k=65.3G.b;cs.5z=65.3G.r;cs.Q=65.Q+\'U\';cs.O=65.O+\'U\';e.31.ew(c,e);e.31.km(e)};k.fx.9P=u(e){if(!k.4K(e))E I;D t=k(e);D es=e.14;D 73=I;if(t.B(\'19\')==\'1o\'){5Y=t.B(\'3n\');t.B(\'3n\',\'2K\').1Y();73=1b}D V={};V.Y=t.B(\'Y\');V.1q=k.1a.2o(e);V.3G=k.1a.cy(e);D co=e.4Z?e.4Z.ei:t.B(\'hU\');V.Q=T(t.B(\'Q\'))||0;V.O=T(t.B(\'O\'))||0;D eo=\'kl\'+T(18.6o()*c9);D 6u=1h.3F(/^1T$|^br$|^kh$|^hr$|^8C$|^kj$|^8T$|^3A$|^kk$|^k3$|^k2$|^9h$|^dl$|^jM$/i.48(e.9N)?\'22\':e.9N);k.1p(6u,\'id\',eo);D jN=k(6u).2R(\'jO\');D 4h=6u.14;D Q=0;D O=0;if(V.Y==\'2s\'||V.Y==\'1P\'){Q=V.Q;O=V.O}4h.Q=Q+\'U\';4h.O=O+\'U\';4h.Y=V.Y!=\'2s\'&&V.Y!=\'1P\'?\'2s\':V.Y;4h.W=V.1q.hb+\'U\';4h.Z=V.1q.1C+\'U\';4h.5K=V.3G.t;4h.5z=V.3G.r;4h.5k=V.3G.b;4h.5j=V.3G.l;4h.2U=\'2K\';if(k.3a.4t){4h.ei=co}P{4h.jK=co}if(k.3a=="4t"){es.5E="8V(1G="+0.ex*2a+")"}es.1G=0.ex;e.31.ew(6u,e);6u.jF(e);es.5K=\'2P\';es.5z=\'2P\';es.5k=\'2P\';es.5j=\'2P\';es.Y=\'1P\';es.eu=\'1o\';es.Q=\'2P\';es.O=\'2P\';if(73){t.2G();es.3n=5Y}E{V:V,3p:k(6u)}};k.fx.8E={jE:[0,1V,1V],jG:[eD,1V,1V],jH:[e6,e6,jI],jP:[0,0,0],ks:[0,0,1V],jY:[dv,42,42],jZ:[0,1V,1V],k0:[0,0,7w],k1:[0,7w,7w],jX:[cn,cn,cn],jS:[0,2a,0],jR:[jT,jU,eb],jV:[7w,0,7w],kr:[85,eb,47],kP:[1V,eA,0],kN:[kO,50,kx],kF:[7w,0,0],kD:[ku,f8,kt],ky:[kH,0,9C],kL:[1V,0,1V],kM:[1V,kJ,0],kv:[0,6C,0],kA:[75,0,kE],kC:[eD,eB,eA],kG:[kI,kB,eB],kw:[e0,1V,1V],kz:[eL,kK,eL],kQ:[9C,9C,9C],jC:[1V,iy,iz],iA:[1V,1V,e0],iB:[0,1V,0],ix:[1V,0,1V],iv:[6C,0,0],iq:[0,0,6C],ip:[6C,6C,0],ir:[1V,dv,0],it:[1V,ah,iu],iC:[6C,0,6C],iD:[1V,0,0],iK:[ah,ah,ah],iL:[1V,1V,1V],iM:[1V,1V,0]};k.fx.6D=u(4x,dm){if(k.fx.8E[4x])E{r:k.fx.8E[4x][0],g:k.fx.8E[4x][1],b:k.fx.8E[4x][2]};P if(2W=/^6Y\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)$/.a4(4x))E{r:T(2W[1]),g:T(2W[2]),b:T(2W[3])};P if(2W=/6Y\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)$/.a4(4x))E{r:2m(2W[1])*2.55,g:2m(2W[2])*2.55,b:2m(2W[3])*2.55};P if(2W=/^#([a-fA-79-9])([a-fA-79-9])([a-fA-79-9])$/.a4(4x))E{r:T("77"+2W[1]+2W[1]),g:T("77"+2W[2]+2W[2]),b:T("77"+2W[3]+2W[3])};P if(2W=/^#([a-fA-79-9]{2})([a-fA-79-9]{2})([a-fA-79-9]{2})$/.a4(4x))E{r:T("77"+2W[1]),g:T("77"+2W[2]),b:T("77"+2W[3])};P E dm==1b?I:{r:1V,g:1V,b:1V}};k.fx.dD={5Q:1,5b:1,5O:1,4S:1,4D:1,4A:1,W:1,O:1,c3:1,iI:1,5k:1,5j:1,5z:1,5K:1,8b:1,6x:1,8c:1,av:1,1G:1,iE:1,iF:1,5n:1,4X:1,5U:1,5M:1,2L:1,jD:1,Q:1,Z:1,3I:1};k.fx.dA={7i:1,iG:1,iH:1,io:1,im:1,4x:1,i2:1};k.fx.8A=[\'i3\',\'i4\',\'i5\',\'i1\'];k.fx.cc={\'cd\':[\'2E\',\'dK\'],\'a8\':[\'2E\',\'bh\'],\'6w\':[\'6w\',\'\'],\'8F\':[\'8F\',\'\']};k.fn.23({5w:u(5X,H,G,J){E q.1w(u(){D a1=k.H(H,G,J);D e=12 k.dM(q,a1,5X)})},c4:u(H,J){E q.1w(u(){D a1=k.H(H,J);D e=12 k.c4(q,a1)})},8o:u(2D){E q.1E(u(){if(q.6d)k.by(q,2D)})},i0:u(2D){E q.1E(u(){if(q.6d)k.by(q,2D);if(q.1w&&q.1w[\'fx\'])q.1w.fx=[]})}});k.23({c4:u(2f,M){D z=q,3t;z.2D=u(){if(k.fQ(M.21))M.21.1D(2f)};z.2I=6V(u(){z.2D()},M.1m);2f.6d=z},G:{c8:u(p,n,1W,1H,1m){E((-18.5H(p*18.2Q)/2)+0.5)*1H+1W}},dM:u(2f,M,5X){D z=q,3t;D y=2f.14;D fR=k.B(2f,"2U");D 72=k.B(2f,"19");D 2j={};z.9O=(12 7g()).7z();M.G=M.G&&k.G[M.G]?M.G:\'c8\';z.ag=u(2w,43){if(k.fx.dD[2w]){if(43==\'1Y\'||43==\'2G\'||43==\'3R\'){if(!2f.6v)2f.6v={};D r=2m(k.6E(2f,2w));2f.6v[2w]=r&&r>-c9?r:(2m(k.B(2f,2w))||0);43=43==\'3R\'?(72==\'1o\'?\'1Y\':\'2G\'):43;M[43]=1b;2j[2w]=43==\'1Y\'?[0,2f.6v[2w]]:[2f.6v[2w],0];if(2w!=\'1G\')y[2w]=2j[2w][0]+(2w!=\'3I\'&&2w!=\'8Z\'?\'U\':\'\');P k.1p(y,"1G",2j[2w][0])}P{2j[2w]=[2m(k.6E(2f,2w)),2m(43)||0]}}P if(k.fx.dA[2w])2j[2w]=[k.fx.6D(k.6E(2f,2w)),k.fx.6D(43)];P if(/^6w$|8F$|2E$|a8$|cd$/i.48(2w)){D m=43.4E(/\\s+/g,\' \').4E(/6Y\\s*\\(\\s*/g,\'6Y(\').4E(/\\s*,\\s*/g,\',\').4E(/\\s*\\)/g,\')\').d5(/([^\\s]+)/g);3m(2w){1e\'6w\':1e\'8F\':1e\'cd\':1e\'a8\':m[3]=m[3]||m[1]||m[0];m[2]=m[2]||m[0];m[1]=m[1]||m[0];24(D i=0;i<k.fx.8A.1g;i++){D 64=k.fx.cc[2w][0]+k.fx.8A[i]+k.fx.cc[2w][1];2j[64]=2w==\'a8\'?[k.fx.6D(k.6E(2f,64)),k.fx.6D(m[i])]:[2m(k.6E(2f,64)),2m(m[i])]}1r;1e\'2E\':24(D i=0;i<m.1g;i++){D bd=2m(m[i]);D a9=!hX(bd)?\'dK\':(!/cu|1o|2K|hY|hZ|i6|i7|ii|ij|ik|il/i.48(m[i])?\'bh\':I);if(a9){24(D j=0;j<k.fx.8A.1g;j++){64=\'2E\'+k.fx.8A[j]+a9;2j[64]=a9==\'bh\'?[k.fx.6D(k.6E(2f,64)),k.fx.6D(m[i])]:[2m(k.6E(2f,64)),bd]}}P{y[\'ie\']=m[i]}}1r}}P{y[2w]=43}E I};24(p in 5X){if(p==\'14\'){D 5f=k.bl(5X[p]);24(7A in 5f){q.ag(7A,5f[7A])}}P if(p==\'3l\'){if(1h.af)24(D i=0;i<1h.af.1g;i++){D 7e=1h.af[i].7e||1h.af[i].i9||S;if(7e){24(D j=0;j<7e.1g;j++){if(7e[j].i8==\'.\'+5X[p]){D 6X=12 bb(\'\\.\'+5X[p]+\' {\');D 5Z=7e[j].14.9X;D 5f=k.bl(5Z.4E(6X,\'\').4E(/}/g,\'\'));24(7A in 5f){q.ag(7A,5f[7A])}}}}}}P{q.ag(p,5X[p])}}y.19=72==\'1o\'?\'2B\':72;y.2U=\'2K\';z.2D=u(){D t=(12 7g()).7z();if(t>M.1m+z.9O){5T(z.2I);z.2I=S;24(p in 2j){if(p=="1G")k.1p(y,"1G",2j[p][1]);P if(2g 2j[p][1]==\'8T\')y[p]=\'6Y(\'+2j[p][1].r+\',\'+2j[p][1].g+\',\'+2j[p][1].b+\')\';P y[p]=2j[p][1]+(p!=\'3I\'&&p!=\'8Z\'?\'U\':\'\')}if(M.2G||M.1Y)24(D p in 2f.6v)if(p=="1G")k.1p(y,p,2f.6v[p]);P y[p]="";y.19=M.2G?\'1o\':(72!=\'1o\'?72:\'2B\');y.2U=fR;2f.6d=S;if(k.fQ(M.21))M.21.1D(2f)}P{D n=t-q.9O;D 8w=n/M.1m;24(p in 2j){if(2g 2j[p][1]==\'8T\'){y[p]=\'6Y(\'+T(k.G[M.G](8w,n,2j[p][0].r,(2j[p][1].r-2j[p][0].r),M.1m))+\',\'+T(k.G[M.G](8w,n,2j[p][0].g,(2j[p][1].g-2j[p][0].g),M.1m))+\',\'+T(k.G[M.G](8w,n,2j[p][0].b,(2j[p][1].b-2j[p][0].b),M.1m))+\')\'}P{D bz=k.G[M.G](8w,n,2j[p][0],(2j[p][1]-2j[p][0]),M.1m);if(p=="1G")k.1p(y,"1G",bz);P y[p]=bz+(p!=\'3I\'&&p!=\'8Z\'?\'U\':\'\')}}}};z.2I=6V(u(){z.2D()},13);2f.6d=z},by:u(2f,2D){if(2D)2f.6d.9O-=iO;P{1X.5T(2f.6d.2I);2f.6d=S;k.2H(2f,"fx")}}});k.bl=u(5Z){D 5f={};if(2g 5Z==\'4V\'){5Z=5Z.6c().7C(\';\');24(D i=0;i<5Z.1g;i++){6X=5Z[i].7C(\':\');if(6X.1g==2){5f[k.g6(6X[0].4E(/\\-(\\w)/g,u(m,c){E c.jo()}))]=k.g6(6X[1])}}}E 5f};k.fn.23({g3:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'4F\',G)})},gb:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'4r\',G)})},jl:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'fJ\',G)})},jk:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'O\',G)})},jg:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'2L\',G)})},jf:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.61(q,H,J,\'fh\',G)})}});k.fx.61=u(e,H,J,2S,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.1N=k.1a.2o(e);z.G=2g J==\'4V\'?J:G||S;if(!e.4s)e.4s=z.el.B(\'19\');if(2S==\'fJ\'){2S=z.el.B(\'19\')==\'1o\'?\'4r\':\'4F\'}P if(2S==\'fh\'){2S=z.el.B(\'19\')==\'1o\'?\'2L\':\'O\'}z.el.1Y();z.H=H;z.J=2g J==\'u\'?J:S;z.fx=k.fx.9P(e);z.2S=2S;z.21=u(){if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}if(z.2S==\'4r\'||z.2S==\'2L\'){z.el.B(\'19\',z.el.K(0).4s==\'1o\'?\'2B\':z.el.K(0).4s)}P{z.el.2G()}k.fx.a0(z.fx.3p.K(0),z.fx.V);k.2H(z.el.K(0),\'1n\')};3m(z.2S){1e\'4F\':63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'W\');63.1L(z.fx.V.1q.hb,0);1r;1e\'4r\':z.fx.3p.B(\'W\',\'9R\');z.el.1Y();63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'W\');63.1L(0,z.fx.V.1q.hb);1r;1e\'O\':63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'Z\');63.1L(z.fx.V.1q.1C,0);1r;1e\'2L\':z.fx.3p.B(\'Z\',\'9R\');z.el.1Y();63=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'Z\');63.1L(0,z.fx.V.1q.1C);1r}};k.fn.ji=u(5D,J){E q.1w(\'1n\',u(){if(!k.4K(q)){k.2H(q,\'1n\');E I}D e=12 k.fx.f4(q,5D,J);e.bp()})};k.fx.f4=u(e,5D,J){D z=q;z.el=k(e);z.el.1Y();z.J=J;z.5D=T(5D)||40;z.V={};z.V.Y=z.el.B(\'Y\');z.V.Q=T(z.el.B(\'Q\'))||0;z.V.O=T(z.el.B(\'O\'))||0;if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.3V=5;z.5y=1;z.bp=u(){z.5y++;z.e=12 k.fx(z.el.K(0),{1m:jj,21:u(){z.e=12 k.fx(z.el.K(0),{1m:80,21:u(){z.5D=T(z.5D/2);if(z.5y<=z.3V)z.bp();P{z.el.B(\'Y\',z.V.Y).B(\'Q\',z.V.Q+\'U\').B(\'O\',z.V.O+\'U\');k.2H(z.el.K(0),\'1n\');if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}}}},\'Q\');z.e.1L(z.V.Q-z.5D,z.V.Q)}},\'Q\');z.e.1L(z.V.Q,z.V.Q-z.5D)}};k.fn.23({jy:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4r\',\'4l\',G)})},jz:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4r\',\'in\',G)})},jA:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4r\',\'3R\',G)})},jB:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4F\',\'4l\',G)})},jx:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4F\',\'in\',G)})},jw:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'4F\',\'3R\',G)})},js:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'O\',\'4l\',G)})},jt:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'O\',\'in\',G)})},ju:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'O\',\'3R\',G)})},jv:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'2L\',\'4l\',G)})},je:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'2L\',\'in\',G)})},jd:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.4f(q,H,J,\'2L\',\'3R\',G)})}});k.fx.4f=u(e,H,J,2S,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.V={};z.V.Y=z.el.B(\'Y\');z.V.Q=z.el.B(\'Q\');z.V.O=z.el.B(\'O\');if(!e.4s)e.4s=z.el.B(\'19\');if(1u==\'3R\'){1u=z.el.B(\'19\')==\'1o\'?\'in\':\'4l\'}z.el.1Y();if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.1u=1u;J=2g J==\'u\'?J:S;8H=1;3m(2S){1e\'4F\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Q\');z.62=2m(z.V.Q)||0;z.9K=z.fG;8H=-1;1r;1e\'4r\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Q\');z.62=2m(z.V.Q)||0;z.9K=z.fG;1r;1e\'2L\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'O\');z.62=2m(z.V.O)||0;z.9K=z.fy;1r;1e\'O\':z.e=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'O\');z.62=2m(z.V.O)||0;z.9K=z.fy;8H=-1;1r}z.e2=12 k.fx(z.el.K(0),k.H(H,z.G,u(){z.el.B(z.V);if(z.1u==\'4l\'){z.el.B(\'19\',\'1o\')}P z.el.B(\'19\',z.el.K(0).4s==\'1o\'?\'2B\':z.el.K(0).4s);k.2H(z.el.K(0),\'1n\')}),\'1G\');if(1u==\'in\'){z.e.1L(z.62+2a*8H,z.62);z.e2.1L(0,1)}P{z.e.1L(z.62,z.62+2a*8H);z.e2.1L(1,0)}};k.fn.23({j0:u(H,W,J,G){E q.1w(\'1n\',u(){12 k.fx.9L(q,H,W,J,\'fp\',G)})},iW:u(H,W,J,G){E q.1w(\'1n\',u(){12 k.fx.9L(q,H,W,J,\'9M\',G)})},iV:u(H,W,J,G){E q.1w(\'1n\',u(){12 k.fx.9L(q,H,W,J,\'3R\',G)})}});k.fx.9L=u(e,H,W,J,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;if(1u==\'3R\'){1u=z.el.B(\'19\')==\'1o\'?\'9M\':\'fp\'}z.H=H;z.W=W&&W.1K==bn?W:20;z.fx=k.fx.9P(e);z.1u=1u;z.21=u(){if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}if(z.1u==\'9M\'){z.el.1Y()}P{z.el.2G()}k.fx.a0(z.fx.3p.K(0),z.fx.V);k.2H(z.el.K(0),\'1n\')};if(z.1u==\'9M\'){z.el.1Y();z.fx.3p.B(\'W\',z.W+\'U\').B(\'Z\',\'9R\');z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,u(){z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'W\');z.ef.1L(z.W,z.fx.V.1q.hb)}),\'Z\');z.ef.1L(0,z.fx.V.1q.1C)}P{z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,u(){z.ef=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G,z.21),\'Z\');z.ef.1L(z.fx.V.1q.1C,0)}),\'W\');z.ef.1L(z.fx.V.1q.hb,z.W)}};k.fn.iR=u(H,4x,J,G){E q.1w(\'fv\',u(){q.6W=k(q).1p("14")||\'\';G=2g J==\'4V\'?J:G||S;J=2g J==\'u\'?J:S;D 9S=k(q).B(\'7i\');D 8I=q.31;7d(9S==\'cu\'&&8I){9S=k(8I).B(\'7i\');8I=8I.31}k(q).B(\'7i\',4x);if(2g q.6W==\'8T\')q.6W=q.6W["9X"];k(q).5w({\'7i\':9S},H,G,u(){k.2H(q,\'fv\');if(2g k(q).1p("14")==\'8T\'){k(q).1p("14")["9X"]="";k(q).1p("14")["9X"]=q.6W}P{k(q).1p("14",q.6W)}if(J)J.1D(q)})})};k.fn.23({iT:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'49\',\'6g\',G)})},iU:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'4j\',\'6g\',G)})},j1:u(H,J,G){E q.1w(\'1n\',u(){if(k.B(q,\'19\')==\'1o\'){12 k.fx.5m(q,H,J,\'4j\',\'6Z\',G)}P{12 k.fx.5m(q,H,J,\'4j\',\'6g\',G)}})},j2:u(H,J,G){E q.1w(\'1n\',u(){if(k.B(q,\'19\')==\'1o\'){12 k.fx.5m(q,H,J,\'49\',\'6Z\',G)}P{12 k.fx.5m(q,H,J,\'49\',\'6g\',G)}})},j9:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'49\',\'6Z\',G)})},ja:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.5m(q,H,J,\'4j\',\'6Z\',G)})}});k.fx.5m=u(e,H,J,2S,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;D 73=I;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;z.1u=1u;z.H=H;z.2i=k.1a.2o(e);z.V={};z.V.Y=z.el.B(\'Y\');z.V.19=z.el.B(\'19\');if(z.V.19==\'1o\'){5Y=z.el.B(\'3n\');z.el.1Y();73=1b}z.V.Q=z.el.B(\'Q\');z.V.O=z.el.B(\'O\');if(73){z.el.2G();z.el.B(\'3n\',5Y)}z.V.Z=z.2i.w+\'U\';z.V.W=z.2i.h+\'U\';z.V.2U=z.el.B(\'2U\');z.2i.Q=T(z.V.Q)||0;z.2i.O=T(z.V.O)||0;if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.el.B(\'2U\',\'2K\').B(\'W\',1u==\'6Z\'&&2S==\'49\'?1:z.2i.h+\'U\').B(\'Z\',1u==\'6Z\'&&2S==\'4j\'?1:z.2i.w+\'U\');z.21=u(){z.el.B(z.V);if(z.1u==\'6g\')z.el.2G();P z.el.1Y();k.2H(z.el.K(0),\'1n\')};3m(2S){1e\'49\':z.eh=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'W\');z.et=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'Q\');if(z.1u==\'6g\'){z.eh.1L(z.2i.h,0);z.et.1L(z.2i.Q,z.2i.Q+z.2i.h/2)}P{z.eh.1L(0,z.2i.h);z.et.1L(z.2i.Q+z.2i.h/2,z.2i.Q)}1r;1e\'4j\':z.eh=12 k.fx(z.el.K(0),k.H(H-15,z.G,J),\'Z\');z.et=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'O\');if(z.1u==\'6g\'){z.eh.1L(z.2i.w,0);z.et.1L(z.2i.O,z.2i.O+z.2i.w/2)}P{z.eh.1L(0,z.2i.w);z.et.1L(z.2i.O+z.2i.w/2,z.2i.O)}1r}};k.fn.bg=u(H,3V,J){E q.1w(\'1n\',u(){if(!k.4K(q)){k.2H(q,\'1n\');E I}D fx=12 k.fx.bg(q,H,3V,J);fx.bf()})};k.fx.bg=u(el,H,3V,J){D z=q;z.3V=3V;z.5y=1;z.el=el;z.H=H;z.J=J;k(z.el).1Y();z.bf=u(){z.5y++;z.e=12 k.fx(z.el,k.H(z.H,u(){z.ef=12 k.fx(z.el,k.H(z.H,u(){if(z.5y<=z.3V)z.bf();P{k.2H(z.el,\'1n\');if(z.J&&z.J.1K==2A){z.J.1D(z.el)}}}),\'1G\');z.ef.1L(0,1)}),\'1G\');z.e.1L(1,0)}};k.fn.23({jb:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.6G(q,H,1,2a,1b,J,\'fa\',G)})},jc:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.6G(q,H,2a,1,1b,J,\'b4\',G)})},j8:u(H,J,G){E q.1w(\'1n\',u(){D G=G||\'fl\';12 k.fx.6G(q,H,2a,f8,1b,J,\'6h\',G)})},6G:u(H,57,30,6H,J,G){E q.1w(\'1n\',u(){12 k.fx.6G(q,H,57,30,6H,J,\'6G\',G)})}});k.fx.6G=u(e,H,57,30,6H,J,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.57=T(57)||2a;z.30=T(30)||2a;z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;z.1m=k.H(H).1m;z.6H=6H||S;z.2i=k.1a.2o(e);z.V={Z:z.el.B(\'Z\'),W:z.el.B(\'W\'),4A:z.el.B(\'4A\')||\'2a%\',Y:z.el.B(\'Y\'),19:z.el.B(\'19\'),Q:z.el.B(\'Q\'),O:z.el.B(\'O\'),2U:z.el.B(\'2U\'),4S:z.el.B(\'4S\'),5O:z.el.B(\'5O\'),5Q:z.el.B(\'5Q\'),5b:z.el.B(\'5b\'),5M:z.el.B(\'5M\'),5U:z.el.B(\'5U\'),5n:z.el.B(\'5n\'),4X:z.el.B(\'4X\')};z.Z=T(z.V.Z)||e.4c||0;z.W=T(z.V.W)||e.5W||0;z.Q=T(z.V.Q)||0;z.O=T(z.V.O)||0;1q=[\'em\',\'U\',\'j7\',\'%\'];24(i in 1q){if(z.V.4A.3J(1q[i])>0){z.fg=1q[i];z.4A=2m(z.V.4A)}if(z.V.4S.3J(1q[i])>0){z.fc=1q[i];z.bw=2m(z.V.4S)||0}if(z.V.5O.3J(1q[i])>0){z.fe=1q[i];z.bc=2m(z.V.5O)||0}if(z.V.5Q.3J(1q[i])>0){z.fL=1q[i];z.bA=2m(z.V.5Q)||0}if(z.V.5b.3J(1q[i])>0){z.g8=1q[i];z.bt=2m(z.V.5b)||0}if(z.V.5M.3J(1q[i])>0){z.g4=1q[i];z.bx=2m(z.V.5M)||0}if(z.V.5U.3J(1q[i])>0){z.g9=1q[i];z.bv=2m(z.V.5U)||0}if(z.V.5n.3J(1q[i])>0){z.gc=1q[i];z.bj=2m(z.V.5n)||0}if(z.V.4X.3J(1q[i])>0){z.fK=1q[i];z.b7=2m(z.V.4X)||0}}if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.el.B(\'2U\',\'2K\');z.1u=1u;3m(z.1u){1e\'fa\':z.4b=z.Q+z.2i.h/2;z.5a=z.Q;z.4k=z.O+z.2i.w/2;z.59=z.O;1r;1e\'b4\':z.5a=z.Q+z.2i.h/2;z.4b=z.Q;z.59=z.O+z.2i.w/2;z.4k=z.O;1r;1e\'6h\':z.5a=z.Q-z.2i.h/4;z.4b=z.Q;z.59=z.O-z.2i.w/4;z.4k=z.O;1r}z.be=I;z.t=(12 7g).7z();z.4w=u(){5T(z.2I);z.2I=S};z.2D=u(){if(z.be==I){z.el.1Y();z.be=1b}D t=(12 7g).7z();D n=t-z.t;D p=n/z.1m;if(t>=z.1m+z.t){9T(u(){o=1;if(z.1u){t=z.5a;l=z.59;if(z.1u==\'6h\')o=0}z.bs(z.30,l,t,1b,o)},13);z.4w()}P{o=1;if(!k.G||!k.G[z.G]){s=((-18.5H(p*18.2Q)/2)+0.5)*(z.30-z.57)+z.57}P{s=k.G[z.G](p,n,z.57,(z.30-z.57),z.1m)}if(z.1u){if(!k.G||!k.G[z.G]){t=((-18.5H(p*18.2Q)/2)+0.5)*(z.5a-z.4b)+z.4b;l=((-18.5H(p*18.2Q)/2)+0.5)*(z.59-z.4k)+z.4k;if(z.1u==\'6h\')o=((-18.5H(p*18.2Q)/2)+0.5)*(-0.9Y)+0.9Y}P{t=k.G[z.G](p,n,z.4b,(z.5a-z.4b),z.1m);l=k.G[z.G](p,n,z.4k,(z.59-z.4k),z.1m);if(z.1u==\'6h\')o=k.G[z.G](p,n,0.9Y,-0.9Y,z.1m)}}z.bs(s,l,t,I,o)}};z.2I=6V(u(){z.2D()},13);z.bs=u(4q,O,Q,fM,1G){z.el.B(\'W\',z.W*4q/2a+\'U\').B(\'Z\',z.Z*4q/2a+\'U\').B(\'O\',O+\'U\').B(\'Q\',Q+\'U\').B(\'4A\',z.4A*4q/2a+z.fg);if(z.bw)z.el.B(\'4S\',z.bw*4q/2a+z.fc);if(z.bc)z.el.B(\'5O\',z.bc*4q/2a+z.fe);if(z.bA)z.el.B(\'5Q\',z.bA*4q/2a+z.fL);if(z.bt)z.el.B(\'5b\',z.bt*4q/2a+z.g8);if(z.bx)z.el.B(\'5M\',z.bx*4q/2a+z.g4);if(z.bv)z.el.B(\'5U\',z.bv*4q/2a+z.g9);if(z.bj)z.el.B(\'5n\',z.bj*4q/2a+z.gc);if(z.b7)z.el.B(\'4X\',z.b7*4q/2a+z.fK);if(z.1u==\'6h\'){if(1X.71)z.el.K(0).14.5E="8V(1G="+1G*2a+")";z.el.K(0).14.1G=1G}if(fM){if(z.6H){z.el.B(z.V)}if(z.1u==\'b4\'||z.1u==\'6h\'){z.el.B(\'19\',\'1o\');if(z.1u==\'6h\'){if(1X.71)z.el.K(0).14.5E="8V(1G="+2a+")";z.el.K(0).14.1G=1}}P z.el.B(\'19\',\'2B\');if(z.J)z.J.1D(z.el.K(0));k.2H(z.el.K(0),\'1n\')}}};k.fn.23({9U:u(H,1O,G){o=k.H(H);E q.1w(\'1n\',u(){12 k.fx.9U(q,o,1O,G)})},j6:u(H,1O,G){E q.1E(u(){k(\'a[@3h*="#"]\',q).5h(u(e){fW=q.3h.7C(\'#\');k(\'#\'+fW[1]).9U(H,1O,G);E I})})}});k.fx.9U=u(e,o,1O,G){D z=q;z.o=o;z.e=e;z.1O=/fT|gd/.48(1O)?1O:I;z.G=G;p=k.1a.3w(e);s=k.1a.6z();z.4w=u(){5T(z.2I);z.2I=S;k.2H(z.e,\'1n\')};z.t=(12 7g).7z();s.h=s.h>s.ih?(s.h-s.ih):s.h;s.w=s.w>s.iw?(s.w-s.iw):s.w;z.5a=p.y>s.h?s.h:p.y;z.59=p.x>s.w?s.w:p.x;z.4b=s.t;z.4k=s.l;z.2D=u(){D t=(12 7g).7z();D n=t-z.t;D p=n/z.o.1m;if(t>=z.o.1m+z.t){z.4w();9T(u(){z.d3(z.5a,z.59)},13)}P{if(!z.1O||z.1O==\'fT\'){if(!k.G||!k.G[z.G]){9V=((-18.5H(p*18.2Q)/2)+0.5)*(z.5a-z.4b)+z.4b}P{9V=k.G[z.G](p,n,z.4b,(z.5a-z.4b),z.o.1m)}}P{9V=z.4b}if(!z.1O||z.1O==\'gd\'){if(!k.G||!k.G[z.G]){9W=((-18.5H(p*18.2Q)/2)+0.5)*(z.59-z.4k)+z.4k}P{9W=k.G[z.G](p,n,z.4k,(z.59-z.4k),z.o.1m)}}P{9W=z.4k}z.d3(9V,9W)}};z.d3=u(t,l){1X.j4(l,t)};z.2I=6V(u(){z.2D()},13)};k.fn.cY=u(3V,J){E q.1w(\'1n\',u(){if(!k.4K(q)){k.2H(q,\'1n\');E I}D e=12 k.fx.cY(q,3V,J);e.cG()})};k.fx.cY=u(e,3V,J){D z=q;z.el=k(e);z.el.1Y();z.3V=T(3V)||3;z.J=J;z.5y=1;z.V={};z.V.Y=z.el.B(\'Y\');z.V.Q=T(z.el.B(\'Q\'))||0;z.V.O=T(z.el.B(\'O\'))||0;if(z.V.Y!=\'2s\'&&z.V.Y!=\'1P\'){z.el.B(\'Y\',\'2s\')}z.cG=u(){z.5y++;z.e=12 k.fx(z.el.K(0),{1m:60,21:u(){z.e=12 k.fx(z.el.K(0),{1m:60,21:u(){z.e=12 k.fx(e,{1m:60,21:u(){if(z.5y<=z.3V)z.cG();P{z.el.B(\'Y\',z.V.Y).B(\'Q\',z.V.Q+\'U\').B(\'O\',z.V.O+\'U\');k.2H(z.el.K(0),\'1n\');if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}}}},\'O\');z.e.1L(z.V.O-20,z.V.O)}},\'O\');z.e.1L(z.V.O+20,z.V.O-20)}},\'O\');z.e.1L(z.V.O,z.V.O+20)}};k.fn.23({fo:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4F\',\'in\',G)})},fq:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4F\',\'4l\',G)})},iY:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4F\',\'3R\',G)})},iX:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4r\',\'in\',G)})},jr:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4r\',\'4l\',G)})},jq:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'4r\',\'3R\',G)})},jp:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'O\',\'in\',G)})},jn:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'O\',\'4l\',G)})},jm:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'O\',\'3R\',G)})},iP:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'2L\',\'in\',G)})},ic:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'2L\',\'4l\',G)})},ib:u(H,J,G){E q.1w(\'1n\',u(){12 k.fx.1z(q,H,J,\'2L\',\'3R\',G)})}});k.fx.1z=u(e,H,J,2S,1u,G){if(!k.4K(e)){k.2H(e,\'1n\');E I}D z=q;z.el=k(e);z.G=2g J==\'4V\'?J:G||S;z.J=2g J==\'u\'?J:S;if(1u==\'3R\'){1u=z.el.B(\'19\')==\'1o\'?\'in\':\'4l\'}if(!e.4s)e.4s=z.el.B(\'19\');z.el.1Y();z.H=H;z.fx=k.fx.9P(e);z.1u=1u;z.2S=2S;z.21=u(){if(z.1u==\'4l\')z.el.B(\'3n\',\'2K\');k.fx.a0(z.fx.3p.K(0),z.fx.V);if(z.1u==\'in\'){z.el.B(\'19\',z.el.K(0).4s==\'1o\'?\'2B\':z.el.K(0).4s)}P{z.el.B(\'19\',\'1o\');z.el.B(\'3n\',\'dd\')}if(z.J&&z.J.1K==2A){z.J.1D(z.el.K(0))}k.2H(z.el.K(0),\'1n\')};3m(z.2S){1e\'4F\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'Q\');z.7v=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G),\'W\');if(z.1u==\'in\'){z.ef.1L(-z.fx.V.1q.hb,0);z.7v.1L(0,z.fx.V.1q.hb)}P{z.ef.1L(0,-z.fx.V.1q.hb);z.7v.1L(z.fx.V.1q.hb,0)}1r;1e\'4r\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'Q\');if(z.1u==\'in\'){z.ef.1L(z.fx.V.1q.hb,0)}P{z.ef.1L(0,z.fx.V.1q.hb)}1r;1e\'O\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'O\');z.7v=12 k.fx(z.fx.3p.K(0),k.H(z.H,z.G),\'Z\');if(z.1u==\'in\'){z.ef.1L(-z.fx.V.1q.1C,0);z.7v.1L(0,z.fx.V.1q.1C)}P{z.ef.1L(0,-z.fx.V.1q.1C);z.7v.1L(z.fx.V.1q.1C,0)}1r;1e\'2L\':z.ef=12 k.fx(z.el.K(0),k.H(z.H,z.G,z.21),\'O\');if(z.1u==\'in\'){z.ef.1L(z.fx.V.1q.1C,0)}P{z.ef.1L(0,z.fx.V.1q.1C)}1r}};k.3f=S;k.fn.ig=u(o){E q.1w(\'1n\',u(){12 k.fx.dG(q,o)})};k.fx.dG=u(e,o){if(k.3f==S){k(\'2e\',1h).1S(\'<22 id="3f"></22>\');k.3f=k(\'#3f\')}k.3f.B(\'19\',\'2B\').B(\'Y\',\'1P\');D z=q;z.el=k(e);if(!o||!o.30){E}if(o.30.1K==b0&&1h.9e(o.30)){o.30=1h.9e(o.30)}P if(!o.30.dq){E}if(!o.1m){o.1m=g5}z.1m=o.1m;z.30=o.30;z.8r=o.3l;z.21=o.21;if(z.8r){k.3f.2R(z.8r)}z.a3=0;z.a2=0;if(k.dF){z.a3=(T(k.3f.B(\'5b\'))||0)+(T(k.3f.B(\'5O\'))||0)+(T(k.3f.B(\'4X\'))||0)+(T(k.3f.B(\'5U\'))||0);z.a2=(T(k.3f.B(\'4S\'))||0)+(T(k.3f.B(\'5Q\'))||0)+(T(k.3f.B(\'5M\'))||0)+(T(k.3f.B(\'5n\'))||0)}z.26=k.23(k.1a.3w(z.el.K(0)),k.1a.2o(z.el.K(0)));z.2T=k.23(k.1a.3w(z.30),k.1a.2o(z.30));z.26.1C-=z.a3;z.26.hb-=z.a2;z.2T.1C-=z.a3;z.2T.hb-=z.a2;z.J=o.21;k.3f.B(\'Z\',z.26.1C+\'U\').B(\'W\',z.26.hb+\'U\').B(\'Q\',z.26.y+\'U\').B(\'O\',z.26.x+\'U\').5w({Q:z.2T.y,O:z.2T.x,Z:z.2T.1C,W:z.2T.hb},z.1m,u(){if(z.8r)k.3f.4i(z.8r);k.3f.B(\'19\',\'1o\');if(z.21&&z.21.1K==2A){z.21.1D(z.el.K(0),[z.30])}k.2H(z.el.K(0),\'1n\')})};k.1v={M:{2E:10,ec:\'1Q/iJ.eZ\',e3:\'<1T 2J="1Q/6g.da" />\',eW:0.8,d8:\'iN a6\',dc:\'57\',3W:8J},jQ:I,jW:I,6j:S,8m:I,8k:I,d1:u(2k){if(!k.1v.8k||k.1v.8m)E;D 3K=2k.7L||2k.7K||-1;3m(3K){1e 35:if(k.1v.6j)k.1v.26(S,k(\'a[@4I=\'+k.1v.6j+\']:jJ\').K(0));1r;1e 36:if(k.1v.6j)k.1v.26(S,k(\'a[@4I=\'+k.1v.6j+\']:jL\').K(0));1r;1e 37:1e 8:1e 33:1e 80:1e kb:D 9p=k(\'#87\');if(9p.K(0).53!=S){9p.K(0).53.1D(9p.K(0))}1r;1e 38:1r;1e 39:1e 34:1e 32:1e gl:1e 78:D 9k=k(\'#88\');if(9k.K(0).53!=S){9k.K(0).53.1D(9k.K(0))}1r;1e 40:1r;1e 27:k.1v.au();1r}},7q:u(M){if(M)k.23(k.1v.M,M);if(1X.2k){k(\'2e\',1h).1J(\'6y\',k.1v.d1)}P{k(1h).1J(\'6y\',k.1v.d1)}k(\'a\').1E(u(){el=k(q);en=el.1p(\'4I\')||\'\';e9=el.1p(\'3h\')||\'\';ev=/\\.da|\\.gw|\\.8X|\\.eZ|\\.gn/g;if(e9.6c().d5(ev)!=S&&en.6c().3J(\'eU\')==0){el.1J(\'5h\',k.1v.26)}});if(k.3a.4t){3A=1h.3F(\'3A\');k(3A).1p({id:\'cN\',2J:\'ek:I;\',ej:\'cD\',ep:\'cD\'}).B({19:\'1o\',Y:\'1P\',Q:\'0\',O:\'0\',5E:\'9n:9w.9y.cC(1G=0)\'});k(\'2e\').1S(3A)}8n=1h.3F(\'22\');k(8n).1p(\'id\',\'cP\').B({Y:\'1P\',19:\'1o\',Q:\'0\',O:\'0\',1G:0}).1S(1h.8M(\' \')).1J(\'5h\',k.1v.au);6A=1h.3F(\'22\');k(6A).1p(\'id\',\'eK\').B({4X:k.1v.M.2E+\'U\'}).1S(1h.8M(\' \'));cE=1h.3F(\'22\');k(cE).1p(\'id\',\'dg\').B({4X:k.1v.M.2E+\'U\',5n:k.1v.M.2E+\'U\'}).1S(1h.8M(\' \'));cF=1h.3F(\'a\');k(cF).1p({id:\'gg\',3h:\'#\'}).B({Y:\'1P\',2L:k.1v.M.2E+\'U\',Q:\'0\'}).1S(k.1v.M.e3).1J(\'5h\',k.1v.au);7m=1h.3F(\'22\');k(7m).1p(\'id\',\'cM\').B({Y:\'2s\',cA:\'O\',6w:\'0 9F\',3I:1}).1S(6A).1S(cE).1S(cF);2b=1h.3F(\'1T\');2b.2J=k.1v.M.ec;k(2b).1p(\'id\',\'eM\').B({Y:\'1P\'});4G=1h.3F(\'a\');k(4G).1p({id:\'87\',3h:\'#\'}).B({Y:\'1P\',19:\'1o\',2U:\'2K\',ey:\'1o\'}).1S(1h.8M(\' \'));4M=1h.3F(\'a\');k(4M).1p({id:\'88\',3h:\'#\'}).B({Y:\'1P\',2U:\'2K\',ey:\'1o\'}).1S(1h.8M(\' \'));1Z=1h.3F(\'22\');k(1Z).1p(\'id\',\'eE\').B({19:\'1o\',Y:\'2s\',2U:\'2K\',cA:\'O\',6w:\'0 9F\',Q:\'0\',O:\'0\',3I:2}).1S([2b,4G,4M]);6F=1h.3F(\'22\');k(6F).1p(\'id\',\'ao\').B({19:\'1o\',Y:\'1P\',2U:\'2K\',Q:\'0\',O:\'0\',cA:\'cv\',7i:\'cu\',hC:\'0\'}).1S([1Z,7m]);k(\'2e\').1S(8n).1S(6F)},26:u(e,C){el=C?k(C):k(q);9t=el.1p(\'4I\');D 6B,4u,4G,4M;if(9t!=\'eU\'){k.1v.6j=9t;8Y=k(\'a[@4I=\'+9t+\']\');6B=8Y.1N();4u=8Y.cZ(C?C:q);4G=8Y.K(4u-1);4M=8Y.K(4u+1)}89=el.1p(\'3h\');6A=el.1p(\'4g\');3O=k.1a.6z();8n=k(\'#cP\');if(!k.1v.8k){k.1v.8k=1b;if(k.3a.4t){k(\'#cN\').B(\'W\',18.3r(3O.ih,3O.h)+\'U\').B(\'Z\',18.3r(3O.iw,3O.w)+\'U\').1Y()}8n.B(\'W\',18.3r(3O.ih,3O.h)+\'U\').B(\'Z\',18.3r(3O.iw,3O.w)+\'U\').1Y().fX(cO,k.1v.M.eW,u(){k.1v.cw(89,6A,3O,6B,4u,4G,4M)});k(\'#ao\').B(\'Z\',18.3r(3O.iw,3O.w)+\'U\')}P{k(\'#87\').K(0).53=S;k(\'#88\').K(0).53=S;k.1v.cw(89,6A,3O,6B,4u,4G,4M)}E I},cw:u(89,gP,3O,6B,4u,4G,4M){k(\'#cW\').bk();aX=k(\'#87\');aX.2G();aO=k(\'#88\');aO.2G();2b=k(\'#eM\');1Z=k(\'#eE\');6F=k(\'#ao\');7m=k(\'#cM\').B(\'3n\',\'2K\');k(\'#eK\').3x(6A);k.1v.8m=1b;if(6B)k(\'#dg\').3x(k.1v.M.d8+\' \'+(4u+1)+\' \'+k.1v.M.dc+\' \'+6B);if(4G){aX.K(0).53=u(){q.5B();k.1v.26(S,4G);E I}}if(4M){aO.K(0).53=u(){q.5B();k.1v.26(S,4M);E I}}2b.1Y();82=k.1a.2o(1Z.K(0));56=18.3r(82.1C,2b.K(0).Z+k.1v.M.2E*2);6f=18.3r(82.hb,2b.K(0).W+k.1v.M.2E*2);2b.B({O:(56-2b.K(0).Z)/2+\'U\',Q:(6f-2b.K(0).W)/2+\'U\'});1Z.B({Z:56+\'U\',W:6f+\'U\'}).1Y();dw=k.1a.bm();6F.B(\'Q\',3O.t+(dw.h/15)+\'U\');if(6F.B(\'19\')==\'1o\'){6F.1Y().7f(k.1v.M.3W)}6k=12 9s;k(6k).1p(\'id\',\'cW\').1J(\'hJ\',u(){56=6k.Z+k.1v.M.2E*2;6f=6k.W+k.1v.M.2E*2;2b.2G();1Z.5w({W:6f},82.hb!=6f?k.1v.M.3W:1,u(){1Z.5w({Z:56},82.1C!=56?k.1v.M.3W:1,u(){1Z.bG(6k);k(6k).B({Y:\'1P\',O:k.1v.M.2E+\'U\',Q:k.1v.M.2E+\'U\'}).7f(k.1v.M.3W,u(){db=k.1a.2o(7m.K(0));if(4G){aX.B({O:k.1v.M.2E+\'U\',Q:k.1v.M.2E+\'U\',Z:56/2-k.1v.M.2E*3+\'U\',W:6f-k.1v.M.2E*2+\'U\'}).1Y()}if(4M){aO.B({O:56/2+k.1v.M.2E*2+\'U\',Q:k.1v.M.2E+\'U\',Z:56/2-k.1v.M.2E*3+\'U\',W:6f-k.1v.M.2E*2+\'U\'}).1Y()}7m.B({Z:56+\'U\',Q:-db.hb+\'U\',3n:\'dd\'}).5w({Q:-1},k.1v.M.3W,u(){k.1v.8m=I})})})})});6k.2J=89},au:u(){k(\'#cW\').bk();k(\'#ao\').2G();k(\'#cM\').B(\'3n\',\'2K\');k(\'#cP\').fX(cO,0,u(){k(q).2G();if(k.3a.4t){k(\'#cN\').2G()}});k(\'#87\').K(0).53=S;k(\'#88\').K(0).53=S;k.1v.6j=S;k.1v.8k=I;k.1v.8m=I;E I}};k.R={1A:S,41:S,F:S,1s:S,1q:S,Y:S,9a:u(e){k.R.F=(q.d0)?q.d0:q;k.R.1s=k.1a.4a(e);k.R.1q={Z:T(k(k.R.F).B(\'Z\'))||0,W:T(k(k.R.F).B(\'W\'))||0};k.R.Y={Q:T(k(k.R.F).B(\'Q\'))||0,O:T(k(k.R.F).B(\'O\'))||0};k(1h).1J(\'3D\',k.R.cR).1J(\'5P\',k.R.cK);if(2g k.R.F.1k.g2===\'u\'){k.R.F.1k.g2.1D(k.R.F)}E I},cK:u(e){k(1h).3q(\'3D\',k.R.cR).3q(\'5P\',k.R.cK);if(2g k.R.F.1k.fN===\'u\'){k.R.F.1k.fN.1D(k.R.F)}k.R.F=S},cR:u(e){if(!k.R.F){E}1s=k.1a.4a(e);7p=k.R.Y.Q-k.R.1s.y+1s.y;7r=k.R.Y.O-k.R.1s.x+1s.x;7p=18.3r(18.3L(7p,k.R.F.1k.8g-k.R.1q.W),k.R.F.1k.7h);7r=18.3r(18.3L(7r,k.R.F.1k.8h-k.R.1q.Z),k.R.F.1k.70);if(2g k.R.F.1k.4m===\'u\'){D 8a=k.R.F.1k.4m.1D(k.R.F,[7r,7p]);if(2g 8a==\'hh\'&&8a.1g==2){7r=8a[0];7p=8a[1]}}k.R.F.14.Q=7p+\'U\';k.R.F.14.O=7r+\'U\';E I},26:u(e){k(1h).1J(\'3D\',k.R.8j).1J(\'5P\',k.R.8o);k.R.1A=q.1A;k.R.41=q.41;k.R.1s=k.1a.4a(e);k.R.1q={Z:T(k(q.1A).B(\'Z\'))||0,W:T(k(q.1A).B(\'W\'))||0};k.R.Y={Q:T(k(q.1A).B(\'Q\'))||0,O:T(k(q.1A).B(\'O\'))||0};if(k.R.1A.1k.4o){k.R.1A.1k.4o.1D(k.R.1A,[q])}E I},8o:u(){k(1h).3q(\'3D\',k.R.8j).3q(\'5P\',k.R.8o);if(k.R.1A.1k.3T){k.R.1A.1k.3T.1D(k.R.1A,[k.R.41])}k.R.1A=S;k.R.41=S},6i:u(dx,az){E 18.3L(18.3r(k.R.1q.Z+dx*az,k.R.1A.1k.av),k.R.1A.1k.6x)},6m:u(dy,az){E 18.3L(18.3r(k.R.1q.W+dy*az,k.R.1A.1k.8c),k.R.1A.1k.8b)},fb:u(W){E 18.3L(18.3r(W,k.R.1A.1k.8c),k.R.1A.1k.8b)},8j:u(e){if(k.R.1A==S){E}1s=k.1a.4a(e);dx=1s.x-k.R.1s.x;dy=1s.y-k.R.1s.y;1I={Z:k.R.1q.Z,W:k.R.1q.W};2z={Q:k.R.Y.Q,O:k.R.Y.O};3m(k.R.41){1e\'e\':1I.Z=k.R.6i(dx,1);1r;1e\'fj\':1I.Z=k.R.6i(dx,1);1I.W=k.R.6m(dy,1);1r;1e\'w\':1I.Z=k.R.6i(dx,-1);2z.O=k.R.Y.O-1I.Z+k.R.1q.Z;1r;1e\'5F\':1I.Z=k.R.6i(dx,-1);2z.O=k.R.Y.O-1I.Z+k.R.1q.Z;1I.W=k.R.6m(dy,1);1r;1e\'76\':1I.W=k.R.6m(dy,-1);2z.Q=k.R.Y.Q-1I.W+k.R.1q.W;1I.Z=k.R.6i(dx,-1);2z.O=k.R.Y.O-1I.Z+k.R.1q.Z;1r;1e\'n\':1I.W=k.R.6m(dy,-1);2z.Q=k.R.Y.Q-1I.W+k.R.1q.W;1r;1e\'at\':1I.W=k.R.6m(dy,-1);2z.Q=k.R.Y.Q-1I.W+k.R.1q.W;1I.Z=k.R.6i(dx,1);1r;1e\'s\':1I.W=k.R.6m(dy,1);1r}if(k.R.1A.1k.4v){if(k.R.41==\'n\'||k.R.41==\'s\')4p=1I.W*k.R.1A.1k.4v;P 4p=1I.Z;4W=k.R.fb(4p*k.R.1A.1k.4v);4p=4W/k.R.1A.1k.4v;3m(k.R.41){1e\'n\':1e\'76\':1e\'at\':2z.Q+=1I.W-4W;1r}3m(k.R.41){1e\'76\':1e\'w\':1e\'5F\':2z.O+=1I.Z-4p;1r}1I.W=4W;1I.Z=4p}if(2z.Q<k.R.1A.1k.7h){4W=1I.W+2z.Q-k.R.1A.1k.7h;2z.Q=k.R.1A.1k.7h;if(k.R.1A.1k.4v){4p=4W/k.R.1A.1k.4v;3m(k.R.41){1e\'76\':1e\'w\':1e\'5F\':2z.O+=1I.Z-4p;1r}1I.Z=4p}1I.W=4W}if(2z.O<k.R.1A.1k.70){4p=1I.Z+2z.O-k.R.1A.1k.70;2z.O=k.R.1A.1k.70;if(k.R.1A.1k.4v){4W=4p*k.R.1A.1k.4v;3m(k.R.41){1e\'n\':1e\'76\':1e\'at\':2z.Q+=1I.W-4W;1r}1I.W=4W}1I.Z=4p}if(2z.Q+1I.W>k.R.1A.1k.8g){1I.W=k.R.1A.1k.8g-2z.Q;if(k.R.1A.1k.4v){1I.Z=1I.W/k.R.1A.1k.4v}}if(2z.O+1I.Z>k.R.1A.1k.8h){1I.Z=k.R.1A.1k.8h-2z.O;if(k.R.1A.1k.4v){1I.W=1I.Z*k.R.1A.1k.4v}}D 6p=I;if(k.R.1A.1k.f7){6p=k.R.1A.1k.f7.1D(k.R.1A,[1I,2z]);if(6p){if(6p.1q){k.23(1I,6p.1q)}if(6p.Y){k.23(2z,6p.Y)}}}8d=k.R.1A.14;8d.O=2z.O+\'U\';8d.Q=2z.Q+\'U\';8d.Z=1I.Z+\'U\';8d.W=1I.W+\'U\';E I},2r:u(M){if(!M||!M.3Z||M.3Z.1K!=7M){E}E q.1E(u(){D el=q;el.1k=M;el.1k.av=M.av||10;el.1k.8c=M.8c||10;el.1k.6x=M.6x||6P;el.1k.8b=M.8b||6P;el.1k.7h=M.7h||-aC;el.1k.70=M.70||-aC;el.1k.8h=M.8h||6P;el.1k.8g=M.8g||6P;d6=k(el).B(\'Y\');if(!(d6==\'2s\'||d6==\'1P\')){el.14.Y=\'2s\'}fS=/n|at|e|fj|s|5F|w|76/g;24(i in el.1k.3Z){if(i.6c().d5(fS)!=S){if(el.1k.3Z[i].1K==b0){3v=k(el.1k.3Z[i]);if(3v.1N()>0){el.1k.3Z[i]=3v.K(0)}}if(el.1k.3Z[i].4Y){el.1k.3Z[i].1A=el;el.1k.3Z[i].41=i;k(el.1k.3Z[i]).1J(\'5v\',k.R.26)}}}if(el.1k.5S){if(2g el.1k.5S===\'4V\'){aV=k(el.1k.5S);if(aV.1N()>0){aV.1E(u(){q.d0=el});aV.1J(\'5v\',k.R.9a)}}P if(el.1k.5S==1b){k(q).1J(\'5v\',k.R.9a)}}})},4U:u(){E q.1E(u(){D el=q;24(i in el.1k.3Z){el.1k.3Z[i].1A=S;el.1k.3Z[i].41=S;k(el.1k.3Z[i]).3q(\'5v\',k.R.26)}if(el.1k.5S){if(2g el.1k.5S===\'4V\'){3v=k(el.1k.5S);if(3v.1N()>0){3v.3q(\'5v\',k.R.9a)}}P if(el.1k.5S==1b){k(q).3q(\'5v\',k.R.9a)}}el.1k=S})}};k.fn.23({hz:k.R.2r,hs:k.R.4U});k.2C=S;k.7n=I;k.3k=S;k.7o=[];k.9v=u(e){D 3K=e.7L||e.7K||-1;if(3K==17||3K==16){k.7n=1b}};k.9u=u(e){k.7n=I};k.dL=u(e){q.f.1s=k.1a.4a(e);q.f.1M=k.23(k.1a.3w(q),k.1a.2o(q));q.f.3e=k.1a.6z(q);q.f.1s.x-=q.f.1M.x;q.f.1s.y-=q.f.1M.y;k(q).1S(k.2C.K(0));if(q.f.hc)k.2C.2R(q.f.hc).B(\'19\',\'2B\');k.2C.B({19:\'2B\',Z:\'2P\',W:\'2P\'});if(q.f.o){k.2C.B(\'1G\',q.f.o)}k.3k=q;k.96=I;k.7o=[];q.f.el.1E(u(){q.1M={x:q.8t+(q.4Z&&!k.3a.7I?T(q.4Z.5b)||0:0)+(k.3k.3c||0),y:q.8G+(q.4Z&&!k.3a.7I?T(q.4Z.4S)||0:0)+(k.3k.3d||0),1C:q.4c,hb:q.5W};if(q.s==1b){if(k.7n==I){q.s=I;k(q).4i(k.3k.f.7j)}P{k.96=1b;k.7o[k.7o.1g]=k.1p(q,\'id\')}}});k.am.1D(q,[e]);k(1h).1J(\'3D\',k.am).1J(\'5P\',k.cX);E I};k.am=u(e){if(!k.3k)E;k.fd.1D(k.3k,[e])};k.fd=u(e){if(!k.3k)E;D 1s=k.1a.4a(e);D 3e=k.1a.6z(k.3k);1s.x+=3e.l-q.f.3e.l-q.f.1M.x;1s.y+=3e.t-q.f.3e.t-q.f.1M.y;D 93=18.3L(1s.x,q.f.1s.x);D 5F=18.3L(18.3S(1s.x-q.f.1s.x),18.3S(q.f.3e.w-93));D 99=18.3L(1s.y,q.f.1s.y);D 9g=18.3L(18.3S(1s.y-q.f.1s.y),18.3S(q.f.3e.h-99));if(q.3d>0&&1s.y-20<q.3d){D 3X=18.3L(3e.t,10);99-=3X;9g+=3X;q.3d-=3X}P if(q.3d+q.f.1M.h<q.f.3e.h&&1s.y+20>q.3d+q.f.1M.h){D 3X=18.3L(q.f.3e.h-q.3d,10);q.3d+=3X;if(q.3d!=3e.t)9g+=3X}if(q.3c>0&&1s.x-20<q.3c){D 3X=18.3L(3e.l,10);93-=3X;5F+=3X;q.3c-=3X}P if(q.3c+q.f.1M.w<q.f.3e.w&&1s.x+20>q.3c+q.f.1M.w){D 3X=18.3L(q.f.3e.w-q.3c,10);q.3c+=3X;if(q.3c!=3e.l)5F+=3X}k.2C.B({O:93+\'U\',Q:99+\'U\',Z:5F+\'U\',W:9g+\'U\'});k.2C.l=93+q.f.3e.l;k.2C.t=99+q.f.3e.t;k.2C.r=k.2C.l+5F;k.2C.b=k.2C.t+9g;k.96=I;q.f.el.1E(u(){aw=k.7o.3J(k.1p(q,\'id\'));if(!(q.1M.x>k.2C.r||(q.1M.x+q.1M.1C)<k.2C.l||q.1M.y>k.2C.b||(q.1M.y+q.1M.hb)<k.2C.t)){k.96=1b;if(q.s!=1b){q.s=1b;k(q).2R(k.3k.f.7j)}if(aw!=-1){q.s=I;k(q).4i(k.3k.f.7j)}}P if((q.s==1b)&&(aw==-1)){q.s=I;k(q).4i(k.3k.f.7j)}P if((!q.s)&&(k.7n==1b)&&(aw!=-1)){q.s=1b;k(q).2R(k.3k.f.7j)}});E I};k.cX=u(e){if(!k.3k)E;k.g0.1D(k.3k,[e])};k.g0=u(e){k(1h).3q(\'3D\',k.am).3q(\'5P\',k.cX);if(!k.3k)E;k.2C.B(\'19\',\'1o\');if(q.f.hc)k.2C.4i(q.f.hc);k.3k=I;k(\'2e\').1S(k.2C.K(0));if(k.96==1b){if(q.f.98)q.f.98(k.cJ(k.1p(q,\'id\')))}P{if(q.f.9d)q.f.9d(k.cJ(k.1p(q,\'id\')))}k.7o=[]};k.cJ=u(s){D h=\'\';D o=[];if(a=k(\'#\'+s)){a.K(0).f.el.1E(u(){if(q.s==1b){if(h.1g>0){h+=\'&\'}h+=s+\'[]=\'+k.1p(q,\'id\');o[o.1g]=k.1p(q,\'id\')}})}E{7l:h,o:o}};k.fn.gZ=u(o){if(!k.2C){k(\'2e\',1h).1S(\'<22 id="2C"></22>\').1J(\'7B\',k.9v).1J(\'6y\',k.9u);k.2C=k(\'#2C\');k.2C.B({Y:\'1P\',19:\'1o\'});if(1X.2k){k(\'2e\',1h).1J(\'7B\',k.9v).1J(\'6y\',k.9u)}P{k(1h).1J(\'7B\',k.9v).1J(\'6y\',k.9u)}}if(!o){o={}}E q.1E(u(){if(q.eP)E;q.eP=1b;q.f={a:o.3C,o:o.1G?2m(o.1G):I,7j:o.eS?o.eS:I,hc:o.58?o.58:I,98:o.98?o.98:I,9d:o.9d?o.9d:I};q.f.el=k(\'.\'+o.3C);k(q).1J(\'5v\',k.dL).B(\'Y\',\'2s\')})};k.3b={bM:1,eH:u(3t){D 3t=3t;E q.1E(u(){q.4z.6s.1E(u(ab){k.3b.5c(q,3t[ab])})})},K:u(){D 3t=[];q.1E(u(cL){if(q.bI){3t[cL]=[];D C=q;D 1q=k.1a.2o(q);q.4z.6s.1E(u(ab){D x=q.8t;D y=q.8G;92=T(x*2a/(1q.w-q.4c));91=T(y*2a/(1q.h-q.5W));3t[cL][ab]=[92||0,91||0,x||0,y||0]})}});E 3t},ct:u(C){C.A.fu=C.A.28.w-C.A.1B.1C;C.A.fw=C.A.28.h-C.A.1B.hb;if(C.9r.4z.bC){9Z=C.9r.4z.6s.K(C.bF+1);if(9Z){C.A.28.w=(T(k(9Z).B(\'O\'))||0)+C.A.1B.1C;C.A.28.h=(T(k(9Z).B(\'Q\'))||0)+C.A.1B.hb}9Q=C.9r.4z.6s.K(C.bF-1);if(9Q){D cU=T(k(9Q).B(\'O\'))||0;D cH=T(k(9Q).B(\'O\'))||0;C.A.28.x+=cU;C.A.28.y+=cH;C.A.28.w-=cU;C.A.28.h-=cH}}C.A.g7=C.A.28.w-C.A.1B.1C;C.A.eC=C.A.28.h-C.A.1B.hb;if(C.A.2O){C.A.gx=((C.A.28.w-C.A.1B.1C)/C.A.2O)||1;C.A.gy=((C.A.28.h-C.A.1B.hb)/C.A.2O)||1;C.A.fU=C.A.g7/C.A.2O;C.A.fH=C.A.eC/C.A.2O}C.A.28.dx=C.A.28.x-C.A.2c.x;C.A.28.dy=C.A.28.y-C.A.2c.y;k.11.1c.B(\'9b\',\'ad\')},3H:u(C,x,y){if(C.A.2O){fE=T(x/C.A.fU);92=fE*2a/C.A.2O;ft=T(y/C.A.fH);91=ft*2a/C.A.2O}P{92=T(x*2a/C.A.fu);91=T(y*2a/C.A.fw)}C.A.b3=[92||0,91||0,x||0,y||0];if(C.A.3H)C.A.3H.1D(C,C.A.b3)},eI:u(2k){3K=2k.7L||2k.7K||-1;3m(3K){1e 35:k.3b.5c(q.3U,[ae,ae]);1r;1e 36:k.3b.5c(q.3U,[-ae,-ae]);1r;1e 37:k.3b.5c(q.3U,[-q.3U.A.gx||-1,0]);1r;1e 38:k.3b.5c(q.3U,[0,-q.3U.A.gy||-1]);1r;1e 39:k.3b.5c(q.3U,[q.3U.A.gx||1,0]);1r;1e 40:k.11.5c(q.3U,[0,q.3U.A.gy||1]);1r}},5c:u(C,Y){if(!C.A){E}C.A.1B=k.23(k.1a.3w(C),k.1a.2o(C));C.A.2c={x:T(k.B(C,\'O\'))||0,y:T(k.B(C,\'Q\'))||0};C.A.4n=k.B(C,\'Y\');if(C.A.4n!=\'2s\'&&C.A.4n!=\'1P\'){C.14.Y=\'2s\'}k.11.c5(C);k.3b.ct(C);dx=T(Y[0])||0;dy=T(Y[1])||0;2v=C.A.2c.x+dx;2q=C.A.2c.y+dy;if(C.A.2O){3y=k.11.c7.1D(C,[2v,2q,dx,dy]);if(3y.1K==7M){dx=3y.dx;dy=3y.dy}2v=C.A.2c.x+dx;2q=C.A.2c.y+dy}3y=k.11.ce.1D(C,[2v,2q,dx,dy]);if(3y&&3y.1K==7M){dx=3y.dx;dy=3y.dy}2v=C.A.2c.x+dx;2q=C.A.2c.y+dy;if(C.A.5i&&(C.A.3H||C.A.2Z)){k.3b.3H(C,2v,2q)}2v=!C.A.1O||C.A.1O==\'4j\'?2v:C.A.2c.x||0;2q=!C.A.1O||C.A.1O==\'49\'?2q:C.A.2c.y||0;C.14.O=2v+\'U\';C.14.Q=2q+\'U\'},2r:u(o){E q.1E(u(){if(q.bI==1b||!o.3C||!k.1a||!k.11||!k.1x){E}5x=k(o.3C,q);if(5x.1N()==0){E}D 4N={2p:\'94\',5i:1b,3H:o.3H&&o.3H.1K==2A?o.3H:S,2Z:o.2Z&&o.2Z.1K==2A?o.2Z:S,3v:q,1G:o.1G||I};if(o.2O&&T(o.2O)){4N.2O=T(o.2O)||1;4N.2O=4N.2O>0?4N.2O:1}if(5x.1N()==1)5x.7t(4N);P{k(5x.K(0)).7t(4N);4N.3v=S;5x.7t(4N)}5x.7B(k.3b.eI);5x.1p(\'bM\',k.3b.bM++);q.bI=1b;q.4z={};q.4z.er=4N.er;q.4z.2O=4N.2O;q.4z.6s=5x;q.4z.bC=o.bC?1b:I;bZ=q;bZ.4z.6s.1E(u(2N){q.bF=2N;q.9r=bZ});if(o.3t&&o.3t.1K==7F){24(i=o.3t.1g-1;i>=0;i--){if(o.3t[i].1K==7F&&o.3t[i].1g==2){el=q.4z.6s.K(i);if(el.4Y){k.3b.5c(el,o.3t[i])}}}}})}};k.fn.23({hN:k.3b.2r,hS:k.3b.eH,hG:k.3b.K});k.2u={5I:[],eg:u(){q.5B();X=q.31;id=k.1p(X,\'id\');if(k.2u.5I[id]!=S){1X.5T(k.2u.5I[id])}1z=X.L.3u+1;if(X.L.1Q.1g<1z){1z=1}1Q=k(\'1T\',X.L.5u);X.L.3u=1z;if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}},dp:u(){q.5B();X=q.31;id=k.1p(X,\'id\');if(k.2u.5I[id]!=S){1X.5T(k.2u.5I[id])}1z=X.L.3u-1;1Q=k(\'1T\',X.L.5u);if(1z<1){1z=X.L.1Q.1g}X.L.3u=1z;if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}},2I:u(c){X=1h.9e(c);if(X.L.6o){1z=X.L.3u;7d(1z==X.L.3u){1z=1+T(18.6o()*X.L.1Q.1g)}}P{1z=X.L.3u+1;if(X.L.1Q.1g<1z){1z=1}}1Q=k(\'1T\',X.L.5u);X.L.3u=1z;if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}},go:u(o){D X;if(o&&o.1K==7M){if(o.2b){X=1h.9e(o.2b.X);5N=1X.hn.3h.7C("#");o.2b.6S=S;if(5N.1g==2){1z=T(5N[1]);1Y=5N[1].4E(1z,\'\');if(k.1p(X,\'id\')!=1Y){1z=1}}P{1z=1}}if(o.90){o.90.5B();X=o.90.31.31;id=k.1p(X,\'id\');if(k.2u.5I[id]!=S){1X.5T(k.2u.5I[id])}5N=o.90.3h.7C("#");1z=T(5N[1]);1Y=5N[1].4E(1z,\'\');if(k.1p(X,\'id\')!=1Y){1z=1}}if(X.L.1Q.1g<1z||1z<1){1z=1}X.L.3u=1z;52=k.1a.2o(X);dt=k.1a.aT(X);d9=k.1a.6U(X);if(X.L.3z){X.L.3z.o.B(\'19\',\'1o\')}if(X.L.3s){X.L.3s.o.B(\'19\',\'1o\')}if(X.L.2b){y=T(dt.t)+T(d9.t);if(X.L.1U){if(X.L.1U.5A==\'Q\'){y+=X.L.1U.4C.hb}P{52.h-=X.L.1U.4C.hb}}if(X.L.2x){if(X.L.2x&&X.L.2x.6Q==\'Q\'){y+=X.L.2x.4C.hb}P{52.h-=X.L.2x.4C.hb}}if(!X.L.c1){X.L.df=o.2b?o.2b.W:(T(X.L.2b.B(\'W\'))||0);X.L.c1=o.2b?o.2b.Z:(T(X.L.2b.B(\'Z\'))||0)}X.L.2b.B(\'Q\',y+(52.h-X.L.df)/2+\'U\');X.L.2b.B(\'O\',(52.1C-X.L.c1)/2+\'U\');X.L.2b.B(\'19\',\'2B\')}1Q=k(\'1T\',X.L.5u);if(1Q.1N()>0){1Q.7a(X.L.3W,k.2u.95)}P{aj=k(\'a\',X.L.1U.o).K(1z-1);k(aj).2R(X.L.1U.5R);D 1T=12 9s();1T.X=k.1p(X,\'id\');1T.1z=1z-1;1T.2J=X.L.1Q[X.L.3u-1].2J;if(1T.21){1T.6S=S;k.2u.19.1D(1T)}P{1T.6S=k.2u.19}if(X.L.2x){X.L.2x.o.3x(X.L.1Q[1z-1].6L)}}}},95:u(){X=q.31.31;X.L.5u.B(\'19\',\'1o\');if(X.L.1U.5R){aj=k(\'a\',X.L.1U.o).4i(X.L.1U.5R).K(X.L.3u-1);k(aj).2R(X.L.1U.5R)}D 1T=12 9s();1T.X=k.1p(X,\'id\');1T.1z=X.L.3u-1;1T.2J=X.L.1Q[X.L.3u-1].2J;if(1T.21){1T.6S=S;k.2u.19.1D(1T)}P{1T.6S=k.2u.19}if(X.L.2x){X.L.2x.o.3x(X.L.1Q[X.L.3u-1].6L)}},19:u(){X=1h.9e(q.X);if(X.L.3z){X.L.3z.o.B(\'19\',\'1o\')}if(X.L.3s){X.L.3s.o.B(\'19\',\'1o\')}52=k.1a.2o(X);y=0;if(X.L.1U){if(X.L.1U.5A==\'Q\'){y+=X.L.1U.4C.hb}P{52.h-=X.L.1U.4C.hb}}if(X.L.2x){if(X.L.2x&&X.L.2x.6Q==\'Q\'){y+=X.L.2x.4C.hb}P{52.h-=X.L.2x.4C.hb}}hg=k(\'.ca\',X);y=y+(52.h-q.W)/2;x=(52.1C-q.Z)/2;X.L.5u.B(\'Q\',y+\'U\').B(\'O\',x+\'U\').3x(\'<1T 2J="\'+q.2J+\'" />\');X.L.5u.7f(X.L.3W);3s=X.L.3u+1;if(3s>X.L.1Q.1g){3s=1}3z=X.L.3u-1;if(3z<1){3z=X.L.1Q.1g}X.L.3s.o.B(\'19\',\'2B\').B(\'Q\',y+\'U\').B(\'O\',x+2*q.Z/3+\'U\').B(\'Z\',q.Z/3+\'U\').B(\'W\',q.W+\'U\').1p(\'4g\',X.L.1Q[3s-1].6L);X.L.3s.o.K(0).3h=\'#\'+3s+k.1p(X,\'id\');X.L.3z.o.B(\'19\',\'2B\').B(\'Q\',y+\'U\').B(\'O\',x+\'U\').B(\'Z\',q.Z/3+\'U\').B(\'W\',q.W+\'U\').1p(\'4g\',X.L.1Q[3z-1].6L);X.L.3z.o.K(0).3h=\'#\'+3z+k.1p(X,\'id\')},2r:u(o){if(!o||!o.1Z||k.2u.5I[o.1Z])E;D 1Z=k(\'#\'+o.1Z);D el=1Z.K(0);if(el.14.Y!=\'1P\'&&el.14.Y!=\'2s\'){el.14.Y=\'2s\'}el.14.2U=\'2K\';if(1Z.1N()==0)E;el.L={};el.L.1Q=o.1Q?o.1Q:[];el.L.6o=o.6o&&o.6o==1b||I;97=el.f3(\'hL\');24(i=0;i<97.1g;i++){7Z=el.L.1Q.1g;el.L.1Q[7Z]={2J:97[i].2J,6L:97[i].4g||97[i].hD||\'\'}}if(el.L.1Q.1g==0){E}el.L.4n=k.23(k.1a.3w(el),k.1a.2o(el));el.L.b5=k.1a.aT(el);el.L.bu=k.1a.6U(el);t=T(el.L.b5.t)+T(el.L.bu.t);b=T(el.L.b5.b)+T(el.L.bu.b);k(\'1T\',el).bk();el.L.3W=o.3W?o.3W:g5;if(o.5A||o.9f||o.5R){el.L.1U={};1Z.1S(\'<22 6T="g1"></22>\');el.L.1U.o=k(\'.g1\',el);if(o.9f){el.L.1U.9f=o.9f;el.L.1U.o.2R(o.9f)}if(o.5R){el.L.1U.5R=o.5R}el.L.1U.o.B(\'Y\',\'1P\').B(\'Z\',el.L.4n.w+\'U\');if(o.5A&&o.5A==\'Q\'){el.L.1U.5A=\'Q\';el.L.1U.o.B(\'Q\',t+\'U\')}P{el.L.1U.5A=\'4D\';el.L.1U.o.B(\'4D\',b+\'U\')}el.L.1U.aE=o.aE?o.aE:\' \';24(D i=0;i<el.L.1Q.1g;i++){7Z=T(i)+1;el.L.1U.o.1S(\'<a 3h="#\'+7Z+o.1Z+\'" 6T="gR" 4g="\'+el.L.1Q[i].6L+\'">\'+7Z+\'</a>\'+(7Z!=el.L.1Q.1g?el.L.1U.aE:\'\'))}k(\'a\',el.L.1U.o).1J(\'5h\',u(){k.2u.go({90:q})});el.L.1U.4C=k.1a.2o(el.L.1U.o.K(0))}if(o.6Q||o.9c){el.L.2x={};1Z.1S(\'<22 6T="dn">&7k;</22>\');el.L.2x.o=k(\'.dn\',el);if(o.9c){el.L.2x.9c=o.9c;el.L.2x.o.2R(o.9c)}el.L.2x.o.B(\'Y\',\'1P\').B(\'Z\',el.L.4n.w+\'U\');if(o.6Q&&o.6Q==\'Q\'){el.L.2x.6Q=\'Q\';el.L.2x.o.B(\'Q\',(el.L.1U&&el.L.1U.5A==\'Q\'?el.L.1U.4C.hb+t:t)+\'U\')}P{el.L.2x.6Q=\'4D\';el.L.2x.o.B(\'4D\',(el.L.1U&&el.L.1U.5A==\'4D\'?el.L.1U.4C.hb+b:b)+\'U\')}el.L.2x.4C=k.1a.2o(el.L.2x.o.K(0))}if(o.9D){el.L.3s={9D:o.9D};1Z.1S(\'<a 3h="#2\'+o.1Z+\'" 6T="eY">&7k;</a>\');el.L.3s.o=k(\'.eY\',el);el.L.3s.o.B(\'Y\',\'1P\').B(\'19\',\'1o\').B(\'2U\',\'2K\').B(\'4A\',\'eR\').2R(el.L.3s.9D);el.L.3s.o.1J(\'5h\',k.2u.eg)}if(o.9o){el.L.3z={9o:o.9o};1Z.1S(\'<a 3h="#0\'+o.1Z+\'" 6T="ee">&7k;</a>\');el.L.3z.o=k(\'.ee\',el);el.L.3z.o.B(\'Y\',\'1P\').B(\'19\',\'1o\').B(\'2U\',\'2K\').B(\'4A\',\'eR\').2R(el.L.3z.9o);el.L.3z.o.1J(\'5h\',k.2u.dp)}1Z.bG(\'<22 6T="ca"></22>\');el.L.5u=k(\'.ca\',el);el.L.5u.B(\'Y\',\'1P\').B(\'Q\',\'2P\').B(\'O\',\'2P\').B(\'19\',\'1o\');if(o.2b){1Z.bG(\'<22 6T="dW" 14="19: 1o;"><1T 2J="\'+o.2b+\'" /></22>\');el.L.2b=k(\'.dW\',el);el.L.2b.B(\'Y\',\'1P\');D 1T=12 9s();1T.X=o.1Z;1T.2J=o.2b;if(1T.21){1T.6S=S;k.2u.go({2b:1T})}P{1T.6S=u(){k.2u.go({2b:q})}}}P{k.2u.go({1Z:el})}if(o.cS){fi=T(o.cS)*aC}k.2u.5I[o.1Z]=o.cS?1X.6V(\'k.2u.2I(\\\'\'+o.1Z+\'\\\')\',fi):S}};k.X=k.2u.2r;k.1t={7s:[],5L:{},1c:I,7u:S,26:u(){if(k.11.F==S){E}D 4O,3G,c,cs;k.1t.1c.K(0).3l=k.11.F.A.6R;4O=k.1t.1c.K(0).14;4O.19=\'2B\';k.1t.1c.1B=k.23(k.1a.3w(k.1t.1c.K(0)),k.1a.2o(k.1t.1c.K(0)));4O.Z=k.11.F.A.1B.1C+\'U\';4O.W=k.11.F.A.1B.hb+\'U\';3G=k.1a.cy(k.11.F);4O.5K=3G.t;4O.5z=3G.r;4O.5k=3G.b;4O.5j=3G.l;if(k.11.F.A.46==1b){c=k.11.F.fI(1b);cs=c.14;cs.5K=\'2P\';cs.5z=\'2P\';cs.5k=\'2P\';cs.5j=\'2P\';cs.19=\'2B\';k.1t.1c.5o().1S(c)}k(k.11.F).f5(k.1t.1c.K(0));k.11.F.14.19=\'1o\'},fC:u(e){if(!e.A.44&&k.1x.5r.cQ){if(e.A.3T)e.A.3T.1D(F);k(e).B(\'Y\',e.A.cz||e.A.4n);k(e).aS();k(k.1x.5r).f6(e)}k.1t.1c.4i(e.A.6R).3x(\'&7k;\');k.1t.7u=S;D 4O=k.1t.1c.K(0).14;4O.19=\'1o\';k.1t.1c.f5(e);if(e.A.fx>0){k(e).7f(e.A.fx)}k(\'2e\').1S(k.1t.1c.K(0));D 86=[];D 8q=I;24(D i=0;i<k.1t.7s.1g;i++){D 1j=k.1x.3P[k.1t.7s[i]].K(0);D id=k.1p(1j,\'id\');D 8i=k.1t.8x(id);if(1j.1i.ay!=8i.7l){1j.1i.ay=8i.7l;if(8q==I&&1j.1i.2Z){8q=1j.1i.2Z}8i.id=id;86[86.1g]=8i}}k.1t.7s=[];if(8q!=I&&86.1g>0){8q(86)}},al:u(e,o){if(!k.11.F)E;D 6e=I;D i=0;if(e.1i.el.1N()>0){24(i=e.1i.el.1N();i>0;i--){if(e.1i.el.K(i-1)!=k.11.F){if(!e.5V.b2){if((e.1i.el.K(i-1).1M.y+e.1i.el.K(i-1).1M.hb/2)>k.11.F.A.2q){6e=e.1i.el.K(i-1)}P{1r}}P{if((e.1i.el.K(i-1).1M.x+e.1i.el.K(i-1).1M.1C/2)>k.11.F.A.2v&&(e.1i.el.K(i-1).1M.y+e.1i.el.K(i-1).1M.hb/2)>k.11.F.A.2q){6e=e.1i.el.K(i-1)}}}}}if(6e&&k.1t.7u!=6e){k.1t.7u=6e;k(6e).h5(k.1t.1c.K(0))}P if(!6e&&(k.1t.7u!=S||k.1t.1c.K(0).31!=e)){k.1t.7u=S;k(e).1S(k.1t.1c.K(0))}k.1t.1c.K(0).14.19=\'2B\'},cT:u(e){if(k.11.F==S){E}e.1i.el.1E(u(){q.1M=k.23(k.1a.74(q),k.1a.7G(q))})},8x:u(s){D i;D h=\'\';D o={};if(s){if(k.1t.5L[s]){o[s]=[];k(\'#\'+s+\' .\'+k.1t.5L[s]).1E(u(){if(h.1g>0){h+=\'&\'}h+=s+\'[]=\'+k.1p(q,\'id\');o[s][o[s].1g]=k.1p(q,\'id\')})}P{24(a in s){if(k.1t.5L[s[a]]){o[s[a]]=[];k(\'#\'+s[a]+\' .\'+k.1t.5L[s[a]]).1E(u(){if(h.1g>0){h+=\'&\'}h+=s[a]+\'[]=\'+k.1p(q,\'id\');o[s[a]][o[s[a]].1g]=k.1p(q,\'id\')})}}}}P{24(i in k.1t.5L){o[i]=[];k(\'#\'+i+\' .\'+k.1t.5L[i]).1E(u(){if(h.1g>0){h+=\'&\'}h+=i+\'[]=\'+k.1p(q,\'id\');o[i][o[i].1g]=k.1p(q,\'id\')})}}E{7l:h,o:o}},fF:u(e){if(!e.dq){E}E q.1E(u(){if(!q.5V||!k(e).is(\'.\'+q.5V.3C))k(e).2R(q.5V.3C);k(e).7t(q.5V.A)})},4U:u(){E q.1E(u(){k(\'.\'+q.5V.3C).aS();k(q).dR();q.5V=S;q.fm=S})},2r:u(o){if(o.3C&&k.1a&&k.11&&k.1x){if(!k.1t.1c){k(\'2e\',1h).1S(\'<22 id="e5">&7k;</22>\');k.1t.1c=k(\'#e5\');k.1t.1c.K(0).14.19=\'1o\'}q.do({3C:o.3C,9J:o.9J?o.9J:I,a5:o.a5?o.a5:I,58:o.58?o.58:I,7x:o.7x||o.dC,7y:o.7y||o.fO,cQ:1b,2Z:o.2Z||o.ia,fx:o.fx?o.fx:I,46:o.46?1b:I,6I:o.6I?o.6I:\'cV\'});E q.1E(u(){D A={6N:o.6N?1b:I,ff:6P,1G:o.1G?2m(o.1G):I,6R:o.58?o.58:I,fx:o.fx?o.fx:I,44:1b,46:o.46?1b:I,3v:o.3v?o.3v:S,2p:o.2p?o.2p:S,4o:o.4o&&o.4o.1K==2A?o.4o:I,4m:o.4m&&o.4m.1K==2A?o.4m:I,3T:o.3T&&o.3T.1K==2A?o.3T:I,1O:/49|4j/.48(o.1O)?o.1O:I,6M:o.6M?T(o.6M)||0:I,2V:o.2V?o.2V:I};k(\'.\'+o.3C,q).7t(A);q.fm=1b;q.5V={3C:o.3C,6N:o.6N?1b:I,ff:6P,1G:o.1G?2m(o.1G):I,6R:o.58?o.58:I,fx:o.fx?o.fx:I,44:1b,46:o.46?1b:I,3v:o.3v?o.3v:S,2p:o.2p?o.2p:S,b2:o.b2?1b:I,A:A}})}}};k.fn.23({j3:k.1t.2r,f6:k.1t.fF,iS:k.1t.4U});k.iZ=k.1t.8x;k.2t={6O:S,7b:I,9m:S,6K:u(e){k.2t.7b=1b;k.2t.1Y(e,q,1b)},cq:u(e){if(k.2t.6O!=q)E;k.2t.7b=I;k.2t.2G(e,q)},1Y:u(e,el,7b){if(k.2t.6O!=S)E;if(!el){el=q}k.2t.6O=el;1M=k.23(k.1a.3w(el),k.1a.2o(el));8u=k(el);4g=8u.1p(\'4g\');3h=8u.1p(\'3h\');if(4g){k.2t.9m=4g;8u.1p(\'4g\',\'\');k(\'#eT\').3x(4g);if(3h)k(\'#bL\').3x(3h.4E(\'jh://\',\'\'));P k(\'#bL\').3x(\'\');1c=k(\'#8z\');if(el.4H.3l){1c.K(0).3l=el.4H.3l}P{1c.K(0).3l=\'\'}bo=k.1a.2o(1c.K(0));ga=7b&&el.4H.Y==\'bO\'?\'4D\':el.4H.Y;3m(ga){1e\'Q\':2q=1M.y-bo.hb;2v=1M.x;1r;1e\'O\':2q=1M.y;2v=1M.x-bo.1C;1r;1e\'2L\':2q=1M.y;2v=1M.x+1M.1C;1r;1e\'bO\':k(\'2e\').1J(\'3D\',k.2t.3D);1s=k.1a.4a(e);2q=1s.y+15;2v=1s.x+15;1r;ad:2q=1M.y+1M.hb;2v=1M.x;1r}1c.B({Q:2q+\'U\',O:2v+\'U\'});if(el.4H.54==I){1c.1Y()}P{1c.7f(el.4H.54)}if(el.4H.2Y)el.4H.2Y.1D(el);8u.1J(\'8B\',k.2t.2G).1J(\'5B\',k.2t.cq)}},3D:u(e){if(k.2t.6O==S){k(\'2e\').3q(\'3D\',k.2t.3D);E}1s=k.1a.4a(e);k(\'#8z\').B({Q:1s.y+15+\'U\',O:1s.x+15+\'U\'})},2G:u(e,el){if(!el){el=q}if(k.2t.7b!=1b&&k.2t.6O==el){k.2t.6O=S;k(\'#8z\').7a(1);k(el).1p(\'4g\',k.2t.9m).3q(\'8B\',k.2t.2G).3q(\'5B\',k.2t.cq);if(el.4H.3i)el.4H.3i.1D(el);k.2t.9m=S}},2r:u(M){if(!k.2t.1c){k(\'2e\').1S(\'<22 id="8z"><22 id="eT"></22><22 id="bL"></22></22>\');k(\'#8z\').B({Y:\'1P\',3I:6P,19:\'1o\'});k.2t.1c=1b}E q.1E(u(){if(k.1p(q,\'4g\')){q.4H={Y:/Q|4D|O|2L|bO/.48(M.Y)?M.Y:\'4D\',3l:M.3l?M.3l:I,54:M.54?M.54:I,2Y:M.2Y&&M.2Y.1K==2A?M.2Y:I,3i:M.3i&&M.3i.1K==2A?M.3i:I};D el=k(q);el.1J(\'9z\',k.2t.1Y);el.1J(\'6K\',k.2t.6K)}})}};k.fn.hO=k.2t.2r;k.84={bq:u(e){3K=e.7L||e.7K||-1;if(3K==9){if(1X.2k){1X.2k.bT=1b;1X.2k.c0=I}P{e.aP();e.aW()}if(q.b1){1h.6J.dZ().3g="\\t";q.dV=u(){q.6K();q.dV=S}}P if(q.aF){26=q.5q;2T=q.dN;q.2y=q.2y.hd(0,26)+"\\t"+q.2y.h8(2T);q.aF(26+1,26+1);q.6K()}E I}},4U:u(){E q.1E(u(){if(q.7P&&q.7P==1b){k(q).3q(\'7B\',k.84.bq);q.7P=I}})},2r:u(){E q.1E(u(){if(q.4Y==\'cf\'&&(!q.7P||q.7P==I)){k(q).1J(\'7B\',k.84.bq);q.7P=1b}})}};k.fn.23({j5:k.84.2r,hH:k.84.4U});k.1a={3w:u(e){D x=0;D y=0;D es=e.14;D bP=I;if(k(e).B(\'19\')==\'1o\'){D 5Y=es.3n;D 9q=es.Y;bP=1b;es.3n=\'2K\';es.19=\'2B\';es.Y=\'1P\'}D el=e;7d(el){x+=el.8t+(el.4Z&&!k.3a.7I?T(el.4Z.5b)||0:0);y+=el.8G+(el.4Z&&!k.3a.7I?T(el.4Z.4S)||0:0);el=el.dJ}el=e;7d(el&&el.4Y&&el.4Y.6c()!=\'2e\'){x-=el.3c||0;y-=el.3d||0;el=el.31}if(bP==1b){es.19=\'1o\';es.Y=9q;es.3n=5Y}E{x:x,y:y}},7G:u(el){D x=0,y=0;7d(el){x+=el.8t||0;y+=el.8G||0;el=el.dJ}E{x:x,y:y}},2o:u(e){D w=k.B(e,\'Z\');D h=k.B(e,\'W\');D 1C=0;D hb=0;D es=e.14;if(k(e).B(\'19\')!=\'1o\'){1C=e.4c;hb=e.5W}P{D 5Y=es.3n;D 9q=es.Y;es.3n=\'2K\';es.19=\'2B\';es.Y=\'1P\';1C=e.4c;hb=e.5W;es.19=\'1o\';es.Y=9q;es.3n=5Y}E{w:w,h:h,1C:1C,hb:hb}},74:u(el){E{1C:el.4c||0,hb:el.5W||0}},bm:u(e){D h,w,de;if(e){w=e.8W;h=e.8O}P{de=1h.5d;w=1X.d4||aa.d4||(de&&de.8W)||1h.2e.8W;h=1X.cB||aa.cB||(de&&de.8O)||1h.2e.8O}E{w:w,h:h}},6z:u(e){D t=0,l=0,w=0,h=0,iw=0,ih=0;if(e&&e.9N.6c()!=\'2e\'){t=e.3d;l=e.3c;w=e.d7;h=e.d2;iw=0;ih=0}P{if(1h.5d){t=1h.5d.3d;l=1h.5d.3c;w=1h.5d.d7;h=1h.5d.d2}P if(1h.2e){t=1h.2e.3d;l=1h.2e.3c;w=1h.2e.d7;h=1h.2e.d2}iw=aa.d4||1h.5d.8W||1h.2e.8W||0;ih=aa.cB||1h.5d.8O||1h.2e.8O||0}E{t:t,l:l,w:w,h:h,iw:iw,ih:ih}},cy:u(e,7N){D el=k(e);D t=el.B(\'5K\')||\'\';D r=el.B(\'5z\')||\'\';D b=el.B(\'5k\')||\'\';D l=el.B(\'5j\')||\'\';if(7N)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)};P E{t:t,r:r,b:b,l:l}},aT:u(e,7N){D el=k(e);D t=el.B(\'5M\')||\'\';D r=el.B(\'5U\')||\'\';D b=el.B(\'5n\')||\'\';D l=el.B(\'4X\')||\'\';if(7N)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)};P E{t:t,r:r,b:b,l:l}},6U:u(e,7N){D el=k(e);D t=el.B(\'4S\')||\'\';D r=el.B(\'5O\')||\'\';D b=el.B(\'5Q\')||\'\';D l=el.B(\'5b\')||\'\';if(7N)E{t:T(t)||0,r:T(r)||0,b:T(b)||0,l:T(l)||0};P E{t:t,r:r,b:b,l:l}},4a:u(2k){D x=2k.hT||(2k.gM+(1h.5d.3c||1h.2e.3c))||0;D y=2k.ki||(2k.iQ+(1h.5d.3d||1h.2e.3d))||0;E{x:x,y:y}},cI:u(4R,cx){cx(4R);4R=4R.7c;7d(4R){k.1a.cI(4R,cx);4R=4R.hQ}},h7:u(4R){k.1a.cI(4R,u(el){24(D 1p in el){if(2g el[1p]===\'u\'){el[1p]=S}}})},hV:u(el,1O){D 5l=k.1a.6z();D b6=k.1a.2o(el);if(!1O||1O==\'49\')k(el).B({Q:5l.t+((18.3r(5l.h,5l.ih)-5l.t-b6.hb)/2)+\'U\'});if(!1O||1O==\'4j\')k(el).B({O:5l.l+((18.3r(5l.w,5l.iw)-5l.l-b6.1C)/2)+\'U\'})},hW:u(el,dk){D 1Q=k(\'1T[@2J*="8X"]\',el||1h),8X;1Q.1E(u(){8X=q.2J;q.2J=dk;q.14.5E="9n:9w.9y.hE(2J=\'"+8X+"\')"})}};[].3J||(7F.hF.3J=u(v,n){n=(n==S)?0:n;D m=q.1g;24(D i=n;i<m;i++)if(q[i]==v)E i;E-1});',62,1293,'||||||||||||||||||||jQuery||||||this||||function||||||dragCfg|css|elm|var|return|dragged|easing|speed|false|callback|get|ss|options|iAuto|left|else|top|iResize|null|parseInt|px|oldStyle|height|slideshow|position|width||iDrag|new||style||||Math|display|iUtil|true|helper|subject|case|autoCFG|length|document|dropCfg|iEL|resizeOptions|carouselCfg|duration|interfaceFX|none|attr|sizes|break|pointer|iSort|type|ImageBox|queue|iDrop|iAutoscroller|slide|resizeElement|oC|wb|apply|each|fisheyeCfg|opacity|delta|newSizes|bind|constructor|custom|pos|size|axis|absolute|images|items|append|img|slideslinks|255|firstNum|window|show|container||complete|div|extend|for||start||cont|elsToScroll|100|loader|oR||body|elem|typeof|selectedItem|oldP|props|event|accordionCfg|parseFloat|field|getSize|containment|ny|build|relative|iTooltip|islideshow|nx|tp|slideCaption|value|newPosition|Function|block|selectHelper|step|border|itemWidth|hide|dequeue|timer|src|hidden|right|limit|nr|fractions|0px|PI|addClass|direction|end|overflow|cursorAt|result|parentData|onShow|onChange|to|parentNode|||||||||browser|iSlider|scrollLeft|scrollTop|scr|transferHelper|text|href|onHide|pre|selectdrug|className|switch|visibility|item|wrapper|unbind|max|nextslide|values|currentslide|handle|getPosition|html|newCoords|prevslide|iframe|iExpander|accept|mousemove|canvas|createElement|margins|onSlide|zIndex|indexOf|pressedKey|min|valueToAdd|multipleSeparator|pageSize|zones|highlighted|toggle|abs|onStop|dragElem|times|fadeDuration|diff|dhs|handlers||resizeDirection||vp|so|distance|ghosting||test|vertically|getPointer|startTop|offsetWidth|subjectValue|lastSuggestion|DropOutDirectiont|title|wrs|removeClass|horizontally|startLeft|out|onDrag|oP|onStart|nWidth|percent|down|ifxFirstDisplay|msie|iteration|ratio|clear|color|lastValue|slideCfg|fontSize|currentPointer|dimm|bottom|replace|up|prevImage|tooltipCFG|rel|els|fxCheckTag|context|nextImage|params|shs|fieldData|elToScroll|nodeEl|borderTopWidth|chunks|destroy|string|nHeight|paddingLeft|tagName|currentStyle||halign|slidePos|onclick|delay||containerW|from|helperclass|endLeft|endTop|borderLeftWidth|dragmoveBy|documentElement|dhe|newStyles|clonedEl|click|si|marginLeft|marginBottom|clientScroll|OpenClose|paddingBottom|empty|toWrite|selectionStart|overzone|toAdd|onDragModifier|holder|mousedown|animate|toDrag|cnt|marginRight|linksPosition|blur|getAttribute|hight|filter|sw|zoney|cos|slideshows|zonex|marginTop|collected|paddingTop|url|borderRightWidth|mouseup|borderBottomWidth|activeLinkClass|dragHandle|clearInterval|paddingRight|sortCfg|offsetHeight|prop|oldVisibility|styles||BlindDirection|point|fxh|nmp|old|post|currentPanel|onSelect|elementData|grid|pow|toLowerCase|animationHandler|cur|containerH|close|puff|getWidth|currentRel|imageEl|Expander|getHeight|iFisheye|random|newDimensions|itemHeight|reflections|sliders|selRange|wr|orig|margin|maxWidth|keyup|getScroll|captionText|totalImages|128|parseColor|curCSS|outerContainer|Scale|restore|tolerance|selection|focus|caption|snapDistance|revert|current|3000|captionPosition|hpc|onload|class|getBorder|setInterval|oldStyleAttr|rule|rgb|open|minLeft|ActiveXObject|oldDisplay|restoreStyle|getSizeLite||nw|0x||F0|fadeOut|focused|firstChild|while|cssRules|fadeIn|Date|minTop|backgroundColor|sc|nbsp|hash|captionEl|selectKeyHelper|selectCurrent|newTop|init|newLeft|changed|Draggable|inFrontOf|efx|139|onHover|onOut|getTime|np|keydown|split|radiusY|increment|Array|getPositionLite|selectClass|opera|onHighlight|keyCode|charCode|Object|toInteger|frameClass|hasTabsEnabled|zonew|user|zoneh|positionItems|onClick|oD|scrollIntoView|accordionPos|proximity|indic||data|containerSize|sin|iTTabs||ts|ImageBoxPrevImage|ImageBoxNextImage|imageSrc|newPos|maxHeight|minHeight|elS|activeClass|panels|maxBottom|maxRight|ser|move|opened|bounceout|animationInProgress|overlay|stop|reflectionSize|fnc|classname|insideParent|offsetLeft|jEl|nRy|pr|serialize|nRx|tooltipHelper|cssSides|mouseout|select|count|namedColors|padding|offsetTop|directionIncrement|parentEl|400|dir|expand|createTextNode|finishedPre|clientHeight|li|applyOn|content|contBorders|object|parentBorders|alpha|clientWidth|png|gallery|fontWeight|link|yproc|xproc|sx|parent|showImage|selectedone|imgs|onselect|sy|startDrag|cursor|captionClass|onselectstop|getElementById|linksClass|sh|ul|onActivate|isDroppable|nextEl|onDrop|oldTitle|progid|prevslideClass|prevEl|oldPosition|SliderContainer|Image|linkRel|selectKeyUp|selectKeyDown|DXImageTransform|inCache|Microsoft|mouseover|dragstop|diffX|211|nextslideClass|prot|auto|dEs|hidehelper|isDraggable|activeclass|unit|DoFold|unfold|nodeName|startTime|buildWrapper|prev|1px|oldColor|setTimeout|ScrollTo|st|sl|cssText|9999|next|destroyWrapper|opt|diffHeight|diffWidth|exec|hoverclass|image|blind|borderColor|sideEnd|self|key||default|2000|styleSheets|getValues|192|diffY|lnk|reflexions|checkhover|selectcheck|maxRotation|ImageBoxOuterContainer|gradient|panelHeight|childs|headers|ne|hideImage|minWidth|iIndex|itemsText|os|side|iCarousel|5625|1000|itemMinWidth|linksSeparator|setSelectionRange|protectRotation|positionContainer|posx|hoverClass|valToAdd|minchars|helperClass|source|nextImageEl|preventDefault|multiple|headerSelector|DraggableDestroy|getPadding|autofill|handleEl|stopPropagation|prevImageEl|getFieldValues|panelSelector|String|createTextRange|floats|lastSi|shrink|oPad|windowSize|paddingLeftSize|angle|paddingY|paddingX|RegExp|borderRightSize|floatVal|firstStep|pulse|Pulsate|Color|rotationSpeed|paddingBottomSize|remove|parseStyle|getClient|Number|helperSize|bounce|doTab||zoom|borderLeftSize|oBor|paddingRightSize|borderTopSize|paddingTopSize|stopAnim|pValue|borderBottomSize|extraWidth|restricted|autoSize|unselectable|SliderIteration|prepend|clearTimeout|isSlider|oneIsSortable|applyOnHover|tooltipURL|tabindex|draginit|mouse|restoreStyles|sliderSize|sliderPos|parentPos|cancelBubble|autocomplete|inputWidth|oldBorder|dragmove|clnt|sliderEl|returnValue|loaderWidth|idsa|letterSpacing|pause|getContainment|fade|snapToGrid|linear|10000|slideshowHolder|asin|cssSidesEnd|borderWidth|fitToContainer|TEXTAREA|entities|INPUT|spacer|writeItems|character|currentValue|paddings|169|oldFloat|borders|hidefocused|bouncein||modifyContainer|transparent|center|loadImage|func|getMargins|initialPosition|textAlign|innerHeight|Alpha|no|captionImages|closeEl|shake|prevTop|traverseDOM|Selectserialize|stopDrag|slider|ImageBoxCaption|ImageBoxIframe|300|ImageBoxOverlay|sortable|moveDrag|autoplay|measure|prevLeft|intersect|ImageBoxCurrentImage|selectstop|Shake|index|dragEl|keyPressed|scrollHeight|scroll|innerWidth|match|elPosition|scrollWidth|textImage|slideBor|jpg|captionSize|textImageFrom|visible||loaderHeight|ImageBoxCaptionImages||hoverItem|clickItem|emptyGIF||notColor|slideshowCaption|Droppable|goprev|childNodes|autocompleteHelper|autocompleteIframe|slidePad|fit|165|clientSize|||fontFamily|colorCssProps|elType|onhover|cssProps|expanderHelper|boxModel|itransferTo|keypress|moveStart|offsetParent|Width|selectstart|fxe|selectionEnd|checkCache|fontStyle|update|DroppableDestroy|remeasure|fontStretch|fontVariant|onblur|slideshowLoader|htmlEntities|wordSpacing|createRange|224|KhtmlUserSelect||closeHTML|on|sortHelper|245|userSelect|dragHelper|hrefAttr|dragstart|107|loaderSRC|highlight|slideshowPrevslide||gonext||styleFloat|frameborder|javascript|||relAttr|wid|scrolling||onslide|||listStyle|imageTypes|insertBefore|999|textDecoration|sqrt|140|230|maxy|240|ImageBoxContainer|doScroll|interval|set|dragmoveByKey|protect|ImageBoxCaptionText|144|ImageBoxLoader|off|checkdrop|isSelectable|hlt|30px|selectedclass|tooltipTitle|imagebox|shc|overlayOpacity|selRange2|slideshowNextSlide|gif|getSelectionStart|360|iAccordion|getElementsByTagName|iBounce|after|SortableAddItem|onResize|150|itemZIndex|grow|getHeightMinMax|borderTopUnit|selectcheckApply|borderRightUnit|zindex|fontUnit|togglehor|time|se|parte|easeout|isSortable||SlideInUp|fold|SlideOutUp|rgba|addColorStop|yfrac|containerMaxx|interfaceColorFX|containerMaxy||leftUnit|mousex||radiusX|check|getContext|xfrac|addItem|topUnit|fracH|cloneNode|togglever|paddingLeftUnit|borderBottomUnit|finish|onDragStop|onout|posy|isFunction|oldOverflow|directions|vertical|fracW|fakeAccordionClass|parts|fadeTo|inputValue|xml|selectstopApply|slideshowLinks|onDragStart|BlindUp|paddingTopUnit|500|trim|maxx|borderLeftUnit|paddingRightUnit|filteredPosition|BlindDown|paddingBottomUnit|horizontal|valign|find|ImageBoxClose|onselectstart|mozUserSelect|ondragstart|scale|110|globalCompositeOperation|bmp||drawImage|ondrop|password|quot||save|starty|jpeg|||number|startx|finishOpacity|hover|recallDroppables|flipv|finishx|destination|khtml|moz|lt|amp|pW|clientX|Accordion|translate|captiontext|elasticin|slideshowLink|fix|elasticout|resize|elasticboth|bounceboth|984375|9375|Selectable|30002|list|625|30001|nodeValue|before|100000|purgeEvents|substr|duplicate|moveEnd|||substring|success|param|par|array|Fisheye|name|POST|ajax|easeboth|location|fromHandler|collapse|MozUserSelect||ResizableDestroy|rotationTimer|fillRect|fill|WebKit|fillStyle|createLinearGradient|Resizable|navigator|appVersion|lineHeigt|alt|AlphaImageLoader|prototype|SliderGetValues|DisableTabs|Carousel|load|easein|IMG|200|Slider|ToolTip|wh|nextSibling|Autocomplete|SliderSetValues|pageX|float|centerEl|fixPNG|isNaN|dotted|dashed|stopAll|Left|outlineColor|Top|Right|Bottom|solid|double|selectorText|rules|onchange|SlideToggleRight|SlideOutRight||borderStyle||TransferTo||groove|ridge|inset|outset|borderTopColor||borderRightColor|olive|navy|orange||pink|203|maroon||magenta|182|193|lightyellow|lime|purple|red|outlineOffset|outlineWidth|borderBottomColor|borderLeftColor|lineHeight|loading|silver|white|yellow|Showing|100000000|SlideInRight|clientY|Highlight|SortableDestroy|CloseVertically|CloseHorizontally|FoldToggle|UnFold|SlideInDown|SlideToggleUp|SortSerialize|Fold|SwitchHorizontally|SwitchVertically|Sortable|scrollTo|EnableTabs|ScrollToAnchors|pt|Puff|OpenVertically|OpenHorizontally|Grow|Shrink|DropToggleRight|DropInRight|BlindToggleHorizontally|BlindRight|http|Bounce|120|BlindLeft|BlindToggleVertically|SlideToggleLeft|SlideOutLeft|toUpperCase|SlideInLeft|SlideToggleDown|SlideOutDown|DropOutLeft|DropInLeft|DropToggleLeft|DropOutRight|DropToggleUp|DropInUp|DropOutDown|DropInDown|DropToggleDown|DropOutUp|lightpink|textIndent|aqua|appendChild|azure|beige|220|last|cssFloat|first|ol|wrapEl|fxWrapper|black|imageLoaded|darkkhaki|darkgreen|189|183|darkmagenta|firstResize|darkgrey|brown|cyan|darkblue|darkcyan|table|form|col|tfoot|colgroup|th|header|thead|tbody|112|Autoexpand|tr|td|script|frame|input|pageY|textarea|button|w_|removeChild|frameset|option|optgroup|meta|darkolivegreen|blue|122|233|green|lightcyan|204|darkviolet|lightgreen|indigo|216|khaki|darksalmon|130|darkred|lightblue|148|173|215|238|fuchsia|gold|darkorchid|153|darkorange|lightgrey'.split('|'),0,{})) diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/jquery.color.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/jquery.color.js new file mode 100644 index 0000000..1dffbd5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/jquery.color.js @@ -0,0 +1,128 @@ +/* + * jQuery Color Animations + * Copyright 2007 John Resig + * Released under the MIT and GPL licenses. + */ + +(function(jQuery){ + + // We override the animation for all of these color styles + jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){ + jQuery.fx.step[attr] = function(fx){ + if ( fx.state == 0 ) { + fx.start = getColor( fx.elem, attr ); + fx.end = getRGB( fx.end ); + } + + fx.elem.style[attr] = "rgb(" + [ + Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0), + Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0), + Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0) + ].join(",") + ")"; + } + }); + + // Color Conversion functions from highlightFade + // By Blair Mitchelmore + // http://jquery.offput.ca/highlightFade/ + + // Parse strings looking for color tuples [255,255,255] + function getRGB(color) { + var result; + + // Check if we're already dealing with an array of colors + if ( color && color.constructor == Array && color.length == 3 ) + return color; + + // Look for rgb(num,num,num) + if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) + return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])]; + + // Look for rgb(num%,num%,num%) + if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)) + return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55]; + + // Look for #a0b1c2 + if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)) + return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)]; + + // Look for #fff + if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)) + return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)]; + + // Look for rgba(0, 0, 0, 0) == transparent in Safari 3 + if (result = /rgba\(0, 0, 0, 0\)/.exec(color)) + return colors['transparent'] + + // Otherwise, we're most likely dealing with a named color + return colors[jQuery.trim(color).toLowerCase()]; + } + + function getColor(elem, attr) { + var color; + + do { + color = jQuery.curCSS(elem, attr); + + // Keep going until we find an element that has color, or we hit the body + if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") ) + break; + + attr = "backgroundColor"; + } while ( elem = elem.parentNode ); + + return getRGB(color); + }; + + // Some named colors to work with + // From Interface by Stefan Petre + // http://interface.eyecon.ro/ + + var colors = { + aqua:[0,255,255], + azure:[240,255,255], + beige:[245,245,220], + black:[0,0,0], + blue:[0,0,255], + brown:[165,42,42], + cyan:[0,255,255], + darkblue:[0,0,139], + darkcyan:[0,139,139], + darkgrey:[169,169,169], + darkgreen:[0,100,0], + darkkhaki:[189,183,107], + darkmagenta:[139,0,139], + darkolivegreen:[85,107,47], + darkorange:[255,140,0], + darkorchid:[153,50,204], + darkred:[139,0,0], + darksalmon:[233,150,122], + darkviolet:[148,0,211], + fuchsia:[255,0,255], + gold:[255,215,0], + green:[0,128,0], + indigo:[75,0,130], + khaki:[240,230,140], + lightblue:[173,216,230], + lightcyan:[224,255,255], + lightgreen:[144,238,144], + lightgrey:[211,211,211], + lightpink:[255,182,193], + lightyellow:[255,255,224], + lime:[0,255,0], + magenta:[255,0,255], + maroon:[128,0,0], + navy:[0,0,128], + olive:[128,128,0], + orange:[255,165,0], + pink:[255,192,203], + purple:[128,0,128], + violet:[128,0,128], + red:[255,0,0], + silver:[192,192,192], + white:[255,255,255], + yellow:[255,255,0], + transparent: [255,255,255] + }; + +})(jQuery); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/jquery.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/jquery.js new file mode 100644 index 0000000..00999f6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/jquery.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? +e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r= +j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g, +"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e= +true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)|| +c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded", +L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype, +"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+ +a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f], +d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]=== +a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&& +!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari= +true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ", +i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ", +" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className= +this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i= +e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!= +null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), +fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| +d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this, +"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent= +a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y, +isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit= +{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}}; +if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&& +!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}}, +toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector, +u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), +function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q]; +if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[]; +for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length- +1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, +CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}}, +relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]= +l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[]; +h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m= +m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition|| +!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m= +h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>"; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/, +gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length; +c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)? +a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&& +this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]|| +u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length=== +1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay"); +this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a], +"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)}, +animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing= +j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]); +this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length|| +c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement? +function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b= +this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle; +k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&& +f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);jQuery.noConflict(); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/password-strength-meter.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/password-strength-meter.js new file mode 100644 index 0000000..27152f8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/jquery/password-strength-meter.js @@ -0,0 +1,80 @@ +// Password strength meter +// This jQuery plugin is written by firas kassem [2007.04.05] +// Firas Kassem phiras.wordpress.com || phiras at gmail {dot} com +// for more information : http://phiras.wordpress.com/2007/04/08/password-strength-meter-a-jquery-plugin/ + +var shortPass = pwsL10n.short +var badPass = pwsL10n.bad +var goodPass = pwsL10n.good +var strongPass = pwsL10n.strong + + +function passwordStrength(password,username) { + score = 0 + + //password < 4 + if (password.length < 4 ) { return shortPass } + + //password == username + if (password.toLowerCase()==username.toLowerCase()) return badPass + + //password length + score += password.length * 4 + score += ( checkRepetition(1,password).length - password.length ) * 1 + score += ( checkRepetition(2,password).length - password.length ) * 1 + score += ( checkRepetition(3,password).length - password.length ) * 1 + score += ( checkRepetition(4,password).length - password.length ) * 1 + + //password has 3 numbers + if (password.match(/(.*[0-9].*[0-9].*[0-9])/)) score += 5 + + //password has 2 symbols + if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) score += 5 + + //password has Upper and Lower chars + if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) score += 10 + + //password has number and chars + if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)) score += 15 + // + //password has number and symbol + if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)) score += 15 + + //password has char and symbol + if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)) score += 15 + + //password is just numbers or chars + if (password.match(/^\w+$/) || password.match(/^\d+$/) ) score -= 10 + + //verifing 0 < score < 100 + if ( score < 0 ) score = 0 + if ( score > 100 ) score = 100 + + if (score < 34 ) return badPass + if (score < 68 ) return goodPass + return strongPass +} + + +// checkRepetition(1,'aaaaaaabcbc') = 'abcbc' +// checkRepetition(2,'aaaaaaabcbc') = 'aabc' +// checkRepetition(2,'aaaaaaabcdbcd') = 'aabcd' + +function checkRepetition(pLen,str) { + res = "" + for ( i=0; i<str.length ; i++ ) { + repeated=true + for (j=0;j < pLen && (j+i+pLen) < str.length;j++) + repeated=repeated && (str.charAt(j+i)==str.charAt(j+i+pLen)) + if (j<pLen) repeated=false + if (repeated) { + i+=pLen-1 + repeated=false + } + else { + res+=str.charAt(i) + } + } + return res +} + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/profile-edit.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/profile-edit.js new file mode 100644 index 0000000..7181850 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/profile-edit.js @@ -0,0 +1,38 @@ +function check_pass_strength () { + var pass = jQuery('#pass1').val(); + var user = jQuery('#user_login').val(); + + // get the result as an object, i'm tired of typing it + var res = jQuery('#pass-strength-result'); + + var strength = passwordStrength(pass, user); + + jQuery(res).removeClass('short bad good strong'); + + if ( strength == pwsL10n.bad ) { + jQuery(res).addClass('bad'); + jQuery(res).html( pwsL10n.bad ); + } + else if ( strength == pwsL10n.good ) { + jQuery(res).addClass('good'); + jQuery(res).html( pwsL10n.good ); + } + else if ( strength == pwsL10n.strong ) { + jQuery(res).addClass('strong'); + jQuery(res).html( pwsL10n.strong ); + } + else { + // this catches 'Too short' and the off chance anything else comes along + jQuery(res).addClass('short'); + jQuery(res).html( pwsL10n.short ); + } +} + +jQuery(function($) { + $('#pass1').keyup( check_pass_strength ) + $('.color-palette').click(function(){$(this).siblings('input[name=admin_color]').attr('checked', 'checked')}); +}); + +jQuery(document).ready( function() { + jQuery('#pass1,#pass2').attr('autocomplete','off'); +}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/topic.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/topic.js new file mode 100644 index 0000000..a05c5a9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/topic.js @@ -0,0 +1,64 @@ +bbTopicJS = jQuery.extend( { + currentUserId: '0', + topicId: '0', + favoritesLink: '', + isFav: 0, + confirmPostDelete: 'Are you sure you want to delete this post?', + favLinkYes: 'favorites', + favLinkNo: '?', + favYes: 'This topic is one of your %favLinkYes% [%favDel%]', + favNo: '%favAdd% (%favLinkNo%)', + favDel: 'x', + favAdd: 'Add this topic to your favorites' +}, bbTopicJS ); + +bbTopicJS.isFav = parseInt( bbTopicJS.isFav ); + +jQuery( function($) { + // Tags + var tagsDelBefore = function( s ) { + s.data['topic_id'] = bbTopicJS.topicId; + return s; + }; + $('#tags-list').wpList( { alt: '', delBefore: tagsDelBefore } ); + + // Favorites + var favoritesToggle = $('#favorite-toggle') + .addClass( 'list:favorite' ) + .wpList( { alt: '', dimAfter: favLinkSetup } ); + + var favoritesToggleSpan = favoritesToggle.children( 'span' ) + [bbTopicJS.isFav ? 'addClass' : 'removeClass' ]( 'is-favorite' ); + + function favLinkSetup() { + bbTopicJS.isFav = favoritesToggleSpan.is('.is-favorite'); + var aLink = "<a href='" + bbTopicJS.favoritesLink + "'>"; + var aDim = "<a href='" + favoritesToggleSpan.find( 'a[class^="dim:"]' ).attr( 'href' ) + "' class='dim:favorite-toggle:" + favoritesToggleSpan.attr( 'id' ) + ":is-favorite'>"; + if ( bbTopicJS.isFav ) { + html = bbTopicJS.favYes + .replace( /%favLinkYes%/, aLink + bbTopicJS.favLinkYes + "</a>" ) + .replace( /%favDel%/, aDim + bbTopicJS.favDel + "</a>" ); + } else { + html = bbTopicJS.favNo + .replace( /%favLinkNo%/, aLink + bbTopicJS.favLinkNo + "</a>" ) + .replace( /%favAdd%/, aDim + bbTopicJS.favAdd + "</a>" ); + } + favoritesToggleSpan.html( html ); + favoritesToggle.get(0).wpList.process( favoritesToggle ); + } + + // Posts + var postConfirm = function(e,s,a) { + if ( 'delete' != a ) { + return true; + } + return confirm( bbTopicJS[ $('#' + s.element).is('.deleted') ? 'confirmPostUnDelete' : 'confirmPostDelete'] ); + }; + + $('#thread').addClass( 'list:post' ).wpList( { alt: 'alt', altOffset: 1, confirm: postConfirm, delAfter: function( r, s ) { + try { + // If we deleted the only post, we got an WP AJAX Response object back with a URL to redirect to + document.location = s.parsed.responses[0].data; + } catch ( e ) {} + } } ); +} ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/wp-ajax-response.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/wp-ajax-response.js new file mode 100644 index 0000000..81483e2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/wp-ajax-response.js @@ -0,0 +1,64 @@ +var wpAjax = jQuery.extend( { + unserialize: function( s ) { + var r = {}, q, pp, i, p; + if ( !s ) { return r; } + q = s.split('?'); if ( q[1] ) { s = q[1]; } + pp = s.split('&'); + for ( i in pp ) { + if ( jQuery.isFunction(pp.hasOwnProperty) && !pp.hasOwnProperty(i) ) { continue; } + p = pp[i].split('='); + r[p[0]] = p[1]; + } + return r; + }, + parseAjaxResponse: function( x, r, e ) { // 1 = good, 0 = strange (bad data?), -1 = you lack permission + var parsed = {}, re = jQuery('#' + r).html(''), err = ''; + + if ( x && typeof x == 'object' && x.getElementsByTagName('wp_ajax') ) { + parsed.responses = []; + parsed.errors = false; + jQuery('response', x).each( function() { + var th = jQuery(this), child = jQuery(this.firstChild), response; + response = { action: th.attr('action'), what: child.get(0).nodeName, id: child.attr('id'), oldId: child.attr('old_id'), position: child.attr('position') }; + response.data = jQuery( 'response_data', child ).text(); + response.supplemental = {}; + if ( !jQuery( 'supplemental', child ).children().each( function() { + response.supplemental[this.nodeName] = jQuery(this).text(); + } ).size() ) { response.supplemental = false } + response.errors = []; + if ( !jQuery('wp_error', child).each( function() { + var code = jQuery(this).attr('code'), anError, errorData, formField; + anError = { code: code, message: this.firstChild.nodeValue, data: false }; + errorData = jQuery('wp_error_data[code="' + code + '"]', x); + if ( errorData ) { anError.data = errorData.get(); } + formField = jQuery( 'form-field', errorData ).text(); + if ( formField ) { code = formField; } + if ( e ) { wpAjax.invalidateForm( jQuery('#' + e + ' :input[name="' + code + '"]' ).parents('.form-field:first') ); } + err += '<p>' + anError.message + '</p>'; + response.errors.push( anError ); + parsed.errors = true; + } ).size() ) { response.errors = false; } + parsed.responses.push( response ); + } ); + if ( err.length ) { re.html( '<div class="error">' + err + '</div>' ); } + return parsed; + } + if ( isNaN(x) ) { return !re.html('<div class="error"><p>' + x + '</p></div>'); } + x = parseInt(x,10); + if ( -1 == x ) { return !re.html('<div class="error"><p>' + wpAjax.noPerm + '</p></div>'); } + else if ( 0 === x ) { return !re.html('<div class="error"><p>' + wpAjax.broken + '</p></div>'); } + return true; + }, + invalidateForm: function ( selector ) { + return jQuery( selector ).addClass( 'form-invalid' ).change( function() { jQuery(this).removeClass( 'form-invalid' ); } ); + }, + validateForm: function( selector ) { + selector = jQuery( selector ); + return !wpAjax.invalidateForm( selector.find('.form-required').filter( function() { return jQuery('input:visible', this).val() == ''; } ) ).size(); + } +}, wpAjax || { noPerm: 'You do not have permission to do that.', broken: 'An unidentified error has occurred.' } ); + +// Basic form validation +jQuery(document).ready( function($){ + $('form.validate').submit( function() { return wpAjax.validateForm( $(this) ); } ); +}); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/wp-lists.js b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/wp-lists.js new file mode 100644 index 0000000..cacc92f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-includes/js/wp-lists.js @@ -0,0 +1,372 @@ +(function($) { +var currentFormEl = false, fs = {add:'ajaxAdd',del:'ajaxDel',dim:'ajaxDim',process:'process',recolor:'recolor'}, wpList; + +wpList = { + settings: { + url: wpListL10n.url, type: 'POST', + response: 'ajax-response', + + what: '', + alt: 'alternate', altOffset: 0, + addColor: null, delColor: null, dimAddColor: null, dimDelColor: null, + + confirm: null, + addBefore: null, addAfter: null, + delBefore: null, delAfter: null, + dimBefore: null, dimAfter: null + }, + + nonce: function(e,s) { + var url = wpAjax.unserialize(e.attr('href')); + return s.nonce || url._ajax_nonce || $('#' + s.element + ' input[name=_ajax_nonce]').val() || url._wpnonce || $('#' + s.element + ' input[name=_wpnonce]').val() || 0; + }, + + parseClass: function(e,t) { + var c = [], cl; + try { + cl = $(e).attr('class') || ''; + cl = cl.match(new RegExp(t+':[\\S]+')); + if ( cl ) { c = cl[0].split(':'); } + } catch(r) {} + return c; + }, + + pre: function(e,s,a) { + var bg, r; + s = $.extend( {}, this.wpList.settings, { + element: null, + nonce: 0, + target: e.get(0) + }, s || {} ); + if ( $.isFunction( s.confirm ) ) { + if ( 'add' != a ) { + bg = $('#' + s.element).css('backgroundColor'); + $('#' + s.element).css('backgroundColor', '#FF9966'); + } + r = s.confirm.call(this,e,s,a,bg); + if ( 'add' != a ) { $('#' + s.element).css('backgroundColor', bg ); } + if ( !r ) { return false; } + } + return s; + }, + + ajaxAdd: function( e, s ) { + e = $(e); + s = s || {}; + var list = this, cls = wpList.parseClass(e,'add'), es, valid, formData; + s = wpList.pre.call( list, e, s, 'add' ); + + s.element = cls[2] || e.attr( 'id' ) || s.element || null; + if ( cls[3] ) { s.addColor = '#' + cls[3]; } + else { s.addColor = s.addColor || '#FFFF33'; } + + if ( !s ) { return false; } + + if ( !e.is("[class^=add:" + list.id + ":]") ) { return !wpList.add.call( list, e, s ); } + + if ( !s.element ) { return true; } + + s.action = 'add-' + s.what; + + s.nonce = wpList.nonce(e,s); + + es = $('#' + s.element + ' :input').not('[name=_ajax_nonce], [name=_wpnonce], [name=action]'); + valid = wpAjax.validateForm( '#' + s.element ); + if ( !valid ) { return false; } + + s.data = $.param( $.extend( { _ajax_nonce: s.nonce, action: s.action }, wpAjax.unserialize( cls[4] || '' ) ) ); + formData = $.isFunction(es.fieldSerialize) ? es.fieldSerialize() : es.serialize(); + if ( formData ) { s.data += '&' + formData; } + + if ( $.isFunction(s.addBefore) ) { + s = s.addBefore( s ); + if ( !s ) { return true; } + } + if ( !s.data.match(/_ajax_nonce=[a-f0-9]+/) ) { return true; } + + s.success = function(r) { + var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o; + if ( !res || res.errors ) { return false; } + + if ( true === res ) { return true; } + + jQuery.each( res.responses, function() { + wpList.add.call( list, this.data, $.extend( {}, s, { // this.firstChild.nodevalue + pos: this.position || 0, + id: this.id || 0, + oldId: this.oldId || null + } ) ); + } ); + + if ( $.isFunction(s.addAfter) ) { + o = this.complete; + this.complete = function(x,st) { + var _s = $.extend( { xml: x, status: st, parsed: res }, s ); + s.addAfter( r, _s ); + if ( $.isFunction(o) ) { o(x,st); } + }; + } + list.wpList.recolor(); + wpList.clear.call(list,'#' + s.element); + }; + + $.ajax( s ); + return false; + }, + + ajaxDel: function( e, s ) { + e = $(e); s = s || {}; + var list = this, cls = wpList.parseClass(e,'delete'), element, anim; + s = wpList.pre.call( list, e, s, 'delete' ); + + s.element = cls[2] || s.element || null; + if ( cls[3] ) { s.delColor = '#' + cls[3]; } + else { s.delColor = s.delColor || '#FF3333'; } + + if ( !s || !s.element ) { return false; } + + s.action = 'delete-' + s.what; + + s.nonce = wpList.nonce(e,s); + + s.data = $.extend( + { action: s.action, id: s.element.split('-').pop(), _ajax_nonce: s.nonce }, + wpAjax.unserialize( cls[4] || '' ) + ); + + if ( $.isFunction(s.delBefore) ) { + s = s.delBefore( s ); + if ( !s ) { return true; } + } + if ( !s.data._ajax_nonce ) { return true; } + + element = $('#' + s.element); + + if ( 'none' != s.delColor ) { + anim = 'slideUp'; + if ( element.css( 'display' ).match(/table/) ) + anim = 'fadeOut'; // Can't slideup table rows and other table elements. Known jQuery bug + element + .animate( { backgroundColor: s.delColor }, 'fast' )[anim]( 'fast' ) + .queue( function() { list.wpList.recolor(); $(this).dequeue(); } ); + } else { + list.wpList.recolor(); + } + + s.success = function(r) { + var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o; + if ( !res || res.errors ) { + element.stop().stop().css( 'backgroundColor', '#FF3333' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } ); + return false; + } + if ( $.isFunction(s.delAfter) ) { + o = this.complete; + this.complete = function(x,st) { + element.queue( function() { + var _s = $.extend( { xml: x, status: st, parsed: res }, s ); + s.delAfter( r, _s ); + if ( $.isFunction(o) ) { o(x,st); } + } ).dequeue(); + }; + } + }; + $.ajax( s ); + return false; + }, + + ajaxDim: function( e, s ) { + if ( $(e).parent().css('display') == 'none' ) // Prevent hidden links from being clicked by hotkeys + return false; + e = $(e); s = s || {}; + var list = this, cls = wpList.parseClass(e,'dim'), element, isClass, color, dimColor; + s = wpList.pre.call( list, e, s, 'dim' ); + + s.element = cls[2] || s.element || null; + s.dimClass = cls[3] || s.dimClass || null; + if ( cls[4] ) { s.dimAddColor = '#' + cls[4]; } + else { s.dimAddColor = s.dimAddColor || '#FFFF33'; } + if ( cls[5] ) { s.dimDelColor = '#' + cls[5]; } + else { s.dimDelColor = s.dimDelColor || '#FF3333'; } + + if ( !s || !s.element || !s.dimClass ) { return true; } + + s.action = 'dim-' + s.what; + + s.nonce = wpList.nonce(e,s); + + s.data = $.extend( + { action: s.action, id: s.element.split('-').pop(), dimClass: s.dimClass, _ajax_nonce : s.nonce }, + wpAjax.unserialize( cls[6] || '' ) + ); + + if ( $.isFunction(s.dimBefore) ) { + s = s.dimBefore( s ); + if ( !s ) { return true; } + } + + element = $('#' + s.element); + isClass = element.toggleClass(s.dimClass).is('.' + s.dimClass); + color = wpList.getColor( element ); + element.toggleClass( s.dimClass ) + dimColor = isClass ? s.dimAddColor : s.dimDelColor; + if ( 'none' != dimColor ) { + element + .animate( { backgroundColor: dimColor }, 'fast' ) + .queue( function() { element.toggleClass(s.dimClass); $(this).dequeue(); } ) + .animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); } } ); + } + + if ( !s.data._ajax_nonce ) { return true; } + + s.success = function(r) { + var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o; + if ( !res || res.errors ) { + element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } ); + return false; + } + if ( $.isFunction(s.dimAfter) ) { + o = this.complete; + this.complete = function(x,st) { + element.queue( function() { + var _s = $.extend( { xml: x, status: st, parsed: res }, s ); + s.dimAfter( r, _s ); + if ( $.isFunction(o) ) { o(x,st); } + } ).dequeue(); + }; + } + }; + + $.ajax( s ); + return false; + }, + + // From jquery.color.js: jQuery Color Animation by John Resig + getColor: function( el ) { + if ( el.constructor == Object ) + el = el.get(0); + var elem = el, color, rgbaTrans = new RegExp( "rgba\\(\\s*0,\\s*0,\\s*0,\\s*0\\s*\\)", "i" ); + do { + color = jQuery.curCSS(elem, 'backgroundColor'); + if ( color != '' && color != 'transparent' && !color.match(rgbaTrans) || jQuery.nodeName(elem, "body") ) + break; + } while ( elem = elem.parentNode ); + return color || '#ffffff'; + }, + + add: function( e, s ) { + e = $(e); + + var list = $(this), old = false, _s = { pos: 0, id: 0, oldId: null }, ba, ref, color; + if ( 'string' == typeof s ) { s = { what: s }; } + s = $.extend(_s, this.wpList.settings, s); + if ( !e.size() || !s.what ) { return false; } + if ( s.oldId ) { old = $('#' + s.what + '-' + s.oldId); } + if ( s.id && ( s.id != s.oldId || !old || !old.size() ) ) { $('#' + s.what + '-' + s.id).remove(); } + + if ( old && old.size() ) { + old.replaceWith(e); + } else if ( isNaN(s.pos) ) { + ba = 'after'; + if ( '-' == s.pos.substr(0,1) ) { + s.pos = s.pos.substr(1); + ba = 'before'; + } + ref = list.find( '#' + s.pos ); + if ( 1 === ref.size() ) { ref[ba](e); } + else { list.append(e); } + } else if ( s.pos < 0 ) { + list.prepend(e); + } else { + list.append(e); + } + + if ( s.alt ) { + if ( ( list.children(':visible').index( e[0] ) + s.altOffset ) % 2 ) { e.removeClass( s.alt ); } + else { e.addClass( s.alt ); } + } + + if ( 'none' != s.addColor ) { + color = wpList.getColor( e ); + e.css( 'backgroundColor', s.addColor ).animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); } } ); + } + list.each( function() { this.wpList.process( e ); } ); + return e; + }, + + clear: function(e) { + var list = this, t, tag; + e = $(e); + if ( list.wpList && e.parents( '#' + list.id ).size() ) { return; } + e.find(':input').each( function() { + if ( $(this).parents('.form-no-clear').size() ) + return; + t = this.type.toLowerCase(); + tag = this.tagName.toLowerCase(); + if ( 'text' == t || 'password' == t || 'textarea' == tag ) { this.value = ''; } + else if ( 'checkbox' == t || 'radio' == t ) { this.checked = false; } + else if ( 'select' == tag ) { this.selectedIndex = null; } + }); + }, + + process: function(el) { + var list = this; + $("[class^=add:" + list.id + ":]", el || null) + .filter('form').submit( function() { return list.wpList.add(this); } ).end() + .not('form').click( function() { return list.wpList.add(this); } ).each( function() { + var addEl = this, c = wpList.parseClass(this,'add')[2] || addEl.id, forms = [], ins = []; + if ( !c ) { return; } + // this is all really inefficient + $('#' + c + ' :input').focus( function() { currentFormEl = this; } ).blur( function() { currentFormEl = false; } ).each( function() { + ins.push(this); + var f = $(this).parents('form:first').get(0); + if ( $.inArray(f,forms) < 0 ) { forms.push(f); } + } ); + $(forms).submit( function() { + if ( 0 <= $.inArray(currentFormEl,ins) ) { + $(addEl).trigger( 'click' ); + $(currentFormEl).focus(); + return false; + } + } ); + } ); + $("[class^=delete:" + list.id + ":]", el || null).click( function() { return list.wpList.del(this); } ); + $("[class^=dim:" + list.id + ":]", el || null).click( function() { return list.wpList.dim(this); } ); + }, + + recolor: function() { + var list = this, items, eo; + if ( !list.wpList.settings.alt ) { return; } + items = $('.list-item:visible', list); + if ( !items.size() ) { items = $(list).children(':visible'); } + eo = [':even',':odd']; + if ( list.wpList.settings.altOffset % 2 ) { eo.reverse(); } + items.filter(eo[0]).addClass(list.wpList.settings.alt).end().filter(eo[1]).removeClass(list.wpList.settings.alt); + }, + + init: function() { + var lists = this; + lists.wpList.process = function(a) { + lists.each( function() { + this.wpList.process(a); + } ); + }; + lists.wpList.recolor = function() { + lists.each( function() { + this.wpList.recolor(); + } ); + }; + } +}; + +$.fn.wpList = function( settings ) { + this.each( function() { + var _this = this; + this.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseClass(this,'list')[1] || '' }, settings ) }; + $.each( fs, function(i,f) { _this.wpList[i] = function( e, s ) { return wpList[f].call( _this, e, s ); }; } ); + } ); + wpList.init.call(this); + this.wpList.process(); + return this; +}; + +})(jQuery); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-load.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-load.php new file mode 100644 index 0000000..9c41ec0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-load.php @@ -0,0 +1,184 @@ +<?php +/** + * Initialises the most fundamental parts of bbPress + * + * You should not have to change this file, all configuration + * should be possible in bb-config.php + * + * @package bbPress + */ + + + +/** + * Low level reasons to die + */ + +// Die if PHP is not new enough +if ( version_compare( PHP_VERSION, '4.3', '<' ) ) { + die( sprintf( 'Your server is running PHP version %s but bbPress requires at least 4.3', PHP_VERSION ) ); +} + + + +// Modify error reporting levels to exclude PHP notices +error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING); + + +/** + * bb_timer_start() - PHP 4 standard microtime start capture + * + * @access private + * @global int $bb_timestart Seconds and Microseconds added together from when function is called + * @return bool Always returns true + */ +function bb_timer_start() +{ + global $bb_timestart; + $mtime = explode( ' ', microtime() ); + $bb_timestart = $mtime[1] + $mtime[0]; + return true; +} +bb_timer_start(); + + + +// Server detection + +/** + * Whether the server software is Apache or something else + * @global bool $is_apache + */ +$is_apache = ( strpos( $_SERVER['SERVER_SOFTWARE'], 'Apache' ) !== false || strpos( $_SERVER['SERVER_SOFTWARE'], 'LiteSpeed' ) !== false); + +/** + * Whether the server software is IIS or something else + * @global bool $is_IIS + */ +$is_IIS = ( strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS' ) !== false || strpos( $_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer' ) !== false ); + +/** + * Whether the server software is IIS 7.X + * @global bool $is_iis7 + */ +$is_iis7 = ( strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/7.' ) !== false ); + + + +/** + * Stabilise $_SERVER variables in various PHP environments + */ + +// Fix for IIS, which doesn't set REQUEST_URI +if ( empty( $_SERVER['REQUEST_URI'] ) ) { + + // IIS Mod-Rewrite + if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { + $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL']; + } + // IIS Isapi_Rewrite + else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { + $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL']; + } + else + { + // Use ORIG_PATH_INFO if there is no PATH_INFO + if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) ) + $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO']; + + // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice) + if ( isset($_SERVER['PATH_INFO']) ) { + if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] ) + $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO']; + else + $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']; + } + + // Append the query string if it exists and isn't null + if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) { + $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']; + } + } +} + +// Fix for PHP as CGI hosts that set SCRIPT_FILENAME to something ending in php.cgi for all requests +if ( isset($_SERVER['SCRIPT_FILENAME']) && ( strpos($_SERVER['SCRIPT_FILENAME'], 'php.cgi') == strlen($_SERVER['SCRIPT_FILENAME']) - 7 ) ) + $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED']; + +// Fix for Dreamhost and other PHP as CGI hosts +if (strpos($_SERVER['SCRIPT_NAME'], 'php.cgi') !== false) + unset($_SERVER['PATH_INFO']); + +// Fix empty PHP_SELF +$PHP_SELF = $_SERVER['PHP_SELF']; +if ( empty($PHP_SELF) ) + $_SERVER['PHP_SELF'] = $PHP_SELF = preg_replace("/(\?.*)?$/",'',$_SERVER["REQUEST_URI"]); + + + +/** + * bbPress logging level constants - same as constants from BP_Log class + */ +define( 'BB_LOG_NONE', 0 ); +define( 'BB_LOG_FAIL', 1 ); +define( 'BB_LOG_ERROR', 2 ); +define( 'BB_LOG_WARNING', 4 ); +define( 'BB_LOG_NOTICE', 8 ); +define( 'BB_LOG_DEBUG', 16 ); + +/** + * Combination of all errors (excluding none and debug) + */ +define( 'BB_LOG_ALL', BB_LOG_FAIL + BB_LOG_ERROR + BB_LOG_WARNING + BB_LOG_NOTICE ); + +/** + * Define temporary $_bb_path as this files directory, then check for the special BB_PATH config file + * which allows override of BB_PATH, but only outside of core files + */ +$_bb_path = dirname( __FILE__ ) . '/'; +$_bb_config_path = dirname( $_bb_path ) . '/bb-config-path.php'; +if ( file_exists( $_bb_config_path ) ) { + include_once( $_bb_config_path ); +} +if ( !defined( 'BB_PATH' ) ) { + define( 'BB_PATH', $_bb_path ); +} +unset( $_bb_path, $_bb_config_path ); + +/** + * The bbPress includes path relative to BB_PATH + */ +define( 'BB_INC', 'bb-includes/' ); + +// Initialise $bb object +$bb = new StdClass(); + +if ( file_exists( BB_PATH . 'bb-config.php') ) { + + // The config file resides in BB_PATH + require_once( BB_PATH . 'bb-config.php'); + + // Load bb-settings.php + require_once( BB_PATH . 'bb-settings.php' ); + +} elseif ( file_exists( dirname( BB_PATH ) . '/bb-config.php') ) { + + // The config file resides one level below BB_PATH + require_once( dirname( BB_PATH ) . '/bb-config.php' ); + + // Load bb-settings.php + require_once( BB_PATH . 'bb-settings.php' ); + +} elseif ( !defined( 'BB_INSTALLING' ) || !BB_INSTALLING ) { + + // The config file doesn't exist and we aren't on the installation page + + // Cut to the chase, go to the installer and use it to deal with errors + $install_uri = preg_replace( '|(/bb-admin)?/[^/]+?$|', '/', $_SERVER['PHP_SELF'] ) . 'bb-admin/install.php'; + header( 'Location: ' . $install_uri ); + die(); + +} + +if ( isset( $_GET['doit'] ) && 'bb-subscribe' == $_GET['doit'] ) + require( BB_PATH . 'bb-includes/action.subscribe.php' ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-login.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-login.php new file mode 100644 index 0000000..775e0eb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-login.php @@ -0,0 +1,148 @@ +<?php + +// Load bbPress +require( './bb-load.php' ); + +// SSL redirect if required +bb_ssl_redirect(); + +// Don't cache this page at all +nocache_headers(); + +/** Look for redirection ******************************************************/ + +// Look for 'redirect_to' +if ( isset( $_REQUEST['redirect_to'] ) ) + $re = $_REQUEST['redirect_to']; + + // Look for 're' + if ( empty( $re ) && isset( $_REQUEST['re'] ) ) + $re = $_REQUEST['re']; + + // Use referer + if ( empty( $re ) ) + $re = wp_get_referer(); + + // Don't redirect to register or password reset pages + if ( empty( $re ) ) { + // Grab home path and URL for comparison + $home_url = parse_url( bb_get_uri( null, null, BB_URI_CONTEXT_TEXT ) ); + $home_path = $home_url['path']; + + if ( false !== strpos( $re, $home_path . 'register.php' ) || false !== strpos( $re, $home_path . 'bb-reset-password.php' ) ) + $re = bb_get_uri( null, null, BB_URI_CONTEXT_HEADER ); + } + +/** + * If this page was accessed using SSL, make sure the redirect is a full URL so + * that we don't end up on an SSL page again (unless the whole site is under SSL) + */ +if ( is_ssl() && 0 === strpos( $re, '/' ) ) + $re = bb_get_uri( $re , null, BB_URI_CONTEXT_HEADER ); + +// Clean the redirection destination +if ( !empty( $re ) ) { + $re = esc_url( $re ); + $re = esc_attr( $re ); + $redirect_to = $re; +} + +// Fallback to site root +if ( empty( $re ) ) + $re = bb_get_uri(); + +/** Handle logout *************************************************************/ + +// User is logged in +if ( bb_is_user_logged_in() ) { + + // Logout requested + if ( isset( $_GET['logout'] ) ) + $_GET['action'] = 'logout'; + + // Check logout action + if ( isset( $_GET['action'] ) && 'logout' === $_GET['action'] ) + bb_logout(); + + bb_safe_redirect( $re ); + exit; +} + +/** Handle login **************************************************************/ + +// Do we allow login by email address +$email_login = bb_get_option( 'email_login' ); + +// Get the user from the login details +if ( empty( $_POST['log'] ) ) + $_POST['log'] = !empty( $_POST['user_login'] ) ? $_POST['user_login'] : ''; + +if ( empty( $_POST['pwd'] ) ) + $_POST['pwd'] = !empty( $_POST['password'] ) ? $_POST['password'] : ''; + +if ( empty( $_POST['rememberme'] ) ) + $_POST['rememberme'] = !empty( $_POST['remember'] ) ? 1 : ''; + +// Attempt to log the user in +if ( $user = bb_login( @$_POST['log'], @$_POST['pwd'], @$_POST['rememberme'] ) ) { + if ( !is_wp_error( $user ) ) { + bb_safe_redirect( $re ); + exit; + } else { + $bb_login_error =& $user; + } + +// No login so prepare the error +} else { + $bb_login_error = new WP_Error; +} + +/** Handle errors *************************************************************/ + +// Get error data so we can provide feedback +$error_data = $bb_login_error->get_error_data(); + +// Does user actually exist +if ( isset( $error_data['unique'] ) && false === $error_data['unique'] ) + $user_exists = true; +else + $user_exists = !empty( $_POST['log'] ) && (bool) bb_get_user( $_POST['log'], array( 'by' => 'login' ) ); + +// Check for errors on post method +if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) ) { + + // If the user doesn't exist then add that error + if ( empty( $user_exists ) ) { + if ( !empty( $_POST['log'] ) ) { + $bb_login_error->add( 'user_login', __( 'User does not exist.' ) ); + } else { + $bb_login_error->add( 'user_login', $email_login ? __( 'Enter a username or email address.' ) : __( 'Enter a username.' ) ); + } + } + + // If the password was wrong then add that error + if ( !$bb_login_error->get_error_code() ) { + $bb_login_error->add( 'password', __( 'Incorrect password.' ) ); + } +} + +/** + * If trying to log in with email address, don't leak whether or not email + * address exists in the db. is_email() is not perfect. Usernames can be + * valid email addresses potentially. + */ +if ( !empty( $email_login ) && $bb_login_error->get_error_codes() && false !== is_email( @$_POST['log'] ) ) + $bb_login_error = new WP_Error( 'user_login', __( 'Username and Password do not match.' ) ); + +/** Prepare for display *******************************************************/ + +// Sanitze variables for display +$remember_checked = @$_POST['rememberme'] ? ' checked="checked"' : ''; +$user_login = esc_attr( sanitize_user( @$_POST['log'], true ) ); + +// Load the template +bb_load_template( 'login.php', array( 'user_exists', 'user_login', 'remember_checked', 'redirect_to', 're', 'bb_login_error' ) ); + +exit; + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/akismet.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/akismet.php new file mode 100644 index 0000000..add8df7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/akismet.php @@ -0,0 +1,525 @@ +<?php +/* +Plugin Name: Akismet +Plugin URI: http://akismet.com/ +Description: Akismet checks posts against the Akismet web service to see if they look like spam or not. You need a <a href="http://wordpress.com/api-keys/">WordPress.com API key</a> to use this service. +Author: Michael Adams +Version: 1.1 +Author URI: http://blogwaffe.com/ +*/ + + + +$bb_ksd_api_host = bb_get_option( 'akismet_key' ) . '.rest.akismet.com'; +$bb_ksd_api_port = 80; +$bb_ksd_user_agent = 'bbPress/' . bb_get_option( 'version' ) . ' | bbAkismet/'. bb_get_option( 'version' ); + +function bb_akismet_verify_key( $key ) +{ + global $bb_ksd_api_port; + $blog = urlencode( bb_get_uri( null, null, BB_URI_CONTEXT_TEXT + BB_URI_CONTEXT_AKISMET ) ); + $response = bb_ksd_http_post( 'key=' . $key . '&blog=' . $blog, 'rest.akismet.com', '/1.1/verify-key', $bb_ksd_api_port ); + if ( 'valid' == $response[1] ) { + return true; + } else { + return false; + } +} + +// Returns array with headers in $response[0] and entity in $response[1] +function bb_ksd_http_post( $request, $host, $path, $port = 80 ) +{ + global $bb_ksd_user_agent; + + $http_request = 'POST ' . $path . ' HTTP/1.0' . "\r\n"; + $http_request .= 'Host: ' . $host . "\r\n"; + $http_request .= 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' . "\r\n"; // for now + $http_request .= 'Content-Length: ' . strlen($request) . "\r\n"; + $http_request .= 'User-Agent: ' . $bb_ksd_user_agent . "\r\n"; + $http_request .= "\r\n"; + $http_request .= $request; + $response = ''; + if ( false != ( $fs = @fsockopen( $host, $port, $errno, $errstr, 10 ) ) ) { + fwrite( $fs, $http_request ); + + while ( !feof( $fs ) ) { + $response .= fgets( $fs, 1160 ); // One TCP-IP packet + } + fclose( $fs ); + $response = explode( "\r\n\r\n", $response, 2 ); + } + return $response; +} + +function bb_ksd_configuration_page() +{ +?> +<h2><?php _e( 'Akismet Settings' ); ?></h2> +<?php do_action( 'bb_admin_notices' ); ?> + +<form class="settings" method="post" action="<?php bb_uri( 'bb-admin/admin-base.php', array( 'plugin' => 'bb_ksd_configuration_page'), BB_URI_CONTEXT_FORM_ACTION + BB_URI_CONTEXT_BB_ADMIN ); ?>"> + <fieldset> + <p><?php printf( __( 'For many people, <a href="%s">Akismet</a> will greatly reduce or even completely eliminate the spam you get on your site. If one does happen to get through, simply mark it as "spam" and Akismet will learn from the mistakes.' ), 'http://akismet.com/' ); ?></p> + +<?php + $after = ''; + if ( false !== $key = bb_get_option( 'akismet_key' ) ) { + if ( bb_akismet_verify_key( $key ) ) { + $after = __( 'This key is valid' ); + } else { + bb_delete_option( 'akismet_key' ); + } + } + + bb_option_form_element( 'akismet_key', array( + 'title' => __( 'WordPress.com API Key' ), + 'attributes' => array( 'maxlength' => 12 ), + 'after' => $after, + 'note' => sprintf( __( 'If you don\'t have a WordPress.com API Key, you can get one at <a href="%s">WordPress.com</a>' ), 'http://wordpress.com/api-keys/' ) + ) ); + + bb_option_form_element( 'akismet_stats', array( + 'title' => __( 'Enable stats page' ), + 'type' => 'checkbox', + 'options' => array( + 1 => __( 'Create a page that shows spam statistics.' ) + ), + 'note' => __( 'This page will be viewable by moderators or higher.' ) + ) ); +?> + + </fieldset> + <fieldset class="submit"> + <?php bb_nonce_field( 'options-akismet-update' ); ?> + <input type="hidden" name="action" value="update-akismet-settings" /> + <input class="submit" type="submit" name="submit" value="<?php _e('Save Changes') ?>" /> + </fieldset> +</form> +<?php +} + +function bb_ksd_configuration_page_add() +{ + bb_admin_add_submenu( __( 'Akismet' ), 'use_keys', 'bb_ksd_configuration_page', 'options-general.php' ); +} +add_action( 'bb_admin_menu_generator', 'bb_ksd_configuration_page_add' ); + +function bb_ksd_configuration_page_process() +{ + if ( 'post' == strtolower( $_SERVER['REQUEST_METHOD'] ) && $_POST['action'] == 'update-akismet-settings') { + bb_check_admin_referer( 'options-akismet-update' ); + + $goback = remove_query_arg( array( 'invalid-akismet', 'updated-akismet' ), wp_get_referer() ); + + if ( !isset( $_POST['akismet_stats'] ) ) { + $_POST['akismet_stats'] = false; + } + + if ( true === (bool) $_POST['akismet_stats'] ) { + bb_update_option( 'akismet_stats', 1 ); + } else { + bb_delete_option( 'akismet_stats' ); + } + + if ( $_POST['akismet_key'] ) { + $value = stripslashes_deep( trim( $_POST['akismet_key'] ) ); + if ( $value ) { + if ( bb_akismet_verify_key( $value ) ) { + bb_update_option( 'akismet_key', $value ); + } else { + $goback = add_query_arg( 'invalid-akismet', 'true', $goback ); + bb_safe_redirect( $goback ); + exit; + } + } else { + bb_delete_option( 'akismet_key' ); + } + } else { + bb_delete_option( 'akismet_key' ); + } + + $goback = add_query_arg( 'updated-akismet', 'true', $goback ); + bb_safe_redirect( $goback ); + exit; + } + + if ( !empty( $_GET['updated-akismet'] ) ) { + bb_admin_notice( __( '<strong>Settings saved.</strong>' ) ); + } + + if ( !empty( $_GET['invalid-akismet'] ) ) { + bb_admin_notice( __( '<strong>The key you attempted to enter is invalid. Reverting to previous setting.</strong>' ), 'error' ); + } + + global $bb_admin_body_class; + $bb_admin_body_class = ' bb-admin-settings'; +} +add_action( 'bb_ksd_configuration_page_pre_head', 'bb_ksd_configuration_page_process' ); + +// Bail here if no key is set +if ( !bb_get_option( 'akismet_key' ) ) { + return; +} + +function bb_ksd_stats_script() +{ +?> +<style> + #bb-ksd-stats-frame { + -moz-box-shadow: 0 0 15px rgb(255, 255, 255); + -webkit-box-shadow: 0 0 15px rgb(255, 255, 255); + box-shadow: 0 0 15px rgb(255, 255, 255); + margin-top: 16px; + width: 100%; + height: 700px; + border-width: 0; + } +</style> +<script type="text/javascript"> + function resizeIframe() { + var height = document.documentElement.clientHeight; + height -= document.getElementById('bb-ksd-stats-frame').offsetTop; + height -= 60; + document.getElementById('bb-ksd-stats-frame').style.height = height +"px"; + }; + function resizeIframeInit() { + document.getElementById('bb-ksd-stats-frame').onload = resizeIframe; + window.onresize = resizeIframe; + } + addLoadEvent(resizeIframeInit); +</script> +<?php +} + +function bb_ksd_stats_display_pre_head() +{ + if ( !bb_get_option( 'akismet_stats' ) ) { + return; + } + add_action( 'bb_admin_head', 'bb_ksd_stats_script' ); +} +add_action( 'bb_ksd_stats_display_pre_head', 'bb_ksd_stats_display_pre_head' ); + +function bb_ksd_stats_display() +{ + $site = urlencode( bb_get_uri( null, null, BB_URI_CONTEXT_TEXT + BB_URI_CONTEXT_AKISMET ) ); + $url = "http://".bb_get_option( 'akismet_key' ).".web.akismet.com/1.0/user-stats.php?blog={$site}&type=forum"; +?> + <iframe src="<?php echo $url; ?>" id="bb-ksd-stats-frame"></iframe> +<?php +} + +function bb_ksd_stats_page() +{ + if ( !bb_get_option( 'akismet_stats' ) ) { + return; + } + if ( function_exists( 'bb_admin_add_submenu' ) ) { + bb_admin_add_submenu( __( 'Akismet Stats' ), 'moderate', 'bb_ksd_stats_display', 'index.php' ); + } +} +add_action( 'bb_admin_menu_generator', 'bb_ksd_stats_page' ); + +function bb_ksd_submit( $submit, $type = false ) +{ + global $bb_ksd_api_host; + global $bb_ksd_api_port; + + switch ( $type ) { + case 'ham': + case 'spam': + $path = '/1.1/submit-' . $type; + + $bb_post = bb_get_post( $submit ); + if ( !$bb_post ) { + return; + } + $user = bb_get_user( $bb_post->poster_id ); + if ( bb_is_trusted_user( $user->ID ) ) { + return; + } + + $_submit = array( + 'blog' => bb_get_uri( null, null, BB_URI_CONTEXT_TEXT + BB_URI_CONTEXT_AKISMET ), + 'user_ip' => $bb_post->poster_ip, + 'permalink' => get_topic_link( $bb_post->topic_id ), // First page + 'comment_type' => 'forum', + 'comment_author' => get_user_name( $user->ID ), + 'comment_author_email' => bb_get_user_email( $user->ID ), + 'comment_author_url' => get_user_link( $user->ID ), + 'comment_content' => $bb_post->post_text, + 'comment_date_gmt' => $bb_post->post_time + ); + break; + + case 'hammer': + case 'spammer': + $path = '/1.1/submit-' . substr( $type, 0, -3 ); + + $user = bb_get_user( $submit ); + if ( !$user ) { + return; + } + if ( bb_is_trusted_user( $user->ID ) ) { + return; + } + + $_submit = array( + 'blog' => bb_get_uri( null, null, BB_URI_CONTEXT_TEXT + BB_URI_CONTEXT_AKISMET ), + 'permalink' => get_user_profile_link( $user->ID ), + 'comment_type' => 'profile', + 'comment_author' => get_user_name( $user->ID ), + 'comment_author_email' => bb_get_user_email( $user->ID ), + 'comment_author_url' => get_user_link( $user->ID ), + 'comment_content' => $user->occ . ' ' . $user->interests, + 'comment_date_gmt' => $user->user_registered + ); + break; + + default: + if ( bb_is_trusted_user( bb_get_current_user() ) ) { + return; + } + + $path = '/1.1/comment-check'; + + $_submit = array( + 'blog' => bb_get_uri( null, null, BB_URI_CONTEXT_TEXT + BB_URI_CONTEXT_AKISMET ), + 'user_ip' => preg_replace( '/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR'] ), + 'user_agent' => $_SERVER['HTTP_USER_AGENT'], + 'referrer' => $_SERVER['HTTP_REFERER'], + 'comment_type' => isset($_POST['topic_id']) ? 'forum' : 'profile', + 'comment_author' => bb_get_current_user_info( 'name' ), + 'comment_author_email' => bb_get_current_user_info( 'email' ), + 'comment_author_url' => bb_get_current_user_info( 'url' ), + 'comment_content' => $submit + ); + if ( isset( $_POST['topic_id'] ) ) { + $_submit['permalink'] = get_topic_link( $_POST['topic_id'] ); // First page + } + break; + } + + $query_string = ''; + foreach ( $_submit as $key => $data ) { + $query_string .= $key . '=' . urlencode( stripslashes( $data ) ) . '&'; + } + return bb_ksd_http_post( $query_string, $bb_ksd_api_host, $path, $bb_ksd_api_port ); +} + +function bb_ksd_submit_ham( $post_id ) +{ + bb_ksd_submit( $post_id, 'ham' ); +} + +function bb_ksd_submit_spam( $post_id ) +{ + bb_ksd_submit( $post_id, 'spam' ); +} + +function bb_ksd_check_post( $post_text ) +{ + global $bb_ksd_pre_post_status, $bb_ksd_pre_post; + + $bb_ksd_pre_post = $post_text; + + return $post_text; +} +add_action( 'pre_post', 'bb_ksd_check_post', 1 ); + +function bb_ksd_check_profile( $user_id ) +{ + global $bb_current_user, $user_obj; + $bb_current_id = bb_get_current_user_info( 'id' ); + bb_set_current_user( $user_id ); + if ( $bb_current_id && $bb_current_id != $user_id ) { + if ( $user_obj->data->is_bozo && !$bb_current_user->data->is_bozo ) { + bb_ksd_submit( $user_id, 'hammer' ); + } + if ( !$user_obj->data->is_bozo && $bb_current_user->data->is_bozo ) { + bb_ksd_submit( $user_id, 'spammer' ); + } + } else { + $response = bb_ksd_submit( $bb_current_user->data->occ . ' ' . $bb_current_user->data->interests ); + if ( 'true' == $response[1] && function_exists( 'bb_bozon' ) ) { + bb_bozon( bb_get_current_user_info( 'id' ) ); + } + } + bb_set_current_user( (int) $bb_current_id ); +} +add_action( 'register_user', 'bb_ksd_check_profile', 1); +add_action( 'profile_edited', 'bb_ksd_check_profile', 1); + +function bb_ksd_new_post( $post_id ) +{ + global $bb_ksd_pre_post_status; + if ( '2' != $bb_ksd_pre_post_status ) { + return; + } + $bb_post = bb_get_post( $post_id ); + $topic = get_topic( $bb_post->topic_id ); + if ( 0 == $topic->topic_posts ) { + bb_delete_topic( $topic->topic_id, 2 ); + } +} +add_filter( 'bb_new_post', 'bb_ksd_new_post' ); + +function bb_akismet_delete_old() +{ + // Delete old every 20 + $n = mt_rand( 1, 20 ); + if ( $n % 20 ) { + return; + } + global $bbdb; + $now = bb_current_time( 'mysql' ); + $posts = (array) $bbdb->get_col( $bbdb->prepare( + "SELECT post_id FROM $bbdb->posts WHERE DATE_SUB(%s, INTERVAL 15 DAY) > post_time AND post_status = '2'", + $now + ) ); + foreach ( $posts as $post ) { + bb_delete_post( $post, 1 ); + } +} + +function bb_ksd_pre_post_status( $post_status ) +{ + global $bb_current_user, $bb_ksd_pre_post_status, $bb_ksd_pre_post; + + // Don't filter content from users with a trusted role + if ( in_array( $bb_current_user->roles[0], bb_trusted_roles() ) ) { + return $post_status; + } + + $response = bb_ksd_submit( $bb_ksd_pre_post ); + if ( 'true' == $response[1] ) { + $bb_ksd_pre_post_status = '2'; + return $bb_ksd_pre_post_status; + } + return $post_status; +} +add_filter( 'pre_post_status', 'bb_ksd_pre_post_status' ); + +function bb_ksd_delete_post( $post_id, $new_status, $old_status ) +{ + // Don't report post deletion + if ( 1 == $new_status ) { + return; + } + // Don't report no change in post status + if ( $new_status == $old_status ) { + return; + } + // It's being marked as spam, so report it + if ( 2 == $new_status ) { + bb_ksd_submit_spam( $post_id ); + return; + } + // It's not spam (and not being deleted), so it's ham now + if ( 2 == $old_status ) { + bb_ksd_submit_ham( $post_id ); + return; + } +} +add_action( 'bb_delete_post', 'bb_ksd_delete_post', 10, 3); + +function bb_ksd_post_delete_link( $parts, $args ) +{ + if ( !bb_current_user_can( 'moderate' ) ) { + return $parts; + } + $bb_post = bb_get_post( get_post_id( $args['post_id'] ) ); + + if ( 2 == $bb_post->post_status ) { + $query = array( + 'id' => $bb_post->post_id, + 'status' => 0, + 'view' => 'all' + ); + $display = __('Not Spam'); + } else { + $query = array( + 'id' => $bb_post->post_id, + 'status' => 2 + ); + $display = __('Spam'); + } + $uri = bb_get_uri( 'bb-admin/delete-post.php', $query, BB_URI_CONTEXT_A_HREF + BB_URI_CONTEXT_BB_ADMIN ); + $uri = esc_url( bb_nonce_url( $uri, 'delete-post_' . $bb_post->post_id ) ); + if ( !is_array( $parts ) ) { + $parts = array(); + $before = ''; + $after = ''; + } else { + $before = $args['last_each']['before']; + $after = $args['last_each']['after']; + } + + // Make sure that the last tag in $before gets a class (if it's there) + if ( preg_match( '/.*(<[^>]+>)[^<]*/', $before, $_node ) ) { + if ( preg_match( '/class=(\'|")(.*)\1/U', $_node[1], $_class ) ) { + $before = str_replace( $_class[0], 'class=' . $_class[1] . 'before-post-spam-link ' . $_class[2] . $_class[1], $before ); + } else { + $before = preg_replace( '/(.*)<([a-z0-9_-]+)(\s?)([^>]*)>([^<]*)/i', '$1<$2 class="before-post-spam-link"$3$4>$5', $before, 1 ); + } + } + + $parts[] = $before . '<a class="post-spam-link" href="' . $uri . '" >' . $display . '</a>' . $after; + return $parts; +} +add_filter( 'bb_post_admin', 'bb_ksd_post_delete_link', 10, 2 ); + +function bb_ksd_bulk_post_actions( &$bulk_actions, &$post_query ) { + $status = $post_query->get( 'post_status' ); + + $bulk_actions['unspam'] = __( 'Not Spam' ); + $bulk_actions['spam'] = __( 'Mark as Spam' ); + + if ( 2 == $status ) + unset( $bulk_actions['undelete'], $bulk_actions['spam'] ); + elseif ( is_numeric( $status ) ) + unset( $bulk_actions['unspam'] ); +} + +add_action( 'bulk_post_actions', 'bb_ksd_bulk_post_actions', 10, 2 ); + +function bb_ksd_bulk_post__action( $query_vars, $post_ids, $action ) { + $count = 0; + + switch ( $action ) { + case 'spam' : + foreach ( $post_ids as $post_id ) { + $count += (int) (bool) bb_delete_post( $post_id, 2 ); + } + return array( 'message' => 'spammed', 'count' => $count ); + case 'unspam' : + foreach ( $post_ids as $post_id ) { + $count += (int) (bool) bb_delete_post( $post_id, 0 ); + } + return array( 'message' => 'unspammed-normal', 'count' => $count ); + } +} + +add_action( 'bulk_post__spam', 'bb_ksd_bulk_post__action', 10, 3 ); +add_action( 'bulk_post__unspam', 'bb_ksd_bulk_post__action', 10, 3 ); + +function bb_ksd_add_post_status_to_forms( $stati, $type ) +{ + if ( 'post' === $type ) { + $stati['2'] = __( 'Spam' ); + } + return $stati; +} +add_filter( 'bb_query_form_post_status', 'bb_ksd_add_post_status_to_forms', 10, 2 ); + +function bb_ksd_post_del_class( $classes, $post_id, $post ) +{ + if ( '2' === (string) $post->post_status ) { + if ( $classes ) { + return $classes . ' spam'; + } + return 'spam'; + } + return $classes; +} +add_filter( 'post_del_class', 'bb_ksd_post_del_class', 10, 3 ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/bozo.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/bozo.php new file mode 100644 index 0000000..c48ed6c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/bozo.php @@ -0,0 +1,378 @@ +<?php +/* +Plugin Name: Bozo Users +Plugin URI: http://bbpress.org/ +Description: Allows moderators to mark certain users as a "bozo". Bozo users can post, but their content is only visible to themselves. +Author: Michael Adams +Version: 1.1 +Author URI: http://blogwaffe.com/ +*/ + +function bb_bozo_posts( $where ) { + if ( !$id = bb_get_current_user_info( 'id' ) ) + return $where; + + return preg_replace( + '/(\w+\.)?post_status = ["\']?0["\']?/', + "( \\1post_status = 0 OR \\1post_status > 1 AND \\1poster_id = '$id' )", + $where); +} + +function bb_bozo_topics( $where ) { + if ( !$id = bb_get_current_user_info( 'id' ) ) + return $where; + + return preg_replace( + '/(\w+\.)?topic_status = ["\']?0["\']?/', + "( \\1topic_status = 0 OR \\1topic_status > 1 AND \\1topic_poster = '$id' )", + $where); +} + +// Gets those users with the bozo bit. Does not grab users who have been bozoed on a specific topic. +// NOT bbdb::prepared +function bb_get_bozos( $page = 1 ) { + global $bbdb, $bb_last_countable_query; + $page = (int) $page; + $limit = (int) bb_get_option('page_topics'); + if ( 1 < $page ) + $limit = ($limit * ($page - 1)) . ", $limit"; + $bb_last_countable_query = "SELECT user_id FROM $bbdb->usermeta WHERE meta_key='is_bozo' AND meta_value='1' ORDER BY umeta_id DESC LIMIT $limit"; + if ( $ids = (array) $bbdb->get_col( $bb_last_countable_query ) ) + bb_cache_users( $ids ); + return $ids; +} + +function bb_current_user_is_bozo( $topic_id = false ) { + global $bb_current_user; + if ( bb_current_user_can('browse_deleted') && 'all' == @$_GET['view'] ) + return false; + $is_bozo = isset($bb_current_user->data->is_bozo) && $bb_current_user->data->is_bozo; + if ( !$topic_id || $is_bozo ) + return $is_bozo; + + global $topic; + $topic = get_topic( $topic_id ); + $id = bb_get_current_user_info( 'id' ); + return isset($topic->bozos[$id]) && $topic->bozos[$id]; +} + +function bb_bozo_pre_permalink() { + if ( bb_is_topic() ) + add_filter( 'get_topic_where', 'bb_bozo_topics' ); +} + +function bb_bozo_post_permalink() { + if ( bb_is_topic() ) + remove_filter( 'get_topic_where', 'bb_bozo_topics' ); +} + +function bb_bozo_latest_filter() { + global $bb_current_user; + if ( isset($bb_current_user->data->bozo_topics) && $bb_current_user->data->bozo_topics ) + add_filter( 'get_latest_topics_where', 'bb_bozo_topics' ); +} + +function bb_bozo_topic_db_filter() { + global $topic, $topic_id; + if ( bb_current_user_is_bozo( $topic->topic_id ? $topic->topic_id : $topic_id ) ) { + add_filter( 'get_thread_where', 'bb_bozo_posts' ); + add_filter( 'get_thread_post_ids_where', 'bb_bozo_posts' ); + } +} + +function bb_bozo_profile_db_filter() { + global $user; + if ( bb_get_current_user_info( 'id' ) == $user->ID && @is_array($user->bozo_topics) ) + add_filter( 'get_recent_user_replies_where', 'bb_bozo_posts' ); +} + +function bb_bozo_recount_topics() { + global $bbdb; + global $messages; + if ( isset($_POST['topic-bozo-posts']) && 1 == $_POST['topic-bozo-posts'] ): + $old = (array) $bbdb->get_col("SELECT object_id FROM $bbdb->meta WHERE object_type = 'bb_topic' AND meta_key = 'bozos'"); + $old = array_flip($old); + $messages[] = __('Counted the number of bozo posts in each topic'); + if ( $topics = (array) $bbdb->get_col("SELECT topic_id, poster_id, COUNT(post_id) FROM $bbdb->posts WHERE post_status > 1 GROUP BY topic_id, poster_id") ) : + $unique_topics = array_unique($topics); + $posters = (array) $bbdb->get_col('', 1); + $counts = (array) $bbdb->get_col('', 2); + foreach ($unique_topics as $i): + $bozos = array(); + $indices = array_keys($topics, $i); + foreach ( $indices as $index ) + $bozos[(int) $posters[$index]] = (int) $counts[$index]; + if ( $bozos ) : + bb_update_topicmeta( $i, 'bozos', $bozos ); + unset($indices, $index, $old[$i]); + endif; + endforeach; + unset($topics, $i, $counts, $posters, $bozos); + endif; + if ( $old ) : + $old = join(',', array_map('intval', array_flip($old))); + $bbdb->query("DELETE FROM $bbdb->meta WHERE object_type = 'bb_topic' AND object_id IN ($old) AND meta_key = 'bozos'"); + endif; + endif; +} + +function bb_bozo_recount_users() { + global $bbdb; + global $messages; + if ( isset($_POST['topics-replied-with-bozos']) && 1 == $_POST['topics-replied-with-bozos'] ) : + $messages[] = __('Counted each bozo user's total posts as well as the total topics to which they have replied'); + if ( $users = (array) $bbdb->get_col("SELECT ID FROM $bbdb->users") ) : + $no_bozos = array(); + $bozo_mkey = $bbdb->prefix . 'bozo_topics'; + foreach ( $users as $user ) : + $topics_replied = (int) $bbdb->get_var( $bbdb->prepare( + "SELECT COUNT(DISTINCT topic_id) FROM $bbdb->posts WHERE post_status = 0 AND poster_id = %d", + $user + ) ); + bb_update_usermeta( $user, $bbdb->prefix. 'topics_replied', $topics_replied ); + $bozo_keys = (array) $bbdb->get_col( $bbdb->prepare( + "SELECT topic_id, COUNT(post_id) FROM $bbdb->posts WHERE post_status > 1 AND poster_id = %d GROUP BY topic_id", + $user + ) ); + $bozo_values = (array) $bbdb->get_col('', 1); + if ( $c = count($bozo_keys) ) : + for ( $i=0; $i < $c; $i++ ) + $bozo_topics[(int) $bozo_keys[$i]] = (int) $bozo_values[$i]; + bb_update_usermeta( $user, $bozo_mkey, $bozo_topics ); + else : + $no_bozos[] = (int) $user; + endif; + endforeach; + if ( $no_bozos ) : + $no_bozos = join(',', $no_bozos); + $bbdb->query( $bbdb->prepare( + "DELETE FROM $bbdb->usermeta WHERE user_id IN ($no_bozos) AND meta_key = %s", + $bozo_mkey + ) ); + endif; + unset($users, $user, $topics_replied, $bozo_keys, $bozo_values, $bozo_topics); + endif; + endif; +} + +function bb_bozo_post_del_class( $classes, $post_id, $post ) +{ + if ( 1 < $post->post_status && bb_current_user_can('browse_deleted') ) { + if ( $classes ) { + return $classes . ' bozo'; + } + return 'bozo'; + } + return $classes; +} + +function bb_bozo_add_recount_list() { + global $recount_list; + $recount_list[21] = array('topics-replied-with-bozos', __('Count each bozo user's total posts as well as the total topics to which they have replied'), 'bb_bozo_recount_users'); + $recount_list[22] = array('topic-bozo-posts', __('Count the number of bozo posts in each topic'), 'bb_bozo_recount_topics'); + return; +} + +function bb_bozo_topic_pages_add( $add ) { + global $topic; + if ( isset($_GET['view']) && 'all' == $_GET['view'] && bb_current_user_can('browse_deleted') ) : + $add += @array_sum($topic->bozos); + endif; + if ( bb_current_user_is_bozo( $topic->topic_id ) ) + $add += $topic->bozos[bb_get_current_user_info( 'id' )]; + return $add; +} + +function bb_bozo_get_topic_posts( $topic_posts ) { + global $topic; + if ( bb_current_user_is_bozo( $topic->topic_id ) ) + $topic_posts += $topic->bozos[bb_get_current_user_info( 'id' )]; + return $topic_posts; +} + +function bb_bozo_new_post( $post_id ) { + $bb_post = bb_get_post( $post_id ); + if ( 1 < $bb_post->post_status ) + bb_bozon( $bb_post->poster_id, $bb_post->topic_id ); + $topic = get_topic( $bb_post->topic_id, false ); + if ( 0 == $topic->topic_posts ) + bb_delete_topic( $topic->topic_id, 2 ); +} + +function bb_bozo_pre_post_status( $status, $post_id, $topic_id ) { + if ( !$post_id && bb_current_user_is_bozo() ) + $status = 2; + elseif ( bb_current_user_is_bozo( $topic_id ) ) + $status = 2; + return $status; +} + +function bb_bozo_delete_post( $post_id, $new_status, $old_status ) { + $bb_post = bb_get_post( $post_id ); + if ( 1 < $new_status && 2 > $old_status ) + bb_bozon( $bb_post->poster_id, $bb_post->topic_id ); + elseif ( 2 > $new_status && 1 < $old_status ) + bb_fermion( $bb_post->poster_id, $bb_post->topic_id ); +} + +function bb_bozon( $user_id, $topic_id = 0 ) { + global $bbdb; + + $user_id = (int) $user_id; + $topic_id = (int) $topic_id; + + if ( !$topic_id ) + bb_update_usermeta( $user_id, 'is_bozo', 1 ); + else { + $topic = get_topic( $topic_id ); + $user = bb_get_user( $user_id ); + + $bozo_topics_key = $bbdb->prefix . 'bozo_topics'; + + if ( isset($topic->bozos[$user_id]) ) + $topic->bozos[$user_id]++; + elseif ( is_array($topic->bozos) ) + $topic->bozos[$user_id] = 1; + else + $topic->bozos = array($user_id => 1); + bb_update_topicmeta( $topic_id, 'bozos', $topic->bozos ); + + if ( isset($user->{$bozo_topics_key}[$topic_id]) ) + $user->{$bozo_topics_key}[$topic_id]++; + elseif ( is_array($user->bozo_topics) ) + $user->{$bozo_topics_key}[$topic_id] = 1; + else + $user->$bozo_topics_key = array($topic_id => 1); + bb_update_usermeta( $user_id, $bozo_topics_key, $user->$bozo_topics_key ); + } +} + +function bb_fermion( $user_id, $topic_id = 0 ) { + global $bbdb; + + $user_id = (int) $user_id; + $topic_id = (int) $topic_id; + + if ( !$topic_id ) + bb_delete_usermeta( $user_id, 'is_bozo' ); + else { + $topic = get_topic( $topic_id ); + $user = bb_get_user( $user_id ); + + $bozo_topics_key = $bbdb->prefix . 'bozo_topics'; + + if ( --$topic->bozos[$user_id] < 1 ) + unset($topic->bozos[$user_id]); + bb_update_topicmeta( $topic_id, 'bozos', $topic->bozos ); + + if ( --$user->{$bozo_topics_key}[$topic_id] < 1 ) + unset($user->{$bozo_topics_key}[$topic_id]); + bb_update_usermeta( $user_id, $bozo_topics_key, $user->$bozo_topics_key ); + } +} + +function bb_bozo_profile_admin_keys( $a ) { + $a['is_bozo'] = array( + 0, // Required + __('This user is a bozo'), // Label + 'checkbox', // Type + '1', // Value + '' // Default when not set + ); + return $a; +} + + + +function bb_bozo_get_bozo_user_ids() +{ + global $bbdb; + $sql = "SELECT `user_id` FROM `$bbdb->usermeta` WHERE `meta_key` = 'is_bozo' AND `meta_value` = '1';"; + $user_ids = $bbdb->get_col( $sql, 0 ); + if ( is_wp_error( $user_ids ) || empty( $user_ids ) ) { + return false; + } + return $user_ids; +} + +function bb_bozo_user_search_description( $description, $h2_search, $h2_role, $user_search_object ) +{ + if ( is_array( $user_search_object->roles ) && in_array( 'bozo', $user_search_object->roles ) ) { + return sprintf( '%1$s%2$s that are bozos', $h2_search, $h2_role ); + } + return $description; +} +add_filter( 'bb_user_search_description', 'bb_bozo_user_search_description', 10, 4 ); + +function bb_bozo_user_search_form_add_inputs( $r, $user_search_object ) +{ + $checked = ''; + if ( is_array( $user_search_object->roles ) && in_array( 'bozo', $user_search_object->roles ) ) { + $checked = ' checked="checked"'; + } + + $r .= "\t" . '<div>' . "\n"; + $r .= "\t\t" . '<label for="userbozo">' . __('Bozos only') . '</label>' . "\n"; + $r .= "\t\t" . '<div>' . "\n"; + $r .= "\t\t\t" . '<input class="checkbox-input" type="checkbox" name="userrole[]" id="userbozo" value="bozo"' . $checked . ' />' . "\n"; + $r .= "\t\t" . '</div>' . "\n"; + $r .= "\t" . '</div>' . "\n"; + + return $r; +} +add_filter( 'bb_user_search_form_inputs', 'bb_bozo_user_search_form_add_inputs', 10, 2 ); + +function bb_bozo_user_search_role_user_ids( $role_user_ids, $roles, $args ) +{ + if ( !in_array( 'bozo', $roles ) ) { + return $role_user_ids; + } + + $bozo_user_ids = bb_bozo_get_bozo_user_ids(); + + if ( 1 === count( $roles ) ) { + return $bozo_user_ids; + } + + global $bbdb; + $role_meta_key = $bbdb->escape( $bbdb->prefix . 'capabilities' ); + $role_sql_terms = array(); + foreach ( $roles as $role ) { + if ( 'bozo' === $role ) { + continue; + } + $role_sql_terms[] = "`meta_value` LIKE '%" . $bbdb->escape( like_escape( $role ) ) . "%'"; + } + $role_sql_terms = join( ' OR ', $role_sql_terms ); + $role_sql = "SELECT `user_id` FROM `$bbdb->usermeta` WHERE `meta_key` = '$role_meta_key' AND ($role_sql_terms);"; + $role_user_ids = $bbdb->get_col( $role_sql, 0 ); + if ( is_wp_error( $role_user_ids ) || empty( $role_user_ids ) ) { + return array(); + } + + return array_intersect( $bozo_user_ids, $role_user_ids ); +} +add_filter( 'bb_user_search_role_user_ids', 'bb_bozo_user_search_role_user_ids', 10, 3 ); + + + + +add_filter( 'pre_post_status', 'bb_bozo_pre_post_status', 5, 3 ); +add_action( 'bb_new_post', 'bb_bozo_new_post', 5 ); +add_action( 'bb_delete_post', 'bb_bozo_delete_post', 5, 3 ); + +add_action( 'pre_permalink', 'bb_bozo_pre_permalink' ); +add_action( 'post_permalink', 'bb_bozo_post_permalink' ); +add_action( 'bb_index.php_pre_db', 'bb_bozo_latest_filter' ); +add_action( 'bb_forum.php_pre_db', 'bb_bozo_latest_filter' ); +add_action( 'bb_topic.php_pre_db', 'bb_bozo_topic_db_filter' ); +add_action( 'bb_profile.php_pre_db', 'bb_bozo_profile_db_filter' ); + +add_action( 'bb_recount_list', 'bb_bozo_add_recount_list' ); +add_action( 'topic_pages_add', 'bb_bozo_topic_pages_add' ); + +add_filter( 'post_del_class', 'bb_bozo_post_del_class', 10, 3 ); +add_filter( 'get_topic_posts', 'bb_bozo_get_topic_posts' ); + +add_filter( 'get_profile_admin_keys', 'bb_bozo_profile_admin_keys' ); +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/hello.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/hello.php new file mode 100644 index 0000000..4ab4d43 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/hello.php @@ -0,0 +1,84 @@ +<?php +/** + * @package Hello_Louie + * @author Matt Mullenweg + * @version 1.0 + */ +/* +Plugin Name: Hello Louie +Plugin URI: http://bbpress.org/ +Description: A tip of the hat to the venerable Hello Dolly plugin from WordPress. When activated you will randomly see a lyric from Frank Sinatra's 1964 rendition of "Hello Dolly" in the upper right of your admin screen on every page. This version includes a rewritten second verse as a tribute to Louis Armstrong. +Author: Matt Mullenweg +Version: 1.0 +Author URI: http://ma.tt/ +*/ + +function hello_louie_get_lyric() { + /** These are the lyrics to Frank Sinatra's version of "Hello Dolly" from the album "It Might as Well Be Swing" */ + $lyrics = "Hello Dolly +Well hello Dolly +It's so nice to have you back where you belong +You're lookin' swell, Dolly +We can tell, Dolly +You're still glowin', you're still crowin' +You're still goin' strong +We feel the room swayin' +'Cause the band's playin' +One of your old favorite songs from way back when +Take her wrap, fellas +Find her an empty lap, fellas +Dolly'll never go away +Dolly'll never go away +Hello Satch +This is Francis, Louie +It's so nice to see you back where you belong +You're back on top, Louie +Never stop, Louie +You're still singin', you're still swingin' +You're still goin' strong +You get the room swayin' +When you start in playin' +One of your great songs, or songs from way back when +Blow your horn, Louie +Sing up a great big song, Louie +Promise you won't go away +Promise you won't go away +Promise you won't go away again, ooh yeah"; + + // Here we split it into lines + $lyrics = explode("\n", $lyrics); + + // And then randomly choose a line + return wptexturize( $lyrics[ mt_rand(0, count($lyrics) - 1) ] ); +} + +// This just echoes the chosen line, we'll position it later +function hello_louie() { + $chosen = hello_louie_get_lyric(); + echo "<p id='dolly'>$chosen</p>"; +} + +// Now we set that function up to execute when the admin_footer action is called +add_action('bb_admin_footer', 'hello_louie'); + +// We need some CSS to position the paragraph +function louie_css() { + // This makes sure that the positioning is also good for right-to-left languages + global $bb_locale; + $x = ( isset( $bb_locale->text_direction ) && 'rtl' == $bb_locale->text_direction ) ? 'left' : 'right'; + + echo " + <style type='text/css'> + #dolly { + position: absolute; + top: 4.4em; + margin: 0; + padding: 0; + $x: 15px; + font-size: 11px; + } + </style> + "; +} + +add_action('bb_admin_head', 'louie_css'); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/readme.txt b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/readme.txt new file mode 100644 index 0000000..1458032 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-plugins/readme.txt @@ -0,0 +1,3 @@ +This directory is reserved for plugins distributed with the bbPress core package. + +If you wish to install more plugins, you should create a new directory called "my-plugins" in the base directory of your bbPress installation and install them there, not here. \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-post.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-post.php new file mode 100644 index 0000000..5d40d1f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-post.php @@ -0,0 +1,91 @@ +<?php +require( './bb-load.php' ); + +if ( bb_is_login_required() ) + bb_auth( 'logged_in' ); + +bb_check_post_flood(); + +if ( !$post_content = trim( $_POST['post_content'] ) ) + bb_die( __( 'You need to actually submit some content!' ) ); + +$post_author = $post_email = $post_url = ''; + +if ( !bb_is_user_logged_in() ) { + if ( bb_is_login_required() ) { + bb_die( __( 'You are not allowed to post. Are you logged in?' ) ); + } else { + if ( !$post_author = sanitize_user( trim( $_POST['author'] ) ) ) + bb_die( __( 'You need to submit your name!' ) ); + elseif ( !$post_email = sanitize_email( trim( $_POST['email'] ) ) ) + bb_die( __( 'You need to submit a valid email address!' ) ); + + if ( !empty( $_POST['url'] ) ) + $post_url = esc_url( trim( $_POST['url'] ) ); + } +} + + + +if ( isset($_POST['topic']) && $forum_id = (int) $_POST['forum_id'] ) { + if ( bb_is_login_required() && ! bb_current_user_can('write_posts') ) + bb_die(__('You are not allowed to post. Are you logged in?')); + + if ( bb_is_login_required() && ! bb_current_user_can( 'write_topic', $forum_id ) ) + bb_die(__('You are not allowed to write new topics.')); + + bb_check_admin_referer( 'create-topic' ); + + $topic = trim( $_POST['topic'] ); + $tags = trim( $_POST['tags'] ); + + if ('' == $topic) + bb_die(__('Please enter a topic title')); + + $args = array(); + + if ( isset( $post_author ) ) + $args['topic_poster_name'] = $args['topic_last_poster_name'] = $post_author; + + $topic_id = bb_new_topic( $topic, $forum_id, $tags, $args ); + +} elseif ( isset($_POST['topic_id'] ) ) { + $topic_id = (int) $_POST['topic_id']; + bb_check_admin_referer( 'create-post_' . $topic_id ); +} + +if ( bb_is_login_required() && ! bb_current_user_can( 'write_post', $topic_id ) ) + bb_die(__('You are not allowed to post. Are you logged in?')); + +if ( !topic_is_open( $topic_id ) ) + bb_die(__('This topic has been closed')); + +$post_data = array( + 'post_text' => stripslashes($_POST['post_content']), + 'topic_id' => $topic_id, +); + +foreach( array('post_author', 'post_email', 'post_url') as $field ) { + if ( ! empty( $$field ) ) { + $post_data[$field] = $$field; + } +} + +$post_id = bb_insert_post($post_data); + +$tags = trim( $_POST['tags'] ); +bb_add_topic_tags( $topic_id, $tags ); + +$topic = get_topic( $topic_id, false ); +$link = get_post_link($post_id); + +if ( $topic->topic_posts ) + $link = add_query_arg( 'replies', $topic->topic_posts, $link ); + +// This action used to be bb_post.php, changed to avoid conflict in bb_load_template() +do_action( 'bb-post.php', $post_id ); +if ($post_id) + wp_redirect( $link ); +else + wp_redirect( bb_get_uri(null, null, BB_URI_CONTEXT_HEADER) ); +exit; diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-reset-password.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-reset-password.php new file mode 100644 index 0000000..87b74a8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-reset-password.php @@ -0,0 +1,24 @@ +<?php +require('./bb-load.php'); + +$error = false; + +if ( $_POST ) { + $action = 'send_key'; + $user_login = sanitize_user( $_POST['user_login'], true ); + if ( empty( $user_login ) ) { + $error = __('No username specified'); + } else { + $send_key_result = bb_reset_email( $user_login ); + if ( is_wp_error( $send_key_result ) ) + $error = $send_key_result->get_error_message(); + } +} elseif ( isset( $_GET['key'] ) ) { + $action = 'reset_password'; + $reset_pasword_result = bb_reset_password( $_GET['key'] ); + if ( is_wp_error( $reset_pasword_result ) ) + $error = $reset_pasword_result->get_error_message(); +} + +bb_load_template( 'password-reset.php', array('action', 'error') ); +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-settings.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-settings.php new file mode 100644 index 0000000..608663c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-settings.php @@ -0,0 +1,1242 @@ +<?php +/** + * Used to setup and fix common variables and include + * the bbPress and BackPress procedural and class libraries. + * + * You should not have to change this file, all configuration + * should be possible in bb-config.php + * + * @package bbPress + */ + + + +// Die if called directly +if ( !defined( 'BB_PATH' ) ) { + die( 'This file cannot be called directly.' ); +} + +// Set default timezone in PHP 5. +if ( function_exists( 'date_default_timezone_set' ) ) + date_default_timezone_set( 'UTC' ); + +/** + * bb_unregister_GLOBALS() - Turn register globals off + * + * @access private + * @return null Will return null if register_globals PHP directive was disabled + */ +function bb_unregister_GLOBALS() +{ + if ( !ini_get( 'register_globals' ) ) { + return; + } + + if ( isset($_REQUEST['GLOBALS']) ) { + die( 'GLOBALS overwrite attempt detected' ); + } + + // Variables that shouldn't be unset + $noUnset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'bb_table_prefix', 'bb' ); + + $input = array_merge( $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset( $_SESSION ) && is_array( $_SESSION ) ? $_SESSION : array() ); + foreach ( $input as $k => $v ) { + if ( !in_array( $k, $noUnset ) && isset( $GLOBALS[$k] ) ) { + $GLOBALS[$k] = NULL; + unset( $GLOBALS[$k] ); + } + } +} +bb_unregister_GLOBALS(); + + + +/** + * Let bbPress know what we are up to at the moment + */ + +/** + * Whether the current script is in the admin area or not + */ +if ( !defined( 'BB_IS_ADMIN' ) ) { + define( 'BB_IS_ADMIN', false ); +} elseif ( BB_IS_ADMIN ) { + $bb_hardcoded = (array) $bb; +} + +/** + * Whether the current script is part of the installation process or not + * @since 1.0 + */ +if ( !defined( 'BB_INSTALLING' ) ) { + define( 'BB_INSTALLING', false ); +} + +/** + * Whether to load deprecated routines, constants and functions + * @since 1.0 + */ +if ( !defined( 'BB_LOAD_DEPRECATED' ) ) { + define( 'BB_LOAD_DEPRECATED', true ); +} + + + +/** + * Remove filters and action that have been set by an included WordPress install + */ +if ( defined( 'ABSPATH' ) ) { + $wp_filter = array(); + $wp_actions = array(); + $merged_filters = array(); + $wp_current_filter = array(); +} + + + +/** + * Define include paths and load core BackPress libraries + */ + +/** + * The full path to the BackPress libraries + */ +if ( !defined( 'BACKPRESS_PATH' ) ) { + define( 'BACKPRESS_PATH', BB_PATH . BB_INC . 'backpress/' ); +} + +// Load logging class +require_once( BACKPRESS_PATH . 'class.bp-log.php' ); +$bb_log = new BP_Log(); +if ( defined( 'BB_LOG_LEVEL' ) ) { + $bb_log->set_level( BB_LOG_LEVEL ); +} +if ( defined( 'BB_LOG_TYPE' ) ) { + $bb_log->set_type( BB_LOG_TYPE ); +} +if ( defined( 'BB_LOG_FILENAME' ) ) { + $bb_log->set_filename( BB_LOG_FILENAME ); +} +$bb_log->notice('Logging started'); + +// Load core BackPress functions +require_once( BACKPRESS_PATH . 'functions.core.php' ); +require_once( BACKPRESS_PATH . 'functions.compat.php' ); +require_once( BACKPRESS_PATH . 'functions.formatting.php' ); + +// WP_Error +if ( !class_exists( 'WP_Error' ) ) { + require_once( BACKPRESS_PATH . 'class.wp-error.php' ); +} + + + +/** + * Set up database parameters based on config and initialise + */ + +/** + * Define the full path to the database class + */ +if ( !defined( 'BB_DATABASE_CLASS_INCLUDE' ) ) { + define( 'BB_DATABASE_CLASS_INCLUDE', BACKPRESS_PATH . 'class.bpdb-multi.php' ); +} + +/** + * Define the name of the database class + */ +if ( !defined( 'BB_DATABASE_CLASS' ) ) { + define( 'BB_DATABASE_CLASS', 'BPDB_Multi' ); +} + +if ( in_array( BB_DATABASE_CLASS, array( 'BPDB', 'BPDB_Multi' ) ) ) { + /** + * Define BackPress Database errors if not already done - no localisation at this stage + */ + if ( !defined( 'BPDB__CONNECT_ERROR_MESSAGE' ) ) { + define( 'BPDB__CONNECT_ERROR_MESSAGE', 'ERROR: Could not establish a database connection' ); + } + if ( !defined( 'BPDB__CONNECT_ERROR_MESSAGE' ) ) { + define( 'BPDB__SELECT_ERROR_MESSAGE', 'ERROR: Can\'t select database.' ); + } + if ( !defined( 'BPDB__ERROR_STRING' ) ) { + define( 'BPDB__ERROR_STRING', 'ERROR: bbPress database error - "%s" for query "%s" via caller "%s"' ); + } + if ( !defined( 'BPDB__ERROR_HTML' ) ) { + define( 'BPDB__ERROR_HTML', '<div id="error"><p class="bpdberror"><strong>Database error:</strong> [%s]<br /><code>%s</code><br />Caller: %s</p></div>' ); + } + if ( !defined( 'BPDB__DB_VERSION_ERROR' ) ) { + define( 'BPDB__DB_VERSION_ERROR', 'ERROR: bbPress requires MySQL 4.0.0 or higher' ); + } + if ( !defined( 'BPDB__PHP_EXTENSION_MISSING' ) ) { + define( 'BPDB__PHP_EXTENSION_MISSING', 'ERROR: bbPress requires The MySQL PHP extension' ); + } +} + +// Load the database class +if ( BB_DATABASE_CLASS_INCLUDE ) { + require_once( BB_DATABASE_CLASS_INCLUDE ); +} + +// Die if there is no database table prefix +if ( !$bb_table_prefix ) { + die( 'You must specify a table prefix in your <code>bb-config.php</code> file.' ); +} + +// Setup the global database connection +$bbdb_class = BB_DATABASE_CLASS; +$bbdb =& new $bbdb_class( array( + 'name' => BBDB_NAME, + 'user' => BBDB_USER, + 'password' => BBDB_PASSWORD, + 'host' => BBDB_HOST, + 'charset' => defined( 'BBDB_CHARSET' ) ? BBDB_CHARSET : false, + 'collate' => defined( 'BBDB_COLLATE' ) ? BBDB_COLLATE : false +) ); +unset( $bbdb_class ); + +/** + * bbPress tables + */ +$bbdb->tables = array( + 'forums' => false, + 'meta' => false, + 'posts' => false, + 'tagged' => false, // Deprecated + 'tags' => false, // Deprecated + 'terms' => false, + 'term_relationships' => false, + 'term_taxonomy' => false, + 'topics' => false, + 'topicmeta' => false, // Deprecated + 'users' => false, + 'usermeta' => false +); + +// Set the prefix on the tables +if ( is_wp_error( $bbdb->set_prefix( $bb_table_prefix ) ) ) { + die( 'Your table prefix may only contain letters, numbers and underscores.' ); +} + +// Set a site id if there isn't one already +if ( !isset( $bb->site_id ) ) { + $bb->site_id = 1; +} + + + +/** + * Load core bbPress libraries + */ + +require_once( BB_PATH . BB_INC . 'functions.bb-core.php' ); +require_once( BB_PATH . BB_INC . 'functions.bb-forums.php' ); +require_once( BB_PATH . BB_INC . 'functions.bb-topics.php' ); +require_once( BB_PATH . BB_INC . 'functions.bb-posts.php' ); +require_once( BB_PATH . BB_INC . 'functions.bb-topic-tags.php' ); +require_once( BB_PATH . BB_INC . 'functions.bb-users.php' ); +require_once( BB_PATH . BB_INC . 'functions.bb-meta.php' ); +require_once( BB_PATH . BB_INC . 'class.bb-query.php' ); +require_once( BB_PATH . BB_INC . 'class.bb-walker.php' ); + + + +/** + * Load API and object handling BackPress libraries + */ + +// Plugin API +if ( !function_exists( 'add_filter' ) ) { + require_once( BACKPRESS_PATH . 'functions.plugin-api.php' ); +} + +// Shortcodes API +if ( !function_exists( 'add_shortcode' ) ) { + require_once( BACKPRESS_PATH . 'functions.shortcodes.php' ); +} else { + remove_all_shortcodes(); +} + + + +/** + * Define the full path to the object cache functions include + */ +$_internal_object_cache_functions_include = BACKPRESS_PATH . 'loader.wp-object-cache.php'; +$_memcached_object_cache_functions_include = BACKPRESS_PATH . 'loader.wp-object-cache-memcached.php'; +if ( !defined( 'BB_OBJECT_CACHE_FUNCTIONS_INCLUDE' ) ) { + if ( defined( 'BB_OBJECT_CACHE_TYPE' ) && 'memcached' === BB_OBJECT_CACHE_TYPE ) { + define( 'BB_OBJECT_CACHE_FUNCTIONS_INCLUDE', $_memcached_object_cache_functions_include ); + } else { + define( 'BB_OBJECT_CACHE_FUNCTIONS_INCLUDE', $_internal_object_cache_functions_include ); + } +} + +// See if a caching class is already loaded (by WordPress) +if ( function_exists( 'wp_cache_init' ) ) { + if ( isset( $_wp_using_ext_object_cache ) ) { + $_bb_using_ext_object_cache = $_wp_using_ext_object_cache; + } else { + $_bb_using_ext_object_cache = false; + } +} elseif ( BB_OBJECT_CACHE_FUNCTIONS_INCLUDE ) { + // Load the object cache class + require_once( BB_OBJECT_CACHE_FUNCTIONS_INCLUDE ); + if ( BB_OBJECT_CACHE_FUNCTIONS_INCLUDE === $_internal_object_cache_functions_include ) { + $_bb_using_ext_object_cache = false; + } else { + $_bb_using_ext_object_cache = true; + } +} +unset( $_internal_object_cache_functions_include ); + +// Instantiate the $wp_object_cache object using wp_cache_init() +if ( function_exists( 'wp_cache_init' ) ) { + // Clear WordPress cache if it exists already - maybe should save and re-load? + unset( $wp_object_cache ); + wp_cache_init(); + if ( function_exists( 'wp_cache_add_global_groups' ) ) { + wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'useremail', 'usernicename' ) ); + } +} + + + +/** + * Load mapping class for BackPress to store options + */ +require_once( BB_PATH . BB_INC . 'class.bp-options.php' ); +require_once( BACKPRESS_PATH . 'functions.bp-options.php' ); + + + +/** + * Load WP_Http class + */ +if ( !class_exists( 'WP_Http' ) ) { + require_once( BACKPRESS_PATH . 'class.wp-http.php' ); +} + + + +/** + * Determine language settings and load i10n libraries as required + */ + +/** + * The full path to the directory containing language files + */ +if ( !defined( 'BB_LANG_DIR' ) ) { + if ( BB_LOAD_DEPRECATED && defined( 'BBLANGDIR' ) ) { + // User has set old constant + bb_log_deprecated( 'constant', 'BBLANGDIR', 'BB_LANG_DIR' ); + define( 'BB_LANG_DIR', BBLANGDIR ); + } else { + define( 'BB_LANG_DIR', BB_PATH . 'my-languages/' ); // absolute path with trailing slash + } +} + +/** + * The language in which to display bbPress + */ +if ( BB_LOAD_DEPRECATED && !defined( 'BB_LANG' ) && defined( 'BBLANG' ) && '' != BBLANG ) { + // User has set old constant + bb_log_deprecated( 'constant', 'BBLANG', 'BB_LANG' ); + define( 'BB_LANG', BBLANG ); +} +if ( !class_exists( 'MO' ) ) { + require_once( BACKPRESS_PATH . 'pomo/mo.php' ); +} + +// Is WordPress loaded +if ( !defined( 'BB_IS_WP_LOADED') ) { + define( 'BB_IS_WP_LOADED', defined( 'DB_NAME' ) ); +} + +// Only load this if WordPress isn't loaded +if ( !BB_IS_WP_LOADED ) { + require_once( BACKPRESS_PATH . 'functions.kses.php' ); +} +require_once( BB_PATH . BB_INC . 'functions.bb-l10n.php' ); + + + +/** + * Routines related to installation + */ + +// Load BB_CHANNELS_INCLUDE if it exists, must be done before the install is completed +if ( defined( 'BB_CHANNELS_INCLUDE' ) && file_exists( BB_CHANNELS_INCLUDE ) && !is_dir( BB_CHANNELS_INCLUDE ) ) { + require_once( BB_CHANNELS_INCLUDE ); +} + +// If there is no forum table in the database then redirect to the installer +if ( !BB_INSTALLING && !bb_is_installed() ) { + $link = preg_replace( '|(/bb-admin)?/[^/]+?$|', '/', $_SERVER['PHP_SELF'] ) . 'bb-admin/install.php'; + require_once( BB_PATH . BB_INC . 'functions.bb-pluggable.php' ); + wp_redirect( $link ); + die(); +} + +// Setup some variables in the $bb class if they don't exist - some of these are deprecated +if ( BB_LOAD_DEPRECATED ) { + foreach ( array( 'use_cache' => false, 'debug' => false ) as $o => $oo ) { + if ( !isset( $bb->$o ) ) { + $bb->$o = $oo; + } else { + bb_log_deprecated( 'variable', '$bb->' . $o ); + } + } + unset( $o, $oo ); +} + +// Disable plugins during installation +if ( BB_INSTALLING ) { + foreach ( array('active_plugins') as $i ) { + $bb->$i = false; + } + unset( $i ); +} + + + +/** + * Load additional bbPress libraries + */ + +require_once( BB_PATH . BB_INC . 'functions.bb-formatting.php' ); +require_once( BB_PATH . BB_INC . 'functions.bb-template.php' ); +require_once( BB_PATH . BB_INC . 'functions.bb-capabilities.php' ); +require_once( BB_PATH . BB_INC . 'class.bb-pingbacks.php' ); + + + +// Cache options from the database +if ( !isset( $bb->load_options ) ) { + $bb->load_options = true; +} +if ( $bb->load_options ) { + $bbdb->suppress_errors(); + bb_cache_all_options(); + $bbdb->suppress_errors( false ); +} + +/** + * Set the URI and derivitaves + */ +if ( $bb->uri = bb_get_option( 'uri' ) ) { + $bb->uri = rtrim( trim( $bb->uri ), " \t\n\r\0\x0B/" ) . '/'; + + if ( preg_match( '@^(https?://[^/]+)((?:/.*)*/{1,1})$@i', $bb->uri, $matches ) ) { + // Used when setting up cookie domain + $bb->domain = $matches[1]; + // Used when setting up cookie paths + $bb->path = $matches[2]; + } + unset( $matches ); +} elseif ( BB_LOAD_DEPRECATED ) { + // Backwards compatibility + // These were never set in the database + if ( isset( $bb->domain ) ) { + bb_log_deprecated( 'variable', '$bb->domain', '$bb->uri' ); + $bb->domain = rtrim( trim( $bb->domain ), " \t\n\r\0\x0B/" ); + } + if ( isset( $bb->path ) ) { + bb_log_deprecated( 'variable', '$bb->path', '$bb->uri' ); + $bb->path = trim( $bb->path ); + if ( $bb->path != '/' ) $bb->path = '/' . trim( $bb->path, " \t\n\r\0\x0B/" ) . '/'; + } + // We need both to build a uri + if ( $bb->domain && $bb->path ) { + $bb->uri = $bb->domain . $bb->path; + } +} + +// Die if no URI +if ( !BB_INSTALLING && !$bb->uri ) { + bb_die( __( 'Could not determine site URI' ) ); +} + +/** + * BB_FORCE_SSL_USER_FORMS - Whether to force use of ssl on user forms like login, registration and profile editing + */ +if ( !defined( 'BB_FORCE_SSL_USER_FORMS' ) ) { + define( 'BB_FORCE_SSL_USER_FORMS', false ); +} +force_ssl_login( BB_FORCE_SSL_USER_FORMS ); + +/** + * BB_FORCE_SSL_ADMIN - Whether to force use of ssl in the admin area + */ +if ( !defined( 'BB_FORCE_SSL_ADMIN' ) ) { + define( 'BB_FORCE_SSL_ADMIN', false ); +} +force_ssl_admin( BB_FORCE_SSL_ADMIN ); + +// Load default filters +require_once( BB_PATH . BB_INC . 'defaults.bb-filters.php' ); + +// Load default scripts +require_once( BB_PATH . BB_INC . 'functions.bb-script-loader.php' ); + +/* Check if the globals have been sanitized by WordPress or not (else there would be extra slashes while deep integration) */ +if ( !function_exists( 'wp_magic_quotes' ) ) { + // Sanitise external input + $_GET = bb_global_sanitize( $_GET ); + $_POST = bb_global_sanitize( $_POST ); + $_COOKIE = bb_global_sanitize( $_COOKIE, false ); + $_SERVER = bb_global_sanitize( $_SERVER ); +} + + +/** + * Define theme and plugin constants + */ + +/** + * Full path to the location of the core plugins directory + */ +define( 'BB_CORE_PLUGIN_DIR', BB_PATH . 'bb-plugins/' ); + +/** + * Full URL of the core plugins directory + */ +define( 'BB_CORE_PLUGIN_URL', $bb->uri . 'bb-plugins/' ); + +/** + * Full path to the location of the core themes directory + */ +define( 'BB_CORE_THEME_DIR', BB_PATH . 'bb-templates/' ); + +/** + * Full URL of the core themes directory + */ +define( 'BB_CORE_THEME_URL', $bb->uri . 'bb-templates/' ); + +/** + * The default theme + */ +define( 'BB_DEFAULT_THEME', 'core#kakumei' ); + +/** + * Full path to the location of the default theme directory + */ +define( 'BB_DEFAULT_THEME_DIR', BB_CORE_THEME_DIR . 'kakumei/' ); + +/** + * Full URL of the default theme directory + */ +define( 'BB_DEFAULT_THEME_URL', BB_CORE_THEME_URL . 'kakumei/' ); + +/** + * Full path to the location of the user plugins directory + */ +if ( !defined( 'BB_PLUGIN_DIR' ) ) { + if ( BB_LOAD_DEPRECATED && defined( 'BBPLUGINDIR' ) ) { + // User has set old constant + bb_log_deprecated( 'constant', 'BBPLUGINDIR', 'BB_PLUGIN_DIR' ); + define( 'BB_PLUGIN_DIR', BBPLUGINDIR ); + } else { + define( 'BB_PLUGIN_DIR', BB_PATH . 'my-plugins/' ); + } +} + +/** + * Full URL of the user plugins directory + */ +if ( !defined( 'BB_PLUGIN_URL' ) ) { + if ( BB_LOAD_DEPRECATED && defined( 'BBPLUGINURL' ) ) { + // User has set old constant + bb_log_deprecated( 'constant', 'BBPLUGINURL', 'BB_PLUGIN_URL' ); + define( 'BB_PLUGIN_URL', BBPLUGINURL ); + } else { + define( 'BB_PLUGIN_URL', $bb->uri . 'my-plugins/' ); + } +} + +/** + * Full path to the location of the user themes directory + */ +if ( !defined( 'BB_THEME_DIR' ) ) { + if ( BB_LOAD_DEPRECATED && defined( 'BBTHEMEDIR' ) ) { + // User has set old constant + bb_log_deprecated( 'constant', 'BBTHEMEDIR', 'BB_THEME_DIR' ); + define( 'BB_THEME_DIR', BBTHEMEDIR ); + } else { + define( 'BB_THEME_DIR', BB_PATH . 'my-templates/' ); + } +} + +/** + * Full URL of the user themes directory + */ +if ( !defined( 'BB_THEME_URL' ) ) { + if ( BB_LOAD_DEPRECATED && defined( 'BBTHEMEURL' ) ) { + // User has set old constant + bb_log_deprecated( 'constant', 'BBTHEMEURL', 'BB_THEME_URL' ); + define( 'BB_THEME_URL', BBTHEMEURL ); + } else { + define( 'BB_THEME_URL', $bb->uri . 'my-templates/' ); + } +} + +/** + * Look-up arrays provide easier access to arbitrary plugin and theme locations + */ +$_default_plugin_locations = array( + 'core' => array( + 'dir' => BB_CORE_PLUGIN_DIR, + 'url' => BB_CORE_PLUGIN_URL, + 'cap' => 'manage_plugins' + ), + 'user' => array( + 'dir' => BB_PLUGIN_DIR, + 'url' => BB_PLUGIN_URL, + 'cap' => 'manage_plugins' + ) +); + +if ( isset( $bb->plugin_locations ) && is_array( $bb->plugin_locations ) ) { + $bb->plugin_locations = array_merge( $_default_plugin_locations, $bb->plugin_locations ); +} else { + $bb->plugin_locations = $_default_plugin_locations; +} + +// Don't accept a plugin location called "all". Unlikely, but really not desirable. +if ( isset( $bb->plugin_locations['all'] ) ) { + unset( $bb->plugin_locations['all'] ); +} + +$_default_theme_locations = array( + 'core' => array( + 'dir' => BB_CORE_THEME_DIR, + 'url' => BB_CORE_THEME_URL, + 'cap' => 'manage_themes' + ), + 'user' => array( + 'dir' => BB_THEME_DIR, + 'url' => BB_THEME_URL, + 'cap' => 'manage_themes' + ) +); + +if ( isset( $bb->theme_locations ) && is_array( $bb->theme_locations ) ) { + $bb->theme_locations = array_merge( $_default_theme_locations, $bb->theme_locations ); +} else { + $bb->theme_locations = $_default_theme_locations; +} + + + +/** + * Add custom tables if present + */ + +// Resolve the various ways custom user tables might be setup +bb_set_custom_user_tables(); + +// Add custom databases if required +if ( isset( $bb->custom_databases ) ) { + foreach ( $bb->custom_databases as $connection => $database ) { + $bbdb->add_db_server( $connection, $database ); + } +} +unset( $connection, $database ); + +// Add custom tables if required +if ( isset( $bb->custom_tables ) ) { + $bbdb->tables = array_merge( $bbdb->tables, $bb->custom_tables ); + if ( is_wp_error( $bbdb->set_prefix( $bbdb->prefix ) ) ) { + die( __( 'Your user table prefix may only contain letters, numbers and underscores.' ) ); + } +} + + + +/** + * Sort out cookies so they work with WordPress (if required) + * Note that database integration is no longer a pre-requisite for cookie integration + */ + +$bb->wp_siteurl = bb_get_option( 'wp_siteurl' ); +if ( $bb->wp_siteurl ) { + $bb->wp_siteurl = rtrim( trim( $bb->wp_siteurl ), " \t\n\r\0\x0B/" ); +} + +$bb->wp_home = bb_get_option( 'wp_home' ); +if ( $bb->wp_home ) { + $bb->wp_home = rtrim( trim( $bb->wp_home ), " \t\n\r\0\x0B/" ); +} + +$bb->wp_cookies_integrated = false; +$bb->cookiedomain = bb_get_option( 'cookiedomain' ); +$bb->cookiepath = bb_get_option( 'cookiepath' ); +$bb->wordpress_mu_primary_blog_id = bb_get_option( 'wordpress_mu_primary_blog_id' ); + +if ( $bb->wp_siteurl && $bb->wp_home ) { + if ( $bb->cookiedomain ) { + $bb->wp_cookies_integrated = true; + } else { + $cookiedomain = bb_get_common_domains( $bb->uri, $bb->wp_home ); + if ( bb_match_domains( $bb->uri, $bb->wp_home ) ) { + if ( $bb->wordpress_mu_primary_blog_id ) { + $bb->cookiedomain = '.' . $cookiedomain; + } + if ( !$bb->cookiepath ) { + $bb->cookiepath = bb_get_common_paths( $bb->uri, $bb->wp_home ); + } + $bb->wp_cookies_integrated = true; + } elseif ( $cookiedomain && strpos( $cookiedomain, '.' ) !== false ) { + $bb->cookiedomain = '.' . $cookiedomain; + if ( !$bb->cookiepath ) { + $bb->cookiepath = bb_get_common_paths( $bb->uri, $bb->wp_home ); + } + $bb->wp_cookies_integrated = true; + } + unset( $cookiedomain ); + } +} + +define( 'BB_HASH', $bb->wp_cookies_integrated ? md5( $bb->wp_siteurl ) : md5( $bb->uri ) ); + +if ( BB_LOAD_DEPRECATED ) { + // Deprecated setting + $bb->usercookie = bb_get_option( 'usercookie' ); + if ( !$bb->usercookie ) { + $bb->usercookie = ( $bb->wp_cookies_integrated ? 'wordpressuser_' : 'bb_user_' ) . BB_HASH; + } else { + bb_log_deprecated( 'variable', '$bb->usercookie' ); + } + + // Deprecated setting + $bb->passcookie = bb_get_option( 'passcookie' ); + if ( !$bb->passcookie ) { + $bb->passcookie = ( $bb->wp_cookies_integrated ? 'wordpresspass_' : 'bb_pass_' ) . BB_HASH; + } else { + bb_log_deprecated( 'variable', '$bb->passcookie' ); + } +} + +$bb->authcookie = bb_get_option( 'authcookie' ); +if ( !$bb->authcookie ) { + $bb->authcookie = ( $bb->wp_cookies_integrated ? 'wordpress_' : 'bbpress_' ) . BB_HASH; +} + +$bb->secure_auth_cookie = bb_get_option( 'secure_auth_cookie' ); +if ( !$bb->secure_auth_cookie ) { + $bb->secure_auth_cookie = ( $bb->wp_cookies_integrated ? 'wordpress_sec_' : 'bbpress_sec_' ) . BB_HASH; +} + +$bb->logged_in_cookie = bb_get_option( 'logged_in_cookie' ); +if ( !$bb->logged_in_cookie ) { + $bb->logged_in_cookie = ( $bb->wp_cookies_integrated ? 'wordpress_logged_in_' : 'bbpress_logged_in_' ) . BB_HASH; +} + +// Cookie path was set before integration logic above +if ( !$bb->cookiepath ) { + $bb->cookiepath = $bb->wp_cookies_integrated ? preg_replace( '|https?://[^/]+|i', '', $bb->wp_home ) : $bb->path; +} +$bb->cookiepath = rtrim( trim( $bb->cookiepath ), " \t\n\r\0\x0B/" ) . '/'; + +$bb->admin_cookie_path = bb_get_option( 'admin_cookie_path' ); +if ( !$bb->admin_cookie_path ) { + $bb->admin_cookie_path = $bb->path . 'bb-admin'; +} +if ( '/' !== $bb->admin_cookie_path = trim( $bb->admin_cookie_path ) ) { + $bb->admin_cookie_path = rtrim( $bb->admin_cookie_path, " \t\n\r\0\x0B/" ); +} + +if ( BB_LOAD_DEPRECATED ) { + $_plugin_cookie_paths = bb_get_option( 'plugin_cookie_paths' ); + + // Deprecated settings + if ( $_plugin_cookie_paths ) { + if ( isset( $_plugin_cookie_paths['core'] ) && $_plugin_cookie_paths['core'] ) { + $bb->core_plugins_cookie_path = $_plugin_cookie_paths['core']; + } + if ( isset( $_plugin_cookie_paths['user'] ) && $_plugin_cookie_paths['user'] ) { + $bb->user_plugins_cookie_path = $_plugin_cookie_paths['user']; + } + } else { + if ( $bb->core_plugins_cookie_path = bb_get_option( 'core_plugins_cookie_path' ) ) { + bb_log_deprecated( 'variable', '$bb->core_plugins_cookie_path', '$bb->plugin_cookie_paths[\'core\']' ); + } + if ( $bb->user_plugins_cookie_path = bb_get_option( 'user_plugins_cookie_path' ) ) { + bb_log_deprecated( 'variable', '$bb->core_plugins_cookie_path', '$bb->plugin_cookie_paths[\'user\']' ); + } + } + + if ( !$bb->core_plugins_cookie_path && isset( $bb->plugin_locations['core']['url'] ) && $bb->plugin_locations['core']['url'] ) { + $bb->core_plugins_cookie_path = preg_replace( '|https?://[^/]+|i', '', $bb->plugin_locations['core']['url'] ); + } + $bb->core_plugins_cookie_path = rtrim( trim( $bb->core_plugins_cookie_path ), " \t\n\r\0\x0B/" ); + + if ( !$bb->user_plugins_cookie_path && isset( $bb->plugin_locations['user']['url'] ) && $bb->plugin_locations['user']['url'] ) { + $bb->user_plugins_cookie_path = preg_replace( '|https?://[^/]+|i', '', $bb->plugin_locations['user']['url'] ); + } + $bb->user_plugins_cookie_path = rtrim( trim( $bb->user_plugins_cookie_path ), " \t\n\r\0\x0B/" ); + + if ( !$_plugin_cookie_paths ) { + $bb->plugin_cookie_paths = array(); + } + if ( !isset( $_plugin_cookie_paths['core'] ) ) { + $bb->plugin_cookie_paths['core'] = $bb->core_plugins_cookie_path; + } + if ( !isset( $_plugin_cookie_paths['user'] ) ) { + $bb->plugin_cookie_paths['user'] = $bb->user_plugins_cookie_path; + } +} + +$bb->sitecookiepath = bb_get_option( 'sitecookiepath' ); +$_bb_sitecookiepath = $bb->sitecookiepath; +if ( !$bb->sitecookiepath && $bb->wp_cookies_integrated ) { + $bb->sitecookiepath = preg_replace( '|https?://[^/]+|i', '', $bb->wp_siteurl ); + $_bb_sitecookiepath = $bb->sitecookiepath; +} +$bb->sitecookiepath = rtrim( trim( $bb->sitecookiepath ), " \t\n\r\0\x0B/" ) . '/'; + +$bb->wp_admin_cookie_path = bb_get_option( 'wp_admin_cookie_path' ); +if ( !$bb->wp_admin_cookie_path && $bb->wp_cookies_integrated ) { + if ( $bb->wordpress_mu_primary_blog_id ) { + $bb->wp_admin_cookie_path = $_bb_sitecookiepath; + } else { + $bb->wp_admin_cookie_path = $_bb_sitecookiepath . '/wp-admin'; + } +} +if ( '/' !== $bb->wp_admin_cookie_path = trim( $bb->wp_admin_cookie_path ) ) { + $bb->wp_admin_cookie_path = rtrim( $bb->wp_admin_cookie_path, " \t\n\r\0\x0B/" ); +} + +$bb->wp_plugins_cookie_path = bb_get_option( 'wp_plugins_cookie_path' ); +if ( !$bb->wp_plugins_cookie_path && $bb->wp_cookies_integrated ) { + // This is a best guess only, should be manually set to match WP_PLUGIN_URL + $bb->wp_plugins_cookie_path = $_bb_sitecookiepath . '/wp-content/plugins'; +} +if ( '/' !== $bb->wp_plugins_cookie_path = trim( $bb->wp_plugins_cookie_path ) ) { + $bb->wp_plugins_cookie_path = rtrim( $bb->wp_plugins_cookie_path, " \t\n\r\0\x0B/" ); +} +unset( $_bb_sitecookiepath ); + +/** + * Should be exactly the same as the default value of the KEYS in bb-config-sample.php + * @since 1.0 + */ +$bb_default_secret_key = 'put your unique phrase here'; + + + +/** + * Initialise localisation + */ + +// Load the default text localization domain. +bb_load_default_textdomain(); + +// Pull in locale data after loading text domain. +require_once( BB_PATH . BB_INC . 'class.bb-locale.php' ); + +/** + * Localisation object + */ +$bb_locale = new BB_Locale(); + + + +/** + * Remaining BackPress + */ + +// WP_Pass +if ( !class_exists( 'WP_Pass' ) ) { + require_once( BACKPRESS_PATH . 'class.wp-pass.php' ); +} + +// WP_Users +if ( !class_exists( 'WP_Users' ) ) { + require_once( BACKPRESS_PATH . 'class.wp-users.php' ); + $wp_users_object = new WP_Users( $bbdb ); +} + +if ( !class_exists( 'BP_Roles' ) ) { + require_once( BACKPRESS_PATH . 'class.bp-roles.php' ); +} + +/** + * BP_Roles object + */ +$wp_roles = new BP_Roles( $bbdb ); + +// BP_User +if ( !class_exists( 'BP_User' ) ) { + require_once( BACKPRESS_PATH . 'class.bp-user.php' ); +} + +// WP_Auth +if ( !class_exists( 'WP_Auth' ) ) { + require_once( BACKPRESS_PATH . 'class.wp-auth.php' ); + + $cookies = array(); + + $cookies['logged_in'][] = array( + 'domain' => $bb->cookiedomain, + 'path' => $bb->cookiepath, + 'name' => $bb->logged_in_cookie + ); + + if ( $bb->sitecookiepath && $bb->cookiepath != $bb->sitecookiepath ) { + $cookies['logged_in'][] = array( + 'domain' => $bb->cookiedomain, + 'path' => $bb->sitecookiepath, + 'name' => $bb->logged_in_cookie + ); + } + + $cookies['auth'][] = array( + 'domain' => $bb->cookiedomain, + 'path' => $bb->admin_cookie_path, + 'name' => $bb->authcookie + ); + + $cookies['secure_auth'][] = array( + 'domain' => $bb->cookiedomain, + 'path' => $bb->admin_cookie_path, + 'name' => $bb->secure_auth_cookie, + 'secure' => true + ); + + $_plugin_cookie_paths = bb_get_option( 'plugin_cookie_paths' ); + foreach ( $bb->plugin_locations as $_name => $_data ) { + if ( isset( $_data['cookie_path'] ) && !empty( $_data['cookie_path'] ) ) { + $_cookie_path = $_data['cookie_path']; + } elseif ( !$_plugin_cookie_paths || !isset( $_plugin_cookie_paths[$_name] ) || !$_plugin_cookie_paths[$_name] ) { + $_cookie_path = preg_replace( '|https?://[^/]+|i', '', $_data['url'] ); + } else { + $_cookie_path = $_plugin_cookie_paths[$_name]; + } + if ( '/' !== $_cookie_path = trim( $_cookie_path ) ) { + $_cookie_path = rtrim( $_cookie_path, " \t\n\r\0\x0B/" ); + } + + if ( !$_cookie_path ) { + continue; + } + + $_auth = array( + 'domain' => $bb->cookiedomain, + 'path' => $_cookie_path, + 'name' => $bb->authcookie + ); + + if ( !in_array( $_auth, $cookies['auth'] ) ) { + $cookies['auth'][] = $_auth; + } + + $_secure_auth = array( + 'domain' => $bb->cookiedomain, + 'path' => $_cookie_path, + 'name' => $bb->secure_auth_cookie, + 'secure' => true + ); + + if ( !in_array( $_secure_auth, $cookies['secure_auth'] ) ) { + $cookies['secure_auth'][] = $_secure_auth; + } + } + unset( $_plugin_cookie_paths, $_type, $_data, $_cookie_path, $_auth, $_secure_auth ); + + if ( $bb->wp_admin_cookie_path ) { + $cookies['auth'][] = array( + 'domain' => $bb->cookiedomain, + 'path' => $bb->wp_admin_cookie_path, + 'name' => $bb->authcookie + ); + + $cookies['secure_auth'][] = array( + 'domain' => $bb->cookiedomain, + 'path' => $bb->wp_admin_cookie_path, + 'name' => $bb->secure_auth_cookie, + 'secure' => true + ); + } + + if ( $bb->wp_plugins_cookie_path ) { + $cookies['auth'][] = array( + 'domain' => $bb->cookiedomain, + 'path' => $bb->wp_plugins_cookie_path, + 'name' => $bb->authcookie + ); + + $cookies['secure_auth'][] = array( + 'domain' => $bb->cookiedomain, + 'path' => $bb->wp_plugins_cookie_path, + 'name' => $bb->secure_auth_cookie, + 'secure' => true + ); + } + + /** + * The current cookie version + * + * Version 1 is for WordPress >= 2.6 and < 2.8 + * Version 2 is for Wordpress >= 2.8 + */ + if ( !defined( 'WP_AUTH_COOKIE_VERSION' ) ) { + define( 'WP_AUTH_COOKIE_VERSION', 2 ); + } + + /** + * WP_Auth object + */ + $wp_auth_object = new WP_Auth( $bbdb, $wp_users_object, $cookies ); + + unset( $cookies ); +} + +/** + * Current user object + */ +$bb_current_user =& $wp_auth_object->current; + +// WP_Scripts/WP_Styles +if ( !class_exists( 'WP_Dependencies' ) ) { + require_once( BACKPRESS_PATH . 'class.wp-dependencies.php' ); +} + +if ( !class_exists( 'WP_Scripts' ) ) { + require_once( BACKPRESS_PATH . 'class.wp-scripts.php' ); + require_once( BACKPRESS_PATH . 'functions.wp-scripts.php' ); +} else { + unset( $wp_scripts ); +} + +if ( !class_exists( 'WP_Styles' ) ) { + require_once( BACKPRESS_PATH . 'class.wp-styles.php' ); + require_once( BACKPRESS_PATH . 'functions.wp-styles.php' ); +} else { + unset( $wp_styles ); +} + + + +// WP_Taxonomy +if ( !class_exists( 'WP_Taxonomy' ) ) { + require_once( BACKPRESS_PATH . 'class.wp-taxonomy.php' ); +} +if ( !class_exists( 'BB_Taxonomy' ) ) { + require_once( BB_PATH . BB_INC . 'class.bb-taxonomy.php' ); +} +if ( !isset( $wp_taxonomy_object ) ) { + // Clean slate + $wp_taxonomy_object = new BB_Taxonomy( $bbdb ); +} elseif ( !is_a( $wp_taxonomy_object, 'BB_Taxonomy' ) ) { + // exists, but it's not good enough, translate it + + // preserve the references + $tax =& $wp_taxonomy_object->taxonomies; + $wp_taxonomy_object = new BB_Taxonomy( $bbdb ); + $wp_taxonomy_object->taxonomies =& $tax; + unset( $tax ); +} + +$wp_taxonomy_object->register_taxonomy( 'bb_topic_tag', 'bb_topic' ); + +$wp_taxonomy_object->register_taxonomy( 'bb_subscribe', 'bb_user' ); + +do_action( 'bb_options_loaded' ); + + + +/** + * Load deprecated constants and functions + */ + +// Skip loading of deprecated stuff unless specifically requested +if ( BB_LOAD_DEPRECATED ) { + /** + * Define deprecated constants for plugin compatibility + * $deprecated_constants below is a complete array of old constants and their replacements + */ + $deprecated_constants = array( + 'BBPATH' => 'BB_PATH', + 'BBINC' => 'BB_INC', + 'BBLANG' => 'BB_LANG', + 'BBLANGDIR' => 'BB_LANG_DIR', + 'BBPLUGINDIR' => 'BB_PLUGIN_DIR', + 'BBPLUGINURL' => 'BB_PLUGIN_URL', + 'BBTHEMEDIR' => 'BB_THEME_DIR', + 'BBTHEMEURL' => 'BB_THEME_URL', + 'BBHASH' => 'BB_HASH' + ); + foreach ( $deprecated_constants as $old => $new ) { + // only define if new one is defined + if ( !defined( $old ) && defined( $new ) ) { + define( $old, constant( $new ) ); + } elseif ( defined( $old ) ) { + bb_log_deprecated( 'constant', $old, $new ); + } + } + + $deprecated_constants = array( + 'USER_BBDB_NAME' => 'user_bbdb_name', + 'USER_BBDB_USER' => 'user_bbdb_user', + 'USER_BBDB_PASSWORD' => 'user_bbdb_password', + 'USER_BBDB_HOST' => 'user_bbdb_host', + 'USER_BBDB_CHARSET' => 'user_bbdb_charset', + 'CUSTOM_USER_TABLE' => 'custom_user_table', + 'CUSTOM_USER_META_TABLE' => 'custom_user_meta_table', + ); + foreach ( $deprecated_constants as $old => $new ) { + if ( !defined( $old ) ) { + define( $old, $bb->$new ); + } else { + bb_log_deprecated( 'constant', $old, '$bb->' . $new ); + } + } + unset($deprecated_constants, $old, $new); + + /** + * Load deprecated functions + */ + require_once( BB_PATH . BB_INC . 'functions.bb-deprecated.php' ); + + /** + * Old cache global object for backwards compatibility + */ + $bb_cache = new BB_Cache(); +} + + + +/** + * Load active template functions.php file + */ +$template_functions_include = bb_get_active_theme_directory() . 'functions.php'; +if ( file_exists( $template_functions_include ) ) { + require_once( $template_functions_include ); +} +unset( $template_functions_include ); + + + +/** + * Load Plugins + */ + +// Skip plugin loading in "safe" mode +if ( $bb->plugin_locations && ( !isset( $bb->safemode ) || $bb->safemode !== true ) ) { + // Autoloaded "underscore" plugins + foreach ( $bb->plugin_locations as $_name => $_data ) { + foreach ( bb_glob( $_data['dir'] . '_*.php' ) as $_plugin ) { + require_once( $_plugin ); + } + unset( $_plugin ); + } + unset( $_name, $_data ); + do_action( 'bb_underscore_plugins_loaded' ); + + // Normal plugins + if ( $_plugins = bb_get_option( 'active_plugins' ) ) { + foreach ( (array) $_plugins as $_plugin ) { + if ( !preg_match( '/^([a-z0-9_-]+)#((?:[a-z0-9\/\\_-]+.)+)(php)$/i', $_plugin, $_matches ) ) { + // The plugin entry in the database is invalid + continue; + } + + $_directory = $bb->plugin_locations[$_matches[1]]['dir']; + $_plugin = $_matches[2] . $_matches[3]; + + if ( !$_plugin ) { + // Not likely + continue; + } + + if ( validate_file( $_plugin ) ) { + // $plugin has .., :, etc. + continue; + } + + if ( !file_exists( $_directory . $_plugin ) ) { + // The plugin isn't there + continue; + } + + require_once( $_directory . $_plugin ); + } + } + unset( $_plugins, $_plugin, $_directory ); + do_action( 'bb_plugins_loaded' ); +} + +require_once( BB_PATH . BB_INC . 'functions.bb-pluggable.php' ); + + + +/** + * Reference to $wp_roles + */ +$bb_roles =& $wp_roles; +do_action( 'bb_got_roles' ); + + + +/** + * Create an API hook to run on shutdown + */ + +function bb_shutdown_action_hook() { + do_action( 'bb_shutdown' ); +} +register_shutdown_function( 'bb_shutdown_action_hook' ); + + +/** + * Get details of the current user + */ + +bb_current_user(); + + + +/** + * Initialise CRON + */ + +if ( !function_exists( 'wp_schedule_single_event' ) ) { + require_once( BACKPRESS_PATH . 'functions.wp-cron.php' ); +} +if ( ( !defined('DOING_CRON') || !DOING_CRON ) ) { + wp_cron(); +} + + + +/** + * The currently viewed page number + */ +$page = bb_get_uri_page(); + + + +/** + * Initialisation complete API hook + */ + +do_action( 'bb_init' ); + + + +/** + * Block user if they deserve it + */ + +if ( bb_is_user_logged_in() && bb_has_broken_pass() ) { + bb_block_current_user(); +} + + + +/** + * Send HTTP headers + */ + +bb_send_headers(); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/functions.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/functions.php new file mode 100644 index 0000000..8f1b6e9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/functions.php @@ -0,0 +1,6 @@ +<?php +/* Functions for Kakumei Blue Theme */ + +/* The below actions are removed because we add our own checkbox (check post-form.php and edit-form.php) */ +remove_action( 'post_form', 'bb_user_subscribe_checkbox' ); +remove_action( 'edit_form', 'bb_user_subscribe_checkbox' ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/images/page_header_bblogo.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/images/page_header_bblogo.png new file mode 100644 index 0000000..3f63763 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/images/page_header_bblogo.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/screenshot.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/screenshot.png new file mode 100644 index 0000000..45eafdb Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/screenshot.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/style-rtl.css b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/style-rtl.css new file mode 100644 index 0000000..1d03f45 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/style-rtl.css @@ -0,0 +1 @@ +@import url('../kakumei/style-rtl.css'); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/style.css b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/style.css new file mode 100644 index 0000000..eeca106 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei-blue/style.css @@ -0,0 +1,31 @@ +/* +Theme Name: Kakumei Blue +Theme URI: http://bbpress.org/ +Description: The "revolutionized" new face of bbPress... in blue. +Version: 1.0 +Author: <a href="http://avalonstar.com">Bryan Veloso</a> with updates by <a href="http://unlettered.org">Sam Bauers</a> +Author URI: +*/ + + +@import url('../kakumei/style.css'); + +a { color: #32689b; text-decoration: none; } +a:hover { color: #001364; } +#header { background-image: url('images/page_header_bblogo.png'); } +#header div.search input.submit:hover { color: #001364; } +#header div.search input.submit:active { border-color: #001364; } +form.login input.submit:hover { color: #001364; } +form.login input.submit:active { border-color: #001364; } +input#tagformsub:hover { color: #001364; } +input#tagformsub:active { border-color: #001364; } +.sticky { background: #adb9e1; } +#thread li.pingback { background-color: #d8dcf2; border-color: #d8dcf2; } +#thread li.pingback .threadpost { background-color: #d8dcf2; } +#topic-move input { color: #32689b; } +#topic-move input:hover { color: #001364; } +#latest tr:hover, #forumlist tr:hover, #favorites tr:hover { background: #d8dcf2; } +#profile-menu li a:hover { background: #d8dcf2; } +a.prev.page-numbers:hover, a.next.page-numbers:hover { color: #001364; } +p.submit input:hover { color: #001364; } +p.submit input:active { border-color: #001364; } \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/404.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/404.php new file mode 100644 index 0000000..5ea67f1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/404.php @@ -0,0 +1,9 @@ +<?php bb_get_header(); ?> + +<div class="bbcrumb"><a href="<?php bb_uri(); ?>"><?php bb_option('name'); ?></a> » <?php _e('Page not found!'); ?></div> + +<h2 id="http404"><?php _e('Page not found!'); ?></h2> + +<p><?php _e('I\'m sorry, but there is nothing at this URL.'); ?></p> + +<?php bb_get_footer(); ?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/edit-form.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/edit-form.php new file mode 100644 index 0000000..2a71e4a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/edit-form.php @@ -0,0 +1,33 @@ +<?php if ( !bb_get_user( get_post_author_id() ) ) : ?> + + <?php bb_load_template( 'post-form-anonymous.php' ); ?> + +<?php endif; ?> + +<?php if ( $topic_title ) : ?> +<p role="main"> + <label for="topic"><?php _e( 'Topic:' ); ?><br /> + <input name="topic" type="text" id="topic" size="50" maxlength="80" tabindex="31" value="<?php echo esc_attr( get_topic_title() ); ?>" /> + </label> +</p> +<?php endif; do_action( 'edit_form_pre_post' ); ?> + +<p> + <label for="post_content"><?php _e( 'Post:' ); ?><br /> + <textarea name="post_content" cols="50" rows="8" tabindex="32" id="post_content"><?php echo apply_filters( 'edit_text', get_post_text() ); ?></textarea> + </label> +</p> + +<?php if ( bb_get_user( get_post_author_id() ) && bb_is_subscriptions_active() ) : ?> +<p id="post-form-subscription-container" class="left"> + <?php bb_user_subscribe_checkbox( 'tab=33' ); ?> +</p> +<?php endif; ?> + +<p class="submit"> + <input type="submit" name="Submit" value="<?php esc_attr_e( 'Edit Post »' ); ?>" tabindex="34" /> + <input type="hidden" name="post_id" value="<?php post_id(); ?>" /> + <input type="hidden" name="topic_id" value="<?php topic_id(); ?>" /> +</p> + +<p><?php _e( 'Allowed markup:' ); ?> <code><?php allowed_markup(); ?></code>. <br /><?php _e( 'Put code in between <code>`backticks`</code>.' ); ?></p> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/edit-post.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/edit-post.php new file mode 100644 index 0000000..f6bd505 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/edit-post.php @@ -0,0 +1,6 @@ +<?php bb_get_header(); ?> +<div class="bbcrumb"><a href="<?php bb_uri(); ?>"><?php bb_option('name'); ?></a> » <?php _e('Edit Post'); ?></div> + +<?php edit_form(); ?> + +<?php bb_get_footer(); ?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/favorites.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/favorites.php new file mode 100644 index 0000000..940b7de --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/favorites.php @@ -0,0 +1,54 @@ +<?php bb_get_header(); ?> + +<div class="bbcrumb"><a href="<?php bb_uri(); ?>"><?php bb_option('name'); ?></a> » <a href="<?php user_profile_link( $user_id ); ?>"><?php echo get_user_display_name( $user_id ); ?></a> » <?php _e('Favorites'); ?></div> + +<h2 id="userlogin" role="main"><?php echo get_user_display_name( $user->ID ); ?> <small>(<?php echo get_user_name( $user->ID ); ?>)</small> <?php _e( 'favorites' ); ?><?php if ( $topics ) printf( __( ' - %d' ), $favorites_total ); ?></h2> + +<p><?php _e( 'Favorites allow members to create a custom <abbr title="Really Simple Syndication">RSS</abbr> feed which pulls recent replies to the topics they specify.' ); ?></p> +<?php if ( bb_current_user_can( 'edit_favorites_of', $user_id ) ) : ?> +<p><?php _e( 'To add topics to your list of favorites, just click the "Add to Favorites" link found on that topic’s page.' ); ?></p> +<?php endif; ?> + +<?php if ( $topics ) : ?> + +<table id="favorites"> +<tr> + <th><?php _e('Topic'); ?></th> + <th><?php _e('Posts'); ?></th> + <!-- <th><?php _e('Voices'); ?></th> --> + <th><?php _e('Last Poster'); ?></th> + <th><?php _e('Freshness'); ?></th> +<?php if ( bb_current_user_can( 'edit_favorites_of', $user_id ) ) : ?> + <th><?php _e('Remove'); ?></th> +<?php endif; ?> +</tr> + +<?php foreach ( $topics as $topic ) : ?> +<tr<?php topic_class(); ?>> + <td><?php bb_topic_labels(); ?> <a href="<?php topic_link(); ?>"><?php topic_title(); ?></a></td> + <td class="num"><?php topic_posts(); ?></td> + <!-- <td class="num"><?php bb_topic_voices(); ?></td> --> + <td class="num"><?php topic_last_poster(); ?></td> + <td class="num"><a href="<?php topic_last_post_link(); ?>" title="<?php topic_time(array('format'=>'datetime')); ?>"><?php topic_time(); ?></a></td> +<?php if ( bb_current_user_can( 'edit_favorites_of', $user_id ) ) : ?> + <td class="num">[<?php user_favorites_link('', array('mid'=>'×'), $user_id); ?>]</td> +<?php endif; ?> +</tr> +<?php endforeach; ?> +</table> + +<p class="rss-link"><a href="<?php favorites_rss_link( $user_id ); ?>" class="rss-link"><?php _e('<abbr title="Really Simple Syndication">RSS</abbr> feed for these favorites'); ?></a></p> + +<?php favorites_pages( array( 'before' => '<div class="nav">', 'after' => '</div>' ) ); ?> + +<?php else: if ( $user_id == bb_get_current_user_info( 'id' ) ) : ?> + +<p><?php _e('You currently have no favorites.'); ?></p> + +<?php else : ?> + +<p><?php echo get_user_name( $user_id ); ?> <?php _e('currently has no favorites.'); ?></p> + +<?php endif; endif; ?> + +<?php bb_get_footer(); ?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/footer.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/footer.php new file mode 100644 index 0000000..a24d10f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/footer.php @@ -0,0 +1,22 @@ + </div> + </div> + <div id="footer" role="contentinfo"> + <p><?php printf(__('%1$s is proudly powered by <a href="%2$s">bbPress</a>.'), bb_option('name'), "http://bbpress.org") ?></p> + + <!-- If you like showing off the fact that your server rocks --> + <!-- <p class="showoff"> +<?php +global $bbdb; +printf( +__( 'This page generated in %s seconds, using %d queries.' ), +bb_number_format_i18n( bb_timer_stop(), 2 ), +bb_number_format_i18n( $bbdb->num_queries ) +); +?> + </p> --> + </div> + +<?php do_action('bb_foot'); ?> + +</body> +</html> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/forum.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/forum.php new file mode 100644 index 0000000..b2c4f9e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/forum.php @@ -0,0 +1,67 @@ +<?php bb_get_header(); ?> + +<div class="bbcrumb"><a href="<?php bb_uri(); ?>"><?php bb_option('name'); ?></a><?php bb_forum_bread_crumb(); ?></div> + +<?php if ( $topics || $stickies ) : ?> + +<table id="latest" role="main"> +<tr> + <th><?php _e('Topic'); ?> — <?php bb_new_topic_link(); ?></th> + <th><?php _e('Posts'); ?></th> + <!-- <th><?php _e('Voices'); ?></th> --> + <th><?php _e('Last Poster'); ?></th> + <th><?php _e('Freshness'); ?></th> +</tr> + +<?php if ( $stickies ) : foreach ( $stickies as $topic ) : ?> +<tr<?php topic_class(); ?>> + <td><?php bb_topic_labels(); ?> <big><a href="<?php topic_link(); ?>"><?php topic_title(); ?></a></big><?php topic_page_links(); ?></td> + <td class="num"><?php topic_posts(); ?></td> + <!-- <td class="num"><?php bb_topic_voices(); ?></td> --> + <td class="num"><?php topic_last_poster(); ?></td> + <td class="num"><a href="<?php topic_last_post_link(); ?>" title="<?php topic_time(array('format'=>'datetime')); ?>"><?php topic_time(); ?></a></td> +</tr> +<?php endforeach; endif; ?> + +<?php if ( $topics ) : foreach ( $topics as $topic ) : ?> +<tr<?php topic_class(); ?>> + <td><?php bb_topic_labels(); ?> <a href="<?php topic_link(); ?>"><?php topic_title(); ?></a><?php topic_page_links(); ?></td> + <td class="num"><?php topic_posts(); ?></td> + <!-- <td class="num"><?php bb_topic_voices(); ?></td> --> + <td class="num"><?php topic_last_poster(); ?></td> + <td class="num"><a href="<?php topic_last_post_link(); ?>" title="<?php topic_time(array('format'=>'datetime')); ?>"><?php topic_time(); ?></a></td> +</tr> +<?php endforeach; endif; ?> +</table> +<p class="rss-link"><a href="<?php bb_forum_posts_rss_link(); ?>" class="rss-link"><?php _e('<abbr title="Really Simple Syndication">RSS</abbr> feed for this forum'); ?></a></p> +<?php forum_pages( array( 'before' => '<div class="nav">', 'after' => '</div>' ) ); ?> +<?php endif; ?> + +<?php if ( bb_forums( $forum_id ) ) : ?> +<h2><?php _e('Subforums'); ?></h2> +<table id="forumlist"> + +<tr> + <th><?php _e('Main Theme'); ?></th> + <th><?php _e('Topics'); ?></th> + <th><?php _e('Posts'); ?></th> +</tr> + +<?php while ( bb_forum() ) : ?> +<?php if (bb_get_forum_is_category()) : ?> +<tr<?php bb_forum_class('bb-category'); ?>> + <td colspan="3"><?php bb_forum_pad( '<div class="nest">' ); ?><a href="<?php forum_link(); ?>"><?php forum_name(); ?></a><?php forum_description( array( 'before' => '<small> – ', 'after' => '</small>' ) ); ?><?php bb_forum_pad( '</div>' ); ?></td> +</tr> +<?php continue; endif; ?> +<tr<?php bb_forum_class(); ?>> + <td><?php bb_forum_pad( '<div class="nest">' ); ?><a href="<?php forum_link(); ?>"><?php forum_name(); ?></a><?php forum_description( array( 'before' => '<small> – ', 'after' => '</small>' ) ); ?><?php bb_forum_pad( '</div>' ); ?></td> + <td class="num"><?php forum_topics(); ?></td> + <td class="num"><?php forum_posts(); ?></td> +</tr> +<?php endwhile; ?> +</table> +<?php endif; ?> + +<?php post_form(); ?> + +<?php bb_get_footer(); ?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/front-page.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/front-page.php new file mode 100644 index 0000000..b9c1af0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/front-page.php @@ -0,0 +1,90 @@ +<?php bb_get_header(); ?> + +<?php if ( $forums ) : ?> + +<div id="hottags" role="main"> +<h2><?php _e('Hot Tags'); ?></h2> +<p class="frontpageheatmap"><?php bb_tag_heat_map(); ?></p> +</div> + +<div id="discussions"> +<?php if ( $topics || $super_stickies ) : ?> + +<h2><?php _e('Latest Discussions'); ?></h2> + +<table id="latest"> +<tr> + <th><?php _e('Topic'); ?> — <?php bb_new_topic_link(); ?></th> + <th><?php _e('Posts'); ?></th> + <!-- <th><?php _e('Voices'); ?></th> --> + <th><?php _e('Last Poster'); ?></th> + <th><?php _e('Freshness'); ?></th> +</tr> + +<?php if ( $super_stickies ) : foreach ( $super_stickies as $topic ) : ?> +<tr<?php topic_class(); ?>> + <td><?php bb_topic_labels(); ?> <big><a href="<?php topic_link(); ?>"><?php topic_title(); ?></a></big><?php topic_page_links(); ?></td> + <td class="num"><?php topic_posts(); ?></td> + <!-- <td class="num"><?php bb_topic_voices(); ?></td> --> + <td class="num"><?php topic_last_poster(); ?></td> + <td class="num"><a href="<?php topic_last_post_link(); ?>" title="<?php topic_time(array('format'=>'datetime')); ?>"><?php topic_time(); ?></a></td> +</tr> +<?php endforeach; endif; // $super_stickies ?> + +<?php if ( $topics ) : foreach ( $topics as $topic ) : ?> +<tr<?php topic_class(); ?>> + <td><?php bb_topic_labels(); ?> <a href="<?php topic_link(); ?>"><?php topic_title(); ?></a><?php topic_page_links(); ?></td> + <td class="num"><?php topic_posts(); ?></td> + <!-- <td class="num"><?php bb_topic_voices(); ?></td> --> + <td class="num"><?php topic_last_poster(); ?></td> + <td class="num"><a href="<?php topic_last_post_link(); ?>" title="<?php topic_time(array('format'=>'datetime')); ?>"><?php topic_time(); ?></a></td> +</tr> +<?php endforeach; endif; // $topics ?> +</table> +<?php bb_latest_topics_pages( array( 'before' => '<div class="nav">', 'after' => '</div>' ) ); ?> +<?php endif; // $topics or $super_stickies ?> + +<?php if ( bb_forums() ) : ?> +<h2><?php _e('Forums'); ?></h2> +<table id="forumlist"> + +<tr> + <th><?php _e('Main Theme'); ?></th> + <th><?php _e('Topics'); ?></th> + <th><?php _e('Posts'); ?></th> +</tr> +<?php while ( bb_forum() ) : ?> +<?php if (bb_get_forum_is_category()) : ?> +<tr<?php bb_forum_class('bb-category'); ?>> + <td colspan="3"><?php bb_forum_pad( '<div class="nest">' ); ?><a href="<?php forum_link(); ?>"><?php forum_name(); ?></a><?php forum_description( array( 'before' => '<small> – ', 'after' => '</small>' ) ); ?><?php bb_forum_pad( '</div>' ); ?></td> +</tr> +<?php continue; endif; ?> +<tr<?php bb_forum_class(); ?>> + <td><?php bb_forum_pad( '<div class="nest">' ); ?><a href="<?php forum_link(); ?>"><?php forum_name(); ?></a><?php forum_description( array( 'before' => '<small> – ', 'after' => '</small>' ) ); ?><?php bb_forum_pad( '</div>' ); ?></td> + <td class="num"><?php forum_topics(); ?></td> + <td class="num"><?php forum_posts(); ?></td> +</tr> +<?php endwhile; ?> +</table> +<?php endif; // bb_forums() ?> + +<?php if ( bb_is_user_logged_in() ) : ?> +<div id="viewdiv"> +<h2><?php _e('Views'); ?></h2> +<ul id="views"> +<?php foreach ( bb_get_views() as $the_view => $title ) : ?> +<li class="view"><a href="<?php view_link( $the_view ); ?>"><?php view_name( $the_view ); ?></a></li> +<?php endforeach; ?> +</ul> +</div> +<?php endif; // bb_is_user_logged_in() ?> + +</div> + +<?php else : // $forums ?> + +<div class="bbcrumb"><a href="<?php bb_uri(); ?>"><?php bb_option('name'); ?></a> » <?php _e('Add New Topic'); ?></div> + +<?php post_form(); endif; // $forums ?> + +<?php bb_get_footer(); ?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/functions.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/functions.php new file mode 100644 index 0000000..3b61c02 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/functions.php @@ -0,0 +1,6 @@ +<?php +/* Functions for Kakumei Theme */ + +/* The below actions are removed because we add our own checkbox (check post-form.php and edit-form.php) */ +remove_action( 'post_form', 'bb_user_subscribe_checkbox' ); +remove_action( 'edit_form', 'bb_user_subscribe_checkbox' ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/header.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/header.php new file mode 100644 index 0000000..97ba0e4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/header.php @@ -0,0 +1,40 @@ +<?php +$_head_profile_attr = ''; +if ( bb_is_profile() ) { + global $self; + if ( !$self ) { + $_head_profile_attr = ' profile="http://www.w3.org/2006/03/hcard"'; + } +} +?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"<?php bb_language_attributes( '1.1' ); ?>> +<head<?php echo $_head_profile_attr; ?>> + <meta http-equiv="X-UA-Compatible" content="IE=8" /> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <title><?php bb_title() ?> + + + + + + + + + + + +
      + +
      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/feed-icon-16x16.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/feed-icon-16x16.gif new file mode 100644 index 0000000..b0e4adf Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/feed-icon-16x16.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/page-links-background.gif b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/page-links-background.gif new file mode 100644 index 0000000..5ef0cd4 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/page-links-background.gif differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/page_header_bblogo.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/page_header_bblogo.png new file mode 100644 index 0000000..5270560 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/page_header_bblogo.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/page_header_tile.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/page_header_tile.png new file mode 100644 index 0000000..b9e89f2 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/images/page_header_tile.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/logged-in.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/logged-in.php new file mode 100644 index 0000000..e2b8b69 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/logged-in.php @@ -0,0 +1,5 @@ + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/login-form.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/login-form.php new file mode 100644 index 0000000..cb9ac4b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/login-form.php @@ -0,0 +1,33 @@ + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/login.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/login.php new file mode 100644 index 0000000..1f5fc0b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/login.php @@ -0,0 +1,75 @@ + + +
      »
      + +

      + +
      +
      + +get_error_message( 'user_login' ); + $user_email_error = $bb_login_error->get_error_message( 'user_email' ); + $user_password_error = $bb_login_error->get_error_message( 'password' ); +?> + + + + + + + + + + + + + + + + + +
      + + $user_password_error"; ?> + + +
      />
        + + + +
      + +
      +
      + +

      +
      +
      +

      + + + + + + + + + +
      + + + +
      + +
      +
      +
      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/password-reset.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/password-reset.php new file mode 100644 index 0000000..aa379f3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/password-reset.php @@ -0,0 +1,20 @@ + + +
      »
      + +

      + + +

      + + + +

      + + +

      + + + + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/post-form-anonymous.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/post-form-anonymous.php new file mode 100644 index 0000000..9888954 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/post-form-anonymous.php @@ -0,0 +1,31 @@ + + +

      + +

      + +

      + +

      + +

      + +

      diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/post-form.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/post-form.php new file mode 100644 index 0000000..4c360f0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/post-form.php @@ -0,0 +1,43 @@ + +

      + +

      + + +

      + +

      + + +

      + +

      + + + +

      + +

      + + + +

      + +

      + + +

      + +

      + +
      + +

      .
      `
      ) characters.' ); ?>

      diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/post.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/post.php new file mode 100644 index 0000000..e2e577f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/post.php @@ -0,0 +1,13 @@ +
      +
      + +

      +
      + +

      +
      +
      +
      +
      #
      +
      +
      \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/profile-base.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/profile-base.php new file mode 100644 index 0000000..0feffce --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/profile-base.php @@ -0,0 +1,8 @@ + + +
      » »
      +

      ID ); ?>

      + + + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/profile-edit.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/profile-edit.php new file mode 100644 index 0000000..eecd28f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/profile-edit.php @@ -0,0 +1,51 @@ + + +
      + » » +
      + +

      + ID ); ?> (ID ); ?>) +

      + +
      + +
      + + +
      + + +
      + + +
      + + +capabilities ) && !bb_current_user_can( 'keep_gate' ) ) ) : + if ( bb_current_user_can( 'change_user_password', $user->ID ) ) : +?> +
      + +

      + +
      + + +

      + +

      + +
      + +
      + +

      + ID ); ?> + +

      + +
      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/profile.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/profile.php new file mode 100644 index 0000000..bf41532 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/profile.php @@ -0,0 +1,87 @@ + + +
      » »
      + +
      + +ID ) ) : ?> +
      + +

      ID ); ?> (ID ); ?>)

      + + +
      +

      .

      +
      + +

      + + +ID )) : ?> +edit this information.'), esc_attr( get_profile_tab_link( $user_id, 'edit' ) ) ); ?> + +

      + +ID )) : ?> +

      manage your favorites and subscribe to your favorites’ RSS feed.'), esc_attr( get_favorites_link() ), esc_attr( get_favorites_rss_link() )); ?>

      + + + + + +
      + +

      + +

      + +
        +topic_id ) ?> +> + - + ID == bb_get_current_user_info( 'id' ) ) printf(__('You last replied: %2$s ago'), get_post_link(), bb_get_post_time()); else printf(__('User last replied: %2$s ago'), get_post_link(), bb_get_post_time()); ?> | + + %2$s ago'), get_topic_last_post_link(), get_topic_time()); + else + _e('No replies since'); + ?> + + +
      + +

      + +

      + +
      + +
      +

      + +
        + +> + - + | + + %2$s ago'), get_topic_last_post_link(), get_topic_time()); + else + _e('No replies since'); + ?> + + +
      + +

      + +

      + +
      + + '' ) ); ?> + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/register-success.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/register-success.php new file mode 100644 index 0000000..76562f3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/register-success.php @@ -0,0 +1,9 @@ + + +
      »
      + +

      + +

      %s was successful. Within a few minutes you should receive an email with your password.'), $user_login) ?>

      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/register.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/register.php new file mode 100644 index 0000000..1e39877 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/register.php @@ -0,0 +1,83 @@ + + +
      »
      + +

      + + + +
      + +
      + + +

      + +get_error_message( 'user_login' ); + +?> + + + + + + + + $label ) : + $class = 'form-field'; + if ( $label[0] ) { + $class .= ' form-required required'; + } + if ( $profile_info_key_error = $bb_register_error->get_error_message( $key ) ) + $class .= ' form-invalid error'; + +?> + + + + + + + + +
      + + $profile_info_key_error"; ?> + + +
      + +

      required.') ?>

      + +
      + + + +

      + +

      + +
      + + + +

      + + + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/rss2.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/rss2.php new file mode 100644 index 0000000..b9f4c93 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/rss2.php @@ -0,0 +1,35 @@ +' . "\n"; +bb_generator( 'comment' ); +?> + + > + + <?php echo $title; ?> + + + + + + + + + + + <?php post_author(); ?> <?php _e( 'on' ); ?> "<?php topic_title( $bb_post->topic_id ); ?>" + + 'D, d M Y H:i:s +0000', 'localize' => false ) ); ?> + + @ + ]]> + + + + + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/screenshot.png b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/screenshot.png new file mode 100644 index 0000000..3b37de9 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/screenshot.png differ diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/search-form.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/search-form.php new file mode 100644 index 0000000..fbd4807 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/search-form.php @@ -0,0 +1,7 @@ + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/search.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/search.php new file mode 100644 index 0000000..37153ba --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/search.php @@ -0,0 +1,55 @@ + + +
      »
      + + + +

      + + + +
      +

      +
        + + > + topic_id ) ); ?> + %2$s on %3$s'), get_user_profile_link( $bb_post->poster_id ), get_post_author(), bb_datetime_format_i18n( bb_get_post_time( array( 'format' => 'timestamp' ) ) ) ); ?> +

        post_text ); ?>

        + + +
      +
      + + + +
      +

      +
        + + + > + + %2$s on %3$s' ), get_user_profile_link( $topic->topic_poster ), get_topic_author(), bb_datetime_format_i18n( get_topic_start_time( array( 'format' => 'timestamp' ) ) ) ); ?> +

        post_text ); ?>

        + + +
      +
      + + + '' ) ); ?> + + +

      ' . esc_html( $q ) . '”' ); ?>

      +
        +
      • +
      • +
      • +
      + + +
      +

      search at Google.' ), 'http://google.com/search?q=site:' . bb_get_uri( null, null, BB_URI_CONTEXT_TEXT ) . urlencode( ' ' . $q ) ); ?>

      + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/stats.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/stats.php new file mode 100644 index 0000000..96df659 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/stats.php @@ -0,0 +1,26 @@ + + +
      »
      + +
      +
      +
      +
      +
      + +
      + +
      + +

      +
        + +
      1. + +
      + + + +
      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/style-rtl.css b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/style-rtl.css new file mode 100644 index 0000000..1aa408a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/style-rtl.css @@ -0,0 +1,189 @@ +/* Globals +=================================== */ + +body { font-family: Tahoma, 'Trebuchet MS', 'Lucida Grande', Verdana, Tahoma, Arial; } + +pre, code { font-family: Tahoma, Monaco, 'Courier New', monospace; } + +.left { float: right; } + +.right { float: left; } + +/* Structure +=================================== */ + +#header { background-position: -43px bottom; } + +#header h1 { + font-family: Tahoma, Georgia; + text-align: left; + left: 53px; + right: auto; +} + +#header div.search { + float: left; +} + +#header p.description { + font-family: Tahoma, Georgia; + text-align: left; + left: 53px; + right: auto; +} + +#footer { + font-family: Tahoma, Georgia; + text-align: left; +} + +/* Login Form +=================================== */ + +.login { + right: 0; + left: auto; +} + +.login label { + float: right; + padding-left: 10px; + padding-right: 0; +} + +form.login input.submit { float: right; } + + +/* Front Page +=================================== */ + +#front-page #hottags { + right: 0; + left: auto; + width: 150px; +} + +#front-page #discussions { + margin-right: 170px; + margin-left: 0; +} + +#front-page #discussions ul { padding: 0 14px 0 0; } + +/* Topic Page +=================================== */ + +.infobox ul { margin: 10px 20px 10px 0; } + +#topic-info { + float: right; + padding: 0 0 0 1em; +} + +#topic-tags { + border-right: 1px solid #ccc; + border-left: none; + float: left; + padding: 0 1em 0 0; +} + +#thread li ol, #thread li ul { + margin-right: 40px; + margin-left: 0; +} + +.threadauthor { float: right; } + +.threadauthor small { font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; } + +.threadpost { margin: 0 140px 0 0; } + +#thread .post blockquote { + margin: 0 4ex 0 0; + padding: 0 1ex 0 0; + border-right: 5px solid #ccc; + border-left: none; +} + +.poststuff { font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; } + +.num, #forumlist small { font-family: Tahoma, Verdana,Arial,Helvetica,sans-serif; } + +#manage-tags li { float: right; } + +p.submit { text-align: left; } + +.rss-link { + background-position: 100% 50%; +} + +/* Other +=================================== */ + +#front-search { float: left; } + +#forumlist tr td div.nest { + padding-right: 2.5ex; + padding-left: 0; +} + +#latest th, #forumlist th, #favorites th { + text-align: right; + font-family: Tahoma, Verdana,Arial,Helvetica,sans-serif; +} + +/* Profile Page +=================================== */ + +#profile-menu { + left: 0; + right: auto; +} + +#profile-menu li { + margin-left: 0; + margin-right: 3px; +} + +.user-recent ol { margin: 5px 28px 0 0; } + +/* Search +=================================== */ + +#topic-search-form fieldset { + padding: 10px 10px 10px 0; +} + +#topic-search-form div label { + float: right; + text-align: left; + padding-right: 0; + padding-left: 1em; +} + +#topic-search-form div div { + float: right; +} + +.search-results ol { margin: 5px 28px 0 0; } + +/* Profile Edit +=================================== */ + +#login-page fieldset, +#register-page fieldset, +#profile-page fieldset { + padding: 10px 10px 10px 0; +} + +#login-page fieldset table, +#register-page fieldset table, +#profile-page fieldset table { + text-align: right; +} + +#login-page fieldset table th, +#register-page fieldset table th, +#profile-page fieldset table th { + text-align: left; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/style.css b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/style.css new file mode 100644 index 0000000..9902b80 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/style.css @@ -0,0 +1,1030 @@ +/* +Theme Name: Kakumei +Theme URI: http://bbpress.org/ +Description: The "revolutionized" new face of bbPress. +Version: 1.0 +Author: Bryan Veloso with updates by Sam Bauers +Author URI: +*/ + +/* Globals +=================================== */ + +* { margin: 0; padding: 0; } + +body { + margin-bottom: 50px; + background-color: #fff; + font: 62.5% 'Trebuchet MS', 'Lucida Grande', Verdana, Tahoma, Arial; +} + +a { color: #2e6e15; text-decoration: none; } +a:hover { color: #006400; } + +.alt { background-color: #fff; } + +pre, code { font: 1.0em Monaco, 'Courier New', monospace; } + +pre, p { margin-bottom: 1.0em; } + +.left { float: left; } + +.right { float: right; } + +.clear { clear: both; } + +.delete:hover { + background-color: #c00; + color: #fff; +} + +h1 { font-size: 2em; } + +h2 { font-size: 1.3em; } + +fieldset { + border-width: 0; + padding: 0; + margin: 0; +} + +img.avatar { border: 1px solid #ddd; } + +.bozo { background-color: #eeee88; } + +.alt.bozo { background-color: #ffff99; } + +.deleted { background-color: #ee8888; } + +.alt.deleted { background-color: #ff9999; } + +/* Structure +=================================== */ + +#wrapper { + background: #fff url('images/page_header_tile.png') repeat-x 0px -15px; +} + +#header { + background: url('images/page_header_bblogo.png') no-repeat bottom right; /* Remove to get rid of bb emblem. */ + margin: 0 auto 10px; + width: 760px; + height: 116px; + position: relative; +} + +#header h1 { + font-family: Georgia; + font-style: italic; + overflow: auto; + position: absolute; + display: block; + color: #444; + text-align: right; + letter-spacing: -1px; + right: 53px; + bottom: 26px; + padding: 6px; + z-index: 2; +} + +#header p.description { + font-size: 1.2em; + font-family: Georgia; + font-style: italic; + overflow: auto; + position: absolute; + display: block; + color: #666; + text-align: right; + right: 53px; + bottom: 13px; + padding: 6px; + z-index: 2; +} + +#header p { margin-bottom: 0; } + +#header h1 a { color: #555; text-decoration: none; } +#header h1 a:hover { color: #666; } + +#header div.search { + float: right; + padding: 4px; + background-color: #aaa; + -moz-border-radius-bottomleft: 4px; + -khtml-border-bottom-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -khtml-border-bottom-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +#header div.search input { + border: 1px solid #999; + background-color: #fdfdfd; + padding: 2px; + line-height: 14px; + font-size: 12px; + margin: 0; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +#header div.search input.submit { + background-color: #ccc; + line-height: 15px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + padding: 2px 4px; +} + +#header div.search input.submit:hover { + background-color: #ddd; + color: rgb(0, 100, 0); +} + +#header div.search input.submit:active { + border-color: rgb(0, 100, 0); +} + +#main { + font-size: 1.2em; + width: 760px; + margin: 0 auto 25px; + position: relative; +} + +.bbcrumb { + text-transform: uppercase; + font-size: 0.9em; + letter-spacing: 1px; + padding: 5px 0 20px; + font-weight: bold; +} + +#footer { + font-family: Georgia; + font-style: italic; + border-top: 1px solid #ccc; + margin: auto; + color: #666; + font-size: 1.0em; + padding-top: 10px; + clear: both; + text-align: right; + width: 760px; +} + +#footer p.showoff { + color: #888; +} + +.notice { + border: 1px solid #4c9545; + background-color: #abd8a2; + color: #4c9545; + font-size: 1.1em; + font-weight: bold; + padding: 10px 15px; + margin: 0 0 1.1em; +} + +.notice.error { + border-color: #852424; + background-color: #ca8a8a; + color: #5d2424; +} + +.notice p { margin-bottom: 0; } + +/* Login Form +=================================== */ + +.login { + position: absolute; + bottom: 31px; + left: 0; + font-weight: normal; + color: #444; + width: 100%; + z-index: 1; + font-size: 12px; +} + +form.login { + bottom: 15px; +} + +.login p { padding: 0 0 8px; } + +.login label { + display: block; + float: left; + padding-right: 10px; + line-height: 14px; +} + +form.login input { + border: 1px solid #999; + padding: 2px; + line-height: 14px; + font-size: 12px; + margin: 0; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background-color:#fff; +} + +form.login input.submit { + background-color: #ccc; + float: left; + margin-top: 14px; + margin-bottom: -10px; + display: block; + line-height: 15px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + padding: 2px 4px; +} + +form.login input.submit:hover { + background-color: #ddd; + color: rgb(0, 100, 0); +} + +form.login input.submit:active { + border-color: rgb(0, 100, 0); +} + +div.remember label { + clear: both; + padding: 0; + margin: 6px 0 0 0; + line-height: 12px; +} + +form.login input#remember { + border-width: 0; + padding: 0; + margin: 0; + vertical-align: baseline; +} + +/* Front Page +=================================== */ + +#front-page #hottags { + position: absolute; + top: 0; + left: 0; + width: 150px; + overflow: hidden; +} + +#front-page #discussions { + margin-left: 170px; + width: 590px; +} + +.frontpageheatmap { + font-weight: normal; + line-height: 30px; + padding-bottom: 10px; +} + +#front-page #main h2, #forum-page #main h2, h2.post-form, #userlogin, #currentfavorites, #register, #passwordrecovery { + color: #555; + border-bottom: 1px solid #ddd; + margin: 0 0 10px; + padding: 0 0 5px; +} + +#front-page #discussions ul { padding: 0 0 0 14px; } + +.sticky { background-color: #a1d29a; } + +/* Page navigation +=================================== */ + +a.page-numbers, +span.page-numbers { + border-right: 1px solid #bbbbbb; + border-bottom: 1px solid #bbbbbb; + padding: 4px 4px 2px 5px; + margin-left: 5px; + background-image: url('images/page-links-background.gif'); + background-repeat: no-repeat; + background-position: 0 0; +} + +span.page-numbers.current { + color: #ffffff; + background-position: 0 -100px; +} + +#latest a.page-numbers { + font-size: 0.8em; + padding: 3px 3px 1px 4px; + margin-left: 3px; +} + +a.prev.page-numbers, +a.next.page-numbers, +span.page-numbers.dots { + border-width: 0; + padding: 0 4px; + background-image: none; +} + +span.page-numbers.dots { + padding: 0; +} + +a.page-numbers:hover { + background-position: 0 -100px; +} + +a.prev.page-numbers:hover, +a.next.page-numbers:hover { + color: #006400; +} + +/* Topic Page +=================================== */ + +.infobox { + border: 1px solid #ccc; + border-width: 1px 0; + padding: 1em 0; +} + +.infobox ul { + margin: 10px 0 10px 20px; + padding: 0; + list-style-type: disc; +} + +.infobox ul li { padding-bottom: 3px; } + +#topic-info { + float: left; + padding: 0 1em 0 0; +} + +#topic-tags { + border-left: 1px solid #ccc; + float: right; + padding: 0 0 0 1em; +} + +#tag-form p { + margin-bottom: 0; +} + +input#tag { + border: 1px solid #999; + padding: 2px; + line-height: 14px; + font-size: 12px; + margin: 0; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +input#tagformsub { + border: 1px solid #999; + line-height: 14px; + font-size: 12px; + margin: 0; + line-height: 15px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + padding: 2px 4px; +} + +input#tagformsub:hover { + background-color: #ddd; + color: rgb(0, 100, 0); +} + +input#tagformsub:active { + border-color: rgb(0, 100, 0); +} + +.nav { + margin: 15px 0; + padding: 12px 0; + text-align: center; +} + +#thread { + list-style: none; + margin: 2em 0 0 0; + padding: 0; +} + +#thread li { + line-height: 1.5em; + clear: both; + /* Hack to force padding on .threadauthor on IE */ + border-top: 1px solid #fff; +} + +#thread li ol, #thread li ul { margin-left: 40px; } + +#thread li ol li, #thread li ul li { padding: 0; } + +.threadauthor { + float: left; + padding: 1em 1em 0 1em; + width: 120px; +} + +.threadauthor p { margin: 0; } + +.threadauthor small { font: 11px Verdana, Arial, Helvetica, sans-serif; } + +.threadpost { + padding: 1.5em 1em; + margin-left: 140px; + background-color: #eee; + -moz-border-radius: 6px; + -khtml-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; +} + +#thread li.alt .threadpost { background-color: transparent; } + +#thread li.deleted { background-color: transparent; } + +#thread li.deleted .threadpost { background-color: #ee8888; } + +#thread li.alt.deleted .threadpost { background-color: #ff9999; } + +#thread li .post-undelete-link, #thread li.deleted .post-delete-link { display: none; } +#thread li.deleted .post-undelete-link { display: inline; } + +#thread li.deleted .before-post-delete-link, #thread li .before-post-undelete-link { display: none; } +#thread li.deleted span.before-post-undelete-link { display: inline; } +#thread li.deleted div.before-post-undelete-link { display: block; } +#thread li.deleted li.before-post-undelete-link { display: block; } + +#thread li.pingback { + margin-left: 140px; + margin-top: 2px; + margin-bottom: 2px; + background-color: #e4f3e1; + -moz-border-radius: 6px; + -khtml-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + border: 0.2em solid #e4f3e1; +} + +#thread li.pingback.alt { + background-color: #fff; +} + +#thread li.pingback .threadpost { + background-color: #e4f3e1; +} + +#thread li.pingback.alt .threadpost { + background-color: #fff; +} + +#thread li.pingback .threadauthor { + float: none; + padding: 0.9em 0.9em 0; + width: auto; +} + +#thread li.pingback .threadauthor strong { + font-weight: normal; +} + +#thread li.pingback .threadauthor small { + color: #333; +} + +#thread li.pingback .threadpost { + margin-left: 0; + padding: 0.5em 0.9em 1.5em; +} + +#thread li.pingback .post { + font-style: italic; + color: #333; + margin: 0 0 0 2.4em; + padding: 0 0 0 0.8em; + border-left: 3px dotted #ccc; +} + +#thread .post { + _height: 90px; /* Hack to fix broken .alt coloring in IE6 */ +} + +#thread .post blockquote { + margin: 0 0 0 2.4em; + padding: 0 0 0 0.8em; + border-left: 3px solid #ccc; +} + +#thread .post li { clear:none; } + +.poststuff { + clear:both; + _clear: none; /* Hack to fix broken .alt coloring in IE6 */ + border-top: 1px dotted #ccc; + margin: 10px 0 0; + padding: 5px 0 0; + font: 10px Verdana, Arial, Helvetica, sans-serif; + text-transform: uppercase; +} + +.num, #forumlist small { + font: 11px Verdana,Arial,Helvetica,sans-serif; + text-align: center; + white-space: nowrap; +} + +h2.post-form { + border-bottom-width: 0; + margin-bottom: 2px; +} + +.postform { + background-color: #f0f0f0; + padding: 1em; + margin-bottom: 1em; + -moz-border-radius: 6px; + -khtml-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; +} + +.postform textarea { + height: 12em; + margin: 5px 0; + padding: 5px; + width: 724px; + max-width: 724px; + border: 1px solid #ccc; + display: block; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background-color:#fff; +} + +.postform label { display: block; } + +.postform #author, +.postform #email, +.postform #topic, +.postform #tags-input, +.postform #url { + margin: 5px 0; + padding: 5px; + width: 724px; + border: 1px solid #ccc; + display: block; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background-color:#fff; +} + +.postform p#post-form-forum-container label span { + font-weight: bold; + font-style: italic; +} + +#manage-tags { + margin: 10px 0; + list-style: none; +} + +#manage-tags li { + float: left; + width: 200px; + padding-bottom: 10px; +} + +p.submit { text-align: right; } + +p.allowed { margin-bottom: 0; } + +.topiclink { display: block; } + +.topictitle { + font-size: 26px; + font-weight: normal; + display: inline; +} + +p.rss-link { + text-align: right; +} + +a.rss-link { + padding: 6px 0 6px 20px; + background-image: url('images/feed-icon-16x16.gif'); + background-repeat: no-repeat; + background-position: 0 50%; +} + +#topic-move, +#topic-move fieldset, +#topic-move fieldset div { + display: inline; +} + +#topic-move input { + font-family: inherit; + background: none; + border: none; + cursor: pointer; + color: #2e6e15; + font-size: 1em; +} + +#topic-move input:hover { color: #006400; } + +/* Other +=================================== */ + +#content .frontpageheatmap a { + font-weight: normal; + text-decoration: none; +} + +#content .infobox li { margin-bottom: 2px; } + +#content .nav a { + border: 1px solid #ccc; + font-weight: normal; +} +#content .nav a:hover { + border: 1px solid #999; +} +#content a:visited { + font-weight: normal; +} + +#front-search { + float: right; + margin-top: -8px; +} + +#latest td, #forumlist td, #favorites td { padding: 5px 10px; } + +#forumlist tr td div.nest { + padding-left: 2.5ex; +} + +#latest tr:hover, #forumlist tr:hover, #favorites tr:hover { background-color: #e4f3e1; } + +#latest th, #forumlist th, #favorites th { + text-align: left; + background-color: rgb(102, 102, 102); + font: 11px Verdana,Arial,Helvetica,sans-serif; + font-weight: normal; + padding: 5px 9px; + color: rgb(255, 255, 255); +} + +#latest th a, #forumlist th a, #favorites th a { + color: rgb(200, 200, 200); + font-style: italic; +} + +#latest th a:hover, #forumlist th a:hover, #favorites th a:hover { + color: rgb(255, 255, 255); +} + +tr.bb-category td { + background-color: #ddd; +} + +#latest, #forumlist, #favorites { + background-color: #f7f7f7; + margin-bottom: 3em; + width: 100%; +} + +#latest, #forumlist { + margin-top: -0.9em; +} + +#discussions .nav { + margin-top: -2em; + margin-bottom: 1em; +} + +/* Profile Page +=================================== */ + +#profile-menu { + list-style: none; + position: absolute; + right: 0; +} + +#profile-menu li { + display: inline; + margin-left: 3px; +} + +#profile-menu li a { + font-size: 1.1em; + background-color: #ddd; + padding: 4px 7px; + border-top: 3px double #9e9e9e; + position: relative; + top: -10px; + -moz-border-radius-bottomleft: 6px; + -khtml-border-bottom-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -moz-border-radius-bottomright: 6px; + -khtml-border-bottom-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +#profile-menu li.current a { + background-color: #bbb; + border-top: 1px solid #9e9e9e; +} + +#profile-menu li a:hover { + background-color: #e4f3e1; +} + +#useravatar { margin-bottom: 1em; } + +#useravatar img { display: block; border-width: 3px; border-style: double; } + +#userinfo { margin-top: 10px; } + +#userinfo dt { font-weight: bold; } + +#userinfo dd { margin: 0 0 5px; } + +#useractivity { margin: 15px 0 5px; } + +.user-recent { margin: 0 0 10px; } + +.user-recent ol { margin: 5px 0 0 28px; } + +.user-recent ol li { margin: 0 0 3px; } + +/* Search +=================================== */ + +#topic-search-form fieldset { + border-top: 3px double #ccc; + border-bottom: 1px solid #ccc; + border-left: none; + border-right: none; + padding: 10px 0 10px 10px; + margin-bottom: 15px; + background-color: #f6f6f6; +} + +#topic-search-form div { + clear: both; +} + +#topic-search-form div label { + display: block; + float: left; + padding: 5px; + text-align: right; + width: 20%; + vertical-align: top; + padding-right: 1em; + font-weight: bold; +} + +#topic-search-form div div { + display: block; + float: left; + clear: none; + padding: 5px; +} + +#topic-search-form div div input { + width: 280px; + border: 1px solid #ccc; + padding: 2px; + line-height: 14px; + font-size: 12px; + margin: 0; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +#search-for { margin: 15px 0 5px; } + +ul#search-suggestions { margin-left: 25px; } + +.search-results { margin: 0 0 10px; } + +.search-results ol { margin: 5px 0 0 28px; } + +.search-results ol li { border-bottom: 1px solid #ccc; padding: 2px 5px 0 5px; min-height: 50px; } + +.search-results ol li.alt { background-color: #f8f8f8; } + +.search-results ol li:hover { background-color: #e4f3e1; } + +.search-results ol li a.result { font-size: 15px; } + +.search-results ol li span.freshness { float: right; font-style: italic; } + +/* Login, Register, Profile Edit +=================================== */ + +#login-page fieldset, +#register-page fieldset, +#profile-page fieldset { + border-top: 3px double #ccc; + border-bottom: 1px solid #ccc; + border-left: none; + border-right: none; + padding: 10px 0 10px 10px; + margin-bottom: 15px; + background-color: #f6f6f6; +} + +#login-page legend, +#register-page legend, +#profile-page legend { + font-weight: bold; + padding: 0 15px; +} + +#login-page fieldset table, +#register-page fieldset table, +#profile-page fieldset table { + text-align: left; + margin: 0 15px; + width: 95%; + border-collapse: collapse; +} + +#login-page fieldset table th, +#register-page fieldset table th, +#profile-page fieldset table th { + padding: 5px; + text-align: right; + width: 20%; + vertical-align: top; + padding-right: 1em; +} + +#login-page fieldset table tr.error th em, +#register-page fieldset table tr.error th em, +#profile-page fieldset table tr.error th em { + position: absolute; + /* fieldset:padding-left + table:margin-left + table:width + td:padding-left + input:width + input:padding-right */ + left: 458px; /* 10 + 15 + 20% * ( 95% * (760 - 10) ) + 5 + 280 + 5 */ + margin-left: 1em; /* th:padding-right = 1em */ + color: red; + font-style: normal; +} + +#login-page fieldset table td, +#register-page fieldset table td, +#profile-page fieldset table td { + padding: 5px; +} + +#login-page fieldset table td p, +#register-page fieldset table td p, +#profile-page fieldset table td p{ + margin: 5px 0; +} + +#login-page fieldset input[type=text], +#register-page fieldset input[type=text], +#profile-page fieldset input[type=text], +#login-page fieldset input[type=password], +#profile-page fieldset input[type=password] { + width: 280px; + border: 1px solid #ccc; + padding: 2px; + line-height: 14px; + font-size: 12px; + margin: 0; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background-color:#fff; +} + +#login-page fieldset p, +#register-page fieldset p, +#profile-page fieldset p { + font-size: 11px; + margin: 10px 16px; +} + +#login-page tr.form-required label:before, +#register-page tr.form-required label:before, +#profile-page tr.form-required label:before, +p.required-message:before { + content: ' * '; + color: red; + vertical-align: 10%; +} + +.form-invalid { + background-color: #ffebe8 !important; +} + +.form-invalid input { + padding: 1px; + border: 1px solid #c00 !important; +} + +.hidden { + display: none; +} + +#pass-strength-result { + padding: 2px; + text-align: center; + width: 280px; + border: 1px solid #ccc; + background-color: #e3e3e3; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +#pass-strength-result.bad { + background-color: #ffeff7; + border-color: #c69; +} + +#pass-strength-result.good { + background-color: #effff4; + border-color: #66cc87; +} + +#pass-strength-result.short { + background-color: #e3e3e3; +} + +#pass-strength-result.strong { + background-color: #59ef86; + border-color: #319f52; +} + +p.submit input { + background-color: #ccc; + border: 1px solid #999; + padding: 2px 4px; + line-height: 14px; + font-size: 12px; + margin: 0; + line-height: 15px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} + +p.submit input:hover { + background-color: #ddd; + color: rgb(0, 100, 0); +} + +p.submit input:active { + border-color: rgb(0, 100, 0); +} diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/tag-single.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/tag-single.php new file mode 100644 index 0000000..6a7dab5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/tag-single.php @@ -0,0 +1,41 @@ + + +
      » »
      + + + + + + + + + + + + + + + +> + + + + + + + +
      + + + + '' ) ); ?> + + + + + + + + + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/tags.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/tags.php new file mode 100644 index 0000000..91e9f9f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/tags.php @@ -0,0 +1,11 @@ + + +
      »
      + +

      + +
      + +
      + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/topic-tags.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/topic-tags.php new file mode 100644 index 0000000..7c82740 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/topic-tags.php @@ -0,0 +1,16 @@ +
      +

      + + + + + + + +

      tags yet.'), bb_get_tag_page_link() ); ?>

      + + + + + +
      diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/topic.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/topic.php new file mode 100644 index 0000000..2b81780 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/topic.php @@ -0,0 +1,57 @@ + + +
      +
      + +
      + +> +() +() + +
        +
      • + +
      • Latest reply from %2$s'), esc_attr( get_topic_last_post_link() ), get_topic_last_poster()) ?>
      • + + + id="favorite-toggle"> + +
      +
      + + + +
      +
      + + + '' ) ); ?> +
      +
        + + +
      1. > + +
      2. + + +
      +

      + + '' ) ); ?> + +topic_id ) ) : ?> + + +

      +

      + + + +
      + +
      + + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/view.php b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/view.php new file mode 100644 index 0000000..5f2e8db --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/kakumei/view.php @@ -0,0 +1,44 @@ + + +
      »
      + + + + + + + + + + + + + +> + + + + + + + + + +> + + + + + + + +
      + + + + + + + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/readme.txt b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/readme.txt new file mode 100644 index 0000000..12f28e0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/bb-templates/readme.txt @@ -0,0 +1,3 @@ +This directory is reserved for themes distributed with the bbPress core package. + +If you wish to install more themes, you should create a new directory called "my-templates" in the base directory of your bbPress installation and install them there, not here. \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/edit.php b/wp-content/plugins/buddypress/bp-forums/bbpress/edit.php new file mode 100644 index 0000000..9059217 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/edit.php @@ -0,0 +1,28 @@ +post_status && 'all' == $_GET['view'] ) // We're trying to edit a deleted post + add_filter('bb_is_first_where', 'bb_no_where'); + +$topic = get_topic( $bb_post->topic_id ); + +if ( bb_is_first( $bb_post->post_id ) && bb_current_user_can( 'edit_topic', $topic->topic_id ) ) + $topic_title = $topic->topic_title; +else + $topic_title = false; + + +bb_load_template( 'edit-post.php', array('topic_title') ); + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/favorites.php b/wp-content/plugins/buddypress/bp-forums/bbpress/favorites.php new file mode 100644 index 0000000..41b1e53 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/favorites.php @@ -0,0 +1,48 @@ +topic_status ) { + exit; + } + + if ( $fav ) { + bb_add_user_favorite( $user_id, $topic_id ); + } else { + bb_remove_user_favorite( $user_id, $topic_id ); + } + + $ref = wp_get_referer(); + if ( false !== strpos( $ref, bb_get_uri( null, null, BB_URI_CONTEXT_TEXT ) ) ) { + bb_safe_redirect( $ref ); + } else { + wp_redirect( get_topic_link( $topic_id ) ); + } + exit; +} + +if ( !bb_is_profile() ) { + $sendto = get_profile_tab_link( $user->ID, 'favorites' ); + wp_redirect( $sendto ); + exit; +} + +if ( $topics = get_user_favorites( $user->ID, true ) ) { + bb_cache_last_posts( $topics ); +} + +$favorites_total = isset( $user->favorites ) ? count( explode( ',', $user->favorites ) ) : 0; + +bb_load_template( 'favorites.php', array( 'favorites_total', 'self' ) ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/forum.php b/wp-content/plugins/buddypress/bp-forums/bbpress/forum.php new file mode 100644 index 0000000..a963f82 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/forum.php @@ -0,0 +1,26 @@ + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/index.php b/wp-content/plugins/buddypress/bp-forums/bbpress/index.php new file mode 100644 index 0000000..b21a2d1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/index.php @@ -0,0 +1,24 @@ + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/license.txt b/wp-content/plugins/buddypress/bp-forums/bbpress/license.txt new file mode 100644 index 0000000..7e14f38 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/license.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/page.php b/wp-content/plugins/buddypress/bp-forums/bbpress/page.php new file mode 100644 index 0000000..7726408 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/page.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/profile-base.php b/wp-content/plugins/buddypress/bp-forums/bbpress/profile-base.php new file mode 100644 index 0000000..84cabdc --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/profile-base.php @@ -0,0 +1,19 @@ + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/profile-edit.php b/wp-content/plugins/buddypress/bp-forums/bbpress/profile-edit.php new file mode 100644 index 0000000..dc3b622 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/profile-edit.php @@ -0,0 +1,179 @@ +capabilities ) ) { + $user->capabilities = array( 'inactive' => true ); +} + +// Store the profile info keys +$profile_info_keys = bb_get_profile_info_keys( 'profile-edit' ); + +// Store additional keys if the current user has access to them +if ( bb_current_user_can('edit_users') ) { + $profile_admin_keys = bb_get_profile_admin_keys( 'profile-edit' ); + $assignable_caps = bb_get_assignable_caps(); +} + +// Instantiate the error object +$errors = new WP_Error; + +if ( 'post' == strtolower($_SERVER['REQUEST_METHOD']) ) { + $_POST = stripslashes_deep( $_POST ); + bb_check_admin_referer( 'edit-profile_' . $user_id ); + + // Fix the URL before sanitizing it + $user_url = bb_fix_link( $_POST['user_url'] ); + + // Sanitize the profile info keys and check for missing required data + foreach ( $profile_info_keys as $key => $label ) { + $$key = apply_filters( 'sanitize_profile_info', $_POST[$key], $key, $_POST[$key] ); + if ( !$$key && $label[0] == 1 ) { + $errors->add( $key, sprintf( __( '%s is required.' ), esc_html( $label[1] ) ) ); + $$key = false; + } + } + + // Find out if we have a valid email address + if ( isset( $user_email ) && !$user_email = is_email( $user_email ) ) { + $errors->add( 'user_email', __( 'Invalid email address' ), array( 'data' => $_POST['user_email'] ) ); + } + + // Deal with errors for users who can edit others data + if ( bb_current_user_can('edit_users') ) { + // Get the user object + $user_obj = new BP_User( $user->ID ); + + // If we are deleting just do it and redirect + if ( isset( $_POST['delete-user'] ) && $_POST['delete-user'] && $bb_current_id != $user->ID ) { + if ( !bb_current_user_can( 'keep_gate' ) && 'keymaster' == $user_obj->roles[0] ) { /* Only a keymaster can delete another keymaster */ + $errors->add( 'delete', __( 'You can not delete this user!' ) ); + } else { + bb_delete_user( $user->ID ); + wp_redirect( bb_get_uri(null, null, BB_URI_CONTEXT_HEADER) ); + exit; + } + } + + // Store the new role + $role = $_POST['role']; + + // Deal with errors with the role + if ( !isset($wp_roles->role_objects[$role]) ) { + $errors->add( 'role', __( 'Invalid Role' ) ); + } elseif ( !bb_current_user_can( 'keep_gate' ) && ( 'keymaster' == $role || 'keymaster' == $user_obj->roles[0] ) ) { + $errors->add( 'role', __( 'You are not the Gate Keeper.' ) ); + } elseif ( 'keymaster' == $user_obj->roles[0] && 'keymaster' != $role && $bb_current_id == $user->ID ) { + $errors->add( 'role', __( 'You are Keymaster, so you may not demote yourself.' ) ); + } + + // Sanitize the profile admin keys and check for missing required data + foreach ( $profile_admin_keys as $key => $label ) { + if ( isset( $$key ) ) + continue; + + $$key = apply_filters( 'sanitize_profile_admin', $_POST[$key], $key, $_POST[$key] ); + if ( !$$key && $label[0] == 1 ) { + $errors->add( $key, sprintf( __( '%s is required.' ), esc_html( $label[1] ) ) ); + $$key = false; + } + } + + // Create variable for the requested roles + foreach ( $assignable_caps as $cap => $label ) { + if ( isset($$cap) ) + continue; + + $$cap = ( isset($_POST[$cap]) && $_POST[$cap] ) ? 1 : 0; + } + } + + // Deal with errors generated from the password form + if ( bb_current_user_can( 'change_user_password', $user->ID ) ) { + if ( ( !empty($_POST['pass1']) || !empty($_POST['pass2']) ) && $_POST['pass1'] !== $_POST['pass2'] ) { + $errors->add( 'pass', __( 'You must enter the same password twice.' ) ); + } elseif( !empty($_POST['pass1']) && !bb_current_user_can( 'change_user_password', $user->ID ) ) { + $errors->add( 'pass', __( "You are not allowed to change this user's password." ) ); + } + } + + // If there are no errors then update the records + if ( !$errors->get_error_codes() ) { + do_action('before_profile_edited', $user->ID); + + if ( bb_current_user_can( 'edit_user', $user->ID ) ) { + // All these are always set at this point + bb_update_user( $user->ID, $user_email, $user_url, $display_name ); + + // Add user meta data + foreach( $profile_info_keys as $key => $label ) { + if ( 'display_name' == $key || 'ID' == $key || strpos($key, 'user_') === 0 ) + continue; + if ( $$key != '' || isset($user->$key) ) + bb_update_usermeta( $user->ID, $key, $$key ); + } + } + + if ( bb_current_user_can( 'edit_users' ) ) { + if ( !array_key_exists($role, $user->capabilities) ) { + $user_obj->set_role($role); // Only support one role for now + if ( 'blocked' == $role && 'blocked' != $old_role ) + bb_break_password( $user->ID ); + elseif ( 'blocked' != $role && array_key_exists( 'blocked', $user->capabilities ) ) + bb_fix_password( $user->ID ); + } + foreach( $profile_admin_keys as $key => $label ) + if ( $$key != '' || isset($user->$key) ) + bb_update_usermeta( $user->ID, $key, $$key ); + foreach( $assignable_caps as $cap => $label ) { + if ( ( !$already = array_key_exists($cap, $user->capabilities) ) && $$cap) { + $user_obj->add_cap($cap); + } elseif ( !$$cap && $already ) { + $user_obj->remove_cap($cap); + } + } + } + + if ( bb_current_user_can( 'change_user_password', $user->ID ) && !empty($_POST['pass1']) ) { + $_POST['pass1'] = addslashes($_POST['pass1']); + bb_update_user_password( $user->ID, $_POST['pass1'] ); + + if ( bb_get_current_user_info( 'ID' ) == $user->ID ) { + bb_clear_auth_cookie(); + bb_set_auth_cookie( $user->ID ); + } + } + + do_action('profile_edited', $user->ID); + + wp_redirect( add_query_arg( 'updated', 'true', get_user_profile_link( $user->ID ) ) ); + exit; + } +} + +bb_load_template( 'profile-edit.php', array('profile_info_keys', 'profile_admin_keys', 'assignable_caps', 'user_email', 'bb_roles', 'errors', 'self') ); + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/profile.php b/wp-content/plugins/buddypress/bp-forums/bbpress/profile.php new file mode 100644 index 0000000..79dfb7a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/profile.php @@ -0,0 +1,31 @@ +user_registered ); +$profile_info_keys = bb_get_profile_info_keys(); + +if ( !isset( $_GET['updated'] ) ) + $updated = false; +else + $updated = true; + +do_action( 'bb_profile.php_pre_db', $user_id ); + +if ( isset($user->is_bozo) && $user->is_bozo && $user->ID != bb_get_current_user_info( 'id' ) && !bb_current_user_can( 'moderate' ) ) + $profile_info_keys = array(); + +$posts = bb_get_recent_user_replies( $user_id ); +$topics = get_recent_user_threads( $user_id ); + +bb_load_template( 'profile.php', array('reg_time', 'profile_info_keys', 'updated', 'threads'), $user_id ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/readme.txt b/wp-content/plugins/buddypress/bp-forums/bbpress/readme.txt new file mode 100644 index 0000000..a9648f5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/readme.txt @@ -0,0 +1,22 @@ +bbPress is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +bbPress is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. See the GNU General Public License version 2 for more +details. + +You should have received a copy of the GNU General Public License in a file +named "license.txt" along with this program; if not, you may request a copy by +writing to: + + Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor + Boston, MA + 02110-1301 USA + +The license is also available for viewing on the world wide web at: + + http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/register.php b/wp-content/plugins/buddypress/bp-forums/bbpress/register.php new file mode 100644 index 0000000..99c2437 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/register.php @@ -0,0 +1,72 @@ +add( 'user_login', sprintf( __( '%s is an invalid username. How\'s this one?' ), esc_html( $_POST['user_login'] ) ) ); + } else { + $bb_register_error->add( 'user_login', sprintf( __( '%s is an invalid username.' ), esc_html( $_POST['user_login'] ) ) ); + } + } + + foreach ( $profile_info_keys as $key => $label ) { + if ( is_string($$key) ) + $$key = esc_attr( $$key ); + elseif ( is_null($$key) ) + $$key = esc_attr( $_POST[$key] ); + + if ( !$$key && $label[0] == 1 ) { + $bad_input = true; + $$key = false; + $bb_register_error->add( $key, sprintf( __( '%s is required' ), $label[1] ) ); + } + } + + if ( !$bad_input ) { + $user_id = bb_new_user( $user_login, $_POST['user_email'], $_POST['user_url'] ); + if ( is_wp_error( $user_id ) ) { // error + foreach ( $user_id->get_error_codes() as $code ) + $bb_register_error->add( $code, $user_id->get_error_message( $code ) ); + if ( $bb_register_error->get_error_message( 'user_login' ) ) + $user_safe = false; + } elseif ( $user_id ) { // success + foreach( $profile_info_keys as $key => $label ) + if ( strpos($key, 'user_') !== 0 && $$key !== '' ) + bb_update_usermeta( $user_id, $key, $$key ); + do_action('register_user', $user_id); + + bb_load_template( 'register-success.php', $_globals ); + exit; + } // else failure + } +} + +if ( isset( $_GET['user'] ) ) + $user_login = sanitize_user( $_GET['user'], true ) ; +elseif ( isset( $_POST['user_login'] ) && !is_string($user_login) ) + $user_login = ''; + +bb_load_template( 'register.php', $_globals ); + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/rss.php b/wp-content/plugins/buddypress/bp-forums/bbpress/rss.php new file mode 100644 index 0000000..a99b6a9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/rss.php @@ -0,0 +1,199 @@ +topic_id; + +} elseif ( isset($_GET['profile']) || bb_get_path() == 'profile' ) { + + // Profile + $feed = 'profile'; + $feed_id = isset($_GET['profile']) ? $_GET['profile'] : bb_get_path(2); + +} elseif ( isset($_GET['tag']) || bb_get_path() == 'tags' ) { + + if ( isset($_GET['topics']) || bb_get_path(3) == 'topics' ) { + // Tag recent topics + $feed = 'tag-topics'; + } else { + // Tag recent posts + $feed = 'tag-posts'; + } + $feed_id = isset($_GET['tag']) ? $_GET['tag'] : bb_get_path(2); + +} elseif ( isset($_GET['forum']) || bb_get_path() == 'forum' ) { + + if ( isset($_GET['topics']) || bb_get_path(3) == 'topics' ) { + // Forum recent topics + $feed = 'forum-topics'; + } else { + // Forum recent posts + $feed = 'forum-posts'; + } + $forum = bb_get_forum(isset($_GET['forum']) ? $_GET['forum'] : bb_get_path(2)); + $feed_id = $forum->forum_id; + +} elseif ( isset($_GET['topics']) || bb_get_path() == 'topics' ) { + + // Recent topics + $feed = 'all-topics'; + +} else { + + // Recent posts + $feed = 'all-posts'; + +} + +// Initialise the override variable +$bb_db_override = false; +do_action( 'bb_rss.php_pre_db' ); + +if ( !$bb_db_override ) { + + // Get the posts and the title for the given feed + switch ($feed) { + case 'view': + if ( !isset($bb_views[$feed_id]) ) + die(); + if ( !$bb_views[$feed_id]['feed'] ) + die(); + if ( !$topics_object = new BB_Query( 'topic', $bb_views[$feed_id]['query'], "bb_view_$feed_id" ) ) + die(); + + $topics = $topics_object->results; + + $posts = array(); + foreach ( (array) $topics as $topic ) { + $posts[] = bb_get_first_post($topic->topic_id); + } + + $title = sprintf( __( '%1$s » View: %2$s' ), bb_get_option( 'name' ), $bb_views[$feed_id]['title'] ); + $link = get_view_link($feed_id); + $link_self = bb_get_view_rss_link($feed_id); + break; + + case 'topic': + if ( !$topic = get_topic ( $feed_id ) ) + die(); + if ( !$posts = get_thread( $feed_id, 0, 1 ) ) + die(); /* Should die here, as the topic posts aren't there, so the topic is most probably deleted/empty */ + $title = sprintf( __( '%1$s » Topic: %2$s' ), bb_get_option( 'name' ), get_topic_title() ); + $link = get_topic_link($feed_id); + $link_self = get_topic_rss_link($feed_id); + break; + + case 'profile': + if ( bb_get_option( 'mod_rewrite' ) === 'slugs') { + if ( !$user = bb_get_user_by_nicename( $feed_id ) ) + $user = bb_get_user( $feed_id ); + } else { + if ( !$user = bb_get_user( $feed_id ) ) + $user = bb_get_user_by_nicename( $feed_id ); + } + if ( !$user ) { + die(); + } + $posts = get_user_favorites( $user->ID ); + + $title = sprintf( __( '%1$s » User Favorites: %2$s' ), bb_get_option( 'name' ), $user->user_nicename ); + $link = get_user_profile_link($feed_id); + $link_self = get_favorites_rss_link($feed_id); + break; + + case 'tag-topics': + if ( !$tag = bb_get_tag( $feed_id ) ) + die(); + $topics = get_tagged_topics( array( 'tag_id' => $tag->tag_id, 'page' => 0 ) ); + + $posts = array(); + foreach ( (array) $topics as $topic ) { + $posts[] = bb_get_first_post($topic->topic_id); + } + + $title = sprintf( __( '%1$s » Tag: %2$s - Recent Topics' ), bb_get_option( 'name' ), bb_get_tag_name() ); + $link = bb_get_tag_link($feed_id); + $link_self = bb_get_tag_topics_rss_link($feed_id); + break; + + case 'tag-posts': + if ( !$tag = bb_get_tag( $feed_id ) ) + die(); + $posts = get_tagged_topic_posts( array( 'tag_id' => $tag->tag_id, 'page' => 0 ) ); + $title = sprintf( __( '%1$s » Tag: %2$s - Recent Posts' ), bb_get_option( 'name' ), bb_get_tag_name() ); + $link = bb_get_tag_link($feed_id); + $link_self = bb_get_tag_posts_rss_link($feed_id); + break; + + case 'forum-topics': + $topics = get_latest_topics( $feed_id ); + + $posts = array(); + foreach ( (array) $topics as $topic) { + $posts[] = bb_get_first_post($topic->topic_id); + } + + $title = sprintf( __( '%1$s » Forum: %2$s - Recent Topics' ), bb_get_option( 'name' ), get_forum_name( $feed_id ) ); + $link = get_forum_link($feed_id); + $link_self = bb_get_forum_topics_rss_link($feed_id); + break; + + case 'forum-posts': + $posts = bb_get_latest_forum_posts( $feed_id ); + $title = sprintf( __( '%1$s » Forum: %2$s - Recent Posts' ), bb_get_option( 'name' ), get_forum_name( $feed_id ) ); + $link = get_forum_link($feed_id); + $link_self = bb_get_forum_posts_rss_link($feed_id); + break; + + // Get just the first post from the latest topics + case 'all-topics': + $topics = get_latest_topics(); + + $posts = array(); + foreach ( (array) $topics as $topic ) { + $posts[] = bb_get_first_post($topic->topic_id); + } + + $title = sprintf( __( '%1$s » Recent Topics' ), bb_get_option( 'name' ) ); + $link = bb_get_uri(); + $link_self = bb_get_topics_rss_link(); + break; + + // Get latest posts by default + case 'all-posts': + default: + $posts = bb_get_latest_posts( 35 ); + $title = sprintf( __( '%1$s » Recent Posts' ), bb_get_option( 'name' ) ); + $link = bb_get_uri(); + $link_self = bb_get_posts_rss_link(); + break; + } +} + +if ( !$posts ) /* We do typecasting in the template, but all themes don't have that! */ + $posts = array(); +else /* Only send 304 if there are posts */ + bb_send_304( $posts[0]->post_time ); + +if (!$description = bb_get_option( 'description' ) ) { + $description = $title; +} +$title = apply_filters( 'bb_title_rss', $title, $feed ); +$description = apply_filters( 'bb_description_rss', $description, $feed ); +$posts = apply_filters( 'bb_posts_rss', $posts, $feed ); +$link_self = apply_filters( 'bb_link_self_rss', $link_self, $feed ); + +bb_load_template( 'rss2.php', array('bb_db_override', 'title', 'description', 'link', 'link_self'), $feed ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/search.php b/wp-content/plugins/buddypress/bp-forums/bbpress/search.php new file mode 100644 index 0000000..8bf9278 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/search.php @@ -0,0 +1,43 @@ +BB_Query_Form( 'post', array(), array( 'order_by' => 'p.post_time', 'count' => true, 'per_page' => $per_page, 'post_status' => 0, 'topic_status' => 0, 'post_text' => $q, 'forum_id', 'tag', 'topic_author', 'post_author' ), 'bb_recent_search' ); + $recent = $bb_query_form->results; + $recent_count = $recent ? $bb_query_form->found_rows : 0; + + /* Relevant */ + $bb_query_form->BB_Query_Form( 'topic', array( 'search' => $q ), array( 'per_page' => $per_page, 'count' => true, 'post_status' => 0, 'topic_status' => 0, 'search', 'forum_id', 'tag', 'topic_author', 'post_author' ), 'bb_relevant_search' ); + $relevant = $bb_query_form->results; + $relevant_count = $relevant ? $bb_query_form->found_rows : 0; + + $search_count = max( $recent_count, $relevant_count ); + + $q = $bb_query_form->get( 'search' ); +} + +do_action( 'do_search', $q ); + +// Cache topics +// NOT bbdb::prepared +if ( $recent ) : + $topic_ids = array(); + foreach ($recent as $bb_post) { + $topic_ids[] = (int) $bb_post->topic_id; + } + $topic_ids = join($topic_ids); + if ( $topics = $bbdb->get_results("SELECT * FROM $bbdb->topics WHERE topic_id IN ($topic_ids)") ) + $topics = bb_append_meta( $topics, 'topic' ); +endif; + +bb_load_template( 'search.php', array( 'q', 'recent', 'relevant', 'per_page', 'search_count' ), $q ); diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/statistics.php b/wp-content/plugins/buddypress/bp-forums/bbpress/statistics.php new file mode 100644 index 0000000..7b1a605 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/statistics.php @@ -0,0 +1,13 @@ +static_title = __('Statistics'); + +bb_load_template( 'stats.php', array('popular') ); + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/tag-add.php b/wp-content/plugins/buddypress/bp-forums/bbpress/tag-add.php new file mode 100644 index 0000000..764f5fb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/tag-add.php @@ -0,0 +1,27 @@ + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/tag-remove.php b/wp-content/plugins/buddypress/bp-forums/bbpress/tag-remove.php new file mode 100644 index 0000000..5cd9827 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/tag-remove.php @@ -0,0 +1,30 @@ + diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/tags.php b/wp-content/plugins/buddypress/bp-forums/bbpress/tags.php new file mode 100644 index 0000000..234c7f9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/tags.php @@ -0,0 +1,17 @@ +tag_id, $page) ) { + bb_cache_last_posts( $topics ); + } + + bb_load_template( 'tag-single.php', array('tag', 'tag_name', 'topics'), $tag->tag_id ); +else : + + bb_load_template( 'tags.php' ); +endif; +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/topic.php b/wp-content/plugins/buddypress/bp-forums/bbpress/topic.php new file mode 100644 index 0000000..42d182f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/topic.php @@ -0,0 +1,49 @@ +forum_id ); + + $tags = bb_get_topic_tags ( $topic_id ); + if ( $tags && $bb_current_id = bb_get_current_user_info( 'id' ) ) { + $user_tags = bb_get_user_tags ( $topic_id, $bb_current_id ); + $other_tags = bb_get_other_tags ( $topic_id, $bb_current_id ); + $public_tags = bb_get_public_tags( $topic_id ); + } elseif ( is_array($tags) ) { + $user_tags = false; + $other_tags = bb_get_public_tags( $topic_id ); + $public_tags =& $other_tags; + } else { + $user_tags = $other_tags = $public_tags = false; + } + + $list_start = ($page - 1) * bb_get_option('page_topics') + 1; + + bb_post_author_cache($posts); +endif; + +bb_load_template( 'topic.php', array('bb_db_override', 'user_tags', 'other_tags', 'list_start'), $topic_id ); + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/view.php b/wp-content/plugins/buddypress/bp-forums/bbpress/view.php new file mode 100644 index 0000000..ea078c9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/view.php @@ -0,0 +1,28 @@ + '-no') ); // -no = yes + $stickies = $sticky_query->results; + $sticky_count = $sticky_query->found_rows; + } + $topic_query = bb_view_query( $view, array('count' => true) ); + $topics = $topic_query->results; + $topic_count = $topic_query->found_rows; + + $view_count = max($sticky_count, $topic_count); +} + +do_action( 'bb_custom_view', $view, $page ); + +bb_load_template( 'view.php', array('view_count', 'stickies'), $view ); + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bbpress/xmlrpc.php b/wp-content/plugins/buddypress/bp-forums/bbpress/xmlrpc.php new file mode 100644 index 0000000..cca1b68 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bbpress/xmlrpc.php @@ -0,0 +1,4087 @@ +' . "\n"; + echo '' . "\n"; + echo ' ' . "\n"; + echo ' bbPress' . "\n"; + echo ' http://bbpress.org/' . "\n"; + echo ' ' . bb_get_uri() . '' . "\n"; + echo ' ' . "\n"; + echo ' ' . "\n"; + echo ' ' . "\n"; + echo ' ' . "\n"; + echo '' . "\n"; + exit; +} + + + +// Load the XML-RPC server/client classes +require_once( BACKPRESS_PATH . '/class.ixr.php' ); + + + +/** + * XML-RPC server class to allow for remote publishing + * + * @since 1.0 + * @package bbPress + * @subpackage Publishing + * @uses class IXR_Server + */ +class BB_XMLRPC_Server extends IXR_Server +{ + /** + * Stores the last error generated by the class + * + * @since 1.0 + * @var object|boolean An instance of the IXR_Error class or false if no error exists + */ + var $error = false; + + /** + * Site options which can be manipulated using XML-RPC + * + * @since 1.0 + * @var array + */ + var $site_options = array(); + + /** + * Whether read-only methods require authentication + * + * @since 1.0 + * @var boolean + **/ + var $auth_readonly = false; + + /** + * Whether user switching is allowed + * + * @since 1.0 + * @var boolean + **/ + var $allow_user_switching = false; + + /** + * Initialises the XML-RPC server + * + * @since 1.0 + * @return void + */ + function BB_XMLRPC_Server() + { + // bbPress publishing API + if ( bb_get_option( 'enable_xmlrpc' ) ) { + $this->methods = array( + // - Demo + 'demo.sayHello' => 'this:sayHello', + 'demo.addTwoNumbers' => 'this:addTwoNumbers', + // - Forums + 'bb.getForumCount' => 'this:bb_getForumCount', + 'bb.getForums' => 'this:bb_getForums', + 'bb.getForum' => 'this:bb_getForum', + 'bb.newForum' => 'this:bb_newForum', + 'bb.editForum' => 'this:bb_editForum', + 'bb.deleteForum' => 'this:bb_deleteForum', + // - Topics + 'bb.getTopicCount' => 'this:bb_getTopicCount', + 'bb.getTopics' => 'this:bb_getTopics', + 'bb.getTopic' => 'this:bb_getTopic', + 'bb.newTopic' => 'this:bb_newTopic', + 'bb.editTopic' => 'this:bb_editTopic', + 'bb.deleteTopic' => 'this:bb_deleteTopic', // Also undeletes + 'bb.moveTopic' => 'this:bb_moveTopic', + 'bb.stickTopic' => 'this:bb_stickTopic', // Also unsticks + 'bb.closeTopic' => 'this:bb_closeTopic', // Also opens + 'bb.getTopicStatusList' => 'this:bb_getTopicStatusList', + // - Posts (replies) + 'bb.getPostCount' => 'this:bb_getPostCount', + 'bb.getPosts' => 'this:bb_getPosts', + 'bb.getPost' => 'this:bb_getPost', + 'bb.newPost' => 'this:bb_newPost', + 'bb.editPost' => 'this:bb_editPost', + 'bb.deletePost' => 'this:bb_deletePost', // Also undeletes + 'bb.getPostStatusList' => 'this:bb_getPostStatusList', + // - Topic Tags + 'bb.getHotTopicTags' => 'this:bb_getHotTopicTags', + 'bb.getTopicTagCount' => 'this:bb_getTopicTagCount', + 'bb.getTopicTags' => 'this:bb_getTopicTags', + 'bb.getTopicTag' => 'this:bb_getTopicTag', + 'bb.addTopicTags' => 'this:bb_addTopicTags', + 'bb.removeTopicTags' => 'this:bb_removeTopicTags', + 'bb.renameTopicTag' => 'this:bb_renameTopicTag', + 'bb.mergeTopicTags' => 'this:bb_mergeTopicTags', + 'bb.destroyTopicTag' => 'this:bb_destroyTopicTag', + // - Options + 'bb.getOptions' => 'this:bb_getOptions', + 'bb.setOptions' => 'this:bb_setOptions' + ); + } + + // Pingback + if ( bb_get_option( 'enable_pingback' ) ) { + $this->methods = array_merge( (array)$this->methods, array( + 'pingback.ping' => 'this:pingback_ping', + 'pingback.extensions.getPingbacks' => 'this:pingback_extensions_getPingbacks' + ) ); + } + + // Tells read-only methods whether they require authentication or not + $this->auth_readonly = apply_filters( 'bb_xmlrpc_auth_readonly', $this->auth_readonly ); + + // Whether or not to allow user switching + $this->allow_user_switching = bb_get_option( 'bb_xmlrpc_allow_user_switching' ); + + $this->initialise_site_option_info(); + $this->methods = apply_filters( 'bb_xmlrpc_methods', $this->methods ); + $this->IXR_Server( $this->methods ); + } + + + + /** + * Utility methods + */ + + /** + * Checks the user credentials supplied in the request to make sure they are valid + * + * @since 1.0 + * @return integer|boolean The user id if the user is valid, otherwise false + * @param string $user_login The users login + * @param string $user_pass The users password in plain text + * @param string $capability The capability to check (optional) + * @param string $message The message to pass back in the error if the capability check fails (optional) + */ + function authenticate( $user_login, $user_pass, $capability = 'read', $message = false ) + { + if ( is_array( $user_login ) ) { + $auth_user_login = (string) $user_login[0]; + $switch_user_login = (string) $user_login[1]; + } else { + $auth_user_login = (string) $user_login; + $switch_user_login = false; + } + + // Check the login + $user = bb_check_login( $auth_user_login, $user_pass ); + if ( !$user || is_wp_error( $user ) ) { + $this->error = new IXR_Error( 403, __( 'Authentication failed.' ) ); + return false; + } + + // Set the current user + $user = bb_set_current_user( $user->ID ); + + // Make sure they are allowed to do this + if ( !bb_current_user_can( $capability ) ) { + if ( !$message ) { + $message = __( 'You do not have permission to read this.' ); + } + $this->error = new IXR_Error( 403, $message ); + return false; + } + + // Switch the user if requested and allowed + if ( $switch_user_login && $this->allow_user_switching && bb_current_user_can( 'edit_users' ) ) { + $user = $this->switch_user( $switch_user_login, $capability, $message ); + } + + return $user; + } + + /** + * Switches the currently active user for incognito actions + * + * @since 1.0 + * @return integer|boolean The user id if the user is valid, otherwise false + * @param string $user_login The users login + * @param string $capability The capability to check (optional) + * @param string $message The message to pass back in the error if the capability check fails (optional) + */ + function switch_user( $user_login, $capability = 'read', $message = false ) + { + // Just get the user, authentication has already been established by the + $user = bb_get_user( $user_login, array( 'by' => 'login' ) ); + if ( !$user || is_wp_error( $user ) ) { + $this->error = new IXR_Error( 400, __( 'User switching failed, the requested user does not exist.' ) ); + return false; + } + + // Set the current user + $user = bb_set_current_user( $user->ID ); + + // Make sure they are allowed to do this + if ( !bb_current_user_can( $capability ) ) { + if ( !$message ) { + $message = __( 'You do not have permission to read this.' ); + } + $this->error = new IXR_Error( 403, $message ); + return false; + } + + return $user; + } + + /** + * Sanitises data from XML-RPC request parameters + * + * @since 1.0 + * @return mixed The sanitised variable, should come back with the same type + * @param $array mixed The variable to be sanitised + * @uses $bbdb BackPress database class instance + */ + function escape( &$array ) + { + global $bbdb; + + if ( !is_array( $array ) ) { + // Escape it + $array = $bbdb->escape( $array ); + } elseif ( count( $array ) ) { + foreach ( (array) $array as $k => $v ) { + if ( is_array( $v ) ) { + // Recursively sanitize arrays + $this->escape( $array[$k] ); + } elseif ( is_object( $v ) ) { + // Don't sanitise objects - shouldn't happen anyway + } else { + // Escape it + $array[$k] = $bbdb->escape( $v ); + } + } + } + + return $array; + } + + /** + * Prepares forum data for return in an XML-RPC object + * + * @since 1.0 + * @return array The prepared forum data + * @param array|object The unprepared forum data + **/ + function prepare_forum( $forum ) + { + // Cast to an array + $_forum = (array) $forum; + // Set the URI + $_forum['forum_uri'] = get_forum_link( $_forum['forum_id'] ); + // Give this a definite value + if ( !isset( $_forum['forum_is_category'] ) ) { + $_forum['forum_is_category'] = 0; + } + // Allow plugins to modify the data + return apply_filters( 'bb_xmlrpc_prepare_forum', $_forum, (array) $forum ); + } + + /** + * Prepares topic data for return in an XML-RPC object + * + * @since 1.0 + * @return array The prepared topic data + * @param array|object The unprepared topic data + **/ + function prepare_topic( $topic ) + { + // Cast to an array + $_topic = (array) $topic; + // Set the URI + $_topic['topic_uri'] = get_topic_link( $_topic['topic_id'] ); + // Set readable times + $_topic['topic_start_time_since'] = bb_since( $_topic['topic_start_time'] ); + $_topic['topic_time_since'] = bb_since( $_topic['topic_time'] ); + // Set the display names + $_topic['topic_poster_display_name'] = get_user_display_name( $_topic['topic_poster'] ); + $_topic['topic_last_poster_display_name'] = get_user_display_name( $_topic['topic_last_poster'] ); + // Remove some sensitive user ids + unset( + $_topic['topic_poster'], + $_topic['topic_last_poster'] + ); + // Allow plugins to modify the data + return apply_filters( 'bb_xmlrpc_prepare_topic', $_topic, (array) $topic ); + } + + /** + * Prepares post data for return in an XML-RPC object + * + * @since 1.0 + * @return array The prepared post data + * @param array|object The unprepared post data + **/ + function prepare_post( $post ) + { + // Cast to an array + $_post = (array) $post; + // Set the URI + $_post['post_uri'] = get_post_link( $_post['post_id'] ); + // Set readable times + $_post['post_time_since'] = bb_since( $_post['post_time'] ); + // Set the display names + $_post['poster_display_name'] = get_user_display_name( $_post['poster_id'] ); + // Remove some sensitive data + unset( + $_post['poster_id'], + $_post['poster_ip'], + $_post['pingback_queued'] + ); + // Allow plugins to modify the data + return apply_filters( 'bb_xmlrpc_prepare_post', $_post, (array) $post ); + } + + /** + * Prepares topic tag data for return in an XML-RPC object + * + * @since 1.0 + * @return array The prepared topic tag data + * @param array|object The unprepared topic tag data + **/ + function prepare_topic_tag( $tag ) + { + // Cast to an array + $_tag = (array) $tag; + // Set the URI + $_tag['topic_tag_uri'] = bb_get_tag_link( $tag ); + // Consistent nomenclature + $_tag['topic_tag_name'] = (string) $_tag['name']; + $_tag['topic_tag_slug'] = (string) $_tag['slug']; + $_tag['topic_tag_count'] = (int) $_tag['count']; + // Remove some sensitive data + unset( + $_tag['object_id'], + $_tag['name'], + $_tag['slug'], + $_tag['count'], + $_tag['term_id'], + $_tag['term_group'], + $_tag['term_taxonomy_id'], + $_tag['taxonomy'], + $_tag['description'], + $_tag['parent'], + $_tag['count'], + $_tag['user_id'], + $_tag['tag_id'], + $_tag['tag'], + $_tag['raw_tag'], + $_tag['tag_count'] + ); + // Allow plugins to modify the data + return apply_filters( 'bb_xmlrpc_prepare_topic_tag', $_tag, (array) $tag ); + } + + + + /** + * bbPress publishing API - Demo XML-RPC methods + */ + + /** + * Hello world demo function for XML-RPC + * + * @since 1.0 + * @return string The phrase 'Hello!' + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * + * XML-RPC request to get a greeting + * + * demo.sayHello + * + * joeblow + * 123password + * + * + */ + function sayHello( $args ) + { + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly && !$this->authenticate( $username, $password ) ) { + return $this->error; + } + + return 'Hello!'; + } + + /** + * Adds two numbers together as a demo of XML-RPC + * + * @since 1.0 + * @return integer The sum of the two supplied numbers + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer $args[2] The first number to be added + * @param integer $args[3] The second number to be added + * + * XML-RPC request to get the sum of two numbers + * + * demo.addTwoNumbers + * + * joeblow + * 123password + * 5 + * 102 + * + * + */ + function addTwoNumbers( $args ) + { + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly && !$this->authenticate( $username, $password ) ) { + return $this->error; + } + + $number1 = (int) $args[2]; + $number2 = (int) $args[3]; + + return ( $number1 + $number2 ); + } + + + + /** + * bbPress publishing API - Forum XML-RPC methods + */ + + /** + * Returns a numerical count of forums + * + * @since 1.0 + * @return integer|object The number of forums when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The parent forum's id or slug (optional) + * @param integer $args[3] The depth of child forums to retrieve (optional) + * + * XML-RPC request to get a count of all forums in the bbPress instance + * + * bb.getForumCount + * + * joeblow + * 123password + * + * + * + * XML-RPC request to get a count of all child forums in the forum with id number 34 + * + * bb.getForumCount + * + * joeblow + * 123password + * 34 + * + * + * + * XML-RPC request to get a count of all child forums in the forum with slug "first-forum" + * + * bb.getForumCount + * + * joeblow + * 123password + * first-forum + * + * + * + * XML-RPC request to get a count of all child forums in the forum with id number 34 no more than 2 forums deep in the hierarchy + * + * bb.getForumCount + * + * joeblow + * 123password + * 34 + * 2 + * + * + */ + function bb_getForumCount( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getForumCount' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getForumCount' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Setup an array to store arguments to pass to bb_get_forums() function + $get_forums_args = array( + 'child_of' => 0, + 'hierarchical' => 0, + 'depth' => 0 + ); + + // Can be numeric id or slug + $forum_id = isset( $args[2] ) ? $args[2] : false; + + if ( $forum_id ) { + // Check for bad data + if ( !is_string( $forum_id ) && !is_integer( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'The forum id is invalid.' ) ); + return $this->error; + } + // Check the requested forum exists + if ( !$forum = bb_get_forum( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'The forum does not exist.' ) ); + return $this->error; + } + // Add the specific forum to the arguments + $get_forums_args['child_of'] = (int) $forum->forum_id; + } + + // Can only be an integer + $depth = (int) $args[3]; + + if ( $depth > 0 ) { + // Add the depth to traverse to the arguments + $get_forums_args['depth'] = $depth; + // Only make it hierarchical if the depth > 1 + if ( $depth > 1 ) { + $get_forums_args['hierarchical'] = 1; + } + } + + // Get the forums. Return 0 when no forums exist + if ( !$forums = bb_get_forums( $get_forums_args ) ) { + $count = 0; + } else { + $count = count( $forums ); + } + + do_action( 'bb_xmlrpc_call_return', 'bb.getForumCount' ); + + // Return a count of the forums + return $count; + } + + /** + * Returns details of multiple forums + * + * @since 1.0 + * @return array|object An array containing details of all returned forums when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The parent forum's id or slug (optional) + * @param integer $args[3] The depth of child forums to retrieve (optional) + * + * XML-RPC request to get all forums in the bbPress instance + * + * bb.getForums + * + * joeblow + * 123password + * + * + * + * XML-RPC request to get all child forums in the forum with id number 34 + * + * bb.getForums + * + * joeblow + * 123password + * 34 + * + * + * + * XML-RPC request to get all child forums in the forum with slug "first-forum" + * + * bb.getForums + * + * joeblow + * 123password + * first-forum + * + * + * + * XML-RPC request to get all child forums in the forum with id number 34 no more than 2 forums deep in the hierarchy + * + * bb.getForums + * + * joeblow + * 123password + * 34 + * 2 + * + * + */ + function bb_getForums( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getForums' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getForums' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Setup an array to store arguments to pass to bb_get_forums() function + $get_forums_args = array( + 'child_of' => 0, + 'hierarchical' => 0, + 'depth' => 0 + ); + + // Can be numeric id or slug + $forum_id = isset( $args[2] ) ? $args[2] : false; + + if ( $forum_id ) { + // Check for bad data + if ( !is_string( $forum_id ) && !is_integer( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'The forum id is invalid.' ) ); + return $this->error; + } + // First check the requested forum exists + if ( !$forum = bb_get_forum( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'The forum does not exist.' ) ); + return $this->error; + } + // Add the specific forum to the arguments + $get_forums_args['child_of'] = (int) $forum->forum_id; + } + + // Can only be an integer + $depth = (int) $args[3]; + + if ( $depth > 0 ) { + // Add the depth to traverse to to the arguments + $get_forums_args['depth'] = $depth; + // Only make it hierarchical if the depth > 1 + if ( $depth > 1 ) { + $get_forums_args['hierarchical'] = 1; + } + } + + // Get the forums. Return an error when no forums exist + if ( !$forums = bb_get_forums( $get_forums_args ) ) { + $this->error = new IXR_Error( 404, __( 'No forums found.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $_forums = array(); + foreach ( $forums as $forum ) { + $_forums[] = $this->prepare_forum( $forum ); + } + + do_action( 'bb_xmlrpc_call_return', 'bb.getForums' ); + + // Return the forums + return $_forums; + } + + /** + * Returns details of a forum + * + * @since 1.0 + * @return array|object An array containing details of the returned forum when successfully executed or an IXR_Error object on failure + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The forum's id or slug + * + * XML-RPC request to get the forum with id number 34 + * + * bb.getForum + * + * joeblow + * 123password + * 34 + * + * + * + * XML-RPC request to get the forum with slug "first-forum" + * + * bb.getForum + * + * joeblow + * 123password + * first-forum + * + * + */ + function bb_getForum( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getForum' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getForum' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $forum_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$forum_id || ( !is_string( $forum_id ) && !is_integer( $forum_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The forum id is invalid.' ) ); + return $this->error; + } + + // Check the requested forum exists + if ( !$forum = bb_get_forum( $forum_id ) ) { + $this->error = new IXR_Error( 404, __( 'No forum found.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $forum = $this->prepare_forum( $forum ); + + do_action( 'bb_xmlrpc_call_return', 'bb.getForum' ); + + // Return the forums + return $forum; + } + + /** + * Creates a new forum + * + * @since 1.0 + * @return array|object The forum data when successfully created or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param array $args[2] The values for the various settings in the new forum + * @param string $args[2]['name'] The name of the forum + * @param string $args[2]['description'] The description of the forum (optional) + * @param integer|string $args[2]['parent_id'] The unique id of the parent forum for this forum (optional) + * @param integer $args[2]['order'] The position of the forum in the forum list (optional) + * @param integer $args[2]['is_category'] Whether the forum is simply a container category (optional) + * + * XML-RPC request to create a new sub-forum called "A new forum" inside the parent forum with id 2 + * + * bb.newForum + * + * joeblow + * 123password + * + * + * name + * A new forum + * + * + * parent_id + * 2 + * + * + * + * + */ + function bb_newForum( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.newForum' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'manage_forums', __( 'You do not have permission to manage forums.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.newForum' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Make sure there is something for us to do + if ( !$args[2] || !is_array( $args[2] ) || !count( $args[2] ) ) { + $this->error = new IXR_Error( 400, __( 'The forum data is invalid.' ) ); + return $this->error; + } + + $structure = (array) $args[2]; + + // Minimum requirement is a name for the new forum + if ( !isset( $structure['name'] ) || !$structure['name'] ) { + $this->error = new IXR_Error( 400, __( 'The forum name is invalid.' ) ); + return $this->error; + } + + // Inject structure into an array suitable for bb_new_forum() + $bb_new_forum_args = array( + 'forum_name' => (string) $structure['name'], + 'forum_desc' => (string) $structure['description'], + 'forum_parent' => (int) $structure['parent_id'], + 'forum_order' => (int) $structure['order'], + 'forum_is_category' => (int) $structure['is_category'] + ); + + // Remove empty settings so that changes to the defaults in bb_new_forum() are honoured + $bb_new_forum_args = array_filter( $bb_new_forum_args ); + + // Leave the require until the very end + require_once( BB_PATH . 'bb-admin/includes/functions.bb-admin.php' ); + + // Create the forum + if ( !$forum_id = (int) bb_new_forum( $bb_new_forum_args ) ) { + $this->error = new IXR_Error( 500, __( 'The forum could not be created.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $forum = $this->prepare_forum( bb_get_forum( $forum_id ) ); + + do_action( 'bb_xmlrpc_call_return', 'bb.newForum' ); + + return $forum; + } + + /** + * Edits an existing forum + * + * @since 1.0 + * @return array|object The forum data when successfully edited or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param array $args[2] The values for the various settings in the new forum, at least one must be specified + * @param integer|string $args[2]['forum_id'] The unique id of the forum to be edited + * @param string $args[2]['name'] The name of the forum (optional) + * @param string $args[2]['slug'] The slug for the forum (optional) + * @param string $args[2]['description'] The description of the forum (optional) + * @param integer $args[2]['parent_id'] The unique id of the parent forum for this forum (optional) + * @param integer $args[2]['order'] The position of the forum in the forum list (optional) + * @param integer $args[2]['is_category'] Whether the forum is simply a container category (optional) + * + * XML-RPC request to edit a forum with id 11, changing the description + * + * bb.editForum + * + * joeblow + * 123password + * + * + * forum_id + * 11 + * + * + * description + * This is a great forum for all sorts of reasons. + * + * + * + * + */ + function bb_editForum( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.editForum' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'manage_forums', __( 'You do not have permission to manage forums.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.editForum' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Make sure there is something for us to do + if ( !$args[2] || !is_array( $args[2] ) || !count( $args[2] ) ) { + $this->error = new IXR_Error( 400, __( 'The forum data is invalid.' ) ); + return $this->error; + } + + $structure = (array) $args[2]; + + // Can be numeric id or slug + $forum_id = isset( $structure['forum_id'] ) ? $structure['forum_id'] : false; + + // Check for bad data + if ( !$forum_id || ( !is_string( $forum_id ) && !is_integer( $forum_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The forum id is invalid.' ) ); + return $this->error; + } + + // Check the requested forum exists + if ( !$forum = bb_get_forum( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'No forum found.' ) ); + return $this->error; + } + + // Cast the forum object as an array + $forum = (array) $forum; + // The forum id may have been a slug, so make sure it's an integer here + $forum_id = (int) $forum['forum_id']; + + // Remove some unneeded indexes + unset( $forum['topics'] ); + unset( $forum['posts'] ); + + // Add one if it isn't there + if ( !isset( $forum['forum_is_category'] ) ) { + $forum['forum_is_category'] = 0; + } + + // Validate the name for the forum + if ( isset( $structure['name'] ) && !$structure['name'] ) { + $this->error = new IXR_Error( 400, __( 'The forum name is invalid.' ) ); + return $this->error; + } + + // Inject structure into an array suitable for bb_update_forum() + $bb_update_forum_args = array( + 'forum_name' => $structure['name'] + ); + + // Slug cannot be blank + if ( isset( $structure['slug'] ) && $structure['slug'] !== '' ) { + $bb_update_forum_args['forum_slug'] = $structure['slug']; + } + + // Description can be nothing + if ( isset( $structure['description'] ) ) { + $bb_update_forum_args['forum_desc'] = $structure['description']; + } + + // Parent forum ID must be an integer and it can be 0 + if ( isset( $structure['parent_id'] ) && is_integer( $structure['parent_id'] ) ) { + $bb_update_forum_args['forum_parent'] = $structure['parent_id']; + } + + // Order must be an integer and it can be 0 + if ( isset( $structure['order'] ) && is_integer( $structure['order'] ) ) { + $bb_update_forum_args['forum_order'] = $structure['order']; + } + + // Category flag must be an integer and it can be 0 + if ( isset( $structure['is_category'] ) && is_integer( $structure['is_category'] ) ) { + $bb_update_forum_args['forum_is_category'] = $structure['is_category']; + } + + // Merge the changes into the existing data for the forum + $bb_update_forum_args = wp_parse_args( $bb_update_forum_args, $forum ); + + // Leave the require until the very end + require_once( BB_PATH . 'bb-admin/includes/functions.bb-admin.php' ); + + // Update the forum + if ( !bb_update_forum( $bb_update_forum_args ) ) { + $this->error = new IXR_Error( 500, __( 'The forum could not be edited.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $forum = $this->prepare_forum( bb_get_forum( $forum_id ) ); + + do_action( 'bb_xmlrpc_call_return', 'bb.editForum' ); + + return $forum; + } + + /** + * Deletes a forum + * + * @since 1.0 + * @return integer|object 1 when successfully deleted or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The unique id of the forum to be deleted + * + * XML-RPC request to delete a forum with the slug "naughty-forum" + * + * bb.deleteForum + * + * joeblow + * 123password + * naughty-forum + * + * + */ + function bb_deleteForum( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.deleteForum' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'delete_forums', __( 'You do not have permission to delete forums.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.deleteForum' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $forum_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$forum_id || ( !is_string( $forum_id ) && !is_integer( $forum_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The forum id is invalid.' ) ); + return $this->error; + } + + // Check the requested forum exists + if ( !$forum = bb_get_forum( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'No forum found.' ) ); + return $this->error; + } + + // Cast the forum object as an array + $forum = (array) $forum; + // The forum id may have been a slug, so make sure it's an integer here + $forum_id = (int) $forum['forum_id']; + + // Make sure they are allowed to delete this forum specifically + if ( !bb_current_user_can( 'delete_forum', $forum_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to delete this forum.' ) ); + return $this->error; + } + + // Leave the require until the very end + require_once( BB_PATH . 'bb-admin/includes/functions.bb-admin.php' ); + + // Delete the forum + if ( !bb_delete_forum( $forum_id ) ) { + $this->error = new IXR_Error( 500, __( 'The forum could not be deleted.' ) ); + return $this->error; + } + + $result = 1; + + do_action( 'bb_xmlrpc_call_return', 'bb.deleteForum' ); + + return $result; + } + + + + /** + * bbPress publishing API - Topic XML-RPC methods + */ + + /** + * Returns a numerical count of topics + * + * @since 1.0 + * @return integer|object The number of topics when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The forum id or slug (optional) + * + * XML-RPC request to get a count of all topics in the bbPress instance + * + * bb.getTopicCount + * + * joeblow + * 123password + * + * + * + * XML-RPC request to get a count of all topics in the forum with id number 34 + * + * bb.getTopicCount + * + * joeblow + * 123password + * 34 + * + * + * + * XML-RPC request to get a count of all topics in the forum with slug "first-forum" + * + * bb.getTopicCount + * + * joeblow + * 123password + * first-forum + * + * + */ + function bb_getTopicCount( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getTopicCount' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getTopicCount' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + if ( isset( $args[2] ) && $forum_id = $args[2] ) { + // Check for bad data + if ( !is_string( $forum_id ) && !is_integer( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'The forum id is invalid.' ) ); + return $this->error; + } + // Check the requested forum exists + if ( !$forum = bb_get_forum( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'The forum does not exist.' ) ); + return $this->error; + } + + // OK, let's trust the count in the forum table + $count = (int) $forum->topics; + } else { + // Get all forums + $forums = bb_get_forums(); + + // Return an error when no forums exist + if ( !$forums ) { + $this->error = new IXR_Error( 400, __( 'No forums found.' ) ); + return $this->error; + } + + // Count the topics + $count = 0; + foreach ( $forums as $forum ) { + $count += (int) $forum->topics; + } + } + + do_action( 'bb_xmlrpc_call_return', 'bb.getTopicCount' ); + + // Return the count of topics + return $count; + } + + /** + * Returns details of the latest topics + * + * @since 1.0 + * @return array|object The topics when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The forum id or slug (optional) + * @param integer $args[3] The number of topics to return (optional) + * @param integer $args[4] The number of the page to return (optional) + * + * XML-RPC request to get all topics in the bbPress instance + * + * bb.getTopics + * + * joeblow + * 123password + * + * + * + * XML-RPC request to get all topics in the forum with id number 34 + * + * bb.getTopics + * + * joeblow + * 123password + * 34 + * + * + * + * XML-RPC request to get topics 6 to 10 in the forum with slug "first-forum" + * + * bb.getTopics + * + * joeblow + * 123password + * first-forum + * 5 + * 2 + * + * + */ + function bb_getTopics( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getTopics' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getTopics' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Setup an array to store arguments to pass to get_topics() function + $get_topics_args = array( + 'forum' => false, + 'number' => false, + 'page' => false + ); + + // Can be numeric id or slug + if ( isset( $args[2] ) && $forum_id = $args[2] ) { + // Check for bad data + if ( !is_string( $forum_id ) && !is_integer( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'The forum id is invalid.' ) ); + return $this->error; + } + // Check the requested forum exists + if ( !$forum = bb_get_forum( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'The forum does not exist.' ) ); + return $this->error; + } + + // The forum id may have been a slug, so make sure it's an integer here + $get_topics_args['forum'] = (int) $forum->forum_id; + } + + // Can only be an integer + if ( isset( $args[3] ) && $number = (int) $args[3] ) { + $get_topics_args['number'] = $number; + } + + // Can only be an integer + if ( isset( $args[4] ) && $page = (int) $args[4] ) { + $get_topics_args['page'] = $page; + } + + // Get the topics + if ( !$topics = get_latest_topics( $get_topics_args ) ) { + $this->error = new IXR_Error( 400, __( 'No topics found.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $_topics = array(); + foreach ( $topics as $topic ) { + $_topics[] = $this->prepare_topic( $topic ); + } + + do_action( 'bb_xmlrpc_call_return', 'bb.getTopics' ); + + // Return the topics + return $_topics; + } + + /** + * Returns details of a topic + * + * @since 1.0 + * @return array|object An array containing details of the returned topic when successfully executed or an IXR_Error object on failure + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The topic's id or slug + * + * XML-RPC request to get the topic with id number 105 + * + * bb.getTopic + * + * joeblow + * 123password + * 105 + * + * + * + * XML-RPC request to get the topic with slug "cheesy-biscuits" + * + * bb.getTopic + * + * joeblow + * 123password + * cheesy-biscuits + * + * + */ + function bb_getTopic( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getTopic' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getTopic' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $topic = $this->prepare_topic( $topic ); + + do_action( 'bb_xmlrpc_call_return', 'bb.getTopic' ); + + // Return the topic + return $topic; + } + + /** + * Creates a new topic + * + * @since 1.0 + * @return array|object The topic data when successfully created or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param array $args[2] The values for the various parameters in the new topic + * @param string $args[2]['title'] The title of the topic + * @param string $args[2]['text'] The text of the topic + * @param integer|string $args[2]['forum_id'] The unique id of the forum which will contain this topic, slugs are OK to use too + * @param string|array $args[2]['tags'] A comma delimited string or an array of tags to add to the topic (optional) + * + * XML-RPC request to create a new topic called "Insane monkeys" inside the forum with id 2 + * + * bb.newTopic + * + * joeblow + * 123password + * + * + * title + * Insane monkeys + * + * + * text + * I just saw some insane monkeys eating bananas, did anyone else see that? + * + * + * forum_id + * 2 + * + * + * tags + * monkeys, bananas + * + * + * + * + */ + function bb_newTopic( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.newTopic' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'write_topics', __( 'You do not have permission to write topics.' ) ); + + // Additionally they need to be able to write posts + if ( !$this->error && !bb_current_user_can( 'write_posts' ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to write posts.' ) ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.newTopic' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Make sure there is something for us to do + if ( !$args[2] || !is_array( $args[2] ) || !count( $args[2] ) ) { + $this->error = new IXR_Error( 400, __( 'The topic data is invalid.' ) ); + return $this->error; + } + + $structure = (array) $args[2]; + + // Can be numeric id or slug + $forum_id = isset( $structure['forum_id'] ) ? $structure['forum_id'] : false; + + // Check for bad data + if ( !$forum_id || ( !is_string( $forum_id ) && !is_integer( $forum_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The forum id is invalid.' ) ); + return $this->error; + } + + // Check the requested forum exists + if ( !$forum = bb_get_forum( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'No forum found.' ) ); + return $this->error; + } + + // The forum id may have been a slug, so make sure it's an integer here + $forum_id = (int) $forum->forum_id; + + // Make sure they are allowed to write topics to this forum + if ( !bb_current_user_can( 'write_topic', $forum_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to write topics to this forum.' ) ); + return $this->error; + } + + // The topic requires a title + if ( !isset( $structure['title'] ) || !$structure['title'] ) { + $this->error = new IXR_Error( 400, __( 'The topic title is invalid.' ) ); + return $this->error; + } + + // The topic requires text + if ( !isset( $structure['text'] ) || !$structure['text'] ) { + $this->error = new IXR_Error( 400, __( 'The topic text is invalid.' ) ); + return $this->error; + } + + // Inject structure into an array suitable for bb_insert_topic() + $bb_insert_topic_args = array( + 'topic_title' => (string) $structure['title'], + 'forum_id' => $forum_id, + 'tags' => (string) trim( $structure['tags'] ) + ); + + // Remove empty settings so that changes to the defaults in bb_insert_topic() are honoured + $bb_insert_topic_args = array_filter( $bb_insert_topic_args ); + + // Create the topic + if ( !$topic_id = bb_insert_topic( $bb_insert_topic_args ) ) { + $this->error = new IXR_Error( 500, __( 'The topic could not be created.' ) ); + return $this->error; + } + + // Inject structure into an array suitable for bb_insert_post() + $bb_insert_post_args = array( + 'topic_id' => (int) $topic_id, + 'post_text' => (string) $structure['text'] + ); + + // Create the post + if ( !$post_id = bb_insert_post( $bb_insert_post_args ) ) { + $this->error = new IXR_Error( 500, __( 'The post could not be created.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $topic = $this->prepare_topic( get_topic( $topic_id ) ); + + do_action( 'bb_xmlrpc_call_return', 'bb.newTopic' ); + + return $topic; + } + + /** + * Edits an existing topic + * + * @since 1.0 + * @return array|object The topic data when successfully edited or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param array $args[2] The values for the various parameters in the edited topic + * @param integer|string $args[2]['topic_id'] The topic's id or slug + * @param string $args[2]['title'] The title of the topic + * @param string $args[2]['text'] The text of the topic + * + * XML-RPC request to edit the title of a topic with the slug "insane-monkeys" + * + * bb.editTopic + * + * joeblow + * 123password + * + * + * topic_id + * insane-monkeys + * + * + * title + * Very insane monkeys + * + * + * + * + */ + function bb_editTopic( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.editTopic' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'edit_topics', __( 'You do not have permission to edit topics.' ) ); + + // Additionally they need to be able to edit posts + if ( !$this->error && !bb_current_user_can( 'edit_posts' ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to edit posts.' ) ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.editTopic' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Make sure there is something for us to do + if ( !$args[2] || !is_array( $args[2] ) || !count( $args[2] ) ) { + $this->error = new IXR_Error( 400, __( 'The topic data is invalid.' ) ); + return $this->error; + } + + $structure = (array) $args[2]; + + // Can be numeric id or slug + $topic_id = isset( $structure['topic_id'] ) ? $structure['topic_id'] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + // Make sure they are allowed to edit this topic + if ( !bb_current_user_can( 'edit_topic', $topic_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to edit this topic.' ) ); + return $this->error; + } + + // Get the first post in the topic (that's where the content is) + if ( !$post = bb_get_first_post( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No posts found.' ) ); + return $this->error; + } + + $post_id = (int) $post->post_id; + + // Make sure they are allowed to edit this post + if ( !bb_current_user_can( 'edit_post', $post_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to edit this post.' ) ); + return $this->error; + } + + // The topic requires a title + if ( isset( $structure['title'] ) && !$structure['title'] ) { + $this->error = new IXR_Error( 400, __( 'The topic title is invalid.' ) ); + return $this->error; + } + + // The topic requires text + if ( isset( $structure['text'] ) && !$structure['text'] ) { + $this->error = new IXR_Error( 400, __( 'The topic text is invalid.' ) ); + return $this->error; + } + + if ( $structure['title'] ) { + if ( !bb_insert_topic( array( 'topic_title' => (string) $structure['title'], 'topic_id' => $topic_id ) ) ) { + $this->error = new IXR_Error( 500, __( 'The topic could not be edited.' ) ); + return $this->error; + } + } + + if ( $structure['text'] ) { + if ( !bb_insert_post( array( 'post_text' => (string) $structure['text'], 'post_id' => $post_id, 'topic_id'=> $topic_id ) ) ) { + $this->error = new IXR_Error( 500, __( 'The post could not be edited.' ) ); + return $this->error; + } + } + + // Only include "safe" data in the array + $topic = $this->prepare_topic( get_topic( $topic_id ) ); + + do_action( 'bb_xmlrpc_call_return', 'bb.editTopic' ); + + return $topic; + } + + /** + * Deletes a topic + * + * @since 1.0 + * @return integer|object 0 if already changed, 1 when successfully changed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The unique id of the topic to be deleted + * @param integer $args[3] 1 deletes the topic, 0 undeletes the topic + * + * XML-RPC request to delete a topic with id of 34 + * + * bb.deleteTopic + * + * joeblow + * 123password + * 34 + * + * + */ + function bb_deleteTopic( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.deleteTopic' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'delete_topics', __( 'You do not have permission to delete topics.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.deleteTopic' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + $delete = isset( $args[3] ) ? (int) $args[3] : 1; + + // Don't do anything if already set that way + if ( $delete === (int) $topic->topic_status ) { + return 0; + } + + // Make sure they are allowed to delete this topic + if ( !bb_current_user_can( 'delete_topic', $topic_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to delete this topic.' ) ); + return $this->error; + } + + // Delete the topic + if ( !bb_delete_topic( $topic_id, $delete ) ) { + $this->error = new IXR_Error( 500, __( 'The topic could not be deleted.' ) ); + return $this->error; + } + + $result = 1; + + do_action( 'bb_xmlrpc_call_return', 'bb.deleteTopic' ); + + return $result; + } + + /** + * Moves a topic to a different forum + * + * @since 1.0 + * @return integer|object the forum id where the topic lives after the method is called or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The unique id of the topic to be moved + * @param integer|string $args[3] The unique id of the forum to be moved to + * + * XML-RPC request to move the topic with id of 34 to forum with slug of "better-forum" + * + * bb.moveTopic + * + * joeblow + * 123password + * 34 + * better-forum + * + * + */ + function bb_moveTopic( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.moveTopic' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'move_topics', __( 'You do not have permission to move topics.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.moveTopic' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + // Can be numeric id or slug + $forum_id = isset( $args[3] ) ? $args[3] : false; + + // Check for bad data + if ( !$forum_id || ( !is_string( $forum_id ) && !is_integer( $forum_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The forum id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$forum = bb_get_forum( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'No forum found.' ) ); + return $this->error; + } + + // The forum id may have been a slug, so make sure it's an integer here + $forum_id = (int) $forum->forum_id; + + // Only move it if it isn't already there + if ( $forum_id !== (int) $topic->forum_id ) { + // Make sure they are allowed to move this topic specifically to this forum + if ( !bb_current_user_can( 'move_topic', $topic_id, $forum_id ) ) { + $this->error = new IXR_Error( 403, __( 'You are not allowed to move this topic to this forum.' ) ); + return $this->error; + } + + // Move the topic + if ( !bb_move_topic( $topic_id, $forum_id ) ) { + $this->error = new IXR_Error( 500, __( 'The topic could not be moved.' ) ); + return $this->error; + } + } + + do_action( 'bb_xmlrpc_call_return', 'bb.moveTopic' ); + + return $forum_id; + } + + /** + * Sticks a topic to the top of a forum or the front page + * + * @since 1.0 + * @return integer|object 0 if it is already stuck to the desired location, 1 when successfully stuck or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The unique id of the topic to be stuck + * @param integer $args[3] 0 unsticks, 1 sticks, 2 sticks to front (optional) + * + * XML-RPC request to stick the topic with id of 34 to the front page + * + * bb.stickTopic + * + * joeblow + * 123password + * 34 + * 1 + * + * + */ + function bb_stickTopic( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.stickTopic' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'stick_topics', __( 'You do not have permission to stick topics.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.stickTopic' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + // Make sure they are allowed to stick this topic + if ( !bb_current_user_can( 'stick_topic', $topic_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to stick this topic.' ) ); + return $this->error; + } + + // Stick to where? + $where = isset( $args[3] ) ? (int) $args[3] : 1; + + // Forget it if it's already there + if ( $where === (int) $topic->topic_sticky ) { + return 0; + } + + // Stick the topic + if ( !bb_stick_topic( $topic_id, $where ) ) { + $this->error = new IXR_Error( 500, __( 'The topic could not be stuck.' ) ); + return $this->error; + } + + $result = 1; + + do_action( 'bb_xmlrpc_call_return', 'bb.stickTopic' ); + + return $result; + } + + + + /** + * Closes a topic + * + * @since 1.0 + * @return integer|object 0 when already changed, 1 when successfully changed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The unique id of the topic to be closed + * @param integer $args[2] 0 closes, 1 opens (optional) + * + * XML-RPC request to close the topic with slug of "really-old-topic" + * + * bb.closeTopic + * + * joeblow + * 123password + * really-old-topic + * + * + * + * XML-RPC request to open the topic with slug of "really-old-topic" + * + * bb.closeTopic + * + * joeblow + * 123password + * really-old-topic + * 1 + * + * + */ + function bb_closeTopic( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.closeTopic' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'close_topics', __( 'You do not have permission to close topics.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.closeTopic' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + // Make sure they are allowed to close this topic + if ( !bb_current_user_can( 'close_topic', $topic_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to close this topic.' ) ); + return $this->error; + } + + // Open or close? + $close = isset( $args[3] ) ? (int) $args[3] : 0; + + // Forget it if it's already matching + if ( $close === (int) $topic->topic_open ) { + return 0; + } + + // Close the topic + if ( !$close && !bb_close_topic( $topic_id ) ) { + $this->error = new IXR_Error( 500, __( 'The topic could not be closed.' ) ); + return $this->error; + } + + // Open the topic + if ( $close && !bb_open_topic( $topic_id ) ) { + $this->error = new IXR_Error( 500, __( 'The topic could not be opened.' ) ); + return $this->error; + } + + $result = 1; + + do_action( 'bb_xmlrpc_call_return', 'bb.closeTopic' ); + + return $result; + } + + + + /** + * bbPress publishing API - Post XML-RPC methods + */ + + /** + * Returns a numerical count of posts + * + * @since 1.0 + * @return integer|object The number of topics when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The topic id or slug + * + * XML-RPC request to get a count of all posts in the topic with slug "countable-topic" + * + * bb.getPostCount + * + * joeblow + * 123password + * countable-topic + * + * + */ + function bb_getPostCount( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getPostCount' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getPostCount' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // OK, let's trust the count in the topic table + $count = $topic->topic_posts; + + do_action( 'bb_xmlrpc_call_return', 'bb.getPostCount' ); + + // Return the count of posts + return $count; + } + + /** + * Returns details of the posts in a given topic + * + * @since 1.0 + * @return array|object The posts when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The topic id or slug + * @param integer $args[3] The number of posts to return (optional) + * @param integer $args[4] The number of the page to return (optional) + * + * XML-RPC request to get all posts in the topic with id number 53 + * + * bb.getPosts + * + * joeblow + * 123password + * 53 + * + * + * + * XML-RPC request to get the latest 5 posts in the topic with id number 341 + * + * bb.getPosts + * + * joeblow + * 123password + * 341 + * 5 + * + * + * + * XML-RPC request to get posts 11 to 20 in the topic with slug "long-topic" + * + * bb.getPosts + * + * joeblow + * 123password + * long-topic + * 10 + * 2 + * + * + */ + function bb_getPosts( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getPosts' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getPosts' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + // Setup an array to store arguments to pass to get_thread() function + $get_thread_args = array(); + + // Can only be an integer + if ( isset( $args[3] ) && $per_page = (int) $args[3] ) { + $get_thread_args['per_page'] = $per_page; + } + + // Can only be an integer + if ( isset( $args[4] ) && $page = (int) $args[4] ) { + $get_thread_args['page'] = $page; + } + + // Get the posts + if ( !$posts = get_thread( $topic_id, $get_thread_args ) ) { + $this->error = new IXR_Error( 500, __( 'No posts found.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $_posts = array(); + foreach ( $posts as $post ) { + $_posts[] = $this->prepare_post( $post ); + } + + do_action( 'bb_xmlrpc_call_return', 'bb.getPosts' ); + + // Return the posts + return $_posts; + } + + /** + * Returns details of a post + * + * @since 1.0 + * @return array|object An array containing details of the returned post when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer $args[2] The post's id + * + * XML-RPC request to get the post with id number 32 + * + * bb.getPost + * + * joeblow + * 123password + * 32 + * + * + */ + function bb_getPost( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getPost' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getPost' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $post_id = isset( $args[2] ) ? (int) $args[2] : false; + + // Check for bad data + if ( !$post_id ) { + $this->error = new IXR_Error( 400, __( 'The post id is invalid.' ) ); + return $this->error; + } + + // Check the requested post exists + if ( !$post = bb_get_post( $post_id ) ) { + $this->error = new IXR_Error( 400, __( 'No post found.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $_post = $this->prepare_post( $post ); + + do_action( 'bb_xmlrpc_call_return', 'bb.getPost' ); + + // Return the post + return $_post; + } + + /** + * Creates a new post in a given topic + * + * @since 1.0 + * @return array|object The post data when successfully created or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param array $args[2] The values for the various parameters in the new topic + * @param string $args[2]['text'] The text of the topic + * @param integer|string $args[2]['topic_id'] The unique id of the topic which will contain this topic, slugs are OK to use too + * + * XML-RPC request to create a new post in the topic with slug "totally-worth-it" + * + * bb.newPost + * + * joeblow + * 123password + * + * + * text + * I agree, it is totally worth it. + * + * + * topic_id + * totally-worth-it + * + * + * + * + */ + function bb_newPost( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.newPost' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'write_posts', __( 'You do not have permission to write posts.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.newPost' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Make sure there is something for us to do + if ( !$args[2] || !is_array( $args[2] ) || !count( $args[2] ) ) { + $this->error = new IXR_Error( 400, __( 'The post data is invalid.' ) ); + return $this->error; + } + + $structure = (array) $args[2]; + + // Can be numeric id or slug + $topic_id = isset( $structure['topic_id'] ) ? $structure['topic_id'] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + // Make sure they are allowed to write posts to this topic + if ( !bb_current_user_can( 'write_post', $topic_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to write posts to this topic.' ) ); + return $this->error; + } + + // The post requires text + if ( !isset( $structure['text'] ) || !$structure['text'] ) { + $this->error = new IXR_Error( 400, __( 'The post text is invalid.' ) ); + return $this->error; + } + + // Inject structure into an array suitable for bb_insert_post() + $bb_insert_post_args = array( + 'topic_id' => $topic_id, + 'post_text' => (string) $structure['text'] + ); + + // Create the post + if ( !$post_id = bb_insert_post( $bb_insert_post_args ) ) { + $this->error = new IXR_Error( 500, __( 'The post could not be created.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $post = $this->prepare_forum( bb_get_post( $post_id ) ); + + do_action( 'bb_xmlrpc_call_return', 'bb.newPost' ); + + return $post; + } + + /** + * Edits an existing post + * + * @since 1.0 + * @return array|object The post data when successfully edited or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param array $args[2] The values for the various parameters in the new topic + * @param integer $args[2]['post_id'] The unique id of the post + * @param string $args[2]['text'] The text of the topic + * + * XML-RPC request to edit the text of the post with an id of 452 + * + * bb.editPost + * + * joeblow + * 123password + * + * + * post_id + * 452 + * + * + * text + * For now I will withhold my opinion. + * + * + * + * + */ + function bb_editPost( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.editPost' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'edit_posts', __( 'You do not have permission to edit posts.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.editPost' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Make sure there is something for us to do + if ( !$args[2] || !is_array( $args[2] ) || !count( $args[2] ) ) { + $this->error = new IXR_Error( 400, __( 'The post data is invalid.' ) ); + return $this->error; + } + + $structure = (array) $args[2]; + + // Can be numeric id or slug + $post_id = isset( $structure['post_id'] ) ? (int) $structure['post_id'] : false; + + // Check for bad data + if ( !$post_id ) { + $this->error = new IXR_Error( 400, __( 'The post id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$post = bb_get_post( $post_id ) ) { + $this->error = new IXR_Error( 400, __( 'No post found.' ) ); + return $this->error; + } + + // Re-assign the post id + $post_id = (int) $post->post_id; + + // Make sure they are allowed to edit this post + if ( !bb_current_user_can( 'edit_post', $post_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to edit this post.' ) ); + return $this->error; + } + + // The post requires text + if ( !isset( $structure['text'] ) || !$structure['text'] ) { + $this->error = new IXR_Error( 400, __( 'The post text is invalid.' ) ); + return $this->error; + } + + // Inject structure into an array suitable for bb_insert_post() + $bb_insert_post_args = array( + 'post_id' => $post_id, + 'post_text' => (string) $structure['text'] + ); + + // Create the post + if ( !$post_id = bb_insert_post( $bb_insert_post_args ) ) { + $this->error = new IXR_Error( 500, __( 'The post could not be edited.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $post = $this->prepare_forum( bb_get_post( $post_id ) ); + + do_action( 'bb_xmlrpc_call_return', 'bb.editPost' ); + + return $post; + } + + /** + * Deletes an existing post + * + * @since 1.0 + * @return integer|object 1 when successfully deleted, 0 when already deleted or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param array $args[2] The unique id of the post + * @param array $args[3] 1 deletes the post, 0 undeletes the post (optional) + * + * XML-RPC request to delete the post with an id of 4301 + * + * bb.editPost + * + * joeblow + * 123password + * 4301 + * + * + */ + function bb_deletePost( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.deletePost' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'delete_posts', __( 'You do not have permission to delete posts.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.deletePost' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $post_id = isset( $args[2] ) ? (int) $args[2] : false; + + // Check for bad data + if ( !$post_id ) { + $this->error = new IXR_Error( 400, __( 'The post id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$post = bb_get_post( $post_id ) ) { + $this->error = new IXR_Error( 400, __( 'No post found.' ) ); + return $this->error; + } + + // Re-assign the post id + $post_id = (int) $post->post_id; + + // Make sure they are allowed to delete this post + if ( !bb_current_user_can( 'delete_post', $post_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to delete this post.' ) ); + return $this->error; + } + + $status = isset( $args[3] ) ? (int) $args[3] : 1; + + if ( $status === (int) $post->post_status ) { + return 0; + } + + // Delete the post + if ( !$post_id = bb_delete_post( $post_id, $status ) ) { + $this->error = new IXR_Error( 500, __( 'The post could not be edited.' ) ); + return $this->error; + } + + $result = 1; + + do_action( 'bb_xmlrpc_call_return', 'bb.deletePost' ); + + return $result; + } + + + + /** + * bbPress publishing API - Topic Tag XML-RPC methods + */ + + /** + * Returns the hot tags in order of hotness in a given forum or all hot tags + * + * @since 1.0 + * @return integer|object The tag data when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer $args[2] The number of tags to return (optional) + * @param integer|string $args[3] The forum id or slug (optional) + * + * XML-RPC request to get the 20 hottest tags in the forum with slug "hawtness" + * + * bb.getTopicTags + * + * joeblow + * 123password + * 20 + * hawtness + * + * + */ + function bb_getHotTopicTags( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getHotTopicTags' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getHotTopicTags' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Must be a number + $per_page = isset( $args[2] ) ? (integer) $args[2] : false; + + // Can be numeric id or slug + $forum_id = isset( $args[3] ) ? $args[3] : false; + + if ( $forum_id ) { + // Check for bad data + if ( !is_string( $forum_id ) && !is_integer( $forum_id ) ) { + $this->error = new IXR_Error( 400, __( 'The forum id is invalid.' ) ); + return $this->error; + } + + // Check the requested forum exists + if ( !$forum = bb_get_forum( $forum_id ) ) { + $this->error = new IXR_Error( 404, __( 'No forum found.' ) ); + return $this->error; + } + + global $bbdb; + $topic_ids = $bbdb->get_col( $bbdb->prepare( "SELECT topic_id FROM `" . $bbdb->topics . "` WHERE `topic_status` = 0 AND `topic_open` = 1 AND `tag_count` > 0 AND `forum_id` = %s;", $forum_id ) ); + + if ( !count( $topic_ids ) ) { + $this->error = new IXR_Error( 400, __( 'No topics found.' ) ); + return $this->error; + } + + global $wp_taxonomy_object; + $tags = $wp_taxonomy_object->get_object_terms( $topic_ids, 'bb_topic_tag', array( 'fields' => 'all_with_object_id', 'orderby' => 'count', 'order' => 'DESC' ) ); + + if ( !$tags || is_wp_error( $tags ) ) { + $this->error = new IXR_Error( 500, __( 'Could not retrieve hot topic tags.' ) ); + return $this->error; + } + if ( !count( $tags ) ) { + $this->error = new IXR_Error( 500, __( 'No hot topic tags found.' ) ); + return $this->error; + } + global $bb_log; + $bb_log->debug($tags); + + for ( $i = 0; isset( $tags[$i] ); $i++ ) { + _bb_make_tag_compat( $tags[$i] ); + } + $bb_log->debug($tags); + + // Only include "safe" data in the array + $_tags = array(); + foreach ( $tags as $tag ) { + $_tag = $this->prepare_topic_tag( $tag ); + if ( !in_array( $_tag, $_tags ) ) { + $_tags[] = $_tag; + } + } + + if ( $per_page ) { + $_tags = array_slice( $_tags, 0, $per_page ); + } + } else { + if ( !$tags = bb_get_top_tags( array( 'get' => 'all', 'number' => $per_page ) ) ) { + $this->error = new IXR_Error( 500, __( 'No hot topic tags found.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $_tags = array(); + foreach ( $tags as $tag ) { + $_tags[] = $this->prepare_topic_tag( $tag ); + } + } + + do_action( 'bb_xmlrpc_call', 'bb.getHotTopicTags' ); + + return $_tags; + } + + /** + * Returns a numerical count of tags in a given topic or all tags + * + * @since 1.0 + * @return integer|object The number of topics when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The topic id or slug (optional) + * + * XML-RPC request to get a count of all tags in the topic with slug "woot-frist-topic" + * + * bb.getTopicTagCount + * + * joeblow + * 123password + * woot-frist-topic + * + * + */ + function bb_getTopicTagCount( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getTopicTagCount' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getTopicTagCount' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( $topic_id ) { + if ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + // Now get the tags + if ( !$tags = bb_get_topic_tags( $topic_id ) ) { + $tags = array(); + } + + // Count the tags + $count = count( $tags ); + } else { + global $wp_taxonomy_object; + $count = $wp_taxonomy_object->count_terms( 'bb_topic_tag' ); + if ( is_wp_error( $count ) ) { + $this->error = new IXR_Error( 500, __( 'Could not get a count of all topic tags.' ) ); + return $this->error; + } + } + + do_action( 'bb_xmlrpc_call_return', 'bb.getTopicTagCount' ); + + // Return the count of tags + return $count; + } + + /** + * Returns the tags in a given topic or all tags + * + * @since 1.0 + * @return integer|object The tag data when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param integer|string $args[2] The topic id or slug (optional) + * + * XML-RPC request to get all tags in the topic with slug "woot-frist-topic" + * + * bb.getTopicTags + * + * joeblow + * 123password + * woot-frist-topic + * + * + */ + function bb_getTopicTags( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getTopicTags' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getTopicTags' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( $topic_id ) { + if ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + // Now get the tags + if ( !$tags = bb_get_topic_tags( $topic_id ) ) { + $this->error = new IXR_Error( 500, __( 'No topic tags found.' ) ); + return $this->error; + } + } else { + global $wp_taxonomy_object; + $tags = $wp_taxonomy_object->get_terms( 'bb_topic_tag', array( 'get' => 'all' ) ); + if ( is_wp_error( $tags ) ) { + $this->error = new IXR_Error( 500, __( 'Could not retrieve all topic tags.' ) ); + return $this->error; + } + for ( $i = 0; isset( $tags[$i] ); $i++ ) { + _bb_make_tag_compat( $tags[$i] ); + } + } + + // Only include "safe" data in the array + $_tags = array(); + foreach ( $tags as $tag ) { + $_tags[] = $this->prepare_topic_tag( $tag ); + } + + do_action( 'bb_xmlrpc_call_return', 'bb.getTopicTags' ); + + // Return the tags + return $_tags; + } + + /** + * Returns the topics which are tagged with the given tag + * + * @since 1.0 + * @return integer|object The topic data when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param string $args[2] The tag name or slug + * @param integer $args[3] The number of topics to return (optional) + * @param integer $args[4] The number of the page to return (optional) + * + * XML-RPC request to get the latest 10 topics tagged with the tag "apples" + * + * bb.getTopicTag + * + * joeblow + * 123password + * apples + * 10 + * + * + */ + function bb_getTopicTag( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getTopicTag' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getTopicTag' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can only be a string + $tag_id = isset( $args[2] ) ? (string) $args[2] : false; + + // Check for bad data + if ( !$tag_id ) { + $this->error = new IXR_Error( 400, __( 'The tag id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$tag = bb_get_tag( $tag_id ) ) { + $this->error = new IXR_Error( 400, __( 'No tag found.' ) ); + return $this->error; + } + + // Get the numeric tag id + $tag_id = (int) $tag->tag_id; + + // Setup an array to store arguments to pass to get_tagged_topics() function + $get_topics_args = array( + 'tag_id' => false, + 'number' => false, + 'page' => false + ); + + // Can only be an integer + if ( isset( $args[3] ) && $number = (int) $args[3] ) { + $get_topics_args['number'] = $number; + } + + // Can only be an integer + if ( isset( $args[4] ) && $page = (int) $args[4] ) { + $get_topics_args['page'] = $page; + } + + // Now get the topics + if ( !$topics = get_tagged_topics( $tag_id ) ) { + $this->error = new IXR_Error( 500, __( 'No topics found.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $_topics = array(); + foreach ( $topics as $topic ) { + $_topics[] = $this->prepare_topic( $topic ); + } + + do_action( 'bb_xmlrpc_call_return', 'bb.getTopicTag' ); + + // Return the topics + return $_topics; + } + + /** + * Adds the specified tags to the specified topic + * + * @since 1.0 + * @return array|object The tags which were added when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param string|integer $args[2] The topic id or slug + * @param string|array $args[3] The tags to add to the topic + * + * XML-RPC request to add the tag "banana" to the topic with id 219 + * + * bb.addTopicTags + * + * joeblow + * 123password + * 219 + * banana + * + * + * + * XML-RPC request to add the tags "banana" and "man" to the topic with id 219 + * + * bb.addTopicTags + * + * joeblow + * 123password + * 219 + * banana, man + * + * + * + * XML-RPC request to add the tags "banana" and "man" to the topic with id 219 using an array + * + * bb.addTopicTags + * + * joeblow + * 123password + * 219 + * + * banana + * man + * + * + * + */ + function bb_addTopicTags( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.addTopicTags' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'edit_tags', __( 'You do not have permission to edit tags.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.addTopicTags' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + // Make sure they are allowed to add tags to this topic + if ( !bb_current_user_can( 'add_tag_to', $topic_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to add tags to this topic.' ) ); + return $this->error; + } + + $tags = isset( $args[3] ) ? $args[3] : false; + + // Check for bad data + if ( !$tags || ( !is_string( $tags ) && !is_array( $tags ) ) ) { + $this->error = new IXR_Error( 400, __( 'The tag data is invalid.' ) ); + return $this->error; + } + + // Add the tags + if ( !$tag_ids = bb_add_topic_tags( $topic_id, $tags ) ) { + $this->error = new IXR_Error( 500, __( 'The tags could not be added.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $_tags = array(); + foreach ( $tag_ids as $tag_id ) { + $_tags[] = $this->prepare_topic_tag( bb_get_tag( $tag_id ) ); + } + + do_action( 'bb_xmlrpc_call_return', 'bb.addTopicTags' ); + + // Return the tags which were added as an array + return $_tags; + } + + /** + * Removes the specified tags from the specified topic + * + * @since 1.0 + * @return integer|object 1 when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param string|integer $args[2] The topic id or slug + * @param string|array $args[3] The tags to remove from the topic + * + * XML-RPC request to remove the tag "banana" to the topic with id 219 + * + * bb.removeTopicTags + * + * joeblow + * 123password + * 219 + * banana + * + * + * + * XML-RPC request to remove the tags "banana" and "man" to the topic with id 219 + * + * bb.removeTopicTags + * + * joeblow + * 123password + * 219 + * banana, man + * + * + * + * XML-RPC request to remove the tags "banana" and "man" to the topic with id 219 using an array + * + * bb.removeTopicTags + * + * joeblow + * 123password + * 219 + * + * banana + * man + * + * + * + */ + function bb_removeTopicTags( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.removeTopicTags' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'edit_tags', __( 'You do not have permission to edit tags.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.removeTopicTags' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can be numeric id or slug + $topic_id = isset( $args[2] ) ? $args[2] : false; + + // Check for bad data + if ( !$topic_id || ( !is_string( $topic_id ) && !is_integer( $topic_id ) ) ) { + $this->error = new IXR_Error( 400, __( 'The topic id is invalid.' ) ); + return $this->error; + } + + // Check the requested topic exists + if ( !$topic = get_topic( $topic_id ) ) { + $this->error = new IXR_Error( 400, __( 'No topic found.' ) ); + return $this->error; + } + + // The topic id may have been a slug, so make sure it's an integer here + $topic_id = (int) $topic->topic_id; + + // Make sure they are allowed to add tags to this topic + if ( !bb_current_user_can( 'add_tag_to', $topic_id ) ) { + $this->error = new IXR_Error( 403, __( 'You do not have permission to remove tags from this topic.' ) ); + return $this->error; + } + + $tags = isset( $args[3] ) ? $args[3] : false; + + // Check for bad data + if ( !$tags || ( !is_string( $tags ) && !is_array( $tags ) ) ) { + $this->error = new IXR_Error( 400, __( 'The tag data is invalid.' ) ); + return $this->error; + } + + // Add the tags + if ( !bb_remove_topic_tags( $topic_id, $tags ) ) { + $this->error = new IXR_Error( 500, __( 'The tags could not be removed.' ) ); + return $this->error; + } + + $result = 1; + + do_action( 'bb_xmlrpc_call_return', 'bb.removeTopicTags' ); + + // Return the result + return $result; + } + + /** + * Renames the specified tag to a new tag name + * + * @since 1.0 + * @return array|object The tag data when successfully renamed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param string $args[2] The tag name or slug + * @param string $args[3] The new tag name (slug is auto-generated) + * + * XML-RPC request to rename the tag "banana" to "bananas" + * + * bb.renameTopicTag + * + * joeblow + * 123password + * banana + * bananas + * + * + */ + function bb_renameTopicTag( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.renameTopicTag' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'manage_tags', __( 'You do not have permission to manage tags.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.renameTopicTag' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can only be a string + $tag_id = isset( $args[2] ) ? (string) $args[2] : false; + + // Check for bad data + if ( !$tag_id ) { + $this->error = new IXR_Error( 400, __( 'The tag id is invalid.' ) ); + return $this->error; + } + + // Check the requested tag exists + if ( !$tag = bb_get_tag( $tag_id ) ) { + $this->error = new IXR_Error( 400, __( 'No tag found.' ) ); + return $this->error; + } + + // Get the numeric tag id + $tag_id = (int) $tag->tag_id; + + // Can only be a string + $tag_name = isset( $args[3] ) ? (string) $args[3] : false; + + // Check for bad data + if ( !$tag_name || $tag_name == $tag->tag_name ) { + $this->error = new IXR_Error( 400, __( 'The tag name is invalid.' ) ); + return $this->error; + } + + // Rename the tag + if ( !$new_tag = bb_rename_tag( $tag_id, $tag_name ) ) { + $this->error = new IXR_Error( 500, __( 'The tag could not be renamed.' ) ); + return $this->error; + } + + // Only include "safe" data in the array + $new_tag = $this->prepare_topic_tag( $new_tag ); + + do_action( 'bb_xmlrpc_call_return', 'bb.renameTopicTag' ); + + // Return the tag + return $new_tag; + } + + /** + * Merges the specified tags + * + * @since 1.0 + * @return array|object The tag data when successfully merged or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param string $args[2] The old tag name or slug to be destroyed + * @param string $args[3] The new tag name or slug where the old tag will be merged to + * + * XML-RPC request to merge the tag "banana" into the tag "apple" + * + * bb.mergeTopicTags + * + * joeblow + * 123password + * banana + * apple + * + * + */ + function bb_mergeTopicTags( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.mergeTopicTags' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'manage_tags', __( 'You do not have permission to manage tags.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.mergeTopicTags' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can only be strings + $old_tag_id = isset( $args[2] ) ? (string) $args[2] : false; + $new_tag_id = isset( $args[3] ) ? (string) $args[3] : false; + + // Check for bad data + if ( !$old_tag_id ) { + $this->error = new IXR_Error( 400, __( 'The old tag id is invalid.' ) ); + return $this->error; + } + if ( !$new_tag_id ) { + $this->error = new IXR_Error( 400, __( 'The new tag id is invalid.' ) ); + return $this->error; + } + + // Check the requested tags exist + if ( !$old_tag = bb_get_tag( $old_tag_id ) ) { + $this->error = new IXR_Error( 400, __( 'No old tag found.' ) ); + return $this->error; + } + if ( !$new_tag = bb_get_tag( $new_tag_id ) ) { + $this->error = new IXR_Error( 400, __( 'No new tag found.' ) ); + return $this->error; + } + + // Get the numeric tag ids + $old_tag_id = (int) $old_tag->tag_id; + $new_tag_id = (int) $new_tag->tag_id; + + // Rename the tag + if ( !$result = bb_rename_tag( $old_tag_id, $new_tag_id ) ) { + $this->error = new IXR_Error( 500, __( 'The tags could not be merged.' ) ); + return $this->error; + } + + // Get the merged tag + $new_tag = bb_get_tag( $new_tag_id ); + + // Only include "safe" data in the array + $new_tag = $this->prepare_topic_tag( $new_tag ); + + do_action( 'bb_xmlrpc_call_return', 'bb.mergeTopicTags' ); + + // Return the tag + return $new_tag; + } + + /** + * Destroys the specified tag + * + * @since 1.0 + * @return integer|object 1 when successfully deleted or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param string $args[2] The tag name or slug to be destroyed + * + * XML-RPC request to destroy the tag "banana" + * + * bb.destroyTopicTag + * + * joeblow + * 123password + * banana + * + * + */ + function bb_destroyTopicTag( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.destroyTopicTag' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'manage_tags', __( 'You do not have permission to manage tags.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.destroyTopicTag' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Can only be a string + $tag_id = isset( $args[2] ) ? (string) $args[2] : false; + + // Check for bad data + if ( !$tag_id ) { + $this->error = new IXR_Error( 400, __( 'The tag id is invalid.' ) ); + return $this->error; + } + + // Check the requested tag exists + if ( !$tag = bb_get_tag( $tag_id ) ) { + $this->error = new IXR_Error( 400, __( 'No tag found.' ) ); + return $this->error; + } + + // Get the numeric tag id + $tag_id = (int) $tag->tag_id; + + // Destroy the tag + if ( !$result = bb_destroy_tag( $tag_id ) ) { + $this->error = new IXR_Error( 500, __( 'The tag could not be destroyed.' ) ); + return $this->error; + } + + $result = 1; + + do_action( 'bb_xmlrpc_call_return', 'bb.destroyTopicTag' ); + + // Return the tag + return $result; + } + + + + /** + * bbPress publishing API - Options XML-RPC methods + */ + + /** + * Initialises site options which can be manipulated using XML-RPC + * + * @since 1.0 + * @return void + */ + function initialise_site_option_info() + { + $this->site_options = array( + // Read only options + 'software_name' => array( + 'desc' => __( 'Software Name' ), + 'readonly' => true, + 'value' => 'bbPress' + ), + 'software_version' => array( + 'desc' => __( 'Software Version' ), + 'readonly' => true, + 'option' => 'version' + ), + 'site_url' => array( + 'desc' => __( 'Site URL' ), + 'readonly' => true, + 'option' => 'uri' + ), + + // Updatable options + 'site_name' => array( + 'desc' => __( 'Site Name' ), + 'readonly' => false, + 'option' => 'name' + ), + 'site_description' => array( + 'desc' => __( 'Site Description' ), + 'readonly' => false, + 'option' => 'description' + ), + 'time_zone' => array( + 'desc' => __( 'Time Zone' ), + 'readonly' => false, + 'option' => 'gmt_offset' + ), + 'datetime_format' => array( + 'desc' => __( 'Date/Time Format' ), + 'readonly' => false, + 'option' => 'datetime_format' + ), + 'date_format' => array( + 'desc' => __( 'Date Format' ), + 'readonly' => false, + 'option' => 'date_format' + ) + ); + + $this->site_options = apply_filters( 'xmlrpc_site_options', $this->site_options ); + } + + /** + * Compiles site options into an array suitable to be passed back through the XML-RPC server + * + * @since 1.0 + * @return array The site options in an array + * @param array $options An array of options to fetch and return + */ + function _getOptions( $options ) + { + $data = array(); + foreach ( $options as $option ) { + if ( array_key_exists( $option, $this->site_options ) ) { + $data[$option] = $this->site_options[$option]; + + // Is the value static or dynamic? + if ( isset( $data[$option]['option'] ) ) { + $data[$option]['value'] = bb_get_option( $data[$option]['option'] ); + unset( $data[$option]['option'] ); + } + } + } + + return $data; + } + + /** + * Gets the specified site options + * + * @since 1.0 + * @return array|object An array containing the specified options when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param array $args[2] The options to be retrieved, when omitted the method returns all options (optional) + * + * XML-RPC request to get all site options + * + * bb.getOptions + * + * joeblow + * 123password + * + * + * + * XML-RPC request to get the site name and site description + * + * bb.getOptions + * + * joeblow + * 123password + * + * site_name + * site_description + * + * + * + */ + function bb_getOptions( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.getOptions' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + if ( $this->auth_readonly ) { + $user = $this->authenticate( $username, $password ); + } + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.getOptions' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // If there are parameters supplied then make sure they are in an array + $options = isset( $args[2] ) ? (array) $args[2] : false; + + // If no specific options where asked for, return all of them + if ( !$options || !count( $options ) ) { + $options = array_keys( $this->site_options ); + } + + do_action( 'bb_xmlrpc_call_return', 'bb.getOptions' ); + + return $this->_getOptions( $options ); + } + + /** + * Sets the specified site options to the specified values + * + * @since 1.0 + * @return array|object An array containing the specified options when successfully executed or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The username for authentication + * @param string $args[1] The password for authentication + * @param array $args[2] The options to be updated along with the new value of the option + * + * XML-RPC request to set the site name and site description + * + * bb.setOptions + * + * joeblow + * 123password + * + * + * site_name + * Awesome forums + * + * + * site_description + * My totally awesome forums will kick your butt + * + * + * + * + */ + function bb_setOptions( $args ) + { + do_action( 'bb_xmlrpc_call', 'bb.setOptions' ); + + // Escape args + $this->escape( $args ); + + // Get the login credentials + $username = $args[0]; + $password = (string) $args[1]; + + // Check the user is valid + $user = $this->authenticate( $username, $password, 'manage_options', __( 'You are not allowed to manage options.' ) ); + + do_action( 'bb_xmlrpc_call_authenticated', 'bb.setOptions' ); + + // If an error was raised by authentication or by an action then return it + if ( $this->error ) { + return $this->error; + } + + // Make sure there is something for us to do + if ( !$args[2] || !is_array( $args[2] ) || !count( $args[2] ) ) { + $this->error = new IXR_Error( 400, __( 'The options data is invalid.' ) ); + return $this->error; + } + + $options = (array) $args[2]; + + // Update the requested options + foreach( $options as $o_name => $o_value ) { + $option_names[] = $o_name; + + // If there is no value set skip it + if ( empty( $o_value ) ) { + continue; + } + + // If the option doesn't exist skip it + if ( !array_key_exists( $o_name, $this->site_options ) ) { + continue; + } + + // If the option is readonly skip it + if ( $this->site_options[$o_name]['readonly'] == true ) { + continue; + } + + // Everything is good, update the option + bb_update_option( $this->site_options[$o_name]['option'], $o_value ); + } + + $_options = $this->_getOptions( $option_names ); + + do_action( 'bb_xmlrpc_call_return', 'bb.setOptions' ); + + // Now return the updated values + return $_options; + } + + + + /** + * Pingback XML-RPC methods + */ + + /** + * Processes pingback requests + * + * @since 1.0 + * @link http://www.hixie.ch/specs/pingback/pingback + * @return string|object A message of success or an IXR_Error object on failure + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The full URI of the post where the pingback is being sent from + * @param string $args[1] The full URI of the post where the pingback is being sent to + * + * XML-RPC request to register a pingback + * + * pingback.ping + * + * http://example.org/2008/09/post-containing-a-link/ + * http://example.com/2008/08/post-being-linked-to/ + * + * + */ + function pingback_ping( $args ) + { + do_action( 'bb_xmlrpc_call', 'pingback.ping' ); + + $this->escape( $args ); + + // No particular need to sanitise + $link_from = (string) $args[0]; + $link_to = (string) $args[1]; + + // Tidy up ampersands in the URLs + $link_from = str_replace( '&', '&', $link_from ); + $link_to = str_replace( '&', '&', $link_to ); + $link_to = str_replace( '&', '&', $link_to ); + + // Check if the topic linked to is in our site - a little more strict than WordPress, doesn't pull out the www if added + if ( !bb_match_domains( $link_to, bb_get_uri() ) ) { + // These are not the droids you are looking for + $this->error = new IXR_Error( 0, __( 'This is not the site you are trying to pingback.' ) ); + return $this->error; + } + + // Get the topic + if ( $topic_to = bb_get_topic_from_uri( $link_to ) ) { + // Topics shouldn't ping themselves + if ( $topic_from = bb_get_topic_from_uri( $link_from ) ) { + if ( $topic_from->topic_id === $topic_to->topic_id ) { + $this->error = new IXR_Error( 0, __( 'The source URL and the target URL cannot both point to the same resource.' ) ); + return $this->error; + } + } + } else { + $this->error = new IXR_Error ( 33, __( 'The specified target URL cannot be used as a target. It either doesn\'t exist, or it is not a pingback-enabled resource.' ) ); + return $this->error; + } + + // Let's check that the remote site didn't already pingback this entry + $query = new BB_Query( 'post', array( 'topic_id' => $topic_to->topic_id, 'append_meta' => true ), 'get_thread' ); + $posts_to = $query->results; + unset( $query ); + + // Make sure we have some posts in the topic, this error should never happen really + if ( !$posts_to || !is_array( $posts_to ) || !count( $posts_to ) ) { + $this->error = new IXR_Error( 0, __( 'The specified target topic does not contain any posts.' ) ); + return $this->error; + } + + // Check if we already have a pingback from this URL + foreach ( $posts_to as $post ) { + if ( isset( $post->pingback_uri ) && trim( $post->pingback_uri ) === trim( $link_from ) ) { + $this->error = new IXR_Error( 48, __( 'The pingback has already been registered.' ) ); + return $this->error; + } + } + unset( $posts_to, $post ); + + // Give time for the server sending the pingback to finish publishing it's post + sleep(1); + + // Let's check the remote site for valid URL and content + $link_from_source = wp_remote_fopen( $link_from ); + if ( !$link_from_source ) { + $this->error = new IXR_Error( 16, __( 'The source URL does not exist.' ) ); + return $this->error; + } + + // Allow plugins to filter here + $link_from_source = apply_filters( 'bb_pre_remote_source', $link_from_source, $link_to ); + + // Work around bug in strip_tags() + $link_from_source = str_replace( ']*>/", "\n\n", $link_from_source ); + + // Find the title of the page + preg_match( '|([^<]*?)|is', $link_from_source, $link_from_title ); + $link_from_title = $link_from_title[1]; + if ( empty( $link_from_title ) ) { + $this->error = new IXR_Error( 32, __( 'We cannot find a title on that page.' ) ); + return $this->error; + } + + // Strip out all tags except anchors + $link_from_source = strip_tags( $link_from_source, '' ); // just keep the tag we need + + // Split the source into paragraphs + $link_from_paragraphs = explode( "\n\n", $link_from_source ); + + // Prepare the link to search for in preg_match() once here + $preg_target = preg_quote( $link_to ); + + // Loop through the paragraphs looking for the context for the url + foreach ( $link_from_paragraphs as $link_from_paragraph ) { + // The url exists + if ( strpos( $link_from_paragraph, $link_to ) !== false ) { + // But is it in an anchor tag + preg_match( + "|]+?" . $preg_target . "[^>]*>([^>]+?)|", + $link_from_paragraph, + $context + ); + // If the URL isn't in an anchor tag, keep looking + if ( empty( $context ) ) { + continue; + } + + // We're going to use this fake tag to mark the context in a bit + // the marker is needed in case the link text appears more than once in the paragraph + $excerpt = preg_replace( '|\|', '', $link_from_paragraph ); + + // Prevent really long link text + if ( strlen( $context[1] ) > 100 ) { + $context[1] = substr( $context[1], 0, 100 ) . '...'; + } + + // Set up the marker around the context + $marker = '' . $context[1] . ''; + // Swap out the link for our marker + $excerpt = str_replace( $context[0], $marker, $excerpt ); + // Strip all tags except for our context marker + $excerpt = trim( strip_tags( $excerpt, '' ) ); + // Make the marker safe for use in regexp + $preg_marker = preg_quote( $marker ); + // Reduce the excerpt to only include 100 characters on either side of the link + $excerpt = preg_replace( "|.*?\s(.{0,100}" . $preg_marker . "{0,100})\s.*|s", '$1', $excerpt ); + // Strip tags again, to remove the marker wrapper + $excerpt = strip_tags( $excerpt ); + break; + } + } + + // Make sure the link to the target was found in the excerpt + if ( empty( $context ) ) { + $this->error = new IXR_Error( 17, __( 'The source URL does not contain a link to the target URL, and so cannot be used as a source.' ) ); + return $this->error; + } + + // Add whacky prefix and suffix to the excerpt and sanitize + $excerpt = '[...] ' . esc_html( $excerpt ) . ' [...]'; + $this->escape( $excerpt ); + + // Build an array of post data to insert then insert a new post + $postdata = array( + 'topic_id' => $topic_to->topic_id, + 'post_text' => $excerpt, + 'poster_id' => 0, + ); + if ( !$post_ID = bb_insert_post( $postdata ) ) { + $this->error = new IXR_Error( 0, __( 'The pingback could not be added.' ) ); + return $this->error; + } + + // Add meta to let us know where the pingback came from + $link_from = str_replace( '&', '&', $link_from ); + $this->escape( $link_from ); + bb_update_postmeta( $post_ID, 'pingback_uri', $link_from ); + + // Add the title to meta + $this->escape( $link_from_title ); + bb_update_postmeta( $post_ID, 'pingback_title', $link_from_title ); + + // Action for plugins and what not + do_action( 'bb_pingback_post', $post_ID ); + + // Return success message, complete with emoticon + return sprintf( __( 'Pingback from %1$s to %2$s registered. Keep the web talking! :-)' ), $link_from, $link_to ); + } + + + + /** + * Returns an array of URLs that pingbacked the given URL + * + * @since 1.0 + * @link http://www.aquarionics.com/misc/archives/blogite/0198.html + * @return array The array of URLs that pingbacked the given topic + * @param array $args Arguments passed by the XML-RPC call + * @param string $args[0] The full URI of the post where the pingback is being sent from + * @param string $args[1] The full URI of the post where the pingback is being sent to + * + * XML-RPC request to get all pingbacks on a topic + * + * pingback.ping + * + * http://example.com/2008/08/post-tobe-queried/ + * + * + */ + function pingback_extensions_getPingbacks( $args ) + { + do_action( 'bb_xmlrpc_call', 'pingback.extensions.getPingbacks' ); + + $this->escape( $args ); + + // Don't accept arrays of arguments + if ( is_array( $args ) ) { + $this->error = new IXR_Error( 404, __( 'The requested method only accepts one parameter.' ) ); + return $this->error; + } else { + $url = (string) $args; + } + + // Tidy up ampersands in the URI + $url = str_replace( '&', '&', $url ); + $url = str_replace( '&', '&', $url ); + + // Check if the URI is in our site + if ( !bb_match_domains( $url, bb_get_uri() ) ) { + // These are not the droids you are looking for + $this->error = new IXR_Error( 0, __( 'The specified target URL is not on this domain.' ) ); + return $this->error; + } + + // Make sure the specified URI is in fact associated with a topic + if ( !$topic = bb_get_topic_from_uri( $url ) ) { + $this->error = new IXR_Error( 33, __( 'The specified target URL cannot be used as a target. It either doesn\'t exist, or it is not a pingback-enabled resource.' ) ); + return $this->error; + } + + // Grab the posts from the topic + $query = new BB_Query( 'post', array( 'topic_id' => $topic_to->topic_id, 'append_meta' => true ), 'get_thread' ); + $posts_to = $query->results; + unset( $query ); + + // Check for pingbacks in the post meta data + $pingbacks = array(); + foreach ( $posts_to as $post ) { + if ( isset( $post->pingback_uri ) ) { + $pingbacks[] = $post->pingback_uri; + } + } + unset( $post ); + + // This will return an empty array on failure + return $pingbacks; + } +} + + + +/** + * Initialises the XML-RPC server + * + * @since 1.0 + * @var object The instance of the XML-RPC server class + */ +$bb_xmlrpc_server = new BB_XMLRPC_Server(); diff --git a/wp-content/plugins/buddypress/bp-forums/bp-forums-actions.php b/wp-content/plugins/buddypress/bp-forums/bp-forums-actions.php new file mode 100644 index 0000000..6f2585e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bp-forums-actions.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bp-forums-admin.php b/wp-content/plugins/buddypress/bp-forums/bp-forums-admin.php new file mode 100644 index 0000000..3e96bd5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bp-forums-admin.php @@ -0,0 +1,363 @@ + + +
      + + + + + + +
      +

      +
      + + + + + +
      +

      + +

      +

      + +

      +
        +
      • +
      • +
      • +
      • +
      + +
      +   +
      +
      + +
      +

      +

      +

      + +

      +
        +
      • +
      • +
      • +
      • +
      +
      +   +
      +
      + + + +
      + +

      +

      + +
      +

      +

      bb-config.php file, and BuddyPress will do the rest.", 'buddypress' ) ?>

      +


      +

      + + + +
      + + All done! Configuration settings have been saved to the file bb-config.php in the root of your WordPress install.

      ', 'buddypress' ); + break; + default: + // Just write the contents to screen + _e( '

      A configuration file could not be created. No problem, but you will need to save the text shown below into a file named bb-config.php in the root directory of your WordPress installation before you can start using the forum functionality.

      ', 'buddypress' ); ?> + + + + + +

      +

      +

      + + + +
      +

      +
      + + + +
      +

      + +

      +

      + +

      +
        +
      • +
      • +
      • +
      • +
      + +
      +   + +
      +
      + +
      +

      +

      +

      + +

      +
        +
      • +
      • +
      • +
      • +
      +
      +   +
      +
      + + array( "'bbpress'", "'" . DB_NAME . "'" ), + "define( 'BBDB_USER'," => array( "'username'", "'" . DB_USER . "'" ), + "define( 'BBDB_PASSWO" => array( "'password'", "'" . DB_PASSWORD . "'" ), + "define( 'BBDB_HOST'," => array( "'localhost'", "'" . DB_HOST . "'" ), + "define( 'BBDB_CHARSE" => array( "'utf8'", "'" . DB_CHARSET . "'" ), + "define( 'BBDB_COLLAT" => array( "''", "'" . DB_COLLATE . "'" ), + "define( 'BB_AUTH_KEY" => array( "'put your unique phrase here'", "'" . addslashes( AUTH_KEY ) . "'" ), + "define( 'BB_SECURE_A" => array( "'put your unique phrase here'", "'" . addslashes( SECURE_AUTH_KEY ) . "'" ), + "define( 'BB_LOGGED_I" => array( "'put your unique phrase here'", "'" . addslashes( LOGGED_IN_KEY ) . "'" ), + "define( 'BB_NONCE_KE" => array( "'put your unique phrase here'", "'" . addslashes( NONCE_KEY ) . "'" ), + "\$bb_table_prefix = '" => array( "'bb_'", "'" . $bp->table_prefix . "bb_'" ), + "define( 'BB_LANG', '" => array( "''", "'" . get_locale() . "'" ) + ) + ); + + // Add the custom user and usermeta entries to the config file + if ( $initial_write == 1 ) + $file = file_get_contents( ABSPATH . 'bb-config.php' ); + else + $file = &$initial_write; + + $file = trim( $file ); + if ( '?>' == substr( $file, -2, 2 ) ) + $file = substr( $file, 0, -2 ); + + $file .= "\n" . '$bb->custom_user_table = \'' . $wpdb->users . '\';'; + $file .= "\n" . '$bb->custom_user_meta_table = \'' . $wpdb->usermeta . '\';'; + $file .= "\n\n" . '$bb->uri = \'' . BP_PLUGIN_URL . '/bp-forums/bbpress/\';'; + $file .= "\n" . '$bb->name = \'' . get_blog_option( bp_get_root_blog_id(), 'blogname' ) . ' ' . __( 'Forums', 'buddypress' ) . '\';'; + + if ( is_multisite() ) + $file .= "\n" . '$bb->wordpress_mu_primary_blog_id = ' . bp_get_root_blog_id() . ';'; + + if ( defined( 'AUTH_SALT' ) ) + $file .= "\n\n" . 'define(\'BB_AUTH_SALT\', \'' . addslashes( AUTH_SALT ) . '\');'; + + if ( defined( 'LOGGED_IN_SALT' ) ) + $file .= "\n" . 'define(\'BB_LOGGED_IN_SALT\', \'' . addslashes( LOGGED_IN_SALT ) . '\');'; + + if ( defined( 'SECURE_AUTH_SALT' ) ) + $file .= "\n" . 'define(\'BB_SECURE_AUTH_SALT\', \'' . addslashes( SECURE_AUTH_SALT ) . '\');'; + + $file .= "\n\n" . 'define(\'WP_AUTH_COOKIE_VERSION\', 2);'; + $file .= "\n\n" . '?>'; + + if ( $initial_write == 1 ) { + $file_handle = fopen( ABSPATH . 'bb-config.php', 'w' ); + fwrite( $file_handle, $file ); + fclose( $file_handle ); + } else { + $initial_write = $file; + } + + bp_update_option( 'bb-config-location', ABSPATH . 'bb-config.php' ); + return $initial_write; +} + +function bp_forums_bbpress_write( $file_source, $file_target, $alterations ) { + + if ( !$file_source || !file_exists( $file_source ) || !is_file( $file_source ) ) + return -1; + + if ( !$file_target ) + $file_target = $file_source; + + if ( !$alterations || !is_array( $alterations ) ) + return -2; + + // Get the existing lines in the file + $lines = file( $file_source ); + + // Initialise an array to store the modified lines + $modified_lines = array(); + + // Loop through the lines and modify them + foreach ( (array)$lines as $line ) { + if ( isset( $alterations[substr( $line, 0, 20 )] ) ) { + $alteration = $alterations[substr( $line, 0, 20 )]; + $modified_lines[] = str_replace( $alteration[0], $alteration[1], $line ); + } else { + $modified_lines[] = $line; + } + } + + $writable = true; + if ( file_exists( $file_target ) ) { + if ( !is_writable( $file_target ) ) { + $writable = false; + } + } else { + $dir_target = dirname( $file_target ); + + if ( file_exists( $dir_target ) ) { + if ( !is_writable( $dir_target ) || !is_dir( $dir_target ) ) { + $writable = false; + } + } else { + $writable = false; + } + } + + if ( empty( $writable ) ) + return trim( join( null, $modified_lines ) ); + + // Open the file for writing - rewrites the whole file + $file_handle = fopen( $file_target, 'w' ); + + // Write lines one by one to avoid OS specific newline hassles + foreach ( (array)$modified_lines as $modified_line ) { + if ( false !== strpos( $modified_line, '?>' ) ) { + $modified_line = '?>'; + } + fwrite( $file_handle, $modified_line ); + if ( $modified_line == '?>' ) { + break; + } + } + + // Close the config file + fclose( $file_handle ); + + @chmod( $file_target, 0666 ); + + return 1; +} + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bp-forums-bbpress-sa.php b/wp-content/plugins/buddypress/bp-forums/bp-forums-bbpress-sa.php new file mode 100644 index 0000000..1c700d8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bp-forums-bbpress-sa.php @@ -0,0 +1,428 @@ +forums->bbconfig ); + + // Setup the global database connection + $bbdb = new BPDB ( BBDB_USER, BBDB_PASSWORD, BBDB_NAME, BBDB_HOST ); + + // Set the table names + $bbdb->forums = $bb_table_prefix . 'forums'; + $bbdb->meta = $bb_table_prefix . 'meta'; + $bbdb->posts = $bb_table_prefix . 'posts'; + $bbdb->terms = $bb_table_prefix . 'terms'; + $bbdb->term_relationships = $bb_table_prefix . 'term_relationships'; + $bbdb->term_taxonomy = $bb_table_prefix . 'term_taxonomy'; + $bbdb->topics = $bb_table_prefix . 'topics'; + + if ( isset( $bb->custom_user_table ) ) + $bbdb->users = $bb->custom_user_table; + else + $bbdb->users = $wpdb->users; + + if ( isset( $bb->custom_user_meta_table ) ) + $bbdb->usermeta = $bb->custom_user_meta_table; + else + $bbdb->usermeta = $wpdb->usermeta; + + $bbdb->prefix = $bb_table_prefix; + + define( 'BB_INSTALLING', false ); + + if ( is_object( $wp_roles ) ) { + $bb_roles = $wp_roles; + bb_init_roles( $bb_roles ); + } + + do_action( 'bb_got_roles' ); + do_action( 'bb_init' ); + do_action( 'init_roles' ); + + $bb_current_user = $current_user; + $wp_users_object = new BP_Forums_BB_Auth; + + if ( !isset( $wp_taxonomy_object ) ) + $wp_taxonomy_object = new BB_Taxonomy( $bbdb ); + + $wp_taxonomy_object->register_taxonomy( 'bb_topic_tag', 'bb_topic' ); + + // Set a site id if there isn't one already + if ( !isset( $bb->site_id ) ) + $bb->site_id = bp_get_root_blog_id(); + + // Check if the tables are installed, if not, install them + if ( !$tables_installed = (boolean) $bbdb->get_results( 'DESCRIBE `' . $bbdb->forums . '`;', ARRAY_A ) ) { + require( BB_PATH . 'bb-admin/includes/defaults.bb-schema.php' ); + + // Backticks and "IF NOT EXISTS" break the dbDelta function. + bp_bb_dbDelta( str_replace( ' IF NOT EXISTS', '', str_replace( '`', '', $bb_queries ) ) ); + + require( BB_PATH . 'bb-admin/includes/functions.bb-upgrade.php' ); + bb_update_db_version(); + + // Set the site admins as the keymasters + $site_admins = get_site_option( 'site_admins', array('admin') ); + foreach ( (array)$site_admins as $site_admin ) + update_user_meta( bp_core_get_userid( $site_admin ), $bb_table_prefix . 'capabilities', array( 'keymaster' => true ) ); + + // Create the first forum. + bb_new_forum( array( 'forum_name' => 'Default Forum' ) ); + + // Set the site URI + bb_update_option( 'uri', BB_URL ); + } + + register_shutdown_function( create_function( '', 'do_action("bb_shutdown");' ) ); +} +add_action( 'bbpress_init', 'bp_forums_load_bbpress' ); + +/* WP to bbP wrapper functions */ +function bb_get_current_user() { global $current_user; return $current_user; } +function bb_get_user( $user_id ) { return get_userdata( $user_id ); } +function bb_cache_users( $users ) {} + +/** + * bbPress needs this class for its usermeta manipulation. + */ +class BP_Forums_BB_Auth { + function update_meta( $args = '' ) { + $defaults = array( 'id' => 0, 'meta_key' => null, 'meta_value' => null, 'meta_table' => 'usermeta', 'meta_field' => 'user_id', 'cache_group' => 'users' ); + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + return update_user_meta( $id, $meta_key, $meta_value ); + } +} + +/** + * bbPress needs the DB class to be BPDB, but we want to use WPDB, so we can + * extend it and use this. + * + * The class is pluggable, so that plugins that swap out WPDB with a custom + * database class (such as HyperDB and SharDB) can provide their own versions + * of BPDB which extend the appropriate base class. + */ +if ( ! class_exists( 'BPDB' ) ) : + class BPDB extends WPDB { + var $db_servers = array(); + + function BPDB( $dbuser, $dbpassword, $dbname, $dbhost ) { + $this->__construct( $dbuser, $dbpassword, $dbname, $dbhost ); + } + + function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) { + parent::__construct( $dbuser, $dbpassword, $dbname, $dbhost ); + + $args = func_get_args(); + $args = call_user_func_array( array( &$this, 'init' ), $args ); + + if ( $args['host'] ) + $this->db_servers['dbh_global'] = $args; + } + + /** + * Determine if a database supports a particular feature. + * + * Overriden here to work around differences between bbPress', and WordPress', implementation differences. + * In particular, when BuddyPress tries to run bbPress' SQL installation script, the collation check always + * failed. The capability is long supported by WordPress' minimum required MySQL version, so this is safe. + */ + function has_cap( $db_cap, $_table_name='' ) { + if ( 'collation' == $db_cap ) + return true; + + return parent::has_cap( $db_cap ); + } + + /** + * Initialises the class variables based on provided arguments. + * Based on, and taken from, the BackPress class in turn taken from the 1.0 branch of bbPress. + */ + function init( $args ) { + if ( 4 == func_num_args() ) { + $args = array( + 'user' => $args, + 'password' => func_get_arg( 1 ), + 'name' => func_get_arg( 2 ), + 'host' => func_get_arg( 3 ), + 'charset' => defined( 'BBDB_CHARSET' ) ? BBDB_CHARSET : false, + 'collate' => defined( 'BBDB_COLLATE' ) ? BBDB_COLLATE : false, + ); + } + + $defaults = array( + 'user' => false, + 'password' => false, + 'name' => false, + 'host' => 'localhost', + 'charset' => false, + 'collate' => false, + 'errors' => false + ); + + return wp_parse_args( $args, $defaults ); + } + + function escape_deep( $data ) { + return $this->escape( $data ); + } + } +endif; // class_exists( 'BPDB' ) + +/* BBPress needs this function to convert vars */ +function backpress_convert_object( &$object, $output ) { + if ( is_array( $object ) ) { + foreach ( array_keys( $object ) as $key ) + backpress_convert_object( $object[$key], $output ); + } else { + switch ( $output ) { + case OBJECT : break; + case ARRAY_A : $object = get_object_vars($object); break; + case ARRAY_N : $object = array_values(get_object_vars($object)); break; + } + } +} + +/** + * Copied from wp-admin/includes/upgrade.php, this will take care of creating + * the bbPress stand-alone tables without loading a conflicting WP Admin. + * + * @param unknown_type $queries + * @param unknown_type $execute + * @return unknown + */ +function bp_bb_dbDelta($queries, $execute = true) { + global $wpdb; + + // Separate individual queries into an array + if ( !is_array($queries) ) { + $queries = explode( ';', $queries ); + if ('' == $queries[count($queries) - 1]) array_pop($queries); + } + + $cqueries = array(); // Creation Queries + $iqueries = array(); // Insertion Queries + $for_update = array(); + + // Create a tablename index for an array ($cqueries) of queries + foreach($queries as $qry) { + if (preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)) { + $cqueries[trim( strtolower($matches[1]), '`' )] = $qry; + $for_update[$matches[1]] = 'Created table '.$matches[1]; + } else if (preg_match("|CREATE DATABASE ([^ ]*)|", $qry, $matches)) { + array_unshift($cqueries, $qry); + } else if (preg_match("|INSERT INTO ([^ ]*)|", $qry, $matches)) { + $iqueries[] = $qry; + } else if (preg_match("|UPDATE ([^ ]*)|", $qry, $matches)) { + $iqueries[] = $qry; + } else { + // Unrecognized query type + } + } + + // Check to see which tables and fields exist + if ($tables = $wpdb->get_col('SHOW TABLES;')) { + // For every table in the database + foreach ($tables as $table) { + // Upgrade global tables only for the main site. Don't upgrade at all if DO_NOT_UPGRADE_GLOBAL_TABLES is defined. + if ( in_array($table, $wpdb->tables('global')) && ( !is_main_site() || defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) ) + continue; + + // If a table query exists for the database table... + if ( array_key_exists(strtolower($table), $cqueries) ) { + // Clear the field and index arrays + $cfields = $indices = array(); + // Get all of the field names in the query from between the parens + preg_match("|\((.*)\)|ms", $cqueries[strtolower($table)], $match2); + $qryline = trim($match2[1]); + + // Separate field lines into an array + $flds = explode("\n", $qryline); + + //echo "
      \n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."

      "; + + // For every field line specified in the query + foreach ($flds as $fld) { + // Extract the field name + preg_match("|^([^ ]*)|", trim($fld), $fvals); + $fieldname = trim( $fvals[1], '`' ); + + // Verify the found field name + $validfield = true; + switch (strtolower($fieldname)) { + case '': + case 'primary': + case 'index': + case 'fulltext': + case 'unique': + case 'key': + $validfield = false; + $indices[] = trim(trim($fld), ", \n"); + break; + } + $fld = trim($fld); + + // If it's a valid field, add it to the field array + if ($validfield) { + $cfields[strtolower($fieldname)] = trim($fld, ", \n"); + } + } + + // Fetch the table column structure from the database + $tablefields = $wpdb->get_results("DESCRIBE {$table};"); + + // For every field in the table + foreach ($tablefields as $tablefield) { + // If the table field exists in the field array... + if (array_key_exists(strtolower($tablefield->Field), $cfields)) { + // Get the field type from the query + preg_match("|".$tablefield->Field." ([^ ]*( unsigned)?)|i", $cfields[strtolower($tablefield->Field)], $matches); + $fieldtype = $matches[1]; + + // Is actual field type different from the field type in query? + if ($tablefield->Type != $fieldtype) { + // Add a query to change the column type + $cqueries[] = "ALTER TABLE {$table} CHANGE COLUMN {$tablefield->Field} " . $cfields[strtolower($tablefield->Field)]; + $for_update[$table.'.'.$tablefield->Field] = "Changed type of {$table}.{$tablefield->Field} from {$tablefield->Type} to {$fieldtype}"; + } + + // Get the default value from the array + //echo "{$cfields[strtolower($tablefield->Field)]}
      "; + if (preg_match("| DEFAULT '(.*)'|i", $cfields[strtolower($tablefield->Field)], $matches)) { + $default_value = $matches[1]; + if ($tablefield->Default != $default_value) { + // Add a query to change the column's default value + $cqueries[] = "ALTER TABLE {$table} ALTER COLUMN {$tablefield->Field} SET DEFAULT '{$default_value}'"; + $for_update[$table.'.'.$tablefield->Field] = "Changed default value of {$table}.{$tablefield->Field} from {$tablefield->Default} to {$default_value}"; + } + } + + // Remove the field from the array (so it's not added) + unset($cfields[strtolower($tablefield->Field)]); + } else { + // This field exists in the table, but not in the creation queries? + } + } + + // For every remaining field specified for the table + foreach ($cfields as $fieldname => $fielddef) { + // Push a query line into $cqueries that adds the field to that table + $cqueries[] = "ALTER TABLE {$table} ADD COLUMN $fielddef"; + $for_update[$table.'.'.$fieldname] = 'Added column '.$table.'.'.$fieldname; + } + + // Index stuff goes here + // Fetch the table index structure from the database + $tableindices = $wpdb->get_results("SHOW INDEX FROM {$table};"); + + if ($tableindices) { + // Clear the index array + unset($index_ary); + + // For every index in the table + foreach ($tableindices as $tableindex) { + // Add the index to the index data array + $keyname = $tableindex->Key_name; + $index_ary[$keyname]['columns'][] = array('fieldname' => $tableindex->Column_name, 'subpart' => $tableindex->Sub_part); + $index_ary[$keyname]['unique'] = ($tableindex->Non_unique == 0)?true:false; + } + + // For each actual index in the index array + foreach ($index_ary as $index_name => $index_data) { + // Build a create string to compare to the query + $index_string = ''; + if ($index_name == 'PRIMARY') { + $index_string .= 'PRIMARY '; + } else if($index_data['unique']) { + $index_string .= 'UNIQUE '; + } + $index_string .= 'KEY '; + if ($index_name != 'PRIMARY') { + $index_string .= $index_name; + } + $index_columns = ''; + // For each column in the index + foreach ($index_data['columns'] as $column_data) { + if ($index_columns != '') $index_columns .= ','; + // Add the field to the column list string + $index_columns .= $column_data['fieldname']; + if ($column_data['subpart'] != '') { + $index_columns .= '('.$column_data['subpart'].')'; + } + } + // Add the column list to the index create string + $index_string .= ' ('.$index_columns.')'; + if (!(($aindex = array_search($index_string, $indices)) === false)) { + unset($indices[$aindex]); + //echo "
      {$table}:
      Found index:".$index_string."
      \n"; + } + //else echo "
      {$table}:
      Did not find index:".$index_string."
      ".print_r($indices, true)."
      \n"; + } + } + + // For every remaining index specified for the table + foreach ( (array) $indices as $index ) { + // Push a query line into $cqueries that adds the index to that table + $cqueries[] = "ALTER TABLE {$table} ADD $index"; + $for_update[$table.'.'.$fieldname] = 'Added index '.$table.' '.$index; + } + + // Remove the original table creation query from processing + unset($cqueries[strtolower($table)]); + unset($for_update[strtolower($table)]); + } else { + // This table exists in the database, but not in the creation queries? + } + } + } + + $allqueries = array_merge($cqueries, $iqueries); + if ($execute) { + foreach ($allqueries as $query) { + //echo "
      ".print_r($query, true)."
      \n"; + $wpdb->query($query); + } + } + + return $for_update; +} + +?> diff --git a/wp-content/plugins/buddypress/bp-forums/bp-forums-bbpress.php b/wp-content/plugins/buddypress/bp-forums/bp-forums-bbpress.php new file mode 100644 index 0000000..71da6c3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bp-forums-bbpress.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bp-forums-filters.php b/wp-content/plugins/buddypress/bp-forums/bp-forums-filters.php new file mode 100644 index 0000000..008dc53 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bp-forums-filters.php @@ -0,0 +1,209 @@ +|i', 'bp_forums_make_nofollow_filter_callback', $text ); +} + function bp_forums_make_nofollow_filter_callback( $matches ) { + $text = $matches[1]; + $text = str_replace( array( ' rel="nofollow"', " rel='nofollow'"), '', $text ); + return ""; + } + +/** + * bp_forums_add_forum_topic_to_page_title( $title ) + * + * Append forum topic to page title + * + * @global object $bp + * @param string $title New page title; see bp_modify_page_title() + * @param string $title Original page title + * @param string $sep How to separate the various items within the page title. + * @param string $seplocation Direction to display title + * @return string + * @see bp_modify_page_title() + */ +function bp_forums_add_forum_topic_to_page_title( $title, $original_title, $sep, $seplocation ) { + global $bp; + + if ( bp_is_current_action( 'forum' ) && bp_is_action_variable( 'topic', 0 ) ) + if ( bp_has_forum_topic_posts() ) + $title .= bp_get_the_topic_title() . " $sep "; + + return $title; +} +add_filter( 'bp_modify_page_title', 'bp_forums_add_forum_topic_to_page_title', 9, 4 ); + +/** + * bp_forums_strip_mentions_on_post_edit( $title ) + * + * Removes the anchor tag autogenerated for at-mentions when forum topics and posts are edited. + * Prevents embedded anchor tags. + * + * @global object $bp + * @param string $content + * @return string $content + */ +function bp_forums_strip_mentions_on_post_edit( $content ) { + global $bp; + + $content = htmlspecialchars_decode( $content ); + + $pattern = "|(@[A-Za-z0-9-_\.@]+)|"; + + $content = preg_replace( $pattern, "$1", $content ); + + return $content; +} +add_filter( 'bp_get_the_topic_post_edit_text', 'bp_forums_strip_mentions_on_post_edit' ); +add_filter( 'bp_get_the_topic_text', 'bp_forums_strip_mentions_on_post_edit' ); + +/** + * "REPLIED TO" SQL FILTERS + */ + +/** + * Filters the get_topics_distinct portion of the Forums sql when on a user's Replied To page. + * + * This filter is added in bp_has_forum_topics() + * + * @package BuddyPress + * @since 1.5 + * + * @global object $wpdb The WordPress database global + * @param string $sql + * @return string $sql + */ +function bp_forums_add_replied_distinct_sql( $sql ) { + global $wpdb; + + $sql = $wpdb->prepare( "DISTINCT t.topic_id, " ); + + return $sql; +} + +/** + * Filters the get_topics_join portion of the Forums sql when on a user's Replied To page. + * + * This filter is added in bp_has_forum_topics() + * + * @package BuddyPress + * @since 1.5 + * + * @global object $bbdb The bbPress database global + * @global object $wpdb The WordPress database global + * @param string $sql + * @return string $sql + */ +function bp_forums_add_replied_join_sql( $sql ) { + global $bbdb, $wpdb; + + $sql .= $wpdb->prepare( " LEFT JOIN $bbdb->posts p ON p.topic_id = t.topic_id " ); + + return $sql; +} + +/** + * Filters the get_topics_where portion of the Forums sql when on a user's Replied To page. + * + * This filter is added in bp_has_forum_topics() + * + * @package BuddyPress + * @since 1.5 + * + * @global object $wpdb The WordPress database global + * @param string $sql + * @return string $sql + */ +function bp_forums_add_replied_where_sql( $sql ) { + global $wpdb; + + $sql .= $wpdb->prepare( " AND p.poster_id = %s ", bp_displayed_user_id() ); + + // Remove any topic_author information + $sql = str_replace( " AND t.topic_poster = '" . bp_displayed_user_id() . "'", '', $sql ); + + return $sql; +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bp-forums-functions.php b/wp-content/plugins/buddypress/bp-forums/bp-forums-functions.php new file mode 100644 index 0000000..ea50e63 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bp-forums-functions.php @@ -0,0 +1,676 @@ +forums->bbconfig ) && is_file( $bp->forums->bbconfig ) ) + return true; + + return false; +} + +/** + * Checks $bp pages global and looks for directory page + * + * @since 1.5 + * + * @global object $bp Global BuddyPress settings object + * @return bool True if set, False if empty + */ +function bp_forums_has_directory() { + global $bp; + + return (bool) !empty( $bp->pages->forums->id ); +} + +/** Forum Functions ***********************************************************/ + +function bp_forums_get_forum( $forum_id ) { + do_action( 'bbpress_init' ); + return bb_get_forum( $forum_id ); +} + +function bp_forums_new_forum( $args = '' ) { + do_action( 'bbpress_init' ); + + $defaults = array( + 'forum_name' => '', + 'forum_desc' => '', + 'forum_parent_id' => bp_forums_parent_forum_id(), + 'forum_order' => false, + 'forum_is_category' => 0 + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return bb_new_forum( array( 'forum_name' => stripslashes( $forum_name ), 'forum_desc' => stripslashes( $forum_desc ), 'forum_parent' => $forum_parent_id, 'forum_order' => $forum_order, 'forum_is_category' => $forum_is_category ) ); +} + +function bp_forums_update_forum( $args = '' ) { + do_action( 'bbpress_init' ); + + $defaults = array( + 'forum_id' => '', + 'forum_name' => '', + 'forum_desc' => '', + 'forum_slug' => '', + 'forum_parent_id' => bp_forums_parent_forum_id(), + 'forum_order' => false, + 'forum_is_category' => 0 + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return bb_update_forum( array( 'forum_id' => (int)$forum_id, 'forum_name' => stripslashes( $forum_name ), 'forum_desc' => stripslashes( $forum_desc ), 'forum_slug' => stripslashes( $forum_slug ), 'forum_parent' => $forum_parent_id, 'forum_order' => $forum_order, 'forum_is_category' => $forum_is_category ) ); +} + +/** Topic Functions ***********************************************************/ + +function bp_forums_get_forum_topics( $args = '' ) { + global $bp; + + do_action( 'bbpress_init' ); + + $defaults = array( + 'type' => 'newest', + 'forum_id' => false, + 'user_id' => false, + 'page' => 1, + 'per_page' => 15, + 'offset' => false, + 'number' => false, + 'exclude' => false, + 'show_stickies' => 'all', + 'filter' => false // if $type = tag then filter is the tag name, otherwise it's terms to search on. + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( class_exists( 'BB_Query' ) ) { + switch ( $type ) { + case 'newest': + $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_author_id' => $user_id, 'per_page' => $per_page, 'page' => $page, 'number' => $per_page, 'exclude' => $exclude, 'topic_title' => $filter, 'sticky' => $show_stickies, 'offset' => $offset, 'number' => $number ), 'get_latest_topics' ); + $topics =& $query->results; + break; + + case 'popular': + $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_author_id' => $user_id, 'per_page' => $per_page, 'page' => $page, 'order_by' => 't.topic_posts', 'topic_title' => $filter, 'sticky' => $show_stickies, 'offset' => $offset, 'number' => $number ) ); + $topics =& $query->results; + break; + + case 'unreplied': + $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_author_id' => $user_id, 'post_count' => 1, 'per_page' => $per_page, 'page' => $page, 'order_by' => 't.topic_time', 'topic_title' => $filter, 'sticky' => $show_stickies, 'offset' => $offset, 'number' => $number ) ); + $topics =& $query->results; + break; + + case 'tags': + $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_author_id' => $user_id, 'tag' => $filter, 'per_page' => $per_page, 'page' => $page, 'order_by' => 't.topic_time', 'sticky' => $show_stickies, 'offset' => $offset, 'number' => $number ) ); + $topics =& $query->results; + break; + } + } else { + $topics = array(); + } + + return apply_filters_ref_array( 'bp_forums_get_forum_topics', array( &$topics, &$r ) ); +} + +function bp_forums_get_topic_details( $topic_id ) { + do_action( 'bbpress_init' ); + + $query = new BB_Query( 'topic', 'topic_id=' . $topic_id . '&page=1' /* Page override so bbPress doesn't use the URI */ ); + + return $query->results[0]; +} + +function bp_forums_get_topic_id_from_slug( $topic_slug ) { + do_action( 'bbpress_init' ); + + if ( empty( $topic_slug ) ) + return false; + + return bb_get_id_from_slug( 'topic', $topic_slug ); +} + +function bp_forums_new_topic( $args = '' ) { + global $bp; + + do_action( 'bbpress_init' ); + + $defaults = array( + 'topic_title' => '', + 'topic_slug' => '', + 'topic_text' => '', + 'topic_poster' => $bp->loggedin_user->id, // accepts ids + 'topic_poster_name' => $bp->loggedin_user->fullname, // accept names + 'topic_last_poster' => $bp->loggedin_user->id, // accepts ids + 'topic_last_poster_name' => $bp->loggedin_user->fullname, // accept names + 'topic_start_time' => bp_core_current_time(), + 'topic_time' => bp_core_current_time(), + 'topic_open' => 1, + 'topic_tags' => false, // accepts array or comma delim + 'forum_id' => 0 // accepts ids or slugs + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + $topic_title = strip_tags( $topic_title ); + + if ( empty( $topic_title ) || !strlen( trim( $topic_title ) ) ) + return false; + + if ( empty( $topic_poster ) ) + return false; + + if ( bp_core_is_user_spammer( $topic_poster ) || bp_core_is_user_deleted( $topic_poster ) ) + return false; + + if ( empty( $topic_slug ) ) + $topic_slug = sanitize_title( $topic_title ); + + if ( !$topic_id = bb_insert_topic( array( 'topic_title' => stripslashes( $topic_title ), 'topic_slug' => $topic_slug, 'topic_poster' => $topic_poster, 'topic_poster_name' => $topic_poster_name, 'topic_last_poster' => $topic_last_poster, 'topic_last_poster_name' => $topic_last_poster_name, 'topic_start_time' => $topic_start_time, 'topic_time' => $topic_time, 'topic_open' => $topic_open, 'forum_id' => (int)$forum_id, 'tags' => $topic_tags ) ) ) + return false; + + // Now insert the first post. + if ( !bp_forums_insert_post( array( 'topic_id' => $topic_id, 'post_text' => $topic_text, 'post_time' => $topic_time, 'poster_id' => $topic_poster ) ) ) + return false; + + do_action( 'bp_forums_new_topic', $topic_id ); + + return $topic_id; +} + +function bp_forums_update_topic( $args = '' ) { + global $bp; + + do_action( 'bbpress_init' ); + + $defaults = array( + 'topic_id' => false, + 'topic_title' => '', + 'topic_text' => '', + 'topic_tags' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // Check if the user is a spammer + if ( bp_core_is_user_spammer( $bp->loggedin_user->id ) || bp_core_is_user_deleted( $bp->loggedin_user->id ) ) + return false; + + // bb_insert_topic() will append tags, but not remove them. So we remove all existing tags. + bb_remove_topic_tags( $topic_id ); + + if ( !$topic_id = bb_insert_topic( array( 'topic_id' => $topic_id, 'topic_title' => stripslashes( $topic_title ), 'tags' => $topic_tags ) ) ) + return false; + + if ( !$post = bb_get_first_post( $topic_id ) ) + return false; + + // Update the first post + if ( !$post = bp_forums_insert_post( array( 'post_id' => $post->post_id, 'topic_id' => $topic_id, 'post_text' => $topic_text, 'post_time' => $post->post_time, 'poster_id' => $post->poster_id, 'poster_ip' => $post->poster_ip, 'post_status' => $post->post_status, 'post_position' => $post->post_position ) ) ) + return false; + + return bp_forums_get_topic_details( $topic_id ); +} + +function bp_forums_sticky_topic( $args = '' ) { + global $bp; + + do_action( 'bbpress_init' ); + + $defaults = array( + 'topic_id' => false, + 'mode' => 'stick' // stick/unstick + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( 'stick' == $mode ) + return bb_stick_topic( $topic_id ); + else if ( 'unstick' == $mode ) + return bb_unstick_topic( $topic_id ); + + return false; +} + +function bp_forums_openclose_topic( $args = '' ) { + global $bp; + + do_action( 'bbpress_init' ); + + $defaults = array( + 'topic_id' => false, + 'mode' => 'close' // stick/unstick + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( 'close' == $mode ) + return bb_close_topic( $topic_id ); + else if ( 'open' == $mode ) + return bb_open_topic( $topic_id ); + + return false; +} + +function bp_forums_delete_topic( $args = '' ) { + global $bp; + + do_action( 'bbpress_init' ); + + $defaults = array( + 'topic_id' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return bb_delete_topic( $topic_id, 1 ); +} + +function bp_forums_total_topic_count() { + global $bbdb; + + do_action( 'bbpress_init' ); + + if ( isset( $bbdb ) ) { + if ( bp_is_active( 'groups' ) ) { + $groups_table_sql = groups_add_forum_tables_sql(); + $groups_where_sql = groups_add_forum_where_sql( "t.topic_status = 0" ); + } else { + $groups_table_sql = ''; + $groups_where_sql = "t.topic_status = 0"; + } + $count = $bbdb->get_results( $bbdb->prepare( "SELECT t.topic_id FROM {$bbdb->topics} AS t {$groups_table_sql} WHERE {$groups_where_sql}" ) ); + $count = count( (array)$count ); + } else { + $count = 0; + } + + return apply_filters( 'bp_forums_total_topic_count', $count ); +} + +/** + * Get a total "Topics Started" count for a given user + * + * @package BuddyPress + * + * @param int $user_id ID of the user being queried. Falls back on displayed user, then loggedin + * @param str $type The current filter/sort type. 'active', 'popular', 'unreplied' + * @return int $count The topic count + */ +function bp_forums_total_topic_count_for_user( $user_id = 0, $type = 'active' ) { + global $bp; + + do_action( 'bbpress_init' ); + + if ( !$user_id ) + $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + + if ( class_exists( 'BB_Query' ) ) { + $args = array( + 'topic_author_id' => $user_id, + 'page' => 1, + 'per_page' => -1, + 'count' => true + ); + + if ( 'unreplied' == $type ) + $args['post_count'] = 1; + + $query = new BB_Query( 'topic', $args ); + $count = $query->count; + $query = null; + } else { + $count = 0; + } + + return $count; +} + +/** + * Return the total number of topics replied to by a given user + * + * Uses an unfortunate technique to count unique topics, due to limitations in BB_Query. + * + * @package BuddyPress + * @since 1.5 + * + * @param int $user_id Defaults to displayed user, then to logged-in user + * @return int $count + */ +function bp_forums_total_replied_count_for_user( $user_id = 0, $type = 'active' ) { + global $bp; + + do_action( 'bbpress_init' ); + + if ( !$user_id ) + $user_id = ( bp_displayed_user_id() ) ? bp_displayed_user_id() : bp_loggedin_user_id(); + + if ( !$user_id ) + return 0; + + if ( class_exists( 'BB_Query' ) ) { + $query = new BB_Query( 'post', array( 'post_author_id' => $user_id, 'page' => 1, 'per_page' => -1, 'count' => true ) ); + + // Count the unique topics. No better way to do this in the bbPress query API + $topics = array(); + foreach( $query->results as $result ) { + if ( !in_array( $result->topic_id, $topics ) ) + $topics[] = $result->topic_id; + } + + // Even more unfortunate. If this is filtered by 'unreplied', we have to requery + if ( 'unreplied' == $type ) { + $topic_ids = implode( ',', $topics ); + $topics_query = new BB_Query( 'topic', array( 'topic_id' => $topic_ids, 'page' => 1, 'per_page' => -1, 'post_count' => 1 ) ); + $count = count( $topics_query->results ); + } else { + $count = count( $topics ); + } + $query = null; + } else { + $count = 0; + } + + return apply_filters( 'bp_forums_total_replied_count_for_user', $count, $user_id ); +} + +function bp_forums_get_topic_extras( $topics ) { + global $bp, $wpdb, $bbdb; + + if ( empty( $topics ) ) + return $topics; + + // Get the topic ids + foreach ( (array)$topics as $topic ) $topic_ids[] = $topic->topic_id; + $topic_ids = $wpdb->escape( join( ',', (array)$topic_ids ) ); + + // Fetch the topic's last poster details + $poster_details = $wpdb->get_results( $wpdb->prepare( "SELECT t.topic_id, t.topic_last_poster, u.user_login, u.user_nicename, u.user_email, u.display_name FROM {$wpdb->users} u, {$bbdb->topics} t WHERE u.ID = t.topic_last_poster AND t.topic_id IN ( {$topic_ids} )" ) ); + for ( $i = 0, $count = count( $topics ); $i < $count; ++$i ) { + foreach ( (array)$poster_details as $poster ) { + if ( $poster->topic_id == $topics[$i]->topic_id ) { + $topics[$i]->topic_last_poster_email = $poster->user_email; + $topics[$i]->topic_last_poster_nicename = $poster->user_nicename; + $topics[$i]->topic_last_poster_login = $poster->user_login; + $topics[$i]->topic_last_poster_displayname = $poster->display_name; + } + } + } + + // Fetch fullname for the topic's last poster + if ( bp_is_active( 'xprofile' ) ) { + $poster_names = $wpdb->get_results( $wpdb->prepare( "SELECT t.topic_id, pd.value FROM {$bp->profile->table_name_data} pd, {$bbdb->topics} t WHERE pd.user_id = t.topic_last_poster AND pd.field_id = 1 AND t.topic_id IN ( {$topic_ids} )" ) ); + for ( $i = 0, $count = count( $topics ); $i < $count; ++$i ) { + foreach ( (array)$poster_names as $name ) { + if ( $name->topic_id == $topics[$i]->topic_id ) + $topics[$i]->topic_last_poster_displayname = $name->value; + } + } + } + + // Loop through to make sure that each topic has the proper values set. This covers the + // case of deleted users + foreach ( (array)$topics as $key => $topic ) { + if ( !isset( $topic->topic_last_poster_email ) ) + $topics[$key]->topic_last_poster_email = ''; + + if ( !isset( $topic->topic_last_poster_nicename ) ) + $topics[$key]->topic_last_poster_nicename = ''; + + if ( !isset( $topic->topic_last_poster_login ) ) + $topics[$key]->topic_last_poster_login = ''; + + if ( !isset( $topic->topic_last_poster_displayname ) ) + $topics[$key]->topic_last_poster_displayname = ''; + } + + return $topics; +} + +/** Post Functions ************************************************************/ + +function bp_forums_get_topic_posts( $args = '' ) { + do_action( 'bbpress_init' ); + + $defaults = array( + 'topic_id' => false, + 'page' => 1, + 'per_page' => 15, + 'order' => 'ASC' + ); + + $args = wp_parse_args( $args, $defaults ); + $query = new BB_Query( 'post', $args, 'get_thread' ); + + return bp_forums_get_post_extras( $query->results ); +} + +function bp_forums_get_post( $post_id ) { + do_action( 'bbpress_init' ); + return bb_get_post( $post_id ); +} + +function bp_forums_delete_post( $args = '' ) { + global $bp; + + do_action( 'bbpress_init' ); + + $defaults = array( + 'post_id' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return bb_delete_post( $post_id, 1 ); +} + +function bp_forums_insert_post( $args = '' ) { + global $bp; + + do_action( 'bbpress_init' ); + + $defaults = array( + 'post_id' => false, + 'topic_id' => false, + 'post_text' => '', + 'post_time' => bp_core_current_time(), + 'poster_id' => $bp->loggedin_user->id, // accepts ids or names + 'poster_ip' => $_SERVER['REMOTE_ADDR'], + 'post_status' => 0, // use bb_delete_post() instead + 'post_position' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( !$post = bp_forums_get_post( $post_id ) ) + $post_id = false; + + if ( !isset( $topic_id ) ) + $topic_id = $post->topic_id; + + if ( empty( $post_text ) ) + $post_text = $post->post_text; + + if ( !isset( $post_time ) ) + $post_time = $post->post_time; + + if ( !isset( $post_position ) ) + $post_position = $post->post_position; + + if ( empty( $poster_id ) ) + return false; + + if ( bp_core_is_user_spammer( $bp->loggedin_user->id ) || bp_core_is_user_deleted( $bp->loggedin_user->id ) ) + return false; + + $post_id = bb_insert_post( array( 'post_id' => $post_id, 'topic_id' => $topic_id, 'post_text' => stripslashes( trim( $post_text ) ), 'post_time' => $post_time, 'poster_id' => $poster_id, 'poster_ip' => $poster_ip, 'post_status' => $post_status, 'post_position' => $post_position ) ); + + if ( !empty( $post_id ) ) + do_action( 'bp_forums_new_post', $post_id ); + + return $post_id; +} + +function bp_forums_get_post_extras( $posts ) { + global $bp, $wpdb; + + if ( empty( $posts ) ) + return $posts; + + // Get the user ids + foreach ( (array)$posts as $post ) $user_ids[] = $post->poster_id; + $user_ids = $wpdb->escape( join( ',', (array)$user_ids ) ); + + // Fetch the poster's user_email, user_nicename and user_login + $poster_details = $wpdb->get_results( $wpdb->prepare( "SELECT u.ID as user_id, u.user_login, u.user_nicename, u.user_email, u.display_name FROM {$wpdb->users} u WHERE u.ID IN ( {$user_ids} )" ) ); + + for ( $i = 0, $count = count( $posts ); $i < $count; ++$i ) { + foreach ( (array)$poster_details as $poster ) { + if ( $poster->user_id == $posts[$i]->poster_id ) { + $posts[$i]->poster_email = $poster->user_email; + $posts[$i]->poster_login = $poster->user_login; + $posts[$i]->poster_nicename = $poster->user_nicename; + $posts[$i]->poster_name = $poster->display_name; + } + } + } + + // Fetch fullname for each poster. + if ( bp_is_active( 'xprofile' ) ) { + $poster_names = $wpdb->get_results( $wpdb->prepare( "SELECT pd.user_id, pd.value FROM {$bp->profile->table_name_data} pd WHERE pd.user_id IN ( {$user_ids} )" ) ); + for ( $i = 0, $count = count( $posts ); $i < $count; ++$i ) { + foreach ( (array)$poster_names as $name ) { + if ( isset( $topics[$i] ) && $name->user_id == $topics[$i]->user_id ) + $posts[$i]->poster_name = $poster->value; + } + } + } + + return apply_filters( 'bp_forums_get_post_extras', $posts ); +} + +function bp_forums_get_forum_topicpost_count( $forum_id ) { + global $wpdb, $bbdb; + + do_action( 'bbpress_init' ); + + // Need to find a bbPress function that does this + return $wpdb->get_results( $wpdb->prepare( "SELECT topics, posts from {$bbdb->forums} WHERE forum_id = %d", $forum_id ) ); +} + +function bp_forums_filter_caps( $allcaps ) { + global $bp, $wp_roles, $bb_table_prefix; + + if ( !isset( $bp->loggedin_user->id ) ) + return $allcaps; + + $bb_cap = get_user_meta( $bp->loggedin_user->id, $bb_table_prefix . 'capabilities', true ); + + if ( empty( $bb_cap ) ) + return $allcaps; + + $bb_cap = array_keys($bb_cap); + $bb_cap = $wp_roles->get_role( $bb_cap[0] ); + $bb_cap = $bb_cap->capabilities; + + return array_merge( (array) $allcaps, (array) $bb_cap ); +} +add_filter( 'user_has_cap', 'bp_forums_filter_caps' ); + +/** + * Returns the parent forum id for the bbPress abstraction layer + * + * @package BuddyPress + * @since 1.5 + * + * @return int + */ +function bp_forums_parent_forum_id() { + return apply_filters( 'bp_forums_parent_forum_id', BP_FORUMS_PARENT_FORUM_ID ); +} + +/** + * Should sticky topics be broken out of regular topic order on forum directories? + * + * Defaults to false. Define BP_FORUMS_ENABLE_GLOBAL_DIRECTORY_STICKIES, or filter + * bp_forums_enable_global_directory_stickies, to change this behavior. + * + * @package BuddyPress + * @since 1.5 + * + * @return bool True if stickies should be displayed at the top of the global directory, false + * otherwise. + */ +function bp_forums_enable_global_directory_stickies() { + return apply_filters( 'bp_forums_enable_global_directory_stickies', defined( 'BP_FORUMS_ENABLE_GLOBAL_DIRECTORY_STICKIES' ) && BP_FORUMS_ENABLE_GLOBAL_DIRECTORY_STICKIES ); +} + + +/******************************************************************************** + * Caching + * + * Caching functions handle the clearing of cached objects and pages on specific + * actions throughout BuddyPress. + */ + +// List actions to clear super cached pages on, if super cache is installed +add_action( 'bp_forums_new_forum', 'bp_core_clear_cache' ); +add_action( 'bp_forums_new_topic', 'bp_core_clear_cache' ); +add_action( 'bp_forums_new_post', 'bp_core_clear_cache' ); + + +/** Embeds *******************************************************************/ + +/** + * Grabs the topic post ID and attempts to retrieve the oEmbed cache (if it exists) + * during the forum topic loop. If no cache and link is embeddable, cache it. + * + * @see BP_Embed + * @see bp_embed_forum_cache() + * @see bp_embed_forum_save_cache() + * @package BuddyPress_Forums + * @since 1.5 + */ +function bp_forums_embed() { + add_filter( 'embed_post_id', 'bp_get_the_topic_post_id' ); + add_filter( 'bp_embed_get_cache', 'bp_embed_forum_cache', 10, 3 ); + add_action( 'bp_embed_update_cache', 'bp_embed_forum_save_cache', 10, 3 ); +} +add_action( 'topic_loop_start', 'bp_forums_embed' ); + +/** + * Wrapper function for {@link bb_get_postmeta()}. + * Used during {@link BP_Embed::parse_oembed()} via {@link bp_forums_embed()}. + * + * @package BuddyPress_Forums + * @since 1.5 + */ +function bp_embed_forum_cache( $cache, $id, $cachekey ) { + return bb_get_postmeta( $id, $cachekey ); +} + +/** + * Wrapper function for {@link bb_update_postmeta()}. + * Used during {@link BP_Embed::parse_oembed()} via {@link bp_forums_embed()}. + * + * @package BuddyPress_Forums + * @since 1.5 + */ +function bp_embed_forum_save_cache( $cache, $cachekey, $id ) { + bb_update_postmeta( $id, $cachekey, $cache ); +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bp-forums-loader.php b/wp-content/plugins/buddypress/bp-forums/bp-forums-loader.php new file mode 100644 index 0000000..d27d881 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bp-forums-loader.php @@ -0,0 +1,253 @@ +id ); + + // The location of the bbPress stand-alone config file + if ( isset( $bp->site_options['bb-config-location'] ) ) + $this->bbconfig = $bp->site_options['bb-config-location']; + + // All globals for messaging component. + // Note that global_tables is included in this array. + $globals = array( + 'path' => BP_PLUGIN_DIR, + 'slug' => BP_FORUMS_SLUG, + 'root_slug' => isset( $bp->pages->forums->slug ) ? $bp->pages->forums->slug : BP_FORUMS_SLUG, + 'has_directory' => true, + 'notification_callback' => 'messages_format_notifications', + 'search_string' => __( 'Search Forums...', 'buddypress' ), + ); + + parent::setup_globals( $globals ); + } + + /** + * Include files + */ + function includes() { + + // Files to include + $includes = array( + 'actions', + 'screens', + 'classes', + 'filters', + 'template', + 'functions', + ); + + // Admin area + if ( is_admin() ) + $includes[] = 'admin'; + + // bbPress stand-alone + if ( !defined( 'BB_PATH' ) ) + $includes[] = 'bbpress-sa'; + + parent::includes( $includes ); + } + + /** + * Setup BuddyBar navigation + * + * @global obj $bp + */ + function setup_nav() { + global $bp; + + // Stop if forums haven't been set up yet + if ( !bp_forums_is_installed_correctly() ) + return; + + // Stop if there is no user displayed or logged in + if ( !is_user_logged_in() && !isset( $bp->displayed_user->id ) ) + return; + + // Add 'Forums' to the main navigation + $main_nav = array( + 'name' => __( 'Forums', 'buddypress' ), + 'slug' => $this->slug, + 'position' => 80, + 'screen_function' => 'bp_member_forums_screen_topics', + 'default_subnav_slug' => 'topics', + 'item_css_id' => $this->id + ); + + // Determine user to use + if ( isset( $bp->displayed_user->domain ) ) { + $user_domain = $bp->displayed_user->domain; + $user_login = $bp->displayed_user->userdata->user_login; + } elseif ( isset( $bp->loggedin_user->domain ) ) { + $user_domain = $bp->loggedin_user->domain; + $user_login = $bp->loggedin_user->userdata->user_login; + } else { + return; + } + + // User link + $forums_link = trailingslashit( $user_domain . $this->slug ); + + // Additional menu if friends is active + $sub_nav[] = array( + 'name' => __( 'Topics Started', 'buddypress' ), + 'slug' => 'topics', + 'parent_url' => $forums_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_member_forums_screen_topics', + 'position' => 20, + 'item_css_id' => 'topics' + ); + + // Additional menu if friends is active + $sub_nav[] = array( + 'name' => __( 'Replied To', 'buddypress' ), + 'slug' => 'replies', + 'parent_url' => $forums_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_member_forums_screen_replies', + 'position' => 40, + 'item_css_id' => 'replies' + ); + + // Favorite forums items. Disabled until future release. + /* + $sub_nav[] = array( + 'name' => __( 'Favorites', 'buddypress' ), + 'slug' => 'favorites', + 'parent_url' => $forums_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_member_forums_screen_favorites', + 'position' => 60, + 'item_css_id' => 'favorites' + ); + */ + + parent::setup_nav( $main_nav, $sub_nav ); + } + + /** + * Set up the admin bar + * + * @global obj $bp + */ + function setup_admin_bar() { + global $bp; + + // Prevent debug notices + $wp_admin_nav = array(); + + // Menus for logged in user + if ( is_user_logged_in() ) { + + // Setup the logged in user variables + $user_domain = $bp->loggedin_user->domain; + $user_login = $bp->loggedin_user->userdata->user_login; + $forums_link = trailingslashit( $user_domain . $this->slug ); + + // Add the "My Account" sub menus + $wp_admin_nav[] = array( + 'parent' => $bp->my_account_menu_id, + 'id' => 'my-account-' . $this->id, + 'title' => __( 'Forums', 'buddypress' ), + 'href' => trailingslashit( $forums_link ) + ); + + // Topics + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-topics-started', + 'title' => __( 'Topics Started', 'buddypress' ), + 'href' => trailingslashit( $forums_link . 'topics' ) + ); + + // Replies + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-replies', + 'title' => __( 'Replies', 'buddypress' ), + 'href' => trailingslashit( $forums_link . 'replies' ) + ); + + // Favorites + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-favorite-topics', + 'title' => __( 'Favorite Topics', 'buddypress' ), + 'href' => trailingslashit( $forums_link . 'favorites' ) + ); + } + + parent::setup_admin_bar( $wp_admin_nav ); + } + + /** + * Sets up the title for pages and + * + * @global obj $bp + */ + function setup_title() { + global $bp; + + // Adjust title based on view + if ( bp_is_forums_component() ) { + if ( bp_is_my_profile() ) { + $bp->bp_options_title = __( 'Forums', 'buddypress' ); + } else { + $bp->bp_options_avatar = bp_core_fetch_avatar( array( + 'item_id' => $bp->displayed_user->id, + 'type' => 'thumb' + ) ); + $bp->bp_options_title = $bp->displayed_user->fullname; + } + } + + parent::setup_title(); + } +} +// Create the forums component +$bp->forums = new BP_Forums_Component(); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bp-forums-screens.php b/wp-content/plugins/buddypress/bp-forums/bp-forums-screens.php new file mode 100644 index 0000000..26875d2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bp-forums-screens.php @@ -0,0 +1,127 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function bp_forums_directory_forums_setup() { + global $bp; + + if ( bp_is_forums_component() && ( !bp_current_action() || ( 'tag' == bp_current_action() && bp_action_variables() ) ) && !bp_current_item() ) { + if ( !bp_forums_has_directory() ) + return false; + + if ( !bp_forums_is_installed_correctly() ) { + bp_core_add_message( __( 'The forums component has not been set up yet.', 'buddypress' ), 'error' ); + bp_core_redirect( bp_get_root_domain() ); + } + + bp_update_is_directory( true, 'forums' ); + + do_action( 'bbpress_init' ); + + // Check to see if the user has posted a new topic from the forums page. + if ( isset( $_POST['submit_topic'] ) && bp_is_active( 'forums' ) ) { + check_admin_referer( 'bp_forums_new_topic' ); + + $bp->groups->current_group = groups_get_group( array( 'group_id' => $_POST['topic_group_id'] ) ); + if ( !empty( $bp->groups->current_group->id ) ) { + // Auto join this user if they are not yet a member of this group + if ( !is_super_admin() && 'public' == $bp->groups->current_group->status && !groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) + groups_join_group( $bp->groups->current_group->id ); + + $error_message = ''; + + $forum_id = groups_get_groupmeta( $bp->groups->current_group->id, 'forum_id' ); + if ( !empty( $forum_id ) ) { + if ( empty( $_POST['topic_title'] ) ) + $error_message = __( 'Please provide a title for your forum topic.', 'buddypress' ); + else if ( empty( $_POST['topic_text'] ) ) + $error_message = __( 'Forum posts cannot be empty. Please enter some text.', 'buddypress' ); + + if ( $error_message ) { + bp_core_add_message( $error_message, 'error' ); + $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum'; + } else { + if ( !$topic = groups_new_group_forum_topic( $_POST['topic_title'], $_POST['topic_text'], $_POST['topic_tags'], $forum_id ) ) { + bp_core_add_message( __( 'There was an error when creating the topic', 'buddypress'), 'error' ); + $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum'; + } else { + bp_core_add_message( __( 'The topic was created successfully', 'buddypress') ); + $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug . '/'; + } + } + + bp_core_redirect( $redirect ); + + } else { + bp_core_add_message( __( 'Please pick the group forum where you would like to post this topic.', 'buddypress' ), 'error' ); + bp_core_redirect( add_query_arg( 'new', '', bp_get_forums_directory_permalink() ) ); + } + + } else { + bp_core_add_message( __( 'Please pick the group forum where you would like to post this topic.', 'buddypress' ), 'error' ); + bp_core_redirect( add_query_arg( 'new', '', bp_get_forums_directory_permalink() ) ); + } + } + + do_action( 'bp_forums_directory_forums_setup' ); + + bp_core_load_template( apply_filters( 'bp_forums_template_directory_forums_setup', 'forums/index' ) ); + } +} +add_action( 'bp_screens', 'bp_forums_directory_forums_setup', 2 ); + +function bp_member_forums_screen_topics() { + global $bp; + + do_action( 'bp_member_forums_screen_topics' ); + + bp_core_load_template( apply_filters( 'bp_member_forums_screen_topics', 'members/single/home' ) ); +} + +function bp_member_forums_screen_replies() { + global $bp; + + do_action( 'bp_member_forums_screen_replies' ); + + bp_core_load_template( apply_filters( 'bp_member_forums_screen_replies', 'members/single/home' ) ); +} + +/** + * Loads the template content for a user's Favorites forum tab. + * + * Note that this feature is not fully implemented at the moment. + * + * @package BuddyPress Forums + */ +function bp_member_forums_screen_favorites() { + global $bp; + + do_action( 'bp_member_forums_screen_favorites' ); + + bp_core_load_template( apply_filters( 'bp_member_forums_screen_favorites', 'members/single/home' ) ); +} + +function bp_forums_screen_single_forum() { + global $bp; + + if ( !bp_is_forums_component() || !bp_is_current_action( 'forum' ) || !bp_action_variable( 0 ) ) + return false; + + do_action( 'bp_forums_screen_single_forum' ); + + bp_core_load_template( apply_filters( 'bp_forums_screen_single_forum', 'forums/single/forum' ) ); +} +add_action( 'bp_screens', 'bp_forums_screen_single_forum' ); + +function bp_forums_screen_single_topic() { + global $bp; + + if ( !bp_is_forums_component() || !bp_is_current_action( 'topic' ) || !bp_action_variable( 0 ) ) + return false; + + do_action( 'bp_forums_screen_single_topic' ); + + bp_core_load_template( apply_filters( 'bp_forums_screen_single_topic', 'forums/single/topic' ) ); +} +add_action( 'bp_screens', 'bp_forums_screen_single_topic' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-forums/bp-forums-template.php b/wp-content/plugins/buddypress/bp-forums/bp-forums-template.php new file mode 100644 index 0000000..265cd9f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-forums/bp-forums-template.php @@ -0,0 +1,1460 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Output the forums component slug + * + * @package BuddyPress + * @subpackage Forums Template + * @since 1.5 + * + * @uses bp_get_forums_slug() + */ +function bp_forums_slug() { + echo bp_get_forums_slug(); +} + /** + * Return the forums component slug + * + * @package BuddyPress + * @subpackage Forums Template + * @since 1.5 + */ + function bp_get_forums_slug() { + global $bp; + return apply_filters( 'bp_get_forums_slug', $bp->forums->slug ); + } + +/** + * Output the forums component root slug + * + * @package BuddyPress + * @subpackage Forums Template + * @since 1.5 + * + * @uses bp_get_forums_root_slug() + */ +function bp_forums_root_slug() { + echo bp_get_forums_root_slug(); +} + /** + * Return the forums component root slug + * + * @package BuddyPress + * @subpackage Forums Template + * @since 1.5 + */ + function bp_get_forums_root_slug() { + global $bp; + return apply_filters( 'bp_get_forums_root_slug', $bp->forums->root_slug ); + } + +/** + * Output forum directory permalink + * + * @package BuddyPress + * @subpackage Forums Template + * @since 1.5 + * @uses bp_get_forums_directory_permalink() + */ +function bp_forums_directory_permalink() { + echo bp_get_forums_directory_permalink(); +} + /** + * Return forum directory permalink + * + * @package BuddyPress + * @subpackage Forums Template + * @since 1.5 + * @uses apply_filters() + * @uses traisingslashit() + * @uses bp_get_root_domain() + * @uses bp_get_forums_root_slug() + * @return string + */ + function bp_get_forums_directory_permalink() { + return apply_filters( 'bp_get_forums_directory_permalink', trailingslashit( bp_get_root_domain() . '/' . bp_get_forums_root_slug() ) ); + } + +class BP_Forums_Template_Forum { + var $current_topic = -1; + var $topic_count; + var $topics; + var $topic; + + var $forum_id; + + var $in_the_loop; + + var $pag_page; + var $pag_num; + var $pag_links; + var $total_topic_count; + + var $single_topic = false; + + var $sort_by; + var $order; + + function BP_Forums_Template_Forum( $type, $forum_id, $user_id, $page, $per_page, $max, $no_stickies, $search_terms, $offset = false, $number = false ) { + $this->__construct( $type, $forum_id, $user_id, $page, $per_page, $max, $no_stickies, $search_terms, $offset, $number ); + } + + function __construct( $type, $forum_id, $user_id, $page, $per_page, $max, $no_stickies, $search_terms, $offset = false, $number = false ) { + global $bp; + + $this->pag_page = $page; + $this->pag_num = $per_page; + $this->type = $type; + $this->search_terms = $search_terms; + $this->forum_id = $forum_id; + $this->offset = $offset; + $this->number = $number; + + switch ( $type ) { + case 'newest': default: + $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'forum_id' => $forum_id, 'filter' => $search_terms, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies, 'offset' => $offset, 'number' => $number ) ); + break; + + case 'popular': + $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'type' => 'popular', 'filter' => $search_terms, 'forum_id' => $forum_id, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies, 'offset' => $offset, 'number' => $number ) ); + break; + + case 'unreplied': + $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'type' => 'unreplied', 'filter' => $search_terms, 'forum_id' => $forum_id, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies, 'offset' => $offset, 'number' => $number ) ); + break; + + case 'tags': + $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'type' => 'tags', 'filter' => $search_terms, 'forum_id' => $forum_id, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies, 'offset' => $offset, 'number' => $number ) ); + break; + } + + $this->topics = apply_filters( 'bp_forums_template_topics', $this->topics, $type, $forum_id, $per_page, $max, $no_stickies ); + + if ( !(int)$this->topics ) { + $this->topic_count = 0; + $this->total_topic_count = 0; + } else { + // Get a total topic count, for use in pagination. This value will differ + // depending on scope + if ( !empty( $forum_id ) ) { + // Group forums + $topic_count = bp_forums_get_forum( $forum_id ); + $topic_count = (int)$topic_count->topics; + } else if ( !empty( $bp->groups->current_group ) ) { + $topic_count = (int)groups_total_public_forum_topic_count( $type ); + } else if ( bp_is_user_forums_started() || ( bp_is_directory() && $user_id ) ) { + // This covers the case of Profile > Forums > Topics Started, as + // well as Forum Directory > My Topics + $topic_count = bp_forums_total_topic_count_for_user( bp_displayed_user_id(), $type ); + } else if ( bp_is_user_forums_replied_to() ) { + // Profile > Forums > Replied To + $topic_count = bp_forums_total_replied_count_for_user( bp_displayed_user_id(), $type ); + } else { + // For forum directories (All Topics), get a true count + $status = is_super_admin() ? 'all' : 'public'; // todo: member-of + $topic_count = (int)groups_total_forum_topic_count( $status, $search_terms ); + } + + if ( !$max || $max >= $topic_count ) { + $this->total_topic_count = $topic_count; + } else { + $this->total_topic_count = (int)$max; + } + + if ( $max ) { + if ( $max >= count($this->topics) ) { + $this->topic_count = count( $this->topics ); + } else { + $this->topic_count = (int)$max; + } + } else { + $this->topic_count = count( $this->topics ); + } + } + + $this->topic_count = apply_filters_ref_array( 'bp_forums_template_topic_count', array( $this->topic_count, &$this->topics, $type, $forum_id, $per_page, $max, $no_stickies ) ); + $this->total_topic_count = apply_filters_ref_array( 'bp_forums_template_total_topic_count', array( $this->total_topic_count, $this->topic_count, &$this->topics, $type, $forum_id, $per_page, $max, $no_stickies ) ); + + // Fetch extra information for topics, so we don't have to query inside the loop + $this->topics = bp_forums_get_topic_extras( $this->topics ); + + if ( (int)$this->total_topic_count && (int)$this->pag_num ) { + $this->pag_links = paginate_links( array( + 'base' => add_query_arg( array( 'p' => '%#%', 'n' => $this->pag_num ) ), + 'format' => '', + 'total' => ceil( (int)$this->total_topic_count / (int)$this->pag_num), + 'current' => $this->pag_page, + 'prev_text' => _x( '←', 'Forum topic pagination previous text', 'buddypress' ), + 'next_text' => _x( '→', 'Forum topic pagination next text', 'buddypress' ), + 'mid_size' => 1 + ) ); + } + } + + function has_topics() { + if ( $this->topic_count ) + return true; + + return false; + } + + function next_topic() { + $this->current_topic++; + $this->topic = $this->topics[$this->current_topic]; + + return $this->topic; + } + + function rewind_topics() { + $this->current_topic = -1; + if ( $this->topic_count > 0 ) { + $this->topic = $this->topics[0]; + } + } + + function user_topics() { + if ( $this->current_topic + 1 < $this->topic_count ) { + return true; + } elseif ( $this->current_topic + 1 == $this->topic_count ) { + do_action('forum_loop_end'); + // Do some cleaning up after the loop + $this->rewind_topics(); + } + + $this->in_the_loop = false; + return false; + } + + function the_topic() { + global $topic; + + $this->in_the_loop = true; + $this->topic = $this->next_topic(); + $this->topic = (object)$this->topic; + + if ( $this->current_topic == 0 ) // loop has just started + do_action('forum_loop_start'); + } +} + +/** + * Initiate the forum topics loop. + * + * Like other BuddyPress custom loops, the default arguments for this function are determined + * dynamically, depending on your current page. All of these $defaults can be overridden in the + * $args parameter. + * + * @package BuddyPress + * @uses apply_filters() Filter bp_has_topics to manipulate the $forums_template global before + * it's rendered, or to modify the value of has_topics(). + * + * @param array $args See inline definition of $defaults for explanation of arguments + * @return bool Returns true when forum topics are found corresponding to the args, false otherwise. + */ +function bp_has_forum_topics( $args = '' ) { + global $forum_template, $bp; + + /*** + * Set the defaults based on the current page. Any of these will be overridden + * if arguments are directly passed into the loop. Custom plugins should always + * pass their parameters directly to the loop. + */ + $type = 'newest'; + $user_id = 0; + $forum_id = false; + $search_terms = false; + $do_stickies = false; + + // User filtering + if ( !empty( $bp->displayed_user->id ) ) + $user_id = $bp->displayed_user->id; + + // "Replied" query must be manually modified + if ( 'replies' == bp_current_action() ) { + $user_id = 0; // User id must be handled manually by the filter, not by BB_Query + + add_filter( 'get_topics_distinct', 'bp_forums_add_replied_distinct_sql', 20 ); + add_filter( 'get_topics_join', 'bp_forums_add_replied_join_sql', 20 ); + add_filter( 'get_topics_where', 'bp_forums_add_replied_where_sql', 20 ); + } + + // If we're in a single group, set this group's forum_id + if ( !$forum_id && !empty( $bp->groups->current_group ) ) { + $bp->groups->current_group->forum_id = groups_get_groupmeta( $bp->groups->current_group->id, 'forum_id' ); + + // If it turns out there is no forum for this group, return false so + // we don't fetch all global topics + if ( empty( $bp->groups->current_group->forum_id ) ) + return false; + + $forum_id = $bp->groups->current_group->forum_id; + } + + // If $_GET['fs'] is set, let's auto populate the search_terms var + if ( bp_is_directory() && !empty( $_GET['fs'] ) ) + $search_terms = $_GET['fs']; + + // Get the pagination arguments from $_REQUEST + $page = isset( $_REQUEST['p'] ) ? intval( $_REQUEST['p'] ) : 1; + $per_page = isset( $_REQUEST['n'] ) ? intval( $_REQUEST['n'] ) : 20; + + // By default, stickies are only pushed to the top of the order on individual group forums + if ( bp_is_group_forum() ) + $do_stickies = true; + + $defaults = array( + 'type' => $type, + 'forum_id' => $forum_id, + 'user_id' => $user_id, + 'page' => $page, + 'per_page' => $per_page, + 'max' => false, + 'number' => false, + 'offset' => false, + 'search_terms' => $search_terms, + 'do_stickies' => $do_stickies + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + // If we're viewing a tag URL in the directory, let's override the type and + // set it to tags and the filter to the tag name + if ( bp_is_current_action( 'tag' ) && $search_terms = bp_action_variable( 0 ) ) { + $type = 'tags'; + } + + /** Sticky logic ******************************************************************/ + + if ( $do_stickies ) { + // Fetch the stickies + $stickies_template = new BP_Forums_Template_Forum( $type, $forum_id, $user_id, 0, 0, $max, 'sticky', $search_terms ); + + // If stickies are found, try merging them + if ( $stickies_template->has_topics() ) { + + // If stickies are for current $page + $page_start_num = ( ( $page - 1 ) * $per_page ) + 1; + $page_end_num = $page * $per_page <= $stickies_template->total_topic_count ? $page * $per_page : $stickies_template->total_topic_count; + + // Calculate the number of sticky topics that will be shown on this page + if ( $stickies_template->topic_count < $page_start_num ) { + $this_page_stickies = 0; + } else { + $this_page_stickies = $stickies_template->topic_count - $per_page * floor( $stickies_template->topic_count / $per_page ) * ( $page - 1 ); // Total stickies minus sticky count through this page + + // $this_page_stickies cannot be more than $per_page or less than 0 + if ( $this_page_stickies > $per_page ) + $this_page_stickies = $per_page; + else if ( $this_page_stickies < 0 ) + $this_page_stickies = 0; + } + + // Calculate the total number of topics that will be shown on this page + $this_page_topics = $stickies_template->total_topic_count >= ( $page * $per_page ) ? $per_page : $page_end_num - ( $page_start_num - 1 ); + + // If the number of stickies to be shown is less than $per_page, fetch some + // non-stickies to fill in the rest + if ( $this_page_stickies < $this_page_topics ) { + // How many non-stickies do we need? + $non_sticky_number = $this_page_topics - $this_page_stickies; + + // Calculate the non-sticky offset + // How many non-stickies on all pages up to this point? + $non_sticky_total = $page_end_num - $stickies_template->topic_count; + + // The offset is the number of total non-stickies, less the number + // to be shown on this page + $non_sticky_offset = $non_sticky_total - $non_sticky_number; + + // Fetch the non-stickies + $forum_template = new BP_Forums_Template_Forum( $type, $forum_id, $user_id, 1, $per_page, $max, 'no', $search_terms, $non_sticky_offset, $non_sticky_number ); + + // If there are stickies to merge on this page, do it now + if ( $this_page_stickies ) { + // Correct the topic_count + $forum_template->topic_count += (int)$this_page_stickies; + + // Figure out which stickies need to be included + $this_page_sticky_topics = array_slice( $stickies_template->topics, 0 - $this_page_stickies ); + + // Merge these topics into the forum template + $forum_template->topics = array_merge( $this_page_sticky_topics, (array)$forum_template->topics ); + } + } else { + // This page has no non-stickies + $forum_template = $stickies_template; + + // Adjust the topic count and trim the topics + $forum_template->topic_count = $this_page_stickies; + $forum_template->topics = array_slice( $forum_template->topics, $page - 1 ); + } + + // Because we're using a manual offset and number for the topic query, we + // must set the page number manually, and recalculate the pagination links + $forum_template->pag_num = $per_page; + $forum_template->pag_page = $page; + + $forum_template->pag_links = paginate_links( array( + 'base' => add_query_arg( array( 'p' => '%#%', 'n' => $forum_template->pag_num ) ), + 'format' => '', + 'total' => ceil( (int)$forum_template->total_topic_count / (int)$forum_template->pag_num ), + 'current' => $forum_template->pag_page, + 'prev_text' => _x( '←', 'Forum topic pagination previous text', 'buddypress' ), + 'next_text' => _x( '→', 'Forum topic pagination next text', 'buddypress' ), + 'mid_size' => 1 + ) ); + + } else { + // Fetch the non-sticky topics if no stickies were found + $forum_template = new BP_Forums_Template_Forum( $type, $forum_id, $user_id, $page, $per_page, $max, 'all', $search_terms ); + } + } else { + // When skipping the sticky logic, just pull up the forum topics like usual + $forum_template = new BP_Forums_Template_Forum( $type, $forum_id, $user_id, $page, $per_page, $max, 'all', $search_terms ); + } + + return apply_filters( 'bp_has_topics', $forum_template->has_topics(), $forum_template ); +} + +function bp_forum_topics() { + global $forum_template; + return $forum_template->user_topics(); +} + +function bp_the_forum_topic() { + global $forum_template; + return $forum_template->the_topic(); +} + +function bp_the_topic_id() { + echo bp_get_the_topic_id(); +} + function bp_get_the_topic_id() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_id', $forum_template->topic->topic_id ); + } + +function bp_the_topic_title() { + echo bp_get_the_topic_title(); +} + function bp_get_the_topic_title() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_title', stripslashes( $forum_template->topic->topic_title ) ); + } + +function bp_the_topic_slug() { + echo bp_get_the_topic_slug(); +} + function bp_get_the_topic_slug() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_slug', $forum_template->topic->topic_slug ); + } + +function bp_the_topic_text() { + echo bp_get_the_topic_text(); +} + function bp_get_the_topic_text() { + global $forum_template; + + $post = bb_get_first_post( (int)$forum_template->topic->topic_id, false ); + return apply_filters( 'bp_get_the_topic_text', esc_attr( $post->post_text ) ); + } + +function bp_the_topic_poster_id() { + echo bp_get_the_topic_poster_id(); +} + function bp_get_the_topic_poster_id() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_poster_id', $forum_template->topic->topic_poster ); + } + +function bp_the_topic_poster_avatar( $args = '' ) { + echo bp_get_the_topic_poster_avatar( $args ); +} + function bp_get_the_topic_poster_avatar( $args = '' ) { + global $forum_template; + + $defaults = array( + 'type' => 'thumb', + 'width' => false, + 'height' => false, + 'alt' => __( 'Profile picture of %s', 'buddypress' ) + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_the_topic_poster_avatar', bp_core_fetch_avatar( array( 'item_id' => $forum_template->topic->topic_poster, 'type' => $type, 'width' => $width, 'height' => $height, 'alt' => $alt ) ) ); + } + +function bp_the_topic_poster_name() { + echo bp_get_the_topic_poster_name(); +} + function bp_get_the_topic_poster_name() { + global $forum_template; + + $poster_id = ( empty( $forum_template->topic->poster_id ) ) ? $forum_template->topic->topic_poster : $forum_template->topic->poster_id; + + if ( !$name = bp_core_get_userlink( $poster_id ) ) + return __( 'Deleted User', 'buddypress' ); + + return apply_filters( 'bp_get_the_topic_poster_name', $name ); + } + +function bp_the_topic_object_id() { + echo bp_get_the_topic_object_id(); +} + function bp_get_the_topic_object_id() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_object_id', $forum_template->topic->object_id ); + } + +function bp_the_topic_object_name() { + echo bp_get_the_topic_object_name(); +} + function bp_get_the_topic_object_name() { + global $forum_template; + + if ( isset( $forum_template->topic->object_name ) ) + $retval = $forum_template->topic->object_name; + else + $retval = ''; + + return apply_filters( 'bp_get_the_topic_object_name', $retval ); + } + +function bp_the_topic_object_slug() { + echo bp_get_the_topic_object_slug(); +} + function bp_get_the_topic_object_slug() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_object_slug', $forum_template->topic->object_slug ); + } + +function bp_the_topic_object_permalink() { + echo bp_get_the_topic_object_permalink(); +} + function bp_get_the_topic_object_permalink() { + + // Currently this will only work with group forums, extended support in the future + if ( bp_is_active( 'groups' ) ) + $permalink = trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_get_the_topic_object_slug() . '/forum' ); + else + $permalink = ''; + + return apply_filters( 'bp_get_the_topic_object_permalink', $permalink ); + } + +function bp_the_topic_last_poster_name() { + echo bp_get_the_topic_last_poster_name(); +} + function bp_get_the_topic_last_poster_name() { + global $forum_template; + + $domain = bp_core_get_user_domain( $forum_template->topic->topic_last_poster, $forum_template->topic->topic_last_poster_nicename, $forum_template->topic->topic_last_poster_login ) ; + + // In the case where no user is found, bp_core_get_user_domain() may return the URL + // of the Members directory + if ( !$domain || $domain == bp_core_get_root_domain() . '/' . bp_get_members_root_slug() . '/' ) + return __( 'Deleted User', 'buddypress' ); + + return apply_filters( 'bp_get_the_topic_last_poster_name', '<a href="' . $domain . '">' . $forum_template->topic->topic_last_poster_displayname . '</a>' ); + } + +function bp_the_topic_object_avatar( $args = '' ) { + echo bp_get_the_topic_object_avatar( $args ); +} + function bp_get_the_topic_object_avatar( $args = '' ) { + global $forum_template; + + if ( !isset( $forum_template->topic->object_id ) ) + return false; + + $defaults = array( + 'type' => 'thumb', + 'width' => false, + 'height' => false, + 'alt' => __( 'Group logo for %s', 'buddypress' ) + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_the_topic_object_avatar', bp_core_fetch_avatar( array( 'item_id' => $forum_template->topic->object_id, 'type' => $type, 'object' => 'group', 'width' => $width, 'height' => $height, 'alt' => $alt ) ) ); + } + +function bp_the_topic_last_poster_avatar( $args = '' ) { + echo bp_get_the_topic_last_poster_avatar( $args ); +} + function bp_get_the_topic_last_poster_avatar( $args = '' ) { + global $forum_template; + + $defaults = array( + 'type' => 'thumb', + 'width' => false, + 'height' => false, + 'alt' => __( 'Profile picture of %s', 'buddypress' ) + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_the_topic_last_poster_avatar', bp_core_fetch_avatar( array( 'email' => $forum_template->topic->topic_last_poster_email, 'item_id' => $forum_template->topic->topic_last_poster, 'type' => $type, 'width' => $width, 'height' => $height, 'alt' => $alt ) ) ); + } + +function bp_the_topic_start_time() { + echo bp_get_the_topic_start_time(); +} + function bp_get_the_topic_start_time() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_start_time', $forum_template->topic->topic_start_time ); + } + +function bp_the_topic_time() { + echo bp_get_the_topic_time(); +} + function bp_get_the_topic_time() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_time', $forum_template->topic->topic_time ); + } + +function bp_the_topic_forum_id() { + echo bp_get_the_topic_forum_id(); +} + function bp_get_the_topic_forum_id() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_forum_id', $forum_template->topic->forum_id ); + } + +function bp_the_topic_status() { + echo bp_get_the_topic_status(); +} + function bp_get_the_topic_status() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_status', $forum_template->topic->topic_status ); + } + +function bp_the_topic_is_topic_open() { + echo bp_get_the_topic_is_topic_open(); +} + function bp_get_the_topic_is_topic_open() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_is_topic_open', $forum_template->topic->topic_open ); + } + +function bp_the_topic_last_post_id() { + echo bp_get_the_topic_last_post_id(); +} + function bp_get_the_topic_last_post_id() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_last_post_id', $forum_template->topic->topic_last_post_id ); + } + +function bp_the_topic_is_sticky() { + echo bp_get_the_topic_is_sticky(); +} + function bp_get_the_topic_is_sticky() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_is_sticky', $forum_template->topic->topic_sticky ); + } + +function bp_the_topic_total_post_count() { + echo bp_get_the_topic_total_post_count(); +} + function bp_get_the_topic_total_post_count() { + global $forum_template; + + if ( $forum_template->topic->topic_posts == 1 ) + return apply_filters( 'bp_get_the_topic_total_post_count', sprintf( __( '%d post', 'buddypress' ), $forum_template->topic->topic_posts ) ); + else + return apply_filters( 'bp_get_the_topic_total_post_count', sprintf( __( '%d posts', 'buddypress' ), $forum_template->topic->topic_posts ) ); + } + +function bp_the_topic_total_posts() { + echo bp_get_the_topic_total_posts(); +} + function bp_get_the_topic_total_posts() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_total_posts', $forum_template->topic->topic_posts ); + } + +function bp_the_topic_tag_count() { + echo bp_get_the_topic_tag_count(); +} + function bp_get_the_topic_tag_count() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_tag_count', $forum_template->topic->tag_count ); + } + +function bp_the_topic_permalink() { + echo bp_get_the_topic_permalink(); +} + function bp_get_the_topic_permalink() { + global $forum_template, $bp; + + // The topic is in a loop where its parent object is loaded + if ( bp_get_the_topic_object_slug() ) { + $permalink = trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_get_the_topic_object_slug() . '/forum' ); + + // We are viewing a single group topic, so use the current item + } elseif ( bp_is_group_forum_topic() ) { + $permalink = trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_current_item() . '/forum' ); + + // We are unsure what the context is, so fallback to forum root slug + } elseif ( bp_is_single_item() ) { + $permalink = trailingslashit( bp_get_root_domain() . '/' . bp_get_forums_root_slug() . '/' . bp_current_item() ); + + // This is some kind of error situation, so use forum root + } else { + $permalink = trailingslashit( bp_get_root_domain() . '/' . bp_get_forums_root_slug() ); + } + + return apply_filters( 'bp_get_the_topic_permalink', trailingslashit( $permalink . 'topic/' . $forum_template->topic->topic_slug ) ); + } + +function bp_the_topic_time_since_created() { + echo bp_get_the_topic_time_since_created(); +} + function bp_get_the_topic_time_since_created() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_time_since_created', bp_core_time_since( strtotime( $forum_template->topic->topic_start_time ) ) ); + } + +function bp_the_topic_latest_post_excerpt( $args = '' ) { + echo bp_get_the_topic_latest_post_excerpt( $args ); +} + function bp_get_the_topic_latest_post_excerpt( $args = '' ) { + global $forum_template; + + $defaults = array( + 'length' => 225 + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + $post = bp_forums_get_post( $forum_template->topic->topic_last_post_id ); + $post = bp_create_excerpt( $post->post_text, $length ); + + return apply_filters( 'bp_get_the_topic_latest_post_excerpt', $post, $length ); + } + +function bp_the_topic_time_since_last_post() { + echo bp_get_the_topic_time_since_last_post(); +} + function bp_get_the_topic_time_since_last_post() { + global $forum_template; + + return apply_filters( 'bp_get_the_topic_time_since_last_post', bp_core_time_since( strtotime( $forum_template->topic->topic_time ) ) ); + } + +function bp_the_topic_is_mine() { + echo bp_get_the_topic_is_mine(); +} + function bp_get_the_topic_is_mine() { + global $bp, $forum_template; + + return $bp->loggedin_user->id == $forum_template->topic->topic_poster; + } + +function bp_the_topic_admin_links( $args = '' ) { + echo bp_get_the_topic_admin_links( $args ); +} + function bp_get_the_topic_admin_links( $args = '' ) { + global $bp, $forum_template; + + $defaults = array( + 'seperator' => '|' + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + $links[] = '<a href="' . wp_nonce_url( bp_get_the_topic_permalink() . 'edit', 'bp_forums_edit_topic' ) . '">' . __( 'Edit Topic', 'buddypress' ) . '</a>'; + + if ( $bp->is_item_admin || $bp->is_item_mod || is_super_admin() ) { + if ( 0 == (int)$forum_template->topic->topic_sticky ) + $links[] = '<a href="' . wp_nonce_url( bp_get_the_topic_permalink() . 'stick', 'bp_forums_stick_topic' ) . '">' . __( 'Sticky Topic', 'buddypress' ) . '</a>'; + else + $links[] = '<a href="' . wp_nonce_url( bp_get_the_topic_permalink() . 'unstick', 'bp_forums_unstick_topic' ) . '">' . __( 'Un-stick Topic', 'buddypress' ) . '</a>'; + + if ( 0 == (int)$forum_template->topic->topic_open ) + $links[] = '<a href="' . wp_nonce_url( bp_get_the_topic_permalink() . 'open', 'bp_forums_open_topic' ) . '">' . __( 'Open Topic', 'buddypress' ) . '</a>'; + else + $links[] = '<a href="' . wp_nonce_url( bp_get_the_topic_permalink() . 'close', 'bp_forums_close_topic' ) . '">' . __( 'Close Topic', 'buddypress' ) . '</a>'; + + $links[] = '<a class="confirm" id="topic-delete-link" href="' . wp_nonce_url( bp_get_the_topic_permalink() . 'delete', 'bp_forums_delete_topic' ) . '">' . __( 'Delete Topic', 'buddypress' ) . '</a>'; + } + + return implode( ' ' . $seperator . ' ', (array) $links ); + } + +function bp_the_topic_css_class() { + echo bp_get_the_topic_css_class(); +} + + function bp_get_the_topic_css_class() { + global $forum_template; + + $class = false; + + if ( $forum_template->current_topic % 2 == 1 ) + $class .= 'alt'; + + if ( isset( $forum_template->topic->topic_sticky ) && 1 == (int)$forum_template->topic->topic_sticky ) + $class .= ' sticky'; + + if ( !isset( $forum_template->topic->topic_open ) || 0 == (int)$forum_template->topic->topic_open ) + $class .= ' closed'; + + return apply_filters( 'bp_get_the_topic_css_class', trim( $class ) ); + } + +function bp_my_forum_topics_link() { + echo bp_get_my_forum_topics_link(); +} + function bp_get_my_forum_topics_link() { + global $bp; + + return apply_filters( 'bp_get_my_forum_topics_link', bp_get_root_domain() . '/' . bp_get_forums_root_slug() . '/personal/' ); + } + +function bp_unreplied_forum_topics_link() { + echo bp_get_unreplied_forum_topics_link(); +} + function bp_get_unreplied_forum_topics_link() { + global $bp; + + return apply_filters( 'bp_get_unreplied_forum_topics_link', bp_get_root_domain() . '/' . bp_get_forums_root_slug() . '/unreplied/' ); + } + + +function bp_popular_forum_topics_link() { + echo bp_get_popular_forum_topics_link(); +} + function bp_get_popular_forum_topics_link() { + global $bp; + + return apply_filters( 'bp_get_popular_forum_topics_link', bp_get_root_domain() . '/' . bp_get_forums_root_slug() . '/popular/' ); + } + +function bp_newest_forum_topics_link() { + echo bp_get_newest_forum_topics_link(); +} + function bp_get_newest_forum_topics_link() { + global $bp; + + return apply_filters( 'bp_get_newest_forum_topics_link', bp_get_root_domain() . '/' . bp_get_forums_root_slug() . '/' ); + } + +function bp_forum_topic_type() { + echo bp_get_forum_topic_type(); +} + function bp_get_forum_topic_type() { + global $bp; + + if ( !bp_is_directory() || !bp_current_action() ) + return 'newest'; + + return apply_filters( 'bp_get_forum_topic_type', bp_current_action() ); + } + +/** + * Echoes the output of bp_get_forum_topic_new_reply_link() + * + * @package BuddyPress + * @since 1.5 + */ +function bp_forum_topic_new_reply_link() { + echo bp_get_forum_topic_new_reply_link(); +} + /** + * Returns the permalink for the New Reply button at the top of forum topics + * + * @package BuddyPress + * @since 1.5 + * + * @uses apply_filters() Filter bp_get_forum_topic_new_reply_link to modify + * @return str The URL for the New Reply link + */ + function bp_get_forum_topic_new_reply_link() { + global $topic_template; + + if ( $topic_template->pag->total_pages == $topic_template->pag_page ) { + // If we are on the last page, no need for a URL base + $link = ''; + } else { + // Create a link to the last page for the topic + $link = add_query_arg( array( + 'topic_page' => $topic_template->pag->total_pages, + 'num' => $topic_template->pag_num + ), bp_get_the_topic_permalink() ); + } + + // Tack on the #post-topic-reply anchor before returning + return apply_filters( 'bp_get_forum_topic_new_reply_link', $link . '#post-topic-reply', $link ); + } + +/** + * Echoes the output of bp_get_forums_tag_name() + * + * @package BuddyPress + * @todo Deprecate? + */ +function bp_forums_tag_name() { + echo bp_get_forums_tag_name(); +} + /** + * Outputs the currently viewed tag name + * + * @package BuddyPress + * @todo Deprecate? Seems unused + */ + function bp_get_forums_tag_name() { + $tag_name = bp_is_directory() && bp_is_forums_component() ? bp_action_variable( 0 ) : false; + + return apply_filters( 'bp_get_forums_tag_name', $tag_name ); + } + +function bp_forum_pagination() { + echo bp_get_forum_pagination(); +} + function bp_get_forum_pagination() { + global $forum_template; + + return apply_filters( 'bp_get_forum_pagination', $forum_template->pag_links ); + } + +function bp_forum_pagination_count() { + echo bp_get_forum_pagination_count(); +} + function bp_get_forum_pagination_count() { + global $bp, $forum_template; + + $start_num = intval( ( $forum_template->pag_page - 1 ) * $forum_template->pag_num ) + 1; + $from_num = bp_core_number_format( $start_num ); + $to_num = bp_core_number_format( ( $start_num + ( $forum_template->pag_num - 1 ) > $forum_template->total_topic_count ) ? $forum_template->total_topic_count : $start_num + ( $forum_template->pag_num - 1 ) ); + $total = bp_core_number_format( $forum_template->total_topic_count ); + $pag_filter = false; + + if ( 'tags' == $forum_template->type && !empty( $forum_template->search_terms ) ) + $pag_filter = sprintf( __( ' matching tag "%s"', 'buddypress' ), $forum_template->search_terms ); + + return apply_filters( 'bp_get_forum_pagination_count', sprintf( __( 'Viewing topic %s to %s (of %s total topics%s)', 'buddypress' ), $from_num, $to_num, $total, $pag_filter ) ); + } + +function bp_is_edit_topic() { + global $bp; + + if ( bp_is_action_variable( 'post' ) && bp_is_action_variable( 'edit' ) ) + return false; + + return true; +} + + +class BP_Forums_Template_Topic { + var $current_post = -1; + var $post_count; + var $posts; + var $post; + + var $forum_id; + var $topic_id; + var $topic; + + var $in_the_loop; + + var $pag_page; + var $pag_num; + var $pag_links; + var $total_post_count; + + var $single_post = false; + + var $sort_by; + var $order; + + function BP_Forums_Template_Topic( $topic_id, $per_page, $max, $order ) { + $this->__construct( $topic_id, $per_page, $max, $order ); + } + + function __construct( $topic_id, $per_page, $max, $order ) { + global $bp, $current_user, $forum_template; + + $this->pag_page = isset( $_REQUEST['topic_page'] ) ? intval( $_REQUEST['topic_page'] ) : 1; + $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page; + + $this->order = $order; + $this->topic_id = $topic_id; + $forum_template->topic = (object) bp_forums_get_topic_details( $this->topic_id ); + $this->forum_id = $forum_template->topic->forum_id; + + $this->posts = bp_forums_get_topic_posts( array( 'topic_id' => $this->topic_id, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'order' => $this->order ) ); + + if ( !$this->posts ) { + $this->post_count = 0; + $this->total_post_count = 0; + } else { + if ( !$max || $max >= (int)$forum_template->topic->topic_posts ) { + $this->total_post_count = (int)$forum_template->topic->topic_posts; + } else { + $this->total_post_count = (int)$max; + } + + if ( $max ) { + if ( $max >= count( $this->posts ) ) { + $this->post_count = count( $this->posts ); + } else { + $this->post_count = (int)$max; + } + } else { + $this->post_count = count( $this->posts ); + } + } + + // Load topic tags + $this->topic_tags = bb_get_topic_tags( $this->topic_id ); + + if ( (int)$this->total_post_count && (int)$this->pag_num ) { + $this->pag_links = paginate_links( array( + 'base' => add_query_arg( array( 'topic_page' => '%#%', 'num' => (int)$this->pag_num ) ), + 'format' => '', + 'total' => ceil( (int)$this->total_post_count / (int)$this->pag_num ), + 'current' => $this->pag_page, + 'prev_text' => _x( '←', 'Forum thread pagination previous text', 'buddypress' ), + 'next_text' => _x( '→', 'Forum thread pagination next text', 'buddypress' ), + 'mid_size' => 1 + ) ); + + $this->pag->total_pages = ceil( (int)$this->total_post_count / (int)$this->pag_num ); + } else { + $this->pag->total_pages = 1; + } + } + + function has_posts() { + if ( $this->post_count ) + return true; + + return false; + } + + function next_post() { + $this->current_post++; + $this->post = $this->posts[$this->current_post]; + + return $this->post; + } + + function rewind_posts() { + $this->current_post = -1; + if ( $this->post_count > 0 ) { + $this->post = $this->posts[0]; + } + } + + function user_posts() { + if ( $this->current_post + 1 < $this->post_count ) { + return true; + } elseif ( $this->current_post + 1 == $this->post_count ) { + do_action('topic_loop_end'); + // Do some cleaning up after the loop + $this->rewind_posts(); + } + + $this->in_the_loop = false; + return false; + } + + function the_post() { + global $post; + + $this->in_the_loop = true; + $this->post = $this->next_post(); + $this->post = (object)$this->post; + + if ( $this->current_post == 0 ) // loop has just started + do_action('topic_loop_start'); + } +} + +function bp_has_forum_topic_posts( $args = '' ) { + global $topic_template; + + $defaults = array( + 'topic_id' => false, + 'per_page' => 15, + 'max' => false, + 'order' => 'ASC' + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( empty( $topic_id ) && bp_is_groups_component() && bp_is_current_action( 'forum' ) && bp_is_action_variable( 'topic', 0 ) && bp_action_variable( 1 ) ) + $topic_id = bp_forums_get_topic_id_from_slug( bp_action_variable( 1 ) ); + elseif ( empty( $topic_id ) && bp_is_forums_component() && bp_is_current_action( 'topic' ) && bp_action_variable( 0 ) ) + $topic_id = bp_forums_get_topic_id_from_slug( bp_action_variable( 0 ) ); + + if ( empty( $topic_id ) ) { + return false; + + } else { + $topic_template = new BP_Forums_Template_Topic( (int) $topic_id, $per_page, $max, $order ); + + // Current topic forum_id needs to match current_group forum_id + if ( bp_is_groups_component() && $topic_template->forum_id != groups_get_groupmeta( bp_get_current_group_id(), 'forum_id' ) ) + return false; + } + + return apply_filters( 'bp_has_topic_posts', $topic_template->has_posts(), $topic_template ); +} + +function bp_forum_topic_posts() { + global $topic_template; + return $topic_template->user_posts(); +} + +function bp_the_forum_topic_post() { + global $topic_template; + return $topic_template->the_post(); +} + +function bp_the_topic_post_id() { + echo bp_get_the_topic_post_id(); +} + function bp_get_the_topic_post_id() { + global $topic_template; + + return apply_filters( 'bp_get_the_topic_post_id', $topic_template->post->post_id ); + } + +function bp_the_topic_post_content() { + echo bp_get_the_topic_post_content(); +} + function bp_get_the_topic_post_content() { + global $topic_template; + + return apply_filters( 'bp_get_the_topic_post_content', stripslashes( $topic_template->post->post_text ) ); + } + +function bp_the_topic_post_css_class() { + echo bp_get_the_topic_post_css_class(); +} + + function bp_get_the_topic_post_css_class() { + global $topic_template; + + $class = false; + + if ( $topic_template->current_post % 2 == 1 ) + $class .= 'alt'; + + if ( 1 == (int)$topic_template->post->post_status ) + $class .= ' deleted'; + + if ( 0 == (int)$topic_template->post->post_status ) + $class .= ' open'; + + return apply_filters( 'bp_get_the_topic_post_css_class', trim( $class ) ); + } + +function bp_the_topic_post_poster_avatar( $args = '' ) { + echo bp_get_the_topic_post_poster_avatar( $args ); +} + function bp_get_the_topic_post_poster_avatar( $args = '' ) { + global $topic_template; + + $defaults = array( + 'type' => 'thumb', + 'width' => 20, + 'height' => 20, + 'alt' => __( 'Profile picture of %s', 'buddypress' ) + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_the_topic_post_poster_avatar', bp_core_fetch_avatar( array( 'item_id' => $topic_template->post->poster_id, 'type' => $type, 'width' => $width, 'height' => $height, 'alt' => $alt ) ) ); + } + +function bp_the_topic_post_poster_name() { + echo bp_get_the_topic_post_poster_name(); +} + function bp_get_the_topic_post_poster_name() { + global $topic_template; + + if ( !$link = bp_core_get_user_domain( $topic_template->post->poster_id, $topic_template->post->poster_nicename, $topic_template->post->poster_login ) ) + return __( 'Deleted User', 'buddypress' ); + + return apply_filters( 'bp_get_the_topic_post_poster_name', '<a href="' . $link . '" title="' . $topic_template->post->poster_name . '">' . $topic_template->post->poster_name . '</a>' ); + } + +function bp_the_topic_post_poster_link() { + echo bp_get_the_topic_post_poster_link(); +} + function bp_get_the_topic_post_poster_link() { + global $topic_template; + + return apply_filters( 'bp_the_topic_post_poster_link', bp_core_get_user_domain( $topic_template->post->poster_id, $topic_template->post->poster_nicename, $topic_template->post->poster_login ) ); + } + +function bp_the_topic_post_time_since() { + echo bp_get_the_topic_post_time_since(); +} + function bp_get_the_topic_post_time_since() { + global $topic_template; + + return apply_filters( 'bp_get_the_topic_post_time_since', bp_core_time_since( strtotime( $topic_template->post->post_time ) ) ); + } + +function bp_the_topic_post_is_mine() { + echo bp_the_topic_post_is_mine(); +} + function bp_get_the_topic_post_is_mine() { + global $bp, $topic_template; + + return $bp->loggedin_user->id == $topic_template->post->poster_id; + } + +function bp_the_topic_post_admin_links( $args = '' ) { + echo bp_get_the_topic_post_admin_links( $args ); +} + function bp_get_the_topic_post_admin_links( $args = '' ) { + global $topic_template; + + // Never show for the first post in a topic. + if ( 0 == $topic_template->current_post && 1 == $topic_template->pag_page ) + return; + + $defaults = array( + 'separator' => ' | ' + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + $query_vars = ''; + if ( $_SERVER['QUERY_STRING'] ) + $query_vars = '?' . $_SERVER['QUERY_STRING']; + + $links = array(); + $links[] = '<a href="' . wp_nonce_url( bp_get_the_topic_permalink() . 'edit/post/' . $topic_template->post->post_id . '/' . $query_vars, 'bp_forums_edit_post' ) . '">' . __( 'Edit', 'buddypress' ) . '</a>'; + $links[] .= '<a class="confirm" id="post-delete-link" href="' . wp_nonce_url( bp_get_the_topic_permalink() . 'delete/post/' . $topic_template->post->post_id, 'bp_forums_delete_post' ) . '">' . __( 'Delete', 'buddypress' ) . '</a>'; + + return apply_filters( 'bp_get_the_topic_post_admin_links', implode( $separator, $links ), $links, $r ); + } + +function bp_the_topic_post_edit_text() { + echo bp_get_the_topic_post_edit_text(); +} + function bp_get_the_topic_post_edit_text() { + $post = bp_forums_get_post( bp_action_variable( 4 ) ); + return apply_filters( 'bp_get_the_topic_post_edit_text', esc_attr( $post->post_text ) ); + } + +function bp_the_topic_pagination() { + echo bp_get_the_topic_pagination(); +} + function bp_get_the_topic_pagination() { + global $topic_template; + + return apply_filters( 'bp_get_the_topic_pagination', $topic_template->pag_links ); + } + +function bp_the_topic_pagination_count() { + global $bp, $topic_template; + + $start_num = intval( ( $topic_template->pag_page - 1 ) * $topic_template->pag_num ) + 1; + $from_num = bp_core_number_format( $start_num ); + $to_num = bp_core_number_format( ( $start_num + ( $topic_template->pag_num - 1 ) > $topic_template->total_post_count ) ? $topic_template->total_post_count : $start_num + ( $topic_template->pag_num - 1 ) ); + $total = bp_core_number_format( $topic_template->total_post_count ); + + echo apply_filters( 'bp_the_topic_pagination_count', sprintf( __( 'Viewing post %1$s to %2$s (%3$s total posts)', 'buddypress' ), $from_num, $to_num, $total ) ); +} + +function bp_the_topic_is_last_page() { + echo bp_get_the_topic_is_last_page(); +} + function bp_get_the_topic_is_last_page() { + global $topic_template; + + return apply_filters( 'bp_get_the_topic_is_last_page', $topic_template->pag_page == $topic_template->pag->total_pages ); + } + +function bp_directory_forums_search_form() { + global $bp; + + $default_search_value = bp_get_search_default_text( 'forums' ); + $search_value = !empty( $_REQUEST['fs'] ) ? stripslashes( $_REQUEST['fs'] ) : $default_search_value; ?> + + <form action="" method="get" id="search-forums-form"> + <label><input type="text" name="s" id="forums_search" value="<?php echo esc_attr( $search_value ); ?>" onfocus="if (this.value == '<?php echo $default_search_value ?>') {this.value = '';}" onblur="if (this.value == '') {this.value = '<?php echo $default_search_value ?>';}" /></label> + <input type="submit" id="forums_search_submit" name="forums_search_submit" value="<?php _e( 'Search', 'buddypress' ); ?>" /> + </form> + +<?php +} + +function bp_forum_permalink( $forum_id = 0 ) { + echo bp_get_forum_permalink( $forum_id ); +} + function bp_get_forum_permalink( $forum_id = 0 ) { + global $bp; + + if ( bp_is_groups_component() ) { + $permalink = trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . bp_current_item() . '/forum' ); + } else { + if ( empty( $forum_id ) ) { + global $topic_template; + if ( isset( $topic_template->forum_id ) ) + $forum_id = $topic_template->forum_id; + } + + if ( $forum = bp_forums_get_forum( $forum_id ) ) + $permalink = trailingslashit( bp_get_root_domain() . '/' . bp_get_forums_root_slug() . '/forum/' . $forum->forum_slug ); + else + return false; + } + + return apply_filters( 'bp_get_forum_permalink', trailingslashit( $permalink ) ); + } + +function bp_forum_name( $forum_id = 0 ) { + echo bp_get_forum_name( $forum_id ); +} + function bp_get_forum_name( $forum_id = 0 ) { + global $bp; + + if ( empty( $forum_id ) ) { + global $topic_template; + if ( isset( $topic_template->forum_id ) ) + $forum_id = $topic_template->forum_id; + } + + if ( $forum = bp_forums_get_forum( $forum_id ) ) + return apply_filters( 'bp_get_forum_name', $forum->forum_name, $forum->forum_id ); + else + return false; + } + +function bp_forums_tag_heat_map( $args = '' ) { + $defaults = array( + 'smallest' => '10', + 'largest' => '42', + 'sizing' => 'px', + 'limit' => '50' + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + bb_tag_heat_map( $smallest, $largest, $sizing, $limit ); +} + +/** + * Echo the current topic's tag list, comma-separated + * + * @package BuddyPress + * @since 1.5 + */ +function bp_forum_topic_tag_list() { + echo bp_get_forum_topic_tag_list(); +} + /** + * Get the current topic's tag list + * + * @package BuddyPress + * @since 1.5 + * + * @param str $format 'string' returns comma-separated string; otherwise returns array + * @return mixed $tags + */ + function bp_get_forum_topic_tag_list( $format = 'string' ) { + global $topic_template; + + $tags_data = !empty( $topic_template->topic_tags ) ? $topic_template->topic_tags : false; + + $tags = array(); + + if ( $tags_data ) { + foreach( $tags_data as $tag_data ) { + $tags[] = $tag_data->name; + } + } + + if ( 'string' == $format ) + $tags = implode( ', ', $tags ); + + return apply_filters( 'bp_forum_topic_tag_list', $tags, $format ); + } + +/** + * Returns true if the current topic has tags + * + * @package BuddyPress + * @since 1.5 + * + * @return bool + */ +function bp_forum_topic_has_tags() { + global $topic_template; + + $has_tags = false; + + if ( !empty( $topic_template->topic_tags ) ) + $has_tags = true; + + return apply_filters( 'bp_forum_topic_has_tags', $has_tags ); +} + +function bp_forum_action() { + echo bp_get_forum_action(); +} + function bp_get_forum_action() { + global $topic_template; + + return apply_filters( 'bp_get_forum_action', bp_get_root_domain() . esc_attr( $_SERVER['REQUEST_URI'] ) ); + } + +function bp_forum_topic_action() { + echo bp_get_forum_topic_action(); +} + function bp_get_forum_topic_action() { + return apply_filters( 'bp_get_forum_topic_action', $_SERVER['REQUEST_URI'] ); + } + +function bp_forum_topic_count_for_user( $user_id = 0 ) { + echo bp_get_forum_topic_count_for_user( $user_id ); +} + function bp_get_forum_topic_count_for_user( $user_id = 0 ) { + return apply_filters( 'bp_get_forum_topic_count_for_user', bp_forums_total_topic_count_for_user( $user_id ) ); + } + +function bp_forum_topic_count( $user_id = 0 ) { + echo bp_get_forum_topic_count( $user_id ); +} + function bp_get_forum_topic_count( $user_id = 0 ) { + return apply_filters( 'bp_get_forum_topic_count', bp_forums_total_topic_count( $user_id ) ); + } +?> diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-actions.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-actions.php new file mode 100644 index 0000000..65a7515 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-actions.php @@ -0,0 +1,81 @@ +<?php +/** + * Action functions are exactly the same as screen functions, however they do not + * have a template screen associated with them. Usually they will send the user + * back to the default screen after execution. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function friends_action_add_friend() { + if ( !bp_is_friends_component() || !bp_is_current_action( 'add-friend' ) ) + return false; + + if ( !$potential_friend_id = (int)bp_action_variable( 0 ) ) + return false; + + if ( $potential_friend_id == bp_loggedin_user_id() ) + return false; + + $friendship_status = BP_Friends_Friendship::check_is_friend( bp_loggedin_user_id(), $potential_friend_id ); + + if ( 'not_friends' == $friendship_status ) { + + if ( !check_admin_referer( 'friends_add_friend' ) ) + return false; + + if ( !friends_add_friend( bp_loggedin_user_id(), $potential_friend_id ) ) { + bp_core_add_message( __( 'Friendship could not be requested.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Friendship requested', 'buddypress' ) ); + } + + } else if ( 'is_friend' == $friendship_status ) { + bp_core_add_message( __( 'You are already friends with this user', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'You already have a pending friendship request with this user', 'buddypress' ), 'error' ); + } + + bp_core_redirect( wp_get_referer() ); + + return false; +} +add_action( 'bp_init', 'friends_action_add_friend' ); + +function friends_action_remove_friend() { + if ( !bp_is_friends_component() || !bp_is_current_action( 'remove-friend' ) ) + return false; + + if ( !$potential_friend_id = (int)bp_action_variable( 0 ) ) + return false; + + if ( $potential_friend_id == bp_loggedin_user_id() ) + return false; + + $friendship_status = BP_Friends_Friendship::check_is_friend( bp_loggedin_user_id(), $potential_friend_id ); + + if ( 'is_friend' == $friendship_status ) { + + if ( !check_admin_referer( 'friends_remove_friend' ) ) + return false; + + if ( !friends_remove_friend( bp_loggedin_user_id(), $potential_friend_id ) ) { + bp_core_add_message( __( 'Friendship could not be canceled.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Friendship canceled', 'buddypress' ) ); + } + + } else if ( 'is_friends' == $friendship_status ) { + bp_core_add_message( __( 'You are not yet friends with this user', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'You have a pending friendship request with this user', 'buddypress' ), 'error' ); + } + + bp_core_redirect( wp_get_referer() ); + + return false; +} +add_action( 'bp_init', 'friends_action_remove_friend' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-activity.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-activity.php new file mode 100644 index 0000000..82f717a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-activity.php @@ -0,0 +1,115 @@ +<?php +/** + * These functions handle the recording, deleting and formatting of activity and + * notifications for the user and for this specific component. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function friends_record_activity( $args = '' ) { + global $bp; + + if ( !bp_is_active( 'activity' ) ) + return false; + + $defaults = array ( + 'user_id' => $bp->loggedin_user->id, + 'action' => '', + 'content' => '', + 'primary_link' => '', + 'component' => $bp->friends->id, + 'type' => false, + 'item_id' => false, + 'secondary_item_id' => false, + 'recorded_time' => bp_core_current_time(), + 'hide_sitewide' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return bp_activity_add( array( 'user_id' => $user_id, 'action' => $action, 'content' => $content, 'primary_link' => $primary_link, 'component' => $component, 'type' => $type, 'item_id' => $item_id, 'secondary_item_id' => $secondary_item_id, 'recorded_time' => $recorded_time, 'hide_sitewide' => $hide_sitewide ) ); +} + +function friends_delete_activity( $args ) { + global $bp; + + if ( bp_is_active( 'activity' ) ) { + extract( (array)$args ); + bp_activity_delete_by_item_id( array( 'item_id' => $item_id, 'component' => $bp->friends->id, 'type' => $type, 'user_id' => $user_id ) ); + } +} + +function friends_register_activity_actions() { + global $bp; + + if ( !bp_is_active( 'activity' ) ) + return false; + + bp_activity_set_action( $bp->friends->id, 'friends_register_activity_action', __( 'New friendship created', 'buddypress' ) ); + + do_action( 'friends_register_activity_actions' ); +} +add_action( 'bp_register_activity_actions', 'friends_register_activity_actions' ); + +/** + * Format the BuddyBar/admin bar notifications for the Friends component + * + * @package BuddyPress + * + * @param str $action The kind of notification being rendered + * @param int $item_id The primary item id + * @param int $secondary_item_id The secondary item id + * @param int $total_items The total number of messaging-related notifications waiting for the user + * @param str $format 'string' for BuddyBar-compatible notifications; 'array' for WP Admin Bar + */ +function friends_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) { + global $bp; + + switch ( $action ) { + case 'friendship_accepted': + $link = bp_loggedin_user_domain() . bp_get_friends_slug() . '/my-friends/newest'; + + // Set up the string and the filter + if ( (int)$total_items > 1 ) { + $text = sprintf( __( '%d friends accepted your friendship requests', 'buddypress' ), (int)$total_items ); + $filter = 'bp_friends_multiple_friendship_accepted_notification'; + } else { + $text = sprintf( __( '%s accepted your friendship request', 'buddypress' ), bp_core_get_user_displayname( $item_id ) ); + $filter = 'bp_friends_single_friendship_accepted_notification'; + } + + break; + + case 'friendship_request': + $link = bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests?new'; + + // Set up the string and the filter + if ( (int)$total_items > 1 ) { + $text = sprintf( __( 'You have %d pending friendship requests', 'buddypress' ), (int)$total_items ); + $filter = 'bp_friends_multiple_friendship_request_notification'; + } else { + $text = sprintf( __( 'You have a friendship request from %s', 'buddypress' ), bp_core_get_user_displayname( $item_id ) ); + $filter = 'bp_friends_single_friendship_request_notification'; + } + + break; + } + + // Return either an HTML link or an array, depending on the requested format + if ( 'string' == $format ) { + $return = apply_filters( $filter, '<a href="' . $link . '">' . $text . '</a>', (int)$total_items ); + } else { + $return = apply_filters( $filter, array( + 'link' => $link, + 'text' => $text + ), (int)$total_items ); + } + + do_action( 'friends_format_notifications', $action, $item_id, $secondary_item_id, $total_items, $return ); + + return $return; +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-cache.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-cache.php new file mode 100644 index 0000000..c2b52a6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-cache.php @@ -0,0 +1,38 @@ +<?php +/** + * Caching functions handle the clearing of cached objects and pages on specific + * actions throughout BuddyPress. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function friends_clear_friend_object_cache( $friendship_id ) { + if ( !$friendship = new BP_Friends_Friendship( $friendship_id ) ) + return false; + + wp_cache_delete( 'friends_friend_ids_' . $friendship->initiator_user_id, 'bp' ); + wp_cache_delete( 'friends_friend_ids_' . $friendship->friend_user_id, 'bp' ); + wp_cache_delete( 'bp_total_friend_count_' . $friendship->initiator_user_id, 'bp' ); + wp_cache_delete( 'bp_total_friend_count_' . $friendship->friend_user_id, 'bp' ); +} + +function friends_clear_friend_notifications() { + global $bp; + + if ( isset( $_GET['new'] ) ) + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->friends->id, 'friendship_accepted' ); +} +add_action( 'bp_activity_screen_my_activity', 'friends_clear_friend_notifications' ); + +// List actions to clear object caches on +add_action( 'friends_friendship_accepted', 'friends_clear_friend_object_cache' ); +add_action( 'friends_friendship_deleted', 'friends_clear_friend_object_cache' ); + +// List actions to clear super cached pages on, if super cache is installed +add_action( 'friends_friendship_rejected', 'bp_core_clear_cache' ); +add_action( 'friends_friendship_accepted', 'bp_core_clear_cache' ); +add_action( 'friends_friendship_deleted', 'bp_core_clear_cache' ); +add_action( 'friends_friendship_requested', 'bp_core_clear_cache' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-classes.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-classes.php new file mode 100644 index 0000000..8b3c065 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-classes.php @@ -0,0 +1,347 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +class BP_Friends_Friendship { + var $id; + var $initiator_user_id; + var $friend_user_id; + var $is_confirmed; + var $is_limited; + var $date_created; + + var $is_request; + var $populate_friend_details; + + var $friend; + + function bp_friends_friendship( $id = null, $is_request = false, $populate_friend_details = true ) { + $this->__construct( $id, $is_request, $populate_friend_details ); + } + + function __construct( $id = null, $is_request = false, $populate_friend_details = true ) { + $this->is_request = $is_request; + + if ( $id ) { + $this->id = $id; + $this->populate_friend_details = $populate_friend_details; + $this->populate( $this->id ); + } + } + + function populate() { + global $wpdb, $bp, $creds; + + if ( $friendship = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->friends->table_name} WHERE id = %d", $this->id ) ) ) { + $this->initiator_user_id = $friendship->initiator_user_id; + $this->friend_user_id = $friendship->friend_user_id; + $this->is_confirmed = $friendship->is_confirmed; + $this->is_limited = $friendship->is_limited; + $this->date_created = $friendship->date_created; + } + + // if running from ajax. + if ( !$bp->displayed_user->id ) + $bp->displayed_user->id = $creds['current_userid']; + + if ( $this->populate_friend_details ) { + if ( $this->friend_user_id == $bp->displayed_user->id ) { + $this->friend = new BP_Core_User( $this->initiator_user_id ); + } else { + $this->friend = new BP_Core_User( $this->friend_user_id ); + } + } + } + + function save() { + global $wpdb, $bp; + + $this->initiator_user_id = apply_filters( 'friends_friendship_initiator_user_id_before_save', $this->initiator_user_id, $this->id ); + $this->friend_user_id = apply_filters( 'friends_friendship_friend_user_id_before_save', $this->friend_user_id, $this->id ); + $this->is_confirmed = apply_filters( 'friends_friendship_is_confirmed_before_save', $this->is_confirmed, $this->id ); + $this->is_limited = apply_filters( 'friends_friendship_is_limited_before_save', $this->is_limited, $this->id ); + $this->date_created = apply_filters( 'friends_friendship_date_created_before_save', $this->date_created, $this->id ); + + do_action_ref_array( 'friends_friendship_before_save', array( &$this ) ); + + if ( $this->id ) { + // Update + $result = $wpdb->query( $wpdb->prepare( "UPDATE {$bp->friends->table_name} SET initiator_user_id = %d, friend_user_id = %d, is_confirmed = %d, is_limited = %d, date_created = %s ) WHERE id = %d", $this->initiator_user_id, $this->friend_user_id, $this->is_confirmed, $this->is_limited, $this->date_created, $this->id ) ); + } else { + // Save + $result = $wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->friends->table_name} ( initiator_user_id, friend_user_id, is_confirmed, is_limited, date_created ) VALUES ( %d, %d, %d, %d, %s )", $this->initiator_user_id, $this->friend_user_id, $this->is_confirmed, $this->is_limited, $this->date_created ) ); + $this->id = $wpdb->insert_id; + } + + do_action( 'friends_friendship_after_save', array( &$this ) ); + + return $result; + } + + function delete() { + global $wpdb, $bp; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->friends->table_name} WHERE id = %d", $this->id ) ); + } + + /* Static Functions */ + + function get_friend_user_ids( $user_id, $friend_requests_only = false, $assoc_arr = false ) { + global $wpdb, $bp; + + if ( $friend_requests_only ) { + $oc_sql = $wpdb->prepare( "AND is_confirmed = 0" ); + $friend_sql = $wpdb->prepare ( " WHERE friend_user_id = %d", $user_id ); + } else { + $oc_sql = $wpdb->prepare( "AND is_confirmed = 1" ); + $friend_sql = $wpdb->prepare ( " WHERE (initiator_user_id = %d OR friend_user_id = %d)", $user_id, $user_id ); + } + + $friends = $wpdb->get_results( $wpdb->prepare( "SELECT friend_user_id, initiator_user_id FROM {$bp->friends->table_name} $friend_sql $oc_sql ORDER BY date_created DESC" ) ); + $fids = array(); + + for ( $i = 0, $count = count( $friends ); $i < $count; ++$i ) { + if ( $assoc_arr ) + $fids[] = array( 'user_id' => ( $friends[$i]->friend_user_id == $user_id ) ? $friends[$i]->initiator_user_id : $friends[$i]->friend_user_id ); + else + $fids[] = ( $friends[$i]->friend_user_id == $user_id ) ? $friends[$i]->initiator_user_id : $friends[$i]->friend_user_id; + } + + return $fids; + } + + function get_friendship_id( $user_id, $friend_id ) { + global $wpdb, $bp; + + return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->friends->table_name} WHERE ( initiator_user_id = %d AND friend_user_id = %d ) OR ( initiator_user_id = %d AND friend_user_id = %d ) AND is_confirmed = 1", $user_id, $friend_id, $friend_id, $user_id ) ); + } + + function get_friendship_request_user_ids( $user_id ) { + global $wpdb, $bp; + + return $wpdb->get_col( $wpdb->prepare( "SELECT initiator_user_id FROM {$bp->friends->table_name} WHERE friend_user_id = %d AND is_confirmed = 0", $user_id ) ); + } + + function total_friend_count( $user_id = 0 ) { + global $wpdb, $bp; + + if ( !$user_id ) + $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + + /* This is stored in 'total_friend_count' usermeta. + This function will recalculate, update and return. */ + + $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->friends->table_name} WHERE (initiator_user_id = %d OR friend_user_id = %d) AND is_confirmed = 1", $user_id, $user_id ) ); + + // Do not update meta if user has never had friends + if ( !$count && !bp_get_user_meta( $user_id, 'total_friend_count', true ) ) + return 0; + + bp_update_user_meta( $user_id, 'total_friend_count', (int)$count ); + return (int)$count; + } + + function search_friends( $filter, $user_id, $limit = null, $page = null ) { + global $wpdb, $bp; + + // TODO: Optimize this function. + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + $filter = like_escape( $wpdb->escape( $filter ) ); + + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + if ( !$friend_ids = BP_Friends_Friendship::get_friend_user_ids( $user_id ) ) + return false; + + // Get all the user ids for the current user's friends. + $fids = implode( ',', $friend_ids ); + + if ( empty($fids) ) + return false; + + // filter the user_ids based on the search criteria. + if ( bp_is_active( 'xprofile' ) ) { + $sql = "SELECT DISTINCT user_id FROM {$bp->profile->table_name_data} WHERE user_id IN ($fids) AND value LIKE '$filter%%' {$pag_sql}"; + $total_sql = "SELECT COUNT(DISTINCT user_id) FROM {$bp->profile->table_name_data} WHERE user_id IN ($fids) AND value LIKE '$filter%%'"; + } else { + $sql = "SELECT DISTINCT user_id FROM {$wpdb->usermeta} WHERE user_id IN ($fids) AND meta_key = 'nickname' AND meta_value LIKE '$filter%%' {$pag_sql}"; + $total_sql = "SELECT COUNT(DISTINCT user_id) FROM {$wpdb->usermeta} WHERE user_id IN ($fids) AND meta_key = 'nickname' AND meta_value LIKE '$filter%%'"; + } + + $filtered_friend_ids = $wpdb->get_col($sql); + $total_friend_ids = $wpdb->get_var($total_sql); + + if ( !$filtered_friend_ids ) + return false; + + return array( 'friends' => $filtered_friend_ids, 'total' => (int)$total_friend_ids ); + } + + function check_is_friend( $loggedin_userid, $possible_friend_userid ) { + global $wpdb, $bp; + + if ( !$loggedin_userid || !$possible_friend_userid ) + return false; + + $result = $wpdb->get_results( $wpdb->prepare( "SELECT id, is_confirmed FROM {$bp->friends->table_name} WHERE (initiator_user_id = %d AND friend_user_id = %d) OR (initiator_user_id = %d AND friend_user_id = %d)", $loggedin_userid, $possible_friend_userid, $possible_friend_userid, $loggedin_userid ) ); + + if ( $result ) { + if ( 0 == (int)$result[0]->is_confirmed ) { + return 'pending'; + } else { + return 'is_friend'; + } + } else { + return 'not_friends'; + } + } + + function get_bulk_last_active( $user_ids ) { + global $wpdb, $bp; + + return $wpdb->get_results( $wpdb->prepare( "SELECT meta_value as last_activity, user_id FROM {$wpdb->usermeta} WHERE meta_key = %s AND user_id IN ( {$user_ids} ) ORDER BY meta_value DESC", bp_get_user_meta_key( 'last_activity' ) ) ); + } + + function accept($friendship_id) { + global $wpdb, $bp; + + return $wpdb->query( $wpdb->prepare( "UPDATE {$bp->friends->table_name} SET is_confirmed = 1, date_created = %s WHERE id = %d AND friend_user_id = %d", bp_core_current_time(), $friendship_id, $bp->loggedin_user->id ) ); + } + + function reject($friendship_id) { + global $wpdb, $bp; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->friends->table_name} WHERE id = %d AND friend_user_id = %d", $friendship_id, $bp->loggedin_user->id ) ); + } + + function search_users( $filter, $user_id, $limit = null, $page = null ) { + global $wpdb, $bp; + + $filter = like_escape( $wpdb->escape( $filter ) ); + + $usermeta_table = $wpdb->base_prefix . 'usermeta'; + $users_table = $wpdb->base_prefix . 'users'; + + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * intval( $limit ) ), intval( $limit ) ); + + // filter the user_ids based on the search criteria. + if ( bp_is_active( 'xprofile' ) ) { + $sql = $wpdb->prepare( "SELECT DISTINCT d.user_id as id FROM {$bp->profile->table_name_data} d, $users_table u WHERE d.user_id = u.id AND d.value LIKE '$filter%%' ORDER BY d.value DESC $pag_sql" ); + } else { + $sql = $wpdb->prepare( "SELECT DISTINCT user_id as id FROM $usermeta_table WHERE meta_value LIKE '$filter%%' ORDER BY d.value DESC $pag_sql" ); + } + + $filtered_fids = $wpdb->get_col($sql); + + if ( !$filtered_fids ) + return false; + + return $filtered_fids; + } + + function search_users_count( $filter ) { + global $wpdb, $bp; + + $filter = like_escape( $wpdb->escape( $filter ) ); + + $usermeta_table = $wpdb->prefix . 'usermeta'; + $users_table = $wpdb->base_prefix . 'users'; + + // filter the user_ids based on the search criteria. + if ( bp_is_active( 'xprofile' ) ) { + $sql = $wpdb->prepare( "SELECT COUNT(DISTINCT d.user_id) FROM {$bp->profile->table_name_data} d, $users_table u WHERE d.user_id = u.id AND d.value LIKE '$filter%%'" ); + } else { + $sql = $wpdb->prepare( "SELECT COUNT(DISTINCT user_id) FROM $usermeta_table WHERE meta_value LIKE '$filter%%'" ); + } + + $user_count = $wpdb->get_col($sql); + + if ( !$user_count ) + return false; + + return $user_count[0]; + } + + function sort_by_name( $user_ids ) { + global $wpdb, $bp; + + if ( !bp_is_active( 'xprofile' ) ) + return false; + + return $wpdb->get_results( $wpdb->prepare( "SELECT user_id FROM {$bp->profile->table_name_data} pd, {$bp->profile->table_name_fields} pf WHERE pf.id = pd.field_id AND pf.name = %s AND pd.user_id IN ( {$user_ids} ) ORDER BY pd.value ASC", bp_xprofile_fullname_field_name() ) ); + } + + function get_random_friends( $user_id, $total_friends = 5 ) { + global $wpdb, $bp; + + $sql = $wpdb->prepare( "SELECT friend_user_id, initiator_user_id FROM {$bp->friends->table_name} WHERE (friend_user_id = %d || initiator_user_id = %d) && is_confirmed = 1 ORDER BY rand() LIMIT %d", $user_id, $user_id, $total_friends ); + $results = $wpdb->get_results($sql); + + for ( $i = 0, $count = count( $results ); $i < $count; ++$i ) { + $fids[] = ( $results[$i]->friend_user_id == $user_id ) ? $results[$i]->initiator_user_id : $results[$i]->friend_user_id; + } + + // remove duplicates + if ( count( $fids ) > 0 ) + return array_flip(array_flip($fids)); + else + return false; + } + + function get_invitable_friend_count( $user_id, $group_id ) { + + // Setup some data we'll use below + $is_group_admin = BP_Groups_Member::check_is_admin( $user_id, $group_id ); + $friend_ids = BP_Friends_Friendship::get_friend_user_ids( $user_id ); + $invitable_count = 0; + + for ( $i = 0, $count = count( $friend_ids ); $i < $count; ++$i ) { + + // If already a member, they cannot be invited again + if ( BP_Groups_Member::check_is_member( (int) $friend_ids[$i], $group_id ) ) + continue; + + // If user already has invite, they cannot be added + if ( BP_Groups_Member::check_has_invite( (int) $friend_ids[$i], $group_id ) ) + continue; + + // If user is not group admin and friend is banned, they cannot be invited + if ( ( false === $is_group_admin ) && BP_Groups_Member::check_is_banned( (int) $friend_ids[$i], $group_id ) ) + continue; + + $invitable_count++; + } + + return $invitable_count; + } + + function get_user_ids_for_friendship( $friendship_id ) { + global $wpdb, $bp; + + return $wpdb->get_row( $wpdb->prepare( "SELECT friend_user_id, initiator_user_id FROM {$bp->friends->table_name} WHERE id = %d", $friendship_id ) ); + } + + function delete_all_for_user( $user_id ) { + global $wpdb, $bp; + + // Get friends of $user_id + $friend_ids = BP_Friends_Friendship::get_friend_user_ids( $user_id ); + + // Delete all friendships related to $user_id + $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->friends->table_name} WHERE friend_user_id = %d OR initiator_user_id = %d", $user_id, $user_id ) ); + + // Delete friend request notifications for members who have a notification from this user. + $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->core->table_name_notifications} WHERE component_name = 'friends' AND ( component_action = 'friendship_request' OR component_action = 'friendship_accepted' ) AND item_id = %d", $user_id ) ); + + // Loop through friend_ids and update their counts + foreach ( (array)$friend_ids as $friend_id ) { + BP_Friends_Friendship::total_friend_count( $friend_id ); + } + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-functions.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-functions.php new file mode 100644 index 0000000..b414a5d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-functions.php @@ -0,0 +1,341 @@ +<?php +/******************************************************************************** + * Business Functions + * + * Business functions are where all the magic happens in BuddyPress. They will + * handle the actual saving or manipulation of information. Usually they will + * hand off to a database class for data access, then return + * true or false on success or failure. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function friends_add_friend( $initiator_userid, $friend_userid, $force_accept = false ) { + global $bp; + + $friendship = new BP_Friends_Friendship; + + if ( (int)$friendship->is_confirmed ) + return true; + + $friendship->initiator_user_id = $initiator_userid; + $friendship->friend_user_id = $friend_userid; + $friendship->is_confirmed = 0; + $friendship->is_limited = 0; + $friendship->date_created = bp_core_current_time(); + + if ( $force_accept ) + $friendship->is_confirmed = 1; + + if ( $friendship->save() ) { + + if ( !$force_accept ) { + // Add the on screen notification + bp_core_add_notification( $friendship->initiator_user_id, $friendship->friend_user_id, $bp->friends->id, 'friendship_request' ); + + // Send the email notification + friends_notification_new_request( $friendship->id, $friendship->initiator_user_id, $friendship->friend_user_id ); + + do_action( 'friends_friendship_requested', $friendship->id, $friendship->initiator_user_id, $friendship->friend_user_id ); + } else { + do_action( 'friends_friendship_accepted', $friendship->id, $friendship->initiator_user_id, $friendship->friend_user_id ); + } + + return true; + } + + return false; +} + +function friends_remove_friend( $initiator_userid, $friend_userid ) { + global $bp; + + $friendship_id = BP_Friends_Friendship::get_friendship_id( $initiator_userid, $friend_userid ); + $friendship = new BP_Friends_Friendship( $friendship_id ); + + do_action( 'friends_before_friendship_delete', $friendship_id, $initiator_userid, $friend_userid ); + + // Remove the activity stream item for the user who canceled the friendship + friends_delete_activity( array( 'item_id' => $friendship_id, 'type' => 'friendship_accepted', 'user_id' => $bp->displayed_user->id ) ); + + do_action( 'friends_friendship_deleted', $friendship_id, $initiator_userid, $friend_userid ); + + if ( $friendship->delete() ) { + friends_update_friend_totals( $initiator_userid, $friend_userid, 'remove' ); + + return true; + } + + return false; +} + +function friends_accept_friendship( $friendship_id ) { + global $bp; + + $friendship = new BP_Friends_Friendship( $friendship_id, true, false ); + + if ( !$friendship->is_confirmed && BP_Friends_Friendship::accept( $friendship_id ) ) { + friends_update_friend_totals( $friendship->initiator_user_id, $friendship->friend_user_id ); + + // Remove the friend request notice + bp_core_delete_notifications_by_item_id( $friendship->friend_user_id, $friendship->initiator_user_id, $bp->friends->id, 'friendship_request' ); + + // Add a friend accepted notice for the initiating user + bp_core_add_notification( $friendship->friend_user_id, $friendship->initiator_user_id, $bp->friends->id, 'friendship_accepted' ); + + $initiator_link = bp_core_get_userlink( $friendship->initiator_user_id ); + $friend_link = bp_core_get_userlink( $friendship->friend_user_id ); + + // Record in activity streams for the initiator + friends_record_activity( array( + 'user_id' => $friendship->initiator_user_id, + 'type' => 'friendship_created', + 'action' => apply_filters( 'friends_activity_friendship_accepted_action', sprintf( __( '%1$s and %2$s are now friends', 'buddypress' ), $initiator_link, $friend_link ), $friendship ), + 'item_id' => $friendship_id, + 'secondary_item_id' => $friendship->friend_user_id + ) ); + + // Record in activity streams for the friend + friends_record_activity( array( + 'user_id' => $friendship->friend_user_id, + 'type' => 'friendship_created', + 'action' => apply_filters( 'friends_activity_friendship_accepted_action', sprintf( __( '%1$s and %2$s are now friends', 'buddypress' ), $friend_link, $initiator_link ), $friendship ), + 'item_id' => $friendship_id, + 'secondary_item_id' => $friendship->initiator_user_id, + 'hide_sitewide' => true // We've already got the first entry site wide + ) ); + + // Send the email notification + friends_notification_accepted_request( $friendship->id, $friendship->initiator_user_id, $friendship->friend_user_id ); + + do_action( 'friends_friendship_accepted', $friendship->id, $friendship->initiator_user_id, $friendship->friend_user_id ); + + return true; + } + + return false; +} + +function friends_reject_friendship( $friendship_id ) { + global $bp; + + $friendship = new BP_Friends_Friendship( $friendship_id, true, false ); + + if ( !$friendship->is_confirmed && BP_Friends_Friendship::reject( $friendship_id ) ) { + // Remove the friend request notice + bp_core_delete_notifications_by_item_id( $friendship->friend_user_id, $friendship->initiator_user_id, $bp->friends->id, 'friendship_request' ); + + do_action_ref_array( 'friends_friendship_rejected', array( $friendship_id, &$friendship ) ); + return true; + } + + return false; +} + +function friends_check_friendship( $user_id, $possible_friend_id ) { + global $bp; + + if ( 'is_friend' == BP_Friends_Friendship::check_is_friend( $user_id, $possible_friend_id ) ) + return true; + + return false; +} + +// Returns - 'is_friend', 'not_friends', 'pending' +function friends_check_friendship_status( $user_id, $possible_friend_id ) { + return BP_Friends_Friendship::check_is_friend( $user_id, $possible_friend_id ); +} + +function friends_get_total_friend_count( $user_id = 0 ) { + global $bp; + + if ( !$user_id ) + $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + + if ( !$count = wp_cache_get( 'bp_total_friend_count_' . $user_id, 'bp' ) ) { + $count = bp_get_user_meta( $user_id, 'total_friend_count', true ); + if ( empty( $count ) ) $count = 0; + wp_cache_set( 'bp_total_friend_count_' . $user_id, $count, 'bp' ); + } + + return apply_filters( 'friends_get_total_friend_count', $count ); +} + +function friends_check_user_has_friends( $user_id ) { + $friend_count = friends_get_total_friend_count( $user_id ); + + if ( empty( $friend_count ) ) + return false; + + if ( !(int)$friend_count ) + return false; + + return true; +} + +function friends_get_friendship_id( $initiator_user_id, $friend_user_id ) { + return BP_Friends_Friendship::get_friendship_id( $initiator_user_id, $friend_user_id ); +} + +function friends_get_friend_user_ids( $user_id, $friend_requests_only = false, $assoc_arr = false, $filter = false ) { + return BP_Friends_Friendship::get_friend_user_ids( $user_id, $friend_requests_only, $assoc_arr ); +} + +function friends_search_friends( $search_terms, $user_id, $pag_num = 10, $pag_page = 1 ) { + return BP_Friends_Friendship::search_friends( $search_terms, $user_id, $pag_num, $pag_page ); +} + +function friends_get_friendship_request_user_ids( $user_id ) { + return BP_Friends_Friendship::get_friendship_request_user_ids( $user_id ); +} + +function friends_get_recently_active( $user_id, $per_page = 0, $page = 0, $filter = '' ) { + return apply_filters( 'friends_get_recently_active', BP_Core_User::get_users( 'active', $per_page, $page, $user_id, $filter ) ); +} + +function friends_get_alphabetically( $user_id, $per_page = 0, $page = 0, $filter = '' ) { + return apply_filters( 'friends_get_alphabetically', BP_Core_User::get_users( 'alphabetical', $per_page, $page, $user_id, $filter ) ); +} + +function friends_get_newest( $user_id, $per_page = 0, $page = 0, $filter = '' ) { + return apply_filters( 'friends_get_newest', BP_Core_User::get_users( 'newest', $per_page, $page, $user_id, $filter ) ); +} + +function friends_get_bulk_last_active( $friend_ids ) { + return BP_Friends_Friendship::get_bulk_last_active( $friend_ids ); +} + +/** + * Get a list of friends that a user can invite into this group. + * + * Excludes friends that are already in the group, and banned friends if the + * user is not a group admin. + * + * @since 1.0 + * @param int $user_id User ID whose friends to see can be invited + * @param int $group_id Group to check possible invitations against + * @return mixed False if no friends, array of users if friends + */ +function friends_get_friends_invite_list( $user_id = 0, $group_id = 0 ) { + + // Default to logged in user id + if ( empty( $user_id ) ) + $user_id = bp_loggedin_user_id(); + + // Only group admins can invited previously banned users + $user_is_admin = (bool) groups_is_user_admin( $user_id, $group_id ); + + // Assume no friends + $friends = array(); + + // Default args + $args = apply_filters( 'bp_friends_pre_get_invite_list', array( + 'user_id' => $user_id, + 'type' => 'alphabetical', + 'per_page' => 0 + ) ); + + // User has friends + if ( bp_has_members( $args ) ) { + + /** + * Loop through all friends and try to add them to the invitation list. + * + * Exclude friends that: + * 1. are already members of the group + * 2. are banned from this group if the current user is also not a + * group admin. + */ + while ( bp_members() ) : + + // Load the member + bp_the_member(); + + // Get the user ID of the friend + $friend_user_id = bp_get_member_user_id(); + + // Skip friend if already in the group + if ( groups_is_user_member( $friend_user_id, $group_id ) ) + continue; + + // Skip friend if not group admin and user banned from group + if ( ( false === $user_is_admin ) && groups_is_user_banned( $friend_user_id, $group_id ) ) + continue; + + // Friend is safe, so add it to the array of possible friends + $friends[] = array( + 'id' => $friend_user_id, + 'full_name' => bp_get_member_name() + ); + + endwhile; + } + + // If no friends, explicitly set to false + if ( empty( $friends ) ) + $friends = false; + + // Allow friends to be filtered + return apply_filters( 'bp_friends_get_invite_list', $friends, $user_id, $group_id ); +} + +function friends_count_invitable_friends( $user_id, $group_id ) { + return BP_Friends_Friendship::get_invitable_friend_count( $user_id, $group_id ); +} + +function friends_get_friend_count_for_user( $user_id ) { + return BP_Friends_Friendship::total_friend_count( $user_id ); +} + +function friends_search_users( $search_terms, $user_id, $pag_num = 0, $pag_page = 0 ) { + global $bp; + + $user_ids = BP_Friends_Friendship::search_users( $search_terms, $user_id, $pag_num, $pag_page ); + + if ( !$user_ids ) + return false; + + for ( $i = 0, $count = count( $user_ids ); $i < $count; ++$i ) + $users[] = new BP_Core_User( $user_ids[$i] ); + + return array( 'users' => $users, 'count' => BP_Friends_Friendship::search_users_count( $search_terms ) ); +} + +function friends_is_friendship_confirmed( $friendship_id ) { + $friendship = new BP_Friends_Friendship( $friendship_id ); + return $friendship->is_confirmed; +} + +function friends_update_friend_totals( $initiator_user_id, $friend_user_id, $status = 'add' ) { + global $bp; + + if ( 'add' == $status ) { + bp_update_user_meta( $initiator_user_id, 'total_friend_count', (int)bp_get_user_meta( $initiator_user_id, 'total_friend_count', true ) + 1 ); + bp_update_user_meta( $friend_user_id, 'total_friend_count', (int)bp_get_user_meta( $friend_user_id, 'total_friend_count', true ) + 1 ); + } else { + bp_update_user_meta( $initiator_user_id, 'total_friend_count', (int)bp_get_user_meta( $initiator_user_id, 'total_friend_count', true ) - 1 ); + bp_update_user_meta( $friend_user_id, 'total_friend_count', (int)bp_get_user_meta( $friend_user_id, 'total_friend_count', true ) - 1 ); + } +} + +function friends_remove_data( $user_id ) { + global $bp; + + do_action( 'friends_before_remove_data', $user_id ); + + BP_Friends_Friendship::delete_all_for_user($user_id); + + // Remove usermeta + bp_delete_user_meta( $user_id, 'total_friend_count' ); + + // Remove friendship requests FROM user + bp_core_delete_notifications_from_user( $user_id, $bp->friends->id, 'friendship_request' ); + + do_action( 'friends_remove_data', $user_id ); +} +add_action( 'wpmu_delete_user', 'friends_remove_data' ); +add_action( 'delete_user', 'friends_remove_data' ); +add_action( 'bp_make_spam_user', 'friends_remove_data' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-loader.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-loader.php new file mode 100644 index 0000000..83e9641 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-loader.php @@ -0,0 +1,212 @@ +<?php +/** + * BuddyPress Friends Streams Loader + * + * The friends component is for users to create relationships with each other + * + * @package BuddyPress + * @subpackage Friends Core + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +class BP_Friends_Component extends BP_Component { + + /** + * Start the friends component creation process + * + * @since 1.5 + */ + function __construct() { + parent::start( + 'friends', + __( 'Friend Connections', 'buddypress' ), + BP_PLUGIN_DIR + ); + } + + /** + * Include files + */ + function includes() { + // Files to include + $includes = array( + 'actions', + 'screens', + 'filters', + 'classes', + 'activity', + 'template', + 'functions', + 'notifications', + ); + + parent::includes( $includes ); + } + + /** + * Setup globals + * + * The BP_FRIENDS_SLUG constant is deprecated, and only used here for + * backwards compatibility. + * + * @since 1.5 + * @global obj $bp + */ + function setup_globals() { + global $bp; + + define ( 'BP_FRIENDS_DB_VERSION', '1800' ); + + // Define a slug, if necessary + if ( !defined( 'BP_FRIENDS_SLUG' ) ) + define( 'BP_FRIENDS_SLUG', $this->id ); + + // Global tables for the friends component + $global_tables = array( + 'table_name' => $bp->table_prefix . 'bp_friends', + 'table_name_meta' => $bp->table_prefix . 'bp_friends_meta', + ); + + // All globals for the friends component. + // Note that global_tables is included in this array. + $globals = array( + 'path' => BP_PLUGIN_DIR, + 'slug' => BP_FRIENDS_SLUG, + 'has_directory' => false, + 'search_string' => __( 'Search Friends...', 'buddypress' ), + 'notification_callback' => 'friends_format_notifications', + 'global_tables' => $global_tables + ); + + parent::setup_globals( $globals ); + } + + /** + * Setup BuddyBar navigation + * + * @global obj $bp + */ + function setup_nav() { + global $bp; + + // Add 'Friends' to the main navigation + $main_nav = array( + 'name' => sprintf( __( 'Friends <span>%d</span>', 'buddypress' ), friends_get_total_friend_count() ), + 'slug' => $this->slug, + 'position' => 60, + 'screen_function' => 'friends_screen_my_friends', + 'default_subnav_slug' => 'my-friends', + 'item_css_id' => $bp->friends->id + ); + + $friends_link = trailingslashit( $bp->loggedin_user->domain . bp_get_friends_slug() ); + + // Add the subnav items to the friends nav item + $sub_nav[] = array( + 'name' => __( 'Friendships', 'buddypress' ), + 'slug' => 'my-friends', + 'parent_url' => $friends_link, + 'parent_slug' => bp_get_friends_slug(), + 'screen_function' => 'friends_screen_my_friends', + 'position' => 10, + 'item_css_id' => 'friends-my-friends' + ); + + $sub_nav[] = array( + 'name' => __( 'Requests', 'buddypress' ), + 'slug' => 'requests', + 'parent_url' => $friends_link, + 'parent_slug' => bp_get_friends_slug(), + 'screen_function' => 'friends_screen_requests', + 'position' => 20, + 'user_has_access' => bp_is_my_profile() + ); + + parent::setup_nav( $main_nav, $sub_nav ); + } + + /** + * Set up the admin bar + * + * @global obj $bp + */ + function setup_admin_bar() { + global $bp; + + // Prevent debug notices + $wp_admin_nav = array(); + + // Menus for logged in user + if ( is_user_logged_in() ) { + + // Setup the logged in user variables + $user_domain = $bp->loggedin_user->domain; + $friends_link = trailingslashit( $user_domain . $this->slug ); + + // Pending friend requests + if ( $count = count( friends_get_friendship_request_user_ids( $bp->loggedin_user->id ) ) ) { + $title = sprintf( __( 'Friends <span class="count">%s</span>', 'buddypress' ), $count ); + $pending = sprintf( __( 'Pending Requests <span class="count">%s</span>', 'buddypress' ), $count ); + } else { + $title = __( 'Friends', 'buddypress' ); + $pending = __( 'No Pending Requests', 'buddypress' ); + } + + // Add the "My Account" sub menus + $wp_admin_nav[] = array( + 'parent' => $bp->my_account_menu_id, + 'id' => 'my-account-' . $this->id, + 'title' => $title, + 'href' => trailingslashit( $friends_link ) + ); + + // My Groups + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-friendships', + 'title' => __( 'Friendships', 'buddypress' ), + 'href' => trailingslashit( $friends_link ) + ); + + // Requests + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-requests', + 'title' => $pending, + 'href' => trailingslashit( $friends_link . 'requests' ) + ); + } + + parent::setup_admin_bar( $wp_admin_nav ); + } + + /** + * Sets up the title for pages and <title> + * + * @global obj $bp + */ + function setup_title() { + global $bp; + + // Adjust title + if ( bp_is_friends_component() ) { + if ( bp_is_my_profile() ) { + $bp->bp_options_title = __( 'Friendships', 'buddypress' ); + } else { + $bp->bp_options_avatar = bp_core_fetch_avatar( array( + 'item_id' => $bp->displayed_user->id, + 'type' => 'thumb' + ) ); + $bp->bp_options_title = $bp->displayed_user->fullname; + } + } + + parent::setup_title(); + } +} +// Create the friends component +$bp->friends = new BP_Friends_Component(); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-notifications.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-notifications.php new file mode 100644 index 0000000..7ff7a54 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-notifications.php @@ -0,0 +1,89 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function friends_notification_new_request( $friendship_id, $initiator_id, $friend_id ) { + global $bp; + + $initiator_name = bp_core_get_user_displayname( $initiator_id ); + + if ( 'no' == bp_get_user_meta( (int)$friend_id, 'notification_friends_friendship_request', true ) ) + return false; + + $ud = get_userdata( $friend_id ); + $initiator_ud = get_userdata( $initiator_id ); + + $all_requests_link = bp_core_get_user_domain( $friend_id ) . bp_get_friends_slug() . '/requests/'; + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $friend_id ) . $settings_slug . '/notifications'; + $initiator_link = bp_core_get_user_domain( $initiator_id ); + + // Set up and send the message + $to = $ud->user_email; + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + $subject = '[' . $sitename . '] ' . sprintf( __( 'New friendship request from %s', 'buddypress' ), $initiator_name ); + + $message = sprintf( __( +'%1$s wants to add you as a friend. + +To view all of your pending friendship requests: %2$s + +To view %3$s\'s profile: %4$s + +--------------------- +', 'buddypress' ), $initiator_name, $all_requests_link, $initiator_name, $initiator_link ); + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'friends_notification_new_request_to', $to ); + $subject = apply_filters( 'friends_notification_new_request_subject', $subject, $initiator_name ); + $message = apply_filters( 'friends_notification_new_request_message', $message, $initiator_name, $initiator_link, $all_requests_link, $settings_link ); + + wp_mail( $to, $subject, $message ); + + do_action( 'bp_friends_sent_request_email', $friend_id, $subject, $message, $friendship_id, $initiator_id ); +} + +function friends_notification_accepted_request( $friendship_id, $initiator_id, $friend_id ) { + global $bp; + + $friendship = new BP_Friends_Friendship( $friendship_id, false, false ); + + $friend_name = bp_core_get_user_displayname( $friend_id ); + + if ( 'no' == bp_get_user_meta( (int)$initiator_id, 'notification_friends_friendship_accepted', true ) ) + return false; + + $ud = get_userdata( $initiator_id ); + + $friend_link = bp_core_get_user_domain( $friend_id ); + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $initiator_id ) . $settings_slug . '/notifications'; + + // Set up and send the message + $to = $ud->user_email; + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + $subject = '[' . $sitename . '] ' . sprintf( __( '%s accepted your friendship request', 'buddypress' ), $friend_name ); + + $message = sprintf( __( +'%1$s accepted your friend request. + +To view %2$s\'s profile: %3$s + +--------------------- +', 'buddypress' ), $friend_name, $friend_name, $friend_link ); + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'friends_notification_accepted_request_to', $to ); + $subject = apply_filters( 'friends_notification_accepted_request_subject', $subject, $friend_name ); + $message = apply_filters( 'friends_notification_accepted_request_message', $message, $friend_name, $friend_link, $settings_link ); + + wp_mail( $to, $subject, $message ); + + do_action( 'bp_friends_sent_accepted_email', $initiator_id, $subject, $message, $friendship_id, $friend_id ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-screens.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-screens.php new file mode 100644 index 0000000..5afbd07 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-screens.php @@ -0,0 +1,97 @@ +<?php +/** + * Screen functions are the controllers of BuddyPress. They will execute when their + * specific URL is caught. They will first save or manipulate data using business + * functions, then pass on the user to a template file. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function friends_screen_my_friends() { + global $bp; + + // Delete any friendship acceptance notifications for the user when viewing a profile + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->friends->id, 'friendship_accepted' ); + + do_action( 'friends_screen_my_friends' ); + + bp_core_load_template( apply_filters( 'friends_template_my_friends', 'members/single/home' ) ); +} + +function friends_screen_requests() { + if ( bp_is_action_variable( 'accept', 0 ) && is_numeric( bp_action_variable( 1 ) ) ) { + // Check the nonce + check_admin_referer( 'friends_accept_friendship' ); + + if ( friends_accept_friendship( bp_action_variable( 1 ) ) ) + bp_core_add_message( __( 'Friendship accepted', 'buddypress' ) ); + else + bp_core_add_message( __( 'Friendship could not be accepted', 'buddypress' ), 'error' ); + + bp_core_redirect( bp_loggedin_user_domain() . bp_current_component() . '/' . bp_current_action() ); + + } elseif ( bp_is_action_variable( 'reject', 0 ) && is_numeric( bp_action_variable( 1 ) ) ) { + // Check the nonce + check_admin_referer( 'friends_reject_friendship' ); + + if ( friends_reject_friendship( bp_action_variable( 1 ) ) ) + bp_core_add_message( __( 'Friendship rejected', 'buddypress' ) ); + else + bp_core_add_message( __( 'Friendship could not be rejected', 'buddypress' ), 'error' ); + + bp_core_redirect( bp_loggedin_user_domain() . bp_current_component() . '/' . bp_current_action() ); + } + + do_action( 'friends_screen_requests' ); + + if ( isset( $_GET['new'] ) ) + bp_core_delete_notifications_by_type( bp_loggedin_user_id(), 'friends', 'friendship_request' ); + + bp_core_load_template( apply_filters( 'friends_template_requests', 'members/single/home' ) ); +} + +function friends_screen_notification_settings() { + global $bp; + + if ( !$send_requests = bp_get_user_meta( $bp->displayed_user->id, 'notification_friends_friendship_request', true ) ) + $send_requests = 'yes'; + + if ( !$accept_requests = bp_get_user_meta( $bp->displayed_user->id, 'notification_friends_friendship_accepted', true ) ) + $accept_requests = 'yes'; +?> + + <table class="notification-settings" id="friends-notification-settings"> + <thead> + <tr> + <th class="icon"></th> + <th class="title"><?php _e( 'Friends', 'buddypress' ) ?></th> + <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> + <th class="no"><?php _e( 'No', 'buddypress' )?></th> + </tr> + </thead> + + <tbody> + <tr id="friends-notification-settings-request"> + <td></td> + <td><?php _e( 'A member sends you a friendship request', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_friends_friendship_request]" value="yes" <?php checked( $send_requests, 'yes', true ) ?>/></td> + <td class="no"><input type="radio" name="notifications[notification_friends_friendship_request]" value="no" <?php checked( $send_requests, 'no', true ) ?>/></td> + </tr> + <tr id="friends-notification-settings-accepted"> + <td></td> + <td><?php _e( 'A member accepts your friendship request', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_friends_friendship_accepted]" value="yes" <?php checked( $accept_requests, 'yes', true ) ?>/></td> + <td class="no"><input type="radio" name="notifications[notification_friends_friendship_accepted]" value="no" <?php checked( $accept_requests, 'no', true ) ?>/></td> + </tr> + + <?php do_action( 'friends_screen_notification_settings' ); ?> + + </tbody> + </table> + +<?php +} +add_action( 'bp_notification_settings', 'friends_screen_notification_settings' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-template.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-template.php new file mode 100644 index 0000000..71833bd --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-template.php @@ -0,0 +1,449 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Output the friends component slug + * + * @package BuddyPress + * @subpackage Friends Template + * @since 1.5 + * + * @uses bp_get_friends_slug() + */ +function bp_friends_slug() { + echo bp_get_friends_slug(); +} + /** + * Return the friends component slug + * + * @package BuddyPress + * @subpackage Friends Template + * @since 1.5 + */ + function bp_get_friends_slug() { + global $bp; + return apply_filters( 'bp_get_friends_slug', $bp->friends->slug ); + } + +/** + * Output the friends component root slug + * + * @package BuddyPress + * @subpackage Friends Template + * @since 1.5 + * + * @uses bp_get_friends_root_slug() + */ +function bp_friends_root_slug() { + echo bp_get_friends_root_slug(); +} + /** + * Return the friends component root slug + * + * @package BuddyPress + * @subpackage Friends Template + * @since 1.5 + */ + function bp_get_friends_root_slug() { + global $bp; + return apply_filters( 'bp_get_friends_root_slug', $bp->friends->root_slug ); + } + +/** + * Displays Friends header tabs + * + * @package BuddyPress + * @todo Deprecate? + */ +function bp_friends_header_tabs() { + global $bp; ?> + + <li<?php if ( !bp_action_variable( 0 ) || bp_is_action_variable( 'recently-active', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . bp_get_friends_slug() ?>/my-friends/recently-active"><?php _e( 'Recently Active', 'buddypress' ) ?></a></li> + <li<?php if ( bp_is_action_variable( 'newest', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . bp_get_friends_slug() ?>/my-friends/newest"><?php _e( 'Newest', 'buddypress' ) ?></a></li> + <li<?php if ( bp_is_action_variable( 'alphabetically', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . bp_get_friends_slug() ?>/my-friends/alphabetically"><?php _e( 'Alphabetically', 'buddypress' ) ?></a></li> + +<?php + do_action( 'friends_header_tabs' ); +} + +/** + * Filters the title for the Friends component + * + * @package BuddyPress + * @todo Deprecate? + */ +function bp_friends_filter_title() { + $current_filter = bp_action_variable( 0 ); + + switch ( $current_filter ) { + case 'recently-active': default: + _e( 'Recently Active', 'buddypress' ); + break; + case 'newest': + _e( 'Newest', 'buddypress' ); + break; + case 'alphabetically': + _e( 'Alphabetically', 'buddypress' ); + break; + } +} + +function bp_friends_random_friends() { + global $bp; + + if ( !$friend_ids = wp_cache_get( 'friends_friend_ids_' . $bp->displayed_user->id, 'bp' ) ) { + $friend_ids = BP_Friends_Friendship::get_random_friends( $bp->displayed_user->id ); + wp_cache_set( 'friends_friend_ids_' . $bp->displayed_user->id, $friend_ids, 'bp' ); + } ?> + + <div class="info-group"> + <h4><?php bp_word_or_name( __( "My Friends", 'buddypress' ), __( "%s's Friends", 'buddypress' ) ) ?> (<?php echo BP_Friends_Friendship::total_friend_count( $bp->displayed_user->id ) ?>) <span><a href="<?php echo $bp->displayed_user->domain . bp_get_friends_slug() ?>"><?php _e('See All', 'buddypress') ?></a></span></h4> + + <?php if ( $friend_ids ) { ?> + + <ul class="horiz-gallery"> + + <?php for ( $i = 0, $count = count( $friend_ids ); $i < $count; ++$i ) { ?> + + <li> + <a href="<?php echo bp_core_get_user_domain( $friend_ids[$i] ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $friend_ids[$i], 'type' => 'thumb' ) ) ?></a> + <h5><?php echo bp_core_get_userlink($friend_ids[$i]) ?></h5> + </li> + + <?php } ?> + + </ul> + + <?php } else { ?> + + <div id="message" class="info"> + <p><?php bp_word_or_name( __( "You haven't added any friend connections yet.", 'buddypress' ), __( "%s hasn't created any friend connections yet.", 'buddypress' ) ) ?></p> + </div> + + <?php } ?> + <div class="clear"></div> + </div> +<?php +} + +/** + * Pull up a group of random members, and display some profile data about them + * + * This function is no longer used by BuddyPress core. + * + * @package BuddyPress + * + * @param int $total_members The number of members to retrieve + */ +function bp_friends_random_members( $total_members = 5 ) { + global $bp; + + if ( !$user_ids = wp_cache_get( 'friends_random_users', 'bp' ) ) { + $user_ids = BP_Core_User::get_users( 'random', $total_members ); + wp_cache_set( 'friends_random_users', $user_ids, 'bp' ); + } + + ?> + + <?php if ( $user_ids['users'] ) { ?> + + <ul class="item-list" id="random-members-list"> + + <?php for ( $i = 0, $count = count( $user_ids['users'] ); $i < $count; ++$i ) { ?> + + <li> + <a href="<?php echo bp_core_get_user_domain( $user_ids['users'][$i]->id ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $user_ids['users'][$i]->id, 'type' => 'thumb' ) ) ?></a> + <h5><?php echo bp_core_get_userlink( $user_ids['users'][$i]->id ) ?></h5> + + <?php if ( bp_is_active( 'xprofile' ) ) { ?> + + <?php $random_data = xprofile_get_random_profile_data( $user_ids['users'][$i]->id, true ); ?> + + <div class="profile-data"> + <p class="field-name"><?php echo $random_data[0]->name ?></p> + + <?php echo $random_data[0]->value ?> + + </div> + + <?php } ?> + + <div class="action"> + + <?php if ( bp_is_active( 'friends' ) ) { ?> + + <?php bp_add_friend_button( $user_ids['users'][$i]->id ) ?> + + <?php } ?> + + </div> + </li> + + <?php } ?> + + </ul> + + <?php } else { ?> + + <div id="message" class="info"> + <p><?php _e( "There aren't enough site members to show a random sample just yet.", 'buddypress' ) ?></p> + </div> + + <?php } ?> +<?php +} + +function bp_friend_search_form() { + global $friends_template, $bp; + + $action = $bp->displayed_user->domain . bp_get_friends_slug() . '/my-friends/search/'; + $label = __( 'Filter Friends', 'buddypress' ); ?> + + <form action="<?php echo $action ?>" id="friend-search-form" method="post"> + + <label for="friend-search-box" id="friend-search-label"><?php echo $label ?></label> + <input type="search" name="friend-search-box" id="friend-search-box" value="<?php echo $value ?>"<?php echo $disabled ?> /> + + <?php wp_nonce_field( 'friends_search', '_wpnonce_friend_search' ) ?> + + <input type="hidden" name="initiator" id="initiator" value="<?php echo esc_attr( $bp->displayed_user->id ) ?>" /> + + </form> + + <?php +} + +function bp_member_add_friend_button() { + global $members_template; + + if ( !isset( $members_template->member->is_friend ) || null === $members_template->member->is_friend ) + $friend_status = 'not_friends'; + else + $friend_status = ( 0 == $members_template->member->is_friend ) ? 'pending' : 'is_friend'; + + echo bp_get_add_friend_button( $members_template->member->id, $friend_status ); +} +add_action( 'bp_directory_members_actions', 'bp_member_add_friend_button' ); + +function bp_member_total_friend_count() { + global $members_template; + + echo bp_get_member_total_friend_count(); +} + function bp_get_member_total_friend_count() { + global $members_template; + + if ( 1 == (int) $members_template->member->total_friend_count ) + return apply_filters( 'bp_get_member_total_friend_count', sprintf( __( '%d friend', 'buddypress' ), (int) $members_template->member->total_friend_count ) ); + else + return apply_filters( 'bp_get_member_total_friend_count', sprintf( __( '%d friends', 'buddypress' ), (int) $members_template->member->total_friend_count ) ); + } + +/** + * bp_potential_friend_id( $user_id ) + * + * Outputs the ID of the potential friend + * + * @uses bp_get_potential_friend_id() + * @param <type> $user_id + */ +function bp_potential_friend_id( $user_id = 0 ) { + echo bp_get_potential_friend_id( $user_id ); +} + /** + * bp_get_potential_friend_id( $user_id ) + * + * Returns the ID of the potential friend + * + * @global object $bp + * @global object $friends_template + * @param int $user_id + * @return int ID of potential friend + */ + function bp_get_potential_friend_id( $user_id = 0 ) { + global $bp, $friends_template; + + if ( empty( $user_id ) && isset( $friends_template->friendship->friend ) ) + $user_id = $friends_template->friendship->friend->id; + else if ( empty( $user_id ) && !isset( $friends_template->friendship->friend ) ) + $user_id = $bp->displayed_user->id; + + return apply_filters( 'bp_get_potential_friend_id', (int)$user_id ); + } + +/** + * bp_is_friend( $user_id ) + * + * Returns - 'is_friend', 'not_friends', 'pending' + * + * @global object $bp + * @param int $potential_friend_id + * @return string + */ +function bp_is_friend( $user_id = 0 ) { + global $bp; + + if ( !is_user_logged_in() ) + return false; + + if ( empty( $user_id ) ) + $user_id = bp_get_potential_friend_id( $user_id ); + + if ( $bp->loggedin_user->id == $user_id ) + return false; + + return apply_filters( 'bp_is_friend', friends_check_friendship_status( $bp->loggedin_user->id, $user_id ), $user_id ); +} + +function bp_add_friend_button( $potential_friend_id = 0, $friend_status = false ) { + echo bp_get_add_friend_button( $potential_friend_id, $friend_status ); +} + function bp_get_add_friend_button( $potential_friend_id = 0, $friend_status = false ) { + global $bp, $friends_template; + + if ( empty( $potential_friend_id ) ) + $potential_friend_id = bp_get_potential_friend_id( $potential_friend_id ); + + $is_friend = bp_is_friend( $potential_friend_id ); + + if ( empty( $is_friend ) ) + return false; + + switch ( $is_friend ) { + case 'pending' : + $button = array( + 'id' => 'pending', + 'component' => 'friends', + 'must_be_logged_in' => true, + 'block_self' => true, + 'wrapper_class' => 'friendship-button pending', + 'wrapper_id' => 'friendship-button-' . $potential_friend_id, + 'link_href' => trailingslashit( $bp->loggedin_user->domain . bp_get_friends_slug() . '/requests' ), + 'link_text' => __( 'Friendship Requested', 'buddypress' ), + 'link_title' => __( 'Friendship Requested', 'buddypress' ), + 'link_class' => 'friendship-button pending requested' + ); + break; + + case 'is_friend' : + $button = array( + 'id' => 'is_friend', + 'component' => 'friends', + 'must_be_logged_in' => true, + 'block_self' => false, + 'wrapper_class' => 'friendship-button is_friend', + 'wrapper_id' => 'friendship-button-' . $potential_friend_id, + 'link_href' => wp_nonce_url( $bp->loggedin_user->domain . bp_get_friends_slug() . '/remove-friend/' . $potential_friend_id . '/', 'friends_remove_friend' ), + 'link_text' => __( 'Cancel Friendship', 'buddypress' ), + 'link_title' => __( 'Cancel Friendship', 'buddypress' ), + 'link_id' => 'friend-' . $potential_friend_id, + 'link_rel' => 'remove', + 'link_class' => 'friendship-button is_friend remove' + ); + break; + + default: + $button = array( + 'id' => 'not_friends', + 'component' => 'friends', + 'must_be_logged_in' => true, + 'block_self' => true, + 'wrapper_class' => 'friendship-button not_friends', + 'wrapper_id' => 'friendship-button-' . $potential_friend_id, + 'link_href' => wp_nonce_url( $bp->loggedin_user->domain . bp_get_friends_slug() . '/add-friend/' . $potential_friend_id . '/', 'friends_add_friend' ), + 'link_text' => __( 'Add Friend', 'buddypress' ), + 'link_title' => __( 'Add Friend', 'buddypress' ), + 'link_id' => 'friend-' . $potential_friend_id, + 'link_rel' => 'add', + 'link_class' => 'friendship-button not_friends add' + ); + break; + } + + // Filter and return the HTML button + return bp_get_button( apply_filters( 'bp_get_add_friend_button', $button ) ); + } + +function bp_get_friend_ids( $user_id = 0 ) { + global $bp; + + if ( !$user_id ) + $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + + $friend_ids = friends_get_friend_user_ids( $user_id ); + + if ( empty( $friend_ids ) ) + return false; + + return implode( ',', friends_get_friend_user_ids( $user_id ) ); +} +function bp_get_friendship_requests() { + global $bp; + + return apply_filters( 'bp_get_friendship_requests', implode( ',', (array) friends_get_friendship_request_user_ids( $bp->loggedin_user->id ) ) ); +} + +function bp_friend_friendship_id() { + echo bp_get_friend_friendship_id(); +} + function bp_get_friend_friendship_id() { + global $members_template, $bp; + + if ( !$friendship_id = wp_cache_get( 'friendship_id_' . $members_template->member->id . '_' . $bp->loggedin_user->id ) ) { + $friendship_id = friends_get_friendship_id( $members_template->member->id, $bp->loggedin_user->id ); + wp_cache_set( 'friendship_id_' . $members_template->member->id . '_' . $bp->loggedin_user->id, $friendship_id, 'bp' ); + } + + return apply_filters( 'bp_get_friend_friendship_id', $friendship_id ); + } + +function bp_friend_accept_request_link() { + echo bp_get_friend_accept_request_link(); +} + function bp_get_friend_accept_request_link() { + global $members_template, $bp; + + if ( !$friendship_id = wp_cache_get( 'friendship_id_' . $members_template->member->id . '_' . $bp->loggedin_user->id ) ) { + $friendship_id = friends_get_friendship_id( $members_template->member->id, $bp->loggedin_user->id ); + wp_cache_set( 'friendship_id_' . $members_template->member->id . '_' . $bp->loggedin_user->id, $friendship_id, 'bp' ); + } + + return apply_filters( 'bp_get_friend_accept_request_link', wp_nonce_url( $bp->loggedin_user->domain . bp_get_friends_slug() . '/requests/accept/' . $friendship_id, 'friends_accept_friendship' ) ); + } + +function bp_friend_reject_request_link() { + echo bp_get_friend_reject_request_link(); +} + function bp_get_friend_reject_request_link() { + global $members_template, $bp; + + if ( !$friendship_id = wp_cache_get( 'friendship_id_' . $members_template->member->id . '_' . $bp->loggedin_user->id ) ) { + $friendship_id = friends_get_friendship_id( $members_template->member->id, $bp->loggedin_user->id ); + wp_cache_set( 'friendship_id_' . $members_template->member->id . '_' . $bp->loggedin_user->id, $friendship_id, 'bp' ); + } + + return apply_filters( 'bp_get_friend_reject_request_link', wp_nonce_url( $bp->loggedin_user->domain . bp_get_friends_slug() . '/requests/reject/' . $friendship_id, 'friends_reject_friendship' ) ); + } + +function bp_total_friend_count( $user_id = 0 ) { + echo bp_get_total_friend_count( $user_id ); +} + function bp_get_total_friend_count( $user_id = 0 ) { + return apply_filters( 'bp_get_total_friend_count', friends_get_total_friend_count( $user_id ) ); + } + add_filter( 'bp_get_total_friend_count', 'bp_core_number_format' ); + +function bp_friend_total_requests_count( $user_id = 0 ) { + echo bp_friend_get_total_requests_count( $user_id ); +} + function bp_friend_get_total_requests_count( $user_id = 0 ) { + global $bp; + + if ( empty( $user_id ) ) + $user_id = $bp->loggedin_user->id; + + return apply_filters( 'bp_friend_get_total_requests_count', count( BP_Friends_Friendship::get_friend_user_ids( $user_id, true ) ) ); + } + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-actions.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-actions.php new file mode 100644 index 0000000..74766e2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-actions.php @@ -0,0 +1,318 @@ +<?php +/******************************************************************************** + * Action Functions + * + * Action functions are exactly the same as screen functions, however they do not + * have a template screen associated with them. Usually they will send the user + * back to the default screen after execution. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function groups_action_create_group() { + global $bp; + + // If we're not at domain.org/groups/create/ then return false + if ( !bp_is_groups_component() || !bp_is_current_action( 'create' ) ) + return false; + + if ( !is_user_logged_in() ) + return false; + + if ( !bp_user_can_create_groups() ) { + bp_core_add_message( __( 'Sorry, you are not allowed to create groups.', 'buddypress' ), 'error' ); + bp_core_redirect( trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() ) ); + } + + // Make sure creation steps are in the right order + groups_action_sort_creation_steps(); + + // If no current step is set, reset everything so we can start a fresh group creation + $bp->groups->current_create_step = bp_action_variable( 1 ); + if ( !$bp->groups->current_create_step ) { + unset( $bp->groups->current_create_step ); + unset( $bp->groups->completed_create_steps ); + + setcookie( 'bp_new_group_id', false, time() - 1000, COOKIEPATH ); + setcookie( 'bp_completed_create_steps', false, time() - 1000, COOKIEPATH ); + + $reset_steps = true; + bp_core_redirect( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create/step/' . array_shift( array_keys( $bp->groups->group_creation_steps ) ) . '/' ); + } + + // If this is a creation step that is not recognized, just redirect them back to the first screen + if ( !empty( $bp->groups->current_create_step ) && empty( $bp->groups->group_creation_steps[$bp->groups->current_create_step] ) ) { + bp_core_add_message( __('There was an error saving group details. Please try again.', 'buddypress'), 'error' ); + bp_core_redirect( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create/' ); + } + + // Fetch the currently completed steps variable + if ( isset( $_COOKIE['bp_completed_create_steps'] ) && !isset( $reset_steps ) ) + $bp->groups->completed_create_steps = unserialize( stripslashes( $_COOKIE['bp_completed_create_steps'] ) ); + + // Set the ID of the new group, if it has already been created in a previous step + if ( isset( $_COOKIE['bp_new_group_id'] ) ) { + $bp->groups->new_group_id = $_COOKIE['bp_new_group_id']; + $bp->groups->current_group = new BP_Groups_Group( $bp->groups->new_group_id ); + } + + // If the save, upload or skip button is hit, lets calculate what we need to save + if ( isset( $_POST['save'] ) ) { + + // Check the nonce + check_admin_referer( 'groups_create_save_' . $bp->groups->current_create_step ); + + if ( 'group-details' == $bp->groups->current_create_step ) { + if ( empty( $_POST['group-name'] ) || empty( $_POST['group-desc'] ) || !strlen( trim( $_POST['group-name'] ) ) || !strlen( trim( $_POST['group-desc'] ) ) ) { + bp_core_add_message( __( 'Please fill in all of the required fields', 'buddypress' ), 'error' ); + bp_core_redirect( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create/step/' . $bp->groups->current_create_step . '/' ); + } + + $new_group_id = isset( $bp->groups->new_group_id ) ? $bp->groups->new_group_id : 0; + + if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $new_group_id, 'name' => $_POST['group-name'], 'description' => $_POST['group-desc'], 'slug' => groups_check_slug( sanitize_title( esc_attr( $_POST['group-name'] ) ) ), 'date_created' => bp_core_current_time(), 'status' => 'public' ) ) ) { + bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' ); + bp_core_redirect( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create/step/' . $bp->groups->current_create_step . '/' ); + } + + groups_update_groupmeta( $bp->groups->new_group_id, 'total_member_count', 1 ); + groups_update_groupmeta( $bp->groups->new_group_id, 'last_activity', bp_core_current_time() ); + } + + if ( 'group-settings' == $bp->groups->current_create_step ) { + $group_status = 'public'; + $group_enable_forum = 1; + + if ( !isset($_POST['group-show-forum']) ) { + $group_enable_forum = 0; + } else { + // Create the forum if enable_forum = 1 + if ( bp_is_active( 'forums' ) && '' == groups_get_groupmeta( $bp->groups->new_group_id, 'forum_id' ) ) { + groups_new_group_forum(); + } + } + + if ( 'private' == $_POST['group-status'] ) + $group_status = 'private'; + else if ( 'hidden' == $_POST['group-status'] ) + $group_status = 'hidden'; + + if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $bp->groups->new_group_id, 'status' => $group_status, 'enable_forum' => $group_enable_forum ) ) ) { + bp_core_add_message( __( 'There was an error saving group details, please try again.', 'buddypress' ), 'error' ); + bp_core_redirect( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create/step/' . $bp->groups->current_create_step . '/' ); + } + + // Set the invite status + // Checked against a whitelist for security + $allowed_invite_status = apply_filters( 'groups_allowed_invite_status', array( 'members', 'mods', 'admins' ) ); + $invite_status = !empty( $_POST['group-invite-status'] ) && in_array( $_POST['group-invite-status'], (array)$allowed_invite_status ) ? $_POST['group-invite-status'] : 'members'; + + groups_update_groupmeta( $bp->groups->new_group_id, 'invite_status', $invite_status ); + } + + if ( 'group-invites' == $bp->groups->current_create_step ) + groups_send_invites( $bp->loggedin_user->id, $bp->groups->new_group_id ); + + do_action( 'groups_create_group_step_save_' . $bp->groups->current_create_step ); + do_action( 'groups_create_group_step_complete' ); // Mostly for clearing cache on a generic action name + + /** + * Once we have successfully saved the details for this step of the creation process + * we need to add the current step to the array of completed steps, then update the cookies + * holding the information + */ + $completed_create_steps = isset( $bp->groups->completed_create_steps ) ? $bp->groups->completed_create_steps : array(); + if ( !in_array( $bp->groups->current_create_step, $completed_create_steps ) ) + $bp->groups->completed_create_steps[] = $bp->groups->current_create_step; + + // Reset cookie info + setcookie( 'bp_new_group_id', $bp->groups->new_group_id, time()+60*60*24, COOKIEPATH ); + setcookie( 'bp_completed_create_steps', serialize( $bp->groups->completed_create_steps ), time()+60*60*24, COOKIEPATH ); + + // If we have completed all steps and hit done on the final step we + // can redirect to the completed group + if ( count( $bp->groups->completed_create_steps ) == count( $bp->groups->group_creation_steps ) && $bp->groups->current_create_step == array_pop( array_keys( $bp->groups->group_creation_steps ) ) ) { + unset( $bp->groups->current_create_step ); + unset( $bp->groups->completed_create_steps ); + + // Once we compelete all steps, record the group creation in the activity stream. + groups_record_activity( array( + 'action' => apply_filters( 'groups_activity_created_group_action', sprintf( __( '%1$s created the group %2$s', 'buddypress'), bp_core_get_userlink( $bp->loggedin_user->id ), '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . '">' . esc_attr( $bp->groups->current_group->name ) . '</a>' ) ), + 'type' => 'created_group', + 'item_id' => $bp->groups->new_group_id + ) ); + + do_action( 'groups_group_create_complete', $bp->groups->new_group_id ); + + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + } else { + /** + * Since we don't know what the next step is going to be (any plugin can insert steps) + * we need to loop the step array and fetch the next step that way. + */ + foreach ( (array)$bp->groups->group_creation_steps as $key => $value ) { + if ( $key == $bp->groups->current_create_step ) { + $next = 1; + continue; + } + + if ( isset( $next ) ) { + $next_step = $key; + break; + } + } + + bp_core_redirect( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create/step/' . $next_step . '/' ); + } + } + + // Group avatar is handled separately + if ( 'group-avatar' == $bp->groups->current_create_step && isset( $_POST['upload'] ) ) { + if ( !empty( $_FILES ) && isset( $_POST['upload'] ) ) { + // Normally we would check a nonce here, but the group save nonce is used instead + + // Pass the file to the avatar upload handler + if ( bp_core_avatar_handle_upload( $_FILES, 'groups_avatar_upload_dir' ) ) { + $bp->avatar_admin->step = 'crop-image'; + + // Make sure we include the jQuery jCrop file for image cropping + add_action( 'wp_print_scripts', 'bp_core_add_jquery_cropper' ); + } + } + + // If the image cropping is done, crop the image and save a full/thumb version + if ( isset( $_POST['avatar-crop-submit'] ) && isset( $_POST['upload'] ) ) { + // Normally we would check a nonce here, but the group save nonce is used instead + + if ( !bp_core_avatar_handle_crop( array( 'object' => 'group', 'avatar_dir' => 'group-avatars', 'item_id' => $bp->groups->current_group->id, 'original_file' => $_POST['image_src'], 'crop_x' => $_POST['x'], 'crop_y' => $_POST['y'], 'crop_w' => $_POST['w'], 'crop_h' => $_POST['h'] ) ) ) + bp_core_add_message( __( 'There was an error saving the group avatar, please try uploading again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'The group avatar was uploaded successfully!', 'buddypress' ) ); + } + } + + bp_core_load_template( apply_filters( 'groups_template_create_group', 'groups/create' ) ); +} +add_action( 'bp_actions', 'groups_action_create_group' ); + +function groups_action_join_group() { + global $bp; + + if ( !bp_is_single_item() || !bp_is_groups_component() || !bp_is_current_action( 'join' ) ) + return false; + + // Nonce check + if ( !check_admin_referer( 'groups_join_group' ) ) + return false; + + // Skip if banned or already a member + if ( !groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) && !groups_is_user_banned( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) { + + // User wants to join a group that is not public + if ( $bp->groups->current_group->status != 'public' ) { + if ( !groups_check_user_has_invite( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) { + bp_core_add_message( __( 'There was an error joining the group.', 'buddypress' ), 'error' ); + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + } + } + + // User wants to join any group + if ( !groups_join_group( $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error joining the group.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'You joined the group!', 'buddypress' ) ); + + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + } + + bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); +} +add_action( 'bp_actions', 'groups_action_join_group' ); + + +function groups_action_leave_group() { + global $bp; + + if ( !bp_is_single_item() || !bp_is_groups_component() || !bp_is_current_action( 'leave-group' ) ) + return false; + + // Nonce check + if ( !check_admin_referer( 'groups_leave_group' ) ) + return false; + + // User wants to leave any group + if ( groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) { + + // Stop sole admins from abandoning their group + $group_admins = groups_get_group_admins( $bp->groups->current_group->id ); + if ( 1 == count( $group_admins ) && $group_admins[0]->user_id == $bp->loggedin_user->id ) + bp_core_add_message( __( 'This group must have at least one admin', 'buddypress' ), 'error' ); + + elseif ( !groups_leave_group( $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error leaving the group.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'You successfully left the group.', 'buddypress' ) ); + + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + } + + bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); +} +add_action( 'bp_actions', 'groups_action_leave_group' ); + + +function groups_action_sort_creation_steps() { + global $bp; + + if ( !bp_is_groups_component() || !bp_is_current_action( 'create' ) ) + return false; + + if ( !is_array( $bp->groups->group_creation_steps ) ) + return false; + + foreach ( (array)$bp->groups->group_creation_steps as $slug => $step ) { + while ( !empty( $temp[$step['position']] ) ) + $step['position']++; + + $temp[$step['position']] = array( 'name' => $step['name'], 'slug' => $slug ); + } + + // Sort the steps by their position key + ksort($temp); + unset($bp->groups->group_creation_steps); + + foreach( (array)$temp as $position => $step ) + $bp->groups->group_creation_steps[$step['slug']] = array( 'name' => $step['name'], 'position' => $position ); +} + +function groups_action_redirect_to_random_group() { + global $bp, $wpdb; + + if ( bp_is_groups_component() && isset( $_GET['random-group'] ) ) { + $group = groups_get_groups( array( 'type' => 'random', 'per_page' => 1 ) ); + + bp_core_redirect( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group['groups'][0]->slug . '/' ); + } +} +add_action( 'bp_actions', 'groups_action_redirect_to_random_group' ); + +function groups_action_group_feed() { + global $bp, $wp_query; + + if ( !bp_is_active( 'activity' ) || !bp_is_groups_component() || !isset( $bp->groups->current_group ) || !bp_is_current_action( 'feed' ) ) + return false; + + $wp_query->is_404 = false; + status_header( 200 ); + + if ( 'public' != $bp->groups->current_group->status ) { + if ( !groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) + return false; + } + + include_once( BP_PLUGIN_DIR . '/bp-activity/feeds/bp-activity-group-feed.php' ); + die; +} +add_action( 'bp_actions', 'groups_action_group_feed' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-activity.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-activity.php new file mode 100644 index 0000000..a09b7f8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-activity.php @@ -0,0 +1,307 @@ +<?php +/** + * BuddyPress Groups Activity & Notification Functions + * + * These functions handle the recording, deleting and formatting of activity and + * notifications for the user and for this specific component. + * + * @package BuddyPress + * @subpackage Groups + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function groups_register_activity_actions() { + global $bp; + + if ( !bp_is_active( 'activity' ) ) + return false; + + bp_activity_set_action( $bp->groups->id, 'created_group', __( 'Created a group', 'buddypress' ) ); + bp_activity_set_action( $bp->groups->id, 'joined_group', __( 'Joined a group', 'buddypress' ) ); + bp_activity_set_action( $bp->groups->id, 'new_forum_topic', __( 'New group forum topic', 'buddypress' ) ); + bp_activity_set_action( $bp->groups->id, 'new_forum_post', __( 'New group forum post', 'buddypress' ) ); + + do_action( 'groups_register_activity_actions' ); +} +add_action( 'bp_register_activity_actions', 'groups_register_activity_actions' ); + +function groups_record_activity( $args = '' ) { + global $bp; + + if ( !bp_is_active( 'activity' ) ) + return false; + + // If the group is not public, hide the activity sitewide. + if ( isset( $bp->groups->current_group->status ) && 'public' == $bp->groups->current_group->status ) + $hide_sitewide = false; + else + $hide_sitewide = true; + + $defaults = array ( + 'id' => false, + 'user_id' => $bp->loggedin_user->id, + 'action' => '', + 'content' => '', + 'primary_link' => '', + 'component' => $bp->groups->id, + 'type' => false, + 'item_id' => false, + 'secondary_item_id' => false, + 'recorded_time' => bp_core_current_time(), + 'hide_sitewide' => $hide_sitewide + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + return bp_activity_add( array( 'id' => $id, 'user_id' => $user_id, 'action' => $action, 'content' => $content, 'primary_link' => $primary_link, 'component' => $component, 'type' => $type, 'item_id' => $item_id, 'secondary_item_id' => $secondary_item_id, 'recorded_time' => $recorded_time, 'hide_sitewide' => $hide_sitewide ) ); +} + +function groups_update_last_activity( $group_id = 0 ) { + global $bp; + + if ( !$group_id ) + $group_id = $bp->groups->current_group->id; + + if ( !$group_id ) + return false; + + groups_update_groupmeta( $group_id, 'last_activity', bp_core_current_time() ); +} +add_action( 'groups_leave_group', 'groups_update_last_activity' ); +add_action( 'groups_created_group', 'groups_update_last_activity' ); +add_action( 'groups_new_forum_topic', 'groups_update_last_activity' ); +add_action( 'groups_new_forum_topic_post', 'groups_update_last_activity' ); + +function groups_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) { + global $bp; + + switch ( $action ) { + case 'new_membership_request': + $group_id = $secondary_item_id; + $requesting_user_id = $item_id; + + $group = new BP_Groups_Group( $group_id ); + $group_link = bp_get_group_permalink( $group ); + + // Set up the string and the filter + // Because different values are passed to the filters, we'll return the + // values inline + if ( (int)$total_items > 1 ) { + $text = sprintf( __( '%1$d new membership requests for the group "%2$s"', 'buddypress' ), (int)$total_items, $group->name ); + $filter = 'bp_groups_multiple_new_membership_requests_notification'; + $notification_link = $group_link . 'admin/membership-requests/?n=1'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '" title="' . __( 'Group Membership Requests', 'buddypress' ) . '">' . $text . '</a>', $group_link, $total_items, $group->name, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $group_link, $total_items, $group->name, $text, $notification_link ); + } + } else { + $user_fullname = bp_core_get_user_displayname( $requesting_user_id ); + $text = sprintf( __( '%s requests group membership', 'buddypress' ), $user_fullname ); + $filter = 'bp_groups_single_new_membership_request_notification'; + $notification_link = $group_link . 'admin/membership-requests/?n=1'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '" title="' . sprintf( __( '%s requests group membership', 'buddypress' ), $user_fullname ) . '">' . $text . '</a>', $group_link, $user_fullname, $group->name, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $group_link, $user_fullname, $group->name, $text, $notification_link ); + } + } + + break; + + case 'membership_request_accepted': + $group_id = $item_id; + + $group = new BP_Groups_Group( $group_id ); + $group_link = bp_get_group_permalink( $group ); + + if ( (int)$total_items > 1 ) { + $text = sprintf( __( '%d accepted group membership requests', 'buddypress' ), (int)$total_items, $group->name ); + $filter = 'bp_groups_multiple_membership_request_accepted_notification'; + $notification_link = bp_loggedin_user_domain() . bp_get_groups_slug() . '/?n=1'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '" title="' . __( 'Groups', 'buddypress' ) . '">' . $text . '</a>', $total_items, $group->name, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $total_items, $group->name, $text, $notification_link ); + } + } else { + $text = sprintf( __( 'Membership for group "%s" accepted', 'buddypress' ), $group->name ); + $filter = 'bp_groups_single_membership_request_accepted_notification'; + $notification_link = $group_link . '?n=1'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $group->name, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $group_link, $group->name, $text, $notification_link ); + } + } + + break; + + case 'membership_request_rejected': + $group_id = $item_id; + + $group = new BP_Groups_Group( $group_id ); + $group_link = bp_get_group_permalink( $group ); + + if ( (int)$total_items > 1 ) { + $text = sprintf( __( '%d rejected group membership requests', 'buddypress' ), (int)$total_items, $group->name ); + $filter = 'bp_groups_multiple_membership_request_rejected_notification'; + $notification_link = bp_loggedin_user_domain() . bp_get_groups_slug() . '/?n=1'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '" title="' . __( 'Groups', 'buddypress' ) . '">' . $text . '</a>', $total_items, $group->name ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $total_items, $group->name, $text, $notification_link ); + } + } else { + $text = sprintf( __( 'Membership for group "%s" rejected', 'buddypress' ), $group->name ); + $filter = 'bp_groups_single_membership_request_rejected_notification'; + $notification_link = $group_link . '?n=1'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $group->name, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $group_link, $group->name, $text, $notification_link ); + } + } + + break; + + case 'member_promoted_to_admin': + $group_id = $item_id; + + $group = new BP_Groups_Group( $group_id ); + $group_link = bp_get_group_permalink( $group ); + + if ( (int)$total_items > 1 ) { + $text = sprintf( __( 'You were promoted to an admin in %d groups', 'buddypress' ), (int)$total_items ); + $filter = 'bp_groups_multiple_member_promoted_to_admin_notification'; + $notification_link = bp_loggedin_user_domain() . bp_get_groups_slug() . '?n=1'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '" title="' . __( 'Groups', 'buddypress' ) . '">' . $text . '</a>', $total_items, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $total_items, $text, $notification_link ); + } + } else { + $text = sprintf( __( 'You were promoted to an admin in the group "%s"', 'buddypress' ), $group->name ); + $filter = 'bp_groups_single_member_promoted_to_admin_notification'; + $notification_link = $group_link . '?n=1'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $group->name, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $group_link, $group->name, $text, $notification_link ); + } + } + + break; + + case 'member_promoted_to_mod': + $group_id = $item_id; + + $group = new BP_Groups_Group( $group_id ); + $group_link = bp_get_group_permalink( $group ); + + if ( (int)$total_items > 1 ) { + $text = sprintf( __( 'You were promoted to a mod in %d groups', 'buddypress' ), (int)$total_items ); + $filter = 'bp_groups_multiple_member_promoted_to_mod_notification'; + $notification_link = bp_loggedin_user_domain() . bp_get_groups_slug() . '?n=1'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '" title="' . __( 'Groups', 'buddypress' ) . '">' . $text . '</a>', $total_items, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $total_items, $text, $notification_link ); + } + } else { + $text = sprintf( __( 'You were promoted to a mod in the group "%s"', 'buddypress' ), $group->name ); + $filter = 'bp_groups_single_member_promoted_to_mod_notification'; + $notification_link = $group_link . '?n=1'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $group->name, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $group_link, $group->name, $text, $notification_link ); + } + } + + break; + + case 'group_invite': + $group_id = $item_id; + $group = new BP_Groups_Group( $group_id ); + $group_link = bp_get_group_permalink( $group ); + + $notification_link = bp_loggedin_user_domain() . bp_get_groups_slug() . '/invites/?n=1'; + + if ( (int)$total_items > 1 ) { + $text = sprintf( __( 'You have %d new group invitations', 'buddypress' ), (int)$total_items ); + $filter = 'bp_groups_multiple_group_invite_notification'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '" title="' . __( 'Group Invites', 'buddypress' ) . '">' . $text . '</a>', $total_items, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $total_items, $text, $notification_link ); + } + } else { + $text = sprintf( __( 'You have an invitation to the group: %s', 'buddypress' ), $group->name ); + $filter = 'bp_groups_single_group_invite_notification'; + + if ( 'string' == $format ) { + return apply_filters( $filter, '<a href="' . $notification_link . '">' . $text . '</a>', $group_link, $group->name, $text, $notification_link ); + } else { + return apply_filters( $filter, array( + 'link' => $notification_link, + 'text' => $text + ), $group_link, $group->name, $text, $notification_link ); + } + } + + break; + } + + do_action( 'groups_format_notifications', $action, $item_id, $secondary_item_id, $total_items ); + + return false; +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-adminbar.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-adminbar.php new file mode 100644 index 0000000..c77dfb9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-adminbar.php @@ -0,0 +1,150 @@ +<?php +/** + * BuddyPress Groups Admin Bar + * + * Handles the groups functions related to the WordPress Admin Bar + * + * @package BuddyPress + * @subpackage Groups + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Adjust the admin bar menus based on which WordPress version this is + * + * @since BuddyPress (1.5.2) + */ +function bp_groups_admin_bar_version_check() { + switch( bp_get_major_wp_version() ) { + case 3.2 : + add_action( 'bp_setup_admin_bar', 'bp_groups_group_admin_menu', 99 ); + break; + case 3.3 : + case 3.4 : + default : + add_action( 'admin_bar_menu', 'bp_groups_group_admin_menu', 400 ); + break; + } +} +add_action( 'admin_bar_menu', 'bp_groups_admin_bar_version_check', 4 ); + +/** + * Adds the Group Admin top-level menu to group pages + * + * @package BuddyPress + * @since 1.5 + * + * @todo Add dynamic menu items for group extensions + */ +function bp_groups_group_admin_menu() { + global $wp_admin_bar, $bp; + + // Only show if viewing a group + if ( !bp_is_group() ) + return false; + + // Only show this menu to group admins and super admins + if ( !is_super_admin() && !bp_group_is_admin() ) + return false; + + if ( 3.2 == bp_get_major_wp_version() ) { + + // Group avatar + $avatar = bp_core_fetch_avatar( array( + 'object' => 'group', + 'type' => 'thumb', + 'avatar_dir' => 'group-avatars', + 'item_id' => $bp->groups->current_group->id, + 'width' => 16, + 'height' => 16 + ) ); + + // Unique ID for the 'My Account' menu + $bp->group_admin_menu_id = ( ! empty( $avatar ) ) ? 'group-admin-with-avatar' : 'group-admin'; + + // Add the top-level Group Admin button + $wp_admin_bar->add_menu( array( + 'id' => $bp->group_admin_menu_id, + 'title' => $avatar . bp_get_current_group_name(), + 'href' => bp_get_group_permalink( $bp->groups->current_group ) + ) ); + + } elseif ( 3.3 <= bp_get_major_wp_version() ) { + + // Unique ID for the 'My Account' menu + $bp->group_admin_menu_id = 'group-admin'; + + // Add the top-level Group Admin button + $wp_admin_bar->add_menu( array( + 'id' => $bp->group_admin_menu_id, + 'title' => __( 'Edit Group', 'buddypress' ), + 'href' => bp_get_group_permalink( $bp->groups->current_group ) + ) ); + } + + // Group Admin > Edit details + $wp_admin_bar->add_menu( array( + 'parent' => $bp->group_admin_menu_id, + 'id' => 'edit-details', + 'title' => __( 'Edit Details', 'buddypress' ), + 'href' => bp_get_groups_action_link( 'admin/edit-details' ) + ) ); + + // Group Admin > Group settings + $wp_admin_bar->add_menu( array( + 'parent' => $bp->group_admin_menu_id, + 'id' => 'group-settings', + 'title' => __( 'Edit Settings', 'buddypress' ), + 'href' => bp_get_groups_action_link( 'admin/group-settings' ) + ) ); + + // Group Admin > Group avatar + if ( !(int)bp_get_option( 'bp-disable-avatar-uploads' ) ) { + $wp_admin_bar->add_menu( array( + 'parent' => $bp->group_admin_menu_id, + 'id' => 'group-avatar', + 'title' => __( 'Edit Avatar', 'buddypress' ), + 'href' => bp_get_groups_action_link( 'admin/group-avatar' ) + ) ); + } + + // Group Admin > Manage invitations + if ( bp_is_active( 'friends' ) ) { + $wp_admin_bar->add_menu( array( + 'parent' => $bp->group_admin_menu_id, + 'id' => 'manage-invitations', + 'title' => __( 'Manage Invitations', 'buddypress' ), + 'href' => bp_get_groups_action_link( 'send-invites' ) + ) ); + } + + // Group Admin > Manage members + $wp_admin_bar->add_menu( array( + 'parent' => $bp->group_admin_menu_id, + 'id' => 'manage-members', + 'title' => __( 'Manage Members', 'buddypress' ), + 'href' => bp_get_groups_action_link( 'admin/manage-members' ) + ) ); + + // Group Admin > Membership Requests + if ( bp_get_group_status( $bp->groups->current_group ) == 'private' ) { + $wp_admin_bar->add_menu( array( + 'parent' => $bp->group_admin_menu_id, + 'id' => 'membership-requests', + 'title' => __( 'Membership Requests', 'buddypress' ), + 'href' => bp_get_groups_action_link( 'admin/membership-requests' ) + ) ); + } + + // Delete Group + $wp_admin_bar->add_menu( array( + 'parent' => $bp->group_admin_menu_id, + 'id' => 'delete-group', + 'title' => __( 'Delete Group', 'buddypress' ), + 'href' => bp_get_groups_action_link( 'admin/delete-group' ) + ) ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-buddybar.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-buddybar.php new file mode 100644 index 0000000..da4a61c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-buddybar.php @@ -0,0 +1,54 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function bp_groups_adminbar_admin_menu() { + global $bp, $groups_template; + + if ( empty( $bp->groups->current_group ) ) + return false; + + // Don't show this menu to non site admins or if you're viewing your own profile + if ( !current_user_can( 'edit_users' ) || !is_super_admin() || ( !$bp->is_item_admin && !$bp->is_item_mod ) ) + return false; ?> + + <li id="bp-adminbar-adminoptions-menu"> + <a href="<?php bp_groups_action_link( 'admin' ); ?>"><?php _e( 'Admin Options', 'buddypress' ); ?></a> + + <ul> + <li><a href="<?php bp_groups_action_link( 'admin/edit-details' ); ?>"><?php _e( 'Edit Details', 'buddypress' ); ?></a></li> + + <li><a href="<?php bp_groups_action_link( 'admin/group-settings' ); ?>"><?php _e( 'Group Settings', 'buddypress' ); ?></a></li> + + <?php if ( !(int)bp_get_option( 'bp-disable-avatar-uploads' ) ) : ?> + + <li><a href="<?php bp_groups_action_link( 'admin/group-avatar' ); ?>"><?php _e( 'Group Avatar', 'buddypress' ); ?></a></li> + + <?php endif; ?> + + <?php if ( bp_is_active( 'friends' ) ) : ?> + + <li><a href="<?php bp_groups_action_link( 'send-invites' ); ?>"><?php _e( 'Manage Invitations', 'buddypress' ); ?></a></li> + + <?php endif; ?> + + <li><a href="<?php bp_groups_action_link( 'admin/manage-members' ); ?>"><?php _e( 'Manage Members', 'buddypress' ); ?></a></li> + + <?php if ( $bp->groups->current_group->status == 'private' ) : ?> + + <li><a href="<?php bp_groups_action_link( 'admin/membership-requests' ); ?>"><?php _e( 'Membership Requests', 'buddypress' ); ?></a></li> + + <?php endif; ?> + + <li><a class="confirm" href="<?php echo wp_nonce_url( bp_get_group_permalink( $bp->groups->current_group ) . 'admin/delete-group/', 'groups_delete_group' ); ?>&delete-group-button=1&delete-group-understand=1"><?php _e( "Delete Group", 'buddypress' ) ?></a></li> + + <?php do_action( 'bp_groups_adminbar_admin_menu' ) ?> + + </ul> + </li> + + <?php +} +add_action( 'bp_adminbar_menus', 'bp_groups_adminbar_admin_menu', 20 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-cache.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-cache.php new file mode 100644 index 0000000..908df53 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-cache.php @@ -0,0 +1,52 @@ +<?php +/** + * BuddyPress Groups Caching + * + * Caching functions handle the clearing of cached objects and pages on specific + * actions throughout BuddyPress. + * + * @package BuddyPress + * @subpackage Groups + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function groups_clear_group_object_cache( $group_id ) { + wp_cache_delete( 'bp_total_group_count', 'bp' ); +} +add_action( 'groups_group_deleted', 'groups_clear_group_object_cache' ); +add_action( 'groups_settings_updated', 'groups_clear_group_object_cache' ); +add_action( 'groups_details_updated', 'groups_clear_group_object_cache' ); +add_action( 'groups_group_avatar_updated', 'groups_clear_group_object_cache' ); +add_action( 'groups_create_group_step_complete', 'groups_clear_group_object_cache' ); + +function groups_clear_group_user_object_cache( $group_id, $user_id ) { + wp_cache_delete( 'bp_total_groups_for_user_' . $user_id ); +} +add_action( 'groups_join_group', 'groups_clear_group_user_object_cache', 10, 2 ); +add_action( 'groups_leave_group', 'groups_clear_group_user_object_cache', 10, 2 ); +add_action( 'groups_ban_member', 'groups_clear_group_user_object_cache', 10, 2 ); +add_action( 'groups_unban_member', 'groups_clear_group_user_object_cache', 10, 2 ); + +/* List actions to clear super cached pages on, if super cache is installed */ +add_action( 'groups_join_group', 'bp_core_clear_cache' ); +add_action( 'groups_leave_group', 'bp_core_clear_cache' ); +add_action( 'groups_accept_invite', 'bp_core_clear_cache' ); +add_action( 'groups_reject_invite', 'bp_core_clear_cache' ); +add_action( 'groups_invite_user', 'bp_core_clear_cache' ); +add_action( 'groups_uninvite_user', 'bp_core_clear_cache' ); +add_action( 'groups_details_updated', 'bp_core_clear_cache' ); +add_action( 'groups_settings_updated', 'bp_core_clear_cache' ); +add_action( 'groups_unban_member', 'bp_core_clear_cache' ); +add_action( 'groups_ban_member', 'bp_core_clear_cache' ); +add_action( 'groups_demote_member', 'bp_core_clear_cache' ); +add_action( 'groups_premote_member', 'bp_core_clear_cache' ); +add_action( 'groups_membership_rejected', 'bp_core_clear_cache' ); +add_action( 'groups_membership_accepted', 'bp_core_clear_cache' ); +add_action( 'groups_membership_requested', 'bp_core_clear_cache' ); +add_action( 'groups_create_group_step_complete', 'bp_core_clear_cache' ); +add_action( 'groups_created_group', 'bp_core_clear_cache' ); +add_action( 'groups_group_avatar_updated', 'bp_core_clear_cache' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-classes.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-classes.php new file mode 100644 index 0000000..f446702 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-classes.php @@ -0,0 +1,1292 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +Class BP_Groups_Group { + var $id; + var $creator_id; + var $name; + var $slug; + var $description; + var $status; + var $enable_forum; + var $date_created; + + var $admins; + var $mods; + var $total_member_count; + + function bp_groups_group( $id = null ) { + $this->__construct($id); + } + + function __construct( $id = null ) { + if ( $id ) { + $this->id = $id; + $this->populate(); + } + } + + function populate() { + global $wpdb, $bp; + + if ( $group = $wpdb->get_row( $wpdb->prepare( "SELECT g.*, gm.meta_value as last_activity, gm2.meta_value as total_member_count FROM {$bp->groups->table_name} g, {$bp->groups->table_name_groupmeta} gm, {$bp->groups->table_name_groupmeta} gm2 WHERE g.id = gm.group_id AND g.id = gm2.group_id AND gm.meta_key = 'last_activity' AND gm2.meta_key = 'total_member_count' AND g.id = %d", $this->id ) ) ) { + $this->id = $group->id; + $this->creator_id = $group->creator_id; + $this->name = stripslashes($group->name); + $this->slug = $group->slug; + $this->description = stripslashes($group->description); + $this->status = $group->status; + $this->enable_forum = $group->enable_forum; + $this->date_created = $group->date_created; + $this->last_activity = $group->last_activity; + $this->total_member_count = $group->total_member_count; + $this->is_member = BP_Groups_Member::check_is_member( $bp->loggedin_user->id, $this->id ); + + // Get group admins and mods + $admin_mods = $wpdb->get_results( apply_filters( 'bp_group_admin_mods_user_join_filter', $wpdb->prepare( "SELECT u.ID as user_id, u.user_login, u.user_email, u.user_nicename, m.is_admin, m.is_mod FROM {$wpdb->users} u, {$bp->groups->table_name_members} m WHERE u.ID = m.user_id AND m.group_id = %d AND ( m.is_admin = 1 OR m.is_mod = 1 )", $this->id ) ) ); + foreach( (array)$admin_mods as $user ) { + if ( (int)$user->is_admin ) + $this->admins[] = $user; + else + $this->mods[] = $user; + } + } + } + + function save() { + global $wpdb, $bp; + + $this->creator_id = apply_filters( 'groups_group_creator_id_before_save', $this->creator_id, $this->id ); + $this->name = apply_filters( 'groups_group_name_before_save', $this->name, $this->id ); + $this->slug = apply_filters( 'groups_group_slug_before_save', $this->slug, $this->id ); + $this->description = apply_filters( 'groups_group_description_before_save', $this->description, $this->id ); + $this->status = apply_filters( 'groups_group_status_before_save', $this->status, $this->id ); + $this->enable_forum = apply_filters( 'groups_group_enable_forum_before_save', $this->enable_forum, $this->id ); + $this->date_created = apply_filters( 'groups_group_date_created_before_save', $this->date_created, $this->id ); + + do_action_ref_array( 'groups_group_before_save', array( &$this ) ); + + if ( !empty( $this->id ) ) { + $sql = $wpdb->prepare( + "UPDATE {$bp->groups->table_name} SET + creator_id = %d, + name = %s, + slug = %s, + description = %s, + status = %s, + enable_forum = %d, + date_created = %s + WHERE + id = %d + ", + $this->creator_id, + $this->name, + $this->slug, + $this->description, + $this->status, + $this->enable_forum, + $this->date_created, + $this->id + ); + } else { + $sql = $wpdb->prepare( + "INSERT INTO {$bp->groups->table_name} ( + creator_id, + name, + slug, + description, + status, + enable_forum, + date_created + ) VALUES ( + %d, %s, %s, %s, %s, %d, %s + )", + $this->creator_id, + $this->name, + $this->slug, + $this->description, + $this->status, + $this->enable_forum, + $this->date_created + ); + } + + if ( false === $wpdb->query($sql) ) + return false; + + if ( empty( $this->id ) ) + $this->id = $wpdb->insert_id; + + do_action_ref_array( 'groups_group_after_save', array( &$this ) ); + + return true; + } + + function delete() { + global $wpdb, $bp; + + // Delete groupmeta for the group + groups_delete_groupmeta( $this->id ); + + // Fetch the user IDs of all the members of the group + $user_ids = BP_Groups_Member::get_group_member_ids( $this->id ); + $user_ids = implode( ',', (array)$user_ids ); + + // Modify group count usermeta for members + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->usermeta} SET meta_value = meta_value - 1 WHERE meta_key = 'total_group_count' AND user_id IN ( {$user_ids} )" ) ); + + // Now delete all group member entries + BP_Groups_Member::delete_all( $this->id ); + + do_action_ref_array( 'bp_groups_delete_group', array( &$this ) ); + + // Finally remove the group entry from the DB + if ( !$wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name} WHERE id = %d", $this->id ) ) ) + return false; + + return true; + } + + /* Static Functions */ + + function group_exists( $slug, $table_name = false ) { + global $wpdb, $bp; + + if ( !$table_name ) + $table_name = $bp->groups->table_name; + + if ( !$slug ) + return false; + + return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$table_name} WHERE slug = %s", $slug ) ); + } + + function get_id_from_slug( $slug ) { + return BP_Groups_Group::group_exists( $slug ); + } + + function get_invites( $user_id, $group_id ) { + global $wpdb, $bp; + return $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$bp->groups->table_name_members} WHERE group_id = %d and is_confirmed = 0 AND inviter_id = %d", $group_id, $user_id ) ); + } + + function filter_user_groups( $filter, $user_id = 0, $order = false, $limit = null, $page = null ) { + global $wpdb, $bp; + + if ( !$user_id ) + $user_id = $bp->displayed_user->id; + + $filter = like_escape( $wpdb->escape( $filter ) ); + + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + // Get all the group ids for the current user's groups. + $gids = BP_Groups_Member::get_group_ids( $user_id ); + + if ( !$gids['groups'] ) + return false; + + $gids = implode( ',', $gids['groups'] ); + + $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT id as group_id FROM {$bp->groups->table_name} WHERE ( name LIKE '{$filter}%%' OR description LIKE '{$filter}%%' ) AND id IN ({$gids}) {$pag_sql}" ) ); + $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name} WHERE ( name LIKE '{$filter}%%' OR description LIKE '{$filter}%%' ) AND id IN ({$gids})" ) ); + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function search_groups( $filter, $limit = null, $page = null, $sort_by = false, $order = false ) { + global $wpdb, $bp; + + $filter = like_escape( $wpdb->escape( $filter ) ); + + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + if ( $sort_by && $order ) { + $sort_by = $wpdb->escape( $sort_by ); + $order = $wpdb->escape( $order ); + $order_sql = "ORDER BY $sort_by $order"; + } + + if ( !is_super_admin() ) + $hidden_sql = "AND status != 'hidden'"; + + $paged_groups = $wpdb->get_results( "SELECT id as group_id FROM {$bp->groups->table_name} WHERE ( name LIKE '%%$filter%%' OR description LIKE '%%$filter%%' ) {$hidden_sql} {$order_sql} {$pag_sql}" ); + $total_groups = $wpdb->get_var( "SELECT COUNT(id) FROM {$bp->groups->table_name} WHERE ( name LIKE '%%$filter%%' OR description LIKE '%%$filter%%' ) {$hidden_sq}" ); + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function check_slug( $slug ) { + global $wpdb, $bp; + + return $wpdb->get_var( $wpdb->prepare( "SELECT slug FROM {$bp->groups->table_name} WHERE slug = %s", $slug ) ); + } + + function get_slug( $group_id ) { + global $wpdb, $bp; + + return $wpdb->get_var( $wpdb->prepare( "SELECT slug FROM {$bp->groups->table_name} WHERE id = %d", $group_id ) ); + } + + function has_members( $group_id ) { + global $wpdb, $bp; + + $members = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d", $group_id ) ); + + if ( !$members ) + return false; + + return true; + } + + function has_membership_requests( $group_id ) { + global $wpdb, $bp; + + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0", $group_id ) ); + } + + function get_membership_requests( $group_id, $limit = null, $page = null ) { + global $wpdb, $bp; + + if ( $limit && $page ) { + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + } + + $paged_requests = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0 AND inviter_id = 0{$pag_sql}", $group_id ) ); + $total_requests = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0 AND inviter_id = 0", $group_id ) ); + + return array( 'requests' => $paged_requests, 'total' => $total_requests ); + } + + function get( $type = 'newest', $per_page = null, $page = null, $user_id = 0, $search_terms = false, $include = false, $populate_extras = true, $exclude = false, $show_hidden = false ) { + global $wpdb, $bp; + + $sql = array(); + + $sql['select'] = "SELECT g.*, gm1.meta_value AS total_member_count, gm2.meta_value AS last_activity"; + $sql['from'] = " FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2,"; + + if ( !empty( $user_id ) ) + $sql['members_from'] = " {$bp->groups->table_name_members} m,"; + + $sql['group_from'] = " {$bp->groups->table_name} g WHERE"; + + if ( !empty( $user_id ) ) + $sql['user_where'] = " g.id = m.group_id AND"; + + $sql['where'] = " g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'"; + + if ( empty( $show_hidden ) ) + $sql['hidden'] = " AND g.status != 'hidden'"; + + if ( !empty( $search_terms ) ) { + $search_terms = like_escape( $wpdb->escape( $search_terms ) ); + $sql['search'] = " AND ( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )"; + } + + if ( !empty( $user_id ) ) + $sql['user'] = $wpdb->prepare( " AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ); + + if ( !empty( $include ) ) { + if ( is_array( $include ) ) + $include = implode( ',', $include ); + + $include = $wpdb->escape( $include ); + $sql['include'] = " AND g.id IN ({$include})"; + } + + if ( !empty( $exclude ) ) { + if ( is_array( $exclude ) ) + $exclude = implode( ',', $exclude ); + + $exclude = $wpdb->escape( $exclude ); + $sql['exclude'] = " AND g.id NOT IN ({$exclude})"; + } + + switch ( $type ) { + case 'newest': default: + $sql['order'] = " ORDER BY g.date_created DESC"; + break; + case 'active': + $sql[] = "ORDER BY last_activity DESC"; + break; + case 'popular': + $sql[] = "ORDER BY CONVERT(gm1.meta_value, SIGNED) DESC"; + break; + case 'alphabetical': + $sql[] = "ORDER BY g.name ASC"; + break; + case 'random': + $sql[] = "ORDER BY rand()"; + break; + } + + if ( $per_page && $page ) + $sql['pagination'] = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $per_page), intval( $per_page ) ); + + /* Get paginated results */ + $paged_groups_sql = apply_filters( 'bp_groups_get_paged_groups_sql', join( ' ', (array)$sql ), $sql ); + $paged_groups = $wpdb->get_results( $paged_groups_sql ); + + $total_sql['select'] = "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name} g, {$bp->groups->table_name_members} gm1, {$bp->groups->table_name_groupmeta} gm2"; + + if ( !empty( $user_id ) ) + $total_sql['select'] .= ", {$bp->groups->table_name_members} m"; + + if ( !empty( $sql['hidden'] ) ) + $total_sql['where'][] = "g.status != 'hidden'"; + + if ( !empty( $sql['search'] ) ) + $total_sql['where'][] = "( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )"; + + if ( !empty( $user_id ) ) + $total_sql['where'][] = "m.group_id = g.id AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0"; + + if ( !empty( $exclude ) ) { + $exclude = $wpdb->escape( $exclude ); + $total_sql['where'][] = " g.id NOT IN ({$exclude})"; + } + + $total_sql['where'][] = "g.id = gm1.group_id"; + $total_sql['where'][] = "g.id = gm2.group_id"; + $total_sql['where'][] = "gm2.meta_key = 'last_activity'"; + + $t_sql = $total_sql['select']; + + if ( !empty( $total_sql['where'] ) ) + $t_sql .= " WHERE " . join( ' AND ', (array)$total_sql['where'] ); + + /* Get total group results */ + $total_groups_sql = apply_filters( 'bp_groups_get_total_groups_sql', join( ' ', (array)$t_sql ), $t_sql ); + $total_groups = $wpdb->get_var( $total_groups_sql ); + + /* Populate some extra information instead of querying each time in the loop */ + if ( !empty( $populate_extras ) ) { + $group_ids = array(); + foreach ( (array)$paged_groups as $group ) $group_ids[] = $group->id; + $group_ids = $wpdb->escape( join( ',', (array)$group_ids ) ); + $paged_groups = BP_Groups_Group::get_group_extras( $paged_groups, $group_ids, $type ); + } + + unset( $sql, $total_sql ); + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function get_by_most_forum_topics( $limit = null, $page = null, $user_id = 0, $search_terms = false, $populate_extras = true, $exclude = false ) { + global $wpdb, $bp, $bbdb; + + if ( !$bbdb ) + do_action( 'bbpress_init' ); + + if ( $limit && $page ) { + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + } + + if ( !is_user_logged_in() || ( !is_super_admin() && ( $user_id != $bp->loggedin_user->id ) ) ) + $hidden_sql = " AND g.status != 'hidden'"; + + if ( !empty( $search_terms ) ) { + $search_terms = like_escape( $wpdb->escape( $search_terms ) ); + $search_sql = " AND ( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )"; + } + + if ( !empty( $exclude ) ) { + $exclude = $wpdb->escape( $exclude ); + $exclude_sql = " AND g.id NOT IN ({$exclude})"; + } + + if ( $user_id ) { + $user_id = $wpdb->escape( $user_id ); + $paged_groups = $wpdb->get_results( "SELECT DISTINCT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bp->groups->table_name_members} m, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.topics > 0 {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 {$exclude_sql} ORDER BY f.topics DESC {$pag_sql}" ); + $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.topics > 0 {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 {$exclude_sql}" ); + } else { + $paged_groups = $wpdb->get_results( "SELECT DISTINCT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.topics > 0 {$hidden_sql} {$search_sql} {$exclude_sql} ORDER BY f.topics DESC {$pag_sql}" ); + $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.topics > 0 {$hidden_sql} {$search_sql} {$exclude_sql}" ); + } + + if ( !empty( $populate_extras ) ) { + foreach ( (array)$paged_groups as $group ) $group_ids[] = $group->id; + $group_ids = $wpdb->escape( join( ',', (array)$group_ids ) ); + $paged_groups = BP_Groups_Group::get_group_extras( $paged_groups, $group_ids, 'newest' ); + } + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function get_by_most_forum_posts( $limit = null, $page = null, $search_terms = false, $populate_extras = true, $exclude = false ) { + global $wpdb, $bp, $bbdb; + + if ( !$bbdb ) + do_action( 'bbpress_init' ); + + if ( $limit && $page ) { + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + } + + if ( !is_user_logged_in() || ( !is_super_admin() && ( $user_id != $bp->loggedin_user->id ) ) ) + $hidden_sql = " AND g.status != 'hidden'"; + + if ( $search_terms ) { + $search_terms = like_escape( $wpdb->escape( $search_terms ) ); + $search_sql = " AND ( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )"; + } + + if ( !empty( $exclude ) ) { + $exclude = $wpdb->escape( $exclude ); + $exclude_sql = " AND g.id NOT IN ({$exclude})"; + } + + if ( $user_id ) { + $user_id = $wpdb->escape( $user_id ); + $paged_groups = $wpdb->get_results( "SELECT DISTINCT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bp->groups->table_name_members} m, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 {$exclude_sql} ORDER BY f.posts ASC {$pag_sql}" ); + $total_groups = $wpdb->get_results( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bp->groups->table_name_members} m, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.posts > 0 {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 {$exclude_sql} " ); + } else { + $paged_groups = $wpdb->get_results( "SELECT DISTINCT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.posts > 0 {$hidden_sql} {$search_sql} {$exclude_sql} ORDER BY f.posts ASC {$pag_sql}" ); + $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) {$hidden_sql} {$search_sql} {$exclude_sql}" ); + } + + if ( !empty( $populate_extras ) ) { + foreach ( (array)$paged_groups as $group ) $group_ids[] = $group->id; + $group_ids = $wpdb->escape( join( ',', (array)$group_ids ) ); + $paged_groups = BP_Groups_Group::get_group_extras( $paged_groups, $group_ids, 'newest' ); + } + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function get_by_letter( $letter, $limit = null, $page = null, $populate_extras = true, $exclude = false ) { + global $wpdb, $bp; + + // Multibyte compliance + if ( function_exists( 'mb_strlen' ) ) { + if ( mb_strlen( $letter, 'UTF-8' ) > 1 || is_numeric( $letter ) || !$letter ) { + return false; + } + } else { + if ( strlen( $letter ) > 1 || is_numeric( $letter ) || !$letter ) { + return false; + } + } + + if ( !empty( $exclude ) ) { + $exclude = $wpdb->escape( $exclude ); + $exclude_sql = " AND g.id NOT IN ({$exclude})"; + } + + if ( !is_super_admin() ) + $hidden_sql = $wpdb->prepare( " AND status != 'hidden'"); + + $letter = like_escape( $wpdb->escape( $letter ) ); + + if ( $limit && $page ) { + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND g.name LIKE '$letter%%' {$hidden_sql} {$search_sql} {$exclude_sql}" ) ); + } + + $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND g.name LIKE '$letter%%' {$hidden_sql} {$search_sql} {$exclude_sql} ORDER BY g.name ASC {$pag_sql}" ) ); + + if ( !empty( $populate_extras ) ) { + foreach ( (array)$paged_groups as $group ) $group_ids[] = $group->id; + $group_ids = $wpdb->escape( join( ',', (array)$group_ids ) ); + $paged_groups = BP_Groups_Group::get_group_extras( $paged_groups, $group_ids, 'newest' ); + } + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function get_random( $limit = null, $page = null, $user_id = 0, $search_terms = false, $populate_extras = true, $exclude = false ) { + global $wpdb, $bp; + + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + if ( !is_user_logged_in() || ( !is_super_admin() && ( $user_id != $bp->loggedin_user->id ) ) ) + $hidden_sql = "AND g.status != 'hidden'"; + + if ( $search_terms ) { + $search_terms = like_escape( $wpdb->escape( $search_terms ) ); + $search_sql = " AND ( g.name LIKE '%%{$search_terms}%%' OR g.description LIKE '%%{$search_terms}%%' )"; + } + + if ( !empty( $exclude ) ) { + $exclude = $wpdb->escape( $exclude ); + $exclude_sql = " AND g.id NOT IN ({$exclude})"; + } + + if ( $user_id ) { + $user_id = $wpdb->escape( $user_id ); + $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 {$exclude_sql} ORDER BY rand() {$pag_sql}" ); + $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m LEFT JOIN {$bp->groups->table_name_groupmeta} gm ON m.group_id = gm.group_id INNER JOIN {$bp->groups->table_name} g ON m.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 {$exclude_sql}" ); + } else { + $paged_groups = $wpdb->get_results( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' {$hidden_sql} {$search_sql} {$exclude_sql} ORDER BY rand() {$pag_sql}" ); + $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm INNER JOIN {$bp->groups->table_name} g ON gm.group_id = g.id WHERE gm.meta_key = 'last_activity'{$hidden_sql} {$search_sql} {$exclude_sql}" ); + } + + if ( !empty( $populate_extras ) ) { + foreach ( (array)$paged_groups as $group ) $group_ids[] = $group->id; + $group_ids = $wpdb->escape( join( ',', (array)$group_ids ) ); + $paged_groups = BP_Groups_Group::get_group_extras( $paged_groups, $group_ids, 'newest' ); + } + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function get_group_extras( &$paged_groups, &$group_ids, $type = false ) { + global $bp, $wpdb; + + if ( empty( $group_ids ) ) + return $paged_groups; + + /* Fetch the logged in users status within each group */ + $user_status = $wpdb->get_col( $wpdb->prepare( "SELECT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id IN ( {$group_ids} ) AND is_confirmed = 1 AND is_banned = 0", $bp->loggedin_user->id ) ); + for ( $i = 0, $count = count( $paged_groups ); $i < $count; ++$i ) { + $paged_groups[$i]->is_member = false; + + foreach ( (array)$user_status as $group_id ) { + if ( $group_id == $paged_groups[$i]->id ) + $paged_groups[$i]->is_member = true; + } + } + + $user_banned = $wpdb->get_col( $wpdb->prepare( "SELECT group_id FROM {$bp->groups->table_name_members} WHERE is_banned = 1 AND user_id = %d AND group_id IN ( {$group_ids} )", $bp->loggedin_user->id ) ); + for ( $i = 0, $count = count( $paged_groups ); $i < $count; ++$i ) { + $paged_groups[$i]->is_banned = false; + + foreach ( (array)$user_banned as $group_id ) { + if ( $group_id == $paged_groups[$i]->id ) + $paged_groups[$i]->is_banned = true; + } + } + + return $paged_groups; + } + + function delete_all_invites( $group_id ) { + global $wpdb, $bp; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE group_id = %d AND invite_sent = 1", $group_id ) ); + } + + function get_total_group_count() { + global $wpdb, $bp; + + $hidden_sql = ''; + if ( !is_super_admin() ) + $hidden_sql = "WHERE status != 'hidden'"; + + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name} {$hidden_sql}" ) ); + } + + function get_global_forum_topic_count( $type ) { + global $bbdb, $wpdb, $bp; + + if ( 'unreplied' == $type ) + $bp->groups->filter_sql = ' AND t.topic_posts = 1'; + + $extra_sql = apply_filters( 'groups_total_public_forum_topic_count', $bp->groups->filter_sql, $type ); + + return $wpdb->get_var( "SELECT COUNT(t.topic_id) FROM {$bbdb->topics} AS t, {$bp->groups->table_name} AS g LEFT JOIN {$bp->groups->table_name_groupmeta} AS gm ON g.id = gm.group_id WHERE (gm.meta_key = 'forum_id' AND gm.meta_value = t.forum_id) AND g.status = 'public' AND t.topic_status = '0' AND t.topic_sticky != '2' {$extra_sql} " ); + } + + function get_total_member_count( $group_id ) { + global $wpdb, $bp; + + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 1 AND is_banned = 0", $group_id ) ); + } + + + /** + * Get a total count of all topics of a given status, across groups/forums + * + * @package BuddyPress + * @since 1.5 + * + * @param str $status 'public', 'private', 'hidden', 'all' Which group types to count + * @return int The topic count + */ + function get_global_topic_count( $status = 'public', $search_terms = false ) { + global $bbdb, $wpdb, $bp; + + switch ( $status ) { + case 'all' : + $status_sql = ''; + break; + + case 'hidden' : + $status_sql = $wpdb->prepare( "AND g.status = 'hidden'" ); + break; + + case 'private' : + $status_sql = $wpdb->prepare( "AND g.status = 'private'" ); + break; + + case 'public' : + default : + $status_sql = $wpdb->prepare( "AND g.status = 'public'" ); + break; + } + + $sql = array(); + + $sql['select'] = "SELECT COUNT(t.topic_id)"; + + $sql['from'] = "FROM {$bbdb->topics} AS t INNER JOIN {$bp->groups->table_name_groupmeta} AS gm ON t.forum_id = gm.meta_value INNER JOIN {$bp->groups->table_name} AS g ON gm.group_id = g.id"; + + $sql['where'] = "WHERE gm.meta_key = 'forum_id' {$status_sql} AND t.topic_status = '0' AND t.topic_sticky != '2'"; + + if ( $search_terms ) { + $st = like_escape( $search_terms ); + $sql['where'] .= " AND ( t.topic_title LIKE '%{$st}%' )"; + } + + return $wpdb->get_var( implode( ' ', $sql ) ); + } +} + +Class BP_Groups_Member { + var $id; + var $group_id; + var $user_id; + var $inviter_id; + var $is_admin; + var $is_mod; + var $is_banned; + var $user_title; + var $date_modified; + var $is_confirmed; + var $comments; + var $invite_sent; + + var $user; + + function bp_groups_member( $user_id = 0, $group_id = 0, $id = false, $populate = true ) { + $this->__construct($user_id,$group_id,$id,$populate); + } + + function __construct( $user_id = 0, $group_id = 0, $id = false, $populate = true ) { + if ( $user_id && $group_id && !$id ) { + $this->user_id = $user_id; + $this->group_id = $group_id; + + if ( $populate ) + $this->populate(); + } + + if ( $id ) { + $this->id = $id; + + if ( $populate ) + $this->populate(); + } + } + + function populate() { + global $wpdb, $bp; + + if ( $this->user_id && $this->group_id && !$this->id ) + $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d", $this->user_id, $this->group_id ); + + if ( $this->id ) + $sql = $wpdb->prepare( "SELECT * FROM {$bp->groups->table_name_members} WHERE id = %d", $this->id ); + + $member = $wpdb->get_row($sql); + + if ( $member ) { + $this->id = $member->id; + $this->group_id = $member->group_id; + $this->user_id = $member->user_id; + $this->inviter_id = $member->inviter_id; + $this->is_admin = $member->is_admin; + $this->is_mod = $member->is_mod; + $this->is_banned = $member->is_banned; + $this->user_title = $member->user_title; + $this->date_modified = $member->date_modified; + $this->is_confirmed = $member->is_confirmed; + $this->comments = $member->comments; + $this->invite_sent = $member->invite_sent; + + $this->user = new BP_Core_User( $this->user_id ); + } + } + + function save() { + global $wpdb, $bp; + + $this->user_id = apply_filters( 'groups_member_user_id_before_save', $this->user_id, $this->id ); + $this->group_id = apply_filters( 'groups_member_group_id_before_save', $this->group_id, $this->id ); + $this->inviter_id = apply_filters( 'groups_member_inviter_id_before_save', $this->inviter_id, $this->id ); + $this->is_admin = apply_filters( 'groups_member_is_admin_before_save', $this->is_admin, $this->id ); + $this->is_mod = apply_filters( 'groups_member_is_mod_before_save', $this->is_mod, $this->id ); + $this->is_banned = apply_filters( 'groups_member_is_banned_before_save', $this->is_banned, $this->id ); + $this->user_title = apply_filters( 'groups_member_user_title_before_save', $this->user_title, $this->id ); + $this->date_modified = apply_filters( 'groups_member_date_modified_before_save', $this->date_modified, $this->id ); + $this->is_confirmed = apply_filters( 'groups_member_is_confirmed_before_save', $this->is_confirmed, $this->id ); + $this->comments = apply_filters( 'groups_member_comments_before_save', $this->comments, $this->id ); + $this->invite_sent = apply_filters( 'groups_member_invite_sent_before_save', $this->invite_sent, $this->id ); + + do_action_ref_array( 'groups_member_before_save', array( &$this ) ); + + if ( $this->id ) + $sql = $wpdb->prepare( "UPDATE {$bp->groups->table_name_members} SET inviter_id = %d, is_admin = %d, is_mod = %d, is_banned = %d, user_title = %s, date_modified = %s, is_confirmed = %d, comments = %s, invite_sent = %d WHERE id = %d", $this->inviter_id, $this->is_admin, $this->is_mod, $this->is_banned, $this->user_title, $this->date_modified, $this->is_confirmed, $this->comments, $this->invite_sent, $this->id ); + else + $sql = $wpdb->prepare( "INSERT INTO {$bp->groups->table_name_members} ( user_id, group_id, inviter_id, is_admin, is_mod, is_banned, user_title, date_modified, is_confirmed, comments, invite_sent ) VALUES ( %d, %d, %d, %d, %d, %d, %s, %s, %d, %s, %d )", $this->user_id, $this->group_id, $this->inviter_id, $this->is_admin, $this->is_mod, $this->is_banned, $this->user_title, $this->date_modified, $this->is_confirmed, $this->comments, $this->invite_sent ); + + if ( !$wpdb->query($sql) ) + return false; + + $this->id = $wpdb->insert_id; + + do_action_ref_array( 'groups_member_after_save', array( &$this ) ); + + return true; + } + + function promote( $status = 'mod' ) { + if ( 'mod' == $status ) { + $this->is_admin = 0; + $this->is_mod = 1; + $this->user_title = __( 'Group Mod', 'buddypress' ); + } + + if ( 'admin' == $status ) { + $this->is_admin = 1; + $this->is_mod = 0; + $this->user_title = __( 'Group Admin', 'buddypress' ); + } + + return $this->save(); + } + + function demote() { + $this->is_mod = 0; + $this->is_admin = 0; + $this->user_title = false; + + return $this->save(); + } + + function ban() { + global $bp; + + if ( $this->is_admin ) + return false; + + $this->is_mod = 0; + $this->is_banned = 1; + + groups_update_groupmeta( $this->group_id, 'total_member_count', ( (int) groups_get_groupmeta( $this->group_id, 'total_member_count' ) - 1 ) ); + + $group_count = bp_get_user_meta( $this->user_id, 'total_group_count', true ); + if ( !empty( $group_count ) ) + bp_update_user_meta( $this->user_id, 'total_group_count', (int)$group_count - 1 ); + + return $this->save(); + } + + function unban() { + global $bp; + + if ( $this->is_admin ) + return false; + + $this->is_banned = 0; + + groups_update_groupmeta( $this->group_id, 'total_member_count', ( (int) groups_get_groupmeta( $this->group_id, 'total_member_count' ) + 1 ) ); + bp_update_user_meta( $this->user_id, 'total_group_count', (int)bp_get_user_meta( $this->user_id, 'total_group_count', true ) + 1 ); + + return $this->save(); + } + + function accept_invite() { + global $bp; + + $this->inviter_id = 0; + $this->is_confirmed = 1; + $this->date_modified = bp_core_current_time(); + + bp_update_user_meta( $this->user_id, 'total_group_count', (int)bp_get_user_meta( $this->user_id, 'total_group_count', true ) + 1 ); + } + + function accept_request() { + global $bp; + + $this->is_confirmed = 1; + $this->date_modified = bp_core_current_time(); + + bp_update_user_meta( $this->user_id, 'total_group_count', (int)bp_get_user_meta( $this->user_id, 'total_group_count', true ) + 1 ); + } + + function remove() { + global $wpdb, $bp; + + $sql = $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d", $this->user_id, $this->group_id ); + + if ( !$result = $wpdb->query( $sql ) ) + return false; + + groups_update_groupmeta( $this->group_id, 'total_member_count', ( (int) groups_get_groupmeta( $this->group_id, 'total_member_count' ) - 1 ) ); + + $group_count = bp_get_user_meta( $this->user_id, 'total_group_count', true ); + if ( !empty( $group_count ) ) + bp_update_user_meta( $this->user_id, 'total_group_count', (int)$group_count - 1 ); + + return $result; + } + + /* Static Functions */ + + function delete( $user_id, $group_id ) { + global $wpdb, $bp; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d", $user_id, $group_id ) ); + } + + function get_group_ids( $user_id, $limit = false, $page = false ) { + global $wpdb, $bp; + + $pag_sql = ''; + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + // If the user is logged in and viewing their own groups, we can show hidden and private groups + if ( $user_id != $bp->loggedin_user->id ) { + $group_sql = $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.status != 'hidden' AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0{$pag_sql}", $user_id ); + $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.status != 'hidden' AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) ); + } else { + $group_sql = $wpdb->prepare( "SELECT DISTINCT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND is_confirmed = 1 AND is_banned = 0{$pag_sql}", $user_id ); + $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT group_id) FROM {$bp->groups->table_name_members} WHERE user_id = %d AND is_confirmed = 1 AND is_banned = 0", $user_id ) ); + } + + $groups = $wpdb->get_col( $group_sql ); + + return array( 'groups' => $groups, 'total' => (int) $total_groups ); + } + + function get_recently_joined( $user_id, $limit = false, $page = false, $filter = false ) { + global $wpdb, $bp; + + $pag_sql = $hidden_sql = $filter_sql = ''; + + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + if ( $filter ) { + $filter = like_escape( $wpdb->escape( $filter ) ); + $filter_sql = " AND ( g.name LIKE '%%{$filter}%%' OR g.description LIKE '%%{$filter}%%' )"; + } + + if ( $user_id != $bp->loggedin_user->id ) + $hidden_sql = " AND g.status != 'hidden'"; + + $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY m.date_modified DESC {$pag_sql}", $user_id ) ); + $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.is_banned = 0 AND m.is_confirmed = 1 ORDER BY m.date_modified DESC", $user_id ) ); + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function get_is_admin_of( $user_id, $limit = false, $page = false, $filter = false ) { + global $wpdb, $bp; + + $pag_sql = $hidden_sql = $filter_sql = ''; + + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + if ( $filter ) { + $filter = like_escape( $wpdb->escape( $filter ) ); + $filter_sql = " AND ( g.name LIKE '%%{$filter}%%' OR g.description LIKE '%%{$filter}%%' )"; + } + + if ( $user_id != $bp->loggedin_user->id ) + $hidden_sql = " AND g.status != 'hidden'"; + + $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_admin = 1 ORDER BY m.date_modified ASC {$pag_sql}", $user_id ) ); + $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_admin = 1 ORDER BY date_modified ASC", $user_id ) ); + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function get_is_mod_of( $user_id, $limit = false, $page = false, $filter = false ) { + global $wpdb, $bp; + + $pag_sql = $hidden_sql = $filter_sql = ''; + + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + if ( $filter ) { + $filter = like_escape( $wpdb->escape( $filter ) ); + $filter_sql = " AND ( g.name LIKE '%%{$filter}%%' OR g.description LIKE '%%{$filter}%%' )"; + } + + if ( $user_id != $bp->loggedin_user->id ) + $hidden_sql = " AND g.status != 'hidden'"; + + $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count'{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_mod = 1 ORDER BY m.date_modified ASC {$pag_sql}", $user_id ) ); + $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id{$hidden_sql}{$filter_sql} AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 AND m.is_mod = 1 ORDER BY date_modified ASC", $user_id ) ); + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function total_group_count( $user_id = 0 ) { + global $bp, $wpdb; + + if ( !$user_id ) + $user_id = $bp->displayed_user->id; + + if ( $user_id != $bp->loggedin_user->id && !is_super_admin() ) { + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) ); + } else { + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $user_id ) ); + } + } + + function get_invites( $user_id, $limit = false, $page = false, $exclude = false ) { + global $wpdb, $bp; + + $pag_sql = ( !empty( $limit ) && !empty( $page ) ) ? $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ) : ''; + + $exclude_sql = !empty( $exclude ) ? $wpdb->prepare( " AND g.id NOT IN (%s)", $exclude ) : ''; + + $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND m.is_confirmed = 0 AND m.inviter_id != 0 AND m.invite_sent = 1 AND m.user_id = %d {$exclude_sql} ORDER BY m.date_modified ASC {$pag_sql}", $user_id ) ); + $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND m.is_confirmed = 0 AND m.inviter_id != 0 AND m.invite_sent = 1 AND m.user_id = %d {$exclude_sql} ORDER BY date_modified ASC", $user_id ) ); + + return array( 'groups' => $paged_groups, 'total' => $total_groups ); + } + + function check_has_invite( $user_id, $group_id, $type = 'sent' ) { + global $wpdb, $bp; + + if ( !$user_id ) + return false; + + $sql = "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND inviter_id != 0"; + + if ( 'sent' == $type ) + $sql .= " AND invite_sent = 1"; + + return $wpdb->get_var( $wpdb->prepare( $sql, $user_id, $group_id ) ); + } + + function delete_invite( $user_id, $group_id ) { + global $wpdb, $bp; + + if ( !$user_id ) + return false; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND inviter_id != 0 AND invite_sent = 1", $user_id, $group_id ) ); + } + + function delete_request( $user_id, $group_id ) { + global $wpdb, $bp; + + if ( !$user_id ) + return false; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND inviter_id = 0 AND invite_sent = 0", $user_id, $group_id ) ); + } + + function check_is_admin( $user_id, $group_id ) { + global $wpdb, $bp; + + if ( !$user_id ) + return false; + + return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_admin = 1 AND is_banned = 0", $user_id, $group_id ) ); + } + + function check_is_mod( $user_id, $group_id ) { + global $wpdb, $bp; + + if ( !$user_id ) + return false; + + return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_mod = 1 AND is_banned = 0", $user_id, $group_id ) ); + } + + function check_is_member( $user_id, $group_id ) { + global $wpdb, $bp; + + if ( !$user_id ) + return false; + + return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 1 AND is_banned = 0", $user_id, $group_id ) ); + } + + function check_is_banned( $user_id, $group_id ) { + global $wpdb, $bp; + + if ( !$user_id ) + return false; + + return $wpdb->get_var( $wpdb->prepare( "SELECT is_banned FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d", $user_id, $group_id ) ); + } + + /** + * Is the specified user the creator of the group? + * + * @global object $bp BuddyPress global settings + * @global wpdb $wpdb WordPress database object + * @param int $user_id + * @param int $group_id + * @since 1.2.6 + */ + function check_is_creator( $user_id, $group_id ) { + global $bp, $wpdb; + + if ( !$user_id ) + return false; + + return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name} WHERE creator_id = %d AND id = %d", $user_id, $group_id ) ); + } + + function check_for_membership_request( $user_id, $group_id ) { + global $wpdb, $bp; + + if ( !$user_id ) + return false; + + return $wpdb->query( $wpdb->prepare( "SELECT id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d AND is_confirmed = 0 AND is_banned = 0 AND inviter_id = 0", $user_id, $group_id ) ); + } + + function get_random_groups( $user_id, $total_groups = 5 ) { + global $wpdb, $bp; + + // If the user is logged in and viewing their random groups, we can show hidden and private groups + if ( bp_is_my_profile() ) { + return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT group_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND is_confirmed = 1 AND is_banned = 0 ORDER BY rand() LIMIT $total_groups", $user_id ) ); + } else { + return $wpdb->get_col( $wpdb->prepare( "SELECT DISTINCT m.group_id FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND g.status != 'hidden' AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0 ORDER BY rand() LIMIT $total_groups", $user_id ) ); + } + } + + function get_group_member_ids( $group_id ) { + global $bp, $wpdb; + + return $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 1 AND is_banned = 0", $group_id ) ); + } + + function get_group_administrator_ids( $group_id ) { + global $bp, $wpdb; + + return $wpdb->get_results( $wpdb->prepare( "SELECT user_id, date_modified FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_admin = 1 AND is_banned = 0", $group_id ) ); + } + + function get_group_moderator_ids( $group_id ) { + global $bp, $wpdb; + + return $wpdb->get_results( $wpdb->prepare( "SELECT user_id, date_modified FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_mod = 1 AND is_banned = 0", $group_id ) ); + } + + function get_all_membership_request_user_ids( $group_id ) { + global $bp, $wpdb; + + return $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 0 AND inviter_id = 0", $group_id ) ); + } + + function get_all_for_group( $group_id, $limit = false, $page = false, $exclude_admins_mods = true, $exclude_banned = true, $exclude = false ) { + global $bp, $wpdb; + + $pag_sql = ''; + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( "LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + $exclude_admins_sql = ''; + if ( $exclude_admins_mods ) + $exclude_admins_sql = $wpdb->prepare( "AND is_admin = 0 AND is_mod = 0" ); + + $banned_sql = ''; + if ( $exclude_banned ) + $banned_sql = $wpdb->prepare( " AND is_banned = 0" ); + + $exclude_sql = ''; + if ( $exclude ) + $exclude_sql = $wpdb->prepare( " AND m.user_id NOT IN ({$exclude})" ); + + if ( bp_is_active( 'xprofile' ) ) + $members = $wpdb->get_results( apply_filters( 'bp_group_members_user_join_filter', $wpdb->prepare( "SELECT m.user_id, m.date_modified, m.is_banned, u.user_login, u.user_nicename, u.user_email, pd.value as display_name FROM {$bp->groups->table_name_members} m, {$wpdb->users} u, {$bp->profile->table_name_data} pd WHERE u.ID = m.user_id AND u.ID = pd.user_id AND pd.field_id = 1 AND group_id = %d AND is_confirmed = 1 {$banned_sql} {$exclude_admins_sql} {$exclude_sql} ORDER BY m.date_modified DESC {$pag_sql}", $group_id ) ) ); + else + $members = $wpdb->get_results( apply_filters( 'bp_group_members_user_join_filter', $wpdb->prepare( "SELECT m.user_id, m.date_modified, m.is_banned, u.user_login, u.user_nicename, u.user_email, u.display_name FROM {$bp->groups->table_name_members} m, {$wpdb->users} u WHERE u.ID = m.user_id AND group_id = %d AND is_confirmed = 1 {$banned_sql} {$exclude_admins_sql} {$exclude_sql} ORDER BY m.date_modified DESC {$pag_sql}", $group_id ) ) ); + + if ( !$members ) + return false; + + if ( empty( $pag_sql ) ) + $total_member_count = count( $members ); + else + $total_member_count = $wpdb->get_var( apply_filters( 'bp_group_members_count_user_join_filter', $wpdb->prepare( "SELECT COUNT(user_id) FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 1 {$banned_sql} {$exclude_admins_sql} {$exclude_sql}", $group_id ) ) ); + + /* Fetch whether or not the user is a friend */ + foreach ( (array)$members as $user ) $user_ids[] = $user->user_id; + $user_ids = $wpdb->escape( join( ',', (array)$user_ids ) ); + + if ( bp_is_active( 'friends' ) ) { + $friend_status = $wpdb->get_results( $wpdb->prepare( "SELECT initiator_user_id, friend_user_id, is_confirmed FROM {$bp->friends->table_name} WHERE (initiator_user_id = %d AND friend_user_id IN ( {$user_ids} ) ) OR (initiator_user_id IN ( {$user_ids} ) AND friend_user_id = %d )", $bp->loggedin_user->id, $bp->loggedin_user->id ) ); + for ( $i = 0, $count = count( $members ); $i < $count; ++$i ) { + foreach ( (array)$friend_status as $status ) { + if ( $status->initiator_user_id == $members[$i]->user_id || $status->friend_user_id == $members[$i]->user_id ) + $members[$i]->is_friend = $status->is_confirmed; + } + } + } + + return array( 'members' => $members, 'count' => $total_member_count ); + } + + function delete_all( $group_id ) { + global $wpdb, $bp; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE group_id = %d", $group_id ) ); + } + + /** + * Delete all group membership information for the specified user + * + * @global object $bp BuddyPress global settings + * @global wpdb $wpdb WordPress database object + * @param int $user_id + * @since 1.0 + * @uses BP_Groups_Member + */ + function delete_all_for_user( $user_id ) { + global $bp, $wpdb; + + // Get all the group ids for the current user's groups and update counts + $group_ids = BP_Groups_Member::get_group_ids( $user_id ); + foreach ( $group_ids['groups'] as $group_id ) { + groups_update_groupmeta( $group_id, 'total_member_count', groups_get_total_member_count( $group_id ) - 1 ); + + // If current user is the creator of a group and is the sole admin, delete that group to avoid counts going out-of-sync + if ( groups_is_user_admin( $user_id, $group_id ) && count( groups_get_group_admins( $group_id ) ) < 2 && groups_is_user_creator( $user_id, $group_id ) ) + groups_delete_group( $group_id ); + } + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->groups->table_name_members} WHERE user_id = %d", $user_id ) ); + } +} + +/** + * API for creating group extensions without having to hardcode the content into + * the theme. + * + * This class must be extended for each group extension and the following methods overridden: + * + * BP_Group_Extension::widget_display(), BP_Group_Extension::display(), + * BP_Group_Extension::edit_screen_save(), BP_Group_Extension::edit_screen(), + * BP_Group_Extension::create_screen_save(), BP_Group_Extension::create_screen() + * + * @package BuddyPress + * @subpackage Groups + * @since 1.1 + */ +class BP_Group_Extension { + var $name = false; + var $slug = false; + + /* Will this extension be visible to non-members of a group? Options: public/private */ + var $visibility = 'public'; + + var $create_step_position = 81; + var $nav_item_position = 81; + + var $enable_create_step = true; + var $enable_nav_item = true; + var $enable_edit_item = true; + + var $nav_item_name = false; + + var $display_hook = 'groups_custom_group_boxes'; + var $template_file = 'groups/single/plugins'; + + // Methods you should override + + function display() {} + + function widget_display() {} + + function edit_screen() {} + + function edit_screen_save() {} + + function create_screen() {} + + function create_screen_save() {} + + // Private Methods + + function _register() { + global $bp; + + if ( !empty( $this->enable_create_step ) ) { + // Insert the group creation step for the new group extension + $bp->groups->group_creation_steps[$this->slug] = array( 'name' => $this->name, 'slug' => $this->slug, 'position' => $this->create_step_position ); + + // Attach the group creation step display content action + add_action( 'groups_custom_create_steps', array( &$this, 'create_screen' ) ); + + // Attach the group creation step save content action + add_action( 'groups_create_group_step_save_' . $this->slug, array( &$this, 'create_screen_save' ) ); + } + + // When we are viewing a single group, add the group extension nav item + if ( bp_is_group() ) { + if ( $this->visibility == 'public' || ( $this->visibility != 'public' && $bp->groups->current_group->user_has_access ) ) { + if ( $this->enable_nav_item ) { + bp_core_new_subnav_item( array( 'name' => ( !$this->nav_item_name ) ? $this->name : $this->nav_item_name, 'slug' => $this->slug, 'parent_slug' => $bp->groups->current_group->slug, 'parent_url' => bp_get_group_permalink( $bp->groups->current_group ), 'position' => $this->nav_item_position, 'item_css_id' => 'nav-' . $this->slug, 'screen_function' => array( &$this, '_display_hook' ), 'user_has_access' => $this->enable_nav_item ) ); + + // When we are viewing the extension display page, set the title and options title + if ( bp_is_current_action( $this->slug ) ) { + add_action( 'bp_template_content_header', create_function( '', 'echo "' . esc_attr( $this->name ) . '";' ) ); + add_action( 'bp_template_title', create_function( '', 'echo "' . esc_attr( $this->name ) . '";' ) ); + } + } + + // Hook the group home widget + if ( !bp_current_action() && bp_is_current_action( 'home' ) ) + add_action( $this->display_hook, array( &$this, 'widget_display' ) ); + } + } + + // Construct the admin edit tab for the new group extension + if ( !empty( $this->enable_edit_item ) && !empty( $bp->is_item_admin ) ) { + add_action( 'groups_admin_tabs', create_function( '$current, $group_slug', '$selected = ""; if ( "' . esc_attr( $this->slug ) . '" == $current ) $selected = " class=\"current\""; echo "<li{$selected}><a href=\"' . bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/{$group_slug}/admin/' . esc_attr( $this->slug ) . '\">' . esc_attr( $this->name ) . '</a></li>";' ), 10, 2 ); + + // Catch the edit screen and forward it to the plugin template + if ( bp_is_groups_component() && bp_is_current_action( 'admin' ) && bp_is_action_variable( $this->slug, 0 ) ) { + // Check whether the user is saving changes + $this->edit_screen_save(); + + add_action( 'groups_custom_edit_steps', array( &$this, 'edit_screen' ) ); + + if ( '' != locate_template( array( 'groups/single/home.php' ), false ) ) { + bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); + } else { + add_action( 'bp_template_content_header', create_function( '', 'echo "<ul class=\"content-header-nav\">"; bp_group_admin_tabs(); echo "</ul>";' ) ); + add_action( 'bp_template_content', array( &$this, 'edit_screen' ) ); + bp_core_load_template( apply_filters( 'bp_core_template_plugin', '/groups/single/plugins' ) ); + } + } + } + } + + function _display_hook() { + add_action( 'bp_template_content', array( &$this, 'display' ) ); + bp_core_load_template( apply_filters( 'bp_core_template_plugin', $this->template_file ) ); + } +} + +function bp_register_group_extension( $group_extension_class ) { + global $bp; + + if ( !class_exists( $group_extension_class ) ) + return false; + + /* Register the group extension on the bp_init action so we have access to all plugins */ + add_action( 'bp_init', create_function( '', '$extension = new ' . $group_extension_class . '; add_action( "bp_actions", array( &$extension, "_register" ), 8 );' ), 11 ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-filters.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-filters.php new file mode 100644 index 0000000..fdbd32b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-filters.php @@ -0,0 +1,155 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/* Apply WordPress defined filters */ +add_filter( 'bp_get_group_description', 'wptexturize' ); +add_filter( 'bp_get_group_description_excerpt', 'wptexturize' ); +add_filter( 'bp_get_group_name', 'wptexturize' ); + +add_filter( 'bp_get_group_description', 'convert_smilies' ); +add_filter( 'bp_get_group_description_excerpt', 'convert_smilies' ); + +add_filter( 'bp_get_group_description', 'convert_chars' ); +add_filter( 'bp_get_group_description_excerpt', 'convert_chars' ); +add_filter( 'bp_get_group_name', 'convert_chars' ); + +add_filter( 'bp_get_group_description', 'wpautop' ); +add_filter( 'bp_get_group_description_excerpt', 'wpautop' ); + +add_filter( 'bp_get_group_description', 'make_clickable', 9 ); +add_filter( 'bp_get_group_description_excerpt', 'make_clickable', 9 ); + +add_filter( 'bp_get_group_name', 'wp_filter_kses', 1 ); +add_filter( 'bp_get_group_permalink', 'wp_filter_kses', 1 ); +add_filter( 'bp_get_group_description', 'bp_groups_filter_kses', 1 ); +add_filter( 'bp_get_group_description_excerpt', 'wp_filter_kses', 1 ); +add_filter( 'groups_group_name_before_save', 'wp_filter_kses', 1 ); +add_filter( 'groups_group_description_before_save', 'wp_filter_kses', 1 ); + +add_filter( 'bp_get_group_description', 'stripslashes' ); +add_filter( 'bp_get_group_description_excerpt', 'stripslashes' ); +add_filter( 'bp_get_group_name', 'stripslashes' ); +add_filter( 'bp_get_group_member_name', 'stripslashes' ); +add_filter( 'bp_get_group_member_link', 'stripslashes' ); + +add_filter( 'groups_new_group_forum_desc', 'bp_create_excerpt' ); + +add_filter( 'groups_group_name_before_save', 'force_balance_tags' ); +add_filter( 'groups_group_description_before_save', 'force_balance_tags' ); + +add_filter( 'bp_get_total_group_count', 'bp_core_number_format' ); +add_filter( 'bp_get_group_total_for_member', 'bp_core_number_format' ); +add_filter( 'bp_get_group_total_members', 'bp_core_number_format' ); + +function bp_groups_filter_kses( $content ) { + global $allowedtags; + + $groups_allowedtags = $allowedtags; + $groups_allowedtags['a']['class'] = array(); + $groups_allowedtags['img'] = array(); + $groups_allowedtags['img']['src'] = array(); + $groups_allowedtags['img']['alt'] = array(); + $groups_allowedtags['img']['class'] = array(); + $groups_allowedtags['img']['width'] = array(); + $groups_allowedtags['img']['height'] = array(); + $groups_allowedtags['img']['class'] = array(); + $groups_allowedtags['img']['id'] = array(); + $groups_allowedtags['code'] = array(); + + $groups_allowedtags = apply_filters( 'bp_groups_filter_kses', $groups_allowedtags ); + return wp_kses( $content, $groups_allowedtags ); +} + +/**** Filters for group forums ****/ + +function groups_add_forum_privacy_sql() { + global $bp; + + // Only filter the forum SQL on group pages or on the forums directory + add_filter( 'get_topics_fields', 'groups_add_forum_fields_sql' ); + add_filter( 'get_topics_join', 'groups_add_forum_tables_sql' ); + add_filter( 'get_topics_where', 'groups_add_forum_where_sql' ); +} +add_filter( 'bbpress_init', 'groups_add_forum_privacy_sql' ); + +function groups_add_forum_fields_sql( $sql = '' ) { + return 't.*, g.id as object_id, g.name as object_name, g.slug as object_slug'; +} + +function groups_add_forum_tables_sql( $sql = '' ) { + global $bp; + + $sql .= 'JOIN ' . $bp->groups->table_name . ' AS g LEFT JOIN ' . $bp->groups->table_name_groupmeta . ' AS gm ON g.id = gm.group_id '; + + return $sql; +} + +function groups_add_forum_where_sql( $sql = '' ) { + global $bp; + + // Set this for groups + $parts['groups'] = "(gm.meta_key = 'forum_id' AND gm.meta_value = t.forum_id)"; + + // Restrict to public... + $parts['private'] = "g.status = 'public'"; + + /** + * ...but do some checks to possibly remove public restriction. + * + * Decide if private are visible + */ + // Are we in our own profile? + if ( bp_is_my_profile() ) + unset( $parts['private'] ); + + // Are we a super admin? + elseif ( is_super_admin() ) + unset( $parts['private'] ); + + // No need to filter on a single item + elseif ( bp_is_single_item() ) + unset( $parts['private'] ); + + // Check the SQL filter that was passed + if ( !empty( $sql ) ) + $parts['passed'] = $sql; + + // Assemble Voltron + $parts_string = implode( ' AND ', $parts ); + + // Set it to the global filter + $bp->groups->filter_sql = $parts_string; + + // Return the global filter + return $bp->groups->filter_sql; +} + +function groups_filter_bbpress_caps( $value, $cap, $args ) { + global $bp; + + if ( is_super_admin() ) + return true; + + if ( 'add_tag_to' == $cap ) + if ( $bp->groups->current_group->user_has_access ) return true; + + if ( 'manage_forums' == $cap && is_user_logged_in() ) + return true; + + return $value; +} +add_filter( 'bb_current_user_can', 'groups_filter_bbpress_caps', 10, 3 ); + +/** + * Amends the forum directory's "last active" bbPress SQL query to stop it fetching + * information we aren't going to use. This speeds up the query. + * + * @see BB_Query::_filter_sql() + * @since 1.5 + */ +function groups_filter_forums_root_page_sql( $sql ) { + return apply_filters( 'groups_filter_bbpress_root_page_sql', 't.topic_id' ); +} +add_filter( 'get_latest_topics_fields', 'groups_filter_forums_root_page_sql' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-forums.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-forums.php new file mode 100644 index 0000000..082d9e3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-forums.php @@ -0,0 +1,291 @@ +<?php +/*** Group Forums **************************************************************/ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function groups_new_group_forum( $group_id = 0, $group_name = '', $group_desc = '' ) { + global $bp; + + if ( empty( $group_id ) ) + $group_id = $bp->groups->current_group->id; + + if ( empty( $group_name ) ) + $group_name = $bp->groups->current_group->name; + + if ( empty( $group_desc ) ) + $group_desc = $bp->groups->current_group->description; + + $forum_id = bp_forums_new_forum( array( 'forum_name' => $group_name, 'forum_desc' => $group_desc ) ); + + groups_update_groupmeta( $group_id, 'forum_id', $forum_id ); + + do_action( 'groups_new_group_forum', $forum_id, $group_id ); +} + +/** + * Updates group forum metadata (title, description, slug) when the group's details are edited + * + * @package BuddyPress + * @subpackage Groups + * + * @param int $group_id Group id, passed from groups_details_updated + */ +function groups_update_group_forum( $group_id ) { + + $group = new BP_Groups_Group( $group_id ); + + /** + * Bail in the following three situations: + * 1. Forums are not enabled for this group + * 2. The BP Forum component is not enabled + * 3. The built-in bbPress forums are not correctly installed (usually means they've been + * uninstalled) + */ + if ( empty( $group->enable_forum ) || !bp_is_active( 'forums' ) || ( function_exists( 'bp_forums_is_installed_correctly' ) && !bp_forums_is_installed_correctly() ) ) + return false; + + $args = array( + 'forum_id' => groups_get_groupmeta( $group_id, 'forum_id' ), + 'forum_name' => $group->name, + 'forum_desc' => $group->description, + 'forum_slug' => $group->slug + ); + + bp_forums_update_forum( apply_filters( 'groups_update_group_forum', $args ) ); +} +add_action( 'groups_details_updated', 'groups_update_group_forum' ); + +function groups_new_group_forum_post( $post_text, $topic_id, $page = false ) { + global $bp; + + if ( empty( $post_text ) ) + return false; + + $post_text = apply_filters( 'group_forum_post_text_before_save', $post_text ); + $topic_id = apply_filters( 'group_forum_post_topic_id_before_save', $topic_id ); + + if ( $post_id = bp_forums_insert_post( array( 'post_text' => $post_text, 'topic_id' => $topic_id ) ) ) { + $topic = bp_forums_get_topic_details( $topic_id ); + + $activity_action = sprintf( __( '%1$s replied to the forum topic %2$s in the group %3$s', 'buddypress'), bp_core_get_userlink( $bp->loggedin_user->id ), '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug .'/">' . esc_attr( $topic->topic_title ) . '</a>', '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . '">' . esc_attr( $bp->groups->current_group->name ) . '</a>' ); + $activity_content = bp_create_excerpt( $post_text ); + $primary_link = bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug . '/'; + + if ( $page ) + $primary_link .= "?topic_page=" . $page; + + // Record this in activity streams + groups_record_activity( array( + 'action' => apply_filters_ref_array( 'groups_activity_new_forum_post_action', array( $activity_action, $post_id, $post_text, &$topic ) ), + 'content' => apply_filters_ref_array( 'groups_activity_new_forum_post_content', array( $activity_content, $post_id, $post_text, &$topic ) ), + 'primary_link' => apply_filters( 'groups_activity_new_forum_post_primary_link', "{$primary_link}#post-{$post_id}" ), + 'type' => 'new_forum_post', + 'item_id' => $bp->groups->current_group->id, + 'secondary_item_id' => $post_id + ) ); + + do_action( 'groups_new_forum_topic_post', $bp->groups->current_group->id, $post_id ); + + return $post_id; + } + + return false; +} + +function groups_new_group_forum_topic( $topic_title, $topic_text, $topic_tags, $forum_id ) { + global $bp; + + if ( empty( $topic_title ) || empty( $topic_text ) ) + return false; + + $topic_title = apply_filters( 'group_forum_topic_title_before_save', $topic_title ); + $topic_text = apply_filters( 'group_forum_topic_text_before_save', $topic_text ); + $topic_tags = apply_filters( 'group_forum_topic_tags_before_save', $topic_tags ); + $forum_id = apply_filters( 'group_forum_topic_forum_id_before_save', $forum_id ); + + if ( $topic_id = bp_forums_new_topic( array( 'topic_title' => $topic_title, 'topic_text' => $topic_text, 'topic_tags' => $topic_tags, 'forum_id' => $forum_id ) ) ) { + $topic = bp_forums_get_topic_details( $topic_id ); + + $activity_action = sprintf( __( '%1$s started the forum topic %2$s in the group %3$s', 'buddypress'), bp_core_get_userlink( $bp->loggedin_user->id ), '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug .'/">' . esc_attr( $topic->topic_title ) . '</a>', '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . '">' . esc_attr( $bp->groups->current_group->name ) . '</a>' ); + $activity_content = bp_create_excerpt( $topic_text ); + + // Record this in activity streams + groups_record_activity( array( + 'action' => apply_filters_ref_array( 'groups_activity_new_forum_topic_action', array( $activity_action, $topic_text, &$topic ) ), + 'content' => apply_filters_ref_array( 'groups_activity_new_forum_topic_content', array( $activity_content, $topic_text, &$topic ) ), + 'primary_link' => apply_filters( 'groups_activity_new_forum_topic_primary_link', bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug . '/' ), + 'type' => 'new_forum_topic', + 'item_id' => $bp->groups->current_group->id, + 'secondary_item_id' => $topic->topic_id + ) ); + + do_action_ref_array( 'groups_new_forum_topic', array( $bp->groups->current_group->id, &$topic ) ); + + return $topic; + } + + return false; +} + +function groups_update_group_forum_topic( $topic_id, $topic_title, $topic_text, $topic_tags = false ) { + global $bp; + + $topic_title = apply_filters( 'group_forum_topic_title_before_save', $topic_title ); + $topic_text = apply_filters( 'group_forum_topic_text_before_save', $topic_text ); + + if ( $topic = bp_forums_update_topic( array( 'topic_title' => $topic_title, 'topic_text' => $topic_text, 'topic_id' => $topic_id, 'topic_tags' => $topic_tags ) ) ) { + // Update the activity stream item + if ( bp_is_active( 'activity' ) ) + bp_activity_delete_by_item_id( array( 'item_id' => $bp->groups->current_group->id, 'secondary_item_id' => $topic_id, 'component' => $bp->groups->id, 'type' => 'new_forum_topic' ) ); + + $activity_action = sprintf( __( '%1$s started the forum topic %2$s in the group %3$s', 'buddypress'), bp_core_get_userlink( $topic->topic_poster ), '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug .'/">' . esc_attr( $topic->topic_title ) . '</a>', '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . '">' . esc_attr( $bp->groups->current_group->name ) . '</a>' ); + $activity_content = bp_create_excerpt( $topic_text ); + + // Record this in activity streams + groups_record_activity( array( + 'action' => apply_filters_ref_array( 'groups_activity_new_forum_topic_action', array( $activity_action, $topic_text, &$topic ) ), + 'content' => apply_filters_ref_array( 'groups_activity_new_forum_topic_content', array( $activity_content, $topic_text, &$topic ) ), + 'primary_link' => apply_filters( 'groups_activity_new_forum_topic_primary_link', bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug . '/' ), + 'type' => 'new_forum_topic', + 'item_id' => (int)$bp->groups->current_group->id, + 'user_id' => (int)$topic->topic_poster, + 'secondary_item_id' => $topic->topic_id, + 'recorded_time ' => $topic->topic_time + ) ); + + do_action_ref_array( 'groups_update_group_forum_topic', array( &$topic ) ); + + return $topic; + } + + return false; +} + +function groups_update_group_forum_post( $post_id, $post_text, $topic_id, $page = false ) { + global $bp; + + $post_text = apply_filters( 'group_forum_post_text_before_save', $post_text ); + $topic_id = apply_filters( 'group_forum_post_topic_id_before_save', $topic_id ); + $post = bp_forums_get_post( $post_id ); + + if ( $post_id = bp_forums_insert_post( array( 'post_id' => $post_id, 'post_text' => $post_text, 'post_time' => $post->post_time, 'topic_id' => $topic_id, 'poster_id' => $post->poster_id ) ) ) { + $topic = bp_forums_get_topic_details( $topic_id ); + + $activity_action = sprintf( __( '%1$s replied to the forum topic %2$s in the group %3$s', 'buddypress'), bp_core_get_userlink( $post->poster_id ), '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug .'">' . esc_attr( $topic->topic_title ) . '</a>', '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . '">' . esc_attr( $bp->groups->current_group->name ) . '</a>' ); + $activity_content = bp_create_excerpt( $post_text ); + $primary_link = bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug . '/'; + + if ( $page ) + $primary_link .= "?topic_page=" . $page; + + // Fetch an existing entry and update if one exists. + if ( bp_is_active( 'activity' ) ) + $id = bp_activity_get_activity_id( array( 'user_id' => $post->poster_id, 'component' => $bp->groups->id, 'type' => 'new_forum_post', 'item_id' => $bp->groups->current_group->id, 'secondary_item_id' => $post_id ) ); + + // Update the entry in activity streams + groups_record_activity( array( + 'id' => $id, + 'action' => apply_filters_ref_array( 'groups_activity_new_forum_post_action', array( $activity_action, $post_text, &$topic, &$forum_post ) ), + 'content' => apply_filters_ref_array( 'groups_activity_new_forum_post_content', array( $activity_content, $post_text, &$topic, &$forum_post ) ), + 'primary_link' => apply_filters( 'groups_activity_new_forum_post_primary_link', $primary_link . "#post-" . $post_id ), + 'type' => 'new_forum_post', + 'item_id' => (int)$bp->groups->current_group->id, + 'user_id' => (int)$post->poster_id, + 'secondary_item_id' => $post_id, + 'recorded_time' => $post->post_time + ) ); + + do_action_ref_array( 'groups_update_group_forum_post', array( $post, &$topic ) ); + + return $post_id; + } + + return false; +} + +/** + * Handles the forum topic deletion routine + * + * @package BuddyPress + * + * @uses bp_activity_delete() to delete corresponding activity items + * @uses bp_forums_get_topic_posts() to get the child posts + * @uses bp_forums_delete_topic() to do the deletion itself + * @param int $topic_id The id of the topic to be deleted + * @return bool True if the delete routine went through properly + */ +function groups_delete_group_forum_topic( $topic_id ) { + global $bp; + + // Before deleting the thread, get the post ids so that their activity items can be deleted + $posts = bp_forums_get_topic_posts( array( 'topic_id' => $topic_id, 'per_page' => -1 ) ); + + if ( bp_forums_delete_topic( array( 'topic_id' => $topic_id ) ) ) { + do_action( 'groups_before_delete_group_forum_topic', $topic_id ); + + // Delete the activity stream items + if ( bp_is_active( 'activity' ) ) { + // The activity item for the initial topic + bp_activity_delete( array( 'item_id' => $bp->groups->current_group->id, 'secondary_item_id' => $topic_id, 'component' => $bp->groups->id, 'type' => 'new_forum_topic' ) ); + + // The activity item for each post + foreach ( (array)$posts as $post ) { + bp_activity_delete( array( 'item_id' => $bp->groups->current_group->id, 'secondary_item_id' => $post->post_id, 'component' => $bp->groups->id, 'type' => 'new_forum_post' ) ); + } + } + + do_action( 'groups_delete_group_forum_topic', $topic_id ); + + return true; + } + + return false; +} + +/** + * Delete a forum post + * + * @package BuddyPress + * + * @param int $post_id The id of the post you want to delete + * @param int $topic_id Optional. The topic to which the post belongs. This value isn't used in the + * function but is passed along to do_action() hooks. + * @return bool True on success. + */ +function groups_delete_group_forum_post( $post_id, $topic_id = false ) { + global $bp; + + if ( bp_forums_delete_post( array( 'post_id' => $post_id ) ) ) { + do_action( 'groups_before_delete_group_forum_post', $post_id, $topic_id ); + + // Delete the activity stream item + if ( bp_is_active( 'activity' ) ) + bp_activity_delete( array( 'item_id' => $bp->groups->current_group->id, 'secondary_item_id' => $post_id, 'component' => $bp->groups->id, 'type' => 'new_forum_post' ) ); + + do_action( 'groups_delete_group_forum_post', $post_id, $topic_id ); + + return true; + } + + return false; +} + +function groups_total_public_forum_topic_count( $type = 'newest' ) { + return apply_filters( 'groups_total_public_forum_topic_count', BP_Groups_Group::get_global_forum_topic_count( $type ) ); +} + +/** + * Get a total count of all topics of a given status, across groups/forums + * + * @package BuddyPress + * @since 1.5 + * + * @param str $status 'public', 'private', 'hidden', 'all' Which group types to count + * @return int The topic count + */ +function groups_total_forum_topic_count( $status = 'public', $search_terms = false ) { + return apply_filters( 'groups_total_forum_topic_count', BP_Groups_Group::get_global_topic_count( $status, $search_terms ) ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-functions.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-functions.php new file mode 100644 index 0000000..2d0b569 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-functions.php @@ -0,0 +1,969 @@ +<?php +/** + * Functions are where all the magic happens in BuddyPress. They will + * handle the actual saving or manipulation of information. Usually they will + * hand off to a database class for data access, then return + * true or false on success or failure. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Checks $bp pages global and looks for directory page + * + * @since 1.5 + * + * @global object $bp Global BuddyPress settings object + * @return bool True if set, False if empty + */ +function bp_groups_has_directory() { + global $bp; + + return (bool) !empty( $bp->pages->groups->id ); +} + +function groups_get_group( $args = '' ) { + $defaults = array( + 'group_id' => false, + 'load_users' => false + ); + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + return apply_filters( 'groups_get_group', new BP_Groups_Group( $group_id, true, $load_users ) ); +} + +/*** Group Creation, Editing & Deletion *****************************************/ + +function groups_create_group( $args = '' ) { + global $bp; + + extract( $args ); + + /** + * Possible parameters (pass as assoc array): + * 'group_id' + * 'creator_id' + * 'name' + * 'description' + * 'slug' + * 'status' + * 'enable_forum' + * 'date_created' + */ + + if ( isset( $group_id ) && $group_id ) + $group = new BP_Groups_Group( $group_id ); + else + $group = new BP_Groups_Group; + + if ( isset( $creator_id ) && $creator_id ) + $group->creator_id = $creator_id; + else + $group->creator_id = $bp->loggedin_user->id; + + if ( isset( $name ) ) + $group->name = $name; + + if ( isset( $description ) ) + $group->description = $description; + + if ( isset( $slug ) && groups_check_slug( $slug ) ) + $group->slug = $slug; + + if ( isset( $status ) ) { + if ( groups_is_valid_status( $status ) ) + $group->status = $status; + } + + if ( isset( $enable_forum ) ) + $group->enable_forum = $enable_forum; + else if ( !$group_id && !isset( $enable_forum ) ) + $group->enable_forum = 1; + + if ( isset( $date_created ) ) + $group->date_created = $date_created; + + if ( !$group->save() ) + return false; + + // If this is a new group, set up the creator as the first member and admin + if ( empty( $group_id ) ) { + $member = new BP_Groups_Member; + $member->group_id = $group->id; + $member->user_id = $group->creator_id; + $member->is_admin = 1; + $member->user_title = __( 'Group Admin', 'buddypress' ); + $member->is_confirmed = 1; + $member->date_modified = bp_core_current_time(); + + $member->save(); + do_action( 'groups_create_group', $group->id, $member, $group ); + + } else { + do_action( 'groups_update_group', $group->id, $group ); + } + + do_action( 'groups_created_group', $group->id ); + + return $group->id; +} + +function groups_edit_base_group_details( $group_id, $group_name, $group_desc, $notify_members ) { + global $bp; + + if ( empty( $group_name ) || empty( $group_desc ) ) + return false; + + $group = new BP_Groups_Group( $group_id ); + $group->name = $group_name; + $group->description = $group_desc; + + if ( !$group->save() ) + return false; + + if ( $notify_members ) { + groups_notification_group_updated( $group->id ); + } + + do_action( 'groups_details_updated', $group->id ); + + return true; +} + +function groups_edit_group_settings( $group_id, $enable_forum, $status, $invite_status = false ) { + global $bp; + + $group = new BP_Groups_Group( $group_id ); + $group->enable_forum = $enable_forum; + + /*** + * Before we potentially switch the group status, if it has been changed to public + * from private and there are outstanding membership requests, auto-accept those requests. + */ + if ( 'private' == $group->status && 'public' == $status ) + groups_accept_all_pending_membership_requests( $group->id ); + + // Now update the status + $group->status = $status; + + if ( !$group->save() ) + return false; + + // If forums have been enabled, and a forum does not yet exist, we need to create one. + if ( $group->enable_forum ) { + if ( bp_is_active( 'forums' ) && !groups_get_groupmeta( $group->id, 'forum_id' ) ) { + groups_new_group_forum( $group->id, $group->name, $group->description ); + } + } + + // Set the invite status + if ( $invite_status ) + groups_update_groupmeta( $group->id, 'invite_status', $invite_status ); + + groups_update_groupmeta( $group->id, 'last_activity', bp_core_current_time() ); + do_action( 'groups_settings_updated', $group->id ); + + return true; +} + +/** + * Delete a group and all of its associated meta + * + * @global object $bp BuddyPress global settings + * @param int $group_id + * @since 1.0 + */ +function groups_delete_group( $group_id ) { + global $bp; + + // Check the user is the group admin. + if ( !$bp->is_item_admin ) + return false; + + // Get the group object + $group = new BP_Groups_Group( $group_id ); + if ( !$group->delete() ) + return false; + + do_action( 'groups_before_delete_group', $group_id ); + + // Delete all group activity from activity streams + if ( bp_is_active( 'activity' ) ) + bp_activity_delete_by_item_id( array( 'item_id' => $group_id, 'component' => $bp->groups->id ) ); + + // Remove all outstanding invites for this group + groups_delete_all_group_invites( $group_id ); + + // Remove all notifications for any user belonging to this group + bp_core_delete_all_notifications_by_type( $group_id, $bp->groups->id ); + + // Remove forum if component is active and current group has one + if ( bp_is_active( 'forums' ) && $forum_id = groups_get_groupmeta( $group_id, 'forum_id' ) ) { + do_action( 'bbpress_init' ); + bb_delete_forum( $forum_id ); + } + + do_action( 'groups_delete_group', $group_id); + + return true; +} + +function groups_is_valid_status( $status ) { + global $bp; + + return in_array( $status, (array)$bp->groups->valid_status ); +} + +function groups_check_slug( $slug ) { + global $bp; + + if ( 'wp' == substr( $slug, 0, 2 ) ) + $slug = substr( $slug, 2, strlen( $slug ) - 2 ); + + if ( in_array( $slug, (array)$bp->groups->forbidden_names ) ) + $slug = $slug . '-' . rand(); + + if ( BP_Groups_Group::check_slug( $slug ) ) { + do { + $slug = $slug . '-' . rand(); + } + while ( BP_Groups_Group::check_slug( $slug ) ); + } + + return $slug; +} + +function groups_get_slug( $group_id ) { + $group = new BP_Groups_Group( $group_id ); + return $group->slug; +} + +/*** User Actions ***************************************************************/ + +function groups_leave_group( $group_id, $user_id = 0 ) { + global $bp; + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + // Don't let single admins leave the group. + if ( count( groups_get_group_admins( $group_id ) ) < 2 ) { + if ( groups_is_user_admin( $user_id, $group_id ) ) { + bp_core_add_message( __( 'As the only Admin, you cannot leave the group.', 'buddypress' ), 'error' ); + return false; + } + } + + $membership = new BP_Groups_Member( $user_id, $group_id ); + + // This is exactly the same as deleting an invite, just is_confirmed = 1 NOT 0. + if ( !groups_uninvite_user( $user_id, $group_id ) ) + return false; + + // Modify group member count + groups_update_groupmeta( $group_id, 'total_member_count', (int) groups_get_groupmeta( $group_id, 'total_member_count') - 1 ); + + // Modify user's group memberhip count + bp_update_user_meta( $user_id, 'total_group_count', (int) bp_get_user_meta( $user_id, 'total_group_count', true ) - 1 ); + + /** + * If the user joined this group less than five minutes ago, remove the + * joined_group activity so users cannot flood the activity stream by + * joining/leaving the group in quick succession. + */ + if ( bp_is_active( 'activity' ) && gmmktime() <= strtotime( '+5 minutes', (int)strtotime( $membership->date_modified ) ) ) + bp_activity_delete( array( 'component' => $bp->groups->id, 'type' => 'joined_group', 'user_id' => $user_id, 'item_id' => $group_id ) ); + + bp_core_add_message( __( 'You successfully left the group.', 'buddypress' ) ); + + do_action( 'groups_leave_group', $group_id, $user_id ); + + return true; +} + +function groups_join_group( $group_id, $user_id = 0 ) { + global $bp; + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + // Check if the user has an outstanding invite, is so delete it. + if ( groups_check_user_has_invite( $user_id, $group_id ) ) + groups_delete_invite( $user_id, $group_id ); + + // Check if the user has an outstanding request, is so delete it. + if ( groups_check_for_membership_request( $user_id, $group_id ) ) + groups_delete_membership_request( $user_id, $group_id ); + + // User is already a member, just return true + if ( groups_is_user_member( $user_id, $group_id ) ) + return true; + + $new_member = new BP_Groups_Member; + $new_member->group_id = $group_id; + $new_member->user_id = $user_id; + $new_member->inviter_id = 0; + $new_member->is_admin = 0; + $new_member->user_title = ''; + $new_member->date_modified = bp_core_current_time(); + $new_member->is_confirmed = 1; + + if ( !$new_member->save() ) + return false; + + if ( !isset( $bp->groups->current_group ) || !$bp->groups->current_group || $group_id != $bp->groups->current_group->id ) + $group = new BP_Groups_Group( $group_id ); + else + $group = $bp->groups->current_group; + + // Record this in activity streams + groups_record_activity( array( + 'action' => apply_filters( 'groups_activity_joined_group', sprintf( __( '%1$s joined the group %2$s', 'buddypress'), bp_core_get_userlink( $user_id ), '<a href="' . bp_get_group_permalink( $group ) . '">' . esc_attr( bp_get_group_name( $group ) ) . '</a>' ) ), + 'type' => 'joined_group', + 'item_id' => $group_id, + 'user_id' => $user_id + ) ); + + // Modify group meta + groups_update_groupmeta( $group_id, 'total_member_count', (int) groups_get_groupmeta( $group_id, 'total_member_count') + 1 ); + groups_update_groupmeta( $group_id, 'last_activity', bp_core_current_time() ); + + do_action( 'groups_join_group', $group_id, $user_id ); + + return true; +} + +/*** General Group Functions ****************************************************/ + +function groups_check_group_exists( $group_id ) { + return BP_Groups_Group::group_exists( $group_id ); +} + +function groups_get_group_admins( $group_id ) { + return BP_Groups_Member::get_group_administrator_ids( $group_id ); +} + +function groups_get_group_mods( $group_id ) { + return BP_Groups_Member::get_group_moderator_ids( $group_id ); +} + +function groups_get_group_members( $group_id, $limit = false, $page = false ) { + return BP_Groups_Member::get_all_for_group( $group_id, $limit, $page ); +} + +function groups_get_total_member_count( $group_id ) { + return BP_Groups_Group::get_total_member_count( $group_id ); +} + +/*** Group Fetching, Filtering & Searching *************************************/ + +function groups_get_groups( $args = '' ) { + global $bp; + + $defaults = array( + 'type' => 'active', // active, newest, alphabetical, random, popular, most-forum-topics or most-forum-posts + 'user_id' => false, // Pass a user_id to limit to only groups that this user is a member of + 'include' => false, // Only include these specific groups (group_ids) + 'exclude' => false, // Do not include these specific groups (group_ids) + 'search_terms' => false, // Limit to groups that match these search terms + 'show_hidden' => false, // Show hidden groups to non-admins + + 'per_page' => 20, // The number of results to return per page + 'page' => 1, // The page to return if limiting per page + 'populate_extras' => true, // Fetch meta such as is_banned and is_member + ); + + $params = wp_parse_args( $args, $defaults ); + extract( $params, EXTR_SKIP ); + + $groups = BP_Groups_Group::get( $type, $per_page, $page, $user_id, $search_terms, $include, $populate_extras, $exclude, $show_hidden ); + + return apply_filters_ref_array( 'groups_get_groups', array( &$groups, &$params ) ); +} + +function groups_get_total_group_count() { + if ( !$count = wp_cache_get( 'bp_total_group_count', 'bp' ) ) { + $count = BP_Groups_Group::get_total_group_count(); + wp_cache_set( 'bp_total_group_count', $count, 'bp' ); + } + + return $count; +} + +function groups_get_user_groups( $user_id = 0, $pag_num = 0, $pag_page = 0 ) { + global $bp; + + if ( !$user_id ) + $user_id = $bp->displayed_user->id; + + return BP_Groups_Member::get_group_ids( $user_id, $pag_num, $pag_page ); +} + +function groups_total_groups_for_user( $user_id = 0 ) { + global $bp; + + if ( !$user_id ) + $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + + if ( !$count = wp_cache_get( 'bp_total_groups_for_user_' . $user_id, 'bp' ) ) { + $count = BP_Groups_Member::total_group_count( $user_id ); + wp_cache_set( 'bp_total_groups_for_user_' . $user_id, $count, 'bp' ); + } + + return $count; +} + +/** + * Returns the group object for the group currently being viewed + * + * @package BuddyPress + * @since 1.5 + * + * @return obj The current group object + */ +function groups_get_current_group() { + global $bp; + + $current_group = isset( $bp->groups->current_group ) ? $bp->groups->current_group : false; + + return apply_filters( 'groups_get_current_group', $current_group ); +} + +/*** Group Avatars *************************************************************/ + +function groups_avatar_upload_dir( $group_id = 0 ) { + global $bp; + + if ( !$group_id ) + $group_id = $bp->groups->current_group->id; + + $path = bp_core_avatar_upload_path() . '/group-avatars/' . $group_id; + $newbdir = $path; + + if ( !file_exists( $path ) ) + @wp_mkdir_p( $path ); + + $newurl = bp_core_avatar_url() . '/group-avatars/' . $group_id; + $newburl = $newurl; + $newsubdir = '/group-avatars/' . $group_id; + + return apply_filters( 'groups_avatar_upload_dir', array( 'path' => $path, 'url' => $newurl, 'subdir' => $newsubdir, 'basedir' => $newbdir, 'baseurl' => $newburl, 'error' => false ) ); +} + +/*** Group Member Status Checks ************************************************/ + +function groups_is_user_admin( $user_id, $group_id ) { + return BP_Groups_Member::check_is_admin( $user_id, $group_id ); +} + +function groups_is_user_mod( $user_id, $group_id ) { + return BP_Groups_Member::check_is_mod( $user_id, $group_id ); +} + +function groups_is_user_member( $user_id, $group_id ) { + return BP_Groups_Member::check_is_member( $user_id, $group_id ); +} + +function groups_is_user_banned( $user_id, $group_id ) { + return BP_Groups_Member::check_is_banned( $user_id, $group_id ); +} + +/** + * Is the specified user the creator of the group? + * + * @param int $user_id + * @param int $group_id + * @since 1.2.6 + * @uses BP_Groups_Member + */ +function groups_is_user_creator( $user_id, $group_id ) { + return BP_Groups_Member::check_is_creator( $user_id, $group_id ); +} + +/*** Group Activity Posting **************************************************/ + +function groups_post_update( $args = '' ) { + global $bp; + + $defaults = array( + 'content' => false, + 'user_id' => $bp->loggedin_user->id, + 'group_id' => 0 + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( empty( $group_id ) && !empty( $bp->groups->current_group->id ) ) + $group_id = $bp->groups->current_group->id; + + if ( empty( $content ) || !strlen( trim( $content ) ) || empty( $user_id ) || empty( $group_id ) ) + return false; + + $bp->groups->current_group = new BP_Groups_Group( $group_id ); + + // Be sure the user is a member of the group before posting. + if ( !is_super_admin() && !groups_is_user_member( $user_id, $group_id ) ) + return false; + + // Record this in activity streams + $activity_action = sprintf( __( '%1$s posted an update in the group %2$s', 'buddypress'), bp_core_get_userlink( $user_id ), '<a href="' . bp_get_group_permalink( $bp->groups->current_group ) . '">' . esc_attr( $bp->groups->current_group->name ) . '</a>' ); + $activity_content = $content; + + $activity_id = groups_record_activity( array( + 'user_id' => $user_id, + 'action' => apply_filters( 'groups_activity_new_update_action', $activity_action ), + 'content' => apply_filters( 'groups_activity_new_update_content', $activity_content ), + 'type' => 'activity_update', + 'item_id' => $group_id + ) ); + + groups_update_groupmeta( $group_id, 'last_activity', bp_core_current_time() ); + do_action( 'bp_groups_posted_update', $content, $user_id, $group_id, $activity_id ); + + return $activity_id; +} + +/*** Group Invitations *********************************************************/ + +function groups_get_invites_for_user( $user_id = 0, $limit = false, $page = false, $exclude = false ) { + global $bp; + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + return BP_Groups_Member::get_invites( $user_id, $limit, $page, $exclude ); +} + +function groups_invite_user( $args = '' ) { + global $bp; + + $defaults = array( + 'user_id' => false, + 'group_id' => false, + 'inviter_id' => $bp->loggedin_user->id, + 'date_modified' => bp_core_current_time(), + 'is_confirmed' => 0 + ); + + $args = wp_parse_args( $args, $defaults ); + extract( $args, EXTR_SKIP ); + + if ( !$user_id || !$group_id ) + return false; + + if ( !groups_is_user_member( $user_id, $group_id ) && !groups_check_user_has_invite( $user_id, $group_id, 'all' ) ) { + $invite = new BP_Groups_Member; + $invite->group_id = $group_id; + $invite->user_id = $user_id; + $invite->date_modified = $date_modified; + $invite->inviter_id = $inviter_id; + $invite->is_confirmed = $is_confirmed; + + if ( !$invite->save() ) + return false; + + do_action( 'groups_invite_user', $args ); + } + + return true; +} + +function groups_uninvite_user( $user_id, $group_id ) { + global $bp; + + if ( !BP_Groups_Member::delete( $user_id, $group_id ) ) + return false; + + do_action( 'groups_uninvite_user', $group_id, $user_id ); + + return true; +} + +function groups_accept_invite( $user_id, $group_id ) { + global $bp; + + if ( groups_is_user_member( $user_id, $group_id ) ) + return false; + + $member = new BP_Groups_Member( $user_id, $group_id ); + $member->accept_invite(); + + if ( !$member->save() ) + return false; + + // Remove request to join + if ( $member->check_for_membership_request( $user_id, $group_id ) ) + $member->delete_request( $user_id, $group_id ); + + // Modify group meta + groups_update_groupmeta( $group_id, 'total_member_count', (int) groups_get_groupmeta( $group_id, 'total_member_count') + 1 ); + groups_update_groupmeta( $group_id, 'last_activity', bp_core_current_time() ); + + bp_core_delete_notifications_by_item_id( $user_id, $group_id, $bp->groups->id, 'group_invite' ); + + do_action( 'groups_accept_invite', $user_id, $group_id ); + return true; +} + +function groups_reject_invite( $user_id, $group_id ) { + if ( !BP_Groups_Member::delete( $user_id, $group_id ) ) + return false; + + do_action( 'groups_reject_invite', $user_id, $group_id ); + + return true; +} + +function groups_delete_invite( $user_id, $group_id ) { + global $bp; + + $delete = BP_Groups_Member::delete_invite( $user_id, $group_id ); + + if ( $delete ) + bp_core_delete_notifications_by_item_id( $user_id, $group_id, $bp->groups->id, 'group_invite' ); + + return $delete; +} + +function groups_send_invites( $user_id, $group_id ) { + global $bp; + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + // Send friend invites. + $invited_users = groups_get_invites_for_group( $user_id, $group_id ); + $group = new BP_Groups_Group( $group_id ); + + for ( $i = 0, $count = count( $invited_users ); $i < $count; ++$i ) { + $member = new BP_Groups_Member( $invited_users[$i], $group_id ); + + // Send the actual invite + groups_notification_group_invites( $group, $member, $user_id ); + + $member->invite_sent = 1; + $member->save(); + } + + do_action( 'groups_send_invites', $group_id, $invited_users ); +} + +function groups_get_invites_for_group( $user_id, $group_id ) { + return BP_Groups_Group::get_invites( $user_id, $group_id ); +} + +/** + * Check to see whether a user has already been invited to a group + * + * By default, the function checks for invitations that have been sent. Entering 'all' as the $type + * parameter will return unsent invitations as well (useful to make sure AJAX requests are not + * duplicated) + * + * @package BuddyPress Groups + * + * @param int $user_id Potential group member + * @param int $group_id Potential group + * @param str $type Optional. Use 'sent' to check for sent invites, 'all' to check for all + * @return bool Returns true if an invitation is found + */ +function groups_check_user_has_invite( $user_id, $group_id, $type = 'sent' ) { + return BP_Groups_Member::check_has_invite( $user_id, $group_id, $type ); +} + +function groups_delete_all_group_invites( $group_id ) { + return BP_Groups_Group::delete_all_invites( $group_id ); +} + +/*** Group Promotion & Banning *************************************************/ + +function groups_promote_member( $user_id, $group_id, $status ) { + global $bp; + + if ( !$bp->is_item_admin ) + return false; + + $member = new BP_Groups_Member( $user_id, $group_id ); + + do_action( 'groups_premote_member', $group_id, $user_id, $status ); + + return $member->promote( $status ); +} + +function groups_demote_member( $user_id, $group_id ) { + global $bp; + + $member = new BP_Groups_Member( $user_id, $group_id ); + + do_action( 'groups_demote_member', $group_id, $user_id ); + + return $member->demote(); +} + +function groups_ban_member( $user_id, $group_id ) { + global $bp; + + if ( !$bp->is_item_admin ) + return false; + + $member = new BP_Groups_Member( $user_id, $group_id ); + + do_action( 'groups_ban_member', $group_id, $user_id ); + + return $member->ban(); +} + +function groups_unban_member( $user_id, $group_id ) { + global $bp; + + if ( !$bp->is_item_admin ) + return false; + + $member = new BP_Groups_Member( $user_id, $group_id ); + + do_action( 'groups_unban_member', $group_id, $user_id ); + + return $member->unban(); +} + +/*** Group Removal *******************************************************/ + +function groups_remove_member( $user_id, $group_id ) { + global $bp; + + if ( !$bp->is_item_admin ) + return false; + + $member = new BP_Groups_Member( $user_id, $group_id ); + + do_action( 'groups_remove_member', $group_id, $user_id ); + + return $member->remove(); +} + +/*** Group Membership ****************************************************/ + +function groups_send_membership_request( $requesting_user_id, $group_id ) { + global $bp; + + // Prevent duplicate requests + if ( groups_check_for_membership_request( $requesting_user_id, $group_id ) ) + return false; + + // Check if the user is already a member or is banned + if ( groups_is_user_member( $requesting_user_id, $group_id ) || groups_is_user_banned( $requesting_user_id, $group_id ) ) + return false; + + $requesting_user = new BP_Groups_Member; + $requesting_user->group_id = $group_id; + $requesting_user->user_id = $requesting_user_id; + $requesting_user->inviter_id = 0; + $requesting_user->is_admin = 0; + $requesting_user->user_title = ''; + $requesting_user->date_modified = bp_core_current_time(); + $requesting_user->is_confirmed = 0; + $requesting_user->comments = isset( $_POST['group-request-membership-comments'] ) ? $_POST['group-request-membership-comments'] : ''; + + if ( $requesting_user->save() ) { + $admins = groups_get_group_admins( $group_id ); + + // Saved okay, now send the email notification + for ( $i = 0, $count = count( $admins ); $i < $count; ++$i ) + groups_notification_new_membership_request( $requesting_user_id, $admins[$i]->user_id, $group_id, $requesting_user->id ); + + do_action( 'groups_membership_requested', $requesting_user_id, $admins, $group_id, $requesting_user->id ); + + return true; + } + + return false; +} + +function groups_accept_membership_request( $membership_id, $user_id = 0, $group_id = 0 ) { + global $bp; + + if ( $user_id && $group_id ) + $membership = new BP_Groups_Member( $user_id, $group_id ); + else + $membership = new BP_Groups_Member( false, false, $membership_id ); + + $membership->accept_request(); + + if ( !$membership->save() ) + return false; + + // Check if the user has an outstanding invite, if so delete it. + if ( groups_check_user_has_invite( $membership->user_id, $membership->group_id ) ) + groups_delete_invite( $membership->user_id, $membership->group_id ); + + // Modify group member count + groups_update_groupmeta( $membership->group_id, 'total_member_count', (int) groups_get_groupmeta( $membership->group_id, 'total_member_count') + 1 ); + + // Record this in activity streams + $group = new BP_Groups_Group( $membership->group_id ); + + groups_record_activity( array( + 'action' => apply_filters_ref_array( 'groups_activity_membership_accepted_action', array( sprintf( __( '%1$s joined the group %2$s', 'buddypress'), bp_core_get_userlink( $membership->user_id ), '<a href="' . bp_get_group_permalink( $group ) . '">' . esc_attr( $group->name ) . '</a>' ), $membership->user_id, &$group ) ), + 'type' => 'joined_group', + 'item_id' => $membership->group_id, + 'user_id' => $membership->user_id + ) ); + + // Send a notification to the user. + groups_notification_membership_request_completed( $membership->user_id, $membership->group_id, true ); + + do_action( 'groups_membership_accepted', $membership->user_id, $membership->group_id ); + + return true; +} + +function groups_reject_membership_request( $membership_id, $user_id = 0, $group_id = 0 ) { + if ( !$membership = groups_delete_membership_request( $membership_id, $user_id, $group_id ) ) + return false; + + // Send a notification to the user. + groups_notification_membership_request_completed( $membership->user_id, $membership->group_id, false ); + + do_action( 'groups_membership_rejected', $membership->user_id, $membership->group_id ); + + return true; +} + +function groups_delete_membership_request( $membership_id, $user_id = 0, $group_id = 0 ) { + if ( $user_id && $group_id ) + $membership = new BP_Groups_Member( $user_id, $group_id ); + else + $membership = new BP_Groups_Member( false, false, $membership_id ); + + if ( !BP_Groups_Member::delete( $membership->user_id, $membership->group_id ) ) + return false; + + return $membership; +} + +function groups_check_for_membership_request( $user_id, $group_id ) { + return BP_Groups_Member::check_for_membership_request( $user_id, $group_id ); +} + +function groups_accept_all_pending_membership_requests( $group_id ) { + $user_ids = BP_Groups_Member::get_all_membership_request_user_ids( $group_id ); + + if ( !$user_ids ) + return false; + + foreach ( (array) $user_ids as $user_id ) + groups_accept_membership_request( false, $user_id, $group_id ); + + do_action( 'groups_accept_all_pending_membership_requests', $group_id ); + + return true; +} + +/*** Group Meta ****************************************************/ + +function groups_delete_groupmeta( $group_id, $meta_key = false, $meta_value = false ) { + global $wpdb, $bp; + + if ( !is_numeric( $group_id ) ) + return false; + + $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); + + if ( is_array( $meta_value ) || is_object( $meta_value ) ) + $meta_value = serialize($meta_value); + + $meta_value = trim( $meta_value ); + + if ( !$meta_key ) + $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d", $group_id ) ); + else if ( $meta_value ) + $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d AND meta_key = %s AND meta_value = %s", $group_id, $meta_key, $meta_value ) ); + else + $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d AND meta_key = %s", $group_id, $meta_key ) ); + + // Delete the cached object + wp_cache_delete( 'bp_groups_groupmeta_' . $group_id . '_' . $meta_key, 'bp' ); + + return true; +} + +function groups_get_groupmeta( $group_id, $meta_key = '') { + global $wpdb, $bp; + + $group_id = (int) $group_id; + + if ( !$group_id ) + return false; + + if ( !empty($meta_key) ) { + $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); + + if ( !$metas = wp_cache_get( 'bp_groups_groupmeta_' . $group_id . '_' . $meta_key, 'bp' ) ) { + $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d AND meta_key = %s", $group_id, $meta_key) ); + wp_cache_set( 'bp_groups_groupmeta_' . $group_id . '_' . $meta_key, $metas, 'bp' ); + } + } else { + $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d", $group_id) ); + } + + if ( empty( $metas ) ) { + if ( empty( $meta_key ) ) + return array(); + else + return ''; + } + + $metas = array_map( 'maybe_unserialize', (array)$metas ); + + if ( 1 == count( $metas ) ) + return $metas[0]; + else + return $metas; +} + +function groups_update_groupmeta( $group_id, $meta_key, $meta_value ) { + global $wpdb, $bp; + + if ( !is_numeric( $group_id ) ) + return false; + + $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); + + if ( is_string( $meta_value ) ) + $meta_value = stripslashes( $wpdb->escape( $meta_value ) ); + + $meta_value = maybe_serialize( $meta_value ); + + if ( empty( $meta_value ) ) + return groups_delete_groupmeta( $group_id, $meta_key ); + + $cur = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM " . $bp->groups->table_name_groupmeta . " WHERE group_id = %d AND meta_key = %s", $group_id, $meta_key ) ); + + if ( !$cur ) + $wpdb->query( $wpdb->prepare( "INSERT INTO " . $bp->groups->table_name_groupmeta . " ( group_id, meta_key, meta_value ) VALUES ( %d, %s, %s )", $group_id, $meta_key, $meta_value ) ); + else if ( $cur->meta_value != $meta_value ) + $wpdb->query( $wpdb->prepare( "UPDATE " . $bp->groups->table_name_groupmeta . " SET meta_value = %s WHERE group_id = %d AND meta_key = %s", $meta_value, $group_id, $meta_key ) ); + else + return false; + + // Update the cached object and recache + wp_cache_set( 'bp_groups_groupmeta_' . $group_id . '_' . $meta_key, $meta_value, 'bp' ); + + return true; +} + +/*** Group Cleanup Functions ****************************************************/ + +function groups_remove_data_for_user( $user_id ) { + BP_Groups_Member::delete_all_for_user( $user_id ); + + do_action( 'groups_remove_data_for_user', $user_id ); +} +add_action( 'wpmu_delete_user', 'groups_remove_data_for_user' ); +add_action( 'delete_user', 'groups_remove_data_for_user' ); +add_action( 'bp_make_spam_user', 'groups_remove_data_for_user' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-loader.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-loader.php new file mode 100644 index 0000000..80243d0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-loader.php @@ -0,0 +1,471 @@ +<?php +/** + * BuddyPress Groups Loader + * + * A groups component, for users to group themselves together. Includes a + * robust sub-component API that allows Groups to be extended. + * Comes preconfigured with an activity stream, discussion forums, and settings. + * + * @package BuddyPress + * @subpackage Groups Core + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +class BP_Groups_Component extends BP_Component { + + /** + * Start the groups component creation process + * + * @since 1.5 + */ + function __construct() { + parent::start( + 'groups', + __( 'User Groups', 'buddypress' ), + BP_PLUGIN_DIR + ); + } + + /** + * Include files + */ + function includes() { + $includes = array( + 'cache', + 'forums', + 'actions', + 'filters', + 'screens', + 'classes', + 'widgets', + 'activity', + 'template', + 'buddybar', + 'adminbar', + 'functions', + 'notifications' + ); + parent::includes( $includes ); + } + + /** + * Setup globals + * + * The BP_GROUPS_SLUG constant is deprecated, and only used here for + * backwards compatibility. + * + * @since 1.5 + * @global obj $bp + */ + function setup_globals() { + global $bp; + + // Define a slug, if necessary + if ( !defined( 'BP_GROUPS_SLUG' ) ) + define( 'BP_GROUPS_SLUG', $this->id ); + + // Global tables for messaging component + $global_tables = array( + 'table_name' => $bp->table_prefix . 'bp_groups', + 'table_name_members' => $bp->table_prefix . 'bp_groups_members', + 'table_name_groupmeta' => $bp->table_prefix . 'bp_groups_groupmeta' + ); + + // All globals for messaging component. + // Note that global_tables is included in this array. + $globals = array( + 'path' => BP_PLUGIN_DIR, + 'slug' => BP_GROUPS_SLUG, + 'root_slug' => isset( $bp->pages->groups->slug ) ? $bp->pages->groups->slug : BP_GROUPS_SLUG, + 'has_directory' => true, + 'notification_callback' => 'groups_format_notifications', + 'search_string' => __( 'Search Groups...', 'buddypress' ), + 'global_tables' => $global_tables + ); + + parent::setup_globals( $globals ); + + /** Single Group Globals **********************************************/ + + // Are we viewing a single group? + if ( bp_is_groups_component() && $group_id = BP_Groups_Group::group_exists( bp_current_action() ) ) { + + $bp->is_single_item = true; + $current_group_class = apply_filters( 'bp_groups_current_group_class', 'BP_Groups_Group' ); + $this->current_group = apply_filters( 'bp_groups_current_group_object', new $current_group_class( $group_id ) ); + + // When in a single group, the first action is bumped down one because of the + // group name, so we need to adjust this and set the group name to current_item. + $bp->current_item = bp_current_action(); + $bp->current_action = bp_action_variable( 0 ); + array_shift( $bp->action_variables ); + + // Using "item" not "group" for generic support in other components. + if ( is_super_admin() ) + bp_update_is_item_admin( true, 'groups' ); + else + bp_update_is_item_admin( groups_is_user_admin( $bp->loggedin_user->id, $this->current_group->id ), 'groups' ); + + // If the user is not an admin, check if they are a moderator + if ( !bp_is_item_admin() ) + bp_update_is_item_mod ( groups_is_user_mod ( $bp->loggedin_user->id, $this->current_group->id ), 'groups' ); + + // Is the logged in user a member of the group? + if ( ( is_user_logged_in() && groups_is_user_member( $bp->loggedin_user->id, $this->current_group->id ) ) ) + $this->current_group->is_user_member = true; + else + $this->current_group->is_user_member = false; + + // Should this group be visible to the logged in user? + if ( 'public' == $this->current_group->status || $this->current_group->is_user_member ) + $this->current_group->is_visible = true; + else + $this->current_group->is_visible = false; + + // If this is a private or hidden group, does the user have access? + if ( 'private' == $this->current_group->status || 'hidden' == $this->current_group->status ) { + if ( $this->current_group->is_user_member && is_user_logged_in() || is_super_admin() ) + $this->current_group->user_has_access = true; + else + $this->current_group->user_has_access = false; + } else { + $this->current_group->user_has_access = true; + } + + // Set current_group to 0 to prevent debug errors + } else { + $this->current_group = 0; + } + + // Illegal group names/slugs + $this->forbidden_names = apply_filters( 'groups_forbidden_names', array( + 'my-groups', + 'create', + 'invites', + 'send-invites', + 'forum', + 'delete', + 'add', + 'admin', + 'request-membership', + 'members', + 'settings', + 'avatar', + $this->slug, + $this->root_slug, + ) ); + + // If the user was attempting to access a group, but no group by that name was found, 404 + if ( bp_is_groups_component() && empty( $this->current_group ) && !empty( $bp->current_action ) && !in_array( $bp->current_action, $this->forbidden_names ) ) { + bp_do_404(); + return; + } + + // Group access control + if ( bp_is_groups_component() && !empty( $this->current_group ) && !empty( $bp->current_action ) && !$this->current_group->user_has_access ) { + if ( is_user_logged_in() ) { + // Off-limits to this user. Throw an error and redirect to the + // group's home page + bp_core_no_access( array( + 'message' => __( 'You do not have access to this group.', 'buddypress' ), + 'root' => bp_get_group_permalink( $bp->groups->current_group ), + 'redirect' => false + ) ); + } else { + // Allow the user to log in + bp_core_no_access(); + } + } + + // Preconfigured group creation steps + $this->group_creation_steps = apply_filters( 'groups_create_group_steps', array( + 'group-details' => array( + 'name' => __( 'Details', 'buddypress' ), + 'position' => 0 + ), + 'group-settings' => array( + 'name' => __( 'Settings', 'buddypress' ), + 'position' => 10 + ) + ) ); + + // If avatar uploads are not disabled, add avatar option + if ( !(int)bp_get_option( 'bp-disable-avatar-uploads' ) ) { + $this->group_creation_steps['group-avatar'] = array( + 'name' => __( 'Avatar', 'buddypress' ), + 'position' => 20 + ); + } + + // If friends component is active, add invitations + if ( bp_is_active( 'friends' ) ) { + $this->group_creation_steps['group-invites'] = array( + 'name' => __( 'Invites', 'buddypress' ), + 'position' => 30 + ); + } + + // Groups statuses + $this->valid_status = apply_filters( 'groups_valid_status', array( + 'public', + 'private', + 'hidden' + ) ); + + // Auto join group when non group member performs group activity + $this->auto_join = defined( 'BP_DISABLE_AUTO_GROUP_JOIN' ) && BP_DISABLE_AUTO_GROUP_JOIN ? false : true; + } + + /** + * Setup BuddyBar navigation + * + * @global obj $bp + */ + function setup_nav() { + global $bp; + + // Add 'Groups' to the main navigation + $main_nav = array( + 'name' => sprintf( __( 'Groups <span>%d</span>', 'buddypress' ), groups_total_groups_for_user() ), + 'slug' => $this->slug, + 'position' => 70, + 'screen_function' => 'groups_screen_my_groups', + 'default_subnav_slug' => 'my-groups', + 'item_css_id' => $this->id + ); + + $groups_link = trailingslashit( $bp->loggedin_user->domain . $this->slug ); + + // Add the My Groups nav item + $sub_nav[] = array( + 'name' => __( 'Memberships', 'buddypress' ), + 'slug' => 'my-groups', + 'parent_url' => $groups_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'groups_screen_my_groups', + 'position' => 10, + 'item_css_id' => 'groups-my-groups' + ); + + // Add the Group Invites nav item + $sub_nav[] = array( + 'name' => __( 'Invitations', 'buddypress' ), + 'slug' => 'invites', + 'parent_url' => $groups_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'groups_screen_group_invites', + 'user_has_access' => bp_is_my_profile(), + 'position' => 30 + ); + + parent::setup_nav( $main_nav, $sub_nav ); + + if ( bp_is_groups_component() && bp_is_single_item() ) { + + unset( $main_nav ); unset( $sub_nav ); + + // Add 'Groups' to the main navigation + $main_nav = array( + 'name' => __( 'Memberships', 'buddypress' ), + 'slug' => $this->current_group->slug, + 'position' => -1, // Do not show in BuddyBar + 'screen_function' => 'groups_screen_group_home', + 'default_subnav_slug' => 'home', + 'item_css_id' => $this->id + ); + + $group_link = trailingslashit( bp_get_root_domain() . '/' . $this->root_slug . '/' . $this->current_group->slug ); + + // Add the "Home" subnav item, as this will always be present + $sub_nav[] = array( + 'name' => _x( 'Home', 'Group home navigation title', 'buddypress' ), + 'slug' => 'home', + 'parent_url' => $group_link, + 'parent_slug' => $this->current_group->slug, + 'screen_function' => 'groups_screen_group_home', + 'position' => 10, + 'item_css_id' => 'home' + ); + + // If the user is a group mod or more, then show the group admin nav item + if ( bp_is_item_admin() || bp_is_item_mod() ) { + $sub_nav[] = array( + 'name' => __( 'Admin', 'buddypress' ), + 'slug' => 'admin', + 'parent_url' => $group_link, + 'parent_slug' => $this->current_group->slug, + 'screen_function' => 'groups_screen_group_admin', + 'position' => 20, + 'user_has_access' => ( $bp->is_item_admin + (int)$bp->is_item_mod ), + 'item_css_id' => 'admin' + ); + } + + // If this is a private group, and the user is not a member, show a "Request Membership" nav item. + if ( is_user_logged_in() && + !is_super_admin() && + !$this->current_group->is_user_member && + !groups_check_for_membership_request( $bp->loggedin_user->id, $this->current_group->id ) && + $this->current_group->status == 'private' + ) { + $sub_nav[] = array( + 'name' => __( 'Request Membership', 'buddypress' ), + 'slug' => 'request-membership', + 'parent_url' => $group_link, + 'parent_slug' => $this->current_group->slug, + 'screen_function' => 'groups_screen_group_request_membership', + 'position' => 30 + ); + } + + // Forums are enabled and turned on + if ( $this->current_group->enable_forum && bp_is_active( 'forums' ) ) { + $sub_nav[] = array( + 'name' => __( 'Forum', 'buddypress' ), + 'slug' => 'forum', + 'parent_url' => $group_link, + 'parent_slug' => $this->current_group->slug, + 'screen_function' => 'groups_screen_group_forum', + 'position' => 40, + 'user_has_access' => $this->current_group->user_has_access, + 'item_css_id' => 'forums' + ); + } + + $sub_nav[] = array( + 'name' => sprintf( __( 'Members <span>%s</span>', 'buddypress' ), number_format( $this->current_group->total_member_count ) ), + 'slug' => 'members', + 'parent_url' => $group_link, + 'parent_slug' => $this->current_group->slug, + 'screen_function' => 'groups_screen_group_members', + 'position' => 60, + 'user_has_access' => $this->current_group->user_has_access, + 'item_css_id' => 'members' + ); + + if ( bp_is_active( 'friends' ) && bp_groups_user_can_send_invites() ) { + $sub_nav[] = array( + 'name' => __( 'Send Invites', 'buddypress' ), + 'slug' => 'send-invites', + 'parent_url' => $group_link, + 'parent_slug' => $this->current_group->slug, + 'screen_function' => 'groups_screen_group_invite', + 'item_css_id' => 'invite', + 'position' => 70, + 'user_has_access' => $this->current_group->user_has_access + ); + } + + parent::setup_nav( $main_nav, $sub_nav ); + } + + if ( isset( $this->current_group->user_has_access ) ) + do_action( 'groups_setup_nav', $this->current_group->user_has_access ); + else + do_action( 'groups_setup_nav'); + } + + /** + * Set up the admin bar + * + * @global obj $bp + */ + function setup_admin_bar() { + global $bp; + + // Prevent debug notices + $wp_admin_nav = array(); + + // Menus for logged in user + if ( is_user_logged_in() ) { + + // Setup the logged in user variables + $user_domain = $bp->loggedin_user->domain; + $groups_link = trailingslashit( $user_domain . $this->slug ); + + // Pending group invites + $count = groups_get_invites_for_user( $bp->loggedin_user->id ); + + if ( !empty( $count->total ) ) { + $title = sprintf( __( 'Groups <span class="count">%s</span>', 'buddypress' ), $count->total ); + $pending = sprintf( __( 'Pending Invites <span class="count">%s</span>', 'buddypress' ), $count->total ); + } else { + $title = __( 'Groups', 'buddypress' ); + $pending = __( 'No Pending Invites', 'buddypress' ); + } + + // Add the "My Account" sub menus + $wp_admin_nav[] = array( + 'parent' => $bp->my_account_menu_id, + 'id' => 'my-account-' . $this->id, + 'title' => $title, + 'href' => trailingslashit( $groups_link ) + ); + + // My Groups + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-memberships', + 'title' => __( 'Memberships', 'buddypress' ), + 'href' => trailingslashit( $groups_link ) + ); + + // Invitations + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-invites', + 'title' => $pending, + 'href' => trailingslashit( $groups_link . 'invites' ) + ); + } + + parent::setup_admin_bar( $wp_admin_nav ); + } + + /** + * Sets up the title for pages and <title> + * + * @global obj $bp + */ + function setup_title() { + global $bp; + + if ( bp_is_groups_component() ) { + + if ( bp_is_my_profile() && !bp_is_single_item() ) { + + $bp->bp_options_title = __( 'Memberships', 'buddypress' ); + + } else if ( !bp_is_my_profile() && !bp_is_single_item() ) { + + $bp->bp_options_avatar = bp_core_fetch_avatar( array( + 'item_id' => $bp->displayed_user->id, + 'type' => 'thumb' + ) ); + $bp->bp_options_title = $bp->displayed_user->fullname; + + // We are viewing a single group, so set up the + // group navigation menu using the $this->current_group global. + } else if ( bp_is_single_item() ) { + $bp->bp_options_title = $this->current_group->name; + $bp->bp_options_avatar = bp_core_fetch_avatar( array( + 'item_id' => $this->current_group->id, + 'object' => 'group', + 'type' => 'thumb', + 'avatar_dir' => 'group-avatars', + 'alt' => __( 'Group Avatar', 'buddypress' ) + ) ); + if ( empty( $bp->bp_options_avatar ) ) + $bp->bp_options_avatar = '<img src="' . esc_attr( $group->avatar_full ) . '" class="avatar" alt="' . esc_attr( $group->name ) . '" />'; + } + } + + parent::setup_title(); + } +} +// Create the groups component +$bp->groups = new BP_Groups_Component(); + +?> diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-notifications.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-notifications.php new file mode 100644 index 0000000..75ef3e8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-notifications.php @@ -0,0 +1,257 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function groups_notification_group_updated( $group_id ) { + global $bp; + + $group = new BP_Groups_Group( $group_id ); + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + $subject = '[' . $sitename . '] ' . __( 'Group Details Updated', 'buddypress' ); + + $user_ids = BP_Groups_Member::get_group_member_ids( $group->id ); + foreach ( (array)$user_ids as $user_id ) { + if ( 'no' == bp_get_user_meta( $user_id, 'notification_groups_group_updated', true ) ) continue; + + $ud = bp_core_get_core_userdata( $user_id ); + + // Set up and send the message + $to = $ud->user_email; + + $group_link = site_url( bp_get_groups_root_slug(). '/' . $group->slug ); + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $user_id ) . $settings_slug . '/notifications/'; + + $message = sprintf( __( +'Group details for the group "%1$s" were updated: + +To view the group: %2$s + +--------------------- +', 'buddypress' ), $group->name, $group_link ); + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'groups_notification_group_updated_to', $to ); + $subject = apply_filters_ref_array( 'groups_notification_group_updated_subject', array( $subject, &$group ) ); + $message = apply_filters_ref_array( 'groups_notification_group_updated_message', array( $message, &$group, $group_link, $settings_link ) ); + + wp_mail( $to, $subject, $message ); + + unset( $message, $to ); + } + + do_action( 'bp_groups_sent_updated_email', $user_ids, $subject, '', $group_id ); +} + +function groups_notification_new_membership_request( $requesting_user_id, $admin_id, $group_id, $membership_id ) { + global $bp; + + bp_core_add_notification( $requesting_user_id, $admin_id, 'groups', 'new_membership_request', $group_id ); + + if ( 'no' == bp_get_user_meta( $admin_id, 'notification_groups_membership_request', true ) ) + return false; + + $requesting_user_name = bp_core_get_user_displayname( $requesting_user_id ); + $group = new BP_Groups_Group( $group_id ); + + $ud = bp_core_get_core_userdata($admin_id); + $requesting_ud = bp_core_get_core_userdata($requesting_user_id); + + $group_requests = bp_get_group_permalink( $group ) . 'admin/membership-requests'; + $profile_link = bp_core_get_user_domain( $requesting_user_id ); + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $requesting_user_id ) . $settings_slug . '/notifications/'; + + // Set up and send the message + $to = $ud->user_email; + $sitename = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ); + $subject = '[' . $sitename . '] ' . sprintf( __( 'Membership request for group: %s', 'buddypress' ), $group->name ); + +$message = sprintf( __( +'%1$s wants to join the group "%2$s". + +Because you are the administrator of this group, you must either accept or reject the membership request. + +To view all pending membership requests for this group, please visit: +%3$s + +To view %4$s\'s profile: %5$s + +--------------------- +', 'buddypress' ), $requesting_user_name, $group->name, $group_requests, $requesting_user_name, $profile_link ); + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'groups_notification_new_membership_request_to', $to ); + $subject = apply_filters_ref_array( 'groups_notification_new_membership_request_subject', array( $subject, &$group ) ); + $message = apply_filters_ref_array( 'groups_notification_new_membership_request_message', array( $message, &$group, $requesting_user_name, $profile_link, $group_requests, $settings_link ) ); + + wp_mail( $to, $subject, $message ); + + do_action( 'bp_groups_sent_membership_request_email', $admin_id, $subject, $message, $requesting_user_id, $group_id, $membership_id ); +} + +function groups_notification_membership_request_completed( $requesting_user_id, $group_id, $accepted = true ) { + global $bp; + + // Post a screen notification first. + if ( $accepted ) + bp_core_add_notification( $group_id, $requesting_user_id, 'groups', 'membership_request_accepted' ); + else + bp_core_add_notification( $group_id, $requesting_user_id, 'groups', 'membership_request_rejected' ); + + if ( 'no' == bp_get_user_meta( $requesting_user_id, 'notification_membership_request_completed', true ) ) + return false; + + $group = new BP_Groups_Group( $group_id ); + + $ud = bp_core_get_core_userdata($requesting_user_id); + + $group_link = bp_get_group_permalink( $group ); + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $requesting_user_id ) . $settings_slug . '/notifications/'; + + // Set up and send the message + $to = $ud->user_email; + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + + if ( $accepted ) { + $subject = '[' . $sitename . '] ' . sprintf( __( 'Membership request for group "%s" accepted', 'buddypress' ), $group->name ); + $message = sprintf( __( +'Your membership request for the group "%1$s" has been accepted. + +To view the group please login and visit: %2$s + +--------------------- +', 'buddypress' ), $group->name, $group_link ); + + } else { + $subject = '[' . $sitename . '] ' . sprintf( __( 'Membership request for group "%s" rejected', 'buddypress' ), $group->name ); + $message = sprintf( __( +'Your membership request for the group "%1$s" has been rejected. + +To submit another request please log in and visit: %2$s + +--------------------- +', 'buddypress' ), $group->name, $group_link ); + } + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'groups_notification_membership_request_completed_to', $to ); + $subject = apply_filters_ref_array( 'groups_notification_membership_request_completed_subject', array( $subject, &$group ) ); + $message = apply_filters_ref_array( 'groups_notification_membership_request_completed_message', array( $message, &$group, $group_link, $settings_link ) ); + + wp_mail( $to, $subject, $message ); + + do_action( 'bp_groups_sent_membership_approved_email', $requesting_user_id, $subject, $message, $group_id ); +} + +function groups_notification_promoted_member( $user_id, $group_id ) { + global $bp; + + if ( groups_is_user_admin( $user_id, $group_id ) ) { + $promoted_to = __( 'an administrator', 'buddypress' ); + $type = 'member_promoted_to_admin'; + } else { + $promoted_to = __( 'a moderator', 'buddypress' ); + $type = 'member_promoted_to_mod'; + } + + // Post a screen notification first. + bp_core_add_notification( $group_id, $user_id, 'groups', $type ); + + if ( 'no' == bp_get_user_meta( $user_id, 'notification_groups_admin_promotion', true ) ) + return false; + + $group = new BP_Groups_Group( $group_id ); + $ud = bp_core_get_core_userdata($user_id); + $group_link = bp_get_group_permalink( $group ); + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $user_id ) . $settings_slug . '/notifications/'; + + // Set up and send the message + $to = $ud->user_email; + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + $subject = '[' . $sitename . '] ' . sprintf( __( 'You have been promoted in the group: "%s"', 'buddypress' ), $group->name ); + + $message = sprintf( __( +'You have been promoted to %1$s for the group: "%2$s". + +To view the group please visit: %3$s + +--------------------- +', 'buddypress' ), $promoted_to, $group->name, $group_link ); + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'groups_notification_promoted_member_to', $to ); + $subject = apply_filters_ref_array( 'groups_notification_promoted_member_subject', array( $subject, &$group ) ); + $message = apply_filters_ref_array( 'groups_notification_promoted_member_message', array( $message, &$group, $promoted_to, $group_link, $settings_link ) ); + + wp_mail( $to, $subject, $message ); + + do_action( 'bp_groups_sent_promoted_email', $user_id, $subject, $message, $group_id ); +} +add_action( 'groups_promoted_member', 'groups_notification_promoted_member', 10, 2 ); + +function groups_notification_group_invites( &$group, &$member, $inviter_user_id ) { + global $bp; + + $inviter_ud = bp_core_get_core_userdata( $inviter_user_id ); + $inviter_name = bp_core_get_userlink( $inviter_user_id, true, false, true ); + $inviter_link = bp_core_get_user_domain( $inviter_user_id ); + + $group_link = bp_get_group_permalink( $group ); + + if ( !$member->invite_sent ) { + $invited_user_id = $member->user_id; + + // Post a screen notification first. + bp_core_add_notification( $group->id, $invited_user_id, 'groups', 'group_invite' ); + + if ( 'no' == bp_get_user_meta( $invited_user_id, 'notification_groups_invite', true ) ) + return false; + + $invited_ud = bp_core_get_core_userdata($invited_user_id); + + $settings_link = bp_core_get_user_domain( $invited_user_id ) . bp_get_settings_slug() . '/notifications/'; + $invited_link = bp_core_get_user_domain( $invited_user_id ); + $invites_link = $invited_link . bp_get_groups_slug() . '/invites'; + + // Set up and send the message + $to = $invited_ud->user_email; + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + $subject = '[' . $sitename . '] ' . sprintf( __( 'You have an invitation to the group: "%s"', 'buddypress' ), $group->name ); + + $message = sprintf( __( +'One of your friends %1$s has invited you to the group: "%2$s". + +To view your group invites visit: %3$s + +To view the group visit: %4$s + +To view %5$s\'s profile visit: %6$s + +--------------------- +', 'buddypress' ), $inviter_name, $group->name, $invites_link, $group_link, $inviter_name, $inviter_link ); + + $message .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + /* Send the message */ + $to = apply_filters( 'groups_notification_group_invites_to', $to ); + $subject = apply_filters_ref_array( 'groups_notification_group_invites_subject', array( $subject, &$group ) ); + $message = apply_filters_ref_array( 'groups_notification_group_invites_message', array( $message, &$group, $inviter_name, $inviter_link, $invites_link, $group_link, $settings_link ) ); + + wp_mail( $to, $subject, $message ); + + do_action( 'bp_groups_sent_invited_email', $invited_user_id, $subject, $message, $group ); + } +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-screens.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-screens.php new file mode 100644 index 0000000..aaf7980 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-screens.php @@ -0,0 +1,871 @@ +<?php +/******************************************************************************** + * Screen Functions + * + * Screen functions are the controllers of BuddyPress. They will execute when their + * specific URL is caught. They will first save or manipulate data using business + * functions, then pass on the user to a template file. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function groups_directory_groups_setup() { + if ( bp_is_groups_component() && !bp_current_action() && !bp_current_item() ) { + bp_update_is_directory( true, 'groups' ); + + do_action( 'groups_directory_groups_setup' ); + + bp_core_load_template( apply_filters( 'groups_template_directory_groups', 'groups/index' ) ); + } +} +add_action( 'bp_screens', 'groups_directory_groups_setup', 2 ); + +function groups_screen_my_groups() { + global $bp; + + // Delete group request notifications for the user + if ( isset( $_GET['n'] ) ) { + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->groups->id, 'membership_request_accepted' ); + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->groups->id, 'membership_request_rejected' ); + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->groups->id, 'member_promoted_to_mod' ); + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->groups->id, 'member_promoted_to_admin' ); + } + + do_action( 'groups_screen_my_groups' ); + + bp_core_load_template( apply_filters( 'groups_template_my_groups', 'members/single/home' ) ); +} + +function groups_screen_group_invites() { + $group_id = (int)bp_action_variable( 1 ); + + if ( bp_is_action_variable( 'accept' ) && is_numeric( $group_id ) ) { + // Check the nonce + if ( !check_admin_referer( 'groups_accept_invite' ) ) + return false; + + if ( !groups_accept_invite( bp_loggedin_user_id(), $group_id ) ) { + bp_core_add_message( __('Group invite could not be accepted', 'buddypress'), 'error' ); + } else { + bp_core_add_message( __('Group invite accepted', 'buddypress') ); + + // Record this in activity streams + $group = new BP_Groups_Group( $group_id ); + + groups_record_activity( array( + 'action' => apply_filters_ref_array( 'groups_activity_accepted_invite_action', array( sprintf( __( '%1$s joined the group %2$s', 'buddypress'), bp_core_get_userlink( bp_loggedin_user_id() ), '<a href="' . bp_get_group_permalink( $group ) . '">' . esc_attr( $group->name ) . '</a>' ), bp_loggedin_user_id(), &$group ) ), + 'type' => 'joined_group', + 'item_id' => $group->id + ) ); + } + + bp_core_redirect( bp_loggedin_user_domain() . bp_get_groups_slug() . '/' . bp_current_action() ); + + } else if ( bp_is_action_variable( 'reject' ) && is_numeric( $group_id ) ) { + // Check the nonce + if ( !check_admin_referer( 'groups_reject_invite' ) ) + return false; + + if ( !groups_reject_invite( bp_loggedin_user_id(), $group_id ) ) + bp_core_add_message( __('Group invite could not be rejected', 'buddypress'), 'error' ); + else + bp_core_add_message( __('Group invite rejected', 'buddypress') ); + + bp_core_redirect( bp_loggedin_user_domain() . bp_get_groups_slug() . '/' . bp_current_action() ); + } + + // Remove notifications + bp_core_delete_notifications_by_type( bp_loggedin_user_id(), 'groups', 'group_invite' ); + + do_action( 'groups_screen_group_invites', $group_id ); + + bp_core_load_template( apply_filters( 'groups_template_group_invites', 'members/single/home' ) ); +} + +function groups_screen_group_home() { + global $bp; + + if ( bp_is_single_item() ) { + if ( isset( $_GET['n'] ) ) { + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->groups->id, 'membership_request_accepted' ); + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->groups->id, 'membership_request_rejected' ); + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->groups->id, 'member_promoted_to_mod' ); + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->groups->id, 'member_promoted_to_admin' ); + } + + do_action( 'groups_screen_group_home' ); + + bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); + } +} + +/** + * This screen function handles actions related to group forums + * + * @package BuddyPress + */ +function groups_screen_group_forum() { + global $bp; + + if ( !bp_is_active( 'forums' ) || !bp_forums_is_installed_correctly() ) + return false; + + if ( bp_action_variable( 0 ) && !bp_is_action_variable( 'topic', 0 ) ) { + bp_do_404(); + return; + } + + if ( !$bp->groups->current_group->user_has_access ) { + bp_core_no_access(); + return; + } + + if ( bp_is_single_item() ) { + + // Fetch the details we need + $topic_slug = (string)bp_action_variable( 1 ); + $topic_id = bp_forums_get_topic_id_from_slug( $topic_slug ); + $forum_id = groups_get_groupmeta( $bp->groups->current_group->id, 'forum_id' ); + $user_is_banned = false; + + if ( !is_super_admin() && groups_is_user_banned( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) + $user_is_banned = true; + + if ( !empty( $topic_slug ) && !empty( $topic_id ) ) { + + // Posting a reply + if ( !$user_is_banned && !bp_action_variable( 2 ) && isset( $_POST['submit_reply'] ) ) { + // Check the nonce + check_admin_referer( 'bp_forums_new_reply' ); + + // Auto join this user if they are not yet a member of this group + if ( bp_groups_auto_join() && !is_super_admin() && 'public' == $bp->groups->current_group->status && !groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) + groups_join_group( $bp->groups->current_group->id, $bp->loggedin_user->id ); + + $topic_page = isset( $_GET['topic_page'] ) ? $_GET['topic_page'] : false; + + if ( !$post_id = groups_new_group_forum_post( $_POST['reply_text'], $topic_id, $topic_page ) ) + bp_core_add_message( __( 'There was an error when replying to that topic', 'buddypress'), 'error' ); + else + bp_core_add_message( __( 'Your reply was posted successfully', 'buddypress') ); + + if ( isset( $_SERVER['QUERY_STRING'] ) ) + $query_vars = '?' . $_SERVER['QUERY_STRING']; + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'forum/topic/' . $topic_slug . '/' . $query_vars . '#post-' . $post_id ); + } + + // Sticky a topic + else if ( bp_is_action_variable( 'stick', 2 ) && ( isset( $bp->is_item_admin ) || isset( $bp->is_item_mod ) ) ) { + // Check the nonce + check_admin_referer( 'bp_forums_stick_topic' ); + + if ( !bp_forums_sticky_topic( array( 'topic_id' => $topic_id ) ) ) + bp_core_add_message( __( 'There was an error when making that topic a sticky', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'The topic was made sticky successfully', 'buddypress' ) ); + + do_action( 'groups_stick_forum_topic', $topic_id ); + bp_core_redirect( wp_get_referer() ); + } + + // Un-Sticky a topic + else if ( bp_is_action_variable( 'unstick', 2 ) && ( isset( $bp->is_item_admin ) || isset( $bp->is_item_mod ) ) ) { + // Check the nonce + check_admin_referer( 'bp_forums_unstick_topic' ); + + if ( !bp_forums_sticky_topic( array( 'topic_id' => $topic_id, 'mode' => 'unstick' ) ) ) + bp_core_add_message( __( 'There was an error when unsticking that topic', 'buddypress'), 'error' ); + else + bp_core_add_message( __( 'The topic was unstuck successfully', 'buddypress') ); + + do_action( 'groups_unstick_forum_topic', $topic_id ); + bp_core_redirect( wp_get_referer() ); + } + + // Close a topic + else if ( bp_is_action_variable( 'close', 2 ) && ( isset( $bp->is_item_admin ) || isset( $bp->is_item_mod ) ) ) { + // Check the nonce + check_admin_referer( 'bp_forums_close_topic' ); + + if ( !bp_forums_openclose_topic( array( 'topic_id' => $topic_id ) ) ) + bp_core_add_message( __( 'There was an error when closing that topic', 'buddypress'), 'error' ); + else + bp_core_add_message( __( 'The topic was closed successfully', 'buddypress') ); + + do_action( 'groups_close_forum_topic', $topic_id ); + bp_core_redirect( wp_get_referer() ); + } + + // Open a topic + else if ( bp_is_action_variable( 'open', 2 ) && ( isset( $bp->is_item_admin ) || isset( $bp->is_item_mod ) ) ) { + // Check the nonce + check_admin_referer( 'bp_forums_open_topic' ); + + if ( !bp_forums_openclose_topic( array( 'topic_id' => $topic_id, 'mode' => 'open' ) ) ) + bp_core_add_message( __( 'There was an error when opening that topic', 'buddypress'), 'error' ); + else + bp_core_add_message( __( 'The topic was opened successfully', 'buddypress') ); + + do_action( 'groups_open_forum_topic', $topic_id ); + bp_core_redirect( wp_get_referer() ); + } + + // Delete a topic + else if ( empty( $user_is_banned ) && bp_is_action_variable( 'delete', 2 ) && !bp_action_variable( 3 ) ) { + // Fetch the topic + $topic = bp_forums_get_topic_details( $topic_id ); + + /* Check the logged in user can delete this topic */ + if ( !$bp->is_item_admin && !$bp->is_item_mod && (int)$bp->loggedin_user->id != (int)$topic->topic_poster ) + bp_core_redirect( wp_get_referer() ); + + // Check the nonce + check_admin_referer( 'bp_forums_delete_topic' ); + + do_action( 'groups_before_delete_forum_topic', $topic_id ); + + if ( !groups_delete_group_forum_topic( $topic_id ) ) + bp_core_add_message( __( 'There was an error deleting the topic', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'The topic was deleted successfully', 'buddypress' ) ); + + do_action( 'groups_delete_forum_topic', $topic_id ); + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'forum/' ); + } + + // Editing a topic + else if ( empty( $user_is_banned ) && bp_is_action_variable( 'edit', 2 ) && !bp_action_variable( 3 ) ) { + // Fetch the topic + $topic = bp_forums_get_topic_details( $topic_id ); + + // Check the logged in user can edit this topic + if ( !$bp->is_item_admin && !$bp->is_item_mod && (int)$bp->loggedin_user->id != (int)$topic->topic_poster ) + bp_core_redirect( wp_get_referer() ); + + if ( isset( $_POST['save_changes'] ) ) { + // Check the nonce + check_admin_referer( 'bp_forums_edit_topic' ); + + $topic_tags = !empty( $_POST['topic_tags'] ) ? $_POST['topic_tags'] : false; + + if ( !groups_update_group_forum_topic( $topic_id, $_POST['topic_title'], $_POST['topic_text'], $topic_tags ) ) + bp_core_add_message( __( 'There was an error when editing that topic', 'buddypress'), 'error' ); + else + bp_core_add_message( __( 'The topic was edited successfully', 'buddypress') ); + + do_action( 'groups_edit_forum_topic', $topic_id ); + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'forum/topic/' . $topic_slug . '/' ); + } + + bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/home' ) ); + } + + // Delete a post + else if ( empty( $user_is_banned ) && bp_is_action_variable( 'delete', 2 ) && $post_id = bp_action_variable( 4 ) ) { + // Fetch the post + $post = bp_forums_get_post( $post_id ); + + // Check the logged in user can edit this topic + if ( !$bp->is_item_admin && !$bp->is_item_mod && (int)$bp->loggedin_user->id != (int)$post->poster_id ) + bp_core_redirect( wp_get_referer() ); + + // Check the nonce + check_admin_referer( 'bp_forums_delete_post' ); + + do_action( 'groups_before_delete_forum_post', $post_id ); + + if ( !groups_delete_group_forum_post( $post_id ) ) + bp_core_add_message( __( 'There was an error deleting that post', 'buddypress'), 'error' ); + else + bp_core_add_message( __( 'The post was deleted successfully', 'buddypress') ); + + do_action( 'groups_delete_forum_post', $post_id ); + bp_core_redirect( wp_get_referer() ); + } + + // Editing a post + else if ( empty( $user_is_banned ) && bp_is_action_variable( 'edit', 2 ) && $post_id = bp_action_variable( 4 ) ) { + // Fetch the post + $post = bp_forums_get_post( $post_id ); + + // Check the logged in user can edit this topic + if ( !$bp->is_item_admin && !$bp->is_item_mod && (int)$bp->loggedin_user->id != (int)$post->poster_id ) + bp_core_redirect( wp_get_referer() ); + + if ( isset( $_POST['save_changes'] ) ) { + // Check the nonce + check_admin_referer( 'bp_forums_edit_post' ); + + $topic_page = isset( $_GET['topic_page'] ) ? $_GET['topic_page'] : false; + + if ( !$post_id = groups_update_group_forum_post( $post_id, $_POST['post_text'], $topic_id, $topic_page ) ) + bp_core_add_message( __( 'There was an error when editing that post', 'buddypress'), 'error' ); + else + bp_core_add_message( __( 'The post was edited successfully', 'buddypress') ); + + if ( $_SERVER['QUERY_STRING'] ) + $query_vars = '?' . $_SERVER['QUERY_STRING']; + + do_action( 'groups_edit_forum_post', $post_id ); + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic_slug . '/' . $query_vars . '#post-' . $post_id ); + } + + bp_core_load_template( apply_filters( 'groups_template_group_forum_topic_edit', 'groups/single/home' ) ); + } + + // Standard topic display + else { + if ( !empty( $user_is_banned ) ) + bp_core_add_message( __( "You have been banned from this group.", 'buddypress' ) ); + + bp_core_load_template( apply_filters( 'groups_template_group_forum_topic', 'groups/single/home' ) ); + } + + // Forum topic does not exist + } elseif ( !empty( $topic_slug ) && empty( $topic_id ) ) { + bp_do_404(); + return; + + } else { + // Posting a topic + if ( isset( $_POST['submit_topic'] ) && bp_is_active( 'forums' ) ) { + // Check the nonce + check_admin_referer( 'bp_forums_new_topic' ); + + if ( $user_is_banned ) { + $error_message = __( "You have been banned from this group.", 'buddypress' ); + + } elseif ( bp_groups_auto_join() && !is_super_admin() && 'public' == $bp->groups->current_group->status && !groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) { + // Auto join this user if they are not yet a member of this group + groups_join_group( $bp->groups->current_group->id, $bp->loggedin_user->id ); + } + + if ( empty( $_POST['topic_title'] ) ) + $error_message = __( 'Please provide a title for your forum topic.', 'buddypress' ); + else if ( empty( $_POST['topic_text'] ) ) + $error_message = __( 'Forum posts cannot be empty. Please enter some text.', 'buddypress' ); + + if ( empty( $forum_id ) ) + $error_message = __( 'This group does not have a forum setup yet.', 'buddypress' ); + + if ( isset( $error_message ) ) { + bp_core_add_message( $error_message, 'error' ); + $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum'; + } else { + if ( !$topic = groups_new_group_forum_topic( $_POST['topic_title'], $_POST['topic_text'], $_POST['topic_tags'], $forum_id ) ) { + bp_core_add_message( __( 'There was an error when creating the topic', 'buddypress'), 'error' ); + $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum'; + } else { + bp_core_add_message( __( 'The topic was created successfully', 'buddypress') ); + $redirect = bp_get_group_permalink( $bp->groups->current_group ) . 'forum/topic/' . $topic->topic_slug . '/'; + } + } + + bp_core_redirect( $redirect ); + } + + do_action( 'groups_screen_group_forum', $topic_id, $forum_id ); + + bp_core_load_template( apply_filters( 'groups_template_group_forum', 'groups/single/home' ) ); + } + } +} + +function groups_screen_group_members() { + global $bp; + + if ( $bp->is_single_item ) { + // Refresh the group member count meta + groups_update_groupmeta( $bp->groups->current_group->id, 'total_member_count', groups_get_total_member_count( $bp->groups->current_group->id ) ); + + do_action( 'groups_screen_group_members', $bp->groups->current_group->id ); + bp_core_load_template( apply_filters( 'groups_template_group_members', 'groups/single/home' ) ); + } +} + +function groups_screen_group_invite() { + global $bp; + + if ( $bp->is_single_item ) { + if ( bp_is_action_variable( 'send', 0 ) ) { + + if ( !check_admin_referer( 'groups_send_invites', '_wpnonce_send_invites' ) ) + return false; + + if ( !empty( $_POST['friends'] ) ) { + foreach( (array)$_POST['friends'] as $friend ) { + groups_invite_user( array( 'user_id' => $friend, 'group_id' => $bp->groups->current_group->id ) ); + } + } + + // Send the invites. + groups_send_invites( $bp->loggedin_user->id, $bp->groups->current_group->id ); + bp_core_add_message( __('Group invites sent.', 'buddypress') ); + do_action( 'groups_screen_group_invite', $bp->groups->current_group->id ); + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + + } elseif ( !bp_action_variable( 0 ) ) { + // Show send invite page + bp_core_load_template( apply_filters( 'groups_template_group_invite', 'groups/single/home' ) ); + + } else { + bp_do_404(); + } + } +} + +function groups_screen_group_request_membership() { + global $bp; + + if ( !is_user_logged_in() ) + return false; + + if ( 'private' == $bp->groups->current_group->status ) { + // If the user has submitted a request, send it. + if ( isset( $_POST['group-request-send']) ) { + // Check the nonce + if ( !check_admin_referer( 'groups_request_membership' ) ) + return false; + + if ( !groups_send_membership_request( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) { + bp_core_add_message( __( 'There was an error sending your group membership request, please try again.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Your membership request was sent to the group administrator successfully. You will be notified when the group administrator responds to your request.', 'buddypress' ) ); + } + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + } + + do_action( 'groups_screen_group_request_membership', $bp->groups->current_group->id ); + + bp_core_load_template( apply_filters( 'groups_template_group_request_membership', 'groups/single/home' ) ); + } +} + +function groups_screen_group_activity_permalink() { + global $bp; + + if ( !bp_is_groups_component() || !bp_is_active( 'activity' ) || ( bp_is_active( 'activity' ) && !bp_is_current_action( bp_get_activity_slug() ) ) || !bp_action_variable( 0 ) ) + return false; + + $bp->is_single_item = true; + + bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); +} +add_action( 'bp_screens', 'groups_screen_group_activity_permalink' ); + +function groups_screen_group_admin() { + if ( !bp_is_groups_component() || !bp_is_current_action( 'admin' ) ) + return false; + + if ( bp_action_variables() ) + return false; + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/edit-details/' ); +} + +function groups_screen_group_admin_edit_details() { + global $bp; + + if ( bp_is_groups_component() && bp_is_action_variable( 'edit-details', 0 ) ) { + + if ( $bp->is_item_admin || $bp->is_item_mod ) { + + // If the edit form has been submitted, save the edited details + if ( isset( $_POST['save'] ) ) { + // Check the nonce + if ( !check_admin_referer( 'groups_edit_group_details' ) ) + return false; + + if ( !groups_edit_base_group_details( $_POST['group-id'], $_POST['group-name'], $_POST['group-desc'], (int)$_POST['group-notify-members'] ) ) { + bp_core_add_message( __( 'There was an error updating group details, please try again.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Group details were successfully updated.', 'buddypress' ) ); + } + + do_action( 'groups_group_details_edited', $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/edit-details/' ); + } + + do_action( 'groups_screen_group_admin_edit_details', $bp->groups->current_group->id ); + + bp_core_load_template( apply_filters( 'groups_template_group_admin', 'groups/single/home' ) ); + } + } +} +add_action( 'bp_screens', 'groups_screen_group_admin_edit_details' ); + +function groups_screen_group_admin_settings() { + global $bp; + + if ( bp_is_groups_component() && bp_is_action_variable( 'group-settings', 0 ) ) { + + if ( !$bp->is_item_admin ) + return false; + + // If the edit form has been submitted, save the edited details + if ( isset( $_POST['save'] ) ) { + $enable_forum = ( isset($_POST['group-show-forum'] ) ) ? 1 : 0; + + // Checked against a whitelist for security + $allowed_status = apply_filters( 'groups_allowed_status', array( 'public', 'private', 'hidden' ) ); + $status = ( in_array( $_POST['group-status'], (array)$allowed_status ) ) ? $_POST['group-status'] : 'public'; + + // Checked against a whitelist for security + $allowed_invite_status = apply_filters( 'groups_allowed_invite_status', array( 'members', 'mods', 'admins' ) ); + $invite_status = in_array( $_POST['group-invite-status'], (array)$allowed_invite_status ) ? $_POST['group-invite-status'] : 'members'; + + // Check the nonce + if ( !check_admin_referer( 'groups_edit_group_settings' ) ) + return false; + + if ( !groups_edit_group_settings( $_POST['group-id'], $enable_forum, $status, $invite_status ) ) { + bp_core_add_message( __( 'There was an error updating group settings, please try again.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Group settings were successfully updated.', 'buddypress' ) ); + } + + do_action( 'groups_group_settings_edited', $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/group-settings/' ); + } + + do_action( 'groups_screen_group_admin_settings', $bp->groups->current_group->id ); + + bp_core_load_template( apply_filters( 'groups_template_group_admin_settings', 'groups/single/home' ) ); + } +} +add_action( 'bp_screens', 'groups_screen_group_admin_settings' ); + +function groups_screen_group_admin_avatar() { + global $bp; + + if ( bp_is_groups_component() && bp_is_action_variable( 'group-avatar', 0 ) ) { + + // If the logged-in user doesn't have permission or if avatar uploads are disabled, then stop here + if ( !$bp->is_item_admin || (int)bp_get_option( 'bp-disable-avatar-uploads' ) ) + return false; + + // If the group admin has deleted the admin avatar + if ( bp_is_action_variable( 'delete', 1 ) ) { + + // Check the nonce + check_admin_referer( 'bp_group_avatar_delete' ); + + if ( bp_core_delete_existing_avatar( array( 'item_id' => $bp->groups->current_group->id, 'object' => 'group' ) ) ) + bp_core_add_message( __( 'Your avatar was deleted successfully!', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was a problem deleting that avatar, please try again.', 'buddypress' ), 'error' ); + + } + + $bp->avatar_admin->step = 'upload-image'; + + if ( !empty( $_FILES ) ) { + + // Check the nonce + check_admin_referer( 'bp_avatar_upload' ); + + // Pass the file to the avatar upload handler + if ( bp_core_avatar_handle_upload( $_FILES, 'groups_avatar_upload_dir' ) ) { + $bp->avatar_admin->step = 'crop-image'; + + // Make sure we include the jQuery jCrop file for image cropping + add_action( 'wp_print_scripts', 'bp_core_add_jquery_cropper' ); + } + + } + + // If the image cropping is done, crop the image and save a full/thumb version + if ( isset( $_POST['avatar-crop-submit'] ) ) { + + // Check the nonce + check_admin_referer( 'bp_avatar_cropstore' ); + + if ( !bp_core_avatar_handle_crop( array( 'object' => 'group', 'avatar_dir' => 'group-avatars', 'item_id' => $bp->groups->current_group->id, 'original_file' => $_POST['image_src'], 'crop_x' => $_POST['x'], 'crop_y' => $_POST['y'], 'crop_w' => $_POST['w'], 'crop_h' => $_POST['h'] ) ) ) + bp_core_add_message( __( 'There was a problem cropping the avatar, please try uploading it again', 'buddypress' ) ); + else + bp_core_add_message( __( 'The new group avatar was uploaded successfully!', 'buddypress' ) ); + + } + + do_action( 'groups_screen_group_admin_avatar', $bp->groups->current_group->id ); + + bp_core_load_template( apply_filters( 'groups_template_group_admin_avatar', 'groups/single/home' ) ); + } +} +add_action( 'bp_screens', 'groups_screen_group_admin_avatar' ); + +/** + * This function handles actions related to member management on the group admin. + * + * @package BuddyPress + */ +function groups_screen_group_admin_manage_members() { + global $bp; + + if ( bp_is_groups_component() && bp_is_action_variable( 'manage-members', 0 ) ) { + + if ( !$bp->is_item_admin ) + return false; + + if ( bp_action_variable( 1 ) && bp_action_variable( 2 ) && bp_action_variable( 3 ) ) { + if ( bp_is_action_variable( 'promote', 1 ) && ( bp_is_action_variable( 'mod', 2 ) || bp_is_action_variable( 'admin', 2 ) ) && is_numeric( bp_action_variable( 3 ) ) ) { + $user_id = bp_action_variable( 3 ); + $status = bp_action_variable( 2 ); + + // Check the nonce first. + if ( !check_admin_referer( 'groups_promote_member' ) ) + return false; + + // Promote a user. + if ( !groups_promote_member( $user_id, $bp->groups->current_group->id, $status ) ) + bp_core_add_message( __( 'There was an error when promoting that user, please try again', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'User promoted successfully', 'buddypress' ) ); + + do_action( 'groups_promoted_member', $user_id, $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' ); + } + } + + if ( bp_action_variable( 1 ) && bp_action_variable( 2 ) ) { + if ( bp_is_action_variable( 'demote', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) { + $user_id = bp_action_variable( 2 ); + + // Check the nonce first. + if ( !check_admin_referer( 'groups_demote_member' ) ) + return false; + + // Stop sole admins from abandoning their group + $group_admins = groups_get_group_admins( $bp->groups->current_group->id ); + if ( 1 == count( $group_admins ) && $group_admins[0]->user_id == $user_id ) + bp_core_add_message( __( 'This group must have at least one admin', 'buddypress' ), 'error' ); + + // Demote a user. + elseif ( !groups_demote_member( $user_id, $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error when demoting that user, please try again', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'User demoted successfully', 'buddypress' ) ); + + do_action( 'groups_demoted_member', $user_id, $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' ); + } + + if ( bp_is_action_variable( 'ban', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) { + $user_id = bp_action_variable( 2 ); + + // Check the nonce first. + if ( !check_admin_referer( 'groups_ban_member' ) ) + return false; + + // Ban a user. + if ( !groups_ban_member( $user_id, $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error when banning that user, please try again', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'User banned successfully', 'buddypress' ) ); + + do_action( 'groups_banned_member', $user_id, $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' ); + } + + if ( bp_is_action_variable( 'unban', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) { + $user_id = bp_action_variable( 2 ); + + // Check the nonce first. + if ( !check_admin_referer( 'groups_unban_member' ) ) + return false; + + // Remove a ban for user. + if ( !groups_unban_member( $user_id, $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error when unbanning that user, please try again', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'User ban removed successfully', 'buddypress' ) ); + + do_action( 'groups_unbanned_member', $user_id, $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' ); + } + + if ( bp_is_action_variable( 'remove', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) { + $user_id = bp_action_variable( 2 ); + + // Check the nonce first. + if ( !check_admin_referer( 'groups_remove_member' ) ) + return false; + + // Remove a user. + if ( !groups_remove_member( $user_id, $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error removing that user from the group, please try again', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'User removed successfully', 'buddypress' ) ); + + do_action( 'groups_removed_member', $user_id, $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' ); + } + } + + do_action( 'groups_screen_group_admin_manage_members', $bp->groups->current_group->id ); + + bp_core_load_template( apply_filters( 'groups_template_group_admin_manage_members', 'groups/single/home' ) ); + } +} +add_action( 'bp_screens', 'groups_screen_group_admin_manage_members' ); + +function groups_screen_group_admin_requests() { + global $bp; + + if ( bp_is_groups_component() && bp_is_action_variable( 'membership-requests', 0 ) ) { + + if ( !$bp->is_item_admin || 'public' == $bp->groups->current_group->status ) + return false; + + // Remove any screen notifications + bp_core_delete_notifications_by_type( bp_loggedin_user_id(), $bp->groups->id, 'new_membership_request' ); + + $request_action = (string)bp_action_variable( 1 ); + $membership_id = (int)bp_action_variable( 2 ); + + if ( !empty( $request_action ) && !empty( $membership_id ) ) { + if ( 'accept' == $request_action && is_numeric( $membership_id ) ) { + + // Check the nonce first. + if ( !check_admin_referer( 'groups_accept_membership_request' ) ) + return false; + + // Accept the membership request + if ( !groups_accept_membership_request( $membership_id ) ) + bp_core_add_message( __( 'There was an error accepting the membership request, please try again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'Group membership request accepted', 'buddypress' ) ); + + } elseif ( 'reject' == $request_action && is_numeric( $membership_id ) ) { + /* Check the nonce first. */ + if ( !check_admin_referer( 'groups_reject_membership_request' ) ) + return false; + + // Reject the membership request + if ( !groups_reject_membership_request( $membership_id ) ) + bp_core_add_message( __( 'There was an error rejecting the membership request, please try again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'Group membership request rejected', 'buddypress' ) ); + } + + do_action( 'groups_group_request_managed', $bp->groups->current_group->id, $request_action, $membership_id ); + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/membership-requests/' ); + } + + do_action( 'groups_screen_group_admin_requests', $bp->groups->current_group->id ); + bp_core_load_template( apply_filters( 'groups_template_group_admin_requests', 'groups/single/home' ) ); + } +} +add_action( 'bp_screens', 'groups_screen_group_admin_requests' ); + +function groups_screen_group_admin_delete_group() { + global $bp; + + if ( bp_is_groups_component() && bp_is_action_variable( 'delete-group', 0 ) ) { + + if ( !$bp->is_item_admin && !is_super_admin() ) + return false; + + if ( isset( $_REQUEST['delete-group-button'] ) && isset( $_REQUEST['delete-group-understand'] ) ) { + // Check the nonce first. + if ( !check_admin_referer( 'groups_delete_group' ) ) + return false; + + do_action( 'groups_before_group_deleted', $bp->groups->current_group->id ); + + // Group admin has deleted the group, now do it. + if ( !groups_delete_group( $bp->groups->current_group->id ) ) { + bp_core_add_message( __( 'There was an error deleting the group, please try again.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'The group was deleted successfully', 'buddypress' ) ); + + do_action( 'groups_group_deleted', $bp->groups->current_group->id ); + + bp_core_redirect( bp_loggedin_user_domain() . bp_get_groups_slug() . '/' ); + } + + bp_core_redirect( bp_loggedin_user_domain() . bp_get_groups_slug() ); + } + + do_action( 'groups_screen_group_admin_delete_group', $bp->groups->current_group->id ); + + bp_core_load_template( apply_filters( 'groups_template_group_admin_delete_group', 'groups/single/home' ) ); + } +} +add_action( 'bp_screens', 'groups_screen_group_admin_delete_group' ); + +/** + * Renders the group settings fields on the Notification Settings page + * + * @package BuddyPress + */ +function groups_screen_notification_settings() { + global $bp; + + if ( !$group_invite = bp_get_user_meta( $bp->displayed_user->id, 'notification_groups_invite', true ) ) + $group_invite = 'yes'; + + if ( !$group_update = bp_get_user_meta( $bp->displayed_user->id, 'notification_groups_group_updated', true ) ) + $group_update = 'yes'; + + if ( !$group_promo = bp_get_user_meta( $bp->displayed_user->id, 'notification_groups_admin_promotion', true ) ) + $group_promo = 'yes'; + + if ( !$group_request = bp_get_user_meta( $bp->displayed_user->id, 'notification_groups_membership_request', true ) ) + $group_request = 'yes'; +?> + + <table class="notification-settings" id="groups-notification-settings"> + <thead> + <tr> + <th class="icon"></th> + <th class="title"><?php _e( 'Groups', 'buddypress' ) ?></th> + <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> + <th class="no"><?php _e( 'No', 'buddypress' )?></th> + </tr> + </thead> + + <tbody> + <tr id="groups-notification-settings-invitation"> + <td></td> + <td><?php _e( 'A member invites you to join a group', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_groups_invite]" value="yes" <?php checked( $group_invite, 'yes', true ) ?>/></td> + <td class="no"><input type="radio" name="notifications[notification_groups_invite]" value="no" <?php checked( $group_invite, 'no', true ) ?>/></td> + </tr> + <tr id="groups-notification-settings-info-updated"> + <td></td> + <td><?php _e( 'Group information is updated', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_groups_group_updated]" value="yes" <?php checked( $group_update, 'yes', true ) ?>/></td> + <td class="no"><input type="radio" name="notifications[notification_groups_group_updated]" value="no" <?php checked( $group_update, 'no', true ) ?>/></td> + </tr> + <tr id="groups-notification-settings-promoted"> + <td></td> + <td><?php _e( 'You are promoted to a group administrator or moderator', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_groups_admin_promotion]" value="yes" <?php checked( $group_promo, 'yes', true ) ?>/></td> + <td class="no"><input type="radio" name="notifications[notification_groups_admin_promotion]" value="no" <?php checked( $group_promo, 'no', true ) ?>/></td> + </tr> + <tr id="groups-notification-settings-request"> + <td></td> + <td><?php _e( 'A member requests to join a private group for which you are an admin', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_groups_membership_request]" value="yes" <?php checked( $group_request, 'yes', true ) ?>/></td> + <td class="no"><input type="radio" name="notifications[notification_groups_membership_request]" value="no" <?php checked( $group_request, 'no', true ) ?>/></td> + </tr> + + <?php do_action( 'groups_screen_notification_settings' ); ?> + + </tbody> + </table> + +<?php +} +add_action( 'bp_notification_settings', 'groups_screen_notification_settings' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-template.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-template.php new file mode 100644 index 0000000..eb0a253 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-template.php @@ -0,0 +1,2860 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Output the groups component slug + * + * @package BuddyPress + * @subpackage Groups Template + * @since 1.5 + * + * @uses bp_get_groups_slug() + */ +function bp_groups_slug() { + echo bp_get_groups_slug(); +} + /** + * Return the groups component slug + * + * @package BuddyPress + * @subpackage Groups Template + * @since 1.5 + */ + function bp_get_groups_slug() { + global $bp; + return apply_filters( 'bp_get_groups_slug', $bp->groups->slug ); + } + +/** + * Output the groups component root slug + * + * @package BuddyPress + * @subpackage Groups Template + * @since 1.5 + * + * @uses bp_get_groups_root_slug() + */ +function bp_groups_root_slug() { + echo bp_get_groups_root_slug(); +} + /** + * Return the groups component root slug + * + * @package BuddyPress + * @subpackage Groups Template + * @since 1.5 + */ + function bp_get_groups_root_slug() { + global $bp; + return apply_filters( 'bp_get_groups_root_slug', $bp->groups->root_slug ); + } + +/** + * Output group directory permalink + * + * @package BuddyPress + * @subpackage Groups Template + * @since 1.5 + * @uses bp_get_groups_directory_permalink() + */ +function bp_groups_directory_permalink() { + echo bp_get_groups_directory_permalink(); +} + /** + * Return group directory permalink + * + * @package BuddyPress + * @subpackage Groups Template + * @since 1.5 + * @uses apply_filters() + * @uses traisingslashit() + * @uses bp_get_root_domain() + * @uses bp_get_groups_root_slug() + * @return string + */ + function bp_get_groups_directory_permalink() { + return apply_filters( 'bp_get_groups_directory_permalink', trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() ) ); + } + +/***************************************************************************** + * Groups Template Class/Tags + **/ + +class BP_Groups_Template { + var $current_group = -1; + var $group_count; + var $groups; + var $group; + + var $in_the_loop; + + var $pag_page; + var $pag_num; + var $pag_links; + var $total_group_count; + + var $single_group = false; + + var $sort_by; + var $order; + + function bp_groups_template( $user_id, $type, $page, $per_page, $max, $slug, $search_terms, $populate_extras, $include = false, $exclude = false, $show_hidden = false ) { + $this->__construct( $user_id, $type, $page, $per_page, $max, $slug, $search_terms, $include, $populate_extras, $exclude, $show_hidden ); + } + + function __construct( $user_id, $type, $page, $per_page, $max, $slug, $search_terms, $populate_extras, $include = false, $exclude = false, $show_hidden = false ){ + + global $bp; + + $this->pag_page = isset( $_REQUEST['grpage'] ) ? intval( $_REQUEST['grpage'] ) : $page; + $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page; + + if ( $bp->loggedin_user->is_super_admin || ( is_user_logged_in() && $user_id == $bp->loggedin_user->id ) ) + $show_hidden = true; + + if ( 'invites' == $type ) { + $this->groups = groups_get_invites_for_user( $user_id, $this->pag_num, $this->pag_page, $exclude ); + } else if ( 'single-group' == $type ) { + $group = new stdClass; + $group->group_id = BP_Groups_Group::get_id_from_slug( $slug ); + $this->groups = array( $group ); + } else { + $this->groups = groups_get_groups( array( + 'type' => $type, + 'per_page' => $this->pag_num, + 'page' => $this->pag_page, + 'user_id' => $user_id, + 'search_terms' => $search_terms, + 'include' => $include, + 'exclude' => $exclude, + 'populate_extras' => $populate_extras, + 'show_hidden' => $show_hidden + ) ); + } + + if ( 'invites' == $type ) { + $this->total_group_count = (int)$this->groups['total']; + $this->group_count = (int)$this->groups['total']; + $this->groups = $this->groups['groups']; + } else if ( 'single-group' == $type ) { + $this->single_group = true; + $this->total_group_count = 1; + $this->group_count = 1; + } else { + if ( empty( $max ) || $max >= (int)$this->groups['total'] ) { + $this->total_group_count = (int)$this->groups['total']; + } else { + $this->total_group_count = (int)$max; + } + + $this->groups = $this->groups['groups']; + + if ( !empty( $max ) ) { + if ( $max >= count( $this->groups ) ) { + $this->group_count = count( $this->groups ); + } else { + $this->group_count = (int)$max; + } + } else { + $this->group_count = count( $this->groups ); + } + } + + // Build pagination links + if ( (int)$this->total_group_count && (int)$this->pag_num ) { + $this->pag_links = paginate_links( array( + 'base' => add_query_arg( array( 'grpage' => '%#%', 'num' => $this->pag_num, 's' => $search_terms, 'sortby' => $this->sort_by, 'order' => $this->order ) ), + 'format' => '', + 'total' => ceil( (int)$this->total_group_count / (int)$this->pag_num ), + 'current' => $this->pag_page, + 'prev_text' => _x( '←', 'Group pagination previous text', 'buddypress' ), + 'next_text' => _x( '→', 'Group pagination next text', 'buddypress' ), + 'mid_size' => 1 + ) ); + } + } + + function has_groups() { + if ( $this->group_count ) + return true; + + return false; + } + + function next_group() { + $this->current_group++; + $this->group = $this->groups[$this->current_group]; + + return $this->group; + } + + function rewind_groups() { + $this->current_group = -1; + if ( $this->group_count > 0 ) { + $this->group = $this->groups[0]; + } + } + + function groups() { + if ( $this->current_group + 1 < $this->group_count ) { + return true; + } elseif ( $this->current_group + 1 == $this->group_count ) { + do_action('group_loop_end'); + // Do some cleaning up after the loop + $this->rewind_groups(); + } + + $this->in_the_loop = false; + return false; + } + + function the_group() { + global $group; + + $this->in_the_loop = true; + $this->group = $this->next_group(); + + if ( $this->single_group ) + $this->group = new BP_Groups_Group( $this->group->group_id ); + + if ( 0 == $this->current_group ) // loop has just started + do_action('group_loop_start'); + } +} + +function bp_has_groups( $args = '' ) { + global $groups_template, $bp; + + /*** + * Set the defaults based on the current page. Any of these will be overridden + * if arguments are directly passed into the loop. Custom plugins should always + * pass their parameters directly to the loop. + */ + $slug = false; + $type = 'active'; + $user_id = 0; + $order = ''; + + // User filtering + if ( !empty( $bp->displayed_user->id ) ) + $user_id = $bp->displayed_user->id; + + // Type + if ( 'my-groups' == $bp->current_action ) { + if ( 'most-popular' == $order ) { + $type = 'popular'; + } elseif ( 'alphabetically' == $order ) { + $type = 'alphabetical'; + } + } elseif ( 'invites' == $bp->current_action ) { + $type = 'invites'; + } elseif ( isset( $bp->groups->current_group->slug ) && $bp->groups->current_group->slug ) { + $type = 'single-group'; + $slug = $bp->groups->current_group->slug; + } + + $defaults = array( + 'type' => $type, + 'page' => 1, + 'per_page' => 20, + 'max' => false, + 'show_hidden' => false, + + 'user_id' => $user_id, // Pass a user ID to limit to groups this user has joined + 'slug' => $slug, // Pass a group slug to only return that group + 'search_terms' => '', // Pass search terms to return only matching groups + 'include' => false, // Pass comma separated list or array of group ID's to return only these groups + 'exclude' => false, // Pass comma separated list or array of group ID's to exclude these groups + + 'populate_extras' => true // Get extra meta - is_member, is_banned + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + if ( empty( $search_terms ) ) { + if ( isset( $_REQUEST['group-filter-box'] ) && !empty( $_REQUEST['group-filter-box'] ) ) + $search_terms = $_REQUEST['group-filter-box']; + elseif ( isset( $_REQUEST['s'] ) && !empty( $_REQUEST['s'] ) ) + $search_terms = $_REQUEST['s']; + else + $search_terms = false; + } + + $groups_template = new BP_Groups_Template( (int)$user_id, $type, (int)$page, (int)$per_page, (int)$max, $slug, $search_terms, (bool)$populate_extras, $include, $exclude, $show_hidden ); + return apply_filters( 'bp_has_groups', $groups_template->has_groups(), $groups_template ); +} + +function bp_groups() { + global $groups_template; + return $groups_template->groups(); +} + +function bp_the_group() { + global $groups_template; + return $groups_template->the_group(); +} + +function bp_group_is_visible( $group = false ) { + global $bp, $groups_template; + + if ( $bp->loggedin_user->is_super_admin ) + return true; + + if ( !$group ) + $group =& $groups_template->group; + + if ( 'public' == $group->status ) { + return true; + } else { + if ( groups_is_user_member( $bp->loggedin_user->id, $group->id ) ) { + return true; + } + } + + return false; +} + +function bp_group_id() { + echo bp_get_group_id(); +} + function bp_get_group_id( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_id', $group->id ); + } + +function bp_group_name() { + echo bp_get_group_name(); +} + function bp_get_group_name( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_name', $group->name ); + } + +function bp_group_type() { + echo bp_get_group_type(); +} + function bp_get_group_type( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( 'public' == $group->status ) { + $type = __( "Public Group", "buddypress" ); + } else if ( 'hidden' == $group->status ) { + $type = __( "Hidden Group", "buddypress" ); + } else if ( 'private' == $group->status ) { + $type = __( "Private Group", "buddypress" ); + } else { + $type = ucwords( $group->status ) . ' ' . __( 'Group', 'buddypress' ); + } + + return apply_filters( 'bp_get_group_type', $type ); + } + +function bp_group_status() { + echo bp_get_group_status(); +} + function bp_get_group_status( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_status', $group->status ); + } + +function bp_group_avatar( $args = '' ) { + echo bp_get_group_avatar( $args ); +} + function bp_get_group_avatar( $args = '' ) { + global $bp, $groups_template; + + $defaults = array( + 'type' => 'full', + 'width' => false, + 'height' => false, + 'class' => 'avatar', + 'id' => false, + 'alt' => __( 'Group logo of %s', 'buddypress' ) + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + /* Fetch the avatar from the folder, if not provide backwards compat. */ + if ( !$avatar = bp_core_fetch_avatar( array( 'item_id' => $groups_template->group->id, 'object' => 'group', 'type' => $type, 'avatar_dir' => 'group-avatars', 'alt' => $alt, 'css_id' => $id, 'class' => $class, 'width' => $width, 'height' => $height ) ) ) + $avatar = '<img src="' . esc_attr( $groups_template->group->avatar_thumb ) . '" class="avatar" alt="' . esc_attr( $groups_template->group->name ) . '" />'; + + return apply_filters( 'bp_get_group_avatar', $avatar ); + } + +function bp_group_avatar_thumb() { + echo bp_get_group_avatar_thumb(); +} + function bp_get_group_avatar_thumb( $group = false ) { + return bp_get_group_avatar( 'type=thumb' ); + } + +function bp_group_avatar_mini() { + echo bp_get_group_avatar_mini(); +} + function bp_get_group_avatar_mini( $group = false ) { + return bp_get_group_avatar( 'type=thumb&width=30&height=30' ); + } + +function bp_group_last_active() { + echo bp_get_group_last_active(); +} + function bp_get_group_last_active( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + $last_active = $group->last_activity; + + if ( !$last_active ) + $last_active = groups_get_groupmeta( $group->id, 'last_activity' ); + + if ( empty( $last_active ) ) { + return __( 'not yet active', 'buddypress' ); + } else { + return apply_filters( 'bp_get_group_last_active', bp_core_time_since( $last_active ) ); + } + } + +function bp_group_permalink() { + echo bp_get_group_permalink(); +} + function bp_get_group_permalink( $group = false ) { + global $groups_template, $bp; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_permalink', bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group->slug . '/' ); + } + +function bp_group_admin_permalink() { + echo bp_get_group_admin_permalink(); +} + function bp_get_group_admin_permalink( $group = false ) { + global $groups_template, $bp; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_admin_permalink', bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group->slug . '/admin' ); + } + +function bp_group_slug() { + echo bp_get_group_slug(); +} + function bp_get_group_slug( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_slug', $group->slug ); + } + +function bp_group_description() { + echo bp_get_group_description(); +} + function bp_get_group_description( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_description', stripslashes($group->description) ); + } + +function bp_group_description_editable() { + echo bp_get_group_description_editable(); +} + function bp_get_group_description_editable( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_description_editable', $group->description ); + } + +function bp_group_description_excerpt() { + echo bp_get_group_description_excerpt(); +} + function bp_get_group_description_excerpt( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_description_excerpt', bp_create_excerpt( $group->description ) ); + } + + +function bp_group_public_status() { + echo bp_get_group_public_status(); +} + function bp_get_group_public_status( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( $group->is_public ) { + return __( 'Public', 'buddypress' ); + } else { + return __( 'Private', 'buddypress' ); + } + } + +function bp_group_is_public() { + echo bp_get_group_is_public(); +} + function bp_get_group_is_public( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_is_public', $group->is_public ); + } + +function bp_group_date_created() { + echo bp_get_group_date_created(); +} + function bp_get_group_date_created( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_date_created', bp_core_time_since( strtotime( $group->date_created ) ) ); + } + +function bp_group_is_admin() { + global $bp; + + return $bp->is_item_admin; +} + +function bp_group_is_mod() { + global $bp; + + return $bp->is_item_mod; +} + +function bp_group_list_admins( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( $group->admins ) { ?> + <ul id="group-admins"> + <?php foreach( (array)$group->admins as $admin ) { ?> + <li> + <a href="<?php echo bp_core_get_user_domain( $admin->user_id, $admin->user_nicename, $admin->user_login ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'email' => $admin->user_email, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ?></a> + </li> + <?php } ?> + </ul> + <?php } else { ?> + <span class="activity"><?php _e( 'No Admins', 'buddypress' ) ?></span> + <?php } ?> +<?php +} + +function bp_group_list_mods( $group = false ) { + global $groups_template; + + if ( empty( $group ) ) + $group =& $groups_template->group; + + if ( !empty( $group->mods ) ) : ?> + + <ul id="group-mods"> + + <?php foreach( (array)$group->mods as $mod ) { ?> + + <li> + <a href="<?php echo bp_core_get_user_domain( $mod->user_id, $mod->user_nicename, $mod->user_login ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'email' => $mod->user_email, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ?></a> + </li> + + <?php } ?> + + </ul> + +<?php else : ?> + + <span class="activity"><?php _e( 'No Mods', 'buddypress' ) ?></span> + +<?php endif; + +} + +/** + * Return a list of user_ids for a group's admins + * + * @package BuddyPress + * @since 1.5 + * + * @param obj $group (optional) The group being queried. Defaults to the current group in the loop + * @param str $format 'string' to get a comma-separated string, 'array' to get an array + * @return mixed $admin_ids A string or array of user_ids + */ +function bp_group_admin_ids( $group = false, $format = 'string' ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + $admin_ids = array(); + + if ( $group->admins ) { + foreach( $group->admins as $admin ) { + $admin_ids[] = $admin->user_id; + } + } + + if ( 'string' == $format ) + $admin_ids = implode( ',', $admin_ids ); + + return apply_filters( 'bp_group_admin_ids', $admin_ids ); +} + +/** + * Return a list of user_ids for a group's moderators + * + * @package BuddyPress + * @since 1.5 + * + * @param obj $group (optional) The group being queried. Defaults to the current group in the loop + * @param str $format 'string' to get a comma-separated string, 'array' to get an array + * @return mixed $mod_ids A string or array of user_ids + */ +function bp_group_mod_ids( $group = false, $format = 'string' ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + $mod_ids = array(); + + if ( $group->mods ) { + foreach( $group->mods as $mod ) { + $mod_ids[] = $mod->user_id; + } + } + + if ( 'string' == $format ) + $mod_ids = implode( ',', $mod_ids ); + + return apply_filters( 'bp_group_mod_ids', $mod_ids ); +} + +function bp_group_all_members_permalink() { + echo bp_get_group_all_members_permalink(); +} + function bp_get_group_all_members_permalink( $group = false ) { + global $groups_template, $bp; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_all_members_permalink', bp_get_group_permalink( $group ) . 'members' ); + } + +function bp_group_search_form() { + global $groups_template, $bp; + + $action = $bp->displayed_user->domain . bp_get_groups_slug() . '/my-groups/search/'; + $label = __('Filter Groups', 'buddypress'); + $name = 'group-filter-box'; + +?> + <form action="<?php echo $action ?>" id="group-search-form" method="post"> + <label for="<?php echo $name ?>" id="<?php echo $name ?>-label"><?php echo $label ?></label> + <input type="search" name="<?php echo $name ?>" id="<?php echo $name ?>" value="<?php echo $value ?>"<?php echo $disabled ?> /> + + <?php wp_nonce_field( 'group-filter-box', '_wpnonce_group_filter' ) ?> + </form> +<?php +} + +function bp_group_show_no_groups_message() { + global $bp; + + if ( !groups_total_groups_for_user( $bp->displayed_user->id ) ) + return true; + + return false; +} + +function bp_group_is_activity_permalink() { + + if ( !bp_is_single_item() || !bp_is_groups_component() || !bp_is_current_action( bp_get_activity_slug() ) ) + return false; + + return true; +} + +function bp_groups_pagination_links() { + echo bp_get_groups_pagination_links(); +} + function bp_get_groups_pagination_links() { + global $groups_template; + + return apply_filters( 'bp_get_groups_pagination_links', $groups_template->pag_links ); + } + +function bp_groups_pagination_count() { + echo bp_get_groups_pagination_count(); +} + function bp_get_groups_pagination_count() { + global $bp, $groups_template; + + $start_num = intval( ( $groups_template->pag_page - 1 ) * $groups_template->pag_num ) + 1; + $from_num = bp_core_number_format( $start_num ); + $to_num = bp_core_number_format( ( $start_num + ( $groups_template->pag_num - 1 ) > $groups_template->total_group_count ) ? $groups_template->total_group_count : $start_num + ( $groups_template->pag_num - 1 ) ); + $total = bp_core_number_format( $groups_template->total_group_count ); + + return apply_filters( 'bp_get_groups_pagination_count', sprintf( __( 'Viewing group %1$s to %2$s (of %3$s groups)', 'buddypress' ), $from_num, $to_num, $total ) ); + } + +function bp_groups_auto_join() { + global $bp; + + return apply_filters( 'bp_groups_auto_join', (bool)$bp->groups->auto_join ); +} + +function bp_group_total_members( $group = false ) { + echo bp_get_group_total_members( $group ); +} + function bp_get_group_total_members( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_total_members', $group->total_member_count ); + } + +function bp_group_member_count() { + echo bp_get_group_member_count(); +} + function bp_get_group_member_count() { + global $groups_template; + + if ( 1 == (int) $groups_template->group->total_member_count ) + return apply_filters( 'bp_get_group_member_count', sprintf( __( '%s member', 'buddypress' ), bp_core_number_format( $groups_template->group->total_member_count ) ) ); + else + return apply_filters( 'bp_get_group_member_count', sprintf( __( '%s members', 'buddypress' ), bp_core_number_format( $groups_template->group->total_member_count ) ) ); + } + +function bp_group_forum_permalink() { + echo bp_get_group_forum_permalink(); +} + function bp_get_group_forum_permalink( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_forum_permalink', bp_get_group_permalink( $group ) . 'forum' ); + } + +function bp_group_forum_topic_count( $args = '' ) { + echo bp_get_group_forum_topic_count( $args ); +} + function bp_get_group_forum_topic_count( $args = '' ) { + global $groups_template; + + $defaults = array( + 'showtext' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( !$forum_id = groups_get_groupmeta( $groups_template->group->id, 'forum_id' ) ) + return false; + + if ( !bp_is_active( 'forums' ) ) + return false; + + if ( !$groups_template->group->forum_counts ) + $groups_template->group->forum_counts = bp_forums_get_forum_topicpost_count( (int)$forum_id ); + + if ( (bool) $showtext ) { + if ( 1 == (int) $groups_template->group->forum_counts[0]->topics ) + $total_topics = sprintf( __( '%d topic', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->topics ); + else + $total_topics = sprintf( __( '%d topics', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->topics ); + } else { + $total_topics = (int) $groups_template->group->forum_counts[0]->topics; + } + + return apply_filters( 'bp_get_group_forum_topic_count', $total_topics, (bool)$showtext ); + } + +function bp_group_forum_post_count( $args = '' ) { + echo bp_get_group_forum_post_count( $args ); +} + function bp_get_group_forum_post_count( $args = '' ) { + global $groups_template; + + $defaults = array( + 'showtext' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( !$forum_id = groups_get_groupmeta( $groups_template->group->id, 'forum_id' ) ) + return false; + + if ( !bp_is_active( 'forums' ) ) + return false; + + if ( !$groups_template->group->forum_counts ) + $groups_template->group->forum_counts = bp_forums_get_forum_topicpost_count( (int)$forum_id ); + + if ( (bool) $showtext ) { + if ( 1 == (int) $groups_template->group->forum_counts[0]->posts ) + $total_posts = sprintf( __( '%d post', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->posts ); + else + $total_posts = sprintf( __( '%d posts', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->posts ); + } else { + $total_posts = (int) $groups_template->group->forum_counts[0]->posts; + } + + return apply_filters( 'bp_get_group_forum_post_count', $total_posts, (bool)$showtext ); + } + +function bp_group_is_forum_enabled( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( bp_is_active( 'forums' ) ) { + if ( bp_forums_is_installed_correctly() ) { + if ( $group->enable_forum ) + return true; + + return false; + } else { + return false; + } + } + + return false; +} + +function bp_group_show_forum_setting( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( $group->enable_forum ) + echo ' checked="checked"'; +} + +function bp_group_show_status_setting( $setting, $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( $setting == $group->status ) + echo ' checked="checked"'; +} + +/** + * Get the 'checked' value, if needed, for a given invite_status on the group create/admin screens + * + * @package BuddyPress + * @subpackage Groups Template + * @since 1.5 + * + * @param str $setting The setting you want to check against ('members', 'mods', or 'admins') + * @param obj $group (optional) The group whose status you want to check + */ +function bp_group_show_invite_status_setting( $setting, $group = false ) { + $group_id = isset( $group->id ) ? $group->id : false; + + $invite_status = bp_group_get_invite_status( $group_id ); + + if ( $setting == $invite_status ) + echo ' checked="checked"'; +} + +/** + * Get the invite status of a group + * + * 'invite_status' became part of BuddyPress in BP 1.5. In order to provide backward compatibility, + * groups without a status set will default to 'members', ie all members in a group can send + * invitations. Filter 'bp_group_invite_status_fallback' to change this fallback behavior. + * + * This function can be used either in or out of the loop. + * + * @package BuddyPress + * @subpackage Groups Template + * @since 1.5 + * + * @param int $group_id (optional) The id of the group whose status you want to check + * @return mixed Returns false when no group can be found. Otherwise returns the group invite + * status, from among 'members', 'mods', and 'admins' + */ +function bp_group_get_invite_status( $group_id = false ) { + global $bp, $groups_template; + + if ( !$group_id ) { + if ( isset( $bp->groups->current_group->id ) ) { + // Default to the current group first + $group_id = $bp->groups->current_group->id; + } else if ( isset( $groups_template->group->id ) ) { + // Then see if we're in the loop + $group_id = $groups_template->group->id; + } else { + return false; + } + } + + $invite_status = groups_get_groupmeta( $group_id, 'invite_status' ); + + // Backward compatibility. When 'invite_status' is not set, fall back to a default value + if ( !$invite_status ) { + $invite_status = apply_filters( 'bp_group_invite_status_fallback', 'members' ); + } + + return apply_filters( 'bp_group_get_invite_status', $invite_status, $group_id ); +} + +/** + * Can the logged-in user send invitations in the specified group? + * + * @package BuddyPress + * @subpackage Groups Template + * @since 1.5 + * + * @param int $group_id (optional) The id of the group whose status you want to check + * @return bool $can_send_invites + */ +function bp_groups_user_can_send_invites( $group_id = false ) { + global $bp; + + $can_send_invites = false; + $invite_status = false; + + if ( is_user_logged_in() ) { + if ( is_super_admin() ) { + // Super admins can always send invitations + $can_send_invites = true; + + } else { + // If no $group_id is provided, default to the current group id + if ( !$group_id ) + $group_id = isset( $bp->groups->current_group->id ) ? $bp->groups->current_group->id : 0; + + // If no group has been found, bail + if ( !$group_id ) + return false; + + $invite_status = bp_group_get_invite_status( $group_id ); + if ( !$invite_status ) + return false; + + switch ( $invite_status ) { + case 'admins' : + if ( groups_is_user_admin( bp_loggedin_user_id(), $group_id ) ) + $can_send_invites = true; + break; + + case 'mods' : + if ( groups_is_user_mod( bp_loggedin_user_id(), $group_id ) || groups_is_user_admin( bp_loggedin_user_id(), $group_id ) ) + $can_send_invites = true; + break; + + case 'members' : + if ( groups_is_user_member( bp_loggedin_user_id(), $group_id ) ) + $can_send_invites = true; + break; + } + } + } + + return apply_filters( 'bp_groups_user_can_send_invites', $can_send_invites, $group_id, $invite_status ); +} + +/** + * Since BuddyPress 1.0, this generated the group settings admin/member screen. + * As of BuddyPress 1.5 (r4489), and because this function outputs HTML, it was moved into /bp-default/groups/single/admin.php. + * + * @deprecated 1.5 + * @deprecated No longer used. + * @since 1.0 + * @todo Remove in 1.4 + */ +function bp_group_admin_memberlist( $admin_list = false, $group = false ) { + global $groups_template; + + _deprecated_function( __FUNCTION__, '1.5', 'No longer used. See /bp-default/groups/single/admin.php' ); + + if ( empty( $group ) ) + $group =& $groups_template->group; + + + if ( $admins = groups_get_group_admins( $group->id ) ) : ?> + + <ul id="admins-list" class="item-list<?php if ( !empty( $admin_list ) ) : ?> single-line<?php endif; ?>"> + + <?php foreach ( (array)$admins as $admin ) { ?> + + <?php if ( !empty( $admin_list ) ) : ?> + + <li> + + <?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ?> + + <h5> + + <?php echo bp_core_get_userlink( $admin->user_id ); ?> + + <span class="small"> + <a class="button confirm admin-demote-to-member" href="<?php bp_group_member_demote_link($admin->user_id) ?>"><?php _e( 'Demote to Member', 'buddypress' ) ?></a> + </span> + </h5> + </li> + + <?php else : ?> + + <li> + + <?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'type' => 'thumb', 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ?> + + <h5><?php echo bp_core_get_userlink( $admin->user_id ) ?></h5> + <span class="activity"> + <?php echo bp_core_get_last_activity( strtotime( $admin->date_modified ), __( 'joined %s', 'buddypress') ); ?> + </span> + + <?php if ( bp_is_active( 'friends' ) ) : ?> + + <div class="action"> + + <?php bp_add_friend_button( $admin->user_id ); ?> + + </div> + + <?php endif; ?> + + </li> + + <?php endif; + } ?> + + </ul> + + <?php else : ?> + + <div id="message" class="info"> + <p><?php _e( 'This group has no administrators', 'buddypress' ); ?></p> + </div> + + <?php endif; +} + +function bp_group_mod_memberlist( $admin_list = false, $group = false ) { + global $groups_template, $group_mods; + + if ( empty( $group ) ) + $group =& $groups_template->group; + + if ( $group_mods = groups_get_group_mods( $group->id ) ) { ?> + + <ul id="mods-list" class="item-list<?php if ( $admin_list ) { ?> single-line<?php } ?>"> + + <?php foreach ( (array)$group_mods as $mod ) { ?> + + <?php if ( !empty( $admin_list ) ) { ?> + + <li> + + <?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ?> + + <h5> + <?php echo bp_core_get_userlink( $mod->user_id ); ?> + + <span class="small"> + <a href="<?php bp_group_member_promote_admin_link( array( 'user_id' => $mod->user_id ) ) ?>" class="button confirm mod-promote-to-admin" title="<?php _e( 'Promote to Admin', 'buddypress' ); ?>"><?php _e( 'Promote to Admin', 'buddypress' ); ?></a> + <a class="button confirm mod-demote-to-member" href="<?php bp_group_member_demote_link($mod->user_id) ?>"><?php _e( 'Demote to Member', 'buddypress' ) ?></a> + </span> + </h5> + </li> + + <?php } else { ?> + + <li> + + <?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'type' => 'thumb', 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ?> + + <h5><?php echo bp_core_get_userlink( $mod->user_id ) ?></h5> + + <span class="activity"><?php echo bp_core_get_last_activity( strtotime( $mod->date_modified ), __( 'joined %s', 'buddypress') ); ?></span> + + <?php if ( bp_is_active( 'friends' ) ) : ?> + + <div class="action"> + <?php bp_add_friend_button( $mod->user_id ) ?> + </div> + + <?php endif; ?> + + </li> + + <?php } ?> + <?php } ?> + + </ul> + + <?php } else { ?> + + <div id="message" class="info"> + <p><?php _e( 'This group has no moderators', 'buddypress' ); ?></p> + </div> + + <?php } +} + +function bp_group_has_moderators( $group = false ) { + global $group_mods, $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_group_has_moderators', groups_get_group_mods( $group->id ) ); +} + +function bp_group_member_promote_mod_link( $args = '' ) { + echo bp_get_group_member_promote_mod_link( $args ); +} + function bp_get_group_member_promote_mod_link( $args = '' ) { + global $members_template, $groups_template, $bp; + + $defaults = array( + 'user_id' => $members_template->member->user_id, + 'group' => &$groups_template->group + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_group_member_promote_mod_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/promote/mod/' . $user_id, 'groups_promote_member' ) ); + } + +function bp_group_member_promote_admin_link( $args = '' ) { + echo bp_get_group_member_promote_admin_link( $args ); +} + function bp_get_group_member_promote_admin_link( $args = '' ) { + global $members_template, $groups_template, $bp; + + $defaults = array( + 'user_id' => !empty( $members_template->member->user_id ) ? $members_template->member->user_id : false, + 'group' => &$groups_template->group + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_group_member_promote_admin_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/promote/admin/' . $user_id, 'groups_promote_member' ) ); + } + +function bp_group_member_demote_link( $user_id = 0 ) { + global $members_template; + + if ( !$user_id ) + $user_id = $members_template->member->user_id; + + echo bp_get_group_member_demote_link( $user_id ); +} + function bp_get_group_member_demote_link( $user_id = 0, $group = false ) { + global $members_template, $groups_template, $bp; + + if ( !$group ) + $group =& $groups_template->group; + + if ( !$user_id ) + $user_id = $members_template->member->user_id; + + return apply_filters( 'bp_get_group_member_demote_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/demote/' . $user_id, 'groups_demote_member' ) ); + } + +function bp_group_member_ban_link( $user_id = 0 ) { + global $members_template; + + if ( !$user_id ) + $user_id = $members_template->member->user_id; + + echo bp_get_group_member_ban_link( $user_id ); +} + function bp_get_group_member_ban_link( $user_id = 0, $group = false ) { + global $members_template, $groups_template, $bp; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_member_ban_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/ban/' . $user_id, 'groups_ban_member' ) ); + } + +function bp_group_member_unban_link( $user_id = 0 ) { + global $members_template; + + if ( !$user_id ) + $user_id = $members_template->member->user_id; + + echo bp_get_group_member_unban_link( $user_id ); +} + function bp_get_group_member_unban_link( $user_id = 0, $group = false ) { + global $members_template, $groups_template; + + if ( !$user_id ) + $user_id = $members_template->member->user_id; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_member_unban_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/unban/' . $user_id, 'groups_unban_member' ) ); + } + + +function bp_group_member_remove_link( $user_id = 0 ) { + global $members_template; + + if ( !$user_id ) + $user_id = $members_template->member->user_id; + + echo bp_get_group_member_remove_link( $user_id ); +} + function bp_get_group_member_remove_link( $user_id = 0, $group = false ) { + global $members_template, $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_member_remove_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/remove/' . $user_id, 'groups_remove_member' ) ); + } + +function bp_group_admin_tabs( $group = false ) { + global $bp, $groups_template; + + if ( !$group ) + $group = ( $groups_template->group ) ? $groups_template->group : $bp->groups->current_group; + + $current_tab = bp_action_variable( 0 ); +?> + <?php if ( $bp->is_item_admin || $bp->is_item_mod ) { ?> + <li<?php if ( 'edit-details' == $current_tab || empty( $current_tab ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group->slug ?>/admin/edit-details"><?php _e( 'Details', 'buddypress' ); ?></a></li> + <?php } ?> + + <?php + if ( !$bp->is_item_admin ) + return false; + ?> + <li<?php if ( 'group-settings' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group->slug ?>/admin/group-settings"><?php _e( 'Settings', 'buddypress' ); ?></a></li> + + <?php if ( !(int)bp_get_option( 'bp-disable-avatar-uploads' ) ) : ?> + <li<?php if ( 'group-avatar' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group->slug ?>/admin/group-avatar"><?php _e( 'Avatar', 'buddypress' ); ?></a></li> + <?php endif; ?> + + <li<?php if ( 'manage-members' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group->slug ?>/admin/manage-members"><?php _e( 'Members', 'buddypress' ); ?></a></li> + + <?php if ( $groups_template->group->status == 'private' ) : ?> + <li<?php if ( 'membership-requests' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group->slug ?>/admin/membership-requests"><?php _e( 'Requests', 'buddypress' ); ?></a></li> + <?php endif; ?> + + <?php do_action( 'groups_admin_tabs', $current_tab, $group->slug ) ?> + + <li<?php if ( 'delete-group' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group->slug ?>/admin/delete-group"><?php _e( 'Delete', 'buddypress' ); ?></a></li> +<?php +} + +function bp_group_total_for_member() { + echo bp_get_group_total_for_member(); +} + function bp_get_group_total_for_member() { + return apply_filters( 'bp_get_group_total_for_member', BP_Groups_Member::total_group_count() ); + } + +function bp_group_form_action( $page ) { + echo bp_get_group_form_action( $page ); +} + function bp_get_group_form_action( $page, $group = false ) { + global $bp, $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_group_form_action', bp_get_group_permalink( $group ) . $page ); + } + +function bp_group_admin_form_action( $page = false ) { + echo bp_get_group_admin_form_action( $page ); +} + function bp_get_group_admin_form_action( $page = false, $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( !$page ) + $page = bp_action_variable( 0 ); + + return apply_filters( 'bp_group_admin_form_action', bp_get_group_permalink( $group ) . 'admin/' . $page ); + } + +function bp_group_has_requested_membership( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( groups_check_for_membership_request( bp_loggedin_user_id(), $group->id ) ) + return true; + + return false; +} + +/** + * bp_group_is_member() + * + * Checks if current user is member of a group. + * + * @uses is_super_admin Check if current user is super admin + * @uses apply_filters Creates bp_group_is_member filter and passes $is_member + * @usedby groups/activity.php, groups/single/forum/edit.php, groups/single/forum/topic.php to determine template part visibility + * @global array $bp BuddyPress Master global + * @global object $groups_template Current Group (usually in template loop) + * @param object $group Group to check is_member + * @return bool If user is member of group or not + */ +function bp_group_is_member( $group = false ) { + global $bp, $groups_template; + + // Site admins always have access + if ( $bp->loggedin_user->is_super_admin ) + return true; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_group_is_member', !empty( $group->is_member ) ); +} + +/** + * Checks if a user is banned from a group. + * + * If this function is invoked inside the groups template loop (e.g. the group directory), then + * check $groups_template->group->is_banned instead of making another SQL query. + * However, if used in a single group's pages, we must use groups_is_user_banned(). + * + * @global object $bp BuddyPress global settings + * @global BP_Groups_Template $groups_template Group template loop object + * @param object $group Group to check if user is banned from the group + * @param int $user_id + * @return bool If user is banned from the group or not + * @since 1.5 + */ +function bp_group_is_user_banned( $group = false, $user_id = 0 ) { + global $bp, $groups_template; + + // Site admins always have access + if ( $bp->loggedin_user->is_super_admin ) + return false; + + if ( !$group ) { + $group =& $groups_template->group; + + if ( !$user_id && isset( $group->is_banned ) ) + return apply_filters( 'bp_group_is_user_banned', $group->is_banned ); + } + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + return apply_filters( 'bp_group_is_user_banned', groups_is_user_banned( $user_id, $group->id ) ); +} + +function bp_group_accept_invite_link() { + echo bp_get_group_accept_invite_link(); +} + function bp_get_group_accept_invite_link( $group = false ) { + global $groups_template, $bp; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_accept_invite_link', wp_nonce_url( $bp->loggedin_user->domain . bp_get_groups_slug() . '/invites/accept/' . $group->id, 'groups_accept_invite' ) ); + } + +function bp_group_reject_invite_link() { + echo bp_get_group_reject_invite_link(); +} + function bp_get_group_reject_invite_link( $group = false ) { + global $groups_template, $bp; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_reject_invite_link', wp_nonce_url( $bp->loggedin_user->domain . bp_get_groups_slug() . '/invites/reject/' . $group->id, 'groups_reject_invite' ) ); + } + +function bp_group_leave_confirm_link() { + echo bp_get_group_leave_confirm_link(); +} + function bp_get_group_leave_confirm_link( $group = false ) { + global $groups_template, $bp; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_group_leave_confirm_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group/yes', 'groups_leave_group' ) ); + } + +function bp_group_leave_reject_link() { + echo bp_get_group_leave_reject_link(); +} + function bp_get_group_leave_reject_link( $group = false ) { + global $groups_template, $bp; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_get_group_leave_reject_link', bp_get_group_permalink( $group ) ); + } + +function bp_group_send_invite_form_action() { + echo bp_get_group_send_invite_form_action(); +} + function bp_get_group_send_invite_form_action( $group = false ) { + global $groups_template, $bp; + + if ( !$group ) + $group =& $groups_template->group; + + return apply_filters( 'bp_group_send_invite_form_action', bp_get_group_permalink( $group ) . 'send-invites/send' ); + } + +function bp_has_friends_to_invite( $group = false ) { + global $groups_template, $bp; + + if ( !bp_is_active( 'friends' ) ) + return false; + + if ( !$group ) + $group =& $groups_template->group; + + if ( !friends_check_user_has_friends( $bp->loggedin_user->id ) || !friends_count_invitable_friends( $bp->loggedin_user->id, $group->id ) ) + return false; + + return true; +} + +function bp_group_new_topic_button( $group = false ) { + echo bp_get_group_new_topic_button(); +} + function bp_get_group_new_topic_button( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( !is_user_logged_in() || bp_group_is_user_banned() || !bp_is_group_forum() || bp_is_group_forum_topic() ) + return false; + + $button = bp_button( array ( + 'id' => 'new_topic', + 'component' => 'groups', + 'must_be_logged_in' => true, + 'block_self' => true, + 'wrapper_class' => 'group-button', + 'link_href' => '#post-new', + 'link_class' => 'group-button show-hide-new', + 'link_id' => 'new-topic-button', + 'link_text' => __( 'New Topic', 'buddypress' ), + 'link_title' => __( 'New Topic', 'buddypress' ), + ) ); + + // Filter and return the HTML button + return bp_get_button( apply_filters( 'bp_get_group_new_topic_button', $button ) ); + } + +function bp_group_join_button( $group = false ) { + echo bp_get_group_join_button( $group ); +} + function bp_get_group_join_button( $group = false ) { + global $bp, $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( !is_user_logged_in() || bp_group_is_user_banned( $group ) ) + return false; + + // Group creation was not completed or status is unknown + if ( !$group->status ) + return false; + + // Already a member + if ( $group->is_member ) { + + // Stop sole admins from abandoning their group + $group_admins = groups_get_group_admins( $group->id ); + if ( 1 == count( $group_admins ) && $group_admins[0]->user_id == $bp->loggedin_user->id ) + return false; + + $button = array( + 'id' => 'leave_group', + 'component' => 'groups', + 'must_be_logged_in' => true, + 'block_self' => false, + 'wrapper_class' => 'group-button ' . $group->status, + 'wrapper_id' => 'groupbutton-' . $group->id, + 'link_href' => wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ), + 'link_text' => __( 'Leave Group', 'buddypress' ), + 'link_title' => __( 'Leave Group', 'buddypress' ), + 'link_class' => 'group-button leave-group', + ); + + // Not a member + } else { + + // Show different buttons based on group status + switch ( $group->status ) { + case 'hidden' : + return false; + break; + + case 'public': + $button = array( + 'id' => 'join_group', + 'component' => 'groups', + 'must_be_logged_in' => true, + 'block_self' => false, + 'wrapper_class' => 'group-button ' . $group->status, + 'wrapper_id' => 'groupbutton-' . $group->id, + 'link_href' => wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ), + 'link_text' => __( 'Join Group', 'buddypress' ), + 'link_title' => __( 'Join Group', 'buddypress' ), + 'link_class' => 'group-button join-group', + ); + break; + + case 'private' : + + // Member has not requested membership yet + if ( !bp_group_has_requested_membership( $group ) ) { + $button = array( + 'id' => 'request_membership', + 'component' => 'groups', + 'must_be_logged_in' => true, + 'block_self' => false, + 'wrapper_class' => 'group-button ' . $group->status, + 'wrapper_id' => 'groupbutton-' . $group->id, + 'link_href' => wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ), + 'link_text' => __( 'Request Membership', 'buddypress' ), + 'link_title' => __( 'Request Membership', 'buddypress' ), + 'link_class' => 'group-button request-membership', + ); + + // Member has requested membership already + } else { + $button = array( + 'id' => 'membership_requested', + 'component' => 'groups', + 'must_be_logged_in' => true, + 'block_self' => false, + 'wrapper_class' => 'group-button pending ' . $group->status, + 'wrapper_id' => 'groupbutton-' . $group->id, + 'link_href' => bp_get_group_permalink( $group ), + 'link_text' => __( 'Request Sent', 'buddypress' ), + 'link_title' => __( 'Request Sent', 'buddypress' ), + 'link_class' => 'group-button pending membership-requested', + ); + } + + break; + } + } + + // Filter and return the HTML button + return bp_get_button( apply_filters( 'bp_get_group_join_button', $button ) ); + } + +function bp_group_status_message( $group = false ) { + global $groups_template; + + if ( !$group ) + $group =& $groups_template->group; + + if ( 'private' == $group->status ) { + if ( !bp_group_has_requested_membership() ) + if ( is_user_logged_in() ) + _e( 'This is a private group and you must request group membership in order to join.', 'buddypress' ); + else + _e( 'This is a private group. To join you must be a registered site member and request group membership.', 'buddypress' ); + else + _e( 'This is a private group. Your membership request is awaiting approval from the group administrator.', 'buddypress' ); + } else { + _e( 'This is a hidden group and only invited members can join.', 'buddypress' ); + } +} + +function bp_group_hidden_fields() { + if ( isset( $_REQUEST['s'] ) ) { + echo '<input type="hidden" id="search_terms" value="' . esc_attr( $_REQUEST['s'] ) . '" name="search_terms" />'; + } + + if ( isset( $_REQUEST['letter'] ) ) { + echo '<input type="hidden" id="selected_letter" value="' . esc_attr( $_REQUEST['letter'] ) . '" name="selected_letter" />'; + } + + if ( isset( $_REQUEST['groups_search'] ) ) { + echo '<input type="hidden" id="search_terms" value="' . esc_attr( $_REQUEST['groups_search'] ) . '" name="search_terms" />'; + } +} + +function bp_total_group_count() { + echo bp_get_total_group_count(); +} + function bp_get_total_group_count() { + return apply_filters( 'bp_get_total_group_count', groups_get_total_group_count() ); + } + +function bp_total_group_count_for_user( $user_id = 0 ) { + echo bp_get_total_group_count_for_user( $user_id ); +} + function bp_get_total_group_count_for_user( $user_id = 0 ) { + return apply_filters( 'bp_get_total_group_count_for_user', groups_total_groups_for_user( $user_id ) ); + } + + +/*************************************************************************** + * Group Members Template Tags + **/ + +class BP_Groups_Group_Members_Template { + var $current_member = -1; + var $member_count; + var $members; + var $member; + + var $in_the_loop; + + var $pag_page; + var $pag_num; + var $pag_links; + var $total_group_count; + + function bp_groups_group_members_template( $group_id, $per_page, $max, $exclude_admins_mods, $exclude_banned, $exclude ) { + $this->__construct( $group_id, $per_page, $max, $exclude_admins_mods, $exclude_banned, $exclude ); + } + + function __construct( $group_id, $per_page, $max, $exclude_admins_mods, $exclude_banned, $exclude ) { + global $bp; + + $this->pag_page = isset( $_REQUEST['mlpage'] ) ? intval( $_REQUEST['mlpage'] ) : 1; + $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page; + + $this->members = BP_Groups_Member::get_all_for_group( $group_id, $this->pag_num, $this->pag_page, $exclude_admins_mods, $exclude_banned, $exclude ); + + if ( !$max || $max >= (int)$this->members['count'] ) + $this->total_member_count = (int)$this->members['count']; + else + $this->total_member_count = (int)$max; + + $this->members = $this->members['members']; + + if ( $max ) { + if ( $max >= count($this->members) ) + $this->member_count = count($this->members); + else + $this->member_count = (int)$max; + } else { + $this->member_count = count($this->members); + } + + $this->pag_links = paginate_links( array( + 'base' => add_query_arg( 'mlpage', '%#%' ), + 'format' => '', + 'total' => ceil( $this->total_member_count / $this->pag_num ), + 'current' => $this->pag_page, + 'prev_text' => '←', + 'next_text' => '→', + 'mid_size' => 1 + )); + } + + function has_members() { + if ( $this->member_count ) + return true; + + return false; + } + + function next_member() { + $this->current_member++; + $this->member = $this->members[$this->current_member]; + + return $this->member; + } + + function rewind_members() { + $this->current_member = -1; + if ( $this->member_count > 0 ) { + $this->member = $this->members[0]; + } + } + + function members() { + if ( $this->current_member + 1 < $this->member_count ) { + return true; + } elseif ( $this->current_member + 1 == $this->member_count ) { + do_action('loop_end'); + // Do some cleaning up after the loop + $this->rewind_members(); + } + + $this->in_the_loop = false; + return false; + } + + function the_member() { + global $member; + + $this->in_the_loop = true; + $this->member = $this->next_member(); + + if ( 0 == $this->current_member ) // loop has just started + do_action('loop_start'); + } +} + +function bp_group_has_members( $args = '' ) { + global $bp, $members_template; + + $defaults = array( + 'group_id' => bp_get_current_group_id(), + 'per_page' => 20, + 'max' => false, + 'exclude' => false, + 'exclude_admins_mods' => 1, + 'exclude_banned' => 1 + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + $members_template = new BP_Groups_Group_Members_Template( $group_id, $per_page, $max, (int)$exclude_admins_mods, (int)$exclude_banned, $exclude ); + return apply_filters( 'bp_group_has_members', $members_template->has_members(), $members_template ); +} + +function bp_group_members() { + global $members_template; + + return $members_template->members(); +} + +function bp_group_the_member() { + global $members_template; + + return $members_template->the_member(); +} + +function bp_group_member_avatar() { + echo bp_get_group_member_avatar(); +} + function bp_get_group_member_avatar() { + global $members_template; + + return apply_filters( 'bp_get_group_member_avatar', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'full', 'email' => $members_template->member->user_email, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ); + } + +function bp_group_member_avatar_thumb() { + echo bp_get_group_member_avatar_thumb(); +} + function bp_get_group_member_avatar_thumb() { + global $members_template; + + return apply_filters( 'bp_get_group_member_avatar_thumb', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'thumb', 'email' => $members_template->member->user_email, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ); + } + +function bp_group_member_avatar_mini( $width = 30, $height = 30 ) { + echo bp_get_group_member_avatar_mini( $width, $height ); +} + function bp_get_group_member_avatar_mini( $width = 30, $height = 30 ) { + global $members_template; + + return apply_filters( 'bp_get_group_member_avatar_mini', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'thumb', 'width' => $width, 'height' => $height, 'email' => $members_template->member->user_email, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ); + } + +function bp_group_member_name() { + echo bp_get_group_member_name(); +} + function bp_get_group_member_name() { + global $members_template; + + return apply_filters( 'bp_get_group_member_name', $members_template->member->display_name ); + } + +function bp_group_member_url() { + echo bp_get_group_member_url(); +} + function bp_get_group_member_url() { + global $members_template; + + return apply_filters( 'bp_get_group_member_url', bp_core_get_user_domain( $members_template->member->user_id, $members_template->member->user_nicename, $members_template->member->user_login ) ); + } + +function bp_group_member_link() { + echo bp_get_group_member_link(); +} + function bp_get_group_member_link() { + global $members_template; + + return apply_filters( 'bp_get_group_member_link', '<a href="' . bp_core_get_user_domain( $members_template->member->user_id, $members_template->member->user_nicename, $members_template->member->user_login ) . '">' . $members_template->member->display_name . '</a>' ); + } + +function bp_group_member_domain() { + echo bp_get_group_member_domain(); +} + function bp_get_group_member_domain() { + global $members_template; + + return apply_filters( 'bp_get_group_member_domain', bp_core_get_user_domain( $members_template->member->user_id, $members_template->member->user_nicename, $members_template->member->user_login ) ); + } + +function bp_group_member_is_friend() { + echo bp_get_group_member_is_friend(); +} + function bp_get_group_member_is_friend() { + global $members_template; + + if ( !isset( $members_template->member->is_friend ) ) + $friend_status = 'not_friends'; + else + $friend_status = ( 0 == $members_template->member->is_friend ) ? 'pending' : 'is_friend'; + + return apply_filters( 'bp_get_group_member_is_friend', $friend_status ); + } + +function bp_group_member_is_banned() { + echo bp_get_group_member_is_banned(); +} + function bp_get_group_member_is_banned() { + global $members_template, $groups_template; + + return apply_filters( 'bp_get_group_member_is_banned', $members_template->member->is_banned ); + } + +function bp_group_member_css_class() { + global $members_template; + + if ( $members_template->member->is_banned ) + echo apply_filters( 'bp_group_member_css_class', 'banned-user' ); +} + +function bp_group_member_joined_since() { + echo bp_get_group_member_joined_since(); +} + function bp_get_group_member_joined_since() { + global $members_template; + + return apply_filters( 'bp_get_group_member_joined_since', bp_core_get_last_activity( $members_template->member->date_modified, __( 'joined %s', 'buddypress') ) ); + } + +function bp_group_member_id() { + echo bp_get_group_member_id(); +} + function bp_get_group_member_id() { + global $members_template; + + return apply_filters( 'bp_get_group_member_id', $members_template->member->user_id ); + } + +function bp_group_member_needs_pagination() { + global $members_template; + + if ( $members_template->total_member_count > $members_template->pag_num ) + return true; + + return false; +} + +function bp_group_pag_id() { + echo bp_get_group_pag_id(); +} + function bp_get_group_pag_id() { + global $bp; + + return apply_filters( 'bp_get_group_pag_id', 'pag' ); + } + +function bp_group_member_pagination() { + echo bp_get_group_member_pagination(); + wp_nonce_field( 'bp_groups_member_list', '_member_pag_nonce' ); +} + function bp_get_group_member_pagination() { + global $members_template; + return apply_filters( 'bp_get_group_member_pagination', $members_template->pag_links ); + } + +function bp_group_member_pagination_count() { + echo bp_get_group_member_pagination_count(); +} + function bp_get_group_member_pagination_count() { + global $members_template; + + $start_num = intval( ( $members_template->pag_page - 1 ) * $members_template->pag_num ) + 1; + $from_num = bp_core_number_format( $start_num ); + $to_num = bp_core_number_format( ( $start_num + ( $members_template->pag_num - 1 ) > $members_template->total_member_count ) ? $members_template->total_member_count : $start_num + ( $members_template->pag_num - 1 ) ); + $total = bp_core_number_format( $members_template->total_member_count ); + + return apply_filters( 'bp_get_group_member_pagination_count', sprintf( __( 'Viewing members %1$s to %2$s (of %3$s members)', 'buddypress' ), $from_num, $to_num, $total ) ); + } + +function bp_group_member_admin_pagination() { + echo bp_get_group_member_admin_pagination(); + wp_nonce_field( 'bp_groups_member_admin_list', '_member_admin_pag_nonce' ); +} + function bp_get_group_member_admin_pagination() { + global $members_template; + + return $members_template->pag_links; + } + + +/*************************************************************************** + * Group Creation Process Template Tags + **/ + +/** + * Determine if the current logged in user can create groups. + * + * @package BuddyPress Groups + * @since 1.5 + * + * @uses apply_filters() To call 'bp_user_can_create_groups'. + * @uses bp_get_option() To retrieve value of 'bp_restrict_group_creation'. Defaults to 0. + * @uses is_super_admin() To determine if current user if super admin. + * + * @return bool True if user can create groups. False otherwise. + */ +function bp_user_can_create_groups() { + // Super admin can always create groups + if ( is_super_admin() ) + return true; + + // Get group creation option, default to 0 (allowed) + $restricted = (int) bp_get_option( 'bp_restrict_group_creation', 0 ); + + // Allow by default + $can_create = true; + + // Are regular users restricted? + if ( $restricted ) + $can_create = false; + + return apply_filters( 'bp_user_can_create_groups', $can_create, $restricted ); +} + +function bp_group_creation_tabs() { + global $bp; + + if ( !is_array( $bp->groups->group_creation_steps ) ) + return false; + + if ( !$bp->groups->current_create_step ) + $bp->groups->current_create_step = array_shift( array_keys( $bp->groups->group_creation_steps ) ); + + $counter = 1; + + foreach ( (array)$bp->groups->group_creation_steps as $slug => $step ) { + $is_enabled = bp_are_previous_group_creation_steps_complete( $slug ); ?> + + <li<?php if ( $bp->groups->current_create_step == $slug ) : ?> class="current"<?php endif; ?>><?php if ( $is_enabled ) : ?><a href="<?php echo bp_get_root_domain() . '/' . bp_get_groups_root_slug() ?>/create/step/<?php echo $slug ?>/"><?php else: ?><span><?php endif; ?><?php echo $counter ?>. <?php echo $step['name'] ?><?php if ( $is_enabled ) : ?></a><?php else: ?></span><?php endif ?></li><?php + $counter++; + } + + unset( $is_enabled ); + + do_action( 'groups_creation_tabs' ); +} + +function bp_group_creation_stage_title() { + global $bp; + + echo apply_filters( 'bp_group_creation_stage_title', '<span>— ' . $bp->groups->group_creation_steps[$bp->groups->current_create_step]['name'] . '</span>' ); +} + +function bp_group_creation_form_action() { + echo bp_get_group_creation_form_action(); +} + function bp_get_group_creation_form_action() { + global $bp; + + if ( !bp_action_variable( 1 ) ) + $bp->action_variables[1] = array_shift( array_keys( $bp->groups->group_creation_steps ) ); + + return apply_filters( 'bp_get_group_creation_form_action', bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create/step/' . bp_action_variable( 1 ) ); + } + +function bp_is_group_creation_step( $step_slug ) { + global $bp; + + /* Make sure we are in the groups component */ + if ( !bp_is_groups_component() || !bp_is_current_action( 'create' ) ) + return false; + + /* If this the first step, we can just accept and return true */ + if ( !bp_action_variable( 1 ) && array_shift( array_keys( $bp->groups->group_creation_steps ) ) == $step_slug ) + return true; + + /* Before allowing a user to see a group creation step we must make sure previous steps are completed */ + if ( !bp_is_first_group_creation_step() ) { + if ( !bp_are_previous_group_creation_steps_complete( $step_slug ) ) + return false; + } + + /* Check the current step against the step parameter */ + if ( bp_is_action_variable( $step_slug ) ) + return true; + + return false; +} + +function bp_is_group_creation_step_complete( $step_slugs ) { + global $bp; + + if ( !isset( $bp->groups->completed_create_steps ) ) + return false; + + if ( is_array( $step_slugs ) ) { + $found = true; + + foreach ( (array)$step_slugs as $step_slug ) { + if ( !in_array( $step_slug, $bp->groups->completed_create_steps ) ) + $found = false; + } + + return $found; + } else { + return in_array( $step_slugs, $bp->groups->completed_create_steps ); + } + + return true; +} + +function bp_are_previous_group_creation_steps_complete( $step_slug ) { + global $bp; + + /* If this is the first group creation step, return true */ + if ( array_shift( array_keys( $bp->groups->group_creation_steps ) ) == $step_slug ) + return true; + + reset( $bp->groups->group_creation_steps ); + unset( $previous_steps ); + + /* Get previous steps */ + foreach ( (array)$bp->groups->group_creation_steps as $slug => $name ) { + if ( $slug == $step_slug ) + break; + + $previous_steps[] = $slug; + } + + return bp_is_group_creation_step_complete( $previous_steps ); +} + +function bp_new_group_id() { + echo bp_get_new_group_id(); +} + function bp_get_new_group_id() { + global $bp; + + if ( isset( $bp->groups->new_group_id ) ) + $new_group_id = $bp->groups->new_group_id; + else + $new_group_id = 0; + + return apply_filters( 'bp_get_new_group_id', $new_group_id ); + } + +function bp_new_group_name() { + echo bp_get_new_group_name(); +} + function bp_get_new_group_name() { + global $bp; + + if ( isset( $bp->groups->current_group->name ) ) + $name = $bp->groups->current_group->name; + else + $name = ''; + + return apply_filters( 'bp_get_new_group_name', $name ); + } + +function bp_new_group_description() { + echo bp_get_new_group_description(); +} + function bp_get_new_group_description() { + global $bp; + + if ( isset( $bp->groups->current_group->description ) ) + $description = $bp->groups->current_group->description; + else + $description = ''; + + return apply_filters( 'bp_get_new_group_description', $description ); + } + +function bp_new_group_enable_forum() { + echo bp_get_new_group_enable_forum(); +} + function bp_get_new_group_enable_forum() { + global $bp; + return (int) apply_filters( 'bp_get_new_group_enable_forum', $bp->groups->current_group->enable_forum ); + } + +function bp_new_group_status() { + echo bp_get_new_group_status(); +} + function bp_get_new_group_status() { + global $bp; + return apply_filters( 'bp_get_new_group_status', $bp->groups->current_group->status ); + } + +function bp_new_group_avatar( $args = '' ) { + echo bp_get_new_group_avatar( $args ); +} + function bp_get_new_group_avatar( $args = '' ) { + global $bp; + + $defaults = array( + 'type' => 'full', + 'width' => false, + 'height' => false, + 'class' => 'avatar', + 'id' => 'avatar-crop-preview', + 'alt' => __( 'Group avatar', 'buddypress' ), + 'no_grav' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_new_group_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->groups->current_group->id, 'object' => 'group', 'type' => $type, 'avatar_dir' => 'group-avatars', 'alt' => $alt, 'width' => $width, 'height' => $height, 'class' => $class, 'no_grav' => $no_grav ) ) ); + } + +function bp_group_creation_previous_link() { + echo bp_get_group_creation_previous_link(); +} + function bp_get_group_creation_previous_link() { + global $bp; + + foreach ( (array)$bp->groups->group_creation_steps as $slug => $name ) { + if ( bp_is_action_variable( $slug ) ) + break; + + $previous_steps[] = $slug; + } + + return apply_filters( 'bp_get_group_creation_previous_link', trailingslashit( bp_get_root_domain() ) . bp_get_groups_root_slug() . '/create/step/' . array_pop( $previous_steps ) ); + } + +function bp_is_last_group_creation_step() { + global $bp; + + $last_step = array_pop( array_keys( $bp->groups->group_creation_steps ) ); + + if ( $last_step == $bp->groups->current_create_step ) + return true; + + return false; +} + +function bp_is_first_group_creation_step() { + global $bp; + + $first_step = array_shift( array_keys( $bp->groups->group_creation_steps ) ); + + if ( $first_step == $bp->groups->current_create_step ) + return true; + + return false; +} + +function bp_new_group_invite_friend_list() { + echo bp_get_new_group_invite_friend_list(); +} + function bp_get_new_group_invite_friend_list( $args = '' ) { + global $bp; + + if ( !bp_is_active( 'friends' ) ) + return false; + + $defaults = array( + 'group_id' => false, + 'separator' => 'li' + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( empty( $group_id ) ) + $group_id = !empty( $bp->groups->new_group_id ) ? $bp->groups->new_group_id : $bp->groups->current_group->id; + + if ( $friends = friends_get_friends_invite_list( $bp->loggedin_user->id, $group_id ) ) { + $invites = groups_get_invites_for_group( $bp->loggedin_user->id, $group_id ); + + for ( $i = 0, $count = count( $friends ); $i < $count; ++$i ) { + $checked = ''; + + if ( !empty( $invites ) ) { + if ( in_array( $friends[$i]['id'], $invites ) ) + $checked = ' checked="checked"'; + } + + $items[] = '<' . $separator . '><input' . $checked . ' type="checkbox" name="friends[]" id="f-' . $friends[$i]['id'] . '" value="' . esc_attr( $friends[$i]['id'] ) . '" /> ' . $friends[$i]['full_name'] . '</' . $separator . '>'; + } + } + + if ( !empty( $items ) ) + return implode( "\n", (array)$items ); + + return false; + } + +function bp_directory_groups_search_form() { + global $bp; + + $default_search_value = bp_get_search_default_text( 'groups' ); + $search_value = !empty( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : $default_search_value; ?> + + <form action="" method="get" id="search-groups-form"> + <label><input type="text" name="s" id="groups_search" value="<?php echo esc_attr( $search_value ) ?>" onfocus="if (this.value == '<?php echo $default_search_value ?>') {this.value = '';}" onblur="if (this.value == '') {this.value = '<?php echo $default_search_value ?>';}" /></label> + <input type="submit" id="groups_search_submit" name="groups_search_submit" value="<?php _e( 'Search', 'buddypress' ) ?>" /> + </form> + +<?php +} + +/** + * Displays group header tabs + * + * @package BuddyPress + * @todo Deprecate? + */ +function bp_groups_header_tabs() { + global $create_group_step, $completed_to_step; +?> + <li<?php if ( !bp_action_variable( 0 ) || bp_is_action_variable( 'recently-active', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . bp_get_groups_slug() ?>/my-groups/recently-active"><?php _e( 'Recently Active', 'buddypress' ) ?></a></li> + <li<?php if ( bp_is_action_variable( 'recently-joined', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . bp_get_groups_slug() ?>/my-groups/recently-joined"><?php _e( 'Recently Joined', 'buddypress' ) ?></a></li> + <li<?php if ( bp_is_action_variable( 'most-popular', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . bp_get_groups_slug() ?>/my-groups/most-popular"><?php _e( 'Most Popular', 'buddypress' ) ?></a></li> + <li<?php if ( bp_is_action_variable( 'admin-of', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . bp_get_groups_slug() ?>/my-groups/admin-of"><?php _e( 'Administrator Of', 'buddypress' ) ?></a></li> + <li<?php if ( bp_is_action_variable( 'mod-of', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . bp_get_groups_slug() ?>/my-groups/mod-of"><?php _e( 'Moderator Of', 'buddypress' ) ?></a></li> + <li<?php if ( bp_is_action_variable( 'alphabetically' ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo $bp->displayed_user->domain . bp_get_groups_slug() ?>/my-groups/alphabetically"><?php _e( 'Alphabetically', 'buddypress' ) ?></a></li> +<?php + do_action( 'groups_header_tabs' ); +} + +/** + * Displays group filter titles + * + * @package BuddyPress + * @todo Deprecate? + */ +function bp_groups_filter_title() { + $current_filter = bp_action_variable( 0 ); + + switch ( $current_filter ) { + case 'recently-active': default: + _e( 'Recently Active', 'buddypress' ); + break; + case 'recently-joined': + _e( 'Recently Joined', 'buddypress' ); + break; + case 'most-popular': + _e( 'Most Popular', 'buddypress' ); + break; + case 'admin-of': + _e( 'Administrator Of', 'buddypress' ); + break; + case 'mod-of': + _e( 'Moderator Of', 'buddypress' ); + break; + case 'alphabetically': + _e( 'Alphabetically', 'buddypress' ); + break; + } + do_action( 'bp_groups_filter_title' ); +} + +function bp_is_group_admin_screen( $slug ) { + if ( !bp_is_groups_component() || !bp_is_current_action( 'admin' ) ) + return false; + + if ( bp_is_action_variable( $slug ) ) + return true; + + return false; +} + +/************************************************************************************ + * Group Avatar Template Tags + **/ + +function bp_group_current_avatar() { + global $bp; + + if ( $bp->groups->current_group->avatar_full ) { ?> + + <img src="<?php echo esc_attr( $bp->groups->current_group->avatar_full ) ?>" alt="<?php _e( 'Group Avatar', 'buddypress' ) ?>" class="avatar" /> + + <?php } else { ?> + + <img src="<?php echo $bp->groups->image_base . '/none.gif' ?>" alt="<?php _e( 'No Group Avatar', 'buddypress' ) ?>" class="avatar" /> + + <?php } +} + +function bp_get_group_has_avatar() { + global $bp; + + if ( !empty( $_FILES ) || !bp_core_fetch_avatar( array( 'item_id' => $bp->groups->current_group->id, 'object' => 'group', 'no_grav' => true ) ) ) + return false; + + return true; +} + +function bp_group_avatar_delete_link() { + echo bp_get_group_avatar_delete_link(); +} + function bp_get_group_avatar_delete_link() { + global $bp; + + return apply_filters( 'bp_get_group_avatar_delete_link', wp_nonce_url( bp_get_group_permalink( $bp->groups->current_group ) . 'admin/group-avatar/delete', 'bp_group_avatar_delete' ) ); + } + +function bp_group_avatar_edit_form() { + groups_avatar_upload(); +} + +function bp_custom_group_boxes() { + do_action( 'groups_custom_group_boxes' ); +} + +function bp_custom_group_admin_tabs() { + do_action( 'groups_custom_group_admin_tabs' ); +} + +function bp_custom_group_fields_editable() { + do_action( 'groups_custom_group_fields_editable' ); +} + +function bp_custom_group_fields() { + do_action( 'groups_custom_group_fields' ); +} + + +/************************************************************************************ + * Membership Requests Template Tags + **/ + +class BP_Groups_Membership_Requests_Template { + var $current_request = -1; + var $request_count; + var $requests; + var $request; + + var $in_the_loop; + + var $pag_page; + var $pag_num; + var $pag_links; + var $total_request_count; + + function bp_groups_membership_requests_template( $group_id, $per_page, $max ) { + $this->__construct( $group_id, $per_page, $max ); + } + + + function __construct( $group_id, $per_page, $max ) { + + global $bp; + + $this->pag_page = isset( $_REQUEST['mrpage'] ) ? intval( $_REQUEST['mrpage'] ) : 1; + $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page; + + $this->requests = BP_Groups_Group::get_membership_requests( $group_id, $this->pag_num, $this->pag_page ); + + if ( !$max || $max >= (int)$this->requests['total'] ) + $this->total_request_count = (int)$this->requests['total']; + else + $this->total_request_count = (int)$max; + + $this->requests = $this->requests['requests']; + + if ( $max ) { + if ( $max >= count($this->requests) ) + $this->request_count = count($this->requests); + else + $this->request_count = (int)$max; + } else { + $this->request_count = count($this->requests); + } + + $this->pag_links = paginate_links( array( + 'base' => add_query_arg( 'mrpage', '%#%' ), + 'format' => '', + 'total' => ceil( $this->total_request_count / $this->pag_num ), + 'current' => $this->pag_page, + 'prev_text' => '←', + 'next_text' => '→', + 'mid_size' => 1 + ) ); + } + + function has_requests() { + if ( $this->request_count ) + return true; + + return false; + } + + function next_request() { + $this->current_request++; + $this->request = $this->requests[$this->current_request]; + + return $this->request; + } + + function rewind_requests() { + $this->current_request = -1; + + if ( $this->request_count > 0 ) + $this->request = $this->requests[0]; + } + + function requests() { + if ( $this->current_request + 1 < $this->request_count ) { + return true; + } elseif ( $this->current_request + 1 == $this->request_count ) { + do_action('group_request_loop_end'); + // Do some cleaning up after the loop + $this->rewind_requests(); + } + + $this->in_the_loop = false; + return false; + } + + function the_request() { + global $request; + + $this->in_the_loop = true; + $this->request = $this->next_request(); + + if ( 0 == $this->current_request ) // loop has just started + do_action('group_request_loop_start'); + } +} + +function bp_group_has_membership_requests( $args = '' ) { + global $requests_template, $groups_template; + + $defaults = array( + 'group_id' => $groups_template->group->id, + 'per_page' => 10, + 'max' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + $requests_template = new BP_Groups_Membership_Requests_Template( $group_id, $per_page, $max ); + return apply_filters( 'bp_group_has_membership_requests', $requests_template->has_requests(), $requests_template ); +} + +function bp_group_membership_requests() { + global $requests_template; + + return $requests_template->requests(); +} + +function bp_group_the_membership_request() { + global $requests_template; + + return $requests_template->the_request(); +} + +function bp_group_request_user_avatar_thumb() { + global $requests_template; + + echo apply_filters( 'bp_group_request_user_avatar_thumb', bp_core_fetch_avatar( array( 'item_id' => $requests_template->request->user_id, 'type' => 'thumb', 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ); +} + +function bp_group_request_reject_link() { + echo bp_get_group_request_reject_link(); +} + function bp_get_group_request_reject_link() { + global $requests_template, $groups_template; + + return apply_filters( 'bp_get_group_request_reject_link', wp_nonce_url( bp_get_group_permalink( $groups_template->group ) . 'admin/membership-requests/reject/' . $requests_template->request->id, 'groups_reject_membership_request' ) ); + } + +function bp_group_request_accept_link() { + echo bp_get_group_request_accept_link(); +} + function bp_get_group_request_accept_link() { + global $requests_template, $groups_template; + + return apply_filters( 'bp_get_group_request_accept_link', wp_nonce_url( bp_get_group_permalink( $groups_template->group ) . 'admin/membership-requests/accept/' . $requests_template->request->id, 'groups_accept_membership_request' ) ); + } + +function bp_group_request_user_link() { + echo bp_get_group_request_user_link(); +} + function bp_get_group_request_user_link() { + global $requests_template; + + return apply_filters( 'bp_get_group_request_user_link', bp_core_get_userlink( $requests_template->request->user_id ) ); + } + +function bp_group_request_time_since_requested() { + global $requests_template; + + echo apply_filters( 'bp_group_request_time_since_requested', sprintf( __( 'requested %s', 'buddypress' ), bp_core_time_since( strtotime( $requests_template->request->date_modified ) ) ) ); +} + +function bp_group_request_comment() { + global $requests_template; + + echo apply_filters( 'bp_group_request_comment', strip_tags( stripslashes( $requests_template->request->comments ) ) ); +} + +/************************************************************************************ + * Invite Friends Template Tags + **/ + +class BP_Groups_Invite_Template { + var $current_invite = -1; + var $invite_count; + var $invites; + var $invite; + + var $in_the_loop; + + var $pag_page; + var $pag_num; + var $pag_links; + var $total_invite_count; + + function bp_groups_invite_template( $user_id, $group_id ) { + $this->__construct( $user_id, $group_id ); + } + + function __construct( $user_id, $group_id ) { + + global $bp; + + $this->invites = groups_get_invites_for_group( $user_id, $group_id ); + $this->invite_count = count( $this->invites ); + + } + + function has_invites() { + if ( $this->invite_count ) + return true; + + return false; + } + + function next_invite() { + $this->current_invite++; + $this->invite = $this->invites[$this->current_invite]; + + return $this->invite; + } + + function rewind_invites() { + $this->current_invite = -1; + if ( $this->invite_count > 0 ) + $this->invite = $this->invites[0]; + } + + function invites() { + if ( $this->current_invite + 1 < $this->invite_count ) { + return true; + } elseif ( $this->current_invite + 1 == $this->invite_count ) { + do_action('loop_end'); + // Do some cleaning up after the loop + $this->rewind_invites(); + } + + $this->in_the_loop = false; + return false; + } + + function the_invite() { + global $invite, $group_id; + + $this->in_the_loop = true; + $user_id = $this->next_invite(); + + $this->invite = new stdClass; + $this->invite->user = new BP_Core_User( $user_id ); + $this->invite->group_id = $group_id; // Globaled in bp_group_has_invites() + + if ( 0 == $this->current_invite ) // loop has just started + do_action('loop_start'); + } +} + +function bp_group_has_invites( $args = '' ) { + global $bp, $invites_template, $group_id; + + $defaults = array( + 'group_id' => false, + 'user_id' => $bp->loggedin_user->id + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( !$group_id ) { + // Backwards compatibility + if ( !empty( $bp->groups->current_group ) ) + $group_id = $bp->groups->current_group->id; + + if ( !empty( $bp->groups->new_group_id ) ) + $group_id = $bp->groups->new_group_id; + } + + if ( !$group_id ) + return false; + + $invites_template = new BP_Groups_Invite_Template( $user_id, $group_id ); + return apply_filters( 'bp_group_has_invites', $invites_template->has_invites(), $invites_template ); +} + +function bp_group_invites() { + global $invites_template; + + return $invites_template->invites(); +} + +function bp_group_the_invite() { + global $invites_template; + + return $invites_template->the_invite(); +} + +function bp_group_invite_item_id() { + echo bp_get_group_invite_item_id(); +} + function bp_get_group_invite_item_id() { + global $invites_template; + + return apply_filters( 'bp_get_group_invite_item_id', 'uid-' . $invites_template->invite->user->id ); + } + +function bp_group_invite_user_avatar() { + echo bp_get_group_invite_user_avatar(); +} + function bp_get_group_invite_user_avatar() { + global $invites_template; + + return apply_filters( 'bp_get_group_invite_user_avatar', $invites_template->invite->user->avatar_thumb ); + } + +function bp_group_invite_user_link() { + echo bp_get_group_invite_user_link(); +} + function bp_get_group_invite_user_link() { + global $invites_template; + + return apply_filters( 'bp_get_group_invite_user_link', bp_core_get_userlink( $invites_template->invite->user->id ) ); + } + +function bp_group_invite_user_last_active() { + echo bp_get_group_invite_user_last_active(); +} + function bp_get_group_invite_user_last_active() { + global $invites_template; + + return apply_filters( 'bp_get_group_invite_user_last_active', $invites_template->invite->user->last_active ); + } + +function bp_group_invite_user_remove_invite_url() { + echo bp_get_group_invite_user_remove_invite_url(); +} + function bp_get_group_invite_user_remove_invite_url() { + global $invites_template; + + return wp_nonce_url( site_url( bp_get_groups_slug() . '/' . $invites_template->invite->group_id . '/invites/remove/' . $invites_template->invite->user->id ), 'groups_invite_uninvite_user' ); + } + +/*** + * Groups RSS Feed Template Tags + */ + +/** + * Hook group activity feed to <head> + * + * @since 1.5 + */ +function bp_groups_activity_feed() { + if ( !bp_is_active( 'groups' ) || !bp_is_active( 'activity' ) || !bp_is_group() ) + return; ?> + + <link rel="alternate" type="application/rss+xml" title="<?php bloginfo( 'name' ) ?> | <?php bp_current_group_name() ?> | <?php _e( 'Group Activity RSS Feed', 'buddypress' ) ?>" href="<?php bp_group_activity_feed_link() ?>" /> + +<?php +} +add_action( 'bp_head', 'bp_groups_activity_feed' ); + +function bp_group_activity_feed_link() { + echo bp_get_group_activity_feed_link(); +} + function bp_get_group_activity_feed_link() { + global $bp; + + return apply_filters( 'bp_get_group_activity_feed_link', bp_get_group_permalink( $bp->groups->current_group ) . 'feed/' ); + } + +/** + * Echoes the output of bp_get_current_group_id() + * + * @package BuddyPress + * @since 1.5 + */ +function bp_current_group_id() { + echo bp_get_current_group_id(); +} + /** + * Returns the ID of the current group + * + * @package BuddyPress + * @since 1.5 + * @uses apply_filters() Filter bp_get_current_group_id to modify this output + * + * @return int $current_group_id The id of the current group, if there is one + */ + function bp_get_current_group_id() { + $current_group = groups_get_current_group(); + + $current_group_id = isset( $current_group->id ) ? (int)$current_group->id : 0; + + return apply_filters( 'bp_get_current_group_id', $current_group_id, $current_group ); + } + +/** + * Echoes the output of bp_get_current_group_slug() + * + * @package BuddyPress + * @since 1.5 + */ +function bp_current_group_slug() { + echo bp_get_current_group_slug(); +} + /** + * Returns the slug of the current group + * + * @package BuddyPress + * @since 1.5 + * @uses apply_filters() Filter bp_get_current_group_slug to modify this output + * + * @return str $current_group_slug The slug of the current group, if there is one + */ + function bp_get_current_group_slug() { + $current_group = groups_get_current_group(); + + $current_group_slug = isset( $current_group->slug ) ? $current_group->slug : ''; + + return apply_filters( 'bp_get_current_group_slug', $current_group_slug, $current_group ); + } + +/** + * Echoes the output of bp_get_current_group_name() + * + * @package BuddyPress + */ +function bp_current_group_name() { + echo bp_get_current_group_name(); +} + /** + * Returns the name of the current group + * + * @package BuddyPress + * @since 1.5 + * @uses apply_filters() Filter bp_get_current_group_name to modify this output + * + * @return str The name of the current group, if there is one + */ + function bp_get_current_group_name() { + global $bp; + + $name = apply_filters( 'bp_get_group_name', $bp->groups->current_group->name ); + return apply_filters( 'bp_get_current_group_name', $name ); + } + +function bp_groups_action_link( $action = '', $query_args = '', $nonce = false ) { + echo bp_get_groups_action_link( $action, $query_args, $nonce ); +} + function bp_get_groups_action_link( $action = '', $query_args = '', $nonce = false ) { + global $bp; + + // Must be displayed user + if ( empty( $bp->groups->current_group->id ) ) + return; + + // Append $action to $url if there is no $type + if ( !empty( $action ) ) + $url = bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $bp->groups->current_group->slug . '/' . $action; + else + $url = bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $bp->groups->current_group->slug; + + // Add a slash at the end of our user url + $url = trailingslashit( $url ); + + // Add possible query arg + if ( !empty( $query_args ) && is_array( $query_args ) ) + $url = add_query_arg( $query_args, $url ); + + // To nonce, or not to nonce... + if ( true === $nonce ) + $url = wp_nonce_url( $url ); + elseif ( is_string( $nonce ) ) + $url = wp_nonce_url( $url, $nonce ); + + // Return the url, if there is one + if ( !empty( $url ) ) + return $url; + } +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-widgets.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-widgets.php new file mode 100644 index 0000000..2ceaef6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-widgets.php @@ -0,0 +1,193 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/* Register widgets for groups component */ +function groups_register_widgets() { + add_action('widgets_init', create_function('', 'return register_widget("BP_Groups_Widget");') ); +} +add_action( 'bp_register_widgets', 'groups_register_widgets' ); + +/*** GROUPS WIDGET *****************/ + +class BP_Groups_Widget extends WP_Widget { + function bp_groups_widget() { + $this->_construct(); + } + + function __construct() { + $widget_ops = array( 'description' => __( 'A dynamic list of recently active, popular, and newest groups', 'buddypress' ) ); + parent::__construct( false, __( 'Groups', 'buddypress' ), $widget_ops ); + + if ( is_active_widget( false, false, $this->id_base ) && !is_admin() && !is_network_admin() ) { + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) + wp_enqueue_script( 'groups_widget_groups_list-js', BP_PLUGIN_URL . '/bp-groups/js/widget-groups.dev.js', array( 'jquery' ) ); + else + wp_enqueue_script( 'groups_widget_groups_list-js', BP_PLUGIN_URL . '/bp-groups/js/widget-groups.js', array( 'jquery' ) ); + } + } + + function widget( $args, $instance ) { + global $bp; + + $user_id = apply_filters( 'bp_group_widget_user_id', '0' ); + + extract( $args ); + + if ( empty( $instance['group_default'] ) ) + $instance['group_default'] = 'popular'; + + if ( empty( $instance['title'] ) ) + $instance['title'] = __( 'Groups', 'buddypress' ); + + echo $before_widget; + echo $before_title + . $instance['title'] + . $after_title; ?> + + <?php if ( bp_has_groups( 'user_id=' . $user_id . '&type=' . $instance['group_default'] . '&max=' . $instance['max_groups'] ) ) : ?> + <div class="item-options" id="groups-list-options"> + <a href="<?php echo site_url( bp_get_groups_root_slug() ); ?>" id="newest-groups"<?php if ( $instance['group_default'] == 'newest' ) : ?> class="selected"<?php endif; ?>><?php _e("Newest", 'buddypress') ?></a> | + <a href="<?php echo site_url( bp_get_groups_root_slug() ); ?>" id="recently-active-groups"<?php if ( $instance['group_default'] == 'active' ) : ?> class="selected"<?php endif; ?>><?php _e("Active", 'buddypress') ?></a> | + <a href="<?php echo site_url( bp_get_groups_root_slug() ); ?>" id="popular-groups" <?php if ( $instance['group_default'] == 'popular' ) : ?> class="selected"<?php endif; ?>><?php _e("Popular", 'buddypress') ?></a> + </div> + + <ul id="groups-list" class="item-list"> + <?php while ( bp_groups() ) : bp_the_group(); ?> + <li> + <div class="item-avatar"> + <a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_avatar_thumb() ?></a> + </div> + + <div class="item"> + <div class="item-title"><a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_name() ?></a></div> + <div class="item-meta"> + <span class="activity"> + <?php + if ( 'newest' == $instance['group_default'] ) + printf( __( 'created %s', 'buddypress' ), bp_get_group_date_created() ); + if ( 'active' == $instance['group_default'] ) + printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); + else if ( 'popular' == $instance['group_default'] ) + bp_group_member_count(); + ?> + </span> + </div> + </div> + </li> + + <?php endwhile; ?> + </ul> + <?php wp_nonce_field( 'groups_widget_groups_list', '_wpnonce-groups' ); ?> + <input type="hidden" name="groups_widget_max" id="groups_widget_max" value="<?php echo esc_attr( $instance['max_groups'] ); ?>" /> + + <?php else: ?> + + <div class="widget-error"> + <?php _e('There are no groups to display.', 'buddypress') ?> + </div> + + <?php endif; ?> + + <?php echo $after_widget; ?> + <?php + } + + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['max_groups'] = strip_tags( $new_instance['max_groups'] ); + $instance['group_default'] = strip_tags( $new_instance['group_default'] ); + + return $instance; + } + + function form( $instance ) { + $defaults = array( + 'title' => __( 'Groups', 'buddypress' ), + 'max_groups' => 5, + 'group_default' => 'active' + ); + $instance = wp_parse_args( (array) $instance, $defaults ); + + $title = strip_tags( $instance['title'] ); + $max_groups = strip_tags( $instance['max_groups'] ); + $group_default = strip_tags( $instance['group_default'] ); + ?> + + <p><label for="bp-groups-widget-title"><?php _e('Title:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" style="width: 100%" /></label></p> + + <p><label for="bp-groups-widget-groups-max"><?php _e('Max groups to show:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_groups' ); ?>" name="<?php echo $this->get_field_name( 'max_groups' ); ?>" type="text" value="<?php echo esc_attr( $max_groups ); ?>" style="width: 30%" /></label></p> + + <p> + <label for="bp-groups-widget-groups-default"><?php _e('Default groups to show:', 'buddypress'); ?> + <select name="<?php echo $this->get_field_name( 'group_default' ); ?>"> + <option value="newest" <?php if ( $group_default == 'newest' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Newest', 'buddypress' ) ?></option> + <option value="active" <?php if ( $group_default == 'active' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Active', 'buddypress' ) ?></option> + <option value="popular" <?php if ( $group_default == 'popular' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Popular', 'buddypress' ) ?></option> + </select> + </label> + </p> + <?php + } +} + +function groups_ajax_widget_groups_list() { + global $bp; + + check_ajax_referer('groups_widget_groups_list'); + + switch ( $_POST['filter'] ) { + case 'newest-groups': + $type = 'newest'; + break; + case 'recently-active-groups': + $type = 'active'; + break; + case 'popular-groups': + $type = 'popular'; + break; + } + + if ( bp_has_groups( 'type=' . $type . '&per_page=' . $_POST['max_groups'] . '&max=' . $_POST['max_groups'] ) ) : ?> + <?php echo "0[[SPLIT]]"; ?> + + <ul id="groups-list" class="item-list"> + <?php while ( bp_groups() ) : bp_the_group(); ?> + <li> + <div class="item-avatar"> + <a href="<?php bp_group_permalink() ?>"><?php bp_group_avatar_thumb() ?></a> + </div> + + <div class="item"> + <div class="item-title"><a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_name() ?></a></div> + <div class="item-meta"> + <span class="activity"> + <?php + if ( 'newest-groups' == $_POST['filter'] ) { + printf( __( 'created %s', 'buddypress' ), bp_get_group_date_created() ); + } else if ( 'recently-active-groups' == $_POST['filter'] ) { + printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); + } else if ( 'popular-groups' == $_POST['filter'] ) { + bp_group_member_count(); + } + ?> + </span> + </div> + </div> + </li> + + <?php endwhile; ?> + </ul> + <?php wp_nonce_field( 'groups_widget_groups_list', '_wpnonce-groups' ); ?> + <input type="hidden" name="groups_widget_max" id="groups_widget_max" value="<?php echo esc_attr( $_POST['max_groups'] ); ?>" /> + + <?php else: ?> + + <?php echo "-1[[SPLIT]]<li>" . __("No groups matched the current filter.", 'buddypress'); ?> + + <?php endif; + +} +add_action( 'wp_ajax_widget_groups_list', 'groups_ajax_widget_groups_list' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/js/widget-groups.dev.js b/wp-content/plugins/buddypress/bp-groups/js/widget-groups.dev.js new file mode 100644 index 0000000..52ed66c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/js/widget-groups.dev.js @@ -0,0 +1,49 @@ +jQuery(document).ready( function() { + jQuery(".widget div#groups-list-options a").live('click', + function() { + var link = this; + jQuery(link).addClass('loading'); + + jQuery(".widget div#groups-list-options a").removeClass("selected"); + jQuery(this).addClass('selected'); + + jQuery.post( ajaxurl, { + action: 'widget_groups_list', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': jQuery("input#_wpnonce-groups").val(), + 'max_groups': jQuery("input#groups_widget_max").val(), + 'filter': jQuery(this).attr('id') + }, + function(response) + { + jQuery(link).removeClass('loading'); + groups_wiget_response(response); + }); + + return false; + } + ); +}); + +function groups_wiget_response(response) { + response = response.substr(0, response.length-1); + response = response.split('[[SPLIT]]'); + + if ( response[0] != "-1" ) { + jQuery(".widget ul#groups-list").fadeOut(200, + function() { + jQuery(".widget ul#groups-list").html(response[1]); + jQuery(".widget ul#groups-list").fadeIn(200); + } + ); + + } else { + jQuery(".widget ul#groups-list").fadeOut(200, + function() { + var message = '<p>' + response[1] + '</p>'; + jQuery(".widget ul#groups-list").html(message); + jQuery(".widget ul#groups-list").fadeIn(200); + } + ); + } +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/js/widget-groups.js b/wp-content/plugins/buddypress/bp-groups/js/widget-groups.js new file mode 100644 index 0000000..f893d06 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/js/widget-groups.js @@ -0,0 +1 @@ +jQuery(document).ready(function(){jQuery(".widget div#groups-list-options a").live("click",function(){var a=this;jQuery(a).addClass("loading");jQuery(".widget div#groups-list-options a").removeClass("selected");jQuery(this).addClass("selected");jQuery.post(ajaxurl,{action:"widget_groups_list",cookie:encodeURIComponent(document.cookie),_wpnonce:jQuery("input#_wpnonce-groups").val(),max_groups:jQuery("input#groups_widget_max").val(),filter:jQuery(this).attr("id")},function(b){jQuery(a).removeClass("loading");groups_wiget_response(b)});return false})});function groups_wiget_response(a){a=a.substr(0,a.length-1);a=a.split("[[SPLIT]]");if(a[0]!="-1"){jQuery(".widget ul#groups-list").fadeOut(200,function(){jQuery(".widget ul#groups-list").html(a[1]);jQuery(".widget ul#groups-list").fadeIn(200)})}else{jQuery(".widget ul#groups-list").fadeOut(200,function(){var b="<p>"+a[1]+"</p>";jQuery(".widget ul#groups-list").html(b);jQuery(".widget ul#groups-list").fadeIn(200)})}}; \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-languages/buddypress.pot b/wp-content/plugins/buddypress/bp-languages/buddypress.pot new file mode 100644 index 0000000..b231eea --- /dev/null +++ b/wp-content/plugins/buddypress/bp-languages/buddypress.pot @@ -0,0 +1,5012 @@ +# Copyright (C) 2012 BuddyPress +# This file is distributed under the same license as the BuddyPress package. +msgid "" +msgstr "" +"Project-Id-Version: BuddyPress \n" +"Report-Msgid-Bugs-To: http://wppolyglots.wordpress.com\n" +"POT-Creation-Date: 2012-04-13 13:36:25+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2012-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" + +#: bp-activity/bp-activity-actions.php:153 +msgid "Activity deleted successfully" +msgstr "" + +#: bp-activity/bp-activity-actions.php:155 +msgid "There was an error when deleting that activity" +msgstr "" + +#: bp-activity/bp-activity-actions.php:206 +#: bp-themes/bp-default/_inc/ajax.php:172 +msgid "Please enter some content to post." +msgstr "" + +#: bp-activity/bp-activity-actions.php:227 +msgid "Update Posted!" +msgstr "" + +#: bp-activity/bp-activity-actions.php:229 +msgid "There was an error when posting your update, please try again." +msgstr "" + +#: bp-activity/bp-activity-actions.php:268 +#: bp-themes/bp-default/_inc/ajax.php:217 +msgid "Please do not leave the comment area blank." +msgstr "" + +#: bp-activity/bp-activity-actions.php:279 +msgid "Reply Posted!" +msgstr "" + +#: bp-activity/bp-activity-actions.php:281 +#: bp-themes/bp-default/_inc/ajax.php:222 +#: bp-themes/bp-default/_inc/ajax.php:233 +msgid "There was an error posting that reply, please try again." +msgstr "" + +#: bp-activity/bp-activity-actions.php:315 +msgid "Activity marked as favorite." +msgstr "" + +#: bp-activity/bp-activity-actions.php:317 +msgid "There was an error marking that activity as a favorite, please try again." +msgstr "" + +#: bp-activity/bp-activity-actions.php:351 +msgid "Activity removed as favorite." +msgstr "" + +#: bp-activity/bp-activity-actions.php:353 +msgid "There was an error removing that activity as a favorite, please try again." +msgstr "" + +#: bp-activity/bp-activity-filters.php:248 +msgid "[Read more]" +msgstr "" + +#: bp-activity/bp-activity-filters.php:253 +msgid "…" +msgstr "" + +#: bp-activity/bp-activity-functions.php:151 +msgid "@%s Mentions" +msgstr "" + +#: bp-activity/bp-activity-functions.php:154 +msgid "You have %1$d new activity mentions" +msgstr "" + +#: bp-activity/bp-activity-functions.php:158 +msgid "%1$s mentioned you in an activity update" +msgstr "" + +#: bp-activity/bp-activity-functions.php:664 +msgid "Posted an update" +msgstr "" + +#: bp-activity/bp-activity-functions.php:872 +msgid "%s posted an update" +msgstr "" + +#: bp-activity/bp-activity-functions.php:939 +msgid "%s posted a new activity comment" +msgstr "" + +#: bp-activity/bp-activity-functions.php:1310 +msgid "Thumbnail" +msgstr "" + +#: bp-activity/bp-activity-loader.php:34 bp-core/admin/bp-core-admin.php:358 +msgid "Activity Streams" +msgstr "" + +#: bp-activity/bp-activity-loader.php:89 +msgid "Search Activity..." +msgstr "" + +#: bp-activity/bp-activity-loader.php:113 +#: bp-activity/bp-activity-loader.php:235 +#: bp-activity/bp-activity-screens.php:280 +#: bp-activity/feeds/bp-activity-personal-feed.php:27 +msgid "Activity" +msgstr "" + +#: bp-activity/bp-activity-loader.php:138 +#: bp-activity/bp-activity-loader.php:251 +msgid "Personal" +msgstr "" + +#: bp-activity/bp-activity-loader.php:148 +#: bp-activity/bp-activity-loader.php:228 +#: bp-activity/feeds/bp-activity-mentions-feed.php:27 +#: bp-activity/feeds/bp-activity-mentions-feed.php:30 +#: bp-themes/bp-default/activity/index.php:79 +msgid "Mentions" +msgstr "" + +#: bp-activity/bp-activity-loader.php:159 +#: bp-activity/bp-activity-loader.php:259 +msgid "Favorites" +msgstr "" + +#: bp-activity/bp-activity-loader.php:171 +#: bp-activity/bp-activity-loader.php:268 bp-friends/bp-friends-loader.php:153 +#: bp-friends/bp-friends-screens.php:68 +msgid "Friends" +msgstr "" + +#: bp-activity/bp-activity-loader.php:184 +#: bp-activity/bp-activity-loader.php:278 bp-core/admin/bp-core-update.php:470 +#: bp-core/bp-core-template.php:248 bp-groups/bp-groups-activity.php:135 +#: bp-groups/bp-groups-activity.php:171 bp-groups/bp-groups-activity.php:207 +#: bp-groups/bp-groups-activity.php:243 bp-groups/bp-groups-loader.php:395 +#: bp-groups/bp-groups-screens.php:831 bp-groups/bp-groups-widgets.php:20 +#: bp-groups/bp-groups-widgets.php:41 bp-groups/bp-groups-widgets.php:107 +msgid "Groups" +msgstr "" + +#: bp-activity/bp-activity-loader.php:226 +msgid "Mentions <span class=\"count\">%s</span>" +msgstr "" + +#: bp-activity/bp-activity-loader.php:303 +msgid "My Activity" +msgstr "" + +#: bp-activity/bp-activity-notifications.php:67 +msgid "%s mentioned you in an update" +msgstr "" + +#: bp-activity/bp-activity-notifications.php:70 bp-core/deprecated/1.5.php:337 +msgid "" +"%1$s mentioned you in the group \"%2$s\":\n" +"\n" +"\"%3$s\"\n" +"\n" +"To view and respond to the message, log in and visit: %4$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-activity/bp-activity-notifications.php:80 +msgid "" +"%1$s mentioned you in an update:\n" +"\n" +"\"%2$s\"\n" +"\n" +"To view and respond to the message, log in and visit: %3$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-activity/bp-activity-notifications.php:91 +#: bp-activity/bp-activity-notifications.php:166 +#: bp-activity/bp-activity-notifications.php:212 bp-core/deprecated/1.5.php:347 +#: bp-friends/bp-friends-notifications.php:36 +#: bp-friends/bp-friends-notifications.php:77 +#: bp-groups/bp-groups-notifications.php:33 +#: bp-groups/bp-groups-notifications.php:85 +#: bp-groups/bp-groups-notifications.php:142 +#: bp-groups/bp-groups-notifications.php:190 +#: bp-groups/bp-groups-notifications.php:244 +#: bp-messages/bp-messages-notifications.php:45 +msgid "To disable these notifications please log in and go to: %s" +msgstr "" + +#: bp-activity/bp-activity-notifications.php:154 +msgid "%s replied to one of your updates" +msgstr "" + +#: bp-activity/bp-activity-notifications.php:156 +msgid "" +"%1$s replied to one of your updates:\n" +"\n" +"\"%2$s\"\n" +"\n" +"To view your original update and all comments, log in and visit: %3$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-activity/bp-activity-notifications.php:197 +msgid "%s replied to one of your comments" +msgstr "" + +#: bp-activity/bp-activity-notifications.php:202 +msgid "" +"%1$s replied to one of your comments:\n" +"\n" +"\"%2$s\"\n" +"\n" +"To view the original activity, your comment and all replies, log in and visit: %3$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-activity/bp-activity-screens.php:245 +msgid "You do not have access to this activity." +msgstr "" + +#: bp-activity/bp-activity-screens.php:281 bp-blogs/bp-blogs-template.php:495 +#: bp-core/admin/bp-core-admin.php:111 bp-core/admin/bp-core-admin.php:121 +#: bp-core/admin/bp-core-admin.php:129 bp-core/admin/bp-core-admin.php:137 +#: bp-core/admin/bp-core-admin.php:147 bp-core/admin/bp-core-admin.php:159 +#: bp-friends/bp-friends-screens.php:69 bp-groups/bp-groups-screens.php:832 +#: bp-messages/bp-messages-screens.php:150 +#: bp-themes/bp-default/groups/single/admin.php:26 +#: bp-themes/bp-default/registration/register.php:205 +msgid "Yes" +msgstr "" + +#: bp-activity/bp-activity-screens.php:282 bp-blogs/bp-blogs-template.php:499 +#: bp-core/admin/bp-core-admin.php:112 bp-core/admin/bp-core-admin.php:122 +#: bp-core/admin/bp-core-admin.php:130 bp-core/admin/bp-core-admin.php:138 +#: bp-core/admin/bp-core-admin.php:148 bp-core/admin/bp-core-admin.php:160 +#: bp-friends/bp-friends-screens.php:70 bp-groups/bp-groups-screens.php:833 +#: bp-messages/bp-messages-screens.php:151 +#: bp-themes/bp-default/groups/single/admin.php:27 +#: bp-themes/bp-default/registration/register.php:206 +msgid "No" +msgstr "" + +#: bp-activity/bp-activity-screens.php:289 +msgid "A member mentions you in an update using \"@%s\"" +msgstr "" + +#: bp-activity/bp-activity-screens.php:295 +msgid "A member replies to an update or comment you've posted" +msgstr "" + +#: bp-activity/bp-activity-template.php:173 +msgctxt "Activity pagination previous text" +msgid "←" +msgstr "" + +#: bp-activity/bp-activity-template.php:174 +msgctxt "Activity pagination next text" +msgid "→" +msgstr "" + +#: bp-activity/bp-activity-template.php:453 +msgid "Viewing item %1$s to %2$s (of %3$s items)" +msgstr "" + +#: bp-activity/bp-activity-template.php:897 +#: bp-activity/bp-activity-template.php:1008 +#: bp-activity/bp-activity-template.php:1017 +#: bp-forums/bp-forums-template.php:488 bp-forums/bp-forums-template.php:605 +#: bp-forums/bp-forums-template.php:1192 bp-groups/bp-groups-template.php:572 +#: bp-groups/bp-groups-template.php:595 bp-groups/bp-groups-template.php:1034 +#: bp-groups/bp-groups-template.php:1050 bp-groups/bp-groups-template.php:1099 +#: bp-groups/bp-groups-template.php:1115 bp-groups/bp-groups-template.php:1795 +#: bp-groups/bp-groups-template.php:1804 bp-groups/bp-groups-template.php:1813 +#: bp-groups/bp-groups-template.php:2519 bp-members/bp-members-template.php:484 +#: bp-members/bp-members-template.php:780 +#: bp-members/bp-members-template.php:800 +#: bp-themes/bp-default/groups/single/admin.php:185 +#: bp-themes/bp-default/groups/single/admin.php:210 +msgid "Profile picture of %s" +msgstr "" + +#: bp-activity/bp-activity-template.php:992 +#: bp-groups/bp-groups-template.php:389 +msgid "Group logo of %s" +msgstr "" + +#: bp-activity/bp-activity-template.php:1000 bp-blogs/bp-blogs-template.php:282 +msgid "Site authored by %s" +msgstr "" + +#: bp-activity/bp-activity-template.php:1191 +msgid "View Discussion" +msgstr "" + +#: bp-activity/bp-activity-template.php:2004 +#: bp-forums/bp-forums-template.php:1263 bp-groups/bp-groups-template.php:1293 +#: bp-themes/bp-default/activity/comment.php:43 +#: bp-themes/bp-default/members/single/messages/messages-loop.php:50 +#: bp-themes/bp-default/members/single/messages/single.php:24 +#: bp-xprofile/bp-xprofile-admin.php:464 +msgid "Delete" +msgstr "" + +#: bp-activity/bp-activity-template.php:2053 +#: bp-core/admin/bp-core-admin.php:551 bp-core/admin/bp-core-admin.php:604 +#: bp-members/bp-members-template.php:588 +#: bp-themes/bp-default/activity/entry.php:37 +#: bp-themes/bp-default/functions.php:173 +#: bp-xprofile/bp-xprofile-loader.php:185 +msgid "View" +msgstr "" + +#: bp-activity/bp-activity-template.php:2142 +msgid "xprofile" +msgstr "" + +#: bp-activity/bp-activity-template.php:2142 +msgid "friends" +msgstr "" + +#: bp-activity/bp-activity-template.php:2142 +#: bp-core/admin/bp-core-update.php:405 +msgid "groups" +msgstr "" + +#: bp-activity/bp-activity-template.php:2142 +msgid "status" +msgstr "" + +#: bp-activity/bp-activity-template.php:2142 +msgid "sites" +msgstr "" + +#: bp-activity/bp-activity-template.php:2150 +msgid "Clear Filter" +msgstr "" + +#: bp-activity/bp-activity-template.php:2340 +msgid "a user" +msgstr "" + +#: bp-activity/bp-activity-template.php:2380 +msgid "Send a public message on your activity stream." +msgstr "" + +#: bp-activity/bp-activity-template.php:2381 +msgid "Public Message" +msgstr "" + +#: bp-activity/bp-activity-template.php:2690 +msgid "Site Wide Activity RSS Feed" +msgstr "" + +#: bp-activity/feeds/bp-activity-favorites-feed.php:27 +#: bp-activity/feeds/bp-activity-favorites-feed.php:30 +msgid "Favorite Activity" +msgstr "" + +#: bp-activity/feeds/bp-activity-favorites-feed.php:56 +#: bp-activity/feeds/bp-activity-friends-feed.php:49 +#: bp-activity/feeds/bp-activity-group-feed.php:49 +#: bp-activity/feeds/bp-activity-mentions-feed.php:49 +#: bp-activity/feeds/bp-activity-mygroups-feed.php:54 +#: bp-activity/feeds/bp-activity-personal-feed.php:49 +#: bp-activity/feeds/bp-activity-sitewide-feed.php:49 +msgid "Comments: %s" +msgstr "" + +#: bp-activity/feeds/bp-activity-favorites-feed.php:60 +#: bp-activity/feeds/bp-activity-friends-feed.php:53 +#: bp-activity/feeds/bp-activity-mentions-feed.php:53 +#: bp-activity/feeds/bp-activity-personal-feed.php:53 +msgid "In reply to" +msgstr "" + +#: bp-activity/feeds/bp-activity-friends-feed.php:27 +msgid "Friends Activity" +msgstr "" + +#: bp-activity/feeds/bp-activity-friends-feed.php:30 +msgid "%s - Friends Activity Feed" +msgstr "" + +#: bp-activity/feeds/bp-activity-group-feed.php:27 +msgid "Group Activity" +msgstr "" + +#: bp-activity/feeds/bp-activity-group-feed.php:30 +msgid "%s - Group Activity Feed" +msgstr "" + +#: bp-activity/feeds/bp-activity-mygroups-feed.php:27 +#: bp-activity/feeds/bp-activity-mygroups-feed.php:30 +msgid "My Groups - Public Activity" +msgstr "" + +#: bp-activity/feeds/bp-activity-personal-feed.php:30 +msgid "%s - Activity Feed" +msgstr "" + +#: bp-activity/feeds/bp-activity-sitewide-feed.php:27 +msgid "Site Wide Activity" +msgstr "" + +#: bp-activity/feeds/bp-activity-sitewide-feed.php:30 +msgid "Site Wide Activity Feed" +msgstr "" + +#: bp-blogs/bp-blogs-activity.php:17 +msgid "New site created" +msgstr "" + +#: bp-blogs/bp-blogs-activity.php:18 +msgid "New post published" +msgstr "" + +#: bp-blogs/bp-blogs-activity.php:19 +msgid "New post comment posted" +msgstr "" + +#: bp-blogs/bp-blogs-buddybar.php:25 bp-blogs/bp-blogs-loader.php:156 +#: bp-blogs/bp-blogs-loader.php:177 bp-core/bp-core-adminbar.php:124 +msgid "My Sites" +msgstr "" + +#: bp-blogs/bp-blogs-buddybar.php:37 bp-core/bp-core-adminbar.php:136 +#: bp-core/bp-core-buddybar.php:481 +msgid "Dashboard" +msgstr "" + +#: bp-blogs/bp-blogs-buddybar.php:38 bp-core/bp-core-adminbar.php:139 +#: bp-core/bp-core-buddybar.php:485 +msgid "New Post" +msgstr "" + +#: bp-blogs/bp-blogs-buddybar.php:39 bp-core/bp-core-buddybar.php:486 +msgid "Manage Posts" +msgstr "" + +#: bp-blogs/bp-blogs-buddybar.php:40 bp-core/bp-core-adminbar.php:140 +#: bp-core/bp-core-buddybar.php:487 +msgid "Manage Comments" +msgstr "" + +#: bp-blogs/bp-blogs-buddybar.php:53 +msgid "Create a Site!" +msgstr "" + +#: bp-blogs/bp-blogs-functions.php:115 +msgid "%s created the site %s" +msgstr "" + +#: bp-blogs/bp-blogs-functions.php:187 +msgid "%1$s wrote a new post, %2$s, on the site %3$s" +msgstr "" + +#: bp-blogs/bp-blogs-functions.php:189 +msgid "%1$s wrote a new post, %2$s" +msgstr "" + +#: bp-blogs/bp-blogs-functions.php:272 +msgid "%1$s commented on the post, %2$s, on the site %3$s" +msgstr "" + +#: bp-blogs/bp-blogs-functions.php:274 +msgid "%1$s commented on the post, %2$s" +msgstr "" + +#: bp-blogs/bp-blogs-loader.php:24 bp-core/admin/bp-core-admin.php:370 +msgid "Site Tracking" +msgstr "" + +#: bp-blogs/bp-blogs-loader.php:58 +msgid "Search sites..." +msgstr "" + +#: bp-blogs/bp-blogs-loader.php:108 +msgid "Sites <span>%d</span>" +msgstr "" + +#: bp-blogs/bp-blogs-loader.php:148 bp-core/admin/bp-core-update.php:501 +msgid "Sites" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:135 +msgctxt "Blog pagination previous text" +msgid "←" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:136 +msgctxt "Blog pagination next text" +msgid "→" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:258 +msgid "Viewing site %1$s to %2$s (of %3$s sites)" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:345 bp-core/bp-core-classes.php:175 +#: bp-groups/bp-groups-widgets.php:70 bp-groups/bp-groups-widgets.php:170 +#: bp-members/bp-members-template.php:559 +#: bp-members/bp-members-template.php:833 +#: bp-themes/bp-default/groups/groups-loop.php:47 +#: bp-themes/bp-default/groups/single/group-header.php:42 +msgid "active %s" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:357 +msgid "Latest Post: %s" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:421 +msgid "There was a problem, please correct the form below and try again." +msgstr "" + +#: bp-blogs/bp-blogs-template.php:424 +msgid "By filling out the form below, you can <strong>add a site to your account</strong>. There is no limit to the number of sites that you can have, so create to your heart's content, but blog responsibly!" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:426 +msgid "If you’re not going to use a great domain, leave it for a new user. Now have at it!" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:435 +msgid "Create Site" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:449 +msgid "Site Name:" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:451 +msgid "Site Domain:" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:465 +msgid "Your address will be " +msgstr "" + +#: bp-blogs/bp-blogs-template.php:468 +msgid "blogname" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:470 +msgid "domain." +msgstr "" + +#: bp-blogs/bp-blogs-template.php:473 +msgid "Must be at least 4 characters, letters and numbers only. It cannot be changed so choose carefully!)" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:479 +msgid "Site Title:" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:490 +msgid "Privacy:" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:491 +#: bp-themes/bp-default/registration/register.php:202 +msgid "I would like my site to appear in search engines, and in public listings around this network." +msgstr "" + +#: bp-blogs/bp-blogs-template.php:574 +msgid "Congratulations! You have successfully registered a new site." +msgstr "" + +#: bp-blogs/bp-blogs-template.php:576 +msgid "<a href=\"%1$s\">%2$s</a> is your new site. <a href=\"%3$s\">Login</a> as \"%4$s\" using your existing password." +msgstr "" + +#: bp-blogs/bp-blogs-template.php:587 bp-core/bp-core-filters.php:327 +#: bp-themes/bp-default/blogs/create.php:21 +#: bp-themes/bp-default/blogs/index.php:23 +msgid "Create a Site" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:600 +msgid "%s's Sites" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:601 +msgid "%s's Recent Posts" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:602 +msgid "%s's Recent Comments" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:617 bp-core/deprecated/1.5.php:397 +#: bp-forums/bp-forums-template.php:1313 bp-groups/bp-groups-template.php:2261 +#: bp-members/bp-members-template.php:674 bp-themes/bp-default/header.php:35 +#: bp-themes/bp-default/searchform.php:5 +msgid "Search" +msgstr "" + +#: bp-blogs/bp-blogs-template.php:650 bp-blogs/bp-blogs-template.php:651 +#: bp-core/bp-core-adminbar.php:143 +msgid "Visit Site" +msgstr "" + +#: bp-blogs/bp-blogs-widgets.php:25 +msgid "Recent Networkwide Posts" +msgstr "" + +#: bp-blogs/bp-blogs-widgets.php:68 +msgid "Sorry, there were no posts found. Why not write one?" +msgstr "" + +#: bp-blogs/bp-blogs-widgets.php:88 +msgid "Max posts to show:" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:11 +msgid "IMPORTANT: <a href=\"http://codex.buddypress.org/buddypress-site-administration/upgrading-buddypress/\">Read this before attempting to update BuddyPress</a>" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:32 bp-core/admin/bp-core-admin.php:251 +#: bp-core/admin/bp-core-update.php:72 bp-core/admin/bp-core-update.php:88 +#: bp-core/admin/bp-core-update.php:219 bp-core/bp-core-functions.php:253 +msgid "Components" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:36 bp-core/admin/bp-core-admin.php:293 +#: bp-core/admin/bp-core-update.php:73 bp-core/admin/bp-core-update.php:89 +#: bp-core/admin/bp-core-update.php:223 bp-core/bp-core-functions.php:254 +msgid "Pages" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:40 bp-core/admin/bp-core-admin.php:91 +#: bp-core/bp-core-functions.php:255 bp-groups/bp-groups-loader.php:189 +#: bp-groups/bp-groups-template.php:1279 bp-settings/bp-settings-loader.php:15 +#: bp-settings/bp-settings-loader.php:72 bp-settings/bp-settings-loader.php:150 +msgid "Settings" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:48 bp-core/admin/bp-core-update.php:485 +#: bp-core/bp-core-template.php:254 bp-forums/bp-forums-admin.php:12 +#: bp-forums/bp-forums-admin.php:25 bp-forums/bp-forums-admin.php:265 +#: bp-forums/bp-forums-loader.php:111 bp-forums/bp-forums-loader.php:194 +#: bp-forums/bp-forums-loader.php:237 +msgid "Forums" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:96 bp-core/admin/bp-core-admin.php:257 +#: bp-core/admin/bp-core-admin.php:299 +msgid "Settings Saved" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:109 +msgid "Disable BuddyPress to WordPress profile syncing?" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:119 +msgid "Hide admin bar for logged out users?" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:127 +msgid "Disable avatar uploads? (Gravatars will still work)" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:135 +msgid "Disable user account deletion?" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:145 +msgid "Disable activity stream commenting on blog and forum posts?" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:157 +msgid "Restrict group creation to Site Admins?" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:174 bp-core/admin/bp-core-admin.php:268 +msgid "Save Settings" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:310 +msgid "Save All" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:342 bp-xprofile/bp-xprofile-loader.php:25 +msgid "Extended Profiles" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:343 +msgid "Customize your community with fully editable profile fields that allow your users to describe themselves." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:346 +msgid "Account Settings" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:347 +msgid "Allow your users to modify their account and notification settings directly from within their profiles." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:350 bp-friends/bp-friends-loader.php:24 +msgid "Friend Connections" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:351 +msgid "Let your users make connections so they can track the activity of others and focus on the people they care about the most." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:354 +msgid "Private Messaging" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:355 +msgid "Allow your users to talk to each other directly and in private. Not just limited to one-on-one discussions, messages can be sent between any number of members." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:359 +msgid "Global, personal, and group activity streams with threaded commenting, direct posting, favoriting and @mentions, all with full RSS feed and email notification support." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:362 bp-groups/bp-groups-loader.php:26 +msgid "User Groups" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:363 +msgid "Groups allow your users to organize themselves into specific public, private or hidden sections with separate activity streams and member listings." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:366 bp-forums/bp-forums-loader.php:24 +msgid "Discussion Forums" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:367 +msgid "Full-powered discussion forums built directly into groups allow for more conventional in-depth conversations. NOTE: This will require an extra (but easy) setup step." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:371 +msgid "Make BuddyPress aware of new posts and new comments from your site." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:376 +msgid "Make BuddyPress aware of new sites, new posts and new comments from across your entire network." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:400 bp-core/bp-core-loader.php:38 +msgid "BuddyPress Core" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:401 +msgid "It‘s what makes <del>time travel</del> BuddyPress possible!" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:404 +msgid "Community Members" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:405 +msgid "Everything in a BuddyPress community revolves around its members." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:418 +msgid "Available Components" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:420 +msgid "Each component has a unique purpose, and your community may not need each one." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:450 +msgid "Required Components" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:452 +msgid "The following components are required by BuddyPress and cannot be turned off." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:520 +msgid "Directories" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:522 +msgid "Associate a WordPress Page with each BuddyPress component directory." +msgstr "" + +#: bp-core/admin/bp-core-admin.php:542 bp-core/admin/bp-core-admin.php:595 +msgid "- None -" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:546 bp-core/admin/bp-core-admin.php:599 +msgid "New Page" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:547 bp-core/admin/bp-core-admin.php:600 +#: bp-xprofile/bp-xprofile-classes.php:760 +msgid "Save" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:573 bp-core/admin/bp-core-update.php:514 +#: bp-core/bp-core-functions.php:419 bp-members/bp-members-adminbar.php:104 +msgid "Register" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:574 bp-core/admin/bp-core-update.php:525 +#: bp-core/bp-core-functions.php:414 bp-messages/bp-messages-template.php:498 +#: bp-themes/bp-default/registration/activate.php:36 +msgid "Activate" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:577 +msgid "Registration" +msgstr "" + +#: bp-core/admin/bp-core-admin.php:579 +msgid "Associate WordPress Pages with the following BuddyPress Registration pages." +msgstr "" + +#: bp-core/admin/bp-core-schema.php:210 +msgctxt "First XProfile group name" +msgid "Base" +msgstr "" + +#: bp-core/admin/bp-core-schema.php:214 +msgctxt "XProfile fullname field name" +msgid "Name" +msgstr "" + +#: bp-core/admin/bp-core-update.php:74 bp-core/admin/bp-core-update.php:227 +msgid "Permalinks" +msgstr "" + +#: bp-core/admin/bp-core-update.php:75 bp-core/admin/bp-core-update.php:231 +msgid "Theme" +msgstr "" + +#: bp-core/admin/bp-core-update.php:76 bp-core/admin/bp-core-update.php:92 +#: bp-core/admin/bp-core-update.php:188 bp-core/admin/bp-core-update.php:235 +#: bp-core/admin/bp-core-update.php:1212 +#: bp-themes/bp-default/groups/create.php:294 +msgid "Finish" +msgstr "" + +#: bp-core/admin/bp-core-update.php:82 bp-core/admin/bp-core-update.php:211 +msgid "Multisite Update" +msgstr "" + +#: bp-core/admin/bp-core-update.php:85 bp-core/admin/bp-core-update.php:207 +msgid "Database Update" +msgstr "" + +#: bp-core/admin/bp-core-update.php:145 bp-core/admin/bp-core-update.php:1241 +msgid "Update" +msgstr "" + +#: bp-core/admin/bp-core-update.php:145 bp-core/admin/bp-core-update.php:1239 +msgid "Setup" +msgstr "" + +#: bp-core/admin/bp-core-update.php:153 +msgid "BuddyPress %s" +msgstr "" + +#: bp-core/admin/bp-core-update.php:191 +msgid "Finish & Activate" +msgstr "" + +#: bp-core/admin/bp-core-update.php:197 +msgid "Save & Next" +msgstr "" + +#: bp-core/admin/bp-core-update.php:215 +#: bp-themes/bp-default/blogs/create.php:21 +#: bp-themes/bp-default/blogs/index.php:23 +msgid "Site Directory" +msgstr "" + +#: bp-core/admin/bp-core-update.php:254 +msgid "Before you can continue using BuddyPress, a few minor adjustments need to be made. These changes are not destructive and will not remove or change any existing settings." +msgstr "" + +#: bp-core/admin/bp-core-update.php:302 +msgid "BuddyPress has detected a recent change to WordPress Multisite, which allows members of your community to have their own WordPress sites. You can enable or disable this feature at any time at <a href=\"%s\">Network Options</a>." +msgstr "" + +#: bp-core/admin/bp-core-update.php:304 +msgid "Please select the WordPress page you would like to use to display the site directory. You can either choose an existing page or let BuddyPress auto-create a page for you. If you'd like, you can go to manually create pages now, and return to this step when you are finished." +msgstr "" + +#: bp-core/admin/bp-core-update.php:306 bp-core/admin/bp-core-update.php:436 +msgid "Please Note:" +msgstr "" + +#: bp-core/admin/bp-core-update.php:306 bp-core/admin/bp-core-update.php:436 +msgid "If you have manually added BuddyPress navigation links in your theme you may need to remove these from your header.php to avoid duplicate links." +msgstr "" + +#: bp-core/admin/bp-core-update.php:308 +msgid "Would you like to enable site tracking, which tracks blog posts and comments from across your network?" +msgstr "" + +#: bp-core/admin/bp-core-update.php:313 +msgid "Enable Site Tracking?" +msgstr "" + +#: bp-core/admin/bp-core-update.php:319 +msgid "Track new sites, new posts and new comments across your entire network." +msgstr "" + +#: bp-core/admin/bp-core-update.php:327 +msgid "Select a WordPress page for the Sites directory." +msgstr "" + +#: bp-core/admin/bp-core-update.php:330 bp-core/admin/bp-core-update.php:446 +#: bp-core/admin/bp-core-update.php:459 bp-core/admin/bp-core-update.php:474 +#: bp-core/admin/bp-core-update.php:489 bp-core/admin/bp-core-update.php:505 +#: bp-core/admin/bp-core-update.php:518 bp-core/admin/bp-core-update.php:529 +msgid "Automatically create a page at:" +msgstr "" + +#: bp-core/admin/bp-core-update.php:331 bp-core/admin/bp-core-update.php:447 +#: bp-core/admin/bp-core-update.php:460 bp-core/admin/bp-core-update.php:475 +#: bp-core/admin/bp-core-update.php:490 bp-core/admin/bp-core-update.php:506 +#: bp-core/admin/bp-core-update.php:519 bp-core/admin/bp-core-update.php:530 +msgid "Use an existing page:" +msgstr "" + +#: bp-core/admin/bp-core-update.php:331 bp-core/admin/bp-core-update.php:447 +#: bp-core/admin/bp-core-update.php:460 bp-core/admin/bp-core-update.php:475 +#: bp-core/admin/bp-core-update.php:490 bp-core/admin/bp-core-update.php:506 +#: bp-core/admin/bp-core-update.php:519 bp-core/admin/bp-core-update.php:530 +msgid "- Select -" +msgstr "" + +#: bp-core/admin/bp-core-update.php:358 +msgid "BuddyPress bundles several individual social components together, each one adding a distinct feature. This first step decides which features are enabled on your site; all features are enabled by default. Don't worry, you can change your mind at any point in the future." +msgstr "" + +#: bp-core/admin/bp-core-update.php:402 +msgid "members" +msgstr "" + +#: bp-core/admin/bp-core-update.php:408 +msgid "activity" +msgstr "" + +#: bp-core/admin/bp-core-update.php:411 +msgid "forums" +msgstr "" + +#: bp-core/admin/bp-core-update.php:414 +msgid "blogs" +msgstr "" + +#: bp-core/admin/bp-core-update.php:417 +msgid "register" +msgstr "" + +#: bp-core/admin/bp-core-update.php:420 +msgid "activate" +msgstr "" + +#: bp-core/admin/bp-core-update.php:432 +msgid "BuddyPress now uses WordPress pages to display content. This allows you to easily change the names of pages or move them to a sub page." +msgstr "" + +#: bp-core/admin/bp-core-update.php:434 +msgid "Either choose an existing page or let BuddyPress auto-create pages for you. To manually create custom pages, come back to this step once you are finished." +msgstr "" + +#: bp-core/admin/bp-core-update.php:442 bp-core/bp-core-template.php:245 +#: bp-core/bp-core-widgets.php:23 bp-core/bp-core-widgets.php:110 +#: bp-groups/bp-groups-template.php:1285 bp-members/bp-members-loader.php:24 +#: bp-themes/bp-default/groups/single/admin.php:229 +msgid "Members" +msgstr "" + +#: bp-core/admin/bp-core-update.php:443 +msgid "Displays member profiles, and a directory of all site members." +msgstr "" + +#: bp-core/admin/bp-core-update.php:455 +#: bp-themes/bp-default/activity/index.php:23 +msgid "Site Activity" +msgstr "" + +#: bp-core/admin/bp-core-update.php:456 +msgid "Displays the activity for the entire site, a member's friends, groups and @mentions." +msgstr "" + +#: bp-core/admin/bp-core-update.php:471 +msgid "Displays individual groups as well as a directory of groups." +msgstr "" + +#: bp-core/admin/bp-core-update.php:486 +msgid "Displays a directory of public forum topics." +msgstr "" + +#: bp-core/admin/bp-core-update.php:502 +msgid "Displays a directory of the sites in your network." +msgstr "" + +#: bp-core/admin/bp-core-update.php:515 +msgid "Displays a site registration page where users can create new accounts." +msgstr "" + +#: bp-core/admin/bp-core-update.php:526 +msgid "The page users will visit to activate their account once they have registered." +msgstr "" + +#: bp-core/admin/bp-core-update.php:559 +msgid "Congratulations! You are already using pretty permalinks, which BuddyPress requires. If you'd like to change your settings, you may do so now. If you're happy with your current settings, click Save & Next to continue." +msgstr "" + +#: bp-core/admin/bp-core-update.php:561 +msgid "To make sure the pages created in the previous step work correctly, pretty permalinks must be active on your site." +msgstr "" + +#: bp-core/admin/bp-core-update.php:567 +msgid "Please select the permalink setting you would like to use. For more advanced options please visit the <a href=\"%s\">permalink settings page</a> first, and complete this setup wizard later." +msgstr "" + +#: bp-core/admin/bp-core-update.php:571 +msgid "Day and name" +msgstr "" + +#: bp-core/admin/bp-core-update.php:575 +msgid "Month and name" +msgstr "" + +#: bp-core/admin/bp-core-update.php:579 +msgid "Numeric" +msgstr "" + +#: bp-core/admin/bp-core-update.php:654 +msgid "BuddyPress introduces a whole range of new screens to display content. To display these screens, you need to decide how you want to handle them in your current theme." +msgstr "" + +#: bp-core/admin/bp-core-update.php:659 +msgid "Use BuddyPress Default" +msgstr "" + +#: bp-core/admin/bp-core-update.php:660 +msgid "BuddyPress Default" +msgstr "" + +#: bp-core/admin/bp-core-update.php:663 +msgid "BuddyPress Default contains everything you need to get up and running out of the box. It supports all features and is highly customizable." +msgstr "" + +#: bp-core/admin/bp-core-update.php:664 +msgid "This is the best choice if you do not have an existing WordPress theme, or want to start using BuddyPress immediately." +msgstr "" + +#: bp-core/admin/bp-core-update.php:665 +msgid "Yes, please!" +msgstr "" + +#: bp-core/admin/bp-core-update.php:672 +msgid "Other themes" +msgstr "" + +#: bp-core/admin/bp-core-update.php:673 +msgid "A BuddyPress theme" +msgstr "" + +#: bp-core/admin/bp-core-update.php:676 +msgid "We've found that you already have some other BuddyPress-compatible themes available. To use one of those, pick it from this list." +msgstr "" + +#: bp-core/admin/bp-core-update.php:679 +msgid "Use this theme" +msgstr "" + +#: bp-core/admin/bp-core-update.php:695 +msgid "Manually update current theme" +msgstr "" + +#: bp-core/admin/bp-core-update.php:697 +msgid "Your existing theme" +msgstr "" + +#: bp-core/admin/bp-core-update.php:701 +msgid "The BuddyPress Template Pack plugin will guide you through the process of manually upgrading your existing WordPress theme. This usually involves following the step-by-step instructions and copying the BuddyPress template files into your theme. This option requires a working knowledge of CSS and HTML, as you will need to tweak the new templates to match your existing theme." +msgstr "" + +#: bp-core/admin/bp-core-update.php:705 +msgid "Install BuddyPress Template Pack" +msgstr "" + +#: bp-core/admin/bp-core-update.php:709 +msgid "Choose this option (go to Appearance → BP Compatibility after setup is complete)" +msgstr "" + +#: bp-core/admin/bp-core-update.php:710 +msgid "Plugin Installed" +msgstr "" + +#: bp-core/admin/bp-core-update.php:719 +msgid "Do not change theme" +msgstr "" + +#: bp-core/admin/bp-core-update.php:722 +msgid "You are happy with your current theme and plan on changing it later." +msgstr "" + +#: bp-core/admin/bp-core-update.php:723 +msgid "This is the best choice if you have a highly customized theme on your site already, and want to later manually integrate BuddyPress into your site." +msgstr "" + +#: bp-core/admin/bp-core-update.php:725 +msgid "Don't change my current theme" +msgstr "" + +#: bp-core/admin/bp-core-update.php:747 +msgid "setup" +msgstr "" + +#: bp-core/admin/bp-core-update.php:747 +msgid "update" +msgstr "" + +#: bp-core/admin/bp-core-update.php:749 +msgid "The BuddyPress %1$s is complete, and your site is ready to go!" +msgstr "" + +#: bp-core/admin/bp-core-update.php:929 +msgid "Oops, there was a problem creating a configuration file. " +msgstr "" + +#: bp-core/admin/bp-core-update.php:935 +msgid "If your <code>web.config</code> file were <a href=\"http://codex.wordpress.org/Changing_File_Permissions\">writable</a>, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your <code>web.config</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all. Then insert this rule inside of the <code>/<configuration>/<system.webServer>/<rewrite>/<rules></code> element in <code>web.config</code> file." +msgstr "" + +#: bp-core/admin/bp-core-update.php:944 +msgid "Permalink structure updated. Remove write access on web.config file now!" +msgstr "" + +#: bp-core/admin/bp-core-update.php:949 +msgid "If your <code>.htaccess</code> file were <a href=\"http://codex.wordpress.org/Changing_File_Permissions\">writable</a>, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your <code>.htaccess</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all." +msgstr "" + +#: bp-core/admin/bp-core-update.php:961 +msgid "Paste all these rules into a new <code>.htaccess</code> file in the root of your WordPress installation and save the file. Once you're done, please hit the \"Save and Next\" button to continue." +msgstr "" + +#: bp-core/admin/bp-core-update.php:1185 +msgid "Installation was successful. The available options have now been updated, please continue with your selection." +msgstr "" + +#: bp-core/admin/bp-core-update.php:1244 bp-core/bp-core-functions.php:252 +#: bp-members/bp-members-signup.php:583 +msgid "BuddyPress" +msgstr "" + +#: bp-core/admin/bp-core-update.php:1340 +msgid "BuddyPress has been updated! Please run the <a href=\"%s\">update wizard</a>." +msgstr "" + +#: bp-core/admin/bp-core-update.php:1345 +msgid "BuddyPress was successfully installed! Please run the <a href=\"%s\">installation wizard</a>." +msgstr "" + +#: bp-core/bp-core-adminbar.php:95 +msgid "Admin Dashboard" +msgstr "" + +#: bp-core/bp-core-adminbar.php:106 +msgid "Network Dashboard" +msgstr "" + +#: bp-core/bp-core-adminbar.php:131 +msgid "Blavatar" +msgstr "" + +#: bp-core/bp-core-adminbar.php:160 +msgid "Comments %s" +msgstr "" + +#: bp-core/bp-core-adminbar.php:173 +msgid "Appearance" +msgstr "" + +#: bp-core/bp-core-adminbar.php:179 +msgid "Themes" +msgstr "" + +#: bp-core/bp-core-adminbar.php:182 +msgid "Widgets" +msgstr "" + +#: bp-core/bp-core-adminbar.php:185 +msgid "Menus" +msgstr "" + +#: bp-core/bp-core-adminbar.php:188 +msgid "Background" +msgstr "" + +#: bp-core/bp-core-adminbar.php:191 +msgid "Header" +msgstr "" + +#: bp-core/bp-core-adminbar.php:223 +msgid "%d WordPress Update" +msgstr "" + +#: bp-core/bp-core-adminbar.php:225 +msgid "%d Plugin Update" +msgid_plural "%d Plugin Updates" +msgstr[0] "" +msgstr[1] "" + +#: bp-core/bp-core-adminbar.php:227 +msgid "%d Theme Update" +msgid_plural "%d Theme Updates" +msgstr[0] "" +msgstr[1] "" + +#: bp-core/bp-core-adminbar.php:232 +msgid "Updates %s" +msgstr "" + +#: bp-core/bp-core-avatars.php:91 +msgid "Avatar Image" +msgstr "" + +#: bp-core/bp-core-avatars.php:401 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: bp-core/bp-core-avatars.php:402 bp-core/bp-core-avatars.php:403 +msgid "Your image was bigger than the maximum allowed file size of: " +msgstr "" + +#: bp-core/bp-core-avatars.php:404 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: bp-core/bp-core-avatars.php:405 +msgid "No file was uploaded" +msgstr "" + +#: bp-core/bp-core-avatars.php:406 +msgid "Missing a temporary folder" +msgstr "" + +#: bp-core/bp-core-avatars.php:410 +msgid "Your upload failed, please try again. Error was: %s" +msgstr "" + +#: bp-core/bp-core-avatars.php:415 +msgid "The file you uploaded is too big. Please upload a file under %s" +msgstr "" + +#: bp-core/bp-core-avatars.php:420 +msgid "Please upload only JPG, GIF or PNG photos." +msgstr "" + +#: bp-core/bp-core-avatars.php:431 bp-core/bp-core-avatars.php:444 +msgid "Upload Failed! Error was: %s" +msgstr "" + +#: bp-core/bp-core-avatars.php:462 +msgid "Upload failed! Error was: %s" +msgstr "" + +#: bp-core/bp-core-avatars.php:595 +msgid "Avatar of %s" +msgstr "" + +#: bp-core/bp-core-buddybar.php:244 +msgid "You do not have access to this page." +msgstr "" + +#: bp-core/bp-core-buddybar.php:415 bp-themes/bp-default/sidebar.php:53 +msgid "Log In" +msgstr "" + +#: bp-core/bp-core-buddybar.php:419 +msgid "Sign Up" +msgstr "" + +#: bp-core/bp-core-buddybar.php:431 +msgid "My Account" +msgstr "" + +#: bp-core/bp-core-buddybar.php:473 bp-core/deprecated/1.5.php:287 +#: bp-members/bp-members-adminbar.php:285 +#: bp-members/bp-members-template.php:734 bp-themes/bp-default/sidebar.php:18 +msgid "Log Out" +msgstr "" + +#: bp-core/bp-core-buddybar.php:502 +msgid "Visit" +msgstr "" + +#: bp-core/bp-core-buddybar.php:504 +msgid "Random Member" +msgstr "" + +#: bp-core/bp-core-buddybar.php:508 +msgid "Random Group" +msgstr "" + +#: bp-core/bp-core-buddybar.php:514 +msgid "Random Site" +msgstr "" + +#: bp-core/bp-core-catchuri.php:258 +msgid "This user has been marked as a spammer. Only site admins can view this profile." +msgstr "" + +#: bp-core/bp-core-catchuri.php:402 bp-core/bp-core-catchuri.php:459 +msgid "You must log in to access the page you requested." +msgstr "" + +#: bp-core/bp-core-classes.php:191 +msgid "%d group" +msgid_plural "%d groups" +msgstr[0] "" +msgstr[1] "" + +#: bp-core/bp-core-cssjs.php:49 +msgid "Are you sure?" +msgstr "" + +#: bp-core/bp-core-filters.php:170 bp-core/bp-core-filters.php:194 +msgid "[User Set]" +msgstr "" + +#: bp-core/bp-core-filters.php:213 +msgid "" +"Thanks for registering! To complete the activation of your account and blog, please click the following link:\n" +"\n" +"%1$s\n" +"\n" +"\n" +"\n" +"After you activate, you can visit your blog here:\n" +"\n" +"%2$s" +msgstr "" + +#: bp-core/bp-core-filters.php:214 +msgid "Activate %s" +msgstr "" + +#: bp-core/bp-core-filters.php:246 bp-members/bp-members-signup.php:585 +msgid "" +"Thanks for registering! To complete the activation of your account please click the following link:\n" +"\n" +"%s\n" +"\n" +msgstr "" + +#: bp-core/bp-core-filters.php:247 bp-members/bp-members-signup.php:586 +msgid "Activate Your Account" +msgstr "" + +#. translators: "displayed user's name | canonicalised component name" +#. translators: "group name | group nav section name" + +#: bp-core/bp-core-filters.php:293 bp-core/bp-core-filters.php:299 +msgid "%1$s | %2$s" +msgstr "" + +#. translators: "component item name | component nav section name | root +#. component name" + +#: bp-core/bp-core-filters.php:304 +msgid "%1$s | %2$s | %3$s" +msgstr "" + +#: bp-core/bp-core-filters.php:309 bp-core/bp-core-filters.php:311 +msgid "%s Directory" +msgstr "" + +#: bp-core/bp-core-filters.php:315 +#: bp-themes/bp-default/registration/register.php:23 +msgid "Create an Account" +msgstr "" + +#: bp-core/bp-core-filters.php:319 +#: bp-themes/bp-default/registration/activate.php:24 +msgid "Activate your Account" +msgstr "" + +#: bp-core/bp-core-filters.php:323 bp-themes/bp-default/groups/create.php:18 +#: bp-themes/bp-default/groups/index.php:23 +msgid "Create a Group" +msgstr "" + +#: bp-core/bp-core-functions.php:371 +msgid "<strong>BuddyPress is almost ready</strong>. You must <a href=\"%s\">update your permalink structure</a> to something other than the default for it to work." +msgstr "" + +#: bp-core/bp-core-functions.php:389 +msgid "You'll need to <a href='%s'>activate a <strong>BuddyPress-compatible theme</strong></a> to take advantage of all of BuddyPress's features. We've bundled a default theme, but you can always <a href='%s'>install some other compatible themes</a> or <a href='%s'>update your existing WordPress theme</a>." +msgstr "" + +#: bp-core/bp-core-functions.php:431 +msgid "The following active BuddyPress Components do not have associated WordPress Pages: %2$s. <a href=\"%1$s\" class=\"button-secondary\">Repair</a>" +msgstr "" + +#: bp-core/bp-core-functions.php:456 +msgid "Each BuddyPress Component needs its own WordPress page. The following WordPress Pages have more than one component associated with them: %2$s. <a href=\"%1$s\" class=\"button-secondary\">Repair</a>" +msgstr "" + +#: bp-core/bp-core-functions.php:609 +msgid "sometime" +msgstr "" + +#: bp-core/bp-core-functions.php:610 +msgid "right now" +msgstr "" + +#: bp-core/bp-core-functions.php:611 +msgid "%s ago" +msgstr "" + +#: bp-core/bp-core-functions.php:615 +msgid "year" +msgstr "" + +#: bp-core/bp-core-functions.php:615 +msgid "years" +msgstr "" + +#: bp-core/bp-core-functions.php:616 +msgid "month" +msgstr "" + +#: bp-core/bp-core-functions.php:616 +msgid "months" +msgstr "" + +#: bp-core/bp-core-functions.php:617 +msgid "week" +msgstr "" + +#: bp-core/bp-core-functions.php:617 +msgid "weeks" +msgstr "" + +#: bp-core/bp-core-functions.php:618 +msgid "day" +msgstr "" + +#: bp-core/bp-core-functions.php:618 +msgid "days" +msgstr "" + +#: bp-core/bp-core-functions.php:619 +msgid "hour" +msgstr "" + +#: bp-core/bp-core-functions.php:619 +msgid "hours" +msgstr "" + +#: bp-core/bp-core-functions.php:620 +msgid "minute" +msgstr "" + +#: bp-core/bp-core-functions.php:620 +msgid "minutes" +msgstr "" + +#: bp-core/bp-core-functions.php:621 +msgid "second" +msgstr "" + +#: bp-core/bp-core-functions.php:621 +msgid "seconds" +msgstr "" + +#: bp-core/bp-core-functions.php:678 +msgctxt "Separator in time since" +msgid "," +msgstr "" + +#: bp-core/bp-core-functions.php:741 +msgid "not recently active" +msgstr "" + +#: bp-core/bp-core-loader.php:210 bp-members/bp-members-loader.php:141 +#: bp-xprofile/bp-xprofile-loader.php:113 +#: bp-xprofile/bp-xprofile-loader.php:177 +msgid "Profile" +msgstr "" + +#: bp-core/bp-core-loader.php:221 bp-groups/bp-groups-template.php:520 +#: bp-members/bp-members-loader.php:156 bp-xprofile/bp-xprofile-loader.php:125 +msgid "Public" +msgstr "" + +#: bp-core/bp-core-template.php:64 +msgid "Options" +msgstr "" + +#: bp-core/bp-core-template.php:190 +msgid "%1$s at %2$s" +msgstr "" + +#: bp-core/bp-core-template.php:251 +msgid "Blogs" +msgstr "" + +#: bp-core/bp-core-template.php:256 bp-themes/bp-default/activity/index.php:101 +#: bp-themes/bp-default/forums/forums-loop.php:40 +#: bp-themes/bp-default/members/single/activity.php:27 +msgid "Posts" +msgstr "" + +#: bp-core/bp-core-template.php:259 +msgid "Search these:" +msgstr "" + +#: bp-core/bp-core-template.php:287 +msgid "Search anything..." +msgstr "" + +#: bp-core/bp-core-template.php:381 +msgid " […]" +msgstr "" + +#: bp-core/bp-core-widgets.php:22 +msgid "A dynamic list of recently active, popular, and newest members" +msgstr "" + +#: bp-core/bp-core-widgets.php:48 bp-core/bp-core-widgets.php:128 +#: bp-friends/bp-friends-template.php:63 bp-friends/bp-friends-template.php:84 +#: bp-groups/bp-groups-widgets.php:50 bp-groups/bp-groups-widgets.php:125 +#: bp-themes/bp-default/blogs/index.php:58 +#: bp-themes/bp-default/members/single/blogs.php:22 +msgid "Newest" +msgstr "" + +#: bp-core/bp-core-widgets.php:49 bp-core/bp-core-widgets.php:129 +#: bp-groups/bp-groups-widgets.php:51 bp-groups/bp-groups-widgets.php:126 +msgid "Active" +msgstr "" + +#: bp-core/bp-core-widgets.php:53 bp-core/bp-core-widgets.php:130 +#: bp-groups/bp-groups-widgets.php:52 bp-groups/bp-groups-widgets.php:127 +msgid "Popular" +msgstr "" + +#: bp-core/bp-core-widgets.php:90 +msgid "No one has signed up yet!" +msgstr "" + +#: bp-core/bp-core-widgets.php:121 bp-core/bp-core-widgets.php:201 +#: bp-core/bp-core-widgets.php:270 bp-groups/bp-groups-widgets.php:118 +#: bp-themes/bp-default/forums/index.php:104 +#: bp-themes/bp-default/groups/single/forum/edit.php:49 +#: bp-themes/bp-default/groups/single/forum.php:75 +msgid "Title:" +msgstr "" + +#: bp-core/bp-core-widgets.php:123 +msgid "Max members to show:" +msgstr "" + +#: bp-core/bp-core-widgets.php:126 +msgid "Default members to show:" +msgstr "" + +#: bp-core/bp-core-widgets.php:148 +msgid "Avatars of users who are currently online" +msgstr "" + +#: bp-core/bp-core-widgets.php:149 +msgid "Who's Online Avatars" +msgstr "" + +#: bp-core/bp-core-widgets.php:173 +msgid "There are no users currently online" +msgstr "" + +#: bp-core/bp-core-widgets.php:192 +msgid "Who's Online" +msgstr "" + +#: bp-core/bp-core-widgets.php:203 bp-core/bp-core-widgets.php:272 +msgid "Max Members to show:" +msgstr "" + +#: bp-core/bp-core-widgets.php:217 +msgid "Avatars of recently active members" +msgstr "" + +#: bp-core/bp-core-widgets.php:218 +msgid "Recently Active Member Avatars" +msgstr "" + +#: bp-core/bp-core-widgets.php:242 +msgid "There are no recently active members" +msgstr "" + +#: bp-core/bp-core-widgets.php:328 +msgid "There were no members found, please try another filter." +msgstr "" + +#: bp-core/deprecated/1.5.php:135 +#: bp-themes/bp-default/activity/post-form.php:45 +#: bp-themes/bp-default/members/single/profile/profile-wp.php:8 +#: bp-xprofile/bp-xprofile-loader.php:220 +msgid "My Profile" +msgstr "" + +#: bp-core/deprecated/1.5.php:142 bp-themes/bp-default/functions.php:651 +#: bp-themes/bp-default/members/single/profile/profile-wp.php:15 +msgid "Name" +msgstr "" + +#: bp-core/deprecated/1.5.php:151 +#: bp-themes/bp-default/members/single/profile/profile-wp.php:24 +msgid "About Me" +msgstr "" + +#: bp-core/deprecated/1.5.php:160 bp-themes/bp-default/functions.php:655 +#: bp-themes/bp-default/members/single/profile/profile-wp.php:33 +msgid "Website" +msgstr "" + +#: bp-core/deprecated/1.5.php:169 +#: bp-themes/bp-default/members/single/profile/profile-wp.php:42 +msgid "Jabber" +msgstr "" + +#: bp-core/deprecated/1.5.php:178 +#: bp-themes/bp-default/members/single/profile/profile-wp.php:51 +msgid "AOL Messenger" +msgstr "" + +#: bp-core/deprecated/1.5.php:187 +#: bp-themes/bp-default/members/single/profile/profile-wp.php:60 +msgid "Yahoo Messenger" +msgstr "" + +#: bp-core/deprecated/1.5.php:335 +msgid "%1$s mentioned you in the group \"%2$s\"" +msgstr "" + +#: bp-forums/bp-forums-admin.php:30 +msgid "Settings Saved." +msgstr "" + +#: bp-forums/bp-forums-admin.php:46 +msgid "(Installed)" +msgstr "" + +#: bp-forums/bp-forums-admin.php:46 bp-forums/bp-forums-admin.php:163 +msgid "Forums for Groups" +msgstr "" + +#: bp-forums/bp-forums-admin.php:48 bp-forums/bp-forums-admin.php:165 +msgid "Give each individual group its own discussion forum. Choose this if you'd like to keep your members' conversations separated into distinct areas." +msgstr "" + +#: bp-forums/bp-forums-admin.php:49 bp-forums/bp-forums-admin.php:166 +msgid "You may use an existing bbPress installation if you have one." +msgstr "" + +#: bp-forums/bp-forums-admin.php:51 bp-forums/bp-forums-admin.php:69 +#: bp-forums/bp-forums-admin.php:168 bp-forums/bp-forums-admin.php:187 +msgid "Features" +msgstr "" + +#: bp-forums/bp-forums-admin.php:53 bp-forums/bp-forums-admin.php:170 +msgid "Group Integration" +msgstr "" + +#: bp-forums/bp-forums-admin.php:54 bp-forums/bp-forums-admin.php:171 +msgid "Member Profile Integration" +msgstr "" + +#: bp-forums/bp-forums-admin.php:55 bp-forums/bp-forums-admin.php:73 +#: bp-forums/bp-forums-admin.php:172 bp-forums/bp-forums-admin.php:191 +msgid "Activity Stream Integration" +msgstr "" + +#: bp-forums/bp-forums-admin.php:56 bp-forums/bp-forums-admin.php:74 +#: bp-forums/bp-forums-admin.php:173 bp-forums/bp-forums-admin.php:192 +msgid "@ Mention Integration" +msgstr "" + +#: bp-forums/bp-forums-admin.php:60 +msgid "Uninstall Group Forums" +msgstr "" + +#: bp-forums/bp-forums-admin.php:65 bp-forums/bp-forums-admin.php:183 +msgid "New! Site Wide Forums" +msgstr "" + +#: bp-forums/bp-forums-admin.php:66 bp-forums/bp-forums-admin.php:184 +msgid "Your site will have central forums that are not isolated to any specific group. Choose this if you'd like to have a central forum area for your members." +msgstr "" + +#: bp-forums/bp-forums-admin.php:67 bp-forums/bp-forums-admin.php:185 +msgid "You may activate both Group and Site Wide forums, but this may create a poor experience for your members." +msgstr "" + +#: bp-forums/bp-forums-admin.php:71 bp-forums/bp-forums-admin.php:189 +msgid "Central Discussion Area" +msgstr "" + +#: bp-forums/bp-forums-admin.php:72 bp-forums/bp-forums-admin.php:190 +msgid "Forum Plugins Available" +msgstr "" + +#: bp-forums/bp-forums-admin.php:77 bp-forums/bp-forums-admin.php:195 +msgid "Install Site Wide Forums" +msgstr "" + +#: bp-forums/bp-forums-admin.php:96 +msgid "The bb-config.php file was not found at that location, please try again." +msgstr "" + +#: bp-forums/bp-forums-admin.php:99 +msgid "Forums were set up correctly using your existing bbPress install!" +msgstr "" + +#: bp-forums/bp-forums-admin.php:100 +msgid "BuddyPress will now use its internal copy of bbPress to run the forums on your site. If you wish, you can remove your old bbPress installation files, as long as you keep the bb-config.php file in the same location." +msgstr "" + +#: bp-forums/bp-forums-admin.php:105 +msgid "Existing bbPress Installation" +msgstr "" + +#: bp-forums/bp-forums-admin.php:106 +msgid "BuddyPress can make use of your existing bbPress install. Just provide the location of your <code>bb-config.php</code> file, and BuddyPress will do the rest." +msgstr "" + +#: bp-forums/bp-forums-admin.php:108 bp-forums/bp-forums-admin.php:140 +msgid "Complete Installation" +msgstr "" + +#: bp-forums/bp-forums-admin.php:124 +msgid "<p>All done! Configuration settings have been saved to the file <code>bb-config.php</code> in the root of your WordPress install.</p>" +msgstr "" + +#: bp-forums/bp-forums-admin.php:128 +msgid "<p>A configuration file could not be created. No problem, but you will need to save the text shown below into a file named <code>bb-config.php</code> in the root directory of your WordPress installation before you can start using the forum functionality.</p>" +msgstr "" + +#: bp-forums/bp-forums-admin.php:137 +msgid "New bbPress Installation" +msgstr "" + +#: bp-forums/bp-forums-admin.php:138 +msgid "" +"You've decided to set up a new installation of bbPress for forum management in BuddyPress. This is very simple and is usually just a one click\n" +"\t\t\t\tprocess. When you're ready, hit the link below." +msgstr "" + +#: bp-forums/bp-forums-admin.php:150 +msgid "bbPress files were not found. To install the forums component you must download a copy of bbPress and make sure it is in the folder: \"%s\"" +msgstr "" + +#: bp-forums/bp-forums-admin.php:177 +msgid "Install Group Forums" +msgstr "" + +#: bp-forums/bp-forums-admin.php:178 +msgid "Use Existing Installation" +msgstr "" + +#: bp-forums/bp-forums-loader.php:61 +msgid "Search Forums..." +msgstr "" + +#: bp-forums/bp-forums-loader.php:135 bp-forums/bp-forums-loader.php:202 +msgid "Topics Started" +msgstr "" + +#: bp-forums/bp-forums-loader.php:146 +msgid "Replied To" +msgstr "" + +#: bp-forums/bp-forums-loader.php:210 +msgid "Replies" +msgstr "" + +#: bp-forums/bp-forums-loader.php:218 +msgid "Favorite Topics" +msgstr "" + +#: bp-forums/bp-forums-screens.php:13 +msgid "The forums component has not been set up yet." +msgstr "" + +#: bp-forums/bp-forums-screens.php:36 bp-groups/bp-groups-screens.php:346 +msgid "Please provide a title for your forum topic." +msgstr "" + +#: bp-forums/bp-forums-screens.php:38 bp-groups/bp-groups-screens.php:348 +msgid "Forum posts cannot be empty. Please enter some text." +msgstr "" + +#: bp-forums/bp-forums-screens.php:45 bp-groups/bp-groups-screens.php:358 +msgid "There was an error when creating the topic" +msgstr "" + +#: bp-forums/bp-forums-screens.php:48 bp-groups/bp-groups-screens.php:361 +msgid "The topic was created successfully" +msgstr "" + +#: bp-forums/bp-forums-screens.php:56 bp-forums/bp-forums-screens.php:61 +msgid "Please pick the group forum where you would like to post this topic." +msgstr "" + +#: bp-forums/bp-forums-template.php:189 bp-forums/bp-forums-template.php:405 +msgctxt "Forum topic pagination previous text" +msgid "←" +msgstr "" + +#: bp-forums/bp-forums-template.php:190 bp-forums/bp-forums-template.php:406 +msgctxt "Forum topic pagination next text" +msgid "→" +msgstr "" + +#: bp-forums/bp-forums-template.php:506 bp-forums/bp-forums-template.php:568 +#: bp-forums/bp-forums-template.php:1208 +msgid "Deleted User" +msgstr "" + +#: bp-forums/bp-forums-template.php:586 +msgid "Group logo for %s" +msgstr "" + +#: bp-forums/bp-forums-template.php:684 bp-groups/bp-groups-template.php:839 +msgid "%d post" +msgstr "" + +#: bp-forums/bp-forums-template.php:686 bp-groups/bp-groups-template.php:841 +msgid "%d posts" +msgstr "" + +#: bp-forums/bp-forums-template.php:792 +msgid "Edit Topic" +msgstr "" + +#: bp-forums/bp-forums-template.php:796 +msgid "Sticky Topic" +msgstr "" + +#: bp-forums/bp-forums-template.php:798 +msgid "Un-stick Topic" +msgstr "" + +#: bp-forums/bp-forums-template.php:801 +msgid "Open Topic" +msgstr "" + +#: bp-forums/bp-forums-template.php:803 +msgid "Close Topic" +msgstr "" + +#: bp-forums/bp-forums-template.php:805 +msgid "Delete Topic" +msgstr "" + +#: bp-forums/bp-forums-template.php:960 +msgid " matching tag \"%s\"" +msgstr "" + +#: bp-forums/bp-forums-template.php:962 +msgid "Viewing topic %s to %s (of %s total topics%s)" +msgstr "" + +#: bp-forums/bp-forums-template.php:1044 +msgctxt "Forum thread pagination previous text" +msgid "←" +msgstr "" + +#: bp-forums/bp-forums-template.php:1045 +msgctxt "Forum thread pagination next text" +msgid "→" +msgstr "" + +#: bp-forums/bp-forums-template.php:1262 bp-themes/bp-default/functions.php:512 +#: bp-xprofile/bp-xprofile-admin.php:463 bp-xprofile/bp-xprofile-loader.php:135 +#: bp-xprofile/bp-xprofile-loader.php:193 +msgid "Edit" +msgstr "" + +#: bp-forums/bp-forums-template.php:1293 +msgid "Viewing post %1$s to %2$s (%3$s total posts)" +msgstr "" + +#: bp-friends/bp-friends-actions.php:29 bp-themes/bp-default/_inc/ajax.php:465 +msgid "Friendship could not be requested." +msgstr "" + +#: bp-friends/bp-friends-actions.php:31 +msgid "Friendship requested" +msgstr "" + +#: bp-friends/bp-friends-actions.php:35 +msgid "You are already friends with this user" +msgstr "" + +#: bp-friends/bp-friends-actions.php:37 +msgid "You already have a pending friendship request with this user" +msgstr "" + +#: bp-friends/bp-friends-actions.php:64 bp-themes/bp-default/_inc/ajax.php:455 +msgid "Friendship could not be canceled." +msgstr "" + +#: bp-friends/bp-friends-actions.php:66 +msgid "Friendship canceled" +msgstr "" + +#: bp-friends/bp-friends-actions.php:70 +msgid "You are not yet friends with this user" +msgstr "" + +#: bp-friends/bp-friends-actions.php:72 +msgid "You have a pending friendship request with this user" +msgstr "" + +#: bp-friends/bp-friends-activity.php:50 +msgid "New friendship created" +msgstr "" + +#: bp-friends/bp-friends-activity.php:76 +msgid "%d friends accepted your friendship requests" +msgstr "" + +#: bp-friends/bp-friends-activity.php:79 +#: bp-friends/bp-friends-notifications.php:67 +msgid "%s accepted your friendship request" +msgstr "" + +#: bp-friends/bp-friends-activity.php:90 +msgid "You have %d pending friendship requests" +msgstr "" + +#: bp-friends/bp-friends-activity.php:93 +msgid "You have a friendship request from %s" +msgstr "" + +#: bp-friends/bp-friends-functions.php:94 +#: bp-friends/bp-friends-functions.php:103 +msgid "%1$s and %2$s are now friends" +msgstr "" + +#: bp-friends/bp-friends-loader.php:78 +msgid "Search Friends..." +msgstr "" + +#: bp-friends/bp-friends-loader.php:96 +msgid "Friends <span>%d</span>" +msgstr "" + +#: bp-friends/bp-friends-loader.php:108 bp-friends/bp-friends-loader.php:169 +#: bp-friends/bp-friends-loader.php:196 +#: bp-themes/bp-default/activity/index.php:122 +#: bp-themes/bp-default/members/single/activity.php:35 +msgid "Friendships" +msgstr "" + +#: bp-friends/bp-friends-loader.php:118 bp-groups/bp-groups-template.php:1288 +msgid "Requests" +msgstr "" + +#: bp-friends/bp-friends-loader.php:150 +msgid "Friends <span class=\"count\">%s</span>" +msgstr "" + +#: bp-friends/bp-friends-loader.php:151 +msgid "Pending Requests <span class=\"count\">%s</span>" +msgstr "" + +#: bp-friends/bp-friends-loader.php:154 +msgid "No Pending Requests" +msgstr "" + +#: bp-friends/bp-friends-notifications.php:24 +msgid "New friendship request from %s" +msgstr "" + +#: bp-friends/bp-friends-notifications.php:26 +msgid "" +"%1$s wants to add you as a friend.\n" +"\n" +"To view all of your pending friendship requests: %2$s\n" +"\n" +"To view %3$s's profile: %4$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-friends/bp-friends-notifications.php:69 +msgid "" +"%1$s accepted your friend request.\n" +"\n" +"To view %2$s's profile: %3$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-friends/bp-friends-screens.php:28 +msgid "Friendship accepted" +msgstr "" + +#: bp-friends/bp-friends-screens.php:30 +msgid "Friendship could not be accepted" +msgstr "" + +#: bp-friends/bp-friends-screens.php:39 +msgid "Friendship rejected" +msgstr "" + +#: bp-friends/bp-friends-screens.php:41 +msgid "Friendship could not be rejected" +msgstr "" + +#: bp-friends/bp-friends-screens.php:77 +msgid "A member sends you a friendship request" +msgstr "" + +#: bp-friends/bp-friends-screens.php:83 +msgid "A member accepts your friendship request" +msgstr "" + +#: bp-friends/bp-friends-template.php:62 bp-friends/bp-friends-template.php:81 +#: bp-groups/bp-groups-template.php:2276 bp-groups/bp-groups-template.php:2297 +msgid "Recently Active" +msgstr "" + +#: bp-friends/bp-friends-template.php:64 bp-friends/bp-friends-template.php:87 +#: bp-groups/bp-groups-template.php:2281 bp-groups/bp-groups-template.php:2312 +msgid "Alphabetically" +msgstr "" + +#: bp-friends/bp-friends-template.php:101 +msgid "My Friends" +msgstr "" + +#: bp-friends/bp-friends-template.php:101 +msgid "%s's Friends" +msgstr "" + +#: bp-friends/bp-friends-template.php:101 +msgid "See All" +msgstr "" + +#: bp-friends/bp-friends-template.php:121 +msgid "You haven't added any friend connections yet." +msgstr "" + +#: bp-friends/bp-friends-template.php:121 +msgid "%s hasn't created any friend connections yet." +msgstr "" + +#: bp-friends/bp-friends-template.php:190 +msgid "There aren't enough site members to show a random sample just yet." +msgstr "" + +#: bp-friends/bp-friends-template.php:201 +msgid "Filter Friends" +msgstr "" + +#: bp-friends/bp-friends-template.php:238 +msgid "%d friend" +msgstr "" + +#: bp-friends/bp-friends-template.php:240 +msgid "%d friends" +msgstr "" + +#: bp-friends/bp-friends-template.php:323 +#: bp-friends/bp-friends-template.php:324 +#: bp-themes/bp-default/_inc/ajax.php:467 +msgid "Friendship Requested" +msgstr "" + +#: bp-friends/bp-friends-template.php:338 +#: bp-friends/bp-friends-template.php:339 +msgid "Cancel Friendship" +msgstr "" + +#: bp-friends/bp-friends-template.php:355 +#: bp-friends/bp-friends-template.php:356 +#: bp-themes/bp-default/_inc/ajax.php:457 +msgid "Add Friend" +msgstr "" + +#: bp-groups/bp-groups-actions.php:24 +msgid "Sorry, you are not allowed to create groups." +msgstr "" + +#: bp-groups/bp-groups-actions.php:46 +msgid "There was an error saving group details. Please try again." +msgstr "" + +#: bp-groups/bp-groups-actions.php:68 +msgid "Please fill in all of the required fields" +msgstr "" + +#: bp-groups/bp-groups-actions.php:75 bp-groups/bp-groups-actions.php:102 +msgid "There was an error saving group details, please try again." +msgstr "" + +#: bp-groups/bp-groups-actions.php:141 +msgid "%1$s created the group %2$s" +msgstr "" + +#: bp-groups/bp-groups-actions.php:189 +msgid "There was an error saving the group avatar, please try uploading again." +msgstr "" + +#: bp-groups/bp-groups-actions.php:191 +msgid "The group avatar was uploaded successfully!" +msgstr "" + +#: bp-groups/bp-groups-actions.php:215 bp-groups/bp-groups-actions.php:222 +msgid "There was an error joining the group." +msgstr "" + +#: bp-groups/bp-groups-actions.php:224 +msgid "You joined the group!" +msgstr "" + +#: bp-groups/bp-groups-actions.php:250 bp-groups/bp-groups-screens.php:646 +msgid "This group must have at least one admin" +msgstr "" + +#: bp-groups/bp-groups-actions.php:253 +msgid "There was an error leaving the group." +msgstr "" + +#: bp-groups/bp-groups-actions.php:255 bp-groups/bp-groups-functions.php:280 +msgid "You successfully left the group." +msgstr "" + +#: bp-groups/bp-groups-activity.php:21 +msgid "Created a group" +msgstr "" + +#: bp-groups/bp-groups-activity.php:22 +msgid "Joined a group" +msgstr "" + +#: bp-groups/bp-groups-activity.php:23 +msgid "New group forum topic" +msgstr "" + +#: bp-groups/bp-groups-activity.php:24 +msgid "New group forum post" +msgstr "" + +#: bp-groups/bp-groups-activity.php:93 +msgid "%1$d new membership requests for the group \"%2$s\"" +msgstr "" + +#: bp-groups/bp-groups-activity.php:98 +msgid "Group Membership Requests" +msgstr "" + +#: bp-groups/bp-groups-activity.php:107 bp-groups/bp-groups-activity.php:112 +msgid "%s requests group membership" +msgstr "" + +#: bp-groups/bp-groups-activity.php:130 +msgid "%d accepted group membership requests" +msgstr "" + +#: bp-groups/bp-groups-activity.php:143 +msgid "Membership for group \"%s\" accepted" +msgstr "" + +#: bp-groups/bp-groups-activity.php:166 +msgid "%d rejected group membership requests" +msgstr "" + +#: bp-groups/bp-groups-activity.php:179 +msgid "Membership for group \"%s\" rejected" +msgstr "" + +#: bp-groups/bp-groups-activity.php:202 +msgid "You were promoted to an admin in %d groups" +msgstr "" + +#: bp-groups/bp-groups-activity.php:215 +msgid "You were promoted to an admin in the group \"%s\"" +msgstr "" + +#: bp-groups/bp-groups-activity.php:238 +msgid "You were promoted to a mod in %d groups" +msgstr "" + +#: bp-groups/bp-groups-activity.php:251 +msgid "You were promoted to a mod in the group \"%s\"" +msgstr "" + +#: bp-groups/bp-groups-activity.php:275 +msgid "You have %d new group invitations" +msgstr "" + +#: bp-groups/bp-groups-activity.php:279 +msgid "Group Invites" +msgstr "" + +#: bp-groups/bp-groups-activity.php:287 +msgid "You have an invitation to the group: %s" +msgstr "" + +#: bp-groups/bp-groups-adminbar.php:82 bp-xprofile/bp-xprofile-admin.php:121 +msgid "Edit Group" +msgstr "" + +#: bp-groups/bp-groups-adminbar.php:91 bp-groups/bp-groups-buddybar.php:19 +msgid "Edit Details" +msgstr "" + +#: bp-groups/bp-groups-adminbar.php:99 +msgid "Edit Settings" +msgstr "" + +#: bp-groups/bp-groups-adminbar.php:108 bp-members/bp-members-adminbar.php:173 +msgid "Edit Avatar" +msgstr "" + +#: bp-groups/bp-groups-adminbar.php:118 bp-groups/bp-groups-buddybar.php:31 +msgid "Manage Invitations" +msgstr "" + +#: bp-groups/bp-groups-adminbar.php:127 bp-groups/bp-groups-buddybar.php:35 +msgid "Manage Members" +msgstr "" + +#: bp-groups/bp-groups-adminbar.php:136 bp-groups/bp-groups-buddybar.php:39 +msgid "Membership Requests" +msgstr "" + +#: bp-groups/bp-groups-adminbar.php:145 bp-groups/bp-groups-buddybar.php:43 +#: bp-themes/bp-default/groups/single/admin.php:358 +#: bp-xprofile/bp-xprofile-admin.php:125 +msgid "Delete Group" +msgstr "" + +#: bp-groups/bp-groups-buddybar.php:16 bp-members/bp-members-buddybar.php:103 +msgid "Admin Options" +msgstr "" + +#: bp-groups/bp-groups-buddybar.php:21 +msgid "Group Settings" +msgstr "" + +#: bp-groups/bp-groups-buddybar.php:25 bp-groups/bp-groups-loader.php:458 +#: bp-groups/bp-groups-template.php:2337 +msgid "Group Avatar" +msgstr "" + +#: bp-groups/bp-groups-classes.php:752 +msgid "Group Mod" +msgstr "" + +#: bp-groups/bp-groups-classes.php:758 bp-groups/bp-groups-functions.php:98 +msgid "Group Admin" +msgstr "" + +#: bp-groups/bp-groups-forums.php:71 bp-groups/bp-groups-forums.php:175 +msgid "%1$s replied to the forum topic %2$s in the group %3$s" +msgstr "" + +#: bp-groups/bp-groups-forums.php:110 bp-groups/bp-groups-forums.php:142 +msgid "%1$s started the forum topic %2$s in the group %3$s" +msgstr "" + +#: bp-groups/bp-groups-functions.php:255 +msgid "As the only Admin, you cannot leave the group." +msgstr "" + +#: bp-groups/bp-groups-functions.php:324 bp-groups/bp-groups-functions.php:809 +#: bp-groups/bp-groups-screens.php:57 +msgid "%1$s joined the group %2$s" +msgstr "" + +#: bp-groups/bp-groups-functions.php:513 +msgid "%1$s posted an update in the group %2$s" +msgstr "" + +#: bp-groups/bp-groups-loader.php:84 +msgid "Search Groups..." +msgstr "" + +#: bp-groups/bp-groups-loader.php:172 +msgid "You do not have access to this group." +msgstr "" + +#: bp-groups/bp-groups-loader.php:185 bp-groups/bp-groups-template.php:1272 +msgid "Details" +msgstr "" + +#: bp-groups/bp-groups-loader.php:197 bp-groups/bp-groups-template.php:1282 +msgid "Avatar" +msgstr "" + +#: bp-groups/bp-groups-loader.php:205 +msgid "Invites" +msgstr "" + +#: bp-groups/bp-groups-loader.php:231 +msgid "Groups <span>%d</span>" +msgstr "" + +#: bp-groups/bp-groups-loader.php:243 bp-groups/bp-groups-loader.php:271 +#: bp-groups/bp-groups-loader.php:411 bp-groups/bp-groups-loader.php:439 +msgid "Memberships" +msgstr "" + +#: bp-groups/bp-groups-loader.php:254 +msgid "Invitations" +msgstr "" + +#: bp-groups/bp-groups-loader.php:283 +msgctxt "Group home navigation title" +msgid "Home" +msgstr "" + +#: bp-groups/bp-groups-loader.php:295 +msgid "Admin" +msgstr "" + +#: bp-groups/bp-groups-loader.php:314 bp-groups/bp-groups-template.php:1580 +#: bp-groups/bp-groups-template.php:1581 bp-themes/bp-default/_inc/ajax.php:556 +msgid "Request Membership" +msgstr "" + +#: bp-groups/bp-groups-loader.php:326 +msgid "Forum" +msgstr "" + +#: bp-groups/bp-groups-loader.php:338 +msgid "Members <span>%s</span>" +msgstr "" + +#: bp-groups/bp-groups-loader.php:350 +#: bp-themes/bp-default/groups/single/send-invites.php:60 +msgid "Send Invites" +msgstr "" + +#: bp-groups/bp-groups-loader.php:392 +msgid "Groups <span class=\"count\">%s</span>" +msgstr "" + +#: bp-groups/bp-groups-loader.php:393 +msgid "Pending Invites <span class=\"count\">%s</span>" +msgstr "" + +#: bp-groups/bp-groups-loader.php:396 +msgid "No Pending Invites" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:10 +msgid "Group Details Updated" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:25 +msgid "" +"Group details for the group \"%1$s\" were updated:\n" +"\n" +"To view the group: %2$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:70 +msgid "Membership request for group: %s" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:72 +msgid "" +"%1$s wants to join the group \"%2$s\".\n" +"\n" +"Because you are the administrator of this group, you must either accept or reject the membership request.\n" +"\n" +"To view all pending membership requests for this group, please visit:\n" +"%3$s\n" +"\n" +"To view %4$s's profile: %5$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:122 +msgid "Membership request for group \"%s\" accepted" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:123 +msgid "" +"Your membership request for the group \"%1$s\" has been accepted.\n" +"\n" +"To view the group please login and visit: %2$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:132 +msgid "Membership request for group \"%s\" rejected" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:133 +msgid "" +"Your membership request for the group \"%1$s\" has been rejected.\n" +"\n" +"To submit another request please log in and visit: %2$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:158 +msgid "an administrator" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:161 +msgid "a moderator" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:180 +msgid "You have been promoted in the group: \"%s\"" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:182 +msgid "" +"You have been promoted to %1$s for the group: \"%2$s\".\n" +"\n" +"To view the group please visit: %3$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:230 +msgid "You have an invitation to the group: \"%s\"" +msgstr "" + +#: bp-groups/bp-groups-notifications.php:232 +msgid "" +"One of your friends %1$s has invited you to the group: \"%2$s\".\n" +"\n" +"To view your group invites visit: %3$s\n" +"\n" +"To view the group visit: %4$s\n" +"\n" +"To view %5$s's profile visit: %6$s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-groups/bp-groups-screens.php:49 +msgid "Group invite could not be accepted" +msgstr "" + +#: bp-groups/bp-groups-screens.php:51 +msgid "Group invite accepted" +msgstr "" + +#: bp-groups/bp-groups-screens.php:71 +msgid "Group invite could not be rejected" +msgstr "" + +#: bp-groups/bp-groups-screens.php:73 +msgid "Group invite rejected" +msgstr "" + +#: bp-groups/bp-groups-screens.php:149 +msgid "There was an error when replying to that topic" +msgstr "" + +#: bp-groups/bp-groups-screens.php:151 +msgid "Your reply was posted successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:165 +msgid "There was an error when making that topic a sticky" +msgstr "" + +#: bp-groups/bp-groups-screens.php:167 +msgid "The topic was made sticky successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:179 +msgid "There was an error when unsticking that topic" +msgstr "" + +#: bp-groups/bp-groups-screens.php:181 +msgid "The topic was unstuck successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:193 +msgid "There was an error when closing that topic" +msgstr "" + +#: bp-groups/bp-groups-screens.php:195 +msgid "The topic was closed successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:207 +msgid "There was an error when opening that topic" +msgstr "" + +#: bp-groups/bp-groups-screens.php:209 +msgid "The topic was opened successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:230 +msgid "There was an error deleting the topic" +msgstr "" + +#: bp-groups/bp-groups-screens.php:232 +msgid "The topic was deleted successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:254 +msgid "There was an error when editing that topic" +msgstr "" + +#: bp-groups/bp-groups-screens.php:256 +msgid "The topic was edited successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:280 +msgid "There was an error deleting that post" +msgstr "" + +#: bp-groups/bp-groups-screens.php:282 +msgid "The post was deleted successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:304 +msgid "There was an error when editing that post" +msgstr "" + +#: bp-groups/bp-groups-screens.php:306 +msgid "The post was edited successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:321 bp-groups/bp-groups-screens.php:338 +msgid "You have been banned from this group." +msgstr "" + +#: bp-groups/bp-groups-screens.php:351 +msgid "This group does not have a forum setup yet." +msgstr "" + +#: bp-groups/bp-groups-screens.php:405 +msgid "Group invites sent." +msgstr "" + +#: bp-groups/bp-groups-screens.php:433 +msgid "There was an error sending your group membership request, please try again." +msgstr "" + +#: bp-groups/bp-groups-screens.php:435 +msgid "Your membership request was sent to the group administrator successfully. You will be notified when the group administrator responds to your request." +msgstr "" + +#: bp-groups/bp-groups-screens.php:482 +msgid "There was an error updating group details, please try again." +msgstr "" + +#: bp-groups/bp-groups-screens.php:484 +msgid "Group details were successfully updated." +msgstr "" + +#: bp-groups/bp-groups-screens.php:525 +msgid "There was an error updating group settings, please try again." +msgstr "" + +#: bp-groups/bp-groups-screens.php:527 +msgid "Group settings were successfully updated." +msgstr "" + +#: bp-groups/bp-groups-screens.php:558 bp-xprofile/bp-xprofile-actions.php:36 +msgid "Your avatar was deleted successfully!" +msgstr "" + +#: bp-groups/bp-groups-screens.php:560 bp-xprofile/bp-xprofile-actions.php:38 +msgid "There was a problem deleting that avatar, please try again." +msgstr "" + +#: bp-groups/bp-groups-screens.php:588 +msgid "There was a problem cropping the avatar, please try uploading it again" +msgstr "" + +#: bp-groups/bp-groups-screens.php:590 +msgid "The new group avatar was uploaded successfully!" +msgstr "" + +#: bp-groups/bp-groups-screens.php:625 +msgid "There was an error when promoting that user, please try again" +msgstr "" + +#: bp-groups/bp-groups-screens.php:627 +msgid "User promoted successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:650 +msgid "There was an error when demoting that user, please try again" +msgstr "" + +#: bp-groups/bp-groups-screens.php:652 +msgid "User demoted successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:668 +msgid "There was an error when banning that user, please try again" +msgstr "" + +#: bp-groups/bp-groups-screens.php:670 +msgid "User banned successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:686 +msgid "There was an error when unbanning that user, please try again" +msgstr "" + +#: bp-groups/bp-groups-screens.php:688 +msgid "User ban removed successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:704 +msgid "There was an error removing that user from the group, please try again" +msgstr "" + +#: bp-groups/bp-groups-screens.php:706 +msgid "User removed successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:744 +msgid "There was an error accepting the membership request, please try again." +msgstr "" + +#: bp-groups/bp-groups-screens.php:746 +msgid "Group membership request accepted" +msgstr "" + +#: bp-groups/bp-groups-screens.php:755 +msgid "There was an error rejecting the membership request, please try again." +msgstr "" + +#: bp-groups/bp-groups-screens.php:757 +msgid "Group membership request rejected" +msgstr "" + +#: bp-groups/bp-groups-screens.php:787 +msgid "There was an error deleting the group, please try again." +msgstr "" + +#: bp-groups/bp-groups-screens.php:789 +msgid "The group was deleted successfully" +msgstr "" + +#: bp-groups/bp-groups-screens.php:840 +msgid "A member invites you to join a group" +msgstr "" + +#: bp-groups/bp-groups-screens.php:846 +msgid "Group information is updated" +msgstr "" + +#: bp-groups/bp-groups-screens.php:852 +msgid "You are promoted to a group administrator or moderator" +msgstr "" + +#: bp-groups/bp-groups-screens.php:858 +msgid "A member requests to join a private group for which you are an admin" +msgstr "" + +#: bp-groups/bp-groups-template.php:171 +msgctxt "Group pagination previous text" +msgid "←" +msgstr "" + +#: bp-groups/bp-groups-template.php:172 +msgctxt "Group pagination next text" +msgid "→" +msgstr "" + +#: bp-groups/bp-groups-template.php:353 +msgid "Public Group" +msgstr "" + +#: bp-groups/bp-groups-template.php:355 +msgid "Hidden Group" +msgstr "" + +#: bp-groups/bp-groups-template.php:357 +msgid "Private Group" +msgstr "" + +#: bp-groups/bp-groups-template.php:359 +msgid "Group" +msgstr "" + +#: bp-groups/bp-groups-template.php:431 +msgid "not yet active" +msgstr "" + +#: bp-groups/bp-groups-template.php:522 +msgid "Private" +msgstr "" + +#: bp-groups/bp-groups-template.php:577 +msgid "No Admins" +msgstr "" + +#: bp-groups/bp-groups-template.php:604 +msgid "No Mods" +msgstr "" + +#: bp-groups/bp-groups-template.php:686 +msgid "Filter Groups" +msgstr "" + +#: bp-groups/bp-groups-template.php:736 +msgid "Viewing group %1$s to %2$s (of %3$s groups)" +msgstr "" + +#: bp-groups/bp-groups-template.php:764 +msgid "%s member" +msgstr "" + +#: bp-groups/bp-groups-template.php:766 +#: bp-themes/bp-default/members/single/groups/invites.php:14 +msgid "%s members" +msgstr "" + +#: bp-groups/bp-groups-template.php:805 +msgid "%d topic" +msgstr "" + +#: bp-groups/bp-groups-template.php:807 +msgid "%d topics" +msgstr "" + +#: bp-groups/bp-groups-template.php:1041 bp-groups/bp-groups-template.php:1106 +#: bp-themes/bp-default/groups/single/admin.php:189 +#: bp-themes/bp-default/groups/single/admin.php:215 +msgid "Demote to Member" +msgstr "" + +#: bp-groups/bp-groups-template.php:1054 bp-groups/bp-groups-template.php:1119 +#: bp-groups/bp-groups-template.php:1888 +msgid "joined %s" +msgstr "" + +#: bp-groups/bp-groups-template.php:1077 +msgid "This group has no administrators" +msgstr "" + +#: bp-groups/bp-groups-template.php:1105 +#: bp-themes/bp-default/groups/single/admin.php:214 +#: bp-themes/bp-default/groups/single/admin.php:270 +msgid "Promote to Admin" +msgstr "" + +#: bp-groups/bp-groups-template.php:1139 +msgid "This group has no moderators" +msgstr "" + +#: bp-groups/bp-groups-template.php:1499 bp-groups/bp-groups-template.php:1500 +#: bp-themes/bp-default/forums/index.php:23 +#: bp-themes/bp-default/groups/single/forum.php:19 +msgid "New Topic" +msgstr "" + +#: bp-groups/bp-groups-template.php:1539 bp-groups/bp-groups-template.php:1540 +#: bp-themes/bp-default/_inc/ajax.php:532 +msgid "Leave Group" +msgstr "" + +#: bp-groups/bp-groups-template.php:1562 bp-groups/bp-groups-template.php:1563 +#: bp-themes/bp-default/_inc/ajax.php:554 +msgid "Join Group" +msgstr "" + +#: bp-groups/bp-groups-template.php:1595 bp-groups/bp-groups-template.php:1596 +msgid "Request Sent" +msgstr "" + +#: bp-groups/bp-groups-template.php:1618 +msgid "This is a private group and you must request group membership in order to join." +msgstr "" + +#: bp-groups/bp-groups-template.php:1620 +msgid "This is a private group. To join you must be a registered site member and request group membership." +msgstr "" + +#: bp-groups/bp-groups-template.php:1622 +msgid "This is a private group. Your membership request is awaiting approval from the group administrator." +msgstr "" + +#: bp-groups/bp-groups-template.php:1624 +msgid "This is a hidden group and only invited members can join." +msgstr "" + +#: bp-groups/bp-groups-template.php:1938 +msgid "Viewing members %1$s to %2$s (of %3$s members)" +msgstr "" + +#: bp-groups/bp-groups-template.php:2164 +msgid "Group avatar" +msgstr "" + +#: bp-groups/bp-groups-template.php:2277 bp-groups/bp-groups-template.php:2300 +msgid "Recently Joined" +msgstr "" + +#: bp-groups/bp-groups-template.php:2278 bp-groups/bp-groups-template.php:2303 +msgid "Most Popular" +msgstr "" + +#: bp-groups/bp-groups-template.php:2279 bp-groups/bp-groups-template.php:2306 +msgid "Administrator Of" +msgstr "" + +#: bp-groups/bp-groups-template.php:2280 bp-groups/bp-groups-template.php:2309 +msgid "Moderator Of" +msgstr "" + +#: bp-groups/bp-groups-template.php:2341 +msgid "No Group Avatar" +msgstr "" + +#: bp-groups/bp-groups-template.php:2552 +msgid "requested %s" +msgstr "" + +#: bp-groups/bp-groups-template.php:2736 +msgid "Group Activity RSS Feed" +msgstr "" + +#: bp-groups/bp-groups-widgets.php:19 +msgid "A dynamic list of recently active, popular, and newest groups" +msgstr "" + +#: bp-groups/bp-groups-widgets.php:68 bp-groups/bp-groups-widgets.php:168 +msgid "created %s" +msgstr "" + +#: bp-groups/bp-groups-widgets.php:87 +msgid "There are no groups to display." +msgstr "" + +#: bp-groups/bp-groups-widgets.php:120 +msgid "Max groups to show:" +msgstr "" + +#: bp-groups/bp-groups-widgets.php:123 +msgid "Default groups to show:" +msgstr "" + +#: bp-groups/bp-groups-widgets.php:187 +msgid "No groups matched the current filter." +msgstr "" + +#: bp-members/bp-members-actions.php:41 +msgid "User marked as spammer. Spam users are visible only to site admins." +msgstr "" + +#: bp-members/bp-members-actions.php:43 +msgid "User removed as spammer." +msgstr "" + +#: bp-members/bp-members-actions.php:76 +msgid "%s has been deleted from the system." +msgstr "" + +#: bp-members/bp-members-actions.php:78 +msgid "There was an error deleting %s from the system. Please try again." +msgstr "" + +#: bp-members/bp-members-adminbar.php:96 +msgid "Log in" +msgstr "" + +#: bp-members/bp-members-adminbar.php:156 +msgid "Edit Member" +msgstr "" + +#: bp-members/bp-members-adminbar.php:165 +#: bp-xprofile/bp-xprofile-template.php:822 +#: bp-xprofile/bp-xprofile-template.php:823 +msgid "Edit Profile" +msgstr "" + +#: bp-members/bp-members-adminbar.php:182 +#: bp-members/bp-members-buddybar.php:116 +msgid "Mark as Spammer" +msgstr "" + +#: bp-members/bp-members-adminbar.php:184 +msgid "Are you sure you want to mark this user as a spammer?" +msgstr "" + +#: bp-members/bp-members-adminbar.php:190 +#: bp-members/bp-members-buddybar.php:120 +msgid "Not a Spammer" +msgstr "" + +#: bp-members/bp-members-adminbar.php:192 +msgid "Are you sure you want to mark this user as not a spammer?" +msgstr "" + +#: bp-members/bp-members-adminbar.php:200 +#: bp-settings/bp-settings-loader.php:115 +#: bp-settings/bp-settings-loader.php:175 +#: bp-themes/bp-default/members/single/settings/delete-account.php:50 +msgid "Delete Account" +msgstr "" + +#: bp-members/bp-members-adminbar.php:202 +msgid "Are you sure you want to delete this user's account?" +msgstr "" + +#: bp-members/bp-members-adminbar.php:219 +msgid "Notifications <span id=\"ab-pending-notifications\" class=\"pending-count\">%s</span>" +msgstr "" + +#: bp-members/bp-members-adminbar.php:221 bp-members/bp-members-buddybar.php:13 +#: bp-settings/bp-settings-loader.php:103 +#: bp-settings/bp-settings-loader.php:166 +msgid "Notifications" +msgstr "" + +#: bp-members/bp-members-adminbar.php:257 +msgid "No new notifications" +msgstr "" + +#: bp-members/bp-members-buddybar.php:34 +msgid "No new notifications." +msgstr "" + +#: bp-members/bp-members-buddybar.php:62 +msgid "Blog Authors" +msgstr "" + +#: bp-members/bp-members-buddybar.php:108 +msgid "Edit %s's Profile" +msgstr "" + +#: bp-members/bp-members-buddybar.php:112 +msgid "Edit %s's Avatar" +msgstr "" + +#: bp-members/bp-members-buddybar.php:124 +msgid "Delete %s's Account" +msgstr "" + +#: bp-members/bp-members-functions.php:780 +msgid "<strong>ERROR</strong>: Your account has been marked as a spammer." +msgstr "" + +#: bp-members/bp-members-loader.php:70 +msgid "Search Members..." +msgstr "" + +#: bp-members/bp-members-loader.php:177 +msgid "You" +msgstr "" + +#: bp-members/bp-members-signup.php:59 +msgid "Please make sure you enter your password twice" +msgstr "" + +#: bp-members/bp-members-signup.php:63 +msgid "The passwords you entered do not match." +msgstr "" + +#: bp-members/bp-members-signup.php:86 +msgid "This is a required field" +msgstr "" + +#: bp-members/bp-members-signup.php:207 +msgid "Your account is now active!" +msgstr "" + +#: bp-members/bp-members-signup.php:319 +msgid "Please enter a username" +msgstr "" + +#: bp-members/bp-members-signup.php:330 +msgid "Only lowercase letters and numbers allowed" +msgstr "" + +#: bp-members/bp-members-signup.php:333 +msgid "Username must be at least 4 characters" +msgstr "" + +#: bp-members/bp-members-signup.php:336 +msgid "Sorry, usernames may not contain the character \"_\"!" +msgstr "" + +#: bp-members/bp-members-signup.php:343 +msgid "Sorry, usernames must have letters too!" +msgstr "" + +#: bp-members/bp-members-signup.php:346 +msgid "Please check your email address." +msgstr "" + +#: bp-members/bp-members-signup.php:349 bp-members/bp-members-signup.php:357 +msgid "Sorry, that email address is not allowed!" +msgstr "" + +#: bp-members/bp-members-signup.php:362 +msgid "Sorry, that username already exists!" +msgstr "" + +#: bp-members/bp-members-signup.php:366 +msgid "Sorry, that email address is already used!" +msgstr "" + +#: bp-members/bp-members-signup.php:405 +msgid "<strong>ERROR</strong>: Couldn’t register you... please contact the <a href=\"mailto:%s\">webmaster</a> !" +msgstr "" + +#: bp-members/bp-members-signup.php:490 bp-members/bp-members-signup.php:494 +msgid "Invalid activation key" +msgstr "" + +#: bp-members/bp-members-signup.php:534 +msgid "%s became a registered member" +msgstr "" + +#: bp-members/bp-members-signup.php:608 +msgid "<strong>ERROR</strong>: Your account has not been activated. Check your email for the activation link." +msgstr "" + +#: bp-members/bp-members-template.php:212 +msgctxt "Member pagination previous text" +msgid "←" +msgstr "" + +#: bp-members/bp-members-template.php:213 +msgctxt "Member pagination next text" +msgid "→" +msgstr "" + +#: bp-members/bp-members-template.php:354 +msgid "Viewing member %1$s to %2$s (of %3$s active members)" +msgstr "" + +#: bp-members/bp-members-template.php:356 +msgid "Viewing member %1$s to %2$s (of %3$s members with friends)" +msgstr "" + +#: bp-members/bp-members-template.php:358 +msgid "Viewing member %1$s to %2$s (of %3$s members online)" +msgstr "" + +#: bp-members/bp-members-template.php:360 +msgid "Viewing member %1$s to %2$s (of %3$s members)" +msgstr "" + +#: bp-members/bp-members-template.php:561 +msgid "Never active" +msgstr "" + +#: bp-members/bp-members-template.php:583 +msgctxt "member latest update in member directory" +msgid "- "%s "" +msgstr "" + +#: bp-members/bp-members-template.php:640 +msgid "registered %s" +msgstr "" + +#: bp-members/bp-members-template.php:1091 +msgid "Your Avatar" +msgstr "" + +#: bp-members/bp-members-template.php:1159 +msgid "Activity RSS Feed" +msgstr "" + +#: bp-messages/bp-messages-actions.php:30 +msgid "Your reply was sent successfully" +msgstr "" + +#: bp-messages/bp-messages-actions.php:32 +msgid "There was a problem sending your reply, please try again" +msgstr "" + +#: bp-messages/bp-messages-actions.php:41 bp-messages/bp-messages-loader.php:96 +msgid "Messages <span>%s</span>" +msgstr "" + +#: bp-messages/bp-messages-actions.php:48 +msgid "From: %s" +msgstr "" + +#: bp-messages/bp-messages-actions.php:78 +msgid "There was an error deleting that message." +msgstr "" + +#: bp-messages/bp-messages-actions.php:80 +msgid "Message deleted." +msgstr "" + +#: bp-messages/bp-messages-actions.php:102 +msgid "There was an error deleting messages." +msgstr "" + +#: bp-messages/bp-messages-actions.php:104 +#: bp-themes/bp-default/_inc/ajax.php:676 +msgid "Messages deleted." +msgstr "" + +#: bp-messages/bp-messages-classes.php:203 +msgid " Recipients" +msgstr "" + +#: bp-messages/bp-messages-functions.php:48 +msgid "Re: %s" +msgstr "" + +#: bp-messages/bp-messages-functions.php:56 +msgid "No Subject" +msgstr "" + +#: bp-messages/bp-messages-functions.php:237 +#: bp-messages/bp-messages-loader.php:114 +#: bp-messages/bp-messages-loader.php:182 +msgid "Inbox" +msgstr "" + +#: bp-messages/bp-messages-functions.php:240 +msgid "You have %d new messages" +msgstr "" + +#: bp-messages/bp-messages-functions.php:243 +msgid "You have %d new message" +msgstr "" + +#: bp-messages/bp-messages-loader.php:24 +msgid "Private Messages" +msgstr "" + +#: bp-messages/bp-messages-loader.php:79 +msgid "Search Messages..." +msgstr "" + +#: bp-messages/bp-messages-loader.php:124 +#: bp-messages/bp-messages-loader.php:205 +msgid "Sent" +msgstr "" + +#: bp-messages/bp-messages-loader.php:134 +#: bp-messages/bp-messages-loader.php:213 +msgid "Compose" +msgstr "" + +#: bp-messages/bp-messages-loader.php:145 +msgid "Notices" +msgstr "" + +#: bp-messages/bp-messages-loader.php:178 +msgid "Messages <span class=\"count\">%s</span>" +msgstr "" + +#: bp-messages/bp-messages-loader.php:179 +msgid "Inbox <span class=\"count\">%s</span>" +msgstr "" + +#: bp-messages/bp-messages-loader.php:181 +#: bp-messages/bp-messages-screens.php:149 +msgid "Messages" +msgstr "" + +#: bp-messages/bp-messages-loader.php:222 +msgid "All Member Notices" +msgstr "" + +#: bp-messages/bp-messages-loader.php:241 +msgid "My Messages" +msgstr "" + +#: bp-messages/bp-messages-notifications.php:31 +msgid "New message from %s" +msgstr "" + +#: bp-messages/bp-messages-notifications.php:33 +msgid "" +"%s sent you a new message:\n" +"\n" +"Subject: %s\n" +"\n" +"\"%s\"\n" +"\n" +"To view and read your messages please log in and visit: %s\n" +"\n" +"---------------------\n" +msgstr "" + +#: bp-messages/bp-messages-screens.php:54 +#: bp-messages/bp-messages-screens.php:76 +msgid "There was an error sending that message, please try again" +msgstr "" + +#: bp-messages/bp-messages-screens.php:59 +msgid "Notice sent successfully!" +msgstr "" + +#: bp-messages/bp-messages-screens.php:62 +msgid "There was an error sending that notice, please try again" +msgstr "" + +#: bp-messages/bp-messages-screens.php:73 +msgid "Message sent successfully!" +msgstr "" + +#: bp-messages/bp-messages-screens.php:100 +msgid "There was a problem deactivating that notice." +msgstr "" + +#: bp-messages/bp-messages-screens.php:102 +msgid "Notice deactivated." +msgstr "" + +#: bp-messages/bp-messages-screens.php:106 +msgid "There was a problem activating that notice." +msgstr "" + +#: bp-messages/bp-messages-screens.php:108 +msgid "Notice activated." +msgstr "" + +#: bp-messages/bp-messages-screens.php:112 +msgid "There was a problem deleting that notice." +msgstr "" + +#: bp-messages/bp-messages-screens.php:114 +msgid "Notice deleted." +msgstr "" + +#: bp-messages/bp-messages-screens.php:158 +msgid "A member sends you a new message" +msgstr "" + +#: bp-messages/bp-messages-screens.php:164 +msgid "A new site notice is posted" +msgstr "" + +#: bp-messages/bp-messages-template.php:75 +msgctxt "Message pagination previous text" +msgid "←" +msgstr "" + +#: bp-messages/bp-messages-template.php:76 +msgctxt "Message pagination next text" +msgid "→" +msgstr "" + +#: bp-messages/bp-messages-template.php:343 +msgid "Viewing message %1$s to %2$s (of %3$s messages)" +msgstr "" + +#: bp-messages/bp-messages-template.php:401 +msgid "Select:" +msgstr "" + +#: bp-messages/bp-messages-template.php:404 +msgid "Read" +msgstr "" + +#: bp-messages/bp-messages-template.php:405 +msgid "Unread" +msgstr "" + +#: bp-messages/bp-messages-template.php:406 +msgid "All" +msgstr "" + +#: bp-messages/bp-messages-template.php:409 +msgid "Mark as Read" +msgstr "" + +#: bp-messages/bp-messages-template.php:410 +msgid "Mark as Unread" +msgstr "" + +#: bp-messages/bp-messages-template.php:412 +msgid "Delete Selected" +msgstr "" + +#: bp-messages/bp-messages-template.php:421 +msgid "Currently Active" +msgstr "" + +#: bp-messages/bp-messages-template.php:496 +msgid "Deactivate" +msgstr "" + +#: bp-messages/bp-messages-template.php:547 +#: bp-themes/bp-default/functions.php:172 +msgid "Close" +msgstr "" + +#: bp-messages/bp-messages-template.php:591 +msgid "Send a private message to this user." +msgstr "" + +#: bp-messages/bp-messages-template.php:592 +msgid "Private Message" +msgstr "" + +#: bp-messages/bp-messages-template.php:782 +msgid "%d Recipients" +msgstr "" + +#: bp-messages/bp-messages-template.php:857 +#: bp-themes/bp-default/_inc/ajax.php:601 +msgid "Sent %s" +msgstr "" + +#: bp-settings/bp-settings-actions.php:151 +msgid "That email address is invalid. Check the formatting and try again." +msgstr "" + +#: bp-settings/bp-settings-actions.php:154 +msgid "That email address is currently unavailable for use." +msgstr "" + +#: bp-settings/bp-settings-actions.php:157 +msgid "That email address is already taken." +msgstr "" + +#: bp-settings/bp-settings-actions.php:160 +msgid "Email address cannot be empty." +msgstr "" + +#: bp-settings/bp-settings-actions.php:170 +msgid "Your current password is invalid." +msgstr "" + +#: bp-settings/bp-settings-actions.php:173 +msgid "The new password fields did not match." +msgstr "" + +#: bp-settings/bp-settings-actions.php:176 +msgid "One of the password fields was empty." +msgstr "" + +#: bp-settings/bp-settings-actions.php:185 +msgid "Your settings have been saved." +msgstr "" + +#: bp-settings/bp-settings-actions.php:191 +msgid "No changes were made to your account." +msgstr "" + +#: bp-settings/bp-settings-actions.php:193 +msgid "No changes were made to this account." +msgstr "" + +#: bp-settings/bp-settings-actions.php:232 +#: bp-xprofile/bp-xprofile-screens.php:113 +msgid "Changes saved." +msgstr "" + +#: bp-settings/bp-settings-loader.php:92 bp-settings/bp-settings-loader.php:158 +msgid "General" +msgstr "" + +#: bp-themes/bp-default/404.php:7 +msgid "Page not found" +msgstr "" + +#: bp-themes/bp-default/404.php:9 +msgid "We're sorry, but we can't find the page that you're looking for. Perhaps searching will help." +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:189 +msgid "There was a problem posting your update, please try again." +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:293 +#: bp-themes/bp-default/_inc/ajax.php:332 +msgid "There was a problem when deleting. Please try again." +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:350 +#: bp-themes/bp-default/activity/entry.php:72 +#: bp-themes/bp-default/functions.php:175 +msgid "Remove Favorite" +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:362 +#: bp-themes/bp-default/activity/entry.php:68 +#: bp-themes/bp-default/functions.php:174 +msgid "Favorite" +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:425 +#: bp-themes/bp-default/groups/create.php:234 +#: bp-themes/bp-default/groups/single/send-invites.php:42 +msgid "Remove Invite" +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:470 +msgid "Request Pending" +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:487 +msgid "There was a problem accepting that request. Please try again." +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:503 +msgid "There was a problem rejecting that request. Please try again." +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:530 +msgid "Error joining group" +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:540 +msgid "Error requesting membership" +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:542 +msgid "Membership Requested" +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:551 +msgid "Error leaving group" +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:572 +msgid "There was a problem closing the notice." +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:618 +msgid "There was a problem sending that reply. Please try again." +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:631 +msgid "There was a problem marking messages as unread." +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:650 +msgid "There was a problem marking messages as read." +msgstr "" + +#: bp-themes/bp-default/_inc/ajax.php:669 +msgid "There was a problem deleting messages." +msgstr "" + +#: bp-themes/bp-default/activity/activity-loop.php:41 +msgid "Load More" +msgstr "" + +#: bp-themes/bp-default/activity/activity-loop.php:55 +msgid "Sorry, there was no activity found. Please try a different filter." +msgstr "" + +#. translators: 1: user profile link, 2: user name, 3: activity permalink, 3: +#. activity timestamp + +#: bp-themes/bp-default/activity/comment.php:27 +msgid "<a href=\"%1$s\">%2$s</a> replied <a href=\"%3$s\" class=\"activity-time-since\"><span class=\"time-since\">%4$s</span></a>" +msgstr "" + +#: bp-themes/bp-default/activity/comment.php:37 +#: bp-themes/bp-default/groups/single/forum/edit.php:10 +msgid "Reply" +msgstr "" + +#: bp-themes/bp-default/activity/entry.php:37 +msgid "In reply to: " +msgstr "" + +#: bp-themes/bp-default/activity/entry.php:37 +msgid "View Thread / Permalink" +msgstr "" + +#: bp-themes/bp-default/activity/entry.php:60 +msgid "Comment <span>%s</span>" +msgstr "" + +#: bp-themes/bp-default/activity/entry.php:68 +msgid "Mark as Favorite" +msgstr "" + +#: bp-themes/bp-default/activity/entry.php:104 +msgid "Post" +msgstr "" + +#: bp-themes/bp-default/activity/entry.php:104 +msgid "or press esc to cancel." +msgstr "" + +#: bp-themes/bp-default/activity/index.php:41 +msgid "The public activity for everyone on this site." +msgstr "" + +#: bp-themes/bp-default/activity/index.php:41 +#: bp-themes/bp-default/members/index.php:35 +msgid "All Members <span>%s</span>" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:51 +msgid "The activity of my friends only." +msgstr "" + +#: bp-themes/bp-default/activity/index.php:51 +#: bp-themes/bp-default/members/index.php:39 +msgid "My Friends <span>%s</span>" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:63 +msgid "The activity of groups I am a member of." +msgstr "" + +#: bp-themes/bp-default/activity/index.php:63 +#: bp-themes/bp-default/groups/index.php:41 +msgid "My Groups <span>%s</span>" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:73 +msgid "The activity I've marked as a favorite." +msgstr "" + +#: bp-themes/bp-default/activity/index.php:73 +msgid "My Favorites <span>%s</span>" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:79 +msgid "Activity that I have been mentioned in." +msgstr "" + +#: bp-themes/bp-default/activity/index.php:79 +msgid "<span>%s new</span>" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:89 +#: bp-themes/bp-default/groups/single/activity.php:3 +msgid "RSS Feed" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:89 +#: bp-themes/bp-default/groups/single/activity.php:3 +msgid "RSS" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:94 +#: bp-themes/bp-default/groups/single/activity.php:8 +#: bp-themes/bp-default/members/single/activity.php:18 +msgid "Show:" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:96 +#: bp-themes/bp-default/groups/single/activity.php:10 +#: bp-themes/bp-default/members/single/activity.php:20 +msgid "Everything" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:97 +#: bp-themes/bp-default/groups/single/activity.php:11 +#: bp-themes/bp-default/members/single/activity.php:21 +msgid "Updates" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:102 +#: bp-themes/bp-default/members/single/activity.php:28 +msgid "Comments" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:108 +#: bp-themes/bp-default/groups/single/activity.php:14 +#: bp-themes/bp-default/members/single/activity.php:43 +msgid "Forum Topics" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:109 +#: bp-themes/bp-default/groups/single/activity.php:15 +#: bp-themes/bp-default/members/single/activity.php:44 +msgid "Forum Replies" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:115 +#: bp-themes/bp-default/members/single/activity.php:50 +msgid "New Groups" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:116 +#: bp-themes/bp-default/groups/single/activity.php:18 +#: bp-themes/bp-default/members/single/activity.php:51 +msgid "Group Memberships" +msgstr "" + +#: bp-themes/bp-default/activity/index.php:126 +msgid "New Members" +msgstr "" + +#: bp-themes/bp-default/activity/post-form.php:23 +msgid "What's new in %s, %s?" +msgstr "" + +#: bp-themes/bp-default/activity/post-form.php:25 +msgid "What's new, %s?" +msgstr "" + +#: bp-themes/bp-default/activity/post-form.php:35 +msgid "Post Update" +msgstr "" + +#: bp-themes/bp-default/activity/post-form.php:42 +msgid "Post in" +msgstr "" + +#: bp-themes/bp-default/archive.php:10 +msgid "You are browsing the archive for %1$s." +msgstr "" + +#: bp-themes/bp-default/archive.php:24 bp-themes/bp-default/attachment.php:18 +#: bp-themes/bp-default/index.php:24 bp-themes/bp-default/search.php:26 +#: bp-themes/bp-default/single.php:16 +msgctxt "Post written by..." +msgid "by %s" +msgstr "" + +#: bp-themes/bp-default/archive.php:28 bp-themes/bp-default/attachment.php:22 +#: bp-themes/bp-default/index.php:32 bp-themes/bp-default/search.php:30 +msgid "Permanent Link to" +msgstr "" + +#: bp-themes/bp-default/archive.php:30 bp-themes/bp-default/index.php:34 +#: bp-themes/bp-default/search.php:32 bp-themes/bp-default/single.php:23 +msgid "%1$s <span>in %2$s</span>" +msgstr "" + +#: bp-themes/bp-default/archive.php:33 bp-themes/bp-default/index.php:37 +#: bp-themes/bp-default/search.php:35 bp-themes/bp-default/single.php:28 +msgid "Read the rest of this entry →" +msgstr "" + +#: bp-themes/bp-default/archive.php:34 bp-themes/bp-default/index.php:38 +#: bp-themes/bp-default/onecolumn-page.php:31 bp-themes/bp-default/page.php:20 +#: bp-themes/bp-default/single.php:30 +msgid "Pages: " +msgstr "" + +#: bp-themes/bp-default/archive.php:37 bp-themes/bp-default/index.php:41 +#: bp-themes/bp-default/search.php:38 bp-themes/bp-default/single.php:33 +msgid "Tags: " +msgstr "" + +#: bp-themes/bp-default/archive.php:37 bp-themes/bp-default/index.php:41 +#: bp-themes/bp-default/search.php:38 +msgid "No Comments »" +msgstr "" + +#: bp-themes/bp-default/archive.php:37 bp-themes/bp-default/index.php:41 +#: bp-themes/bp-default/search.php:38 +msgid "1 Comment »" +msgstr "" + +#: bp-themes/bp-default/archive.php:37 bp-themes/bp-default/index.php:41 +#: bp-themes/bp-default/search.php:38 +msgid "% Comments »" +msgstr "" + +#: bp-themes/bp-default/archive.php:50 bp-themes/bp-default/index.php:54 +msgid "Not Found" +msgstr "" + +#: bp-themes/bp-default/attachment.php:26 bp-themes/bp-default/single.php:24 +msgid "Edit this entry" +msgstr "" + +#: bp-themes/bp-default/attachment.php:40 +msgid "Full size is %s pixels" +msgstr "" + +#: bp-themes/bp-default/attachment.php:43 +msgid "Link to full size image" +msgstr "" + +#: bp-themes/bp-default/attachment.php:62 +msgid "Sorry, no attachments matched your criteria." +msgstr "" + +#: bp-themes/bp-default/blogs/blogs-loop.php:90 +msgid "Sorry, there were no sites found." +msgstr "" + +#: bp-themes/bp-default/blogs/create.php:32 +msgid "Site registration is currently disabled" +msgstr "" + +#: bp-themes/bp-default/blogs/index.php:35 +msgid "All Sites <span>%s</span>" +msgstr "" + +#: bp-themes/bp-default/blogs/index.php:39 +msgid "My Sites <span>%s</span>" +msgstr "" + +#: bp-themes/bp-default/blogs/index.php:55 +#: bp-themes/bp-default/forums/index.php:60 +#: bp-themes/bp-default/groups/index.php:57 +#: bp-themes/bp-default/groups/single/forum.php:36 +#: bp-themes/bp-default/members/index.php:55 +#: bp-themes/bp-default/members/single/blogs.php:19 +#: bp-themes/bp-default/members/single/forums.php:18 +#: bp-themes/bp-default/members/single/friends.php:20 +#: bp-themes/bp-default/members/single/groups.php:20 +#: bp-xprofile/bp-xprofile-classes.php:620 +msgid "Order By:" +msgstr "" + +#: bp-themes/bp-default/blogs/index.php:57 +#: bp-themes/bp-default/forums/index.php:62 +#: bp-themes/bp-default/groups/index.php:59 +#: bp-themes/bp-default/groups/single/forum.php:38 +#: bp-themes/bp-default/members/index.php:57 +#: bp-themes/bp-default/members/single/blogs.php:21 +#: bp-themes/bp-default/members/single/forums.php:20 +#: bp-themes/bp-default/members/single/friends.php:22 +#: bp-themes/bp-default/members/single/groups.php:22 +msgid "Last Active" +msgstr "" + +#: bp-themes/bp-default/blogs/index.php:59 +#: bp-themes/bp-default/groups/index.php:62 +#: bp-themes/bp-default/members/index.php:62 +#: bp-themes/bp-default/members/single/blogs.php:23 +#: bp-themes/bp-default/members/single/friends.php:24 +#: bp-themes/bp-default/members/single/groups.php:25 +msgid "Alphabetical" +msgstr "" + +#: bp-themes/bp-default/comments.php:3 +msgid "Password Protected" +msgstr "" + +#: bp-themes/bp-default/comments.php:4 +msgid "Enter the password to view comments." +msgstr "" + +#: bp-themes/bp-default/comments.php:24 +msgid "1 response to %2$s" +msgid_plural "%1$s responses to %2$s" +msgstr[0] "" +msgstr[1] "" + +#: bp-themes/bp-default/comments.php:46 +msgid "Comments are closed, but <a href=\"%1$s\" title=\"Trackback URL for this post\">trackbacks</a> and pingbacks are open." +msgstr "" + +#: bp-themes/bp-default/comments.php:50 +msgid "Comments are closed." +msgstr "" + +#: bp-themes/bp-default/comments.php:62 +msgid "1 trackback" +msgid_plural "%d trackbacks" +msgstr[0] "" +msgstr[1] "" + +#: bp-themes/bp-default/footer.php:15 +msgid "Proudly powered by <a href=\"%1$s\">WordPress</a> and <a href=\"%2$s\">BuddyPress</a>." +msgstr "" + +#: bp-themes/bp-default/forums/forums-loop.php:39 +msgid "Topic" +msgstr "" + +#: bp-themes/bp-default/forums/forums-loop.php:41 +msgid "Freshness" +msgstr "" + +#: bp-themes/bp-default/forums/forums-loop.php:54 +msgid "Permalink" +msgstr "" + +#. translators: "started by [poster] in [forum]" + +#: bp-themes/bp-default/forums/forums-loop.php:61 +msgid "Started by %1$s" +msgstr "" + +#. translators: "started by [poster] in [forum]" + +#: bp-themes/bp-default/forums/forums-loop.php:72 +msgid "in %1$s" +msgstr "" + +#: bp-themes/bp-default/forums/forums-loop.php:122 +msgid "Sorry, there were no forum topics found." +msgstr "" + +#: bp-themes/bp-default/forums/index.php:23 +msgid "Forums Directory" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:40 +msgid "All Topics <span>%s</span>" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:44 +msgid "My Topics <span>%s</span>" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:63 +#: bp-themes/bp-default/groups/single/forum.php:39 +#: bp-themes/bp-default/members/single/forums.php:21 +msgid "Most Posts" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:64 +#: bp-themes/bp-default/groups/single/forum.php:40 +#: bp-themes/bp-default/members/single/forums.php:22 +msgid "Unreplied" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:100 +msgid "Create New Topic:" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:107 +#: bp-themes/bp-default/groups/single/forum/edit.php:52 +#: bp-themes/bp-default/groups/single/forum.php:78 +msgid "Content:" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:110 +#: bp-themes/bp-default/groups/single/forum/edit.php:55 +#: bp-themes/bp-default/groups/single/forum.php:81 +msgid "Tags (comma separated):" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:113 +msgid "Post In Group Forum:" +msgstr "" + +#. translators: no option picked in select box + +#: bp-themes/bp-default/forums/index.php:116 +#: bp-xprofile/bp-xprofile-template.php:432 +msgid "----" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:133 +#: bp-themes/bp-default/groups/single/forum.php:87 +msgid "Post Topic" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:134 +#: bp-xprofile/bp-xprofile-classes.php:311 +#: bp-xprofile/bp-xprofile-classes.php:761 +msgid "Cancel" +msgstr "" + +#: bp-themes/bp-default/forums/index.php:145 +msgid "You are not a member of any groups so you don't have any group forums you can post in. To start posting, first find a group that matches the topic subject you'd like to start. If this group does not exist, why not <a href='%s'>create a new group</a>? Once you have joined or created the group you can post your topic in that group's forum." +msgstr "" + +#: bp-themes/bp-default/functions.php:81 +msgid "Primary Navigation" +msgstr "" + +#: bp-themes/bp-default/functions.php:166 +msgid "My Favorites" +msgstr "" + +#: bp-themes/bp-default/functions.php:167 +msgid "Accepted" +msgstr "" + +#: bp-themes/bp-default/functions.php:168 +msgid "Rejected" +msgstr "" + +#: bp-themes/bp-default/functions.php:169 +msgid "Show all comments for this thread" +msgstr "" + +#: bp-themes/bp-default/functions.php:170 +msgid "Show all" +msgstr "" + +#: bp-themes/bp-default/functions.php:171 +msgid "comments" +msgstr "" + +#: bp-themes/bp-default/functions.php:394 +msgid "The sidebar widget area" +msgstr "" + +#: bp-themes/bp-default/functions.php:403 +msgid "First Footer Widget Area" +msgstr "" + +#: bp-themes/bp-default/functions.php:405 +msgid "The first footer widget area" +msgstr "" + +#: bp-themes/bp-default/functions.php:414 +msgid "Second Footer Widget Area" +msgstr "" + +#: bp-themes/bp-default/functions.php:416 +msgid "The second footer widget area" +msgstr "" + +#: bp-themes/bp-default/functions.php:425 +msgid "Third Footer Widget Area" +msgstr "" + +#: bp-themes/bp-default/functions.php:427 +msgid "The third footer widget area" +msgstr "" + +#: bp-themes/bp-default/functions.php:436 +msgid "Fourth Footer Widget Area" +msgstr "" + +#: bp-themes/bp-default/functions.php:438 +msgid "The fourth footer widget area" +msgstr "" + +#. translators: 1: comment author url, 2: comment author name, 3: comment +#. permalink, 4: comment date/timestamp + +#: bp-themes/bp-default/functions.php:493 +msgid "<a href=\"%1$s\" rel=\"nofollow\">%2$s</a> said on <a href=\"%3$s\"><span class=\"time-since\">%4$s</span></a>" +msgstr "" + +#: bp-themes/bp-default/functions.php:500 +msgid "Your comment is awaiting moderation." +msgstr "" + +#: bp-themes/bp-default/functions.php:512 +msgid "Edit comment" +msgstr "" + +#: bp-themes/bp-default/functions.php:582 +msgid "Theme activated! This theme contains <a href=\"%s\">custom header image</a> support and <a href=\"%s\">sidebar widgets</a>." +msgstr "" + +#: bp-themes/bp-default/functions.php:653 +msgid "Email" +msgstr "" + +#: bp-themes/bp-default/functions.php:663 +msgid "You must be <a href=\"%1$s\">logged in</a> to post a comment." +msgstr "" + +#: bp-themes/bp-default/functions.php:664 +msgid "Leave a reply" +msgstr "" + +#: bp-themes/bp-default/functions.php:748 +msgid "← Previous Entries" +msgstr "" + +#: bp-themes/bp-default/functions.php:749 +msgid "Next Entries →" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:18 +#: bp-themes/bp-default/groups/index.php:23 +msgid "Groups Directory" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:39 +#: bp-themes/bp-default/groups/single/admin.php:16 +msgid "Group Name (required)" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:42 +#: bp-themes/bp-default/groups/single/admin.php:19 +msgid "Group Description (required)" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:62 +#: bp-themes/bp-default/groups/single/admin.php:47 +msgid "Enable discussion forum" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:69 +msgid "<strong>Attention Site Admin:</strong> Group forums require the <a href=\"%s\">correct setup and configuration</a> of a bbPress installation." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:78 +#: bp-themes/bp-default/groups/single/admin.php:56 +msgid "Privacy Options" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:82 +#: bp-themes/bp-default/groups/single/admin.php:61 +msgid "This is a public group" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:84 +#: bp-themes/bp-default/groups/single/admin.php:63 +msgid "Any site member can join this group." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:85 +#: bp-themes/bp-default/groups/create.php:94 +#: bp-themes/bp-default/groups/single/admin.php:64 +#: bp-themes/bp-default/groups/single/admin.php:74 +msgid "This group will be listed in the groups directory and in search results." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:86 +#: bp-themes/bp-default/groups/single/admin.php:65 +msgid "Group content and activity will be visible to any site member." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:91 +#: bp-themes/bp-default/groups/single/admin.php:71 +msgid "This is a private group" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:93 +#: bp-themes/bp-default/groups/single/admin.php:73 +msgid "Only users who request membership and are accepted can join the group." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:95 +#: bp-themes/bp-default/groups/create.php:104 +#: bp-themes/bp-default/groups/single/admin.php:75 +#: bp-themes/bp-default/groups/single/admin.php:85 +msgid "Group content and activity will only be visible to members of the group." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:100 +#: bp-themes/bp-default/groups/single/admin.php:81 +msgid "This is a hidden group" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:102 +#: bp-themes/bp-default/groups/single/admin.php:83 +msgid "Only users who are invited can join the group." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:103 +#: bp-themes/bp-default/groups/single/admin.php:84 +msgid "This group will not be listed in the groups directory or search results." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:111 +#: bp-themes/bp-default/groups/single/admin.php:92 +msgid "Group Invitations" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:113 +#: bp-themes/bp-default/groups/single/admin.php:94 +msgid "Which members of this group are allowed to invite others?" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:118 +#: bp-themes/bp-default/groups/single/admin.php:99 +msgid "All group members" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:123 +#: bp-themes/bp-default/groups/single/admin.php:104 +msgid "Group admins and mods only" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:128 +#: bp-themes/bp-default/groups/single/admin.php:109 +msgid "Group admins only" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:154 +#: bp-themes/bp-default/groups/single/admin.php:127 +msgid "Upload an image to use as an avatar for this group. The image will be shown on the main group page, and in search results." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:158 +#: bp-themes/bp-default/groups/single/admin.php:131 +#: bp-themes/bp-default/members/single/profile/change-avatar.php:18 +msgid "Upload Image" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:162 +msgid "To skip the avatar upload process, hit the \"Next Step\" button." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:169 +msgid "Crop Group Avatar" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:171 +#: bp-themes/bp-default/groups/single/admin.php:151 +#: bp-themes/bp-default/members/single/profile/change-avatar.php:33 +msgid "Avatar to crop" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:174 +#: bp-themes/bp-default/groups/single/admin.php:154 +#: bp-themes/bp-default/members/single/profile/change-avatar.php:36 +msgid "Avatar preview" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:177 +#: bp-themes/bp-default/groups/single/admin.php:157 +#: bp-themes/bp-default/members/single/profile/change-avatar.php:39 +msgid "Crop Image" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:216 +#: bp-themes/bp-default/groups/single/send-invites.php:22 +msgid "Select people to invite from your friends list." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:251 +#: bp-themes/bp-default/groups/single/send-invites.php:73 +msgid "Once you have built up friend connections you will be able to invite others to your group. You can send invites any time in the future by selecting the \"Send Invites\" option when viewing your new group." +msgstr "" + +#: bp-themes/bp-default/groups/create.php:273 +msgid "Back to Previous Step" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:280 +msgid "Next Step" +msgstr "" + +#: bp-themes/bp-default/groups/create.php:287 +msgid "Create Group and Continue" +msgstr "" + +#: bp-themes/bp-default/groups/groups-loop.php:95 +msgid "There were no groups found." +msgstr "" + +#: bp-themes/bp-default/groups/index.php:37 +msgid "All Groups <span>%s</span>" +msgstr "" + +#: bp-themes/bp-default/groups/index.php:60 +#: bp-themes/bp-default/members/single/groups.php:23 +msgid "Most Members" +msgstr "" + +#: bp-themes/bp-default/groups/index.php:61 +#: bp-themes/bp-default/members/single/groups.php:24 +msgid "Newly Created" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:25 +msgid "Notify group members of changes via email" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:32 +#: bp-themes/bp-default/groups/single/admin.php:117 +#: bp-themes/bp-default/groups/single/forum/edit.php:60 +#: bp-themes/bp-default/groups/single/forum/edit.php:76 +#: bp-themes/bp-default/members/single/profile/edit.php:126 +#: bp-themes/bp-default/members/single/settings/general.php:73 +#: bp-themes/bp-default/members/single/settings/notifications.php:62 +#: bp-xprofile/bp-xprofile-classes.php:274 +msgid "Save Changes" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:137 +msgid "If you'd like to remove the existing avatar but not upload a new one, please use the delete avatar button." +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:139 +#: bp-themes/bp-default/members/single/profile/change-avatar.php:24 +msgid "Delete Avatar" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:149 +msgid "Crop Avatar" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:177 +msgid "Administrators" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:203 +msgid "Moderators" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:258 +msgid "(banned)" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:264 +msgid "Unban this member" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:264 +msgid "Remove Ban" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:268 +msgid "Kick and ban this member" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:268 +msgid "Kick & Ban" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:269 +msgid "Promote to Mod" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:274 +msgid "Remove this member" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:274 +msgid "Remove from group" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:288 +#: bp-themes/bp-default/groups/single/members.php:87 +msgid "This group has no members." +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:318 +#: bp-themes/bp-default/members/single/friends/requests.php:37 +#: bp-themes/bp-default/members/single/groups/invites.php:23 +msgid "Accept" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:320 +#: bp-themes/bp-default/members/single/friends/requests.php:38 +#: bp-themes/bp-default/members/single/groups/invites.php:24 +msgid "Reject" +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:333 +msgid "There are no pending membership requests." +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:350 +msgid "WARNING: Deleting this group will completely remove ALL content associated with it. There is no way back, please be careful with this option." +msgstr "" + +#: bp-themes/bp-default/groups/single/admin.php:353 +msgid "I understand the consequences of deleting this group." +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/edit.php:16 +#: bp-themes/bp-default/groups/single/forum/topic.php:20 +#: bp-themes/bp-default/groups/single/forum.php:27 +msgid "Forum Directory" +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/edit.php:25 +msgid "Edit:" +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/edit.php:91 +msgid "This topic does not exist." +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/topic.php:12 +msgid "New Reply" +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/topic.php:35 +msgid "Topic tags:" +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/topic.php:81 +msgid "%1$s said %2$s:" +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/topic.php:95 +msgid "Permanent link to this post" +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/topic.php:126 +msgid "You will auto join this group when you reply to this topic." +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/topic.php:131 +msgid "Add a reply:" +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/topic.php:136 +msgid "Post Reply" +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/topic.php:147 +msgid "This topic is closed, replies are no longer accepted." +msgstr "" + +#: bp-themes/bp-default/groups/single/forum/topic.php:161 +msgid "There are no posts for this topic." +msgstr "" + +#: bp-themes/bp-default/groups/single/forum.php:69 +msgid "You will auto join this group when you start a new topic." +msgstr "" + +#: bp-themes/bp-default/groups/single/forum.php:73 +msgid "Post a New Topic:" +msgstr "" + +#: bp-themes/bp-default/groups/single/group-header.php:11 +msgid "Group Admins" +msgstr "" + +#: bp-themes/bp-default/groups/single/group-header.php:20 +msgid "Group Mods" +msgstr "" + +#: bp-themes/bp-default/groups/single/request-membership.php:4 +msgid "You are requesting to become a member of the group '%s'." +msgstr "" + +#: bp-themes/bp-default/groups/single/request-membership.php:7 +msgid "Comments (optional)" +msgstr "" + +#: bp-themes/bp-default/groups/single/request-membership.php:12 +msgid "Send Request" +msgstr "" + +#: bp-themes/bp-default/header.php:27 +msgctxt "Home page banner link title" +msgid "Home" +msgstr "" + +#: bp-themes/bp-default/header.php:30 +msgid "Search for:" +msgstr "" + +#: bp-themes/bp-default/index.php:27 +msgctxt "Sticky post" +msgid "Featured" +msgstr "" + +#: bp-themes/bp-default/index.php:55 +msgid "Sorry, but you are looking for something that isn't here." +msgstr "" + +#: bp-themes/bp-default/links.php:16 +msgid "Links" +msgstr "" + +#: bp-themes/bp-default/members/index.php:23 +msgid "Members Directory" +msgstr "" + +#: bp-themes/bp-default/members/index.php:58 +#: bp-themes/bp-default/members/single/friends.php:23 +msgid "Newest Registered" +msgstr "" + +#: bp-themes/bp-default/members/members-loop.php:108 +msgid "Sorry, no members were found." +msgstr "" + +#: bp-themes/bp-default/members/single/friends/requests.php:68 +msgid "You have no pending friendship requests." +msgstr "" + +#: bp-themes/bp-default/members/single/groups/invites.php:37 +msgid "You have no outstanding group invites." +msgstr "" + +#: bp-themes/bp-default/members/single/messages/compose.php:5 +msgid "Send To (Username or Friend's Name)" +msgstr "" + +#: bp-themes/bp-default/members/single/messages/compose.php:14 +msgid "This is a notice to all users." +msgstr "" + +#: bp-themes/bp-default/members/single/messages/compose.php:17 +msgid "Subject" +msgstr "" + +#: bp-themes/bp-default/members/single/messages/compose.php:20 +msgid "Message" +msgstr "" + +#: bp-themes/bp-default/members/single/messages/compose.php:28 +msgid "Send Message" +msgstr "" + +#: bp-themes/bp-default/members/single/messages/messages-loop.php:31 +msgid "From:" +msgstr "" + +#: bp-themes/bp-default/members/single/messages/messages-loop.php:36 +msgid "To:" +msgstr "" + +#: bp-themes/bp-default/members/single/messages/messages-loop.php:42 +msgid "View Message" +msgstr "" + +#: bp-themes/bp-default/members/single/messages/messages-loop.php:50 +#: bp-themes/bp-default/members/single/messages/notices-loop.php:38 +#: bp-themes/bp-default/members/single/messages/single.php:24 +msgid "Delete Message" +msgstr "" + +#: bp-themes/bp-default/members/single/messages/messages-loop.php:68 +msgid "Sorry, no messages were found." +msgstr "" + +#: bp-themes/bp-default/members/single/messages/notices-loop.php:31 +msgid "Sent:" +msgstr "" + +#: bp-themes/bp-default/members/single/messages/notices-loop.php:49 +msgid "Sorry, no notices were found." +msgstr "" + +#: bp-themes/bp-default/members/single/messages/single.php:14 +msgid "You are alone in this conversation." +msgstr "" + +#: bp-themes/bp-default/members/single/messages/single.php:18 +msgid "Conversation between %s and you." +msgstr "" + +#: bp-themes/bp-default/members/single/messages/single.php:75 +msgid "Send a Reply" +msgstr "" + +#: bp-themes/bp-default/members/single/messages/single.php:91 +msgid "Send Reply" +msgstr "" + +#: bp-themes/bp-default/members/single/profile/change-avatar.php:1 +#: bp-xprofile/bp-xprofile-loader.php:145 +#: bp-xprofile/bp-xprofile-loader.php:201 +msgid "Change Avatar" +msgstr "" + +#: bp-themes/bp-default/members/single/profile/change-avatar.php:7 +msgid "Your avatar will be used on your profile and throughout the site. If there is a <a href=\"http://gravatar.com\">Gravatar</a> associated with your account email we will use that, or you can upload an image from your computer." +msgstr "" + +#: bp-themes/bp-default/members/single/profile/change-avatar.php:14 +msgid "Click below to select a JPG, GIF or PNG format photo from your computer and then click 'Upload Image' to proceed." +msgstr "" + +#: bp-themes/bp-default/members/single/profile/change-avatar.php:23 +msgid "If you'd like to delete your current avatar but not upload a new one, please use the delete avatar button." +msgstr "" + +#: bp-themes/bp-default/members/single/profile/change-avatar.php:24 +msgid "Delete My Avatar" +msgstr "" + +#: bp-themes/bp-default/members/single/profile/change-avatar.php:31 +msgid "Crop Your New Avatar" +msgstr "" + +#: bp-themes/bp-default/members/single/profile/change-avatar.php:55 +msgid "Your avatar will be used on your profile and throughout the site. To change your avatar, please create an account with <a href=\"http://gravatar.com\">Gravatar</a> using the same email address as you used to register with this site." +msgstr "" + +#: bp-themes/bp-default/members/single/profile/edit.php:10 +msgid "Editing '%s' Profile Group" +msgstr "" + +#: bp-themes/bp-default/members/single/profile/edit.php:26 +#: bp-themes/bp-default/members/single/profile/edit.php:33 +#: bp-themes/bp-default/members/single/profile/edit.php:40 +#: bp-themes/bp-default/members/single/profile/edit.php:49 +#: bp-themes/bp-default/members/single/profile/edit.php:67 +#: bp-themes/bp-default/members/single/profile/edit.php:83 +#: bp-themes/bp-default/members/single/profile/edit.php:93 +#: bp-themes/bp-default/registration/register.php:37 +#: bp-themes/bp-default/registration/register.php:41 +#: bp-themes/bp-default/registration/register.php:45 +#: bp-themes/bp-default/registration/register.php:49 +#: bp-themes/bp-default/registration/register.php:76 +#: bp-themes/bp-default/registration/register.php:84 +#: bp-themes/bp-default/registration/register.php:92 +#: bp-themes/bp-default/registration/register.php:102 +#: bp-themes/bp-default/registration/register.php:113 +#: bp-themes/bp-default/registration/register.php:128 +#: bp-themes/bp-default/registration/register.php:139 +#: bp-themes/bp-default/registration/register.php:189 +#: bp-themes/bp-default/registration/register.php:198 +msgid "(required)" +msgstr "" + +#: bp-themes/bp-default/members/single/profile/edit.php:58 +#: bp-themes/bp-default/members/single/profile/edit.php:73 +#: bp-themes/bp-default/registration/register.php:119 +#: bp-xprofile/bp-xprofile-admin.php:432 +msgid "Clear" +msgstr "" + +#: bp-themes/bp-default/members/single/profile/profile-wp.php:8 +msgid "%s's Profile" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/delete-account.php:55 +msgid "WARNING: Deleting your account will completely remove ALL content associated with it. There is no way back, please be careful with this option." +msgstr "" + +#: bp-themes/bp-default/members/single/settings/delete-account.php:58 +msgid "I understand the consequences of deleting my account." +msgstr "" + +#: bp-themes/bp-default/members/single/settings/delete-account.php:63 +msgid "Delete My Account" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/general.php:50 +msgid "General Settings" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/general.php:58 +msgid "Current Password <span>(required to update email or change current password)</span>" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/general.php:59 +msgid "Password Lost and Found" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/general.php:59 +msgid "Lost your password?" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/general.php:63 +msgid "Account Email" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/general.php:66 +msgid "Change Password <span>(leave blank for no change)</span>" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/general.php:67 +msgid "New Password" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/general.php:68 +msgid "Repeat New Password" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/notifications.php:50 +msgid "Email Notification" +msgstr "" + +#: bp-themes/bp-default/members/single/settings/notifications.php:55 +msgid "Send a notification by email when:" +msgstr "" + +#: bp-themes/bp-default/onecolumn-page.php:29 bp-themes/bp-default/page.php:18 +msgid "<p class=\"serif\">Read the rest of this page →</p>" +msgstr "" + +#: bp-themes/bp-default/onecolumn-page.php:32 bp-themes/bp-default/page.php:21 +msgid "Edit this page." +msgstr "" + +#: bp-themes/bp-default/registration/activate.php:12 +msgid "Account Activated" +msgstr "" + +#: bp-themes/bp-default/registration/activate.php:17 +msgid "Your account was activated successfully! Your account details have been sent to you in a separate email." +msgstr "" + +#: bp-themes/bp-default/registration/activate.php:19 +msgid "Your account was activated successfully! You can now log in with the username and password you provided when you signed up." +msgstr "" + +#: bp-themes/bp-default/registration/activate.php:28 +msgid "Please provide a valid activation key." +msgstr "" + +#: bp-themes/bp-default/registration/activate.php:32 +msgid "Activation Key:" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:16 +msgid "User registration is currently not allowed." +msgstr "" + +#: bp-themes/bp-default/registration/register.php:27 +msgid "Registering for this site is easy, just fill in the fields below and we'll get a new account set up for you in no time." +msgstr "" + +#: bp-themes/bp-default/registration/register.php:35 +msgid "Account Details" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:37 +#: bp-themes/bp-default/sidebar.php:44 +msgid "Username" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:41 +msgid "Email Address" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:45 +msgid "Choose a Password" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:49 +msgid "Confirm Password" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:65 +msgid "Profile Details" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:183 +msgid "Blog Details" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:185 +msgid "Yes, I'd like to create a new site" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:189 +msgid "Blog URL" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:198 +msgid "Site Title" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:219 +msgid "Complete Sign Up" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:230 +msgid "Sign Up Complete!" +msgstr "" + +#: bp-themes/bp-default/registration/register.php:236 +msgid "You have successfully created your account! To begin using this site you will need to activate your account via the email we have just sent to your address." +msgstr "" + +#: bp-themes/bp-default/registration/register.php:238 +msgid "You have successfully created your account! Please log in using the username and password you have just created." +msgstr "" + +#: bp-themes/bp-default/search.php:10 +msgid "Site" +msgstr "" + +#: bp-themes/bp-default/search.php:14 +msgid "Search Results" +msgstr "" + +#: bp-themes/bp-default/search.php:51 +msgid "No posts found. Try a different search?" +msgstr "" + +#: bp-themes/bp-default/sidebar.php:37 +msgid "Please <a href=\"%s\" title=\"Create an account\">create an account</a> to get started." +msgstr "" + +#: bp-themes/bp-default/sidebar.php:47 +msgid "Password" +msgstr "" + +#: bp-themes/bp-default/sidebar.php:50 +msgid "Remember Me" +msgstr "" + +#: bp-themes/bp-default/sidebar.php:64 +msgid "Forum Topic Tags" +msgstr "" + +#: bp-themes/bp-default/single.php:35 +msgctxt "Previous post link" +msgid "←" +msgstr "" + +#: bp-themes/bp-default/single.php:36 +msgctxt "Next post link" +msgid "→" +msgstr "" + +#: bp-themes/bp-default/single.php:45 +msgid "Sorry, no posts matched your criteria." +msgstr "" + +#: bp-xprofile/bp-xprofile-activity.php:22 +msgid "New member registered" +msgstr "" + +#: bp-xprofile/bp-xprofile-activity.php:23 +msgid "Updated Profile" +msgstr "" + +#: bp-xprofile/bp-xprofile-activity.php:128 +msgid "%s changed their profile picture" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:25 +msgid "Profile Fields" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:74 +msgid "Extended Profile Fields" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:76 bp-xprofile/bp-xprofile-admin.php:178 +msgid "Add New Group" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:79 +msgid "Your users will distinguish themselves through their profile page. You must give them profile fields that allow them to describe themselves in a way that is relevant to the theme of your social network." +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:80 +msgid "NOTE: Any fields in the \"%s\" group will appear on the signup page." +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:103 bp-xprofile/bp-xprofile-admin.php:399 +msgid "(Primary)" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:120 +msgid "Add New Field" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:160 +msgid "There are no fields in this group." +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:177 +msgid "You have no groups." +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:209 +msgid "There was an error saving the group. Please try again" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:212 +msgid "The group was saved successfully." +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:244 +msgid "There was an error deleting the group. Please try again" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:247 +msgid "The group was deleted successfully." +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:288 +msgid "There was an error saving the field. Please try again" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:294 +msgid "The field was saved successfully." +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:324 +msgid "field" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:326 +msgid "option" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:331 +msgid "There was an error deleting the %s. Please try again" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:334 +msgid "The %s was deleted successfully!" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:399 +msgid "(Required)" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:244 +msgid "Please make sure you give the group a name." +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:268 +msgid "Add New Field Group" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:270 +msgid "Create Field Group" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:272 +msgid "Edit Field Group" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:282 +#: bp-xprofile/bp-xprofile-classes.php:702 +msgid "Fields marked * are required" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:293 +msgid "Field Group Title" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:301 +msgid "Group Description" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:311 +#: bp-xprofile/bp-xprofile-classes.php:761 +msgid "or" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:619 +msgid "Please enter options for this Field:" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:622 +msgid "Order Entered" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:623 +msgid "Name - Ascending" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:624 +msgid "Name - Descending" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:651 +#: bp-xprofile/bp-xprofile-classes.php:668 +msgid "Option" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:653 +#: bp-xprofile/bp-xprofile-classes.php:669 +msgid "Default Value" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:675 +msgid "Add Another Option" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:683 +msgid "Add Field" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:695 +msgid "Edit Field" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:715 +msgid "Field Title" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:724 +msgid "Field Description" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:731 +msgid "Is This Field Required?" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:733 +msgid "Not Required" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:734 +msgid "Required" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:739 +msgid "Field Type" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:741 +msgid "Text Box" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:742 +msgid "Multi-line Text Box" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:743 +msgid "Date Selector" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:744 +msgid "Radio Buttons" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:745 +msgid "Drop Down Select Box" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:746 +msgid "Multi Select Box" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:747 +msgid "Checkboxes" +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:779 +msgid "Please make sure you fill out all required fields." +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:782 +msgid "Radio button field types require at least one option. Please add options below." +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:785 +#: bp-xprofile/bp-xprofile-classes.php:788 +msgid "Select box field types require at least one option. Please add options below." +msgstr "" + +#: bp-xprofile/bp-xprofile-classes.php:791 +msgid "Checkbox field types require at least one option. Please add options below." +msgstr "" + +#: bp-xprofile/bp-xprofile-screens.php:85 +msgid "Please make sure you fill in all required fields in this profile field group before saving." +msgstr "" + +#: bp-xprofile/bp-xprofile-screens.php:111 +msgid "There was a problem updating some of your profile information, please try again." +msgstr "" + +#: bp-xprofile/bp-xprofile-screens.php:165 +msgid "There was a problem cropping your avatar, please try uploading it again" +msgstr "" + +#: bp-xprofile/bp-xprofile-screens.php:167 +msgid "Your new avatar was uploaded successfully!" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:615 +msgid "January" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:616 +msgid "February" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:617 +msgid "March" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:618 +msgid "April" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:619 +msgid "May" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:620 +msgid "June" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:621 +msgid "July" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:622 +msgid "August" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:623 +msgid "September" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:624 +msgid "October" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:625 +msgid "November" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:626 +msgid "December" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:759 +msgid "Avatar uploads are currently disabled. Why not use a <a href=\"http://gravatar.com\" target=\"_blank\">gravatar</a> instead?" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:768 +msgid "Profile not recently updated" +msgstr "" + +#: bp-xprofile/bp-xprofile-template.php:779 +msgid "Profile updated %s" +msgstr "" \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-loader.php b/wp-content/plugins/buddypress/bp-loader.php new file mode 100644 index 0000000..1e773db --- /dev/null +++ b/wp-content/plugins/buddypress/bp-loader.php @@ -0,0 +1,136 @@ +<?php +/** + * Plugin Name: BuddyPress + * Plugin URI: http://buddypress.org + * Description: Social networking in a box. Build a social network for your company, school, sports team or niche community all based on the power and flexibility of WordPress. + * Author: The BuddyPress Community + * Version: 1.5.6 + * Author URI: http://buddypress.org/community/members/ + * Network: true + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** Constants *****************************************************************/ +global $wpdb; + +// Define the BuddyPress version +if ( !defined( 'BP_VERSION' ) ) + define( 'BP_VERSION', '1.5.6' ); + +// Define the database version +if ( !defined( 'BP_DB_VERSION' ) ) + define( 'BP_DB_VERSION', 3830 ); + +// Place your custom code (actions/filters) in a file called +// '/plugins/bp-custom.php' and it will be loaded before anything else. +if ( file_exists( WP_PLUGIN_DIR . '/bp-custom.php' ) ) + require( WP_PLUGIN_DIR . '/bp-custom.php' ); + +// Define on which blog ID BuddyPress should run +if ( !defined( 'BP_ROOT_BLOG' ) ) { + + // Root blog is the main site on this network + if ( is_multisite() && !defined( 'BP_ENABLE_MULTIBLOG' ) ) { + $current_site = get_current_site(); + $root_blog_id = $current_site->blog_id; + + // Root blog is every site on this network + } elseif ( is_multisite() && defined( 'BP_ENABLE_MULTIBLOG' ) ) { + $root_blog_id = get_current_blog_id(); + + // Root blog is the only blog on this network + } elseif( !is_multisite() ) { + $root_blog_id = 1; + } + + define( 'BP_ROOT_BLOG', $root_blog_id ); +} + +// Path and URL +if ( !defined( 'BP_PLUGIN_DIR' ) ) + define( 'BP_PLUGIN_DIR', WP_PLUGIN_DIR . '/buddypress' ); + +if ( !defined( 'BP_PLUGIN_URL' ) ) + define( 'BP_PLUGIN_URL', plugins_url( 'buddypress' ) ); + +// The search slug has to be defined nice and early because of the way search requests are loaded +if ( !defined( 'BP_SEARCH_SLUG' ) ) + define( 'BP_SEARCH_SLUG', 'search' ); + +// Setup the BuddyPress theme directory +register_theme_directory( BP_PLUGIN_DIR . '/bp-themes' ); + +/** Loader ********************************************************************/ + +// Load the WP abstraction file so BuddyPress can run on all WordPress setups. +require( BP_PLUGIN_DIR . '/bp-core/bp-core-wpabstraction.php' ); + +// Test to see whether this is a new installation or an upgraded version of BuddyPress +if ( !$bp->database_version = get_site_option( 'bp-db-version' ) ) { + if ( $bp->database_version = get_option( 'bp-db-version' ) ) { + $bp->is_network_activate = 1; + } else { + $bp->database_version = get_site_option( 'bp-core-db-version' ); // BP 1.2 option + } +} + +// This is a new installation. +if ( empty( $bp->database_version ) ) { + $bp->maintenance_mode = 'install'; + require( BP_PLUGIN_DIR . '/bp-core/admin/bp-core-update.php' ); + +// There is a previous installation +} else { + // Load core + require( BP_PLUGIN_DIR . '/bp-core/bp-core-loader.php' ); + + // Check if an update is required + if ( (int)$bp->database_version < (int)constant( 'BP_DB_VERSION' ) || isset( $bp->is_network_activate ) ) { + $bp->maintenance_mode = 'update'; + require( BP_PLUGIN_DIR . '/bp-core/admin/bp-core-update.php' ); + } +} + +/** Activation ****************************************************************/ + +if ( !function_exists( 'bp_loader_activate' ) ) : +/** + * Defines BP's activation routine. + * + * Most of BP's crucial setup is handled by the setup wizard. This function takes care of some + * issues with incompatible legacy themes, and provides a hook for other functions to know that + * BP has been activated. + * + * @package BuddyPress Core +*/ +function bp_loader_activate() { + // Force refresh theme roots. + delete_site_transient( 'theme_roots' ); + + if ( !function_exists( 'get_blog_option' ) ) + require ( WP_PLUGIN_DIR . '/buddypress/bp-core/bp-core-wpabstraction.php' ); + + if ( !function_exists( 'bp_get_root_blog_id' ) ) + require ( WP_PLUGIN_DIR . '/buddypress/bp-core/bp-core-functions.php' ); + + // Switch the user to the new bp-default if they are using the old + // bp-default on activation. + if ( 'bp-sn-parent' == get_blog_option( bp_get_root_blog_id(), 'template' ) && 'bp-default' == get_blog_option( bp_get_root_blog_id(), 'stylesheet' ) ) + switch_theme( 'bp-default', 'bp-default' ); + + do_action( 'bp_loader_activate' ); +} +register_activation_hook( 'buddypress/bp-loader.php', 'bp_loader_activate' ); +endif; + +if ( !function_exists( 'bp_loader_deactivate' ) ) : +// Deactivation Function +function bp_loader_deactivate() { + do_action( 'bp_loader_deactivate' ); +} +register_deactivation_hook( 'buddypress/bp-loader.php', 'bp_loader_deactivate' ); +endif; + +?> diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-actions.php b/wp-content/plugins/buddypress/bp-members/bp-members-actions.php new file mode 100644 index 0000000..a7b9d6d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/bp-members-actions.php @@ -0,0 +1,109 @@ +<?php +/******************************************************************************* + * Action Functions + * + * Action functions are exactly the same as screen functions, however they do not + * have a template screen associated with them. Usually they will send the user + * back to the default screen after execution. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * When a site admin selects "Mark as Spammer/Not Spammer" from the admin menu + * this action will fire and mark or unmark the user and their blogs as spam. + * Must be a site admin for this function to run. + * + * @package BuddyPress Core + * @param int $user_id Optional user ID to mark as spam + * @global object $wpdb Global WordPress Database object + */ +function bp_core_action_set_spammer_status( $user_id = 0 ) { + + // Use displayed user if it's not yourself + if ( empty( $user_id ) ) + $user_id = bp_displayed_user_id(); + + if ( bp_is_current_component( 'admin' ) && ( in_array( bp_current_action(), array( 'mark-spammer', 'unmark-spammer' ) ) ) ) { + + // Check the nonce + check_admin_referer( 'mark-unmark-spammer' ); + + // To spam or not to spam + $status = bp_is_current_action( 'mark-spammer' ) ? 'spam' : 'ham'; + + // The heavy lifting + bp_core_process_spammer_status( $user_id, $status ); + + // Add feedback message. @todo - Error reporting + if ( 'spam' == $status ) { + bp_core_add_message( __( 'User marked as spammer. Spam users are visible only to site admins.', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'User removed as spammer.', 'buddypress' ) ); + } + + // Deprecated. Use bp_core_process_spammer_status. + $is_spam = 'spam' == $status; + do_action( 'bp_core_action_set_spammer_status', bp_displayed_user_id(), $is_spam ); + + // Redirect back to where we came from + bp_core_redirect( wp_get_referer() ); + } +} +add_action( 'bp_actions', 'bp_core_action_set_spammer_status' ); + +/** + * Allows a site admin to delete a user from the adminbar menu. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + */ +function bp_core_action_delete_user() { + global $bp; + + if ( !is_super_admin() || bp_is_my_profile() || !$bp->displayed_user->id ) + return false; + + if ( 'admin' == $bp->current_component && 'delete-user' == $bp->current_action ) { + // Check the nonce + check_admin_referer( 'delete-user' ); + + $errors = false; + do_action( 'bp_core_before_action_delete_user', $errors ); + + if ( bp_core_delete_account( $bp->displayed_user->id ) ) { + bp_core_add_message( sprintf( __( '%s has been deleted from the system.', 'buddypress' ), $bp->displayed_user->fullname ) ); + } else { + bp_core_add_message( sprintf( __( 'There was an error deleting %s from the system. Please try again.', 'buddypress' ), $bp->displayed_user->fullname ), 'error' ); + $errors = true; + } + + do_action( 'bp_core_action_delete_user', $errors ); + + if ( $errors ) + bp_core_redirect( $bp->displayed_user->domain ); + else + bp_core_redirect( $bp->loggedin_user->domain ); + } +} +add_action( 'bp_actions', 'bp_core_action_delete_user' ); + +/** + * Returns the user_id for a user based on their username. + * + * @package BuddyPress Core + * @param $username str Username to check. + * @return false on no match + * @return int the user ID of the matched user. + */ +function bp_core_get_random_member() { + global $bp; + + if ( isset( $_GET['random-member'] ) ) { + $user = bp_core_get_users( array( 'type' => 'random', 'per_page' => 1 ) ); + bp_core_redirect( bp_core_get_user_domain( $user['users'][0]->id ) ); + } +} +add_action( 'bp_actions', 'bp_core_get_random_member' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-adminbar.php b/wp-content/plugins/buddypress/bp-members/bp-members-adminbar.php new file mode 100644 index 0000000..00948c6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/bp-members-adminbar.php @@ -0,0 +1,291 @@ +<?php +/** + * BuddyPress Members Admin Bar + * + * Handles the member functions related to the WordPress Admin Bar + * + * @package BuddyPress + * @subpackage Core + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Adjust the admin bar menus based on which WordPress version this is + * + * @since BuddyPress (1.5.2) + */ +function bp_members_admin_bar_version_check() { + switch( bp_get_major_wp_version() ) { + case 3.2 : + add_action( 'bp_setup_admin_bar', 'bp_members_admin_bar_my_account_menu', 4 ); + add_action( 'bp_setup_admin_bar', 'bp_members_admin_bar_notifications_menu', 5 ); + add_action( 'bp_setup_admin_bar', 'bp_members_admin_bar_user_admin_menu', 99 ); + add_action( 'bp_setup_admin_bar', 'bp_members_admin_bar_my_account_logout', 9999 ); + break; + case 3.3 : + case 3.4 : + default : + add_action( 'bp_setup_admin_bar', 'bp_members_admin_bar_my_account_menu', 4 ); + add_action( 'bp_setup_admin_bar', 'bp_members_admin_bar_notifications_menu', 5 ); + add_action( 'admin_bar_menu', 'bp_members_admin_bar_user_admin_menu', 400 ); + break; + } +} +add_action( 'admin_bar_menu', 'bp_members_admin_bar_version_check', 4 ); + +/** + * Add the "My Account" menu and all submenus. + * + * @since BuddyPress (r4151) + */ +function bp_members_admin_bar_my_account_menu() { + global $bp, $wp_admin_bar; + + // Bail if this is an ajax request + if ( defined( 'DOING_AJAX' ) ) + return; + + // Logged in user + if ( is_user_logged_in() ) { + + if ( 3.2 == bp_get_major_wp_version() ) { + + // User avatar + $avatar = bp_core_fetch_avatar( array( + 'item_id' => $bp->loggedin_user->id, + 'email' => $bp->loggedin_user->userdata->user_email, + 'width' => 16, + 'height' => 16 + ) ); + + // Unique ID for the 'My Account' menu + $bp->my_account_menu_id = ( ! empty( $avatar ) ) ? 'my-account-with-avatar' : 'my-account'; + + // Create the main 'My Account' menu + $wp_admin_bar->add_menu( array( + 'id' => $bp->my_account_menu_id, + 'title' => $avatar . bp_get_loggedin_user_fullname(), + 'href' => $bp->loggedin_user->domain + ) ); + + } else { + + // Unique ID for the 'My Account' menu + $bp->my_account_menu_id = 'my-account-buddypress'; + + // Create the main 'My Account' menu + $wp_admin_bar->add_menu( array( + 'parent' => 'my-account', + 'id' => $bp->my_account_menu_id, + 'href' => $bp->loggedin_user->domain, + 'group' => true, + 'meta' => array( 'class' => 'ab-sub-secondary' ) + ) ); + } + + // Show login and sign-up links + } elseif ( !empty( $wp_admin_bar ) ) { + + add_filter ( 'show_admin_bar', '__return_true' ); + + // Create the main 'My Account' menu + $wp_admin_bar->add_menu( array( + 'id' => 'bp-login', + 'title' => __( 'Log in', 'buddypress' ), + 'href' => wp_login_url() + ) ); + + // Sign up + if ( bp_get_signup_allowed() ) { + $wp_admin_bar->add_menu( array( + 'id' => 'bp-register', + 'title' => __( 'Register', 'buddypress' ), + 'href' => bp_get_signup_page() + ) ); + } + } +} + +/** + * Adds the User Admin top-level menu to user pages + * + * @package BuddyPress + * @since 1.5 + */ +function bp_members_admin_bar_user_admin_menu() { + global $bp, $wp_admin_bar; + + // Only show if viewing a user + if ( !bp_is_user() ) + return false; + + // Don't show this menu to non site admins or if you're viewing your own profile + if ( !current_user_can( 'edit_users' ) || bp_is_my_profile() ) + return false; + + if ( 3.2 == bp_get_major_wp_version() ) { + + // User avatar + $avatar = bp_core_fetch_avatar( array( + 'item_id' => $bp->displayed_user->id, + 'email' => $bp->displayed_user->userdata->user_email, + 'width' => 16, + 'height' => 16 + ) ); + + // Unique ID for the 'My Account' menu + $bp->user_admin_menu_id = ( ! empty( $avatar ) ) ? 'user-admin-with-avatar' : 'user-admin'; + + // Add the top-level User Admin button + $wp_admin_bar->add_menu( array( + 'id' => $bp->user_admin_menu_id, + 'title' => $avatar . bp_get_displayed_user_fullname(), + 'href' => bp_displayed_user_domain() + ) ); + + } elseif ( 3.3 <= bp_get_major_wp_version() ) { + + // Unique ID for the 'My Account' menu + $bp->user_admin_menu_id = 'user-admin'; + + // Add the top-level User Admin button + $wp_admin_bar->add_menu( array( + 'id' => $bp->user_admin_menu_id, + 'title' => __( 'Edit Member', 'buddypress' ), + 'href' => bp_displayed_user_domain() + ) ); + } + + // User Admin > Edit this user's profile + $wp_admin_bar->add_menu( array( + 'parent' => $bp->user_admin_menu_id, + 'id' => 'edit-profile', + 'title' => __( "Edit Profile", 'buddypress' ), + 'href' => bp_get_members_component_link( 'profile', 'edit' ) + ) ); + + // User Admin > Edit this user's avatar + $wp_admin_bar->add_menu( array( + 'parent' => $bp->user_admin_menu_id, + 'id' => 'change-avatar', + 'title' => __( "Edit Avatar", 'buddypress' ), + 'href' => bp_get_members_component_link( 'profile', 'change-avatar' ) + ) ); + + // User Admin > Spam/unspam + if ( !bp_core_is_user_spammer( bp_displayed_user_id() ) ) { + $wp_admin_bar->add_menu( array( + 'parent' => $bp->user_admin_menu_id, + 'id' => 'spam-user', + 'title' => __( 'Mark as Spammer', 'buddypress' ), + 'href' => wp_nonce_url( bp_displayed_user_domain() . 'admin/mark-spammer/', 'mark-unmark-spammer' ), + 'meta' => array( 'onclick' => 'confirm(" ' . __( 'Are you sure you want to mark this user as a spammer?', 'buddypress' ) . '");' ) + ) ); + } else { + $wp_admin_bar->add_menu( array( + 'parent' => $bp->user_admin_menu_id, + 'id' => 'unspam-user', + 'title' => __( 'Not a Spammer', 'buddypress' ), + 'href' => wp_nonce_url( bp_displayed_user_domain() . 'admin/unmark-spammer/', 'mark-unmark-spammer' ), + 'meta' => array( 'onclick' => 'confirm(" ' . __( 'Are you sure you want to mark this user as not a spammer?', 'buddypress' ) . '");' ) + ) ); + } + + // User Admin > Delete Account + $wp_admin_bar->add_menu( array( + 'parent' => $bp->user_admin_menu_id, + 'id' => 'delete-user', + 'title' => __( 'Delete Account', 'buddypress' ), + 'href' => wp_nonce_url( bp_displayed_user_domain() . 'admin/delete-user/', 'delete-user' ), + 'meta' => array( 'onclick' => 'confirm(" ' . __( "Are you sure you want to delete this user's account?", 'buddypress' ) . '");' ) + ) ); +} + +/** + * Build the "Notifications" dropdown + * + * @package Buddypress + * @since 1.5 + */ +function bp_members_admin_bar_notifications_menu() { + global $bp, $wp_admin_bar; + + if ( !is_user_logged_in() ) + return false; + + if ( $notifications = bp_core_get_notifications_for_user( bp_loggedin_user_id(), 'object' ) ) { + $menu_title = sprintf( __( 'Notifications <span id="ab-pending-notifications" class="pending-count">%s</span>', 'buddypress' ), count( $notifications ) ); + } else { + $menu_title = __( 'Notifications', 'buddypress' ); + } + + if ( 3.2 == bp_get_major_wp_version() ) { + + // Add the top-level Notifications button + $wp_admin_bar->add_menu( array( + 'id' => 'bp-notifications', + 'title' => $menu_title, + 'href' => bp_loggedin_user_domain() + ) ); + + } elseif ( 3.3 <= bp_get_major_wp_version() ) { + + // Add the top-level Notifications button + $wp_admin_bar->add_menu( array( + 'parent' => 'top-secondary', + 'id' => 'bp-notifications', + 'title' => $menu_title, + 'href' => bp_loggedin_user_domain() + ) ); + } + + if ( !empty( $notifications ) ) { + foreach ( (array)$notifications as $notification ) { + $wp_admin_bar->add_menu( array( + 'parent' => 'bp-notifications', + 'id' => 'notification-' . $notification->id, + 'title' => $notification->content, + 'href' => $notification->href + ) ); + } + } else { + $wp_admin_bar->add_menu( array( + 'parent' => 'bp-notifications', + 'id' => 'no-notifications', + 'title' => __( 'No new notifications', 'buddypress' ), + 'href' => bp_loggedin_user_domain() + ) ); + } + + return; +} + +/** + * Make sure the logout link is at the bottom of the "My Account" menu + * + * @since BuddyPress (r4151) + * + * @global obj $bp + * @global obj $wp_admin_bar + */ +function bp_members_admin_bar_my_account_logout() { + global $bp, $wp_admin_bar; + + // Bail if this is an ajax request + if ( defined( 'DOING_AJAX' ) ) + return; + + if ( is_user_logged_in() ) { + // Log out + $wp_admin_bar->add_menu( array( + 'parent' => $bp->my_account_menu_id, + 'id' => $bp->my_account_menu_id . '-logout', + 'title' => __( 'Log Out', 'buddypress' ), + 'href' => wp_logout_url() + ) ); + } +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-buddybar.php b/wp-content/plugins/buddypress/bp-members/bp-members-buddybar.php new file mode 100644 index 0000000..ed94a52 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/bp-members-buddybar.php @@ -0,0 +1,135 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +// **** "Notifications" Menu ********* +function bp_adminbar_notifications_menu() { + global $bp; + + if ( !is_user_logged_in() ) + return false; + + echo '<li id="bp-adminbar-notifications-menu"><a href="' . $bp->loggedin_user->domain . '">'; + _e( 'Notifications', 'buddypress' ); + + if ( $notifications = bp_core_get_notifications_for_user( $bp->loggedin_user->id ) ) { ?> + <span><?php echo count( $notifications ) ?></span> + <?php + } + + echo '</a>'; + echo '<ul>'; + + if ( $notifications ) { + $counter = 0; + for ( $i = 0, $count = count( $notifications ); $i < $count; ++$i ) { + $alt = ( 0 == $counter % 2 ) ? ' class="alt"' : ''; ?> + + <li<?php echo $alt ?>><?php echo $notifications[$i] ?></li> + + <?php $counter++; + } + } else { ?> + + <li><a href="<?php echo $bp->loggedin_user->domain ?>"><?php _e( 'No new notifications.', 'buddypress' ); ?></a></li> + + <?php + } + + echo '</ul>'; + echo '</li>'; +} +add_action( 'bp_adminbar_menus', 'bp_adminbar_notifications_menu', 8 ); + +// **** "Blog Authors" Menu (visible when not logged in) ******** +function bp_adminbar_authors_menu() { + global $bp, $wpdb; + + // Only for multisite + if ( !is_multisite() ) + return false; + + // Hide on root blog + if ( $wpdb->blogid == bp_get_root_blog_id() || !bp_is_active( 'blogs' ) ) + return false; + + $blog_prefix = $wpdb->get_blog_prefix( $wpdb->blogid ); + $authors = $wpdb->get_results( "SELECT user_id, user_login, user_nicename, display_name, user_email, meta_value as caps FROM $wpdb->users u, $wpdb->usermeta um WHERE u.ID = um.user_id AND meta_key = '{$blog_prefix}capabilities' ORDER BY um.user_id" ); + + if ( !empty( $authors ) ) { + // This is a blog, render a menu with links to all authors + echo '<li id="bp-adminbar-authors-menu"><a href="/">'; + _e('Blog Authors', 'buddypress'); + echo '</a>'; + + echo '<ul class="author-list">'; + foreach( (array)$authors as $author ) { + $caps = maybe_unserialize( $author->caps ); + if ( isset( $caps['subscriber'] ) || isset( $caps['contributor'] ) ) continue; + + echo '<li>'; + echo '<a href="' . bp_core_get_user_domain( $author->user_id, $author->user_nicename, $author->user_login ) . '">'; + echo bp_core_fetch_avatar( array( 'item_id' => $author->user_id, 'email' => $author->user_email, 'width' => 15, 'height' => 15 ) ) ; + echo ' ' . $author->display_name . '</a>'; + echo '<div class="admin-bar-clear"></div>'; + echo '</li>'; + } + echo '</ul>'; + echo '</li>'; + } +} +add_action( 'bp_adminbar_menus', 'bp_adminbar_authors_menu', 12 ); + +/** + * Adds an admin bar menu to any profile page providing site moderator actions + * that allow capable users to clean up a users account. + * + * @package BuddyPress XProfile + * @global $bp BuddyPress + */ +function bp_members_adminbar_admin_menu() { + global $bp; + + // Only show if viewing a user + if ( !$bp->displayed_user->id ) + return false; + + // Don't show this menu to non site admins or if you're viewing your own profile + if ( !current_user_can( 'edit_users' ) || bp_is_my_profile() ) + return false; ?> + + <li id="bp-adminbar-adminoptions-menu"> + + <a href=""><?php _e( 'Admin Options', 'buddypress' ) ?></a> + + <ul> + <?php if ( bp_is_active( 'xprofile' ) ) : ?> + + <li><a href="<?php bp_members_component_link( 'profile', 'edit' ); ?>"><?php printf( __( "Edit %s's Profile", 'buddypress' ), esc_attr( $bp->displayed_user->fullname ) ) ?></a></li> + + <?php endif ?> + + <li><a href="<?php bp_members_component_link( 'profile', 'change-avatar' ); ?>"><?php printf( __( "Edit %s's Avatar", 'buddypress' ), esc_attr( $bp->displayed_user->fullname ) ) ?></a></li> + + <?php if ( !bp_core_is_user_spammer( $bp->displayed_user->id ) ) : ?> + + <li><a href="<?php echo wp_nonce_url( $bp->displayed_user->domain . 'admin/mark-spammer/', 'mark-unmark-spammer' ) ?>" class="confirm"><?php printf( __( "Mark as Spammer", 'buddypress' ), esc_attr( $bp->displayed_user->fullname ) ); ?></a></li> + + <?php else : ?> + + <li><a href="<?php echo wp_nonce_url( $bp->displayed_user->domain . 'admin/unmark-spammer/', 'mark-unmark-spammer' ) ?>" class="confirm"><?php _e( "Not a Spammer", 'buddypress' ) ?></a></li> + + <?php endif; ?> + + <li><a href="<?php echo wp_nonce_url( $bp->displayed_user->domain . 'admin/delete-user/', 'delete-user' ) ?>" class="confirm"><?php printf( __( "Delete %s's Account", 'buddypress' ), esc_attr( $bp->displayed_user->fullname ) ); ?></a></li> + + <?php do_action( 'bp_members_adminbar_admin_menu' ) ?> + + </ul> + </li> + + <?php +} +add_action( 'bp_adminbar_menus', 'bp_members_adminbar_admin_menu', 20 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-filters.php b/wp-content/plugins/buddypress/bp-members/bp-members-filters.php new file mode 100644 index 0000000..1601fb0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/bp-members-filters.php @@ -0,0 +1,75 @@ +<?php +/** + * BuddyPress Members Filters + * + * Member specific filters + * + * @package BuddyPress + * @subpackage Member Core + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Load additional sign-up sanitization filters on bp_loaded. These are used + * to prevent XSS in the BuddyPress sign-up process. You can unhook these to + * allow for customization of your registration fields, however it is highly + * recommended that you leave these in place for the safety of your network. + * + * @since BuddyPress (r4079) + * @uses add_filter() + */ +function bp_members_signup_sanitization() { + + // Filters on sign-up fields + $fields = array ( + 'bp_get_signup_username_value', + 'bp_get_signup_email_value', + 'bp_get_signup_with_blog_value', + 'bp_get_signup_blog_url_value', + 'bp_get_signup_blog_title_value', + 'bp_get_signup_blog_privacy_value', + 'bp_get_signup_avatar_dir_value', + ); + + // Add the filters to each field + foreach( $fields as $filter ) { + add_filter( $filter, 'esc_html', 1 ); + add_filter( $filter, 'wp_filter_kses', 2 ); + add_filter( $filter, 'stripslashes', 3 ); + } + + // Sanitize email + add_filter( 'bp_get_signup_email_value', 'sanitize_email' ); +} +add_action( 'bp_loaded', 'bp_members_signup_sanitization' ); + +/** + * Filter the user profile URL to point to BuddyPress profile edit + * + * @since BuddyPress 1.5.2 + * + * @global BuddyPress $bp + * @param string $url + * @param int $user_id + * @param string $scheme + * @return string + */ +function bp_members_edit_profile_url( $url, $user_id, $scheme = 'admin' ) { + global $bp; + + // Default to $url + $profile_link = $url; + + // If xprofile is active, use profile domain link + if ( bp_is_active( 'xprofile' ) ) { + $user_domain = bp_core_get_user_domain( $user_id ); + $profile_link = trailingslashit( $user_domain . $bp->profile->slug . '/edit' ); + } + + return apply_filters( 'bp_members_edit_profile_url', $profile_link, $url, $user_id, $scheme ); +} +add_filter( 'edit_profile_url', 'bp_members_edit_profile_url', 10, 3 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-functions.php b/wp-content/plugins/buddypress/bp-members/bp-members-functions.php new file mode 100644 index 0000000..ccf47e0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/bp-members-functions.php @@ -0,0 +1,814 @@ +<?php +/** + * BuddyPress Member Functions + * + * Functions specific to the members component. + * + * @package BuddyPress + * @subpackage Members + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Checks $bp pages global and looks for directory page + * + * @since 1.5 + * + * @global object $bp Global BuddyPress settings object + * @return bool True if set, False if empty + */ +function bp_members_has_directory() { + global $bp; + + return (bool) !empty( $bp->pages->members->id ); +} + +/** + * Define the slugs used for BuddyPress pages, based on the slugs of the WP pages used. + * These can be overridden manually by defining these slugs in wp-config.php. + * + * The fallback values are only used during initial BP page creation, when no slugs have been + * explicitly defined. + * + * @package BuddyPress Core Core + * @global object $bp Global BuddyPress settings object + */ +function bp_core_define_slugs() { + global $bp; + + // No custom members slug + if ( !defined( 'BP_MEMBERS_SLUG' ) ) + if ( !empty( $bp->pages->members ) ) + define( 'BP_MEMBERS_SLUG', $bp->pages->members->slug ); + else + define( 'BP_MEMBERS_SLUG', 'members' ); + + // No custom registration slug + if ( !defined( 'BP_REGISTER_SLUG' ) ) + if ( !empty( $bp->pages->register ) ) + define( 'BP_REGISTER_SLUG', $bp->pages->register->slug ); + else + define( 'BP_REGISTER_SLUG', 'register' ); + + // No custom activation slug + if ( !defined( 'BP_ACTIVATION_SLUG' ) ) + if ( !empty( $bp->pages->activate ) ) + define( 'BP_ACTIVATION_SLUG', $bp->pages->activate->slug ); + else + define( 'BP_ACTIVATION_SLUG', 'activate' ); + +} +add_action( 'bp_setup_globals', 'bp_core_define_slugs' ); + +/** + * Return an array of users IDs based on the parameters passed. + * + * @package BuddyPress Core + */ +function bp_core_get_users( $args = '' ) { + global $bp; + + $defaults = array( + 'type' => 'active', // active, newest, alphabetical, random or popular + 'user_id' => false, // Pass a user_id to limit to only friend connections for this user + 'exclude' => false, // Users to exclude from results + 'search_terms' => false, // Limit to users that match these search terms + 'meta_key' => false, // Limit to users who have this piece of usermeta + 'meta_value' => false, // With meta_key, limit to users where usermeta matches this value + + 'include' => false, // Pass comma separated list of user_ids to limit to only these users + 'per_page' => 20, // The number of results to return per page + 'page' => 1, // The page to return if limiting per page + 'populate_extras' => true, // Fetch the last active, where the user is a friend, total friend count, latest update + ); + + $params = wp_parse_args( $args, $defaults ); + extract( $params, EXTR_SKIP ); + + return apply_filters( 'bp_core_get_users', BP_Core_User::get_users( $type, $per_page, $page, $user_id, $include, $search_terms, $populate_extras, $exclude, $meta_key, $meta_value ), $params ); +} + +/** + * Returns the domain for the passed user: e.g. http://domain.com/members/andy/ + * + * @package BuddyPress Core + * @global $current_user WordPress global variable containing current logged in user information + * @param user_id The ID of the user. + */ +function bp_core_get_user_domain( $user_id, $user_nicename = false, $user_login = false ) { + global $bp; + + if ( empty( $user_id ) ) + return; + + if ( !$domain = wp_cache_get( 'bp_user_domain_' . $user_id, 'bp' ) ) { + $username = bp_core_get_username( $user_id, $user_nicename, $user_login ); + + if ( bp_is_username_compatibility_mode() ) + $username = rawurlencode( $username ); + + // If we are using a members slug, include it. + if ( !defined( 'BP_ENABLE_ROOT_PROFILES' ) ) + $domain = bp_get_root_domain() . '/' . bp_get_members_root_slug() . '/' . $username; + else + $domain = bp_get_root_domain() . '/' . $username; + + // Add a slash at the end, and filter before caching + $domain = apply_filters( 'bp_core_get_user_domain_pre_cache', trailingslashit( $domain ), $user_id, $user_nicename, $user_login ); + + // Cache the link + if ( !empty( $domain ) ) + wp_cache_set( 'bp_user_domain_' . $user_id, $domain, 'bp' ); + } + + return apply_filters( 'bp_core_get_user_domain', $domain, $user_id, $user_nicename, $user_login ); +} + +/** + * Fetch everything in the wp_users table for a user, without any usermeta. + * + * @package BuddyPress Core + * @param user_id The ID of the user. + * @uses BP_Core_User::get_core_userdata() Performs the query. + */ +function bp_core_get_core_userdata( $user_id ) { + if ( empty( $user_id ) ) + return false; + + if ( !$userdata = wp_cache_get( 'bp_core_userdata_' . $user_id, 'bp' ) ) { + $userdata = BP_Core_User::get_core_userdata( $user_id ); + wp_cache_set( 'bp_core_userdata_' . $user_id, $userdata, 'bp' ); + } + return apply_filters( 'bp_core_get_core_userdata', $userdata ); +} + +/** + * Returns the user id for the user that is currently being displayed. + * eg: http://andy.domain.com/ or http://domain.com/andy/ + * + * @package BuddyPress Core + * @uses bp_core_get_userid_from_user_login() Returns the user id for the username passed + * @return The user id for the user that is currently being displayed, return zero if this is not a user home and just a normal blog. + */ +function bp_core_get_displayed_userid( $user_login ) { + return apply_filters( 'bp_core_get_displayed_userid', bp_core_get_userid( $user_login ) ); +} + +/** + * Returns the user_id for a user based on their username. + * + * @package BuddyPress Core + * @param $username str Username to check. + * @global $wpdb WordPress DB access object. + * @return false on no match + * @return int the user ID of the matched user. + */ +function bp_core_get_userid( $username ) { + global $wpdb; + + if ( empty( $username ) ) + return false; + + return apply_filters( 'bp_core_get_userid', $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->users WHERE user_login = %s", $username ) ) ); +} + +/** + * Returns the user_id for a user based on their user_nicename. + * + * @package BuddyPress Core + * @param $username str Username to check. + * @global $wpdb WordPress DB access object. + * @return false on no match + * @return int the user ID of the matched user. + */ +function bp_core_get_userid_from_nicename( $user_nicename ) { + global $wpdb; + + if ( empty( $user_nicename ) ) + return false; + + return apply_filters( 'bp_core_get_userid_from_nicename', $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->users WHERE user_nicename = %s", $user_nicename ) ) ); +} + +/** + * Returns the username for a user based on their user id. + * + * @package BuddyPress Core + * @param $uid int User ID to check. + * @global $userdata WordPress user data for the current logged in user. + * @uses get_userdata() WordPress function to fetch the userdata for a user ID + * @return false on no match + * @return str the username of the matched user. + */ +function bp_core_get_username( $user_id, $user_nicename = false, $user_login = false ) { + global $bp; + + if ( !$username = wp_cache_get( 'bp_user_username_' . $user_id, 'bp' ) ) { + // Cache not found so prepare to update it + $update_cache = true; + + // Nicename and login were not passed + if ( empty( $user_nicename ) && empty( $user_login ) ) { + + // User ID matches logged in user + if ( isset( $bp->loggedin_user->id ) && $bp->loggedin_user->id == $user_id ) { + $userdata = &$bp->loggedin_user->userdata; + + // User ID matches displayed in user + } elseif ( isset( $bp->displayed_user->id ) && $bp->displayed_user->id == $user_id ) { + $userdata = &$bp->displayed_user->userdata; + + // No user ID match + } else { + $userdata = false; + } + + // No match so go dig + if ( empty( $userdata ) ) { + + // User not found so return false + if ( !$userdata = bp_core_get_core_userdata( $user_id ) ) { + return false; + } + } + + // Update the $user_id for later + $user_id = $userdata->ID; + + // Two possible options + $user_nicename = $userdata->user_nicename; + $user_login = $userdata->user_login; + } + + // Pull an audible and use the login over the nicename + if ( bp_is_username_compatibility_mode() ) + $username = $user_login; + else + $username = $user_nicename; + + // Username found in cache so don't update it again + } else { + $update_cache = false; + } + + // Check $username for empty spaces and default to nicename if found + if ( strstr( $username, ' ' ) ) + $username = bp_members_get_user_nicename( $user_id ); + + // Add this to cache + if ( ( true == $update_cache ) && !empty( $username ) ) + wp_cache_set( 'bp_user_username_' . $user_id, $username, 'bp' ); + + return apply_filters( 'bp_core_get_username', $username ); +} + +/** + * Returns the user_nicename for a user based on their user_id. This should be + * used for linking to user profiles and anywhere else a sanitized and unique + * slug to a user is needed. + * + * @since BuddyPress (1.5) + * + * @package BuddyPress Core + * @param $uid int User ID to check. + * @global $userdata WordPress user data for the current logged in user. + * @uses get_userdata() WordPress function to fetch the userdata for a user ID + * @return false on no match + * @return str the username of the matched user. + */ +function bp_members_get_user_nicename( $user_id ) { + global $bp; + + if ( !$user_nicename = wp_cache_get( 'bp_members_user_nicename_' . $user_id, 'bp' ) ) { + $update_cache = true; + + // User ID matches logged in user + if ( isset( $bp->loggedin_user->id ) && $bp->loggedin_user->id == $user_id ) { + $userdata = &$bp->loggedin_user->userdata; + + // User ID matches displayed in user + } elseif ( isset( $bp->displayed_user->id ) && $bp->displayed_user->id == $user_id ) { + $userdata = &$bp->displayed_user->userdata; + + // No user ID match + } else { + $userdata = false; + } + + // No match so go dig + if ( empty( $userdata ) ) { + + // User not found so return false + if ( !$userdata = bp_core_get_core_userdata( $user_id ) ) { + return false; + } + } + + // User nicename found + $user_nicename = $userdata->user_nicename; + + // Nicename found in cache so don't update it again + } else { + $update_cache = false; + } + + // Add this to cache + if ( true == $update_cache && !empty( $user_nicename ) ) + wp_cache_set( 'bp_members_user_nicename_' . $user_id, $user_nicename, 'bp' ); + + return apply_filters( 'bp_members_get_user_nicename', $user_nicename ); +} + +/** + * Returns the email address for the user based on user ID + * + * @package BuddyPress Core + * @param $uid int User ID to check. + * @uses get_userdata() WordPress function to fetch the userdata for a user ID + * @return false on no match + * @return str The email for the matched user. + */ +function bp_core_get_user_email( $uid ) { + if ( !$email = wp_cache_get( 'bp_user_email_' . $uid, 'bp' ) ) { + // User exists + if ( $ud = bp_core_get_core_userdata( $uid ) ) + $email = $ud->user_email; + + // User was deleted + else + $email = ''; + + wp_cache_set( 'bp_user_email_' . $uid, $email, 'bp' ); + } + + return apply_filters( 'bp_core_get_user_email', $email ); +} + +/** + * Returns a HTML formatted link for a user with the user's full name as the link text. + * eg: <a href="http://andy.domain.com/">Andy Peatling</a> + * Optional parameters will return just the name or just the URL. + * + * @param int $user_id User ID to check. + * @param $no_anchor bool Disable URL and HTML and just return full name. Default false. + * @param $just_link bool Disable full name and HTML and just return the URL text. Default false. + * @return false on no match + * @return str The link text based on passed parameters. + * @todo This function needs to be cleaned up or split into separate functions + */ +function bp_core_get_userlink( $user_id, $no_anchor = false, $just_link = false ) { + $display_name = bp_core_get_user_displayname( $user_id ); + + if ( empty( $display_name ) ) + return false; + + if ( $no_anchor ) + return $display_name; + + if ( !$url = bp_core_get_user_domain( $user_id ) ) + return false; + + if ( $just_link ) + return $url; + + return apply_filters( 'bp_core_get_userlink', '<a href="' . $url . '" title="' . $display_name . '">' . $display_name . '</a>', $user_id ); +} + + +/** + * Fetch the display name for a user. This will use the "Name" field in xprofile if it is installed. + * Otherwise, it will fall back to the normal WP display_name, or user_nicename, depending on what has been set. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + * @uses wp_cache_get() Will try and fetch the value from the cache, rather than querying the DB again. + * @uses get_userdata() Fetches the WP userdata for a specific user. + * @uses xprofile_set_field_data() Will update the field data for a user based on field name and user id. + * @uses wp_cache_set() Adds a value to the cache. + * @return str The display name for the user in question. + */ +function bp_core_get_user_displayname( $user_id_or_username ) { + global $bp; + + $fullname = ''; + + if ( !$user_id_or_username ) + return false; + + if ( !is_numeric( $user_id_or_username ) ) + $user_id = bp_core_get_userid( $user_id_or_username ); + else + $user_id = $user_id_or_username; + + if ( !$user_id ) + return false; + + if ( !$fullname = wp_cache_get( 'bp_user_fullname_' . $user_id, 'bp' ) ) { + if ( bp_is_active( 'xprofile' ) ) { + $fullname = xprofile_get_field_data( 1, $user_id ); + + if ( empty($fullname) ) { + $ud = bp_core_get_core_userdata( $user_id ); + + if ( !empty( $ud->display_name ) ) + $fullname = $ud->display_name; + elseif ( !empty( $ud->user_nicename ) ) + $fullname = $ud->user_nicename; + + xprofile_set_field_data( 1, $user_id, $fullname ); + } + } else { + $ud = bp_core_get_core_userdata($user_id); + + if ( !empty( $ud->display_name ) ) + $fullname = $ud->display_name; + elseif ( !empty( $ud->user_nicename ) ) + $fullname = $ud->user_nicename; + } + + if ( !empty( $fullname ) ) + wp_cache_set( 'bp_user_fullname_' . $user_id, $fullname, 'bp' ); + } + + return apply_filters( 'bp_core_get_user_displayname', $fullname, $user_id ); +} +add_filter( 'bp_core_get_user_displayname', 'strip_tags', 1 ); +add_filter( 'bp_core_get_user_displayname', 'trim' ); +add_filter( 'bp_core_get_user_displayname', 'stripslashes' ); + + +/** + * Returns the user link for the user based on user email address + * + * @package BuddyPress Core + * @param $email str The email address for the user. + * @uses bp_core_get_userlink() BuddyPress function to get a userlink by user ID. + * @uses get_user_by() WordPress function to get userdata via an email address + * @return str The link to the users home base. False on no match. + */ +function bp_core_get_userlink_by_email( $email ) { + $user = get_user_by( 'email', $email ); + return apply_filters( 'bp_core_get_userlink_by_email', bp_core_get_userlink( $user->ID, false, false, true ) ); +} + +/** + * Returns the user link for the user based on the supplied identifier + * + * @param $username str If BP_ENABLE_USERNAME_COMPATIBILITY_MODE is set, this will be user_login, otherwise it will be user_nicename. + * @return str The link to the users home base. False on no match. + */ +function bp_core_get_userlink_by_username( $username ) { + if ( bp_is_username_compatibility_mode() ) + $user_id = bp_core_get_userid( $username ); + else + $user_id = bp_core_get_userid_from_nicename( $username ); + + return apply_filters( 'bp_core_get_userlink_by_username', bp_core_get_userlink( $user_id, false, false, true ) ); +} + +/** + * Returns the total number of members for the installation. + * + * @package BuddyPress Core + * @return int The total number of members. + */ +function bp_core_get_total_member_count() { + global $wpdb, $bp; + + if ( !$count = wp_cache_get( 'bp_total_member_count', 'bp' ) ) { + $status_sql = bp_core_get_status_sql(); + $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(ID) FROM $wpdb->users WHERE {$status_sql}" ) ); + wp_cache_set( 'bp_total_member_count', $count, 'bp' ); + } + + return apply_filters( 'bp_core_get_total_member_count', $count ); +} + +/** + * Processes a spammed or unspammed user + * + * This function is called in two ways: + * - in bp_core_action_set_spammer_status() (when spamming from the front-end) + * - by bp_core_mark_user_spam_admin() or bp_core_mark_user_ham_admin() (when spamming from the + * Dashboard) + * + * @since 1.5.5 + * + * @param int $user_id The user being spammed/hammed + * @param string $status 'spam' if being marked as spam, 'ham' otherwise + */ +function bp_core_process_spammer_status( $user_id, $status ) { + global $wpdb; + + // Only super admins can currently spam users + if ( !is_super_admin() || bp_is_my_profile() ) + return; + + // Bail if no user ID + if ( empty( $user_id ) ) + return; + + // Bail if user ID is super admin + if ( is_super_admin( $user_id ) ) + return; + + // Get the functions file + if ( is_multisite() ) { + require_once( ABSPATH . 'wp-admin/includes/ms.php' ); + } + + $is_spam = 'spam' == $status; + + // Only you can prevent infinite loops + remove_action( 'make_spam_user', 'bp_core_mark_user_spam_admin' ); + remove_action( 'make_ham_user', 'bp_core_mark_user_ham_admin' ); + + // When marking as spam in the Dashboard, these actions are handled by WordPress + if ( !is_admin() ) { + // Get the blogs for the user + $blogs = get_blogs_of_user( $user_id, true ); + + foreach ( (array) $blogs as $key => $details ) { + + // Do not mark the main or current root blog as spam + if ( 1 == $details->userblog_id || bp_get_root_blog_id() == $details->userblog_id ) { + continue; + } + + // Update the blog status + update_blog_status( $details->userblog_id, 'spam', $is_spam ); + } + + // Finally, mark this user as a spammer + if ( is_multisite() ) { + update_user_status( $user_id, 'spam', $is_spam ); + } + + // Always set single site status + $wpdb->update( $wpdb->users, array( 'user_status' => $is_spam ), array( 'ID' => $user_id ) ); + + // Call multisite actions in single site mode for good measure + if ( !is_multisite() ) { + $wp_action = $is_spam ? 'make_spam_user' : 'make_ham_user'; + do_action( $wp_action, bp_displayed_user_id() ); + } + } + + // Hide this user's activity + if ( $is_spam && bp_is_active( 'activity' ) ) { + bp_activity_hide_user_activity( $user_id ); + } + + // We need a special hook for is_spam so that components can delete data at spam time + $bp_action = $is_spam ? 'bp_make_spam_user' : 'bp_make_ham_user'; + do_action( $bp_action, $user_id ); + + // Allow plugins to do neat things + do_action( 'bp_core_process_spammer_status', $user_id, $is_spam ); + + return true; +} + +/** + * Hook to WP's make_spam_user and run our custom BP spam functions + * + * @since 1.5.5 + * + * @param int $user_id The user id passed from the make_spam_user hook + */ +function bp_core_mark_user_spam_admin( $user_id ) { + bp_core_process_spammer_status( $user_id, 'spam' ); +} +add_action( 'make_spam_user', 'bp_core_mark_user_spam_admin' ); + +/** + * Hook to WP's make_ham_user and run our custom BP spam functions + * + * @since 1.5.5 + * + * @param int $user_id The user id passed from the make_ham_user hook + */ +function bp_core_mark_user_ham_admin( $user_id ) { + bp_core_process_spammer_status( $user_id, 'ham' ); +} +add_action( 'make_ham_user', 'bp_core_mark_user_ham_admin' ); + +/** + * Checks if the user has been marked as a spammer. + * + * @package BuddyPress Core + * @param int $user_id int The id for the user. + * @return bool True if spammer, False if not. + */ +function bp_core_is_user_spammer( $user_id = 0 ) { + global $wpdb; + + // No user to check + if ( empty( $user_id ) ) + return false; + + // Assume user is not spam + $is_spammer = false; + + // Get user data + $user = get_userdata( $user_id ); + + // No user found + if ( empty( $user ) ) { + $is_spammer = false; + + // User found + } else { + + // Check if spam + if ( !empty( $user->spam ) ) + $is_spammer = true; + + if ( 1 == $user->user_status ) + $is_spammer = true; + } + + return apply_filters( 'bp_core_is_user_spammer', (bool) $is_spammer ); +} + +/** + * Checks if the user has been marked as deleted. + * + * @package BuddyPress Core + * @param int $user_id int The id for the user. + * @return bool True if deleted, False if not. + */ +function bp_core_is_user_deleted( $user_id = 0 ) { + global $wpdb; + + // No user to check + if ( empty( $user_id ) ) + return false; + + // Assume user is not deleted + $is_deleted = false; + + // Get user data + $user = get_userdata( $user_id ); + + // No user found + if ( empty( $user ) ) { + $is_deleted = true; + + // User found + } else { + + // Check if deleted + if ( !empty( $user->deleted ) ) + $is_deleted = true; + + if ( 2 == $user->user_status ) + $is_deleted = true; + + } + + return apply_filters( 'bp_core_is_user_deleted', (bool) $is_deleted ); +} + +/** + * Fetch every post that is authored by the given user for the current blog. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + * @global $wpdb WordPress user data for the current logged in user. + * @return array of post ids. + */ +function bp_core_get_all_posts_for_user( $user_id = 0 ) { + global $bp, $wpdb; + + if ( empty( $user_id ) ) + $user_id = $bp->displayed_user->id; + + return apply_filters( 'bp_core_get_all_posts_for_user', $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d AND post_status = 'publish' AND post_type = 'post'", $user_id ) ) ); +} + +/** + * Allows a user to completely remove their account from the system + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + * @uses is_super_admin() Checks to see if the user is a site administrator. + * @uses wpmu_delete_user() Deletes a user from the system on multisite installs. + * @uses wp_delete_user() Deletes a user from the system on singlesite installs. + */ +function bp_core_delete_account( $user_id = 0 ) { + global $bp, $wp_version; + + if ( !$user_id ) + $user_id = $bp->loggedin_user->id; + + // Make sure account deletion is not disabled + if ( !empty( $bp->site_options['bp-disable-account-deletion'] ) && !$bp->loggedin_user->is_super_admin ) + return false; + + // Site admins cannot be deleted + if ( is_super_admin( bp_core_get_username( $user_id ) ) ) + return false; + + // Specifically handle multi-site environment + if ( is_multisite() ) { + if ( $wp_version >= '3.0' ) + require( ABSPATH . '/wp-admin/includes/ms.php' ); + else + require( ABSPATH . '/wp-admin/includes/mu.php' ); + + require( ABSPATH . '/wp-admin/includes/user.php' ); + + return wpmu_delete_user( $user_id ); + + // Single site user deletion + } else { + require( ABSPATH . '/wp-admin/includes/user.php' ); + return wp_delete_user( $user_id ); + } +} + +/** + * Localization safe ucfirst() support. + * + * @package BuddyPress Core + */ +function bp_core_ucfirst( $str ) { + if ( function_exists( 'mb_strtoupper' ) && function_exists( 'mb_substr' ) ) { + $fc = mb_strtoupper( mb_substr( $str, 0, 1 ) ); + return $fc.mb_substr( $str, 1 ); + } else { + return ucfirst( $str ); + } +} + +/** + * Strips spaces from usernames that are created using add_user() and wp_insert_user() + * + * @package BuddyPress Core + */ +function bp_core_strip_username_spaces( $username ) { + // Don't alter the user_login of existing users, as it causes user_nicename problems. + // See http://trac.buddypress.org/ticket/2642 + if ( username_exists( $username ) && ( !bp_is_username_compatibility_mode() ) ) + return $username; + + return str_replace( ' ', '-', $username ); +} +add_action( 'pre_user_login', 'bp_core_strip_username_spaces' ); + +/** + * When a user logs in, check if they have been marked as a spammer. If yes then simply + * redirect them to the home page and stop them from logging in. + * + * @package BuddyPress Core + * @param $auth_obj The WP authorization object + * @param $username The username of the user logging in. + * @uses get_user_by() Get the userdata object for a user based on their username + * @uses bp_core_redirect() Safe redirect to a page + * @return $auth_obj If the user is not a spammer, return the authorization object + */ +function bp_core_boot_spammer( $auth_obj, $username ) { + global $bp; + + if ( !$user = get_user_by( 'login', $username ) ) + return $auth_obj; + + if ( ( is_multisite() && (int)$user->spam ) || 1 == (int)$user->user_status ) + return new WP_Error( 'invalid_username', __( '<strong>ERROR</strong>: Your account has been marked as a spammer.', 'buddypress' ) ); + else + return $auth_obj; +} +add_filter( 'authenticate', 'bp_core_boot_spammer', 30, 2 ); + +/** + * Deletes usermeta for the user when the user is deleted. + * + * @package BuddyPress Core + * @param $user_id The user id for the user to delete usermeta for + * @uses bp_delete_user_meta() deletes a row from the wp_usermeta table based on meta_key + */ +function bp_core_remove_data( $user_id ) { + // Remove usermeta + bp_delete_user_meta( $user_id, 'last_activity' ); + + // Flush the cache to remove the user from all cached objects + wp_cache_flush(); +} +add_action( 'wpmu_delete_user', 'bp_core_remove_data' ); +add_action( 'delete_user', 'bp_core_remove_data' ); +add_action( 'bp_make_spam_user', 'bp_core_remove_data' ); + +function bp_core_can_edit_settings() { + if ( bp_is_my_profile() ) + return true; + + if ( is_super_admin() || current_user_can( 'edit_users' ) ) + return true; + + return false; +} + +?> diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-loader.php b/wp-content/plugins/buddypress/bp-members/bp-members-loader.php new file mode 100644 index 0000000..07f9bcd --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/bp-members-loader.php @@ -0,0 +1,193 @@ +<?php +/** + * BuddyPress Member Loader + * + * A members component to help contain all of the user specific slugs + * + * @package BuddyPress + * @subpackage Members + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +class BP_Members_Component extends BP_Component { + + /** + * Start the members component creation process + * + * @since 1.5 + */ + function __construct() { + parent::start( + 'members', + __( 'Members', 'buddypress' ), + BP_PLUGIN_DIR + ); + } + + /** + * Include files + * + * @global obj $bp + */ + function includes() { + $includes = array( + 'signup', + 'actions', + 'filters', + 'screens', + 'template', + 'buddybar', + 'adminbar', + 'functions', + 'notifications', + ); + parent::includes( $includes ); + } + + /** + * Setup globals + * + * The BP_MEMBERS_SLUG constant is deprecated, and only used here for + * backwards compatibility. + * + * @since 1.5 + * @global obj $bp + */ + function setup_globals() { + global $bp, $current_user, $displayed_user_id; + + // Define a slug, if necessary + if ( !defined( 'BP_MEMBERS_SLUG' ) ) + define( 'BP_MEMBERS_SLUG', $this->id ); + + $globals = array( + 'path' => BP_PLUGIN_DIR, + 'slug' => BP_MEMBERS_SLUG, + 'root_slug' => isset( $bp->pages->members->slug ) ? $bp->pages->members->slug : BP_MEMBERS_SLUG, + 'has_directory' => true, + 'search_string' => __( 'Search Members...', 'buddypress' ), + ); + + parent::setup_globals( $globals ); + + /** Logged in user ****************************************************/ + + // Fetch the full name for the logged in user + $bp->loggedin_user->fullname = bp_core_get_user_displayname( $bp->loggedin_user->id ); + + // Hits the DB on single WP installs so get this separately + $bp->loggedin_user->is_super_admin = $bp->loggedin_user->is_site_admin = is_super_admin(); + + // The domain for the user currently logged in. eg: http://domain.com/members/andy + $bp->loggedin_user->domain = bp_core_get_user_domain( $bp->loggedin_user->id ); + + // The core userdata of the user who is currently logged in. + $bp->loggedin_user->userdata = bp_core_get_core_userdata( $bp->loggedin_user->id ); + + /** Displayed user ****************************************************/ + + // The user id of the user currently being viewed: + // $bp->displayed_user->id is set in /bp-core/bp-core-catchuri.php + if ( empty( $bp->displayed_user->id ) ) + $bp->displayed_user->id = 0; + + // The domain for the user currently being displayed + $bp->displayed_user->domain = bp_core_get_user_domain( $bp->displayed_user->id ); + + // The core userdata of the user who is currently being displayed + $bp->displayed_user->userdata = bp_core_get_core_userdata( $bp->displayed_user->id ); + + // Fetch the full name displayed user + $bp->displayed_user->fullname = bp_core_get_user_displayname( $bp->displayed_user->id ); + + /** Profiles Fallback *************************************************/ + if ( !bp_is_active( 'xprofile' ) ) { + $bp->profile->slug = 'profile'; + $bp->profile->id = 'profile'; + } + + /** Default Profile Component *****************************************/ + if ( !defined( 'BP_DEFAULT_COMPONENT' ) ) { + if ( bp_is_active( 'activity' ) && isset( $bp->pages->activity ) ) + $bp->default_component = bp_get_activity_slug(); + else + $bp->default_component = ( 'xprofile' == $bp->profile->id ) ? 'profile' : $bp->profile->id; + + } else { + $bp->default_component = BP_DEFAULT_COMPONENT; + } + + if ( !$bp->current_component && $bp->displayed_user->id ) + $bp->current_component = $bp->default_component; + } + + /** + * Setup BuddyBar navigation + * + * @global obj $bp + */ + function setup_nav() { + global $bp; + + // Add 'Profile' to the main navigation + if ( !bp_is_active( 'xprofile' ) ) { + // Don't set up navigation if there's no user + if ( !is_user_logged_in() && !bp_is_user() ) + return; + + $main_nav = array( + 'name' => __( 'Profile', 'buddypress' ), + 'slug' => $bp->profile->slug, + 'position' => 20, + 'screen_function' => 'bp_members_screen_display_profile', + 'default_subnav_slug' => 'public', + 'item_css_id' => $bp->profile->id + ); + + // User links + $user_domain = ( isset( $bp->displayed_user->domain ) ) ? $bp->displayed_user->domain : $bp->loggedin_user->domain; + $user_login = ( isset( $bp->displayed_user->userdata->user_login ) ) ? $bp->displayed_user->userdata->user_login : $bp->loggedin_user->userdata->user_login; + $profile_link = trailingslashit( $user_domain . $bp->profile->slug ); + + // Add the subnav items to the profile + $sub_nav[] = array( + 'name' => __( 'Public', 'buddypress' ), + 'slug' => 'public', + 'parent_url' => $profile_link, + 'parent_slug' => $bp->profile->slug, + 'screen_function' => 'bp_members_screen_display_profile', + 'position' => 10 + ); + + parent::setup_nav( $main_nav, $sub_nav ); + } + } + + /** + * Sets up the title for pages and <title> + * + * @global obj $bp + */ + function setup_title() { + global $bp; + + if ( bp_is_my_profile() ) { + $bp->bp_options_title = __( 'You', 'buddypress' ); + } elseif( bp_is_user() ) { + $bp->bp_options_avatar = bp_core_fetch_avatar( array( + 'item_id' => $bp->displayed_user->id, + 'type' => 'thumb' + ) ); + $bp->bp_options_title = $bp->displayed_user->fullname; + } + + parent::setup_title(); + } + +} +// Create the users component +$bp->members = new BP_Members_Component(); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-notifications.php b/wp-content/plugins/buddypress/bp-members/bp-members-notifications.php new file mode 100644 index 0000000..3635827 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/bp-members-notifications.php @@ -0,0 +1,131 @@ +<?php +/** + * BuddyPress Member Notifications + * + * Functions and filters used for member notification + * + * @package BuddyPress + * @subpackage Members + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function bp_core_add_notification( $item_id, $user_id, $component_name, $component_action, $secondary_item_id = 0, $date_notified = false ) { + global $bp; + + if ( empty( $date_notified ) ) + $date_notified = bp_core_current_time(); + + $notification = new BP_Core_Notification; + $notification->item_id = $item_id; + $notification->user_id = $user_id; + $notification->component_name = $component_name; + $notification->component_action = $component_action; + $notification->date_notified = $date_notified; + $notification->is_new = 1; + + if ( !empty( $secondary_item_id ) ) + $notification->secondary_item_id = $secondary_item_id; + + if ( !$notification->save() ) + return false; + + return true; +} + +function bp_core_delete_notification( $id ) { + if ( !bp_core_check_notification_access( $bp->loggedin_user->id, $id ) ) + return false; + + return BP_Core_Notification::delete( $id ); +} + +function bp_core_get_notification( $id ) { + return new BP_Core_Notification( $id ); +} + +function bp_core_get_notifications_for_user( $user_id, $format = 'simple' ) { + global $bp; + + $notifications = BP_Core_Notification::get_all_for_user( $user_id ); + + // Group notifications by component and component_action and provide totals + for ( $i = 0, $count = count( $notifications ); $i < $count; ++$i ) { + $notification = $notifications[$i]; + $grouped_notifications[$notification->component_name][$notification->component_action][] = $notification; + } + + if ( empty( $grouped_notifications ) ) + return false; + + $renderable = array(); + + // Calculate a renderable output for each notification type + foreach ( (array)$grouped_notifications as $component_name => $action_arrays ) { + if ( !$action_arrays ) + continue; + + foreach ( (array)$action_arrays as $component_action_name => $component_action_items ) { + $action_item_count = count($component_action_items); + + if ( $action_item_count < 1 ) + continue; + + // @deprecated format_notification_function - 1.5 + if ( isset( $bp->{$component_name}->format_notification_function ) && function_exists( $bp->{$component_name}->format_notification_function ) ) { + $renderable[] = call_user_func( $bp->{$component_name}->format_notification_function, $component_action_name, $component_action_items[0]->item_id, $component_action_items[0]->secondary_item_id, $action_item_count ); + } elseif ( isset( $bp->{$component_name}->notification_callback ) && function_exists( $bp->{$component_name}->notification_callback ) ) { + if ( 'object' == $format ) { + $content = call_user_func( $bp->{$component_name}->notification_callback, $component_action_name, $component_action_items[0]->item_id, $component_action_items[0]->secondary_item_id, $action_item_count, 'array' ); + + $notification_object = new stdClass; + + // Minimal backpat with non-compatible notification + // callback functions + if ( is_string( $content ) ) { + $notification_object->content = $content; + $notification_object->href = bp_loggedin_user_domain(); + } else { + $notification_object->content = $content['text']; + $notification_object->href = $content['link']; + } + + $notification_object->id = $component_action_items[0]->id; + + $renderable[] = $notification_object; + } else { + $content = call_user_func( $bp->{$component_name}->notification_callback, $component_action_name, $component_action_items[0]->item_id, $component_action_items[0]->secondary_item_id, $action_item_count ); + $renderable[] = $content; + } + } + } + } + + return isset( $renderable ) ? $renderable : false; +} + +function bp_core_delete_notifications_by_type( $user_id, $component_name, $component_action ) { + return BP_Core_Notification::delete_for_user_by_type( $user_id, $component_name, $component_action ); +} + +function bp_core_delete_notifications_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id = false ) { + return BP_Core_Notification::delete_for_user_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id ); +} + +function bp_core_delete_all_notifications_by_type( $item_id, $component_name, $component_action = false, $secondary_item_id = false ) { + return BP_Core_Notification::delete_all_by_type( $item_id, $component_name, $component_action, $secondary_item_id ); +} + +function bp_core_delete_notifications_from_user( $user_id, $component_name, $component_action ) { + return BP_Core_Notification::delete_from_user_by_type( $user_id, $component_name, $component_action ); +} + +function bp_core_check_notification_access( $user_id, $notification_id ) { + if ( !BP_Core_Notification::check_access( $user_id, $notification_id ) ) + return false; + + return true; +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-screens.php b/wp-content/plugins/buddypress/bp-members/bp-members-screens.php new file mode 100644 index 0000000..cac072e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/bp-members-screens.php @@ -0,0 +1,48 @@ +<?php +/** + * BuddyPress Member Screens + * + * Handlers for member screens that aren't handled elsewhere + * + * @package BuddyPress + * @subpackage Members + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Handles the display of the profile page by loading the correct template file. + * + * @package BuddyPress Members + * @uses bp_core_load_template() Looks for and loads a template file within the current member theme (folder/filename) + */ +function bp_members_screen_display_profile() { + do_action( 'bp_members_screen_display_profile' ); + bp_core_load_template( apply_filters( 'bp_members_screen_display_profile', 'members/single/home' ) ); +} + +/** + * Handles the display of the members directory index + * + * @global object $bp + * + * @uses bp_is_user() + * @uses bp_is_current_component() + * @uses do_action() + * @uses bp_core_load_template() + * @uses apply_filters() + */ +function bp_members_screen_index() { + if ( !bp_is_user() && bp_is_members_component() ) { + bp_update_is_directory( true, 'members' ); + + do_action( 'bp_members_screen_index' ); + + bp_core_load_template( apply_filters( 'bp_members_screen_index', 'members/index' ) ); + } +} +add_action( 'bp_screens', 'bp_members_screen_index' ); + + +?> diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-signup.php b/wp-content/plugins/buddypress/bp-members/bp-members-signup.php new file mode 100644 index 0000000..ea58e21 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/bp-members-signup.php @@ -0,0 +1,630 @@ +<?php +/** + * BuddyPress Member Sign-up + * + * Functions and filters specific to the member sign-up process + * + * @package BuddyPress + * @subpackage Members + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function bp_core_screen_signup() { + global $bp, $wpdb; + + if ( !bp_is_current_component( 'register' ) ) + return; + + // Not a directory + bp_update_is_directory( false, 'register' ); + + // If the user is logged in, redirect away from here + if ( is_user_logged_in() ) { + if ( bp_is_component_front_page( 'register' ) ) + $redirect_to = bp_get_root_domain() . '/' . bp_get_members_root_slug(); + else + $redirect_to = bp_get_root_domain(); + + bp_core_redirect( apply_filters( 'bp_loggedin_register_page_redirect_to', $redirect_to ) ); + + return; + } + + $bp->signup->step = 'request-details'; + + if ( !bp_get_signup_allowed() ) { + $bp->signup->step = 'registration-disabled'; + } + + // If the signup page is submitted, validate and save + elseif ( isset( $_POST['signup_submit'] ) ) { + + // Check the nonce + check_admin_referer( 'bp_new_signup' ); + + // Check the base account details for problems + $account_details = bp_core_validate_user_signup( $_POST['signup_username'], $_POST['signup_email'] ); + + // If there are errors with account details, set them for display + if ( !empty( $account_details['errors']->errors['user_name'] ) ) + $bp->signup->errors['signup_username'] = $account_details['errors']->errors['user_name'][0]; + + if ( !empty( $account_details['errors']->errors['user_email'] ) ) + $bp->signup->errors['signup_email'] = $account_details['errors']->errors['user_email'][0]; + + // Check that both password fields are filled in + if ( empty( $_POST['signup_password'] ) || empty( $_POST['signup_password_confirm'] ) ) + $bp->signup->errors['signup_password'] = __( 'Please make sure you enter your password twice', 'buddypress' ); + + // Check that the passwords match + if ( ( !empty( $_POST['signup_password'] ) && !empty( $_POST['signup_password_confirm'] ) ) && $_POST['signup_password'] != $_POST['signup_password_confirm'] ) + $bp->signup->errors['signup_password'] = __( 'The passwords you entered do not match.', 'buddypress' ); + + $bp->signup->username = $_POST['signup_username']; + $bp->signup->email = $_POST['signup_email']; + + // Now we've checked account details, we can check profile information + if ( bp_is_active( 'xprofile' ) ) { + + // Make sure hidden field is passed and populated + if ( isset( $_POST['signup_profile_field_ids'] ) && !empty( $_POST['signup_profile_field_ids'] ) ) { + + // Let's compact any profile field info into an array + $profile_field_ids = explode( ',', $_POST['signup_profile_field_ids'] ); + + // Loop through the posted fields formatting any datebox values then validate the field + foreach ( (array) $profile_field_ids as $field_id ) { + if ( !isset( $_POST['field_' . $field_id] ) ) { + if ( !empty( $_POST['field_' . $field_id . '_day'] ) && !empty( $_POST['field_' . $field_id . '_month'] ) && !empty( $_POST['field_' . $field_id . '_year'] ) ) + $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $_POST['field_' . $field_id . '_day'] . $_POST['field_' . $field_id . '_month'] . $_POST['field_' . $field_id . '_year'] ) ); + } + + // Create errors for required fields without values + if ( xprofile_check_is_required_field( $field_id ) && empty( $_POST['field_' . $field_id] ) ) + $bp->signup->errors['field_' . $field_id] = __( 'This is a required field', 'buddypress' ); + } + + // This situation doesn't naturally occur so bounce to website root + } else { + bp_core_redirect( bp_get_root_domain() ); + } + } + + // Finally, let's check the blog details, if the user wants a blog and blog creation is enabled + if ( isset( $_POST['signup_with_blog'] ) ) { + $active_signup = $bp->site_options['registration']; + + if ( 'blog' == $active_signup || 'all' == $active_signup ) { + $blog_details = bp_core_validate_blog_signup( $_POST['signup_blog_url'], $_POST['signup_blog_title'] ); + + // If there are errors with blog details, set them for display + if ( !empty( $blog_details['errors']->errors['blogname'] ) ) + $bp->signup->errors['signup_blog_url'] = $blog_details['errors']->errors['blogname'][0]; + + if ( !empty( $blog_details['errors']->errors['blog_title'] ) ) + $bp->signup->errors['signup_blog_title'] = $blog_details['errors']->errors['blog_title'][0]; + } + } + + do_action( 'bp_signup_validate' ); + + // Add any errors to the action for the field in the template for display. + if ( !empty( $bp->signup->errors ) ) { + foreach ( (array) $bp->signup->errors as $fieldname => $error_message ) { + // addslashes() and stripslashes() to avoid create_function() + // syntax errors when the $error_message contains quotes + add_action( 'bp_' . $fieldname . '_errors', create_function( '', 'echo apply_filters(\'bp_members_signup_error_message\', "<div class=\"error\">" . stripslashes( \'' . addslashes( $error_message ) . '\' ) . "</div>" );' ) ); + } + } else { + $bp->signup->step = 'save-details'; + + // No errors! Let's register those deets. + $active_signup = !empty( $bp->site_options['registration'] ) ? $bp->site_options['registration'] : ''; + + if ( 'none' != $active_signup ) { + + // Let's compact any profile field info into usermeta + $profile_field_ids = explode( ',', $_POST['signup_profile_field_ids'] ); + + // Loop through the posted fields formatting any datebox values then add to usermeta + foreach ( (array) $profile_field_ids as $field_id ) { + if ( !isset( $_POST['field_' . $field_id] ) ) { + if ( isset( $_POST['field_' . $field_id . '_day'] ) ) + $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $_POST['field_' . $field_id . '_day'] . $_POST['field_' . $field_id . '_month'] . $_POST['field_' . $field_id . '_year'] ) ); + } + + if ( !empty( $_POST['field_' . $field_id] ) ) + $usermeta['field_' . $field_id] = $_POST['field_' . $field_id]; + } + + // Store the profile field ID's in usermeta + $usermeta['profile_field_ids'] = $_POST['signup_profile_field_ids']; + + // Hash and store the password + $usermeta['password'] = wp_hash_password( $_POST['signup_password'] ); + + // If the user decided to create a blog, save those details to usermeta + if ( 'blog' == $active_signup || 'all' == $active_signup ) + $usermeta['public'] = ( isset( $_POST['signup_blog_privacy'] ) && 'public' == $_POST['signup_blog_privacy'] ) ? true : false; + + $usermeta = apply_filters( 'bp_signup_usermeta', $usermeta ); + + // Finally, sign up the user and/or blog + if ( isset( $_POST['signup_with_blog'] ) && is_multisite() ) + $wp_user_id = bp_core_signup_blog( $blog_details['domain'], $blog_details['path'], $blog_details['blog_title'], $_POST['signup_username'], $_POST['signup_email'], $usermeta ); + else + $wp_user_id = bp_core_signup_user( $_POST['signup_username'], $_POST['signup_password'], $_POST['signup_email'], $usermeta ); + + if ( is_wp_error( $wp_user_id ) ) { + $bp->signup->step = 'request-details'; + bp_core_add_message( strip_tags( $wp_user_id->get_error_message() ), 'error' ); + } else { + $bp->signup->step = 'completed-confirmation'; + } + } + + do_action( 'bp_complete_signup' ); + } + + } + + do_action( 'bp_core_screen_signup' ); + bp_core_load_template( apply_filters( 'bp_core_template_register', 'registration/register' ) ); +} +add_action( 'bp_screens', 'bp_core_screen_signup' ); + +function bp_core_screen_activation() { + global $bp, $wpdb; + + if ( !bp_is_current_component( 'activate' ) ) + return false; + + // Check if an activation key has been passed + if ( isset( $_GET['key'] ) ) { + + // Activate the signup + $user = apply_filters( 'bp_core_activate_account', bp_core_activate_signup( $_GET['key'] ) ); + + // If there were errors, add a message and redirect + if ( !empty( $user->errors ) ) { + bp_core_add_message( $user->get_error_message(), 'error' ); + bp_core_redirect( trailingslashit( bp_get_root_domain() . '/' . $bp->pages->activate->slug ) ); + } + + // Check for an uploaded avatar and move that to the correct user folder + if ( is_multisite() ) + $hashed_key = wp_hash( $_GET['key'] ); + else + $hashed_key = wp_hash( $user ); + + // Check if the avatar folder exists. If it does, move rename it, move + // it and delete the signup avatar dir + if ( file_exists( bp_core_avatar_upload_path() . '/avatars/signups/' . $hashed_key ) ) + @rename( bp_core_avatar_upload_path() . '/avatars/signups/' . $hashed_key, bp_core_avatar_upload_path() . '/avatars/' . $user ); + + bp_core_add_message( __( 'Your account is now active!', 'buddypress' ) ); + + $bp->activation_complete = true; + } + + if ( '' != locate_template( array( 'registration/activate' ), false ) ) + bp_core_load_template( apply_filters( 'bp_core_template_activate', 'activate' ) ); + else + bp_core_load_template( apply_filters( 'bp_core_template_activate', 'registration/activate' ) ); +} +add_action( 'bp_screens', 'bp_core_screen_activation' ); + + +/******************************************************************************** + * Business Functions + * + * Business functions are where all the magic happens in BuddyPress. They will + * handle the actual saving or manipulation of information. Usually they will + * hand off to a database class for data access, then return + * true or false on success or failure. + */ + +/** + * Flush illegal names by getting and setting 'illegal_names' site option + */ +function bp_core_flush_illegal_names() { + $illegal_names = get_site_option( 'illegal_names' ); + update_site_option( 'illegal_names', $illegal_names ); +} + +/** + * Filter the illegal_names site option and make sure it includes a few + * specific BuddyPress and Multi-site slugs + * + * @param array|string $value Illegal names from field + * @param array|string $oldvalue The value as it is currently + * @return array Merged and unique array of illegal names + */ +function bp_core_get_illegal_names( $value = '', $oldvalue = '' ) { + + // Make sure $value is array + if ( empty( $value ) ) + $db_illegal_names = array(); + if ( is_array( $value ) ) + $db_illegal_names = $value; + elseif ( is_string( $value ) ) + $db_illegal_names = explode( ' ', $value ); + + // Add the core components' slugs to the banned list even if their components aren't active. + $bp_component_slugs = array( + 'groups', + 'members', + 'forums', + 'blogs', + 'activity', + 'profile', + 'friends', + 'search', + 'settings', + 'register', + 'activate' + ); + + // Core constants + $slug_constants = array( + 'BP_GROUPS_SLUG', + 'BP_MEMBERS_SLUG', + 'BP_FORUMS_SLUG', + 'BP_BLOGS_SLUG', + 'BP_ACTIVITY_SLUG', + 'BP_XPROFILE_SLUG', + 'BP_FRIENDS_SLUG', + 'BP_SEARCH_SLUG', + 'BP_SETTINGS_SLUG', + 'BP_REGISTER_SLUG', + 'BP_ACTIVATION_SLUG', + ); + foreach( $slug_constants as $constant ) + if ( defined( $constant ) ) + $bp_component_slugs[] = constant( $constant ); + + // Add our slugs to the array and allow them to be filtered + $filtered_illegal_names = apply_filters( 'bp_core_illegal_usernames', array_merge( array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator' ), $bp_component_slugs ) ); + + // Merge the arrays together + $merged_names = array_merge( (array)$filtered_illegal_names, (array)$db_illegal_names ); + + // Remove duplicates + $illegal_names = array_unique( (array)$merged_names ); + + return apply_filters( 'bp_core_illegal_names', $illegal_names ); +} +add_filter( 'pre_update_site_option_illegal_names', 'bp_core_get_illegal_names', 10, 2 ); + +/** + * Validate a user name and email address when creating a new user. + * + * @global object $wpdb DB Layer + * @param string $user_name Username to validate + * @param string $user_email Email address to validate + * @return array Results of user validation including errors, if any + */ +function bp_core_validate_user_signup( $user_name, $user_email ) { + global $wpdb; + + $errors = new WP_Error(); + $user_email = sanitize_email( $user_email ); + + // Apply any user_login filters added by BP or other plugins before validating + $user_name = apply_filters( 'pre_user_login', $user_name ); + + if ( empty( $user_name ) ) + $errors->add( 'user_name', __( 'Please enter a username', 'buddypress' ) ); + + $maybe = array(); + preg_match( "/[a-z0-9]+/", $user_name, $maybe ); + + // Make sure illegal names include BuddyPress slugs and values + bp_core_flush_illegal_names(); + + $illegal_names = get_site_option( 'illegal_names' ); + + if ( !validate_username( $user_name ) || in_array( $user_name, (array)$illegal_names ) || ( !empty( $maybe[0] ) && $user_name != $maybe[0] ) ) + $errors->add( 'user_name', __( 'Only lowercase letters and numbers allowed', 'buddypress' ) ); + + if( strlen( $user_name ) < 4 ) + $errors->add( 'user_name', __( 'Username must be at least 4 characters', 'buddypress' ) ); + + if ( strpos( ' ' . $user_name, '_' ) != false ) + $errors->add( 'user_name', __( 'Sorry, usernames may not contain the character "_"!', 'buddypress' ) ); + + // Is the user_name all numeric? + $match = array(); + preg_match( '/[0-9]*/', $user_name, $match ); + + if ( $match[0] == $user_name ) + $errors->add( 'user_name', __( 'Sorry, usernames must have letters too!', 'buddypress' ) ); + + if ( !is_email( $user_email ) ) + $errors->add( 'user_email', __( 'Please check your email address.', 'buddypress' ) ); + + if ( function_exists( 'is_email_address_unsafe' ) && is_email_address_unsafe( $user_email ) ) + $errors->add( 'user_email', __( 'Sorry, that email address is not allowed!', 'buddypress' ) ); + + $limited_email_domains = get_site_option( 'limited_email_domains', 'buddypress' ); + + if ( is_array( $limited_email_domains ) && empty( $limited_email_domains ) == false ) { + $emaildomain = substr( $user_email, 1 + strpos( $user_email, '@' ) ); + + if ( in_array( $emaildomain, (array)$limited_email_domains ) == false ) + $errors->add( 'user_email', __( 'Sorry, that email address is not allowed!', 'buddypress' ) ); + } + + // Check if the username has been used already. + if ( username_exists( $user_name ) ) + $errors->add( 'user_name', __( 'Sorry, that username already exists!', 'buddypress' ) ); + + // Check if the email address has been used already. + if ( email_exists( $user_email ) ) + $errors->add( 'user_email', __( 'Sorry, that email address is already used!', 'buddypress' ) ); + + $result = array( 'user_name' => $user_name, 'user_email' => $user_email, 'errors' => $errors ); + + // Apply WPMU legacy filter + $result = apply_filters( 'wpmu_validate_user_signup', $result ); + + return apply_filters( 'bp_core_validate_user_signup', $result ); +} + +function bp_core_validate_blog_signup( $blog_url, $blog_title ) { + if ( !is_multisite() || !function_exists( 'wpmu_validate_blog_signup' ) ) + return false; + + return apply_filters( 'bp_core_validate_blog_signup', wpmu_validate_blog_signup( $blog_url, $blog_title ) ); +} + +function bp_core_signup_user( $user_login, $user_password, $user_email, $usermeta ) { + global $bp, $wpdb; + + // Multisite installs have their own install procedure + if ( is_multisite() ) { + wpmu_signup_user( $user_login, $user_email, $usermeta ); + + // On multisite, the user id is not created until the user activates the account + // but we need to cast $user_id to pass to the filters + $user_id = false; + + } else { + $errors = new WP_Error(); + + $user_id = wp_insert_user( array( + 'user_login' => $user_login, + 'user_pass' => $user_password, + 'display_name' => sanitize_title( $user_login ), + 'user_email' => $user_email + ) ); + + if ( is_wp_error( $user_id ) || empty( $user_id ) ) { + $errors->add( 'registerfail', sprintf( __('<strong>ERROR</strong>: Couldn’t register you... please contact the <a href="mailto:%s">webmaster</a> !', 'buddypress' ), get_option( 'admin_email' ) ) ); + return $errors; + } + + // Update the user status to '2' which we will use as 'not activated' (0 = active, 1 = spam, 2 = not active) + $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->users SET user_status = 2 WHERE ID = %d", $user_id ) ); + + // Set any profile data + if ( bp_is_active( 'xprofile' ) ) { + if ( !empty( $usermeta['profile_field_ids'] ) ) { + $profile_field_ids = explode( ',', $usermeta['profile_field_ids'] ); + + foreach( (array)$profile_field_ids as $field_id ) { + if ( empty( $usermeta["field_{$field_id}"] ) ) + continue; + + $current_field = $usermeta["field_{$field_id}"]; + xprofile_set_field_data( $field_id, $user_id, $current_field ); + } + } + } + } + $bp->signup->username = $user_login; + + /*** + * Now generate an activation key and send an email to the user so they can activate their account + * and validate their email address. Multisite installs send their own email, so this is only for single blog installs. + * + * To disable sending activation emails you can user the filter 'bp_core_signup_send_activation_key' and return false. + */ + if ( apply_filters( 'bp_core_signup_send_activation_key', true ) ) { + if ( !is_multisite() ) { + $activation_key = wp_hash( $user_id ); + update_user_meta( $user_id, 'activation_key', $activation_key ); + bp_core_signup_send_validation_email( $user_id, $user_email, $activation_key ); + } + } + + do_action( 'bp_core_signup_user', $user_id, $user_login, $user_password, $user_email, $usermeta ); + + return $user_id; +} + +function bp_core_signup_blog( $blog_domain, $blog_path, $blog_title, $user_name, $user_email, $usermeta ) { + if ( !is_multisite() || !function_exists( 'wpmu_signup_blog' ) ) + return false; + + return apply_filters( 'bp_core_signup_blog', wpmu_signup_blog( $blog_domain, $blog_path, $blog_title, $user_name, $user_email, $usermeta ) ); +} + +function bp_core_activate_signup( $key ) { + global $bp, $wpdb; + + $user = false; + + // Multisite installs have their own activation routine + if ( is_multisite() ) { + $user = wpmu_activate_signup( $key ); + + // If there were errors, add a message and redirect + if ( !empty( $user->errors ) ) { + return $user; + } + + $user_id = $user['user_id']; + + // Set any profile data + if ( bp_is_active( 'xprofile' ) ) { + if ( !empty( $user['meta']['profile_field_ids'] ) ) { + $profile_field_ids = explode( ',', $user['meta']['profile_field_ids'] ); + + foreach( (array)$profile_field_ids as $field_id ) { + $current_field = isset( $user['meta']["field_{$field_id}"] ) ? $user['meta']["field_{$field_id}"] : false; + + if ( !empty( $current_field ) ) + xprofile_set_field_data( $field_id, $user_id, $current_field ); + } + } + } + + } else { + // Get the user_id based on the $key + $user_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'activation_key' AND meta_value = %s", $key ) ); + + if ( empty( $user_id ) ) + return new WP_Error( 'invalid_key', __( 'Invalid activation key', 'buddypress' ) ); + + // Change the user's status so they become active + if ( !$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->users SET user_status = 0 WHERE ID = %d", $user_id ) ) ) + return new WP_Error( 'invalid_key', __( 'Invalid activation key', 'buddypress' ) ); + + // Notify the site admin of a new user registration + wp_new_user_notification( $user_id ); + + // Remove the activation key meta + delete_user_meta( $user_id, 'activation_key' ); + } + + // Update the display_name + wp_update_user( array( 'ID' => $user_id, 'display_name' => bp_core_get_user_displayname( $user_id ) ) ); + + // Set the password on multisite installs + if ( is_multisite() && !empty( $user['meta']['password'] ) ) + $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->users SET user_pass = %s WHERE ID = %d", $user['meta']['password'], $user_id ) ); + + // Delete the total member cache + wp_cache_delete( 'bp_total_member_count', 'bp' ); + + do_action( 'bp_core_activated_user', $user_id, $key, $user ); + + return $user_id; +} + +function bp_core_new_user_activity( $user ) { + if ( empty( $user ) || !bp_is_active( 'activity' ) ) + return false; + + if ( is_array( $user ) ) + $user_id = $user['user_id']; + else + $user_id = $user; + + if ( empty( $user_id ) ) + return false; + + $userlink = bp_core_get_userlink( $user_id ); + + bp_activity_add( array( + 'user_id' => $user_id, + 'action' => apply_filters( 'bp_core_activity_registered_member_action', sprintf( __( '%s became a registered member', 'buddypress' ), $userlink ), $user_id ), + 'component' => 'xprofile', + 'type' => 'new_member' + ) ); +} +add_action( 'bp_core_activated_user', 'bp_core_new_user_activity' ); + +function bp_core_map_user_registration( $user_id ) { + // Only map data when the site admin is adding users, not on registration. + if ( !is_admin() ) + return false; + + // Add the user's fullname to Xprofile + if ( bp_is_active( 'xprofile' ) ) { + $firstname = get_user_meta( $user_id, 'first_name', true ); + $lastname = ' ' . get_user_meta( $user_id, 'last_name', true ); + $name = $firstname . $lastname; + + if ( empty( $name ) || ' ' == $name ) + $name = get_user_meta( $user_id, 'nickname', true ); + + xprofile_set_field_data( 1, $user_id, $name ); + } +} +add_action( 'user_register', 'bp_core_map_user_registration' ); + +function bp_core_signup_avatar_upload_dir() { + global $bp; + + if ( !$bp->signup->avatar_dir ) + return false; + + $path = bp_core_avatar_upload_path() . '/avatars/signups/' . $bp->signup->avatar_dir; + $newbdir = $path; + + if ( !file_exists( $path ) ) + @wp_mkdir_p( $path ); + + $newurl = bp_core_avatar_url() . '/avatars/signups/' . $bp->signup->avatar_dir; + $newburl = $newurl; + $newsubdir = '/avatars/signups/' . $bp->signup->avatar_dir; + + return apply_filters( 'bp_core_signup_avatar_upload_dir', array( 'path' => $path, 'url' => $newurl, 'subdir' => $newsubdir, 'basedir' => $newbdir, 'baseurl' => $newburl, 'error' => false ) ); +} + +function bp_core_signup_send_validation_email( $user_id, $user_email, $key ) { + $activate_url = bp_get_activation_page() ."?key=$key"; + $activate_url = esc_url( $activate_url ); + + $from_name = ( '' == get_option( 'blogname' ) ) ? __( 'BuddyPress', 'buddypress' ) : esc_html( get_option( 'blogname' ) ); + + $message = sprintf( __( "Thanks for registering! To complete the activation of your account please click the following link:\n\n%s\n\n", 'buddypress' ), $activate_url ); + $subject = '[' . $from_name . '] ' . __( 'Activate Your Account', 'buddypress' ); + + // Send the message + $to = apply_filters( 'bp_core_signup_send_validation_email_to', $user_email, $user_id ); + $subject = apply_filters( 'bp_core_signup_send_validation_email_subject', $subject, $user_id ); + $message = apply_filters( 'bp_core_signup_send_validation_email_message', $message, $user_id, $activate_url ); + + wp_mail( $to, $subject, $message ); + + do_action( 'bp_core_sent_user_validation_email', $subject, $message, $user_id, $user_email, $key ); +} + +// Stop user accounts logging in that have not been activated (user_status = 2) +function bp_core_signup_disable_inactive( $auth_obj, $username ) { + global $bp, $wpdb; + + if ( !$user_id = bp_core_get_userid( $username ) ) + return $auth_obj; + + $user_status = (int) $wpdb->get_var( $wpdb->prepare( "SELECT user_status FROM $wpdb->users WHERE ID = %d", $user_id ) ); + + if ( 2 == $user_status ) + return new WP_Error( 'bp_account_not_activated', __( '<strong>ERROR</strong>: Your account has not been activated. Check your email for the activation link.', 'buddypress' ) ); + else + return $auth_obj; +} +add_filter( 'authenticate', 'bp_core_signup_disable_inactive', 30, 2 ); + +// Kill the wp-signup.php if custom registration signup templates are present +function bp_core_wpsignup_redirect() { + $action = !empty( $_GET['action'] ) ? $_GET['action'] : ''; + + if ( is_admin() || is_network_admin() ) + return; + + // Not at the WP core signup page and action is not register + if ( false === strpos( $_SERVER['SCRIPT_NAME'], 'wp-signup.php' ) && ( 'register' != $action ) ) + return; + + // Redirect to sign-up page + if ( locate_template( array( 'registration/register.php' ), false ) || locate_template( array( 'register.php' ), false ) ) + bp_core_redirect( bp_get_signup_page() ); +} +add_action( 'bp_init', 'bp_core_wpsignup_redirect' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/bp-members-template.php b/wp-content/plugins/buddypress/bp-members/bp-members-template.php new file mode 100644 index 0000000..158927c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/bp-members-template.php @@ -0,0 +1,1200 @@ +<?php +/** + * BuddyPress Member Template Tags + * + * Functions that are safe to use inside your template files and themes + * + * @package BuddyPress + * @subpackage Members + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Output the members component slug + * + * @package BuddyPress + * @subpackage Members Template + * @since 1.5 + * + * @uses bp_get_members_slug() + */ +function bp_members_slug() { + echo bp_get_members_slug(); +} + /** + * Return the members component slug + * + * @package BuddyPress + * @subpackage Members Template + * @since 1.5 + */ + function bp_get_members_slug() { + global $bp; + return apply_filters( 'bp_get_members_slug', $bp->members->slug ); + } + +/** + * Output the members component root slug + * + * @package BuddyPress + * @subpackage Members Template + * @since 1.5 + * + * @uses bp_get_members_root_slug() + */ +function bp_members_root_slug() { + echo bp_get_members_root_slug(); +} + /** + * Return the members component root slug + * + * @package BuddyPress + * @subpackage Members Template + * @since 1.5 + */ + function bp_get_members_root_slug() { + global $bp; + return apply_filters( 'bp_get_members_root_slug', $bp->members->root_slug ); + } + +/** + * Output member directory permalink + * + * @package BuddyPress + * @subpackage Members Template + * @since 1.5 + * @uses bp_get_members_directory_permalink() + */ +function bp_members_directory_permalink() { + echo bp_get_members_directory_permalink(); +} + /** + * Return member directory permalink + * + * @package BuddyPress + * @subpackage Members Template + * @since 1.5 + * @uses apply_filters() + * @uses traisingslashit() + * @uses bp_get_root_domain() + * @uses bp_get_members_root_slug() + * @return string + */ + function bp_get_members_directory_permalink() { + return apply_filters( 'bp_get_members_directory_permalink', trailingslashit( bp_get_root_domain() . '/' . bp_get_members_root_slug() ) ); + } + +/** + * Output the sign-up slug + * + * @package BuddyPress + * @subpackage Members Template + * @since 1.5 + * + * @uses bp_get_signup_slug() + */ +function bp_signup_slug() { + echo bp_get_signup_slug(); +} + /** + * Return the sign-up slug + * + * @package BuddyPress + * @subpackage Members Template + * @since 1.5 + */ + function bp_get_signup_slug() { + global $bp; + + if ( !empty( $bp->pages->register->slug ) ) + $slug = $bp->pages->register->slug; + elseif ( defined( 'BP_REGISTER_SLUG' ) ) + $slug = BP_REGISTER_SLUG; + else + $slug = 'register'; + + return apply_filters( 'bp_get_signup_slug', $slug ); + } + +/** + * Output the activation slug + * + * @package BuddyPress + * @subpackage Members Template + * @since 1.5 + * + * @uses bp_get_activate_slug() + */ +function bp_activate_slug() { + echo bp_get_activate_slug(); +} + /** + * Return the activation slug + * + * @package BuddyPress + * @subpackage Members Template + * @since 1.5 + */ + function bp_get_activate_slug() { + global $bp; + + if ( !empty( $bp->pages->activate->slug ) ) + $slug = $bp->pages->activate->slug; + elseif ( defined( 'BP_ACTIVATION_SLUG' ) ) + $slug = BP_ACTIVATION_SLUG; + else + $slug = 'activate'; + + return apply_filters( 'bp_get_activate_slug', $slug ); + } + +/*** + * Members template loop that will allow you to loop all members or friends of a member + * if you pass a user_id. + */ + +class BP_Core_Members_Template { + var $current_member = -1; + var $member_count; + var $members; + var $member; + + var $in_the_loop; + + var $pag_page; + var $pag_num; + var $pag_links; + var $total_member_count; + + function bp_core_members_template( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value ) { + $this->__construct( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value ); + } + + function __construct( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value ) { + global $bp; + + $this->pag_page = !empty( $_REQUEST['upage'] ) ? intval( $_REQUEST['upage'] ) : (int)$page_number; + $this->pag_num = !empty( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : (int)$per_page; + $this->type = $type; + + if ( isset( $_REQUEST['letter'] ) && '' != $_REQUEST['letter'] ) + $this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page, $populate_extras, $exclude ); + else if ( false !== $include ) + $this->members = BP_Core_User::get_specific_users( $include, $this->pag_num, $this->pag_page, $populate_extras ); + else + $this->members = bp_core_get_users( array( 'type' => $this->type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'include' => $include, 'search_terms' => $search_terms, 'populate_extras' => $populate_extras, 'exclude' => $exclude, 'meta_key' => $meta_key, 'meta_value' => $meta_value ) ); + + if ( !$max || $max >= (int)$this->members['total'] ) + $this->total_member_count = (int)$this->members['total']; + else + $this->total_member_count = (int)$max; + + $this->members = $this->members['users']; + + if ( $max ) { + if ( $max >= count( $this->members ) ) { + $this->member_count = count( $this->members ); + } else { + $this->member_count = (int)$max; + } + } else { + $this->member_count = count( $this->members ); + } + + if ( (int)$this->total_member_count && (int)$this->pag_num ) { + $this->pag_links = paginate_links( array( + 'base' => add_query_arg( 'upage', '%#%' ), + 'format' => '', + 'total' => ceil( (int)$this->total_member_count / (int)$this->pag_num ), + 'current' => (int) $this->pag_page, + 'prev_text' => _x( '←', 'Member pagination previous text', 'buddypress' ), + 'next_text' => _x( '→', 'Member pagination next text', 'buddypress' ), + 'mid_size' => 1 + ) ); + } + } + + function has_members() { + if ( $this->member_count ) + return true; + + return false; + } + + function next_member() { + $this->current_member++; + $this->member = $this->members[$this->current_member]; + + return $this->member; + } + + function rewind_members() { + $this->current_member = -1; + if ( $this->member_count > 0 ) { + $this->member = $this->members[0]; + } + } + + function members() { + if ( $this->current_member + 1 < $this->member_count ) { + return true; + } elseif ( $this->current_member + 1 == $this->member_count ) { + do_action('member_loop_end'); + // Do some cleaning up after the loop + $this->rewind_members(); + } + + $this->in_the_loop = false; + return false; + } + + function the_member() { + global $member, $bp; + + $this->in_the_loop = true; + $this->member = $this->next_member(); + + if ( 0 == $this->current_member ) // loop has just started + do_action('member_loop_start'); + } +} + +function bp_rewind_members() { + global $members_template; + + return $members_template->rewind_members(); +} + +function bp_has_members( $args = '' ) { + global $bp, $members_template; + + /*** + * Set the defaults based on the current page. Any of these will be overridden + * if arguments are directly passed into the loop. Custom plugins should always + * pass their parameters directly to the loop. + */ + $type = 'active'; + $user_id = 0; + $page = 1; + $search_terms = null; + + // User filtering + if ( !empty( $bp->displayed_user->id ) ) + $user_id = $bp->displayed_user->id; + + // type: active ( default ) | random | newest | popular | online | alphabetical + $defaults = array( + 'type' => $type, + 'page' => $page, + 'per_page' => 20, + 'max' => false, + + 'include' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to only show these users + 'exclude' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to exclude these users + + 'user_id' => $user_id, // Pass a user_id to only show friends of this user + 'search_terms' => $search_terms, // Pass search_terms to filter users by their profile data + + 'meta_key' => false, // Only return users with this usermeta + 'meta_value' => false, // Only return users where the usermeta value matches. Requires meta_key + + 'populate_extras' => true // Fetch usermeta? Friend count, last active etc. + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + // Pass a filter if ?s= is set. + if ( is_null( $search_terms ) ) { + if ( !empty( $_REQUEST['s'] ) ) + $search_terms = $_REQUEST['s']; + else + $search_terms = false; + } + + // Set per_page to max if max is larger than per_page + if ( !empty( $max ) && ( $per_page > $max ) ) + $per_page = $max; + + // Make sure we return no members if we looking at friendship requests and there are none. + if ( empty( $include ) && bp_is_friends_component() && bp_is_current_action( 'requests' ) ) + return false; + + $members_template = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras, $exclude, $meta_key, $meta_value ); + return apply_filters( 'bp_has_members', $members_template->has_members(), $members_template ); +} + +function bp_the_member() { + global $members_template; + return $members_template->the_member(); +} + +function bp_members() { + global $members_template; + return $members_template->members(); +} + +function bp_members_pagination_count() { + echo bp_get_members_pagination_count(); +} + function bp_get_members_pagination_count() { + global $bp, $members_template; + + if ( empty( $members_template->type ) ) + $members_template->type = ''; + + $start_num = intval( ( $members_template->pag_page - 1 ) * $members_template->pag_num ) + 1; + $from_num = bp_core_number_format( $start_num ); + $to_num = bp_core_number_format( ( $start_num + ( $members_template->pag_num - 1 ) > $members_template->total_member_count ) ? $members_template->total_member_count : $start_num + ( $members_template->pag_num - 1 ) ); + $total = bp_core_number_format( $members_template->total_member_count ); + + if ( 'active' == $members_template->type ) + $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s active members)', 'buddypress' ), $from_num, $to_num, $total ); + else if ( 'popular' == $members_template->type ) + $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s members with friends)', 'buddypress' ), $from_num, $to_num, $total ); + else if ( 'online' == $members_template->type ) + $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s members online)', 'buddypress' ), $from_num, $to_num, $total ); + else + $pag = sprintf( __( 'Viewing member %1$s to %2$s (of %3$s members)', 'buddypress' ), $from_num, $to_num, $total ); + + return apply_filters( 'bp_members_pagination_count', $pag ); + } + +function bp_members_pagination_links() { + echo bp_get_members_pagination_links(); +} + function bp_get_members_pagination_links() { + global $members_template; + + return apply_filters( 'bp_get_members_pagination_links', $members_template->pag_links ); + } + +/** + * bp_member_user_id() + * + * Echo id from bp_get_member_user_id() + * + * @uses bp_get_member_user_id() + */ +function bp_member_user_id() { + echo bp_get_member_user_id(); +} + /** + * bp_get_member_user_id() + * + * Get the id of the user in a members loop + * + * @global object $members_template + * @return string Members id + */ + function bp_get_member_user_id() { + global $members_template; + + return apply_filters( 'bp_get_member_user_id', $members_template->member->id ); + } + +/** + * bp_member_user_nicename() + * + * Echo nicename from bp_get_member_user_nicename() + * + * @uses bp_get_member_user_nicename() + */ +function bp_member_user_nicename() { + echo bp_get_member_user_nicename(); +} + /** + * bp_get_member_user_nicename() + * + * Get the nicename of the user in a members loop + * + * @global object $members_template + * @return string Members nicename + */ + function bp_get_member_user_nicename() { + global $members_template; + return apply_filters( 'bp_get_member_user_nicename', $members_template->member->user_nicename ); + } + +/** + * bp_member_user_login() + * + * Echo login from bp_get_member_user_login() + * + * @uses bp_get_member_user_login() + */ +function bp_member_user_login() { + echo bp_get_member_user_login(); +} + /** + * bp_get_member_user_login() + * + * Get the login of the user in a members loop + * + * @global object $members_template + * @return string Members login + */ + function bp_get_member_user_login() { + global $members_template; + return apply_filters( 'bp_get_member_user_login', $members_template->member->user_login ); + } + +/** + * bp_member_user_email() + * + * Echo email address from bp_get_member_user_email() + * + * @uses bp_get_member_user_email() + */ +function bp_member_user_email() { + echo bp_get_member_user_email(); +} + /** + * bp_get_member_user_email() + * + * Get the email address of the user in a members loop + * + * @global object $members_template + * @return string Members email address + */ + function bp_get_member_user_email() { + global $members_template; + return apply_filters( 'bp_get_member_user_email', $members_template->member->user_email ); + } + +function bp_member_is_loggedin_user() { + global $bp, $members_template; + return apply_filters( 'bp_member_is_loggedin_user', $bp->loggedin_user->id == $members_template->member->id ? true : false ); +} + +function bp_member_avatar( $args = '' ) { + echo apply_filters( 'bp_member_avatar', bp_get_member_avatar( $args ) ); +} + function bp_get_member_avatar( $args = '' ) { + global $bp, $members_template; + + $defaults = array( + 'type' => 'thumb', + 'width' => false, + 'height' => false, + 'class' => 'avatar', + 'id' => false, + 'alt' => __( 'Profile picture of %s', 'buddypress' ) + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_member_avatar', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->id, 'type' => $type, 'alt' => $alt, 'css_id' => $id, 'class' => $class, 'width' => $width, 'height' => $height, 'email' => $members_template->member->user_email ) ) ); + } + +function bp_member_permalink() { + echo bp_get_member_permalink(); +} + function bp_get_member_permalink() { + global $members_template; + + return apply_filters( 'bp_get_member_permalink', bp_core_get_user_domain( $members_template->member->id, $members_template->member->user_nicename, $members_template->member->user_login ) ); + } + function bp_member_link() { echo bp_get_member_permalink(); } + function bp_get_member_link() { return bp_get_member_permalink(); } + +/** + * Echoes bp_get_member_name() + * + * @package BuddyPress + */ +function bp_member_name() { + echo apply_filters( 'bp_member_name', bp_get_member_name() ); +} + /** + * Used inside a bp_has_members() loop, this function returns a user's full name + * + * Full name is, by default, pulled from xprofile's Full Name field. When this field is + * empty, we try to get an alternative name from the WP users table, in the following order + * of preference: display_name, user_nicename, user_login. + * + * @package BuddyPress + * + * @uses apply_filters() Filter bp_get_the_member_name() to alter the function's output + * @return str The user's fullname for display + */ + function bp_get_member_name() { + global $members_template; + + // Generally, this only fires when xprofile is disabled + if ( empty( $members_template->member->fullname ) ) { + // Our order of preference for alternative fullnames + $name_stack = array( + 'display_name', + 'user_nicename', + 'user_login' + ); + + foreach ( $name_stack as $source ) { + if ( !empty( $members_template->member->{$source} ) ) { + // When a value is found, set it as fullname and be done + // with it + $members_template->member->fullname = $members_template->member->{$source}; + break; + } + } + } + + return apply_filters( 'bp_get_member_name', $members_template->member->fullname ); + } + add_filter( 'bp_get_member_name', 'wp_filter_kses' ); + add_filter( 'bp_get_member_name', 'stripslashes' ); + add_filter( 'bp_get_member_name', 'strip_tags' ); + +function bp_member_last_active() { + echo bp_get_member_last_active(); +} + function bp_get_member_last_active() { + global $members_template; + + if ( isset( $members_template->member->last_activity ) ) + $last_activity = bp_core_get_last_activity( $members_template->member->last_activity, __( 'active %s', 'buddypress' ) ); + else + $last_activity = __( 'Never active', 'buddypress' ); + + return apply_filters( 'bp_member_last_active', $last_activity ); + } + +function bp_member_latest_update( $args = '' ) { + echo bp_get_member_latest_update( $args ); +} + function bp_get_member_latest_update( $args = '' ) { + global $bp, $members_template; + + $defaults = array( + 'length' => 225, + 'view_link' => true + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + if ( !bp_is_active( 'activity' ) || empty( $members_template->member->latest_update ) || !$update = maybe_unserialize( $members_template->member->latest_update ) ) + return false; + + $update_content = apply_filters( 'bp_get_activity_latest_update_excerpt', sprintf( _x( '- "%s "', 'member latest update in member directory', 'buddypress' ), trim( strip_tags( bp_create_excerpt( $update['content'], $length ) ) ) ) ); + + // If $view_link is true and the text returned by bp_create_excerpt() is different from the original text (ie it's + // been truncated), add the "View" link. + if ( $view_link && ( $update_content != $update['content'] ) ) { + $view = __( 'View', 'buddypress' ); + + $update_content .= '<span class="activity-read-more"><a href="' . bp_activity_get_permalink( $update['id'] ) . '" rel="nofollow">' . $view . '</a></span>'; + } + + return apply_filters( 'bp_get_member_latest_update', $update_content ); + } + +function bp_member_profile_data( $args = '' ) { + echo bp_get_member_profile_data( $args ); +} + function bp_get_member_profile_data( $args = '' ) { + global $bp, $members_template; + + if ( !bp_is_active( 'xprofile' ) ) + return false; + + // Declare local variables + $data = false; + $user_id = 0; + + // Guess at default $user_id + if ( !empty( $members_template->member->id ) ) + $user_id = $members_template->member->id; + elseif ( !empty( $bp->displayed_user->id ) ) + $user_id = $bp->displayed_user->id; + + $defaults = array( + 'field' => false, // Field name + 'user_id' => $user_id + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // Populate the user if it hasn't been already. + if ( empty( $members_template->member->profile_data ) && method_exists( 'BP_XProfile_ProfileData', 'get_all_for_user' ) ) + $members_template->member->profile_data = BP_XProfile_ProfileData::get_all_for_user( $user_id ); + + // Get the field data if there is data to get + if ( !empty( $members_template->member->profile_data ) ) + $data = xprofile_format_profile_field( $members_template->member->profile_data[$field]['field_type'], $members_template->member->profile_data[$field]['field_data'] ); + + return apply_filters( 'bp_get_member_profile_data', $data ); + } + +function bp_member_registered() { + echo bp_get_member_registered(); +} + function bp_get_member_registered() { + global $members_template; + + $registered = esc_attr( bp_core_get_last_activity( $members_template->member->user_registered, __( 'registered %s', 'buddypress' ) ) ); + + return apply_filters( 'bp_member_last_active', $registered ); + } + +function bp_member_random_profile_data() { + global $members_template; + + if ( bp_is_active( 'xprofile' ) ) { ?> + <?php $random_data = xprofile_get_random_profile_data( $members_template->member->id, true ); ?> + <strong><?php echo wp_filter_kses( $random_data[0]->name ) ?></strong> + <?php echo wp_filter_kses( $random_data[0]->value ) ?> + <?php } +} + +function bp_member_hidden_fields() { + if ( isset( $_REQUEST['s'] ) ) + echo '<input type="hidden" id="search_terms" value="' . esc_attr( $_REQUEST['s'] ) . '" name="search_terms" />'; + + if ( isset( $_REQUEST['letter'] ) ) + echo '<input type="hidden" id="selected_letter" value="' . esc_attr( $_REQUEST['letter'] ) . '" name="selected_letter" />'; + + if ( isset( $_REQUEST['members_search'] ) ) + echo '<input type="hidden" id="search_terms" value="' . esc_attr( $_REQUEST['members_search'] ) . '" name="search_terms" />'; +} + +function bp_directory_members_search_form() { + global $bp; + + $default_search_value = bp_get_search_default_text( 'members' ); + $search_value = !empty( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : $default_search_value; ?> + + <form action="" method="get" id="search-members-form"> + <label><input type="text" name="s" id="members_search" value="<?php echo esc_attr( $search_value ) ?>" onfocus="if (this.value == '<?php echo $default_search_value ?>') {this.value = '';}" onblur="if (this.value == '') {this.value = '<?php echo $default_search_value ?>';}" /></label> + <input type="submit" id="members_search_submit" name="members_search_submit" value="<?php _e( 'Search', 'buddypress' ) ?>" /> + </form> + +<?php +} + +function bp_total_site_member_count() { + echo bp_get_total_site_member_count(); +} + function bp_get_total_site_member_count() { + return apply_filters( 'bp_get_total_site_member_count', bp_core_number_format( bp_core_get_total_member_count() ) ); + } + +/** Navigation and other misc template tags **/ + +/** + * Uses the $bp->bp_nav global to render out the navigation within a BuddyPress install. + * Each component adds to this navigation array within its own [component_name]setup_nav() function. + * + * This navigation array is the top level navigation, so it contains items such as: + * [Blog, Profile, Messages, Groups, Friends] ... + * + * The function will also analyze the current component the user is in, to determine whether + * or not to highlight a particular nav item. + * + * @package BuddyPress Core + * @todo Move to a back-compat file? + * @deprecated Does not seem to be called anywhere in the core + * @global object $bp Global BuddyPress settings object + */ +function bp_get_loggedin_user_nav() { + global $bp; + + // Loop through each navigation item + foreach( (array) $bp->bp_nav as $nav_item ) { + // If the current component matches the nav item id, then add a highlight CSS class. + if ( !bp_is_directory() && $bp->active_components[$bp->current_component] == $nav_item['css_id'] ) + $selected = ' class="current selected"'; + else + $selected = ''; + + /* If we are viewing another person (current_userid does not equal loggedin_user->id) + then check to see if the two users are friends. if they are, add a highlight CSS class + to the friends nav item if it exists. */ + if ( !bp_is_my_profile() && $bp->displayed_user->id ) { + $selected = ''; + + if ( bp_is_active( 'friends' ) ) { + if ( $nav_item['css_id'] == $bp->friends->id ) { + if ( friends_check_friendship( $bp->loggedin_user->id, $bp->displayed_user->id ) ) + $selected = ' class="current selected"'; + } + } + } + + // echo out the final list item + echo apply_filters_ref_array( 'bp_get_loggedin_user_nav_' . $nav_item['css_id'], array( '<li id="li-nav-' . $nav_item['css_id'] . '" ' . $selected . '><a id="my-' . $nav_item['css_id'] . '" href="' . $nav_item['link'] . '">' . $nav_item['name'] . '</a></li>', &$nav_item ) ); + } + + // Always add a log out list item to the end of the navigation + $logout_link = '<li><a id="wp-logout" href="' . wp_logout_url( bp_get_root_domain() ) . '">' . __( 'Log Out', 'buddypress' ) . '</a></li>'; + + echo apply_filters( 'bp_logout_nav_link', $logout_link ); +} + +/** + * Uses the $bp->bp_nav global to render out the user navigation when viewing another user other than + * yourself. + * + * @package BuddyPress Core + * @global object $bp Global BuddyPress settings object + */ +function bp_get_displayed_user_nav() { + global $bp; + + foreach ( (array)$bp->bp_nav as $user_nav_item ) { + if ( !$user_nav_item['show_for_displayed_user'] && !bp_is_my_profile() ) + continue; + + if ( $bp->current_component == $user_nav_item['slug'] ) + $selected = ' class="current selected"'; + else + $selected = ''; + + if ( $bp->loggedin_user->domain ) + $link = str_replace( $bp->loggedin_user->domain, $bp->displayed_user->domain, $user_nav_item['link'] ); + else + $link = $bp->displayed_user->domain . $user_nav_item['link']; + + echo apply_filters_ref_array( 'bp_get_displayed_user_nav_' . $user_nav_item['css_id'], array( '<li id="' . $user_nav_item['css_id'] . '-personal-li" ' . $selected . '><a id="user-' . $user_nav_item['css_id'] . '" href="' . $link . '">' . $user_nav_item['name'] . '</a></li>', &$user_nav_item ) ); + } +} + +/** Avatars *******************************************************************/ + +function bp_loggedin_user_avatar( $args = '' ) { + echo bp_get_loggedin_user_avatar( $args ); +} + function bp_get_loggedin_user_avatar( $args = '' ) { + global $bp; + + $defaults = array( + 'type' => 'thumb', + 'width' => false, + 'height' => false, + 'html' => true, + 'alt' => __( 'Profile picture of %s', 'buddypress' ) + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_loggedin_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->loggedin_user->id, 'type' => $type, 'width' => $width, 'height' => $height, 'html' => $html, 'alt' => $alt ) ) ); + } + +function bp_displayed_user_avatar( $args = '' ) { + echo bp_get_displayed_user_avatar( $args ); +} + function bp_get_displayed_user_avatar( $args = '' ) { + global $bp; + + $defaults = array( + 'type' => 'thumb', + 'width' => false, + 'height' => false, + 'html' => true, + 'alt' => __( 'Profile picture of %s', 'buddypress' ) + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_displayed_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->displayed_user->id, 'type' => $type, 'width' => $width, 'height' => $height, 'html' => $html, 'alt' => $alt ) ) ); + } + +function bp_displayed_user_email() { + echo bp_get_displayed_user_email(); +} + function bp_get_displayed_user_email() { + global $bp; + + // If displayed user exists, return email address + if ( isset( $bp->displayed_user->userdata->user_email ) ) + $retval = $bp->displayed_user->userdata->user_email; + else + $retval = ''; + + return apply_filters( 'bp_get_displayed_user_email', esc_attr( $retval ) ); + } + +function bp_last_activity( $user_id = 0 ) { + echo apply_filters( 'bp_last_activity', bp_get_last_activity( $user_id ) ); +} + function bp_get_last_activity( $user_id = 0 ) { + global $bp; + + if ( empty( $user_id ) ) + $user_id = $bp->displayed_user->id; + + $last_activity = bp_core_get_last_activity( bp_get_user_meta( $user_id, 'last_activity', true ), __('active %s', 'buddypress') ); + + return apply_filters( 'bp_get_last_activity', $last_activity ); + } + +function bp_user_firstname() { + echo bp_get_user_firstname(); +} + function bp_get_user_firstname( $name = false ) { + global $bp; + + // Try to get displayed user + if ( empty( $name ) ) + $name = $bp->displayed_user->fullname; + + // Fall back on logged in user + if ( empty( $name ) ) + $name = $bp->loggedin_user->fullname; + + $fullname = (array)explode( ' ', $name ); + + return apply_filters( 'bp_get_user_firstname', $fullname[0], $fullname ); + } + +function bp_loggedin_user_link() { + echo bp_get_loggedin_user_link(); +} + function bp_get_loggedin_user_link() { + return apply_filters( 'bp_get_loggedin_user_link', bp_loggedin_user_domain() ); + } + +function bp_displayed_user_link() { + echo bp_get_displayed_user_link(); +} + function bp_get_displayed_user_link() { + return apply_filters( 'bp_get_displayed_user_link', bp_displayed_user_domain() ); + } + function bp_user_link() { bp_displayed_user_domain(); } // Deprecated. + +function bp_displayed_user_id() { + global $bp; + return apply_filters( 'bp_displayed_user_id', !empty( $bp->displayed_user->id ) ? $bp->displayed_user->id : 0 ); +} + function bp_current_user_id() { return bp_displayed_user_id(); } + +function bp_loggedin_user_id() { + global $bp; + return apply_filters( 'bp_loggedin_user_id', !empty( $bp->loggedin_user->id ) ? $bp->loggedin_user->id : 0 ); +} + +function bp_displayed_user_domain() { + global $bp; + return apply_filters( 'bp_displayed_user_domain', isset( $bp->displayed_user->domain ) ? $bp->displayed_user->domain : '' ); +} + +function bp_loggedin_user_domain() { + global $bp; + return apply_filters( 'bp_loggedin_user_domain', isset( $bp->loggedin_user->domain ) ? $bp->loggedin_user->domain : '' ); +} + +function bp_displayed_user_fullname() { + echo bp_get_displayed_user_fullname(); +} + function bp_get_displayed_user_fullname() { + global $bp; + return apply_filters( 'bp_displayed_user_fullname', isset( $bp->displayed_user->fullname ) ? $bp->displayed_user->fullname : '' ); + } + function bp_user_fullname() { echo bp_get_displayed_user_fullname(); } + + +function bp_loggedin_user_fullname() { + echo bp_get_loggedin_user_fullname(); +} + function bp_get_loggedin_user_fullname() { + global $bp; + return apply_filters( 'bp_get_loggedin_user_fullname', isset( $bp->loggedin_user->fullname ) ? $bp->loggedin_user->fullname : '' ); + } + +function bp_displayed_user_username() { + echo bp_get_displayed_user_username(); +} + function bp_get_displayed_user_username() { + global $bp; + + if ( !empty( $bp->displayed_user->id ) ) { + $username = bp_core_get_username( $bp->displayed_user->id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ); + } else { + $username = ''; + } + + return apply_filters( 'bp_get_displayed_user_username', $username ); + } + +function bp_loggedin_user_username() { + echo bp_get_loggedin_user_username(); +} + function bp_get_loggedin_user_username() { + global $bp; + + if ( !empty( $bp->loggedin_user->id ) ) { + $username = bp_core_get_username( $bp->loggedin_user->id, $bp->loggedin_user->userdata->user_nicename, $bp->loggedin_user->userdata->user_login ); + } else { + $username = ''; + } + + return apply_filters( 'bp_get_loggedin_user_username', $username ); + } + +/** Signup Form ***************************************************************/ + +function bp_has_custom_signup_page() { + if ( locate_template( array( 'register.php' ), false ) || locate_template( array( '/registration/register.php' ), false ) ) + return true; + + return false; +} + +function bp_signup_page() { + echo bp_get_signup_page(); +} + function bp_get_signup_page() { + global $bp; + + if ( bp_has_custom_signup_page() ) { + $page = trailingslashit( bp_get_root_domain() . '/' . bp_get_signup_slug() ); + } else { + $page = bp_get_root_domain() . '/wp-signup.php'; + } + + return apply_filters( 'bp_get_signup_page', $page ); + } + +function bp_has_custom_activation_page() { + if ( locate_template( array( 'activate.php' ), false ) || locate_template( array( '/registration/activate.php' ), false ) ) + return true; + + return false; +} + +function bp_activation_page() { + echo bp_get_activation_page(); +} + function bp_get_activation_page() { + global $bp; + + if ( bp_has_custom_activation_page() ) + $page = trailingslashit( bp_get_root_domain() . '/' . $bp->pages->activate->slug ); + else + $page = trailingslashit( bp_get_root_domain() ) . 'wp-activate.php'; + + return apply_filters( 'bp_get_activation_page', $page ); + } + +function bp_signup_username_value() { + echo bp_get_signup_username_value(); +} + function bp_get_signup_username_value() { + $value = ''; + if ( isset( $_POST['signup_username'] ) ) + $value = $_POST['signup_username']; + + return apply_filters( 'bp_get_signup_username_value', $value ); + } + +function bp_signup_email_value() { + echo bp_get_signup_email_value(); +} + function bp_get_signup_email_value() { + $value = ''; + if ( isset( $_POST['signup_email'] ) ) + $value = $_POST['signup_email']; + + return apply_filters( 'bp_get_signup_email_value', $value ); + } + +function bp_signup_with_blog_value() { + echo bp_get_signup_with_blog_value(); +} + function bp_get_signup_with_blog_value() { + $value = ''; + if ( isset( $_POST['signup_with_blog'] ) ) + $value = $_POST['signup_with_blog']; + + return apply_filters( 'bp_get_signup_with_blog_value', $value ); + } + +function bp_signup_blog_url_value() { + echo bp_get_signup_blog_url_value(); +} + function bp_get_signup_blog_url_value() { + $value = ''; + if ( isset( $_POST['signup_blog_url'] ) ) + $value = $_POST['signup_blog_url']; + + return apply_filters( 'bp_get_signup_blog_url_value', $value ); + } + +function bp_signup_blog_title_value() { + echo bp_get_signup_blog_title_value(); +} + function bp_get_signup_blog_title_value() { + $value = ''; + if ( isset( $_POST['signup_blog_title'] ) ) + $value = $_POST['signup_blog_title']; + + return apply_filters( 'bp_get_signup_blog_title_value', $value ); + } + +function bp_signup_blog_privacy_value() { + echo bp_get_signup_blog_privacy_value(); +} + function bp_get_signup_blog_privacy_value() { + $value = ''; + if ( isset( $_POST['signup_blog_privacy'] ) ) + $value = $_POST['signup_blog_privacy']; + + return apply_filters( 'bp_get_signup_blog_privacy_value', $value ); + } + +function bp_signup_avatar_dir_value() { + echo bp_get_signup_avatar_dir_value(); +} + function bp_get_signup_avatar_dir_value() { + global $bp; + + // Check if signup_avatar_dir is passed + if ( !empty( $_POST['signup_avatar_dir'] ) ) + $signup_avatar_dir = $_POST['signup_avatar_dir']; + + // If not, check if global is set + elseif ( !empty( $bp->signup->avatar_dir ) ) + $signup_avatar_dir = $bp->signup->avatar_dir; + + // If not, set false + else + $signup_avatar_dir = false; + + return apply_filters( 'bp_get_signup_avatar_dir_value', $bp->signup->avatar_dir ); + } + +function bp_current_signup_step() { + echo bp_get_current_signup_step(); +} + function bp_get_current_signup_step() { + global $bp; + + return $bp->signup->step; + } + +function bp_signup_avatar( $args = '' ) { + echo bp_get_signup_avatar( $args ); +} + function bp_get_signup_avatar( $args = '' ) { + global $bp; + + $defaults = array( + 'size' => bp_core_avatar_full_width(), + 'class' => 'avatar', + 'alt' => __( 'Your Avatar', 'buddypress' ) + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + // Avatar DIR is found + if ( $signup_avatar_dir = bp_get_signup_avatar_dir_value() ) { + $gravatar_img = bp_core_fetch_avatar( array( + 'item_id' => $signup_avatar_dir, + 'object' => 'signup', + 'avatar_dir' => 'avatars/signups', + 'type' => 'full', + 'width' => $size, + 'height' => $size, + 'alt' => $alt, + 'class' => $class + ) ); + + // No avatar DIR was found + } else { + + // Set default gravatar type + if ( empty( $bp->grav_default->user ) ) + $default_grav = 'wavatar'; + else if ( 'mystery' == $bp->grav_default->user ) + $default_grav = BP_PLUGIN_URL . '/bp-core/images/mystery-man.jpg'; + else + $default_grav = $bp->grav_default->user; + + // Create + $gravatar_url = apply_filters( 'bp_gravatar_url', 'http://www.gravatar.com/avatar/' ); + $md5_lcase_email = md5( strtolower( bp_get_signup_email_value() ) ); + $gravatar_img = '<img src="' . $gravatar_url . $md5_lcase_email . '?d=' . $default_grav . '&s=' . $size . '" width="' . $size . '" height="' . $size . '" alt="' . $alt . '" class="' . $class . '" />'; + } + + return apply_filters( 'bp_get_signup_avatar', $gravatar_img, $args ); + } + +function bp_signup_allowed() { + echo bp_get_signup_allowed(); +} + function bp_get_signup_allowed() { + global $bp; + + $signup_allowed = false; + + if ( is_multisite() ) { + if ( in_array( $bp->site_options['registration'], array( 'all', 'user' ) ) ) + $signup_allowed = true; + + } else { + if ( get_option( 'users_can_register') ) + $signup_allowed = true; + } + + return apply_filters( 'bp_get_signup_allowed', $signup_allowed ); + } + +/** + * Hook member activity feed to <head> + * + * @since 1.5 + */ +function bp_members_activity_feed() { + if ( !bp_is_active( 'activity' ) || !bp_is_user() ) + return; ?> + + <link rel="alternate" type="application/rss+xml" title="<?php bloginfo( 'name' ) ?> | <?php bp_displayed_user_fullname() ?> | <?php _e( 'Activity RSS Feed', 'buddypress' ) ?>" href="<?php bp_member_activity_feed_link() ?>" /> + +<?php +} +add_action( 'bp_head', 'bp_members_activity_feed' ); + + +function bp_members_component_link( $component, $action = '', $query_args = '', $nonce = false ) { + echo bp_get_members_component_link( $component, $action, $query_args, $nonce ); +} + function bp_get_members_component_link( $component, $action = '', $query_args = '', $nonce = false ) { + global $bp; + + // Must be displayed user + if ( empty( $bp->displayed_user->id ) ) + return; + + // Append $action to $url if there is no $type + if ( !empty( $action ) ) + $url = $bp->displayed_user->domain . $bp->{$component}->slug . '/' . $action; + else + $url = $bp->displayed_user->domain . $bp->{$component}->slug; + + // Add a slash at the end of our user url + $url = trailingslashit( $url ); + + // Add possible query arg + if ( !empty( $query_args ) && is_array( $query_args ) ) + $url = add_query_arg( $query_args, $url ); + + // To nonce, or not to nonce... + if ( true === $nonce ) + $url = wp_nonce_url( $url ); + elseif ( is_string( $nonce ) ) + $url = wp_nonce_url( $url, $nonce ); + + // Return the url, if there is one + if ( !empty( $url ) ) + return $url; + } + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-actions.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-actions.php new file mode 100644 index 0000000..bdc3e1a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-actions.php @@ -0,0 +1,110 @@ +<?php +/******************************************************************************* + * Action functions are exactly the same as screen functions, however they do not + * have a template screen associated with them. Usually they will send the user + * back to the default screen after execution. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function messages_action_view_message() { + global $thread_id, $bp; + + if ( !bp_is_messages_component() || !bp_is_current_action( 'view' ) ) + return false; + + $thread_id = (int)bp_action_variable( 0 ); + + if ( !$thread_id || !messages_is_valid_thread( $thread_id ) || ( !messages_check_thread_access( $thread_id ) && !is_super_admin() ) ) + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() ); + + // Check if a new reply has been submitted + if ( isset( $_POST['send'] ) ) { + + // Check the nonce + check_admin_referer( 'messages_send_message', 'send_message_nonce' ); + + // Send the reply + if ( messages_new_message( array( 'thread_id' => $thread_id, 'subject' => $_POST['subject'], 'content' => $_POST['content'] ) ) ) + bp_core_add_message( __( 'Your reply was sent successfully', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was a problem sending your reply, please try again', 'buddypress' ), 'error' ); + + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/view/' . $thread_id . '/' ); + } + + // Mark message read + messages_mark_thread_read( $thread_id ); + + // Decrease the unread count in the nav before it's rendered + $name = sprintf( __( 'Messages <span>%s</span>', 'buddypress' ), bp_get_total_unread_messages_count() ); + + $bp->bp_nav[$bp->messages->slug]['name'] = $name; + + do_action( 'messages_action_view_message' ); + + bp_core_new_subnav_item( array( + 'name' => sprintf( __( 'From: %s', 'buddypress' ), BP_Messages_Thread::get_last_sender( $thread_id ) ), + 'slug' => 'view', + 'parent_url' => trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() ), + 'parent_slug' => bp_get_messages_slug(), + 'screen_function' => true, + 'position' => 40, + 'user_has_access' => bp_is_my_profile(), + 'link' => bp_displayed_user_domain() . bp_get_messages_slug() . '/view/' . (int) $thread_id + ) ); + + bp_core_load_template( apply_filters( 'messages_template_view_message', 'members/single/home' ) ); +} +add_action( 'bp_actions', 'messages_action_view_message' ); + +function messages_action_delete_message() { + global $thread_id; + + if ( !bp_is_messages_component() || bp_is_current_action( 'notices' ) || !bp_is_action_variable( 'delete', 0 ) ) + return false; + + $thread_id = bp_action_variable( 1 ); + + if ( !$thread_id || !is_numeric( $thread_id ) || !messages_check_thread_access( $thread_id ) ) { + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ); + } else { + if ( !check_admin_referer( 'messages_delete_thread' ) ) + return false; + + // Delete message + if ( !messages_delete_thread( $thread_id ) ) { + bp_core_add_message( __('There was an error deleting that message.', 'buddypress'), 'error' ); + } else { + bp_core_add_message( __('Message deleted.', 'buddypress') ); + } + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ); + } +} +add_action( 'bp_actions', 'messages_action_delete_message' ); + +function messages_action_bulk_delete() { + global $thread_ids; + + if ( !bp_is_messages_component() || !bp_is_action_variable( 'bulk-delete', 0 ) ) + return false; + + $thread_ids = $_POST['thread_ids']; + + if ( !$thread_ids || !messages_check_thread_access( $thread_ids ) ) { + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ); + } else { + if ( !check_admin_referer( 'messages_delete_thread' ) ) + return false; + + if ( !messages_delete_thread( $thread_ids ) ) + bp_core_add_message( __('There was an error deleting messages.', 'buddypress'), 'error' ); + else + bp_core_add_message( __('Messages deleted.', 'buddypress') ); + + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ); + } +} +add_action( 'bp_actions', 'messages_action_bulk_delete' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-cache.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-cache.php new file mode 100644 index 0000000..77c8114 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-cache.php @@ -0,0 +1,20 @@ +<?php +/******************************************************************************* + * Caching functions handle the clearing of cached objects and pages on specific + * actions throughout BuddyPress. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +// List actions to clear super cached pages on, if super cache is installed +add_action( 'messages_delete_thread', 'bp_core_clear_cache' ); +add_action( 'messages_send_notice', 'bp_core_clear_cache' ); +add_action( 'messages_message_sent', 'bp_core_clear_cache' ); + +// Don't cache message inbox/sentbox/compose as it's too problematic +add_action( 'messages_screen_compose', 'bp_core_clear_cache' ); +add_action( 'messages_screen_sentbox', 'bp_core_clear_cache' ); +add_action( 'messages_screen_inbox', 'bp_core_clear_cache' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-classes.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-classes.php new file mode 100644 index 0000000..9f9c77a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-classes.php @@ -0,0 +1,482 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +Class BP_Messages_Thread { + var $thread_id; + var $messages; + var $recipients; + var $sender_ids; + + var $unread_count; + + function bp_messages_thread ( $thread_id = false, $order = 'ASC' ) { + $this->__construct( $thread_id, $order); + } + + function __construct( $thread_id = false, $order = 'ASC' ) { + if ( $thread_id ) + $this->populate( $thread_id, $order ); + } + + function populate( $thread_id, $order ) { + global $wpdb, $bp; + + if( 'ASC' != $order && 'DESC' != $order ) + $order= 'ASC'; + + $this->messages_order = $order; + $this->thread_id = $thread_id; + + if ( !$this->messages = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->messages->table_name_messages} WHERE thread_id = %d ORDER BY date_sent " . $order, $this->thread_id ) ) ) + return false; + + foreach ( (array)$this->messages as $key => $message ) + $this->sender_ids[$message->sender_id] = $message->sender_id; + + // Fetch the recipients + $this->recipients = $this->get_recipients(); + + // Get the unread count for the logged in user + if ( isset( $this->recipients[$bp->loggedin_user->id] ) ) + $this->unread_count = $this->recipients[$bp->loggedin_user->id]->unread_count; + } + + function mark_read() { + BP_Messages_Thread::mark_as_read( $this->thread_id ); + } + + function mark_unread() { + BP_Messages_Thread::mark_as_unread( $this->thread_id ); + } + + function get_recipients() { + global $wpdb, $bp; + + $results = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d", $this->thread_id ) ); + + foreach ( (array)$results as $recipient ) + $recipients[$recipient->user_id] = $recipient; + + return $recipients; + } + + /** Static Functions **/ + + function delete( $thread_id ) { + global $wpdb, $bp; + + $delete_for_user = $wpdb->query( $wpdb->prepare( "UPDATE {$bp->messages->table_name_recipients} SET is_deleted = 1 WHERE thread_id = %d AND user_id = %d", $thread_id, $bp->loggedin_user->id ) ); + + // Check to see if any more recipients remain for this message + // if not, then delete the message from the database. + $recipients = $wpdb->get_results( $wpdb->prepare( "SELECT id FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d AND is_deleted = 0", $thread_id ) ); + + if ( empty( $recipients ) ) { + // Delete all the messages + $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->messages->table_name_messages} WHERE thread_id = %d", $thread_id ) ); + + // Delete all the recipients + $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d", $thread_id ) ); + } + + return true; + } + + function get_current_threads_for_user( $user_id, $box = 'inbox', $type = 'all', $limit = null, $page = null ) { + global $wpdb, $bp; + + $pag_sql = $type_sql = ''; + if ( $limit && $page ) + $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); + + if ( $type == 'unread' ) + $type_sql = $wpdb->prepare( " AND r.unread_count != 0 " ); + elseif ( $type == 'read' ) + $type_sql = $wpdb->prepare( " AND r.unread_count = 0 " ); + + if ( 'sentbox' == $box ) { + $thread_ids = $wpdb->get_results( $wpdb->prepare( "SELECT m.thread_id, MAX(m.date_sent) AS date_sent FROM {$bp->messages->table_name_recipients} r, {$bp->messages->table_name_messages} m WHERE m.thread_id = r.thread_id AND m.sender_id = r.user_id AND m.sender_id = %d AND r.is_deleted = 0 GROUP BY m.thread_id ORDER BY date_sent DESC {$pag_sql}", $user_id ) ); + $total_threads = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT( DISTINCT m.thread_id ) FROM {$bp->messages->table_name_recipients} r, {$bp->messages->table_name_messages} m WHERE m.thread_id = r.thread_id AND m.sender_id = r.user_id AND m.sender_id = %d AND r.is_deleted = 0 ", $user_id ) ); + } else { + $thread_ids = $wpdb->get_results( $wpdb->prepare( "SELECT m.thread_id, MAX(m.date_sent) AS date_sent FROM {$bp->messages->table_name_recipients} r, {$bp->messages->table_name_messages} m WHERE m.thread_id = r.thread_id AND r.is_deleted = 0 AND r.user_id = %d AND r.sender_only = 0 {$type_sql} GROUP BY m.thread_id ORDER BY date_sent DESC {$pag_sql}", $user_id ) ); + $total_threads = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT( DISTINCT m.thread_id ) FROM {$bp->messages->table_name_recipients} r, {$bp->messages->table_name_messages} m WHERE m.thread_id = r.thread_id AND r.is_deleted = 0 AND r.user_id = %d AND r.sender_only = 0 {$type_sql}", $user_id ) ); + } + + if ( empty( $thread_ids ) ) + return false; + + // Sort threads by date_sent + foreach( (array)$thread_ids as $thread ) + $sorted_threads[$thread->thread_id] = strtotime( $thread->date_sent ); + + arsort( $sorted_threads ); + + $threads = false; + foreach ( (array)$sorted_threads as $thread_id => $date_sent ) + $threads[] = new BP_Messages_Thread( $thread_id ); + + return array( 'threads' => &$threads, 'total' => (int)$total_threads ); + } + + function mark_as_read( $thread_id ) { + global $wpdb, $bp; + + $sql = $wpdb->prepare( "UPDATE {$bp->messages->table_name_recipients} SET unread_count = 0 WHERE user_id = %d AND thread_id = %d", $bp->loggedin_user->id, $thread_id ); + $wpdb->query($sql); + } + + function mark_as_unread( $thread_id ) { + global $wpdb, $bp; + + $sql = $wpdb->prepare( "UPDATE {$bp->messages->table_name_recipients} SET unread_count = 1 WHERE user_id = %d AND thread_id = %d", $bp->loggedin_user->id, $thread_id ); + $wpdb->query($sql); + } + + function get_total_threads_for_user( $user_id, $box = 'inbox', $type = 'all' ) { + global $wpdb, $bp; + + $exclude_sender = ''; + if ( $box != 'sentbox' ) + $exclude_sender = ' AND sender_only != 1'; + + if ( $type == 'unread' ) + $type_sql = $wpdb->prepare( " AND unread_count != 0 " ); + else if ( $type == 'read' ) + $type_sql = $wpdb->prepare( " AND unread_count = 0 " ); + + return (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(thread_id) FROM {$bp->messages->table_name_recipients} WHERE user_id = %d AND is_deleted = 0$exclude_sender $type_sql", $user_id ) ); + } + + function user_is_sender( $thread_id ) { + global $wpdb, $bp; + + $sender_ids = $wpdb->get_col( $wpdb->prepare( "SELECT sender_id FROM {$bp->messages->table_name_messages} WHERE thread_id = %d", $thread_id ) ); + + if ( !$sender_ids ) + return false; + + return in_array( $bp->loggedin_user->id, $sender_ids ); + } + + function get_last_sender( $thread_id ) { + global $wpdb, $bp; + + if ( !$sender_id = $wpdb->get_var( $wpdb->prepare( "SELECT sender_id FROM {$bp->messages->table_name_messages} WHERE thread_id = %d GROUP BY sender_id ORDER BY date_sent LIMIT 1", $thread_id ) ) ) + return false; + + return bp_core_get_userlink( $sender_id, true ); + } + + function get_inbox_count( $user_id = 0 ) { + global $wpdb, $bp; + + if ( empty( $user_id ) ) + $user_id = $bp->loggedin_user->id; + + $sql = $wpdb->prepare( "SELECT SUM(unread_count) FROM {$bp->messages->table_name_recipients} WHERE user_id = %d AND is_deleted = 0 AND sender_only = 0", $user_id ); + $unread_count = $wpdb->get_var( $sql ); + + if ( empty( $unread_count ) || is_wp_error( $unread_count ) ) + return 0; + + return (int) $unread_count; + } + + function check_access( $thread_id, $user_id = 0 ) { + global $wpdb, $bp; + + if ( empty( $user_id ) ) + $user_id = $bp->loggedin_user->id; + + return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d AND user_id = %d", $thread_id, $user_id ) ); + } + + function is_valid( $thread_id ) { + global $wpdb, $bp; + + return $wpdb->get_var( $wpdb->prepare( "SELECT thread_id FROM {$bp->messages->table_name_messages} WHERE thread_id = %d LIMIT 1", $thread_id ) ); + } + + function get_recipient_links($recipients) { + if ( count($recipients) >= 5 ) + return count( $recipients ) . __(' Recipients', 'buddypress'); + + foreach ( (array)$recipients as $recipient ) + $recipient_links[] = bp_core_get_userlink( $recipient->user_id ); + + return implode( ', ', (array) $recipient_links ); + } + + // Update Functions + + function update_tables() { + global $wpdb, $bp; + + $bp_prefix = bp_core_get_table_prefix(); + $errors = false; + $threads = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp_prefix}bp_messages_threads" ) ); + + // Nothing to update, just return true to remove the table + if ( empty( $threads ) ) + return true; + + foreach( (array)$threads as $thread ) { + $message_ids = maybe_unserialize( $thread->message_ids ); + + if ( !empty( $message_ids ) ) { + $message_ids = implode( ',', $message_ids ); + + // Add the thread_id to the messages table + if ( !$wpdb->query( $wpdb->prepare( "UPDATE {$bp->messages->table_name_messages} SET thread_id = %d WHERE id IN ({$message_ids})", $thread->id ) ) ) + $errors = true; + } + } + + if ( $errors ) + return false; + + return true; + } +} + +Class BP_Messages_Message { + var $id; + var $thread_id; + var $sender_id; + var $subject; + var $message; + var $date_sent; + + var $recipients = false; + + function bp_messages_message( $id = null ) { + $this->__construct( $id ); + } + + function __construct( $id = null ) { + global $bp; + + $this->date_sent = bp_core_current_time(); + $this->sender_id = $bp->loggedin_user->id; + + if ( !empty( $id ) ) + $this->populate( $id ); + } + + function populate( $id ) { + global $wpdb, $bp; + + if ( $message = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->messages->table_name_messages} WHERE id = %d", $id ) ) ) { + $this->id = $message->id; + $this->thread_id = $message->thread_id; + $this->sender_id = $message->sender_id; + $this->subject = $message->subject; + $this->message = $message->message; + $this->date_sent = $message->date_sent; + } + } + + function send() { + global $wpdb, $bp; + + $this->sender_id = apply_filters( 'messages_message_sender_id_before_save', $this->sender_id, $this->id ); + $this->thread_id = apply_filters( 'messages_message_thread_id_before_save', $this->thread_id, $this->id ); + $this->subject = apply_filters( 'messages_message_subject_before_save', $this->subject, $this->id ); + $this->message = apply_filters( 'messages_message_content_before_save', $this->message, $this->id ); + $this->date_sent = apply_filters( 'messages_message_date_sent_before_save', $this->date_sent, $this->id ); + + do_action_ref_array( 'messages_message_before_save', array( &$this ) ); + + // Make sure we have at least one recipient before sending. + if ( empty( $this->recipients ) ) + return false; + + $new_thread = false; + + // If we have no thread_id then this is the first message of a new thread. + if ( empty( $this->thread_id ) ) { + $this->thread_id = (int)$wpdb->get_var( $wpdb->prepare( "SELECT MAX(thread_id) FROM {$bp->messages->table_name_messages}" ) ) + 1; + $new_thread = true; + } + + // First insert the message into the messages table + if ( !$wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->messages->table_name_messages} ( thread_id, sender_id, subject, message, date_sent ) VALUES ( %d, %d, %s, %s, %s )", $this->thread_id, $this->sender_id, $this->subject, $this->message, $this->date_sent ) ) ) + return false; + + $recipient_ids = array(); + + if ( $new_thread ) { + // Add an recipient entry for all recipients + foreach ( (array)$this->recipients as $recipient ) { + $wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->messages->table_name_recipients} ( user_id, thread_id, unread_count ) VALUES ( %d, %d, 1 )", $recipient->user_id, $this->thread_id ) ); + $recipient_ids[] = $recipient->user_id; + } + + // Add a sender recipient entry if the sender is not in the list of recipients + if ( !in_array( $this->sender_id, $recipient_ids ) ) + $wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->messages->table_name_recipients} ( user_id, thread_id, sender_only ) VALUES ( %d, %d, 1 )", $this->sender_id, $this->thread_id ) ); + } else { + // Update the unread count for all recipients + $wpdb->query( $wpdb->prepare( "UPDATE {$bp->messages->table_name_recipients} SET unread_count = unread_count + 1, sender_only = 0, is_deleted = 0 WHERE thread_id = %d AND user_id != %d", $this->thread_id, $this->sender_id ) ); + } + + $this->id = $wpdb->insert_id; + messages_remove_callback_values(); + + do_action_ref_array( 'messages_message_after_save', array( &$this ) ); + + return $this->id; + } + + function get_recipients() { + global $bp, $wpdb; + + return $wpdb->get_results( $wpdb->prepare( "SELECT user_id FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d", $this->thread_id ) ); + } + + // Static Functions + + function get_recipient_ids( $recipient_usernames ) { + if ( !$recipient_usernames ) + return false; + + if ( is_array( $recipient_usernames ) ) { + for ( $i = 0, $count = count( $recipient_usernames ); $i < $count; ++$i ) { + if ( $rid = bp_core_get_userid( trim($recipient_usernames[$i]) ) ) + $recipient_ids[] = $rid; + } + } + + return $recipient_ids; + } + + function get_last_sent_for_user( $thread_id ) { + global $wpdb, $bp; + + return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->messages->table_name_messages} WHERE sender_id = %d AND thread_id = %d ORDER BY date_sent DESC LIMIT 1", $bp->loggedin_user->id, $thread_id ) ); + } + + function is_user_sender( $user_id, $message_id ) { + global $wpdb, $bp; + return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->messages->table_name_messages} WHERE sender_id = %d AND id = %d", $user_id, $message_id ) ); + } + + function get_message_sender( $message_id ) { + global $wpdb, $bp; + return $wpdb->get_var( $wpdb->prepare( "SELECT sender_id FROM {$bp->messages->table_name_messages} WHERE id = %d", $message_id ) ); + } +} + +Class BP_Messages_Notice { + var $id = null; + var $subject; + var $message; + var $date_sent; + var $is_active; + + function bp_messages_notice( $id = null ) { + $this->__construct($id); + } + + function __construct( $id = null ) { + if ( $id ) { + $this->id = $id; + $this->populate($id); + } + } + + function populate() { + global $wpdb, $bp; + + $notice = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->messages->table_name_notices} WHERE id = %d", $this->id ) ); + + if ( $notice ) { + $this->subject = $notice->subject; + $this->message = $notice->message; + $this->date_sent = $notice->date_sent; + $this->is_active = $notice->is_active; + } + } + + function save() { + global $wpdb, $bp; + + $this->subject = apply_filters( 'messages_notice_subject_before_save', $this->subject, $this->id ); + $this->message = apply_filters( 'messages_notice_message_before_save', $this->message, $this->id ); + + do_action_ref_array( 'messages_notice_before_save', array( &$this ) ); + + if ( empty( $this->id ) ) + $sql = $wpdb->prepare( "INSERT INTO {$bp->messages->table_name_notices} (subject, message, date_sent, is_active) VALUES (%s, %s, %s, %d)", $this->subject, $this->message, $this->date_sent, $this->is_active ); + else + $sql = $wpdb->prepare( "UPDATE {$bp->messages->table_name_notices} SET subject = %s, message = %s, is_active = %d WHERE id = %d", $this->subject, $this->message, $this->is_active, $this->id ); + + if ( !$wpdb->query( $sql ) ) + return false; + + if ( !$id = $this->id ) + $id = $wpdb->insert_id; + + // Now deactivate all notices apart from the new one. + $wpdb->query( $wpdb->prepare( "UPDATE {$bp->messages->table_name_notices} SET is_active = 0 WHERE id != %d", $id ) ); + + bp_update_user_meta( $bp->loggedin_user->id, 'last_activity', bp_core_current_time() ); + + do_action_ref_array( 'messages_notice_after_save', array( &$this ) ); + + return true; + } + + function activate() { + $this->is_active = 1; + if ( !$this->save() ) + return false; + + return true; + } + + function deactivate() { + $this->is_active = 0; + if ( !$this->save() ) + return false; + + return true; + } + + function delete() { + global $wpdb, $bp; + + $sql = $wpdb->prepare( "DELETE FROM {$bp->messages->table_name_notices} WHERE id = %d", $this->id ); + + if ( !$wpdb->query( $sql ) ) + return false; + + return true; + } + + // Static Functions + + function get_notices() { + global $wpdb, $bp; + + $notices = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$bp->messages->table_name_notices} ORDER BY date_sent DESC" ) ); + return $notices; + } + + function get_total_notice_count() { + global $wpdb, $bp; + + $notice_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM " . $bp->messages->table_name_notices ) ); + + return $notice_count; + } + + function get_active() { + global $wpdb, $bp; + + $notice_id = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->messages->table_name_notices} WHERE is_active = 1") ); + return new BP_Messages_Notice( $notice_id ); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-cssjs.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-cssjs.php new file mode 100644 index 0000000..59b8de2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-cssjs.php @@ -0,0 +1,56 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function messages_add_autocomplete_js() { + global $bp; + + // Include the autocomplete JS for composing a message. + if ( bp_is_messages_component() && bp_is_current_action( 'compose' ) ) { + add_action( 'wp_head', 'messages_autocomplete_init_jsblock' ); + + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) { + wp_enqueue_script( 'bp-jquery-autocomplete', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.autocomplete.dev.js', array( 'jquery' ), '20110723' ); + wp_enqueue_script( 'bp-jquery-autocomplete-fb', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.autocompletefb.dev.js', array(), '20110723' ); + wp_enqueue_script( 'bp-jquery-bgiframe', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.bgiframe.dev.js', array(), '20110723' ); + wp_enqueue_script( 'bp-jquery-dimensions', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.dimensions.dev.js', array(), '20110723' ); + + } else { + wp_enqueue_script( 'bp-jquery-autocomplete', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.autocomplete.js', array( 'jquery' ), '20110723' ); + wp_enqueue_script( 'bp-jquery-autocomplete-fb', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.autocompletefb.js', array(), '20110723' ); + wp_enqueue_script( 'bp-jquery-bgiframe', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.bgiframe.js', array(), '20110723' ); + wp_enqueue_script( 'bp-jquery-dimensions', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.dimensions.js', array(), '20110723' ); + } + } +} +add_action( 'bp_actions', 'messages_add_autocomplete_js' ); + +function messages_add_autocomplete_css() { + global $bp; + + if ( bp_is_messages_component() && bp_is_current_action( 'compose' ) ) { + if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) + wp_enqueue_style( 'bp-messages-autocomplete', BP_PLUGIN_URL . '/bp-messages/css/autocomplete/jquery.autocompletefb.dev.css', array(), '20110723' ); + else + wp_enqueue_style( 'bp-messages-autocomplete', BP_PLUGIN_URL . '/bp-messages/css/autocomplete/jquery.autocompletefb.css', array(), '20110723' ); + + wp_print_styles(); + } +} +add_action( 'wp_head', 'messages_add_autocomplete_css' ); + +function messages_autocomplete_init_jsblock() { +?> + <script type="text/javascript"> + jQuery(document).ready(function() { + var acfb = + jQuery("ul.first").autoCompletefb({urlLookup:'<?php echo site_url( 'wp-load.php' ) ?>'}); + + jQuery('#send_message_form').submit( function() { + var users = document.getElementById('send-to-usernames').className; + document.getElementById('send-to-usernames').value = String(users); + }); + }); + </script> +<?php +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-filters.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-filters.php new file mode 100644 index 0000000..9ee113d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-filters.php @@ -0,0 +1,63 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/* Apply WordPress defined filters */ +add_filter( 'bp_get_message_notice_subject', 'wp_filter_kses', 1 ); +add_filter( 'bp_get_message_notice_text', 'wp_filter_kses', 1 ); +add_filter( 'bp_get_message_thread_subject', 'wp_filter_kses', 1 ); +add_filter( 'bp_get_message_thread_excerpt', 'wp_filter_kses', 1 ); +add_filter( 'bp_get_messages_subject_value', 'wp_filter_kses', 1 ); +add_filter( 'bp_get_messages_content_value', 'wp_filter_kses', 1 ); +add_filter( 'bp_get_the_thread_message_content', 'wp_filter_kses', 1 ); + +add_filter( 'messages_message_content_before_save', 'wp_filter_kses', 1 ); +add_filter( 'messages_message_subject_before_save', 'wp_filter_kses', 1 ); +add_filter( 'messages_notice_message_before_save', 'wp_filter_kses', 1 ); +add_filter( 'messages_notice_subject_before_save', 'wp_filter_kses', 1 ); + +add_filter( 'bp_get_the_thread_message_content', 'wp_filter_kses', 1 ); +add_filter( 'bp_get_the_thread_subject', 'wp_filter_kses', 1 ); + +add_filter( 'messages_message_content_before_save', 'force_balance_tags' ); +add_filter( 'messages_message_subject_before_save', 'force_balance_tags' ); +add_filter( 'messages_notice_message_before_save', 'force_balance_tags' ); +add_filter( 'messages_notice_subject_before_save', 'force_balance_tags' ); + +add_filter( 'bp_get_message_notice_subject', 'wptexturize' ); +add_filter( 'bp_get_message_notice_text', 'wptexturize' ); +add_filter( 'bp_get_message_thread_subject', 'wptexturize' ); +add_filter( 'bp_get_message_thread_excerpt', 'wptexturize' ); +add_filter( 'bp_get_the_thread_message_content', 'wptexturize' ); + +add_filter( 'bp_get_message_notice_subject', 'convert_smilies', 2 ); +add_filter( 'bp_get_message_notice_text', 'convert_smilies', 2 ); +add_filter( 'bp_get_message_thread_subject', 'convert_smilies', 2 ); +add_filter( 'bp_get_message_thread_excerpt', 'convert_smilies', 2 ); +add_filter( 'bp_get_the_thread_message_content', 'convert_smilies', 2 ); + +add_filter( 'bp_get_message_notice_subject', 'convert_chars' ); +add_filter( 'bp_get_message_notice_text', 'convert_chars' ); +add_filter( 'bp_get_message_thread_subject', 'convert_chars' ); +add_filter( 'bp_get_message_thread_excerpt', 'convert_chars' ); +add_filter( 'bp_get_the_thread_message_content', 'convert_chars' ); + +add_filter( 'bp_get_message_notice_text', 'make_clickable', 9 ); +add_filter( 'bp_get_message_thread_excerpt', 'make_clickable', 9 ); +add_filter( 'bp_get_the_thread_message_content', 'make_clickable', 9 ); + +add_filter( 'bp_get_message_notice_text', 'wpautop' ); +add_filter( 'bp_get_the_thread_message_content', 'wpautop' ); + +add_filter( 'bp_get_message_notice_subject', 'stripslashes_deep' ); +add_filter( 'bp_get_message_notice_text', 'stripslashes_deep' ); +add_filter( 'bp_get_message_thread_subject', 'stripslashes_deep' ); +add_filter( 'bp_get_message_thread_excerpt', 'stripslashes_deep' ); +add_filter( 'bp_get_messages_subject_value', 'stripslashes_deep' ); +add_filter( 'bp_get_messages_content_value', 'stripslashes_deep' ); +add_filter( 'bp_get_the_thread_message_content', 'stripslashes_deep' ); + +add_filter( 'bp_get_the_thread_message_content', 'stripslashes_deep' ); +add_filter( 'bp_get_the_thread_subject', 'stripslashes_deep' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-functions.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-functions.php new file mode 100644 index 0000000..ca7383a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-functions.php @@ -0,0 +1,261 @@ +<?php +/******************************************************************************* + * Business functions are where all the magic happens in BuddyPress. They will + * handle the actual saving or manipulation of information. Usually they will + * hand off to a database class for data access, then return + * true or false on success or failure. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function messages_new_message( $args = '' ) { + global $bp; + + $defaults = array ( + 'sender_id' => $bp->loggedin_user->id, + 'thread_id' => false, // false for a new message, thread id for a reply to a thread. + 'recipients' => false, // Can be an array of usernames, user_ids or mixed. + 'subject' => false, + 'content' => false, + 'date_sent' => bp_core_current_time() + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( empty( $sender_id ) || empty( $content ) ) + return false; + + // Create a new message object + $message = new BP_Messages_Message; + $message->thread_id = $thread_id; + $message->sender_id = $sender_id; + $message->subject = $subject; + $message->message = $content; + $message->date_sent = $date_sent; + + // If we have a thread ID, use the existing recipients, otherwise use the recipients passed + if ( !empty( $thread_id ) ) { + $thread = new BP_Messages_Thread( $thread_id ); + $message->recipients = $thread->get_recipients(); + + // Strip the sender from the recipient list if they exist + if ( isset( $message->recipients[$sender_id] ) ) + unset( $message->recipients[$sender_id] ); + + if ( empty( $message->subject ) ) + $message->subject = sprintf( __( 'Re: %s', 'buddypress' ), $thread->messages[0]->subject ); + + // No thread ID, so make some adjustments + } else { + if ( empty( $recipients ) ) + return false; + + if ( empty( $message->subject ) ) + $message->subject = __( 'No Subject', 'buddypress' ); + + $recipient_ids = array(); + + // Invalid recipients are added to an array, for future enhancements + $invalid_recipients = array(); + + // Loop the recipients and convert all usernames to user_ids where needed + foreach( (array) $recipients as $recipient ) { + $recipient = trim( $recipient ); + if ( empty( $recipient ) ) + continue; + + if ( is_numeric( $recipient ) ) { + if ( bp_core_get_core_userdata( (int) $recipient ) ) + $recipient_id = (int) $recipient; + + } else { + if ( bp_is_username_compatibility_mode() ) + $recipient_id = bp_core_get_userid( $recipient ); + else + $recipient_id = bp_core_get_userid_from_nicename( $recipient ); + } + + if ( !$recipient_id ) + $invalid_recipients[] = $recipient; + else + $recipient_ids[] = (int) $recipient_id; + } + + // Strip the sender from the recipient list if they exist + if ( $key = array_search( $sender_id, (array)$recipient_ids ) ) + unset( $recipient_ids[$key] ); + + // Remove duplicates + $recipient_ids = array_unique( (array)$recipient_ids ); + + if ( empty( $recipient_ids ) ) + return false; + + // Format this to match existing recipients + foreach( (array)$recipient_ids as $i => $recipient_id ) { + $message->recipients[$i] = new stdClass; + $message->recipients[$i]->user_id = $recipient_id; + } + } + + if ( $message->send() ) { + + // Send screen notifications to the recipients + foreach ( (array)$message->recipients as $recipient ) + bp_core_add_notification( $message->id, $recipient->user_id, 'messages', 'new_message' ); + + // Send email notifications to the recipients + messages_notification_new_message( array( 'message_id' => $message->id, 'sender_id' => $message->sender_id, 'subject' => $message->subject, 'content' => $message->message, 'recipients' => $message->recipients, 'thread_id' => $message->thread_id) ); + + do_action_ref_array( 'messages_message_sent', array( &$message ) ); + + return $message->thread_id; + } + + return false; +} + + +function messages_send_notice( $subject, $message ) { + if ( !is_super_admin() || empty( $subject ) || empty( $message ) ) { + return false; + + // Has access to send notices, lets do it. + } else { + $notice = new BP_Messages_Notice; + $notice->subject = $subject; + $notice->message = $message; + $notice->date_sent = bp_core_current_time(); + $notice->is_active = 1; + $notice->save(); // send it. + + do_action_ref_array( 'messages_send_notice', array( $subject, $message ) ); + + return true; + } +} + +function messages_delete_thread( $thread_ids ) { + do_action( 'messages_before_delete_thread', $thread_ids ); + + if ( is_array( $thread_ids ) ) { + $error = 0; + for ( $i = 0, $count = count( $thread_ids ); $i < $count; ++$i ) { + if ( !$status = BP_Messages_Thread::delete( $thread_ids[$i]) ) + $error = 1; + } + + if ( !empty( $error ) ) + return false; + + do_action( 'messages_delete_thread', $thread_ids ); + + return true; + } else { + if ( !BP_Messages_Thread::delete( $thread_ids ) ) + return false; + + do_action( 'messages_delete_thread', $thread_ids ); + + return true; + } +} + +function messages_check_thread_access( $thread_id, $user_id = 0 ) { + global $bp; + + if ( empty( $user_id ) ) + $user_id = $bp->loggedin_user->id; + + return BP_Messages_Thread::check_access( $thread_id, $user_id ); +} + +function messages_mark_thread_read( $thread_id ) { + return BP_Messages_Thread::mark_as_read( $thread_id ); +} + +function messages_mark_thread_unread( $thread_id ) { + return BP_Messages_Thread::mark_as_unread( $thread_id ); +} + +function messages_add_callback_values( $recipients, $subject, $content ) { + @setcookie( 'bp_messages_send_to', $recipients, time() + 60 * 60 * 24, COOKIEPATH ); + @setcookie( 'bp_messages_subject', $subject, time() + 60 * 60 * 24, COOKIEPATH ); + @setcookie( 'bp_messages_content', $content, time() + 60 * 60 * 24, COOKIEPATH ); +} + +function messages_remove_callback_values() { + @setcookie( 'bp_messages_send_to', false, time() - 1000, COOKIEPATH ); + @setcookie( 'bp_messages_subject', false, time() - 1000, COOKIEPATH ); + @setcookie( 'bp_messages_content', false, time() - 1000, COOKIEPATH ); +} + +function messages_get_unread_count( $user_id = 0 ) { + global $bp; + + if ( empty( $user_id ) ) + $user_id = $bp->loggedin_user->id; + + return BP_Messages_Thread::get_inbox_count( $user_id ); +} + +function messages_is_user_sender( $user_id, $message_id ) { + return BP_Messages_Message::is_user_sender( $user_id, $message_id ); +} + +function messages_get_message_sender( $message_id ) { + return BP_Messages_Message::get_message_sender( $message_id ); +} + +function messages_is_valid_thread( $thread_id ) { + return BP_Messages_Thread::is_valid( $thread_id ); +} + +/******************************************************************************* + * These functions handle the recording, deleting and formatting of activity and + * notifications for the user and for this specific component. + */ + +/** + * Format the BuddyBar/admin bar notifications for the Messages component + * + * @package BuddyPress + * + * @param str $action The kind of notification being rendered + * @param int $item_id The primary item id + * @param int $secondary_item_id The secondary item id + * @param int $total_items The total number of messaging-related notifications waiting for the user + * @param str $format 'string' for BuddyBar-compatible notifications; 'array' for WP Admin Bar + */ +function messages_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) { + global $bp; + + if ( 'new_message' == $action ) { + $link = bp_loggedin_user_domain() . bp_get_messages_slug() . '/inbox'; + $title = __( 'Inbox', 'buddypress' ); + + if ( (int)$total_items > 1 ) { + $text = sprintf( __('You have %d new messages', 'buddypress' ), (int)$total_items ); + $filter = 'bp_messages_multiple_new_message_notification'; + } else { + $text = sprintf( __('You have %d new message', 'buddypress' ), (int)$total_items ); + $filter = 'bp_messages_single_new_message_notification'; + } + } + + if ( 'string' == $format ) { + $return = apply_filters( $filter, '<a href="' . $link . '" title="' . $title . '">' . $text . '</a>', (int)$total_items, $text, $link ); + } else { + $return = apply_filters( $filter, array( + 'text' => $text, + 'link' => $link + ), $link, (int)$total_items, $text, $link ); + } + + do_action( 'messages_format_notifications', $action, $item_id, $secondary_item_id, $total_items ); + + return $return; +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-loader.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-loader.php new file mode 100644 index 0000000..ce6a2c6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-loader.php @@ -0,0 +1,257 @@ +<?php +/** + * BuddyPress Private Messages Loader + * + * A private messages component, for users to send messages to each other + * + * @package BuddyPress + * @subpackage Messages Core + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +class BP_Messages_Component extends BP_Component { + + /** + * Start the messages component creation process + * + * @since 1.5 + */ + function __construct() { + parent::start( + 'messages', + __( 'Private Messages', 'buddypress' ), + BP_PLUGIN_DIR + ); + } + + /** + * Include files + */ + function includes() { + // Files to include + $includes = array( + 'cssjs', + 'cache', + 'actions', + 'screens', + 'classes', + 'filters', + 'template', + 'functions', + 'notifications' + ); + + parent::includes( $includes ); + } + + /** + * Setup globals + * + * The BP_MESSAGES_SLUG constant is deprecated, and only used here for + * backwards compatibility. + * + * @since 1.5 + * @global obj $bp + */ + function setup_globals() { + global $bp; + + // Define a slug, if necessary + if ( !defined( 'BP_MESSAGES_SLUG' ) ) + define( 'BP_MESSAGES_SLUG', $this->id ); + + // Global tables for messaging component + $global_tables = array( + 'table_name_notices' => $bp->table_prefix . 'bp_messages_notices', + 'table_name_messages' => $bp->table_prefix . 'bp_messages_messages', + 'table_name_recipients' => $bp->table_prefix . 'bp_messages_recipients' + ); + + // All globals for messaging component. + // Note that global_tables is included in this array. + $globals = array( + 'path' => BP_PLUGIN_DIR, + 'slug' => BP_MESSAGES_SLUG, + 'has_directory' => false, + 'notification_callback' => 'messages_format_notifications', + 'search_string' => __( 'Search Messages...', 'buddypress' ), + 'global_tables' => $global_tables + ); + + $this->autocomplete_all = defined( 'BP_MESSAGES_AUTOCOMPLETE_ALL' ); + + parent::setup_globals( $globals ); + } + + /** + * Setup BuddyBar navigation + * + * @global obj $bp + */ + function setup_nav() { + global $bp; + + $name = sprintf( __( 'Messages <span>%s</span>', 'buddypress' ), bp_get_total_unread_messages_count() ); + + // Add 'Messages' to the main navigation + $main_nav = array( + 'name' => $name, + 'slug' => $this->slug, + 'position' => 50, + 'show_for_displayed_user' => false, + 'screen_function' => 'messages_screen_inbox', + 'default_subnav_slug' => 'inbox', + 'item_css_id' => $this->id + ); + + // Link to user messages + $messages_link = trailingslashit( $bp->loggedin_user->domain . $this->slug ); + + // Add the subnav items to the profile + $sub_nav[] = array( + 'name' => __( 'Inbox', 'buddypress' ), + 'slug' => 'inbox', + 'parent_url' => $messages_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'messages_screen_inbox', + 'position' => 10, + 'user_has_access' => bp_is_my_profile() + ); + + $sub_nav[] = array( + 'name' => __( 'Sent', 'buddypress' ), + 'slug' => 'sentbox', + 'parent_url' => $messages_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'messages_screen_sentbox', + 'position' => 20, + 'user_has_access' => bp_is_my_profile() + ); + + $sub_nav[] = array( + 'name' => __( 'Compose', 'buddypress' ), + 'slug' => 'compose', + 'parent_url' => $messages_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'messages_screen_compose', + 'position' => 30, + 'user_has_access' => bp_is_my_profile() + ); + + if ( is_super_admin() ) { + $sub_nav[] = array( + 'name' => __( 'Notices', 'buddypress' ), + 'slug' => 'notices', + 'parent_url' => $messages_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'messages_screen_notices', + 'position' => 90, + 'user_has_access' => is_super_admin() + ); + } + + parent::setup_nav( $main_nav, $sub_nav ); + } + + /** + * Set up the admin bar + * + * @global obj $bp + */ + function setup_admin_bar() { + global $bp; + + // Prevent debug notices + $wp_admin_nav = array(); + + // Menus for logged in user + if ( is_user_logged_in() ) { + + // Setup the logged in user variables + $user_domain = $bp->loggedin_user->domain; + $messages_link = trailingslashit( $user_domain . $this->slug ); + + // Unread message count + if ( $count = messages_get_unread_count() ) { + $title = sprintf( __( 'Messages <span class="count">%s</span>', 'buddypress' ), $count ); + $inbox = sprintf( __( 'Inbox <span class="count">%s</span>', 'buddypress' ), $count ); + } else { + $title = __( 'Messages', 'buddypress' ); + $inbox = __( 'Inbox', 'buddypress' ); + } + + // Add main Messages menu + $wp_admin_nav[] = array( + 'parent' => $bp->my_account_menu_id, + 'id' => 'my-account-' . $this->id, + 'title' => $title, + 'href' => trailingslashit( $messages_link ) + ); + + // Inbox + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-inbox', + 'title' => $inbox, + 'href' => trailingslashit( $messages_link . 'inbox' ) + ); + + // Sent Messages + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-sentbox', + 'title' => __( 'Sent', 'buddypress' ), + 'href' => trailingslashit( $messages_link . 'sentbox' ) + ); + + // Compose Message + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-compose', + 'title' => __( 'Compose', 'buddypress' ), + 'href' => trailingslashit( $messages_link . 'compose' ) + ); + + // Site Wide Notices + if ( is_super_admin() ) { + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-notices', + 'title' => __( 'All Member Notices', 'buddypress' ), + 'href' => trailingslashit( $messages_link . 'notices' ) + ); + } + } + + parent::setup_admin_bar( $wp_admin_nav ); + } + + /** + * Sets up the title for pages and <title> + * + * @global obj $bp + */ + function setup_title() { + global $bp; + + if ( bp_is_messages_component() ) { + if ( bp_is_my_profile() ) { + $bp->bp_options_title = __( 'My Messages', 'buddypress' ); + } else { + $bp->bp_options_avatar = bp_core_fetch_avatar( array( + 'item_id' => $bp->displayed_user->id, + 'type' => 'thumb' + ) ); + $bp->bp_options_title = $bp->displayed_user->fullname; + } + } + + parent::setup_title(); + } +} +// Create the messages component +$bp->messages = new BP_Messages_Component(); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-notifications.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-notifications.php new file mode 100644 index 0000000..d902096 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-notifications.php @@ -0,0 +1,58 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function messages_notification_new_message( $args ) { + global $bp; + + extract($args); + + $email_subject = $email_content = $args = ''; + $sender_name = bp_core_get_user_displayname( $sender_id ); + + foreach( $recipients as $recipient ) { + if ( $sender_id == $recipient->user_id || 'no' == bp_get_user_meta( $recipient->user_id, 'notification_messages_new_message', true ) ) + continue; + + // User data and links + $ud = get_userdata( $recipient->user_id ); + $message_link = bp_core_get_user_domain( $recipient->user_id ) . bp_get_messages_slug() .'/'; + $settings_slug = function_exists( 'bp_get_settings_slug' ) ? bp_get_settings_slug() : 'settings'; + $settings_link = bp_core_get_user_domain( $recipient->user_id ) . $settings_slug . '/notifications/'; + + // Sender info + $sender_name = stripslashes( $sender_name ); + $subject = stripslashes( wp_filter_kses( $subject ) ); + $content = stripslashes( wp_filter_kses( $content ) ); + + // Set up and send the message + $email_to = $ud->user_email; + $sitename = wp_specialchars_decode( get_blog_option( bp_get_root_blog_id(), 'blogname' ), ENT_QUOTES ); + $email_subject = '[' . $sitename . '] ' . sprintf( __( 'New message from %s', 'buddypress' ), $sender_name ); + + $email_content = sprintf( __( +'%s sent you a new message: + +Subject: %s + +"%s" + +To view and read your messages please log in and visit: %s + +--------------------- +', 'buddypress' ), $sender_name, $subject, $content, $message_link ); + + $email_content .= sprintf( __( 'To disable these notifications please log in and go to: %s', 'buddypress' ), $settings_link ); + + // Send the message + $email_to = apply_filters( 'messages_notification_new_message_to', $email_to ); + $email_subject = apply_filters( 'messages_notification_new_message_subject', $email_subject, $sender_name ); + $email_content = apply_filters( 'messages_notification_new_message_message', $email_content, $sender_name, $subject, $content, $message_link, $settings_link ); + + wp_mail( $email_to, $email_subject, $email_content ); + } + + do_action( 'bp_messages_sent_notification_email', $recipients, $email_subject, $email_content, $args ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-screens.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-screens.php new file mode 100644 index 0000000..62a6f49 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-screens.php @@ -0,0 +1,177 @@ +<?php +/******************************************************************************* + * Screen functions are the controllers of BuddyPress. They will execute when their + * specific URL is caught. They will first save or manipulate data using business + * functions, then pass on the user to a template file. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +function messages_screen_inbox() { + global $bp; + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + do_action( 'messages_screen_inbox' ); + bp_core_load_template( apply_filters( 'messages_template_inbox', 'members/single/home' ) ); +} + +function messages_screen_sentbox() { + global $bp; + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + do_action( 'messages_screen_sentbox' ); + bp_core_load_template( apply_filters( 'messages_template_sentbox', 'members/single/home' ) ); +} + +function messages_screen_compose() { + global $bp; + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + // Remove any saved message data from a previous session. + messages_remove_callback_values(); + + // Check if the message form has been submitted + if ( isset( $_POST['send'] ) ) { + + // Check the nonce + check_admin_referer( 'messages_send_message' ); + + // Check we have what we need + if ( empty( $_POST['subject'] ) || empty( $_POST['content'] ) ) { + bp_core_add_message( __( 'There was an error sending that message, please try again', 'buddypress' ), 'error' ); + } else { + // If this is a notice, send it + if ( isset( $_POST['send-notice'] ) ) { + if ( messages_send_notice( $_POST['subject'], $_POST['content'] ) ) { + bp_core_add_message( __( 'Notice sent successfully!', 'buddypress' ) ); + bp_core_redirect( $bp->loggedin_user->domain . $bp->messages->slug . '/inbox/' ); + } else { + bp_core_add_message( __( 'There was an error sending that notice, please try again', 'buddypress' ), 'error' ); + } + } else { + // Filter recipients into the format we need - array( 'username/userid', 'username/userid' ) + $autocomplete_recipients = explode( ',', $_POST['send-to-input'] ); + $typed_recipients = explode( ' ', $_POST['send_to_usernames'] ); + $recipients = array_merge( (array) $autocomplete_recipients, (array) $typed_recipients ); + $recipients = apply_filters( 'bp_messages_recipients', $recipients ); + + // Send the message + if ( $thread_id = messages_new_message( array( 'recipients' => $recipients, 'subject' => $_POST['subject'], 'content' => $_POST['content'] ) ) ) { + bp_core_add_message( __( 'Message sent successfully!', 'buddypress' ) ); + bp_core_redirect( $bp->loggedin_user->domain . $bp->messages->slug . '/view/' . $thread_id . '/' ); + } else { + bp_core_add_message( __( 'There was an error sending that message, please try again', 'buddypress' ), 'error' ); + } + } + } + } + + do_action( 'messages_screen_compose' ); + + bp_core_load_template( apply_filters( 'messages_template_compose', 'members/single/home' ) ); +} + +function messages_screen_notices() { + global $notice_id; + + if ( !is_super_admin() ) + return false; + + $notice_id = (int)bp_action_variable( 1 ); + + if ( !empty( $notice_id ) && is_numeric( $notice_id ) ) { + $notice = new BP_Messages_Notice( $notice_id ); + + if ( bp_is_action_variable( 'deactivate', 0 ) ) { + if ( !$notice->deactivate() ) { + bp_core_add_message( __('There was a problem deactivating that notice.', 'buddypress'), 'error' ); + } else { + bp_core_add_message( __('Notice deactivated.', 'buddypress') ); + } + } else if ( bp_is_action_variable( 'activate', 0 ) ) { + if ( !$notice->activate() ) { + bp_core_add_message( __('There was a problem activating that notice.', 'buddypress'), 'error' ); + } else { + bp_core_add_message( __('Notice activated.', 'buddypress') ); + } + } else if ( bp_is_action_variable( 'delete' ) ) { + if ( !$notice->delete() ) { + bp_core_add_message( __('There was a problem deleting that notice.', 'buddypress'), 'buddypress' ); + } else { + bp_core_add_message( __('Notice deleted.', 'buddypress') ); + } + } + bp_core_redirect( bp_loggedin_user_domain() . bp_get_messages_slug() . '/notices' ); + } + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + do_action( 'messages_screen_notices' ); + + bp_core_load_template( apply_filters( 'messages_template_notices', 'members/single/home' ) ); +} + +function messages_screen_notification_settings() { + global $bp; + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + if ( !$new_messages = bp_get_user_meta( $bp->displayed_user->id, 'notification_messages_new_message', true ) ) + $new_messages = 'yes'; + + if ( !$new_notices = bp_get_user_meta( $bp->displayed_user->id, 'notification_messages_new_notice', true ) ) + $new_notices = 'yes'; +?> + + <table class="notification-settings" id="messages-notification-settings"> + <thead> + <tr> + <th class="icon"></th> + <th class="title"><?php _e( 'Messages', 'buddypress' ) ?></th> + <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> + <th class="no"><?php _e( 'No', 'buddypress' )?></th> + </tr> + </thead> + + <tbody> + <tr id="messages-notification-settings-new-message"> + <td></td> + <td><?php _e( 'A member sends you a new message', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_messages_new_message]" value="yes" <?php checked( $new_messages, 'yes', true ) ?>/></td> + <td class="no"><input type="radio" name="notifications[notification_messages_new_message]" value="no" <?php checked( $new_messages, 'no', true ) ?>/></td> + </tr> + <tr id="messages-notification-settings-new-site-notice"> + <td></td> + <td><?php _e( 'A new site notice is posted', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_messages_new_notice]" value="yes" <?php checked( $new_notices, 'yes', true ) ?>/></td> + <td class="no"><input type="radio" name="notifications[notification_messages_new_notice]" value="no" <?php checked( $new_notices, 'no', true ) ?>/></td> + </tr> + + <?php do_action( 'messages_screen_notification_settings' ) ?> + </tbody> + </table> + +<?php +} +add_action( 'bp_notification_settings', 'messages_screen_notification_settings', 2 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-template.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-template.php new file mode 100644 index 0000000..db3ef16 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-template.php @@ -0,0 +1,884 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/***************************************************************************** + * Message Box Template Class + **/ +Class BP_Messages_Box_Template { + var $current_thread = -1; + var $current_thread_count; + var $total_thread_count; + var $threads; + var $thread; + + var $in_the_loop; + var $user_id; + var $box; + + var $pag_page; + var $pag_num; + var $pag_links; + + function bp_messages_box_template( $user_id, $box, $per_page, $max, $type ) { + $this->__construct( $user_id, $box, $per_page, $max, $type ); + } + + function __construct( $user_id, $box, $per_page, $max, $type ) { + $this->pag_page = isset( $_GET['mpage'] ) ? intval( $_GET['mpage'] ) : 1; + $this->pag_num = isset( $_GET['num'] ) ? intval( $_GET['num'] ) : $per_page; + + $this->user_id = $user_id; + $this->box = $box; + $this->type = $type; + + if ( 'notices' == $this->box ) { + $this->threads = BP_Messages_Notice::get_notices(); + } else { + $threads = BP_Messages_Thread::get_current_threads_for_user( $this->user_id, $this->box, $this->type, $this->pag_num, $this->pag_page ); + + $this->threads = $threads['threads']; + $this->total_thread_count = $threads['total']; + } + + if ( !$this->threads ) { + $this->thread_count = 0; + $this->total_thread_count = 0; + } else { + $total_notice_count = BP_Messages_Notice::get_total_notice_count(); + + if ( !$max || $max >= (int)$total_notice_count ) { + if ( 'notices' == $this->box ) { + $this->total_thread_count = (int)$total_notice_count; + } + } else { + $this->total_thread_count = (int)$max; + } + + if ( $max ) { + if ( $max >= count( $this->threads ) ) { + $this->thread_count = count( $this->threads ); + } else { + $this->thread_count = (int)$max; + } + } else { + $this->thread_count = count( $this->threads ); + } + } + + if ( (int)$this->total_thread_count && (int)$this->pag_num ) { + $this->pag_links = paginate_links( array( + 'base' => add_query_arg( 'mpage', '%#%' ), + 'format' => '', + 'total' => ceil( (int)$this->total_thread_count / (int)$this->pag_num ), + 'current' => $this->pag_page, + 'prev_text' => _x( '←', 'Message pagination previous text', 'buddypress' ), + 'next_text' => _x( '→', 'Message pagination next text', 'buddypress' ), + 'mid_size' => 1 + ) ); + } + } + + function has_threads() { + if ( $this->thread_count ) + return true; + + return false; + } + + function next_thread() { + $this->current_thread++; + $this->thread = $this->threads[$this->current_thread]; + + return $this->thread; + } + + function rewind_threads() { + $this->current_thread = -1; + if ( $this->thread_count > 0 ) { + $this->thread = $this->threads[0]; + } + } + + function message_threads() { + if ( $this->current_thread + 1 < $this->thread_count ) { + return true; + } elseif ( $this->current_thread + 1 == $this->thread_count ) { + do_action('messages_box_loop_end'); + // Do some cleaning up after the loop + $this->rewind_threads(); + } + + $this->in_the_loop = false; + return false; + } + + function the_message_thread() { + global $bp; + + $this->in_the_loop = true; + $this->thread = $this->next_thread(); + + if ( 'notices' != $bp->current_action ) { + $last_message_index = count( $this->thread->messages ) - 1; + $this->thread->messages = array_reverse( (array)$this->thread->messages ); + + // Set up the last message data + if ( count($this->thread->messages) > 1 ) { + if ( 'inbox' == $this->box ) { + foreach ( (array)$this->thread->messages as $key => $message ) { + if ( $bp->loggedin_user->id != $message->sender_id ) { + $last_message_index = $key; + break; + } + } + + } elseif ( 'sentbox' == $this->box ) { + foreach ( (array)$this->thread->messages as $key => $message ) { + if ( $bp->loggedin_user->id == $message->sender_id ) { + $last_message_index = $key; + break; + } + } + } + } + + $this->thread->last_message_id = $this->thread->messages[$last_message_index]->id; + $this->thread->last_message_date = $this->thread->messages[$last_message_index]->date_sent; + $this->thread->last_sender_id = $this->thread->messages[$last_message_index]->sender_id; + $this->thread->last_message_subject = $this->thread->messages[$last_message_index]->subject; + $this->thread->last_message_content = $this->thread->messages[$last_message_index]->message; + } + + if ( 0 == $this->current_thread ) // loop has just started + do_action('messages_box_loop_start'); + } +} + +function bp_has_message_threads( $args = '' ) { + global $bp, $messages_template; + + $defaults = array( + 'user_id' => $bp->loggedin_user->id, + 'box' => 'inbox', + 'per_page' => 10, + 'max' => false, + 'type' => 'all' + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( 'notices' == $bp->current_action && !is_super_admin() ) { + wp_redirect( $bp->displayed_user->id ); + } else { + if ( 'inbox' == $bp->current_action ) + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->messages->id, 'new_message' ); + + if ( 'sentbox' == $bp->current_action ) + $box = 'sentbox'; + + if ( 'notices' == $bp->current_action ) + $box = 'notices'; + + $messages_template = new BP_Messages_Box_Template( $user_id, $box, $per_page, $max, $type ); + } + + return apply_filters( 'bp_has_message_threads', $messages_template->has_threads(), $messages_template ); +} + +function bp_message_threads() { + global $messages_template; + return $messages_template->message_threads(); +} + +function bp_message_thread() { + global $messages_template; + return $messages_template->the_message_thread(); +} + +function bp_message_thread_id() { + echo bp_get_message_thread_id(); +} + function bp_get_message_thread_id() { + global $messages_template; + + return apply_filters( 'bp_get_message_thread_id', $messages_template->thread->thread_id ); + } + +function bp_message_thread_subject() { + echo bp_get_message_thread_subject(); +} + function bp_get_message_thread_subject() { + global $messages_template, $message_template_subject; + + return apply_filters( 'bp_get_message_thread_subject', stripslashes_deep( $messages_template->thread->last_message_subject ) ); + } + +function bp_message_thread_excerpt() { + echo bp_get_message_thread_excerpt(); +} + function bp_get_message_thread_excerpt() { + global $messages_template; + + return apply_filters( 'bp_get_message_thread_excerpt', strip_tags( bp_create_excerpt( $messages_template->thread->last_message_content, 75 ) ) ); + } + +function bp_message_thread_from() { + echo bp_get_message_thread_from(); +} + function bp_get_message_thread_from() { + global $messages_template, $bp; + + return apply_filters( 'bp_get_message_thread_from', bp_core_get_userlink( $messages_template->thread->last_sender_id ) ); + } + +function bp_message_thread_to() { + echo bp_get_message_thread_to(); +} + function bp_get_message_thread_to() { + global $messages_template; + return apply_filters( 'bp_message_thread_to', BP_Messages_Thread::get_recipient_links($messages_template->thread->recipients) ); + } + +function bp_message_thread_view_link() { + echo bp_get_message_thread_view_link(); +} + function bp_get_message_thread_view_link() { + global $messages_template, $bp; + return apply_filters( 'bp_get_message_thread_view_link', trailingslashit( $bp->loggedin_user->domain . $bp->messages->slug . '/view/' . $messages_template->thread->thread_id ) ); + } + +function bp_message_thread_delete_link() { + echo bp_get_message_thread_delete_link(); +} + function bp_get_message_thread_delete_link() { + global $messages_template, $bp; + return apply_filters( 'bp_get_message_thread_delete_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->messages->slug . '/' . $bp->current_action . '/delete/' . $messages_template->thread->thread_id, 'messages_delete_thread' ) ); + } + +function bp_message_css_class() { + echo bp_get_message_css_class(); +} + + function bp_get_message_css_class() { + global $messages_template; + + $class = false; + + if ( $messages_template->current_thread % 2 == 1 ) + $class .= 'alt'; + + return apply_filters( 'bp_get_message_css_class', trim( $class ) ); + } + +function bp_message_thread_has_unread() { + global $messages_template; + + if ( $messages_template->thread->unread_count ) + return true; + + return false; +} + +function bp_message_thread_unread_count() { + echo bp_get_message_thread_unread_count(); +} + function bp_get_message_thread_unread_count() { + global $messages_template; + + if ( (int)$messages_template->thread->unread_count ) + return apply_filters( 'bp_get_message_thread_unread_count', $messages_template->thread->unread_count ); + + return false; + } + +function bp_message_thread_last_post_date() { + echo bp_get_message_thread_last_post_date(); +} + function bp_get_message_thread_last_post_date() { + global $messages_template; + + return apply_filters( 'bp_get_message_thread_last_post_date', bp_format_time( strtotime( $messages_template->thread->last_message_date ) ) ); + } + +function bp_message_thread_avatar() { + echo bp_get_message_thread_avatar(); +} + function bp_get_message_thread_avatar() { + global $messages_template, $bp; + + return apply_filters( 'bp_get_message_thread_avatar', bp_core_fetch_avatar( array( 'item_id' => $messages_template->thread->last_sender_id, 'type' => 'thumb' ) ) ); + } + +function bp_message_thread_view() { + global $thread_id; + + messages_view_thread($thread_id); +} + +function bp_total_unread_messages_count() { + echo bp_get_total_unread_messages_count(); +} + function bp_get_total_unread_messages_count() { + return apply_filters( 'bp_get_total_unread_messages_count', BP_Messages_Thread::get_inbox_count() ); + } + +function bp_messages_pagination() { + echo bp_get_messages_pagination(); +} + function bp_get_messages_pagination() { + global $messages_template; + return apply_filters( 'bp_get_messages_pagination', $messages_template->pag_links ); + } + +function bp_messages_pagination_count() { + global $messages_template; + + $start_num = intval( ( $messages_template->pag_page - 1 ) * $messages_template->pag_num ) + 1; + $from_num = bp_core_number_format( $start_num ); + $to_num = bp_core_number_format( ( $start_num + ( $messages_template->pag_num - 1 ) > $messages_template->total_thread_count ) ? $messages_template->total_thread_count : $start_num + ( $messages_template->pag_num - 1 ) ); + $total = bp_core_number_format( $messages_template->total_thread_count ); + + echo sprintf( __( 'Viewing message %1$s to %2$s (of %3$s messages)', 'buddypress' ), $from_num, $to_num, $total ); ?><?php +} + +/** + * Echoes the form action for Messages HTML forms + * + * @package BuddyPress + */ +function bp_messages_form_action() { + echo bp_get_messages_form_action(); +} + /** + * Returns the form action for Messages HTML forms + * + * @package BuddyPress + * + * @return str The form action + */ + function bp_get_messages_form_action() { + return apply_filters( 'bp_get_messages_form_action', trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/' . bp_action_variable( 0 ) ) ); + } + +function bp_messages_username_value() { + echo bp_get_messages_username_value(); +} + function bp_get_messages_username_value() { + if ( isset( $_COOKIE['bp_messages_send_to'] ) ) { + return apply_filters( 'bp_get_messages_username_value', $_COOKIE['bp_messages_send_to'] ); + } else if ( isset( $_GET['r'] ) && !isset( $_COOKIE['bp_messages_send_to'] ) ) { + return apply_filters( 'bp_get_messages_username_value', $_GET['r'] ); + } + } + +function bp_messages_subject_value() { + echo bp_get_messages_subject_value(); +} + function bp_get_messages_subject_value() { + $subject = ''; + if ( !empty( $_POST['subject'] ) ) + $subject = $_POST['subject']; + + return apply_filters( 'bp_get_messages_subject_value', $subject ); + } + +function bp_messages_content_value() { + echo bp_get_messages_content_value(); +} + function bp_get_messages_content_value() { + $content = ''; + if ( !empty( $_POST['content'] ) ) + $content = $_POST['content']; + + return apply_filters( 'bp_get_messages_content_value', $content ); + } + +function bp_messages_options() { + global $bp; +?> + <?php _e( 'Select:', 'buddypress' ) ?> + <select name="message-type-select" id="message-type-select"> + <option value=""></option> + <option value="read"><?php _e('Read', 'buddypress') ?></option> + <option value="unread"><?php _e('Unread', 'buddypress') ?></option> + <option value="all"><?php _e('All', 'buddypress') ?></option> + </select>   + <?php if ( $bp->current_action != 'sentbox' && $bp->current_action != 'notices' ) : ?> + <a href="#" id="mark_as_read"><?php _e('Mark as Read', 'buddypress') ?></a>   + <a href="#" id="mark_as_unread"><?php _e('Mark as Unread', 'buddypress') ?></a>   + <?php endif; ?> + <a href="#" id="delete_<?php echo $bp->current_action ?>_messages"><?php _e('Delete Selected', 'buddypress') ?></a>   +<?php +} + +function bp_message_is_active_notice() { + global $messages_template; + + if ( $messages_template->thread->is_active ) { + echo "<strong>"; + _e( 'Currently Active', 'buddypress' ); + echo "</strong>"; + } +} + function bp_get_message_is_active_notice() { + global $messages_template; + + if ( $messages_template->thread->is_active ) + return true; + + return false; + } + +function bp_message_notice_id() { + echo bp_get_message_notice_id(); +} + function bp_get_message_notice_id() { + global $messages_template; + return apply_filters( 'bp_get_message_notice_id', $messages_template->thread->id ); + } + +function bp_message_notice_post_date() { + echo bp_get_message_notice_post_date(); +} + function bp_get_message_notice_post_date() { + global $messages_template; + return apply_filters( 'bp_get_message_notice_post_date', bp_format_time( strtotime($messages_template->thread->date_sent) ) ); + } + +function bp_message_notice_subject() { + echo bp_get_message_notice_subject(); +} + function bp_get_message_notice_subject() { + global $messages_template; + return apply_filters( 'bp_get_message_notice_subject', $messages_template->thread->subject ); + } + +function bp_message_notice_text() { + echo bp_get_message_notice_text(); +} + function bp_get_message_notice_text() { + global $messages_template; + return apply_filters( 'bp_get_message_notice_text', $messages_template->thread->message ); + } + +function bp_message_notice_delete_link() { + echo bp_get_message_notice_delete_link(); +} + function bp_get_message_notice_delete_link() { + global $messages_template, $bp; + + return apply_filters( 'bp_get_message_notice_delete_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->messages->slug . '/notices/delete/' . $messages_template->thread->id, 'messages_delete_thread' ) ); + } + +function bp_message_activate_deactivate_link() { + echo bp_get_message_activate_deactivate_link(); +} + function bp_get_message_activate_deactivate_link() { + global $messages_template, $bp; + + if ( 1 == (int)$messages_template->thread->is_active ) { + $link = wp_nonce_url( $bp->loggedin_user->domain . $bp->messages->slug . '/notices/deactivate/' . $messages_template->thread->id, 'messages_deactivate_notice' ); + } else { + $link = wp_nonce_url( $bp->loggedin_user->domain . $bp->messages->slug . '/notices/activate/' . $messages_template->thread->id, 'messages_activate_notice' ); + } + return apply_filters( 'bp_get_message_activate_deactivate_link', $link ); + } + +function bp_message_activate_deactivate_text() { + echo bp_get_message_activate_deactivate_text(); +} + function bp_get_message_activate_deactivate_text() { + global $messages_template; + + if ( 1 == (int)$messages_template->thread->is_active ) { + $text = __('Deactivate', 'buddypress'); + } else { + $text = __('Activate', 'buddypress'); + } + return apply_filters( 'bp_message_activate_deactivate_text', $text ); + } + +/** + * Output the messages component slug + * + * @package BuddyPress + * @subpackage Messages Template + * @since 1.5 + * + * @uses bp_get_messages_slug() + */ +function bp_messages_slug() { + echo bp_get_messages_slug(); +} + /** + * Return the messages component slug + * + * @package BuddyPress + * @subpackage Messages Template + * @since 1.5 + */ + function bp_get_messages_slug() { + global $bp; + return apply_filters( 'bp_get_messages_slug', $bp->messages->slug ); + } + +function bp_message_get_notices() { + global $userdata; + + $notice = BP_Messages_Notice::get_active(); + + if ( empty( $notice ) ) + return false; + + $closed_notices = bp_get_user_meta( $userdata->ID, 'closed_notices', true ); + + if ( !$closed_notices ) + $closed_notices = array(); + + if ( is_array($closed_notices) ) { + if ( !in_array( $notice->id, $closed_notices ) && $notice->id ) { + ?> + <div id="message" class="info notice" rel="n-<?php echo $notice->id ?>"> + <p> + <strong><?php echo stripslashes( wp_filter_kses( $notice->subject ) ) ?></strong><br /> + <?php echo stripslashes( wp_filter_kses( $notice->message) ) ?> + <a href="#" id="close-notice"><?php _e( 'Close', 'buddypress' ) ?></a> + </p> + </div> + <?php + } + } +} + +function bp_send_private_message_link() { + echo bp_get_send_private_message_link(); +} + function bp_get_send_private_message_link() { + global $bp; + + if ( bp_is_my_profile() || !is_user_logged_in() ) + return false; + + return apply_filters( 'bp_get_send_private_message_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->messages->slug . '/compose/?r=' . bp_core_get_username( $bp->displayed_user->id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) ) ); + } + +/** + * bp_send_private_message_button() + * + * Explicitly named function to avoid confusion with public messages. + * + * @uses bp_get_send_message_button() + * @since 1.2.6 + */ +function bp_send_private_message_button() { + echo bp_get_send_message_button(); +} + +function bp_send_message_button() { + echo bp_get_send_message_button(); +} + function bp_get_send_message_button() { + return apply_filters( 'bp_get_send_message_button', + bp_get_button( array( + 'id' => 'private_message', + 'component' => 'messages', + 'must_be_logged_in' => true, + 'block_self' => true, + 'wrapper_id' => 'send-private-message', + 'link_href' => bp_get_send_private_message_link(), + 'link_title' => __( 'Send a private message to this user.', 'buddypress' ), + 'link_text' => __( 'Private Message', 'buddypress' ), + 'link_class' => 'send-message', + ) ) + ); + } + +function bp_message_loading_image_src() { + echo bp_get_message_loading_image_src(); +} + function bp_get_message_loading_image_src() { + global $bp; + return apply_filters( 'bp_get_message_loading_image_src', $bp->messages->image_base . '/ajax-loader.gif' ); + } + +function bp_message_get_recipient_tabs() { + $recipients = explode( ' ', bp_get_message_get_recipient_usernames() ); + + foreach ( $recipients as $recipient ) { + $user_id = bp_is_username_compatibility_mode() ? bp_core_get_userid( $recipient ) : bp_core_get_userid_from_nicename( $recipient ); + + if ( $user_id ) : ?> + + <li id="un-<?php echo esc_attr( $recipient ); ?>" class="friend-tab"> + <span><?php + echo bp_core_fetch_avatar( array( 'item_id' => $user_id, 'type' => 'thumb', 'width' => 15, 'height' => 15 ) ); + echo bp_core_get_userlink( $user_id ); + ?></span> + </li> + + <?php endif; + } +} + +function bp_message_get_recipient_usernames() { + echo bp_get_message_get_recipient_usernames(); +} + function bp_get_message_get_recipient_usernames() { + $recipients = isset( $_GET['r'] ) ? stripslashes( $_GET['r'] ) : ''; + + return apply_filters( 'bp_get_message_get_recipient_usernames', $recipients ); + } + + +/***************************************************************************** + * Message Thread Template Class + **/ + +class BP_Messages_Thread_Template { + var $current_message = -1; + var $message_count; + var $message; + + var $thread; + + var $in_the_loop; + + var $pag_page; + var $pag_num; + var $pag_links; + var $total_message_count; + + function bp_messages_thread_template( $thread_id, $order ) { + $this->__construct( $thread_id, $order ); + } + + function __construct( $thread_id, $order ) { + global $bp; + + $this->thread = new BP_Messages_Thread( $thread_id, $order ); + $this->message_count = count( $this->thread->messages ); + + $last_message_index = $this->message_count - 1; + $this->thread->last_message_id = $this->thread->messages[$last_message_index]->id; + $this->thread->last_message_date = $this->thread->messages[$last_message_index]->date_sent; + $this->thread->last_sender_id = $this->thread->messages[$last_message_index]->sender_id; + $this->thread->last_message_subject = $this->thread->messages[$last_message_index]->subject; + $this->thread->last_message_content = $this->thread->messages[$last_message_index]->message; + } + + function has_messages() { + if ( $this->message_count ) + return true; + + return false; + } + + function next_message() { + $this->current_message++; + $this->message = $this->thread->messages[$this->current_message]; + + return $this->message; + } + + function rewind_messages() { + $this->current_message = -1; + if ( $this->message_count > 0 ) { + $this->message = $this->thread->messages[0]; + } + } + + function messages() { + if ( $this->current_message + 1 < $this->message_count ) { + return true; + } elseif ( $this->current_message + 1 == $this->message_count ) { + do_action('thread_loop_end'); + // Do some cleaning up after the loop + $this->rewind_messages(); + } + + $this->in_the_loop = false; + return false; + } + + function the_message() { + global $message; + + $this->in_the_loop = true; + $this->message = $this->next_message(); + + if ( 0 == $this->current_message ) // loop has just started + do_action('thread_loop_start'); + } +} + +function bp_thread_has_messages( $args = '' ) { + global $bp, $thread_template, $group_id; + + $defaults = array( + 'thread_id' => false, + 'order' => 'ASC' + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( !$thread_id && bp_is_messages_component() && bp_is_current_action( 'view' ) ) + $thread_id = (int)bp_action_variable( 0 ); + + $thread_template = new BP_Messages_Thread_Template( $thread_id, $order ); + return $thread_template->has_messages(); +} + +function bp_thread_messages_order() { + echo bp_get_thread_messages_order(); +} + + function bp_get_thread_messages_order() { + global $thread_template; + return $thread_template->thread->messages_order; + } + +function bp_thread_messages() { + global $thread_template; + + return $thread_template->messages(); +} + +function bp_thread_the_message() { + global $thread_template; + + return $thread_template->the_message(); +} + +function bp_the_thread_id() { + echo bp_get_the_thread_id(); +} + function bp_get_the_thread_id() { + global $thread_template; + + return apply_filters( 'bp_get_the_thread_id', $thread_template->thread->thread_id ); + } + +function bp_the_thread_subject() { + echo bp_get_the_thread_subject(); +} + function bp_get_the_thread_subject() { + global $thread_template; + + return apply_filters( 'bp_get_the_thread_subject', $thread_template->thread->last_message_subject ); + } + +function bp_the_thread_recipients() { + echo bp_get_the_thread_recipients(); +} + function bp_get_the_thread_recipients() { + global $thread_template, $bp; + + $recipient_links = array(); + + if ( count( $thread_template->thread->recipients ) >= 5 ) + return apply_filters( 'bp_get_the_thread_recipients', sprintf( __( '%d Recipients', 'buddypress' ), count($thread_template->thread->recipients) ) ); + + foreach( (array)$thread_template->thread->recipients as $recipient ) { + if ( (int) $recipient->user_id !== $bp->loggedin_user->id ) + $recipient_links[] = bp_core_get_userlink( $recipient->user_id ); + } + + return apply_filters( 'bp_get_the_thread_recipients', implode( ', ', $recipient_links ) ); + } + +function bp_the_thread_message_alt_class() { + echo bp_get_the_thread_message_alt_class(); +} + function bp_get_the_thread_message_alt_class() { + global $thread_template; + + if ( $thread_template->current_message % 2 == 1 ) + $class = ' alt'; + else + $class = ''; + + return apply_filters( 'bp_get_the_thread_message_alt_class', $class ); + } + +function bp_the_thread_message_sender_avatar( $args = '' ) { + echo bp_get_the_thread_message_sender_avatar_thumb( $args ); +} + function bp_get_the_thread_message_sender_avatar_thumb( $args = '' ) { + global $thread_template; + + $defaults = array( + 'type' => 'thumb', + 'width' => false, + 'height' => false, + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_the_thread_message_sender_avatar_thumb', bp_core_fetch_avatar( array( 'item_id' => $thread_template->message->sender_id, 'type' => $type, 'width' => $width, 'height' => $height ) ) ); + } + +function bp_the_thread_message_sender_link() { + echo bp_get_the_thread_message_sender_link(); +} + function bp_get_the_thread_message_sender_link() { + global $thread_template; + + return apply_filters( 'bp_get_the_thread_message_sender_link', bp_core_get_userlink( $thread_template->message->sender_id, false, true ) ); + } + +function bp_the_thread_message_sender_name() { + echo bp_get_the_thread_message_sender_name(); +} + function bp_get_the_thread_message_sender_name() { + global $thread_template; + + return apply_filters( 'bp_get_the_thread_message_sender_name', bp_core_get_user_displayname( $thread_template->message->sender_id ) ); + } + +function bp_the_thread_delete_link() { + echo bp_get_the_thread_delete_link(); +} + function bp_get_the_thread_delete_link() { + global $bp; + + return apply_filters( 'bp_get_message_thread_delete_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->messages->slug . '/inbox/delete/' . bp_get_the_thread_id(), 'messages_delete_thread' ) ); + } + +function bp_the_thread_message_time_since() { + echo bp_get_the_thread_message_time_since(); +} + function bp_get_the_thread_message_time_since() { + global $thread_template; + + return apply_filters( 'bp_get_the_thread_message_time_since', sprintf( __( 'Sent %s', 'buddypress' ), bp_core_time_since( strtotime( $thread_template->message->date_sent ) ) ) ); + } + +function bp_the_thread_message_content() { + echo bp_get_the_thread_message_content(); +} + function bp_get_the_thread_message_content() { + global $thread_template; + + return apply_filters( 'bp_get_the_thread_message_content', $thread_template->message->message ); + } + +/** Embeds *******************************************************************/ + +/** + * Enable oembed support for Messages. + * + * There's no caching as BP 1.5 does not have a Messages meta API. + * + * @see BP_Embed + * @since 1.5 + * @todo Add Messages meta? + */ +function bp_messages_embed() { + add_filter( 'embed_post_id', 'bp_get_message_thread_id' ); +} +add_action( 'messages_box_loop_start', 'bp_messages_embed' ); +?> diff --git a/wp-content/plugins/buddypress/bp-messages/css/autocomplete/jquery.autocompletefb.css b/wp-content/plugins/buddypress/bp-messages/css/autocomplete/jquery.autocompletefb.css new file mode 100644 index 0000000..51ad711 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/css/autocomplete/jquery.autocompletefb.css @@ -0,0 +1 @@ +.ac_results{padding:0;overflow:hidden;z-index:99999;background:#fff;border:1px solid #ccc;-moz-border-radius-bottomleft:3px;-khtml-border-bottom-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-moz-border-radius-bottomright:3px;-khtml-border-bottom-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.ac_results ul{width:100%;list-style-position:outside;list-style:none;padding:0;margin:0;}.ac_results li{margin:0;padding:5px 10px;cursor:pointer;display:block;font-size:1em;line-height:16px;overflow:hidden;}.ac_results li img{margin-right:5px;}.ac_loading{background:url('../../../bp-themes/bp-default/_inc/images/ajax-loader.gif') right center no-repeat;}.ac_odd{background-color:#f0f0f0;}.ac_over{background-color:#888;color:#fff;}ul.acfb-holder{margin:0;height:auto!important;height:1%;overflow:hidden;padding:0;list-style:none;}ul.acfb-holder li{float:left;margin:0 5px 4px 0;list-style-type:none;}ul.acfb-holder li.friend-tab{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;border:1px solid #ffe7c7;padding:2px 7px 2px;background:#FFF9DF;font-size:1em;}li.friend-tab img.avatar{border-width:2px!important;vertical-align:middle;}li.friend-tab span.p{padding-left:5px;font-size:.8em;cursor:pointer;}input#send-to-input{width:275px;} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/css/autocomplete/jquery.autocompletefb.dev.css b/wp-content/plugins/buddypress/bp-messages/css/autocomplete/jquery.autocompletefb.dev.css new file mode 100644 index 0000000..8006cc1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/css/autocomplete/jquery.autocompletefb.dev.css @@ -0,0 +1,85 @@ +.ac_results { + padding: 0px; + overflow: hidden; + z-index: 99999; + background: #fff; + border: 1px solid #ccc; + -moz-border-radius-bottomleft: 3px; + -khtml-border-bottom-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -moz-border-radius-bottomright: 3px; + -khtml-border-bottom-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; +} + .ac_results ul { + width: 100%; + list-style-position: outside; + list-style: none; + padding: 0; + margin: 0; + } + + .ac_results li { + margin: 0px; + padding: 5px 10px; + cursor: pointer; + display: block; + font-size: 1em; + line-height: 16px; + overflow: hidden; + } + .ac_results li img { + margin-right: 5px; + } + +.ac_loading { + background : url('../../../bp-themes/bp-default/_inc/images/ajax-loader.gif') right center no-repeat; +} + +.ac_odd { + background-color: #f0f0f0; +} + +.ac_over { + background-color: #888; + color: #fff; +} + +ul.acfb-holder { + margin : 0; + height : auto !important; + height : 1%; + overflow: hidden; + padding: 0; + list-style: none; +} + ul.acfb-holder li { + float : left; + margin : 0 5px 4px 0; + list-style-type: none; + } + + ul.acfb-holder li.friend-tab { + border-radius : 3px; + -moz-border-radius : 3px; + -webkit-border-radius : 3px; + border : 1px solid #ffe7c7; + padding : 2px 7px 2px; + background : #FFF9DF; + font-size: 1em; + } + li.friend-tab img.avatar { + border-width: 2px !important; + vertical-align: middle; + } + + li.friend-tab span.p { + padding-left: 5px; + font-size: 0.8em; + cursor: pointer; + } + +input#send-to-input { width: 275px; } + diff --git a/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocomplete.dev.js b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocomplete.dev.js new file mode 100644 index 0000000..b311629 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocomplete.dev.js @@ -0,0 +1,730 @@ +/*! + * Autocomplete - jQuery plugin 1.0 Beta + * + * Copyright (c) 2007 Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.autocomplete.js 4485 2008-01-20 13:52:47Z joern.zaefferer $ + * + */ + +;(function($) { + +$.fn.extend({ + autocomplete: function(urlOrData, options) { + var isUrl = typeof urlOrData == "string"; + options = $.extend({}, $.Autocompleter.defaults, { + url: isUrl ? urlOrData : null, + data: isUrl ? null : urlOrData, + delay: isUrl ? $.Autocompleter.defaults.delay : 10, + max: options && !options.scroll ? 10 : 150 + }, options); + + // if highlight is set to false, replace it with a do-nothing function + options.highlight = options.highlight || function(value) { return value; }; + + return this.each(function() { + new $.Autocompleter(this, options); + }); + }, + result: function(handler) { + return this.bind("result", handler); + }, + search: function(handler) { + return this.trigger("search", [handler]); + }, + flushCache: function() { + return this.trigger("flushCache"); + }, + setOptions: function(options){ + return this.trigger("setOptions", [options]); + }, + unautocomplete: function() { + return this.trigger("unautocomplete"); + } +}); + +$.Autocompleter = function(input, options) { + + var KEY = { + UP: 38, + DOWN: 40, + DEL: 46, + TAB: 9, + RETURN: 13, + ESC: 27, + COMMA: 188, + PAGEUP: 33, + PAGEDOWN: 34 + }; + + // Create $ object for input element + var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass); + + var timeout; + var previousValue = ""; + var cache = $.Autocompleter.Cache(options); + var hasFocus = 0; + var lastKeyPressCode; + var config = { + mouseDownOnSelect: false + }; + var select = $.Autocompleter.Select(options, input, selectCurrent, config); + + $input.keydown(function(event) { + // track last key pressed + lastKeyPressCode = event.keyCode; + switch(event.keyCode) { + + case KEY.UP: + event.preventDefault(); + if ( select.visible() ) { + select.prev(); + } else { + onChange(0, true); + } + break; + + case KEY.DOWN: + event.preventDefault(); + if ( select.visible() ) { + select.next(); + } else { + onChange(0, true); + } + break; + + case KEY.PAGEUP: + event.preventDefault(); + if ( select.visible() ) { + select.pageUp(); + } else { + onChange(0, true); + } + break; + + case KEY.PAGEDOWN: + event.preventDefault(); + if ( select.visible() ) { + select.pageDown(); + } else { + onChange(0, true); + } + break; + + // matches also semicolon + case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA: + case KEY.TAB: + case KEY.RETURN: + if( selectCurrent() ){ + // make sure to blur off the current field + if( !options.multiple ) + $input.blur(); + event.preventDefault(); + $input.focus(); + } + break; + + case KEY.ESC: + select.hide(); + break; + + default: + clearTimeout(timeout); + timeout = setTimeout(onChange, options.delay); + break; + } + }).keypress(function() { + // having fun with opera - remove this binding and Opera submits the form when we select an entry via return + }).focus(function(){ + // track whether the field has focus, we shouldn't process any + // results if the field no longer has focus + hasFocus++; + }).blur(function() { + hasFocus = 0; + if (!config.mouseDownOnSelect) { + hideResults(); + } + }).click(function() { + // show select when clicking in a focused field + if ( hasFocus++ > 1 && !select.visible() ) { + onChange(0, true); + } + }).bind("search", function() { + // TODO why not just specifying both arguments? + var fn = (arguments.length > 1) ? arguments[1] : null; + function findValueCallback(q, data) { + var result; + if( data && data.length ) { + for (var i=0; i < data.length; i++) { + if( data[i].result.toLowerCase() == q.toLowerCase() ) { + result = data[i]; + break; + } + } + } + if( typeof fn == "function" ) fn(result); + else $input.trigger("result", result && [result.data, result.value]); + } + $.each(trimWords($input.val()), function(i, value) { + request(value, findValueCallback, findValueCallback); + }); + }).bind("flushCache", function() { + cache.flush(); + }).bind("setOptions", function() { + $.extend(options, arguments[1]); + // if we've updated the data, repopulate + if ( "data" in arguments[1] ) + cache.populate(); + }).bind("unautocomplete", function() { + select.unbind(); + $input.unbind(); + }); + + + function selectCurrent() { + var selected = select.selected(); + if( !selected ) + return false; + + var v = selected.result; + previousValue = v; + + if ( options.multiple ) { + var words = trimWords($input.val()); + if ( words.length > 1 ) { + v = words.slice(0, words.length - 1).join( options.multipleSeparator ) + options.multipleSeparator + v; + } + v += options.multipleSeparator; + } + + $input.val(v); + hideResultsNow(); + $input.trigger("result", [selected.data, selected.value]); + return true; + } + + function onChange(crap, skipPrevCheck) { + if( lastKeyPressCode == KEY.DEL ) { + select.hide(); + return; + } + + var currentValue = $input.val(); + + if ( !skipPrevCheck && currentValue == previousValue ) + return; + + previousValue = currentValue; + + currentValue = lastWord(currentValue); + if ( currentValue.length >= options.minChars) { + $input.addClass(options.loadingClass); + jQuery('#send-to-input').addClass('loading'); + if (!options.matchCase) + currentValue = currentValue.toLowerCase(); + request(currentValue, receiveData, hideResultsNow); + } else { + stopLoading(); + select.hide(); + } + }; + + function trimWords(value) { + if ( !value ) { + return [""]; + } + var words = value.split( $.trim( options.multipleSeparator ) ); + var result = []; + $.each(words, function(i, value) { + if ( $.trim(value) ) + result[i] = $.trim(value); + }); + return result; + } + + function lastWord(value) { + if ( !options.multiple ) + return value; + var words = trimWords(value); + return words[words.length - 1]; + } + + // fills in the input box w/the first match (assumed to be the best match) + function autoFill(q, sValue){ + // autofill in the complete box w/the first match as long as the user hasn't entered in more data + // if the last user key pressed was backspace, don't autofill + if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != 8 ) { + // fill in the value (keep the case the user has typed) + $input.val($input.val() + sValue.substring(lastWord(previousValue).length)); + // select the portion of the value not typed by the user (so the next character will erase) + $.Autocompleter.Selection(input, previousValue.length, previousValue.length + sValue.length); + } + }; + + function hideResults() { + clearTimeout(timeout); + timeout = setTimeout(hideResultsNow, 200); + }; + + function hideResultsNow() { + select.hide(); + clearTimeout(timeout); + stopLoading(); + if (options.mustMatch) { + // call search and run callback + $input.search( + function (result){ + // if no value found, clear the input box + if( !result ) $input.val(""); + } + ); + } + }; + + function receiveData(q, data) { + if ( data && data.length && hasFocus ) { + stopLoading(); + select.display(data, q); + + var newData = data[0].value.split(';'); + data.value = newData[0]; + + autoFill(q, data.value); + select.show(); + } else { + hideResultsNow(); + } + }; + + function request(term, success, failure) { + if (!options.matchCase) + term = term.toLowerCase(); + var data = cache.load(term); + // recieve the cached data + if (data && data.length) { + success(term, data); + // if an AJAX url has been supplied, try loading the data now + } else if( (typeof options.url == "string") && (options.url.length > 0) ){ + + var extraParams = {}; + $.each(options.extraParams, function(key, param) { + extraParams[key] = typeof param == "function" ? param() : param; + }); + + $.ajax({ + // try to leverage ajaxQueue plugin to abort previous requests + mode: "abort", + // limit abortion to this input + port: "autocomplete" + input.name, + dataType: options.dataType, + url: options.url, + data: $.extend({ + q: lastWord(term), + limit: options.max, + action: 'messages_autocomplete_results', + 'cookie': encodeURIComponent(document.cookie) + }, extraParams), + success: function(data) { + var parsed = options.parse && options.parse(data) || parse(data); + cache.add(term, parsed); + success(term, parsed); + } + }); + } else { + failure(term); + } + }; + + function parse(data) { + var parsed = []; + var rows = data.split("\n"); + for (var i=0; i < rows.length; i++) { + var row = $.trim(rows[i]); + if (row) { + row = row.split("|"); + parsed[parsed.length] = { + data: row, + value: row[0], + result: options.formatResult && options.formatResult(row, row[0]) || row[0] + }; + } + } + return parsed; + }; + + function stopLoading() { + $input.removeClass(options.loadingClass); + jQuery('#send-to-input').removeClass('loading'); + }; + +}; + +$.Autocompleter.defaults = { + inputClass: "ac_input", + resultsClass: "ac_results", + loadingClass: "ac_loading", + minChars: 1, + delay: 400, + matchCase: false, + matchSubset: true, + matchContains: false, + cacheLength: 10, + max: 100, + mustMatch: false, + extraParams: {}, + selectFirst: true, + formatItem: function(row) { return row[0]; }, + autoFill: false, + width: 0, + multiple: false, + multipleSeparator: ", ", + highlight: function(value, term) { + return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"); + }, + scroll: true, + scrollHeight: 250, + attachTo: 'body' +}; + +$.Autocompleter.Cache = function(options) { + + var data = {}; + var length = 0; + + function matchSubset(s, sub) { + if (!options.matchCase) + s = s.toLowerCase(); + var i = s.indexOf(sub); + if (i == -1) return false; + return i == 0 || options.matchContains; + }; + + function add(q, value) { + if (length > options.cacheLength){ + flush(); + } + if (!data[q]){ + length++; + } + data[q] = value; + } + + function populate(){ + if( !options.data ) return false; + // track the matches + var stMatchSets = {}, + nullData = 0; + + // no url was specified, we need to adjust the cache length to make sure it fits the local data store + if( !options.url ) options.cacheLength = 1; + + // track all options for minChars = 0 + stMatchSets[""] = []; + + // loop through the array and create a lookup structure + for ( var i = 0, ol = options.data.length; i < ol; i++ ) { + var rawValue = options.data[i]; + // if rawValue is a string, make an array otherwise just reference the array + rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue; + + var value = options.formatItem(rawValue, i+1, options.data.length); + if ( value === false ) + continue; + + var firstChar = value.charAt(0).toLowerCase(); + // if no lookup array for this character exists, look it up now + if( !stMatchSets[firstChar] ) + stMatchSets[firstChar] = []; + + // if the match is a string + var row = { + value: value, + data: rawValue, + result: options.formatResult && options.formatResult(rawValue) || value + }; + + // push the current match into the set list + stMatchSets[firstChar].push(row); + + // keep track of minChars zero items + if ( nullData++ < options.max ) { + stMatchSets[""].push(row); + } + }; + + // add the data items to the cache + $.each(stMatchSets, function(i, value) { + // increase the cache size + options.cacheLength++; + // add to the cache + add(i, value); + }); + } + + // populate any existing data + setTimeout(populate, 25); + + function flush(){ + data = {}; + length = 0; + } + + return { + flush: flush, + add: add, + populate: populate, + load: function(q) { + if (!options.cacheLength || !length) + return null; + /* + * if dealing w/local data and matchContains than we must make sure + * to loop through all the data collections looking for matches + */ + if( !options.url && options.matchContains ){ + // track all matches + var csub = []; + // loop through all the data grids for matches + for( var k in data ){ + // don't search through the stMatchSets[""] (minChars: 0) cache + // this prevents duplicates + if( k.length > 0 ){ + var c = data[k]; + $.each(c, function(i, x) { + // if we've got a match, add it to the array + if (matchSubset(x.value, q)) { + csub.push(x); + } + }); + } + } + return csub; + } else + // if the exact item exists, use it + if (data[q]){ + return data[q]; + } else + if (options.matchSubset) { + for (var i = q.length - 1; i >= options.minChars; i--) { + var c = data[q.substr(0, i)]; + if (c) { + var csub = []; + $.each(c, function(i, x) { + if (matchSubset(x.value, q)) { + csub[csub.length] = x; + } + }); + return csub; + } + } + } + return null; + } + }; +}; + +$.Autocompleter.Select = function (options, input, select, config) { + var CLASSES = { + ACTIVE: "ac_over" + }; + + var listItems, + active = -1, + data, + term = "", + needsInit = true, + element, + list; + + // Create results + function init() { + if (!needsInit) + return; + element = $("<div/>") + .hide() + .addClass(options.resultsClass) + .css("position", "absolute") + .appendTo(options.attachTo); + + list = $("<ul>").appendTo(element).mouseover( function(event) { + if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') { + active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event)); + $(target(event)).addClass(CLASSES.ACTIVE); + } + }).click(function(event) { + $(target(event)).addClass(CLASSES.ACTIVE); + select(); + input.focus(); + return false; + }).mousedown(function() { + config.mouseDownOnSelect = true; + }).mouseup(function() { + config.mouseDownOnSelect = false; + }); + + if( options.width > 0 ) + element.css("width", options.width); + + needsInit = false; + } + + function target(event) { + var element = event.target; + while(element && element.tagName != "LI") + element = element.parentNode; + // more fun with IE, sometimes event.target is empty, just ignore it then + if(!element) + return []; + return element; + } + + function moveSelect(step) { + listItems.slice(active, active + 1).removeClass(); + movePosition(step); + var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE); + if(options.scroll) { + var offset = 0; + listItems.slice(0, active).each(function() { + offset += this.offsetHeight; + }); + if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) { + list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight()); + } else if(offset < list.scrollTop()) { + list.scrollTop(offset); + } + } + }; + + function movePosition(step) { + active += step; + if (active < 0) { + active = listItems.size() - 1; + } else if (active >= listItems.size()) { + active = 0; + } + } + + function limitNumberOfItems(available) { + return options.max && options.max < available + ? options.max + : available; + } + + function fillList() { + list.empty(); + var max = limitNumberOfItems(data.length); + for (var i=0; i < max; i++) { + if (!data[i]) + continue; + var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term); + if ( formatted === false ) + continue; + var li = $("<li>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_event" : "ac_odd").appendTo(list)[0]; + $.data(li, "ac_data", data[i]); + } + listItems = list.find("li"); + if ( options.selectFirst ) { + listItems.slice(0, 1).addClass(CLASSES.ACTIVE); + active = 0; + } + list.bgiframe(); + } + + return { + display: function(d, q) { + init(); + data = d; + term = q; + fillList(); + }, + next: function() { + moveSelect(1); + }, + prev: function() { + moveSelect(-1); + }, + pageUp: function() { + if (active != 0 && active - 8 < 0) { + moveSelect( -active ); + } else { + moveSelect(-8); + } + }, + pageDown: function() { + if (active != listItems.size() - 1 && active + 8 > listItems.size()) { + moveSelect( listItems.size() - 1 - active ); + } else { + moveSelect(8); + } + }, + hide: function() { + element && element.hide(); + active = -1; + }, + visible : function() { + return element && element.is(":visible"); + }, + current: function() { + return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]); + }, + show: function() { + var offset = $(input).offset(); + element.css({ + width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(), + top: offset.top + input.offsetHeight, + left: offset.left + }).show(); + if(options.scroll) { + list.scrollTop(0); + list.css({ + maxHeight: options.scrollHeight, + overflow: 'auto' + }); + + if($.browser.msie && typeof document.body.style.maxHeight === "undefined") { + var listHeight = 0; + listItems.each(function() { + listHeight += this.offsetHeight; + }); + var scrollbarsVisible = listHeight > options.scrollHeight; + list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight ); + if (!scrollbarsVisible) { + // IE doesn't recalculate width when scrollbar disappears + listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) ); + } + } + + } + }, + selected: function() { + var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE); + return selected && selected.length && $.data(selected[0], "ac_data"); + }, + unbind: function() { + element && element.remove(); + } + }; +}; + +$.Autocompleter.Selection = function(field, start, end) { + if( field.createTextRange ){ + var selRange = field.createTextRange(); + selRange.collapse(true); + selRange.moveStart("character", start); + selRange.moveEnd("character", end); + selRange.select(); + } else if( field.setSelectionRange ){ + field.setSelectionRange(start, end); + } else { + if( field.selectionStart ){ + field.selectionStart = start; + field.selectionEnd = end; + } + } + field.focus(); +}; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocomplete.js b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocomplete.js new file mode 100644 index 0000000..4192cb7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocomplete.js @@ -0,0 +1,13 @@ +/* + * Autocomplete - jQuery plugin 1.0 Beta + * + * Copyright (c) 2007 Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.autocomplete.js 4485 2008-01-20 13:52:47Z joern.zaefferer $ + * + */ +(function(a){a.fn.extend({autocomplete:function(b,c){var d=typeof b=="string";c=a.extend({},a.Autocompleter.defaults,{url:d?b:null,data:d?null:b,delay:d?a.Autocompleter.defaults.delay:10,max:c&&!c.scroll?10:150},c);c.highlight=c.highlight||function(e){return e};return this.each(function(){new a.Autocompleter(this,c)})},result:function(b){return this.bind("result",b)},search:function(b){return this.trigger("search",[b])},flushCache:function(){return this.trigger("flushCache")},setOptions:function(b){return this.trigger("setOptions",[b])},unautocomplete:function(){return this.trigger("unautocomplete")}});a.Autocompleter=function(l,g){var c={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34};var b=a(l).attr("autocomplete","off").addClass(g.inputClass);var j;var p="";var m=a.Autocompleter.Cache(g);var e=0;var u;var w={mouseDownOnSelect:false};var r=a.Autocompleter.Select(g,l,d,w);b.keydown(function(x){u=x.keyCode;switch(x.keyCode){case c.UP:x.preventDefault();if(r.visible()){r.prev()}else{t(0,true)}break;case c.DOWN:x.preventDefault();if(r.visible()){r.next()}else{t(0,true)}break;case c.PAGEUP:x.preventDefault();if(r.visible()){r.pageUp()}else{t(0,true)}break;case c.PAGEDOWN:x.preventDefault();if(r.visible()){r.pageDown()}else{t(0,true)}break;case g.multiple&&a.trim(g.multipleSeparator)==","&&c.COMMA:case c.TAB:case c.RETURN:if(d()){if(!g.multiple){b.blur()}x.preventDefault();b.focus()}break;case c.ESC:r.hide();break;default:clearTimeout(j);j=setTimeout(t,g.delay);break}}).keypress(function(){}).focus(function(){e++}).blur(function(){e=0;if(!w.mouseDownOnSelect){s()}}).click(function(){if(e++>1&&!r.visible()){t(0,true)}}).bind("search",function(){var x=(arguments.length>1)?arguments[1]:null;function y(C,B){var z;if(B&&B.length){for(var A=0;A<B.length;A++){if(B[A].result.toLowerCase()==C.toLowerCase()){z=B[A];break}}}if(typeof x=="function"){x(z)}else{b.trigger("result",z&&[z.data,z.value])}}a.each(h(b.val()),function(z,A){f(A,y,y)})}).bind("flushCache",function(){m.flush()}).bind("setOptions",function(){a.extend(g,arguments[1]);if("data" in arguments[1]){m.populate()}}).bind("unautocomplete",function(){r.unbind();b.unbind()});function d(){var y=r.selected();if(!y){return false}var x=y.result;p=x;if(g.multiple){var z=h(b.val());if(z.length>1){x=z.slice(0,z.length-1).join(g.multipleSeparator)+g.multipleSeparator+x}x+=g.multipleSeparator}b.val(x);v();b.trigger("result",[y.data,y.value]);return true}function t(z,y){if(u==c.DEL){r.hide();return}var x=b.val();if(!y&&x==p){return}p=x;x=i(x);if(x.length>=g.minChars){b.addClass(g.loadingClass);jQuery("#send-to-input").addClass("loading");if(!g.matchCase){x=x.toLowerCase()}f(x,k,v)}else{n();r.hide()}}function h(y){if(!y){return[""]}var z=y.split(a.trim(g.multipleSeparator));var x=[];a.each(z,function(A,B){if(a.trim(B)){x[A]=a.trim(B)}});return x}function i(x){if(!g.multiple){return x}var y=h(x);return y[y.length-1]}function q(x,y){if(g.autoFill&&(i(b.val()).toLowerCase()==x.toLowerCase())&&u!=8){b.val(b.val()+y.substring(i(p).length));a.Autocompleter.Selection(l,p.length,p.length+y.length)}}function s(){clearTimeout(j);j=setTimeout(v,200)}function v(){r.hide();clearTimeout(j);n();if(g.mustMatch){b.search(function(x){if(!x){b.val("")}})}}function k(z,y){if(y&&y.length&&e){n();r.display(y,z);var x=y[0].value.split(";");y.value=x[0];q(z,y.value);r.show()}else{v()}}function f(y,A,x){if(!g.matchCase){y=y.toLowerCase()}var z=m.load(y);if(z&&z.length){A(y,z)}else{if((typeof g.url=="string")&&(g.url.length>0)){var B={};a.each(g.extraParams,function(C,D){B[C]=typeof D=="function"?D():D});a.ajax({mode:"abort",port:"autocomplete"+l.name,dataType:g.dataType,url:g.url,data:a.extend({q:i(y),limit:g.max,action:"messages_autocomplete_results",cookie:encodeURIComponent(document.cookie)},B),success:function(D){var C=g.parse&&g.parse(D)||o(D);m.add(y,C);A(y,C)}})}else{x(y)}}}function o(A){var x=[];var z=A.split("\n");for(var y=0;y<z.length;y++){var B=a.trim(z[y]);if(B){B=B.split("|");x[x.length]={data:B,value:B[0],result:g.formatResult&&g.formatResult(B,B[0])||B[0]}}}return x}function n(){b.removeClass(g.loadingClass);jQuery("#send-to-input").removeClass("loading")}};a.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(b){return b[0]},autoFill:false,width:0,multiple:false,multipleSeparator:", ",highlight:function(c,b){return c.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>")},scroll:true,scrollHeight:250,attachTo:"body"};a.Autocompleter.Cache=function(c){var f={};var d=0;function h(l,k){if(!c.matchCase){l=l.toLowerCase()}var j=l.indexOf(k);if(j==-1){return false}return j==0||c.matchContains}function g(j,i){if(d>c.cacheLength){b()}if(!f[j]){d++}f[j]=i}function e(){if(!c.data){return false}var k={},j=0;if(!c.url){c.cacheLength=1}k[""]=[];for(var m=0,l=c.data.length;m<l;m++){var p=c.data[m];p=(typeof p=="string")?[p]:p;var o=c.formatItem(p,m+1,c.data.length);if(o===false){continue}var n=o.charAt(0).toLowerCase();if(!k[n]){k[n]=[]}var q={value:o,data:p,result:c.formatResult&&c.formatResult(p)||o};k[n].push(q);if(j++<c.max){k[""].push(q)}}a.each(k,function(r,s){c.cacheLength++;g(r,s)})}setTimeout(e,25);function b(){f={};d=0}return{flush:b,add:g,populate:e,load:function(n){if(!c.cacheLength||!d){return null}if(!c.url&&c.matchContains){var m=[];for(var j in f){if(j.length>0){var o=f[j];a.each(o,function(p,k){if(h(k.value,n)){m.push(k)}})}}return m}else{if(f[n]){return f[n]}else{if(c.matchSubset){for(var l=n.length-1;l>=c.minChars;l--){var o=f[n.substr(0,l)];if(o){var m=[];a.each(o,function(p,k){if(h(k.value,n)){m[m.length]=k}});return m}}}}}return null}}};a.Autocompleter.Select=function(e,j,l,p){var i={ACTIVE:"ac_over"};var k,f=-1,r,m="",s=true,c,o;function n(){if(!s){return}c=a("<div/>").hide().addClass(e.resultsClass).css("position","absolute").appendTo(e.attachTo);o=a("<ul>").appendTo(c).mouseover(function(t){if(q(t).nodeName&&q(t).nodeName.toUpperCase()=="LI"){f=a("li",o).removeClass(i.ACTIVE).index(q(t));a(q(t)).addClass(i.ACTIVE)}}).click(function(t){a(q(t)).addClass(i.ACTIVE);l();j.focus();return false}).mousedown(function(){p.mouseDownOnSelect=true}).mouseup(function(){p.mouseDownOnSelect=false});if(e.width>0){c.css("width",e.width)}s=false}function q(u){var t=u.target;while(t&&t.tagName!="LI"){t=t.parentNode}if(!t){return[]}return t}function h(t){k.slice(f,f+1).removeClass();g(t);var v=k.slice(f,f+1).addClass(i.ACTIVE);if(e.scroll){var u=0;k.slice(0,f).each(function(){u+=this.offsetHeight});if((u+v[0].offsetHeight-o.scrollTop())>o[0].clientHeight){o.scrollTop(u+v[0].offsetHeight-o.innerHeight())}else{if(u<o.scrollTop()){o.scrollTop(u)}}}}function g(t){f+=t;if(f<0){f=k.size()-1}else{if(f>=k.size()){f=0}}}function b(t){return e.max&&e.max<t?e.max:t}function d(){o.empty();var u=b(r.length);for(var v=0;v<u;v++){if(!r[v]){continue}var w=e.formatItem(r[v].data,v+1,u,r[v].value,m);if(w===false){continue}var t=a("<li>").html(e.highlight(w,m)).addClass(v%2==0?"ac_event":"ac_odd").appendTo(o)[0];a.data(t,"ac_data",r[v])}k=o.find("li");if(e.selectFirst){k.slice(0,1).addClass(i.ACTIVE);f=0}o.bgiframe()}return{display:function(u,t){n();r=u;m=t;d()},next:function(){h(1)},prev:function(){h(-1)},pageUp:function(){if(f!=0&&f-8<0){h(-f)}else{h(-8)}},pageDown:function(){if(f!=k.size()-1&&f+8>k.size()){h(k.size()-1-f)}else{h(8)}},hide:function(){c&&c.hide();f=-1},visible:function(){return c&&c.is(":visible")},current:function(){return this.visible()&&(k.filter("."+i.ACTIVE)[0]||e.selectFirst&&k[0])},show:function(){var v=a(j).offset();c.css({width:typeof e.width=="string"||e.width>0?e.width:a(j).width(),top:v.top+j.offsetHeight,left:v.left}).show();if(e.scroll){o.scrollTop(0);o.css({maxHeight:e.scrollHeight,overflow:"auto"});if(a.browser.msie&&typeof document.body.style.maxHeight==="undefined"){var t=0;k.each(function(){t+=this.offsetHeight});var u=t>e.scrollHeight;o.css("height",u?e.scrollHeight:t);if(!u){k.width(o.width()-parseInt(k.css("padding-left"))-parseInt(k.css("padding-right")))}}}},selected:function(){var t=k&&k.filter("."+i.ACTIVE).removeClass(i.ACTIVE);return t&&t.length&&a.data(t[0],"ac_data")},unbind:function(){c&&c.remove()}}};a.Autocompleter.Selection=function(d,e,c){if(d.createTextRange){var b=d.createTextRange();b.collapse(true);b.moveStart("character",e);b.moveEnd("character",c);b.select()}else{if(d.setSelectionRange){d.setSelectionRange(e,c)}else{if(d.selectionStart){d.selectionStart=e;d.selectionEnd=c}}}d.focus()}})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocompletefb.dev.js b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocompletefb.dev.js new file mode 100644 index 0000000..df125ea --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocompletefb.dev.js @@ -0,0 +1,76 @@ +/*! + * jQuery plugin: autoCompletefb(AutoComplete Facebook) + * @requires jQuery v1.2.2 or later + * using plugin:jquery.autocomplete.js + * + * Credits: + * - Idea: Facebook + * - Guillermo Rauch: Original MooTools script + * - InteRiders <http://interiders.com/> + * + * Copyright (c) 2008 Widi Harsojo <wharsojo@gmail.com>, http://wharsojo.wordpress.com/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ + +jQuery.fn.autoCompletefb = function(options) +{ + var tmp = this; + var settings = + { + ul : tmp, + urlLookup : [""], + acOptions : {}, + foundClass : ".friend-tab", + inputClass : ".send-to-input" + } + + if(options) jQuery.extend(settings, options); + + var acfb = + { + params : settings, + removeFind : function(o){ + acfb.removeUsername(o); + jQuery(o).unbind('click').parent().remove(); + jQuery(settings.inputClass,tmp).focus(); + return tmp.acfb; + }, + removeUsername: function(o){ + var newID = o.parentNode.id.split('-'); + jQuery('#send-to-usernames').removeClass(newID[1]); + } + } + + jQuery(settings.foundClass+" img.p").click(function(){ + acfb.removeFind(this); + }); + + jQuery(settings.inputClass,tmp).autocomplete(settings.urlLookup,settings.acOptions); + jQuery(settings.inputClass,tmp).result(function(e,d,f){ + var f = settings.foundClass.replace(/\./,''); + var d = String(d).split(' ('); + var un = d[1].substr(0, d[1].length-1); + + /* Don't add the same user multiple times */ + if( 0 === jQuery(settings.inputClass).siblings('#un-' + un).length ) { + var ln = '#link-' + un; + var l = jQuery(ln).attr('href'); + var v = '<li class="'+f+'" id="un-'+un+'"><span><a href="'+l+'">'+d[0]+'</a></span> <span class="p">X</span></li>'; + + var x = jQuery(settings.inputClass,tmp).before(v); + jQuery('#send-to-usernames').addClass(un); + + jQuery('.p',x[0].previousSibling).click(function(){ + acfb.removeFind(this); + }); + } + + jQuery(settings.inputClass,tmp).val(''); + + }); + + jQuery(settings.inputClass,tmp).focus(); + return acfb; +} diff --git a/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocompletefb.js b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocompletefb.js new file mode 100644 index 0000000..c8c92e8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.autocompletefb.js @@ -0,0 +1,16 @@ +/* + * jQuery plugin: autoCompletefb(AutoComplete Facebook) + * @requires jQuery v1.2.2 or later + * using plugin:jquery.autocomplete.js + * + * Credits: + * - Idea: Facebook + * - Guillermo Rauch: Original MooTools script + * - InteRiders <http://interiders.com/> + * + * Copyright (c) 2008 Widi Harsojo <wharsojo@gmail.com>, http://wharsojo.wordpress.com/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ +jQuery.fn.autoCompletefb=function(b){var c=this;var d={ul:c,urlLookup:[""],acOptions:{},foundClass:".friend-tab",inputClass:".send-to-input"};if(b){jQuery.extend(d,b)}var a={params:d,removeFind:function(e){a.removeUsername(e);jQuery(e).unbind("click").parent().remove();jQuery(d.inputClass,c).focus();return c.acfb},removeUsername:function(f){var e=f.parentNode.id.split("-");jQuery("#send-to-usernames").removeClass(e[1])}};jQuery(d.foundClass+" img.p").click(function(){a.removeFind(this)});jQuery(d.inputClass,c).autocomplete(d.urlLookup,d.acOptions);jQuery(d.inputClass,c).result(function(n,o,m){var m=d.foundClass.replace(/\./,"");var o=String(o).split(" (");var j=o[1].substr(0,o[1].length-1);if(0===jQuery(d.inputClass).siblings("#un-"+j).length){var k="#link-"+j;var h=jQuery(k).attr("href");var i='<li class="'+m+'" id="un-'+j+'"><span><a href="'+h+'">'+o[0]+'</a></span> <span class="p">X</span></li>';var g=jQuery(d.inputClass,c).before(i);jQuery("#send-to-usernames").addClass(j);jQuery(".p",g[0].previousSibling).click(function(){a.removeFind(this)})}jQuery(d.inputClass,c).val("")});jQuery(d.inputClass,c).focus();return a}; \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.bgiframe.dev.js b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.bgiframe.dev.js new file mode 100644 index 0000000..ef2a9e2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.bgiframe.dev.js @@ -0,0 +1,39 @@ +/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) + * Licensed under the MIT License (license.bgiframe.txt). + * + * Version 2.1.2 + */ + +(function($){ + +$.fn.bgiframe = ($.browser.msie && /msie 6\.0/i.test(navigator.userAgent) ? function(s) { + s = $.extend({ + top : 'auto', // auto == .currentStyle.borderTopWidth + left : 'auto', // auto == .currentStyle.borderLeftWidth + width : 'auto', // auto == offsetWidth + height : 'auto', // auto == offsetHeight + opacity : true, + src : 'javascript:false;' + }, s); + var html = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+ + 'style="display:block;position:absolute;z-index:-1;'+ + (s.opacity !== false?'filter:Alpha(Opacity=\'0\');':'')+ + 'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+ + 'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+ + 'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+ + 'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+ + '"/>'; + return this.each(function() { + if ( $(this).children('iframe.bgiframe').length === 0 ) + this.insertBefore( document.createElement(html), this.firstChild ); + }); +} : function() { return this; }); + +// old alias +$.fn.bgIframe = $.fn.bgiframe; + +function prop(n) { + return n && n.constructor === Number ? n + 'px' : n; +} + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.bgiframe.js b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.bgiframe.js new file mode 100644 index 0000000..e54882f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.bgiframe.js @@ -0,0 +1,6 @@ +/* Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) + * Licensed under the MIT License (license.bgiframe.txt). + * + * Version 2.1.2 + */ +(function(a){a.fn.bgiframe=(a.browser.msie&&/msie 6\.0/i.test(navigator.userAgent)?function(d){d=a.extend({top:"auto",left:"auto",width:"auto",height:"auto",opacity:true,src:"javascript:false;"},d);var c='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+d.src+'"style="display:block;position:absolute;z-index:-1;'+(d.opacity!==false?"filter:Alpha(Opacity='0');":"")+"top:"+(d.top=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')":b(d.top))+";left:"+(d.left=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')":b(d.left))+";width:"+(d.width=="auto"?"expression(this.parentNode.offsetWidth+'px')":b(d.width))+";height:"+(d.height=="auto"?"expression(this.parentNode.offsetHeight+'px')":b(d.height))+';"/>';return this.each(function(){if(a(this).children("iframe.bgiframe").length===0){this.insertBefore(document.createElement(c),this.firstChild)}})}:function(){return this});a.fn.bgIframe=a.fn.bgiframe;function b(c){return c&&c.constructor===Number?c+"px":c}})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.dimensions.dev.js b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.dimensions.dev.js new file mode 100644 index 0000000..544c918 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.dimensions.dev.js @@ -0,0 +1,117 @@ +/*! + * Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + * $LastChangedDate: 2007-09-11 05:38:31 +0300 (Ð’Ñ‚, 11 Ñен 2007) $ + * $Rev: 3238 $ + * + * Version: @VERSION + * + * Requires: jQuery 1.2+ + */ + +(function($){ + +$.dimensions = { + version: '@VERSION' +}; + +// Create innerHeight, innerWidth, outerHeight and outerWidth methods +$.each( [ 'Height', 'Width' ], function(i, name){ + + // innerHeight and innerWidth + $.fn[ 'inner' + name ] = function() { + if (!this[0]) return; + + var torl = name == 'Height' ? 'Top' : 'Left', // top or left + borr = name == 'Height' ? 'Bottom' : 'Right'; // bottom or right + + return this[ name.toLowerCase() ]() + num(this, 'padding' + torl) + num(this, 'padding' + borr); + }; + + // outerHeight and outerWidth + $.fn[ 'outer' + name ] = function(options) { + if (!this[0]) return; + + var torl = name == 'Height' ? 'Top' : 'Left', // top or left + borr = name == 'Height' ? 'Bottom' : 'Right'; // bottom or right + + options = $.extend({ margin: false }, options || {}); + + return this[ name.toLowerCase() ]() + + num(this, 'border' + torl + 'Width') + num(this, 'border' + borr + 'Width') + + num(this, 'padding' + torl) + num(this, 'padding' + borr) + + (options.margin ? (num(this, 'margin' + torl) + num(this, 'margin' + borr)) : 0); + }; +}); + +// Create scrollLeft and scrollTop methods +$.each( ['Left', 'Top'], function(i, name) { + $.fn[ 'scroll' + name ] = function(val) { + if (!this[0]) return; + + return val != undefined ? + + // Set the scroll offset + this.each(function() { + this == window || this == document ? + window.scrollTo( + name == 'Left' ? val : $(window)[ 'scrollLeft' ](), + name == 'Top' ? val : $(window)[ 'scrollTop' ]() + ) : + this[ 'scroll' + name ] = val; + }) : + + // Return the scroll offset + this[0] == window || this[0] == document ? + self[ (name == 'Left' ? 'pageXOffset' : 'pageYOffset') ] || + $.boxModel && document.documentElement[ 'scroll' + name ] || + document.body[ 'scroll' + name ] : + this[0][ 'scroll' + name ]; + }; +}); + +$.fn.extend({ + position: function() { + var left = 0, top = 0, elem = this[0], offset, parentOffset, offsetParent, results; + + if (elem) { + // Get *real* offsetParent + offsetParent = this.offsetParent(); + + // Get correct offsets + offset = this.offset(); + parentOffset = offsetParent.offset(); + + // Subtract element margins + offset.top -= num(elem, 'marginTop'); + offset.left -= num(elem, 'marginLeft'); + + // Add offsetParent borders + parentOffset.top += num(offsetParent, 'borderTopWidth'); + parentOffset.left += num(offsetParent, 'borderLeftWidth'); + + // Subtract the two offsets + results = { + top: offset.top - parentOffset.top, + left: offset.left - parentOffset.left + }; + } + + return results; + }, + + offsetParent: function() { + var offsetParent = this[0].offsetParent; + while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && $.css(offsetParent, 'position') == 'static') ) + offsetParent = offsetParent.offsetParent; + return $(offsetParent); + } +}); + +var num = function(el, prop) { + return parseInt($.css(el.jquery?el[0]:el,prop))||0; +}; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.dimensions.js b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.dimensions.js new file mode 100644 index 0000000..024853f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/jquery.dimensions.js @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + * $LastChangedDate: 2007-09-11 05:38:31 +0300 (Ð’Ñ‚, 11 Ñен 2007) $ + * $Rev: 3238 $ + * + * Version: @VERSION + * + * Requires: jQuery 1.2+ + */ +(function(b){b.dimensions={version:"@VERSION"};b.each(["Height","Width"],function(d,c){b.fn["inner"+c]=function(){if(!this[0]){return}var f=c=="Height"?"Top":"Left",e=c=="Height"?"Bottom":"Right";return this[c.toLowerCase()]()+a(this,"padding"+f)+a(this,"padding"+e)};b.fn["outer"+c]=function(f){if(!this[0]){return}var g=c=="Height"?"Top":"Left",e=c=="Height"?"Bottom":"Right";f=b.extend({margin:false},f||{});return this[c.toLowerCase()]()+a(this,"border"+g+"Width")+a(this,"border"+e+"Width")+a(this,"padding"+g)+a(this,"padding"+e)+(f.margin?(a(this,"margin"+g)+a(this,"margin"+e)):0)}});b.each(["Left","Top"],function(d,c){b.fn["scroll"+c]=function(e){if(!this[0]){return}return e!=undefined?this.each(function(){this==window||this==document?window.scrollTo(c=="Left"?e:b(window)["scrollLeft"](),c=="Top"?e:b(window)["scrollTop"]()):this["scroll"+c]=e}):this[0]==window||this[0]==document?self[(c=="Left"?"pageXOffset":"pageYOffset")]||b.boxModel&&document.documentElement["scroll"+c]||document.body["scroll"+c]:this[0]["scroll"+c]}});b.fn.extend({position:function(){var h=0,g=0,f=this[0],i,c,e,d;if(f){e=this.offsetParent();i=this.offset();c=e.offset();i.top-=a(f,"marginTop");i.left-=a(f,"marginLeft");c.top+=a(e,"borderTopWidth");c.left+=a(e,"borderLeftWidth");d={top:i.top-c.top,left:i.left-c.left}}return d},offsetParent:function(){var c=this[0].offsetParent;while(c&&(!/^body|html$/i.test(c.tagName)&&b.css(c,"position")=="static")){c=c.offsetParent}return b(c)}});var a=function(c,d){return parseInt(b.css(c.jquery?c[0]:c,d))||0}})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/js/autocomplete/license.bgiframe.txt b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/license.bgiframe.txt new file mode 100644 index 0000000..74c5970 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/js/autocomplete/license.bgiframe.txt @@ -0,0 +1,20 @@ +Copyright 2010, Brandon Aaron (http://brandonaaron.net/) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-settings/bp-settings-actions.php b/wp-content/plugins/buddypress/bp-settings/bp-settings-actions.php new file mode 100644 index 0000000..71b6505 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/bp-settings-actions.php @@ -0,0 +1,264 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** General *******************************************************************/ + +/** + * Handles the changing and saving of user email addressos and passwords + * + * We do quite a bit of logic and error handling here to make sure that users + * do not accidentally lock themselves out of their accounts. We also try to + * provide as accurate of feedback as possible without exposing anyone else's + * inforation to them. + * + * Special considerations are made for super admins that are able to edit any + * users accounts already, without knowing their existing password. + * + * @global BuddyPress $bp + * @return If no reason to proceed + */ +function bp_core_screen_general_settings() { + global $bp; + + // 404 if there are any additional action variables attached + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + /** Handle Form ***********************************************************/ + + if ( 'POST' === strtoupper( $_SERVER['REQUEST_METHOD'] ) ) { + + // Bail if not in settings + if ( ! bp_is_settings_component() || ! bp_is_current_action( 'general' ) ) + return; + + // Define local defaults + $email_error = false; // invalid|blocked|taken|empty|false + $pass_error = false; // invalid|mismatch|empty|false + $pass_changed = false; // true if the user changes their password + $email_changed = false; // true if the user changes their email + $feedback_type = 'error'; // success|error + $feedback = array(); // array of strings for feedback + + // Nonce check + check_admin_referer('bp_settings_general'); + + // Validate the user again for the current password when making a big change + if ( ( is_super_admin() ) || ( !empty( $_POST['pwd'] ) && wp_check_password( $_POST['pwd'], $bp->displayed_user->userdata->user_pass, bp_displayed_user_id() ) ) ) { + + $update_user = get_userdata( bp_displayed_user_id() ); + + /** Email Change Attempt ******************************************/ + + if ( !empty( $_POST['email'] ) ) { + + // What is missing from the profile page vs signup - lets double check the goodies + $user_email = sanitize_email( esc_html( trim( $_POST['email'] ) ) ); + + // User is changing email address + if ( $bp->displayed_user->userdata->user_email != $user_email ) { + + // Is email valid + if ( !is_email( $user_email ) ) + $email_error = 'invalid'; + + // Get blocked email domains + $limited_email_domains = get_site_option( 'limited_email_domains', 'buddypress' ); + + // If blocked email domains exist, see if this is one of them + if ( is_array( $limited_email_domains ) && empty( $limited_email_domains ) == false ) { + $emaildomain = substr( $user_email, 1 + strpos( $user_email, '@' ) ); + + if ( in_array( $emaildomain, (array) $limited_email_domains ) == false ) { + $email_error = 'blocked'; + } + } + + // No errors, and email address doesn't match + if ( ( false === $email_error ) && email_exists( $user_email ) ) { + $email_error = 'taken'; + } + + // Yay we made it! + if ( false === $email_error ) { + $update_user->user_email = $user_email; + $email_changed = true; + } + + // No change + } else { + $email_error = false; + } + + // Email address cannot be empty + } else { + $email_error = 'empty'; + } + + /** Password Change Attempt ***************************************/ + + if ( !empty( $_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) { + + // Password change attempt is successful + if ( ( $_POST['pass1'] == $_POST['pass2'] ) && !strpos( " " . $_POST['pass1'], "\\" ) ) { + $update_user->user_pass = $_POST['pass1']; + $pass_changed = true; + + // Password change attempt was unsuccessful + } else { + $pass_error = 'mismatch'; + } + + // Both password fields were empty + } elseif ( empty( $_POST['pass1'] ) && empty( $_POST['pass2'] ) ) { + $pass_error = false; + + // One of the password boxes was left empty + } elseif ( ( empty( $_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) || ( !empty( $_POST['pass1'] ) && empty( $_POST['pass2'] ) ) ) { + $pass_error = 'empty'; + } + + // The structure of the $update_user object changed in WP 3.3, but + // wp_update_user() still expects the old format + if ( isset( $update_user->data ) && is_object( $update_user->data ) ) { + $update_user = $update_user->data; + $update_user = get_object_vars( $update_user ); + + // Unset the password field to prevent it from emptying out the + // user's user_pass field in the database. + // @see wp_update_user() + if ( false === $pass_changed ) { + unset( $update_user['user_pass'] ); + } + } + + // Make sure these changes are in $bp for the current page load + if ( ( false === $email_error ) && ( false === $pass_error ) && ( wp_update_user( $update_user ) ) ) { + $bp->displayed_user->userdata = bp_core_get_core_userdata( bp_displayed_user_id() ); + } + + // Password Error + } else { + $pass_error = 'invalid'; + } + + // Email feedback + switch ( $email_error ) { + case 'invalid' : + $feedback['email_invalid'] = __( 'That email address is invalid. Check the formatting and try again.', 'buddypress' ); + break; + case 'blocked' : + $feedback['email_blocked'] = __( 'That email address is currently unavailable for use.', 'buddypress' ); + break; + case 'taken' : + $feedback['email_taken'] = __( 'That email address is already taken.', 'buddypress' ); + break; + case 'empty' : + $feedback['email_empty'] = __( 'Email address cannot be empty.', 'buddypress' ); + break; + case false : + // No change + break; + } + + // Password feedback + switch ( $pass_error ) { + case 'invalid' : + $feedback['pass_error'] = __( 'Your current password is invalid.', 'buddypress' ); + break; + case 'mismatch' : + $feedback['pass_mismatch'] = __( 'The new password fields did not match.', 'buddypress' ); + break; + case 'empty' : + $feedback['pass_empty'] = __( 'One of the password fields was empty.', 'buddypress' ); + break; + case false : + // No change + break; + } + + // No errors so show a simple success message + if ( ( ( false === $email_error ) || ( false == $pass_error ) ) && ( ( true === $pass_changed ) || ( true === $email_changed ) ) ) { + $feedback[] = __( 'Your settings have been saved.', 'buddypress' ); + $feedback_type = 'success'; + + // Some kind of errors occurred + } elseif ( ( ( false === $email_error ) || ( false === $pass_error ) ) && ( ( false === $pass_changed ) || ( false === $email_changed ) ) ) { + if ( bp_is_my_profile() ) { + $feedback['nochange'] = __( 'No changes were made to your account.', 'buddypress' ); + } else { + $feedback['nochange'] = __( 'No changes were made to this account.', 'buddypress' ); + } + } + + // Set the feedback + bp_core_add_message( implode( '</p><p>', $feedback ), $feedback_type ); + + // Execute additional code + do_action( 'bp_core_general_settings_after_save' ); + + // Redirect to prevent issues with browser back button + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_settings_slug() . '/general' ) ); + + // Load the template + } else { + bp_core_load_template( apply_filters( 'bp_core_screen_general_settings', 'members/single/settings/general' ) ); + } +} + +/** Notifications *************************************************************/ + +function bp_core_screen_notification_settings() { + global $bp; + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + if ( isset( $_POST['submit'] ) ) { + check_admin_referer('bp_settings_notifications'); + + if ( isset( $_POST['notifications'] ) ) { + foreach ( (array)$_POST['notifications'] as $key => $value ) { + if ( $meta_key = bp_get_user_meta_key( $key ) ) + bp_update_user_meta( (int)$bp->displayed_user->id, $meta_key, $value ); + } + } + + bp_core_add_message( __( 'Changes saved.', 'buddypress' ), 'success' ); + + do_action( 'bp_core_notification_settings_after_save' ); + } + + bp_core_load_template( apply_filters( 'bp_core_screen_notification_settings', 'members/single/settings/notifications' ) ); +} + +/** Delete Account ************************************************************/ + +function bp_core_screen_delete_account() { + global $bp; + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + if ( isset( $_POST['delete-account-understand'] ) ) { + // Nonce check + check_admin_referer( 'delete-account' ); + + // delete the users account + if ( bp_core_delete_account( $bp->displayed_user->id ) ) { + bp_core_redirect( home_url() ); + } + } + + // Load the template + bp_core_load_template( apply_filters( 'bp_core_screen_delete_account', 'members/single/settings/delete-account' ) ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-settings/bp-settings-functions.php b/wp-content/plugins/buddypress/bp-settings/bp-settings-functions.php new file mode 100644 index 0000000..9b66e1b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/bp-settings-functions.php @@ -0,0 +1,4 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-settings/bp-settings-loader.php b/wp-content/plugins/buddypress/bp-settings/bp-settings-loader.php new file mode 100644 index 0000000..7f72615 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/bp-settings-loader.php @@ -0,0 +1,187 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +class BP_Settings_Component extends BP_Component { + + /** + * Start the settings component creation process + * + * @since 1.5 + */ + function __construct() { + parent::start( + 'settings', + __( 'Settings', 'buddypress' ), + BP_PLUGIN_DIR + ); + } + + /** + * Include files + * + * @global obj $bp + */ + function includes() { + // Files to include + $includes = array( + 'actions', + 'screens', + 'template', + 'functions', + ); + + parent::includes( $includes ); + } + + /** + * Setup globals + * + * The BP_SETTINGS_SLUG constant is deprecated, and only used here for + * backwards compatibility. + * + * @since 1.5 + * @global obj $bp + */ + function setup_globals() { + global $bp; + + // Define a slug, if necessary + if ( !defined( 'BP_SETTINGS_SLUG' ) ) + define( 'BP_SETTINGS_SLUG', $this->id ); + + // All globals for settings component. + $globals = array( + 'slug' => BP_SETTINGS_SLUG, + 'has_directory' => false, + ); + + parent::setup_globals( $globals ); + } + + /** + * Setup BuddyBar navigation + * + * @global obj $bp + */ + function setup_nav() { + global $bp; + + // Add the settings navigation item + $main_nav = array( + 'name' => __( 'Settings', 'buddypress' ), + 'slug' => $this->slug, + 'position' => 100, + 'show_for_displayed_user' => bp_core_can_edit_settings(), + 'screen_function' => 'bp_core_screen_general_settings', + 'default_subnav_slug' => 'general' + ); + + // Determine user to use + if ( isset( $bp->displayed_user->domain ) ) + $user_domain = $bp->displayed_user->domain; + elseif ( isset( $bp->loggedin_user->domain ) ) + $user_domain = $bp->loggedin_user->domain; + else + return; + + $settings_link = trailingslashit( $user_domain . $this->slug ); + + // Add General Settings nav item + $sub_nav[] = array( + 'name' => __( 'General', 'buddypress' ), + 'slug' => 'general', + 'parent_url' => $settings_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_core_screen_general_settings', + 'position' => 10, + 'user_has_access' => bp_core_can_edit_settings() + ); + + // Add Notifications nav item + $sub_nav[] = array( + 'name' => __( 'Notifications', 'buddypress' ), + 'slug' => 'notifications', + 'parent_url' => $settings_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_core_screen_notification_settings', + 'position' => 20, + 'user_has_access' => bp_core_can_edit_settings() + ); + + // Add Delete Account nav item + if ( !is_super_admin() && empty( $bp->site_options['bp-disable-account-deletion'] ) ) { + $sub_nav[] = array( + 'name' => __( 'Delete Account', 'buddypress' ), + 'slug' => 'delete-account', + 'parent_url' => $settings_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'bp_core_screen_delete_account', + 'position' => 90, + 'user_has_access' => bp_is_my_profile() + ); + } + + parent::setup_nav( $main_nav, $sub_nav ); + } + + /** + * Set up the admin bar + * + * @global obj $bp + */ + function setup_admin_bar() { + global $bp; + + // Prevent debug notices + $wp_admin_nav = array(); + + // Menus for logged in user + if ( is_user_logged_in() ) { + + // Setup the logged in user variables + $user_domain = $bp->loggedin_user->domain; + $settings_link = trailingslashit( $user_domain . $this->slug ); + + // Add main Settings menu + $wp_admin_nav[] = array( + 'parent' => $bp->my_account_menu_id, + 'id' => 'my-account-' . $this->id, + 'title' => __( 'Settings', 'buddypress' ), + 'href' => trailingslashit( $settings_link ) + ); + + // General Account + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-general', + 'title' => __( 'General', 'buddypress' ), + 'href' => trailingslashit( $settings_link . 'general' ) + ); + + // Notifications + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-notifications', + 'title' => __( 'Notifications', 'buddypress' ), + 'href' => trailingslashit( $settings_link . 'notifications' ) + ); + + // Delete Account + if ( !is_super_admin() && empty( $bp->site_options['bp-disable-account-deletion'] ) ) { + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-delete-account', + 'title' => __( 'Delete Account', 'buddypress' ), + 'href' => trailingslashit( $settings_link . 'delete-account' ) + ); + } + } + + parent::setup_admin_bar( $wp_admin_nav ); + } +} +// Create the settingss component +$bp->settings = new BP_Settings_Component(); + +?> diff --git a/wp-content/plugins/buddypress/bp-settings/bp-settings-screens.php b/wp-content/plugins/buddypress/bp-settings/bp-settings-screens.php new file mode 100644 index 0000000..9b66e1b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/bp-settings-screens.php @@ -0,0 +1,4 @@ +<?php +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-settings/bp-settings-template.php b/wp-content/plugins/buddypress/bp-settings/bp-settings-template.php new file mode 100644 index 0000000..7303775 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/bp-settings-template.php @@ -0,0 +1,60 @@ +<?php +/** + * BuddyPress Settings Template Functions + * + * @package BuddyPress + * @subpackage Settings Template + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Output the settings component slug + * + * @package BuddyPress + * @subpackage Settings Template + * @since 1.5 + * + * @uses bp_get_settings_slug() + */ +function bp_settings_slug() { + echo bp_get_settings_slug(); +} + /** + * Return the settings component slug + * + * @package BuddyPress + * @subpackage Settings Template + * @since 1.5 + */ + function bp_get_settings_slug() { + global $bp; + return apply_filters( 'bp_get_settings_slug', $bp->settings->slug ); + } + +/** + * Output the settings component root slug + * + * @package BuddyPress + * @subpackage Settings Template + * @since 1.5 + * + * @uses bp_get_settings_root_slug() + */ +function bp_settings_root_slug() { + echo bp_get_settings_root_slug(); +} + /** + * Return the settings component root slug + * + * @package BuddyPress + * @subpackage Settings Template + * @since 1.5 + */ + function bp_get_settings_root_slug() { + global $bp; + return apply_filters( 'bp_get_settings_root_slug', $bp->settings->root_slug ); + } + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/404.php b/wp-content/plugins/buddypress/bp-themes/bp-default/404.php new file mode 100644 index 0000000..bba9b09 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/404.php @@ -0,0 +1,19 @@ +<?php get_header() ?> + + <div id="content"> + <div class="padder one-column"> + <?php do_action( 'bp_before_404' ); ?> + <div id="post-0" class="post page-404 error404 not-found" role="main"> + <h2 class="posttitle"><?php _e( "Page not found", 'buddypress' ); ?></h2> + + <p><?php _e( "We're sorry, but we can't find the page that you're looking for. Perhaps searching will help.", 'buddypress' ); ?></p> + <?php get_search_form(); ?> + + <?php do_action( 'bp_404' ); ?> + </div> + + <?php do_action( 'bp_after_404' ) ?> + </div><!-- .padder --> + </div><!-- #content --> + +<?php get_footer() ?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/ajax.php b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/ajax.php new file mode 100644 index 0000000..e61adeb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/ajax.php @@ -0,0 +1,743 @@ +<?php +/*** + * AJAX Functions + * + * All of these functions enhance the responsiveness of the user interface in the default + * theme by adding AJAX functionality. + */ + +/*** + * This function looks scarier than it actually is. :) + * Each object loop (activity/members/groups/blogs/forums) contains default parameters to + * show specific information based on the page we are currently looking at. + * The following function will take into account any cookies set in the JS and allow us + * to override the parameters sent. That way we can change the results returned without reloading the page. + * By using cookies we can also make sure that user settings are retained across page loads. + */ +function bp_dtheme_ajax_querystring( $query_string, $object ) { + global $bp; + + if ( empty( $object ) ) + return false; + + /* Set up the cookies passed on this AJAX request. Store a local var to avoid conflicts */ + if ( !empty( $_POST['cookie'] ) ) + $_BP_COOKIE = wp_parse_args( str_replace( '; ', '&', urldecode( $_POST['cookie'] ) ) ); + else + $_BP_COOKIE = &$_COOKIE; + + $qs = false; + + /*** + * Check if any cookie values are set. If there are then override the default params passed to the + * template loop + */ + if ( !empty( $_BP_COOKIE['bp-' . $object . '-filter'] ) && '-1' != $_BP_COOKIE['bp-' . $object . '-filter'] ) { + $qs[] = 'type=' . $_BP_COOKIE['bp-' . $object . '-filter']; + $qs[] = 'action=' . $_BP_COOKIE['bp-' . $object . '-filter']; // Activity stream filtering on action + } + + if ( !empty( $_BP_COOKIE['bp-' . $object . '-scope'] ) ) { + if ( 'personal' == $_BP_COOKIE['bp-' . $object . '-scope'] ) { + $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + $qs[] = 'user_id=' . $user_id; + } + if ( 'all' != $_BP_COOKIE['bp-' . $object . '-scope'] && empty( $bp->displayed_user->id ) && !$bp->is_single_item ) + $qs[] = 'scope=' . $_BP_COOKIE['bp-' . $object . '-scope']; // Activity stream scope only on activity directory. + } + + /* If page and search_terms have been passed via the AJAX post request, use those */ + if ( !empty( $_POST['page'] ) && '-1' != $_POST['page'] ) + $qs[] = 'page=' . $_POST['page']; + + $object_search_text = bp_get_search_default_text( $object ); + if ( !empty( $_POST['search_terms'] ) && $object_search_text != $_POST['search_terms'] && 'false' != $_POST['search_terms'] && 'undefined' != $_POST['search_terms'] ) + $qs[] = 'search_terms=' . $_POST['search_terms']; + + /* Now pass the querystring to override default values. */ + $query_string = empty( $qs ) ? '' : join( '&', (array)$qs ); + + $object_filter = ''; + if ( isset( $_BP_COOKIE['bp-' . $object . '-filter'] ) ) + $object_filter = $_BP_COOKIE['bp-' . $object . '-filter']; + + $object_scope = ''; + if ( isset( $_BP_COOKIE['bp-' . $object . '-scope'] ) ) + $object_scope = $_BP_COOKIE['bp-' . $object . '-scope']; + + $object_page = ''; + if ( isset( $_BP_COOKIE['bp-' . $object . '-page'] ) ) + $object_page = $_BP_COOKIE['bp-' . $object . '-page']; + + $object_search_terms = ''; + if ( isset( $_BP_COOKIE['bp-' . $object . '-search-terms'] ) ) + $object_search_terms = $_BP_COOKIE['bp-' . $object . '-search-terms']; + + $object_extras = ''; + if ( isset( $_BP_COOKIE['bp-' . $object . '-extras'] ) ) + $object_extras = $_BP_COOKIE['bp-' . $object . '-extras']; + + return apply_filters( 'bp_dtheme_ajax_querystring', $query_string, $object, $object_filter, $object_scope, $object_page, $object_search_terms, $object_extras ); +} +add_filter( 'bp_ajax_querystring', 'bp_dtheme_ajax_querystring', 10, 2 ); + +/* This function will simply load the template loop for the current object. On an AJAX request */ +function bp_dtheme_object_template_loader() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + /** + * AJAX requests happen too early to be seen by bp_update_is_directory() + * so we do it manually here to ensure templates load with the correct + * context. Without this check, templates will load the 'single' version + * of themselves rather than the directory version. + */ + if ( !bp_current_action() ) + bp_update_is_directory( true, bp_current_component() ); + + // Sanitize the post object + $object = esc_attr( $_POST['object'] ); + + // Locate the object template + locate_template( array( "$object/$object-loop.php" ), true ); +} +add_action( 'wp_ajax_members_filter', 'bp_dtheme_object_template_loader' ); +add_action( 'wp_ajax_groups_filter', 'bp_dtheme_object_template_loader' ); +add_action( 'wp_ajax_blogs_filter', 'bp_dtheme_object_template_loader' ); +add_action( 'wp_ajax_forums_filter', 'bp_dtheme_object_template_loader' ); + +// This function will load the activity loop template when activity is requested via AJAX +function bp_dtheme_activity_template_loader() { + global $bp; + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + $scope = ''; + if ( !empty( $_POST['scope'] ) ) + $scope = $_POST['scope']; + + // We need to calculate and return the feed URL for each scope + switch ( $scope ) { + case 'friends': + $feed_url = $bp->loggedin_user->domain . bp_get_activity_slug() . '/friends/feed/'; + break; + case 'groups': + $feed_url = $bp->loggedin_user->domain . bp_get_activity_slug() . '/groups/feed/'; + break; + case 'favorites': + $feed_url = $bp->loggedin_user->domain . bp_get_activity_slug() . '/favorites/feed/'; + break; + case 'mentions': + $feed_url = $bp->loggedin_user->domain . bp_get_activity_slug() . '/mentions/feed/'; + bp_activity_clear_new_mentions( $bp->loggedin_user->id ); + break; + default: + $feed_url = home_url( bp_get_activity_root_slug() . '/feed/' ); + break; + } + + /* Buffer the loop in the template to a var for JS to spit out. */ + ob_start(); + locate_template( array( 'activity/activity-loop.php' ), true ); + $result = array(); + $result['contents'] = ob_get_contents(); + $result['feed_url'] = apply_filters( 'bp_dtheme_activity_feed_url', $feed_url, $scope ); + ob_end_clean(); + + echo json_encode( $result ); +} +add_action( 'wp_ajax_activity_widget_filter', 'bp_dtheme_activity_template_loader' ); +add_action( 'wp_ajax_activity_get_older_updates', 'bp_dtheme_activity_template_loader' ); + +/* AJAX update posting */ +function bp_dtheme_post_update() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + // Check the nonce + check_admin_referer( 'post_update', '_wpnonce_post_update' ); + + if ( !is_user_logged_in() ) { + echo '-1'; + return false; + } + + if ( empty( $_POST['content'] ) ) { + echo '-1<div id="message" class="error"><p>' . __( 'Please enter some content to post.', 'buddypress' ) . '</p></div>'; + return false; + } + + $activity_id = 0; + if ( empty( $_POST['object'] ) && bp_is_active( 'activity' ) ) { + $activity_id = bp_activity_post_update( array( 'content' => $_POST['content'] ) ); + + } elseif ( $_POST['object'] == 'groups' ) { + if ( !empty( $_POST['item_id'] ) && bp_is_active( 'groups' ) ) + $activity_id = groups_post_update( array( 'content' => $_POST['content'], 'group_id' => $_POST['item_id'] ) ); + + } else { + $activity_id = apply_filters( 'bp_activity_custom_update', $_POST['object'], $_POST['item_id'], $_POST['content'] ); + } + + if ( empty( $activity_id ) ) { + echo '-1<div id="message" class="error"><p>' . __( 'There was a problem posting your update, please try again.', 'buddypress' ) . '</p></div>'; + return false; + } + + if ( bp_has_activities ( 'include=' . $activity_id ) ) : ?> + <?php while ( bp_activities() ) : bp_the_activity(); ?> + <?php locate_template( array( 'activity/entry.php' ), true ) ?> + <?php endwhile; ?> + <?php endif; +} +add_action( 'wp_ajax_post_update', 'bp_dtheme_post_update' ); + +/* AJAX activity comment posting */ +function bp_dtheme_new_activity_comment() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + // Check the nonce + check_admin_referer( 'new_activity_comment', '_wpnonce_new_activity_comment' ); + + if ( !is_user_logged_in() ) { + echo '-1'; + return false; + } + + if ( empty( $_POST['content'] ) ) { + echo '-1<div id="message" class="error"><p>' . __( 'Please do not leave the comment area blank.', 'buddypress' ) . '</p></div>'; + return false; + } + + if ( empty( $_POST['form_id'] ) || empty( $_POST['comment_id'] ) || !is_numeric( $_POST['form_id'] ) || !is_numeric( $_POST['comment_id'] ) ) { + echo '-1<div id="message" class="error"><p>' . __( 'There was an error posting that reply, please try again.', 'buddypress' ) . '</p></div>'; + return false; + } + + $comment_id = bp_activity_new_comment( array( + 'activity_id' => $_POST['form_id'], + 'content' => $_POST['content'], + 'parent_id' => $_POST['comment_id'] + ) ); + + if ( !$comment_id ) { + echo '-1<div id="message" class="error"><p>' . __( 'There was an error posting that reply, please try again.', 'buddypress' ) . '</p></div>'; + return false; + } + + global $activities_template; + + // Load the new activity item into the $activities_template global + bp_has_activities( 'display_comments=stream&include=' . $comment_id ); + + // Swap the current comment with the activity item we just loaded + $activities_template->activity->id = $activities_template->activities[0]->item_id; + $activities_template->activity->current_comment = $activities_template->activities[0]; + + $template = locate_template( 'activity/comment.php', false, false ); + + // Backward compatibility. In older versions of BP, the markup was + // generated in the PHP instead of a template. This ensures that + // older themes (which are not children of bp-default and won't + // have the new template) will still work. + if ( empty( $template ) ) + $template = BP_PLUGIN_DIR . '/bp-themes/bp-default/activity/comment.php'; + + load_template( $template, false ); + + unset( $activities_template ); +} +add_action( 'wp_ajax_new_activity_comment', 'bp_dtheme_new_activity_comment' ); + +/* AJAX delete an activity */ +function bp_dtheme_delete_activity() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + // Check the nonce + check_admin_referer( 'bp_activity_delete_link' ); + + if ( !is_user_logged_in() ) { + echo '-1'; + return false; + } + + if ( empty( $_POST['id'] ) || !is_numeric( $_POST['id'] ) ) { + echo '-1'; + return false; + } + + $activity = new BP_Activity_Activity( (int) $_POST['id'] ); + + // Check access + if ( empty( $activity->user_id ) || !bp_activity_user_can_delete( $activity ) ) { + echo '-1'; + return false; + } + + // Call the action before the delete so plugins can still fetch information about it + do_action( 'bp_activity_before_action_delete_activity', $activity->id, $activity->user_id ); + + if ( !bp_activity_delete( array( 'id' => $activity->id, 'user_id' => $activity->user_id ) ) ) { + echo '-1<div id="message" class="error"><p>' . __( 'There was a problem when deleting. Please try again.', 'buddypress' ) . '</p></div>'; + return false; + } + + do_action( 'bp_activity_action_delete_activity', $activity->id, $activity->user_id ); + + return true; +} +add_action( 'wp_ajax_delete_activity', 'bp_dtheme_delete_activity' ); + +/* AJAX delete an activity comment */ +function bp_dtheme_delete_activity_comment() { + global $bp; + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + /* Check the nonce */ + check_admin_referer( 'bp_activity_delete_link' ); + + if ( !is_user_logged_in() ) { + echo '-1'; + return false; + } + + $comment = new BP_Activity_Activity( $_POST['id'] ); + + /* Check access */ + if ( !is_super_admin() && $comment->user_id != $bp->loggedin_user->id ) + return false; + + if ( empty( $_POST['id'] ) || !is_numeric( $_POST['id'] ) ) + return false; + + /* Call the action before the delete so plugins can still fetch information about it */ + do_action( 'bp_activity_before_action_delete_activity', $_POST['id'], $comment->user_id ); + + if ( !bp_activity_delete_comment( $comment->item_id, $comment->id ) ) { + echo '-1<div id="message" class="error"><p>' . __( 'There was a problem when deleting. Please try again.', 'buddypress' ) . '</p></div>'; + return false; + } + + do_action( 'bp_activity_action_delete_activity', $_POST['id'], $comment->user_id ); + + return true; +} +add_action( 'wp_ajax_delete_activity_comment', 'bp_dtheme_delete_activity_comment' ); + +/* AJAX mark an activity as a favorite */ +function bp_dtheme_mark_activity_favorite() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + bp_activity_add_user_favorite( $_POST['id'] ); + _e( 'Remove Favorite', 'buddypress' ); +} +add_action( 'wp_ajax_activity_mark_fav', 'bp_dtheme_mark_activity_favorite' ); + +/* AJAX mark an activity as not a favorite */ +function bp_dtheme_unmark_activity_favorite() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + bp_activity_remove_user_favorite( $_POST['id'] ); + _e( 'Favorite', 'buddypress' ); +} +add_action( 'wp_ajax_activity_mark_unfav', 'bp_dtheme_unmark_activity_favorite' ); + +/** + * AJAX handler for Read More link on long activity items + * + * @package BuddyPress + * @since 1.5 + */ +function bp_dtheme_get_single_activity_content() { + $activity_array = bp_activity_get_specific( array( + 'activity_ids' => $_POST['activity_id'], + 'display_comments' => 'stream' + ) ); + + $activity = !empty( $activity_array['activities'][0] ) ? $activity_array['activities'][0] : false; + + if ( !$activity ) + exit(); // todo: error? + + do_action_ref_array( 'bp_dtheme_get_single_activity_content', array( &$activity ) ); + + // Activity content retrieved through AJAX should run through normal filters, but not be truncated + remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 ); + $content = apply_filters( 'bp_get_activity_content_body', $activity->content ); + + echo $content; + exit(); +} +add_action( 'wp_ajax_get_single_activity_content', 'bp_dtheme_get_single_activity_content' ); + +/* AJAX invite a friend to a group functionality */ +function bp_dtheme_ajax_invite_user() { + global $bp; + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + check_ajax_referer( 'groups_invite_uninvite_user' ); + + if ( !$_POST['friend_id'] || !$_POST['friend_action'] || !$_POST['group_id'] ) + return false; + + if ( !bp_groups_user_can_send_invites( $_POST['group_id'] ) ) + return false; + + if ( !friends_check_friendship( $bp->loggedin_user->id, $_POST['friend_id'] ) ) + return false; + + if ( 'invite' == $_POST['friend_action'] ) { + + if ( !groups_invite_user( array( 'user_id' => $_POST['friend_id'], 'group_id' => $_POST['group_id'] ) ) ) + return false; + + $user = new BP_Core_User( $_POST['friend_id'] ); + + echo '<li id="uid-' . $user->id . '">'; + echo $user->avatar_thumb; + echo '<h4>' . $user->user_link . '</h4>'; + echo '<span class="activity">' . esc_attr( $user->last_active ) . '</span>'; + echo '<div class="action"> + <a class="button remove" href="' . wp_nonce_url( $bp->loggedin_user->domain . bp_get_groups_slug() . '/' . $_POST['group_id'] . '/invites/remove/' . $user->id, 'groups_invite_uninvite_user' ) . '" id="uid-' . esc_attr( $user->id ) . '">' . __( 'Remove Invite', 'buddypress' ) . '</a> + </div>'; + echo '</li>'; + + } else if ( 'uninvite' == $_POST['friend_action'] ) { + + if ( !groups_uninvite_user( $_POST['friend_id'], $_POST['group_id'] ) ) + return false; + + return true; + + } else { + return false; + } +} +add_action( 'wp_ajax_groups_invite_user', 'bp_dtheme_ajax_invite_user' ); + +/* AJAX add/remove a user as a friend when clicking the button */ +function bp_dtheme_ajax_addremove_friend() { + global $bp; + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + if ( 'is_friend' == BP_Friends_Friendship::check_is_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + + check_ajax_referer('friends_remove_friend'); + + if ( !friends_remove_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + echo __("Friendship could not be canceled.", 'buddypress'); + } else { + echo '<a id="friend-' . $_POST['fid'] . '" class="add" rel="add" title="' . __( 'Add Friend', 'buddypress' ) . '" href="' . wp_nonce_url( $bp->loggedin_user->domain . bp_get_friends_slug() . '/add-friend/' . $_POST['fid'], 'friends_add_friend' ) . '">' . __( 'Add Friend', 'buddypress' ) . '</a>'; + } + + } else if ( 'not_friends' == BP_Friends_Friendship::check_is_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + + check_ajax_referer('friends_add_friend'); + + if ( !friends_add_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + echo __("Friendship could not be requested.", 'buddypress'); + } else { + echo '<a href="' . $bp->loggedin_user->domain . bp_get_friends_slug() . '/requests" class="requested">' . __( 'Friendship Requested', 'buddypress' ) . '</a>'; + } + } else { + echo __( 'Request Pending', 'buddypress' ); + } + + return false; +} +add_action( 'wp_ajax_addremove_friend', 'bp_dtheme_ajax_addremove_friend' ); + +/* AJAX accept a user as a friend when clicking the "accept" button */ +function bp_dtheme_ajax_accept_friendship() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + check_admin_referer( 'friends_accept_friendship' ); + + if ( !friends_accept_friendship( $_POST['id'] ) ) + echo "-1<div id='message' class='error'><p>" . __( 'There was a problem accepting that request. Please try again.', 'buddypress' ) . '</p></div>'; + + return true; +} +add_action( 'wp_ajax_accept_friendship', 'bp_dtheme_ajax_accept_friendship' ); + +/* AJAX reject a user as a friend when clicking the "reject" button */ +function bp_dtheme_ajax_reject_friendship() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + check_admin_referer( 'friends_reject_friendship' ); + + if ( !friends_reject_friendship( $_POST['id'] ) ) + echo "-1<div id='message' class='error'><p>" . __( 'There was a problem rejecting that request. Please try again.', 'buddypress' ) . '</p></div>'; + + return true; +} +add_action( 'wp_ajax_reject_friendship', 'bp_dtheme_ajax_reject_friendship' ); + +/* AJAX join or leave a group when clicking the "join/leave" button */ +function bp_dtheme_ajax_joinleave_group() { + global $bp; + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + if ( groups_is_user_banned( $bp->loggedin_user->id, $_POST['gid'] ) ) + return false; + + if ( !$group = new BP_Groups_Group( $_POST['gid'], false, false ) ) + return false; + + if ( !groups_is_user_member( $bp->loggedin_user->id, $group->id ) ) { + + if ( 'public' == $group->status ) { + + check_ajax_referer( 'groups_join_group' ); + + if ( !groups_join_group( $group->id ) ) { + _e( 'Error joining group', 'buddypress' ); + } else { + echo '<a id="group-' . esc_attr( $group->id ) . '" class="leave-group" rel="leave" title="' . __( 'Leave Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>'; + } + + } else if ( 'private' == $group->status ) { + + check_ajax_referer( 'groups_request_membership' ); + + if ( !groups_send_membership_request( $bp->loggedin_user->id, $group->id ) ) { + _e( 'Error requesting membership', 'buddypress' ); + } else { + echo '<a id="group-' . esc_attr( $group->id ) . '" class="membership-requested" rel="membership-requested" title="' . __( 'Membership Requested', 'buddypress' ) . '" href="' . bp_get_group_permalink( $group ) . '">' . __( 'Membership Requested', 'buddypress' ) . '</a>'; + } + } + + } else { + + check_ajax_referer( 'groups_leave_group' ); + + if ( !groups_leave_group( $group->id ) ) { + _e( 'Error leaving group', 'buddypress' ); + } else { + if ( 'public' == $group->status ) { + echo '<a id="group-' . esc_attr( $group->id ) . '" class="join-group" rel="join" title="' . __( 'Join Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>'; + } else if ( 'private' == $group->status ) { + echo '<a id="group-' . esc_attr( $group->id ) . '" class="request-membership" rel="join" title="' . __( 'Request Membership', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_send_membership_request' ) . '">' . __( 'Request Membership', 'buddypress' ) . '</a>'; + } + } + } +} +add_action( 'wp_ajax_joinleave_group', 'bp_dtheme_ajax_joinleave_group' ); + +/* AJAX close and keep closed site wide notices from an admin in the sidebar */ +function bp_dtheme_ajax_close_notice() { + global $userdata; + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + if ( !isset( $_POST['notice_id'] ) ) { + echo "-1<div id='message' class='error'><p>" . __('There was a problem closing the notice.', 'buddypress') . '</p></div>'; + } else { + $notice_ids = bp_get_user_meta( $userdata->ID, 'closed_notices', true ); + + $notice_ids[] = (int) $_POST['notice_id']; + + bp_update_user_meta( $userdata->ID, 'closed_notices', $notice_ids ); + } +} +add_action( 'wp_ajax_messages_close_notice', 'bp_dtheme_ajax_close_notice' ); + +/* AJAX send a private message reply to a thread */ +function bp_dtheme_ajax_messages_send_reply() { + global $bp; + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + check_ajax_referer( 'messages_send_message' ); + + $result = messages_new_message( array( 'thread_id' => $_REQUEST['thread_id'], 'content' => $_REQUEST['content'] ) ); + + if ( $result ) { ?> + <div class="message-box new-message"> + <div class="message-metadata"> + <?php do_action( 'bp_before_message_meta' ) ?> + <?php echo bp_loggedin_user_avatar( 'type=thumb&width=30&height=30' ); ?> + + <strong><a href="<?php echo $bp->loggedin_user->domain ?>"><?php echo $bp->loggedin_user->fullname ?></a> <span class="activity"><?php printf( __( 'Sent %s', 'buddypress' ), bp_core_time_since( bp_core_current_time() ) ) ?></span></strong> + + <?php do_action( 'bp_after_message_meta' ) ?> + </div> + + <?php do_action( 'bp_before_message_content' ) ?> + + <div class="message-content"> + <?php echo stripslashes( apply_filters( 'bp_get_the_thread_message_content', $_REQUEST['content'] ) ) ?> + </div> + + <?php do_action( 'bp_after_message_content' ) ?> + + <div class="clear"></div> + </div> + <?php + } else { + echo "-1<div id='message' class='error'><p>" . __( 'There was a problem sending that reply. Please try again.', 'buddypress' ) . '</p></div>'; + } +} +add_action( 'wp_ajax_messages_send_reply', 'bp_dtheme_ajax_messages_send_reply' ); + +/* AJAX mark a private message as unread in your inbox */ +function bp_dtheme_ajax_message_markunread() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + if ( !isset($_POST['thread_ids']) ) { + echo "-1<div id='message' class='error'><p>" . __('There was a problem marking messages as unread.', 'buddypress' ) . '</p></div>'; + } else { + $thread_ids = explode( ',', $_POST['thread_ids'] ); + + for ( $i = 0, $count = count( $thread_ids ); $i < $count; ++$i ) { + BP_Messages_Thread::mark_as_unread($thread_ids[$i]); + } + } +} +add_action( 'wp_ajax_messages_markunread', 'bp_dtheme_ajax_message_markunread' ); + +/* AJAX mark a private message as read in your inbox */ +function bp_dtheme_ajax_message_markread() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + if ( !isset($_POST['thread_ids']) ) { + echo "-1<div id='message' class='error'><p>" . __('There was a problem marking messages as read.', 'buddypress' ) . '</p></div>'; + } else { + $thread_ids = explode( ',', $_POST['thread_ids'] ); + + for ( $i = 0, $count = count( $thread_ids ); $i < $count; ++$i ) { + BP_Messages_Thread::mark_as_read($thread_ids[$i]); + } + } +} +add_action( 'wp_ajax_messages_markread', 'bp_dtheme_ajax_message_markread' ); + +/* AJAX delete a private message or array of messages in your inbox */ +function bp_dtheme_ajax_messages_delete() { + + // Bail if not a POST action + if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + return; + + if ( !isset($_POST['thread_ids']) ) { + echo "-1<div id='message' class='error'><p>" . __( 'There was a problem deleting messages.', 'buddypress' ) . '</p></div>'; + } else { + $thread_ids = explode( ',', $_POST['thread_ids'] ); + + for ( $i = 0, $count = count( $thread_ids ); $i < $count; ++$i ) + BP_Messages_Thread::delete($thread_ids[$i]); + + _e( 'Messages deleted.', 'buddypress' ); + } +} +add_action( 'wp_ajax_messages_delete', 'bp_dtheme_ajax_messages_delete' ); + +/** + * bp_dtheme_ajax_messages_autocomplete_results() + * + * AJAX handler for autocomplete. Displays friends only, unless BP_MESSAGES_AUTOCOMPLETE_ALL is defined + * + * @global object object $bp Global BuddyPress settings object + * @return none + */ +function bp_dtheme_ajax_messages_autocomplete_results() { + global $bp; + + // Include everyone in the autocomplete, or just friends? + if ( $bp->messages->slug == $bp->current_component ) + $autocomplete_all = $bp->messages->autocomplete_all; + + $pag_page = 1; + $limit = !empty( $_GET['limit'] ) ? $_GET['limit'] : apply_filters( 'bp_autocomplete_max_results', 10 ); + + // Get the user ids based on the search terms + if ( !empty( $autocomplete_all ) ) { + $users = BP_Core_User::search_users( $_GET['q'], $limit, $pag_page ); + + if ( !empty( $users['users'] ) ) { + // Build an array with the correct format + $user_ids = array(); + foreach( $users['users'] as $user ) { + if ( $user->id != $bp->loggedin_user->id ) + $user_ids[] = $user->id; + } + + $user_ids = apply_filters( 'bp_core_autocomplete_ids', $user_ids, $_GET['q'], $limit ); + } + } else { + if ( bp_is_active( 'friends' ) ) { + $users = friends_search_friends( $_GET['q'], $bp->loggedin_user->id, $limit, 1 ); + + // Keeping the bp_friends_autocomplete_list filter for backward compatibility + $users = apply_filters( 'bp_friends_autocomplete_list', $users, $_GET['q'], $limit ); + + if ( !empty( $users['friends'] ) ) + $user_ids = apply_filters( 'bp_friends_autocomplete_ids', $users['friends'], $_GET['q'], $limit ); + } + } + + if ( !empty( $user_ids ) ) { + foreach ( $user_ids as $user_id ) { + $ud = get_userdata( $user_id ); + if ( !$ud ) + continue; + + if ( bp_is_username_compatibility_mode() ) + $username = $ud->user_login; + else + $username = $ud->user_nicename; + + echo '<span id="link-' . $username . '" href="' . bp_core_get_user_domain( $user_id ) . '"></span>' . bp_core_fetch_avatar( array( 'item_id' => $user_id, 'type' => 'thumb', 'width' => 15, 'height' => 15 ) ) . '  ' . bp_core_get_user_displayname( $user_id ) . ' (' . $username . ') + '; + } + } +} +add_action( 'wp_ajax_messages_autocomplete_results', 'bp_dtheme_ajax_messages_autocomplete_results' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/default-rtl.css b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/default-rtl.css new file mode 100644 index 0000000..a3c75ae --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/default-rtl.css @@ -0,0 +1,769 @@ +/*-------------------------------------------------------------- +Hello, this is the BuddyPress Default rtl stylesheet. +Right to left styles. This will transform the theme to read from +right to left for languages that support this method. + +---------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +1.0 - Structural + 1.1 - Content + 1.2 - Header + 1.3 - Footer + 1.4 - Sidebar +2.0 - Non-structural + 2.1 - Text + 2.2 - Headers + 2.3 - Lists +3.0 - Navigation + 3.1 - Pagination +4.0 - WordPress + 4.1 - Alignments + 4.2 - Comments + 4.3 - Gallery + 4.4 - Images + 4.5 - Posts +5.0 - BuddyPress + 5.1 - Activity + 5.1.1 - Activity Listing + 5.1.2 - Activity Comments + 5.2 - Admin Bar + 5.3 - Ajax Loading + 5.4 - Directories - Members, Groups, Blogs, Forums + 5.5 - Error / Success Messages + 5.6 - Forms + 5.7 - Topics and Tables - Forums and General + 5.8 - Headers, Lists and Tabs - Activity, Groups, Blogs, Forums + 5.9 - Private Messaging Threads +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- +1.0 - Structure +--------------------------------------------------------------*/ +body { + direction: rtl; + unicode-bidi: embed; +} +body { + background: #eaeaea url( ../images/background.gif ) top right repeat-x; +} + + +/*-------------------------------------------------------------- +1.1 - Content +--------------------------------------------------------------*/ +div#container { + border-left: 1px solid #e0e0e0; + border-right: 0; +} +div#content { + float: right; + -moz-border-radius-topleft: 0; + -moz-border-radius-topright: 6px; + -webkit-border-top-right-radius: 6px; + -webkit-border-top-left-radius: 0; + -moz-border-radius-bottomleft: 0; + -moz-border-radius-bottomright: 6px; + -webkit-border-bottom-right-radius: 6px; + -webkit-border-bottom-left-radius: 0; +} +div#content .padder { + margin-left: 225px; + margin-right: 0; + border-left: 1px solid #e4e4e4; + border-right: 0; + -moz-border-radius-topright: 6px; + -moz-border-radius-topleft: 0; + -webkit-border-top-right-radius: 6px; + -webkit-border-top-left-radius: 0; + -moz-border-radius-bottomright: 6px; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-right-radius: 6px; + -webkit-border-bottom-left-radius: 0; +} +div#content .left-menu { + float: right; +} +div#content .main-column { + margin-right: 190px; + margin-left: 0; +} + + +/*-------------------------------------------------------------- +1.2 - Header +--------------------------------------------------------------*/ +#header #search-bar { + left: 0; + right: auto; + text-align: left; +} +#header #search-bar input[type=text] { + margin-left: 4px; + margin-right: 0; +} +#header #search-bar input[type=submit] { + margin-right: 4px; + margin-left: 0; +} +#header h1 { + float: right; + left: auto; + right: 20px; +} + + +/*-------------------------------------------------------------- +1.3 - Footer +--------------------------------------------------------------*/ +#footer-widget-area div.widget-area > ul { + float: right; + margin-left: 19px; + margin-right: 0; +} +#footer-widget-area ul.item-list li img.avatar { + margin-right: 15px; /* border is 4px */ + margin-left: 0; +} + + +/*-------------------------------------------------------------- +1.4 - Sidebar +--------------------------------------------------------------*/ +div#sidebar { + float: right; + margin-right: -226px; + margin-left: 0; + border-right: 1px solid #e4e4e4; + border-left: 0; + -moz-border-radius-topleft: 3px; + -webkit-border-top-left-radius: 3px; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; +} +div#sidebar div#sidebar-me img.avatar { + float: right; + margin: 0 0 15px 10px; +} +div#sidebar ul#bp-nav { + clear: right; +} +#footer-widget-area h3.widgettitle, +div#sidebar h3.widgettitle { + margin: 25px -19px 10px -20px; + clear: right; +} +#footer-widget-area ul.item-list img.avatar, +div#sidebar ul.item-list img.avatar { + margin-left: 10px; + margin-right: 0; +} +#footer-widget-area div.item-options, +div#sidebar div.item-options { + margin: -10px -19px 0 -20px; +} +#footer-widget-area div.item-meta, +#footer-widget-area div.item-content, +div#sidebar div.item-meta, +div#sidebar div.item-content { + margin-right: 38px; + margin-left: 0; +} + + +/*-------------------------------------------------------------- +2.0 - Non-structural +--------------------------------------------------------------*/ +p.postmetadata { + clear: right; +} + + +/*-------------------------------------------------------------- +2.1 - Text +--------------------------------------------------------------*/ +code { + font-family: "Monaco", courier, sans-serif; +} +blockquote { + font-family: sans-serif; +} +table th { + text-align: right; +} +div.author-box, +div.comment-avatar-box { + float: right; + margin: 0 0 15px 15px; + font-family: sans-serif; +} +div.post-content { + margin-right: 105px; + margin-left: 0; +} +p.date, +p.postmetadata, +div.comment-meta, +div.comment-options { + font-family: sans-serif; +} + + +/*-------------------------------------------------------------- +2.2 - Headers +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- +2.3 - Lists +--------------------------------------------------------------*/ +div.page ul, +div.page ol, +div.page dl, +div.post ul, +div.post ol, +div.post dl { + margin: 0 1.5em 18px 0; +} +dl { + margin-right: 0; +} + + +/*-------------------------------------------------------------- +3.0 - Navigation +--------------------------------------------------------------*/ +#navigation { + text-align: left; +} +#nav { + margin: 40px 0 0 20px; +} +#nav li { + margin-left: auto; + margin-right: 5px; +} +#nav li a { + text-align: right; +} +#nav li li { + margin-left: auto; + margin-right: 0; +} +#nav ul, +#nav .sfhover ul ul, +#nav :hover ul ul { + left: auto; + right: -9999px; +} +#nav .sfhover ul, +#nav :hover ul { + left: auto; + right: 0; +} +#nav .sfhover ul .sfhover > ul, +#nav :hover ul :hover > ul { + left: auto; + right: 125px; +} +.navigation, +.paged-navigation, +.comment-navigation { + font-family: sans-serif; +} + + +/*-------------------------------------------------------------- +3.1 - Pagination +--------------------------------------------------------------*/ +div.pagination .pag-count { + float: right; +} +div.pagination .pagination-links { + float: left; +} + + +/*-------------------------------------------------------------- +4.0 - WordPress +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- +4.1 - Alignments +--------------------------------------------------------------*/ +.alignright { + float: left; +} +.alignleft { + float: right; +} +.clear { + clear: right; +} +img.avatar { + float: right; +} +.accessibly-hidden { + left: auto; + right: -999em; +} + + +/*-------------------------------------------------------------- +4.2 - Comments +--------------------------------------------------------------*/ +.comments { + float: left; +} +ol.commentlist li.comment { + clear: right; +} +.commentlist ul.children { + margin: 15px 70px 15px 0; +} +.commentlist ul.children ul { + margin: 0 25px 0 0; + padding-left: 0; +} +ol.commentlist #respond { + clear: right; + margin-left: auto; + margin-right: 70px; +} +.commentlist ul.children #respond { + margin-left: 20px; + margin-right: 35px; +} +ol.commentlist div.comment-avatar-box { + float: right; + margin: 15px 0 0 15px; +} +.commentlist ul.children div.comment-avatar-box { + float: right; + margin: 0 0 0 10px; +} +#comments ol.commentlist ol { + margin: 0 2.5em 18px 0; +} +#reply-title small { + float: left; +} +#reply-title small a { + margin-right: auto; + margin-left: 0; +} +#respond .comment-avatar-box { + float: right; + margin: 0 0 0 15px; +} +.acomment-options { + float: right; + margin-right: 40px; + margin-left: auto; +} +.comment-options .comment-reply-link, +.comment-options .comment-edit-link { + margin-left: 5px; + margin-right: auto; +} + + +/*-------------------------------------------------------------- +4.3 - Gallery +--------------------------------------------------------------*/ +dd.wp-caption p.wp-caption-text, +.wp-caption p.wp-caption-text { + padding: 0 0 5px 4px; +} + + +/*-------------------------------------------------------------- +4.4 - Images +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- +4.5 - Posts +--------------------------------------------------------------*/ +.page .tags, +.post .tags { + float: right; +} + + +/*-------------------------------------------------------------- +5.0 - BuddyPress +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- +5.1 - Activity +--------------------------------------------------------------*/ +form#whats-new-form h5 { + margin-right: 76px; + margin-left: 0; +} +form#whats-new-form #whats-new-avatar { + float: right; +} +form#whats-new-form #whats-new-content { + margin-right: 54px; + padding-right: 22px; +} +form#whats-new-form #whats-new-submit { + float: left; +} + + +/*-------------------------------------------------------------- +5.1.1 - Activity Listing +--------------------------------------------------------------*/ +.activity-header { + margin-left: 20px; + margin-right: auto; +} +.activity-list .activity-avatar { + float: right; +} +.activity-list li.mini .activity-avatar img.avatar, +.activity-list li.mini .activity-avatar img.FB_profile_pic { + margin-right: 30px; + margin-left: 0; +} +body.activity-permalink .activity-list li .activity-header > p { + margin-left: auto; + margin-right: -35px; + padding: 5px 35px 0 0; +} +.activity-list li.mini .activity-content p { + float: right; +} +.activity-list li.mini .activity-meta { + left: 0; + right: auto; +} +body.activity-permalink .activity-list li.mini .activity-meta { + left: 15px; + right: auto; +} +.activity-list li.mini .activity-comments { + clear: right; +} +.activity-list li .activity-inreplyto { + margin-right: 5px; + margin-left: 0; + padding-right: 25px; + padding-left: 0; + background-position: 100% 0; +} +.activity-list .activity-content { + margin-right: 70px; + margin-left: 0; +} +.activity-list li.new_forum_post .activity-content .activity-inner, +.activity-list li.new_forum_topic .activity-content .activity-inner { + border-left: none; + margin-left: 0; + padding-left: 0; + border-right: 2px solid #EAEAEA; + margin-right: 5px; + padding-right: 10px; +} +body.activity-permalink .activity-list li .activity-content { + margin-right: 185px; + margin-left: 0; +} +body.activity-permalink .activity-list li .activity-content > p { + background-position: top right; + margin-right: -35px; + margin-left: 0; + padding: 5px 38px 0 0; +} +.activity-list .activity-content > p > a:first-child, +span.highlight, +.activity-list .activity-content > .comment-header > a:first-child { + margin-left: 3px; + margin-right: 0; +} +.activity-list .activity-content img.thumbnail { + float: right; + margin: 0 0 5px 10px; +} +.activity-list li.load-more { + border-left: 1px solid #ddd; + border-right: 0; +} +a.bp-secondary-action, +span.highlight { + margin-left: 5px; + margin-right: auto; +} +.activity-list .activity-content .activity-inner, +.activity-list .activity-content blockquote { + margin-left: 10px; + margin-right: 0; +} + + +/*-------------------------------------------------------------- +5.1.2 - Activity Comments +--------------------------------------------------------------*/ +div.activity-comments { + margin: 0 70px 0 0; +} +body.activity-permalink div.activity-comments { + margin-right: 185px; + margin-left: 0; +} +div.activity-comments ul { + clear: right; +} +div.activity-comments > ul { + padding: 0 10px 0 0; +} +div.activity-comments ul li > ul { + margin-left: 0; + margin-right: 30px; + padding-left: 0; + padding-right: 10px; +} +div.activity-comments div.acomment-avatar img { + float: right; + margin-left: 10px; + margin-right: 0; +} +div.activity-comments div.acomment-content { + margin-left: 0; + margin-right: 40px; +} +div.activity-comments form.ac-form { + margin: 10px 33px 10px 0; + border-left: 1px solid #ddd; + border-right: 0; +} +div.activity-comments li form.ac-form { + margin-left: 15px; + margin-right: 0; +} +div.activity-comments form.root { + margin-right: 0; +} +div.activity-comments form.loading { + background-position: 88% 95%; +} +div.activity-comments form div.ac-reply-avatar { + float: right; +} +div.activity-comments form div.ac-reply-content { + margin-right: 50px; + margin-left: 0; + padding-right: 15px; + padding-left: 0; +} +body.activity-permalink div.activity-comments > ul { + padding: 0 15px 0 10px; +} + + +/*-------------------------------------------------------------- +5.2 - Admin Bar +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- +5.3 - Ajax Loading +--------------------------------------------------------------*/ +a.loading { + background-position: 5% 50% !important; + padding-left: 25px !important; + padding-right: 0 !important; +} + + +/*-------------------------------------------------------------- +5.4 - Directories - Members, Groups, Blogs, Forums +--------------------------------------------------------------*/ +div.dir-search { + float: left; +} + + +/*-------------------------------------------------------------- +5.5 - Error / Success Messages +--------------------------------------------------------------*/ +span.activity, +div#message p { + border-left: 1px solid #FFE8C4; + border-right: 0; +} + + +/*-------------------------------------------------------------- +5.6 - Forms +--------------------------------------------------------------*/ +.standard-form#signup_form div.submit { + float: left; +} +.standard-form#signup_form div.signup-avatar { + margin-left: 15px; + margin-right: 0; +} +.standard-form div.submit input { + margin-left: 15px; + margin-right: 0; +} +.standard-form div.radio ul { + margin: 10px 38px 15px 0; +} +.standard-form #basic-details-section, +.standard-form #blog-details-section, +.standard-form #profile-details-section { + float: right; +} +.standard-form #profile-details-section { + float: left; +} +.standard-form #blog-details-section { + clear: right; +} +a.button, +input[type=submit], +input[type=button], +ul.button-nav li a, +div.generic-button a { + background-position: right top; +} +div.accept, div.reject { + float: right; + margin-left: 0; + margin-right: 10px; +} +ul.button-nav li { + float: right; + margin: 0 0 10px 10px; +} + + +/*-------------------------------------------------------------- +5.7 - Topics and Tables - Forums and General +--------------------------------------------------------------*/ +table tr td.label { + border-left: 1px solid #eaeaea; + border-right: 0; +} +table.forum tr.closed td.td-title { + padding-right: 35px; + padding-left: 0; + background-position: 5% 50%; +} +table.forum tr > td:first-child, +table.forum tr > th:first-child { + padding-right: 15px; + padding-left: 0; +} +table.forum tr > td:last-child, +table.forum tr > th:last-child { + padding-left: 15px; + padding-right: 0; +} +table.forum tr th#th-title, +table.forum tr th#th-poster, +table.forum tr th#th-group, +table.forum td.td-poster, +table.forum td.td-group, +table.forum td.td-title { + text-align: right; +} +table.forum td img.avatar { + margin-left: 5px; + margin-right: 0; +} +ul#topic-post-list li div.post-content { + margin-right: 54px; + margin-left: 0; +} +div.admin-links { + left: 25px; + right: auto +} +div#topic-meta div.admin-links { + left: 0; + right: auto; +} + + +/*-------------------------------------------------------------- +5.8 - Headers, Lists and Tabs - Activity, Groups, Blogs, Forums +--------------------------------------------------------------*/ +div#item-header img.avatar { + float: right; + margin: 0 0 25px 15px; +} +div#item-header span.activity { + margin: 0 4px 5px 0; +} +div#item-header div#item-actions { + float: left; + margin: 0 15px 15px 0; + text-align: left; +} +div#item-header ul li { + float: left; +} +div#item-header div.generic-button, +div#item-header a.button { + float: right; + margin: 10px 0 0 10px; +} +ul.item-list li img.avatar { + float: right; + margin: 0 0 0 10px; +} +ul.item-list li div.item-desc { + margin: 10px 64px 0 0; +} +ul.item-list li div.action { + left: 0; + right: auto; + text-align: left; +} +div.item-list-tabs { + clear: right; +} +div.item-list-tabs ul li { + float: right; + margin: 5px 5px 0 0; +} +div.item-list-tabs ul li:first-child { + margin-left: 0; + margin-right: 20px; +} +div.item-list-tabs ul li.last { + float: left; + margin: 7px 0 0 20px; +} +ul li.loading a { + background-position: 8% 50%; + padding-left: 30px !important; + padding-right: 0 !important; +} +div#item-nav ul li.loading a { + background-position: 12% 50%; +} +div.item-list-tabs ul li.feed a { + background-position: right center; + padding-right: 20px; + padding-left: 0; +} + + +/*-------------------------------------------------------------- +5.9 - Private Messaging Threads +--------------------------------------------------------------*/ +div.messages-options-nav { + text-align: left; +} +div#message-thread img.avatar { + float: right; + margin: 0 0 0 10px; +} +div#message-thread strong span.activity { + margin: 4px 10px 0 0; +} +div#message-thread div.message-content { + margin-right: 45px; + margin-left: 0; +} +div#message-thread div.message-options { + text-align: left; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/default.css b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/default.css new file mode 100644 index 0000000..9df9492 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/default.css @@ -0,0 +1,2359 @@ +/*-------------------------------------------------------------- +Hello, this is the BuddyPress Default theme stylesheet. + +---------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +1.0 - Reset - Based on work by Eric Meyer +2.0 - Structural + 2.1 - Content + 2.2 - Header + 2.3 - Footer + 2.4 - Sidebar +3.0 - Non-structural + 3.1 - Text + 3.2 - Headers + 3.3 - Lists +4.0 - Navigation + 4.1 - Pagination +5.0 - WordPress + 5.1 - Alignments + 5.2 - Comments + 5.3 - Gallery + 5.4 - Images + 5.5 - Posts +6.0 - BuddyPress + 6.1 - Activity + 6.1.1 - Activity Listing + 6.1.2 - Activity Comments + 6.2 - Admin Bar + 6.3 - Directories - Members, Groups, Blogs, Forums + 6.4 - Error / Success Messages + 6.5 - Forms + 6.6 - Ajax Loading + 6.7 - Topics and Tables - Forums and General + 6.8 - Headers, Lists and Tabs - Activity, Groups, Blogs, Forums + 6.9 - Private Messaging Threads +--------------------------------------------------------------*/ + +/*-------------------------------------------------------------- +1.0 - Reset - Reset default browser CSS. Based on work by Eric +Meyer: v1.0 http://meyerweb.com/eric/tools/css/reset/index.html +--------------------------------------------------------------*/ +html,body,div,span,applet,object,iframe, +h1,h2,h3,h4,h5,h6,p,blockquote,pre, +a,abbr,acronym,address,big,cite,code, +del,dfn,em,font,img,ins,kbd,q,s,samp, +small,strike,strong,sub,sup,tt,var, +b,u,i,center, +dl,dt,dd,ol,ul,li, +fieldset,form,label,legend, +table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;} +body{background:#fff;line-height:1;} +ol,ul{list-style:none;} +blockquote,q{quotes:none;} +blockquote:before,blockquote:after, +q:before,q:after{content:'';content:none;} +:focus{outline:0;} +ins{text-decoration:none;} +del{text-decoration:line-through;} +table{border-collapse:collapse;border-spacing:0;} +a img{border:none;} + + +/*-------------------------------------------------------------- +2.0 - Structural +--------------------------------------------------------------*/ +body { + background-color: #eaeaea; + background-image: url( ../images/background.gif ); + background-repeat: repeat-x; + background-position: top left; + color: #555; + font-size: 12px; + font-family: Arial, Tahoma, Verdana, sans-serif; + line-height: 170%; + max-width: 1250px; + margin: 0 auto; + width: 95%; +} +.padder { + padding: 19px; +} +div#container { + background: #fff; + border-right: 1px solid #e0e0e0; + border-bottom: 1px solid #e0e0e0; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + overflow: hidden; + position: relative; + width: 100%; +} +body.activity-permalink div#container { + background: none; + border: none; +} + + +/*-------------------------------------------------------------- +2.1 - Content +--------------------------------------------------------------*/ +div#content { + -moz-border-radius-topleft: 6px; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -webkit-border-bottom-left-radius: 6px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + float: left; + width: 100%; +} +div#content .padder { + border-right: 1px solid #ddd; + -moz-border-radius-topleft: 6px; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -webkit-border-bottom-left-radius: 6px; + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; + margin-right: 225px; +} +div#content .one-column { + border-right: 0 none; + margin-right: 0; +} +div#content .left-menu { + float: left; + width: 170px; +} +div#content .main-column { + margin-left: 190px; +} + + +/*-------------------------------------------------------------- +2.2 - Header +--------------------------------------------------------------*/ +#header { + background: #1fb3dd; /* Old browsers */ + background: -moz-linear-gradient(top, #1fb3dd 0%, #1fb3dd 15%, #394c79 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#1fb3dd), color-stop(15%,#1fb3dd), color-stop(100%,#394c79)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #1fb3dd 0%,#1fb3dd 15%,#394c79 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #1fb3dd 0%,#1fb3dd 15%,#394c79 100%); /* Opera11.10+ */ + background: -ms-linear-gradient(top, #1fb3dd 0%,#1fb3dd 15%,#394c79 100%); /* IE10+ */ + background: linear-gradient(top, #1fb3dd 0%,#1fb3dd 15%,#394c79 100%); /* W3C */ + -moz-border-radius-bottomleft: 6px; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -moz-border-radius-bottomright: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + color: #fff; + height: auto; + margin-bottom: 20px; + padding-top: 25px; + position: relative; + z-index: 1000; +} +#header #search-bar { + margin-top: 5px; + text-align: right; + width: 100%; +} +#header #search-bar .padder { + padding: 10px 15px 0 20px; + height: auto; +} +#header #search-bar input[type=text] { + border: 1px inset #888; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + margin-right: 4px; + padding: 2px; +} +#header #search-bar input[type=submit] { + font-size: 11px; + padding: 1px 4px; + margin-left: 4px; +} +#header h1 { + float: left; + margin-bottom: 0; + margin-top: 0; +} +#header h1 a { + color: #fff; + font-size: 26px; + text-decoration: none; +} + + +/*-------------------------------------------------------------- +2.3 - Footer +--------------------------------------------------------------*/ +#footer { + margin: 20px 0; +} +#footer-widgets { + background: #fff; + border-bottom: 1px solid #e0e0e0; + border-right: 1px solid #e0e0e0; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + padding: 19px; +} +#site-generator { + color: #4D4D4D; + margin: 20px 20px; + text-align: center; + text-shadow: #fafafa 1px 1px 0; +} +#footer-widget-area { + margin-top: -19px; + overflow: hidden; +} +#footer-widget-area div.widget-area > ul { + float: left; + margin-right: 2.5%; + width: 23%; +} +#footer-widget-area div.widget-area > ul > li { + margin-top: 19px; +} +#footer-widget-area h3.widgettitle { + background: #eaeaea; + clear: left; + padding: 5px 15px; + font-size: 12px; + margin: 0 0 10px 0; +} +#footer-widget-area div div.item-options { + margin-left: 0; + margin-right: 0; +} +#footer-widget-area ul.item-list li img.avatar { + margin-left: 15px; /* border is 4px */ +} +div#fourth ul.xoxo { margin-right: 0; } + + +/*-------------------------------------------------------------- +2.4 - Sidebar +--------------------------------------------------------------*/ +div#sidebar { + border-left: 1px solid #ddd; + -moz-border-radius-topright: 3px; + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + float: left; + margin-left: -226px; + margin-top: 1px; + width: 224px; +} +div#sidebar div#sidebar-me { + margin-bottom: 15px; +} +div#sidebar div#sidebar-me img.avatar { + float: left; + margin: 0 10px 15px 0; +} +div#sidebar div#sidebar-me h4 { + font-size: 16px; + margin: 0 0 8px 0; + font-weight: normal; +} +div#sidebar ul#bp-nav { + clear: left; + margin: 15px -16px; +} +div#sidebar ul#bp-nav li { + padding: 10px 15px; +} +div#sidebar h3.widgettitle { + background: #eaeaea; + clear: left; + font-size: 12px; + margin: 25px -20px 10px -19px; + padding: 5px 15px; +} +#footer-widget-area .widget_search, +div#sidebar .widget_search { + margin-top: 20px; +} +#footer-widget-area .widget_search input[type=text], +div#sidebar .widget_search input[type=text] { + padding: 2px; + width: 110px; +} +#footer-widget-area ul.item-list img.avatar, +div#sidebar ul.item-list img.avatar { + height: 20px; + margin-right: 10px; + width: 20px; +} +#footer-widget-area div.item-avatar img, +div#sidebar div.item-avatar img { + height: 40px; + margin: 1px; + width: 40px; +} +#footer-widget-area .avatar-block, +div#sidebar .avatar-block { + overflow: hidden; +} +#footer-widget-area ul.item-list div.item-title, +div#sidebar ul.item-list div.item-title { + font-size: 12px; +} +#footer-widget-area div.item-options, +div#sidebar div.item-options { + background: #f5f5f5; + font-size: 11px; + margin: -10px -20px 0 -19px; + padding: 5px 15px; +} +#footer-widget-area div.item-content { + margin-left: 38px; +} +#footer-widget-area div.item-meta, +div#sidebar div.item-meta, +div#sidebar div.item-content { + font-size: 11px; + margin-left: 38px; +} +#footer-widget-area div.tags div#tag-text, +div#sidebar div.tags div#tag-text { + font-size: 1.4em; + line-height: 140%; + padding: 10px 0 15px; +} + + +/*-------------------------------------------------------------- +3.0 - Non-structural +--------------------------------------------------------------*/ +p { + margin-bottom: 15px; +} +p:last-child { + margin-bottom: 0; +} +.accessibly-hidden { + left: -999em; + position: absolute; +} +hr { + background-color: #e7e7e7; + border: 0 none; + clear: both; + height: 1px; + margin: 20px 0; +} +textarea { + resize: vertical; +} + + +/*-------------------------------------------------------------- +3.1 - Text +--------------------------------------------------------------*/ +big { + font-size: 18px; +} +del { + text-decoration: line-through; +} +ins { + background: #fff9db; + text-decoration: none; +} +sub { + top: .5ex; +} +sup { + bottom: 1ex; +} +sub, +sup { + height: 0; + line-height: 1; + position: relative; + vertical-align: baseline; +} +pre, blockquote { + margin-bottom: 20px; +} +pre, +code p { + background: #f4f4f4; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + padding: 15px; + overflow: auto; +} +code { + font-family: "Monaco", courier, sans-serif; +} +blockquote { + font-family: georgia, times, serif; + font-size: 16px; + font-style: italic; + line-height: 150%; + padding: 0 3em; + quotes: none; +} +blockquote p { + margin-bottom: 15px !important; +} + + +/*-------------------------------------------------------------- +3.2 - Headers +--------------------------------------------------------------*/ +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 5px 0 15px 0; +} +h1 { + font-size: 28px; + margin-bottom: 25px; +} +h2 { + font-size: 24px; + margin-bottom: 20px; +} +h3 { + font-size: 20px; +} +h4 { + font-size: 16px; + margin-bottom: 15px; +} +h5 { + font-size: 14px; + margin-bottom: 0; +} +h6 { + font-size: 12px; + margin-bottom: 0; +} + + +/*-------------------------------------------------------------- +3.3 - Lists +--------------------------------------------------------------*/ +div.page ul, +div.page ol, +div.page dl, +div.post ul, +div.post ol, +div.post dl { + margin: 0 0 18px 1.5em; +} +div.page ul, +div.post ul { + list-style: square; +} +div.page ol, +div.post ol { + list-style: decimal; +} +div.page ol ol, +div.post ol ol { + list-style: lower-alpha; +} +div.page ol ol ol, +div.post ol ol ol { + list-style: lower-roman; +} +dl { + margin-left: 0; +} +dt { + font-size: 14px; + font-weight: bold; +} +dd { + margin: 0 0 15px 0; +} +div.post ul ul, +div.post ol ol, +div.post ol ul, +div.post ul ol, +div.page ul ul, +div.page ol ol, +div.page ol ul, +div.page ul ol { + margin-bottom: 0px; +} + + +/*-------------------------------------------------------------- +4.0 - Navigation +--------------------------------------------------------------*/ +a { + color: #1fb3dd; +} +a:hover, +a:active { + color: #888; +} +a:focus { + outline: 1px dotted #ccc; +} +#navigation { + position: relative; + text-align: right; + width: 100%; +} +#nav { + margin: 40px 20px 0 0; + list-style: none; + padding: 0; + position: relative; + right: auto; + bottom: 0; +} +#nav li a { + background: url( ../images/60pc_black.png ); + color: #fff; + display: block; + padding: 5px 15px; + text-decoration: none; + text-align: left; +} +#nav li { + margin-left: 5px; + display: inline-block; +} +#nav li li { + margin-left: 0; +} +#nav > li > a { + -moz-border-radius-topleft: 3px; + -webkit-border-top-left-radius: 3px; + -moz-border-radius-topright: 3px; + -webkit-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +#nav li.selected a, +#nav > li.current-menu-item a, +#nav > li.current_page_item a, +#nav > li.current_page_ancestor a { + background: #f5f5f5; + color: #4D4D4D; +} +#nav > li > ul { + border-top-width: 0; +} +#nav > ul li.sfhover a, +#nav > ul li:hover a { + background: #333; + color: #fff; +} +#nav li.sfhover, +#nav li:hover { + position: relative; + z-index: 1000; +} +#nav ul { + border: 1px solid #222; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius-topleft: 0; + -moz-border-radius-topright: 0; + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; + -moz-box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); +} +#nav ul li ul { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +#nav ul, +#nav .sfhover ul ul, +#nav :hover ul ul { + left: -9999px; + position: absolute; +} +#nav .sfhover ul, +#nav :hover ul { + left: 0; + top: 100%; + width: 128px; +} +#nav .sfhover ul li > a, +#nav :hover ul li > a { + background: #333; + color: #fff; +} +#nav .sfhover ul .sfhover > ul, +#nav :hover ul :hover > ul { + left: 125px; + top: -1px; + width: 128px; +} +#nav ul li.sfhover > a, +#nav ul li:hover > a { + background-color: #222; + color: #fff; +} +#nav .sfhover ul li, +#nav :hover ul li { + height: 30px; + line-height: 30px; + text-indent: 10px; + width: 128px; +} +#nav .sfhover ul li a, +#nav :hover ul li a { + padding: 0 0; +} + + +/*-------------------------------------------------------------- +4.1 - Pagination +--------------------------------------------------------------*/ +div.pagination { + background: #f4f4f4; + border: none; + color: #888; + font-size: 11px; + height: 19px; + margin: -20px -19px 0px -19px; + padding: 8px 20px; + position: relative; +} +div.pagination .pag-count { + float: left; +} +div.pagination .pagination-links { + float: right; +} +div.pagination .pagination-links span, +div.pagination .pagination-links a { + font-size: 12px; + padding: 0 5px; +} +div.pagination .pagination-links a:hover { + font-weight: bold; +} +div#pag-bottom { + margin-top: -1px; +} +#nav-above { + display: none; +} +.paged #nav-above { + display: block; +} + + +/*-------------------------------------------------------------- +5.0 - WordPress +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- +5.1 - Alignments +--------------------------------------------------------------*/ +.alignright { + float: right; + margin-left: 15px; +} +.alignleft { + float: left; + margin-right: 15px; +} +.aligncenter { + display: block; + margin-left: auto; + margin-right: auto; +} +.clear { + clear: left; +} + + +/*-------------------------------------------------------------- +5.2 - Comments +--------------------------------------------------------------*/ +.navigation, +.paged-navigation, +.comment-navigation { + overflow: hidden; + font-family: georgia, times, serif; + font-size: 14px; + font-style: italic; + margin: 5px 0 25px 0; + padding: 5px 0; +} +.comments { + float: right; +} +#trackbacks { + margin-top: 30px; +} +.commentlist .bypostauthor { +} +#comments { + margin-top: 30px; +} +#comments ol.commentlist { + border-bottom: 1px solid #e4e4e4; + margin: 0 0 30px 0; +} +#comments ol.commentlist ol { + list-style-type: decimal; + margin: 0 0 18px 2.5em; +} +#comments ol.commentlist ol ol { + list-style: lower-alpha; + margin-bottom: 0px; +} +#comments ol.commentlist ol ol ol { + list-style: lower-roman; +} +ol.commentlist li.comment { + border-top: 1px solid #e4e4e4; + clear: left; + list-style: none; + margin-bottom: 15px; +} +ol.commentlist ul.children li { + margin-bottom: 0; +} +ol.commentlist div.comment-avatar-box { + float: left; + margin: 15px 15px 0 0; +} +.commentlist ul.children div.comment-avatar-box { + float: left; + margin: 0 10px 0 0; +} +div.comment-avatar-box img { + border: 2px solid #eee; +} +div.comment-content { + overflow: hidden; +} +ul.children .comment-entry { + margin-bottom: 10px; +} +div.comment-meta { + color: #888; + font-size: 11px; + margin: 15px 0; + width: 100%; +} +div.comment-meta em { + font-style: normal; +} +#reply-title { + margin-top: 0; +} +#reply-title small { + float: right; + font-size: 11px; + font-weight: normal; +} +#reply-title small a { + margin-right: 0; +} +.commentlist ul.children { + background: #f5f5f5; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin: 15px 0 15px 70px; + padding: 0 10px; +} +.commentlist ul.children ul { + margin: 0 0 0 25px; + padding-right: 0; +} +.commentlist ul.children img.avatar { + border-style: none; + height: 25px; + margin: 0; + width: 25px; +} +.commentlist ul.children div.comment-meta { + font-size: 11px; + margin: 0 0 10px 0; +} +.commentlist ul.children li { + border-top: 2px solid #fffeff; + padding-top: 10px; +} +.commentlist ul.children li:first-child { + border-top: none; +} +.commentlist ul.children ul li:first-child { + border-top: 2px solid #fffeff; +} +#respond { + background-color: #fafafa; + border: 1px solid #e5e5e5; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + padding: 15px; +} +#respond .avb img { + float: inherit; +} +#respond .comment-avatar-box { + float: left; + margin: 0 15px 0 0; +} +#respond .form-submit { + margin-bottom: 0; +} +ol.commentlist #respond { + clear: left; + margin-left: 70px; +} +.commentlist ul.children #respond { + margin-bottom: 10px; + margin-left: 35px; + margin-right: 20px; +} +h3#reply .comments-header { + font-size: 14px; +} +#respond div.comment-content { + border-style: none; +} +#nav-below { + margin: 0 0; + padding: 0 0; +} +#nav-above { + margin: 0 0 15px; + padding: 0; +} +.comment-options { + margin: 10px 0 2px; +} +.comment-options .comment-reply-link, +.comment-options .comment-edit-link { + font: normal 11px/20px Arial, Tahoma, Verdana, sans-serif; + margin-right: 5px; + padding: 4px 8px; +} +.commentlist ul.children div.comment-options { + margin-bottom: 10px; +} + + +/*-------------------------------------------------------------- +5.3 - Gallery +--------------------------------------------------------------*/ +.wp-caption { + background-color: #f3f3f3; + border: 1px solid #ddd; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + margin-bottom: 15px; + padding-top: 4px; + text-align: center; + +} +.wp-caption img { + border: 0 none; + margin: 0; + padding: 0; + +} +dd.wp-caption p.wp-caption-text, +.wp-caption p.wp-caption-text { + font-size: 0.9em; + line-height: 17px; + margin: 0; + padding: 5px 4px 5px 0; +} +#content .gallery { + margin: 0 auto 15px; +} +#content .gallery .gallery-item { + margin-bottom: 0; + margin-left: 0; +} +.gallery-item img { + margin-bottom: 15px; +} +.gallery .gallery-caption { + color: #555; +} + + +/*-------------------------------------------------------------- +5.4 - Images +--------------------------------------------------------------*/ +img.avatar { + border: 2px solid #eee; + float: left; +} +img.wp-smiley { + border: none !important; + clear: none !important; + float: none !important; + margin: 0 !important; + padding: 0 !important; +} +img.centered, +img.aligncenter { + display: block; + margin-left: auto; + margin-right: auto; +} +img.alignright { + display: inline; + margin: 0 0 2px 7px; + padding: 4px; +} +img.alignleft { + display: inline; + margin: 0 7px 2px 0; + padding: 4px; +} + + +/*-------------------------------------------------------------- +5.5 - Posts +--------------------------------------------------------------*/ +div.page, +div.post, +div.attachment { + margin: 0 0 15px 0; + overflow: hidden; +} +div.page:last-child, +div.post:last-child, +#item-body:last-child, +#trackbacklist { + margin-bottom: 0; +} +h2.posttitle { + line-height: 120%; + margin: 0; +} +h2.pagetitle { + line-height: 120%; +} +h2.pagetitle a, +h2.posttitle a { + color: #666; + text-decoration: none; +} +.edit-link, +.page-link { + clear: both; + font-weight: bold; +} +div.post table, +div.page table { + border: 1px solid #eee; + border-collapse: collapse; + border-spacing: 0; + margin-bottom: 15px; +} +div.post table th, +div.page table th { + border-top: 1px solid #eee; + text-align: left; +} +div.post table td, +div.page table td { + border-top: 1px solid #eee; +} +div.author-box { + background: #f0f0f0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + float: left; + font-family: georgia, times, serif; + font-style: italic; + margin: 0 15px 15px 0; + padding: 10px; + text-align: center; + width: 70px; +} +div.author-box p { + word-wrap: break-word; +} +div.author-box p, +div.comment-avatar-box p { + margin: 5px 0 0; +} +div.author-box a, +div.comment-avatar-box a { + text-decoration: none; +} +div.author-box img { + float: none; + border: 4px solid #fff; + margin: 0; +} +div.post-content { + margin-left: 105px; +} +p.date span:first-child { + font-style: italic; +} +div.post .entry { + margin-bottom: 15px; +} +p.date, +p.postmetadata { + border-bottom: 1px solid #e4e4e4; + border-top: 1px solid #e4e4e4; + color: #888; + font-family: Georgia, times, serif; + font-size: 12px; + margin: 10px 0; + padding: 3px 0; +} +p.postmetadata { + clear: left; + overflow: hidden; +} +.page .tags, +.post .tags { + float: left; +} +span.sticky-post { + font-style: normal; +} + + +/*-------------------------------------------------------------- +6.0 - BuddyPress +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- +6.1 - Activity +--------------------------------------------------------------*/ +#activity-stream { + margin-top: -5px; +} +#item-body form#whats-new-form { + border-bottom: 1px solid #ddd; + margin: 20px 0 10px; + padding-bottom: 20px; +} +.home-page form#whats-new-form { + border-bottom: none; + padding-bottom: 0; +} +form#whats-new-form h5 { + font-weight: normal; + font-size: 12px; + color: #888; + margin: 0; + margin-left: 76px; + padding: 0 0 3px 0; +} +form#whats-new-form #whats-new-avatar { + float: left; +} +form#whats-new-form #whats-new-content { + margin-left: 54px; + padding-left: 22px; +} +form#whats-new-form textarea { + background: #fff; + border: 1px inset #ccc; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #555; + font-family: inherit; + font-size: 14px; + height: 20px; + padding: 6px; + width: 98%; +} +body.no-js form#whats-new-form textarea { + height: 50px; +} +form#whats-new-form #whats-new-options select { + max-width: 200px; + margin-top: 12px; +} +form#whats-new-form #whats-new-submit { + float: right; + margin-top: 12px; +} +#whats-new-options { + overflow: auto; + height: 0; +} +body.no-js #whats-new-options { + height: auto; +} +#whats-new:focus { + border-color: rgba(31, 179, 221, 0.9) !important; + outline-color: rgba(31, 179, 221, 0.9); + box-shadow: 0 0 7px rgba(31, 179, 221, 0.7); + -moz-box-shadow: 0 0 7px rgba(31, 179, 221, 0.7); + -webkit-box-shadow: 0 0 7px rgba(31, 179, 221, 0.7); +} + +/*-------------------------------------------------------------- +6.1.1 - Activity Listing +--------------------------------------------------------------*/ +ul.activity-list li { + overflow: hidden; + padding: 15px 0 0; +} +.activity-list .activity-avatar { + float: left; +} +ul.activity-list > li:first-child { + padding-top: 5px; +} +ul.item-list.activity-list li.has-comments { + padding-bottom: 15px; +} +body.activity-permalink ul.activity-list li.has-comments { + padding-bottom: 0; +} +.activity-list li.mini { + font-size: 11px; + min-height: 35px; + padding: 15px 0 0 0; + position: relative; +} +.activity-list li.mini .activity-avatar img.avatar, +.activity-list li.mini .activity-avatar img.FB_profile_pic { + height: 20px; + margin-left: 30px; + width: 20px; +} +.activity-permalink .activity-list li.mini .activity-avatar img.avatar, +.activity-permalink .activity-list li.mini .activity-avatar img.FB_profile_pic { + height: auto; + margin-left: 0; + width: auto; +} +body.activity-permalink .activity-list > li:first-child { + padding-top: 0; +} +.activity-list li .activity-content { + position: relative; +} +.activity-list li.mini .activity-content p { + margin: 0; +} +.activity-list li.mini .activity-comments { + clear: both; + font-size: 12px; +} +body.activity-permalink li.mini .activity-meta { + margin-top: 4px; +} +.activity-list li .activity-inreplyto { + background: url( ../images/replyto_arrow.gif ) 7px 0 no-repeat; + color: #888; + font-size: 11px; + margin-left: 5px; + margin-top: 5px; + padding-left: 25px; +} +.activity-list li .activity-inreplyto > p { + margin: 0; + display: inline; +} +.activity-list li .activity-inreplyto blockquote, +.activity-list li .activity-inreplyto div.activity-inner { + background: none; + border: none; + display: inline; + margin: 0; + overflow: hidden; + padding: 0; +} +.activity-list .activity-content { + margin-left: 70px; + margin-bottom: 15px; +} +body.activity-permalink .activity-list li .activity-content { + background: #fff; + border-bottom: 1px solid #ddd; + border-right: 1px solid #ddd; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + font-size: 16px; + line-height: 150%; + min-height: 35px; + margin-left: 185px; + margin-right: 0; + padding: 15px; +} +body.activity-permalink .activity-list li .activity-header > p { + background: url( ../images/activity_arrow.gif ) top left no-repeat; + height: 35px; + margin-bottom: 0; + margin-left: -35px; + padding: 5px 0 0 35px; +} +.activity-list .activity-content .activity-header, +.activity-list .activity-content .comment-header { + color: #888; + font-size: 11px; + line-height: 220%; +} +.activity-header { + margin-right: 20px; +} +.activity-header a, +.comment-meta a, +.acomment-meta a { + text-decoration: none; +} +.activity-list .activity-content .activity-header img.avatar { + float: none !important; + margin: 0 5px -8px 0 !important; +} +a.bp-secondary-action, +span.highlight { + font-size: 11px; + padding: 0; + margin-right: 5px; + text-decoration: none; +} +.activity-list .activity-content .activity-inner, +.activity-list .activity-content blockquote { + margin: 10px 10px 5px 0; + overflow: hidden; +} +.activity-list li.new_forum_post .activity-content .activity-inner, +.activity-list li.new_forum_topic .activity-content .activity-inner { + border-left: 2px solid #EAEAEA; + margin-left: 5px; + padding-left: 10px; +} +body.activity-permalink .activity-content .activity-inner, +body.activity-permalink .activity-content blockquote { + margin-left: 0; + margin-top: 5px; +} +.activity-inner > p { + word-wrap: break-word; +} +.activity-inner > .activity-inner { + margin: 0 !important; +} +.activity-inner > blockquote { + margin: 0 !important; +} +.activity-list .activity-content img.thumbnail { + border: 2px solid #eee; + float: left; + margin: 0 10px 5px 0; +} +.activity-read-more { + margin-left: 1em; + white-space: nowrap; +} +.activity-list li.load-more { + background: #f0f0f0 !important; + border-right: 1px solid #ddd; + border-bottom: 1px solid #ddd; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + font-size: 1.2em; + margin: 15px 0 !important; + padding: 10px 15px !important; + text-align: center; +} +.activity-list li.load-more a { + color: #4D4D4D; +} + + +/*-------------------------------------------------------------- +6.1.2 - Activity Comments +--------------------------------------------------------------*/ +div.activity-meta { + margin: 18px 0; +} +body.activity-permalink div.activity-meta { + margin-bottom: 6px; +} +div.activity-meta a { + font: normal 11px/20px Arial, Tahoma, Verdana, sans-serif; + padding: 4px 8px; +} +a.activity-time-since { + color: #aaa; + text-decoration: none; +} +a.activity-time-since:hover { + color: #888; + text-decoration: underline; +} +a.bp-primary-action, +#reply-title small a { + font-size: 11px; + margin-right: 5px; + text-decoration: none; +} +a.bp-primary-action span, +#reply-title small a span { + background: #999; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #fff; + font-size: 90%; + margin-left: 2px; + padding: 0 5px; +} +a.bp-primary-action:hover span, +#reply-title small a:hover span { + background: #555; + color: #fff; +} +div.activity-comments { + margin: 0 0 0 70px; + overflow: hidden; /* IE fix */ + position: relative; + width: auto; + clear: both; +} +body.activity-permalink div.activity-comments { + background: none; + margin-left: 185px; + width: auto; +} +div.activity-comments > ul { + background: #f5f5f5; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + padding: 0 0 0 10px; +} +div.activity-comments ul, +div.activity-comments ul li { + border: none; + list-style: none; +} +div.activity-comments ul { + clear: both; +} +div.activity-comments ul li { + border-top: 2px solid #fff; + padding: 10px 0 0; +} +body.activity-permalink .activity-list li.mini .activity-comments { + clear: none; + margin-top: 0; +} +body.activity-permalink div.activity-comments ul li { + border-width: 1px; + padding: 10px 0 0 0; +} +div.activity-comments > ul > li:first-child { + border-top: none; +} +div.activity-comments ul li:last-child { + margin-bottom: 0; +} +div.activity-comments ul li > ul { + margin-left: 30px; + margin-top: 0; + padding-left: 10px; +} +body.activity-permalink div.activity-comments ul li > ul { + margin-top: 10px; +} +body.activity-permalink div.activity-comments > ul { + padding: 0 10px 0 15px; +} +div.activity-comments div.acomment-avatar img { + border-width: 2px !important; + float: left; + height: 25px; + margin-right: 10px; + width: 25px; +} +div.activity-comments div.acomment-content { + font-size: 11px; + margin: 5px 0 0 40px; +} +div.acomment-content .time-since, +div.acomment-content .activity-delete-link, +div.acomment-content .comment-header { + display: none; +} +body.activity-permalink div.activity-comments div.acomment-content { + font-size: 14px; +} +div.activity-comments div.acomment-meta { + color: #888; + font-size: 11px; +} +div.activity-comments form.ac-form { + background: #fafafa; + border: 1px solid #ddd; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + display: none; + margin: 0 0 15px 33px; + padding: 8px; +} +div.activity-comments li form.ac-form { + margin-right: 15px; + clear: both; +} +div.activity-comments form.root { + margin-left: 0; +} +div.activity-comments div#message { + margin-top: 15px; + margin-bottom: 0; +} +div.activity-comments form.loading { + background-image: url( ../images/ajax-loader.gif ); + background-position: 2% 95%; + background-repeat: no-repeat; +} +div.activity-comments form .ac-textarea { + background: #fff; + border: 1px inset #ccc; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + margin-bottom: 10px; + padding: 8px; +} +div.activity-comments form textarea { + border: none; + color: #555; + font-family: inherit; + font-size: 11px; + height: 60px; + padding: 0; + width: 100%; +} +div.activity-comments form input { + margin-top: 5px; +} +div.activity-comments form div.ac-reply-avatar { + float: left; +} +div.ac-reply-avatar img { + border: 2px solid #fff !important; +} +div.activity-comments form div.ac-reply-content { + color: #888; + font-size: 11px; + margin-left: 50px; + padding-left: 15px; +} +.acomment-options { + float: left; + margin: 5px 0 5px 40px; +} +.acomment-options a { + color: #999; +} +.acomment-options a:hover { + color: inherit; +} + + +/*-------------------------------------------------------------- +6.2 - Admin Bar +--------------------------------------------------------------*/ +#wp-admin-bar .padder { + width: 95% !important; /* Line up the admin bar with the content body in this theme */ +} + + +/*-------------------------------------------------------------- +6.3 - Directories - Members, Groups, Blogs, Forums +--------------------------------------------------------------*/ +div.dir-search { + float: right; + margin: -39px 0 0 0; +} +div.dir-search input[type=text] { + font-size: 12px; + padding: 1px 3px; +} + + +/*-------------------------------------------------------------- +6.4 - Errors / Success Messages +--------------------------------------------------------------*/ +div#message { + margin: 0 0 15px; +} +#message.info { + margin-bottom: 0; +} +div#message.updated { + clear: both; +} +div#message p { + font-size: 12px; + display: block; + padding: 10px 15px; +} +div#message.error p { + background-color: #db1717; + border-color: #a71a1a; + clear: left; + color: #fff; +} +div#message.updated p { + background-color: #8ff57a; + border-color: #80cf70; + color: #1a6a00; +} +.standard-form#signup_form div div.error { + background: #e41717; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #fff; + margin: 0 0 10px 0; + padding: 6px; + width: 90%; +} +div.accept, +div.reject { + float: left; + margin-left: 10px; +} +ul.button-nav li { + float: left; + margin: 0 10px 10px 0; +} +ul.button-nav li.current a { + font-weight: bold; +} + + +/*-------------------------------------------------------------- +6.5 - Forms +--------------------------------------------------------------*/ +.standard-form textarea, +.standard-form input[type=text], +.standard-form select, +.standard-form input[type=password], +.dir-search input[type=text] { + border: 1px inset #ccc; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #888; + font: inherit; + font-size: 14px; + padding: 6px; +} +.standard-form select { + padding: 3px; +} +.standard-form input[type=password] { + margin-bottom: 5px; +} +.standard-form label, +.standard-form span.label { + display: block; + font-weight: bold; + margin: 15px 0 5px 0; +} +.standard-form div.checkbox label, +.standard-form div.radio label { + color: #888; + font-size: 14px; + font-weight: normal; + margin: 5px 0 0 0; +} +.standard-form#sidebar-login-form label { + margin-top: 5px; +} +.standard-form input[type=text] { + width: 75%; +} +.standard-form#sidebar-login-form input[type=text], +.standard-form#sidebar-login-form input[type=password] { + padding: 4px; + width: 95%; +} +.standard-form #basic-details-section input[type=password], +.standard-form #blog-details-section input#signup_blog_url { + width: 35%; +} +.standard-form#signup_form input[type=text], +.standard-form#signup_form textarea, +.form-allowed-tags, +#commentform input[type=text], +#commentform textarea { + width: 90%; +} +.standard-form#signup_form div.submit { + float: right; +} +div#signup-avatar img { + margin: 0 15px 10px 0; +} +.standard-form textarea { + width: 75%; + height: 120px; +} +.standard-form textarea#message_content { + height: 200px; +} +.standard-form#send-reply textarea { + width: 97.5%; +} +.standard-form p.description { + color: #888; + font-size: 11px; + margin: 5px 0; +} +.standard-form div.submit { + clear: both; + padding: 15px 0 0 0; +} +.standard-form p.submit { + margin-bottom: 0; + padding: 15px 0 0 0; +} +.standard-form div.submit input { + margin-right: 15px; +} +.standard-form div.radio ul { + margin: 10px 0 15px 38px; + list-style: disc; +} +.standard-form div.radio ul li { + margin-bottom: 5px; +} +.standard-form a.clear-value { + display: block; + margin-top: 5px; + outline: none; +} +.standard-form #basic-details-section, +.standard-form #blog-details-section, +.standard-form #profile-details-section { + float: left; + width: 48%; +} +.standard-form #profile-details-section { + float: right; +} +.standard-form #blog-details-section { + clear: left; +} +.standard-form input:focus, +.standard-form textarea:focus, +.standard-form select:focus { + background: #fafafa; + color: #555; +} +form#send-invite-form { + margin-top: 20px; +} +div#invite-list { + background: #f5f5f5; + border: 1px solid #e4e4e4; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + height: 400px; + margin: 0 0 10px; + overflow: auto; + padding: 5px; + width: 160px; +} +button, +a.button, +input[type=submit], +input[type=button], +input[type=reset], +ul.button-nav li a, +div.generic-button a, +.comment-reply-link { + background: #fff; /* Old browsers */ + background: -moz-linear-gradient(top, #ffffff 0%, #ededed 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#ededed)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffffff 0%,#ededed 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffffff 0%,#ededed 100%); /* Opera11.10+ */ + background: -ms-linear-gradient(top, #ffffff 0%,#ededed 100%); /* IE10+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ededed',GradientType=0 ); /* IE6-9 */ + background: linear-gradient(top, #ffffff 0%,#ededed 100%); /* W3C */ + border: 1px solid #ccc; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #777; + cursor: pointer; + font: normal 12px/20px Arial, Tahoma, Verdana, sans-serif; + outline: none; + padding: 4px 10px; + text-align: center; + text-decoration: none; + line-height: 14px; +} +button:hover, +a.button:hover, +a.button:focus, +input[type=submit]:hover, +input[type=button]:hover, +input[type=reset]:hover, +ul.button-nav li a:hover, +ul.button-nav li.current a, +div.generic-button a:hover, +.comment-reply-link:hover { + background: #ededed; + background: -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e0e0e0)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* Opera11.10+ */ + background: -ms-linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* IE10+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e0e0e0',GradientType=0 ); /* IE6-9 */ + background: linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* W3C */ + border: 1px solid #bbb; + color: #555; + outline: none; + text-decoration: none; +} + +/*-------------------------------------------------------------- +6.6 - Ajax Loading +--------------------------------------------------------------*/ +a.loading, +input.loading { + background-image: url( ../images/ajax-loader.gif ); + background-position: 95% 50%; + background-repeat: no-repeat; + padding-right: 25px; +} +a.loading:hover, +input.loading:hover { + background-image: url( ../images/ajax-loader.gif ); + background-position: 95% 50%; + background-repeat: no-repeat; + padding-right: 25px; + color: #777; +} +a.button.loading, +input[type="submit"].loading, +input[type="button"].loading, +input[type="reset"].loading { + background-image: url( ../images/ajax-loader.gif ), -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%); /* FF3.6+ */ + background-image: url( ../images/ajax-loader.gif ), -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e0e0e0)); /* Chrome,Safari4+ */ + background-image: url( ../images/ajax-loader.gif ), -webkit-linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* Chrome10+,Safari5.1+ */ + background-image: url( ../images/ajax-loader.gif ), -o-linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* Opera11.10+ */ + background-image: url( ../images/ajax-loader.gif ), -ms-linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* IE10+ */ + filter: progid:DXImageTransform.Microsoft.gradient( enabled=0 ); /* IE6-9 */ + background-image: url( ../images/ajax-loader.gif ), linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* W3C */ + background-position: 95% 50%; + background-repeat: no-repeat; + padding-right: 25px; +} +a.button.loading:hover, +input[type="submit"].loading:hover, +input[type="button"].loading:hover, +input[type="reset"].loading:hover { + background-image: url( ../images/ajax-loader.gif ), -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%); /* FF3.6+ */ + background-image: url( ../images/ajax-loader.gif ), -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e0e0e0)); /* Chrome,Safari4+ */ + background-image: url( ../images/ajax-loader.gif ), -webkit-linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* Chrome10+,Safari5.1+ */ + background-image: url( ../images/ajax-loader.gif ), -o-linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* Opera11.10+ */ + background-image: url( ../images/ajax-loader.gif ), -ms-linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* IE10+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e0e0e0',GradientType=0 ); /* IE6-9 */ + background-image: url( ../images/ajax-loader.gif ), linear-gradient(top, #ffffff 0%,#e0e0e0 100%); /* W3C */ + border: 1px solid #ccc; + padding-right: 25px; +} +input[type="submit"].pending, +input[type="button"].pending, +input[type="reset"].pending, +input[type="submit"].disabled, +input[type="button"].disabled, +input[type="reset"].disabled, +button.pending, +button.disabled, +div.pending a, +a.disabled { + border-color: #eee; + color: #bbb; + cursor: default; +} +input[type="submit"]:hover.pending, +input[type="button"]:hover.pending, +input[type="reset"]:hover.pending, +input[type="submit"]:hover.disabled, +input[type="button"]:hover.disabled, +input[type="reset"]:hover.disabled, +button.pending:hover, +button.disabled:hover, +div.pending a:hover, +a.disabled:hover { + background: -moz-linear-gradient(top, #ffffff 0%, #ededed 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#ededed)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffffff 0%,#ededed 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffffff 0%,#ededed 100%); /* Opera11.10+ */ + background: -ms-linear-gradient(top, #ffffff 0%,#ededed 100%); /* IE10+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ededed',GradientType=0 ); /* IE6-9 */ + background: linear-gradient(top, #ffffff 0%,#ededed 100%); /* W3C */ + border-color: #eee; + color: #bbb; +} + + +/*-------------------------------------------------------------- +6.7 - Forums, Tables and Topics +--------------------------------------------------------------*/ +ul#topic-post-list { + margin: 0px -19px 15px; + width: auto; +} +ul#topic-post-list li { + padding: 15px; + position: relative; +} +ul#topic-post-list li.alt { + background: #f5f5f5; +} +ul#topic-post-list li div.poster-meta { + color: #888; + margin-bottom: 10px; +} +ul#topic-post-list li div.post-content { + margin-left: 54px; +} +div.topic-tags { + font-size: 11px; + float: right; + margin-top: -25px; +} +div.admin-links { + color: #888; + font-size: 11px; + position: absolute; + top: 15px; + right: 25px; +} +div#topic-meta { + margin: -10px -19px; + padding: 5px 19px 30px; + position: relative; +} +div#topic-meta div.admin-links { + right: 19px; + top: -36px; +} +div#topic-meta h3 { + font-size: 20px; + margin: 5px 0; +} +div#new-topic-post { + display: none; + margin: 20px 0 0 0; + padding: 1px 0 0 0; +} +table { + width: 100%; +} +table thead tr { + background: #eaeaea; +} +table#message-threads { + margin: 0 -19px; + width: auto; +} +table.profile-fields { + margin-bottom: 20px; +} +table.profile-fields:last-child { + margin-bottom: 0; +} +table.profile-fields p { + margin-top: 15px; +} +table.profile-fields p:last-child { + margin-top: 0; +} +div#sidebar table { + margin: 0 -16px; + width: 117%; +} +table tr td, +table tr th { + padding: 8px; + vertical-align: middle; +} +table tr td.label { + border-right: 1px solid #eaeaea; + font-weight: bold; + width: 25%; +} +table tr td.thread-info p { + margin: 0; +} +table tr td.thread-info p.thread-excerpt { + color: #888; + font-size: 11px; + margin-top: 3px; +} +div#sidebar table td, +table.forum td { + text-align: center; +} +table tr.alt td { + background: #f5f5f5; +} +table.notification-settings { + margin-bottom: 20px; + text-align: left; +} +#groups-notification-settings { + margin-bottom: 0; +} +table.notification-settings th.icon, +table.notification-settings td:first-child { + display: none; +} +table.notification-settings th.title { + width: 80%; +} +table.notification-settings .yes, +table.notification-settings .no { + text-align: center; + width: 40px; +} +table.forum { + margin: 0 -19px; + width: auto; +} +table.forum tr.sticky td { + font-size: 1.2em; + background: #fff9db; + border-top: 1px solid #ffe8c4; + border-bottom: 1px solid #ffe8c4; +} +table.forum tr.closed td.td-title { + background-image: url( ../images/closed.png ); + background-position: 15px 50%; + background-repeat: no-repeat; + padding-left: 35px; +} +table.forum td p.topic-text { + color: #888; + font-size: 13px; +} +table.forum tr > td:first-child, +table.forum tr > th:first-child { + padding-left: 15px; +} +table.forum tr > td:last-child, +table.forum tr > th:last-child { + padding-right: 15px; +} +table.forum tr th#th-title, +table.forum tr th#th-poster, +table.forum tr th#th-group, +table.forum td.td-poster, +table.forum td.td-group, +table.forum td.td-title { + text-align: left; +} +table.forum tr td.td-title a.topic-title { + font-size: 1.2em; +} +table.forum td.td-freshness { + white-space: nowrap; +} +table.forum td.td-freshness span.time-since { + font-size: 0.9em; + color: #888; +} +table.forum td img.avatar { + float: none; + margin: 0 5px -8px 0; +} +table.forum td.td-poster, +table.forum td.td-group { + min-width: 140px; +} +table.forum th#th-title { + width: 80%; +} +table.forum th#th-freshness { + width: 25%; +} +table.forum th#th-postcount { + width: 15%; +} +table.forum p.topic-meta { + font-size: 0.9em; + margin: 5px 0 0 0; +} + +/*-------------------------------------------------------------- +6.8 - Headers, Lists and Tabs - Activity, Groups, Blogs, Forums +--------------------------------------------------------------*/ +.item-body { + margin: 20px 0; +} +span.activity { + display: inline-block; + font-size: 11px; + opacity: 0.8; + padding: 1px 8px; +} +span.user-nicename { + color: #777; + display: inline-block; + font-size: 16px; + font-weight: bold; +} +span.activity, +div#message p { + border: 1px solid #e1ca82; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + font-weight: normal; + margin-top: 3px; + text-decoration: none; + background: #ffeaa6; + background-image: -webkit-linear-gradient(rgba(255, 255, 255, .5), rgba(255, 255, 255, 0)); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255, 255, 255, .5)), color-stop(100%,rgba(255, 255, 255, 0))); /* Chrome,Safari4+ */ + background-image: -moz-linear-gradient(rgba(255, 255, 255, .5), rgba(255, 255, 255, 0)); + background-image: -ms-linear-gradient(rgba(255, 255, 255, .5), rgba(255, 255, 255, 0)); + background-image: -o-linear-gradient(rgba(255, 255, 255, .5), rgba(255, 255, 255, 0)); + background-image: linear-gradient(rgba(255, 255, 255, .5), rgba(255, 255, 255, 0)); +} +div#item-header { + overflow: hidden; +} +div#item-header div#item-header-content { + margin-left: 170px; +} +div#item-header h2 { + font-size: 28px; + line-height: 120%; + margin: 0 0 15px 0; +} +div#item-header h2 a { + color: #777; + text-decoration: none; +} +div#item-header img.avatar { + float: left; + margin: 0 15px 19px 0; +} +div#item-header h2 { + margin-bottom: 5px; +} +div#item-header span.activity, +div#item-header h2 span.highlight { + font-size: 11px; + font-weight: normal; + line-height: 170%; + margin-bottom: 7px; + vertical-align: middle; +} +div#item-header h2 span.highlight { + font-size: 16px; +} +div#item-header h2 span.highlight span { + background: #a1dcfa; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #fff; + cursor: pointer; + font-weight: bold; + font-size: 11px; + margin-bottom: 2px; + padding: 1px 4px; + position: relative; + right: -2px; + top: -2px; + vertical-align: middle; +} +div#item-header div#item-meta { + font-size: 14px; + color: #aaa; + overflow: hidden; + margin: 15px 0 5px 0; + padding-bottom: 10px; +} +div#item-header div#item-actions { + float: right; + margin: 0 0 15px 15px; + text-align: right; + width: 20%; +} +div#item-header div#item-actions h3 { + font-size: 12px; + margin: 0 0 5px 0; +} +div#item-header ul { + margin-bottom: 15px; + overflow: hidden; +} +div#item-header ul h5, +div#item-header ul span, +div#item-header ul hr { + display: none; +} +div#item-header ul li { + float: right; +} +div#item-header ul img.avatar, +div#item-header ul.avatars img.avatar { + height: 30px; + margin: 2px; + width: 30px; +} +div#item-header div.generic-button, +div#item-header a.button { + float: left; + margin: 10px 10px 0 0; +} +div#item-header div#message.info { + line-height: 80%; +} +ul.item-list { + width: 100%; +} +ul.item-list li { + border-bottom: 1px solid #eaeaea; + padding: 15px 0; + position: relative; +} +ul.item-list.activity-list li { + padding-bottom: 0; +} +ul.single-line li { + border: none; +} +ul.item-list li img.avatar { + float: left; + margin: 0 10px 0 0; +} +ul.item-list li div.item-title, +ul.item-list li h4 { + font-weight: normal; + font-size: 14px; + margin: 0; + width: 75%; +} +ul.item-list li div.item-title span { + color: #999; + font-size: 12px; +} +ul.item-list li div.item-desc { + color: #888; + font-size: 11px; + margin: 10px 0 0 64px; + width: 50%; +} +ul.item-list li div.action { + position: absolute; + top: 15px; + right: 0; + text-align: right; +} +ul.item-list li div.meta { + color: #888; + font-size: 11px; + margin-top: 10px; +} +ul.item-list li h5 span.small { + float: right; + font-size: 11px; + font-weight: normal; +} +div.item-list-tabs { + background: #eaeaea; + clear: left; + margin: 25px -19px 20px -19px; + overflow: hidden; +} +div.item-list-tabs ul li a { + text-decoration: none; + height: 20px; +} +div.item-list-tabs ul { + width: 100%; +} +div.item-list-tabs ul li { + float: left; + margin: 5px 0 0 5px; +} +div.item-list-tabs#subnav ul li { + margin-top: 0; +} +div.item-list-tabs ul li:first-child { + margin-left: 20px; +} +div.item-list-tabs ul li.last { + float: right; + margin: 7px 20px 0 0; +} +div.item-list-tabs#subnav ul li.last { + margin-top: 4px; +} +div.item-list-tabs ul li.last select { + max-width: 175px; +} +div.item-list-tabs ul li a, +div.item-list-tabs ul li span { + display: block; + padding: 5px 10px; + text-decoration: none; +} +div.item-list-tabs ul li a span { + background: #1fb3dd; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #fff; + display: inline; + font-size: 90%; + margin-left: 2px; + padding: 1px 6px; +} +div.item-list-tabs ul li.selected a, +div.item-list-tabs ul li.current a { + background-color: #fff; + -moz-border-radius-topleft: 3px; + -webkit-border-top-left-radius: 3px; + -moz-border-radius-topright: 3px; + -webkit-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + color: #555; + font-weight: bold; +} +div.item-list-tabs ul li.selected a span, +div.item-list-tabs ul li.current a span, +div.item-list-tabs ul li a:hover span { + background-color: #999; +} +div.item-list-tabs ul li.selected a span, +div.item-list-tabs ul li.current a span { + background-color: #555; +} +ul li.loading a { + background-image: url( ../images/ajax-loader.gif ); + background-position: 92% 50%; + background-repeat: no-repeat; + padding-right: 30px !important; +} +div#item-nav ul li.loading a { + background-position: 88% 50%; +} +div.item-list-tabs#object-nav { + margin-top: 0; +} +div.item-list-tabs#subnav { + background: #fff; + border-bottom: 1px solid #eaeaea; + margin: -15px -19px 15px -19px; + min-height: 35px; + overflow: hidden; +} +div.item-list-tabs ul li.feed a { + background: url( ../images/rss.png ) center left no-repeat; + padding-left: 20px; +} +#admins-list li { + overflow: auto; +} + + +/*-------------------------------------------------------------- +6.9 - Private Messaging Threads +--------------------------------------------------------------*/ +table#message-threads tr.unread td { + background: #fff9db; + border-top: 1px solid #ffe8c4; + border-bottom: 1px solid #ffe8c4; + font-weight: bold; +} +li span.unread-count, +tr.unread span.unread-count { + background: #dd0000; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #fff; + font-weight: bold; + padding: 2px 8px; +} +div.item-list-tabs ul li a span.unread-count { + padding: 1px 6px; + color: #fff; +} +div.messages-options-nav { + background: #eee; + font-size: 11px; + margin: 0 -19px; + padding: 5px 15px; + text-align: right; +} +div#message-thread div.message-box { + margin: 0 -19px; + padding: 15px; +} +div#message-thread div.alt { + background: #f4f4f4; +} +div#message-thread p#message-recipients { + margin: 10px 0 20px 0; +} +div#message-thread img.avatar { + float: left; + margin: 0 10px 0 0; + vertical-align: middle; +} +div#message-thread strong { + font-size: 16px; + margin: 0; +} +div#message-thread strong a { + text-decoration: none; +} +div#message-thread strong span.activity { + margin: 4px 0 0 10px; +} +div#message-thread div.message-metadata { + overflow: hidden; +} +div#message-thread div.message-content { + margin-left: 45px; +} +div#message-thread div.message-options { + text-align: right; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/responsive-rtl.css b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/responsive-rtl.css new file mode 100644 index 0000000..213a316 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/responsive-rtl.css @@ -0,0 +1,54 @@ +/*-------------------------------------------------------------- +Hello, this is the BuddyPress Reponsive theme rtl stylesheet. +Right to left styles. This will transform the theme to read from +right to left for languages that support this method. + +---------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +1.0 - iPad + 1.1 - Landscape + 1.2 - Portrait +2.0 - iPhone +--------------------------------------------------------------*/ + +/*-------------------------------------------------------------- +1.1 - iPad Landscape +--------------------------------------------------------------*/ +@media only screen and (max-width: 768px) { + div#content .padder { + margin-left: 0; + margin-right: auto; + } + ul#nav li { + margin-left: 0; + margin-right: auto; + } + ul#nav li:nth-child(even) { + margin-left: 0; + margin-right: 3%; + } +} + + +/*-------------------------------------------------------------- +1.2 - iPad Portrait +--------------------------------------------------------------*/ +@media only screen and (max-width: 640px) { + ul.item-list li div.action { + padding-left: auto; + padding-right: 64px; + } +} + + +/*-------------------------------------------------------------- +2.0 - iPhone +--------------------------------------------------------------*/ +@media only screen and (max-width: 320px) { + div.post div.post-content, + div.comment-content { + margin-left: auto; + margin-right: 0px; + } +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/responsive.css b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/responsive.css new file mode 100644 index 0000000..77ddaed --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/css/responsive.css @@ -0,0 +1,200 @@ +/*-------------------------------------------------------------- +Hello, this is the BuddyPress Responsive theme stylesheet + +---------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +1.0 - iPad + 1.1 - Landscape + 1.2 - Portrait +2.0 - Smartphone +3.0 - iPhone +--------------------------------------------------------------*/ + +/*-------------------------------------------------------------- +1.1 - iPad Landscape +--------------------------------------------------------------*/ +@media only screen and (max-width: 768px) { + html { + background-color: #eaeaea; + } + body { + margin-top: -28px !important; + background: #eaeaea; + } + #wpadminbar { + display: none; + } + div#content .padder { + margin-right: 0; + width: auto; + float: none; + border: none; + } + div#sidebar { + width: auto; + float: none; + margin: 2em 0 0 0; + border: none; + } + ul#nav { + padding-bottom: 1em; + } + ul#nav li { + width: 46%; + margin-bottom: 1em; + margin-right: 0; + } + ul#nav li:nth-child(even) { + margin-left: 3%; + margin-right: 0; + } + ul#nav li a { + -moz-border-radius: 0.25em; + -webkit-border-radius: 0.25em; + border-radius: 0.25em; + margin-bottom: 0; + } +} + + +/*-------------------------------------------------------------- +1.2 - iPad Portrait +--------------------------------------------------------------*/ +@media only screen and (max-width: 640px) { + div.dir-search { + float: none; + margin: 1.25em 0 0; + } + ul.item-list li div.action { + padding-left: 64px; + position: relative; + right: auto; + text-align: left; + top: 1em; + margin-bottom: 1.25em; + } +} + + +/*-------------------------------------------------------------- +2.0 - Smartphone (any) +--------------------------------------------------------------*/ +@media screen and (max-device-width: 480px), screen and (-webkit-min-device-pixel-ratio: 2) { + -webkit-text-size-adjust: none; +} + +@media only screen and (max-width: 480px) { + body { + width: 100%; + margin: 0; + } + #container { + border: none; + } + div.item-list-tabs ul li { + float: none; + margin: 0.3em 0.6em; + background:none; + } + div.item-list-tabs ul li.last { + float: none; + margin: 0.3em 0.6em; + } + div#subnav.item-list-tabs ul li.last { + margin-top: 1em; + } + div.item-list-tabs ul li.selected, + div.item-list-tabs ul li.current { + margin: 0.3em 0.6em; + } + div.item-list-tabs ul li.selected a, + div.item-list-tabs ul li.current a { + background: #eee; + font-weight: bold; + } + div.item-list-tabs { + background: none; + } + div.item-list-tabs ul li:first-child { + margin: 0.6em 0.6em 0.5em 0.6em; + } + div.item-list-tabs ul li a, + div.item-list-tabs ul li span { + padding: 0.3em; + } + div#subnav ul { + padding-top: 0.6em; + } + div.pagination { + padding: 0.6em; + } + div.item-list-tabs ul { + border-top: 1px solid #EAEAEA; + padding-top: 0; + } + div.item-list-tabs ul li { + margin-top: 0; + } + form.standard-form #basic-details-section, + form.standard-form #blog-details-section, + form.standard-form #profile-details-section { + float: none; + width: 100%; + } +} + + +/*-------------------------------------------------------------- +3.0 - iPhone +--------------------------------------------------------------*/ +@media only screen and (max-width: 320px) { + ul#nav li { + float: none; + width: 100%; + margin-bottom: 0.6em; + margin-right: 0; + margin-left: 0; + } + ul#nav li:nth-child(even) { + margin-left: 0; + margin-right: 0; + } + ul#nav li a { + -moz-border-radius: 0.25em; + -webkit-border-radius: 0.25em; + border-radius: 0.25em; + margin-bottom: 0; + } + form#groups-directory-form h3 a { + display: block; + margin-top: 0.6em; + } + div.post div.author-box, + div.comment-avatar-box { + display: none; + } + div.post div.post-content, + div.comment-content { + margin-left: 0px; + } + form#whats-new-form div#whats-new-avatar { + display:none; + } + form#whats-new-form h5 { + margin: 0 0 0 0px; + } + form#whats-new-form #whats-new-content { + margin-left: 0px; + padding-left: 0px; + } + ul#activity-stream.item-list li div.activity-avatar { + display: none; + } + body.activity-permalink .activity-list li .activity-content { + margin-left: 0; + } + body.activity-permalink .activity-list li.mini .activity-meta { + left: 0; + } +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/global.js b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/global.js new file mode 100644 index 0000000..fe78104 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/global.js @@ -0,0 +1,1270 @@ +// AJAX Functions +var jq = jQuery; + +// Global variable to prevent multiple AJAX requests +var bp_ajax_request = null; + +jq(document).ready( function() { + /**** Page Load Actions *******************************************************/ + + /* Hide Forums Post Form */ + if ( '-1' == window.location.search.indexOf('new') && jq('div.forums').length ) + jq('div#new-topic-post').hide(); + else + jq('div#new-topic-post').show(); + + /* Activity filter and scope set */ + bp_init_activity(); + + /* Object filter and scope set. */ + var objects = [ 'members', 'groups', 'blogs', 'forums' ]; + bp_init_objects( objects ); + + /* @mention Compose Scrolling */ + if ( jq.query.get('r') && jq('textarea#whats-new').length ) { + jq('#whats-new-options').animate({height:'40px'}); + jq("form#whats-new-form textarea").animate({height:'50px'}); + jq.scrollTo( jq('textarea#whats-new'), 500, { offset:-125, easing:'easeOutQuad' } ); + jq('textarea#whats-new').focus(); + } + + /**** Activity Posting ********************************************************/ + + /* Textarea focus */ + jq('#whats-new').focus( function(){ + jq("#whats-new-options").animate({height:'40px'}); + jq("form#whats-new-form textarea").animate({height:'50px'}); + jq("#aw-whats-new-submit").prop("disabled", false); + }); + + /* New posts */ + jq("input#aw-whats-new-submit").click( function() { + var button = jq(this); + var form = button.parent().parent().parent().parent(); + + form.children().each( function() { + if ( jq.nodeName(this, "textarea") || jq.nodeName(this, "input") ) + jq(this).prop( 'disabled', true ); + }); + + /* Remove any errors */ + jq('div.error').remove(); + button.addClass('loading'); + button.prop('disabled', true); + + /* Default POST values */ + var object = ''; + var item_id = jq("#whats-new-post-in").val(); + var content = jq("textarea#whats-new").val(); + + /* Set object for non-profile posts */ + if ( item_id > 0 ) { + object = jq("#whats-new-post-object").val(); + } + + jq.post( ajaxurl, { + action: 'post_update', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce_post_update': jq("input#_wpnonce_post_update").val(), + 'content': content, + 'object': object, + 'item_id': item_id + }, + function(response) { + + form.children().each( function() { + if ( jq.nodeName(this, "textarea") || jq.nodeName(this, "input") ) { + jq(this).prop( 'disabled', false ); + } + }); + + /* Check for errors and append if found. */ + if ( response[0] + response[1] == '-1' ) { + form.prepend( response.substr( 2, response.length ) ); + jq( 'form#' + form.attr('id') + ' div.error').hide().fadeIn( 200 ); + } else { + if ( 0 == jq("ul.activity-list").length ) { + jq("div.error").slideUp(100).remove(); + jq("div#message").slideUp(100).remove(); + jq("div.activity").append( '<ul id="activity-stream" class="activity-list item-list">' ); + } + + jq("ul#activity-stream").prepend(response); + jq("ul#activity-stream li:first").addClass('new-update'); + + if ( 0 != jq("div#latest-update").length ) { + var l = jq("ul#activity-stream li.new-update .activity-content .activity-inner p").html(); + var v = jq("ul#activity-stream li.new-update .activity-content .activity-header p a.view").attr('href'); + + var ltext = jq("ul#activity-stream li.new-update .activity-content .activity-inner p").text(); + + var u = ''; + if ( ltext != '' ) + u = '"' + l + '" '; + + u += '<a href="' + v + '" rel="nofollow">' + BP_DTheme.view + '</a>'; + + jq("div#latest-update").slideUp(300,function(){ + jq("div#latest-update").html( u ); + jq("div#latest-update").slideDown(300); + }); + } + + jq("li.new-update").hide().slideDown( 300 ); + jq("li.new-update").removeClass( 'new-update' ); + jq("textarea#whats-new").val(''); + } + + jq("#whats-new-options").animate({height:'0px'}); + jq("form#whats-new-form textarea").animate({height:'20px'}); + jq("#aw-whats-new-submit").prop("disabled", true).removeClass('loading'); + }); + + return false; + }); + + /* List tabs event delegation */ + jq('div.activity-type-tabs').click( function(event) { + var target = jq(event.target).parent(); + + if ( event.target.nodeName == 'STRONG' || event.target.nodeName == 'SPAN' ) + target = target.parent(); + else if ( event.target.nodeName != 'A' ) + return false; + + /* Reset the page */ + jq.cookie( 'bp-activity-oldestpage', 1, {path: '/'} ); + + /* Activity Stream Tabs */ + var scope = target.attr('id').substr( 9, target.attr('id').length ); + var filter = jq("#activity-filter-select select").val(); + + if ( scope == 'mentions' ) + jq( 'li#' + target.attr('id') + ' a strong' ).remove(); + + bp_activity_request(scope, filter); + + return false; + }); + + /* Activity filter select */ + jq('#activity-filter-select select').change( function() { + var selected_tab = jq( 'div.activity-type-tabs li.selected' ); + + if ( !selected_tab.length ) + var scope = null; + else + var scope = selected_tab.attr('id').substr( 9, selected_tab.attr('id').length ); + + var filter = jq(this).val(); + + bp_activity_request(scope, filter); + + return false; + }); + + /* Stream event delegation */ + jq('div.activity').click( function(event) { + var target = jq(event.target); + + /* Favoriting activity stream items */ + if ( target.hasClass('fav') || target.hasClass('unfav') ) { + var type = target.hasClass('fav') ? 'fav' : 'unfav'; + var parent = target.parent().parent().parent(); + var parent_id = parent.attr('id').substr( 9, parent.attr('id').length ); + + target.addClass('loading'); + + jq.post( ajaxurl, { + action: 'activity_mark_' + type, + 'cookie': encodeURIComponent(document.cookie), + 'id': parent_id + }, + function(response) { + target.removeClass('loading'); + + target.fadeOut( 100, function() { + jq(this).html(response); + jq(this).attr('title', 'fav' == type ? BP_DTheme.remove_fav : BP_DTheme.mark_as_fav); + jq(this).fadeIn(100); + }); + + if ( 'fav' == type ) { + if ( !jq('div.item-list-tabs li#activity-favorites').length ) + jq('div.item-list-tabs ul li#activity-mentions').before( '<li id="activity-favorites"><a href="#">' + BP_DTheme.my_favs + ' <span>0</span></a></li>'); + + target.removeClass('fav'); + target.addClass('unfav'); + + jq('div.item-list-tabs ul li#activity-favorites span').html( Number( jq('div.item-list-tabs ul li#activity-favorites span').html() ) + 1 ); + } else { + target.removeClass('unfav'); + target.addClass('fav'); + + jq('div.item-list-tabs ul li#activity-favorites span').html( Number( jq('div.item-list-tabs ul li#activity-favorites span').html() ) - 1 ); + + if ( !Number( jq('div.item-list-tabs ul li#activity-favorites span').html() ) ) { + if ( jq('div.item-list-tabs ul li#activity-favorites').hasClass('selected') ) + bp_activity_request( null, null ); + + jq('div.item-list-tabs ul li#activity-favorites').remove(); + } + } + + if ( 'activity-favorites' == jq( 'div.item-list-tabs li.selected').attr('id') ) + target.parent().parent().parent().slideUp(100); + }); + + return false; + } + + /* Delete activity stream items */ + if ( target.hasClass('delete-activity') ) { + var li = target.parents('div.activity ul li'); + var id = li.attr('id').substr( 9, li.attr('id').length ); + var link_href = target.attr('href'); + var nonce = link_href.split('_wpnonce='); + + nonce = nonce[1]; + + target.addClass('loading'); + + jq.post( ajaxurl, { + action: 'delete_activity', + 'cookie': encodeURIComponent(document.cookie), + 'id': id, + '_wpnonce': nonce + }, + function(response) { + + if ( response[0] + response[1] == '-1' ) { + li.prepend( response.substr( 2, response.length ) ); + li.children('div#message').hide().fadeIn(300); + } else { + li.slideUp(300); + } + }); + + return false; + } + + /* Load more updates at the end of the page */ + if ( target.parent().hasClass('load-more') ) { + jq("#content li.load-more").addClass('loading'); + + if ( null == jq.cookie('bp-activity-oldestpage') ) + jq.cookie('bp-activity-oldestpage', 1, {path: '/'} ); + + var oldest_page = ( jq.cookie('bp-activity-oldestpage') * 1 ) + 1; + + jq.post( ajaxurl, { + action: 'activity_get_older_updates', + 'cookie': encodeURIComponent(document.cookie), + 'page': oldest_page + }, + function(response) + { + jq("#content li.load-more").removeClass('loading'); + jq.cookie( 'bp-activity-oldestpage', oldest_page, {path: '/'} ); + jq("#content ul.activity-list").append(response.contents); + + target.parent().hide(); + }, 'json' ); + + return false; + } + }); + + // Activity "Read More" links + jq('.activity-read-more a').live('click', function(event) { + var target = jq(event.target); + var link_id = target.parent().attr('id').split('-'); + var a_id = link_id[3]; + var type = link_id[0]; /* activity or acomment */ + + var inner_class = type == 'acomment' ? 'acomment-content' : 'activity-inner'; + var a_inner = jq('li#' + type + '-' + a_id + ' .' + inner_class + ':first' ); + jq(target).addClass('loading'); + + jq.post( ajaxurl, { + action: 'get_single_activity_content', + 'activity_id': a_id + }, + function(response) { + jq(a_inner).slideUp(300).html(response).slideDown(300); + }); + + return false; + }); + + /**** Activity Comments *******************************************************/ + + /* Hide all activity comment forms */ + jq('form.ac-form').hide(); + + /* Hide excess comments */ + if ( jq('div.activity-comments').length ) + bp_dtheme_hide_comments(); + + /* Activity list event delegation */ + jq('div.activity').click( function(event) { + var target = jq(event.target); + + /* Comment / comment reply links */ + if ( target.hasClass('acomment-reply') || target.parent().hasClass('acomment-reply') ) { + if ( target.parent().hasClass('acomment-reply') ) + target = target.parent(); + + var id = target.attr('id'); + ids = id.split('-'); + + var a_id = ids[2] + var c_id = target.attr('href').substr( 10, target.attr('href').length ); + var form = jq( '#ac-form-' + a_id ); + + form.css( 'display', 'none' ); + form.removeClass('root'); + jq('.ac-form').hide(); + + /* Hide any error messages */ + form.children('div').each( function() { + if ( jq(this).hasClass( 'error' ) ) + jq(this).hide(); + }); + + if ( ids[1] != 'comment' ) { + jq('div.activity-comments li#acomment-' + c_id).append( form ); + } else { + jq('li#activity-' + a_id + ' div.activity-comments').append( form ); + } + + if ( form.parent().hasClass( 'activity-comments' ) ) + form.addClass('root'); + + form.slideDown( 200 ); + jq.scrollTo( form, 500, { offset:-100, easing:'easeOutQuad' } ); + jq('#ac-form-' + ids[2] + ' textarea').focus(); + + return false; + } + + /* Activity comment posting */ + if ( target.attr('name') == 'ac_form_submit' ) { + var form = target.parent().parent(); + var form_parent = form.parent(); + var form_id = form.attr('id').split('-'); + + if ( !form_parent.hasClass('activity-comments') ) { + var tmp_id = form_parent.attr('id').split('-'); + var comment_id = tmp_id[1]; + } else { + var comment_id = form_id[2]; + } + + /* Hide any error messages */ + jq( 'form#' + form + ' div.error').hide(); + target.addClass('loading').prop('disabled', true); + + jq.post( ajaxurl, { + action: 'new_activity_comment', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce_new_activity_comment': jq("input#_wpnonce_new_activity_comment").val(), + 'comment_id': comment_id, + 'form_id': form_id[2], + 'content': jq('form#' + form.attr('id') + ' textarea').val() + }, + function(response) + { + target.removeClass('loading'); + + /* Check for errors and append if found. */ + if ( response[0] + response[1] == '-1' ) { + form.append( response.substr( 2, response.length ) ).hide().fadeIn( 200 ); + } else { + form.fadeOut( 200, + function() { + if ( 0 == form.parent().children('ul').length ) { + if ( form.parent().hasClass('activity-comments') ) + form.parent().prepend('<ul></ul>'); + else + form.parent().append('<ul></ul>'); + } + + form.parent().children('ul').append(response).hide().fadeIn( 200 ); + form.children('textarea').val(''); + form.parent().parent().addClass('has-comments'); + } + ); + jq( 'form#' + form + ' textarea').val(''); + + /* Increase the "Reply (X)" button count */ + jq('li#activity-' + form_id[2] + ' a.acomment-reply span').html( Number( jq('li#activity-' + form_id[2] + ' a.acomment-reply span').html() ) + 1 ); + } + + jq(target).prop("disabled", false); + }); + + return false; + } + + /* Deleting an activity comment */ + if ( target.hasClass('acomment-delete') ) { + var link_href = target.attr('href'); + var comment_li = target.parent().parent(); + var form = comment_li.parents('div.activity-comments').children('form'); + + var nonce = link_href.split('_wpnonce='); + nonce = nonce[1]; + + var comment_id = link_href.split('cid='); + comment_id = comment_id[1].split('&'); + comment_id = comment_id[0]; + + target.addClass('loading'); + + /* Remove any error messages */ + jq('div.activity-comments ul div.error').remove(); + + /* Reset the form position */ + comment_li.parents('div.activity-comments').append(form); + + jq.post( ajaxurl, { + action: 'delete_activity_comment', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': nonce, + 'id': comment_id + }, + function(response) + { + /* Check for errors and append if found. */ + if ( response[0] + response[1] == '-1' ) { + comment_li.prepend( response.substr( 2, response.length ) ).hide().fadeIn( 200 ); + } else { + var children = jq( 'li#' + comment_li.attr('id') + ' ul' ).children('li'); + var child_count = 0; + jq(children).each( function() { + if ( !jq(this).is(':hidden') ) + child_count++; + }); + comment_li.fadeOut(200); + + /* Decrease the "Reply (X)" button count */ + var parent_li = comment_li.parents('ul#activity-stream > li'); + jq('li#' + parent_li.attr('id') + ' a.acomment-reply span').html( jq('li#' + parent_li.attr('id') + ' a.acomment-reply span').html() - ( 1 + child_count ) ); + } + }); + + return false; + } + + /* Showing hidden comments - pause for half a second */ + if ( target.parent().hasClass('show-all') ) { + target.parent().addClass('loading'); + + setTimeout( function() { + target.parent().parent().children('li').fadeIn(200, function() { + target.parent().remove(); + }); + }, 600 ); + + return false; + } + }); + + /* Escape Key Press for cancelling comment forms */ + jq(document).keydown( function(e) { + e = e || window.event; + if (e.target) + element = e.target; + else if (e.srcElement) + element = e.srcElement; + + if( element.nodeType == 3) + element = element.parentNode; + + if( e.ctrlKey == true || e.altKey == true || e.metaKey == true ) + return; + + var keyCode = (e.keyCode) ? e.keyCode : e.which; + + if ( keyCode == 27 ) { + if (element.tagName == 'TEXTAREA') { + if ( jq(element).hasClass('ac-input') ) + jq(element).parent().parent().parent().slideUp( 200 ); + } + } + }); + + /**** Directory Search ****************************************************/ + + /* The search form on all directory pages */ + jq('div.dir-search').click( function(event) { + if ( jq(this).hasClass('no-ajax') ) + return; + + var target = jq(event.target); + + if ( target.attr('type') == 'submit' ) { + var css_id = jq('div.item-list-tabs li.selected').attr('id').split( '-' ); + var object = css_id[0]; + + bp_filter_request( object, jq.cookie('bp-' + object + '-filter'), jq.cookie('bp-' + object + '-scope') , 'div.' + object, target.parent().children('label').children('input').val(), 1, jq.cookie('bp-' + object + '-extras') ); + + return false; + } + }); + + /**** Tabs and Filters ****************************************************/ + + /* When a navigation tab is clicked - e.g. | All Groups | My Groups | */ + jq('div.item-list-tabs').click( function(event) { + if ( jq(this).hasClass('no-ajax') ) + return; + + var target = jq(event.target).parent(); + + if ( 'LI' == event.target.parentNode.nodeName && !target.hasClass('last') ) { + var css_id = target.attr('id').split( '-' ); + var object = css_id[0]; + + if ( 'activity' == object ) + return false; + + var scope = css_id[1]; + var filter = jq("#" + object + "-order-select select").val(); + var search_terms = jq("#" + object + "_search").val(); + + bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, jq.cookie('bp-' + object + '-extras') ); + + return false; + } + }); + + /* When the filter select box is changed re-query */ + jq('li.filter select').change( function() { + if ( jq('div.item-list-tabs li.selected').length ) + var el = jq('div.item-list-tabs li.selected'); + else + var el = jq(this); + + var css_id = el.attr('id').split('-'); + var object = css_id[0]; + var scope = css_id[1]; + var filter = jq(this).val(); + var search_terms = false; + + if ( jq('div.dir-search input').length ) + search_terms = jq('div.dir-search input').val(); + + if ( 'friends' == object ) + object = 'members'; + + bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, jq.cookie('bp-' + object + '-extras') ); + + return false; + }); + + /* All pagination links run through this function */ + jq('div#content').click( function(event) { + var target = jq(event.target); + + if ( target.hasClass('button') ) + return true; + + if ( target.parent().parent().hasClass('pagination') && !target.parent().parent().hasClass('no-ajax') ) { + if ( target.hasClass('dots') || target.hasClass('current') ) + return false; + + if ( jq('div.item-list-tabs li.selected').length ) + var el = jq('div.item-list-tabs li.selected'); + else + var el = jq('li.filter select'); + + var page_number = 1; + var css_id = el.attr('id').split( '-' ); + var object = css_id[0]; + var search_terms = false; + + if ( jq('div.dir-search input').length ) + search_terms = jq('div.dir-search input').val(); + + if ( jq(target).hasClass('next') ) + var page_number = Number( jq('div.pagination span.current').html() ) + 1; + else if ( jq(target).hasClass('prev') ) + var page_number = Number( jq('div.pagination span.current').html() ) - 1; + else + var page_number = Number( jq(target).html() ); + + bp_filter_request( object, jq.cookie('bp-' + object + '-filter'), jq.cookie('bp-' + object + '-scope'), 'div.' + object, search_terms, page_number, jq.cookie('bp-' + object + '-extras') ); + + return false; + } + + }); + + /**** New Forum Directory Post **************************************/ + + /* Hit the "New Topic" button on the forums directory page */ + jq('a.show-hide-new').click( function() { + if ( !jq('div#new-topic-post').length ) + return false; + + if ( jq('div#new-topic-post').is(":visible") ) + jq('div#new-topic-post').slideUp(200); + else + jq('div#new-topic-post').slideDown(200, function() { jq('#topic_title').focus(); } ); + + return false; + }); + + /* Cancel the posting of a new forum topic */ + jq('input#submit_topic_cancel').click( function() { + if ( !jq('div#new-topic-post').length ) + return false; + + jq('div#new-topic-post').slideUp(200); + return false; + }); + + /* Clicking a forum tag */ + jq('div#forum-directory-tags a').click( function() { + bp_filter_request( 'forums', 'tags', jq.cookie('bp-forums-scope'), 'div.forums', jq(this).html().replace( / /g, '-' ), 1, jq.cookie('bp-forums-extras') ); + return false; + }); + + /** Invite Friends Interface ****************************************/ + + /* Select a user from the list of friends and add them to the invite list */ + jq("div#invite-list input").click( function() { + jq('.ajax-loader').toggle(); + + var friend_id = jq(this).val(); + + if ( jq(this).prop('checked') == true ) + var friend_action = 'invite'; + else + var friend_action = 'uninvite'; + + jq('div.item-list-tabs li.selected').addClass('loading'); + + jq.post( ajaxurl, { + action: 'groups_invite_user', + 'friend_action': friend_action, + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': jq("input#_wpnonce_invite_uninvite_user").val(), + 'friend_id': friend_id, + 'group_id': jq("input#group_id").val() + }, + function(response) + { + if ( jq("#message") ) + jq("#message").hide(); + + jq('.ajax-loader').toggle(); + + if ( friend_action == 'invite' ) { + jq('#friend-list').append(response); + } else if ( friend_action == 'uninvite' ) { + jq('#friend-list li#uid-' + friend_id).remove(); + } + + jq('div.item-list-tabs li.selected').removeClass('loading'); + }); + }); + + /* Remove a user from the list of users to invite to a group */ + jq("#friend-list li a.remove").live('click', function() { + jq('.ajax-loader').toggle(); + + var friend_id = jq(this).attr('id'); + friend_id = friend_id.split('-'); + friend_id = friend_id[1]; + + jq.post( ajaxurl, { + action: 'groups_invite_user', + 'friend_action': 'uninvite', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': jq("input#_wpnonce_invite_uninvite_user").val(), + 'friend_id': friend_id, + 'group_id': jq("input#group_id").val() + }, + function(response) + { + jq('.ajax-loader').toggle(); + jq('#friend-list li#uid-' + friend_id).remove(); + jq('#invite-list input#f-' + friend_id).prop('checked', false); + }); + + return false; + }); + + /** Friendship Requests **************************************/ + + /* Accept and Reject friendship request buttons */ + jq("ul#friend-list a.accept, ul#friend-list a.reject").click( function() { + var button = jq(this); + var li = jq(this).parents('ul#friend-list li'); + var action_div = jq(this).parents('li div.action'); + + var id = li.attr('id').substr( 11, li.attr('id').length ); + var link_href = button.attr('href'); + + var nonce = link_href.split('_wpnonce='); + nonce = nonce[1]; + + if ( jq(this).hasClass('accepted') || jq(this).hasClass('rejected') ) + return false; + + if ( jq(this).hasClass('accept') ) { + var action = 'accept_friendship'; + action_div.children('a.reject').css( 'visibility', 'hidden' ); + } else { + var action = 'reject_friendship'; + action_div.children('a.accept').css( 'visibility', 'hidden' ); + } + + button.addClass('loading'); + + jq.post( ajaxurl, { + action: action, + 'cookie': encodeURIComponent(document.cookie), + 'id': id, + '_wpnonce': nonce + }, + function(response) { + button.removeClass('loading'); + + if ( response[0] + response[1] == '-1' ) { + li.prepend( response.substr( 2, response.length ) ); + li.children('div#message').hide().fadeIn(200); + } else { + button.fadeOut( 100, function() { + if ( jq(this).hasClass('accept') ) { + action_div.children('a.reject').hide(); + jq(this).html( BP_DTheme.accepted ).fadeIn(50); + jq(this).addClass('accepted'); + } else { + action_div.children('a.accept').hide(); + jq(this).html( BP_DTheme.rejected ).fadeIn(50); + jq(this).addClass('rejected'); + } + }); + } + }); + + return false; + }); + + /* Add / Remove friendship buttons */ + jq("div.friendship-button a").live('click', function() { + jq(this).parent().addClass('loading'); + var fid = jq(this).attr('id'); + fid = fid.split('-'); + fid = fid[1]; + + var nonce = jq(this).attr('href'); + nonce = nonce.split('?_wpnonce='); + nonce = nonce[1].split('&'); + nonce = nonce[0]; + + var thelink = jq(this); + + jq.post( ajaxurl, { + action: 'addremove_friend', + 'cookie': encodeURIComponent(document.cookie), + 'fid': fid, + '_wpnonce': nonce + }, + function(response) + { + var action = thelink.attr('rel'); + var parentdiv = thelink.parent(); + + if ( action == 'add' ) { + jq(parentdiv).fadeOut(200, + function() { + parentdiv.removeClass('add_friend'); + parentdiv.removeClass('loading'); + parentdiv.addClass('pending'); + parentdiv.fadeIn(200).html(response); + } + ); + + } else if ( action == 'remove' ) { + jq(parentdiv).fadeOut(200, + function() { + parentdiv.removeClass('remove_friend'); + parentdiv.removeClass('loading'); + parentdiv.addClass('add'); + parentdiv.fadeIn(200).html(response); + } + ); + } + }); + return false; + } ); + + /** Group Join / Leave Buttons **************************************/ + + jq("div.group-button a").live('click', function() { + var gid = jq(this).parent().attr('id'); + gid = gid.split('-'); + gid = gid[1]; + + var nonce = jq(this).attr('href'); + nonce = nonce.split('?_wpnonce='); + nonce = nonce[1].split('&'); + nonce = nonce[0]; + + var thelink = jq(this); + + jq.post( ajaxurl, { + action: 'joinleave_group', + 'cookie': encodeURIComponent(document.cookie), + 'gid': gid, + '_wpnonce': nonce + }, + function(response) + { + var parentdiv = thelink.parent(); + + if ( !jq('body.directory').length ) + location.href = location.href; + else { + jq(parentdiv).fadeOut(200, + function() { + parentdiv.fadeIn(200).html(response); + } + ); + } + }); + return false; + } ); + + /** Button disabling ************************************************/ + + jq('div.pending').click(function() { + return false; + }); + + /** Private Messaging ******************************************/ + + /* AJAX send reply functionality */ + jq("input#send_reply_button").click( + function() { + var order = jq('#messages_order').val() || 'ASC', + offset = jq('#message-recipients').offset(); + + var button = jq("input#send_reply_button"); + jq(button).addClass('loading'); + + jq.post( ajaxurl, { + action: 'messages_send_reply', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': jq("input#send_message_nonce").val(), + + 'content': jq("#message_content").val(), + 'send_to': jq("input#send_to").val(), + 'subject': jq("input#subject").val(), + 'thread_id': jq("input#thread_id").val() + }, + function(response) + { + if ( response[0] + response[1] == "-1" ) { + jq('form#send-reply').prepend( response.substr( 2, response.length ) ); + } else { + jq('form#send-reply div#message').remove(); + jq("#message_content").val(''); + + if ( 'ASC' == order ) { + jq('form#send-reply').before( response ); + } else { + jq('#message-recipients').after( response ); + jq(window).scrollTop(offset.top); + } + + jq("div.new-message").hide().slideDown( 200, function() { + jq('div.new-message').removeClass('new-message'); + }); + } + jq(button).removeClass('loading'); + }); + + return false; + } + ); + + /* Marking private messages as read and unread */ + jq("a#mark_as_read, a#mark_as_unread").click(function() { + var checkboxes_tosend = ''; + var checkboxes = jq("#message-threads tr td input[type='checkbox']"); + + if ( 'mark_as_unread' == jq(this).attr('id') ) { + var currentClass = 'read' + var newClass = 'unread' + var unreadCount = 1; + var inboxCount = 0; + var unreadCountDisplay = 'inline'; + var action = 'messages_markunread'; + } else { + var currentClass = 'unread' + var newClass = 'read' + var unreadCount = 0; + var inboxCount = 1; + var unreadCountDisplay = 'none'; + var action = 'messages_markread'; + } + + checkboxes.each( function(i) { + if(jq(this).is(':checked')) { + if ( jq('tr#m-' + jq(this).attr('value')).hasClass(currentClass) ) { + checkboxes_tosend += jq(this).attr('value'); + jq('tr#m-' + jq(this).attr('value')).removeClass(currentClass); + jq('tr#m-' + jq(this).attr('value')).addClass(newClass); + var thread_count = jq('tr#m-' + jq(this).attr('value') + ' td span.unread-count').html(); + + jq('tr#m-' + jq(this).attr('value') + ' td span.unread-count').html(unreadCount); + jq('tr#m-' + jq(this).attr('value') + ' td span.unread-count').css('display', unreadCountDisplay); + + var inboxcount = jq('tr.unread').length; + + jq('a#user-messages span').html( inboxcount ); + + if ( i != checkboxes.length - 1 ) { + checkboxes_tosend += ',' + } + } + } + }); + jq.post( ajaxurl, { + action: action, + 'thread_ids': checkboxes_tosend + }); + return false; + }); + + /* Selecting unread and read messages in inbox */ + jq("select#message-type-select").change( + function() { + var selection = jq("select#message-type-select").val(); + var checkboxes = jq("td input[type='checkbox']"); + checkboxes.each( function(i) { + checkboxes[i].checked = ""; + }); + + switch(selection) { + case 'unread': + var checkboxes = jq("tr.unread td input[type='checkbox']"); + break; + case 'read': + var checkboxes = jq("tr.read td input[type='checkbox']"); + break; + } + if ( selection != '' ) { + checkboxes.each( function(i) { + checkboxes[i].checked = "checked"; + }); + } else { + checkboxes.each( function(i) { + checkboxes[i].checked = ""; + }); + } + } + ); + + /* Bulk delete messages */ + jq("a#delete_inbox_messages, a#delete_sentbox_messages").click( function() { + checkboxes_tosend = ''; + checkboxes = jq("#message-threads tr td input[type='checkbox']"); + + jq('div#message').remove(); + jq(this).addClass('loading'); + + jq(checkboxes).each( function(i) { + if( jq(this).is(':checked') ) + checkboxes_tosend += jq(this).attr('value') + ','; + }); + + if ( '' == checkboxes_tosend ) { + jq(this).removeClass('loading'); + return false; + } + + jq.post( ajaxurl, { + action: 'messages_delete', + 'thread_ids': checkboxes_tosend + }, function(response) { + if ( response[0] + response[1] == "-1" ) { + jq('#message-threads').prepend( response.substr( 2, response.length ) ); + } else { + jq('#message-threads').before( '<div id="message" class="updated"><p>' + response + '</p></div>' ); + + jq(checkboxes).each( function(i) { + if( jq(this).is(':checked') ) + jq(this).parent().parent().fadeOut(150); + }); + } + + jq('div#message').hide().slideDown(150); + jq("a#delete_inbox_messages, a#delete_sentbox_messages").removeClass('loading'); + }); + return false; + }); + + /* Close site wide notices in the sidebar */ + jq("a#close-notice").click( function() { + jq(this).addClass('loading'); + jq('div#sidebar div.error').remove(); + + jq.post( ajaxurl, { + action: 'messages_close_notice', + 'notice_id': jq('.notice').attr('rel').substr( 2, jq('.notice').attr('rel').length ) + }, + function(response) { + jq("a#close-notice").removeClass('loading'); + + if ( response[0] + response[1] == '-1' ) { + jq('.notice').prepend( response.substr( 2, response.length ) ); + jq( 'div#sidebar div.error').hide().fadeIn( 200 ); + } else { + jq('.notice').slideUp( 100 ); + } + }); + return false; + }); + + /* Admin Bar & wp_list_pages Javascript IE6 hover class */ + jq("#wp-admin-bar ul.main-nav li, #nav li").mouseover( function() { + jq(this).addClass('sfhover'); + }); + + jq("#wp-admin-bar ul.main-nav li, #nav li").mouseout( function() { + jq(this).removeClass('sfhover'); + }); + + /* Clear BP cookies on logout */ + jq('a.logout').click( function() { + jq.cookie('bp-activity-scope', null, {path: '/'}); + jq.cookie('bp-activity-filter', null, {path: '/'}); + jq.cookie('bp-activity-oldestpage', null, {path: '/'}); + + var objects = [ 'members', 'groups', 'blogs', 'forums' ]; + jq(objects).each( function(i) { + jq.cookie('bp-' + objects[i] + '-scope', null, {path: '/'} ); + jq.cookie('bp-' + objects[i] + '-filter', null, {path: '/'} ); + jq.cookie('bp-' + objects[i] + '-extras', null, {path: '/'} ); + }); + }); +}); + +/* Setup activity scope and filter based on the current cookie settings. */ +function bp_init_activity() { + /* Reset the page */ + jq.cookie( 'bp-activity-oldestpage', 1, {path: '/'} ); + + if ( null != jq.cookie('bp-activity-filter') && jq('#activity-filter-select').length ) + jq('#activity-filter-select select option[value="' + jq.cookie('bp-activity-filter') + '"]').prop( 'selected', true ); + + /* Activity Tab Set */ + if ( null != jq.cookie('bp-activity-scope') && jq('div.activity-type-tabs').length ) { + jq('div.activity-type-tabs li').each( function() { + jq(this).removeClass('selected'); + }); + jq('li#activity-' + jq.cookie('bp-activity-scope') + ', div.item-list-tabs li.current').addClass('selected'); + } +} + +/* Setup object scope and filter based on the current cookie settings for the object. */ +function bp_init_objects(objects) { + jq(objects).each( function(i) { + if ( null != jq.cookie('bp-' + objects[i] + '-filter') && jq('li#' + objects[i] + '-order-select select').length ) + jq('li#' + objects[i] + '-order-select select option[value="' + jq.cookie('bp-' + objects[i] + '-filter') + '"]').prop( 'selected', true ); + + if ( null != jq.cookie('bp-' + objects[i] + '-scope') && jq('div.' + objects[i]).length ) { + jq('div.item-list-tabs li').each( function() { + jq(this).removeClass('selected'); + }); + jq('div.item-list-tabs li#' + objects[i] + '-' + jq.cookie('bp-' + objects[i] + '-scope') + ', div.item-list-tabs#object-nav li.current').addClass('selected'); + } + }); +} + +/* Filter the current content list (groups/members/blogs/topics) */ +function bp_filter_request( object, filter, scope, target, search_terms, page, extras ) { + if ( 'activity' == object ) + return false; + + if ( jq.query.get('s') && !search_terms ) + search_terms = jq.query.get('s'); + + if ( null == scope ) + scope = 'all'; + + /* Save the settings we want to remain persistent to a cookie */ + jq.cookie( 'bp-' + object + '-scope', scope, {path: '/'} ); + jq.cookie( 'bp-' + object + '-filter', filter, {path: '/'} ); + jq.cookie( 'bp-' + object + '-extras', extras, {path: '/'} ); + + /* Set the correct selected nav and filter */ + jq('div.item-list-tabs li').each( function() { + jq(this).removeClass('selected'); + }); + jq('div.item-list-tabs li#' + object + '-' + scope + ', div.item-list-tabs#object-nav li.current').addClass('selected'); + jq('div.item-list-tabs li.selected').addClass('loading'); + jq('div.item-list-tabs select option[value="' + filter + '"]').prop( 'selected', true ); + + if ( 'friends' == object ) + object = 'members'; + + if ( bp_ajax_request ) + bp_ajax_request.abort(); + + bp_ajax_request = jq.post( ajaxurl, { + action: object + '_filter', + 'cookie': encodeURIComponent(document.cookie), + 'object': object, + 'filter': filter, + 'search_terms': search_terms, + 'scope': scope, + 'page': page, + 'extras': extras + }, + function(response) + { + jq(target).fadeOut( 100, function() { + jq(this).html(response); + jq(this).fadeIn(100); + }); + jq('div.item-list-tabs li.selected').removeClass('loading'); + }); +} + +/* Activity Loop Requesting */ +function bp_activity_request(scope, filter) { + /* Save the type and filter to a session cookie */ + jq.cookie( 'bp-activity-scope', scope, {path: '/'} ); + jq.cookie( 'bp-activity-filter', filter, {path: '/'} ); + jq.cookie( 'bp-activity-oldestpage', 1, {path: '/'} ); + + /* Remove selected and loading classes from tabs */ + jq('div.item-list-tabs li').each( function() { + jq(this).removeClass('selected loading'); + }); + /* Set the correct selected nav and filter */ + jq('li#activity-' + scope + ', div.item-list-tabs li.current').addClass('selected'); + jq('div#object-nav.item-list-tabs li.selected, div.activity-type-tabs li.selected').addClass('loading'); + jq('#activity-filter-select select option[value="' + filter + '"]').prop( 'selected', true ); + + /* Reload the activity stream based on the selection */ + jq('.widget_bp_activity_widget h2 span.ajax-loader').show(); + + if ( bp_ajax_request ) + bp_ajax_request.abort(); + + bp_ajax_request = jq.post( ajaxurl, { + action: 'activity_widget_filter', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce_activity_filter': jq("input#_wpnonce_activity_filter").val(), + 'scope': scope, + 'filter': filter + }, + function(response) + { + jq('.widget_bp_activity_widget h2 span.ajax-loader').hide(); + + jq('div.activity').fadeOut( 100, function() { + jq(this).html(response.contents); + jq(this).fadeIn(100); + + /* Selectively hide comments */ + bp_dtheme_hide_comments(); + }); + + /* Update the feed link */ + if ( null != response.feed_url ) + jq('.directory div#subnav li.feed a, .home-page div#subnav li.feed a').attr('href', response.feed_url); + + jq('div.item-list-tabs li.selected').removeClass('loading'); + + }, 'json' ); +} + +/* Hide long lists of activity comments, only show the latest five root comments. */ +function bp_dtheme_hide_comments() { + var comments_divs = jq('div.activity-comments'); + + if ( !comments_divs.length ) + return false; + + comments_divs.each( function() { + if ( jq(this).children('ul').children('li').length < 5 ) return; + + var comments_div = jq(this); + var parent_li = comments_div.parents('ul#activity-stream > li'); + var comment_lis = jq(this).children('ul').children('li'); + var comment_count = ' '; + + if ( jq('li#' + parent_li.attr('id') + ' a.acomment-reply span').length ) + var comment_count = jq('li#' + parent_li.attr('id') + ' a.acomment-reply span').html(); + + comment_lis.each( function(i) { + /* Show the latest 5 root comments */ + if ( i < comment_lis.length - 5 ) { + jq(this).addClass('hidden'); + jq(this).toggle(); + + if ( !i ) + jq(this).before( '<li class="show-all"><a href="#' + parent_li.attr('id') + '/show-all/" title="' + BP_DTheme.show_all_comments + '">' + BP_DTheme.show_all + ' ' + comment_count + ' ' + BP_DTheme.comments + '</a></li>' ); + } + }); + + }); +} + +/* Helper Functions */ + +function checkAll() { + var checkboxes = document.getElementsByTagName("input"); + for(var i=0; i<checkboxes.length; i++) { + if(checkboxes[i].type == "checkbox") { + if($("check_all").checked == "") { + checkboxes[i].checked = ""; + } + else { + checkboxes[i].checked = "checked"; + } + } + } +} + +function clear(container) { + if( !document.getElementById(container) ) return; + + var container = document.getElementById(container); + + if ( radioButtons = container.getElementsByTagName('INPUT') ) { + for(var i=0; i<radioButtons.length; i++) { + radioButtons[i].checked = ''; + } + } + + if ( options = container.getElementsByTagName('OPTION') ) { + for(var i=0; i<options.length; i++) { + options[i].selected = false; + } + } + + return; +} + +/* ScrollTo plugin - just inline and minified */ +;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); + +/* jQuery Easing Plugin, v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ */ +jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return -(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e},easeOutElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return g*Math.pow(2,-10*h)*Math.sin((h*k-i)*(2*Math.PI)/j)+l+e},easeInOutElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k/2)==2){return e+l}if(!j){j=k*(0.3*1.5)}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}if(h<1){return -0.5*(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e}return g*Math.pow(2,-10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j)*0.5+l+e},easeInBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}return i*(f/=h)*f*((g+1)*f-g)+a},easeOutBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}return i*((f=f/h-1)*f*((g+1)*f+g)+1)+a},easeInOutBack:function(e,f,a,i,h,g){if(g==undefined){g=1.70158}if((f/=h/2)<1){return i/2*(f*f*(((g*=(1.525))+1)*f-g))+a}return i/2*((f-=2)*f*(((g*=(1.525))+1)*f+g)+2)+a},easeInBounce:function(e,f,a,h,g){return h-jQuery.easing.easeOutBounce(e,g-f,0,h,g)+a},easeOutBounce:function(e,f,a,h,g){if((f/=g)<(1/2.75)){return h*(7.5625*f*f)+a}else{if(f<(2/2.75)){return h*(7.5625*(f-=(1.5/2.75))*f+0.75)+a}else{if(f<(2.5/2.75)){return h*(7.5625*(f-=(2.25/2.75))*f+0.9375)+a}else{return h*(7.5625*(f-=(2.625/2.75))*f+0.984375)+a}}}},easeInOutBounce:function(e,f,a,h,g){if(f<g/2){return jQuery.easing.easeInBounce(e,f*2,0,h,g)*0.5+a}return jQuery.easing.easeOutBounce(e,f*2-g,0,h,g)*0.5+h*0.5+a}}); + +/* jQuery Cookie plugin */ +jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1;}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}expires='; expires='+date.toUTCString();}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}return cookieValue;}}; + +/* jQuery querystring plugin */ +eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('M 6(A){4 $11=A.11||\'&\';4 $V=A.V===r?r:j;4 $1p=A.1p===r?\'\':\'[]\';4 $13=A.13===r?r:j;4 $D=$13?A.D===j?"#":"?":"";4 $15=A.15===r?r:j;v.1o=M 6(){4 f=6(o,t){8 o!=1v&&o!==x&&(!!t?o.1t==t:j)};4 14=6(1m){4 m,1l=/\\[([^[]*)\\]/g,T=/^([^[]+)(\\[.*\\])?$/.1r(1m),k=T[1],e=[];19(m=1l.1r(T[2]))e.u(m[1]);8[k,e]};4 w=6(3,e,7){4 o,y=e.1b();b(I 3!=\'X\')3=x;b(y===""){b(!3)3=[];b(f(3,L)){3.u(e.h==0?7:w(x,e.z(0),7))}n b(f(3,1a)){4 i=0;19(3[i++]!=x);3[--i]=e.h==0?7:w(3[i],e.z(0),7)}n{3=[];3.u(e.h==0?7:w(x,e.z(0),7))}}n b(y&&y.T(/^\\s*[0-9]+\\s*$/)){4 H=1c(y,10);b(!3)3=[];3[H]=e.h==0?7:w(3[H],e.z(0),7)}n b(y){4 H=y.B(/^\\s*|\\s*$/g,"");b(!3)3={};b(f(3,L)){4 18={};1w(4 i=0;i<3.h;++i){18[i]=3[i]}3=18}3[H]=e.h==0?7:w(3[H],e.z(0),7)}n{8 7}8 3};4 C=6(a){4 p=d;p.l={};b(a.C){v.J(a.Z(),6(5,c){p.O(5,c)})}n{v.J(1u,6(){4 q=""+d;q=q.B(/^[?#]/,\'\');q=q.B(/[;&]$/,\'\');b($V)q=q.B(/[+]/g,\' \');v.J(q.Y(/[&;]/),6(){4 5=1e(d.Y(\'=\')[0]||"");4 c=1e(d.Y(\'=\')[1]||"");b(!5)8;b($15){b(/^[+-]?[0-9]+\\.[0-9]*$/.1d(c))c=1A(c);n b(/^[+-]?[0-9]+$/.1d(c))c=1c(c,10)}c=(!c&&c!==0)?j:c;b(c!==r&&c!==j&&I c!=\'1g\')c=c;p.O(5,c)})})}8 p};C.1H={C:j,1G:6(5,1f){4 7=d.Z(5);8 f(7,1f)},1h:6(5){b(!f(5))8 d.l;4 K=14(5),k=K[0],e=K[1];4 3=d.l[k];19(3!=x&&e.h!=0){3=3[e.1b()]}8 I 3==\'1g\'?3:3||""},Z:6(5){4 3=d.1h(5);b(f(3,1a))8 v.1E(j,{},3);n b(f(3,L))8 3.z(0);8 3},O:6(5,c){4 7=!f(c)?x:c;4 K=14(5),k=K[0],e=K[1];4 3=d.l[k];d.l[k]=w(3,e.z(0),7);8 d},w:6(5,c){8 d.N().O(5,c)},1s:6(5){8 d.O(5,x).17()},1z:6(5){8 d.N().1s(5)},1j:6(){4 p=d;v.J(p.l,6(5,7){1y p.l[5]});8 p},1F:6(Q){4 D=Q.B(/^.*?[#](.+?)(?:\\?.+)?$/,"$1");4 S=Q.B(/^.*?[?](.+?)(?:#.+)?$/,"$1");8 M C(Q.h==S.h?\'\':S,Q.h==D.h?\'\':D)},1x:6(){8 d.N().1j()},N:6(){8 M C(d)},17:6(){6 F(G){4 R=I G=="X"?f(G,L)?[]:{}:G;b(I G==\'X\'){6 1k(o,5,7){b(f(o,L))o.u(7);n o[5]=7}v.J(G,6(5,7){b(!f(7))8 j;1k(R,5,F(7))})}8 R}d.l=F(d.l);8 d},1B:6(){8 d.N().17()},1D:6(){4 i=0,U=[],W=[],p=d;4 16=6(E){E=E+"";b($V)E=E.B(/ /g,"+");8 1C(E)};4 1n=6(1i,5,7){b(!f(7)||7===r)8;4 o=[16(5)];b(7!==j){o.u("=");o.u(16(7))}1i.u(o.P(""))};4 F=6(R,k){4 12=6(5){8!k||k==""?[5].P(""):[k,"[",5,"]"].P("")};v.J(R,6(5,7){b(I 7==\'X\')F(7,12(5));n 1n(W,12(5),7)})};F(d.l);b(W.h>0)U.u($D);U.u(W.P($11));8 U.P("")}};8 M C(1q.S,1q.D)}}(v.1o||{});',62,106,'|||target|var|key|function|value|return|||if|val|this|tokens|is||length||true|base|keys||else||self||false|||push|jQuery|set|null|token|slice|settings|replace|queryObject|hash|str|build|orig|index|typeof|each|parsed|Array|new|copy|SET|join|url|obj|search|match|queryString|spaces|chunks|object|split|get||separator|newKey|prefix|parse|numbers|encode|COMPACT|temp|while|Object|shift|parseInt|test|decodeURIComponent|type|number|GET|arr|EMPTY|add|rx|path|addFields|query|suffix|location|exec|REMOVE|constructor|arguments|undefined|for|empty|delete|remove|parseFloat|compact|encodeURIComponent|toString|extend|load|has|prototype'.split('|'),0,{})) \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/45pc_black.png b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/45pc_black.png new file mode 100644 index 0000000..38b032a Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/45pc_black.png differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/60pc_black.png b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/60pc_black.png new file mode 100644 index 0000000..ce7c1c7 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/60pc_black.png differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/activity_arrow.gif b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/activity_arrow.gif new file mode 100644 index 0000000..6c52bfd Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/activity_arrow.gif differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/admin-menu-arrow.gif b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/admin-menu-arrow.gif new file mode 100644 index 0000000..ba8eab7 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/admin-menu-arrow.gif differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/ajax-loader.gif b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/ajax-loader.gif new file mode 100644 index 0000000..6e5bace Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/ajax-loader.gif differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/background.gif b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/background.gif new file mode 100644 index 0000000..1af6782 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/background.gif differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/closed.png b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/closed.png new file mode 100644 index 0000000..81f9329 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/closed.png differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/default_header.jpg b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/default_header.jpg new file mode 100644 index 0000000..64289f5 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/default_header.jpg differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/item_back.gif b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/item_back.gif new file mode 100644 index 0000000..afc88fc Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/item_back.gif differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/replyto_arrow.gif b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/replyto_arrow.gif new file mode 100644 index 0000000..168c53a Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/replyto_arrow.gif differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/rss.png b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/rss.png new file mode 100644 index 0000000..b3c949d Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/rss.png differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/sidebar_back.gif b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/sidebar_back.gif new file mode 100644 index 0000000..0a0142d Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/sidebar_back.gif differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/white-grad.png b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/white-grad.png new file mode 100644 index 0000000..3ffe025 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/images/white-grad.png differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/activity/activity-loop.php b/wp-content/plugins/buddypress/bp-themes/bp-default/activity/activity-loop.php new file mode 100644 index 0000000..52a5c0e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/activity/activity-loop.php @@ -0,0 +1,66 @@ +<?php + +/** + * BuddyPress - Activity Loop + * + * Querystring is set via AJAX in _inc/ajax.php - bp_dtheme_object_filter() + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php do_action( 'bp_before_activity_loop' ); ?> + +<?php if ( bp_has_activities( bp_ajax_querystring( 'activity' ) ) ) : ?> + + <?php /* Show pagination if JS is not enabled, since the "Load More" link will do nothing */ ?> + <noscript> + <div class="pagination"> + <div class="pag-count"><?php bp_activity_pagination_count(); ?></div> + <div class="pagination-links"><?php bp_activity_pagination_links(); ?></div> + </div> + </noscript> + + <?php if ( empty( $_POST['page'] ) ) : ?> + + <ul id="activity-stream" class="activity-list item-list"> + + <?php endif; ?> + + <?php while ( bp_activities() ) : bp_the_activity(); ?> + + <?php locate_template( array( 'activity/entry.php' ), true, false ); ?> + + <?php endwhile; ?> + + <?php if ( bp_activity_has_more_items() ) : ?> + + <li class="load-more"> + <a href="#more"><?php _e( 'Load More', 'buddypress' ); ?></a> + </li> + + <?php endif; ?> + + <?php if ( empty( $_POST['page'] ) ) : ?> + + </ul> + + <?php endif; ?> + +<?php else : ?> + + <div id="message" class="info"> + <p><?php _e( 'Sorry, there was no activity found. Please try a different filter.', 'buddypress' ); ?></p> + </div> + +<?php endif; ?> + +<?php do_action( 'bp_after_activity_loop' ); ?> + +<form action="" name="activity-loop-form" id="activity-loop-form" method="post"> + + <?php wp_nonce_field( 'activity_filter', '_wpnonce_activity_filter' ); ?> + +</form> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/activity/comment.php b/wp-content/plugins/buddypress/bp-themes/bp-default/activity/comment.php new file mode 100644 index 0000000..d807ca1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/activity/comment.php @@ -0,0 +1,52 @@ +<?php + +/** + * BuddyPress - Activity Stream Comment + * + * This template is used by bp_activity_comments() functions to show + * each activity. + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php do_action( 'bp_before_activity_comment' ); ?> + +<li id="acomment-<?php bp_activity_comment_id(); ?>"> + <div class="acomment-avatar"> + <a href="<?php bp_activity_comment_user_link(); ?>"> + <?php bp_activity_avatar( 'type=thumb&user_id=' . bp_get_activity_comment_user_id() ); ?> + </a> + </div> + + <div class="acomment-meta"> + <?php + /* translators: 1: user profile link, 2: user name, 3: activity permalink, 3: activity timestamp */ + printf( __( '<a href="%1$s">%2$s</a> replied <a href="%3$s" class="activity-time-since"><span class="time-since">%4$s</span></a>', 'buddypress' ), bp_get_activity_comment_user_link(), bp_get_activity_comment_name(), bp_get_activity_thread_permalink(), bp_get_activity_comment_date_recorded() ); + ?> + </div> + + <div class="acomment-content"><?php bp_activity_comment_content(); ?></div> + + <div class="acomment-options"> + + <?php if ( is_user_logged_in() && bp_activity_can_comment_reply( bp_activity_current_comment() ) ) : ?> + + <a href="#acomment-<?php bp_activity_comment_id(); ?>" class="acomment-reply bp-primary-action" id="acomment-reply-<?php bp_activity_id() ?>-from-<?php bp_activity_comment_id() ?>"><?php _e( 'Reply', 'buddypress' ); ?></a> + + <?php endif; ?> + + <?php if ( bp_activity_user_can_delete() ) : ?> + + <a href="<?php bp_activity_comment_delete_link(); ?>" class="delete acomment-delete confirm bp-secondary-action" rel="nofollow"><?php _e( 'Delete', 'buddypress' ); ?></a> + + <?php endif; ?> + + </div> + + <?php bp_activity_recurse_comments( bp_activity_current_comment() ); ?> +</li> + +<?php do_action( 'bp_after_activity_comment' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/activity/entry.php b/wp-content/plugins/buddypress/bp-themes/bp-default/activity/entry.php new file mode 100644 index 0000000..ed95272 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/activity/entry.php @@ -0,0 +1,124 @@ +<?php + +/** + * BuddyPress - Activity Stream (Single Item) + * + * This template is used by activity-loop.php and AJAX functions to show + * each activity. + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php do_action( 'bp_before_activity_entry' ); ?> + +<li class="<?php bp_activity_css_class(); ?>" id="activity-<?php bp_activity_id(); ?>"> + <div class="activity-avatar"> + <a href="<?php bp_activity_user_link(); ?>"> + + <?php bp_activity_avatar(); ?> + + </a> + </div> + + <div class="activity-content"> + + <div class="activity-header"> + + <?php bp_activity_action(); ?> + + </div> + + <?php if ( 'activity_comment' == bp_get_activity_type() ) : ?> + + <div class="activity-inreplyto"> + <strong><?php _e( 'In reply to: ', 'buddypress' ); ?></strong><?php bp_activity_parent_content(); ?> <a href="<?php bp_activity_thread_permalink(); ?>" class="view" title="<?php _e( 'View Thread / Permalink', 'buddypress' ); ?>"><?php _e( 'View', 'buddypress' ); ?></a> + </div> + + <?php endif; ?> + + <?php if ( bp_activity_has_content() ) : ?> + + <div class="activity-inner"> + + <?php bp_activity_content_body(); ?> + + </div> + + <?php endif; ?> + + <?php do_action( 'bp_activity_entry_content' ); ?> + + <?php if ( is_user_logged_in() ) : ?> + + <div class="activity-meta"> + + <?php if ( bp_activity_can_comment() ) : ?> + + <a href="<?php bp_get_activity_comment_link(); ?>" class="button acomment-reply bp-primary-action" id="acomment-comment-<?php bp_activity_id(); ?>"><?php printf( __( 'Comment <span>%s</span>', 'buddypress' ), bp_activity_get_comment_count() ); ?></a> + + <?php endif; ?> + + <?php if ( bp_activity_can_favorite() ) : ?> + + <?php if ( !bp_get_activity_is_favorite() ) : ?> + + <a href="<?php bp_activity_favorite_link(); ?>" class="button fav bp-secondary-action" title="<?php esc_attr_e( 'Mark as Favorite', 'buddypress' ); ?>"><?php _e( 'Favorite', 'buddypress' ) ?></a> + + <?php else : ?> + + <a href="<?php bp_activity_unfavorite_link(); ?>" class="button unfav bp-secondary-action" title="<?php esc_attr_e( 'Remove Favorite', 'buddypress' ); ?>"><?php _e( 'Remove Favorite', 'buddypress' ) ?></a> + + <?php endif; ?> + + <?php endif; ?> + + <?php if ( bp_activity_user_can_delete() ) bp_activity_delete_link(); ?> + + <?php do_action( 'bp_activity_entry_meta' ); ?> + + </div> + + <?php endif; ?> + + </div> + + <?php do_action( 'bp_before_activity_entry_comments' ); ?> + + <?php if ( ( is_user_logged_in() && bp_activity_can_comment() ) || bp_activity_get_comment_count() ) : ?> + + <div class="activity-comments"> + + <?php bp_activity_comments(); ?> + + <?php if ( is_user_logged_in() ) : ?> + + <form action="<?php bp_activity_comment_form_action(); ?>" method="post" id="ac-form-<?php bp_activity_id(); ?>" class="ac-form"<?php bp_activity_comment_form_nojs_display(); ?>> + <div class="ac-reply-avatar"><?php bp_loggedin_user_avatar( 'width=' . BP_AVATAR_THUMB_WIDTH . '&height=' . BP_AVATAR_THUMB_HEIGHT ); ?></div> + <div class="ac-reply-content"> + <div class="ac-textarea"> + <textarea id="ac-input-<?php bp_activity_id(); ?>" class="ac-input" name="ac_input_<?php bp_activity_id(); ?>"></textarea> + </div> + <input type="submit" name="ac_form_submit" value="<?php _e( 'Post', 'buddypress' ); ?>" />   <?php _e( 'or press esc to cancel.', 'buddypress' ); ?> + <input type="hidden" name="comment_form_id" value="<?php bp_activity_id(); ?>" /> + </div> + + <?php do_action( 'bp_activity_entry_comments' ); ?> + + <?php wp_nonce_field( 'new_activity_comment', '_wpnonce_new_activity_comment' ); ?> + + </form> + + <?php endif; ?> + + </div> + + <?php endif; ?> + + <?php do_action( 'bp_after_activity_entry_comments' ); ?> + +</li> + +<?php do_action( 'bp_after_activity_entry' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/activity/index.php b/wp-content/plugins/buddypress/bp-themes/bp-default/activity/index.php new file mode 100644 index 0000000..9332f7a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/activity/index.php @@ -0,0 +1,157 @@ +<?php + +/** + * Template Name: BuddyPress - Activity Directory + * + * @package BuddyPress + * @subpackage Theme + */ + +?> + +<?php get_header( 'buddypress' ); ?> + + <?php do_action( 'bp_before_directory_activity_page' ); ?> + + <div id="content"> + <div class="padder"> + + <?php do_action( 'bp_before_directory_activity' ); ?> + + <?php if ( !is_user_logged_in() ) : ?> + + <h3><?php _e( 'Site Activity', 'buddypress' ); ?></h3> + + <?php endif; ?> + + <?php do_action( 'bp_before_directory_activity_content' ); ?> + + <?php if ( is_user_logged_in() ) : ?> + + <?php locate_template( array( 'activity/post-form.php'), true ); ?> + + <?php endif; ?> + + <?php do_action( 'template_notices' ); ?> + + <div class="item-list-tabs activity-type-tabs" role="navigation"> + <ul> + <?php do_action( 'bp_before_activity_type_tab_all' ); ?> + + <li class="selected" id="activity-all"><a href="<?php echo bp_loggedin_user_domain() . bp_get_activity_slug() . '/'; ?>" title="<?php _e( 'The public activity for everyone on this site.', 'buddypress' ); ?>"><?php printf( __( 'All Members <span>%s</span>', 'buddypress' ), bp_get_total_site_member_count() ); ?></a></li> + + <?php if ( is_user_logged_in() ) : ?> + + <?php do_action( 'bp_before_activity_type_tab_friends' ) ?> + + <?php if ( bp_is_active( 'friends' ) ) : ?> + + <?php if ( bp_get_total_friend_count( bp_loggedin_user_id() ) ) : ?> + + <li id="activity-friends"><a href="<?php echo bp_loggedin_user_domain() . bp_get_activity_slug() . '/' . bp_get_friends_slug() . '/'; ?>" title="<?php _e( 'The activity of my friends only.', 'buddypress' ); ?>"><?php printf( __( 'My Friends <span>%s</span>', 'buddypress' ), bp_get_total_friend_count( bp_loggedin_user_id() ) ); ?></a></li> + + <?php endif; ?> + + <?php endif; ?> + + <?php do_action( 'bp_before_activity_type_tab_groups' ) ?> + + <?php if ( bp_is_active( 'groups' ) ) : ?> + + <?php if ( bp_get_total_group_count_for_user( bp_loggedin_user_id() ) ) : ?> + + <li id="activity-groups"><a href="<?php echo bp_loggedin_user_domain() . bp_get_activity_slug() . '/' . bp_get_groups_slug() . '/'; ?>" title="<?php _e( 'The activity of groups I am a member of.', 'buddypress' ); ?>"><?php printf( __( 'My Groups <span>%s</span>', 'buddypress' ), bp_get_total_group_count_for_user( bp_loggedin_user_id() ) ); ?></a></li> + + <?php endif; ?> + + <?php endif; ?> + + <?php do_action( 'bp_before_activity_type_tab_favorites' ); ?> + + <?php if ( bp_get_total_favorite_count_for_user( bp_loggedin_user_id() ) ) : ?> + + <li id="activity-favorites"><a href="<?php echo bp_loggedin_user_domain() . bp_get_activity_slug() . '/favorites/'; ?>" title="<?php _e( "The activity I've marked as a favorite.", 'buddypress' ); ?>"><?php printf( __( 'My Favorites <span>%s</span>', 'buddypress' ), bp_get_total_favorite_count_for_user( bp_loggedin_user_id() ) ); ?></a></li> + + <?php endif; ?> + + <?php do_action( 'bp_before_activity_type_tab_mentions' ); ?> + + <li id="activity-mentions"><a href="<?php echo bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/'; ?>" title="<?php _e( 'Activity that I have been mentioned in.', 'buddypress' ); ?>"><?php _e( 'Mentions', 'buddypress' ); ?><?php if ( bp_get_total_mention_count_for_user( bp_loggedin_user_id() ) ) : ?> <strong><?php printf( __( '<span>%s new</span>', 'buddypress' ), bp_get_total_mention_count_for_user( bp_loggedin_user_id() ) ); ?></strong><?php endif; ?></a></li> + + <?php endif; ?> + + <?php do_action( 'bp_activity_type_tabs' ); ?> + </ul> + </div><!-- .item-list-tabs --> + + <div class="item-list-tabs no-ajax" id="subnav" role="navigation"> + <ul> + <li class="feed"><a href="<?php bp_sitewide_activity_feed_link() ?>" title="<?php _e( 'RSS Feed', 'buddypress' ); ?>"><?php _e( 'RSS', 'buddypress' ); ?></a></li> + + <?php do_action( 'bp_activity_syndication_options' ); ?> + + <li id="activity-filter-select" class="last"> + <label for="activity-filter-by"><?php _e( 'Show:', 'buddypress' ); ?></label> + <select id="activity-filter-by"> + <option value="-1"><?php _e( 'Everything', 'buddypress' ); ?></option> + <option value="activity_update"><?php _e( 'Updates', 'buddypress' ); ?></option> + + <?php if ( bp_is_active( 'blogs' ) ) : ?> + + <option value="new_blog_post"><?php _e( 'Posts', 'buddypress' ); ?></option> + <option value="new_blog_comment"><?php _e( 'Comments', 'buddypress' ); ?></option> + + <?php endif; ?> + + <?php if ( bp_is_active( 'forums' ) ) : ?> + + <option value="new_forum_topic"><?php _e( 'Forum Topics', 'buddypress' ); ?></option> + <option value="new_forum_post"><?php _e( 'Forum Replies', 'buddypress' ); ?></option> + + <?php endif; ?> + + <?php if ( bp_is_active( 'groups' ) ) : ?> + + <option value="created_group"><?php _e( 'New Groups', 'buddypress' ); ?></option> + <option value="joined_group"><?php _e( 'Group Memberships', 'buddypress' ); ?></option> + + <?php endif; ?> + + <?php if ( bp_is_active( 'friends' ) ) : ?> + + <option value="friendship_accepted,friendship_created"><?php _e( 'Friendships', 'buddypress' ); ?></option> + + <?php endif; ?> + + <option value="new_member"><?php _e( 'New Members', 'buddypress' ); ?></option> + + <?php do_action( 'bp_activity_filter_options' ); ?> + + </select> + </li> + </ul> + </div><!-- .item-list-tabs --> + + <?php do_action( 'bp_before_directory_activity_list' ); ?> + + <div class="activity" role="main"> + + <?php locate_template( array( 'activity/activity-loop.php' ), true ); ?> + + </div><!-- .activity --> + + <?php do_action( 'bp_after_directory_activity_list' ); ?> + + <?php do_action( 'bp_directory_activity_content' ); ?> + + <?php do_action( 'bp_after_directory_activity_content' ); ?> + + <?php do_action( 'bp_after_directory_activity' ); ?> + + </div><!-- .padder --> + </div><!-- #content --> + + <?php do_action( 'bp_after_directory_activity_page' ); ?> + +<?php get_sidebar( 'buddypress' ); ?> +<?php get_footer( 'buddypress' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/activity/post-form.php b/wp-content/plugins/buddypress/bp-themes/bp-default/activity/post-form.php new file mode 100644 index 0000000..7bf1880 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/activity/post-form.php @@ -0,0 +1,74 @@ +<?php + +/** + * BuddyPress - Activity Post Form + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<form action="<?php bp_activity_post_form_action(); ?>" method="post" id="whats-new-form" name="whats-new-form" role="complementary"> + + <?php do_action( 'bp_before_activity_post_form' ); ?> + + <div id="whats-new-avatar"> + <a href="<?php echo bp_loggedin_user_domain(); ?>"> + <?php bp_loggedin_user_avatar( 'width=' . bp_core_avatar_thumb_width() . '&height=' . bp_core_avatar_thumb_height() ); ?> + </a> + </div> + + <h5><?php if ( bp_is_group() ) + printf( __( "What's new in %s, %s?", 'buddypress' ), bp_get_group_name(), bp_get_user_firstname() ); + else + printf( __( "What's new, %s?", 'buddypress' ), bp_get_user_firstname() ); + ?></h5> + + <div id="whats-new-content"> + <div id="whats-new-textarea"> + <textarea name="whats-new" id="whats-new" cols="50" rows="10"><?php if ( isset( $_GET['r'] ) ) : ?>@<?php echo esc_attr( $_GET['r'] ); ?> <?php endif; ?></textarea> + </div> + + <div id="whats-new-options"> + <div id="whats-new-submit"> + <input type="submit" name="aw-whats-new-submit" id="aw-whats-new-submit" value="<?php _e( 'Post Update', 'buddypress' ); ?>" /> + </div> + + <?php if ( bp_is_active( 'groups' ) && !bp_is_my_profile() && !bp_is_group() ) : ?> + + <div id="whats-new-post-in-box"> + + <?php _e( 'Post in', 'buddypress' ) ?>: + + <select id="whats-new-post-in" name="whats-new-post-in"> + <option selected="selected" value="0"><?php _e( 'My Profile', 'buddypress' ); ?></option> + + <?php if ( bp_has_groups( 'user_id=' . bp_loggedin_user_id() . '&type=alphabetical&max=100&per_page=100&populate_extras=0' ) ) : + while ( bp_groups() ) : bp_the_group(); ?> + + <option value="<?php bp_group_id(); ?>"><?php bp_group_name(); ?></option> + + <?php endwhile; + endif; ?> + + </select> + </div> + <input type="hidden" id="whats-new-post-object" name="whats-new-post-object" value="groups" /> + + <?php elseif ( bp_is_group_home() ) : ?> + + <input type="hidden" id="whats-new-post-object" name="whats-new-post-object" value="groups" /> + <input type="hidden" id="whats-new-post-in" name="whats-new-post-in" value="<?php bp_group_id(); ?>" /> + + <?php endif; ?> + + <?php do_action( 'bp_activity_post_form_options' ); ?> + + </div><!-- #whats-new-options --> + </div><!-- #whats-new-content --> + + <?php wp_nonce_field( 'post_update', '_wpnonce_post_update' ); ?> + <?php do_action( 'bp_after_activity_post_form' ); ?> + +</form><!-- #whats-new-form --> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/archive.php b/wp-content/plugins/buddypress/bp-themes/bp-default/archive.php new file mode 100644 index 0000000..921eaea --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/archive.php @@ -0,0 +1,64 @@ +<?php get_header(); ?> + + <div id="content"> + <div class="padder"> + + <?php do_action( 'bp_before_archive' ) ?> + + <div class="page" id="blog-archives" role="main"> + + <h3 class="pagetitle"><?php printf( __( 'You are browsing the archive for %1$s.', 'buddypress' ), wp_title( false, false ) ); ?></h3> + + <?php if ( have_posts() ) : ?> + + <?php bp_dtheme_content_nav( 'nav-above' ); ?> + + <?php while (have_posts()) : the_post(); ?> + + <?php do_action( 'bp_before_blog_post' ) ?> + + <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> + + <div class="author-box"> + <?php echo get_avatar( get_the_author_meta( 'user_email' ), '50' ); ?> + <p><?php printf( _x( 'by %s', 'Post written by...', 'buddypress' ), bp_core_get_userlink( $post->post_author ) ) ?></p> + </div> + + <div class="post-content"> + <h2 class="posttitle"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e( 'Permanent Link to', 'buddypress' ) ?> <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> + + <p class="date"><?php printf( __( '%1$s <span>in %2$s</span>', 'buddypress' ), get_the_date(), get_the_category_list( ', ' ) ); ?></p> + + <div class="entry"> + <?php the_content( __( 'Read the rest of this entry →', 'buddypress' ) ); ?> + <?php wp_link_pages( array( 'before' => '<div class="page-link"><p>' . __( 'Pages: ', 'buddypress' ), 'after' => '</p></div>', 'next_or_number' => 'number' ) ); ?> + </div> + + <p class="postmetadata"><?php the_tags( '<span class="tags">' . __( 'Tags: ', 'buddypress' ), ', ', '</span>' ); ?> <span class="comments"><?php comments_popup_link( __( 'No Comments »', 'buddypress' ), __( '1 Comment »', 'buddypress' ), __( '% Comments »', 'buddypress' ) ); ?></span></p> + </div> + + </div> + + <?php do_action( 'bp_after_blog_post' ) ?> + + <?php endwhile; ?> + + <?php bp_dtheme_content_nav( 'nav-below' ); ?> + + <?php else : ?> + + <h2 class="center"><?php _e( 'Not Found', 'buddypress' ) ?></h2> + <?php get_search_form() ?> + + <?php endif; ?> + + </div> + + <?php do_action( 'bp_after_archive' ) ?> + + </div><!-- .padder --> + </div><!-- #content --> + + <?php get_sidebar() ?> + +<?php get_footer(); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/attachment.php b/wp-content/plugins/buddypress/bp-themes/bp-default/attachment.php new file mode 100644 index 0000000..f50841b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/attachment.php @@ -0,0 +1,75 @@ +<?php get_header(); ?> + + <div id="content"> + <div class="padder"> + + <?php do_action( 'bp_before_attachment' ); ?> + + <div class="page" id="attachments-page" role="main"> + + <?php if (have_posts()) : while (have_posts()) : the_post(); ?> + + <?php do_action( 'bp_before_blog_post' ) ?> + + <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> + + <div class="author-box"> + <?php echo get_avatar( get_the_author_meta( 'user_email' ), '50' ); ?> + <p><?php printf( _x( 'by %s', 'Post written by...', 'buddypress' ), str_replace( '<a href=', '<a rel="author" href=', bp_core_get_userlink( $post->post_author ) ) ); ?></p> + </div> + + <div class="post-content"> + <h2 class="posttitle"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e( 'Permanent Link to', 'buddypress' ) ?> <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> + + <p class="date"> + <?php the_date(); ?> + <span class="post-utility alignright"><?php edit_post_link( __( 'Edit this entry', 'buddypress' ) ); ?></span> + </p> + + <div class="entry"> + <?php echo wp_get_attachment_image( $post->ID, 'large', false, array( 'class' => 'size-large aligncenter' ) ); ?> + + <div class="entry-caption"><?php if ( !empty( $post->post_excerpt ) ) the_excerpt(); ?></div> + <?php the_content(); ?> + </div> + + <p class="postmetadata"> + <?php + if ( wp_attachment_is_image() ) : + $metadata = wp_get_attachment_metadata(); + printf( __( 'Full size is %s pixels', 'buddypress' ), + sprintf( '<a href="%1$s" title="%2$s">%3$s × %4$s</a>', + wp_get_attachment_url(), + esc_attr( __( 'Link to full size image', 'buddypress' ) ), + $metadata['width'], + $metadata['height'] + ) + ); + endif; + ?> +   + </p> + </div> + + </div> + + <?php do_action( 'bp_after_blog_post' ) ?> + + <?php comments_template(); ?> + + <?php endwhile; else: ?> + + <p><?php _e( 'Sorry, no attachments matched your criteria.', 'buddypress' ) ?></p> + + <?php endif; ?> + + </div> + + <?php do_action( 'bp_after_attachment' ) ?> + + </div><!-- .padder --> + </div><!-- #content --> + + <?php get_sidebar(); ?> + +<?php get_footer(); ?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/blogs/blogs-loop.php b/wp-content/plugins/buddypress/bp-themes/bp-default/blogs/blogs-loop.php new file mode 100644 index 0000000..d48e3ab --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/blogs/blogs-loop.php @@ -0,0 +1,95 @@ +<?php + +/** + * BuddyPress - Blogs Loop + * + * Querystring is set via AJAX in _inc/ajax.php - bp_dtheme_object_filter() + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php do_action( 'bp_before_blogs_loop' ); ?> + +<?php if ( bp_has_blogs( bp_ajax_querystring( 'blogs' ) ) ) : ?> + + <div id="pag-top" class="pagination"> + + <div class="pag-count" id="blog-dir-count-top"> + <?php bp_blogs_pagination_count(); ?> + </div> + + <div class="pagination-links" id="blog-dir-pag-top"> + <?php bp_blogs_pagination_links(); ?> + </div> + + </div> + + <?php do_action( 'bp_before_directory_blogs_list' ); ?> + + <ul id="blogs-list" class="item-list" role="main"> + + <?php while ( bp_blogs() ) : bp_the_blog(); ?> + + <li> + <div class="item-avatar"> + <a href="<?php bp_blog_permalink(); ?>"><?php bp_blog_avatar( 'type=thumb' ); ?></a> + </div> + + <div class="item"> + <div class="item-title"><a href="<?php bp_blog_permalink(); ?>"><?php bp_blog_name(); ?></a></div> + <div class="item-meta"><span class="activity"><?php bp_blog_last_active(); ?></span></div> + + <?php do_action( 'bp_directory_blogs_item' ); ?> + </div> + + <div class="action"> + + <?php do_action( 'bp_directory_blogs_actions' ); ?> + + <div class="meta"> + + <?php bp_blog_latest_post(); ?> + + </div> + + </div> + + <div class="clear"></div> + </li> + + <?php endwhile; ?> + + </ul> + + <?php do_action( 'bp_after_directory_blogs_list' ); ?> + + <?php bp_blog_hidden_fields(); ?> + + <div id="pag-bottom" class="pagination"> + + <div class="pag-count" id="blog-dir-count-bottom"> + + <?php bp_blogs_pagination_count(); ?> + + </div> + + <div class="pagination-links" id="blog-dir-pag-bottom"> + + <?php bp_blogs_pagination_links(); ?> + + </div> + + </div> + +<?php else: ?> + + <div id="message" class="info"> + <p><?php _e( 'Sorry, there were no sites found.', 'buddypress' ); ?></p> + </div> + +<?php endif; ?> + +<?php do_action( 'bp_after_blogs_loop' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/blogs/create.php b/wp-content/plugins/buddypress/bp-themes/bp-default/blogs/create.php new file mode 100644 index 0000000..0260fd9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/blogs/create.php @@ -0,0 +1,46 @@ +<?php + +/** + * BuddyPress - Create Blog + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php get_header( 'buddypress' ); ?> + + <?php do_action( 'bp_before_directory_blogs_content' ); ?> + + <div id="content"> + <div class="padder" role="main"> + + <?php do_action( 'template_notices' ); ?> + + <h3><?php _e( 'Create a Site', 'buddypress' ); ?>  <a class="button" href="<?php echo trailingslashit( bp_get_root_domain() . '/' . bp_get_blogs_root_slug() ) ?>"><?php _e( 'Site Directory', 'buddypress' ); ?></a></h3> + + <?php do_action( 'bp_before_create_blog_content' ); ?> + + <?php if ( bp_blog_signup_enabled() ) : ?> + + <?php bp_show_blog_signup_form(); ?> + + <?php else: ?> + + <div id="message" class="info"> + <p><?php _e( 'Site registration is currently disabled', 'buddypress' ); ?></p> + </div> + + <?php endif; ?> + + <?php do_action( 'bp_after_create_blog_content' ); ?> + + </div><!-- .padder --> + </div><!-- #content --> + + <?php do_action( 'bp_after_directory_blogs_content' ); ?> + +<?php get_sidebar( 'buddypress' ); ?> +<?php get_footer( 'buddypress' ); ?> + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/blogs/index.php b/wp-content/plugins/buddypress/bp-themes/bp-default/blogs/index.php new file mode 100644 index 0000000..186c5ab --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/blogs/index.php @@ -0,0 +1,90 @@ +<?php + +/** + * BuddyPress - Blogs Directory + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php get_header( 'buddypress' ); ?> + + <?php do_action( 'bp_before_directory_blogs_page' ); ?> + + <div id="content"> + <div class="padder"> + + <?php do_action( 'bp_before_directory_blogs' ); ?> + + <form action="" method="post" id="blogs-directory-form" class="dir-form"> + + <h3><?php _e( 'Site Directory', 'buddypress' ); ?><?php if ( is_user_logged_in() && bp_blog_signup_enabled() ) : ?>  <a class="button" href="<?php echo bp_get_root_domain() . '/' . bp_get_blogs_root_slug() . '/create/' ?>"><?php _e( 'Create a Site', 'buddypress' ); ?></a><?php endif; ?></h3> + + <?php do_action( 'bp_before_directory_blogs_content' ); ?> + + <div id="blog-dir-search" class="dir-search" role="search"> + + <?php bp_directory_blogs_search_form(); ?> + + </div><!-- #blog-dir-search --> + + <div class="item-list-tabs" role="navigation"> + <ul> + <li class="selected" id="blogs-all"><a href="<?php bp_root_domain(); ?>/<?php bp_blogs_root_slug() ?>"><?php printf( __( 'All Sites <span>%s</span>', 'buddypress' ), bp_get_total_blog_count() ); ?></a></li> + + <?php if ( is_user_logged_in() && bp_get_total_blog_count_for_user( bp_loggedin_user_id() ) ) : ?> + + <li id="blogs-personal"><a href="<?php echo bp_loggedin_user_domain() . bp_get_blogs_slug() ?>"><?php printf( __( 'My Sites <span>%s</span>', 'buddypress' ), bp_get_total_blog_count_for_user( bp_loggedin_user_id() ) ); ?></a></li> + + <?php endif; ?> + + <?php do_action( 'bp_blogs_directory_blog_types' ); ?> + + </ul> + </div><!-- .item-list-tabs --> + + <div class="item-list-tabs" id="subnav" role="navigation"> + <ul> + + <?php do_action( 'bp_blogs_directory_blog_sub_types' ); ?> + + <li id="blogs-order-select" class="last filter"> + + <label for="blogs-order-by"><?php _e( 'Order By:', 'buddypress' ); ?></label> + <select id="blogs-order-by"> + <option value="active"><?php _e( 'Last Active', 'buddypress' ); ?></option> + <option value="newest"><?php _e( 'Newest', 'buddypress' ); ?></option> + <option value="alphabetical"><?php _e( 'Alphabetical', 'buddypress' ); ?></option> + + <?php do_action( 'bp_blogs_directory_order_options' ); ?> + + </select> + </li> + </ul> + </div> + + <div id="blogs-dir-list" class="blogs dir-list"> + + <?php locate_template( array( 'blogs/blogs-loop.php' ), true ); ?> + + </div><!-- #blogs-dir-list --> + + <?php do_action( 'bp_directory_blogs_content' ); ?> + + <?php wp_nonce_field( 'directory_blogs', '_wpnonce-blogs-filter' ); ?> + + <?php do_action( 'bp_after_directory_blogs_content' ); ?> + + </form><!-- #blogs-directory-form --> + + <?php do_action( 'bp_after_directory_blogs' ); ?> + + </div><!-- .padder --> + </div><!-- #content --> + + <?php do_action( 'bp_after_directory_blogs_page' ); ?> + +<?php get_sidebar( 'buddypress' ); ?> +<?php get_footer( 'buddypress' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/comments.php b/wp-content/plugins/buddypress/bp-themes/bp-default/comments.php new file mode 100644 index 0000000..e4f1662 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/comments.php @@ -0,0 +1,78 @@ +<?php + if ( post_password_required() ) { + echo '<h3 class="comments-header">' . __( 'Password Protected', 'buddypress' ) . '</h3>'; + echo '<p class="alert password-protected">' . __( 'Enter the password to view comments.', 'buddypress' ) . '</p>'; + return; + } + + if ( is_page() && !have_comments() && !comments_open() && !pings_open() ) + return; + + if ( have_comments() ) : + $num_comments = 0; + $num_trackbacks = 0; + foreach ( (array)$comments as $comment ) { + if ( 'comment' != get_comment_type() ) + $num_trackbacks++; + else + $num_comments++; + } +?> + <div id="comments"> + + <h3> + <?php printf( _n( '1 response to %2$s', '%1$s responses to %2$s', $num_comments, 'buddypress' ), number_format_i18n( $num_comments ), '<em>' . get_the_title() . '</em>' ) ?> + </h3> + + <?php do_action( 'bp_before_blog_comment_list' ) ?> + + <ol class="commentlist"> + <?php wp_list_comments( array( 'callback' => 'bp_dtheme_blog_comments', 'type' => 'comment' ) ) ?> + </ol><!-- .comment-list --> + + <?php do_action( 'bp_after_blog_comment_list' ) ?> + + <?php if ( get_option( 'page_comments' ) ) : ?> + <div class="comment-navigation paged-navigation"> + <?php paginate_comments_links() ?> + </div> + <?php endif; ?> + + </div><!-- #comments --> +<?php else : ?> + + <?php if ( pings_open() && !comments_open() && ( is_single() || is_page() ) ) : ?> + <p class="comments-closed pings-open"> + <?php printf( __( 'Comments are closed, but <a href="%1$s" title="Trackback URL for this post">trackbacks</a> and pingbacks are open.', 'buddypress' ), trackback_url( '0' ) ) ?> + </p> + <?php elseif ( !comments_open() && ( is_single() || is_page() ) ) : ?> + <p class="comments-closed"> + <?php _e( 'Comments are closed.', 'buddypress' ) ?> + </p> + <?php endif; ?> + +<?php endif; ?> + +<?php if ( comments_open() ) : ?> + <?php comment_form() ?> +<?php endif; ?> + +<?php if ( !empty( $num_trackbacks ) ) : ?> + <div id="trackbacks"> + <h3><?php printf( _n( '1 trackback', '%d trackbacks', $num_trackbacks, 'buddypress' ), number_format_i18n( $num_trackbacks ) ) ?></h3> + + <ul id="trackbacklist"> + <?php foreach ( (array)$comments as $comment ) : ?> + + <?php if ( 'comment' != get_comment_type() ) : ?> + <li> + <h5><?php comment_author_link() ?></h5> + <em>on <?php comment_date() ?></em> + </li> + <?php endif; ?> + + <?php endforeach; ?> + </ul> + + </div> +<?php endif; ?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/editor-style-rtl.css b/wp-content/plugins/buddypress/bp-themes/bp-default/editor-style-rtl.css new file mode 100644 index 0000000..df07d31 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/editor-style-rtl.css @@ -0,0 +1,43 @@ +/* +Theme Name: BuddyPress Default +Description: Used to style the TinyMCE editor (RTL version). +*/ + +html .mceContentBody .alignright { + float: left; + margin-left: auto; + margin-right: 15px; +} +html .mceContentBody .alignleft { + float: right; + margin-left: 15px; + margin-right: auto; +} +dl { + margin-left: auto; + margin-right: 0; +} +html .mceContentBody img.alignright { + margin: 0 7px 2px 0; +} +html .mceContentBody img.alignleft { + margin: 0 0 2px 7px; +} +dd.wp-caption p.wp-caption-text, +.wp-caption p.wp-caption-text { + padding: 0 0 5px 4px; +} +html .mceContentBody ul, +html .mceContentBody ol, +html .mceContentBody dl { + margin: 0 1.5em 18px 0; +} + +html .mceContentBody table th:first { + border-left: 1px solid #eaeaea; + border-right: 0; +} +html .mceContentBody table tr td.label { + border-left: 1px solid #eaeaea; + border-right: 0; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/editor-style.css b/wp-content/plugins/buddypress/bp-themes/bp-default/editor-style.css new file mode 100644 index 0000000..bfdd567 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/editor-style.css @@ -0,0 +1,272 @@ +/* +Theme Name: BuddyPress Default +Description: Used to style the TinyMCE editor. +*/ + +html .mceContentBody { + font-family: Arial, Tahoma, Verdana, sans-serif; + font-size: 12px; + color: #555; +} +ul, +ol { + margin: 0; + padding: 0; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 5px 0 15px 0; +} +h1 { + font-size: 28px; + margin-bottom: 25px; +} +h2 { + font-size: 24px; + margin-bottom: 20px; +} +h3 { + font-size: 20px; +} +h4 { + font-size: 16px; + margin-bottom: 15px; +} +h5 { + font-size: 14px; + margin-bottom: 0; +} +h6 { + font-size: 12px; + margin-bottom: 0; +} +a { + color: #1fb3dd; +} +a:hover, +a:active { + color: #888; +} +a:focus { + outline: 1px dotted #ccc; +} +p { + margin-bottom: 15px; +} +p:last-child { + margin-bottom: 0; +} +hr { + background-color: #e7e7e7; + border: 0 none; + clear: both; + height: 1px; + margin: 20px 0; +} +big { + font-size: 18px; +} +acronym { + border-bottom: 0; + cursor: normal; +} +acronym:hover { + cursor: normal; +} +del { + text-decoration: line-through; + color: #555; +} +ins { + background: #fff9db; + border: 0; + color: #555; + text-decoration: none; +} +sub { + top: .5ex; +} +sup { + bottom: 1ex; +} +sub, +sup { + height: 0; + line-height: 1; + vertical-align: baseline; + position: relative; +} +html .mceContentBody .alignright { + float: right; + margin-left: 15px; +} +html .mceContentBody .alignleft { + float: left; + margin-right: 15px; +} +p { + margin: 0 0 20px 0; +} +dl { + margin-left: 0; +} +dt { + font-size: 14px; + font-weight: bold; +} +dd { + margin: 0 0 15px 0; +} +pre, +code p { + padding: 15px; + background: #f4f4f4; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +code { + font-family: "Monaco", courier, sans-serif; +} +cite { + border: 0; +} +blockquote { + quotes: none; + font-style: italic; + margin: 0 0; + padding: 0 3em; + font-family: georgia, times, serif; + font-size: 16px; + line-height: 150%; +} +blockquote p { + margin-bottom: 15px !important; +} +p.date { + color: #888; + font-size: 12px; + font-family: Georgia, times, serif; + padding: 3px 0; + margin: 10px 0; + border-bottom: 1px solid #e4e4e4; + border-top: 1px solid #e4e4e4; +} +img.wp-smiley { + padding: 0 !important; + margin: 0 !important; + border: none !important; + float: none !important; + clear: none !important; +} +html .mceContentBody img.centered, +html .mceContentBody img.aligncenter { + display: block; + margin-left: auto; + margin-right: auto; +} +html .mceContentBody img.alignright { + padding: 4px; + margin: 0 0 2px 7px; + display: inline; +} +html .mceContentBody img.alignleft { + padding: 4px; + margin: 0 7px 2px 0; + display: inline; +} +html .mceContentBody .aligncenter { + display: block; + margin-left: auto; + margin-right: auto; +} +.wp-caption { + border: 1px solid #ddd; + text-align: center; + background-color: #f3f3f3; + padding-top: 4px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.wp-caption img { + margin: 0; + padding: 0; + border: 0 none; +} +dd.wp-caption p.wp-caption-text, +.wp-caption p.wp-caption-text { + font-size: 0.9em; + line-height: 17px; + padding: 0 4px 5px 0; + margin: 0; +} +.gallery .gallery-caption { + color: #555; +} +table { + width: 100%; +} +table thead tr { + background: #eaeaea; +} +td { + color: #555; + font-size: 12px; +} +table tr td, +table tr th { + padding: 8px; + vertical-align: middle; +} +table tr.alt td { + background: #f5f5f5; +} +html .mceContentBody ul, +html .mceContentBody ol, +html .mceContentBody dl { + margin: 0 0 18px 1.5em; +} +html .mceContentBody ul { + list-style: square; +} +html .mceContentBody ol { + list-style: decimal; +} +html .mceContentBody ol ol { + list-style: upper-alpha; +} +html .mceContentBody table { + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #eee; +} +html .mceContentBody table th { + border-top: 1px solid #eee; + border-left: 0 none; + border-right: 0 none; + font-size: 12px; + text-align: left; +} +html .mceContentBody table th:first { + border-right: 1px solid #eaeaea; +} +html .mceContentBody table td { + border-top: 1px solid #eee; +} +html .mceContentBody img { + margin-bottom: 15px; +} +html .mceContentBody table tr td { + border-left: 0 none; + border-right: 0 none; +} +html .mceContentBody table tr td.label { + border-right: 1px solid #eaeaea; + font-weight: bold; + width: 25%; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/footer.php b/wp-content/plugins/buddypress/bp-themes/bp-default/footer.php new file mode 100644 index 0000000..b521d58 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/footer.php @@ -0,0 +1,27 @@ + </div> <!-- #container --> + + <?php do_action( 'bp_after_container' ) ?> + <?php do_action( 'bp_before_footer' ) ?> + + <div id="footer"> + <?php if ( is_active_sidebar( 'first-footer-widget-area' ) || is_active_sidebar( 'second-footer-widget-area' ) || is_active_sidebar( 'third-footer-widget-area' ) || is_active_sidebar( 'fourth-footer-widget-area' ) ) : ?> + <div id="footer-widgets"> + <?php get_sidebar( 'footer' ) ?> + </div> + <?php endif; ?> + + <div id="site-generator" role="contentinfo"> + <?php do_action( 'bp_dtheme_credits' ) ?> + <p><?php printf( __( 'Proudly powered by <a href="%1$s">WordPress</a> and <a href="%2$s">BuddyPress</a>.', 'buddypress' ), 'http://wordpress.org', 'http://buddypress.org' ) ?></p> + </div> + + <?php do_action( 'bp_footer' ) ?> + </div><!-- #footer --> + + <?php do_action( 'bp_after_footer' ) ?> + + <?php wp_footer(); ?> + + </body> + +</html> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/forums/forums-loop.php b/wp-content/plugins/buddypress/bp-themes/bp-default/forums/forums-loop.php new file mode 100644 index 0000000..0aa9c45 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/forums/forums-loop.php @@ -0,0 +1,127 @@ +<?php + +/** + * BuddyPress - Forums Loop + * + * Querystring is set via AJAX in _inc/ajax.php - bp_dtheme_object_filter() + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php do_action( 'bp_before_forums_loop' ); ?> + +<?php if ( bp_has_forum_topics( bp_ajax_querystring( 'forums' ) ) ) : ?> + + <div id="pag-top" class="pagination"> + + <div class="pag-count" id="topic-count-top"> + + <?php bp_forum_pagination_count(); ?> + + </div> + + <div class="pagination-links" id="topic-pag-top"> + + <?php bp_forum_pagination(); ?> + + </div> + + </div> + + <?php do_action( 'bp_before_directory_forums_list' ); ?> + + <table class="forum"> + <thead> + <tr> + <th id="th-title"><?php _e( 'Topic', 'buddypress' ); ?></th> + <th id="th-postcount"><?php _e( 'Posts', 'buddypress' ); ?></th> + <th id="th-freshness"><?php _e( 'Freshness', 'buddypress' ); ?></th> + + <?php do_action( 'bp_directory_forums_extra_cell_head' ); ?> + + </tr> + </thead> + + <tbody> + + <?php while ( bp_forum_topics() ) : bp_the_forum_topic(); ?> + + <tr class="<?php bp_the_topic_css_class(); ?>"> + <td class="td-title"> + <a class="topic-title" href="<?php bp_the_topic_permalink(); ?>" title="<?php bp_the_topic_title(); ?> - <?php _e( 'Permalink', 'buddypress' ); ?>"> + + <?php bp_the_topic_title(); ?> + + </a> + + <p class="topic-meta"> + <span class="topic-by"><?php /* translators: "started by [poster] in [forum]" */ printf( __( 'Started by %1$s', 'buddypress' ), bp_get_the_topic_poster_avatar( 'height=20&width=20') . bp_get_the_topic_poster_name() ); ?></span> + + <?php if ( !bp_is_group_forum() ) : ?> + + <span class="topic-in"> + + <?php + $topic_in = '<a href="' . bp_get_the_topic_object_permalink() . '">' . bp_get_the_topic_object_avatar( 'type=thumb&width=20&height=20' ) . '</a>' . + '<a href="' . bp_get_the_topic_object_permalink() . '" title="' . bp_get_the_topic_object_name() . '">' . bp_get_the_topic_object_name() .'</a>'; + + /* translators: "started by [poster] in [forum]" */ + printf( __( 'in %1$s', 'buddypress' ), $topic_in ); + ?> + + </span> + + <?php endif; ?> + + </p> + </td> + <td class="td-postcount"> + <?php bp_the_topic_total_posts(); ?> + </td> + <td class="td-freshness"> + <span class="time-since"><?php bp_the_topic_time_since_last_post(); ?></span> + <p class="topic-meta"> + <span class="freshness-author"> + <a href="<?php bp_the_topic_permalink(); ?>"><?php bp_the_topic_last_poster_avatar( 'type=thumb&width=20&height=20' ); ?></a> + <?php bp_the_topic_last_poster_name(); ?> + </span> + </p> + </td> + + <?php do_action( 'bp_directory_forums_extra_cell' ); ?> + + </tr> + + <?php do_action( 'bp_directory_forums_extra_row' ); ?> + + <?php endwhile; ?> + + </tbody> + </table> + + <?php do_action( 'bp_after_directory_forums_list' ); ?> + + <div id="pag-bottom" class="pagination"> + + <div class="pag-count" id="topic-count-bottom"> + <?php bp_forum_pagination_count(); ?> + </div> + + <div class="pagination-links" id="topic-pag-bottom"> + <?php bp_forum_pagination(); ?> + </div> + + </div> + +<?php else: ?> + + <div id="message" class="info"> + <p><?php _e( 'Sorry, there were no forum topics found.', 'buddypress' ); ?></p> + </div> + +<?php endif; ?> + +<?php do_action( 'bp_after_forums_loop' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/forums/index.php b/wp-content/plugins/buddypress/bp-themes/bp-default/forums/index.php new file mode 100644 index 0000000..19a1f5a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/forums/index.php @@ -0,0 +1,164 @@ +<?php + +/** + * BuddyPress - Forums Directory + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php get_header( 'buddypress' ); ?> + + <?php do_action( 'bp_before_directory_forums_page' ); ?> + + <div id="content"> + <div class="padder"> + + <?php do_action( 'bp_before_directory_forums' ); ?> + + <form action="" method="post" id="forums-search-form" class="dir-form"> + + <h3><?php _e( 'Forums Directory', 'buddypress' ); ?><?php if ( is_user_logged_in() ) : ?>  <a class="button show-hide-new" href="#new-topic" id="new-topic-button"><?php _e( 'New Topic', 'buddypress' ); ?></a><?php endif; ?></h3> + + <?php do_action( 'bp_before_directory_forums_content' ); ?> + + <div id="forums-dir-search" class="dir-search" role="search"> + + <?php bp_directory_forums_search_form(); ?> + + </div> + </form> + + <?php do_action( 'bp_before_topics' ); ?> + + <form action="" method="post" id="forums-directory-form" class="dir-form"> + + <div class="item-list-tabs" role="navigation"> + <ul> + <li class="selected" id="forums-all"><a href="<?php echo trailingslashit( bp_get_root_domain() . '/' . bp_get_forums_root_slug() ); ?>"><?php printf( __( 'All Topics <span>%s</span>', 'buddypress' ), bp_get_forum_topic_count() ); ?></a></li> + + <?php if ( is_user_logged_in() && bp_get_forum_topic_count_for_user( bp_loggedin_user_id() ) ) : ?> + + <li id="forums-personal"><a href="<?php echo trailingslashit( bp_loggedin_user_domain() . bp_get_forums_slug() . '/topics' ); ?>"><?php printf( __( 'My Topics <span>%s</span>', 'buddypress' ), bp_get_forum_topic_count_for_user( bp_loggedin_user_id() ) ); ?></a></li> + + <?php endif; ?> + + <?php do_action( 'bp_forums_directory_group_types' ); ?> + + </ul> + </div> + + <div class="item-list-tabs" id="subnav" role="navigation"> + <ul> + + <?php do_action( 'bp_forums_directory_group_sub_types' ); ?> + + <li id="forums-order-select" class="last filter"> + + <label for="forums-order-by"><?php _e( 'Order By:', 'buddypress' ); ?></label> + <select id="forums-order-by"> + <option value="active"><?php _e( 'Last Active', 'buddypress' ); ?></option> + <option value="popular"><?php _e( 'Most Posts', 'buddypress' ); ?></option> + <option value="unreplied"><?php _e( 'Unreplied', 'buddypress' ); ?></option> + + <?php do_action( 'bp_forums_directory_order_options' ); ?> + + </select> + </li> + </ul> + </div> + + <div id="forums-dir-list" class="forums dir-list" role="main"> + + <?php locate_template( array( 'forums/forums-loop.php' ), true ); ?> + + </div> + + <?php do_action( 'bp_directory_forums_content' ); ?> + + <?php wp_nonce_field( 'directory_forums', '_wpnonce-forums-filter' ); ?> + + </form> + + <?php do_action( 'bp_after_directory_forums' ); ?> + + <?php do_action( 'bp_before_new_topic_form' ); ?> + + <div id="new-topic-post"> + + <?php if ( is_user_logged_in() ) : ?> + + <?php if ( bp_is_active( 'groups' ) && bp_has_groups( 'user_id=' . bp_loggedin_user_id() . '&type=alphabetical&max=100&per_page=100' ) ) : ?> + + <form action="" method="post" id="forum-topic-form" class="standard-form"> + + <?php do_action( 'groups_forum_new_topic_before' ) ?> + + <a name="post-new"></a> + <h5><?php _e( 'Create New Topic:', 'buddypress' ); ?></h5> + + <?php do_action( 'template_notices' ); ?> + + <label><?php _e( 'Title:', 'buddypress' ); ?></label> + <input type="text" name="topic_title" id="topic_title" value="" /> + + <label><?php _e( 'Content:', 'buddypress' ); ?></label> + <textarea name="topic_text" id="topic_text"></textarea> + + <label><?php _e( 'Tags (comma separated):', 'buddypress' ); ?></label> + <input type="text" name="topic_tags" id="topic_tags" value="" /> + + <label><?php _e( 'Post In Group Forum:', 'buddypress' ); ?></label> + <select id="topic_group_id" name="topic_group_id"> + + <option value=""><?php /* translators: no option picked in select box */ _e( '----', 'buddypress' ); ?></option> + + <?php while ( bp_groups() ) : bp_the_group(); ?> + + <?php if ( bp_group_is_forum_enabled() && ( is_super_admin() || 'public' == bp_get_group_status() || bp_group_is_member() ) ) : ?> + + <option value="<?php bp_group_id(); ?>"><?php bp_group_name(); ?></option> + + <?php endif; ?> + + <?php endwhile; ?> + + </select><!-- #topic_group_id --> + + <?php do_action( 'groups_forum_new_topic_after' ); ?> + + <div class="submit"> + <input type="submit" name="submit_topic" id="submit" value="<?php _e( 'Post Topic', 'buddypress' ); ?>" /> + <input type="button" name="submit_topic_cancel" id="submit_topic_cancel" value="<?php _e( 'Cancel', 'buddypress' ); ?>" /> + </div> + + <?php wp_nonce_field( 'bp_forums_new_topic' ); ?> + + </form><!-- #forum-topic-form --> + + <?php elseif ( bp_is_active( 'groups' ) ) : ?> + + <div id="message" class="info"> + + <p><?php printf( __( "You are not a member of any groups so you don't have any group forums you can post in. To start posting, first find a group that matches the topic subject you'd like to start. If this group does not exist, why not <a href='%s'>create a new group</a>? Once you have joined or created the group you can post your topic in that group's forum.", 'buddypress' ), site_url( bp_get_groups_root_slug() . '/create/' ) ) ?></p> + + </div> + + <?php endif; ?> + + <?php endif; ?> + </div><!-- #new-topic-post --> + + <?php do_action( 'bp_after_new_topic_form' ); ?> + + <?php do_action( 'bp_after_directory_forums_content' ); ?> + + </div><!-- .padder --> + </div><!-- #content --> + + <?php do_action( 'bp_after_directory_forums_page' ); ?> + +<?php get_sidebar( 'buddypress' ); ?> +<?php get_footer( 'buddypress' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/functions.php b/wp-content/plugins/buddypress/bp-themes/bp-default/functions.php new file mode 100644 index 0000000..a1a7859 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/functions.php @@ -0,0 +1,797 @@ +<?php +/** + * BP-Default theme functions and definitions + * + * Sets up the theme and provides some helper functions. Some helper functions + * are used in the theme as custom template tags. Others are attached to action and + * filter hooks in WordPress and BuddyPress to change core functionality. + * + * The first function, bp_dtheme_setup(), sets up the theme by registering support + * for various features in WordPress, such as post thumbnails and navigation menus, and + * for BuddyPress, action buttons and javascript localisation. + * + * When using a child theme (see http://codex.wordpress.org/Theme_Development, http://codex.wordpress.org/Child_Themes + * and http://codex.buddypress.org/theme-development/building-a-buddypress-child-theme/), you can override + * certain functions (those wrapped in a function_exists() call) by defining them first in your + * child theme's functions.php file. The child theme's functions.php file is included before the + * parent theme's file, so the child theme functions would be used. + * + * Functions that are not pluggable (not wrapped in function_exists()) are instead attached + * to a filter or action hook. The hook can be removed by using remove_action() or + * remove_filter() and you can attach your own function to the hook. + * + * For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API. + * + * @package BuddyPress + * @subpackage BP-Default + * @since 1.2 + */ + +if ( !function_exists( 'bp_is_active' ) ) + return; + +// If BuddyPress is not activated, switch back to the default WP theme +if ( !defined( 'BP_VERSION' ) ) + switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME ); + +/** + * Set the content width based on the theme's design and stylesheet. + * + * Used to set the width of images and content. Should be equal to the width the theme + * is designed for, generally via the style.css stylesheet. + */ +if ( ! isset( $content_width ) ) + $content_width = 591; + +if ( !function_exists( 'bp_dtheme_setup' ) ) : +/** + * Sets up theme defaults and registers support for various WordPress and BuddyPress features. + * + * Note that this function is hooked into the after_setup_theme hook, which runs + * before the init hook. The init hook is too late for some features, such as indicating + * support post thumbnails. + * + * To override bp_dtheme_setup() in a child theme, add your own bp_dtheme_setup to your child theme's + * functions.php file. + * + * @global object $bp Global BuddyPress settings object + * @since 1.5 + */ +function bp_dtheme_setup() { + global $bp; + + // Load the AJAX functions for the theme + require( TEMPLATEPATH . '/_inc/ajax.php' ); + + // This theme styles the visual editor with editor-style.css to match the theme style. + add_editor_style(); + + // This theme uses post thumbnails + add_theme_support( 'post-thumbnails' ); + + // Add default posts and comments RSS feed links to head + add_theme_support( 'automatic-feed-links' ); + + // Add responsive layout support to bp-default without forcing child + // themes to inherit it if they don't want to + add_theme_support( 'bp-default-responsive' ); + + // This theme uses wp_nav_menu() in one location. + register_nav_menus( array( + 'primary' => __( 'Primary Navigation', 'buddypress' ), + ) ); + + // This theme allows users to set a custom background + // Backward-compatibility with WP < 3.4 will be removed in a future release + if ( 3.4 <= bp_get_major_wp_version() ) { + $custom_background_args = array( + 'wp-head-callback' => 'bp_dtheme_custom_background_style' + ); + add_theme_support( 'custom-background', $custom_background_args ); + } else { + add_custom_background( 'bp_dtheme_custom_background_style' ); + } + + // Add custom header support if allowed + if ( !defined( 'BP_DTHEME_DISABLE_CUSTOM_HEADER' ) ) { + define( 'HEADER_TEXTCOLOR', 'FFFFFF' ); + + // The height and width of your custom header. You can hook into the theme's own filters to change these values. + // Add a filter to bp_dtheme_header_image_width and bp_dtheme_header_image_height to change these values. + define( 'HEADER_IMAGE_WIDTH', apply_filters( 'bp_dtheme_header_image_width', 1250 ) ); + define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'bp_dtheme_header_image_height', 133 ) ); + + // We'll be using post thumbnails for custom header images on posts and pages. We want them to be 1250 pixels wide by 133 pixels tall. + // Larger images will be auto-cropped to fit, smaller ones will be ignored. + set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true ); + + // Add a way for the custom header to be styled in the admin panel that controls custom headers. + // Backward-compatibility with WP < 3.4 will be removed in a future release + if ( 3.4 <= bp_get_major_wp_version() ) { + $custom_header_args = array( + 'wp-head-callback' => 'bp_dtheme_header_style', + 'admin-head-callback' => 'bp_dtheme_admin_header_style' + ); + add_theme_support( 'custom-header', $custom_header_args ); + } else { + add_custom_image_header( 'bp_dtheme_header_style', 'bp_dtheme_admin_header_style' ); + } + } + + if ( !is_admin() ) { + // Register buttons for the relevant component templates + // Friends button + if ( bp_is_active( 'friends' ) ) + add_action( 'bp_member_header_actions', 'bp_add_friend_button' ); + + // Activity button + if ( bp_is_active( 'activity' ) ) + add_action( 'bp_member_header_actions', 'bp_send_public_message_button' ); + + // Messages button + if ( bp_is_active( 'messages' ) ) + add_action( 'bp_member_header_actions', 'bp_send_private_message_button' ); + + // Group buttons + if ( bp_is_active( 'groups' ) ) { + add_action( 'bp_group_header_actions', 'bp_group_join_button' ); + add_action( 'bp_group_header_actions', 'bp_group_new_topic_button' ); + add_action( 'bp_directory_groups_actions', 'bp_group_join_button' ); + } + + // Blog button + if ( bp_is_active( 'blogs' ) ) + add_action( 'bp_directory_blogs_actions', 'bp_blogs_visit_blog_button' ); + } +} +add_action( 'after_setup_theme', 'bp_dtheme_setup' ); +endif; + +if ( !function_exists( 'bp_dtheme_enqueue_scripts' ) ) : +/** + * Enqueue theme javascript safely + * + * @see http://codex.wordpress.org/Function_Reference/wp_enqueue_script + * @since 1.5 + */ +function bp_dtheme_enqueue_scripts() { + // Bump this when changes are made to bust cache + $version = '20120110'; + + // Enqueue the global JS - Ajax will not work without it + wp_enqueue_script( 'dtheme-ajax-js', get_template_directory_uri() . '/_inc/global.js', array( 'jquery' ), $version ); + + // Add words that we need to use in JS to the end of the page so they can be translated and still used. + $params = array( + 'my_favs' => __( 'My Favorites', 'buddypress' ), + 'accepted' => __( 'Accepted', 'buddypress' ), + 'rejected' => __( 'Rejected', 'buddypress' ), + 'show_all_comments' => __( 'Show all comments for this thread', 'buddypress' ), + 'show_all' => __( 'Show all', 'buddypress' ), + 'comments' => __( 'comments', 'buddypress' ), + 'close' => __( 'Close', 'buddypress' ), + 'view' => __( 'View', 'buddypress' ), + 'mark_as_fav' => __( 'Favorite', 'buddypress' ), + 'remove_fav' => __( 'Remove Favorite', 'buddypress' ) + ); + + wp_localize_script( 'dtheme-ajax-js', 'BP_DTheme', $params ); +} +add_action( 'wp_enqueue_scripts', 'bp_dtheme_enqueue_scripts' ); +endif; + +if ( !function_exists( 'bp_dtheme_enqueue_styles' ) ) : +/** + * Enqueue theme CSS safely + * + * For maximum flexibility, BuddyPress Default's stylesheet is enqueued, using wp_enqueue_style(). + * If you're building a child theme of bp-default, your stylesheet will also be enqueued, + * automatically, as dependent on bp-default's CSS. For this reason, bp-default child themes are + * not recommended to include bp-default's stylesheet using @import. + * + * If you would prefer to use @import, or would like to change the way in which stylesheets are + * enqueued, you can override bp_dtheme_enqueue_styles() in your theme's functions.php file. + * + * @see http://codex.wordpress.org/Function_Reference/wp_enqueue_style + * @see http://codex.buddypress.org/releases/1-5-developer-and-designer-information/ + * @since 1.5 + */ +function bp_dtheme_enqueue_styles() { + + // Bump this when changes are made to bust cache + $version = '20120110'; + + // Register our main stylesheet + wp_register_style( 'bp-default-main', get_template_directory_uri() . '/_inc/css/default.css', array(), $version ); + + // If the current theme is a child of bp-default, enqueue its stylesheet + if ( is_child_theme() && 'bp-default' == get_template() ) { + wp_enqueue_style( get_stylesheet(), get_stylesheet_uri(), array( 'bp-default-main' ), $version ); + } + + // Enqueue the main stylesheet + wp_enqueue_style( 'bp-default-main' ); + + // Default CSS RTL + if ( is_rtl() ) + wp_enqueue_style( 'bp-default-main-rtl', get_template_directory_uri() . '/_inc/css/default-rtl.css', array( 'bp-default-main' ), $version ); + + // Responsive layout + if ( current_theme_supports( 'bp-default-responsive' ) ) { + wp_enqueue_style( 'bp-default-responsive', get_template_directory_uri() . '/_inc/css/responsive.css', array( 'bp-default-main' ), $version ); + + if ( is_rtl() ) + wp_enqueue_style( 'bp-default-responsive-rtl', get_template_directory_uri() . '/_inc/css/responsive-rtl.css', array( 'bp-default-responsive' ), $version ); + } +} +add_action( 'wp_enqueue_scripts', 'bp_dtheme_enqueue_styles' ); +endif; + +if ( !function_exists( 'bp_dtheme_admin_header_style' ) ) : +/** + * Styles the header image displayed on the Appearance > Header admin panel. + * + * Referenced via add_custom_image_header() in bp_dtheme_setup(). + * + * @since 1.2 + */ +function bp_dtheme_admin_header_style() { +?> + <style type="text/css"> + #headimg { + position: relative; + color: #fff; + background: url(<?php header_image() ?>); + -moz-border-radius-bottomleft: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomright: 6px; + -webkit-border-bottom-right-radius: 6px; + margin-bottom: 20px; + height: 133px; + } + + #headimg h1{ + position: absolute; + bottom: 15px; + left: 15px; + width: 44%; + margin: 0; + font-family: Arial, Tahoma, sans-serif; + } + #headimg h1 a{ + color:#<?php header_textcolor() ?>; + text-decoration: none; + border-bottom: none; + } + #headimg #desc{ + color:#<?php header_textcolor() ?>; + font-size:1em; + margin-top:-0.5em; + } + + #desc { + display: none; + } + + <?php if ( 'blank' == get_header_textcolor() ) { ?> + #headimg h1, #headimg #desc { + display: none; + } + #headimg h1 a, #headimg #desc { + color:#<?php echo HEADER_TEXTCOLOR ?>; + } + <?php } ?> + </style> +<?php +} +endif; + +if ( !function_exists( 'bp_dtheme_custom_background_style' ) ) : +/** + * The style for the custom background image or colour. + * + * Referenced via add_custom_background() in bp_dtheme_setup(). + * + * @see _custom_background_cb() + * @since 1.5 + */ +function bp_dtheme_custom_background_style() { + $background = get_background_image(); + $color = get_background_color(); + if ( ! $background && ! $color ) + return; + + $style = $color ? "background-color: #$color;" : ''; + + if ( $style && !$background ) { + $style .= ' background-image: none;'; + + } elseif ( $background ) { + $image = " background-image: url('$background');"; + + $repeat = get_theme_mod( 'background_repeat', 'repeat' ); + if ( ! in_array( $repeat, array( 'no-repeat', 'repeat-x', 'repeat-y', 'repeat' ) ) ) + $repeat = 'repeat'; + $repeat = " background-repeat: $repeat;"; + + $position = get_theme_mod( 'background_position_x', 'left' ); + if ( ! in_array( $position, array( 'center', 'right', 'left' ) ) ) + $position = 'left'; + $position = " background-position: top $position;"; + + $attachment = get_theme_mod( 'background_attachment', 'scroll' ); + if ( ! in_array( $attachment, array( 'fixed', 'scroll' ) ) ) + $attachment = 'scroll'; + $attachment = " background-attachment: $attachment;"; + + $style .= $image . $repeat . $position . $attachment; + } +?> + <style type="text/css"> + body { <?php echo trim( $style ); ?> } + </style> +<?php +} +endif; + +if ( !function_exists( 'bp_dtheme_header_style' ) ) : +/** + * The styles for the post thumbnails / custom page headers. + * + * Referenced via add_custom_image_header() in bp_dtheme_setup(). + * + * @global WP_Query $post The current WP_Query object for the current post or page + * @since 1.2 + */ +function bp_dtheme_header_style() { + global $post; + + $header_image = ''; + + if ( is_singular() && current_theme_supports( 'post-thumbnails' ) && has_post_thumbnail( $post->ID ) ) { + $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ); + + // $src, $width, $height + if ( !empty( $image ) && $image[1] >= HEADER_IMAGE_WIDTH ) + $header_image = $image[0]; + + } else { + $header_image = get_header_image(); + } +?> + + <style type="text/css"> + <?php if ( !empty( $header_image ) ) : ?> + #header { background-image: url(<?php echo $header_image ?>); } + <?php endif; ?> + + <?php if ( 'blank' == get_header_textcolor() ) { ?> + #header h1, #header #desc { display: none; } + <?php } else { ?> + #header h1 a, #desc { color:#<?php header_textcolor() ?>; } + <?php } ?> + </style> + +<?php +} +endif; + +if ( !function_exists( 'bp_dtheme_widgets_init' ) ) : +/** + * Register widgetised areas, including one sidebar and four widget-ready columns in the footer. + * + * To override bp_dtheme_widgets_init() in a child theme, remove the action hook and add your own + * function tied to the init hook. + * + * @since 1.5 + */ +function bp_dtheme_widgets_init() { + // Register the widget columns + // Area 1, located in the sidebar. Empty by default. + register_sidebar( array( + 'name' => 'Sidebar', + 'id' => 'sidebar-1', + 'description' => __( 'The sidebar widget area', 'buddypress' ), + 'before_widget' => '<div id="%1$s" class="widget %2$s">', + 'after_widget' => '</div>', + 'before_title' => '<h3 class="widgettitle">', + 'after_title' => '</h3>' + ) ); + + // Area 2, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'First Footer Widget Area', 'buddypress' ), + 'id' => 'first-footer-widget-area', + 'description' => __( 'The first footer widget area', 'buddypress' ), + 'before_widget' => '<li id="%1$s" class="widget %2$s">', + 'after_widget' => '</li>', + 'before_title' => '<h3 class="widgettitle">', + 'after_title' => '</h3>', + ) ); + + // Area 3, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'Second Footer Widget Area', 'buddypress' ), + 'id' => 'second-footer-widget-area', + 'description' => __( 'The second footer widget area', 'buddypress' ), + 'before_widget' => '<li id="%1$s" class="widget %2$s">', + 'after_widget' => '</li>', + 'before_title' => '<h3 class="widgettitle">', + 'after_title' => '</h3>', + ) ); + + // Area 4, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'Third Footer Widget Area', 'buddypress' ), + 'id' => 'third-footer-widget-area', + 'description' => __( 'The third footer widget area', 'buddypress' ), + 'before_widget' => '<li id="%1$s" class="widget %2$s">', + 'after_widget' => '</li>', + 'before_title' => '<h3 class="widgettitle">', + 'after_title' => '</h3>', + ) ); + + // Area 5, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'Fourth Footer Widget Area', 'buddypress' ), + 'id' => 'fourth-footer-widget-area', + 'description' => __( 'The fourth footer widget area', 'buddypress' ), + 'before_widget' => '<li id="%1$s" class="widget %2$s">', + 'after_widget' => '</li>', + 'before_title' => '<h3 class="widgettitle">', + 'after_title' => '</h3>', + ) ); +} +add_action( 'widgets_init', 'bp_dtheme_widgets_init' ); +endif; + +if ( !function_exists( 'bp_dtheme_blog_comments' ) ) : +/** + * Template for comments and pingbacks. + * + * To override this walker in a child theme without modifying the comments template + * simply create your own bp_dtheme_blog_comments(), and that function will be used instead. + * + * Used as a callback by wp_list_comments() for displaying the comments. + * + * @param mixed $comment Comment record from database + * @param array $args Arguments from wp_list_comments() call + * @param int $depth Comment nesting level + * @see wp_list_comments() + * @since 1.2 + */ +function bp_dtheme_blog_comments( $comment, $args, $depth ) { + $GLOBALS['comment'] = $comment; + + if ( 'pingback' == $comment->comment_type ) + return false; + + if ( 1 == $depth ) + $avatar_size = 50; + else + $avatar_size = 25; + ?> + + <li <?php comment_class() ?> id="comment-<?php comment_ID() ?>"> + <div class="comment-avatar-box"> + <div class="avb"> + <a href="<?php echo get_comment_author_url() ?>" rel="nofollow"> + <?php if ( $comment->user_id ) : ?> + <?php echo bp_core_fetch_avatar( array( 'item_id' => $comment->user_id, 'width' => $avatar_size, 'height' => $avatar_size, 'email' => $comment->comment_author_email ) ) ?> + <?php else : ?> + <?php echo get_avatar( $comment, $avatar_size ) ?> + <?php endif; ?> + </a> + </div> + </div> + + <div class="comment-content"> + <div class="comment-meta"> + <p> + <?php + /* translators: 1: comment author url, 2: comment author name, 3: comment permalink, 4: comment date/timestamp*/ + printf( __( '<a href="%1$s" rel="nofollow">%2$s</a> said on <a href="%3$s"><span class="time-since">%4$s</span></a>', 'buddypress' ), get_comment_author_url(), get_comment_author(), get_comment_link(), get_comment_date() ); + ?> + </p> + </div> + + <div class="comment-entry"> + <?php if ( $comment->comment_approved == '0' ) : ?> + <em class="moderate"><?php _e( 'Your comment is awaiting moderation.', 'buddypress' ); ?></em> + <?php endif; ?> + + <?php comment_text() ?> + </div> + + <div class="comment-options"> + <?php if ( comments_open() ) : ?> + <?php comment_reply_link( array( 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ); ?> + <?php endif; ?> + + <?php if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) : ?> + <?php printf( '<a class="button comment-edit-link bp-secondary-action" href="%1$s" title="%2$s">%3$s</a> ', get_edit_comment_link( $comment->comment_ID ), esc_attr__( 'Edit comment', 'buddypress' ), __( 'Edit', 'buddypress' ) ) ?> + <?php endif; ?> + + </div> + + </div> + +<?php +} +endif; + +if ( !function_exists( 'bp_dtheme_page_on_front' ) ) : +/** + * Return the ID of a page set as the home page. + * + * @return false|int ID of page set as the home page + * @since 1.2 + */ +function bp_dtheme_page_on_front() { + if ( 'page' != get_option( 'show_on_front' ) ) + return false; + + return apply_filters( 'bp_dtheme_page_on_front', get_option( 'page_on_front' ) ); +} +endif; + +if ( !function_exists( 'bp_dtheme_activity_secondary_avatars' ) ) : +/** + * Add secondary avatar image to this activity stream's record, if supported. + * + * @param string $action The text of this activity + * @param BP_Activity_Activity $activity Activity object + * @package BuddyPress Theme + * @return string + * @since 1.2.6 + */ +function bp_dtheme_activity_secondary_avatars( $action, $activity ) { + switch ( $activity->component ) { + case 'groups' : + case 'friends' : + // Only insert avatar if one exists + if ( $secondary_avatar = bp_get_activity_secondary_avatar() ) { + $reverse_content = strrev( $action ); + $position = strpos( $reverse_content, 'a<' ); + $action = substr_replace( $action, $secondary_avatar, -$position - 2, 0 ); + } + break; + } + + return $action; +} +add_filter( 'bp_get_activity_action_pre_meta', 'bp_dtheme_activity_secondary_avatars', 10, 2 ); +endif; + +if ( !function_exists( 'bp_dtheme_show_notice' ) ) : +/** + * Show a notice when the theme is activated - workaround by Ozh (http://old.nabble.com/Activation-hook-exist-for-themes--td25211004.html) + * + * @since 1.2 + */ +function bp_dtheme_show_notice() { + global $pagenow; + + // Bail if bp-default theme was not just activated + if ( empty( $_GET['activated'] ) || ( 'themes.php' != $pagenow ) || !is_admin() ) + return; + + ?> + + <div id="message" class="updated fade"> + <p><?php printf( __( 'Theme activated! This theme contains <a href="%s">custom header image</a> support and <a href="%s">sidebar widgets</a>.', 'buddypress' ), admin_url( 'themes.php?page=custom-header' ), admin_url( 'widgets.php' ) ) ?></p> + </div> + + <style type="text/css">#message2, #message0 { display: none; }</style> + + <?php +} +add_action( 'admin_notices', 'bp_dtheme_show_notice' ); +endif; + +if ( !function_exists( 'bp_dtheme_main_nav' ) ) : +/** + * wp_nav_menu() callback from the main navigation in header.php + * + * Used when the custom menus haven't been configured. + * + * @global object $bp Global BuddyPress settings object + * @param array Menu arguments from wp_nav_menu() + * @see wp_nav_menu() + * @since 1.5 + */ +function bp_dtheme_main_nav( $args ) { + global $bp; + + $pages_args = array( + 'depth' => 0, + 'echo' => false, + 'exclude' => '', + 'title_li' => '' + ); + $menu = wp_page_menu( $pages_args ); + $menu = str_replace( array( '<div class="menu"><ul>', '</ul></div>' ), array( '<ul id="nav">', '</ul><!-- #nav -->' ), $menu ); + echo $menu; + + do_action( 'bp_nav_items' ); +} +endif; + +if ( !function_exists( 'bp_dtheme_page_menu_args' ) ) : +/** + * Get our wp_nav_menu() fallback, bp_dtheme_main_nav(), to show a home link. + * + * @param array $args Default values for wp_page_menu() + * @see wp_page_menu() + * @since 1.5 + */ +function bp_dtheme_page_menu_args( $args ) { + $args['show_home'] = true; + return $args; +} +add_filter( 'wp_page_menu_args', 'bp_dtheme_page_menu_args' ); +endif; + +if ( !function_exists( 'bp_dtheme_comment_form' ) ) : +/** + * Applies BuddyPress customisations to the post comment form. + * + * @global string $user_identity The display name of the user + * @param array $default_labels The default options for strings, fields etc in the form + * @see comment_form() + * @since 1.5 + */ +function bp_dtheme_comment_form( $default_labels ) { + global $user_identity; + + $commenter = wp_get_current_commenter(); + $req = get_option( 'require_name_email' ); + $aria_req = ( $req ? " aria-required='true'" : '' ); + $fields = array( + 'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name', 'buddypress' ) . ( $req ? '<span class="required"> *</span>' : '' ) . '</label> ' . + '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>', + 'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email', 'buddypress' ) . ( $req ? '<span class="required"> *</span>' : '' ) . '</label> ' . + '<input id="email" name="email" type="text" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>', + 'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website', 'buddypress' ) . '</label>' . + '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>', + ); + + $new_labels = array( + 'comment_field' => '<p class="form-textarea"><textarea name="comment" id="comment" cols="60" rows="10" aria-required="true"></textarea></p>', + 'fields' => apply_filters( 'comment_form_default_fields', $fields ), + 'logged_in_as' => '', + 'must_log_in' => '<p class="alert">' . sprintf( __( 'You must be <a href="%1$s">logged in</a> to post a comment.', 'buddypress' ), wp_login_url( get_permalink() ) ) . '</p>', + 'title_reply' => __( 'Leave a reply', 'buddypress' ) + ); + + return apply_filters( 'bp_dtheme_comment_form', array_merge( $default_labels, $new_labels ) ); +} +add_filter( 'comment_form_defaults', 'bp_dtheme_comment_form', 10 ); +endif; + +if ( !function_exists( 'bp_dtheme_before_comment_form' ) ) : +/** + * Adds the user's avatar before the comment form box. + * + * The 'comment_form_top' action is used to insert our HTML within <div id="reply"> + * so that the nested comments comment-reply javascript moves the entirety of the comment reply area. + * + * @see comment_form() + * @since 1.5 + */ +function bp_dtheme_before_comment_form() { +?> + <div class="comment-avatar-box"> + <div class="avb"> + <?php if ( bp_loggedin_user_id() ) : ?> + <a href="<?php echo bp_loggedin_user_domain() ?>"> + <?php echo get_avatar( bp_loggedin_user_id(), 50 ) ?> + </a> + <?php else : ?> + <?php echo get_avatar( 0, 50 ) ?> + <?php endif; ?> + </div> + </div> + + <div class="comment-content standard-form"> +<?php +} +add_action( 'comment_form_top', 'bp_dtheme_before_comment_form' ); +endif; + +if ( !function_exists( 'bp_dtheme_after_comment_form' ) ) : +/** + * Closes tags opened in bp_dtheme_before_comment_form(). + * + * @see bp_dtheme_before_comment_form() + * @see comment_form() + * @since 1.5 + */ +function bp_dtheme_after_comment_form() { +?> + + </div><!-- .comment-content standard-form --> + +<?php +} +add_action( 'comment_form', 'bp_dtheme_after_comment_form' ); +endif; + +if ( !function_exists( 'bp_dtheme_sidebar_login_redirect_to' ) ) : +/** + * Adds a hidden "redirect_to" input field to the sidebar login form. + * + * @since 1.5 + */ +function bp_dtheme_sidebar_login_redirect_to() { + $redirect_to = apply_filters( 'bp_no_access_redirect', !empty( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '' ); +?> + <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" /> +<?php +} +add_action( 'bp_sidebar_login_form', 'bp_dtheme_sidebar_login_redirect_to' ); +endif; + +if ( !function_exists( 'bp_dtheme_content_nav' ) ) : +/** + * Display navigation to next/previous pages when applicable + * + * @global unknown $wp_query + * @param string $nav_id DOM ID for this navigation + * @since 1.5 + */ +function bp_dtheme_content_nav( $nav_id ) { + global $wp_query; + + if ( $wp_query->max_num_pages > 1 ) : ?> + <div id="<?php echo $nav_id; ?>" class="navigation"> + <div class="alignleft"><?php next_posts_link( __( '← Previous Entries', 'buddypress' ) ); ?></div> + <div class="alignright"><?php previous_posts_link( __( 'Next Entries →', 'buddypress' ) ); ?></div> + </div><!-- #<?php echo $nav_id; ?> --> + <?php endif; +} +endif; + +/** + * Adds the no-js class to the body tag. + * + * This function ensures that the <body> element will have the 'no-js' class by default. If you're + * using JavaScript for some visual functionality in your theme, and you want to provide noscript + * support, apply those styles to body.no-js. + * + * The no-js class is removed by the JavaScript created in bp_dtheme_remove_nojs_body_class(). + * + * @package BuddyPress + * @since 1.5.1 + * @see bp_dtheme_remove_nojs_body_class() + */ +function bp_dtheme_add_nojs_body_class( $classes ) { + $classes[] = 'no-js'; + return array_unique( $classes ); +} +add_filter( 'bp_get_the_body_class', 'bp_dtheme_add_nojs_body_class' ); + +/** + * Dynamically removes the no-js class from the <body> element. + * + * By default, the no-js class is added to the body (see bp_dtheme_add_no_js_body_class()). The + * JavaScript in this function is loaded into the <body> element immediately after the <body> tag + * (note that it's hooked to bp_before_header), and uses JavaScript to switch the 'no-js' body class + * to 'js'. If your theme has styles that should only apply for JavaScript-enabled users, apply them + * to body.js. + * + * This technique is borrowed from WordPress, wp-admin/admin-header.php. + * + * @package BuddyPress + * @since 1.5.1 + * @see bp_dtheme_add_nojs_body_class() + */ +function bp_dtheme_remove_nojs_body_class() { +?><script type="text/javascript">//<![CDATA[ +(function(){var c=document.body.className;c=c.replace(/no-js/,'js');document.body.className=c;})(); +//]]></script> +<?php +} +add_action( 'bp_before_header', 'bp_dtheme_remove_nojs_body_class' ); + +?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/create.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/create.php new file mode 100644 index 0000000..84cefe5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/create.php @@ -0,0 +1,318 @@ +<?php + +/** + * BuddyPress - Create Group + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php get_header( 'buddypress' ); ?> + + <div id="content"> + <div class="padder"> + + <form action="<?php bp_group_creation_form_action(); ?>" method="post" id="create-group-form" class="standard-form" enctype="multipart/form-data"> + <h3><?php _e( 'Create a Group', 'buddypress' ); ?>  <a class="button" href="<?php echo trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() ); ?>"><?php _e( 'Groups Directory', 'buddypress' ); ?></a></h3> + + <?php do_action( 'bp_before_create_group' ); ?> + + <div class="item-list-tabs no-ajax" id="group-create-tabs" role="navigation"> + <ul> + + <?php bp_group_creation_tabs(); ?> + + </ul> + </div> + + <?php do_action( 'template_notices' ); ?> + + <div class="item-body" id="group-create-body"> + + <?php /* Group creation step 1: Basic group details */ ?> + <?php if ( bp_is_group_creation_step( 'group-details' ) ) : ?> + + <?php do_action( 'bp_before_group_details_creation_step' ); ?> + + <label for="group-name"><?php _e( 'Group Name (required)', 'buddypress' ); ?></label> + <input type="text" name="group-name" id="group-name" aria-required="true" value="<?php bp_new_group_name(); ?>" /> + + <label for="group-desc"><?php _e( 'Group Description (required)', 'buddypress' ) ?></label> + <textarea name="group-desc" id="group-desc" aria-required="true"><?php bp_new_group_description(); ?></textarea> + + <?php + do_action( 'bp_after_group_details_creation_step' ); + do_action( 'groups_custom_group_fields_editable' ); // @Deprecated + + wp_nonce_field( 'groups_create_save_group-details' ); ?> + + <?php endif; ?> + + <?php /* Group creation step 2: Group settings */ ?> + <?php if ( bp_is_group_creation_step( 'group-settings' ) ) : ?> + + <?php do_action( 'bp_before_group_settings_creation_step' ); ?> + + <?php if ( bp_is_active( 'forums' ) ) : ?> + <?php if ( bp_forums_is_installed_correctly() ) : ?> + + <div class="checkbox"> + <label><input type="checkbox" name="group-show-forum" id="group-show-forum" value="1"<?php checked( bp_get_new_group_enable_forum(), true, true ); ?> /> <?php _e( 'Enable discussion forum', 'buddypress' ); ?></label> + </div> + + <?php else : ?> + <?php if ( is_super_admin() ) : ?> + + <div class="checkbox"> + <label><input type="checkbox" disabled="disabled" name="disabled" id="disabled" value="0" /> <?php printf( __( '<strong>Attention Site Admin:</strong> Group forums require the <a href="%s">correct setup and configuration</a> of a bbPress installation.', 'buddypress' ), bp_get_root_domain() . '/wp-admin/admin.php?page=bb-forums-setup' ); ?></label> + </div> + + <?php endif; ?> + <?php endif; ?> + <?php endif; ?> + + <hr /> + + <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4> + + <div class="radio"> + <label><input type="radio" name="group-status" value="public"<?php if ( 'public' == bp_get_new_group_status() || !bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> /> + <strong><?php _e( 'This is a public group', 'buddypress' ); ?></strong> + <ul> + <li><?php _e( 'Any site member can join this group.', 'buddypress' ); ?></li> + <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li> + <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li> + </ul> + </label> + + <label><input type="radio" name="group-status" value="private"<?php if ( 'private' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> /> + <strong><?php _e( 'This is a private group', 'buddypress' ); ?></strong> + <ul> + <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ); ?></li> + <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li> + <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li> + </ul> + </label> + + <label><input type="radio" name="group-status" value="hidden"<?php if ( 'hidden' == bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> /> + <strong><?php _e('This is a hidden group', 'buddypress'); ?></strong> + <ul> + <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ); ?></li> + <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li> + <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li> + </ul> + </label> + </div> + + <hr /> + + <h4><?php _e( 'Group Invitations', 'buddypress' ); ?></h4> + + <p><?php _e( 'Which members of this group are allowed to invite others?', 'buddypress' ) ?></p> + + <div class="radio"> + <label> + <input type="radio" name="group-invite-status" value="members"<?php bp_group_show_invite_status_setting( 'members' ) ?> /> + <strong><?php _e( 'All group members', 'buddypress' ) ?></strong> + </label> + + <label> + <input type="radio" name="group-invite-status" value="mods"<?php bp_group_show_invite_status_setting( 'mods' ) ?> /> + <strong><?php _e( 'Group admins and mods only', 'buddypress' ) ?></strong> + </label> + + <label> + <input type="radio" name="group-invite-status" value="admins"<?php bp_group_show_invite_status_setting( 'admins' ) ?> /> + <strong><?php _e( 'Group admins only', 'buddypress' ) ?></strong> + </label> + </div> + + <hr /> + + <?php do_action( 'bp_after_group_settings_creation_step' ); ?> + + <?php wp_nonce_field( 'groups_create_save_group-settings' ); ?> + + <?php endif; ?> + + <?php /* Group creation step 3: Avatar Uploads */ ?> + <?php if ( bp_is_group_creation_step( 'group-avatar' ) ) : ?> + + <?php do_action( 'bp_before_group_avatar_creation_step' ); ?> + + <?php if ( 'upload-image' == bp_get_avatar_admin_step() ) : ?> + + <div class="left-menu"> + + <?php bp_new_group_avatar(); ?> + + </div><!-- .left-menu --> + + <div class="main-column"> + <p><?php _e( "Upload an image to use as an avatar for this group. The image will be shown on the main group page, and in search results.", 'buddypress' ); ?></p> + + <p> + <input type="file" name="file" id="file" /> + <input type="submit" name="upload" id="upload" value="<?php _e( 'Upload Image', 'buddypress' ); ?>" /> + <input type="hidden" name="action" id="action" value="bp_avatar_upload" /> + </p> + + <p><?php _e( 'To skip the avatar upload process, hit the "Next Step" button.', 'buddypress' ); ?></p> + </div><!-- .main-column --> + + <?php endif; ?> + + <?php if ( 'crop-image' == bp_get_avatar_admin_step() ) : ?> + + <h3><?php _e( 'Crop Group Avatar', 'buddypress' ); ?></h3> + + <img src="<?php bp_avatar_to_crop(); ?>" id="avatar-to-crop" class="avatar" alt="<?php _e( 'Avatar to crop', 'buddypress' ); ?>" /> + + <div id="avatar-crop-pane"> + <img src="<?php bp_avatar_to_crop(); ?>" id="avatar-crop-preview" class="avatar" alt="<?php _e( 'Avatar preview', 'buddypress' ); ?>" /> + </div> + + <input type="submit" name="avatar-crop-submit" id="avatar-crop-submit" value="<?php _e( 'Crop Image', 'buddypress' ); ?>" /> + + <input type="hidden" name="image_src" id="image_src" value="<?php bp_avatar_to_crop_src(); ?>" /> + <input type="hidden" name="upload" id="upload" /> + <input type="hidden" id="x" name="x" /> + <input type="hidden" id="y" name="y" /> + <input type="hidden" id="w" name="w" /> + <input type="hidden" id="h" name="h" /> + + <?php endif; ?> + + <?php do_action( 'bp_after_group_avatar_creation_step' ); ?> + + <?php wp_nonce_field( 'groups_create_save_group-avatar' ); ?> + + <?php endif; ?> + + <?php /* Group creation step 4: Invite friends to group */ ?> + <?php if ( bp_is_group_creation_step( 'group-invites' ) ) : ?> + + <?php do_action( 'bp_before_group_invites_creation_step' ); ?> + + <?php if ( bp_is_active( 'friends' ) && bp_get_total_friend_count( bp_loggedin_user_id() ) ) : ?> + + <div class="left-menu"> + + <div id="invite-list"> + <ul> + <?php bp_new_group_invite_friend_list(); ?> + </ul> + + <?php wp_nonce_field( 'groups_invite_uninvite_user', '_wpnonce_invite_uninvite_user' ); ?> + </div> + + </div><!-- .left-menu --> + + <div class="main-column"> + + <div id="message" class="info"> + <p><?php _e('Select people to invite from your friends list.', 'buddypress'); ?></p> + </div> + + <?php /* The ID 'friend-list' is important for AJAX support. */ ?> + <ul id="friend-list" class="item-list" role="main"> + + <?php if ( bp_group_has_invites() ) : ?> + + <?php while ( bp_group_invites() ) : bp_group_the_invite(); ?> + + <li id="<?php bp_group_invite_item_id(); ?>"> + + <?php bp_group_invite_user_avatar(); ?> + + <h4><?php bp_group_invite_user_link(); ?></h4> + <span class="activity"><?php bp_group_invite_user_last_active(); ?></span> + + <div class="action"> + <a class="remove" href="<?php bp_group_invite_user_remove_invite_url(); ?>" id="<?php bp_group_invite_item_id(); ?>"><?php _e( 'Remove Invite', 'buddypress' ); ?></a> + </div> + </li> + + <?php endwhile; ?> + + <?php wp_nonce_field( 'groups_send_invites', '_wpnonce_send_invites' ); ?> + + <?php endif; ?> + + </ul> + + </div><!-- .main-column --> + + <?php else : ?> + + <div id="message" class="info"> + <p><?php _e( 'Once you have built up friend connections you will be able to invite others to your group. You can send invites any time in the future by selecting the "Send Invites" option when viewing your new group.', 'buddypress' ); ?></p> + </div> + + <?php endif; ?> + + <?php wp_nonce_field( 'groups_create_save_group-invites' ); ?> + + <?php do_action( 'bp_after_group_invites_creation_step' ); ?> + + <?php endif; ?> + + <?php do_action( 'groups_custom_create_steps' ); // Allow plugins to add custom group creation steps ?> + + <?php do_action( 'bp_before_group_creation_step_buttons' ); ?> + + <?php if ( 'crop-image' != bp_get_avatar_admin_step() ) : ?> + + <div class="submit" id="previous-next"> + + <?php /* Previous Button */ ?> + <?php if ( !bp_is_first_group_creation_step() ) : ?> + + <input type="button" value="<?php _e( 'Back to Previous Step', 'buddypress' ); ?>" id="group-creation-previous" name="previous" onclick="location.href='<?php bp_group_creation_previous_link(); ?>'" /> + + <?php endif; ?> + + <?php /* Next Button */ ?> + <?php if ( !bp_is_last_group_creation_step() && !bp_is_first_group_creation_step() ) : ?> + + <input type="submit" value="<?php _e( 'Next Step', 'buddypress' ); ?>" id="group-creation-next" name="save" /> + + <?php endif;?> + + <?php /* Create Button */ ?> + <?php if ( bp_is_first_group_creation_step() ) : ?> + + <input type="submit" value="<?php _e( 'Create Group and Continue', 'buddypress' ); ?>" id="group-creation-create" name="save" /> + + <?php endif; ?> + + <?php /* Finish Button */ ?> + <?php if ( bp_is_last_group_creation_step() ) : ?> + + <input type="submit" value="<?php _e( 'Finish', 'buddypress' ); ?>" id="group-creation-finish" name="save" /> + + <?php endif; ?> + </div> + + <?php endif;?> + + <?php do_action( 'bp_after_group_creation_step_buttons' ); ?> + + <?php /* Don't leave out this hidden field */ ?> + <input type="hidden" name="group_id" id="group_id" value="<?php bp_new_group_id(); ?>" /> + + <?php do_action( 'bp_directory_groups_content' ); ?> + + </div><!-- .item-body --> + + <?php do_action( 'bp_after_create_group' ); ?> + + </form> + + </div><!-- .padder --> + </div><!-- #content --> + +<?php get_sidebar( 'buddypress' ); ?> +<?php get_footer( 'buddypress' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/groups-loop.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/groups-loop.php new file mode 100644 index 0000000..7059eb9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/groups-loop.php @@ -0,0 +1,100 @@ +<?php + +/** + * BuddyPress - Groups Loop + * + * Querystring is set via AJAX in _inc/ajax.php - bp_dtheme_object_filter() + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php do_action( 'bp_before_groups_loop' ); ?> + +<?php if ( bp_has_groups( bp_ajax_querystring( 'groups' ) ) ) : ?> + + <div id="pag-top" class="pagination"> + + <div class="pag-count" id="group-dir-count-top"> + + <?php bp_groups_pagination_count(); ?> + + </div> + + <div class="pagination-links" id="group-dir-pag-top"> + + <?php bp_groups_pagination_links(); ?> + + </div> + + </div> + + <?php do_action( 'bp_before_directory_groups_list' ); ?> + + <ul id="groups-list" class="item-list" role="main"> + + <?php while ( bp_groups() ) : bp_the_group(); ?> + + <li> + <div class="item-avatar"> + <a href="<?php bp_group_permalink(); ?>"><?php bp_group_avatar( 'type=thumb&width=50&height=50' ); ?></a> + </div> + + <div class="item"> + <div class="item-title"><a href="<?php bp_group_permalink(); ?>"><?php bp_group_name(); ?></a></div> + <div class="item-meta"><span class="activity"><?php printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); ?></span></div> + + <div class="item-desc"><?php bp_group_description_excerpt(); ?></div> + + <?php do_action( 'bp_directory_groups_item' ); ?> + + </div> + + <div class="action"> + + <?php do_action( 'bp_directory_groups_actions' ); ?> + + <div class="meta"> + + <?php bp_group_type(); ?> / <?php bp_group_member_count(); ?> + + </div> + + </div> + + <div class="clear"></div> + </li> + + <?php endwhile; ?> + + </ul> + + <?php do_action( 'bp_after_directory_groups_list' ); ?> + + <div id="pag-bottom" class="pagination"> + + <div class="pag-count" id="group-dir-count-bottom"> + + <?php bp_groups_pagination_count(); ?> + + </div> + + <div class="pagination-links" id="group-dir-pag-bottom"> + + <?php bp_groups_pagination_links(); ?> + + </div> + + </div> + +<?php else: ?> + + <div id="message" class="info"> + <p><?php _e( 'There were no groups found.', 'buddypress' ); ?></p> + </div> + +<?php endif; ?> + +<?php do_action( 'bp_after_groups_loop' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/index.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/index.php new file mode 100644 index 0000000..7da62e9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/index.php @@ -0,0 +1,94 @@ +<?php + +/** + * BuddyPress - Groups Directory + * + * @package BuddyPress + * @subpackage bp-default + */ + +?> + +<?php get_header( 'buddypress' ); ?> + + <?php do_action( 'bp_before_directory_groups_page' ); ?> + + <div id="content"> + <div class="padder"> + + <?php do_action( 'bp_before_directory_groups' ); ?> + + <form action="" method="post" id="groups-directory-form" class="dir-form"> + + <h3><?php _e( 'Groups Directory', 'buddypress' ); ?><?php if ( is_user_logged_in() && bp_user_can_create_groups() ) : ?>  <a class="button" href="<?php echo trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create' ); ?>"><?php _e( 'Create a Group', 'buddypress' ); ?></a><?php endif; ?></h3> + + <?php do_action( 'bp_before_directory_groups_content' ); ?> + + <div id="group-dir-search" class="dir-search" role="search"> + + <?php bp_directory_groups_search_form() ?> + + </div><!-- #group-dir-search --> + + <?php do_action( 'template_notices' ); ?> + + <div class="item-list-tabs" role="navigation"> + <ul> + <li class="selected" id="groups-all"><a href="<?php echo trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() ); ?>"><?php printf( __( 'All Groups <span>%s</span>', 'buddypress' ), bp_get_total_group_count() ); ?></a></li> + + <?php if ( is_user_logged_in() && bp_get_total_group_count_for_user( bp_loggedin_user_id() ) ) : ?> + + <li id="groups-personal"><a href="<?php echo trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/my-groups' ); ?>"><?php printf( __( 'My Groups <span>%s</span>', 'buddypress' ), bp_get_total_group_count_for_user( bp_loggedin_user_id() ) ); ?></a></li> + + <?php endif; ?> + + <?php do_action( 'bp_groups_directory_group_filter' ); ?> + + </ul> + </div><!-- .item-list-tabs --> + + <div class="item-list-tabs" id="subnav" role="navigation"> + <ul> + + <?php do_action( 'bp_groups_directory_group_types' ); ?> + + <li id="groups-order-select" class="last filter"> + + <label for="groups-order-by"><?php _e( 'Order By:', 'buddypress' ); ?></label> + <select id="groups-order-by"> + <option value="active"><?php _e( 'Last Active', 'buddypress' ); ?></option> + <option value="popular"><?php _e( 'Most Members', 'buddypress' ); ?></option> + <option value="newest"><?php _e( 'Newly Created', 'buddypress' ); ?></option> + <option value="alphabetical"><?php _e( 'Alphabetical', 'buddypress' ); ?></option> + + <?php do_action( 'bp_groups_directory_order_options' ); ?> + + </select> + </li> + </ul> + </div> + + <div id="groups-dir-list" class="groups dir-list"> + + <?php locate_template( array( 'groups/groups-loop.php' ), true ); ?> + + </div><!-- #groups-dir-list --> + + <?php do_action( 'bp_directory_groups_content' ); ?> + + <?php wp_nonce_field( 'directory_groups', '_wpnonce-groups-filter' ); ?> + + <?php do_action( 'bp_after_directory_groups_content' ); ?> + + </form><!-- #groups-directory-form --> + + <?php do_action( 'bp_after_directory_groups' ); ?> + + </div><!-- .padder --> + </div><!-- #content --> + + <?php do_action( 'bp_after_directory_groups_page' ); ?> + +<?php get_sidebar( 'buddypress' ); ?> +<?php get_footer( 'buddypress' ); ?> + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/activity.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/activity.php new file mode 100644 index 0000000..57f30c7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/activity.php @@ -0,0 +1,39 @@ +<div class="item-list-tabs no-ajax" id="subnav" role="navigation"> + <ul> + <li class="feed"><a href="<?php bp_group_activity_feed_link() ?>" title="<?php _e( 'RSS Feed', 'buddypress' ); ?>"><?php _e( 'RSS', 'buddypress' ) ?></a></li> + + <?php do_action( 'bp_group_activity_syndication_options' ) ?> + + <li id="activity-filter-select" class="last"> + <label for="activity-filter-by"><?php _e( 'Show:', 'buddypress' ); ?></label> + <select id="activity-filter-by"> + <option value="-1"><?php _e( 'Everything', 'buddypress' ) ?></option> + <option value="activity_update"><?php _e( 'Updates', 'buddypress' ) ?></option> + + <?php if ( bp_is_active( 'forums' ) ) : ?> + <option value="new_forum_topic"><?php _e( 'Forum Topics', 'buddypress' ) ?></option> + <option value="new_forum_post"><?php _e( 'Forum Replies', 'buddypress' ) ?></option> + <?php endif; ?> + + <option value="joined_group"><?php _e( 'Group Memberships', 'buddypress' ) ?></option> + + <?php do_action( 'bp_group_activity_filter_options' ) ?> + </select> + </li> + </ul> +</div><!-- .item-list-tabs --> + +<?php do_action( 'bp_before_group_activity_post_form' ) ?> + +<?php if ( is_user_logged_in() && bp_group_is_member() ) : ?> + <?php locate_template( array( 'activity/post-form.php'), true ) ?> +<?php endif; ?> + +<?php do_action( 'bp_after_group_activity_post_form' ) ?> +<?php do_action( 'bp_before_group_activity_content' ) ?> + +<div class="activity single-group" role="main"> + <?php locate_template( array( 'activity/activity-loop.php' ), true ) ?> +</div><!-- .activity.single-group --> + +<?php do_action( 'bp_after_group_activity_content' ) ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/admin.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/admin.php new file mode 100644 index 0000000..2926417 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/admin.php @@ -0,0 +1,371 @@ +<div class="item-list-tabs no-ajax" id="subnav" role="navigation"> + <ul> + <?php bp_group_admin_tabs(); ?> + </ul> +</div><!-- .item-list-tabs --> + +<form action="<?php bp_group_admin_form_action() ?>" name="group-settings-form" id="group-settings-form" class="standard-form" method="post" enctype="multipart/form-data" role="main"> + +<?php do_action( 'bp_before_group_admin_content' ) ?> + +<?php /* Edit Group Details */ ?> +<?php if ( bp_is_group_admin_screen( 'edit-details' ) ) : ?> + + <?php do_action( 'bp_before_group_details_admin' ); ?> + + <label for="group-name"><?php _e( 'Group Name (required)', 'buddypress' ); ?></label> + <input type="text" name="group-name" id="group-name" value="<?php bp_group_name() ?>" aria-required="true" /> + + <label for="group-desc"><?php _e( 'Group Description (required)', 'buddypress' ); ?></label> + <textarea name="group-desc" id="group-desc" aria-required="true"><?php bp_group_description_editable() ?></textarea> + + <?php do_action( 'groups_custom_group_fields_editable' ) ?> + + <p> + <label for="group-notifiy-members"><?php _e( 'Notify group members of changes via email', 'buddypress' ); ?></label> + <input type="radio" name="group-notify-members" value="1" /> <?php _e( 'Yes', 'buddypress' ); ?>  + <input type="radio" name="group-notify-members" value="0" checked="checked" /> <?php _e( 'No', 'buddypress' ); ?>  + </p> + + <?php do_action( 'bp_after_group_details_admin' ); ?> + + <p><input type="submit" value="<?php _e( 'Save Changes', 'buddypress' ) ?>" id="save" name="save" /></p> + <?php wp_nonce_field( 'groups_edit_group_details' ) ?> + +<?php endif; ?> + +<?php /* Manage Group Settings */ ?> +<?php if ( bp_is_group_admin_screen( 'group-settings' ) ) : ?> + + <?php do_action( 'bp_before_group_settings_admin' ); ?> + + <?php if ( bp_is_active( 'forums' ) ) : ?> + + <?php if ( bp_forums_is_installed_correctly() ) : ?> + + <div class="checkbox"> + <label><input type="checkbox" name="group-show-forum" id="group-show-forum" value="1"<?php bp_group_show_forum_setting() ?> /> <?php _e( 'Enable discussion forum', 'buddypress' ) ?></label> + </div> + + <hr /> + + <?php endif; ?> + + <?php endif; ?> + + <h4><?php _e( 'Privacy Options', 'buddypress' ); ?></h4> + + <div class="radio"> + <label> + <input type="radio" name="group-status" value="public"<?php bp_group_show_status_setting( 'public' ) ?> /> + <strong><?php _e( 'This is a public group', 'buddypress' ) ?></strong> + <ul> + <li><?php _e( 'Any site member can join this group.', 'buddypress' ) ?></li> + <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ) ?></li> + <li><?php _e( 'Group content and activity will be visible to any site member.', 'buddypress' ) ?></li> + </ul> + </label> + + <label> + <input type="radio" name="group-status" value="private"<?php bp_group_show_status_setting( 'private' ) ?> /> + <strong><?php _e( 'This is a private group', 'buddypress' ) ?></strong> + <ul> + <li><?php _e( 'Only users who request membership and are accepted can join the group.', 'buddypress' ) ?></li> + <li><?php _e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ) ?></li> + <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ) ?></li> + </ul> + </label> + + <label> + <input type="radio" name="group-status" value="hidden"<?php bp_group_show_status_setting( 'hidden' ) ?> /> + <strong><?php _e( 'This is a hidden group', 'buddypress' ) ?></strong> + <ul> + <li><?php _e( 'Only users who are invited can join the group.', 'buddypress' ) ?></li> + <li><?php _e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ) ?></li> + <li><?php _e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ) ?></li> + </ul> + </label> + </div> + + <hr /> + + <h4><?php _e( 'Group Invitations', 'buddypress' ); ?></h4> + + <p><?php _e( 'Which members of this group are allowed to invite others?', 'buddypress' ) ?></p> + + <div class="radio"> + <label> + <input type="radio" name="group-invite-status" value="members"<?php bp_group_show_invite_status_setting( 'members' ) ?> /> + <strong><?php _e( 'All group members', 'buddypress' ) ?></strong> + </label> + + <label> + <input type="radio" name="group-invite-status" value="mods"<?php bp_group_show_invite_status_setting( 'mods' ) ?> /> + <strong><?php _e( 'Group admins and mods only', 'buddypress' ) ?></strong> + </label> + + <label> + <input type="radio" name="group-invite-status" value="admins"<?php bp_group_show_invite_status_setting( 'admins' ) ?> /> + <strong><?php _e( 'Group admins only', 'buddypress' ) ?></strong> + </label> + </div> + + <hr /> + + <?php do_action( 'bp_after_group_settings_admin' ); ?> + + <p><input type="submit" value="<?php _e( 'Save Changes', 'buddypress' ) ?>" id="save" name="save" /></p> + <?php wp_nonce_field( 'groups_edit_group_settings' ) ?> + +<?php endif; ?> + +<?php /* Group Avatar Settings */ ?> +<?php if ( bp_is_group_admin_screen( 'group-avatar' ) ) : ?> + + <?php if ( 'upload-image' == bp_get_avatar_admin_step() ) : ?> + + <p><?php _e("Upload an image to use as an avatar for this group. The image will be shown on the main group page, and in search results.", 'buddypress') ?></p> + + <p> + <input type="file" name="file" id="file" /> + <input type="submit" name="upload" id="upload" value="<?php _e( 'Upload Image', 'buddypress' ) ?>" /> + <input type="hidden" name="action" id="action" value="bp_avatar_upload" /> + </p> + + <?php if ( bp_get_group_has_avatar() ) : ?> + + <p><?php _e( "If you'd like to remove the existing avatar but not upload a new one, please use the delete avatar button.", 'buddypress' ) ?></p> + + <?php bp_button( array( 'id' => 'delete_group_avatar', 'component' => 'groups', 'wrapper_id' => 'delete-group-avatar-button', 'link_class' => 'edit', 'link_href' => bp_get_group_avatar_delete_link(), 'link_title' => __( 'Delete Avatar', 'buddypress' ), 'link_text' => __( 'Delete Avatar', 'buddypress' ) ) ); ?> + + <?php endif; ?> + + <?php wp_nonce_field( 'bp_avatar_upload' ) ?> + + <?php endif; ?> + + <?php if ( 'crop-image' == bp_get_avatar_admin_step() ) : ?> + + <h3><?php _e( 'Crop Avatar', 'buddypress' ) ?></h3> + + <img src="<?php bp_avatar_to_crop() ?>" id="avatar-to-crop" class="avatar" alt="<?php _e( 'Avatar to crop', 'buddypress' ) ?>" /> + + <div id="avatar-crop-pane"> + <img src="<?php bp_avatar_to_crop() ?>" id="avatar-crop-preview" class="avatar" alt="<?php _e( 'Avatar preview', 'buddypress' ) ?>" /> + </div> + + <input type="submit" name="avatar-crop-submit" id="avatar-crop-submit" value="<?php _e( 'Crop Image', 'buddypress' ) ?>" /> + + <input type="hidden" name="image_src" id="image_src" value="<?php bp_avatar_to_crop_src() ?>" /> + <input type="hidden" id="x" name="x" /> + <input type="hidden" id="y" name="y" /> + <input type="hidden" id="w" name="w" /> + <input type="hidden" id="h" name="h" /> + + <?php wp_nonce_field( 'bp_avatar_cropstore' ) ?> + + <?php endif; ?> + +<?php endif; ?> + +<?php /* Manage Group Members */ ?> +<?php if ( bp_is_group_admin_screen( 'manage-members' ) ) : ?> + + <?php do_action( 'bp_before_group_manage_members_admin' ); ?> + + <div class="bp-widget"> + <h4><?php _e( 'Administrators', 'buddypress' ); ?></h4> + + <?php if ( bp_has_members( '&include='. bp_group_admin_ids() ) ) : ?> + + <ul id="admins-list" class="item-list single-line>"> + + <?php while ( bp_members() ) : bp_the_member(); ?> + <li> + <?php echo bp_core_fetch_avatar( array( 'item_id' => bp_get_member_user_id(), 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ?> + <h5> + <a href="<?php bp_member_permalink(); ?>"> <?php bp_member_name(); ?></a> + <span class="small"> + <a class="button confirm admin-demote-to-member" href="<?php bp_group_member_demote_link( bp_get_member_user_id() ) ?>"><?php _e( 'Demote to Member', 'buddypress' ) ?></a> + </span> + </h5> + </li> + <?php endwhile; ?> + + </ul> + + <?php endif; ?> + + </div> + + <?php if ( bp_group_has_moderators() ) : ?> + <div class="bp-widget"> + <h4><?php _e( 'Moderators', 'buddypress' ) ?></h4> + + <?php if ( bp_has_members( '&include=' . bp_group_mod_ids() ) ) : ?> + <ul id="mods-list" class="item-list"> + + <?php while ( bp_members() ) : bp_the_member(); ?> + <li> + <?php echo bp_core_fetch_avatar( array( 'item_id' => bp_get_member_user_id(), 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ?> + <h5> + <a href="<?php bp_member_permalink(); ?>"> <?php bp_member_name(); ?></a> + <span class="small"> + <a href="<?php bp_group_member_promote_admin_link( array( 'user_id' => bp_get_member_user_id() ) ) ?>" class="button confirm mod-promote-to-admin" title="<?php _e( 'Promote to Admin', 'buddypress' ); ?>"><?php _e( 'Promote to Admin', 'buddypress' ); ?></a> + <a class="button confirm mod-demote-to-member" href="<?php bp_group_member_demote_link( bp_get_member_user_id() ) ?>"><?php _e( 'Demote to Member', 'buddypress' ) ?></a> + </span> + </h5> + </li> + <?php endwhile; ?> + + </ul> + + <?php endif; ?> + </div> + <?php endif ?> + + + <div class="bp-widget"> + <h4><?php _e("Members", "buddypress"); ?></h4> + + <?php if ( bp_group_has_members( 'per_page=15&exclude_banned=false' ) ) : ?> + + <?php if ( bp_group_member_needs_pagination() ) : ?> + + <div class="pagination no-ajax"> + + <div id="member-count" class="pag-count"> + <?php bp_group_member_pagination_count() ?> + </div> + + <div id="member-admin-pagination" class="pagination-links"> + <?php bp_group_member_admin_pagination() ?> + </div> + + </div> + + <?php endif; ?> + + <ul id="members-list" class="item-list single-line"> + <?php while ( bp_group_members() ) : bp_group_the_member(); ?> + + <li class="<?php bp_group_member_css_class(); ?>"> + <?php bp_group_member_avatar_mini() ?> + + <h5> + <?php bp_group_member_link() ?> + + <?php if ( bp_get_group_member_is_banned() ) _e( '(banned)', 'buddypress'); ?> + + <span class="small"> + + <?php if ( bp_get_group_member_is_banned() ) : ?> + + <a href="<?php bp_group_member_unban_link() ?>" class="button confirm member-unban" title="<?php _e( 'Unban this member', 'buddypress' ) ?>"><?php _e( 'Remove Ban', 'buddypress' ); ?></a> + + <?php else : ?> + + <a href="<?php bp_group_member_ban_link() ?>" class="button confirm member-ban" title="<?php _e( 'Kick and ban this member', 'buddypress' ); ?>"><?php _e( 'Kick & Ban', 'buddypress' ); ?></a> + <a href="<?php bp_group_member_promote_mod_link() ?>" class="button confirm member-promote-to-mod" title="<?php _e( 'Promote to Mod', 'buddypress' ); ?>"><?php _e( 'Promote to Mod', 'buddypress' ); ?></a> + <a href="<?php bp_group_member_promote_admin_link() ?>" class="button confirm member-promote-to-admin" title="<?php _e( 'Promote to Admin', 'buddypress' ); ?>"><?php _e( 'Promote to Admin', 'buddypress' ); ?></a> + + <?php endif; ?> + + <a href="<?php bp_group_member_remove_link() ?>" class="button confirm" title="<?php _e( 'Remove this member', 'buddypress' ); ?>"><?php _e( 'Remove from group', 'buddypress' ); ?></a> + + <?php do_action( 'bp_group_manage_members_admin_item' ); ?> + + </span> + </h5> + </li> + + <?php endwhile; ?> + </ul> + + <?php else: ?> + + <div id="message" class="info"> + <p><?php _e( 'This group has no members.', 'buddypress' ); ?></p> + </div> + + <?php endif; ?> + + </div> + + <?php do_action( 'bp_after_group_manage_members_admin' ); ?> + +<?php endif; ?> + +<?php /* Manage Membership Requests */ ?> +<?php if ( bp_is_group_admin_screen( 'membership-requests' ) ) : ?> + + <?php do_action( 'bp_before_group_membership_requests_admin' ); ?> + + <?php if ( bp_group_has_membership_requests() ) : ?> + + <ul id="request-list" class="item-list"> + <?php while ( bp_group_membership_requests() ) : bp_group_the_membership_request(); ?> + + <li> + <?php bp_group_request_user_avatar_thumb() ?> + <h4><?php bp_group_request_user_link() ?> <span class="comments"><?php bp_group_request_comment() ?></span></h4> + <span class="activity"><?php bp_group_request_time_since_requested() ?></span> + + <?php do_action( 'bp_group_membership_requests_admin_item' ); ?> + + <div class="action"> + + <?php bp_button( array( 'id' => 'group_membership_accept', 'component' => 'groups', 'wrapper_class' => 'accept', 'link_href' => bp_get_group_request_accept_link(), 'link_title' => __( 'Accept', 'buddypress' ), 'link_text' => __( 'Accept', 'buddypress' ) ) ); ?> + + <?php bp_button( array( 'id' => 'group_membership_reject', 'component' => 'groups', 'wrapper_class' => 'reject', 'link_href' => bp_get_group_request_reject_link(), 'link_title' => __( 'Reject', 'buddypress' ), 'link_text' => __( 'Reject', 'buddypress' ) ) ); ?> + + <?php do_action( 'bp_group_membership_requests_admin_item_action' ); ?> + + </div> + </li> + + <?php endwhile; ?> + </ul> + + <?php else: ?> + + <div id="message" class="info"> + <p><?php _e( 'There are no pending membership requests.', 'buddypress' ); ?></p> + </div> + + <?php endif; ?> + + <?php do_action( 'bp_after_group_membership_requests_admin' ); ?> + +<?php endif; ?> + +<?php do_action( 'groups_custom_edit_steps' ) // Allow plugins to add custom group edit screens ?> + +<?php /* Delete Group Option */ ?> +<?php if ( bp_is_group_admin_screen( 'delete-group' ) ) : ?> + + <?php do_action( 'bp_before_group_delete_admin' ); ?> + + <div id="message" class="info"> + <p><?php _e( 'WARNING: Deleting this group will completely remove ALL content associated with it. There is no way back, please be careful with this option.', 'buddypress' ); ?></p> + </div> + + <label><input type="checkbox" name="delete-group-understand" id="delete-group-understand" value="1" onclick="if(this.checked) { document.getElementById('delete-group-button').disabled = ''; } else { document.getElementById('delete-group-button').disabled = 'disabled'; }" /> <?php _e( 'I understand the consequences of deleting this group.', 'buddypress' ); ?></label> + + <?php do_action( 'bp_after_group_delete_admin' ); ?> + + <div class="submit"> + <input type="submit" disabled="disabled" value="<?php _e( 'Delete Group', 'buddypress' ) ?>" id="delete-group-button" name="delete-group-button" /> + </div> + + <?php wp_nonce_field( 'groups_delete_group' ) ?> + +<?php endif; ?> + +<?php /* This is important, don't forget it */ ?> + <input type="hidden" name="group-id" id="group-id" value="<?php bp_group_id() ?>" /> + +<?php do_action( 'bp_after_group_admin_content' ) ?> + +</form><!-- #group-settings-form --> + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/forum.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/forum.php new file mode 100644 index 0000000..f376e28 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/forum.php @@ -0,0 +1,97 @@ +<?php + +do_action( 'bp_before_group_forum_content' ); + +if ( bp_is_group_forum_topic_edit() ) : + locate_template( array( 'groups/single/forum/edit.php' ), true ); + +elseif ( bp_is_group_forum_topic() ) : + locate_template( array( 'groups/single/forum/topic.php' ), true ); + +else : ?> + + <div class="item-list-tabs no-ajax" id="subnav" role="navigation"> + <ul> + + <?php if ( is_user_logged_in() ) : ?> + + <li> + <a href="#post-new" class="show-hide-new"><?php _e( 'New Topic', 'buddypress' ) ?></a> + </li> + + <?php endif; ?> + + <?php if ( bp_forums_has_directory() ) : ?> + + <li> + <a href="<?php bp_forums_directory_permalink() ?>"><?php _e( 'Forum Directory', 'buddypress') ?></a> + </li> + + <?php endif; ?> + + <?php do_action( 'bp_forums_directory_group_sub_types' ); ?> + + <li id="forums-order-select" class="last filter"> + + <label for="forums-order-by"><?php _e( 'Order By:', 'buddypress' ); ?></label> + <select id="forums-order-by"> + <option value="active"><?php _e( 'Last Active', 'buddypress' ); ?></option> + <option value="popular"><?php _e( 'Most Posts', 'buddypress' ); ?></option> + <option value="unreplied"><?php _e( 'Unreplied', 'buddypress' ); ?></option> + + <?php do_action( 'bp_forums_directory_order_options' ); ?> + + </select> + </li> + </ul> + </div> + + <div class="forums single-forum" role="main"> + + <?php locate_template( array( 'forums/forums-loop.php' ), true ) ?> + + </div><!-- .forums.single-forum --> + +<?php endif; ?> + +<?php do_action( 'bp_after_group_forum_content' ) ?> + +<?php if ( !bp_is_group_forum_topic_edit() && !bp_is_group_forum_topic() ) : ?> + + <?php if ( !bp_group_is_user_banned() && ( ( is_user_logged_in() && 'public' == bp_get_group_status() ) || bp_group_is_member() ) ) : ?> + + <form action="" method="post" id="forum-topic-form" class="standard-form"> + <div id="new-topic-post"> + + <?php do_action( 'bp_before_group_forum_post_new' ) ?> + + <?php if ( bp_groups_auto_join() && !bp_group_is_member() ) : ?> + <p><?php _e( 'You will auto join this group when you start a new topic.', 'buddypress' ) ?></p> + <?php endif; ?> + + <p id="post-new"></p> + <h4><?php _e( 'Post a New Topic:', 'buddypress' ) ?></h4> + + <label><?php _e( 'Title:', 'buddypress' ) ?></label> + <input type="text" name="topic_title" id="topic_title" value="" /> + + <label><?php _e( 'Content:', 'buddypress' ) ?></label> + <textarea name="topic_text" id="topic_text"></textarea> + + <label><?php _e( 'Tags (comma separated):', 'buddypress' ) ?></label> + <input type="text" name="topic_tags" id="topic_tags" value="" /> + + <?php do_action( 'bp_after_group_forum_post_new' ) ?> + + <div class="submit"> + <input type="submit" name="submit_topic" id="submit" value="<?php _e( 'Post Topic', 'buddypress' ) ?>" /> + </div> + + <?php wp_nonce_field( 'bp_forums_new_topic' ) ?> + </div><!-- #new-topic-post --> + </form><!-- #forum-topic-form --> + + <?php endif; ?> + +<?php endif; ?> + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/forum/edit.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/forum/edit.php new file mode 100644 index 0000000..1db8ca2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/forum/edit.php @@ -0,0 +1,96 @@ +<?php do_action( 'bp_before_group_forum_edit_form' ); ?> + +<?php if ( bp_has_forum_topic_posts() ) : ?> + + <form action="<?php bp_forum_topic_action(); ?>" method="post" id="forum-topic-form" class="standard-form"> + + <div class="item-list-tabs" id="subnav" role="navigation"> + <ul> + <li> + <a href="#post-topic-reply"><?php _e( 'Reply', 'buddypress' ); ?></a> + </li> + + <?php if ( bp_forums_has_directory() ) : ?> + + <li> + <a href="<?php bp_forums_directory_permalink(); ?>"><?php _e( 'Forum Directory', 'buddypress'); ?></a> + </li> + + <?php endif; ?> + + </ul> + </div> + + <div id="topic-meta"> + <h3><?php _e( 'Edit:', 'buddypress' ); ?> <?php bp_the_topic_title(); ?> (<?php bp_the_topic_total_post_count(); ?>)</h3> + + <?php if ( bp_group_is_admin() || bp_group_is_mod() || bp_get_the_topic_is_mine() ) : ?> + + <div class="last admin-links"> + + <?php bp_the_topic_admin_links(); ?> + + </div> + + <?php endif; ?> + + <?php do_action( 'bp_group_forum_topic_meta' ); ?> + + </div> + + <?php if ( bp_group_is_member() ) : ?> + + <?php if ( bp_is_edit_topic() ) : ?> + + <div id="edit-topic"> + + <?php do_action( 'bp_group_before_edit_forum_topic' ); ?> + + <label for="topic_title"><?php _e( 'Title:', 'buddypress' ); ?></label> + <input type="text" name="topic_title" id="topic_title" value="<?php bp_the_topic_title(); ?>" /> + + <label for="topic_text"><?php _e( 'Content:', 'buddypress' ); ?></label> + <textarea name="topic_text" id="topic_text"><?php bp_the_topic_text(); ?></textarea> + + <label><?php _e( 'Tags (comma separated):', 'buddypress' ) ?></label> + <input type="text" name="topic_tags" id="topic_tags" value="<?php bp_forum_topic_tag_list() ?>" /> + + <?php do_action( 'bp_group_after_edit_forum_topic' ); ?> + + <p class="submit"><input type="submit" name="save_changes" id="save_changes" value="<?php _e( 'Save Changes', 'buddypress' ); ?>" /></p> + + <?php wp_nonce_field( 'bp_forums_edit_topic' ); ?> + + </div> + + <?php else : ?> + + <div id="edit-post"> + + <?php do_action( 'bp_group_before_edit_forum_post' ); ?> + + <textarea name="post_text" id="post_text"><?php bp_the_topic_post_edit_text(); ?></textarea> + + <?php do_action( 'bp_group_after_edit_forum_post' ) ?> + + <p class="submit"><input type="submit" name="save_changes" id="save_changes" value="<?php _e( 'Save Changes', 'buddypress' ); ?>" /></p> + + <?php wp_nonce_field( 'bp_forums_edit_post' ); ?> + + </div> + + <?php endif; ?> + + <?php endif; ?> + + </form><!-- #forum-topic-form --> + +<?php else: ?> + + <div id="message" class="info"> + <p><?php _e( 'This topic does not exist.', 'buddypress' ); ?></p> + </div> + +<?php endif;?> + +<?php do_action( 'bp_after_group_forum_edit_form' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/forum/topic.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/forum/topic.php new file mode 100644 index 0000000..14b7f0b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/forum/topic.php @@ -0,0 +1,166 @@ +<?php do_action( 'bp_before_group_forum_topic' ); ?> + +<?php if ( bp_has_forum_topic_posts() ) : ?> + + <form action="<?php bp_forum_topic_action() ?>" method="post" id="forum-topic-form" class="standard-form"> + + <div class="item-list-tabs no-ajax" id="subnav" role="navigation"> + <ul> + <?php if ( is_user_logged_in() ) : ?> + + <li> + <a href="<?php bp_forum_topic_new_reply_link() ?>" class="new-reply-link"><?php _e( 'New Reply', 'buddypress' ) ?></a> + </li> + + <?php endif; ?> + + <?php if ( bp_forums_has_directory() ) : ?> + + <li> + <a href="<?php bp_forums_directory_permalink() ?>"><?php _e( 'Forum Directory', 'buddypress') ?></a> + </li> + + <?php endif; ?> + + </ul> + </div> + + <div id="topic-meta"> + <h3><?php bp_the_topic_title() ?> (<?php bp_the_topic_total_post_count() ?>)</h3> + + <?php if ( bp_forum_topic_has_tags() ) : ?> + + <div class="topic-tags"> + + <?php _e( 'Topic tags:', 'buddypress' ) ?> <?php bp_forum_topic_tag_list() ?> + + </div> + + <?php endif; ?> + + <?php if ( bp_group_is_admin() || bp_group_is_mod() || bp_get_the_topic_is_mine() ) : ?> + + <div class="last admin-links"> + + <?php bp_the_topic_admin_links() ?> + + </div> + + <?php endif; ?> + + <?php do_action( 'bp_group_forum_topic_meta' ); ?> + + </div> + + <div class="pagination no-ajax"> + + <div id="post-count-top" class="pag-count"> + + <?php bp_the_topic_pagination_count() ?> + + </div> + + <div class="pagination-links" id="topic-pag-top"> + + <?php bp_the_topic_pagination() ?> + + </div> + + </div> + + <?php do_action( 'bp_before_group_forum_topic_posts' ) ?> + + <ul id="topic-post-list" class="item-list" role="main"> + <?php while ( bp_forum_topic_posts() ) : bp_the_forum_topic_post(); ?> + + <li id="post-<?php bp_the_topic_post_id() ?>" class="<?php bp_the_topic_post_css_class() ?>"> + <div class="poster-meta"> + <a href="<?php bp_the_topic_post_poster_link() ?>"> + <?php bp_the_topic_post_poster_avatar( 'width=40&height=40' ) ?> + </a> + <?php echo sprintf( __( '%1$s said %2$s:', 'buddypress' ), bp_get_the_topic_post_poster_name(), bp_get_the_topic_post_time_since() ) ?> + </div> + + <div class="post-content"> + <?php bp_the_topic_post_content() ?> + </div> + + <div class="admin-links"> + <?php if ( bp_group_is_admin() || bp_group_is_mod() || bp_get_the_topic_post_is_mine() ) : ?> + <?php bp_the_topic_post_admin_links() ?> + <?php endif; ?> + + <?php do_action( 'bp_group_forum_post_meta' ); ?> + + <a href="#post-<?php bp_the_topic_post_id() ?>" title="<?php _e( 'Permanent link to this post', 'buddypress' ) ?>">#</a> + </div> + </li> + + <?php endwhile; ?> + </ul><!-- #topic-post-list --> + + <?php do_action( 'bp_after_group_forum_topic_posts' ) ?> + + <div class="pagination no-ajax"> + + <div id="post-count-bottom" class="pag-count"> + <?php bp_the_topic_pagination_count() ?> + </div> + + <div class="pagination-links" id="topic-pag-bottom"> + <?php bp_the_topic_pagination() ?> + </div> + + </div> + + <?php if ( ( is_user_logged_in() && 'public' == bp_get_group_status() ) || bp_group_is_member() ) : ?> + + <?php if ( bp_get_the_topic_is_last_page() ) : ?> + + <?php if ( bp_get_the_topic_is_topic_open() && !bp_group_is_user_banned() ) : ?> + + <div id="post-topic-reply"> + <p id="post-reply"></p> + + <?php if ( bp_groups_auto_join() && !bp_group_is_member() ) : ?> + <p><?php _e( 'You will auto join this group when you reply to this topic.', 'buddypress' ) ?></p> + <?php endif; ?> + + <?php do_action( 'groups_forum_new_reply_before' ) ?> + + <h4><?php _e( 'Add a reply:', 'buddypress' ) ?></h4> + + <textarea name="reply_text" id="reply_text"></textarea> + + <div class="submit"> + <input type="submit" name="submit_reply" id="submit" value="<?php _e( 'Post Reply', 'buddypress' ) ?>" /> + </div> + + <?php do_action( 'groups_forum_new_reply_after' ) ?> + + <?php wp_nonce_field( 'bp_forums_new_reply' ) ?> + </div> + + <?php elseif ( !bp_group_is_user_banned() ) : ?> + + <div id="message" class="info"> + <p><?php _e( 'This topic is closed, replies are no longer accepted.', 'buddypress' ) ?></p> + </div> + + <?php endif; ?> + + <?php endif; ?> + + <?php endif; ?> + + </form><!-- #forum-topic-form --> + +<?php else: ?> + + <div id="message" class="info"> + <p><?php _e( 'There are no posts for this topic.', 'buddypress' ) ?></p> + </div> + +<?php endif;?> + +<?php do_action( 'bp_after_group_forum_topic' ) ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/group-header.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/group-header.php new file mode 100644 index 0000000..7d7263c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/group-header.php @@ -0,0 +1,64 @@ +<?php + +do_action( 'bp_before_group_header' ); + +?> + +<div id="item-actions"> + + <?php if ( bp_group_is_visible() ) : ?> + + <h3><?php _e( 'Group Admins', 'buddypress' ); ?></h3> + + <?php bp_group_list_admins(); + + do_action( 'bp_after_group_menu_admins' ); + + if ( bp_group_has_moderators() ) : + do_action( 'bp_before_group_menu_mods' ); ?> + + <h3><?php _e( 'Group Mods' , 'buddypress' ) ?></h3> + + <?php bp_group_list_mods(); + + do_action( 'bp_after_group_menu_mods' ); + + endif; + + endif; ?> + +</div><!-- #item-actions --> + +<div id="item-header-avatar"> + <a href="<?php bp_group_permalink(); ?>" title="<?php bp_group_name(); ?>"> + + <?php bp_group_avatar(); ?> + + </a> +</div><!-- #item-header-avatar --> + +<div id="item-header-content"> + <h2><a href="<?php bp_group_permalink(); ?>" title="<?php bp_group_name(); ?>"><?php bp_group_name(); ?></a></h2> + <span class="highlight"><?php bp_group_type(); ?></span> <span class="activity"><?php printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); ?></span> + + <?php do_action( 'bp_before_group_header_meta' ); ?> + + <div id="item-meta"> + + <?php bp_group_description(); ?> + + <div id="item-buttons"> + + <?php do_action( 'bp_group_header_actions' ); ?> + + </div><!-- #item-buttons --> + + <?php do_action( 'bp_group_header_meta' ); ?> + + </div> +</div><!-- #item-header-content --> + +<?php +do_action( 'bp_after_group_header' ); +do_action( 'template_notices' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/home.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/home.php new file mode 100644 index 0000000..b02d55c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/home.php @@ -0,0 +1,82 @@ +<?php get_header( 'buddypress' ); ?> + + <div id="content"> + <div class="padder"> + + <?php if ( bp_has_groups() ) : while ( bp_groups() ) : bp_the_group(); ?> + + <?php do_action( 'bp_before_group_home_content' ) ?> + + <div id="item-header" role="complementary"> + + <?php locate_template( array( 'groups/single/group-header.php' ), true ); ?> + + </div><!-- #item-header --> + + <div id="item-nav"> + <div class="item-list-tabs no-ajax" id="object-nav" role="navigation"> + <ul> + + <?php bp_get_options_nav(); ?> + + <?php do_action( 'bp_group_options_nav' ); ?> + + </ul> + </div> + </div><!-- #item-nav --> + + <div id="item-body"> + + <?php do_action( 'bp_before_group_body' ); + + if ( bp_is_group_admin_page() && bp_group_is_visible() ) : + locate_template( array( 'groups/single/admin.php' ), true ); + + elseif ( bp_is_group_members() && bp_group_is_visible() ) : + locate_template( array( 'groups/single/members.php' ), true ); + + elseif ( bp_is_group_invites() && bp_group_is_visible() ) : + locate_template( array( 'groups/single/send-invites.php' ), true ); + + elseif ( bp_is_group_forum() && bp_group_is_visible() && bp_is_active( 'forums' ) && bp_forums_is_installed_correctly() ) : + locate_template( array( 'groups/single/forum.php' ), true ); + + elseif ( bp_is_group_membership_request() ) : + locate_template( array( 'groups/single/request-membership.php' ), true ); + + elseif ( bp_group_is_visible() && bp_is_active( 'activity' ) ) : + locate_template( array( 'groups/single/activity.php' ), true ); + + elseif ( bp_group_is_visible() ) : + locate_template( array( 'groups/single/members.php' ), true ); + + elseif ( !bp_group_is_visible() ) : + // The group is not visible, show the status message + + do_action( 'bp_before_group_status_message' ); ?> + + <div id="message" class="info"> + <p><?php bp_group_status_message(); ?></p> + </div> + + <?php do_action( 'bp_after_group_status_message' ); + + else : + // If nothing sticks, just load a group front template if one exists. + locate_template( array( 'groups/single/front.php' ), true ); + + endif; + + do_action( 'bp_after_group_body' ); ?> + + </div><!-- #item-body --> + + <?php do_action( 'bp_after_group_home_content' ); ?> + + <?php endwhile; endif; ?> + + </div><!-- .padder --> + </div><!-- #content --> + +<?php get_sidebar( 'buddypress' ); ?> +<?php get_footer( 'buddypress' ); ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/members.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/members.php new file mode 100644 index 0000000..fb7b4e2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/members.php @@ -0,0 +1,90 @@ +<?php if ( bp_group_has_members( 'exclude_admins_mods=0' ) ) : ?> + + <?php do_action( 'bp_before_group_members_content' ); ?> + + <div class="item-list-tabs" id="subnav" role="navigation"> + <ul> + + <?php do_action( 'bp_members_directory_member_sub_types' ); ?> + + </ul> + </div> + + <div id="pag-top" class="pagination no-ajax"> + + <div class="pag-count" id="member-count-top"> + + <?php bp_members_pagination_count(); ?> + + </div> + + <div class="pagination-links" id="member-pag-top"> + + <?php bp_members_pagination_links(); ?> + + </div> + + </div> + + <?php do_action( 'bp_before_group_members_list' ); ?> + + <ul id="member-list" class="item-list" role="main"> + + <?php while ( bp_group_members() ) : bp_group_the_member(); ?> + + <li> + <a href="<?php bp_group_member_domain(); ?>"> + + <?php bp_group_member_avatar_thumb(); ?> + + </a> + + <h5><?php bp_group_member_link(); ?></h5> + <span class="activity"><?php bp_group_member_joined_since(); ?></span> + + <?php do_action( 'bp_group_members_list_item' ); ?> + + <?php if ( bp_is_active( 'friends' ) ) : ?> + + <div class="action"> + + <?php bp_add_friend_button( bp_get_group_member_id(), bp_get_group_member_is_friend() ); ?> + + <?php do_action( 'bp_group_members_list_item_action' ); ?> + + </div> + + <?php endif; ?> + </li> + + <?php endwhile; ?> + + </ul> + + <?php do_action( 'bp_after_group_members_list' ); ?> + + <div id="pag-bottom" class="pagination no-ajax"> + + <div class="pag-count" id="member-count-bottom"> + + <?php bp_members_pagination_count(); ?> + + </div> + + <div class="pagination-links" id="member-pag-bottom"> + + <?php bp_members_pagination_links(); ?> + + </div> + + </div> + + <?php do_action( 'bp_after_group_members_content' ); ?> + +<?php else: ?> + + <div id="message" class="info"> + <p><?php _e( 'This group has no members.', 'buddypress' ); ?></p> + </div> + +<?php endif; ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/plugins.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/plugins.php new file mode 100644 index 0000000..5579b34 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/plugins.php @@ -0,0 +1,41 @@ +<?php get_header( 'buddypress' ) ?> + + <div id="content"> + <div class="padder"> + <?php if ( bp_has_groups() ) : while ( bp_groups() ) : bp_the_group(); ?> + + <?php do_action( 'bp_before_group_plugin_template' ) ?> + + <div id="item-header"> + <?php locate_template( array( 'groups/single/group-header.php' ), true ) ?> + </div><!-- #item-header --> + + <div id="item-nav"> + <div class="item-list-tabs no-ajax" id="object-nav" role="navigation"> + <ul> + <?php bp_get_options_nav() ?> + + <?php do_action( 'bp_group_plugin_options_nav' ) ?> + </ul> + </div> + </div><!-- #item-nav --> + + <div id="item-body"> + + <?php do_action( 'bp_before_group_body' ) ?> + + <?php do_action( 'bp_template_content' ) ?> + + <?php do_action( 'bp_after_group_body' ) ?> + </div><!-- #item-body --> + + <?php do_action( 'bp_after_group_plugin_template' ) ?> + + <?php endwhile; endif; ?> + + </div><!-- .padder --> + </div><!-- #content --> + + <?php get_sidebar( 'buddypress' ) ?> + +<?php get_footer( 'buddypress' ) ?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/request-membership.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/request-membership.php new file mode 100644 index 0000000..55b548d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/request-membership.php @@ -0,0 +1,18 @@ +<?php do_action( 'bp_before_group_request_membership_content' ) ?> + +<?php if ( !bp_group_has_requested_membership() ) : ?> + <p><?php printf( __( "You are requesting to become a member of the group '%s'.", "buddypress" ), bp_get_group_name( false ) ); ?></p> + + <form action="<?php bp_group_form_action('request-membership') ?>" method="post" name="request-membership-form" id="request-membership-form" class="standard-form"> + <label for="group-request-membership-comments"><?php _e( 'Comments (optional)', 'buddypress' ); ?></label> + <textarea name="group-request-membership-comments" id="group-request-membership-comments"></textarea> + + <?php do_action( 'bp_group_request_membership_content' ) ?> + + <p><input type="submit" name="group-request-send" id="group-request-send" value="<?php _e( 'Send Request', 'buddypress' ) ?>" /> + + <?php wp_nonce_field( 'groups_request_membership' ) ?> + </form><!-- #request-membership-form --> +<?php endif; ?> + +<?php do_action( 'bp_after_group_request_membership_content' ) ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/send-invites.php b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/send-invites.php new file mode 100644 index 0000000..c6562e3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/groups/single/send-invites.php @@ -0,0 +1,78 @@ +<?php do_action( 'bp_before_group_send_invites_content' ) ?> + +<?php if ( bp_get_total_friend_count( bp_loggedin_user_id() ) ) : ?> + + <form action="<?php bp_group_send_invite_form_action() ?>" method="post" id="send-invite-form" class="standard-form" role="main"> + + <div class="left-menu"> + + <div id="invite-list"> + <ul> + <?php bp_new_group_invite_friend_list() ?> + </ul> + + <?php wp_nonce_field( 'groups_invite_uninvite_user', '_wpnonce_invite_uninvite_user' ) ?> + </div> + + </div><!-- .left-menu --> + + <div class="main-column"> + + <div id="message" class="info"> + <p><?php _e('Select people to invite from your friends list.', 'buddypress'); ?></p> + </div> + + <?php do_action( 'bp_before_group_send_invites_list' ) ?> + + <?php /* The ID 'friend-list' is important for AJAX support. */ ?> + <ul id="friend-list" class="item-list"> + <?php if ( bp_group_has_invites() ) : ?> + + <?php while ( bp_group_invites() ) : bp_group_the_invite(); ?> + + <li id="<?php bp_group_invite_item_id() ?>"> + <?php bp_group_invite_user_avatar() ?> + + <h4><?php bp_group_invite_user_link() ?></h4> + <span class="activity"><?php bp_group_invite_user_last_active() ?></span> + + <?php do_action( 'bp_group_send_invites_item' ) ?> + + <div class="action"> + <a class="button remove" href="<?php bp_group_invite_user_remove_invite_url() ?>" id="<?php bp_group_invite_item_id() ?>"><?php _e( 'Remove Invite', 'buddypress' ) ?></a> + + <?php do_action( 'bp_group_send_invites_item_action' ) ?> + </div> + </li> + + <?php endwhile; ?> + + <?php endif; ?> + </ul><!-- #friend-list --> + + <?php do_action( 'bp_after_group_send_invites_list' ) ?> + + </div><!-- .main-column --> + + <div class="clear"></div> + + <div class="submit"> + <input type="submit" name="submit" id="submit" value="<?php _e( 'Send Invites', 'buddypress' ) ?>" /> + </div> + + <?php wp_nonce_field( 'groups_send_invites', '_wpnonce_send_invites') ?> + + <?php /* This is important, don't forget it */ ?> + <input type="hidden" name="group_id" id="group_id" value="<?php bp_group_id() ?>" /> + + </form><!-- #send-invite-form --> + +<?php else : ?> + + <div id="message" class="info" role="main"> + <p><?php _e( 'Once you have built up friend connections you will be able to invite others to your group. You can send invites any time in the future by selecting the "Send Invites" option when viewing your new group.', 'buddypress' ); ?></p> + </div> + +<?php endif; ?> + +<?php do_action( 'bp_after_group_send_invites_content' ) ?> diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/header.php b/wp-content/plugins/buddypress/bp-themes/bp-default/header.php new file mode 100644 index 0000000..7835d11 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/header.php @@ -0,0 +1,57 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>> + <head profile="http://gmpg.org/xfn/11"> + <meta http-equiv="Content-Type" content="<?php bloginfo( 'html_type' ) ?>; charset=<?php bloginfo( 'charset' ) ?>" /> + <title><?php wp_title( '|', true, 'right' ); bloginfo( 'name' ); ?> + + + + + + + + + id="bp-default"> + + + + + + + + +
      diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/index.php b/wp-content/plugins/buddypress/bp-themes/bp-default/index.php new file mode 100644 index 0000000..8011024 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/index.php @@ -0,0 +1,69 @@ + + +
      +
      + + + + + +
      + + + + + + + + + +
      > + +
      + +

      post_author ) ) ?>

      + + + + +
      + +
      +

      + +

      in %2$s', 'buddypress' ), get_the_date(), get_the_category_list( ', ' ) ); ?>

      + +
      + + '', 'next_or_number' => 'number' ) ); ?> +
      + + +
      + +
      + + + + + + + + + +

      +

      + + + + +
      + + + +
      +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/license.txt b/wp-content/plugins/buddypress/bp-themes/bp-default/license.txt new file mode 100644 index 0000000..8882205 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/license.txt @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/links.php b/wp-content/plugins/buddypress/bp-themes/bp-default/links.php new file mode 100644 index 0000000..c2c7cd3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/links.php @@ -0,0 +1,29 @@ + + + + +
      +
      + + + +
      + +

      + + + +
      + + + +
      +
      + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/index.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/index.php new file mode 100644 index 0000000..52f3413 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/index.php @@ -0,0 +1,95 @@ + + + + + + +
      +
      + + + +
      + +

      + + + + + + + + + +
      + + + +
      + + + + + + + +
      + + + +
      +
      + + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/members-loop.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/members-loop.php new file mode 100644 index 0000000..dafb5e7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/members-loop.php @@ -0,0 +1,113 @@ + + + + + + + + + + +
        + + + +
      • +
        + +
        + +
        +
        + + + + + + + + +
        + +
        + + + + +
        + +
        + + + +
        + +
        +
      • + + + +
      + + + + + + + + + +
      +

      +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/activity.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/activity.php new file mode 100644 index 0000000..de5a675 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/activity.php @@ -0,0 +1,77 @@ + + + + + + + + +
      + + + +
      + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/activity/permalink.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/activity/permalink.php new file mode 100644 index 0000000..ad4beec --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/activity/permalink.php @@ -0,0 +1,17 @@ + + +
      + + +
        + + + + + +
      + + +
      + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/blogs.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/blogs.php new file mode 100644 index 0000000..971d716 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/blogs.php @@ -0,0 +1,40 @@ + + + + + + +
      + + + +
      + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/forums.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/forums.php new file mode 100644 index 0000000..6131c1c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/forums.php @@ -0,0 +1,47 @@ + + + + + + +
      + + + +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/forums/topics.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/forums/topics.php new file mode 100644 index 0000000..a202e9e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/forums/topics.php @@ -0,0 +1,7 @@ + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/friends.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/friends.php new file mode 100644 index 0000000..6975e78 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/friends.php @@ -0,0 +1,52 @@ + + + + + + +
      + + + +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/friends/requests.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/friends/requests.php new file mode 100644 index 0000000..874d0df --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/friends/requests.php @@ -0,0 +1,73 @@ + + + + + + +
        + + +
      • +
        + +
        + +
        +
        +
        +
        + + + +
        +   + + + +
        +
      • + + +
      + + + + + + + +
      +

      +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/groups.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/groups.php new file mode 100644 index 0000000..143436c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/groups.php @@ -0,0 +1,53 @@ + + + + + + +
      + + + +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/groups/invites.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/groups/invites.php new file mode 100644 index 0000000..dcf2d69 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/groups/invites.php @@ -0,0 +1,42 @@ + + + + +
        + + + +
      • +
        + +
        + +

        -

        + +

        + +

        + + + +
        +   + + + + +
        +
      • + + +
      + + + +
      +

      +
      + + + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/home.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/home.php new file mode 100644 index 0000000..bc2ac2a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/home.php @@ -0,0 +1,81 @@ + + + + +
      +
      + + + + + +
      + +
      + +
      + + + +
      + + + +
      +
      + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/member-header.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/member-header.php new file mode 100644 index 0000000..902bc65 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/member-header.php @@ -0,0 +1,66 @@ + + + + + + +
      + +

      + +

      + + @ + + + + +
      + + + +
      + + + +
      + + + +
      + + + +
      + + + +
      + +
      + + + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages.php new file mode 100644 index 0000000..2426fd8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages.php @@ -0,0 +1,44 @@ + + + + + + +
      + + + +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/compose.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/compose.php new file mode 100644 index 0000000..00a840b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/compose.php @@ -0,0 +1,37 @@ +
      + + + + +
        +
      • + + +
      • +
      + + + + + + + + + + + + + + + +
      + " name="send" id="send" /> +
      + + +
      + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/messages-loop.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/messages-loop.php new file mode 100644 index 0000000..8c26abe --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/messages-loop.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + read"> + + + + + + + + + + + + + + + + + +
      + + +
      + +
      +
      + +
      +

      ">

      +

      +
      + + ">   +
      + +
      + +
      + + + + + + + +
      +

      +
      + + + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/notices-loop.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/notices-loop.php new file mode 100644 index 0000000..29d0eb1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/notices-loop.php @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + ">x +
      + + + + + +
      +

      +
      + + + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/single.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/single.php new file mode 100644 index 0000000..35de17b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/messages/single.php @@ -0,0 +1,110 @@ +
      + + + + + +

      + +

      + + + + + + + + + + + + + + + ">   +

      + + + + + +
      + + + + + +
      + + + +
      + + + +
      + +
      + + + + + + + +
      + +
      + + + +
      + + + + + + + +
      + +
      + + + + + +
      + +
      + +
      + + + + + + + +
      \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/plugins.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/plugins.php new file mode 100644 index 0000000..aab002f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/plugins.php @@ -0,0 +1,69 @@ + + + + +
      +
      + + + +
      + + + +
      + +
      + +
      + +
      + + + + + +

      + + + + + +
      + + + +
      +
      + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile.php new file mode 100644 index 0000000..8c023e1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile.php @@ -0,0 +1,48 @@ + + + + + + + + + + +
      + + + +
      + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/change-avatar.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/change-avatar.php new file mode 100644 index 0000000..b7a351e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/change-avatar.php @@ -0,0 +1,59 @@ +

      + + + + + +

      Gravatar associated with your account email we will use that, or you can upload an image from your computer.', 'buddypress') ?>

      + +
      + + + + +

      + +

      + + + +

      + + +

      +

      + + + + + + +
      + + <?php _e( 'Avatar to crop', 'buddypress' ) ?> + +
      + <?php _e( 'Avatar preview', 'buddypress' ) ?> +
      + + + + + + + + + + + + + +
      + + + +

      Gravatar using the same email address as you used to register with this site.', 'buddypress' ) ?>

      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/edit.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/edit.php new file mode 100644 index 0000000..e863b1a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/edit.php @@ -0,0 +1,137 @@ + + +
      + + + +

      + +
        + + + +
      + +
      + + + + > + + + + + aria-required="true"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + + + + + +
      + + + +
      + + + + + +
      + + + + + + + +
      + + + + + +

      +
      + + + + + +
      + +
      + + + + + + + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/profile-loop.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/profile-loop.php new file mode 100644 index 0000000..b90d0a8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/profile-loop.php @@ -0,0 +1,48 @@ + + + + + + + + + + +
      + +

      + + + + + + + + > + + + + + + + + + + + + + +
      +
      + + + + + + + + + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/profile-wp.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/profile-wp.php new file mode 100644 index 0000000..9756265 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/profile/profile-wp.php @@ -0,0 +1,73 @@ + + + + + + +
      +

      + + + + display_name ) : ?> + + + + + + + + + user_description ) : ?> + + + + + + + + + user_url ) : ?> + + + + + + + + + jabber ) : ?> + + + + + + + + + aim ) : ?> + + + + + + + + + yim ) : ?> + + + + + + + + +
      display_name; ?>
      user_description; ?>
      user_url ); ?>
      jabber; ?>
      aim; ?>
      yim; ?>
      +
      + + + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings.php new file mode 100644 index 0000000..b981df8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings.php @@ -0,0 +1,38 @@ + + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings/delete-account.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings/delete-account.php new file mode 100644 index 0000000..d67f483 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings/delete-account.php @@ -0,0 +1,82 @@ + + + + +
      +
      + + + +
      + + + +
      + +
      + +
      + +
      + + + + + +

      + +
      + +
      +

      +
      + + + + + +
      + +
      + + + + +
      + + + +
      + + + +
      +
      + + + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings/general.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings/general.php new file mode 100644 index 0000000..9f226ef --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings/general.php @@ -0,0 +1,93 @@ + + + + +
      +
      + + + +
      + + + +
      + +
      + +
      + +
      + + + + + +

      + + + +
      + + + + +   + + + + + + + +  
      +   + + + +
      + +
      + + + + + +
      + + + +
      + + + +
      +
      + + + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings/notifications.php b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings/notifications.php new file mode 100644 index 0000000..7a51f7b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/members/single/settings/notifications.php @@ -0,0 +1,82 @@ + + + + +
      +
      + + + +
      + + + +
      + +
      + +
      + +
      + + + + + +

      + + + +
      +

      + + + + + +
      + +
      + + + + + +
      + + + +
      + + + +
      +
      + + + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/onecolumn-page.php b/wp-content/plugins/buddypress/bp-themes/bp-default/onecolumn-page.php new file mode 100644 index 0000000..f5d3261 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/onecolumn-page.php @@ -0,0 +1,49 @@ + + +
      +
      + + + +
      + + + +

      + +
      > + +
      + + Read the rest of this page →

      ', 'buddypress' ) ); ?> + + '', 'next_or_number' => 'number' ) ); ?> + ', '

      '); ?> + +
      + +
      + + + + + +
      + + + +
      +
      + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/page.php b/wp-content/plugins/buddypress/bp-themes/bp-default/page.php new file mode 100644 index 0000000..af0c109 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/page.php @@ -0,0 +1,40 @@ + + +
      +
      + + + +
      + + + +

      + +
      > + +
      + + Read the rest of this page →

      ', 'buddypress' ) ); ?> + + '', 'next_or_number' => 'number' ) ); ?> + ', '

      '); ?> + +
      + +
      + + + + + +
      + + + +
      +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/readme.txt b/wp-content/plugins/buddypress/bp-themes/bp-default/readme.txt new file mode 100644 index 0000000..b2c7f6f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/readme.txt @@ -0,0 +1,22 @@ +--- BuddyPress Default --- +Clean and stylish, BuddyPress Default lets you build a social network straight out of the box. Make it yours with a custom menu, header image, and background. Along with five widgetized areas (one in the sidebar, four in the footer), BP-Default supports featured images (as custom header images on posts and pages) and is furnished with an optional one-column page template that removes the sidebar, and a stylesheet for the admin Visual Editor. + + +--- Installation --- +The theme is bundled with BuddyPress. After activating the plugin, BuddyPress Default will be added to the "Appearance > Themes" menu in your WordPress admin area. + + +--- About BuddyPress --- +Social networking in a box. Build a social network for your company, school, sports team or niche community all based on the power and flexibility of WordPress. BuddyPress will let users register on your site and start creating profiles, posting messages, making connections, creating and interacting in groups and much more. + +For help with BuddyPress Default, or for more information about BuddyPress, please visit http://buddypress.org/. + + +--- Building a BuddyPress theme --- +If you want to make a custom theme based on BuddyPress Default, DO NOT copy and edit it. By doing this you will make updates and maintenance much harder for yourself. Instead, please review this codex page for instructions on how to build a BuddyPress child theme: + +http://codex.buddypress.org/how-to-guides/building-a-buddypress-child-theme/ + + +--- Changelog --- +A list of changes is available at http://codex.buddypress.org/theme-development/bp-default-theme-changelog/. \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/registration/activate.php b/wp-content/plugins/buddypress/bp-themes/bp-default/registration/activate.php new file mode 100644 index 0000000..f7fcf19 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/registration/activate.php @@ -0,0 +1,54 @@ + + +
      +
      + + + +
      + + + +

      + + + + +

      + +

      + + + + +

      + + + +

      + +
      + + + + +

      + +

      + +
      + + + + + +
      + + + +
      +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/registration/register.php b/wp-content/plugins/buddypress/bp-themes/bp-default/registration/register.php new file mode 100644 index 0000000..c841cf6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/registration/register.php @@ -0,0 +1,269 @@ + + +
      +
      + + + +
      + +
      + + + + + +

      + + + + + + +

      + + + +

      + + + +
      + + + +

      + + + + + + + + + + + + + + + + + +
      + + + + + + + + + +
      + +

      + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + +
      + + + + + +
      + + + + +
      + + + + + +
      + + + + + + + + +
      + + + + + +

      + +
      + + + + + + + +
      + + + + + + + + + + + +
      + +

      + +

      checked="checked" />

      + +
      class="show"> + + + + + + http:// . + + / + + + + + + + : + + + + + +
      + +
      + + + + + + + +
      + +
      + + + + + + + + + +

      + + + + + +

      + +

      + + + + + + + + +
      + +
      + + + +
      +
      + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/rtl.css b/wp-content/plugins/buddypress/bp-themes/bp-default/rtl.css new file mode 100644 index 0000000..bf18c62 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/rtl.css @@ -0,0 +1,24 @@ +/** + * Theme Name: BuddyPress Default + * Theme URI: http://buddypress.org/extend/themes/ + * Description: Clean and stylish, BuddyPress Default lets you build a social network straight out of the box. Make it yours with a custom menu, header image, and background. Along with five widgetized areas (one in the sidebar, four in the footer), BP-Default supports featured images (as custom header images on posts and pages) and is furnished with an optional one-column page template that removes the sidebar, and a stylesheet for the admin Visual Editor. + * Version: 1.5.6 + * Author: the BuddyPress team + * Author URI: http://buddypress.org + * License: GNU General Public License + * License URI: license.txt + * Tags: blue, buddypress, custom-background, custom-header, custom-menu, editor-style, featured-image-header, featured-images, fixed-width, light, right-sidebar, rtl-language-support, sticky-post, threaded-comments, translation-ready, two-columns, white + * + *** IMPORTANT - DO NOT COPY THIS THEME ** + * + * If you want to make a custom theme based on this theme, DO NOT copy and edit it. By + * doing this you will make updates and maintainence much harder for yourself. + * Instead, please read this codex page on how to build a BuddyPress child theme: + * + * http://codex.buddypress.org/how-to-guides/building-a-buddypress-child-theme/ + * + *** + * + * This file intentionally left blank. CSS is enqueued in functions.php + * + */ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/screenshot.png b/wp-content/plugins/buddypress/bp-themes/bp-default/screenshot.png new file mode 100644 index 0000000..68928f7 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-themes/bp-default/screenshot.png differ diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/search.php b/wp-content/plugins/buddypress/bp-themes/bp-default/search.php new file mode 100644 index 0000000..54eae9f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/search.php @@ -0,0 +1,65 @@ + + +
      +
      + + + + + + + +
      +
      + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/searchform.php b/wp-content/plugins/buddypress/bp-themes/bp-default/searchform.php new file mode 100644 index 0000000..633dcff --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/searchform.php @@ -0,0 +1,10 @@ + + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/sidebar-footer.php b/wp-content/plugins/buddypress/bp-themes/bp-default/sidebar-footer.php new file mode 100644 index 0000000..2a04443 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/sidebar-footer.php @@ -0,0 +1,50 @@ + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/sidebar.php b/wp-content/plugins/buddypress/bp-themes/bp-default/sidebar.php new file mode 100644 index 0000000..42fae58 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/sidebar.php @@ -0,0 +1,76 @@ + + + + + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/single.php b/wp-content/plugins/buddypress/bp-themes/bp-default/single.php new file mode 100644 index 0000000..c2aee9d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/single.php @@ -0,0 +1,58 @@ + + +
      +
      + + + +
      + + + +
      > + +
      + +

      post_author ) ) ); ?>

      +
      + +
      +

      + +

      + in %2$s', 'buddypress' ), get_the_date(), get_the_category_list( ', ' ) ); ?> + +

      + +
      + + + '', 'next_or_number' => 'number' ) ); ?> +
      + + + +
      ' . _x( '←', 'Previous post link', 'buddypress' ) . ' %title' ); ?>
      +
      ' . _x( '→', 'Next post link', 'buddypress' ) . '' ); ?>
      +
      + +
      + + + + + +

      + + + +
      + + + +
      +
      + + + + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/style.css b/wp-content/plugins/buddypress/bp-themes/bp-default/style.css new file mode 100644 index 0000000..bf18c62 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/style.css @@ -0,0 +1,24 @@ +/** + * Theme Name: BuddyPress Default + * Theme URI: http://buddypress.org/extend/themes/ + * Description: Clean and stylish, BuddyPress Default lets you build a social network straight out of the box. Make it yours with a custom menu, header image, and background. Along with five widgetized areas (one in the sidebar, four in the footer), BP-Default supports featured images (as custom header images on posts and pages) and is furnished with an optional one-column page template that removes the sidebar, and a stylesheet for the admin Visual Editor. + * Version: 1.5.6 + * Author: the BuddyPress team + * Author URI: http://buddypress.org + * License: GNU General Public License + * License URI: license.txt + * Tags: blue, buddypress, custom-background, custom-header, custom-menu, editor-style, featured-image-header, featured-images, fixed-width, light, right-sidebar, rtl-language-support, sticky-post, threaded-comments, translation-ready, two-columns, white + * + *** IMPORTANT - DO NOT COPY THIS THEME ** + * + * If you want to make a custom theme based on this theme, DO NOT copy and edit it. By + * doing this you will make updates and maintainence much harder for yourself. + * Instead, please read this codex page on how to build a BuddyPress child theme: + * + * http://codex.buddypress.org/how-to-guides/building-a-buddypress-child-theme/ + * + *** + * + * This file intentionally left blank. CSS is enqueued in functions.php + * + */ diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.css b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.css new file mode 100644 index 0000000..a84c0e7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.css @@ -0,0 +1 @@ +div#icon-buddypress{background:url(../../../bp-core/images/icons32.png) no-repeat -4px 0;}#tabs-bottom{background:#DFDFDF url(../../../../../wp-admin/images/gray-grad.png) repeat-x scroll 0 0;height:32px;border:1px solid #ccc;-moz-border-radius:0 0 6px 6px;-khtml-border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;}#tabs{position:relative;}p.nofields{margin-top:20px;}ul#field-group-tabs{float:left;padding:0 0 0 15px;display:none;}ul#field-group-tabs li{float:left;margin-bottom:-1px;background-color:transparent;margin-right:8px;}ul#field-group-tabs li.ui-state-hover{background-color:#fafafa;}ul#field-group-tabs li.ui-state-hover a.ui-tab{border-color:#bbb #bbb #ccc #bbb;color:#888;}ul#field-group-tabs li.ui-state-acceptable a.ui-tab{border-color:#5a5 #5a5 #ccc #5a5;color:#8a8;background-image:url(../images/plus.gif);background-color:#efe;}ul#field-group-tabs li.ui-tabs-selected.ui-state-acceptable a.ui-tab{background-color:#ECECEC;background-image:url(../images/cross.gif);}ul#field-group-tabs li.drop-candidate a.ui-tab{background-color:#ffc;border-color:#aa5 #aa5 #ccc #aa5;color:#aa8;}ul#field-group-tabs li a.ui-tab{display:block;margin-top:3px;padding:5px 10px 5px 28px;border:1px solid #ccc;border-bottom:none;-moz-border-radius:6px 6px 0 0;-khtml-border-radius:6px 6px 0 0;-webkit-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;text-decoration:none;background:#F4F4F4 url(../images/move-x.gif) 7px 55% no-repeat;color:#888;}ul#field-group-tabs li.ui-tabs-selected a.ui-tab{background-color:#ECECEC;margin-top:-1px;padding:7px 10px 7px 28px;border:1px solid #ccc;border-bottom:1px solid transparent;color:#000;font-weight:bold;}.tab-toolbar{background:#ddd url(../../../../../wp-admin/images/gray-grad.png) repeat-x scroll 0 0;border-width:1px 1px 0;-moz-border-radius:6px 6px 0 0;-khtml-border-radius:6px 6px 0 0;-webkit-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;margin:-20px -21px 20px -21px;clear:left;padding:10px;border:1px solid #ccc;}.tab-toolbar a.button{padding:5px 10px;}.tab-toolbar a.deletion{color:#f00;border-bottom:1px solid #f00;font-size:11px;text-decoration:none;padding:0 2px;margin-top:-2px;}div.tab-wrapper{background-color:#f9f9f9;clear:left;padding:20px;border-left:1px solid #ccc;border-right:1px solid #ccc;-moz-border-radius:6px 6px 0 0;-khtml-border-radius:6px 6px 0 0;-webkit-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0;}.tab-wrapper fieldset{position:relative;cursor:default!important;background:inherit;}.tab-wrapper fieldset legend{padding-bottom:15px;font-weight:bold;}.tab-wrapper .xprofile-field{position:relative;}.tab-wrapper fieldset fieldset{position:relative;border:1px solid #ddd;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:5px;margin:10px 0 0 0;cursor:move!important;background:#fcfcfc url(../../../../../wp-admin/images/gray-grad.png) repeat-x scroll 0 0;}.tab-wrapper fieldset fieldset legend{position:absolute!important;top:0;left:0;width:80%;padding:30px;}.tab-wrapper fieldset fieldset legend span{position:absolute;top:6px;left:30px;font-weight:bold;width:100%;}.field-group fieldset:hover{background-color:#fafafa;border-color:#ccc;}fieldset div.field-wrapper{padding-left:30px;padding:40px 10px 10px 10px;background:url(../images/move.gif) 6px 6px no-repeat transparent;}fieldset.radio div div,fieldset.checkbox div{float:left;}fieldset.radio div div label,fieldset.checkbox div label{margin-right:20px;}fieldset.clear-value{margin-left:10px;}.field-group div.actions{position:absolute;right:10px;top:6px;}.field-group fieldset:hover div.actions{display:block;}.field-group fieldset.ui-sortable-placeholder{border:1px dashed #999;background-color:#eee;visibility:visible!important;}ul.forTab{list-style:none;padding:0;margin:0 0 0 1em;}ul.forTab li{margin:0 0 1em 0;}ul.forTab li label{display:block;}ul.forTab li input{font-size:1.4em;}p.success{background:green;}p.err{border-top:2px solid red;border-bottom:2px solid red;color:red;padding:5px 0;width:40%;}span.desc,span.signup-description{display:block;font-size:11px;color:#555;}select.multi-select{width:90%;height:10em!important;}ul.multi-checkbox{margin:0 5px 0 0;padding:.5em .9em;height:10em;overflow:auto;list-style:none;border:solid 1px #ccc;width:90%;}ul.multi-checkbox li{padding:0;margin:0;}div.options-box{margin-left:20px!important;margin-right:10px!important;border-left:4px solid #EAF3FA;padding-left:15px;}th a{background:#fff;padding:2px 5px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;top:-2px;}textarea#description{border:1px solid #ddd;width:85%;} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.dev.css b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.dev.css new file mode 100644 index 0000000..5845c7e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/admin/css/admin.dev.css @@ -0,0 +1,266 @@ +/* Profile field group main admin page */ +div#icon-buddypress { + background: url( ../../../bp-core/images/icons32.png ) no-repeat -4px 0px; +} + +#tabs-bottom { + background: #DFDFDF url(../../../../../wp-admin/images/gray-grad.png) repeat-x scroll 0% 0%; + height: 32px; + border: 1px solid #ccc; + -moz-border-radius: 0 0 6px 6px; + -khtml-border-radius: 0 0 6px 6px; + -webkit-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +#tabs { + position: relative; + } + p.nofields { + margin-top: 20px; + } + + /* Field group tabs */ + ul#field-group-tabs { + float: left; + padding: 0 0 0 15px; + display: none; + } + ul#field-group-tabs li { + float: left; + margin-bottom: -1px; + background-color: transparent; + margin-right: 8px; + } + ul#field-group-tabs li.ui-state-hover { + background-color: #fafafa; + } + ul#field-group-tabs li.ui-state-hover a.ui-tab { + border-color: #bbb #bbb #ccc #bbb; + color: #888; + } + ul#field-group-tabs li.ui-state-acceptable a.ui-tab { + border-color: #5a5 #5a5 #ccc #5a5; + color: #8a8; + background-image: url(../images/plus.gif); + background-color: #efe; + } + ul#field-group-tabs li.ui-tabs-selected.ui-state-acceptable a.ui-tab { + background-color: #ECECEC; + background-image: url(../images/cross.gif); + } + ul#field-group-tabs li.drop-candidate a.ui-tab { + background-color: #ffc; + border-color: #aa5 #aa5 #ccc #aa5; + color: #aa8; + } + ul#field-group-tabs li a.ui-tab { + display: block; + margin-top: 3px; + padding: 5px 10px 5px 28px; + border: 1px solid #ccc; + border-bottom: none; + -moz-border-radius: 6px 6px 0 0; + -khtml-border-radius: 6px 6px 0 0; + -webkit-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; + text-decoration: none; + background: #F4F4F4 url(../images/move-x.gif) 7px 55% no-repeat; + color: #888; + } + + /* Selected tab */ + ul#field-group-tabs li.ui-tabs-selected a.ui-tab { + background-color: #ECECEC; + margin-top: -1px; + padding: 7px 10px 7px 28px; + border: 1px solid #ccc; + border-bottom: 1px solid transparent; + color: #000; + font-weight: bold; + } + + /* Toolbar */ + .tab-toolbar { + background: #ddd url(../../../../../wp-admin/images/gray-grad.png) repeat-x scroll 0% 0%; + border-width: 1px 1px 0px; + -moz-border-radius: 6px 6px 0 0; + -khtml-border-radius: 6px 6px 0 0; + -webkit-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; + margin: -20px -21px 20px -21px; + clear: left; + padding: 10px; + border: 1px solid #ccc; + } + + .tab-toolbar a.button { + padding: 5px 10px; + } + + .tab-toolbar a.deletion { + color: #f00; + border-bottom: 1px solid #f00; + font-size: 11px; + text-decoration: none; + padding: 0 2px; + margin-top: -2px; + } + + div.tab-wrapper { + background-color: #f9f9f9; + clear: left; + padding: 20px; + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; + -moz-border-radius: 6px 6px 0 0; + -khtml-border-radius: 6px 6px 0 0; + -webkit-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; + } + + .tab-wrapper fieldset { + position: relative; + cursor: default !important; + background: inherit; + } + .tab-wrapper fieldset legend { + padding-bottom: 15px; + font-weight: bold; + } + .tab-wrapper .xprofile-field { + position: relative; + } + .tab-wrapper fieldset fieldset { + position: relative; + border: 1px solid #ddd; + -moz-border-radius: 6px; + -khtml-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 5px; + margin: 10px 0 0 0; + cursor: move !important; + background: #fcfcfc url(../../../../../wp-admin/images/gray-grad.png) repeat-x scroll 0% 0%; + } + .tab-wrapper fieldset fieldset legend { + position: absolute !important; + top: 0; + left: 0; + width: 80%; + padding: 30px; + } + .tab-wrapper fieldset fieldset legend span { + position: absolute; + top: 6px; + left: 30px; + font-weight: bold; + width: 100%; + } + .field-group fieldset:hover { + background-color: #fafafa; + border-color: #ccc; + } + fieldset div.field-wrapper { + padding-left: 30px; + padding: 40px 10px 10px 10px; + background: url(../images/move.gif) 6px 6px no-repeat transparent; + } + fieldset.radio div div, + fieldset.checkbox div { + float: left; + } + fieldset.radio div div label, + fieldset.checkbox div label { + margin-right: 20px; + } + + fieldset.clear-value { + margin-left: 10px; + } + .field-group div.actions { + position: absolute; + right: 10px; + top: 6px; + } + .field-group fieldset:hover div.actions { + display: block; + } + .field-group fieldset.ui-sortable-placeholder { + border: 1px dashed #999; + background-color: #eee; + visibility: visible !important; + } + + ul.forTab { + list-style: none; + padding: 0; + margin: 0 0 0 1em; + } + ul.forTab li { + margin: 0 0 1em 0; + } + + ul.forTab li label { + display: block; + } + + ul.forTab li input { + font-size: 1.4em; + } + + p.success { background: green;} + p.err { + border-top: 2px solid red; + border-bottom: 2px solid red; + color: red; + padding: 5px 0; + width: 40%; + } + + span.desc, span.signup-description { + display: block; + font-size: 11px; + color: #555; + } + + select.multi-select { + width:90%; + height:10em !important; + } + +ul.multi-checkbox { + margin: 0 5px 0 0px; + padding: .5em .9em; + height: 10em; + overflow: auto; + list-style: none; + border: solid 1px #ccc; + width: 90%; +} + +ul.multi-checkbox li { + padding: 0; + margin: 0; +} + +div.options-box { + margin-left: 20px !important; + margin-right: 10px !important; + border-left: 4px solid #EAF3FA; + padding-left: 15px; +} + +th a { + background: #fff; + padding: 2px 5px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + top: -2px; +} + +textarea#description { + border: 1px solid #ddd; + width: 85%; +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/images/cross.gif b/wp-content/plugins/buddypress/bp-xprofile/admin/images/cross.gif new file mode 100644 index 0000000..4ec7be8 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-xprofile/admin/images/cross.gif differ diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/images/move-x.gif b/wp-content/plugins/buddypress/bp-xprofile/admin/images/move-x.gif new file mode 100644 index 0000000..684d667 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-xprofile/admin/images/move-x.gif differ diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/images/move.gif b/wp-content/plugins/buddypress/bp-xprofile/admin/images/move.gif new file mode 100644 index 0000000..fd2dac1 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-xprofile/admin/images/move.gif differ diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/images/move.png b/wp-content/plugins/buddypress/bp-xprofile/admin/images/move.png new file mode 100644 index 0000000..4894c75 Binary files /dev/null and b/wp-content/plugins/buddypress/bp-xprofile/admin/images/move.png differ diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/images/plus.gif b/wp-content/plugins/buddypress/bp-xprofile/admin/images/plus.gif new file mode 100644 index 0000000..726c92c Binary files /dev/null and b/wp-content/plugins/buddypress/bp-xprofile/admin/images/plus.gif differ diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/js/admin.dev.js b/wp-content/plugins/buddypress/bp-xprofile/admin/js/admin.dev.js new file mode 100644 index 0000000..d4e64a9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/admin/js/admin.dev.js @@ -0,0 +1,218 @@ +function add_option(forWhat) { + var holder = document.getElementById(forWhat + "_more"); + var theId = document.getElementById(forWhat + '_option_number').value; + + var newDiv = document.createElement('p'); + newDiv.setAttribute('id', forWhat + '_div' + theId); + + var newOption = document.createElement('input'); + newOption.setAttribute('type', 'text'); + newOption.setAttribute('name', forWhat + '_option[' + theId + ']'); + newOption.setAttribute('id', forWhat + '_option' + theId); + + var label = document.createElement('label'); + label.setAttribute('for', forWhat + '_option' + theId); + + var txt = document.createTextNode("Option " + theId + ": "); + label.appendChild(txt); + + var isDefault = document.createElement('input'); + + if(forWhat == 'checkbox' || forWhat == 'multiselectbox') { + isDefault.setAttribute('type', 'checkbox'); + isDefault.setAttribute('name', 'isDefault_' + forWhat + '_option[' + theId + ']'); + } else { + isDefault.setAttribute('type', 'radio'); + isDefault.setAttribute('name', 'isDefault_' + forWhat + '_option'); + } + + isDefault.setAttribute('value', theId); + + var label1 = document.createElement('label'); + var txt1 = document.createTextNode(" Default Value "); + + label1.appendChild(txt1); + label1.setAttribute('for', 'isDefault_' + forWhat + '_option[]'); + toDelete = document.createElement('a'); + + toDeleteText = document.createTextNode('[x]'); + toDelete.setAttribute('href',"javascript:hide('" + forWhat + '_div' + theId + "')"); + + toDelete.setAttribute('class','delete'); + + toDelete.appendChild(toDeleteText); + + newDiv.appendChild(label); + newDiv.appendChild(newOption); + newDiv.appendChild(document.createTextNode(" ")); + newDiv.appendChild(isDefault); + newDiv.appendChild(label1); + newDiv.appendChild(toDelete); + holder.appendChild(newDiv); + + + theId++ + document.getElementById(forWhat + "_option_number").value = theId; +} + +function show_options(forWhat) { + document.getElementById("radio").style.display = "none"; + document.getElementById("selectbox").style.display = "none"; + document.getElementById("multiselectbox").style.display = "none"; + document.getElementById("checkbox").style.display = "none"; + + if(forWhat == "radio") + document.getElementById("radio").style.display = ""; + + if(forWhat == "selectbox") + document.getElementById("selectbox").style.display = ""; + + if(forWhat == "multiselectbox") + document.getElementById("multiselectbox").style.display = ""; + + if(forWhat == "checkbox") + document.getElementById("checkbox").style.display = ""; +} + +function hide(id) { + if ( !document.getElementById(id) ) return false; + + document.getElementById(id).style.display = "none"; + document.getElementById(id).value = ''; +} + +// Set up deleting options ajax +jQuery(document).ready( function() { + + jQuery("a.ajax-option-delete").click( + function() { + var theId = this.id.split('-'); + theId = theId[1]; + + jQuery.post( ajaxurl, { + action: 'xprofile_delete_option', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': jQuery("input#_wpnonce").val(), + + 'option_id': theId + }, + function(response) + {}); + } + ); +}); + +var fixHelper = function(e, ui) { + ui.children().each(function() { + jQuery(this).width( jQuery(this).width() ); + }); + return ui; +}; + +// Main XProfile behavior layer +jQuery(document).ready( function() { + /* Show object if JS is enabled */ + jQuery( "ul#field-group-tabs" ).show(); + + /* Allow reordering of field group tabs */ + jQuery( "ul#field-group-tabs" ).sortable( { + cursor: 'move', + axis: 'x', + opacity: 0.6, + items: 'li', + tolerance: 'pointer', + + update: function() { + jQuery.post( ajaxurl, { + action: 'xprofile_reorder_groups', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce_reorder_groups': jQuery( "input#_wpnonce_reorder_groups" ).val(), + 'group_order': jQuery(this).sortable( 'serialize' ) + }, + function(response){}); + } + }).disableSelection(); + + /* Allow reordering of fields within groups */ + jQuery( "fieldset.field-group" ).sortable({ + cursor: 'move', + opacity: 0.3, + items: 'fieldset', + tolerance: 'pointer', + + update: function() { + jQuery.post( ajaxurl, { + action: 'xprofile_reorder_fields', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce_reorder_fields': jQuery( "input#_wpnonce_reorder_fields" ).val(), + 'field_order': jQuery(this).sortable( 'serialize' ), + 'field_group_id': jQuery(this).attr( 'id' ) + }, + function(response) + {}); + } + }) + + /* Disallow text selection */ + .disableSelection() + + /* Change cursor to move if JS is enabled */ + .css( 'cursor', 'move' ); + + /* tabs init with a custom tab template and an "add" callback filling in the content */ + var $tab_items; + var $tabs = jQuery( "#tabs" ).tabs(); + set_tab_items( $tabs ); + + function set_tab_items( $tabs ) { + $tab_items = jQuery( "ul:first li", $tabs ).droppable({ + accept: ".connectedSortable fieldset", + hoverClass: "ui-state-hover", + activeClass: "ui-state-acceptable", + touch: "pointer", + tolerance: "pointer", + + /* When field is dropped on tab */ + drop: function( ev, ui ) { + /* The tab */ + var $item = jQuery(this); + + /* The tab body */ + var $list = jQuery( $item.find( 'a' ).attr( 'href' ) ).find( '.connectedSortable' ); + + /* Remove helper class */ + jQuery($item).removeClass( 'drop-candidate' ); + + /* Hide field, change selected tab, and show new placement */ + ui.draggable.hide( 'slow', function() { + + /* Select new tab as current */ + $tabs.tabs( 'select', $tab_items.index( $item ) ); + + /* Show new placement */ + jQuery(this).appendTo($list).show( 'slow' ).animate( {opacity: "1"}, 500 ); + + /* Refresh $list variable */ + $list = jQuery( $item.find( 'a' ).attr( 'href' ) ).find( '.connectedSortable' ); + jQuery($list).find( 'p.nofields' ).hide( 'slow' ); + + /* Ajax update field locations and orders */ + jQuery.post( ajaxurl, { + action: 'xprofile_reorder_fields', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce_reorder_fields': jQuery( "input#_wpnonce_reorder_fields" ).val(), + 'field_order': jQuery( $list ).sortable( 'serialize' ), + 'field_group_id': jQuery( $list ).attr( 'id' ) + }, + function(response){}); + }); + }, + over: function( event, ui ) { + jQuery(this).addClass( 'drop-candidate' ); + }, + out: function( event, ui ) { + jQuery(this).removeClass( 'drop-candidate' ); + } + }); + } +}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/admin/js/admin.js b/wp-content/plugins/buddypress/bp-xprofile/admin/js/admin.js new file mode 100644 index 0000000..3efa1d0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/admin/js/admin.js @@ -0,0 +1 @@ +function add_option(f){var h=document.getElementById(f+"_more");var j=document.getElementById(f+"_option_number").value;var a=document.createElement("p");a.setAttribute("id",f+"_div"+j);var g=document.createElement("input");g.setAttribute("type","text");g.setAttribute("name",f+"_option["+j+"]");g.setAttribute("id",f+"_option"+j);var i=document.createElement("label");i.setAttribute("for",f+"_option"+j);var e=document.createTextNode("Option "+j+": ");i.appendChild(e);var b=document.createElement("input");if(f=="checkbox"||f=="multiselectbox"){b.setAttribute("type","checkbox");b.setAttribute("name","isDefault_"+f+"_option["+j+"]")}else{b.setAttribute("type","radio");b.setAttribute("name","isDefault_"+f+"_option")}b.setAttribute("value",j);var d=document.createElement("label");var c=document.createTextNode(" Default Value ");d.appendChild(c);d.setAttribute("for","isDefault_"+f+"_option[]");toDelete=document.createElement("a");toDeleteText=document.createTextNode("[x]");toDelete.setAttribute("href","javascript:hide('"+f+"_div"+j+"')");toDelete.setAttribute("class","delete");toDelete.appendChild(toDeleteText);a.appendChild(i);a.appendChild(g);a.appendChild(document.createTextNode(" "));a.appendChild(b);a.appendChild(d);a.appendChild(toDelete);h.appendChild(a);j++;document.getElementById(f+"_option_number").value=j}function show_options(a){document.getElementById("radio").style.display="none";document.getElementById("selectbox").style.display="none";document.getElementById("multiselectbox").style.display="none";document.getElementById("checkbox").style.display="none";if(a=="radio"){document.getElementById("radio").style.display=""}if(a=="selectbox"){document.getElementById("selectbox").style.display=""}if(a=="multiselectbox"){document.getElementById("multiselectbox").style.display=""}if(a=="checkbox"){document.getElementById("checkbox").style.display=""}}function hide(a){if(!document.getElementById(a)){return false}document.getElementById(a).style.display="none";document.getElementById(a).value=""}jQuery(document).ready(function(){jQuery("a.ajax-option-delete").click(function(){var a=this.id.split("-");a=a[1];jQuery.post(ajaxurl,{action:"xprofile_delete_option",cookie:encodeURIComponent(document.cookie),_wpnonce:jQuery("input#_wpnonce").val(),option_id:a},function(b){})})});var fixHelper=function(b,a){a.children().each(function(){jQuery(this).width(jQuery(this).width())});return a};jQuery(document).ready(function(){jQuery("ul#field-group-tabs").show();jQuery("ul#field-group-tabs").sortable({cursor:"move",axis:"x",opacity:0.6,items:"li",tolerance:"pointer",update:function(){jQuery.post(ajaxurl,{action:"xprofile_reorder_groups",cookie:encodeURIComponent(document.cookie),_wpnonce_reorder_groups:jQuery("input#_wpnonce_reorder_groups").val(),group_order:jQuery(this).sortable("serialize")},function(d){})}}).disableSelection();jQuery("fieldset.field-group").sortable({cursor:"move",opacity:0.3,items:"fieldset",tolerance:"pointer",update:function(){jQuery.post(ajaxurl,{action:"xprofile_reorder_fields",cookie:encodeURIComponent(document.cookie),_wpnonce_reorder_fields:jQuery("input#_wpnonce_reorder_fields").val(),field_order:jQuery(this).sortable("serialize"),field_group_id:jQuery(this).attr("id")},function(d){})}}).disableSelection().css("cursor","move");var b;var a=jQuery("#tabs").tabs();c(a);function c(d){b=jQuery("ul:first li",d).droppable({accept:".connectedSortable fieldset",hoverClass:"ui-state-hover",activeClass:"ui-state-acceptable",touch:"pointer",tolerance:"pointer",drop:function(g,h){var e=jQuery(this);var f=jQuery(e.find("a").attr("href")).find(".connectedSortable");jQuery(e).removeClass("drop-candidate");h.draggable.hide("slow",function(){d.tabs("select",b.index(e));jQuery(this).appendTo(f).show("slow").animate({opacity:"1"},500);f=jQuery(e.find("a").attr("href")).find(".connectedSortable");jQuery(f).find("p.nofields").hide("slow");jQuery.post(ajaxurl,{action:"xprofile_reorder_fields",cookie:encodeURIComponent(document.cookie),_wpnonce_reorder_fields:jQuery("input#_wpnonce_reorder_fields").val(),field_order:jQuery(f).sortable("serialize"),field_group_id:jQuery(f).attr("id")},function(i){})})},over:function(e,f){jQuery(this).addClass("drop-candidate")},out:function(e,f){jQuery(this).removeClass("drop-candidate")}})}}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-actions.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-actions.php new file mode 100644 index 0000000..7eecdc1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-actions.php @@ -0,0 +1,44 @@ + $bp->displayed_user->id ) ) ) + bp_core_add_message( __( 'Your avatar was deleted successfully!', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was a problem deleting that avatar, please try again.', 'buddypress' ), 'error' ); + + bp_core_redirect( wp_get_referer() ); +} +add_action( 'bp_actions', 'xprofile_action_delete_avatar' ); + +?> diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-activity.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-activity.php new file mode 100644 index 0000000..9a3c5e6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-activity.php @@ -0,0 +1,134 @@ +profile->id, 'new_member', __( 'New member registered', 'buddypress' ) ); + bp_activity_set_action( $bp->profile->id, 'updated_profile', __( 'Updated Profile', 'buddypress' ) ); + + do_action( 'xprofile_register_activity_actions' ); +} +add_action( 'bp_register_activity_actions', 'xprofile_register_activity_actions' ); + +/** + * Records activity for the logged in user within the profile component so that + * it will show in the users activity stream (if installed) + * + * @package BuddyPress XProfile + * @param $args Array containing all variables used after extract() call + * @global $bp The global BuddyPress settings variable created in bp_core_current_times() + * @uses bp_activity_record() Adds an entry to the activity component tables for a specific activity + */ +function xprofile_record_activity( $args = '' ) { + global $bp; + + if ( !bp_is_active( 'activity' ) ) + return false; + + $defaults = array ( + 'user_id' => $bp->loggedin_user->id, + 'action' => '', + 'content' => '', + 'primary_link' => '', + 'component' => $bp->profile->id, + 'type' => false, + 'item_id' => false, + 'secondary_item_id' => false, + 'recorded_time' => bp_core_current_time(), + 'hide_sitewide' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return bp_activity_add( array( + 'user_id' => $user_id, + 'action' => $action, + 'content' => $content, + 'primary_link' => $primary_link, + 'component' => $component, + 'type' => $type, + 'item_id' => $item_id, + 'secondary_item_id' => $secondary_item_id, + 'recorded_time' => $recorded_time, + 'hide_sitewide' => $hide_sitewide + ) ); +} + +/** + * Deletes activity for a user within the profile component so that + * it will be removed from the users activity stream and sitewide stream (if installed) + * + * @package BuddyPress XProfile + * @param $args Array containing all variables used after extract() call + * @global object $bp Global BuddyPress settings object + * @uses bp_activity_delete() Deletes an entry to the activity component tables for a specific activity + */ +function xprofile_delete_activity( $args = '' ) { + global $bp; + + if ( bp_is_active( 'activity' ) ) { + + extract( $args ); + + bp_activity_delete_by_item_id( array( + 'item_id' => $item_id, + 'component' => $bp->profile->id, + 'type' => $type, + 'user_id' => $user_id, + 'secondary_item_id' => $secondary_item_id + ) ); + } +} + +function xprofile_register_activity_action( $key, $value ) { + global $bp; + + if ( !bp_is_active( 'activity' ) ) + return false; + + return apply_filters( 'xprofile_register_activity_action', bp_activity_set_action( $bp->profile->id, $key, $value ), $key, $value ); +} + +/** + * Adds an activity stream item when a user has uploaded a new avatar. + * + * @package BuddyPress XProfile + * @global object $bp Global BuddyPress settings object + * @uses bp_activity_add() Adds an entry to the activity component tables for a specific activity + */ +function bp_xprofile_new_avatar_activity() { + global $bp; + + if ( !bp_is_active( 'activity' ) ) + return false; + + $user_id = apply_filters( 'bp_xprofile_new_avatar_user_id', $bp->displayed_user->id ); + + $userlink = bp_core_get_userlink( $user_id ); + + bp_activity_add( array( + 'user_id' => $user_id, + 'action' => apply_filters( 'bp_xprofile_new_avatar_action', sprintf( __( '%s changed their profile picture', 'buddypress' ), $userlink ), $user_id ), + 'component' => 'profile', + 'type' => 'new_avatar' + ) ); +} +add_action( 'xprofile_avatar_uploaded', 'bp_xprofile_new_avatar_activity' ); +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-admin.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-admin.php new file mode 100644 index 0000000..6836ca9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-admin.php @@ -0,0 +1,477 @@ + true + )); + + if ( isset( $_GET['mode'] ) && isset( $_GET['group_id'] ) && 'add_field' == $_GET['mode'] ) + xprofile_admin_manage_field( $_GET['group_id'] ); + + else if ( isset( $_GET['mode'] ) && isset( $_GET['group_id'] ) && isset( $_GET['field_id'] ) && 'edit_field' == $_GET['mode'] ) + xprofile_admin_manage_field( $_GET['group_id'], $_GET['field_id'] ); + + else if ( isset( $_GET['mode'] ) && isset( $_GET['field_id'] ) && 'delete_field' == $_GET['mode'] ) + xprofile_admin_delete_field( $_GET['field_id'], 'field'); + + else if ( isset( $_GET['mode'] ) && isset( $_GET['option_id'] ) && 'delete_option' == $_GET['mode'] ) + xprofile_admin_delete_field( $_GET['option_id'], 'option' ); + + else if ( isset( $_GET['mode'] ) && 'add_group' == $_GET['mode'] ) + xprofile_admin_manage_group(); + + else if ( isset( $_GET['mode'] ) && isset( $_GET['group_id'] ) && 'delete_group' == $_GET['mode'] ) + xprofile_admin_delete_group( $_GET['group_id'] ); + + else if ( isset( $_GET['mode'] ) && isset( $_GET['group_id'] ) && 'edit_group' == $_GET['mode'] ) + xprofile_admin_manage_group( $_GET['group_id'] ); + + else { +?> + +
      + + + +

      + + + + +

      + +

      +

      + +
      + + + + + +
      +

      +
      + + + +
      + + + + + + +
      +
      +
      + + + +can_delete ) : ?> + + + + + +
      +
      + +
      + +description ) : ?> + + description ) ?> + +fields ) ) : + foreach ( $group->fields as $field ) { + + // Load the field + $field = new BP_XProfile_Field( $field->id ); + + $class = ''; + if ( !$field->can_delete ) + $class = ' core nodrag'; + + /* This function handles the WYSIWYG profile field + * display for the xprofile admin setup screen + */ + xprofile_admin_field( $field, $group, $class ); + + } // end for + + else : // !$group->fields +?> + +

      + +fields +?> + +
      +
      + + + +
      + + +

      +

      + + +
      +   +
      +
      +
      +name = wp_filter_kses( $_POST['group_name'] ); + $group->description = !empty( $_POST['group_description'] ) ? wp_filter_kses( $_POST['group_description'] ) : ''; + + if ( !$group->save() ) { + $message = __( 'There was an error saving the group. Please try again', 'buddypress' ); + $type = 'error'; + } else { + $message = __( 'The group was saved successfully.', 'buddypress' ); + $type = 'success'; + + if ( 1 == $group_id ) + bp_update_option( 'bp-xprofile-base-group-name', $group->name ); + + do_action( 'xprofile_groups_saved_group', $group ); + } + + unset( $_GET['mode'] ); + xprofile_admin( $message, $type ); + + } else { + $group->render_admin_form( $message ); + } + } else { + $group->render_admin_form(); + } +} + +/************************************************************************** + xprofile_admin_delete_group() + + Handles the deletion of profile data groups. + **************************************************************************/ + +function xprofile_admin_delete_group( $group_id ) { + global $message, $type; + + $group = new BP_XProfile_Group( $group_id ); + + if ( !$group->delete() ) { + $message = __( 'There was an error deleting the group. Please try again', 'buddypress' ); + $type = 'error'; + } else { + $message = __( 'The group was deleted successfully.', 'buddypress' ); + $type = 'success'; + + do_action( 'xprofile_groups_deleted_group', $group ); + } + + unset( $_GET['mode'] ); + xprofile_admin( $message, $type ); +} + + +/************************************************************************** + xprofile_admin_manage_field() + + Handles the adding or editing of profile field data for a user. + **************************************************************************/ + +function xprofile_admin_manage_field( $group_id, $field_id = null ) { + global $bp, $wpdb, $message, $groups; + + $field = new BP_XProfile_Field( $field_id ); + $field->group_id = $group_id; + + if ( isset( $_POST['saveField'] ) ) { + if ( BP_XProfile_Field::admin_validate() ) { + $field->name = wp_filter_kses( $_POST['title'] ); + $field->description = !empty( $_POST['description'] ) ? wp_filter_kses( $_POST['description'] ) : ''; + $field->is_required = wp_filter_kses( $_POST['required'] ); + $field->type = wp_filter_kses( $_POST['fieldtype'] ); + + if ( !empty( $_POST["sort_order_{$field->type}"] ) ) + $field->order_by = wp_filter_kses( $_POST["sort_order_{$field->type}"] ); + + $field->field_order = $wpdb->get_var( $wpdb->prepare( "SELECT field_order FROM {$bp->profile->table_name_fields} WHERE id = %d", $field_id ) ); + + if ( !$field->field_order ) { + $field->field_order = (int) $wpdb->get_var( $wpdb->prepare( "SELECT max(field_order) FROM {$bp->profile->table_name_fields} WHERE group_id = %d", $group_id ) ); + $field->field_order++; + } + + if ( !$field->save() ) { + $message = __( 'There was an error saving the field. Please try again', 'buddypress' ); + $type = 'error'; + + unset( $_GET['mode'] ); + xprofile_admin( $message, $type ); + } else { + $message = __( 'The field was saved successfully.', 'buddypress' ); + $type = 'success'; + + if ( 1 == $field_id ) + bp_update_option( 'bp-xprofile-fullname-field-name', $field->name ); + + unset( $_GET['mode'] ); + + do_action( 'xprofile_fields_saved_field', $field ); + + $groups = BP_XProfile_Group::get(); + xprofile_admin( $message, $type ); + } + } else { + $field->render_admin_form( $message ); + } + } else { + $field->render_admin_form(); + } +} + +/************************************************************************** + xprofile_admin_delete_field() + + Handles the deletion of a profile field [or option]. +**************************************************************************/ +function xprofile_admin_delete_field( $field_id, $type = 'field' ) { + global $message, $type; + + if ( 'field' == $type ) + $type = __('field', 'buddypress'); + else + $type = __('option', 'buddypress'); + + $field = new BP_XProfile_Field( $field_id ); + + if ( !$field->delete() ) { + $message = sprintf( __('There was an error deleting the %s. Please try again', 'buddypress' ), $type ); + $type = 'error'; + } else { + $message = sprintf( __('The %s was deleted successfully!', 'buddypress' ), $type ); + $type = 'success'; + + do_action( 'xprofile_fields_deleted_field', $field ); + } + + unset( $_GET['mode'] ); + xprofile_admin( $message, $type ); +} + +/************************************************************************** + xprofile_ajax_reorder_fields() + + Handles the ajax reordering of fields within a group +**************************************************************************/ +function xprofile_ajax_reorder_fields() { + global $bp; + + // Check the nonce + check_admin_referer( 'bp_reorder_fields', '_wpnonce_reorder_fields' ); + + if ( empty( $_POST['field_order'] ) ) + return false; + + parse_str( $_POST['field_order'], $order ); + $field_group_id = $_POST['field_group_id']; + + foreach ( (array) $order['field'] as $position => $field_id ) + xprofile_update_field_position( (int) $field_id, (int) $position, (int) $field_group_id ); + +} +add_action( 'wp_ajax_xprofile_reorder_fields', 'xprofile_ajax_reorder_fields' ); + +/************************************************************************** + xprofile_ajax_reorder_field_groups() + + Handles the reordering of field groups +**************************************************************************/ +function xprofile_ajax_reorder_field_groups() { + global $bp; + + // Check the nonce + check_admin_referer( 'bp_reorder_groups', '_wpnonce_reorder_groups' ); + + if ( empty( $_POST['group_order'] ) ) + return false; + + parse_str( $_POST['group_order'], $order ); + + foreach ( (array) $order['group'] as $position => $field_group_id ) + xprofile_update_field_group_position( (int) $field_group_id, (int) $position ); + +} +add_action( 'wp_ajax_xprofile_reorder_groups', 'xprofile_ajax_reorder_field_groups' ); + +/************************************************************************** + xprofile_admin_field() + + Handles the WYSIWYG display of each profile field on the edit screen +**************************************************************************/ +function xprofile_admin_field( $admin_field, $admin_group, $class='' ) { + global $field; + + $field = $admin_field; ?> +
      + can_delete ) : ?> +
      + +type ) { + case 'textbox' : ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + can_delete ) : ?>  + +
      + +description ) : ?> + +

      description ); ?>

      + + + +
      +
      + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-cache.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-cache.php new file mode 100644 index 0000000..a4afa6f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-cache.php @@ -0,0 +1,30 @@ +id ); +} + +function xprofile_clear_profile_data_object_cache( $group_id ) { + global $bp; + wp_cache_delete( 'bp_user_fullname_' . $bp->loggedin_user->id, 'bp' ); +} + +// List actions to clear object caches on +add_action( 'xprofile_groups_deleted_group', 'xprofile_clear_profile_groups_object_cache' ); +add_action( 'xprofile_groups_saved_group', 'xprofile_clear_profile_groups_object_cache' ); +add_action( 'xprofile_updated_profile', 'xprofile_clear_profile_data_object_cache' ); + +// List actions to clear super cached pages on, if super cache is installed +add_action( 'xprofile_updated_profile', 'bp_core_clear_cache' ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-classes.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-classes.php new file mode 100644 index 0000000..cf75798 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-classes.php @@ -0,0 +1,1052 @@ +__construct( $id ); + } + + function __construct( $id = null ) { + global $bp, $wpdb; + + if ( $id ) + $this->populate( $id ); + + } + + function populate( $id ) { + global $wpdb, $bp; + + $sql = $wpdb->prepare( "SELECT * FROM {$bp->profile->table_name_groups} WHERE id = %d", $id ); + + if ( !$group = $wpdb->get_row( $sql ) ) + return false; + + $this->id = $group->id; + $this->name = stripslashes( $group->name ); + $this->description = stripslashes( $group->description ); + $this->can_delete = $group->can_delete; + $this->group_order = $group->group_order; + } + + function save() { + global $wpdb, $bp; + + $this->name = apply_filters( 'xprofile_group_name_before_save', $this->name, $this->id ); + $this->description = apply_filters( 'xprofile_group_description_before_save', $this->description, $this->id ); + + do_action_ref_array( 'xprofile_group_before_save', array( &$this ) ); + + if ( $this->id ) + $sql = $wpdb->prepare( "UPDATE {$bp->profile->table_name_groups} SET name = %s, description = %s WHERE id = %d", $this->name, $this->description, $this->id ); + else + $sql = $wpdb->prepare( "INSERT INTO {$bp->profile->table_name_groups} (name, description, can_delete) VALUES (%s, %s, 1)", $this->name, $this->description ); + + if ( is_wp_error( $wpdb->query( $sql ) ) ) + return false; + + do_action_ref_array( 'xprofile_group_after_save', array( &$this ) ); + + if ( $this->id ) + return $this->id; + else + return $wpdb->insert_id; + } + + function delete() { + global $wpdb, $bp; + + if ( !$this->can_delete ) + return false; + + /* Delete field group */ + if ( !$wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->profile->table_name_groups} WHERE id = %d", $this->id ) ) ) { + return false; + } else { + /* Remove the group's fields. */ + if ( BP_XProfile_Field::delete_for_group( $this->id ) ) { + /* Remove profile data for the groups fields */ + for ( $i = 0, $count = count( $this->fields ); $i < $count; ++$i ) { + BP_XProfile_ProfileData::delete_for_field( $this->fields[$i]->id ); + } + } + + return true; + } + } + + /** Static Functions **/ + + /** + * get() + * + * Populates the BP_XProfile_Group object with profile field groups, fields, and field data + * + * @package BuddyPress XProfile + * + * @global $wpdb WordPress DB access object. + * @global object $bp Global BuddyPress settings object + * + * @param array $args Takes an array of parameters: + * 'profile_group_id' - Limit results to a single profile group + * 'user_id' - Required if you want to load a specific user's data + * 'hide_empty_groups' - Hide groups without any fields + * 'hide_empty_fields' - Hide fields where the user has not provided data + * 'fetch_fields' - Load each group's fields + * 'fetch_field_data' - Load each field's data. Requires a user_id + * 'exclude_groups' - Comma-separated list of groups to exclude + * 'exclude_fields' - Comma-separated list of fields to exclude + * + * @return array $groups + */ + function get( $args = '' ) { + global $wpdb, $bp; + + $defaults = array( + 'profile_group_id' => false, + 'user_id' => $bp->displayed_user->id, + 'hide_empty_groups' => false, + 'hide_empty_fields' => false, + 'fetch_fields' => false, + 'fetch_field_data' => false, + 'exclude_groups' => false, + 'exclude_fields' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + $where_sql = ''; + + if ( $profile_group_id ) + $where_sql = $wpdb->prepare( 'WHERE g.id = %d', $profile_group_id ); + elseif ( $exclude_groups ) + $where_sql = $wpdb->prepare( "WHERE g.id NOT IN ({$exclude_groups})"); + + if ( $hide_empty_groups ) + $groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT g.* FROM {$bp->profile->table_name_groups} g INNER JOIN {$bp->profile->table_name_fields} f ON g.id = f.group_id {$where_sql} ORDER BY g.group_order ASC" ) ); + else + $groups = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT g.* FROM {$bp->profile->table_name_groups} g {$where_sql} ORDER BY g.group_order ASC" ) ); + + if ( !$fetch_fields ) + return $groups; + + // Get the group ids + $group_ids = array(); + foreach( (array)$groups as $group ) { + $group_ids[] = $group->id; + } + + $group_ids = implode( ',', (array) $group_ids ); + + if ( empty( $group_ids ) ) + return $groups; + + $exclude_fields_sql = ''; + if ( $exclude_fields ) + $exclude_fields_sql = $wpdb->prepare( "AND id NOT IN ({$exclude_fields})" ); + + // Fetch the fields + $fields = $wpdb->get_results( $wpdb->prepare( "SELECT id, name, description, type, group_id, is_required FROM {$bp->profile->table_name_fields} WHERE group_id IN ( {$group_ids} ) AND parent_id = 0 {$exclude_fields_sql} ORDER BY field_order" ) ); + + if ( empty( $fields ) ) + return $groups; + + if ( $fetch_field_data ) { + // Fetch the field data for the user. + foreach( (array)$fields as $field ) + $field_ids[] = $field->id; + + $field_ids_sql = implode( ',', (array) $field_ids ); + + if ( !empty( $field_ids ) ) + $field_data = $wpdb->get_results( $wpdb->prepare( "SELECT field_id, value FROM {$bp->profile->table_name_data} WHERE field_id IN ( {$field_ids_sql} ) AND user_id = %d", $user_id ) ); + + // Remove data-less fields, if necessary + if ( $hide_empty_fields ) { + + // Loop through the results and find the fields that have data. + foreach( (array)$field_data as $data ) { + // Empty fields may contain a serialized empty array + $maybe_value = maybe_unserialize( $data->value ); + if ( !empty( $maybe_value ) && false !== $key = array_search( $data->field_id, $field_ids ) ) { + // Fields that have data get removed from the list + unset( $field_ids[$key] ); + } + } + + // The remaining members of $field_ids are empty. Remove them. + foreach( $fields as $field_key => $field ) { + if ( in_array( $field->id, $field_ids ) ) { + unset( $fields[$field_key] ); + } + } + + // Reset indexes + $fields = array_values( $fields ); + + } + + // Field data was found + if ( !empty( $field_data ) && !is_wp_error( $field_data ) ) { + + // Loop through fields + foreach( (array)$fields as $field_key => $field ) { + + // Loop throught the data in each field + foreach( (array)$field_data as $data ) { + + // Assign correct data value to the field + if ( $field->id == $data->field_id ) + $fields[$field_key]->data->value = $data->value; + } + } + } + } + + // Merge the field array back in with the group array + foreach( (array) $groups as $group ) { + + // Indexes may have been shifted after previous deletions, so we get a + // fresh one each time through the loop + $index = array_search( $group, $groups ); + + foreach( (array) $fields as $field ) { + if ( $group->id == $field->group_id ) + $groups[$index]->fields[] = $field; + } + + // When we unset fields above, we may have created empty groups. + // Remove them, if necessary. + if ( empty( $group->fields ) && $hide_empty_groups ) { + unset( $groups[$index] ); + } + + // Reset indexes + $groups = array_values( $groups ); + } + + return $groups; + } + + function admin_validate() { + global $message; + + /* Validate Form */ + if ( empty( $_POST['group_name'] ) ) { + $message = __( 'Please make sure you give the group a name.', 'buddypress' ); + return false; + } else { + return true; + } + } + + function update_position( $field_group_id, $position ) { + global $wpdb, $bp; + + if ( !is_numeric( $position ) ) + return false; + + return $wpdb->query( $wpdb->prepare( "UPDATE {$bp->profile->table_name_groups} SET group_order = %d WHERE id = %d", $position, $field_group_id ) ); + } + + /* ADMIN AREA HTML. + * TODO: Get this out of here and replace with standard loops + */ + + function render_admin_form() { + global $message; + + if ( !$this->id ) { + $title = __( 'Add New Field Group', 'buddypress' ); + $action = "admin.php?page=bp-profile-setup&mode=add_group"; + $button = __( 'Create Field Group', 'buddypress' ); + } else { + $title = __( 'Edit Field Group', 'buddypress' ); + $action = "admin.php?page=bp-profile-setup&mode=edit_group&group_id=" . $this->id; + $button = __( 'Save Changes', 'buddypress' ); + } +?> +
      + + + +

      +

      + + +
      +

      +
      + +
      +
      +
      +

      +
      + +
      +
      + +can_delete ) : ?> +
      +

      +
      + +
      +
      + + +

      + + + +

      +
      +
      +
      +__construct( $id, $user_id, $get_data ); + } + + function __construct( $id = null, $user_id = null, $get_data = true ) { + if ( $id ) + $this->populate( $id, $user_id, $get_data ); + } + + function populate( $id, $user_id, $get_data ) { + global $wpdb, $userdata, $bp; + + $user_id = 0; + if ( is_null( $user_id ) ) + $user_id = $userdata->ID; + + $sql = $wpdb->prepare( "SELECT * FROM {$bp->profile->table_name_fields} WHERE id = %d", $id ); + + if ( $field = $wpdb->get_row( $sql ) ) { + $this->id = $field->id; + $this->group_id = $field->group_id; + $this->parent_id = $field->parent_id; + $this->type = $field->type; + $this->name = stripslashes( $field->name ); + $this->description = stripslashes( $field->description ); + $this->is_required = $field->is_required; + $this->can_delete = $field->can_delete; + $this->field_order = $field->field_order; + $this->option_order = $field->option_order; + $this->order_by = $field->order_by; + $this->is_default_option = $field->is_default_option; + + if ( $get_data && $user_id ) + $this->data = $this->get_field_data( $user_id ); + } + } + + function delete() { + global $wpdb, $bp; + + if ( !$this->id || + /* Prevent deletion by url when can_delete is false. */ + !$this->can_delete || + /* Prevent deletion of option 1 since this invalidates fields with options. */ + ( $this->parent_id && $this->option_order == 1 ) ) + return false; + + if ( !$wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->profile->table_name_fields} WHERE id = %d OR parent_id = %d", $this->id, $this->id ) ) ) + return false; + + /* delete the data in the DB for this field */ + BP_XProfile_ProfileData::delete_for_field( $this->id ); + + return true; + } + + function save() { + global $wpdb, $bp; + + $error = false; + + $this->group_id = apply_filters( 'xprofile_field_group_id_before_save', $this->group_id, $this->id ); + $this->parent_id = apply_filters( 'xprofile_field_parent_id_before_save', $this->parent_id, $this->id ); + $this->type = apply_filters( 'xprofile_field_type_before_save', $this->type, $this->id ); + $this->name = apply_filters( 'xprofile_field_name_before_save', $this->name, $this->id ); + $this->description = apply_filters( 'xprofile_field_description_before_save', $this->description, $this->id ); + $this->is_required = apply_filters( 'xprofile_field_is_required_before_save', $this->is_required, $this->id ); + $this->order_by = apply_filters( 'xprofile_field_order_by_before_save', $this->order_by, $this->id ); + $this->field_order = apply_filters( 'xprofile_field_field_order_before_save', $this->field_order, $this->id ); + + do_action_ref_array( 'xprofile_field_before_save', array( &$this ) ); + + if ( $this->id != null ) + $sql = $wpdb->prepare( "UPDATE {$bp->profile->table_name_fields} SET group_id = %d, parent_id = 0, type = %s, name = %s, description = %s, is_required = %d, order_by = %s, field_order = %d WHERE id = %d", $this->group_id, $this->type, $this->name, $this->description, $this->is_required, $this->order_by, $this->field_order, $this->id ); + else + $sql = $wpdb->prepare( "INSERT INTO {$bp->profile->table_name_fields} (group_id, parent_id, type, name, description, is_required, order_by, field_order ) VALUES (%d, %d, %s, %s, %s, %d, %s, %d )", $this->group_id, $this->parent_id, $this->type, $this->name, $this->description, $this->is_required, $this->order_by, $this->field_order ); + + /* + * Check for null so field options can be changed without changing any other part of the field. + * The described situation will return 0 here. + */ + if ( $wpdb->query( $sql ) !== null ) { + if ( $this->id ) + $field_id = $this->id; + else + $field_id = $wpdb->insert_id; + + /* Only do this if we are editing an existing field */ + if ( $this->id != null ) { + /* + * Remove any radio or dropdown options for this + * field. They will be re-added if needed. + * This stops orphan options if the user changes a + * field from a radio button field to a text box. + */ + $this->delete_children(); + } + + /* + * Check to see if this is a field with child options. + * We need to add the options to the db, if it is. + */ + if ( 'radio' == $this->type || 'selectbox' == $this->type || 'checkbox' == $this->type || 'multiselectbox' == $this->type ) { + if ( $this->id ) + $parent_id = $this->id; + else + $parent_id = $wpdb->insert_id; + + if ( 'radio' == $this->type ) { + $post_option = !empty( $_POST['radio_option'] ) ? $_POST['radio_option'] : ''; + $post_default = !empty( $_POST['isDefault_radio_option'] ) ? $_POST['isDefault_radio_option'] : ''; + + $options = apply_filters( 'xprofile_field_options_before_save', $post_option, 'radio' ); + $defaults = apply_filters( 'xprofile_field_default_before_save', $post_default, 'radio' ); + + } else if ( 'selectbox' == $this->type ) { + $post_option = !empty( $_POST['selectbox_option'] ) ? $_POST['selectbox_option'] : ''; + $post_default = !empty( $_POST['isDefault_selectbox_option'] ) ? $_POST['isDefault_selectbox_option'] : ''; + + $options = apply_filters( 'xprofile_field_options_before_save', $post_option, 'selectbox' ); + $defaults = apply_filters( 'xprofile_field_default_before_save', $post_default, 'selectbox' ); + + } else if ( 'multiselectbox' == $this->type ) { + $post_option = !empty( $_POST['multiselectbox_option'] ) ? $_POST['multiselectbox_option'] : ''; + $post_default = !empty( $_POST['isDefault_multiselectbox_option'] ) ? $_POST['isDefault_multiselectbox_option'] : ''; + + $options = apply_filters( 'xprofile_field_options_before_save', $post_option, 'multiselectbox' ); + $defaults = apply_filters( 'xprofile_field_default_before_save', $post_default, 'multiselectbox' ); + + } else if ( 'checkbox' == $this->type ) { + $post_option = !empty( $_POST['checkbox_option'] ) ? $_POST['checkbox_option'] : ''; + $post_default = !empty( $_POST['isDefault_checkbox_option'] ) ? $_POST['isDefault_checkbox_option'] : ''; + + $options = apply_filters( 'xprofile_field_options_before_save', $post_option, 'checkbox' ); + $defaults = apply_filters( 'xprofile_field_default_before_save', $post_default, 'checkbox' ); + } + + $counter = 1; + if ( $options ) { + foreach ( (array)$options as $option_key => $option_value ) { + $is_default = 0; + + if ( is_array( $defaults ) ) { + if ( isset( $defaults[$option_key] ) ) + $is_default = 1; + } else { + if ( (int) $defaults == $option_key ) + $is_default = 1; + } + + if ( '' != $option_value ) { + if ( !$wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->profile->table_name_fields} (group_id, parent_id, type, name, description, is_required, option_order, is_default_option) VALUES (%d, %d, 'option', %s, '', 0, %d, %d)", $this->group_id, $parent_id, $option_value, $counter, $is_default ) ) ) + return false; + } + + $counter++; + } + } + } + + do_action_ref_array( 'xprofile_field_after_save', array( &$this ) ); + + return $field_id; + } else { + return false; + } + } + + function get_field_data( $user_id ) { + return new BP_XProfile_ProfileData( $this->id, $user_id ); + } + + function get_children( $for_editing = false ) { + global $wpdb, $bp; + + // This is done here so we don't have problems with sql injection + if ( 'asc' == $this->order_by && !$for_editing ) + $sort_sql = 'ORDER BY name ASC'; + else if ( 'desc' == $this->order_by && !$for_editing ) + $sort_sql = 'ORDER BY name DESC'; + else + $sort_sql = 'ORDER BY option_order ASC'; + + // This eliminates a problem with getting all fields when there is no id for the object + if ( !$this->id ) + $parent_id = -1; + else + $parent_id = $this->id; + + $sql = $wpdb->prepare( "SELECT * FROM {$bp->profile->table_name_fields} WHERE parent_id = %d AND group_id = %d $sort_sql", $parent_id, $this->group_id ); + + if ( !$children = $wpdb->get_results( $sql ) ) + return false; + + return apply_filters( 'bp_xprofile_field_get_children', $children ); + } + + function delete_children() { + global $wpdb, $bp; + + $sql = $wpdb->prepare( "DELETE FROM {$bp->profile->table_name_fields} WHERE parent_id = %d", $this->id ); + + $wpdb->query( $sql ); + } + + /* Static Functions */ + + function get_type( $field_id ) { + global $wpdb, $bp; + + if ( $field_id ) { + $sql = $wpdb->prepare( "SELECT type FROM {$bp->profile->table_name_fields} WHERE id = %d", $field_id ); + + if ( !$field_type = $wpdb->get_var( $sql ) ) + return false; + + return $field_type; + } + + return false; + } + + function delete_for_group( $group_id ) { + global $wpdb, $bp; + + if ( $group_id ) { + $sql = $wpdb->prepare( "DELETE FROM {$bp->profile->table_name_fields} WHERE group_id = %d", $group_id ); + + if ( $wpdb->get_var( $sql ) === false ) + return false; + + return true; + } + + return false; + } + + function get_id_from_name( $field_name ) { + global $wpdb, $bp; + + if ( empty( $bp->profile->table_name_fields ) || !isset( $field_name ) ) + return false; + + return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->profile->table_name_fields} WHERE name = %s", $field_name ) ); + } + + function update_position( $field_id, $position, $field_group_id ) { + global $wpdb, $bp; + + if ( !is_numeric( $position ) || !is_numeric( $field_group_id ) ) + return false; + + /* Update $field_id with new $position and $field_group_id */ + if ( $parent = $wpdb->query( $wpdb->prepare( "UPDATE {$bp->profile->table_name_fields} SET field_order = %d, group_id = %d WHERE id = %d", $position, $field_group_id, $field_id ) ) ) {; + /* Update any children of this $field_id */ + $children = $wpdb->query( $wpdb->prepare( "UPDATE {$bp->profile->table_name_fields} SET group_id = %d WHERE parent_id = %d", $field_group_id, $field_id ) ); + + return $parent; + } + + return false; + } + + /* ADMIN AREA HTML. + * TODO: Get this out of here and replace with standard template loops + */ + + /* This function populates the items for radio buttons checkboxes and drop down boxes */ + function render_admin_form_children() { + $input_types = array( 'checkbox', 'selectbox', 'multiselectbox', 'radio' ); + + foreach ($input_types as $type) { + $default_name = ''; + + if ( 'multiselectbox' == $type || 'checkbox' == $type ) + $default_input = 'checkbox'; + else + $default_input = 'radio'; +?> +
      +

      +

      + +get_children( true ) ) { + $i = 1; + while ( isset( $_POST[$type . '_option'][$i] ) ) { + (array) $options[] = (object) array( + 'id' => -1, + 'name' => $_POST[$type . '_option'][$i], + 'is_default_option' => ( 'multiselectbox' != $type && + 'checkbox' != $type && + $_POST["isDefault_{$type}_option"] == $i ) ? + 1 : + $_POST["isDefault_{$type}_option"][$i] + ); + + ++$i; + } + } + + if ( !empty( $options ) ) { + for ( $i = 0, $count = count( $options ); $i < $count; ++$i ) { + $j = $i + 1; + + if ( 'multiselectbox' == $type || 'checkbox' == $type ) + $default_name = '[' . $j . ']'; +?> +

      : + + is_default_option ) {?> checked="checked" " value="" /> +id != -1 ) : ?> + [x] + +

      + + + + + +

      1: + + + + + +

      +

      +
      + + id ) { + $title = __( 'Add Field', 'buddypress' ); + $action = "admin.php?page=bp-profile-setup&group_id=" . $this->group_id . "&mode=add_field#tabs-" . $this->group_id; + + if ( !empty( $_POST['saveField'] ) ) { + $this->name = $_POST['title']; + $this->description = $_POST['description']; + $this->is_required = $_POST['required']; + $this->type = $_POST['fieldtype']; + $this->order_by = $_POST["sort_order_{$this->type}"]; + $this->field_order = $_POST['field_order']; + } + } else { + $title = __( 'Edit Field', 'buddypress' ); + $action = "admin.php?page=bp-profile-setup&mode=edit_field&group_id=" . $this->group_id . "&field_id=" . $this->id . "#tabs-" . $this->group_id; + } +?> +
      +

      +

      +

      + + +
      +

      +
      + + +
      +
      +
      +

      +
      + +
      +
      +can_delete ) { +?> +
      +

      +
      + +
      +
      + +
      +

      + +
      + +
      +

      + +
      + + + + render_admin_form_children(); ?> + + + + +

      + + + +

      + +
      + + + +
      +
      + +__construct( $field_id, $user_id ); + } + + function __construct( $field_id = null, $user_id = null ) { + if ( $field_id ) + $this->populate( $field_id, $user_id ); + } + + function populate( $field_id, $user_id ) { + global $wpdb, $bp; + + $sql = $wpdb->prepare( "SELECT * FROM {$bp->profile->table_name_data} WHERE field_id = %d AND user_id = %d", $field_id, $user_id ); + + if ( $profiledata = $wpdb->get_row( $sql ) ) { + $this->id = $profiledata->id; + $this->user_id = $profiledata->user_id; + $this->field_id = $profiledata->field_id; + $this->value = stripslashes( $profiledata->value ); + $this->last_updated = $profiledata->last_updated; + } else { + // When no row is found, we'll need to set these properties manually + $this->field_id = $field_id; + $this->user_id = $user_id; + } + } + + /** + * exists () + * + * Check if there is data already for the user. + * + * @global object $wpdb + * @global array $bp + * @return bool + */ + function exists() { + global $wpdb, $bp; + + $retval = $wpdb->get_row( $wpdb->prepare( "SELECT id FROM {$bp->profile->table_name_data} WHERE user_id = %d AND field_id = %d", $this->user_id, $this->field_id ) ); + + return apply_filters_ref_array( 'xprofile_data_exists', array( (bool)$retval, &$this ) ); + } + + /** + * is_valid_field() + * + * Check if this data is for a valid field. + * + * @global object $wpdb + * @global array $bp + * @return bool + */ + function is_valid_field() { + global $wpdb, $bp; + + $retval = $wpdb->get_row( $wpdb->prepare( "SELECT id FROM {$bp->profile->table_name_fields} WHERE id = %d", $this->field_id ) ); + + return apply_filters_ref_array( 'xprofile_data_is_valid_field', array( (bool)$retval, &$this ) ); + } + + function save() { + global $wpdb, $bp; + + $this->user_id = apply_filters( 'xprofile_data_user_id_before_save', $this->user_id, $this->id ); + $this->field_id = apply_filters( 'xprofile_data_field_id_before_save', $this->field_id, $this->id ); + $this->value = apply_filters( 'xprofile_data_value_before_save', $this->value, $this->id ); + $this->last_updated = apply_filters( 'xprofile_data_last_updated_before_save', bp_core_current_time(), $this->id ); + + do_action_ref_array( 'xprofile_data_before_save', array( &$this ) ); + + if ( $this->is_valid_field() ) { + if ( $this->exists() && !empty( $this->value ) && strlen( trim( $this->value ) ) ) { + $result = $wpdb->query( $wpdb->prepare( "UPDATE {$bp->profile->table_name_data} SET value = %s, last_updated = %s WHERE user_id = %d AND field_id = %d", $this->value, $this->last_updated, $this->user_id, $this->field_id ) ); + + } else if ( $this->exists() && empty( $this->value ) ) { + // Data removed, delete the entry. + $result = $this->delete(); + + } else { + $result = $wpdb->query( $wpdb->prepare("INSERT INTO {$bp->profile->table_name_data} (user_id, field_id, value, last_updated) VALUES (%d, %d, %s, %s)", $this->user_id, $this->field_id, $this->value, $this->last_updated ) ); + $this->id = $wpdb->insert_id; + } + + if ( !$result ) + return false; + + do_action_ref_array( 'xprofile_data_after_save', array( &$this ) ); + + return true; + } + + return false; + } + + function delete() { + global $wpdb, $bp; + + if ( !$wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->profile->table_name_data} WHERE field_id = %d AND user_id = %d", $this->field_id, $this->user_id ) ) ) + return false; + + return true; + } + + /** Static Functions **/ + + /** + * BP_XProfile_ProfileData::get_all_for_user() + * + * Get all of the profile information for a specific user. + */ + function get_all_for_user( $user_id ) { + global $wpdb, $bp; + + $results = $wpdb->get_results( $wpdb->prepare( "SELECT g.id as field_group_id, g.name as field_group_name, f.id as field_id, f.name as field_name, f.type as field_type, d.value as field_data, u.user_login, u.user_nicename, u.user_email FROM {$bp->profile->table_name_groups} g LEFT JOIN {$bp->profile->table_name_fields} f ON g.id = f.group_id INNER JOIN {$bp->profile->table_name_data} d ON f.id = d.field_id LEFT JOIN {$wpdb->users} u ON d.user_id = u.ID WHERE d.user_id = %d AND d.value != ''", $user_id ) ); + $profile_data = array(); + + if ( $results ) { + $profile_data['user_login'] = $results[0]->user_login; + $profile_data['user_nicename'] = $results[0]->user_nicename; + $profile_data['user_email'] = $results[0]->user_email; + + foreach( (array) $results as $field ) { + $profile_data[$field->field_name] = array( + 'field_group_id' => $field->field_group_id, + 'field_group_name' => $field->field_group_name, + 'field_id' => $field->field_id, + 'field_type' => $field->field_type, + 'field_data' => $field->field_data + ); + } + } + + return $profile_data; + } + + function get_value_byid( $field_id, $user_ids = null ) { + global $wpdb, $bp; + + if ( !$user_ids ) + $user_ids = $bp->displayed_user->id; + + if ( is_array( $user_ids ) ) { + $user_ids = implode( ',', (array) $user_ids ); + $data = $wpdb->get_results( $wpdb->prepare( "SELECT user_id, value FROM {$bp->profile->table_name_data} WHERE field_id = %d AND user_id IN ({$user_ids})", $field_id ) ); + } else { + $data = $wpdb->get_var( $wpdb->prepare( "SELECT value FROM {$bp->profile->table_name_data} WHERE field_id = %d AND user_id = %d", $field_id, $user_ids ) ); + } + + return $data; + } + + function get_value_byfieldname( $fields, $user_id = null ) { + global $bp, $wpdb; + + if ( !$fields ) + return false; + + if ( !$user_id ) + $user_id = $bp->displayed_user->id; + + $field_sql = ''; + + if ( is_array( $fields ) ) { + for ( $i = 0, $count = count( $fields ); $i < $count; ++$i ) { + if ( $i == 0 ) + $field_sql .= $wpdb->prepare( "AND ( f.name = %s ", $fields[$i] ); + else + $field_sql .= $wpdb->prepare( "OR f.name = %s ", $fields[$i] ); + } + + $field_sql .= ')'; + } else { + $field_sql .= $wpdb->prepare( "AND f.name = %s", $fields ); + } + + $sql = $wpdb->prepare( "SELECT d.value, f.name FROM {$bp->profile->table_name_data} d, {$bp->profile->table_name_fields} f WHERE d.field_id = f.id AND d.user_id = %d AND f.parent_id = 0 $field_sql", $user_id ); + + if ( !$values = $wpdb->get_results( $sql ) ) + return false; + + $new_values = array(); + + if ( is_array( $fields ) ) { + for ( $i = 0, $count = count( $values ); $i < $count; ++$i ) { + for ( $j = 0; $j < count( $fields ); $j++ ) { + if ( $values[$i]->name == $fields[$j] ) + $new_values[$fields[$j]] = $values[$i]->value; + else if ( !array_key_exists( $fields[$j], $new_values ) ) + $new_values[$fields[$j]] = NULL; + } + } + } else { + $new_values = $values[0]->value; + } + + return $new_values; + } + + function delete_for_field( $field_id ) { + global $wpdb, $userdata, $bp; + + if ( !$wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->profile->table_name_data} WHERE field_id = %d", $field_id ) ) ) + return false; + + return true; + } + + function get_last_updated( $user_id ) { + global $wpdb, $bp; + + $last_updated = $wpdb->get_var( $wpdb->prepare( "SELECT last_updated FROM {$bp->profile->table_name_data} WHERE user_id = %d ORDER BY last_updated LIMIT 1", $user_id ) ); + + return $last_updated; + } + + function delete_data_for_user( $user_id ) { + global $wpdb, $bp; + + return $wpdb->query( $wpdb->prepare( "DELETE FROM {$bp->profile->table_name_data} WHERE user_id = %d", $user_id ) ); + } + + function get_random( $user_id, $exclude_fullname ) { + global $wpdb, $bp; + + if ( $exclude_fullname ) + $exclude_sql = $wpdb->prepare( " AND pf.id != 1" ); + + return $wpdb->get_results( $wpdb->prepare( "SELECT pf.type, pf.name, pd.value FROM {$bp->profile->table_name_data} pd INNER JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id AND pd.user_id = %d {$exclude_sql} ORDER BY RAND() LIMIT 1", $user_id ) ); + } + + function get_fullname( $user_id = 0 ) { + global $bp; + + if ( !$user_id ) + $user_id = $bp->displayed_user->id; + + $field_name = bp_xprofile_fullname_field_name(); + + $data = xprofile_get_field_data( $field_name, $user_id ); + + return $data[$field_name]; + } +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-cssjs.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-cssjs.php new file mode 100644 index 0000000..4d401a7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-cssjs.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-filters.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-filters.php new file mode 100644 index 0000000..e7e4ed5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-filters.php @@ -0,0 +1,207 @@ +', ']]>', $field_value ); + } + + return stripslashes( $field_value ); +} + +function xprofile_filter_link_profile_data( $field_value, $field_type = 'textbox' ) { + if ( 'datebox' == $field_type ) + return $field_value; + + if ( !strpos( $field_value, ',' ) && ( count( explode( ' ', $field_value ) ) > 5 ) ) + return $field_value; + + $values = explode( ',', $field_value ); + + if ( $values ) { + foreach ( (array)$values as $value ) { + $value = trim( $value ); + + // If the value is a URL, skip it and just make it clickable. + if ( preg_match( '@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', $value ) ) { + $new_values[] = make_clickable( $value ); + } else { + if ( count( explode( ' ', $value ) ) > 5 ) { + $new_values[] = $value; + } else { + $new_values[] = '' . $value . ''; + } + } + } + + $values = implode( ', ', $new_values ); + } + + return $values; +} + +function xprofile_filter_comments( $comments, $post_id ) { + foreach( (array)$comments as $comment ) { + if ( $comment->user_id ) { + $user_ids[] = $comment->user_id; + } + } + + if ( empty( $user_ids ) ) + return $comments; + + if ( $fullnames = BP_XProfile_ProfileData::get_value_byid( 1, $user_ids ) ) { + foreach( (array)$fullnames as $user ) { + $users[$user->user_id] = trim($user->value); + } + } + + foreach( (array)$comments as $i => $comment ) { + if ( !empty( $comment->user_id ) ) { + if ( !empty( $users[$comment->user_id] ) ) { + $comments[$i]->comment_author = $users[$comment->user_id]; + } + } + } + + return $comments; +} +add_filter( 'comments_array', 'xprofile_filter_comments', 10, 2 ); + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-functions.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-functions.php new file mode 100644 index 0000000..19988e8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-functions.php @@ -0,0 +1,605 @@ + false, + 'name' => false, + 'description' => '', + 'can_delete' => true + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( !$name ) + return false; + + $field_group = new BP_XProfile_Group( $field_group_id ); + $field_group->name = $name; + $field_group->description = $description; + $field_group->can_delete = $can_delete; + + return $field_group->save(); +} + +function xprofile_get_field_group( $field_group_id ) { + $field_group = new BP_XProfile_Group( $field_group_id ); + + if ( empty( $field_group->id ) ) + return false; + + return $field_group; +} + +function xprofile_delete_field_group( $field_group_id ) { + $field_group = new BP_XProfile_Group( $field_group_id ); + return $field_group->delete(); +} + +function xprofile_update_field_group_position( $field_group_id, $position ) { + return BP_XProfile_Group::update_position( $field_group_id, $position ); +} + + +/*** Field Management *********************************************************/ + +function xprofile_insert_field( $args = '' ) { + global $bp; + + extract( $args ); + + /** + * Possible parameters (pass as assoc array): + * 'field_id' + * 'field_group_id' + * 'parent_id' + * 'type' + * 'name' + * 'description' + * 'is_required' + * 'can_delete' + * 'field_order' + * 'order_by' + * 'is_default_option' + * 'option_order' + */ + + // Check we have the minimum details + if ( !$field_group_id ) + return false; + + // Check this is a valid field type + if ( !in_array( $type, (array) $bp->profile->field_types ) ) + return false; + + // Instantiate a new field object + if ( $field_id ) + $field = new BP_XProfile_Field( $field_id ); + else + $field = new BP_XProfile_Field; + + $field->group_id = $field_group_id; + + if ( !empty( $parent_id ) ) + $field->parent_id = $parent_id; + + if ( !empty( $type ) ) + $field->type = $type; + + if ( !empty( $name ) ) + $field->name = $name; + + if ( !empty( $description ) ) + $field->description = $description; + + if ( !empty( $is_required ) ) + $field->is_required = $is_required; + + if ( !empty( $can_delete ) ) + $field->can_delete = $can_delete; + + if ( !empty( $field_order ) ) + $field->field_order = $field_order; + + if ( !empty( $order_by ) ) + $field->order_by = $order_by; + + if ( !empty( $is_default_option ) ) + $field->is_default_option = $is_default_option; + + if ( !empty( $option_order ) ) + $field->option_order = $option_order; + + return $field->save(); +} + +function xprofile_get_field( $field_id ) { + return new BP_XProfile_Field( $field_id ); +} + +function xprofile_delete_field( $field_id ) { + $field = new BP_XProfile_Field( $field_id ); + return $field->delete(); +} + + +/*** Field Data Management *****************************************************/ + +/** + * Fetches profile data for a specific field for the user. + * + * When the field value is serialized, this function unserializes and filters each item in the array + * that results. + * + * @package BuddyPress Core + * @param mixed $field The ID of the field, or the $name of the field. + * @param int $user_id The ID of the user + * @global object $bp Global BuddyPress settings object + * @uses BP_XProfile_ProfileData::get_value_byid() Fetches the value based on the params passed. + * @return mixed The profile field data. + */ +function xprofile_get_field_data( $field, $user_id = 0 ) { + global $bp; + + if ( empty( $user_id ) ) + $user_id = $bp->displayed_user->id; + + if ( empty( $user_id ) ) + return false; + + if ( is_numeric( $field ) ) + $field_id = $field; + else + $field_id = xprofile_get_field_id_from_name( $field ); + + if ( empty( $field_id ) ) + return false; + + $values = maybe_unserialize( BP_XProfile_ProfileData::get_value_byid( $field_id, $user_id ) ); + + if ( is_array( $values ) ) { + $data = array(); + foreach( (array)$values as $value ) { + $data[] = apply_filters( 'xprofile_get_field_data', $value, $field_id, $user_id ); + } + } else { + $data = apply_filters( 'xprofile_get_field_data', $values, $field_id, $user_id ); + } + + return $data; +} + +/** + * A simple function to set profile data for a specific field for a specific user. + * + * @package BuddyPress Core + * @param $field The ID of the field, or the $name of the field. + * @param $user_id The ID of the user + * @param $value The value for the field you want to set for the user. + * @global object $bp Global BuddyPress settings object + * @uses xprofile_get_field_id_from_name() Gets the ID for the field based on the name. + * @return true on success, false on failure. + */ +function xprofile_set_field_data( $field, $user_id, $value, $is_required = false ) { + + if ( is_numeric( $field ) ) + $field_id = $field; + else + $field_id = xprofile_get_field_id_from_name( $field ); + + if ( empty( $field_id ) ) + return false; + + if ( $is_required && ( empty( $value ) || !is_array( $value ) && !strlen( trim( $value ) ) ) ) + return false; + + $field = new BP_XProfile_Field( $field_id ); + + // If the value is empty, then delete any field data that exists, unless the field is of a + // type where null values are semantically meaningful + if ( empty( $value ) && 'checkbox' != $field->type && 'multiselectbox' != $field->type ) { + xprofile_delete_field_data( $field_id, $user_id ); + return true; + } + + // Check the value is an acceptable value + if ( 'checkbox' == $field->type || 'radio' == $field->type || 'selectbox' == $field->type || 'multiselectbox' == $field->type ) { + $options = $field->get_children(); + + foreach( $options as $option ) + $possible_values[] = $option->name; + + if ( is_array( $value ) ) { + foreach( $value as $i => $single ) { + if ( !in_array( $single, (array)$possible_values ) ) { + unset( $value[$i] ); + } + } + + // Reset the keys by merging with an empty array + $value = array_merge( array(), $value ); + } else { + if ( !in_array( $value, (array)$possible_values ) ) { + return false; + } + } + } + + $field = new BP_XProfile_ProfileData(); + $field->field_id = $field_id; + $field->user_id = $user_id; + $field->value = maybe_serialize( $value ); + + return $field->save(); +} + +function xprofile_delete_field_data( $field, $user_id ) { + if ( is_numeric( $field ) ) + $field_id = $field; + else + $field_id = xprofile_get_field_id_from_name( $field ); + + if ( empty( $field_id ) || empty( $user_id ) ) + return false; + + $field = new BP_XProfile_ProfileData( $field_id, $user_id ); + return $field->delete(); +} + +function xprofile_check_is_required_field( $field_id ) { + $field = new BP_Xprofile_Field( $field_id ); + + // Define locale variable(s) + $retval = false; + + // Super admins can skip required check + if ( is_super_admin() && !is_admin() ) + $retval = false; + + // All other users will use the field's setting + elseif ( isset( $field->is_required ) ) + $retval = $field->is_required; + + return (bool) $retval; +} + +/** + * Returns the ID for the field based on the field name. + * + * @package BuddyPress Core + * @param $field_name The name of the field to get the ID for. + * @return int $field_id on success, false on failure. + */ +function xprofile_get_field_id_from_name( $field_name ) { + return BP_Xprofile_Field::get_id_from_name( $field_name ); +} + +/** + * Fetches a random piece of profile data for the user. + * + * @package BuddyPress Core + * @param $user_id User ID of the user to get random data for + * @param $exclude_fullname whether or not to exclude the full name field as random data. + * @global object $bp Global BuddyPress settings object + * @global $wpdb WordPress DB access object. + * @global $current_user WordPress global variable containing current logged in user information + * @uses xprofile_format_profile_field() Formats profile field data so it is suitable for display. + * @return $field_data The fetched random data for the user. + */ +function xprofile_get_random_profile_data( $user_id, $exclude_fullname = true ) { + $field_data = BP_XProfile_ProfileData::get_random( $user_id, $exclude_fullname ); + + if ( !$field_data ) + return false; + + $field_data[0]->value = xprofile_format_profile_field( $field_data[0]->type, $field_data[0]->value ); + + if ( !$field_data[0]->value || empty( $field_data[0]->value ) ) + return false; + + return apply_filters( 'xprofile_get_random_profile_data', $field_data ); +} + +/** + * Formats a profile field according to its type. [ TODO: Should really be moved to filters ] + * + * @package BuddyPress Core + * @param $field_type The type of field: datebox, selectbox, textbox etc + * @param $field_value The actual value + * @uses bp_format_time() Formats a time value based on the WordPress date format setting + * @return $field_value The formatted value + */ +function xprofile_format_profile_field( $field_type, $field_value ) { + if ( !isset( $field_value ) || empty( $field_value ) ) + return false; + + $field_value = bp_unserialize_profile_field( $field_value ); + + if ( 'datebox' == $field_type ) { + $field_value = bp_format_time( $field_value, true ); + } else { + $content = $field_value; + $field_value = str_replace( ']]>', ']]>', $content ); + } + + return stripslashes_deep( $field_value ); +} + +function xprofile_update_field_position( $field_id, $position, $field_group_id ) { + return BP_XProfile_Field::update_position( $field_id, $position, $field_group_id ); +} + +/** + * Setup the avatar upload directory for a user. + * + * @package BuddyPress Core + * @param $directory The root directory name + * @param $user_id The user ID. + * @return array() containing the path and URL plus some other settings. + */ +function xprofile_avatar_upload_dir( $directory = false, $user_id = 0 ) { + global $bp; + + if ( empty( $user_id ) ) + $user_id = $bp->displayed_user->id; + + if ( empty( $directory ) ) + $directory = 'avatars'; + + $path = bp_core_avatar_upload_path() . '/avatars/' . $user_id; + $newbdir = $path; + + if ( !file_exists( $path ) ) + @wp_mkdir_p( $path ); + + $newurl = bp_core_avatar_url() . '/avatars/' . $user_id; + $newburl = $newurl; + $newsubdir = '/avatars/' . $user_id; + + return apply_filters( 'xprofile_avatar_upload_dir', array( + 'path' => $path, + 'url' => $newurl, + 'subdir' => $newsubdir, + 'basedir' => $newbdir, + 'baseurl' => $newburl, + 'error' => false + ) ); +} + +/** + * Syncs Xprofile data to the standard built in WordPress profile data. + * + * @package BuddyPress Core + */ +function xprofile_sync_wp_profile( $user_id = 0 ) { + global $bp, $wpdb; + + if ( !empty( $bp->site_options['bp-disable-profile-sync'] ) && (int)$bp->site_options['bp-disable-profile-sync'] ) + return true; + + if ( empty( $user_id ) ) + $user_id = $bp->loggedin_user->id; + + if ( empty( $user_id ) ) + return false; + + $fullname = xprofile_get_field_data( bp_xprofile_fullname_field_name(), $user_id ); + $space = strpos( $fullname, ' ' ); + + if ( false === $space ) { + $firstname = $fullname; + $lastname = ''; + } else { + $firstname = substr( $fullname, 0, $space ); + $lastname = trim( substr( $fullname, $space, strlen( $fullname ) ) ); + } + + update_user_meta( $user_id, 'nickname', $fullname ); + update_user_meta( $user_id, 'first_name', $firstname ); + update_user_meta( $user_id, 'last_name', $lastname ); + + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->users} SET display_name = %s WHERE ID = %d", $fullname, $user_id ) ); +} +add_action( 'xprofile_updated_profile', 'xprofile_sync_wp_profile' ); +add_action( 'bp_core_signup_user', 'xprofile_sync_wp_profile' ); + + +/** + * Syncs the standard built in WordPress profile data to XProfile. + * + * @since 1.2.4 + * @package BuddyPress Core + */ +function xprofile_sync_bp_profile( &$errors, $update, &$user ) { + global $bp; + + if ( ( !empty( $bp->site_options['bp-disable-profile-sync'] ) && (int)$bp->site_options['bp-disable-profile-sync'] ) || !$update || $errors->get_error_codes() ) + return; + + xprofile_set_field_data( bp_xprofile_fullname_field_name(), $user->ID, $user->display_name ); +} +add_action( 'user_profile_update_errors', 'xprofile_sync_bp_profile', 10, 3 ); + + +/** + * When a user is deleted, we need to clean up the database and remove all the + * profile data from each table. Also we need to clean anything up in the usermeta table + * that this component uses. + * + * @package BuddyPress XProfile + * @param $user_id The ID of the deleted user + * @uses get_user_meta() Get a user meta value based on meta key from wp_usermeta + * @uses delete_user_meta() Delete user meta value based on meta key from wp_usermeta + * @uses delete_data_for_user() Removes all profile data from the xprofile tables for the user + */ +function xprofile_remove_data( $user_id ) { + BP_XProfile_ProfileData::delete_data_for_user( $user_id ); + + // delete any avatar files. + @unlink( get_user_meta( $user_id, 'bp_core_avatar_v1_path', true ) ); + @unlink( get_user_meta( $user_id, 'bp_core_avatar_v2_path', true ) ); + + // unset the usermeta for avatars from the usermeta table. + delete_user_meta( $user_id, 'bp_core_avatar_v1' ); + delete_user_meta( $user_id, 'bp_core_avatar_v1_path' ); + delete_user_meta( $user_id, 'bp_core_avatar_v2' ); + delete_user_meta( $user_id, 'bp_core_avatar_v2_path' ); +} +add_action( 'wpmu_delete_user', 'xprofile_remove_data' ); +add_action( 'delete_user', 'xprofile_remove_data' ); +add_action( 'bp_make_spam_user', 'xprofile_remove_data' ); + +/*** XProfile Meta ****************************************************/ + +function bp_xprofile_delete_meta( $object_id, $object_type, $meta_key = false, $meta_value = false ) { + global $wpdb, $bp; + + $object_id = (int) $object_id; + + if ( !$object_id ) + return false; + + if ( !isset( $object_type ) ) + return false; + + if ( !in_array( $object_type, array( 'group', 'field', 'data' ) ) ) + return false; + + $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); + + if ( is_array( $meta_value ) || is_object( $meta_value ) ) + $meta_value = serialize( $meta_value ); + + $meta_value = trim( $meta_value ); + + if ( !$meta_key ) + $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp->profile->table_name_meta . " WHERE object_id = %d AND object_type = %s", $object_id, $object_type ) ); + else if ( $meta_value ) + $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp->profile->table_name_meta . " WHERE object_id = %d AND object_type = %s AND meta_key = %s AND meta_value = %s", $object_id, $object_type, $meta_key, $meta_value ) ); + else + $wpdb->query( $wpdb->prepare( "DELETE FROM " . $bp->profile->table_name_meta . " WHERE object_id = %d AND object_type = %s AND meta_key = %s", $object_id, $object_type, $meta_key ) ); + + // Delete the cached object + wp_cache_delete( 'bp_xprofile_meta_' . $object_type . '_' . $object_id . '_' . $meta_key, 'bp' ); + + return true; +} + +function bp_xprofile_get_meta( $object_id, $object_type, $meta_key = '') { + global $wpdb, $bp; + + $object_id = (int) $object_id; + + if ( !$object_id ) + return false; + + if ( !isset( $object_type ) ) + return false; + + if ( !in_array( $object_type, array( 'group', 'field', 'data' ) ) ) + return false; + + if ( !empty( $meta_key ) ) { + $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); + + if ( !$metas = wp_cache_get( 'bp_xprofile_meta_' . $object_type . '_' . $object_id . '_' . $meta_key, 'bp' ) ) { + $metas = $wpdb->get_col( $wpdb->prepare( "SELECT meta_value FROM " . $bp->profile->table_name_meta . " WHERE object_id = %d AND object_type = %s AND meta_key = %s", $object_id, $object_type, $meta_key ) ); + wp_cache_set( 'bp_xprofile_meta_' . $object_type . '_' . $object_id . '_' . $meta_key, $metas, 'bp' ); + } + } else { + $metas = $wpdb->get_col( $wpdb->prepare( "SELECT meta_value FROM " . $bp->profile->table_name_meta . " WHERE object_id = %d AND object_type = %s", $object_id, $object_type ) ); + } + + if ( empty( $metas ) ) { + if ( empty( $meta_key ) ) { + return array(); + } else { + return ''; + } + } + + $metas = array_map( 'maybe_unserialize', (array)$metas ); + + if ( 1 == count( $metas ) ) + return $metas[0]; + else + return $metas; +} + +function bp_xprofile_update_meta( $object_id, $object_type, $meta_key, $meta_value ) { + global $wpdb, $bp; + + $object_id = (int) $object_id; + + if ( empty( $object_id ) ) + return false; + + if ( !isset( $object_type ) ) + return false; + + if ( !in_array( $object_type, array( 'group', 'field', 'data' ) ) ) + return false; + + $meta_key = preg_replace( '|[^a-z0-9_]|i', '', $meta_key ); + + if ( is_string( $meta_value ) ) + $meta_value = stripslashes( $wpdb->escape( $meta_value ) ); + + $meta_value = maybe_serialize( $meta_value ); + + if ( empty( $meta_value ) ) + return bp_xprofile_delete_meta( $object_id, $object_type, $meta_key ); + + $cur = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM " . $bp->profile->table_name_meta . " WHERE object_id = %d AND object_type = %s AND meta_key = %s", $object_id, $object_type, $meta_key ) ); + + if ( empty( $cur ) ) + $wpdb->query( $wpdb->prepare( "INSERT INTO " . $bp->profile->table_name_meta . " ( object_id, object_type, meta_key, meta_value ) VALUES ( %d, %s, %s, %s )", $object_id, $object_type, $meta_key, $meta_value ) ); + else if ( $cur->meta_value != $meta_value ) + $wpdb->query( $wpdb->prepare( "UPDATE " . $bp->profile->table_name_meta . " SET meta_value = %s WHERE object_id = %d AND object_type = %s AND meta_key = %s", $meta_value, $object_id, $object_type, $meta_key ) ); + else + return false; + + // Update the cached object and recache + wp_cache_set( 'bp_xprofile_meta_' . $object_type . '_' . $object_id . '_' . $meta_key, $meta_value, 'bp' ); + + return true; +} + +function bp_xprofile_update_fieldgroup_meta( $field_group_id, $meta_key, $meta_value ) { + return bp_xprofile_update_meta( $field_group_id, 'group', $meta_key, $meta_value ); +} + +function bp_xprofile_update_field_meta( $field_id, $meta_key, $meta_value ) { + return bp_xprofile_update_meta( $field_id, 'field', $meta_key, $meta_value ); +} + +function bp_xprofile_update_fielddata_meta( $field_data_id, $meta_key, $meta_value ) { + return bp_xprofile_update_meta( $field_data_id, 'data', $meta_key, $meta_value ); +} + +/** + * Return the field name for the Full Name xprofile field + * + * @package BuddyPress + * @since 1.5 + * + * @return str The field name + */ +function bp_xprofile_fullname_field_name() { + return apply_filters( 'bp_xprofile_fullname_field_name', BP_XPROFILE_FULLNAME_FIELD_NAME ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-loader.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-loader.php new file mode 100644 index 0000000..f7506de --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-loader.php @@ -0,0 +1,237 @@ +site_options['bp-xprofile-base-group-name'] ) ); + define ( 'BP_XPROFILE_FULLNAME_FIELD_NAME', stripslashes( $bp->site_options['bp-xprofile-fullname-field-name'] ) ); + + // Set the support field type ids + $this->field_types = apply_filters( 'xprofile_field_types', array( + 'textbox', + 'textarea', + 'radio', + 'checkbox', + 'selectbox', + 'multiselectbox', + 'datebox' + ) ); + + // Tables + $global_tables = array( + 'table_name_data' => $bp->table_prefix . 'bp_xprofile_data', + 'table_name_groups' => $bp->table_prefix . 'bp_xprofile_groups', + 'table_name_fields' => $bp->table_prefix . 'bp_xprofile_fields', + 'table_name_meta' => $bp->table_prefix . 'bp_xprofile_meta', + ); + + $globals = array( + 'slug' => BP_XPROFILE_SLUG, + 'has_directory' => false, + 'notification_callback' => 'xprofile_format_notifications', + 'global_tables' => $global_tables + ); + + parent::setup_globals( $globals ); + } + + /** + * Setup BuddyBar navigation + * + * @global obj $bp + */ + function setup_nav() { + global $bp; + + // Add 'Profile' to the main navigation + $main_nav = array( + 'name' => __( 'Profile', 'buddypress' ), + 'slug' => $this->slug, + 'position' => 20, + 'screen_function' => 'xprofile_screen_display_profile', + 'default_subnav_slug' => 'public', + 'item_css_id' => $this->id + ); + + $profile_link = trailingslashit( $bp->loggedin_user->domain . $this->slug ); + + // Add the subnav items to the profile + $sub_nav[] = array( + 'name' => __( 'Public', 'buddypress' ), + 'slug' => 'public', + 'parent_url' => $profile_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'xprofile_screen_display_profile', + 'position' => 10 + ); + + // Edit Profile + $sub_nav[] = array( + 'name' => __( 'Edit', 'buddypress' ), + 'slug' => 'edit', + 'parent_url' => $profile_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'xprofile_screen_edit_profile', + 'position' => 20 + ); + + // Change Avatar + $sub_nav[] = array( + 'name' => __( 'Change Avatar', 'buddypress' ), + 'slug' => 'change-avatar', + 'parent_url' => $profile_link, + 'parent_slug' => $this->slug, + 'screen_function' => 'xprofile_screen_change_avatar', + 'position' => 30 + ); + + parent::setup_nav( $main_nav, $sub_nav ); + } + + /** + * Set up the admin bar + * + * @global obj $bp + */ + function setup_admin_bar() { + global $bp; + + // Prevent debug notices + $wp_admin_nav = array(); + + // Menus for logged in user + if ( is_user_logged_in() ) { + + // Profile link + $profile_link = trailingslashit( $bp->loggedin_user->domain . $this->slug ); + + // Add the "Profile" sub menu + $wp_admin_nav[] = array( + 'parent' => $bp->my_account_menu_id, + 'id' => 'my-account-' . $this->id, + 'title' => __( 'Profile', 'buddypress' ), + 'href' => trailingslashit( $profile_link ) + ); + + // View Profile + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-view', + 'title' => __( 'View', 'buddypress' ), + 'href' => trailingslashit( $profile_link . 'public' ) + ); + + // Edit Profile + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-edit', + 'title' => __( 'Edit', 'buddypress' ), + 'href' => trailingslashit( $profile_link . 'edit' ) + ); + + // Edit Profile + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . $this->id, + 'id' => 'my-account-' . $this->id . '-change-avatar', + 'title' => __( 'Change Avatar', 'buddypress' ), + 'href' => trailingslashit( $profile_link . 'change-avatar' ) + ); + + } + + parent::setup_admin_bar( $wp_admin_nav ); + } + + /** + * Sets up the title for pages and + * + * @global obj $bp + */ + function setup_title() { + global $bp; + + if ( bp_is_profile_component() ) { + if ( bp_is_my_profile() ) { + $bp->bp_options_title = __( 'My Profile', 'buddypress' ); + } else { + $bp->bp_options_avatar = bp_core_fetch_avatar( array( + 'item_id' => $bp->displayed_user->id, + 'type' => 'thumb' + ) ); + $bp->bp_options_title = $bp->displayed_user->fullname; + } + } + + parent::setup_title(); + } +} +// Create the xprofile component +if ( !isset( $bp->profile->id ) ) + $bp->profile = new BP_XProfile_Component(); + +?> diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-screens.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-screens.php new file mode 100644 index 0000000..f01a947 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-screens.php @@ -0,0 +1,177 @@ +<?php +/******************************************************************************* + * Screen functions are the controllers of BuddyPress. They will execute when + * their specific URL is caught. They will first save or manipulate data using + * business functions, then pass on the user to a template file. + */ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +/** + * Handles the display of the profile page by loading the correct template file. + * + * @package BuddyPress XProfile + * @uses bp_core_load_template() Looks for and loads a template file within the current member theme (folder/filename) + */ +function xprofile_screen_display_profile() { + $new = isset( $_GET['new'] ) ? $_GET['new'] : ''; + + do_action( 'xprofile_screen_display_profile', $new ); + bp_core_load_template( apply_filters( 'xprofile_template_display_profile', 'members/single/home' ) ); +} + +/** + * Handles the display of the profile edit page by loading the correct template file. + * Also checks to make sure this can only be accessed for the logged in users profile. + * + * @package BuddyPress XProfile + * @uses bp_is_my_profile() Checks to make sure the current user being viewed equals the logged in user + * @uses bp_core_load_template() Looks for and loads a template file within the current member theme (folder/filename) + */ +function xprofile_screen_edit_profile() { + global $bp; + + if ( !bp_is_my_profile() && !is_super_admin() ) + return false; + + // Make sure a group is set. + if ( !bp_action_variable( 1 ) ) + bp_core_redirect( bp_displayed_user_domain() . $bp->profile->slug . '/edit/group/1' ); + + // Check the field group exists + if ( !bp_is_action_variable( 'group' ) || !xprofile_get_field_group( bp_action_variable( 1 ) ) ) { + bp_do_404(); + return; + } + + // Check to see if any new information has been submitted + if ( isset( $_POST['field_ids'] ) ) { + + // Check the nonce + check_admin_referer( 'bp_xprofile_edit' ); + + // Check we have field ID's + if ( empty( $_POST['field_ids'] ) ) + bp_core_redirect( trailingslashit( $bp->displayed_user->domain . $bp->profile->slug . '/edit/group/' . bp_action_variable( 1 ) ) ); + + // Explode the posted field IDs into an array so we know which + // fields have been submitted + $posted_field_ids = explode( ',', $_POST['field_ids'] ); + $is_required = array(); + + // Loop through the posted fields formatting any datebox values + // then validate the field + foreach ( (array)$posted_field_ids as $field_id ) { + if ( !isset( $_POST['field_' . $field_id] ) ) { + + if ( !empty( $_POST['field_' . $field_id . '_day'] ) && !empty( $_POST['field_' . $field_id . '_month'] ) && !empty( $_POST['field_' . $field_id . '_year'] ) ) { + // Concatenate the values + $date_value = $_POST['field_' . $field_id . '_day'] . ' ' . $_POST['field_' . $field_id . '_month'] . ' ' . $_POST['field_' . $field_id . '_year']; + + // Turn the concatenated value into a timestamp + $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $date_value ) ); + } + + } + + $is_required[$field_id] = xprofile_check_is_required_field( $field_id ); + if ( $is_required[$field_id] && empty( $_POST['field_' . $field_id] ) ) + $errors = true; + } + + // There are errors + if ( !empty( $errors ) ) { + bp_core_add_message( __( 'Please make sure you fill in all required fields in this profile field group before saving.', 'buddypress' ), 'error' ); + + // No errors + } else { + // Reset the errors var + $errors = false; + + // Now we've checked for required fields, lets save the values. + foreach ( (array)$posted_field_ids as $field_id ) { + + // Certain types of fields (checkboxes, multiselects) may come through empty. Save them as an empty array so that they don't get overwritten by the default on the next edit. + if ( empty( $_POST['field_' . $field_id] ) ) + $value = array(); + else + $value = $_POST['field_' . $field_id]; + + if ( !xprofile_set_field_data( $field_id, $bp->displayed_user->id, $value, $is_required[$field_id] ) ) + $errors = true; + else + do_action( 'xprofile_profile_field_data_updated', $field_id, $value ); + } + + do_action( 'xprofile_updated_profile', $bp->displayed_user->id, $posted_field_ids, $errors ); + + // Set the feedback messages + if ( $errors ) + bp_core_add_message( __( 'There was a problem updating some of your profile information, please try again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'Changes saved.', 'buddypress' ) ); + + // Redirect back to the edit screen to display the updates and message + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . $bp->profile->slug . '/edit/group/' . bp_action_variable( 1 ) ) ); + } + } + + do_action( 'xprofile_screen_edit_profile' ); + bp_core_load_template( apply_filters( 'xprofile_template_edit_profile', 'members/single/home' ) ); +} + +/** + * Handles the uploading and cropping of a user avatar. Displays the change avatar page. + * + * @package BuddyPress XProfile + * @uses bp_is_my_profile() Checks to make sure the current user being viewed equals the logged in user + * @uses bp_core_load_template() Looks for and loads a template file within the current member theme (folder/filename) + */ +function xprofile_screen_change_avatar() { + global $bp; + + if ( !bp_is_my_profile() && !is_super_admin() ) + return false; + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + $bp->avatar_admin->step = 'upload-image'; + + if ( !empty( $_FILES ) ) { + + // Check the nonce + check_admin_referer( 'bp_avatar_upload' ); + + // Pass the file to the avatar upload handler + if ( bp_core_avatar_handle_upload( $_FILES, 'xprofile_avatar_upload_dir' ) ) { + $bp->avatar_admin->step = 'crop-image'; + + // Make sure we include the jQuery jCrop file for image cropping + add_action( 'wp_print_scripts', 'bp_core_add_jquery_cropper' ); + } + } + + // If the image cropping is done, crop the image and save a full/thumb version + if ( isset( $_POST['avatar-crop-submit'] ) ) { + + // Check the nonce + check_admin_referer( 'bp_avatar_cropstore' ); + + if ( !bp_core_avatar_handle_crop( array( 'item_id' => $bp->displayed_user->id, 'original_file' => $_POST['image_src'], 'crop_x' => $_POST['x'], 'crop_y' => $_POST['y'], 'crop_w' => $_POST['w'], 'crop_h' => $_POST['h'] ) ) ) + bp_core_add_message( __( 'There was a problem cropping your avatar, please try uploading it again', 'buddypress' ), 'error' ); + else { + bp_core_add_message( __( 'Your new avatar was uploaded successfully!', 'buddypress' ) ); + do_action( 'xprofile_avatar_uploaded' ); + } + } + + do_action( 'xprofile_screen_change_avatar' ); + + bp_core_load_template( apply_filters( 'xprofile_template_change_avatar', 'members/single/home' ) ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-template.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-template.php new file mode 100644 index 0000000..a39d90f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-template.php @@ -0,0 +1,826 @@ +<?php +/*************************************************************************** + * XProfile Data Display Template Tags + **/ + +// Exit if accessed directly +if ( !defined( 'ABSPATH' ) ) exit; + +Class BP_XProfile_Data_Template { + var $current_group = -1; + var $group_count; + var $groups; + var $group; + + var $current_field = -1; + var $field_count; + var $field_has_data; + var $field; + + var $in_the_loop; + var $user_id; + + function bp_xprofile_data_template( $user_id, $profile_group_id, $hide_empty_groups = false, $fetch_fields = false, $fetch_field_data = false, $exclude_groups = false, $exclude_fields = false, $hide_empty_fields = false ) { + $this->__construct( $user_id, $profile_group_id, $hide_empty_groups, $fetch_fields, $fetch_field_data, $exclude_groups, $exclude_fields, $hide_empty_fields ); + } + + function __construct( $user_id, $profile_group_id, $hide_empty_groups = false, $fetch_fields = false, $fetch_field_data = false, $exclude_groups = false, $exclude_fields = false, $hide_empty_fields = false ) { + $this->groups = BP_XProfile_Group::get( array( + 'profile_group_id' => $profile_group_id, + 'user_id' => $user_id, + 'hide_empty_groups' => $hide_empty_groups, + 'hide_empty_fields' => $hide_empty_fields, + 'fetch_fields' => $fetch_fields, + 'fetch_field_data' => $fetch_field_data, + 'exclude_groups' => $exclude_groups, + 'exclude_fields' => $exclude_fields + ) ); + + $this->group_count = count($this->groups); + $this->user_id = $user_id; + } + + function has_groups() { + if ( $this->group_count ) + return true; + + return false; + } + + function next_group() { + $this->current_group++; + + $this->group = $this->groups[$this->current_group]; + $this->group->fields = apply_filters( 'xprofile_group_fields', $this->group->fields, $this->group->id ); + $this->field_count = count( $this->group->fields ); + + return $this->group; + } + + function rewind_groups() { + $this->current_group = -1; + if ( $this->group_count > 0 ) { + $this->group = $this->groups[0]; + } + } + + function profile_groups() { + if ( $this->current_group + 1 < $this->group_count ) { + return true; + } elseif ( $this->current_group + 1 == $this->group_count ) { + do_action('xprofile_template_loop_end'); + // Do some cleaning up after the loop + $this->rewind_groups(); + } + + $this->in_the_loop = false; + return false; + } + + function the_profile_group() { + global $group; + + $this->in_the_loop = true; + $group = $this->next_group(); + + if ( 0 == $this->current_group ) // loop has just started + do_action('xprofile_template_loop_start'); + } + + /**** FIELDS ****/ + + function next_field() { + $this->current_field++; + + $this->field = $this->group->fields[$this->current_field]; + return $this->field; + } + + function rewind_fields() { + $this->current_field = -1; + if ( $this->field_count > 0 ) { + $this->field = $this->group->fields[0]; + } + } + + function has_fields() { + $has_data = false; + + for ( $i = 0, $count = count( $this->group->fields ); $i < $count; ++$i ) { + $field = &$this->group->fields[$i]; + + if ( !empty( $field->data ) && $field->data->value != null ) { + $has_data = true; + } + } + + if ( $has_data ) + return true; + + return false; + } + + function profile_fields() { + if ( $this->current_field + 1 < $this->field_count ) { + return true; + } elseif ( $this->current_field + 1 == $this->field_count ) { + // Do some cleaning up after the loop + $this->rewind_fields(); + } + + return false; + } + + function the_profile_field() { + global $field; + + $field = $this->next_field(); + + $value = !empty( $field->data ) && !empty( $field->data->value ) ? maybe_unserialize( $field->data->value ) : false; + + if ( !empty( $value ) ) { + $this->field_has_data = true; + } else { + $this->field_has_data = false; + } + } +} + +function xprofile_get_profile() { + locate_template( array( 'profile/profile-loop.php'), true ); +} + +function bp_has_profile( $args = '' ) { + global $bp, $profile_template; + + // Only show empty fields if we're on the Dashboard, or we're on a user's profile edit page, + // or this is a registration page + $hide_empty_fields_default = ( !is_network_admin() && !is_admin() && !bp_is_user_profile_edit() && !bp_is_register_page() ); + + $defaults = array( + 'user_id' => $bp->displayed_user->id, + 'profile_group_id' => false, + 'hide_empty_groups' => true, + 'hide_empty_fields' => $hide_empty_fields_default, + 'fetch_fields' => true, + 'fetch_field_data' => true, + 'exclude_groups' => false, // Comma-separated list of profile field group IDs to exclude + 'exclude_fields' => false // Comma-separated list of profile field IDs to exclude + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + $profile_template = new BP_XProfile_Data_Template( $user_id, $profile_group_id, $hide_empty_groups, $fetch_fields, $fetch_field_data, $exclude_groups, $exclude_fields, $hide_empty_fields ); + return apply_filters( 'bp_has_profile', $profile_template->has_groups(), $profile_template ); +} + +function bp_profile_groups() { + global $profile_template; + return $profile_template->profile_groups(); +} + +function bp_the_profile_group() { + global $profile_template; + return $profile_template->the_profile_group(); +} + +function bp_profile_group_has_fields() { + global $profile_template; + return $profile_template->has_fields(); +} + +function bp_field_css_class( $class = false ) { + echo bp_get_field_css_class( $class ); +} + function bp_get_field_css_class( $class = false ) { + global $profile_template; + + $css_classes = array(); + + if ( $class ) + $css_classes[] = sanitize_title( esc_attr( $class ) ); + + // Set a class with the field ID + $css_classes[] = 'field_' . $profile_template->field->id; + + // Set a class with the field name (sanitized) + $css_classes[] = 'field_' . sanitize_title( $profile_template->field->name ); + + if ( $profile_template->current_field % 2 == 1 ) + $css_classes[] = 'alt'; + + $css_classes = apply_filters_ref_array( 'bp_field_css_classes', array( &$css_classes ) ); + + return apply_filters( 'bp_get_field_css_class', ' class="' . implode( ' ', $css_classes ) . '"' ); + } + +function bp_field_has_data() { + global $profile_template; + return $profile_template->field_has_data; +} + +function bp_field_has_public_data() { + global $profile_template; + + if ( $profile_template->field_has_data ) + return true; + + return false; +} + +function bp_the_profile_group_id() { + echo bp_get_the_profile_group_id(); +} + function bp_get_the_profile_group_id() { + global $group; + return apply_filters( 'bp_get_the_profile_group_id', $group->id ); + } + +function bp_the_profile_group_name() { + echo bp_get_the_profile_group_name(); +} + function bp_get_the_profile_group_name() { + global $group; + return apply_filters( 'bp_get_the_profile_group_name', $group->name ); + } + +function bp_the_profile_group_slug() { + echo bp_get_the_profile_group_slug(); +} + function bp_get_the_profile_group_slug() { + global $group; + return apply_filters( 'bp_get_the_profile_group_slug', sanitize_title( $group->name ) ); + } + +function bp_the_profile_group_description() { + echo bp_get_the_profile_group_description(); +} + function bp_get_the_profile_group_description() { + global $group; + echo apply_filters( 'bp_get_the_profile_group_description', $group->description ); + } + +function bp_the_profile_group_edit_form_action() { + echo bp_get_the_profile_group_edit_form_action(); +} + function bp_get_the_profile_group_edit_form_action() { + global $bp, $group; + + return apply_filters( 'bp_get_the_profile_group_edit_form_action', trailingslashit( $bp->displayed_user->domain . $bp->profile->slug . '/edit/group/' . $group->id ) ); + } + +function bp_the_profile_group_field_ids() { + echo bp_get_the_profile_group_field_ids(); +} + function bp_get_the_profile_group_field_ids() { + global $group; + + $field_ids = ''; + foreach ( (array) $group->fields as $field ) + $field_ids .= $field->id . ','; + + return substr( $field_ids, 0, -1 ); + } + +function bp_profile_fields() { + global $profile_template; + return $profile_template->profile_fields(); +} + +function bp_the_profile_field() { + global $profile_template; + return $profile_template->the_profile_field(); +} + +function bp_the_profile_field_id() { + echo bp_get_the_profile_field_id(); +} + function bp_get_the_profile_field_id() { + global $field; + return apply_filters( 'bp_get_the_profile_field_id', $field->id ); + } + +function bp_the_profile_field_name() { + echo bp_get_the_profile_field_name(); +} + function bp_get_the_profile_field_name() { + global $field; + + return apply_filters( 'bp_get_the_profile_field_name', $field->name ); + } + +function bp_the_profile_field_value() { + echo bp_get_the_profile_field_value(); +} + function bp_get_the_profile_field_value() { + global $field; + + $field->data->value = bp_unserialize_profile_field( $field->data->value ); + + return apply_filters( 'bp_get_the_profile_field_value', $field->data->value, $field->type, $field->id ); + } + +function bp_the_profile_field_edit_value() { + echo bp_get_the_profile_field_edit_value(); +} + function bp_get_the_profile_field_edit_value() { + global $field; + + /** + * Check to see if the posted value is different, if it is re-display this + * value as long as it's not empty and a required field. + */ + if ( !isset( $field->data->value ) ) + $field->data->value = ''; + + if ( isset( $_POST['field_' . $field->id] ) && $field->data->value != $_POST['field_' . $field->id] ) { + if ( !empty( $_POST['field_' . $field->id] ) ) + $field->data->value = $_POST['field_' . $field->id]; + else + $field->data->value = ''; + } + + $field_value = isset( $field->data->value ) ? bp_unserialize_profile_field( $field->data->value ) : ''; + + return apply_filters( 'bp_get_the_profile_field_edit_value', $field_value, $field->type, $field->id ); + } + +function bp_the_profile_field_type() { + echo bp_get_the_profile_field_type(); +} + function bp_get_the_profile_field_type() { + global $field; + + return apply_filters( 'bp_the_profile_field_type', $field->type ); + } + +function bp_the_profile_field_description() { + echo bp_get_the_profile_field_description(); +} + function bp_get_the_profile_field_description() { + global $field; + + return apply_filters( 'bp_get_the_profile_field_description', $field->description ); + } + +function bp_the_profile_field_input_name() { + echo bp_get_the_profile_field_input_name(); +} + function bp_get_the_profile_field_input_name() { + global $field; + + $array_box = false; + if ( 'multiselectbox' == $field->type ) + $array_box = '[]'; + + return apply_filters( 'bp_get_the_profile_field_input_name', 'field_' . $field->id . $array_box ); + } + +/** + * bp_the_profile_field_options() + * + * Displays field options HTML for field types of 'selectbox', 'multiselectbox', + * 'radio', 'checkbox', and 'datebox'. + * + * @package BuddyPress Xprofile + * @since 1.1 + * + * @uses bp_get_the_profile_field_options() + * + * @param array $args Specify type for datebox. Allowed 'day', 'month', 'year'. + */ +function bp_the_profile_field_options( $args = '' ) { + echo bp_get_the_profile_field_options( $args ); +} + /** + * bp_get_the_profile_field_options() + * + * Retrieves field options HTML for field types of 'selectbox', 'multiselectbox', + * 'radio', 'checkbox', and 'datebox'. + * + * @package BuddyPress Xprofile + * @since 1.1 + * + * @uses BP_XProfile_Field::get_children() + * @uses BP_XProfile_ProfileData::get_value_byid() + * + * @param array $args Specify type for datebox. Allowed 'day', 'month', 'year'. + */ + function bp_get_the_profile_field_options( $args = '' ) { + global $field; + + $defaults = array( + 'type' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( !method_exists( $field, 'get_children' ) ) + $field = new BP_XProfile_Field( $field->id ); + + $options = $field->get_children(); + + // Setup some defaults + $html = ''; + $selected = ''; + + switch ( $field->type ) { + case 'selectbox': + if ( !$field->is_required ) + $html .= '<option value="">' . /* translators: no option picked in select box */ __( '----', 'buddypress' ) . '</option>'; + + $original_option_values = ''; + $original_option_values = maybe_unserialize( BP_XProfile_ProfileData::get_value_byid( $field->id ) ); + + if ( empty( $original_option_values ) && !empty( $_POST['field_' . $field->id] ) ) + $original_option_values = $_POST['field_' . $field->id]; + + $option_values = (array) $original_option_values; + + for ( $k = 0, $count = count( $options ); $k < $count; ++$k ) { + // Check for updated posted values, but errors preventing them from being saved first time + foreach( $option_values as $i => $option_value ) { + if ( isset( $_POST['field_' . $field->id] ) && $_POST['field_' . $field->id] != $option_value ) { + if ( !empty( $_POST['field_' . $field->id] ) ) + $option_values[$i] = $_POST['field_' . $field->id]; + } + } + $selected = ''; + + // Run the allowed option name through the before_save filter, so we'll be sure to get a match + $allowed_options = xprofile_sanitize_data_value_before_save( $options[$k]->name, false, false ); + + // First, check to see whether the user-entered value matches + if ( in_array( $allowed_options, (array) $option_values ) ) + $selected = ' selected="selected"'; + + // Then, if the user has not provided a value, check for defaults + if ( !is_array( $original_option_values ) && empty( $option_values ) && $options[$k]->is_default_option ) + $selected = ' selected="selected"'; + + $html .= apply_filters( 'bp_get_the_profile_field_options_select', '<option' . $selected . ' value="' . esc_attr( stripslashes( $options[$k]->name ) ) . '">' . esc_attr( stripslashes( $options[$k]->name ) ) . '</option>', $options[$k], $field->id, $selected, $k ); + } + break; + + case 'multiselectbox': + $original_option_values = ''; + $original_option_values = maybe_unserialize( BP_XProfile_ProfileData::get_value_byid( $field->id ) ); + + if ( empty( $original_option_values ) && !empty( $_POST['field_' . $field->id] ) ) + $original_option_values = $_POST['field_' . $field->id]; + + $option_values = (array) $original_option_values; + + for ( $k = 0, $count = count( $options ); $k < $count; ++$k ) { + // Check for updated posted values, but errors preventing them from being saved first time + foreach( $option_values as $i => $option_value ) { + if ( isset( $_POST['field_' . $field->id] ) && $_POST['field_' . $field->id][$i] != $option_value ) { + if ( !empty( $_POST['field_' . $field->id][$i] ) ) + $option_values[] = $_POST['field_' . $field->id][$i]; + } + } + $selected = ''; + + // Run the allowed option name through the before_save filter, so we'll be sure to get a match + $allowed_options = xprofile_sanitize_data_value_before_save( $options[$k]->name, false, false ); + + // First, check to see whether the user-entered value matches + if ( in_array( $allowed_options, (array) $option_values ) ) + $selected = ' selected="selected"'; + + // Then, if the user has not provided a value, check for defaults + if ( !is_array( $original_option_values ) && empty( $option_values ) && $options[$k]->is_default_option ) + $selected = ' selected="selected"'; + + $html .= apply_filters( 'bp_get_the_profile_field_options_multiselect', '<option' . $selected . ' value="' . esc_attr( stripslashes( $options[$k]->name ) ) . '">' . esc_attr( stripslashes( $options[$k]->name ) ) . '</option>', $options[$k], $field->id, $selected, $k ); + } + break; + + case 'radio': + $html .= '<div id="field_' . $field->id . '">'; + $option_value = BP_XProfile_ProfileData::get_value_byid( $field->id ); + + for ( $k = 0, $count = count( $options ); $k < $count; ++$k ) { + // Check for updated posted values, but errors preventing them from being saved first time + if ( isset( $_POST['field_' . $field->id] ) && $option_value != $_POST['field_' . $field->id] ) { + if ( !empty( $_POST['field_' . $field->id] ) ) + $option_value = $_POST['field_' . $field->id]; + } + + // Run the allowed option name through the before_save + // filter, so we'll be sure to get a match + $allowed_options = xprofile_sanitize_data_value_before_save( $options[$k]->name, false, false ); + + $selected = ''; + if ( $option_value == $allowed_options || !empty( $value ) && $value == $allowed_options || ( empty( $option_value ) && $options[$k]->is_default_option ) ) + $selected = ' checked="checked"'; + + $html .= apply_filters( 'bp_get_the_profile_field_options_radio', '<label><input' . $selected . ' type="radio" name="field_' . $field->id . '" id="option_' . $options[$k]->id . '" value="' . esc_attr( stripslashes( $options[$k]->name ) ) . '"> ' . esc_attr( stripslashes( $options[$k]->name ) ) . '</label>', $options[$k], $field->id, $selected, $k ); + } + + $html .= '</div>'; + break; + + case 'checkbox': + $option_values = BP_XProfile_ProfileData::get_value_byid( $field->id ); + $option_values = (array) maybe_unserialize( $option_values ); + + // Check for updated posted values, but errors preventing them from being saved first time + if ( isset( $_POST['field_' . $field->id] ) && $option_values != maybe_serialize( $_POST['field_' . $field->id] ) ) { + if ( !empty( $_POST['field_' . $field->id] ) ) + $option_values = $_POST['field_' . $field->id]; + } + + for ( $k = 0, $count = count( $options ); $k < $count; ++$k ) { + $selected = ''; + + // First, check to see whether the user's saved values + // match the option + for ( $j = 0, $count_values = count( $option_values ); $j < $count_values; ++$j ) { + + // Run the allowed option name through the + // before_save filter, so we'll be sure to get a match + $allowed_options = xprofile_sanitize_data_value_before_save( $options[$k]->name, false, false ); + + if ( $option_values[$j] == $allowed_options || @in_array( $allowed_options, $option_values ) ) { + $selected = ' checked="checked"'; + break; + } + } + + // If the user has not yet supplied a value for this field, + // check to see whether there is a default value available + if ( !is_array( $option_values ) && empty( $option_values ) && !$selected && $options[$k]->is_default_option) { + $selected = ' checked="checked"'; + } + + $html .= apply_filters( 'bp_get_the_profile_field_options_checkbox', '<label><input' . $selected . ' type="checkbox" name="field_' . $field->id . '[]" id="field_' . $options[$k]->id . '_' . $k . '" value="' . esc_attr( stripslashes( $options[$k]->name ) ) . '"> ' . esc_attr( stripslashes( $options[$k]->name ) ) . '</label>', $options[$k], $field->id, $selected, $k ); + } + break; + + case 'datebox': + $date = BP_XProfile_ProfileData::get_value_byid( $field->id ); + + // Set day, month, year defaults + $day = ''; + $month = ''; + $year = ''; + + if ( !empty( $date ) ) { + // If Unix timestamp + if ( is_numeric( $date ) ) { + $day = date( 'j', $date ); + $month = date( 'F', $date ); + $year = date( 'Y', $date ); + + // If MySQL timestamp + } else { + $day = mysql2date( 'j', $date ); + $month = mysql2date( 'F', $date, false ); // Not localized, so that selected() works below + $year = mysql2date( 'Y', $date ); + } + } + + // Check for updated posted values, but errors preventing them from being saved first time + if ( !empty( $_POST['field_' . $field->id . '_day'] ) ) { + if ( $day != $_POST['field_' . $field->id . '_day'] ) + $day = $_POST['field_' . $field->id . '_day']; + } + + if ( !empty( $_POST['field_' . $field->id . '_month'] ) ) { + if ( $month != $_POST['field_' . $field->id . '_month'] ) + $month = $_POST['field_' . $field->id . '_month']; + } + + if ( !empty( $_POST['field_' . $field->id . '_year'] ) ) { + if ( $year != date( "j", $_POST['field_' . $field->id . '_year'] ) ) + $year = $_POST['field_' . $field->id . '_year']; + } + + switch ( $type ) { + case 'day': + $html .= '<option value=""' . selected( $day, '', false ) . '>--</option>'; + + for ( $i = 1; $i < 32; ++$i ) { + $html .= '<option value="' . $i .'"' . selected( $day, $i, false ) . '>' . $i . '</option>'; + } + break; + + case 'month': + $eng_months = array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ); + + $months = array( + __( 'January', 'buddypress' ), + __( 'February', 'buddypress' ), + __( 'March', 'buddypress' ), + __( 'April', 'buddypress' ), + __( 'May', 'buddypress' ), + __( 'June', 'buddypress' ), + __( 'July', 'buddypress' ), + __( 'August', 'buddypress' ), + __( 'September', 'buddypress' ), + __( 'October', 'buddypress' ), + __( 'November', 'buddypress' ), + __( 'December', 'buddypress' ) + ); + + $html .= '<option value=""' . selected( $month, '', false ) . '>------</option>'; + + for ( $i = 0; $i < 12; ++$i ) { + $html .= '<option value="' . $eng_months[$i] . '"' . selected( $month, $eng_months[$i], false ) . '>' . $months[$i] . '</option>'; + } + break; + + case 'year': + $html .= '<option value=""' . selected( $year, '', false ) . '>----</option>'; + + for ( $i = 2037; $i > 1901; $i-- ) { + $html .= '<option value="' . $i .'"' . selected( $year, $i, false ) . '>' . $i . '</option>'; + } + break; + } + + $html = apply_filters( 'bp_get_the_profile_field_datebox', $html, $type, $day, $month, $year, $field->id, $date ); + + break; + } + + return $html; + } + +function bp_the_profile_field_is_required() { + echo bp_get_the_profile_field_is_required(); +} + function bp_get_the_profile_field_is_required() { + global $field; + + // Define locale variable(s) + $retval = false; + + // Super admins can skip required check + if ( is_super_admin() && !is_admin() ) + $retval = false; + + // All other users will use the field's setting + elseif ( isset( $field->is_required ) ) + $retval = $field->is_required; + + return apply_filters( 'bp_get_the_profile_field_is_required', (bool) $retval ); + } + +function bp_unserialize_profile_field( $value ) { + if ( is_serialized($value) ) { + $field_value = maybe_unserialize($value); + $field_value = implode( ', ', $field_value ); + return $field_value; + } + + return $value; +} + +function bp_profile_field_data( $args = '' ) { + echo bp_get_profile_field_data( $args ); +} + function bp_get_profile_field_data( $args = '' ) { + global $bp; + + $defaults = array( + 'field' => false, // Field name or ID. + 'user_id' => $bp->displayed_user->id + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + return apply_filters( 'bp_get_profile_field_data', xprofile_get_field_data( $field, $user_id ) ); + } + +function bp_profile_group_tabs() { + global $bp, $group_name; + + if ( !$groups = wp_cache_get( 'xprofile_groups_inc_empty', 'bp' ) ) { + $groups = BP_XProfile_Group::get( array( 'fetch_fields' => true ) ); + wp_cache_set( 'xprofile_groups_inc_empty', $groups, 'bp' ); + } + + if ( empty( $group_name ) ) + $group_name = bp_profile_group_name(false); + + $tabs = array(); + for ( $i = 0, $count = count( $groups ); $i < $count; ++$i ) { + if ( $group_name == $groups[$i]->name ) + $selected = ' class="current"'; + else + $selected = ''; + + if ( !empty( $groups[$i]->fields ) ) { + $link = $bp->displayed_user->domain . $bp->profile->slug . '/edit/group/' . $groups[$i]->id; + $tabs[] = sprintf( '<li %1$s><a href="%2$s">%3$s</a></li>', $selected, $link, esc_html( $groups[$i]->name ) ); + } + } + + $tabs = apply_filters( 'xprofile_filter_profile_group_tabs', $tabs, $groups, $group_name ); + foreach ( (array) $tabs as $tab ) + echo $tab; + + do_action( 'xprofile_profile_group_tabs' ); +} + +function bp_profile_group_name( $deprecated = true ) { + if ( !$deprecated ) { + return bp_get_profile_group_name(); + } else { + echo bp_get_profile_group_name(); + } +} + function bp_get_profile_group_name() { + if ( !$group_id = bp_action_variable( 1 ) ) + $group_id = 1; + + if ( !is_numeric( $group_id ) ) + $group_id = 1; + + if ( !$group = wp_cache_get( 'xprofile_group_' . $group_id, 'bp' ) ) { + $group = new BP_XProfile_Group($group_id); + wp_cache_set( 'xprofile_group_' . $group_id, $group, 'bp' ); + } + + return apply_filters( 'bp_get_profile_group_name', $group->name ); + } + +function bp_avatar_upload_form() { + global $bp; + + if ( !(int)$bp->site_options['bp-disable-avatar-uploads'] ) + bp_core_avatar_admin( null, $bp->loggedin_user->domain . $bp->profile->slug . '/change-avatar/', $bp->loggedin_user->domain . $bp->profile->slug . '/delete-avatar/' ); + else + _e( 'Avatar uploads are currently disabled. Why not use a <a href="http://gravatar.com" target="_blank">gravatar</a> instead?', 'buddypress' ); +} + +function bp_profile_last_updated() { + global $bp; + + $last_updated = bp_get_profile_last_updated(); + + if ( !$last_updated ) { + _e( 'Profile not recently updated', 'buddypress' ) . '.'; + } else { + echo $last_updated; + } +} + function bp_get_profile_last_updated() { + global $bp; + + $last_updated = bp_get_user_meta( $bp->displayed_user->id, 'profile_last_updated', true ); + + if ( $last_updated ) + return apply_filters( 'bp_get_profile_last_updated', sprintf( __('Profile updated %s', 'buddypress'), bp_core_time_since( strtotime( $last_updated ) ) ) ); + + return false; + } + +function bp_current_profile_group_id() { + echo bp_get_current_profile_group_id(); +} + function bp_get_current_profile_group_id() { + if ( !$profile_group_id = bp_action_variable( 1 ) ) + $profile_group_id = 1; + + return apply_filters( 'bp_get_current_profile_group_id', $profile_group_id ); // admin/profile/edit/[group-id] + } + +function bp_avatar_delete_link() { + echo bp_get_avatar_delete_link(); +} + function bp_get_avatar_delete_link() { + global $bp; + + return apply_filters( 'bp_get_avatar_delete_link', wp_nonce_url( $bp->displayed_user->domain . $bp->profile->slug . '/change-avatar/delete-avatar/', 'bp_delete_avatar_link' ) ); + } + +function bp_get_user_has_avatar() { + global $bp; + + if ( !bp_core_fetch_avatar( array( 'item_id' => $bp->displayed_user->id, 'no_grav' => true ) ) ) + return false; + + return true; +} + +function bp_edit_profile_button() { + global $bp; + + bp_button( array ( + 'id' => 'edit_profile', + 'component' => 'xprofile', + 'must_be_logged_in' => true, + 'block_self' => true, + 'link_href' => trailingslashit( $bp->displayed_user->domain . $bp->profile->slug . '/edit' ), + 'link_class' => 'edit', + 'link_text' => __( 'Edit Profile', 'buddypress' ), + 'link_title' => __( 'Edit Profile', 'buddypress' ), + ) ); +} +?> \ No newline at end of file diff --git a/wp-content/plugins/buddypress/favicon.ico b/wp-content/plugins/buddypress/favicon.ico new file mode 100644 index 0000000..056d2de Binary files /dev/null and b/wp-content/plugins/buddypress/favicon.ico differ diff --git a/wp-content/plugins/buddypress/humans.txt b/wp-content/plugins/buddypress/humans.txt new file mode 100644 index 0000000..c0e6bc1 --- /dev/null +++ b/wp-content/plugins/buddypress/humans.txt @@ -0,0 +1,54 @@ + .$$$$$$$Z$. + .~$$7...........$$$. + .$$...?$$$$$$$$$$Z....$Z. + .Z$..Z$$$$$$$$$$$$$$$$Z:..$$. + ,$..$$$$$$$$$$$$$7...$$$$$?..$. + .$Z .$$$$$$$$$$..?$$.....$$$$$..Z: + .$$.$$$$$$$$$........$$....Z$$$$..Z, + :$.7$$$$$$$$..........$$....$$$$$..$. + .$. $$$$$$$$$...........$....$$$$$$..$. +.$$.$$$$$$$$$$...........$...$$$$$$$$.$. +.$. $$$$$$$$$$ ..........Z..$$$$$$$$$.$$. +.$.,$$$$$$$$$$$.........$$$$Z$$$$$$$$..$. +.Z $$$$$$$$$$$$$$....+$$$$$,,,,~$$$$$..$. +.$.=$$$$$$Z,,,,,?$$$$$,,,,,Z$,,,,$$$$..$. +.$..$$$$$$,,,,,,,,Z$$,,,,,,,,$:,,~$$$.:$. +.$$.$$$$$,,,,,,,,,,,,,,,,,,,,:$,,:$$$.Z. + .$..$$$$,,,,,,,,,,,,,,,,,,,,:$,,,$$..$. + .$$.$$$:,,,,,,,,,,,,,,,,,,,,,Z$$$$+.$. + .$= $$~,,,,,,:::,:,,:,,::,:,$$$$Z.$Z. + .$+.$$$$$$$$$$$$$$$$$$$$$$$$$$:.$$. + .$$..Z$$$$$$$$$$$$$$$$$$$$$Z..$7. + .$...$$$$$$$$$$$$$$$$$$$..Z$. + .Z$=..?Z$$$$$$$$$$$Z...$$. + .$$7.............Z$$. + .7Z$$$$$$$$$$~ + + We are the humans behind BuddyPress + +/* TEAM */ +Name: Andy Peatling +Title: Founding Developer +Twitter: apeatling + +Name: John James Jacoby +Title: Lead Developer +Twitter: jjj +Favorite Food: Pizza + +Name: Boone B. Gorges +Title: Developer +Twitter: boone +Favorite Pudgy Pie Filling: Cherry + +Name: Paul Gibbs +Title: Developer +Twitter: pgibbs +Favourite Food: Pizza + +/* THANKS */ +r-a-y, hnla, mercime, modemlooper, cnorris23 + +/* META */ +Updated: 2011/08/29 +See: http://humanstxt.org/ \ No newline at end of file diff --git a/wp-content/plugins/buddypress/license.txt b/wp-content/plugins/buddypress/license.txt new file mode 100644 index 0000000..8882205 --- /dev/null +++ b/wp-content/plugins/buddypress/license.txt @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/wp-content/plugins/buddypress/readme.txt b/wp-content/plugins/buddypress/readme.txt new file mode 100644 index 0000000..d52e645 --- /dev/null +++ b/wp-content/plugins/buddypress/readme.txt @@ -0,0 +1,128 @@ +=== Plugin Name === +Contributors: apeatling, johnjamesjacoby, MrMaz, DJPaul, boonebgorges +Tags: buddypress, social networking, activity, profiles, messaging, friends, groups, forums, microblogging, twitter, facebook, social, community, networks, networking, cms +Requires at least: 3.3 +Tested up to: 3.4 +Stable tag: 1.5.6 + +Social networking in a box. Build a social network for your company, school, sports team or niche community. + +== Description == + +BuddyPress lets users register on your site and start creating profiles, posting messages, making connections, creating and interacting in groups and much more. A social network in a box, BuddyPress lets you build a social network for your company, school, sports team or niche community. + +<h4>Try the Demo</h4> + +If you're interested in seeing what a default installation of BuddyPress has to offer, try out the BuddyPress Test Drive! This site is a community of BuddyPress users looking to try out and discuss the latest features of BuddyPress. + +<a href="http://testbp.org/">BuddyPress Test Drive</a> + +<h4>Who's Using BuddyPress?</h4> + +More and more BuddyPress powered sites are popping up. You can take a look at some of the best sites on the <a href="http://buddypress.org/showcase/">BuddyPress Showcase</a>. + +<h4>Plugins: Adding So Much More</h4> + +BuddyPress boasts an ever growing array of new features developed by an awesome plugin development community. There are more than 330 BuddyPress plugins available, and the list is growing every day. Check out our list of <a href="http://buddypress.org/extend/recommended-plugins/">popular and recommended plugins</a>; for a full list of plugins, please visit the <a href="http://buddypress.org/extend/plugins/">BuddyPress.org plugins page</a>. You can install any of these plugins automatically, using the plugin installer on your WordPress Dashboard. + +<h4>More Information</h4> + +Visit the <a href="http://buddypress.org/">BuddyPress website</a> for more information about BuddyPress. + +== Installation == + +You can download and install BuddyPress using the built in WordPress plugin installer. If you download BuddyPress manually, make sure it is uploaded to "/wp-content/plugins/buddypress/". + +Activate BuddyPress in the "Plugins" admin panel using the "Activate" link. You'll then see a message asking you to complete the BuddyPress Installation Wizard, which will guide you through configuring your site for BuddyPress. + +--- Discussion Forums --- + +BuddyPress includes full support for discussion forums. Each group created on your site can have its own forum. If you'd like to enable this feature, after completing the Installation Wizard, visit the "Forums Setup" item under the "BuddyPress" menu in your WordPress admin area, and follow the on-screen instructions. + +== Frequently Asked Questions == + += Can I use my existing WordPress theme? = + +Of course! Once you've installed and activated BuddyPress, the Installation Wizard will guide you through the available theme options. You'll be given the option of installing the <a href="http://wordpress.org/extend/plugins/bp-template-pack/">BuddyPress Template Pack</a>, which will help you add BuddyPress compatibility to your existing theme. + +Be sure to also try out the default theme bundled with BuddyPress. It provides all the awesome features of a standard WordPress blog, but also integrates BuddyPress's features in a seamless and beautiful way. The BuddyPress Default theme is a snap to customize, with full support for custom headers and backgrounds and multiple widget areas. It also makes a great starting point for your own <a href="http://codex.buddypress.org/how-to-guides/building-a-buddypress-child-theme/">child theme</a>. + += Will this work on WordPress multisite? = + +Yes! If your WordPress site has multisite enabled, BuddyPress will support the global tracking of blogs, posts and comments. + += Where can I get support? = + +The support forums can be found at <a href="http://buddypress.org/forums/">http://buddypress.org/forums/</a>. + += Where can I find documentation? = + +The documentation codex can be found at <a href="http://codex.buddypress.org/">http://codex.buddypress.org/</a>. + += Where can I report a bug? = + +Report bugs and participate in development at <a href="http://buddypress.trac.wordpress.org/">http://buddypress.trac.wordpress.org</a>. + += Where can I get the bleeding edge version of BuddyPress? = + +Check out the development trunk of BuddyPress via Subversion, from <a href="http://buddypress.svn.wordpress.org/trunk/">http://buddypress.svn.wordpress.org/trunk/</a> + +== Screenshots == + +1. **Activity Streams** - Global, personal and group activity streams with threaded commenting, direct posting, favoriting and @mentions. All with full RSS feeds and email notification support. +2. **Extended Profiles** - Fully editable rofile fields allow you to define the fields users can fill in to describe themselves. Tailor profile fields to suit your audience. +3. **Extensible Groups** - Powerful public, private or hidden groups allow your users to break the discussion down into specific topics. Extend groups with your own custom features using the group extension API. +4. **Friend Connections** - Let your users make connections so they can track the activity of others, or filter on only those users they care about the most. +5. **Private Messaging** - Private messaging will allow your users to talk to each other directly and in private. Not just limited to one-on-one discussions, your users can send messages to multiple recipients. +6. **Discussion Forums** - Full powered discussion forums built directly into groups allow for more conventional in-depth conversations. +7. **WordPress Blogging** - Allow your users to start their own WordPress sites (using WordPress's Multisite feature), and track posts and comments from across your blog network in the activity stream. +8. **User Settings** - Give your users complete control over profile and notification settings. Settings are fully integrated into your theme, and can be disabled by the administrator. + +== Languages == + +BuddyPress is available in more than 20 languages. For more information, check out the <a href="http://codex.buddypress.org/getting-started/translations/">translation page</a> on the BuddyPress Codex. + +== Upgrade Notice == + += 1.5.6 = +* Compatibility with WordPress 3.4 + += 1.5.5 = +* Security upgrade +* Fixes over 10 bugs + += 1.5.4 = +* Fix bug allowing group members that are friends to be invited twice +* Fix unpublished page preview when page is root component + += 1.5.3.1 = +* Fixes bug related to password changes +* See http://codex.buddypress.org/releases/version-1-5-3-1/ + += 1.5.3 = +* Fixes 6 minor bugs/notices +* See http://codex.buddypress.org/releases/version-1-5-3/ + += 1.5.2 = +* Compatibility with WordPress 3.3 +* Fixes 10 minor bugs/notices + += 1.5.1 = +* Fixes over 25 issues + += 1.5 = +See: http://codex.buddypress.org/releases/version-1-5/ + += 1.2.9 = +* Compatibility with WordPress 3.2 + += 1.2.8 = +* Compatibility with WordPress 3.1 + += 1.2.7 = +* Fixes over 10 bugs. + +== Changelog == + +See http://codex.buddypress.org/releases/version-1-5/ for 1.5. +See http://buddypress.org/about/release-history/ for all other versions. diff --git a/wp-content/plugins/buddypress/screenshot-1.gif b/wp-content/plugins/buddypress/screenshot-1.gif new file mode 100644 index 0000000..cd4f07b Binary files /dev/null and b/wp-content/plugins/buddypress/screenshot-1.gif differ diff --git a/wp-content/plugins/buddypress/screenshot-2.gif b/wp-content/plugins/buddypress/screenshot-2.gif new file mode 100644 index 0000000..957ba14 Binary files /dev/null and b/wp-content/plugins/buddypress/screenshot-2.gif differ diff --git a/wp-content/plugins/buddypress/screenshot-3.gif b/wp-content/plugins/buddypress/screenshot-3.gif new file mode 100644 index 0000000..683267d Binary files /dev/null and b/wp-content/plugins/buddypress/screenshot-3.gif differ diff --git a/wp-content/plugins/buddypress/screenshot-4.gif b/wp-content/plugins/buddypress/screenshot-4.gif new file mode 100644 index 0000000..c42946c Binary files /dev/null and b/wp-content/plugins/buddypress/screenshot-4.gif differ diff --git a/wp-content/plugins/buddypress/screenshot-5.gif b/wp-content/plugins/buddypress/screenshot-5.gif new file mode 100644 index 0000000..c8ecbab Binary files /dev/null and b/wp-content/plugins/buddypress/screenshot-5.gif differ diff --git a/wp-content/plugins/buddypress/screenshot-6.gif b/wp-content/plugins/buddypress/screenshot-6.gif new file mode 100644 index 0000000..d96b62b Binary files /dev/null and b/wp-content/plugins/buddypress/screenshot-6.gif differ diff --git a/wp-content/plugins/buddypress/screenshot-7.gif b/wp-content/plugins/buddypress/screenshot-7.gif new file mode 100644 index 0000000..d251ad4 Binary files /dev/null and b/wp-content/plugins/buddypress/screenshot-7.gif differ diff --git a/wp-content/plugins/buddypress/screenshot-8.gif b/wp-content/plugins/buddypress/screenshot-8.gif new file mode 100644 index 0000000..ed1cda2 Binary files /dev/null and b/wp-content/plugins/buddypress/screenshot-8.gif differ diff --git a/wp-content/plugins/bulk-delete/bulk-delete.php b/wp-content/plugins/bulk-delete/bulk-delete.php new file mode 100644 index 0000000..b9df0f3 --- /dev/null +++ b/wp-content/plugins/bulk-delete/bulk-delete.php @@ -0,0 +1,950 @@ +<?php +/* +Plugin Name: Bulk Delete +Plugin Script: bulk-delete.php +Plugin URI: http://sudarmuthu.com/wordpress/bulk-delete +Description: Bulk delete posts from selected categories or tags. Use it with caution. +Donate Link: http://sudarmuthu.com/if-you-wanna-thank-me +Version: 2.1 +License: GPL +Author: Sudar +Author URI: http://sudarmuthu.com/ +Text Domain: bulk-delete + +=== RELEASE NOTES === +2009-02-02 - v0.1 - first version +2009-02-03 - v0.2 - Second release - Fixed issues with pagging +2009-04-05 - v0.3 - Third release - Prevented drafts from deleted when only posts are selected +2009-07-05 - v0.4 - Fourth release - Added option to delete by date. +2009-07-21 - v0.5 - Fifth release - Added option to delete all pending posts. +2009-07-22 - v0.6 - Sixth release - Added option to delete all scheduled posts. +2010-02-21 - v0.7 - Added an option to delete posts directly or send them to trash and support for translation. +2010-03-17 - v0.8 - Added support for private posts. +2010-06-19 - v1.0 - Proper handling of limits. +2011-01-22 - v1.1 - Added support to delete posts by custom taxonomies +2011-02-06 - v1.2 - Added some optimization to handle huge number of posts in underpowered servers +2011-05-11 - v1.3 - Added German translations +2011-08-25 - v1.4 - Added Turkish translations +2011-11-13 - v1.5 - Added Spanish translations +2011-11-28 - v1.6 - Added Italian translations +2012-01-12 - v1.7 - Added Bulgarian translations +2012-01-31 - v1.8 - Added roles and capabilities for menu +2012-03-16 - v1.9 - Added support for deleting by permalink. Credit Martin Capodici + - Fixed issues with translations + - Added Rusian translations +2012-04-01 - v2.0 (10 hours) - Fixed a major issue in how dates were handled. + - Major UI revamp + - Added debug information and support urls +2012-04-07 - v2.1 (1 hour) - Fixed CSS issues in IE. + - Added Lithuanian translations + +*/ + +/* Copyright 2009 Sudar Muthu (email : sudar@sudarmuthu.com) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/** + * Request Handler + */ + +if (!function_exists('smbd_request_handler')) { + function smbd_request_handler() { + global $wpdb; + + // Load localization domain + load_plugin_textdomain( 'bulk-delete', false, dirname(plugin_basename(__FILE__)) . '/languages' ); + + if (isset($_POST['smbd_action'])) { + + $wp_query = new WP_Query; + check_admin_referer( 'bulk-delete-posts'); + + switch($_POST['smbd_action']) { + + case "bulk-delete-cats": + // delete by cats + $selected_cats = $_POST['smbd_cats']; + if ($_POST['smbd_cats_restrict'] == "true") { + + add_filter ('posts_where', 'smbd_cats_by_days'); + } + + $private = $_POST['smbd_cats_private']; + + if ($private == 'true') { + $options = array('category__in'=>$selected_cats,'post_status'=>'private', 'post_type'=>'post'); + } else { + $options = array('category__in'=>$selected_cats,'post_status'=>'publish', 'post_type'=>'post'); + } + + $limit_to = absint($_POST['smbd_cats_limits_to']); + + if ($limit_to > 0) { + $options['showposts'] = $limit_to; + } else { + $options['nopaging'] = 'true'; + } + + $force_delete = $_POST['smbd_cats_force_delete']; + + if ($force_delete == 'true') { + $force_delete = true; + } else { + $force_delete = false; + } + + $posts = $wp_query->query($options); + foreach ($posts as $post) { + wp_delete_post($post->ID, $force_delete); + } + + break; + + case "bulk-delete-tags": + // delete by tags + $selected_tags = $_POST['smbd_tags']; + if ($_POST['smbd_tags_restrict'] == "true") { + add_filter ('posts_where', 'smbd_tags_by_days'); + } + + $private = $_POST['smbd_tags_private']; + + if ($private == 'true') { + $options = array('tag__in'=>$selected_tags,'post_status'=>'private', 'post_type'=>'post'); + } else { + $options = array('tag__in'=>$selected_tags,'post_status'=>'publish', 'post_type'=>'post'); + } + + $limit_to = absint($_POST['smbd_tags_limits_to']); + + if ($limit_to > 0) { + $options['showposts'] = $limit_to; + } else { + $options['nopaging'] = 'true'; + } + + $force_delete = $_POST['smbd_tags_force_delete']; + + if ($force_delete == 'true') { + $force_delete = true; + } else { + $force_delete = false; + } + + $posts = $wp_query->query($options); + + foreach ($posts as $post) { + wp_delete_post($post->ID, $force_delete); + } + + break; + + case "bulk-delete-taxs": + // delete by taxs + $selected_taxs = $_POST['smbd_taxs']; + + foreach ($selected_taxs as $selected_tax) { + $postids = smbd_get_tax_post($selected_tax); + + if ($_POST['smbd_taxs_restrict'] == "true") { + add_filter ('posts_where', 'smbd_taxs_by_days'); + } + + $private = $_POST['smbd_taxs_private']; + + if ($private == 'true') { + $options = array('post__in'=>$postids,'post_status'=>'private', 'post_type'=>'post'); + } else { + $options = array('post__in'=>$postids,'post_status'=>'publish', 'post_type'=>'post'); + } + + $limit_to = absint($_POST['smbd_taxs_limits_to']); + + if ($limit_to > 0) { + $options['showposts'] = $limit_to; + } else { + $options['nopaging'] = 'true'; + } + + $force_delete = $_POST['smbd_taxs_force_delete']; + + if ($force_delete == 'true') { + $force_delete = true; + } else { + $force_delete = false; + } + + $posts = $wp_query->query($options); + foreach ($posts as $post) { + wp_delete_post($post->ID, $force_delete); + } + } + + break; + + case "bulk-delete-special": + $options = array(); + + $limit_to = absint($_POST['smbd_special_limit_to']); + + if ($limit_to > 0) { + $options['showposts'] = $limit_to; + } else { + $options['nopaging'] = 'true'; + } + + $force_delete = $_POST['smbd_special_force_delete']; + if ($force_delete == 'true') { + $force_delete = true; + } else { + $force_delete = false; + } + + // Drafts + if ("drafs" == $_POST['smbd_drafs']) { + $options['post_status'] = 'draft'; + $drafts = $wp_query->query($options); + + foreach ($drafts as $draft) { + wp_delete_post($draft->ID, $force_delete); + } + } + + // Revisions + if ("revisions" == $_POST['smbd_revisions']) { + $revisions = $wpdb->get_results($wpdb->prepare("select ID from $wpdb->posts where post_type = 'revision'")); + + foreach ($revisions as $revision) { + wp_delete_post($revision->ID, $force_delete); + } + } + + // Pending Posts + if ("pending" == $_POST['smbd_pending']) { + $pendings = $wpdb->get_results($wpdb->prepare("select ID from $wpdb->posts where post_status = 'pending'")); + + foreach ($pendings as $pending) { + wp_delete_post($pending->ID, $force_delete); + } + } + + // Future Posts + if ("future" == $_POST['smbd_future']) { + $futures = $wpdb->get_results($wpdb->prepare("select ID from $wpdb->posts where post_status = 'future'")); + + foreach ($futures as $future) { + wp_delete_post($future->ID, $force_delete); + } + } + + // Private Posts + if ("private" == $_POST['smbd_private']) { + $privates = $wpdb->get_results($wpdb->prepare("select ID from $wpdb->posts where post_status = 'private'")); + + foreach ($privates as $private) { + wp_delete_post($private->ID, $force_delete); + } + } + + // Pages + if ("pages" == $_POST['smbd_pages']) { + $options['post_type'] = 'page'; + $pages = $wp_query->query($options); + + foreach ($pages as $page) { + wp_delete_post($page->ID, $force_delete); + } + } + + // Specific Pages + if ("specificpages" == $_POST['smdb_specific_pages']) { + $urls = preg_split( '/\r\n|\r|\n/', $_POST['smdb_specific_pages_urls'] ); + foreach ($urls as $url) { + $checkedurl = $url; + if (substr($checkedurl ,0,1) == '/') { + $checkedurl = get_site_url() . $checkedurl ; + } + $postid = url_to_postid( $checkedurl ); + wp_delete_post($postid, $force_delete); + } + } + + break; + } + + // hook the admin notices action + add_action( 'admin_notices', 'smbd_deleted_notice', 9 ); + } + } +} + +/** + * Show deleted notice messages + */ +if (!function_exists('smbd_deleted_notice')) { + function smbd_deleted_notice() { + echo "<div class = 'updated'><p>" . __("All the selected posts have been successfully deleted.", 'bulk-delete') . "</p></div>"; + } +} + +/** + * Show the Admin page + */ +if (!function_exists('smbd_displayOptions')) { + function smbd_displayOptions() { + global $wpdb; +?> + <div class="updated fade" style="background:#ff0;text-align:center;color: red;"><p><strong><?php _e("WARNING: Posts deleted once cannot be retrieved back. Use with caution.", 'bulk-delete'); ?></strong></p></div> + + <div class="wrap"> + <?php screen_icon(); ?> + <h2>Bulk Delete</h2> + + <div id = "poststuff" style = "float:left; width:75%"> + <div class = "postbox"> + <div class = "handlediv"> + <br> + </div> + <h3 class = "hndle"><span><?php _e("By Type", 'bulk-delete'); ?></span></h3> + <div class = "inside"> + <h4><?php _e("Select the posts which you want to delete", 'bulk-delete'); ?></h4> + + <form name="smbd_form" id = "smbd_misc_form" + action="<?php echo get_bloginfo("wpurl"); ?>/wp-admin/options-general.php?page=bulk-delete.php" method="post" + onsubmit="return bd_validateForm(this);"> + +<?php + $wp_query = new WP_Query; + $drafts = $wpdb->get_var($wpdb->prepare("select count(*) from $wpdb->posts where post_status = 'draft'")); + $revisions = $wpdb->get_var($wpdb->prepare("select count(*) from $wpdb->posts where post_type = 'revision'")); + $pending = $wpdb->get_var($wpdb->prepare("select count(*) from $wpdb->posts where post_status = 'pending'")); + $future = $wpdb->get_var($wpdb->prepare("select count(*) from $wpdb->posts where post_status = 'future'")); + $private = $wpdb->get_var($wpdb->prepare("select count(*) from $wpdb->posts where post_status = 'private'")); + $pages = $wpdb->get_var($wpdb->prepare("select count(*) from $wpdb->posts where post_type = 'page'")); +?> + <fieldset class="options"> + <table class="optiontable"> + <tr> + <td scope="row" > + <input name="smbd_drafs" id ="smbd_drafs" value = "drafs" type = "checkbox" /> + <label for="smbd_drafs"><?php _e("All Drafts", 'bulk-delete'); ?> (<?php echo $drafts . " "; _e("Drafts", 'bulk-delete'); ?>)</label> + </td> + </tr> + + <tr> + <td> + <input name="smbd_revisions" id ="smbd_revisions" value = "revisions" type = "checkbox" /> + <label for="smbd_revisions"><?php _e("All Revisions", 'bulk-delete'); ?> (<?php echo $revisions . " "; _e("Revisions", 'bulk-delete'); ?>)</label> + </td> + </tr> + + <tr> + <td> + <input name="smbd_pending" id ="smbd_pending" value = "pending" type = "checkbox" /> + <label for="smbd_pending"><?php _e("All Pending posts", 'bulk-delete'); ?> (<?php echo $pending . " "; _e("Posts", 'bulk-delete'); ?>)</label> + </td> + </tr> + + <tr> + <td> + <input name="smbd_future" id ="smbd_future" value = "future" type = "checkbox" /> + <label for="smbd_future"><?php _e("All scheduled posts", 'bulk-delete'); ?> (<?php echo $future . " "; _e("Posts", 'bulk-delete'); ?>)</label> + </td> + </tr> + + <tr> + <td> + <input name="smbd_private" id ="smbd_private" value = "private" type = "checkbox" /> + <label for="smbd_private"><?php _e("All private posts", 'bulk-delete'); ?> (<?php echo $private . " "; _e("Posts", 'bulk-delete'); ?>)</label> + </td> + </tr> + + <tr> + <td> + <input name="smbd_pages" value = "pages" type = "checkbox" /> + <label for="smbd_pages"><?php _e("All Pages", 'bulk-delete'); ?> (<?php echo $pages . " "; _e("Pages", 'bulk-delete'); ?>)</label> + </td> + </tr> + + <tr> + <td scope="row"> + <input name="smdb_specific_pages" id="smdb_specific_pages" value = "specificpages" type = "checkbox" /> + <label for="smdb_specific_pages"><?php _e("Delete these specific pages (Enter one post url (not post ids) per line)", 'bulk-delete'); ?></label> + <br/> + <textarea style="width: 450px; height: 80px;" id="smdb_specific_pages_urls" name="smdb_specific_pages_urls" rows="5" columns="80" ></textarea> + </td> + </tr> + + <tr> + <td> + <h4><?php _e("Choose your filtering options", 'bulk-delete'); ?></h4> + </td> + </tr> + + <tr> + <td scope="row"> + <input name="smbd_special_force_delete" value = "false" type = "radio" checked="checked" /> <?php _e('Move to Trash', 'bulk-delete'); ?> + <input name="smbd_special_force_delete" value = "true" type = "radio" /> <?php _e('Delete permanently', 'bulk-delete'); ?> + </td> + </tr> + + <tr> + <td scope="row"> + <input name="smbd_special_limit" id="smbd_special_limit" value = "true" type = "checkbox" onclick="toggle_limit_restrict('special');" /> + <?php _e("Only delete first ", 'bulk-delete');?> + <input type ="textbox" name="smbd_special_limit_to" id="smbd_special_limit_to" disabled value ="0" maxlength="4" size="4" /><?php _e("posts.", 'bulk-delete');?> + <?php _e("Use this option if there are more than 1000 posts and the script timesout.", 'bulk-delete') ?> + </td> + </tr> + + </table> + </fieldset> + + <p class="submit"> + <input type="submit" name="submit" class="button-primary" value="<?php _e("Bulk Delete ", 'bulk-delete') ?>»"> + </p> + + <?php wp_nonce_field('bulk-delete-posts'); ?> + + <input type="hidden" name="smbd_action" value="bulk-delete-special" /> + </form> + </div> + </div> + + <div class = "postbox"> + <div class = "handlediv"> + <br> + </div> + <h3 class = "hndle"><span><?php _e("By Category", 'bulk-delete'); ?></span></h3> + <div class = "inside"> + <h4><?php _e("Select the categories whose post you want to delete", 'bulk-delete'); ?></h4> + + <form name="smbd_form" id = "smbd_cat_form" + action="<?php echo get_bloginfo("wpurl"); ?>/wp-admin/options-general.php?page=bulk-delete.php" method="post" onsubmit="return bd_validateForm(this);"> + + <fieldset class="options"> + <table class="optiontable"> +<?php + $categories = get_categories(array('hide_empty' => false)); + foreach ($categories as $category) { +?> + <tr> + <td scope="row" > + <input name="smbd_cats[]" value = "<?php echo $category->cat_ID; ?>" type = "checkbox" /> + </td> + <td> + <label for="smbd_cats"><?php echo $category->cat_name; ?> (<?php echo $category->count . " "; _e("Posts", 'bulk-delete'); ?>)</label> + </td> + </tr> +<?php + } +?> + <tr> + <td scope="row" > + <input name="smbd_cats_all" id ="smbd_cats_all" value = "-1" type = "checkbox" onclick="bd_checkAll(document.getElementById('smbd_cat_form'));" /> + </td> + <td> + <label for="smbd_cats_all"><?php _e("All Categories", 'bulk-delete') ?></label> + </td> + </tr> + + <tr> + <td colspan="2"> + <h4><?php _e("Choose your filtering options", 'bulk-delete'); ?></h4> + </td> + </tr> + + <tr> + <td scope="row"> + <input name="smbd_cats_restrict" id="smbd_cats_restrict" value = "true" type = "checkbox" onclick="toggle_date_restrict('cats');" /> + </td> + <td> + <?php _e("Only restrict to posts which are ", 'bulk-delete');?> + <select name="smbd_cats_op" id="smbd_cats_op" disabled> + <option value ="<"><?php _e("older than", 'bulk-delete');?></option> + <option value =">"><?php _e("posted within last", 'bulk-delete');?></option> + </select> + <input type ="textbox" name="smbd_cats_days" id="smbd_cats_days" disabled value ="0" maxlength="4" size="4" /><?php _e("days", 'bulk-delete');?> + </td> + </tr> + + <tr> + <td scope="row" colspan="2"> + <input name="smbd_cats_force_delete" value = "false" type = "radio" checked="checked" /> <?php _e('Move to Trash', 'bulk-delete'); ?> + <input name="smbd_cats_force_delete" value = "true" type = "radio" /> <?php _e('Delete permanently', 'bulk-delete'); ?> + </td> + </tr> + + <tr> + <td scope="row" colspan="2"> + <input name="smbd_cats_private" value = "false" type = "radio" checked="checked" /> <?php _e('Public posts', 'bulk-delete'); ?> + <input name="smbd_cats_private" value = "true" type = "radio" /> <?php _e('Private Posts', 'bulk-delete'); ?> + </td> + </tr> + + <tr> + <td scope="row"> + <input name="smbd_cats_limit" id="smbd_cats_limit" value = "true" type = "checkbox" onclick="toggle_limit_restrict('cats');" /> + </td> + <td> + <?php _e("Only delete first ", 'bulk-delete');?> + <input type ="textbox" name="smbd_cats_limit_to" id="smbd_cats_limit_to" disabled value ="0" maxlength="4" size="4" /><?php _e("posts.", 'bulk-delete');?> + <?php _e("Use this option if there are more than 1000 posts and the script timesout.", 'bulk-delete') ?> + </td> + </tr> + + </table> + </fieldset> + <p class="submit"> + <input type="submit" name="submit" class="button-primary" value="<?php _e("Bulk Delete ", 'bulk-delete') ?>»"> + </p> + +<?php wp_nonce_field('bulk-delete-posts'); ?> + + <input type="hidden" name="smbd_action" value="bulk-delete-cats" /> + </form> + </div> + </div> +<?php + $tags = get_tags(); + if (count($tags) > 0) { +?> + <div class = "postbox"> + <div class = "handlediv"> + <br> + </div> + + <h3 class = "hndle"><span><?php _e("By Tags", 'bulk-delete'); ?></span></h3> + + <div class = "inside"> + <h4><?php _e("Select the tags whose post you want to delete", 'bulk-delete') ?></h4> + + <form name="smbd_form" id = "smbd_tag_form" + action="<?php echo get_bloginfo("wpurl"); ?>/wp-admin/options-general.php?page=bulk-delete.php" method="post" + onsubmit="return bd_validateForm(this);"> + + <fieldset class="options"> + <table class="optiontable"> + <?php + foreach ($tags as $tag) { + ?> + <tr> + <td scope="row" > + <input name="smbd_tags[]" value = "<?php echo $tag->term_id; ?>" type = "checkbox" /> + </td> + <td> + <label for="smbd_tags"><?php echo $tag->name; ?> (<?php echo $tag->count . " "; _e("Posts", 'bulk-delete'); ?>)</label> + </td> + </tr> + <?php + } + ?> + <tr> + <td scope="row" > + <input name="smbd_tags_all" id ="smbd_tags_all" value = "-1" type = "checkbox" onclick="bd_checkAll(document.getElementById('smbd_tag_form'));" /> + </td> + <td> + <label for="smbd_tags_all"><?php _e("All Tags", 'bulk-delete') ?></label> + </td> + </tr> + + <tr> + <td colspan="2"> + <h4><?php _e("Choose your filtering options", 'bulk-delete'); ?></h4> + </td> + </tr> + + <tr> + <td scope="row"> + <input name="smbd_tags_restrict" id ="smbd_tags_restrict" value = "true" type = "checkbox" onclick="toggle_date_restrict('tags');" /> + </td> + <td> + <?php _e("Only restrict to posts which are ", 'bulk-delete');?> + <select name="smbd_tags_op" id="smbd_tags_op" disabled> + <option value ="<"><?php _e("older than", 'bulk-delete');?></option> + <option value =">"><?php _e("posted within last", 'bulk-delete');?></option> + </select> + <input type ="textbox" name="smbd_tags_days" id ="smbd_tags_days" value ="0" maxlength="4" size="4" disabled /><?php _e("days", 'bulk-delete');?> + </td> + </tr> + + <tr> + <td scope="row" colspan="2"> + <input name="smbd_tags_force_delete" value = "false" type = "radio" checked="checked" /> <?php _e('Move to Trash', 'bulk-delete'); ?> + <input name="smbd_tags_force_delete" value = "true" type = "radio" /> <?php _e('Delete permanently', 'bulk-delete'); ?> + </td> + </tr> + + <tr> + <td scope="row" colspan="2"> + <input name="smbd_tags_private" value = "false" type = "radio" checked="checked" /> <?php _e('Public posts', 'bulk-delete'); ?> + <input name="smbd_tags_private" value = "true" type = "radio" /> <?php _e('Private Posts', 'bulk-delete'); ?> + </td> + </tr> + + <tr> + <td scope="row"> + <input name="smbd_tags_limit" id="smbd_tags_limit" value = "true" type = "checkbox" onclick="toggle_limit_restrict('tags');" /> + </td> + <td> + <?php _e("Only delete first ", 'bulk-delete');?> + <input type ="textbox" name="smbd_tags_limit_to" id="smbd_tags_limit_to" disabled value ="0" maxlength="4" size="4" /><?php _e("posts.", 'bulk-delete');?> + <?php _e("Use this option if there are more than 1000 posts and the script timesout.", 'bulk-delete') ?> + </td> + </tr> + + </table> + </fieldset> + <p class="submit"> + <input type="submit" name="submit" class="button-primary" value="<?php _e("Bulk Delete ", 'bulk-delete') ?>»"> + </p> + + <?php wp_nonce_field('bulk-delete-posts'); ?> + + <input type="hidden" name="smbd_action" value="bulk-delete-tags" /> + </form> + </div> + </div> +<?php + } +?> + +<?php + $customTaxs = get_taxonomies(); + if (count($customTaxs) > 0) { +?> + <div class = "postbox"> + <div class = "handlediv"> + <br> + </div> + <h3 class = "hndle"><span><?php _e("By Taxonomies", 'bulk-delete'); ?></span></h3> + <div class = "inside"> + <h4><?php _e("Select the taxonomies whose post you want to delete", 'bulk-delete') ?></h4> + + <form name="smbd_form" id = "smbd_tax_form" + action="<?php echo get_bloginfo("wpurl"); ?>/wp-admin/options-general.php?page=bulk-delete.php" method="post" + onsubmit="return bd_validateForm(this);"> + + <fieldset class="options"> + <table class="optiontable"> + <?php + foreach ($customTaxs as $taxs) { + + $posts = smbd_get_tax_post($taxs); + ?> + <tr> + <td scope="row" > + <input name="smbd_taxs[]" value = "<?php echo $taxs; ?>" type = "checkbox" /> + </td> + <td> + <label for="smbd_taxs"><?php echo $taxs; ?> (<?php echo count($posts) . " "; _e("Posts", 'bulk-delete'); ?>)</label> + </td> + </tr> + <?php + } + ?> + <tr> + <td scope="row" > + <input name="smbd_taxs_all" id ="smbd_taxs_all" value = "-1" type = "checkbox" onclick="bd_checkAll(document.getElementById('smbd_tax_form'));" /> + </td> + <td> + <label for="smbd_taxs_all"><?php _e("All Taxonomies", 'bulk-delete') ?></label> + </td> + </tr> + + <tr> + <td colspan="2"> + <h4><?php _e("Choose your filtering options", 'bulk-delete'); ?></h4> + </td> + </tr> + + <tr> + <td scope="row"> + <input name="smbd_taxs_restrict" id ="smbd_taxs_restrict" value = "true" type = "checkbox" onclick="toggle_date_restrict('taxs');" /> + </td> + <td> + <?php _e("Only restrict to posts which are ", 'bulk-delete');?> + <select name="smbd_taxs_op" id="smbd_taxs_op" disabled> + <option value ="<"><?php _e("older than", 'bulk-delete');?></option> + <option value =">"><?php _e("posted within last", 'bulk-delete');?></option> + </select> + <input type ="textbox" name="smbd_taxs_days" id ="smbd_taxs_days" value ="0" maxlength="4" size="4" disabled /><?php _e("days", 'bulk-delete');?> + </td> + </tr> + + <tr> + <td scope="row" colspan="2"> + <input name="smbd_taxs_force_delete" value = "false" type = "radio" checked="checked" /> <?php _e('Move to Trash', 'bulk-delete'); ?> + <input name="smbd_taxs_force_delete" value = "true" type = "radio" /> <?php _e('Delete permanently', 'bulk-delete'); ?> + </td> + </tr> + + <tr> + <td scope="row" colspan="2"> + <input name="smbd_taxs_private" value = "false" type = "radio" checked="checked" /> <?php _e('Public posts', 'bulk-delete'); ?> + <input name="smbd_taxs_private" value = "true" type = "radio" /> <?php _e('Private Posts', 'bulk-delete'); ?> + </td> + </tr> + + <tr> + <td scope="row"> + <input name="smbd_taxs_limit" id="smbd_taxs_limit" value = "true" type = "checkbox" onclick="toggle_limit_restrict('taxs');" /> + </td> + <td> + <?php _e("Only delete first ", 'bulk-delete');?> + <input type ="textbox" name="smbd_taxs_limit_to" id="smbd_taxs_limit_to" disabled value ="0" maxlength="4" size="4" /><?php _e("posts.", 'bulk-delete');?> + <?php _e("Use this option if there are more than 1000 posts and the script timesout.", 'bulk-delete') ?> + </td> + </tr> + + </table> + </fieldset> + <p class="submit"> + <input type="submit" class="button-primary" name="submit" value="<?php _e("Bulk Delete ", 'bulk-delete') ?>»"> + </p> + + <?php wp_nonce_field('bulk-delete-posts'); ?> + + <input type="hidden" name="smbd_action" value="bulk-delete-taxs" /> + </form> + </div> + </div> +<?php + } +?> + <div class = "postbox"> + <div class = "handlediv"> + <br> + </div> + <h3 class = "hndle"><span><?php _e('Debug Information', 'bulk-delete'); ?></span></h3> + <div class = "inside"> + <p><?php _e('If you are seeing a blank page after clicking the Bulk Delete button, then ', 'bulk-delete'); ?><a href = "http://sudarmuthu.com/wordpress/bulk-delete#faq-white-screen"><?php _e('check out this FAQ', 'bulk-delete');?></a>. + <?php _e('You also need need the following debug information.', 'bulk-delete'); ?></p> + <table cellspacing="10"> + <tr> + <th align = "right"><?php _e('Available memory size ', 'bulk-delete');?></th> + <td><?php echo ini_get( 'memory_limit' ); ?></td> + </tr> + <tr> + <th align = "right"><?php _e('Script time out ', 'bulk-delete');?></th> + <td><?php echo ini_get( 'max_execution_time' ); ?></td> + </tr> + <tr> + <th align = "right"><?php _e('Script input time ', 'bulk-delete'); ?></th> + <td><?php echo ini_get( 'max_input_time' ); ?></td> + </tr> + </table> + </div> + </div> + + <p><em><?php _e("If you are looking to move posts in bulk, instead of deleting then try out my ", 'bulk-delete'); ?> <a href = "http://sudarmuthu.com/wordpress/bulk-move"><?php _e("Bulk Move Plugin", 'bulk-delete');?></a>.</em></p> + </div> + + <iframe frameBorder="0" height = "950" src = "http://sudarmuthu.com/projects/wordpress/bulk-delete/sidebar.php?color=<?php echo get_user_option('admin_color'); ?>"></iframe> + + </div> +<?php + + // Display credits in Footer + add_action( 'in_admin_footer', 'smbd_admin_footer' ); + } +} + +/** + * function to filter posts by days + * @param <type> $where + * @return <type> + */ +if (!function_exists('smbd_cats_by_days ')) { + function smbd_cats_by_days ($where = '') { + $cats_op = $_POST['smbd_cats_op']; + $cats_days = $_POST['smbd_cats_days']; + + remove_filter('posts_where', 'smbd_cats_by_days'); + + $where .= " AND post_date $cats_op '" . date('y-m-d', strtotime("-$cats_days days")) . "'"; + return $where; + } +} + +/** + * function to filter posts by days + * @param <type> $where + * @return <type> + */ +if (!function_exists('smbd_tags_by_days ')) { + function smbd_tags_by_days ($where = '') { + $tags_op = $_POST['smbd_tags_op']; + $tags_days = $_POST['smbd_tags_days']; + + remove_filter('posts_where', 'smbd_tags_by_days'); + + $where .= " AND post_date $tags_op '" . date('y-m-d', strtotime("-$tags_days days")) . "'"; + return $where; + } +} + +/** + * function to filter custom taxonomy posts by days + * @param <type> $where + * @return <type> + */ +if (!function_exists('smbd_taxs_by_days ')) { + function smbd_taxs_by_days ($where = '') { + $taxs_op = $_POST['smbd_taxs_op']; + $taxs_days = $_POST['smbd_taxs_days']; + + remove_filter('posts_where', 'smbd_taxs_by_days'); + + $where .= " AND post_date $taxs_op '" . date('y-m-d', strtotime("-$taxs_days days")) . "'"; + return $where; + } +} + +/** + * Return the posts for a taxonomy + * + * @param <type> $tax + * @return <type> + */ +if (!function_exists('smbd_get_tax_post')) { + function smbd_get_tax_post($tax) { + global $wpdb; + + $query = $wpdb->prepare("select object_id from {$wpdb->prefix}term_relationships where term_taxonomy_id in (select term_taxonomy_id from {$wpdb->prefix}term_taxonomy where taxonomy = '$tax')"); + $post_ids_result = $wpdb->get_results($query); + + $postids = array(); + foreach ($post_ids_result as $post_id_result) { + $postids[] = $post_id_result->object_id; + } + + return $postids; + } +} + +/** + * Add navigation menu + */ +if(!function_exists('smbd_add_menu')) { + function smbd_add_menu() { + //Add a submenu to Manage + $page = add_options_page("Bulk Delete", "Bulk Delete", 'manage_options', basename(__FILE__), "smbd_displayOptions"); + } +} + +/** + * Adds the settings link in the Plugin page. Based on http://striderweb.com/nerdaphernalia/2008/06/wp-use-action-links/ + * @staticvar <type> $this_plugin + * @param <type> $links + * @param <type> $file + */ +if (!function_exists('smbd_filter_plugin_actions')) { + function smbd_filter_plugin_actions($links, $file) { + static $this_plugin; + if( ! $this_plugin ) $this_plugin = plugin_basename(__FILE__); + + if( $file == $this_plugin ) { + $settings_link = '<a href="options-general.php?page=bulk-delete.php">' . _('Manage') . '</a>'; + array_unshift( $links, $settings_link ); // before other links + } + return $links; + } +} + +/** + * Adds Footer links. Based on http://striderweb.com/nerdaphernalia/2008/06/give-your-wordpress-plugin-credit/ + */ +if (!function_exists('smbd_admin_footer')) { +function smbd_admin_footer() { + $plugin_data = get_plugin_data( __FILE__ ); + printf('%1$s ' . __("plugin", 'bulk-delete') .' | ' . __("Version", 'bulk-delete') . ' %2$s | '. __('by', 'bulk-delete') . ' %3$s<br />', $plugin_data['Title'], $plugin_data['Version'], $plugin_data['Author']); +?> +<script type="text/javascript"> + +/** + * Toggle closing of different sections + * + */ +jQuery(document).ready( function() { + jQuery('.postbox h3').click( function() { + jQuery(jQuery(this).parent().get(0)).toggleClass('closed'); + }); +}); + +/** +* Check All Checkboxes +*/ +function bd_checkAll(form) { + for (i = 0, n = form.elements.length; i < n; i++) { + if(form.elements[i].type == "checkbox" && !(form.elements[i].getAttribute('onclick',2))) { + if(form.elements[i].checked == true) + form.elements[i].checked = false; + else + form.elements[i].checked = true; + } + } +} + +function toggle_date_restrict(el) { + if (jQuery("#smbd_" + el + "_restrict").is(":checked")) { + jQuery("#smbd_" + el + "_op").removeAttr('disabled'); + jQuery("#smbd_" + el + "_days").removeAttr('disabled'); + } else { + jQuery("#smbd_" + el + "_op").attr('disabled', 'true'); + jQuery("#smbd_" + el + "_days").attr('disabled', 'true'); + } +} + +function toggle_limit_restrict(el) { + if (jQuery("#smbd_" + el + "_limit").is(":checked")) { + jQuery("#smbd_" + el + "_limit_to").removeAttr('disabled'); + } else { + jQuery("#smbd_" + el + "_limit_to").attr('disabled', 'true'); + } +} + +/** +* Validate Form +*/ +function bd_validateForm(form) { + var valid = false; + for (i = 0, n = form.elements.length; i < n; i++) { + if(form.elements[i].type == "checkbox" && !(form.elements[i].getAttribute('onclick',2))) { + if(form.elements[i].checked == true) { + valid = true; + break; + } + } + } + + if (valid) { + return confirm("<?php _e('Are you sure you want to delete all the selected posts', 'bulk-delete'); ?>"); + } else { + alert ("<?php _e('Please select at least one', 'bulk-delete'); ?>"); + return false; + } +} +</script> + +<?php +} +} + +add_filter( 'plugin_action_links', 'smbd_filter_plugin_actions', 10, 2 ); +add_action('admin_menu', 'smbd_add_menu'); +add_action('admin_init', 'smbd_request_handler'); +?> diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-de_DE.mo b/wp-content/plugins/bulk-delete/languages/bulk-delete-de_DE.mo new file mode 100644 index 0000000..d1c92e3 Binary files /dev/null and b/wp-content/plugins/bulk-delete/languages/bulk-delete-de_DE.mo differ diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-de_DE.po b/wp-content/plugins/bulk-delete/languages/bulk-delete-de_DE.po new file mode 100644 index 0000000..77ac0f7 --- /dev/null +++ b/wp-content/plugins/bulk-delete/languages/bulk-delete-de_DE.po @@ -0,0 +1,271 @@ +# Translation of the WordPress plugin Bulk Delete 0.7 by Sudar. +# Copyright (C) 2010 Sudar +# This file is distributed under the same license as the Bulk Delete package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Bulk Delete 1.2\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/bulk-delete\n" +"POT-Creation-Date: 2011-01-24 17:19:16+00:00\n" +"PO-Revision-Date: 2011-05-05 10:44+0100\n" +"Last-Translator: Rene <info@wpwebshop.com>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" + +#: bulk-delete.php:275 +msgid "All the selected posts have been sucessfully deleted." +msgstr "Alle selektierten Berichten sind gelöscht worden." + +#: bulk-delete.php:285 +msgid "WARNING: Posts deleted once cannot be retrieved back. Use with caution." +msgstr "WARNUNG: Gelöschte Berichten können nicht zurückgeholt werden. Seien Sie vorsichtig." + +#: bulk-delete.php:290 +msgid "Select the posts which you want to delete" +msgstr "Selektieren Sie die Berichten die Sie löschen möchten" + +#: bulk-delete.php:310 +msgid "All Drafts" +msgstr "Alle Entwürfe" + +#: bulk-delete.php:310 +msgid "Drafts" +msgstr "Entwürfe" + +#: bulk-delete.php:316 +msgid "All Revisions" +msgstr "Alle Revisionen" + +#: bulk-delete.php:316 +msgid "Revisions" +msgstr "Revisionen" + +#: bulk-delete.php:322 +msgid "All Pending posts" +msgstr "Alle ausstehende Berichten" + +#: bulk-delete.php:322 +#: bulk-delete.php:328 +#: bulk-delete.php:334 +#: bulk-delete.php:389 +#: bulk-delete.php:477 +#: bulk-delete.php:572 +msgid "Posts" +msgstr "Berichten" + +#: bulk-delete.php:328 +msgid "All scheduled posts" +msgstr "Alle geplante Berichten" + +#: bulk-delete.php:334 +msgid "All private posts" +msgstr "Alle private Berichten" + +#: bulk-delete.php:340 +msgid "All Pages" +msgstr "Alle Seiten" + +#: bulk-delete.php:340 +msgid "Pages" +msgstr "Seiten" + +#: bulk-delete.php:346 +#: bulk-delete.php:423 +#: bulk-delete.php:512 +#: bulk-delete.php:607 +msgid "Move to Trash" +msgstr "Nach Papierkorb verschieben" + +#: bulk-delete.php:347 +#: bulk-delete.php:424 +#: bulk-delete.php:513 +#: bulk-delete.php:608 +msgid "Delete permanently" +msgstr "Definitiv löschen" + +#: bulk-delete.php:354 +#: bulk-delete.php:440 +#: bulk-delete.php:529 +#: bulk-delete.php:624 +msgid "Only delete first " +msgstr "Lösche nur die ersten" + +#: bulk-delete.php:355 +#: bulk-delete.php:441 +#: bulk-delete.php:530 +#: bulk-delete.php:625 +msgid "posts." +msgstr "Berichten." + +#: bulk-delete.php:356 +#: bulk-delete.php:442 +#: bulk-delete.php:531 +#: bulk-delete.php:626 +msgid "Use this option if there are more than 1000 posts and the script timesout." +msgstr "Verwenden Sie diese Option wenn es mehr als 1000 Berichten und das Skript ein Timeout-Fehler gibt." + +#: bulk-delete.php:363 +#: bulk-delete.php:449 +#: bulk-delete.php:538 +#: bulk-delete.php:633 +msgid "Bulk Delete " +msgstr "Massenlöschung" + +#: bulk-delete.php:371 +msgid "By Category" +msgstr "Nach Kategorie" + +#: bulk-delete.php:372 +msgid "Select the categories whose post you want to delete" +msgstr "Selektieren Sie die Kategorien wessen Berichten Sie löschen möchten." + +#: bulk-delete.php:400 +msgid "All Categories" +msgstr "Alle Kategorien" + +#: bulk-delete.php:412 +#: bulk-delete.php:501 +#: bulk-delete.php:596 +msgid "Only restrict to posts which are " +msgstr "Nur Berichten für die gilt:" + +#: bulk-delete.php:414 +#: bulk-delete.php:503 +#: bulk-delete.php:598 +msgid "older than" +msgstr "älter als" + +#: bulk-delete.php:415 +#: bulk-delete.php:504 +#: bulk-delete.php:599 +msgid "posted within last" +msgstr "verfasst seit" + +#: bulk-delete.php:417 +#: bulk-delete.php:506 +#: bulk-delete.php:601 +msgid "days" +msgstr "Tage" + +#: bulk-delete.php:430 +#: bulk-delete.php:519 +#: bulk-delete.php:614 +msgid "Public posts" +msgstr "Öffentliche Berichten" + +#: bulk-delete.php:431 +#: bulk-delete.php:520 +#: bulk-delete.php:615 +msgid "Private Posts" +msgstr "Private Berichten" + +#: bulk-delete.php:460 +msgid "By Tags" +msgstr "Nach Tags" + +#: bulk-delete.php:461 +msgid "Select the tags whose post you want to delete" +msgstr "Selektieren Sie die Tags wessen Berichten Sie löschen möchten." + +#: bulk-delete.php:488 +msgid "All Tags" +msgstr "Alle Tags" + +#: bulk-delete.php:553 +msgid "By Taxonomies" +msgstr "Nach Taxonomien" + +#: bulk-delete.php:554 +msgid "Select the taxonomies whose post you want to delete" +msgstr "Selektieren Sie die Taxonomien wessen Berichten Sie löschen möchten." + +#: bulk-delete.php:583 +msgid "All Taxonomies" +msgstr "Alle Taxonomien" + +#: bulk-delete.php:643 +msgid "Support" +msgstr "Support" + +#: bulk-delete.php:644 +msgid "If you have any questions/comments/feedback about the Plugin then post a comment in the <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Plugins homepage</a>." +msgstr "Falls Sie irgendwelche Fragen/Kommentare/Feedback mit Bezug auf dem Plug-In haben, schreiben Sie dann ein Kommentar auf der <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/twitter-avatar-reloaded\">Plug-In Startseite</a>." + +#: bulk-delete.php:645 +msgid "If you like the Plugin, then consider doing one of the following." +msgstr "Sie mögen das Plug-In? Überlegen Sie dann folgendes:" + +#: bulk-delete.php:647 +msgid "Write a blog post about the Plugin." +msgstr "Sie könnten einen Blogeintrag über dem Plug-In schreiben." + +#: bulk-delete.php:648 +msgid " about it." +msgstr "darüber." + +#: bulk-delete.php:649 +msgid "Give a <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">good rating</a>." +msgstr "Gib <a href = \"http://wordpress.org/extend/plugins/twitter-avatar-reloaded/\" target=\"_blank\">eine gute Bewertung</a>." + +#: bulk-delete.php:650 +msgid "Say <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">thank you</a>." +msgstr "Sage <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">Dankeschön</a>." + +#: bulk-delete.php:653 +msgid "If you are looking to move posts in bulk, instead of deleting then try out my " +msgstr "Wenn Sie viele Berichten verschieben statt löschen möchten, probieren Sie dann mein" + +#: bulk-delete.php:653 +msgid "Bulk Move Plugin" +msgstr "Massenverschiebung Plug-In" + +#: bulk-delete.php:715 +msgid "Are you sure you want to delete all the selected posts" +msgstr "Sind Sie sicher, dass Sie alle selektierten Berichten löschen möchten?" + +#: bulk-delete.php:717 +msgid "Please select at least one" +msgstr "Selektieren Sie bitte mindestens einen." + +#: bulk-delete.php:808 +msgid "Manage" +msgstr "Verwaltung" + +#: bulk-delete.php:819 +msgid "plugin" +msgstr "Plug-In" + +#: bulk-delete.php:819 +msgid "Version" +msgstr "Version" + +#: bulk-delete.php:819 +msgid "by" +msgstr "durch" + +#. Plugin Name of the plugin/theme +msgid "Bulk Delete" +msgstr "Massenlöschung" + +#. Plugin URI of the plugin/theme +msgid "http://sudarmuthu.com/wordpress/bulk-delete" +msgstr "http://sudarmuthu.com/wordpress/bulk-delete" + +#. Description of the plugin/theme +msgid "Bulk delete posts from selected categories or tags. Use it with caution." +msgstr "Massenlöschung von Berichten mit selektierten Kategorien oder Tags. Sei vorsichtig." + +#. Author of the plugin/theme +msgid "Sudar" +msgstr "Sudar" + +#. Author URI of the plugin/theme +msgid "http://sudarmuthu.com/" +msgstr "http://sudarmuthu.com/" + diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-de_TR.po b/wp-content/plugins/bulk-delete/languages/bulk-delete-de_TR.po new file mode 100644 index 0000000..977c5ad --- /dev/null +++ b/wp-content/plugins/bulk-delete/languages/bulk-delete-de_TR.po @@ -0,0 +1,270 @@ +# Translation of the WordPress plugin Bulk Delete 0.7 by Bahadýr YILDIZ +# Copyright (C) 2011 Bahadýr YILDIZ [www.matematik.us] +# This file is distributed under the same license as the Bulk Delete package. +# +msgid "" +msgstr "" +"Project-Id-Version: Bulk Delete 1.2\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/bulk-delete\n" +"POT-Creation-Date: 2011-01-24 17:19:16+00:00\n" +"PO-Revision-Date: 2011-05-05 10:44+0100\n" +"Last-Translator: Rene <info@wpwebshop.com>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Turkish\n" +"X-Poedit-Country: TURKEY\n" + +#: bulk-delete.php:275 +msgid "All the selected posts have been sucessfully deleted." +msgstr "Seçilen tüm yazýlar baþarýyla silindi" + +#: bulk-delete.php:285 +msgid "WARNING: Posts deleted once cannot be retrieved back. Use with caution." +msgstr "UYARI: Bir kez silinen yazýlar geri getirilemez. Lütfen dikkatli kullanýn." + +#: bulk-delete.php:290 +msgid "Select the posts which you want to delete" +msgstr "Silmek istediðiniz yazýlarý seçin" + +#: bulk-delete.php:310 +msgid "All Drafts" +msgstr "Tüm taslaklar" + +#: bulk-delete.php:310 +msgid "Drafts" +msgstr "Taslaklar" + +#: bulk-delete.php:316 +msgid "All Revisions" +msgstr "Tüm revizyonlar" + +#: bulk-delete.php:316 +msgid "Revisions" +msgstr "Revizyonlar" + +#: bulk-delete.php:322 +msgid "All Pending posts" +msgstr "Tüm Bekleyen yazýlar" + +#: bulk-delete.php:322 +#: bulk-delete.php:328 +#: bulk-delete.php:334 +#: bulk-delete.php:389 +#: bulk-delete.php:477 +#: bulk-delete.php:572 +msgid "Posts" +msgstr "Yazýlar" + +#: bulk-delete.php:328 +msgid "All scheduled posts" +msgstr "Tüm zamanlanmýþ yazýlar" + +#: bulk-delete.php:334 +msgid "All private posts" +msgstr "Tüm Özel yazýlar" + +#: bulk-delete.php:340 +msgid "All Pages" +msgstr "Tüm sayfalar" + +#: bulk-delete.php:340 +msgid "Pages" +msgstr "Sayfalar" + +#: bulk-delete.php:346 +#: bulk-delete.php:423 +#: bulk-delete.php:512 +#: bulk-delete.php:607 +msgid "Move to Trash" +msgstr "Çöpe taþý" + +#: bulk-delete.php:347 +#: bulk-delete.php:424 +#: bulk-delete.php:513 +#: bulk-delete.php:608 +msgid "Delete permanently" +msgstr "Kalýcý olarak sil" + +#: bulk-delete.php:354 +#: bulk-delete.php:440 +#: bulk-delete.php:529 +#: bulk-delete.php:624 +msgid "Only delete first " +msgstr "Yalnýzca birinciyi sil" + +#: bulk-delete.php:355 +#: bulk-delete.php:441 +#: bulk-delete.php:530 +#: bulk-delete.php:625 +msgid "posts." +msgstr "yazýlar." + +#: bulk-delete.php:356 +#: bulk-delete.php:442 +#: bulk-delete.php:531 +#: bulk-delete.php:626 +msgid "Use this option if there are more than 1000 posts and the script timesout." +msgstr "Bu seçeneði 1000 taneden fazla yazý varsa kullanýn." + +#: bulk-delete.php:363 +#: bulk-delete.php:449 +#: bulk-delete.php:538 +#: bulk-delete.php:633 +msgid "Bulk Delete " +msgstr "Toptan sil" + +#: bulk-delete.php:371 +msgid "By Category" +msgstr "Kategoriye göre" + +#: bulk-delete.php:372 +msgid "Select the categories whose post you want to delete" +msgstr "Yazýlarýný silmek istediðiniz kategoriyi seçin" + +#: bulk-delete.php:400 +msgid "All Categories" +msgstr "Tüm kategoriler" + +#: bulk-delete.php:412 +#: bulk-delete.php:501 +#: bulk-delete.php:596 +msgid "Only restrict to posts which are " +msgstr "Þu yazýlarý kýsýtla:" + +#: bulk-delete.php:414 +#: bulk-delete.php:503 +#: bulk-delete.php:598 +msgid "older than" +msgstr "Daha eski:" + +#: bulk-delete.php:415 +#: bulk-delete.php:504 +#: bulk-delete.php:599 +msgid "posted within last" +msgstr "En son þu zamanda yazýlan:" + +#: bulk-delete.php:417 +#: bulk-delete.php:506 +#: bulk-delete.php:601 +msgid "days" +msgstr "günler" + +#: bulk-delete.php:430 +#: bulk-delete.php:519 +#: bulk-delete.php:614 +msgid "Public posts" +msgstr "Herkese açýk yazýlar" + +#: bulk-delete.php:431 +#: bulk-delete.php:520 +#: bulk-delete.php:615 +msgid "Private Posts" +msgstr "Özel yazýlar" + +#: bulk-delete.php:460 +msgid "By Tags" +msgstr "Etikete göre" + +#: bulk-delete.php:461 +msgid "Select the tags whose post you want to delete" +msgstr "Yazýlarýn silinmesini istediðiniz etiketleri seçin" + +#: bulk-delete.php:488 +msgid "All Tags" +msgstr "Tüm etiketler" + +#: bulk-delete.php:553 +msgid "By Taxonomies" +msgstr "Sýnýflandrmaya göre" + +#: bulk-delete.php:554 +msgid "Select the taxonomies whose post you want to delete" +msgstr "Yazýlarýný silmek istediðiniz sýnýflandýrmayý seçin" + +#: bulk-delete.php:583 +msgid "All Taxonomies" +msgstr "Tüm taksonomiler" + +#: bulk-delete.php:643 +msgid "Support" +msgstr "Destek" + +#: bulk-delete.php:644 +msgid "If you have any questions/comments/feedback about the Plugin then post a comment in the <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Plugins homepage</a>." +msgstr "Eklenti ile ilgili tüm soru/yorum/geribildirimleriniz için<a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/twitter-avatar-reloaded\">eklenti anasayfasý</a>na yazabilirsiniz." + +#: bulk-delete.php:645 +msgid "If you like the Plugin, then consider doing one of the following." +msgstr "Eklentiyi beðendiyseniz aþaðýdaki yöntemlerden birisi ile katkýda bulunabilirsiniz." + +#: bulk-delete.php:647 +msgid "Write a blog post about the Plugin." +msgstr "Eklenti ile ilgili bir blog yazýsý yazýn." + +#: bulk-delete.php:648 +msgid " about it." +msgstr "hakkýnda." + +#: bulk-delete.php:649 +msgid "Give a <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">good rating</a>." +msgstr "<a href = \"http://wordpress.org/extend/plugins/twitter-avatar-reloaded/\" target=\"_blank\">Derece</a>lendirin." + +#: bulk-delete.php:650 +msgid "Say <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">thank you</a>." +msgstr "<a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">Teþekkür</a> edin." + +#: bulk-delete.php:653 +msgid "If you are looking to move posts in bulk, instead of deleting then try out my " +msgstr "Yazýlarýn tümünü silmek yerine taþýmak isterseniz, bunu deneyin:" + +#: bulk-delete.php:653 +msgid "Bulk Move Plugin" +msgstr "Bulk Move Plugin" + +#: bulk-delete.php:715 +msgid "Are you sure you want to delete all the selected posts" +msgstr "Seçilen tüm yazýlarý silmek istediðinize emin misiniz?" + +#: bulk-delete.php:717 +msgid "Please select at least one" +msgstr "Lütfen en az bir tane seçin" + +#: bulk-delete.php:808 +msgid "Manage" +msgstr "Yönet" + +#: bulk-delete.php:819 +msgid "plugin" +msgstr "eklenti" + +#: bulk-delete.php:819 +msgid "Version" +msgstr "Versiyon" + +#: bulk-delete.php:819 +msgid "by" +msgstr "tarafýndan" + +#. Plugin Name of the plugin/theme +msgid "Bulk Delete" +msgstr "Tümünü sil" + +#. Plugin URI of the plugin/theme +msgid "http://sudarmuthu.com/wordpress/bulk-delete" +msgstr "http://sudarmuthu.com/wordpress/bulk-delete" + +#. Description of the plugin/theme +msgid "Bulk delete posts from selected categories or tags. Use it with caution." +msgstr "Seçilen etiket ya da kategorideki tüm yazýlarý siler. Dikkatli kullanýn." + +#. Author of the plugin/theme +msgid "Sudar" +msgstr "Sudar" + +#. Author URI of the plugin/theme +msgid "http://sudarmuthu.com/" +msgstr "http://sudarmuthu.com/" + diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-es_ES.mo b/wp-content/plugins/bulk-delete/languages/bulk-delete-es_ES.mo new file mode 100644 index 0000000..71ed0f9 Binary files /dev/null and b/wp-content/plugins/bulk-delete/languages/bulk-delete-es_ES.mo differ diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-es_ES.po b/wp-content/plugins/bulk-delete/languages/bulk-delete-es_ES.po new file mode 100644 index 0000000..fa938f0 --- /dev/null +++ b/wp-content/plugins/bulk-delete/languages/bulk-delete-es_ES.po @@ -0,0 +1,267 @@ +# Copyright (C) 2010 Bulk Delete +# This file is distributed under the same license as the Bulk Delete package. +msgid "" +msgstr "" +"Project-Id-Version: Bulk Delete 1.1\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/bulk-delete\n" +"POT-Creation-Date: 2011-01-24 17:19:16+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2011-11-04 14:47-0800\n" +"Last-Translator: Mike Arias <mikea@inmotionhosting.com>\n" +"Language-Team: \n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: .\n" + +#: bulk-delete.php:275 +msgid "All the selected posts have been sucessfully deleted." +msgstr "Todas las entradas elegidas han sido eliminadas." + +#: bulk-delete.php:285 +msgid "WARNING: Posts deleted once cannot be retrieved back. Use with caution." +msgstr "AVISO: No se puede recuperar las entradas eliminadas. " + +#: bulk-delete.php:290 +msgid "Select the posts which you want to delete" +msgstr "Elige las entradas que deseas eliminar" + +#: bulk-delete.php:310 +msgid "All Drafts" +msgstr "Todos los borradores" + +#: bulk-delete.php:310 +msgid "Drafts" +msgstr "Borradores" + +#: bulk-delete.php:316 +msgid "All Revisions" +msgstr "Todas las revisiones" + +#: bulk-delete.php:316 +msgid "Revisions" +msgstr "Revisiones" + +#: bulk-delete.php:322 +msgid "All Pending posts" +msgstr "Todas las entradas pendientes" + +#: bulk-delete.php:322 +#: bulk-delete.php:328 +#: bulk-delete.php:334 +#: bulk-delete.php:389 +#: bulk-delete.php:477 +#: bulk-delete.php:572 +msgid "Posts" +msgstr "Entradas" + +#: bulk-delete.php:328 +msgid "All scheduled posts" +msgstr "Todas las entradas programadas" + +#: bulk-delete.php:334 +msgid "All private posts" +msgstr "Todas las entradas privadas" + +#: bulk-delete.php:340 +msgid "All Pages" +msgstr "Todas las Páginas" + +#: bulk-delete.php:340 +msgid "Pages" +msgstr "Páginas" + +#: bulk-delete.php:346 +#: bulk-delete.php:423 +#: bulk-delete.php:512 +#: bulk-delete.php:607 +msgid "Move to Trash" +msgstr "Mover a la Papelera" + +#: bulk-delete.php:347 +#: bulk-delete.php:424 +#: bulk-delete.php:513 +#: bulk-delete.php:608 +msgid "Delete permanently" +msgstr "Eliminar de manera permanente" + +#: bulk-delete.php:354 +#: bulk-delete.php:440 +#: bulk-delete.php:529 +#: bulk-delete.php:624 +msgid "Only delete first " +msgstr "Eliminar solamente las primeras" + +#: bulk-delete.php:355 +#: bulk-delete.php:441 +#: bulk-delete.php:530 +#: bulk-delete.php:625 +msgid "posts." +msgstr "entradas." + +#: bulk-delete.php:356 +#: bulk-delete.php:442 +#: bulk-delete.php:531 +#: bulk-delete.php:626 +msgid "Use this option if there are more than 1000 posts and the script timesout." +msgstr "Utiliza esta opción si hay más de 1000 entradas y el script indica una desconexión por tiempo." + +#: bulk-delete.php:363 +#: bulk-delete.php:449 +#: bulk-delete.php:538 +#: bulk-delete.php:633 +msgid "Bulk Delete " +msgstr "Bulk Delete (Eliminar de forma masiva)" + +#: bulk-delete.php:371 +msgid "By Category" +msgstr "Por categoría" + +#: bulk-delete.php:372 +msgid "Select the categories whose post you want to delete" +msgstr "Elige las categorías " + +#: bulk-delete.php:400 +msgid "All Categories" +msgstr "Todas las categorias" + +#: bulk-delete.php:412 +#: bulk-delete.php:501 +#: bulk-delete.php:596 +msgid "Only restrict to posts which are " +msgstr "Limitar a las entrada que son " + +#: bulk-delete.php:414 +#: bulk-delete.php:503 +#: bulk-delete.php:598 +msgid "older than" +msgstr "mayores de" + +#: bulk-delete.php:415 +#: bulk-delete.php:504 +#: bulk-delete.php:599 +msgid "posted within last" +msgstr "publicada durante los últimos" + +#: bulk-delete.php:417 +#: bulk-delete.php:506 +#: bulk-delete.php:601 +msgid "days" +msgstr "días" + +#: bulk-delete.php:430 +#: bulk-delete.php:519 +#: bulk-delete.php:614 +msgid "Public posts" +msgstr "Entradas públicas" + +#: bulk-delete.php:431 +#: bulk-delete.php:520 +#: bulk-delete.php:615 +msgid "Private Posts" +msgstr "Entradas privadas" + +#: bulk-delete.php:460 +msgid "By Tags" +msgstr "Por etiquetas" + +#: bulk-delete.php:461 +msgid "Select the tags whose post you want to delete" +msgstr "Elija las etiquetas que desea eliminar" + +#: bulk-delete.php:488 +msgid "All Tags" +msgstr "Todas las etiquetas" + +#: bulk-delete.php:553 +msgid "By Taxonomies" +msgstr "Por taxonomías" + +#: bulk-delete.php:554 +msgid "Select the taxonomies whose post you want to delete" +msgstr "Elige las taxonomías cuya entrada deseas eliminar" + +#: bulk-delete.php:583 +msgid "All Taxonomies" +msgstr "Todas las taxonomías" + +#: bulk-delete.php:643 +msgid "Support" +msgstr "Soporte" + +#: bulk-delete.php:644 +msgid "If you have any questions/comments/feedback about the Plugin then post a comment in the <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Plugins homepage</a>." +msgstr "Si tienes algunas preguntas/comentarios/opinones sobre el plugin, " + +#: bulk-delete.php:645 +msgid "If you like the Plugin, then consider doing one of the following." +msgstr "Si te gusta el plugin, considerar" + +#: bulk-delete.php:647 +msgid "Write a blog post about the Plugin." +msgstr "Escriba una entrada sobre el plugin." + +#: bulk-delete.php:648 +msgid " about it." +msgstr "sobre lo." + +#: bulk-delete.php:649 +msgid "Give a <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">good rating</a>." +msgstr "Da una <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">buena calificación</a>" + +#: bulk-delete.php:650 +msgid "Say <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">thank you</a>." +msgstr "Diga <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">gracias</a>." + +#: bulk-delete.php:653 +msgid "If you are looking to move posts in bulk, instead of deleting then try out my " +msgstr "Si buscas una manera de mover entradas de forma masiva, en vez de eliminarlas prueba el" + +#: bulk-delete.php:653 +msgid "Bulk Move Plugin" +msgstr "Bulk Move Plugin" + +#: bulk-delete.php:715 +msgid "Are you sure you want to delete all the selected posts" +msgstr "Estás seguro que quieres eliminar todas las entradas elegidas" + +#: bulk-delete.php:717 +msgid "Please select at least one" +msgstr "Por favor elige al menos uno" + +#: bulk-delete.php:808 +msgid "Manage" +msgstr "Administrar" + +#: bulk-delete.php:819 +msgid "plugin" +msgstr "plugin" + +#: bulk-delete.php:819 +msgid "Version" +msgstr "Versión" + +#: bulk-delete.php:819 +msgid "by" +msgstr "por" + +#. Plugin Name of the plugin/theme +msgid "Bulk Delete" +msgstr "Bulk Delete" + +#. Plugin URI of the plugin/theme +msgid "http://sudarmuthu.com/wordpress/bulk-delete" +msgstr "http://sudarmuthu.com/wordpress/bulk-delete" + +#. Description of the plugin/theme +msgid "Bulk delete posts from selected categories or tags. Use it with caution." +msgstr "Eliminar entradas de forma masiva de categorías eligidas o etiquetas. Utiliza con precaución." + +#. Author of the plugin/theme +msgid "Sudar" +msgstr "Sudar" + +#. Author URI of the plugin/theme +msgid "http://sudarmuthu.com/" +msgstr "http://sudarmuthu.com/" + diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-it_IT.mo b/wp-content/plugins/bulk-delete/languages/bulk-delete-it_IT.mo new file mode 100644 index 0000000..5ec5ed5 Binary files /dev/null and b/wp-content/plugins/bulk-delete/languages/bulk-delete-it_IT.mo differ diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-it_IT.po b/wp-content/plugins/bulk-delete/languages/bulk-delete-it_IT.po new file mode 100644 index 0000000..1949b1d --- /dev/null +++ b/wp-content/plugins/bulk-delete/languages/bulk-delete-it_IT.po @@ -0,0 +1,265 @@ +# Copyright (C) 2010 Bulk Delete +# This file is distributed under the same license as the Bulk Delete package. +msgid "" +msgstr "" +"Project-Id-Version: Bulk Delete 1.1\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/bulk-delete\n" +"POT-Creation-Date: 2011-01-24 17:19:16+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2011-11-05 17:52+0100\n" +"Last-Translator: Paolo Gabrielli <paolo.gabrielli@gmail.com>\n" +"Language-Team: Paolo Gabrielli <paolo.gabrielli@gmail.com>\n" + +#: bulk-delete.php:275 +msgid "All the selected posts have been sucessfully deleted." +msgstr "Tutti gli articoli selezionati sono stati correttamente cancellati." + +#: bulk-delete.php:285 +msgid "WARNING: Posts deleted once cannot be retrieved back. Use with caution." +msgstr "ATTENZIONE: gli articoli cancellati non possono essere recuperati. Usate con attenzione." + +#: bulk-delete.php:290 +msgid "Select the posts which you want to delete" +msgstr "Selezionate gli articoli che volete cancellare" + +#: bulk-delete.php:310 +msgid "All Drafts" +msgstr "Tutte le bozze" + +#: bulk-delete.php:310 +msgid "Drafts" +msgstr "Bozze" + +#: bulk-delete.php:316 +msgid "All Revisions" +msgstr "Tutte le revisioni" + +#: bulk-delete.php:316 +msgid "Revisions" +msgstr "revisioni" + +#: bulk-delete.php:322 +msgid "All Pending posts" +msgstr "Tutti gli articoli in attesa di revisione" + +#: bulk-delete.php:322 +#: bulk-delete.php:328 +#: bulk-delete.php:334 +#: bulk-delete.php:389 +#: bulk-delete.php:477 +#: bulk-delete.php:572 +msgid "Posts" +msgstr "Articoli" + +#: bulk-delete.php:328 +msgid "All scheduled posts" +msgstr "Tutti gli articoli programmati" + +#: bulk-delete.php:334 +msgid "All private posts" +msgstr "Tutti gli articoli privati" + +#: bulk-delete.php:340 +msgid "All Pages" +msgstr "Tutte le pagine" + +#: bulk-delete.php:340 +msgid "Pages" +msgstr "Pagine" + +#: bulk-delete.php:346 +#: bulk-delete.php:423 +#: bulk-delete.php:512 +#: bulk-delete.php:607 +msgid "Move to Trash" +msgstr "Sposta nel cestino" + +#: bulk-delete.php:347 +#: bulk-delete.php:424 +#: bulk-delete.php:513 +#: bulk-delete.php:608 +msgid "Delete permanently" +msgstr "Cancella permanentemente" + +#: bulk-delete.php:354 +#: bulk-delete.php:440 +#: bulk-delete.php:529 +#: bulk-delete.php:624 +msgid "Only delete first " +msgstr "Cancella solamente i primi" + +#: bulk-delete.php:355 +#: bulk-delete.php:441 +#: bulk-delete.php:530 +#: bulk-delete.php:625 +msgid "posts." +msgstr "articoli." + +#: bulk-delete.php:356 +#: bulk-delete.php:442 +#: bulk-delete.php:531 +#: bulk-delete.php:626 +msgid "Use this option if there are more than 1000 posts and the script timesout." +msgstr "Usate questa opzione se ci sono più di 1000 articoli e lo script va in timeout." + +#: bulk-delete.php:363 +#: bulk-delete.php:449 +#: bulk-delete.php:538 +#: bulk-delete.php:633 +msgid "Bulk Delete " +msgstr "Cancellazione di massa" + +#: bulk-delete.php:371 +msgid "By Category" +msgstr "Per categoria" + +#: bulk-delete.php:372 +msgid "Select the categories whose post you want to delete" +msgstr "Selezionate le categorie delle quali volete cancellare gli articoli" + +#: bulk-delete.php:400 +msgid "All Categories" +msgstr "Tutte le categorie" + +#: bulk-delete.php:412 +#: bulk-delete.php:501 +#: bulk-delete.php:596 +msgid "Only restrict to posts which are " +msgstr "Solamente gli articoli che sono" + +#: bulk-delete.php:414 +#: bulk-delete.php:503 +#: bulk-delete.php:598 +msgid "older than" +msgstr "più vecchi di" + +#: bulk-delete.php:415 +#: bulk-delete.php:504 +#: bulk-delete.php:599 +msgid "posted within last" +msgstr "pubblicati negli ultimi" + +#: bulk-delete.php:417 +#: bulk-delete.php:506 +#: bulk-delete.php:601 +msgid "days" +msgstr "giorni" + +#: bulk-delete.php:430 +#: bulk-delete.php:519 +#: bulk-delete.php:614 +msgid "Public posts" +msgstr "Articoli pubblici" + +#: bulk-delete.php:431 +#: bulk-delete.php:520 +#: bulk-delete.php:615 +msgid "Private Posts" +msgstr "Articoli privati" + +#: bulk-delete.php:460 +msgid "By Tags" +msgstr "Per tag" + +#: bulk-delete.php:461 +msgid "Select the tags whose post you want to delete" +msgstr "Selezionate i tag dei quali volete cancellare gli articoli" + +#: bulk-delete.php:488 +msgid "All Tags" +msgstr "Tutti i tag" + +#: bulk-delete.php:553 +msgid "By Taxonomies" +msgstr "Per tassonomie" + +#: bulk-delete.php:554 +msgid "Select the taxonomies whose post you want to delete" +msgstr "Selezionate le tassonomie delle quali volete cancellare gli articoli" + +#: bulk-delete.php:583 +msgid "All Taxonomies" +msgstr "Tutte le tassonomie" + +#: bulk-delete.php:643 +msgid "Support" +msgstr "Supporto" + +#: bulk-delete.php:644 +msgid "If you have any questions/comments/feedback about the Plugin then post a comment in the <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Plugins homepage</a>." +msgstr "Se avete qualche domanda/commento/feedback riguardo il Plugin allora scrivete un commento nella <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">homepage del Plugin</a>." + +#: bulk-delete.php:645 +msgid "If you like the Plugin, then consider doing one of the following." +msgstr "Se vi piace il Plugin, allora considerate una delle seguenti opzioni." + +#: bulk-delete.php:647 +msgid "Write a blog post about the Plugin." +msgstr "Scrivete un articolo sul vostro blog riguardo il Plugin." + +#: bulk-delete.php:648 +msgid " about it." +msgstr "riguardo esso." + +#: bulk-delete.php:649 +msgid "Give a <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">good rating</a>." +msgstr "Date un <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">buon voto</a>." + +#: bulk-delete.php:650 +msgid "Say <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">thank you</a>." +msgstr "Dite <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">grazie</a>." + +#: bulk-delete.php:653 +msgid "If you are looking to move posts in bulk, instead of deleting then try out my " +msgstr "Se dovete spostare gli articoli invece di cancellarli, allora provate il mio" + +#: bulk-delete.php:653 +msgid "Bulk Move Plugin" +msgstr "Bulk Move Plugin" + +#: bulk-delete.php:715 +msgid "Are you sure you want to delete all the selected posts" +msgstr "Siete sicuri di voler cancellare tutti gli articoli selezionati" + +#: bulk-delete.php:717 +msgid "Please select at least one" +msgstr "Selezionate almeno un'opzione" + +#: bulk-delete.php:808 +msgid "Manage" +msgstr "Gestione" + +#: bulk-delete.php:819 +msgid "plugin" +msgstr "plugin" + +#: bulk-delete.php:819 +msgid "Version" +msgstr "Versione" + +#: bulk-delete.php:819 +msgid "by" +msgstr "di" + +#. Plugin Name of the plugin/theme +msgid "Bulk Delete" +msgstr "Bulk Delete" + +#. Plugin URI of the plugin/theme +msgid "http://sudarmuthu.com/wordpress/bulk-delete" +msgstr "http://sudarmuthu.com/wordpress/bulk-delete" + +#. Description of the plugin/theme +msgid "Bulk delete posts from selected categories or tags. Use it with caution." +msgstr "Cancellate in massa gli articoli dalle categorie o i tag selezionati. Usate con cautela" + +#. Author of the plugin/theme +msgid "Sudar" +msgstr "Sudar" + +#. Author URI of the plugin/theme +msgid "http://sudarmuthu.com/" +msgstr "http://sudarmuthu.com/" + diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-lt_LT.mo b/wp-content/plugins/bulk-delete/languages/bulk-delete-lt_LT.mo new file mode 100644 index 0000000..5cc1a0b Binary files /dev/null and b/wp-content/plugins/bulk-delete/languages/bulk-delete-lt_LT.mo differ diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-lt_LT.po b/wp-content/plugins/bulk-delete/languages/bulk-delete-lt_LT.po new file mode 100644 index 0000000..26cecd7 --- /dev/null +++ b/wp-content/plugins/bulk-delete/languages/bulk-delete-lt_LT.po @@ -0,0 +1,271 @@ +# Translation of the WordPress plugin Bulk Delete 0.7 by Sudar. +# Copyright (C) 2010 Sudar +# This file is distributed under the same license as the Bulk Delete package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Bulk Delete 1.2\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/bulk-delete\n" +"POT-Creation-Date: 2011-01-24 17:19:16+00:00\n" +"PO-Revision-Date: 2012-04-04 00:08-0800\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" + +#: bulk-delete.php:275 +msgid "All the selected posts have been sucessfully deleted." +msgstr "Visi pažymÄ—ti įraÅ¡ai buvo sÄ—kmingai iÅ¡trinti." + +#: bulk-delete.php:285 +msgid "WARNING: Posts deleted once cannot be retrieved back. Use with caution." +msgstr "DÄ–MESIO: VienÄ… kartÄ… iÅ¡trinti įraÅ¡ai nebegali bÅ«ti atstatyti. Atsargiai naudokite Å¡iÄ… funkcijÄ…." + +#: bulk-delete.php:290 +msgid "Select the posts which you want to delete" +msgstr "PažymÄ—kite įraÅ¡us, kuriuos norite iÅ¡trinti" + +#: bulk-delete.php:310 +msgid "All Drafts" +msgstr "Visi JuodraÅ¡Äiai" + +#: bulk-delete.php:310 +msgid "Drafts" +msgstr "JuodraÅ¡Äiai" + +#: bulk-delete.php:316 +msgid "All Revisions" +msgstr "Visos Pataisos" + +#: bulk-delete.php:316 +msgid "Revisions" +msgstr "Pataisos" + +#: bulk-delete.php:322 +msgid "All Pending posts" +msgstr "Visi Laukiami įraÅ¡ai" + +#: bulk-delete.php:322 +#: bulk-delete.php:328 +#: bulk-delete.php:334 +#: bulk-delete.php:389 +#: bulk-delete.php:477 +#: bulk-delete.php:572 +msgid "Posts" +msgstr "Ä®raÅ¡ai" + +#: bulk-delete.php:328 +msgid "All scheduled posts" +msgstr "Visi suplanuoti įraÅ¡ai" + +#: bulk-delete.php:334 +msgid "All private posts" +msgstr "Visi privatÅ«s įraÅ¡ai" + +#: bulk-delete.php:340 +msgid "All Pages" +msgstr "Visi Puslapiai" + +#: bulk-delete.php:340 +msgid "Pages" +msgstr "Puslapiai" + +#: bulk-delete.php:346 +#: bulk-delete.php:423 +#: bulk-delete.php:512 +#: bulk-delete.php:607 +msgid "Move to Trash" +msgstr "Perkelti į Å iukÅ¡les" + +#: bulk-delete.php:347 +#: bulk-delete.php:424 +#: bulk-delete.php:513 +#: bulk-delete.php:608 +msgid "Delete permanently" +msgstr "IÅ¡trinti negrįžtamai" + +#: bulk-delete.php:354 +#: bulk-delete.php:440 +#: bulk-delete.php:529 +#: bulk-delete.php:624 +msgid "Only delete first " +msgstr "Pirmiausiai iÅ¡trinti tik" + +#: bulk-delete.php:355 +#: bulk-delete.php:441 +#: bulk-delete.php:530 +#: bulk-delete.php:625 +msgid "posts." +msgstr "įraÅ¡us." + +#: bulk-delete.php:356 +#: bulk-delete.php:442 +#: bulk-delete.php:531 +#: bulk-delete.php:626 +msgid "Use this option if there are more than 1000 posts and the script timesout." +msgstr "Naudokite Å¡iÄ… parinktį, jeigu norite iÅ¡trinti daugiau nei 1000 įrašų ir skriptas nustoja veikÄ™s." + +#: bulk-delete.php:363 +#: bulk-delete.php:449 +#: bulk-delete.php:538 +#: bulk-delete.php:633 +msgid "Bulk Delete " +msgstr "Masinis IÅ¡trynimas" + +#: bulk-delete.php:371 +msgid "By Category" +msgstr "Pagal KategorijÄ…" + +#: bulk-delete.php:372 +msgid "Select the categories whose post you want to delete" +msgstr "Pasirinkite kategorijas, kurių įraÅ¡us norite iÅ¡trinti" + +#: bulk-delete.php:400 +msgid "All Categories" +msgstr "Visos Kategorijos" + +#: bulk-delete.php:412 +#: bulk-delete.php:501 +#: bulk-delete.php:596 +msgid "Only restrict to posts which are " +msgstr "IÅ¡skirti tik įraÅ¡us, kurie yra " + +#: bulk-delete.php:414 +#: bulk-delete.php:503 +#: bulk-delete.php:598 +msgid "older than" +msgstr "senesni nei" + +#: bulk-delete.php:415 +#: bulk-delete.php:504 +#: bulk-delete.php:599 +msgid "posted within last" +msgstr "paskelbti per paskutines" + +#: bulk-delete.php:417 +#: bulk-delete.php:506 +#: bulk-delete.php:601 +msgid "days" +msgstr "dienas" + +#: bulk-delete.php:430 +#: bulk-delete.php:519 +#: bulk-delete.php:614 +msgid "Public posts" +msgstr "VieÅ¡i įraÅ¡ai" + +#: bulk-delete.php:431 +#: bulk-delete.php:520 +#: bulk-delete.php:615 +msgid "Private Posts" +msgstr "PrivatÅ«s Ä®raÅ¡ai" + +#: bulk-delete.php:460 +msgid "By Tags" +msgstr "Pagal Gaires" + +#: bulk-delete.php:461 +msgid "Select the tags whose post you want to delete" +msgstr "Pasirinkite gaires, kuriomis pažymÄ—tus įraÅ¡us JÅ«s norite iÅ¡trinti" + +#: bulk-delete.php:488 +msgid "All Tags" +msgstr "Visos GairÄ—s" + +#: bulk-delete.php:553 +msgid "By Taxonomies" +msgstr "Pagal Taksonomijas" + +#: bulk-delete.php:554 +msgid "Select the taxonomies whose post you want to delete" +msgstr "Pasirinkite taksonomijas kuriomis pažymÄ—tus įraÅ¡us norite iÅ¡trinti" + +#: bulk-delete.php:583 +msgid "All Taxonomies" +msgstr "Visos Taksonomijos" + +#: bulk-delete.php:643 +msgid "Support" +msgstr "Pagalba" + +#: bulk-delete.php:644 +msgid "If you have any questions/comments/feedback about the Plugin then post a comment in the <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Plugins homepage</a>." +msgstr "Jeigu turite kokių nors klausimų/komentarų/atsiliepimų apie Papildinį, paraÅ¡ykite komentrÄ… <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Papildinio namų puslapyje</a>." + +#: bulk-delete.php:645 +msgid "If you like the Plugin, then consider doing one of the following." +msgstr "Jeigu Jums patinka Å¡is papildinys, pagalvokite apie kurio nors toliau paminÄ—to veiksmo atlikimÄ…." + +#: bulk-delete.php:647 +msgid "Write a blog post about the Plugin." +msgstr "Sukurkite tinklaraÅ¡Äio įrašą apie Papildinį" + +#: bulk-delete.php:648 +msgid " about it." +msgstr " apie tai." + +#: bulk-delete.php:649 +msgid "Give a <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">good rating</a>." +msgstr "Ä®vertinkite <a href = \"http://wordpress.org/extend/plugins/tbulk-delete/\" target=\"_blank\">aukÅ¡tu balu</a>." + +#: bulk-delete.php:650 +msgid "Say <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">thank you</a>." +msgstr "Pasakykite <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">AÄiÅ«</a>." + +#: bulk-delete.php:653 +msgid "If you are looking to move posts in bulk, instead of deleting then try out my " +msgstr "Jeigu norite perkelti įraÅ¡us į masinÄ™ laikemenÄ…, vietoj to, kad juos iÅ¡trintumÄ—te, pabandykite mano" + +#: bulk-delete.php:653 +msgid "Bulk Move Plugin" +msgstr "Bulk Move Papildinį" + +#: bulk-delete.php:715 +msgid "Are you sure you want to delete all the selected posts" +msgstr "Ar JÅ«s tikrai norite iÅ¡trinti visus Å¡iuos pažymÄ—tus įraÅ¡us?" + +#: bulk-delete.php:717 +msgid "Please select at least one" +msgstr "Pasirinkite bent vienÄ…" + +#: bulk-delete.php:808 +msgid "Manage" +msgstr "Valdyti" + +#: bulk-delete.php:819 +msgid "plugin" +msgstr "papildinį" + +#: bulk-delete.php:819 +msgid "Version" +msgstr "Versija" + +#: bulk-delete.php:819 +msgid "by" +msgstr "pagal" + +#. Plugin Name of the plugin/theme +msgid "Bulk Delete" +msgstr "Bulk Delete" + +#. Plugin URI of the plugin/theme +msgid "http://sudarmuthu.com/wordpress/bulk-delete" +msgstr "http://sudarmuthu.com/wordpress/bulk-delete" + +#. Description of the plugin/theme +msgid "Bulk delete posts from selected categories or tags. Use it with caution." +msgstr "Masinis įrašų iÅ¡trynimas pagal pasirinktas kategorijas arba gaires. NaudokitÄ—s papildiniu atsargiai." + +#. Author of the plugin/theme +msgid "Sudar" +msgstr "Sudar" + +#. Author URI of the plugin/theme +msgid "http://sudarmuthu.com/" +msgstr "http://sudarmuthu.com/" + diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-nl_NL.mo b/wp-content/plugins/bulk-delete/languages/bulk-delete-nl_NL.mo new file mode 100644 index 0000000..df4e438 Binary files /dev/null and b/wp-content/plugins/bulk-delete/languages/bulk-delete-nl_NL.mo differ diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-nl_NL.po b/wp-content/plugins/bulk-delete/languages/bulk-delete-nl_NL.po new file mode 100644 index 0000000..6d64505 --- /dev/null +++ b/wp-content/plugins/bulk-delete/languages/bulk-delete-nl_NL.po @@ -0,0 +1,207 @@ +# Translation of the WordPress plugin Bulk Delete 0.7 by Sudar. +# Copyright (C) 2010 Sudar +# This file is distributed under the same license as the Bulk Delete package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Bulk Delete 1.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/bulk-delete\n" +"POT-Creation-Date: 2010-02-27 11:19+0000\n" +"PO-Revision-Date: 2010-11-29 21:41+0100\n" +"Last-Translator: Rene <info@wpwebshop.com>\n" +"Language-Team: Translation by WordPressWebshop.com <info@wpwebshop.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Dutch\n" +"X-Poedit-Country: NETHERLANDS\n" + +#: bulk-delete.php:200 +msgid "All the selected posts have been sucessfully deleted." +msgstr "Al de geselecteerde berichten zijn succesvol verwijderd." + +#: bulk-delete.php:210 +msgid "WARNING: Posts deleted once cannot be retrieved back. Use with caution." +msgstr "WAARSCHUWING: Verwijderde berichten kunnen niet teruggehaald worden. Wees voorzichtig." + +#: bulk-delete.php:215 +msgid "Select the posts which you want to delete" +msgstr "Selecteer de berichten welke je wilt verwijderen" + +#: bulk-delete.php:234 +msgid "All Drafts" +msgstr "Alle Concepten" + +#: bulk-delete.php:234 +msgid "Drafts" +msgstr "Concepten" + +#: bulk-delete.php:240 +msgid "All Revisions" +msgstr "Alle Revisies" + +#: bulk-delete.php:240 +msgid "Revisons" +msgstr "Herzieningen" + +#: bulk-delete.php:246 +msgid "All Pending posts" +msgstr "Alle wachtende berichten" + +#: bulk-delete.php:246 +#: bulk-delete.php:252 +#: bulk-delete.php:307 +#: bulk-delete.php:388 +msgid "Posts" +msgstr "Berichten" + +#: bulk-delete.php:252 +msgid "All scheduled posts" +msgstr "Alle ingeplande berichten" + +#: bulk-delete.php:258 +msgid "All Pages" +msgstr "Alle Pagina's" + +#: bulk-delete.php:258 +msgid "Pages" +msgstr "Pagina's" + +#: bulk-delete.php:264 +#: bulk-delete.php:341 +#: bulk-delete.php:423 +msgid "Move to Trash" +msgstr "Verplaats naar Prullenbak" + +#: bulk-delete.php:265 +#: bulk-delete.php:342 +#: bulk-delete.php:424 +msgid "Delete permanently" +msgstr "Verwijder permanent" + +#: bulk-delete.php:272 +#: bulk-delete.php:351 +#: bulk-delete.php:433 +msgid "Only delete first " +msgstr "Verwijder alleen de eerste" + +#: bulk-delete.php:273 +#: bulk-delete.php:352 +#: bulk-delete.php:434 +msgid "posts." +msgstr "berichten." + +#: bulk-delete.php:274 +#: bulk-delete.php:353 +#: bulk-delete.php:435 +msgid "Use this option if there are more than 1000 posts and the script timesout." +msgstr "Gebruik deze optie als er meer dan 1000 berichten zijn en het script onderbroken wordt." + +#: bulk-delete.php:281 +#: bulk-delete.php:360 +#: bulk-delete.php:442 +msgid "Bulk Delete " +msgstr "Massa Verwijdering" + +#: bulk-delete.php:289 +msgid "By Category" +msgstr "Per Categorie" + +#: bulk-delete.php:290 +msgid "Select the categories whose post you want to delete" +msgstr "Selecteer de categorieën van welke je de berichten wilt verwijderen" + +#: bulk-delete.php:318 +msgid "All Categories" +msgstr "Alle Categorieën" + +#: bulk-delete.php:330 +#: bulk-delete.php:412 +msgid "Only restrict to posts which are " +msgstr "Beperk alleen tot berichten welke zijn " + +#: bulk-delete.php:332 +#: bulk-delete.php:414 +msgid "older than" +msgstr "ouder dan" + +#: bulk-delete.php:333 +#: bulk-delete.php:415 +msgid "posted within last" +msgstr "geplaatst binnen laatst" + +#: bulk-delete.php:335 +#: bulk-delete.php:417 +msgid "days" +msgstr "dagen" + +#: bulk-delete.php:371 +msgid "By Tags" +msgstr "Per Tags" + +#: bulk-delete.php:372 +msgid "Select the tags whose post you want to delete" +msgstr "Selecteer de tags van welke je de berichten wilt verwijderen" + +#: bulk-delete.php:399 +msgid "All Tags" +msgstr "Alle Tags" + +#: bulk-delete.php:452 +msgid "If you are looking to move posts in bulk, instead of deleting then try out my " +msgstr "Als je berichten in veelvoud wilt verplaatsen, ipv verwijderen probeer mijn" + +#: bulk-delete.php:452 +msgid "Bulk Move Plugin" +msgstr "Bulk Move Plugin" + +#: bulk-delete.php:514 +msgid "Are you sure you want to delete all the selected posts" +msgstr "Ben je er zeker van om alle geselecteerde berichten te verwijderen" + +#: bulk-delete.php:516 +msgid "Please select atleast one" +msgstr "Selecteer ten minste één" + +#: bulk-delete.php:574 +msgid "Manage" +msgstr "Beheer" + +#: bulk-delete.php:585 +msgid "plugin" +msgstr "plugin" + +#: bulk-delete.php:585 +msgid "Version" +msgstr "Versie" + +#: bulk-delete.php:585 +msgid "by" +msgstr "door" + +#. Plugin Name of an extension +msgid "Bulk Delete" +msgstr "Bulk Delete" + +#. Plugin URI of an extension +msgid "http://sudarmuthu.com/wordpress/bulk-delete" +msgstr "http://sudarmuthu.com/wordpress/bulk-delete" + +#. Description of an extension +msgid "Bulk delete posts from selected categories or tags. Use it with caution." +msgstr "Massa verwijdering van berichten uit geselecteerde categorieën of tags. Wees voorzichtig." + +#. Author of an extension +msgid "Sudar" +msgstr "Sudar" + +#. Author URI of an extension +msgid "http://sudarmuthu.com/" +msgstr "http://sudarmuthu.com/" + +ulk Delete" + +#. Plugin URI of an extension +msgid "http:// \ No newline at end of file diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BG.mo b/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BG.mo new file mode 100644 index 0000000..0f769a1 Binary files /dev/null and b/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BG.mo differ diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BG.po b/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BG.po new file mode 100644 index 0000000..6d072a2 --- /dev/null +++ b/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BG.po @@ -0,0 +1,267 @@ +# Copyright (C) 2010 Bulk Delete +# This file is distributed under the same license as the Bulk Delete package. +msgid "" +msgstr "" +"Project-Id-Version: Bulk Delete 1.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/bulk-delete\n" +"POT-Creation-Date: 2011-01-24 17:19:16+00:00\n" +"PO-Revision-Date: 2012-01-16 11:24+0200\n" +"Last-Translator: Nikolay Nikolov <statiiki@abv.bg>\n" +"Language-Team: pt-br <sudar@sudarmuthu.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Portuguese\n" +"X-Poedit-Country: BRAZIL\n" + +#: bulk-delete.php:275 +msgid "All the selected posts have been sucessfully deleted." +msgstr "Ð’Ñички избрани публикации Ñа изтрити уÑпешно." + +#: bulk-delete.php:285 +msgid "WARNING: Posts deleted once cannot be retrieved back. Use with caution." +msgstr "Ð’ÐИМÐÐИЕ: Изтриването на публикации е необратимо дейÑтвие. Използвайте внимателно." + +#: bulk-delete.php:290 +msgid "Select the posts which you want to delete" +msgstr "Изберете публикациите, които иÑкате да изтриете" + +#: bulk-delete.php:310 +msgid "All Drafts" +msgstr "Ð’Ñички чернови" + +#: bulk-delete.php:310 +msgid "Drafts" +msgstr "Чернови" + +#: bulk-delete.php:316 +msgid "All Revisions" +msgstr "Ð’Ñички ревизии" + +#: bulk-delete.php:316 +msgid "Revisions" +msgstr "Ревизии" + +#: bulk-delete.php:322 +msgid "All Pending posts" +msgstr "Ð’Ñички публикации чакащи одобрение" + +#: bulk-delete.php:322 +#: bulk-delete.php:328 +#: bulk-delete.php:334 +#: bulk-delete.php:389 +#: bulk-delete.php:477 +#: bulk-delete.php:572 +msgid "Posts" +msgstr "Публикации" + +#: bulk-delete.php:328 +msgid "All scheduled posts" +msgstr "Ð’Ñички планирани публикации" + +#: bulk-delete.php:334 +msgid "All private posts" +msgstr "Ð’Ñички лични публикации" + +#: bulk-delete.php:340 +msgid "All Pages" +msgstr "Ð’Ñички Ñтраници" + +#: bulk-delete.php:340 +msgid "Pages" +msgstr "Страници" + +#: bulk-delete.php:346 +#: bulk-delete.php:423 +#: bulk-delete.php:512 +#: bulk-delete.php:607 +msgid "Move to Trash" +msgstr "ПремеÑти в кошчето" + +#: bulk-delete.php:347 +#: bulk-delete.php:424 +#: bulk-delete.php:513 +#: bulk-delete.php:608 +msgid "Delete permanently" +msgstr "Изтрий завинаги" + +#: bulk-delete.php:354 +#: bulk-delete.php:440 +#: bulk-delete.php:529 +#: bulk-delete.php:624 +msgid "Only delete first " +msgstr "Изтрий Ñамо първите " + +#: bulk-delete.php:355 +#: bulk-delete.php:441 +#: bulk-delete.php:530 +#: bulk-delete.php:625 +msgid "posts." +msgstr "публикации." + +#: bulk-delete.php:356 +#: bulk-delete.php:442 +#: bulk-delete.php:531 +#: bulk-delete.php:626 +msgid "Use this option if there are more than 1000 posts and the script timesout." +msgstr "Използвайте тази опциÑ, ако ще триете повече от 1000 публикации и Ñкрипта не уÑпÑва да завърши. " + +#: bulk-delete.php:363 +#: bulk-delete.php:449 +#: bulk-delete.php:538 +#: bulk-delete.php:633 +msgid "Bulk Delete " +msgstr "МаÑово изтриване" + +#: bulk-delete.php:371 +msgid "By Category" +msgstr "По категориÑ" + +#: bulk-delete.php:372 +msgid "Select the categories whose post you want to delete" +msgstr "Изберете категориите, чиито публикации желаете да изтриете" + +#: bulk-delete.php:400 +msgid "All Categories" +msgstr "Ð’Ñички категории" + +#: bulk-delete.php:412 +#: bulk-delete.php:501 +#: bulk-delete.php:596 +msgid "Only restrict to posts which are " +msgstr "Ограничи до публикации, които Ñа " + +#: bulk-delete.php:414 +#: bulk-delete.php:503 +#: bulk-delete.php:598 +msgid "older than" +msgstr "по-Ñтари от" + +#: bulk-delete.php:415 +#: bulk-delete.php:504 +#: bulk-delete.php:599 +msgid "posted within last" +msgstr "публикувани през поÑледните" + +#: bulk-delete.php:417 +#: bulk-delete.php:506 +#: bulk-delete.php:601 +msgid "days" +msgstr "дни" + +#: bulk-delete.php:430 +#: bulk-delete.php:519 +#: bulk-delete.php:614 +msgid "Public posts" +msgstr "Публични публикации" + +#: bulk-delete.php:431 +#: bulk-delete.php:520 +#: bulk-delete.php:615 +msgid "Private Posts" +msgstr "Лични публикации" + +#: bulk-delete.php:460 +msgid "By Tags" +msgstr "По етикети" + +#: bulk-delete.php:461 +msgid "Select the tags whose post you want to delete" +msgstr "Изберете етикетите, чиито публикации желаете да изтриете" + +#: bulk-delete.php:488 +msgid "All Tags" +msgstr "Ð’Ñички етикети" + +#: bulk-delete.php:553 +msgid "By Taxonomies" +msgstr "По такÑономии" + +#: bulk-delete.php:554 +msgid "Select the taxonomies whose post you want to delete" +msgstr "Изберете такÑономиите, чиито публикации желаете да изтриете" + +#: bulk-delete.php:583 +msgid "All Taxonomies" +msgstr "Ð’Ñички такÑономии" + +#: bulk-delete.php:643 +msgid "Support" +msgstr "Поддръжка" + +#: bulk-delete.php:644 +msgid "If you have any questions/comments/feedback about the Plugin then post a comment in the <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Plugins homepage</a>." +msgstr "Ðко имате нÑкакви въпроÑи/коментари/обратна връзка отноÑно разширението, публикувайте коментар в <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">уеб Ñтраницата на разширението</a>." + +#: bulk-delete.php:645 +msgid "If you like the Plugin, then consider doing one of the following." +msgstr "Ðко хареÑвате това разширение, можете да направите едно от Ñледните неща." + +#: bulk-delete.php:647 +msgid "Write a blog post about the Plugin." +msgstr "Да напишете блог Ð¿ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° разширението." + +#: bulk-delete.php:648 +msgid " about it." +msgstr " -нете за него." + +#: bulk-delete.php:649 +msgid "Give a <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">good rating</a>." +msgstr "Дайте му <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">добра оценка</a>." + +#: bulk-delete.php:650 +msgid "Say <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">thank you</a>." +msgstr "Кажете <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">благодарÑ</a>." + +#: bulk-delete.php:653 +msgid "If you are looking to move posts in bulk, instead of deleting then try out my " +msgstr "Ðко иÑкате да премеÑтвате маÑово публикации, вмеÑто да ги изтривате, то погледнете Ð¼Ð¾Ñ " + +#: bulk-delete.php:653 +msgid "Bulk Move Plugin" +msgstr "Bulk Move Plugin" + +#: bulk-delete.php:715 +msgid "Are you sure you want to delete all the selected posts" +msgstr "Сигурни ли Ñте, че иÑкате да изтриете вÑички избрани публикации" + +#: bulk-delete.php:717 +msgid "Please select at least one" +msgstr "МолÑ, изберете поне една" + +#: bulk-delete.php:808 +msgid "Manage" +msgstr "УправлÑвай" + +#: bulk-delete.php:819 +msgid "plugin" +msgstr "разширение" + +#: bulk-delete.php:819 +msgid "Version" +msgstr "ВерÑиÑ" + +#: bulk-delete.php:819 +msgid "by" +msgstr "от" + +#. Plugin Name of the plugin/theme +msgid "Bulk Delete" +msgstr "Bulk Delete" + +#. Plugin URI of the plugin/theme +msgid "http://sudarmuthu.com/wordpress/bulk-delete" +msgstr "http://sudarmuthu.com/wordpress/bulk-delete" + +#. Description of the plugin/theme +msgid "Bulk delete posts from selected categories or tags. Use it with caution." +msgstr "МаÑово изтриване на публикации по категории или етикети. Използвайте внимателно." + +#. Author of the plugin/theme +msgid "Sudar" +msgstr "Sudar" + +#. Author URI of the plugin/theme +msgid "http://sudarmuthu.com/" +msgstr "http://sudarmuthu.com/" + diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BR.mo b/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BR.mo new file mode 100644 index 0000000..03896d5 Binary files /dev/null and b/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BR.mo differ diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BR.po b/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BR.po new file mode 100644 index 0000000..87975da --- /dev/null +++ b/wp-content/plugins/bulk-delete/languages/bulk-delete-pt_BR.po @@ -0,0 +1,267 @@ +# Copyright (C) 2010 Bulk Delete +# This file is distributed under the same license as the Bulk Delete package. +msgid "" +msgstr "" +"Project-Id-Version: Bulk Delete 1.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/bulk-delete\n" +"POT-Creation-Date: 2011-01-24 17:19:16+00:00\n" +"PO-Revision-Date: 2011-02-05 16:15-0300\n" +"Last-Translator: Marcelo <contato@techload.com.br>\n" +"Language-Team: pt-br <sudar@sudarmuthu.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Portuguese\n" +"X-Poedit-Country: BRAZIL\n" + +#: bulk-delete.php:275 +msgid "All the selected posts have been sucessfully deleted." +msgstr "Todos os posts selecionados foram deletados com sucesso." + +#: bulk-delete.php:285 +msgid "WARNING: Posts deleted once cannot be retrieved back. Use with caution." +msgstr "AVISO: Depois de deletados os posts não podem ser recuperados. Use com cuidado." + +#: bulk-delete.php:290 +msgid "Select the posts which you want to delete" +msgstr "Selecione os posts que deseja deletar" + +#: bulk-delete.php:310 +msgid "All Drafts" +msgstr "Todos os Rascunhos" + +#: bulk-delete.php:310 +msgid "Drafts" +msgstr "Rascunhos" + +#: bulk-delete.php:316 +msgid "All Revisions" +msgstr "Todas as Revisões" + +#: bulk-delete.php:316 +msgid "Revisions" +msgstr "Revisões" + +#: bulk-delete.php:322 +msgid "All Pending posts" +msgstr "Todos os posts Pendentes" + +#: bulk-delete.php:322 +#: bulk-delete.php:328 +#: bulk-delete.php:334 +#: bulk-delete.php:389 +#: bulk-delete.php:477 +#: bulk-delete.php:572 +msgid "Posts" +msgstr "Posts" + +#: bulk-delete.php:328 +msgid "All scheduled posts" +msgstr "Todos os posts agendados" + +#: bulk-delete.php:334 +msgid "All private posts" +msgstr "Todos os posts privados" + +#: bulk-delete.php:340 +msgid "All Pages" +msgstr "Todas as páginas" + +#: bulk-delete.php:340 +msgid "Pages" +msgstr "Páginas" + +#: bulk-delete.php:346 +#: bulk-delete.php:423 +#: bulk-delete.php:512 +#: bulk-delete.php:607 +msgid "Move to Trash" +msgstr "Mover para a Lixeira" + +#: bulk-delete.php:347 +#: bulk-delete.php:424 +#: bulk-delete.php:513 +#: bulk-delete.php:608 +msgid "Delete permanently" +msgstr "Deletar permanentemente" + +#: bulk-delete.php:354 +#: bulk-delete.php:440 +#: bulk-delete.php:529 +#: bulk-delete.php:624 +msgid "Only delete first " +msgstr "Deletar somente o primeiro" + +#: bulk-delete.php:355 +#: bulk-delete.php:441 +#: bulk-delete.php:530 +#: bulk-delete.php:625 +msgid "posts." +msgstr "posts." + +#: bulk-delete.php:356 +#: bulk-delete.php:442 +#: bulk-delete.php:531 +#: bulk-delete.php:626 +msgid "Use this option if there are more than 1000 posts and the script timesout." +msgstr "Use esta opção se houver mais de 1000 posts e o script esgotar o tempo" + +#: bulk-delete.php:363 +#: bulk-delete.php:449 +#: bulk-delete.php:538 +#: bulk-delete.php:633 +msgid "Bulk Delete " +msgstr "Deletar em Massa" + +#: bulk-delete.php:371 +msgid "By Category" +msgstr "Por Categoria" + +#: bulk-delete.php:372 +msgid "Select the categories whose post you want to delete" +msgstr "Selecione as categorias cujos posts deseja deletar" + +#: bulk-delete.php:400 +msgid "All Categories" +msgstr "Todas Categorias" + +#: bulk-delete.php:412 +#: bulk-delete.php:501 +#: bulk-delete.php:596 +msgid "Only restrict to posts which are " +msgstr "Restringir somente aos posts que são" + +#: bulk-delete.php:414 +#: bulk-delete.php:503 +#: bulk-delete.php:598 +msgid "older than" +msgstr "mais antigos que" + +#: bulk-delete.php:415 +#: bulk-delete.php:504 +#: bulk-delete.php:599 +msgid "posted within last" +msgstr "posts dentro dos últimos" + +#: bulk-delete.php:417 +#: bulk-delete.php:506 +#: bulk-delete.php:601 +msgid "days" +msgstr "dias" + +#: bulk-delete.php:430 +#: bulk-delete.php:519 +#: bulk-delete.php:614 +msgid "Public posts" +msgstr "Posts públicos" + +#: bulk-delete.php:431 +#: bulk-delete.php:520 +#: bulk-delete.php:615 +msgid "Private Posts" +msgstr "Posts privados" + +#: bulk-delete.php:460 +msgid "By Tags" +msgstr "Por Tags" + +#: bulk-delete.php:461 +msgid "Select the tags whose post you want to delete" +msgstr "Selecione as tags cujos posts deseja deletar" + +#: bulk-delete.php:488 +msgid "All Tags" +msgstr "Todas as Tags" + +#: bulk-delete.php:553 +msgid "By Taxonomies" +msgstr "Por Taxonomias" + +#: bulk-delete.php:554 +msgid "Select the taxonomies whose post you want to delete" +msgstr "Selecione as taxonomias cujos posts deseja deletar" + +#: bulk-delete.php:583 +msgid "All Taxonomies" +msgstr "Todas Taxonomias" + +#: bulk-delete.php:643 +msgid "Support" +msgstr "Suporte" + +#: bulk-delete.php:644 +msgid "If you have any questions/comments/feedback about the Plugin then post a comment in the <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Plugins homepage</a>." +msgstr "Se você tem alguma pergunta/comentário/feedback sobre o Plugin, poste um comentário na <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Página do Plugin</a>." + +#: bulk-delete.php:645 +msgid "If you like the Plugin, then consider doing one of the following." +msgstr "Se você gostou do Plugin, considere:" + +#: bulk-delete.php:647 +msgid "Write a blog post about the Plugin." +msgstr "Escrever um post sobre o Plugin em seu blog." + +#: bulk-delete.php:648 +msgid " about it." +msgstr "sobre o Plugin." + +#: bulk-delete.php:649 +msgid "Give a <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">good rating</a>." +msgstr "Dar uma <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">boa nota</a>." + +#: bulk-delete.php:650 +msgid "Say <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">thank you</a>." +msgstr "Dizer <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">obrigado</a>." + +#: bulk-delete.php:653 +msgid "If you are looking to move posts in bulk, instead of deleting then try out my " +msgstr "Se está procurando mover posts em massa, em vez de deletá-los, tente o meu" + +#: bulk-delete.php:653 +msgid "Bulk Move Plugin" +msgstr "Bulk Move Plugin (Plugin Mover em Massa)" + +#: bulk-delete.php:715 +msgid "Are you sure you want to delete all the selected posts" +msgstr "Tem certeza que deseja deletar todos os posts selecionados" + +#: bulk-delete.php:717 +msgid "Please select at least one" +msgstr "Por favor, selecione pelo menos um" + +#: bulk-delete.php:808 +msgid "Manage" +msgstr "Gerenciar" + +#: bulk-delete.php:819 +msgid "plugin" +msgstr "plugin" + +#: bulk-delete.php:819 +msgid "Version" +msgstr "Versão" + +#: bulk-delete.php:819 +msgid "by" +msgstr "por" + +#. Plugin Name of the plugin/theme +msgid "Bulk Delete" +msgstr "Bulk Delete (Deletar em Massa)" + +#. Plugin URI of the plugin/theme +msgid "http://sudarmuthu.com/wordpress/bulk-delete" +msgstr "http://sudarmuthu.com/wordpress/bulk-delete" + +#. Description of the plugin/theme +msgid "Bulk delete posts from selected categories or tags. Use it with caution." +msgstr "Deleta posts em massa a partir das categorias ou tags selecionadas. Use com cuidado." + +#. Author of the plugin/theme +msgid "Sudar" +msgstr "Sudar" + +#. Author URI of the plugin/theme +msgid "http://sudarmuthu.com/" +msgstr "http://sudarmuthu.com/" + diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-ru_RU.mo b/wp-content/plugins/bulk-delete/languages/bulk-delete-ru_RU.mo new file mode 100644 index 0000000..1a84b97 Binary files /dev/null and b/wp-content/plugins/bulk-delete/languages/bulk-delete-ru_RU.mo differ diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete-ru_RU.po b/wp-content/plugins/bulk-delete/languages/bulk-delete-ru_RU.po new file mode 100644 index 0000000..fc0c529 --- /dev/null +++ b/wp-content/plugins/bulk-delete/languages/bulk-delete-ru_RU.po @@ -0,0 +1,272 @@ +# Copyright (C) 2010 Bulk Delete +# This file is distributed under the same license as the Bulk Delete package. +msgid "" +msgstr "" +"Project-Id-Version: Bulk Delete 1.1\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/bulk-delete\n" +"POT-Creation-Date: 2012-03-16 13:58:07+00:00\n" +"PO-Revision-Date: 2012-03-16 20:27+0600\n" +"Last-Translator: \n" +"Language-Team: Kirky <kirky.ru@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: bulk-delete.php:302 +msgid "All the selected posts have been sucessfully deleted." +msgstr "Ð’Ñе отмеченные запиÑи были уÑпешно удалены." + +#: bulk-delete.php:312 +msgid "WARNING: Posts deleted once cannot be retrieved back. Use with caution." +msgstr "Ð’ÐИМÐÐИЕ: удаленные запиÑи невозможно воÑÑтановить. Будьте оÑторожны." + +#: bulk-delete.php:317 +msgid "Select the posts which you want to delete" +msgstr "Выберите запиÑи, которые вы хотите удалить" + +#: bulk-delete.php:337 +msgid "All Drafts" +msgstr "Ð’Ñе черновики" + +#: bulk-delete.php:337 +msgid "Drafts" +msgstr "черновиков" + +#: bulk-delete.php:343 +msgid "All Revisions" +msgstr "Ð’Ñе верÑии запиÑей" + +#: bulk-delete.php:343 +msgid "Revisions" +msgstr "верÑий" + +#: bulk-delete.php:349 +msgid "All Pending posts" +msgstr "Ð’Ñе запиÑи на раÑÑмотрении" + +#: bulk-delete.php:349 +#: bulk-delete.php:355 +#: bulk-delete.php:361 +#: bulk-delete.php:425 +#: bulk-delete.php:513 +#: bulk-delete.php:608 +msgid "Posts" +msgstr "запиÑей" + +#: bulk-delete.php:355 +msgid "All scheduled posts" +msgstr "Ð’Ñе запланированные запиÑи" + +#: bulk-delete.php:361 +msgid "All private posts" +msgstr "Ð’Ñе личные запиÑи" + +#: bulk-delete.php:367 +msgid "All Pages" +msgstr "Ð’Ñе Ñтраницы" + +#: bulk-delete.php:367 +msgid "Pages" +msgstr "Ñтраниц" + +#: bulk-delete.php:374 +msgid "Delete these specific pages" +msgstr "Определенные Ñтраницы (введите ÑÑылки на них):" + +#: bulk-delete.php:381 +#: bulk-delete.php:459 +#: bulk-delete.php:548 +#: bulk-delete.php:643 +msgid "Move to Trash" +msgstr "ПеремеÑтить в корзину" + +#: bulk-delete.php:382 +#: bulk-delete.php:460 +#: bulk-delete.php:549 +#: bulk-delete.php:644 +msgid "Delete permanently" +msgstr "Удалить навÑегда" + +#: bulk-delete.php:389 +#: bulk-delete.php:476 +#: bulk-delete.php:565 +#: bulk-delete.php:660 +msgid "Only delete first " +msgstr "Удалить только первые" + +#: bulk-delete.php:390 +#: bulk-delete.php:477 +#: bulk-delete.php:566 +#: bulk-delete.php:661 +msgid "posts." +msgstr "запиÑей." + +#: bulk-delete.php:391 +#: bulk-delete.php:478 +#: bulk-delete.php:567 +#: bulk-delete.php:662 +msgid "Use this option if there are more than 1000 posts and the script timesout." +msgstr "ИÑпользуйте опцию выше при удалении большого количеÑтва запиÑей или «белой Ñтраницы» поÑле Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñкрипта." + +#: bulk-delete.php:399 +#: bulk-delete.php:485 +#: bulk-delete.php:574 +#: bulk-delete.php:669 +msgid "Bulk Delete " +msgstr "Удалить" + +#: bulk-delete.php:407 +msgid "By Category" +msgstr "Удаление по рубрикам" + +#: bulk-delete.php:408 +msgid "Select the categories whose post you want to delete" +msgstr "Выберите рубрику, из которой вы хотите удалить запиÑи" + +#: bulk-delete.php:436 +msgid "All Categories" +msgstr "Ð’Ñе рубрики" + +#: bulk-delete.php:448 +#: bulk-delete.php:537 +#: bulk-delete.php:632 +msgid "Only restrict to posts which are " +msgstr "Только удалÑть запиÑи" + +#: bulk-delete.php:450 +#: bulk-delete.php:539 +#: bulk-delete.php:634 +msgid "older than" +msgstr "Ñтарше" + +#: bulk-delete.php:451 +#: bulk-delete.php:540 +#: bulk-delete.php:635 +msgid "posted within last" +msgstr "опубликованные за поÑледние" + +#: bulk-delete.php:453 +#: bulk-delete.php:542 +#: bulk-delete.php:637 +msgid "days" +msgstr "дней" + +#: bulk-delete.php:466 +#: bulk-delete.php:555 +#: bulk-delete.php:650 +msgid "Public posts" +msgstr "Публичные запиÑи" + +#: bulk-delete.php:467 +#: bulk-delete.php:556 +#: bulk-delete.php:651 +msgid "Private Posts" +msgstr "Личные запиÑи" + +#: bulk-delete.php:496 +msgid "By Tags" +msgstr "Удаление по меткам" + +#: bulk-delete.php:497 +msgid "Select the tags whose post you want to delete" +msgstr "Выберите метки, по которым вы хотите удалить запиÑи" + +#: bulk-delete.php:524 +msgid "All Tags" +msgstr "Ð’Ñе метки" + +#: bulk-delete.php:589 +msgid "By Taxonomies" +msgstr "Удаление по типу (такÑономии)" + +#: bulk-delete.php:590 +msgid "Select the taxonomies whose post you want to delete" +msgstr "Выберите типы запиÑей, которые вы хотите удалить" + +#: bulk-delete.php:619 +msgid "All Taxonomies" +msgstr "Ð’Ñе типы" + +#: bulk-delete.php:679 +msgid "Support" +msgstr "Ð¡Ð¿Ñ€Ð°Ð²Ð¾Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" + +#: bulk-delete.php:680 +msgid "If you have any questions/comments/feedback about the Plugin then post a comment in the <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Plugins homepage</a>." +msgstr "ЕÑли у Ð²Ð°Ñ ÐµÑть вопроÑÑ‹/комментарии/Ð¿Ð¾Ð¶ÐµÐ»Ð°Ð½Ð¸Ñ Ð¿Ð¾ плагину, то вы можете оÑтавить их в виде ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ Ð½Ð° английÑком Ñзыке на <a target=\"_blank\" href = \"http://sudarmuthu.com/wordpress/bulk-delete\">Ñтраничке</a> плагина." + +#: bulk-delete.php:681 +msgid "If you like the Plugin, then consider doing one of the following." +msgstr "ЕÑли вам понравилÑÑ Ð¿Ð»Ð°Ð³Ð¸Ð½, то вы можете помочь его Ñоздателю одним из Ñледующих ÑпоÑобов:" + +#: bulk-delete.php:683 +msgid "Write a blog post about the Plugin." +msgstr "Ðапишите запиÑÑŒ в Ñвоем блоге о плагине." + +#: bulk-delete.php:684 +msgid " about it." +msgstr " в Ñвоем Твиттере." + +#: bulk-delete.php:685 +msgid "Give a <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">good rating</a>." +msgstr "ОÑтавьте <a href = \"http://wordpress.org/extend/plugins/bulk-delete/\" target=\"_blank\">положительную оценку</a>." + +#: bulk-delete.php:686 +msgid "Say <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">thank you</a>." +msgstr "Скажите <a href = \"http://sudarmuthu.com/if-you-wanna-thank-me\" target=\"_blank\">«СпаÑибо!»</a>." + +#: bulk-delete.php:689 +msgid "If you are looking to move posts in bulk, instead of deleting then try out my " +msgstr "ЕÑли вы хотите маÑÑово перемеÑтить запиÑи, а не удалить их, то вы можете воÑпользоватьÑÑ Ð¼Ð¾Ð¸Ð¼" + +#: bulk-delete.php:689 +msgid "Bulk Move Plugin" +msgstr "плагином маÑÑового перемещениÑ" + +#: bulk-delete.php:751 +msgid "Are you sure you want to delete all the selected posts" +msgstr "Ð’Ñ‹ уверены, что хотите удалить вÑе отмеченные запиÑи?" + +#: bulk-delete.php:753 +msgid "Please select at least one" +msgstr "ПожалуйÑта, выберите Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один тип запиÑей" + +#: bulk-delete.php:844 +msgid "Manage" +msgstr "Управление" + +#: bulk-delete.php:855 +msgid "plugin" +msgstr " " + +#: bulk-delete.php:855 +msgid "Version" +msgstr "ВерÑиÑ" + +#: bulk-delete.php:855 +msgid "by" +msgstr "Ðвтор:" + +#. Plugin Name of the plugin/theme +msgid "Bulk Delete" +msgstr "МаÑÑовое удаление" + +#. Plugin URI of the plugin/theme +msgid "http://sudarmuthu.com/wordpress/bulk-delete" +msgstr "http://sudarmuthu.com/wordpress/bulk-delete" + +#. Description of the plugin/theme +msgid "Bulk delete posts from selected categories or tags. Use it with caution." +msgstr "Плагин Ð´Ð»Ñ Ð¼Ð°ÑÑового ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñодержимого вашего Ñайта. ИÑпользуйте Ñ Ð¾ÑторожноÑтью." + +#. Author of the plugin/theme +msgid "Sudar" +msgstr "Sudar" + +#. Author URI of the plugin/theme +msgid "http://sudarmuthu.com/" +msgstr "http://sudarmuthu.com/" + diff --git a/wp-content/plugins/bulk-delete/languages/bulk-delete.pot b/wp-content/plugins/bulk-delete/languages/bulk-delete.pot new file mode 100644 index 0000000..d63f415 --- /dev/null +++ b/wp-content/plugins/bulk-delete/languages/bulk-delete.pot @@ -0,0 +1,255 @@ +# Copyright (C) 2012 Bulk Delete +# This file is distributed under the same license as the Bulk Delete package. +msgid "" +msgstr "" +"Project-Id-Version: Bulk Delete 2.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/bulk-delete\n" +"POT-Creation-Date: 2012-04-01 14:20:55+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2012-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" + +#: bulk-delete.php:296 +msgid "All the selected posts have been successfully deleted." +msgstr "" + +#: bulk-delete.php:307 +msgid "WARNING: Posts deleted once cannot be retrieved back. Use with caution." +msgstr "" + +#: bulk-delete.php:320 +msgid "By Type" +msgstr "" + +#: bulk-delete.php:322 +msgid "Select the posts which you want to delete" +msgstr "" + +#: bulk-delete.php:342 +msgid "All Drafts" +msgstr "" + +#: bulk-delete.php:342 +msgid "Drafts" +msgstr "" + +#: bulk-delete.php:349 +msgid "All Revisions" +msgstr "" + +#: bulk-delete.php:349 +msgid "Revisions" +msgstr "" + +#: bulk-delete.php:356 +msgid "All Pending posts" +msgstr "" + +#: bulk-delete.php:356 bulk-delete.php:363 bulk-delete.php:370 +#: bulk-delete.php:448 bulk-delete.php:548 bulk-delete.php:652 +msgid "Posts" +msgstr "" + +#: bulk-delete.php:363 +msgid "All scheduled posts" +msgstr "" + +#: bulk-delete.php:370 +msgid "All private posts" +msgstr "" + +#: bulk-delete.php:377 +msgid "All Pages" +msgstr "" + +#: bulk-delete.php:377 +msgid "Pages" +msgstr "" + +#: bulk-delete.php:384 +msgid "" +"Delete these specific pages (Enter one post url (not post ids) per line)" +msgstr "" + +#: bulk-delete.php:392 bulk-delete.php:465 bulk-delete.php:565 +#: bulk-delete.php:669 +msgid "Choose your filtering options" +msgstr "" + +#: bulk-delete.php:398 bulk-delete.php:485 bulk-delete.php:585 +#: bulk-delete.php:689 +msgid "Move to Trash" +msgstr "" + +#: bulk-delete.php:399 bulk-delete.php:486 bulk-delete.php:586 +#: bulk-delete.php:690 +msgid "Delete permanently" +msgstr "" + +#: bulk-delete.php:406 bulk-delete.php:502 bulk-delete.php:602 +#: bulk-delete.php:706 +msgid "Only delete first " +msgstr "" + +#: bulk-delete.php:407 bulk-delete.php:503 bulk-delete.php:603 +#: bulk-delete.php:707 +msgid "posts." +msgstr "" + +#: bulk-delete.php:408 bulk-delete.php:504 bulk-delete.php:604 +#: bulk-delete.php:708 +msgid "" +"Use this option if there are more than 1000 posts and the script timesout." +msgstr "" + +#: bulk-delete.php:416 bulk-delete.php:511 bulk-delete.php:611 +#: bulk-delete.php:715 +msgid "Bulk Delete " +msgstr "" + +#: bulk-delete.php:430 +msgid "By Category" +msgstr "" + +#: bulk-delete.php:432 +msgid "Select the categories whose post you want to delete" +msgstr "" + +#: bulk-delete.php:459 +msgid "All Categories" +msgstr "" + +#: bulk-delete.php:474 bulk-delete.php:574 bulk-delete.php:678 +msgid "Only restrict to posts which are " +msgstr "" + +#: bulk-delete.php:476 bulk-delete.php:576 bulk-delete.php:680 +msgid "older than" +msgstr "" + +#: bulk-delete.php:477 bulk-delete.php:577 bulk-delete.php:681 +msgid "posted within last" +msgstr "" + +#: bulk-delete.php:479 bulk-delete.php:579 bulk-delete.php:683 +msgid "days" +msgstr "" + +#: bulk-delete.php:492 bulk-delete.php:592 bulk-delete.php:696 +msgid "Public posts" +msgstr "" + +#: bulk-delete.php:493 bulk-delete.php:593 bulk-delete.php:697 +msgid "Private Posts" +msgstr "" + +#: bulk-delete.php:529 +msgid "By Tags" +msgstr "" + +#: bulk-delete.php:532 +msgid "Select the tags whose post you want to delete" +msgstr "" + +#: bulk-delete.php:559 +msgid "All Tags" +msgstr "" + +#: bulk-delete.php:632 +msgid "By Taxonomies" +msgstr "" + +#: bulk-delete.php:634 +msgid "Select the taxonomies whose post you want to delete" +msgstr "" + +#: bulk-delete.php:663 +msgid "All Taxonomies" +msgstr "" + +#: bulk-delete.php:731 +msgid "Debug Information" +msgstr "" + +#: bulk-delete.php:733 +msgid "" +"If you are seeing a blank page after clicking the Bulk Delete button, then " +msgstr "" + +#: bulk-delete.php:733 +msgid "check out this FAQ" +msgstr "" + +#: bulk-delete.php:734 +msgid "You also need need the following debug information." +msgstr "" + +#: bulk-delete.php:737 +msgid "Available memory size " +msgstr "" + +#: bulk-delete.php:741 +msgid "Script time out " +msgstr "" + +#: bulk-delete.php:745 +msgid "Script input time " +msgstr "" + +#: bulk-delete.php:752 +msgid "" +"If you are looking to move posts in bulk, instead of deleting then try out " +"my " +msgstr "" + +#: bulk-delete.php:752 +msgid "Bulk Move Plugin" +msgstr "" + +#: bulk-delete.php:857 +msgid "Manage" +msgstr "" + +#: bulk-delete.php:870 +msgid "plugin" +msgstr "" + +#: bulk-delete.php:870 +msgid "Version" +msgstr "" + +#: bulk-delete.php:870 +msgid "by" +msgstr "" + +#: bulk-delete.php:931 +msgid "Are you sure you want to delete all the selected posts" +msgstr "" + +#: bulk-delete.php:933 +msgid "Please select at least one" +msgstr "" + +#. Plugin Name of the plugin/theme +msgid "Bulk Delete" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://sudarmuthu.com/wordpress/bulk-delete" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"Bulk delete posts from selected categories or tags. Use it with caution." +msgstr "" + +#. Author of the plugin/theme +msgid "Sudar" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://sudarmuthu.com/" +msgstr "" diff --git a/wp-content/plugins/bulk-delete/readme.txt b/wp-content/plugins/bulk-delete/readme.txt new file mode 100644 index 0000000..a63291e --- /dev/null +++ b/wp-content/plugins/bulk-delete/readme.txt @@ -0,0 +1,159 @@ +=== Bulk Delete === +Contributors: sudar +Tags: post, comment, delete, bulk, draft, revision, page +Requires at least: 2.0 +Tested up to: 3.3.1 +Donate Link: http://sudarmuthu.com/if-you-wanna-thank-me +Stable tag: 2.1 + +Bulk delete posts from selected categories or tags + +== Description == + +Bulk Delete is a WordPress Plugin which can be used to delete posts in bulk from selected categories, tags or custom taxonomies. This Plugin can also delete all drafts, post revisions or pages. + +More details about the Plugin can be found at the [Plugins Home page][1]. + +If you looking for just moving posts, instead of deleting, then use [Bulk Move Plugin][2] instead. + +### Translation + +* Dutch (Thanks Rene of [WordPress WPwebshop][3]) +* Brazilian Portuguese (Thanks Marcelo of [Criacao de Sites em Ribeirao Preto][4]) +* German (Thanks Jenny Beelens of [professionaltranslation.com][8]) +* Turkish Portuguese (Thanks [Bahadir Yildiz][9]) +* Spanish (Thanks Brian Flores of [InMotion Hosting][10]) +* Italian (Thanks Paolo Gabrielli) +* Bulgarian (Thanks Nikolay Nikolov of [Skype Fan Blog][11]) +* Russian (Thanks Maxim Pesteev, [Weblancer.net profile][12]) +* Lithuanian (Thanks Vincent G from [http://www.host1free.com][13]) + +### Support + +Support for the Plugin is available from the [Plugin's home page][1]. If you have any questions or suggestions, do leave a comment there or contact me in [twitter][5]. + +### Links + +* [Plugin home page][1] +* [Author's Blog][6] +* [Other Plugins by the author][7] + + [1]: http://sudarmuthu.com/wordpress/bulk-delete + [2]: http://sudarmuthu.com/wordpress/bulk-move + [3]: http://wpwebshop.com/premium-wordpress-plugins/ + [4]: http://www.techload.com.br/ + [5]: http://twitter.com/sudarmuthu + [6]: http://sudarmuthu.com/blog + [7]: http://sudarmuthu.com/wordpress + [8]: http://www.professionaltranslation.com + [9]: http://www.matematik.us + [10]: http://www.inmotionhosting.com/ + [11]: http://en.chat4o.com/ + [12]: http://www.weblancer.net/users/Kirky/ + [13]: http://www.host1free.com + +== Installation == + +Extract the zip file and just drop the contents in the wp-content/plugins/ directory of your WordPress installation and then activate the Plugin from Plugins page. + +== Frequently Asked Questions == + += After installing the Plugin, I just see a blank page. = + +This can happen if you have huge number of posts and your server is very unpowered. Check your PHP error log to see if there are any errors and correct them. The most common problems are script timeout or running out of memory. Change your PHP.ini file and increase the script timeout and/or amount of memory used by PHP process. + +In particular try to change the following settings + +* max_execution_time = 600 ; Maximum execution time of each script, in seconds +* max_input_time = 30; Maximum amount of time each script may spend parsing request data +* memory_limit = 256M ; Maximum amount of memory a script may consume (8MB) + +Additional FAQ and troubleshooting guide can be found in the [Plugins's homepage][1] + +== Screenshot == + +1. Delete posts based on type + +2. Delete posts based on date, post visibility or choose to move them to trash or delete permanently + +3. Delete Posts by Categories or Tags + +4. Delete Posts by Custom taxonomies + +== Changelog == + +###v0.1 (2009-02-02) + +* first version + +###v0.2 (2009-02-03) + +* Fixed issues with pagging + +###v0.3 (2009-04-05) + +* Prevented drafts from deleted when only posts are selected + +###v0.4 (2009-07-05) + +* Added option to delete by date. + +###v0.5 (2009-07-21) +* Added option to delete all pending posts. + +###v0.6 (2009-07-22) +* Added option to delete all scheduled posts. + +###v0.7 (2010-02-21) +* Added an option to delete posts directly or send them to trash. +* Added support for translation. + +###v0.8 (2010-03-17) +* Added support for private posts. + +###v1.0 (2010-06-19) +* Proper handling of limits. + +###v1.1 (2011-01-22) +* Added support to delete posts by custom taxonomies +* Added Dutch Translation +* Added Brazilian Portuguese Translation + +###v1.2 (2011-02-06) +* Added some optimization to handle huge number of posts in underpowered servers + +###v1.3 (2011-05-11) +* Added German translations + +###v1.4 (2011-08-25) +* Added Turkish translations + +###v1.5 (2011-11-13) +* Added Spanish translations + +###v1.6 (2011-11-28) +* Added Italian translations + +###v1.7 (2012-01-12) +* Added Bulgarian translations + +###v1.8 (2012-01-31) +* Added roles and capabilities for menu + +###v1.9 (2012-03-16) +* Added support for deleting by permalink. Credit Martin Capodici +* Fixed issues with translations +* Added Rusian translations + +###v2.0 (2012-04-01) Dev Time: 10 hours +* Fixed a major issue in how dates were handled. +* Major UI revamp +* Added debug information and support urls + +###v2.1 (2012-04-07) Dev Time: 1 hour +* Fixed CSS issues in IE +* Added Lithuanian translations + +==Readme Generator== + +This Readme file was generated using <a href = 'http://sudarmuthu.com/wordpress/wp-readme'>wp-readme</a>, which generates readme files for WordPress Plugins. diff --git a/wp-content/plugins/bulk-delete/screenshot-1.png b/wp-content/plugins/bulk-delete/screenshot-1.png new file mode 100644 index 0000000..53875a2 Binary files /dev/null and b/wp-content/plugins/bulk-delete/screenshot-1.png differ diff --git a/wp-content/plugins/bulk-delete/screenshot-2.png b/wp-content/plugins/bulk-delete/screenshot-2.png new file mode 100644 index 0000000..e9b2c93 Binary files /dev/null and b/wp-content/plugins/bulk-delete/screenshot-2.png differ diff --git a/wp-content/plugins/bulk-delete/screenshot-3.png b/wp-content/plugins/bulk-delete/screenshot-3.png new file mode 100644 index 0000000..e583940 Binary files /dev/null and b/wp-content/plugins/bulk-delete/screenshot-3.png differ diff --git a/wp-content/plugins/bulk-delete/screenshot-4.png b/wp-content/plugins/bulk-delete/screenshot-4.png new file mode 100644 index 0000000..c928572 Binary files /dev/null and b/wp-content/plugins/bulk-delete/screenshot-4.png differ diff --git a/wp-content/plugins/duplicate-post/duplicate-post-admin.php b/wp-content/plugins/duplicate-post/duplicate-post-admin.php new file mode 100644 index 0000000..bbfdfa8 --- /dev/null +++ b/wp-content/plugins/duplicate-post/duplicate-post-admin.php @@ -0,0 +1,354 @@ +<?php +// Added by WarmStal +if(!is_admin()) +return; + +require_once (dirname(__FILE__).'/duplicate-post-options.php'); + +/** + * Wrapper for the option 'duplicate_post_version' + */ +function duplicate_post_get_installed_version() { + return get_option( 'duplicate_post_version' ); +} + +/** + * Wrapper for the defined constant DUPLICATE_POST_CURRENT_VERSION + */ +function duplicate_post_get_current_version() { + return DUPLICATE_POST_CURRENT_VERSION; +} + +/** + * Plugin upgrade + */ +add_action('admin_init','duplicate_post_plugin_upgrade'); + +function duplicate_post_plugin_upgrade() { + $installed_version = duplicate_post_get_installed_version(); + + if (empty($installed_version)) { // first install + + // Add capability to admin and editors + + // Get default roles + $default_roles = array( + 3 => 'editor', + 8 => 'administrator', + ); + + // Cycle all roles and assign capability if its level >= duplicate_post_copy_user_level + foreach ($default_roles as $level => $name){ + $role = get_role($name); + if(!empty($role)) $role->add_cap( 'copy_posts' ); + } + + add_option('duplicate_post_copyexcerpt','1'); + add_option('duplicate_post_copyattachments','0'); + add_option('duplicate_post_copychildren','0'); + add_option('duplicate_post_copystatus','0'); + add_option('duplicate_post_taxonomies_blacklist',array()); + add_option('duplicate_post_show_row','1'); + add_option('duplicate_post_show_adminbar','1'); + add_option('duplicate_post_show_submitbox','1'); + } else if ( $installed_version==duplicate_post_get_current_version() ) { //re-install + // do nothing + } else { //upgrade form previous version + // delete old, obsolete options + delete_option('duplicate_post_admin_user_level'); + delete_option('duplicate_post_create_user_level'); + delete_option('duplicate_post_view_user_level'); + delete_option('dp_notice'); + + /* + * Convert old userlevel option to new capability scheme + */ + + // Get old duplicate_post_copy_user_level option + $min_user_level = get_option('duplicate_post_copy_user_level'); + + if (!empty($min_user_level)){ + // Get default roles + $default_roles = array( + 1 => 'contributor', + 2 => 'author', + 3 => 'editor', + 8 => 'administrator', + ); + + // Cycle all roles and assign capability if its level >= duplicate_post_copy_user_level + foreach ($default_roles as $level => $name){ + $role = get_role($name); + if ($role && $min_user_level <= $level) + $role->add_cap( 'copy_posts' ); + } + + // delete old option + delete_option('duplicate_post_copy_user_level'); + } + + add_option('duplicate_post_copyexcerpt','1'); + add_option('duplicate_post_copyattachments','0'); + add_option('duplicate_post_copychildren','0'); + add_option('duplicate_post_copystatus','0'); + add_option('duplicate_post_taxonomies_blacklist',array()); + add_option('duplicate_post_show_row','1'); + add_option('duplicate_post_show_adminbar','1'); + add_option('duplicate_post_show_submitbox','1'); + } + // Update version number + update_option( 'duplicate_post_version', duplicate_post_get_current_version() ); + +} + +if (get_option('duplicate_post_show_row') == 1){ + add_filter('post_row_actions', 'duplicate_post_make_duplicate_link_row',10,2); + add_filter('page_row_actions', 'duplicate_post_make_duplicate_link_row',10,2); +} + +/** + * Add the link to action list for post_row_actions + */ +function duplicate_post_make_duplicate_link_row($actions, $post) { + if (duplicate_post_is_current_user_allowed_to_copy()) { + $actions['clone'] = '<a href="'.duplicate_post_get_clone_post_link( $post->ID , 'display', false).'" title="' + . esc_attr(__("Clone this item", DUPLICATE_POST_I18N_DOMAIN)) + . '">' . __('Clone', DUPLICATE_POST_I18N_DOMAIN) . '</a>'; + $actions['edit_as_new_draft'] = '<a href="'. duplicate_post_get_clone_post_link( $post->ID ) .'" title="' + . esc_attr(__('Copy to a new draft', DUPLICATE_POST_I18N_DOMAIN)) + . '">' . __('New Draft', DUPLICATE_POST_I18N_DOMAIN) . '</a>'; + } + return $actions; +} + +/** + * Add a button in the post/page edit screen to create a clone + */ +if (get_option('duplicate_post_show_submitbox') == 1){ + add_action( 'post_submitbox_start', 'duplicate_post_add_duplicate_post_button' ); +} + +function duplicate_post_add_duplicate_post_button() { + if ( isset( $_GET['post'] ) && duplicate_post_is_current_user_allowed_to_copy()) { + ?> +<div id="duplicate-action"> + <a class="submitduplicate duplication" + href="<?php echo duplicate_post_get_clone_post_link( $_GET['post'] ) ?>"><?php _e('Copy to a new draft', DUPLICATE_POST_I18N_DOMAIN); ?> + </a> +</div> + <?php + } +} + +/** + * Connect actions to functions + */ +add_action('admin_action_duplicate_post_save_as_new_post', 'duplicate_post_save_as_new_post'); +add_action('admin_action_duplicate_post_save_as_new_post_draft', 'duplicate_post_save_as_new_post_draft'); + +/* + * This function calls the creation of a new copy of the selected post (as a draft) + * then redirects to the edit post screen + */ +function duplicate_post_save_as_new_post_draft(){ + duplicate_post_save_as_new_post('draft'); +} + +/* + * This function calls the creation of a new copy of the selected post (by default preserving the original publish status) + * then redirects to the post list + */ +function duplicate_post_save_as_new_post($status = ''){ + if (! ( isset( $_GET['post']) || isset( $_POST['post']) || ( isset($_REQUEST['action']) && 'duplicate_post_save_as_new_post' == $_REQUEST['action'] ) ) ) { + wp_die(__('No post to duplicate has been supplied!', DUPLICATE_POST_I18N_DOMAIN)); + } + + // Get the original post + $id = (isset($_GET['post']) ? $_GET['post'] : $_POST['post']); + $post = get_post($id); + + // Copy the post and insert it + if (isset($post) && $post!=null) { + $new_id = duplicate_post_create_duplicate($post, $status); + + if ($status == ''){ + // Redirect to the post list screen + wp_redirect( admin_url( 'edit.php?post_type='.$post->post_type) ); + } else { + // Redirect to the edit screen for the new draft post + wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_id ) ); + } + exit; + + } else { + $post_type_obj = get_post_type_object( $post->post_type ); + wp_die(esc_attr(__('Copy creation failed, could not find original:', DUPLICATE_POST_I18N_DOMAIN)) . ' ' . $id); + } +} + +/** + * Get the currently registered user + */ +function duplicate_post_get_current_user() { + if (function_exists('wp_get_current_user')) { + return wp_get_current_user(); + } else if (function_exists('get_currentuserinfo')) { + global $userdata; + get_currentuserinfo(); + return $userdata; + } else { + $user_login = $_COOKIE[USER_COOKIE]; + $current_user = $wpdb->get_results("SELECT * FROM $wpdb->users WHERE user_login='$user_login'"); + return $current_user; + } +} + +/** + * Copy the taxonomies of a post to another post + */ +function duplicate_post_copy_post_taxonomies($new_id, $post) { + global $wpdb; + if (isset($wpdb->terms)) { + // Clear default category (added by wp_insert_post) + wp_set_object_terms( $new_id, NULL, 'category' ); + + $post_taxonomies = get_object_taxonomies($post->post_type); + $taxonomies_blacklist = get_option('duplicate_post_taxonomies_blacklist'); + if ($taxonomies_blacklist == "") $taxonomies_blacklist = array(); + $taxonomies = array_diff($post_taxonomies, $taxonomies_blacklist); + foreach ($taxonomies as $taxonomy) { + $post_terms = wp_get_object_terms($post->ID, $taxonomy, array( 'orderby' => 'term_order' )); + $terms = array(); + for ($i=0; $i<count($post_terms); $i++) { + $terms[] = $post_terms[$i]->slug; + } + wp_set_object_terms($new_id, $terms, $taxonomy); + } + } +} + +// Using our action hooks to copy taxonomies +add_action('dp_duplicate_post', 'duplicate_post_copy_post_taxonomies', 10, 2); +add_action('dp_duplicate_page', 'duplicate_post_copy_post_taxonomies', 10, 2); + +/** + * Copy the meta information of a post to another post + */ +function duplicate_post_copy_post_meta_info($new_id, $post) { + $post_meta_keys = get_post_custom_keys($post->ID); + if (empty($post_meta_keys)) return; + $meta_blacklist = explode(",",get_option('duplicate_post_blacklist')); + if ($meta_blacklist == "") $meta_blacklist = array(); + $meta_keys = array_diff($post_meta_keys, $meta_blacklist); + + foreach ($meta_keys as $meta_key) { + $meta_values = get_post_custom_values($meta_key, $post->ID); + foreach ($meta_values as $meta_value) { + $meta_value = maybe_unserialize($meta_value); + add_post_meta($new_id, $meta_key, $meta_value); + } + } +} + +// Using our action hooks to copy meta fields +add_action('dp_duplicate_post', 'duplicate_post_copy_post_meta_info', 10, 2); +add_action('dp_duplicate_page', 'duplicate_post_copy_post_meta_info', 10, 2); + +/** + * Copy the attachments + * It simply copies the table entries, actual file won't be duplicated + */ +function duplicate_post_copy_children($new_id, $post){ + $copy_attachments = get_option('duplicate_post_copyattachments'); + $copy_children = get_option('duplicate_post_copychildren'); + + // get children + $children = get_posts(array( 'post_type' => 'any', 'numberposts' => -1, 'post_status' => 'any', 'post_parent' => $post->ID )); + // clone old attachments + foreach($children as $child){ + if ($copy_attachments == 0 && $child->post_type == 'attachment') continue; + if ($copy_children == 0 && $child->post_type != 'attachment') continue; + duplicate_post_create_duplicate($child, '', $new_id); + } +} +// Using our action hooks to copy attachments +add_action('dp_duplicate_post', 'duplicate_post_copy_children', 10, 2); +add_action('dp_duplicate_page', 'duplicate_post_copy_children', 10, 2); + + +/** + * Create a duplicate from a post + */ +function duplicate_post_create_duplicate($post, $status = '', $parent_id = '') { + + // We don't want to clone revisions + if ($post->post_type == 'revision') return; + + if ($post->post_type != 'attachment'){ + $prefix = get_option('duplicate_post_title_prefix'); + $suffix = get_option('duplicate_post_title_suffix'); + if (!empty($prefix)) $prefix.= " "; + if (!empty($suffix)) $suffix = " ".$suffix; + if (get_option('duplicate_post_copystatus') == 0) $status = 'draft'; + } + $new_post_author = duplicate_post_get_current_user(); + + $new_post = array( + 'menu_order' => $post->menu_order, + 'comment_status' => $post->comment_status, + 'ping_status' => $post->ping_status, + 'post_author' => $new_post_author->ID, + 'post_content' => $post->post_content, + 'post_excerpt' => (get_option('duplicate_post_copyexcerpt') == '1') ? $post->post_excerpt : "", + 'post_mime_type' => $post->post_mime_type, + 'post_parent' => $new_post_parent = empty($parent_id)? $post->post_parent : $parent_id, + 'post_password' => $post->post_password, + 'post_status' => $new_post_status = (empty($status))? $post->post_status: $status, + 'post_title' => $prefix.$post->post_title.$suffix, + 'post_type' => $post->post_type, + ); + + if(get_option('duplicate_post_copydate') == 1){ + $new_post['post_date'] = $new_post_date = $post->post_date ; + $new_post['post_date_gmt'] = get_gmt_from_date($new_post_date); + } + + $new_post_id = wp_insert_post($new_post); + + + // If you have written a plugin which uses non-WP database tables to save + // information about a post you can hook this action to dupe that data. + if ($post->post_type == 'page' || (function_exists('is_post_type_hierarchical') && is_post_type_hierarchical( $post->post_type ))) + do_action( 'dp_duplicate_page', $new_post_id, $post ); + else + do_action( 'dp_duplicate_post', $new_post_id, $post ); + + delete_post_meta($new_post_id, '_dp_original'); + add_post_meta($new_post_id, '_dp_original', $post->ID); + + // If the copy is published or scheduled, we have to set a proper slug. + if ($new_post_status == 'publish' || $new_post_status == 'future'){ + $post_name = wp_unique_post_slug($post->post_name, $new_post_id, $new_post_status, $post->post_type, $new_post_parent); + + $new_post = array(); + $new_post['ID'] = $new_post_id; + $new_post['post_name'] = $post_name; + + // Update the post into the database + wp_update_post( $new_post ); + } + + return $new_post_id; +} + +//Add some links on the plugin page +add_filter('plugin_row_meta', 'duplicate_post_add_plugin_links', 10, 2); + +function duplicate_post_add_plugin_links($links, $file) { + if ( $file == plugin_basename(dirname(__FILE__).'/duplicate-post.php') ) { + $links[] = '<a href="http://lopo.it/duplicate-post-plugin">' . __('Donate', DUPLICATE_POST_I18N_DOMAIN) . '</a>'; + $links[] = '<a href="http://lopo.it/duplicate-post-plugin">' . __('Translate', DUPLICATE_POST_I18N_DOMAIN) . '</a>'; + } + return $links; +} +?> \ No newline at end of file diff --git a/wp-content/plugins/duplicate-post/duplicate-post-common.php b/wp-content/plugins/duplicate-post/duplicate-post-common.php new file mode 100644 index 0000000..feb9997 --- /dev/null +++ b/wp-content/plugins/duplicate-post/duplicate-post-common.php @@ -0,0 +1,112 @@ +<?php + +/** + * Test if the user is allowed to copy posts + */ +function duplicate_post_is_current_user_allowed_to_copy() { + return current_user_can('copy_posts'); +} + +/** + * Wrapper for the option 'duplicate_post_create_user_level' + */ +function duplicate_post_get_copy_user_level() { + return get_option( 'duplicate_post_copy_user_level' ); +} + +// Template tag +/** + * Retrieve duplicate post link for post. + * + * + * @param int $id Optional. Post ID. + * @param string $context Optional, default to display. How to write the '&', defaults to '&'. + * @param string $draft Optional, default to true + * @return string + */ +function duplicate_post_get_clone_post_link( $id = 0, $context = 'display', $draft = true ) { + if ( !duplicate_post_is_current_user_allowed_to_copy() ) + return; + + if ( !$post = &get_post( $id ) ) + return; + + if ($draft) + $action_name = "duplicate_post_save_as_new_post_draft"; + else + $action_name = "duplicate_post_save_as_new_post"; + + if ( 'display' == $context ) + $action = '?action='.$action_name.'&post='.$post->ID; + else + $action = '?action='.$action_name.'&post='.$post->ID; + + $post_type_object = get_post_type_object( $post->post_type ); + if ( !$post_type_object ) + return; + + return apply_filters( 'duplicate_post_get_clone_post_link', admin_url( "admin.php". $action ), $post->ID, $context ); +} +/** + * Display duplicate post link for post. + * + * @param string $link Optional. Anchor text. + * @param string $before Optional. Display before edit link. + * @param string $after Optional. Display after edit link. + * @param int $id Optional. Post ID. + */ +function duplicate_post_clone_post_link( $link = null, $before = '', $after = '', $id = 0 ) { + if ( !$post = &get_post( $id ) ) + return; + + if ( !$url = duplicate_post_get_clone_post_link( $post->ID ) ) + return; + + if ( null === $link ) + $link = __('Copy to a new draft', DUPLICATE_POST_I18N_DOMAIN); + + $post_type_obj = get_post_type_object( $post->post_type ); + $link = '<a class="post-clone-link" href="' . $url . '" title="' + . esc_attr(__("Copy to a new draft", DUPLICATE_POST_I18N_DOMAIN)) + .'">' . $link . '</a>'; + echo $before . apply_filters( 'duplicate_post_clone_post_link', $link, $post->ID ) . $after; +} +/** + * Get original post . + * + * @param int $id Optional. Post ID. + * @param string $output Optional, default is Object. Either OBJECT, ARRAY_A, or ARRAY_N. + * @return mixed Post data + */ +function duplicate_post_get_original($id = 0 , $output = OBJECT){ + if ( !$post = &get_post( $id ) ) + return; + $original_ID = get_post_meta( $post->ID, '_dp_original'); + if (empty($original_ID)) return null; + $original_post = &get_post($original_ID[0], $output); + return $original_post; +} +// Admin bar +function duplicate_post_admin_bar_render() { + global $wp_admin_bar; + $current_object = get_queried_object(); + if ( empty($current_object) ) + return; + if ( ! empty( $current_object->post_type ) + && ( $post_type_object = get_post_type_object( $current_object->post_type ) ) + && duplicate_post_is_current_user_allowed_to_copy() + && ( $post_type_object->show_ui || 'attachment' == $current_object->post_type ) ) + { + $wp_admin_bar->add_menu( array( + 'parent' => 'edit', + 'id' => 'new_draft', + 'title' => __("Copy to a new draft", DUPLICATE_POST_I18N_DOMAIN), + 'href' => duplicate_post_get_clone_post_link( $current_object->ID ) + ) ); + } +} + +if (get_option('duplicate_post_show_adminbar') == 1){ + add_action( 'wp_before_admin_bar_render', 'duplicate_post_admin_bar_render' ); +} +?> \ No newline at end of file diff --git a/wp-content/plugins/duplicate-post/duplicate-post-options.php b/wp-content/plugins/duplicate-post/duplicate-post-options.php new file mode 100644 index 0000000..713aada --- /dev/null +++ b/wp-content/plugins/duplicate-post/duplicate-post-options.php @@ -0,0 +1,210 @@ +<?php +/** + * Add an option page + */ +if ( is_admin() ){ // admin actions + add_action('admin_menu', 'duplicate_post_menu'); + add_action( 'admin_init', 'duplicate_post_register_settings'); +} + +function duplicate_post_register_settings() { // whitelist options + register_setting( 'duplicate_post_group', 'duplicate_post_copydate'); + register_setting( 'duplicate_post_group', 'duplicate_post_copyexcerpt'); + register_setting( 'duplicate_post_group', 'duplicate_post_copyattachments'); + register_setting( 'duplicate_post_group', 'duplicate_post_copychildren'); + register_setting( 'duplicate_post_group', 'duplicate_post_copystatus'); + register_setting( 'duplicate_post_group', 'duplicate_post_blacklist'); + register_setting( 'duplicate_post_group', 'duplicate_post_taxonomies_blacklist'); + register_setting( 'duplicate_post_group', 'duplicate_post_title_prefix'); + register_setting( 'duplicate_post_group', 'duplicate_post_title_suffix'); + register_setting( 'duplicate_post_group', 'duplicate_post_roles'); + register_setting( 'duplicate_post_group', 'duplicate_post_show_row'); + register_setting( 'duplicate_post_group', 'duplicate_post_show_adminbar'); + register_setting( 'duplicate_post_group', 'duplicate_post_show_submitbox'); +} + + +function duplicate_post_menu() { + add_options_page(__("Duplicate Post Options", DUPLICATE_POST_I18N_DOMAIN), __("Duplicate Post", DUPLICATE_POST_I18N_DOMAIN), 'administrator', 'duplicatepost', 'duplicate_post_options'); +} + +function duplicate_post_options() { + + if ( current_user_can( 'edit_users' ) && (isset($_GET['settings-updated']) && $_GET['settings-updated'] == true)){ + global $wp_roles; + $roles = $wp_roles->get_names(); + + $dp_roles = get_option('duplicate_post_roles'); + if ( $dp_roles == "" ) $dp_roles = array(); + + foreach ($roles as $name => $display_name){ + $role = get_role($name); + + // role should have at least edit_posts capability + if ( !$role->has_cap('edit_posts') ) continue; + + /* If the role doesn't have the capability and it was selected, add it. */ + if ( !$role->has_cap( 'copy_posts' ) && in_array($name, $dp_roles) ) + $role->add_cap( 'copy_posts' ); + + /* If the role has the capability and it wasn't selected, remove it. */ + elseif ( $role->has_cap( 'copy_posts' ) && !in_array($name, $dp_roles) ) + $role->remove_cap( 'copy_posts' ); + } + } + + ?> +<div class="wrap"> + <div id="icon-options-general" class="icon32"> + <br> + </div> + <h2> + <?php _e("Duplicate Post Options", DUPLICATE_POST_I18N_DOMAIN); ?> + </h2> + + <div + style="border: solid 1px #aaaaaa; background-color: #eeeeee; margin: 9px 15px 4px 0; padding: 5px; text-align: center; font-weight: bold; float: left;"> + <a href="http://lopo.it/duplicate-post-plugin"><?php _e('Visit plugin site'); ?> + </a> - <a href="http://lopo.it/duplicate-post-plugin"><?php _e('Donate', DUPLICATE_POST_I18N_DOMAIN); ?> + </a> - <a href="http://lopo.it/duplicate-post-plugin"><?php _e('Translate', DUPLICATE_POST_I18N_DOMAIN); ?> + </a> + </div> + + <form method="post" action="options.php"> + <?php settings_fields('duplicate_post_group'); ?> + + <table class="form-table"> + + <tr valign="top"> + <th scope="row"><?php _e("Copy post/page date also", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><input type="checkbox" name="duplicate_post_copydate" value="1" <?php if(get_option('duplicate_post_copydate') == 1) echo 'checked="checked"'; ?>"/> + <span class="description"><?php _e("Normally, the new copy has its publication date set to current time: check the box to copy the original post/page date", DUPLICATE_POST_I18N_DOMAIN); ?> + </span> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Copy post/page status", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><input type="checkbox" name="duplicate_post_copystatus" + value="1" <?php if(get_option('duplicate_post_copystatus') == 1) echo 'checked="checked"'; ?>"/> + <span class="description"><?php _e("Copy the original post status (draft, published, pending) when cloning from the post list.", DUPLICATE_POST_I18N_DOMAIN); ?> + </span> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Copy excerpt", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><input type="checkbox" name="duplicate_post_copyexcerpt" + value="1" <?php if(get_option('duplicate_post_copyexcerpt') == 1) echo 'checked="checked"'; ?>"/> + <span class="description"><?php _e("Copy the excerpt from the original post/page", DUPLICATE_POST_I18N_DOMAIN); ?> + </span> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Copy attachments", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><input type="checkbox" name="duplicate_post_copyattachments" + value="1" <?php if(get_option('duplicate_post_copyattachments') == 1) echo 'checked="checked"'; ?>"/> + <span class="description"><?php _e("Copy the attachments from the original post/page", DUPLICATE_POST_I18N_DOMAIN); ?> + </span> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Copy children", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><input type="checkbox" name="duplicate_post_copychildren" + value="1" <?php if(get_option('duplicate_post_copychildren') == 1) echo 'checked="checked"'; ?>"/> + <span class="description"><?php _e("Copy the children from the original post/page", DUPLICATE_POST_I18N_DOMAIN); ?> + </span> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Do not copy these fields", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><input type="text" name="duplicate_post_blacklist" + value="<?php echo get_option('duplicate_post_blacklist'); ?>" /> <span + class="description"><?php _e("Comma-separated list of meta fields that must not be copied", DUPLICATE_POST_I18N_DOMAIN); ?> + </span> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Do not copy these taxonomies", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><div + style="height: 100px; width: 300px; padding: 5px; overflow: auto; border: 1px solid #ccc"> + <?php $taxonomies=get_taxonomies(array('public' => true),'objects'); + $taxonomies_blacklist = get_option('duplicate_post_taxonomies_blacklist'); + if ($taxonomies_blacklist == "") $taxonomies_blacklist = array(); + foreach ($taxonomies as $taxonomy ) : ?> + <label style="display: block;"> <input type="checkbox" + name="duplicate_post_taxonomies_blacklist[]" + value="<?php echo $taxonomy->name?>" + <?php if(in_array($taxonomy->name,$taxonomies_blacklist)) echo 'checked="checked"'?> /> + <?php echo $taxonomy->labels->name?> </label> + <?php endforeach; ?> + </div> <span class="description"><?php _e("Select the taxonomies you don't want to be copied", DUPLICATE_POST_I18N_DOMAIN); ?> + </span> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Title prefix", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><input type="text" name="duplicate_post_title_prefix" + value="<?php echo get_option('duplicate_post_title_prefix'); ?>" /> + <span class="description"><?php _e("Prefix to be added before the original title, e.g. \"Copy of\" (blank for no prefix)", DUPLICATE_POST_I18N_DOMAIN); ?> + </span> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Title suffix", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><input type="text" name="duplicate_post_title_suffix" + value="<?php echo get_option('duplicate_post_title_suffix'); ?>" /> + <span class="description"><?php _e("Suffix to be added after the original title, e.g. \"(dup)\" (blank for no suffix)", DUPLICATE_POST_I18N_DOMAIN); ?> + </span> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Roles allowed to copy", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><div + style="height: 100px; width: 300px; padding: 5px; overflow: auto; border: 1px solid #ccc"> + <?php global $wp_roles; + $roles = $wp_roles->get_names(); + foreach ($roles as $name => $display_name): $role = get_role($name); + if ( !$role->has_cap('edit_posts') ) continue; ?> + <label style="display: block;"> <input type="checkbox" + name="duplicate_post_roles[]" value="<?php echo $name ?>" + <?php if($role->has_cap('copy_posts')) echo 'checked="checked"'?> /> + <?php echo translate_user_role($display_name); ?> </label> + <?php endforeach; ?> + </div> <span class="description"><?php _e("Warning: users will be able to copy all posts, even those of other users", DUPLICATE_POST_I18N_DOMAIN); ?> + </span> + </td> + </tr> + <tr valign="top"> + <th scope="row"><?php _e("Show links in", DUPLICATE_POST_I18N_DOMAIN); ?> + </th> + <td><label style="display: block"><input type="checkbox" + name="duplicate_post_show_row" value="1" <?php if(get_option('duplicate_post_show_row') == 1) echo 'checked="checked"'; ?>"/> + <?php _e("Post list", DUPLICATE_POST_I18N_DOMAIN); ?> </label> <label + style="display: block"><input type="checkbox" + name="duplicate_post_show_submitbox" value="1" <?php if(get_option('duplicate_post_show_submitbox') == 1) echo 'checked="checked"'; ?>"/> + <?php _e("Edit screen", DUPLICATE_POST_I18N_DOMAIN); ?> </label> <label + style="display: block"><input type="checkbox" + name="duplicate_post_show_adminbar" value="1" <?php if(get_option('duplicate_post_show_adminbar') == 1) echo 'checked="checked"'; ?>"/> + <?php _e("Admin bar", DUPLICATE_POST_I18N_DOMAIN); ?> (WP 3.1+)</label> + </td> + </tr> + </table> + <p class="submit"> + <input type="submit" class="button-primary" + value="<?php _e('Save Changes', DUPLICATE_POST_I18N_DOMAIN) ?>" /> + </p> + + </form> +</div> +<?php +} +?> \ No newline at end of file diff --git a/wp-content/plugins/duplicate-post/duplicate-post.php b/wp-content/plugins/duplicate-post/duplicate-post.php new file mode 100644 index 0000000..24bea1a --- /dev/null +++ b/wp-content/plugins/duplicate-post/duplicate-post.php @@ -0,0 +1,53 @@ +<?php +/* + Plugin Name: Duplicate Post + Plugin URI: http://lopo.it/duplicate-post-plugin/ + Description: Clone posts and pages. + Version: 2.4.1 + Author: Enrico Battocchi + Author URI: http://lopo.it + Text Domain: duplicate-post + */ + +/* Copyright 2009-2012 Enrico Battocchi (email : enrico.battocchi@gmail.com) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +// i18n plugin domain +define('DUPLICATE_POST_I18N_DOMAIN', 'duplicate-post'); + +// Version of the plugin +define('DUPLICATE_POST_CURRENT_VERSION', '2.4.1' ); + +/** + * Initialise the internationalisation domain + */ +load_plugin_textdomain(DUPLICATE_POST_I18N_DOMAIN, + 'wp-content/plugins/duplicate-post/languages','duplicate-post/languages'); + +add_filter("plugin_action_links_".plugin_basename(__FILE__), "duplicate_post_plugin_actions", 10, 4); + +function duplicate_post_plugin_actions( $actions, $plugin_file, $plugin_data, $context ) { + array_unshift($actions, "<a href=\"".menu_page_url('duplicatepost', false)."\">".__("Settings")."</a>"); + return $actions; +} + +require_once (dirname(__FILE__).'/duplicate-post-common.php'); + +if (is_admin()){ + require_once (dirname(__FILE__).'/duplicate-post-admin.php'); +} +?> \ No newline at end of file diff --git a/wp-content/plugins/duplicate-post/gpl-2.0.txt b/wp-content/plugins/duplicate-post/gpl-2.0.txt new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/wp-content/plugins/duplicate-post/gpl-2.0.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-ca.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-ca.mo new file mode 100644 index 0000000..f814e22 Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-ca.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-cs_CZ.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-cs_CZ.mo new file mode 100644 index 0000000..21d9549 Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-cs_CZ.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-de_DE.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-de_DE.mo new file mode 100644 index 0000000..e99ad5e Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-de_DE.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-es.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-es.mo new file mode 100644 index 0000000..1408a1e Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-es.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-fr_FR.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-fr_FR.mo new file mode 100644 index 0000000..9ea7df8 Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-fr_FR.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-he_IL.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-he_IL.mo new file mode 100644 index 0000000..4b3d2be Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-he_IL.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-it_IT.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-it_IT.mo new file mode 100644 index 0000000..5a317b4 Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-it_IT.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-ja.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-ja.mo new file mode 100644 index 0000000..f697a12 Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-ja.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-nl_NL.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-nl_NL.mo new file mode 100644 index 0000000..d42d8ad Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-nl_NL.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-pl_PL.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-pl_PL.mo new file mode 100644 index 0000000..1969861 Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-pl_PL.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-pt_BR.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-pt_BR.mo new file mode 100644 index 0000000..28c3481 Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-pt_BR.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-ro_RO.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-ro_RO.mo new file mode 100644 index 0000000..86c4088 Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-ro_RO.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-sv_SE.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-sv_SE.mo new file mode 100644 index 0000000..d5dfeff Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-sv_SE.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-tr.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-tr.mo new file mode 100644 index 0000000..d8ec45f Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-tr.mo differ diff --git a/wp-content/plugins/duplicate-post/languages/duplicate-post-zh_CN.mo b/wp-content/plugins/duplicate-post/languages/duplicate-post-zh_CN.mo new file mode 100644 index 0000000..8333e4a Binary files /dev/null and b/wp-content/plugins/duplicate-post/languages/duplicate-post-zh_CN.mo differ diff --git a/wp-content/plugins/duplicate-post/readme.txt b/wp-content/plugins/duplicate-post/readme.txt new file mode 100644 index 0000000..db6e46f --- /dev/null +++ b/wp-content/plugins/duplicate-post/readme.txt @@ -0,0 +1,254 @@ +=== Duplicate Post === +Contributors: lopo +Donate link: http://lopo.it/duplicate-post-plugin/ +Tags: duplicate post, copy, clone +Requires at least: 3.0 +Tested up to: 3.3.2 +Stable tag: 2.4.1 + +Clone posts and pages. + +== Description == + +This plugin allows to clone a post or page, or edit it as a new draft. + +1. In 'Edit Posts'/'Edit Pages', you can click on 'Clone' link below the post/page title: this will immediately create a copy and return to the list. + +2. In 'Edit Posts'/'Edit Pages', you can click on 'New Draft' link below the post/page title. + +3. On the post edit screen, you can click on 'Copy to a new draft' above "Cancel"/"Move to trash". + +4. While viewing a post as a logged in user, you can click on 'Copy to a new draft' as a dropdown link under "Edit Post" in the admin bar. + +2, 3 and 4 will lead to the edit page for the new draft: change what you want, click on 'Publish' and you're done. + +**Pay attention to the new behaviour!** The first way now allows you to clone a post with a single click, speeding up your work if you have many posts to duplicate. + +There is also a **template tag**, so you can put it in your templates and clone your posts/pages from the front-end. Clicking on the link will lead you to the edit page for the new draft, just like the admin bar link. + +In the Options page under Settings it is now possible to choose what to copy: + +* the original post/page date +* the original post/page status (draft, published, pending), when cloning from the posts list +* the original post/page excerpt +* the original post/page attachments (actual files won't be copied) +* all the children of the original page +* which taxonomies and custom fields + +You can also set a prefix (or a suffix) to place before (or after) the title of the cloned post/page, and the roles allowed to clone posts or pages. + +If you want to contribute to translate the plugin in languages other than English, there is a [GlotPress translation project](http://lopo.it/glotpress/projects/duplicate-post) available (no registration required! — You can also send me an e-mail using [the form on my website](http://lopo.it/contatti/)). + +**If you're a plugin developer**, I suggest to read the section made just for you under "Other Notes", to ensure compatibility between your plugin(s) and mine. + +Thanks for all the suggestions, bug reports, translations and donations, they're frankly too many to be listed here! + +== Installation == + +Use WordPress' Add New Plugin feature, searching "Duplicate Post", or download the archive and: + +1. Unzip the archive on your computer +2. Upload `duplicate-post` directory to the `/wp-content/plugins/` directory +3. Activate the plugin through the 'Plugins' menu in WordPress +4. Go to Settings -> Duplicate Post and customize behaviour as needed + +== Frequently Asked Questions == + += The plugin doesn't work, why? = + +First, check your version of WordPress: the plugin is not supposed to work on old versions anymore. Make sure also to upgrade to the last version of the plugin! + +Then try to deactivate and re-activate it, some user have reported that this fixes the problem. + +Pay also attention to the new "Roles allowed to copy" option: it should convert the former "user level" option to the new standard, but unknown problems may arise. Make sure that your role is enabled. + +If not, maybe there is some kind of conflict with other plugins: feel free [to write me](http://lopo.it/contatti/) and we'll try to discover a solution (it will be *really* helpful if you try to deactivate all your other plugins one by one to see which one conflicts with mine... But do it only if you know what you're doing, I will not be responsible of any problem you may experience). + += Can you add it to the bulk actions in the post/page list? = + +I can't. There is no way to do it without hacking the core code of WordPress. +There is an open ticket in WordPress Trac, as other plugin developers too are interested to this feature: we can only hope that eventually our wish will be fulfilled. + + +== Screenshots == + +1. Here you can copy the post you're editing to a new draft. +2. By clicking on "Clone" the post is cloned immediately. "New draft" leads to the edit screen. +3. The options page. +4. The template tag manually added to Twenty Ten theme. Click on the "Copy to a new draft" link and you're redirected to the edit screen for a new draft copy of your post. +5. The admin bar link. + +== Upgrade Notice == + += 2.4.1 = +Fixes a couple of bug. Recommended if you have problems with v2.4 + += 2.4 = +Copy child pages + a couple of bugfixes + licence switch to GPLv2 + += 2.3 = +Fixes a bunch of bugs + copy attachments + choose where to show the links. + += 2.2 = +VERY IMPORTANT UPGRADE to get rid of problems with complex custom fields, afflicting both 2.1.* releases. + += 2.1.1 = +Fix for upgrade problem + += 2.1 = +Copy from admin bar + user levels out, roles and capabilities in. + += 2.0.2 = +Fixed permalink bug + double choice on posts list + += 2.0.1 = +Bug fix + new option + += 2.0 = +Several improvements and new features, see changelog. Requires WP 3.0+. + += 1.1.1 = +Some users have experienced a fatal error when upgrading to v1.1: this may fix it, if it's caused by a plugin conflict. + += 1.1 = +New features and customization, WP 3.0 compatibility: you should upgrade if you want to copy Custom Posts with Custom Taxonomies. + +== Changelog == + += 2.4.1 = +* Fixed regression about draft permalinks +* Fixed bug with guid +* Don't clone to_ping and pinged (maybe there will be an option about those later) + += 2.4 = +* New option to clone the children of the original page +* Licence changed to GPLv2 or later +* Fixed publishing dates for drafts +* Fixed bug with prefix/suffix +* Translation project moved to GlotPress + += 2.3 = +* Added options to choose where to show the "Clone" links +* Clone attachments (i.e. references in the DB, not physical files) +* Fix for untranslated user roles +* Some other fixes (missing checks, PHP warnings and errors, etc.) + += 2.2 = +* Fix for problems when copying serialized meta fields +* Fix for multiple _dp_original field +* Removed deprecated parameter when adding options + += 2.1.1 = +* Can't rely on activation hook for upgrade, this caused problems with new options + += 2.1 = +* Even more code cleaning (no more custom queries, using WP API) +* Term order preserved when copying +* Stopped using deprecated User levels, now it uses Roles and Capabilities +* 'Copy to a new draft' link in admin bar +* duplicate_post_get_original template tag +* Settings link in plugin list, 'Donate' and 'Translate' link in option page + += 2.0.2 = +* Fixed bug for permalinks +* Two links on posts list: clone immediately or copy to a new draft to edit. +* Tested on multisite mode. + += 2.0.1 = +* Fixed bug for action filters +* New option so you can choose if cloning from the posts list must copy the post status (draft, published, pending) too. + += 2.0 = +* WP 3.3 compatibility (still not tested against multiblog feature, so beware) +* Minimum WP version: 3.0 +* Code cleanup +* Immediate cloning from post list +* Added options for taxonomies and post excerpt +* Added suffix option +* Added template tag + += 1.1.2 = +* WP 3.1.1 compatibility (still not tested against multiblog feature, so beware) +* Added complete Polish language files + += 1.1.1 = +* Plugin split in two files for faster opening in Plugins list page +* fix conflicts with a few other plugins +* Added Dutch language files + += 1.1 = +* WP 3.0 compatibility (not tested against multiblog feature, so beware) +* Option page: minimum user level, title prefix, fields not to be copied, copy post/page date also +* Added German, Swedish, Romanian, Hebrew, Catalan (incomplete) and Polish (incomplete) language files + += 1.0 = +* Better integration with WP 2.7+ interface +* Added actions for plugins which store post metadata in self-managed tables +* Added French and Spanish language files +* Dropped WP 2.6.5 compatibility + += 0.6.1 = +* Tested WP 2.9 compatibility + += 0.6 = +* Fix for WP 2.8.1 +* WPMU compatibility +* Internationalization (Italian and Japanese language files shipped) + += 0.5 = +* Fix for post-meta +* WP2.7 compatibility + += 0.4 = +* Support for new WP post revision feature + + + +== Template tags == + +I have added the template tag `duplicate_post_clone_post_link( $link, $before, $after, $id )`, which behaves just like [edit_post_link()](http://codex.wordpress.org/Function_Reference/edit_post_link). +That means that you can put it in your template (e.g., in single.php or page.php) so you can get a "Clone" link when displaying a post or page. + +The parameters are: + +* *link* + (string) (optional) The link text. Default: __('Clone','duplicate-post') + +* *before* + (string) (optional) Text to put before the link text. Default: None + +* *after* + (string) (optional) Text to put after the link text. Default: None + +* *id* + (integer) (optional) Post ID. Default: Current post ID + +Another available template tag is `duplicate_post_get_original($id, $output)` which returns the original post, either as a post object, an associative array or a numeric array (depending on the $output parameter), jus as [get_post()](http://codex.wordpress.org/Function_Reference/get_post) does. +`duplicate_post_get_original()` relies on the `_dp_original` custom field. + + +== For plugin developers == + +From version 1.0 onwards, thanks to [Simon Wheatley](http://www.simonwheatley.co.uk/)'s suggestion, Duplicate Post adds two actions (*dp_duplicate_post* and *dp_duplicate_page*) which can be used by other developers if their plugins store extra data for posts in non-standard WP tables. +Since Duplicate Post knows only of standard WP tables, it can't copy other data relevant to the post which is being copied if this information is stored elsewhere. So, if you're a plugin developer which acts this way, and you want to ensure compatibility with Duplicate Post, you can hook your functions to those actions to make sure that they will be called when a post (or page) is cloned. + +It's very simple. Just write your function that copies post metadata to a new row of your table: +`function myplugin_copy_post($new_post_id, $old_post_object){ +/* your code */ +}` + +Then hook the function to the action: +`add_action( "dp_duplicate_post", "myplugin_copy_post", $priority, 2);` + +dp_duplicate_page is used for pages and hierarchical custom post types; for every other type of posts, dp_duplicate_post is used. + +Please refer to the [Plugin API](http://codex.wordpress.org/Plugin_API) for every information about the subject. + +== Contribute == + +If you find this useful and you if you want to contribute, there are three ways: + + 1. You can [write me](http://lopo.it/contatti/) and submit your bug reports, suggestions and requests for features; + 2. If you want to translate it to your language (there are just a few lines of text), you can use the [GlotPress translation project](http://lopo.it/glotpress/projects/duplicate-post), or [contact me](http://lopo.it/contatti/) and I’ll send you the .pot catalogue; your translation could be featured in next releases; + 3. Using the plugin is free, but if you want you can send me some money with PayPal [here](http://lopo.it/duplicate-post-plugin/) + diff --git a/wp-content/plugins/duplicate-post/screenshot-1.jpg b/wp-content/plugins/duplicate-post/screenshot-1.jpg new file mode 100644 index 0000000..bc8c0a0 Binary files /dev/null and b/wp-content/plugins/duplicate-post/screenshot-1.jpg differ diff --git a/wp-content/plugins/duplicate-post/screenshot-2.jpg b/wp-content/plugins/duplicate-post/screenshot-2.jpg new file mode 100644 index 0000000..1982908 Binary files /dev/null and b/wp-content/plugins/duplicate-post/screenshot-2.jpg differ diff --git a/wp-content/plugins/duplicate-post/screenshot-3.jpg b/wp-content/plugins/duplicate-post/screenshot-3.jpg new file mode 100644 index 0000000..fc2b043 Binary files /dev/null and b/wp-content/plugins/duplicate-post/screenshot-3.jpg differ diff --git a/wp-content/plugins/duplicate-post/screenshot-4.jpg b/wp-content/plugins/duplicate-post/screenshot-4.jpg new file mode 100644 index 0000000..8e87178 Binary files /dev/null and b/wp-content/plugins/duplicate-post/screenshot-4.jpg differ diff --git a/wp-content/plugins/duplicate-post/screenshot-5.jpg b/wp-content/plugins/duplicate-post/screenshot-5.jpg new file mode 100644 index 0000000..7b7d3fd Binary files /dev/null and b/wp-content/plugins/duplicate-post/screenshot-5.jpg differ diff --git a/wp-content/plugins/duplicate-widget/duplicate-widget.php b/wp-content/plugins/duplicate-widget/duplicate-widget.php new file mode 100644 index 0000000..b590614 --- /dev/null +++ b/wp-content/plugins/duplicate-widget/duplicate-widget.php @@ -0,0 +1,494 @@ +<?php +/** + * @package Duplicate_Widget + * @author Scott Reilly + * @version 1.0.2 + */ +/* +Plugin Name: Duplicate Widget +Version: 1.0.2 +Plugin URI: http://coffee2code.com/wp-plugins/duplicate-widget/ +Author: Scott Reilly +Author URI: http://coffee2code.com/ +Text Domain: duplicate-widget +Domain Path: /lang/ +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html +Description: A widget that can act as a duplicate of another widget (for synchronized use in another sidebar) + +Compatible with WordPress 3.1 through 3.4+. + +=>> Read the accompanying readme.txt file for instructions and documentation. +=>> Also, visit the plugin's homepage for additional information and updates. +=>> Or visit: http://wordpress.org/extend/plugins/duplicate-widget/ + +TODO: + * More dynamic updating via JS (maybe) + * Add "[D]" and widget blurb (if not present) to widget after it is selected as the source widget for a duplicate + * Remove "[D]" and widget blurb if final duplicate of widget is deleted + * Immediately delete duplicates of a widget that gets deleted or deactivated + * When clicking the dropdown, can check some JS flag that gets set when a widget gets activated/deactivated which causes the dropdown to be regenerated via AJAX (or simply always refresh it via AJAX) + * Track down possible bug where source widget claims to have dupes, but it doesn't really anymore + * Way to locate/highlight duplicates of a widget +*/ + +/* + Copyright (c) 2010-2012 by Scott Reilly (aka coffee2code) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +if ( ! class_exists( 'c2c_DuplicateWidget' ) ) : + +class c2c_DuplicateWidget extends WP_Widget { + + private static $title = ''; + private static $current = null; + private static $widget_id = 'duplicate_widget'; + private static $input_name = 'widget_to_duplicate'; + + // For memoization + private static $_duplicates = array(); + private static $_sidebar_names = array(); + private static $_titles = array(); + private static $_widgets = array(); + + /** + * Returns version of the plugin. + */ + public static function version() { + return '1.0.2'; + } + + /** + * Initializes the widget. + */ + public static function init() { + // Register the widget + add_action( 'widgets_init', array( __CLASS__, '__register' ) ); + // Output message at bottom of widgets that have been duplicated to make note of such + add_action( 'in_widget_form', array( __CLASS__, 'note_duplicates' ), 10, 3 ); + // Load localization + add_action( 'admin_init', array( __CLASS__, 'load_textdomain' ) ); + // Stuff to only do on the widgets admin page + add_action( 'load-widgets.php', array( __CLASS__, 'widgets_page_actions' ) ); + } + + /** + * Registers the widget. + */ + public static function __register() { + register_widget( __CLASS__ ); + } + + /** + * Loads the localization textdomain for the plugin. + * + * Translations go into 'lang' sub-directory. + * + * @return void + */ + public static function load_textdomain() { + load_plugin_textdomain( 'duplicate-widget', false, basename( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR . 'lang' ); + } + + /** + * Triggers hooks intended to fire on admin widgets.php page. + */ + public static function widgets_page_actions() { + // Enqueue JS to make an indicator in titlebar of duplicated widgets + add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_admin_js' ) ); + // Clean up any duplicates whose source widget is no longer active + add_action( 'admin_init', array( __CLASS__, 'delete_lame_dupes' ) ); + } + + /** + * Enqueues admin JS to make an indicator in titlebar of duplicated widgets. + */ + public static function enqueue_admin_js() { + wp_enqueue_script( 'jquery' ); + wp_enqueue_script( self::$widget_id, plugins_url( 'js/admin.js', __FILE__ ), array( 'jquery' ), '0.1', true ); + $strings = array( + 'widget_is_duplicated' => __( 'This widget is duplicated elsewhere.', 'duplicate-widget' ), + 'notation' => __( '[D]', 'duplicate-widget' ) + ); + wp_localize_script( self::$widget_id, self::$widget_id, $strings ); + } + + /** + * Returns a list of all active, non-duplicate widgets across all sidebars. + * + * Also incidentally stores a listing of all duplicate widgets. + * + * @return array Array of all widgets + */ + public static function get_widgets() { + if ( ! empty( self::$_widgets ) ) // Return memoized result if it's there + return self::$_widgets; + + // Note: wp_get_sidebars_widgets() is noted as being a private function. + // I'd rather use it than to access data from globals and recreate logic + $sidebars_with_widgets = wp_get_sidebars_widgets(); + $sidebars_widgets = array(); + $duplicate_widgets = array(); + + foreach ( $sidebars_with_widgets as $sidebar => $widgets ) { + if ( 'wp_inactive_widgets' == $sidebar || is_null( $widgets ) ) + continue; + + foreach ( $widgets as $widget ) { + if ( strpos( $widget, self::$widget_id . '-' ) !== 0 ) + $sidebars_widgets[] = $widget; + else // Record the duplicate widgets for possible other use + $duplicate_widgets[] = $widget; + } + } + + self::$_duplicates = $duplicate_widgets; + self::$_widgets = $sidebars_widgets; + return self::$_widgets; + } + + /** + * Returns an array of all duplicate widgets. + * + * Note: get_widgets() actually obtains and stores all duplicate widgets, + * so this method defers to that one. + * + * @return array All duplicate widgets + */ + public static function get_duplicate_widgets() { + self::get_widgets(); + return self::$_duplicates; + } + + /** + * Returns the title for the specified active widget. + * + * @param string $widget_id The id of the widget + * @return string The title for the specified active widget + */ + public static function get_widget_title( $widget_id ) { + global $wp_registered_widgets; + + if ( empty( $widget_id ) || ! isset( $wp_registered_widgets[$widget_id] ) ) + return; + + if ( isset( self::$_titles[$widget_id] ) ) + return self::$_titles[$widget_id]; + + $widget_num = explode( '-', $widget_id ); + $widget_num = end( $widget_num ); + + $instance = get_option( $wp_registered_widgets[$widget_id]['callback'][0]->option_name ); + + if ( is_array( $instance ) && array_key_exists( $widget_num, $instance ) ) + $title = $instance[$widget_num]['title']; + else + $title = ''; + + self::$_titles[$widget_id] = $title; + return $title; + } + + /** + * Returns the markup for the <select> HTML tag and its <option> tags to + * select from the active widgets to duplicate. + * + * @param array $widgets (optional) The widgets to list in the dropdown. If not provided, get_widgets() will be called to get all active widgets. + * @param string $value (optional) The current value selected + * @return string The HTML for the <select> + */ + public function get_widgets_dropdown( $widgets = array(), $value = '' ) { + global $wp_registered_widgets; + + if ( empty( $widgets ) ) + $widgets = self::get_widgets(); + + $opt = self::$input_name; + $input_id = $this->get_field_id( $opt ); + $input_name = $this->get_field_name( $opt ); + + $html = "<select name='$input_name' id='$input_id'>\n"; + $html .= '<option value="">— ' . __( 'Choose widget to duplicate', 'duplicate-widget' ) . ' —</option>'; + foreach ( $widgets as $widget ) { + $label = $wp_registered_widgets[$widget]['name']; + $title = self::get_widget_title( $widget ); + if ( ! empty( $title ) ) + $label .= ": $title"; + $label .= ' — ' . self::get_sidebar_name( self::find_sidebar_for_widget( $widget ) ) . ''; + $selected = $value == $widget ? " selected='selected'" : ''; + $html .= '<option value="' . $widget . '" ' . $selected . '">' . $label . "</option>\n"; + } + $html .= "</select>\n"; + return $html; + } + + /** + * Returns boolean indicating if the specified widget is active. + * + * @param string $widget_id The id of the widget + * @return bool True if the widget is active; false otherwise + */ + public static function is_widget_active( $widget_id ) { + global $wp_registered_widgets; + + if ( ! isset( $wp_registered_widgets[$widget_id] ) ) + return false; + + return is_active_widget( $wp_registered_widgets[$widget_id]['callback'], $widget_id, false, false ); + } + + /** + * Returns the id of the sidebar containing the specified widget. + * + * @param int $widget_id Id of the widget + * @return int|null The sidebar id, if one was found to contain widget_id; otherwise null + */ + public static function find_sidebar_for_widget( $widget_id ) { + $sidebars = wp_get_sidebars_widgets(); // NOTE: This is a private method + + foreach ( $sidebars as $sidebar => $widgets ) { + if ( 'wp_inactive_widgets' == $sidebar ) + continue; + + if ( in_array( $widget_id, $widgets ) ) + return $sidebar; + } + return null; + } + + /** + * Returns the name of the specified sidebar. + * + * @param int $sidebar_id ID of the sidebar + * @return string The name of the sidebar + */ + public static function get_sidebar_name( $sidebar_id ) { + global $wp_registered_sidebars; + if ( isset( self::$_sidebar_names[$sidebar_id] ) ) + $name = self::$_sidebar_names[$sidebar_id]; + elseif ( isset( $wp_registered_sidebars[$sidebar_id] ) ) + $name = self::$_sidebar_names[$sidebar_id] = $wp_registered_sidebars[$sidebar_id]['name']; + else + $name = ''; + return $name; + } + + /** + * Deletes a widget. + * + * @param string $widget_id The id of the widget to delete + */ + public static function delete_widget( $widget_id ) { + global $wp_registered_widgets; + if ( ! isset( $wp_registered_widgets[$widget_id] ) ) + return false; + $sidebars = wp_get_sidebars_widgets(); + $sidebar_id = self::find_sidebar_for_widget( $widget_id ); + $sidebar = isset( $sidebars[$sidebar_id] ) ? $sidebars[$sidebar_id] : array(); + $sidebar = array_diff( $sidebar, array( $widget_id ) ); + $sidebars[$sidebar_id] = $sidebar; + wp_set_sidebars_widgets( $sidebars ); + return true; + } + + /** + * Deletes duplicates whose source widgets have been deactivated or deleted. + * + * Technically there isn't any harm in leaving lame dupes in place. Their + * dropdowns will indicate they need a value set since the source isn't + * active. Also, the front-end won't show lame dupes. I think it's + * nicer to clean things up though, even at the cost of a little time for + * processing. + */ + public static function delete_lame_dupes() { + $duplicates = get_option( 'widget_' . self::$widget_id ); + foreach ( $duplicates as $num => $settings ) { + if ( isset( $settings[self::$input_name] ) && ! self::is_widget_active( $settings[self::$input_name] ) ) { + self::delete_widget( self::$widget_id . '-' . $num ); + } + } + } + + /** + * Outputs a source widget. + * + * The approach used here abides by the before_title, after_title, + * before_widget, and after_widget of the duplicate widget's sidebar + * (and therefore not those settings for the source widget) + * + * @param string $source_widget_id The id of the widget being duplicated + * @param string $widget_id The id of the duplicate widget + * @param array $args The settings for the target sidebar + */ + public static function output_widget( $source_widget_id, $widget_id, $args ) { + global $wp_registered_widgets; + + if ( ! self::is_widget_active( $source_widget_id ) ) { + self::delete_widget( $widget_id ); + return; + } + + $callback = $wp_registered_widgets[$source_widget_id]['callback']; + + $parts = explode( '-', $source_widget_id ); + $num = end( $parts ); + + // Add some class information that pertains to the source widget (its + // id and general type are added as additional classes) + if ( isset( $args['before_widget'] ) ) { + $more_class = implode( ' ', array( $source_widget_id, $wp_registered_widgets[$source_widget_id]['classname'] ) ); + $args['before_widget'] = preg_replace( '/(class=[\'\"])/', '${1} ' . $more_class . ' ', $args['before_widget'] ); + } + + if ( is_callable( $callback ) ) + call_user_func_array( $callback, array( $args, $num ) ); + } + + /** + * Returns a count of the number of duplicates of the specified widget. + * + * @param string $widget_id The id of the widget + * @return integer The number of duplicates of the widget + */ + public static function count_duplicates( $widget_id ) { + $count = 0; + + $duplicates = get_option( 'widget_' . self::$widget_id ); + foreach ( (array) $duplicates as $num => $settings ) { + if ( isset( $settings[self::$input_name] ) && $settings[self::$input_name] == $widget_id ) + $count += 1; + } + + return $count; + } + + /** + * Adds a note to widgets that have duplicates. + */ + public static function note_duplicates( $obj, $return, $instance ) { + // Don't do anything if the widget doesn't have any duplicates + if ( ( $n = self::count_duplicates( $obj->id ) ) == 0 ) + return; + + echo '<p style="font-style:italic;">'; + echo sprintf( _n( + '<strong>NOTE:</strong> This widget has <strong>%s</strong> duplicate.', + '<strong>NOTE:</strong> This widget has <strong>%s</strong> duplicates.', + $n, + 'duplicate-widget' ), $n + ); + echo ' '; + echo _n( + 'If you deactivate or delete this widget, that duplicate will be deleted.', + 'If you deactivate or delete this widget, those duplicates will be deleted.', + $n, + 'duplicate-widget' + ); + // Output hidden markup that JS will use to insert into the titlebar of duplicated widgets + echo '<span class="widget_is_duplicated" style="display:none;">[ D(n) ]</span>'; + echo '</p>'; + } + + + /* ===================================================================================== + * + * START OF INSTANCE METHODS + * + * ===================================================================================== */ + + + /** + * Constructor to create widget. + */ + public function __construct() { + self::$title = __( 'Duplicate', 'duplicate-widget' ); + $widget_ops = array( + 'classname' => 'widget_' . self::$widget_id, + 'description' => __( 'Exact duplicate of any other widget.', 'duplicate-widget' ) . ' ' . + __( '(If the source widget gets deactivated or deleted, its duplicate(s) disappear.)', 'duplicate-widget' ) + ); + $control_ops = array( 'width' => '300' ); + parent::__construct( self::$widget_id, self::$title, $widget_ops, $control_ops ); + } + + /** + * Outputs the widget on the front-end. + * + * @param array $args Array of arguments + * @param array $instance Array of instance settings + */ + public function widget( $args, $instance ) { + // Show nothing if the widget doesn't have any saved settings + if ( ! isset( $instance[self::$input_name] ) ) + return; + + do_action( 'c2c_before_duplicate_widget', $instance, $args ); + + self::output_widget( $instance[self::$input_name], $this->id, $args ); + + do_action( 'c2c_after_duplicate_widget', $instance, $args ); + } + + /** + * Validates the widget before changes get saved. + * + * Namely, this ensures the widget being duplicated is active. + * + * @param array $new_instance Array of new setting values + * @param array $old_instance Array of old setting values + * @return array|false If the settings are valid, the array is returned; otherwise false is returned + */ + public function update( $new_instance, $old_instance ) { + $widget_id = $new_instance[self::$input_name]; + + if ( ! empty( $old_instance ) && ! self::is_widget_active( $widget_id ) ) + return false; + + // Save the title as the title of the source widget + $new_instance['title'] = strip_tags( self::get_widget_title( $widget_id ) ); + + return $new_instance; + } + + /** + * Outputs configuration form for the widget. + * + * @param array $instance Array of instance settings + */ + public function form( $instance ) { + $value = ( isset( $instance[self::$input_name] ) ? $instance[self::$input_name] : '' ); + $title = ( empty( $value ) ? '' : esc_attr( $instance['title'] ) ); + + echo "<div class='duplicate_widget_form'>"; + + do_action( 'c2c_before_duplicate_widget_form', $instance ); + + echo '<input type="hidden" id="' . $this->get_field_id( 'title' ) . '"name="' . $this->get_field_name( 'title' ). '" value="' . $title . '" />'; + echo $this->get_widgets_dropdown( null, $value ); + + echo '<p class="description">'; + _e( 'Each dropdown item specifies the name/title of the original widget followed by the name of the sidebar containing that widget.' ); + echo '</p>'; + do_action( 'c2c_after_duplicate_widget_form', $instance ); + + echo "</div>"; + } +} + +c2c_DuplicateWidget::init(); + +endif; diff --git a/wp-content/plugins/duplicate-widget/js/admin.js b/wp-content/plugins/duplicate-widget/js/admin.js new file mode 100644 index 0000000..b8fb289 --- /dev/null +++ b/wp-content/plugins/duplicate-widget/js/admin.js @@ -0,0 +1,3 @@ +jQuery(document).ready(function($) { + $('.widget_is_duplicated').closest('.widget').find('h4').prepend('<span title="' + duplicate_widget.widget_is_duplicated + '">' + duplicate_widget.notation +'</span> '); +}); \ No newline at end of file diff --git a/wp-content/plugins/duplicate-widget/lang/duplicate-widget.pot b/wp-content/plugins/duplicate-widget/lang/duplicate-widget.pot new file mode 100644 index 0000000..e44f94a --- /dev/null +++ b/wp-content/plugins/duplicate-widget/lang/duplicate-widget.pot @@ -0,0 +1,83 @@ +# Translation of the WordPress plugin Duplicate Widget v1.0 by Scott Reilly. +# Copyright (C) 2011 Scott Reilly +# This file is distributed under the same license as the Duplicate Widget plugin. +msgid "" +msgstr "" +"Project-Id-Version: Duplicate Widget 1.0\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/duplicate-widget\n" +"POT-Creation-Date: 2011-12-05 23:13:53+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" + +#: duplicate-widget.php:110 +msgid "This widget is duplicated elsewhere." +msgstr "" + +#: duplicate-widget.php:111 +msgid "[D]" +msgstr "" + +#: duplicate-widget.php:211 +msgid "Choose widget to duplicate" +msgstr "" + +#: duplicate-widget.php:374 +msgid "<strong>NOTE:</strong> This widget has <strong>%s</strong> duplicate." +msgid_plural "" +"<strong>NOTE:</strong> This widget has <strong>%s</strong> duplicates." +msgstr[0] "" +msgstr[1] "" + +#: duplicate-widget.php:381 +msgid "" +"If you deactivate or delete this widget, that duplicate will be deleted." +msgid_plural "" +"If you deactivate or delete this widget, those duplicates will be deleted." +msgstr[0] "" +msgstr[1] "" + +#: duplicate-widget.php:404 +msgid "Duplicate" +msgstr "" + +#: duplicate-widget.php:407 +msgid "Exact duplicate of any other widget." +msgstr "" + +#: duplicate-widget.php:408 +msgid "" +"(If the source widget gets deactivated or deleted, its duplicate(s) " +"disappear.)" +msgstr "" + +#: duplicate-widget.php:470 +msgid "" +"Each dropdown item specifies the name/title of the original widget followed " +"by the name of the sidebar containing that widget." +msgstr "" + +#. Plugin Name of the plugin/theme +msgid "Duplicate Widget" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://coffee2code.com/wp-plugins/duplicate-widget/" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"A widget that can act as a duplicate of another widget (for synchronized use " +"in another sidebar)" +msgstr "" + +#. Author of the plugin/theme +msgid "Scott Reilly" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://coffee2code.com" +msgstr "" diff --git a/wp-content/plugins/duplicate-widget/readme.txt b/wp-content/plugins/duplicate-widget/readme.txt new file mode 100644 index 0000000..b5afaab --- /dev/null +++ b/wp-content/plugins/duplicate-widget/readme.txt @@ -0,0 +1,162 @@ +=== Duplicate Widget === +Contributors: coffee2code +Donate link: http://coffee2code.com/donate +Tags: widget, widgets, sidebar, duplicate, coffee2code +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html +Requires at least: 3.1 +Tested up to: 3.4 +Stable tag: 1.0.2 +Version: 1.0.2 + +A widget that can act as a duplicate of another widget (for synchronized use in another sidebar) + + +== Description == + +A widget that can act as a duplicate of another widget (for synchronized use in another sidebar) + +Define a widget once, use it in multiple sidebars. This saves you from having to manually configure each copy of the widget and later having to worry about keeping them in sync should you ever need to make any changes. Particularly useful for those who define logic in their themes to conditionally include different versions of a sidebar depending on what template is being shown. Depending on use, it is an alternative to plugins that introduce in-widget logic to determine when widgets should be visible (Widget Logic, Section Widget, Conditional Widgets, etc). + +Quick overview of what this plugin does: + +* Adds a widget called "Duplicate". The widget's only setting is a dropdown listing all active widgets. The selected widget will be the widget duplicated by the duplicate widget. +* A duplicate widget shows the same title and content as its source widget, even if those values later get changed in the source widget. +* A widget can be duplicated any number of times and can appear multiple times within the same page. (Yes, even within the same sidebar, though why would you do that?) +* A duplicate widget will abide by the configuration of the sidebar it is placed in, not the configuration of the sidebar containing the source widget. So it uses 'before_widget', 'after_widget', 'before_title', 'after_title' values of its own sidebar. +* Widgets that are duplicated will have "[D]" prepended to their name in the widget titlebar in the admin to denote they have duplicates. Also, at the bottom of the widget's configuration form (when the widget is expanded), a short blurb also explains that the widget has duplicate(s) and a count of how many duplicates it has. +* If a widget is deactivated or deleted, if it has any duplicates, they get deleted as well. +* The widget id and widget type of the source widget are included as HTML classes in the duplicate widget's markup. + +Links: [Plugin Homepage](http://coffee2code.com/wp-plugins/duplicate-widget/) | [Plugin Directory Page](http://wordpress.org/extend/plugins/duplicate-widget/) | [Author Homepage](http://coffee2code.com) + + +== Installation == + +1. Unzip `duplicate-widget.zip` inside the `/wp-content/plugins/` directory for your site (or install via the built-in WordPress plugin installer) +1. Activate the plugin through the 'Plugins' admin menu in WordPress +1. Use the 'Duplicate' widget to duplicate any other active widget + + +== Frequently Asked Questions == + += What happens to the duplicate(s) of a widget when that widget gets deactivated or deleted? = + +When a widget gets deactivated (dragged to the "Inactive Widgets" section of the widgets admin page) or deleted, all of its duplicates get deleted. The plugin provides numerous cues to make you aware of what widgets have duplicates. + += Why can't I see a newly added widget as an option in a duplicate widget's dropdown? = + +If a widget is newly activated, any existing active duplicate widgets will not have it listed in their dropdowns immediately. Either a page reload must occur or the duplicate widget must be saved (which causes the widget to be retrieved via AJAX and thus the dropdown is regenerated). + += Can a widget be duplicated into another sidebar on the same page (so it'll appear twice on the page)? = + +Yes. + + +== Screenshots == + +1. A screenshot of the "Widgets" admin page. The "Text: Mini Bio" widget in the Main Sidebar has a duplicate in Footer Area One. + + +== Filters == + +The plugin exposes four actions for hooking. Typically, customizations utilizing these hooks would be put into your active theme's functions.php file, or used by another plugin. + += c2c_before_duplicate_widget (action) = + +The 'c2c_before_duplicate_widget' hook allows you to output text, or perform some sort of action, just before the output of the duplicate widget. + +Arguments: + +* $instance (array) : The settings for the widget instance (namely: title and widget_to_duplicate) +* $args (array) : The configuration for the widget and sidebar + +Example: + +` +// Output an opening <div> before duplicate widget content +add_action( 'c2c_before_duplicate_widget', 'my_c2c_before_duplicate_widget', 10, 2 ); +function my_c2c_before_duplicate_widget( $instance, $args ) { + echo '<div class="a_duplicate_widget">; +} +` + += c2c_after_duplicate_widget (action) = + +The 'c2c_after_duplicate_widget' hook allows you to output text, or perform some sort of action, just after the output of the duplicate widget. + +Arguments: + +* $instance (array) : The settings for the widget instance (namely: title and widget_to_duplicate) +* $args (array) : The configuration for the widget and sidebar + +Example: + +` +// Output an closing </div> after duplicate widget content +add_action( 'c2c_after_duplicate_widget', 'my_c2c_after_duplicate_widget', 10, 2 ); +function my_c2c_after_duplicate_widget( $instance, $args ) { + echo '</div>; +} +` + += c2c_before_duplicate_widget_form (action) = + +The 'c2c_before_duplicate_widget_form' hook allows you to output text, or perform some sort of action, just before the output of the duplicate widget's configuration form (in the WP admin). + +Arguments: + +* $instance (array) : The settings for the widget instance (namely: title and widget_to_duplicate) + +Example: + +` +// Display a message just before the duplicate widget settings form +add_action( 'c2c_before_duplicate_widget_form', 'my_c2c_before_duplicate_widget_form' ); +function my_c2c_before_duplicate_widget_form( $instance ) { + echo '<p>Note: this is a note above the widget settings form.</p>'; +} +` + += c2c_after_duplicate_widget_form (action) = + +The 'c2c_after_duplicate_widget_form' hook allows you to output text, or perform some sort of action, just after the output of the duplicate widget's configuration form (in the WP admin). + +Arguments: + +* $instance (array) : The settings for the widget instance (namely: title and widget_to_duplicate) + +Example: + +` +// Display a message just after the duplicate widget settings form +add_action( 'c2c_after_duplicate_widget_form', 'my_c2c_after_duplicate_widget_form' ); +function my_c2c_after_duplicate_widget_form( $instance ) { + echo '<p>Note: this is a note below the widget settings form.</p>'; +} +` + +== Changelog == + += 1.0.2 = +* Use string instead of variable to specify translation textdomain +* Re-license as GPLv2 or later (from X11) +* Add 'License' and 'License URI' header tags to readme.txt and plugin file +* Remove ending PHP close tag +* Note compatibility through WP 3.4+ + += 1.0.1 = +* Minor bugfixes +* Add Upgrade Notice section to readme.txt + += 1.0 = +* Initial release + + +== Upgrade Notice == + += 1.0.2 = +Trivial update: noted compatibility through WP 3.4+; explicitly stated license + += 1.0.1 = +Bugfix update: Minor bugfixes. diff --git a/wp-content/plugins/duplicate-widget/screenshot-1.png b/wp-content/plugins/duplicate-widget/screenshot-1.png new file mode 100644 index 0000000..a40e16f Binary files /dev/null and b/wp-content/plugins/duplicate-widget/screenshot-1.png differ diff --git a/wp-content/plugins/events-manager/admin/bookings/em-cancelled.php b/wp-content/plugins/events-manager/admin/bookings/em-cancelled.php new file mode 100644 index 0000000..9d8b747 --- /dev/null +++ b/wp-content/plugins/events-manager/admin/bookings/em-cancelled.php @@ -0,0 +1,137 @@ +<?php +/** + * Generates a "widget" table of confirmed bookings for a specific event. + * + * @param int $event_id + */ +function em_bookings_cancelled_table(){ + global $EM_Event, $EM_Ticket, $wpdb, $current_user; + + $action_scope = ( !empty($_REQUEST['em_obj']) && $_REQUEST['em_obj'] == 'em_bookings_cancelled_table' ); + $action = ( $action_scope && !empty($_GET ['action']) ) ? $_GET ['action']:''; + $order = ( $action_scope && !empty($_GET ['order']) ) ? $_GET ['order']:'ASC'; + $limit = ( $action_scope && !empty($_GET['limit']) ) ? $_GET['limit'] : 20;//Default limit + $page = ( $action_scope && !empty($_GET['pno']) ) ? $_GET['pno']:1; + $offset = ( $action_scope && $page > 1 ) ? ($page-1)*$limit : 0; + + if( is_object($EM_Ticket) ){ + $EM_Bookings = $EM_Ticket->get_bookings()->get_cancelled_bookings(); + }else{ + if( is_object($EM_Event) ){ + $EM_Bookings = $EM_Event->get_bookings()->get_cancelled_bookings(); + }else{ + return false; + } + } + $bookings_count = (is_array($EM_Bookings->bookings)) ? count($EM_Bookings->bookings):0; + ?> + <div class='wrap em_bookings_pending_table em_obj'> + <form id='bookings-filter' method='get' action='<?php bloginfo('wpurl') ?>/wp-admin/edit.php'> + <input type="hidden" name="em_obj" value="em_bookings_pending_table" /> + <!-- + <ul class="subsubsub"> + <li> + <a href='edit.php?post_type=post' class="current">All <span class="count">(1)</span></a> | + </li> + </ul> + <p class="search-box"> + <label class="screen-reader-text" for="post-search-input"><?php _e('Search', 'dbem'); ?>:</label> + <input type="text" id="post-search-input" name="em_search" value="<?php echo (!empty($_GET['em_search'])) ? $_GET['em_search']:''; ?>" /> + <input type="submit" value="<?php _e('Search', 'dbem'); ?>" class="button" /> + </p> + --> + <?php if ( $bookings_count >= $limit ) : ?> + <div class='tablenav'> + <!-- + <div class="alignleft actions"> + <select name="action"> + <option value="-1" selected="selected"> + <?php _e('Bulk Actions', 'dbem'); ?> + </option> + <option value="approve"> + <?php _e('Approve', 'dbem'); ?> + </option> + <option value="decline"> + <?php _e('Decline', 'dbem'); ?> + </option> + </select> + <input type="submit" id="post-query-submit" value="Filter" class="button-secondary" /> + </div> + --> + <!-- + <div class="view-switch"> + <a href="/wp-admin/edit.php?mode=list"><img class="current" id="view-switch-list" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="List View" alt="List View" name="view-switch-list" /></a> <a href="/wp-admin/edit.php?mode=excerpt"><img id="view-switch-excerpt" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="Excerpt View" alt="Excerpt View" name="view-switch-excerpt" /></a> + </div> + --> + <?php + if ( $bookings_count >= $limit ) { + $bookings_nav = em_admin_paginate( $bookings_count, $limit, $page, array('em_ajax'=>0, 'em_obj'=>'em_bookings_confirmed_table')); + echo $bookings_nav; + } + ?> + <div class="clear"></div> + </div> + <?php endif; ?> + <div class="clear"></div> + <?php if( $bookings_count > 0 ): ?> + <div class='table-wrap'> + <table id='dbem-bookings-table' class='widefat post '> + <thead> + <tr> + <th class='manage-column column-cb check-column' scope='col'> + <input class='select-all' type="checkbox" value='1' /> + </th> + <th class='manage-column' scope='col'><?php _e('Booker', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('E-mail', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('Phone number', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('Spaces', 'dbem'); ?></th> + <th class='manage-column' scope='col'> </th> + </tr> + </thead> + <tbody> + <?php + $rowno = 0; + $event_count = 0; + foreach ($EM_Bookings->bookings as $EM_Booking) { + if( ($rowno < $limit || empty($limit)) && ($event_count >= $offset || $offset === 0) ) { + $rowno++; + ?> + <tr> + <th scope="row" class="check-column" style="padding:7px 0px 7px;"><input type='checkbox' value='<?php echo $EM_Booking->booking_id ?>' name='bookings[]'/></th> + <td><a href="<?php echo EM_ADMIN_URL; ?>&page=events-manager-bookings&person_id=<?php echo $EM_Booking->person->ID; ?>"><?php echo $EM_Booking->person->get_name() ?></a></td> + <td><?php echo $EM_Booking->person->user_email ?></td> + <td><?php echo $EM_Booking->person->phone ?></td> + <td><?php echo $EM_Booking->get_spaces() ?></td> + <td> + <?php + $approve_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_approve', 'booking_id'=>$EM_Booking->booking_id)); + $delete_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)); + $edit_url = em_add_get_params($_SERVER['REQUEST_URI'], array('booking_id'=>$EM_Booking->booking_id, 'em_ajax'=>null, 'em_obj'=>null)); + ?> + <a class="em-bookings-approve" href="<?php echo $approve_url ?>"><?php _e('Restore','dbem'); ?></a> | + <a class="em-bookings-edit" href="<?php echo $edit_url; ?>"><?php _e('Edit/View','dbem'); ?></a> | + <a class="em-bookings-delete" href="<?php echo $delete_url ?>"><?php _e('Delete','dbem'); ?></a> + </td> + </tr> + <?php + } + $event_count++; + } + ?> + </tbody> + </table> + </div> + <?php else: ?> + <?php _e('No cancelled bookings.', 'dbem'); ?> + <?php endif; ?> + </form> + <?php if( !empty($bookings_nav) && $EM_Bookings >= $limit ) : ?> + <div class='tablenav'> + <?php echo $bookings_nav; ?> + <div class="clear"></div> + </div> + <?php endif; ?> + </div> + <?php +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/bookings/em-confirmed.php b/wp-content/plugins/events-manager/admin/bookings/em-confirmed.php new file mode 100644 index 0000000..09ada2c --- /dev/null +++ b/wp-content/plugins/events-manager/admin/bookings/em-confirmed.php @@ -0,0 +1,144 @@ +<?php + +/** + * Generates a "widget" table of confirmed bookings for a specific event. + * + * @param int $event_id + */ +function em_bookings_confirmed_table(){ + global $EM_Event, $EM_Ticket, $wpdb, $current_user; + + $action_scope = ( !empty($_REQUEST['em_obj']) && $_REQUEST['em_obj'] == 'em_bookings_confirmed_table' ); + $action = ( $action_scope && !empty($_GET ['action']) ) ? $_GET ['action']:''; + $order = ( $action_scope && !empty($_GET ['order']) ) ? $_GET ['order']:'ASC'; + $limit = ( $action_scope && !empty($_GET['limit']) ) ? $_GET['limit'] : 20;//Default limit + $page = ( $action_scope && !empty($_GET['pno']) ) ? $_GET['pno']:1; + $offset = ( $action_scope && $page > 1 ) ? ($page-1)*$limit : 0; + + if( is_object($EM_Ticket) ){ + $EM_Bookings = $EM_Ticket->get_bookings()->get_bookings(); + }else{ + if( is_object($EM_Event) ){ + $EM_Bookings = $EM_Event->get_bookings()->get_bookings(); + }else{ + return false; + } + } + $bookings_count = (is_array($EM_Bookings->bookings)) ? count($EM_Bookings->bookings):0; + ?> + <div class='wrap em_bookings_pending_table em_obj'> + <form id='bookings-filter' method='get' action='<?php bloginfo('wpurl') ?>/wp-admin/edit.php'> + <input type="hidden" name="em_obj" value="em_bookings_pending_table" /> + <!-- + <ul class="subsubsub"> + <li> + <a href='edit.php?post_type=post' class="current">All <span class="count">(1)</span></a> | + </li> + </ul> + <p class="search-box"> + <label class="screen-reader-text" for="post-search-input"><?php _e('Search', 'dbem'); ?>:</label> + <input type="text" id="post-search-input" name="em_search" value="<?php echo (!empty($_GET['em_search'])) ? $_GET['em_search']:''; ?>" /> + <input type="submit" value="<?php _e('Search', 'dbem'); ?>" class="button" /> + </p> + --> + <?php if ( $bookings_count >= $limit ) : ?> + <div class='tablenav'> + <!-- + <div class="alignleft actions"> + <select name="action"> + <option value="-1" selected="selected"> + <?php _e('Bulk Actions', 'dbem'); ?> + </option> + <option value="approve"> + <?php _e('Approve', 'dbem'); ?> + </option> + <option value="decline"> + <?php _e('Decline', 'dbem'); ?> + </option> + </select> + <input type="submit" id="post-query-submit" value="Filter" class="button-secondary" /> + </div> + --> + <!-- + <div class="view-switch"> + <a href="/wp-admin/edit.php?mode=list"><img class="current" id="view-switch-list" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="List View" alt="List View" name="view-switch-list" /></a> <a href="/wp-admin/edit.php?mode=excerpt"><img id="view-switch-excerpt" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="Excerpt View" alt="Excerpt View" name="view-switch-excerpt" /></a> + </div> + --> + <?php + if ( $bookings_count >= $limit ) { + $bookings_nav = em_admin_paginate($bookings_count, $limit, $page, array('em_ajax'=>0, 'em_obj'=>'em_bookings_confirmed_table')); + echo $bookings_nav; + } + ?> + <div class="clear"></div> + </div> + <?php endif; ?> + <div class="clear"></div> + <?php if( $bookings_count > 0 ): ?> + <div class='table-wrap'> + <table id='dbem-bookings-table' class='widefat post '> + <thead> + <tr> + <th class='manage-column column-cb check-column' scope='col'> + <input class='select-all' type="checkbox" value='1' /> + </th> + <th class='manage-column' scope='col'><?php _e('Booker', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('E-mail', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('Phone number', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('Spaces', 'dbem'); ?></th> + <th class='manage-column' scope='col'> </th> + </tr> + </thead> + <tbody> + <?php + $rowno = 0; + $event_count = 0; + foreach ($EM_Bookings->bookings as $EM_Booking) { + if( ($rowno < $limit || empty($limit)) && ($event_count >= $offset || $offset === 0) ) { + $rowno++; + ?> + <tr> + <th scope="row" class="check-column" style="padding:7px 0px 7px;"><input type='checkbox' value='<?php echo $EM_Booking->booking_id ?>' name='bookings[]'/></th> + <td><a href="<?php echo EM_ADMIN_URL; ?>&page=events-manager-bookings&person_id=<?php echo $EM_Booking->person_id; ?>"><?php echo $EM_Booking->person->get_name() ?></a></td> + <td><?php echo $EM_Booking->person->user_email ?></td> + <td><?php echo $EM_Booking->person->phone ?></td> + <td><?php echo $EM_Booking->get_spaces() ?></td> + <td> + <?php + $unapprove_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_unapprove', 'booking_id'=>$EM_Booking->booking_id)); + $reject_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_reject', 'booking_id'=>$EM_Booking->booking_id)); + $delete_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)); + $edit_url = em_add_get_params($_SERVER['REQUEST_URI'], array('booking_id'=>$EM_Booking->booking_id, 'em_ajax'=>null, 'em_obj'=>null)); + ?> + <?php if( current_user_can('manage_bookings') && get_option('dbem_bookings_approval') ): ?> + <a class="em-bookings-unapprove" href="<?php echo $unapprove_url ?>"><?php _e('Unapprove','dbem'); ?></a> | + <?php else: ?> + <a class="em-bookings-reject" href="<?php echo $reject_url ?>"><?php _e('Reject','dbem'); ?></a> | + <?php endif; ?> + <span class="trash"><a class="em-bookings-delete" href="<?php echo $delete_url ?>"><?php _e('Delete','dbem'); ?></a></span> | + <a class="em-bookings-edit" href="<?php echo $edit_url; ?>"><?php _e('Edit/View','dbem'); ?></a> + </td> + </tr> + <?php + } + $event_count++; + } + ?> + </tbody> + </table> + </div> + <?php else: ?> + <?php _e('No confirmed bookings.', 'dbem'); ?> + <?php endif; ?> + </form> + <?php if( !empty($bookings_nav) && $EM_Bookings >= $limit ) : ?> + <div class='tablenav'> + <?php echo $bookings_nav; ?> + <div class="clear"></div> + </div> + <?php endif; ?> + </div> + <?php + +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/bookings/em-events.php b/wp-content/plugins/events-manager/admin/bookings/em-events.php new file mode 100644 index 0000000..4b4165e --- /dev/null +++ b/wp-content/plugins/events-manager/admin/bookings/em-events.php @@ -0,0 +1,172 @@ +<?php + +/** + * Determines whether to show event page or events page, and saves any updates to the event or events + * @return null + */ +function em_bookings_events_table() { + //TODO Simplify panel for events, use form flags to detect certain actions (e.g. submitted, etc) + global $wpdb; + global $EM_Event; + + $scope_names = array ( + 'past' => __ ( 'Past events', 'dbem' ), + 'all' => __ ( 'All events', 'dbem' ), + 'future' => __ ( 'Future events', 'dbem' ) + ); + + $action_scope = ( !empty($_REQUEST['em_obj']) && $_REQUEST['em_obj'] == 'em_bookings_events_table' ); + $action = ( $action_scope && !empty($_GET ['action']) ) ? $_GET ['action']:''; + $order = ( $action_scope && !empty($_GET ['order']) ) ? $_GET ['order']:'ASC'; + $limit = ( $action_scope && !empty($_GET['limit']) ) ? $_GET['limit'] : 20;//Default limit + $page = ( $action_scope && !empty($_GET['pno']) ) ? $_GET['pno']:1; + $offset = ( $action_scope && $page > 1 ) ? ($page-1)*$limit : 0; + $scope = ( $action_scope && !empty($_GET ['scope']) && array_key_exists($_GET ['scope'], $scope_names) ) ? $_GET ['scope']:'future'; + + // No action, only showing the events list + switch ($scope) { + case "past" : + $title = __ ( 'Past Events', 'dbem' ); + break; + case "all" : + $title = __ ( 'All Events', 'dbem' ); + break; + default : + $title = __ ( 'Future Events', 'dbem' ); + $scope = "future"; + } + $owner = !current_user_can('manage_others_bookings') ? get_current_user_id() : false; + $events = EM_Events::get( array('scope'=>$scope, 'limit'=>$limit, 'offset' => $offset, 'order'=>$order, 'bookings'=>true, 'owner' => $owner ) ); + $events_count = EM_Events::count( array('scope'=>$scope, 'limit'=>0, 'order'=>$order, 'bookings'=>true, 'owner' => $owner ) ); + + $use_events_end = get_option ( 'dbem_use_event_end' ); + ?> + <div class="wrap em_bookings_events_table em_obj"> + <form id="posts-filter" action="" method="get"> + <input type="hidden" name="em_obj" value="em_bookings_events_table" /> + <?php if(!empty($_GET['page'])): ?> + <input type='hidden' name='page' value='events-manager-bookings' /> + <?php endif; ?> + <div class="tablenav"> + <div class="alignleft actions"> + <!-- + <select name="action"> + <option value="-1" selected="selected"><?php _e ( 'Bulk Actions' ); ?></option> + <option value="deleteEvents"><?php _e ( 'Delete selected','dbem' ); ?></option> + </select> + <input type="submit" value="<?php _e ( 'Apply' ); ?>" name="doaction2" id="doaction2" class="button-secondary action" /> + --> + <select name="scope"> + <?php + foreach ( $scope_names as $key => $value ) { + $selected = ""; + if ($key == $scope) + $selected = "selected='selected'"; + echo "<option value='$key' $selected>$value</option> "; + } + ?> + </select> + <input id="post-query-submit" class="button-secondary" type="submit" value="<?php _e ( 'Filter' )?>" /> + </div> + <!-- + <div class="view-switch"> + <a href="/wp-admin/edit.php?mode=list"><img class="current" id="view-switch-list" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="List View" alt="List View" name="view-switch-list" /></a> <a href="/wp-admin/edit.php?mode=excerpt"><img id="view-switch-excerpt" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="Excerpt View" alt="Excerpt View" name="view-switch-excerpt" /></a> + </div> + --> + <?php + if ( $events_count >= $limit ) { + $events_nav = em_admin_paginate( $events_count, $limit, $page, array('em_ajax'=>0, 'em_obj'=>'em_bookings_events_table')); + echo $events_nav; + } + ?> + <br class="clear" /> + </div> + + <?php + if (empty ( $events )) { + // TODO localize + _e ( 'no events','dbem' ); + } else { + ?> + <div class='table-wrap'> + <table class="widefat"> + <thead> + <tr> + <th class='manage-column column-cb check-column' scope='col'> + <input class='select-all' type="checkbox" value='1' /> + </th> + <th><?php _e ( 'Event', 'dbem' ); ?></th> + <th><?php _e ( 'Date and time', 'dbem' ); ?></th> + </tr> + </thead> + <tbody> + <?php + $rowno = 0; + foreach ( $events as $event ) { + /* @var $event EM_Event */ + $rowno++; + $class = ($rowno % 2) ? ' class="alternate"' : ''; + // FIXME set to american + $localised_start_date = date_i18n(get_option('date_format'), $event->start); + $localised_end_date = date_i18n(get_option('date_format'), $event->end); + $style = ""; + $today = date ( "Y-m-d" ); + + if ($event->start_date < $today && $event->end_date < $today){ + $style = "style ='background-color: #FADDB7;'"; + } + ?> + <tr <?php echo "$class $style"; ?>> + + <td> + <input type='checkbox' class='row-selector' value='<?php echo $event->event_id; ?>' name='events[]' /> + </td> + <td> + <strong> + <?php echo $event->output('#_BOOKINGSLINK'); ?> + </strong> + – + <?php _e("Booked Spaces",'dbem') ?>: <?php echo $event->get_bookings()->get_booked_spaces()."/".$event->get_spaces() ?> + <?php if( get_option('dbem_bookings_approval') == 1 ) : ?> + | <?php _e("Pending",'dbem') ?>: <?php echo $event->get_bookings()->get_pending_spaces(); ?> + <?php endif; ?> + </td> + + <td> + <?php echo $localised_start_date; ?> + <?php echo ($localised_end_date != $localised_start_date) ? " - $localised_end_date":'' ?> + – + <?php + //TODO Should 00:00 - 00:00 be treated as an all day event? + echo substr ( $event->start_time, 0, 5 ) . " - " . substr ( $event->end_time, 0, 5 ); + ?> + </td> + </tr> + <?php + } + ?> + </tbody> + </table> + </div> + <?php + } // end of table + ?> + <div class='tablenav'> + <div class="alignleft actions"> + <br class='clear' /> + </div> + <?php if (!empty($events_nav) && $events_count >= $limit ) : ?> + <div class="tablenav-pages"> + <?php + echo $events_nav; + ?> + </div> + <?php endif; ?> + <br class='clear' /> + </div> + </form> + </div> + <?php +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/bookings/em-pending.php b/wp-content/plugins/events-manager/admin/bookings/em-pending.php new file mode 100644 index 0000000..0998516 --- /dev/null +++ b/wp-content/plugins/events-manager/admin/bookings/em-pending.php @@ -0,0 +1,159 @@ +<?php + +/** + * Generates a "widget" table of pending bookings with some quick admin operation options. + * If event id supplied then only pending bookings for that event will show. + * + * @param int $event_id + */ +function em_bookings_pending_table($event_id = false){ + global $EM_Event, $EM_Ticket, $wpdb, $current_user; + + if( get_option('dbem_bookings_approval') == 0 ){ + return false; + } + + $action_scope = ( !empty($_REQUEST['em_obj']) && $_REQUEST['em_obj'] == 'em_bookings_pending_table' ); + $action = ( $action_scope && !empty($_GET ['action']) ) ? $_GET ['action']:''; + $order = ( $action_scope && !empty($_GET ['order']) ) ? $_GET ['order']:'ASC'; + $limit = ( $action_scope && !empty($_GET['limit']) ) ? $_GET['limit'] : 20;//Default limit + $page = ( $action_scope && !empty($_GET['pno']) ) ? $_GET['pno']:1; + $offset = ( $action_scope && $page > 1 ) ? ($page-1)*$limit : 0; + + if( is_object($EM_Ticket) ){ + $EM_Bookings = $EM_Ticket->get_bookings()->get_pending_bookings(); + }else{ + if( is_object($EM_Event) ){ + $EM_Bookings = $EM_Event->get_bookings()->get_pending_bookings(); + }else{ + //To optimize performance, we can do one query here for all pending bookings to show. + $EM_Bookings = EM_Bookings::get(array('status'=>0)); + $events = array(); + //Now let's create events and bookings for this: + foreach($EM_Bookings->bookings as $EM_Booking){ + //create event + if( !array_key_exists($EM_Booking->event_id,$events) ){ + $events[$EM_Booking->event_id] = new EM_Event($EM_Booking->event_id); + } + } + } + } + $bookings_count = (is_array($EM_Bookings->bookings)) ? count($EM_Bookings->bookings):0; + ?> + <div class='wrap em_bookings_pending_table em_obj'> + <form id='bookings-filter' method='get' action='<?php bloginfo('wpurl') ?>/wp-admin/edit.php'> + <input type="hidden" name="em_obj" value="em_bookings_pending_table" /> + <!-- + <ul class="subsubsub"> + <li> + <a href='edit.php?post_type=post' class="current">All <span class="count">(1)</span></a> | + </li> + </ul> + <p class="search-box"> + <label class="screen-reader-text" for="post-search-input"><?php _e('Search', 'dbem'); ?>:</label> + <input type="text" id="post-search-input" name="em_search" value="<?php echo (!empty($_GET['em_search'])) ? $_GET['em_search']:''; ?>" /> + <input type="submit" value="<?php _e('Search', 'dbem'); ?>" class="button" /> + </p> + --> + <?php if ( $bookings_count >= $limit ) : ?> + <div class='tablenav'> + <!-- + <div class="alignleft actions"> + <select name="action"> + <option value="-1" selected="selected"> + <?php _e('Bulk Actions', 'dbem'); ?> + </option> + <option value="approve"> + <?php _e('Approve', 'dbem'); ?> + </option> + <option value="decline"> + <?php _e('Decline', 'dbem'); ?> + </option> + </select> + <input type="submit" id="post-query-submit" value="Filter" class="button-secondary" /> + </div> + --> + <!-- + <div class="view-switch"> + <a href="/wp-admin/edit.php?mode=list"><img class="current" id="view-switch-list" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="List View" alt="List View" name="view-switch-list" /></a> <a href="/wp-admin/edit.php?mode=excerpt"><img id="view-switch-excerpt" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="Excerpt View" alt="Excerpt View" name="view-switch-excerpt" /></a> + </div> + --> + <?php + if ( $bookings_count >= $limit ) { + $bookings_nav = em_admin_paginate( $bookings_count, $limit, $page, array('em_ajax'=>0, 'em_obj'=>'em_bookings_pending_table')); + echo $bookings_nav; + } + ?> + <div class="clear"></div> + </div> + <?php endif; ?> + <div class="clear"></div> + <?php if( $bookings_count > 0 ): ?> + <div class='table-wrap'> + <table id='dbem-bookings-table' class='widefat post '> + <thead> + <tr> + <th class='manage-column column-cb check-column' scope='col'> + <input class='select-all' type="checkbox" value='1' /> + </th> + <th class='manage-column' scope='col'><?php _e('Booker', 'dbem'); ?></th> + <?php if( !is_object($EM_Event) && !is_object($EM_Ticket) ): ?> + <th class='manage-column' scope="col"><?php _e('Event', 'dbem'); ?></th> + <?php endif; ?> + <th class='manage-column' scope='col'><?php _e('E-mail', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('Phone number', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('Spaces', 'dbem'); ?></th> + <th class='manage-column' scope='col'> </th> + </tr> + </thead> + <tbody> + <?php + $rowno = 0; + $event_count = 0; + foreach ($EM_Bookings->bookings as $EM_Booking) { + if( ($rowno < $limit || empty($limit)) && ($event_count >= $offset || $offset === 0) ) { + $rowno++; + ?> + <tr> + <th scope="row" class="check-column" style="padding:7px 0px 7px;"><input type='checkbox' value='<?php echo $EM_Booking->booking_id ?>' name='bookings[]'/></th> + <td><a href="<?php echo EM_ADMIN_URL; ?>&page=events-manager-bookings&person_id=<?php echo $EM_Booking->person->ID; ?>"><?php echo $EM_Booking->person->get_name() ?></a></td> + <?php if( !is_object($EM_Event) && !is_object($EM_Ticket) ): ?> + <td><a href="<?php echo EM_ADMIN_URL; ?>&page=events-manager-bookings&event_id=<?php echo $EM_Booking->event_id; ?>"><?php echo $events[$EM_Booking->event_id]->name ?></a></td> + <?php endif; ?> + <td><?php echo $EM_Booking->person->user_email ?></td> + <td><?php echo $EM_Booking->person->phone ?></td> + <td><?php echo $EM_Booking->get_spaces() ?></td> + <td> + <?php + $approve_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_approve', 'booking_id'=>$EM_Booking->booking_id)); + $reject_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_reject', 'booking_id'=>$EM_Booking->booking_id)); + $delete_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)); + ?> + <a class="em-bookings-approve" href="<?php echo $approve_url ?>"><?php _e('Approve','dbem'); ?></a> | + <a class="em-bookings-reject" href="<?php echo $reject_url ?>"><?php _e('Reject','dbem'); ?></a> | + <span class="trash"><a class="em-bookings-delete" href="<?php echo $delete_url ?>"><?php _e('Delete','dbem'); ?></a></span> | + <a class="em-bookings-edit" href="<?php echo EM_ADMIN_URL; ?>&page=events-manager-bookings&booking_id=<?php echo $EM_Booking->booking_id; ?>"><?php _e('Edit/View','dbem'); ?></a> + </td> + </tr> + <?php + } + $event_count++; + } + ?> + </tbody> + </table> + </div> + <?php else: ?> + <?php _e('No pending bookings.', 'dbem'); ?> + <?php endif; ?> + </form> + <?php if( !empty($bookings_nav) && $EM_Bookings >= $limit ) : ?> + <div class='tablenav'> + <?php echo $bookings_nav; ?> + <div class="clear"></div> + </div> + <?php endif; ?> + </div> + <?php +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/bookings/em-person.php b/wp-content/plugins/events-manager/admin/bookings/em-person.php new file mode 100644 index 0000000..1314beb --- /dev/null +++ b/wp-content/plugins/events-manager/admin/bookings/em-person.php @@ -0,0 +1,152 @@ +<?php + +/** + * Generates a "widget" table of confirmed bookings for a specific event. + * + * @param int $event_id + */ +function em_bookings_person_table(){ + global $wpdb, $current_user,$EM_Person; + if(!is_object($EM_Person)){ + return false; + } + $action_scope = ( !empty($_REQUEST['em_obj']) && $_REQUEST['em_obj'] == 'em_bookings_confirmed_table' ); + $action = ( $action_scope && !empty($_GET ['action']) ) ? $_GET ['action']:''; + $order = ( $action_scope && !empty($_GET ['order']) ) ? $_GET ['order']:'ASC'; + $limit = ( $action_scope && !empty($_GET['limit']) ) ? $_GET['limit'] : 20;//Default limit + $page = ( $action_scope && !empty($_GET['pno']) ) ? $_GET['pno']:1; + $offset = ( $action_scope && $page > 1 ) ? ($page-1)*$limit : 0; + + $bookings = $EM_Person->get_bookings(); + $bookings_count = count($bookings); + if($bookings_count > 0){ + //Get events here in one query to speed things up + foreach($bookings as $EM_Booking){ + $event_ids[] = $EM_Booking->event_id; + } + $events = EM_Events::get($event_ids); + } + ?> + <div class='wrap em_bookings_pending_table em_obj'> + <form id='bookings-filter' method='get' action='<?php bloginfo('wpurl') ?>/wp-admin/edit.php'> + <input type="hidden" name="em_obj" value="em_bookings_pending_table" /> + <!-- + <ul class="subsubsub"> + <li> + <a href='edit.php?post_type=post' class="current">All <span class="count">(1)</span></a> | + </li> + </ul> + <p class="search-box"> + <label class="screen-reader-text" for="post-search-input"><?php _e('Search', 'dbem'); ?>:</label> + <input type="text" id="post-search-input" name="em_search" value="<?php echo (!empty($_GET['em_search'])) ? $_GET['em_search']:''; ?>" /> + <input type="submit" value="<?php _e('Search', 'dbem'); ?>" class="button" /> + </p> + --> + <?php if ( $bookings_count >= $limit ) : ?> + <div class='tablenav'> + <!-- + <div class="alignleft actions"> + <select name="action"> + <option value="-1" selected="selected"> + <?php _e('Bulk Actions', 'dbem'); ?> + </option> + <option value="approve"> + <?php _e('Approve', 'dbem'); ?> + </option> + <option value="decline"> + <?php _e('Decline', 'dbem'); ?> + </option> + </select> + <input type="submit" id="post-query-submit" value="Filter" class="button-secondary" /> + </div> + --> + <!-- + <div class="view-switch"> + <a href="/wp-admin/edit.php?mode=list"><img class="current" id="view-switch-list" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="List View" alt="List View" name="view-switch-list" /></a> <a href="/wp-admin/edit.php?mode=excerpt"><img id="view-switch-excerpt" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="Excerpt View" alt="Excerpt View" name="view-switch-excerpt" /></a> + </div> + --> + <?php + if ( $bookings_count >= $limit ) { + $bookings_nav = em_admin_paginate( $bookings_count, $limit, $page, array('em_ajax'=>0, 'em_obj'=>'em_bookings_confirmed_table')); + echo $bookings_nav; + } + ?> + <div class="clear"></div> + </div> + <?php endif; ?> + <div class="clear"></div> + <?php if( $bookings_count > 0 ): ?> + <div class='table-wrap'> + <table id='dbem-bookings-table' class='widefat post '> + <thead> + <tr> + <th class='manage-column column-cb check-column' scope='col'> + <input class='select-all' type="checkbox" value='1' /> + </th> + <th class='manage-column' scope='col'><?php _e('Event', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('Spaces', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('Status', 'dbem'); ?></th> + <th class='manage-column' scope='col'> </th> + </tr> + </thead> + <tbody> + <?php + $rowno = 0; + $event_count = 0; + foreach ($bookings as $EM_Booking) { + $EM_Event = $events[$EM_Booking->event_id]; + if( $EM_Event->can_manage('edit_events','edit_others_events') && ($rowno < $limit || empty($limit)) && ($event_count >= $offset || $offset === 0) ) { + $rowno++; + ?> + <tr> + <th scope="row" class="check-column" style="padding:7px 0px 7px;"><input type='checkbox' value='<?php echo $EM_Booking->booking_id ?>' name='bookings[]'/></th> + <td><a class="row-title" href="<?php echo EM_ADMIN_URL; ?>&page=events-manager-bookings&event_id=<?php echo $EM_Event->event_id ?>"><?php echo ($EM_Event->event_name); ?></a></td> + <td><?php echo $EM_Booking->get_spaces() ?></td> + <td><?php echo $EM_Booking->status_array[$EM_Booking->booking_status]; ?> + </td> + <td> + <?php + $unapprove_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_unapprove', 'booking_id'=>$EM_Booking->booking_id)); + $approve_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_approve', 'booking_id'=>$EM_Booking->booking_id)); + $reject_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_reject', 'booking_id'=>$EM_Booking->booking_id)); + $delete_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)); + ?> + <?php if( get_option('dbem_bookings_approval') && ($EM_Booking->booking_status == 0 ) ): ?> + <a class="em-bookings-approve" href="<?php echo $approve_url ?>"><?php _e('Approve','dbem'); ?></a> | + <?php endif; ?> + <?php if( get_option('dbem_bookings_approval') && $EM_Booking->booking_status == 1 ): ?> + <a class="em-bookings-unapprove" href="<?php echo $unapprove_url ?>"><?php _e('Unapprove','dbem'); ?></a> | + <?php endif; ?> + <?php if( $EM_Booking->booking_status == 2 ): ?> + <a class="em-bookings-approve" href="<?php echo $approve_url ?>"><?php _e('Restore','dbem'); ?></a> | + <?php endif; ?> + <?php if( $EM_Booking->booking_status == 0 || $EM_Booking->booking_status == 1 ): ?> + <a class="em-bookings-reject" href="<?php echo $reject_url ?>"><?php _e('Reject','dbem'); ?></a> | + <?php endif; ?> + <a class="em-bookings-edit" href="<?php echo EM_ADMIN_URL; ?>&page=events-manager-bookings&booking_id=<?php echo $EM_Booking->booking_id; ?>"><?php _e('Edit/View','dbem'); ?></a> | + <span class="trash"><a class="em-bookings-delete" href="<?php echo $delete_url ?>"><?php _e('Delete','dbem'); ?></a></span> + </td> + </tr> + <?php + } + $event_count++; + } + ?> + </tbody> + </table> + </div> + <?php else: ?> + <?php _e('No confirmed bookings.', 'dbem'); ?> + <?php endif; ?> + </form> + <?php if( !empty($bookings_nav) && $bookings >= $limit ) : ?> + <div class='tablenav'> + <?php echo $bookings_nav; ?> + <div class="clear"></div> + </div> + <?php endif; ?> + </div> + <?php + +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/bookings/em-rejected.php b/wp-content/plugins/events-manager/admin/bookings/em-rejected.php new file mode 100644 index 0000000..5d37d19 --- /dev/null +++ b/wp-content/plugins/events-manager/admin/bookings/em-rejected.php @@ -0,0 +1,137 @@ +<?php +/** + * Generates a "widget" table of confirmed bookings for a specific event. + * + * @param int $event_id + */ +function em_bookings_rejected_table(){ + global $EM_Event, $EM_Ticket, $wpdb, $current_user; + + $action_scope = ( !empty($_REQUEST['em_obj']) && $_REQUEST['em_obj'] == 'em_bookings_confirmed_table' ); + $action = ( $action_scope && !empty($_GET ['action']) ) ? $_GET ['action']:''; + $order = ( $action_scope && !empty($_GET ['order']) ) ? $_GET ['order']:'ASC'; + $limit = ( $action_scope && !empty($_GET['limit']) ) ? $_GET['limit'] : 20;//Default limit + $page = ( $action_scope && !empty($_GET['pno']) ) ? $_GET['pno']:1; + $offset = ( $action_scope && $page > 1 ) ? ($page-1)*$limit : 0; + + if( is_object($EM_Ticket) ){ + $EM_Bookings = $EM_Ticket->get_bookings()->get_rejected_bookings(); + }else{ + if( is_object($EM_Event) ){ + $EM_Bookings = $EM_Event->get_bookings()->get_rejected_bookings(); + }else{ + return false; + } + } + $bookings_count = (is_array($EM_Bookings->bookings)) ? count($EM_Bookings->bookings):0; + ?> + <div class='wrap em_bookings_pending_table em_obj'> + <form id='bookings-filter' method='get' action='<?php bloginfo('wpurl') ?>/wp-admin/edit.php'> + <input type="hidden" name="em_obj" value="em_bookings_pending_table" /> + <!-- + <ul class="subsubsub"> + <li> + <a href='edit.php?post_type=post' class="current">All <span class="count">(1)</span></a> | + </li> + </ul> + <p class="search-box"> + <label class="screen-reader-text" for="post-search-input"><?php _e('Search', 'dbem'); ?>:</label> + <input type="text" id="post-search-input" name="em_search" value="<?php echo (!empty($_GET['em_search'])) ? $_GET['em_search']:''; ?>" /> + <input type="submit" value="<?php _e('Search', 'dbem'); ?>" class="button" /> + </p> + --> + <?php if ( $bookings_count >= $limit ) : ?> + <div class='tablenav'> + <!-- + <div class="alignleft actions"> + <select name="action"> + <option value="-1" selected="selected"> + <?php _e('Bulk Actions', 'dbem'); ?> + </option> + <option value="approve"> + <?php _e('Approve', 'dbem'); ?> + </option> + <option value="decline"> + <?php _e('Decline', 'dbem'); ?> + </option> + </select> + <input type="submit" id="post-query-submit" value="Filter" class="button-secondary" /> + </div> + --> + <!-- + <div class="view-switch"> + <a href="/wp-admin/edit.php?mode=list"><img class="current" id="view-switch-list" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="List View" alt="List View" name="view-switch-list" /></a> <a href="/wp-admin/edit.php?mode=excerpt"><img id="view-switch-excerpt" src="http://wordpress.lan/wp-includes/images/blank.gif" width="20" height="20" title="Excerpt View" alt="Excerpt View" name="view-switch-excerpt" /></a> + </div> + --> + <?php + if ( $bookings_count >= $limit ) { + $bookings_nav = em_admin_paginate( $bookings_count, $limit, $page, array('em_ajax'=>0, 'em_obj'=>'em_bookings_confirmed_table')); + echo $bookings_nav; + } + ?> + <div class="clear"></div> + </div> + <?php endif; ?> + <div class="clear"></div> + <?php if( $bookings_count > 0 ): ?> + <div class='table-wrap'> + <table id='dbem-bookings-table' class='widefat post '> + <thead> + <tr> + <th class='manage-column column-cb check-column' scope='col'> + <input class='select-all' type="checkbox" value='1' /> + </th> + <th class='manage-column' scope='col'><?php _e('Booker', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('E-mail', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('Phone number', 'dbem'); ?></th> + <th class='manage-column' scope='col'><?php _e('Spaces', 'dbem'); ?></th> + <th class='manage-column' scope='col'> </th> + </tr> + </thead> + <tbody> + <?php + $rowno = 0; + $event_count = 0; + foreach ($EM_Bookings->bookings as $EM_Booking) { + if( ($rowno < $limit || empty($limit)) && ($event_count >= $offset || $offset === 0) ) { + $rowno++; + ?> + <tr> + <th scope="row" class="check-column" style="padding:7px 0px 7px;"><input type='checkbox' value='<?php echo $EM_Booking->booking_id ?>' name='bookings[]'/></th> + <td><a href="<?php echo EM_ADMIN_URL; ?>&page=events-manager-bookings&person_id=<?php echo $EM_Booking->person->ID; ?>"><?php echo $EM_Booking->person->get_name() ?></a></td> + <td><?php echo $EM_Booking->person->user_email ?></td> + <td><?php echo $EM_Booking->person->phone ?></td> + <td><?php echo $EM_Booking->get_spaces() ?></td> + <td> + <?php + $approve_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_approve', 'booking_id'=>$EM_Booking->booking_id)); + $delete_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)); + $edit_url = em_add_get_params($_SERVER['REQUEST_URI'], array('booking_id'=>$EM_Booking->booking_id, 'em_ajax'=>null, 'em_obj'=>null)); + ?> + <a class="em-bookings-approve" href="<?php echo $approve_url ?>"><?php _e('Approve','dbem'); ?></a> | + <a class="em-bookings-edit" href="<?php echo $edit_url ?>"><?php _e('Edit/View','dbem'); ?></a> | + <span class="trash"><a class="em-bookings-delete" href="<?php echo $delete_url ?>"><?php _e('Delete','dbem'); ?></a></span> + </td> + </tr> + <?php + } + $event_count++; + } + ?> + </tbody> + </table> + </div> + <?php else: ?> + <?php _e('No rejected bookings.', 'dbem'); ?> + <?php endif; ?> + </form> + <?php if( !empty($bookings_nav) && $EM_Bookings >= $limit ) : ?> + <div class='tablenav'> + <?php echo $bookings_nav; ?> + <div class="clear"></div> + </div> + <?php endif; ?> + </div> + <?php +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/em-admin.php b/wp-content/plugins/events-manager/admin/em-admin.php new file mode 100644 index 0000000..ccea883 --- /dev/null +++ b/wp-content/plugins/events-manager/admin/em-admin.php @@ -0,0 +1,244 @@ +<?php +//Admin functions +function em_admin_menu(){ + global $menu, $submenu, $pagenow; + //Count pending bookings + if( get_option('dbem_rsvp_enabled') ){ + $bookings_num = ''; + $bookings_pending_count = apply_filters('em_bookings_pending_count',0); + if( get_option('dbem_bookings_approval') == 1){ + $bookings_pending_count += count(EM_Bookings::get(array('status'=>'0', 'blog'=>get_current_blog_id()))->bookings); + } + if($bookings_pending_count > 0){ + $bookings_num = '<span class="update-plugins count-'.$bookings_pending_count.'"><span class="plugin-count">'.$bookings_pending_count.'</span></span>'; + } + }else{ + $bookings_num = ''; + $bookings_pending_count = 0; + } + //Count pending events + $events_num = ''; + $events_pending_count = EM_Events::count(array('status'=>0, 'scope'=>'all', 'blog'=>get_current_blog_id())); + //TODO Add flexible permissions + if($events_pending_count > 0){ + $events_num = '<span class="update-plugins count-'.$events_pending_count.'"><span class="plugin-count">'.$events_pending_count.'</span></span>'; + } + //Count pending recurring events + $events_recurring_num = ''; + $events_recurring_pending_count = EM_Events::count(array('status'=>0, 'recurring'=>1, 'scope'=>'all', 'blog'=>get_current_blog_id())); + //TODO Add flexible permissions + if($events_recurring_pending_count > 0){ + $events_recurring_num = '<span class="update-plugins count-'.$events_recurring_pending_count.'"><span class="plugin-count">'.$events_recurring_pending_count.'</span></span>'; + } + $both_pending_count = apply_filters('em_items_pending_count', $events_pending_count + $bookings_pending_count + $events_recurring_pending_count); + $both_num = ($both_pending_count > 0) ? '<span class="update-plugins count-'.$both_pending_count.'"><span class="plugin-count">'.$both_pending_count.'</span></span>':''; + // Add a submenu to the custom top-level menu: + $plugin_pages = array(); + if( get_option('dbem_rsvp_enabled') ){ + $plugin_pages['bookings'] = add_submenu_page('edit.php?post_type='.EM_POST_TYPE_EVENT, __('Bookings', 'dbem'), __('Bookings', 'dbem').$bookings_num, 'manage_bookings', 'events-manager-bookings', "em_bookings_page"); + } + $plugin_pages['options'] = add_submenu_page('edit.php?post_type='.EM_POST_TYPE_EVENT, __('Events Manager Settings','dbem'),__('Settings','dbem'), 'activate_plugins', "events-manager-options", 'em_admin_options_page'); + $plugin_pages['help'] = add_submenu_page('edit.php?post_type='.EM_POST_TYPE_EVENT, __('Getting Help for Events Manager','dbem'),__('Help','dbem'), 'activate_plugins', "events-manager-help", 'em_admin_help_page'); + //If multisite global with locations set to be saved in main blogs we can force locations to be created on the main blog only + if( EM_MS_GLOBAL && !is_main_site() && get_site_option('dbem_ms_mainblog_locations') ){ + include( dirname(__FILE__)."/em-ms-locations.php" ); + $plugin_pages['locations'] = add_submenu_page('edit.php?post_type='.EM_POST_TYPE_EVENT, __('Locations','dbem'),__('Locations','dbem'), 'read_others_locations', "locations", 'em_admin_ms_locations'); + } + $plugin_pages = apply_filters('em_create_events_submenu',$plugin_pages); + //We have to modify the menus manually + if( !empty($both_num) ){ //Main Event Menu + //go through the menu array and modify the events menu if found + foreach ( (array)$menu as $key => $parent_menu ) { + if ( $parent_menu[2] == 'edit.php?post_type='.EM_POST_TYPE_EVENT ){ + $menu[$key][0] = $menu[$key][0]. $both_num; + break; + } + } + } + if( !empty($events_num) && !empty($submenu['edit.php?post_type='.EM_POST_TYPE_EVENT]) ){ //Submenu Event Item + //go through the menu array and modify the events menu if found + foreach ( (array)$submenu['edit.php?post_type='.EM_POST_TYPE_EVENT] as $key => $submenu_item ) { + if ( $submenu_item[2] == 'edit.php?post_type='.EM_POST_TYPE_EVENT ){ + $submenu['edit.php?post_type='.EM_POST_TYPE_EVENT][$key][0] = $submenu['edit.php?post_type='.EM_POST_TYPE_EVENT][$key][0]. $events_num; + break; + } + } + } + if( !empty($events_recurring_num) && !empty($submenu['edit.php?post_type='.EM_POST_TYPE_EVENT]) ){ //Submenu Recurring Event Item + //go through the menu array and modify the events menu if found + foreach ( (array)$submenu['edit.php?post_type='.EM_POST_TYPE_EVENT] as $key => $submenu_item ) { + if ( $submenu_item[2] == 'edit.php?post_type=event-recurring' ){ + $submenu['edit.php?post_type='.EM_POST_TYPE_EVENT][$key][0] = $submenu['edit.php?post_type='.EM_POST_TYPE_EVENT][$key][0]. $events_recurring_num; + break; + } + } + } + /* Hack! Add location/recurrence isn't possible atm so this is a workaround */ + global $_wp_submenu_nopriv; + if( $pagenow == 'post-new.php' && !empty($_REQUEST['post_type']) ){ + if( $_REQUEST['post_type'] == EM_POST_TYPE_LOCATION && !empty($_wp_submenu_nopriv['edit.php']['post-new.php']) && current_user_can('edit_locations') ){ + unset($_wp_submenu_nopriv['edit.php']['post-new.php']); + } + if( $_REQUEST['post_type'] == 'event-recurring' && !empty($_wp_submenu_nopriv['edit.php']['post-new.php']) && current_user_can('edit_recurring_events') ){ + unset($_wp_submenu_nopriv['edit.php']['post-new.php']); + } + } +} +add_action('admin_menu','em_admin_menu'); + +function em_ms_admin_menu(){ + add_menu_page( __('Events Manager','dbem'), __('Events Manager','dbem'), 'activate_plugins', 'events-manager-options', 'em_ms_admin_options_page', plugins_url('includes/images/calendar-16.png', dirname(dirname(__FILE__)).'/events-manager.php') ); + add_submenu_page('events-manager-options', __('Update Blogs','dbem'),__('Update Blogs','dbem'), 'activate_plugins', "events-manager-update", 'em_ms_upgrade'); +} +add_action('network_admin_menu','em_ms_admin_menu'); + +function em_admin_init(){ + //in MS global mode + if( EM_MS_GLOBAL && is_user_logged_in() && !is_main_site() && get_site_option('dbem_ms_mainblog_locations') ){ + EM_Object::ms_global_switch(); + $user = new WP_User(get_current_user_id()); + if( count($user->roles) == 0 ){ + $user->set_role('subscriber'); + } + EM_Object::ms_global_switch_back(); + } +} +add_action('admin_init','em_admin_init'); + +/** + * Generate warnings and notices in the admin area + */ +function em_admin_warnings() { + global $EM_Notices; + //If we're editing the events page show hello to new user + $events_page_id = get_option ( 'dbem_events_page' ); + $dismiss_link_joiner = ( count($_GET) > 0 ) ? '&':'?'; + + if( current_user_can('activate_plugins') ){ + //New User Intro + if (isset ( $_GET ['disable_hello_to_user'] ) && $_GET ['disable_hello_to_user'] == 'true'){ + // Disable Hello to new user if requested + update_option('dbem_hello_to_user',0); + }elseif ( get_option ( 'dbem_hello_to_user' ) ) { + //FIXME update welcome msg with good links + $advice = sprintf( __("<p>Events Manager is ready to go! It is highly recommended you read the <a href='%s'>Getting Started</a> guide on our site, as well as checking out the <a href='%s'>Settings Page</a>. <a href='%s' title='Don't show this advice again'>Dismiss</a></p>", 'dbem'), 'http://wp-events-plugin.com/documentation/getting-started/?utm_source=em&utm_medium=plugin&utm_content=installationlink&utm_campaign=plugin_links', EM_ADMIN_URL .'&page=events-manager-options', $_SERVER['REQUEST_URI'].$dismiss_link_joiner.'disable_hello_to_user=true'); + ?> + <div id="message" class="updated"> + <?php echo $advice; ?> + </div> + <?php + } + + //If events page couldn't be created or is missing + if( !empty($_GET['em_dismiss_events_page']) ){ + update_option('dbem_dismiss_events_page',1); + }else{ + if ( !get_page($events_page_id) && !get_option('dbem_dismiss_events_page') ){ + ?> + <div id="em_page_error" class="updated"> + <p><?php echo sprintf ( __( 'Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your <a href="%s">settings page</a>. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so <a href="%s">ignore this message</a>', 'dbem'), EM_ADMIN_URL .'&page=events-manager-options', $_SERVER['REQUEST_URI'].$dismiss_link_joiner.'em_dismiss_events_page=1' ); ?></p> + </div> + <?php + } + } + + if( defined('EMP_VERSION') && EMP_VERSION < EM_PRO_MIN_VERSION ){ + ?> + <div id="em_page_error" class="updated"> + <p><?php _e('There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update.','dbem'); ?></p> + </div> + <?php + } + + if( is_multisite() && !empty($_REQUEST['page']) && $_REQUEST['page']=='events-manager-options' && is_super_admin() && get_option('dbem_ms_update_nag') ){ + if( !empty($_GET['disable_dbem_ms_update_nag']) ){ + delete_site_option('dbem_ms_update_nag'); + }else{ + ?> + <div id="em_page_error" class="updated"> + <p><?php echo sprintf(__('MultiSite options have moved <a href="%s">here</a>. <a href="%s">Dismiss message</a>','dbem'),admin_url().'network/admin.php?page=events-manager-options', $_SERVER['REQUEST_URI'].'&disable_dbem_ms_update_nag=1'); ?></p> + </div> + <?php + } + } + + if( is_super_admin() && get_option('dbem_migrate_images_nag') ){ + if( !empty($_GET['disable_dbem_migrate_images_nag']) ){ + delete_site_option('dbem_migrate_images_nag'); + }else{ + ?> + <div id="em_page_error" class="updated"> + <p><?php echo sprintf(__('Whilst they will still appear using placeholders, you need to <a href="%s">migrate your location and event images</a> in order for them to appear in your edit forms and media library. <a href="%s">Dismiss message</a>','dbem'),admin_url().'edit.php?post_type=event&page=events-manager-options&em_migrate_images=1&_wpnonce='.wp_create_nonce('em_migrate_images'), em_add_get_params($_SERVER['REQUEST_URI'], array('disable_dbem_migrate_images_nag' => 1))); ?></p> + </div> + <?php + } + } + if( !empty($_REQUEST['page']) && 'events-manager-options' == $_REQUEST['page'] && get_option('dbem_pro_dev_updates') == 1 ){ + ?> + <div id="message" class="updated"> + <p><?php echo sprintf(__('Dev Mode active: Just a friendly reminder that you are updating to development versions. Only admins see this message, and it will go away when you disable this <a href="#pro-api">here</a> in your settings.','em-pro'),'<code>define(\'EMP_DEV_UPDATES\',true);</code>'); ?></p> + </div> + <?php + } + } + //Warn about EM page edit + if ( preg_match( '/(post|page).php/', $_SERVER ['SCRIPT_NAME']) && isset ( $_GET ['action'] ) && $_GET ['action'] == 'edit' && isset ( $_GET ['post'] ) && $_GET ['post'] == "$events_page_id") { + $message = sprintf ( __ ( "This page corresponds to <strong>Events Manager</strong> events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the <a href='%s'>settings</a> page. ", 'dbem' ), EM_ADMIN_URL .'&page=events-manager-options' ); + $notice = "<div class='error'><p>$message</p></div>"; + echo $notice; + } + echo $EM_Notices; +} +add_action ( 'admin_notices', 'em_admin_warnings', 100 ); + +/** + * Settings link in the plugins page menu + * @param array $links + * @param string $file + * @return array + */ +function em_plugin_action_links($actions, $file, $plugin_data) { + $new_actions = array(); + $new_actions[] = sprintf( '<a href="'.EM_ADMIN_URL.'&page=events-manager-options">%s</a>', __('Settings', 'dbem') ); + $new_actions = array_merge($new_actions, $actions); + if( is_multisite() ){ + $uninstall_url = admin_url().'network/admin.php?page=events-manager-options&action=uninstall&_wpnonce='.wp_create_nonce('em_uninstall_'.get_current_user_id().'_wpnonce'); + }else{ + $uninstall_url = EM_ADMIN_URL.'&page=events-manager-options&action=uninstall&_wpnonce='.wp_create_nonce('em_uninstall_'.get_current_user_id().'_wpnonce'); + } + $new_actions[] = '<span class="delete"><a href="'.$uninstall_url.'" class="delete">'.__('Uninstall','dbem').'</a></span>'; + return $new_actions; +} +add_filter( 'plugin_action_links_events-manager/events-manager.php', 'em_plugin_action_links', 10, 3 ); + +//Updates and Dev versions +function em_updates_check( $transient ) { + // Check if the transient contains the 'checked' information + if( empty( $transient->checked ) ) + return $transient; + + //only bother if we're checking for dev versions + if( get_option('em_check_dev_version') || get_option('dbem_pro_dev_updates') ){ + //check WP repo for trunk version + $request = wp_remote_get('http://plugins.svn.wordpress.org/events-manager/trunk/events-manager.php'); + + preg_match('/Version: ([0-9a-z\.]+)/', $request['body'], $matches); + + if( !empty($matches[1]) ){ + //we have a version number! + if( version_compare($transient->checked[EM_SLUG], $matches[1]) < 0) { + $response = new stdClass(); + $response->slug = EM_SLUG; + $response->new_version = $matches[1] ; + $response->url = 'http://wordpress.org/extend/plugins/events-manager/'; + $response->package = 'http://downloads.wordpress.org/plugin/events-manager.zip'; + $transient->response[EM_SLUG] = $response; + } + } + delete_option('em_check_dev_version'); + } + + return $transient; +} +add_filter('pre_set_site_transient_update_plugins', 'em_updates_check'); // Hook into the plugin update check and mod for dev version +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/em-bookings.php b/wp-content/plugins/events-manager/admin/em-bookings.php new file mode 100644 index 0000000..bfc8733 --- /dev/null +++ b/wp-content/plugins/events-manager/admin/em-bookings.php @@ -0,0 +1,507 @@ +<?php +/** + * Check if there's any admin-related actions to take for bookings. All actions are caught here. + * @return null + */ +function em_admin_actions_bookings() { + global $dbem_form_add_message; + global $dbem_form_delete_message; + global $wpdb, $EM_Booking, $EM_Event, $EM_Notices; + + if( is_object($EM_Booking) && !empty($_REQUEST['action']) && $EM_Booking->can_manage('manage_bookings','manage_others_bookings') ) { + if( $_REQUEST['action'] == 'bookings_add_note' ){ + $EM_Booking->add_note($_REQUEST['booking_note']); + function em_booking_save_notification(){ global $EM_Booking; ?><div class="updated"><p><strong><?php echo $EM_Booking->feedback_message; ?></strong></p></div><?php } + add_action ( 'admin_notices', 'em_booking_save_notification' ); + } + } + if( is_object($EM_Event) && !empty($_REQUEST['action']) ){ + if( $_REQUEST['action'] == 'bookings_export_csv' && wp_verify_nonce($_REQUEST['_wpnonce'],'bookings_export_csv') ){ + $EM_Event->get_bookings()->export_csv(); + exit(); + } + } +} +add_action('admin_init','em_admin_actions_bookings',100); + +/** + * Decide what content to show in the bookings section. + */ +function em_bookings_page(){ + //First any actions take priority + if( !empty($_REQUEST['action']) && substr($_REQUEST['action'],0,7) != 'booking' ){ //actions not starting with booking_ + do_action('em_bookings_'.$_REQUEST['action']); + }elseif( !empty($_REQUEST['booking_id']) ){ + em_bookings_single(); + }elseif( !empty($_REQUEST['person_id']) ){ + em_bookings_person(); + }elseif( !empty($_REQUEST['event_id']) ){ + em_bookings_event(); + }elseif( !empty($_REQUEST['ticket_id']) ){ + em_bookings_ticket(); + }else{ + em_bookings_dashboard(); + } +} + +/** + * Generates the bookings dashboard, showing information on all events + */ +function em_bookings_dashboard(){ + global $EM_Notices; + ?> + <div class='wrap'> + <?php if( is_admin() ): ?> + <div id='icon-users' class='icon32'> + <br/> + </div> + <h2> + <?php _e('Event Bookings Dashboard', 'dbem'); ?> + </h2> + <?php endif; ?> + <?php echo $EM_Notices; ?> + <?php if( is_admin() ): ?> + <div class="icon32" id="icon-bookings"><br></div> + <?php endif; ?> + <h2><?php _e('Recent Bookings','dbem'); ?></h2> + <?php + $EM_Bookings_Table = new EM_Bookings_Table(); + $EM_Bookings_Table->status = get_option('dbem_bookings_approval') ? 'needs-attention':'confirmed'; + $EM_Bookings_Table->output(); + ?> + <br class="clear" /> + <?php if( is_admin() ): ?> + <div class="icon32" id="events"><br></div> + <?php endif; ?> + <h2><?php _e('Events With Bookings Enabled','dbem'); ?></h2> + <?php em_bookings_events_table(); ?> + <?php do_action('em_bookings_dashboard'); ?> + </div> + <?php +} + +/** + * Shows all booking data for a single event + */ +function em_bookings_event(){ + global $EM_Event,$EM_Person,$EM_Notices; + //check that user can access this page + if( is_object($EM_Event) && !$EM_Event->can_manage('manage_bookings','manage_others_bookings') ){ + ?> + <div class="wrap"><h2><?php _e('Unauthorized Access','dbem'); ?></h2><p><?php _e('You do not have the rights to manage this event.','dbem'); ?></p></div> + <?php + return false; + } + $localised_start_date = date_i18n('D d M Y', $EM_Event->start); + $localised_end_date = date_i18n('D d M Y', $EM_Event->end); + ?> + <div class='wrap'> + <div id='icon-users' class='icon32'> + <br/> + </div> + <h2> + <?php echo sprintf(__('Manage %s Bookings', 'dbem'), "'{$EM_Event->event_name}'"); ?> + <a href="<?php echo $EM_Event->get_permalink(); ?>" class="button add-new-h2"><?php echo sprintf(__('View %s','dbem'), __('Event', 'dbem')) ?></a> + <a href="<?php echo $EM_Event->get_edit_url(); ?>" class="button add-new-h2"><?php echo sprintf(__('Edit %s','dbem'), __('Event', 'dbem')) ?></a> + <?php if( locate_template('plugins/events-manager/templates/csv-event-bookings.php', false) ): ?> + <a href='<?php echo EM_ADMIN_URL ."&page=events-manager-bookings&action=bookings_export_csv&_wpnonce=".wp_create_nonce('bookings_export_csv')."&event_id=".$EM_Event->event_id ?>' class="button add-new-h2"><?php _e('Export CSV','dbem')?></a> + <?php endif; ?> + <?php do_action('em_admin_event_booking_options_buttons'); ?> + </h2> + <?php echo $EM_Notices; ?> + <div> + <p><strong><?php _e('Event Name','dbem'); ?></strong> : <?php echo ($EM_Event->event_name); ?></p> + <p> + <strong><?php _e('Availability','dbem'); ?></strong> : + <?php echo $EM_Event->get_bookings()->get_booked_spaces() . '/'. $EM_Event->get_spaces() ." ". __('Spaces confirmed','dbem'); ?> + <?php if( get_option('dbem_bookings_approval_reserved') ): ?> + , <?php echo $EM_Event->get_bookings()->get_available_spaces() . '/'. $EM_Event->get_spaces() ." ". __('Available spaces','dbem'); ?> + <?php endif; ?> + </p> + <p> + <strong><?php _e('Date','dbem'); ?></strong> : + <?php echo $localised_start_date; ?> + <?php echo ($localised_end_date != $localised_start_date) ? " - $localised_end_date":'' ?> + <?php echo substr ( $EM_Event->event_start_time, 0, 5 ) . " - " . substr ( $EM_Event->event_end_time, 0, 5 ); ?> + </p> + <p> + <strong><?php _e('Location','dbem'); ?></strong> : + <a class="row-title" href="<?php echo admin_url(); ?>post.php?action=edit&post=<?php echo $EM_Event->get_location()->post_id ?>"><?php echo ($EM_Event->get_location()->location_name); ?></a> + </p> + </div> + <div class="icon32" id="icon-bookings"><br></div> + <h2><?php _e('Bookings','dbem'); ?></h2> + <?php + $EM_Bookings_Table = new EM_Bookings_Table(); + $EM_Bookings_Table->status = 'all'; + $EM_Bookings_Table->output(); + ?> + <?php do_action('em_bookings_event_footer', $EM_Event); ?> + </div> + <?php +} + +/** + * Shows a ticket view + */ +function em_bookings_ticket(){ + global $EM_Ticket,$EM_Notices; + $EM_Event = $EM_Ticket->get_event(); + //check that user can access this page + if( is_object($EM_Ticket) && !$EM_Ticket->can_manage() ){ + ?> + <div class="wrap"><h2><?php _e('Unauthorized Access','dbem'); ?></h2><p><?php _e('You do not have the rights to manage this ticket.','dbem'); ?></p></div> + <?php + return false; + } + ?> + <div class='wrap'> + <div id='icon-users' class='icon32'> + <br/> + </div> + <h2> + <?php echo sprintf(__('Ticket for %s', 'dbem'), "'{$EM_Event->name}'"); ?> + <a href="<?php echo $EM_Event->get_edit_url(); ?>" class="button add-new-h2"><?php _e('View/Edit Event','dbem') ?></a> + <a href="<?php echo $EM_Event->get_bookings_url(); ?>" class="button add-new-h2"><?php _e('View Event Bookings','dbem') ?></a> + </h2> + <?php echo $EM_Notices; ?> + <div> + <table> + <tr><td><?php echo __('Name','dbem'); ?></td><td></td><td><?php echo $EM_Ticket->ticket_name; ?></td></tr> + <tr><td><?php echo __('Description','dbem'); ?>     </td><td></td><td><?php echo ($EM_Ticket->ticket_description) ? $EM_Ticket->ticket_description : '-'; ?></td></tr> + <tr><td><?php echo __('Price','dbem'); ?></td><td></td><td><?php echo ($EM_Ticket->ticket_price) ? $EM_Ticket->ticket_price : '-'; ?></td></tr> + <tr><td><?php echo __('Spaces','dbem'); ?></td><td></td><td><?php echo ($EM_Ticket->ticket_spaces) ? $EM_Ticket->ticket_spaces : '-'; ?></td></tr> + <tr><td><?php echo __('Min','dbem'); ?></td><td></td><td><?php echo ($EM_Ticket->ticket_min) ? $EM_Ticket->ticket_min : '-'; ?></td></tr> + <tr><td><?php echo __('Max','dbem'); ?></td><td></td><td><?php echo ($EM_Ticket->ticket_max) ? $EM_Ticket->ticket_max : '-'; ?></td></tr> + <tr><td><?php echo __('Start','dbem'); ?></td><td></td><td><?php echo ($EM_Ticket->ticket_start) ? $EM_Ticket->ticket_start : '-'; ?></td></tr> + <tr><td><?php echo __('End','dbem'); ?></td><td></td><td><?php echo ($EM_Ticket->ticket_end) ? $EM_Ticket->ticket_end : '-'; ?></td></tr> + <?php do_action('em_booking_admin_ticket_row', $EM_Ticket); ?> + </table> + </div> + <div class="icon32" id="icon-bookings"><br></div> + <h2><?php _e('Bookings','dbem'); ?></h2> + <?php + $EM_Bookings_Table = new EM_Bookings_Table(); + $EM_Bookings_Table->status = get_option('dbem_bookings_approval') ? 'needs-attention':'confirmed'; + $EM_Bookings_Table->output(); + ?> + <?php do_action('em_bookings_ticket_footer', $EM_Ticket); ?> + </div> + <?php +} + +/** + * Shows a single booking for a single person. + */ +function em_bookings_single(){ + global $EM_Booking, $EM_Notices; + //check that user can access this page + if( is_object($EM_Booking) && !$EM_Booking->can_manage() ){ + ?> + <div class="wrap"><h2><?php _e('Unauthorized Access','dbem'); ?></h2><p><?php _e('You do not have the rights to manage this event.','dbem'); ?></p></div> + <?php + return false; + } + ?> + <div class='wrap' id="em-bookings-admin-booking"> + <div class="icon32" id="icon-bookings"><br></div> + <h2> + <?php _e('Edit Booking', 'dbem'); ?> + </h2> + <?php echo $EM_Notices; ?> + <div id="poststuff" class="metabox-holder"> + <div id="post-body"> + <div id="post-body-content"> + <div class="stuffbox"> + <h3> + <?php _e ( 'Event Details', 'dbem' ); ?> + </h3> + <div class="inside"> + <?php + $EM_Event = $EM_Booking->get_event(); + $localised_start_date = date_i18n(get_option('dbem_date_format'), $EM_Event->start); + $localised_end_date = date_i18n(get_option('dbem_date_format'), $EM_Event->end); + ?> + <table> + <tr><td><strong><?php _e('Name','dbem'); ?></strong></td><td><a class="row-title" href="<?php echo $EM_Event->get_bookings_url(); ?>"><?php echo ($EM_Event->event_name); ?></a></td></tr> + <tr> + <td><strong><?php _e('Date/Time','dbem'); ?>      </strong></td> + <td> + <?php echo $localised_start_date; ?> + <?php echo ($localised_end_date != $localised_start_date) ? " - $localised_end_date":'' ?> + <?php echo substr ( $EM_Event->start_time, 0, 5 ) . " - " . substr ( $EM_Event->end_time, 0, 5 ); ?> + </td> + </tr> + </table> + <?php do_action('em_bookings_admin_booking_event', $EM_Event); ?> + </div> + </div> + <div class="stuffbox"> + <h3> + <?php _e ( 'Personal Details', 'dbem' ); ?> + </h3> + <div class="inside"> + <?php echo $EM_Booking->get_person()->display_summary(); ?> + <?php do_action('em_bookings_admin_booking_person', $EM_Booking); ?> + </div> + </div> + <div class="stuffbox"> + <h3> + <?php _e ( 'Booking Details', 'dbem' ); ?> + </h3> + <div class="inside"> + <?php + $EM_Event = $EM_Booking->get_event(); + $localised_start_date = date_i18n(get_option('date_format'), $EM_Event->start); + $localised_end_date = date_i18n(get_option('date_format'), $EM_Event->end); + $shown_tickets = array(); + ?> + <div> + <form action="" method="post" class="em-booking-single-status-info"> + <strong><?php _e('Status','dbem'); ?> : </strong> + <?php echo $EM_Booking->get_status(); ?> + <input type="button" class="em-booking-submit-status-modify" id="em-booking-submit-status-modify" value="<?php _e('Change', 'dbem'); ?>" /> + <input type="submit" class="em-booking-resend-email" id="em-booking-resend-email" value="<?php _e('Resend Email', 'dbem'); ?>" /> + <input type='hidden' name='action' value='booking_resend_email'/> + <input type='hidden' name='booking_id' value='<?php echo $EM_Booking->booking_id; ?>'/> + <input type='hidden' name='event_id' value='<?php echo $EM_Event->event_id; ?>'/> + <input type='hidden' name='_wpnonce' value='<?php echo wp_create_nonce('booking_resend_email_'.$EM_Booking->booking_id); ?>'/> + </form> + <form action="" method="post" class="em-booking-single-status-edit"> + <strong><?php _e('Status','dbem'); ?> : </strong> + <select name="booking_status"> + <?php foreach($EM_Booking->status_array as $status => $status_name): ?> + <option value="<?php echo esc_attr($status); ?>" <?php if($status == $EM_Booking->booking_status){ echo 'selected="selected"'; } ?>><?php echo esc_html($status_name); ?></option> + <?php endforeach; ?> + </select> + <input type="checkbox" checked="checked" name="send_email" value="1" /> + <?php _e('Send Email','dbem'); ?> + <input type="submit" class="em-booking-submit-status" id="em-booking-submit-status" value="<?php _e('Submit Changes', 'dbem'); ?>" /> + <input type="button" class="em-booking-submit-status-cancel" id="em-booking-submit-status-cancel" value="<?php _e('Cancel', 'dbem'); ?>" /> + <input type='hidden' name='action' value='booking_set_status'/> + <input type='hidden' name='booking_id' value='<?php echo $EM_Booking->booking_id; ?>'/> + <input type='hidden' name='event_id' value='<?php echo $EM_Event->event_id; ?>'/> + <input type='hidden' name='_wpnonce' value='<?php echo wp_create_nonce('booking_set_status_'.$EM_Booking->booking_id); ?>'/> + </form> + </div> + <form action="" method="post"> + <table class="em-tickets-bookings-table" cellspacing="0" cellpadding="0"> + <thead> + <tr> + <th><?php _e('Ticket Type','dbem'); ?></th> + <th><?php _e('Spaces','dbem'); ?></th> + <th><?php _e('Price','dbem'); ?></th> + </tr> + </thead> + <tbody> + <?php foreach($EM_Booking->get_tickets_bookings()->tickets_bookings as $EM_Ticket_Booking): ?> + <tr> + <td class="ticket-type"><a class="row-title" href="<?php echo em_add_get_params($EM_Event->get_bookings_url(), array('ticket_id'=>$EM_Ticket_Booking->get_ticket()->ticket_id)); ?>"><?php echo $EM_Ticket_Booking->get_ticket()->ticket_name ?></a></td> + <td> + <span class="em-booking-single-info"><?php echo $EM_Ticket_Booking->get_spaces(); ?></span> + <div class="em-booking-single-edit"><input name="em_tickets[<?php echo $EM_Ticket_Booking->get_ticket()->ticket_id; ?>][spaces]" class="em-ticket-select" value="<?php echo $EM_Ticket_Booking->get_spaces(); ?>" /></div> + </td> + <td><?php echo $EM_Ticket_Booking->get_price(true,true); ?></td> + </tr> + <?php $shown_tickets[] = $EM_Ticket_Booking->ticket_id; ?> + <?php endforeach; ?> + <?php if( count($shown_tickets) < count($EM_Event->get_bookings()->get_tickets()->tickets)): ?><tr> + <?php foreach($EM_Event->get_bookings()->get_tickets()->tickets as $EM_Ticket): ?> + <?php if( !in_array($EM_Ticket->ticket_id, $shown_tickets) ): ?> + <tr> + <td class="ticket-type"><a class="row-title" href="<?php echo em_add_get_params($EM_Event->get_bookings_url(), array('ticket_id'=>$EM_Ticket_Booking->get_ticket()->ticket_id)); ?>"><?php echo $EM_Ticket->ticket_name ?></a></td> + <td> + <span class="em-booking-single-info">0</span> + <div class="em-booking-single-edit"><input name="em_tickets[<?php echo $EM_Ticket->ticket_id; ?>][spaces]" class="em-ticket-select" value="0" /></div> + </td> + <td><?php echo em_get_currency_symbol() ?>0.00</td> + </tr> + <?php endif; ?> + <?php endforeach; ?> + <?php endif; ?> + </tbody> + <tfoot> + <?php do_action('em_bookings_admin_ticket_totals_header'); ?> + <tr> + <th><?php _e('Total Price','dbem'); ?></th> + <th><?php echo sprintf(__('%d Spaces','dbem'), $EM_Booking->get_spaces()); ?></th> + <th><?php echo $EM_Booking->get_price(true, true); ?></th> + </tr> + <?php if( !get_option('dbem_bookings_tax_auto_add') && is_numeric(get_option('dbem_bookings_tax')) && get_option('dbem_bookings_tax') > 0 ): ?> + <tr> + <th><?php _e('Tax','dbem'); ?></th> + <th><?php echo get_option('dbem_bookings_tax') ?>%</th> + <th><?php echo em_get_currency_formatted($EM_Booking->get_price() * (get_option('dbem_bookings_tax')/100),2); ?></th> + </tr> + <tr> + <th><?php _e('Total Price (inc. tax)','dbem'); ?></th> + <th> </th> + <th><?php echo $EM_Booking->get_price(false, true, true); ?></th> + </tr> + <?php endif; ?> + <?php do_action('em_bookings_admin_ticket_totals_footer'); ?> + </tfoot> + </table> + <table cellspacing="0" cellpadding="0"> + <?php if( !has_action('em_bookings_single_custom') ): //default behaviour ?> + <tr> + <td> + <strong><?php _e('Comment','dbem'); ?>      </strong> + </td> + <td> + <span class="em-booking-single-info"><?php echo $EM_Booking->booking_comment; ?></span> + <div class="em-booking-single-edit"><textarea name="booking_comment"><?php echo $EM_Booking->booking_comment; ?></textarea></div> + </td> + </tr> + <?php else: do_action('em_bookings_single_custom',$EM_Booking); //do your own thing, e.g. pro ?> + <?php endif; ?> + </table> + <p class="em-booking-single-info"> + <input type="button" class="em-booking-submit-modify" id="em-booking-submit-modify" value="<?php _e('Modify Booking', 'dbem'); ?>" /> + </p> + <p class="em-booking-single-edit"> + <em><?php _e('<strong>Notes:</strong> Ticket availability not taken into account (i.e. you can overbook). Emails are not resent automatically.','dbem'); ?></em> + <br /><br /> + <input type="submit" class="em-booking-submit" id="em-booking-submit" value="<?php _e('Submit Changes', 'dbem'); ?>" /> + <input type="button" class="em-booking-submit-cancel" id="em-booking-submit-cancel" value="<?php _e('Cancel', 'dbem'); ?>" /> + <input type='hidden' name='action' value='booking_save'/> + <input type='hidden' name='booking_id' value='<?php echo $EM_Booking->booking_id; ?>'/> + <input type='hidden' name='event_id' value='<?php echo $EM_Event->event_id; ?>'/> + <input type='hidden' name='_wpnonce' value='<?php echo wp_create_nonce('booking_save_'.$EM_Booking->booking_id); ?>'/> + </p> + </form> + <script type="text/javascript"> + jQuery(document).ready( function($){ + $('#em-booking-submit-modify').click(function(){ + $('.em-booking-single-info').hide(); + $('.em-booking-single-edit').show(); + }); + $('#em-booking-submit-cancel').click(function(){ + $('.em-booking-single-info').show(); + $('.em-booking-single-edit').hide(); + }); + $('.em-booking-single-info').show(); + $('.em-booking-single-edit').hide(); + + $('#em-booking-submit-status-modify').click(function(){ + $('.em-booking-single-status-info').hide(); + $('.em-booking-single-status-edit').show(); + }); + $('#em-booking-submit-status-cancel').click(function(){ + $('.em-booking-single-status-info').show(); + $('.em-booking-single-status-edit').hide(); + }); + $('.em-booking-single-status-info').show(); + $('.em-booking-single-status-edit').hide(); + }); + </script> + </div> + </div> + <div id="em-booking-notes" class="stuffbox"> + <h3> + <?php _e ( 'Booking Notes', 'dbem' ); ?> + </h3> + <div class="inside"> + <p><?php _e('You can add private notes below for internal reference that only event managers will see.','dbem'); ?></p> + <?php foreach( $EM_Booking->get_notes() as $note ): + $user = new EM_Person($note['author']); + ?> + <div> + <?php echo date(get_option('date_format'), $note['timestamp']) .' - '. $user->get_name(); ?> <?php _e('wrote','dbem'); ?>: + <p style="background:#efefef; padding:5px;"><?php echo nl2br($note['note']); ?></p> + </div> + <?php endforeach; ?> + <form method="post" action="" style="padding:5px;"> + <textarea class="widefat" rows="5" name="booking_note"></textarea> + <input type="hidden" name="action" value="bookings_add_note" /> + <input type="submit" value="Add Note" /> + </form> + </div> + </div> + <?php do_action('em_bookings_single_metabox_footer', $EM_Booking); ?> + </div> + </div> + </div> + <br style="clear:both;" /> + <?php do_action('em_bookings_single_footer', $EM_Booking); ?> + </div> + <?php + +} + +/** + * Shows all bookings made by one person. + */ +function em_bookings_person(){ + global $EM_Person, $EM_Notices; + $EM_Person->get_bookings(); + $has_booking = false; + foreach($EM_Person->get_bookings() as $EM_Booking){ + if($EM_Booking->can_manage('manage_bookings','manage_others_bookings')){ + $has_booking = true; + } + } + if( !$has_booking ){ + ?> + <div class="wrap"><h2><?php _e('Unauthorized Access','dbem'); ?></h2><p><?php _e('You do not have the rights to manage this event.','dbem'); ?></p></div> + <?php + return false; + } + ?> + <div class='wrap'> + <div id='icon-users' class='icon32'> + <br/> + </div> + <h2> + <?php _e('Manage Person\'s Booking', 'dbem'); ?> + <?php if( current_user_can('edit_users') ) : ?> + <a href="<?php admin_url('user-edit.php?user_id='.$EM_Person->ID); ?>" class="button add-new-h2"><?php _e('Edit User','dbem') ?></a> + <?php endif; ?> + </h2> + <?php echo $EM_Notices; ?> + <?php do_action('em_bookings_person_header'); ?> + <div id="poststuff" class="metabox-holder has-right-sidebar"> + <div id="post-body"> + <div id="post-body-content"> + <div id="event_name" class="stuffbox"> + <h3> + <?php _e ( 'Personal Details', 'dbem' ); ?> + </h3> + <div class="inside"> + <?php echo $EM_Person->display_summary(); ?> + </div> + </div> + </div> + </div> + </div> + <br style="clear:both;" /> + <?php do_action('em_bookings_person_body_1'); ?> + <div class="icon32" id="icon-bookings"><br></div> + <h2><?php _e('Past And Present Bookings','dbem'); ?></h2> + <?php + $EM_Bookings_Table = new EM_Bookings_Table(); + $EM_Bookings_Table->status = 'all'; + $EM_Bookings_Table->scope = 'all'; + $EM_Bookings_Table->output(); + ?> + <?php do_action('em_bookings_person_footer', $EM_Person); ?> + </div> + <?php +} + +function em_printable_booking_report() { + global $EM_Event; + //check that user can access this page + if( isset($_GET['page']) && $_GET['page']=='events-manager-bookings' && isset($_GET['action']) && $_GET['action'] == 'bookings_report' && is_object($EM_Event)){ + if( is_object($EM_Event) && !$EM_Event->can_manage('edit_events','edit_others_events') ){ + ?> + <div class="wrap"><h2><?php _e('Unauthorized Access','dbem'); ?></h2><p><?php _e('You do not have the rights to manage this event.','dbem'); ?></p></div> + <?php + return false; + } + em_locate_template('templates/bookings-event-printable.php', true); + die(); + } +} +add_action('admin_init', 'em_printable_booking_report'); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/em-docs.php b/wp-content/plugins/events-manager/admin/em-docs.php new file mode 100644 index 0000000..5329f09 --- /dev/null +++ b/wp-content/plugins/events-manager/admin/em-docs.php @@ -0,0 +1,319 @@ +<?php + +function em_docs_init($force_init = false){ + global $pagenow; + if( ($pagenow == 'edit.php' && !empty($_GET['page']) && $_GET['page']=='events-manager-help' && class_exists('EM_Event')) || $force_init){ + add_action('wp_head', 'emd_head'); + //Generate the docs + global $EM_Documentation; + $EM_Event = new EM_Event(); + $event_fields = $EM_Event->get_fields(true); + $EM_Location = new EM_Location(); + $location_fields = $EM_Location->get_fields(true); + $EM_Documentation = array( + 'arguments' => array( + 'events' => array( + 'blog' => array( 'desc' => sprintf('Limit search to %s created in a specific blog id (MultiSite only)','events')), + 'bookings' => array( 'desc'=> 'Include only events with bookings enabled. Use \'user\' to show events a logged in user has booked.'.'1 = yes, 0 = no'), + 'category' => array( 'desc'=> sprintf('Supply a single id or comma-seperated ids (e.g. "1,2,3") to limit the search to events in these %s. You can also use negative numbers to exclude specific categories (e.g. -1,-2,-3).','categories'), 'default'=>0), + 'tag' => array( 'desc'=> sprintf('Supply a single id or comma-seperated ids (e.g. "music,theatre,sport") to limit the search to events in these %s.','tags'), 'default'=>0), + 'event' => array( 'desc'=> sprintf('Supply a single id or comma-seperated ids (e.g. "1,2,3") to limit the search to %s with the %s.','events', 'event_id(s)'), 'default'=>0), + 'group' => array( 'desc' => 'Limit search to events belonging to a specific group id (BuddyPress only). Using \'my\' will show events belonging to groups the logged in user is a member of.'), + 'post_id' => array( 'desc' => sprintf('Supply a single id or comma-seperated ids (e.g. "1,2,3") to limit the search to %s with the %s.','events', 'post_id(s)')), + 'private' => array( 'desc' => sprintf('Display private %s within your list?','events'), 'args' => '1 = yes, 0 = no', 'default' => 'If user can view private events, 1, otherwise 0.'), + 'private_only' => array( 'desc' =>sprintf('Display only private %s ?','events'), 'args' => '1 = yes, 0 = no', 'default' => '0'), + 'recurrence' => array( 'desc'=> 'If set to the event id of the recurring event, this will show only events this event recurrences.', 'default'=>0), + 'recurring' => array( 'desc'=> 'If set to 1, will only show recurring event templates. Only useful if you know what you\'re doing, use recurrence if you want events that are recurrences.', 'default'=>0), + 'search' => array( 'desc'=> 'Do a search for this string within event name, details and location address.' ), + 'status' => array( 'desc' => sprintf('Limit search to %s with a spefic status (1 is active, 0 is pending approval)','events'), 'default'=>1), + 'scope' => array( 'desc'=> 'Choose the time frame of events to show. Additionally you can supply dates (in format of YYYY-MM-DD), either single for events on a specific date or two dates seperated by a comma (e.g. 2010-12-25,2010-12-31) for events ocurring between these dates.', 'default'=>'future', 'args'=>array("future", "past", "today", "tomorrow", "month", "next-month", "1-months", "2-months", "3-months", "6-months", "12-months","all")), + 'category' => array( 'desc'=> sprintf('Supply a single id or comma-seperated ids (e.g. "1,2,3") to limit the search to events in these %s.','tags'), 'default'=>0), + 'year' => array( 'desc'=> 'If set to a year (e.g. 2010) only events that start or end during this year/month will be returned. Does not work as intended if used with scope.', 'default'=>''), + ), + 'locations' => array( + 'blog' => array( 'desc' => sprintf('Limit search to %s created in a specific blog id (MultiSite only)','locations')), + 'eventful' => array( 'desc'=> 'If set to 1 will only show locations that have at least one event occurring during the scope.', 'default' => 0), + 'eventless' => array( 'desc'=> 'If set to 1 will only show locations that have no events occurring during the scope.', 'default' => 0), + 'location' => array( 'desc'=> sprintf('Supply a single id or comma-seperated ids (e.g. "1,2,3") to limit the search to %s with the %s.','locations', 'location_id(s)'), 'default'=>0), + 'post_id' => array( 'desc' => sprintf('Supply a single id or comma-seperated ids (e.g. "1,2,3") to limit the search to %s with the %s.','locations', 'post_id(s)')), + 'private' => array( 'desc' => sprintf('Display private %s within your list?','locations'), 'args' => '1 = yes, 0 = no', 'default' => 'If user can view private locations, 1, otherwise 0.'), + 'private_only' => array( 'desc' =>sprintf('Display only private %s ?','locations'), 'args' => '1 = yes, 0 = no', 'default' => '0'), + 'scope' => array( 'default' => 'all'), + 'status' => array( 'desc' => sprintf('Limit search to %s with a spefic status (1 is active, 0 is pending approval)','locations'), 'default'=>1), + 'country' => array( 'desc'=> sprintf('Search for %s in this %s (no partial matches, case sensitive).','locations','Country'), 'default' => 'none', 'args'=>'Use two-character country codes as defined in <a href="http://countrycode.org/">countrycode.org</a>, e.g. US,GB,ES'), + 'region' => array( 'desc'=> sprintf('Search for %s in this %s (no partial matches, case sensitive).','locations','Region'), 'default' => 'none'), + 'state' => array( 'desc'=> sprintf('Search for %s in this %s (no partial matches, case sensitive).','locations','State'), 'default' => 'none'), + 'town' => array( 'desc'=> sprintf('Search for %s in this %s (no partial matches, case sensitive).','locations','Town'), 'default' => 'none'), + 'postcode' => array( 'desc'=> sprintf('Search for %s in this %s (no partial matches, case sensitive).','locations','Postcode'), 'default' => 'none') + ), + 'categories' => array( + '' => array( 'desc' => 'See the <a href="http://codex.wordpress.org/Function_Reference/get_terms">WordPress get_terms() Codex</a> for a list of possible search attributes/arguments.'), + ), + 'tags' => array( + '' => array( 'desc' => 'See the <a href="http://codex.wordpress.org/Function_Reference/get_terms">WordPress get_terms() Codex</a> for a list of possible search attributes/arguments.'), + ), + 'calendar' => array( + 'full' => array( 'desc'=> 'If set to 1 it will display a full calendar that shows event names.', 'default' => 0), + 'long_events' => array( 'desc'=> 'If set to 1, will show events that last longer than a day.', 'default' => 0), + ), + //The object is commonly shared by all, so entries above overwrite entries here + 'general' => array( + 'array' => array( 'desc'=> 'If you supply this as an argument, the returned data will be in an array, not an object (only useful wen using PHP, not shortcodes)', 'default'=>0), + 'format_header' => array( 'desc'=> sprintf('If you are displaying lists (e.g. listing events), you can supply the %s html and placeholders here.','header'), 'default'=> 'The relevant default format will be taken from the settings page.'), + 'format' => array( 'desc'=> 'If you are displaying some information with the shortcode or function (e.g. listing events), you can supply the html and placeholders here.', 'default'=> 'The relevant default format will be taken from the settings page.'), + 'format_footer' => array( 'desc'=> sprintf('If you are displaying lists (e.g. listing events), you can supply the %s html and placeholders here.','footer'), 'default'=> 'The relevant default format will be taken from the settings page.'), + 'limit' => array( 'desc'=> 'Limits the amount of values returned to this number.', 'default'=>'0 (no limit)'), + 'offset' => array( 'desc'=> 'For example, if you have ten results, if you set this to 5, only the last 5 results will be returned. Useful for pagination.', 'default'=>0), + 'order' => array( 'desc'=> 'Indicates the alphabeitcal/numerical order of the lists. Choose between ASC (ascending) and DESC (descending).', 'default'=>'ASC'), + 'orderby' => array( 'desc'=> 'Choose what fields to order your results by. You can supply a single field or multiple comma-seperated fields (e.g. "event_start_date,event_name").', 'default'=>0, 'args'=>'Database table fields, e.g. <code>event_name</code> or <code>location_name</code>'), + 'owner' => array('desc'=> 'Limits returned results to a specific owner, identified by their user id (e.g. list events or locations owned by user)', 'default'=>0), + 'pagination' => array('desc'=> 'When using a function or shortcode that outputs items (e.g. [events_list] for events, [locations_list] for locations), if the number of items supercede the limit of items to show, setting this to 1 will show page links under the list.', 'default'=>0), + ) + ), + 'placeholders' => array( + 'events' => array( + 'Event Details' => array( + 'placeholders' => array( + '#_EVENTID' => array( 'desc' => 'Shows the event ID number in the wp_em_events table.' ), + '#_EVENTPOSTID' => array( 'desc' => 'Shows the event corresponding Post ID in the wp_posts table.' ), + '#_EVENTNAME' => array( 'desc' => 'Displays the name of the event.' ), + '#_EVENTNOTES' => array( 'desc' => 'Shows the description of the event.' ), + '#_EVENTEXCERPT' => array( 'desc' => 'If you added a <a href="http://en.support.wordpress.com/splitting-content/more-tag/">more tag</a> to your event description, only the content before this tag will show (currently, no read more link is added).' ), + '#_EVENTIMAGE' => array( 'desc' => 'Shows the event image, if available.' ), + '#_EVENTIMAGE{x,y}' => array( 'desc' => 'Shows the event image thumbnail, x and y are width and height respectively, both being numbers e.g. <code>#_EVENTIMAGE{100,100}</code>' ), + '#_EVENTCATEGORIES' => array( 'desc' => 'Shows a list of category links this event belongs to.' ), + '#_EVENTCATEGORIESIMAGES' => array( 'desc' => 'Shows a list of category images this event belongs to. Categories without an image will be ignored.' ), + '#_EVENTTAGS' => array( 'desc' => 'Shows a list of tag links this event belongs to.' ), + ) + ), + 'Date and Times' => array( + 'desc' => '', + 'placeholders' => array( + '#_24HSTARTTIME' => array( 'desc' => 'Displays the start time in a 24 hours format (e.g. 16:30).' ), + '#_24HENDTIME' => array( 'desc' => 'Displays the end time in a 24 hours format (e.g. 18:30).' ), + '#_12HSTARTTIME' => array( 'desc' => 'Displays the start time in a 12 hours format (e.g. 4:30 PM).' ), + '#_12HENDTIME' => array( 'desc' => 'Displays the end time in a 12 hours format (e.g. 6:30 PM).' ), + '#_EVENTTIMES' => array( 'desc' => 'Displays either a single time, time-span, or "All Day" depending on your event times. Format is taken from your Events Manager settings page.' ), + '#_EVENTDATES' => array( 'desc' => 'Displays either a single date or a date range depending on your event dates. Format is taken from your Events Manager settings page.' ), + ) + ), + 'Custom Date/Time Formatting' => array( + 'desc' => 'Events Manager allows extremely flexible date formatting by using <a href="http://www.php.net/manual/en/function.date.php">PHP date syntax format characters</a> along with placeholders.', + 'placeholders' => array( + '# or #@' => array( 'desc' => 'Prepend <code>#</code> or <code>#@</code> before a valid PHP date syntax format character to show start and end date/time information respectively (e.g. <code>#F</code> will show the starting month name like "January", #@h shows the end hour).' ), + '#{x} or #@{x}' => array( 'desc' => 'You can also create a date format without prepending # to each character by wrapping a valid php date() format in <code>#{}</code> or <code>#@{}</code> (e.g. <code>#_{d/m/Y}</code>). If there is no end date (or is same as start date), the value is not shown. This is useful if you want to show event end dates only on events that are longer than on day, e.g. <code>#j #M #Y #@_{ \u\n\t\i\l j M Y}</code>.' ), + ) + ), + 'Links/URLs' => array( + 'placeholders' => array( + '#_EVENTIMAGEURL' => array( 'desc' => 'Shows the event image url, if available.' ), + '#_EVENTURL' => array( 'desc' => 'Simply prints the event URL. You can use this placeholder to build your own customised links.' ), + '#_EVENTLINK' => array( 'desc' => 'Displays the event name with a link to the event page.' ), + '#_EDITEVENTLINK' => array( 'desc' => 'Inserts a link to the admin or buddypress (if activated) edit event page, only if a user is logged in and is allowed to edit the event.' ), + '#_EDITEVENTURL' => array( 'desc' => 'Inserts a url to the admin or buddypress (if activated) edit event page, only if a user is logged in and is allowed to edit the event.' ) + ) + ), + 'Custom Attributes' => array( + 'desc' => 'Events Manager allows you to create dynamic attributes to your events, which act as extra information fields for your events (e.g. "Dress Code"). For more information see <a href="http://wp-events-plugin.com/documentation/categories-and-attributes/">our online documentation</a> for more info on attributes.', + 'placeholders' => array( + '#_ATT{key}' => array('desc'=> 'This key will appear as an option when adding attributes to your event.'), + '#_ATT{key}{alternative text}' => array('desc'=> 'This key will appear as an option when adding attributes to your event. The text in the second braces will appear if the attribute is not defined or left blank for that event.'), + '#_ATT{key}{option 1|option 2|option 3|etc.}' => array('desc'=> 'This key will appear as an option when adding attributes to your event. The second braces are optional and will use a select box with these values as input. If no valid value is defined, the first option is used.'), + ) + ), + 'Bookings' => array( + 'desc' => 'These placeholders will only show if bookings are enabled for the given event and in the events manager settings page. Spaces placeholders will default to 0', + 'placeholders' => array( + '#_BOOKINGFORM' => array( 'desc' => 'Adds a booking forms for this event.' ), + '#_BOOKINGBUTTON' => array( 'desc' => 'A single button that will appear to logged in users, if they click on it, they apply for a booking. This button will only display if there is one ticket.' ), + '#_AVAILABLESPACES' => array( 'desc' => 'Shows available spaces for the event.' ), + '#_BOOKEDSPACES' => array( 'desc' => 'Shows the amount of currently booked spaces for the event.' ), + '#_PENDINGSPACES' => array( 'desc' => 'Shows the amount of pending spaces for the event.' ), + '#_SPACES' => array( 'desc' => 'Shows the total spaces for the event.' ), + '#_ATTENDEES' => array( 'desc' => 'Shows the list of user avatars attending events.' ), + '#_BOOKINGSURL' => array( 'desc' => 'Shows the url to the admin, front-end or buddypress (if activated) bookings management page for this event. Only shown if user is logged in and able to manage bookings.' ), + '#_BOOKINGSLINK' => array( 'desc' => 'Shows a link to the admin, front-end or buddypress (if activated) bookings management page for this event. Only shown if user is logged in and able to manage bookings.' ), + '#_EVENTPRICERANGE' => array( 'desc' => 'Shows a "maximum - minimum" price range, or a single price if there is no range. Price is formatted according to currency formatting in your settings page.' ), + '#_EVENTPRICEMIN' => array( 'desc' => 'Shows the lowest ticket price for this event.' ), + '#_EVENTPRICEMAX' => array( 'desc' => 'Shows the highest ticket price for this event.' ), + ) + ), + 'Contact Details' => array( + 'desc' => 'The values here are taken from the chosen contact for the specific event, or the default contact in the settings page.', + 'placeholders' => array( + '#_CONTACTNAME' => array( 'desc' => 'Name of the contact person for this event (as shown in the dropdown when adding an event).' ), + '#_CONTACTUSERNAME' => array( 'desc' => 'Contact person\'s username.' ), + '#_CONTACTEMAIL' => array( 'desc' => 'E-mail of the contact person for this event.' ), + '#_CONTACTPHONE' => array( 'desc' => 'Phone number of the contact person for this event. Can be set in the user profile page.' ), + '#_CONTACTAVATAR' => array( 'desc' => 'Contact person\'s avatar.' ), + '#_CONTACTPROFILELINK' => array( 'desc' => 'Contact person\'s "Profile" link. Only works with BuddyPress enabled.' ), + '#_CONTACTPROFILEURL' => array( 'desc' => 'Contact person\'s profile url. Only works with BuddyPress enabled.' ), + '#_CONTACTID' => array( 'desc' => 'Contact person\'s WordPress user ID.'), + '#_CONTACTMETA' => array( 'desc' => 'Display any user meta of a WordPress account by including the meta key, e.g. #_CONTACTMETA{dbem_phone}'), + ) + ), + 'iCal/Calendar' => array( + 'placeholders' => array( + '#_EVENTICALURL' => array( 'desc' => 'Displays the URL of the event ical feed (ics file format).' ), + '#_EVENTICALLINK' => array( 'desc' => 'Displays an html link to the event ical feed (ics file format).' ), + '#_EVENTGCALURL' => array( 'desc' => 'Displays URL which would take the user to Google Calendar and pre-fill their add new event form.' ), + '#_EVENTGCALLINK' => array( 'desc' => 'Displays a button which would take the user to Google Calendar and pre-fill their add new event form.' ) + ) + ), + ), + 'categories' => array( + 'Category Details' => array( + 'placeholders' => array( + '#_CATEGORYNAME' => array( 'desc' => 'Shows the category name of the event.' ), + '#_CATEGORYID' => array( 'desc' => 'Shows the category ID of the event.' ), + '#_CATEGORYIMAGE' => array( 'desc' => 'Shows the event image, if available.' ), + '#_CATEGORYIMAGE{x,y}' => array( 'desc' => 'Shows the category image thumbnail, x and y are width and height respectively, both being numbers e.g. <code>#_CATEGORYIMAGE{100,100}</code>' ), + '#_CATEGORYIMAGEURL' => array( 'desc' => 'Shows the category image url, if available.' ), + '#_CATEGORYNOTES' => array( 'desc' => 'Shows the location description.' ) + ) + ), + 'Related Events' => array( + 'desc' => 'You can show lists of other events belonging to this category. The formatting of the list is the same as a normal events list.', + 'placeholders' => array( + '#_CATEGORYPASTEVENTS' => array( 'desc' => 'Will show a list of all past events at this category.' ), + '#_CATEGORYNEXTEVENTS' => array( 'desc' => 'Will show a list of all future events at this category.' ), + '#_CATEGORYALLEVENTS' => array( 'desc' => 'Will show a list of all events at this category.' ) + ) + ) + ), + 'locations' => array( + 'Location Details' => array( + 'desc' => '', + 'placeholders' => array( + '#_LOCATIONID' => array( 'desc' => 'Shows the event ID number in the wp_em_locations table.' ), + '#_LOCATIONPOSTID' => array( 'desc' => 'Shows the location corresponding Post ID in the wp_posts table.' ), + '#_LOCATIONNAME' => array( 'desc' => 'Displays the location name.' ), + '#_LOCATIONADDRESS' => array( 'desc' => 'Displays the address.' ), + '#_LOCATIONTOWN' => array( 'desc' => 'Displays the town.' ), + '#_LOCATIONSTATE' => array( 'desc' => 'Displays the state/county.' ), + '#_LOCATIONPOSTCODE' => array( 'desc' => 'Displays the postcode.' ), + '#_LOCATIONREGION' => array( 'desc' => 'Displays the region.' ), + '#_LOCATIONCOUNTRY' => array( 'desc' => 'Displays the country.' ), + '#_LOCATIONMAP' => array( 'desc' => 'Displays a google map showing where the event is located (Will not show if maps are disabled in the settings page)' ), + '#_LOCATIONNOTES' => array( 'desc' => 'Shows the location description.' ), + '#_LOCATIONEXCERPT' => array( 'desc' => 'If you added a <a href="http://en.support.wordpress.com/splitting-content/more-tag/">more tag</a> to your location description, only the content before this tag will show (currently, no read more link is added).' ), + '#_LOCATIONIMAGE' => array( 'desc' => 'Shows the location image.' ), + '#_LOCATIONIMAGE{x,y}' => array( 'desc' => 'Shows the location image thumbnail, x and y are width and height respectively, both being numbers e.g. <code>#_LOCATIONIMAGE{100,100}</code>' ), + '#_LOCATIONIMAGEURL' => array( 'desc' => 'Shows the location image url, if available.' ), + '#_LOCATIONFULLLINE' => array( 'desc' => 'Shows a comma-seperated line of location information, ommitting blanks (format of address, town, state, postcode, region' ), + '#_LOCATIONFULLBR' => array( 'desc' => 'Shows a line-break (br tag) seperated location information, ommitting blanks (format of address, town, state, postcode, region' ), + ) + ), + 'Custom Attributes' => array( + 'desc' => 'Events Manager allows you to create dynamic attributes to your locations, which act as extra information fields for your locations (e.g. "Dress Code"). For more information see <a href="http://wp-events-plugin.com/documentation/categories-and-attributes/">our online documentation</a> for more info on attributes.', + 'placeholders' => array( + '#_LATT{key}' => array('desc'=> 'This key will appear as an option when adding attributes to your location.'), + '#_LATT{key}{alternative text}' => array('desc'=> 'This key will appear as an option when adding attributes to your location. The text in the second braces will appear if the attribute is not defined or left blank for that location.'), + '#_LATT{key}{option 1|option 2|option 3|etc.}' => array('desc'=> 'This key will appear as an option when adding attributes to your location. The second braces are optional and will use a select box with these values as input. If no valid value is defined, the first option is used.'), + ) + ), + 'Links' => array( + 'placeholders' => array( + '#_LOCATIONURL' => array( 'desc' => 'Simply prints the location URL. You can use this placeholder to build your own customised links.' ), + '#_LOCATIONLINK' => array( 'desc' => 'Displays the location name with a link to the location page.' ), + '#_EDITLOCATIONLINK' => array( 'desc' => 'Inserts a link to the admin or buddypress (if activated) edit location page, only if a user is logged in and is allowed to edit the location.' ), + '#_EDITLOCATIONURL' => array( 'desc' => 'Inserts a url to the admin or buddypress (if activated) edit location page, only if a user is logged in and is allowed to edit the location.' ) + ) + ), + 'Related Events' => array( + 'desc' => 'You can show lists of other events that are being held at this location. The formatting of the list is the same as a normal events list.', + 'placeholders' => array( + '#_LOCATIONPASTEVENTS' => array( 'desc' => 'Will show a list of all past events at this location.' ), + '#_LOCATIONNEXTEVENTS' => array( 'desc' => 'Will show a list of all future events at this location.' ), + '#_LOCATIONALLEVENTS' => array( 'desc' => 'Will show a list of all events at this location.' ), + '#_LOCATIONNEXTEVENT' => array( 'desc' => 'Will show a link to the next event at this location, or the no events message.' ), + ) + ), + ), + 'bookings' => array( + 'Booking Person Information' => array( + 'desc' => 'When a specific booking is displayed (on screen and on email), you can use these placeholders to show specific information about the booking. Event and Location placeholders are also available in these cases.', + 'placeholders' => array( + '#_BOOKINGID' => array( 'desc' => 'The unique ID of this booking, useful if you are making your own customizations to this plugin.' ), + '#_BOOKINGNAME' => array( 'desc' => 'Name of person who made the booking.' ), + '#_BOOKINGEMAIL' => array( 'desc' => 'Email of person who made the booking.' ), + '#_BOOKINGPHONE' => array( 'desc' => 'Phone number of person who made the booking.' ), + '#_BOOKINGSPACES' => array( 'desc' => 'Number of spaces the person has booked.' ), + '#_BOOKINGCOMMENT' => array( 'desc' => 'Any specific comments made by the person who made the booking.' ), + '#_BOOKINGTICKETNAME' => array( 'desc' => 'Name of the ticket booked. Useful in single ticket mode, if multiple tickets are booked a random ticket is used.' ), + '#_BOOKINGTICKETDESCRIPTION' => array( 'desc' => 'Description of the ticket booked. Useful in single ticket mode, if multiple tickets are booked a random ticket is used.' ), + '#_BOOKINGTICKETPRICE' => array( 'desc' => 'Booked ticket price with currency symbol (e.g. $ 10.00). Useful in single ticket mode, if multiple tickets are booked a random ticket is used.' ), + '#_BOOKINGTICKETS' => array( 'desc' => 'A list of booked tickets. You can modify this by using template files and modifying templates/emails/bookingtickets.php' ), + '#_BOOKINGFORMCUSTOM{field_id}' => array( 'desc' => sprintf('(<a href="%s">pro only</a>) Shows booking form custom fields. The field_id value must match that of your custom booking form field.','http://wp-events-plugin.com/upgrade/') ), + '#_BOOKINGFORMCUSTOMREG{field_id}' => array( 'desc' => sprintf('(<a href="%s">pro only</a>) Shows booking form custom fields that are used for guest user registration. The field_id value must match that of your custom booking form field.','http://wp-events-plugin.com/upgrade/') ), + '#_BOOKINGFORMCUSTOMFIELDS' => array( 'desc' => sprintf('(<a href="%s">pro only</a>) Generates a list of booking form custom fields that are used in the booking.','http://wp-events-plugin.com/upgrade/') ) + ) + ), + 'Pricing Information' => array( + 'desc' => '', + 'placeholders' => array( + '#_BOOKINGPRICE' => array( 'desc' => 'Displays booking total price (tax inclusion depends on your booking settings).' ), + '#_BOOKINGPRICETAX' => array( 'desc' => 'Displays booking total tax.' ), + '#_BOOKINGPRICEWITHOUTTAX' => array( 'desc' => 'Displays booking total without tax.' ), + '#_BOOKINGPRICEWITHTAX' => array( 'desc' => 'Displays booking total with tax.' ), + ) + ), + 'Ticket Information' => array( + 'desc' => '', + 'placeholders' => array( + '#_BOOKINGTICKETS' => array( 'desc' => 'Shows a breakdown of tickets and pricing, defined in the <code>emails/bookingtickets.php</code> template. (See <a href="http://wp-events-plugin.com/documentation/using-template-files/">Using Template Files</a> for more information)' ), + '#_BOOKINGTICKETDESCRIPTION' => array( 'desc' => 'Shows the description of the first ticket booked (useful in single ticket mode/events).' ), + '#_BOOKINGTICKETPRICE' => array( 'desc' => 'Shows the price of the first ticket booked, tax inclusion depending on your booking settings (useful in single ticket mode/events).' ), + '#_BOOKINGTICKETTAX' => array( 'desc' => 'Shows the tax of the first ticket booked (useful in single ticket mode/events).' ), + '#_BOOKINGTICKETPRICEWITHTAX' => array( 'desc' => 'Shows the price including tax of the first ticket booked (useful in single ticket mode/events).' ), + '#_BOOKINGTICKETPRICEWITHOUTTAX' => array( 'desc' => 'Shows the price excluding tax of the first ticket booked (useful in single ticket mode/events).' ), + ) + ), + 'Links' => array( + 'desc' => 'People are able to manage their bookings. Below are some placeholder which automatically provides correctly formatted urls', + 'placeholders' => array( + '#_BOOKINGLISTURL' => array( 'desc' => 'URL to page showing that users booked events.' ) + ) + ), + 'Gateway-Specific Information' => array( + 'desc' => '', + 'placeholders' => array( + '#_BOOKINGTXNID' => array( 'desc' => '<em>Online Payments Only</em> - Prints the transaction ID of this booking if available.' ) + ) + ), + ), + ), + //TODO add capabilites explanations + 'capabilities' => array() + ); + } +} +add_action('init', 'em_docs_init'); + +function em_docs_placeholders($atts){ + ob_start(); + ?> + <div class="em-docs"> + <?php + global $EM_Documentation; + $type = $atts['type']; + $data = $EM_Documentation['placeholders'][$type]; + foreach($data as $sectionTitle => $details) : ?> + <div> + <h3><?php echo $sectionTitle; ?></h3> + <?php if( !empty($details['desc']) ): ?> + <p><?php echo $details['desc']; ?></p> + <?php endif; ?> + <dl> + <?php foreach($details['placeholders'] as $placeholder => $desc ): ?> + <dt><b><?php echo $placeholder; ?></b></dt> + <dd><?php echo $desc['desc']; ?></dd> + <?php endforeach; ?> + </dl> + </div> + <?php endforeach; ?> + </div> + <?php + return ob_get_clean(); +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/em-help.php b/wp-content/plugins/events-manager/admin/em-help.php new file mode 100644 index 0000000..bca538c --- /dev/null +++ b/wp-content/plugins/events-manager/admin/em-help.php @@ -0,0 +1,69 @@ +<?php +/** + * Display function for the support page. here we can give links to forums and special upgrade instructions e.g. migration features + */ +function em_admin_help_page(){ + global $wpdb; + ?> + <div class="wrap"> + <div id="icon-events" class="icon32"><br /></div> + <h2><?php _e('Getting Help for Events Manager','dbem'); ?></h2> + <div class="em-docs"> + <h2>Where To Get Help</h3> + <p> + This page is only a small portion of the event documentation which is here for quick reference. If you're just starting out, we recommend you visit the following places for further support: + </p> + <ol> + <li>New users are strongly encouraged to have a look at our <a href="http://wp-events-plugin.com/documentation/getting-started/">getting started page</a>.</li> + <li>Browse the other documentation pages and <a href="http://wp-events-plugin.com/tutorials/">tutorials</a>.</li> + <li>View the <a href="http://wp-events-plugin.com/documentation/faq/">FAQ</a> for general questions and <a href="http://wp-events-plugin.com/documentation/troubleshooting/">Troubleshooting</a> for common issues. These are regularly updated with recent issues.</li> + <li>Rather than trying to contact us directly, we request you use the <a href="http://wordpress.org/tags/events-manager?forum_id=10">support forums</a> as others may be experiencing the same issues as you. For faster support via private member forums and extra features please consider <a href="http://wp-events-plugin.com/events-manager-pro/">upgrading to pro</a>.</li> + </ol> + <p> + If you can't find what you're looking for in the documentation, you may find help on our <a href="http://wp-events-plugin.com/forums/">support forums</a>. + </p> + <h2><?php _e('Placeholders for customizing event pages','dbem'); ?></h2> + <p><?php echo sprintf( __("In the <a href='%s'>settings page</a>, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed.",'dbem'), EM_ADMIN_URL .'&events-manager-options'); ?></p> + <a name="event-placeholders"></a> + <h3 style="margin-top:20px;"><?php _e('Event Related Placeholders','dbem'); ?></h3> + <?php echo em_docs_placeholders( array('type'=>'events') ); ?> + <a name="category-placeholders"></a> + <h3><?php _e('Category Related Placeholders','dbem'); ?></h3> + <?php echo em_docs_placeholders( array('type'=>'categories') ); ?> + <a name="location-placeholders"></a> + <h3><?php _e('Location Related Placeholders','dbem'); ?></h3> + <?php echo em_docs_placeholders( array('type'=>'locations') ); ?> + <a name="booking-placeholders"></a> + <h3><?php _e('Booking Related Placeholders','dbem'); ?></h3> + <?php echo em_docs_placeholders( array('type'=>'bookings') ); ?> + </div> + <?php + + //Is this a previously imported installation? + $old_table_name = $wpdb->prefix.'dbem_events'; + if( $wpdb->get_var("SHOW TABLES LIKE '$old_table_name'") == $old_table_name ){ + ?> + <hr style="margin:30px 10px;" /> + <div class="updated"> + <h3>Troubleshooting upgrades from version 2.x to 3.x</h3> + <p>We notice that you upgraded from version 2, as we are now using new database tables, and we do not delete the old tables in case something went wrong with this upgrade.</p> + <p>If something went wrong with the update to version 3 read on:</p> + <h4>Scenario 1: the plugin is working, but for some reason the old events weren't imported</h4> + <p>You can safely reimport your old events from the previous tables without any risk of deleting them. However, if you click the link below <b>YOU WILL OVERWRITE ANY NEW EVENTS YOU CREATED IN VERSION 3</b></p> + <p><a onclick="return confirm('Are you sure you want to do this? Any new changes made since updating will be overwritten by your old ones, and this cannot be undone');" href="<?php echo wp_nonce_url( EM_ADMIN_URL .'&events-manager-help&em_reimport=1', 'em_reimport' ) ?>">Reimport Events from version 2</a></p> + <h4>Scenario 2: the plugin is not working, I want to go back to version 2!</h4> + <p>You can safely downgrade and will not lose any information.</p> + <ol> + <li>First of all, <a href='http://downloads.wordpress.org/plugin/events-manager.2.2.2.zip'>dowload a copy of version 2.2</a></li> + <li>Deactivate and delete Events Manager in the plugin page</li> + <li><a href="<?php bloginfo('wpurl'); ?>/wp-admin/plugin-install.php?tab=upload">Upload the zip file you just downloaded here</a></li> + <li>Let the developers know, of any bugs you ran into while upgrading. We'll help you out if there is a simple solution, and will fix reported bugs within days, if not quicker!</li> + </ol> + </div> + <?php + } + ?> + </div> + <?php +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/em-locations-search.php b/wp-content/plugins/events-manager/admin/em-locations-search.php new file mode 100644 index 0000000..5e2fe71 --- /dev/null +++ b/wp-content/plugins/events-manager/admin/em-locations-search.php @@ -0,0 +1,42 @@ +<?php +/* + * This page will search for either a specific location via GET "id" variable + * or will search for events by name via the GET "q" variable. + */ +//FIXME just plug loc search into ajax catcher +require_once('../../../../wp-load.php'); +global $wpdb; + +$locations_table = EM_LOCATIONS_TABLE; +$location_cond = ( !current_user_can('edit_others_locations') && !current_user_can('read_others_locations') ) ? "AND location_owner=".get_current_user_id() : ''; + +$term = (isset($_GET['term'])) ? '%'.$_GET['term'].'%' : '%'.$_GET['q'].'%'; +$sql = $wpdb->prepare(" + SELECT + location_id AS `id`, + Concat( location_name, ', ', location_address, ', ', location_town) AS `label`, + location_name AS `value`, + location_address AS `address`, + location_town AS `town`, + location_state AS `state`, + location_region AS `region`, + location_postcode AS `postcode`, + location_country AS `country` + FROM $locations_table + WHERE ( `location_name` LIKE %s ) $location_cond LIMIT 10 +", $term); + +$locations_array = $wpdb->get_results($sql); +echo EM_Object::json_encode($locations_array); +/* +$return_string_array = array(); +foreach($locations_array as $location){ + $return_string_class = array(); + foreach($location as $key => $value ){ + $return_string_class[] = "$key : '".addslashes($value)."'"; + } + $return_string_array[] = '{'. implode(',', $return_string_class) .'}'; +} +echo '['. implode(',', $return_string_array) .']'; +*/ +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/em-ms-locations.php b/wp-content/plugins/events-manager/admin/em-ms-locations.php new file mode 100644 index 0000000..f76ba0d --- /dev/null +++ b/wp-content/plugins/events-manager/admin/em-ms-locations.php @@ -0,0 +1,55 @@ +<?php +/** + * Looks at the request values, saves/updates and then displays the right menu in the admin + * @return null + */ +function em_admin_ms_locations() { + //TODO EM_Location is globalized, use it fully here + global $EM_Location; + EM_Object::ms_global_switch(); + //Take actions + if( !empty($_REQUEST['action']) && ($_REQUEST['action'] == "edit" || $_REQUEST['action'] == "location_save")) { + em_admin_location(); + } else { + // no action, just a locations list + em_admin_locations(); + } + EM_Object::ms_global_switch_back(); +} + +function em_admin_locations($message='', $fill_fields = false) { + global $current_site; + ?> + <div class='wrap'> + <div id='icon-edit' class='icon32'> + <br/> + </div> + <h2> + <?php _e('Locations', 'dbem'); ?> + <span><a href="<?php echo em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'edit')); ?>" class="button add-new-h2"><?php _e('Add New','dbem'); ?></a></span> + </h2> + <?php em_locate_template('tables/locations.php',true, array('url' => $_SERVER['REQUEST_URI'])); ?> + </div> + <?php +} + +function em_admin_location($message = "") { + global $EM_Location, $EM_Notices; + if( empty($EM_Location) || !is_object($EM_Location) ){ + $title = __('Add location', 'dbem'); + $EM_Location = new EM_Location(); + }else{ + $title = __('Edit location', 'dbem'); + } + ?> + <div class='wrap'> + <div id='icon-edit' class='icon32'> + <br/> + </div> + <h2><?php echo $title ?></h2> + <?php em_locate_template('forms/location-editor.php', true); ?> + </div> + <?php +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/em-ms-options.php b/wp-content/plugins/events-manager/admin/em-ms-options.php new file mode 100644 index 0000000..abd173d --- /dev/null +++ b/wp-content/plugins/events-manager/admin/em-ms-options.php @@ -0,0 +1,219 @@ +<?php +function em_ms_upgrade( $blog_id ){ + ?> + <div class="wrap"> + <div id='icon-options-general' class='icon32'><br /></div> + <h2><?php _e('Update Network'); ?></h2> + <?php + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'upgrade' && check_admin_referer('em_ms_ugrade_'.get_current_user_id()) ){ + global $current_site,$wpdb; + $blog_ids = $wpdb->get_col('SELECT blog_id FROM '.$wpdb->blogs.' WHERE site_id='.$current_site->id); + foreach($blog_ids as $blog_id){ + $plugin_basename = plugin_basename(dirname(dirname(__FILE__)).'/events-manager.php'); + if( in_array( $plugin_basename, (array) get_blog_option($blog_id, 'active_plugins', array() ) ) || is_plugin_active_for_network($plugin_basename) ){ + if( EM_VERSION > get_blog_option($blog_id, 'dbem_version', 0) ){ + switch_to_blog($blog_id); + require_once( dirname(__FILE__).'/../em-install.php'); + em_install(); + echo "<p>Upgraded - ".get_bloginfo('blogname')."</p>"; + restore_current_blog(); + }else{ + echo "<p>"".get_blog_option($blog_id, 'blogname')."" is up to date.</p>"; + } + }else{ + echo "<p>"".get_blog_option($blog_id, 'blogname')."" does not have Events Manager activated.</p>"; + } + } + echo "<p>Done Upgrading</p>"; + }else{ + ?> + <form action="" method="post"> + <p><?php _e('To update your network blogs with the latest Events Manager automatically, click the update button below.'); ?></p> + <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('em_ms_ugrade_'.get_current_user_id()); ?>" /> + <input type="hidden" name="action" value="upgrade" /> + <input type="submit" value="<?php _e('Update','dbem'); ?>" /> + </form> + <?php + } + ?> + </div> + <?php +} + +/** + * Displays network-related options in the network admin section + * @uses em_options_save() to save settings + */ +function em_ms_admin_options_page() { + global $wpdb,$EM_Notices; + //Check for uninstall/reset request + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'uninstall' ){ + em_admin_options_uninstall_page(); + return; + } + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'reset' ){ + em_admin_options_reset_page(); + return; + } + //TODO place all options into an array + $events_placeholders = '<a href="'.EM_ADMIN_URL .'&events-manager-help#event-placeholders">'. __('Event Related Placeholders','dbem') .'</a>'; + $locations_placeholders = '<a href="'.EM_ADMIN_URL .'&events-manager-help#location-placeholders">'. __('Location Related Placeholders','dbem') .'</a>'; + $bookings_placeholders = '<a href="'.EM_ADMIN_URL .'&events-manager-help#booking-placeholders">'. __('Booking Related Placeholders','dbem') .'</a>'; + $categories_placeholders = '<a href="'.EM_ADMIN_URL .'&events-manager-help#category-placeholders">'. __('Category Related Placeholders','dbem') .'</a>'; + $events_placeholder_tip = " ". sprintf(__('This accepts %s and %s placeholders.','dbem'),$events_placeholders, $locations_placeholders); + $locations_placeholder_tip = " ". sprintf(__('This accepts %s placeholders.','dbem'), $locations_placeholders); + $categories_placeholder_tip = " ". sprintf(__('This accepts %s placeholders.','dbem'), $categories_placeholders); + $bookings_placeholder_tip = " ". sprintf(__('This accepts %s, %s and %s placeholders.','dbem'), $bookings_placeholders, $events_placeholders, $locations_placeholders); + + $save_button = '<tr><th> </th><td><p class="submit" style="margin:0px; padding:0px; text-align:right;"><input type="submit" id="dbem_options_submit" name="Submit" value="'. __( 'Save Changes', 'dbem') .' ('. __('All','dbem') .')" /></p></ts></td></tr>'; + //Do some multisite checking here for reuse + ?> + <script type="text/javascript" charset="utf-8"> + jQuery(document).ready(function($){ + var close_text = '<?php _e('Collapse All','dbem'); ?>'; + var open_text = '<?php _e('Expand All','dbem'); ?>'; + var open_close = $('<a href="#" style="display:block; float:right; clear:right; margin:10px;">'+open_text+'</a>'); + $('#em-options-title').before(open_close); + open_close.click( function(e){ + e.preventDefault(); + if($(this).text() == close_text){ + $(".postbox").addClass('closed'); + $(this).text(open_text); + }else{ + $(".postbox").removeClass('closed'); + $(this).text(close_text); + } + }); + $(".postbox > h3").click(function(){ $(this).parent().toggleClass('closed'); }); + $(".postbox").addClass('closed'); + //MS Mode selection hiders + $('input[name="dbem_ms_global_table"]').change(function(){ //global + if( $('input:radio[name="dbem_ms_global_table"]:checked').val() == 1 ){ + $("tbody.em-global-options").show(); + $('input:radio[name="dbem_ms_mainblog_locations"]:checked').trigger('change'); + }else{ + $("tbody.em-global-options").hide(); + } + }).first().trigger('change'); + //events + $('input[name="dbem_ms_global_events"]').change(function(){ + if( $('input:radio[name="dbem_ms_global_events"]:checked').val() == 1 ){ + $("tr#dbem_ms_global_events_links_row").show(); + $('input:radio[name="dbem_ms_global_events_links"]:checked').trigger('change'); + }else{ + $("tr#dbem_ms_global_events_links_row, tr#dbem_ms_events_slug_row").hide(); + } + }).first().trigger('change'); + $('input[name="dbem_ms_global_events_links"]').change(function(){ + if( $('input:radio[name="dbem_ms_global_events_links"]:checked').val() == 1 ){ + $("tr#dbem_ms_events_slug_row").hide(); + }else{ + $("tr#dbem_ms_events_slug_row").show(); + } + }).first().trigger('change'); + //locations + $('input[name="dbem_ms_mainblog_locations"]').change(function(){ + if( $('input:radio[name="dbem_ms_mainblog_locations"]:checked').val() == 1 ){ + $("tbody.em-global-locations").hide(); + }else{ + $("tbody.em-global-locations").show(); + } + }).first().trigger('change'); + $('input[name="dbem_ms_global_locations"]').change(function(){ + if( $('input:radio[name="dbem_ms_global_locations"]:checked').val() == 1 ){ + $("tr#dbem_ms_global_locations_links_row").show(); + $('input:radio[name="dbem_ms_global_locations_links"]:checked').trigger('change'); + }else{ + $("tr#dbem_ms_global_locations_links_row, tr#dbem_ms_locations_slug_row").hide(); + } + }).first().trigger('change'); + $('input[name="dbem_ms_global_locations_links"]').change(function(){ + if( $('input:radio[name="dbem_ms_global_locations_links"]:checked').val() == 1 ){ + $("tr#dbem_ms_locations_slug_row").hide(); + }else{ + $("tr#dbem_ms_locations_slug_row").show(); + } + }); + }); + </script> + <style type="text/css">.postbox h3 { cursor:pointer; }</style> + <div class="wrap"> + <div id='icon-options-general' class='icon32'><br /></div> + <h2 class="nav-tab-wrapper"> + <a href="#" id="em-menu-general" class="nav-tab nav-tab-active"><?php _e('General','dbem'); ?></a> + </h2> + <h3 id="em-options-title"><?php _e ( 'Event Manager Options', 'dbem' ); ?></h3> + <?php echo $EM_Notices; ?> + <form id="em-options-form" method="post" action=""> + <div class="metabox-holder"> + <!-- // TODO Move style in css --> + <div class='postbox-container' style='width: 99.5%'> + <div id=""> + + <div class="em-menu-general em-menu-group"> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Multi Site Options', 'dbem' ); ?></span></h3> + <div class="inside"> + <table class="form-table"> + <?php + em_options_radio_binary ( __( 'Enable global tables mode?', 'dbem'), 'dbem_ms_global_table', __( 'Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site.','dbem' ) ); + ?> + <tbody class="em-global-options"> + <?php + global $current_site; + $global_slug_tip = __('%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network.'); + $global_link_tip = __( 'When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site.','dbem' ); + $global_post_tip = __( 'Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the <code>blog</code> attribute. Requires global tables to be turned on.','dbem'); + $global_link_tip2 = __('You <strong>must</strong> have assigned a %s page in your <a href="%s">main blog settings</a> for this to work.'); + $options_page_link = get_admin_url($current_site->blog_id, 'edit.php?post_type=event&page=events-manager-options#pages'); + ?><tr><td><strong><?php echo sprintf(__('%s Options','dbem'),__('Event','dbem')); ?></strong></td></tr><?php + em_options_radio_binary ( sprintf(__( 'Display global events on main blog?', 'dbem'), __('events','dbem')), 'dbem_ms_global_events', sprintf($global_post_tip, __('events','dbem'), __('events','dbem')) ); + em_options_radio_binary ( sprintf(__( 'Link sub-site %s directly to sub-site?', 'dbem'), __('events','dbem')), 'dbem_ms_global_events_links', sprintf($global_link_tip, __('events','dbem'), __('event','dbem')).sprintf($global_link_tip2, __('event','dbem'), $options_page_link) ); + em_options_input_text ( sprintf(__( 'Global %s slug', 'dbem' ),__('event','dbem')), 'dbem_ms_events_slug', sprintf($global_slug_tip, __('Events','dbem'), __('events','dbem')).__('Example:','dbem').'<code>http://yoursite.com/events/<strong>event</strong>/subsite-event-slug/', EM_EVENT_SLUG ); + ?><tr><td><strong><?php echo sprintf(__('%s Options','dbem'),__('Location','dbem')); ?></strong></td></tr><?php + em_options_radio_binary ( sprintf(__( 'Locations on main blog?', 'dbem'), __('locations','dbem')), 'dbem_ms_mainblog_locations', __('If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog.','dbem') ); + ?> + </tbody> + <tbody class="em-global-options em-global-locations"> + <?php + em_options_radio_binary ( sprintf(__( 'Display global %s on main blog?', 'dbem'), __('locations','dbem')), 'dbem_ms_global_locations', sprintf($global_post_tip, __('locations','dbem'), __('locations','dbem')) ); + em_options_radio_binary ( sprintf(__( 'Link sub-site %s directly to sub-site?', 'dbem'), __('locations','dbem')), 'dbem_ms_global_locations_links', sprintf($global_link_tip, __('locations','dbem'), __('location','dbem')).sprintf($global_link_tip2, __('location','dbem'), $options_page_link) ); + em_options_input_text ( sprintf(__( 'Global %s slug', 'dbem' ),__('event','dbem')), 'dbem_ms_locations_slug', sprintf($global_slug_tip, __('Locations','dbem'), __('locations','dbem')).__('Example:','dbem').'<code>http://yoursite.com/locations/<strong>location</strong>/subsite-location-slug/', EM_LOCATION_SLUG ); + ?> + </tbody> + <?php echo $save_button; ?> + </table> + + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <?php + //including shared MS/non-MS boxes + em_admin_option_box_caps(); + em_admin_option_box_image_sizes(); + em_admin_option_box_email(); + em_admin_option_box_uninstall(); + ?> + + <?php do_action('em_ms_options_page_footer'); ?> + </div> <!-- .em-menu-general --> + + <div class="em-menu-pages em-menu-group" style="display:none;"> + + </div> <!-- .em-menu-pages --> + + <p class="submit"> + <input type="submit" id="dbem_options_submit" name="Submit" value="<?php _e ( 'Save Changes' )?>" /> + <input type="hidden" name="em-submitted" value="1" /> + <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('events-manager-options'); ?>" /> + </p> + + </div> <!-- .metabox-sortables --> + </div> <!-- .postbox-container --> + + </div> <!-- .metabox-holder --> + </form> + </div> + <?php +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/admin/em-options.php b/wp-content/plugins/events-manager/admin/em-options.php new file mode 100644 index 0000000..f240154 --- /dev/null +++ b/wp-content/plugins/events-manager/admin/em-options.php @@ -0,0 +1,1695 @@ +<?php + +//Function composing the options subpanel +function em_options_save(){ + global $EM_Notices; + /* + * Here's the idea, we have an array of all options that need super admin approval if in multi-site mode + * since options are only updated here, its one place fit all + */ + if( current_user_can('activate_plugins') && !empty($_POST['em-submitted']) && check_admin_referer('events-manager-options','_wpnonce') ){ + //Build the array of options here + $post = $_POST; + foreach ($_POST as $postKey => $postValue){ + if( substr($postKey, 0, 5) == 'dbem_' ){ + //TODO some more validation/reporting + $numeric_options = array('dbem_locations_default_limit','dbem_events_default_limit'); + if( in_array($postKey,$numeric_options) && !is_numeric($postValue) ){ + //Do nothing, keep old setting. + }else{ + //TODO slashes being added? + update_option($postKey, stripslashes($postValue)); + } + } + } + //set capabilities + if( !empty($_POST['em_capabilities']) && is_array($_POST['em_capabilities']) && (!is_multisite() || is_multisite() && is_super_admin()) ){ + global $em_capabilities_array, $wp_roles; + if( is_multisite() && is_network_admin() && $_POST['dbem_ms_global_caps'] == 1 ){ + //apply_caps_to_blog + global $current_site,$wpdb; + $blog_ids = $wpdb->get_col('SELECT blog_id FROM '.$wpdb->blogs.' WHERE site_id='.$current_site->id); + foreach($blog_ids as $blog_id){ + switch_to_blog($blog_id); + //normal blog role application + foreach( $wp_roles->role_objects as $role_name => $role ){ + foreach( array_keys($em_capabilities_array) as $capability){ + if( !empty($_POST['em_capabilities'][$role_name][$capability]) ){ + $role->add_cap($capability); + }else{ + $role->remove_cap($capability); + } + } + } + restore_current_blog(); + } + }elseif( !is_network_admin() ){ + //normal blog role application + foreach( $wp_roles->role_objects as $role_name => $role ){ + foreach( array_keys($em_capabilities_array) as $capability){ + if( !empty($_POST['em_capabilities'][$role_name][$capability]) ){ + $role->add_cap($capability); + }else{ + $role->remove_cap($capability); + } + } + } + } + } + update_option('dbem_flush_needed',1); + do_action('em_options_save'); + $EM_Notices->add_confirm('<strong>'.__('Changes saved.', 'dbem').'</strong>', true); + wp_redirect(wp_get_referer()); + exit(); + } + //Migration + if( !empty($_GET['em_migrate_images']) && check_admin_referer('em_migrate_images','_wpnonce') && get_option('dbem_migrate_images') ){ + include(plugin_dir_path(__FILE__).'../em-install.php'); + $result = em_migrate_uploads(); + if($result){ + $failed = ( $result['fail'] > 0 ) ? $result['fail'] . ' images failed to migrate.' : ''; + $EM_Notices->add_confirm('<strong>'.$result['success'].' images migrated successfully. '.$failed.'</strong>'); + } + wp_redirect(admin_url().'edit.php?post_type=event&page=events-manager-options&em_migrate_images'); + }elseif( !empty($_GET['em_not_migrate_images']) && check_admin_referer('em_not_migrate_images','_wpnonce') ){ + delete_option('dbem_migrate_images_nag'); + delete_option('dbem_migrate_images'); + } + //Uninstall + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'uninstall' && !empty($_REQUEST['confirmed']) && check_admin_referer('em_uninstall_'.get_current_user_id().'_wpnonce') && is_super_admin() ){ + if( check_admin_referer('em_uninstall_'.get_current_user_id().'_confirmed','_wpnonce2') ){ + //We have a go to uninstall + global $wpdb; + //delete EM posts + remove_action('before_delete_post',array('EM_Location_Post_Admin','before_delete_post'),10,1); + remove_action('before_delete_post',array('EM_Event_Post_Admin','before_delete_post'),10,1); + remove_action('before_delete_post',array('EM_Event_Recurring_Post_Admin','before_delete_post'),10,1); + $post_ids = $wpdb->get_col('SELECT ID FROM '.$wpdb->posts." WHERE post_type IN ('".EM_POST_TYPE_EVENT."','".EM_POST_TYPE_LOCATION."','event-recurring')"); + foreach($post_ids as $post_id){ + wp_delete_post($post_id); + } + //delete categories + $cat_terms = get_terms(EM_TAXONOMY_CATEGORY, array('hide_empty'=>false)); + foreach($cat_terms as $cat_term){ + wp_delete_term($cat_term->term_id, EM_TAXONOMY_CATEGORY); + } + $tag_terms = get_terms(EM_TAXONOMY_TAG, array('hide_empty'=>false)); + foreach($tag_terms as $tag_term){ + wp_delete_term($tag_term->term_id, EM_TAXONOMY_TAG); + } + //delete EM tables + $wpdb->query('DROP TABLE '.EM_EVENTS_TABLE); + $wpdb->query('DROP TABLE '.EM_BOOKINGS_TABLE); + $wpdb->query('DROP TABLE '.EM_LOCATIONS_TABLE); + $wpdb->query('DROP TABLE '.EM_TICKETS_TABLE); + $wpdb->query('DROP TABLE '.EM_TICKETS_BOOKINGS_TABLE); + $wpdb->query('DROP TABLE '.EM_RECURRENCE_TABLE); + $wpdb->query('DROP TABLE '.EM_CATEGORIES_TABLE); + $wpdb->query('DROP TABLE '.EM_META_TABLE); + + //delete options + $wpdb->query('DELETE FROM '.$wpdb->options.' WHERE option_name LIKE \'em_%\' OR option_name LIKE \'dbem_%\''); + //deactivate and go! + deactivate_plugins(array('events-manager/events-manager.php','events-manager-pro/events-manager-pro.php'), true); + wp_redirect(admin_url('plugins.php?deactivate=true')); + exit(); + } + } + //Reset + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'reset' && !empty($_REQUEST['confirmed']) && check_admin_referer('em_reset_'.get_current_user_id().'_wpnonce') && is_super_admin() ){ + if( check_admin_referer('em_reset_'.get_current_user_id().'_confirmed','_wpnonce2') ){ + //We have a go to uninstall + global $wpdb; + //delete options + $wpdb->query('DELETE FROM '.$wpdb->options.' WHERE option_name LIKE \'em_%\' OR option_name LIKE \'dbem_%\''); + //reset capabilities + global $em_capabilities_array, $wp_roles; + foreach( $wp_roles->role_objects as $role_name => $role ){ + foreach( array_keys($em_capabilities_array) as $capability){ + $role->remove_cap($capability); + } + } + //go back to plugin options page + $EM_Notices->add_confirm(__('Settings have been reset back to default. Your events, locations and categories have not been modified.','dbem'), true); + wp_redirect(EM_ADMIN_URL.'&page=events-manager-options'); + exit(); + } + } + //Force Update Recheck - Workaround for now + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'recheck_updates' && check_admin_referer('em_recheck_updates_'.get_current_user_id().'_wpnonce') && is_super_admin() ){ + //force recheck of plugin updates, to refresh dl links + delete_transient('update_plugins'); + delete_site_transient('update_plugins'); + $EM_Notices->add_confirm(__('If there are any new updates, you should now see them in your Plugins or Updates admin pages.','dbem'), true); + wp_redirect(wp_get_referer()); + exit(); + } + //Flag version checking to look at trunk, not tag + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'check_devs' && check_admin_referer('em_check_devs_'.get_current_user_id().'_wpnonce') && is_super_admin() ){ + //delete transients, and add a flag to recheck dev version next time round + delete_transient('update_plugins'); + delete_site_transient('update_plugins'); + update_option('em_check_dev_version', true); + $EM_Notices->add_confirm(__('Checking for dev versions.','dbem').' '. __('If there are any new updates, you should now see them in your Plugins or Updates admin pages.','dbem'), true); + wp_redirect(wp_get_referer()); + exit(); + } + +} +add_action('admin_init', 'em_options_save'); + +function em_admin_options_reset_page(){ + if( check_admin_referer('em_reset_'.get_current_user_id().'_wpnonce') && is_super_admin() ){ + ?> + <div class="wrap"> + <div id='icon-options-general' class='icon32'><br /></div> + <h2><?php _e('Reset Events Manager','dbem'); ?></h2> + <p style="color:red; font-weight:bold;"><?php _e('Are you sure you want to reset Events Manager?','dbem')?></p> + <p style="font-weight:bold;"><?php _e('All your settings, including email templates and template formats for Events Manager will be deleted.','dbem')?></p> + <p> + <a href="<?php echo add_query_arg(array('_wpnonce2' => wp_create_nonce('em_reset_'.get_current_user_id().'_confirmed'), 'confirmed'=>1)); ?>" class="button-primary"><?php _e('Reset Events Manager','dbem'); ?></a> + <a href="<?php echo wp_get_referer(); ?>" class="button-secondary"><?php _e('Cancel','dbem'); ?></a> + </p> + </div> + <?php + } +} +function em_admin_options_uninstall_page(){ + if( check_admin_referer('em_uninstall_'.get_current_user_id().'_wpnonce') && is_super_admin() ){ + ?> + <div class="wrap"> + <div id='icon-options-general' class='icon32'><br /></div> + <h2><?php _e('Uninstall Events Manager','dbem'); ?></h2> + <p style="color:red; font-weight:bold;"><?php _e('Are you sure you want to uninstall Events Manager?','dbem')?></p> + <p style="font-weight:bold;"><?php _e('All your settings and events will be permanently deleted. This cannot be undone.','dbem')?></p> + <p><?php echo sprintf(__('If you just want to deactivate the plugin, <a href="%s">go to your plugins page</a>.','dbem'), wp_nonce_url(admin_url('plugins.php'))); ?></p> + <p> + <a href="<?php echo add_query_arg(array('_wpnonce2' => wp_create_nonce('em_uninstall_'.get_current_user_id().'_confirmed'), 'confirmed'=>1)); ?>" class="button-primary"><?php _e('Uninstall and Deactivate','dbem'); ?></a> + <a href="<?php echo wp_get_referer(); ?>" class="button-secondary"><?php _e('Cancel','dbem'); ?></a> + </p> + </div> + <?php + } +} + +function em_admin_options_page() { + global $wpdb, $EM_Notices; + //Check for uninstall/reset request + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'uninstall' ){ + em_admin_options_uninstall_page(); + return; + } + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'reset' ){ + em_admin_options_reset_page(); + return; + } + //TODO place all options into an array + global $events_placeholder_tip, $locations_placeholder_tip, $categories_placeholder_tip, $bookings_placeholder_tip; + $events_placeholders = '<a href="'.EM_ADMIN_URL .'&page=events-manager-help#event-placeholders">'. __('Event Related Placeholders','dbem') .'</a>'; + $locations_placeholders = '<a href="'.EM_ADMIN_URL .'&page=events-manager-help#location-placeholders">'. __('Location Related Placeholders','dbem') .'</a>'; + $bookings_placeholders = '<a href="'.EM_ADMIN_URL .'&page=events-manager-help#booking-placeholders">'. __('Booking Related Placeholders','dbem') .'</a>'; + $categories_placeholders = '<a href="'.EM_ADMIN_URL .'&page=events-manager-help#category-placeholders">'. __('Category Related Placeholders','dbem') .'</a>'; + $events_placeholder_tip = " ". sprintf(__('This accepts %s and %s placeholders.','dbem'),$events_placeholders, $locations_placeholders); + $locations_placeholder_tip = " ". sprintf(__('This accepts %s placeholders.','dbem'), $locations_placeholders); + $categories_placeholder_tip = " ". sprintf(__('This accepts %s placeholders.','dbem'), $categories_placeholders); + $bookings_placeholder_tip = " ". sprintf(__('This accepts %s, %s and %s placeholders.','dbem'), $bookings_placeholders, $events_placeholders, $locations_placeholders); + + global $save_button; + $save_button = '<tr><th> </th><td><p class="submit" style="margin:0px; padding:0px; text-align:right;"><input type="submit" id="dbem_options_submit" name="Submit" value="'. __( 'Save Changes', 'dbem') .' ('. __('All','dbem') .')" /></p></ts></td></tr>'; + ?> + <script type="text/javascript" charset="utf-8"> + jQuery(document).ready(function($){ + //Meta Box Options + var close_text = '<?php _e('Collapse All','dbem'); ?>'; + var open_text = '<?php _e('Expand All','dbem'); ?>'; + var open_close = $('<a href="#" style="display:block; float:right; clear:right; margin:10px;">'+open_text+'</a>'); + $('#em-options-title').before(open_close); + open_close.click( function(e){ + e.preventDefault(); + if($(this).text() == close_text){ + $(".postbox").addClass('closed'); + $(this).text(open_text); + }else{ + $(".postbox").removeClass('closed'); + $(this).text(close_text); + } + }); + $(".postbox > h3").click(function(){ $(this).parent().toggleClass('closed'); }); + $(".postbox").addClass('closed'); + //Navigation Tabs + $('.nav-tab-wrapper .nav-tab').click(function(){ + $('.nav-tab-wrapper .nav-tab').removeClass('nav-tab-active'); + el = $(this); + elid = el.attr('id'); + $('.em-menu-group').hide(); + $('.'+elid).show(); + el.addClass('nav-tab-active'); + $(".postbox").addClass('closed'); + open_close.text(open_text); + }); + var navUrl = document.location.toString(); + if (navUrl.match('#')) { //anchor-based navigation + var current_tab = 'a#em-menu-' + navUrl.split('#')[1]; + $(current_tab).trigger('click'); + } + $('.nav-tab-link').click(function(){ $($(this).attr('rel')).trigger('click'); }); //links to mimick tabs + //Page Options + $('input[name="dbem_cp_events_has_archive"]').change(function(){ //event archives + if( $('input:radio[name="dbem_cp_events_has_archive"]:checked').val() == 1 ){ + $('tbody.em-event-archive-sub-options').show(); + }else{ + $('tbody.em-event-archive-sub-options').hide(); + } + }).trigger('change'); + $('select[name="dbem_events_page"]').change(function(){ + if( $('select[name="dbem_events_page"]').val() == 0 ){ + $('tbody.em-event-page-options').hide(); + }else{ + $('tbody.em-event-page-options').show(); + } + }).trigger('change'); + $('input[name="dbem_cp_locations_has_archive"]').change(function(){ //location archives + if( $('input:radio[name="dbem_cp_locations_has_archive"]:checked').val() == 1 ){ + $('tbody.em-location-archive-sub-options').show(); + }else{ + $('tbody.em-location-archive-sub-options').hide(); + } + }).trigger('change'); + $('select[name="dbem_locations_page"]').change(function(){ + if( $('select[name="dbem_locations_page"]').val() == 0 ){ + $('tbody.em-location-page-options').hide(); + }else{ + $('tbody.em-location-page-options').show(); + } + }).trigger('change'); + //For rewrite titles + $('input:radio[name=dbem_disable_title_rewrites]').live('change',function(){ + checked_check = $('input:radio[name=dbem_disable_title_rewrites]:checked'); + if( checked_check.val() == 1 ){ + $('#dbem_title_html_row').show(); + }else{ + $('#dbem_title_html_row').hide(); + } + }); + $('input:radio[name=dbem_disable_title_rewrites]').trigger('change'); + }); + </script> + <style type="text/css">.postbox h3 { cursor:pointer; }</style> + <div class="wrap"> + <div id='icon-options-general' class='icon32'><br /></div> + <h2 class="nav-tab-wrapper"> + <a href="#general" id="em-menu-general" class="nav-tab nav-tab-active"><?php _e('General','dbem'); ?></a> + <a href="#pages" id="em-menu-pages" class="nav-tab"><?php _e('Pages','dbem'); ?></a> + <a href="#formats" id="em-menu-formats" class="nav-tab"><?php _e('Formats/Layouts','dbem'); ?></a> + <?php if( get_option('dbem_rsvp_enabled') ): ?> + <a href="#bookings" id="em-menu-bookings" class="nav-tab"><?php _e('Booking Options','dbem'); ?></a> + <?php endif; ?> + <a href="#emails" id="em-menu-emails" class="nav-tab"><?php _e('Emails','dbem'); ?></a> + </h2> + <h3 id="em-options-title"><?php _e ( 'Event Manager Options', 'dbem' ); ?></h3> + <form id="em-options-form" method="post" action=""> + <div class="metabox-holder"> + <!-- // TODO Move style in css --> + <div class='postbox-container' style='width: 99.5%'> + <div id=""> + + <div class="em-menu-general em-menu-group"> + + <!-- GENERAL OPTIONS --> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'General Options', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class="form-table"> + <?php em_options_radio_binary ( __( 'Disable thumbnails?', 'dbem' ), 'dbem_thumbnails_enabled', __( 'Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here).','dbem' ) ); ?> + <tr> + <td colspan="2"> + <h4><?php echo sprintf(__('%s Settings','dbem'),__('Event','dbem')); ?></h4> + </td> + </tr> + <?php + em_options_radio_binary ( __( 'Enable recurrence?', 'dbem' ), 'dbem_recurrence_enabled', __( 'Select yes to enable the recurrence features feature','dbem' ) ); + em_options_radio_binary ( __( 'Enable bookings?', 'dbem' ), 'dbem_rsvp_enabled', __( 'Select yes to allow bookings and tickets for events.','dbem' ) ); + em_options_radio_binary ( __( 'Enable tags?', 'dbem' ), 'dbem_tags_enabled', __( 'Select yes to enable the tag features','dbem' ) ); + if( !(EM_MS_GLOBAL && !is_main_blog()) ){ + em_options_radio_binary ( __( 'Enable categories?', 'dbem' ), 'dbem_categories_enabled', __( 'Select yes to enable the category features','dbem' ) ); + if( get_option('dbem_categories_enabled') ){ + /*default category*/ + $category_options = array(); + $category_options[0] = __('no default category','dbem'); + $EM_Categories = EM_Categories::get(); + foreach($EM_Categories as $EM_Category){ + $category_options[$EM_Category->id] = $EM_Category->name; + } + echo "<tr><td>".__( 'Default Category', 'dbem' )."</td><td>"; + wp_dropdown_categories(array( 'hide_empty' => 0, 'name' => 'dbem_default_category', 'hierarchical' => true, 'taxonomy' => EM_TAXONOMY_CATEGORY, 'selected' => get_option('dbem_default_category'), 'show_option_none' => __('None','dbem'), 'class'=>'')); + echo "</br><em>" .__( 'This option allows you to select the default category when adding an event.','dbem' ).' '.__('If an event does not have a category assigned when editing, this one will be assigned automatically.','dbem')."</em>"; + echo "</td></tr>"; + } + } + em_options_radio_binary ( sprintf(__( 'Enable %s attributes?', 'dbem' ),__('event','dbem')), 'dbem_attributes_enabled', __( 'Select yes to enable the attributes feature','dbem' ) ); + em_options_radio_binary ( sprintf(__( 'Enable %s custom fields?', 'dbem' ),__('event','dbem')), 'dbem_cp_events_custom_fields', __( 'Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area.','dbem' ) ); + if( get_option('dbem_attributes_enabled') ){ + em_options_textarea ( sprintf(__( '%s Attributes', 'dbem' ),__('Event','dbem')), 'dbem_placeholders_custom', sprintf(__( "You can also add event attributes here, one per line in this format <code>#_ATT{key}</code>. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. <a href='%s'>More information on placeholders.</a>", 'dbem' ), EM_ADMIN_URL .'&page=events-manager-help') ); + } + if( get_option('dbem_locations_enabled') ){ + /*default location*/ + $location_options = array(); + $location_options[0] = __('no default location','dbem'); + $EM_Locations = EM_Locations::get(); + foreach($EM_Locations as $EM_Location){ + $location_options[$EM_Location->location_id] = $EM_Location->location_name; + } + em_options_select ( __( 'Default Location', 'dbem' ), 'dbem_default_location', $location_options, __( 'This option allows you to select the default location when adding an event.','dbem' )." ".__('(not applicable with event ownership on presently, coming soon!)','dbem') ); + + /*default location country*/ + em_options_select ( __( 'Default Location Country', 'dbem' ), 'dbem_location_default_country', em_get_countries(__('no default country', 'dbem')), __('If you select a default country, that will be pre-selected when creating a new location.','dbem') ); + } + ?> + <tr> + <td colspan="2"> + <h4><?php echo sprintf(__('%s Settings','dbem'),__('Location','dbem')); ?></h4> + </td> + </tr> + <?php + em_options_radio_binary ( __( 'Enable locations?', 'dbem' ), 'dbem_locations_enabled', __( 'If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats.','dbem' ) ); + if( get_option('dbem_locations_enabled') ){ + em_options_radio_binary ( __( 'Require locations for events?', 'dbem' ), 'dbem_require_location', __( 'Setting this to no will allow you to submit events without locations. You can use the <code>{no_location}...{/no_location}</code> or <code>{has_location}..{/has_location}</code> conditional placeholder to selectively display location information.','dbem' ) ); + em_options_radio_binary ( __( 'Use dropdown for locations?', 'dbem' ), 'dbem_use_select_for_locations', __( 'Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events','dbem' ) ); + em_options_radio_binary ( sprintf(__( 'Enable %s attributes?', 'dbem' ),__('location','dbem')), 'dbem_location_attributes_enabled', __( 'Select yes to enable the attributes feature','dbem' ) ); + em_options_radio_binary ( sprintf(__( 'Enable %s custom fields?', 'dbem' ),__('location','dbem')), 'dbem_cp_locations_custom_fields', __( 'Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area.','dbem' ) ); + if( get_option('dbem_location_attributes_enabled') ){ + em_options_textarea ( sprintf(__( '%s Attributes', 'dbem' ),__('Location','dbem')), 'dbem_location_placeholders_custom', sprintf(__( "You can also add location attributes here, one per line in this format <code>#_LATT{key}</code>. They will not appear on location pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. <a href='%s'>More information on placeholders.</a>", 'dbem' ), EM_ADMIN_URL .'&page=events-manager-help') ); + } + } + ?> + <tr> + <td colspan="2"> + <h4><?php echo sprintf(__('%s Settings','dbem'),__('Other','dbem')); ?></h4> + </td> + </tr> + <?php + em_options_radio_binary ( __('Show some love?','dbem'), 'dbem_credits', __( 'Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages.','dbem' ) ); + echo $save_button; + ?> + </table> + + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <?php if ( !is_multisite() ){ em_admin_option_box_image_sizes(); } ?> + + <?php if ( !is_multisite() || (is_super_admin() && !get_site_option('dbem_ms_global_caps')) ){ em_admin_option_box_caps(); } ?> + + <div class="postbox" > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Event Submission Forms', 'dbem' ); ?></span></h3> + <div class="inside"> + <table class="form-table"> + <tr><td colspan="2"> + <?php echo sprintf(__('You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below.','dbem'), '<code>[event_form]</code>'); ?> + </td></tr> + <?php + em_options_radio_binary ( __( 'Use Visual Editor?', 'dbem' ), 'dbem_events_form_editor', __( 'Users can now use the WordPress editor for easy HTML entry in the submission form.', 'dbem' ) ); + em_options_radio_binary ( __( 'Show form again?', 'dbem' ), 'dbem_events_form_reshow', __( 'When a user submits their event, you can display a new event form again.', 'dbem' ) ); + em_options_textarea ( __( 'Success Message', 'dbem' ), 'dbem_events_form_result_success', __( 'Customize the message your user sees when they submitted their event.', 'dbem' ).$events_placeholder_tip ); + ?> + <tr><td colspan="2"> + <strong><?php echo sprintf(__('Anonymous event submissions','dbem'), '<code>[event_form]</code>'); ?></strong> + </td></tr> + <?php + em_options_radio_binary ( __( 'Allow anonymous event submissions?', 'dbem' ), 'dbem_events_anonymous_submissions', __( 'Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or <code>em_event_form()</code> template tag with this enabled.', 'dbem' ) ); + em_options_select ( __('Guest Default User', 'dbem'), 'dbem_events_anonymous_user', em_get_wp_users (), __( 'Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a "Anonymous" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting.', 'dbem' ) ); + em_options_textarea ( __( 'Success Message', 'dbem' ), 'dbem_events_anonymous_result_success', __( 'Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here.', 'dbem' ).$events_placeholder_tip ); + ?> + <?php echo $save_button; ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <?php do_action('em_options_page_footer'); ?> + + <?php if ( !is_multisite() ) { em_admin_option_box_uninstall(); } ?> + + <?php if( get_option('dbem_migrate_images') ): ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span>Migrate Images From Version 4</span></h3> + <div class="inside"> + <?php /* Not translating as it's temporary */ ?> + <p>You have the option of migrating images from version 4 so they become the equivalent of 'featured images' like with regular WordPress posts and pages and are also available in your media library.</p> + <p>Your event and location images will still display correctly on the front-end even if you don't migrate, but will not show up within your edit location/event pages in the admin area.</p> + <p> + <a href="<?php echo $_SERVER['REQUEST_URI'] ?>&em_migrate_images=1&_wpnonce=<?php echo wp_create_nonce('em_migrate_images'); ?>" />Migrate Images</a><br /> + <a href="<?php echo $_SERVER['REQUEST_URI'] ?>&em_not_migrate_images=1&_wpnonce=<?php echo wp_create_nonce('em_not_migrate_images'); ?>" />Do Not Migrate Images</a> + </p> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php endif; ?> + </div> <!-- .em-menu-general --> + + <!-- PAGE OPTIONS --> + <div class="em-menu-pages em-menu-group" style="display:none;"> + <?php + $template_page_tip = __( "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter.", 'dbem' ); + $template_page_tip .= str_replace('#','http://codex.wordpress.org/Post_Types#Template_Files',__("Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named <code>single-%s.php</code> <a href='#'>as shown on the wordpress codex</a>, and leave this set to Posts.", 'dbem')); + $format_override_tip = __("By using formats, you can control how your %s are displayed from within the Events Manager <a href='#formats' class='nav-tab-link' rel='#em-menu-formats'>Formats</a> tab above without having to edit your theme files.") + ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo sprintf(__('Permalink Slugs','dbem')); ?></span></h3> + <div class="inside"> + <p><?php _e('You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings.','dbem'); ?></p> + <table class="form-table"> + <?php + em_options_input_text ( __( 'Events', 'dbem' ), 'dbem_cp_events_slug', sprintf(__('e.g. %s - you can use / seperators too', 'dbem' ), '<strong>'.home_url().'/<code>'.get_option('dbem_cp_events_slug',EM_POST_TYPE_EVENT_SLUG).'</code>/2012-olympics/</strong>'), EM_POST_TYPE_EVENT_SLUG ); + if( get_option('dbem_locations_enabled') ){ + em_options_input_text ( __( 'Locations', 'dbem' ), 'dbem_cp_locations_slug', sprintf(__('e.g. %s - you can use / seperators too', 'dbem' ), '<strong>'.home_url().'/<code>'.get_option('dbem_cp_locations_slug',EM_POST_TYPE_LOCATION_SLUG).'</code>/wembley-stadium/</strong>'), EM_POST_TYPE_LOCATION_SLUG ); + } + if( get_option('dbem_categories_enabled') && !(EM_MS_GLOBAL && !is_main_blog()) ){ + em_options_input_text ( __( 'Event Categories', 'dbem' ), 'dbem_taxonomy_category_slug', sprintf(__('e.g. %s - you can use / seperators too', 'dbem' ), '<strong>'.home_url().'/<code>'.get_option('dbem_taxonomy_category_slug',EM_TAXONOMY_CATEGORY_SLUG).'</code>/sports/</strong>'), EM_TAXONOMY_CATEGORY_SLUG ); + } + if( get_option('dbem_tags_enabled') ){ + em_options_input_text ( __( 'Event Tags', 'dbem' ), 'dbem_taxonomy_tag_slug', sprintf(__('e.g. %s - you can use / seperators too', 'dbem' ), '<strong>'.home_url().'/<code>'.get_option('dbem_taxonomy_tag_slug',EM_TAXONOMY_TAG_SLUG).'</code>/running/</strong>'), EM_TAXONOMY_TAG_SLUG ); + } + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo sprintf(__('%s Pages','dbem'),__('Event','dbem')); ?></span></h3> + <div class="inside"> + <table class="form-table"> + <?php + em_options_radio_binary ( sprintf(__( 'Display %s as', 'dbem' ),__('events','dbem')), 'dbem_cp_events_template_page', sprintf($template_page_tip, EM_POST_TYPE_EVENT), array(__('Posts'),__('Pages')) ); + em_options_radio_binary ( __( 'Override with Formats?', 'dbem' ), 'dbem_cp_events_formats', sprintf($format_override_tip,__('events','dbem'))); + em_options_radio_binary ( __( 'Enable Comments?', 'dbem' ), 'dbem_cp_events_comments', sprintf(__('If you would like to disable comments entirely, disable this, otherwise you can disable comments on each single %s. Note that %s with comments enabled will still be until you resave them.','dbem'),__('event','dbem'),__('events','dbem'))); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo sprintf(__('%s List/Archives','dbem'),__('Event','dbem')); ?></span></h3> + <div class="inside"> + <table class="form-table"> + <?php //WordPress Pages + global $em_disable_filter; //Using a flag here instead + $em_disable_filter = true; + $get_pages = get_pages(); + $events_page_options = array(); + $events_page_options[0] = sprintf(__('[No %s Page]', 'dbem'),__('Events','dbem')); + //TODO Add the hierarchy style ddm, like when choosing page parents + foreach($get_pages as $page){ + $events_page_options[$page->ID] = $page->post_title; + } + em_options_select ( __( 'Events page', 'dbem' ), 'dbem_events_page', $events_page_options, __( 'This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags.','dbem' ) ); + $em_disable_filter = false; + ?> + <tbody class="em-event-page-options"> + <?php + em_options_radio_binary ( __( 'Show events page in lists?', 'dbem' ), 'dbem_list_events_page', __( 'Check this option if you want the events page to appear together with other pages in pages lists.', 'dbem' ) ); + em_options_radio_binary ( __( 'Display calendar in events page?', 'dbem' ), 'dbem_display_calendar_in_events_page', __( 'This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page.','dbem' ).' '.__('If you would like to show events that span over more than one day, see the Calendar section on this page.','dbem') ); + em_options_radio_binary ( __( 'Disable title rewriting?', 'dbem' ), 'dbem_disable_title_rewrites', __( "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below.",'dbem' ) ); + em_options_input_text ( __( 'Event Manager titles', 'dbem' ), 'dbem_title_html', __( "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles.", 'dbem' ) ); + em_options_radio_binary ( __( 'Show events search?', 'dbem' ), 'dbem_events_page_search', __( "If set to yes, a search form will appear just above your list of events.", 'dbem' ) ); + ?> + </tbody> + <tr> + <td colspan="2"> + <h4><?php echo sprintf(__('WordPress %s Archives','dbem'), __('Event','dbem')); ?></h4> + <p><?php echo sprintf(__('%s custom post types can have archives, just like normal WordPress posts. If enabled, should you visit your base slug url %s and you will see an post-formatted archive of previous %s'), __('Event','dbem'), '<code>'.home_url().'/'.get_option('dbem_cp_events_slug',EM_POST_TYPE_EVENT_SLUG).'/</code>', __('events','dbem')); ?></p> + <p><?php echo sprintf(__('Note that assigning a %s page above will override this archive if the URLs collide (which is the default settings, and is recommended). You can have both at the same time, but you must ensure that your page and %s slugs are different.'), __('events','dbem'), __('event','dbem')); ?></p> + </td> + </tr> + <tbody class="em-event-archive-options"> + <?php + em_options_radio_binary ( __( 'Enable Archives?', 'dbem' ), 'dbem_cp_events_has_archive', __( "Allow WordPress post-style archives.", 'dbem' ) ); + ?> + </tbody> + <tbody class="em-event-archive-options em-event-archive-sub-options"> + <tr valign="top"> + <th scope="row"><?php _e('Default event archive ordering','dbem'); ?></th> + <td> + <select name="dbem_events_default_archive_orderby" > + <?php + $event_archive_orderby_options = apply_filters('em_settings_events_default_archive_orderby_ddm', array( + '_start_ts' => __('Order by start date, start time','dbem'), + 'title' => __('Order by name','dbem') + )); + ?> + <?php foreach($event_archive_orderby_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_events_default_archive_orderby')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <select name="dbem_events_default_archive_order" > + <?php + $ascending = __('Ascending','dbem'); + $descending = __('Descending','dbem'); + $event_archive_order_options = apply_filters('em_settings_events_default_archive_order_ddm', array( + 'ASC' => __('Ascending','dbem'), + 'DESC' => __('Descending','dbem') + )); + ?> + <?php foreach( $event_archive_order_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_events_default_archive_order')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <br/> + <em><?php _e('When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above.','dbem'); ?></em> + </td> + </tr> + </tbody> + <tr> + <td colspan="2"> + <h4><?php echo _e('General settings','dbem'); ?></h4> + </td> + </tr> + <?php + em_options_radio_binary ( __( 'Override with Formats?', 'dbem' ), 'dbem_cp_events_archive_formats', sprintf($format_override_tip,__('events','dbem'))); + em_options_radio_binary ( __( 'Are current events past events?', 'dbem' ), 'dbem_events_current_are_past', __( "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past.", 'dbem' ) ); + em_options_radio_binary ( __( 'Include in WordPress Searches?', 'dbem' ), 'dbem_cp_events_search_results', sprintf(__( "Allow %s to appear in the built-in search results.", 'dbem' ),__('events','dbem')) ); + ?> + <tr> + <td colspan="2"> + <h4><?php echo sprintf(__('Default %s list options','dbem'), __('event','dbem')); ?></h4> + <p><?php _e('These can be overriden when using shortcode or template tags.','dbem'); ?></p> + </td> + </tr> + <tr valign="top" id='dbem_events_default_orderby_row'> + <th scope="row"><?php _e('Default event list ordering','dbem'); ?></th> + <td> + <select name="dbem_events_default_orderby" > + <?php + $orderby_options = apply_filters('em_settings_events_default_orderby_ddm', array( + 'event_start_date,event_start_time,event_name' => __('Order by start date, start time, then event name','dbem'), + 'event_name,event_start_date,event_start_time' => __('Order by name, start date, then start time','dbem'), + 'event_name,event_end_date,event_end_time' => __('Order by name, end date, then end time','dbem'), + 'event_end_date,event_end_time,event_name' => __('Order by end date, end time, then event name','dbem'), + )); + ?> + <?php foreach($orderby_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_events_default_orderby')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <select name="dbem_events_default_order" > + <?php + $ascending = __('Ascending','dbem'); + $descending = __('Descending','dbem'); + $order_options = apply_filters('em_settings_events_default_order_ddm', array( + 'ASC' => __('All Ascending','dbem'), + 'DESC,ASC,ASC' => __("$descending, $ascending, $ascending",'dbem'), + 'DESC,DESC,ASC' => __("$descending, $descending, $ascending",'dbem'), + 'DESC' => __('All Descending','dbem'), + 'ASC,DESC,ASC' => __("$ascending, $descending, $ascending",'dbem'), + 'ASC,DESC,DESC' => __("$ascending, $descending, $descending",'dbem'), + 'ASC,ASC,DESC' => __("$ascending, $ascending, $descending",'dbem'), + 'DESC,ASC,DESC' => __("$descending, $ascending, $descending",'dbem'), + )); + ?> + <?php foreach( $order_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_events_default_order')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <br/> + <em><?php _e('When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above.','dbem'); ?></em> + </td> + </tr> + <tr valign="top" id='dbem_events_display_time_limit'> + <th scope="row"><?php _e('Event list scope','dbem'); ?></th> + <td> + <select name="dbem_events_page_scope" > + <?php foreach( em_get_scopes() as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_events_page_scope')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <br /> + <em><?php _e('Only show events starting within a certain time limit on the events page. Default is future events with no end time limit.','dbem'); ?></em> + </td> + </tr> + <?php + em_options_input_text ( __( 'Event List Limits', 'dbem' ), 'dbem_events_default_limit', __( "This will control how many events are shown on one list by default.", 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <?php if( get_option('dbem_locations_enabled') ): ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo sprintf(__('%s Pages','dbem'),__('Location','dbem')); ?></span></h3> + <div class="inside"> + <table class="form-table"> + <?php + em_options_radio_binary ( sprintf(__( 'Display %s as', 'dbem' ),__('locations','dbem')), 'dbem_cp_locations_template_page', sprintf($template_page_tip, EM_POST_TYPE_LOCATION), array(__('Posts'),__('Pages')) ); + em_options_radio_binary ( __( 'Override with Formats?', 'dbem' ), 'dbem_cp_locations_formats', sprintf($format_override_tip,__('locations','dbem'))); + em_options_radio_binary ( __( 'Enable Comments?', 'dbem' ), 'dbem_cp_locations_comments', sprintf(__('If you would like to disable comments entirely, disable this, otherwise you can disable comments on each single %s. Note that %s with comments enabled will still be until you resave them.','dbem'),__('location','dbem'),__('locations','dbem'))); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo sprintf(__('%s List/Archives','dbem'),__('Location','dbem')); ?></span></h3> + <div class="inside"> + <table class="form-table"> + <?php + $events_page_options[0] = sprintf(__('[No %s Page]', 'dbem'),__('Locations','dbem')); + em_options_select ( sprintf(__( '%s page', 'dbem' ),__('Locations','dbem')), 'dbem_locations_page', $events_page_options, sprintf(__( 'This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags.','dbem' ),__('locations','dbem'),__('locations','dbem')) ); + ?> + <tbody class="em-location-page-options"> + <?php + em_options_radio_binary ( sprintf(__( 'Show %s page in lists?', 'dbem' ),__('locations','dbem')), 'dbem_list_locations_page', sprintf(__( 'Check this option if you want the %s page to appear together with other pages in pages lists.', 'dbem' ),__('locations','dbem')) ); + ?> + </tbody> + <tr> + <td colspan="2"> + <h4><?php echo sprintf(__('WordPress %s Archives','dbem'), __('Location','dbem')); ?></h4> + <p><?php echo sprintf(__('%s custom post types can have archives, just like normal WordPress posts. If enabled, should you visit your base slug url %s and you will see an post-formatted archive of previous %s'), __('Location','dbem'), '<code>'.home_url().'/'.get_option('dbem_cp_events_slug',EM_POST_TYPE_EVENT_SLUG).'/</code>', __('locations','dbem')); ?></p> + <p><?php echo sprintf(__('Note that assigning a %s page above will override this archive if the URLs collide (which is the default settings, and is recommended for maximum plugin compatability). You can have both at the same time, but you must ensure that your page and %s slugs are different.'), __('locations','dbem'), __('location','dbem')); ?></p> + </td> + </tr> + <tbody class="em-location-archive-options"> + <?php + em_options_radio_binary ( __( 'Enable Archives?', 'dbem' ), 'dbem_cp_locations_has_archive', __( "Allow WordPress post-style archives.", 'dbem' ) ); + ?> + </tbody> + <tbody class="em-location-archive-options em-location-archive-sub-options"> + <tr valign="top"> + <th scope="row"><?php _e('Default archive ordering','dbem'); ?></th> + <td> + <select name="dbem_locations_default_archive_orderby" > + <?php + $orderby_options = apply_filters('em_settings_locations_default_archive_orderby_ddm', array( + '_country' => sprintf(__('Order by %s','dbem'),__('Country','dbem')), + '_town' => sprintf(__('Order by %s','dbem'),__('Town','dbem')), + 'title' => sprintf(__('Order by %s','dbem'),__('Name','dbem')) + )); + ?> + <?php foreach($orderby_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_locations_default_archive_orderby')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <select name="dbem_locations_default_archive_order" > + <?php + $ascending = __('Ascending','dbem'); + $descending = __('Descending','dbem'); + $order_options = apply_filters('em_settings_locations_default_archive_order_ddm', array( + 'ASC' => __('Ascending','dbem'), + 'DESC' => __('Descending','dbem') + )); + ?> + <?php foreach( $order_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_locations_default_archive_order')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + </td> + </tr> + </tbody> + <tr> + <td colspan="2"> + <h4><?php echo _e('General settings','dbem'); ?></h4> + </td> + </tr> + <?php + em_options_radio_binary ( __( 'Override with Formats?', 'dbem' ), 'dbem_cp_locations_archive_formats', sprintf($format_override_tip,__('locations','dbem'))); + em_options_radio_binary ( __( 'Include in WordPress Searches?', 'dbem' ), 'dbem_cp_locations_search_results', sprintf(__( "Allow %s to appear in the built-in search results.", 'dbem' ),__('locations','dbem')) ); + ?> + <tr> + <td colspan="2"> + <h4><?php echo sprintf(__('Default %s list options','dbem'), __('location','dbem')); ?></h4> + <p><?php _e('These can be overriden when using shortcode or template tags.','dbem'); ?></p> + </td> + </tr> + <tr valign="top" id='dbem_locations_default_orderby_row'> + <th scope="row"><?php _e('Default list ordering','dbem'); ?></th> + <td> + <select name="dbem_locations_default_orderby" > + <?php + $orderby_options = apply_filters('em_settings_locations_default_orderby_ddm', array( + 'location_country' => sprintf(__('Order by %s','dbem'),__('Country','dbem')), + 'location_town' => sprintf(__('Order by %s','dbem'),__('Town','dbem')), + 'location_name' => sprintf(__('Order by %s','dbem'),__('Name','dbem')) + )); + ?> + <?php foreach($orderby_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_locations_default_orderby')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <select name="dbem_locations_default_order" > + <?php + $ascending = __('Ascending','dbem'); + $descending = __('Descending','dbem'); + $order_options = apply_filters('em_settings_locations_default_order_ddm', array( + 'ASC' => __('Ascending','dbem'), + 'DESC' => __('Descending','dbem') + )); + ?> + <?php foreach( $order_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_locations_default_order')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + </td> + </tr> + <?php + em_options_input_text ( __( 'List Limits', 'dbem' ), 'dbem_locations_default_limit', sprintf(__( "This will control how many %s are shown on one list by default.", 'dbem' ),__('locations','dbem')) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php endif; ?> + + <?php if( get_option('dbem_categories_enabled') && !(EM_MS_GLOBAL && !is_main_blog()) ): ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo __('Event Categories','dbem'); ?></span></h3> + <div class="inside"> + <table class="form-table"> + <?php + $events_page_options[0] = sprintf(__('[No %s Page]', 'dbem'),__('Categories','dbem')); + em_options_select ( sprintf(__( '%s page', 'dbem' ),__('Categories','dbem')), 'dbem_categories_page', $events_page_options, sprintf(__( 'This option allows you to select which page to use as the %s page.','dbem' ),__('categories','dbem'),__('categories','dbem')) ); + ?> + <tbody class="em-category-page-options"> + <?php + em_options_radio_binary ( sprintf(__( 'Show %s page in lists?', 'dbem' ),__('categories','dbem')), 'dbem_list_categories_page', sprintf(__( 'Check this option if you want the %s page to appear together with other pages in pages lists.', 'dbem' ),__('categories','dbem')) ); + ?> + </tbody> + <tr> + <td colspan="2"> + <h4><?php echo _e('General settings','dbem'); ?></h4> + </td> + </tr> + <?php + em_options_radio_binary ( __( 'Override with Formats?', 'dbem' ), 'dbem_cp_categories_formats', sprintf($format_override_tip,__('categories','dbem'))." ".__('Setting this to yes will make categories display as a page rather than an archive.', 'dbem')); + ?> + <tr valign="top"> + <th scope="row"><?php _e('Default archive ordering','dbem'); ?></th> + <td> + <select name="dbem_categories_default_archive_orderby" > + <?php foreach($event_archive_orderby_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_categories_default_archive_orderby')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <select name="dbem_categories_default_archive_order" > + <?php foreach( $event_archive_order_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_categories_default_archive_order')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <br /><?php echo __('When listing events for a category, this order is applied.', 'dbem'); ?> + </td> + </tr> + <tr> + <td colspan="2"> + <h4><?php echo sprintf(__('Default %s list options','dbem'), __('category','dbem')); ?></h4> + <p><?php _e('These can be overriden when using shortcode or template tags.','dbem'); ?></p> + </td> + </tr> + <tr valign="top" id='dbem_categories_default_orderby_row'> + <th scope="row"><?php _e('Default list ordering','dbem'); ?></th> + <td> + <select name="dbem_categories_default_orderby" > + <?php + $orderby_options = apply_filters('em_settings_categories_default_orderby_ddm', array( + 'id' => sprintf(__('Order by %s','dbem'),__('ID','dbem')), + 'count' => sprintf(__('Order by %s','dbem'),__('Count','dbem')), + 'name' => sprintf(__('Order by %s','dbem'),__('Name','dbem')), + 'slug' => sprintf(__('Order by %s','dbem'),__('Slug','dbem')), + 'term_group' => sprintf(__('Order by %s','dbem'),'term_group'), + )); + ?> + <?php foreach($orderby_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_categories_default_orderby')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <select name="dbem_categories_default_order" > + <?php + $ascending = __('Ascending','dbem'); + $descending = __('Descending','dbem'); + $order_options = apply_filters('em_settings_categories_default_order_ddm', array( + 'ASC' => __('Ascending','dbem'), + 'DESC' => __('Descending','dbem') + )); + ?> + <?php foreach( $order_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_categories_default_order')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <br /><?php echo __('When listing categories, this order is applied.', 'dbem'); ?> + </td> + </tr> + <?php + em_options_input_text ( __( 'List Limits', 'dbem' ), 'dbem_categories_default_limit', sprintf(__( "This will control how many %s are shown on one list by default.", 'dbem' ),__('categories','dbem')) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php endif; ?> + + <?php if( get_option('dbem_tags_enabled') ): //disabled for now, will add tag stuff later ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo __('Event Tags','dbem'); ?></span></h3> + <div class="inside"> + <table class="form-table"> + <?php + em_options_radio_binary ( __( 'Override with Formats?', 'dbem' ), 'dbem_cp_tags_formats', sprintf($format_override_tip,__('tags','dbem'))); + ?> + <tr valign="top"> + <th scope="row"><?php _e('Default archive ordering','dbem'); ?></th> + <td> + <select name="dbem_tags_default_archive_orderby" > + <?php foreach($event_archive_orderby_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_tags_default_archive_orderby')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <select name="dbem_tags_default_archive_order" > + <?php foreach( $event_archive_order_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_tags_default_archive_order')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + </td> + </tr> + <?php echo $save_button; ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php endif; ?> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo sprintf(__('%s Pages','dbem'),__('Other','dbem')); ?></span></h3> + <div class="inside"> + <p><?php _e('These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated.'); ?></p> + <table class="form-table"> + <?php + $other_pages_tip = 'Using the %s shortcode, you can allow users to manage %s outside the admin area.'; + $events_page_options[0] = '['.__('None', 'dbem').']'; + ?><tr><td colspan="2"><h4><?php echo _e('My Bookings','dbem'); ?></h4></td></tr><?php + em_options_select ( sprintf(__( '%s page', 'dbem' ),__('My bookings','dbem')), 'dbem_my_bookings_page', $events_page_options, sprintf(__('Users can view their bookings for other events on this page.','dbem' ),'<code>[my_bookings]</code>',__('bookings','dbem')) ); + ?> + <tr valign="top" id='dbem_bookings_default_orderby_row'> + <th scope="row"><?php _e('Default list ordering','dbem'); ?></th> + <td> + <select name="dbem_bookings_default_orderby" > + <?php + $orderby_options = apply_filters('em_settings_bookings_default_orderby_ddm', array( + 'event_name' => sprintf(__('Order by %s','dbem'),__('Event Name','dbem')), + 'event_start_date' => sprintf(__('Order by %s','dbem'),__('Start Date','dbem')), + 'booking_date' => sprintf(__('Order by %s','dbem'),__('Booking Date','dbem')) + )); + ?> + <?php foreach($orderby_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_bookings_default_orderby')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <select name="dbem_bookings_default_order" > + <?php + $ascending = __('Ascending','dbem'); + $descending = __('Descending','dbem'); + $order_options = apply_filters('em_settings_bookings_default_order_ddm', array( + 'ASC' => __('Ascending','dbem'), + 'DESC' => __('Descending','dbem') + )); + ?> + <?php foreach( $order_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_bookings_default_order')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + </td> + </tr> + <tr><td colspan="2"><h4><?php echo _e('Front-end management pages','dbem'); ?></h4></td></tr> + <tr><td colspan="2"><?php echo _e('Users can create and edit events and locations, as well as managing bookings for their events.','dbem'); ?></td></tr> + <?php + em_options_select ( sprintf(__( '%s page', 'dbem' ),__('Edit events','dbem')), 'dbem_edit_events_page', $events_page_options, sprintf(__('Users can view, add and edit their %s on this page.','dbem'),__('events','dbem')) ); + em_options_select ( sprintf(__( '%s page', 'dbem' ),__('Edit locations','dbem')), 'dbem_edit_locations_page', $events_page_options, sprintf(__('Users can view, add and edit their %s on this page.','dbem'),__('locations','dbem')) ); + em_options_select ( sprintf(__( '%s page', 'dbem' ),__('Manage bookings','dbem')), 'dbem_edit_bookings_page', $events_page_options, __('Users can manage bookings for their events on this page.','dbem') ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <?php do_action('em_options_page_footer_pages'); ?> + + </div> <!-- .em-menu-pages --> + + <!-- FORMAT OPTIONS --> + <div class="em-menu-formats em-menu-group" style="display:none;"> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Events format', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class="form-table"> + <tr><td colspan="2"> + <strong><?php echo sprintf(__('%s Page','dbem'),__('Events','dbem')); ?></strong> + <p><?php _e('These formats will be used on your events page. This will also be used if you do not provide specified formats in other event lists, like in shortcodes.','dbem'); ?></p> + </td></tr> + <?php + $grouby_modes = array(0=>__('None','dbem'), 'yearly'=>__('Yearly','dbem'), 'monthly'=>__('Monthly','dbem'), 'weekly'=>__('Weekly','dbem'), 'daily'=>__('Daily','dbem')); + em_options_select(__('Events page grouping','dbem'), 'dbem_event_list_groupby', $grouby_modes, __('If you choose a group by mode, your events page will ','dbem')); + em_options_input_text(__('Events page grouping','dbem'), 'dbem_event_list_groupby_format', __('Choose how to format your group headings. Leave blank for defaults.','dbem').' '. sprintf(__('Date and Time formats follow the <a href="%s">WordPress time formatting conventions</a>', 'dbem'), 'http://codex.wordpress.org/Formatting_Date_and_Time')); + em_options_textarea ( __( 'Default event list format header', 'dbem' ), 'dbem_event_list_item_format_header', __( 'This content will appear just above your code for the default event list format. Default is blank', 'dbem' ) ); + em_options_textarea ( __( 'Default event list format', 'dbem' ), 'dbem_event_list_item_format', __( 'The format of any events in a list.', 'dbem' ).$events_placeholder_tip ); + em_options_textarea ( __( 'Default event list format footer', 'dbem' ), 'dbem_event_list_item_format_footer', __( 'This content will appear just below your code for the default event list format. Default is blank', 'dbem' ) ); + em_options_input_text ( __( 'No events message', 'dbem' ), 'dbem_no_events_message', __( 'The message displayed when no events are available.', 'dbem' ) ); + em_options_input_text ( __( 'List events by date title', 'dbem' ), 'dbem_list_date_title', __( 'If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use <a href="http://www.php.net/manual/en/function.date.php">PHP time format characters</a> with a <code>#</code> symbol before them, i.e. <code>#m</code>, <code>#M</code>, <code>#j</code>, etc.<br/>', 'dbem' ) ); + ?> + <tr><td><strong><?php echo sprintf(__('Single %s Page','dbem'),__('Event','dbem')); ?></strong></td></tr> + <?php + if( EM_MS_GLOBAL ){ + em_options_input_text ( __( 'Single event page title format', 'dbem' ), 'dbem_event_page_title_format', __( 'The format of a single event page title.', 'dbem' ).$events_placeholder_tip ); + } + em_options_textarea ( __( 'Default single event format', 'dbem' ), 'dbem_single_event_format', __( 'The format of a single event page.', 'dbem' ).$events_placeholder_tip ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Search Form Options', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class="form-table"> + <?php + em_options_radio_binary ( __( 'Show text search?', 'dbem' ), 'dbem_search_form_text', '' ); + em_options_input_text ( __( 'Text search label', 'dbem' ), 'dbem_search_form_text_label', __('Appears within the input box.','dbem') ); + em_options_radio_binary ( __( 'Show date range?', 'dbem' ), 'dbem_search_form_dates', '' ); + em_options_radio_binary ( __( 'Show categories?', 'dbem' ), 'dbem_search_form_categories', '' ); + em_options_input_text ( __( 'Categories label', 'dbem' ), 'dbem_search_form_categories_label', __('Appears as the first default search option.','dbem') ); + em_options_radio_binary ( __( 'Show countries?', 'dbem' ), 'dbem_search_form_countries', '' ); + em_options_input_text ( __( 'All countries text', 'dbem' ), 'dbem_search_form_countries_label', __('Appears as the first default search option.','dbem') ); + em_options_radio_binary ( __( 'Show regions?', 'dbem' ), 'dbem_search_form_regions', '' ); + em_options_input_text ( __( 'All regions text', 'dbem' ), 'dbem_search_form_regions_label', __('Appears as the first default search option.','dbem') ); + em_options_radio_binary ( __( 'Show states?', 'dbem' ), 'dbem_search_form_states', '' ); + em_options_input_text ( __( 'All states text', 'dbem' ), 'dbem_search_form_states_label', __('Appears as the first default search option.','dbem') ); + em_options_radio_binary ( __( 'Show towns/cities?', 'dbem' ), 'dbem_search_form_towns', '' ); + em_options_input_text ( __( 'All towns/cities text', 'dbem' ), 'dbem_search_form_towns_label', __('Appears as the first default search option.','dbem') ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Date/Time formats', 'dbem' ); ?> </span></h3> + <div class="inside"> + <p><?php echo sprintf(__('Date and Time formats follow the <a href="%s">WordPress time formatting conventions</a>', 'dbem'), 'http://codex.wordpress.org/Formatting_Date_and_Time'); ?></p> + <table class="form-table"> + <?php + em_options_input_text ( __( 'Date Format', 'dbem' ), 'dbem_date_format', sprintf(__('For use with the %s placeholder'),'<code>#_EVENTDATES</code>') ); + em_options_input_text ( __( 'Date Picker Format', 'dbem' ), 'dbem_date_format_js', sprintf(__( 'Same as <em>Date Format</em>, but this is used for the datepickers used by Events Manager. This uses a slightly different format to the others on here, for a list of characters to use, visit the <a href="%s">jQuery formatDate reference</a>', 'dbem' ),'http://docs.jquery.com/UI/Datepicker/formatDate') ); + em_options_input_text ( __( 'Date Seperator', 'dbem' ), 'dbem_dates_seperator', sprintf(__( 'For when start/end %s are present, this will seperate the two (include spaces here if necessary).', 'dbem' ), __('dates','dbem')) ); + em_options_input_text ( __( 'Time Format', 'dbem' ), 'dbem_time_format', sprintf(__('For use with the %s placeholder'),'<code>#_EVENTTIMES</code>') ); + em_options_input_text ( __( 'Time Seperator', 'dbem' ), 'dbem_times_seperator', sprintf(__( 'For when start/end %s are present, this will seperate the two (include spaces here if necessary).', 'dbem' ), __('times','dbem')) ); + em_options_input_text ( __( 'All Day Message', 'dbem' ), 'dbem_event_all_day_message', sprintf(__( 'If an event lasts all day, this text will show if using the %s placeholder', 'dbem' ), '<code>#_EVENTTIMES</code>') ); + em_options_radio_binary ( __( 'Use 24h Format?', 'dbem' ), 'dbem_time_24h', __( 'When creating events, would you like your times to be shown in 24 hour format?', 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Calendar format', 'dbem' ); ?></span></h3> + <div class="inside"> + <table class="form-table"> + <?php + em_options_input_text ( __( 'Small calendar title', 'dbem' ), 'dbem_small_calendar_event_title_format', __( 'The format of the title, corresponding to the text that appears when hovering on an eventful calendar day.', 'dbem' ).$events_placeholder_tip ); + em_options_input_text ( __( 'Small calendar title separator', 'dbem' ), 'dbem_small_calendar_event_title_separator', __( 'The separator appearing on the above title when more than one events are taking place on the same day.', 'dbem' ) ); + em_options_input_text ( __( 'Full calendar events format', 'dbem' ), 'dbem_full_calendar_event_format', __( 'The format of each event when displayed in the full calendar. Remember to include <code>li</code> tags before and after the event.', 'dbem' ).$events_placeholder_tip ); + em_options_radio_binary ( __( 'Show long events on calendar pages?', 'dbem' ), 'dbem_full_calendar_long_events', __( "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs.",'dbem' ) ); + em_options_radio_binary ( __( 'Link directly to event on day with single event?', 'dbem' ), 'dbem_calendar_direct_links', __( "If a calendar day has only one event, you can force a direct link to the event (recommended to avoid duplicate content).",'dbem' ) ); + em_options_radio_binary ( __( 'Show list on day with single event?', 'dbem' ), 'dbem_display_calendar_day_single', __( "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events.",'dbem' ) ); + ?> + <tr><td><strong><?php echo __('Calendar Day Event List Settings','dbem'); ?></strong></td></tr> + <tr valign="top" id='dbem_display_calendar_orderby_row'> + <th scope="row"><?php _e('Default event list ordering','dbem'); ?></th> + <td> + <select name="dbem_display_calendar_orderby" > + <?php + $orderby_options = apply_filters('dbem_display_calendar_orderby_ddm', array( + 'event_name,event_start_time' => __('Order by event name, then event start time','dbem'), + 'event_start_time,event_name' => __('Order by event start time, then event name','dbem') + )); + ?> + <?php foreach($orderby_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_display_calendar_orderby')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <select name="dbem_display_calendar_order" > + <?php + $ascending = __('Ascending','dbem'); + $descending = __('Descending','dbem'); + $order_options = apply_filters('dbem_display_calendar_order_ddm', array( + 'ASC' => __('All Ascending','dbem'), + 'DESC,ASC' => "$descending, $ascending", + 'DESC,DESC' => "$descending, $descending", + 'DESC' => __('All Descending','dbem') + )); + ?> + <?php foreach( $order_options as $key => $value) : ?> + <option value='<?php echo $key ?>' <?php echo ($key == get_option('dbem_display_calendar_order')) ? "selected='selected'" : ''; ?>> + <?php echo $value; ?> + </option> + <?php endforeach; ?> + </select> + <br/> + <em><?php _e('When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above.','dbem'); ?></em> + </td> + </tr> + <?php + em_options_input_text ( __( 'Calendar events/day limit', 'dbem' ), 'dbem_display_calendar_events_limit', __( 'Limits the number of events on each calendar day. Leave blank for no limit.', 'dbem' ) ); + em_options_input_text ( __( 'More Events message', 'dbem' ), 'dbem_display_calendar_events_limit_msg', __( 'Text with link to calendar day page with all events for that day if there are more events than the limit above, leave blank for no link as the day number is also a link.', 'dbem' ) ); + ?> + <tr><td><strong><?php echo sprintf(__('iCal Feed Settings','dbem'),__('Event','dbem')); ?></strong></td></tr> + <?php + em_options_input_text ( __( 'iCal Title', 'dbem' ), 'dbem_ical_description_format', __( 'The title that will appear in the calendar.', 'dbem' ).$events_placeholder_tip ); + em_options_input_text ( __( 'iCal Limit', 'dbem' ), 'dbem_ical_limit', __( 'Limits the number of future events shown (0 = unlimited).', 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <?php if( get_option('dbem_locations_enabled') ): ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Locations format', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class="form-table"> + <tr><td><strong><?php echo sprintf(__('%s Page','dbem'),__('Locations','dbem')); ?></strong></td></tr> + <?php + em_options_textarea ( sprintf(__('%s list header format','dbem'),__('Locations','dbem')), 'dbem_location_list_item_format_header', sprintf(__( 'This content will appear just above your code for the %s list format below. Default is blank', 'dbem' ), __('locations','dbem')) ); + em_options_textarea ( sprintf(__('%s list item format','dbem'),__('Locations','dbem')), 'dbem_location_list_item_format', sprintf(__( 'The format of a single %s in a list.', 'dbem' ), __('locations','dbem')).$locations_placeholder_tip ); + em_options_textarea ( sprintf(__('%s list footer format','dbem'),__('Locations','dbem')), 'dbem_location_list_item_format_footer', sprintf(__( 'This content will appear just below your code for the %s list format above. Default is blank', 'dbem' ), __('locations','dbem')) ); + em_options_input_text ( sprintf(__( 'No %s message', 'dbem' ),__('Locations','dbem')), 'dbem_no_locations_message', sprintf( __( 'The message displayed when no %s are available.', 'dbem' ), __('locations','dbem')) ); + ?> + <tr><td><strong><?php echo sprintf(__('Single %s Page','dbem'),__('Location','dbem')); ?></strong></td></tr> + <?php + em_options_input_text (sprintf( __( 'Single %s title format', 'dbem' ),__('location','dbem')), 'dbem_location_page_title_format', __( 'The format of a single location page title.', 'dbem' ).$locations_placeholder_tip ); + em_options_textarea ( sprintf(__('Single %s page format', 'dbem' ),__('location','dbem')), 'dbem_single_location_format', __( 'The format of a single location page.', 'dbem' ).$locations_placeholder_tip ); + em_options_textarea ( __( 'Default location balloon format', 'dbem' ), 'dbem_location_baloon_format', __( 'The format of of the text appearing in the baloon describing the location a single location map.', 'dbem' ).$locations_placeholder_tip ); + ?> + <tr><td><strong><?php echo sprintf(__('%s List Formats','dbem'),__('Event','dbem')); ?></strong></td></tr> + <?php + em_options_input_text ( __( 'Default event list format header', 'dbem' ), 'dbem_location_event_list_item_header_format', __( 'This content will appear just above your code for the default event list format. Default is blank', 'dbem' ) ); + em_options_textarea ( sprintf(__( 'Default %s list format', 'dbem' ),__('events','dbem')), 'dbem_location_event_list_item_format', __( 'The format of the events the list inserted in the location page through the <code>#_LOCATIONNEXTEVENTS</code>, <code>#_LOCATIONNEXTEVENTS</code> and <code>#_LOCATIONALLEVENTS</code> element.', 'dbem' ).$locations_placeholder_tip ); + em_options_input_text ( __( 'Default event list format footer', 'dbem' ), 'dbem_location_event_list_item_footer_format', __( 'This content will appear just below your code for the default event list format. Default is blank', 'dbem' ) ); + em_options_textarea ( sprintf(__( 'No %s message', 'dbem' ),__('events','dbem')), 'dbem_location_no_events_message', __( 'The message to be displayed in the list generated by <code>#_LOCATIONNEXTEVENTS</code>, <code>#_LOCATIONNEXTEVENTS</code> and <code>#_LOCATIONALLEVENTS</code> when no events are available.', 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php endif; ?> + + <?php if( get_option('dbem_categories_enabled') && !(EM_MS_GLOBAL && !is_main_blog()) ): ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Categories format', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class="form-table"> + <tr><td><strong><?php echo sprintf(__('%s Page','dbem'),__('Categories','dbem')); ?></strong></td></tr> + <?php + em_options_textarea ( sprintf(__('%s list header format','dbem'),__('Categories','dbem')), 'dbem_categories_list_item_format_header', sprintf(__( 'This content will appear just above your code for the %s list format below. Default is blank', 'dbem' ), __('categories','dbem')) ); + em_options_textarea ( sprintf(__('%s list item format','dbem'),__('Categories','dbem')), 'dbem_categories_list_item_format', sprintf(__( 'The format of a single %s in a list.', 'dbem' ), __('categories','dbem')).$categories_placeholder_tip ); + em_options_textarea ( sprintf(__('%s list footer format','dbem'),__('Categories','dbem')), 'dbem_categories_list_item_format_footer', sprintf(__( 'This content will appear just below your code for the %s list format above. Default is blank', 'dbem' ), __('categories','dbem')) ); + em_options_input_text ( sprintf(__( 'No %s message', 'dbem' ),__('Categories','dbem')), 'dbem_no_categories_message', sprintf( __( 'The message displayed when no %s are available.', 'dbem' ), __('categories','dbem')) ); + ?> + <tr><td><strong><?php echo sprintf(__('Single %s Page','dbem'),__('Category','dbem')); ?></strong></td></tr> + <?php + em_options_input_text ( sprintf(__( 'Single %s title format', 'dbem' ),__('category','dbem')), 'dbem_category_page_title_format', __( 'The format of a single category page title.', 'dbem' ).$categories_placeholder_tip ); + em_options_textarea ( sprintf(__('Single %s page format', 'dbem' ),__('category','dbem')), 'dbem_category_page_format', __( 'The format of a single category page.', 'dbem' ).$categories_placeholder_tip ); + ?> + <tr><td><strong><?php echo sprintf(__('%s List Formats','dbem'),__('Event','dbem')); ?></strong></td></tr> + <?php + em_options_input_text ( __( 'Default event list format header', 'dbem' ), 'dbem_category_event_list_item_header_format', __( 'This content will appear just above your code for the default event list format. Default is blank', 'dbem' ) ); + em_options_textarea ( sprintf(__( 'Default %s list format', 'dbem' ),__('events','dbem')), 'dbem_category_event_list_item_format', __( 'The format of the events the list inserted in the category page through the <code>#_CATEGORYNEXTEVENTS</code>, <code>#_CATEGORYNEXTEVENTS</code> and <code>#_CATEGORYALLEVENTS</code> element.', 'dbem' ).$categories_placeholder_tip ); + em_options_input_text ( __( 'Default event list format footer', 'dbem' ), 'dbem_category_event_list_item_footer_format', __( 'This content will appear just below your code for the default event list format. Default is blank', 'dbem' ) ); + em_options_textarea ( sprintf(__( 'No %s message', 'dbem' ),__('events','dbem')), 'dbem_category_no_events_message', __( 'The message to be displayed in the list generated by <code>#_CATEGORYNEXTEVENTS</code>, <code>#_CATEGORYNEXTEVENTS</code> and <code>#_CATEGORYALLEVENTS</code> when no events are available.', 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php endif; ?> + + <?php if( get_option('dbem_tags_enabled') ): ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Tags format', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class="form-table"> + <tr><td><strong><?php echo sprintf(__('Single %s Page','dbem'),__('Tag','dbem')); ?></strong></td></tr> + <?php + em_options_input_text ( sprintf(__( 'Single %s title format', 'dbem' ),__('tag','dbem')), 'dbem_tag_page_title_format', __( 'The format of a single tag page title.', 'dbem' ).$categories_placeholder_tip ); + em_options_textarea ( sprintf(__('Single %s page format', 'dbem' ),__('tag','dbem')), 'dbem_tag_page_format', __( 'The format of a single tag page.', 'dbem' ).$categories_placeholder_tip ); + ?> + <tr><td><strong><?php echo sprintf(__('%s List Formats','dbem'),__('Event','dbem')); ?></strong></td></tr> + <?php + em_options_input_text ( __( 'Default event list format header', 'dbem' ), 'dbem_tag_event_list_item_header_format', __( 'This content will appear just above your code for the default event list format. Default is blank', 'dbem' ) ); + em_options_textarea ( sprintf(__( 'Default %s list format', 'dbem' ),__('events','dbem')), 'dbem_tag_event_list_item_format', __( 'The format of the events the list inserted in the tag page through the <code>#_TAGNEXTEVENTS</code>, <code>#_TAGNEXTEVENTS</code> and <code>#_TAGALLEVENTS</code> element.', 'dbem' ).$categories_placeholder_tip ); + em_options_input_text ( __( 'Default event list format footer', 'dbem' ), 'dbem_tag_event_list_item_footer_format', __( 'This content will appear just below your code for the default event list format. Default is blank', 'dbem' ) ); + em_options_textarea ( sprintf(__( 'No %s message', 'dbem' ),__('events','dbem')), 'dbem_tag_no_events_message', __( 'The message to be displayed in the list generated by <code>#_TAGNEXTEVENTS</code>, <code>#_TAGNEXTEVENTS</code> and <code>#_TAGALLEVENTS</code> when no events are available.', 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php endif; ?> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'RSS feed format', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class="form-table"> + <?php + em_options_input_text ( __( 'RSS main title', 'dbem' ), 'dbem_rss_main_title', __( 'The main title of your RSS events feed.', 'dbem' ).$events_placeholder_tip ); + em_options_input_text ( __( 'RSS main description', 'dbem' ), 'dbem_rss_main_description', __( 'The main description of your RSS events feed.', 'dbem' ) ); + em_options_input_text ( __( 'RSS title format', 'dbem' ), 'dbem_rss_title_format', __( 'The format of the title of each item in the events RSS feed.', 'dbem' ).$events_placeholder_tip ); + em_options_input_text ( __( 'RSS description format', 'dbem' ), 'dbem_rss_description_format', __( 'The format of the description of each item in the events RSS feed.', 'dbem' ).$events_placeholder_tip ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Maps and geotagging', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class='form-table'> + <?php $gmap_is_active = get_option ( 'dbem_gmap_is_active' ); ?> + <tr valign="top"> + <th scope="row"><?php _e ( 'Enable Google Maps integration?', 'dbem' ); ?></th> + <td> + <?php _e ( 'Yes' ); ?> <input id="dbem_gmap_is_active_yes" name="dbem_gmap_is_active" type="radio" value="1" <?php echo ($gmap_is_active) ? "checked='checked'":''; ?> /> + <?php _e ( 'No' ); ?> <input name="dbem_gmap_is_active" type="radio" value="0" <?php echo ($gmap_is_active) ? '':"checked='checked'"; ?> /><br /> + <em><?php _e ( 'Check this option to enable Goggle Map integration.', 'dbem' )?></em> + </td> + </tr> + <?php + em_options_textarea ( __( 'Map text format', 'dbem' ), 'dbem_map_text_format', __( 'The text format inside the map balloons.', 'dbem' ).$events_placeholder_tip ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <?php do_action('em_options_page_footer_formats'); ?> + + </div> <!-- .em-menu-formats --> + + <?php if( get_option('dbem_rsvp_enabled') ): ?> + <!-- BOOKING OPTIONS --> + <div class="em-menu-bookings em-menu-group" style="display:none;"> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo sprintf(__( '%s Options', 'dbem' ),__('General','dbem')); ?> </span></h3> + <div class="inside"> + <table class='form-table'> + <?php + em_options_radio_binary ( __( 'Allow guest bookings?', 'dbem' ), 'dbem_bookings_anonymous', __( 'If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account.', 'dbem' ) ); + em_options_radio_binary ( __( 'Approval Required?', 'dbem' ), 'dbem_bookings_approval', __( 'Bookings will not be confirmed until the event administrator approves it.', 'dbem' ) ); + em_options_radio_binary ( __( 'Reserved unconfirmed spaces?', 'dbem' ), 'dbem_bookings_approval_reserved', __( 'By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes.', 'dbem' ) ); + em_options_radio_binary ( __( 'Can users cancel their booking?', 'dbem' ), 'dbem_bookings_user_cancellation', __( 'If enabled, users can cancel their bookings themselves from their bookings page.', 'dbem' ) ); + em_options_radio_binary ( __( 'Allow overbooking when approving?', 'dbem' ), 'dbem_bookings_approval_overbooking', __( 'If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving.', 'dbem' ) ); + em_options_radio_binary ( __( 'Allow double bookings?', 'dbem' ), 'dbem_bookings_double', __( 'If enabled, users can book an event more than once.', 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo sprintf(__( '%s Options', 'dbem' ),__('Pricing','dbem')); ?> </span></h3> + <div class="inside"> + <table class='form-table'> + <?php + /* Tax & Currency */ + em_options_select ( __( 'Currency', 'dbem' ), 'dbem_bookings_currency', em_get_currencies()->names, __( 'Choose your currency for displaying event pricing.', 'dbem' ) ); + em_options_input_text ( __( 'Thousands Seperator', 'dbem' ), 'dbem_bookings_currency_thousands_sep', '<code>'.get_option('dbem_bookings_currency_thousands_sep')." = ".em_get_currency_symbol().'100<strong>'.get_option('dbem_bookings_currency_thousands_sep').'</strong>000<strong>'.get_option('dbem_bookings_currency_decimal_point').'</strong>00</code>' ); + em_options_input_text ( __( 'Decimal Point', 'dbem' ), 'dbem_bookings_currency_decimal_point', '<code>'.get_option('dbem_bookings_currency_decimal_point')." = ".em_get_currency_symbol().'100<strong>'.get_option('dbem_bookings_currency_decimal_point').'</strong>00</code>' ); + em_options_input_text ( __( 'Currency Format', 'dbem' ), 'dbem_bookings_currency_format', __('Choose how prices are displayed. <code>@</code> will be replaced by the currency symbol, and <code>#</code> will be replaced by the number.','dbem').' <code>'.get_option('dbem_bookings_currency_format')." = ".em_get_currency_formatted('10000000').'</code>'); + em_options_input_text ( __( 'Tax Rate', 'dbem' ), 'dbem_bookings_tax', __( 'Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price).', 'dbem' ) ); + em_options_radio_binary ( __( 'Add tax to ticket price?', 'dbem' ), 'dbem_bookings_tax_auto_add', __( 'When displaying ticket prices and booking totals, include the tax automatically?', 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e( 'Customize Feedback Messages', 'dbem' ); ?> </span></h3> + <div class="inside"> + <p><?php _e('Below you will find texts that will be displayed to users in various areas during the bookings process, particularly on booking forms.','dbem'); ?></p> + <table class='form-table'> + <tr><td colspan='2'><h4><?php _e('My Bookings messages','dbem') ?></h4></td></tr> + <?php + em_options_input_text ( __( 'Booking Cancelled', 'dbem' ), 'dbem_booking_feedback_cancelled', __( 'When a user cancels their booking, this message will be displayed confirming the cancellation.', 'dbem' ) ); + em_options_input_text ( __( 'Booking Cancellation Warning', 'dbem' ), 'dbem_booking_warning_cancel', __( 'When a user chooses to cancel a booking, this warning is displayed for them to confirm.', 'dbem' ) ); + ?> + <tr><td colspan='2'><h4><?php _e('Booking form texts/messages','dbem') ?></h4></td></tr> + <?php + em_options_input_text ( __( 'Bookings disabled', 'dbem' ), 'dbem_bookings_form_msg_disabled', __( 'An event with no bookings.', 'dbem' ) ); + em_options_input_text ( __( 'Bookings closed', 'dbem' ), 'dbem_bookings_form_msg_closed', __( 'Bookings have closed (e.g. event has started).', 'dbem' ) ); + em_options_input_text ( __( 'Fully booked', 'dbem' ), 'dbem_bookings_form_msg_full', __( 'Event is fully booked.', 'dbem' ) ); + em_options_input_text ( __( 'Already attending', 'dbem' ), 'dbem_bookings_form_msg_attending', __( 'If already attending and double bookings are disabled, this message will be displayed, followed by a link to the users booking page.', 'dbem' ) ); + em_options_input_text ( __( 'Manage bookings link text', 'dbem' ), 'dbem_bookings_form_msg_bookings_link', __( 'Link text used for link to user bookings.', 'dbem' ) ); + ?> + <tr><td colspan='2'><h4><?php _e('Booking form feedback messages','dbem') ?></h4></td></tr> + <tr><td colspan='2'><?php _e('When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below.','dbem'); ?></td></tr> + <?php + em_options_input_text ( __( 'Successful booking', 'dbem' ), 'dbem_booking_feedback', __( 'When a booking is registered and confirmed.', 'dbem' ) ); + em_options_input_text ( __( 'Successful pending booking', 'dbem' ), 'dbem_booking_feedback_pending', __( 'When a booking is registered but pending.', 'dbem' ) ); + em_options_input_text ( __( 'Not enough spaces', 'dbem' ), 'dbem_booking_feedback_full', __( 'When a booking cannot be made due to lack of spaces.', 'dbem' ) ); + em_options_input_text ( __( 'Errors', 'dbem' ), 'dbem_booking_feedback_error', __( 'When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors.', 'dbem' ) ); + em_options_input_text ( __( 'Email Exists', 'dbem' ), 'dbem_booking_feedback_email_exists', __( 'When a guest tries to book using an email registered with a user account.', 'dbem' ) ); + em_options_input_text ( __( 'User must log in', 'dbem' ), 'dbem_booking_feedback_log_in', __( 'When a user must log in before making a booking.', 'dbem' ) ); + em_options_input_text ( __( 'Error mailing user', 'dbem' ), 'dbem_booking_feedback_nomail', __( 'If a booking is made and an email cannot be sent, this is added to the success message.', 'dbem' ) ); + em_options_input_text ( __( 'Already booked', 'dbem' ), 'dbem_booking_feedback_already_booked', __( 'If the user made a previous booking and cannot double-book.', 'dbem' ) ); + em_options_input_text ( __( 'No spaces booked', 'dbem' ), 'dbem_booking_feedback_min_space', __( 'If the user tries to make a booking without requesting any spaces.', 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo sprintf(__( '%s Options', 'dbem' ),__('Booking Form','dbem')); ?> </span></h3> + <div class="inside"> + <table class='form-table'> + <?php + em_options_radio_binary ( __( 'Display login form?', 'dbem' ), 'dbem_bookings_login_form', __( 'Choose whether or not to display a login form in the booking form area to remind your members to log in before booking.', 'dbem' ) ); + em_options_input_text ( __( 'Submit button text', 'dbem' ), 'dbem_bookings_submit_button', sprintf(__( 'The text used by the submit button. To use an image instead, enter the full url starting with %s or %s.', 'dbem' ), '<code>http://</code>','<code>https://</code>') ); + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php echo sprintf(__( '%s Options', 'dbem' ),__('Ticket','dbem')); ?> </span></h3> + <div class="inside"> + <table class='form-table'> + <?php + em_options_radio_binary ( __( 'Single ticket mode?', 'dbem' ), 'dbem_bookings_tickets_single', __( 'In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets).', 'dbem' ) ); + em_options_radio_binary ( __( 'Show ticket table in single ticket mode?', 'dbem' ), 'dbem_bookings_tickets_single_form', __( 'If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this.', 'dbem' ) ); + em_options_radio_binary ( __( 'Show unavailable tickets?', 'dbem' ), 'dbem_bookings_tickets_show_unavailable', __( 'You can choose whether or not to show unavailable tickets to visitors.', 'dbem' ) ); + em_options_radio_binary ( __( 'Show multiple tickets if logged out?', 'dbem' ), 'dbem_bookings_tickets_show_loggedout', __( 'If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket.', 'dbem' ) ); + $ticket_orders = array( + 'ticket_price DESC, ticket_name ASC'=>__('Ticket Price (Descending)','dbem'), + 'ticket_price ASC, ticket_name ASC'=>__('Ticket Price (Ascending)','dbem'), + 'ticket_name ASC, ticket_price DESC'=>__('Ticket Name (Ascending)','dbem'), + 'ticket_name DESC, ticket_price DESC'=>__('Ticket Name (Descending)','dbem') + ); + em_options_select ( __( 'Order Tickets By', 'dbem' ), 'dbem_bookings_tickets_orderby', $ticket_orders, __( 'Choose which order your tickets appear.', 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e('No-User Booking Mode','dbem'); ?> </span></h3> + <div class="inside"> + <table class='form-table'> + <tr><td colspan='2'> + <p><?php _e('By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them.','dbem'); ?></p> + <p><?php _e('The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user.','dbem'); ?></p> + <p><?php _e('<strong>Warning : </strong> Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information.','dbem'); ?></p> + </td></tr> + <?php + em_options_radio_binary ( __( 'Enable No-User Booking Mode?', 'dbem' ), 'dbem_bookings_registration_disable', __( 'This disables user registrations for bookings.', 'dbem' ) ); + $current_user = array(); + if( get_option('dbem_bookings_registration_user') ){ + $user = get_user_by('id',get_option('dbem_bookings_registration_user')); + $current_user[$user->ID] = $user->display_name; + } + em_options_select ( __( 'Assign bookings to', 'dbem' ), 'dbem_bookings_registration_user', em_get_wp_users(array('role' => 'subscriber'), $current_user), __( 'Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself.', 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <?php do_action('em_options_page_footer_bookings'); ?> + + </div> <!-- .em-menu-bookings --> + <?php endif; ?> + + <!-- EMAIL OPTIONS --> + <div class="em-menu-emails em-menu-group" style="display:none;"> + + <?php if ( !is_multisite() ) { em_admin_option_box_email(); } ?> + + <?php if( get_option('dbem_rsvp_enabled') ): ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Booking Email Templates', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class='form-table'> + <?php + $email_subject_tip = __('You can disable this email by leaving the subject blank.','dbem'); + em_options_select ( __( 'Default contact person', 'dbem' ), 'dbem_default_contact_person', em_get_wp_users(), __( 'Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event', 'dbem' ) ); + em_options_input_text ( __( 'Email events admin?', 'dbem' ), 'dbem_bookings_notify_admin', __( "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email).", 'dbem' ).' '.__('For multiple emails, seperate by commas (e.g. email1@test.com,email2@test.com,etc.)','dbem') ); + em_options_radio_binary ( __( 'Email contact person?', 'dbem' ), 'dbem_bookings_contact_email', __( 'Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)', 'dbem' ) ); + em_options_radio_binary ( __( 'Disable new registration email?', 'dbem' ), 'dbem_email_disable_registration', __( 'Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event.', 'dbem' ) ); + ?> + <tr><td colspan='2'><h4><?php _e('Contact person booking confirmed','dbem') ?></h4></td></tr> + <tr><td colspan='2'><?php echo __('An email will be sent to the event contact when a booking is first made.','dbem').$bookings_placeholder_tip ?></td></tr> + <?php + em_options_input_text ( __( 'Contact person email subject', 'dbem' ), 'dbem_bookings_contact_email_subject', $email_subject_tip ); + em_options_textarea ( __( 'Contact person email', 'dbem' ), 'dbem_bookings_contact_email_body', '' ); + ?> + <tr><td colspan='2'><h4><?php _e('Contact person booking cancelled','dbem') ?></h4></td></tr> + <tr><td colspan='2'><?php echo __('An email will be sent to the event contact if someone cancels their booking.','dbem').$bookings_placeholder_tip ?></td></tr> + <?php + em_options_input_text ( __( 'Contact person cancellation subject', 'dbem' ), 'dbem_contactperson_email_cancelled_subject', $email_subject_tip ); + em_options_textarea ( __( 'Contact person cancellation email', 'dbem' ), 'dbem_contactperson_email_cancelled_body', '' ); + ?> + <tr><td colspan='2'><h4><?php _e('Confirmed booking email','dbem') ?></h4></td></tr> + <tr><td colspan='2'><?php echo __('This is sent when a person\'s booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking.','dbem').$bookings_placeholder_tip ?></td></tr> + <?php + em_options_input_text ( __( 'Booking confirmed email subject', 'dbem' ), 'dbem_bookings_email_confirmed_subject', $email_subject_tip ); + em_options_textarea ( __( 'Booking confirmed email', 'dbem' ), 'dbem_bookings_email_confirmed_body', '' ); + ?> + <tr><td colspan='2'><h4><?php _e('Pending booking email','dbem') ?></h4></td></tr> + <tr><td colspan='2'><?php echo __( 'This will be sent to the person when they first submit their booking. Not relevant if bookings don\'t require approval.', 'dbem' ).$bookings_placeholder_tip ?></td></tr> + <?php + em_options_input_text ( __( 'Booking pending email subject', 'dbem' ), 'dbem_bookings_email_pending_subject', $email_subject_tip); + em_options_textarea ( __( 'Booking pending email', 'dbem' ), 'dbem_bookings_email_pending_body','') ; + ?> + <tr><td colspan='2'><h4><?php _e('Rejected booking email','dbem') ?></h4></td></tr> + <tr><td colspan='2'><?php echo __( 'This will be sent automatically when a booking is rejected. Not relevant if bookings don\'t require approval.', 'dbem' ).$bookings_placeholder_tip ?></td></tr> + <?php + em_options_input_text ( __( 'Booking rejected email subject', 'dbem' ), 'dbem_bookings_email_rejected_subject', $email_subject_tip ); + em_options_textarea ( __( 'Booking rejected email', 'dbem' ), 'dbem_bookings_email_rejected_body', '' ); + ?> + <tr><td colspan='2'><h4><?php _e('Booking cancelled','dbem') ?></h4></td></tr> + <tr><td colspan='2'><?php echo __('This will be sent when a user cancels their booking.','dbem').$bookings_placeholder_tip ?></td></tr> + <?php + em_options_input_text ( __( 'Booking cancelled email subject', 'dbem' ), 'dbem_bookings_email_cancelled_subject', $email_subject_tip ); + em_options_textarea ( __( 'Booking cancelled email', 'dbem' ), 'dbem_bookings_email_cancelled_body', '' ); + ?> + <?php echo $save_button; ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php endif; ?> + + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Event Email Templates', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class='form-table'> + <tr><td colspan='2'><strong><?php _e('Event Submitted','dbem') ?></strong></td></tr> + <tr><td colspan='2'><?php echo __('An email will be sent to the an administrator of your choice when an event is submitted and pending approval.','dbem').$bookings_placeholder_tip ?></td></tr> + <?php + em_options_input_text ( __( 'Administrator Email', 'dbem' ), 'dbem_event_submitted_email_admin', __('If left blank, no email will be sent. Seperate emails with commas for more than one email.','dbem') ); + em_options_input_text ( __( 'Event approved subject', 'dbem' ), 'dbem_event_submitted_email_subject', '' ); + em_options_textarea ( __( 'Event approved email', 'dbem' ), 'dbem_event_submitted_email_body', '' ); + ?> + <tr><td colspan='2'><strong><?php _e('Event Approved','dbem') ?></strong></td></tr> + <tr><td colspan='2'><?php echo __('An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the <code>publish_events</code> capability.','dbem').$bookings_placeholder_tip ?></td></tr> + <?php + em_options_input_text ( __( 'Event approved subject', 'dbem' ), 'dbem_event_approved_email_subject', '' ); + em_options_textarea ( __( 'Event approved email', 'dbem' ), 'dbem_event_approved_email_body', '' ); + ?> + <?php echo $save_button; ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + + <?php do_action('em_options_page_footer_emails'); ?> + + </div><!-- .em-group-emails --> + <?php /* + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Debug Modes', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class='form-table'> + <?php + em_options_radio_binary ( __( 'EM Debug Mode?', 'dbem' ), 'dbem_debug', __( 'Setting this to yes will display different content to admins for event pages and emails so you can see all the available placeholders and their values.', 'dbem' ) ); + em_options_radio_binary ( __( 'WP Debug Mode?', 'dbem' ), 'dbem_wp_debug', __( 'This will turn WP_DEBUG mode on. Useful if you want to troubleshoot php errors without looking at your logs.', 'dbem' ) ); + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + */ ?> + + <p class="submit"> + <input type="submit" id="dbem_options_submit" name="Submit" value="<?php _e ( 'Save Changes' )?>" /> + <input type="hidden" name="em-submitted" value="1" /> + <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('events-manager-options'); ?>" /> + </p> + + </div> <!-- .metabox-sortables --> + </div> <!-- .postbox-container --> + + </div> <!-- .metabox-holder --> + </form> + </div> + <?php +} + +/** + * Meta options box for image sizes. Shared in both MS and Normal options page, hence it's own function + */ +function em_admin_option_box_image_sizes(){ + global $save_button; + ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Image Sizes', 'dbem' ); ?> </span></h3> + <div class="inside"> + <table class='form-table'> + <?php + em_options_input_text ( __( 'Maximum width (px)', 'dbem' ), 'dbem_image_max_width', __( 'The maximum allowed width for images uploades', 'dbem' ) ); + em_options_input_text ( __( 'Minimum width (px)', 'dbem' ), 'dbem_image_min_width', __( 'The minimum allowed width for images uploades', 'dbem' ) ); + em_options_input_text ( __( 'Maximum height (px)', 'dbem' ), 'dbem_image_max_height', __( "The maximum allowed height for images uploaded, in pixels", 'dbem' ) ); + em_options_input_text ( __( 'Minimum height (px)', 'dbem' ), 'dbem_image_min_height', __( "The minimum allowed height for images uploaded, in pixels", 'dbem' ) ); + em_options_input_text ( __( 'Maximum size (bytes)', 'dbem' ), 'dbem_image_max_size', __( "The maximum allowed size for images uploaded, in bytes", 'dbem' ) ); + echo $save_button; + ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php +} + +/** + * Meta options box for email settings. Shared in both MS and Normal options page, hence it's own function + */ +function em_admin_option_box_email(){ + global $save_button; + ?> + <div class="postbox " > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Email Settings', 'dbem' ); ?></span></h3> + <div class="inside"> + <table class='form-table'> + <?php + em_options_input_text ( __( 'Notification sender name', 'dbem' ), 'dbem_mail_sender_name', __( "Insert the display name of the notification sender.", 'dbem' ) ); + em_options_input_text ( __( 'Notification sender address', 'dbem' ), 'dbem_mail_sender_address', __( "Insert the address of the notification sender.", 'dbem' ) ); + em_options_select ( __( 'Mail sending method', 'dbem' ), 'dbem_rsvp_mail_send_method', array ('smtp' => 'SMTP', 'mail' => __( 'PHP mail function', 'dbem' ), 'sendmail' => 'Sendmail', 'qmail' => 'Qmail', 'wp_mail' => 'WP Mail' ), __( 'Select the method to send email notification.', 'dbem' ) ); + em_options_radio_binary ( __( 'Send HTML Emails?', 'dbem' ), 'dbem_smtp_html', __( 'If set to yes, your emails will be sent in HTML format, otherwise plaintext.', 'dbem' ).' '.__( 'Depending on server settings, some sending methods may ignore this settings.', 'dbem' ) ); + ?> + <tbody class="em-email-settings-smtp"> + <?php + em_options_input_text ( 'Mail sending port', 'dbem_rsvp_mail_port', __( "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port", 'dbem' ) ); + em_options_radio_binary ( __( 'Use SMTP authentication?', 'dbem' ), 'dbem_rsvp_mail_SMTPAuth', __( 'SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes', 'dbem' ) ); + em_options_input_text ( 'SMTP host', 'dbem_smtp_host', __( "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'.", 'dbem' ) ); + em_options_input_text ( __( 'SMTP username', 'dbem' ), 'dbem_smtp_username', __( "Insert the username to be used to access your SMTP server.", 'dbem' ) ); + em_options_input_password ( __( 'SMTP password', 'dbem' ), "dbem_smtp_password", __( "Insert the password to be used to access your SMTP server", 'dbem' ) ); + ?> + </tbody> + <?php + echo $save_button; + ?> + </table> + <script type="text/javascript" charset="utf-8"> + jQuery(document).ready(function($){ + $('#dbem_rsvp_mail_send_method_row select').change(function(){ + el = $(this); + if( el.find(':selected').val() == 'smtp' ){ + $('.em-email-settings-smtp').show(); + }else{ + $('.em-email-settings-smtp').hide(); + } + }).trigger('change'); + }); + </script> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php +} + +/** + * Meta options box for user capabilities. Shared in both MS and Normal options page, hence it's own function + */ +function em_admin_option_box_caps(){ + global $save_button, $wpdb; + ?> + <div class="postbox" > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'User Capabilities', 'dbem' ); ?></span></h3> + <div class="inside"> + <table class="form-table"> + <tr><td colspan="2"> + <strong><?php _e('Warning: Changing these values may result in exposing previously hidden information to all users.', 'dbem')?></strong><br /> + </td></tr> + <?php + global $wp_roles; + $cap_docs = array( + sprintf(__('%s Capabilities','dbem'),__('Event','dbem')) => array( + /* Event Capabilities */ + 'publish_events' => sprintf(__('Users can publish %s and skip any admin approval','dbem'),__('events','dbem')), + 'delete_others_events' => sprintf(__('User can delete other users %s','dbem'),__('events','dbem')), + 'edit_others_events' => sprintf(__('User can edit other users %s','dbem'),__('events','dbem')), + 'delete_events' => sprintf(__('User can delete their own %s','dbem'),__('events','dbem')), + 'edit_events' => sprintf(__('User can create and edit %s','dbem'),__('events','dbem')), + 'read_private_events' => sprintf(__('User can view private %s','dbem'),__('events','dbem')), + /*'read_events' => sprintf(__('User can view %s','dbem'),__('events','dbem')),*/ + ), + sprintf(__('%s Capabilities','dbem'),__('Recurring Event','dbem')) => array( + /* Recurring Event Capabilties */ + 'publish_recurring_events' => sprintf(__('Users can publish %s and skip any admin approval','dbem'),__('recurring events','dbem')), + 'delete_others_recurring_events' => sprintf(__('User can delete other users %s','dbem'),__('recurring events','dbem')), + 'edit_others_recurring_events' => sprintf(__('User can edit other users %s','dbem'),__('recurring events','dbem')), + 'delete_recurring_events' => sprintf(__('User can delete their own %s','dbem'),__('recurring events','dbem')), + 'edit_recurring_events' => sprintf(__('User can create and edit %s','dbem'),__('recurring events','dbem')) + ), + sprintf(__('%s Capabilities','dbem'),__('Location','dbem')) => array( + /* Location Capabilities */ + 'publish_locations' => sprintf(__('Users can publish %s and skip any admin approval','dbem'),__('locations','dbem')), + 'delete_others_locations' => sprintf(__('User can delete other users %s','dbem'),__('locations','dbem')), + 'edit_others_locations' => sprintf(__('User can edit other users %s','dbem'),__('locations','dbem')), + 'delete_locations' => sprintf(__('User can delete their own %s','dbem'),__('locations','dbem')), + 'edit_locations' => sprintf(__('User can create and edit %s','dbem'),__('locations','dbem')), + 'read_private_locations' => sprintf(__('User can view private %s','dbem'),__('locations','dbem')), + 'read_others_locations' => __('User can use other user locations for their events.','dbem'), + /*'read_locations' => sprintf(__('User can view %s','dbem'),__('locations','dbem')),*/ + ), + sprintf(__('%s Capabilities','dbem'),__('Other','dbem')) => array( + /* Category Capabilities */ + 'delete_event_categories' => sprintf(__('User can delete %s categories and tags.','dbem'),__('event','dbem')), + 'edit_event_categories' => sprintf(__('User can edit %s categories and tags.','dbem'),__('event','dbem')), + /* Booking Capabilities */ + 'manage_others_bookings' => __('User can manage other users individual bookings and event booking settings.','dbem'), + 'manage_bookings' => __('User can use and manage bookings with their events.','dbem'), + 'upload_event_images' => __('User can upload images along with their events and locations.','dbem') + ) + ); + ?> + <tr><td colspan="2"> + <p><em><?php _e('You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions.','dbem'); ?></em></p> + </td></tr> + <tr><td colspan="2"> + <?php + if( is_multisite() && is_network_admin() ){ + echo em_options_radio_binary(__('Apply global capabilities?','dbem'), 'dbem_ms_global_caps', __('If set to yes the capabilities will be applied all your network blogs and you will not be able to set custom capabilities each blog. You can select no later and visit specific blog settings pages to add/remove capabilities.','dbem') ); + } + ?> + </td></tr> + <tr><td colspan="2"> + <table class="em-caps-table" style="width:auto;" cellspacing="0" cellpadding="0"> + <thead> + <tr> + <td> </td> + <?php + $odd = 0; + foreach(array_keys($cap_docs) as $capability_group){ + ?><th class="<?php echo ( !is_int($odd/2) ) ? 'odd':''; ?>"><?php echo $capability_group ?></th><?php + $odd++; + } + ?> + </tr> + </thead> + <tbody> + <?php foreach($wp_roles->role_objects as $role): ?> + <tr> + <td class="cap"><strong><?php echo $role->name; ?></strong></td> + <?php + $odd = 0; + foreach($cap_docs as $capability_group){ + ?> + <td class="<?php echo ( !is_int($odd/2) ) ? 'odd':''; ?>"> + <?php foreach($capability_group as $cap => $cap_help){ ?> + <input type="checkbox" name="em_capabilities[<?php echo $role->name; ?>][<?php echo $cap ?>]" value="1" id="<?php echo $role->name.'_'.$cap; ?>" <?php echo $role->has_cap($cap) ? 'checked="checked"':''; ?> /> +  <label for="<?php echo $role->name.'_'.$cap; ?>"><?php echo $cap; ?></label> <a href="#" title="<?php echo $cap_help; ?>">?</a> + <br /> + <?php } ?> + </td> + <?php + $odd++; + } + ?> + </tr> + <?php endforeach; ?> + </tbody> + </table> + </td></tr> + <?php echo $save_button; ?> + </table> + </div> <!-- . inside --> + </div> <!-- .postbox --> + <?php +} + +function em_admin_option_box_uninstall(){ + if( is_multisite() ){ + $uninstall_url = admin_url().'network/admin.php?page=events-manager-options&action=uninstall&_wpnonce='.wp_create_nonce('em_uninstall_'.get_current_user_id().'_wpnonce'); + $reset_url = admin_url().'network/admin.php?page=events-manager-options&action=reset&_wpnonce='.wp_create_nonce('em_reset_'.get_current_user_id().'_wpnonce'); + $recheck_updates_url = admin_url().'network/admin.php?page=events-manager-options&action=recheck_updates&_wpnonce='.wp_create_nonce('em_recheck_updates_'.get_current_user_id().'_wpnonce'); + $check_devs = admin_url().'network/admin.php?page=events-manager-options&action=check_devs&_wpnonce='.wp_create_nonce('em_check_devs'.get_current_user_id().'_wpnonce'); + }else{ + $uninstall_url = EM_ADMIN_URL.'&page=events-manager-options&action=uninstall&_wpnonce='.wp_create_nonce('em_uninstall_'.get_current_user_id().'_wpnonce'); + $reset_url = EM_ADMIN_URL.'&page=events-manager-options&action=reset&_wpnonce='.wp_create_nonce('em_reset_'.get_current_user_id().'_wpnonce'); + $recheck_updates_url = EM_ADMIN_URL.'&page=events-manager-options&action=recheck_updates&_wpnonce='.wp_create_nonce('em_recheck_updates_'.get_current_user_id().'_wpnonce'); + $check_devs = EM_ADMIN_URL.'&page=events-manager-options&action=check_devs&_wpnonce='.wp_create_nonce('em_check_devs_'.get_current_user_id().'_wpnonce'); + } + ?> + <div class="postbox" > + <div class="handlediv" title="<?php __('Click to toggle', 'dbem'); ?>"><br /></div><h3><span><?php _e ( 'Admin Tools', 'dbem' ); ?> (<?php _e ( 'Uninstall/Reset', 'dbem' ); ?>)</span></h3> + <div class="inside"> + <h4 style="font-size:1.1em;"><?php _e ( 'Development Versions & Updates', 'dbem' ); ?></h4> + <p><?php _e('We\'re always making improvements, adding features and fixing bugs between releases. We incrementally make these changes in between updates and make it available as a development version. You can download these manually, but we\'ve made it easy for you. <strong>Warning:</strong> Development versions are not always fully tested before release, use wisely!'); ?></p> + <table class="form-table"> + <?php em_options_radio_binary ( __( 'Enable Dev Updates?', 'dbem' ), 'dbem_pro_dev_updates', __('If enabled, the latest dev version will always be checked instead of the latest stable version of the plugin.') ); ?> + </table> + <p><a href="<?php echo $recheck_updates_url; ?>" class="button-secondary"><?php _e('Re-Check Updates','dbem'); ?></a> - <?php _e('If you would like to check and see if there is a new stable update.','dbem'); ?></p> + <p><a href="<?php echo $check_devs; ?>" class="button-secondary"><?php _e('Check Dev Versions','dbem'); ?></a> - <?php _e('If you would like to download a dev version, but just as a one-off, you can force a dev version check by clicking the button below. If there is one available, it should appear in your plugin updates page as a regular update.','dbem'); ?></p> + + <h4 style="font-size:1.1em;"><?php _e ( 'Uninstall/Reset', 'dbem' ); ?></h4> + <p><?php _e('Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data.','dbem'); ?></p> + <a href="<?php echo $uninstall_url; ?>" class="button-secondary"><?php _e('Uninstall','dbem'); ?></a> + <a href="<?php echo $reset_url; ?>" class="button-secondary"><?php _e('Reset','dbem'); ?></a> + </div> + </div> + <?php +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/bp-em-activity.php b/wp-content/plugins/events-manager/buddypress/bp-em-activity.php new file mode 100644 index 0000000..f460e34 --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/bp-em-activity.php @@ -0,0 +1,129 @@ +<?php +// This file handles hooks/filter requiring activity stream publications + +/** + * bp_em_record_activity() + * + * If the activity stream component is installed, this function will record activity items for your + * component. + */ +function bp_em_record_activity( $args = '' ) { + if ( !function_exists( 'bp_activity_add' ) ) + return false; + + $defaults = array( + 'id' => false, + 'user_id' => '', + 'action' => '', + 'content' => '', + 'primary_link' => '', + 'component' => 'events-manager', + 'type' => false, + 'item_id' => false, + 'secondary_item_id' => false, + 'recorded_time' => gmdate( "Y-m-d H:i:s" ), + 'hide_sitewide' => false + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + return bp_activity_add( array( 'id' => $id, 'user_id' => $user_id, 'action' => $action, 'content' => $content, 'primary_link' => $primary_link, 'component' => $component, 'type' => $type, 'item_id' => $item_id, 'secondary_item_id' => $secondary_item_id, 'recorded_time' => $recorded_time, 'hide_sitewide' => $hide_sitewide ) ); +} + +/** + * Records new events to the activity stream. + * @param unknown_type $result + * @param unknown_type $EM_Event + * @return unknown + */ +function bp_em_record_activity_event_save( $result, $EM_Event ){ + if( $result && $EM_Event->event_status == 1 && empty($EM_Event->previous_status) ){ + $user = get_userdata($EM_Event->event_owner); + $member_link = bp_core_get_user_domain($user->ID); + if( empty($EM_Event->group_id) ){ + bp_em_record_activity( array( + 'user_id' => $user->ID, + 'action' => sprintf(__('%s added the event %s','dbem'), "<a href='".$member_link."'>".$user->display_name."</a>", $EM_Event->output('#_EVENTLINK') ), + 'primary_link' => $EM_Event->output('#_EVENTURL'), + 'type' => 'new_event', + 'item_id' => $EM_Event->event_id, + 'hide_sitewide' => $EM_Event->event_private + )); + }else{ + //tis a group event + $group = new BP_Groups_Group($EM_Event->group_id); + bp_em_record_activity( array( + 'user_id' => $user->ID, + 'action' => sprintf(__('%s added the event %s to %s.','dbem'), "<a href='".$member_link."'>".$user->display_name."</a>", $EM_Event->output('#_EVENTLINK'), '<a href="'.bp_get_group_permalink($group).'">'.bp_get_group_name($group).'</a>' ), + 'component' => 'groups', + 'type' => 'new_event', + 'item_id' => $EM_Event->group_id, + 'hide_sitewide' => $EM_Event->event_private + )); + } + } + return $result; +} +add_filter('em_event_save','bp_em_record_activity_event_save', 10, 2); + +/** + * @param boolean $result + * @param EM_Booking $EM_Booking + * @return boolean + */ +function bp_em_record_activity_booking_save( $result, $EM_Booking ){ + if( $result ){ + $rejected_statuses = array(0,2,3); //these statuses apply to rejected/cancelled bookings + $user = $EM_Booking->person; + $member_slug = function_exists( 'bp_get_members_root_slug' ) ? bp_get_members_root_slug() : BP_MEMBERS_SLUG; + $member_link = trailingslashit(bp_get_root_domain()) . $member_slug . '/' . $user->user_login; + $user_link = "<a href='".$member_link."/'>".$user->display_name."</a>"; + $event_link = $EM_Booking->get_event()->output('#_EVENTLINK'); + $status = $EM_Booking->booking_status; + $EM_Event = $EM_Booking->get_event(); + if( empty($EM_Event->group_id) ){ + if( $status == 1 || (!get_option('dbem_bookings_approval') && $status < 2) ){ + $action = sprintf(__('%s is attending %s.','dbem'), $user_link, $event_link ); + }elseif( ($EM_Booking->previous_status == 1 || (!get_option('dbem_bookings_approval') && $EM_Booking->previous_status < 2)) && in_array($status, $rejected_statuses) ){ + $action = sprintf(__('%s will not be attending %s anymore.','dbem'), $user_link, $event_link ); + } + }else{ + $group = new BP_Groups_Group($EM_Event->group_id); + $group_link = '<a href="'.bp_get_group_permalink($group).'">'.bp_get_group_name($group).'</a>'; + if( $status == 1 || (!get_option('dbem_bookings_approval') && $status < 2) ){ + $action = sprintf(__('%s is attending %s of the group %s.','dbem'), $user_link, $event_link, $group_link ); + }elseif( ($EM_Booking->previous_status == 1 || (!get_option('dbem_bookings_approval') && $EM_Booking->previous_status < 2)) && in_array($status, $rejected_statuses) ){ + $action = sprintf(__('%s will not be attending %s of group %s anymore.','dbem'), $user_link, $event_link, $group_link ); + } + } + if( !empty($action) ){ + bp_em_record_activity( array( + 'user_id' => $EM_Booking->person->ID, + 'action' => $action, + 'primary_link' => $EM_Event->output('#_EVENTURL'), + 'type' => 'new_booking', + 'item_id' => $EM_Event->event_id, + 'secondary_item_id' => $EM_Booking->booking_id, + 'hide_sitewide' => $EM_Event->event_private + )); + //group activity + if( !empty($EM_Event->group_id) ){ + //tis a group event + bp_em_record_activity( array( + 'component' => 'groups', + 'item_id' => $EM_Event->group_id, + 'user_id' => $EM_Booking->person->ID, + 'action' => $action, + 'primary_link' => $EM_Event->output('#_EVENTURL'), + 'type' => 'new_booking', + 'secondary_item_id' => $EM_Booking->booking_id, + 'hide_sitewide' => $EM_Event->event_private + )); + } + } + } + return $result; +} +add_filter('em_booking_set_status','bp_em_record_activity_booking_save', 100, 2); +add_filter('em_booking_save','bp_em_record_activity_booking_save', 100, 2); +add_filter('em_booking_delete','bp_em_record_activity_booking_save', 100, 2); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/bp-em-core.php b/wp-content/plugins/events-manager/buddypress/bp-em-core.php new file mode 100644 index 0000000..b8f710d --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/bp-em-core.php @@ -0,0 +1,235 @@ +<?php +//Main loader for buddypress +/** + * Events Manager component for BuddyPress + * @author marcus + * @since 5.0 + */ +class BP_EM_Component extends BP_Component { + + function __construct() { + global $bp; + parent::start('events', __('Events', 'dbem'), EM_DIR); + $this->includes(); + //TODO make BP component optional + $bp->active_components[$this->id] = '1'; + } + + function includes() { + // Files to include + $includes = array( + 'buddypress/bp-em-activity.php', + 'buddypress/bp-em-templatetags.php', + 'buddypress/bp-em-notifications.php', + 'buddypress/screens/profile.php', + 'buddypress/screens/my-events.php', + 'buddypress/screens/my-locations.php', + 'buddypress/screens/attending.php', + 'buddypress/screens/my-bookings.php', + 'buddypress/screens/my-group-events.php' + ); + if( bp_is_active('groups') ){ + $includes[] = 'buddypress/screens/group-events.php'; + $includes[] = 'buddypress/bp-em-groups.php'; + } + parent::includes( $includes ); + //TODO add admin pages for extra BP specific settings + } + + /** + * Sets up the global Events Manager BuddyPress Components + */ + function setup_globals() { + global $bp, $wpdb; + // Define a slug constant that will be used to view this components pages + if ( !defined( 'BP_EM_SLUG' ) ) + define ( 'BP_EM_SLUG', EM_POST_TYPE_EVENT_SLUG ); + + // Set up the $globals array to be passed along to parent::setup_globals() + $globals = array( + 'slug' => BP_EM_SLUG, + 'has_directory' => false, //already done by EM + 'notification_callback' => 'bp_em_format_notifications', + 'search_string' => sprintf(__( 'Search %s...', 'dbem' ),__('Events','dbem')), + ); + + // Let BP_Component::setup_globals() do its work. + parent::setup_globals( $globals ); + + //quick link shortcut - may need to revisit this + $bp->{$this->id}->link = trailingslashit($bp->loggedin_user->domain).BP_EM_SLUG.'/'; + } + + function setup_nav() { + global $blog_id; + //check multisite or normal mode for correct permission checking + if(is_multisite() && $blog_id != BP_ROOT_BLOG){ + //FIXME MS mode doesn't seem to recognize cross subsite caps, using the proper functions, for now we use switch_blog. + $current_blog = $blog_id; + switch_to_blog(BP_ROOT_BLOG); + $can_manage_events = current_user_can_for_blog(BP_ROOT_BLOG, 'edit_events'); + $can_manage_locations = current_user_can_for_blog(BP_ROOT_BLOG, 'edit_locations'); + $can_manage_bookings = current_user_can_for_blog(BP_ROOT_BLOG, 'manage_bookings'); + switch_to_blog($current_blog); + }else{ + $can_manage_events = current_user_can('edit_events'); + $can_manage_locations = current_user_can('edit_locations'); + $can_manage_bookings = current_user_can('manage_bookings'); + } + /* Add 'Events' to the main user profile navigation */ + $main_nav = array( + 'name' => __( 'Events', 'dbem' ), + 'slug' => em_bp_get_slug(), + 'position' => 80, + 'screen_function' => 'bp_em_events', + 'default_subnav_slug' => 'profile' + ); + + $em_link = trailingslashit( bp_loggedin_user_domain() . em_bp_get_slug() ); + + /* Create SubNav Items */ + $sub_nav[] = array( + 'name' => __( 'My Profile', 'dbem' ), + 'slug' => 'profile', + 'parent_slug' => em_bp_get_slug(), + 'parent_url' => $em_link, + 'screen_function' => 'bp_em_events', + 'position' => 10 + ); + + $sub_nav[] = array( + 'name' => __( 'Events I\'m Attending', 'dbem' ), + 'slug' => 'attending', + 'parent_slug' => em_bp_get_slug(), + 'parent_url' => $em_link, + 'screen_function' => 'bp_em_attending', + 'position' => 20, + 'user_has_access' => bp_is_my_profile() // Only the logged in user can access this on his/her profile + ); + + if( $can_manage_events ){ + $sub_nav[] = array( + 'name' => __( 'My Events', 'dbem' ), + 'slug' => 'my-events', + 'parent_slug' => em_bp_get_slug(), + 'parent_url' => $em_link, + 'screen_function' => 'bp_em_my_events', + 'position' => 30, + 'user_has_access' => bp_is_my_profile() // Only the logged in user can access this on his/her profile + ); + } + + if( $can_manage_locations && get_option('dbem_locations_enabled') ){ + $sub_nav[] = array( + 'name' => __( 'My Locations', 'dbem' ), + 'slug' => 'my-locations', + 'parent_slug' => em_bp_get_slug(), + 'parent_url' => $em_link, + 'screen_function' => 'bp_em_my_locations', + 'position' => 40, + 'user_has_access' => bp_is_my_profile() // Only the logged in user can access this on his/her profile + ); + } + + if( $can_manage_bookings && get_option('dbem_rsvp_enabled') ){ + $sub_nav[] = array( + 'name' => __( 'My Event Bookings', 'dbem' ), + 'slug' => 'my-bookings', + 'parent_slug' => em_bp_get_slug(), + 'parent_url' => $em_link, + 'screen_function' => 'bp_em_my_bookings', + 'position' => 50, + 'user_has_access' => bp_is_my_profile() // Only the logged in user can access this on his/her profile + ); + } + + if( bp_is_active('groups') ){ + /* Create Profile Group Sub-Nav */ + $sub_nav[] = array( + 'name' => __( 'Events', 'dbem' ), + 'slug' => 'group-events', + 'parent_slug' => bp_get_groups_slug(), + 'parent_url' =>trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ), + 'screen_function' => 'bp_em_my_group_events', + 'position' => 60, + 'user_has_access' => bp_is_my_profile() // Only the logged in user can access this on his/her profile + ); + } + + parent::setup_nav( $main_nav, $sub_nav ); + add_action( 'bp_init', array(&$this, 'setup_group_nav') ); + } + + function setup_group_nav(){ + global $bp; + /* Add some group subnav items */ + $user_access = false; + $group_link = ''; + if( bp_is_active('groups') && !empty($bp->groups->current_group) ){ + $group_link = $bp->root_domain . '/' . bp_get_groups_root_slug() . '/' . $bp->groups->current_group->slug . '/'; + $user_access = $bp->groups->current_group->user_has_access; + if( !empty($bp->current_component) && $bp->current_component == 'groups' ){ + $count = EM_Events::count(array('group'=>$bp->groups->current_group->id)); + if( empty($count) ) $count = 0; + } + bp_core_new_subnav_item( array( + 'name' => __( 'Events', 'dbem' ) . " <span>$count</span>", + 'slug' => 'events', + 'parent_url' => $group_link, + 'parent_slug' => $bp->groups->current_group->slug, + 'screen_function' => 'bp_em_group_events', + 'position' => 50, + 'user_has_access' => $user_access, + 'item_css_id' => 'forums' + )); + } + } +} +function bp_em_load_core_component() { + global $bp; + $bp->events = new BP_EM_Component(); +} +add_action( 'bp_loaded', 'bp_em_load_core_component' ); + +if( !is_admin() ){ + /* + * Links and URL Rewriting + */ + function em_bp_rewrite_edit_url($url, $EM_Event){ + global $bp; + return $bp->events->link.'my-events/?action=edit&event_id='.$EM_Event->event_id; + } + if( !get_option('dbem_edit_events_page') ){ + add_filter('em_event_get_edit_url','em_bp_rewrite_edit_url',10,2); + } + + + function em_bp_rewrite_bookings_url($url, $EM_Event){ + global $bp; + return $bp->events->link.'my-bookings/?event_id='.$EM_Event->event_id; + } + if( !get_option('dbem_edit_bookings_page') ){ + add_filter('em_event_get_bookings_url','em_bp_rewrite_bookings_url',10,2); + } + + function em_bp_rewrite_edit_location_url($url, $EM_Location){ + global $bp; + return $bp->events->link.'my-locations/?action=edit&location_id='.$EM_Location->location_id; + } + if( !get_option('dbem_edit_locations_page') ){ + add_filter('em_location_get_edit_url','em_bp_rewrite_edit_location_url',10,2); + } +} + +/** + * Delete events when you delete a user. + */ +function bp_em_remove_data( $user_id ) { + $EM_Events = EM_Events::get(array('scope'=>'all','owner'=>$user_id, 'status'=>false)); + EM_Events::delete($EM_Events); +} +add_action( 'wpmu_delete_user', 'bp_em_remove_data', 1 ); +add_action( 'delete_user', 'bp_em_remove_data', 1 ); + +define('EM_BP_LOADED',true); //so we know +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/bp-em-groups.php b/wp-content/plugins/events-manager/buddypress/bp-em-groups.php new file mode 100644 index 0000000..7c94b73 --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/bp-em-groups.php @@ -0,0 +1,140 @@ +<?php +/** + * @param EM_Event $EM_Event + */ +function bp_em_group_event_save($result, $EM_Event){ + if( is_object($EM_Event) && !empty($EM_Event->event_id) ){ + if( !empty($_REQUEST['group_id']) && is_numeric($_REQUEST['group_id']) && bp_is_active('groups') ){ + //we have been requested an event creation tied to a group, so does this group exist, and does this person have admin rights to it? + if( groups_is_user_admin(get_current_user_id(), $_REQUEST['group_id']) ){ + $EM_Event->group_id = $_REQUEST['group_id']; + } + if( !empty($EM_Event->group_id) ){ + //if group is private, make it private + $group = groups_get_group(array('group_id'=>$EM_Event->group_id)); + $is_member = groups_is_user_member(get_current_user_id(), $EM_Event->group_id) || groups_is_user_admin(get_current_user_id(), $EM_Event->group_id) || groups_is_user_mod(get_current_user_id(), $EM_Event->group_id); + if( $group->status != 'public' && $is_member ){ + //Make sure event status is private and set post status to private + global $wpdb; + $EM_Event->event_private = 1; + $wpdb->update($wpdb->posts, array('post_status'=>'private'), array('ID'=>$EM_Event->post_id)); + $wpdb->update(EM_EVENTS_TABLE, array('event_private'=>1), array('event_id'=>$EM_Event->event_id)); + } + } + }else{ + $EM_Event->group_id = null; + } + } + return $result; +} +add_action('em_event_save','bp_em_group_event_save',1,2); + +/** + * @param boolean $result + * @param EM_Event $EM_Event + */ +function bp_em_group_event_can_manage( $result, $EM_Event){ + if( !$result && !empty($EM_Event->group_id) && bp_is_active('groups') ){ //only override if already false, incase it's true + if( groups_is_user_admin(get_current_user_id(),$EM_Event->group_id) && current_user_can('edit_events') ){ + //This user is an admin of the owner's group, so they can edit this event. + return true; + } + } + return $result; +} +add_filter('em_event_can_manage','bp_em_group_event_can_manage',1,2); + + +function bp_em_group_events_accepted_searches($searches){ + if( bp_is_active('groups') ){ + $searches[] = 'group'; + } + return $searches; +} +add_filter('em_accepted_searches','bp_em_group_events_accepted_searches',1,1); + +function bp_em_group_events_get_default_search($searches, $array){ + if( !empty($array['group']) && (is_numeric($array['group']) || $array['group'] == 'my' || $array['group'] == 'this') && bp_is_active('groups') ){ + if($array['group'] == 'this'){ //shows current group, if applicable + if( is_numeric(bp_get_current_group_id()) ){ + $searches['group'] = bp_get_current_group_id(); + } + }else{ + $searches['group'] = $array['group']; + } + } + return $searches; +} +add_filter('em_events_get_default_search','bp_em_group_events_get_default_search',1,2); + +/* + * Privacy Functions + */ +function bp_em_group_events_build_sql_conditions( $conditions, $args ){ + if( !empty($args['group']) && is_numeric($args['group']) ){ + $conditions['group'] = "( `group_id`={$args['group']} )"; + }elseif( !empty($args['group']) && $args['group'] == 'my' ){ + $groups = groups_get_user_groups(get_current_user_id()); + if( count($groups) > 0 ){ + $conditions['group'] = "( `group_id` IN (".implode(',',$groups['groups']).") )"; + } + } + //deal with private groups and events + if( is_user_logged_in() ){ + global $wpdb; + //find out what private groups they belong to, and don't show private group events not in their memberships + $group_ids = BP_Groups_Member::get_group_ids(get_current_user_id()); + if( $group_ids['total'] > 0){ + $conditions['group_privacy'] = "(`event_private`=0 OR (`event_private`=1 AND (`group_id` IS NULL OR `group_id` = 0)) OR (`event_private`=1 AND `group_id` IN (".implode(',',$group_ids['groups']).")))"; + }else{ + //find out what private groups they belong to, and don't show private group events not in their memberships + $conditions['group_privacy'] = "(`event_private`=0 OR (`event_private`=1 AND (`group_id` IS NULL OR `group_id` = 0)))"; + } + } + return $conditions; +} +add_filter('em_events_build_sql_conditions','bp_em_group_events_build_sql_conditions',1,2); + + +/** + * Overrides the default post format of an event and can display an event as a page, which uses the page.php template. + * @param string $template + * @return string + */ +function bp_em_private_event_check($template){ + global $post, $wpdb, $wp_query, $bp; + if( $post->post_type == EM_POST_TYPE_EVENT ){ + $EM_Event = em_get_event($post); + //echo "<pre>"; print_r($EM_Event); echo "</pre>"; die(); + if( !empty($EM_Event->event_private) && !empty($EM_Event->group_id) ){ + if( is_user_logged_in() ){ + //make sure user is a member of this group, whether private or not, private groups just aren't shown to non-members of a group + $id_lookup = $wpdb->get_var( $wpdb->prepare( "SELECT m.group_id FROM {$bp->groups->table_name_members} m WHERE m.group_id = %s AND m.user_id = %d AND m.is_confirmed = 1 AND m.is_banned = 0", $EM_Event->group_id, get_current_user_id() ) ); + if($id_lookup != $EM_Event->group_id){ + unset($post); + $wp_query->set_404(); + $template = locate_template(array('404.php'),false); + } + }else{ + unset($post); + $wp_query->set_404(); + $template = locate_template(array('404.php'),false); + } + } + } + return $template; +} +add_filter('single_template','bp_em_private_event_check',20); + +/* + * Admin Meta Boxes + */ +function bp_em_meta_boxes(){ + add_meta_box('em-event-group', __('Group Ownership','dbem'), 'bp_em_meta_box_group',EM_POST_TYPE_EVENT, 'side','low'); + add_meta_box('em-event-group', __('Group Ownership','dbem'), 'bp_em_meta_box_group','event-recurring', 'side','low'); +} +add_action('add_meta_boxes', 'bp_em_meta_boxes'); + +function bp_em_meta_box_group(){ + em_locate_template('forms/event/group.php',true); +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/bp-em-notifications.php b/wp-content/plugins/events-manager/buddypress/bp-em-notifications.php new file mode 100644 index 0000000..3f75b10 --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/bp-em-notifications.php @@ -0,0 +1,82 @@ +<?php +//This file handles hooks requiring notifications + +/** + * bp_em_format_notifications() + * + * The format notification function will take DB entries for notifications and format them + * so that they can be displayed and read on the screen. + * + * Notifications are "screen" notifications, that is, they appear on the notifications menu + * in the site wide navigation bar. They are not for email notifications. + * + * + * The recording is done by using bp_core_add_notification() which you can search for in this file for + * ems of usage. + */ +function bp_em_format_notifications( $action, $item_id, $secondary_item_id, $total_items ) { + global $bp; + switch ( $action ) { + case 'pending_booking': + //Count pending bookings + if( get_option('dbem_bookings_approval')){ + if ( $total_items > 1 ) { + return '<a href="' . $bp->loggedin_user->domain . $bp->events->slug . '/my-bookings/" title="' . __( 'My Bookings', 'dbem' ) . '">' . __('You have a pending booking','dbem'). '</a>'; + } else { + return apply_filters( 'bp_em_format_new_booking_notification', '<a href="' . $bp->loggedin_user->domain . $bp->events->slug . '/my-bookings/" title="' . __( 'My Bookings', 'dbem' ) . '">' . sprintf(__('You have %s pending bookings','dbem'), $total_items). '</a>' ); + } + } + break; + case 'confirmed_booking': + //Count pending bookings + if ( $total_items > 1 ) { + return apply_filters( 'bp_em_format_confirmed_booking_notifications', '<a href="' . $bp->loggedin_user->domain . $bp->events->slug . '/my-bookings/" title="' . __( 'My Bookings', 'dbem' ) . '">' . __('You have a confirmed booking','dbem'). '</a>' ); + } else { + return apply_filters( 'bp_em_format_confirmed_booking_notification', '<a href="' . $bp->loggedin_user->domain . $bp->events->slug . '/my-bookings/" title="' . __( 'My Bookings', 'dbem' ) . '">' . sprintf(__('You have %s confirmed bookings','dbem'), $total_items). '</a>' ); + } + break; + case 'cancelled_booking': + //Count pending bookings + if ( $total_items > 1 ) { + return apply_filters( 'bp_em_format_cancelled_booking_notifications', '<a href="' . $bp->loggedin_user->domain . $bp->events->slug . '/my-bookings/" title="' . __( 'My Bookings', 'dbem' ) . '">' . __('A user cancelled a booking','dbem'). '</a>' ); + } else { + return apply_filters( 'bp_em_format_cancelled_booking_notification', '<a href="' . $bp->loggedin_user->domain . $bp->events->slug . '/my-bookings/" title="' . __( 'My Bookings', 'dbem' ) . '">' . sprintf(__('%s users cancelled bookings.','dbem'), $total_items). '</a>' ); + } + break; + } + do_action( 'bp_em_format_notifications', $action, $item_id, $secondary_item_id, $total_items ); + + return false; +} + +/** + * Remove a screen notification for a user. + */ +function bp_em_remove_screen_notifications() { + global $bp; + bp_core_delete_notifications_by_type( $bp->loggedin_user->id, $bp->events->slug, 'attending' ); +} +add_action( 'bp_em_my_events', 'bp_em_remove_screen_notifications' ); +add_action( 'xprofile_screen_display_profile', 'bp_em_remove_screen_notifications' ); + +/** + * Catch booking saves and add a BP notification. + * @param boolean $result + * @param EM_Booking $EM_Booking + * @return boolean + */ +function bp_em_add_booking_notification($result, $EM_Booking){ + global $bp; + if( get_option('dbem_bookings_approval') && $EM_Booking->get_status() == 0 ){ + $action = 'pending_booking'; + }elseif( $EM_Booking->get_status() == 1 || (get_option('dbem_bookings_approval') && $EM_Booking->get_status() == 0) ){ + $action = 'confirmed_booking'; + }elseif( $EM_Booking->get_status() == 3 ){ + $action = 'cancelled_booking'; + } + if( !empty($action) ){ + bp_core_add_notification( $EM_Booking->booking_id, $EM_Booking->get_event()->get_contact()->ID, 'events', $action ); + } + return $result; +} +add_filter('em_booking_save','bp_em_add_booking_notification',1,2); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/bp-em-templatetags.php b/wp-content/plugins/events-manager/buddypress/bp-em-templatetags.php new file mode 100644 index 0000000..66a1ec6 --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/bp-em-templatetags.php @@ -0,0 +1,21 @@ +<?php +/** + * Echo the Events Manager BuddyPresss component's slug + * @since 5.0 + */ +function em_bp_slug() { + echo em_bp_get_slug(); +} + /** + * Return the Events Manager BuddyPresss component's slug + * + * @since 5.0 + * @uses apply_filters() Filter 'em_bp_get_slug' to change the output + * @return str $slug The slug from $bp->events->slug, if it exists + */ + function em_bp_get_slug() { + global $bp; + // Avoid PHP warnings, in case the value is not set for some reason + $slug = !empty( $bp->evebts->slug ) ? $bp->events->slug : BP_EM_SLUG; + return apply_filters( 'em_bp_get_slug', $slug ); + } \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/screens/attending.php b/wp-content/plugins/events-manager/buddypress/screens/attending.php new file mode 100644 index 0000000..8cf2f7f --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/screens/attending.php @@ -0,0 +1,29 @@ +<?php +/** + * bp_em_screen_two() + * + * Sets up and displays the screen output for the sub nav item "em/screen-two" + */ +function bp_em_attending() { + global $bp; + /** + * If the user has not Accepted or Rejected anything, then the code above will not run, + * we can continue and load the template. + */ + do_action( 'bp_em_attending' ); + + add_action( 'bp_template_title', 'bp_em_attending_title' ); + add_action( 'bp_template_content', 'bp_em_attending_content' ); + + /* Finally load the plugin template file. */ + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); +} + + function bp_em_attending_title() { + _e( 'Events I\'m Attending', 'dbem' ); + } + + function bp_em_attending_content() { + //We can use the same template as the public user interface for non bp sites + em_locate_template('templates/my-bookings.php',true); + } \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/screens/group-events.php b/wp-content/plugins/events-manager/buddypress/screens/group-events.php new file mode 100644 index 0000000..11f927e --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/screens/group-events.php @@ -0,0 +1,30 @@ +<?php +/** + * Controller for the event views in BP (using mvc terms here) + */ +function bp_em_group_events() { + global $bp; + do_action( 'bp_em_group_events' ); + + //plug into EM admin code (at least for now) + include_once(EM_DIR.'/admin/em-admin.php'); + + add_action( 'bp_template_title', 'bp_em_group_events_title' ); + add_action( 'bp_template_content', 'bp_em_group_events_content' ); + + /* Finally load the plugin template file. */ + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'groups/single/plugins' ) ); +} + +function bp_em_group_events_title() { + _e( 'Group Events', 'dbem' ); +} +/** + * Determines whether to show event page or events page, and saves any updates to the event or events + * @return null + */ +function bp_em_group_events_content() { + em_locate_template('buddypress/group-events.php', true); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/screens/my-bookings.php b/wp-content/plugins/events-manager/buddypress/screens/my-bookings.php new file mode 100644 index 0000000..804ec59 --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/screens/my-bookings.php @@ -0,0 +1,35 @@ +<?php +/** + * bp_em_screen_two() + * + * Sets up and displays the screen output for the sub nav item "em/screen-two" + */ +function bp_em_my_bookings() { + global $bp, $EM_Event; + + //assume any notifications here are considered viewed via this page + bp_core_delete_notifications_by_type(get_current_user_id(), 'events','pending_booking'); + bp_core_delete_notifications_by_type(get_current_user_id(), 'events','confirmed_booking'); + bp_core_delete_notifications_by_type(get_current_user_id(), 'events','cancelled_booking'); + + em_load_event(); + /** + * If the user has not Accepted or Rejected anything, then the code above will not run, + * we can continue and load the template. + */ + do_action( 'bp_em_my_bookings' ); + + add_action( 'bp_template_title', 'bp_em_my_bookings_title' ); + add_action( 'bp_template_content', 'bp_em_my_bookings_content' ); + + /* Finally load the plugin template file. */ + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); +} + +function bp_em_my_bookings_title() { + _e( 'My Event Bookings', 'dbem' ); +} + +function bp_em_my_bookings_content() { + em_locate_template('buddypress/my-bookings.php',true); +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/screens/my-events.php b/wp-content/plugins/events-manager/buddypress/screens/my-events.php new file mode 100644 index 0000000..852daa4 --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/screens/my-events.php @@ -0,0 +1,55 @@ +<?php +/** + * Controller for the event views in BP (using mvc terms here) + */ +function bp_em_my_events() { + global $bp, $EM_Event; + if( !is_object($EM_Event) && !empty($_REQUEST['event_id']) ){ + $EM_Event = new EM_Event($_REQUEST['event_id']); + } + + do_action( 'bp_em_my_events' ); + + $template_title = 'bp_em_my_events_title'; + $template_content = 'bp_em_my_events_content'; + + if( !empty($_GET['action']) ){ + switch($_GET['action']){ + case 'edit': + $template_title = 'bp_em_my_events_editor_title'; + break; + } + } + + add_action( 'bp_template_title', $template_title ); + add_action( 'bp_template_content', $template_content ); + + /* Finally load the plugin template file. */ + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); +} + +function bp_em_my_events_title() { + _e( 'My Events', 'dbem' ); +} + +/** + * Determines whether to show event page or events page, and saves any updates to the event or events + * @return null + */ +function bp_em_my_events_content() { + em_locate_template('buddypress/my-events.php', true); +} + +function bp_em_my_events_editor_title() { + global $EM_Event; + if( is_object($EM_Event) ){ + if($EM_Event->is_recurring()){ + _e( "Reschedule Events", 'dbem' )." '{$EM_Event->event_name}'"; + }else{ + _e ( "Edit Event", 'dbem' ) . " '" . $EM_Event->event_name . "'"; + } + }else{ + _e( 'Add Event', 'dbem' ); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/screens/my-group-events.php b/wp-content/plugins/events-manager/buddypress/screens/my-group-events.php new file mode 100644 index 0000000..5d7aaeb --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/screens/my-group-events.php @@ -0,0 +1,27 @@ +<?php +/** + * Controller for the event views in BP (using mvc terms here) + */ +function bp_em_my_group_events() { + global $bp; + do_action( 'bp_em_my_group_events' ); + + //plug into EM admin code (at least for now) + include_once(EM_DIR.'/admin/em-admin.php'); + + add_action( 'bp_template_title', 'bp_em_my_group_events_title' ); + add_action( 'bp_template_content', 'bp_em_my_group_events_content' ); + + /* Finally load the plugin template file. */ + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); +} + +function bp_em_my_group_events_title() { + _e( 'Group Events', 'dbem' ); +} + +function bp_em_my_group_events_content(){ + em_locate_template('buddypress/my-group-events.php', true); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/screens/my-locations.php b/wp-content/plugins/events-manager/buddypress/screens/my-locations.php new file mode 100644 index 0000000..d68fcde --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/screens/my-locations.php @@ -0,0 +1,51 @@ +<?php +/** + * Controller for the location views in BP (using mvc terms here) + */ +function bp_em_my_locations() { + global $bp, $EM_Location; + if( !is_object($EM_Location) && !empty($_REQUEST['location_id']) ){ + $EM_Location = new EM_Location($_REQUEST['location_id']); + } + + do_action( 'bp_em_my_locations' ); + + $template_title = 'bp_em_my_locations_title'; + $template_content = 'bp_em_my_locations_content'; + + if( !empty($_GET['action']) ){ + switch($_GET['action']){ + case 'edit': + $template_title = 'bp_em_my_locations_editor_title'; + break; + } + } + + add_action( 'bp_template_title', $template_title ); + add_action( 'bp_template_content', $template_content ); + + /* Finally load the plugin template file. */ + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); +} + +function bp_em_my_locations_title() { + _e( 'My Locations', 'dbem' ); +} + +/** + * Determines whether to show location page or locations page, and saves any updates to the location or locations + * @return null + */ +function bp_em_my_locations_content() { + em_locate_template('buddypress/my-locations.php', true); +} + +function bp_em_my_locations_editor_title() { + global $EM_Location; + if( empty($EM_Location) || !is_object($EM_Location) ){ + $title = __('Add Location', 'dbem'); + }else{ + $title = __('Edit Location', 'dbem'); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/buddypress/screens/profile.php b/wp-content/plugins/events-manager/buddypress/screens/profile.php new file mode 100644 index 0000000..0350aea --- /dev/null +++ b/wp-content/plugins/events-manager/buddypress/screens/profile.php @@ -0,0 +1,32 @@ +<?php +/** + * bp_em_screen_one() + * + * Sets up and displays the screen output for the sub nav item "em/screen-one" + */ +function bp_em_events() { + global $bp, $EM_Notices; + + if( bp_is_my_profile() ){ + $EM_Notices->add_info( __('You are currently viewing your public page, this is what other users will see.', 'dbem') ); + } + + /* Add a do action here, so your component can be extended by others. */ + do_action( 'bp_em_events' ); + + add_action( 'bp_template_title', 'bp_em_events_title' ); + add_action( 'bp_template_content', 'bp_em_events_content' ); + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); + //bp_core_load_template( apply_filters( 'bp_em_template_screen_one', 'em/screen-one' ) ); +} + /*** + * The second argument of each of the above add_action() calls is a function that will + * display the corresponding information. The functions are presented below: + */ + function bp_em_events_title() { + _e( 'Events', 'dbem' ); + } + + function bp_em_events_content() { + em_locate_template('buddypress/profile.php',true); + } \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-booking.php b/wp-content/plugins/events-manager/classes/em-booking.php new file mode 100644 index 0000000..73f58ed --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-booking.php @@ -0,0 +1,696 @@ +<?php +class EM_Booking extends EM_Object{ + //DB Fields + var $booking_id; + var $event_id; + var $person_id; + var $booking_price; + var $booking_spaces; + var $booking_comment; + var $booking_status = false; + var $booking_meta = array(); + var $fields = array( + 'booking_id' => array('name'=>'id','type'=>'%d'), + 'event_id' => array('name'=>'event_id','type'=>'%d'), + 'person_id' => array('name'=>'person_id','type'=>'%d'), + 'booking_price' => array('name'=>'price','type'=>'%f'), + 'booking_spaces' => array('name'=>'spaces','type'=>'%d'), + 'booking_comment' => array('name'=>'comment','type'=>'%s'), + 'booking_status' => array('name'=>'status','type'=>'%d'), + 'booking_meta' => array('name'=>'meta','type'=>'%s') + ); + //Other Vars + var $notes; //loaded from em_meta table in construct + var $timestamp; + var $person; + var $required_fields = array('booking_id', 'event_id', 'person_id', 'booking_spaces'); + var $feedback_message = ""; + var $errors = array(); + /** + * Contains an array of custom fields for a booking. This is loaded from em_meta, where the booking_custom name contains arrays of data. + * @var array + */ + var $custom = array(); + /** + * If saved in this instance, you can see what previous approval status was. + * @var int + */ + var $previous_status = false; + /** + * The booking approval status number corresponds to a state in this array. + * @var unknown_type + */ + var $status_array = array(); + /** + * @var EM_Tickets + */ + var $tickets; + /** + * @var EM_Event + */ + var $event; + /** + * @var EM_Tickets_Bookings + */ + var $tickets_bookings; + /** + * If set to true, this booking can be managed by any logged in user. + * @var EM_Tickets_Bookings + */ + var $manage_override; + + /** + * Creates booking object and retreives booking data (default is a blank booking object). Accepts either array of booking data (from db) or a booking id. + * @param mixed $booking_data + * @return null + */ + function EM_Booking( $booking_data = false ){ + //Get the person for this booking + global $wpdb; + if( $booking_data !== false ){ + //Load booking data + $booking = array(); + if( is_array($booking_data) ){ + $booking = $booking_data; + }elseif( is_numeric($booking_data) ){ + //Retreiving from the database + $sql = "SELECT * FROM ". EM_BOOKINGS_TABLE ." LEFT JOIN ". EM_META_TABLE ." ON object_id=booking_id WHERE booking_id ='$booking_data'"; + $booking = $wpdb->get_row($sql, ARRAY_A); + } + //booking meta + $booking['booking_meta'] = (!empty($booking['booking_meta'])) ? unserialize($booking['booking_meta']):array(); + //Save into the object + $this->to_object($booking); + $this->previous_status = $this->booking_status; + $this->get_person(); + $this->timestamp = !empty($booking['booking_date']) ? strtotime($booking['booking_date']):false; + } + //Do it here so things appear in the po file. + $this->status_array = array( + 0 => __('Pending','dbem'), + 1 => __('Approved','dbem'), + 2 => __('Rejected','dbem'), + 3 => __('Cancelled','dbem'), + 4 => __('Awaiting Online Payment','dbem'), + 5 => __('Awaiting Payment','dbem') + ); + $this->compat_keys(); + do_action('em_booking', $this, $booking_data); + } + + function get_notes(){ + global $wpdb; + if( !is_array($this->notes) && !empty($this->booking_id) ){ + $notes = $wpdb->get_results("SELECT * FROM ". EM_META_TABLE ." WHERE meta_key='booking-note' AND object_id ='{$this->booking_id}'", ARRAY_A); + $this->notes = array(); + foreach($notes as $note){ + $this->notes[] = unserialize($note['meta_value']); + } + }elseif( empty($this->booking_id) ){ + $this->notes = array(); + } + return $this->notes; + } + + /** + * Saves the booking into the database, whether a new or existing booking + * @param $mail whether or not to email the user and contact people + * @return boolean + */ + function save($mail = true){ + global $wpdb; + $table = EM_BOOKINGS_TABLE; + do_action('em_booking_save_pre',$this); + if( $this->validate() ){ + if( $this->can_manage() ){ + $this->person_id = (empty($this->person_id)) ? $this->get_person()->ID : $this->person_id; + //Step 1. Save the booking + $data = $this->to_array(); + $data['booking_meta'] = serialize($data['booking_meta']); + if($this->booking_id != ''){ + $update = true; + //update price and spaces + $this->get_spaces(true); + $this->get_price(true); + $where = array( 'booking_id' => $this->booking_id ); + $result = $wpdb->update($table, $data, $where, $this->get_types($data)); + $result = ($result !== false); + $this->feedback_message = __('Changes saved','dbem'); + }else{ + $update = false; + $result = $wpdb->insert($table, $data, $this->get_types($data)); + $this->booking_id = $wpdb->insert_id; + $this->feedback_message = __('Your booking has been recorded','dbem'); + } + //Step 2. Insert ticket bookings for this booking id if no errors so far + if( $result === false ){ + $this->feedback_message = __('There was a problem saving the booking.', 'dbem'); + $this->errors[] = __('There was a problem saving the booking.', 'dbem'); + }else{ + $tickets_bookings_result = $this->get_tickets_bookings()->save(); + if( !$tickets_bookings_result ){ + if( !$update ){ + //delete the booking and tickets, instead of a transaction + $this->delete(); + } + $this->errors[] = __('There was a problem saving the booking.', 'dbem'); + $this->add_error( $this->get_tickets_bookings()->get_errors() ); + } + } + //Step 3. email if necessary + if ( count($this->errors) == 0 && $mail ) { + $this->email(); + } + $this->compat_keys(); + return apply_filters('em_booking_save', ( count($this->errors) == 0 ), $this); + }else{ + $this->feedback_message = __('There was a problem saving the booking.', 'dbem'); + if( !$this->can_manage() ){ + $this->feedback_message = sprintf(__('You cannot manage this %s.', 'dbem'),__('Booking','dbem')); + } + } + }else{ + $this->feedback_message = __('There was a problem saving the booking.', 'dbem'); + if( !$this->can_manage() ){ + $this->feedback_message = sprintf(__('You cannot manage this %s.', 'dbem'),__('Booking','dbem')); + } + } + return apply_filters('em_booking_save', false, $this); + } + + /** + * Load an record into this object by passing an associative array of table criterie to search for. + * Returns boolean depending on whether a record is found or not. + * @param $search + * @return boolean + */ + function get($search) { + global $wpdb; + $conds = array(); + foreach($search as $key => $value) { + if( array_key_exists($key, $this->fields) ){ + $value = $wpdb->escape($value); + $conds[] = "`$key`='$value'"; + } + } + $sql = "SELECT * FROM ". $wpdb->EM_BOOKINGS_TABLE ." WHERE " . implode(' AND ', $conds) ; + $result = $wpdb->get_row($sql, ARRAY_A); + if($result){ + $this->to_object($result); + $this->person = new EM_Person($this->person_id); + return true; + }else{ + return false; + } + } + + /** + * Get posted data and save it into the object (not db) + * @return boolean + */ + function get_post( $override_availability = false ){ + $this->tickets_bookings = new EM_Tickets_Bookings($this->booking_id); + do_action('em_booking_get_post_pre',$this); + $result = array(); + $this->event_id = $_REQUEST['event_id']; + if( isset($_REQUEST['em_tickets']) && is_array($_REQUEST['em_tickets']) && ($_REQUEST['em_tickets'] || $override_availability) ){ + foreach( $_REQUEST['em_tickets'] as $ticket_id => $values){ + //make sure ticket exists + if( !empty($values['spaces']) || $override_availability ){ + $args = array('ticket_id'=>$ticket_id, 'ticket_booking_spaces'=>$values['spaces'], 'booking_id'=>$this->booking_id); + if($this->get_event()->get_bookings()->ticket_exists($ticket_id)){ + $EM_Ticket_Booking = new EM_Ticket_Booking($args); + $EM_Ticket_Booking->booking = $this; + $this->tickets_bookings->add( $EM_Ticket_Booking, $override_availability ); + }else{ + $this->errors[]=__('You are trying to book a non-existent ticket for this event.','dbem'); + } + } + } + $this->booking_comment = (!empty($_REQUEST['booking_comment'])) ? wp_kses_data(stripslashes($_REQUEST['booking_comment'])):''; + $this->get_spaces(true); + $this->get_price(true, false, false); + $this->get_person(); + $this->compat_keys(); + } + return apply_filters('em_booking_get_post',$this->validate(),$this); + } + + function validate(){ + //step 1, basic info + $basic = ( + (empty($this->event_id) || is_numeric($this->event_id)) && + (empty($this->person_id) || is_numeric($this->person_id)) && + is_numeric($this->booking_spaces) && $this->booking_spaces > 0 + ); + //give some errors in step 1 + if( $this->booking_spaces == 0 ){ + $this->add_error(get_option('dbem_booking_feedback_min_space')); + } + //step 2, tickets bookings info + if( count($this->get_tickets_bookings()) > 0 ){ + $ticket_validation = array(); + foreach($this->get_tickets_bookings()->tickets_bookings as $EM_Ticket_Booking){ + if ( !$EM_Ticket_Booking->validate() ){ + $ticket_validation[] = false; + $result = $basic && !in_array(false,$ticket_validation); + } + $this->errors = array_merge($this->errors, $EM_Ticket_Booking->get_errors()); + } + $result = $basic && !in_array(false,$ticket_validation); + }else{ + $result = false; + } + return apply_filters('em_booking_validate',$result,$this); + } + + /** + * Get the total number of spaces booked in THIS booking. Seting $force_refresh to true will recheck spaces, even if previously done so. + * @param unknown_type $force_refresh + * @return mixed + */ + function get_spaces( $force_refresh=false ){ + if($this->booking_spaces == 0 || $force_refresh == true ){ + $this->booking_spaces = $this->get_tickets_bookings()->get_spaces($force_refresh); + } + return apply_filters('em_booking_get_spaces',$this->booking_spaces,$this); + } + + /** + * Gets the total price for this whole booking. Seting $force_reset to true will recheck spaces, even if previously done so. + * @param boolean $force_refresh + * @param boolean $format + * @param boolean $add_tax + * @return float + */ + function get_price( $force_refresh=false, $format=false, $add_tax='x' ){ + if($force_refresh || $this->booking_price == 0 || $add_tax !== 'x' || get_option('dbem_bookings_tax_auto_add')){ + $this->booking_price = $this->get_tickets_bookings()->get_price($force_refresh, false, $add_tax); + $this->booking_price = apply_filters('em_booking_get_price', $this->booking_price, $this, $add_tax); + } + if($format){ + return em_get_currency_formatted($this->booking_price); + } + return $this->booking_price; + } + + /** + * Gets the event this booking belongs to and saves a refernece in the event property + * @return EM_Event + */ + function get_event(){ + global $EM_Event; + if( is_object($this->event) && get_class($this->event)=='EM_Event' && $this->event->event_id == $this->event_id ){ + return $this->event; + }elseif( is_object($EM_Event) && ( (is_object($this->event) && $this->event->event_id == $this->event_id) || empty($this->booking_id)) ){ + $this->event = $EM_Event; + }else{ + $this->event = new EM_Event($this->event_id, 'event_id'); + } + return apply_filters('em_booking_get_event',$this->event); + } + + /** + * Gets the ticket object this booking belongs to, saves a reference in ticket property + * @return EM_Tickets + */ + function get_tickets(){ + if( is_object($this->tickets) && get_class($this->tickets)=='EM_Tickets' ){ + return apply_filters('em_booking_get_tickets', $this->tickets, $this); + }else{ + $this->tickets = new EM_Tickets($this); + } + return apply_filters('em_booking_get_tickets', $this->tickets, $this); + } + + /** + * Gets the ticket object this booking belongs to, saves a reference in ticket property + * @return EM_Tickets_Bookings + */ + function get_tickets_bookings(){ + global $wpdb; + if( !is_object($this->tickets_bookings) || get_class($this->tickets_bookings)!='EM_Tickets_Bookings'){ + $this->tickets_bookings = new EM_Tickets_Bookings($this); + } + return apply_filters('em_booking_get_tickets_bookings', $this->tickets_bookings, $this); + } + + function get_person(){ + global $EM_Person; + if( is_object($this->person) && get_class($this->person)=='EM_Person' && ($this->person->ID == $this->person_id || empty($this->person_id) ) ){ + //This person is already included, so don't do anything + }elseif( is_object($EM_Person) && ($EM_Person->ID === $this->person_id || $this->booking_id == '') ){ + $this->person = $EM_Person; + }elseif( is_numeric($this->person_id) ){ + $this->person = new EM_Person($this->person_id); + }else{ + $this->person = new EM_Person(0); + } + //if this user is the parent user of disabled registrations, replace user details here: + if( get_option('dbem_bookings_registration_disable') && $this->person->ID == get_option('dbem_bookings_registration_user') ){ + //override any registration data into the person objet + if( !empty($this->booking_meta['registration']) ){ + foreach($this->booking_meta['registration'] as $key => $value){ + $this->person->$key = $value; + } + } + $this->person->user_email = ( !empty($this->booking_meta['registration']['user_email']) ) ? $this->booking_meta['registration']['user_email']:$this->person->user_email; + if( !empty($this->booking_meta['registration']['user_name']) ){ + $name_string = explode(' ',$this->booking_meta['registration']['user_name']); + $this->booking_meta['registration']['first_name'] = array_shift($name_string); + $this->booking_meta['registration']['last_name'] = implode(' ', $name_string); + } + $this->person->user_firstname = ( !empty($this->booking_meta['registration']['first_name']) ) ? $this->booking_meta['registration']['first_name']:__('Guest User','dbem'); + $this->person->first_name = $this->person->user_firstname; + $this->person->user_lastname = ( !empty($this->booking_meta['registration']['last_name']) ) ? $this->booking_meta['registration']['last_name']:''; + $this->person->last_name = $this->person->user_lastname; + $this->person->phone = ( !empty($this->booking_meta['registration']['dbem_phone']) ) ? $this->booking_meta['registration']['dbem_phone']:__('Not Supplied','dbem'); + //build display name + $full_name = $this->person->user_firstname . " " . $this->person->user_lastname ; + $full_name = trim($full_name); + $display_name = ( empty($full_name) ) ? __('Guest User','dbem'):$full_name; + $this->person->display_name = $display_name; + } + return apply_filters('em_booking_get_person', $this->person, $this); + } + + /** + * Returns a string representation of the booking's status + * @return string + */ + function get_status(){ + $status = ($this->booking_status == 0 && !get_option('dbem_bookings_approval') ) ? 1:$this->booking_status; + return apply_filters('em_booking_get_status', $this->status_array[$status], $this); + } + + /** + * I wonder what this does.... + * @return boolean + */ + function delete(){ + global $wpdb; + $result = false; + if( $this->can_manage('manage_bookings','manage_others_bookings') ){ + $sql = $wpdb->prepare("DELETE FROM ". EM_BOOKINGS_TABLE . " WHERE booking_id=%d", $this->booking_id); + $result = $wpdb->query( $sql ); + if( $result !== false ){ + //delete the tickets too + $this->get_tickets_bookings()->delete(); + $this->previous_status = $this->booking_status; + $this->booking_status = false; + $this->feedback_message = sprintf(__('%s deleted', 'dbem'), __('Booking','dbem')); + }else{ + $this->add_error(sprintf(__('%s could not be deleted', 'dbem'), __('Booking','dbem'))); + } + } + return apply_filters('em_booking_delete',( $result !== false ), $this); + } + + function cancel($email = true){ + if( $this->person->ID == get_current_user_id() ){ + $this->manage_override = true; //normally, users can't manage a bookiing, only event owners, so we allow them to mod their booking status in this case only. + } + return $this->set_status(3, $email); + } + + /** + * Approve a booking. + * @return bool + */ + function approve($email = true, $ignore_spaces = false){ + return $this->set_status(1, $email, $ignore_spaces); + } + /** + * Reject a booking and save + * @return bool + */ + function reject($email = true){ + return $this->set_status(2, $email); + } + /** + * Unpprove a booking. + * @return bool + */ + function unapprove($email = true){ + return $this->set_status(0, $email); + } + + /** + * Change the status of the booking. This will save to the Database too. + * @param int $status + * @return boolean + */ + function set_status($status, $email = true, $ignore_spaces = false){ + global $wpdb; + $action_string = strtolower($this->status_array[$status]); + //if we're approving we can't approve a booking if spaces are full, so check before it's approved. + if(!$ignore_spaces && $status == 1){ + if( $this->get_event()->get_bookings()->get_available_spaces() < $this->get_spaces() && !get_option('dbem_bookings_approval_overbooking') ){ + $this->feedback_message = sprintf(__('Not approved, spaces full.','dbem'), $action_string); + return apply_filters('em_booking_set_status', false, $this); + } + } + $this->previous_status = $this->booking_status; + $this->booking_status = $status; + $result = $wpdb->query($wpdb->prepare('UPDATE '.EM_BOOKINGS_TABLE.' SET booking_status=%d WHERE booking_id=%d', array($status, $this->booking_id))); + if($result !== false){ + $this->feedback_message = sprintf(__('Booking %s.','dbem'), $action_string); + if( $email ){ + if( $this->email() ){ + $this->feedback_message .= " ".__('Mail Sent.','dbem'); + }elseif( $this->previous_status == 0 ){ + //extra errors may be logged by email() in EM_Object + $this->feedback_message .= ' <span style="color:red">'.__('ERROR : Mail Not Sent.','dbem').'</span>'; + $this->add_error(__('ERROR : Mail Not Sent.','dbem')); + $result = false; + } + } + }else{ + //errors should be logged by save() + $this->feedback_message = sprintf(__('Booking could not be %s.','dbem'), $action_string); + $this->add_error(sprintf(__('Booking could not be %s.','dbem'), $action_string)); + } + return apply_filters('em_booking_set_status', $result, $this); + } + + /** + * Add a booking note to this booking. returns wpdb result or false if use can't manage this event. + * @param string $note + * @return mixed + */ + function add_note( $note_text ){ + global $wpdb; + if( $this->can_manage() ){ + $this->get_notes(); + $note = array('author'=>get_current_user_id(),'note'=>$note_text,'timestamp'=>current_time('timestamp')); + $this->notes[] = $note; + $this->feedback_message = __('Booking note successfully added.','dbem'); + return $wpdb->insert(EM_META_TABLE, array('object_id'=>$this->booking_id, 'meta_key'=>'booking-note', 'meta_value'=> serialize($note)),array('%d','%s','%s')); + } + return false; + } + + function output($format, $target="html") { + preg_match_all("/(#@?_?[A-Za-z0-9]+)({([^}]+)})?/", $format, $placeholders); + foreach( $this->get_tickets() as $EM_Ticket){ break; } //Get first ticket for single ticket placeholders + $output_string = $format; + $replaces = array(); + foreach($placeholders[1] as $key => $result) { + $replace = ''; + $full_result = $placeholders[0][$key]; + switch( $result ){ + case '#_BOOKINGID': + $replace = $this->booking_id; + break; + case '#_RESPNAME' : //Depreciated + case '#_BOOKINGNAME': + $replace = $this->get_person()->get_name(); + break; + case '#_RESPEMAIL' : //Depreciated + case '#_BOOKINGEMAIL': + $replace = $this->get_person()->user_email; + break; + case '#_RESPPHONE' : //Depreciated + case '#_BOOKINGPHONE': + $replace = $this->get_person()->phone; + break; + case '#_BOOKINGSPACES': + $replace = $this->get_spaces(); + break; + case '#_BOOKINGLISTURL': + $replace = em_get_my_bookings_url(); + break; + case '#_COMMENT' : //Depreciated + case '#_BOOKINGCOMMENT': + $replace = $this->booking_comment; + break; + case '#_BOOKINGPRICEWITHTAX': + $replace = em_get_currency_symbol(true)." ". number_format($this->get_price(false,false,true),2); + break; + case '#_BOOKINGPRICEWITHOUTTAX': + $replace = em_get_currency_symbol(true)." ". number_format($this->get_price(false,false,false),2); + break; + case '#_BOOKINGPRICETAX': + $replace = em_get_currency_symbol(true)." ". number_format($this->get_price(false,false,false)*(get_option('dbem_bookings_tax')/100),2); + break; + case '#_BOOKINGPRICE': + $replace = em_get_currency_symbol(true)." ". number_format($this->get_price(),2); + break; + case '#_BOOKINGTICKETNAME': + $replace = $EM_Ticket->name; + break; + case '#_BOOKINGTICKETDESCRIPTION': + $replace = $EM_Ticket->description; + break; + case '#_BOOKINGTICKETPRICEWITHTAX': + $replace = em_get_currency_symbol(true)." ". number_format($EM_Ticket->get_price(false,true),2); + break; + case '#_BOOKINGTICKETPRICEWITHOUTTAX': + $replace = em_get_currency_symbol(true)." ". number_format($EM_Ticket->get_price(false,false),2); + break; + case '#_BOOKINGTICKETTAX': + $replace = em_get_currency_symbol(true)." ". number_format($EM_Ticket->get_price(false,false)*(get_option('dbem_bookings_tax')/100),2); + break; + case '#_BOOKINGTICKETPRICE': + $replace = em_get_currency_symbol(true)." ". number_format($EM_Ticket->get_price(),2); + break; + case '#_BOOKINGTICKETS': + ob_start(); + em_locate_template('emails/bookingtickets.php', true, array('EM_Booking'=>$this)); + $replace = ob_get_clean(); + break; + default: + $replace = $full_result; + break; + } + $replaces[$full_result] = apply_filters('em_booking_output_placeholder', $replace, $this, $full_result, $target); + } + //sort out replacements so that during replacements shorter placeholders don't overwrite longer varieties. + krsort($replaces); + foreach($replaces as $full_result => $replacement){ + $output_string = str_replace($full_result, $replacement , $output_string ); + } + //run event output too, since this is never run from within events and will not infinitely loop + $output_string = $this->get_event()->output($output_string, $target); + return apply_filters('em_booking_output', $output_string, $this, $format, $target); + } + + /** + * @param EM_Booking $EM_Booking + * @param EM_Event $event + * @return boolean + */ + function email( $email_admin = true, $force_resend = false ){ + global $EM_Mailer; + $result = true; + + //FIXME ticket logic needed + $EM_Event = $this->get_event(); //We NEED event details here. + $EM_Event->get_bookings(true); //refresh all bookings + + //Make sure event matches booking, and that booking used to be approved. + if( $this->booking_status !== $this->previous_status || $force_resend ){ + $msg = array( 'user'=> array('subject'=>'', 'body'=>''), 'admin'=> array('subject'=>'', 'body'=>'')); //blank msg template + + //admin messages won't change whether pending or already approved + switch( $this->booking_status ){ + case 0: + case 5: //TODO remove offline status from here and move to pro + $msg['user']['subject'] = get_option('dbem_bookings_email_pending_subject'); + $msg['user']['body'] = get_option('dbem_bookings_email_pending_body'); + //admins should get something (if set to) + $msg['admin']['subject'] = get_option('dbem_bookings_contact_email_subject'); + $msg['admin']['body'] = get_option('dbem_bookings_contact_email_body'); + break; + case 1: + $msg['user']['subject'] = get_option('dbem_bookings_email_confirmed_subject'); + $msg['user']['body'] = get_option('dbem_bookings_email_confirmed_body'); + //admins should get something (if set to) + $msg['admin']['subject'] = get_option('dbem_bookings_contact_email_subject'); + $msg['admin']['body'] = get_option('dbem_bookings_contact_email_body'); + break; + case 2: + $msg['user']['subject'] = get_option('dbem_bookings_email_rejected_subject'); + $msg['user']['body'] = get_option('dbem_bookings_email_rejected_body'); + break; + case 3: + $msg['user']['subject'] = get_option('dbem_bookings_email_cancelled_subject'); + $msg['user']['body'] = get_option('dbem_bookings_email_cancelled_body'); + //admins should get something (if set to) + $msg['admin']['subject'] = get_option('dbem_contactperson_email_cancelled_subject'); + $msg['admin']['body'] = get_option('dbem_contactperson_email_cancelled_body'); + break; + } + //messages can be overriden just before being sent + $msg = apply_filters('em_booking_email_messages', $msg, $this); + $output_type = get_option('dbem_smtp_html') ? 'html':'email'; + + //Send user (booker) emails + if( !empty($msg['user']['subject']) ){ + $msg['user']['subject'] = $this->output($msg['user']['subject'], $output_type); + $msg['user']['body'] = $this->output($msg['user']['body'], $output_type); + if( get_option('dbem_smtp_html') && get_option('dbem_smtp_html_br', 1) ){ + $msg['user']['body'] = nl2br($msg['user']['body']); + } + //Send to the person booking + if( !$this->email_send( $msg['user']['subject'], $msg['user']['body'], $this->get_person()->user_email) ){ + $result = false; + } + } + + //Send admin/contact emails if this isn't the event owner or an events admin + if( $email_admin && !empty($msg['admin']['subject']) && (!$this->can_manage() || (!empty($_REQUEST['action']) && $_REQUEST['action'] == 'booking_add') || $this->manage_override) ){ //emails won't be sent if admin is logged in unless they book themselves + if( get_option('dbem_bookings_contact_email') == 1 || get_option('dbem_bookings_notify_admin') ){ + //Only gets sent if this is a pending booking, unless approvals are disabled. + $msg['admin']['subject'] = $this->output($msg['admin']['subject'], $output_type); + $msg['admin']['body'] = $this->output($msg['admin']['body'], $output_type); + if( get_option('dbem_smtp_html') && get_option('dbem_smtp_html_br', 1) ){ + $msg['admin']['body'] = nl2br($msg['admin']['body']); + } + //email contact + if( get_option('dbem_bookings_contact_email') == 1 ){ + if( !$this->email_send( $msg['admin']['subject'], $msg['admin']['body'], $EM_Event->get_contact()->user_email) && current_user_can('activate_plugins')){ + $this->errors[] = __('Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning).','dbem'); + $result = false; + } + } + //email admin + if( get_option('dbem_bookings_notify_admin') != '' && preg_match('/^([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3},?)+$/', get_option('dbem_bookings_notify_admin')) ){ + $admin_emails = get_option('dbem_bookings_notify_admin'); + $admin_emails = explode(',', $admin_emails); //supply emails as array + if( !$this->email_send( $msg['admin']['subject'], $msg['admin']['body'], $admin_emails) ){ + $this->errors[] = __('Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning).','dbem'); + $result = false; + } + } + } + } + } + return $result; + //TODO need error checking for booking mail send + } + + /** + * Can the user manage this event? + */ + function can_manage(){ + return $this->get_event()->can_manage('manage_bookings','manage_others_bookings') || empty($this->booking_id) || !empty($this->manage_override); + } + + /** + * Returns this object in the form of an array + * @return array + */ + function to_array($person = false){ + $booking = array(); + //Core Data + $booking = parent::to_array(); + //Person Data + if($person && is_object($this->person)){ + $person = $this->person->to_array(); + $booking = array_merge($booking, $person); + } + return $booking; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-bookings-table.php b/wp-content/plugins/events-manager/classes/em-bookings-table.php new file mode 100644 index 0000000..75bf03f --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-bookings-table.php @@ -0,0 +1,623 @@ +<?php +//Builds a table of bookings, still work in progress... +class EM_Bookings_Table{ + /** + * associative array of collumns that'll be shown in order from left to right + * + * * key - collumn name in the databse, what will be used when searching + * * value - label for use in collumn headers + * @var array + */ + public $cols = array('user_name','event_name','booking_spaces','booking_status','booking_price','actions'); + /** + * Asoociative array of available collumn keys and corresponding headers, which will be used to display this table of bookings + * @var unknown_type + */ + public $cols_template = array(); + public $sortable_cols = array('booking_date'); + /** + * Object we're viewing bookings in relation to. + * @var object + */ + public $cols_view; + /** + * Index key used for looking up status information we're filtering in the booking table + * @var string + */ + public $string = 'needs-attention'; + /** + * Associative array of status information. + * + * * key - status index value + * * value - associative array containing keys + * ** label - the label for use in filter forms + * ** search - array or integer status numbers to search + * + * @var array + */ + public $statuses = array(); + /** + * Maximum number of rows to show + * @var int + */ + public $limit = 20; + public $order = 'ASC'; + public $orderby = 'booking_name'; + public $page = 1; + public $offset = 0; + public $scope = 'future'; + public $show_tickets = false; + + function __construct($show_tickets = false){ + $this->statuses = array( + 'all' => array('label'=>__('All','dbem'), 'search'=>false), + 'pending' => array('label'=>__('Pending','dbem'), 'search'=>0), + 'confirmed' => array('label'=>__('Confirmed','dbem'), 'search'=>1), + 'cancelled' => array('label'=>__('Cancelled','dbem'), 'search'=>2), + 'rejected' => array('label'=>__('Rejected','dbem'), 'search'=>3), + 'needs-attention' => array('label'=>__('Needs Attention','dbem'), 'search'=>array(0)), + 'incomplete' => array('label'=>__('Incomplete Bookings','dbem'), 'search'=>array(0)) + ); + if( !get_option('dbem_bookings_approval') ){ + unset($this->statuses['pending']); + unset($this->statuses['incomplete']); + $this->statuses['confirmed']['search'] = array(0,1); + } + //Set basic vars + $this->order = ( !empty($_REQUEST ['order']) ) ? $_REQUEST ['order']:'ASC'; + $this->orderby = ( !empty($_REQUEST ['order']) ) ? $_REQUEST ['order']:'booking_name'; + $this->limit = ( !empty($_REQUEST['limit']) ) ? $_REQUEST['limit'] : 20;//Default limit + $this->page = ( !empty($_REQUEST['pno']) ) ? $_REQUEST['pno']:1; + $this->offset = ( $this->page > 1 ) ? ($this->page-1)*$this->limit : 0; + $this->scope = ( !empty($_REQUEST['scope']) && array_key_exists($_REQUEST ['scope'], em_get_scopes()) ) ? $_REQUEST ['scope']:get_option('dbem_default_bookings_search','future'); + $this->status = ( !empty($_REQUEST['status']) && array_key_exists($_REQUEST['status'], $this->statuses) ) ? $_REQUEST['status']:get_option('dbem_default_bookings_search','needs-attention'); + //build template of possible collumns + $this->cols_template = apply_filters('em_bookings_table_cols_template', array( + 'user_name'=>__('Name','dbem'), + 'event_name'=>__('Event','dbem'), + 'event_date'=>__('Event Date(s)','dbem'), + 'event_time'=>__('Event Time(s)','dbem'), + 'user_email'=>__('E-mail','dbem'), + 'dbem_phone'=>__('Phone Number','dbem'), + 'booking_spaces'=>__('Spaces','dbem'), + 'booking_status'=>__('Status','dbem'), + 'booking_date'=>__('Booking Date','dbem'), + 'booking_price'=>__('Total','dbem'), + 'booking_id'=>__('Booking ID','dbem') + ), $this); + $this->cols_tickets_template = apply_filters('em_bookings_table_cols_tickets_template', array( + 'ticket_name'=>__('Ticket Name','dbem'), + 'ticket_description'=>__('Ticket Description','dbem'), + 'ticket_price'=>__('Ticket Price','dbem'), + 'ticket_id'=>__('Ticket ID','dbem') + ), $this); + //add tickets to template if we're showing rows by booking-ticket + if( $show_tickets ){ + $this->show_tickets = true; + $this->cols = array('user_name','event_name','ticket_name','ticket_price','booking_spaces','booking_status','actions'); + $this->cols_template = array_merge( $this->cols_template, $this->cols_tickets_template); + } + $this->cols_template['actions'] = __('Actions','dbem'); + //calculate collumns if post requests + if( !empty($_REQUEST ['cols']) && !is_array($_REQUEST ['cols']) ){ + $this->cols = explode(',',$_REQUEST['cols']); + }elseif( !empty($_REQUEST ['cols']) ){ + $this->cols = $_REQUEST['cols']; + } + //load collumn view settings + if( $this->get_person() !== false ){ + $this->cols_view = $this->get_person(); + }elseif( $this->get_ticket() !== false ){ + $this->cols_view = $this->get_ticket(); + }elseif( $this->get_event() !== false ){ + $this->cols_view = $this->get_event(); + } + foreach($this->cols as $col_key){ + if( !array_key_exists($col_key, $this->cols_template)){ + unset($this->cols[$col_key]); + } + } + //save collumns depending on context and user preferences + if( empty($_REQUEST['cols']) ){ + if(!empty($this->cols_view) && is_object($this->cols_view)){ + //check if user has settings for object type + $settings = get_user_meta(get_current_user_id(), 'em_bookings_view-'.get_class($this->cols_view), true ); + }else{ + $settings = get_user_meta(get_current_user_id(), 'em_bookings_view', true ); + } + if( !empty($settings) ){ + $this->cols = $settings; + } + }elseif( !empty($_REQUEST['cols']) && empty($_REQUEST['no_save']) ){ //save view settings for next time + if( !empty($this->cols_view) && is_object($this->cols_view) ){ + update_user_meta(get_current_user_id(), 'em_bookings_view-'.get_class($this->cols_view), $this->cols ); + }else{ + update_user_meta(get_current_user_id(), 'em_bookings_view', $this->cols ); + } + } + do_action('em_bookings_table', $this); + } + + + /** + * @return EM_Person|false + */ + function get_person(){ + global $EM_Person; + if( !empty($this->person) && is_object($this->person) ){ + return $this->person; + }elseif( !empty($_REQUEST['person_id']) && !empty($EM_Person) && is_object($EM_Person) ){ + return $EM_Person; + } + return false; + } + /** + * @return EM_Ticket|false + */ + function get_ticket(){ + global $EM_Ticket; + if( !empty($this->ticket) && is_object($this->ticket) ){ + return $this->ticket; + }elseif( !empty($EM_Ticket) && is_object($EM_Ticket) ){ + return $EM_Ticket; + } + return false; + } + /** + * @return $EM_Event|false + */ + function get_event(){ + global $EM_Event; + if( !empty($this->event) && is_object($this->event) ){ + return $this->event; + }elseif( !empty($EM_Event) && is_object($EM_Event) ){ + return $EM_Event; + } + return false; + } + + function get_bookings($force_refresh = true){ + if( empty($this->bookings) || $force_refresh ){ + $this->events = array(); + $EM_Ticket = $this->get_ticket(); + $EM_Event = $this->get_event(); + $EM_Person = $this->get_person(); + if( $EM_Person !== false ){ + $args = array('person'=>$EM_Person->ID,'scope'=>$this->scope,'status'=>$this->get_status_search(),'order'=>$this->order,'orderby'=>$this->orderby); + $this->bookings_count = EM_Bookings::count($args); + $this->bookings = EM_Bookings::get(array_merge($args, array('limit'=>$this->limit,'offset'=>$this->offset))); + foreach($this->bookings->bookings as $EM_Booking){ + //create event + if( !array_key_exists($EM_Booking->event_id,$this->events) ){ + $this->events[$EM_Booking->event_id] = new EM_Event($EM_Booking->event_id); + } + } + }elseif( $EM_Ticket !== false ){ + //searching bookings with a specific ticket + $this->bookings = $EM_Ticket->get_bookings(); + $this->bookings_count = (is_array($this->bookings->bookings)) ? count($this->bookings->bookings):0; + $this->events[$EM_Ticket->event_id] = $EM_Ticket->get_event(); + }elseif( $EM_Event !== false ){ + //bookings for an event + $args = array('event'=>$EM_Event->event_id,'scope'=>false,'status'=>$this->get_status_search(),'order'=>$this->order,'orderby'=>$this->orderby); + $args['owner'] = !current_user_can('manage_others_bookings') ? get_current_user_id() : false; + $this->bookings_count = EM_Bookings::count($args); + $this->bookings = EM_Bookings::get(array_merge($args, array('limit'=>$this->limit,'offset'=>$this->offset))); + $this->events[$EM_Event->event_id] = $EM_Event; + }else{ + //all bookings for a status + $args = array('status'=>$this->get_status_search(),'scope'=>$this->scope,'order'=>$this->order,'orderby'=>$this->orderby); + $args['owner'] = !current_user_can('manage_others_bookings') ? get_current_user_id() : false; + $this->bookings_count = EM_Bookings::count($args); + $this->bookings = EM_Bookings::get(array_merge($args, array('limit'=>$this->limit,'offset'=>$this->offset))); + //Now let's create events and bookings for this instead of giving each booking an event + foreach($this->bookings->bookings as $EM_Booking){ + //create event + if( !array_key_exists($EM_Booking->event_id,$this->events) ){ + $this->events[$EM_Booking->event_id] = new EM_Event($EM_Booking->event_id); + } + } + } + } + return $this->bookings; + } + + function get_count(){ + return $this->bookings_count; + } + + function get_status_search(){ + if(is_array($this->statuses[$this->status]['search'])){ + return implode(',',$this->statuses[$this->status]['search']); + } + return $this->statuses[$this->status]['search']; + } + + function output(){ + do_action('em_bookings_table_header',$this); //won't be overwritten by JS + $this->output_overlays(); + $this->output_table(); + do_action('em_bookings_table_footer',$this); //won't be overwritten by JS + } + + function output_overlays(){ + $EM_Ticket = $this->get_ticket(); + $EM_Event = $this->get_event(); + $EM_Person = $this->get_person(); + ?> + <div id="em-bookings-table-settings" class="em-bookings-table-overlay" style="display:none;" title="<?php _e('Bookings Table Settings','dbem'); ?>"> + <form id="em-bookings-table-settings-form" class="em-bookings-table-form" action="" method="post"> + <p><?php _e('Modify what information is displayed in this booking table.','dbem') ?></p> + <div id="em-bookings-table-settings-form-cols"> + <p> + <strong><?php _e('Collumns to show','dbem')?></strong><br /> + <?php _e('Drag items to or from the left collumn to add or remove them.','dbem'); ?> + </p> + <ul id="em-bookings-cols-active" class="em-bookings-cols-sortable"> + <?php foreach( $this->cols as $col_key ): ?> + <li class="ui-state-highlight"> + <input id="em-bookings-col-<?php echo $col_key; ?>" type="hidden" name="<?php echo $col_key; ?>" value="1" class="em-bookings-col-item" /> + <?php echo $this->cols_template[$col_key]; ?> + </li> + <?php endforeach; ?> + </ul> + <ul id="em-bookings-cols-inactive" class="em-bookings-cols-sortable"> + <?php foreach( $this->cols_template as $col_key => $col_data ): ?> + <?php if( !in_array($col_key, $this->cols) ): ?> + <li class="ui-state-default"> + <input id="em-bookings-col-<?php echo $col_key; ?>" type="hidden" name="<?php echo $col_key; ?>" value="0" class="em-bookings-col-item" /> + <?php echo $col_data; ?> + </li> + <?php endif; ?> + <?php endforeach; ?> + </ul> + </div> + </form> + </div> + <div id="em-bookings-table-export" class="em-bookings-table-overlay" style="display:none;" title="<?php _e('Export Bookings','dbem'); ?>"> + <form id="em-bookings-table-export-form" class="em-bookings-table-form" action="" method="post"> + <p><?php _e('Select the options below and export all the bookings you have currently filtered (all pages) into a CSV spreadsheet format.','dbem') ?></p> + <?php if( !get_option('dbem_bookings_tickets_single') ): //single ticket mode means no splitting by ticket type ?> + <p><?php _e('Split bookings by ticket type','dbem')?> <input type="checkbox" name="show_tickets" value="1" /> + <a href="#" title="<?php _e('If your events have multiple tickets, enabling this will show a seperate row for each ticket within a booking.'); ?>">?</a> + <?php endif; ?> + <div id="em-bookings-table-settings-form-cols"> + <p><strong><?php _e('Collumns to export','dbem')?></strong></p> + <ul id="em-bookings-export-cols-active" class="em-bookings-cols-sortable"> + <?php foreach( $this->cols as $col_key ): ?> + <li class="ui-state-highlight"> + <input id="em-bookings-col-<?php echo $col_key; ?>" type="hidden" name="cols[<?php echo $col_key; ?>]" value="1" class="em-bookings-col-item" /> + <?php echo $this->cols_template[$col_key]; ?> + </li> + <?php endforeach; ?> + </ul> + <ul id="em-bookings-export-cols-inactive" class="em-bookings-cols-sortable"> + <?php foreach( $this->cols_template as $col_key => $col_data ): ?> + <?php if( !in_array($col_key, $this->cols) ): ?> + <li class="ui-state-default"> + <input id="em-bookings-col-<?php echo $col_key; ?>" type="hidden" name="cols[<?php echo $col_key; ?>]" value="0" class="em-bookings-col-item" /> + <?php echo $col_data; ?> + </li> + <?php endif; ?> + <?php endforeach; ?> + <?php if( !$this->show_tickets ): ?> + <?php foreach( $this->cols_tickets_template as $col_key => $col_data ): ?> + <?php if( !in_array($col_key, $this->cols) ): ?> + <li class="ui-state-default <?php if(array_key_exists($col_key, $this->cols_tickets_template)) echo 'em-bookings-col-item-ticket'; ?>"> + <input id="em-bookings-col-<?php echo $col_key; ?>" type="hidden" name="cols[<?php echo $col_key; ?>]" value="0" class="em-bookings-col-item" /> + <?php echo $col_data; ?> + </li> + <?php endif; ?> + <?php endforeach; ?> + <?php endif; ?> + </ul> + </div> + <?php if( $EM_Event !== false ): ?> + <input type="hidden" name="event_id" value='<?php echo $EM_Event->event_id; ?>' /> + <?php endif; ?> + <?php if( $EM_Ticket !== false ): ?> + <input type="hidden" name="ticket_id" value='<?php echo $EM_Ticket->ticket_id; ?>' /> + <?php endif; ?> + <?php if( $EM_Person !== false ): ?> + <input type="hidden" name="person_id" value='<?php echo $EM_Person->ID; ?>' /> + <?php endif; ?> + <input type="hidden" name="scope" value='<?php echo $this->scope ?>' /> + <input type="hidden" name="status" value='<?php echo $this->status ?>' /> + <input type="hidden" name="no_save" value='1' /> + <input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('export_bookings_csv'); ?>" /> + <input type="hidden" name="action" value="export_bookings_csv" /> + </form> + </div> + <br class="clear" /> + <?php + } + + function output_table(){ + $EM_Ticket = $this->get_ticket(); + $EM_Event = $this->get_event(); + $EM_Person = $this->get_person(); + $this->get_bookings(true); //get bookings and refresh + ?> + <div class='em-bookings-table em_obj' id="em-bookings-table"> + <form class='bookings-filter' method='post' action='<?php bloginfo('wpurl') ?>/wp-admin/edit.php'> + <?php if( $EM_Event !== false ): ?> + <input type="hidden" name="event_id" value='<?php echo $EM_Event->event_id; ?>' /> + <?php endif; ?> + <?php if( $EM_Ticket !== false ): ?> + <input type="hidden" name="ticket_id" value='<?php echo $EM_Ticket->ticket_id; ?>' /> + <?php endif; ?> + <?php if( $EM_Person !== false ): ?> + <input type="hidden" name="person_id" value='<?php echo $EM_Person->ID; ?>' /> + <?php endif; ?> + <input type="hidden" name="pno" value='<?php echo $this->page ?>' /> + <input type="hidden" name="order" value='<?php echo $this->order ?>' /> + <input type="hidden" name="orderby" value='<?php echo $this->orderby ?>' /> + <input type="hidden" name="_wpnonce" value="<?php echo ( !empty($_REQUEST['_wpnonce']) ) ? $_REQUEST['_wpnonce']:wp_create_nonce('em_bookings_table'); ?>" /> + <input type="hidden" name="action" value="em_bookings_table" /> + <input type="hidden" name="cols" value="<?php echo implode(',', $this->cols); ?>" /> + + <div class='tablenav'> + <div class="alignleft actions"> + <a href="#" class="em-bookings-table-export" id="em-bookings-table-export-trigger" rel="#em-bookings-table-export" title="<?php _e('Export these bookings.','dbem'); ?>"></a> + <a href="#" class="em-bookings-table-settings" id="em-bookings-table-settings-trigger" rel="#em-bookings-table-settings"></a> + <?php if( $EM_Event === false ): ?> + <select name="scope"> + <?php + foreach ( em_get_scopes() as $key => $value ) { + $selected = ""; + if ($key == $this->scope) + $selected = "selected='selected'"; + echo "<option value='$key' $selected>$value</option> "; + } + ?> + </select> + <?php endif; ?> + <select name="limit"> + <option value="<?php echo $this->limit ?>"><?php echo sprintf(__('%s Rows','dbem'),$this->limit); ?></option> + <option value="5">5</option> + <option value="10">10</option> + <option value="25">25</option> + <option value="50">50</option> + <option value="100">100</option> + </select> + <select name="status"> + <?php + foreach ( $this->statuses as $key => $value ) { + $selected = ""; + if ($key == $this->status) + $selected = "selected='selected'"; + echo "<option value='$key' $selected>{$value['label']}</option> "; + } + ?> + </select> + <input id="post-query-submit" class="button-secondary" type="submit" value="<?php _e ( 'Filter' )?>" /> + <?php if( $EM_Event !== false ): ?> + <?php _e('Displaying Event','dbem'); ?> : <?php echo $EM_Event->name; ?> + <?php elseif( $EM_Person !== false ): ?> + <?php _e('Displaying User','dbem'); echo ' : '.$EM_Person->get_name(); ?> + <?php endif; ?> + </div> + <?php + if ( $this->bookings_count >= $this->limit ) { + $bookings_nav = em_admin_paginate( $this->bookings_count, $this->limit, $this->page, array(),'#%#%','#'); + echo $bookings_nav; + } + ?> + <div class="clear"></div> + </div> + <div class="clear"></div> + <div class='table-wrap'> + <table id='dbem-bookings-table' class='widefat post '> + <thead> + <tr> + <?php /* + <th class='manage-column column-cb check-column' scope='col'> + <input class='select-all' type="checkbox" value='1' /> + </th> + */ ?> + <th class='manage-column' scope='col'><?php echo implode("</th><th class='manage-column' scope='col'>", $this->get_headers()); ?></th> + </tr> + </thead> + <?php if( $this->bookings_count > 0 ): ?> + <tbody> + <?php + $rowno = 0; + $event_count = (!empty($event_count)) ? $event_count:0; + foreach ($this->bookings->bookings as $EM_Booking) { + ?> + <tr> + <?php /* + <th scope="row" class="check-column" style="padding:7px 0px 7px;"><input type='checkbox' value='<?php echo $EM_Booking->booking_id ?>' name='bookings[]'/></th> + */ + /* @var $EM_Booking EM_Booking */ + /* @var $EM_Ticket_Booking EM_Ticket_Booking */ + if( $this->show_tickets ){ + foreach($EM_Booking->get_tickets_bookings()->tickets_bookings as $EM_Ticket_Booking){ + ?><td><?php echo implode('</td><td>', $this->get_row($EM_Ticket_Booking)); ?></td><?php + } + }else{ + ?><td><?php echo implode('</td><td>', $this->get_row($EM_Booking)); ?></td><?php + } + ?> + </tr> + <?php + } + ?> + </tbody> + <?php else: ?> + <tbody> + <tr><td scope="row" colspan="<?php echo count($this->cols); ?>"><?php _e('No bookings.', 'dbem'); ?></td></tr> + </tbody> + <?php endif; ?> + </table> + </div> + <?php if( !empty($bookings_nav) && $this->bookings_count >= $this->limit ) : ?> + <div class='tablenav'> + <?php echo $bookings_nav; ?> + <div class="clear"></div> + </div> + <?php endif; ?> + </form> + </div> + <?php + } + + function get_headers($csv = false){ + $headers = array(); + foreach($this->cols as $col){ + if( $col == 'actions' ){ + if( !$csv ) $headers[$col] = ' '; + }elseif(array_key_exists($col, $this->cols_template)){ + /* for later - col ordering! + if($this->orderby == $col){ + if($this->order == 'ASC'){ + $headers[] = '<a class="em-bookings-orderby" href="#'.$col.'">'.$this->cols_template[$col].' (^)</a>'; + }else{ + $headers[] = '<a class="em-bookings-orderby" href="#'.$col.'">'.$this->cols_template[$col].' (d)</a>'; + } + }else{ + $headers[] = '<a class="em-bookings-orderby" href="#'.$col.'">'.$this->cols_template[$col].'</a>'; + } + */ + $headers[$col] = $this->cols_template[$col]; + } + } + return $headers; + } + + function get_table(){ + + } + + /** + * @param Object $object + * @return array() + */ + function get_row( $object, $csv = false ){ + /* @var $EM_Ticket EM_Ticket */ + /* @var $EM_Ticket_Booking EM_Ticket_Booking */ + /* @var $EM_Booking EM_Booking */ + if( get_class($object) == 'EM_Ticket_Booking' ){ + $EM_Ticket_Booking = $object; + $EM_Ticket = $EM_Ticket_Booking->get_ticket(); + $EM_Booking = $EM_Ticket_Booking->get_booking(); + }else{ + $EM_Booking = $object; + } + $cols = array(); + foreach($this->cols as $col){ + //is col a user col or else? + //TODO fix urls so this works in all pages in front as well + if( $col == 'user_email' ){ + $cols[] = $EM_Booking->get_person()->user_email; + }elseif($col == 'dbem_phone'){ + $cols[] = $EM_Booking->get_person()->phone; + }elseif($col == 'user_name'){ + if( $csv ){ + $cols[] = $EM_Booking->get_person()->get_name(); + }else{ + $cols[] = '<a href="'.add_query_arg(array('person_id'=>$EM_Booking->person_id, 'event_id'=>null), $EM_Booking->get_event()->get_bookings_url()).'">'. $EM_Booking->person->get_name() .'</a>'; + } + }elseif($col == 'event_name'){ + if( $csv ){ + $cols[] = $EM_Booking->get_event()->event_name; + }else{ + $cols[] = '<a href="'.$EM_Booking->get_event()->get_bookings_url().'">'. $this->events[$EM_Booking->event_id]->name .'</a>'; + } + }elseif($col == 'event_date'){ + $cols[] = $EM_Booking->get_event()->output('#_EVENTDATES'); + }elseif($col == 'event_time'){ + $cols[] = $EM_Booking->get_event()->output('#_EVENTTIMES'); + }elseif($col == 'booking_price'){ + $cols[] = ($this->show_tickets && !empty($EM_Ticket)) ? $EM_Ticket_Booking->get_price(false,true,true):$EM_Booking->get_price(false,true,true); + }elseif($col == 'booking_status'){ + $cols[] = $EM_Booking->get_status(true); + }elseif($col == 'booking_date'){ + $cols[] = date_i18n(get_option('dbem_date_format').' '. get_option('dbem_time_format'), $EM_Booking->timestamp); + }elseif($col == 'actions' ){ + if( !$csv ) $cols[] = implode(' | ', $this->get_booking_actions($EM_Booking)); + }elseif( $col == 'booking_spaces' ){ + $cols[] = ($this->show_tickets && !empty($EM_Ticket)) ? $EM_Ticket_Booking->get_spaces() : $EM_Booking->get_spaces(); + }elseif( $col == 'booking_id' ){ + $cols[] = $EM_Booking->booking_id; + }elseif( $col == 'ticket_name' && $this->show_tickets && !empty($EM_Ticket) ){ + $cols[] = $EM_Ticket->$col; + }elseif( $col == 'ticket_description' && $this->show_tickets && !empty($EM_Ticket) ){ + $cols[] = $EM_Ticket->$col; + }elseif( $col == 'ticket_price' && $this->show_tickets && !empty($EM_Ticket) ){ + $cols[] = $EM_Ticket->get_price(true); + }elseif( $col == 'ticket_id' && $this->show_tickets && !empty($EM_Ticket) ){ + $cols[] = $EM_Ticket->ticket_id; + }else{ + $val = apply_filters('em_bookings_table_rows_col_'.$col, '', $EM_Booking, $this, $csv); + $cols[] = apply_filters('em_bookings_table_rows_col', $val, $col, $EM_Booking, $this, $csv); + } + } + return $cols; + } + + function get_row_csv($EM_Booking){ + return $this->get_row($EM_Booking, true); + } + + /** + * @param EM_Booking $EM_Booking + * @return mixed + */ + function get_booking_actions($EM_Booking){ + $booking_actions = array(); + switch($EM_Booking->booking_status){ + case 0: + if( get_option('dbem_bookings_approval') ){ + $booking_actions = array( + 'approve' => '<a class="em-bookings-approve" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_approve', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Approve','dbem').'</a>', + 'reject' => '<a class="em-bookings-reject" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_reject', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Reject','dbem').'</a>', + 'delete' => '<span class="trash"><a class="em-bookings-delete" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Delete','dbem').'</a></span>', + 'edit' => '<a class="em-bookings-edit" href="'.em_add_get_params($EM_Booking->get_event()->get_bookings_url(), array('booking_id'=>$EM_Booking->booking_id, 'em_ajax'=>null, 'em_obj'=>null)).'">'.__('Edit/View','dbem').'</a>', + ); + break; + }//if approvals are off, treat as a 1 + case 1: + $booking_actions = array( + 'unapprove' => '<a class="em-bookings-unapprove" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_unapprove', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Unpprove','dbem').'</a>', + 'reject' => '<a class="em-bookings-reject" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_reject', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Reject','dbem').'</a>', + 'delete' => '<span class="trash"><a class="em-bookings-delete" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Delete','dbem').'</a></span>', + 'edit' => '<a class="em-bookings-edit" href="'.em_add_get_params($EM_Booking->get_event()->get_bookings_url(), array('booking_id'=>$EM_Booking->booking_id, 'em_ajax'=>null, 'em_obj'=>null)).'">'.__('Edit/View','dbem').'</a>', + ); + break; + case 2: + $booking_actions = array( + 'unapprove' => '<a class="em-bookings-unapprove" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_unapprove', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Unpprove','dbem').'</a>', + 'approve' => '<a class="em-bookings-approve" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_approve', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Approve','dbem').'</a>', + 'delete' => '<span class="trash"><a class="em-bookings-delete" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Delete','dbem').'</a></span>', + 'edit' => '<a class="em-bookings-edit" href="'.em_add_get_params($EM_Booking->get_event()->get_bookings_url(), array('booking_id'=>$EM_Booking->booking_id, 'em_ajax'=>null, 'em_obj'=>null)).'">'.__('Edit/View','dbem').'</a>', + ); + break; + case 3: + $booking_actions = array( + 'unapprove' => '<a class="em-bookings-unapprove" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_unapprove', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Unpprove','dbem').'</a>', + 'approve' => '<a class="em-bookings-approve" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_approve', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Approve','dbem').'</a>', + 'delete' => '<span class="trash"><a class="em-bookings-delete" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Delete','dbem').'</a></span>', + 'edit' => '<a class="em-bookings-edit" href="'.em_add_get_params($EM_Booking->get_event()->get_bookings_url(), array('booking_id'=>$EM_Booking->booking_id, 'em_ajax'=>null, 'em_obj'=>null)).'">'.__('Edit/View','dbem').'</a>', + ); + break; + case 4: + $booking_actions = apply_filters('em_bookings_table_booking_actions_4',array( + 'delete' => '<span class="trash"><a class="em-bookings-delete" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Delete','dbem').'</a></span>', + ), $EM_Booking); + break; + case 5: + $booking_actions = apply_filters('em_bookings_table_booking_actions_5',array( + 'delete' => '<span class="trash"><a class="em-bookings-delete" href="'.em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'bookings_delete', 'booking_id'=>$EM_Booking->booking_id)).'">'.__('Delete','dbem').'</a></span>', + ), $EM_Booking); + break; + default: + $booking_actions = apply_filters('em_bookings_table_booking_actions_'.$EM_Booking->booking_status ,array(), $EM_Booking); + break; + + } + if( !get_option('dbem_bookings_approval') ) unset($booking_actions['unapprove']); + return apply_filters('em_bookings_table_cols_col_action', $booking_actions, $EM_Booking); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-bookings.php b/wp-content/plugins/events-manager/classes/em-bookings.php new file mode 100644 index 0000000..c20e32a --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-bookings.php @@ -0,0 +1,627 @@ +<?php +/** + * Deals with the booking info for an event + * @author marcus + * + */ +class EM_Bookings extends EM_Object implements Iterator{ + + /** + * Array of EM_Booking objects for a specific event + * @var array + */ + var $bookings = array(); + /** + * @var EM_Tickets + */ + var $tickets; + /** + * @var int + */ + var $event_id; + /** + * How many spaces this event has + * @var int + */ + var $spaces; + + /** + * Creates an EM_Bookings instance, currently accepts an EM_Event object (gets all bookings for that event) or array of any EM_Booking objects, which can be manipulated in bulk with helper functions. + * @param EM_Event $event + * @return null + */ + function EM_Bookings( $data = false ){ + if( is_object($data) && get_class($data) == "EM_Event" ){ //Creates a blank bookings object if needed + global $wpdb; + $this->event_id = $data->event_id; + $sql = "SELECT * FROM ". EM_BOOKINGS_TABLE ." WHERE event_id ='{$this->event_id}' ORDER BY booking_date"; + $bookings = $wpdb->get_results($sql, ARRAY_A); + foreach ($bookings as $booking){ + $this->bookings[] = new EM_Booking($booking); + } + $this->spaces = $this->get_spaces(); + }elseif( is_array($data) ){ + foreach( $data as $EM_Booking ){ + if( get_class($EM_Booking) == 'EM_Booking'){ + $this->bookings[] = $EM_Booking; + } + } + } + } + + /** + * Add a booking into this event (or add spaces if person already booked this), checking that there's enough space for the event + * @param EM_Booking $EM_Booking + * @return boolean + */ + function add( $EM_Booking ){ + global $wpdb,$EM_Mailer; + if ( $this->get_available_spaces() >= $EM_Booking->get_spaces(true) ) { + //Save the booking + $email = false; + //set status depending on approval settings + if( empty($EM_Booking->booking_status) ){ //if status is not set, give 1 or 0 depending on approval settings + $EM_Booking->booking_status = get_option('dbem_bookings_approval') ? 0:1; + } + $result = $EM_Booking->save(false); + if($result){ + //Success + $this->bookings[] = $EM_Booking; + $email = $EM_Booking->email(); + if( get_option('dbem_bookings_approval') == 1 && $EM_Booking->booking_status == 0){ + $this->feedback_message = get_option('dbem_booking_feedback_pending'); + }else{ + $this->feedback_message = get_option('dbem_booking_feedback'); + } + if(!$email){ + $EM_Booking->email_not_sent = true; + $this->feedback_message .= ' '.get_option('dbem_booking_feedback_nomail'); + if( current_user_can('activate_plugins') ){ + if( count($EM_Booking->get_errors()) > 0 ){ + $this->feedback_message .= '<br/><strong>Errors:</strong> (only admins see this message)<br/><ul><li>'. implode('</li><li>', $EM_Booking->get_errors()).'</li></ul>'; + }else{ + $this->feedback_message .= '<br/><strong>No errors returned by mailer</strong> (only admins see this message)'; + } + } + } + return apply_filters('em_bookings_add', true, $EM_Booking); + }else{ + //Failure + $this->errors[] = "<strong>".get_option('dbem_booking_feedback_error')."</strong><br />". implode('<br />', $EM_Booking->errors); + } + } else { + $this->add_error(get_option('dbem_booking_feedback_full')); + } + return apply_filters('em_bookings_add', false, $EM_Booking); + } + + /** + * Get POST data and create a booking for each ticket requested. If successful, a booking object is returned, false if not. + * @return false|object + */ + function add_from_post(){ + $EM_Booking = new EM_booking(); + $result = $EM_Booking->get_post(); + if($result){ + $result = $this->add($EM_Booking); + if($result){ + $result = $EM_Booking; + } + $this->feedback_message = sprintf(__('%s created.','dbem'),__('Booking','dbem')); + }else{ + $this->errors = array_merge($this->errors, $EM_Booking->errors); + } + return apply_filters('em_bookings_add_from_post',$result,$EM_Booking,$this); + } + + /** + * Smart event locator, saves a database read if possible. Note that if an event doesn't exist, a blank object will be created to prevent duplicates. + */ + function get_event(){ + global $EM_Event; + if( is_object($EM_Event) && $EM_Event->event_id == $this->event_id ){ + return $EM_Event; + }else{ + if( is_numeric($this->event_id) && $this->event_id > 0 ){ + return new EM_Event($this->event_id, 'event_id'); + }elseif( count($this->bookings) > 0 ){ + foreach($this->bookings as $EM_Booking){ + /* @var $EM_Booking EM_Booking */ + return new EM_Event($EM_Booking->event_id, 'event_id'); + } + } + } + return new EM_Event($this->event_id); + } + + /** + * Retrieve and save the bookings belonging to instance. If called again will return cached version, set $force_reload to true to create a new EM_Tickets object. + * @param boolean $force_reload + * @return EM_Tickets + */ + function get_tickets( $force_reload = false ){ + if( !is_object($this->tickets) || $force_reload ){ + $this->tickets = new EM_Tickets($this->event_id); + }else{ + $this->tickets->event_id = $this->event_id; + } + return apply_filters('em_bookings_get_tickets', $this->tickets, $this); + } + + /** + * Returns EM_Tickets object with available tickets + * @return EM_Tickets + */ + function get_available_tickets(){ + $tickets = array(); + foreach ($this->get_tickets() as $EM_Ticket){ + /* @var $EM_Ticket EM_Ticket */ + if( $EM_Ticket->is_available() ){ + //within time range + if( $EM_Ticket->get_available_spaces() > 0 ){ + $tickets[] = $EM_Ticket; + } + } + } + $EM_Tickets = new EM_Tickets($tickets); + return apply_filters('em_bookings_get_tickets', $EM_Tickets, $this); + } + + function get_user_list(){ + $users = array(); + foreach( $this->get_bookings()->bookings as $EM_Booking ){ + $users[$EM_Booking->person->ID] = $EM_Booking->person; + } + return $users; + } + + /** + * does this ticket exist? + * @return bool + */ + function ticket_exists($ticket_id){ + $EM_Tickets = $this->get_tickets(); + foreach( $EM_Tickets->tickets as $EM_Ticket){ + if($EM_Ticket->ticket_id == $ticket_id){ + return apply_filters('em_bookings_ticket_exists',true, $EM_Ticket, $this); + } + } + return apply_filters('em_bookings_ticket_exists',false, false,$this); + } + + function has_space(){ + return count($this->get_available_tickets()->tickets) > 0; + } + + function has_open_time(){ + $return = false; + $EM_Event = $this->get_event(); + if(!empty($EM_Event->event_rsvp_date) && $EM_Event->rsvp_end > current_time('timestamp')){ + $return = true; + }elseif( empty($EM_Event->event_rsvp_date) && $EM_Event->start > current_time('timestamp') ){ + $return = true; + } + return $return; + } + + function is_open(){ + //TODO extend booking options + $return = $this->has_open_time() && $this->has_space(); + return apply_filters('em_bookings_is_open', $return, $this); + } + + /** + * Delete bookings on this id + * @return boolean + */ + function delete(){ + global $wpdb; + $booking_ids = array(); + //get the booking ids tied to this event + foreach( $this->bookings as $EM_Booking ){ + $booking_ids[] = $EM_Booking->booking_id; + } + $result_tickets = true; + $result = true; + if( count($booking_ids) > 0 ){ + //Delete bookings and ticket bookings + $result_tickets = $wpdb->query("DELETE FROM ". EM_TICKETS_BOOKINGS_TABLE ." WHERE booking_id IN (".implode(',',$booking_ids).");"); + $result = $wpdb->query("DELETE FROM ".EM_BOOKINGS_TABLE." WHERE event_id IN (".implode(',',$booking_ids).")"); + } + return ($result !== false && $result_tickets !== false); + } + + + /** + * Will approve all supplied booking ids, which must be in the form of a numeric array or a single number. + * @param array|int $booking_ids + * @return boolean + */ + function approve( $booking_ids ){ + $this->set_status(1, $booking_ids); + return false; + } + + /** + * Will reject all supplied booking ids, which must be in the form of a numeric array or a single number. + * @param array|int $booking_ids + * @return boolean + */ + function reject( $booking_ids ){ + return $this->set_status(2, $booking_ids); + } + + /** + * Will unapprove all supplied booking ids, which must be in the form of a numeric array or a single number. + * @param array|int $booking_ids + * @return boolean + */ + function unapprove( $booking_ids ){ + return $this->set_status(0, $booking_ids); + } + + /** + * @param int $status + * @param array|int $booking_ids + * @return bool + */ + function set_status($status, $booking_ids){ + //FIXME status should work with instantiated object + //FIXME there is a vulnerability where any user can approve/reject bookings if they know the ID + if( $this->array_is_numeric($booking_ids) ){ + //Get all the bookings + $results = array(); + $mails = array(); + foreach( $booking_ids as $booking_id ){ + $EM_Booking = new EM_Booking($booking_id); + if( !$EM_Booking->can_manage() ){ + $this->feedback_message = __('Bookings %s. Mails Sent.', 'dbem'); + return false; + } + $results[] = $EM_Booking->set_status($status); + } + if( !in_array('false',$results) ){ + $this->feedback_message = __('Bookings %s. Mails Sent.', 'dbem'); + return true; + }else{ + //TODO Better error handling needed if some bookings fail approval/failure + $this->feedback_message = __('An error occurred.', 'dbem'); + return false; + } + }elseif( is_numeric($booking_ids) || is_object($booking_ids) ){ + $EM_Booking = ( is_object($booking_ids) && get_class($booking_ids) == 'EM_Booking') ? $booking_ids : new EM_Booking($booking_ids); + $result = $EM_Booking->set_status($status); + $this->feedback_message = $EM_Booking->feedback_message; + return $result; + } + return false; + } + + + /** + * Get the total number of spaces this event has. This will show the lower value of event global spaces limit or total ticket spaces. Setting $force_refresh to true will recheck spaces, even if previously done so. + * @param boolean $force_refresh + * @return int + */ + function get_spaces( $force_refresh=false ){ + if($force_refresh || $this->spaces == 0){ + $this->spaces = $this->get_tickets()->get_spaces(); + } + //check overall events cap + if(!empty($this->get_event()->event_spaces) && $this->get_event()->event_spaces < $this->spaces) $this->spaces = $this->get_event()->event_spaces; + return apply_filters('em_booking_get_spaces',$this->spaces,$this); + } + + /** + * Returns number of available spaces for this event. If approval of bookings is on, will include pending bookings depending on em option. + * @return int + */ + function get_available_spaces(){ + $spaces = $this->get_spaces(); + $available_spaces = $spaces - $this->get_booked_spaces(); + if( get_option('dbem_bookings_approval_reserved') ){ //deduct reserved/pending spaces from available spaces + $available_spaces -= $this->get_pending_spaces(); + } + return apply_filters('em_booking_get_available_spaces', $available_spaces, $this); + } + + /** + * Returns number of booked spaces for this event. If approval of bookings is on, will return number of booked confirmed spaces. + * @return int + */ + function get_booked_spaces($force_refresh = false){ + $booked_spaces = 0; + foreach ( $this->bookings as $EM_Booking ){ + if( $EM_Booking->booking_status == 1 ){ + $booked_spaces += $EM_Booking->get_spaces($force_refresh); + } + } + return apply_filters('em_bookings_get_booked_spaces', $booked_spaces, $this); + } + + /** + * Gets number of pending spaces awaiting approval. Will return 0 if booking approval is not enabled. + * @return int + */ + function get_pending_spaces(){ + if( get_option('dbem_bookings_approval') == 0 ){ + return apply_filters('em_bookings_get_pending_spaces', 0, $this); + } + $pending = 0; + foreach ( $this->bookings as $booking ){ + if($booking->booking_status == 0){ + $pending += $booking->get_spaces(); + } + } + return apply_filters('em_bookings_get_pending_spaces', $pending, $this); + } + + /** + * Gets number of bookings (not spaces). If booking approval is enabled, only the number of approved bookings will be shown. + * @return EM_Bookings + */ + function get_bookings( $all_bookings = false ){ + $confirmed = array(); + foreach ( $this->bookings as $booking ){ + if( $booking->booking_status == 1 || (get_option('dbem_bookings_approval') == 0 && $booking->booking_status == 0) || $all_bookings ){ + $confirmed[] = $booking; + } + } + $EM_Bookings = new EM_Bookings($confirmed); + return $EM_Bookings; + } + + /** + * Get pending bookings. If booking approval is disabled, will return no bookings. + * @return EM_Bookings + */ + function get_pending_bookings(){ + if( get_option('dbem_bookings_approval') == 0 ){ + return array(); + } + $pending = array(); + foreach ( $this->bookings as $booking ){ + if($booking->booking_status == 0){ + $pending[] = $booking; + } + } + $EM_Bookings = new EM_Bookings($pending); + return $EM_Bookings; + } + + /** + * Get rejected bookings. If booking approval is disabled, will return no bookings. + * @return array EM_Bookings + */ + function get_rejected_bookings(){ + $rejected = array(); + foreach ( $this->bookings as $booking ){ + if($booking->booking_status == 2){ + $rejected[] = $booking; + } + } + $EM_Bookings = new EM_Bookings($rejected); + return $EM_Bookings; + } + + /** + * Get cancelled bookings. + * @return array EM_Booking + */ + function get_cancelled_bookings(){ + $cancelled = array(); + foreach ( $this->bookings as $booking ){ + if($booking->booking_status == 3){ + $cancelled[] = $booking; + } + } + $EM_Bookings = new EM_Bookings($cancelled); + return $EM_Bookings; + } + + /** + * Checks if a person with similar details has booked for this before + * @param $person_id + * @return EM_Booking + */ + function find_previous_booking($EM_Booking){ + //First see if we have a similar person on record that's making this booking + $EM_Booking->person->load_similar(); + //If person exists on record, see if they've booked this event before, if so return the booking. + if( is_numeric($EM_Booking->person->ID) && $EM_Booking->person->ID > 0 ){ + $EM_Booking->person_id = $EM_Booking->person->ID; + foreach ($this->bookings as $booking){ + if( $booking->person_id == $EM_Booking->person->ID ){ + return $booking; + } + } + } + return false; + } + + /** + * Checks to see if user has a booking for this event + * @param unknown_type $user_id + */ + function has_booking( $user_id = false ){ + if( $user_id === false ){ + $user_id = get_current_user_id(); + } + if( is_numeric($user_id) && $user_id > 0 ){ + foreach ($this->bookings as $EM_Booking){ + if( $EM_Booking->person->ID == $user_id && $EM_Booking->booking_status != 3 ){ + return apply_filters('em_bookings_has_booking', $EM_Booking, $this); + } + } + } + return apply_filters('em_bookings_has_booking', false, $this); + } + + /** + * Get bookings that match the array of arguments passed. + * @return array + * @static + */ + function get( $args = array(), $count = false ){ + global $wpdb,$current_user; + $bookings_table = EM_BOOKINGS_TABLE; + $events_table = EM_EVENTS_TABLE; + $locations_table = EM_LOCATIONS_TABLE; + + //Quick version, we can accept an array of IDs, which is easy to retrieve + if( self::array_is_numeric($args) ){ //Array of numbers, assume they are event IDs to retreive + //We can just get all the events here and return them + $sql = " + SELECT * FROM $bookings_table b + LEFT JOIN $events_table e ON e.event_id=b.event_id + WHERE booking_id".implode(" OR booking_id=", $args); + $results = $wpdb->get_results(apply_filters('em_bookings_get_sql',$sql),ARRAY_A); + $bookings = array(); + foreach($results as $result){ + $bookings[] = new EM_Booking($result); + } + return $bookings; //We return all the bookings matched as an EM_Booking array. + } + + //We assume it's either an empty array or array of search arguments to merge with defaults + $args = self::get_default_search($args); + $limit = ( $args['limit'] && is_numeric($args['limit'])) ? "LIMIT {$args['limit']}" : ''; + $offset = ( $limit != "" && is_numeric($args['offset']) ) ? "OFFSET {$args['offset']}" : ''; + + //Get the default conditions + $conditions = self::build_sql_conditions($args); + //Put it all together + $where = ( count($conditions) > 0 ) ? " WHERE " . implode ( " AND ", $conditions ):''; + + //Get ordering instructions + $EM_Booking = new EM_Booking(); + $accepted_fields = $EM_Booking->get_fields(true); + $orderby = self::build_sql_orderby($args, $accepted_fields); + //Now, build orderby sql + $orderby_sql = ( count($orderby) > 0 ) ? 'ORDER BY '. implode(', ', $orderby) : ''; + //Selector + $selectors = ( $count ) ? 'COUNT(*)':'*'; + + //Create the SQL statement and execute + $sql = " + SELECT $selectors FROM $bookings_table + LEFT JOIN $events_table ON {$events_table}.event_id={$bookings_table}.event_id + LEFT JOIN $locations_table ON {$locations_table}.location_id={$events_table}.location_id + $where + $orderby_sql + $limit $offset + "; + //If we're only counting results, return the number of results + if( $count ){ + return apply_filters('em_bookings_get_count', $wpdb->get_var($sql), $args); + } + $results = $wpdb->get_results( apply_filters('em_events_get_sql',$sql, $args), ARRAY_A); + + //If we want results directly in an array, why not have a shortcut here? + if( $args['array'] == true ){ + return $results; + } + + //Make returned results EM_Booking objects + $results = (is_array($results)) ? $results:array(); + $bookings = array(); + foreach ( $results as $booking ){ + $bookings[] = new EM_Booking($booking); + } + $EM_Bookings = new EM_Bookings($bookings); + return apply_filters('em_bookings_get', $EM_Bookings); + } + + function count( $args = array() ){ + return self::get($args, true); + } + + + //List of patients in the patient database, that a user can choose and go on to edit any previous treatment data, or add a new admission. + function export_csv() { + global $EM_Event; + if($EM_Event->event_id != $this->event_id ){ + $event = $this->get_event(); + $event_name = $event->name; + }else{ + $event_name = $EM_Event->name; + } + // The name of the file on the user's pc + $file_name = sanitize_title($event_name). "-bookings.csv"; + + header("Content-Type: application/octet-stream"); + header("Content-Disposition: Attachment; filename=$file_name"); + em_locate_template('templates/csv-event-bookings.php', true); + exit(); + } + + /* Overrides EM_Object method to apply a filter to result + * @see wp-content/plugins/events-manager/classes/EM_Object#build_sql_conditions() + */ + function build_sql_conditions( $args = array() ){ + $conditions = apply_filters( 'em_bookings_build_sql_conditions', parent::build_sql_conditions($args), $args ); + if( is_numeric($args['status']) ){ + $conditions['status'] = 'booking_status='.$args['status']; + }elseif( is_array($args['status']) && count($args['status']) > 0 ){ + $conditions['status'] = 'booking_status IN ('.implode(',',$args['status']).')'; + }elseif( !is_array($args['status']) && preg_match('/^([0-9],?)+$/', $args['status']) ){ + $conditions['status'] = 'booking_status IN ('.$args['status'].')'; + } + if( is_numeric($args['person']) && current_user_can('manage_others_bookings') ){ + $conditions['person'] = EM_BOOKINGS_TABLE.'.person_id='.$args['person']; + } + return apply_filters('em_bookings_build_sql_conditions', $conditions, $args); + } + + /* Overrides EM_Object method to apply a filter to result + * @see wp-content/plugins/events-manager/classes/EM_Object#build_sql_orderby() + */ + function build_sql_orderby( $args, $accepted_fields, $default_order = 'ASC' ){ + return apply_filters( 'em_bookings_build_sql_orderby', parent::build_sql_orderby($args, $accepted_fields, get_option('dbem_events_default_order')), $args, $accepted_fields, $default_order ); + } + + /* + * Adds custom Events search defaults + * @param array $array + * @return array + * @uses EM_Object#get_default_search() + */ + function get_default_search( $array = array() ){ + $defaults = array( + 'status' => false, + 'person' => true //to add later, search by person's bookings... + ); + if( true || is_admin() ){ + //figure out default owning permissions + if( !current_user_can('edit_others_events') ){ + $defaults['owner'] = get_current_user_id(); + }else{ + $defaults['owner'] = false; + } + } + return apply_filters('em_bookings_get_default_search', parent::get_default_search($defaults,$array), $array, $defaults); + } + + //Iterator Implementation + public function rewind(){ + reset($this->bookings); + } + public function current(){ + $var = current($this->bookings); + return $var; + } + public function key(){ + $var = key($this->bookings); + return $var; + } + public function next(){ + $var = next($this->bookings); + return $var; + } + public function valid(){ + $key = key($this->bookings); + $var = ($key !== NULL && $key !== FALSE); + return $var; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-calendar.php b/wp-content/plugins/events-manager/classes/em-calendar.php new file mode 100644 index 0000000..212f654 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-calendar.php @@ -0,0 +1,372 @@ +<?php +class EM_Calendar extends EM_Object { + + function init(){ + //nothing to init anymore + } + + function get( $args ){ + + global $wpdb; + + $calendar_array = array(); + $calendar_array['cells'] = array(); + + $original_args = $args; + $args = self::get_default_search($args); + $full = $args['full']; //For ZDE, don't delete pls + $month = $args['month']; + $year = $args['year']; + $long_events = $args['long_events']; + + $week_starts_on_sunday = get_option('dbem_week_starts_sunday'); + $start_of_week = get_option('start_of_week'); + + if( !(is_numeric($month) && $month <= 12 && $month > 0) ) { + $month = date('m'); + } + if( !( is_numeric($year) ) ){ + $year = date('Y'); + } + + // Get the first day of the month + $month_start = mktime(0,0,0,$month, 1, $year); + $calendar_array['month_start'] = $month_start; + + // Get friendly month name + $month_name = date('M',$month_start); + // Figure out which day of the week + // the month starts on. + $month_start_day = date('D', $month_start); + + switch($month_start_day){ + case "Sun": $offset = 0; break; + case "Mon": $offset = 1; break; + case "Tue": $offset = 2; break; + case "Wed": $offset = 3; break; + case "Thu": $offset = 4; break; + case "Fri": $offset = 5; break; + case "Sat": $offset = 6; break; + } + //We need to go back to the WP defined day when the week started, in case the event day is near the end + $offset -= $start_of_week; + if($offset<0) + $offset += 7; + + // determine how many days are in the last month. + $month_last = $month-1; + $month_next = $month+1; + $calendar_array['month_next'] = $month_next; + $year_last = $year; + $year_next = $year; + $calendar_array['year_next'] = $year_next; + + if($month == 1) { + $month_last = 12; + $year_last = $year -1; + }elseif($month == 12){ + $month_next = 1; + $year_next = $year + 1; + } + $calendar_array['month_last'] = $month_last; + $calendar_array['year_last'] = $year_last; + + $num_days_last = self::days_in_month($month_last, $year_last); + + // determine how many days are in the current month. + $num_days_current = self::days_in_month($month, $year); + // Build an array for the current days + // in the month + for($i = 1; $i <= $num_days_current; $i++){ + $num_days_array[] = mktime(0,0,0,$month, $i, $year); + } + // Build an array for the number of days + // in last month + for($i = 1; $i <= $num_days_last; $i++){ + $num_days_last_array[] = mktime(0,0,0,$month_last, $i, $year_last); + } + // If the $offset from the starting day of the + // week happens to be Sunday, $offset would be 0, + // so don't need an offset correction. + + if($offset > 0){ + $offset_correction = array_slice($num_days_last_array, -$offset, $offset); + $new_count = array_merge($offset_correction, $num_days_array); + $offset_count = count($offset_correction); + } else { // The else statement is to prevent building the $offset array. + $offset_count = 0; + $new_count = $num_days_array; + } + // count how many days we have with the two + // previous arrays merged together + $current_num = count($new_count); + + // Since we will have 5 HTML table rows (TR) + // with 7 table data entries (TD) + // we need to fill in 35 TDs + // so, we will have to figure out + // how many days to appened to the end + // of the final array to make it 35 days. + if($current_num > 35){ + $num_weeks = 6; + $outset = (42 - $current_num); + } elseif($current_num < 35){ + $num_weeks = 5; + $outset = (35 - $current_num); + } + if($current_num == 35){ + $num_weeks = 5; + $outset = 0; + } + // Outset Correction + for($i = 1; $i <= $outset; $i++){ + $new_count[] = mktime(0,0,0,$month_next, $i, $year_next); + } + // Now let's "chunk" the $all_days array + // into weeks. Each week has 7 days + // so we will array_chunk it into 7 days. + $weeks = array_chunk($new_count, 7); + + //Get an array of arguments that don't include default valued args + $link_args = self::get_link_args($args); + + $previous_url = "?ajaxCalendar=1&mo={$month_last}&yr={$year_last}&{$link_args}"; + $next_url = "?ajaxCalendar=1&mo={$month_next}&yr={$year_next}&{$link_args}"; + + $weekdays = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); + $n = 0 ; + while( $n < $start_of_week ) { + $last_day = array_shift($weekdays); + $weekdays[]= $last_day; + $n++; + } + + $days_initials_array = array(); + foreach($weekdays as $weekday) { + $days_initials_array[] = self::translate_and_trim($weekday); + } + + $calendar_array['links'] = array( 'previous_url'=>$previous_url, 'next_url'=>$next_url); + $calendar_array['row_headers'] = $days_initials_array; + + // Now we break each key of the array + // into a week and create a new table row for each + // week with the days of that week in the table data + + $i = 0; + $current_date = date('Y-m-d', current_time('timestamp')); + $week_count = 0; + foreach ( $weeks as $week ) { + foreach ( $week as $d ) { + $date = date('Y-m-d', $d); + $calendar_array['cells'][$date] = array('date'=>$d); //set it up so we have the exact array of dates to be filled + if ($i < $offset_count) { //if it is PREVIOUS month + $calendar_array['cells'][$date]['type'] = 'pre'; + } + if (($i >= $offset_count) && ($i < ($num_weeks * 7) - $outset)) { // if it is THIS month + if ( $current_date == $date ){ + $calendar_array['cells'][$date]['type'] = 'today'; + } + } elseif (($outset > 0)) { //if it is NEXT month + if (($i >= ($num_weeks * 7) - $outset)) { + $calendar_array['cells'][$date]['type'] = 'post'; + } + } + $i ++; + } + $week_count++; + } + + // query the database for events in this time span + if ($month == 1) { + $month_pre=12; + $month_post=2; + $year_pre=$year-1; + $year_post=$year; + } elseif($month == 12) { + $month_pre=11; + $month_post=1; + $year_pre=$year; + $year_post=$year+1; + } else { + $month_pre=$month-1; + $month_post=$month+1; + $year_pre=$year; + $year_post=$year; + } + $args['year'] = array($year_pre, $year_post); + $args['month'] = array($month_pre, $month_post); + $events = EM_Events::get($args); + + $event_format = get_option('dbem_full_calendar_event_format'); + $event_title_format = get_option('dbem_small_calendar_event_title_format'); + $event_title_separator_format = get_option('dbem_small_calendar_event_title_separator'); + + $eventful_days= array(); + if($events){ + //Go through the events and slot them into the right d-m index + foreach($events as $event) { + $event = apply_filters('em_calendar_output_loop_start', $event); + if( $long_events ){ + //If $long_events is set then show a date as eventful if there is an multi-day event which runs during that day + $event_start_date = strtotime($event->start_date); + $event_end_date = mktime(0,0,0,$month_post,date('t', $event_start_date),$year_post ); + if( $event_end_date == '' ) $event_end_date = $event_start_date; + while( $event_start_date <= $event->end ){ + //Ensure date is within event dates, if so add to eventful days array + $event_eventful_date = date('Y-m-d', $event_start_date); + if( array_key_exists($event_eventful_date, $eventful_days) && is_array($eventful_days[$event_eventful_date]) ){ + $eventful_days[$event_eventful_date][] = $event; + } else { + $eventful_days[$event_eventful_date] = array($event); + } + $event_start_date += (86400); //add a day + } + }else{ + //Only show events on the day that they start + if( isset($eventful_days[$event->event_start_date]) && is_array($eventful_days[$event->event_start_date]) ){ + $eventful_days[$event->event_start_date][] = $event; + } else { + $eventful_days[$event->event_start_date] = array($event); + } + } + } + } + //generate a link argument string containing event search only + $day_link_args = self::get_link_args( array_intersect_key($original_args, EM_Events::get_post_search($args, true) )); + foreach($eventful_days as $day_key => $events) { + if( array_key_exists($day_key, $calendar_array['cells']) ){ + //Get link title for this date + $events_titles = array(); + foreach($events as $event) { + if( !get_option('dbem_display_calendar_events_limit') || count($events_titles) < get_option('dbem_display_calendar_events_limit') ){ + $events_titles[] = $event->output($event_title_format); + }else{ + $events_titles[] = get_option('dbem_display_calendar_events_limit_msg'); + break; + } + } + $calendar_array['cells'][$day_key]['link_title'] = implode( $event_title_separator_format, $events_titles); + + //Get the link to this calendar day + global $wp_rewrite; + if( count($events) > 1 || !get_option('dbem_calendar_direct_links') ){ + if( get_option("dbem_events_page") > 0 ){ + $event_page_link = trailingslashit(get_permalink(get_option("dbem_events_page"))); //PAGE URI OF EM + }else{ + if( $wp_rewrite->using_permalinks() ){ + $event_page_link = trailingslashit(home_url()).EM_POST_TYPE_EVENT_SLUG.'/'; //don't use EM_URI here, since ajax calls this before EM_URI is defined. + }else{ + $event_page_link = trailingslashit(home_url()).'?post_type='.EM_POST_TYPE_EVENT; //don't use EM_URI here, since ajax calls this before EM_URI is defined. + } + } + if( $wp_rewrite->using_permalinks() && !defined('EM_DISABLE_PERMALINKS') ){ + $calendar_array['cells'][$day_key]['link'] = $event_page_link.$day_key."/"; + if( !empty($day_link_args) ){ + $calendar_array['cells'][$day_key]['link'] .= '?'.$day_link_args; + } + }else{ + $joiner = (stristr($event_page_link, "?")) ? "&" : "?"; + $calendar_array['cells'][$day_key]['link'] = $event_page_link.$joiner."calendar_day=".$day_key; + if( !empty($day_link_args) ){ + $calendar_array['cells'][$day_key]['link'] .= 'amp;'.$day_link_args; + } + } + }else{ + foreach($events as $EM_Event){ + $calendar_array['cells'][$day_key]['link'] = $EM_Event->get_permalink(); + } + } + //Add events to array + $calendar_array['cells'][$day_key]['events'] = $events; + } + } + return apply_filters('em_calendar_get',$calendar_array, $args); + } + + function output($args = array(), $wrapper = true) { + //Let month and year REQUEST override for non-JS users + if( !empty($_REQUEST['mo']) || !empty($args['mo']) ){ + $args['month'] = ($_REQUEST['mo']) ? $_REQUEST['mo']:$args['mo']; + } + if( !empty($_REQUEST['yr']) || !empty($args['yr']) ){ + $args['year'] = (!empty($_REQUEST['yr'])) ? $_REQUEST['yr']:$args['yr']; + } + $calendar_array = self::get($args); + $template = (!empty($args['full'])) ? 'templates/calendar-full.php':'templates/calendar-small.php'; + ob_start(); + em_locate_template($template, true, array('calendar'=>$calendar_array,'args'=>$args)); + if($wrapper){ + $calendar = '<div id="em-calendar-'.rand(100,200).'" class="em-calendar-wrapper">'.ob_get_clean().'</div>'; + }else{ + $calendar = ob_get_clean(); + } + return apply_filters('em_calendar_output', $calendar, $args); + } + + + function days_in_month($month, $year) { + return date('t', mktime(0,0,0,$month,1,$year)); + } + + function translate_and_trim($string, $length = 1) { + if(function_exists('mb_substr')){ //fix for diacritic calendar names + return mb_substr(__($string), 0, $length); + }else{ + return substr(__($string), 0, $length); + } + } + + /** + * Helper function to create a link querystring from array which contains arguments with only values that aren't defuaults. + */ + function get_link_args($args = array(), $html_entities=true){ + unset($args['month']); unset($args['year']); + $default_args = self::get_default_search(array()); + foreach($default_args as $arg_key => $arg_value){ + if( !isset($args[$arg_key]) || $args[$arg_key] == $arg_value ){ + unset($args[$arg_key]); + } + } + $qs_array = array(); + foreach($args as $key => $value){ + if(is_array($value)){ + $value = implode(',',$value); + } + $qs_array[] = "$key=".urlencode($value); + } + return ($html_entities) ? implode('&', $qs_array) : implode('&', $qs_array); + } + + + function get_default_search($array=array()){ + //These defaults aren't for db queries, but flags for what to display in calendar output + $defaults = array( + 'full' => 0, //Will display a full calendar with event names + 'long_events' => 0, //Events that last longer than a day + 'scope' => 'future', + 'status' => 1, //approved events only + 'town' => false, + 'state' => false, + 'country' => false, + 'region' => false, + 'blog' => get_current_blog_id(), + 'orderby' => get_option('dbem_display_calendar_orderby'), + 'order' => get_option('dbem_display_calendar_order') + ); + if(is_multisite()){ + global $bp; + if( !is_main_site() && !array_key_exists('blog',$array) ){ + //not the main blog, force single blog search + $array['blog'] = get_current_blog_id(); + }elseif( empty($array['blog']) && get_site_option('dbem_ms_global_events') ) { + $array['blog'] = false; + } + } + $atts = parent::get_default_search($defaults, $array); + $atts['full'] = ($atts['full']==true) ? 1:0; + $atts['long_events'] = ($atts['long_events']==true) ? 1:0; + return apply_filters('em_calendar_get_default_search', $atts, $array, $defaults); + } +} +add_action('init', array('EM_Calendar', 'init')); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-categories-taxonomy.php b/wp-content/plugins/events-manager/classes/em-categories-taxonomy.php new file mode 100644 index 0000000..a9cd7de --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-categories-taxonomy.php @@ -0,0 +1,104 @@ +<?php +class EM_Categories_Taxonomy{ + function init(){ + add_action( EM_TAXONOMY_CATEGORY.'_edit_form_fields', array('EM_Categories_Taxonomy','form'), 10, 1); + add_action( EM_TAXONOMY_CATEGORY.'_add_form_fields', array('EM_Categories_Taxonomy','form'), 10, 1); + add_action( 'edited_'.EM_TAXONOMY_CATEGORY, array('EM_Categories_Taxonomy','save'), 10, 2); + add_action( 'create_'.EM_TAXONOMY_CATEGORY, array('EM_Categories_Taxonomy','save'), 10, 2); + add_action( 'delete_'.EM_TAXONOMY_CATEGORY, array('EM_Categories_Taxonomy','delete'), 10, 2); + + add_filter('manage_edit-'.EM_TAXONOMY_CATEGORY.'_columns' , array('EM_Categories_Taxonomy','columns_add')); + add_filter('manage_'.EM_TAXONOMY_CATEGORY.'_custom_column' , array('EM_Categories_Taxonomy','columns_output'),10,3); + + self::admin_init(); + } + + + function columns_add($columns) { + //prepend ID after checkbox + $columns['cat-id'] = __('ID','dbem'); + return $columns; + } + + function columns_output( $val, $column, $term_id ) { + switch ( $column ) { + case 'cat-id': + return $term_id; + break; + } + return $val; + } + + function admin_init(){ + global $pagenow; + if($pagenow == 'edit-tags.php' && !empty($_GET['taxonomy']) && $_GET['taxonomy'] == EM_TAXONOMY_CATEGORY){ + wp_enqueue_style( 'farbtastic' ); + wp_enqueue_style( 'thickbox' ); + + wp_enqueue_script( 'em-categories-admin', plugins_url().'/events-manager/includes/js/categories-admin.js', array( 'jquery','media-upload','thickbox','farbtastic' ) ); + } + } + + function form($tag){ + $category_color = '#FFFFFF'; + $category_image = ''; + if( $tag != EM_TAXONOMY_CATEGORY ){ //not an add new tag form + $EM_Category = new EM_Category($tag); + $category_color = $EM_Category->get_color(); + $category_image = $EM_Category->get_image_url(); + } + ?> + <tr class="form-field"> + <th scope="row" valign="top"><label for="category-bgcolor">Calendar Color</label></th> + <td> + <input type="text" name="category_bgcolor" id="category-bgcolor" class="colorwell" value="<?php echo esc_attr($category_color); ?>" style="width:100px;"/><br /> + <p class="description"><?php echo sprintf(__('Choose a color for your category. You can access this using the %s placeholder.','dbem'),'<code>#_CATEGORYCOLOR</code>'); ?></p> + <div id="picker" style="position:absolute; display:none; background:#DEDEDE"></div> + </td> + </tr> + <tr class="form-field"> + <th scope="row" valign="top"><label for="product_package_unit_price">Image</label></th> + <td> + <?php if( !empty($category_image) ): ?> + <p><img src="<?php echo $category_image; ?>" /></p> + <?php endif; ?> + <input type="text" name="category_image" id="category-image" value="<?php echo esc_attr($category_image); ?>" style="width:300px;" /> + <input id="upload_image_button" type="button" value="<?php _e('Choose/Upload Image','dbem'); ?>" class="button-secondary" style="width:auto;" /><br /> + <p class="description"><?php echo sprintf(__('Choose an image for your category, which can be displayed using the %s placeholder.','dbem'),'<code>#_CATEGORYIMAGE</code>'); ?></p> + </td> + </tr> + <?php + } + + function save($term_id, $tt_id){ + global $wpdb; + if (!$term_id) return; + if( !empty($_POST['category_bgcolor']) && preg_match('/^#[a-zA-Z0-9]{6}$/', $_POST['category_bgcolor']) ){ + //get results and save/update + $prev_settings = $wpdb->get_results('SELECT meta_value FROM '.EM_META_TABLE." WHERE object_id='{$term_id}' AND meta_key='category-bgcolor'"); + if( count($prev_settings) > 0 ){ + $wpdb->update(EM_META_TABLE, array('object_id'=>$term_id,'meta_value'=>$_POST['category_bgcolor']), array('object_id'=>$term_id,'meta_key'=>'category-bgcolor')); + }else{ + $wpdb->insert(EM_META_TABLE, array('object_id'=>$term_id,'meta_key'=>'category-bgcolor','meta_value'=>$_POST['category_bgcolor'])); + } + } + if( !empty($_POST['category_image']) ){ + //get results and save/update + $prev_settings = $wpdb->get_results('SELECT meta_value FROM '.EM_META_TABLE." WHERE object_id='{$term_id}' AND meta_key='category-image'"); + if( count($prev_settings) > 0 ){ + $wpdb->update(EM_META_TABLE, array('object_id'=>$term_id,'meta_value'=>$_POST['category_image']), array('object_id'=>$term_id,'meta_key'=>'category-image')); + }else{ + $wpdb->insert(EM_META_TABLE, array('object_id'=>$term_id,'meta_key'=>'category-image','meta_value'=>$_POST['category_image'])); + } + } + } + + function delete( $term_id ){ + global $wpdb; + //delete category image and color + $wpdb->query('DELETE FROM '.EM_META_TABLE." WHERE object_id='$term_id' AND (meta_key='category-image' OR meta_key='category-bgcolor')"); + //delete all events category relations + $wpdb->query('DELETE FROM '.EM_META_TABLE." WHERE meta_value='{$term_id}' AND meta_key='event-category'"); + } +} +add_action('admin_init',array('EM_Categories_Taxonomy','init')); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-categories.php b/wp-content/plugins/events-manager/classes/em-categories.php new file mode 100644 index 0000000..9b3c23a --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-categories.php @@ -0,0 +1,321 @@ +<?php +class EM_Categories extends EM_Object implements Iterator{ + + /** + * Array of EM_Category objects for a specific event + * @var array + */ + var $categories = array(); + /** + * Event ID of this set of categories + * @var int + */ + var $event_id; + /** + * Post ID of this set of categories + * @var int + */ + var $post_id; + + /** + * Creates an EM_Categories instance, currently accepts an EM_Event object (gets all Categories for that event) or array of any EM_Category objects, which can be manipulated in bulk with helper functions. + * @param mixed $data + * @return null + */ + function EM_Categories( $data = false ){ + global $wpdb; + $this->ms_global_switch(); + if( is_object($data) && get_class($data) == "EM_Event" && !empty($data->post_id) ){ //Creates a blank categories object if needed + $this->event_id = $data->event_id; + $this->post_id = $data->post_id; + if( EM_MS_GLOBAL && !is_main_site($data->blog_id) ){ + $cat_ids = $wpdb->get_col('SELECT meta_value FROM '.EM_META_TABLE." WHERE object_id='{$this->event_id}' AND meta_key='event-category'"); + foreach($cat_ids as $cat_id){ + $this->categories[$cat_id] = new EM_Category($cat_id); + } + }else{ + $results = get_the_terms( $data->post_id, EM_TAXONOMY_CATEGORY ); + if( is_array($results) ){ + foreach($results as $result){ + $this->categories[$result->term_id] = new EM_Category($result); + } + } + } + }elseif( is_array($data) && $this->array_is_numeric($data) ){ + foreach($data as $category_id){ + $this->categories[$category_id] = new EM_Category($category_id); + } + }elseif( is_array($data) ){ + foreach( $data as $EM_Category ){ + if( get_class($EM_Category) == 'EM_Category'){ + $this->categories[] = $EM_Category; + } + } + } + $this->ms_global_switch_back(); + do_action('em_categories', $this); + } + + function get_post(){ + $this->ms_global_switch(); + $this->categories = array(); + if(!empty($_POST['event_categories']) && $this->array_is_numeric($_POST['event_categories'])){ + foreach( $_POST['event_categories'] as $term ){ + $this->categories[$term] = new EM_Category($term); + } + } + $this->ms_global_switch_back(); + do_action('em_categories_get_post', $this); + } + + function save(){ + $term_slugs = array(); + foreach($this->categories as $EM_Category){ + /* @var $EM_Category EM_Category */ + if( !empty($EM_Category->slug) ) $term_slugs[] = $EM_Category->slug; //save of category will soft-fail if slug is empty + } + if( count($term_slugs) == 0 && get_option('dbem_default_category') > 0 ){ + $default_term = get_term_by('id',get_option('dbem_default_category'), EM_TAXONOMY_CATEGORY); + if($default_term) $term_slugs[] = $default_term->slug; + } + if( count($term_slugs) > 0 ){ + if( is_multisite() ){ + //In MS Global mode, we also save category meta information for global lookups + if( EM_MS_GLOBAL && !empty($this->event_id) ){ + //delete categories + $this->save_index(); + } + if( !EM_MS_GLOBAL || is_main_site() ){ + wp_set_object_terms($this->post_id, $term_slugs, EM_TAXONOMY_CATEGORY); + } + }else{ + wp_set_object_terms($this->post_id, $term_slugs, EM_TAXONOMY_CATEGORY); + } + } + do_action('em_categories_save', $this); + } + + function save_index(){ + global $wpdb; + $wpdb->query('DELETE FROM '.EM_META_TABLE." WHERE object_id='{$this->event_id}' AND meta_key='event-category'"); + foreach($this->categories as $EM_Category){ + $wpdb->insert(EM_META_TABLE, array('meta_value'=>$EM_Category->term_id,'object_id'=>$this->event_id,'meta_key'=>'event-category')); + } + } + + function get( $args = array() ) { + //Quick version, we can accept an array of IDs, which is easy to retrieve + self::ms_global_switch(); + if( self::array_is_numeric($args) ){ //Array of numbers, assume they are event IDs to retreive + $results = get_terms( EM_TAXONOMY_CATEGORY ); + $categories = array(); + foreach($results as $result){ + if( in_array($result->term_id, $args) ){ + $categories[$result->term_id] = new EM_Category($result); + } + } + }else{ + //We assume it's either an empty array or array of search arguments to merge with defaults + $term_args = self::get_default_search($args); + $results = get_terms( EM_TAXONOMY_CATEGORY, $term_args); + + //If we want results directly in an array, why not have a shortcut here? We don't use this in code, so if you're using it and filter the em_categories_get hook, you may want to do this one too. + if( !empty($args['array']) ){ + return apply_filters('em_categories_get_array', $results, $args); + } + + //Make returned results EM_Category objects + $results = (is_array($results)) ? $results:array(); + $categories = array(); + foreach ( $results as $category ){ + $categories[$category->term_id] = new EM_Category($category); + } + } + self::ms_global_switch_back(); + return apply_filters('em_categories_get', $categories, $args); + } + + function output( $args ){ + global $EM_Category; + $EM_Category_old = $EM_Category; //When looping, we can replace EM_Category global with the current event in the loop + //Can be either an array for the get search or an array of EM_Category objects + if( is_object(current($args)) && get_class((current($args))) == 'EM_Category' ){ + $func_args = func_get_args(); + $categories = $func_args[0]; + $args = (!empty($func_args[1])) ? $func_args[1] : array(); + $args = apply_filters('em_categories_output_args', self::get_default_search($args), $categories); + $limit = ( !empty($args['limit']) && is_numeric($args['limit']) ) ? $args['limit']:false; + $offset = ( !empty($args['offset']) && is_numeric($args['offset']) ) ? $args['offset']:0; + $page = ( !empty($args['page']) && is_numeric($args['page']) ) ? $args['page']:1; + }else{ + $args = apply_filters('em_categories_output_args', self::get_default_search($args) ); + $limit = ( !empty($args['limit']) && is_numeric($args['limit']) ) ? $args['limit']:false; + $offset = ( !empty($args['offset']) && is_numeric($args['offset']) ) ? $args['offset']:0; + $page = ( !empty($args['page']) && is_numeric($args['page']) ) ? $args['page']:1; + $args['limit'] = false; + $args['offset'] = false; + $args['page'] = false; + $categories = self::get( $args ); + } + //What format shall we output this to, or use default + $format = ( $args['format'] == '' ) ? get_option( 'dbem_categories_list_item_format' ) : $args['format'] ; + + $output = ""; + $categories_count = count($categories); + $categories = apply_filters('em_categories_output_categories', $categories); + if ( count($categories) > 0 ) { + $category_count = 0; + $categories_shown = 0; + foreach ( $categories as $EM_Category ) { + if( ($categories_shown < $limit || empty($limit)) && ($category_count >= $offset || $offset === 0) ){ + $output .= $EM_Category->output($format); + $categories_shown++; + } + $category_count++; + } + //Add headers and footers to output + if( $format == get_option ( 'dbem_categories_list_item_format' ) ){ + $single_event_format_header = get_option ( 'dbem_categories_list_item_format_header' ); + $single_event_format_header = ( $single_event_format_header != '' ) ? $single_event_format_header : "<ul class='em-categories-list'>"; + $single_event_format_footer = get_option ( 'dbem_categories_list_item_format_footer' ); + $single_event_format_footer = ( $single_event_format_footer != '' ) ? $single_event_format_footer : "</ul>"; + $output = $single_event_format_header . $output . $single_event_format_footer; + } + //Pagination (if needed/requested) + if( !empty($args['pagination']) && !empty($limit) && $categories_count >= $limit ){ + //Show the pagination links (unless there's less than 10 events, or the custom limit) + $page_link_template = preg_replace('/(&|\?)pno=\d+/i','',$_SERVER['REQUEST_URI']); + $page_link_template = em_add_get_params($page_link_template, array('pno'=>'%PAGE%'), false); //don't html encode, so em_paginate does its thing + $output .= apply_filters('em_events_output_pagination', em_paginate( $page_link_template, $categories_count, $limit, $page), $page_link_template, $categories_count, $limit, $page); + } + } else { + $output = get_option ( 'dbem_no_categories_message' ); + } + //FIXME check if reference is ok when restoring object, due to changes in php5 v 4 + $EM_Category_old= $EM_Category; + return apply_filters('em_categories_output', $output, $categories, $args); + } + + function has( $search ){ + if( is_numeric($search) ){ + foreach($this->categories as $EM_Category){ + if($EM_Category->term_id == $search) return apply_filters('em_categories_has', true, $search, $this); + } + }else{ + foreach($this->categories as $EM_Category){ + if($EM_Category->slug == $search) return apply_filters('em_categories_has', true, $search, $this); + } + } + return apply_filters('em_categories_has', false, $search, $this); + } + + function get_first(){ + foreach($this->categories as $EM_Category){ + return $EM_Category; + } + return false; + } + + function get_ids(){ + $ids = array(); + foreach($this->categories as $EM_Category){ + if( !empty($EM_Category->term_id) ){ + $ids[] = $EM_Category->term_id; + } + } + return $ids; + } + + /** + * Gets the event for this object, or a blank event if none exists + * @return EM_Event + */ + function get_event(){ + if( is_numeric($this->event_id) ){ + return em_get_event($this->event_id); + }else{ + return new EM_Event(); + } + } + + /* Overrides EM_Object method to apply a filter to result. Categories won't accept many arguments as you tend to search with events for much else. + * @see wp-content/plugins/categories-manager/classes/EM_Object#build_sql_conditions() + */ + function build_sql_conditions( $args = array() ){ + global $wpdb; + $events_table = EM_EVENTS_TABLE; + $locations_table = EM_LOCATIONS_TABLE; + + $temp_conditions = parent::build_sql_conditions($args); + $conditions = array(); + if( !empty($temp_conditions['category']) ){ + $conditions['category'] = $temp_conditions['category']; + } + return apply_filters( 'em_categories_build_sql_conditions', $conditions, $args ); + } + + /* Overrides EM_Object method to apply a filter to result + * @see wp-content/plugins/categories-manager/classes/EM_Object#build_sql_orderby() + */ + function build_sql_orderby( $args, $accepted_fields, $default_order = 'ASC' ){ + return apply_filters( 'em_categories_build_sql_orderby', parent::build_sql_orderby($args, $accepted_fields, get_option('dbem_categories_default_order')), $args, $accepted_fields, $default_order ); + } + + /* + * Adds custom categories search defaults + * @param array $array + * @return array + * @uses EM_Object#get_default_search() + */ + function get_default_search( $array = array() ){ + $defaults = array( + //added from get_terms, so they don't get filtered out + 'orderby' => 'name', 'order' => 'ASC', + 'hide_empty' => false, 'exclude' => array(), 'exclude_tree' => array(), 'include' => array(), + 'number' => '', 'fields' => 'all', 'slug' => '', 'parent' => '', + 'hierarchical' => true, 'child_of' => 0, 'get' => '', 'name__like' => '', + 'pad_counts' => false, 'offset' => '', 'search' => '', 'cache_domain' => 'core' + ); + return apply_filters('em_categories_get_default_search', parent::get_default_search($defaults,$array), $array, $defaults); + } + + /** + * will return the default search parameter to use according to permission settings + * @return string + */ + function get_default_search_owner(){ + //by default, we only get categories the owner can manage + $defaults = array('owner'=>false); + //by default, we only get categories the owner can manage + if( !current_user_can('edit_categories') ){ + $defaults['owner'] = get_current_user_id(); + break; + }else{ + $defaults['owner'] = false; + break; + } + return $defaults['owner']; + } + + //Iterator Implementation + public function rewind(){ + reset($this->categories); + } + public function current(){ + $var = current($this->categories); + return $var; + } + public function key(){ + $var = key($this->categories); + return $var; + } + public function next(){ + $var = next($this->categories); + return $var; + } + public function valid(){ + $key = key($this->categories); + $var = ($key !== NULL && $key !== FALSE); + return $var; + } +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-category-taxonomy.php b/wp-content/plugins/events-manager/classes/em-category-taxonomy.php new file mode 100644 index 0000000..f90345d --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-category-taxonomy.php @@ -0,0 +1,121 @@ +<?php +class EM_Category_Taxonomy{ + function init(){ + if( !is_admin() ){ + add_filter('archive_template', array('EM_Category_Taxonomy','template')); + add_filter('category_template', array('EM_Category_Taxonomy','template')); + add_filter('parse_query', array('EM_Category_Taxonomy','parse_query')); + } + } + /** + * Overrides archive pages e.g. locations, events, event categories, event tags based on user settings + * @param string $template + * @return string + */ + function template($template){ + global $wp_query, $EM_Category; + if( is_archive() ){ + if( !empty($wp_query->queried_object->taxonomy) && $wp_query->queried_object->taxonomy == EM_TAXONOMY_CATEGORY && get_option('dbem_cp_categories_formats', true)){ + $EM_Category = em_get_category($wp_query->queried_object->term_id); + add_filter('the_content', array('EM_Category_Taxonomy','the_content')); + $wp_query->posts = array(); + $wp_query->posts[0] = new stdClass(); + $wp_query->posts[0]->post_title = $EM_Category->output(get_option('dbem_category_page_title_format')); + $post_array = array('ID', 'post_author', 'post_date','post_date_gmt','post_content','post_excerpt','post_status','comment_status','ping_status','post_password','post_name','to_ping','pinged','post_modified','post_modified_gmt','post_content_filtered','post_parent','guid','menu_order','post_type','post_mime_type','comment_count','filter'); + foreach($post_array as $post_array_item){ + $wp_query->posts[0]->$post_array_item = ''; + } + $wp_query->post = $wp_query->posts[0]; + $wp_query->post_count = 1; + $wp_query->found_posts = 1; + $wp_query->max_num_pages = 1; + //echo "<pre>"; print_r($wp_query); echo "</pre>"; + $template = locate_template(array('page.php','index.php'),false); //category becomes a page + } + } + return $template; + } + + function the_content($content){ + global $wp_query, $EM_Category; + $EM_Category = new EM_Category($wp_query->queried_object); + ob_start(); + em_locate_template('templates/category-single.php',true); + return ob_get_clean(); + } + + function parse_query( ){ + global $wp_query; + if( !empty($wp_query->tax_query->queries[0]['taxonomy']) && $wp_query->tax_query->queries[0]['taxonomy'] == EM_TAXONOMY_CATEGORY) { + //Scope is future + $today = strtotime(date('Y-m-d', current_time('timestamp'))); + if( get_option('dbem_events_current_are_past') ){ + $wp_query->query_vars['meta_query'][] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '>=' ); + }else{ + $wp_query->query_vars['meta_query'][] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); + } + if( get_option('dbem_categories_default_archive_orderby') == 'title'){ + $wp_query->query_vars['orderby'] = 'title'; + }else{ + $wp_query->query_vars['orderby'] = 'meta_value_num'; + $wp_query->query_vars['meta_key'] = get_option('dbem_categories_default_archive_orderby','_start_ts'); + } + $wp_query->query_vars['order'] = get_option('dbem_categories_default_archive_order','ASC'); + } + } +} +EM_Category_Taxonomy::init(); + +/** + * Create an array of Categories. Copied from Walker_CategoryDropdown, but makes it possible for the selected argument to be an array. + * + * @package WordPress + * @since 2.1.0 + * @uses Walker + */ +class EM_Walker_CategoryMultiselect extends Walker { + /** + * @see Walker::$tree_type + * @since 2.1.0 + * @var string + */ + var $tree_type = 'event-category'; + + /** + * @see Walker::$db_fields + * @since 2.1.0 + * @todo Decouple this + * @var array + */ + var $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); + + function __construct(){ + $tree_type = EM_TAXONOMY_CATEGORY; + } + /** + * @see Walker::start_el() + * @since 2.1.0 + * + * @param string $output Passed by reference. Used to append additional content. + * @param object $category Category data object. + * @param int $depth Depth of category. Used for padding. + * @param array $args Uses 'selected', 'show_count', and 'show_last_update' keys, if they exist. + */ + function start_el(&$output, $category, $depth, $args) { + $pad = str_repeat(' ', $depth * 3); + + $cat_name = apply_filters('list_cats', $category->name, $category); + $output .= "\t<option class=\"level-$depth\" value=\"".$category->term_id."\""; + if ( (is_array($args['selected']) && in_array($category->term_id, $args['selected'])) || ($category->term_id == $args['selected']) ) + $output .= ' selected="selected"'; + $output .= '>'; + $output .= $pad.$cat_name; + if ( $args['show_count'] ) + $output .= '  ('. $category->count .')'; + if ( $args['show_last_update'] ) { + $format = 'Y-m-d'; + $output .= '  ' . gmdate($format, $category->last_update_timestamp); + } + $output .= "</option>\n"; + } +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-category.php b/wp-content/plugins/events-manager/classes/em-category.php new file mode 100644 index 0000000..3f54e37 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-category.php @@ -0,0 +1,216 @@ +<?php +/** + * Get an category in a db friendly way, by checking globals and passed variables to avoid extra class instantiations + * @param mixed $id + * @return EM_Category + */ +function em_get_category($id = false) { + global $EM_Category; + //check if it's not already global so we don't instantiate again + if( is_object($EM_Category) && get_class($EM_Category) == 'EM_Category' ){ + if( $EM_Category->term_id == $id ){ + return $EM_Category; + }elseif( is_object($id) && $EM_Category->term_id == $id->term_id ){ + return $EM_Category; + } + } + if( is_object($id) && get_class($id) == 'EM_Category' ){ + return $id; + }else{ + return new EM_Category($id); + } +} +class EM_Category extends EM_Object { + //Taxonomy Fields + var $id = ''; + var $term_id; + var $name; + var $slug; + var $term_group; + var $term_taxonomy_id; + var $taxonomy; + var $description = ''; + var $parent = 0; + var $count; + //extra attributes imposed by EM_Category + var $image_url = ''; + var $color; + + /** + * Gets data from POST (default), supplied array, or from the database if an ID is supplied + * @param $category_data + * @return null + */ + function EM_Category( $category_data = false ) { + global $wpdb; + $this->ms_global_switch(); + //Initialize + $category = array(); + if( !empty($category_data) ){ + //Load category data + if( is_object($category_data) && !empty($category_data->taxonomy) && $category_data->taxonomy == EM_TAXONOMY_CATEGORY ){ + $category = $category_data; + }elseif( !is_numeric($category_data) ){ + $category = get_term_by('slug', $category_data, EM_TAXONOMY_CATEGORY); + }else{ + $category = get_term_by('id', $category_data, EM_TAXONOMY_CATEGORY); + } + } + if( is_object($category) || is_array($category) ){ + foreach($category as $key => $value){ + $this->$key = $value; + } + } + $this->id = $this->term_id; //backward compatability + $this->ms_global_switch_back(); + do_action('em_category',$this, $category_data); + } + + function get_color(){ + if( empty($this->color) ){ + global $wpdb; + $color = $wpdb->get_var('SELECT meta_value FROM '.EM_META_TABLE." WHERE object_id='{$this->term_id}' AND meta_key='category-bgcolor' LIMIT 1"); + $this->color = ($color != '') ? $color:'#FFFFFF'; + } + return $this->color; + } + + function get_image_url(){ + if( empty($this->image_url) ){ + global $wpdb; + $image_url = $wpdb->get_var('SELECT meta_value FROM '.EM_META_TABLE." WHERE object_id='{$this->term_id}' AND meta_key='category-image' LIMIT 1"); + $this->image_url = ($image_url != '') ? $image_url:''; + } + return $this->image_url; + } + + function get_url(){ + if( empty($this->link) ){ + $this->ms_global_switch(); + $this->link = get_term_link($this->slug, EM_TAXONOMY_CATEGORY); + $this->ms_global_switch_back(); + if ( is_wp_error($this->link) ) $this->link = ''; + } + return $this->link; + } + + /** + * Depreciated, don't use. + * @return mixed + */ + function has_events(){ + global $wpdb; + return false; + } + + function output_single($target = 'html'){ + $format = get_option ( 'dbem_category_page_format' ); + return apply_filters('em_category_output_single', $this->output($format, $target), $this, $target); + } + + function output($format, $target="html") { + preg_match_all('/\{([a-zA-Z0-9_]+)\}([^{]+)\{\/[a-zA-Z0-9_]+\}/', $format, $conditionals); + if( count($conditionals[0]) > 0 ){ + //Check if the language we want exists, if not we take the first language there + foreach($conditionals[1] as $key => $condition){ + $format = str_replace($conditionals[0][$key], apply_filters('em_category_output_condition', '', $condition, $conditionals[0][$key], $this), $format); + } + } + $category_string = $format; + preg_match_all("/(#@?_?[A-Za-z0-9]+)({([a-zA-Z0-9,]+)})?/", $format, $placeholders); + foreach($placeholders[1] as $key => $result) { + $replace = ''; + $full_result = $placeholders[0][$key]; + switch( $result ){ + case '#_CATEGORYNAME': + $replace = $this->name; + break; + case '#_CATEGORYID': + $replace = $this->term_id; + break; + case '#_CATEGORYNOTES': + case '#_CATEGORYDESCRIPTION': + $replace = $this->description; + break; + case '#_CATEGORYIMAGE': + case '#_CATEGORYIMAGEURL': + if( $this->get_image_url() != ''){ + if($result == '#_CATEGORYIMAGEURL'){ + $replace = $this->get_image_url(); + }else{ + if( empty($placeholders[3][$key]) ){ + $replace = "<img src='".esc_url($this->get_image_url())."' alt='".esc_attr($this->name)."'/>"; + }else{ + $image_size = explode(',', $placeholders[3][$key]); + if( $this->array_is_numeric($image_size) && count($image_size) > 1 ){ + $replace = "<img src='".em_get_thumbnail_url($this->get_image_url(), $image_size[0], $image_size[1])."' alt='".esc_attr($this->name)."'/>"; + }else{ + $replace = "<img src='".esc_url($this->get_image_url())."' alt='".esc_attr($this->name)."'/>"; + } + } + } + } + break; + case '#_CATEGORYCOLOR': + $replace = $this->get_color(); + break; + case '#_CATEGORYLINK': + case '#_CATEGORYURL': + $link = $this->get_url(); + $replace = ($result == '#_CATEGORYURL') ? $link : '<a href="'.$link.'">'.esc_html($this->name).'</a>'; + break; + case '#_CATEGORYEVENTSPAST': //depreciated, erroneous documentation, left for compatability + case '#_CATEGORYEVENTSNEXT': //depreciated, erroneous documentation, left for compatability + case '#_CATEGORYEVENTSALL': //depreciated, erroneous documentation, left for compatability + case '#_CATEGORYPASTEVENTS': + case '#_CATEGORYNEXTEVENTS': + case '#_CATEGORYALLEVENTS': + //convert depreciated placeholders for compatability + $result = ($result == '#_CATEGORYEVENTSPAST') ? '#_CATEGORYPASTEVENTS':$result; + $result = ($result == '#_CATEGORYEVENTSNEXT') ? '#_CATEGORYNEXTEVENTS':$result; + $result = ($result == '#_CATEGORYEVENTSALL') ? '#_CATEGORYALLEVENTS':$result; + //forget it ever happened? :/ + if ($result == '#_CATEGORYPASTEVENTS'){ $scope = 'past'; } + elseif ( $result == '#_CATEGORYNEXTEVENTS' ){ $scope = 'future'; } + else{ $scope = 'all'; } + $events = EM_Events::get( array('category'=>$this->term_id, 'scope'=>$scope) ); + if ( count($events) > 0 ){ + $replace .= get_option('dbem_category_event_list_item_header_format','<ul>'); + foreach($events as $EM_Event){ + $replace .= $EM_Event->output(get_option('dbem_category_event_list_item_format')); + } + $replace .= get_option('dbem_category_event_list_item_footer_format'); + } else { + $replace = get_option('dbem_category_no_events_message','</ul>'); + } + break; + default: + $replace = $full_result; + break; + } + $replace = apply_filters('em_category_output_placeholder', $replace, $this, $full_result, $target); //USE WITH CAUTION! THIS MIGHT GET RENAMED + $category_string = str_replace($full_result, $replace , $category_string ); + } + $name_filter = ($target == "html") ? 'dbem_general':'dbem_general_rss'; //TODO remove dbem_ filters + $category_string = str_replace('#_CATEGORY', apply_filters($name_filter, $this->name) , $category_string ); //Depreciated + return apply_filters('em_category_output', $category_string, $this, $format, $target); + } + + function can_manage( $capability_owner = 'edit_categories', $capability_admin = false ){ + global $em_capabilities_array; + //Figure out if this is multisite and require an extra bit of validation + $multisite_check = true; + $can_manage = current_user_can($capability_owner); + //if multisite and supoer admin, just return true + if( is_multisite() && is_super_admin() ){ return true; } + if( EM_MS_GLOBAL && !is_main_site() ){ + //User can't admin this bit, as they're on a sub-blog + $can_manage = false; + if(array_key_exists($capability_owner, $em_capabilities_array) ){ + $this->add_error( $em_capabilities_array[$capability_owner]); + } + } + return $can_manage; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-event-post-admin.php b/wp-content/plugins/events-manager/classes/em-event-post-admin.php new file mode 100644 index 0000000..2343d37 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-event-post-admin.php @@ -0,0 +1,382 @@ +<?php +/* + * Events Edit Page + */ +class EM_Event_Post_Admin{ + function init(){ + global $pagenow; + if($pagenow == 'post.php' || $pagenow == 'post-new.php' ){ //only needed if editing post + add_action('admin_head', array('EM_Event_Post_Admin','admin_head')); + //Meta Boxes + add_action('add_meta_boxes', array('EM_Event_Post_Admin','meta_boxes')); + //Notices + add_action('admin_notices',array('EM_Event_Post_Admin','admin_notices')); + } + //Save/Edit actions + add_action('save_post',array('EM_Event_Post_Admin','save_post'),10,1); + add_action('before_delete_post',array('EM_Event_Post_Admin','before_delete_post'),10,1); + add_action('trashed_post',array('EM_Event_Post_Admin','trashed_post'),10,1); + add_action('untrash_post',array('EM_Event_Post_Admin','untrash_post'),10,1); + add_action('untrashed_post',array('EM_Event_Post_Admin','untrashed_post'),10,1); + //Notices + add_action('post_updated_messages',array('EM_Event_Post_Admin','admin_notices_filter'),1,1); + } + + function admin_head(){ + global $post, $EM_Event; + if( !empty($post) && $post->post_type == EM_POST_TYPE_EVENT ){ + $EM_Event = em_get_event($post->ID, 'post_id'); + } + } + + function admin_notices(){ + //When editing + global $post, $EM_Event, $pagenow; + if( $pagenow == 'post.php' && ($post->post_type == EM_POST_TYPE_EVENT || $post->post_type == 'event-recurring') ){ + if ( $EM_Event->is_recurring() ) { + $warning = "<p><strong>".__( 'WARNING: This is a recurring event.', 'dbem' )."</strong></p>"; + $warning .= "<p>". __( 'Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event.', 'dbem' ); + ?><div class="updated"><?php echo $warning; ?></div><?php + } elseif ( $EM_Event->is_recurrence() ) { + $warning = "<p><strong>".__('WARNING: This is a recurrence in a set of recurring events.', 'dbem')."</strong></p>"; + $warning .= "<p>". sprintf(__('If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, <a href="%s">detach it</a>.', 'dbem' ), $EM_Event->get_detach_url())."</p>"; + $warning .= "<p>".sprintf(__('To manage the whole set, <a href="%s">edit the recurring event template</a>.', 'dbem'),admin_url('post.php?action=edit&post='.$EM_Event->get_event_recurrence()->post_id))."</p>"; + ?><div class="updated"><?php echo $warning; ?></div><?php + } + if( !empty($EM_Event->group_id) && function_exists('groups_get_group') ){ + $group = groups_get_group(array('group_id'=>$EM_Event->group_id)); + $warning = sprintf(__('WARNING: This is a event belonging to the group "%s". Other group admins can also modify this event.', 'dbem'), $group->name); + ?><div class="updated"><p><?php echo $warning; ?></p></div><?php + } + } + } + + function admin_notices_filter($messages){ + //When editing + global $post, $EM_Notices; + if( $post->post_type == EM_POST_TYPE_EVENT || $post->post_type == 'event-recurring' ){ + if ( $EM_Notices->count_errors() > 0 ) { + unset($_GET['message']); + } + } + return $messages; + } + + function save_post($post_id){ + global $wpdb, $EM_Event, $EM_Location, $EM_Notices; + $post_type = get_post_type($post_id); + $is_post_type = $post_type == EM_POST_TYPE_EVENT || $post_type == 'event-recurring'; + $saving_status = !in_array(get_post_status($post_id), array('trash','auto-draft')) && !defined('DOING_AUTOSAVE'); + if(!defined('UNTRASHING_'.$post_id) && $is_post_type && $saving_status ){ + if( wp_verify_nonce($_REQUEST['_emnonce'], 'edit_event') ){ + //this is only run if we know form data was submitted, hence the nonce + $EM_Event = em_get_event($post_id, 'post_id'); + do_action('em_event_save_pre', $EM_Event); //technically, the event is saved... but the meta isn't. wp doesn't give an pre-intervention action for this (or does it?) + //Handle Errors by making post draft + $get_meta = $EM_Event->get_post_meta(); + $save_meta = $EM_Event->save_meta(); + $EM_Event->get_categories()->save(); //save categories in case of default category + if( !$get_meta || !$save_meta ){ + //failed somewhere, set to draft, don't publish + $EM_Event->set_status(null, true); + if( $EM_Event->is_recurring() ){ + $EM_Notices->add_error( '<strong>'.__('Your event details are incorrect and recurrences cannot be created, please correct these errors first:','dbem').'</strong>', true); //Always seems to redirect, so we make it static + }else{ + $EM_Notices->add_error( '<strong>'.sprintf(__('Your %s details are incorrect and cannot be published, please correct these errors first:','dbem'),__('event','dbem')).'</strong>', true); //Always seems to redirect, so we make it static + } + $EM_Notices->add_error($EM_Event->get_errors(), true); //Always seems to redirect, so we make it static + apply_filters('em_event_save', false, $EM_Event); + }else{ + //if this is just published, we need to email the user about the publication, or send to pending mode again for review + if( (!$EM_Event->is_recurring() && !current_user_can('publish_events')) || ($EM_Event->is_recurring() && !current_user_can('publish_recurring_events')) ){ + if( $EM_Event->is_published() ){ $EM_Event->set_status(0, true); } //no publishing and editing... security threat + }else{ + $EM_Event->send_approval_notification(); + } + apply_filters('em_event_save', true, $EM_Event); + } + }else{ + //we're updating only the quick-edit style information, which is only post info saved into the index + $EM_Event = em_get_event($post_id, 'post_id'); //grab event, via post info + if( $EM_Event->validate() ){ + do_action('em_event_save_pre', $EM_Event); //technically, the event is saved... but the meta isn't. wp doesn't give an pre-intervention action for this (or does it?) + //first things first, we must make sure we have an index, if not, reset it to a new one: + $event_truly_exists = $wpdb->get_var('SELECT event_id FROM '.EM_EVENTS_TABLE." WHERE event_id={$EM_Event->event_id}") == $EM_Event->event_id; + if(empty($EM_Event->event_id) || !$event_truly_exists){ $EM_Event->save_meta(); } + //we can save the status now + $event_status = $EM_Event->get_status(true); + //if this is just published, we need to email the user about the publication, or send to pending mode again for review + if( (!$EM_Event->is_recurring() && !current_user_can('publish_events')) || ($EM_Event->is_recurring() && !current_user_can('publish_recurring_events')) ){ + if( $EM_Event->is_published() ){ $EM_Event->set_status(0, true); } //no publishing and editing... security threat + }else{ + $EM_Event->previous_status = $EM_Event->get_previous_status(); //save previous status into object before approving + $EM_Event->send_approval_notification(); + } + //now update the db + $wpdb->query("UPDATE ".EM_EVENTS_TABLE." SET event_name='{$EM_Event->event_name}', event_slug='{$EM_Event->event_slug}', event_status={$event_status}, event_private={$EM_Event->event_private} WHERE event_id='{$EM_Event->event_id}'"); + if( $EM_Event->is_recurring() && $EM_Event->is_published()){ + //recurrences are (re)saved only if event is published + $EM_Event->save_events(); + } + apply_filters('em_event_save', true, $EM_Event); + }else{ + do_action('em_event_save_pre', $EM_Event); //technically, the event is saved... but the meta isn't. wp doesn't give an pre-intervention action for this (or does it?) + //Event doesn't validate, so set status to null + $EM_Event->set_status(null, true); + apply_filters('em_event_save', false, $EM_Event); + } + } + self::maybe_publish_location($EM_Event); + } + } + + /** + * Publish the location if the event has just been approved and the location is pending. We assume an editor published the event and approves the location too. + * @param EM_Event $EM_Event + */ + function maybe_publish_location($EM_Event){ + //do a dirty update for location too if it's not published + if( $EM_Event->is_published() && !empty($EM_Event->location_id) ){ + $EM_Location = $EM_Event->get_location(); + if( $EM_Location->location_status !== 1 ){ + //let's also publish the location + $EM_Location->set_status(1, true); + } + } + } + + function before_delete_post($post_id){ + if(get_post_type($post_id) == EM_POST_TYPE_EVENT){ + $EM_Event = em_get_event($post_id,'post_id'); + $EM_Event->delete_meta(); + } + } + + function trashed_post($post_id){ + if(get_post_type($post_id) == EM_POST_TYPE_EVENT){ + global $EM_Notices; + $EM_Event = em_get_event($post_id,'post_id'); + $EM_Event->set_status(null); + $EM_Notices->remove_all(); //no validation/notices needed + } + } + + function untrash_post($post_id){ + if(get_post_type($post_id) == EM_POST_TYPE_EVENT){ + //set a constant so we know this event doesn't need 'saving' + if(!defined('UNTRASHING_'.$post_id)) define('UNTRASHING_'.$post_id, true); + } + } + + function untrashed_post($post_id){ + if(get_post_type($post_id) == EM_POST_TYPE_EVENT){ + global $EM_Notices; + $EM_Event = em_get_event($post_id,'post_id'); + $EM_Event->set_status(1); + $EM_Notices->remove_all(); //no validation/notices needed + } + } + + function meta_boxes(){ + global $EM_Event; + if( !empty($EM_Event->event_owner_anonymous) ){ + add_meta_box('em-event-anonymous', __('Anonymous Submitter Info','dbem'), array('EM_Event_Post_Admin','meta_box_anonymous'),EM_POST_TYPE_EVENT, 'side','high'); + } + add_meta_box('em-event-when', __('When','dbem'), array('EM_Event_Post_Admin','meta_box_date'),EM_POST_TYPE_EVENT, 'side','high'); + if(get_option('dbem_locations_enabled', true)){ + add_meta_box('em-event-where', __('Where','dbem'), array('EM_Event_Post_Admin','meta_box_location'),EM_POST_TYPE_EVENT, 'normal','high'); + } + if( defined('WP_DEBUG') && WP_DEBUG ){ + add_meta_box('em-event-meta', 'Event Meta (debugging only)', array('EM_Event_Post_Admin','meta_box_metadump'),EM_POST_TYPE_EVENT, 'normal','high'); + } + if(get_option('dbem_rsvp_enabled', true)){ + add_meta_box('em-event-bookings', __('Bookings/Registration','dbem'), array('EM_Event_Post_Admin','meta_box_bookings'),EM_POST_TYPE_EVENT, 'normal','high'); + if( !empty($EM_Event->event_id) && $EM_Event->event_rsvp ){ + add_meta_box('em-event-bookings-stats', __('Bookings Stats','dbem'), array('EM_Event_Post_Admin','meta_box_bookings_stats'),EM_POST_TYPE_EVENT, 'side','core'); + } + } + if( get_option('dbem_attributes_enabled', true) ){ + add_meta_box('em-event-attributes', __('Attributes','dbem'), array('EM_Event_Post_Admin','meta_box_attributes'),EM_POST_TYPE_EVENT, 'normal','default'); + } + if( EM_MS_GLOBAL && !is_main_site() && get_option('dbem_categories_enabled') ){ + add_meta_box('em-event-categories', __('Site Categories','dbem'), array('EM_Event_Post_Admin','meta_box_ms_categories'),EM_POST_TYPE_EVENT, 'side','low'); + } + } + + function meta_box_metadump(){ + global $post,$EM_Event; + echo "<pre>"; print_r($EM_Event); echo "</pre>"; + } + + function meta_box_anonymous(){ + global $EM_Event; + ?> + <div class='updated'><p><?php _e('This event was submitted by a guest. You will find their details in the <em>Anonymous Submitter Info</em> box','dbem')?></p></div> + <p><strong><?php _e('Name','dbem'); ?> :</strong> <?php echo $EM_Event->event_owner_name; ?></p> + <p><strong><?php _e('Name','dbem'); ?> :</strong> <?php echo $EM_Event->event_owner_email; ?></p> + <?php + } + + function meta_box_date(){ + //create meta box check of date nonce + ?><input type="hidden" name="_emnonce" value="<?php echo wp_create_nonce('edit_event'); ?>" /><?php + em_locate_template('forms/event/when.php', true); + } + + function meta_box_bookings_stats(){ + em_locate_template('forms/event/booking-stats.php',true); + } + + function meta_box_bookings(){ + em_locate_template('forms/event/bookings.php', true); + add_action('admin_footer',array('EM_Event_Post_Admin','meta_box_bookings_overlay')); + } + + function meta_box_bookings_overlay(){ + em_locate_template('forms/tickets-form.php', true); //put here as it can't be in the add event form + } + + function meta_box_attributes(){ + em_locate_template('forms/event/attributes.php',true); + } + + function meta_box_location(){ + em_locate_template('forms/event/location.php',true); + } + + function meta_box_ms_categories(){ + global $EM_Event; + $categories = EM_Categories::get(array('orderby'=>'category_name','hide_empty'=>false)); + ?> + <?php if( count($categories) > 0 ): ?> + <p> + <?php foreach( $categories as $EM_Category ):?> + <label><input type="checkbox" name="event_categories[]" value="<?php echo $EM_Category->id; ?>" <?php if($EM_Event->get_categories()->has($EM_Category->id)) echo 'checked="checked"'; ?> /> <?php echo $EM_Category->name ?></label><br /> + <?php endforeach; ?> + </p> + <?php else: ?> + <p><?php sprintf(__('No categories available, <a href="%s">create one here first</a>','dbem'), get_bloginfo('wpurl').'/wp-admin/admin.php?page=events-manager-categories'); ?></p> + <?php endif; ?> + <!-- END Categories --> + <?php + } +} +add_action('admin_init',array('EM_Event_Post_Admin','init')); + +/* + * Recurring Events + */ +class EM_Event_Recurring_Post_Admin{ + function init(){ + global $pagenow; + if($pagenow == 'post.php' || $pagenow == 'post-new.php' ){ //only needed if editing post + add_action('admin_head', array('EM_Event_Recurring_Post_Admin','admin_head')); + //Meta Boxes + add_action('add_meta_boxes', array('EM_Event_Recurring_Post_Admin','meta_boxes')); + //Notices + add_action('admin_notices',array('EM_Event_Post_Admin','admin_notices')); //shared with posts + } + //Save/Edit actions + add_action('before_delete_post',array('EM_Event_Recurring_Post_Admin','before_delete_post'),10,1); + add_action('trashed_post',array('EM_Event_Recurring_Post_Admin','trashed_post'),10,1); + add_action('untrash_post',array('EM_Event_Recurring_Post_Admin','untrash_post'),10,1); + add_action('untrashed_post',array('EM_Event_Recurring_Post_Admin','untrashed_post'),10,1); + //Notices + add_action('post_updated_messages',array('EM_Event_Post_Admin','admin_notices_filter'),1,1); //shared with posts + } + + function admin_head(){ + global $post, $EM_Event; + if( !empty($post) && $post->post_type == 'event-recurring' ){ + $EM_Event = em_get_event($post->ID, 'post_id'); + //quick hacks to make event admin table make more sense for events + ?> + <script type="text/javascript"> + jQuery(document).ready( function($){ + if(!EM.recurrences_menu){ + $('#menu-posts-'+EM.event_post_type+', #menu-posts-'+EM.event_post_type+' > a').addClass('wp-has-current-submenu'); + } + }); + </script> + <?php + } + } + + function before_delete_post($post_id){ + if(get_post_type($post_id) == 'event-recurring'){ + $EM_Event = em_get_event($post_id,'post_id'); + //now delete recurrences + $events_array = EM_Events::get( array('recurrence'=>$EM_Event->event_id, 'scope'=>'all', 'status'=>'all' ) ); + foreach($events_array as $event){ + /* @var $event EM_Event */ + if($EM_Event->event_id == $event->recurrence_id && !empty($event->recurrence_id) ){ //double check the event is a recurrence of this event + wp_delete_post($event->post_id, true); + } + } + $EM_Event->post_type = EM_POST_TYPE_EVENT; //trick it into thinking it's one event. + $EM_Event->delete_meta(); + } + } + + function trashed_post($post_id){ + if(get_post_type($post_id) == 'event-recurring'){ + global $EM_Notices, $wpdb; + $EM_Event = em_get_event($post_id,'post_id'); + $EM_Event->set_status(null); + //now trash recurrences + $events_array = EM_Events::get( array('recurrence_id'=>$EM_Event->event_id, 'scope'=>'all', 'status'=>'all' ) ); + foreach($events_array as $event){ + /* @var $event EM_Event */ + if($EM_Event->event_id == $event->recurrence_id ){ //double check the event is a recurrence of this event + wp_trash_post($event->post_id); + } + } + $EM_Notices->remove_all(); //no validation/notices needed + } + } + + function untrash_post($post_id){ + if(get_post_type($post_id) == 'event-recurring'){ + global $wpdb; + //set a constant so we know this event doesn't need 'saving' + if(!defined('UNTRASHING_'.$post_id)) define('UNTRASHING_'.$post_id, true); + $EM_Event = em_get_event($post_id,'post_id'); + $wpdb->query('UPDATE '.EM_EVENTS_TABLE.' SET event_status='.$EM_Event->event_status.' WHERE event_id='.$EM_Event->event_id); + $events_array = EM_Events::get( array('recurrence_id'=>$EM_Event->event_id, 'scope'=>'all', 'status'=>'all' ) ); + foreach($events_array as $event){ + /* @var $event EM_Event */ + if($EM_Event->event_id == $event->recurrence_id){ + wp_untrash_post($event->post_id); + } + } + } + } + + function untrashed_post($post_id){ + if(get_post_type($post_id) == 'event-recurring'){ + global $EM_Notices,$EM_Event; + $EM_Event->set_status(1); + $EM_Notices->remove_all(); //no validation/notices needed + } + } + + function meta_boxes(){ + add_meta_box('em-event-recurring', __('Recurrences','dbem'), array('EM_Event_Recurring_Post_Admin','meta_box_recurrence'),'event-recurring', 'normal','high'); + //add_meta_box('em-event-meta', 'Event Meta (debugging only)', array('EM_Event_Post_Admin','meta_box_metadump'),'event-recurring', 'normal','high'); + add_meta_box('em-event-where', __('Where','dbem'), array('EM_Event_Post_Admin','meta_box_location'),'event-recurring', 'normal','high'); + if(get_option('dbem_rsvp_enabled')){ + add_meta_box('em-event-bookings', __('Bookings/Registration','dbem'), array('EM_Event_Post_Admin','meta_box_bookings'),'event-recurring', 'normal','high'); + } + if( get_option('dbem_attributes_enabled') ){ + add_meta_box('em-event-attributes', __('Attributes','dbem'), array('EM_Event_Post_Admin','meta_box_attributes'),'event-recurring', 'normal','default'); + } + if( EM_MS_GLOBAL && !is_main_site() && get_option('dbem_categories_enabled') ){ + add_meta_box('em-event-categories', __('Site Categories','dbem'), array('EM_Event_Post_Admin','meta_box_ms_categories'),'event-recurring', 'side','low'); + } + } + + function meta_box_recurrence(){ + em_locate_template('forms/event/recurring-when.php', true); + } +} +add_action('admin_init',array('EM_Event_Recurring_Post_Admin','init')); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-event-post.php b/wp-content/plugins/events-manager/classes/em-event-post.php new file mode 100644 index 0000000..f9757f1 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-event-post.php @@ -0,0 +1,259 @@ +<?php +/** + * Controls how events are queried and displayed via the WordPress Custom Post APIs + * @author marcus + * + */ +class EM_Event_Post { + function init(){ + global $wp_query; + //Front Side Modifiers + if( !is_admin() ){ + //override single page with formats? + add_filter('the_content', array('EM_Event_Post','the_content')); + //display as page template? + if( get_option('dbem_cp_events_template_page') ){ + add_filter('single_template',array('EM_Event_Post','single_template')); + } + //Override post template tags + add_filter('the_date',array('EM_Event_Post','the_date')); + add_filter('get_the_date',array('EM_Event_Post','the_date'),10,2); + add_filter('the_category',array('EM_Event_Post','the_category'),10,3); + } + add_action('parse_query', array('EM_Event_Post','parse_query')); + } + + /** + * Overrides the default post format of an event and can display an event as a page, which uses the page.php template. + * @param string $template + * @return string + */ + function single_template($template){ + global $post; + if( !locate_template('single-'.EM_POST_TYPE_EVENT.'.php') && $post->post_type == EM_POST_TYPE_EVENT ){ + $template = locate_template(array('page.php','index.php'),false); + } + return $template; + } + + function the_content( $content ){ + global $post, $EM_Event; + if( $post->post_type == EM_POST_TYPE_EVENT ){ + if( is_archive() || is_search() ){ + if(get_option('dbem_cp_events_archive_formats')){ + $EM_Event = em_get_event($post); + $content = $EM_Event->output(get_option('dbem_event_list_item_format')); + } + }else{ + if( get_option('dbem_cp_events_formats') && !post_password_required() ){ + $EM_Event = em_get_event($post); + ob_start(); + em_locate_template('templates/event-single.php',true); + $content = ob_get_clean(); + } + } + } + return $content; + } + + function the_date( $the_date, $d = '' ){ + global $post; + if( $post->post_type == EM_POST_TYPE_EVENT ){ + $EM_Event = em_get_event($post); + if ( '' == $d ){ + $the_date = date(get_option('date_format'), $EM_Event->start); + }else{ + $the_date = date($d, $EM_Event->start); + } + } + return $the_date; + } + + function the_category( $thelist, $separator = '', $parents='' ){ + global $post, $wp_rewrite; + if( $post->post_type == EM_POST_TYPE_EVENT ){ + $EM_Event = em_get_event($post); + $categories = $EM_Event->get_categories(); + if( empty($categories) ) return ''; + + /* Copied from get_the_category_list function, with a few minor edits to make urls work, and removing parent stuff (for now) */ + $rel = ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) ? 'rel="category tag"' : 'rel="category"'; + + $thelist = ''; + if ( '' == $separator ) { + $thelist .= '<ul class="post-categories">'; + foreach ( $categories as $category ) { + $thelist .= "\n\t<li>"; + switch ( strtolower( $parents ) ) { + case 'multiple': + $thelist .= '<a href="' . $category->get_url() . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a></li>'; + break; + case 'single': + $thelist .= '<a href="' . $category->get_url() . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>'; + $thelist .= $category->name.'</a></li>'; + break; + case '': + default: + $thelist .= '<a href="' . $category->get_url() . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a></li>'; + } + } + $thelist .= '</ul>'; + } else { + $i = 0; + foreach ( $categories as $category ) { + if ( 0 < $i ) + $thelist .= $separator; + switch ( strtolower( $parents ) ) { + case 'multiple': + $thelist .= '<a href="' . $category->get_url() . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a>'; + break; + case 'single': + $thelist .= '<a href="' . $category->get_url() . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>'; + $thelist .= "$category->name</a>"; + break; + case '': + default: + $thelist .= '<a href="' . $category->get_url() . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '" ' . $rel . '>' . $category->name.'</a>'; + } + ++$i; + } + } + /* End copying */ + } + return $thelist; + } + + function parse_query( ){ + global $wp_query; + //Search Query Filtering + if( !is_admin() ){ + if( !empty($wp_query->query_vars['s']) && !get_option('dbem_cp_events_search_results') ){ + $wp_query->query_vars['post_type'] = array_diff( get_post_types(array('exclude_from_search' => false)), array(EM_POST_TYPE_EVENT)); + } + }else{ + if( !empty($wp_query->query_vars[EM_TAXONOMY_CATEGORY]) && is_numeric($wp_query->query_vars[EM_TAXONOMY_CATEGORY]) ){ + //sorts out filtering admin-side as it searches by id + $term = get_term_by('id', $wp_query->query_vars[EM_TAXONOMY_CATEGORY], EM_TAXONOMY_CATEGORY); + $wp_query->query_vars[EM_TAXONOMY_CATEGORY] = ( $term !== false && !is_wp_error($term) )? $term->name:0; + } + } + //Scoping + if( !empty($wp_query->query_vars['post_type']) && ($wp_query->query_vars['post_type'] == EM_POST_TYPE_EVENT || $wp_query->query_vars['post_type'] == 'event-recurring') && (empty($wp_query->query_vars['post_status']) || !in_array($wp_query->query_vars['post_status'],array('trash','pending','draft'))) ) { + //Let's deal with the scope - default is future + if( is_admin() ){ + $scope = $wp_query->query_vars['scope'] = (!empty($_REQUEST['scope'])) ? $_REQUEST['scope']:'future'; + //TODO limit what a user can see admin side for events/locations/recurring events + }else{ + if( !empty($wp_query->query_vars['calendar_day']) ) $wp_query->query_vars['scope'] = $wp_query->query_vars['calendar_day']; + if( empty($wp_query->query_vars['scope']) ){ + if( is_archive() ){ + $scope = $wp_query->query_vars['scope'] = get_option('dbem_events_page_scope'); + }else{ + $scope = $wp_query->query_vars['scope'] = 'all'; //otherwise we'll get 404s for past events + } + }else{ + $scope = $wp_query->query_vars['scope']; + } + } + $query = array(); + $time = current_time('timestamp'); + if ( preg_match ( "/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $scope ) ) { + $today = strtotime($scope); + $tomorrow = $today + 60*60*24-1; + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => array($today,$tomorrow), 'compare' => 'BETWEEN' ); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $tomorrow, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); + } + }elseif ($scope == "future"){ + $today = strtotime(date('Y-m-d', $time)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '>=' ); + }else{ + $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); + } + }elseif ($scope == "past"){ + $today = strtotime(date('Y-m-d', $time)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '<' ); + }else{ + $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '<' ); + } + }elseif ($scope == "today"){ + $today = strtotime(date('Y-m-d', $time)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + //date must be only today + $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '='); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); + } + }elseif ($scope == "tomorrow"){ + $tomorrow = strtotime(date('Y-m-d',$time+60*60*24)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + //date must be only tomorrow + $query[] = array( 'key' => '_start_ts', 'value' => $tomorrow, 'compare' => '='); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $tomorrow, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $tomorrow, 'compare' => '>=' ); + } + }elseif ($scope == "month"){ + $start_month = strtotime(date('Y-m-d',$time)); + $end_month = strtotime(date('Y-m-t',$time)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => array($start_month,$end_month), 'type' => 'numeric', 'compare' => 'BETWEEN'); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $end_month, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $start_month, 'compare' => '>=' ); + } + }elseif ($scope == "next-month"){ + $start_month_timestamp = strtotime('+1 month', $time); //get the end of this month + 1 day + $start_month = strtotime(date('Y-m-1',$start_month_timestamp)); + $end_month = strtotime(date('Y-m-t',$start_month_timestamp)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => array($start_month,$end_month), 'type' => 'numeric', 'compare' => 'BETWEEN'); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $end_month, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $start_month, 'compare' => '>=' ); + } + }elseif( preg_match('/(\d\d?)\-months/',$scope,$matches) ){ // next x months means this month (what's left of it), plus the following x months until the end of that month. + $months_to_add = $matches[1]; + $start_month = strtotime(date('Y-m-d',$time)); + $end_month = strtotime(date('Y-m-t',strtotime("+$months_to_add month", $time))); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => array($start_month,$end_month), 'type' => 'numeric', 'compare' => 'BETWEEN'); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $end_month, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $start_month, 'compare' => '>=' ); + } + } + if( !empty($query) && is_array($query) ){ + $wp_query->query_vars['meta_query'] = $query; + } + if( is_admin() ){ + //admin areas don't need special ordering, so make it simple + $wp_query->query_vars['orderby'] = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby']:'meta_value_num'; + $wp_query->query_vars['meta_key'] = '_start_ts'; + $wp_query->query_vars['order'] = (!empty($_REQUEST['order'])) ? $_REQUEST['order']:'ASC'; + }else{ + if( get_option('dbem_events_default_archive_orderby') == 'title'){ + $wp_query->query_vars['orderby'] = 'title'; + $wp_query->query_vars['order'] = get_option('dbem_events_default_archive_order','ASC'); + }else{ + $wp_query->query_vars['orderby'] = 'meta_value_num'; + $wp_query->query_vars['meta_key'] = '_start_ts'; + } + $wp_query->query_vars['order'] = get_option('dbem_events_default_archive_order','ASC'); + } + }elseif( !empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] == EM_POST_TYPE_EVENT ){ + $wp_query->query_vars['scope'] = 'all'; + if( $wp_query->query_vars['post_status'] == 'pending' ){ + $wp_query->query_vars['orderby'] = 'meta_value_num'; + $wp_query->query_vars['order'] = 'ASC'; + $wp_query->query_vars['meta_key'] = '_start_ts'; + } + } + } +} +EM_Event_Post::init(); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-event-posts-admin.php b/wp-content/plugins/events-manager/classes/em-event-posts-admin.php new file mode 100644 index 0000000..fe7f6d7 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-event-posts-admin.php @@ -0,0 +1,280 @@ +<?php +class EM_Event_Posts_Admin{ + function init(){ + global $pagenow; + if( $pagenow == 'edit.php' && !empty($_REQUEST['post_type']) && $_REQUEST['post_type'] == EM_POST_TYPE_EVENT ){ //only needed for events list + if( !empty($_REQUEST['category_id']) && is_numeric($_REQUEST['category_id']) ){ + $term = get_term_by('id', $_REQUEST['category_id'], EM_TAXONOMY_CATEGORY); + if( !empty($term->slug) ){ + $_REQUEST['category_id'] = $term->slug; + } + } + //hide some cols by default: + $screen = 'edit-'.EM_POST_TYPE_EVENT; + $hidden = get_user_option( 'manage' . $screen . 'columnshidden' ); + if( !$hidden ){ + $hidden = array('event-id'); + update_user_option(get_current_user_id(), "manage{$screen}columnshidden", $hidden, true); + } + //deal with actions + $row_action_type = is_post_type_hierarchical( EM_POST_TYPE_EVENT ) ? 'page_row_actions' : 'post_row_actions'; + add_filter($row_action_type, array('EM_Event_Posts_Admin','row_actions'),10,2); + add_action('admin_head', array('EM_Event_Posts_Admin','admin_head')); + //collumns + add_filter('manage_edit-'.EM_POST_TYPE_EVENT.'_columns' , array('EM_Event_Posts_Admin','columns_add')); + add_filter('manage_'.EM_POST_TYPE_EVENT.'_posts_custom_column' , array('EM_Event_Posts_Admin','columns_output'),10,2 ); + //TODO alter views of locations, events and recurrences, specifically find a good way to alter the wp_count_posts method to force user owned posts only + //add_filter('views_edit-'.EM_POST_TYPE_EVENT, array('EM_Event_Posts_Admin','views'),10,1); + } + add_action('restrict_manage_posts', array('EM_Event_Posts_Admin','restrict_manage_posts')); + } + + function admin_head(){ + //quick hacks to make event admin table make more sense for events + ?> + <script type="text/javascript"> + jQuery(document).ready( function($){ + $('.inline-edit-date').prev().css('display','none').next().css('display','none').next().css('display','none'); + $('.em-detach-link').click(function( event ){ + if( !confirm(EM.event_detach_warning) ){ + event.preventDefault(); + return false; + } + }); + $('.em-delete-recurrence-link').click(function( event ){ + if( !confirm(EM.delete_recurrence_warning) ){ + event.preventDefault(); + return false; + } + }); + }); + </script> + <style> + table.fixed{ table-layout:auto !important; } + .tablenav select[name="m"] { display:none; } + </style> + <?php + } + + function restrict_manage_posts(){ + global $wp_query; + if( $wp_query->query_vars['post_type'] == EM_POST_TYPE_EVENT || $wp_query->query_vars['post_type'] == 'event-recurring' ){ + ?> + <select name="scope"> + <?php + $scope = (!empty($wp_query->query_vars['scope'])) ? $wp_query->query_vars['scope']:'future'; + foreach ( em_get_scopes() as $key => $value ) { + $selected = ""; + if ($key == $scope) + $selected = "selected='selected'"; + echo "<option value='$key' $selected>$value</option> "; + } + ?> + </select> + <?php + if( get_option('dbem_categories_enabled') ){ + //Categories + $selected = !empty($_GET['event-categories']) ? $_GET['event-categories'] : 0; + wp_dropdown_categories(array( 'hide_empty' => 1, 'name' => 'event-categories', + 'hierarchical' => true, 'id' => EM_TAXONOMY_CATEGORY, + 'taxonomy' => EM_TAXONOMY_CATEGORY, 'selected' => $selected, + 'show_option_all' => __('View all categories'))); + } + if( !empty($_REQUEST['author']) ){ + ?> + <input type="hidden" name="author" value="<?php echo $_REQUEST['author'] ?>" /> + <?php + } + } + } + + function views($views){ + if( !current_user_can('edit_others_events') ){ + //alter the views to reflect correct numbering + + } + return $views; + } + + function columns_add($columns) { + if( array_key_exists('cb', $columns) ){ + $cb = $columns['cb']; + unset($columns['cb']); + $id_array = array('cb'=>$cb, 'event-id' => sprintf(__('%s ID','dbem'),__('Event','dbem'))); + }else{ + $id_array = array('event-id' => sprintf(__('%s ID','dbem'),__('Event','dbem'))); + } + unset($columns['comments']); + unset($columns['date']); + unset($columns['author']); + $columns = array_merge($id_array, $columns, array( + 'location' => __('Location','dbem'), + 'date-time' => __('Date and Time','dbem'), + 'author' => __('Owner','dbem'), + 'extra' => '' + )); + if( !get_option('dbem_locations_enabled') ){ + unset($columns['location']); + } + return $columns; + } + + function columns_output( $column ) { + global $post, $EM_Event; + $EM_Event = em_get_event($post, 'post_id'); + /* @var $post EM_Event */ + switch ( $column ) { + case 'event-id': + echo $EM_Event->event_id; + break; + case 'location': + //get meta value to see if post has location, otherwise + $EM_Location = $EM_Event->get_location(); + if( !empty($EM_Location->location_id) ){ + echo "<strong>" . $EM_Location->location_name . "</strong><br/>" . $EM_Location->location_address . " - " . $EM_Location->location_town; + }else{ + echo __('None','dbem'); + } + break; + case 'date-time': + //get meta value to see if post has location, otherwise + $localised_start_date = date_i18n(get_option('date_format'), $EM_Event->start); + $localised_end_date = date_i18n(get_option('date_format'), $EM_Event->end); + echo $localised_start_date; + echo ($localised_end_date != $localised_start_date) ? " - $localised_end_date":''; + echo "<br />"; + if(!$EM_Event->event_all_day){ + echo date_i18n(get_option('time_format'), $EM_Event->start) . " - " . date_i18n(get_option('time_format'), $EM_Event->end); + }else{ + echo get_option('dbem_event_all_day_message'); + } + break; + case 'extra': + if( get_option('dbem_rsvp_enabled') == 1 && !empty($EM_Event->event_rsvp) && $EM_Event->can_manage('manage_bookings','manage_others_bookings')){ + ?> + <a href="<?php echo $EM_Event->get_bookings_url(); ?>"><?php echo __("Bookings",'dbem'); ?></a> – + <?php _e("Booked",'dbem'); ?>: <?php echo $EM_Event->get_bookings()->get_booked_spaces()."/".$EM_Event->get_spaces(); ?> + <?php if( get_option('dbem_bookings_approval') == 1 ): ?> + | <?php _e("Pending",'dbem') ?>: <?php echo $EM_Event->get_bookings()->get_pending_spaces(); ?> + <?php endif; + echo ($EM_Event->is_recurrence()) ? '<br />':''; + } + if ( $EM_Event->is_recurrence() && $EM_Event->can_manage('edit_recurring_events','edit_others_recurring_events') ) { + $recurrence_delete_confirm = __('WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series.','dbem'); + ?> + <strong> + <?php echo $EM_Event->get_recurrence_description(); ?> <br /> + </strong> + <div class="row-actions"> + <a href="<?php echo admin_url(); ?>post.php?action=edit&post=<?php echo $EM_Event->get_event_recurrence()->post_id ?>"><?php _e ( 'Edit Recurring Events', 'dbem' ); ?></a> | <span class="trash"><a class="em-delete-recurrence-link" href="<?php echo get_delete_post_link($EM_Event->get_event_recurrence()->post_id); ?>"><?php _e('Delete','dbem'); ?></a></span> | <a class="em-detach-link" href="<?php echo $EM_Event->get_detach_url(); ?>"><?php _e('Detach', 'dbem'); ?></a> + </div> + <?php + } + + break; + } + } + + function row_actions($actions, $post){ + if($post->post_type == EM_POST_TYPE_EVENT){ + global $post, $EM_Event; + $EM_Event = em_get_event($post, 'post_id'); + $actions['duplicate'] = '<a href="'.admin_url().'edit.php?action=event_duplicate&event_id='.$EM_Event->event_id.'&_wpnonce='.wp_create_nonce('event_duplicate_'.$EM_Event->event_id).'" title="'.sprintf(__('Duplicate %s','dbem'), __('Event','dbem')).'">'.__('Duplicate','dbem').'</a>'; + } + return $actions; + } +} +add_action('admin_init', array('EM_Event_Posts_Admin','init')); + +/* + * Recurring Events + */ +class EM_Event_Recurring_Posts_Admin{ + function init(){ + global $pagenow; + if( $pagenow == 'edit.php' && !empty($_REQUEST['post_type']) && $_REQUEST['post_type'] == 'event-recurring' ){ + //hide some cols by default: + $screen = 'edit-'.EM_POST_TYPE_EVENT; + $hidden = get_user_option( 'manage' . $screen . 'columnshidden' ); + if( !$hidden ){ + $hidden = array('event-id'); + update_user_option(get_current_user_id(), "manage{$screen}columnshidden", $hidden, true); + } + //notices + add_action('admin_notices',array('EM_Event_Recurring_Posts_Admin','admin_notices')); + add_action('admin_head', array('EM_Event_Recurring_Posts_Admin','admin_head')); + //collumns + add_filter('manage_edit-event-recurring_columns' , array('EM_Event_Recurring_Posts_Admin','columns_add')); + add_filter('manage_posts_custom_column' , array('EM_Event_Recurring_Posts_Admin','columns_output'),10,1 ); + add_action('restrict_manage_posts', array('EM_Event_Posts_Admin','restrict_manage_posts')); + } + } + + function admin_notices(){ + $warning = sprintf(__( 'Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the <a href="%s">events page</a>.', 'dbem' ), admin_url().'edit.php?post_type='.EM_POST_TYPE_EVENT); + ?><div class="updated"><p><?php echo $warning; ?></p></div><?php + } + + function admin_head(){ + //quick hacks to make event admin table make more sense for events + ?> + <script type="text/javascript"> + jQuery(document).ready( function($){ + $('.inline-edit-date').prev().css('display','none').next().css('display','none').next().css('display','none'); + if(!EM.recurrences_menu){ + $('#menu-posts-'+EM.event_post_type+', #menu-posts-'+EM.event_post_type+' > a').addClass('wp-has-current-submenu'); + } + }); + </script> + <style> + table.fixed{ table-layout:auto !important; } + .tablenav select[name="m"] { display:none; } + </style> + <?php + } + + function columns_add($columns) { + if( array_key_exists('cb', $columns) ){ + $cb = $columns['cb']; + unset($columns['cb']); + $id_array = array('cb'=>$cb, 'event-id' => sprintf(__('%s ID','dbem'),__('Event','dbem'))); + }else{ + $id_array = array('event-id' => sprintf(__('%s ID','dbem'),__('Event','dbem'))); + } + unset($columns['comments']); + unset($columns['date']); + unset($columns['author']); + return array_merge($id_array, $columns, array( + 'location' => __('Location'), + 'date-time' => __('Date and Time'), + 'author' => __('Owner','dbem'), + )); + } + + + function columns_output( $column ) { + global $post, $EM_Event; + if( $post->post_type == 'event-recurring' ){ + $post = $EM_Event = em_get_event($post); + /* @var $post EM_Event */ + switch ( $column ) { + case 'event-id': + echo $EM_Event->event_id; + break; + case 'location': + //get meta value to see if post has location, otherwise + $EM_Location = $EM_Event->get_location(); + if( !empty($EM_Location->location_id) ){ + echo "<strong>" . $EM_Location->location_name . "</strong><br/>" . $EM_Location->location_address . " - " . $EM_Location->location_town; + }else{ + echo __('None','dbem'); + } + break; + case 'date-time': + echo $EM_Event->get_recurrence_description(); + break; + } + } + } +} +add_action('admin_init', array('EM_Event_Recurring_Posts_Admin','init')); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-event.php b/wp-content/plugins/events-manager/classes/em-event.php new file mode 100644 index 0000000..4f5d5da --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-event.php @@ -0,0 +1,2116 @@ +<?php +/** + * Get an event in a db friendly way, by checking globals and passed variables to avoid extra class instantiations + * @param mixed $id + * @param mixed $search_by + * @return EM_Event + */ +function em_get_event($id = false, $search_by = 'event_id') { + global $EM_Event; + //check if it's not already global so we don't instantiate again + if( is_object($EM_Event) && get_class($EM_Event) == 'EM_Event' ){ + if( is_object($id) && $EM_Event->post_id == $id->ID ){ + return $EM_Event; + }elseif( !is_object($id) ){ + if( $search_by == 'event_id' && $EM_Event->event_id == $id ){ + return $EM_Event; + }elseif( $search_by == 'post_id' && $EM_Event->post_id == $id ){ + return $EM_Event; + } + } + } + if( is_object($id) && get_class($id) == 'EM_Event' ){ + return $id; + }else{ + return new EM_Event($id,$search_by); + } +} +/** + * Event Object. This holds all the info pertaining to an event, including location and recurrence info. + * An event object can be one of three "types" a recurring event, recurrence of a recurring event, or a single event. + * The single event might be part of a set of recurring events, but if loaded by specific event id then any operations and saves are + * specifically done on this event. However, if you edit the recurring group, any changes made to single events are overwritten. + * + * @author marcus + */ +//TODO Can add more recurring functionality such as "also update all future recurring events" or "edit all events" like google calendar does. +//TODO Integrate recurrences into events table +//FIXME If you create a super long recurrence timespan, there could be thousands of events... need an upper limit here. +class EM_Event extends EM_Object{ + /* Field Names */ + var $event_id; + var $post_id; + var $event_slug; + var $event_owner; + var $event_name; + var $event_start_time; + var $event_end_time; + var $event_all_day; + var $event_start_date; + var $event_end_date; + var $post_content; + var $event_rsvp; + var $event_rsvp_date; + var $event_rsvp_time = "00:00:00"; + var $event_spaces; + var $location_id; + var $recurrence_id; + var $event_status; + var $event_date_created; + var $event_date_modified; + var $blog_id; + var $group_id; + /** + * Populated with the non-hidden event post custom fields (i.e. not starting with _) + * @var array + */ + var $event_attributes = array(); + /* Recurring Specific Values */ + var $recurrence; + var $recurrence_interval; + var $recurrence_freq; + var $recurrence_byday; + var $recurrence_days = 0; + var $recurrence_byweekno; + /* anonymous submission information */ + var $event_owner_anonymous; + var $event_owner_name; + var $event_owner_email; + /** + * Previously used to give this object shorter property names for db values (each key has a name) but this is now depreciated, use the db field names as properties. This propertey provides extra info about the db fields. + * @var array + */ + var $fields = array( + 'event_id' => array( 'name'=>'id', 'type'=>'%d' ), + 'post_id' => array( 'name'=>'post_id', 'type'=>'%d' ), + 'event_slug' => array( 'name'=>'slug', 'type'=>'%s', 'null'=>true ), + 'event_owner' => array( 'name'=>'owner', 'type'=>'%d', 'null'=>true ), + 'event_name' => array( 'name'=>'name', 'type'=>'%s', 'null'=>true ), + 'event_start_time' => array( 'name'=>'start_time', 'type'=>'%s', 'null'=>true ), + 'event_end_time' => array( 'name'=>'end_time', 'type'=>'%s', 'null'=>true ), + 'event_all_day' => array( 'name'=>'all_day', 'type'=>'%d', 'null'=>true ), + 'event_start_date' => array( 'name'=>'start_date', 'type'=>'%s', 'null'=>true ), + 'event_end_date' => array( 'name'=>'end_date', 'type'=>'%s', 'null'=>true ), + 'post_content' => array( 'name'=>'notes', 'type'=>'%s', 'null'=>true ), + 'event_rsvp' => array( 'name'=>'rsvp', 'type'=>'%d', 'null'=>true ), //has a default, so can be null/excluded + 'event_rsvp_date' => array( 'name'=>'rsvp_date', 'type'=>'%s', 'null'=>true ), + 'event_rsvp_time' => array( 'name'=>'rsvp_time', 'type'=>'%s', 'null'=>true ), + 'event_spaces' => array( 'name'=>'spaces', 'type'=>'%d', 'null'=>true), + 'location_id' => array( 'name'=>'location_id', 'type'=>'%d', 'null'=>true ), + 'recurrence_id' => array( 'name'=>'recurrence_id', 'type'=>'%d', 'null'=>true ), + 'event_status' => array( 'name'=>'status', 'type'=>'%d', 'null'=>true ), + 'event_private' => array( 'name'=>'status', 'type'=>'%d', 'null'=>true ), + 'event_date_created' => array( 'name'=>'date_created', 'type'=>'%s', 'null'=>true ), + 'event_date_modified' => array( 'name'=>'date_modified', 'type'=>'%s', 'null'=>true ), + 'event_attributes' => array( 'name'=>'attributes', 'type'=>'%s', 'null'=>true ), + 'blog_id' => array( 'name'=>'blog_id', 'type'=>'%d', 'null'=>true ), + 'group_id' => array( 'name'=>'group_id', 'type'=>'%d', 'null'=>true ), + 'recurrence' => array( 'name'=>'recurrence', 'type'=>'%d', 'null'=>true ), //every x day(s)/week(s)/month(s) + 'recurrence_interval' => array( 'name'=>'interval', 'type'=>'%d', 'null'=>true ), //every x day(s)/week(s)/month(s) + 'recurrence_freq' => array( 'name'=>'freq', 'type'=>'%s', 'null'=>true ), //daily,weekly,monthly? + 'recurrence_days' => array( 'name'=>'days', 'type'=>'%d', 'null'=>true ), //daily,weekly,monthly? + 'recurrence_byday' => array( 'name'=>'byday', 'type'=>'%s', 'null'=>true ), //if weekly or monthly, what days of the week? + 'recurrence_byweekno' => array( 'name'=>'byweekno', 'type'=>'%d', 'null'=>true ), //if monthly which week (-1 is last) + ); + var $post_fields = array('event_slug','event_owner','event_name','event_attributes','post_id','post_content'); //fields that won't be taken from the em_events table anymore + var $recurrence_fields = array('recurrence_interval', 'recurrence_freq', 'recurrence_days', 'recurrence_byday', 'recurrence_byweekno'); + + var $image_url = ''; + /** + * Timestamp of start date/time + * @var int + */ + var $start; + /** + * Timestamp of end date/time + * @var int + */ + var $end; + /** + * Timestamp for booking cut-off date/time + * @var int + */ + var $rsvp_end; + /** + * Created on timestamp, taken from DB, converted to TS + * @var int + */ + var $created; + /** + * Created on timestamp, taken from DB, converted to TS + * @var int + */ + var $modified; + + /** + * @var EM_Location + */ + var $location; + /** + * @var EM_Bookings + */ + var $bookings; + /** + * The contact person for this event + * @var WP_User + */ + var $contact; + /** + * The category object + * @var EM_Category + */ + var $category; + /** + * If there are any errors, they will be added here. + * @var array + */ + var $errors = array(); + /** + * If something was successful, a feedback message might be supplied here. + * @var string + */ + var $feedback_message; + /** + * Any warnings about an event (e.g. bad data, recurrence, etc.) + * @var string + */ + var $warnings; + /** + * Array of dbem_event field names required to create an event + * @var array + */ + var $required_fields = array('event_name', 'event_start_date'); + var $mime_types = array(1 => 'gif', 2 => 'jpg', 3 => 'png'); + /** + * previous status of event when instantiated + * @access protected + * @var mixed + */ + var $previous_status = 0; + + /* Post Variables - copied out of post object for easy IDE reference */ + var $ID; + var $post_author; + var $post_date; + var $post_date_gmt; + var $post_title; + var $post_excerpt; + var $post_status; + var $comment_status; + var $ping_status; + var $post_password; + var $post_name; + var $to_ping; + var $pinged; + var $post_modified; + var $post_modified_gmt; + var $post_content_filtered; + var $post_parent; + var $guid; + var $menu_order; + var $post_type; + var $post_mime_type; + var $comment_count; + var $ancestors; + var $filter; + + /** + * Initialize an event. You can provide event data in an associative array (using database table field names), an id number, or false (default) to create empty event. + * @param mixed $event_data + * @param mixed $search_by default is post_id, otherwise it can be by event_id as well. + * @return null + */ + function __construct($id = false, $search_by = 'event_id') { + global $wpdb; + if( is_array($id) ){ + //deal with the old array style, but we can't supply arrays anymore + $id = (!empty($id['event_id'])) ? $id['event_id'] : $id['post_id']; + $search_by = (!empty($id['event_id'])) ? 'event_id':'post_id'; + } + $is_post = !empty($id->ID) && ($id->post_type == EM_POST_TYPE_EVENT || $id->post_type == 'event-recurring'); + if( is_numeric($id) || $is_post ){ //only load info if $id is a number + if($search_by == 'event_id' && !$is_post ){ + //search by event_id, get post_id and blog_id (if in ms mode) and load the post + $results = $wpdb->get_row($wpdb->prepare("SELECT post_id, blog_id FROM ".EM_EVENTS_TABLE." WHERE event_id=%d",$id), ARRAY_A); + if( is_multisite() && is_numeric($results['blog_id']) ){ + $event_post = get_blog_post($results['blog_id'], $results['post_id']); + $search_by = $results['blog_id']; + }else{ + $event_post = get_post($results['post_id']); + } + }else{ + if(!$is_post){ + if( is_numeric($search_by) && is_multisite() ){ + //we've been given a blog_id, so we're searching for a post id + $event_post = get_blog_post($search_by, $id); + }else{ + //search for the post id only + $event_post = get_post($id); + } + }else{ + $event_post = $id; + } + } + $this->load_postdata($event_post, $search_by); + } + $this->recurrence = $this->is_recurring() ? 1:0; + //if(defined('trashtest')){ print_r($this); die("got here");} + //Do it here so things appear in the po file. + $this->status_array = array( + 0 => __('Pending','dbem'), + 1 => __('Approved','dbem') + ); + do_action('em_event', $this, $id, $search_by); + } + + function load_postdata($event_post, $search_by = false){ + if( is_object($event_post) ){ + if( $event_post->post_status != 'auto-draft' ){ + if( is_numeric($search_by) && is_multisite() ){ + // if in multisite mode, switch blogs quickly to get the right post meta. + switch_to_blog($search_by); + $event_meta = get_post_custom($event_post->ID); + restore_current_blog(); + $this->blog_id = $search_by; + }else{ + $event_meta = get_post_custom($event_post->ID); + } + //Get custom fields and post meta + foreach($event_meta as $event_meta_key => $event_meta_val){ + if($event_meta_key[0] != '_'){ + $this->event_attributes[$event_meta_key] = ( count($event_meta_val) > 1 ) ? $event_meta_val:$event_meta_val[0]; + }elseif($event_meta_key != '_event_attributes'){ + $field_name = substr($event_meta_key, 1); + if( array_key_exists($field_name, $this->fields) ){ + $this->$field_name = $event_meta_val[0]; + }elseif( in_array($field_name, array('event_owner_name','event_owner_anonymous','event_owner_email')) ){ + $this->$field_name = $event_meta_val[0]; + } + } + } + //Start/End times should be available as timestamp + $this->start = strtotime($this->event_start_date." ".$this->event_start_time); + $this->end = strtotime($this->event_end_date." ".$this->event_end_time); + if( !empty($this->event_rsvp_date ) ){ + $this->rsvp_end = strtotime($this->event_rsvp_date." ".$this->event_rsvp_time); + } + //quick compatability fix in case _event_id isn't loaded or somehow got erased in post meta + if( empty($this->event_id) && !$this->is_recurring() ){ + global $wpdb; + $event_array = $wpdb->get_row('SELECT * FROM '.EM_EVENTS_TABLE. ' WHERE post_id='.$event_post->ID, ARRAY_A); + if( !empty($event_array['event_id']) ){ + foreach($event_array as $key => $value){ + if( !empty($value) && empty($this->$key) ){ + update_post_meta($event_post->ID, '_'.$key, $value); + $this->$key = $value; + } + } + } + } + } + //load post data - regardless + $this->post_id = $event_post->ID; + $this->event_name = $event_post->post_title; + $this->event_owner = $event_post->post_author; + $this->post_content = $event_post->post_content; + $this->event_slug = $event_post->post_name; + $this->event_modified = $event_post->post_modified; + foreach( $event_post as $key => $value ){ //merge post object into this object + $this->$key = $value; + } + $this->previous_status = $this->event_status; //so we know about updates + $this->recurrence = $this->is_recurring() ? 1:0; + $this->get_status(); + $this->compat_keys(); + } + } + + /** + * Retrieve event information via POST (only used in situations where posts aren't submitted via WP) + * @return boolean + */ + function get_post($validate = true){ + global $allowedposttags; + //we need to get the post/event name and content.... that's it. + $this->post_content = !empty($_POST['content']) ? wp_kses( stripslashes($_POST['content']), $allowedposttags):''; + $this->event_name = !empty($_POST['event_name']) ? wp_kses_data( stripslashes($_POST['event_name']) ):''; + $this->post_type = ($this->is_recurring() || !empty($_POST['recurring'])) ? 'event-recurring':EM_POST_TYPE_EVENT; + //don't forget categories! + $this->get_categories()->get_post(); + //anonymous submissions and guest basic info + if( !is_user_logged_in() && get_option('dbem_events_anonymous_submissions') && empty($this->event_id) ){ + $this->event_owner_anonymous = 1; + $this->event_owner_name = !empty($_POST['event_owner_name']) ? stripslashes($_POST['event_owner_name']):''; + $this->event_owner_email = !empty($_POST['event_owner_email']) ? $_POST['event_owner_email']:''; + } + //get the rest and validate (optional) + $this->get_post_meta(false); + $result = $validate ? $this->validate():true; //validate both post and meta, otherwise return true + return apply_filters('em_event_get_post', $result, $this); + } + + /** + * Retrieve event post meta information via POST, which should be always be called when saving the event custom post via WP. + * @param boolean $validate whether or not to run validation, default is true + * @return boolean + */ + function get_post_meta($validate = true){ + //Grab POST data + $this->event_start_date = ( !empty($_POST['event_start_date']) ) ? $_POST['event_start_date'] : ''; + $this->event_end_date = ( !empty($_POST['event_end_date']) ) ? $_POST['event_end_date'] : $this->event_start_date; + //check if this is recurring or not + if( !empty($_POST['recurring']) ){ + $this->recurrence = 1; + $this->post_type = 'event-recurring'; + } + //Get Location info + if( !get_option('dbem_locations_enabled') || (!empty($_POST['no_location']) && !get_option('dbem_require_location',true)) || (empty($_POST['location_id']) && !get_option('dbem_require_location',true) && get_option('dbem_use_select_for_locations')) ){ + $this->location_id = 0; + }elseif( !empty($_POST['location_id']) && is_numeric($_POST['location_id']) ){ + $this->location_id = $_POST['location_id']; + }else{ + //we're adding a new location, so create an empty location and populate + $this->location_id = null; + $this->get_location()->get_post(false); + $this->get_location()->post_content = ''; //reset post content, as it'll grab the event description otherwise + } + //Sort out time + $this->event_all_day = ( !empty($_POST['event_all_day']) ) ? 1 : 0; + if( !$this->event_all_day ){ + $match = array(); + foreach( array('event_start_time','event_end_time', 'event_rsvp_time') as $timeName ){ + if( !empty($_POST[$timeName]) && preg_match ( '/^([01]\d|2[0-3]):([0-5]\d) ?(AM|PM)?$/', $_POST[$timeName], $match ) ){ + if( !empty($match[3]) && $match[3] == 'PM' && $match[1] != 12 ){ + $match[1] = 12+$match[1]; + }elseif( !empty($match[3]) && $match[3] == 'AM' && $match[1] == 12 ){ + $match[1] = '00'; + } + $this->$timeName = $match[1].":".$match[2].":00"; + }else{ + $this->$timeName = ($timeName == 'event_start_time') ? "00:00:00":$this->event_start_time; + } + } + }else{ + $this->event_start_time = $this->event_end_time = '00:00:00'; + } + //Start/End times should be available as timestamp + $this->start = strtotime($this->event_start_date." ".$this->event_start_time); + $this->end = strtotime($this->event_end_date." ".$this->event_end_time); + //Bookings + if( !empty($_POST['event_rsvp']) && $_POST['event_rsvp'] ){ + $this->get_bookings()->get_tickets()->get_post(); + $this->event_rsvp = 1; + //RSVP cuttoff TIME is set up above where start/end times are as well + $this->event_rsvp_date = ( isset($_POST['event_rsvp_date']) ) ? $_POST['event_rsvp_date'] : $this->event_start_date; + if( empty($this->event_rsvp_date) ){ $this->event_rsvp_time = '00:00:00'; } + $this->event_spaces = ( isset($_POST['event_spaces']) ) ? absint($_POST['event_spaces']):0; + }else{ + $this->event_rsvp = 0; + $this->event_rsvp_time = '00:00:00'; + } + //Sort out event attributes - note that custom post meta now also gets inserted here automatically (and is overwritten by these attributes) + if(get_option('dbem_attributes_enabled')){ + global $allowedtags; + if( !is_array($this->event_attributes) ){ $this->event_attributes = array(); } + $event_available_attributes = em_get_attributes(); + if( !empty($_POST['em_attributes']) && is_array($_POST['em_attributes']) ){ + foreach($_POST['em_attributes'] as $att_key => $att_value ){ + if( (in_array($att_key, $event_available_attributes['names']) || array_key_exists($att_key, $this->event_attributes) ) ){ + if( !empty($att_value) ){ + $att_vals = count($event_available_attributes['values'][$att_key]); + if( $att_vals == 0 || ($att_vals > 0 && in_array($att_value, $event_available_attributes['values'][$att_key])) ){ + $this->event_attributes[$att_key] = stripslashes($att_value); + }elseif($att_vals > 0){ + $this->event_attributes[$att_key] = stripslashes(wp_kses($event_available_attributes['values'][$att_key][0], $allowedtags)); + } + }else{ + $this->event_attributes[$att_key] = ''; + } + } + } + } + } + //Set Blog ID + if( is_multisite() ){ + $this->blog_id = get_current_blog_id(); + } + //group id + $this->group_id = (!empty($_POST['group_id']) && is_numeric($_POST['group_id'])) ? $_POST['group_id']:0; + //Recurrence data + if( $this->is_recurring() ){ + $this->recurrence = 1; //just in case + $this->recurrence_freq = ( !empty($_POST['recurrence_freq']) && in_array($_POST['recurrence_freq'], array('daily','weekly','monthly','yearly')) ) ? $_POST['recurrence_freq']:'daily'; + if( !empty($_POST['recurrence_bydays']) && $this->recurrence_freq == 'weekly' && self::array_is_numeric($_POST['recurrence_bydays']) ){ + $this->recurrence_byday = implode( ",", $_POST['recurrence_bydays'] ); + }elseif( !empty($_POST['recurrence_byday']) && $this->recurrence_freq == 'monthly' ){ + $this->recurrence_byday = $_POST['recurrence_byday']; + } + $this->recurrence_interval = ( !empty($_POST['recurrence_interval']) && is_numeric($_POST['recurrence_interval']) ) ? $_POST['recurrence_interval']:1; + $this->recurrence_byweekno = ( !empty($_POST['recurrence_byweekno']) ) ? $_POST['recurrence_byweekno']:''; + $this->recurrence_days = ( !empty($_POST['recurrence_days']) && is_numeric($_POST['recurrence_days']) ) ? (int) $_POST['recurrence_days']:0; + } + //categories in MS GLobal + if(EM_MS_GLOBAL && !is_main_site()){ + $this->get_categories()->get_post(); //it'll know what to do + } + //validate (optional) and return result + $result = $validate ? $this->validate_meta():true; + $this->compat_keys(); //compatability + return apply_filters('em_event_get_post', $result, $this); + } + + function validate(){ + $validate_post = true; + if( empty($this->event_name) ){ + $validate_post = false; + $this->add_error( sprintf(__("%s is required.", "dbem"), __('Event name','dbem')) ); + } + //anonymous submissions and guest basic info + if( !empty($this->event_owner_anonymous) ){ + if( !is_email($this->event_owner_email) ){ + $this->add_error( sprintf(__("%s is required.", "dbem"), __('A valid email','dbem')) ); + } + if( empty($this->event_owner_name) ){ + $this->add_error( sprintf(__("%s is required.", "dbem"), __('Your name','dbem')) ); + } + } + $validate_image = $this->image_validate(); + $validate_meta = $this->validate_meta(); + return apply_filters('em_event_validate', $validate_post && $validate_image && $validate_meta, $this ); + } + function validate_meta(){ + $missing_fields = Array (); + foreach ( array('event_start_date') as $field ) { + if ( $this->$field == "") { + $missing_fields[$field] = $field; + } + } + if( preg_match('/\d{4}-\d{2}-\d{2}/', $this->event_start_date) && preg_match('/\d{4}-\d{2}-\d{2}/', $this->event_end_date) ){ + if( strtotime($this->event_start_date . $this->event_start_time) > strtotime($this->event_end_date . $this->event_end_time) ){ + $this->add_error(__('Events cannot start after they end.','dbem')); + }elseif( $this->is_recurring() && $this->recurrence_days == 0 && strtotime($this->event_start_date . $this->event_start_time) > strtotime($this->event_start_date . $this->event_end_time) ){ + $this->add_error(__('Events cannot start after they end.','dbem').' '.__('For recurring events that end the following day, ensure you make your event last 1 or more days.')); + } + }else{ + if( !empty($missing_fields['event_start_date']) ) { unset($missing_fields['event_start_date']); } + if( !empty($missing_fields['event_end_date']) ) { unset($missing_fields['event_end_date']); } + $this->add_error(__('Dates must have correct formatting. Please use the date picker provided.','dbem')); + } + if( $this->event_rsvp ){ + if( !$this->get_bookings()->get_tickets()->validate() ){ + $this->add_error($this->get_bookings()->get_tickets()->get_errors()); + } + if( !empty($this->event_rsvp_date) && !preg_match('/\d{4}-\d{2}-\d{2}/', $this->event_rsvp_date) ){ + $this->add_error(__('Dates must have correct formatting. Please use the date picker provided.','dbem')); + } + } + if( get_option('dbem_locations_enabled') && empty($this->location_id) ){ //location ids don't need validating as we're not saving a location + if( get_option('dbem_require_location',true) || $this->location_id !== 0 ){ + if( !$this->get_location()->validate() ){ + $this->add_error($this->get_location()->get_errors()); + } + } + } + if ( count($missing_fields) > 0){ + // TODO Create friendly equivelant names for missing fields notice in validation + $this->add_error( __( 'Missing fields: ', 'dbem') . implode ( ", ", $missing_fields ) . ". " ); + } + if ( $this->is_recurring() && ($this->event_end_date == "" || $this->event_end_date == $this->event_start_date) ){ + $this->add_error( __( 'Since the event is repeated, you must specify an event end date greater than the start date.', 'dbem' )); + } + return apply_filters('em_event_validate_meta', count($this->errors) == 0, $this ); + } + + /** + * Will save the current instance into the database, along with location information if a new one was created and return true if successful, false if not. + * Will automatically detect whether it's a new or existing event. + * @return boolean + */ + function save(){ + global $wpdb, $current_user, $blog_id; + if( !$this->can_manage('edit_events', 'edit_others_events') && !( get_option('dbem_events_anonymous_submissions') && empty($this->event_id)) ){ + //unless events can be submitted by an anonymous user (and this is a new event), user must have permissions. + return apply_filters('em_event_save', false, $this); + } + remove_action('save_post',array('EM_Event_Post_Admin','save_post'),10,1); //disable the default save post action, we'll do it manually this way + do_action('em_event_save_pre', $this); + $post_array = array(); + //Deal with updates to an event + if( !empty($this->post_id) ){ + //get the full array of post data so we don't overwrite anything. + if( !empty($this->blog_id) && is_multisite() ){ + $post_array = (array) get_blog_post($this->blog_id, $this->post_id); + }else{ + $post_array = (array) get_post($this->post_id); + } + } + //Overwrite new post info + $post_array['post_type'] = ($this->recurrence && get_option('dbem_recurrence_enabled')) ? 'event-recurring':EM_POST_TYPE_EVENT; + $post_array['post_title'] = $this->event_name; + $post_array['post_content'] = $this->post_content; + //decide on post status + if( count($this->errors) == 0 ){ + $post_array['post_status'] = ( $this->can_manage('publish_events','publish_events') ) ? 'publish':'pending'; + }else{ + $post_array['post_status'] = 'draft'; + } + //anonymous submission only + if( !is_user_logged_in() && get_option('dbem_events_anonymous_submissions') && empty($this->event_id) ){ + $post_array['post_author'] = get_option('dbem_events_anonymous_user'); + if( !is_numeric($post_array['post_author']) ) $post_array['post_author'] = 0; + } + //Save post and continue with meta + $post_id = wp_insert_post($post_array); + $post_save = false; + $meta_save = false; + if( !is_wp_error($post_id) && !empty($post_id) ){ + $post_save = true; + //refresh this event with wp post info we'll put into the db + $post_data = get_post($post_id); + $this->post_id = $post_id; + $this->event_slug = $post_data->post_name; + $this->event_owner = $post_data->post_author; + $this->post_status = $post_data->post_status; + $this->get_status(); + //Categories? note that categories will soft-fail, so no errors + $this->get_categories()->save(); + //anonymous submissions should save this information + if( !empty($this->event_owner_anonymous) ){ + update_post_meta($this->post_id, '_event_owner_anonymous', 1); + update_post_meta($this->post_id, '_event_owner_name', $this->event_owner_name); + update_post_meta($this->post_id, '_event_owner_email', $this->event_owner_email); + } + //save the image + $this->image_upload(); + //now save the meta + $meta_save = $this->save_meta(); + $image_save = (count($this->errors) == 0); //whilst it might not be an image save that fails, we can know something went wrong + } + $result = $meta_save && $post_save && $image_save; + $previous_status = $this->previous_status; + if($result) $this->load_postdata($post_data, $blog_id); //reload post info + $this->previous_status = $previous_status; + //do a dirty update for location too if it's not published + if( $this->is_published() && !empty($this->location_id) ){ + $EM_Location = $this->get_location(); + if( $EM_Location->location_status !== 1 ){ + //let's also publish the location + $EM_Location->set_status(1, true); + } + } + return apply_filters('em_event_save', $result, $this); + } + + function save_meta(){ + global $wpdb; + if( ( get_option('dbem_events_anonymous_submissions') && empty($this->event_id)) || $this->can_manage('edit_events', 'edit_others_events') ){ + do_action('em_event_save_meta_pre', $this); + //first save location + if( empty($this->location_id) && !($this->location_id === 0 && !get_option('dbem_require_location',true)) ){ + if( get_site_option('dbem_ms_mainblog_locations') ){ $this->ms_global_switch(); } + if( !$this->get_location()->save() ){ //soft fail + global $EM_Notices; + if( !empty($this->get_location()->location_id) ){ + $EM_Notices->add_error( __('There were some errors saving your location.','dbem').' '.sprintf(__('It will not be displayed on the website listings, to correct this you must <a href="%s">edit your location</a> directly.'),$this->get_location()->output('#_LOCATIONEDITURL')), true); + }else{ + $this->get_location()->set_status(null); + $EM_Notices->add_error( __('There were some errors saving your location.'), true); + } + } + if( get_site_option('dbem_ms_mainblog_locations') ){ $this->ms_global_switch_back(); } + if( !empty($this->location->location_id) ){ //only case we don't use get_location(), since it will fail as location has an id, whereas location_id isn't set in this object + $this->location_id = $this->location->location_id; + } + } + //Update Post Meta + foreach($this->fields as $key => $field_info){ + if( !in_array($key, $this->post_fields) && $key != 'event_attributes' ){ + update_post_meta($this->post_id, '_'.$key, $this->$key); + }elseif($key == 'event_attributes'){ + //attributes get saved as individual keys + foreach($this->event_attributes as $event_attribute_key => $event_attribute){ + if( !empty($event_attribute) ){ + update_post_meta($this->post_id, $event_attribute_key, $event_attribute); + }else{ + delete_post_meta($this->post_id, $event_attribute_key); + } + } + } + } + //update timestampes + update_post_meta($this->post_id, '_start_ts', str_pad($this->start, 10, 0, STR_PAD_LEFT)); + update_post_meta($this->post_id, '_end_ts', str_pad($this->end, 10, 0, STR_PAD_LEFT)); + //sort out event status + $result = count($this->errors) == 0; + $this->get_status(); + $this->event_status = ($result) ? $this->event_status:null; //set status at this point, it's either the current status, or if validation fails, null + //Save to em_event table + $event_array = $this->to_array(true); + unset($event_array['event_id']); + if( $this->post_status == 'private' ) $event_array['event_private'] = 1; + $event_array['event_attributes'] = serialize($this->event_attributes); //might as well + if( !empty($this->event_id) ){ + $blog_condition = ''; + if( EM_MS_GLOBAL ){ + $blog_condition = " AND blog_id='".get_current_blog_id()."' "; + } + $event_truly_exists = $wpdb->get_var('SELECT post_id FROM '.EM_EVENTS_TABLE." WHERE event_id={$this->event_id}".$blog_condition) == $this->post_id; + }else{ + $event_truly_exists = false; + } + if( empty($this->event_id) || !$event_truly_exists ){ + $this->previous_status = 0; //for sure this was previously status 0 + $this->event_date_created = current_time('mysql'); + if ( !$wpdb->insert(EM_EVENTS_TABLE, $event_array) ){ + $this->add_error( sprintf(__('Something went wrong saving your %s to the index table. Please inform a site administrator about this.','dbem'),__('event','dbem'))); + }else{ + //success, so link the event with the post via an event id meta value for easy retrieval + $this->event_id = $wpdb->insert_id; + update_post_meta($this->post_id, '_event_id', $this->event_id); + $this->feedback_message = sprintf(__('Successfully saved %s','dbem'),__('Event','dbem')); + $just_added_event = true; //make an easy hook + do_action('em_event_save_new', $this); + } + }else{ + $this->previous_status = $this->get_previous_status(); + $this->event_date_modified = $event_array['event_date_modified'] = current_time('mysql'); + if ( $wpdb->update(EM_EVENTS_TABLE, $event_array, array('event_id'=>$this->event_id) ) === false ){ + $this->add_error( sprintf(__('Something went wrong updating your %s to the index table. Please inform a site administrator about this.','dbem'),__('event','dbem'))); + }else{ + //Also set the status here if status != previous status + if( $this->previous_status != $this->get_status()){ + $status_value = $this->get_status(true); + $wpdb->query('UPDATE '.EM_EVENTS_TABLE." SET event_status=$status_value WHERE event_id=".$this->event_id); + } + $this->feedback_message = sprintf(__('Successfully saved %s','dbem'),__('Event','dbem')); + } + } + //Add/Delete Tickets + if($this->event_rsvp == 0){ + $this->get_bookings()->delete(); + }else{ + if( !$this->get_bookings()->get_tickets()->save() ){ + $this->add_error( $this->get_bookings()->get_tickets()->get_errors() ); + } + } + $result = count($this->errors) == 0; + //If we're saving event categories in MS Global mode, we'll add them here, saving by term id (cat ids are gone now) + if( EM_MS_GLOBAL && !is_main_site() ){ + $this->get_categories()->save(); //it'll know what to do + }elseif( EM_MS_GLOBAL ){ + $this->get_categories()->save_index(); //just save to index, we assume cats are saved in $this->save(); + } + //build recurrences if needed + if( $this->is_recurring() && $result && $this->is_published() ){ //only save events if recurring event validates and is published + if( !$this->save_events() ){ //only save if post is 'published' + $this->add_error(__ ( 'Something went wrong with the recurrence update...', 'dbem' ). __ ( 'There was a problem saving the recurring events.', 'dbem' )); + } + } + if( !empty($just_added_event) ){ + do_action('em_event_added', $this); + } + } + $this->compat_keys(); + return apply_filters('em_event_save_meta', count($this->errors) == 0, $this); + } + + /** + * Duplicates this event and returns the duplicated event. Will return false if there is a problem with duplication. + * @return EM_Event + */ + function duplicate(){ + global $wpdb, $EZSQL_ERROR; + //First, duplicate. + if( $this->can_manage('edit_events','edit_others_events') ){ + $EM_Event = clone $this; + $EM_Event->event_id = null; + //Duplicate Post + $fields = $wpdb->get_col("DESCRIBE ".$wpdb->posts); + unset($fields[0]); + $fields = implode(',',$fields); + $sql = "INSERT INTO {$wpdb->posts} ($fields) SELECT $fields FROM {$wpdb->posts} WHERE ID={$this->post_id}"; + $result = $wpdb->query($sql); + //TODO make a post_id refresher function to change all post ids in objects this contains + $EM_Event->post_id = $EM_Event->get_categories()->post_id = $EM_Event->ID = $wpdb->insert_id; + $EM_Event->get_categories()->save(); + //Duplicate Event Table index and tickets + if( $EM_Event->save_meta() ){ + //duplicate tickets + $EM_Tickets = $this->get_bookings()->get_tickets(); + foreach($EM_Tickets->tickets as $EM_Ticket){ + $EM_Ticket->ticket_id = ''; + $EM_Ticket->event_id = $EM_Event->event_id; + $EM_Ticket->save(); + } + $EM_Event->get_bookings(true); //refresh booking tickets + $EM_Event->feedback_message = sprintf(__("%s successfully duplicated.", 'dbem'), __('Event','dbem')); + return apply_filters('em_event_duplicate', $EM_Event, $this); + } + } + //TODO add error notifications for duplication failures. + return apply_filters('em_event_duplicate', false, $this);; + } + + /** + * Delete whole event, including bookings, tickets, etc. + * @return boolean + */ + function delete($force_delete = false){ //atm wp seems to force cp deletions anyway + global $wpdb; + if( $this->can_manage('delete_events', 'delete_others_events') ){ + remove_action('before_delete_post',array('EM_Event_Post_Admin','before_delete_post'),10,1); //since we're deleting directly, remove post actions + do_action('em_event_delete_pre', $this); + if( $force_delete ){ + $result = wp_delete_post($this->post_id,$force_delete); + $result_meta = $this->delete_meta(); + }else{ + $result = wp_trash_post($this->post_id); + $result_meta = true; + $this->set_status(null); //FIXME status isn't set on trash post, maybe bug/nuance in WP when not admin side? + } + }else{ + $result = $result_meta = false; + } + //print_r($result); echo "|"; print_r($result_meta); die('DELETING'); + return apply_filters('em_event_delete', $result !== false && $result_meta, $this); + } + + function delete_meta(){ + global $wpdb; + $result = false; + if( $this->can_manage('delete_events', 'delete_others_events') ){ + do_action('em_event_delete_meta_event_pre', $this); + $result = $wpdb->query ( $wpdb->prepare("DELETE FROM ". EM_EVENTS_TABLE ." WHERE event_id=%d", $this->event_id) ); + if( $result !== false ){ + $this->delete_bookings(); + $this->delete_tickets(); + //Delete the recurrences then this recurrence event + if( $this->is_recurring() ){ + $result = $this->delete_events(); //was true at this point, so false if fails + } + //Delete categories from meta if in MS global mode + if( EM_MS_GLOBAL ){ + $wpdb->query('DELETE FROM '.EM_META_TABLE.' WHERE object_id='.$this->event_id." AND meta_key='event-category'"); + } + } + } + return apply_filters('em_event_delete_meta', $result !== false, $this); + } + + /** + * Shortcut function for $this->get_bookings()->delete(), because using the EM_Bookings requires loading previous bookings, which isn't neceesary. + */ + function delete_bookings(){ + global $wpdb; + do_action('em_event_delete_bookings_pre', $this); + $result = false; + if( $this->can_manage('manage_bookings','manage_others_bookings') ){ + $result_bt = $wpdb->query( $wpdb->prepare("DELETE FROM ".EM_TICKETS_BOOKINGS_TABLE." WHERE booking_id IN (SELECT booking_id FROM ".EM_BOOKINGS_TABLE." WHERE event_id=%d)", $this->event_id) ); + $result = $wpdb->query( $wpdb->prepare("DELETE FROM ".EM_BOOKINGS_TABLE." WHERE event_id=%d", $this->event_id) ); + } + return apply_filters('em_event_delete_bookings', $result !== false && $result_bt !== false, $this); + } + + /** + * Shortcut function for $this->get_bookings()->delete(), because using the EM_Bookings requires loading previous bookings, which isn't neceesary. + */ + function delete_tickets(){ + global $wpdb; + do_action('em_event_delete_tickets_pre', $this); + $result = false; + if( $this->can_manage('manage_bookings','manage_others_bookings') ){ + $result_bt = $wpdb->query( $wpdb->prepare("DELETE FROM ".EM_TICKETS_BOOKINGS_TABLE." WHERE ticket_id IN (SELECT ticket_id FROM ".EM_TICKETS_TABLE." WHERE event_id=%d)", $this->event_id) ); + $result = $wpdb->query( $wpdb->prepare("DELETE FROM ".EM_TICKETS_TABLE." WHERE event_id=%d", $this->event_id) ); + } + return apply_filters('em_event_delete_tickets', $result, $this); + } + + /** + * Publish Events + * @return bool + */ + function send_approval_notification(){ + if( (!$this->is_recurring() && !user_can($this->event_owner, 'publish_events')) || ($this->is_recurring() && !user_can($this->event_owner, 'publish_recurring_events')) ){ + //only send email to users that can't publish events themselves and that were previously unpublished + if( !$this->previous_status && $this->is_published() ){ + //email + if( $this->event_owner == "" ) return true; + $subject = $this->output(get_option('dbem_event_approved_email_subject'), 'email'); + $body = $this->output(get_option('dbem_event_approved_email_body'), 'email'); + + //Send to the person booking + if( !$this->email_send( $subject, $body, $this->get_contact()->user_email) ){ + return false; + } + return true; + } + } + return false; + } + + /** + * Change the status of the event. This will save to the Database too. + * @param int $status + * @param boolean $set_post_status + * @return string + */ + function set_status($status, $set_post_status = false){ + global $wpdb; + if($status === null){ + $set_status='NULL'; + if($set_post_status){ + //if the post is trash, don't untrash it! + $wpdb->update( $wpdb->posts, array( 'post_status' => 'draft' ), array( 'ID' => $this->post_id ) ); + $this->post_status = 'draft'; + } + }else{ + $set_status = $status ? 1:0; + if($set_post_status){ + if($this->post_status == 'pending'){ + $this->post_name = sanitize_title($this->post_title); + } + $this->post_status = $set_status ? 'publish':'pending'; + $wpdb->update( $wpdb->posts, array( 'post_status' => $this->post_status, 'post_name' => $this->post_name ), array( 'ID' => $this->post_id ) ); + } + } + $this->previous_status = $this->get_previous_status(); + $result = $wpdb->query("UPDATE ".EM_EVENTS_TABLE." SET event_status=$set_status, event_slug='{$this->post_name}' WHERE event_id=".$this->event_id); + $this->get_status(); //reload status + return apply_filters('em_event_set_status', $result !== false, $status, $this); + } + + function is_published(){ + return apply_filters('em_event_is_published', ($this->post_status == 'publish' || $this->post_status == 'private'), $this); + } + + function get_status($db = false){ + switch( $this->post_status ){ + case 'private': + $this->event_private = 1; + $this->event_status = $status = 1; + break; + case 'publish': + $this->event_private = 0; + $this->event_status = $status = 1; + break; + case 'pending': + $this->event_private = 0; + $this->event_status = $status = 0; + break; + default: //draft or unknown + $this->event_private = 0; + $status = $db ? 'NULL':null; + $this->event_status = null; + break; + } + return $status; + } + + function get_previous_status(){ + global $wpdb; + return $wpdb->get_var('SELECT event_status FROM '.EM_EVENTS_TABLE.' WHERE event_id='.$this->event_id); //get status from db, not post_status, as posts get saved quickly + } + + /** + * Returns an EM_Categories object of the EM_Event instance. + * @return EM_Categories + */ + function get_categories() { + if( empty($this->categories) ){ + $this->categories = new EM_Categories($this); + }elseif(empty($this->categories->event_id)){ + $this->categories->event_id = $this->event_id; + $this->categories->post_id = $this->post_id; + } + return apply_filters('em_event_get_categories', $this->categories, $this); + } + + /** + * Returns the location object this event belongs to. + * @return EM_Location + */ + function get_location() { + global $EM_Location; + if( is_object($EM_Location) && $EM_Location->location_id == $this->location_id ){ + $this->location = $EM_Location; + }else{ + if( !is_object($this->location) || $this->location->location_id != $this->location_id ){ + $this->location = em_get_location($this->location_id); + } + } + return $this->location; + } + + /** + * Returns the location object this event belongs to. + * @return EM_Person + */ + function get_contact(){ + if( !is_object($this->contact) ){ + $this->contact = new EM_Person($this->event_owner); + //if this is anonymous submission, change contact email and name + if( $this->event_owner_anonymous ){ + $this->contact->user_email = $this->event_owner_email; + $name = explode(' ',$this->event_owner_name); + $first_name = array_shift($name); + $last_name = (count($name) > 0) ? implode(' ',$name):''; + $this->contact->user_firstname = $this->contact->first_name = $first_name; + $this->contact->user_lastname = $this->contact->last_name = $last_name; + } + } + return $this->contact; + } + + /** + * Retrieve and save the bookings belonging to instance. If called again will return cached version, set $force_reload to true to create a new EM_Bookings object. + * @param boolean $force_reload + * @return EM_Bookings + */ + function get_bookings( $force_reload = false ){ + if( get_option('dbem_rsvp_enabled') ){ + if( (!$this->bookings || $force_reload) ){ + $this->bookings = new EM_Bookings($this); + } + $this->bookings->event_id = $this->event_id; //always refresh event_id + }else{ + return new EM_Bookings(); + } + return apply_filters('em_event_get_bookings', $this->bookings, $this); + } + + /** + * Get the tickets related to this event. + * @param boolean $force_reload + * @return EM_Tickets + */ + function get_tickets( $force_reload = false ){ + return $this->get_bookings($force_reload)->get_tickets(); + } + + /** + * Gets number of spaces in this event, dependent on ticket spaces or hard limit, whichever is smaller. + * @param boolean $force_refresh + * @return int + */ + function get_spaces($force_refresh=false){ + return $this->get_bookings()->get_spaces($force_refresh); + } + + function get_edit_reschedule_url(){ + if( $this->is_recurrence() ){ + $EM_Event = em_get_event($this->recurrence_id); + return $EM_Event->get_edit_url(); + } + } + + function get_edit_url(){ + if( $this->can_manage('edit_events','edit_others_events') ){ + if( EM_MS_GLOBAL && get_site_option('dbem_ms_global_events_links') && !empty($this->blog_id) && is_main_site() && $this->blog_id != get_current_blog_id() ){ + if( get_blog_option($this->blog_id, 'dbem_edit_events_page') ){ + $link = em_add_get_params(get_permalink(get_blog_option($this->blog_id, 'dbem_edit_events_page')), array('action'=>'edit','event_id'=>$this->event_id), false); + } + if( empty($link)) + $link = get_admin_url($this->blog_id, "post.php?post={$this->post_id}&action=edit"); + }else{ + if( get_option('dbem_edit_events_page') && !is_admin() ){ + $link = em_add_get_params(get_permalink(get_option('dbem_edit_events_page')), array('action'=>'edit','event_id'=>$this->event_id), false); + } + if( empty($link)) + $link = admin_url()."post.php?post={$this->post_id}&action=edit"; + } + return apply_filters('em_event_get_edit_url', $link, $this); + } + } + + function get_bookings_url(){ + if( get_option('dbem_edit_bookings_page') && !is_admin() ){ + $my_bookings_page = get_permalink(get_option('dbem_edit_bookings_page')); + $bookings_link = em_add_get_params($my_bookings_page, array('event_id'=>$this->event_id), false); + }else{ + if( $this->blog_id != get_current_blog_id() ){ + $bookings_link = get_admin_url($this->blog_id, 'edit.php?post_type='.EM_POST_TYPE_EVENT."&page=events-manager-bookings&event_id=".$this->event_id); + }else{ + $bookings_link = EM_ADMIN_URL. "&page=events-manager-bookings&event_id=".$this->event_id; + } + } + return apply_filters('em_event_get_bookings_url', $bookings_link, $this); + } + + function get_permalink(){ + if( EM_MS_GLOBAL ){ + if( get_site_option('dbem_ms_global_events_links') && !empty($this->blog_id) && is_main_site() && $this->blog_id != get_current_blog_id() ){ + //linking directly to the blog + $event_link = get_blog_permalink( $this->blog_id, $this->post_id); + }elseif( !empty($this->blog_id) && is_main_site() && $this->blog_id != get_current_blog_id() ){ + if( get_option('dbem_events_page') ){ + $event_link = trailingslashit(get_permalink(get_option('dbem_events_page')).get_site_option('dbem_ms_events_slug',EM_EVENT_SLUG).'/'.$this->event_slug.'-'.$this->event_id); + }else{ + $event_link = trailingslashit(home_url()).EM_POST_TYPE_EVENT_SLUG.'/'.get_site_option('dbem_ms_events_slug',EM_EVENT_SLUG).'/'.$this->event_slug.'-'.$this->event_id; + } + } + } + if( empty($event_link) ){ + $event_link = get_post_permalink($this->post_id); + } + return apply_filters('em_event_get_permalink', $event_link, $this); + } + + function get_ical_url(){ + global $wp_rewrite; + if( !empty($wp_rewrite) && $wp_rewrite->using_permalinks() ){ + return trailingslashit($this->get_permalink()).'ical/'; + }else{ + return em_add_get_params($this->get_permalink(), array('ical'=>1)); + } + } + + function is_free(){ + $free = true; + foreach($this->get_tickets() as $EM_Ticket){ + if( $EM_Ticket->get_price() > 0 ){ + $free = false; + } + } + return apply_filters('em_event_is_free',$free,$this); + } + + /** + * Will output a single event format of this event. + * Equivalent of calling EM_Event::output( get_option ( 'dbem_single_event_format' ) ) + * @param string $target + * @return string + */ + function output_single($target='html'){ + $format = get_option ( 'dbem_single_event_format' ); + return apply_filters('em_event_output_single', $this->output($format, $target), $this, $target); + } + + /** + * Will output a event in the format passed in $format by replacing placeholders within the format. + * @param string $format + * @param string $target + * @return string + */ + function output($format, $target="html") { + $event_string = $format; + //Time place holder that doesn't show if empty. + //TODO add filter here too + preg_match_all('/#@?_\{[^}]+\}/', $format, $results); + foreach($results[0] as $result) { + if(substr($result, 0, 3 ) == "#@_"){ + $date = 'end_date'; + $offset = 4; + }else{ + $date = 'start_date'; + $offset = 3; + } + if( $date == 'end_date' && $this->event_end_date == $this->event_start_date ){ + $replace = __( apply_filters('em_event_output_placeholder', '', $this, $result, $target) ); + }else{ + $replace = __( apply_filters('em_event_output_placeholder', mysql2date(substr($result, $offset, (strlen($result)-($offset+1)) ), $this->$date), $this, $result, $target) ); + } + $event_string = str_replace($result,$replace,$event_string ); + } + //This is for the custom attributes + preg_match_all('/#_ATT\{([^}]+)\}(\{([^}]+)\})?/', $format, $results); + foreach($results[0] as $resultKey => $result) { + //Strip string of placeholder and just leave the reference + $attRef = substr( substr($result, 0, strpos($result, '}')), 6 ); + $attString = ''; + if( is_array($this->event_attributes) && array_key_exists($attRef, $this->event_attributes) ){ + $attString = $this->event_attributes[$attRef]; + }elseif( !empty($results[3][$resultKey]) ){ + //Check to see if we have a second set of braces; + $attString = $results[3][$resultKey]; + } + $attString = apply_filters('em_event_output_placeholder', $attString, $this, $result, $target); + $event_string = str_replace($result, $attString ,$event_string ); + } + //First let's do some conditional placeholder removals + for ($i = 0 ; $i < get_option('dbem_conditional_recursions',1); $i++){ //you can add nested recursions by modifying this setting in your wp_options table + preg_match_all('/\{([a-zA-Z0-9_]+)\}(.+?)\{\/\1\}/s', $event_string, $conditionals); + if( count($conditionals[0]) > 0 ){ + //Check if the language we want exists, if not we take the first language there + foreach($conditionals[1] as $key => $condition){ + $show_condition = false; + if ($condition == 'has_bookings') { + //check if there's a booking, if not, remove this section of code. + $show_condition = ($this->event_rsvp && get_option('dbem_rsvp_enabled')); + }elseif ($condition == 'no_bookings') { + //check if there's a booking, if not, remove this section of code. + $show_condition = (!$this->event_rsvp && get_option('dbem_rsvp_enabled')); + }elseif ($condition == 'no_location'){ + //does this event have a valid location? + $show_condition = ( empty($this->location_id) || !$this->get_location()->location_status ); + }elseif ($condition == 'has_location'){ + //does this event have a valid location? + $show_condition = ( !empty($this->location_id) && $this->get_location()->location_status ); + }elseif ($condition == 'has_image'){ + //does this event have an image? + $show_condition = ( $this->get_image_url() != '' ); + }elseif ($condition == 'no_image'){ + //does this event have an image? + $show_condition = ( $this->get_image_url() == '' ); + }elseif ($condition == 'has_time'){ + //are the booking times different and not an all-day event + $show_condition = ( $this->start != $this->end && !$this->event_all_day ); + }elseif ($condition == 'no_time'){ + //are the booking times exactly the same and it's not an all-day event. + $show_condition = ( $this->event_start_time == $this->event_end_time && !$this->event_all_day ); + }elseif ($condition == 'all_day'){ + //is it an all day event + $show_condition = !empty($this->event_all_day); + }elseif ($condition == 'logged_in'){ + //user is logged in + $show_condition = is_user_logged_in(); + }elseif ($condition == 'not_logged_in'){ + //not logged in + $show_condition = !is_user_logged_in(); + }elseif ($condition == 'has_spaces'){ + //is it an all day event + $show_condition = $this->event_rsvp && $this->get_bookings()->get_available_spaces() > 0; + }elseif ($condition == 'fully_booked'){ + //is it an all day event + $show_condition = $this->event_rsvp && $this->get_bookings()->get_available_spaces() <= 0; + }elseif ($condition == 'is_long'){ + //is it an all day event + $show_condition = $this->event_start_date != $this->event_end_date; + }elseif ($condition == 'not_long'){ + //is it an all day event + $show_condition = $this->event_start_date == $this->event_end_date; + }elseif ($condition == 'is_past'){ + //if event is past + $show_condition = $this->start <= current_time('timestamp'); + }elseif ($condition == 'is_future'){ + //if event is upcoming + $show_condition = $this->start > current_time('timestamp'); + } + $show_condition = apply_filters('em_event_output_show_condition', $show_condition, $condition, $conditionals[0][$key], $this); + if($show_condition){ + //calculate lengths to delete placeholders + $placeholder_length = strlen($condition)+2; + $replacement = substr($conditionals[0][$key], $placeholder_length, strlen($conditionals[0][$key])-($placeholder_length *2 +1)); + }else{ + $replacement = ''; + } + $event_string = str_replace($conditionals[0][$key], apply_filters('em_event_output_condition', $replacement, $condition, $conditionals[0][$key], $this), $event_string); + } + } + } + //Now let's check out the placeholders. + preg_match_all("/(#@?_?[A-Za-z0-9]+)({([a-zA-Z0-9_,]+)})?/", $format, $placeholders); + $replaces = array(); + foreach($placeholders[1] as $key => $result) { + $match = true; + $replace = ''; + $full_result = $placeholders[0][$key]; + switch( $result ){ + //Event Details + case '#_EVENTID': + $replace = $this->event_id; + break; + case '#_EVENTPOSTID': + $replace = $this->post_id; + break; + case '#_NAME': //depreciated + case '#_EVENTNAME': + $replace = $this->event_name; + break; + case '#_NOTES': //depreciated + case '#_EXCERPT': //depreciated + case '#_EVENTNOTES': + case '#_EVENTEXCERPT': + $replace = $this->post_content; + if($result == "#_EXCERPT" || $result == "#_EVENTEXCERPT"){ + if( !empty($this->post_excerpt) ){ + $replace = $this->post_excerpt; + }else{ + $matches = explode('<!--more', $this->post_content); + $replace = $matches[0]; + } + } + break; + case '#_EVENTIMAGEURL': + case '#_EVENTIMAGE': + if($this->get_image_url() != ''){ + if($result == '#_EVENTIMAGEURL'){ + $replace = esc_url($this->image_url); + }else{ + if( empty($placeholders[3][$key]) ){ + $replace = "<img src='".esc_url($this->image_url)."' alt='".esc_attr($this->event_name)."'/>"; + }else{ + $image_size = explode(',', $placeholders[3][$key]); + $image_src = $this->image_url; + if( $this->array_is_numeric($image_size) && count($image_size) > 1 ){ + global $blog_id; + if ( is_multisite() && $blog_id > 0) { + $imageParts = explode('/blogs.dir/', $image_src); + if (isset($imageParts[1])) { + $image_src = network_site_url('/wp-content/blogs.dir/'. $blog_id. '/' . $imageParts[1]); + } + } + $replace = "<img src='".esc_url(em_get_thumbnail_url($image_src, $image_size[0], $image_size[1]))."' alt='".esc_attr($this->event_name)."'/>"; + }else{ + $replace = "<img src='".esc_url($image_src)."' alt='".esc_attr($this->event_name)."'/>"; + } + } + } + } + break; + //Times & Dates + case '#_24HSTARTTIME': + case '#_24HENDTIME': + $time = ($result == '#_24HSTARTTIME') ? $this->event_start_time:$this->event_end_time; + $replace = substr($time, 0,5); + break; + case '#_12HSTARTTIME': + case '#_12HENDTIME': + $time = ($result == '#_12HSTARTTIME') ? $this->event_start_time:$this->event_end_time; + $replace = date('g:i A', strtotime($time)); + break; + case '#_EVENTTIMES': + //get format of time to show + if( !$this->event_all_day ){ + $time_format = ( get_option('dbem_time_format') ) ? get_option('dbem_time_format'):get_option('time_format'); + if($this->event_start_time != $this->event_end_time ){ + $replace = date_i18n($time_format, $this->start). get_option('dbem_times_seperator') . date_i18n($time_format, $this->end); + }else{ + $replace = date_i18n($time_format, $this->start); + } + }else{ + $replace = get_option('dbem_event_all_day_message'); + } + break; + case '#_EVENTDATES': + //get format of time to show + $date_format = ( get_option('dbem_date_format') ) ? get_option('dbem_date_format'):get_option('date_format'); + if( $this->event_start_date != $this->event_end_date){ + $replace = date_i18n($date_format, $this->start). get_option('dbem_dates_seperator') . date_i18n($date_format, $this->end); + }else{ + $replace = date_i18n($date_format, $this->start); + } + break; + //Links + case '#_EVENTPAGEURL': //Depreciated + case '#_LINKEDNAME': //Depreciated + case '#_EVENTURL': //Just the URL + case '#_EVENTLINK': //HTML Link + $event_link = esc_url($this->get_permalink()); + if($result == '#_LINKEDNAME' || $result == '#_EVENTLINK'){ + $replace = '<a href="'.$event_link.'" title="'.esc_attr($this->event_name).'">'.esc_attr($this->event_name).'</a>'; + }else{ + $replace = $event_link; + } + break; + case '#_EDITEVENTURL': + case '#_EDITEVENTLINK': + if( $this->can_manage('edit_events','edit_others_events') ){ + $link = esc_url($this->get_edit_url()); + if( $result == '#_EDITEVENTLINK'){ + $replace = '<a href="'.$link.'">'.esc_html(sprintf(__('Edit %s','dbem'),__('Event','dbem'))).'</a>'; + }else{ + $replace = $link; + } + } + break; + //Bookings + case '#_ADDBOOKINGFORM': //Depreciated + case '#_REMOVEBOOKINGFORM': //Depreciated + case '#_BOOKINGFORM': + if( get_option('dbem_rsvp_enabled')){ + ob_start(); + $template = em_locate_template('placeholders/bookingform.php', true, array('EM_Event'=>$this)); + if( !defined('EM_BOOKING_JS_LOADED') ){ + //this kicks off the Javascript required by booking forms. This is fired once for all booking forms on a page load and appears at the bottom of the page + //your theme must call the wp_footer() function for this to work (as required by many other plugins too) + function em_booking_js_footer(){ + ?> + <script type="text/javascript"> + jQuery(document).ready( function($){ + <?php + //we call the segmented JS files and include them here + include(WP_PLUGIN_DIR.'/events-manager/includes/js/bookingsform.js'); + do_action('em_gateway_js'); + ?> + }); + </script> + <?php + } + add_action('wp_footer','em_booking_js_footer'); + add_action('admin_footer','em_booking_js_footer'); + define('EM_BOOKING_JS_LOADED',true); + } + $replace = ob_get_clean(); + } + break; + case '#_BOOKINGBUTTON': + if( get_option('dbem_rsvp_enabled')){ + ob_start(); + $template = em_locate_template('placeholders/bookingbutton.php', true, array('EM_Event'=>$this)); + $replace = ob_get_clean(); + } + break; + case '#_EVENTPRICERANGE': + //get the range of prices + $min = false; + $max = 0; + foreach( $this->get_tickets()->tickets as $EM_Ticket ){ + if($EM_Ticket->get_price() > $max ){ + $max = $EM_Ticket->get_price(); + } + if($EM_Ticket->get_price() < $min || $min === false){ + $min = $EM_Ticket->get_price(); + } + } + if( $min === false ) $min = 0; + if( $min != $max ){ + $replace = em_get_currency_formatted($min).' - '.em_get_currency_formatted($max); + }else{ + $replace = em_get_currency_formatted($min); + } + break; + case '#_EVENTPRICEMIN': + //get the range of prices + $min = false; + foreach( $this->get_tickets()->tickets as $EM_Ticket ){ + if( $EM_Ticket->get_price() < $min || $min === false){ + $min = $EM_Ticket->get_price(); + } + } + if( $min === false ) $min = 0; + $replace = em_get_currency_formatted($min); + break; + case '#_EVENTPRICEMAX': + //get the range of prices + $max = 0; + foreach( $this->get_tickets()->tickets as $EM_Ticket ){ + if( $EM_Ticket->get_price() > $max ){ + $max = $EM_Ticket->get_price(); + } + } + $replace = em_get_currency_formatted($max); + break; + case '#_AVAILABLESEATS': //Depreciated + case '#_AVAILABLESPACES': + if ($this->event_rsvp && get_option('dbem_rsvp_enabled')) { + $replace = $this->get_bookings()->get_available_spaces(); + } else { + $replace = "0"; + } + break; + case '#_BOOKEDSEATS': //Depreciated + case '#_BOOKEDSPACES': + //This placeholder is actually a little misleading, as it'll consider reserved (i.e. pending) bookings as 'booked' + if ($this->event_rsvp && get_option('dbem_rsvp_enabled')) { + $replace = $this->get_bookings()->get_booked_spaces(); + if( get_option('dbem_bookings_approval_reserved') ){ + $replace += $this->get_bookings()->get_pending_spaces(); + } + } else { + $replace = "0"; + } + break; + case '#_PENDINGSPACES': + if ($this->event_rsvp && get_option('dbem_rsvp_enabled')) { + $replace = $this->get_bookings()->get_pending_spaces(); + } else { + $replace = "0"; + } + break; + case '#_SEATS': //Depreciated + case '#_SPACES': + $replace = $this->get_spaces(); + break; + case '#_BOOKINGSURL': + case '#_BOOKINGSLINK': + if( $this->can_manage('manage_bookings','manage_others_bookings') ){ + $bookings_link = esc_url($this->get_bookings_url()); + if($result == '#_BOOKINGSLINK'){ + $replace = '<a href="'.$bookings_link.'" title="'.esc_attr($this->event_name).'">'.esc_html($this->event_name).'</a>'; + }else{ + $replace = $bookings_link; + } + } + break; + //Contact Person + case '#_CONTACTNAME': + case '#_CONTACTPERSON': //Depreciated (your call, I think name is better) + $replace = $this->get_contact()->display_name; + break; + case '#_CONTACTUSERNAME': + $replace = $this->get_contact()->user_login; + break; + case '#_CONTACTEMAIL': + case '#_CONTACTMAIL': //Depreciated + $replace = $this->get_contact()->user_email; + break; + case '#_CONTACTID': + $replace = $this->get_contact()->ID; + break; + case '#_CONTACTPHONE': + $replace = ( $this->get_contact()->phone != '') ? $this->get_contact()->phone : __('N/A', 'dbem'); + break; + case '#_CONTACTAVATAR': + $replace = get_avatar( $this->get_contact()->ID, $size = '50' ); + break; + case '#_CONTACTPROFILELINK': + case '#_CONTACTPROFILEURL': + if( function_exists('bp_core_get_user_domain') ){ + $replace = bp_core_get_user_domain($this->get_contact()->ID); + if( $result == '#_CONTACTPROFILELINK' ){ + $replace = '<a href="'.esc_url($replace).'">'.__('Profile', 'dbem').'</a>'; + } + } + break; + case '#_CONTACTMETA': + if( !empty($placeholders[3][$key]) ){ + $replace = get_user_meta($this->event_owner, $placeholders[3][$key], true); + } + break; + case '#_ATTENDEES': + ob_start(); + $template = em_locate_template('placeholders/attendees.php', true, array('EM_Event'=>$this)); + $replace = ob_get_clean(); + break; + case '#_ATTENDEESLIST': + ob_start(); + $template = em_locate_template('placeholders/attendeeslist.php', true, array('EM_Event'=>$this)); + $replace = ob_get_clean(); + break; + //Categories and Tags + case '#_EVENTCATEGORIESIMAGES': + ob_start(); + $template = em_locate_template('placeholders/eventcategoriesimages.php', true, array('EM_Event'=>$this)); + $replace = ob_get_clean(); + break; + case '#_EVENTTAGS': + ob_start(); + $template = em_locate_template('placeholders/eventtags.php', true, array('EM_Event'=>$this)); + $replace = ob_get_clean(); + break; + case '#_CATEGORIES': //depreciated + case '#_EVENTCATEGORIES': + ob_start(); + $template = em_locate_template('placeholders/categories.php', true, array('EM_Event'=>$this)); + $replace = ob_get_clean(); + break; + //Ical Stuff + case '#_EVENTICALURL': + case '#_EVENTICALLINK': + $replace = $this->get_ical_url(); + if( $result == '#_EVENTICALLINK' ){ + $replace = '<a href="'.esc_url($replace).'">iCal</a>'; + } + break; + case '#_EVENTGCALURL': + case '#_EVENTGCALLINK': + //get dates + if($this->event_all_day && $this->event_start_date == $this->event_end_date){ + $dateStart = date('Ymd',$this->start - (60*60*get_option('gmt_offset'))); + $dateEnd = date('Ymd',$this->start + 60*60*24 - (60*60*get_option('gmt_offset'))); + }else{ + $dateStart = date('Ymd\THis\Z',$this->start - (60*60*get_option('gmt_offset'))); + $dateEnd = date('Ymd\THis\Z',$this->end - (60*60*get_option('gmt_offset'))); + } + //build url + $gcal_url = 'http://www.google.com/calendar/event?action=TEMPLATE&text=event_name&dates=start_date/end_date&details=post_content&location=location_name&trp=false&sprop=event_url&sprop=name:blog_name'; + $gcal_url = str_replace('event_name', urlencode($this->event_name), $gcal_url); + $gcal_url = str_replace('start_date', urlencode($dateStart), $gcal_url); + $gcal_url = str_replace('end_date', urlencode($dateEnd), $gcal_url); + $gcal_url = str_replace('location_name', urlencode($this->output('#_LOCATION')), $gcal_url); + $gcal_url = str_replace('blog_name', urlencode(get_bloginfo()), $gcal_url); + $gcal_url = str_replace('event_url', urlencode($this->get_permalink()), $gcal_url); + //calculate URL length so we know how much we can work with to make a description. + if( !empty($this->post_excerpt) ){ + $gcal_url_description = $this->post_excerpt; + }else{ + $matches = explode('<!--more', $this->post_content); + $gcal_url_description = wp_kses_data($matches[0]); + } + $gcal_url_length = strlen($gcal_url) - 9; + if( strlen($gcal_url_description) + $gcal_url_length > 1500 ){ + $gcal_url_description = substr($gcal_url_description, 0, 1530 - $gcal_url_length - 3 ).'...'; + } + $gcal_url = str_replace('post_content', urlencode($gcal_url_description), $gcal_url); + //get the final url + $replace = $gcal_url; + if( $result == '#_EVENTGCALLINK' ){ + $img_url = 'www.google.com/calendar/images/ext/gc_button2.gif'; + $img_url = is_ssl() ? 'https://'.$img_url:'http://'.$img_url; + $replace = '<a href="'.esc_url($replace).'" target="_blank"><img src="'.esc_url($img_url).'" alt="0" border="0"></a>'; + } + break; + default: + $replace = $full_result; + break; + } + $replaces[$full_result] = apply_filters('em_event_output_placeholder', $replace, $this, $full_result, $target); + } + //sort out replacements so that during replacements shorter placeholders don't overwrite longer varieties. + krsort($replaces); + foreach($replaces as $full_result => $replacement){ + $event_string = str_replace($full_result, $replacement , $event_string ); + } + //Time placeholders + foreach($placeholders[1] as $result) { + // matches all PHP START date and time placeholders + if (preg_match('/^#[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]$/', $result)) { + $replace = date_i18n(ltrim($result, "#"), $this->start); + $replace = apply_filters('em_event_output_placeholder', $replace, $this, $result, $target); + $event_string = str_replace($result, $replace, $event_string ); + } + // matches all PHP END time placeholders for endtime + if (preg_match('/^#@[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]$/', $result)) { + $replace = date_i18n(ltrim($result, "#@"), $this->end); + $replace = apply_filters('em_event_output_placeholder', $replace, $this, $result, $target); + $event_string = str_replace($result, $replace, $event_string ); + } + } + //Now do dependent objects + if( !empty($this->location_id) && $this->get_location()->location_status ){ + $event_string = $this->get_location()->output($event_string, $target); + }else{ + $EM_Location = new EM_Location(); + $event_string = $EM_Location->output($event_string, $target); + } + + //for backwards compat and easy use, take over the individual category placeholders with the frirst cat in th elist. + $EM_Categories = $this->get_categories(); + if( count($EM_Categories->categories) > 0 ){ + $EM_Category = $EM_Categories->get_first(); + } + + if( empty($EM_Category) ) $EM_Category = new EM_Category(); + $event_string = $EM_Category->output($event_string, $target); + + return apply_filters('em_event_output', $event_string, $this, $format, $target); + } + + /********************************************************** + * RECURRENCE METHODS + ***********************************************************/ + + /** + * Returns true if this is a recurring event. + * @return boolean + */ + function is_recurring(){ + return $this->post_type == 'event-recurring' && get_option('dbem_recurrence_enabled'); + } + /** + * Will return true if this individual event is part of a set of events that recur + * @return boolean + */ + function is_recurrence(){ + return ( $this->event_id > 0 && $this->recurrence_id > 0 && get_option('dbem_recurrence_enabled') ); + } + /** + * Returns if this is an individual event and is not a recurrence + * @return boolean + */ + function is_individual(){ + return ( !$this->is_recurring() && !$this->is_recurrence() ); + } + + /** + * Gets the event recurrence template, which is an EM_Event_Recurrence object (based off an event-recurring post) + * @return EM_Event_Recurrence + */ + function get_event_recurrence(){ + if(!$this->is_recurring()){ + return new EM_Event($this->recurrence_id); //remember, recurrence_id is a post! + }else{ + return $this; + } + } + + function get_detach_url(){ + return admin_url().'admin.php?event_id='.$this->event_id.'&action=event_detach&_wpnonce='.wp_create_nonce('event_detach_'.get_current_user_id().'_'.$this->event_id); + } + + function get_attach_url($recurrence_id){ + return admin_url().'admin.php?undo_id='.$recurrence_id.'&event_id='.$this->event_id.'&action=event_attach&_wpnonce='.wp_create_nonce('event_attach_'.get_current_user_id().'_'.$this->event_id); + } + + /** + * Returns if this is an individual event and is not recurring or a recurrence + * @return boolean + */ + function detach(){ + global $wpdb; + if( $this->is_recurrence() && !$this->is_recurring() && $this->can_manage('edit_recurring_events','edit_others_recurring_events') ){ + //remove recurrence id from post meta and index table + $url = $this->get_attach_url($this->recurrence_id); + $wpdb->update(EM_EVENTS_TABLE, array('recurrence_id'=>0), array('event_id' => $this->event_id)); + update_post_meta($this->post_id, '_recurrence_id', 0); + $this->feedback_message = __('Event detached.','dbem') . ' <a href="'.$url.'">'.__('Undo','dbem').'</a>'; + $this->recurrence_id = 0; + return true; + } + $this->add_error(__('Event could not be detached.','dbem')); + return false; + } + + /** + * Returns if this is an individual event and is not recurring or a recurrence + * @return boolean + */ + function attach($recurrence_id){ + global $wpdb; + if( !$this->is_recurrence() && !$this->is_recurring() && is_numeric($recurrence_id) && $this->can_manage('edit_recurring_events','edit_others_recurring_events') ){ + //add recurrence id to post meta and index table + $wpdb->update(EM_EVENTS_TABLE, array('recurrence_id'=>$recurrence_id), array('event_id' => $this->event_id)); + update_post_meta($this->post_id, '_recurrence_id', $recurrence_id); + $this->feedback_message = __('Event re-attached to recurrence.','dbem'); + return true; + } + $this->add_error(__('Event could not be attached.','dbem')); + return false; + } + + /** + * Saves events and replaces old ones. Returns true if sucecssful or false if not. + * @return boolean + */ + function save_events() { + global $wpdb; + if( $this->can_manage('edit_events','edit_others_events') && $this->is_published() ){ + do_action('em_event_save_events_pre', $this); //actions/filters only run if event is recurring + //Make template event index, post, and meta (and we just change event dates) + $event = $this->to_array(true); //event template - for index + $event['event_attributes'] = serialize($event['event_attributes']); + $post_fields = $wpdb->get_row('SELECT * FROM '.$wpdb->posts.' WHERE ID='.$this->post_id, ARRAY_A); //post to copy + $post_name = $post_fields['post_name']; //save post slug since we'll be using this + $post_fields['post_type'] = 'event'; //make sure we'll save events, not recurrence templates + $meta_fields_map = $wpdb->get_results('SELECT meta_key,meta_value FROM '.$wpdb->postmeta.' WHERE post_id='.$this->post_id, ARRAY_A); + $meta_fields = array(); + //convert meta_fields into a cleaner array + foreach($meta_fields_map as $meta_data){ + $meta_fields[$meta_data['meta_key']] = $meta_data['meta_value']; + } + //remove id and we have a event template to feed to wpdb insert + unset($event['event_id']); + unset($post_fields['ID']); + //remove recurrence meta info we won't need in events + foreach( array_keys($this->recurrence_fields) as $recurrence_field){ + unset($event[$recurrence_field]); + unset($meta_fields['_'.$recurrence_field]); + } + $event['event_date_created'] = current_time('mysql'); //since the recurrences are recreated + unset($event['event_date_modified']); + //Set the recurrence ID + $event['recurrence_id'] = $meta_fields['_recurrence_id'] = $this->event_id; + $event['recurrence'] = $meta_fields['_recurrence'] = 0; + //Let's start saving! + $this->delete_events(); //Delete old events beforehand, this will change soon + $event_saves = array(); + $event_ids = array(); + $post_ids = array(); + $matching_days = $this->get_recurrence_days(); //Get days where events recur + if( count($matching_days) > 0 ){ + //first save event post data + $recurring_date_format = apply_filters('em_event_save_events_format', 'Y-m-d'); + foreach( $matching_days as $day ) { + //rewrite post fields if needed + $post_fields['post_name'] = $event['event_slug'] = $meta_fields['_event_slug'] = $post_name.'-'.date($recurring_date_format, $day); + //adjust certain meta information + $event['event_start_date'] = $meta_fields['_event_start_date'] = date("Y-m-d", $day); + $meta_fields['_start_ts'] = $day; + if($this->recurrence_days > 0){ + $meta_fields['_end_ts'] = $day + ($this->recurrence_days * 60*60*24); + $event['event_end_date'] = $meta_fields['_event_end_date'] = date("Y-m-d", $meta_fields['_end_ts']); + }else{ + $meta_fields['_end_ts'] = $day; + $event['event_end_date'] = $meta_fields['_event_end_date'] = $event['event_start_date']; + } + //create the event + if( $wpdb->insert($wpdb->posts, $post_fields ) ){ + $event['post_id'] = $meta_fields['_post_id'] = $post_id = $post_ids[] = $wpdb->insert_id; //post id saved into event and also as a var for later user + // Set GUID and event slug as per wp_insert_post + $wpdb->update( $wpdb->posts, array( 'guid' => get_permalink( $post_id ) ), array('ID'=>$post_id) ); + //insert into events index table + $event_saves[] = $wpdb->insert(EM_EVENTS_TABLE, $event); + $event_ids[] = $event_id = $wpdb->insert_id; + //create the meta inserts for each event + $meta_fields['_event_id'] = $event_id; + foreach($meta_fields as $meta_key => $meta_val){ + $meta_inserts[] = $wpdb->prepare("(%d, '%s', '%s')", array($post_id, $meta_key, $meta_val)); + } + }else{ + $event_saves[] = false; + } + //if( EM_DEBUG ){ echo "Entering recurrence " . date("D d M Y", $day)."<br/>"; } + } + //insert the metas in one go, faster than one by one + if( count($meta_inserts) > 0 ){ + $result = $wpdb->query("INSERT INTO ".$wpdb->postmeta." (post_id,meta_key,meta_value) VALUES ".implode(',',$meta_inserts)); + if($result === false){ + $this->add_error('There was a problem adding custom fields to your recurring events.','dbem'); + } + } + //copy the event tags and categories + $categories = $this->get_categories()->categories; + foreach( $categories as $category){ + if( !empty($category->slug) ) $cat_slugs[] = $category->slug; //save of category will soft-fail if slug is empty + } + $cat_slugs_count = count($categories); + $tags = get_the_terms( $this->post_id, EM_TAXONOMY_TAG); + $tax_slugs = array(); + if( is_array($tags) ){ + foreach($tags as $tag){ + if( !empty($tag->slug) ) $tax_slugs[] = $tag->slug; //save of category will soft-fail if slug is empty + } + } + $tax_slugs_count = count($categories); + foreach($post_ids as $post_id){ + if( $cat_slugs_count > 0 && !EM_MS_GLOBAL ){ + wp_set_object_terms($post_id, $cat_slugs, EM_TAXONOMY_CATEGORY); + } + if( $tax_slugs_count > 0 ){ + wp_set_object_terms($post_id, $tax_slugs, EM_TAXONOMY_TAG); + } + } + //featured images + if( !empty($this->attributes['thumbnail_id']) ){ + $image_inserts = array(); + foreach($post_ids as $post_ids){ + $image_inserts[] = "({$this->post_id}, '_thumbnail_id', {$this->attributes['thumbnail_id']})"; + } + if( count($image_inserts) > 0 ){ + $wpdb->query('INSERT INTO '.$wpdb->postmeta.' (post_id, meta_key, meta_value) VALUES '.implode(', ', $image_inserts)); + } + } + //MS Global Categories + if( $cat_slugs_count > 0 && EM_MS_GLOBAL ){ + foreach($categories as $EM_Category){ + foreach($event_ids as $event_id){ + $wpdb->insert(EM_META_TABLE, array('meta_value'=>$EM_Category->term_id,'object_id'=>$event_id,'meta_key'=>'event-category')); + } + } + } + //now, save booking info for each event + if( $this->event_rsvp ){ + $meta_inserts = array(); + foreach($this->get_tickets() as $EM_Ticket){ + /* @var $EM_Ticket EM_Ticket */ + //get array, modify event id and insert + $ticket = $EM_Ticket->to_array(); + unset($ticket['ticket_id']); + //clean up ticket values + foreach($ticket as $k => $v){ + if( empty($v) && $k != 'ticket_name' ){ + $ticket[$k] = 'NULL'; + }else{ + $data_type = !empty($EM_Ticket->fields[$k]['type']) ? $EM_Ticket->fields[$k]['type']:'%s'; + $ticket[$k] = $wpdb->prepare($data_type,$v); + } + } + foreach($event_ids as $event_id){ + $ticket['event_id'] = $event_id; + $meta_inserts[] = "(".implode(",",$ticket).")"; + } + } + $keys = "(".implode(",",array_keys($ticket)).")"; + $values = implode(',',$meta_inserts); + $sql = "INSERT INTO ".EM_TICKETS_TABLE." $keys VALUES $values"; + $result = $wpdb->query($sql); + } + }else{ + $this->add_error('You have not defined a date range long enough to create a recurrence.','dbem'); + $result = false; + } + return apply_filters('em_event_save_events', !in_array(false, $event_saves) && $result !== false, $this, $event_ids); + } + return apply_filters('em_event_save_events', false, $this, $event_ids); + } + + /** + * Removes all reoccurring events. + * @param $recurrence_id + * @return null + */ + function delete_events(){ + global $wpdb; + do_action('em_event_delete_events_pre', $this); + //So we don't do something we'll regret later, we could just supply the get directly into the delete, but this is safer + $result = false; + if( $this->can_manage('delete_events', 'delete_others_events') ){ + //delete events from em_events table + $events_array = EM_Events::get( array('recurrence_id'=>$this->event_id, 'scope'=>'all', 'status'=>false ) ); + foreach($events_array as $EM_Event){ + /* @var $EM_Event EM_Event */ + if($EM_Event->recurrence_id == $this->event_id){ + $EM_Event->delete(true); + } + } + } + return apply_filters('delete_events', $result, $this, $events_array); + } + + /** + * Returns the days that match the recurrance array passed (unix timestamps) + * @param array $recurrence + * @return array + */ + function get_recurrence_days(){ + $start_date = strtotime($this->event_start_date); + $end_date = strtotime($this->event_end_date); + + $weekdays = explode(",", $this->recurrence_byday); //what days of the week (or if monthly, one value at index 0) + + $matching_days = array(); + $aDay = 86400; // a day in seconds + $aWeek = $aDay * 7; + + //TODO can this be optimized? + switch ( $this->recurrence_freq ){ + case 'daily': + //If daily, it's simple. Get start date, add interval timestamps to that and create matching day for each interval until end date. + $current_date = $start_date; + while( $current_date <= $end_date ){ + $matching_days[] = $current_date; + $current_date = $current_date + ($aDay * $this->recurrence_interval); + } + break; + case 'weekly': + //sort out week one, get starting days and then days that match time span of event (i.e. remove past events in week 1) + $start_of_week = get_option('start_of_week'); //Start of week depends on WordPress + //first, get the start of this week as timestamp + $event_start_day = date('w', $start_date); + $offset = 0; + if( $event_start_day > $start_of_week ){ + $offset = $event_start_day - $start_of_week; //x days backwards + }elseif( $event_start_day < $start_of_week ){ + $offset = $start_of_week; + } + $start_week_date = $start_date - ( ($event_start_day - $start_of_week) * $aDay ); + //then get the timestamps of weekdays during this first week, regardless if within event range + $start_weekday_dates = array(); //Days in week 1 where there would events, regardless of event date range + for($i = 0; $i < 7; $i++){ + $weekday_date = $start_week_date+($aDay*$i); //the date of the weekday we're currently checking + $weekday_day = date('w',$weekday_date); //the day of the week we're checking, taking into account wp start of week setting + if( in_array( $weekday_day, $weekdays) ){ + $start_weekday_dates[] = $weekday_date; //it's in our starting week day, so add it + } + } + //for each day of eventful days in week 1, add 7 days * weekly intervals + foreach ($start_weekday_dates as $weekday_date){ + //Loop weeks by interval until we reach or surpass end date + while($weekday_date <= $end_date){ + if( $weekday_date >= $start_date && $weekday_date <= $end_date ){ + $matching_days[] = $weekday_date; + } + $weekday_date = $weekday_date + ($aWeek * $this->recurrence_interval); + } + }//done! + break; + case 'monthly': + //loop months starting this month by intervals + $current_arr = getdate($start_date); + $end_arr = getdate($end_date); + $end_month_date = strtotime( date('Y-m-t', $end_date) ); //End date on last day of month + $current_date = strtotime( date('Y-m-1', $start_date) ); //Start date on first day of month + while( $current_date <= $end_month_date ){ + $last_day_of_month = date('t', $current_date); + //Now find which day we're talking about + $current_week_day = date('w',$current_date); + $matching_month_days = array(); + //Loop through days of this years month and save matching days to temp array + for($day = 1; $day <= $last_day_of_month; $day++){ + if((int) $current_week_day == $this->recurrence_byday){ + $matching_month_days[] = $day; + } + $current_week_day = ($current_week_day < 6) ? $current_week_day+1 : 0; + } + //Now grab from the array the x day of the month + $matching_day = ($this->recurrence_byweekno > 0) ? $matching_month_days[$this->recurrence_byweekno-1] : array_pop($matching_month_days); + $matching_date = strtotime(date('Y-m',$current_date).'-'.$matching_day); + if($matching_date >= $start_date && $matching_date <= $end_date){ + $matching_days[] = $matching_date; + } + //add the number of days in this month to make start of next month + $current_arr['mon'] += $this->recurrence_interval; + if($current_arr['mon'] > 12){ + //FIXME this won't work if interval is more than 12 + $current_arr['mon'] = $current_arr['mon'] - 12; + $current_arr['year']++; + } + $current_date = strtotime("{$current_arr['year']}-{$current_arr['mon']}-1"); + } + break; + case 'yearly': + //If yearly, it's simple. Get start date, add interval timestamps to that and create matching day for each interval until end date. + $month = date('m', $this->start); + $day = date('d',$this->start); + $year = date('Y',$this->start); + $end_year = date('Y',$this->end); + if( @mktime(0,0,0,$day,$month,$end_year) < $this->end ) $end_year--; + while( $year <= $end_year ){ + $matching_days[] = mktime(0,0,0,$day,$month,$year); + $year++; + } + break; + } + sort($matching_days); + return apply_filters('em_events_get_recurrence_days', $matching_days, $this); + } + + /** + * If event is recurring, set recurrences to same status as template + * @param $status + */ + function set_status_events($status){ + //give sub events same status + $events_array = EM_Events::get( array('recurrence_id'=>$this->post_id, 'scope'=>'all', 'status'=>false ) ); + foreach($events_array as $EM_Event){ + /* @var $EM_Event EM_Event */ + if($EM_Event->recurrence_id == $this->event_id){ + $EM_Event->set_status($status); + } + } + } + + /** + * Returns a string representation of this recurrence. Will return false if not a recurrence + * @return string + */ + function get_recurrence_description() { + $EM_Event_Recurring = $this->get_event_recurrence(); + $recurrence = $this->to_array(); + $weekdays_name = array(__('Sunday', 'dbem'),__('Monday', 'dbem'),__('Tuesday', 'dbem'),__('Wednesday', 'dbem'),__('Thursday', 'dbem'),__('Friday', 'dbem'),__('Saturday', 'dbem')); + $monthweek_name = array('1' => __('the first %s of the month', 'dbem'),'2' => __('the second %s of the month', 'dbem'), '3' => __('the third %s of the month', 'dbem'), '4' => __('the fourth %s of the month', 'dbem'), '-1' => __('the last %s of the month', 'dbem')); + $output = sprintf (__('From %1$s to %2$s', 'dbem'), $EM_Event_Recurring->event_start_date, $EM_Event_Recurring->event_end_date).", "; + if ($EM_Event_Recurring->recurrence_freq == 'daily') { + $freq_desc =__('everyday', 'dbem'); + if ($EM_Event_Recurring->recurrence_interval > 1 ) { + $freq_desc = sprintf (__("every %s days", 'dbem'), $EM_Event_Recurring->recurrence_interval); + } + }elseif ($EM_Event_Recurring->recurrence_freq == 'weekly') { + $weekday_array = explode(",", $EM_Event_Recurring->recurrence_byday); + $natural_days = array(); + foreach($weekday_array as $day){ + array_push($natural_days, $weekdays_name[$day]); + } + $output .= implode(" and ", $natural_days); + $freq_desc = ", " . __("every week", 'dbem'); + if ($EM_Event_Recurring->recurrence_interval > 1 ) { + $freq_desc = ", ".sprintf (__("every %s weeks", 'dbem'), $EM_Event_Recurring->recurrence_interval); + } + + }elseif ($EM_Event_Recurring->recurrence_freq == 'monthly') { + $weekday_array = explode(",", $EM_Event_Recurring->recurrence_byday); + $natural_days = array(); + foreach($weekday_array as $day){ + array_push($natural_days, $weekdays_name[$day]); + } + $freq_desc = sprintf (($monthweek_name[$EM_Event_Recurring->recurrence_byweekno]), implode(" and ", $natural_days)); + if ($EM_Event_Recurring->recurrence_interval > 1 ) { + $freq_desc .= ", ".sprintf (__("every %s months",'dbem'), $EM_Event_Recurring->recurrence_interval); + } + }elseif ($EM_Event_Recurring->recurrence_freq == 'yearly') { + $freq_desc .= __("every year", 'dbem'); + if ($EM_Event_Recurring->recurrence_interval > 1 ) { + $freq_desc .= sprintf (__("every %s years",'dbem'), $EM_Event_Recurring->recurrence_interval); + } + }else{ + $freq_desc = "[ERROR: corrupted database record]"; + } + $output .= $freq_desc; + return $output; + } + + /********************************************************** + * UTILITIES + ***********************************************************/ + + /** + * Can the user manage this? + */ + function can_manage( $owner_capability = false, $admin_capability = false, $user_to_check = false ){ + if( $this->event_id == '' && !is_user_logged_in() && get_option('dbem_events_anonymous_submissions') ){ + $user_to_check = get_option('dbem_events_anonymous_user'); + } + return apply_filters('em_event_can_manage', parent::can_manage($owner_capability, $admin_capability, $user_to_check), $this, $owner_capability, $admin_capability, $user_to_check); + } +} + +//TODO placeholder targets filtering could be streamlined better +/** + * This is a temporary filter function which mimicks the old filters in the old 2.x placeholders function + * @param string $result + * @param EM_Event $event + * @param string $placeholder + * @param string $target + * @return mixed + */ +function em_event_output_placeholder($result,$event,$placeholder,$target='html'){ + if( $target == 'raw' ) return $result; + if( ($placeholder == "#_EXCERPT" || $placeholder == "#_LOCATIONEXCERPT") && $target == 'html' ){ + $result = apply_filters('dbem_notes_excerpt', $result); + }elseif( $placeholder == '#_CONTACTEMAIL' && $target == 'html' ){ + $result = em_ascii_encode($event->get_contact()->user_email); + }elseif( in_array($placeholder, array('#_EVENTNOTES','#_NOTES','#_DESCRIPTION','#_LOCATIONNOTES','#_CATEGORYNOTES')) ){ + if($target == 'rss'){ + $result = apply_filters('dbem_notes_rss', $result); + $result = apply_filters('the_content_rss', $result); + }elseif($target == 'map'){ + $result = apply_filters('dbem_notes_map', $result); + }elseif($target == 'ical'){ + $result = apply_filters('dbem_notes_ical', $result); + }elseif ($target == "email"){ + $result = apply_filters('dbem_notes_email', $result); + }else{ //html + $result = apply_filters('dbem_notes', $result); + } + }elseif( in_array($placeholder, array("#_NAME",'#_LOCATION','#_TOWN','#_ADDRESS','#_LOCATIONNAME',"#_EVENTNAME","#_LOCATIONNAME")) ){ + if ($target == "rss"){ + $result = apply_filters('dbem_general_rss', $result); + }elseif ($target == "ical"){ + $result = apply_filters('dbem_general_ical', $result); + }elseif ($target == "email"){ + $result = apply_filters('dbem_general_email', $result); + }else{ //html + $result = apply_filters('dbem_general', $result); + } + } + return $result; +} +add_filter('em_category_output_placeholder','em_event_output_placeholder',1,4); +add_filter('em_event_output_placeholder','em_event_output_placeholder',1,4); +add_filter('em_location_output_placeholder','em_event_output_placeholder',1,4); +// FILTERS +// filters for general events field (corresponding to those of "the _title") +add_filter('dbem_general', 'wptexturize'); +add_filter('dbem_general', 'convert_chars'); +add_filter('dbem_general', 'trim'); +// filters for the notes field in html (corresponding to those of "the _content") +add_filter('dbem_notes', 'wptexturize'); +add_filter('dbem_notes', 'convert_smilies'); +add_filter('dbem_notes', 'convert_chars'); +add_filter('dbem_notes', 'wpautop'); +add_filter('dbem_notes', 'prepend_attachment'); +// RSS content filter +add_filter('dbem_notes_rss', 'convert_chars', 8); +add_filter('dbem_general_rss', 'esc_html', 8); +// Notes map filters +add_filter('dbem_notes_map', 'convert_chars', 8); +add_filter('dbem_notes_map', 'js_escape'); + +/** + * This function replaces the default gallery shortcode, so it can check if this is a recurring event recurrence and pass on the parent post id as the default post. + * @param array $attr + */ +function em_event_gallery_override( $attr = array() ){ + global $post; + if( $post->post_type == EM_POST_TYPE_EVENT && empty($attr['id']) ){ + //no id specified, so check if it's recurring and override id with recurrence template post id + $EM_Event = em_get_event($post->ID, 'post_id'); + if( $EM_Event->is_recurrence() ){ + $attr['id'] = $EM_Event->get_event_recurrence()->post_id; + } + } + return gallery_shortcode($attr); +} +remove_shortcode('gallery'); +add_shortcode('gallery', 'em_event_gallery_override'); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-events.php b/wp-content/plugins/events-manager/classes/em-events.php new file mode 100644 index 0000000..c264336 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-events.php @@ -0,0 +1,387 @@ +<?php +//TODO EM_Events is currently static, better we make this non-static so we can loop sets of events, and standardize with other objects. +/** + * Use this class to query and manipulate sets of events. If dealing with more than one event, you probably want to use this class in some way. + * + */ +class EM_Events extends EM_Object implements Iterator { + /** + * Array of EM_Event objects + * @var array EM_Event + */ + var $events = array(); + + function EM_Events( $args = array() ){ + if( is_array($args) ){ + if( is_object(current($args)) && get_class(current($args)) == 'EM_Event' ){ + $this->events = $args; + }else{ + $this->events = EM_Events::get($args); + } + }else{ + $this->events = EM_Events::get(); + } + do_action('em_events',$this); + } + + /** + * Returns an array of EM_Events that match the given specs in the argument, or returns a list of future evetnts in future + * (see EM_Events::get_default_search() ) for explanation of possible search array values. You can also supply a numeric array + * containing the ids of the events you'd like to obtain + * + * @param array $args + * @return EM_Event array() + */ + function get( $args = array(), $count=false ) { + global $wpdb; + $events_table = EM_EVENTS_TABLE; + $locations_table = EM_LOCATIONS_TABLE; + + //Quick version, we can accept an array of IDs, which is easy to retrieve + if( self::array_is_numeric($args) ){ //Array of numbers, assume they are event IDs to retreive + //We can just get all the events here and return them + $sql = " + SELECT * FROM $events_table + LEFT JOIN $locations_table ON {$locations_table}.location_id={$events_table}.location_id + WHERE event_id=".implode(" OR event_id=", $args)." + "; + $results = $wpdb->get_results(apply_filters('em_events_get_sql',$sql),ARRAY_A); + $events = array(); + foreach($results as $result){ + $events[$result['event_id']] = new EM_Event($result); + } + return $events; //We return all the events matched as an EM_Event array. + } + + //We assume it's either an empty array or array of search arguments to merge with defaults + $args = self::get_default_search($args); + $limit = ( $args['limit'] && is_numeric($args['limit'])) ? "LIMIT {$args['limit']}" : ''; + $offset = ( $limit != "" && is_numeric($args['offset']) ) ? "OFFSET {$args['offset']}" : ''; + + //Get the default conditions + $conditions = self::build_sql_conditions($args); + //Put it all together + $where = ( count($conditions) > 0 ) ? " WHERE " . implode ( " AND ", $conditions ):''; + + //Get ordering instructions + $EM_Event = new EM_Event(); + $accepted_fields = $EM_Event->get_fields(true); + $orderby = self::build_sql_orderby($args, $accepted_fields, get_option('dbem_events_default_order')); + //Now, build orderby sql + $orderby_sql = ( count($orderby) > 0 ) ? 'ORDER BY '. implode(', ', $orderby) : ''; + + //Create the SQL statement and execute + + if( EM_MS_GLOBAL ){ + $selectors = ( $count ) ? 'COUNT(*)':$events_table.'.post_id, '.$events_table.'.blog_id'; + }else{ + $selectors = ( $count ) ? 'COUNT(*)':$events_table.'.post_id'; + } + + $sql = " + SELECT $selectors FROM $events_table + LEFT JOIN $locations_table ON {$locations_table}.location_id={$events_table}.location_id + $where + $orderby_sql + $limit $offset + "; + + //If we're only counting results, return the number of results + if( $count ){ + return apply_filters('em_events_get_count', $wpdb->get_var($sql), $args); + } + $results = $wpdb->get_results( apply_filters('em_events_get_sql',$sql, $args), ARRAY_A); + + //If we want results directly in an array, why not have a shortcut here? + if( $args['array'] == true ){ + return apply_filters('em_events_get_array',$results, $args); + } + + //Make returned results EM_Event objects + $results = (is_array($results)) ? $results:array(); + $events = array(); + + if( EM_MS_GLOBAL ){ + foreach ( $results as $event ){ + $events[] = em_get_event($event['post_id'], $event['blog_id']); + } + }else{ + foreach ( $results as $event ){ + $events[] = em_get_event($event['post_id'], 'post_id'); + } + } + + return apply_filters('em_events_get', $events, $args); + } + + /** + * Returns the number of events on a given date + * @param $date + * @return int + */ + function count_date($date){ + global $wpdb; + $table_name = EM_EVENTS_TABLE; + $sql = "SELECT COUNT(*) FROM $table_name WHERE (event_start_date like '$date') OR (event_start_date <= '$date' AND event_end_date >= '$date');"; + return apply_filters('em_events_count_date', $wpdb->get_var($sql)); + } + + function count( $args = array() ){ + return apply_filters('em_events_count', self::get($args, true), $args); + } + + /** + * Will delete given an array of event_ids or EM_Event objects + * @param unknown_type $id_array + */ + function delete( $array ){ + global $wpdb; + //Detect array type and generate SQL for event IDs + $results = array(); + if( !empty($array) && @get_class(current($array)) != 'EM_Event' ){ + $events = self::get($array); + }else{ + $events = $array; + } + foreach ($events as $EM_Event){ + $results[] = $EM_Event->delete(); + } + //TODO add better error feedback on events delete fails + return apply_filters('em_events_delete', in_array(false, $results), $event_ids); + } + + + /** + * Output a set of matched of events. You can pass on an array of EM_Events as well, in this event you can pass args in second param. + * Note that you can pass a 'pagination' boolean attribute to enable pagination, default is enabled (true). + * @param array $args + * @param array $secondary_args + * @return string + */ + function output( $args ){ + global $EM_Event; + $EM_Event_old = $EM_Event; //When looping, we can replace EM_Event global with the current event in the loop + //Can be either an array for the get search or an array of EM_Event objects + $func_args = func_get_args(); + $page = 1; //default + if( !array_key_exists('page',$args) && !empty($_REQUEST['pno']) && is_numeric($_REQUEST['pno']) ){ + $page = $args['page'] = $_REQUEST['pno']; + } + if( is_object(current($args)) && get_class((current($args))) == 'EM_Event' ){ + $func_args = func_get_args(); + $events = $func_args[0]; + $args = (!empty($func_args[1]) && is_array($func_args[1])) ? $func_args[1] : array(); + $args = apply_filters('em_events_output_args', self::get_default_search($args), $events); + $limit = ( !empty($args['limit']) && is_numeric($args['limit']) ) ? $args['limit']:false; + $offset = ( !empty($args['offset']) && is_numeric($args['offset']) ) ? $args['offset']:0; + $page = ( !empty($args['page']) && is_numeric($args['page']) ) ? $args['page']:$page; + $events_count = count($events); + }else{ + //Firstly, let's check for a limit/offset here, because if there is we need to remove it and manually do this + $args = apply_filters('em_events_output_args', self::get_default_search($args) ); + $limit = ( !empty($args['limit']) && is_numeric($args['limit']) ) ? $args['limit']:false; + $offset = ( !empty($args['offset']) && is_numeric($args['offset']) ) ? $args['offset']:0; + $page = ( !empty($args['page']) && is_numeric($args['page']) ) ? $args['page']:$page; + $args_count = $args; + $args_count['limit'] = false; + $args_count['offset'] = false; + $args_count['page'] = false; + $events_count = self::count($args_count); + $events = self::get( $args ); + } + //What format shall we output this to, or use default + $format = ( empty($args['format']) ) ? get_option( 'dbem_event_list_item_format' ) : $args['format'] ; + + $output = ""; + $events = apply_filters('em_events_output_events', $events); + if ( $events_count > 0 ) { + foreach ( $events as $EM_Event ) { + $output .= $EM_Event->output($format); + } + //Add headers and footers to output + if( $format == get_option ( 'dbem_event_list_item_format' ) ){ + $format_header = ( get_option( 'dbem_event_list_item_format_header') == '' ) ? '':get_option ( 'dbem_event_list_item_format_header' ); + $format_footer = ( get_option ( 'dbem_event_list_item_format_footer' ) == '' ) ? '':get_option ( 'dbem_event_list_item_format_footer' ); + }else{ + $format_header = ( !empty($args['format_header']) ) ? $args['format_header']:''; + $format_footer = ( !empty($args['format_footer']) ) ? $args['format_footer']:''; + } + $output = $format_header . $output . $format_footer; + //Pagination (if needed/requested) + if( !empty($args['pagination']) && !empty($limit) && $events_count > $limit ){ + //Show the pagination links (unless there's less than $limit events) + $page_link_template = preg_replace('/(&|\?)pno=\d+/i','',$_SERVER['REQUEST_URI']); + $page_link_template = em_add_get_params($page_link_template, array('pno'=>'%PAGE%'), false); //don't html encode, so em_paginate does its thing; + $output .= apply_filters('em_events_output_pagination', em_paginate( $page_link_template, $events_count, $limit, $page), $page_link_template, $events_count, $limit, $page); + } + } else { + $output = get_option ( 'dbem_no_events_message' ); + } + + //TODO check if reference is ok when restoring object, due to changes in php5 v 4 + $EM_Event = $EM_Event_old; + $output = apply_filters('em_events_output', $output, $events, $args); + return $output; + } + + function can_manage($event_ids){ + global $wpdb; + if( current_user_can('edit_others_events') ){ + return apply_filters('em_events_can_manage', true, $event_ids); + } + if( EM_Object::array_is_numeric($event_ids) ){ + $condition = implode(" OR event_id=", $event_ids); + //we try to find any of these events that don't belong to this user + $results = $wpdb->get_var("SELECT COUNT(*) FROM ". EM_EVENTS_TABLE ." WHERE event_owner != '". get_current_user_id() ."' event_id=$condition;"); + return apply_filters('em_events_can_manage', ($results == 0), $event_ids); + } + return apply_filters('em_events_can_manage', false, $event_ids); + } + + function get_post_search($args = array(), $filter = false){ + if( !empty($_REQUEST['em_search']) && empty($args['search']) ) $_REQUEST['search'] = $_REQUEST['em_search']; + $accepted_searches = apply_filters('em_accepted_searches', array('scope','search','category','country','state','region','town'), $args); + foreach($_REQUEST as $post_key => $post_value){ + if( in_array($post_key, $accepted_searches) && !empty($post_value) ){ + if(is_array($post_value)){ + $post_value = implode(',',$post_value); + } + if($post_value != ',' ){ + $args[$post_key] = $post_value; + } + } + } + if( $filter ){ + foreach($args as $arg_key => $arg_value){ + if( !in_array($arg_key, $accepted_searches) ){ + unset($args[$arg_key]); + } + } + } + return apply_filters('em_events_get_post_search', $args); + } + + /* Overrides EM_Object method to apply a filter to result + * @see wp-content/plugins/events-manager/classes/EM_Object#build_sql_conditions() + */ + function build_sql_conditions( $args = array() ){ + $conditions = parent::build_sql_conditions($args); + if( !empty($args['search']) ){ + $like_search = array('event_name',EM_EVENTS_TABLE.'.post_content','location_name','location_address','location_town','location_postcode','location_state','location_country'); + $conditions['search'] = "(".implode(" LIKE '%{$args['search']}%' OR ", $like_search). " LIKE '%{$args['search']}%')"; + } + if( array_key_exists('status',$args) && is_numeric($args['status']) ){ + $null = ($args['status'] == 0) ? ' OR `event_status` = 0':''; + $conditions['status'] = "(`event_status`={$args['status']}{$null} )"; + }elseif( empty($args['status']) || $args['status'] != 'all'){ + $conditions['status'] = "(`event_status` IS NOT NULL )"; //by default, we don't ever show deleted items + } + //private events + if( empty($args['private']) ){ + $conditions['private'] = "(`event_private`=0)"; + }elseif( !empty($args['private_only']) ){ + $conditions['private_only'] = "(`event_private`=1)"; + } + if( EM_MS_GLOBAL && array_key_exists('blog',$args) && is_numeric($args['blog']) ){ + if( is_main_site($args['blog']) ){ + $conditions['blog'] = "(".EM_EVENTS_TABLE.".blog_id={$args['blog']} OR ".EM_EVENTS_TABLE.".blog_id IS NULL)"; + }else{ + $conditions['blog'] = "(".EM_EVENTS_TABLE.".blog_id={$args['blog']})"; + } + } + if( $args['bookings'] === 'user' && is_user_logged_in()){ + //get bookings of user + $EM_Person = new EM_Person(get_current_user_id()); + $booking_ids = $EM_Person->get_bookings(true); + if( count($booking_ids) > 0 ){ + $conditions['bookings'] = "(event_id IN (SELECT event_id FROM ".EM_BOOKINGS_TABLE." WHERE booking_id IN (".implode(',',$booking_ids).")))"; + }else{ + $conditions['bookings'] = "(event_id = 0)"; + } + } + //post search + if( !empty($args['post_id'])){ + if( is_array($args['post_id']) ){ + $conditions['post_id'] = "(".EM_EVENTS_TABLE.".post_id IN (".implode(',',$args['post_id'])."))"; + }else{ + $conditions['post_id'] = "(".EM_EVENTS_TABLE.".post_id={$args['post_id']})"; + } + } + return apply_filters( 'em_events_build_sql_conditions', $conditions, $args ); + } + + /* Overrides EM_Object method to apply a filter to result + * @see wp-content/plugins/events-manager/classes/EM_Object#build_sql_orderby() + */ + function build_sql_orderby( $args, $accepted_fields, $default_order = 'ASC' ){ + return apply_filters( 'em_events_build_sql_orderby', parent::build_sql_orderby($args, $accepted_fields, get_option('dbem_events_default_order')), $args, $accepted_fields, $default_order ); + } + + /* + * Adds custom Events search defaults + * @param array $array + * @return array + * @uses EM_Object#get_default_search() + */ + function get_default_search( $array = array() ){ + $defaults = array( + 'orderby' => get_option('dbem_events_default_orderby'), + 'order' => get_option('dbem_events_default_order'), + 'bookings' => false, //if set to true, only events with bookings enabled are returned + 'status' => 1, //approved events only + 'format_header' => '', //events can have custom html above the list + 'format_footer' => '', //events can have custom html below the list + 'town' => false, + 'state' => false, + 'country' => false, + 'region' => false, + 'blog' => get_current_blog_id(), + 'private' => current_user_can('read_private_events'), + 'private_only' => false, + 'post_id' => false + ); + if(EM_MS_GLOBAL){ + global $bp; + if( !is_main_site() && !array_key_exists('blog', $array) ){ + $array['blog'] = get_current_blog_id(); + }elseif( empty($array['blog']) && get_site_option('dbem_ms_global_events') ) { + $array['blog'] = false; + } + } + if( is_admin() ){ + //figure out default owning permissions + $defaults['owner'] = !current_user_can('edit_others_events') ? get_current_user_id() : false; + if( !array_key_exists('status', $array) && current_user_can('edit_others_events') ){ + $defaults['status'] = false; //by default, admins see pending and live events + } + } + return apply_filters('em_events_get_default_search', parent::get_default_search($defaults,$array), $array, $defaults); + } + + //TODO Implement object and interators for handling groups of events. + public function rewind(){ + reset($this->events); + } + + public function current(){ + $var = current($this->events); + return $var; + } + + public function key(){ + $var = key($this->events); + return $var; + } + + public function next(){ + $var = next($this->events); + return $var; + } + + public function valid(){ + $key = key($this->events); + $var = ($key !== NULL && $key !== FALSE); + return $var; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-location-post-admin.php b/wp-content/plugins/events-manager/classes/em-location-post-admin.php new file mode 100644 index 0000000..f96043b --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-location-post-admin.php @@ -0,0 +1,134 @@ +<?php +class EM_Location_Post_Admin{ + function init(){ + global $pagenow; + if($pagenow == 'post.php' || $pagenow == 'post-new.php' ){ //only needed if editing post + add_action('admin_head', array('EM_Location_Post_Admin','admin_head')); + } + //Meta Boxes + add_action('add_meta_boxes', array('EM_Location_Post_Admin','meta_boxes')); + //Save/Edit actions + add_action('save_post',array('EM_Location_Post_Admin','save_post')); + add_action('before_delete_post',array('EM_Location_Post_Admin','before_delete_post'),10,1); + add_action('trashed_post',array('EM_Location_Post_Admin','trashed_post'),10,1); + add_action('untrash_post',array('EM_Location_Post_Admin','untrash_post'),10,1); + add_action('untrashed_post',array('EM_Location_Post_Admin','untrashed_post'),10,1); + //Notices + add_action('admin_notices',array('EM_Location_Post_Admin','admin_notices')); + add_action('post_updated_messages',array('EM_Location_Post_Admin','admin_notices_filter'),1,1); + } + + function admin_head(){ + global $post, $EM_Location; + if( !empty($post) && $post->post_type == EM_POST_TYPE_LOCATION ){ + $EM_Location = em_get_location($post); + } + } + + function admin_notices(){ + //When editing + global $post, $EM_Notices; + if( !empty($post) && $post->post_type == EM_POST_TYPE_LOCATION){ + } + } + + function admin_notices_filter($messages){ + //When editing + global $post, $EM_Notices; + if( $post->post_type == EM_POST_TYPE_LOCATION ){ + if ( $EM_Notices->count_errors() > 0 ) { + unset($_GET['message']); + } + } + return $messages; + } + + function save_post($post_id){ + global $wpdb, $EM_Location, $EM_Notices; + $saving_status = !in_array(get_post_status($post_id), array('trash','auto-draft')) && !defined('DOING_AUTOSAVE'); + $is_post_type = get_post_type($post_id) == EM_POST_TYPE_LOCATION; + if(!defined('UNTRASHING_'.$post_id) && $is_post_type && $saving_status){ + if( wp_verify_nonce($_REQUEST['_emnonce'], 'edit_location')){ + $EM_Location = em_get_location($post_id, 'post_id'); + do_action('em_location_save_pre', $EM_Location); + $get_meta = $EM_Location->get_post_meta(); + $save_meta = $EM_Location->save_meta(); + //Handle Errors by making post draft + if( !$get_meta || !$save_meta ){ + $EM_Location->set_status(null, true); + $EM_Notices->add_error( '<strong>'.sprintf(__('Your %s details are incorrect and cannot be published, please correct these errors first:','dbem'),__('location','dbem')).'</strong>', true); //Always seems to redirect, so we make it static + $EM_Notices->add_error($EM_Location->get_errors(), true); //Always seems to redirect, so we make it static + apply_filters('em_location_save', false , $EM_Location); + }else{ + apply_filters('em_location_save', true , $EM_Location); + } + }else{ + //do a quick and dirty update + do_action('em_location_save_pre', $this); + $EM_Location = new EM_Location($post_id, 'post_id'); + //check for existence of index + $loc_truly_exists = $wpdb->get_var('SELECT location_id FROM '.EM_LOCATIONS_TABLE." WHERE location_id={$EM_Location->location_id}") == $EM_Location->location_id; + if(empty($EM_Location->location_id) || !$loc_truly_exists){ $EM_Location->save_meta(); } + //continue + $location_status = ($EM_Location->is_published()) ? 1:0; + $wpdb->query("UPDATE ".EM_LOCATIONS_TABLE." SET location_name='{$EM_Location->location_name}', location_slug='{$EM_Location->location_slug}', location_private='{$EM_Location->location_private}',location_status={$location_status} WHERE location_id='{$EM_Location->location_id}'"); + apply_filters('em_location_save', true , $this); + } + } + } + + function before_delete_post($post_id){ + if(get_post_type($post_id) == EM_POST_TYPE_LOCATION){ + $EM_Location = em_get_location($post_id,'post_id'); + $EM_Location->delete_meta(); + } + } + + function trashed_post($post_id){ + if(get_post_type($post_id) == EM_POST_TYPE_LOCATION){ + global $EM_Notices; + $EM_Location = em_get_location($post_id,'post_id'); + $EM_Location->set_status(null); + $EM_Notices->remove_all(); //no validation/notices needed + } + } + + function untrash_post($post_id){ + if(get_post_type($post_id) == EM_POST_TYPE_LOCATION){ + //set a constant so we know this event doesn't need 'saving' + if(!defined('UNTRASHING_'.$post_id)) define('UNTRASHING_'.$post_id, true); + } + } + + function untrashed_post($post_id){ + if(get_post_type($post_id) == EM_POST_TYPE_LOCATION){ + global $EM_Notices; + $EM_Location = em_get_location($post_id,'post_id'); + $EM_Location->set_status(1); + $EM_Notices->remove_all(); //no validation/notices needed + } + } + + function meta_boxes(){ + add_meta_box('em-location-where', __('Where','dbem'), array('EM_Location_Post_Admin','meta_box_where'),EM_POST_TYPE_LOCATION, 'normal','high'); + //add_meta_box('em-location-metadump', __('EM_Location Meta Dump','dbem'), array('EM_Location_Post_Admin','meta_box_metadump'),EM_POST_TYPE_LOCATION, 'normal','high'); + if( get_option('dbem_location_attributes_enabled') ){ + add_meta_box('em-location-attributes', __('Attributes','dbem'), array('EM_Location_Post_Admin','meta_box_attributes'),EM_POST_TYPE_LOCATION, 'normal','default'); + } + } + + function meta_box_metadump(){ + global $post,$EM_Location; + echo "<pre>"; print_r(get_post_custom($post->ID)); echo "</pre>"; + echo "<pre>"; print_r($EM_Location); echo "</pre>"; + } + function meta_box_where(){ + ?><input type="hidden" name="_emnonce" value="<?php echo wp_create_nonce('edit_location'); ?>" /><?php + em_locate_template('forms/location/where.php',true); + } + + function meta_box_attributes(){ + em_locate_template('forms/location/attributes.php',true); + } +} +add_action('admin_init',array('EM_Location_Post_Admin','init')); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-location-post.php b/wp-content/plugins/events-manager/classes/em-location-post.php new file mode 100644 index 0000000..eaf495e --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-location-post.php @@ -0,0 +1,69 @@ +<?php +class EM_Location_Post { + function init(){ + //Front Side Modifiers + if( !is_admin() ){ + //override single page with formats? + add_filter('the_content', array('EM_Location_Post','the_content')); + //display as page template? + if( get_option('dbem_cp_locations_template_page') ){ + add_filter('single_template',array('EM_Location_Post','single_template')); + } + } + add_action('parse_query', array('EM_Location_Post','parse_query')); + } + + /** + * Overrides the default post format of a location and can display a location as a page, which uses the page.php template. + * @param string $template + * @return string + */ + function single_template($template){ + global $post; + if( !locate_template('single-'.EM_POST_TYPE_LOCATION.'.php') && $post->post_type == EM_POST_TYPE_LOCATION ){ + $template = locate_template(array('page.php','index.php'),false); + } + return $template; + } + + function the_content( $content ){ + global $post, $EM_Location; + if( $post->post_type == EM_POST_TYPE_LOCATION ){ + if( is_archive() || is_search() ){ + if( get_option('dbem_cp_locations_archive_formats') ){ + $EM_Location = em_get_location($post); + $content = $EM_Location->output(get_option('dbem_location_list_item_format')); + } + }else{ + if( get_option('dbem_cp_locations_formats') && !post_password_required() ){ + $EM_Location = em_get_location($post); + ob_start(); + em_locate_template('templates/location-single.php',true); + $content = ob_get_clean(); + } + } + } + return $content; + } + + function parse_query( ){ + global $wp_query; + if( !empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] == EM_POST_TYPE_LOCATION ){ + if( is_admin() ){ + $wp_query->query_vars['orderby'] = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby']:'title'; + $wp_query->query_vars['order'] = (!empty($_REQUEST['order'])) ? $_REQUEST['order']:'ASC'; + }else{ + if( empty($wp_query->query_vars['location']) ) { + if( get_option('dbem_locations_default_archive_orderby') == 'title'){ + $wp_query->query_vars['orderby'] = 'title'; + }else{ + $wp_query->query_vars['orderby'] = 'meta_value_num'; + $wp_query->query_vars['meta_key'] = get_option('dbem_locations_default_archive_orderby','_location_country'); + } + $wp_query->query_vars['order'] = get_option('dbem_locations_default_archive_orderby','ASC'); + } + } + } + } +} +EM_Location_Post::init(); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-location-posts-admin.php b/wp-content/plugins/events-manager/classes/em-location-posts-admin.php new file mode 100644 index 0000000..ad80eb2 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-location-posts-admin.php @@ -0,0 +1,84 @@ +<?php +class EM_Location_Posts_Admin{ + function init(){ + global $pagenow; + if($pagenow == 'edit.php' && !empty($_REQUEST['post_type']) && $_REQUEST['post_type'] == EM_POST_TYPE_LOCATION ){ //only needed if editing post + //hide some cols by default: + $screen = 'edit-'.EM_POST_TYPE_LOCATION; + $hidden = get_user_option( 'manage' . $screen . 'columnshidden' ); + if( !$hidden ){ + $hidden = array('location-id'); + update_user_option(get_current_user_id(), "manage{$screen}columnshidden", $hidden, true); + } + add_action('admin_head', array('EM_Location_Posts_Admin','admin_head')); + } + add_filter('manage_edit-'.EM_POST_TYPE_LOCATION.'_columns' , array('EM_Location_Posts_Admin','columns_add')); + add_filter('manage_'.EM_POST_TYPE_LOCATION.'_posts_custom_column' , array('EM_Location_Posts_Admin','columns_output'),10,2 ); + } + + function admin_head(){ + //quick hacks to make event admin table make more sense for events + ?> + <script type="text/javascript"> + jQuery(document).ready( function($){ + $('.inline-edit-date').prev().css('display','none').next().css('display','none').next().css('display','none'); + }); + </script> + <style> + table.fixed{ table-layout:auto !important; } + .tablenav select[name="m"] { display:none; } + </style> + <?php + } + + function admin_menu(){ + global $menu, $submenu; + // Add a submenu to the custom top-level menu: + $plugin_pages = array(); + $plugin_pages[] = add_submenu_page('edit.php?post_type='.EM_POST_TYPE_EVENT, __('Locations', 'dbem'), __('Locations', 'dbem'), 'edit_locations', 'events-manager-locations', "edit.php?post_type=event"); + $plugin_pages = apply_filters('em_create_locationss_submenu',$plugin_pages); + } + + function columns_add($columns) { + //prepend ID after checkbox + if( array_key_exists('cb', $columns) ){ + $cb = $columns['cb']; + unset($columns['cb']); + $id_array = array('cb'=>$cb, 'location-id' => sprintf(__('%s ID','dbem'),__('Location','dbem'))); + }else{ + $id_array = array('location-id' => sprintf(__('%s ID','dbem'),__('Location','dbem'))); + } + unset($columns['author']); + unset($columns['date']); + unset($columns['comments']); + return array_merge($id_array, $columns, array( + 'address' => __('Address','dbem'), + 'town' => __('Town','dbem'), + 'state' => __('State','dbem'), + 'country' => __('Country','dbem') + )); + } + + function columns_output( $column ) { + global $post; + $post = em_get_location($post); + switch ( $column ) { + case 'location-id': + echo $post->location_id; + break; + case 'address': + echo $post->location_address; + break; + case 'town': + echo $post->location_town; + break; + case 'state': + echo $post->location_state; + break; + case 'country': + echo $post->location_country; + break; + } + } +} +add_action('admin_init', array('EM_Location_Posts_Admin','init')); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-location.php b/wp-content/plugins/events-manager/classes/em-location.php new file mode 100644 index 0000000..e5c9d6e --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-location.php @@ -0,0 +1,728 @@ +<?php +/** + * gets a location + * @param mixed $id + * @param mixed $search_by + * @return EM_Location + */ +function em_get_location($id = false, $search_by = 'location_id') { + if( is_object($id) && get_class($id) == 'EM_Location' ){ + return $id; + }else{ + return new EM_Location($id,$search_by); + } +} +/** + * Object that holds location info and related functions + * @author marcus + */ +class EM_Location extends EM_Object { + //DB Fields + var $location_id = ''; + var $post_id = ''; + var $blog_id = ''; + var $location_slug = ''; + var $location_name = ''; + var $location_address = ''; + var $location_town = ''; + var $location_state = ''; + var $location_postcode = ''; + var $location_region = ''; + var $location_country = ''; + var $location_latitude = 0; + var $location_longitude = 0; + var $post_content = ''; + var $location_owner = ''; + var $location_status = 0; + //Other Vars + var $fields = array( + 'location_id' => array('name'=>'id','type'=>'%d'), + 'post_id' => array('name'=>'post_id','type'=>'%d'), + 'blog_id' => array('name'=>'blog_id','type'=>'%d'), + 'location_slug' => array('name'=>'slug','type'=>'%s', 'null'=>true), + 'location_name' => array('name'=>'name','type'=>'%s', 'null'=>true), + 'location_address' => array('name'=>'address','type'=>'%s','null'=>true), + 'location_town' => array('name'=>'town','type'=>'%s','null'=>true), + 'location_state' => array('name'=>'state','type'=>'%s','null'=>true), + 'location_postcode' => array('name'=>'postcode','type'=>'%s','null'=>true), + 'location_region' => array('name'=>'region','type'=>'%s','null'=>true), + 'location_country' => array('name'=>'country','type'=>'%s','null'=>true), + 'location_latitude' => array('name'=>'latitude','type'=>'%f','null'=>true), + 'location_longitude' => array('name'=>'longitude','type'=>'%f','null'=>true), + 'post_content' => array('name'=>'description','type'=>'%s', 'null'=>true), + 'location_owner' => array('name'=>'owner','type'=>'%d', 'null'=>true), + 'location_status' => array('name'=>'status','type'=>'%d', 'null'=>true) + ); + var $post_fields = array('post_id','location_slug','location_name','post_content','location_owner'); + var $location_attributes = array(); + var $image_url = ''; + var $required_fields = array(); + var $feedback_message = ""; + var $mime_types = array(1 => 'gif', 2 => 'jpg', 3 => 'png'); + var $errors = array(); + /** + * previous status of location + * @access protected + * @var mixed + */ + var $previous_status = 0; + + /* Post Variables - copied out of post object for easy IDE reference */ + var $ID; + var $post_author; + var $post_date; + var $post_date_gmt; + var $post_title; + var $post_excerpt; + var $post_status; + var $comment_status; + var $ping_status; + var $post_password; + var $post_name; + var $to_ping; + var $pinged; + var $post_modified; + var $post_modified_gmt; + var $post_content_filtered; + var $post_parent; + var $guid; + var $menu_order; + var $post_type; + var $post_mime_type; + var $comment_count; + var $ancestors; + var $filter; + + + /** + * Gets data from POST (default), supplied array, or from the database if an ID is supplied + * @param $location_data + * @param $search_by can be set to post_id or a number for a blog id if in ms mode with global tables, default is location_id + * @return null + */ + function __construct($id = false, $search_by = 'location_id' ) { + global $wpdb; + //Initialize + $this->required_fields = array("location_address" => __('The location address', 'dbem'), "location_town" => __('The location town', 'dbem'), "location_country" => __('The country', 'dbem')); + //Get the post_id/location_id + $is_post = !empty($id->ID) && $id->post_type == EM_POST_TYPE_LOCATION; + if( $is_post || absint($id) > 0 ){ //only load info if $id is a number + $location_post = false; + if($search_by == 'location_id' && !$is_post){ + //search by location_id, get post_id and blog_id (if in ms mode) and load the post + $results = $wpdb->get_row($wpdb->prepare("SELECT post_id, blog_id FROM ".EM_LOCATIONS_TABLE." WHERE location_id=%d",$id), ARRAY_A); + if( !empty($results['post_id']) ){ + if( is_multisite() && is_numeric($results['blog_id']) ){ + $location_post = get_blog_post($results['blog_id'], $results['post_id']); + $search_by = $results['blog_id']; + }else{ + $location_post = get_post($results['post_id']); + } + } + }else{ + if(!$is_post){ + if( is_numeric($search_by) && is_multisite() ){ + //we've been given a blog_id, so we're searching for a post id + $location_post = get_blog_post($search_by, $id); + }else{ + //search for the post id only + $location_post = get_post($id); + } + }else{ + $location_post = $id; + } + } + $this->load_postdata($location_post, $search_by); + } + $this->compat_keys(); + do_action('em_location', $this, $id, $search_by); + } + + function load_postdata($location_post, $search_by = false){ + if( is_object($location_post) ){ + if( $location_post->post_status != 'auto-draft' ){ + if( is_numeric($search_by) && is_multisite() ){ + // if in multisite mode, switch blogs quickly to get the right post meta. + switch_to_blog($search_by); + $location_meta = get_post_custom($location_post->ID); + restore_current_blog(); + $this->blog_id = $search_by; + }else{ + $location_meta = get_post_custom($location_post->ID); + } + //Get custom fields + foreach($location_meta as $location_meta_key => $location_meta_val){ + $found = false; + foreach($this->fields as $field_name => $field_info){ + if( $location_meta_key == '_'.$field_name){ + $this->$field_name = $location_meta_val[0]; + $found = true; + } + } + if(!$found && $location_meta_key[0] != '_'){ + $this->location_attributes[$location_meta_key] = ( count($location_meta_val) > 1 ) ? $location_meta_val:$location_meta_val[0]; + } + } + } + //load post data - regardless + $this->post_id = $location_post->ID; + $this->location_name = $location_post->post_title; + $this->location_slug = $location_post->post_name; + $this->location_owner = $location_post->post_author; + $this->post_content = $location_post->post_content; + foreach( $location_post as $key => $value ){ //merge the post data into location object + $this->$key = $value; + } + $this->previous_status = $this->location_status; //so we know about updates + $this->get_status(); + } + } + + /** + * Retrieve event information via POST (used in situations where posts aren't submitted via WP) + * @param boolean $validate whether or not to run validation, default is true + * @return boolean + */ + function get_post($validate = true){ + global $allowedtags; + do_action('em_location_get_post_pre', $this); + $this->location_name = ( !empty($_POST['location_name']) ) ? wp_kses_data( stripslashes($_POST['location_name'])):''; + $this->post_content = ( !empty($_POST['content']) ) ? wp_kses( stripslashes($_POST['content']), $allowedtags):''; + $this->get_post_meta(false); + $result = $validate ? $this->validate():true; //validate both post and meta, otherwise return true + $this->compat_keys(); + return apply_filters('em_location_get_post', $result, $this); + } + /** + * Retrieve event post meta information via POST, which should be always be called when saving the event custom post via WP. + * @param boolean $validate whether or not to run validation, default is true + * @return mixed + */ + function get_post_meta($validate = true){ + //We are getting the values via POST or GET + do_action('em_location_get_post_meta_pre', $this); + $this->location_address = ( !empty($_POST['location_address']) ) ? wp_kses(stripslashes($_POST['location_address']), array()):''; + $this->location_town = ( !empty($_POST['location_town']) ) ? wp_kses(stripslashes($_POST['location_town']), array()):''; + $this->location_state = ( !empty($_POST['location_state']) ) ? wp_kses(stripslashes($_POST['location_state']), array()):''; + $this->location_postcode = ( !empty($_POST['location_postcode']) ) ? wp_kses(stripslashes($_POST['location_postcode']), array()):''; + $this->location_region = ( !empty($_POST['location_region']) ) ? wp_kses(stripslashes($_POST['location_region']), array()):''; + $this->location_country = ( !empty($_POST['location_country']) ) ? wp_kses(stripslashes($_POST['location_country']), array()):''; + $this->location_latitude = ( !empty($_POST['location_latitude']) && is_numeric($_POST['location_latitude']) ) ? $_POST['location_latitude']:''; + $this->location_longitude = ( !empty($_POST['location_longitude']) && is_numeric($_POST['location_longitude']) ) ? $_POST['location_longitude']:''; + //Set Blog ID + if( is_multisite() && empty($this->blog_id) ){ + $this->blog_id = get_current_blog_id(); + } + //Sort out event attributes - note that custom post meta now also gets inserted here automatically (and is overwritten by these attributes) + if(get_option('dbem_location_attributes_enabled')){ + global $allowedtags; + if( !is_array($this->location_attributes) ){ $this->location_attributes = array(); } + $location_available_attributes = em_get_attributes(true); //lattributes only + if( !empty($_POST['em_attributes']) && is_array($_POST['em_attributes']) ){ + foreach($_POST['em_attributes'] as $att_key => $att_value ){ + if( (in_array($att_key, $location_available_attributes['names']) || array_key_exists($att_key, $this->location_attributes) ) ){ + $att_vals = count($location_available_attributes['values'][$att_key]); + if( $att_vals == 0 || ($att_vals > 0 && in_array($att_value, $location_available_attributes['values'][$att_key])) ){ + $this->location_attributes[$att_key] = stripslashes($att_value); + }elseif($att_vals > 0){ + $this->location_attributes[$att_key] = stripslashes(wp_kses($location_available_attributes['values'][$att_key][0], $allowedtags)); + } + } + } + } + } + $result = $validate ? $this->validate_meta():true; //post returns null + $this->compat_keys(); + return apply_filters('em_location_get_post_meta',$result,$this); + } + + function validate(){ + $validate_post = true; + if( empty($this->location_name) ){ + $validate_post = false; + $this->add_error( __('Location name').__(" is required.", "dbem") ); + } + $validate_image = $this->image_validate(); + $validate_meta = $this->validate_meta(); + return apply_filters('em_location_validate', $validate_post && $validate_image && $validate_meta, $this ); + } + + /** + * Validates the location. Should be run during any form submission or saving operation. + * @return boolean + */ + function validate_meta(){ + //check required fields + foreach ( $this->required_fields as $field => $description) { + if( $field == 'location_country' && !array_key_exists($this->location_country, em_get_countries()) ){ + //country specific checking + $this->add_error( $this->required_fields['location_country'].__(" is required.", "dbem") ); + }elseif ( $this->$field == "" ) { + $this->add_error( $description.__(" is required.", "dbem") ); + } + } + return apply_filters('em_location_validate_meta', ( count($this->errors) == 0 ), $this); + } + + function save(){ + global $wpdb, $current_user, $blog_id; + //TODO shuffle filters into right place + if( !$this->can_manage('edit_locations', 'edit_others_locations') && !( get_option('dbem_events_anonymous_submissions') && empty($this->location_id)) ){ + return apply_filters('em_location_save', false, $this); + } + remove_action('save_post',array('EM_Location_Post_Admin','save_post'),10,1); //disable the default save post action, we'll do it manually this way + do_action('em_location_save_pre', $this); + $post_array = array(); + //Deal with updates to a location + if( !empty($this->post_id) ){ + //get the full array of post data so we don't overwrite anything. + if( !empty($this->blog_id) && is_multisite() ){ + $post_array = (array) get_blog_post($this->blog_id, $this->post_id); + }else{ + $post_array = (array) get_post($this->post_id); + } + } + //Overwrite new post info + $post_array['post_type'] = EM_POST_TYPE_LOCATION; + $post_array['post_title'] = $this->location_name; + $post_array['post_content'] = $this->post_content; + //decide on post status + if( count($this->errors) == 0 ){ + if( EM_MS_GLOBAL && !is_main_site() && get_site_option('dbem_ms_mainblog_locations') ){ + //if in global ms mode and user is a valid role to publish on their blog, then we will publish the location on the main blog + restore_current_blog(); + $switch_back = true; + } + $post_array['post_status'] = ( current_user_can('publish_locations') ) ? 'publish':'pending'; + if(!empty($switch_back) && get_site_option('dbem_ms_mainblog_locations') ) EM_Object::ms_global_switch(); //switch 'back' to main blog + }else{ + $post_array['post_status'] = 'draft'; + } + //Anonymous submission + if( !is_user_logged_in() && get_option('dbem_events_anonymous_submissions') && empty($this->location_id) ){ + $post_array['post_author'] = get_option('dbem_events_anonymous_user'); + if( !is_numeric($post_array['post_author']) ) $post_array['post_author'] = 0; + } + //Save post and continue with meta + $post_id = wp_insert_post($post_array); + $post_save = false; + $meta_save = false; + if( !is_wp_error($post_id) && !empty($post_id) ){ + $post_save = true; + //refresh this event with wp post + $post_data = get_post($post_id); + $this->post_id = $post_id; + $this->location_slug = $post_data->post_name; + $this->location_owner = $post_data->post_author; + $this->post_status = $post_data->post_status; + $this->get_status(); + //now save the meta + $meta_save = $this->save_meta(); + //save the image + $this->image_upload(); + $image_save = (count($this->errors) == 0); + }elseif(is_wp_error($post_id)){ + //location not saved, add an error + $this->add_error($post_id->get_error_message()); + } + return apply_filters('em_location_save', $post_save && $meta_save && $image_save, $this); + } + + function save_meta(){ + //echo "<pre>"; print_r($this); echo "</pre>"; die(); + global $wpdb, $current_user; + if( $this->can_manage('edit_locations','edit_others_locations') || ( get_option('dbem_events_anonymous_submissions') && empty($this->location_id)) ){ + do_action('em_location_save_meta_pre', $this); + $data = $this->to_array(); + //Update Post Meta + foreach( array_keys($this->fields) as $key ){ + if( !in_array($key, $this->post_fields) ){ + update_post_meta($this->post_id, '_'.$key, $this->$key); + } + } + //Update Post Attributes + foreach($this->location_attributes as $location_attribute_key => $location_attribute){ + update_post_meta($this->post_id, $location_attribute_key, $location_attribute); + } + $this->get_status(); + $this->location_status = (count($this->errors) == 0) ? $this->location_status:null; //set status at this point, it's either the current status, or if validation fails, null + //Save to em_locations table + $location_array = $this->to_array(true); + if( $this->post_status == 'private' ) $location_array['location_private'] = 1; + unset($location_array['location_id']); + if( !empty($this->location_id) ){ + $loc_truly_exists = $wpdb->get_var('SELECT post_id FROM '.EM_LOCATIONS_TABLE." WHERE location_id={$this->location_id}") == $this->post_id; + }else{ + $loc_truly_exists = false; + } + if( empty($this->location_id) || !$loc_truly_exists ){ + $this->previous_status = 0; //for sure this was previously status 0 + if ( !$wpdb->insert(EM_LOCATIONS_TABLE, $location_array) ){ + $this->add_error( sprintf(__('Something went wrong saving your %s to the index table. Please inform a site administrator about this.','dbem'),__('location','dbem'))); + }else{ + //success, so link the event with the post via an event id meta value for easy retrieval + $this->location_id = $wpdb->insert_id; + update_post_meta($this->post_id, '_location_id', $this->location_id); + $this->feedback_message = sprintf(__('Successfully saved %s','dbem'),__('Location','dbem')); + } + }else{ + $this->previous_status = $wpdb->get_var('SELECT location_status FROM '.EM_LOCATIONS_TABLE.' WHERE location_id='.$this->location_id); //get status from db, not post_status + if ( $wpdb->update(EM_LOCATIONS_TABLE, $location_array, array('location_id'=>$this->location_id)) === false ){ + $this->add_error( sprintf(__('Something went wrong updating your %s to the index table. Please inform a site administrator about this.','dbem'),__('location','dbem'))); + }else{ + $this->feedback_message = sprintf(__('Successfully saved %s','dbem'),__('Location','dbem')); + } + } + }else{ + $this->add_error( sprintf(__('You do not have permission to create/edit %s.','dbem'), __('locations','dbem')) ); + } + $this->compat_keys(); + return apply_filters('em_location_save_meta', count($this->errors) == 0, $this); + } + + function delete($force_delete = true){ //atm wp seems to force cp deletions anyway + global $wpdb; + $result = false; + if( $this->can_manage('delete_locations','delete_others_locations') ){ + do_action('em_location_delete_pre', $this); + $result = wp_delete_post($this->post_id,$force_delete); //the post class will take care of the meta + if( $force_delete ){ + $result_meta = $this->delete_meta(); + } + } + return apply_filters('em_location_delete', $result !== false && $result_meta, $this); + } + + function delete_meta(){ + global $wpdb; + $result = false; + if( $this->can_manage('delete_locations','delete_others_locations') ){ + do_action('em_location_delete_meta_pre', $this); + $result = $wpdb->query ( $wpdb->prepare("DELETE FROM ". EM_LOCATIONS_TABLE ." WHERE location_id=%d", $this->location_id) ); + } + return apply_filters('em_location_delete_meta', $result !== false, $this); + } + + function is_published(){ + return apply_filters('em_location_is_published', ($this->post_status == 'publish' || $this->post_status == 'private'), $this); + } + + /** + * Change the status of the location. This will save to the Database too. + * @param int $status + * @param boolean $set_post_status + * @return string + */ + function set_status($status, $set_post_status = false){ + global $wpdb; + if($status === null){ + $set_status='NULL'; + if($set_post_status){ + //if the post is trash, don't untrash it! + $wpdb->update( $wpdb->posts, array( 'post_status' => 'draft' ), array( 'ID' => $this->post_id ) ); + $this->post_status = 'draft'; + } + }else{ + $set_status = $status ? 1:0; + if($set_post_status){ + if($this->post_status == 'pending'){ + $this->post_name = sanitize_title($this->post_title); + } + $this->post_status = $set_status ? 'publish':'pending'; + $wpdb->update( $wpdb->posts, array( 'post_status' => $this->post_status, 'post_name' => $this->post_name ), array( 'ID' => $this->post_id ) ); + } + } + $this->previous_status = $wpdb->get_var('SELECT location_status FROM '.EM_LOCATIONS_TABLE.' WHERE location_id='.$this->location_id); //get status from db, not post_status, as posts get saved quickly + $result = $wpdb->query("UPDATE ".EM_LOCATIONS_TABLE." SET location_status=$set_status, location_slug='{$this->post_name}' WHERE location_id={$this->location_id}"); + $this->get_status(); + return apply_filters('em_location_set_status', $result !== false, $status, $this); + } + + function get_status($db = false){ + switch( $this->post_status ){ + case 'private': + $this->location_private = 1; + $this->location_status = $status = 1; + break; + case 'publish': + $this->location_private = 0; + $this->location_status = $status = 1; + break; + case 'pending': + $this->location_private = 0; + $this->location_status = $status = 0; + break; + default: //draft or unknown + $this->location_private = 0; + $status = $db ? 'NULL':null; + $this->location_status = null; + break; + } + return $status; + } + + function load_similar($criteria){ + global $wpdb; + if( !empty($criteria['location_name']) && !empty($criteria['location_name']) && !empty($criteria['location_name']) ){ + $locations_table = EM_LOCATIONS_TABLE; + $prepared_sql = $wpdb->prepare("SELECT * FROM $locations_table WHERE location_name = %s AND location_address = %s AND location_town = %s AND location_state = %s AND location_postcode = %s AND location_country = %s", stripcslashes($criteria['location_name']), stripcslashes($criteria['location_address']), stripcslashes($criteria['location_town']), stripcslashes($criteria['location_state']), stripcslashes($criteria['location_postcode']), stripcslashes($criteria['location_country']) ); + //$wpdb->show_errors(true); + $location = $wpdb->get_row($prepared_sql, ARRAY_A); + if( is_array($location) ){ + $this->to_object($location); + } + return apply_filters('em_location_load_similar', $location, $this); + } + return apply_filters('em_location_load_similar', false, $this); + } + + function has_events(){ + global $wpdb; + $events_table = EM_EVENTS_TABLE; + $sql = "SELECT count(event_id) as events_no FROM $events_table WHERE location_id = {$this->location_id}"; + $affected_events = $wpdb->get_row($sql); + return apply_filters('em_location_has_events', (count($affected_events) > 0), $this); + } + + /** + * Can the user manage this location? + */ + function can_manage( $owner_capability = false, $admin_capability = false, $user_to_check = false ){ + if( $this->location_id == '' && !is_user_logged_in() && get_option('dbem_events_anonymous_submissions') ){ + $user_to_check = get_option('dbem_events_anonymous_user'); + } + return apply_filters('em_location_can_manage', parent::can_manage($owner_capability, $admin_capability, $user_to_check), $this, $owner_capability, $admin_capability, $user_to_check); + } + + function get_permalink(){ + if( EM_MS_GLOBAL ){ + if( get_site_option('dbem_ms_global_locations_links') && !empty($this->blog_id) && is_main_site() && $this->blog_id != get_current_blog_id() ){ + //linking directly to the blog, we should be on the main blog here + $link = get_blog_permalink( $this->blog_id, $this->post_id); + }elseif( !empty($this->blog_id) && is_main_site() && $this->blog_id != get_current_blog_id() ){ + if( get_option('dbem_locations_page') ){ + $link = trailingslashit(get_permalink(get_option('dbem_locations_page')).get_site_option('dbem_ms_locations_slug',EM_LOCATION_SLUG).'/'.$this->location_slug.'-'.$this->location_id); + }else{ + $link = trailingslashit(home_url()).EM_POST_TYPE_LOCATION_SLUG.'/'.get_site_option('dbem_ms_events_slug',EM_LOCATION_SLUG).'/'.$this->location_slug.'-'.$this->location_id; + } + } + } + if( empty($link) ){ + $link = get_post_permalink($this->post_id); + } + return apply_filters('em_location_get_permalink', $link, $this); ; + } + + function get_edit_url(){ + if( $this->can_manage('edit_locations','edit_others_locations') ){ + if( EM_MS_GLOBAL && get_site_option('dbem_ms_global_locations_links') && !empty($this->blog_id) && is_main_site() && $this->blog_id != get_current_blog_id() ){ + if( get_blog_option($this->blog_id, 'dbem_edit_locations_page') ){ + $link = em_add_get_params(get_permalink(get_blog_option($this->blog_id, 'dbem_edit_locations_page')), array('action'=>'edit','location_id'=>$this->location_id), false); + } + if( empty($link)) + $link = get_admin_url($this->blog_id, "post.php?post={$this->post_id}&action=edit"); + }else{ + if( get_option('dbem_edit_locations_page') ){ + $link = em_add_get_params(get_permalink(get_option('dbem_edit_locations_page')), array('action'=>'edit','location_id'=>$this->location_id), false); + } + if( empty($link)) + $link = admin_url()."post.php?post={$this->post_id}&action=edit"; + } + return apply_filters('em_location_get_edit_url', $link, $this); + } + } + + function output_single($target = 'html'){ + $format = get_option ( 'dbem_single_location_format' ); + return apply_filters('em_location_output_single', $this->output($format, $target), $this, $target); + } + + function output($format, $target="html") { + $location_string = $format; + preg_match_all('/\{([a-zA-Z0-9_]+)\}([^{]+)\{\/[a-zA-Z0-9_]+\}/', $format, $conditionals); + if( count($conditionals[0]) > 0 ){ + //Check if the language we want exists, if not we take the first language there + foreach($conditionals[1] as $key => $condition){ + $format = str_replace($conditionals[0][$key], apply_filters('em_location_output_condition', '', $conditionals[0][$key], $condition, $this), $format); + } + } + //This is for the custom attributes + preg_match_all('/#_LATT\{([^}]+)\}(\{([^}]+)\})?/', $format, $results); + foreach($results[0] as $resultKey => $result) { + //Strip string of placeholder and just leave the reference + $attRef = substr( substr($result, 0, strpos($result, '}')), 7 ); + $attString = ''; + if( is_array($this->location_attributes) && array_key_exists($attRef, $this->location_attributes) && !empty($this->location_attributes[$attRef]) ){ + $attString = $this->location_attributes[$attRef]; + }elseif( !empty($results[3][$resultKey]) ){ + //Check to see if we have a second set of braces; + $attString = $results[3][$resultKey]; + } + $attString = apply_filters('em_location_output_placeholder', $attString, $this, $result, $target); + $location_string = str_replace($result, $attString ,$location_string ); + } + preg_match_all("/(#@?_?[A-Za-z0-9]+)({([a-zA-Z0-9,]+)})?/", $format, $placeholders); + $replaces = array(); + foreach($placeholders[1] as $key => $result) { + $replace = ''; + $full_result = $placeholders[0][$key]; + switch( $result ){ + case '#_LOCATIONID': + $replace = $this->location_id; + break; + case '#_LOCATIONPOSTID': + $replace = $this->location_id; + break; + case '#_NAME': //Depreciated + case '#_LOCATION': //Depreciated + case '#_LOCATIONNAME': + $replace = $this->location_name; + break; + case '#_ADDRESS': //Depreciated + case '#_LOCATIONADDRESS': + $replace = $this->location_address; + break; + case '#_TOWN': //Depreciated + case '#_LOCATIONTOWN': + $replace = $this->location_town; + break; + case '#_LOCATIONSTATE': + $replace = $this->location_state; + break; + case '#_LOCATIONPOSTCODE': + $replace = $this->location_postcode; + break; + case '#_LOCATIONREGION': + $replace = $this->location_region; + break; + case '#_LOCATIONCOUNTRY': + $replace = $this->get_country(); + break; + case '#_LOCATIONFULLLINE': + $replace = $this->location_address; + $replace .= empty($this->location_town) ? '':', '.$this->location_town; + $replace .= empty($this->location_state) ? '':', '.$this->location_state; + $replace .= empty($this->location_postcode) ? '':', '.$this->location_postcode; + $replace .= empty($this->location_region) ? '':', '.$this->location_region; + break; + case '#_LOCATIONFULLBR': + $replace = $this->location_address; + $replace .= empty($this->location_town) ? '':'<br />'.$this->location_town; + $replace .= empty($this->location_state) ? '':'<br />'.$this->location_state; + $replace .= empty($this->location_postcode) ? '':'<br />'.$this->location_postcode; + $replace .= empty($this->location_region) ? '':'<br />'.$this->location_region; + break; + case '#_MAP': //Depreciated + case '#_LOCATIONMAP': + ob_start(); + $template = em_locate_template('placeholders/locationmap.php', true, array('EM_Location'=>$this)); + $replace = ob_get_clean(); + break; + case '#_DESCRIPTION': //Depreciated + case '#_EXCERPT': //Depreciated + case '#_LOCATIONNOTES': + case '#_LOCATIONEXCERPT': + $replace = $this->post_content; + if($result == "#_EXCERPT" || $result == "#_LOCATIONEXCERPT"){ + if( !empty($this->post_excerpt) ){ + $replace = $this->post_excerpt; + }else{ + $matches = explode('<!--more', $this->post_content); + $replace = $matches[0]; + } + } + break; + case '#_LOCATIONIMAGEURL': + case '#_LOCATIONIMAGE': + if($this->get_image_url() != ''){ + $image_url = esc_url($this->get_image_url()); + if($result == '#_LOCATIONIMAGEURL'){ + $replace = $this->get_image_url(); + }else{ + if( empty($placeholders[3][$key]) ){ + $replace = "<img src='".$image_url."' alt='".esc_attr($this->location_name)."'/>"; + }else{ + $image_size = explode(',', $placeholders[3][$key]); + if( $this->array_is_numeric($image_size) && count($image_size) > 1 ){ + global $blog_id; + if ( is_multisite() && $blog_id > 0) { + $imageParts = explode('/blogs.dir/', $image_url); + if (isset($imageParts[1])) { + $image_url = network_site_url('/wp-content/blogs.dir/'. $blog_id. '/' . $imageParts[1]); + } + } + $replace = "<img src='".esc_url(em_get_thumbnail_url($image_url, $image_size[0], $image_size[1]))."' alt='".esc_attr($this->location_name)."'/>"; + }else{ + $replace = "<img src='".$image_url."' alt='".esc_attr($this->location_name)."'/>"; + } + } + } + } + break; + case '#_LOCATIONURL': + case '#_LOCATIONLINK': + case '#_LOCATIONPAGEURL': //Depreciated + $link = esc_url($this->get_permalink()); + $replace = ($result == '#_LOCATIONURL' || $result == '#_LOCATIONPAGEURL') ? $link : '<a href="'.$link.'" title="'.esc_attr($this->location_name).'">'.esc_html($this->location_name).'</a>'; + break; + case '#_LOCATIONEDITURL': + case '#_LOCATIONEDITLINK': + $link = esc_url($this->get_edit_url()); + $replace = ($result == '#_LOCATIONEDITURL') ? $link : '<a href="'.$link.'" title="'.esc_attr($this->location_name).'">'.esc_html(sprintf(__('Edit %s','dbem'),__('Location','dbem'))).'</a>'; + break; + case '#_PASTEVENTS': //Depreciated + case '#_LOCATIONPASTEVENTS': + case '#_NEXTEVENTS': //Depreciated + case '#_LOCATIONNEXTEVENTS': + case '#_ALLEVENTS': //Depreciated + case '#_LOCATIONALLEVENTS': + //TODO: add limit to lists of events + //convert depreciated placeholders for compatability + $result = ($result == '#_PASTEVENTS') ? '#_LOCATIONPASTEVENTS':$result; + $result = ($result == '#_NEXTEVENTS') ? '#_LOCATIONNEXTEVENTS':$result; + $result = ($result == '#_ALLEVENTS') ? '#_LOCATIONALLEVENTS':$result; + //forget it ever happened? :/ + if ( $result == '#_LOCATIONPASTEVENTS'){ $scope = 'past'; } + elseif ( $result == '#_LOCATIONNEXTEVENTS' ){ $scope = 'future'; } + else{ $scope = 'all'; } + $events = EM_Events::get( array('location'=>$this->location_id, 'scope'=>$scope) ); + if ( count($events) > 0 ){ + $replace .= get_option('dbem_location_event_list_item_header_format'); + foreach($events as $event){ + $replace .= $event->output(get_option('dbem_location_event_list_item_format')); + } + $replace .= get_option('dbem_location_event_list_item_footer_format'); + } else { + $replace = get_option('dbem_location_no_events_message'); + } + break; + case '#_LOCATIONNEXTEVENT': + $events = EM_Events::get( array('location'=>$this->location_id, 'scope'=>'future', 'limit'=>1, 'orderby'=>'event_start_date,event_start_time') ); + $replace = get_option('dbem_location_no_events_message'); + foreach($events as $EM_Event){ + $replace = $EM_Event->output('#_EVENTLINK'); + } + break; + default: + $replace = $full_result; + break; + } + $replaces[$full_result] = apply_filters('em_location_output_placeholder', $replace, $this, $full_result, $target); + } + //sort out replacements so that during replacements shorter placeholders don't overwrite longer varieties. + krsort($replaces); + foreach($replaces as $full_result => $replacement){ + $location_string = str_replace($full_result, $replacement , $location_string ); + } + return apply_filters('em_location_output', $location_string, $this, $format, $target); + } + + function get_country(){ + $countries = em_get_countries(); + if( !empty($countries[$this->location_country]) ){ + return apply_filters('em_location_get_country', $countries[$this->location_country], $this); + } + return apply_filters('em_location_get_country', false, $this); + + } +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-locations.php b/wp-content/plugins/events-manager/classes/em-locations.php new file mode 100644 index 0000000..f704e02 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-locations.php @@ -0,0 +1,306 @@ +<?php +/** + * Static class which will help bulk add/edit/retrieve/manipulate arrays of EM_Location objects. + * Optimized for specifically retreiving locations (whether eventful or not). If you want event data AND location information for each event, use EM_Events + * + */ +class EM_Locations extends EM_Object implements Iterator { + /** + * Array of EM_Location objects + * @var array EM_Location + */ + var $locations = array(); + + /** + * Returns an array of EM_Location objects + * @param boolean $eventful + * @param boolean $return_objects + * @return array + */ + function get( $args = array(), $count=false ){ + global $wpdb; + $events_table = EM_EVENTS_TABLE; + $locations_table = EM_LOCATIONS_TABLE; + $locations = array(); + + //Quick version, we can accept an array of IDs, which is easy to retrieve + if( self::array_is_numeric($args) ){ //Array of numbers, assume they are event IDs to retreive + //We can just get all the events here and return them + $sql = "SELECT * FROM $locations_table WHERE location_id=".implode(" OR location_id=", $args); + $results = $wpdb->get_results($sql,ARRAY_A); + $events = array(); + foreach($results as $result){ + $locations[$result['location_id']] = new EM_Location($result); + } + return apply_filters('em_locations_get', $locations, $args); //We return all the events matched as an EM_Event array. + }elseif( is_numeric($args) ){ + //return an event in the usual array format + return apply_filters('em_locations_get', array(new EM_Location($args)), $args); + }elseif( is_array($args) && is_object(current($args)) && get_class((current($args))) == 'EM_Location' ){ + return apply_filters('em_locations_get', $args, $args); + } + + //We assume it's either an empty array or array of search arguments to merge with defaults + $args = self::get_default_search($args); + $limit = ( $args['limit'] && is_numeric($args['limit'])) ? "LIMIT {$args['limit']}" : ''; + $offset = ( $limit != "" && is_numeric($args['offset']) ) ? "OFFSET {$args['offset']}" : ''; + + //Get the default conditions + $conditions = self::build_sql_conditions($args); + + //Put it all together + $EM_Location = new EM_Location(0); //Empty class for strict message avoidance + $fields = $locations_table .".". implode(", {$locations_table}.", array_keys($EM_Location->fields)); + $where = ( count($conditions) > 0 ) ? " WHERE " . implode ( " AND ", $conditions ):''; + + //Get ordering instructions + $EM_Event = new EM_Event(); //blank event for below + $accepted_fields = $EM_Location->get_fields(true); + $accepted_fields = array_merge($EM_Event->get_fields(true),$accepted_fields); + $orderby = self::build_sql_orderby($args, $accepted_fields, get_option('dbem_events_default_order')); + //Now, build orderby sql + $orderby_sql = ( count($orderby) > 0 ) ? 'ORDER BY '. implode(', ', $orderby) : ''; + + $fields = ( $count ) ? $locations_table.'.location_id':$locations_table.'.post_id'; + if( EM_MS_GLOBAL ){ + $selectors = ( $count ) ? 'COUNT('.$locations_table.'.location_id)':$locations_table.'.post_id, '.$locations_table.'.blog_id'; + }else{ + $selectors = ( $count ) ? 'COUNT('.$locations_table.'.location_id)':$locations_table.'.post_id'; + } + //Create the SQL statement and execute + $sql = " + SELECT $selectors FROM $locations_table + LEFT JOIN $events_table ON {$locations_table}.location_id={$events_table}.location_id + $where + GROUP BY {$locations_table}.location_id + $orderby_sql + $limit $offset + "; + + //If we're only counting results, return the number of results + if( $count ){ + return apply_filters('em_locations_get_array', count($wpdb->get_col($sql)), $args); + } + $results = $wpdb->get_results($sql, ARRAY_A); + + //If we want results directly in an array, why not have a shortcut here? + if( $args['array'] == true ){ + return apply_filters('em_locations_get_array', $results, $args); + } + + if( EM_MS_GLOBAL ){ + foreach ( $results as $location ){ + $locations[] = em_get_location($location['post_id'], $location['blog_id']); + } + }else{ + foreach ( $results as $location ){ + $locations[] = em_get_location($location['post_id'], 'post_id'); + } + } + return apply_filters('em_locations_get', $locations, $args); + } + + function count( $args = array() ){ + return apply_filters('em_locations_count', self::get($args, true), $args); + } + + /** + * Output a set of matched of events + * @param array $args + * @return string + */ + function output( $args ){ + global $EM_Location; + $EM_Location_old = $EM_Location; //When looping, we can replace EM_Location global with the current event in the loop + //Can be either an array for the get search or an array of EM_Location objects + if( is_object(current($args)) && get_class((current($args))) == 'EM_Location' ){ + $func_args = func_get_args(); + $locations = $func_args[0]; + $args = (!empty($func_args[1])) ? $func_args[1] : array(); + $args = apply_filters('em_locations_output_args', self::get_default_search($args), $locations); + $limit = ( !empty($args['limit']) && is_numeric($args['limit']) ) ? $args['limit']:false; + $offset = ( !empty($args['offset']) && is_numeric($args['offset']) ) ? $args['offset']:0; + $page = ( !empty($args['page']) && is_numeric($args['page']) ) ? $args['page']:1; + $locations_count = count($locations); + }else{ + $args = apply_filters('em_locations_output_args', self::get_default_search($args) ); + $limit = ( !empty($args['limit']) && is_numeric($args['limit']) ) ? $args['limit']:false; + $offset = ( !empty($args['offset']) && is_numeric($args['offset']) ) ? $args['offset']:0; + $page = ( !empty($args['page']) && is_numeric($args['page']) ) ? $args['page']:1; + $args_count = $args; + $args_count['limit'] = 0; + $args_count['offset'] = 0; + $args_count['page'] = 1; + $locations_count = self::count($args_count); + $locations = self::get( $args ); + } + //What format shall we output this to, or use default + $format = ( $args['format'] == '' ) ? get_option( 'dbem_location_list_item_format' ) : $args['format'] ; + + $output = ""; + $locations = apply_filters('em_locations_output_locations', $locations); + if ( count($locations) > 0 ) { + foreach ( $locations as $EM_Location ) { + $output .= $EM_Location->output($format); + } + //Add headers and footers to output + if( $format == get_option ( 'dbem_location_list_item_format' ) ){ + $single_event_format_header = get_option ( 'dbem_location_list_item_format_header' ); + $single_event_format_header = ( $single_event_format_header != '' ) ? $single_event_format_header : "<ul class='em-locations-list'>"; + $single_event_format_footer = get_option ( 'dbem_location_list_item_format_footer' ); + $single_event_format_footer = ( $single_event_format_footer != '' ) ? $single_event_format_footer : "</ul>"; + $output = $single_event_format_header . $output . $single_event_format_footer; + } + //Pagination (if needed/requested) + if( !empty($args['pagination']) && !empty($limit) && $locations_count >= $limit ){ + //Show the pagination links (unless there's less than 10 events + $page_link_template = preg_replace('/(&|\?)pno=\d+/i','',$_SERVER['REQUEST_URI']); + $page_link_template = em_add_get_params($page_link_template, array('pno'=>'%PAGE%'), false); //don't html encode, so em_paginate does its thing + $output .= apply_filters('em_events_output_pagination', em_paginate( $page_link_template, $locations_count, $limit, $page), $page_link_template, $locations_count, $limit, $page); + } + } else { + $output = get_option ( 'dbem_no_locations_message' ); + } + //FIXME check if reference is ok when restoring object, due to changes in php5 v 4 + $EM_Location_old= $EM_Location; + return apply_filters('em_locations_output', $output, $locations, $args); + } + + function delete( $args = array() ){ + if( !is_object(current($args)) && get_class((current($args))) != 'EM_Location' ){ + $locations = self::get($args); + }else{ + $locations = $args; + } + $results = array(); + foreach ( $locations as $EM_Location ){ + $results[] = $EM_Location->delete(); + } + return apply_filters('em_locations_delete', in_array(false, $results), $locations); + } + + /** + * Builds an array of SQL query conditions based on regularly used arguments + * @param array $args + * @return array + */ + function build_sql_conditions( $args = array(), $count=false ){ + global $wpdb; + $events_table = EM_EVENTS_TABLE; + $locations_table = EM_LOCATIONS_TABLE; + + $conditions = parent::build_sql_conditions($args); + //eventful locations + if( true == $args['eventful'] ){ + $conditions['eventful'] = "{$events_table}.event_id IS NOT NULL"; + }elseif( true == $args['eventless'] ){ + $conditions['eventless'] = "{$events_table}.event_id IS NULL"; + } + //owner lookup + if( !empty($args['owner']) && is_numeric($args['owner'])){ + $conditions['owner'] = "location_owner=".$args['owner']; + }elseif( !empty($args['owner']) && $args['owner'] == 'me' && is_user_logged_in() ){ + $conditions['owner'] = 'location_owner='.get_current_user_id(); + } + //blog id in events table + if( EM_MS_GLOBAL && !empty($args['blog']) ){ + if( is_main_site($args['blog']) ){ + $conditions['blog'] = "($locations_table.blog_id={$args['blog']} OR $locations_table.blog_id IS NULL)"; + }else{ + $conditions['blog'] = "($locations_table.blog_id={$args['blog']})"; + } + } + //status + if( array_key_exists('status',$args) && is_numeric($args['status']) ){ + $null = ($args['status'] == 0) ? ' OR `location_status` = 0':''; + $conditions['status'] = "(`location_status`={$args['status']}{$null} )"; + }else{ + $conditions['status'] = "(`location_status` IS NOT NULL)"; + } + //private locations + if( empty($args['private']) ){ + $conditions['private'] = "(`location_private`=0)"; + }elseif( !empty($args['private_only']) ){ + $conditions['private_only'] = "(`location_private`=1)"; + } + //post search + if( !empty($args['post_id'])){ + if( is_array($args['post_id']) ){ + $conditions['post_id'] = "($locations_table.post_id IN (".implode(',',$args['post_id'])."))"; + }else{ + $conditions['post_id'] = "($locations_table.post_id={$args['post_id']})"; + } + } + return apply_filters('em_locations_build_sql_conditions', $conditions, $args); + } + + /* Overrides EM_Object method to apply a filter to result + * @see wp-content/plugins/events-manager/classes/EM_Object#build_sql_orderby() + */ + function build_sql_orderby( $args, $accepted_fields, $default_order = 'ASC' ){ + return apply_filters( 'em_locations_build_sql_orderby', parent::build_sql_orderby($args, $accepted_fields, get_option('dbem_events_default_order')), $args, $accepted_fields, $default_order ); + } + + /* + * Generate a search arguments array from defalut and user-defined. + * @see wp-content/plugins/events-manager/classes/EM_Object::get_default_search() + */ + function get_default_search($array = array()){ + $defaults = array( + 'eventful' => false, //Locations that have an event (scope will also play a part here + 'eventless' => false, //Locations WITHOUT events, eventful takes precedence + 'orderby' => 'location_name', + 'town' => false, + 'state' => false, + 'country' => false, + 'region' => false, + 'status' => 1, //approved locations only + 'scope' => 'all', //we probably want to search all locations by default, not like events + 'blog' => get_current_blog_id(), + 'private' => !current_user_can('read_private_locations'), + 'private_only' => false, + 'post_id' => false + ); + if(EM_MS_GLOBAL){ + global $bp; + if( !is_main_site() && !array_key_exists('blog', $array) ){ + $array['blog'] = get_current_blog_id(); + }elseif( array_key_exists('blog', $array) ) { + $array['blog'] = $array['blog']; + } + } + $array['eventful'] = ( !empty($array['eventful']) && $array['eventful'] == true ); + $array['eventless'] = ( !empty($array['eventless']) && $array['eventless'] == true ); + if( is_admin() ){ + $defaults['owner'] = !current_user_can('read_others_locations') ? get_current_user_id():false; + } + return apply_filters('em_locations_get_default_search', parent::get_default_search($defaults, $array), $array, $defaults); + } + + //Iteratior methods + public function rewind(){ + reset($this->locations); + } + + public function current(){ + $var = current($this->locations); + return $var; + } + + public function key(){ + $var = key($this->locations); + return $var; + } + + public function next(){ + $var = next($this->locations); + return $var; + } + + public function valid(){ + $key = key($this->locations); + $var = ($key !== NULL && $key !== FALSE); + return $var; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-mailer.php b/wp-content/plugins/events-manager/classes/em-mailer.php new file mode 100644 index 0000000..77767e7 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-mailer.php @@ -0,0 +1,116 @@ +<?php +/** + * phpmailer support + * + */ +class EM_Mailer { + + /** + * if any errors crop up, here they are + * @var array + */ + var $errors = array(); + + /** + * @param $subject + * @param $body + * @param $receiver + */ + function send($subject="no title",$body="No message specified", $receiver='') { + //TODO add an EM_Error global object, for this sort of error reporting. (@marcus like StatusNotice) + global $smtpsettings, $phpmailer, $cformsSettings; + if( is_array($receiver) ){ + $receiver_emails = array(); + foreach($receiver as $receiver_email){ + $receiver_emails[] = is_email($receiver_email); + } + $emails_ok = !in_array(false, $receiver_emails); + }else{ + $emails_ok = is_email($receiver); + } + if ( $emails_ok && get_option('dbem_rsvp_mail_send_method') == 'wp_mail' ){ + $from = get_option('dbem_mail_sender_address'); + $headers = get_option('dbem_mail_sender_name') ? 'From: '.get_option('dbem_mail_sender_name').' <'.$from.'>':'From: '.$from; + if( get_option('dbem_smtp_html') ){ //create filter to change content type to html in wp_mail + add_filter('wp_mail_content_type',create_function('', 'return "text/html";')); + } + $send = wp_mail($receiver, $subject, $body, $headers); + if(!$send){ + global $phpmailer; + $this->errors[] = $phpmailer->ErrorInfo; + } + return $send; + }elseif ( $emails_ok && get_option('dbem_rsvp_mail_send_method') == 'mail' ){ + if(is_array($receiver)){ + $receiver = implode(', ', $receiver); + } + $headers = ''; + if( get_option('dbem_smtp_html') ){ + $headers = 'MIME-Version: 1.0' . "\r\n"; + $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; + } + $from = get_option('dbem_mail_sender_address'); + $headers .= get_option('dbem_mail_sender_name') ? 'From: '.get_option('dbem_mail_sender_name').' <'.$from.'>':'From: '.$from; + $send = mail($receiver, $subject, $body, $headers); + if(!$send){ + $this->errors = __('Could not send email.', 'dbem'); + } + return $send; + }elseif( $emails_ok ){ + $this->load_phpmailer(); + $mail = new EM_PHPMailer(); + //$mail->SMTPDebug = true; + if( get_option('dbem_smtp_html') ){ + $mail->isHTML(); + } + $mail->ClearAllRecipients(); + $mail->ClearAddresses(); + $mail->ClearAttachments(); + $mail->CharSet = 'utf-8'; + $mail->SetLanguage('en', dirname(__FILE__).'/'); + $mail->PluginDir = dirname(__FILE__).'/phpmailer/'; + $mail->Host = get_option('dbem_smtp_host'); + $mail->port = get_option('dbem_rsvp_mail_port'); + $mail->Username = get_option('dbem_smtp_username'); + $mail->Password = get_option('dbem_smtp_password'); + $mail->From = get_option('dbem_mail_sender_address'); + $mail->FromName = get_option('dbem_mail_sender_name'); // This is the from name in the email, you can put anything you like here + $mail->Body = $body; + $mail->Subject = $subject; + if(is_array($receiver)){ + foreach($receiver as $receiver_email){ + $mail->AddAddress($receiver_email); + } + }else{ + $mail->AddAddress($receiver); + } + + //Protocols + if( get_option('dbem_rsvp_mail_send_method') == 'qmail' ){ + $mail->IsQmail(); + }else { + $mail->Mailer = get_option('dbem_rsvp_mail_send_method'); + } + if(get_option('dbem_rsvp_mail_SMTPAuth') == '1'){ + $mail->SMTPAuth = TRUE; + } + $send = $mail->Send(); + if(!$send){ + $this->errors[] = $mail->ErrorInfo; + } + return $send; + }else{ + $this->errors = __('Please supply a valid email format.', 'dbem'); + return false; + } + } + + /** + * load phpmailer classes + */ + function load_phpmailer(){ + require_once(dirname(__FILE__) . '/phpmailer/class.phpmailer.php'); + require_once(dirname(__FILE__) . '/phpmailer/class.smtp.php'); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-notices.php b/wp-content/plugins/events-manager/classes/em-notices.php new file mode 100644 index 0000000..cb64e2b --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-notices.php @@ -0,0 +1,201 @@ +<?php + /** + * + * @author marcus + * + */ + class EM_Notices implements Iterator { + var $notices = array('errors'=>array(), 'infos'=>array(), 'alerts'=>array(), 'confirms'=>array()); + + function __construct(){ + session_start(); + //Grab from session + if( !empty($_SESSION['events-manager']['notices']) && is_serialized($_SESSION['events-manager']['notices']) ){ + $this->notices = unserialize($_SESSION['events-manager']['notices']); + } + //Flush notices that weren't made to stay cross-requests, we can do this if initialized immediately. + foreach($this->notices as $notice_type => $notices){ + foreach ($notices as $key => $notice){ + if( empty($notice['static']) ){ + unset($this->notices[$notice_type][$key]); + }else{ + unset($this->notices[$notice_type][$key]['static']); //so it gets removed next request + } + } + } + add_action('shutdown', array(&$this,'destruct')); + add_filter('wp_redirect', array(&$this,'destruct'), 1,1); + } + + function destruct($redirect = false){ + //die('destructing'); + $_SESSION['events-manager']['notices'] = serialize($this->notices); + return $redirect; + } + + function __toString(){ + $string = false; + if(count($this->notices['errors']) > 0){ + $string .= "<div class='em-warning em-warning-errors error'>{$this->get_errors()}</div>"; + } + if(count($this->notices['alerts']) > 0){ + $string .= "<div class='em-warning em-warning-alerts updated'>{$this->get_alerts()}</div>"; + } + if(count($this->notices['infos']) > 0){ + $string .= "<div class='em-warning em-warning-infos updated'>{$this->get_infos()}</div>"; + } + if(count($this->notices['confirms']) > 0){ + $string .= "<div class='em-warning em-warning-confirms updated'>{$this->get_confirms()}</div>"; + } + return ($string !== false) ? "<div class='statusnotice'>".$string."</div>" : ''; + } + + /* General */ + function add($string, $type, $static = false){ + if( is_array($string) ){ + $result = true; + foreach($string as $string_item){ + if( $this->add($string_item, $type, $static) === false ){ $result = false; } + } + return $result; + } + if($string != ''){ + if( isset($this->notices[$type]) ){ + $notice_key = 0; + foreach( $this->notices[$type] as $notice_key => $notice ){ + if($string == $notice['string']){ + return $notice_key; + } + } + $i = $notice_key+1; + $this->notices[$type][$i]['string'] = $string; + if( $static ){ + $this->notices[$type][$i]['static'] = true; + } + return $i; + }else{ + return false; + } + }else{ + return false; + } + } + function remove($key, $type){ + if( isset($this->notices[$type]) ){ + unset($this->notices[$type][$key]); + return true; + }else{ + return false; + } + } + function remove_all(){ + $this->notices = array('errors'=>array(), 'infos'=>array(), 'alerts'=>array(), 'confirms'=>array()); + } + function get($type){ + if( isset($this->notices[$type]) ){ + $string = ''; + foreach ($this->notices[$type] as $key => $error){ + $class = substr($type, 0, (strlen($type)-1)); + $string .= "<p>{$error['string']}</p>"; + /* Disabled for now, pending review due to issues in the_content firing x times e.g. in SFC + if( empty($error['static']) || $error['static'] !== true){ + $this->remove($key, $type); + } + */ + } + return $string; + } + return false; + } + function count($type){ + if( isset($this->notices[$type]) ){ + return count($this->notices[$type]); + } + return 0; + } + + /* Errors */ + function add_error($string, $static=false){ + return $this->add($string, 'errors', $static); + } + function remove_error($key){ + return $this->remove($key, 'errors'); + } + function get_errors(){ + return $this->get('errors'); + } + function count_errors(){ + return $this->count('errors'); + } + + /* Alerts */ + function add_alert($string, $static=false){ + return $this->add($string, 'alerts', $static); + } + function remove_alert($key){ + return $this->remove($key, 'alerts'); + } + function get_alerts(){ + return $this->get('alerts'); + } + function count_alerts(){ + return $this->count('alerts'); + } + + /* Info */ + function add_info($string, $static=false){ + return $this->add($string, 'infos', $static); + } + function remove_info($key){ + return $this->remove($key, 'infos'); + } + function get_infos(){ + return $this->get('infos'); + } + function count_infos(){ + return $this->count('infos'); + } + + /* Confirms */ + function add_confirm($string, $static=false){ + return $this->add($string, 'confirms', $static); + } + function remove_confirm($key){ + return $this->remove($key, 'confirms'); + } + function get_confirms(){ + return $this->get('confirms'); + } + function count_confirms(){ + return $this->count('confirms'); + } + + //Iterator Implementation + function rewind(){ + reset($this->bookings); + } + function current(){ + $var = current($this->bookings); + return $var; + } + function key(){ + $var = key($this->bookings); + return $var; + } + function next(){ + $var = next($this->bookings); + return $var; + } + function valid(){ + $key = key($this->bookings); + $var = ($key !== NULL && $key !== FALSE); + return $var; + } + + } + function em_notices_init(){ + global $EM_Notices; + $EM_Notices = new EM_Notices(); + } + add_action('plugins_loaded', 'em_notices_init'); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-object.php b/wp-content/plugins/events-manager/classes/em-object.php new file mode 100644 index 0000000..dc3891c --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-object.php @@ -0,0 +1,1219 @@ +<?php +/** + * Base class which others extend on. Contains functions shared across all EM objects. + * + */ +class EM_Object { + var $fields = array(); + var $required_fields = array(); + var $feedback_message = ""; + var $errors = array(); + var $mime_types = array(1 => 'gif', 2 => 'jpg', 3 => 'png'); + + /** + * Takes the array and provides a clean array of search parameters, along with details + * @param array $defaults + * @param array $array + * @return array + */ + function get_default_search($defaults=array(), $array = array()){ + global $wpdb; + //TODO accept all objects as search options as well as ids (e.g. location vs. location_id, person vs. person_id) + //Create minimal defaults array, merge it with supplied defaults array + $super_defaults = array( + 'limit' => false, + 'scope' => 'future', + 'order' => 'ASC', //hard-coded at end of this function + 'orderby' => false, + 'format' => '', + 'category' => 0, + 'tag' => 0, + 'location' => 0, + 'event' => 0, + 'offset'=>0, + 'page'=>1,//basically, if greater than 0, calculates offset at end + 'recurrence'=>0, + 'recurring'=>false, + 'month'=>'', + 'year'=>'', + 'pagination'=>false, + 'array'=>false, + 'owner'=>false, + 'rsvp'=>false, //depreciated for bookings + 'bookings'=>false, + 'search'=>false + ); + //Return default if nothing passed + if( empty($defaults) && empty($array) ){ + return $super_defaults; + } + //TODO decide on search defaults shared across all objects and then validate here + $defaults = array_merge($super_defaults, $defaults); + + if(is_array($array)){ + //We are still dealing with recurrence_id, location_id, category_id in some place, so we do a quick replace here just in case + if( array_key_exists('recurrence_id', $array) && !array_key_exists('recurrence', $array) ) { $array['recurrence'] = $array['recurrence_id']; } + if( array_key_exists('location_id', $array) && !array_key_exists('location', $array) ) { $array['location'] = $array['location_id']; } + if( array_key_exists('category_id', $array) && !array_key_exists('category', $array) ) { $array['category'] = $array['category_id']; } + + //Clean all id lists + $array = self::clean_id_atts($array, array('location', 'event', 'category', 'post_id')); + if( !empty($array['tag']) && strstr(',', $array['tag']) !== false ){ + $array['tag'] = explode(',',$array['tag']); + } + + //OrderBy - can be a comma-seperated array of field names to order by (field names of object, not db) + if( array_key_exists('orderby', $array)){ + if( !is_array($array['orderby']) && preg_match('/,/', $array['orderby']) ) { + $array['orderby'] = explode(',', $array['orderby']); + } + } + //TODO validate search query array + //Clean the supplied array, so we only have allowed keys + foreach( array_keys($array) as $key){ + if( !array_key_exists($key, $defaults) ) unset($array[$key]); + } + //return clean array + $defaults = array_merge ( $defaults, $array ); //No point using WP's cleaning function, we're doing it already. + } + + //Do some spring cleaning for known values + //Month & Year - may be array or single number + $month_regex = '/^[0-9]{1,2}$/'; + $year_regex = '/^[0-9]{4}$/'; + if( is_array($defaults['month']) ){ + $defaults['month'] = ( preg_match($month_regex, $defaults['month'][0]) && preg_match($month_regex, $defaults['month'][1]) ) ? $defaults['month']:''; + }else{ + $defaults['month'] = preg_match($month_regex, $defaults['month']) ? $defaults['month']:''; + } + if( is_array($defaults['year']) ){ + $defaults['year'] = ( preg_match($year_regex, $defaults['year'][0]) && preg_match($year_regex, $defaults['year'][1]) ) ? $defaults['year']:''; + }else{ + $defaults['year'] = preg_match($year_regex, $defaults['year']) ? $defaults['year']:''; + } + //Deal with scope and date searches + if ( !is_array($defaults['scope']) && preg_match ( "/^([0-9]{4}-[0-9]{2}-[0-9]{2})?,([0-9]{4}-[0-9]{2}-[0-9]{2})?$/", $defaults['scope'] ) ) { + //This is to become an array, so let's split it up + $defaults['scope'] = explode(',', $defaults['scope']); + } + if( is_array($defaults['scope']) ){ + //looking for a date range here, so we'll verify the dates validate, if not get the default. + if ( !preg_match("/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $defaults['scope'][0]) ){ + $defaults['scope'][0] = ''; + } + if( !preg_match("/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $defaults['scope'][1]) ) { + $defaults['scope'][1] = ''; + } + if( empty($defaults['scope'][0]) && empty($defaults['scope'][1]) ){ + $defaults['scope'] = $super_defaults['scope']; + } + } + //Order - it's either ASC or DESC, so let's just validate + if( !is_array($defaults['order']) && preg_match('/,/', $defaults['order']) ) { + $defaults['order'] = explode(',', $defaults['order']); + }elseif( !in_array($defaults['order'], array('ASC','DESC')) ){ + $defaults['order'] = $super_defaults['order']; + } + //ORDER BY, split if an array + if( !is_array($defaults['orderby']) && preg_match('/,/', $defaults['orderby']) ) { + $defaults['orderby'] = explode(',', $defaults['orderby']); + } + //TODO should we clean format of malicious code over here and run everything thorugh this? + $defaults['array'] = ($defaults['array'] == true); + $defaults['pagination'] = ($defaults['pagination'] == true); + $defaults['limit'] = (is_numeric($defaults['limit'])) ? $defaults['limit']:$super_defaults['limit']; + $defaults['offset'] = (is_numeric($defaults['offset'])) ? $defaults['offset']:$super_defaults['offset']; + $defaults['recurring'] = ($defaults['recurring'] == true); + $defaults['owner'] = (is_numeric($defaults['owner']) || $defaults['owner'] == 'me') ? $defaults['owner']:$super_defaults['owner']; + $defaults['search'] = ($defaults['search']) ? trim($wpdb->escape(like_escape($defaults['search']))):false; + //Calculate offset if event page is set + if($defaults['page'] > 1){ + $defaults['offset'] = $defaults['limit'] * ($defaults['page']-1); + }else{ + $defaults['page'] = ($defaults['limit'] > 0 ) ? floor($defaults['offset']/$defaults['limit']) + 1 : 1; + } + return apply_filters('em_object_get_default_search', $defaults, $array, $super_defaults); + } + + /** + * Builds an array of SQL query conditions based on regularly used arguments + * @param array $args + * @return array + */ + function build_sql_conditions( $args = array() ){ + global $wpdb; + $events_table = EM_EVENTS_TABLE; + $locations_table = EM_LOCATIONS_TABLE; + + $args = apply_filters('em_object_build_sql_conditions_args',$args); + + //Format the arguments passed on + $scope = $args['scope'];//undefined variable warnings in ZDE, could just delete this (but dont pls!) + $recurring = $args['recurring']; + $recurrence = $args['recurrence']; + $category = $args['category']; + $tag = $args['tag']; + $location = $args['location']; + $bookings = $args['rsvp']; + $bookings = !empty($args['bookings']) ? $args['bookings']:$bookings; + $owner = $args['owner']; + $event = $args['event']; + $month = $args['month']; + $year = $args['year']; + $today = date('Y-m-d', current_time('timestamp')); + //Create the WHERE statement + + //Recurrences + $conditions = array(); + if( $recurring ){ + $conditions['recurring'] = "`recurrence`=1"; + }elseif( $recurrence > 0 ){ + $conditions['recurrence'] = "`recurrence_id`=$recurrence"; + }else{ + $conditions['recurring'] = "(`recurrence`!=1 OR `recurrence` IS NULL)"; + } + //Dates - first check 'month', and 'year', and adjust scope if needed + if( !($month=='' && $year=='') ){ + //Sort out month range, if supplied an array of array(month,month), it'll check between these two months + if( self::array_is_numeric($month) ){ + $date_month_start = $month[0]; + $date_month_end = $month[1]; + }else{ + if( !empty($month) ){ + $date_month_start = $date_month_end = $month; + }else{ + $date_month_start = 1; + $date_month_end = 12; + } + } + //Sort out year range, if supplied an array of array(year,year), it'll check between these two years + if( self::array_is_numeric($year) ){ + $date_year_start = $year[0]; + $date_year_end = $year[1]; + }else{ + $date_year_start = $date_year_end = $year; + } + $date_start = $date_year_start."-".$date_month_start."-01"; + $date_end = date('Y-m-t', mktime(0,0,0,$date_month_end,1,$date_year_end)); + $scope = array($date_start,$date_end); //just modify the scope here + } + //No date requested, so let's look at scope + if ( is_array($scope) ) { + //This is an array, let's split it up + $date_start = $scope[0]; + $date_end = $scope[1]; + if( !empty($date_start) && empty($date_end) ){ + //do a from till infinity + $conditions['scope'] = " event_start_date >= CAST('$date_start' AS DATE)"; + }elseif( empty($date_start) && !empty($date_end) ){ + //do past till $date_end + if( get_option('dbem_events_current_are_past') ){ + $conditions['scope'] = " event_start_date <= CAST('$date_end' AS DATE)"; + }else{ + $conditions['scope'] = " event_end_date <= CAST('$date_end' AS DATE)"; + } + }else{ + //date range + //$conditions['scope'] = " ( ( event_start_date <= CAST('$date_end' AS DATE) AND event_end_date >= CAST('$date_start' AS DATE) ) OR (event_start_date BETWEEN CAST('$date_start' AS DATE) AND CAST('$date_end' AS DATE)) OR (event_end_date BETWEEN CAST('$date_start' AS DATE) AND CAST('$date_end' AS DATE)) )"; + $conditions['scope'] = "( (event_start_date BETWEEN CAST('$date_start' AS DATE) AND CAST('$date_end' AS DATE)) OR (event_end_date BETWEEN CAST('$date_start' AS DATE) AND CAST('$date_end' AS DATE)) )"; + } + } elseif ( preg_match ( "/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $scope ) ) { + //Scope can also be a specific date. However, if 'day', 'month', or 'year' are set, that will take precedence + if( get_option('dbem_events_current_are_past') ){ + $conditions['scope'] = "event_start_date = CAST('$scope' AS DATE)"; + }else{ + $conditions['scope'] = " ( event_start_date = CAST('$scope' AS DATE) OR ( event_start_date <= CAST('$scope' AS DATE) AND event_end_date >= CAST('$scope' AS DATE) ) )"; + } + } else { + if ($scope == "past"){ + if( get_option('dbem_events_current_are_past') ){ + $conditions['scope'] = " event_start_date < '$today'"; + }else{ + $conditions['scope'] = " event_end_date < '$today'"; + } + }elseif ($scope == "today"){ + $conditions['scope'] = " (event_start_date = CAST('$today' AS DATE))"; + if( !get_option('dbem_events_current_are_past') ){ + $conditions['scope'] .= " OR (event_start_date <= CAST('$today' AS DATE) AND event_end_date >= CAST('$today' AS DATE))"; + } + }elseif ($scope == "tomorrow"){ + $tomorrow = date('Y-m-d',current_time('timestamp')+60*60*24); + $conditions['scope'] = "(event_start_date = CAST('$tomorrow' AS DATE))"; + if( !get_option('dbem_events_current_are_past') ){ + $conditions['scope'] .= " OR (event_start_date <= CAST('$tomorrow' AS DATE) AND event_end_date >= CAST('$tomorrow' AS DATE))"; + } + }elseif ($scope == "month"){ + $start_month = date('Y-m-d',current_time('timestamp')); + $end_month = date('Y-m-t',current_time('timestamp')); + $conditions['scope'] = " (event_start_date BETWEEN CAST('$start_month' AS DATE) AND CAST('$end_month' AS DATE))"; + if( !get_option('dbem_events_current_are_past') ){ + $conditions['scope'] .= " OR (event_start_date < CAST('$start_month' AS DATE) AND event_end_date >= CAST('$start_month' AS DATE))"; + } + }elseif ($scope == "next-month"){ + $start_month_timestamp = strtotime('+1 month', current_time('timestamp')); //get the end of this month + 1 day + $start_month = date('Y-m-1',$start_month_timestamp); + $end_month = date('Y-m-t',$start_month_timestamp); + $conditions['scope'] = " (event_start_date BETWEEN CAST('$start_month' AS DATE) AND CAST('$end_month' AS DATE))"; + if( !get_option('dbem_events_current_are_past') ){ + $conditions['scope'] .= " OR (event_start_date < CAST('$start_month' AS DATE) AND event_end_date >= CAST('$start_month' AS DATE))"; + } + }elseif( preg_match('/([0-9]+)\-months/',$scope,$matches) ){ // next x months means this month (what's left of it), plus the following x months until the end of that month. + $months_to_add = $matches[1]; + $start_month = date('Y-m-d',current_time('timestamp')); + $end_month = date('Y-m-t',strtotime("+$months_to_add month", current_time('timestamp'))); + $conditions['scope'] = " (event_start_date BETWEEN CAST('$start_month' AS DATE) AND CAST('$end_month' AS DATE))"; + if( !get_option('dbem_events_current_are_past') ){ + $conditions['scope'] .= " OR (event_start_date < CAST('$start_month' AS DATE) AND event_end_date >= CAST('$start_month' AS DATE))"; + } + }elseif ($scope == "future"){ + $conditions['scope'] = " event_start_date >= CAST('$today' AS DATE)"; + if( !get_option('dbem_events_current_are_past') ){ + $conditions['scope'] .= " OR (event_end_date >= CAST('$today' AS DATE) AND event_end_date != '0000-00-00' AND event_end_date IS NOT NULL)"; + } + } + if( !empty($conditions['scope']) ){ + $conditions['scope'] = '('.$conditions['scope'].')'; + } + } + + //Filter by Location - can be object, array, or id + if ( is_numeric($location) && $location > 0 ) { //Location ID takes precedence + $conditions['location'] = " {$locations_table}.location_id = $location"; + }elseif ( self::array_is_numeric($location) ){ + $conditions['location'] = "( {$locations_table}.location_id = " . implode(" OR {$locations_table}.location_id = ", $location) .' )'; + }elseif ( is_object($location) && get_class($location)=='EM_Location' ){ //Now we deal with objects + $conditions['location'] = " {$locations_table}.location_id = $location->location_id"; + }elseif ( is_array($location) && @get_class(current($location)=='EM_Location') ){ //we can accept array of ids or EM_Location objects + foreach($location as $EM_Location){ + $location_ids[] = $EM_Location->location_id; + } + $conditions['location'] = "( {$locations_table}.location_id=". implode(" {$locations_table}.location_id=", $location_ids) ." )"; + } + + //Filter by Event - can be object, array, or id + if ( is_numeric($event) && $event > 0 ) { //event ID takes precedence + $conditions['event'] = " {$events_table}.event_id = $event"; + }elseif ( self::array_is_numeric($event) ){ //array of ids + $conditions['event'] = "( {$events_table}.event_id = " . implode(" OR {$events_table}.event_id = ", $event) .' )'; + }elseif ( is_object($event) && get_class($event)=='EM_Event' ){ //Now we deal with objects + $conditions['event'] = " {$events_table}.event_id = $event->event_id"; + }elseif ( is_array($event) && @get_class(current($event)=='EM_Event') ){ //we can accept array of ids or EM_event objects + foreach($event as $EM_Event){ + $event_ids[] = $EM_Event->event_id; + } + $conditions['event'] = "( {$events_table}.event_id=". implode(" {$events_table}.event_id=", $event_ids) ." )"; + } + //Location specific filters + //country lookup + if( !empty($args['country']) ){ + $countries = em_get_countries(); + //we can accept country codes or names + if( in_array($args['country'], $countries) ){ + //we have a country name, + $conditions['country'] = "location_country='".array_search($args['country'])."'"; + }elseif( array_key_exists($args['country'], $countries) ){ + //we have a country code + $conditions['country'] = "location_country='".$args['country']."'"; + } + } + //state lookup + if( !empty($args['state']) ){ + $conditions['state'] = "location_state='".$args['state']."'"; + } + //state lookup + if( !empty($args['town']) ){ + $conditions['town'] = "location_town='".$args['town']."'"; + } + //region lookup + if( !empty($args['region']) ){ + $conditions['region'] = "location_region='".$args['region']."'"; + } + //Add conditions for category selection + //Filter by category, can be id or comma seperated ids + $not = ''; + if ( is_numeric($category) ){ + $not = ( $category < 0 ) ? "NOT":''; + //get the term id directly + $term = new EM_Category(absint($category)); + if( !empty($term->term_id) ){ + if( EM_MS_GLOBAL ){ + $conditions['category'] = " ".EM_EVENTS_TABLE.".event_id $not IN ( SELECT object_id FROM ".EM_META_TABLE." WHERE meta_value={$term->term_id} AND meta_key='event-category' ) "; + }else{ + $conditions['category'] = " ".EM_EVENTS_TABLE.".post_id $not IN ( SELECT object_id FROM ".$wpdb->term_relationships." WHERE term_taxonomy_id={$term->term_taxonomy_id} ) "; + } + } + }elseif( self::array_is_numeric($category) ){ + $term_ids = array(); + $term_not_ids = array(); + foreach($category as $category_id){ + $term = new EM_Category(absint($category_id)); + if( !empty($term->term_taxonomy_id) ){ + if( $category_id > 0 ){ + $term_ids[] = $term->term_taxonomy_id; + }else{ + $term_not_ids[] = $term->term_taxonomy_id; + } + } + } + if( count($term_ids) > 0 || count($term_not_ids) > 0 ){ + if( EM_MS_GLOBAL ){ + $cat_conds = array(); + if( count($term_ids) > 0 ){ + $cat_conds[] = EM_EVENTS_TABLE.".event_id IN ( SELECT object_id FROM ".EM_META_TABLE." WHERE meta_value IN (".implode(',',$term_ids).") AND meta_name='event-category' )"; + } + if( count($term_not_ids) > 0 ){ + $cat_conds[] = EM_EVENTS_TABLE.".event_id NOT IN ( SELECT object_id FROM ".EM_META_TABLE." WHERE meta_value IN (".implode(',',$term_not_ids).") AND meta_name='event-category' )"; + } + $conditions['category'] = '('. implode(' || ', $cat_conds) .')'; + }else{ + $cat_conds = array(); + if( count($term_ids) > 0 ){ + $cat_conds[] = EM_EVENTS_TABLE.".post_id IN ( SELECT object_id FROM ".$wpdb->term_relationships." WHERE term_taxonomy_id IN (".implode(',',$term_ids).") )"; + } + if( count($term_not_ids) > 0 ){ + $cat_conds[] = EM_EVENTS_TABLE.".post_id NOT IN ( SELECT object_id FROM ".$wpdb->term_relationships." WHERE term_taxonomy_id IN (".implode(',',$term_not_ids).") )"; + } + $conditions['category'] = '('. implode(' || ', $cat_conds) .')'; + } + } + } + //Add conditions for tags + //Filter by tag, can be id or comma seperated ids + if ( !empty($tag) && !is_array($tag) ){ + //get the term id directly + $term = new EM_Tag($tag); + if( !empty($term->term_id) ){ + $conditions['tag'] = " ".EM_EVENTS_TABLE.".post_id IN ( SELECT object_id FROM ".$wpdb->term_relationships." WHERE term_taxonomy_id={$term->term_taxonomy_id} ) "; + } + }elseif( is_array($tag) ){ + $term_ids = array(); + foreach($tag as $tag_id){ + $term = new EM_Tag($tag_id); + if( !empty($term->term_id) ){ + $term_ids[] = $term->term_taxonomy_id; + } + } + if( count($term_ids) > 0 ){ + $conditions['tag'] = " ".EM_EVENTS_TABLE.".post_id IN ( SELECT object_id FROM ".$wpdb->term_relationships." WHERE term_taxonomy_id IN (".implode(',',$term_ids).") ) "; + } + } + + //If we want rsvped items, we usually check the event + if( $bookings == 1 ){ + $conditions['bookings'] = 'event_rsvp=1'; + } + //Default ownership belongs to an event, child objects can just overwrite this if needed. + if( is_numeric($owner) ){ + $conditions['owner'] = 'event_owner='.$owner; + }elseif( $owner == 'me' && is_user_logged_in() ){ + $conditions['owner'] = 'event_owner='.get_current_user_id(); + } + return apply_filters('em_object_build_sql_conditions', $conditions); + } + + /** + * WORK IN PROGRESS + * Builds an array of SQL query conditions based on regularly used arguments + * @param array $args + * @return array + */ + function build_wpquery_conditions( $args = array(), $wp_query ){ + global $wpdb; + + $args = apply_filters('em_object_build_sql_conditions_args',$args); + + //Format the arguments passed on + $scope = $args['scope'];//undefined variable warnings in ZDE, could just delete this (but dont pls!) + $recurring = $args['recurring']; + $recurrence = $args['recurrence']; + $category = $args['category']; + $tag = $args['tag']; + $location = $args['location']; + $bookings = $args['rsvp']; + $bookings = !empty($args['bookings']) ? $args['bookings']:$bookings; + $owner = $args['owner']; + $event = $args['event']; + $month = $args['month']; + $year = $args['year']; + $today = date('Y-m-d', current_time('timestamp')); + //Create the WHERE statement + + //Recurrences + $query = array(); + if( $recurrence > 0 ){ + $query[] = array( 'key' => '_recurrence_id', 'value' => $recurrence, 'compare' => '=' ); + } + //Dates - first check 'month', and 'year', and adjust scope if needed + if( !($month=='' && $year=='') ){ + //Sort out month range, if supplied an array of array(month,month), it'll check between these two months + if( self::array_is_numeric($month) ){ + $date_month_start = $month[0]; + $date_month_end = $month[1]; + }else{ + if( !empty($month) ){ + $date_month_start = $date_month_end = $month; + }else{ + $date_month_start = 1; + $date_month_end = 12; + } + } + //Sort out year range, if supplied an array of array(year,year), it'll check between these two years + if( self::array_is_numeric($year) ){ + $date_year_start = $year[0]; + $date_year_end = $year[1]; + }else{ + $date_year_start = $date_year_end = $year; + } + $date_start = $date_year_start."-".$date_month_start."-01"; + $date_end = date('Y-m-t', mktime(0,0,0,$date_month_end,1,$date_year_end)); + $scope = array($date_start,$date_end); //just modify the scope here + } + //No date requested, so let's look at scope + $time = current_time('timestamp'); + if ( preg_match ( "/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $scope ) ) { + $today = strtotime($scope); + $tomorrow = $today + 60*60*24-1; + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => array($today,$tomorrow), 'compare' => 'BETWEEN' ); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $tomorrow, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); + } + }elseif ( is_array($scope) || preg_match( "/^[0-9]{4}-[0-9]{2}-[0-9]{2},[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $scope ) ) { + if( !is_array($scope) ) $scope = explode(',',$scope); + if( !empty($scope[0]) ){ + $start = strtotime(date('Y-m-d',$scope[0])); + $end = !empty($scope[1]) ? strtotime(date('Y-m-t',$scope[1])):$start; + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => array($start,$end), 'type' => 'numeric', 'compare' => 'BETWEEN'); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $end, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $start, 'compare' => '>=' ); + } + } + }elseif ($scope == "future"){ + $today = strtotime(date('Y-m-d', $time)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '>=' ); + }else{ + $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); + } + }elseif ($scope == "past"){ + $today = strtotime(date('Y-m-d', $time)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '<' ); + }else{ + $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '<' ); + } + }elseif ($scope == "today"){ + $today = strtotime(date('Y-m-d', $time)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + //date must be only today + $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '='); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); + } + }elseif ($scope == "tomorrow"){ + $tomorrow = strtotime(date('Y-m-d',$time+60*60*24)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + //date must be only tomorrow + $query[] = array( 'key' => '_start_ts', 'value' => $tomorrow, 'compare' => '='); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $tomorrow, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $tomorrow, 'compare' => '>=' ); + } + }elseif ($scope == "month"){ + $start_month = strtotime(date('Y-m-d',$time)); + $end_month = strtotime(date('Y-m-t',$time)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => array($start_month,$end_month), 'type' => 'numeric', 'compare' => 'BETWEEN'); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $end_month, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $start_month, 'compare' => '>=' ); + } + }elseif ($scope == "next-month"){ + $start_month_timestamp = strtotime('+1 month', $time); //get the end of this month + 1 day + $start_month = strtotime(date('Y-m-1',$start_month_timestamp)); + $end_month = strtotime(date('Y-m-t',$start_month_timestamp)); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => array($start_month,$end_month), 'type' => 'numeric', 'compare' => 'BETWEEN'); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $end_month, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $start_month, 'compare' => '>=' ); + } + }elseif( preg_match('/(\d\d?)\-months/',$scope,$matches) ){ // next x months means this month (what's left of it), plus the following x months until the end of that month. + $months_to_add = $matches[1]; + $start_month = strtotime(date('Y-m-d',$time)); + $end_month = strtotime(date('Y-m-t',strtotime("+$months_to_add month", $time))); + if( get_option('dbem_events_current_are_past') && $wp_query->query_vars['post_type'] != 'event-recurring' ){ + $query[] = array( 'key' => '_start_ts', 'value' => array($start_month,$end_month), 'type' => 'numeric', 'compare' => 'BETWEEN'); + }else{ + $query[] = array( 'key' => '_start_ts', 'value' => $end_month, 'compare' => '<=' ); + $query[] = array( 'key' => '_end_ts', 'value' => $start_month, 'compare' => '>=' ); + } + } + + //Filter by Location - can be object, array, or id + if ( is_numeric($location) && $location > 0 ) { //Location ID takes precedence + $query[] = array( 'key' => '_location_id', 'value' => $location, 'compare' => '=' ); + }elseif ( self::array_is_numeric($location) ){ + $query[] = array( 'key' => '_location_id', 'value' => $location, 'compare' => 'IN' ); + }elseif ( is_object($location) && get_class($location)=='EM_Location' ){ //Now we deal with objects + $query[] = array( 'key' => '_location_id', 'value' => $location->location_id, 'compare' => '=' ); + }elseif ( is_array($location) && @get_class(current($location)=='EM_Location') ){ //we can accept array of ids or EM_Location objects + foreach($location as $EM_Location){ + $location_ids[] = $EM_Location->location_id; + } + $query[] = array( 'key' => '_location_id', 'value' => $location_ids, 'compare' => 'IN' ); + } + + //Filter by Event - can be object, array, or id + if ( is_numeric($event) && $event > 0 ) { //event ID takes precedence + $query[] = array( 'key' => '_event_id', 'value' => $event, 'compare' => '=' ); + }elseif ( self::array_is_numeric($event) ){ //array of ids + $query[] = array( 'key' => '_event_id', 'value' => $event, 'compare' => 'IN' ); + }elseif ( is_object($event) && get_class($event)=='EM_Event' ){ //Now we deal with objects + $query[] = array( 'key' => '_event_id', 'value' => $event->event_id, 'compare' => '=' ); + }elseif ( is_array($event) && @get_class(current($event)=='EM_Event') ){ //we can accept array of ids or EM_event objects + foreach($event as $EM_Event){ + $event_ids[] = $EM_Event->event_id; + } + $query[] = array( 'key' => '_event_id', 'value' => $event_ids, 'compare' => 'IN' ); + } + //country lookup + if( !empty($args['country']) ){ + $countries = em_get_countries(); + //we can accept country codes or names + if( in_array($args['country'], $countries) ){ + //we have a country name, + $country = $countries[$args['country']]."'"; + }elseif( array_key_exists($args['country'], $countries) ){ + //we have a country code + $country = $args['country']; + } + if(!empty($country)){ + //get loc ids + $ids = $wpdb->get_col("SELECT post_id FROM ".$wpdb->postmeta." WHERE meta_key='_location_country' AND meta_value='$country'"); + $query[] = array( 'key' => '_location_id', 'value' => $ids, 'compare' => 'IN' ); + } + } + //state lookup + if( !empty($args['state']) ){ + $ids = $wpdb->get_col($wpdb->prepare("SELECT post_id FROM ".$wpdb->postmeta." WHERE meta_key='_location_country' AND meta_value='%s'", $args['state'])); + if( is_array($wp_query->query_vars['post__in']) ){ + //remove values not in this array. + $wp_query->query_vars['post__in'] = array_intersect($wp_query->query_vars['post__in'], $ids); + }else{ + $wp_query->query_vars['post__in'] = $ids; + } + } + //state lookup + if( !empty($args['town']) ){ + $ids = $wpdb->get_col($wpdb->prepare("SELECT post_id FROM ".$wpdb->postmeta." WHERE meta_key='_location_town' AND meta_value='%s'", $args['town'])); + if( is_array($wp_query->query_vars['post__in']) ){ + //remove values not in this array. + $wp_query->query_vars['post__in'] = array_intersect($wp_query->query_vars['post__in'], $ids); + }else{ + $wp_query->query_vars['post__in'] = $ids; + } + } + //region lookup + if( !empty($args['region']) ){ + $ids = $wpdb->get_col($wpdb->prepare("SELECT post_id FROM ".$wpdb->postmeta." WHERE meta_key='_location_region' AND meta_value='%s'", $args['region'])); + if( is_array($wp_query->query_vars['post__in']) ){ + //remove values not in this array. + $wp_query->query_vars['post__in'] = array_intersect($wp_query->query_vars['post__in'], $ids); + }else{ + $wp_query->query_vars['post__in'] = $ids; + } + } + //Add conditions for category selection + //Filter by category, can be id or comma seperated ids + //TODO create an exclude category option + if ( is_numeric($category) && $category > 0 ){ + //get the term id directly + $term = new EM_Category($category); + if( !empty($term->term_id) ){ + if( EM_MS_GLOBAL ){ + $event_ids = $wpdb->get_col($wpdb->prepare("SELECT object_id FROM ".EM_META_TABLE." WHERE meta_value={$term->term_id} AND meta_key='event-category'")); + $query[] = array( 'key' => '_event_id', 'value' => $event_ids, 'compare' => 'IN' ); + }else{ + if( !is_array($wp_query->query_vars['tax_query']) ) $wp_query->query_vars['tax_query'] = array(); + $wp_query->query_vars['tax_query'] = array('taxonomy' => EM_TAXONOMY_CATEGORY, 'field'=>'id', 'terms'=>$term->term_id); + } + } + }elseif( self::array_is_numeric($category) ){ + $term_ids = array(); + foreach($category as $category_id){ + $term = new EM_Category($category_id); + if( !empty($term->term_id) ){ + $term_ids[] = $term->term_taxonomy_id; + } + } + if( count($term_ids) > 0 ){ + if( EM_MS_GLOBAL ){ + $event_ids = $wpdb->get_col($wpdb->prepare("SELECT object_id FROM ".EM_META_TABLE." WHERE meta_value IN (".implode(',',$term_ids).") AND meta_name='event-category'")); + $query[] = array( 'key' => '_event_id', 'value' => $event_ids, 'compare' => 'IN' ); + }else{ + if( !is_array($wp_query->query_vars['tax_query']) ) $wp_query->query_vars['tax_query'] = array(); + $wp_query->query_vars['tax_query'] = array('taxonomy' => EM_TAXONOMY_CATEGORY, 'field'=>'id', 'terms'=>$term_ids); + } + } + } + //Add conditions for tags + //Filter by tag, can be id or comma seperated ids + if ( !empty($tag) && !is_array($tag) ){ + //get the term id directly + $term = new EM_Tag($tag); + if( !empty($term->term_id) ){ + if( !is_array($wp_query->query_vars['tax_query']) ) $wp_query->query_vars['tax_query'] = array(); + $wp_query->query_vars['tax_query'] = array('taxonomy' => EM_TAXONOMY_TAXONOMY, 'field'=>'id', 'terms'=>$term->term_taxonomy_id); + } + }elseif( is_array($tag) ){ + $term_ids = array(); + foreach($tag as $tag_data){ + $term = new EM_Tag($tag_data); + if( !empty($term->term_id) ){ + $term_ids[] = $term->term_taxonomy_id; + } + } + if( count($term_ids) > 0 ){ + if( !is_array($wp_query->query_vars['tax_query']) ) $wp_query->query_vars['tax_query'] = array(); + $wp_query->query_vars['tax_query'] = array('taxonomy' => EM_TAXONOMY_TAXONOMY, 'field'=>'id', 'terms'=>$term_ids); + } + } + + //If we want rsvped items, we usually check the event + if( $bookings == 1 ){ + $query[] = array( 'key' => '_event_rsvp', 'value' => 1, 'compare' => '=' ); + } + //Default ownership belongs to an event, child objects can just overwrite this if needed. + if( is_numeric($owner) ){ + $wp_query->query_vars['author'] = $owner; + }elseif( $owner == 'me' && is_user_logged_in() ){ + $wp_query->query_vars['author'] = get_current_user_id(); + } + if( !empty($query) && is_array($query) ){ + $wp_query->query_vars['meta_query'] = $query; + } + return apply_filters('em_object_build_wp_query_conditions', $wp_query); + } + + function build_sql_orderby( $args, $accepted_fields, $default_order = 'ASC' ){ + //First, ORDER BY + $args = apply_filters('em_object_build_sql_orderby_args', $args); + $orderby = array(); + if(is_array($args['orderby'])){ + //Clean orderby array so we only have accepted values + foreach( $args['orderby'] as $key => $field ){ + if( array_key_exists($field, $accepted_fields) ){ + $orderby[] = $accepted_fields[$field]; + }elseif( in_array($field,$accepted_fields) ){ + $orderby[] = $field; + }else{ + unset($args['orderby'][$key]); + } + } + }elseif( $args['orderby'] != '' && array_key_exists($args['orderby'], $accepted_fields) ){ + $orderby[] = $accepted_fields[$args['orderby']]; + }elseif( $args['orderby'] != '' && in_array($args['orderby'], $accepted_fields) ){ + $orderby[] = $args['orderby']; + } + //ORDER + //If order is an array, we'll go through the orderby array and match the order values (in order of array) with orderby values + //If orders don't match up, or it's not ASC/DESC, the default events search in EM settings/options page will be used. + foreach($orderby as $i => $field){ + $orderby[$i] .= ' '; + if(is_array($args['order'])){ + if( in_array($args['order'][$i], array('ASC','DESC')) ){ + $orderby[$i] .= $args['order'][$i]; + }else{ + $orderby[$i] .= $default_order; + } + }else{ + $orderby[$i] .= ( in_array($args['order'], array('ASC','DESC')) ) ? $args['order'] : $default_order; + } + } + return apply_filters('em_object_build_sql_orderby', $orderby); + } + + /** + * Used by "single" objects, e.g. bookings, events, locations to verify if they have the capability to edit this or someone else's object. Relies on the fact that the object has an owner property with id of user (or admin capability must pass). + * @param string $owner_capability If the object has an owner property and the user id matches that, this capability will be checked for. + * @param string $admin_capability If the user isn't the owner of the object, this capability will be checked for. + * @return boolean + */ + function can_manage( $owner_capability = false, $admin_capability = false, $user_to_check = false ){ + global $em_capabilities_array; + if( $user_to_check ){ + $user = new WP_User($user_to_check); + if( empty($user->ID) ) $user = false; + } + //if multisite and supoer admin, just return true + if( is_multisite() && is_super_admin() ){ return true; } + //do they own this? + $is_owner = ( (!empty($this->owner) && ($this->owner == get_current_user_id()) || empty($this->id) || (!empty($user) && $this->owner == $user->ID)) ); + //now check capability + $can_manage = false; + if( $is_owner && (current_user_can($owner_capability) || (!empty($user) && $user->has_cap($owner_capability))) ){ + //user owns the object and can therefore manage it + $can_manage = true; + }elseif( array_key_exists($owner_capability, $em_capabilities_array) ){ + //currently user is not able to manage as they aren't the owner + $error_msg = $em_capabilities_array[$owner_capability]; + } + //admins have special rights + if( current_user_can($admin_capability) || (!empty($user) && $user->has_cap($admin_capability)) ){ + $can_manage = true; + }elseif( array_key_exists($admin_capability, $em_capabilities_array) ){ + $error_msg = $em_capabilities_array[$admin_capability]; + } + + if( !$can_manage && !$is_owner && !empty($error_msg) ){ + $this->add_error($error_msg); + } + return $can_manage; + } + + + function ms_global_switch(){ + if( EM_MS_GLOBAL && !is_main_site() ){ + //If in multisite global, then get the main blog categories + global $current_site; + switch_to_blog($current_site->blog_id); + } + } + + function ms_global_switch_back(){ + if( EM_MS_GLOBAL && !is_main_site() ){ + restore_current_blog(); + } + } + + /** + * Save an array into this class. + * If you provide a record from the database table corresponding to this class type it will add the data to this object. + * @param array $array + * @return null + */ + function to_object( $array = array(), $addslashes = false ){ + //Save core data + if( is_array($array) ){ + $array = apply_filters('em_to_object', $array); + foreach ( array_keys($this->fields) as $key ) { + if(array_key_exists($key, $array)){ + if( !is_object($array[$key]) && !is_array($array[$key]) ){ + $array[$key] = ($addslashes) ? stripslashes($array[$key]):$array[$key]; + }elseif( is_array($array[$key]) ){ + $array[$key] = ($addslashes) ? stripslashes_deep($array[$key]):$array[$key]; + } + $this->$key = $array[$key]; + } + } + } + } + + /** + * Copies all the properties to shorter property names for compatability, do not use the old properties. + */ + function compat_keys(){ + foreach($this->fields as $key => $fieldinfo){ + if(!empty($this->$key)) $this->$fieldinfo['name'] = $this->$key; + } + } + + /** + * Returns this object in the form of an array, useful for saving directly into a database table. + * @return array + */ + function to_array($db = false){ + $array = array(); + foreach ( $this->fields as $key => $val ) { + if($db){ + if( !empty($this->$key) || $this->$key === 0 || empty($val['null']) ){ + $array[$key] = $this->$key; + } + }else{ + $array[$key] = $this->$key; + } + } + return apply_filters('em_to_array', $array); + } + + + /** + * Function to retreive wpdb types for all fields, or if you supply an assoc array with field names as keys it'll return an equivalent array of wpdb types + * @param array $array + * @return array: + */ + function get_types($array = array()){ + $types = array(); + if( count($array)>0 ){ + //So we look at assoc array and find equivalents + foreach ($array as $key => $val){ + $types[] = $this->fields[$key]['type']; + } + }else{ + //Blank array, let's assume we're getting a standard list of types + foreach ($this->fields as $field){ + $types[] = $field['type']; + } + } + return apply_filters('em_object_get_types', $types, $this, $array); + } + + function get_fields( $inverted_array=false ){ + if( is_array($this->fields) ){ + $return = array(); + foreach($this->fields as $fieldName => $fieldArray){ + if($inverted_array){ + $return[$fieldName] = $fieldName; + }else{ + $return[$fieldName] = $fieldName; + } + } + return apply_filters('em_object_get_fields', $return, $this, $inverted_array); + } + return apply_filters('em_object_get_fields', array(), $this, $inverted_array); + } + + /** + * Sanitize text before inserting into database + * @param string $value + * @return string + */ + function sanitize( $value ) { + if( get_magic_quotes_gpc() ) + $value = stripslashes( $value ); + + //check if this function exists + if( function_exists( "mysql_real_escape_string" ) ) { + $value = mysql_real_escape_string( $value ); + //for PHP version < 4.3.0 use addslashes + } else { + $value = addslashes( $value ); + } + return apply_filters('em_object_sanitize', $value); + } + + /** + * Cleans arrays that contain id lists. Takes an array of items and will clean the keys passed in second argument so that if they keep numbers, explode comma-seperated numbers, and unsets the key if there's any other value + * @param array $array + * @param array $id_atts + */ + function clean_id_atts( $array = array(), $id_atts = array() ){ + if( is_array($array) && is_array($id_atts) ){ + foreach( $array as $key => $string ){ + if( in_array($key, $id_atts) ){ + //This is in the list of atts we want cleaned + if( is_numeric($string) ){ + $array[$key] = (int) $string; + }elseif( self::array_is_numeric($string) ){ + $array[$key] = $string; + }elseif( !is_array($string) && preg_match('/^([\-0-9],?)+$/', $string) ){ + $array[$key] = explode(',', $string); + }else{ + //No format we accept + unset($array[$key]); + } + } + } + } + return $array; + } + + /** + * Send an email and log errors in this object + * @param string $subject + * @param string $body + * @param string $email + * @return string + */ + function email_send($subject, $body, $email){ + global $EM_Mailer; + if( !is_object($EM_Mailer) ){ + $EM_Mailer = new EM_Mailer(); + } + if( !$EM_Mailer->send($subject,$body,$email) ){ + if( is_array($EM_Mailer->errors) ){ + foreach($EM_Mailer->errors as $error){ + $this->errors[] = $error; + } + }else{ + $this->errors[] = $EM_Mailer->errors; + } + return false; + } + return true; + } + + /** + * Will return true if this is a simple (non-assoc) numeric array, meaning it has at one or more numeric entries and nothing else + * @param mixed $array + * @return boolean + */ + function array_is_numeric($array){ + $results = array(); + if(is_array($array)){ + foreach($array as $key => $item){ + $results[] = (is_numeric($item)&&is_numeric($key)); + } + } + return (!in_array(false, $results) && count($results) > 0); + } + + /** + * Returns an array of errors in this object + * @return array + */ + function get_errors(){ + if(is_array($this->errors)){ + return $this->errors; + }else{ + return array(); + } + } + + /** + * Adds an error to the object + */ + function add_error($errors){ + if(!is_array($errors)){ $errors = array($errors); } //make errors var an array if it isn't already + if(!is_array($this->errors)){ $this->errors = array(); } //create empty array if this isn't an array + foreach($errors as $error){ + if( !in_array($error, $this->errors) ){ + $this->errors[] = $error; + } + } + } + + /** + * Converts an array to JSON format, useful for outputting data for AJAX calls. Uses a PHP4 fallback function, given it doesn't support json_encode(). + * @param array $array + * @return string + */ + function json_encode($array){ + if( function_exists("json_encode") ){ + $return = json_encode($array); + }else{ + $return = self::array_to_json($array); + } + if( isset($_REQUEST['callback']) && preg_match("/^jQuery[_a-zA-Z0-9]+$/", $_REQUEST['callback']) ){ + $return = $_REQUEST['callback']."($return)"; + } + return apply_filters('em_object_json_encode', $return, $array); + } + + /** + * Compatible json encoder function for PHP4 + * @param array $array + * @return string + */ + function array_to_json($array){ + //PHP4 Comapatability - This encodes the array into JSON. Thanks go to Andy - http://www.php.net/manual/en/function.json-encode.php#89908 + if( !is_array( $array ) ){ + $array = array(); + } + $associative = count( array_diff( array_keys($array), array_keys( array_keys( $array )) )); + if( $associative ){ + $construct = array(); + foreach( $array as $key => $value ){ + // We first copy each key/value pair into a staging array, + // formatting each key and value properly as we go. + // Format the key: + if( is_numeric($key) ){ + $key = "key_$key"; + } + $key = "'".addslashes($key)."'"; + // Format the value: + if( is_array( $value )){ + $value = $this->array_to_json( $value ); + }else if( is_bool($value) ) { + $value = ($value) ? "true" : "false"; + }else if( !is_numeric( $value ) || is_string( $value ) ){ + $value = "'".addslashes($value)."'"; + } + // Add to staging array: + $construct[] = "$key: $value"; + } + // Then we collapse the staging array into the JSON form: + $result = "{ " . implode( ", ", $construct ) . " }"; + } else { // If the array is a vector (not associative): + $construct = array(); + foreach( $array as $value ){ + // Format the value: + if( is_array( $value )){ + $value = $this->array_to_json( $value ); + } else if( !is_numeric( $value ) || is_string( $value ) ){ + $value = "'".addslashes($value)."'"; + } + // Add to staging array: + $construct[] = $value; + } + // Then we collapse the staging array into the JSON form: + $result = "[ " . implode( ", ", $construct ) . " ]"; + } + return $result; + } + + /* + * START IMAGE UPlOAD FUNCTIONS + * Used for various objects, so shared in one place + */ + /** + * Returns the type of image in lowercase, if $path is true, a base filename is returned which indicates where to store the file from the root upload folder. + * @param unknown_type $path + * @return mixed|mixed + */ + function get_image_type($path = false){ + $type = false; + switch( get_class($this) ){ + case 'EM_Event': + $dir = (EM_IMAGE_DS == '/') ? 'events/':''; + $type = 'event'; + break; + case 'EM_Location': + $dir = (EM_IMAGE_DS == '/') ? 'locations/':''; + $type = 'location'; + break; + case 'EM_Category': + $dir = (EM_IMAGE_DS == '/') ? 'categories/':''; + $type = 'category'; + break; + } + if($path){ + return apply_filters('em_object_get_image_type',$dir.$type, $path, $this); + } + return apply_filters('em_object_get_image_type',$type, $path, $this); + } + + function get_image_url($size = 'full'){ + $image_url = $this->image_url; + if( !empty($this->post_id) && (empty($this->image_url) || $size != 'full') ){ + $post_thumbnail_id = get_post_thumbnail_id( $this->post_id ); + $src = wp_get_attachment_image_src($post_thumbnail_id, $size); + if( !empty($src[0]) && $size == 'full' ){ + $image_url = $this->image_url = $src[0]; + }elseif(!empty($src[0])){ + $image_url = $src[0]; + } + //legacy image finder, annoying, but must be done + if( empty($image_url) ){ + $type = $this->get_image_type(); + if( get_class($this) == "EM_Event" ){ + $id = ( $this->is_recurrence() ) ? $this->recurrence_id:$this->event_id; //quick fix for recurrences + }elseif( get_class($this) == "EM_Location" ){ + $id = $this->location_id; + }else{ + $id = $this->id; + } + if( $type ){ + foreach($this->mime_types as $mime_type) { + $file_name = $this->get_image_type(true)."-{$id}.$mime_type"; + if( file_exists( EM_IMAGE_UPLOAD_DIR . $file_name) ) { + $image_url = $this->image_url = EM_IMAGE_UPLOAD_URI.$file_name; + } + } + } + } + } + return apply_filters('em_object_get_image_url', $image_url, $this); + } + + function image_delete($force_delete=true) { + $type = $this->get_image_type(); + if( $type ){ + if( $this->get_image_url() == '' ){ + $result = true; + }else{ + $post_thumbnail_id = get_post_thumbnail_id( $this->post_id ); + $delete_attachment = wp_delete_attachment($post_thumbnail_id, $force_delete); + if( $delete_attachment !== false ){ + //check legacy image + $type_id_name = $type.'_id'; + $file_name= EM_IMAGE_UPLOAD_DIR.$this->get_image_type(true)."-".$this->$type_id_name; + $result = false; + foreach($this->mime_types as $mime_type) { + if (file_exists($file_name.".".$mime_type)){ + $result = unlink($file_name.".".$mime_type); + $this->image_url = ''; + } + } + } + } + } + return apply_filters('em_object_get_image_url', $result, $this); + } + + function image_upload(){ + $type = $this->get_image_type(); + //Handle the attachment as a WP Post + $attachment = ''; + $user_to_check = ( !is_user_logged_in() && get_option('dbem_events_anonymous_submissions') ) ? get_option('dbem_events_anonymous_user'):false; + if ( !empty($_FILES[$type.'_image']['size']) && file_exists($_FILES[$type.'_image']['tmp_name']) && $this->image_validate() && $this->can_manage('upload_event_images','upload_event_images', $user_to_check) ) { + require_once(ABSPATH . "wp-admin" . '/includes/file.php'); + require_once(ABSPATH . "wp-admin" . '/includes/image.php'); + + $attachment = wp_handle_upload($_FILES[$type.'_image'], array('test_form'=>false), current_time('mysql')); + + if ( isset($attachment['error']) ){ + $this->add_error('Image Error: ' . $attachment['error'] ); + } + + /* Attach file to ticket */ + if ( count($this->errors) == 0 && $attachment ){ + $attachment_data = array( + 'post_mime_type' => $attachment['type'], + 'post_title' => $this->post_title, + 'post_content' => '', + 'post_status' => 'inherit' + ); + $attachment_id = wp_insert_attachment( $attachment_data, $attachment['file'], $this->post_id ); + $attachment_metadata = wp_generate_attachment_metadata( $attachment_id, $attachment['file'] ); + wp_update_attachment_metadata( $attachment_id, $attachment_metadata ); + //delete the old attachment + $this->image_delete(); + update_post_meta($this->post_id, '_thumbnail_id', $attachment_id); + return apply_filters('em_object_image_upload', true, $this); + }else{ + return apply_filters('em_object_image_upload', false, $this); + } + }elseif( !empty($_REQUEST[$type.'_image_delete']) ){ + $this->image_delete(); + } + return apply_filters('em_object_image_upload', false, $this); + } + + function image_validate(){ + $type = $this->get_image_type(); + if( $type ){ + if ( !empty($_FILES[$type.'_image']) && $_FILES[$type.'_image']['size'] > 0 ) { + if (is_uploaded_file($_FILES[$type.'_image']['tmp_name'])) { + list($width, $height, $mime_type, $attr) = getimagesize($_FILES[$type.'_image']['tmp_name']); + $maximum_size = get_option('dbem_image_max_size'); + if ($_FILES[$type.'_image']['size'] > $maximum_size){ + $this->add_error( __('The image file is too big! Maximum size:', 'dbem')." $maximum_size"); + } + $maximum_width = get_option('dbem_image_max_width'); + $maximum_height = get_option('dbem_image_max_height'); + $minimum_width = get_option('dbem_image_min_width'); + $minimum_height = get_option('dbem_image_min_height'); + if (($width > $maximum_width) || ($height > $maximum_height)) { + $this->add_error( __('The image is too big! Maximum size allowed:','dbem')." $maximum_width x $maximum_height"); + } + if (($width < $minimum_width) || ($height < $minimum_height)) { + $this->add_error( __('The image is too small! Minimum size allowed:','dbem')." $minimum_width x $minimum_height"); + } + if ( empty($mime_type) || !array_key_exists($mime_type, $this->mime_types) ){ + $this->add_error(__('The image is in a wrong format!','dbem')); + } + } + } + } + return apply_filters('em_object_image_validate', count($this->errors) == 0, $this); + } + /* + * END IMAGE UPlOAD FUNCTIONS + */ +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-people.php b/wp-content/plugins/events-manager/classes/em-people.php new file mode 100644 index 0000000..2e070ca --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-people.php @@ -0,0 +1,34 @@ +<?php +class EM_People extends EM_Object { + + /** + * Handles the action of someone being deleted on WordPress + * @param int $id + */ + function delete_user( $id ){ + global $wpdb; + if( current_user_can('delete_users') ){ + if( $_REQUEST['delete_option'] == 'reassign' && is_numeric($_REQUEST['reassign_user']) ){ + $wpdb->update(EM_EVENTS_TABLE, array('event_owner'=>$_REQUEST['reassign_user']), array('event_owner'=>$id)); + }else{ + //User is being deleted, so we delete their events and cancel their bookings. + $wpdb->query("DELETE FROM ".EM_EVENTS_TABLE." WHERE event_owner=$id"); + } + } + //set bookings to cancelled + $wpdb->update(EM_BOOKINGS_TABLE, array('booking_status'=>3, 'person_id'=>0, 'booking_comment'=>__('User deleted by administrators','dbem')), array('person_id'=>$id)); + } + + /** + * Adds phone number to contact info of users, compatible with previous phone field method + * @param $array + * @return array + */ + function user_contactmethods($array){ + $array['dbem_phone'] = __('Phone','dbem') . ' <span class="description">('. __('Events Manager','dbem') .')</span>'; + return $array; + } +} +add_action('delete_user', array('EM_People','delete_user'),10,1); +add_filter( 'user_contactmethods' , array('EM_People','user_contactmethods'),10,1); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-permalinks.php b/wp-content/plugins/events-manager/classes/em-permalinks.php new file mode 100644 index 0000000..0013011 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-permalinks.php @@ -0,0 +1,241 @@ +<?php + +if( !class_exists('EM_Permalinks') ){ + class EM_Permalinks { + static $em_queryvars = array( + 'event_id','event_slug', 'em_redirect', + 'location_id','location_slug', + 'person_id', + 'booking_id', + 'category_id', 'category_slug', + 'ticket_id', + 'calendar_day', + 'rss', 'ical', 'bookings_page','event_categories','event_locations' + ); + + function init(){ + add_filter('pre_update_option_dbem_events_page', array('EM_Permalinks','option_update')); + if( get_option('dbem_flush_needed') ){ + add_filter('init', array('EM_Permalinks','flush')); + } + add_filter('rewrite_rules_array',array('EM_Permalinks','rewrite_rules_array')); + add_filter('query_vars',array('EM_Permalinks','query_vars')); + add_action('parse_query',array('EM_Permalinks','init_objects'), 1); + add_action('parse_query',array('EM_Permalinks','redirection'), 1); + if( !defined('EM_EVENT_SLUG') ){ define('EM_EVENT_SLUG','event'); } + if( !defined('EM_LOCATION_SLUG') ){ define('EM_LOCATION_SLUG','location'); } + if( !defined('EM_LOCATIONS_SLUG') ){ define('EM_LOCATIONS_SLUG','locations'); } + if( !defined('EM_CATEGORY_SLUG') ){ define('EM_CATEGORY_SLUG','category'); } + if( !defined('EM_CATEGORIES_SLUG') ){ define('EM_CATEGORIES_SLUG','categories'); } + add_filter('post_type_archive_link',array('EM_Permalinks','post_type_archive_link'),10,2); + } + + function flush(){ + global $wp_rewrite; + $wp_rewrite->flush_rules(); + delete_option('dbem_flush_needed'); + } + + function post_type_archive_link($link, $post_type){ + if( $post_type == EM_POST_TYPE_EVENT ){ + if( get_option('dbem_events_page') ){ + $new_link = get_permalink(get_option('dbem_events_page')); + } + } + if( $post_type == EM_POST_TYPE_LOCATION ){ + if( get_option('dbem_locations_page') ){ + $new_link = get_permalink(get_option('dbem_locations_page')); + } + } + if( !empty($new_link) ){ + $link = $new_link; + } + return $link; + } + + /** + * will redirect old links to new link structures. + * @return mixed + */ + function redirection(){ + global $wpdb, $wp_rewrite, $post, $wp_query; + if( is_object($wp_query) && $wp_query->get('em_redirect') ){ + //is this a querystring url? + if( $wp_query->get('event_slug') ){ + $event = $wpdb->get_row('SELECT event_id, post_id FROM '.EM_EVENTS_TABLE." WHERE event_slug='".$wp_query->get('event_slug')."' AND (blog_id=".get_current_blog_id()." OR blog_id IS NULL OR blog_id=0)", ARRAY_A); + if( !empty($event) ){ + $EM_Event = em_get_event($event['event_id']); + $url = get_permalink($EM_Event->post_id); + } + }elseif( $wp_query->get('location_slug') ){ + $location = $wpdb->get_row('SELECT location_id, post_id FROM '.EM_LOCATIONS_TABLE." WHERE location_slug='".$wp_query->get('location_slug')."' AND (blog_id=".get_current_blog_id()." OR blog_id IS NULL OR blog_id=0)", ARRAY_A); + if( !empty($location) ){ + $EM_Location = em_get_location($location['location_id']); + $url = get_permalink($EM_Location->post_id); + } + }elseif( $wp_query->get('category_slug') ){ + $url = get_term_link($wp_query->get('category_slug'), EM_TAXONOMY_CATEGORY); + } + if(!empty($url)){ + wp_redirect($url,301); + exit(); + } + } + } + // Adding a new rule + function rewrite_rules_array($rules){ + //get the slug of the event page + $events_page_id = get_option ( 'dbem_events_page' ); + $events_page = get_post($events_page_id); + $em_rules = array(); + if( is_object($events_page) ){ + $events_slug = preg_replace('/\/$/', '', str_replace( trailingslashit(home_url()), '', get_permalink($events_page_id)) ); + $events_slug = ( !empty($events_slug) ) ? trailingslashit($events_slug) : $events_slug; + $em_rules[$events_slug.'(\d{4}-\d{2}-\d{2})$'] = 'index.php?pagename='.$events_slug.'&calendar_day=$matches[1]'; //event calendar date search + $em_rules[$events_slug.'rss$'] = 'index.php?pagename='.$events_slug.'&rss=1'; //rss page + $em_rules[$events_slug.'feed$'] = 'index.php?pagename='.$events_slug.'&rss=1'; //compatible rss page + if( EM_POST_TYPE_EVENT_SLUG.'/' == $events_slug ){ //won't apply on homepage + //make sure we hard-code rewrites for child pages of events + $child_posts = get_posts(array('post_type'=>'page', 'post_parent'=>$events_page->ID, 'numberposts'=>0)); + foreach($child_posts as $child_post){ + $em_rules[$events_slug.$child_post->post_name.'/?$'] = 'index.php?page_id='.$child_post->ID; //single event booking form with slug + } + } + if( EM_MS_GLOBAL && !get_site_option('dbem_ms_global_events_links', true) ){ + //MS Mode has slug also for global links + $em_rules[$events_slug.get_site_option('dbem_ms_events_slug',EM_EVENT_SLUG).'/(.+)$'] = 'index.php?pagename='.$events_slug.'&em_redirect=1&event_slug=$matches[1]'; //single event from subsite + } + //add redirection for backwards compatability + $em_rules[$events_slug.EM_EVENT_SLUG.'/(.+)$'] = 'index.php?pagename='.$events_slug.'&em_redirect=1&event_slug=$matches[1]'; //single event + $em_rules[$events_slug.EM_LOCATION_SLUG.'/(.+)$'] = 'index.php?pagename='.$events_slug.'&em_redirect=1&location_slug=$matches[1]'; //single location page + $em_rules[$events_slug.EM_CATEGORY_SLUG.'/(.+)$'] = 'index.php?pagename='.$events_slug.'&em_redirect=1&category_slug=$matches[1]'; //single category page slug + //add a rule that ensures that the events page is found and used over other pages + $em_rules[trim($events_slug,'/').'/?$'] = 'index.php?pagename='.trim($events_slug,'/') ; + }else{ + $events_slug = EM_POST_TYPE_EVENT_SLUG; + $em_rules[$events_slug.'/(\d{4}-\d{2}-\d{2})$'] = 'index.php?post_type='.EM_POST_TYPE_EVENT.'&calendar_day=$matches[1]'; //event calendar date search + if( !get_option( 'dbem_my_bookings_page') || !is_object(get_post(get_option( 'dbem_my_bookings_page'))) ){ //only added if bookings page isn't assigned + $em_rules[$events_slug.'/my\-bookings$'] = 'index.php?post_type='.EM_POST_TYPE_EVENT.'&bookings_page=1'; //page for users to manage bookings + } + //check for potentially conflicting posts with the same slug as events + $conflicting_posts = get_posts(array('name'=>EM_POST_TYPE_EVENT_SLUG, 'post_type'=>'any', 'numberposts'=>0)); + if( count($conflicting_posts) > 0 ){ //won't apply on homepage + foreach($conflicting_posts as $conflicting_post){ + //make sure we hard-code rewrites for child pages of events + $child_posts = get_posts(array('post_type'=>'any', 'post_parent'=>$conflicting_post->ID, 'numberposts'=>0)); + foreach($child_posts as $child_post){ + $em_rules[EM_POST_TYPE_EVENT_SLUG.'/'.$child_post->post_name.'/?$'] = 'index.php?page_id='.$child_post->ID; //single event booking form with slug + } + } + } + } + //make sure there's no page with same name as archives, that should take precedence as it can easily be deleted wp admin side + $em_query = new WP_Query(array('pagename'=>EM_POST_TYPE_EVENT_SLUG)); + if( $em_query->have_posts() ){ + $em_rules[trim(EM_POST_TYPE_EVENT_SLUG,'/').'/?$'] = 'index.php?pagename='.trim(EM_POST_TYPE_EVENT_SLUG,'/') ; + wp_reset_postdata(); + } + //make sure there's no page with same name as archives, that should take precedence as it can easily be deleted wp admin side + $em_query = new WP_Query(array('pagename'=>EM_POST_TYPE_LOCATION_SLUG)); + if( $em_query->have_posts() ){ + $em_rules[trim(EM_POST_TYPE_LOCATION_SLUG,'/').'/?$'] = 'index.php?pagename='.trim(EM_POST_TYPE_LOCATION_SLUG,'/') ; + wp_reset_postdata(); + } + //If in MS global mode and locations are linked on same site + if( EM_MS_GLOBAL && !get_site_option('dbem_ms_global_locations_links', true) ){ + $locations_page_id = get_option ( 'dbem_locations_page' ); + $locations_page = get_post($locations_page_id); + if( is_object($locations_page) ){ + $locations_slug = preg_replace('/\/$/', '', str_replace( trailingslashit(home_url()), '', get_permalink($locations_page_id) )); + $em_rules[$locations_slug.'/'.get_site_option('dbem_ms_locations_slug',EM_LOCATION_SLUG).'/(.+)$'] = 'index.php?pagename='.$locations_slug.'&location_slug=$matches[1]'; //single event booking form with slug + } + } + //add ical endpoint + $em_rules[EM_POST_TYPE_EVENT_SLUG."/([^/]+)/ical/?$"] = 'index.php?event=$matches[1]&ical=1'; + return $em_rules + $rules; + } + + /** + * Depreciated, use get_post_permalink() from now on or the output function with a placeholder + * Generate a URL. Pass each section of a link as a parameter, e.g. EM_Permalinks::url('event',$event_id); will create an event link. + * @param mixed + */ + function url(){ + global $wp_rewrite; + $args = func_get_args(); + $em_uri = get_permalink(get_option("dbem_events_page")); //PAGE URI OF EM + if ( $wp_rewrite->using_permalinks() /*&& !defined('EM_DISABLE_PERMALINKS')*/ ) { + $event_link = trailingslashit(trailingslashit($em_uri). implode('/',$args)); + } + return $event_link; + } + + /** + * checks if the events page has changed, and sets a flag to flush wp_rewrite. + * @param mixed $val + * @return mixed + */ + function option_update( $val ){ + if( get_option('dbem_events_page') != $val ){ + update_option('dbem_flush_needed',1); + } + return $val; + } + + // Adding the id var so that WP recognizes it + function query_vars($vars){ + foreach(self::$em_queryvars as $em_queryvar){ + array_push($vars, $em_queryvar); + } + return $vars; + } + + /** + * Not the "WP way" but for now this'll do! + */ + function init_objects(){ + global $wp_query, $wp_rewrite; + //check some homepage conditions + $events_page_id = get_option ( 'dbem_events_page' ); + if( is_object($wp_query) && $wp_query->is_home && 'page' == get_option('show_on_front') && get_option('page_on_front') == $events_page_id ){ + $wp_query->is_page = true; + $wp_query->is_home = false; + $wp_query->query_vars['page_id'] = $events_page_id; + } + if ( is_object($wp_query) && is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) { + foreach(self::$em_queryvars as $em_queryvar){ + if( $wp_query->get($em_queryvar) ) { + $_REQUEST[$em_queryvar] = $wp_query->get($em_queryvar); + } + } + } + //dirty rss condition + if( !empty($_REQUEST['rss']) ){ + $_REQUEST['rss_main'] = 'main'; + } + } + } + EM_Permalinks::init(); +} + +//Specific links that aren't generated by objects + +/** + * returns the url of the my bookings page, depending on the settings page and if BP is installed. + * @return string + */ +function em_get_my_bookings_url(){ + global $bp, $wp_rewrite; + if( is_object($bp) ){ + //get member url + return $bp->events->link.'attending/'; + }elseif( get_option('dbem_my_bookings_page') ){ + return get_permalink(get_option('dbem_my_bookings_page')); + }else{ + if( $wp_rewrite->using_permalinks() && !defined('EM_DISABLE_PERMALINKS') ){ + return trailingslashit(EM_URI)."my-bookings/"; + }else{ + return preg_match('/\?/',EM_URI) ? EM_URI.'&bookings_page=1':EM_URI.'?bookings_page=1'; + } + } +} diff --git a/wp-content/plugins/events-manager/classes/em-person.php b/wp-content/plugins/events-manager/classes/em-person.php new file mode 100644 index 0000000..5dad925 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-person.php @@ -0,0 +1,93 @@ +<?php +// TODO make person details more secure and integrate with WP user data +class EM_Person extends WP_User{ + + function EM_Person( $person_id = false, $username = false ){ + if( is_array($person_id) ){ + if( array_key_exists('person_id',$person_id) ){ + $person_id = $person_id['person_id']; + }elseif ( array_key_exists('user_id',$person_id) ){ + $person_id = $person_id['user_id']; + }else{ + $person_id = $person_id['ID']; + } + }elseif( is_object($person_id) && get_class($person_id) == 'WP_User'){ + $person_id = $person_id->ID; //create new object if passed a wp_user + } + if($username){ + parent::__construct($person_id, $username); + }elseif( is_numeric($person_id) && $person_id == 0 ){ + $this->ID = 0; + $this->display_name = 'Non-Registered User'; + $this->user_email = 'n/a'; + }else{ + parent::__construct($person_id); + } + $this->phone = get_metadata('user', $this->ID, 'dbem_phone', true); //extra field for EM + do_action('em_person',$this, $person_id, $username); + } + + function get_bookings($ids_only = false){ + global $wpdb; + $blog_condition = ''; + if( is_multisite() ){ + if( !is_main_site() ){ + //not the main blog, force single blog search + $blog_condition = "AND e.blog_id=".get_current_blog_id(); + }elseif(is_main_site() && !get_option('dbem_ms_global_events')){ + $blog_condition = "AND (e.blog_id=".get_current_blog_id().' OR e.blog_id IS NULL)'; + } + } + $EM_Booking = new EM_Booking(); //empty booking for fields + $results = $wpdb->get_results("SELECT b.".implode(', b.', array_keys($EM_Booking->fields))." FROM ".EM_BOOKINGS_TABLE." b, ".EM_EVENTS_TABLE." e WHERE e.event_id=b.event_id AND person_id={$this->ID} {$blog_condition} ORDER BY ".get_option('dbem_bookings_default_orderby','event_start_date')." ".get_option('dbem_bookings_default_order','ASC'),ARRAY_A); + $bookings = array(); + if($ids_only){ + foreach($results as $booking_data){ + $bookings[] = $booking_data['booking_id']; + } + return apply_filters('em_person_get_bookings', $bookings, $this); + }else{ + foreach($results as $booking_data){ + $bookings[] = new EM_Booking($booking_data); + } + return apply_filters('em_person_get_bookings', new EM_Bookings($bookings), $this); + } + } + + /** + * @return EM_Events + */ + function get_events(){ + global $wpdb; + $events = array(); + foreach( $this->get_bookings()->get_bookings() as $EM_Booking ){ + $events[$EM_Booking->event_id] = $EM_Booking->get_event(); + } + return apply_filters('em_person_get_events', $events); + } + + function display_summary(){ + ob_start(); + ?> + <table> + <tr> + <td><?php echo get_avatar($this->ID); ?></td> + <td style="padding-left:10px; vertical-align: top;"> + <strong><?php _e('Name','dbem'); ?></strong> : <a href="<?php echo EM_ADMIN_URL ?>&page=events-manager-bookings&person_id=<?php echo $this->ID; ?>"><?php echo $this->get_name() ?></a><br /><br /> + <strong><?php _e('Email','dbem'); ?></strong> : <?php echo $this->user_email; ?><br /><br /> + <strong><?php _e('Phone','dbem'); ?></strong> : <?php echo $this->phone; ?> + </td> + </tr> + </table> + <?php + return apply_filters('em_person_display_summary', ob_get_clean(), $this); + } + + function get_name(){ + $full_name = $this->user_firstname . " " . $this->user_lastname ; + $full_name = trim($full_name); + $name = !empty($full_name) ? $full_name : $this->display_name; + return apply_filters('em_person_get_name', $name, $this); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-tag-taxonomy.php b/wp-content/plugins/events-manager/classes/em-tag-taxonomy.php new file mode 100644 index 0000000..f8b5940 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-tag-taxonomy.php @@ -0,0 +1,63 @@ +<?php +class EM_Tag_Taxonomy{ + function init(){ + if( !is_admin() ){ + add_filter('archive_template', array('EM_Tag_Taxonomy','template')); + add_filter('category_template', array('EM_Tag_Taxonomy','template')); + add_filter('parse_query', array('EM_Tag_Taxonomy','parse_query')); + } + } + /** + * Overrides archive pages e.g. locations, events, event tags, event tags based on user settings + * @param string $template + * @return string + */ + function template($template){ + global $wp_query; + if( is_archive() ){ + if( !empty($wp_query->queried_object->taxonomy) && $wp_query->queried_object->taxonomy == EM_TAXONOMY_TAG && get_option('dbem_cp_tags_formats', true)){ + add_filter('the_content', array('EM_Tag_Taxonomy','the_content')); + $EM_Tag = em_get_tag($wp_query->queried_object->term_id); + $wp_query->posts = array(); + $wp_query->posts[0] = new stdClass(); + $wp_query->posts[0]->post_title = $EM_Tag->output(get_option('dbem_tag_page_title_format')); + $wp_query->posts[0]->post_content = ''; + $wp_query->post = $wp_query->posts[0]; + $wp_query->post_count = 1; + $wp_query->found_posts = 1; + $wp_query->max_num_pages = 1; + $template = locate_template(array('page.php','index.php'),false); //category becomes a page + } + } + return $template; + } + + function the_content($content){ + global $wp_query, $EM_Tag; + $EM_Tag = new EM_Tag($wp_query->queried_object); + ob_start(); + em_locate_template('templates/tag-single.php',true); + return ob_get_clean(); + } + + function parse_query( ){ + global $wp_query; + if( !empty($wp_query->tax_query->queries[0]['taxonomy']) && $wp_query->tax_query->queries[0]['taxonomy'] == EM_TAXONOMY_TAG) { + //Scope is future + $today = strtotime(date('Y-m-d', current_time('timestamp'))); + if( get_option('dbem_events_current_are_past') ){ + $wp_query->query_vars['meta_query'][] = array( 'key' => '_start_ts', 'value' => $today, 'compare' => '>=' ); + }else{ + $wp_query->query_vars['meta_query'][] = array( 'key' => '_end_ts', 'value' => $today, 'compare' => '>=' ); + } + if( get_option('dbem_tags_default_archive_orderby') == 'title'){ + $wp_query->query_vars['orderby'] = 'title'; + }else{ + $wp_query->query_vars['orderby'] = 'meta_value_num'; + $wp_query->query_vars['meta_key'] = get_option('dbem_tags_default_archive_orderby','_start_ts'); + } + $wp_query->query_vars['order'] = get_option('dbem_tags_default_archive_order','ASC'); + } + } +} +EM_Tag_Taxonomy::init(); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-tag.php b/wp-content/plugins/events-manager/classes/em-tag.php new file mode 100644 index 0000000..73fa2c1 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-tag.php @@ -0,0 +1,140 @@ +<?php +/** + * Get an tag in a db friendly way, by checking globals and passed variables to avoid extra class instantiations + * @param mixed $id + * @return EM_Tag + */ +function em_get_tag($id = false) { + global $EM_Tag; + //check if it's not already global so we don't instantiate again + if( is_object($EM_Tag) && get_class($EM_Tag) == 'EM_Tag' ){ + if( $EM_Tag->term_id == $id ){ + return $EM_Tag; + }elseif( is_object($id) && $EM_Tag->term_id == $id->term_id ){ + return $EM_Tag; + } + } + if( is_object($id) && get_class($id) == 'EM_Tag' ){ + return $id; + }else{ + return new EM_Tag($id); + } +} +class EM_Tag extends EM_Object { + //Taxonomy Fields + var $id = ''; + var $term_id; + var $name; + var $slug; + var $term_group; + var $term_taxonomy_id; + var $taxonomy; + var $description = ''; + var $parent = 0; + var $count; + + /** + * Gets data from POST (default), supplied array, or from the database if an ID is supplied + * @param $tag_data + * @return null + */ + function EM_Tag( $tag_data = false ) { + global $wpdb; + //Initialize + $tag = array(); + if( !empty($tag_data) ){ + //Load tag data + if( is_object($tag_data) && !empty($tag_data->taxonomy) && $tag_data->taxonomy == EM_TAXONOMY_TAG ){ + $tag = $tag_data; + }elseif( !is_numeric($tag_data) ){ + $tag = get_term_by('name', $tag_data, EM_TAXONOMY_TAG); + if( empty($tag) ){ + $tag = get_term_by('slug', $tag_data, EM_TAXONOMY_TAG); + } + }else{ + $tag = get_term_by('id', $tag_data, EM_TAXONOMY_TAG); + } + } + foreach($tag as $key => $value){ + $this->$key = $value; + } + $this->id = $this->term_id; //backward compatability + do_action('em_tag',$this, $tag_data); + } + + function get_url(){ + if( empty($this->link) ){ + $this->ms_global_switch(); + $this->link = get_term_link($this->slug, EM_TAXONOMY_TAG); + $this->ms_global_switch_back(); + if ( is_wp_error($this->link) ) $this->link = ''; + } + return $this->link; + } + + function output_single($target = 'html'){ + $format = get_option ( 'dbem_tag_page_format' ); + return apply_filters('em_tag_output_single', $this->output($format, $target), $this, $target); + } + + function output($format, $target="html") { + preg_match_all('/\{([a-zA-Z0-9_]+)\}([^{]+)\{\/[a-zA-Z0-9_]+\}/', $format, $conditionals); + if( count($conditionals[0]) > 0 ){ + foreach($conditionals[1] as $key => $condition){ + $format = str_replace($conditionals[0][$key], apply_filters('em_tag_output_condition', '', $condition, $conditionals[0][$key], $this), $format); + } + } + $tag_string = $format; + preg_match_all("/(#@?_?[A-Za-z0-9]+)({([a-zA-Z0-9,]+)})?/", $format, $placeholders); + foreach($placeholders[1] as $key => $result) { + $match = true; + $replace = ''; + $full_result = $placeholders[0][$key]; + switch( $result ){ + case '#_TAGNAME': + $replace = $this->name; + break; + case '#_TAGID': + $replace = $this->term_id; + break; + case '#_TAGLINK': + case '#_TAGURL': + $link = $this->get_url(); + $replace = ($result == '#_TAGURL') ? $link : '<a href="'.$link.'">'.esc_html($this->name).'</a>'; + break; + case '#_TAGEVENTSPAST': //depreciated, erroneous documentation, left for compatability + case '#_TAGEVENTSNEXT': //depreciated, erroneous documentation, left for compatability + case '#_TAGEVENTSALL': //depreciated, erroneous documentation, left for compatability + case '#_TAGPASTEVENTS': + case '#_TAGNEXTEVENTS': + case '#_TAGALLEVENTS': + //convert depreciated placeholders for compatability + $result = ($result == '#_TAGEVENTSPAST') ? '#_TAGPASTEVENTS':$result; + $result = ($result == '#_TAGEVENTSNEXT') ? '#_TAGNEXTEVENTS':$result; + $result = ($result == '#_TAGEVENTSALL') ? '#_TAGALLEVENTS':$result; + //forget it ever happened? :/ + if ($result == '#_TAGPASTEVENTS'){ $scope = 'past'; } + elseif ( $result == '#_TAGNEXTEVENTS' ){ $scope = 'future'; } + else{ $scope = 'all'; } + $events = EM_Events::get( array('tag'=>$this->term_id, 'scope'=>$scope) ); + if ( count($events) > 0 ){ + $replace .= get_option('dbem_tag_event_list_item_header_format','<ul>'); + foreach($events as $EM_Event){ + $replace .= $EM_Event->output(get_option('dbem_tag_event_list_item_format')); + } + $replace .= get_option('dbem_tag_event_list_item_footer_format'); + } else { + $replace = get_option('dbem_tag_no_events_message','</ul>'); + } + break; + default: + $replace = $full_result; + break; + } + $replace = apply_filters('em_tag_output_placeholder', $replace, $this, $full_result, $target); //USE WITH CAUTION! THIS MIGHT GET RENAMED + $tag_string = str_replace($full_result, $replace , $tag_string ); + } + return apply_filters('em_tag_output', $tag_string, $this, $format, $target); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-ticket-booking.php b/wp-content/plugins/events-manager/classes/em-ticket-booking.php new file mode 100644 index 0000000..96eb930 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-ticket-booking.php @@ -0,0 +1,224 @@ +<?php +class EM_Ticket_Booking extends EM_Object{ + //DB Fields + var $ticket_booking_id; + var $booking_id; + var $ticket_id; + var $ticket_booking_price; + var $ticket_booking_spaces; + var $fields = array( + 'ticket_booking_id' => array('name'=>'id','type'=>'%d'), + 'ticket_id' => array('name'=>'ticket_id','type'=>'%d'), + 'booking_id' => array('name'=>'booking_id','type'=>'%d'), + 'ticket_booking_price' => array('name'=>'price','type'=>'%f'), + 'ticket_booking_spaces' => array('name'=>'spaces','type'=>'%d') + ); + //Other Vars + /** + * Contains ticket object + * @var EM_Ticket + */ + var $ticket; + /** + * Contains the booking object of this + * @var EM_Booking + */ + var $booking; + var $required_fields = array( 'ticket_id', 'ticket_booking_spaces'); + + /** + * Creates ticket object and retreives ticket data (default is a blank ticket object). Accepts either array of ticket data (from db) or a ticket id. + * @param mixed $ticket_data + * @return null + */ + function EM_Ticket_Booking( $ticket_data = false ){ + if( $ticket_data !== false ){ + //Load ticket data + $ticket = array(); + if( is_array($ticket_data) ){ + $ticket = $ticket_data; + }elseif( is_numeric($ticket_data) ){ + //Retreiving from the database + global $wpdb; + $sql = "SELECT * FROM ". EM_TICKETS_BOOKINGS_TABLE ." WHERE ticket_booking_id ='$ticket_data'"; + $ticket = $wpdb->get_row($sql, ARRAY_A); + } + //Save into the object + $this->to_object($ticket); + $this->compat_keys(); + } + } + + /** + * Saves the ticket into the database, whether a new or existing ticket + * @return boolean + */ + function save(){ + global $wpdb; + $table = EM_TICKETS_BOOKINGS_TABLE; + do_action('em_ticket_booking_save_pre',$this); + //First the person + if($this->validate()){ + //Now we save the ticket + $this->booking_id = $this->get_booking()->booking_id; //event wouldn't exist before save, so refresh id + $data = $this->to_array(true); //add the true to remove the nulls + if($this->ticket_booking_id != ''){ + if($this->get_spaces() > 0){ + $where = array( 'ticket_booking_id' => $this->ticket_booking_id ); + $result = $wpdb->update($table, $data, $where, $this->get_types($data)); + $this->feedback_message = __('Changes saved','dbem'); + }else{ + $this->result = $this->delete(); + } + }else{ + if($this->get_spaces() > 0){ + //TODO better error handling + $result = $wpdb->insert($table, $data, $this->get_types($data)); + $this->ticket_booking_id = $wpdb->insert_id; + $this->feedback_message = __('Ticket booking created','dbem'); + }else{ + //no point saving a booking with no spaces + $result = false; + } + } + if( $result === false ){ + $this->feedback_message = __('There was a problem saving the ticket booking.', 'dbem'); + $this->errors[] = __('There was a problem saving the ticket booking.', 'dbem'); + } + $this->compat_keys(); + return apply_filters('em_ticket_booking_save', ( count($this->errors) == 0 ), $this); + }else{ + $this->feedback_message = __('There was a problem saving the ticket booking.', 'dbem'); + $this->errors[] = __('There was a problem saving the ticket booking.', 'dbem'); + return apply_filters('em_ticket_booking_save', false, $this); + } + return true; + } + + + /** + * Validates the ticket for saving. Should be run during any form submission or saving operation. + * @return boolean + */ + function validate(){ + $missing_fields = Array (); + foreach ( $this->required_fields as $field ) { + $true_field = $this->fields[$field]['name']; + if ( $this->$true_field == "") { + $missing_fields[] = $field; + } + } + if ( count($missing_fields) > 0){ + // TODO Create friendly equivelant names for missing fields notice in validation + $this->errors[] = __ ( 'Missing fields: ' ) . implode ( ", ", $missing_fields ) . ". "; + } + return apply_filters('em_event_validate', count($this->errors) == 0, $this ); + } + + /** + * Get the total number of spaces booked for this ticket within this booking. + * @return int + */ + function get_spaces(){ + return apply_filters('em_booking_get_spaces',$this->ticket_booking_spaces,$this); + } + + /** + * Gets the total price for this whole booking. Seting $force_reset to true will recheck spaces, even if previously done so. + * @param boolean $force_refresh + * @return float + */ + function get_price( $force_refresh=false, $format = false, $add_tax = 'x' ){ + if( $force_refresh || $this->ticket_booking_price == 0 || $add_tax !== 'x' || get_option('dbem_bookings_tax_auto_add') ){ + //get the ticket, calculate price on spaces + $this->ticket_booking_price = round($this->get_ticket()->get_price(false, $add_tax) * $this->ticket_booking_spaces, 2); + $this->ticket_booking_price = apply_filters('em_ticket_booking_get_price', $this->ticket_booking_price, $this, $add_tax); + } + if($format){ + return em_get_currency_formatted($this->ticket_booking_price); + } + return $this->ticket_booking_price; + } + + /** + * Smart event locator, saves a database read if possible. + */ + function get_booking(){ + global $EM_Booking; + if( is_object($this->booking) && get_class($this->booking)=='EM_Booking' && ($this->booking->booking_id == $this->booking_id || (empty($this->ticket_booking_id) && empty($this->booking_id))) ){ + return $this->booking; + }elseif( is_object($EM_Booking) && $EM_Booking->booking_id == $this->booking_id ){ + $this->booking = $EM_Booking; + }else{ + if(is_numeric($this->booking_id)){ + $this->booking = new EM_Booking($this->booking_id); + }else{ + $this->booking = new EM_Booking(); + } + } + return apply_filters('em_ticket_booking_get_booking', $this->booking, $this);; + } + + /** + * Gets the ticket object this booking belongs to, saves a reference in ticket property + * @return EM_Ticket + */ + function get_ticket(){ + global $EM_Ticket; + if( is_object($this->ticket) && get_class($this->ticket)=='EM_Ticket' && $this->ticket->ticket_id == $this->ticket_id ){ + return $this->ticket; + }elseif( is_object($EM_Ticket) && $EM_Ticket->ticket_id == $this->ticket_id ){ + $this->ticket = $EM_Ticket; + }else{ + $this->ticket = new EM_Ticket($this->ticket_id); + } + return $this->ticket; + } + + /** + * I wonder what this does.... + * @return boolean + */ + function delete(){ + global $wpdb; + $sql = $wpdb->prepare("DELETE FROM ". EM_TICKETS_BOOKINGS_TABLE . " WHERE ticket_booking_id=%d", $this->ticket_booking_id); + $result = $wpdb->query( $sql ); + return apply_filters('em_ticket_booking_delete', ($result !== false ), $this); + } + + + /** + * Get the html options for quantities to go within a <select> container + * @return string + */ + function get_spaces_options($zero_value = true){ + $available_spaces = $this->get_available_spaces(); + if( $available_spaces >= $this->min || ( empty($this->min) && $available_spaces > 0) ) { + ob_start(); + ?> + <select name="em_tickets[<?php echo $this->ticket_booking_id ?>][spaces]"> + <?php + $min = ($this->min > 0) ? $this->min:1; + $max = ($this->max > 0) ? $this->max:get_option('dbem_bookings_form_max'); + ?> + <?php if($zero_value) : ?><option>0</option><?php endif; ?> + <?php for( $i=$min; $i<=$max; $i++ ): ?> + <option><?php echo $i ?></option> + <?php endfor; ?> + </select> + <?php + return ob_get_clean(); + }else{ + return false; + } + + } + + /** + * Can the user manage this event? + */ + function can_manage(){ + return ( $this->get_booking()->can_manage() ); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-ticket.php b/wp-content/plugins/events-manager/classes/em-ticket.php new file mode 100644 index 0000000..b50e1ef --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-ticket.php @@ -0,0 +1,350 @@ +<?php +class EM_Ticket extends EM_Object{ + //DB Fields + var $ticket_id; + var $event_id; + var $ticket_name; + var $ticket_description; + var $ticket_price; + var $ticket_start; + var $ticket_end; + var $ticket_min; + var $ticket_max; + var $ticket_spaces = 10; + var $fields = array( + 'ticket_id' => array('name'=>'id','type'=>'%d'), + 'event_id' => array('name'=>'event_id','type'=>'%d'), + 'ticket_name' => array('name'=>'name','type'=>'%s'), + 'ticket_description' => array('name'=>'description','type'=>'%s','null'=>1), + 'ticket_price' => array('name'=>'price','type'=>'%f','null'=>1), + 'ticket_start' => array('name'=>'start','type'=>'%s','null'=>1), + 'ticket_end' => array('name'=>'end','type'=>'%s','null'=>1), + 'ticket_min' => array('name'=>'min','type'=>'%s','null'=>1), + 'ticket_max' => array('name'=>'max','type'=>'%s','null'=>1), + 'ticket_spaces' => array('name'=>'spaces','type'=>'%s','null'=>1) + ); + //Other Vars + /** + * Contains only bookings belonging to this ticket. + * @var EM_Booking + */ + var $bookings = array(); + var $required_fields = array('ticket_name'); + var $start_timestamp; + var $end_timestamp; + /** + * is this ticket limited by spaces allotted to this ticket? false if no limit (i.e. the events general limit of seats) + * @var unknown_type + */ + var $spaces_limit = true; + + /** + * Creates ticket object and retreives ticket data (default is a blank ticket object). Accepts either array of ticket data (from db) or a ticket id. + * @param mixed $ticket_data + * @return null + */ + function EM_Ticket( $ticket_data = false ){ + $this->ticket_name = __('Standard Ticket','dbem'); + if( $ticket_data !== false ){ + //Load ticket data + $ticket = array(); + if( is_array($ticket_data) ){ + $ticket = $ticket_data; + }elseif( is_numeric($ticket_data) ){ + //Retreiving from the database + global $wpdb; + $sql = "SELECT * FROM ". EM_TICKETS_TABLE ." WHERE ticket_id ='$ticket_data'"; + $ticket = $wpdb->get_row($sql, ARRAY_A); + } + //Save into the object + $this->to_object($ticket); + $this->start_timestamp = (!empty($ticket['ticket_start'])) ? strtotime($ticket['ticket_start']):false; + $this->end_timestamp = (!empty($ticket['ticket_end'])) ? strtotime($ticket['ticket_end']):false; + } + $this->compat_keys(); + do_action('em_ticket',$this, $ticket_data); + } + + function get_notes(){ + global $wpdb; + if( !is_array($this->notes) && !empty($this->ticket_id) ){ + $notes = $wpdb->get_results("SELECT * FROM ". EM_META_TABLE ." WHERE meta_key='ticket-note' AND object_id ='{$this->ticket_id}'", ARRAY_A); + foreach($notes as $note){ + $this->ticket_id[] = unserialize($note['meta_value']); + } + }elseif( empty($this->booking_id) ){ + $this->notes = array(); + } + return $this->notes; + } + + /** + * Saves the ticket into the database, whether a new or existing ticket + * @return boolean + */ + function save(){ + global $wpdb; + $table = EM_TICKETS_TABLE; + do_action('em_ticket_save_pre',$this); + //First the person + if($this->validate() && $this->can_manage() ){ + //Now we save the ticket + $data = $this->to_array(true); //add the true to remove the nulls + if($this->ticket_id != ''){ + //since currently wpdb calls don't accept null, let's build the sql ourselves. + $set_array = array(); + foreach( $this->fields as $field_name => $field ){ + if( empty($this->$field['name']) && $field['null'] ){ + $set_array[] = "{$field_name}=NULL"; + }else{ + $set_array[] = "{$field_name}='".$wpdb->escape($this->$field['name'])."'"; + } + } + $sql = "UPDATE $table SET ".implode(', ', $set_array)." WHERE ticket_id={$this->ticket_id}"; + $result = $wpdb->query($sql); + $this->feedback_message = __('Changes saved','dbem'); + }else{ + //TODO better error handling + $result = $wpdb->insert($table, $data, $this->get_types($data)); + $this->ticket_id = $wpdb->insert_id; + $this->feedback_message = __('Ticket created','dbem'); + } + if( $result === false ){ + $this->feedback_message = __('There was a problem saving the ticket.', 'dbem'); + $this->errors[] = __('There was a problem saving the ticket.', 'dbem'); + } + $this->compat_keys(); + return apply_filters('em_ticket_save', ( count($this->errors) == 0 ), $this); + }else{ + $this->feedback_message = __('There was a problem saving the ticket.', 'dbem'); + $this->errors[] = __('There was a problem saving the ticket.', 'dbem'); + return apply_filters('em_ticket_save', false, $this); + } + return true; + } + + /** + * Get posted data and save it into the object (not db) + * @return boolean + */ + function get_post(){ + //We are getting the values via POST or GET + global $allowedposttags; + do_action('em_location_get_post_pre', $this); + $this->ticket_id = ( !empty($_POST['ticket_id']) ) ? $_POST['ticket_id']:''; + $this->event_id = ( !empty($_POST['event_id']) ) ? $_POST['event_id']:''; + $this->ticket_name = ( !empty($_POST['ticket_name']) ) ? wp_kses_data(stripslashes($_POST['ticket_name'])):''; + $this->ticket_description = ( !empty($_POST['ticket_description']) ) ? wp_kses(stripslashes($_POST['ticket_description']), $allowedposttags):''; + $this->ticket_price = ( !empty($_POST['ticket_price']) ) ? $_POST['ticket_price']:''; + $this->ticket_start = ( !empty($_POST['ticket_start']) ) ? $_POST['ticket_start']:''; + $this->ticket_end = ( !empty($_POST['ticket_end']) ) ? $_POST['ticket_end']:''; + $this->start_timestamp = ( !empty($_POST['ticket_start']) ) ? strtotime($_POST['ticket_start']):''; + $this->end_timestamp = ( !empty($_POST['ticket_end']) ) ? strtotime($_POST['ticket_end']):''; + $this->ticket_min = ( !empty($_POST['ticket_min']) ) ? $_POST['ticket_min']:''; + $this->ticket_max = ( !empty($_POST['ticket_max']) ) ? $_POST['ticket_max']:''; + $this->ticket_spaces = ( !empty($_POST['ticket_spaces']) ) ? $_POST['ticket_spaces']:''; + $this->compat_keys(); + do_action('em_ticket_get_post', $this); + } + + + /** + * Validates the ticket for saving. Should be run during any form submission or saving operation. + * @return boolean + */ + function validate(){ + $missing_fields = Array (); + $this->errors = array(); + foreach ( $this->required_fields as $field ) { + $true_field = $this->fields[$field]['name']; + if ( $this->$true_field == "") { + $missing_fields[] = $field; + } + } + if( !empty($this->ticket_price) && !is_numeric($this->ticket_price) ){ + $this->add_error(__('Please enter a valid ticket price e.g. 10.50 (no currency signs)','dbem')); + } + if ( count($missing_fields) > 0){ + // TODO Create friendly equivelant names for missing fields notice in validation + $this->errors[] = __ ( 'Missing fields: ' ) . implode ( ", ", $missing_fields ) . ". "; + } + return apply_filters('em_event_validate', count($this->errors) == 0, $this ); + } + + function is_available(){ + $timestamp = current_time('timestamp'); + $EM_Event = $this->get_event(); + $available_spaces = $this->get_available_spaces(); + $condition_1 = (empty($this->ticket_start) || $this->start_timestamp <= $timestamp); + $condition_2 = $this->end_timestamp + 86400 >= $timestamp || empty($this->ticket_end); + $condition_3 = $EM_Event->start > $timestamp || strtotime($EM_Event->event_rsvp_date) > $timestamp; + if( $condition_1 && $condition_2 && $condition_3 ){ + //Time Constraints met, now quantities + if( $available_spaces > 0 && ($available_spaces >= $this->ticket_min || empty($this->ticket_min)) ){ + return apply_filters('em_ticket_is_available',true,$this); + } + } + return apply_filters('em_ticket_is_available',false,$this); + } + + /** + * Gets the total price for this ticket. + * @return float + */ + function get_price($format = false, $add_tax = 'x' ){ + $price = $this->ticket_price; + if( is_numeric(get_option('dbem_bookings_tax')) && get_option('dbem_bookings_tax') > 0 ){ + //tax could be added here + if( $add_tax === true || ($add_tax !== false && get_option('dbem_bookings_tax_auto_add')) ){ + $price = round($price * (1 + get_option('dbem_bookings_tax')/100),2); + } + } + $price = apply_filters('em_ticket_get_price',$price,$this); + if($format){ + return em_get_currency_formatted($price); + } + return $price; + } + + /** + * Get the total number of tickets (spaces) available, bearing in mind event-wide maxiumums and ticket priority settings. + * @return int + */ + function get_spaces(){ + return apply_filters('em_ticket_get_spaces',$this->ticket_spaces,$this); + } + + /** + * Returns the number of available spaces left in this ticket, bearing in mind event-wide restrictions, previous bookings, approvals and other tickets. + * @return int + */ + function get_available_spaces(){ + $event_available_spaces = $this->get_event()->get_bookings()->get_available_spaces(); + $ticket_available_spaces = $this->get_spaces() - $this->get_booked_spaces(); + $return = ($ticket_available_spaces <= $event_available_spaces) ? $ticket_available_spaces:$event_available_spaces; + return apply_filters('em_ticket_get_available_spaces', $return, $this); + } + + /** + * Returns the number of available spaces left in this ticket, bearing in mind event-wide restrictions, previous bookings, approvals and other tickets. + * @return int + */ + function get_booked_spaces($force_reload=false){ + //get all bookings for this event + $spaces = 0; + if( is_object($this->bookings) && $force_reload ){ + return $this->bookings; + } + foreach( $this->get_bookings()->get_bookings()->bookings as $EM_Booking ){ //get_bookings() is used twice so we get the confirmed (or all if confirmation disabled) bookings of this ticket's total bookings. + //foreach booking, get this ticket booking info if found + foreach($EM_Booking->get_tickets_bookings()->tickets_bookings as $EM_Ticket_Booking){ + if( $EM_Ticket_Booking->ticket_id == $this->ticket_id ){ + $spaces += $EM_Ticket_Booking->get_spaces(); + } + } + } + return apply_filters('em_ticket_get_available_spaces', $spaces, $this); + } + + /** + * Smart event locator, saves a database read if possible. + * @return EM_Event + */ + function get_event(){ + return em_get_event($this->event_id); + } + + /** + * returns array of EM_Booking objects that have this ticket + * @return EM_Bookings + */ + function get_bookings(){ + $bookings = array(); + foreach( $this->get_event()->get_bookings()->bookings as $EM_Booking ){ + foreach($EM_Booking->get_tickets_bookings()->tickets_bookings as $EM_Ticket_Booking){ + if( $EM_Ticket_Booking->ticket_id == $this->ticket_id ){ + $bookings[$EM_Booking->booking_id] = $EM_Booking; + } + } + } + $this->bookings = new EM_Bookings($bookings); + return $this->bookings; + } + + /** + * I wonder what this does.... + * @return boolean + */ + function delete(){ + global $wpdb; + $result = false; + if( $this->can_manage() ){ + if( count($this->get_bookings()->bookings) == 0 ){ + $sql = $wpdb->prepare("DELETE FROM ". EM_TICKETS_TABLE . " WHERE ticket_id=%d", $this->ticket_id); + $result = $wpdb->query( $sql ); + }else{ + $this->feedback_message = __('You cannot delete a ticket that has a booking on it.','dbem'); + $this->add_error($this->feedback_message); + return false; + } + } + return ( $result !== false ); + } + + /** + * Get the html options for quantities to go within a <select> container + * @return string + */ + function get_spaces_options($zero_value = true, $default_value = 0){ + $available_spaces = $this->get_available_spaces(); + if( $this->is_available() ) { + ob_start(); + ?> + <select name="em_tickets[<?php echo $this->ticket_id ?>][spaces]" class="em-ticket-select" id="em-ticket-spaces-<?php echo $this->ticket_id ?>"> + <?php + $min = ($this->ticket_min > 0) ? $this->ticket_min:1; + $max = ($this->ticket_max > 0) ? $this->ticket_max:get_option('dbem_bookings_form_max'); + ?> + <?php if($zero_value) : ?><option>0</option><?php endif; ?> + <?php for( $i=$min; $i<=$available_spaces && $i<=$max; $i++ ): ?> + <option <?php if($i == $default_value){ echo 'selected="selected"'; $shown_default = true; } ?>><?php echo $i ?></option> + <?php endfor; ?> + <?php if(empty($shown_default) && $default_value > 0 ): ?><option selected="selected"><?php echo $default_value; ?></option><?php endif; ?> + </select> + <?php + return apply_filters('em_ticket_get_spaces_options', ob_get_clean(), $zero_value, $default_value, $this); + }else{ + return false; + } + + } + + /** + * Can the user manage this event? + */ + function can_manage(){ + return $this->get_event()->can_manage('manage_bookings','manage_others_bookings'); + } + + /** + * Outputs properties with formatting + * @param string $property + * @return string + */ + function output_property($property){ + switch($property){ + case 'start': + $value = date_i18n( get_option('date_format'), $this->start_timestamp ); + break; + case 'end': + $value = date_i18n( get_option('date_format'), $this->end_timestamp ); + break; + break; + default: + $value = $this->$property; + break; + } + return apply_filters('em_ticket_output_property',$value,$this); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-tickets-bookings.php b/wp-content/plugins/events-manager/classes/em-tickets-bookings.php new file mode 100644 index 0000000..b02ba3e --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-tickets-bookings.php @@ -0,0 +1,285 @@ +<?php +/** + * Deals with the each ticket booked in a single booking + * @author marcus + * + */ +class EM_Tickets_Bookings extends EM_Object implements Iterator{ + + /** + * Array of EM_Ticket_Booking objects for a specific event + * @var array + */ + var $tickets_bookings = array(); + /** + * This object belongs to this booking object + * @var EM_Booking + */ + var $booking; + var $booking_id; + /** + * This object belongs to this booking object + * @var EM_Ticket + */ + var $ticket; + var $spaces; + var $price; + + /** + * Creates an EM_Tickets instance, + * @param EM_Event $event + * @return null + */ + function EM_Tickets_Bookings( $object = false ){ + global $wpdb; + if($object){ + if( is_object($object) && get_class($object) == "EM_Booking"){ + $this->booking = $object; + $sql = "SELECT * FROM ". EM_TICKETS_BOOKINGS_TABLE ." WHERE booking_id ='{$this->booking->booking_id}'"; + }elseif( is_object($object) && get_class($object) == "EM_Ticket"){ + $this->ticket = $object; + $sql = "SELECT * FROM ". EM_TICKETS_BOOKINGS_TABLE ." WHERE ticket_id ='{$this->ticket->ticket_id}'"; + }elseif( is_numeric($object) ){ + $sql = "SELECT * FROM ". EM_TICKETS_BOOKINGS_TABLE ." WHERE booking_id ='{$object}'"; + } + $tickets_bookings = $wpdb->get_results($sql, ARRAY_A); + //Get tickets belonging to this tickets booking. + foreach ($tickets_bookings as $ticket_booking){ + $EM_Ticket_Booking = new EM_Ticket_Booking($ticket_booking); + $EM_Ticket_Booking->booking = $this->booking; //save some calls + $this->tickets_bookings[] = $EM_Ticket_Booking; + } + } + do_action('em_tickets_bookings',$this, $object); + } + + /** + * Saves the ticket bookings for this booking into the database, whether a new or existing booking + * @return boolean + */ + function save(){ + global $wpdb; + do_action('em_tickets_bookings_save_pre',$this); + foreach( $this->tickets_bookings as $EM_Ticket_Booking ){ + $result = $EM_Ticket_Booking->save(); + if(!$result){ + $this->errors = array_merge($this->errors, $EM_Ticket_Booking->get_errors()); + } + } + if( count($this->errors) > 0 ){ + $this->feedback_message = __('There was a problem saving the booking.', 'dbem'); + $this->errors[] = __('There was a problem saving the booking.', 'dbem'); + return apply_filters('em_tickets_bookings_save', false, $this); + } + return apply_filters('em_tickets_bookings_save', true, $this); + } + + /** + * Add a booking into this event object, checking that there's enough space for the event + * @param EM_Ticket_Booking $EM_Ticket_Booking + * @return boolean + */ + function add( $EM_Ticket_Booking, $override = false ){ //note, $override was a quick fix, not necessarily permanent, so don't depend on it just yet + global $wpdb,$EM_Mailer; + //Does the ticket we want to book have enough spaeces? + if ( $override || $EM_Ticket_Booking->get_ticket()->get_available_spaces() >= $EM_Ticket_Booking->get_spaces() ) { + $ticket_booking_key = $this->has_ticket($EM_Ticket_Booking->ticket_id); + if( $ticket_booking_key !== false && is_object($this->tickets_bookings[$ticket_booking_key]) ){ + //previously booked ticket, so let's just replace it + $this->tickets_bookings[$ticket_booking_key]->ticket_booking_spaces = $EM_Ticket_Booking->get_spaces(); + $this->tickets_bookings[$ticket_booking_key]->get_price(true); + return apply_filters('em_tickets_bookings_add',true,$this); + }elseif( $EM_Ticket_Booking->get_spaces() > 0 ){ + //new ticket in booking + $this->tickets_bookings[] = $EM_Ticket_Booking; + $this->get_spaces(true); + $this->get_price(true); + return apply_filters('em_tickets_bookings_add',true,$this); + } + } else { + $this->errors[] = __('Booking cannot be made, not enough spaces available!', 'dbem'); + return apply_filters('em_tickets_bookings_add',false,$this); + } + return apply_filters('em_tickets_bookings_add',false,$this); + } + + /** + * Checks if this set has a specific ticket booked, returning the key of the ticket in the EM_Tickets_Bookings->ticket_bookings array + * @param int $ticket_id + * @return mixed + */ + function has_ticket( $ticket_id ){ + foreach ($this->tickets_bookings as $key => $EM_Ticket_Booking){ + if( $EM_Ticket_Booking->ticket_id == $ticket_id ){ + return apply_filters('em_tickets_has_ticket',$key,$this); + } + } + return apply_filters('em_tickets_has_ticket',false,$this); + } + + /** + * Smart event locator, saves a database read if possible. + */ + function get_booking(){ + global $EM_Booking; + $booking_id = $this->get_booking_id(); + if( is_object($this->booking) && get_class($this->booking)=='EM_Booking' && $this->booking->booking_id == $booking_id ){ + return $this->booking; + }elseif( is_object($EM_Booking) && $EM_Booking->booking_id == $booking_id ){ + $this->booking = $EM_Booking; + }else{ + if(is_numeric($booking_id)){ + $this->booking = new EM_Booking($booking_id); + }else{ + $this->booking = new EM_Booking(); + } + } + return apply_filters('em_tickets_bookings_get_booking', $this->booking, $this);; + } + + function get_booking_id(){ + if( empty($this->booking_id) && count($this->tickets_bookings) > 0 ){ + foreach($this->tickets_bookings as $EM_Ticket_Booking){ break; } //get first array item + $this->booking_id = $EM_Ticket_Booking->get_booking()->booking_id; + return apply_filters('em_tickets_bookings_get_booking_id', $this->booking_id, $this); + } + return apply_filters('em_tickets_bookings_get_booking_id', $this->booking_id, $this); + } + + /** + * Delete all ticket bookings + * @return boolean + */ + function delete(){ + global $wpdb; + if( $this->get_booking()->can_manage() ){ + $result = $wpdb->query("DELETE FROM ".EM_TICKETS_BOOKINGS_TABLE." WHERE booking_id='{$this->get_booking_id()}'"); + //echo "<pre>";print_r($this->get_booking());echo "</pre>"; + }else{ + //FIXME ticket bookings + $ticket_ids = array(); + foreach( $this->tickets_bookings as $EM_Ticket_Booking ){ + if( $EM_Ticket_Booking->can_manage() ){ + $tickets_bookings_ids[] = $EM_Ticket_Booking->booking_id; + }else{ + $this->errors[] = sprintf(__('You do not have the rights to manage this %s.','dbem'),__('Booking','dbem')); + } + } + if(count($ticket_ids) > 0){ + $result = $wpdb->query("DELETE FROM ".EM_TICKETS_BOOKINGS_TABLE." WHERE ticket_booking_id IN (".implode(',',$ticket_ids).")"); + } + } + return apply_filters('em_tickets_bookings_get_booking_id', ($result == true), $this); + } + + /** + * Go through the tickets in this object and validate them + */ + function validate(){ + $errors = array(); + foreach($this->tickets_bookings as $EM_Ticket_Booking){ + $errors[] = $EM_Ticket_Booking->validate(); + } + return apply_filters('em_tickets_bookings_validate', !in_array(false, $errors), $this); + } + + /** + * Get the total number of spaces booked in this booking. Seting $force_reset to true will recheck spaces, even if previously done so. + * @param unknown_type $force_refresh + * @return mixed + */ + function get_spaces( $force_refresh=false ){ + if($force_refresh || $this->spaces == 0){ + $spaces = 0; + foreach($this->tickets_bookings as $EM_Ticket_Booking){ + $spaces += $EM_Ticket_Booking->get_spaces(); + } + $this->spaces = $spaces; + } + return apply_filters('em_booking_get_spaces',$this->spaces,$this); + } + + /** + * Gets the total price for this whole booking by adding up subtotals of booked tickets. Seting $force_reset to true will recheck spaces, even if previously done so. + * @param boolean $force_refresh + * @return float + */ + function get_price( $force_refresh=false, $format = false, $add_tax = 'x' ){ + if( $force_refresh || $this->price == 0 || $add_tax !== 'x' || get_option('dbem_bookings_tax_auto_add') ){ + $price = 0; + foreach($this->tickets_bookings as $EM_Ticket_Booking){ + $price += $EM_Ticket_Booking->get_price($force_refresh, false, $add_tax); + } + $this->price = apply_filters('em_tickets_bookings_get_price', $price, $this, $add_tax); + } + if($format){ + return em_get_currency_formatted($this->price); + } + return $this->price; + } + + /** + * Goes through each ticket and populates it with the bookings made + */ + function get_ticket_bookings(){ + foreach( $this->tickets as $EM_Ticket ){ + $EM_Ticket->get_bookings(); + } + } + + /* Overrides EM_Object method to apply a filter to result + * @see wp-content/plugins/events-manager/classes/EM_Object#build_sql_conditions() + */ + function build_sql_conditions( $args = array() ){ + $conditions = apply_filters( 'em_tickets_build_sql_conditions', parent::build_sql_conditions($args), $args ); + if( is_numeric($args['status']) ){ + $conditions['status'] = 'ticket_status='.$args['status']; + } + return apply_filters('em_tickets_bookings_build_sql_conditions', $conditions, $args); + } + + /* Overrides EM_Object method to apply a filter to result + * @see wp-content/plugins/events-manager/classes/EM_Object#build_sql_orderby() + */ + function build_sql_orderby( $args, $accepted_fields, $default_order = 'ASC' ){ + return apply_filters( 'em_tickets_bookings_build_sql_orderby', parent::build_sql_orderby($args, $accepted_fields, get_option('dbem_events_default_order')), $args, $accepted_fields, $default_order ); + } + + /* + * Adds custom Events search defaults + * @param array $array + * @return array + * @uses EM_Object#get_default_search() + */ + function get_default_search( $array = array() ){ + $defaults = array( + 'status' => false, + 'person' => true //to add later, search by person's tickets... + ); + $defaults['owner'] = !current_user_can('manage_others_bookings') ? get_current_user_id():false; + return apply_filters('em_tickets_bookings_get_default_search', parent::get_default_search($defaults,$array), $array, $defaults); + } + + //Iterator Implementation + public function rewind(){ + reset($this->tickets_bookings); + } + public function current(){ + $var = current($this->tickets_bookings); + return $var; + } + public function key(){ + $var = key($this->tickets_bookings); + return $var; + } + public function next(){ + $var = next($this->tickets_bookings); + return $var; + } + public function valid(){ + $key = key($this->tickets_bookings); + $var = ($key !== NULL && $key !== FALSE); + return $var; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/em-tickets.php b/wp-content/plugins/events-manager/classes/em-tickets.php new file mode 100644 index 0000000..def2999 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/em-tickets.php @@ -0,0 +1,232 @@ +<?php +/** + * Deals with the ticket info for an event + * @author marcus + * + */ +class EM_Tickets extends EM_Object implements Iterator{ + + /** + * Array of EM_Ticket objects for a specific event + * @var array + */ + var $tickets = array(); + /** + * @var int + */ + var $event_id; + /** + * @var EM_Booking + */ + var $booking; + var $spaces; + + + /** + * Creates an EM_Tickets instance, + * @param EM_Event $event + * @return null + */ + function EM_Tickets( $object = false ){ + global $wpdb; + if( is_numeric($object) || (is_object($object) && in_array(get_class($object), array("EM_Event","EM_Booking"))) ){ + $this->event_id = (is_object($object)) ? $object->event_id:$object; + $sql = "SELECT * FROM ". EM_TICKETS_TABLE ." WHERE event_id ='{$this->event_id}' ORDER BY ".get_option('dbem_bookings_tickets_orderby'); + $tickets = $wpdb->get_results($sql, ARRAY_A); + foreach ($tickets as $ticket){ + $EM_Ticket = new EM_Ticket($ticket); + $EM_Ticket->event_id = $this->event_id; + $this->tickets[] = $EM_Ticket; + } + }elseif( is_array($object) ){ //expecting an array of EM_Ticket objects or ticket db array + if( is_object(current($object)) && get_class(current($object)) == 'EM_Ticket' ){ + $this->tickets = $object; + }else{ + foreach($object as $ticket){ + $EM_Ticket = new EM_Ticket($ticket); + $EM_Ticket->event_id = $this->event_id; + $this->tickets[] = $EM_Ticket; + } + } + } + do_action('em_tickets', $this, $object); + } + + /** + * @return EM_Event + */ + function get_event(){ + global $EM_Event; + if( is_object($EM_Event) && $EM_Event->event_id == $this->event_id ){ + return $EM_Event; + }else{ + return new EM_Event($this->event_id); + } + } + + /** + * does this ticket exist? + * @return bool + */ + function has_ticket($ticket_id){ + foreach( $this->tickets as $EM_Ticket){ + if($EM_Ticket->ticket_id == $ticket_id){ + return apply_filters('em_tickets_has_ticket',true, $EM_Ticket, $this); + } + } + return apply_filters('em_tickets_has_ticket',false, false,$this); + } + + /** + * Get the first EM_Ticket object in this instance. Returns false if no tickets available. + * @return EM_Ticket + */ + function get_first(){ + if( count($this->tickets) > 0 ){ + foreach($this->tickets as $EM_Ticket){ + return $EM_Ticket; + } + }else{ + return false; + } + } + + /** + * Delete tickets in thie object + * @return boolean + */ + function delete(){ + global $wpdb; + //get all the ticket ids + $result = false; + $ticket_ids = array(); + foreach( $this->tickets as $EM_Ticket ){ + $ticket_ids[] = $EM_Ticket->ticket_id; + } + //check that tickets don't have bookings + if(count($ticket_ids) > 0){ + $bookings = $wpdb->get_var("SELECT COUNT(*) FROM ". EM_TICKETS_BOOKINGS_TABLE." WHERE ticket_id IN (".implode(',',$ticket_ids).")"); + if( $bookings > 0 ){ + $result = false; + $this->add_error(__('You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first.','dbem')); + }else{ + $result = $wpdb->query("DELETE FROM ".EM_TICKETS_TABLE." WHERE event_id IN (".implode(',',$ticket_ids).")"); + } + } + return ($result !== false); + } + + /** + * Retrieve multiple ticket info via POST + * @return boolean + */ + function get_post(){ + //Build Event Array + do_action('em_tickets_get_post_pre', $this); + $this->tickets = array(); //clean current tickets out + if( !empty($_POST['em_tickets']) && is_array($_POST['em_tickets']) ){ + //get all ticket data and create objects + global $allowedposttags; + foreach($_POST['em_tickets'] as $ticket_data){ + $ticket_data['ticket_name'] = ( !empty($ticket_data['ticket_name']) ) ? wp_kses_data(stripslashes($ticket_data['ticket_name'])):''; + $ticket_data['ticket_description'] = ( !empty($ticket_data['ticket_description']) ) ? wp_kses(stripslashes($ticket_data['ticket_description']), $allowedposttags):''; + $EM_Ticket = new EM_Ticket($ticket_data); + $this->tickets[] = $EM_Ticket; + } + }else{ + //we create a blank standard ticket + $EM_Ticket = new EM_Ticket(array( + 'event_id' => $this->event_id, + 'ticket_name' => __('Standard','dbem') + )); + $this->tickets[] = $EM_Ticket; + } + return apply_filters('em_tickets_get_post', $this->validate(), $this); + } + + /** + * Go through the tickets in this object and validate them + */ + function validate(){ + $this->errors = array(); + foreach($this->tickets as $EM_Ticket){ + if( !$EM_Ticket->validate() ){ + $this->add_error($EM_Ticket->get_errors()); + } + } + return apply_filters('em_tickets_validate', count($this->errors) == 0, $this); + } + + /** + * Save tickets into DB + */ + function save(){ + $errors = array(); + foreach( $this->tickets as $EM_Ticket ){ + /* @var $EM_Ticket EM_Ticket */ + $EM_Ticket->event_id = $this->event_id; //pass on saved event_data + $errors[] = $EM_Ticket->save(); + } + return apply_filters('em_tickets_save', !in_array(false, $errors), $this); + } + + /** + * Goes through each ticket and populates it with the bookings made + */ + function get_ticket_bookings(){ + foreach( $this->tickets as $EM_Ticket ){ + $EM_Ticket->get_bookings(); + } + } + + /** + * Get the total number of spaces this event has. This will show the lower value of event global spaces limit or total ticket spaces. Setting $force_refresh to true will recheck spaces, even if previously done so. + * @param boolean $force_refresh + * @return int + */ + function get_spaces( $force_refresh=false ){ + $spaces = 0; + if($force_refresh || $this->spaces == 0){ + foreach( $this->tickets as $EM_Ticket ){ + /* @var $EM_Ticket EM_Ticket */ + $spaces += $EM_Ticket->get_spaces(); + } + $this->spaces = $spaces; + } + return apply_filters('em_booking_get_spaces',$this->spaces,$this); + } + + /** + * Returns the collumns used in ticket public pricing tables/forms + * @param unknown_type $EM_Event + */ + function get_ticket_collumns($EM_Event = false){ + if( !$EM_Event ) $EM_Event = $this->get_event(); + $collumns = array( 'type' => __('Ticket Type','dbem'), 'price' => __('Price','dbem'), 'spaces' => __('Spaces','dbem')); + if( $EM_Event->is_free() ) unset($collumns['price']); //add event price + return apply_filters('em_booking_form_tickets_cols', $collumns, $EM_Event ); + } + + //Iterator Implementation + public function rewind(){ + reset($this->tickets); + } + public function current(){ + $var = current($this->tickets); + return $var; + } + public function key(){ + $var = key($this->tickets); + return $var; + } + public function next(){ + $var = next($this->tickets); + return $var; + } + public function valid(){ + $key = key($this->tickets); + $var = ($key !== NULL && $key !== FALSE); + return $var; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/class.phpmailer.php b/wp-content/plugins/events-manager/classes/phpmailer/class.phpmailer.php new file mode 100644 index 0000000..f8b1842 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/class.phpmailer.php @@ -0,0 +1,2473 @@ +<?php +/*~ class.phpmailer.php +.---------------------------------------------------------------------------. +| Software: PHPMailer - PHP email class | +| Version: 5.2 | +| Site: https://code.google.com/a/apache-extras.org/p/phpmailer/ | +| ------------------------------------------------------------------------- | +| Admin: Jim Jagielski (project admininistrator) | +| Authors: Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net | +| : Marcus Bointon (coolbru) coolbru@users.sourceforge.net | +| : Jim Jagielski (jimjag) jimjag@gmail.com | +| Founder: Brent R. Matzelle (original founder) | +| Copyright (c) 2010-2011, Jim Jagielski. All Rights Reserved. | +| Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved. | +| Copyright (c) 2001-2003, Brent R. Matzelle | +| ------------------------------------------------------------------------- | +| License: Distributed under the Lesser General Public License (LGPL) | +| http://www.gnu.org/copyleft/lesser.html | +| This program is distributed in the hope that it will be useful - WITHOUT | +| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | +| FITNESS FOR A PARTICULAR PURPOSE. | +'---------------------------------------------------------------------------' +*/ + +/** + * PHPMailer - PHP email transport class + * NOTE: Requires PHP version 5 or later + * @package PHPMailer + * @author Andy Prevost + * @author Marcus Bointon + * @author Jim Jagielski + * @copyright 2010 - 2011 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @version $Id: class.phpmailer.php 450 2010-06-23 16:46:33Z coolbru $ + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + */ + +if (version_compare(PHP_VERSION, '5.0.0', '<') ) exit("Sorry, this version of PHPMailer will only run on PHP version 5 or greater!\n"); + +class EM_PHPMailer { + + ///////////////////////////////////////////////// + // PROPERTIES, PUBLIC + ///////////////////////////////////////////////// + + /** + * Email priority (1 = High, 3 = Normal, 5 = low). + * @var int + */ + public $Priority = 3; + + /** + * Sets the CharSet of the message. + * @var string + */ + public $CharSet = 'iso-8859-1'; + + /** + * Sets the Content-type of the message. + * @var string + */ + public $ContentType = 'text/plain'; + + /** + * Sets the Encoding of the message. Options for this are + * "8bit", "7bit", "binary", "base64", and "quoted-printable". + * @var string + */ + public $Encoding = '8bit'; + + /** + * Holds the most recent mailer error message. + * @var string + */ + public $ErrorInfo = ''; + + /** + * Sets the From email address for the message. + * @var string + */ + public $From = 'root@localhost'; + + /** + * Sets the From name of the message. + * @var string + */ + public $FromName = 'Root User'; + + /** + * Sets the Sender email (Return-Path) of the message. If not empty, + * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode. + * @var string + */ + public $Sender = ''; + + /** + * Sets the Subject of the message. + * @var string + */ + public $Subject = ''; + + /** + * Sets the Body of the message. This can be either an HTML or text body. + * If HTML then run IsHTML(true). + * @var string + */ + public $Body = ''; + + /** + * Sets the text-only body of the message. This automatically sets the + * email to multipart/alternative. This body can be read by mail + * clients that do not have HTML email capability such as mutt. Clients + * that can read HTML will view the normal Body. + * @var string + */ + public $AltBody = ''; + + /** + * Stores the complete compiled MIME message body. + * @var string + * @access protected + */ + protected $MIMEBody = ''; + + /** + * Stores the complete compiled MIME message headers. + * @var string + * @access protected + */ + protected $MIMEHeader = ''; + + /** + * Sets word wrapping on the body of the message to a given number of + * characters. + * @var int + */ + public $WordWrap = 0; + + /** + * Method to send mail: ("mail", "sendmail", or "smtp"). + * @var string + */ + public $Mailer = 'mail'; + + /** + * Sets the path of the sendmail program. + * @var string + */ + public $Sendmail = '/usr/sbin/sendmail'; + + /** + * Path to PHPMailer plugins. Useful if the SMTP class + * is in a different directory than the PHP include path. + * @var string + */ + public $PluginDir = ''; + + /** + * Sets the email address that a reading confirmation will be sent. + * @var string + */ + public $ConfirmReadingTo = ''; + + /** + * Sets the hostname to use in Message-Id and Received headers + * and as default HELO string. If empty, the value returned + * by SERVER_NAME is used or 'localhost.localdomain'. + * @var string + */ + public $Hostname = ''; + + /** + * Sets the message ID to be used in the Message-Id header. + * If empty, a unique id will be generated. + * @var string + */ + public $MessageID = ''; + + ///////////////////////////////////////////////// + // PROPERTIES FOR SMTP + ///////////////////////////////////////////////// + + /** + * Sets the SMTP hosts. All hosts must be separated by a + * semicolon. You can also specify a different port + * for each host by using this format: [hostname:port] + * (e.g. "smtp1.example.com:25;smtp2.example.com"). + * Hosts will be tried in order. + * @var string + */ + public $Host = 'localhost'; + + /** + * Sets the default SMTP server port. + * @var int + */ + public $Port = 25; + + /** + * Sets the SMTP HELO of the message (Default is $Hostname). + * @var string + */ + public $Helo = ''; + + /** + * Sets connection prefix. + * Options are "", "ssl" or "tls" + * @var string + */ + public $SMTPSecure = ''; + + /** + * Sets SMTP authentication. Utilizes the Username and Password variables. + * @var bool + */ + public $SMTPAuth = false; + + /** + * Sets SMTP username. + * @var string + */ + public $Username = ''; + + /** + * Sets SMTP password. + * @var string + */ + public $Password = ''; + + /** + * Sets the SMTP server timeout in seconds. + * This function will not work with the win32 version. + * @var int + */ + public $Timeout = 10; + + /** + * Sets SMTP class debugging on or off. + * @var bool + */ + public $SMTPDebug = false; + + /** + * Prevents the SMTP connection from being closed after each mail + * sending. If this is set to true then to close the connection + * requires an explicit call to SmtpClose(). + * @var bool + */ + public $SMTPKeepAlive = false; + + /** + * Provides the ability to have the TO field process individual + * emails, instead of sending to entire TO addresses + * @var bool + */ + public $SingleTo = false; + + /** + * If SingleTo is true, this provides the array to hold the email addresses + * @var bool + */ + public $SingleToArray = array(); + + /** + * Provides the ability to change the line ending + * @var string + */ + public $LE = "\n"; + + /** + * Used with DKIM DNS Resource Record + * @var string + */ + public $DKIM_selector = 'phpmailer'; + + /** + * Used with DKIM DNS Resource Record + * optional, in format of email address 'you@yourdomain.com' + * @var string + */ + public $DKIM_identity = ''; + + /** + * Used with DKIM DNS Resource Record + * @var string + */ + public $DKIM_passphrase = ''; + + /** + * Used with DKIM DNS Resource Record + * optional, in format of email address 'you@yourdomain.com' + * @var string + */ + public $DKIM_domain = ''; + + /** + * Used with DKIM DNS Resource Record + * optional, in format of email address 'you@yourdomain.com' + * @var string + */ + public $DKIM_private = ''; + + /** + * Callback Action function name + * the function that handles the result of the send email action. Parameters: + * bool $result result of the send action + * string $to email address of the recipient + * string $cc cc email addresses + * string $bcc bcc email addresses + * string $subject the subject + * string $body the email body + * @var string + */ + public $action_function = ''; //'callbackAction'; + + /** + * Sets the PHPMailer Version number + * @var string + */ + public $Version = '5.2'; + + /** + * What to use in the X-Mailer header + * @var string + */ + public $XMailer = ''; + + ///////////////////////////////////////////////// + // PROPERTIES, PRIVATE AND PROTECTED + ///////////////////////////////////////////////// + + protected $smtp = NULL; + protected $to = array(); + protected $cc = array(); + protected $bcc = array(); + protected $ReplyTo = array(); + protected $all_recipients = array(); + protected $attachment = array(); + protected $CustomHeader = array(); + protected $message_type = ''; + protected $boundary = array(); + protected $language = array(); + protected $error_count = 0; + protected $sign_cert_file = ''; + protected $sign_key_file = ''; + protected $sign_key_pass = ''; + protected $exceptions = false; + + ///////////////////////////////////////////////// + // CONSTANTS + ///////////////////////////////////////////////// + + const STOP_MESSAGE = 0; // message only, continue processing + const STOP_CONTINUE = 1; // message?, likely ok to continue processing + const STOP_CRITICAL = 2; // message, plus full stop, critical error reached + + ///////////////////////////////////////////////// + // METHODS, VARIABLES + ///////////////////////////////////////////////// + + /** + * Constructor + * @param boolean $exceptions Should we throw external exceptions? + */ + public function __construct($exceptions = false) { + $this->exceptions = ($exceptions == true); + } + + /** + * Sets message type to HTML. + * @param bool $ishtml + * @return void + */ + public function IsHTML($ishtml = true) { + if ($ishtml) { + $this->ContentType = 'text/html'; + } else { + $this->ContentType = 'text/plain'; + } + } + + /** + * Sets Mailer to send message using SMTP. + * @return void + */ + public function IsSMTP() { + $this->Mailer = 'smtp'; + } + + /** + * Sets Mailer to send message using PHP mail() function. + * @return void + */ + public function IsMail() { + $this->Mailer = 'mail'; + } + + /** + * Sets Mailer to send message using the $Sendmail program. + * @return void + */ + public function IsSendmail() { + if (!stristr(ini_get('sendmail_path'), 'sendmail')) { + $this->Sendmail = '/var/qmail/bin/sendmail'; + } + $this->Mailer = 'sendmail'; + } + + /** + * Sets Mailer to send message using the qmail MTA. + * @return void + */ + public function IsQmail() { + if (stristr(ini_get('sendmail_path'), 'qmail')) { + $this->Sendmail = '/var/qmail/bin/sendmail'; + } + $this->Mailer = 'sendmail'; + } + + ///////////////////////////////////////////////// + // METHODS, RECIPIENTS + ///////////////////////////////////////////////// + + /** + * Adds a "To" address. + * @param string $address + * @param string $name + * @return boolean true on success, false if address already used + */ + public function AddAddress($address, $name = '') { + return $this->AddAnAddress('to', $address, $name); + } + + /** + * Adds a "Cc" address. + * Note: this function works with the SMTP mailer on win32, not with the "mail" mailer. + * @param string $address + * @param string $name + * @return boolean true on success, false if address already used + */ + public function AddCC($address, $name = '') { + return $this->AddAnAddress('cc', $address, $name); + } + + /** + * Adds a "Bcc" address. + * Note: this function works with the SMTP mailer on win32, not with the "mail" mailer. + * @param string $address + * @param string $name + * @return boolean true on success, false if address already used + */ + public function AddBCC($address, $name = '') { + return $this->AddAnAddress('bcc', $address, $name); + } + + /** + * Adds a "Reply-to" address. + * @param string $address + * @param string $name + * @return boolean + */ + public function AddReplyTo($address, $name = '') { + return $this->AddAnAddress('ReplyTo', $address, $name); + } + + /** + * Adds an address to one of the recipient arrays + * Addresses that have been added already return false, but do not throw exceptions + * @param string $kind One of 'to', 'cc', 'bcc', 'ReplyTo' + * @param string $address The email address to send to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + * @access protected + */ + protected function AddAnAddress($kind, $address, $name = '') { + if (!preg_match('/^(to|cc|bcc|ReplyTo)$/', $kind)) { + $this->SetError($this->Lang('Invalid recipient array').': '.$kind); + if ($this->exceptions) { + throw new EM_phpmailerException('Invalid recipient array: ' . $kind); + } + echo $this->Lang('Invalid recipient array').': '.$kind; + return false; + } + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + if (!self::ValidateAddress($address)) { + $this->SetError($this->Lang('invalid_address').': '. $address); + if ($this->exceptions) { + throw new EM_phpmailerException($this->Lang('invalid_address').': '.$address); + } + echo $this->Lang('invalid_address').': '.$address; + return false; + } + if ($kind != 'ReplyTo') { + if (!isset($this->all_recipients[strtolower($address)])) { + array_push($this->$kind, array($address, $name)); + $this->all_recipients[strtolower($address)] = true; + return true; + } + } else { + if (!array_key_exists(strtolower($address), $this->ReplyTo)) { + $this->ReplyTo[strtolower($address)] = array($address, $name); + return true; + } + } + return false; +} + +/** + * Set the From and FromName properties + * @param string $address + * @param string $name + * @return boolean + */ + public function SetFrom($address, $name = '', $auto = 1) { + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + if (!self::ValidateAddress($address)) { + $this->SetError($this->Lang('invalid_address').': '. $address); + if ($this->exceptions) { + throw new EM_phpmailerException($this->Lang('invalid_address').': '.$address); + } + echo $this->Lang('invalid_address').': '.$address; + return false; + } + $this->From = $address; + $this->FromName = $name; + if ($auto) { + if (empty($this->ReplyTo)) { + $this->AddAnAddress('ReplyTo', $address, $name); + } + if (empty($this->Sender)) { + $this->Sender = $address; + } + } + return true; + } + + /** + * Check that a string looks roughly like an email address should + * Static so it can be used without instantiation + * Tries to use PHP built-in validator in the filter extension (from PHP 5.2), falls back to a reasonably competent regex validator + * Conforms approximately to RFC2822 + * @link http://www.hexillion.com/samples/#Regex Original pattern found here + * @param string $address The email address to check + * @return boolean + * @static + * @access public + */ + public static function ValidateAddress($address) { + if (function_exists('filter_var')) { //Introduced in PHP 5.2 + if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) { + return false; + } else { + return true; + } + } else { + return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address); + } + } + + ///////////////////////////////////////////////// + // METHODS, MAIL SENDING + ///////////////////////////////////////////////// + + /** + * Creates message and assigns Mailer. If the message is + * not sent successfully then it returns false. Use the ErrorInfo + * variable to view description of the error. + * @return bool + */ + public function Send() { + try { + if(!$this->PreSend()) return false; + return $this->PostSend(); + } catch (EM_phpmailerException $e) { + $this->SetError($e->getMessage()); + if ($this->exceptions) { + throw $e; + } + return false; + } + } + + protected function PreSend() { + try { + if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) { + throw new EM_phpmailerException($this->Lang('provide_address'), self::STOP_CRITICAL); + } + + // Set whether the message is multipart/alternative + if(!empty($this->AltBody)) { + $this->ContentType = 'multipart/alternative'; + } + + $this->error_count = 0; // reset errors + $this->SetMessageType(); + //Refuse to send an empty message + if (empty($this->Body)) { + throw new EM_phpmailerException($this->Lang('empty_message'), self::STOP_CRITICAL); + } + + $this->MIMEHeader = $this->CreateHeader(); + $this->MIMEBody = $this->CreateBody(); + + + // digitally sign with DKIM if enabled + if ($this->DKIM_domain && $this->DKIM_private) { + $header_dkim = $this->DKIM_Add($this->MIMEHeader, $this->EncodeHeader($this->SecureHeader($this->Subject)), $this->MIMEBody); + $this->MIMEHeader = str_replace("\r\n", "\n", $header_dkim) . $this->MIMEHeader; + } + + return true; + } catch (EM_phpmailerException $e) { + $this->SetError($e->getMessage()); + if ($this->exceptions) { + throw $e; + } + return false; + } + } + + protected function PostSend() { + try { + // Choose the mailer and send through it + switch($this->Mailer) { + case 'sendmail': + return $this->SendmailSend($this->MIMEHeader, $this->MIMEBody); + case 'smtp': + return $this->SmtpSend($this->MIMEHeader, $this->MIMEBody); + default: + return $this->MailSend($this->MIMEHeader, $this->MIMEBody); + } + + } catch (EM_phpmailerException $e) { + $this->SetError($e->getMessage()); + if ($this->exceptions) { + throw $e; + } + echo $e->getMessage()."\n"; + return false; + } + } + + /** + * Sends mail using the $Sendmail program. + * @param string $header The message headers + * @param string $body The message body + * @access protected + * @return bool + */ + protected function SendmailSend($header, $body) { + if ($this->Sender != '') { + $sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender)); + } else { + $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail)); + } + if ($this->SingleTo === true) { + foreach ($this->SingleToArray as $key => $val) { + if(!@$mail = popen($sendmail, 'w')) { + throw new EM_phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + fputs($mail, "To: " . $val . "\n"); + fputs($mail, $header); + fputs($mail, $body); + $result = pclose($mail); + // implement call back function if it exists + $isSent = ($result == 0) ? 1 : 0; + $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body); + if($result != 0) { + throw new EM_phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + } else { + if(!@$mail = popen($sendmail, 'w')) { + throw new EM_phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + fputs($mail, $header); + fputs($mail, $body); + $result = pclose($mail); + // implement call back function if it exists + $isSent = ($result == 0) ? 1 : 0; + $this->doCallback($isSent, $this->to, $this->cc, $this->bcc, $this->Subject, $body); + if($result != 0) { + throw new EM_phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + return true; + } + + /** + * Sends mail using the PHP mail() function. + * @param string $header The message headers + * @param string $body The message body + * @access protected + * @return bool + */ + protected function MailSend($header, $body) { + $toArr = array(); + foreach($this->to as $t) { + $toArr[] = $this->AddrFormat($t); + } + $to = implode(', ', $toArr); + + if (empty($this->Sender)) { + $params = "-oi -f %s"; + } else { + $params = sprintf("-oi -f %s", $this->Sender); + } + if ($this->Sender != '' and !ini_get('safe_mode')) { + $old_from = ini_get('sendmail_from'); + ini_set('sendmail_from', $this->Sender); + if ($this->SingleTo === true && count($toArr) > 1) { + foreach ($toArr as $key => $val) { + $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params); + // implement call back function if it exists + $isSent = ($rt == 1) ? 1 : 0; + $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body); + } + } else { + $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params); + // implement call back function if it exists + $isSent = ($rt == 1) ? 1 : 0; + $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body); + } + } else { + if ($this->SingleTo === true && count($toArr) > 1) { + foreach ($toArr as $key => $val) { + $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params); + // implement call back function if it exists + $isSent = ($rt == 1) ? 1 : 0; + $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body); + } + } else { + $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header); + // implement call back function if it exists + $isSent = ($rt == 1) ? 1 : 0; + $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body); + } + } + if (isset($old_from)) { + ini_set('sendmail_from', $old_from); + } + if(!$rt) { + throw new EM_phpmailerException($this->Lang('instantiate'), self::STOP_CRITICAL); + } + return true; + } + + /** + * Sends mail via SMTP using PhpSMTP + * Returns false if there is a bad MAIL FROM, RCPT, or DATA input. + * @param string $header The message headers + * @param string $body The message body + * @uses SMTP + * @access protected + * @return bool + */ + protected function SmtpSend($header, $body) { + require_once $this->PluginDir . 'class.smtp.php'; + $bad_rcpt = array(); + + if(!$this->SmtpConnect()) { + throw new EM_phpmailerException($this->Lang('smtp_connect_failed'), self::STOP_CRITICAL); + } + $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender; + if(!$this->smtp->Mail($smtp_from)) { + throw new EM_phpmailerException($this->Lang('from_failed') . $smtp_from, self::STOP_CRITICAL); + } + + // Attempt to send attach all recipients + foreach($this->to as $to) { + if (!$this->smtp->Recipient($to[0])) { + $bad_rcpt[] = $to[0]; + // implement call back function if it exists + $isSent = 0; + $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body); + } else { + // implement call back function if it exists + $isSent = 1; + $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body); + } + } + foreach($this->cc as $cc) { + if (!$this->smtp->Recipient($cc[0])) { + $bad_rcpt[] = $cc[0]; + // implement call back function if it exists + $isSent = 0; + $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body); + } else { + // implement call back function if it exists + $isSent = 1; + $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body); + } + } + foreach($this->bcc as $bcc) { + if (!$this->smtp->Recipient($bcc[0])) { + $bad_rcpt[] = $bcc[0]; + // implement call back function if it exists + $isSent = 0; + $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body); + } else { + // implement call back function if it exists + $isSent = 1; + $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body); + } + } + + + if (count($bad_rcpt) > 0 ) { //Create error message for any bad addresses + $badaddresses = implode(', ', $bad_rcpt); + throw new EM_phpmailerException($this->Lang('recipients_failed') . $badaddresses); + } + if(!$this->smtp->Data($header . $body)) { + throw new EM_phpmailerException($this->Lang('data_not_accepted'), self::STOP_CRITICAL); + } + if($this->SMTPKeepAlive == true) { + $this->smtp->Reset(); + } + return true; + } + + /** + * Initiates a connection to an SMTP server. + * Returns false if the operation failed. + * @uses SMTP + * @access public + * @return bool + */ + public function SmtpConnect() { + if(is_null($this->smtp)) { + $this->smtp = new EM_SMTP(); + } + + $this->smtp->do_debug = $this->SMTPDebug; + $hosts = explode(';', $this->Host); + $index = 0; + $connection = $this->smtp->Connected(); + + // Retry while there is no connection + try { + while($index < count($hosts) && !$connection) { + $hostinfo = array(); + if (preg_match('/^(.+):([0-9]+)$/', $hosts[$index], $hostinfo)) { + $host = $hostinfo[1]; + $port = $hostinfo[2]; + } else { + $host = $hosts[$index]; + $port = $this->Port; + } + + $tls = ($this->SMTPSecure == 'tls'); + $ssl = ($this->SMTPSecure == 'ssl'); + + if ($this->smtp->Connect(($ssl ? 'ssl://':'').$host, $port, $this->Timeout)) { + + $hello = ($this->Helo != '' ? $this->Helo : $this->ServerHostname()); + $this->smtp->Hello($hello); + + if ($tls) { + if (!$this->smtp->StartTLS()) { + throw new EM_phpmailerException($this->Lang('tls')); + } + + //We must resend HELO after tls negotiation + $this->smtp->Hello($hello); + } + + $connection = true; + if ($this->SMTPAuth) { + if (!$this->smtp->Authenticate($this->Username, $this->Password)) { + throw new EM_phpmailerException($this->Lang('authenticate')); + } + } + } + $index++; + if (!$connection) { + throw new EM_phpmailerException($this->Lang('connect_host')); + } + } + } catch (EM_phpmailerException $e) { + $this->smtp->Reset(); + throw $e; + } + return true; + } + + /** + * Closes the active SMTP session if one exists. + * @return void + */ + public function SmtpClose() { + if(!is_null($this->smtp)) { + if($this->smtp->Connected()) { + $this->smtp->Quit(); + $this->smtp->Close(); + } + } + } + + /** + * Sets the language for all class error messages. + * Returns false if it cannot load the language file. The default language is English. + * @param string $langcode ISO 639-1 2-character language code (e.g. Portuguese: "br") + * @param string $lang_path Path to the language file directory + * @access public + */ + function SetLanguage($langcode = 'en', $lang_path = 'language/') { + //Define full set of translatable strings + $PHPMAILER_LANG = array( + 'provide_address' => 'You must provide at least one recipient email address.', + 'mailer_not_supported' => ' mailer is not supported.', + 'execute' => 'Could not execute: ', + 'instantiate' => 'Could not instantiate mail function.', + 'authenticate' => 'SMTP Error: Could not authenticate.', + 'from_failed' => 'The following From address failed: ', + 'recipients_failed' => 'SMTP Error: The following recipients failed: ', + 'data_not_accepted' => 'SMTP Error: Data not accepted.', + 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', + 'file_access' => 'Could not access file: ', + 'file_open' => 'File Error: Could not open file: ', + 'encoding' => 'Unknown encoding: ', + 'signing' => 'Signing Error: ', + 'smtp_error' => 'SMTP server error: ', + 'empty_message' => 'Message body empty', + 'invalid_address' => 'Invalid address', + 'variable_set' => 'Cannot set or reset variable: ' + ); + //Overwrite language-specific strings. This way we'll never have missing translations - no more "language string failed to load"! + $l = true; + if ($langcode != 'en') { //There is no English translation file + $l = @include $lang_path.'phpmailer.lang-'.$langcode.'.php'; + } + $this->language = $PHPMAILER_LANG; + return ($l == true); //Returns false if language not found + } + + /** + * Return the current array of language strings + * @return array + */ + public function GetTranslations() { + return $this->language; + } + + ///////////////////////////////////////////////// + // METHODS, MESSAGE CREATION + ///////////////////////////////////////////////// + + /** + * Creates recipient headers. + * @access public + * @return string + */ + public function AddrAppend($type, $addr) { + $addr_str = $type . ': '; + $addresses = array(); + foreach ($addr as $a) { + $addresses[] = $this->AddrFormat($a); + } + $addr_str .= implode(', ', $addresses); + $addr_str .= $this->LE; + + return $addr_str; + } + + /** + * Formats an address correctly. + * @access public + * @return string + */ + public function AddrFormat($addr) { + if (empty($addr[1])) { + return $this->SecureHeader($addr[0]); + } else { + return $this->EncodeHeader($this->SecureHeader($addr[1]), 'phrase') . " <" . $this->SecureHeader($addr[0]) . ">"; + } + } + + /** + * Wraps message for use with mailers that do not + * automatically perform wrapping and for quoted-printable. + * Original written by philippe. + * @param string $message The message to wrap + * @param integer $length The line length to wrap to + * @param boolean $qp_mode Whether to run in Quoted-Printable mode + * @access public + * @return string + */ + public function WrapText($message, $length, $qp_mode = false) { + $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE; + // If utf-8 encoding is used, we will need to make sure we don't + // split multibyte characters when we wrap + $is_utf8 = (strtolower($this->CharSet) == "utf-8"); + + $message = $this->FixEOL($message); + if (substr($message, -1) == $this->LE) { + $message = substr($message, 0, -1); + } + + $line = explode($this->LE, $message); + $message = ''; + for ($i = 0 ;$i < count($line); $i++) { + $line_part = explode(' ', $line[$i]); + $buf = ''; + for ($e = 0; $e<count($line_part); $e++) { + $word = $line_part[$e]; + if ($qp_mode and (strlen($word) > $length)) { + $space_left = $length - strlen($buf) - 1; + if ($e != 0) { + if ($space_left > 20) { + $len = $space_left; + if ($is_utf8) { + $len = $this->UTF8CharBoundary($word, $len); + } elseif (substr($word, $len - 1, 1) == "=") { + $len--; + } elseif (substr($word, $len - 2, 1) == "=") { + $len -= 2; + } + $part = substr($word, 0, $len); + $word = substr($word, $len); + $buf .= ' ' . $part; + $message .= $buf . sprintf("=%s", $this->LE); + } else { + $message .= $buf . $soft_break; + } + $buf = ''; + } + while (strlen($word) > 0) { + $len = $length; + if ($is_utf8) { + $len = $this->UTF8CharBoundary($word, $len); + } elseif (substr($word, $len - 1, 1) == "=") { + $len--; + } elseif (substr($word, $len - 2, 1) == "=") { + $len -= 2; + } + $part = substr($word, 0, $len); + $word = substr($word, $len); + + if (strlen($word) > 0) { + $message .= $part . sprintf("=%s", $this->LE); + } else { + $buf = $part; + } + } + } else { + $buf_o = $buf; + $buf .= ($e == 0) ? $word : (' ' . $word); + + if (strlen($buf) > $length and $buf_o != '') { + $message .= $buf_o . $soft_break; + $buf = $word; + } + } + } + $message .= $buf . $this->LE; + } + + return $message; + } + + /** + * Finds last character boundary prior to maxLength in a utf-8 + * quoted (printable) encoded string. + * Original written by Colin Brown. + * @access public + * @param string $encodedText utf-8 QP text + * @param int $maxLength find last character boundary prior to this length + * @return int + */ + public function UTF8CharBoundary($encodedText, $maxLength) { + $foundSplitPos = false; + $lookBack = 3; + while (!$foundSplitPos) { + $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack); + $encodedCharPos = strpos($lastChunk, "="); + if ($encodedCharPos !== false) { + // Found start of encoded character byte within $lookBack block. + // Check the encoded byte value (the 2 chars after the '=') + $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2); + $dec = hexdec($hex); + if ($dec < 128) { // Single byte character. + // If the encoded char was found at pos 0, it will fit + // otherwise reduce maxLength to start of the encoded char + $maxLength = ($encodedCharPos == 0) ? $maxLength : + $maxLength - ($lookBack - $encodedCharPos); + $foundSplitPos = true; + } elseif ($dec >= 192) { // First byte of a multi byte character + // Reduce maxLength to split at start of character + $maxLength = $maxLength - ($lookBack - $encodedCharPos); + $foundSplitPos = true; + } elseif ($dec < 192) { // Middle byte of a multi byte character, look further back + $lookBack += 3; + } + } else { + // No encoded character found + $foundSplitPos = true; + } + } + return $maxLength; + } + + + /** + * Set the body wrapping. + * @access public + * @return void + */ + public function SetWordWrap() { + if($this->WordWrap < 1) { + return; + } + + switch($this->message_type) { + case 'alt': + case 'alt_inline': + case 'alt_attach': + case 'alt_inline_attach': + $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap); + break; + default: + $this->Body = $this->WrapText($this->Body, $this->WordWrap); + break; + } + } + + /** + * Assembles message header. + * @access public + * @return string The assembled header + */ + public function CreateHeader() { + $result = ''; + + // Set the boundaries + $uniq_id = md5(uniqid(time())); + $this->boundary[1] = 'b1_' . $uniq_id; + $this->boundary[2] = 'b2_' . $uniq_id; + $this->boundary[3] = 'b3_' . $uniq_id; + + $result .= $this->HeaderLine('Date', self::RFCDate()); + if($this->Sender == '') { + $result .= $this->HeaderLine('Return-Path', trim($this->From)); + } else { + $result .= $this->HeaderLine('Return-Path', trim($this->Sender)); + } + + // To be created automatically by mail() + if($this->Mailer != 'mail') { + if ($this->SingleTo === true) { + foreach($this->to as $t) { + $this->SingleToArray[] = $this->AddrFormat($t); + } + } else { + if(count($this->to) > 0) { + $result .= $this->AddrAppend('To', $this->to); + } elseif (count($this->cc) == 0) { + $result .= $this->HeaderLine('To', 'undisclosed-recipients:;'); + } + } + } + + $from = array(); + $from[0][0] = trim($this->From); + $from[0][1] = $this->FromName; + $result .= $this->AddrAppend('From', $from); + + // sendmail and mail() extract Cc from the header before sending + if(count($this->cc) > 0) { + $result .= $this->AddrAppend('Cc', $this->cc); + } + + // sendmail and mail() extract Bcc from the header before sending + if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) { + $result .= $this->AddrAppend('Bcc', $this->bcc); + } + + if(count($this->ReplyTo) > 0) { + $result .= $this->AddrAppend('Reply-to', $this->ReplyTo); + } + + // mail() sets the subject itself + if($this->Mailer != 'mail') { + $result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject))); + } + + if($this->MessageID != '') { + $result .= $this->HeaderLine('Message-ID', $this->MessageID); + } else { + $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE); + } + $result .= $this->HeaderLine('X-Priority', $this->Priority); + if($this->XMailer) { + $result .= $this->HeaderLine('X-Mailer', $this->XMailer); + } else { + $result .= $this->HeaderLine('X-Mailer', 'PHPMailer '.$this->Version.' (http://code.google.com/a/apache-extras.org/p/phpmailer/)'); + } + + if($this->ConfirmReadingTo != '') { + $result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>'); + } + + // Add custom headers + for($index = 0; $index < count($this->CustomHeader); $index++) { + $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1]))); + } + if (!$this->sign_key_file) { + $result .= $this->HeaderLine('MIME-Version', '1.0'); + $result .= $this->GetMailMIME(); + } + + return $result; + } + + /** + * Returns the message MIME. + * @access public + * @return string + */ + public function GetMailMIME() { + $result = ''; + switch($this->message_type) { + case 'plain': + $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding); + $result .= $this->TextLine('Content-Type: '.$this->ContentType.'; charset="'.$this->CharSet.'"'); + break; + case 'inline': + $result .= $this->HeaderLine('Content-Type', 'multipart/related;'); + $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + case 'attach': + case 'inline_attach': + case 'alt_attach': + case 'alt_inline_attach': + $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;'); + $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + case 'alt': + case 'alt_inline': + $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;'); + $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + } + + if($this->Mailer != 'mail') { + $result .= $this->LE.$this->LE; + } + + return $result; + } + + /** + * Assembles the message body. Returns an empty string on failure. + * @access public + * @return string The assembled message body + */ + public function CreateBody() { + $body = ''; + + if ($this->sign_key_file) { + $body .= $this->GetMailMIME(); + } + + $this->SetWordWrap(); + + switch($this->message_type) { + case 'plain': + $body .= $this->EncodeString($this->Body, $this->Encoding); + break; + case 'inline': + $body .= $this->GetBoundary($this->boundary[1], '', '', ''); + $body .= $this->EncodeString($this->Body, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->AttachAll("inline", $this->boundary[1]); + break; + case 'attach': + $body .= $this->GetBoundary($this->boundary[1], '', '', ''); + $body .= $this->EncodeString($this->Body, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->AttachAll("attachment", $this->boundary[1]); + break; + case 'inline_attach': + $body .= $this->TextLine("--" . $this->boundary[1]); + $body .= $this->HeaderLine('Content-Type', 'multipart/related;'); + $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->GetBoundary($this->boundary[2], '', '', ''); + $body .= $this->EncodeString($this->Body, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->AttachAll("inline", $this->boundary[2]); + $body .= $this->LE; + $body .= $this->AttachAll("attachment", $this->boundary[1]); + break; + case 'alt': + $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', ''); + $body .= $this->EncodeString($this->AltBody, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->GetBoundary($this->boundary[1], '', 'text/html', ''); + $body .= $this->EncodeString($this->Body, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->EndBoundary($this->boundary[1]); + break; + case 'alt_inline': + $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', ''); + $body .= $this->EncodeString($this->AltBody, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->TextLine("--" . $this->boundary[1]); + $body .= $this->HeaderLine('Content-Type', 'multipart/related;'); + $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', ''); + $body .= $this->EncodeString($this->Body, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->AttachAll("inline", $this->boundary[2]); + $body .= $this->LE; + $body .= $this->EndBoundary($this->boundary[1]); + break; + case 'alt_attach': + $body .= $this->TextLine("--" . $this->boundary[1]); + $body .= $this->HeaderLine('Content-Type', 'multipart/alternative;'); + $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', ''); + $body .= $this->EncodeString($this->AltBody, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', ''); + $body .= $this->EncodeString($this->Body, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->EndBoundary($this->boundary[2]); + $body .= $this->LE; + $body .= $this->AttachAll("attachment", $this->boundary[1]); + break; + case 'alt_inline_attach': + $body .= $this->TextLine("--" . $this->boundary[1]); + $body .= $this->HeaderLine('Content-Type', 'multipart/alternative;'); + $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', ''); + $body .= $this->EncodeString($this->AltBody, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->TextLine("--" . $this->boundary[2]); + $body .= $this->HeaderLine('Content-Type', 'multipart/related;'); + $body .= $this->TextLine("\tboundary=\"" . $this->boundary[3] . '"'); + $body .= $this->LE; + $body .= $this->GetBoundary($this->boundary[3], '', 'text/html', ''); + $body .= $this->EncodeString($this->Body, $this->Encoding); + $body .= $this->LE.$this->LE; + $body .= $this->AttachAll("inline", $this->boundary[3]); + $body .= $this->LE; + $body .= $this->EndBoundary($this->boundary[2]); + $body .= $this->LE; + $body .= $this->AttachAll("attachment", $this->boundary[1]); + break; + } + + if ($this->IsError()) { + $body = ''; + } elseif ($this->sign_key_file) { + try { + $file = tempnam('', 'mail'); + file_put_contents($file, $body); //TODO check this worked + $signed = tempnam("", "signed"); + if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), NULL)) { + @unlink($file); + @unlink($signed); + $body = file_get_contents($signed); + } else { + @unlink($file); + @unlink($signed); + throw new EM_phpmailerException($this->Lang("signing").openssl_error_string()); + } + } catch (EM_phpmailerException $e) { + $body = ''; + if ($this->exceptions) { + throw $e; + } + } + } + + return $body; + } + + /** + * Returns the start of a message boundary. + * @access protected + * @return string + */ + protected function GetBoundary($boundary, $charSet, $contentType, $encoding) { + $result = ''; + if($charSet == '') { + $charSet = $this->CharSet; + } + if($contentType == '') { + $contentType = $this->ContentType; + } + if($encoding == '') { + $encoding = $this->Encoding; + } + $result .= $this->TextLine('--' . $boundary); + $result .= sprintf("Content-Type: %s; charset=\"%s\"", $contentType, $charSet); + $result .= $this->LE; + $result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding); + $result .= $this->LE; + + return $result; + } + + /** + * Returns the end of a message boundary. + * @access protected + * @return string + */ + protected function EndBoundary($boundary) { + return $this->LE . '--' . $boundary . '--' . $this->LE; + } + + /** + * Sets the message type. + * @access protected + * @return void + */ + protected function SetMessageType() { + $this->message_type = array(); + if($this->AlternativeExists()) $this->message_type[] = "alt"; + if($this->InlineImageExists()) $this->message_type[] = "inline"; + if($this->AttachmentExists()) $this->message_type[] = "attach"; + $this->message_type = implode("_", $this->message_type); + if($this->message_type == "") $this->message_type = "plain"; + } + + /** + * Returns a formatted header line. + * @access public + * @return string + */ + public function HeaderLine($name, $value) { + return $name . ': ' . $value . $this->LE; + } + + /** + * Returns a formatted mail line. + * @access public + * @return string + */ + public function TextLine($value) { + return $value . $this->LE; + } + + ///////////////////////////////////////////////// + // CLASS METHODS, ATTACHMENTS + ///////////////////////////////////////////////// + + /** + * Adds an attachment from a path on the filesystem. + * Returns false if the file could not be found + * or accessed. + * @param string $path Path to the attachment. + * @param string $name Overrides the attachment name. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @return bool + */ + public function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') { + try { + if ( !@is_file($path) ) { + throw new EM_phpmailerException($this->Lang('file_access') . $path, self::STOP_CONTINUE); + } + $filename = basename($path); + if ( $name == '' ) { + $name = $filename; + } + + $this->attachment[] = array( + 0 => $path, + 1 => $filename, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => false, // isStringAttachment + 6 => 'attachment', + 7 => 0 + ); + + } catch (EM_phpmailerException $e) { + $this->SetError($e->getMessage()); + if ($this->exceptions) { + throw $e; + } + echo $e->getMessage()."\n"; + if ( $e->getCode() == self::STOP_CRITICAL ) { + return false; + } + } + return true; + } + + /** + * Return the current array of attachments + * @return array + */ + public function GetAttachments() { + return $this->attachment; + } + + /** + * Attaches all fs, string, and binary attachments to the message. + * Returns an empty string on failure. + * @access protected + * @return string + */ + protected function AttachAll($disposition_type, $boundary) { + // Return text of body + $mime = array(); + $cidUniq = array(); + $incl = array(); + + // Add all attachments + foreach ($this->attachment as $attachment) { + // CHECK IF IT IS A VALID DISPOSITION_FILTER + if($attachment[6] == $disposition_type) { + // Check for string attachment + $bString = $attachment[5]; + if ($bString) { + $string = $attachment[0]; + } else { + $path = $attachment[0]; + } + + $inclhash = md5(serialize($attachment)); + if (in_array($inclhash, $incl)) { continue; } + $incl[] = $inclhash; + $filename = $attachment[1]; + $name = $attachment[2]; + $encoding = $attachment[3]; + $type = $attachment[4]; + $disposition = $attachment[6]; + $cid = $attachment[7]; + if ( $disposition == 'inline' && isset($cidUniq[$cid]) ) { continue; } + $cidUniq[$cid] = true; + + $mime[] = sprintf("--%s%s", $boundary, $this->LE); + $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE); + $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE); + + if($disposition == 'inline') { + $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE); + } + + $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE); + + // Encode as string attachment + if($bString) { + $mime[] = $this->EncodeString($string, $encoding); + if($this->IsError()) { + return ''; + } + $mime[] = $this->LE.$this->LE; + } else { + $mime[] = $this->EncodeFile($path, $encoding); + if($this->IsError()) { + return ''; + } + $mime[] = $this->LE.$this->LE; + } + } + } + + $mime[] = sprintf("--%s--%s", $boundary, $this->LE); + + return implode("", $mime); + } + + /** + * Encodes attachment in requested format. + * Returns an empty string on failure. + * @param string $path The full path to the file + * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' + * @see EncodeFile() + * @access protected + * @return string + */ + protected function EncodeFile($path, $encoding = 'base64') { + try { + if (!is_readable($path)) { + throw new EM_phpmailerException($this->Lang('file_open') . $path, self::STOP_CONTINUE); + } + if (function_exists('get_magic_quotes')) { + function get_magic_quotes() { + return false; + } + } + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + $magic_quotes = get_magic_quotes_runtime(); + set_magic_quotes_runtime(0); + } + $file_buffer = file_get_contents($path); + $file_buffer = $this->EncodeString($file_buffer, $encoding); + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + set_magic_quotes_runtime($magic_quotes); + } + return $file_buffer; + } catch (Exception $e) { + $this->SetError($e->getMessage()); + return ''; + } + } + + /** + * Encodes string to requested format. + * Returns an empty string on failure. + * @param string $str The text to encode + * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' + * @access public + * @return string + */ + public function EncodeString($str, $encoding = 'base64') { + $encoded = ''; + switch(strtolower($encoding)) { + case 'base64': + $encoded = chunk_split(base64_encode($str), 76, $this->LE); + break; + case '7bit': + case '8bit': + $encoded = $this->FixEOL($str); + //Make sure it ends with a line break + if (substr($encoded, -(strlen($this->LE))) != $this->LE) + $encoded .= $this->LE; + break; + case 'binary': + $encoded = $str; + break; + case 'quoted-printable': + $encoded = $this->EncodeQP($str); + break; + default: + $this->SetError($this->Lang('encoding') . $encoding); + break; + } + return $encoded; + } + + /** + * Encode a header string to best (shortest) of Q, B, quoted or none. + * @access public + * @return string + */ + public function EncodeHeader($str, $position = 'text') { + $x = 0; + + switch (strtolower($position)) { + case 'phrase': + if (!preg_match('/[\200-\377]/', $str)) { + // Can't use addslashes as we don't know what value has magic_quotes_sybase + $encoded = addcslashes($str, "\0..\37\177\\\""); + if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) { + return ($encoded); + } else { + return ("\"$encoded\""); + } + } + $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches); + break; + case 'comment': + $x = preg_match_all('/[()"]/', $str, $matches); + // Fall-through + case 'text': + default: + $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); + break; + } + + if ($x == 0) { + return ($str); + } + + $maxlen = 75 - 7 - strlen($this->CharSet); + // Try to select the encoding which should produce the shortest output + if (strlen($str)/3 < $x) { + $encoding = 'B'; + if (function_exists('mb_strlen') && $this->HasMultiBytes($str)) { + // Use a custom function which correctly encodes and wraps long + // multibyte strings without breaking lines within a character + $encoded = $this->Base64EncodeWrapMB($str); + } else { + $encoded = base64_encode($str); + $maxlen -= $maxlen % 4; + $encoded = trim(chunk_split($encoded, $maxlen, "\n")); + } + } else { + $encoding = 'Q'; + $encoded = $this->EncodeQ($str, $position); + $encoded = $this->WrapText($encoded, $maxlen, true); + $encoded = str_replace('='.$this->LE, "\n", trim($encoded)); + } + + $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded); + $encoded = trim(str_replace("\n", $this->LE, $encoded)); + + return $encoded; + } + + /** + * Checks if a string contains multibyte characters. + * @access public + * @param string $str multi-byte text to wrap encode + * @return bool + */ + public function HasMultiBytes($str) { + if (function_exists('mb_strlen')) { + return (strlen($str) > mb_strlen($str, $this->CharSet)); + } else { // Assume no multibytes (we can't handle without mbstring functions anyway) + return false; + } + } + + /** + * Correctly encodes and wraps long multibyte strings for mail headers + * without breaking lines within a character. + * Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php + * @access public + * @param string $str multi-byte text to wrap encode + * @return string + */ + public function Base64EncodeWrapMB($str) { + $start = "=?".$this->CharSet."?B?"; + $end = "?="; + $encoded = ""; + + $mb_length = mb_strlen($str, $this->CharSet); + // Each line must have length <= 75, including $start and $end + $length = 75 - strlen($start) - strlen($end); + // Average multi-byte ratio + $ratio = $mb_length / strlen($str); + // Base64 has a 4:3 ratio + $offset = $avgLength = floor($length * $ratio * .75); + + for ($i = 0; $i < $mb_length; $i += $offset) { + $lookBack = 0; + + do { + $offset = $avgLength - $lookBack; + $chunk = mb_substr($str, $i, $offset, $this->CharSet); + $chunk = base64_encode($chunk); + $lookBack++; + } + while (strlen($chunk) > $length); + + $encoded .= $chunk . $this->LE; + } + + // Chomp the last linefeed + $encoded = substr($encoded, 0, -strlen($this->LE)); + return $encoded; + } + + /** + * Encode string to quoted-printable. + * Only uses standard PHP, slow, but will always work + * @access public + * @param string $string the text to encode + * @param integer $line_max Number of chars allowed on a line before wrapping + * @return string + */ + public function EncodeQPphp( $input = '', $line_max = 76, $space_conv = false) { + $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'); + $lines = preg_split('/(?:\r\n|\r|\n)/', $input); + $eol = "\r\n"; + $escape = '='; + $output = ''; + while( list(, $line) = each($lines) ) { + $linlen = strlen($line); + $newline = ''; + for($i = 0; $i < $linlen; $i++) { + $c = substr( $line, $i, 1 ); + $dec = ord( $c ); + if ( ( $i == 0 ) && ( $dec == 46 ) ) { // convert first point in the line into =2E + $c = '=2E'; + } + if ( $dec == 32 ) { + if ( $i == ( $linlen - 1 ) ) { // convert space at eol only + $c = '=20'; + } else if ( $space_conv ) { + $c = '=20'; + } + } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required + $h2 = floor($dec/16); + $h1 = floor($dec%16); + $c = $escape.$hex[$h2].$hex[$h1]; + } + if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted + $output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay + $newline = ''; + // check if newline first character will be point or not + if ( $dec == 46 ) { + $c = '=2E'; + } + } + $newline .= $c; + } // end of for + $output .= $newline.$eol; + } // end of while + return $output; + } + + /** + * Encode string to RFC2045 (6.7) quoted-printable format + * Uses a PHP5 stream filter to do the encoding about 64x faster than the old version + * Also results in same content as you started with after decoding + * @see EncodeQPphp() + * @access public + * @param string $string the text to encode + * @param integer $line_max Number of chars allowed on a line before wrapping + * @param boolean $space_conv Dummy param for compatibility with existing EncodeQP function + * @return string + * @author Marcus Bointon + */ + public function EncodeQP($string, $line_max = 76, $space_conv = false) { + if (function_exists('quoted_printable_encode')) { //Use native function if it's available (>= PHP5.3) + return quoted_printable_encode($string); + } + $filters = stream_get_filters(); + if (!in_array('convert.*', $filters)) { //Got convert stream filter? + return $this->EncodeQPphp($string, $line_max, $space_conv); //Fall back to old implementation + } + $fp = fopen('php://temp/', 'r+'); + $string = preg_replace('/\r\n?/', $this->LE, $string); //Normalise line breaks + $params = array('line-length' => $line_max, 'line-break-chars' => $this->LE); + $s = stream_filter_append($fp, 'convert.quoted-printable-encode', STREAM_FILTER_READ, $params); + fputs($fp, $string); + rewind($fp); + $out = stream_get_contents($fp); + stream_filter_remove($s); + $out = preg_replace('/^\./m', '=2E', $out); //Encode . if it is first char on a line, workaround for bug in Exchange + fclose($fp); + return $out; + } + + /** + * Encode string to q encoding. + * @link http://tools.ietf.org/html/rfc2047 + * @param string $str the text to encode + * @param string $position Where the text is going to be used, see the RFC for what that means + * @access public + * @return string + */ + public function EncodeQ($str, $position = 'text') { + // There should not be any EOL in the string + $encoded = preg_replace('/[\r\n]*/', '', $str); + + switch (strtolower($position)) { + case 'phrase': + $encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded); + break; + case 'comment': + $encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded); + case 'text': + default: + // Replace every high ascii, control =, ? and _ characters + //TODO using /e (equivalent to eval()) is probably not a good idea + $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e', + "'='.sprintf('%02X', ord(stripslashes('\\1')))", $encoded); + break; + } + + // Replace every spaces to _ (more readable than =20) + $encoded = str_replace(' ', '_', $encoded); + + return $encoded; + } + + /** + * Adds a string or binary attachment (non-filesystem) to the list. + * This method can be used to attach ascii or binary data, + * such as a BLOB record from a database. + * @param string $string String attachment data. + * @param string $filename Name of the attachment. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @return void + */ + public function AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream') { + // Append to $attachment array + $this->attachment[] = array( + 0 => $string, + 1 => $filename, + 2 => basename($filename), + 3 => $encoding, + 4 => $type, + 5 => true, // isStringAttachment + 6 => 'attachment', + 7 => 0 + ); + } + + /** + * Adds an embedded attachment. This can include images, sounds, and + * just about any other document. Make sure to set the $type to an + * image type. For JPEG images use "image/jpeg" and for GIF images + * use "image/gif". + * @param string $path Path to the attachment. + * @param string $cid Content ID of the attachment. Use this to identify + * the Id for accessing the image in an HTML form. + * @param string $name Overrides the attachment name. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @return bool + */ + public function AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') { + + if ( !@is_file($path) ) { + $this->SetError($this->Lang('file_access') . $path); + return false; + } + + $filename = basename($path); + if ( $name == '' ) { + $name = $filename; + } + + // Append to $attachment array + $this->attachment[] = array( + 0 => $path, + 1 => $filename, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => false, // isStringAttachment + 6 => 'inline', + 7 => $cid + ); + + return true; + } + + public function AddStringEmbeddedImage($string, $cid, $filename = '', $encoding = 'base64', $type = 'application/octet-stream') { + // Append to $attachment array + $this->attachment[] = array( + 0 => $string, + 1 => $filename, + 2 => basename($filename), + 3 => $encoding, + 4 => $type, + 5 => true, // isStringAttachment + 6 => 'inline', + 7 => $cid + ); + } + + /** + * Returns true if an inline attachment is present. + * @access public + * @return bool + */ + public function InlineImageExists() { + foreach($this->attachment as $attachment) { + if ($attachment[6] == 'inline') { + return true; + } + } + return false; + } + + public function AttachmentExists() { + foreach($this->attachment as $attachment) { + if ($attachment[6] == 'attachment') { + return true; + } + } + return false; + } + + public function AlternativeExists() { + return strlen($this->AltBody)>0; + } + + ///////////////////////////////////////////////// + // CLASS METHODS, MESSAGE RESET + ///////////////////////////////////////////////// + + /** + * Clears all recipients assigned in the TO array. Returns void. + * @return void + */ + public function ClearAddresses() { + foreach($this->to as $to) { + unset($this->all_recipients[strtolower($to[0])]); + } + $this->to = array(); + } + + /** + * Clears all recipients assigned in the CC array. Returns void. + * @return void + */ + public function ClearCCs() { + foreach($this->cc as $cc) { + unset($this->all_recipients[strtolower($cc[0])]); + } + $this->cc = array(); + } + + /** + * Clears all recipients assigned in the BCC array. Returns void. + * @return void + */ + public function ClearBCCs() { + foreach($this->bcc as $bcc) { + unset($this->all_recipients[strtolower($bcc[0])]); + } + $this->bcc = array(); + } + + /** + * Clears all recipients assigned in the ReplyTo array. Returns void. + * @return void + */ + public function ClearReplyTos() { + $this->ReplyTo = array(); + } + + /** + * Clears all recipients assigned in the TO, CC and BCC + * array. Returns void. + * @return void + */ + public function ClearAllRecipients() { + $this->to = array(); + $this->cc = array(); + $this->bcc = array(); + $this->all_recipients = array(); + } + + /** + * Clears all previously set filesystem, string, and binary + * attachments. Returns void. + * @return void + */ + public function ClearAttachments() { + $this->attachment = array(); + } + + /** + * Clears all custom headers. Returns void. + * @return void + */ + public function ClearCustomHeaders() { + $this->CustomHeader = array(); + } + + ///////////////////////////////////////////////// + // CLASS METHODS, MISCELLANEOUS + ///////////////////////////////////////////////// + + /** + * Adds the error message to the error container. + * @access protected + * @return void + */ + protected function SetError($msg) { + $this->error_count++; + if ($this->Mailer == 'smtp' and !is_null($this->smtp)) { + $lasterror = $this->smtp->getError(); + if (!empty($lasterror) and array_key_exists('smtp_msg', $lasterror)) { + $msg .= '<p>' . $this->Lang('smtp_error') . $lasterror['smtp_msg'] . "</p>\n"; + } + } + $this->ErrorInfo = $msg; + } + + /** + * Returns the proper RFC 822 formatted date. + * @access public + * @return string + * @static + */ + public static function RFCDate() { + $tz = date('Z'); + $tzs = ($tz < 0) ? '-' : '+'; + $tz = abs($tz); + $tz = (int)($tz/3600)*100 + ($tz%3600)/60; + $result = sprintf("%s %s%04d", date('D, j M Y H:i:s'), $tzs, $tz); + + return $result; + } + + /** + * Returns the server hostname or 'localhost.localdomain' if unknown. + * @access protected + * @return string + */ + protected function ServerHostname() { + if (!empty($this->Hostname)) { + $result = $this->Hostname; + } elseif (isset($_SERVER['SERVER_NAME'])) { + $result = $_SERVER['SERVER_NAME']; + } else { + $result = 'localhost.localdomain'; + } + + return $result; + } + + /** + * Returns a message in the appropriate language. + * @access protected + * @return string + */ + protected function Lang($key) { + if(count($this->language) < 1) { + $this->SetLanguage('en'); // set the default language + } + + if(isset($this->language[$key])) { + return $this->language[$key]; + } else { + return 'Language string failed to load: ' . $key; + } + } + + /** + * Returns true if an error occurred. + * @access public + * @return bool + */ + public function IsError() { + return ($this->error_count > 0); + } + + /** + * Changes every end of line from CR or LF to CRLF. + * @access public + * @return string + */ + public function FixEOL($str) { + $str = str_replace("\r\n", "\n", $str); + $str = str_replace("\r", "\n", $str); + $str = str_replace("\n", $this->LE, $str); + return $str; + } + + /** + * Adds a custom header. + * @access public + * @return void + */ + public function AddCustomHeader($custom_header) { + $this->CustomHeader[] = explode(':', $custom_header, 2); + } + + /** + * Evaluates the message and returns modifications for inline images and backgrounds + * @access public + * @return $message + */ + public function MsgHTML($message, $basedir = '') { + preg_match_all("/(src|background)=\"(.*)\"/Ui", $message, $images); + if(isset($images[2])) { + foreach($images[2] as $i => $url) { + // do not change urls for absolute images (thanks to corvuscorax) + if (!preg_match('#^[A-z]+://#', $url)) { + $filename = basename($url); + $directory = dirname($url); + ($directory == '.') ? $directory='': ''; + $cid = 'cid:' . md5($filename); + $ext = pathinfo($filename, PATHINFO_EXTENSION); + $mimeType = self::_mime_types($ext); + if ( strlen($basedir) > 1 && substr($basedir, -1) != '/') { $basedir .= '/'; } + if ( strlen($directory) > 1 && substr($directory, -1) != '/') { $directory .= '/'; } + if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64', $mimeType) ) { + $message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message); + } + } + } + } + $this->IsHTML(true); + $this->Body = $message; + $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s', '', $message))); + if (!empty($textMsg) && empty($this->AltBody)) { + $this->AltBody = html_entity_decode($textMsg); + } + if (empty($this->AltBody)) { + $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n"; + } + } + + /** + * Gets the MIME type of the embedded or inline image + * @param string File extension + * @access public + * @return string MIME type of ext + * @static + */ + public static function _mime_types($ext = '') { + $mimes = array( + 'hqx' => 'application/mac-binhex40', + 'cpt' => 'application/mac-compactpro', + 'doc' => 'application/msword', + 'bin' => 'application/macbinary', + 'dms' => 'application/octet-stream', + 'lha' => 'application/octet-stream', + 'lzh' => 'application/octet-stream', + 'exe' => 'application/octet-stream', + 'class' => 'application/octet-stream', + 'psd' => 'application/octet-stream', + 'so' => 'application/octet-stream', + 'sea' => 'application/octet-stream', + 'dll' => 'application/octet-stream', + 'oda' => 'application/oda', + 'pdf' => 'application/pdf', + 'ai' => 'application/postscript', + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'mif' => 'application/vnd.mif', + 'xls' => 'application/vnd.ms-excel', + 'ppt' => 'application/vnd.ms-powerpoint', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'dcr' => 'application/x-director', + 'dir' => 'application/x-director', + 'dxr' => 'application/x-director', + 'dvi' => 'application/x-dvi', + 'gtar' => 'application/x-gtar', + 'php' => 'application/x-httpd-php', + 'php4' => 'application/x-httpd-php', + 'php3' => 'application/x-httpd-php', + 'phtml' => 'application/x-httpd-php', + 'phps' => 'application/x-httpd-php-source', + 'js' => 'application/x-javascript', + 'swf' => 'application/x-shockwave-flash', + 'sit' => 'application/x-stuffit', + 'tar' => 'application/x-tar', + 'tgz' => 'application/x-tar', + 'xhtml' => 'application/xhtml+xml', + 'xht' => 'application/xhtml+xml', + 'zip' => 'application/zip', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mpga' => 'audio/mpeg', + 'mp2' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'aif' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'ram' => 'audio/x-pn-realaudio', + 'rm' => 'audio/x-pn-realaudio', + 'rpm' => 'audio/x-pn-realaudio-plugin', + 'ra' => 'audio/x-realaudio', + 'rv' => 'video/vnd.rn-realvideo', + 'wav' => 'audio/x-wav', + 'bmp' => 'image/bmp', + 'gif' => 'image/gif', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'jpe' => 'image/jpeg', + 'png' => 'image/png', + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'css' => 'text/css', + 'html' => 'text/html', + 'htm' => 'text/html', + 'shtml' => 'text/html', + 'txt' => 'text/plain', + 'text' => 'text/plain', + 'log' => 'text/plain', + 'rtx' => 'text/richtext', + 'rtf' => 'text/rtf', + 'xml' => 'text/xml', + 'xsl' => 'text/xml', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpe' => 'video/mpeg', + 'qt' => 'video/quicktime', + 'mov' => 'video/quicktime', + 'avi' => 'video/x-msvideo', + 'movie' => 'video/x-sgi-movie', + 'doc' => 'application/msword', + 'word' => 'application/msword', + 'xl' => 'application/excel', + 'eml' => 'message/rfc822' + ); + return (!isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)]; + } + + /** + * Set (or reset) Class Objects (variables) + * + * Usage Example: + * $page->set('X-Priority', '3'); + * + * @access public + * @param string $name Parameter Name + * @param mixed $value Parameter Value + * NOTE: will not work with arrays, there are no arrays to set/reset + * @todo Should this not be using __set() magic function? + */ + public function set($name, $value = '') { + try { + if (isset($this->$name) ) { + $this->$name = $value; + } else { + throw new EM_phpmailerException($this->Lang('variable_set') . $name, self::STOP_CRITICAL); + } + } catch (Exception $e) { + $this->SetError($e->getMessage()); + if ($e->getCode() == self::STOP_CRITICAL) { + return false; + } + } + return true; + } + + /** + * Strips newlines to prevent header injection. + * @access public + * @param string $str String + * @return string + */ + public function SecureHeader($str) { + $str = str_replace("\r", '', $str); + $str = str_replace("\n", '', $str); + return trim($str); + } + + /** + * Set the private key file and password to sign the message. + * + * @access public + * @param string $key_filename Parameter File Name + * @param string $key_pass Password for private key + */ + public function Sign($cert_filename, $key_filename, $key_pass) { + $this->sign_cert_file = $cert_filename; + $this->sign_key_file = $key_filename; + $this->sign_key_pass = $key_pass; + } + + /** + * Set the private key file and password to sign the message. + * + * @access public + * @param string $key_filename Parameter File Name + * @param string $key_pass Password for private key + */ + public function DKIM_QP($txt) { + $tmp = ''; + $line = ''; + for ($i = 0; $i < strlen($txt); $i++) { + $ord = ord($txt[$i]); + if ( ((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E)) ) { + $line .= $txt[$i]; + } else { + $line .= "=".sprintf("%02X", $ord); + } + } + return $line; + } + + /** + * Generate DKIM signature + * + * @access public + * @param string $s Header + */ + public function DKIM_Sign($s) { + $privKeyStr = file_get_contents($this->DKIM_private); + if ($this->DKIM_passphrase != '') { + $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase); + } else { + $privKey = $privKeyStr; + } + if (openssl_sign($s, $signature, $privKey)) { + return base64_encode($signature); + } + } + + /** + * Generate DKIM Canonicalization Header + * + * @access public + * @param string $s Header + */ + public function DKIM_HeaderC($s) { + $s = preg_replace("/\r\n\s+/", " ", $s); + $lines = explode("\r\n", $s); + foreach ($lines as $key => $line) { + list($heading, $value) = explode(":", $line, 2); + $heading = strtolower($heading); + $value = preg_replace("/\s+/", " ", $value) ; // Compress useless spaces + $lines[$key] = $heading.":".trim($value) ; // Don't forget to remove WSP around the value + } + $s = implode("\r\n", $lines); + return $s; + } + + /** + * Generate DKIM Canonicalization Body + * + * @access public + * @param string $body Message Body + */ + public function DKIM_BodyC($body) { + if ($body == '') return "\r\n"; + // stabilize line endings + $body = str_replace("\r\n", "\n", $body); + $body = str_replace("\n", "\r\n", $body); + // END stabilize line endings + while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") { + $body = substr($body, 0, strlen($body) - 2); + } + return $body; + } + + /** + * Create the DKIM header, body, as new header + * + * @access public + * @param string $headers_line Header lines + * @param string $subject Subject + * @param string $body Body + */ + public function DKIM_Add($headers_line, $subject, $body) { + $DKIMsignatureType = 'rsa-sha1'; // Signature & hash algorithms + $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body + $DKIMquery = 'dns/txt'; // Query method + $DKIMtime = time() ; // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone) + $subject_header = "Subject: $subject"; + $headers = explode($this->LE, $headers_line); + foreach($headers as $header) { + if (strpos($header, 'From:') === 0) { + $from_header = $header; + } elseif (strpos($header, 'To:') === 0) { + $to_header = $header; + } + } + $from = str_replace('|', '=7C', $this->DKIM_QP($from_header)); + $to = str_replace('|', '=7C', $this->DKIM_QP($to_header)); + $subject = str_replace('|', '=7C', $this->DKIM_QP($subject_header)) ; // Copied header fields (dkim-quoted-printable + $body = $this->DKIM_BodyC($body); + $DKIMlen = strlen($body) ; // Length of body + $DKIMb64 = base64_encode(pack("H*", sha1($body))) ; // Base64 of packed binary SHA-1 hash of body + $ident = ($this->DKIM_identity == '')? '' : " i=" . $this->DKIM_identity . ";"; + $dkimhdrs = "DKIM-Signature: v=1; a=" . $DKIMsignatureType . "; q=" . $DKIMquery . "; l=" . $DKIMlen . "; s=" . $this->DKIM_selector . ";\r\n". + "\tt=" . $DKIMtime . "; c=" . $DKIMcanonicalization . ";\r\n". + "\th=From:To:Subject;\r\n". + "\td=" . $this->DKIM_domain . ";" . $ident . "\r\n". + "\tz=$from\r\n". + "\t|$to\r\n". + "\t|$subject;\r\n". + "\tbh=" . $DKIMb64 . ";\r\n". + "\tb="; + $toSign = $this->DKIM_HeaderC($from_header . "\r\n" . $to_header . "\r\n" . $subject_header . "\r\n" . $dkimhdrs); + $signed = $this->DKIM_Sign($toSign); + return "X-PHPMAILER-DKIM: phpmailer.worxware.com\r\n".$dkimhdrs.$signed."\r\n"; + } + + protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body) { + if (!empty($this->action_function) && function_exists($this->action_function)) { + $params = array($isSent, $to, $cc, $bcc, $subject, $body); + call_user_func_array($this->action_function, $params); + } + } +} + +class EM_phpmailerException extends Exception { + public function errorMessage() { + $errorMsg = '<strong>' . $this->getMessage() . "</strong><br />\n"; + return $errorMsg; + } +} +?> diff --git a/wp-content/plugins/events-manager/classes/phpmailer/class.smtp.php b/wp-content/plugins/events-manager/classes/phpmailer/class.smtp.php new file mode 100644 index 0000000..7e55a06 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/class.smtp.php @@ -0,0 +1,817 @@ +<?php +/*~ class.smtp.php +.---------------------------------------------------------------------------. +| Software: PHPMailer - PHP email class | +| Version: 5.2 | +| Site: https://code.google.com/a/apache-extras.org/p/phpmailer/ | +| ------------------------------------------------------------------------- | +| Admin: Jim Jagielski (project admininistrator) | +| Authors: Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net | +| : Marcus Bointon (coolbru) coolbru@users.sourceforge.net | +| : Jim Jagielski (jimjag) jimjag@gmail.com | +| Founder: Brent R. Matzelle (original founder) | +| Copyright (c) 2010-2011, Jim Jagielski. All Rights Reserved. | +| Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved. | +| Copyright (c) 2001-2003, Brent R. Matzelle | +| ------------------------------------------------------------------------- | +| License: Distributed under the Lesser General Public License (LGPL) | +| http://www.gnu.org/copyleft/lesser.html | +| This program is distributed in the hope that it will be useful - WITHOUT | +| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | +| FITNESS FOR A PARTICULAR PURPOSE. | +'---------------------------------------------------------------------------' +*/ + +/** + * PHPMailer - PHP SMTP email transport class + * NOTE: Designed for use with PHP version 5 and up + * @package PHPMailer + * @author Andy Prevost + * @author Marcus Bointon + * @copyright 2004 - 2008 Andy Prevost + * @author Jim Jagielski + * @copyright 2010 - 2011 Jim Jagielski + * @license http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL) + * @version $Id: class.smtp.php 450 2010-06-23 16:46:33Z coolbru $ + */ + +/** + * SMTP is rfc 821 compliant and implements all the rfc 821 SMTP + * commands except TURN which will always return a not implemented + * error. SMTP also provides some utility methods for sending mail + * to an SMTP server. + * original author: Chris Ryan + */ + +class EM_SMTP { + /** + * SMTP server port + * @var int + */ + public $SMTP_PORT = 25; + + /** + * SMTP reply line ending + * @var string + */ + public $CRLF = "\r\n"; + + /** + * Sets whether debugging is turned on + * @var bool + */ + public $do_debug; // the level of debug to perform + + /** + * Sets VERP use on/off (default is off) + * @var bool + */ + public $do_verp = false; + + /** + * Sets the SMTP PHPMailer Version number + * @var string + */ + public $Version = '5.2'; + + ///////////////////////////////////////////////// + // PROPERTIES, PRIVATE AND PROTECTED + ///////////////////////////////////////////////// + + private $smtp_conn; // the socket to the server + private $error; // error if any on the last call + private $helo_rply; // the reply the server sent to us for HELO + + /** + * Initialize the class so that the data is in a known state. + * @access public + * @return void + */ + public function __construct() { + $this->smtp_conn = 0; + $this->error = null; + $this->helo_rply = null; + + $this->do_debug = 0; + } + + ///////////////////////////////////////////////// + // CONNECTION FUNCTIONS + ///////////////////////////////////////////////// + + /** + * Connect to the server specified on the port specified. + * If the port is not specified use the default SMTP_PORT. + * If tval is specified then a connection will try and be + * established with the server for that number of seconds. + * If tval is not specified the default is 30 seconds to + * try on the connection. + * + * SMTP CODE SUCCESS: 220 + * SMTP CODE FAILURE: 421 + * @access public + * @return bool + */ + public function Connect($host, $port = 0, $tval = 30) { + // set the error val to null so there is no confusion + $this->error = null; + + // make sure we are __not__ connected + if($this->connected()) { + // already connected, generate error + $this->error = array("error" => "Already connected to a server"); + return false; + } + + if(empty($port)) { + $port = $this->SMTP_PORT; + } + + // connect to the smtp server + $this->smtp_conn = @fsockopen($host, // the host of the server + $port, // the port to use + $errno, // error number if any + $errstr, // error message if any + $tval); // give up after ? secs + // verify we connected properly + if(empty($this->smtp_conn)) { + $this->error = array("error" => "Failed to connect to server", + "errno" => $errno, + "errstr" => $errstr); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />'; + } + return false; + } + + // SMTP server can take longer to respond, give longer timeout for first read + // Windows does not have support for this timeout function + if(substr(PHP_OS, 0, 3) != "WIN") + socket_set_timeout($this->smtp_conn, $tval, 0); + + // get any announcement + $announce = $this->get_lines(); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $announce . $this->CRLF . '<br />'; + } + + return true; + } + + /** + * Initiate a TLS communication with the server. + * + * SMTP CODE 220 Ready to start TLS + * SMTP CODE 501 Syntax error (no parameters allowed) + * SMTP CODE 454 TLS not available due to temporary reason + * @access public + * @return bool success + */ + public function StartTLS() { + $this->error = null; # to avoid confusion + + if(!$this->connected()) { + $this->error = array("error" => "Called StartTLS() without being connected"); + return false; + } + + fputs($this->smtp_conn,"STARTTLS" . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />'; + } + + if($code != 220) { + $this->error = + array("error" => "STARTTLS not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + + // Begin encrypted connection + if(!stream_socket_enable_crypto($this->smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) { + return false; + } + + return true; + } + + /** + * Performs SMTP authentication. Must be run after running the + * Hello() method. Returns true if successfully authenticated. + * @access public + * @return bool + */ + public function Authenticate($username, $password) { + // Start authentication + fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($code != 334) { + $this->error = + array("error" => "AUTH not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + + // Send encoded username + fputs($this->smtp_conn, base64_encode($username) . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($code != 334) { + $this->error = + array("error" => "Username not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + + // Send encoded password + fputs($this->smtp_conn, base64_encode($password) . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($code != 235) { + $this->error = + array("error" => "Password not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + + return true; + } + + /** + * Returns true if connected to a server otherwise false + * @access public + * @return bool + */ + public function Connected() { + if(!empty($this->smtp_conn)) { + $sock_status = socket_get_status($this->smtp_conn); + if($sock_status["eof"]) { + // the socket is valid but we are not connected + if($this->do_debug >= 1) { + echo "SMTP -> NOTICE:" . $this->CRLF . "EOF caught while checking if connected"; + } + $this->Close(); + return false; + } + return true; // everything looks good + } + return false; + } + + /** + * Closes the socket and cleans up the state of the class. + * It is not considered good to use this function without + * first trying to use QUIT. + * @access public + * @return void + */ + public function Close() { + $this->error = null; // so there is no confusion + $this->helo_rply = null; + if(!empty($this->smtp_conn)) { + // close the connection and cleanup + fclose($this->smtp_conn); + $this->smtp_conn = 0; + } + } + + ///////////////////////////////////////////////// + // SMTP COMMANDS + ///////////////////////////////////////////////// + + /** + * Issues a data command and sends the msg_data to the server + * finializing the mail transaction. $msg_data is the message + * that is to be send with the headers. Each header needs to be + * on a single line followed by a <CRLF> with the message headers + * and the message body being seperated by and additional <CRLF>. + * + * Implements rfc 821: DATA <CRLF> + * + * SMTP CODE INTERMEDIATE: 354 + * [data] + * <CRLF>.<CRLF> + * SMTP CODE SUCCESS: 250 + * SMTP CODE FAILURE: 552,554,451,452 + * SMTP CODE FAILURE: 451,554 + * SMTP CODE ERROR : 500,501,503,421 + * @access public + * @return bool + */ + public function Data($msg_data) { + $this->error = null; // so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Data() without being connected"); + return false; + } + + fputs($this->smtp_conn,"DATA" . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />'; + } + + if($code != 354) { + $this->error = + array("error" => "DATA command not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + + /* the server is ready to accept data! + * according to rfc 821 we should not send more than 1000 + * including the CRLF + * characters on a single line so we will break the data up + * into lines by \r and/or \n then if needed we will break + * each of those into smaller lines to fit within the limit. + * in addition we will be looking for lines that start with + * a period '.' and append and additional period '.' to that + * line. NOTE: this does not count towards limit. + */ + + // normalize the line breaks so we know the explode works + $msg_data = str_replace("\r\n","\n",$msg_data); + $msg_data = str_replace("\r","\n",$msg_data); + $lines = explode("\n",$msg_data); + + /* we need to find a good way to determine is headers are + * in the msg_data or if it is a straight msg body + * currently I am assuming rfc 822 definitions of msg headers + * and if the first field of the first line (':' sperated) + * does not contain a space then it _should_ be a header + * and we can process all lines before a blank "" line as + * headers. + */ + + $field = substr($lines[0],0,strpos($lines[0],":")); + $in_headers = false; + if(!empty($field) && !strstr($field," ")) { + $in_headers = true; + } + + $max_line_length = 998; // used below; set here for ease in change + + while(list(,$line) = @each($lines)) { + $lines_out = null; + if($line == "" && $in_headers) { + $in_headers = false; + } + // ok we need to break this line up into several smaller lines + while(strlen($line) > $max_line_length) { + $pos = strrpos(substr($line,0,$max_line_length)," "); + + // Patch to fix DOS attack + if(!$pos) { + $pos = $max_line_length - 1; + $lines_out[] = substr($line,0,$pos); + $line = substr($line,$pos); + } else { + $lines_out[] = substr($line,0,$pos); + $line = substr($line,$pos + 1); + } + + /* if processing headers add a LWSP-char to the front of new line + * rfc 822 on long msg headers + */ + if($in_headers) { + $line = "\t" . $line; + } + } + $lines_out[] = $line; + + // send the lines to the server + while(list(,$line_out) = @each($lines_out)) { + if(strlen($line_out) > 0) + { + if(substr($line_out, 0, 1) == ".") { + $line_out = "." . $line_out; + } + } + fputs($this->smtp_conn,$line_out . $this->CRLF); + } + } + + // message data has been sent + fputs($this->smtp_conn, $this->CRLF . "." . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />'; + } + + if($code != 250) { + $this->error = + array("error" => "DATA not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + return true; + } + + /** + * Sends the HELO command to the smtp server. + * This makes sure that we and the server are in + * the same known state. + * + * Implements from rfc 821: HELO <SP> <domain> <CRLF> + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE ERROR : 500, 501, 504, 421 + * @access public + * @return bool + */ + public function Hello($host = '') { + $this->error = null; // so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Hello() without being connected"); + return false; + } + + // if hostname for HELO was not specified send default + if(empty($host)) { + // determine appropriate default to send to server + $host = "localhost"; + } + + // Send extended hello first (RFC 2821) + if(!$this->SendHello("EHLO", $host)) { + if(!$this->SendHello("HELO", $host)) { + return false; + } + } + + return true; + } + + /** + * Sends a HELO/EHLO command. + * @access private + * @return bool + */ + private function SendHello($hello, $host) { + fputs($this->smtp_conn, $hello . " " . $host . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER: " . $rply . $this->CRLF . '<br />'; + } + + if($code != 250) { + $this->error = + array("error" => $hello . " not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + + $this->helo_rply = $rply; + + return true; + } + + /** + * Starts a mail transaction from the email address specified in + * $from. Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more Recipient + * commands may be called followed by a Data command. + * + * Implements rfc 821: MAIL <SP> FROM:<reverse-path> <CRLF> + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE SUCCESS: 552,451,452 + * SMTP CODE SUCCESS: 500,501,421 + * @access public + * @return bool + */ + public function Mail($from) { + $this->error = null; // so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Mail() without being connected"); + return false; + } + + $useVerp = ($this->do_verp ? "XVERP" : ""); + fputs($this->smtp_conn,"MAIL FROM:<" . $from . ">" . $useVerp . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />'; + } + + if($code != 250) { + $this->error = + array("error" => "MAIL not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + return true; + } + + /** + * Sends the quit command to the server and then closes the socket + * if there is no error or the $close_on_error argument is true. + * + * Implements from rfc 821: QUIT <CRLF> + * + * SMTP CODE SUCCESS: 221 + * SMTP CODE ERROR : 500 + * @access public + * @return bool + */ + public function Quit($close_on_error = true) { + $this->error = null; // so there is no confusion + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Quit() without being connected"); + return false; + } + + // send the quit command to the server + fputs($this->smtp_conn,"quit" . $this->CRLF); + + // get any good-bye messages + $byemsg = $this->get_lines(); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $byemsg . $this->CRLF . '<br />'; + } + + $rval = true; + $e = null; + + $code = substr($byemsg,0,3); + if($code != 221) { + // use e as a tmp var cause Close will overwrite $this->error + $e = array("error" => "SMTP server rejected quit command", + "smtp_code" => $code, + "smtp_rply" => substr($byemsg,4)); + $rval = false; + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $e["error"] . ": " . $byemsg . $this->CRLF . '<br />'; + } + } + + if(empty($e) || $close_on_error) { + $this->Close(); + } + + return $rval; + } + + /** + * Sends the command RCPT to the SMTP server with the TO: argument of $to. + * Returns true if the recipient was accepted false if it was rejected. + * + * Implements from rfc 821: RCPT <SP> TO:<forward-path> <CRLF> + * + * SMTP CODE SUCCESS: 250,251 + * SMTP CODE FAILURE: 550,551,552,553,450,451,452 + * SMTP CODE ERROR : 500,501,503,421 + * @access public + * @return bool + */ + public function Recipient($to) { + $this->error = null; // so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Recipient() without being connected"); + return false; + } + + fputs($this->smtp_conn,"RCPT TO:<" . $to . ">" . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />'; + } + + if($code != 250 && $code != 251) { + $this->error = + array("error" => "RCPT not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + return true; + } + + /** + * Sends the RSET command to abort and transaction that is + * currently in progress. Returns true if successful false + * otherwise. + * + * Implements rfc 821: RSET <CRLF> + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE ERROR : 500,501,504,421 + * @access public + * @return bool + */ + public function Reset() { + $this->error = null; // so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called Reset() without being connected"); + return false; + } + + fputs($this->smtp_conn,"RSET" . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />'; + } + + if($code != 250) { + $this->error = + array("error" => "RSET failed", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + + return true; + } + + /** + * Starts a mail transaction from the email address specified in + * $from. Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more Recipient + * commands may be called followed by a Data command. This command + * will send the message to the users terminal if they are logged + * in and send them an email. + * + * Implements rfc 821: SAML <SP> FROM:<reverse-path> <CRLF> + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE SUCCESS: 552,451,452 + * SMTP CODE SUCCESS: 500,501,502,421 + * @access public + * @return bool + */ + public function SendAndMail($from) { + $this->error = null; // so no confusion is caused + + if(!$this->connected()) { + $this->error = array( + "error" => "Called SendAndMail() without being connected"); + return false; + } + + fputs($this->smtp_conn,"SAML FROM:" . $from . $this->CRLF); + + $rply = $this->get_lines(); + $code = substr($rply,0,3); + + if($this->do_debug >= 2) { + echo "SMTP -> FROM SERVER:" . $rply . $this->CRLF . '<br />'; + } + + if($code != 250) { + $this->error = + array("error" => "SAML not accepted from server", + "smtp_code" => $code, + "smtp_msg" => substr($rply,4)); + if($this->do_debug >= 1) { + echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />'; + } + return false; + } + return true; + } + + /** + * This is an optional command for SMTP that this class does not + * support. This method is here to make the RFC821 Definition + * complete for this class and __may__ be implimented in the future + * + * Implements from rfc 821: TURN <CRLF> + * + * SMTP CODE SUCCESS: 250 + * SMTP CODE FAILURE: 502 + * SMTP CODE ERROR : 500, 503 + * @access public + * @return bool + */ + public function Turn() { + $this->error = array("error" => "This method, TURN, of the SMTP ". + "is not implemented"); + if($this->do_debug >= 1) { + echo "SMTP -> NOTICE: " . $this->error["error"] . $this->CRLF . '<br />'; + } + return false; + } + + /** + * Get the current error + * @access public + * @return array + */ + public function getError() { + return $this->error; + } + + ///////////////////////////////////////////////// + // INTERNAL FUNCTIONS + ///////////////////////////////////////////////// + + /** + * Read in as many lines as possible + * either before eof or socket timeout occurs on the operation. + * With SMTP we can tell if we have more lines to read if the + * 4th character is '-' symbol. If it is a space then we don't + * need to read anything else. + * @access private + * @return string + */ + private function get_lines() { + $data = ""; + while($str = @fgets($this->smtp_conn,515)) { + if($this->do_debug >= 4) { + echo "SMTP -> get_lines(): \$data was \"$data\"" . $this->CRLF . '<br />'; + echo "SMTP -> get_lines(): \$str is \"$str\"" . $this->CRLF . '<br />'; + } + $data .= $str; + if($this->do_debug >= 4) { + echo "SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF . '<br />'; + } + // if 4th character is a space, we are done reading, break the loop + if(substr($str,3,1) == " ") { break; } + } + return $data; + } + +} + +?> diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ar.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ar.php new file mode 100644 index 0000000..b7c5057 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ar.php @@ -0,0 +1,27 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Arabic Version, UTF-8 +* by : bahjat al mostafa <bahjat983@hotmail.com> +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Error: لم نستطع تأكيد الهوية.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Error: لم نستطع الاتصال بمخدم SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: لم يتم قبول المعلومات .'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'ترميز غير معروÙ: '; +$PHPMAILER_LANG['execute'] = 'لم أستطع تنÙيذ : '; +$PHPMAILER_LANG['file_access'] = 'لم نستطع الوصول للملÙ: '; +$PHPMAILER_LANG['file_open'] = 'File Error: لم نستطع ÙØªØ­ الملÙ: '; +$PHPMAILER_LANG['from_failed'] = 'البريد التالي لم نستطع ارسال البريد له : '; +$PHPMAILER_LANG['instantiate'] = 'لم نستطع توÙير خدمة البريد.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer غير مدعوم.'; +//$PHPMAILER_LANG['provide_address'] = 'You must provide at least one recipient email address.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: الأخطاء التالية ' . + 'ÙØ´Ù„ ÙÙŠ الارسال لكل من : '; +$PHPMAILER_LANG['signing'] = 'خطأ ÙÙŠ التوقيع: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-br.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-br.php new file mode 100644 index 0000000..6afe60b --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-br.php @@ -0,0 +1,26 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Portuguese Version +* By Paulo Henrique Garcia - paulo@controllerweb.com.br +*/ + +$PHPMAILER_LANG['authenticate'] = 'Erro de SMTP: Não foi possível autenticar.'; +$PHPMAILER_LANG['connect_host'] = 'Erro de SMTP: Não foi possível conectar com o servidor SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Erro de SMTP: Dados não aceitos.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: '; +$PHPMAILER_LANG['execute'] = 'Não foi possível executar: '; +$PHPMAILER_LANG['file_access'] = 'Não foi possível acessar o arquivo: '; +$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: Não foi possível abrir o arquivo: '; +$PHPMAILER_LANG['from_failed'] = 'Os endereços de rementente a seguir falharam: '; +$PHPMAILER_LANG['instantiate'] = 'Não foi possível instanciar a função mail.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não suportado.'; +$PHPMAILER_LANG['provide_address'] = 'Você deve fornecer pelo menos um endereço de destinatário de email.'; +$PHPMAILER_LANG['recipients_failed'] = 'Erro de SMTP: Os endereços de destinatário a seguir falharam: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ca.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ca.php new file mode 100644 index 0000000..4a160a2 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ca.php @@ -0,0 +1,26 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Catalan Version +* By Ivan: web AT microstudi DOT com +*/ + +$PHPMAILER_LANG['authenticate'] = 'Error SMTP: No s\'hapogut autenticar.'; +$PHPMAILER_LANG['connect_host'] = 'Error SMTP: No es pot connectar al servidor SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Dades no acceptades.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Codificació desconeguda: '; +$PHPMAILER_LANG['execute'] = 'No es pot executar: '; +$PHPMAILER_LANG['file_access'] = 'No es pot accedir a l\'arxiu: '; +$PHPMAILER_LANG['file_open'] = 'Error d\'Arxiu: No es pot obrir l\'arxiu: '; +$PHPMAILER_LANG['from_failed'] = 'La(s) següent(s) adreces de remitent han fallat: '; +$PHPMAILER_LANG['instantiate'] = 'No s\'ha pogut crear una instància de la funció Mail.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no està suportat'; +$PHPMAILER_LANG['provide_address'] = 'S\'ha de proveir almenys una adreça d\'email com a destinatari.'; +$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Els següents destinataris han fallat: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ch.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ch.php new file mode 100644 index 0000000..31ebd86 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ch.php @@ -0,0 +1,26 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Chinese Version +* By LiuXin: www.80x86.cn/blog/ +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP 错误:身份验è¯å¤±è´¥ã€‚'; +$PHPMAILER_LANG['connect_host'] = 'SMTP 错误: ä¸èƒ½è¿žæŽ¥SMTP主机。'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误: æ•°æ®ä¸å¯æŽ¥å—。'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = '未知编ç ï¼š'; +$PHPMAILER_LANG['execute'] = 'ä¸èƒ½æ‰§è¡Œ: '; +$PHPMAILER_LANG['file_access'] = 'ä¸èƒ½è®¿é—®æ–‡ä»¶ï¼š'; +$PHPMAILER_LANG['file_open'] = '文件错误:ä¸èƒ½æ‰“开文件:'; +$PHPMAILER_LANG['from_failed'] = '下é¢çš„å‘é€åœ°å€é‚®ä»¶å‘é€å¤±è´¥äº†ï¼š '; +$PHPMAILER_LANG['instantiate'] = 'ä¸èƒ½å®žçްmail方法。'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' 您所选择的å‘é€é‚®ä»¶çš„æ–¹æ³•并䏿”¯æŒã€‚'; +$PHPMAILER_LANG['provide_address'] = '您必须æä¾›è‡³å°‘一个 收信人的email地å€ã€‚'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误: 下é¢çš„ æ”¶ä»¶äººå¤±è´¥äº†ï¼š '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-cz.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-cz.php new file mode 100644 index 0000000..1c8b206 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-cz.php @@ -0,0 +1,25 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Czech Version +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Chyba autentikace.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Nelze navázat spojení se SMTP serverem.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Data nebyla pøijata'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Neznámé kódování: '; +$PHPMAILER_LANG['execute'] = 'Nelze provést: '; +$PHPMAILER_LANG['file_access'] = 'Soubor nenalezen: '; +$PHPMAILER_LANG['file_open'] = 'File Error: Nelze otevøít soubor pro ètení: '; +$PHPMAILER_LANG['from_failed'] = 'Následující adresa From je nesprávná: '; +$PHPMAILER_LANG['instantiate'] = 'Nelze vytvoøit instanci emailové funkce.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailový klient není podporován.'; +$PHPMAILER_LANG['provide_address'] = 'Musíte zadat alespoò jednu emailovou adresu pøíjemce.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Adresy pøíjemcù nejsou správné '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-de.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-de.php new file mode 100644 index 0000000..b2a76ce --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-de.php @@ -0,0 +1,25 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* German Version +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Fehler: Authentifizierung fehlgeschlagen.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Fehler: Daten werden nicht akzeptiert.'; +$PHPMAILER_LANG['empty_message'] = 'E-Mail Inhalt ist leer.'; +$PHPMAILER_LANG['encoding'] = 'Unbekanntes Encoding-Format: '; +$PHPMAILER_LANG['execute'] = 'Konnte folgenden Befehl nicht ausführen: '; +$PHPMAILER_LANG['file_access'] = 'Zugriff auf folgende Datei fehlgeschlagen: '; +$PHPMAILER_LANG['file_open'] = 'Datei Fehler: konnte folgende Datei nicht öffnen: '; +$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: '; +$PHPMAILER_LANG['instantiate'] = 'Mail Funktion konnte nicht initialisiert werden.'; +$PHPMAILER_LANG['invalid_email'] = 'E-Mail wird nicht gesendet, die Adresse ist ungültig.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.'; +$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfänger E-Mailadresse an.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Fehler: Die folgenden Empfänger sind nicht korrekt: '; +$PHPMAILER_LANG['signing'] = 'Fehler beim Signieren: '; +$PHPMAILER_LANG['smtp_connect_failed'] = 'Verbindung zu SMTP Server fehlgeschlagen.'; +$PHPMAILER_LANG['smtp_error'] = 'Fehler vom SMTP Server: '; +$PHPMAILER_LANG['variable_set'] = 'Kann Variable nicht setzen oder zurücksetzen: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-dk.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-dk.php new file mode 100644 index 0000000..b262573 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-dk.php @@ -0,0 +1,26 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Danish Version +* Author: Mikael Stokkebro <info@stokkebro.dk> +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP fejl: Kunne ikke logge pÃ¥.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP fejl: Kunne ikke tilslutte SMTP serveren.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fejl: Data kunne ikke accepteres.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Ukendt encode-format: '; +$PHPMAILER_LANG['execute'] = 'Kunne ikke køre: '; +$PHPMAILER_LANG['file_access'] = 'Ingen adgang til fil: '; +$PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke Ã¥bne filen: '; +$PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: '; +$PHPMAILER_LANG['instantiate'] = 'Kunne ikke initialisere email funktionen.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.'; +$PHPMAILER_LANG['provide_address'] = 'Du skal indtaste mindst en modtagers emailadresse.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere er forkerte: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-en.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-en.php new file mode 100644 index 0000000..14b677f --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-en.php @@ -0,0 +1,23 @@ +<?php +/** + * PHPMailer language file. + * English Version + */ + +$PHPMAILER_LANG = array(); + +$PHPMAILER_LANG["provide_address"] = 'You must provide at least one ' . + 'recipient email address.'; +$PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.'; +$PHPMAILER_LANG["execute"] = 'Could not execute: '; +$PHPMAILER_LANG["instantiate"] = 'Could not instantiate mail function.'; +$PHPMAILER_LANG["authenticate"] = 'SMTP Error: Could not authenticate.'; +$PHPMAILER_LANG["from_failed"] = 'The following From address failed: '; +$PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: The following ' . + 'recipients failed: '; +$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data not accepted.'; +$PHPMAILER_LANG["connect_host"] = 'SMTP Error: Could not connect to SMTP host.'; +$PHPMAILER_LANG["file_access"] = 'Could not access file: '; +$PHPMAILER_LANG["file_open"] = 'File Error: Could not open file: '; +$PHPMAILER_LANG["encoding"] = 'Unknown encoding: '; +?> diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-es.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-es.php new file mode 100644 index 0000000..69b6817 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-es.php @@ -0,0 +1,26 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Spanish version +* Versión en español +*/ + +$PHPMAILER_LANG['authenticate'] = 'Error SMTP: No se pudo autentificar.'; +$PHPMAILER_LANG['connect_host'] = 'Error SMTP: No puedo conectar al servidor SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Datos no aceptados.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Codificación desconocida: '; +$PHPMAILER_LANG['execute'] = 'No puedo ejecutar: '; +$PHPMAILER_LANG['file_access'] = 'No puedo acceder al archivo: '; +$PHPMAILER_LANG['file_open'] = 'Error de Archivo: No puede abrir el archivo: '; +$PHPMAILER_LANG['from_failed'] = 'La(s) siguiente(s) direcciones de remitente fallaron: '; +$PHPMAILER_LANG['instantiate'] = 'No pude crear una instancia de la función Mail.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no está soportado.'; +$PHPMAILER_LANG['provide_address'] = 'Debe proveer al menos una dirección de email como destinatario.'; +$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Los siguientes destinatarios fallaron: '; +$PHPMAILER_LANG['signing'] = 'Error al firmar: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-et.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-et.php new file mode 100644 index 0000000..cf61779 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-et.php @@ -0,0 +1,26 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Estonian Version +* By Indrek Päri +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Viga: Autoriseerimise viga.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Viga: Ei õnnestunud luua ühendust SMTP serveriga.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Viga: Vigased andmed.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Tundmatu Unknown kodeering: '; +$PHPMAILER_LANG['execute'] = 'Tegevus ebaõnnestus: '; +$PHPMAILER_LANG['file_access'] = 'Pole piisavalt õiguseid järgneva faili avamiseks: '; +$PHPMAILER_LANG['file_open'] = 'Faili Viga: Faili avamine ebaõnnestus: '; +$PHPMAILER_LANG['from_failed'] = 'Järgnev saatja e-posti aadress on vigane: '; +$PHPMAILER_LANG['instantiate'] = 'mail funktiooni käivitamine ebaõnnestus.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'Te peate määrama vähemalt ühe saaja e-posti aadressi.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' maileri tugi puudub.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Viga: Järgnevate saajate e-posti aadressid on vigased: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-fi.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-fi.php new file mode 100644 index 0000000..12a845a --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-fi.php @@ -0,0 +1,27 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Finnish Version +* By Jyry Kuukanen +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP-virhe: käyttäjätunnistus epäonnistui.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP-virhe: yhteys palvelimeen ei onnistu.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-virhe: data on virheellinen.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Tuntematon koodaustyyppi: '; +$PHPMAILER_LANG['execute'] = 'Suoritus epäonnistui: '; +$PHPMAILER_LANG['file_access'] = 'Seuraavaan tiedostoon ei ole oikeuksia: '; +$PHPMAILER_LANG['file_open'] = 'Tiedostovirhe: Ei voida avata tiedostoa: '; +$PHPMAILER_LANG['from_failed'] = 'Seuraava lähettäjän osoite on virheellinen: '; +$PHPMAILER_LANG['instantiate'] = 'mail-funktion luonti epäonnistui.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = 'postivälitintyyppiä ei tueta.'; +$PHPMAILER_LANG['provide_address'] = 'Aseta vähintään yksi vastaanottajan sähköpostiosoite.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP-virhe: seuraava vastaanottaja osoite on virheellinen.'; +$PHPMAILER_LANG['encoding'] = 'Tuntematon koodaustyyppi: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-fo.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-fo.php new file mode 100644 index 0000000..6bd9b0a --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-fo.php @@ -0,0 +1,27 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Faroese Version [language of the Faroe Islands, a Danish dominion] +* This file created: 11-06-2004 +* Supplied by Dávur Sørensen [www.profo-webdesign.dk] +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP feilur: Kundi ikki góðkenna.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP feilur: Kundi ikki knýta samband við SMTP vert.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP feilur: Data ikki góðkent.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Ókend encoding: '; +$PHPMAILER_LANG['execute'] = 'Kundi ikki útføra: '; +$PHPMAILER_LANG['file_access'] = 'Kundi ikki tilganga fílu: '; +$PHPMAILER_LANG['file_open'] = 'Fílu feilur: Kundi ikki opna fílu: '; +$PHPMAILER_LANG['from_failed'] = 'fylgjandi Frá/From adressa miseydnaðist: '; +$PHPMAILER_LANG['instantiate'] = 'Kuni ikki instantiera mail funktión.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' er ikki supporterað.'; +$PHPMAILER_LANG['provide_address'] = 'Tú skal uppgeva minst móttakara-emailadressu(r).'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feilur: Fylgjandi móttakarar miseydnaðust: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-fr.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-fr.php new file mode 100644 index 0000000..c99ac3c --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-fr.php @@ -0,0 +1,25 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* French Version +*/ + +$PHPMAILER_LANG['authenticate'] = 'Erreur SMTP : Echec de l\'authentification.'; +$PHPMAILER_LANG['connect_host'] = 'Erreur SMTP : Impossible de se connecter au serveur SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Erreur SMTP : Données incorrects.'; +$PHPMAILER_LANG['empty_message'] = 'Corps de message vide'; +$PHPMAILER_LANG['encoding'] = 'Encodage inconnu : '; +$PHPMAILER_LANG['execute'] = 'Impossible de lancer l\'exécution : '; +$PHPMAILER_LANG['file_access'] = 'Impossible d\'accéder au fichier : '; +$PHPMAILER_LANG['file_open'] = 'Erreur Fichier : ouverture impossible : '; +$PHPMAILER_LANG['from_failed'] = 'L\'adresse d\'expéditeur suivante a échouée : '; +$PHPMAILER_LANG['instantiate'] = 'Impossible d\'instancier la fonction mail.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' client de messagerie non supporté.'; +$PHPMAILER_LANG['provide_address'] = 'Vous devez fournir au moins une adresse de destinataire.'; +$PHPMAILER_LANG['recipients_failed'] = 'Erreur SMTP : Les destinataires suivants sont en erreur : '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-hu.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-hu.php new file mode 100644 index 0000000..caca0b5 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-hu.php @@ -0,0 +1,25 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Hungarian Version +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Hiba: Sikertelen autentikáció.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Hiba: Nem tudtam csatlakozni az SMTP host-hoz.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Hiba: Nem elfogadható adat.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Ismeretlen kódolás: '; +$PHPMAILER_LANG['execute'] = 'Nem tudtam végrehajtani: '; +$PHPMAILER_LANG['file_access'] = 'Nem sikerült elérni a következõ fájlt: '; +$PHPMAILER_LANG['file_open'] = 'Fájl Hiba: Nem sikerült megnyitni a következõ fájlt: '; +$PHPMAILER_LANG['from_failed'] = 'Az alábbi Feladó cím hibás: '; +$PHPMAILER_LANG['instantiate'] = 'Nem sikerült példányosítani a mail funkciót.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'Meg kell adnod legalább egy címzett email címet.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' levelezõ nem támogatott.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Hiba: Az alábbi címzettek hibásak: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-it.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-it.php new file mode 100644 index 0000000..fc1fcb8 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-it.php @@ -0,0 +1,27 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Italian version +* @package PHPMailer +* @author Ilias Bartolini <brain79@inwind.it> +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Impossibile autenticarsi.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Impossibile connettersi all\'host SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Data non accettati dal server.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Encoding set dei caratteri sconosciuto: '; +$PHPMAILER_LANG['execute'] = 'Impossibile eseguire l\'operazione: '; +$PHPMAILER_LANG['file_access'] = 'Impossibile accedere al file: '; +$PHPMAILER_LANG['file_open'] = 'File Error: Impossibile aprire il file: '; +$PHPMAILER_LANG['from_failed'] = 'I seguenti indirizzi mittenti hanno generato errore: '; +$PHPMAILER_LANG['instantiate'] = 'Impossibile istanziare la funzione mail'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'Deve essere fornito almeno un indirizzo ricevente'; +$PHPMAILER_LANG['mailer_not_supported'] = 'Mailer non supportato'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: I seguenti indirizzi destinatari hanno generato errore: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ja.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ja.php new file mode 100644 index 0000000..63cfb23 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ja.php @@ -0,0 +1,26 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Japanese Version +* By Mitsuhiro Yoshida - http://mitstek.com/ +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTPエラー: èªè¨¼ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$PHPMAILER_LANG['connect_host'] = 'SMTPエラー: SMTPãƒ›ã‚¹ãƒˆã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTPエラー: データãŒå—ã‘付ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = '䏿˜Žãªã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°: '; +$PHPMAILER_LANG['execute'] = '実行ã§ãã¾ã›ã‚“ã§ã—ãŸ: '; +$PHPMAILER_LANG['file_access'] = 'ファイルã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“: '; +$PHPMAILER_LANG['file_open'] = 'ファイルエラー: ファイルを開ã‘ã¾ã›ã‚“: '; +$PHPMAILER_LANG['from_failed'] = '次ã®Fromアドレスã«é–“é•ã„ãŒã‚りã¾ã™: '; +$PHPMAILER_LANG['instantiate'] = 'ãƒ¡ãƒ¼ãƒ«é–¢æ•°ãŒæ­£å¸¸ã«å‹•作ã—ã¾ã›ã‚“ã§ã—ãŸã€‚'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'å°‘ãªãã¨ã‚‚1ã¤ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ 指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚'; +$PHPMAILER_LANG['mailer_not_supported'] = ' メーラーãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTPエラー: 次ã®å—信者アドレス㫠間é•ã„ãŒã‚りã¾ã™: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-nl.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-nl.php new file mode 100644 index 0000000..d2c380b --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-nl.php @@ -0,0 +1,25 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Dutch Version +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Fout: authenticatie mislukt.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Fout: Kon niet verbinden met SMTP host.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Fout: Data niet geaccepteerd.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Onbekende codering: '; +$PHPMAILER_LANG['execute'] = 'Kon niet uitvoeren: '; +$PHPMAILER_LANG['file_access'] = 'Kreeg geen toegang tot bestand: '; +$PHPMAILER_LANG['file_open'] = 'Bestandsfout: Kon bestand niet openen: '; +$PHPMAILER_LANG['from_failed'] = 'De volgende afzender adressen zijn mislukt: '; +$PHPMAILER_LANG['instantiate'] = 'Kon mail functie niet initialiseren.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'Er moet tenmiste één ontvanger emailadres opgegeven worden.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wordt niet ondersteund.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Fout: De volgende ontvangers zijn mislukt: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-no.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-no.php new file mode 100644 index 0000000..65cb884 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-no.php @@ -0,0 +1,25 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Norwegian Version +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Feil: Kunne ikke authentisere.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Feil: Kunne ikke koble til SMTP host.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Feil: Data ble ikke akseptert.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Ukjent encoding: '; +$PHPMAILER_LANG['execute'] = 'Kunne ikke utføre: '; +$PHPMAILER_LANG['file_access'] = 'Kunne ikke fÃ¥ tilgang til filen: '; +$PHPMAILER_LANG['file_open'] = 'Fil feil: Kunne ikke Ã¥pne filen: '; +$PHPMAILER_LANG['from_failed'] = 'Følgende Fra feilet: '; +$PHPMAILER_LANG['instantiate'] = 'Kunne ikke instantiate mail funksjonen.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'Du mÃ¥ ha med minst en mottager adresse.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer er ikke supportert.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feil: Følgende mottagere feilet: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-pl.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-pl.php new file mode 100644 index 0000000..f4fd801 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-pl.php @@ -0,0 +1,25 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Polish Version +*/ + +$PHPMAILER_LANG['authenticate'] = 'Błąd SMTP: Nie można przeprowadzić autentykacji.'; +$PHPMAILER_LANG['connect_host'] = 'Błąd SMTP: Nie można połączyć siÄ™ z wybranym hostem.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Błąd SMTP: Dane nie zostaÅ‚y przyjÄ™te.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Nieznany sposób kodowania znaków: '; +$PHPMAILER_LANG['execute'] = 'Nie można uruchomić: '; +$PHPMAILER_LANG['file_access'] = 'Brak dostÄ™pu do pliku: '; +$PHPMAILER_LANG['file_open'] = 'Nie można otworzyć pliku: '; +$PHPMAILER_LANG['from_failed'] = 'NastÄ™pujÄ…cy adres Nadawcy jest jest nieprawidÅ‚owy: '; +$PHPMAILER_LANG['instantiate'] = 'Nie można wywoÅ‚ać funkcji mail(). Sprawdź konfiguracjÄ™ serwera.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'Należy podać prawidÅ‚owy adres email Odbiorcy.'; +$PHPMAILER_LANG['mailer_not_supported'] = 'Wybrana metoda wysyÅ‚ki wiadomoÅ›ci nie jest obsÅ‚ugiwana.'; +$PHPMAILER_LANG['recipients_failed'] = 'Błąd SMTP: NastÄ™pujÄ…cy odbiorcy sÄ… nieprawidÅ‚owi: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ro.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ro.php new file mode 100644 index 0000000..f6aa922 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ro.php @@ -0,0 +1,27 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Romanian Version +* @package PHPMailer +* @author Catalin Constantin <catalin@dazoot.ro> +*/ + +$PHPMAILER_LANG['authenticate'] = 'Eroare SMTP: Nu a functionat autentificarea.'; +$PHPMAILER_LANG['connect_host'] = 'Eroare SMTP: Nu m-am putut conecta la adresa SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Eroare SMTP: Continutul mailului nu a fost acceptat.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Encodare necunoscuta: '; +$PHPMAILER_LANG['execute'] = 'Nu pot executa: '; +$PHPMAILER_LANG['file_access'] = 'Nu pot accesa fisierul: '; +$PHPMAILER_LANG['file_open'] = 'Eroare de fisier: Nu pot deschide fisierul: '; +$PHPMAILER_LANG['from_failed'] = 'Urmatoarele adrese From au dat eroare: '; +$PHPMAILER_LANG['instantiate'] = 'Nu am putut instantia functia mail.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nu este suportat.'; +$PHPMAILER_LANG['provide_address'] = 'Trebuie sa adaugati cel putin un recipient (adresa de mail).'; +$PHPMAILER_LANG['recipients_failed'] = 'Eroare SMTP: Urmatoarele adrese de mail au dat eroare: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ru.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ru.php new file mode 100644 index 0000000..d699052 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-ru.php @@ -0,0 +1,25 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Russian Version by Alexey Chumakov <alex@chumakov.ru> +*/ + +$PHPMAILER_LANG['authenticate'] = 'Ошибка SMTP: ошибка авторизации.'; +$PHPMAILER_LANG['connect_host'] = 'Ошибка SMTP: не удаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº Ñерверу SMTP.'; +$PHPMAILER_LANG['data_not_accepted'] = 'Ошибка SMTP: данные не принÑты.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'ÐеизвеÑтный вид кодировки: '; +$PHPMAILER_LANG['execute'] = 'Ðевозможно выполнить команду: '; +$PHPMAILER_LANG['file_access'] = 'Ðет доÑтупа к файлу: '; +$PHPMAILER_LANG['file_open'] = 'Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: не удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл: '; +$PHPMAILER_LANG['from_failed'] = 'Ðеверный Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÐµÐ»Ñ: '; +$PHPMAILER_LANG['instantiate'] = 'Ðевозможно запуÑтить функцию mail.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'ПожалуйÑта, введите Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один Ð°Ð´Ñ€ÐµÑ e-mail получателÑ.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' - почтовый Ñервер не поддерживаетÑÑ.'; +$PHPMAILER_LANG['recipients_failed'] = 'Ошибка SMTP: отправка по Ñледующим адреÑам получателей не удалаÑÑŒ: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-se.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-se.php new file mode 100644 index 0000000..67e05f5 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-se.php @@ -0,0 +1,26 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Swedish Version +* Author: Johan Linnér <johan@linner.biz> +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP fel: Kunde inte autentisera.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP fel: Kunde inte ansluta till SMTP-server.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fel: Data accepterades inte.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Okänt encode-format: '; +$PHPMAILER_LANG['execute'] = 'Kunde inte köra: '; +$PHPMAILER_LANG['file_access'] = 'Ingen Ã¥tkomst till fil: '; +$PHPMAILER_LANG['file_open'] = 'Fil fel: Kunde inte öppna fil: '; +$PHPMAILER_LANG['from_failed'] = 'Följande avsändaradress är felaktig: '; +$PHPMAILER_LANG['instantiate'] = 'Kunde inte initiera e-postfunktion.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'Du mÃ¥ste ange minst en mottagares e-postadress.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP fel: Följande mottagare är felaktig: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-tr.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-tr.php new file mode 100644 index 0000000..d24627a --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-tr.php @@ -0,0 +1,27 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Turkish version +* Türkçe Versiyonu +* ÃZYAZILIM - Elçin Özel - Can Yýlmaz - Mehmet Benlioðlu +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP Hatasý: Doðrulanamýyor.'; +$PHPMAILER_LANG['connect_host'] = 'SMTP Hatasý: SMTP hosta baðlanýlamýyor.'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Hatasý: Veri kabul edilmedi.'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = 'Bilinmeyen þifreleme: '; +$PHPMAILER_LANG['execute'] = 'Çalýþtýrýlamýyor: '; +$PHPMAILER_LANG['file_access'] = 'Dosyaya eriþilemiyor: '; +$PHPMAILER_LANG['file_open'] = 'Dosya Hatasý: Dosya açýlamýyor: '; +$PHPMAILER_LANG['from_failed'] = 'Baþarýsýz olan gönderici adresi: '; +$PHPMAILER_LANG['instantiate'] = 'Örnek mail fonksiyonu yaratýlamadý.'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'En az bir tane mail adresi belirtmek zorundasýnýz alýcýnýn email adresi.'; +$PHPMAILER_LANG['mailer_not_supported'] = ' mailler desteklenmemektedir.'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP Hatasý: alýcýlara ulaþmadý: '; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-zh.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-zh.php new file mode 100644 index 0000000..fef66f8 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-zh.php @@ -0,0 +1,26 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Traditional Chinese Version +* @author liqwei <liqwei@liqwei.com> +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP 錯誤:登錄失敗。'; +$PHPMAILER_LANG['connect_host'] = 'SMTP 錯誤:無法連接到 SMTP 主機。'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 錯誤:數據ä¸è¢«æŽ¥å—。'; +//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = '未知編碼: '; +$PHPMAILER_LANG['file_access'] = 'ç„¡æ³•è¨ªå•æ–‡ä»¶ï¼š'; +$PHPMAILER_LANG['file_open'] = '文件錯誤:無法打開文件:'; +$PHPMAILER_LANG['from_failed'] = '發é€åœ°å€éŒ¯èª¤ï¼š'; +$PHPMAILER_LANG['execute'] = '無法執行:'; +$PHPMAILER_LANG['instantiate'] = '未知函數調用。'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['provide_address'] = 'å¿…é ˆæä¾›è‡³å°‘一個收件人地å€ã€‚'; +$PHPMAILER_LANG['mailer_not_supported'] = '發信客戶端ä¸è¢«æ”¯æŒã€‚'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP 錯誤:收件人地å€éŒ¯èª¤ï¼š'; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-zh_cn.php b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-zh_cn.php new file mode 100644 index 0000000..b188404 --- /dev/null +++ b/wp-content/plugins/events-manager/classes/phpmailer/language/phpmailer.lang-zh_cn.php @@ -0,0 +1,26 @@ +<?php +/** +* PHPMailer language file: refer to English translation for definitive list +* Simplified Chinese Version +* @author liqwei <liqwei@liqwei.com> +*/ + +$PHPMAILER_LANG['authenticate'] = 'SMTP 错误:登录失败。'; +$PHPMAILER_LANG['connect_host'] = 'SMTP 错误:无法连接到 SMTP 主机。'; +$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误:数æ®ä¸è¢«æŽ¥å—。'; +//$P$PHPMAILER_LANG['empty_message'] = 'Message body empty'; +$PHPMAILER_LANG['encoding'] = '未知编ç : '; +$PHPMAILER_LANG['execute'] = '无法执行:'; +$PHPMAILER_LANG['file_access'] = '无法访问文件:'; +$PHPMAILER_LANG['file_open'] = '文件错误:无法打开文件:'; +$PHPMAILER_LANG['from_failed'] = 'å‘é€åœ°å€é”™è¯¯ï¼š'; +$PHPMAILER_LANG['instantiate'] = '未知函数调用。'; +//$PHPMAILER_LANG['invalid_email'] = 'Not sending, email address is invalid: '; +$PHPMAILER_LANG['mailer_not_supported'] = 'å‘信客户端ä¸è¢«æ”¯æŒã€‚'; +$PHPMAILER_LANG['provide_address'] = 'å¿…é¡»æä¾›è‡³å°‘一个收件人地å€ã€‚'; +$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误:收件人地å€é”™è¯¯ï¼š'; +//$PHPMAILER_LANG['signing'] = 'Signing Error: '; +//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; +//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; +//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-actions.php b/wp-content/plugins/events-manager/em-actions.php new file mode 100644 index 0000000..208d6c7 --- /dev/null +++ b/wp-content/plugins/events-manager/em-actions.php @@ -0,0 +1,656 @@ +<?php +/** + * Performs actions on init. This works for both ajax and normal requests, the return results depends if an em_ajax flag is passed via POST or GET. + */ +function em_init_actions() { + global $wpdb,$EM_Notices,$EM_Event; + if( defined('DOING_AJAX') && DOING_AJAX ) $_REQUEST['em_ajax'] = true; + + //NOTE - No EM objects are globalized at this point, as we're hitting early init mode. + //TODO Clean this up.... use a uniformed way of calling EM Ajax actions + if( !empty($_REQUEST['em_ajax']) || !empty($_REQUEST['em_ajax_action']) ){ + if(isset($_REQUEST['em_ajax_action']) && $_REQUEST['em_ajax_action'] == 'get_location') { + if(isset($_REQUEST['id'])){ + $EM_Location = new EM_Location($_REQUEST['id'], 'location_id'); + $location_array = $EM_Location->to_array(); + $location_array['location_balloon'] = $EM_Location->output(get_option('dbem_location_baloon_format')); + echo EM_Object::json_encode($location_array); + } + die(); + } + if(isset($_REQUEST['em_ajax_action']) && $_REQUEST['em_ajax_action'] == 'delete_ticket') { + if(isset($_REQUEST['id'])){ + $EM_Ticket = new EM_Ticket($_REQUEST['id']); + $result = $EM_Ticket->delete(); + if($result){ + $result = array('result'=>true); + }else{ + $result = array('result'=>false, 'error'=>$EM_Ticket->feedback_message); + } + }else{ + $result = array('result'=>false, 'error'=>__('No ticket id provided','dbem')); + } + echo EM_Object::json_encode($result); + die(); + } + if(isset($_REQUEST['query']) && $_REQUEST['query'] == 'GlobalMapData') { + $EM_Locations = EM_Locations::get( $_REQUEST ); + $json_locations = array(); + foreach($EM_Locations as $location_key => $EM_Location) { + $json_locations[$location_key] = $EM_Location->to_array(); + $json_locations[$location_key]['location_balloon'] = $EM_Location->output(get_option('dbem_map_text_format')); + } + echo EM_Object::json_encode($json_locations); + die(); + } + + if(isset($_REQUEST['ajaxCalendar']) && $_REQUEST['ajaxCalendar']) { + //FIXME if long events enabled originally, this won't show up on ajax call + echo EM_Calendar::output($_REQUEST, false); + die(); + } + } + + //Event Actions + if( !empty($_REQUEST['action']) && substr($_REQUEST['action'],0,5) == 'event' ){ + //Load the event object, with saved event if requested + if( !empty($_REQUEST['event_id']) ){ + $EM_Event = new EM_Event($_REQUEST['event_id']); + }else{ + $EM_Event = new EM_Event(); + } + //Save Event, only via BP or via [event_form] + if( $_REQUEST['action'] == 'event_save' && $EM_Event->can_manage('edit_events','edit_others_events') ){ + //Check Nonces + if( !wp_verify_nonce($_REQUEST['_wpnonce'], 'wpnonce_event_save') ) exit('Trying to perform an illegal action.'); + //Grab and validate submitted data + if ( $EM_Event->get_post() && $EM_Event->save() ) { //EM_Event gets the event if submitted via POST and validates it (safer than to depend on JS) + $events_result = true; + //Success notice + if( is_user_logged_in() ){ + $EM_Notices->add_confirm( $EM_Event->output(get_option('dbem_events_form_result_success')), true); + }else{ + $EM_Notices->add_confirm( $EM_Event->output(get_option('dbem_events_anonymous_result_success')), true); + } + $redirect = !empty($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : wp_get_referer(); + $redirect = em_add_get_params($redirect, array('success'=>1)); + wp_redirect( $redirect ); + exit(); + }else{ + $EM_Notices->add_error( $EM_Event->get_errors() ); + $events_result = false; + } + } + if ( $_REQUEST['action'] == 'event_duplicate' && wp_verify_nonce($_REQUEST['_wpnonce'],'event_duplicate_'.$EM_Event->event_id) ) { + $EM_Event = $EM_Event->duplicate(); + if( $EM_Event === false ){ + $EM_Notices->add_error($EM_Event->errors, true); + }else{ + $EM_Notices->add_confirm($EM_Event->feedback_message, true); + } + wp_redirect( wp_get_referer() ); + exit(); + } + if ( $_REQUEST['action'] == 'event_delete' && wp_verify_nonce($_REQUEST['_wpnonce'],'event_delete_'.$EM_Event->event_id) ) { + //DELETE action + $selectedEvents = !empty($_REQUEST['events']) ? $_REQUEST['events']:''; + if( EM_Object::array_is_numeric($selectedEvents) ){ + $events_result = EM_Events::delete( $selectedEvents ); + }elseif( is_object($EM_Event) ){ + $events_result = $EM_Event->delete(); + } + $plural = (count($selectedEvents) > 1) ? __('Events','dbem'):__('Event','dbem'); + if($events_result){ + $message = ( !empty($EM_Event->feedback_message) ) ? $EM_Event->feedback_message : sprintf(__('%s successfully deleted.','dbem'),$plural); + $EM_Notices->add_confirm( $message, true ); + }else{ + $message = ( !empty($EM_Event->errors) ) ? $EM_Event->errors : sprintf(__('%s could not be deleted.','dbem'),$plural); + $EM_Notices->add_error( $message, true ); + } + wp_redirect( wp_get_referer() ); + exit(); + }elseif( $_REQUEST['action'] == 'event_detach' && wp_verify_nonce($_REQUEST['_wpnonce'],'event_detach_'.get_current_user_id().'_'.$EM_Event->event_id) ){ + //Detach event and move on + if($EM_Event->detach()){ + $EM_Notices->add_confirm( $EM_Event->feedback_message, true ); + }else{ + $EM_Notices->add_error( $EM_Event->errors, true ); + } + wp_redirect(wp_get_referer()); + exit(); + }elseif( $_REQUEST['action'] == 'event_attach' && !empty($_REQUEST['undo_id']) && wp_verify_nonce($_REQUEST['_wpnonce'],'event_attach_'.get_current_user_id().'_'.$EM_Event->event_id) ){ + //Detach event and move on + if($EM_Event->attach($_REQUEST['undo_id'])){ + $EM_Notices->add_confirm( $EM_Event->feedback_message, true ); + }else{ + $EM_Notices->add_error( $EM_Event->errors, true ); + } + wp_redirect(wp_get_referer()); + exit(); + } + + //AJAX Exit + if( isset($events_result) && !empty($_REQUEST['em_ajax']) ){ + if( $events_result ){ + $return = array('result'=>true, 'message'=>$EM_Event->feedback_message); + }else{ + $return = array('result'=>false, 'message'=>$EM_Event->feedback_message, 'errors'=>$EM_Event->errors); + } + } + } + + //Location Actions + if( !empty($_REQUEST['action']) && substr($_REQUEST['action'],0,8) == 'location' ){ + global $EM_Location, $EM_Notices; + //Load the location object, with saved event if requested + if( !empty($_REQUEST['location_id']) ){ + $EM_Location = new EM_Location($_REQUEST['location_id']); + }else{ + $EM_Location = new EM_Location(); + } + if( $_REQUEST['action'] == 'location_save' && current_user_can('edit_locations') ){ + if( get_site_option('dbem_ms_mainblog_locations') ) EM_Object::ms_global_switch(); //switch to main blog if locations are global + //Check Nonces + em_verify_nonce('location_save'); + //Grab and validate submitted data + if ( $EM_Location->get_post() && $EM_Location->save() ) { //EM_location gets the location if submitted via POST and validates it (safer than to depend on JS) + $EM_Notices->add_confirm($EM_Location->feedback_message, true); + $redirect = !empty($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : wp_get_referer(); + wp_redirect( $redirect ); + exit(); + }else{ + $EM_Notices->add_error( $EM_Location->get_errors() ); + $result = false; + } + if( get_site_option('dbem_ms_mainblog_locations') ) EM_Object::ms_global_switch_back(); + }elseif( !empty($_REQUEST['action']) && $_REQUEST['action'] == "location_delete" ){ + //delete location + //get object or objects + if( !empty($_REQUEST['locations']) || !empty($_REQUEST['location_id']) ){ + $args = !empty($_REQUEST['locations']) ? $_REQUEST['locations']:$_REQUEST['location_id']; + $locations = EM_Locations::get($args); + foreach($locations as $location) { + if( !$location->delete() ){ + $EM_Notices->add_error($location->get_errors()); + $errors = true; + } + } + if( empty($errors) ){ + $result = true; + $location_term = ( count($locations) > 1 ) ?__('Locations', 'dbem') : __('Location', 'dbem'); + $EM_Notices->add_confirm( sprintf(__('%s successfully deleted', 'dbem'), $location_term) ); + }else{ + $result = false; + } + } + }elseif( !empty($_REQUEST['action']) && $_REQUEST['action'] == "locations_search" && (!empty($_REQUEST['term']) || !empty($_REQUEST['q'])) ){ + $results = array(); + if( is_user_logged_in() || ( get_option('dbem_events_anonymous_submissions') && user_can(get_option('dbem_events_anonymous_user'), 'read_others_locations') ) ){ + $location_cond = (is_user_logged_in() && !current_user_can('read_others_locations')) ? "AND location_owner=".get_current_user_id() : ''; + $term = (isset($_REQUEST['term'])) ? '%'.$_REQUEST['term'].'%' : '%'.$_REQUEST['q'].'%'; + $sql = $wpdb->prepare(" + SELECT + location_id AS `id`, + Concat( location_name, ', ', location_address, ', ', location_town) AS `label`, + location_name AS `value`, + location_address AS `address`, + location_town AS `town`, + location_state AS `state`, + location_region AS `region`, + location_postcode AS `postcode`, + location_country AS `country` + FROM ".EM_LOCATIONS_TABLE." + WHERE ( `location_name` LIKE %s ) AND location_status=1 $location_cond LIMIT 10 + ", $term); + $results = $wpdb->get_results($sql); + } + echo EM_Object::json_encode($results); + die(); + } + if( isset($result) && $result && !empty($_REQUEST['em_ajax']) ){ + $return = array('result'=>true, 'message'=>$EM_Location->feedback_message); + echo EM_Object::json_encode($return); + die(); + }elseif( isset($result) && !$result && !empty($_REQUEST['em_ajax']) ){ + $return = array('result'=>false, 'message'=>$EM_Location->feedback_message, 'errors'=>$EM_Notices->get_errors()); + echo EM_Object::json_encode($return); + die(); + } + } + + //Booking Actions + if( !empty($_REQUEST['action']) && substr($_REQUEST['action'],0,7) == 'booking' && (is_user_logged_in() || ($_REQUEST['action'] == 'booking_add' && get_option('dbem_bookings_anonymous'))) ){ + global $EM_Event, $EM_Booking, $EM_Person; + //Load the booking object, with saved booking if requested + $EM_Booking = ( !empty($_REQUEST['booking_id']) ) ? new EM_Booking($_REQUEST['booking_id']) : new EM_Booking(); + if( !empty($EM_Booking->event_id) ){ + //Load the event object, with saved event if requested + $EM_Event = $EM_Booking->get_event(); + }elseif( !empty($_REQUEST['event_id']) ){ + $EM_Event = new EM_Event($_REQUEST['event_id']); + } + $allowed_actions = array('bookings_approve'=>'approve','bookings_reject'=>'reject','bookings_unapprove'=>'unapprove', 'bookings_delete'=>'delete'); + $result = false; + $feedback = ''; + if ( $_REQUEST['action'] == 'booking_add') { + //ADD/EDIT Booking + ob_start(); + em_verify_nonce('booking_add'); + if( !is_user_logged_in() || get_option('dbem_bookings_double') || !$EM_Event->get_bookings()->has_booking(get_current_user_id()) ){ + $post_validation = $EM_Booking->get_post(); + do_action('em_booking_add', $EM_Event, $EM_Booking, $post_validation); + if( $post_validation ){ + //Does this user need to be registered first? + $registration = true; + //TODO do some ticket validation before registering the user + if ( $EM_Event->get_bookings()->get_available_spaces() >= $EM_Booking->get_spaces(true) ) { + if( (!is_user_logged_in() || defined('EM_FORCE_REGISTRATION')) && get_option('dbem_bookings_anonymous') && !get_option('dbem_bookings_registration_disable') ){ + //find random username - less options for user, less things go wrong + $username_root = explode('@', $_REQUEST['user_email']); + $username_rand = $username_root[0].rand(1,1000); + while( username_exists($username_root[0].rand(1,1000)) ){ + $username_rand = $username_root[0].rand(1,1000); + } + $_REQUEST['dbem_phone'] = (!empty($_REQUEST['dbem_phone'])) ? $_REQUEST['dbem_phone']:''; //fix to prevent warnings + $_REQUEST['user_name'] = (!empty($_REQUEST['user_name'])) ? $_REQUEST['user_name']:''; //fix to prevent warnings + $user_data = array('user_login' => $username_rand, 'user_email'=> $_REQUEST['user_email'], 'user_name'=> $_REQUEST['user_name'], 'dbem_phone'=> $_REQUEST['dbem_phone']); + $id = em_register_new_user($user_data); + if( is_numeric($id) ){ + $EM_Person = new EM_Person($id); + $EM_Booking->person_id = $id; + $feedback = get_option('dbem_booking_feedback_new_user'); + $EM_Notices->add_confirm( $feedback ); + }else{ + $registration = false; + if( is_object($id) && get_class($id) == 'WP_Error'){ + /* @var $id WP_Error */ + if( $id->get_error_code() == 'email_exists' ){ + $EM_Notices->add_error( get_option('dbem_booking_feedback_email_exists') ); + }else{ + $EM_Notices->add_error( $id->get_error_messages() ); + } + }else{ + $EM_Notices->add_error( get_option('dbem_booking_feedback_reg_error') ); + } + } + }elseif( (!is_user_logged_in() || defined('EM_FORCE_REGISTRATION')) && get_option('dbem_bookings_registration_disable') ){ + //Validate name, phone and email + $user_data = array(); + if( empty($EM_Booking->booking_meta['registration']) ) $EM_Booking->booking_meta['registration'] = array(); + // Check the e-mail address + if ( $_REQUEST['user_email'] == '' ) { + $registration = false; + $EM_Notices->add_error(__( '<strong>ERROR</strong>: Please type your e-mail address.', 'dbem') ); + } elseif ( !is_email( $_REQUEST['user_email'] ) ) { + $registration = false; + $EM_Notices->add_error( __( '<strong>ERROR</strong>: The email address isn’t correct.', 'dbem') ); + }elseif(email_exists( $_REQUEST['user_email'] )){ + $registration = false; + $EM_Notices->add_error( get_option('dbem_booking_feedback_email_exists') ); + }else{ + $user_data['user_email'] = $_REQUEST['user_email']; + } + //Check the user name + if( !empty($_REQUEST['user_name']) ){ + $name_string = explode(' ',wp_kses($_REQUEST['user_name'], array())); + $user_data['first_name'] = array_shift($name_string); + $user_data['last_name'] = implode(' ', $name_string); + } + //Check the first/last name + if( !empty($_REQUEST['first_name']) ){ + $user_data['first_name'] = wp_kses($_REQUEST['first_name'], array()); + } + if( !empty($_REQUEST['last_name']) ){ + $user_data['last_name'] = wp_kses($_REQUEST['last_name'], array()); + } + //Check the phone + if( !empty($_REQUEST['dbem_phone']) ){ + $user_data['dbem_phone'] = wp_kses($_REQUEST['dbem_phone'], array()); + } + //Add booking meta + $EM_Booking->booking_meta['registration'] = array_merge($EM_Booking->booking_meta['registration'], $user_data); //in case someone else added stuff + //Save default person to booking + $EM_Booking->person_id = get_option('dbem_bookings_registration_user'); + }elseif( !is_user_logged_in() ){ + $registration = false; + $EM_Notices->add_error( get_option('dbem_booking_feedback_log_in') ); + }elseif( empty($EM_Booking->person_id) ){ //user must be logged in, so we make this person the current user id + $EM_Booking->person_id = get_current_user_id(); + } + } + $EM_Bookings = $EM_Event->get_bookings(); + if( $registration && $EM_Bookings->add($EM_Booking) ){ + $result = true; + $EM_Notices->add_confirm( $EM_Bookings->feedback_message ); + $feedback = $EM_Bookings->feedback_message; + }else{ + $result = false; + $EM_Notices->add_error( $EM_Bookings->get_errors() ); + $feedback = $EM_Bookings->feedback_message; + } + }else{ + $result = false; + $EM_Notices->add_error( $EM_Booking->get_errors() ); + } + }else{ + $result = false; + $feedback = get_option('dbem_booking_feedback_already_booked'); + $EM_Notices->add_error( $feedback ); + } + ob_clean(); + }elseif ( $_REQUEST['action'] == 'booking_add_one' && is_object($EM_Event) && is_user_logged_in() ) { + //ADD/EDIT Booking + em_verify_nonce('booking_add_one'); + if( !$EM_Event->get_bookings()->has_booking(get_current_user_id()) || get_option('dbem_bookings_double')){ + $EM_Booking = new EM_Booking(array('person_id'=>get_current_user_id(), 'event_id'=>$EM_Event->event_id, 'booking_spaces'=>1)); //new booking + $EM_Ticket = $EM_Event->get_bookings()->get_tickets()->get_first(); + //get first ticket in this event and book one place there. similar to getting the form values in EM_Booking::get_post_values() + $EM_Ticket_Booking = new EM_Ticket_Booking(array('ticket_id'=>$EM_Ticket->ticket_id, 'ticket_booking_spaces'=>1)); + $EM_Booking->tickets_bookings = new EM_Tickets_Bookings(); + $EM_Booking->tickets_bookings->booking = $EM_Ticket_Booking->booking = $EM_Booking; + $EM_Booking->tickets_bookings->add( $EM_Ticket_Booking ); + //Now save booking + if( $EM_Event->get_bookings()->add($EM_Booking) ){ + $result = true; + $EM_Notices->add_confirm( $EM_Event->get_bookings()->feedback_message ); + $feedback = $EM_Event->get_bookings()->feedback_message; + }else{ + $result = false; + $EM_Notices->add_error( $EM_Event->get_bookings()->get_errors() ); + $feedback = $EM_Event->get_bookings()->feedback_message; + } + }else{ + $result = false; + $feedback = get_option('dbem_booking_feedback_already_booked'); + $EM_Notices->add_error( $feedback ); + } + }elseif ( $_REQUEST['action'] == 'booking_cancel') { + //Cancel Booking + em_verify_nonce('booking_cancel'); + if( $EM_Booking->can_manage() || ($EM_Booking->person->ID == get_current_user_id() && get_option('dbem_bookings_user_cancellation')) ){ + if( $EM_Booking->cancel() ){ + $result = true; + if( !defined('DOING_AJAX') ){ + if( $EM_Booking->person->ID == get_current_user_id() ){ + $EM_Notices->add_confirm(get_option('dbem_booking_feedback_cancelled'), true ); + }else{ + $EM_Notices->add_confirm( $EM_Booking->feedback_message, true ); + } + wp_redirect( $_SERVER['HTTP_REFERER'] ); + exit(); + } + }else{ + $result = false; + $EM_Notices->add_error( $EM_Booking->get_errors() ); + $feedback = $EM_Booking->feedback_message; + } + }else{ + $EM_Notices->add_error( __('You must log in to cancel your booking.', 'dbem') ); + } + //TODO user action shouldn't check permission, booking object should. + }elseif( array_key_exists($_REQUEST['action'], $allowed_actions) && $EM_Event->can_manage('manage_bookings','manage_others_bookings') ){ + //Event Admin only actions + $action = $allowed_actions[$_REQUEST['action']]; + //Just do it here, since we may be deleting bookings of different events. + if( !empty($_REQUEST['bookings']) && EM_Object::array_is_numeric($_REQUEST['bookings'])){ + $results = array(); + foreach($_REQUEST['bookings'] as $booking_id){ + $EM_Booking = new EM_Booking($booking_id); + $result = $EM_Booking->$action(); + $results[] = $result; + if( !in_array(false, $results) && !$result ){ + $feedback = $EM_Booking->feedback_message; + } + } + $result = !in_array(false,$results); + }elseif( is_object($EM_Booking) ){ + $result = $EM_Booking->$action(); + $feedback = $EM_Booking->feedback_message; + } + //FIXME not adhereing to object's feedback or error message, like other bits in this file. + //TODO multiple deletion won't work in ajax + if( !empty($_REQUEST['em_ajax']) ){ + if( $result ){ + echo $feedback; + }else{ + echo '<span style="color:red">'.$feedback.'</span>'; + } + die(); + } + }elseif( $_REQUEST['action'] == 'booking_save' ){ + em_verify_nonce('booking_save_'.$EM_Booking->booking_id); + do_action('em_booking_save', $EM_Event, $EM_Booking); + if( $EM_Booking->can_manage('manage_bookings','manage_others_bookings') ){ + if ($EM_Booking->get_post(true) && $EM_Booking->save(false) ){ + $EM_Notices->add_confirm( $EM_Booking->feedback_message, true ); + $redirect = !empty($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : wp_get_referer(); + wp_redirect( $redirect ); + exit(); + }else{ + $result = false; + $EM_Notices->add_error( $EM_Booking->get_errors() ); + $feedback = $EM_Booking->feedback_message; + } + } + }elseif( $_REQUEST['action'] == 'booking_set_status' ){ + em_verify_nonce('booking_set_status_'.$EM_Booking->booking_id); + if( $EM_Booking->can_manage('manage_bookings','manage_others_bookings') && $_REQUEST['booking_status'] != $EM_Booking->booking_status ){ + if ( $EM_Booking->set_status($_REQUEST['booking_status'], false) ){ + if( !empty($_REQUEST['send_email']) ){ + if( $EM_Booking->email(false) ){ + $EM_Booking->feedback_message .= " ".__('Mail Sent.','dbem'); + }else{ + $EM_Booking->feedback_message .= ' <span style="color:red">'.__('ERROR : Mail Not Sent.','dbem').'</span>'; + } + } + $EM_Notices->add_confirm( $EM_Booking->feedback_message, true ); + $redirect = !empty($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : wp_get_referer(); + wp_redirect( $redirect ); + exit(); + }else{ + $result = false; + $EM_Notices->add_error( $EM_Booking->get_errors() ); + $feedback = $EM_Booking->feedback_message; + } + } + }elseif( $_REQUEST['action'] == 'booking_resend_email' ){ + em_verify_nonce('booking_resend_email_'.$EM_Booking->booking_id); + if( $EM_Booking->can_manage('manage_bookings','manage_others_bookings') ){ + if( $EM_Booking->email(false, true) ){ + $EM_Notices->add_confirm( __('Mail Sent.','dbem'), true ); + $redirect = !empty($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : wp_get_referer(); + wp_redirect( $redirect ); + exit(); + }else{ + $result = false; + $EM_Notices->add_error( __('ERROR : Mail Not Sent.','dbem') ); + $feedback = $EM_Booking->feedback_message; + } + } + } + if( $result && defined('DOING_AJAX') ){ + $return = array('result'=>true, 'message'=>$feedback); + echo EM_Object::json_encode(apply_filters('em_action_'.$_REQUEST['action'], $return, $EM_Booking)); + die(); + }elseif( !$result && defined('DOING_AJAX') ){ + $return = array('result'=>false, 'message'=>$feedback, 'errors'=>$EM_Notices->get_errors()); + echo EM_Object::json_encode(apply_filters('em_action_'.$_REQUEST['action'], $return, $EM_Booking)); + die(); + } + }elseif( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'booking_add' && !is_user_logged_in() && !get_option('dbem_bookings_anonymous')){ + $EM_Notices->add_error( get_option('dbem_booking_feedback_log_in') ); + if( !$result && defined('DOING_AJAX') ){ + $return = array('result'=>false, 'message'=>$EM_Booking->feedback_message, 'errors'=>$EM_Notices->get_errors()); + echo EM_Object::json_encode(apply_filters('em_action_'.$_REQUEST['action'], $return, $EM_Booking)); + } + die(); + } + + //AJAX call for searches + if( !empty($_REQUEST['action']) && substr($_REQUEST['action'],0,6) == 'search' ){ + if( $_REQUEST['action'] == 'search_states' ){ + $results = array(); + $conds = array(); + if( !empty($_REQUEST['country']) ){ + $conds[] = $wpdb->prepare("(location_country = '%s' OR location_country IS NULL )", $_REQUEST['country']); + } + if( !empty($_REQUEST['region']) ){ + $conds[] = $wpdb->prepare("( location_region = '%s' OR location_region IS NULL )", $_REQUEST['region']); + } + $cond = (count($conds) > 0) ? "AND ".implode(' AND ', $conds):''; + $results = $wpdb->get_col("SELECT DISTINCT location_state FROM " . EM_LOCATIONS_TABLE ." WHERE location_state IS NOT NULL AND location_state != '' $cond ORDER BY location_state"); + if( $_REQUEST['return_html'] ) { + //quick shortcut for quick html form manipulation + ob_start(); + ?> + <option value=''><?php echo get_option('dbem_search_form_states_label') ?></option> + <?php + foreach( $results as $result ){ + echo "<option>{$result}</option>"; + } + $return = ob_get_clean(); + echo apply_filters('em_ajax_search_states', $return); + exit(); + }else{ + echo EM_Object::json_encode($results); + exit(); + } + } + if( $_REQUEST['action'] == 'search_towns' ){ + $results = array(); + $conds = array(); + if( !empty($_REQUEST['country']) ){ + $conds[] = $wpdb->prepare("(location_country = '%s' OR location_country IS NULL )", $_REQUEST['country']); + } + if( !empty($_REQUEST['region']) ){ + $conds[] = $wpdb->prepare("( location_region = '%s' OR location_region IS NULL )", $_REQUEST['region']); + } + if( !empty($_REQUEST['state']) ){ + $conds[] = $wpdb->prepare("(location_state = '%s' OR location_state IS NULL )", $_REQUEST['state']); + } + $cond = (count($conds) > 0) ? "AND ".implode(' AND ', $conds):''; + $results = $wpdb->get_col("SELECT DISTINCT location_town FROM " . EM_LOCATIONS_TABLE ." WHERE location_town IS NOT NULL AND location_town != '' $cond ORDER BY location_town"); + if( $_REQUEST['return_html'] ) { + //quick shortcut for quick html form manipulation + ob_start(); + ?> + <option value=''><?php echo get_option('dbem_search_form_towns_label'); ?></option> + <?php + foreach( $results as $result ){ + echo "<option>$result</option>"; + } + $return = ob_get_clean(); + echo apply_filters('em_ajax_search_towns', $return); + exit(); + }else{ + echo EM_Object::json_encode($results); + exit(); + } + } + if( $_REQUEST['action'] == 'search_regions' ){ + if( !empty($_REQUEST['country']) ){ + $conds[] = $wpdb->prepare("(location_country = '%s' OR location_country IS NULL )", $_REQUEST['country']); + } + $cond = (count($conds) > 0) ? "AND ".implode(' AND ', $conds):''; + $results = $wpdb->get_results("SELECT DISTINCT location_region AS value FROM " . EM_LOCATIONS_TABLE ." WHERE location_region IS NOT NULL AND location_region != '' $cond ORDER BY location_region"); + if( $_REQUEST['return_html'] ) { + //quick shortcut for quick html form manipulation + ob_start(); + ?> + <option value=''><?php echo get_option('dbem_search_form_regions_label'); ?></option> + <?php + foreach( $results as $result ){ + echo "<option>{$result->value}</option>"; + } + $return = ob_get_clean(); + echo apply_filters('em_ajax_search_regions', $return); + exit(); + }else{ + echo EM_Object::json_encode($results); + exit(); + } + }elseif( $_REQUEST['action'] == 'search_events' && get_option('dbem_events_page_search') && defined('DOING_AJAX') ){ + $args = EM_Events::get_post_search(); + $args['owner'] = false; + ob_start(); + em_locate_template('templates/events-list.php', true, array('args'=>$args)); //if successful, this template overrides the settings and defaults, including search + echo apply_filters('em_ajax_search_events', ob_get_clean(), $args); + exit(); + } + } + + //EM Ajax requests require this flag. + if( is_user_logged_in() ){ + //Admin operations + //Specific Oject Ajax + if( !empty($_REQUEST['em_obj']) ){ + switch( $_REQUEST['em_obj'] ){ + case 'em_bookings_events_table': + case 'em_bookings_pending_table': + case 'em_bookings_confirmed_table': + //add some admin files just in case + include_once('admin/bookings/em-confirmed.php'); + include_once('admin/bookings/em-events.php'); + include_once('admin/bookings/em-pending.php'); + call_user_func($_REQUEST['em_obj']); + exit(); + break; + } + } + } + //Export CSV - WIP + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'export_bookings_csv' && wp_verify_nonce($_REQUEST['_wpnonce'], 'export_bookings_csv')){ + //sort out cols + if( !empty($_REQUEST['cols']) && is_array($_REQUEST['cols']) ){ + $cols = array(); + foreach($_REQUEST['cols'] as $col => $active){ + if( $active ){ $cols[] = $col; } + } + $_REQUEST['cols'] = $cols; + } + $_REQUEST['limit'] = 0; + + //generate bookings export according to search request + $show_tickets = !empty($_REQUEST['show_tickets']); + $EM_Bookings_Table = new EM_Bookings_Table($show_tickets); + header("Content-Type: application/octet-stream; charset=utf-8"); + header("Content-Disposition: Attachment; filename=".sanitize_title(get_bloginfo())."-bookings-export.csv"); + echo sprintf(__('Exported booking on %s','dbem'), date_i18n('D d M Y h:i', current_time('timestamp'))) . "\n"; + echo '"'. implode('","', $EM_Bookings_Table->get_headers(true)). '"' . "\n"; + //Rows + $EM_Bookings_Table->limit = 150; //if you're having server memory issues, try messing with this number + $EM_Bookings = $EM_Bookings_Table->get_bookings(); + $handle = fopen("php://output", "w"); + while(!empty($EM_Bookings)){ + foreach( $EM_Bookings as $EM_Booking ) { + //Display all values + /* @var $EM_Booking EM_Booking */ + /* @var $EM_Ticket_Booking EM_Ticket_Booking */ + if( $show_tickets ){ + foreach($EM_Booking->get_tickets_bookings()->tickets_bookings as $EM_Ticket_Booking){ + $row = $EM_Bookings_Table->get_row_csv($EM_Ticket_Booking); + fputcsv($handle, $row); + } + }else{ + $row = $EM_Bookings_Table->get_row_csv($EM_Booking); + fputcsv($handle, $row); + } + } + //reiterate loop + $EM_Bookings_Table->offset += $EM_Bookings_Table->limit; + $EM_Bookings = $EM_Bookings_Table->get_bookings(); + } + fclose($handle); + exit(); + } +} +add_action('init','em_init_actions',11); + +function em_ajax_bookings_table(){ + $EM_Bookings_Table = new EM_Bookings_Table(); + $EM_Bookings_Table->output_table(); + exit(); +} +add_action('wp_ajax_em_bookings_table','em_ajax_bookings_table'); + +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-bookings.php b/wp-content/plugins/events-manager/em-bookings.php new file mode 100644 index 0000000..6806d70 --- /dev/null +++ b/wp-content/plugins/events-manager/em-bookings.php @@ -0,0 +1,263 @@ +<?php +/** + * This object is a parent of EM_Bookings_Form, which is extendable by creating a bookings form object and placing the + * php file in the wp-content/mu-plugins folder (see http://wpmututorials.com/plugins/basics/what-is-the-mu-plugins-folder/ for more info). + * Since mu-plugin files are executed before this, the EM_Bookings_Form will already be defined and won't be definied here. + * @author marcus + * + */ +class EM_Bookings_Form_Core extends EM_Object { + /* Contains functions to handle save and delete requests on the front-end for bookings */ + static $em_form_messages_booking_cancel = array(); + static $em_form_messages_booking_add = array(); + + function init(){ + add_action('template_redirect', array('EM_Bookings_Form','actions'),100); + //catch the ajax call + add_action( 'wp_ajax_add_booking', array('EM_Bookings_Form','ajax_add_booking') ); + } + + function ajax_add_booking(){ + /* Check the nonce */ + check_admin_referer( 'add_booking', '_wpnonce_add_booking' ); + if( !empty($_REQUEST['event_id']) && is_numeric($_REQUEST['event_id']) ){ + $EM_Event = new EM_Event($_REQUEST['event_id']); + $result = $EM_Event->get_bookings()->add_from_post(); + if($result){ + $return = array('result'=>true, 'message'=>$EM_Event->get_bookings()->feedback_message); + }else{ + $return = array('result'=>false, 'message'=>implode('<br />', $EM_Event->get_bookings()->errors)); + } + echo EM_Object::json_encode($return); + exit(); + }else{ + $return = array('result'=>false, 'message'=>''); + echo EM_Object::json_encode($return); + exit(); + } + } + + /** + * Check if there's any actions to take for bookings + * @return null + */ + function actions() { + global $wpdb; + global $EM_Event, $EM_Person; + if( @get_class($EM_Event) == 'EM_Event' ){ + //ADD/EDIT Booking + if (isset($_POST['action']) && $_POST['action'] == 'add_booking') { + check_admin_referer( 'em_add_booking', '_wpnonce_em_add_booking' ); + $EM_Event->get_bookings()->add_from_post(); + } + //CANCEL Booking + if (isset($_POST['action']) && $_POST['action'] == 'cancel_booking') { + self::cancel_booking(); + } + } + } + + /** + * Handles booking cancellations on the front end. makes a few extra checks. + */ + function cancel_booking(){ + global $EM_Event; + if( is_user_logged_in() ){ + $canceled = 0; + foreach($EM_Event->get_bookings()->bookings as $EM_Booking){ + if($EM_Booking->person->ID == $EM_Person->ID ){ + $EM_Booking->cancel(); + $canceled++; + } + } + if($canceled > 0){ + self::$em_form_messages_booking_cancel['success'] = __('Booking cancelled', 'dbem'); + } + }else{ + self::$em_form_messages_booking_cancel['error'] = __('You must log in to cancel your booking.', 'dbem'); + } + } + + /** + * Returns the booking form for the front-end, displayed when using placeholder #_ADDBOOKINGFORM + * @return string + */ + function create() { + global $em_form_messages_booking_add, $EM_Event; + + $booked_places_options = array(); + for ( $i = 1; $i <= 10; $i++ ) { + $booking_spaces = (!empty($_POST['booking_spaces']) && $_POST['booking_spaces'] == $i) ? 'selected="selected"':''; + array_push($booked_places_options, "<option value='$i' $booking_spaces>$i</option>"); + } + ob_start(); + ?> + <div id="em-booking"> + <a name="em-booking"></a> + <h3><?php _e('Book now!','dbem') ?></h3> + + <?php if( !empty($EM_Event->get_bookings()->feedback_message) && count($EM_Event->get_bookings()->errors) == 0 ) : ?> + <div class='em-booking-message-success'><?php echo $EM_Event->get_bookings()->feedback_message; ?></div> + <?php elseif( count($EM_Event->get_bookings()->errors) > 1 ) : ?> + <div class='em-booking-message-error'><?php echo implode('<br />', $EM_Event->get_bookings()->errors); ?></div> + <?php elseif( !empty($EM_Event->get_bookings()->feedback_message) ) : ?> + <div class='em-booking-message'><?php echo $EM_Event->get_bookings()->feedback_message; ?></div> + <?php endif; ?> + + <form id='em-booking-form' name='booking-form' method='post' action=''> + <?php do_action('em_booking_form_before_tickets'); ?> + <?php + $EM_Tickets = ( get_option('dbem_bookings_tickets_show_unavailable') ) ? $EM_Event->get_bookings()->get_tickets():$EM_Event->get_bookings()->get_tickets(); + if( (count($EM_Tickets->tickets) > 1 || !empty($EM_Tickets->get_first()->price)) && (get_option('dbem_bookings_tickets_show_loggedout') || is_user_logged_in()) ): ?> + <table class="em-tickets" cellspacing="0" cellpadding="0"> + <tr> + <td><?php _e('Ticket Type','dbem') ?></td> + <td><?php _e('Price','dbem') ?></td> + <td><?php _e('Spaces','dbem') ?></td> + </tr> + <?php foreach( $EM_Tickets->tickets as $EM_Ticket ): ?> + <?php if( $EM_Ticket->is_available() || get_option('dbem_bookings_tickets_show_unavailable') ): ?> + <tr> + <td><?php echo $EM_Ticket->output_property('name'); ?></td> + <td><?php echo $EM_Ticket->output_property('price'); ?></td> + <td> + <?php + $spaces_options = $EM_Ticket->get_spaces_options(); + if( $spaces_options ){ + echo $spaces_options; + }else{ + echo "<strong>".__('N/A','dbem')."</strong>"; + } + ?> + </td> + </tr> + <?php endif; ?> + <?php endforeach; ?> + </table> + <?php endif; ?> + <?php do_action('em_booking_form_after_tickets'); ?> + <?php if( is_user_logged_in() && count($EM_Tickets->tickets) > 0 ) : ?> + <?php $EM_Ticket = $EM_Tickets->get_first(); ?> + <table class='em-booking-form-details'> + <?php if( is_object($EM_Ticket) && (count($EM_Tickets->tickets) == 1 && empty($EM_Tickets->get_first()->price)) ): ?> + <tr> + <th scope='row'><?php _e('Spaces', 'dbem') ?>:</th> + <td> + <?php + $spaces_options = $EM_Ticket->get_spaces_options(false); + if( $spaces_options ){ + echo $spaces_options; + }else{ + echo "<strong>".__('N/A','dbem')."</strong>"; + } + ?> + </td> + </tr> + <?php endif; ?> + <?php do_action('em_booking_form_before_user_details'); ?> + <tr><th scope='row'><?php _e('Comment', 'dbem') ?>:</th><td><textarea name='booking_comment'><?php echo !empty($_POST['booking_comment']) ? $_POST['booking_comment']:'' ?></textarea></td></tr> + <?php do_action('em_booking_form_footer'); ?> + </table> + <div class="em-booking-buttons"> + <?php echo apply_filters('em_booking_form_buttons', '<input type="submit" class="em-booking-submit" value="'.__('Send your booking', 'dbem').'" />'); ?> + <input type='hidden' name='action' value='add_booking'/> + <input type='hidden' name='callback' value='em'/> + <input type='hidden' name='event_id' value='<?php echo $EM_Event->id; ?>'/> + <?php echo wp_nonce_field('add_booking','_wpnonce_add_booking'); ?> + </div> + <?php elseif( count($EM_Tickets->tickets) == 0 ): ?> + <div><?php _e('No more tickets available at this time.','dbem'); ?></div> + <?php else: ?> + <div><?php echo sprintf(__('You must <a href="%s">register</a> or <a href="%s">log in</a> in order to create and manage your bookings.','dbem'), site_url('wp-login.php?action=register', 'login_post'), site_url('wp-login.php', 'login_post')); ?></div> + <?php endif; ?> + </form> + </div> + <?php echo self::get_js(); ?> + <?php + return apply_filters('em_bookings_form_create', ob_get_clean()); + } + + function get_js(){ + ob_start(); + ?> + <script type="text/javascript"> + jQuery(document).ready( function($){ + $('#em-booking-form').ajaxForm({ + url: EM.ajaxurl, + dataType: 'jsonp', + beforeSubmit: function(formData, jqForm, options) { + $('.em-booking-message').remove(); + $('#em-booking-form').append('<div id="em-loading"></div>'); + }, + success : function(response, statusText, xhr, $form) { + $('#em-loading').remove(); + if(response.result){ + $('<div class="em-booking-message-success em-booking-message">'+response.message+'</div>').insertBefore('#em-booking-form'); + }else{ + $('<div class="em-booking-message-error em-booking-message">'+response.message+'</div>').insertBefore('#em-booking-form'); + + } + } + }); + }); + </script> + <?php + return apply_filters('em_bookings_form_get_js', ob_get_clean()); + } + + /** + * Booking removal in front end, called by placeholder #_REMOVEBOOKINGFORM + * @return string + */ + function cancel() { + global $em_form_messages_booking_cancel, $EM_Event; + $destination = "?".$_SERVER['QUERY_STRING']; + ob_start(); + ?> + <div id="em-booking-delete"> + <a name="em-booking-delete"></a> + <h3><?php _e('Cancel your booking', 'dbem') ?></h3> + + <?php if( is_user_logged_in() ): ?> + <?php if( !empty(self::$em_form_messages_booking_cancel['success']) ) : ?> + <div class='em-booking-message-success'><?php echo self::$em_form_messages_booking_cancel['success'] ?></div> + <?php elseif( !empty(self::$em_form_messages_booking_cancel['error']) ) : ?> + <div class='em-booking-message-error'><?php echo self::$em_form_messages_booking_cancel['error'] ?></div> + <?php elseif( !empty(self::$em_form_messages_booking_cancel['message']) ) : ?> + <div class='em-booking-message'><?php echo self::$em_form_messages_booking_add['message'] ?></div> + <?php endif; ?> + + <form name='booking-delete-form' method='post' action='<?php echo $destination ?>#em-booking-delete'> + <input type='hidden' name='em_action' value='delete_booking'/> + <input type='hidden' name='event_id' value='<?php echo $EM_Event->id; ?>'/> + <input type='submit' value='<?php _e('Cancel your booking', 'dbem') ?>'/> + </form> + <?php else: ?> + <p>Please <a href="<?php echo site_url('wp-login.php', 'login_post'); ?>">log in</a> to manage your bookings.</p> + <?php endif; ?> + </div> + <?php + return ob_get_clean(); + } + + /* AJAX update posting */ + function bp_dtheme_post_update() { + global $bp; + + /* Check the nonce */ + check_admin_referer( 'post_update', '_wpnonce_post_update' ); + + if ( !is_user_logged_in() ) { + echo '-1'; + return false; + } + add_action( 'wp_ajax_post_update', 'bp_dtheme_post_update' ); + } +} +if( !class_exists('EM_Bookings_Form') ){ + class EM_Bookings_Form extends EM_Bookings_Form_Core { + + } +} +EM_Bookings_Form::init(); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-debug.php b/wp-content/plugins/events-manager/em-debug.php new file mode 100644 index 0000000..b64cc27 --- /dev/null +++ b/wp-content/plugins/events-manager/em-debug.php @@ -0,0 +1,46 @@ +<?php +//set debug mode on. +function dbem_debug_option($option){ + global $dbem_debug_options; + return $dbem_debug_options[$option]; +} + +global $dbem_debug_options; +$dbem_email_template = str_replace('"', "'", file_get_contents(WP_PLUGIN_DIR.'/events-manager/includes/sample-placeholders/booking-email.html')); +$dbem_event_format = str_replace('"', "'", file_get_contents(WP_PLUGIN_DIR.'/events-manager/includes/sample-placeholders/event-single.html')); +$dbem_debug_options = array( + //Event Formatting + 'dbem_event_list_item_format' => '<li>#j #M #Y - #H:#i<br/> #_EVENTLINK<br/>#_LOCATIONTOWN </li>', + 'dbem_single_event_format' => $dbem_event_format, + //Location Formatting + 'dbem_location_event_list_item_format' => "<li>#_LOCATIONNAME - #j #M #Y - #H:#i</li>", + 'dbem_location_list_item_format' => '#_LOCATIONLINK<ul><li>#_LOCATIONADDRESS</li><li>#_LOCATIONTOWN</li></ul>', + 'dbem_location_no_events_message' => __('<li>No events in this location</li>', 'dbem'), + 'dbem_single_location_format' => '<p>#_LOCATIONADDRESS</p><p>#_LOCATIONTOWN</p>', + //General Settings + //Emails + 'dbem_bookings_contact_email_subject' => "New booking [DEBUG MODE]", + 'dbem_bookings_contact_email_body' => $dbem_email_template, + 'dbem_contactperson_email_cancelled_subject' => "Booking Cancelled [DEBUG MODE]", + 'dbem_contactperson_email_cancelled_body' => $dbem_email_template, + 'dbem_bookings_email_pending_subject' => "Booking Pending [DEBUG MODE]", + 'dbem_bookings_email_pending_body' => $dbem_email_template, + 'dbem_bookings_email_rejected_subject' => "Booking Rejected [DEBUG MODE]", + 'dbem_bookings_email_rejected_body' => $dbem_email_template, + 'dbem_bookings_email_confirmed_subject' => 'Booking Confirmed [DEBUG MODE]', + 'dbem_bookings_email_confirmed_body' => $dbem_email_template, + 'dbem_bookings_email_cancelled_subject' => 'Booking Cancelled [DEBUG MODE]', + 'dbem_bookings_email_cancelled_body' => $dbem_email_template +); + +if( get_option('dbem_debug') && !empty($_REQUEST['page']) && $_REQUEST['page'] != 'events-manager-options' ){ + foreach($dbem_debug_options as $debug_option => $value){ + if( !empty($dbem_debug_options[$debug_option]) ){ + add_filter('pre_option_'.$debug_option, create_function('','return "'.$dbem_debug_options[$debug_option].'";')); + } + } +} +if( is_admin() && get_option('dbem_debug')){ + function em_debug_notification(){ ?><div class="error"><p><strong><?php echo sprintf(__('You are in Events Manager debug mode. To turn debug mode off, go to the <a href="%s">settings</a> page.'), em_add_get_params($_SERVER['REQUEST_URI'], array('dbem_debug_off'=>1))) ?></strong></p></div><?php } + add_action ( 'admin_notices', 'em_debug_notification' ); +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-emails.php b/wp-content/plugins/events-manager/em-emails.php new file mode 100644 index 0000000..bda9e60 --- /dev/null +++ b/wp-content/plugins/events-manager/em-emails.php @@ -0,0 +1,15 @@ +<?php +/** + * @param EM_Event $EM_Event + * @return string + */ +function em_event_added_email($EM_Event){ + if( !$EM_Event->get_status() && get_option('dbem_bookings_approval') && get_option('dbem_event_submitted_email_admin') != '' ){ + $admin_emails = explode(',', get_option('dbem_event_submitted_email_admin')); //admin emails are in an array, single or multiple + $subject = $EM_Event->output(get_option('dbem_event_submitted_email_subject')); + $message = $EM_Event->output(get_option('dbem_event_submitted_email_body')); + //Send email to admins + $EM_Event->email_send( $subject,$message, $admin_emails); + } +} +add_action('em_event_added','em_event_added_email', 10, 1); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-events.php b/wp-content/plugins/events-manager/em-events.php new file mode 100644 index 0000000..447b8f5 --- /dev/null +++ b/wp-content/plugins/events-manager/em-events.php @@ -0,0 +1,299 @@ +<?php +/* + * This file contains the event related hooks in the front end, as well as some event template tags + */ + +/** + * Filters for page content and if an event replaces it with the relevant event data. + * @param $data + * @return string + */ +function em_content($page_content) { + global $post, $wpdb, $wp_query, $EM_Event, $EM_Location, $EM_Category; + $events_page_id = get_option ( 'dbem_events_page' ); + $locations_page_id = get_option( 'dbem_locations_page' ); + $categories_page_id = get_option( 'dbem_categories_page' ); + $edit_events_page_id = get_option( 'dbem_edit_events_page' ); + $edit_locations_page_id = get_option( 'dbem_edit_locations_page' ); + $edit_bookings_page_id = get_option( 'dbem_edit_bookings_page' ); + $my_bookings_page_id = get_option( 'dbem_my_bookings_page' ); + //general defaults + $args = array( + 'owner' => false, + 'pagination' => 1 + ); + if( in_array($post->ID, array($events_page_id, $locations_page_id, $categories_page_id, $edit_bookings_page_id, $edit_events_page_id, $edit_locations_page_id, $my_bookings_page_id)) ){ + $content = apply_filters('em_content_pre', '', $page_content); + if( empty($content) ){ + ob_start(); + if ( $post->ID == $events_page_id && $events_page_id != 0 ) { + if ( !empty($_REQUEST['calendar_day']) ) { + //Events for a specific day + $args = EM_Events::get_post_search( array_merge($args, $_REQUEST) ); + em_locate_template('templates/calendar-day.php',true, array('args'=>$args)); + }elseif ( $wp_query->get('bookings_page') && empty($my_bookings_page_id)) { + //Bookings Page + em_locate_template('templates/my-bookings.php',true); + }elseif ( is_object($EM_Event)) { + em_locate_template('templates/event-single.php',true, array('args'=>$args)); + }else{ + // Multiple events page + $args['orderby'] = get_option('dbem_events_default_orderby'); + $args['order'] = get_option('dbem_events_default_order'); + if (get_option ( 'dbem_display_calendar_in_events_page' )){ + $args['long_events'] = 1; + em_locate_template('templates/events-calendar.php',true, array('args'=>$args)); + }else{ + //Intercept search request, if defined + $args['scope'] = get_option('dbem_events_page_scope'); + if( !empty($_REQUEST['action']) && $_REQUEST['action'] == 'search_events' ){ + $args = EM_Events::get_post_search( array_merge($args, $_REQUEST) ); + } + em_locate_template('templates/events-list.php', true, array('args'=>$args)); + } + } + }elseif( $post->ID == $locations_page_id && $locations_page_id != 0 ){ + $args['orderby'] = get_option('dbem_locations_default_orderby'); + $args['order'] = get_option('dbem_locations_default_order'); + if( EM_MS_GLOBAL && is_object($EM_Location) ){ + em_locate_template('templates/location-single.php',true, array('args'=>$args)); + }else{ + em_locate_template('templates/locations-list.php',true, array('args'=>$args)); + } + }elseif( $post->ID == $categories_page_id && $categories_page_id != 0 ){ + $args['orderby'] = get_option('dbem_categories_default_orderby'); + $args['order'] = get_option('dbem_categories_default_order'); + em_locate_template('templates/categories-list.php',true, array('args'=>$args)); + }elseif( $post->ID == $edit_events_page_id && $edit_events_page_id != 0 ){ + em_events_admin(); + }elseif( $post->ID == $edit_locations_page_id && $edit_locations_page_id != 0 ){ + em_locations_admin(); + }elseif( $post->ID == $edit_bookings_page_id && $edit_bookings_page_id != 0 ){ + em_bookings_admin(); + }elseif( $post->ID == $my_bookings_page_id && $my_bookings_page_id != 0 ){ + em_my_bookings(); + } + $content = ob_get_clean(); + //If disable rewrite flag is on, then we need to add a placeholder here + if( get_option('dbem_disable_title_rewrites') == 1 ){ + $content = str_replace('#_PAGETITLE', em_content_page_title(''),get_option('dbem_title_html')) . $content; + } + //Now, we either replace CONTENTS or just replace the whole page + if( preg_match('/CONTENTS/', $page_content) ){ + $content = str_replace('CONTENTS',$content,$page_content); + } + if(get_option('dbem_credits')){ + $content .= '<p style="color:#999; font-size:11px;">Powered by <a href="http://wp-events-plugin.com" style="color:#999;" target="_blank">Events Manager</a></p>'; + } + } + return apply_filters('em_content', '<div id="em-wrapper">'.$content.'</div>'); + } + return $page_content; +} +add_filter('the_content', 'em_content'); + +/** + * Filter for titles when on event pages + * @param $data + * @return string + */ +function em_content_page_title($original_content) { + global $EM_Event, $EM_Location, $EM_Category, $wp_query, $post; + $events_page_id = get_option ( 'dbem_events_page' ); + $locations_page_id = get_option( 'dbem_locations_page' ); + $edit_events_page_id = get_option( 'dbem_edit_events_page' ); + $edit_locations_page_id = get_option( 'dbem_edit_locations_page' ); + $edit_bookings_page_id = get_option( 'dbem_edit_bookings_page' ); + if( !empty($post->ID) && in_array($post->ID, array($events_page_id, $locations_page_id, $edit_events_page_id, $edit_locations_page_id, $edit_bookings_page_id))){ + $content = apply_filters('em_content_page_title_pre', '', $original_content); + if( empty($content) ){ + if ( $post->ID == $events_page_id ) { + if ( !empty( $_REQUEST['calendar_day'] ) ) { + $events = EM_Events::get(array('limit'=>2,'scope'=>$_REQUEST['calendar_day'],'owner'=>false)); + if ( count($events) != 1 || get_option('dbem_display_calendar_day_single') == 1 ) { + //We only support dates for the calendar day list title, so we do a simple filter for the supplied calendar_day + $content = get_option ('dbem_list_date_title'); + preg_match_all("/#[A-Za-z0-9]+/", $content, $placeholders); + foreach($placeholders[0] as $placeholder) { + // matches all PHP date and time placeholders + if (preg_match('/^#[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]$/', $placeholder)) { + $content = str_replace($placeholder, mysql2date(ltrim($placeholder, "#"), $_REQUEST['calendar_day']),$content ); + } + } + }else{ + $event = array_shift($events); + $content = $event->output( get_option('dbem_event_page_title_format') ); + } + }elseif ( $wp_query->get('bookings_page') ) { + //Bookings Page + $content = sprintf(__('My %s','dbem'),__('Bookings','dbem')); + }elseif ( is_object($EM_Event) && EM_MS_GLOBAL ) { + // single event page + if( $EM_Event->status == 1 ){ + $content = $EM_Event->output ( get_option ( 'dbem_event_page_title_format' ) ); + }else{ + $content = get_option('dbem_events_page_title'); + } + }else{ + // Multiple events page, leave untouched + $content = $original_content; + } + }elseif( $post->ID == $locations_page_id ){ + if( EM_MS_GLOBAL && is_object($EM_Location) ){ + $content = $EM_Location->output(get_option( 'dbem_location_page_title_format' )); + }else{ + $content = $original_content; + } + }elseif( $post->ID == $edit_events_page_id ){ + if( !empty($_REQUEST['action']) && $_REQUEST['action'] = 'edit' ){ + if( is_object($EM_Event) ){ + if($EM_Event->is_recurring()){ + $content = __( "Reschedule Events", 'dbem' )." '{$EM_Event->event_name}'"; + }else{ + $content = __( "Edit Event", 'dbem' ) . " '" . $EM_Event->event_name . "'"; + } + }else{ + $content = __( 'Add Event', 'dbem' ); + } + }else{ + $content = $original_content; + } + }elseif( $post->ID == $edit_locations_page_id ){ + if( !empty($_REQUEST['action']) && $_REQUEST['action'] = 'edit' ){ + if( empty($EM_Location) || !is_object($EM_Location) ){ + $content = __('Add Location', 'dbem'); + }else{ + $content = __('Edit Location', 'dbem'); + } + }else{ + $content = $original_content; + } + }elseif( $post->ID == $edit_bookings_page_id){ + if( is_object($EM_Event) ){ + $content = $EM_Event->name .' - '. $original_content; + }else{ + $content = $original_content; + } + } + return apply_filters('em_content_page_title', $content); + } + } + return $original_content; +} + +function em_content_wp_title($title, $sep = '', $seplocation = ''){ + global $EM_Location, $post; + $events_page_id = get_option ( 'dbem_events_page' ); + $locations_page_id = get_option( 'dbem_locations_page' ); + $edit_events_page_id = get_option( 'dbem_edit_events_page' ); + $edit_locations_page_id = get_option( 'dbem_edit_locations_page' ); + $edit_bookings_page_id = get_option( 'dbem_edit_bookings_page' ); + if( !empty($post->ID) && $post->ID != $events_page_id && !in_array($post->ID, array($events_page_id, $locations_page_id, $edit_events_page_id, $edit_locations_page_id, $edit_bookings_page_id)) ){ return $title; } + // Determines position of the separator and direction of the breadcrumb + $title = em_content_page_title($title); + $t_sep = '%WP_TITILE_SEP%'; // Temporary separator, for accurate flipping, if necessary + if ( 'right' == $seplocation ) { // sep on right, so reverse the order + $title_array = explode( $t_sep, $title ); + $title_array = array_reverse( $title_array ); + $title = implode( " $sep ", $title_array ); + } else { + $title_array = explode( $t_sep, $title ); + $title = implode( " $sep ", $title_array ); + } + return $title; +} +add_filter ( 'wp_title', 'em_content_wp_title',100,3 ); //override other plugin SEO due to way EM works. + +/** + * Makes sure we're in "THE Loop", which is determinied by a flag set when the_post() (start) is first called, and when have_posts() (end) returns false. + * @param string $data + * @return string + */ +function em_wp_the_title($data){ + //This is set by the loop_start and loop_end actions + global $post, $wp_query, $EM_Location; + $events_page_id = get_option ( 'dbem_events_page' ); + $locations_page_id = get_option( 'dbem_locations_page' ); + $edit_events_page_id = get_option( 'dbem_edit_events_page' ); + $edit_locations_page_id = get_option( 'dbem_edit_locations_page' ); + $edit_bookings_page_id = get_option( 'dbem_edit_bookings_page' ); + if( !is_main_query() && !empty($post->ID) && in_array($post->ID, array($events_page_id, $locations_page_id, $edit_events_page_id, $edit_locations_page_id, $edit_bookings_page_id)) ){ + if ( $wp_query->in_the_loop ) { + return apply_filters('em_wp_the_title', em_content_page_title($data)) ; + } + } + return $data; +} +add_filter ( 'the_title', 'em_wp_the_title',10,1 ); + +/** + * Filters the get_pages functions so it includes the event pages? + * @param $data + * @return array + */ +function em_filter_get_pages($data) { + global $em_disable_filter; //Using a flag here instead + $show_events_menu = get_option ( 'dbem_list_events_page' ); + $show_locations_menu = get_option ( 'dbem_list_locations_page' ); + $show_categories_menu = get_option ( 'dbem_list_categories_page' ); + if ( (!$show_events_menu || !$show_locations_menu || !$show_categories_menu) && $em_disable_filter !== true ) { + $output = array(); + $events_page_id = get_option( 'dbem_events_page' ); + $locations_page_id = get_option( 'dbem_locations_page' ); + $categories_page_id = get_option( 'dbem_categories_page' ); + foreach( $data as $data_id => $page ) { + $added = false; + if(!$show_events_menu && $page->ID != $events_page_id){ + $output[] = $page; + $added = true; + } + if(!$show_locations_menu && !$added && $page->ID != $locations_page_id){ + $output[] = $page; + $added = true; + } + if(!$show_categories_menu && !$added && $page->ID != $categories_page_id){ + $output[] = $page; + $added = true; + } + } + return apply_filters('em_filter_get_pages', $output); + } + return apply_filters('em_filter_get_pages', $data); +} +add_filter ( 'get_pages', 'em_filter_get_pages' ); + +function em_get_page_type(){ + global $EM_Location, $EM_Category, $EM_Event, $wp_query, $post; + $events_page_id = get_option ( 'dbem_events_page' ); + $locations_page_id = get_option( 'dbem_locations_page' ); + $categories_page_id = get_option( 'dbem_categories_page' ); + if ( !empty($events_page_id) && $post->ID == $events_page_id ) { + if ( $wp_query->get('calendar_day') ) { + return "calendar_day"; + }elseif ( $wp_query->get('bookings_page') ) { + return "my_bookings"; + }else{ + return is_object($EM_Event) ? "event" : "events"; + } + }elseif( empty($events_page_id) ){ + if( $wp_query->get('calendar_day') ){ + return "calendar_day"; + }elseif ( $wp_query->get('bookings_page') ) { + return "my_bookings"; + } + } + if( is_single() && $post->post_type == EM_POST_TYPE_EVENT ){ + return 'event'; + } + if( (!empty($locations_page_id) && $post->ID == $locations_page_id) || (!is_single() && $wp_query->query_vars['post_type'] == EM_POST_TYPE_LOCATION) ){ + return is_object($EM_Location) ? "location":"locations"; + }elseif( is_single() && $post->post_type == EM_POST_TYPE_LOCATION ){ + return 'location'; + } + if( (!empty($categories_page_id) && $post->ID == $categories_page_id) ){ + return "categories"; + }elseif( !empty($wp_query->tax_query->queries[0]['taxonomy']) && $wp_query->tax_query->queries[0]['taxonomy'] == EM_TAXONOMY_CATEGORY ){ + return "category"; + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-functions.php b/wp-content/plugins/events-manager/em-functions.php new file mode 100644 index 0000000..ad6450c --- /dev/null +++ b/wp-content/plugins/events-manager/em-functions.php @@ -0,0 +1,571 @@ +<?php + +if(!function_exists('em_paginate')){ //overridable e.g. in you mu-plugins folder. +/** + * Takes a few params and determins a pagination link structure + * @param string $link + * @param int $total + * @param int $limit + * @param int $page + * @param int $pagesToShow + * @return string + */ +function em_paginate($link, $total, $limit, $page=1, $pagesToShow=10){ + if($limit > 0){ + $url_parts = explode('?', $link); + $base_link = $url_parts[0]; + //Get querystring for first page without page + $query_arr = array(); + parse_str($url_parts[1], $query_arr); + unset($query_arr['page']); unset($query_arr['pno']); + $base_querystring = build_query($query_arr); + if( !empty($base_querystring) ) $base_querystring = '?'.$base_querystring; + //calculate + $maxPages = ceil($total/$limit); //Total number of pages + $startPage = ($page <= $pagesToShow) ? 1 : $pagesToShow * (floor($page/$pagesToShow)) ; //Which page to start the pagination links from (in case we're on say page 12 and $pagesToShow is 10 pages) + $placeholder = urlencode('%PAGE%'); + $link = str_replace('%PAGE%', $placeholder, $link); //To avoid url encoded/non encoded placeholders + //Add the back and first buttons + $string = ($page>1 && $startPage != 1) ? '<a class="prev page-numbers" href="'.str_replace($placeholder,1,$link).'" title="1"><<</a> ' : ''; + if($page == 2){ + $string .= ' <a class="prev page-numbers" href="'.$base_link.$base_querystring.'" title="2"><</a> '; + }elseif($page > 2){ + $string .= ' <a class="prev page-numbers" href="'.str_replace($placeholder,$page-1,$link).'" title="'.($page-1).'"><</a> '; + } + //Loop each page and create a link or just a bold number if its the current page + for ($i = $startPage ; $i < $startPage+$pagesToShow && $i <= $maxPages ; $i++){ + if($i == $page){ + $string .= ' <strong><span class="page-numbers current">'.$i.'</span></strong>'; + }elseif($i=='1'){ + $string .= ' <a class="page-numbers" href="'.$base_link.$base_querystring.'" title="'.$i.'">'.$i.'</a> '; + }else{ + $string .= ' <a class="page-numbers" href="'.str_replace($placeholder,$i,$link).'" title="'.$i.'">'.$i.'</a> '; + } + } + //Add the forward and last buttons + $string .= ($page < $maxPages) ? ' <a class="next page-numbers" href="'.str_replace($placeholder,$page+1,$link).'" title="'.($page+1).'">></a> ' :' ' ; + $string .= ($i-1 < $maxPages) ? ' <a class="next page-numbers" href="'.str_replace($placeholder,$maxPages,$link).'" title="'.$maxPages.'">>></a> ' : ' '; + //Return the string + return apply_filters('em_paginate', $string); + } +} +} + +/** + * Creates a wp-admin style navigation. + * @param string $link + * @param int $total + * @param int $limit + * @param int $page + * @param int $pagesToShow + * @return string + * @uses paginate_links() + * @uses add_query_arg() + */ +function em_admin_paginate($total, $limit, $page=1, $vars=false, $base = false, $format = ''){ + $return = '<div class="tablenav-pages">'; + $base = !empty($base) ? $base:add_query_arg( 'pno', '%#%' ); + $events_nav = paginate_links( array( + 'base' => $base, + 'format' => $format, + 'total' => ceil($total / $limit), + 'current' => $page, + 'add_args' => $vars + )); + $return .= sprintf( '<span class="displaying-num">' . __( 'Displaying %s–%s of %s', 'dbem') . ' </span>%s', + number_format_i18n( ( $page - 1 ) * $limit + 1 ), + number_format_i18n( min( $page * $limit, $total ) ), + number_format_i18n( $total ), + $events_nav + ); + $return .= '</div>'; + return apply_filters('em_admin_paginate',$return,$total,$limit,$page,$vars); +} + +/** + * Takes a url and appends GET params (supplied as an assoc array), it automatically detects if you already have a querystring there + * @param string $url + * @param array $params + * @param bool $html + * @param bool $encode + * @return string + */ +function em_add_get_params($url, $params=array(), $html=true, $encode=true){ + //Splig the url up to get the params and the page location + $url_parts = explode('?', $url); + $url = $url_parts[0]; + $url_params_dirty = array(); + if(count($url_parts) > 1){ + $url_params_dirty = $url_parts[1]; + //get the get params as an array + if( !is_array($url_params_dirty) ){ + if( strstr($url_params_dirty, '&') !== false ){ + $url_params_dirty = explode('&', $url_params_dirty); + }else{ + $url_params_dirty = explode('&', $url_params_dirty); + } + } + //split further into associative array + $url_params = array(); + foreach($url_params_dirty as $url_param){ + if( !empty($url_param) ){ + $url_param = explode('=', $url_param); + if(count($url_param) > 1){ + $url_params[$url_param[0]] = $url_param[1]; + } + } + } + //Merge it together + $params = array_merge($url_params, $params); + } + //Now build the array back up. + $count = 0; + foreach($params as $key=>$value){ + if( $value !== null ){ + $value = ($encode) ? urlencode($value):$value; + if( $count == 0 ){ + $url .= "?{$key}=".$value; + }else{ + $url .= ($html) ? "&{$key}=".$value:"&{$key}=".$value; + } + $count++; + } + } + return $url; +} + +/** + * Get a array of countries, translated. Keys are 2 character country iso codes. If you supply a string or array that will be the first value in the array (if array, the array key is the first key in the returned array) + * @param mixed $add_blank + * @return array + */ +function em_get_countries($add_blank = false){ + global $em_countries_array; + if( !is_array($em_countries_array) ){ + $em_countries_array_i18n = array(); + $em_countries_array_i18n['cs'] = array ('AF' => 'Afghanistan', 'AL' => 'Albánie', 'DZ' => 'Alžírsko', 'AS' => 'Americká Samoa', 'AD' => 'Andorra', 'AO' => 'Angola', 'AQ' => 'Antarctica', 'AG' => 'Antigua a Barbuda', 'AR' => 'Argentina', 'AM' => 'Arménie', 'AW' => 'Aruba', 'AU' => 'Austrálie', 'AT' => 'Rakousko', 'AZ' => 'Ãzerbájdžán', 'BS' => 'Bahamy', 'BH' => 'Bahrajn', 'BD' => 'Bangladéš', 'BB' => 'Barbados', 'BY' => 'Belorusko', 'BE' => 'Belgie', 'BZ' => 'Belize', 'BJ' => 'Benin', 'BT' => 'Bhútán', 'BO' => 'Bolívie', 'BA' => 'Bosna a Hercegovina', 'BW' => 'Botswana', 'BR' => 'Brazílie', 'VG' => 'Britské Panenské ostrovy', 'BN' => 'Brunej', 'BG' => 'Bulharsko', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'CI' => 'Pobreží slonoviny', 'KH' => 'Kambodža', 'CM' => 'Kamerun', 'CA' => 'Kanada', 'CV' => 'Kapverdy', 'KY'=>'Kajmanské ostrovy', 'CF' => 'Stredoafrická republika', 'TD' => 'Cad', 'CL' => 'Chile', 'CN' => 'Cína', 'CO' => 'Kolumbie', 'KM' => 'Komory', 'CR' => 'Kostarika', 'HR' => 'Chorvatsko', 'CU' => 'Kuba', 'CY' => 'Kypr', 'CZ' => 'Ceská republika', 'KP' => 'Severní Korea', 'CD' => 'Democratic Republic of the Congo', 'DK' => 'Dánsko', 'DJ' => 'Džibuti', 'DM' => 'Dominika', 'DO' => 'Dominikánská republika', 'EC' => 'Ekvádor', 'EG' => 'Egypt', 'SV' => 'Salvador', 'XE' => 'England', 'GQ' => 'Rovníková Guinea', 'ER' => 'Eritrea', 'EE' => 'Estonsko', 'ET' => 'Etiopie', 'FJ' => 'Fidži', 'FI' => 'Finsko', 'FR' => 'Francie', 'PF' => 'Francouzská Polynésie', 'GA' => 'Gabon', 'GM' => 'Gambia', 'GE' => 'Gruzie', 'DE' => 'Nemecko', 'GH' => 'Ghana', 'GR' => 'Recko', 'GL' => 'Grónsko', 'GD' => 'Grenada', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GN' => 'Guinea', 'GW' => 'Guiné-Bissau', 'GY' => 'Guyana', 'HT' => 'Haiti', 'HN' => 'Honduras', 'HK' => 'Hong Kong', 'HU' => 'Madarsko', 'IS' => 'Island', 'IN' => 'Indie', 'ID' => 'Indonésie', 'IR' => 'Ãrán', 'IQ' => 'Irák', 'IE' => 'Irsko', 'IL' => 'Izrael', 'IT' => 'Itálie', 'JM' => 'Jamajka', 'JP' => 'Japonsko', 'JO' => 'Jordánsko', 'KZ' => 'Kazachstán', 'KE' => 'Kena', 'KI' => 'Kiribati', 'KV' => 'Kosovo', 'KW' => 'Kuvajt', 'KG' => 'Kyrgyzstán', 'LA' => 'Laos', 'LV' => 'LotyÅ¡sko', 'LB' => 'Libanon', 'LS' => 'Lesotho', 'LR' => 'Libérie', 'LY' => 'Libye', 'LI' => 'LichtenÅ¡tejnsko', 'LT' => 'Litva', 'LU' => 'Lucembursko', 'MO' => 'Macao', 'MK' => 'Makedonie', 'MG' => 'Madagaskar', 'MW' => 'Malawi', 'MY' => 'Malajsie', 'MV' => 'Maledivy', 'ML' => 'Mali', 'MT' => 'Malta', 'MH' => 'Marshallovy ostrovy', 'MQ' => 'Martinik', 'MU' => 'Mauricius', 'MR' => 'Mauritánie', 'MX' => 'Mexiko', 'FM' => 'Micronésie', 'MD' => 'Moldávie', 'MC' => 'Monako', 'MN' => 'Mongolsko', 'ME' => 'Cerná Hora', 'MA' => 'Maroko', 'MZ' => 'Mozambik', 'MM' => 'Myanmar(Burma)', 'NA' => 'Namibie', 'NR' => 'Nauru', 'NP' => 'Nepál', 'NL' => 'Holandsko', 'AN' => 'Nizozemské Antily', 'NC' => 'Nová Kaledonie', 'NZ' => 'Nový Zéland', 'NI' => 'Nikaragua', 'NE' => 'Niger', 'NG' => 'Nigérie', 'XI' => 'Northern Ireland', 'MP' => 'Severní Mariany', 'NO' => 'Norsko', 'OM' => 'Omán', 'PK' => 'Pákistán', 'PW' => 'Palau', 'PS' => 'Palestina', 'PA' => 'Panama', 'PG' => 'Papua-Nová Guinea', 'PY' => 'Paraguay', 'PE' => 'Peru', 'PH' => 'Filipíny', 'PL' => 'Polsko', 'PT' => 'Portugalsko', 'PR' => 'Portoriko', 'QA' => 'Katar', 'CG' => 'Republic of the Congo', 'RO' => 'Rumunsko', 'RU' => 'Rusko', 'RW' => 'Rwanda', 'ST' => 'Svatý Tomáš a Princuv ostrov', 'KN' => 'Svatý KryÅ¡tof a Nevis', 'LC' => 'Svatá Lucie', 'VC' => 'Svatý Vincenc a Grenadiny', 'WS' => 'Samoa', 'SM' => 'San Marino', 'SA' => 'Saúdská Arábie', 'XS' => 'Skotsko', 'SN' => 'Senegal', 'RS' => 'Srbsko', 'SC' => 'Seychely', 'SL' => 'Sierra Leone', 'SG' => 'Singapur', 'SK' => 'Slovensko', 'SI' => 'Slovinsko', 'SB' => 'Å alamounovy ostrovy', 'SO' => 'Somálsko', 'ZA' => 'Jihoafrická republika', 'KR' => 'Jižní Korea', 'ES' => 'Å panÄ›lsko', 'LK' => 'Srí Lanka', 'SD' => 'Súdán', 'SR' => 'Surinam', 'SZ' => 'Svazijsko', 'SE' => 'Å védsko', 'CH' => 'Å výcarsko', 'SY' => 'Sýrie', 'TW' => 'Tchaj-wan', 'TJ' => 'Tádžikistán', 'TZ' => 'Tanzanie', 'TH' => 'Thajsko', 'TL' => 'Východní Timor', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trinidad a Tobago', 'TN' => 'Tunisko', 'TR' => 'Turecko', 'TM' => 'Turkmenistán', 'TV' => 'Tuvalu', 'VI' => 'Americké Panenské ostrovy', 'UG' => 'Uganda', 'UA' => 'Ukrajina', 'AE' => 'Spojené arabské emiráty', 'GB' => 'Spojené království', 'US' => 'Spojené státy', 'UY' => 'Uruguay', 'UZ' => 'Uzbekistán', 'VU' => 'Nové Hebridy', 'VA' => 'Vatikán', 'VE' => 'Venezuela', 'VN' => 'Vietnam', 'XW' => 'Wales', 'YE' => 'Jemen', 'ZM' => 'Zambie', 'ZW' => 'Zimbabwe' ); + $em_countries_array_i18n['da'] = array ('AF' => 'Afghanistan', 'AL' => 'Albanien', 'DZ' => 'Algeriet', 'AS' => 'Amerikansk Samoa', 'AD' => 'Andorra', 'AO' => 'Angola', 'AQ' => 'Antarktis', 'AG' => 'Antigua og Barbuda', 'AR' => 'Argentina', 'AM' => 'Armenien', 'AW' => 'Aruba', 'AU' => 'Australien', 'AT' => 'Østrig', 'AZ' => 'Aserbajdsjan', 'BS' => 'Bahamas', 'BH' => 'Bahrain', 'BD' => 'Bangladesh', 'BB' => 'Barbados', 'BY' => 'Belarus', 'BE' => 'Belgien', 'BZ' => 'Belize', 'BJ' => 'Benin', 'BT' => 'Bhutan', 'BO' => 'Bolivia', 'BA' => 'Bosnien-Hercegovina', 'BW' => 'Botswana', 'BR' => 'Brasilien', 'VG' => 'De Britiske Jomfruøer', 'BN' => 'Brunei', 'BG' => 'Bulgarien', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'CI' => 'Côte d\'Ivoire', 'KH' => 'Cambodja', 'CM' => 'Cameroun', 'CA' => 'Canada', 'CV' => 'Kap Verde', 'KY'=>'Caymanøerne', 'CF' => 'Den Centralafrikanske Republik', 'TD' => 'Tchad', 'CL' => 'Chile', 'CN' => 'Kina', 'CO' => 'Colombia', 'KM' => 'Comorerne', 'CR' => 'Costa Rica', 'HR' => 'Kroatien', 'CU' => 'Cuba', 'CY' => 'Cypern', 'CZ' => 'Tjekkiet', 'KP' => 'Nordkorea', 'CD' => 'Congo', 'DK' => 'Danmark', 'DJ' => 'Djibouti', 'DM' => 'Dominica', 'DO' => 'Den Dominikanske Republik', 'EC' => 'Ecuador', 'EG' => 'Egypten', 'SV' => 'El Salvador', 'XE' => 'England', 'GQ' => 'Ækvatorialguinea', 'ER' => 'Eritrea', 'EE' => 'Estland', 'ET' => 'Etiopien', 'FJ' => 'Fiji', 'FI' => 'Finland', 'FR' => 'Frankrig', 'PF' => 'Fransk Polynesien', 'GA' => 'Gabon', 'GM' => 'Gambia', 'GE' => 'Georgien', 'DE' => 'Tyskland', 'GH' => 'Ghana', 'GR' => 'Grækenland', 'GL' => 'Grønland (Kalaallit Nunaat)', 'GD' => 'Grenada', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GN' => 'Guinea', 'GW' => 'Guinea-Bissau', 'GY' => 'Guyana', 'HT' => 'Haiti', 'HN' => 'Honduras', 'HK' => 'Hongkong', 'HU' => 'Ungarn', 'IS' => 'Island', 'IN' => 'Indien', 'ID' => 'Indonesien', 'IR' => 'Iran', 'IQ' => 'Irak', 'IE' => 'Irland', 'IL' => 'Israel', 'IT' => 'Italien', 'JM' => 'Jamaica', 'JP' => 'Japan', 'JO' => 'Jordan', 'KZ' => 'Kasakhstan', 'KE' => 'Kenya', 'KI' => 'Kiribati', 'KV' => 'Kosovo', 'KW' => 'Kuwait', 'KG' => 'Kirgisistan', 'LA' => 'Laos', 'LV' => 'Letland', 'LB' => 'Libanon', 'LS' => 'Lesotho', 'LR' => 'Liberia', 'LY' => 'Libyen', 'LI' => 'Liechtenstein', 'LT' => 'Litauen', 'LU' => 'Luxembourg', 'MO' => 'Macao', 'MK' => 'Makedonien', 'MG' => 'Madagaskar', 'MW' => 'Malawi', 'MY' => 'Malaysia', 'MV' => 'Maldiverne', 'ML' => 'Mali', 'MT' => 'Malta', 'MH' => 'Marshalløerne', 'MQ' => 'Martinique', 'MU' => 'Mauritius', 'MR' => 'Mauretanien', 'MX' => 'Mexico', 'FM' => 'Mikronesien', 'MD' => 'Moldova', 'MC' => 'Monaco', 'MN' => 'Mongoliet', 'ME' => 'Montenegro', 'MA' => 'Marokko', 'MZ' => 'Mozambique', 'MM' => 'Myanmar(Burma)', 'NA' => 'Namibia', 'NR' => 'Nauru', 'NP' => 'Nepal', 'NL' => 'Nederlandene', 'AN' => 'De Nederlandske Antiller', 'NC' => 'Ny Kaledonien', 'NZ' => 'New Zealand', 'NI' => 'Nicaragua', 'NE' => 'Niger', 'NG' => 'Nigeria', 'XI' => 'Northern Ireland', 'MP' => 'Nordmarianerne', 'NO' => 'Norge', 'OM' => 'Oman', 'PK' => 'Pakistan', 'PW' => 'Palau', 'PS' => 'Palestine', 'PA' => 'Panama', 'PG' => 'Papua Ny Guinea', 'PY' => 'Paraguay', 'PE' => 'Peru', 'PH' => 'Filippinerne', 'PL' => 'Polen', 'PT' => 'Portugal', 'PR' => 'Puerto Rico', 'QA' => 'Qatar', 'CG' => 'Republic of the Congo', 'RO' => 'Rumænien', 'RU' => 'Rusland', 'RW' => 'Rwanda', 'ST' => 'São Tomé og Príncipe', 'KN' => 'Saint Kitts og Nevis', 'LC' => 'Saint Lucia', 'VC' => 'Saint Vincent og Grenadinerne', 'WS' => 'Samoa', 'SM' => 'San Marino', 'SA' => 'Saudi-Arabien', 'XS' => 'Scotland', 'SN' => 'Senegal', 'RS' => 'Serbia', 'SC' => 'Seychellerne', 'SL' => 'Sierra Leone', 'SG' => 'Singapore', 'SK' => 'Slovakiet', 'SI' => 'Slovenien', 'SB' => 'Salomonøerne', 'SO' => 'Somalia', 'ZA' => 'Sydafrika', 'KR' => 'Sydkorea', 'ES' => 'Spanien', 'LK' => 'Sri Lanka', 'SD' => 'Sudan', 'SR' => 'Surinam', 'SZ' => 'Swaziland', 'SE' => 'Sverige', 'CH' => 'Schweiz', 'SY' => 'Syrien', 'TW' => 'Taiwan', 'TJ' => 'Tadsjikistan', 'TZ' => 'Tanzania', 'TH' => 'Thailand', 'TL' => 'Østtimor', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trinidad og Tobago', 'TN' => 'Tunesien', 'TR' => 'Tyrkiet', 'TM' => 'Turkmenistan', 'TV' => 'Tuvalu', 'VI' => 'De Amerikanske Jomfruøer', 'UG' => 'Uganda', 'UA' => 'Ukraine', 'AE' => 'De Forenede Arabiske Emirater', 'GB' => 'Det Forenede Kongerige', 'US' => 'USA', 'UY' => 'Uruguay', 'UZ' => 'Usbekistan', 'VU' => 'Vanuatu', 'VA' => 'Vatikanstaten', 'VE' => 'Venezuela', 'VN' => 'Vietnam', 'XW' => 'Wales', 'YE' => 'Yemen', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe' ); + $em_countries_array_i18n['es'] = array ('AF' => 'Afganistán', 'AL' => 'Albania', 'DZ' => 'Argelia', 'AS' => 'Samoa Americana', 'AD' => 'Andorra', 'AO' => 'Angola', 'AQ' => 'Antártida', 'AG' => 'Antigua y Barbuda', 'AR' => 'Argentina', 'AM' => 'Armenia', 'AW' => 'Aruba', 'AU' => 'Australia', 'AT' => 'Austria', 'AZ' => 'Azerbaiyán', 'BS' => 'Bahamas', 'BH' => 'Bahráin', 'BD' => 'Bangladesh', 'BB' => 'Barbados', 'BY' => 'Bielorrusia', 'BE' => 'Bélgica', 'BZ' => 'Belice', 'BJ' => 'Benin', 'BT' => 'Bután', 'BO' => 'Bolivia', 'BA' => 'Bosnia y Hercegovina', 'BW' => 'Botsuana', 'BR' => 'Brasil', 'VG' => 'Islas Vírgenes Británicas', 'BN' => 'Brunéi', 'BG' => 'Bulgaria', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'CI' => 'Costa de Marfil', 'KH' => 'Camboya', 'CM' => 'Camerún', 'CA' => 'Canadá', 'CV' => 'Cabo Verde', 'KY'=>'Islas Caimán', 'CF' => 'República Centroafricana', 'TD' => 'Chad', 'CL' => 'Chile', 'CN' => 'China', 'CO' => 'Colombia', 'KM' => 'Comoras', 'CR' => 'Costa Rica', 'HR' => 'Croacia', 'CU' => 'Cuba', 'CY' => 'Chipre', 'CZ' => 'República Checa', 'KP' => 'Corea del Norte', 'CD' => 'República Democrática del Congo', 'DK' => 'Dinamarca', 'DJ' => 'Yibuti', 'DM' => 'Dominica', 'DO' => 'República Dominicana', 'EC' => 'Ecuador', 'EG' => 'Egipto', 'SV' => 'El Salvador', 'XE' => 'England', 'GQ' => 'Guinea Ecuatorial', 'ER' => 'Eritrea', 'EE' => 'Estonia', 'ET' => 'Etiopía', 'FJ' => 'Fiyi', 'FI' => 'Finlandia', 'FR' => 'Francia', 'PF' => 'Polinesia Francesa', 'GA' => 'Gabón', 'GM' => 'Gambia', 'GE' => 'Georgia', 'DE' => 'Alemania', 'GH' => 'Ghana', 'GR' => 'Grecia', 'GL' => 'Groenlandia', 'GD' => 'Granada', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GN' => 'Guinea', 'GW' => 'Guinea-Bissau', 'GY' => 'Guyana', 'HT' => 'Haití', 'HN' => 'Honduras', 'HK' => 'Hong Kong', 'HU' => 'Hungría', 'IS' => 'Islandia', 'IN' => 'India', 'ID' => 'Indonesia', 'IR' => 'Irán', 'IQ' => 'Iraq', 'IE' => 'Irlanda', 'IL' => 'Israel', 'IT' => 'Italia', 'JM' => 'Jamaica', 'JP' => 'Japón', 'JO' => 'Jordania', 'KZ' => 'Kazajistán', 'KE' => 'Kenia', 'KI' => 'Kiribati', 'KV' => 'Kosovo', 'KW' => 'Kuwait', 'KG' => 'Kirguizistán', 'LA' => 'Laos', 'LV' => 'Letonia', 'LB' => 'Líbano', 'LS' => 'Lesoto', 'LR' => 'Liberia', 'LY' => 'Libia', 'LI' => 'Liechtenstein', 'LT' => 'Lituania', 'LU' => 'Luxemburgo', 'MO' => 'Macao', 'MK' => 'Macedonia', 'MG' => 'Madagascar', 'MW' => 'Malaui', 'MY' => 'Malasia', 'MV' => 'Maldivas', 'ML' => 'Mali', 'MT' => 'Malta', 'MH' => 'Islas Marshall', 'MQ' => 'Martinica', 'MU' => 'Mauricio', 'MR' => 'Mauritania', 'MX' => 'México', 'FM' => 'Micronesia', 'MD' => 'Moldavia', 'MC' => 'Mónaco', 'MN' => 'Mongolia', 'ME' => 'Montenegro', 'MA' => 'Marruecos', 'MZ' => 'Mozambique', 'MM' => 'Myanmar(Burma)', 'NA' => 'Namibia', 'NR' => 'Nauru', 'NP' => 'Nepal', 'NL' => 'Países Bajos', 'AN' => 'Antillas Neerlandesas', 'NC' => 'Nueva Caledonia', 'NZ' => 'Nueva Zelanda', 'NI' => 'Nicaragua', 'NE' => 'Niger', 'NG' => 'Nigeria', 'XI' => 'Northern Ireland', 'MP' => 'Islas Marianas del Norte', 'NO' => 'Noruega', 'OM' => 'Omán', 'PK' => 'Pakistán', 'PW' => 'Palaos', 'PS' => 'Palestine', 'PA' => 'Panamá', 'PG' => 'Papúa-Nueva Guinea', 'PY' => 'Paraguay', 'PE' => 'Perú', 'PH' => 'Filipinas', 'PL' => 'Polonia', 'PT' => 'Portugal', 'PR' => 'Puerto Rico', 'QA' => 'Qatar', 'CG' => 'Republic of the Congo', 'RO' => 'Rumania', 'RU' => 'Russia', 'RW' => 'Ruanda', 'ST' => 'Santo Tomé y Príncipe', 'KN' => 'San Cristóbal y Nieves', 'LC' => 'Santa Lucía', 'VC' => 'San Vicente y las Granadinas', 'WS' => 'Samoa', 'SM' => 'San Marino', 'SA' => 'Arabia Saudí', 'XS' => 'Scotland', 'SN' => 'Senegal', 'RS' => 'Serbia', 'SC' => 'Seychelles', 'SL' => 'Sierra Leona', 'SG' => 'Singapur', 'SK' => 'Eslovaquia', 'SI' => 'Eslovenia', 'SB' => 'Islas Salomón', 'SO' => 'Somalia', 'ZA' => 'Sudáfrica', 'KR' => 'Corea del Sur', 'ES' => 'España', 'LK' => 'Sri Lanka', 'SD' => 'Sudán', 'SR' => 'Surinam', 'SZ' => 'Suazilandia', 'SE' => 'Suecia', 'CH' => 'Suiza', 'SY' => 'Siria', 'TW' => 'Taiwán', 'TJ' => 'Tayikistán', 'TZ' => 'Tanzania', 'TH' => 'Tailandia', 'TL' => 'Timor Oriental', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trinidad y Tobago', 'TN' => 'Túnez', 'TR' => 'Turquía', 'TM' => 'Turkmenistán', 'TV' => 'Tuvalu', 'VI' => 'Islas Vírgenes Americanas', 'UG' => 'Uganda', 'UA' => 'Ucrania', 'AE' => 'Emiratos Ãrabes Unidos', 'GB' => 'Reino Unido', 'US' => 'Estados Unidos', 'UY' => 'Uruguay', 'UZ' => 'Uzbekistán', 'VU' => 'Vanuatu', 'VA' => 'El Vaticano', 'VE' => 'Venezuela', 'VN' => 'Vietnam', 'XW' => 'Wales', 'YE' => 'Yemen', 'ZM' => 'Zambia', 'ZW' => 'Zimbabue' ); + $em_countries_array_i18n['fr'] = array ('AF' => 'Afghanistan', 'AL' => 'Albanie', 'DZ' => 'Algérie', 'AS' => 'Samoa américaines', 'AD' => 'Andorre', 'AO' => 'Angola', 'AQ' => 'Antarctique', 'AG' => 'Antigua-et-Barbuda', 'AR' => 'Argentine', 'AM' => 'Arménie', 'AW' => 'Aruba', 'AU' => 'Australie', 'AT' => 'Autriche', 'AZ' => 'Azerbaïdjan', 'BS' => 'Bahamas', 'BH' => 'Bahreïn', 'BD' => 'Bangladesh', 'BB' => 'Barbade', 'BY' => 'Biélorussie', 'BE' => 'Belgique', 'BZ' => 'Belize', 'BJ' => 'Bénin', 'BT' => 'Bhoutan', 'BO' => 'Bolivie', 'BA' => 'Bosnie-Herzégovine', 'BW' => 'Botswana', 'BR' => 'Brésil', 'VG' => 'Iles Vierges britanniques', 'BN' => 'Brunei', 'BG' => 'Bulgarie', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'CI' => 'Côte D\'Ivoire', 'KH' => 'Cambodge', 'CM' => 'Cameroun', 'CA' => 'Canada', 'CV' => 'Cap-Vert', 'KY'=>'Iles Cayman', 'CF' => 'République centrafricaine', 'TD' => 'Tchad', 'CL' => 'Chili', 'CN' => 'Chine', 'CO' => 'Colombie', 'KM' => 'Comores', 'CR' => 'Costa Rica', 'HR' => 'Croatie', 'CU' => 'Cuba', 'CY' => 'Chypre', 'CZ' => 'République tchèque', 'KP' => 'Corée du Nord', 'CD' => 'République démocratique du Congo', 'DK' => 'Danemark', 'DJ' => 'Djibouti', 'DM' => 'Dominique', 'DO' => 'République dominicaine', 'EC' => 'Équateur', 'EG' => 'Égypte', 'SV' => 'Salvador', 'XE' => 'England', 'GQ' => 'Guinée équatoriale', 'ER' => 'Érythrée', 'EE' => 'Estonie', 'ET' => 'Éthiopie', 'FJ' => 'Iles Fidji', 'FI' => 'Finlande', 'FR' => 'France', 'PF' => 'Polynésie française', 'GA' => 'Gabon', 'GM' => 'Gambia', 'GE' => 'Géorgie', 'DE' => 'Allemagne', 'GH' => 'Ghana', 'GR' => 'Grèce', 'GL' => 'Groenland', 'GD' => 'Grenade', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GN' => 'Guinée', 'GW' => 'Guinée-Bissao', 'GY' => 'Guyana', 'HT' => 'Haïti', 'HN' => 'Honduras', 'HK' => 'Hong Kong', 'HU' => 'Hongrie', 'IS' => 'Islande', 'IN' => 'Inde', 'ID' => 'Indonésie', 'IR' => 'Iran', 'IQ' => 'Iraq', 'IE' => 'Irlande', 'IL' => 'Israël', 'IT' => 'Italie', 'JM' => 'Jamaïque', 'JP' => 'Japon', 'JO' => 'Jordanie', 'KZ' => 'Kazakhstan', 'KE' => 'Kenya', 'KI' => 'Kiribati', 'KV' => 'Kosovo', 'KW' => 'Koweït', 'KG' => 'Kirghizistan', 'LA' => 'Laos', 'LV' => 'Lettonie', 'LB' => 'Liban', 'LS' => 'Lesotho', 'LR' => 'Liberia', 'LY' => 'Libye', 'LI' => 'Liechtenstein', 'LT' => 'Lituanie', 'LU' => 'Luxembourg', 'MO' => 'Macao', 'MK' => 'Macédoine', 'MG' => 'Madagascar', 'MW' => 'Malawi', 'MY' => 'Malaisie', 'MV' => 'Maldives', 'ML' => 'Mali', 'MT' => 'Malte', 'MH' => 'Iles Marshall', 'MQ' => 'Martinique', 'MU' => 'Maurice', 'MR' => 'Mauritanie', 'MX' => 'Mexique', 'FM' => 'Micronésie', 'MD' => 'Moldavie', 'MC' => 'Monaco', 'MN' => 'Mongolie', 'ME' => 'Montenegro', 'MA' => 'Maroc', 'MZ' => 'Mozambique', 'MM' => 'le Myanmar', 'NA' => 'Namibie', 'NR' => 'Nauru', 'NP' => 'Népal', 'NL' => 'Pays-Bas', 'AN' => 'Antilles néerlandaises', 'NC' => 'Nouvelle-Calédonie', 'NZ' => 'Nouvelle-Zélande', 'NI' => 'Nicaragua', 'NE' => 'Niger', 'NG' => 'Nigeria', 'XI' => 'Northern Ireland', 'MP' => 'Mariannes du Nord', 'NO' => 'Norvège', 'OM' => 'Oman', 'PK' => 'Pakistan', 'PW' => 'Palau', 'PS' => 'Palestine', 'PA' => 'Panama', 'PG' => 'Papouasie-Nouvelle-Guinée', 'PY' => 'Paraguay', 'PE' => 'Pérou', 'PH' => 'Philippines', 'PL' => 'Pologne', 'PT' => 'Portugal', 'PR' => 'Porto Rico', 'QA' => 'Qatar', 'CG' => 'Republic of the Congo', 'RO' => 'Roumanie', 'RU' => 'Russie', 'RW' => 'Rwanda', 'ST' => 'Sao Tomé-et-Principe', 'KN' => 'Saint-Christophe-et-Niévès', 'LC' => 'Sainte-Lucie', 'VC' => 'Saint-Vincent-et-les-Grenadines', 'WS' => 'Samoa', 'SM' => 'Saint-Marin', 'SA' => 'Arabie saoudite', 'XS' => 'Scotland', 'SN' => 'Sénégal', 'RS' => 'Serbia', 'SC' => 'Seychelles', 'SL' => 'Sierra Leone', 'SG' => 'Singapour', 'SK' => 'Slovaquie', 'SI' => 'Slovénie', 'SB' => 'Iles Salomon', 'SO' => 'Somalie', 'ZA' => 'Afrique du Sud', 'KR' => 'Corée du Sud', 'ES' => 'Espagne', 'LK' => 'Sri Lanka', 'SD' => 'Soudan', 'SR' => 'Suriname', 'SZ' => 'Swaziland', 'SE' => 'Suède', 'CH' => 'Suisse', 'SY' => 'Syrie', 'TW' => 'Taïwan', 'TJ' => 'Tadjikistan', 'TZ' => 'Tanzanie', 'TH' => 'Thaïlande', 'TL' => 'Timor Oriental', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trinité-et-Tobago', 'TN' => 'Tunisie', 'TR' => 'Turquie', 'TM' => 'Turkménistan', 'TV' => 'Tuvalu', 'VI' => 'Iles Vierges américaines', 'UG' => 'Ouganda', 'UA' => 'Ukraine', 'AE' => 'Émirats arabes unis', 'GB' => 'Royaume-Uni', 'US' => 'États-Unis', 'UY' => 'Uruguay', 'UZ' => 'Ouzbékistan', 'VU' => 'Vanuatu', 'VA' => 'Saint-Siège', 'VE' => 'Venezuela', 'VN' => 'Viêt Nam', 'XW' => 'Wales', 'YE' => 'Yémen', 'ZM' => 'Zambie', 'ZW' => 'Zimbabwe' ); + $em_countries_array_i18n['de'] = array ('AF' => 'Afghanistan', 'AL' => 'Albanien', 'DZ' => 'Algerien', 'AS' => 'Amerikanisch-Samoa', 'AD' => 'Andorra', 'AO' => 'Angola', 'AQ' => 'Antarktis', 'AG' => 'Antigua und Barbuda', 'AR' => 'Argentinien', 'AM' => 'Armenien', 'AW' => 'Aruba', 'AU' => 'Australien', 'AT' => 'Österreich', 'AZ' => 'Aserbaidschan', 'BS' => 'Bahamas', 'BH' => 'Bahrain', 'BD' => 'Bangladesch', 'BB' => 'Barbados', 'BY' => 'Belarus', 'BE' => 'Belgien', 'BZ' => 'Belize', 'BJ' => 'Benin', 'BT' => 'Bhutan', 'BO' => 'Bolivien', 'BA' => 'Bosnien und Herzegowina', 'BW' => 'Botsuana', 'BR' => 'Brasilien', 'VG' => 'Britische Jungferninseln', 'BN' => 'Brunei Darussalam', 'BG' => 'Bulgarien', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'CI' => 'Côte D\'Ivoire', 'KH' => 'Kambodscha', 'CM' => 'Kamerun', 'CA' => 'Kanada', 'CV' => 'Kap Verde', 'KY'=>'Kaimaninseln', 'CF' => 'Zentralafrikanische Republik', 'TD' => 'Tschad', 'CL' => 'Chile', 'CN' => 'China', 'CO' => 'Kolumbien', 'KM' => 'Komoren', 'CR' => 'Costa Rica', 'HR' => 'Kroatien', 'CU' => 'Kuba', 'CY' => 'Zypern', 'CZ' => 'Tschechische Republik', 'KP' => 'Demokratische Volksrepublik Korea', 'CD' => 'Demokratische Republik Kongo', 'DK' => 'Dänemark', 'DJ' => 'Dschibuti', 'DM' => 'Dominica', 'DO' => 'Dominikanische Republik', 'EC' => 'Ecuador', 'EG' => 'Ägypten', 'SV' => 'El Salvador', 'XE' => 'England', 'GQ' => 'Äquatorialguinea', 'ER' => 'Eritrea', 'EE' => 'Estland', 'ET' => 'Äthiopien', 'FJ' => 'Fidschi', 'FI' => 'Finnland', 'FR' => 'Frankreich', 'PF' => 'Französisch-Polynesien', 'GA' => 'Gabun', 'GM' => 'Gambia', 'GE' => 'Georgien', 'DE' => 'Deutschland', 'GH' => 'Ghana', 'GR' => 'Griechenland', 'GL' => 'Grönland', 'GD' => 'Grenada', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GN' => 'Guinea', 'GW' => 'Guinea-Bissau', 'GY' => 'Guyana', 'HT' => 'Haiti', 'HN' => 'Honduras', 'HK' => 'HongKong', 'HU' => 'Ungarn', 'IS' => 'Island', 'IN' => 'Indien', 'ID' => 'Indonesien', 'IR' => 'Iran', 'IQ' => 'Irak', 'IE' => 'Irland', 'IL' => 'Israel', 'IT' => 'Italien', 'JM' => 'Jamaika', 'JP' => 'Japan', 'JO' => 'Jordanien', 'KZ' => 'Kasachstan', 'KE' => 'Kenia', 'KI' => 'Kiribati', 'KV' => 'Kosovo', 'KW' => 'Kuwait', 'KG' => 'Kirgisistan', 'LA' => 'Laos', 'LV' => 'Lettland', 'LB' => 'Libanon', 'LS' => 'Lesotho', 'LR' => 'Liberia', 'LY' => 'Libyen', 'LI' => 'Liechtenstein', 'LT' => 'Litauen', 'LU' => 'Luxemburg', 'MO' => 'Macau', 'MK' => 'Mazedonien', 'MG' => 'Madagaskar', 'MW' => 'Malawi', 'MY' => 'Malaysia', 'MV' => 'Malediven', 'ML' => 'Mali', 'MT' => 'Malta', 'MH' => 'Marshallinseln', 'MQ' => 'Martinique', 'MU' => 'Mauritius', 'MR' => 'Mauretanien', 'MX' => 'Mexiko', 'FM' => 'Mikronesien', 'MD' => 'Republik Moldau', 'MC' => 'Monaco', 'MN' => 'Mongolei', 'ME' => 'Montenegro', 'MA' => 'Marokko', 'MZ' => 'Mosambik', 'MM' => 'Myanmar(Burma)', 'NA' => 'Namibia', 'NR' => 'Nauru', 'NP' => 'Nepal', 'NL' => 'Niederlande', 'AN' => 'Niederländische Antillen', 'NC' => 'Neukaledonien', 'NZ' => 'Neuseeland', 'NI' => 'Nicaragua', 'NE' => 'Niger', 'NG' => 'Nigeria', 'XI' => 'Northern Ireland', 'MP' => 'Nördliche Marianen', 'NO' => 'Norwegen', 'OM' => 'Oman', 'PK' => 'Pakistan', 'PW' => 'Palau', 'PS' => 'Palestine', 'PA' => 'Panama', 'PG' => 'Papua-Neuguinea', 'PY' => 'Paraguay', 'PE' => 'Peru', 'PH' => 'Philippinen', 'PL' => 'Polen', 'PT' => 'Portugal', 'PR' => 'Puerto Rico', 'QA' => 'Katar', 'CG' => 'Kongo', 'RO' => 'Rumänien', 'RU' => 'Russische Föderation', 'RW' => 'Ruanda', 'ST' => 'São Tomé und Príncipe', 'KN' => 'St. Kitts und Nevis', 'LC' => 'St. Lucia', 'VC' => 'St. Vincent und die Grenadinen', 'WS' => 'Samoa', 'SM' => 'San Marino', 'SA' => 'Saudi-Arabien', 'XS' => 'Scotland', 'SN' => 'Senegal', 'RS' => 'Serbia', 'SC' => 'Seychellen', 'SL' => 'Sierra Leone', 'SG' => 'Singapur', 'SK' => 'Slowakei', 'SI' => 'Slowenien', 'SB' => 'Salomonen', 'SO' => 'Somalia', 'ZA' => 'Südafrika', 'KR' => 'Republik Korea', 'ES' => 'Spanien', 'LK' => 'Sri Lanka', 'SD' => 'Sudan', 'SR' => 'Suriname', 'SZ' => 'Swasiland', 'SE' => 'Schweden', 'CH' => 'Schweiz', 'SY' => 'Syrien', 'TW' => 'Taiwan', 'TJ' => 'Tadschikistan', 'TZ' => 'Tansania', 'TH' => 'Thailand', 'TL' => 'Osttimor', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trinidad und Tobago', 'TN' => 'Tunesien', 'TR' => 'Türkei', 'TM' => 'Turkmenistan', 'TV' => 'Tuvalu', 'VI' => 'Amerikanische Jungferninseln', 'UG' => 'Uganda', 'UA' => 'Ukraine', 'AE' => 'Vereinigte Arabische Emirate', 'GB' => 'Vereinigtes Königreich', 'US' => 'Vereinigte Staaten', 'UY' => 'Uruguay', 'UZ' => 'Usbekistan', 'VU' => 'Vanuatu', 'VA' => 'Vatikanstadt', 'VE' => 'Venezuela', 'VN' => 'Vietnam', 'XW' => 'Wales', 'YE' => 'Jemen', 'ZM' => 'Sambia', 'ZW' => 'Simbabwe' ); + $em_countries_array_i18n['hu'] = array ('AF' => 'Afganisztán', 'AL' => 'Albánia', 'DZ' => 'Algéria', 'AS' => 'Amerikai Szamoa', 'AD' => 'Andorra', 'AO' => 'Angola', 'AQ' => 'Antarktisz', 'AG' => 'Antigua és Barbuda', 'AR' => 'Argentína', 'AM' => 'Örményország', 'AW' => 'Aruba', 'AU' => 'Ausztrália', 'AT' => 'Ausztria', 'AZ' => 'Azerbajdzsán', 'BS' => 'Bahamas', 'BH' => 'Bahrein', 'BD' => 'Banglades', 'BB' => 'Barbados', 'BY' => 'Belorusszia', 'BE' => 'Belgium', 'BZ' => 'Belize', 'BJ' => 'Benin', 'BT' => 'Bhután', 'BO' => 'Bolívia', 'BA' => 'Bosznia-Hercegovina', 'BW' => 'Botswana', 'BR' => 'Brazília', 'VG' => 'Brit Virgin-szigetek', 'BN' => 'Brunei Darussalam', 'BG' => 'Bulgária', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'CI' => 'Côte d\'Ivoire (Elefántcsontpart)', 'KH' => 'Kambodzsa', 'CM' => 'Kamerun', 'CA' => 'Kanada', 'CV' => 'Zöld-foki-szigetek', 'KY'=>'Kajmán-szigetek', 'CF' => 'Közép-Afrikai Köztársaság', 'TD' => 'Csád', 'CL' => 'Chile', 'CN' => 'Kína', 'CO' => 'Kolumbia', 'KM' => 'Comore-szigetek', 'CR' => 'Costa Rica', 'HR' => 'Horvátország', 'CU' => 'Kuba', 'CY' => 'Ciprus', 'CZ' => 'Cseh Köztársaság', 'KP' => 'Koreai Népi Demokratikus Köztársaság', 'CD' => 'Kongói Demokratikus Köztársaság', 'DK' => 'Dánia', 'DJ' => 'Dzsibuti', 'DM' => 'Dominika', 'DO' => 'Dominikai Köztársaság', 'EC' => 'Ecuador', 'EG' => 'Egyiptom', 'SV' => 'El Salvador', 'XE' => 'England', 'GQ' => 'Egyenlítõi Guinea', 'ER' => 'Eritrea', 'EE' => 'Észtország', 'ET' => 'Etiópia', 'FJ' => 'Fidzsi', 'FI' => 'Finnország', 'FR' => 'Franciaország', 'PF' => 'Francia Polinézia', 'GA' => 'Gabon', 'GM' => 'Gambia', 'GE' => 'GrLzia', 'DE' => 'Németország', 'GH' => 'Ghána', 'GR' => 'Görögország', 'GL' => 'Grönland', 'GD' => 'Grenada', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GN' => 'Guinea', 'GW' => 'Bissau-Guinea', 'GY' => 'Guyana', 'HT' => 'Haiti', 'HN' => 'Honduras', 'HK' => 'Hong Kong', 'HU' => 'Magyarország', 'IS' => 'Izland', 'IN' => 'India', 'ID' => 'Indonézia', 'IR' => 'Irán', 'IQ' => 'Irak', 'IE' => 'Ãrország', 'IL' => 'Izrael', 'IT' => 'Olaszország', 'JM' => 'Jamaica', 'JP' => 'Japán', 'JO' => 'Jordánia', 'KZ' => 'Kazahsztán', 'KE' => 'Kenya', 'KI' => 'Kiribati', 'KV' => 'Kosovo', 'KW' => 'Kuvait', 'KG' => 'Kirgizisztán', 'LA' => 'Lao Népi Demokratikus Köztársaság', 'LV' => 'Litvánia', 'LB' => 'Libanon', 'LS' => 'Lesotho', 'LR' => 'Libéria', 'LY' => 'Líbia', 'LI' => 'Liechtenstein', 'LT' => 'Litvánia', 'LU' => 'Luxemburg', 'MO' => 'Makaó', 'MK' => 'Macedónia', 'MG' => 'Madagaszkár', 'MW' => 'Malawi', 'MY' => 'Malajzia', 'MV' => 'Maldív-szigetek', 'ML' => 'Mali', 'MT' => 'Málta', 'MH' => 'Marshall-szigetek', 'MQ' => 'Martinique', 'MU' => 'Mauritius', 'MR' => 'Mauritánia', 'MX' => 'Mexikó', 'FM' => 'Mikronéziai Szövetségi Ãllamok', 'MD' => 'Moldva', 'MC' => 'Monaco', 'MN' => 'Mongólia', 'ME' => 'Montenegro', 'MA' => 'Marokkó', 'MZ' => 'Mozambik', 'MM' => 'Myanmar(Burma)', 'NA' => 'Namíbia', 'NR' => 'Nauru', 'NP' => 'Nepál', 'NL' => 'Hollandia', 'AN' => 'Holland Antillák', 'NC' => 'Új-Kaledónia', 'NZ' => 'Új-Zéland', 'NI' => 'Nicaragua', 'NE' => 'Niger', 'NG' => 'Nigéria', 'XI' => 'Northern Ireland', 'MP' => 'Észak-Mariana-szigetek', 'NO' => 'Norvégia', 'OM' => 'Omán', 'PK' => 'Pakisztán', 'PW' => 'Palau', 'PS' => 'Palestine', 'PA' => 'Panama', 'PG' => 'Pápua Új-Guinea', 'PY' => 'Paraguay', 'PE' => 'Peru', 'PH' => 'Fülöp-szigetek', 'PL' => 'Lengyelország', 'PT' => 'Portugália', 'PR' => 'Puerto Rico', 'QA' => 'Katar', 'CG' => 'Kongó', 'RO' => 'Románia', 'RU' => 'Orosz Föderáció', 'RW' => 'Ruanda', 'ST' => 'Sao Tome és Principe', 'KN' => 'Saint Kitts és Nevis', 'LC' => 'Szent Lucia', 'VC' => 'Saint Vincent és Grenadines', 'WS' => 'Szamoa', 'SM' => 'San Marino', 'SA' => 'SzaLd-Arábia', 'XS' => 'Scotland', 'SN' => 'Szenegál', 'RS' => 'Serbia', 'SC' => 'Seychelle-szigetek', 'SL' => 'Sierra Leone', 'SG' => 'SzingapLr', 'SK' => 'Szlovákia', 'SI' => 'Szlovénia', 'SB' => 'Salamon-szigetek', 'SO' => 'Szomália', 'ZA' => 'Dél-Afrika', 'KR' => 'Koreai Köztársaság', 'ES' => 'Spanyolország', 'LK' => 'Srí Lanka', 'SD' => 'Szudán', 'SR' => 'Suriname', 'SZ' => 'Szváziföld', 'SE' => 'Svédország', 'CH' => 'Svájc', 'SY' => 'Szíriai Arab Köztársaság', 'TW' => 'Tajvan', 'TJ' => 'Tádzsikisztán', 'TZ' => 'Tanzániai Egyesült Köztársaság', 'TH' => 'Thaiföld', 'TL' => 'Kelet-Timor', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trinidad és Tobago', 'TN' => 'Tunézia', 'TR' => 'Törökország', 'TM' => 'Türkmenisztán', 'TV' => 'Tuvalu', 'VI' => 'Amerikai Virgin-szigetek', 'UG' => 'Uganda', 'UA' => 'Ukrajna', 'AE' => 'Egyesült Arab Emirátusok', 'GB' => 'Egyesült Királyság', 'US' => 'Egyesült Ãllamok', 'UY' => 'Uruguay', 'UZ' => 'Üzbegisztán', 'VU' => 'Vanuatu', 'VA' => 'Vatikán', 'VE' => 'Venezuela', 'VN' => 'Vietnám', 'XW' => 'Wales', 'YE' => 'Jemen', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe' ); + $em_countries_array_i18n['it'] = array ('AF' => 'Afghanistan', 'AL' => 'Albania', 'DZ' => 'Algeria', 'AS' => 'Samoa americane', 'AD' => 'Andorra', 'AO' => 'Angola', 'AQ' => 'Antartide', 'AG' => 'Antigua e Barbuda', 'AR' => 'Argentina', 'AM' => 'Armenia', 'AW' => 'Aruba', 'AU' => 'Australia', 'AT' => 'Austria', 'AZ' => 'Azerbaigian', 'BS' => 'Bahamas', 'BH' => 'Bahrein', 'BD' => 'Bangladesh', 'BB' => 'Barbados', 'BY' => 'Bielorussia', 'BE' => 'Belgio', 'BZ' => 'Belize', 'BJ' => 'Benin', 'BT' => 'Bhutan', 'BO' => 'Bolivia', 'BA' => 'Bosnia-Erzegovina', 'BW' => 'Botswana', 'BR' => 'Brasile', 'VG' => 'Isole Vergini britanniche', 'BN' => 'Brunei', 'BG' => 'Bulgaria', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'CI' => 'Costa d\'Avorio', 'KH' => 'Cambogia', 'CM' => 'Camerun', 'CA' => 'Canada', 'CV' => 'Capo Verde', 'KY'=>'Isole Cayman', 'CF' => 'Repubblica Centrafricana', 'TD' => 'Ciad', 'CL' => 'Cile', 'CN' => 'Cina', 'CO' => 'Colombia', 'KM' => 'Comore', 'CR' => 'Costa Rica', 'HR' => 'Croazia', 'CU' => 'Cuba', 'CY' => 'Cipro', 'CZ' => 'Repubblica ceca', 'KP' => 'Corea del Nord', 'CD' => 'Congo', 'DK' => 'Danimarca', 'DJ' => 'Gibuti', 'DM' => 'Dominica', 'DO' => 'Dominican Republic', 'EC' => 'Ecuador', 'EG' => 'Egitto', 'SV' => 'El Salvador', 'XE' => 'England', 'GQ' => 'Guinea Equatoriale', 'ER' => 'Eritrea', 'EE' => 'Estonia', 'ET' => 'Etiopia', 'FJ' => 'Figi', 'FI' => 'Finlandia', 'FR' => 'Francia', 'PF' => 'Polinesia francese', 'GA' => 'Gabon', 'GM' => 'Gambia', 'GE' => 'Georgia', 'DE' => 'Germania', 'GH' => 'Ghana', 'GR' => 'Grecia', 'GL' => 'Groenlandia', 'GD' => 'Grenada', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GN' => 'Guinea', 'GW' => 'Guinea Bissau', 'GY' => 'Guyana', 'HT' => 'Haiti', 'HN' => 'Honduras', 'HK' => 'Hong Kong', 'HU' => 'Ungheria', 'IS' => 'Islanda', 'IN' => 'India', 'ID' => 'Indonesia', 'IR' => 'Iran', 'IQ' => 'Iraq', 'IE' => 'Irlanda', 'IL' => 'Israele', 'IT' => 'Italia', 'JM' => 'Giamaica', 'JP' => 'Giappone', 'JO' => 'Giordania', 'KZ' => 'Kazakistan', 'KE' => 'Kenya', 'KI' => 'Kiribati', 'KV' => 'Kosovo', 'KW' => 'Kuwait', 'KG' => 'Kirghizistan', 'LA' => 'Laos', 'LV' => 'Lettonia', 'LB' => 'Libano', 'LS' => 'Lesotho', 'LR' => 'Liberia', 'LY' => 'Libia', 'LI' => 'Liechtenstein', 'LT' => 'Lituania', 'LU' => 'Lussemburgo', 'MO' => 'Macao', 'MK' => 'Macedonia', 'MG' => 'Madagascar', 'MW' => 'Malawi', 'MY' => 'Malesia', 'MV' => 'Maldive', 'ML' => 'Mali', 'MT' => 'Malta', 'MH' => 'Isole Marshall', 'MQ' => 'Martinica', 'MU' => 'Maurizio', 'MR' => 'Mauritania', 'MX' => 'Messico', 'FM' => 'Micronesia', 'MD' => 'Moldavia', 'MC' => 'Monaco', 'MN' => 'Mongolia', 'ME' => 'Montenegro', 'MA' => 'Marocco', 'MZ' => 'Mozambico', 'MM' => 'Myanmar(Birmania)', 'NA' => 'Namibia', 'NR' => 'Nauru', 'NP' => 'Nepal', 'NL' => 'Paesi Bassi', 'AN' => 'Antille olandesi', 'NC' => 'Nuova Caledonia', 'NZ' => 'Nuova Zelanda', 'NI' => 'Nicaragua', 'NE' => 'Niger', 'NG' => 'Nigeria', 'XI' => 'Northern Ireland', 'MP' => 'Marianne settentrionali', 'NO' => 'Norvegia', 'OM' => 'Oman', 'PK' => 'Pakistan', 'PW' => 'Palau', 'PS' => 'Palestine', 'PA' => 'Panama', 'PG' => 'Papua Nuova Guinea', 'PY' => 'Paraguay', 'PE' => 'Perù', 'PH' => 'Filippine', 'PL' => 'Polonia', 'PT' => 'Portogallo', 'PR' => 'Portorico', 'QA' => 'Qatar', 'CG' => 'Republic of the Congo', 'RO' => 'Romania', 'RU' => 'Russia', 'RW' => 'Ruanda', 'ST' => 'São Tomé e Príncipe', 'KN' => 'Saint Christopher e Nevis', 'LC' => 'Saint Lucia', 'VC' => 'Saint Vincent e Grenadine', 'WS' => 'Samoa', 'SM' => 'San Marino', 'SA' => 'Arabia Saudita', 'XS' => 'Scotland', 'SN' => 'Senegal', 'RS' => 'Serbia', 'SC' => 'Seicelle', 'SL' => 'Sierra Leone', 'SG' => 'Singapore', 'SK' => 'Slovacchia', 'SI' => 'Slovenia', 'SB' => 'Isole Salomone', 'SO' => 'Somalia', 'ZA' => 'Sudafrica', 'KR' => 'Corea del Sud', 'ES' => 'Spagna', 'LK' => 'Sri Lanka', 'SD' => 'Sudan', 'SR' => 'Suriname', 'SZ' => 'Swaziland', 'SE' => 'Svezia', 'CH' => 'Svizzera', 'SY' => 'Siria', 'TW' => 'Taiwan', 'TJ' => 'Tagikistan', 'TZ' => 'Tanzania', 'TH' => 'Thailandia', 'TL' => 'Timor-Leste', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trinidad e Tobago', 'TN' => 'Tunisia', 'TR' => 'Turchia', 'TM' => 'Turkmenistan', 'TV' => 'Tuvalu', 'VI' => 'Isole Vergini americane', 'UG' => 'Uganda', 'UA' => 'Ucraina', 'AE' => 'Emirati arabi uniti', 'GB' => 'Regno Unito', 'US' => 'Stati Uniti', 'UY' => 'Uruguay', 'UZ' => 'Uzbekistan', 'VU' => 'Vanuatu', 'VA' => 'Vaticano', 'VE' => 'Venezuela', 'VN' => 'Vietnam', 'XW' => 'Wales', 'YE' => 'Yemen', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe' ); + $em_countries_array_i18n['nl'] = array ('AF' => 'Afghanistan', 'AL' => 'Albanië', 'DZ' => 'Algerije', 'AS' => 'Amerikaans-Samoa', 'AD' => 'Andorra', 'AO' => 'Angola', 'AQ' => 'Antarctica', 'AG' => 'Antigua en Barbuda', 'AR' => 'Argentinië', 'AM' => 'Armenië', 'AW' => 'Aruba', 'AU' => 'Australië', 'AT' => 'Oostenrijk', 'AZ' => 'Azerbeidzjan', 'BS' => 'Bahamas', 'BH' => 'Bahrein', 'BD' => 'Bangladesh', 'BB' => 'Barbados', 'BY' => 'Belarus', 'BE' => 'België', 'BZ' => 'Belize', 'BJ' => 'Benin', 'BT' => 'Bhutan', 'BO' => 'Bolivia', 'BA' => 'Bosnië en Herzegovina', 'BW' => 'Botswana', 'BR' => 'Brazilië', 'VG' => 'Britse Maagdeneilanden', 'BN' => 'Brunei', 'BG' => 'Bulgarije', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'CI' => 'Ivoorkust', 'KH' => 'Cambodja', 'CM' => 'Kameroen', 'CA' => 'Canada', 'CV' => 'Kaapverdië', 'KY'=>'Caymaneilanden', 'CF' => 'Centraal-Afrikaanse Republiek', 'TD' => 'Tsjaad', 'CL' => 'Chili', 'CN' => 'China', 'CO' => 'Colombia', 'KM' => 'Comoren', 'CR' => 'Costa Rica', 'HR' => 'Kroatië', 'CU' => 'Cuba', 'CY' => 'Cyprus', 'CZ' => 'Tsjechië', 'KP' => 'Noord-Korea', 'CD' => 'Democratische Republiek Congo', 'DK' => 'Denemarken', 'DJ' => 'Djibouti', 'DM' => 'Dominica', 'DO' => 'Dominicaanse Republiek', 'EC' => 'Ecuador', 'EG' => 'Egypte', 'SV' => 'El Salvador', 'XE' => 'England', 'GQ' => 'Equatoriaal-Guinea', 'ER' => 'Eritrea', 'EE' => 'Estland', 'ET' => 'Ethiopië', 'FJ' => 'Fiji', 'FI' => 'Finland', 'FR' => 'Frankrijk', 'PF' => 'Frans-Polynesië', 'GA' => 'Gabon', 'GM' => 'Gambia', 'GE' => 'Georgië', 'DE' => 'Duitsland', 'GH' => 'Ghana', 'GR' => 'Griekenland', 'GL' => 'Groenland', 'GD' => 'Grenada', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GN' => 'Guinee', 'GW' => 'Guinee-Bissau', 'GY' => 'Guyana', 'HT' => 'Haïti', 'HN' => 'Honduras', 'HK' => 'HongKong', 'HU' => 'Hongarije', 'IS' => 'IJsland', 'IN' => 'India', 'ID' => 'Indonesië', 'IR' => 'Iran', 'IQ' => 'Irak', 'IE' => 'Ierland', 'IL' => 'Israël', 'IT' => 'Italië', 'JM' => 'Jamaica', 'JP' => 'Japan', 'JO' => 'Jordanië', 'KZ' => 'Kazachstan', 'KE' => 'Kenia', 'KI' => 'Kiribati', 'KV' => 'Kosovo', 'KW' => 'Koeweit', 'KG' => 'Kirgizië', 'LA' => 'Laos', 'LV' => 'Letland', 'LB' => 'Libanon', 'LS' => 'Lesotho', 'LR' => 'Liberia', 'LY' => 'Libië', 'LI' => 'Liechtenstein', 'LT' => 'Litouwen', 'LU' => 'Luxemburg', 'MO' => 'Macau', 'MK' => 'Macedonië', 'MG' => 'Madagaskar', 'MW' => 'Malawi', 'MY' => 'Maleisië', 'MV' => 'Maldiven', 'ML' => 'Mali', 'MT' => 'Malta', 'MH' => 'Marshalleilanden', 'MQ' => 'Martinique', 'MU' => 'Mauritius', 'MR' => 'Mauritanië', 'MX' => 'Mexico', 'FM' => 'Micronesia', 'MD' => 'Moldavië', 'MC' => 'Monaco', 'MN' => 'Mongolië', 'ME' => 'Montenegro', 'MA' => 'Marokko', 'MZ' => 'Mozambique', 'MM' => 'Myanmar(Burma)', 'NA' => 'Namibië', 'NR' => 'Nauru', 'NP' => 'Nepal', 'NL' => 'Nederland', 'AN' => 'Nederlandse Antillen', 'NC' => 'Nieuw-Caledonië', 'NZ' => 'Nieuw-Zeeland', 'NI' => 'Nicaragua', 'NE' => 'Niger', 'NG' => 'Nigeria', 'XI' => 'Northern Ireland', 'MP' => 'Noordelijke Marianen', 'NO' => 'Noorwegen', 'OM' => 'Oman', 'PK' => 'Pakistan', 'PW' => 'Palau', 'PS' => 'Palestine', 'PA' => 'Panama', 'PG' => 'Papoea-Nieuw-Guinea', 'PY' => 'Paraguay', 'PE' => 'Peru', 'PH' => 'Filipijnen', 'PL' => 'Polen', 'PT' => 'Portugal', 'PR' => 'Puerto Rico', 'QA' => 'Qatar', 'CG' => 'Republic of the Congo', 'RO' => 'Roemenië', 'RU' => 'Rusland', 'RW' => 'Rwanda', 'ST' => 'Sao Tomé en Principe', 'KN' => 'Saint Kitts en Nevis', 'LC' => 'Saint Lucia', 'VC' => 'Saint Vincent en de Grenadines', 'WS' => 'Samoa', 'SM' => 'San Marino', 'SA' => 'Saudi-Arabië', 'XS' => 'Scotland', 'SN' => 'Senegal', 'RS' => 'Serbia', 'SC' => 'Seychellen', 'SL' => 'Sierra Leone', 'SG' => 'Singapore', 'SK' => 'Slowakije', 'SI' => 'Slovenië', 'SB' => 'Salomonseilanden', 'SO' => 'Somalië', 'ZA' => 'Zuid-Afrika', 'KR' => 'Zuid-Korea', 'ES' => 'Spanje', 'LK' => 'Sri Lanka', 'SD' => 'Sudan', 'SR' => 'Suriname', 'SZ' => 'Swaziland', 'SE' => 'Zweden', 'CH' => 'Zwitserland', 'SY' => 'Syrië', 'TW' => 'Taiwan', 'TJ' => 'Tadzjikistan', 'TZ' => 'Tanzania', 'TH' => 'Thailand', 'TL' => 'Timor-Leste', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trinidad en Tobago', 'TN' => 'Tunesië', 'TR' => 'Turkije', 'TM' => 'Turkmenistan', 'TV' => 'Tuvalu', 'VI' => 'Amerikaanse Maagdeneilanden', 'UG' => 'Uganda', 'UA' => 'Oekraïne', 'AE' => 'Verenigde Arabische Emiraten', 'GB' => 'Verenigd Koninkrijk', 'US' => 'Verenigde Staten', 'UY' => 'Uruguay', 'UZ' => 'Oezbekistan', 'VU' => 'Vanuatu', 'VA' => 'Vaticaanstad', 'VE' => 'Venezuela', 'VN' => 'Vietnam', 'XW' => 'Wales', 'YE' => 'Jemen', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe' ); + $em_countries_array_i18n['pt'] = array ('AF' => 'Afeganistão', 'AL' => 'Albânia', 'DZ' => 'Argélia', 'AS' => 'Samoa Americana', 'AD' => 'Andorra', 'AO' => 'Angola', 'AQ' => 'Antárctida', 'AG' => 'Antígua e Barbuda', 'AR' => 'Argentina', 'AM' => 'Arménia', 'AW' => 'Aruba', 'AU' => 'Austrália', 'AT' => 'Ãustria', 'AZ' => 'Azerbaijão', 'BS' => 'Baamas', 'BH' => 'Barém', 'BD' => 'Bangladeche', 'BB' => 'Barbados', 'BY' => 'Bielorrússia', 'BE' => 'Bélgica', 'BZ' => 'Belize', 'BJ' => 'Benim', 'BT' => 'Butão', 'BO' => 'Bolívia', 'BA' => 'Bósnia e Herzegovina', 'BW' => 'Botsuana', 'BR' => 'Brasil', 'VG' => 'Ilhas Virgens Britânicas', 'BN' => 'Brunei', 'BG' => 'Bulgária', 'BF' => 'Burquina Faso', 'BI' => 'Burúndi', 'CI' => 'Costa do Marfim', 'KH' => 'Camboja', 'CM' => 'Camarões', 'CA' => 'Canadá', 'CV' => 'Cabo Verde', 'KY'=>'Ilhas Caimão', 'CF' => 'República Centro-Africana', 'TD' => 'Chade', 'CL' => 'Chile', 'CN' => 'China', 'CO' => 'Colômbia', 'KM' => 'Comores', 'CR' => 'Costa Rica', 'HR' => 'Croácia', 'CU' => 'Cuba', 'CY' => 'Chipre', 'CZ' => 'República Checa', 'KP' => 'Coreia do Norte', 'CD' => 'Congo-Kinshasa', 'DK' => 'Dinamarca', 'DJ' => 'Jibuti', 'DM' => 'Domínica', 'DO' => 'República Dominicana', 'EC' => 'Equador', 'EG' => 'Egipto', 'SV' => 'Salvador', 'XE' => 'England', 'GQ' => 'Guiné Equatorial', 'ER' => 'Eritreia', 'EE' => 'Estónia', 'ET' => 'Etiópia', 'FJ' => 'Fiji', 'FI' => 'Finlândia', 'FR' => 'França', 'PF' => 'Polinésia Francesa', 'GA' => 'Gabão', 'GM' => 'Gambia', 'GE' => 'Geórgia', 'DE' => 'Alemanha', 'GH' => 'Gana', 'GR' => 'Grécia', 'GL' => 'Gronelândia', 'GD' => 'Granada', 'GU' => 'Guame', 'GT' => 'Guatemala', 'GN' => 'Guiné', 'GW' => 'Guiné-Bissau', 'GY' => 'Guiana', 'HT' => 'Haiti', 'HN' => 'Honduras', 'HK' => 'Hong Kong', 'HU' => 'Hungria', 'IS' => 'Islândia', 'IN' => 'Ãndia', 'ID' => 'Indonésia', 'IR' => 'Irão', 'IQ' => 'Iraque', 'IE' => 'Irlanda', 'IL' => 'Israel', 'IT' => 'Itália', 'JM' => 'Jamaica', 'JP' => 'Japão', 'JO' => 'Jordânia', 'KZ' => 'Cazaquistão', 'KE' => 'Quénia', 'KI' => 'Quiribáti', 'KV' => 'Kosovo', 'KW' => 'Kuwait', 'KG' => 'Quirguizistão', 'LA' => 'Laos', 'LV' => 'Letónia', 'LB' => 'Líbano', 'LS' => 'Lesoto', 'LR' => 'Libéria', 'LY' => 'Líbia', 'LI' => 'Listenstaine', 'LT' => 'Lituânia', 'LU' => 'Luxemburgo', 'MO' => 'Macau', 'MK' => 'Macedónia', 'MG' => 'Madagáscar', 'MW' => 'Malávi', 'MY' => 'Malásia', 'MV' => 'Maldivas', 'ML' => 'Mali', 'MT' => 'Malta', 'MH' => 'Ilhas Marshall', 'MQ' => 'Martinica', 'MU' => 'Maurícia', 'MR' => 'Mauritânia', 'MX' => 'México', 'FM' => 'Micronésia', 'MD' => 'Moldávia', 'MC' => 'Mónaco', 'MN' => 'Mongólia', 'ME' => 'Montenegro', 'MA' => 'Marrocos', 'MZ' => 'Moçambique', 'MM' => 'Birmânia', 'NA' => 'Namíbia', 'NR' => 'Nauru', 'NP' => 'Nepal', 'NL' => 'Países Baixos', 'AN' => 'Antilhas Neerlandesas', 'NC' => 'Nova Caledónia', 'NZ' => 'Nova Zelândia', 'NI' => 'Nicarágua', 'NE' => 'Níger', 'NG' => 'Nigéria', 'XI' => 'Northern Ireland', 'MP' => 'Marianas do Norte', 'NO' => 'Noruega', 'OM' => 'Omã', 'PK' => 'Paquistão', 'PW' => 'Palau', 'PS' => 'Palestine', 'PA' => 'Panamá', 'PG' => 'Papua-Nova Guiné', 'PY' => 'Paraguai', 'PE' => 'Peru', 'PH' => 'Filipinas', 'PL' => 'Polónia', 'PT' => 'Portugal', 'PR' => 'Porto Rico', 'QA' => 'Catar', 'CG' => 'Republic of the Congo', 'RO' => 'Roménia', 'RU' => 'Rússia', 'RW' => 'Ruanda', 'ST' => 'São Tomé e Príncipe', 'KN' => 'São Cristóvão e Neves', 'LC' => 'Santa Lúcia', 'VC' => 'São Vicente e Granadinas', 'WS' => 'Samoa', 'SM' => 'São Marinho', 'SA' => 'Arábia Saudita', 'XS' => 'Scotland', 'SN' => 'Senegal', 'RS' => 'Serbia', 'SC' => 'Seicheles', 'SL' => 'Serra Leoa', 'SG' => 'Singapura', 'SK' => 'Eslováquia', 'SI' => 'Eslovénia', 'SB' => 'Ilhas Salomão', 'SO' => 'Somália', 'ZA' => 'Ãfrica do Sul', 'KR' => 'Coreia do Sul', 'ES' => 'Espanha', 'LK' => 'Sri Lanca', 'SD' => 'Sudão', 'SR' => 'Suriname', 'SZ' => 'Suazilândia', 'SE' => 'Suécia', 'CH' => 'Suíça', 'SY' => 'Síria', 'TW' => 'Taiwan', 'TJ' => 'Tajiquistão', 'TZ' => 'Tanzânia', 'TH' => 'Tailândia', 'TL' => 'Timor-Leste', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trindade e Tobago', 'TN' => 'Tunísia', 'TR' => 'Turquia', 'TM' => 'Turquemenistão', 'TV' => 'Tuvalu', 'VI' => 'Ilhas Virgens Americanas', 'UG' => 'Uganda', 'UA' => 'Ucrânia', 'AE' => 'Emiratos Ãrabes Unidos', 'GB' => 'Reino Unido', 'US' => 'Estados Unidos', 'UY' => 'Uruguai', 'UZ' => 'Usbequistão', 'VU' => 'Vanuatu', 'VA' => 'Vaticano', 'VE' => 'Venezuela', 'VN' => 'Vietname', 'XW' => 'Wales', 'YE' => 'Iémen', 'ZM' => 'Zâmbia', 'ZW' => 'Zimbabué' ); + $em_countries_array_i18n['ru'] = array ('AF' => 'ÐфганиÑтан', 'AL' => 'ÐлбаниÑ', 'DZ' => 'Ðлжир', 'AS' => 'Самоа (СШÐ)', 'AD' => 'Ðндорра', 'AO' => 'Ðнгола', 'AQ' => 'Ðнтарктика', 'AG' => 'Ðнтигуа и Барбуда', 'AR' => 'Ðргентина', 'AM' => 'ÐрмениÑ', 'AW' => 'Ðруба', 'AU' => 'ÐвÑтралиÑ', 'AT' => 'ÐвÑтриÑ', 'AZ' => 'Ðзербайджан', 'BS' => 'Багамы', 'BH' => 'Бахрейн', 'BD' => 'Бангладеш', 'BB' => 'БарбадоÑ', 'BY' => 'БеларуÑÑŒ', 'BE' => 'БельгиÑ', 'BZ' => 'Белиз', 'BJ' => 'Бенин', 'BT' => 'Бутан', 'BO' => 'БоливиÑ', 'BA' => 'БоÑниÑ-Герцеговина', 'BW' => 'БотÑвана', 'BR' => 'БразилиÑ', 'VG' => 'ВирджинÑкие оÑтрова (Брит.)', 'BN' => 'Бруней', 'BG' => 'БолгариÑ', 'BF' => 'Буркина-ФаÑо', 'BI' => 'Бурунди', 'CI' => 'Берег Слоновой КоÑти', 'KH' => 'Камбоджа', 'CM' => 'Камерун', 'CA' => 'Канада', 'CV' => 'Кабо-Верде', 'KY'=>'Каймановы оÑтрова', 'CF' => 'Центрально-ÐфриканÑÐºÐ°Ñ Ð ÐµÑпублика', 'TD' => 'Чад', 'CL' => 'Чили', 'CN' => 'Китай', 'CO' => 'КолумбиÑ', 'KM' => 'КомороÑ', 'CR' => 'КоÑта Рикa', 'HR' => 'ХорватиÑ', 'CU' => 'Куба', 'CY' => 'Кипр', 'CZ' => 'ЧешÑÐºÐ°Ñ Ð ÐµÑпублика', 'KP' => 'Ð¡ÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐšÐ¾Ñ€ÐµÑ', 'CD' => 'ДемократичеÑÐºÐ°Ñ Ð ÐµÑпублика Конго', 'DK' => 'ДаниÑ', 'DJ' => 'Джибути', 'DM' => 'Доминика', 'DO' => ' ДоминиканÑÐºÐ°Ñ Ð ÐµÑпублика', 'EC' => 'Эквадор', 'EG' => 'Египет', 'SV' => 'Сальвадор', 'XE' => 'ÐнглиÑ', 'GQ' => 'Ð­ÐºÐ²Ð°Ñ‚Ð¾Ñ€Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð“Ð²Ð¸Ð½ÐµÑ', 'ER' => 'ЭритреÑ', 'EE' => 'ЭÑтониÑ', 'ET' => 'ЭфиопиÑ', 'FJ' => 'Фиджи', 'FI' => 'ФинлÑндиÑ', 'FR' => 'ФранциÑ', 'PF' => ' ÐŸÐ¾Ð»Ð¸Ð½ÐµÐ·Ð¸Ñ (Фр.)', 'GA' => 'Габон', 'GM' => 'ГамбиÑ', 'GE' => 'ГрузиÑ', 'DE' => 'ГерманиÑ', 'GH' => 'Гана', 'GR' => 'ГрециÑ', 'GL' => 'ГренландиÑ', 'GD' => 'Гренада', 'GU' => 'Гуам (СШÐ)', 'GT' => 'Гватемала', 'GN' => 'ГвинеÑ', 'GW' => 'ГвинеÑ-БиÑау', 'GY' => 'Гайана', 'HT' => 'Гаити', 'HN' => 'ГондураÑ', 'HK' => 'Гонг Конг', 'HU' => 'ВенгриÑ', 'IS' => 'ИÑландиÑ', 'IN' => 'ИндиÑ', 'ID' => 'ИндонезиÑ', 'IR' => 'Иран', 'IQ' => 'Ирак', 'IE' => 'ИрландиÑ', 'IL' => 'Израйль', 'IT' => 'ИталиÑ', 'JM' => 'Ямайка', 'JP' => 'ЯпониÑ', 'JO' => 'ИорданиÑ', 'KZ' => 'КазахÑтан', 'KE' => 'КениÑ', 'KI' => 'Кирибати', 'KV' => 'КоÑово', 'KW' => 'Кувейт', 'KG' => 'КиргизиÑ', 'LA' => 'ЛаоÑ', 'LV' => 'ЛатвиÑ', 'LB' => 'Ливан', 'LS' => 'ЛеÑото', 'LR' => 'ЛибериÑ', 'LY' => 'ЛибиÑ', 'LI' => 'Лихтейнштейн', 'LT' => 'Литва', 'LU' => 'ЛюкÑембург', 'MO' => 'Макау', 'MK' => 'МакедониÑ', 'MG' => 'МадагаÑкар', 'MW' => 'Малави', 'MY' => 'МалайзиÑ', 'MV' => 'Мальдивы', 'ML' => 'Мали', 'MT' => 'Мальта', 'MH' => 'МаршальÑкие оÑтрова', 'MQ' => 'Мартиника (Фр.)', 'MU' => 'Мавритий', 'MR' => 'МавританиÑ', 'MX' => 'МекÑика', 'FM' => 'МикронезиÑ', 'MD' => 'Молдова', 'MC' => 'Монако', 'MN' => 'МонголиÑ', 'ME' => 'ЧерногориÑ', 'MA' => 'Морокко', 'MZ' => 'Мозамбик', 'MM' => 'Бирма (МьÑнма)', 'NA' => 'ÐамибиÑ', 'NR' => 'Ðауру', 'NP' => 'Ðепал', 'NL' => 'Ðидерланды', 'AN' => 'Ðнтиллы (Ðидерланды)', 'NC' => 'ÐÐ¾Ð²Ð°Ñ ÐšÐ°Ð»ÐµÐ´Ð¾Ð½Ð¸Ñ (Фр.)', 'NZ' => 'ÐÐ¾Ð²Ð°Ñ Ð—ÐµÐ»Ð°Ð½Ð´Ð¸Ñ', 'NI' => 'Ðикарагуаa', 'NE' => 'Ðигер', 'NG' => 'ÐигериÑ', 'XI' => 'Северной Ирландии', 'MP' => 'Северные МарианÑкие оÑтрова', 'NO' => 'ÐорвегиÑ', 'OM' => 'Оман', 'PK' => 'ПакиÑтан', 'PW' => 'Палау', 'PS' => 'ПалеÑтина', 'PA' => 'Панама', 'PG' => 'Папуа ÐÐ¾Ð²Ð°Ñ Ð“Ð²Ð¸Ð½ÐµÑ', 'PY' => 'Парагвай', 'PE' => 'Перу', 'PH' => 'Филиппины', 'PL' => 'Польша', 'PT' => 'ПортугалиÑ', 'PR' => 'ПуÑрто-Рико', 'QA' => 'Катар', 'CG' => 'Конго', 'RO' => 'РумыниÑ', 'RU' => 'РоÑÑиÑ', 'RW' => 'Руанда', 'ST' => 'Сан-Томе и ПринÑипи', 'KN' => 'Сент-ÐšÐ¸Ñ‚Ñ‚Ñ ÐÑÐ²Ð¸Ñ Ðнгуилла', 'LC' => 'Санта ЛючиÑ', 'VC' => 'Сент-ВиÑент и Гренадины', 'WS' => 'Самоа', 'SM' => 'Сан-Марино', 'SA' => 'СаудовÑÐºÐ°Ñ ÐравиÑ', 'XS' => 'ШотландиÑ', 'SN' => 'Сенегал', 'RS' => 'Сербии', 'SC' => 'Сейшеллы', 'SL' => 'Сьерра-Леоне', 'SG' => 'Сингапур', 'SK' => 'СловакиÑ', 'SI' => 'СловениÑ', 'SB' => 'Соломоновы оÑтрова', 'SO' => 'Сомали', 'ZA' => 'Ð®Ð¶Ð½Ð°Ñ Ðфрика', 'KR' => 'Ð®Ð¶Ð½Ð°Ñ ÐšÐ¾Ñ€ÐµÑ', 'ES' => 'ИÑпаниÑ', 'LK' => 'Шри Ланка', 'SD' => 'Судан', 'SR' => 'Суринам', 'SZ' => 'Свазиленд', 'SE' => 'ШвециÑ', 'CH' => 'ШвейцариÑ', 'SY' => 'СириÑ', 'TW' => 'Тайвань', 'TJ' => 'ТаджикиÑтан', 'TZ' => 'ТанзаниÑ', 'TH' => 'Таиланд', 'TL' => 'ВоÑточный Тимор', 'TG' => 'Того', 'TO' => 'Тонга', 'TT' => 'Тринидад и Тобаго', 'TN' => 'ТуниÑ', 'TR' => 'ТурциÑ', 'TM' => 'ТуркмениÑтан', 'TV' => 'Тувалу', 'VI' => 'ВирджинÑкие оÑтрова (СШÐ)', 'UG' => 'Уганда', 'UA' => 'Украина', 'AE' => 'Объединенные ÐрабÑкие Эмираты', 'GB' => 'ВеликобританиÑ', 'US' => 'СШÐ', 'UY' => 'Uruguay', 'UZ' => 'УзбекиÑтан', 'VU' => 'Вануату', 'VA' => 'Ватикан', 'VE' => 'ВенеÑуÑла', 'VN' => 'Вьетнам', 'XW' => 'УÑльÑ', 'YE' => 'Йемен', 'ZM' => 'ЗамбиÑ', 'ZW' => 'Зимбабве' ); + $em_countries_array_i18n['sv'] = array ('AF' => 'Afghanistan', 'AL' => 'Albanien', 'DZ' => 'Algeriet', 'AS' => 'Amerikanska Samoa', 'AD' => 'Andorra', 'AO' => 'Angola', 'AQ' => 'Antarktis', 'AG' => 'Antigua och Barbuda', 'AR' => 'Argentina', 'AM' => 'Armenien', 'AW' => 'Aruba', 'AU' => 'Australien', 'AT' => 'Österrike', 'AZ' => 'Azerbajdzjan', 'BS' => 'Bahamas', 'BH' => 'Bahrain', 'BD' => 'Bangladesh', 'BB' => 'Barbados', 'BY' => 'Vitryssland', 'BE' => 'Belgien', 'BZ' => 'Belize', 'BJ' => 'Benin', 'BT' => 'Bhutan', 'BO' => 'Bolivia', 'BA' => 'Bosnien och Hercegovina', 'BW' => 'Botswana', 'BR' => 'Brasilien', 'VG' => 'Brittiska Jungfruöarna', 'BN' => 'Brunei', 'BG' => 'Bulgarien', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'CI' => 'Elfenbenskusten', 'KH' => 'Kambodja', 'CM' => 'Kamerun', 'CA' => 'Kanada', 'CV' => 'Kap Verde', 'KY'=>'Caymanöarna', 'CF' => 'Centralafrikanska republiken', 'TD' => 'Tchad', 'CL' => 'Chile', 'CN' => 'Kina', 'CO' => 'Colombia', 'KM' => 'Komorerna', 'CR' => 'Costa Rica', 'HR' => 'Kroatien', 'CU' => 'Kuba', 'CY' => 'Cypern', 'CZ' => 'Tjeckien', 'KP' => 'Nordkorea', 'CD' => 'Demokratiska republiken Kongo', 'DK' => 'Danmark', 'DJ' => 'Djibouti', 'DM' => 'Dominica', 'DO' => 'Dominikanska republiken', 'EC' => 'Ecuador', 'EG' => 'Egypten', 'SV' => 'El Salvador', 'XE' => 'England', 'GQ' => 'Ekvatorialguinea', 'ER' => 'Eritrea', 'EE' => 'Estland', 'ET' => 'Etiopien', 'FJ' => 'Fiji', 'FI' => 'Finland', 'FR' => 'Frankrike', 'PF' => 'Franska Polynesien', 'GA' => 'Gabon', 'GM' => 'Gambia', 'GE' => 'Georgien', 'DE' => 'Tyskland', 'GH' => 'Ghana', 'GR' => 'Grekland', 'GL' => 'Grönland', 'GD' => 'Grenada', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GN' => 'Guinea', 'GW' => 'Guinea-Bissau', 'GY' => 'Guyana', 'HT' => 'Haiti', 'HN' => 'Honduras', 'HK' => 'Hong Kong', 'HU' => 'Ungern', 'IS' => 'Island', 'IN' => 'Indien', 'ID' => 'Indonesien', 'IR' => 'Iran', 'IQ' => 'Irak', 'IE' => 'Irland', 'IL' => 'Israel', 'IT' => 'Italien', 'JM' => 'Jamaica', 'JP' => 'Japan', 'JO' => 'Jordanien', 'KZ' => 'Kazakstan', 'KE' => 'Kenya', 'KI' => 'Kiribati', 'KV' => 'Kosovo', 'KW' => 'Kuwait', 'KG' => 'Kirgizistan', 'LA' => 'Laos', 'LV' => 'Lettland', 'LB' => 'Libanon', 'LS' => 'Lesotho', 'LR' => 'Liberia', 'LY' => 'Libyen', 'LI' => 'Liechtenstein', 'LT' => 'Litauen', 'LU' => 'Luxemburg', 'MO' => 'Macao', 'MK' => 'Makedonien', 'MG' => 'Madagaskar', 'MW' => 'Malawi', 'MY' => 'Malaysia', 'MV' => 'Maldiverna', 'ML' => 'Mali', 'MT' => 'Malta', 'MH' => 'Marshallöarna', 'MQ' => 'Martinique', 'MU' => 'Mauritius', 'MR' => 'Mauretanien', 'MX' => 'Mexiko', 'FM' => 'Mikronesien', 'MD' => 'Moldavien', 'MC' => 'Monaco', 'MN' => 'Mongoliet', 'ME' => 'Montenegro', 'MA' => 'Marocko', 'MZ' => 'Moçambique', 'MM' => 'Myanmar(Burma)', 'NA' => 'Namibia', 'NR' => 'Nauru', 'NP' => 'Nepal', 'NL' => 'Nederländerna', 'AN' => 'Nederländska Antillerna', 'NC' => 'Nya Kaledonien', 'NZ' => 'Nya Zeeland', 'NI' => 'Nicaragua', 'NE' => 'Niger', 'NG' => 'Nigeria', 'XI' => 'Northern Ireland', 'MP' => 'Nordmarianerna', 'NO' => 'Norge', 'OM' => 'Oman', 'PK' => 'Pakistan', 'PW' => 'Palau', 'PS' => 'Palestine', 'PA' => 'Panama', 'PG' => 'Papua Nya Guinea', 'PY' => 'Paraguay', 'PE' => 'Peru', 'PH' => 'Filippinerna', 'PL' => 'Polen', 'PT' => 'Portugal', 'PR' => 'Puerto Rico', 'QA' => 'Qatar', 'CG' => 'Kongo', 'RO' => 'Rumänien', 'RU' => 'Ryssland', 'RW' => 'Rwanda', 'ST' => 'São Tomé och Príncipe', 'KN' => ' Saint Christopher och Nevis', 'LC' => 'Saint Lucia', 'VC' => 'Saint Vincent och Grenadinerna', 'WS' => 'Samoa', 'SM' => 'San Marino', 'SA' => 'Saudiarabien', 'XS' => 'Scotland', 'SN' => 'Senegal', 'RS' => 'Serbia', 'SC' => 'Seychellerna', 'SL' => 'Sierra Leone', 'SG' => 'Singapore', 'SK' => 'Slovakien', 'SI' => 'Slovenien', 'SB' => 'Salomonöarna', 'SO' => 'Somalia', 'ZA' => 'Sydafrika', 'KR' => 'Sydkorea', 'ES' => 'Spanien', 'LK' => 'Sri Lanka', 'SD' => 'Sudan', 'SR' => 'Surinam', 'SZ' => 'Swaziland', 'SE' => 'Sverige', 'CH' => 'Schweiz', 'SY' => 'Syrien', 'TW' => 'Taiwan', 'TJ' => 'Tadzjikistan', 'TZ' => 'Tanzania', 'TH' => 'Thailand', 'TL' => 'Timor-Leste', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trinidad och Tobago', 'TN' => 'Tunisien', 'TR' => 'Turkiet', 'TM' => 'Turkmenistan', 'TV' => 'Tuvalu', 'VI' => 'Amerikanska Jungfruöarna', 'UG' => 'Uganda', 'UA' => 'Ukraina', 'AE' => 'Förenade Arabemiraten', 'GB' => 'Förenade kungariket', 'US' => 'Förenta staterna', 'UY' => 'Uruguay', 'UZ' => 'Uzbekistan', 'VU' => 'Vanuatu', 'VA' => ' Heliga stolen', 'VE' => 'Venezuela', 'VN' => 'Vietnam', 'XW' => 'Wales', 'YE' => 'Yemen', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe' ); + $em_countries_array_i18n['en'] = array ('AF' => 'Afghanistan', 'AL' => 'Albania', 'DZ' => 'Algeria', 'AS' => 'American Samoa', 'AD' => 'Andorra', 'AO' => 'Angola', 'AQ' => 'Antarctica', 'AG' => 'Antigua and Barbuda', 'AR' => 'Argentina', 'AM' => 'Armenia', 'AW' => 'Aruba', 'AU' => 'Australia', 'AT' => 'Austria', 'AZ' => 'Azerbaijan', 'BS' => 'Bahamas', 'BH' => 'Bahrain', 'BD' => 'Bangladesh', 'BB' => 'Barbados', 'BY' => 'Belarus', 'BE' => 'Belgium', 'BZ' => 'Belize', 'BJ' => 'Benin', 'BT' => 'Bhutan', 'BO' => 'Bolivia', 'BA' => 'Bosnia and Herzegovina', 'BW' => 'Botswana', 'BR' => 'Brazil', 'VG' => 'British Virgin Islands', 'BN' => 'Brunei', 'BG' => 'Bulgaria', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'CI' => 'Côte D\'Ivoire', 'KH' => 'Cambodia', 'CM' => 'Cameroon', 'CA' => 'Canada', 'CV' => 'Cape Verde', 'KY'=>'Cayman Islands', 'CF' => 'Central African Republic', 'TD' => 'Chad', 'CL' => 'Chile', 'CN' => 'China', 'CO' => 'Colombia', 'KM' => 'Comoros', 'CR' => 'Costa Rica', 'HR' => 'Croatia', 'CU' => 'Cuba', 'CY' => 'Cyprus', 'CZ' => 'Czech Republic', 'KP' => 'Democratic People\'s Republic of Korea', 'CD' => 'Democratic Republic of the Congo', 'DK' => 'Denmark', 'DJ' => 'Djibouti', 'DM' => 'Dominica', 'DO' => 'Dominican Republic', 'EC' => 'Ecuador', 'EG' => 'Egypt', 'SV' => 'El Salvador', 'XE' => 'England', 'GQ' => 'Equatorial Guinea', 'ER' => 'Eritrea', 'EE' => 'Estonia', 'ET' => 'Ethiopia', 'FJ' => 'Fiji', 'FI' => 'Finland', 'FR' => 'France', 'PF' => 'French Polynesia', 'GA' => 'Gabon', 'GM' => 'Gambia', 'GE' => 'Georgia', 'DE' => 'Germany', 'GH' => 'Ghana', 'GR' => 'Greece', 'GL' => 'Greenland', 'GD' => 'Grenada', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GN' => 'Guinea', 'GW' => 'Guinea Bissau', 'GY' => 'Guyana', 'HT' => 'Haiti', 'HN' => 'Honduras', 'HK' => 'Hong Kong', 'HU' => 'Hungary', 'IS' => 'Iceland', 'IN' => 'India', 'ID' => 'Indonesia', 'IR' => 'Iran', 'IQ' => 'Iraq', 'IE' => 'Ireland', 'IL' => 'Israel', 'IT' => 'Italy', 'JM' => 'Jamaica', 'JP' => 'Japan', 'JO' => 'Jordan', 'KZ' => 'Kazakhstan', 'KE' => 'Kenya', 'KI' => 'Kiribati', 'KV' => 'Kosovo', 'KW' => 'Kuwait', 'KG' => 'Kyrgyzstan', 'LA' => 'Laos', 'LV' => 'Latvia', 'LB' => 'Lebanon', 'LS' => 'Lesotho', 'LR' => 'Liberia', 'LY' => 'Libyan Arab Jamahiriya', 'LI' => 'Liechtenstein', 'LT' => 'Lithuania', 'LU' => 'Luxembourg', 'MO' => 'Macao', 'MK' => 'Macedonia', 'MG' => 'Madagascar', 'MW' => 'Malawi', 'MY' => 'Malaysia', 'MV' => 'Maldives', 'ML' => 'Mali', 'MT' => 'Malta', 'MH' => 'Marshall Islands', 'MQ' => 'Mauritania', 'MU' => 'Mauritius', 'MR' => 'Mauritius', 'MX' => 'Mexico', 'FM' => 'Micronesia', 'MD' => 'Moldova', 'MC' => 'Monaco', 'MN' => 'Mongolia', 'ME' => 'Montenegro', 'MA' => 'Morocco', 'MZ' => 'Mozambique', 'MM' => 'Myanmar(Burma)', 'NA' => 'Namibia', 'NR' => 'Nauru', 'NP' => 'Nepal', 'NL' => 'Netherlands', 'AN' => 'Netherlands Antilles', 'NC' => 'New Caledonia', 'NZ' => 'New Zealand', 'NI' => 'Nicaragua', 'NE' => 'Niger', 'NG' => 'Nigeria', 'XI' => 'Northern Ireland', 'MP' => 'Northern Mariana Islands', 'NO' => 'Norway', 'OM' => 'Oman', 'PK' => 'Pakistan', 'PW' => 'Palau', 'PS' => 'Palestine', 'PA' => 'Panama', 'PG' => 'Papua New Guinea', 'PY' => 'Paraguay', 'PE' => 'Peru', 'PH' => 'Philippines', 'PL' => 'Poland', 'PT' => 'Portugal', 'PR' => 'Puerto Rico', 'QA' => 'Qatar', 'CG' => 'Republic of the Congo', 'RO' => 'Romania', 'RU' => 'Russia', 'RW' => 'Rwanda', 'ST' => 'Sào Tomé And Príncipe', 'KN' => 'Saint Kitts and Nevis', 'LC' => 'Saint Lucia', 'VC' => 'Saint Vincent and the Grenadines', 'WS' => 'Samoa', 'SM' => 'San Marino', 'SA' => 'Saudi Arabia', 'XS' => 'Scotland', 'SN' => 'Senegal', 'RS' => 'Serbia', 'SC' => 'Seychelles', 'SL' => 'Sierra Leone', 'SG' => 'Singapore', 'SK' => 'Slovakia', 'SI' => 'Slovenia', 'SB' => 'Solomon Islands', 'SO' => 'Somalia', 'ZA' => 'South Africa', 'KR' => 'South Korea', 'ES' => 'Spain', 'LK' => 'Sri Lanka', 'SD' => 'Sudan', 'SR' => 'Suriname', 'SZ' => 'Swaziland', 'SE' => 'Sweden', 'CH' => 'Switzerland', 'SY' => 'Syria', 'TW' => 'Taiwan', 'TJ' => 'Tajikistan', 'TZ' => 'Tanzania', 'TH' => 'Thailand', 'TL' => 'Timor-Leste', 'TG' => 'Togo', 'TO' => 'Tonga', 'TT' => 'Trinidad and Tobago', 'TN' => 'Tunisia', 'TR' => 'Turkey', 'TM' => 'Turkmenistan', 'TV' => 'Tuvalu', 'VI' => 'US Virgin Islands', 'UG' => 'Uganda', 'UA' => 'Ukraine', 'AE' => 'United Arab Emirates', 'GB' => 'United Kingdom', 'US' => 'United States', 'UY' => 'Uruguay', 'UZ' => 'Uzbekistan', 'VU' => 'Vanuatu', 'VA' => 'Vatican', 'VE' => 'Venezuela', 'VN' => 'Vietnam', 'XW' => 'Wales', 'YE' => 'Yemen', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe' ); + $lang = substr(get_locale(), 0, 2); + if( array_key_exists($lang, $em_countries_array_i18n) ){ + $em_countries_array = $em_countries_array_i18n[$lang]; + }else{ + $em_countries_array = $em_countries_array_i18n['en']; + } + } + if($add_blank !== false){ + if(is_array($add_blank)){ + $em_countries_array = $add_blank + $em_countries_array; + }else{ + array_unshift($em_countries_array, $add_blank); + } + } + return apply_filters('em_get_countries', $em_countries_array); +} + +/** + * Returns an array of scopes available to events manager. Hooking into this function's em_get_scopes filter will allow you to add scope options to the event pages. + */ +function em_get_scopes(){ + $scopes = array( + 'all' => __('All events','dbem'), + 'future' => __('Future events','dbem'), + 'past' => __('Past events','dbem'), + 'today' => __('Today\'s events','dbem'), + 'tomorrow' => __('Tomorrow\'s events','dbem'), + 'month' => __('Events this month','dbem'), + 'next-month' => __('Events next month','dbem'), + '1-months' => __('Events current and next month','dbem'), + '2-months' => __('Events within 2 months','dbem'), + '3-months' => __('Events within 3 months','dbem'), + '6-months' => __('Events within 6 months','dbem'), + '12-months' => __('Events within 12 months','dbem') + ); + return apply_filters('em_get_scopes',$scopes); +} + +function em_get_currencies(){ + $currencies = new stdClass(); + $currencies->names = array('EUR' => 'EUR - Euros','USD' => 'USD - U.S. Dollars','GBP' => 'GBP - British Pounds','CAD' => 'CAD - Canadian Dollars','AUD' => 'AUD - Australian Dollars','BRL' => 'BRL - Brazilian Reais','CZK' => 'CZK - Czech Koruny','DKK' => 'DKK - Danish Kroner','HKD' => 'HKD - Hong Kong Dollars','HUF' => 'HUF - Hungarian Forints','ILS' => 'ILS - Israeli New Shekels','JPY' => 'JPY - Japanese Yen','MYR' => 'MYR - Malaysian Ringgit','MXN' => 'MXN - Mexican Pesos','TWD' => 'TWD - New Taiwan Dollars','NZD' => 'NZD - New Zealand Dollars','NOK' => 'NOK - Norwegian Kroner','PHP' => 'PHP - Philippine Pesos','PLN' => 'PLN - Polish Zlotys','SGD' => 'SGD - Singapore Dollars','SEK' => 'SEK - Swedish Kronor','CHF' => 'CHF - Swiss Francs','THB' => 'THB - Thai Baht','TRY' => 'TRY - Turkish Liras'); + $currencies->symbols = array( 'EUR' => '€','USD' => '$','GBP' => '£','CAD' => '$','AUD' => '$','BRL' => 'R$','DKK' => 'kr','HKD' => '$','HUF' => 'Ft','JPY' => '¥','MYR' => 'RM','MXN' => '$','TWD' => '$','NZD' => '$','NOK' => 'kr','PHP' => 'Php','SGD' => '$','SEK' => 'kr','CHF' => 'CHF','TRY' => 'TL'); + $currencies->true_symbols = array( 'EUR' => '€','USD' => '$','GBP' => '£','CAD' => '$','AUD' => '$','BRL' => 'R$','DKK' => 'kr','HKD' => '$','HUF' => 'Ft','JPY' => 'Â¥','MYR' => 'RM','MXN' => '$','TWD' => '$','NZD' => '$','NOK' => 'kr','PHP' => 'Php','SGD' => '$','SEK' => 'kr','CHF' => 'CHF','TRY' => 'TL'); + return apply_filters('em_get_currencies',$currencies); +} + +function em_get_currency_formatted($price, $currency=false, $format=false){ + $formatted_price = ''; + if(!$format) $format = get_option('dbem_bookings_currency_format','@#'); + if(!$currency) $currency = get_option('dbem_bookings_currency'); + $formatted_price = str_replace('@', em_get_currency_symbol(true,$currency), $format); + $formatted_price = str_replace('#', number_format( $price, 2, get_option('dbem_bookings_currency_decimal_point','.'), get_option('dbem_bookings_currency_thousands_sep',',') ), $formatted_price); + return $formatted_price; +} + +function em_get_currency_symbol($true_symbol = false, $currency = false){ + if( !$currency ) $currency = get_option('dbem_bookings_currency'); + if($true_symbol){ + return em_get_currencies()->true_symbols[$currency]; + } + return apply_filters('em_get_currency_symbol', em_get_currencies()->symbols[$currency]); +} + +function em_get_currency_name($currency = false){ + if( !$currency ) $currency = get_option('dbem_bookings_currency'); + return apply_filters('em_get_currency_name', em_get_currencies()->names[$currency]); +} + +function em_get_hour_format(){ + return get_option('dbem_time_24h') ? "H:i":"h:i A"; +} + +function em_get_days_names(){ + return array (1 => __ ( 'Mon' ), 2 => __ ( 'Tue' ), 3 => __ ( 'Wed' ), 4 => __ ( 'Thu' ), 5 => __ ( 'Fri' ), 6 => __ ( 'Sat' ), 0 => __ ( 'Sun' ) ); +} + +/** + * Works like check_admin_referrer(), but also in public mode. If in admin mode, it triggers an error like in check_admin_referrer(), if outside admin it just exits with an error. + * @param string $action + */ +function em_verify_nonce($action, $nonce_name='_wpnonce'){ + if( is_admin() ){ + if( !wp_verify_nonce($_REQUEST[$nonce_name], $action) ) check_admin_referer('trigger_error'); + }else{ + if( !wp_verify_nonce($_REQUEST[$nonce_name], $action) ) exit( __('Trying to perform an illegal action.','dbem') ); + } +} + +/** + * Gets all WP users + * @return array + */ +function em_get_wp_users( $args = array(), $extra_users = array() ) { + global $wpdb; + $users = get_users($args); + $indexed_users = array(); + foreach($users as $user){ + $indexed_users[$user->ID] = $user->display_name; + } + return $extra_users + $indexed_users; +} + +function em_get_attributes($lattributes = false){ + //We also get a list of attribute names and create a ddm list (since placeholders are fixed) + $formats = + get_option ( 'dbem_placeholders_custom' ). + get_option ( 'dbem_location_placeholders_custom' ). + get_option ( 'dbem_event_list_item_format' ). + get_option ( 'dbem_event_page_title_format' ). + get_option ( 'dbem_full_calendar_event_format' ). + get_option ( 'dbem_location_baloon_format' ). + get_option ( 'dbem_location_event_list_item_format' ). + get_option ( 'dbem_location_page_title_format' ). + get_option ( 'dbem_map_text_format' ). + get_option ( 'dbem_rss_description_format' ). + get_option ( 'dbem_rss_title_format' ). + get_option ( 'dbem_single_event_format' ). + get_option ( 'dbem_single_location_format' ); + //We now have one long string of formats, get all the attribute placeholders + if( $lattributes ){ + preg_match_all('/#_LATT\{([^}]+)\}(\{([^}]+)\})?/', $formats, $matches); + }else{ + preg_match_all('/#_ATT\{([^}]+)\}(\{([^}]+)\})?/', $formats, $matches); + } + //Now grab all the unique attributes we can use in our event. + $attributes = array('names'=>array(), 'values'=>array()); + foreach($matches[1] as $key => $attribute) { + if( !in_array($attribute, $attributes['names']) ){ + $attributes['names'][] = $attribute ; + //check if there's ddm values + $attribute_values = array(); + if(strstr($matches[3][$key], '|') !== false){ + $attribute_values = explode('|',$matches[3][$key]); + } + $attributes['values'][$attribute] = apply_filters('em_get_attributes_'.$attribute,$attribute_values, $attribute, $matches); + } + } + return apply_filters('em_get_attributes', $attributes, $matches); +} + +/** + * Copied straight from wp-login.php, only change atm is a function renaming. + * Handles registering a new user. + * + * @param array associative array of user values to insert + * @return int|WP_Error Either user's ID or error on failure. + */ +function em_register_new_user( $user_data ) { + $user_data = apply_filters('em_register_new_user_pre',$user_data); + $errors = new WP_Error(); + if( !empty($user_data['user_name']) ){ + $name = explode(' ', $user_data['user_name']); + $user_data['first_name'] = array_shift($name); + $user_data['last_name'] = implode(' ',$name); + } + $sanitized_user_login = sanitize_user( $user_data['user_login'] ); + $user_data['user_login'] = $sanitized_user_login; + $user_email = apply_filters( 'user_registration_email', $user_data['user_email'] ); + + // Check the username + if ( $sanitized_user_login == '' ) { + $errors->add( 'empty_username', __( '<strong>ERROR</strong>: Please enter a username.', 'dbem') ); + } elseif ( ! validate_username( $user_data['user_login'] ) ) { + $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username.', 'dbem') ); + $sanitized_user_login = ''; + } elseif ( username_exists( $sanitized_user_login ) ) { + $errors->add( 'username_exists', __( '<strong>ERROR</strong>: This username is already registered, please choose another one.' ) ); + } + + // Check the e-mail address + if ( $user_email == '' ) { + $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please type your e-mail address.', 'dbem') ); + } elseif ( ! is_email( $user_email ) ) { + $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The email address isn’t correct.', 'dbem') ); + $user_email = ''; + } elseif ( email_exists( $user_email ) ) { + $errors->add( 'email_exists', __( '<strong>ERROR</strong>: This email is already registered, please choose another one.' ) ); + } + + do_action( 'register_post', $sanitized_user_login, $user_email, $errors ); + + ob_start(); //prevent any errors going out here, e.g. with RPR + $errors = apply_filters( 'registration_errors', $errors, $sanitized_user_login, $user_email ); + ob_clean(); + + if ( $errors->get_error_code() ) + return $errors; + + $user_data['user_pass'] = wp_generate_password( 12, false); + + $user_id = wp_insert_user( $user_data ); + if( is_numeric($user_id) && !empty($user_data['dbem_phone']) ){ + update_user_meta($user_id, 'dbem_phone', $user_data['dbem_phone']); + } + + if ( ! $user_id ) { + $errors->add( 'registerfail', sprintf( __( '<strong>ERROR</strong>: Couldn’t register you... please contact the <a href="mailto:%s">webmaster</a> !', 'dbem'), get_option( 'admin_email' ) ) ); + return $errors; + } + + update_user_option( $user_id, 'default_password_nag', true, true ); //Set up the Password change nag. + + em_new_user_notification( $user_id, $user_data['user_pass'] ); + + return apply_filters('em_register_new_user',$user_id); +} + +/** + * Notify the blog admin of a new user, normally via email. + * + * @since 2.0 + * + * @param int $user_id User ID + * @param string $plaintext_pass Optional. The user's plaintext password + */ +function em_new_user_notification($user_id, $plaintext_pass = '') { + global $LoginWithAjax; + + //if you want you can disable this email from going out, and will still consider registration as successful. + if( get_option('dbem_email_disable_registration') ){ return true; } + + //Copied out of /wp-includes/pluggable.php + $user = new WP_User($user_id); + + $user_login = stripslashes($user->user_login); + $user_email = stripslashes($user->user_email); + + // The blogname option is escaped with esc_html on the way into the database in sanitize_option + // we want to reverse this for the plain text arena of emails. + $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); + + $message = sprintf(__('New user registration on your blog %s:', 'dbem'), $blogname) . "\r\n\r\n"; + $message .= sprintf(__('Username: %s', 'dbem'), $user_login) . "\r\n\r\n"; + $message .= sprintf(__('E-mail: %s', 'dbem'), $user_email) . "\r\n"; + @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration', 'dbem'), $blogname), $message); + + if ( empty($plaintext_pass) ) + return; + + // + ob_start(); + em_locate_template('emails/new-user.php', true); + $message = ob_get_clean(); + $message = str_replace(array('%password%','%username%'), array($plaintext_pass, $user_login), $message); + + global $EM_Mailer; + return $EM_Mailer->send(sprintf(__('[%s] Your username and password', 'dbem'), $blogname), $message, $user_email); +} + +/* + * UI Helpers + * previously dbem_UI_helpers.php functions + */ + +function em_option_items($array, $saved_value) { + $output = ""; + foreach($array as $key => $item) { + $selected =''; + if ($key == $saved_value) + $selected = "selected='selected'"; + $output .= "<option value='".esc_attr($key)."' $selected >".esc_html($item)."</option>\n"; + + } + echo $output; +} + +function em_checkbox_items($name, $array, $saved_values, $horizontal = true) { + $output = ""; + foreach($array as $key => $item) { + $checked = ""; + if (in_array($key, $saved_values)) + $checked = "checked='checked'"; + $output .= "<input type='checkbox' name='".esc_attr($name)."' value='".esc_attr($key)."' $checked /> ".esc_html($item)."  "; + if(!$horizontal) + $output .= "<br/>\n"; + } + echo $output; + +} + +function em_options_input_text($title, $name, $description, $default='') { + ?> + <tr valign="top" id='<?php echo esc_attr($name);?>_row'> + <th scope="row"><?php echo esc_html($title); ?></th> + <td> + <input name="<?php echo esc_attr($name) ?>" type="text" id="<?php echo esc_attr($title) ?>" style="width: 95%" value="<?php echo esc_attr(get_option($name, $default), ENT_QUOTES); ?>" size="45" /><br /> + <em><?php echo $description; ?></em> + </td> + </tr> + <?php +} +function em_options_input_password($title, $name, $description) { + ?> + <tr valign="top" id='<?php echo esc_attr($name);?>_row'> + <th scope="row"><?php echo esc_html($title); ?></th> + <td> + <input name="<?php echo esc_attr($name) ?>" type="password" id="<?php echo esc_attr($title) ?>" style="width: 95%" value="<?php echo esc_attr(get_option($name)); ?>" size="45" /><br /> + <em><?php echo $description; ?></em> + </td> + </tr> + <?php +} + +function em_options_textarea($title, $name, $description) { + ?> + <tr valign="top" id='<?php echo esc_attr($name);?>_row'> + <th scope="row"><?php echo esc_html($title); ?></th> + <td> + <textarea name="<?php echo esc_attr($name) ?>" id="<?php echo esc_attr($name) ?>" rows="6" cols="60"><?php echo esc_attr(get_option($name), ENT_QUOTES);?></textarea><br/> + <em><?php echo $description; ?></em> + </td> + </tr> + <?php +} + +function em_options_radio($name, $options, $title='') { + $option = get_option($name); + ?> + <tr valign="top" id='<?php echo esc_attr($name);?>_row'> + <?php if( !empty($title) ): ?> + <th scope="row"><?php echo esc_html($title); ?></th> + <td> + <?php else: ?> + <td colspan="2"> + <?php endif; ?> + <table> + <?php foreach($options as $value => $text): ?> + <tr> + <td><input id="<?php echo esc_attr($name) ?>_<?php echo esc_attr($value); ?>" name="<?php echo esc_attr($name) ?>" type="radio" value="<?php echo esc_attr($value); ?>" <?php if($option == $value) echo "checked='checked'"; ?> /></td> + <td><?php echo $text ?></td> + </tr> + <?php endforeach; ?> + </table> + </td> + </tr> +<?php +} + +function em_options_radio_binary($title, $name, $description, $option_names = '') { + if( empty($option_names) ) $option_names = array(0 => __('No','dbem'), 1 => __('Yes','dbem')); + if( substr($name, 0, 7) == 'dbem_ms' ){ + $list_events_page = get_site_option($name); + }else{ + $list_events_page = get_option($name); + } + ?> + <tr valign="top" id='<?php echo $name;?>_row'> + <th scope="row"><?php echo esc_html($title); ?></th> + <td> + <?php echo $option_names[1]; ?> <input id="<?php echo esc_attr($name) ?>_yes" name="<?php echo esc_attr($name) ?>" type="radio" value="1" <?php if($list_events_page) echo "checked='checked'"; ?> />    + <?php echo $option_names[0]; ?> <input id="<?php echo esc_attr($name) ?>_no" name="<?php echo esc_attr($name) ?>" type="radio" value="0" <?php if(!$list_events_page) echo "checked='checked'"; ?> /> + <br/><em><?php echo $description; ?></em> + </td> + </tr> + <?php +} + +function em_options_select($title, $name, $list, $description, $default='') { + $option_value = get_option($name, $default); + if( $name == 'dbem_events_page' && !is_object(get_page($option_value)) ){ + $option_value = 0; //Special value + } + ?> + <tr valign="top" id='<?php echo esc_attr($name);?>_row'> + <th scope="row"><?php echo esc_html($title); ?></th> + <td> + <select name="<?php echo esc_attr($name); ?>" > + <?php foreach($list as $key => $value) : ?> + <option value='<?php echo esc_attr($key) ?>' <?php echo ("$key" == $option_value) ? "selected='selected' " : ''; ?>> + <?php echo esc_html($value); ?> + </option> + <?php endforeach; ?> + </select> <br/> + <em><?php echo $description; ?></em> + </td> + </tr> + <?php +} +// got from http://davidwalsh.name/php-email-encode-prevent-spam +function em_ascii_encode($e){ + $output = ''; + for ($i = 0; $i < strlen($e); $i++) { $output .= '&#'.ord($e[$i]).';'; } + return $output; +} + + +if( !function_exists('get_current_blog_id') ){ + /** + * Substitutes the original function in 3.1 onwards, for backwards compatability (only created if not previously defined) + * @return int + */ + function get_current_blog_id(){ return 1; } //for < 3.1 +} + +if( !function_exists( 'is_main_query' ) ){ + /** + * Substitutes the original function in 3.3 onwards, for backwards compatability (only created if not previously defined) + * @return bool + */ + function is_main_query(){ global $wp_query; return $wp_query->in_the_loop == true; } +} + +function em_get_thumbnail_url($image_url, $width, $height){ + return plugins_url('includes/thumbnails/timthumb.php', __FILE__).'?src='.$image_url.'&h='. $height .'&w='. $width; +} + +/** + * Depreciated + * @return unknown + */ +function em_get_date_format(){ + return get_option('dbem_date_format'); +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-ical.php b/wp-content/plugins/events-manager/em-ical.php new file mode 100644 index 0000000..29a95ee --- /dev/null +++ b/wp-content/plugins/events-manager/em-ical.php @@ -0,0 +1,56 @@ +<?php + /** + * generates an ical feed on init if url is correct + */ + function em_ical( $regenerate = false ){ + //check if this is a calendar request for all events + $cal_file_request = preg_match('/events.ics$/', $_SERVER['REQUEST_URI']); //are we askig for the ics file directly but doesn't exist? + if ( $cal_file_request || $_SERVER['REQUEST_URI'] == '/?ical=1' || $regenerate ) { + $calendar = em_ical_events(); + //let's create a cache file + /* + if( get_option('dbem_regenerate_ical') || !file_exists(ABSPATH . "/events.ics") ){ + $file = fopen( ABSPATH . "/events.ics", 'w'); + if($file){ + fwrite($file, $calendar, strlen($calendar)); + fclose($file); + update_option('dbem_regenerate_ical',false); + } + } + */ + echo $calendar; + die (); + } + } + add_action ( 'init', 'em_ical' ); + + function em_ical_event(){ + global $wpdb; + //add endpoints to events + if( get_query_var(EM_POST_TYPE_EVENT) && get_query_var('ical') ){ + $event_id = $wpdb->get_var('SELECT event_id FROM '.EM_EVENTS_TABLE." WHERE event_slug='".get_query_var(EM_POST_TYPE_EVENT)."' AND event_status=1 LIMIT 1"); + if( !empty($event_id) ){ + global $EM_Event; + $EM_Event = em_get_event($event_id); + ob_start(); + em_locate_template('templates/ical-event.php', true); + echo preg_replace("/([^\r])\n/", "$1\r\n", ob_get_clean()); + exit(); + } + } + } + add_action ( 'parse_query', 'em_ical_event' ); + + + function em_ical_events(){ + ob_start(); + em_locate_template('templates/ical.php', true); + return preg_replace("/([^\r])\n/", "$1\r\n", ob_get_clean());//get the contents to output and clean crlf issues + } + + function em_update_ical($result){ + update_option('dbem_regenerate_ical',true); + return $result; + } + add_filter('em_event_save','em_update_ical', 1, 1); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-install.php b/wp-content/plugins/events-manager/em-install.php new file mode 100644 index 0000000..f50656a --- /dev/null +++ b/wp-content/plugins/events-manager/em-install.php @@ -0,0 +1,1050 @@ +<?php + +function em_install() { + global $wp_rewrite; + $wp_rewrite->flush_rules(); + $old_version = get_option('dbem_version'); + //Won't upgrade <4.300 anymore + if( $old_version != '' && $old_version < 4.1 ){ + function em_update_required_notification(){ + global $EM_Booking; + ?><div class="error"><p><strong>Events Manager upgrade not complete, please upgrade to the version 4.300 or higher first from <a href="http://wordpress.org/extend/plugins/events-manager/download/">here</a> before upgrading to this version.</strong></p></div><?php + } + add_action ( 'admin_notices', 'em_update_required_notification' ); + return; + } + if( EM_VERSION > $old_version || $old_version == '' ){ + if( get_option('dbem_upgrade_throttle') <= time() || !get_option('dbem_upgrade_throttle') ){ + // Creates the events table if necessary + em_create_events_table(); + em_create_events_meta_table(); + em_create_locations_table(); + em_create_bookings_table(); + em_create_tickets_table(); + em_create_tickets_bookings_table(); + em_set_capabilities(); + em_add_options(); + + //New install, or Migrate? + if( $old_version < 5 && !empty($old_version) ){ + update_option('dbem_upgrade_throttle', time()+300); + set_time_limit(300); + em_migrate_v4(); + update_site_option('dbem_ms_update_nag',1); + }elseif( empty($old_version) ){ + em_create_events_page(); + update_option('dbem_hello_to_user',1); + } + //Upate Version + update_option('dbem_version', EM_VERSION); + delete_option('dbem_upgrade_throttle'); + delete_option('dbem_upgrade_throttle_time'); + //last but not least, flush the toilet + global $wp_rewrite; + $wp_rewrite->flush_rules(); + update_option('dbem_flush_needed',1); + }else{ + function em_upgrading_in_progress_notification(){ + global $EM_Booking; + ?><div class="error"><p>Events Manager upgrade still in progress. Please be patient, this message should disappear once the upgrade is complete.</p></div><?php + } + add_action ( 'admin_notices', 'em_upgrading_in_progress_notification' ); + add_action ( 'network_admin_notices', 'em_upgrading_in_progress_notification' ); + return; + } + } +} + +/** + * Magic function that takes a table name and cleans all non-unique keys not present in the $clean_keys array. if no array is supplied, all but the primary key is removed. + * @param string $table_name + * @param array $clean_keys + */ +function em_sort_out_table_nu_keys($table_name, $clean_keys = array()){ + global $wpdb; + //sort out the keys + $new_keys = $clean_keys; + $table_key_changes = array(); + $table_keys = $wpdb->get_results("SHOW KEYS FROM $table_name WHERE Key_name != 'PRIMARY'", ARRAY_A); + foreach($table_keys as $table_key_row){ + if( !in_array($table_key_row['Key_name'], $clean_keys) ){ + $table_key_changes[] = "ALTER TABLE $table_name DROP INDEX ".$table_key_row['Key_name']; + }elseif( in_array($table_key_row['Key_name'], $clean_keys) ){ + foreach($clean_keys as $key => $clean_key){ + if($table_key_row['Key_name'] == $clean_key){ + unset($new_keys[$key]); + } + } + } + } + //delete duplicates + foreach($table_key_changes as $sql){ + $wpdb->query($sql); + } + //add new keys + foreach($new_keys as $key){ + $wpdb->query("ALTER TABLE $table_name ADD INDEX ($key)"); + } +} + +function em_create_events_table() { + global $wpdb, $user_level, $user_ID; + get_currentuserinfo(); + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + $table_name = $wpdb->prefix.'em_events'; + $sql = "CREATE TABLE ".$table_name." ( + event_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + post_id bigint(20) unsigned NOT NULL, + event_slug VARCHAR( 200 ) NULL DEFAULT NULL, + event_owner bigint(20) unsigned DEFAULT NULL, + event_status int(1) NULL DEFAULT NULL, + event_name text NULL DEFAULT NULL, + event_start_time time NULL DEFAULT NULL, + event_end_time time NULL DEFAULT NULL, + event_all_day int(1) NULL DEFAULT NULL, + event_start_date date NULL DEFAULT NULL, + event_end_date date NULL DEFAULT NULL, + post_content longtext NULL DEFAULT NULL, + event_rsvp bool NOT NULL DEFAULT 0, + event_rsvp_date date NULL DEFAULT NULL, + event_rsvp_time time NULL DEFAULT NULL, + event_spaces int(5) NULL DEFAULT 0, + event_private bool NOT NULL DEFAULT 0, + location_id bigint(20) unsigned NULL DEFAULT NULL, + recurrence_id bigint(20) unsigned NULL DEFAULT NULL, + event_category_id bigint(20) unsigned NULL DEFAULT NULL, + event_attributes text NULL DEFAULT NULL, + event_date_created datetime NULL DEFAULT NULL, + event_date_modified datetime NULL DEFAULT NULL, + recurrence bool NOT NULL DEFAULT 0, + recurrence_interval int(4) NULL DEFAULT NULL, + recurrence_freq tinytext NULL DEFAULT NULL, + recurrence_byday tinytext NULL DEFAULT NULL, + recurrence_byweekno int(4) NULL DEFAULT NULL, + recurrence_days int(4) NULL DEFAULT NULL, + blog_id bigint(20) unsigned NULL DEFAULT NULL, + group_id bigint(20) unsigned NULL DEFAULT NULL, + PRIMARY KEY (event_id) + ) DEFAULT CHARSET=utf8 ;"; + + if( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name ){ + dbDelta($sql); + //Add default events + $in_one_week = date('Y-m-d', time() + 60*60*24*7); + $in_four_weeks = date('Y-m-d', time() + 60*60*24*7*4); + $in_one_year = date('Y-m-d', time() + 60*60*24*365); + + $wpdb->query("INSERT INTO ".$table_name." (event_name, event_start_date, event_end_date, event_start_time, event_end_time, location_id, event_slug, event_owner, event_status, post_id) VALUES ('Orality in James Joyce Conference', '$in_one_week', '$in_one_week', '16:00:00', '18:00:00', 1, 'oralty-in-james-joyce-conference','".get_current_user_id()."',1,0)"); + $wpdb->query("INSERT INTO ".$table_name." (event_name, event_start_date, event_end_date, event_start_time, event_end_time, location_id, event_slug, event_owner, event_status, post_id) VALUES ('Traditional music session', '$in_four_weeks', '$in_four_weeks', '20:00:00', '22:00:00', 2, 'traditional-music-session','".get_current_user_id()."',1,0)"); + $wpdb->query("INSERT INTO ".$table_name." (event_name, event_start_date, event_end_date, event_start_time, event_end_time, location_id, event_slug, event_owner, event_status, post_id) VALUES ('6 Nations, Italy VS Ireland', '$in_one_year', '$in_one_year', '22:00:00', '23:00:00', 3, '6-nations-italy-vs-ireland','".get_current_user_id()."',1,0)"); + em_migrate_events($wpdb->get_results('SELECT * FROM '.$table_name, ARRAY_A)); + }else{ + if( get_option('dbem_version') < 4.939 ){ + //if updating from version 4 (4.934 is beta v5) then set all statuses to 1 since it's new + $wpdb->query("ALTER TABLE $table_name CHANGE event_notes post_content longtext NULL DEFAULT NULL"); + $wpdb->query("ALTER TABLE $table_name CHANGE event_name event_name text NULL DEFAULT NULL"); + $wpdb->query("ALTER TABLE $table_name CHANGE location_id location_id bigint(20) unsigned NULL DEFAULT NULL"); + $wpdb->query("ALTER TABLE $table_name CHANGE recurrence_id recurrence_id bigint(20) unsigned NULL DEFAULT NULL"); + $wpdb->query("ALTER TABLE $table_name CHANGE event_start_time event_start_time time NULL DEFAULT NULL"); + $wpdb->query("ALTER TABLE $table_name CHANGE event_end_time event_end_time time NULL DEFAULT NULL"); + $wpdb->query("ALTER TABLE $table_name CHANGE event_start_date event_start_date date NULL DEFAULT NULL"); + } + dbDelta($sql); + } + em_sort_out_table_nu_keys($table_name, array('event_status','post_id','blog_id','group_id')); +} + +function em_create_events_meta_table(){ + global $wpdb, $user_level; + $table_name = $wpdb->prefix.'em_meta'; + + // Creating the events table + $sql = "CREATE TABLE ".$table_name." ( + meta_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + object_id bigint(20) unsigned NOT NULL, + meta_key varchar(255) DEFAULT NULL, + meta_value longtext, + meta_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (meta_id) + ) DEFAULT CHARSET=utf8 "; + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + $old_table_name = EM_OLD_LOCATIONS_TABLE; + dbDelta($sql); + em_sort_out_table_nu_keys($table_name, array('object_id','meta_key')); +} + +function em_create_locations_table() { + + global $wpdb, $user_level; + $table_name = $wpdb->prefix.'em_locations'; + + // Creating the events table + $sql = "CREATE TABLE ".$table_name." ( + location_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + post_id bigint(20) unsigned NOT NULL, + blog_id bigint(20) unsigned NULL DEFAULT NULL, + location_slug VARCHAR( 200 ) NULL DEFAULT NULL, + location_name text NULL DEFAULT NULL, + location_owner bigint(20) unsigned NOT NULL DEFAULT 0, + location_address VARCHAR( 200 ) NULL DEFAULT NULL, + location_town VARCHAR( 200 ) NULL DEFAULT NULL, + location_state VARCHAR( 200 ) NULL DEFAULT NULL, + location_postcode VARCHAR( 10 ) NULL DEFAULT NULL, + location_region VARCHAR( 200 ) NULL DEFAULT NULL, + location_country CHAR( 2 ) NULL DEFAULT NULL, + location_latitude float NULL DEFAULT NULL, + location_longitude float NULL DEFAULT NULL, + post_content longtext NULL DEFAULT NULL, + location_status int(1) NULL DEFAULT NULL, + location_private bool NOT NULL DEFAULT 0, + PRIMARY KEY (location_id) + ) DEFAULT CHARSET=utf8 ;"; + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + $old_table_name = EM_OLD_LOCATIONS_TABLE; //for 3.0 + if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name && $wpdb->get_var("SHOW TABLES LIKE '$old_table_name'") != $old_table_name) { + dbDelta($sql); + //Add default values + $wpdb->query("INSERT INTO ".$table_name." (location_name, location_address, location_town, location_state, location_country, location_latitude, location_longitude, location_slug, location_owner, location_status, post_id) VALUES ('Arts Millenium Building', 'Newcastle Road','Galway','Galway','IE', 53.275, -9.06532, 'arts-millenium-building','".get_current_user_id()."', 1,0)"); + $wpdb->query("INSERT INTO ".$table_name." (location_name, location_address, location_town, location_state, location_country, location_latitude, location_longitude, location_slug, location_owner, location_status, post_id) VALUES ('The Crane Bar', '2, Sea Road','Galway','Galway','IE', 53.2692, -9.06151, 'the-crane-bar','".get_current_user_id()."', 1, 0)"); + $wpdb->query("INSERT INTO ".$table_name." (location_name, location_address, location_town, location_state, location_country, location_latitude, location_longitude, location_slug, location_owner, location_status, post_id) VALUES ('Taaffes Bar', '19 Shop Street','Galway','Galway','IE', 53.2725, -9.05321, 'taffes-bar','".get_current_user_id()."', 1, 0)"); + em_migrate_locations($wpdb->get_results('SELECT * FROM '.$table_name, ARRAY_A)); + }else{ + if( get_option('dbem_version') < 4.938 ){ + $wpdb->query("ALTER TABLE $table_name CHANGE location_description post_content longtext NULL DEFAULT NULL"); + } + dbDelta($sql); + if( get_option('dbem_version') < 4.93 ){ + //if updating from version 4 (4.93 is beta v5) then set all statuses to 1 since it's new + $wpdb->query("UPDATE ".$table_name." SET location_status=1"); + } + } + em_sort_out_table_nu_keys($table_name, array('location_state','location_region','location_country','post_id','blog_id')); +} + +function em_create_bookings_table() { + + global $wpdb, $user_level; + $table_name = $wpdb->prefix.'em_bookings'; + + $sql = "CREATE TABLE ".$table_name." ( + booking_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + event_id bigint(20) unsigned NOT NULL, + person_id bigint(20) unsigned NOT NULL, + booking_spaces int(5) NOT NULL, + booking_comment text DEFAULT NULL, + booking_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + booking_status bool NOT NULL DEFAULT 1, + booking_price decimal(10,2) unsigned NOT NULL DEFAULT 0, + booking_meta LONGTEXT NULL, + PRIMARY KEY (booking_id) + ) DEFAULT CHARSET=utf8 ;"; + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + dbDelta($sql); + em_sort_out_table_nu_keys($table_name, array('event_id')); +} + + +//Add the categories table +function em_create_tickets_table() { + + global $wpdb, $user_level; + $table_name = $wpdb->prefix.'em_tickets'; + + // Creating the events table + $sql = "CREATE TABLE {$table_name} ( + ticket_id BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT, + event_id BIGINT( 20 ) UNSIGNED NOT NULL , + ticket_name TINYTEXT NOT NULL , + ticket_description TEXT NULL , + ticket_price DECIMAL( 10 , 2 ) NULL , + ticket_start DATETIME NULL , + ticket_end DATETIME NULL , + ticket_min INT( 10 ) NULL , + ticket_max INT( 10 ) NULL , + ticket_spaces INT NULL , + PRIMARY KEY (ticket_id) + ) DEFAULT CHARSET=utf8 ;"; + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + dbDelta($sql); + em_sort_out_table_nu_keys($table_name, array('event_id')); +} + +//Add the categories table +function em_create_tickets_bookings_table() { + global $wpdb, $user_level; + $table_name = $wpdb->prefix.'em_tickets_bookings'; + + // Creating the events table + $sql = "CREATE TABLE {$table_name} ( + ticket_booking_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + booking_id bigint(20) unsigned NOT NULL, + ticket_id bigint(20) unsigned NOT NULL, + ticket_booking_spaces int(6) NOT NULL, + ticket_booking_price decimal(10,2) NOT NULL, + PRIMARY KEY (ticket_booking_id) + ) DEFAULT CHARSET=utf8 ;"; + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + dbDelta($sql); + em_sort_out_table_nu_keys($table_name, array('booking_id','ticket_id')); +} + +function em_add_options() { + global $wp_locale; + $decimal_point = !empty($wp_locale->number_format['decimal_point']) ? $wp_locale->number_format['decimal_point']:'.'; + $thousands_sep = !empty($wp_locale->number_format['thousands_sep']) ? $wp_locale->number_format['thousands_sep']:','; + $email_footer = __('<br/><br/>-------------------------------<br/>Powered by Events Manager - http://wp-events-plugin.com','dbem'); + $contact_person_email_body_localizable = __("#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_EVENTNAME on #_EVENTDATES. He wants to reserve #_BOOKINGSPACES spaces.<br/> Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.<br/>Yours faithfully,<br/>Events Manager - http://wp-events-plugin.com",'dbem').$email_footer; + $contact_person_email_cancelled_body_localizable = __("#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_EVENTNAME on #_EVENTDATES. He wanted to reserve #_BOOKINGSPACES spaces.<br/> Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.<br/>Yours faithfully,<br/>Events Manager - http://wp-events-plugin.com",'dbem').$email_footer; + $respondent_email_body_localizable = __("Dear #_BOOKINGNAME, <br/>you have successfully reserved #_BOOKINGSPACES space/spaces for #_EVENTNAME.<br/>When : #_EVENTDATES @ #_EVENTTIMES<br/>Where : #_LOCATIONNAME - #_LOCATIONFULLLINE<br/>Yours faithfully,<br/>#_CONTACTNAME",'dbem').$email_footer; + $respondent_email_pending_body_localizable = __("Dear #_BOOKINGNAME, <br/>You have requested #_BOOKINGSPACES space/spaces for #_EVENTNAME.<br/>When : #_EVENTDATES @ #_EVENTTIMES<br/>Where : #_LOCATIONNAME - #_LOCATIONFULLLINE<br/>Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.<br/>Yours faithfully,<br/>#_CONTACTNAME",'dbem').$email_footer; + $respondent_email_rejected_body_localizable = __("Dear #_BOOKINGNAME, <br/>Your requested booking for #_BOOKINGSPACES spaces at #_EVENTNAME on #_EVENTDATES has been rejected.<br/>Yours faithfully,<br/>#_CONTACTNAME",'dbem').$email_footer; + $respondent_email_cancelled_body_localizable = __("Dear #_BOOKINGNAME, <br/>Your requested booking for #_BOOKINGSPACES spaces at #_EVENTNAME on #_EVENTDATES has been cancelled.<br/>Yours faithfully,<br/>#_CONTACTNAME",'dbem').$email_footer; + $event_approved_email_body = __("Dear #_CONTACTNAME, <br/>Your event #_EVENTNAME on #_EVENTDATES has been approved.<br/>You can view your event here: #_EVENTURL",'dbem').$email_footer; + $event_submitted_email_body = __("A new event has been submitted by #_CONTACTNAME.<br/>Name : #_EVENTNAME <br/>Date : #_EVENTDATES <br/>Time : #_EVENTTIMES <br/>Please visit #_EDITEVENTURL to review this event for approval.",'dbem').$email_footer; + $event_submitted_email_body = str_replace('#_EDITEVENTURL', admin_url().'post.php?action=edit&post=#_EVENTPOSTID', $event_submitted_email_body); + + $dbem_options = array( + //time formats + 'dbem_time_format' => get_option('time_format'), + 'dbem_date_format' => 'd/m/Y', + 'dbem_date_format_js' => 'dd/mm/yy', + 'dbem_dates_seperator' => ' - ', + 'dbem_times_seperator' => ' - ', + //defaults + 'dbem_default_category'=>0, + 'dbem_default_location'=>0, + //Event List Options + 'dbem_events_default_orderby' => 'event_start_date,event_start_time,event_name', + 'dbem_events_default_order' => 'ASC', + 'dbem_events_default_limit' => 10, + 'dbem_list_events_page' => 1, + //Event Search Options + 'dbem_search_form_text' => 1, + 'dbem_search_form_text_label' => __('Search','dbem'), + 'dbem_search_form_dates' => 1, + 'dbem_search_form_categories' => 1, + 'dbem_search_form_categories_label' => __('All Categories','dbem'), + 'dbem_search_form_countries' => 1, + 'dbem_search_form_countries_label' => __('All Countries','dbem'), + 'dbem_search_form_regions' => 1, + 'dbem_search_form_regions_label' => __('All Regions','dbem'), + 'dbem_search_form_states' => 1, + 'dbem_search_form_states_label' => __('All States','dbem'), + 'dbem_search_form_towns' => 0, + 'dbem_search_form_towns_label' => __('All Cities/Towns','dbem'), + //Event Form and Anon Submissions + 'dbem_events_form_editor' => 1, + 'dbem_events_form_reshow' => 1, + 'dbem_events_form_result_success' => __('You have successfully submitted your event, which will be published pending approval.','dbem'), + 'dbem_events_anonymous_submissions' => 0, + 'dbem_events_anonymous_user' => 0, + 'dbem_events_anonymous_result_success' => __('You have successfully submitted your event, which will be published pending approval.','dbem'), + //Event Emails + 'dbem_event_submitted_email_admin' => '', + 'dbem_event_submitted_email_subject' => __('Submitted Event Awaiting Approval', 'dbem'), + 'dbem_event_submitted_email_body' => str_replace("<br/>", "\n\r", $event_submitted_email_body), + 'dbem_event_approved_email_subject' => __("Event Approved",'dbem'). " - #_EVENTNAME" , + 'dbem_event_approved_email_body' => str_replace("<br/>", "\n\r", $event_approved_email_body), + //Event Formatting + 'dbem_events_page_title' => __('Events','dbem'), + 'dbem_events_page_scope' => 'future', + 'dbem_events_page_search' => 1, + 'dbem_event_list_item_format_header' => '<table cellpadding="0" cellspacing="0" class="events-table" > + <thead> + <tr> + <th class="event-time" width="150">Date/Time</th> + <th class="event-description" width="*">Event</th> + </tr> + </thead> + <tbody>', + 'dbem_event_list_item_format' => '<tr> + <td> + #_EVENTDATES<br/> + #_EVENTTIMES + </td> + <td> + #_EVENTLINK + {has_location}<br/><i>#_LOCATIONNAME, #_LOCATIONTOWN #_LOCATIONSTATE</i>{/has_location} + </td> + </tr>', + 'dbem_event_list_item_format_footer' => '</tbody></table>', + 'dbem_display_calendar_in_events_page' => 0, + 'dbem_single_event_format' => '<div style="float:right; margin:0px 0px 15px 15px;">#_MAP</div> +<p> + <strong>Date/Time</strong><br/> + Date(s) - #_EVENTDATES<br /><i>#_EVENTTIMES</i> +</p> +{has_location} +<p> + <strong>Location</strong><br/> + #_LOCATIONLINK +</p> +{/has_location} +<p> + <strong>Category(ies)</strong> + #_CATEGORIES +</p> +<br style="clear:both" /> +#_EVENTNOTES +{has_bookings} +<h3>Bookings</h3> +#_BOOKINGFORM +{/has_bookings}', + 'dbem_event_page_title_format' => '#_EVENTNAME', + 'dbem_event_all_day_message' => __('All Day','dbem'), + 'dbem_no_events_message' => sprintf(__( 'No %s', 'dbem' ),__('Events','dbem')), + //Location page options + 'dbem_list_locations_page' => 1, + //Location Formatting + 'dbem_locations_default_orderby' => 'location_name', + 'dbem_locations_default_order' => 'ASC', + 'dbem_locations_default_limit' => 10, + 'dbem_locations_page_title' => __('Event','dbem')." ".__('Locations','dbem'), + 'dbem_no_locations_message' => sprintf(__( 'No %s', 'dbem' ),__('Locations','dbem')), + 'dbem_location_default_country' => 'US', + 'dbem_location_list_item_format' => '#_LOCATIONLINK<ul><li>#_LOCATIONFULLLINE</li></ul>', + 'dbem_location_page_title_format' => '#_LOCATIONNAME', + 'dbem_single_location_format' => '<div style="float:right; margin:0px 0px 15px 15px;">#_MAP</div> +<p> + <strong>Address</strong><br/> + #_LOCATIONADDRESS<br/> + #_LOCATIONTOWN<br/> + #_LOCATIONSTATE<br/> + #_LOCATIONREGION<br/> + #_LOCATIONPOSTCODE<br/> + #_LOCATIONCOUNTRY +</p> +<br style="clear:both" /> +#_LOCATIONNOTES + +<h3>Upcoming Events</h3> +<p>#_LOCATIONNEXTEVENTS</p>', + 'dbem_location_no_events_message' => __('<li>No events in this location</li>', 'dbem'), + 'dbem_location_event_list_item_header_format' => "<ul>", + 'dbem_location_event_list_item_format' => "<li>#_EVENTLINK - #j #M #Y - #H:#i</li>", + 'dbem_location_event_list_item_footer_format' => "</ul>", + //Category page options + 'dbem_list_categories_page' => 1, + 'dbem_categories_default_limit' => 10, + 'dbem_categories_default_orderby' => 'name', + 'dbem_categories_default_order' => 'ASC', + //Category Formatting + 'dbem_category_page_title_format' => '#_CATEGORYNAME', + 'dbem_category_page_format' => '#_CATEGORYNOTES<h3>Upcoming Events</h3>#_CATEGORYNEXTEVENTS', + 'dbem_categories_page_title' => __('Event','dbem')." ".__('Categories','dbem'), + 'dbem_categories_list_item_format' => '<li>#_CATEGORYLINK</li>', + 'dbem_no_categories_message' => sprintf(__( 'No %s', 'dbem' ),__('Categories','dbem')), + 'dbem_category_no_events_message' => __('<li>No events in this category</li>', 'dbem'), + 'dbem_category_event_list_item_header_format' => '<ul>', + 'dbem_category_event_list_item_format' => "<li>#_EVENTLINK - #_EVENTDATES - #_EVENTTIMES</li>", + 'dbem_category_event_list_item_footer_format' => '</ul>', + //Tag Formatting + 'dbem_tag_page_title_format' => '#_TAGNAME', + 'dbem_tag_page_format' => '<h3>Upcoming Events</h3>#_TAGNEXTEVENTS', + 'dbem_tag_no_events_message' => __('<li>No events in this tag</li>', 'dbem'), + 'dbem_tag_event_list_item_header_format' => '<ul>', + 'dbem_tag_event_list_item_format' => "<li>#_EVENTLINK - #_EVENTDATES - #_EVENTTIMES</li>", + 'dbem_tag_event_list_item_footer_format' => '</ul>', + //RSS Stuff + 'dbem_rss_limit' => 10, + 'dbem_rss_scope' => 'future', + 'dbem_rss_main_title' => get_bloginfo('title')." - ".__('Events', 'dbem'), + 'dbem_rss_main_description' => get_bloginfo('description')." - ".__('Events', 'dbem'), + 'dbem_rss_description_format' => "#_EVENTDATES - #_EVENTTIMES <br/>#_LOCATIONNAME <br/>#_LOCATIONADDRESS <br/>#_LOCATIONTOWN", + 'dbem_rss_title_format' => "#_EVENTNAME", + 'em_rss_pubdate' => date('D, d M Y H:i:s T'), + //iCal Stuff + 'dbem_ical_limit' => 0, + 'dbem_ical_scope' => "future", + 'dbem_ical_description_format' => "#_EVENTNAME - #_LOCATIONNAME - #_EVENTDATES - #_EVENTTIMES", + //Google Maps + 'dbem_gmap_is_active'=> 1, + 'dbem_location_baloon_format' => "<strong>#_LOCATIONNAME</strong><br/>#_LOCATIONADDRESS - #_LOCATIONTOWN<br/><a href='#_LOCATIONPAGEURL'>Details</a>", + 'dbem_map_text_format' => '<strong>#_LOCATIONNAME</strong><p>#_LOCATIONADDRESS</p><p>#_LOCATIONTOWN</p>', + //Email Config + 'dbem_email_disable_registration' => 0, + 'dbem_rsvp_mail_port' => 465, + 'dbem_smtp_host' => 'localhost', + 'dbem_mail_sender_name' => '', + 'dbem_rsvp_mail_send_method' => 'mail', + 'dbem_rsvp_mail_SMTPAuth' => 1, + //Image Manipulation + 'dbem_image_max_width' => 700, + 'dbem_image_max_height' => 700, + 'dbem_image_min_width' => 50, + 'dbem_image_min_height' => 50, + 'dbem_image_max_size' => 204800, + //Calendar Options + 'dbem_list_date_title' => __('Events', 'dbem').' - #j #M #y', + 'dbem_full_calendar_event_format' => '<li>#_EVENTLINK</li>', + 'dbem_full_calendar_long_events' => '0', + 'dbem_display_calendar_day_single_yes' => 1, + 'dbem_small_calendar_event_title_format' => "#_EVENTNAME", + 'dbem_small_calendar_event_title_separator' => ", ", + 'dbem_display_calendar_order' => 'ASC', + 'dbem_display_calendar_orderby' => 'event_name,event_start_time', + 'dbem_display_calendar_events_limit' => get_option('dbem_full_calendar_events_limit',3), + 'dbem_display_calendar_events_limit_msg' => __('more...','dbem'), + 'dbem_calendar_direct_links' => 1, + //General Settings + 'dbem_require_location' => 0, + 'dbem_locations_enabled' => 1, + 'dbem_use_select_for_locations' => 0, + 'dbem_attributes_enabled' => 1, + 'dbem_recurrence_enabled'=> 1, + 'dbem_rsvp_enabled'=> 1, + 'dbem_categories_enabled'=> 1, + 'dbem_tags_enabled' => 1, + 'dbem_placeholders_custom' => '', + 'dbem_location_attributes_enabled' => 1, + 'dbem_location_placeholders_custom' => '', + //Title rewriting compatability + 'dbem_disable_title_rewrites'=> false, + 'dbem_title_html' => '<h2>#_PAGETITLE</h2>', + //Bookings + 'dbem_bookings_registration_disable' => 0, + 'dbem_bookings_registration_user' => '', + 'dbem_bookings_approval' => 1, //approval is on by default + 'dbem_bookings_approval_reserved' => 0, //overbooking before approval? + 'dbem_bookings_approval_overbooking' => 0, //overbooking possible when approving? + 'dbem_bookings_double'=>0,//double bookings or more, users can't double book by default + 'dbem_bookings_user_cancellation' => 1, //can users cancel their booking? + 'dbem_bookings_currency' => 'USD', + 'dbem_bookings_currency_decimal_point' => $decimal_point, + 'dbem_bookings_currency_thousands_sep' => $thousands_sep, + 'dbem_bookings_currency_format' => '@#', + 'dbem_bookings_tax' => 0, //extra tax + 'dbem_bookings_tax_auto_add' => 0, //adjust prices to show tax? + //Form Options + 'dbem_bookings_submit_button' => __('Send your booking', 'dbem'), + 'dbem_bookings_login_form' => 1, //show login form on booking area + 'dbem_bookings_anonymous' => 1, + 'dbem_bookings_form_max' => 20, + //Messages + 'dbem_bookings_form_msg_disabled' => __('Online bookings are not available for this event.','dbem'), + 'dbem_bookings_form_msg_closed' => __('Bookings are closed for this event.','dbem'), + 'dbem_bookings_form_msg_full' => __('This event is fully booked.','dbem'), + 'dbem_bookings_form_msg_attending'=>__('You are currently attending this event.','dbem'), + 'dbem_bookings_form_msg_bookings_link'=>__('Manage my bookings','dbem'), + //messages + 'dbem_booking_warning_cancel' => __('Are you sure you want to cancel your booking?','dbem'), + 'dbem_booking_feedback_cancelled' =>sprintf(__('Booking %s','dbem'), __('Cancelled','dbem')), + 'dbem_booking_feedback_pending' =>__('Booking successful, pending confirmation (you will also receive an email once confirmed).', 'dbem'), + 'dbem_booking_feedback' => __('Booking successful.', 'dbem'), + 'dbem_booking_feedback_full' => __('Booking cannot be made, not enough spaces available!', 'dbem'), + 'dbem_booking_feedback_log_in' => __('You must log in or register to make a booking.','dbem'), + 'dbem_booking_feedback_nomail' => __('However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error.', 'dbem'), + 'dbem_booking_feedback_error' => __('Booking could not be created','dbem').':', + 'dbem_booking_feedback_email_exists' => __('This email already exists in our system, please log in to register to proceed with your booking.','dbem'), + 'dbem_booking_feedback_new_user' => __('A new user account has been created for you. Please check your email for access details.','dbem'), + 'dbem_booking_feedback_reg_error' => __('There was a problem creating a user account, please contact a website administrator.','dbem'), + 'dbem_booking_feedback_already_booked' => __('You already have booked a seat at this event.','dbem'), + 'dbem_booking_feedback_min_space' => __('You must request at least one space to book an event.','dbem'), + //Emails + 'dbem_default_contact_person' => 1, //admin + 'dbem_bookings_notify_admin' => 0, + 'dbem_bookings_contact_email' => 1, + 'dbem_bookings_contact_email_subject' => __("New Booking",'dbem'), + 'dbem_bookings_contact_email_body' => str_replace("<br/>", "\n\r", $contact_person_email_body_localizable), + 'dbem_contactperson_email_cancelled_subject' => __("Booking Cancelled",'dbem'), + 'dbem_contactperson_email_cancelled_body' => str_replace("<br/>", "\n\r", $contact_person_email_cancelled_body_localizable), + 'dbem_bookings_email_pending_subject' => __("Booking Pending",'dbem'), + 'dbem_bookings_email_pending_body' => str_replace("<br/>", "\n\r", $respondent_email_pending_body_localizable), + 'dbem_bookings_email_rejected_subject' => __("Booking Rejected",'dbem'), + 'dbem_bookings_email_rejected_body' => str_replace("<br/>", "\n\r", $respondent_email_rejected_body_localizable), + 'dbem_bookings_email_confirmed_subject' => __('Booking Confirmed','dbem'), + 'dbem_bookings_email_confirmed_body' => str_replace("<br/>", "\n\r", $respondent_email_body_localizable), + 'dbem_bookings_email_cancelled_subject' => __('Booking Cancelled','dbem'), + 'dbem_bookings_email_cancelled_body' => str_replace("<br/>", "\n\r", $respondent_email_cancelled_body_localizable), + //Ticket Specific Options + 'dbem_bookings_tickets_orderby' => 'ticket_price DESC, ticket_name ASC', + 'dbem_bookings_tickets_priority' => 0, + 'dbem_bookings_tickets_show_unavailable' => 0, + 'dbem_bookings_tickets_show_loggedout' => 1, + 'dbem_bookings_tickets_single' => 0, + 'dbem_bookings_tickets_single_form' => 0, + //My Bookings Page + 'dbem_bookings_my_title_format' => __('My Bookings','dbem'), + //Flags + 'dbem_hello_to_user' => 1, + //BP Settings + 'dbem_bp_events_list_format_header' => '<ul class="em-events-list">', + 'dbem_bp_events_list_format' => '<li>#_EVENTLINK - #j #M #Y #_12HSTARTTIME #@_{ \u\n\t\i\l j M Y}<ul><li>#_LOCATIONLINK - #_LOCATIONADDRESS, #_LOCATIONTOWN</li></ul></li>', + 'dbem_bp_events_list_format_footer' => '</ul>', + 'dbem_bp_events_list_none_format' => '<p class="em-events-list">'.__('No Events','dbem').'</p>', + /* + * Custom Post Options - set up to mimick old EM settings and install with minimal setup for most users + */ + //slugs + 'dbem_cp_events_slug' => 'events', + 'dbem_cp_locations_slug' => 'locations', + 'dbem_taxonomy_category_slug' => 'events/categories', + 'dbem_taxonomy_tag_slug' => 'events/tags', + //event cp options + 'dbem_cp_events_template_page' => 0, + 'dbem_cp_events_formats' => 1, + 'dbem_cp_events_has_archive' => 1, + 'dbem_events_default_archive_orderby' => '_start_ts', + 'dbem_events_default_archive_order' => 'ASC', + 'dbem_cp_events_archive_formats' => 1, + 'dbem_cp_events_search_results' => 0, + 'dbem_cp_events_custom_fields' => 0, + 'dbem_cp_events_comments' => 1, + //location cp options + 'dbem_cp_locations_template_page' => 0, + 'dbem_cp_locations_formats' => 1, + 'dbem_cp_locations_has_archive' => 1, + 'dbem_locations_default_archive_orderby' => 'title', + 'dbem_locations_default_archive_order' => 'ASC', + 'dbem_cp_locations_archive_formats' => 1, + 'dbem_cp_locations_search_results' => 0, + 'dbem_cp_locations_custom_fields' => 0, + 'dbem_cp_locations_comments' => 1, + //category cp options + 'dbem_cp_categories_formats' => 1, + 'dbem_categories_default_archive_orderby' => 'event_start_date,event_start_time,event_name', + 'dbem_categories_default_archive_order' => 'ASC', + //category cp options + 'dbem_cp_tags_formats' => 1, + 'dbem_tags_default_archive_orderby' => 'event_start_date,event_start_time,event_name', + 'dbem_tags_default_archive_order' => 'ASC', + ); + + //do date js according to locale: + $locale_code = substr ( get_locale (), 0, 2 ); + $locale_dates = array('nl' => 'dd/mm/yy', 'af' => 'dd/mm/yy', 'ar' => 'dd/mm/yy', 'az' => 'dd.mm.yy', 'bg' => 'dd.mm.yy', 'bs' => 'dd.mm.yy', 'cs' => 'dd.mm.yy', 'da' => 'dd-mm-yy', 'de' => 'dd.mm.yy', 'el' => 'dd/mm/yy', 'en-GB' => 'dd/mm/yy', 'eo' => 'dd/mm/yy', 'et' => 'dd.mm.yy', 'eu' => 'yy/mm/dd', 'fa' => 'yy/mm/dd', 'fo' => 'dd-mm-yy', 'fr' => 'dd.mm.yy', 'fr' => 'dd/mm/yy', 'he' => 'dd/mm/yy', 'hu' => 'yy.mm.dd.', 'hr' => 'dd.mm.yy.', 'ja' => 'yy/mm/dd', 'ro' => 'dd.mm.yy', 'sk' => 'dd.mm.yy', 'sq' => 'dd.mm.yy', 'sr' => 'dd/mm/yy', 'sr' => 'dd/mm/yy', 'sv' => 'yy-mm-dd', 'ta' => 'dd/mm/yy', 'th' => 'dd/mm/yy', 'vi' => 'dd/mm/yy', 'zh' => 'yy/mm/dd', 'es' => 'dd/mm/yy', 'it' => 'dd/mm/yy'); + if( array_key_exists($locale_code, $locale_dates) ){ + $dbem_options['dbem_date_format_js'] = $locale_dates[$locale_code]; + } + + //add new options + foreach($dbem_options as $key => $value){ + add_option($key, $value); + } + + if( !get_option('dbem_version') ){ add_option('dbem_credits',1); } + if( get_option('dbem_version') != '' && get_option('dbem_version') < 5 ){ + //make events, cats and locs pages + update_option('dbem_cp_events_template_page',1); + update_option('dbem_cp_locations_template_page',1); + //reset orderby, or convert fields to new fieldnames + $EM_Event = new EM_Event(); + $orderbyvals = explode(',', get_option('dbem_events_default_orderby')); + $orderby = array(); + foreach($orderbyvals as $val){ + if(array_key_exists('event_'.$val, $EM_Event->fields)){ + $orderby[] = 'event_'.$val; + } + } + $orderby = (count($orderby) > 0) ? implode(',',$orderby):$dbem_options['dbem_events_default_orderby']; + update_option('dbem_events_default_orderby',$orderby); + //Locations and categories weren't controlled in v4, so just reset them + update_option('dbem_locations_default_orderby','location_name'); + update_option('dbem_categories_default_orderby','name'); + //Update the slugs if necessary + $events_page_id = get_option ( 'dbem_events_page' ); + $events_page = get_post($events_page_id); + update_option('dbem_cp_events_slug', $events_page->post_name); + update_option('dbem_taxonomy_tag_slug', $events_page->post_name.'/tags'); + if( defined('EM_LOCATIONS_SLUG') && EM_LOCATIONS_SLUG != 'locations' ) update_option('dbem_cp_locations_slug', EM_LOCATIONS_SLUG); + if( defined('EM_CATEGORIES_SLUG') && EM_CATEGORIES_SLUG != 'categories' ) update_option('dbem_taxonomy_category_slug', $events_page->post_name.'/'.EM_CATEGORIES_SLUG); + } + if( get_option('dbem_time_24h','not set') == 'not set'){ + //Localise vars regardless + $locale_code = substr ( get_locale(), 0, 2 ); + if (preg_match('/^en_(?:GB|IE|AU|NZ|ZA|TT|JM)$/', WPLANG)) { + $locale_code = 'en-GB'; + } + //Set time + $show24Hours = ( !preg_match("/en|sk|zh|us|uk/", $locale_code ) ); // Setting 12 hours format for those countries using it + update_option('dbem_time_24h', $show24Hours); + } +} + +function em_set_mass_caps( $roles, $caps ){ + global $wp_roles; + foreach( $roles as $user_role ){ + foreach($caps as $cap){ + $wp_roles->add_cap($user_role, $cap); + } + } +} + +function em_set_capabilities(){ + //Get default roles + global $wp_roles; + if( get_option('dbem_version') == '' ){ + //Assign caps in groups, as we go down, permissions are "looser" + $caps = array( + /* Event Capabilities */ + 'publish_events', 'delete_others_events', 'edit_others_events', 'manage_others_bookings', + /* Recurring Event Capabilties */ + 'publish_recurring_events', 'delete_others_recurring_events', 'edit_others_recurring_events', + /* Location Capabilities */ + 'publish_locations', 'delete_others_locations', 'delete_locations', 'edit_others_locations', + /* Category Capabilities */ + 'delete_event_categories', 'edit_event_categories' + ); + em_set_mass_caps( array('administrator','editor'), $caps ); + + //Add all the open caps + $loose_caps = array( + 'manage_bookings', 'upload_event_images', + /* Event Capabilities */ + 'delete_events', 'edit_events', 'read_private_events', + /* Recurring Event Capabilties */ + 'delete_recurring_events', 'edit_recurring_events', + /* Location Capabilities */ + 'edit_locations', 'read_private_locations', 'read_others_locations', + ); + em_set_mass_caps( array('administrator','editor','contributor','author','subscriber'), $loose_caps); + } + if( get_option('dbem_version') && get_option('dbem_version') < 5 ){ + //Add new caps that are similar to old ones + $conditional_caps = array( + 'publish_events' => 'publish_locations,publish_recurring_events', + 'edit_others_events' => 'edit_others_recurring_events', + 'delete_others_events' => 'delete_others_recurring_events', + 'edit_categories' => 'edit_event_categories,delete_event_categories', + 'edit_recurrences' => 'edit_recurring_events,delete_recurring_events', + 'edit_events' => 'upload_event_images' + ); + $default_caps = array( 'read_private_events', 'read_private_locations' ); + foreach($conditional_caps as $cond_cap => $new_caps){ + foreach( $wp_roles->role_objects as $role_name => $role ){ + if($role->has_cap($cond_cap)){ + foreach(explode(',', $new_caps) as $new_cap){ + $role->add_cap($new_cap); + } + } + } + } + em_set_mass_caps( array('administrator','editor','contributor','author','subscriber'), $default_caps); + } +} + +function em_create_events_page(){ + global $wpdb,$current_user; + $event_page_id = get_option('dbem_events_page'); + if( empty($event_page_id) ){ + $post_data = array( + 'post_status' => 'publish', + 'post_type' => 'page', + 'ping_status' => get_option('default_ping_status'), + 'post_content' => 'CONTENTS', + 'post_excerpt' => 'CONTENTS', + 'post_title' => __('Events','dbem') + ); + $post_id = wp_insert_post($post_data, false); + if( $post_id > 0 ){ + update_option('dbem_events_page', $post_id); + //Now Locations Page + $post_data = array( + 'post_status' => 'publish', + 'post_parent' => $post_id, + 'post_type' => 'page', + 'ping_status' => get_option('default_ping_status'), + 'post_content' => 'CONTENTS', + 'post_excerpt' => '', + 'post_title' => __('Locations','dbem') + ); + $loc_id = wp_insert_post($post_data, false); + update_option('dbem_locations_page', $loc_id); + //Now Categories Page + $post_data = array( + 'post_status' => 'publish', + 'post_parent' => $post_id, + 'post_type' => 'page', + 'ping_status' => get_option('default_ping_status'), + 'post_content' => 'CONTENTS', + 'post_excerpt' => '', + 'post_title' => __('Categories','dbem') + ); + $cat_id = wp_insert_post($post_data, false); + update_option('dbem_categories_page', $cat_id); + //Now Bookings Page + $post_data = array( + 'post_status' => 'publish', + 'post_parent' => $post_id, + 'post_type' => 'page', + 'ping_status' => get_option('default_ping_status'), + 'post_content' => 'CONTENTS', + 'post_excerpt' => '', + 'post_title' => __('My Bookings','dbem'), + 'post_slug' => 'my-bookings' + ); + $bookings_post_id = wp_insert_post($post_data, false); + update_option('dbem_my_bookings_page', $bookings_post_id); + } + } +} + +// migrate old dbem tables to new em ones +function em_migrate_v4(){ + global $wpdb, $blog_id; + //before making any moves, let's create new pages for locations na dcats + $event_page_id = get_option('dbem_events_page'); + if( !empty($event_page_id) ){ + if( !get_option('dbem_locations_page') ){ + $post_data = array( + 'post_status' => 'publish', + 'post_parent' => $event_page_id, + 'post_type' => 'page', + 'ping_status' => get_option('default_ping_status'), + 'post_content' => 'CONTENTS', + 'post_excerpt' => '', + 'post_title' => get_option('dbem_locations_page_title', __('Locations','dbem')), + 'post_slug' => get_option('dbem_cp_locations_slug') + ); + $loc_post_id = wp_insert_post($post_data, false); + update_option('dbem_locations_page', $loc_post_id); + } + if( !get_option('dbem_categories_page') ){ + //Now Categories Page + $post_data = array( + 'post_status' => 'publish', + 'post_parent' => $event_page_id, + 'post_type' => 'page', + 'ping_status' => get_option('default_ping_status'), + 'post_content' => 'CONTENTS', + 'post_excerpt' => '', + 'post_title' => get_option('dbem_categories_page_title', __('Categories','dbem')), + 'post_slug' => get_option('dbem_cp_categories_slug') + ); + $cat_post_id = wp_insert_post($post_data, false); + update_option('dbem_categories_page', $cat_post_id); + } + if( !get_option('dbem_my_bookings_page') ){ + //Now Categories Page + $post_data = array( + 'post_status' => 'publish', + 'post_parent' => $event_page_id, + 'post_type' => 'page', + 'ping_status' => get_option('default_ping_status'), + 'post_content' => 'CONTENTS', + 'post_excerpt' => '', + 'post_title' => __('My Bookings','dbem'), + 'post_slug' => 'my-bookings' + ); + $bookings_post_id = wp_insert_post($post_data, false); + update_option('dbem_my_bookings_page', $bookings_post_id); + } + } + //set shared vars + $limit = 100; + //-- LOCATIONS -- + if( !is_multisite() || (EM_MS_GLOBAL && is_main_site($blog_id)) || (!EM_MS_GLOBAL && is_multisite()) ){ //old locations will always belong to the main blog when migrated, since we didn't have previous blog ids + if( is_multisite() ){ + $this_blog = $blog_id; + }else{ + $this_blog = 0; + } + //set location statuses and blog id for all locations + $wpdb->query('UPDATE '.EM_LOCATIONS_TABLE.' SET location_status=1, blog_id='.$this_blog.' WHERE blog_id IS NULL'); + //first create location posts + $sql = 'SELECT * FROM '.EM_LOCATIONS_TABLE.' WHERE post_id = 0 LIMIT '.$limit; + $locations = $wpdb->get_results($sql, ARRAY_A); + //get location image directory + $dir = (EM_IMAGE_DS == '/') ? 'locations/':''; + while( count($locations) > 0 ){ + em_migrate_locations($locations); + $locations = $wpdb->get_results($sql, ARRAY_A); //get more locations and continue looping + } + } + //-- EVENTS & Recurrences -- + if( is_multisite() ){ + if(EM_MS_GLOBAL && is_main_blog()){ + $sql = "SELECT * FROM ".EM_EVENTS_TABLE." WHERE post_id=0 AND (blog_id=$blog_id OR blog_id=0 OR blog_id IS NULL) LIMIT $limit"; + }elseif(EM_MS_GLOBAL){ + $sql = "SELECT * FROM ".EM_EVENTS_TABLE." WHERE post_id=0 AND blog_id=$blog_id LIMIT $limit"; + }else{ + $sql = "SELECT * FROM ".EM_EVENTS_TABLE." WHERE post_id=0 LIMIT $limit"; + } + }else{ + $sql = "SELECT * FROM ".EM_EVENTS_TABLE." WHERE post_id=0 LIMIT $limit"; + } + //create posts + $events = $wpdb->get_results($sql, ARRAY_A); + while( count($events) > 0 ){ + em_migrate_events($events); + $events = $wpdb->get_results($sql, ARRAY_A); //get more locations and continue looping + } + //-- CATEGORIES -- + //Create the terms according to category table, use the category owner for the term ids to store this + $categories = $wpdb->get_results("SELECT * FROM ".EM_CATEGORIES_TABLE, ARRAY_A); //taking a wild-hope guess that there aren't too many categories on one site/blog + foreach( $categories as $category ){ + //get all events with this category before resetting ids + $sql = "SELECT post_id FROM ".EM_EVENTS_TABLE.", ".EM_META_TABLE." WHERE event_id=object_id AND meta_key='event-category' AND meta_value='{$category['category_id']}'"; + $category_posts = $wpdb->get_col($sql); + //get or create new term + $term = get_term_by('slug', $category['category_slug'], EM_TAXONOMY_CATEGORY); + if( $term === false ){ + //term not created yet, let's create it + $term_array = wp_insert_term($category['category_name'], EM_TAXONOMY_CATEGORY, array( + 'description' => $category['category_description'], + 'slug' => $category['category_slug'] + )); + if( is_array($term_array) ){ + //update category bg-color if used before + $wpdb->query('UPDATE '.EM_META_TABLE." SET object_id='{$term_array['term_id']}' WHERE meta_key='category-bgcolor' AND object_id={$category['category_id']}"); + $wpdb->query('UPDATE '.EM_META_TABLE." SET meta_value='{$term_array['term_id']}' WHERE meta_key='event-category' AND meta_value={$category['category_id']}"); + // and assign category image url if file exists + $dir = (EM_IMAGE_DS == '/') ? 'categories/':''; + foreach(array(1 => 'gif', 2 => 'jpg', 3 => 'png') as $mime_type) { + $file_name = $dir."category-{$category['category_id']}.$mime_type"; + if( file_exists( EM_IMAGE_UPLOAD_DIR.$file_name) ) { + $wpdb->insert(EM_META_TABLE, array('object_id'=>$term_array['term_id'],'meta_key'=>'category-image','meta_value'=>EM_IMAGE_UPLOAD_URI.$file_name)); + break; + } + } + } + } + //set event terms in wp tables + foreach($category_posts as $post_id){ + wp_set_object_terms($post_id, $category['category_slug'], EM_TAXONOMY_CATEGORY, true); + } + } + update_option('dbem_migrate_images_nag', 1); + update_option('dbem_migrate_images', 1); +} + +function em_migrate_events($events){ + global $wpdb; + //disable actions + remove_action('save_post',array('EM_Event_Recurring_Post_Admin','save_post')); + remove_action('save_post',array('EM_Event_Post_Admin','save_post'),10,1); + $post_fields = array('event_slug','event_owner','event_name','event_attributes','post_id','post_content'); + $event_metas = array(); //restart metas + foreach($events as $event){ + //new post info + $post_array = array(); + $post_array['post_type'] = $event['recurrence'] == 1 ? 'event-recurring' : EM_POST_TYPE_EVENT; + $post_array['post_title'] = $event['event_name']; + $post_array['post_content'] = $event['post_content']; + $post_array['post_status'] = (!isset($event['event_status']) || $event['event_status']) ? 'publish':'pending'; + $post_array['post_author'] = $event['event_owner']; + $post_array['post_slug'] = $event['event_slug']; + $event['start_ts'] = strtotime($event['event_start_date']); + $event['end_ts'] = strtotime($event['event_end_date']); + //Save post, register post id in index + $post_id = wp_insert_post($post_array); + if( is_wp_error($post_id) || $post_id == 0 ){ $post_id = 999999999999999999; }//hopefully nobody blogs that much... if you do, and you're reading this, maybe you should be hiring me for the upgrade ;) } + if( $post_id != 999999999999999999 ){ + $wpdb->query('UPDATE '.EM_EVENTS_TABLE." SET post_id='$post_id' WHERE event_id='{$event['event_id']}'"); + //meta + foreach($event as $meta_key => $meta_val){ + if( !in_array($meta_key, $post_fields) && $meta_key != 'event_attributes' ){ + $event_metas[] = $wpdb->prepare("(%d, '%s', '%s')", array($post_id, '_'.$meta_key, $meta_val)); + }elseif($meta_key == 'event_attributes'){ + $event_attributes = unserialize($meta_val); //from em table it's serialized + if( is_array($event_attributes) ){ + foreach($event_attributes as $att_key => $att_val){ + $event_metas[] = $wpdb->prepare("(%d, '%s', '%s')", array($post_id, $att_key, $att_val)); + } + } + } + } + } + } + //insert the metas in one go, faster than one by one + if( count($event_metas) > 0 ){ + $result = $wpdb->query("INSERT INTO ".$wpdb->postmeta." (post_id,meta_key,meta_value) VALUES ".implode(',',$event_metas)); + } +} + +function em_migrate_locations($locations){ + global $wpdb; + //disable actions + remove_action('save_post',array('EM_Location_Post_Admin','save_post')); + $location_metas = array(); //restart metas + $post_fields = array('post_id','location_slug','location_name','post_content','location_owner'); + foreach($locations as $location){ + //new post info + $post_array = array(); + $post_array['post_type'] = EM_POST_TYPE_LOCATION; + $post_array['post_title'] = $location['location_name']; + $post_array['post_content'] = $location['post_content']; + $post_array['post_status'] = 'publish'; + $post_array['post_author'] = $location['location_owner']; + //Save post, register post id in index + $post_id = wp_insert_post($post_array); + if( is_wp_error($post_id) || $post_id == 0 ){ $post_id = 999999999999999999; }//hopefully nobody blogs that much... if you do, and you're reading this, maybe you should be hiring me for the upgrade ;) } + $wpdb->query('UPDATE '.EM_LOCATIONS_TABLE." SET post_id='$post_id' WHERE location_id='{$location['location_id']}'"); + //meta + foreach($location as $meta_key => $meta_val){ + if( !in_array($meta_key, $post_fields) ){ + $location_metas[] = $wpdb->prepare("(%d, '%s', '%s')", array($post_id, '_'.$meta_key, $meta_val)); + } + } + } + //insert the metas in one go, faster than one by one + if( count($location_metas) > 0 ){ + $result = $wpdb->query("INSERT INTO ".$wpdb->postmeta." (post_id,meta_key,meta_value) VALUES ".implode(',',$location_metas)); + } +} + +function em_migrate_uploads(){ + //build array of images + global $wpdb; + $mime_types = array(1 => 'gif', 2 => 'jpg', 3 => 'png'); + require_once(ABSPATH . "wp-admin" . '/includes/file.php'); + require_once(ABSPATH . "wp-admin" . '/includes/image.php'); + + $pattern = (EM_IMAGE_DS == '/') ? EM_IMAGE_UPLOAD_DIR.'*/*':EM_IMAGE_UPLOAD_DIR.'*'; + $files = glob($pattern); + $file_array = array(); + foreach($files as $file){ + $matches = array(); + if( preg_match('/\/(events|locations\/)?(event|location)-([0-9]+).([a-zA-Z]{3})/', $file, $matches) ){ + $file_array[$matches[2]][$matches[3]] = array( + 'file' => $file, + 'url' => EM_IMAGE_UPLOAD_URI.$matches[1].$matches[2].'-'.$matches[3].'.'.$matches[4], + 'type' => 'image/'.$matches[4], + ); + } + } + $result = array('success'=>0, 'fail'=>0); + if( count($file_array) > 0 ){ + foreach($file_array as $type => $file_type){ + foreach($file_type as $id => $attachment){ + if($type == 'event'){ + $post = em_get_event($id); + }elseif($type == 'location'){ + $post = em_get_location($id); + } + if ( !empty($post->ID) ){ + $attachment_data = array( + 'post_mime_type' => $attachment['type'], + 'post_title' => $post->post_title, + 'post_content' => '', + 'post_status' => 'inherit' + ); + $attachment_id = wp_insert_attachment( $attachment_data, $attachment['file'], $post->ID ); + $attachment_metadata = wp_generate_attachment_metadata( $attachment_id, $attachment['file'] ); + wp_update_attachment_metadata( $attachment_id, $attachment_metadata ); + //delete the old attachment + update_post_meta($post->post_id, '_thumbnail_id', $attachment_id); + //is it recurring? If so add attachment to recurrences + if( $type == 'event' && $post->is_recurring() ){ + $results = $wpdb->get_col('SELECT post_id FROM '.EM_EVENTS_TABLE.' WHERE recurrence_id='.$post->event_id); + foreach ($results as $post_id){ + update_post_meta($post_id, '_thumbnail_id', $attachment_id); + } + } + $result['success']++; + } + } + } + } + delete_option('dbem_migrate_images_nag'); + delete_option('dbem_migrate_images'); + return $result; +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-posts.php b/wp-content/plugins/events-manager/em-posts.php new file mode 100644 index 0000000..20c2879 --- /dev/null +++ b/wp-content/plugins/events-manager/em-posts.php @@ -0,0 +1,389 @@ +<?php +//Custom Post Type and Taxonomy Names, overridable in wp-config.php, not adviseable but the point is flexibility if you know what you're doing ;) +if( !defined('EM_POST_TYPE_EVENT') ) define('EM_POST_TYPE_EVENT','event'); +if( !defined('EM_POST_TYPE_LOCATION') ) define('EM_POST_TYPE_LOCATION','location'); +if( !defined('EM_TAXONOMY_CATEGORY') ) define('EM_TAXONOMY_CATEGORY','event-categories'); +if( !defined('EM_TAXONOMY_TAG') ) define('EM_TAXONOMY_TAG','event-tags'); +//Slugs +define('EM_POST_TYPE_EVENT_SLUG',get_option('dbem_cp_events_slug', 'events')); +define('EM_POST_TYPE_LOCATION_SLUG',get_option('dbem_cp_locations_slug', 'locations')); +define('EM_TAXONOMY_CATEGORY_SLUG', get_site_option('dbem_taxonomy_category_slug', 'events/categories')); +define('EM_TAXONOMY_TAG_SLUG', get_option('dbem_taxonomy_tag_slug', 'events/tags')); + +/* + * This checks that you have post thumbnails enabled, if not, it enables it. + * You can always disable this by adding remove_action('after_setup_theme','wp_events_plugin_after_setup_theme'); in your functions.php theme file. + */ +add_action('after_setup_theme','wp_events_plugin_after_setup_theme',100); +function wp_events_plugin_after_setup_theme(){ + if( !get_option('disable_post_thumbnails') && function_exists('add_theme_support') ){ + global $_wp_theme_features; + if( !empty($_wp_theme_features['post-thumbnails']) ){ + //either leave as true, or add our cpts to this + if( is_array($_wp_theme_features['post-thumbnails']) ){ + $post_thumbnails = array_shift($_wp_theme_features['post-thumbnails']); + //add to featured image post types for specific themes + $post_thumbnails[] = EM_POST_TYPE_EVENT; + $post_thumbnails[] = 'event-recurring'; + $post_thumbnails[] = EM_POST_TYPE_LOCATION; + add_theme_support('post-thumbnails', $post_thumbnails); + } + }else{ + add_theme_support('post-thumbnails'); //need to add this for themes that don't have it. + } + } +} +//This bit registers the CPTs +add_action('init','wp_events_plugin_init',1); +function wp_events_plugin_init(){ + define('EM_ADMIN_URL',admin_url().'edit.php?post_type='.EM_POST_TYPE_EVENT); //we assume the admin url is absolute with at least one querystring + if( get_option('dbem_tags_enabled', true) ){ + register_taxonomy(EM_TAXONOMY_TAG,array(EM_POST_TYPE_EVENT,'event-recurring'),array( + 'hierarchical' => false, + 'public' => true, + 'show_ui' => true, + 'query_var' => true, + 'rewrite' => array('slug' => EM_TAXONOMY_TAG_SLUG,'with_front'=>false), + //'update_count_callback' => '', + //'show_tagcloud' => true, + //'show_in_nav_menus' => true, + 'label' => __('Event Tags'), + 'singular_label' => __('Event Tag'), + 'labels' => array( + 'name'=>__('Event Tags','dbem'), + 'singular_name'=>__('Event Tag','dbem'), + 'search_items'=>__('Search Event Tags','dbem'), + 'popular_items'=>__('Popular Event Tags','dbem'), + 'all_items'=>__('All Event Tags','dbem'), + 'parent_items'=>__('Parent Event Tags','dbem'), + 'parent_item_colon'=>__('Parent Event Tag:','dbem'), + 'edit_item'=>__('Edit Event Tag','dbem'), + 'update_item'=>__('Update Event Tag','dbem'), + 'add_new_item'=>__('Add New Event Tag','dbem'), + 'new_item_name'=>__('New Event Tag Name','dbem'), + 'seperate_items_with_commas'=>__('Seperate event tags with commas','dbem'), + 'add_or_remove_items'=>__('Add or remove events','dbem'), + 'choose_from_the_most_used'=>__('Choose from most used event tags','dbem'), + ), + 'capabilities' => array( + 'manage_terms' => 'edit_event_categories', + 'edit_terms' => 'edit_event_categories', + 'delete_terms' => 'delete_event_categories', + 'assign_terms' => 'edit_events', + ) + )); + } + if( get_option('dbem_categories_enabled', true) ){ + $supported_array = (EM_MS_GLOBAL && !is_main_site()) ? array():array(EM_POST_TYPE_EVENT,'event-recurring'); + register_taxonomy(EM_TAXONOMY_CATEGORY,$supported_array,array( + 'hierarchical' => true, + 'public' => true, + 'show_ui' => true, + 'query_var' => true, + 'rewrite' => array('slug' => EM_TAXONOMY_CATEGORY_SLUG, 'hierarchical' => true,'with_front'=>false), + //'update_count_callback' => '', + //'show_tagcloud' => true, + //'show_in_nav_menus' => true, + 'label' => __('Event Categories','dbem'), + 'singular_label' => __('Event Category','dbem'), + 'labels' => array( + 'name'=>__('Event Categories','dbem'), + 'singular_name'=>__('Event Category','dbem'), + 'search_items'=>__('Search Event Categories','dbem'), + 'popular_items'=>__('Popular Event Categories','dbem'), + 'all_items'=>__('All Event Categories','dbem'), + 'parent_items'=>__('Parent Event Categories','dbem'), + 'parent_item_colon'=>__('Parent Event Category:','dbem'), + 'edit_item'=>__('Edit Event Category','dbem'), + 'update_item'=>__('Update Event Category','dbem'), + 'add_new_item'=>__('Add New Event Category','dbem'), + 'new_item_name'=>__('New Event Category Name','dbem'), + 'seperate_items_with_commas'=>__('Seperate event categories with commas','dbem'), + 'add_or_remove_items'=>__('Add or remove events','dbem'), + 'choose_from_the_most_used'=>__('Choose from most used event categories','dbem'), + ), + 'capabilities' => array( + 'manage_terms' => 'edit_event_categories', + 'edit_terms' => 'edit_event_categories', + 'delete_terms' => 'delete_event_categories', + 'assign_terms' => 'edit_events', + ) + )); + } + $event_post_type = array( + 'public' => true, + 'hierarchical' => false, + 'show_ui' => true, + 'show_in_menu' => true, + 'show_in_nav_menus'=>true, + 'can_export' => true, + 'exclude_from_search' => false, + 'publicly_queryable' => true, + 'rewrite' => array('slug' => EM_POST_TYPE_EVENT_SLUG,'with_front'=>false), + 'has_archive' => get_option('dbem_cp_events_has_archive', false) == true, + 'supports' => apply_filters('em_cp_event_supports', array('custom-fields','title','editor','excerpt','comments','thumbnail','author')), + 'capability_type' => 'event', + 'capabilities' => array( + 'publish_posts' => 'publish_events', + 'edit_posts' => 'edit_events', + 'edit_others_posts' => 'edit_others_events', + 'delete_posts' => 'delete_events', + 'delete_others_posts' => 'delete_others_events', + 'read_private_posts' => 'read_private_events', + 'edit_post' => 'edit_event', + 'delete_post' => 'delete_event', + 'read_post' => 'read_event', + ), + 'label' => __('Events','dbem'), + 'description' => __('Display events on your blog.','dbem'), + 'labels' => array ( + 'name' => __('Events','dbem'), + 'singular_name' => __('Event','dbem'), + 'menu_name' => __('Events','dbem'), + 'add_new' => __('Add Event','dbem'), + 'add_new_item' => __('Add New Event','dbem'), + 'edit' => __('Edit','dbem'), + 'edit_item' => __('Edit Event','dbem'), + 'new_item' => __('New Event','dbem'), + 'view' => __('View','dbem'), + 'view_item' => __('View Event','dbem'), + 'search_items' => __('Search Events','dbem'), + 'not_found' => __('No Events Found','dbem'), + 'not_found_in_trash' => __('No Events Found in Trash','dbem'), + 'parent' => __('Parent Event','dbem'), + ), + 'menu_icon' => plugins_url('includes/images/calendar-16.png', __FILE__) + ); + if ( get_option('dbem_recurrence_enabled') ){ + $event_recurring_post_type = array( + 'public' => apply_filters('em_cp_event_recurring_public', false), + 'show_ui' => true, + 'show_in_admin_bar' => true, + 'show_in_menu' => 'edit.php?post_type='.EM_POST_TYPE_EVENT, + 'show_in_nav_menus'=>false, + 'publicly_queryable' => apply_filters('em_cp_event_recurring_publicly_queryable', false), + 'exclude_from_search' => true, + 'has_archive' => false, + 'can_export' => true, + 'hierarchical' => false, + 'supports' => apply_filters('em_cp_event_supports', array('custom-fields','title','editor','excerpt','comments','thumbnail','author')), + 'capability_type' => 'recurring_events', + 'rewrite' => array('slug' => 'events-recurring','with_front'=>false), + 'capabilities' => array( + 'publish_posts' => 'publish_recurring_events', + 'edit_posts' => 'edit_recurring_events', + 'edit_others_posts' => 'edit_others_recurring_events', + 'delete_posts' => 'delete_recurring_events', + 'delete_others_posts' => 'delete_others_recurring_events', + 'read_private_posts' => 'read_private_recurring_events', + 'edit_post' => 'edit_recurring_event', + 'delete_post' => 'delete_recurring_event', + 'read_post' => 'read_recurring_event', + ), + 'label' => __('Recurring Events','dbem'), + 'description' => __('Recurring Events Template','dbem'), + 'labels' => array ( + 'name' => __('Recurring Events','dbem'), + 'singular_name' => __('Recurring Event','dbem'), + 'menu_name' => __('Recurring Events','dbem'), + 'add_new' => __('Add Recurring Event','dbem'), + 'add_new_item' => __('Add New Recurring Event','dbem'), + 'edit' => __('Edit','dbem'), + 'edit_item' => __('Edit Recurring Event','dbem'), + 'new_item' => __('New Recurring Event','dbem'), + 'view' => __('View','dbem'), + 'view_item' => __('Add Recurring Event','dbem'), + 'search_items' => __('Search Recurring Events','dbem'), + 'not_found' => __('No Recurring Events Found','dbem'), + 'not_found_in_trash' => __('No Recurring Events Found in Trash','dbem'), + 'parent' => __('Parent Recurring Event','dbem'), + ) + ); + } + if( get_option('dbem_locations_enabled', true) ){ + $location_post_type = array( + 'public' => true, + 'hierarchical' => false, + 'show_in_admin_bar' => true, + 'show_ui' => !(EM_MS_GLOBAL && !is_main_site() && get_site_option('dbem_ms_mainblog_locations')), + 'show_in_menu' => 'edit.php?post_type='.EM_POST_TYPE_EVENT, + 'show_in_nav_menus'=>true, + 'can_export' => true, + 'exclude_from_search' => get_option('dbem_cp_locations_search_results') == false, + 'publicly_queryable' => true, + 'rewrite' => array('slug' => EM_POST_TYPE_LOCATION_SLUG, 'with_front'=>false), + 'query_var' => true, + 'has_archive' => get_option('dbem_cp_locations_has_archive', false) == true, + 'supports' => apply_filters('em_cp_location_supports', array('title','editor','excerpt','custom-fields','comments','thumbnail','author')), + 'capability_type' => 'location', + 'capabilities' => array( + 'publish_posts' => 'publish_locations', + 'delete_others_posts' => 'delete_others_locations', + 'delete_posts' => 'delete_locations', + 'delete_post' => 'delete_location', + 'edit_others_posts' => 'edit_others_locations', + 'edit_posts' => 'edit_locations', + 'edit_post' => 'edit_location', + 'read_private_posts' => 'read_private_locations', + 'read_post' => 'read_location', + ), + 'label' => __('Locations','dbem'), + 'description' => __('Display locations on your blog.','dbem'), + 'labels' => array ( + 'name' => __('Locations','dbem'), + 'singular_name' => __('Location','dbem'), + 'menu_name' => __('Locations','dbem'), + 'add_new' => __('Add Location','dbem'), + 'add_new_item' => __('Add New Location','dbem'), + 'edit' => __('Edit','dbem'), + 'edit_item' => __('Edit Location','dbem'), + 'new_item' => __('New Location','dbem'), + 'view' => __('View','dbem'), + 'view_item' => __('View Location','dbem'), + 'search_items' => __('Search Locations','dbem'), + 'not_found' => __('No Locations Found','dbem'), + 'not_found_in_trash' => __('No Locations Found in Trash','dbem'), + 'parent' => __('Parent Location','dbem'), + ) + ); + } + if( strstr(EM_POST_TYPE_EVENT_SLUG, EM_POST_TYPE_LOCATION_SLUG) !== FALSE ){ + //Now register posts, but check slugs in case of conflicts and reorder registrations + register_post_type(EM_POST_TYPE_EVENT, $event_post_type); + if ( get_option('dbem_recurrence_enabled') ){ + register_post_type('event-recurring', $event_recurring_post_type); + } + if( get_option('dbem_locations_enabled', true) ){ + register_post_type(EM_POST_TYPE_LOCATION, $location_post_type); + } + }else{ + if( get_option('dbem_locations_enabled', true) ){ + register_post_type(EM_POST_TYPE_LOCATION, $location_post_type); + } + register_post_type(EM_POST_TYPE_EVENT, $event_post_type); + //Now register posts, but check slugs in case of conflicts and reorder registrations + if ( get_option('dbem_recurrence_enabled') ){ + register_post_type('event-recurring', $event_recurring_post_type); + } + } +} + +//Post Customization +function supported_event_custom_fields($supported){ + $remove = array(); + if( !get_option('dbem_cp_events_custom_fields') ) $remove[] = 'custom-fields'; + if( !get_option('dbem_cp_events_comments') ) $remove[] = 'comments'; + return supported_custom_fields($supported, $remove); +} +add_filter('em_cp_event_supports', 'supported_event_custom_fields',10,1); + +function supported_location_custom_fields($supported){ + $remove = array(); + if( !get_option('dbem_cp_locations_custom_fields') ) $remove[] = 'custom-fields'; + if( !get_option('dbem_cp_locations_comments') ) $remove[] = 'comments'; + return supported_custom_fields($supported, $remove); +} +add_filter('em_cp_location_supports', 'supported_location_custom_fields',10,1); + +function supported_custom_fields($supported, $remove = array()){ + foreach($supported as $key => $support_field){ + if( in_array($support_field, $remove) ){ + unset($supported[$key]); + } + } + return $supported; +} + +function em_map_meta_cap( $caps, $cap, $user_id, $args ) { + /* Handle event reads */ + if ( 'edit_event' == $cap || 'delete_event' == $cap || 'read_event' == $cap ) { + $EM_Event = em_get_event($args[0],'post_id'); + $post_type = get_post_type_object( $EM_Event->post_type ); + /* Set an empty array for the caps. */ + $caps = array(); + //Filter according to event caps + switch( $cap ){ + case 'read_event': + if ( 'private' != $EM_Event->post_status ) + $caps[] = 'read'; + elseif ( $user_id == $EM_Event->event_owner ) + $caps[] = 'read'; + else + $caps[] = $post_type->cap->read_private_posts; + break; + case 'edit_event': + if ( $user_id == $EM_Event->event_owner ) + $caps[] = $post_type->cap->edit_posts; + else + $caps[] = $post_type->cap->edit_others_posts; + break; + case 'delete_event': + if ( $user_id == $EM_Event->event_owner ) + $caps[] = $post_type->cap->delete_posts; + else + $caps[] = $post_type->cap->delete_others_posts; + break; + } + } + if ( 'edit_recurring_event' == $cap || 'delete_recurring_event' == $cap || 'read_recurring_event' == $cap ) { + $EM_Event = em_get_event($args[0],'post_id'); + $post_type = get_post_type_object( $EM_Event->post_type ); + /* Set an empty array for the caps. */ + $caps = array(); + //Filter according to recurring_event caps + switch( $cap ){ + case 'read_recurring_event': + if ( 'private' != $EM_Event->post_status ) + $caps[] = 'read'; + elseif ( $user_id == $EM_Event->event_owner ) + $caps[] = 'read'; + else + $caps[] = $post_type->cap->read_private_posts; + break; + case 'edit_recurring_event': + if ( $user_id == $EM_Event->event_owner ) + $caps[] = $post_type->cap->edit_posts; + else + $caps[] = $post_type->cap->edit_others_posts; + break; + case 'delete_recurring_event': + if ( $user_id == $EM_Event->event_owner ) + $caps[] = $post_type->cap->delete_posts; + else + $caps[] = $post_type->cap->delete_others_posts; + break; + } + } + if ( 'edit_location' == $cap || 'delete_location' == $cap || 'read_location' == $cap ) { + $EM_Location = em_get_location($args[0],'post_id'); + $post_type = get_post_type_object( $EM_Location->post_type ); + /* Set an empty array for the caps. */ + $caps = array(); + //Filter according to location caps + switch( $cap ){ + case 'read_location': + if ( 'private' != $EM_Location->post_status ) + $caps[] = 'read'; + elseif ( $user_id == $EM_Location->location_owner ) + $caps[] = 'read'; + else + $caps[] = $post_type->cap->read_private_posts; + break; + case 'edit_location': + if ( $user_id == $EM_Location->location_owner ) + $caps[] = $post_type->cap->edit_posts; + else + $caps[] = $post_type->cap->edit_others_posts; + break; + case 'delete_location': + if ( $user_id == $EM_Location->location_owner ) + $caps[] = $post_type->cap->delete_posts; + else + $caps[] = $post_type->cap->delete_others_posts; + break; + } + } + /* Return the capabilities required by the user. */ + return $caps; +} +add_filter( 'map_meta_cap', 'em_map_meta_cap', 10, 4 ); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-rss.php b/wp-content/plugins/events-manager/em-rss.php new file mode 100644 index 0000000..b94703d --- /dev/null +++ b/wp-content/plugins/events-manager/em-rss.php @@ -0,0 +1,41 @@ +<?php +function em_rss() { + global $post, $wp_query; + if ( !empty($_REQUEST['dbem_rss']) || (is_object($post) && $post->ID == get_option('dbem_events_page') && $wp_query->get('rss')) ) { + header ( "Content-type: text/xml" ); + ob_start(); + echo "<?xml version='1.0'?>\n"; + ?> +<rss version="2.0"> + <channel> + <title><?php echo get_option ( 'dbem_rss_main_title' ); ?> + + + http://blogs.law.harvard.edu/tech/rss + Weblog Editor 2.0 + + ", ">", str_replace ( "<", "<", get_option ( 'dbem_rss_description_format' ) ) ); + $events = EM_Events::get( array('limit'=>5, 'owner'=>false) ); + foreach ( $events as $event ) { + $description = $event->output( get_option ( 'dbem_rss_description_format' ), "rss"); + $description = ent2ncr(convert_chars(strip_tags($description))); //Some RSS filtering + ?> + + <?php echo $event->output( get_option('dbem_rss_title_format'), "rss" ); ?> + output('#_EVENTURL'); ?> + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-shortcode.php b/wp-content/plugins/events-manager/em-shortcode.php new file mode 100644 index 0000000..e4f2081 --- /dev/null +++ b/wp-content/plugins/events-manager/em-shortcode.php @@ -0,0 +1,208 @@ +$img_url, 'button'=>6), $atts); + if( $img_url == $atts['img'] && $atts['button'] != 6 ){ + $img_url = str_replace('gc_button6.gif', 'gc_button'.$atts['button'].'.gif', $img_url); + } + $url = '0'; + return $url; +} +add_shortcode('events_gcal', 'em_get_gcal_shortcode'); + +/** + * Generates a map of locations that match given query attributes. Accepts any location query attributes. + * @param array $args + * @return string + */ +function em_get_locations_map_shortcode($args){ + $args['width'] = ( !empty($args['width']) ) ? $args['width']:450; + $args['height'] = ( !empty($args['height']) ) ? $args['height']:300; + ob_start(); + em_locate_template('templates/map-global.php',true, array('args'=>$args)); + return ob_get_clean(); +} +add_shortcode('locations_map', 'em_get_locations_map_shortcode'); +add_shortcode('locations-map', 'em_get_locations_map_shortcode'); //Depreciate this... confusing for WordPress + +/** + * Shows a list of events according to given specifications. Accepts any event query attribute. + * @param array $atts + * @return string + */ +function em_get_events_list_shortcode($atts, $format='') { + $atts = (array) $atts; + $atts['format'] = ($format != '' || empty($atts['format'])) ? $format : $atts['format']; + $atts['format'] = html_entity_decode($atts['format']); //shorcode doesn't accept html + $atts['page'] = ( !empty($atts['page']) && is_numeric($atts['page']) )? $atts['page'] : 1; + $atts['page'] = ( !empty($_GET['pno']) && is_numeric($_GET['pno']) )? $_GET['pno'] : $atts['page']; + return EM_Events::output( $atts ); +} +add_shortcode ( 'events_list', 'em_get_events_list_shortcode' ); + +/** + * Shows a list of events according to given specifications. Accepts any event query attribute. + * @param array $atts + * @return string + */ +function em_get_event_shortcode($atts, $format='') { + $atts = (array) $atts; + $atts['format'] = ($format != '' || empty($atts['format'])) ? $format : $atts['format']; + $atts['format'] = html_entity_decode($atts['format']); //shorcode doesn't accept html + if( !empty($atts['event']) && is_numeric($atts['event']) ){ + $EM_Event = em_get_event($atts['event']); + return ( !empty($atts['format']) ) ? $EM_Event->output($atts['format']) : $EM_Event->output_single(); + }elseif( !empty($atts['post_id']) && is_numeric($atts['post_id']) ){ + $EM_Event = em_get_event($atts['post_id'], 'post_id'); + return ( !empty($atts['format']) ) ? $EM_Event->output($atts['format']) : $EM_Event->output_single(); + } +} +add_shortcode ( 'event', 'em_get_event_shortcode' ); + +/** + * Returns list of locations according to given specifications. Accepts any location query attribute. + */ +function em_get_locations_list_shortcode( $atts, $format='' ) { + $atts = (array) $atts; + $atts['format'] = ($format != '' || empty($atts['format'])) ? $format : $atts['format']; + $atts['format'] = html_entity_decode($atts['format']); //shorcode doesn't accept html + $atts['page'] = ( !empty($atts['page']) && is_numeric($atts['page']) )? $atts['page'] : 1; + $atts['page'] = ( !empty($_GET['pno']) && is_numeric($_GET['pno']) )? $_GET['pno'] : $atts['page']; + $args['orderby'] = !empty($args['orderby']) ? $args['orderby'] : get_option('dbem_locations_default_orderby'); + $args['order'] = !empty($args['order']) ? $args['order'] : get_option('dbem_locations_default_order'); + return EM_Locations::output( $atts ); +} +add_shortcode('locations_list', 'em_get_locations_list_shortcode'); + +/** + * Shows a single location according to given specifications. Accepts any event query attribute. + * @param array $atts + * @return string + */ +function em_get_location_shortcode($atts, $format='') { + $atts = (array) $atts; + $atts['format'] = ($format != '' || empty($atts['format'])) ? $format : $atts['format']; + $atts['format'] = html_entity_decode($atts['format']); //shorcode doesn't accept html + if( !empty($atts['location']) && is_numeric($atts['location']) ){ + $EM_Location = em_get_location($atts['location']); + return ( !empty($atts['format']) ) ? $EM_Location->output($atts['format']) : $EM_Location->output_single(); + }elseif( !empty($atts['post_id']) && is_numeric($atts['post_id']) ){ + $EM_Location = em_get_location($atts['post_id'],'post_id'); + return ( !empty($atts['format']) ) ? $EM_Location->output($atts['format']) : $EM_Location->output_single(); + } +} +add_shortcode ( 'location', 'em_get_location_shortcode' ); + +function em_get_categories_shortcode($args, $format=''){ + $args = (array) $args; + $args['format'] = ($format != '' || empty($args['format'])) ? $format : $args['format']; + $args['format'] = html_entity_decode($args['format']); //shorcode doesn't accept html + $args['orderby'] = !empty($args['orderby']) ? $args['orderby'] : get_option('dbem_categories_default_orderby'); + $args['order'] = !empty($args['order']) ? $args['order'] : get_option('dbem_categories_default_order'); + return EM_Categories::output($args); +} +add_shortcode ( 'categories_list', 'em_get_categories_shortcode' ); + +/** + * DO NOT DOCUMENT! This should be replaced with shortcodes events-link and events_uri + * @param array $atts + * @return string + */ +function em_get_events_page_shortcode($atts) { + $atts = shortcode_atts ( array ('justurl' => 0, 'text' => '' ), $atts ); + if($atts['justurl']){ + return EM_URI; + }else{ + return em_get_link($atts['text']); + } +} +add_shortcode ( 'events_page', 'em_get_events_page_shortcode' ); + +/** + * Shortcode for a link to events page. Default will show events page title in link text, if you use [events_link]text[/events_link] 'text' will be the link text + * @param array $atts + * @param string $text + * @return string + */ +function em_get_link_shortcode($atts, $text='') { + return em_get_link($text); +} +add_shortcode ( 'events_link', 'em_get_link_shortcode'); + +/** + * Returns the uri of the events page only + * @return string + */ +function em_get_url_shortcode(){ + return EM_URI; +} +add_shortcode ( 'events_url', 'em_get_url_shortcode'); + +/** + * CHANGE DOCUMENTATION! if you just want the url you should use shortcode events_rss_uri + * @param array $atts + * @return string + */ +function em_get_rss_link_shortcode($atts) { + $atts = shortcode_atts ( array ('justurl' => 0, 'text' => 'RSS' ), $atts ); + if($atts['justurl']){ + return EM_RSS_URI; + }else{ + return em_get_rss_link($atts['text']); + } +} +add_shortcode ( 'events_rss_link', 'em_get_rss_link_shortcode' ); + +/** + * Returns the uri of the events rss page only, takes no attributes. + * @return string + */ +function em_get_rss_url_shortcode(){ + return EM_RSS_URI; +} +add_shortcode ( 'events_rss_url', 'em_get_rss_url_shortcode'); + +/** + * Creates a form to submit events with + * @param array $atts + * @return string + */ +function em_get_event_form_shortcode( $args = array() ){ + return em_get_event_form( $args ); +} +add_shortcode ( 'event_form', 'em_get_event_form_shortcode'); + +/** + * Creates a form to search events with + * @param array $atts + * @return string + */ +function em_get_event_search_form_shortcode( $args = array() ){ + return em_get_event_search_form( $args ); +} +add_shortcode ( 'event_search_form', 'em_get_event_search_form_shortcode'); + +/** + * Creates a grouped list of events by year, month, week or day + * @since 4.213 + * @param array $args + * @param string $format + * @return string + */ +function em_get_events_list_grouped_shortcode($args = array(), $format = ''){ + return em_get_events_list_grouped($args,$format); +} +add_shortcode ( 'events_list_grouped', 'em_get_events_list_grouped_shortcode' ); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-template-tags.php b/wp-content/plugins/events-manager/em-template-tags.php new file mode 100644 index 0000000..2c0fc20 --- /dev/null +++ b/wp-content/plugins/events-manager/em-template-tags.php @@ -0,0 +1,516 @@ +start)][] = $EM_Event; + } + foreach ($events_dates as $year => $events){ + echo '

      '.$year.'

      '; + echo EM_Events::output($events, $atts); + } + break; + case 'monthly': + //go through the events and put them into a monthly array + $format = (!empty($args['date_format'])) ? $args['date_format']:'M Y'; + $events_dates = array(); + foreach($EM_Events as $EM_Event){ + $events_dates[date_i18n($format,$EM_Event->start)][] = $EM_Event; + } + foreach ($events_dates as $month => $events){ + echo '

      '.$month.'

      '; + echo EM_Events::output($events, $atts); + } + break; + case 'weekly': + $format = (!empty($args['date_format'])) ? $args['date_format']:get_option('date_format'); + $events_dates = array(); + foreach($EM_Events as $EM_Event){ + $start_of_week = get_option('start_of_week'); + $day_of_week = date('w',$EM_Event->start); + $day_of_week = date('w',$EM_Event->start); + $offset = $day_of_week - $start_of_week; + if($offset<0){ $offset += 7; } + $offset = $offset * 60*60*24; //days in seconds + $start_day = strtotime($EM_Event->start_date); + $events_dates[$start_day - $offset][] = $EM_Event; + } + foreach ($events_dates as $event_day_ts => $events){ + echo '

      '.date_i18n($format,$event_day_ts).' - '.date_i18n($format,$event_day_ts+(60*60*24*6)).'

      '; + echo EM_Events::output($events, $atts); + } + break; + default: //daily + //go through the events and put them into a daily array + $format = (!empty($args['date_format'])) ? $args['date_format']:get_option('date_format'); + $events_dates = array(); + foreach($EM_Events as $EM_Event){ + $events_dates[strtotime($EM_Event->start_date)][] = $EM_Event; + } + foreach ($events_dates as $event_day_ts => $events){ + echo '

      '.date_i18n($format,$event_day_ts).'

      '; + echo EM_Events::output($events, $atts); + } + break; + } + if( !empty($args['limit']) && $events_count > $args['limit'] && (!empty($args['pagination']) || !isset($args['pagination'])) ){ + //Show the pagination links (unless there's less than $limit events) + $page_link_template = add_query_arg(array('pno'=>'%PAGE%')); + echo em_paginate( $page_link_template, $events_count, $args['limit'], $args['page']); + } + return ob_get_clean(); +} +/** + * Print a grouped list of events by year, month, week or day. + * @since 4.213 + * @param array $args + * @param string $format + * @return string + */ +function em_events_list_grouped($args, $format=''){ echo em_get_events_list_grouped($args, $format); } + +/** + * Creates an html link to the events page. + * @param string $text + * @return string + */ +function em_get_link( $text = '' ) { + $text = ($text == '') ? get_option ( "dbem_events_page_title" ) : $text; + $text = ($text == '') ? __('Events','dbem') : $text; //In case options aren't there.... + return ''.esc_html($text).''; +} +/** + * Prints the result of em_get_link() + * @param string $text + * @uses em_get_link() + */ +function em_link($text = ''){ echo em_get_link($text); } + +/** + * Creates an html link to the RSS feed + * @param string $text + * @return string + */ +function em_get_rss_link($text = "RSS") { + $text = ($text == '') ? 'RSS' : $text; + return ''.esc_html($text).''; +} +/** + * Prints the result of em_get_rss_link() + * @param string $text + * @uses em_get_rss_link() + */ +function em_rss_link($text = "RSS"){ echo em_get_rss_link($text); } + +/* + * --------------------------------------------------------------------- + * User Interfaces - Forms, Tables etc. + * --------------------------------------------------------------------- + */ + +//Event Forms +/** + * Outputs the event submission form for guests and members. + * @param array $args + */ +function em_event_form($args = array()){ + global $EM_Event; + if( !is_user_logged_in() && get_option('dbem_events_anonymous_submissions') && em_locate_template('forms/event-editor-guest.php') ){ + em_locate_template('forms/event-editor-guest.php',true, array('args'=>$args)); + }else{ + if( empty($EM_Event->event_id) ){ + $EM_Event = ( is_object($EM_Event) && get_class($EM_Event) == 'EM_Event') ? $EM_Event : new EM_Event(); + //Give a default location & category + $default_cat = get_option('dbem_default_category'); + $default_loc = get_option('dbem_default_location'); + if( is_numeric($default_cat) && $default_cat > 0 && !empty($EM_Event->get_categories->categories) ){ + $EM_Category = new EM_Category($default_cat); + $EM_Event->get_categories()->categories[] = $EM_Category; + } + if( is_numeric($default_loc) && $default_loc > 0 && ( empty($EM_Event->get_location()->location_id) && empty($EM_Event->get_location()->location_name) && empty($EM_Event->get_location()->location_address) && empty($EM_Event->get_location()->location_town) ) ){ + $EM_Event->location_id = $default_loc; + $EM_Event->location = new EM_Location($default_loc); + } + } + em_locate_template('forms/event-editor.php',true, array('args'=>$args)); + } +} +/** + * Retreives the event submission form for guests and members. + * @param array $args + */ +function em_get_event_form( $args = array() ){ + ob_start(); + em_event_form($args); + return ob_get_clean(); +} + +/** + * Outputs table of events belonging to user + * @param array $args + */ +function em_events_admin($args = array()){ + global $EM_Event, $bp; + if( is_user_logged_in() && current_user_can('edit_events') ){ + if( !empty($_GET['action']) && $_GET['action']=='edit' ){ + if( empty($_REQUEST['redirect_to']) ){ + $_REQUEST['redirect_to'] = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>null, 'event_id'=>null)); + } + em_event_form(); + }else{ + $limit = ( !empty($_REQUEST['limit']) ) ? $_REQUEST['limit'] : 20;//Default limit + $page = ( !empty($_REQUEST['pno']) ) ? $_REQUEST['pno']:1; + $offset = ( $page > 1 ) ? ($page-1)*$limit : 0; + $order = ( !empty($_REQUEST ['order']) ) ? $_REQUEST ['order']:'ASC'; + $scope_names = em_get_scopes(); + $scope = ( !empty($_REQUEST ['scope']) && array_key_exists($_REQUEST ['scope'], $scope_names) ) ? $_REQUEST ['scope']:'future'; + if( array_key_exists('status', $_REQUEST) ){ + $status = ($_REQUEST['status']) ? 1:0; + }else{ + $status = false; + } + $search = ( !empty($_REQUEST['em_search']) ) ? $_REQUEST['em_search']:''; + $args = array( 'scope' => $scope, 'order' => $order, 'search' => $search, 'owner' => get_current_user_id(),'status' => $status); + $events_count = EM_Events::count( $args ); //count events without limits for pagination + $args['limit'] = $limit; + $args['offset'] = $offset; + $EM_Events = EM_Events::get( $args ); + if($scope != 'future'){ + $future_count = EM_Events::count( array('status'=>1, 'owner' =>get_current_user_id(), 'scope' => 'future')); + }else{ + $future_count = $events_count; + } + $pending_count = EM_Events::count( array('status'=>0, 'owner' =>get_current_user_id(), 'scope' => 'all') ); + em_locate_template('tables/events.php',true, array( + 'args'=>$args, + 'EM_Events'=>$EM_Events, + 'events_count'=>$events_count, + 'future_count'=>$future_count, + 'pending_count'=>$pending_count, + 'page' => $page, + 'limit' => $limit, + 'offset' => $offset, + 'show_add_new' => true + )); + } + }elseif( !is_user_logged_in() && get_option('dbem_events_anonymous_submissions') ){ + em_event_form($args); + }else{ + echo apply_filters('em_event_submission_login', __("You must log in to view and manage your events.",'dbem')); + } +} +/** + * Retreives table of events belonging to user + * @param array $args + */ +function em_get_events_admin( $args = array() ){ + ob_start(); + em_events_admin($args); + return ob_get_clean(); +} + +/** + * Outputs the event search form. + * @param array $args + */ +function em_event_search_form($args = array()){ + em_locate_template('templates/events-search.php',true, array('args'=>$args)); +} +/** + * Retreives the event search form. + * @param array $args + */ +function em_get_event_search_form( $args = array() ){ + ob_start(); + em_event_search_form($args); + return ob_get_clean(); +} + +//Location Forms +/** + * Outputs the location submission form for guests and members. + * @param array $args + */ +function em_location_form($args = array()){ + global $EM_Location; + $EM_Location = ( is_object($EM_Location) && get_class($EM_Location) == 'EM_Location') ? $EM_Location : new EM_Location(); + em_locate_template('forms/location-editor.php',true); +} +/** + * Retreives the location submission form for guests and members. + * @param array $args + */ +function em_get_location_form( $args = array() ){ + ob_start(); + em_location_form($args); + return ob_get_clean(); +} + +/** + * Outputs table of locations belonging to user + * @param array $args + */ +function em_locations_admin($args = array()){ + global $EM_Location; + if( is_user_logged_in() && current_user_can('edit_locations') ){ + if( !empty($_GET['action']) && $_GET['action']=='edit' ){ + if( empty($_REQUEST['redirect_to']) ){ + $_REQUEST['redirect_to'] = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>null, 'location_id'=>null)); + } + em_location_form(); + }else{ + $url = empty($url) ? $_SERVER['REQUEST_URI']:$url; //url to this page + $limit = ( !empty($_REQUEST['limit']) ) ? $_REQUEST['limit'] : 20;//Default limit + $page = ( !empty($_REQUEST['pno']) ) ? $_REQUEST['pno']:1; + $offset = ( $page > 1 ) ? ($page-1)*$limit : 0; + $args = array('limit'=>$limit, 'offset'=>$offset, 'status'=>false, 'blog'=>false); + if( !empty($_REQUEST['view']) && $_REQUEST['view'] == 'others' && current_user_can('read_others_locations') ){ + $locations = EM_Locations::get($args); + $locations_count = EM_Locations::count(array('status'=>false, 'blog'=>false, 'owner'=>false)); + }else{ + $locations = EM_Locations::get( array_merge($args, array('owner'=>get_current_user_id())) ); + $locations_count = EM_Locations::count(array('status'=>false, 'blog'=>false, 'owner'=>get_current_user_id())); + } + $locations_mine_count = EM_Locations::count( array('owner'=>get_current_user_id(), 'blog'=>false, 'status'=>false) ); + $locations_all_count = current_user_can('read_others_locations') ? EM_Locations::count(array('blog'=>false, 'status'=>false)):0; + em_locate_template('tables/locations.php',true, array( + 'args'=>$args, + 'locations'=>$locations, + 'locations_count'=>$locations_count, + 'locations_mine_count'=>$locations_mine_count, + 'locations_all_count'=>$locations_all_count, + 'url' => $url, + 'page' => $page, + 'limit' => $limit, + 'offset' => $offset, + 'show_add_new' => true + )); + } + }else{ + echo __("You must log in to view and manage your locations.",'dbem'); + } +} +/** + * Retreives table of locations belonging to user + * @param array $args + */ +function em_get_locations_admin( $args = array() ){ + ob_start(); + em_locations_admin($args); + return ob_get_clean(); +} + +//Bookings Pages +function em_bookings_admin(){ + if( is_user_logged_in() && current_user_can('manage_bookings') ){ + em_locate_template('buddypress/my-bookings.php', true); + }else{ + echo __("You must log in to view and manage your bookings.",'dbem'); + } +} +function em_get_bookings_admin(){ + ob_start(); + em_bookings_admin(); + return ob_get_clean(); +} + +function em_my_bookings(){ + em_locate_template('templates/my-bookings.php', true); +} +function em_get_my_bookings(){ + ob_start(); + em_my_bookings(); + return ob_get_clean(); +} + +/* + * --------------------------------------------------------------------- + * Conditionals - Yes/No functions + * --------------------------------------------------------------------- + */ + +/** + * Returns true if there are any events that exist in the given scope (default is future events). + * @param string $scope + * @return boolean + */ +function em_are_events_available($scope = "future") { + $scope = ($scope == "") ? "future":$scope; + $events = EM_Events::get( array('limit'=>1, 'scope'=>$scope) ); + return ( count($events) > 0 ); +} + +/** + * Returns true if the page is the events page. this is now only an events page, before v4.0.83 this would be true for any multiple page (e.g. locations) + * @return boolean + */ +function em_is_events_page() { + global $post; + return em_get_page_type() == 'events'; +} + +/** + * Is this a a single event page? + * @return boolean + */ +function em_is_event_page(){ + return em_get_page_type() == 'event'; +} + + +/** + * Is this a a single calendar day page? + * @return boolean + */ +function em_is_calendar_day_page(){ + return em_get_page_type() == 'calendar_day'; +} + +/** + * Is this a a single category page? + * @return boolean + */ +function em_is_category_page(){ + return em_get_page_type() == 'category'; +} +/** + * Is this a categories list page? + * @return boolean + */ +function em_is_categories_page(){ + return em_get_page_type() == 'categories'; +} + +/** + * Is this a a single location page? + * @return boolean + */ +function em_is_location_page(){ + return em_get_page_type() == 'location'; +} +/** + * Is this a locations list page? + * @return boolean + */ +function em_is_locations_page(){ + return em_get_page_type() == 'locations'; +} + +/** + * Is this my bookings page? + * @return boolean + */ +function em_is_my_bookings_page(){ + return em_get_page_type() == 'my_bookings'; +} + +/** + * Returns true if this is a single events page and the event is RSVPable + * @return boolean + */ +function em_is_event_rsvpable() { + //We assume that we're on a single event (or recurring event) page here, so $EM_Event must be loaded + global $EM_Event; + return ( em_is_event_page() && $EM_Event->rsvp ); +} +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/em-upgrade.php b/wp-content/plugins/events-manager/em-upgrade.php new file mode 100644 index 0000000..10469e3 --- /dev/null +++ b/wp-content/plugins/events-manager/em-upgrade.php @@ -0,0 +1,5 @@ +recurrence_byday = ( empty($event['recurrence_byday']) || $event['recurrence_byday'] == 7 ) ? 0:$event['recurrence_byday']; //Backward compatibility (since 3.0.3), using 0 makes more sense due to date() function diff --git a/wp-content/plugins/events-manager/events-manager.php b/wp-content/plugins/events-manager/events-manager.php new file mode 100644 index 0000000..4466de5 --- /dev/null +++ b/wp-content/plugins/events-manager/events-manager.php @@ -0,0 +1,556 @@ +' ) ){ + require( dirname( __FILE__ ) . '/buddypress/bp-em-core.php' ); + } +} +add_action( 'bp_include', 'bp_em_init' ); + +//Table names +global $wpdb; +if( EM_MS_GLOBAL ){ + $prefix = $wpdb->base_prefix; +}else{ + $prefix = $wpdb->prefix; +} + define('EM_CATEGORIES_TABLE', $prefix.'em_categories'); //TABLE NAME + define('EM_EVENTS_TABLE',$prefix.'em_events'); //TABLE NAME + define('EM_TICKETS_TABLE', $prefix.'em_tickets'); //TABLE NAME + define('EM_TICKETS_BOOKINGS_TABLE', $prefix.'em_tickets_bookings'); //TABLE NAME + define('EM_META_TABLE',$prefix.'em_meta'); //TABLE NAME + define('EM_RECURRENCE_TABLE',$prefix.'dbem_recurrence'); //TABLE NAME + define('EM_LOCATIONS_TABLE',$prefix.'em_locations'); //TABLE NAME + define('EM_BOOKINGS_TABLE',$prefix.'em_bookings'); //TABLE NAME + +//Backward compatability for old images stored in < EM 5 +if( EM_MS_GLOBAL ){ + //If in ms recurrence mode, we are getting the default wp-content/uploads folder + $upload_dir = array( + 'basedir' => WP_CONTENT_DIR.'/uploads/', + 'baseurl' => WP_CONTENT_URL.'/uploads/' + ); +}else{ + $upload_dir = wp_upload_dir(); +} +if( file_exists($upload_dir['basedir'].'/locations-pics' ) ){ + define("EM_IMAGE_UPLOAD_DIR", $upload_dir['basedir']."/locations-pics/"); + define("EM_IMAGE_UPLOAD_URI", $upload_dir['baseurl']."/locations-pics/"); + define("EM_IMAGE_DS",'-'); +}else{ + define("EM_IMAGE_UPLOAD_DIR", $upload_dir['basedir']."/events-manager/"); + define("EM_IMAGE_UPLOAD_URI", $upload_dir['baseurl']."/events-manager/"); + define("EM_IMAGE_DS",'/'); +} + +/** + * @author marcus + * Contains functions for loading styles on both admin and public sides. + */ +class EM_Scripts_and_Styles { + function init(){ + if( is_admin() ){ + //Scripts and Styles + add_action('admin_print_styles-post.php', array('EM_Scripts_and_Styles','admin_styles')); + add_action('admin_print_styles-post-new.php', array('EM_Scripts_and_Styles','admin_styles')); + add_action('admin_print_styles-edit.php', array('EM_Scripts_and_Styles','admin_styles')); + if( (!empty($_GET['page']) && substr($_GET['page'],0,14) == 'events-manager') || (!empty($_GET['post_type']) && $_GET['post_type'] == EM_POST_TYPE_EVENT) ){ + add_action('admin_print_styles', array('EM_Scripts_and_Styles','admin_styles')); + } + add_action('admin_print_scripts-post.php', array('EM_Scripts_and_Styles','admin_scripts')); + add_action('admin_print_scripts-post-new.php', array('EM_Scripts_and_Styles','admin_scripts')); + add_action('admin_print_scripts-edit.php', array('EM_Scripts_and_Styles','admin_scripts')); + if( (!empty($_GET['page']) && substr($_GET['page'],0,14) == 'events-manager') || (!empty($_GET['post_type']) && $_GET['post_type'] == EM_POST_TYPE_EVENT) ){ + add_action('admin_print_scripts', array('EM_Scripts_and_Styles','admin_scripts')); + } + }else{ + add_action('init', array('EM_Scripts_and_Styles','public_enqueue')); + } + add_action('init', array('EM_Scripts_and_Styles','localize_script')); + } + + /** + * Enqueing public scripts and styles + */ + function public_enqueue() { + //Scripts + wp_enqueue_script('events-manager', plugins_url('includes/js/events-manager.js',__FILE__), array('jquery', 'jquery-ui-core','jquery-ui-widget','jquery-ui-position','jquery-ui-sortable','jquery-ui-datepicker','jquery-ui-autocomplete','jquery-ui-dialog')); //jQuery will load as dependency + //Styles + wp_enqueue_style('events-manager', plugins_url('includes/css/events_manager.css',__FILE__)); //main css + } + + /** + * Localize the script vars that require PHP intervention, removing the need for inline JS. + */ + function localize_script(){ + global $em_localized_js; + $locale_code = substr ( get_locale(), 0, 2 ); + //Localize + $em_localized_js = array( + 'ajaxurl' => admin_url('admin-ajax.php'), + 'bookingajaxurl' => admin_url('admin-ajax.php'), + 'locationajaxurl' => admin_url('admin-ajax.php?action=locations_search'), + 'firstDay' => get_option('start_of_week'), + 'locale' => $locale_code, + 'dateFormat' => get_option('dbem_date_format_js'), + 'bookingInProgress' => __('Please wait while the booking is being submitted.','dbem'), + 'ui_css' => plugins_url('includes/css/ui-lightness.css', __FILE__), + 'show24hours' => get_option('dbem_time_24h'), + 'is_ssl' => is_ssl(), + 'tickets_save' => __('Save Ticket','dbem'), + 'bookings_export_save' => __('Export Bookings','dbem'), + 'bookings_settings_save' => __('Save Settings','dbem'), + 'booking_delete' => __("Are you sure you want to delete?",'dbem') + ); + $em_localized_js['txt_search'] = get_option('dbem_search_form_text_label',__('Search','dbem')); + $em_localized_js['txt_searching'] = __('Searching...','dbem'); + $em_localized_js['txt_loading'] = __('Loading...','dbem'); + //logged in messages that visitors shouldn't need to see + if( is_user_logged_in() ){ + $em_localized_js['event_reschedule_warning'] = __('Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted.', 'dbem'); + $em_localized_js['disable_bookings_warning'] = __('Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have', 'dbem'); + $em_localized_js['event_detach_warning'] = __('Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events.', 'dbem'); + $delete_text = ( !EMPTY_TRASH_DAYS ) ? __('This cannot be undone.','dbem'):__('All events will be moved to trash.','dbem'); + $em_localized_js['delete_recurrence_warning'] = __('Are you sure you want to delete all recurrences of this event?', 'dbem').' '.$delete_text; + $em_localized_js['booking_warning_cancel'] = get_option('dbem_booking_warning_cancel'); + } + //load admin/public only vars + if( is_admin() ){ + $em_localized_js['event_post_type'] = EM_POST_TYPE_EVENT; + $em_localized_js['location_post_type'] = EM_POST_TYPE_LOCATION; + } + wp_localize_script('events-manager','EM', apply_filters('em_wp_localize_script', $em_localized_js)); + } + + function admin_styles(){ + global $post; + wp_enqueue_style('events-manager-admin', WP_PLUGIN_URL.'/events-manager/includes/css/events_manager_admin.css'); + } + function admin_scripts(){ + global $post; + wp_enqueue_script('events-manager', WP_PLUGIN_URL.'/events-manager/includes/js/events-manager.js', array('jquery', 'jquery-ui-core','jquery-ui-widget','jquery-ui-position','jquery-ui-sortable','jquery-ui-datepicker','jquery-ui-autocomplete','jquery-ui-dialog')); + self::localize_script(); + } +} +EM_Scripts_and_Styles::init(); +function em_enqueue_public(){ EM_Scripts_and_Styles::public_enqueue(); } //In case ppl used this somewhere + +/** + * Perform plugins_loaded actions + */ +function em_plugins_loaded(){ + //Capabilities + global $em_capabilities_array; + $em_capabilities_array = apply_filters('em_capabilities_array', array( + /* Booking Capabilities */ + 'manage_others_bookings' => sprintf(__('You do not have permission to manage others %s','dbem'),__('bookings','dbem')), + 'manage_bookings' => sprintf(__('You do not have permission to manage %s','dbem'),__('bookings','dbem')), + /* Event Capabilities */ + 'publish_events' => sprintf(__('You do not have permission to publish %s','dbem'),__('events','dbem')), + 'delete_others_events' => sprintf(__('You do not have permission to delete others %s','dbem'),__('events','dbem')), + 'delete_events' => sprintf(__('You do not have permission to delete %s','dbem'),__('events','dbem')), + 'edit_others_events' => sprintf(__('You do not have permission to edit others %s','dbem'),__('events','dbem')), + 'edit_events' => sprintf(__('You do not have permission to edit %s','dbem'),__('events','dbem')), + 'read_private_events' => sprintf(__('You cannot read private %s','dbem'),__('events','dbem')), + /*'read_events' => sprintf(__('You cannot view %s','dbem'),__('events','dbem')),*/ + /* Recurring Event Capabilties */ + 'publish_recurring_events' => sprintf(__('You do not have permission to publish %s','dbem'),__('recurring events','dbem')), + 'delete_others_recurring_events' => sprintf(__('You do not have permission to delete others %s','dbem'),__('recurring events','dbem')), + 'delete_recurring_events' => sprintf(__('You do not have permission to delete %s','dbem'),__('recurring events','dbem')), + 'edit_others_recurring_events' => sprintf(__('You do not have permission to edit others %s','dbem'),__('recurring events','dbem')), + 'edit_recurring_events' => sprintf(__('You do not have permission to edit %s','dbem'),__('recurring events','dbem')), + /* Location Capabilities */ + 'publish_locations' => sprintf(__('You do not have permission to publish %s','dbem'),__('locations','dbem')), + 'delete_others_locations' => sprintf(__('You do not have permission to delete others %s','dbem'),__('locations','dbem')), + 'delete_locations' => sprintf(__('You do not have permission to delete %s','dbem'),__('locations','dbem')), + 'edit_others_locations' => sprintf(__('You do not have permission to edit others %s','dbem'),__('locations','dbem')), + 'edit_locations' => sprintf(__('You do not have permission to edit %s','dbem'),__('locations','dbem')), + 'read_private_locations' => sprintf(__('You cannot read private %s','dbem'),__('locations','dbem')), + 'read_others_locations' => sprintf(__('You cannot view others %s','dbem'),__('locations','dbem')), + /*'read_locations' => sprintf(__('You cannot view %s','dbem'),__('locations','dbem')),*/ + /* Category Capabilities */ + 'delete_event_categories' => sprintf(__('You do not have permission to delete %s','dbem'),__('categories','dbem')), + 'edit_event_categories' => sprintf(__('You do not have permission to edit %s','dbem'),__('categories','dbem')), + /* Upload Capabilities */ + 'upload_event_images' => __('You do not have permission to upload images','dbem') + )); + // LOCALIZATION + load_plugin_textdomain('dbem', false, dirname( plugin_basename( __FILE__ ) ).'/includes/langs'); +} +add_filter('plugins_loaded','em_plugins_loaded'); + +/** + * Perform init actions + */ +function em_init(){ + //Hard Links + global $EM_Mailer, $wp_rewrite; + if( get_option("dbem_events_page") > 0 ){ + define('EM_URI', get_permalink(get_option("dbem_events_page"))); //PAGE URI OF EM + }else{ + if( $wp_rewrite->using_permalinks() ){ + define('EM_URI', trailingslashit(home_url()).'/'.EM_POST_TYPE_EVENT_SLUG.'/'); //PAGE URI OF EM + }else{ + define('EM_URI', trailingslashit(home_url()).'?post_type='.EM_POST_TYPE_EVENT); //PAGE URI OF EM + } + } + if( $wp_rewrite->using_permalinks() ){ + define('EM_RSS_URI', trailingslashit(EM_URI)."rss/"); //RSS PAGE URI + }else{ + if( get_option("dbem_events_page") > 0 ){ + define('EM_RSS_URI', EM_URI."&rss=1"); //RSS PAGE URI + }else{ + define('EM_RSS_URI', EM_URI."&feed=rss2"); //RSS PAGE URI + } + } + $EM_Mailer = new EM_Mailer(); + //Upgrade/Install Routine + if( is_admin() && current_user_can('activate_plugins') ){ + if( EM_VERSION > get_option('dbem_version', 0) ){ + require_once( dirname(__FILE__).'/em-install.php'); + em_install(); + } + } + //add custom functions.php file + locate_template('plugins/events-manager/functions.php', true); +} +add_filter('init','em_init',1); + +/** + * This function will load an event into the global $EM_Event variable during page initialization, provided an event_id is given in the url via GET or POST. + * global $EM_Recurrences also holds global array of recurrence objects when loaded in this instance for performance + * All functions (admin and public) can now work off this object rather than it around via arguments. + * @return null + */ +function em_load_event(){ + global $EM_Event, $EM_Recurrences, $EM_Location, $EM_Person, $EM_Booking, $EM_Category, $EM_Ticket, $current_user; + if( !defined('EM_LOADED') ){ + $EM_Recurrences = array(); + if( isset( $_REQUEST['event_id'] ) && is_numeric($_REQUEST['event_id']) && !is_object($EM_Event) ){ + $EM_Event = new EM_Event($_REQUEST['event_id']); + }elseif( isset($_REQUEST['post']) && (get_post_type($_REQUEST['post']) == 'event' || get_post_type($_REQUEST['post']) == 'event-recurring') ){ + $EM_Event = em_get_event($_REQUEST['post'], 'post_id'); + }elseif ( !empty($_REQUEST['event_slug']) && EM_MS_GLOBAL && is_main_blog() && !get_site_option('dbem_ms_global_events_links')) { + // single event page for a subsite event being shown on the main blog + global $wpdb; + $matches = array(); + if( preg_match('/\-([0-9]+)$/', $_REQUEST['event_slug'], $matches) ){ + $event_id = $matches[1]; + }else{ + $event_id = $wpdb->get_var('SELECT event_id FROM '.EM_EVENTS_TABLE." WHERE event_slug='{$_REQUEST['event_slug']}' AND blog_id!=".get_current_blog_id()); + } + $EM_Event = em_get_event($event_id); + } + if( isset($_REQUEST['location_id']) && is_numeric($_REQUEST['location_id']) && !is_object($EM_Location) ){ + $EM_Location = new EM_Location($_REQUEST['location_id']); + }elseif( isset($_REQUEST['post']) && get_post_type($_REQUEST['post']) == 'location' ){ + $EM_Location = em_get_location($_REQUEST['post'], 'post_id'); + }elseif ( !empty($_REQUEST['location_slug']) && EM_MS_GLOBAL && is_main_blog() && !get_site_option('dbem_ms_global_locations_links')) { + // single event page for a subsite event being shown on the main blog + global $wpdb; + $matches = array(); + if( preg_match('/\-([0-9]+)$/', $_REQUEST['location_slug'], $matches) ){ + $location_id = $matches[1]; + }else{ + $location_id = $wpdb->get_var('SELECT location_id FROM '.EM_LOCATIONS_TABLE." WHERE location_slug='{$_REQUEST['location_slug']}' AND blog_id!=".get_current_blog_id()); + } + $EM_Location = em_get_location($location_id); + } + if( is_user_logged_in() || (!empty($_REQUEST['person_id']) && is_numeric($_REQUEST['person_id'])) ){ + //make the request id take priority, this shouldn't make it into unwanted objects if they use theobj::get_person(). + if( !empty($_REQUEST['person_id']) ){ + $EM_Person = new EM_Person( $_REQUEST['person_id'] ); + }else{ + $EM_Person = new EM_Person( get_current_user_id() ); + } + } + if( isset($_REQUEST['booking_id']) && is_numeric($_REQUEST['booking_id']) && !is_object($_REQUEST['booking_id']) ){ + $EM_Booking = new EM_Booking($_REQUEST['booking_id']); + } + if( isset($_REQUEST['category_id']) && is_numeric($_REQUEST['category_id']) && !is_object($_REQUEST['category_id']) ){ + $EM_Category = new EM_Category($_REQUEST['category_id']); + }elseif( isset($_REQUEST['category_slug']) && !is_object($EM_Category) ){ + $EM_Category = new EM_Category( $_REQUEST['category_slug'] ); + } + if( isset($_REQUEST['ticket_id']) && is_numeric($_REQUEST['ticket_id']) && !is_object($_REQUEST['ticket_id']) ){ + $EM_Ticket = new EM_Ticket($_REQUEST['ticket_id']); + } + define('EM_LOADED',true); + } +} +add_action('template_redirect', 'em_load_event', 1); +if(is_admin()){ add_action('init', 'em_load_event', 2); } + +/** + * Catches various option names and returns a network-wide option value instead of the individual blog option. Uses the magc __call function to catch unprecedented names. + * @author marcus + * + */ +class EM_MS_Globals { + function __construct(){ add_action( 'init', array(&$this, 'add_filters'), 1); } + function add_filters(){ + foreach( $this->get_globals() as $global_option_name ){ + add_filter('pre_option_'.$global_option_name, array(&$this, 'pre_option_'.$global_option_name), 1,1); + add_filter('pre_update_option_'.$global_option_name, array(&$this, 'pre_update_option_'.$global_option_name), 1,2); + add_action('add_option_'.$global_option_name, array(&$this, 'add_option_'.$global_option_name), 1,1); + } + } + function get_globals(){ + $globals = array( + //multisite settings + 'dbem_ms_global_table', 'dbem_ms_global_caps', + 'dbem_ms_global_events', 'dbem_ms_global_events_links','dbem_ms_events_slug', + 'dbem_ms_global_locations','dbem_ms_global_locations_links','dbem_ms_locations_slug','dbem_ms_mainblog_locations', + //mail + 'dbem_rsvp_mail_port', 'dbem_mail_sender_address', 'dbem_smtp_password', 'dbem_smtp_username','dbem_smtp_host', 'dbem_mail_sender_name','dbem_smtp_host','dbem_rsvp_mail_send_method','dbem_rsvp_mail_SMTPAuth', + //images + 'dbem_image_max_width','dbem_image_max_height','dbem_image_max_size' + ); + if( EM_MS_GLOBAL ){ + $globals[] = 'dbem_taxonomy_category_slug'; + } + return apply_filters('em_ms_globals', $globals); + } + function __call($filter_name, $value){ + if( strstr($filter_name, 'pre_option_') !== false ){ + $return = get_site_option(str_replace('pre_option_','',$filter_name)); + return $return; + }elseif( strstr($filter_name, 'pre_update_option_') !== false ){ + if( is_super_admin() ){ + update_site_option(str_replace('pre_update_option_','',$filter_name), $value[0]); + } + return $value[1]; + }elseif( strstr($filter_name, 'add_option_') !== false ){ + if( is_super_admin() ){ + update_site_option(str_replace('add_option_','',$filter_name),$value[0]); + } + delete_option(str_replace('pre_option_','',$filter_name)); + return; + } + return $value[0]; + } +} +if( defined('MULTISITE') && MULTISITE ){ + global $EM_MS_Globals; + $EM_MS_Globals = new EM_MS_Globals(); +} + +/** + * Works much like locate_template, except it takes a string instead of an array of templates, we only need to load one. + * @param string $template_name + * @param boolean $load + * @uses locate_template() + * @return string + */ +function em_locate_template( $template_name, $load=false, $args = array() ) { + //First we check if there are overriding tempates in the child or parent theme + $located = locate_template(array('plugins/events-manager/'.$template_name)); + if( !$located ){ + if ( file_exists(EM_DIR.'/templates/'.$template_name) ) { + $located = EM_DIR.'/templates/'.$template_name; + } + } + $located = apply_filters('em_locate_template', $located, $template_name, $load, $args); + if( $located && $load ){ + if( is_array($args) ) extract($args); + include($located); + } + return $located; +} + +/** + * Quick class to dynamically catch wp_options that are EM formats and need replacing with template files. + * Since the options filter doesn't have a catchall filter, we send all filters to the __call function and figure out the option that way. + */ +class EM_Formats { + function __construct(){ add_action( 'template_redirect', array(&$this, 'add_filters')); } + function add_filters(){ + //you can hook into this filter and activate the format options you want to override by supplying the wp option names in an array, just like in the database. + $formats = apply_filters('em_formats_filter', array()); + foreach( $formats as $format_name ){ + add_filter('pre_option_'.$format_name, array(&$this, $format_name), 1,1); + } + } + function __call( $name, $value ){ + $format = em_locate_template( 'formats/'.substr($name, 5).'.php' ); + if( $format ){ + ob_start(); + include($format); + $value[0] = ob_get_clean(); + } + return $value[0]; + } +} +global $EM_Formats; +$EM_Formats = new EM_Formats(); + +/** + * Catches the event rss feed requests + */ +function em_rss() { + global $post, $wp_query; + if ( is_object($post) && $post->ID == get_option('dbem_events_page') && $wp_query->get('rss') ) { + ob_start(); + em_locate_template('templates/rss.php', true); + echo apply_filters('em_rss', ob_get_clean()); + die (); + } +} +add_action ( 'template_redirect', 'em_rss' ); + +/** + * Monitors event saves and changes the rss pubdate so it's current + * @param boolean $result + * @return boolean + */ +function em_rss_pubdate_change($result){ + if($result) update_option('em_rss_pubdate', date('D, d M Y H:i:s ', current_time('timestamp', true)).'GMT'); + return $result; +} +add_filter('em_event_save', 'em_rss_pubdate_change', 10,1); + +function em_admin_bar_mod($wp_admin_bar){ + $wp_admin_bar->add_menu( array( + 'parent' => 'network-admin', + 'id' => 'network-admin-em', + 'title' => __( 'Events Manager','dbem' ), + 'href' => network_admin_url('admin.php?page=events-manager-options'), + ) ); +} +add_action( 'admin_bar_menu', 'em_admin_bar_mod', 21 ); + + +function em_activate() { + update_option('dbem_flush_needed',1); +} +register_activation_hook( __FILE__,'em_activate'); + +/* Creating the wp_events table to store event data*/ +function em_deactivate() { + global $wp_rewrite; + $wp_rewrite->flush_rules(); +} +register_deactivation_hook( __FILE__,'em_deactivate'); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/css/events_manager.css b/wp-content/plugins/events-manager/includes/css/events_manager.css new file mode 100644 index 0000000..3440179 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/css/events_manager.css @@ -0,0 +1,142 @@ +/* Warnings */ + .em-warning { margin:10px 0px; padding:10px; color:#333; border-radius:3px; } + .em-warning p { margin:10px 0px !important; padding:0px; color:#333 } + .em-warning-errors { background-color:#FFEBE8; border:1px solid #C00; } + .em-warning-confirms { background-color:#f1fff0; border:1px solid #a8d144; } + a.em-button { float:right; padding:5px 10px; margin:5px; background:#EEE; color:#333; border:1px solid #CCC; border-radius:3px; display:inline-block; text-decoration:none; } + a.em-button:hover { text-decoration:none; } + +/* Booking Form */ + .em-booking { margin:15px 0px 10px 0px; position:relative; } + .em-booking-form { position:relative; clear:left; } + .em-booking-form-details { padding:10px; width:360px; float:left; } + .em-booking-form-details input.input, .em-booking-form-details textarea { width:250px; } + .em-booking-form-details p { clear:left; } + .em-booking-form-details label { display:block; float:left; } + .em-booking-form-details span.input-group input { margin-left:-20px; } + .em-booking-form-details span.input-group { display:block; margin-left:120px; } + .em-booking-form-details .em-booking-submit { width:auto; } + .em-booking-form label { display:inline-block; width:100px; } + /* Tickets */ + .em-tickets { margin-bottom:20px; } + /* Message Errors */ + div.em-booking-message { margin:10px 0px; padding:10px; color:#333; border-radius:3px; } + div.em-booking-message p { margin:10px 0px !important; padding:0px; color:#333; } + div.em-booking-message-success { background-color:#f1fff0; border:1px solid #a8d144; } + div.em-booking-message-error { background-color:#FFEBE8; border:1px solid #C00; } + /* Optional Login Form */ + div.em-booking-login { padding: 10px 10px 10px 20px; margin: 0px 0px 0px 390px; border-left: 1px solid black; } + div.em-booking-login label { display:inline-block; width:90px; } + div.em-booking-login p{ margin:10px 0px !important; padding:0px !important; } + div.em-booking-login input { margin:0px; } + +/* Add Event Form */ + #event-form h4 { margin:25px 0px 15px 0px; font-weight:bold; } + #event-form p { margin-top:10px; } + #event-form .inside { clear:both; margin-bottom:20px; } + /* Event Details */ + #event-form #event-name { width:80%; padding:2px; } + #event-form .event-extra-details { margin-top:20px; } + #event-form .event-extra-details select { vertical-align:top; } + /*Tickets*/ + .em-tickets-row .ticket-status span.ticket_on { display:block; width:10px; height:10px; background:green; } + .em-tickets-row .ticket-status span.ticket_off { display:block; width:10px; height:10px; background:red; } + .em-tickets-row .ticket-status span.ticket_new { display:block; width:10px; height:10px; background:grey; } + #event-tickets th { width:auto; } + #event-tickets th.ticket-status { width:20px; } + /* Overlay Form */ + #em-tickets-form input[type=text] { width:97%; padding:2px; color:#666; } + #em-tickets-form #wp-submit { display:block; clear:both; } + /*Inline Form */ + .em-ticket-form { padding:0px 10px; margin-bottom:10px; width:400px; } + .em-ticket-form label { display:inline-block; min-width:70px; padding-right:10px; } + .em-ticket-form div { clear:both; margin:5px 0px;} + .em-ticket-form input.name { width:300px; } + .em-ticket-form .space-limits input { width:40px; } + .em-ticket-form .date-limits input { width:100px; } + .em-ticket-form div.description { margin-top:9px;} + .em-ticket-form textarea { width:100%; margin-top:7px; } + /* The editor */ + #wp-em-editor-content-wrap table { margin-bottom:0px; } + /* Location form */ + #event-form table.em-location-data td, #event-form table.em-location-data th { vertical-align:top; border:none; } + #event-form table.em-location-data { width:50%; float:left; border:none; } + #event-form .em-location-map-container, #event-form .em-location-map-404, #event-form .em-location-map-content { width: 400px; height: 300px; float:left; } + #event-form .em-location-map-404 { vertical-align:middle; text-align: center; } +/* Booking Admin */ + /* Bookings Table */ + .em_obj { position:relative; } + .em-bookings-table .em-bookings-table-export, .em-bookings-table .em-bookings-table-settings { float:left; display:block; margin:2px 5px; width:25px; height:25px; } + .em-bookings-table .em-bookings-table-export { background:url(../images/csv.png) 0px 0px no-repeat; } + .em-bookings-table .em-bookings-table-settings { background:url(../images/settings.png) 0px 0px no-repeat; } + /* Settings & Export */ + #em-bookings-table-export, #em-bookings-table-settings { width:500px; height: 75%; } + #em-bookings-table-export form, #em-bookings-table-settings form { height: 100%; overflow:auto; } + /* Sorting */ + .em-bookings-table-overlay ul.em-bookings-cols-sortable { list-style-type: none; margin: 0; padding: 0 0 10px; float: left; margin-right: 10px; } + .em-bookings-table-overlay ul.em-bookings-cols-sortable li { margin: 0 5px 5px 5px; padding: 3px 8px; font-size: 12px; width: 120px; font-weight:none; cursor:move; } + .em-bookings-table-overlay ul.em-bookings-cols-sortable li.ui-state-highlight {} + .em-bookings-table-overlay ul.em-bookings-cols-sortable li.ui-state-default { color:#999; } + #em-bookings-export-cols-inactive, #em-bookings-cols-inactive { width:300px; } + #em-bookings-export-cols-inactive li, #em-bookings-cols-inactive li { float:left; } + /* Single Booking Edit View */ + #em-bookings-admin-booking .em-booking-single-info { display:none; } + +/* Printable stuff */ + body#printable { font-family: Gill Sans, Helvetica, Arial, sans-serif; text-align: center; } + body#printable #container { margin: 0 auto; width: 780px; text-align: left; } + table#bookings-table { width: 600px; border-spacing: 0px; } + table#bookings-table td { padding: 5px 0; } + table#bookings-table td.spaces-number { text-align: right; padding-right: 20px; } + table#bookings-table th { text-align: left; margin-left: 5px; } + table#bookings-table tr#booked-spaces td{ border-top: 2px solid #999; } + table#bookings-table td.total-label { text-align: right; } + table#bookings-table tr#booked-spaces td.spaces-number, table#bookings-table tr#available-spaces td.spaces-number { font-weight: bold; } + table#em-location-data th { text-align: right; width: 50px; } + +/* Calendar Styles */ + table.em-calendar td { padding: 2px 4px; text-align: center; } + table.em-calendar.table tr.days-names { font-weight: bold; } + table.em-calendar td.eventless-pre, .em-calendar td.eventless-post { color: #ccc; } + table.em-calendar td.eventful-pre a, table.em-calendar td.eventful-post a{ color: #aaa; text-decoration:underline; } + table.em-calendar td.eventful a, table.em-calendar td.eventful-today a { color: #FD7E29; } + table.em-calendar td.eventful-today a { font-weight: bold; } + table.em-calendar td.eventless-today { background-color: #CFCFCF; } + table.em-calendar thead { font-size: 120%; font-weight: bold; } + table.fullcalendar { border-collapse: collapse; } + table.fullcalendar td { text-align: left; width: 50px; height: 50px; border: 1px solid #888; } + div.em-calendar-wrapper { position:relative; } + div#em-loading { position:absolute; width:100%; height:100%; background:#FFFFFF url(../images/loading.gif) 50% 50% no-repeat; left:0px; top:0px; opacity:0.8; filter:alpha(opacity=80); z-index:9999999999; } +/* +Maps - if the info balloons don't look right on your site, chances are it's a CSS issue. +Google is VERY sensitive to CSS rules for the infowindows, making it hard to accommodate every theme in WP. +Please edit your theme's CSS to override this +*/ + .em-map-balloon .em-map-balloon-content { + margin:0px 0px 0px 0px !important; + padding:0px 0px 20px 0px !important; + font-size:12px !important; + color:#000000 !important; + width:auto !important; + max-width:none !important; + height:auto !important; + max-height:none !important; + } + .em-location-map img, .em-locations-map img, #em-map img { + max-width:none !important; + background:none !important; + border:none !important; + margin:0 !important; + padding:0 !important; + height:auto !important; + width:auto !important; + } + +/* Time Picker */ + #start-time, #end-time { width:7em;} + #start-time.error, #end-time.error { border:#cc0000 1px solid; } + div.time-picker { position: absolute; height: 191px; width:5em; /* needed for IE */ overflow: auto; background: #fff; border: 1px solid #aaa; z-index: 99; margin: 0; } + div.time-picker-12hours { width:7em; /* needed for IE */ } + div.time-picker ul { list-style-type: none; margin: 0; padding: 0; } + div.time-picker li { cursor: pointer; height: 10px; font: 12px/1 Helvetica, Arial, sans-serif; padding: 4px 3px; } + div.time-picker li.selected { background: #0063CE; color: #fff; } \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/css/events_manager_admin.css b/wp-content/plugins/events-manager/includes/css/events_manager_admin.css new file mode 100644 index 0000000..dc703a8 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/css/events_manager_admin.css @@ -0,0 +1,160 @@ +#location_info td { vertical-align:top; text-align:left; } +#location_info th { vertical-align:top; text-align:left; padding:5px 10px 0 0; } + +p.warning { + border: 2px solid #FD0000; + background: #FF7146; + color: #fff; + font-weight: bold; + padding: 5px; +} +.debug{ + color: green; + background: #B7F98C; + margin: 15px; + padding: 10px; + border: 1px solid #629948; +} +.switch-tab { + background: #aaa; + width: 100px; + float: right; + text-align: center; + margin: 3px 1px 0 5px; + padding: 2px; +} +.switch-tab a { + color: #fff; + text-decoration: none; +} +.switch-tab a:hover { + color: #D54E21; + +} +#events-pagination { + text-align: center; + +} +#events-pagination a { + margin: 0 20px 0 20px; + text-decoration: none; + width: 80px; + padding: 3px 0; + background: #FAF4B7; + border: 1px solid #ccc; + border-top: none; +} +#new-event { + float: left; + +} +div#icon-events{ background:url('../images/calendar-32.png') no-repeat center; } +div#icon-bookings{ background:url('../images/bookings-32.png') no-repeat center; } + +/* Events List */ +table.events-table tr.pending { background:#FCFFA8 } +table.events-table tr.past { background:#E4E4E4 } +table.events-table .category { color:#888; } + +/* Events Add Page */ +#event-form #event-name, #location-form, #location-name { margin: 2px 0 7px; padding: 6px 5px; width: 98%; } + /*Locations*/ + #em-location-data table { float:left; margin:0px 15px 0px 0px; } + /* Location form */ + #em-location-data table.em-location-data td, #em-location-data table.em-location-data th { vertical-align:top; border:none; } + #em-location-data table.em-location-data { width:50%; float:left; border:none; } + #em-location-data .em-location-map-container, #em-location-data .em-location-map-404, #em-location-data .em-location-map-content { width: 400px; height: 300px; float:left; } + #em-location-data .em-location-map-404 { vertical-align:middle; text-align: center; } + /*Bookings */ + #event-rsvp-box { margin:10px; } + /*Tickets*/ + .em-tickets-row .ticket-status span.ticket_on { display:block; width:10px; height:10px; background:green; } + .em-tickets-row .ticket-status span.ticket_off { display:block; width:10px; height:10px; background:red; } + .em-tickets-row .ticket-status span.ticket_new { display:block; width:10px; height:10px; background:grey; } + #event-tickets th { width:auto; } + #event-tickets th.ticket-status { width:20px; } + /* Overlay Form */ + #em-tickets-form input[type=text] { width:97%; padding:2px; color:#666; } + #em-tickets-form #wp-submit { display:block; clear:both; } + /*Inline Form */ + .em-ticket-form { padding:0px 10px; margin-bottom:10px; width:400px; } + .em-ticket-form label { display:inline-block; min-width:70px; padding-right:10px; } + .em-ticket-form div { clear:both; margin:5px 0px;} + .em-ticket-form input.name { width:300px; } + .em-ticket-form .space-limits input { width:40px; } + .em-ticket-form .date-limits input { width:100px; } + .em-ticket-form div.description { margin-top:9px;} + .em-ticket-form textarea { width:100%; margin-top:7px; } + +/* Booking Form */ + div#em-loading { position:absolute; width:100%; height:100%; background:#FFFFFF url(../images/loading.gif) 50% 50% no-repeat; left:0px; top:0px; opacity:0.8; filter:alpha(opacity=80)} + .em-booking { margin:15px 0px 10px 0px; position:relative; } + .em-booking-form { position:relative; clear:left; } + .em-booking-form-details { padding:10px; width:360px; float:left; } + .em-booking-form-details input.input, .em-booking-form-details textarea { width:250px; } + .em-booking-form-details p { clear:left; } + .em-booking-form-details label { display:block; float:left; } + .em-booking-form-details span.input-group input { margin-left:-20px; } + .em-booking-form-details span.input-group { display:block; margin-left:120px; } + .em-booking-form-details .em-booking-submit { width:auto; } + .em-booking-form label { display:inline-block; width:100px; } + /* Message Errors */ + div.em-booking-message { margin:10px 0px; padding:10px; color:#333; border-radius:3px; } + div.em-booking-message p { margin:10px 0px !important; padding:0px; color:#333; } + div.em-booking-message-success { background-color:#f1fff0; border:1px solid #a8d144; } + div.em-booking-message-error { background-color:#FFEBE8; border:1px solid #C00; } + +/* Booking admin area */ +#em-booking-details .inside { padding:5px 10px; } +.stuffbox .inside h4 { font-size:16px; font-weight:normal; margin:10px 0px 20px; font-weight:bold; } + /* Ticket table info */ + table.em-tickets-bookings-table { width:90%; border:1px #efefef solid; margin:10px 0px; } + table.em-tickets-bookings-table th, table.em-tickets-bookings-table td { padding:5px 5px; margin:0px; } + table.em-tickets-bookings-table thead th, table.em-tickets-bookings-table tfoot th { background:#cdcdcd; text-align:center } + table.em-tickets-bookings-table tbody td.ticket-type { text-align:left; padding-left:10px; } + table.em-tickets-bookings-table tbody td { text-align:center; } + /* Bookings Table */ + .em-bookings-table .em-bookings-table-export, .em-bookings-table .em-bookings-table-settings { float:left; display:block; margin:2px 5px; width:25px; height:25px; } + .em-bookings-table .em-bookings-table-export { background:url(../images/csv.png) 0px 0px no-repeat; } + .em-bookings-table .em-bookings-table-settings { background:url(../images/settings.png) 0px 0px no-repeat; } + /* Settings & Export */ + #em-bookings-table-export, #em-bookings-table-settings { width:500px; height: 75%; } + #em-bookings-table-export form, #em-bookings-table-settings form { height: 100%; overflow:auto; } + /* Sorting */ + .em-bookings-table-overlay ul.em-bookings-cols-sortable { list-style-type: none; margin: 0; padding: 0 0 10px; float: left; margin-right: 10px; } + .em-bookings-table-overlay ul.em-bookings-cols-sortable li { margin: 0 5px 5px 5px; padding: 3px 8px; font-size: 12px; width: 120px; font-weight:none; cursor:move; } + .em-bookings-table-overlay ul.em-bookings-cols-sortable li.ui-state-highlight {} + .em-bookings-table-overlay ul.em-bookings-cols-sortable li.ui-state-default { color:#999; } + #em-bookings-export-cols-inactive, #em-bookings-cols-inactive { width:300px; } + #em-bookings-export-cols-inactive li, #em-bookings-cols-inactive li { float:left; } + /* Single Booking Edit View */ + #em-bookings-admin-booking .em-booking-single-info { display:none; } + +/* Google Map Object */ +#location-balloon-content h3 { background:none; text-shadow:none; } + +/* Options Page */ +#dbem_options_form td, #dbem_options_form th { vertical-align:top; } +table.em-caps-table th, table.em-caps-table td { width:auto !important; } + +/* Widget Tables CSS */ +.em_obj .table-wrap{ + position:relative; +} +.em_obj #em-loading { position:absolute; width:100%; height:100%; background:#FFFFFF url(../images/loading.gif) 50% 50% no-repeat; left:0px; top:0px; opacity:0.8; filter:alpha(opacity=80)} + +/*Help Docs*/ +.em-docs > h3 { font-size:18px; display:block; margin-top:50px; } +.em-docs dl, .em-docs h2, .em-docs h3, .em-docs h4, .em-docs dl { clear:left; } +.em-docs dl dt { display:block; float:left; min-width:160px; margin-right:10px; } +.em-docs dl dd { display:block; margin-left:170px; } +.em-docs-atts dl dt { min-width:110px !important; } +.em-docs-atts dl dd { margin-left:120px !important; } + +/* Time Picker */ +.em-time-input.error { border:#cc0000 1px solid; } +div.time-picker { position: absolute; height: 191px; width:4.5em; /* needed for IE */ overflow: auto; background: #fff; border: 1px solid #aaa; z-index: 99; margin: 0; } +div.time-picker-12hours { width:6.5em; /* needed for IE */ } +div.time-picker ul { list-style-type: none; margin: 0; padding: 0; } +div.time-picker li { cursor: pointer; height: 10px; font: 12px/1 Helvetica, Arial, sans-serif; padding: 4px 3px; } +div.time-picker li.selected { background: #0063CE; color: #fff; } \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/css/images/loading.gif b/wp-content/plugins/events-manager/includes/css/images/loading.gif new file mode 100644 index 0000000..68b5597 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/loading.gif differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/wp-content/plugins/events-manager/includes/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png new file mode 100644 index 0000000..954e22d Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-bg_diagonals-thick_20_666666_40x40.png b/wp-content/plugins/events-manager/includes/css/images/ui-bg_diagonals-thick_20_666666_40x40.png new file mode 100644 index 0000000..64ece57 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-bg_diagonals-thick_20_666666_40x40.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-bg_flat_10_000000_40x100.png b/wp-content/plugins/events-manager/includes/css/images/ui-bg_flat_10_000000_40x100.png new file mode 100644 index 0000000..abdc010 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-bg_flat_10_000000_40x100.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-bg_glass_100_f6f6f6_1x400.png b/wp-content/plugins/events-manager/includes/css/images/ui-bg_glass_100_f6f6f6_1x400.png new file mode 100644 index 0000000..9b383f4 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-bg_glass_100_f6f6f6_1x400.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-bg_glass_100_fdf5ce_1x400.png b/wp-content/plugins/events-manager/includes/css/images/ui-bg_glass_100_fdf5ce_1x400.png new file mode 100644 index 0000000..a23baad Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-bg_glass_100_fdf5ce_1x400.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-bg_glass_65_ffffff_1x400.png b/wp-content/plugins/events-manager/includes/css/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000..42ccba2 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/wp-content/plugins/events-manager/includes/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png new file mode 100644 index 0000000..39d5824 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/wp-content/plugins/events-manager/includes/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png new file mode 100644 index 0000000..f127367 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/wp-content/plugins/events-manager/includes/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png new file mode 100644 index 0000000..359397a Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-icons_222222_256x240.png b/wp-content/plugins/events-manager/includes/css/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..b273ff1 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-icons_222222_256x240.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-icons_228ef1_256x240.png b/wp-content/plugins/events-manager/includes/css/images/ui-icons_228ef1_256x240.png new file mode 100644 index 0000000..a641a37 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-icons_228ef1_256x240.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-icons_ef8c08_256x240.png b/wp-content/plugins/events-manager/includes/css/images/ui-icons_ef8c08_256x240.png new file mode 100644 index 0000000..85e63e9 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-icons_ef8c08_256x240.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-icons_ffd27a_256x240.png b/wp-content/plugins/events-manager/includes/css/images/ui-icons_ffd27a_256x240.png new file mode 100644 index 0000000..e117eff Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-icons_ffd27a_256x240.png differ diff --git a/wp-content/plugins/events-manager/includes/css/images/ui-icons_ffffff_256x240.png b/wp-content/plugins/events-manager/includes/css/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000..42f8f99 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/css/images/ui-icons_ffffff_256x240.png differ diff --git a/wp-content/plugins/events-manager/includes/css/ui-lightness.css b/wp-content/plugins/events-manager/includes/css/ui-lightness.css new file mode 100644 index 0000000..58bfd8b --- /dev/null +++ b/wp-content/plugins/events-manager/includes/css/ui-lightness.css @@ -0,0 +1,565 @@ +/*! + * jQuery UI CSS Framework 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } +.ui-helper-clearfix:after { clear: both; } +.ui-helper-clearfix { zoom: 1; } +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/*! + * jQuery UI CSS Framework 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content a { color: #333333; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } +.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*! + * jQuery UI Resizable 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*! + * jQuery UI Selectable 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } +/*! + * jQuery UI Accordion 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; } +/*! + * jQuery UI Autocomplete 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ +.ui-autocomplete { position: absolute; cursor: default; } + +/* workarounds */ +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ + +/* + * jQuery UI Menu 1.8.19 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; + float: left; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +/*! + * jQuery UI Button 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ +/*! + * jQuery UI Dialog 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/*! + * jQuery UI Slider 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/*! + * jQuery UI Tabs 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } +/*! + * jQuery UI Datepicker 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/*! + * jQuery UI Progressbar 1.8.19 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; overflow: hidden; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/images/baloon.png b/wp-content/plugins/events-manager/includes/images/baloon.png new file mode 100644 index 0000000..a000455 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/baloon.png differ diff --git a/wp-content/plugins/events-manager/includes/images/bookings-16.png b/wp-content/plugins/events-manager/includes/images/bookings-16.png new file mode 100644 index 0000000..44a32b2 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/bookings-16.png differ diff --git a/wp-content/plugins/events-manager/includes/images/bookings-32.png b/wp-content/plugins/events-manager/includes/images/bookings-32.png new file mode 100644 index 0000000..eb57596 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/bookings-32.png differ diff --git a/wp-content/plugins/events-manager/includes/images/calendar-16.png b/wp-content/plugins/events-manager/includes/images/calendar-16.png new file mode 100644 index 0000000..0fef769 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/calendar-16.png differ diff --git a/wp-content/plugins/events-manager/includes/images/calendar-32.png b/wp-content/plugins/events-manager/includes/images/calendar-32.png new file mode 100644 index 0000000..e2e7b91 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/calendar-32.png differ diff --git a/wp-content/plugins/events-manager/includes/images/close.png b/wp-content/plugins/events-manager/includes/images/close.png new file mode 100644 index 0000000..d247e09 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/close.png differ diff --git a/wp-content/plugins/events-manager/includes/images/csv.png b/wp-content/plugins/events-manager/includes/images/csv.png new file mode 100644 index 0000000..b294e3e Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/csv.png differ diff --git a/wp-content/plugins/events-manager/includes/images/event-caps-source.png b/wp-content/plugins/events-manager/includes/images/event-caps-source.png new file mode 100644 index 0000000..5a3113d Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/event-caps-source.png differ diff --git a/wp-content/plugins/events-manager/includes/images/event-caps.jpg b/wp-content/plugins/events-manager/includes/images/event-caps.jpg new file mode 100644 index 0000000..7183bd4 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/event-caps.jpg differ diff --git a/wp-content/plugins/events-manager/includes/images/event-perms-source.png b/wp-content/plugins/events-manager/includes/images/event-perms-source.png new file mode 100644 index 0000000..429b1f4 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/event-perms-source.png differ diff --git a/wp-content/plugins/events-manager/includes/images/loading.gif b/wp-content/plugins/events-manager/includes/images/loading.gif new file mode 100644 index 0000000..68b5597 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/loading.gif differ diff --git a/wp-content/plugins/events-manager/includes/images/settings.png b/wp-content/plugins/events-manager/includes/images/settings.png new file mode 100644 index 0000000..ecc2a9a Binary files /dev/null and b/wp-content/plugins/events-manager/includes/images/settings.png differ diff --git a/wp-content/plugins/events-manager/includes/js/bookingsform.js b/wp-content/plugins/events-manager/includes/js/bookingsform.js new file mode 100644 index 0000000..9f11752 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/bookingsform.js @@ -0,0 +1,59 @@ +var em_booking_doing_ajax = false; +$('#em-booking-form').addClass('em-booking-form'); //backward compatability +$('.em-booking-form').submit( function(e){ + e.preventDefault(); + var em_booking_form = $(this); + $.ajax({ + url: EM.bookingajaxurl, + data: em_booking_form.serializeArray(), + dataType: 'jsonp', + type:'post', + beforeSend: function(formData, jqForm, options) { + if(em_booking_doing_ajax){ + alert(EM.bookingInProgress); + return false; + } + em_booking_doing_ajax = true; + $('.em-booking-message').remove(); + em_booking_form.parent('.em-booking').append('
      '); + }, + success : function(response, statusText, xhr, $form) { + $('#em-loading').remove(); + $('.em-booking-message').remove(); + //show error or success message + if(response.result){ + $('
      '+response.message+'
      ').insertBefore(em_booking_form); + em_booking_form.hide(); + $('.em-booking-login').hide(); + $(document).trigger('em_booking_success', [response]); + }else{ + if( response.errors != null ){ + if( $.isArray(response.errors) && response.errors.length > 0 ){ + var error_msg; + response.errors.each(function(i, el){ + error_msg = error_msg + el; + }); + $('
      '+error_msg.errors+'
      ').insertBefore(em_booking_form); + }else{ + $('
      '+response.errors+'
      ').insertBefore(em_booking_form); + } + }else{ + $('
      '+response.message+'
      ').insertBefore(em_booking_form); + } + } + $('html, body').animate({ scrollTop: em_booking_form.parent('.em-booking').offset().top - 30 }); //sends user back to top of form + //run extra actions after showing the message here + if( response.gateway != null ){ + $(document).trigger('em_booking_gateway_add_'+response.gateway, [response]); + } + if( !response.result && typeof Recaptcha != 'undefined'){ + Recaptcha.reload(); + } + }, + complete : function(){ + em_booking_doing_ajax = false; + $('#em-loading').remove(); + } + }); + return false; +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/categories-admin.js b/wp-content/plugins/events-manager/includes/js/categories-admin.js new file mode 100644 index 0000000..c5f3ae9 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/categories-admin.js @@ -0,0 +1,53 @@ +jQuery(document).ready(function($) { + //color picker + var f = $.farbtastic('#picker'); + var p = $('#picker').css('opacity', 0.25); + var selected; + $('.colorwell').each(function () { f.linkTo(this); $(this).css('opacity', 0.75); }).focus(function() { + if (selected) { $(selected).css('opacity', 0.75).removeClass('colorwell-selected'); } + f.linkTo(this); + p.css('opacity', 1); + $(selected = this).css('opacity', 1).addClass('colorwell-selected'); + }); + $('.colorwell').click(function() { + var position = $(selected = this).position(); + $('#picker').css('left', (position.left + 150) ); + $('#picker').css('top', position.top); + $('#picker').fadeIn(900,function (){ + $('#picker').css('display', 'inline'); + }); + }).blur(function(){ + $('#picker').fadeOut('fast'); + $('#picker').css('display', 'none'); + }); + + //image button upload - thanks Brad Williams, Ozh Richard, and Justin Tadlock! + var formfield = null; + + $('#upload_image_button').click(function() { + $('html').addClass('Image'); + formfield = $('#category-image').attr('name'); + tb_show('', 'media-upload.php?type=image&TB_iframe=true'); + return false; + }); + + // user inserts file into post. only run custom if user started process using the above process + // window.send_to_editor(html) is how wp would normally handle the received data + window.original_send_to_editor = window.send_to_editor; + window.send_to_editor = function(html){ + var fileurl; + + if (formfield != null) { + fileurl = $('img',html).attr('src'); + + $('#category-image').val(fileurl); + + tb_remove(); + + $('html').removeClass('Image'); + formfield = null; + } else { + window.original_send_to_editor(html); + } + }; +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/events-manager-source.js b/wp-content/plugins/events-manager/includes/js/events-manager-source.js new file mode 100644 index 0000000..cc2dafb --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/events-manager-source.js @@ -0,0 +1,851 @@ +var load_ui_css = false; //load jquery ui css? +jQuery(document).ready( function($){ + /* Time Entry */ + if( $("#start-time").length > 0 ){ + $("#start-time, #end-time").timePicker({ + show24Hours: EM.show24hours == 1, + step:15 + }); + // Store time used by duration. + var oldTime = $.timePicker("#start-time").getTime(); + // Keep the duration between the two inputs. + $("#start-time").change(function() { + if ($("#end-time").val()) { // Only update when second input has a value. + // Calculate duration. + var duration = ($.timePicker("#end-time").getTime() - oldTime); + var time = $.timePicker("#start-time").getTime(); + // Calculate and update the time in the second input. + $.timePicker("#end-time").setTime(new Date(new Date(time.getTime() + duration))); + oldTime = time; + } + }); + // Validate. + $("#end-time").change(function() { + if($.timePicker("#start-time").getTime() > $.timePicker(this).getTime()) { $(this).addClass("error"); } + else { $(this).removeClass("error"); } + }); + //Sort out all day checkbox + $('#em-time-all-day').change(function(){ + if( $('#em-time-all-day').is(':checked') ){ + $("#start-time").css('background-color','#ccc'); + $.timePicker("#start-time").setTime(new Date(0,0,0,0,0,0)); + $("#end-time").css('background-color','#ccc'); + $.timePicker("#end-time").setTime(new Date(0,0,0,0,0,0)); + }else{ + $("#end-time").css('background-color','#fff'); + $("#start-time").css('background-color','#fff'); + } + }).trigger('change'); + } + /* Calendar AJAX */ + $('.em-calendar-wrapper a').unbind("click"); + $('.em-calendar-wrapper a').undelegate("click"); + $('.em-calendar-wrapper').delegate('a.em-calnav, a.em-calnav', 'click', function(e){ + e.preventDefault(); + $(this).closest('.em-calendar-wrapper').prepend('
      '); + var url = em_ajaxify($(this).attr('href')); + $(this).closest('.em-calendar-wrapper').load(url, function(){$(this).trigger('em_calendar_load');}); + } ); + + //Events Search + $('.em-events-search-form select[name=country]').change( function(){ + $('.em-events-search select[name=state]').html(''); + $('.em-events-search select[name=region]').html(''); + $('.em-events-search select[name=town]').html(''); + var data = { + action : 'search_states', + country : $(this).val(), + return_html : true + }; + $('.em-events-search select[name=state]').load( EM.ajaxurl, data ); + data.action = 'search_regions'; + $('.em-events-search select[name=region]').load( EM.ajaxurl, data ); + data.action = 'search_towns'; + $('.em-events-search select[name=town]').load( EM.ajaxurl, data ); + }); + + $('.em-events-search-form select[name=region]').change( function(){ + $('.em-events-search select[name=state]').html(''); + $('.em-events-search select[name=town]').html(''); + var data = { + action : 'search_states', + region : $(this).val(), + country : $('.em-events-search-form select[name=country]').val(), + return_html : true + }; + $('.em-events-search select[name=state]').load( EM.ajaxurl, data ); + data.action = 'search_towns'; + $('.em-events-search select[name=town]').load( EM.ajaxurl, data ); + }); + + $('.em-events-search-form select[name=state]').change( function(){ + $('.em-events-search select[name=town]').html(''); + var data = { + action : 'search_towns', + state : $(this).val(), + region : $('.em-events-search-form select[name=region]').val(), + country : $('.em-events-search-form select[name=country]').val(), + return_html : true + }; + $('.em-events-search select[name=town]').load( EM.ajaxurl, data ); + }); + + //in order for this to work, you need the above classes to be present in your templates + $(document).delegate('.em-events-search-form', 'submit', function(e){ + if( this.search && this.search.value== EM.txt_search ){ this.search.value = ''; } + if( this.em_search && this.em_search.value== EM.txt_search){ this.em_search.value = ''; } + if( $('#em-wrapper .em-events-search-ajax').length == 1 ){ + e.preventDefault(); + $('.em-events-search-form :submit').val(EM.txt_searching); + $.ajax( EM.ajaxurl, { + dataType : 'html', + data : $(this).serialize(), + success : function(responseText) { + $('.em-events-search-form :submit').val(EM.txt_search); + $('#em-wrapper .em-events-search-ajax').replaceWith(responseText); + } + }); + return false; + } + }); + if( $('#em-wrapper .em-events-search-ajax').length > 0 ){ + $(document).delegate('#em-wrapper .em-events-search-ajax a.page-numbers', 'click', function(e){ + e.preventDefault(); + var pageNo = $(this).attr('title'); + if( $('.em-events-search-form input[name="page"]').length > 0 ){ + $('.em-events-search-form input[name="page"]').val(pageNo); + }else{ + $('.em-events-search-form').append(''); + } + $('.em-events-search-form').trigger('submit'); + return false; + }); + } + + /* + * ADMIN AREA AND PUBLIC FORMS (Still polishing this section up, note that form ids and classes may change accordingly) + */ + //Events List + //Approve/Reject Links + $(document).delegate('.em-event-delete', 'click', function(){ + if( !confirm("Are you sure you want to delete?") ){ return false; } + var url = em_ajaxify( el.attr('href')); + var td = el.parents('td').first(); + td.html("Loading..."); + td.load( url ); + return false; + }); + //Tickets + //Tickets overlay + if( $("#em-tickets-add").length > 0 ){ + var triggers = $("#em-tickets-add").overlay({ + mask: { + color: '#ebecff', + loadSpeed: 200, + opacity: 0.9 + }, + closeOnClick: true, + onLoad: function(){ + $('#ui-datepicker-div').appendTo('#em-tickets-form').hide(); + }, + onClose: function(){ + $('#ui-datepicker-div').appendTo('body').hide(); + } + }); + } + //Submitting ticket (Add/Edit) + $('#em-tickets-form form').submit(function(e){ + e.preventDefault(); + $('#em-tickets-intro').remove(); + //first we get the template to insert this to + if( $('#em-tickets-form form input[name=prev_slot]').val() ){ + //grab slot and populate + var slot = $('#'+$('#em-tickets-form form input[name=prev_slot]').val()); + var rowNo = slot.attr('id').replace('em-tickets-row-',''); + var edit = true; + }else{ + //create copy of template slot, insert so ready for population + var rowNo = $('#em-tickets-body').children('tr').length+1; + var slot = $('#em-tickets-body tr').first().clone().attr('id','em-tickets-row-'+ rowNo).appendTo($('#em-tickets-body')); + var edit = false; + slot.show(); + } + var postData = {}; + $.each($('#em-tickets-form form *[name]'), function(index,el){ + el = $(el); + slot.find('input.'+el.attr('name')).attr({ + 'value' : el.attr('value'), + 'name' : 'em_tickets['+rowNo+']['+el.attr('name')+']' + }); + slot.find('span.'+el.attr('name')).text(el.attr('value')); + }); + //allow for others to hook into this + $(document).triggerHandler('em_maps_tickets_edit', [slot, rowNo, edit]); + //sort out dates and localization masking + var start_pub = $("#em-tickets-form input[name=ticket_start_pub]").val(); + var end_pub = $("#em-tickets-form input[name=ticket_end_pub]").val(); + $('#em-tickets-form *[name]').attr('value',''); + $('#em-tickets-form .close').trigger('click'); + return false; + }); + //Edit a Ticket + $(document).delegate('.ticket-actions-edit', 'click', function(e){ + //first, populate form, then, trigger click + e.preventDefault(); + $('#em-tickets-add').trigger('click'); + var rowId = $(this).parents('tr').first().attr('id'); + $('#em-tickets-form *[name]').attr('value',''); + $.each( $('#'+rowId+' *[name]'), function(index,el){ + var el = $(el); + var selector = el.attr('class'); + $('#em-tickets-form *[name='+selector+']').attr('value',el.attr('value')); + }); + $("#em-tickets-form input[name=prev_slot]").attr('value',rowId); + $("#em-tickets-form .start-loc").datepicker('refresh'); + $("#em-tickets-form .end-loc").datepicker('refresh'); + + date_dateFormat =$("#em-tickets-form .start-loc").datepicker('option', 'dateFormat'); + if( $('#em-tickets-form .start').val() != '' || $('#em-tickets-form .end').val() != '' ){ + start_date_formatted = $.datepicker.formatDate( date_dateFormat, $.datepicker.parseDate('yy-mm-dd', $('#em-tickets-form .start').val()) ); + end_date_formatted = $.datepicker.formatDate( date_dateFormat, $.datepicker.parseDate('yy-mm-dd', $('#em-tickets-form .end').val()) ); + $("#em-tickets-form .start-loc").val(start_date_formatted); + $("#em-tickets-form .end-loc").val(end_date_formatted); + } + return false; + }); + //Delete a ticket + $(document).delegate('.ticket-actions-delete', 'click', function(e){ + e.preventDefault(); + var el = $(this); + var rowId = $(this).parents('tr').first().attr('id'); + if( $('#'+rowId+' input.ticket_id').attr('value') == '' ){ + //not saved to db yet, so just remove + $('#'+rowId).remove(); + }else{ + //only will happen if no bookings made + el.text('Deleting...'); + $.getJSON( $(this).attr('href'), {'em_ajax_action':'delete_ticket', 'id':$('#'+rowId+' input.ticket_id').attr('value')}, function(data){ + if(data.result){ + $('#'+rowId).remove(); + }else{ + el.text('Delete'); + alert(data.error); + } + }); + } + return false; + }); + //Manageing Bookings + //Pagination link clicks + $(document).delegate('#em-bookings-table .tablenav-pages a', 'click', function(){ + var el = $(this); + var form = el.parents('#em-bookings-table form.bookings-filter'); + //get page no from url, change page, submit form + var match = el.attr('href').match(/#[0-9]+/); + if( match != null && match.length > 0){ + var pno = match[0].replace('#',''); + form.find('input[name=pno]').val(pno); + }else{ + form.find('input[name=pno]').val(1); + } + form.trigger('submit'); + return false; + }); + //Widgets and filter submissions + $(document).delegate('#em-bookings-table form.bookings-filter', 'submit', function(e){ + var el = $(this); + el.parents('#em-bookings-table').find('.table-wrap').first().append('
      '); + $.post( EM.ajaxurl, el.serializeArray(), function(data){ + el.parents('#em-bookings-table').first().replaceWith(data); + //Settings Overlay + if( $("#em-bookings-table-settings-trigger").length > 0 ){ + $("#em-bookings-table-settings-trigger").overlay({ + mask: { color: '#ebecff', loadSpeed: 200, opacity: 0.9 }, + closeOnClick: true + }); + setup_sortable(); + } + if( $("#em-bookings-table-export-trigger").length > 0 ){ + $("#em-bookings-table-export-trigger").overlay({ + mask: { color: '#ebecff', loadSpeed: 200, opacity: 0.9 }, + closeOnClick: true + }); + } + }); + return false; + }); + //Settings Overlay + if( $("#em-bookings-table-settings-trigger").length > 0 ){ + $("#em-bookings-table-settings-trigger").overlay({ + mask: { color: '#ebecff', loadSpeed: 200, opacity: 0.9 }, + closeOnClick: true + }); + $(document).delegate('#em-bookings-table-settings-form', 'submit', function(el){ + el.preventDefault(); + var arr = $('form#em-bookings-table-settings-form').serializeArray(); + //we know we'll deal with cols, so wipe hidden value from main + $("#em-bookings-table form.bookings-filter [name=cols]").val(''); + $.each(arr, function(i,item){ + item_match = $('form#em-bookings-table-settings-form [name='+item.name+']'); + if( item_match.length > 0 && item_match.hasClass('em-bookings-col-item') && item_match.val() == 1 ){ + var match = $("#em-bookings-table form.bookings-filter [name=cols]"); + if( match.length > 0 ){ + if(match.val() != ''){ + match.val(match.val()+','+item.name); + }else{ + match.val(item.name); + } + } + }else{ + //copy it into the main form, overwrite those values + var match = $("#em-bookings-table form.bookings-filter [name="+item.name+"]"); + if( match.length > 0 ){ match.val(item.value); } + } + }); + //submit main form + $('#em-bookings-table-settings a.close').trigger('click'); + $('#em-bookings-table-settings').trigger('submitted'); //hook into this with bind() + $('#em-bookings-table form.bookings-filter').trigger('submit'); + return false; + }); + var setup_sortable = function(){ + $( ".em-bookings-cols-sortable" ).sortable({ + connectWith: ".em-bookings-cols-sortable", + over: function(event, ui) { + if( ui.item.hasClass('ui-state-highlight') ){ + ui.item.addClass('ui-state-default').removeClass('ui-state-highlight').children('input').val(0); + }else{ + ui.item.addClass('ui-state-highlight').removeClass('ui-state-default').children('input').val(1); + } + } + }).disableSelection(); + load_ui_css = true; + } + setup_sortable(); + } + //Export Overlay + if( $("#em-bookings-table-export-trigger").length > 0 ){ + $("#em-bookings-table-export-trigger").overlay({ + mask: { color: '#ebecff', loadSpeed: 200, opacity: 0.9 }, + closeOnClick: true + }); + } + var export_overlay_show_tickets = function(){ + if( $(this).is(':checked') ){ + $('#em-bookings-table-export-form .em-bookings-col-item-ticket').show(); + $('#em-bookings-table-export-form #em-bookings-export-cols-active .em-bookings-col-item-ticket input').val(1); + }else{ + $('#em-bookings-table-export-form .em-bookings-col-item-ticket').hide().find('input').val(0); + } + }; + export_overlay_show_tickets(); + $(document).delegate('#em-bookings-table-export-form input[name=show_tickets]', 'click', export_overlay_show_tickets); + + //Old Bookings Table + //Widgets and filter submissions + $(document).delegate('.em_bookings_events_table form, .em_bookings_pending_table form', 'submit', function(e){ + var el = $(this); + var url = em_ajaxify( el.attr('action') ); + el.parent('.em_obj').prepend('
      '); + $.get( url, el.serializeArray(), function(data){ + el.parent('.em_obj').replaceWith(data); + }); + return false; + }); + //Pagination link clicks + $(document).delegate('.em_bookings_events_table .tablenav-pages a, .em_bookings_pending_table .tablenav-pages a', 'click', function(){ + var el = $(this); + var url = em_ajaxify( el.attr('href') ); + el.parents('.em_obj').find('.table-wrap').first().append('
      '); + $.get( url, function(data){ + el.parents('.em_obj').first().replaceWith(data); + }); + return false; + }); + //Approve/Reject Links + $(document).delegate('.em-bookings-approve,.em-bookings-reject,.em-bookings-unapprove,.em-bookings-delete', 'click', function(){ + var el = $(this); + if( el.hasClass('em-bookings-delete') ){ + if( !confirm("Are you sure you want to delete?") ){ return false; } + } + var url = em_ajaxify( el.attr('href')); + var td = el.parents('td').first(); + td.html("Loading..."); + td.load( url ); + return false; + }); + + //Datepicker + if( $('#em-date-start').length > 0 ){ + if( EM.locale != 'en' ){ + $.datepicker.regional['nl']={closeText:'Sluiten',prevText:'â†',nextText:'→',currentText:'Vandaag',monthNames:['januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december'],monthNamesShort:['jan','feb','maa','apr','mei','jun','jul','aug','sep','okt','nov','dec'],dayNames:['zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag'],dayNamesShort:['zon','maa','din','woe','don','vri','zat'],dayNamesMin:['zo','ma','di','wo','do','vr','za'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['af']={closeText:'Selekteer',prevText:'Vorige',nextText:'Volgende',currentText:'Vandag',monthNames:['Januarie','Februarie','Maart','April','Mei','Junie','Julie','Augustus','September','Oktober','November','Desember'],monthNamesShort:['Jan','Feb','Mrt','Apr','Mei','Jun','Jul','Aug','Sep','Okt','Nov','Des'],dayNames:['Sondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrydag','Saterdag'],dayNamesShort:['Son','Maa','Din','Woe','Don','Vry','Sat'],dayNamesMin:['So','Ma','Di','Wo','Do','Vr','Sa'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['ar']={closeText:'إغلاق',prevText:'<السابق',nextText:'التالي>',currentText:'اليوم',monthNames:['كانون الثاني','شباط','آذار','نيسان','آذار','حزيران','تموز','آب','أيلول','تشرين الأول','تشرين الثاني','كانون الأول'],monthNamesShort:['1','2','3','4','5','6','7','8','9','10','11','12'],dayNames:['السبت','الأحد','الاثنين','الثلاثاء','الأربعاء','الخميس','الجمعة'],dayNamesShort:['سبت','أحد','اثنين','ثلاثاء','أربعاء','خميس','جمعة'],dayNamesMin:['سبت','أحد','اثنين','ثلاثاء','أربعاء','خميس','جمعة'],weekHeader:'أسبوع',dateFormat:'dd/mm/yy',firstDay:0,isRTL:true,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['az']={closeText:'BaÄŸla',prevText:'',currentText:'Bugün',monthNames:['Yanvar','Fevral','Mart','Aprel','May','İyun','İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],monthNamesShort:['Yan','Fev','Mar','Apr','May','İyun','İyul','Avq','Sen','Okt','Noy','Dek'],dayNames:['Bazar','Bazar ertÉ™si','ÇərÅŸÉ™nbÉ™ axÅŸamı','ÇərÅŸÉ™nbÉ™','CümÉ™ axÅŸamı','CümÉ™','ŞənbÉ™'],dayNamesShort:['B','Be','Ça','Ç','Ca','C','Åž'],dayNamesMin:['B','B','Ç','С','Ç','C','Åž'],weekHeader:'Hf',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['bg']={closeText:'затвори',prevText:'<назад',nextText:'напред>',nextBigText:'>>',currentText:'днеÑ',monthNames:['Януари','Февруари','Март','Ðприл','Май','Юни','Юли','ÐвгуÑÑ‚','Септември','Октомври','Ðоември','Декември'],monthNamesShort:['Яну','Фев','Мар','Ðпр','Май','Юни','Юли','Ðвг','Сеп','Окт','Ðов','Дек'],dayNames:['ÐеделÑ','Понеделник','Вторник','СрÑда','Четвъртък','Петък','Събота'],dayNamesShort:['Ðед','Пон','Вто','СрÑ','Чет','Пет','Съб'],dayNamesMin:['Ðе','По','Ð’Ñ‚','Ср','Че','Пе','Съ'],weekHeader:'Wk',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['bs']={closeText:'Zatvori',prevText:'<',nextText:'>',currentText:'Danas',monthNames:['Januar','Februar','Mart','April','Maj','Juni','Juli','August','Septembar','Oktobar','Novembar','Decembar'],monthNamesShort:['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'],dayNames:['Nedelja','Ponedeljak','Utorak','Srijeda','ÄŒetvrtak','Petak','Subota'],dayNamesShort:['Ned','Pon','Uto','Sri','ÄŒet','Pet','Sub'],dayNamesMin:['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'],weekHeader:'Wk',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['cs']={closeText:'Zavřít',prevText:'',currentText:'Nyní',monthNames:['leden','únor','bÅ™ezen','duben','kvÄ›ten','Äerven','Äervenec','srpen','září','říjen','listopad','prosinec'],monthNamesShort:['led','úno','bÅ™e','dub','kvÄ›','Äer','Ävc','srp','zář','říj','lis','pro'],dayNames:['nedÄ›le','pondÄ›lí','úterý','stÅ™eda','Ätvrtek','pátek','sobota'],dayNamesShort:['ne','po','út','st','Ät','pá','so'],dayNamesMin:['ne','po','út','st','Ät','pá','so'],weekHeader:'Týd',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['da']={closeText:'Luk',prevText:'',currentText:'Idag',monthNames:['Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December'],monthNamesShort:['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'],dayNames:['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],dayNamesShort:['Søn','Man','Tir','Ons','Tor','Fre','Lør'],dayNamesMin:['Sø','Ma','Ti','On','To','Fr','Lø'],weekHeader:'Uge',dateFormat:'dd-mm-yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['de']={closeText:'schließen',prevText:'',currentText:'heute',monthNames:['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],monthNamesShort:['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],dayNames:['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],dayNamesShort:['So','Mo','Di','Mi','Do','Fr','Sa'],dayNamesMin:['So','Mo','Di','Mi','Do','Fr','Sa'],weekHeader:'Wo',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['el']={closeText:'Κλείσιμο',prevText:'ΠÏοηγοÏμενος',nextText:'Επόμενος',currentText:'ΤÏέχων Μήνας',monthNames:['ΙανουάÏιος','ΦεβÏουάÏιος','ΜάÏτιος','ΑπÏίλιος','Μάιος','ΙοÏνιος','ΙοÏλιος','ΑÏγουστος','ΣεπτέμβÏιος','ΟκτώβÏιος','ÎοέμβÏιος','ΔεκέμβÏιος'],monthNamesShort:['Ιαν','Φεβ','ΜαÏ','ΑπÏ','Μαι','Ιουν','Ιουλ','Αυγ','Σεπ','Οκτ','Îοε','Δεκ'],dayNames:['ΚυÏιακή','ΔευτέÏα','ΤÏίτη','ΤετάÏτη','Πέμπτη','ΠαÏασκευή','Σάββατο'],dayNamesShort:['ΚυÏ','Δευ','ΤÏι','Τετ','Πεμ','ΠαÏ','Σαβ'],dayNamesMin:['Κυ','Δε','ΤÏ','Τε','Πε','Πα','Σα'],weekHeader:'Εβδ',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['en-GB']={closeText:'Done',prevText:'Prev',nextText:'Next',currentText:'Today',monthNames:['January','February','March','April','May','June','July','August','September','October','November','December'],monthNamesShort:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],dayNames:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],dayNamesShort:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],dayNamesMin:['Su','Mo','Tu','We','Th','Fr','Sa'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['eo']={closeText:'Fermi',prevText:'',currentText:'Nuna',monthNames:['Januaro','Februaro','Marto','Aprilo','Majo','Junio','Julio','AÅ­gusto','Septembro','Oktobro','Novembro','Decembro'],monthNamesShort:['Jan','Feb','Mar','Apr','Maj','Jun','Jul','AÅ­g','Sep','Okt','Nov','Dec'],dayNames:['Dimanĉo','Lundo','Mardo','Merkredo','Ä´aÅ­do','Vendredo','Sabato'],dayNamesShort:['Dim','Lun','Mar','Mer','Ä´aÅ­','Ven','Sab'],dayNamesMin:['Di','Lu','Ma','Me','Ä´a','Ve','Sa'],weekHeader:'Sb',dateFormat:'dd/mm/yy',firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['et']={closeText:'Sulge',prevText:'Eelnev',nextText:'Järgnev',currentText:'Täna',monthNames:['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni','Juuli','August','September','Oktoober','November','Detsember'],monthNamesShort:['Jaan','Veebr','Märts','Apr','Mai','Juuni','Juuli','Aug','Sept','Okt','Nov','Dets'],dayNames:['Pühapäev','Esmaspäev','Teisipäev','Kolmapäev','Neljapäev','Reede','Laupäev'],dayNamesShort:['Pühap','Esmasp','Teisip','Kolmap','Neljap','Reede','Laup'],dayNamesMin:['P','E','T','K','N','R','L'],weekHeader:'Sm',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['eu']={closeText:'Egina',prevText:'',currentText:'Gaur',monthNames:['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina','Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'],monthNamesShort:['Urt','Ots','Mar','Api','Mai','Eka','Uzt','Abu','Ira','Urr','Aza','Abe'],dayNames:['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'],dayNamesShort:['Iga','Ast','Ast','Ast','Ost','Ost','Lar'],dayNamesMin:['Ig','As','As','As','Os','Os','La'],weekHeader:'Wk',dateFormat:'yy/mm/dd',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['fa']={closeText:'بستن',prevText:'<قبلي',nextText:'بعدي>',currentText:'امروز',monthNames:['ÙØ±ÙˆØ±Ø¯ÙŠÙ†','ارديبهشت','خرداد','تير','مرداد','شهريور','مهر','آبان','آذر','دي','بهمن','اسÙند'],monthNamesShort:['1','2','3','4','5','6','7','8','9','10','11','12'],dayNames:['يکشنبه','دوشنبه','سه‌شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'],dayNamesShort:['ÙŠ','د','س','Ú†','Ù¾','ج','Ø´'],dayNamesMin:['ÙŠ','د','س','Ú†','Ù¾','ج','Ø´'],weekHeader:'Ù‡Ù',dateFormat:'yy/mm/dd',firstDay:6,isRTL:true,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['fo']={closeText:'Lat aftur',prevText:'',currentText:'à dag',monthNames:['Januar','Februar','Mars','Apríl','Mei','Juni','Juli','August','September','Oktober','November','Desember'],monthNamesShort:['Jan','Feb','Mar','Apr','Mei','Jun','Jul','Aug','Sep','Okt','Nov','Des'],dayNames:['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],dayNamesShort:['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],dayNamesMin:['Su','Má','Tý','Mi','Hó','Fr','Le'],weekHeader:'Vk',dateFormat:'dd-mm-yy',firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['fr-CH']={closeText:'Fermer',prevText:'',currentText:'Courant',monthNames:['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],monthNamesShort:['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc'],dayNames:['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],dayNamesShort:['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],dayNamesMin:['Di','Lu','Ma','Me','Je','Ve','Sa'],weekHeader:'Sm',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['fr']={closeText:'Fermer',prevText:'',currentText:'Courant',monthNames:['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],monthNamesShort:['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc'],dayNames:['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],dayNamesShort:['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],dayNamesMin:['Di','Lu','Ma','Me','Je','Ve','Sa'],weekHeader:'Sm',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['he']={closeText:'סגור',prevText:'<הקוד×',nextText:'הב×>',currentText:'היו×',monthNames:['ינו×ר','פברו×ר','מרץ','×פריל','מ××™','יוני','יולי','×וגוסט','ספטמבר','×וקטובר','נובמבר','דצמבר'],monthNamesShort:['1','2','3','4','5','6','7','8','9','10','11','12'],dayNames:['ר×שון','שני','שלישי','רביעי','חמישי','שישי','שבת'],dayNamesShort:['×\'','ב\'','×’\'','ד\'','×”\'','ו\'','שבת'],dayNamesMin:['×\'','ב\'','×’\'','ד\'','×”\'','ו\'','שבת'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:0,isRTL:true,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['hu']={closeText:'Kész',prevText:'ElÅ‘zÅ‘',nextText:'KövetkezÅ‘',currentText:'Ma',monthNames:['január','február','március','április','május','június','július','augusztus','szeptember','október','november','cecember'],monthNamesShort:['jan','febr','márc','ápr','máj','jún','júl','aug','szept','okt','nov','dec'],dayNames:['vasárnap','hétfÅ‘','kedd','szerda','csütörtök','péntek','szombat'],dayNamesShort:['va','hé','k','sze','csü','pé','szo'],dayNamesMin:['v','h','k','sze','cs','p','szo'],weekHeader:'Wk',dateFormat:'yy.mm.dd.',firstDay:1,isRTL:false,showMonthAfterYear:true,yearSuffix:''}; + $.datepicker.regional['hr']={closeText:'Zatvori',prevText:'<',nextText:'>',currentText:'Danas',monthNames:['SijeÄanj','VeljaÄa','Ožujak','Travanj','Svibanj','Lipanj','Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],monthNamesShort:['Sij','Velj','Ožu','Tra','Svi','Lip','Srp','Kol','Ruj','Lis','Stu','Pro'],dayNames:['Nedjelja','Ponedjeljak','Utorak','Srijeda','ÄŒetvrtak','Petak','Subota'],dayNamesShort:['Ned','Pon','Uto','Sri','ÄŒet','Pet','Sub'],dayNamesMin:['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'],weekHeader:'Tje',dateFormat:'dd.mm.yy.',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['ja']={closeText:'é–‰ã˜ã‚‹',prevText:'<å‰',nextText:'次>',currentText:'今日',monthNames:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],monthNamesShort:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],dayNames:['日曜日','月曜日','ç«æ›œæ—¥','水曜日','木曜日','金曜日','土曜日'],dayNamesShort:['æ—¥','月','ç«','æ°´','木','金','土'],dayNamesMin:['æ—¥','月','ç«','æ°´','木','金','土'],weekHeader:'週',dateFormat:'yy/mm/dd',firstDay:0,isRTL:false,showMonthAfterYear:true,yearSuffix:'å¹´'}; + $.datepicker.regional['ro']={closeText:'ÃŽnchide',prevText:'« Luna precedentă',nextText:'Luna următoare »',currentText:'Azi',monthNames:['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie','Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],monthNamesShort:['Ian','Feb','Mar','Apr','Mai','Iun','Iul','Aug','Sep','Oct','Nov','Dec'],dayNames:['Duminică','Luni','MarÅ£i','Miercuri','Joi','Vineri','Sâmbătă'],dayNamesShort:['Dum','Lun','Mar','Mie','Joi','Vin','Sâm'],dayNamesMin:['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],weekHeader:'Săpt',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['sk']={closeText: 'ZavrieÅ¥',prevText: '<Predchádzajúci',nextText: 'Nasledujúci>',currentText: 'Dnes',monthNames: ['Január','Február','Marec','Apríl','Máj','Jún','Júl','August','September','Október','November','December'],monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún','Júl','Aug','Sep','Okt','Nov','Dec'],dayNames: ['Nedel\'a','Pondelok','Utorok','Streda','Å tvrtok','Piatok','Sobota'],dayNamesShort: ['Ned','Pon','Uto','Str','Å tv','Pia','Sob'],dayNamesMin: ['Ne','Po','Ut','St','Å t','Pia','So'],weekHeader: 'Ty',dateFormat: 'dd.mm.yy',firstDay: 1,isRTL: false,showMonthAfterYear: false,yearSuffix: ''}; + $.datepicker.regional['sq']={closeText:'mbylle',prevText:'',currentText:'sot',monthNames:['Janar','Shkurt','Mars','Prill','Maj','Qershor','Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],monthNamesShort:['Jan','Shk','Mar','Pri','Maj','Qer','Kor','Gus','Sht','Tet','Nën','Dhj'],dayNames:['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],dayNamesShort:['Di','Hë','Ma','Më','En','Pr','Sh'],dayNamesMin:['Di','Hë','Ma','Më','En','Pr','Sh'],weekHeader:'Ja',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['sr-SR']={closeText:'Zatvori',prevText:'<',nextText:'>',currentText:'Danas',monthNames:['Januar','Februar','Mart','April','Maj','Jun','Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'],monthNamesShort:['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Avg','Sep','Okt','Nov','Dec'],dayNames:['Nedelja','Ponedeljak','Utorak','Sreda','ÄŒetvrtak','Petak','Subota'],dayNamesShort:['Ned','Pon','Uto','Sre','ÄŒet','Pet','Sub'],dayNamesMin:['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'],weekHeader:'Sed',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['sr']={closeText:'Затвори',prevText:'<',nextText:'>',currentText:'ДанаÑ',monthNames:['Јануар','Фебруар','Март','Ðприл','Мај','Јун','Јул','ÐвгуÑÑ‚','Септембар','Октобар','Ðовембар','Децембар'],monthNamesShort:['Јан','Феб','Мар','Ðпр','Мај','Јун','Јул','Ðвг','Сеп','Окт','Ðов','Дец'],dayNames:['Ðедеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],dayNamesShort:['Ðед','Пон','Уто','Сре','Чет','Пет','Суб'],dayNamesMin:['Ðе','По','Ут','Ср','Че','Пе','Су'],weekHeader:'Сед',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['sv']={closeText:'Stäng',prevText:'«Förra',nextText:'Nästa»',currentText:'Idag',monthNames:['Januari','Februari','Mars','April','Maj','Juni','Juli','Augusti','September','Oktober','November','December'],monthNamesShort:['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'],dayNamesShort:['Sön','MÃ¥n','Tis','Ons','Tor','Fre','Lör'],dayNames:['Söndag','MÃ¥ndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],dayNamesMin:['Sö','MÃ¥','Ti','On','To','Fr','Lö'],weekHeader:'Ve',dateFormat:'yy-mm-dd',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['ta']={closeText:'மூடà¯',prevText:'à®®à¯à®©à¯à®©à¯ˆà®¯à®¤à¯',nextText:'அடà¯à®¤à¯à®¤à®¤à¯',currentText:'இனà¯à®±à¯',monthNames:['தை','மாசி','பஙà¯à®•à¯à®©à®¿','சிதà¯à®¤à®¿à®°à¯ˆ','வைகாசி','ஆனி','ஆடி','ஆவணி','பà¯à®°à®Ÿà¯à®Ÿà®¾à®šà®¿','à®à®ªà¯à®ªà®šà®¿','காரà¯à®¤à¯à®¤à®¿à®•ை','மாரà¯à®•ழி'],monthNamesShort:['தை','மாசி','பஙà¯','சிதà¯','வைகா','ஆனி','ஆடி','ஆவ','பà¯à®°','à®à®ªà¯','காரà¯','மாரà¯'],dayNames:['ஞாயிறà¯à®±à¯à®•à¯à®•ிழமை','திஙà¯à®•டà¯à®•ிழமை','செவà¯à®µà®¾à®¯à¯à®•à¯à®•ிழமை','பà¯à®¤à®©à¯à®•ிழமை','வியாழகà¯à®•ிழமை','வெளà¯à®³à®¿à®•à¯à®•ிழமை','சனிகà¯à®•ிழமை'],dayNamesShort:['ஞாயிறà¯','திஙà¯à®•ளà¯','செவà¯à®µà®¾à®¯à¯','பà¯à®¤à®©à¯','வியாழனà¯','வெளà¯à®³à®¿','சனி'],dayNamesMin:['ஞா','தி','செ','பà¯','வி','வெ','ச'],weekHeader:'Ðе',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['th']={closeText:'ปิด',prevText:'« ย้อน',nextText:'ถัดไป »',currentText:'วันนี้',monthNames:['มà¸à¸£à¸²à¸„ม','à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','à¸à¸£à¸à¸à¸²à¸„ม','สิงหาคม','à¸à¸±à¸™à¸¢à¸²à¸¢à¸™','ตุลาคม','พฤศจิà¸à¸²à¸¢à¸™','ธันวาคม'],monthNamesShort:['ม.ค.','à¸.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.','à¸.ค.','ส.ค.','à¸.ย.','ต.ค.','พ.ย.','ธ.ค.'],dayNames:['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุà¸à¸£à¹Œ','เสาร์'],dayNamesShort:['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],dayNamesMin:['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['vi']={closeText:'Äóng',prevText:'',currentText:'Hôm nay',monthNames:['Tháng Má»™t','Tháng Hai','Tháng Ba','Tháng Tư','Tháng Năm','Tháng Sáu','Tháng Bảy','Tháng Tám','Tháng Chín','Tháng Mưá»i','Tháng Mưá»i Má»™t','Tháng Mưá»i Hai'],monthNamesShort:['Tháng 1','Tháng 2','Tháng 3','Tháng 4','Tháng 5','Tháng 6','Tháng 7','Tháng 8','Tháng 9','Tháng 10','Tháng 11','Tháng 12'],dayNames:['Chá»§ Nhật','Thứ Hai','Thứ Ba','Thứ Tư','Thứ Năm','Thứ Sáu','Thứ Bảy'],dayNamesShort:['CN','T2','T3','T4','T5','T6','T7'],dayNamesMin:['CN','T2','T3','T4','T5','T6','T7'],weekHeader:'Tu',dateFormat:'dd/mm/yy',firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['zh-TW']={closeText:'關閉',prevText:'<上月',nextText:'下月>',currentText:'今天',monthNames:['一月','二月','三月','四月','五月','六月','七月','八月','乿œˆ','åæœˆ','å一月','å二月'],monthNamesShort:['一','二','三','å››','五','å…­','七','å…«','ä¹','å','å一','å二'],dayNames:['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],dayNamesShort:['周日','周一','周二','周三','周四','周五','周六'],dayNamesMin:['æ—¥','一','二','三','å››','五','å…­'],weekHeader:'周',dateFormat:'yy/mm/dd',firstDay:1,isRTL:false,showMonthAfterYear:true,yearSuffix:'å¹´'}; + $.datepicker.regional['es']={closeText:'Cerrar',prevText:'',currentText:'Hoy',monthNames:['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],monthNamesShort:['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'],dayNames:['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],dayNamesShort:['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],dayNamesMin:['Do','Lu','Ma','Mi','Ju','Vi','Sá'],weekHeader:'Sm',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['it']={closeText:'Fatto',prevText:'Precedente',nextText:'Prossimo',currentText:'Oggi',monthNames:['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],monthNamesShort:['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'],dayNames:['Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato','Domenica'],dayNamesShort:['Lun','Mar','Mer','Gio','Ven','Sab','Dom'],dayNamesMin:['Do','Lu','Ma','Me','Gi','Ve','Sa'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.setDefaults($.datepicker.regional[EM.locale]); + } + //default picker vals + var datepicker_vals = { altFormat: "yy-mm-dd", changeMonth: true, changeYear: true, firstDay : EM.firstDay }; + if( EM.dateFormat != ''){ + datepicker_vals.dateFormat = EM.dateFormat; + } + + //bookings end date + var bookings_datepicker_vals = { + altField : "#em-bookings-date" + }; + $.extend( bookings_datepicker_vals, datepicker_vals ); + $("#em-bookings-date-loc").datepicker(bookings_datepicker_vals); + + //start date + var start_datepicker_vals = { + altField : "#em-date-start", + onSelect : function( selectedDate ) { + if( $("#em-date-start").val() > $("#em-date-end").val() ){ + $("#em-date-end-loc").datepicker( "setDate" , selectedDate ); + } + $("#em-date-end-loc").datepicker( "option", 'minDate', selectedDate ); + } + }; + $.extend( start_datepicker_vals, datepicker_vals ); + $("#em-date-start-loc").datepicker(start_datepicker_vals); + + //end date + var end_datepicker_vals = { + altField : "#em-date-end" + }; + if( $("#em-date-start").val() != '' ){ + end_datepicker_vals.minDate = new Date($("#em-date-start").val()); + } + $.extend( end_datepicker_vals, datepicker_vals ); + $("#em-date-end-loc").datepicker(end_datepicker_vals); + + //localize start/end dates + if( $('#em-date-start').val() != '' ){ + load_ui_css = true; + if( EM.locale != 'en' && $.datepicker.regional[EM.locale] != null ){ + var date_dateFormat = $.datepicker.regional[EM.locale].dateFormat; + }else{ + var date_dateFormat = $("#em-date-start-loc").datepicker('option', 'dateFormat'); + } + if($('#em-bookings-date').length > 0 && $('#em-bookings-date').val() != ''){ + var bookings_date_formatted = $.datepicker.formatDate( date_dateFormat, $.datepicker.parseDate('yy-mm-dd', $('#em-bookings-date').val()) ); + $("#em-bookings-date-loc").val(bookings_date_formatted); + } + var start_date_formatted = $.datepicker.formatDate( date_dateFormat, $.datepicker.parseDate('yy-mm-dd', $('#em-date-start').val()) ); + var end_date_formatted = $.datepicker.formatDate( date_dateFormat, $.datepicker.parseDate('yy-mm-dd', $('#em-date-end').val()) ); + $("#em-date-start-loc").val(start_date_formatted); + $("#em-date-end-loc").val(end_date_formatted); + } + + //for the tickets form too + $(".em-ticket-form, #em-tickets-form").each(function(i, el){ + el = $(el); + start = el.find('.start-loc'); + end = el.find('.end-loc'); + load_ui_css = true; + if(start.length > 0){ + load_ui_css = true; + datepicker_vals.altField = el.find('.start').first(); + start.datepicker(datepicker_vals); + //formatting for both + if( EM.locale != 'en' && $.datepicker.regional[EM.locale] != null ){ + var date_dateFormat = $.datepicker.regional[EM.locale].dateFormat; + }else{ + var date_dateFormat = start.datepicker('option', 'dateFormat'); + } + start_date_formatted = $.datepicker.formatDate( date_dateFormat, $.datepicker.parseDate('yy-mm-dd' , datepicker_vals.altField.val()) ); + el.find(".start-loc").val(start_date_formatted); + //end + if(end.length > 0){ + load_ui_css = true; + datepicker_vals.altField = el.find('.end').first(); + end.first().datepicker(datepicker_vals); + end_date_formatted = $.datepicker.formatDate( date_dateFormat, $.datepicker.parseDate('yy-mm-dd' , datepicker_vals.altField.val()) ); + el.find(".end-loc").first().val(end_date_formatted); + } + } + }); + } + if( load_ui_css || $("#em-date-start-loc, #em-date-end-loc, .em-ticket-form .start-loc, #em-bookings-date-loc").length > 0 ){ + $('ui-datepicker-div').css(); + var script = document.createElement("link"); + script.id = 'jquery-ui-css'; + script.rel = "stylesheet"; + script.href = EM.ui_css; + document.body.appendChild(script); + } + + //previously in em-admin.php + function updateIntervalDescriptor () { + $(".interval-desc").hide(); + var number = "-plural"; + if ($('input#recurrence-interval').val() == 1 || $('input#recurrence-interval').val() == "") + number = "-singular"; + var descriptor = "span#interval-"+$("select#recurrence-frequency").val()+number; + $(descriptor).show(); + } + function updateIntervalSelectors () { + $('p.alternate-selector').hide(); + $('p#'+ $('select#recurrence-frequency').val() + "-selector").show(); + } + function updateShowHideRecurrence () { + if( $('input#event-recurrence').attr("checked")) { + $("#event_recurrence_pattern").fadeIn(); + $("#event-date-explanation").hide(); + $("#recurrence-dates-explanation").show(); + $("h3#recurrence-dates-title").show(); + $("h3#event-date-title").hide(); + } else { + $("#event_recurrence_pattern").hide(); + $("#recurrence-dates-explanation").hide(); + $("#event-date-explanation").show(); + $("h3#recurrence-dates-title").hide(); + $("h3#event-date-title").show(); + } + } + $("#recurrence-dates-explanation").hide(); + $("#date-to-submit").hide(); + $("#end-date-to-submit").hide(); + + $("#localised-date").show(); + $("#localised-end-date").show(); + + $('input.select-all').change(function(){ + if($(this).is(':checked')) + $('input.row-selector').attr('checked', true); + else + $('input.row-selector').attr('checked', false); + }); + + updateIntervalDescriptor(); + updateIntervalSelectors(); + updateShowHideRecurrence(); + $('input#event-recurrence').change(updateShowHideRecurrence); + + // recurrency elements + $('input#recurrence-interval').keyup(updateIntervalDescriptor); + $('select#recurrence-frequency').change(updateIntervalDescriptor); + $('select#recurrence-frequency').change(updateIntervalSelectors); + + /* Useful function for adding the em_ajax flag to a url, regardless of querystring format */ + var em_ajaxify = function(url){ + if ( url.search('em_ajax=0') != -1){ + url = url.replace('em_ajax=0','em_ajax=1'); + }else if( url.search(/\?/) != -1 ){ + url = url + "&em_ajax=1"; + }else{ + url = url + "?em_ajax=1"; + } + return url; + } + + /* Load any maps */ + if( $('.em-location-map').length > 0 || $('.em-locations-map').length > 0 || $('#em-map').length > 0 ){ + var script = document.createElement("script"); + script.type = "text/javascript"; + script.src = (EM.is_ssl) ? 'https://maps.google.com/maps/api/js?v=3.8&sensor=false&callback=em_maps':'http://maps.google.com/maps/api/js?v=3.4&sensor=false&callback=em_maps'; + document.body.appendChild(script); + } + +}); + +//Location functions +function em_location_input_ajax(){ + //Location stuff - only needed if inputs for location exist + if( jQuery('select#location-select-id, input#location-address').length > 0 ){ + + //load map info + var refresh_map_location = function(){ + var location_latitude = jQuery('#location-latitude').val(); + var location_longitude = jQuery('#location-longitude').val(); + if( !(location_latitude == 0 && location_longitude == 0) ){ + var position = new google.maps.LatLng(location_latitude, location_longitude); //the location coords + marker.setPosition(position); + var mapTitle = (jQuery('input#location-name').length > 0) ? jQuery('input#location-name').val():jQuery('input#title').val(); + marker.setTitle( jQuery('input#location-name input#title, #location-select-id').first().val() ); + jQuery('#em-map').show(); + jQuery('#em-map-404').hide(); + google.maps.event.trigger(map, 'resize'); + map.setCenter(position); + map.panBy(40,-55); + infoWindow.setContent( + '
      ' + + mapTitle + + '
      ' + + jQuery('#location-address').val() + + '
      ' + jQuery('#location-town').val()+ + '
      ' + ); + infoWindow.open(map, marker); + } else { + jQuery('#em-map').hide(); + jQuery('#em-map-404').show(); + } + } + + //Load map + if(jQuery('#em-map').length > 0){ + var em_LatLng = new google.maps.LatLng(0, 0); + var map = new google.maps.Map( document.getElementById('em-map'), { + zoom: 14, + center: em_LatLng, + mapTypeId: google.maps.MapTypeId.ROADMAP, + mapTypeControl: false + }); + var marker = new google.maps.Marker({ + position: em_LatLng, + map: map, + draggable: true + }); + var infoWindow = new google.maps.InfoWindow({ + content: '' + }); + var geocoder = new google.maps.Geocoder(); + google.maps.event.addListener(infoWindow, 'domready', function() { + document.getElementById('location-balloon-content').parentNode.style.overflow=''; + document.getElementById('location-balloon-content').parentNode.parentNode.style.overflow=''; + }); + google.maps.event.addListener(marker, 'dragend', function() { + var position = marker.getPosition(); + jQuery('#location-latitude').val(position.lat()); + jQuery('#location-longitude').val(position.lng()); + map.setCenter(position); + map.panBy(40,-55); + }); + refresh_map_location(); + } + + //Add listeners for changes to address + var get_map_by_id = function(id){ + if(jQuery('#em-map').length > 0){ + jQuery.getJSON(document.URL,{ em_ajax_action:'get_location', id:id }, function(data){ + if( data.location_latitude!=0 && data.location_longitude!=0 ){ + loc_latlng = new google.maps.LatLng(data.location_latitude, data.location_longitude); + marker.setPosition(loc_latlng); + marker.setTitle( data.location_name ); + jQuery('#em-map').show(); + jQuery('#em-map-404').hide(); + map.setCenter(loc_latlng); + map.panBy(40,-55); + infoWindow.setContent( '
      '+ data.location_balloon +'
      '); + infoWindow.open(map, marker); + google.maps.event.trigger(map, 'resize'); + }else{ + jQuery('#em-map').hide(); + jQuery('#em-map-404').show(); + } + }); + } + } + jQuery('#location-select-id').change( function(){get_map_by_id(jQuery(this).val())} ); + jQuery('#location-town, #location-address, #location-state, #location-postcode, #location-country').change( function(){ + //build address + var addresses = [ jQuery('#location-address').val(), jQuery('#location-town').val(), jQuery('#location-state').val(), jQuery('#location-postcode').val() ]; + var address = ''; + jQuery.each( addresses, function(i, val){ + if( val != '' ){ + address = ( address == '' ) ? address+val:address+', '+val; + } + }); + //do country last, as it's using the text version + if( jQuery('#location-country option:selected').val() != 0 ){ + address = ( address == '' ) ? address+jQuery('#location-country option:selected').text():address+', '+jQuery('#location-country option:selected').text(); + } + if( address != '' && jQuery('#em-map').length > 0 ){ + geocoder.geocode( { 'address': address }, function(results, status) { + if (status == google.maps.GeocoderStatus.OK) { + jQuery('#location-latitude').val(results[0].geometry.location.lat()); + jQuery('#location-longitude').val(results[0].geometry.location.lng()); + } + refresh_map_location(); + }); + } + }); + + //Finally, add autocomplete here + //Autocomplete + if( jQuery( "#em-location-data input#location-name, " ).length > 0 ){ + jQuery( "#em-location-data input#location-name" ).autocomplete({ + source: EM.locationajaxurl, + minLength: 2, + focus: function( event, ui ){ + jQuery("input#location-id" ).val( ui.item.value ); + return false; + }, + select: function( event, ui ){ + jQuery("input#location-id" ).val(ui.item.id); + jQuery("input#location-name" ).val(ui.item.value); + jQuery('input#location-address').val(ui.item.address); + jQuery('input#location-town').val(ui.item.town); + jQuery('input#location-state').val(ui.item.state); + jQuery('input#location-region').val(ui.item.region); + jQuery('input#location-postcode').val(ui.item.postcode); + if( ui.item.country == '' ){ + jQuery('select#location-country option:selected').removeAttr('selected'); + }else{ + jQuery('select#location-country option[value="'+ui.item.country+'"]').attr('selected', 'selected'); + } + get_map_by_id(ui.item.id); + jQuery('#em-location-data input, #em-location-data select').css('background-color','#ccc'); + jQuery('#em-location-data input#location-name').css('background-color','#fff'); + jQuery('#em-location-reset').show(); + return false; + } + }).data( "autocomplete" )._renderItem = function( ul, item ) { + html_val = "" + item.label + '
      '+ item.address + ', ' + item.town+"
      "; + return jQuery( "
    • " ).data( "item.autocomplete", item ).append(html_val).appendTo( ul ); + }; + jQuery('#em-location-reset').click( function(){ + jQuery('#em-location-data input').css('background-color','#fff').val(''); + jQuery('#em-location-data select').css('background-color','#fff'); + jQuery('#em-location-data option:selected').removeAttr('selected'); + jQuery('input#location-id').val(''); + jQuery('#em-location-reset').hide(); + marker.setPosition(new google.maps.LatLng(0, 0)); + infoWindow.close(); + jQuery('#em-map').hide(); + jQuery('#em-map-404').show(); + marker.setDraggable(true); + return false; + }); + if( jQuery('input#location-id').val() != '0' && jQuery('input#location-id').val() != '' ){ + jQuery('#em-location-data input, #em-location-data select').css('background-color','#ccc'); + jQuery('#em-location-data input#location-name').css('background-color','#fff'); + jQuery('#em-location-reset').show(); + marker.setDraggable(false); + } + } + } +} + +/* + * MAP FUNCTIONS + */ +var maps = {}; +//Load single maps (each map is treated as a seperate map. +function em_maps() { + //Find all the maps on this page + jQuery('.em-location-map').each( function(index){ + el = jQuery(this); + var map_id = el.attr('id').replace('em-location-map-',''); + em_LatLng = new google.maps.LatLng( jQuery('#em-location-map-coords-'+map_id+' .lat').text(), jQuery('#em-location-map-coords-'+map_id+' .lng').text()); + maps[map_id] = new google.maps.Map( document.getElementById('em-location-map-'+map_id), { + zoom: 14, + center: em_LatLng, + mapTypeId: google.maps.MapTypeId.ROADMAP, + mapTypeControl: false + }); + var marker = new google.maps.Marker({ + position: em_LatLng, + map: maps[map_id] + }); + var infowindow = new google.maps.InfoWindow({ content: jQuery('#em-location-map-info-'+map_id+' .em-map-balloon').get(0) }); + infowindow.open(maps[map_id],marker); + maps[map_id].panBy(40,-70); + + //JS Hook for handling map after instantiation + //Example hook, which you can add elsewhere in your theme's JS - jQuery(document).bind('em_maps_location_hook', function(){ alert('hi');} ); + jQuery(document).triggerHandler('em_maps_location_hook', [maps[map_id], infowindow, marker]); + }); + jQuery('.em-locations-map').each( function(index){ + var el = jQuery(this); + var map_id = el.attr('id').replace('em-locations-map-',''); + var em_data = jQuery.parseJSON( jQuery('#em-locations-map-coords-'+map_id).text() ); + jQuery.getJSON(document.URL, em_data , function(data){ + if(data.length > 0){ + var myLatlng = new google.maps.LatLng(data[0].location_latitude,data[0].location_longitude); + var myOptions = { + mapTypeId: google.maps.MapTypeId.ROADMAP + }; + maps[map_id] = new google.maps.Map(document.getElementById("em-locations-map-"+map_id), myOptions); + + var minLatLngArr = [0,0]; + var maxLatLngArr = [0,0]; + + for (var i = 0; i < data.length; i++) { + if( !(data[i].location_latitude == 0 && data[i].location_longitude == 0) ){ + var latitude = parseFloat( data[i].location_latitude ); + var longitude = parseFloat( data[i].location_longitude ); + var location = new google.maps.LatLng( latitude, longitude ); + var marker = new google.maps.Marker({ + position: location, + map: maps[map_id] + }); + marker.setTitle(data[i].location_name); + var myContent = '
      '+ data[i].location_balloon +'
      '; + em_map_infobox(marker, myContent, maps[map_id]); + + //Get min and max long/lats + minLatLngArr[0] = (latitude < minLatLngArr[0] || i == 0) ? latitude : minLatLngArr[0]; + minLatLngArr[1] = (longitude < minLatLngArr[1] || i == 0) ? longitude : minLatLngArr[1]; + maxLatLngArr[0] = (latitude > maxLatLngArr[0] || i == 0) ? latitude : maxLatLngArr[0]; + maxLatLngArr[1] = (longitude > maxLatLngArr[1] || i == 0) ? longitude : maxLatLngArr[1]; + } + } + // Zoom in to the bounds + var minLatLng = new google.maps.LatLng(minLatLngArr[0],minLatLngArr[1]); + var maxLatLng = new google.maps.LatLng(maxLatLngArr[0],maxLatLngArr[1]); + var bounds = new google.maps.LatLngBounds(minLatLng,maxLatLng); + maps[map_id].fitBounds(bounds); + //Call a hook if exists + jQuery(document).triggerHandler('em_maps_locations_hook', [maps[map_id]]); + }else{ + el.children().first().html('No locations found'); + } + }); + }); + em_location_input_ajax(); +} + +function em_map_infobox(marker, message, map) { + var infowindow = new google.maps.InfoWindow({ content: message }); + google.maps.event.addListener(marker, 'click', function() { + infowindow.open(map,marker); + }); +} + + /* jQuery Tools 1.2.5 Overlay & Expose */ + (function(a){function t(d,b){var c=this,j=d.add(c),o=a(window),k,f,m,g=a.tools.expose&&(b.mask||b.expose),n=Math.random().toString().slice(10);if(g){if(typeof g=="string")g={color:g};g.closeOnClick=g.closeOnEsc=false}var p=b.target||d.attr("rel");f=p?a(p):d;if(!f.length)throw"Could not find Overlay: "+p;d&&d.index(f)==-1&&d.click(function(e){c.load(e);return e.preventDefault()});a.extend(c,{load:function(e){if(c.isOpened())return c;var h=q[b.effect];if(!h)throw'Overlay: cannot find effect : "'+b.effect+ + '"';b.oneInstance&&a.each(s,function(){this.close(e)});e=e||a.Event();e.type="onBeforeLoad";j.trigger(e);if(e.isDefaultPrevented())return c;m=true;g&&a(f).expose(g);var i=b.top,r=b.left,u=f.outerWidth({margin:true}),v=f.outerHeight({margin:true});if(typeof i=="string")i=i=="center"?Math.max((o.height()-v)/2,0):parseInt(i,10)/100*o.height();if(r=="center")r=Math.max((o.width()-u)/2,0);h[0].call(c,{top:i,left:r},function(){if(m){e.type="onLoad";j.trigger(e)}});g&&b.closeOnClick&&a.mask.getMask().one("click", + c.close);b.closeOnClick&&a(document).bind("click."+n,function(l){a(l.target).parents(f).length||c.close(l)});b.closeOnEsc&&a(document).bind("keydown."+n,function(l){l.keyCode==27&&c.close(l)});return c},close:function(e){if(!c.isOpened())return c;e=e||a.Event();e.type="onBeforeClose";j.trigger(e);if(!e.isDefaultPrevented()){m=false;q[b.effect][1].call(c,function(){e.type="onClose";j.trigger(e)});a(document).unbind("click."+n).unbind("keydown."+n);g&&a.mask.close();return c}},getOverlay:function(){return f}, + getTrigger:function(){return d},getClosers:function(){return k},isOpened:function(){return m},getConf:function(){return b}});a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(e,h){a.isFunction(b[h])&&a(c).bind(h,b[h]);c[h]=function(i){i&&a(c).bind(h,i);return c}});k=f.find(b.close||".close");if(!k.length&&!b.close){k=a('');f.prepend(k)}k.click(function(e){c.close(e)});b.load&&c.load()}a.tools=a.tools||{version:"1.2.5"};a.tools.overlay={addEffect:function(d, + b,c){q[d]=[b,c]},conf:{close:null,closeOnClick:true,closeOnEsc:true,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:false,mask:null,oneInstance:true,speed:"normal",target:null,top:"10%"}};var s=[],q={};a.tools.overlay.addEffect("default",function(d,b){var c=this.getConf(),j=a(window);if(!c.fixed){d.top+=j.scrollTop();d.left+=j.scrollLeft()}d.position=c.fixed?"fixed":"absolute";this.getOverlay().css(d).fadeIn(c.speed,b)},function(d){this.getOverlay().fadeOut(this.getConf().closeSpeed, + d)});a.fn.overlay=function(d){var b=this.data("overlay");if(b)return b;if(a.isFunction(d))d={onBeforeLoad:d};d=a.extend(true,{},a.tools.overlay.conf,d);this.each(function(){b=new t(a(this),d);s.push(b);a(this).data("overlay",b)});return d.api?b:this}})(jQuery); + (function(b){function k(){if(b.browser.msie){var a=b(document).height(),d=b(window).height();return[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,a-d<20?d:a]}return[b(document).width(),b(document).height()]}function h(a){if(a)return a.call(b.mask)}b.tools=b.tools||{version:"1.2.5"};var l;l=b.tools.expose={conf:{maskId:"exposeMask",loadSpeed:"slow",closeSpeed:"fast",closeOnClick:true,closeOnEsc:true,zIndex:9998,opacity:0.8,startOpacity:0,color:"#fff",onLoad:null, + onClose:null}};var c,i,e,g,j;b.mask={load:function(a,d){if(e)return this;if(typeof a=="string")a={color:a};a=a||g;g=a=b.extend(b.extend({},l.conf),a);c=b("#"+a.maskId);if(!c.length){c=b("
      ").attr("id",a.maskId);b("body").append(c)}var m=k();c.css({position:"absolute",top:0,left:0,width:m[0],height:m[1],display:"none",opacity:a.startOpacity,zIndex:a.zIndex});a.color&&c.css("backgroundColor",a.color);if(h(a.onBeforeLoad)===false)return this;a.closeOnEsc&&b(document).bind("keydown.mask",function(f){f.keyCode== + 27&&b.mask.close(f)});a.closeOnClick&&c.bind("click.mask",function(f){b.mask.close(f)});b(window).bind("resize.mask",function(){b.mask.fit()});if(d&&d.length){j=d.eq(0).css("zIndex");b.each(d,function(){var f=b(this);/relative|absolute|fixed/i.test(f.css("position"))||f.css("position","relative")});i=d.css({zIndex:Math.max(a.zIndex+1,j=="auto"?0:j)})}c.css({display:"block"}).fadeTo(a.loadSpeed,a.opacity,function(){b.mask.fit();h(a.onLoad);e="full"});e=true;return this},close:function(){if(e){if(h(g.onBeforeClose)=== + false)return this;c.fadeOut(g.closeSpeed,function(){h(g.onClose);i&&i.css({zIndex:j});e=false});b(document).unbind("keydown.mask");c.unbind("click.mask");b(window).unbind("resize.mask")}return this},fit:function(){if(e){var a=k();c.css({width:a[0],height:a[1]})}},getMask:function(){return c},isLoaded:function(a){return a?e=="full":e},getConf:function(){return g},getExposed:function(){return i}};b.fn.mask=function(a){b.mask.load(a);return this};b.fn.expose=function(a){b.mask.load(a,this);return this}})(jQuery); + + /* jQuery timePicker - http://labs.perifer.se/timedatepicker/ @ http://github.com/perifer/timePicker commit 100644 */ + (function(a){function g(a){a.setFullYear(2001),a.setMonth(0),a.setDate(0);return a}function f(a,b){if(a){var c=a.split(b.separator),d=parseFloat(c[0]),e=parseFloat(c[1]);b.show24Hours||(d===12&&a.indexOf("AM")!==-1?d=0:d!==12&&a.indexOf("PM")!==-1&&(d+=12));var f=new Date(0,0,0,d,e,0);return g(f)}return null}function e(a,b){return typeof a=="object"?g(a):f(a,b)}function d(a){return(a<10?"0":"")+a}function c(a,b){var c=a.getHours(),e=b.show24Hours?c:(c+11)%12+1,f=a.getMinutes();return d(e)+b.separator+d(f)+(b.show24Hours?"":c<12?" AM":" PM")}function b(b,c,d,e){b.value=a(c).text(),a(b).change(),a.browser.msie||b.focus(),d.hide()}a.fn.timePicker=function(b){var c=a.extend({},a.fn.timePicker.defaults,b);return this.each(function(){a.timePicker(this,c)})},a.timePicker=function(b,c){var d=a(b)[0];return d.timePicker||(d.timePicker=new jQuery._timePicker(d,c))},a.timePicker.version="0.3",a._timePicker=function(d,h){var i=!1,j=!1,k=e(h.startTime,h),l=e(h.endTime,h),m="selected",n="li."+m;a(d).attr("autocomplete","OFF");var o=[],p=new Date(k);while(p<=l)o[o.length]=c(p,h),p=new Date(p.setMinutes(p.getMinutes()+h.step));var q=a('
      '),r=a("
        ");for(var s=0;s"+o[s]+"");q.append(r),q.appendTo("body").hide(),q.mouseover(function(){i=!0}).mouseout(function(){i=!1}),a("li",r).mouseover(function(){j||(a(n,q).removeClass(m),a(this).addClass(m))}).mousedown(function(){i=!0}).click(function(){b(d,this,q,h),i=!1});var t=function(){if(q.is(":visible"))return!1;a("li",q).removeClass(m);var b=a(d).offset();q.css({top:b.top+d.offsetHeight,left:b.left}),q.show();var e=d.value?f(d.value,h):k,i=k.getHours()*60+k.getMinutes(),j=e.getHours()*60+e.getMinutes()-i,n=Math.round(j/h.step),o=g(new Date(0,0,0,0,n*h.step+i,0));o=kf+q[0].offsetHeight&&(q[0].scrollTop=f+i.offsetHeight)):(e.removeClass(m),i=a("li:first",r).addClass(m)[0],q[0].scrollTop=0);return!1;case 13:if(q.is(":visible")){var k=a(n,r)[0];b(d,k,q,h)}return!1;case 27:q.hide();return!1}return!0}),a(d).keyup(function(a){j=!1}),this.getTime=function(){return f(d.value,h)},this.setTime=function(b){d.value=c(e(b,h),h),a(d).change()}},a.fn.timePicker.defaults={step:30,startTime:new Date(0,0,0,0,0,0),endTime:new Date(0,0,0,23,30,0),separator:":",show24Hours:!0}})(jQuery) \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/events-manager.js b/wp-content/plugins/events-manager/includes/js/events-manager.js new file mode 100644 index 0000000..cb2dc2e --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/events-manager.js @@ -0,0 +1,867 @@ +var load_ui_css = false; //load jquery ui css? +jQuery(document).ready( function($){ + /* Time Entry */ + $('#start-time').each(function(i, el){ + $(el).addClass('em-time-input em-time-start').next('#end-time').addClass('em-time-input em-time-end').parent().addClass('em-time-range'); + }); + if( $(".em-time-input").length > 0 ){ + $(".em-time-input").timePicker({ + show24Hours: EM.show24hours == 1, + step:15 + }); + + // Keep the duration between the two inputs. + $(".em-time-range input.em-time-start").each( function(i, el){ + $(el).data('oldTime', $.timePicker(el).getTime()); + }).change( function() { + var start = $(this); + var end = start.next('.em-time-end'); + if (end.val()) { // Only update when second input has a value. + // Calculate duration. + var oldTime = start.data('oldTime'); + var duration = ($.timePicker(end).getTime() - oldTime); + var time = $.timePicker(start).getTime(); + if( $.timePicker(end).getTime() >= oldTime ){ + // Calculate and update the time in the second input. + $.timePicker(end).setTime(new Date(new Date(time.getTime() + duration))); + } + start.data('oldTime', time); + } + }); + // Validate. + $(".em-time-range input.em-time-end").change(function() { + var end = $(this); + var start = end.prev('.em-time-start'); + if( start.val() ){ + if($.timePicker(start).getTime() > $.timePicker(this).getTime()) { end.addClass("error"); } + else { end.removeClass("error"); } + } + }); + //Sort out all day checkbox + $('.em-time-range input.em-time-all-day').change(function(){ + var allday = $(this); + if( allday.is(':checked') ){ + allday.siblings('.em-time-input').css('background-color','#ccc'); + }else{ + allday.siblings('.em-time-input').css('background-color','#fff'); + } + }).trigger('change'); + } + /* Calendar AJAX */ + $('.em-calendar-wrapper a').unbind("click"); + $('.em-calendar-wrapper a').undelegate("click"); + $('.em-calendar-wrapper').delegate('a.em-calnav, a.em-calnav', 'click', function(e){ + e.preventDefault(); + $(this).closest('.em-calendar-wrapper').prepend('
        '); + var url = em_ajaxify($(this).attr('href')); + $(this).closest('.em-calendar-wrapper').load(url, function(){$(this).trigger('em_calendar_load');}); + } ); + + //Events Search + $('.em-events-search-form select[name=country]').change( function(){ + $('.em-events-search select[name=state]').html(''); + $('.em-events-search select[name=region]').html(''); + $('.em-events-search select[name=town]').html(''); + var data = { + action : 'search_states', + country : $(this).val(), + return_html : true + }; + $('.em-events-search select[name=state]').load( EM.ajaxurl, data ); + data.action = 'search_regions'; + $('.em-events-search select[name=region]').load( EM.ajaxurl, data ); + data.action = 'search_towns'; + $('.em-events-search select[name=town]').load( EM.ajaxurl, data ); + }); + + $('.em-events-search-form select[name=region]').change( function(){ + $('.em-events-search select[name=state]').html(''); + $('.em-events-search select[name=town]').html(''); + var data = { + action : 'search_states', + region : $(this).val(), + country : $('.em-events-search-form select[name=country]').val(), + return_html : true + }; + $('.em-events-search select[name=state]').load( EM.ajaxurl, data ); + data.action = 'search_towns'; + $('.em-events-search select[name=town]').load( EM.ajaxurl, data ); + }); + + $('.em-events-search-form select[name=state]').change( function(){ + $('.em-events-search select[name=town]').html(''); + var data = { + action : 'search_towns', + state : $(this).val(), + region : $('.em-events-search-form select[name=region]').val(), + country : $('.em-events-search-form select[name=country]').val(), + return_html : true + }; + $('.em-events-search select[name=town]').load( EM.ajaxurl, data ); + }); + + //in order for this to work, you need the above classes to be present in your templates + $(document).delegate('.em-events-search-form', 'submit', function(e){ + if( this.search && this.search.value== EM.txt_search ){ this.search.value = ''; } + if( this.em_search && this.em_search.value== EM.txt_search){ this.em_search.value = ''; } + if( $('#em-wrapper .em-events-search-ajax').length == 1 ){ + e.preventDefault(); + $('.em-events-search-form :submit').val(EM.txt_searching); + $.ajax( EM.ajaxurl, { + dataType : 'html', + data : $(this).serialize(), + success : function(responseText) { + $('.em-events-search-form :submit').val(EM.txt_search); + $('#em-wrapper .em-events-search-ajax').replaceWith(responseText); + } + }); + return false; + } + }); + if( $('#em-wrapper .em-events-search-ajax').length > 0 ){ + $(document).delegate('#em-wrapper .em-events-search-ajax a.page-numbers', 'click', function(e){ + e.preventDefault(); + var pageNo = $(this).attr('title'); + if( $('.em-events-search-form input[name="page"]').length > 0 ){ + $('.em-events-search-form input[name="page"]').val(pageNo); + }else{ + $('.em-events-search-form').append(''); + } + $('.em-events-search-form').trigger('submit'); + return false; + }); + } + + /* + * ADMIN AREA AND PUBLIC FORMS (Still polishing this section up, note that form ids and classes may change accordingly) + */ + //Events List + //Approve/Reject Links + $(document).delegate('.em-event-delete', 'click', function(){ + if( !confirm("Are you sure you want to delete?") ){ return false; } + var url = em_ajaxify( el.attr('href')); + var td = el.parents('td').first(); + td.html("Loading..."); + td.load( url ); + return false; + }); + //Tickets + if( $("#em-tickets-form").length > 0 ){ + load_ui_css = true; + //Dialog/Overlay + $("#em-tickets-form").dialog({ + modal : true, + autoOpen: false, + minWidth: 350, + height: 'auto', + buttons: [{ + text: EM.tickets_save, + click: function(e){ + e.preventDefault(); + //Submitting ticket (Add/Edit) + $('#em-tickets-intro').remove(); + //first we get the template to insert this to + if( $('#em-tickets-form form input[name=prev_slot]').val() ){ + //grab slot and populate + var slot = $('#'+$('#em-tickets-form form input[name=prev_slot]').val()); + var rowNo = slot.attr('id').replace('em-tickets-row-',''); + var edit = true; + }else{ + //create copy of template slot, insert so ready for population + var rowNo = $('#em-tickets-body').children('tr').length+1; + var slot = $('#em-tickets-body tr').first().clone().attr('id','em-tickets-row-'+ rowNo).appendTo($('#em-tickets-body')); + var edit = false; + slot.show(); + } + var postData = {}; + $.each($('#em-tickets-form form *[name]'), function(index,el){ + el = $(el); + slot.find('input.'+el.attr('name')).attr({ + 'value' : el.attr('value'), + 'name' : 'em_tickets['+rowNo+']['+el.attr('name')+']' + }); + if( el.attr('name') == 'ticket_start_pub'){ + slot.find('span.ticket_start').text(el.attr('value')); + }else if( el.attr('name') == 'ticket_end_pub' ){ + slot.find('span.ticket_end').text(el.attr('value')); + }else{ + slot.find('span.'+el.attr('name')).text(el.attr('value')); + } + }); + //allow for others to hook into this + $(document).triggerHandler('em_maps_tickets_edit', [slot, rowNo, edit]); + //sort out dates and localization masking + var start_pub = $("#em-tickets-form input[name=ticket_start_pub]").val(); + var end_pub = $("#em-tickets-form input[name=ticket_end_pub]").val(); + $('#em-tickets-form *[name]').attr('value',''); + $('#em-tickets-form .close').trigger('click'); + $(this).dialog('close'); + } + }] + }); + $("#em-tickets-add").click(function(e){ e.preventDefault(); $('#em-tickets-form *[name]').attr('value',''); $("#em-tickets-form").dialog('open'); }); + //Edit a Ticket + $(document).delegate('.ticket-actions-edit', 'click', function(e){ + //trigger click + e.preventDefault(); + $('#em-tickets-add').trigger('click'); + //populate form + var rowId = $(this).parents('tr').first().attr('id'); + $('#em-tickets-form *[name]').attr('value',''); + $.each( $('#'+rowId+' *[name]'), function(index,el){ + var el = $(el); + var selector = el.attr('class'); + $('#em-tickets-form *[name='+selector+']').attr('value',el.attr('value')); + }); + $("#em-tickets-form input[name=prev_slot]").attr('value',rowId); //save the current slot number + //refresh datepicker and values + $("#em-tickets-form .em-date-input-loc").datepicker('refresh'); + $('#em-tickets-form input.em-date-input-loc').each(function(i,el){ + el = $(el); + date_value = el.next('.em-date-input').val(); + if( date_value != '' ){ + date_formatted = $.datepicker.formatDate( EM.dateFormat, $.datepicker.parseDate('yy-mm-dd', date_value) ); + el.val(date_formatted); + } + }); + return false; + }); + //Delete a ticket + $(document).delegate('.ticket-actions-delete', 'click', function(e){ + e.preventDefault(); + var el = $(this); + var rowId = $(this).parents('tr').first().attr('id'); + if( $('#'+rowId+' input.ticket_id').attr('value') == '' ){ + //not saved to db yet, so just remove + $('#'+rowId).remove(); + }else{ + //only will happen if no bookings made + el.text('Deleting...'); + $.getJSON( $(this).attr('href'), {'em_ajax_action':'delete_ticket', 'id':$('#'+rowId+' input.ticket_id').attr('value')}, function(data){ + if(data.result){ + $('#'+rowId).remove(); + }else{ + el.text('Delete'); + alert(data.error); + } + }); + } + return false; + }); + } + //Manageing Bookings + if( $('#em-bookings-table').length > 0 ){ + //Pagination link clicks + $(document).delegate('#em-bookings-table .tablenav-pages a', 'click', function(){ + var el = $(this); + var form = el.parents('#em-bookings-table form.bookings-filter'); + //get page no from url, change page, submit form + var match = el.attr('href').match(/#[0-9]+/); + if( match != null && match.length > 0){ + var pno = match[0].replace('#',''); + form.find('input[name=pno]').val(pno); + }else{ + form.find('input[name=pno]').val(1); + } + form.trigger('submit'); + return false; + }); + //Overlay Options + var em_bookings_settings_dialog = { + modal : true, + autoOpen: false, + minWidth: 500, + height: 'auto', + buttons: [{ + text: EM.bookings_settings_save, + click: function(e){ + e.preventDefault(); + //we know we'll deal with cols, so wipe hidden value from main + var match = $("#em-bookings-table form.bookings-filter [name=cols]").val(''); + var booking_form_cols = $('form#em-bookings-table-settings-form input.em-bookings-col-item'); + $.each( booking_form_cols, function(i,item_match){ + //item_match = $(item_match); + if( item_match.value == 1 ){ + if( match.val() != ''){ + match.val(match.val()+','+item_match.name); + }else{ + match.val(item_match.name); + } + } + }); + //submit main form + $('#em-bookings-table-settings').trigger('submitted'); //hook into this with bind() + $('#em-bookings-table form.bookings-filter').trigger('submit'); + $(this).dialog('close'); + } + }] + }; + var em_bookings_export_dialog = { + modal : true, + autoOpen: false, + minWidth: 500, + height: 'auto', + buttons: [{ + text: EM.bookings_export_save, + click: function(e){ + $(this).children('form').submit(); + $(this).dialog('close'); + } + }] + }; + if( $("#em-bookings-table-settings").length > 0 ){ + //Settings Overlay + $("#em-bookings-table-settings").dialog(em_bookings_settings_dialog); + $(document).delegate('#em-bookings-table-settings-trigger','click', function(e){ e.preventDefault(); $("#em-bookings-table-settings").dialog('open'); }); + //Export Overlay + $("#em-bookings-table-export").dialog(em_bookings_export_dialog); + $(document).delegate('#em-bookings-table-export-trigger','click', function(e){ e.preventDefault(); $("#em-bookings-table-export").dialog('open'); }); + var export_overlay_show_tickets = function(){ + if( $('#em-bookings-table-export-form input[name=show_tickets]').is(':checked') ){ + $('#em-bookings-table-export-form .em-bookings-col-item-ticket').show(); + $('#em-bookings-table-export-form #em-bookings-export-cols-active .em-bookings-col-item-ticket input').val(1); + }else{ + $('#em-bookings-table-export-form .em-bookings-col-item-ticket').hide().find('input').val(0); + } + }; + export_overlay_show_tickets(); + $('#em-bookings-table-export-form input[name=show_tickets]').click(export_overlay_show_tickets); + //Sortables + $( ".em-bookings-cols-sortable" ).sortable({ + connectWith: ".em-bookings-cols-sortable", + over: function(event, ui) { + if( ui.item.hasClass('ui-state-highlight') ){ + ui.item.addClass('ui-state-default').removeClass('ui-state-highlight').children('input').val(0); + }else{ + ui.item.addClass('ui-state-highlight').removeClass('ui-state-default').children('input').val(1); + } + } + }).disableSelection(); + load_ui_css = true; + } + //Widgets and filter submissions + $(document).delegate('#em-bookings-table form.bookings-filter', 'submit', function(e){ + var el = $(this); + //append loading spinner + el.parents('#em-bookings-table').find('.table-wrap').first().append('
        '); + //ajax call + $.post( EM.ajaxurl, el.serializeArray(), function(data){ + el.parents('#em-bookings-table').first().replaceWith(data); + //recreate overlays + if( $("#em-bookings-table-settings").length > 0 ){ + setup_sortable(); + } + }); + return false; + }); + //Approve/Reject Links + $(document).delegate('.em-bookings-approve,.em-bookings-reject,.em-bookings-unapprove,.em-bookings-delete', 'click', function(){ + var el = $(this); + if( el.hasClass('em-bookings-delete') ){ + if( !confirm(EM.booking_delete) ){ return false; } + } + var url = em_ajaxify( el.attr('href')); + var td = el.parents('td').first(); + td.html(EM.txt_loading); + td.load( url ); + return false; + }); + } + //Old Bookings Table - depreciating soon + if( $('.em_bookings_events_table').length > 0 ){ + //Widgets and filter submissions + $(document).delegate('.em_bookings_events_table form', 'submit', function(e){ + var el = $(this); + var url = em_ajaxify( el.attr('action') ); + el.parents('.em_bookings_events_table').find('.table-wrap').first().append('
        '); + $.get( url, el.serializeArray(), function(data){ + el.parents('.em_bookings_events_table').first().replaceWith(data); + }); + return false; + }); + //Pagination link clicks + $(document).delegate('.em_bookings_events_table .tablenav-pages a', 'click', function(){ + var el = $(this); + var url = em_ajaxify( el.attr('href') ); + el.parents('.em_bookings_events_table').find('.table-wrap').first().append('
        '); + $.get( url, function(data){ + el.parents('.em_bookings_events_table').first().replaceWith(data); + }); + return false; + }); + } + + //Datepicker + if( $('.em-date-single, .em-date-range, #em-date-start').length > 0 ){ + if( EM.locale != 'en' ){ + $.datepicker.regional['nl']={closeText:'Sluiten',prevText:'â†',nextText:'→',currentText:'Vandaag',monthNames:['januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december'],monthNamesShort:['jan','feb','maa','apr','mei','jun','jul','aug','sep','okt','nov','dec'],dayNames:['zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag'],dayNamesShort:['zon','maa','din','woe','don','vri','zat'],dayNamesMin:['zo','ma','di','wo','do','vr','za'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['af']={closeText:'Selekteer',prevText:'Vorige',nextText:'Volgende',currentText:'Vandag',monthNames:['Januarie','Februarie','Maart','April','Mei','Junie','Julie','Augustus','September','Oktober','November','Desember'],monthNamesShort:['Jan','Feb','Mrt','Apr','Mei','Jun','Jul','Aug','Sep','Okt','Nov','Des'],dayNames:['Sondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrydag','Saterdag'],dayNamesShort:['Son','Maa','Din','Woe','Don','Vry','Sat'],dayNamesMin:['So','Ma','Di','Wo','Do','Vr','Sa'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['ar']={closeText:'إغلاق',prevText:'<السابق',nextText:'التالي>',currentText:'اليوم',monthNames:['كانون الثاني','شباط','آذار','نيسان','آذار','حزيران','تموز','آب','أيلول','تشرين الأول','تشرين الثاني','كانون الأول'],monthNamesShort:['1','2','3','4','5','6','7','8','9','10','11','12'],dayNames:['السبت','الأحد','الاثنين','الثلاثاء','الأربعاء','الخميس','الجمعة'],dayNamesShort:['سبت','أحد','اثنين','ثلاثاء','أربعاء','خميس','جمعة'],dayNamesMin:['سبت','أحد','اثنين','ثلاثاء','أربعاء','خميس','جمعة'],weekHeader:'أسبوع',dateFormat:'dd/mm/yy',firstDay:0,isRTL:true,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['az']={closeText:'BaÄŸla',prevText:'',currentText:'Bugün',monthNames:['Yanvar','Fevral','Mart','Aprel','May','İyun','İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],monthNamesShort:['Yan','Fev','Mar','Apr','May','İyun','İyul','Avq','Sen','Okt','Noy','Dek'],dayNames:['Bazar','Bazar ertÉ™si','ÇərÅŸÉ™nbÉ™ axÅŸamı','ÇərÅŸÉ™nbÉ™','CümÉ™ axÅŸamı','CümÉ™','ŞənbÉ™'],dayNamesShort:['B','Be','Ça','Ç','Ca','C','Åž'],dayNamesMin:['B','B','Ç','С','Ç','C','Åž'],weekHeader:'Hf',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['bg']={closeText:'затвори',prevText:'<назад',nextText:'напред>',nextBigText:'>>',currentText:'днеÑ',monthNames:['Януари','Февруари','Март','Ðприл','Май','Юни','Юли','ÐвгуÑÑ‚','Септември','Октомври','Ðоември','Декември'],monthNamesShort:['Яну','Фев','Мар','Ðпр','Май','Юни','Юли','Ðвг','Сеп','Окт','Ðов','Дек'],dayNames:['ÐеделÑ','Понеделник','Вторник','СрÑда','Четвъртък','Петък','Събота'],dayNamesShort:['Ðед','Пон','Вто','СрÑ','Чет','Пет','Съб'],dayNamesMin:['Ðе','По','Ð’Ñ‚','Ср','Че','Пе','Съ'],weekHeader:'Wk',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['bs']={closeText:'Zatvori',prevText:'<',nextText:'>',currentText:'Danas',monthNames:['Januar','Februar','Mart','April','Maj','Juni','Juli','August','Septembar','Oktobar','Novembar','Decembar'],monthNamesShort:['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'],dayNames:['Nedelja','Ponedeljak','Utorak','Srijeda','ÄŒetvrtak','Petak','Subota'],dayNamesShort:['Ned','Pon','Uto','Sri','ÄŒet','Pet','Sub'],dayNamesMin:['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'],weekHeader:'Wk',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['ca'] = {closeText: 'Tancar',prevText: '<Ant',nextText: 'Seg>',currentText: 'Avui',monthNames: ['Gener','Febrer','Març','Abril','Maig','Juny','Juliol','Agost','Setembre','Octubre','Novembre','Desembre'],monthNamesShort: ['Gen','Feb','Mar','Abr','Mai','Jun','Jul','Ago','Set','Oct','Nov','Des'],dayNames: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'],dayNamesShort: ['Dug','Dln','Dmt','Dmc','Djs','Dvn','Dsb'],dayNamesMin: ['Dg','Dl','Dt','Dc','Dj','Dv','Ds'],weekHeader: 'Sm',dateFormat: 'dd/mm/yy',firstDay: 1,isRTL: false,showMonthAfterYear: false,yearSuffix: ''}; + $.datepicker.regional['cs']={closeText:'Zavřít',prevText:'',currentText:'Nyní',monthNames:['leden','únor','bÅ™ezen','duben','kvÄ›ten','Äerven','Äervenec','srpen','září','říjen','listopad','prosinec'],monthNamesShort:['led','úno','bÅ™e','dub','kvÄ›','Äer','Ävc','srp','zář','říj','lis','pro'],dayNames:['nedÄ›le','pondÄ›lí','úterý','stÅ™eda','Ätvrtek','pátek','sobota'],dayNamesShort:['ne','po','út','st','Ät','pá','so'],dayNamesMin:['ne','po','út','st','Ät','pá','so'],weekHeader:'Týd',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['da']={closeText:'Luk',prevText:'',currentText:'Idag',monthNames:['Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December'],monthNamesShort:['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'],dayNames:['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],dayNamesShort:['Søn','Man','Tir','Ons','Tor','Fre','Lør'],dayNamesMin:['Sø','Ma','Ti','On','To','Fr','Lø'],weekHeader:'Uge',dateFormat:'dd-mm-yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['de']={closeText:'schließen',prevText:'',currentText:'heute',monthNames:['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],monthNamesShort:['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],dayNames:['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],dayNamesShort:['So','Mo','Di','Mi','Do','Fr','Sa'],dayNamesMin:['So','Mo','Di','Mi','Do','Fr','Sa'],weekHeader:'Wo',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['el']={closeText:'Κλείσιμο',prevText:'ΠÏοηγοÏμενος',nextText:'Επόμενος',currentText:'ΤÏέχων Μήνας',monthNames:['ΙανουάÏιος','ΦεβÏουάÏιος','ΜάÏτιος','ΑπÏίλιος','Μάιος','ΙοÏνιος','ΙοÏλιος','ΑÏγουστος','ΣεπτέμβÏιος','ΟκτώβÏιος','ÎοέμβÏιος','ΔεκέμβÏιος'],monthNamesShort:['Ιαν','Φεβ','ΜαÏ','ΑπÏ','Μαι','Ιουν','Ιουλ','Αυγ','Σεπ','Οκτ','Îοε','Δεκ'],dayNames:['ΚυÏιακή','ΔευτέÏα','ΤÏίτη','ΤετάÏτη','Πέμπτη','ΠαÏασκευή','Σάββατο'],dayNamesShort:['ΚυÏ','Δευ','ΤÏι','Τετ','Πεμ','ΠαÏ','Σαβ'],dayNamesMin:['Κυ','Δε','ΤÏ','Τε','Πε','Πα','Σα'],weekHeader:'Εβδ',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['en-GB']={closeText:'Done',prevText:'Prev',nextText:'Next',currentText:'Today',monthNames:['January','February','March','April','May','June','July','August','September','October','November','December'],monthNamesShort:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],dayNames:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],dayNamesShort:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],dayNamesMin:['Su','Mo','Tu','We','Th','Fr','Sa'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['eo']={closeText:'Fermi',prevText:'',currentText:'Nuna',monthNames:['Januaro','Februaro','Marto','Aprilo','Majo','Junio','Julio','AÅ­gusto','Septembro','Oktobro','Novembro','Decembro'],monthNamesShort:['Jan','Feb','Mar','Apr','Maj','Jun','Jul','AÅ­g','Sep','Okt','Nov','Dec'],dayNames:['Dimanĉo','Lundo','Mardo','Merkredo','Ä´aÅ­do','Vendredo','Sabato'],dayNamesShort:['Dim','Lun','Mar','Mer','Ä´aÅ­','Ven','Sab'],dayNamesMin:['Di','Lu','Ma','Me','Ä´a','Ve','Sa'],weekHeader:'Sb',dateFormat:'dd/mm/yy',firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['et']={closeText:'Sulge',prevText:'Eelnev',nextText:'Järgnev',currentText:'Täna',monthNames:['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni','Juuli','August','September','Oktoober','November','Detsember'],monthNamesShort:['Jaan','Veebr','Märts','Apr','Mai','Juuni','Juuli','Aug','Sept','Okt','Nov','Dets'],dayNames:['Pühapäev','Esmaspäev','Teisipäev','Kolmapäev','Neljapäev','Reede','Laupäev'],dayNamesShort:['Pühap','Esmasp','Teisip','Kolmap','Neljap','Reede','Laup'],dayNamesMin:['P','E','T','K','N','R','L'],weekHeader:'Sm',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['eu']={closeText:'Egina',prevText:'',currentText:'Gaur',monthNames:['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina','Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'],monthNamesShort:['Urt','Ots','Mar','Api','Mai','Eka','Uzt','Abu','Ira','Urr','Aza','Abe'],dayNames:['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'],dayNamesShort:['Iga','Ast','Ast','Ast','Ost','Ost','Lar'],dayNamesMin:['Ig','As','As','As','Os','Os','La'],weekHeader:'Wk',dateFormat:'yy/mm/dd',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['fa']={closeText:'بستن',prevText:'<قبلي',nextText:'بعدي>',currentText:'امروز',monthNames:['ÙØ±ÙˆØ±Ø¯ÙŠÙ†','ارديبهشت','خرداد','تير','مرداد','شهريور','مهر','آبان','آذر','دي','بهمن','اسÙند'],monthNamesShort:['1','2','3','4','5','6','7','8','9','10','11','12'],dayNames:['يکشنبه','دوشنبه','سه‌شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'],dayNamesShort:['ÙŠ','د','س','Ú†','Ù¾','ج','Ø´'],dayNamesMin:['ÙŠ','د','س','Ú†','Ù¾','ج','Ø´'],weekHeader:'Ù‡Ù',dateFormat:'yy/mm/dd',firstDay:6,isRTL:true,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['fi'] = {closeText: 'Sulje',prevText: '«Edellinen',nextText: 'Seuraava»',currentText: 'Tänään',monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu','Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä','Heinä','Elo','Syys','Loka','Marras','Joulu'],dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','Su'],dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'],dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'],weekHeader: 'Vk',dateFormat: 'dd.mm.yy',firstDay: 1,isRTL: false,showMonthAfterYear: false,yearSuffix: ''}; + $.datepicker.regional['fo']={closeText:'Lat aftur',prevText:'',currentText:'à dag',monthNames:['Januar','Februar','Mars','Apríl','Mei','Juni','Juli','August','September','Oktober','November','Desember'],monthNamesShort:['Jan','Feb','Mar','Apr','Mei','Jun','Jul','Aug','Sep','Okt','Nov','Des'],dayNames:['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'],dayNamesShort:['Sun','Mán','Týs','Mik','Hós','Frí','Ley'],dayNamesMin:['Su','Má','Tý','Mi','Hó','Fr','Le'],weekHeader:'Vk',dateFormat:'dd-mm-yy',firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['fr-CH']={closeText:'Fermer',prevText:'',currentText:'Courant',monthNames:['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],monthNamesShort:['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc'],dayNames:['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],dayNamesShort:['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],dayNamesMin:['Di','Lu','Ma','Me','Je','Ve','Sa'],weekHeader:'Sm',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['fr']={closeText:'Fermer',prevText:'',currentText:'Courant',monthNames:['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],monthNamesShort:['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc'],dayNames:['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],dayNamesShort:['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],dayNamesMin:['Di','Lu','Ma','Me','Je','Ve','Sa'],weekHeader:'Sm',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['he']={closeText:'סגור',prevText:'<הקוד×',nextText:'הב×>',currentText:'היו×',monthNames:['ינו×ר','פברו×ר','מרץ','×פריל','מ××™','יוני','יולי','×וגוסט','ספטמבר','×וקטובר','נובמבר','דצמבר'],monthNamesShort:['1','2','3','4','5','6','7','8','9','10','11','12'],dayNames:['ר×שון','שני','שלישי','רביעי','חמישי','שישי','שבת'],dayNamesShort:['×\'','ב\'','×’\'','ד\'','×”\'','ו\'','שבת'],dayNamesMin:['×\'','ב\'','×’\'','ד\'','×”\'','ו\'','שבת'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:0,isRTL:true,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['hu']={closeText:'Kész',prevText:'ElÅ‘zÅ‘',nextText:'KövetkezÅ‘',currentText:'Ma',monthNames:['január','február','március','április','május','június','július','augusztus','szeptember','október','november','cecember'],monthNamesShort:['jan','febr','márc','ápr','máj','jún','júl','aug','szept','okt','nov','dec'],dayNames:['vasárnap','hétfÅ‘','kedd','szerda','csütörtök','péntek','szombat'],dayNamesShort:['va','hé','k','sze','csü','pé','szo'],dayNamesMin:['v','h','k','sze','cs','p','szo'],weekHeader:'Wk',dateFormat:'yy.mm.dd.',firstDay:1,isRTL:false,showMonthAfterYear:true,yearSuffix:''}; + $.datepicker.regional['hr']={closeText:'Zatvori',prevText:'<',nextText:'>',currentText:'Danas',monthNames:['SijeÄanj','VeljaÄa','Ožujak','Travanj','Svibanj','Lipanj','Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],monthNamesShort:['Sij','Velj','Ožu','Tra','Svi','Lip','Srp','Kol','Ruj','Lis','Stu','Pro'],dayNames:['Nedjelja','Ponedjeljak','Utorak','Srijeda','ÄŒetvrtak','Petak','Subota'],dayNamesShort:['Ned','Pon','Uto','Sri','ÄŒet','Pet','Sub'],dayNamesMin:['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'],weekHeader:'Tje',dateFormat:'dd.mm.yy.',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['ja']={closeText:'é–‰ã˜ã‚‹',prevText:'<å‰',nextText:'次>',currentText:'今日',monthNames:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],monthNamesShort:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],dayNames:['日曜日','月曜日','ç«æ›œæ—¥','水曜日','木曜日','金曜日','土曜日'],dayNamesShort:['æ—¥','月','ç«','æ°´','木','金','土'],dayNamesMin:['æ—¥','月','ç«','æ°´','木','金','土'],weekHeader:'週',dateFormat:'yy/mm/dd',firstDay:0,isRTL:false,showMonthAfterYear:true,yearSuffix:'å¹´'}; + $.datepicker.regional['ro']={closeText:'ÃŽnchide',prevText:'« Luna precedentă',nextText:'Luna următoare »',currentText:'Azi',monthNames:['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie','Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],monthNamesShort:['Ian','Feb','Mar','Apr','Mai','Iun','Iul','Aug','Sep','Oct','Nov','Dec'],dayNames:['Duminică','Luni','MarÅ£i','Miercuri','Joi','Vineri','Sâmbătă'],dayNamesShort:['Dum','Lun','Mar','Mie','Joi','Vin','Sâm'],dayNamesMin:['Du','Lu','Ma','Mi','Jo','Vi','Sâ'],weekHeader:'Săpt',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['sk']={closeText: 'ZavrieÅ¥',prevText: '<Predchádzajúci',nextText: 'Nasledujúci>',currentText: 'Dnes',monthNames: ['Január','Február','Marec','Apríl','Máj','Jún','Júl','August','September','Október','November','December'],monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún','Júl','Aug','Sep','Okt','Nov','Dec'],dayNames: ['Nedel\'a','Pondelok','Utorok','Streda','Å tvrtok','Piatok','Sobota'],dayNamesShort: ['Ned','Pon','Uto','Str','Å tv','Pia','Sob'],dayNamesMin: ['Ne','Po','Ut','St','Å t','Pia','So'],weekHeader: 'Ty',dateFormat: 'dd.mm.yy',firstDay: 1,isRTL: false,showMonthAfterYear: false,yearSuffix: ''}; + $.datepicker.regional['sq']={closeText:'mbylle',prevText:'',currentText:'sot',monthNames:['Janar','Shkurt','Mars','Prill','Maj','Qershor','Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'],monthNamesShort:['Jan','Shk','Mar','Pri','Maj','Qer','Kor','Gus','Sht','Tet','Nën','Dhj'],dayNames:['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'],dayNamesShort:['Di','Hë','Ma','Më','En','Pr','Sh'],dayNamesMin:['Di','Hë','Ma','Më','En','Pr','Sh'],weekHeader:'Ja',dateFormat:'dd.mm.yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['sr-SR']={closeText:'Zatvori',prevText:'<',nextText:'>',currentText:'Danas',monthNames:['Januar','Februar','Mart','April','Maj','Jun','Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'],monthNamesShort:['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Avg','Sep','Okt','Nov','Dec'],dayNames:['Nedelja','Ponedeljak','Utorak','Sreda','ÄŒetvrtak','Petak','Subota'],dayNamesShort:['Ned','Pon','Uto','Sre','ÄŒet','Pet','Sub'],dayNamesMin:['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'],weekHeader:'Sed',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['sr']={closeText:'Затвори',prevText:'<',nextText:'>',currentText:'ДанаÑ',monthNames:['Јануар','Фебруар','Март','Ðприл','Мај','Јун','Јул','ÐвгуÑÑ‚','Септембар','Октобар','Ðовембар','Децембар'],monthNamesShort:['Јан','Феб','Мар','Ðпр','Мај','Јун','Јул','Ðвг','Сеп','Окт','Ðов','Дец'],dayNames:['Ðедеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],dayNamesShort:['Ðед','Пон','Уто','Сре','Чет','Пет','Суб'],dayNamesMin:['Ðе','По','Ут','Ср','Че','Пе','Су'],weekHeader:'Сед',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['sv']={closeText:'Stäng',prevText:'«Förra',nextText:'Nästa»',currentText:'Idag',monthNames:['Januari','Februari','Mars','April','Maj','Juni','Juli','Augusti','September','Oktober','November','December'],monthNamesShort:['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'],dayNamesShort:['Sön','MÃ¥n','Tis','Ons','Tor','Fre','Lör'],dayNames:['Söndag','MÃ¥ndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'],dayNamesMin:['Sö','MÃ¥','Ti','On','To','Fr','Lö'],weekHeader:'Ve',dateFormat:'yy-mm-dd',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['ta']={closeText:'மூடà¯',prevText:'à®®à¯à®©à¯à®©à¯ˆà®¯à®¤à¯',nextText:'அடà¯à®¤à¯à®¤à®¤à¯',currentText:'இனà¯à®±à¯',monthNames:['தை','மாசி','பஙà¯à®•à¯à®©à®¿','சிதà¯à®¤à®¿à®°à¯ˆ','வைகாசி','ஆனி','ஆடி','ஆவணி','பà¯à®°à®Ÿà¯à®Ÿà®¾à®šà®¿','à®à®ªà¯à®ªà®šà®¿','காரà¯à®¤à¯à®¤à®¿à®•ை','மாரà¯à®•ழி'],monthNamesShort:['தை','மாசி','பஙà¯','சிதà¯','வைகா','ஆனி','ஆடி','ஆவ','பà¯à®°','à®à®ªà¯','காரà¯','மாரà¯'],dayNames:['ஞாயிறà¯à®±à¯à®•à¯à®•ிழமை','திஙà¯à®•டà¯à®•ிழமை','செவà¯à®µà®¾à®¯à¯à®•à¯à®•ிழமை','பà¯à®¤à®©à¯à®•ிழமை','வியாழகà¯à®•ிழமை','வெளà¯à®³à®¿à®•à¯à®•ிழமை','சனிகà¯à®•ிழமை'],dayNamesShort:['ஞாயிறà¯','திஙà¯à®•ளà¯','செவà¯à®µà®¾à®¯à¯','பà¯à®¤à®©à¯','வியாழனà¯','வெளà¯à®³à®¿','சனி'],dayNamesMin:['ஞா','தி','செ','பà¯','வி','வெ','ச'],weekHeader:'Ðе',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['th']={closeText:'ปิด',prevText:'« ย้อน',nextText:'ถัดไป »',currentText:'วันนี้',monthNames:['มà¸à¸£à¸²à¸„ม','à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','à¸à¸£à¸à¸à¸²à¸„ม','สิงหาคม','à¸à¸±à¸™à¸¢à¸²à¸¢à¸™','ตุลาคม','พฤศจิà¸à¸²à¸¢à¸™','ธันวาคม'],monthNamesShort:['ม.ค.','à¸.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.','à¸.ค.','ส.ค.','à¸.ย.','ต.ค.','พ.ย.','ธ.ค.'],dayNames:['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุà¸à¸£à¹Œ','เสาร์'],dayNamesShort:['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],dayNamesMin:['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['vi']={closeText:'Äóng',prevText:'',currentText:'Hôm nay',monthNames:['Tháng Má»™t','Tháng Hai','Tháng Ba','Tháng Tư','Tháng Năm','Tháng Sáu','Tháng Bảy','Tháng Tám','Tháng Chín','Tháng Mưá»i','Tháng Mưá»i Má»™t','Tháng Mưá»i Hai'],monthNamesShort:['Tháng 1','Tháng 2','Tháng 3','Tháng 4','Tháng 5','Tháng 6','Tháng 7','Tháng 8','Tháng 9','Tháng 10','Tháng 11','Tháng 12'],dayNames:['Chá»§ Nhật','Thứ Hai','Thứ Ba','Thứ Tư','Thứ Năm','Thứ Sáu','Thứ Bảy'],dayNamesShort:['CN','T2','T3','T4','T5','T6','T7'],dayNamesMin:['CN','T2','T3','T4','T5','T6','T7'],weekHeader:'Tu',dateFormat:'dd/mm/yy',firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['zh-TW']={closeText:'關閉',prevText:'<上月',nextText:'下月>',currentText:'今天',monthNames:['一月','二月','三月','四月','五月','六月','七月','八月','乿œˆ','åæœˆ','å一月','å二月'],monthNamesShort:['一','二','三','å››','五','å…­','七','å…«','ä¹','å','å一','å二'],dayNames:['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],dayNamesShort:['周日','周一','周二','周三','周四','周五','周六'],dayNamesMin:['æ—¥','一','二','三','å››','五','å…­'],weekHeader:'周',dateFormat:'yy/mm/dd',firstDay:1,isRTL:false,showMonthAfterYear:true,yearSuffix:'å¹´'}; + $.datepicker.regional['es']={closeText:'Cerrar',prevText:'',currentText:'Hoy',monthNames:['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],monthNamesShort:['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'],dayNames:['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],dayNamesShort:['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],dayNamesMin:['Do','Lu','Ma','Mi','Ju','Vi','Sá'],weekHeader:'Sm',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.regional['it']={closeText:'Fatto',prevText:'Precedente',nextText:'Prossimo',currentText:'Oggi',monthNames:['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],monthNamesShort:['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'],dayNames:['Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato','Domenica'],dayNamesShort:['Lun','Mar','Mer','Gio','Ven','Sab','Dom'],dayNamesMin:['Do','Lu','Ma','Me','Gi','Ve','Sa'],weekHeader:'Wk',dateFormat:'dd/mm/yy',firstDay:1,isRTL:false,showMonthAfterYear:false,yearSuffix:''}; + $.datepicker.setDefaults($.datepicker.regional[EM.locale]); + } + load_ui_css = true; + //default picker vals + var datepicker_vals = { altFormat: "yy-mm-dd", changeMonth: true, changeYear: true, firstDay : EM.firstDay }; + if( EM.dateFormat != ''){ + datepicker_vals.dateFormat = EM.dateFormat; + } + + //initialize legacy start/end dates, makes the following code compatible + if( $('#em-date-start').length > 0 ){ + $('#em-date-start').addClass('em-date-input').parent().addClass('em-date-range'); + $("#em-date-start-loc").addClass('em-date-input-loc em-date-start'); + $('#em-date-end').addClass('em-date-input'); + $("#em-date-end-loc").addClass('em-date-input-loc em-date-end'); + } + if( $(".em-ticket-form, #em-tickets-form").length > 0 ){ + $(".em-ticket-form, #em-tickets-form .start").addClass('em-date-input').parent().addClass('em-date-single'); + $(".em-ticket-form, #em-tickets-form .start-loc").addClass('em-date-input-loc').each( + function(i,el){ $(el).prev('.start').insertAfter(el); + }); //reverse elements for comapatability + $(".em-ticket-form, #em-tickets-form .end").addClass('em-date-input').parent().addClass('em-date-single'); + $(".em-ticket-form, #em-tickets-form .end-loc").addClass('em-date-input-loc').each( + function(i,el){ $(el).prev('.end').insertAfter(el); + }); //reverse elements for comapatability + } + + //apply datepickers + dateDivs = $('.em-date-single, .em-date-range'); + if( dateDivs.length > 0 ){ + //apply datepickers to elements + dateDivs.find('input.em-date-input-loc').each(function(i,dateInput){ + //init the datepicker + var dateInput = $(dateInput); + var dateValue = dateInput.next('input.em-date-input'); + var dateValue_value = dateValue.val(); + dateInput.datepicker(datepicker_vals); + dateInput.datepicker('option', 'altField', dateValue); + //now set the value + if( dateValue_value ){ + var this_date_formatted = $.datepicker.formatDate( EM.dateFormat, $.datepicker.parseDate('yy-mm-dd', dateValue_value) ); + dateInput.val(this_date_formatted); + dateValue.val(dateValue_value); + } + //add logic for texts + dateInput.change(function(){ + var dateValue_value = $(this).val(); + if( !dateValue_value ){ + $(this).next('.em-date-input').val(''); + //this_date_formatted = $.datepicker.formatDate( 'yy-mm-dd', $.datepicker.parseDate(EM.dateFormat, dateValue_value) ); + } + }); + }); + //deal with date ranges + $('.em-date-range input.em-date-input-loc').each(function(i,dateInput){ + //finally, apply start/end logic to this field + dateInput = $(dateInput); + if( dateInput.hasClass('em-date-start') ){ + dateInput.datepicker('option','onSelect', function( selectedDate ) { + //get corresponding end date input, we expect ranges to be contained in .em-date-range with a start/end input element + var startDate = $(this); + var endDate = startDate.parents('.em-date-range').find('.em-date-end').first(); + if( startDate.val() > endDate.val() && endDate.val() != '' ){ + endDate.datepicker( "setDate" , selectedDate ); + } + endDate.datepicker( "option", 'minDate', selectedDate ); + }); + }else if( dateInput.hasClass('em-date-end') ){ + var startInput = dateInput.parents('.em-date-range').find('.em-date-start').first(); + if( startInput.val() != '' ){ + dateInput.datepicker('option', 'minDate', startInput.val()); + } + } + }); + } + + //for the tickets form too + /* + $(".em-ticket-form, #em-tickets-form").each(function(i, el){ + el = $(el); + start = el.find('.start-loc'); + end = el.find('.end-loc'); + load_ui_css = true; + if(start.length > 0){ + load_ui_css = true; + datepicker_vals.altField = el.find('.start').first(); + start.datepicker(datepicker_vals); + start_date_formatted = $.datepicker.formatDate( EM.dateFormat, $.datepicker.parseDate('yy-mm-dd' , datepicker_vals.altField.val()) ); + el.find(".start-loc").val(start_date_formatted); + //end + if(end.length > 0){ + load_ui_css = true; + datepicker_vals.altField = el.find('.end').first(); + end.first().datepicker(datepicker_vals); + end_date_formatted = $.datepicker.formatDate( EM.dateFormat, $.datepicker.parseDate('yy-mm-dd' , datepicker_vals.altField.val()) ); + el.find(".end-loc").first().val(end_date_formatted); + } + } + }); + */ + } + if( load_ui_css ){ + var script = document.createElement("link"); + script.id = 'jquery-ui-css'; + script.rel = "stylesheet"; + script.href = EM.ui_css; + document.body.appendChild(script); + } + + //previously in em-admin.php + function updateIntervalDescriptor () { + $(".interval-desc").hide(); + var number = "-plural"; + if ($('input#recurrence-interval').val() == 1 || $('input#recurrence-interval').val() == "") + number = "-singular"; + var descriptor = "span#interval-"+$("select#recurrence-frequency").val()+number; + $(descriptor).show(); + } + function updateIntervalSelectors () { + $('p.alternate-selector').hide(); + $('p#'+ $('select#recurrence-frequency').val() + "-selector").show(); + } + function updateShowHideRecurrence () { + if( $('input#event-recurrence').attr("checked")) { + $("#event_recurrence_pattern").fadeIn(); + $("#event-date-explanation").hide(); + $("#recurrence-dates-explanation").show(); + $("h3#recurrence-dates-title").show(); + $("h3#event-date-title").hide(); + } else { + $("#event_recurrence_pattern").hide(); + $("#recurrence-dates-explanation").hide(); + $("#event-date-explanation").show(); + $("h3#recurrence-dates-title").hide(); + $("h3#event-date-title").show(); + } + } + $("#recurrence-dates-explanation").hide(); + $("#date-to-submit").hide(); + $("#end-date-to-submit").hide(); + + $("#localised-date").show(); + $("#localised-end-date").show(); + + $('input.select-all').change(function(){ + if($(this).is(':checked')) + $('input.row-selector').attr('checked', true); + else + $('input.row-selector').attr('checked', false); + }); + + updateIntervalDescriptor(); + updateIntervalSelectors(); + updateShowHideRecurrence(); + $('input#event-recurrence').change(updateShowHideRecurrence); + + // recurrency elements + $('input#recurrence-interval').keyup(updateIntervalDescriptor); + $('select#recurrence-frequency').change(updateIntervalDescriptor); + $('select#recurrence-frequency').change(updateIntervalSelectors); + + /* Load any maps */ + if( $('.em-location-map').length > 0 || $('.em-locations-map').length > 0 || $('#em-map').length > 0 ){ + var script = document.createElement("script"); + script.type = "text/javascript"; + script.src = (EM.is_ssl) ? 'https://maps.google.com/maps/api/js?v=3.8&sensor=false&callback=em_maps':'http://maps.google.com/maps/api/js?v=3.4&sensor=false&callback=em_maps'; + document.body.appendChild(script); + } + + //Finally, add autocomplete here + //Autocomplete + if( jQuery( "#em-location-data input#location-name, " ).length > 0 ){ + jQuery( "#em-location-data input#location-name" ).autocomplete({ + source: EM.locationajaxurl, + minLength: 2, + focus: function( event, ui ){ + jQuery("input#location-id" ).val( ui.item.value ); + return false; + }, + select: function( event, ui ){ + jQuery("input#location-id" ).val(ui.item.id).trigger('change'); + jQuery("input#location-name" ).val(ui.item.value); + jQuery('input#location-address').val(ui.item.address); + jQuery('input#location-town').val(ui.item.town); + jQuery('input#location-state').val(ui.item.state); + jQuery('input#location-region').val(ui.item.region); + jQuery('input#location-postcode').val(ui.item.postcode); + if( ui.item.country == '' ){ + jQuery('select#location-country option:selected').removeAttr('selected'); + }else{ + jQuery('select#location-country option[value="'+ui.item.country+'"]').attr('selected', 'selected'); + } + jQuery('#em-location-data input, #em-location-data select').css('background-color','#ccc'); + jQuery('#em-location-data input#location-name').css('background-color','#fff'); + jQuery('#em-location-reset').show(); + return false; + } + }).data( "autocomplete" )._renderItem = function( ul, item ) { + html_val = "" + item.label + '
        '+ item.address + ', ' + item.town+"
        "; + return jQuery( "
      • " ).data( "item.autocomplete", item ).append(html_val).appendTo( ul ); + }; + jQuery('#em-location-reset').click( function(){ + jQuery('#em-location-data input').css('background-color','#fff').val(''); + jQuery('#em-location-data select').css('background-color','#fff'); + jQuery('#em-location-data option:selected').removeAttr('selected'); + jQuery('input#location-id').val(''); + jQuery('#em-location-reset').hide(); + jQuery('#em-map').hide(); + jQuery('#em-map-404').show(); + if(typeof(marker) !== 'undefined'){ + marker.setPosition(new google.maps.LatLng(0, 0)); + infoWindow.close(); + marker.setDraggable(true); + } + return false; + }); + if( jQuery('input#location-id').val() != '0' && jQuery('input#location-id').val() != '' ){ + jQuery('#em-location-data input, #em-location-data select').css('background-color','#ccc'); + jQuery('#em-location-data input#location-name').css('background-color','#fff'); + jQuery('#em-location-reset').show(); + } + } + +}); + +/* Useful function for adding the em_ajax flag to a url, regardless of querystring format */ +var em_ajaxify = function(url){ + if ( url.search('em_ajax=0') != -1){ + url = url.replace('em_ajax=0','em_ajax=1'); + }else if( url.search(/\?/) != -1 ){ + url = url + "&em_ajax=1"; + }else{ + url = url + "?em_ajax=1"; + } + return url; +}; + +/* + * MAP FUNCTIONS + */ +var maps = {}; +//Load single maps (each map is treated as a seperate map. +function em_maps() { + //Find all the maps on this page + jQuery('.em-location-map').each( function(index){ + el = jQuery(this); + var map_id = el.attr('id').replace('em-location-map-',''); + em_LatLng = new google.maps.LatLng( jQuery('#em-location-map-coords-'+map_id+' .lat').text(), jQuery('#em-location-map-coords-'+map_id+' .lng').text()); + maps[map_id] = new google.maps.Map( document.getElementById('em-location-map-'+map_id), { + zoom: 14, + center: em_LatLng, + mapTypeId: google.maps.MapTypeId.ROADMAP, + mapTypeControl: false + }); + var marker = new google.maps.Marker({ + position: em_LatLng, + map: maps[map_id] + }); + var infowindow = new google.maps.InfoWindow({ content: jQuery('#em-location-map-info-'+map_id+' .em-map-balloon').get(0) }); + infowindow.open(maps[map_id],marker); + maps[map_id].panBy(40,-70); + + //JS Hook for handling map after instantiation + //Example hook, which you can add elsewhere in your theme's JS - jQuery(document).bind('em_maps_location_hook', function(){ alert('hi');} ); + jQuery(document).triggerHandler('em_maps_location_hook', [maps[map_id], infowindow, marker]); + }); + jQuery('.em-locations-map').each( function(index){ + var el = jQuery(this); + var map_id = el.attr('id').replace('em-locations-map-',''); + var em_data = jQuery.parseJSON( jQuery('#em-locations-map-coords-'+map_id).text() ); + jQuery.getJSON(document.URL, em_data , function(data){ + if(data.length > 0){ + var myOptions = { + mapTypeId: google.maps.MapTypeId.ROADMAP + }; + maps[map_id] = new google.maps.Map(document.getElementById("em-locations-map-"+map_id), myOptions); + + var minLatLngArr = [0,0]; + var maxLatLngArr = [0,0]; + + for (var i = 0; i < data.length; i++) { + if( !(data[i].location_latitude == 0 && data[i].location_longitude == 0) ){ + var latitude = parseFloat( data[i].location_latitude ); + var longitude = parseFloat( data[i].location_longitude ); + var location = new google.maps.LatLng( latitude, longitude ); + var marker = new google.maps.Marker({ + position: location, + map: maps[map_id] + }); + marker.setTitle(data[i].location_name); + var myContent = '
        '+ data[i].location_balloon +'
        '; + em_map_infobox(marker, myContent, maps[map_id]); + + //Get min and max long/lats + minLatLngArr[0] = (latitude < minLatLngArr[0] || i == 0) ? latitude : minLatLngArr[0]; + minLatLngArr[1] = (longitude < minLatLngArr[1] || i == 0) ? longitude : minLatLngArr[1]; + maxLatLngArr[0] = (latitude > maxLatLngArr[0] || i == 0) ? latitude : maxLatLngArr[0]; + maxLatLngArr[1] = (longitude > maxLatLngArr[1] || i == 0) ? longitude : maxLatLngArr[1]; + } + } + // Zoom in to the bounds + var minLatLng = new google.maps.LatLng(minLatLngArr[0],minLatLngArr[1]); + var maxLatLng = new google.maps.LatLng(maxLatLngArr[0],maxLatLngArr[1]); + var bounds = new google.maps.LatLngBounds(minLatLng,maxLatLng); + maps[map_id].fitBounds(bounds); + //Call a hook if exists + jQuery(document).triggerHandler('em_maps_locations_hook', [maps[map_id]]); + }else{ + el.children().first().html('No locations found'); + } + }); + }); + //Location stuff - only needed if inputs for location exist + if( jQuery('select#location-select-id, input#location-address').length > 0 ){ + //load map info + var refresh_map_location = function(){ + var location_latitude = jQuery('#location-latitude').val(); + var location_longitude = jQuery('#location-longitude').val(); + if( !(location_latitude == 0 && location_longitude == 0) ){ + var position = new google.maps.LatLng(location_latitude, location_longitude); //the location coords + marker.setPosition(position); + var mapTitle = (jQuery('input#location-name').length > 0) ? jQuery('input#location-name').val():jQuery('input#title').val(); + marker.setTitle( jQuery('input#location-name input#title, #location-select-id').first().val() ); + marker.setDraggable(jQuery('input#location-id').val() == ''); + jQuery('#em-map').show(); + jQuery('#em-map-404').hide(); + google.maps.event.trigger(map, 'resize'); + map.setCenter(position); + map.panBy(40,-55); + infoWindow.setContent( + '
        ' + + mapTitle + + '
        ' + + jQuery('#location-address').val() + + '
        ' + jQuery('#location-town').val()+ + '
        ' + ); + infoWindow.open(map, marker); + } else { + jQuery('#em-map').hide(); + jQuery('#em-map-404').show(); + } + } + + //Load map + if(jQuery('#em-map').length > 0){ + var em_LatLng = new google.maps.LatLng(0, 0); + var map = new google.maps.Map( document.getElementById('em-map'), { + zoom: 14, + center: em_LatLng, + mapTypeId: google.maps.MapTypeId.ROADMAP, + mapTypeControl: false + }); + var marker = new google.maps.Marker({ + position: em_LatLng, + map: map, + draggable: true + }); + var infoWindow = new google.maps.InfoWindow({ + content: '' + }); + var geocoder = new google.maps.Geocoder(); + google.maps.event.addListener(infoWindow, 'domready', function() { + document.getElementById('location-balloon-content').parentNode.style.overflow=''; + document.getElementById('location-balloon-content').parentNode.parentNode.style.overflow=''; + }); + google.maps.event.addListener(marker, 'dragend', function() { + var position = marker.getPosition(); + jQuery('#location-latitude').val(position.lat()); + jQuery('#location-longitude').val(position.lng()); + map.setCenter(position); + map.panBy(40,-55); + }); + refresh_map_location(); + } + + //Add listeners for changes to address + var get_map_by_id = function(id){ + if(jQuery('#em-map').length > 0){ + jQuery.getJSON(document.URL,{ em_ajax_action:'get_location', id:id }, function(data){ + if( data.location_latitude!=0 && data.location_longitude!=0 ){ + loc_latlng = new google.maps.LatLng(data.location_latitude, data.location_longitude); + marker.setPosition(loc_latlng); + marker.setTitle( data.location_name ); + marker.setDraggable(false); + jQuery('#em-map').show(); + jQuery('#em-map-404').hide(); + map.setCenter(loc_latlng); + map.panBy(40,-55); + infoWindow.setContent( '
        '+ data.location_balloon +'
        '); + infoWindow.open(map, marker); + google.maps.event.trigger(map, 'resize'); + }else{ + jQuery('#em-map').hide(); + jQuery('#em-map-404').show(); + } + }); + } + } + jQuery('#location-select-id, input#location-id').change( function(){get_map_by_id(jQuery(this).val())} ); + jQuery('#location-town, #location-address, #location-state, #location-postcode, #location-country').change( function(){ + //build address + var addresses = [ jQuery('#location-address').val(), jQuery('#location-town').val(), jQuery('#location-state').val(), jQuery('#location-postcode').val() ]; + var address = ''; + jQuery.each( addresses, function(i, val){ + if( val != '' ){ + address = ( address == '' ) ? address+val:address+', '+val; + } + }); + //do country last, as it's using the text version + if( jQuery('#location-country option:selected').val() != 0 ){ + address = ( address == '' ) ? address+jQuery('#location-country option:selected').text():address+', '+jQuery('#location-country option:selected').text(); + } + if( address != '' && jQuery('#em-map').length > 0 ){ + geocoder.geocode( { 'address': address }, function(results, status) { + if (status == google.maps.GeocoderStatus.OK) { + jQuery('#location-latitude').val(results[0].geometry.location.lat()); + jQuery('#location-longitude').val(results[0].geometry.location.lng()); + } + refresh_map_location(); + }); + } + }); + } +} + +function em_map_infobox(marker, message, map) { + var infowindow = new google.maps.InfoWindow({ content: message }); + google.maps.event.addListener(marker, 'click', function() { + infowindow.open(map,marker); + }); +} + +/* jQuery timePicker - http://labs.perifer.se/timedatepicker/ @ http://github.com/perifer/timePicker commit 100644 */ + (function(a){function g(a){a.setFullYear(2001),a.setMonth(0),a.setDate(0);return a}function f(a,b){if(a){var c=a.split(b.separator),d=parseFloat(c[0]),e=parseFloat(c[1]);b.show24Hours||(d===12&&a.indexOf("AM")!==-1?d=0:d!==12&&a.indexOf("PM")!==-1&&(d+=12));var f=new Date(0,0,0,d,e,0);return g(f)}return null}function e(a,b){return typeof a=="object"?g(a):f(a,b)}function d(a){return(a<10?"0":"")+a}function c(a,b){var c=a.getHours(),e=b.show24Hours?c:(c+11)%12+1,f=a.getMinutes();return d(e)+b.separator+d(f)+(b.show24Hours?"":c<12?" AM":" PM")}function b(b,c,d,e){b.value=a(c).text(),a(b).change(),a.browser.msie||b.focus(),d.hide()}a.fn.timePicker=function(b){var c=a.extend({},a.fn.timePicker.defaults,b);return this.each(function(){a.timePicker(this,c)})},a.timePicker=function(b,c){var d=a(b)[0];return d.timePicker||(d.timePicker=new jQuery._timePicker(d,c))},a.timePicker.version="0.3",a._timePicker=function(d,h){var i=!1,j=!1,k=e(h.startTime,h),l=e(h.endTime,h),m="selected",n="li."+m;a(d).attr("autocomplete","OFF");var o=[],p=new Date(k);while(p<=l)o[o.length]=c(p,h),p=new Date(p.setMinutes(p.getMinutes()+h.step));var q=a('
        '),r=a("
          ");for(var s=0;s"+o[s]+"");q.append(r),q.appendTo("body").hide(),q.mouseover(function(){i=!0}).mouseout(function(){i=!1}),a("li",r).mouseover(function(){j||(a(n,q).removeClass(m),a(this).addClass(m))}).mousedown(function(){i=!0}).click(function(){b(d,this,q,h),i=!1});var t=function(){if(q.is(":visible"))return!1;a("li",q).removeClass(m);var b=a(d).offset();q.css({top:b.top+d.offsetHeight,left:b.left}),q.show();var e=d.value?f(d.value,h):k,i=k.getHours()*60+k.getMinutes(),j=e.getHours()*60+e.getMinutes()-i,n=Math.round(j/h.step),o=g(new Date(0,0,0,0,n*h.step+i,0));o=kf+q[0].offsetHeight&&(q[0].scrollTop=f+i.offsetHeight)):(e.removeClass(m),i=a("li:first",r).addClass(m)[0],q[0].scrollTop=0);return!1;case 13:if(q.is(":visible")){var k=a(n,r)[0];b(d,k,q,h)}return!1;case 27:q.hide();return!1}return!0}),a(d).keyup(function(a){j=!1}),this.getTime=function(){return f(d.value,h)},this.setTime=function(b){d.value=c(e(b,h),h),a(d).change()}},a.fn.timePicker.defaults={step:30,startTime:new Date(0,0,0,0,0,0),endTime:new Date(0,0,0,23,30,0),separator:":",show24Hours:!0}})(jQuery) \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery-ui-i18n.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery-ui-i18n.js new file mode 100644 index 0000000..c51487b --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery-ui-i18n.js @@ -0,0 +1,1199 @@ +/* Afrikaans initialisation for the jQuery UI date picker plugin. */ +/* Written by Renier Pretorius. */ +jQuery(function($){ + $.datepicker.regional['af'] = { + closeText: 'Selekteer', + prevText: 'Vorige', + nextText: 'Volgende', + currentText: 'Vandag', + monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie', + 'Julie','Augustus','September','Oktober','November','Desember'], + monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', + 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], + dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], + dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'], + dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['af']); +}); +/* Arabic Translation for jQuery UI date picker plugin. */ +/* Khaled Al Horani -- koko.dw@gmail.com */ +/* خالد الحوراني -- koko.dw@gmail.com */ +/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name ÙØ¨Ø±Ø§ÙŠØ± - يناير and there isn't any Arabic roots for these months */ +jQuery(function($){ + $.datepicker.regional['ar'] = { + closeText: 'إغلاق', + prevText: '<السابق', + nextText: 'التالي>', + currentText: 'اليوم', + monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'آذار', 'حزيران', + 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], + monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], + dayNames: ['السبت', 'الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة'], + dayNamesShort: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'], + dayNamesMin: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'], + weekHeader: 'أسبوع', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: true, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ar']); +});/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Jamil Najafov (necefov33@gmail.com). */ +jQuery(function($) { + $.datepicker.regional['az'] = { + closeText: 'BaÄŸla', + prevText: '<Geri', + nextText: 'İrÉ™li>', + currentText: 'Bugün', + monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun', + 'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'], + monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun', + 'İyul','Avq','Sen','Okt','Noy','Dek'], + dayNames: ['Bazar','Bazar ertÉ™si','ÇərÅŸÉ™nbÉ™ axÅŸamı','ÇərÅŸÉ™nbÉ™','CümÉ™ axÅŸamı','CümÉ™','ŞənbÉ™'], + dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Åž'], + dayNamesMin: ['B','B','Ç','С','Ç','C','Åž'], + weekHeader: 'Hf', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['az']); +});/* Bulgarian initialisation for the jQuery UI date picker plugin. */ +/* Written by Stoyan Kyosev (http://svest.org). */ +jQuery(function($){ + $.datepicker.regional['bg'] = { + closeText: 'затвори', + prevText: '<назад', + nextText: 'напред>', + nextBigText: '>>', + currentText: 'днеÑ', + monthNames: ['Януари','Февруари','Март','Ðприл','Май','Юни', + 'Юли','ÐвгуÑÑ‚','Септември','Октомври','Ðоември','Декември'], + monthNamesShort: ['Яну','Фев','Мар','Ðпр','Май','Юни', + 'Юли','Ðвг','Сеп','Окт','Ðов','Дек'], + dayNames: ['ÐеделÑ','Понеделник','Вторник','СрÑда','Четвъртък','Петък','Събота'], + dayNamesShort: ['Ðед','Пон','Вто','СрÑ','Чет','Пет','Съб'], + dayNamesMin: ['Ðе','По','Ð’Ñ‚','Ср','Че','Пе','Съ'], + weekHeader: 'Wk', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['bg']); +}); +/* Bosnian i18n for the jQuery UI date picker plugin. */ +/* Written by Kenan Konjo. */ +jQuery(function($){ + $.datepicker.regional['bs'] = { + closeText: 'Zatvori', + prevText: '<', + nextText: '>', + currentText: 'Danas', + monthNames: ['Januar','Februar','Mart','April','Maj','Juni', + 'Juli','August','Septembar','Oktobar','Novembar','Decembar'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','ÄŒetvrtak','Petak','Subota'], + dayNamesShort: ['Ned','Pon','Uto','Sri','ÄŒet','Pet','Sub'], + dayNamesMin: ['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'], + weekHeader: 'Wk', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['bs']); +});/* Inicialització en català per a l'extenció 'calendar' per jQuery. */ +/* Writers: (joan.leon@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ca'] = { + closeText: 'Tancar', + prevText: '<Ant', + nextText: 'Seg>', + currentText: 'Avui', + monthNames: ['Gener','Febrer','Març','Abril','Maig','Juny', + 'Juliol','Agost','Setembre','Octubre','Novembre','Desembre'], + monthNamesShort: ['Gen','Feb','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Oct','Nov','Des'], + dayNames: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'], + dayNamesShort: ['Dug','Dln','Dmt','Dmc','Djs','Dvn','Dsb'], + dayNamesMin: ['Dg','Dl','Dt','Dc','Dj','Dv','Ds'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ca']); +});/* Czech initialisation for the jQuery UI date picker plugin. */ +/* Written by Tomas Muller (tomas@tomas-muller.net). */ +jQuery(function($){ + $.datepicker.regional['cs'] = { + closeText: 'Zavřít', + prevText: '<Dříve', + nextText: 'PozdÄ›ji>', + currentText: 'Nyní', + monthNames: ['leden','únor','bÅ™ezen','duben','kvÄ›ten','Äerven', + 'Äervenec','srpen','září','říjen','listopad','prosinec'], + monthNamesShort: ['led','úno','bÅ™e','dub','kvÄ›','Äer', + 'Ävc','srp','zář','říj','lis','pro'], + dayNames: ['nedÄ›le', 'pondÄ›lí', 'úterý', 'stÅ™eda', 'Ätvrtek', 'pátek', 'sobota'], + dayNamesShort: ['ne', 'po', 'út', 'st', 'Ät', 'pá', 'so'], + dayNamesMin: ['ne','po','út','st','Ät','pá','so'], + weekHeader: 'Týd', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['cs']); +}); +/* Danish initialisation for the jQuery UI date picker plugin. */ +/* Written by Jan Christensen ( deletestuff@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['da'] = { + closeText: 'Luk', + prevText: '<Forrige', + nextText: 'Næste>', + currentText: 'Idag', + monthNames: ['Januar','Februar','Marts','April','Maj','Juni', + 'Juli','August','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], + dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], + dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], + weekHeader: 'Uge', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['da']); +}); +/* German initialisation for the jQuery UI date picker plugin. */ +/* Written by Milian Wolff (mail@milianw.de). */ +jQuery(function($){ + $.datepicker.regional['de'] = { + closeText: 'schließen', + prevText: '<zurück', + nextText: 'Vor>', + currentText: 'heute', + monthNames: ['Januar','Februar','März','April','Mai','Juni', + 'Juli','August','September','Oktober','November','Dezember'], + monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dez'], + dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], + dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], + dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], + weekHeader: 'Wo', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['de']); +}); +/* Greek (el) initialisation for the jQuery UI date picker plugin. */ +/* Written by Alex Cicovic (http://www.alexcicovic.com) */ +jQuery(function($){ + $.datepicker.regional['el'] = { + closeText: 'Κλείσιμο', + prevText: 'ΠÏοηγοÏμενος', + nextText: 'Επόμενος', + currentText: 'ΤÏέχων Μήνας', + monthNames: ['ΙανουάÏιος','ΦεβÏουάÏιος','ΜάÏτιος','ΑπÏίλιος','Μάιος','ΙοÏνιος', + 'ΙοÏλιος','ΑÏγουστος','ΣεπτέμβÏιος','ΟκτώβÏιος','ÎοέμβÏιος','ΔεκέμβÏιος'], + monthNamesShort: ['Ιαν','Φεβ','ΜαÏ','ΑπÏ','Μαι','Ιουν', + 'Ιουλ','Αυγ','Σεπ','Οκτ','Îοε','Δεκ'], + dayNames: ['ΚυÏιακή','ΔευτέÏα','ΤÏίτη','ΤετάÏτη','Πέμπτη','ΠαÏασκευή','Σάββατο'], + dayNamesShort: ['ΚυÏ','Δευ','ΤÏι','Τετ','Πεμ','ΠαÏ','Σαβ'], + dayNamesMin: ['Κυ','Δε','ΤÏ','Τε','Πε','Πα','Σα'], + weekHeader: 'Εβδ', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['el']); +});/* English/UK initialisation for the jQuery UI date picker plugin. */ +/* Written by Stuart. */ +jQuery(function($){ + $.datepicker.regional['en-GB'] = { + closeText: 'Done', + prevText: 'Prev', + nextText: 'Next', + currentText: 'Today', + monthNames: ['January','February','March','April','May','June', + 'July','August','September','October','November','December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['en-GB']); +}); +/* Esperanto initialisation for the jQuery UI date picker plugin. */ +/* Written by Olivier M. (olivierweb@ifrance.com). */ +jQuery(function($){ + $.datepicker.regional['eo'] = { + closeText: 'Fermi', + prevText: '<Anta', + nextText: 'Sekv>', + currentText: 'Nuna', + monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio', + 'Julio','AÅ­gusto','Septembro','Oktobro','Novembro','Decembro'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','AÅ­g','Sep','Okt','Nov','Dec'], + dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ä´aÅ­do','Vendredo','Sabato'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Ä´aÅ­','Ven','Sab'], + dayNamesMin: ['Di','Lu','Ma','Me','Ä´a','Ve','Sa'], + weekHeader: 'Sb', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['eo']); +}); +/* Inicialización en español para la extensión 'UI date picker' para jQuery. */ +/* Traducido por Vester (xvester@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['es'] = { + closeText: 'Cerrar', + prevText: '<Ant', + nextText: 'Sig>', + currentText: 'Hoy', + monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', + 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], + monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun', + 'Jul','Ago','Sep','Oct','Nov','Dic'], + dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'], + dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'], + dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['es']); +});/* Estonian initialisation for the jQuery UI date picker plugin. */ +/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */ +jQuery(function($){ + $.datepicker.regional['et'] = { + closeText: 'Sulge', + prevText: 'Eelnev', + nextText: 'Järgnev', + currentText: 'Täna', + monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni', + 'Juuli','August','September','Oktoober','November','Detsember'], + monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni', + 'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'], + dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'], + dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'], + dayNamesMin: ['P','E','T','K','N','R','L'], + weekHeader: 'Sm', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['et']); +}); /* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */ +/* Karrikas-ek itzulia (karrikas@karrikas.com) */ +jQuery(function($){ + $.datepicker.regional['eu'] = { + closeText: 'Egina', + prevText: '<Aur', + nextText: 'Hur>', + currentText: 'Gaur', + monthNames: ['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina', + 'Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'], + monthNamesShort: ['Urt','Ots','Mar','Api','Mai','Eka', + 'Uzt','Abu','Ira','Urr','Aza','Abe'], + dayNames: ['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'], + dayNamesShort: ['Iga','Ast','Ast','Ast','Ost','Ost','Lar'], + dayNamesMin: ['Ig','As','As','As','Os','Os','La'], + weekHeader: 'Wk', + dateFormat: 'yy/mm/dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['eu']); +});/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ +/* Javad Mowlanezhad -- jmowla@gmail.com */ +/* Jalali calendar should supported soon! (Its implemented but I have to test it) */ +jQuery(function($) { + $.datepicker.regional['fa'] = { + closeText: 'بستن', + prevText: '<قبلي', + nextText: 'بعدي>', + currentText: 'امروز', + monthNames: ['ÙØ±ÙˆØ±Ø¯ÙŠÙ†','ارديبهشت','خرداد','تير','مرداد','شهريور', + 'مهر','آبان','آذر','دي','بهمن','اسÙند'], + monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], + dayNames: ['يکشنبه','دوشنبه','سه‌شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'], + dayNamesShort: ['ÙŠ','د','س','Ú†','Ù¾','ج', 'Ø´'], + dayNamesMin: ['ÙŠ','د','س','Ú†','Ù¾','ج', 'Ø´'], + weekHeader: 'Ù‡Ù', + dateFormat: 'yy/mm/dd', + firstDay: 6, + isRTL: true, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fa']); +});/* Finnish initialisation for the jQuery UI date picker plugin. */ +/* Written by Harri Kilpi� (harrikilpio@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['fi'] = { + closeText: 'Sulje', + prevText: '«Edellinen', + nextText: 'Seuraava»', + currentText: 'Tänään', + monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu', + 'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'], + monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä', + 'Heinä','Elo','Syys','Loka','Marras','Joulu'], + dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','Su'], + dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'], + dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'], + weekHeader: 'Vk', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fi']); +}); +/* Faroese initialisation for the jQuery UI date picker plugin */ +/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */ +jQuery(function($){ + $.datepicker.regional['fo'] = { + closeText: 'Lat aftur', + prevText: '<Fyrra', + nextText: 'Næsta>', + currentText: 'à dag', + monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni', + 'Juli','August','September','Oktober','November','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', + 'Jul','Aug','Sep','Okt','Nov','Des'], + dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'], + dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'], + dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'], + weekHeader: 'Vk', + dateFormat: 'dd-mm-yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fo']); +}); +/* Swiss-French initialisation for the jQuery UI date picker plugin. */ +/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */ +jQuery(function($){ + $.datepicker.regional['fr-CH'] = { + closeText: 'Fermer', + prevText: '<Préc', + nextText: 'Suiv>', + currentText: 'Courant', + monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', + 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], + monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', + 'Jul','Aoû','Sep','Oct','Nov','Déc'], + dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], + dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], + weekHeader: 'Sm', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fr-CH']); +});/* French initialisation for the jQuery UI date picker plugin. */ +/* Written by Keith Wood (kbwood{at}iinet.com.au) and Stéphane Nahmani (sholby@sholby.net). */ +jQuery(function($){ + $.datepicker.regional['fr'] = { + closeText: 'Fermer', + prevText: '<Préc', + nextText: 'Suiv>', + currentText: 'Courant', + monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', + 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], + monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', + 'Jul','Aoû','Sep','Oct','Nov','Déc'], + dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], + dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fr']); +});/* Hebrew initialisation for the UI Datepicker extension. */ +/* Written by Amir Hardon (ahardon at gmail dot com). */ +jQuery(function($){ + $.datepicker.regional['he'] = { + closeText: 'סגור', + prevText: '<הקוד×', + nextText: 'הב×>', + currentText: 'היו×', + monthNames: ['ינו×ר','פברו×ר','מרץ','×פריל','מ××™','יוני', + 'יולי','×וגוסט','ספטמבר','×וקטובר','נובמבר','דצמבר'], + monthNamesShort: ['1','2','3','4','5','6', + '7','8','9','10','11','12'], + dayNames: ['ר×שון','שני','שלישי','רביעי','חמישי','שישי','שבת'], + dayNamesShort: ['×\'','ב\'','×’\'','ד\'','×”\'','ו\'','שבת'], + dayNamesMin: ['×\'','ב\'','×’\'','ד\'','×”\'','ו\'','שבת'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: true, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['he']); +}); +/* Croatian i18n for the jQuery UI date picker plugin. */ +/* Written by Vjekoslav Nesek. */ +jQuery(function($){ + $.datepicker.regional['hr'] = { + closeText: 'Zatvori', + prevText: '<', + nextText: '>', + currentText: 'Danas', + monthNames: ['SijeÄanj','VeljaÄa','Ožujak','Travanj','Svibanj','Lipanj', + 'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'], + monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip', + 'Srp','Kol','Ruj','Lis','Stu','Pro'], + dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','ÄŒetvrtak','Petak','Subota'], + dayNamesShort: ['Ned','Pon','Uto','Sri','ÄŒet','Pet','Sub'], + dayNamesMin: ['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'], + weekHeader: 'Tje', + dateFormat: 'dd.mm.yy.', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['hr']); +});/* Hungarian initialisation for the jQuery UI date picker plugin. */ +/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */ +jQuery(function($){ + $.datepicker.regional['hu'] = { + closeText: 'bezárás', + prevText: '« vissza', + nextText: 'elÅ‘re »', + currentText: 'ma', + monthNames: ['Január', 'Február', 'Március', 'Ãprilis', 'Május', 'Június', + 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Már', 'Ãpr', 'Máj', 'Jún', + 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'], + dayNames: ['Vasárnap', 'Hétfö', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], + dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'], + dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], + weekHeader: 'Hé', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['hu']); +}); +/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/ +jQuery(function($){ + $.datepicker.regional['hy'] = { + closeText: 'Õ“Õ¡Õ¯Õ¥Õ¬', + prevText: '<Õ†Õ¡Õ­.', + nextText: 'Õ€Õ¡Õ».>', + currentText: 'Ô±ÕµÕ½Ö…Ö€', + monthNames: ['Õ€Õ¸Ö‚Õ¶Õ¾Õ¡Ö€','Õ“Õ¥Õ¿Ö€Õ¾Õ¡Ö€','Õ„Õ¡Ö€Õ¿','Ô±ÕºÖ€Õ«Õ¬','Õ„Õ¡ÕµÕ«Õ½','Õ€Õ¸Ö‚Õ¶Õ«Õ½', + 'Õ€Õ¸Ö‚Õ¬Õ«Õ½','Õ•Õ£Õ¸Õ½Õ¿Õ¸Õ½','ÕÕ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€','Õ€Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€','Õ†Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€','Ô´Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€'], + monthNamesShort: ['Õ€Õ¸Ö‚Õ¶Õ¾','Õ“Õ¥Õ¿Ö€','Õ„Õ¡Ö€Õ¿','Ô±ÕºÖ€','Õ„Õ¡ÕµÕ«Õ½','Õ€Õ¸Ö‚Õ¶Õ«Õ½', + 'Õ€Õ¸Ö‚Õ¬','Õ•Õ£Õ½','ÕÕ¥Õº','Õ€Õ¸Õ¯','Õ†Õ¸Õµ','Ô´Õ¥Õ¯'], + dayNames: ['Õ¯Õ«Ö€Õ¡Õ¯Õ«','Õ¥Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«','Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«','Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«','Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«','Õ¸Ö‚Ö€Õ¢Õ¡Õ©','Õ·Õ¡Õ¢Õ¡Õ©'], + dayNamesShort: ['Õ¯Õ«Ö€','Õ¥Ö€Õ¯','Õ¥Ö€Ö„','Õ¹Ö€Ö„','Õ°Õ¶Õ£','Õ¸Ö‚Ö€Õ¢','Õ·Õ¢Õ©'], + dayNamesMin: ['Õ¯Õ«Ö€','Õ¥Ö€Õ¯','Õ¥Ö€Ö„','Õ¹Ö€Ö„','Õ°Õ¶Õ£','Õ¸Ö‚Ö€Õ¢','Õ·Õ¢Õ©'], + weekHeader: 'Õ‡Ô²Õ', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['hy']); +});/* Indonesian initialisation for the jQuery UI date picker plugin. */ +/* Written by Deden Fathurahman (dedenf@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['id'] = { + closeText: 'Tutup', + prevText: '<mundur', + nextText: 'maju>', + currentText: 'hari ini', + monthNames: ['Januari','Februari','Maret','April','Mei','Juni', + 'Juli','Agustus','September','Oktober','Nopember','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', + 'Jul','Agus','Sep','Okt','Nop','Des'], + dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'], + dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'], + dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'], + weekHeader: 'Mg', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['id']); +});/* Icelandic initialisation for the jQuery UI date picker plugin. */ +/* Written by Haukur H. Thorsson (haukur@eskill.is). */ +jQuery(function($){ + $.datepicker.regional['is'] = { + closeText: 'Loka', + prevText: '< Fyrri', + nextText: 'Næsti >', + currentText: 'Í dag', + monthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní', + 'Júlí','Ágúst','September','Október','Nóvember','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún', + 'Júl','Ágú','Sep','Okt','Nóv','Des'], + dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'], + dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'], + dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'], + weekHeader: 'Vika', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['is']); +});/* Italian initialisation for the jQuery UI date picker plugin. */ +/* Written by Antonello Pasella (antonello.pasella@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['it'] = { + closeText: 'Chiudi', + prevText: '<Prec', + nextText: 'Succ>', + currentText: 'Oggi', + monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno', + 'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], + monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu', + 'Lug','Ago','Set','Ott','Nov','Dic'], + dayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'], + dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], + dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['it']); +}); +/* Japanese initialisation for the jQuery UI date picker plugin. */ +/* Written by Kentaro SATO (kentaro@ranvis.com). */ +jQuery(function($){ + $.datepicker.regional['ja'] = { + closeText: 'é–‰ã˜ã‚‹', + prevText: '<å‰', + nextText: '次>', + currentText: '今日', + monthNames: ['1月','2月','3月','4月','5月','6月', + '7月','8月','9月','10月','11月','12月'], + monthNamesShort: ['1月','2月','3月','4月','5月','6月', + '7月','8月','9月','10月','11月','12月'], + dayNames: ['日曜日','月曜日','ç«æ›œæ—¥','水曜日','木曜日','金曜日','土曜日'], + dayNamesShort: ['æ—¥','月','ç«','æ°´','木','金','土'], + dayNamesMin: ['æ—¥','月','ç«','æ°´','木','金','土'], + weekHeader: '週', + dateFormat: 'yy/mm/dd', + firstDay: 0, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: 'å¹´'}; + $.datepicker.setDefaults($.datepicker.regional['ja']); +});/* Korean initialisation for the jQuery calendar extension. */ +/* Written by DaeKwon Kang (ncrash.dk@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ko'] = { + closeText: '닫기', + prevText: 'ì´ì „달', + nextText: '다ìŒë‹¬', + currentText: '오늘', + monthNames: ['1ì›”(JAN)','2ì›”(FEB)','3ì›”(MAR)','4ì›”(APR)','5ì›”(MAY)','6ì›”(JUN)', + '7ì›”(JUL)','8ì›”(AUG)','9ì›”(SEP)','10ì›”(OCT)','11ì›”(NOV)','12ì›”(DEC)'], + monthNamesShort: ['1ì›”(JAN)','2ì›”(FEB)','3ì›”(MAR)','4ì›”(APR)','5ì›”(MAY)','6ì›”(JUN)', + '7ì›”(JUL)','8ì›”(AUG)','9ì›”(SEP)','10ì›”(OCT)','11ì›”(NOV)','12ì›”(DEC)'], + dayNames: ['ì¼','ì›”','í™”','수','목','금','토'], + dayNamesShort: ['ì¼','ì›”','í™”','수','목','금','토'], + dayNamesMin: ['ì¼','ì›”','í™”','수','목','금','토'], + weekHeader: 'Wk', + dateFormat: 'yy-mm-dd', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: 'ë…„'}; + $.datepicker.setDefaults($.datepicker.regional['ko']); +});/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['kz'] = { + closeText: 'Жабу', + prevText: '<Ðлдыңғы', + nextText: 'КелеÑÑ–>', + currentText: 'Бүгін', + monthNames: ['Қаңтар','Ðқпан','Ðаурыз','Сәуір','Мамыр','МауÑым', + 'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','ЖелтоқÑан'], + monthNamesShort: ['Қаң','Ðқп','Ðау','Сәу','Мам','Мау', + 'Шіл','Там','Қыр','Қаз','Қар','Жел'], + dayNames: ['ЖекÑенбі','ДүйÑенбі','СейÑенбі','СәрÑенбі','БейÑенбі','Жұма','Сенбі'], + dayNamesShort: ['жкÑ','дÑн','ÑÑн','ÑÑ€Ñ','бÑн','жма','Ñнб'], + dayNamesMin: ['Жк','ДÑ','СÑ','Ср','БÑ','Жм','Сн'], + weekHeader: 'Ðе', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['kz']); +}); +/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* @author Arturas Paleicikas */ +jQuery(function($){ + $.datepicker.regional['lt'] = { + closeText: 'Uždaryti', + prevText: '<Atgal', + nextText: 'Pirmyn>', + currentText: 'Å iandien', + monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis', + 'Liepa','RugpjÅ«tis','RugsÄ—jis','Spalis','Lapkritis','Gruodis'], + monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir', + 'Lie','Rugp','Rugs','Spa','Lap','Gru'], + dayNames: ['sekmadienis','pirmadienis','antradienis','treÄiadienis','ketvirtadienis','penktadienis','Å¡eÅ¡tadienis'], + dayNamesShort: ['sek','pir','ant','tre','ket','pen','Å¡eÅ¡'], + dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Å e'], + weekHeader: 'Wk', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['lt']); +});/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* @author Arturas Paleicikas */ +jQuery(function($){ + $.datepicker.regional['lv'] = { + closeText: 'AizvÄ“rt', + prevText: 'Iepr', + nextText: 'NÄka', + currentText: 'Å odien', + monthNames: ['JanvÄris','FebruÄris','Marts','AprÄ«lis','Maijs','JÅ«nijs', + 'JÅ«lijs','Augusts','Septembris','Oktobris','Novembris','Decembris'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','JÅ«n', + 'JÅ«l','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['svÄ“tdiena','pirmdiena','otrdiena','treÅ¡diena','ceturtdiena','piektdiena','sestdiena'], + dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'], + dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'], + weekHeader: 'Nav', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['lv']); +});/* Malaysian initialisation for the jQuery UI date picker plugin. */ +/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */ +jQuery(function($){ + $.datepicker.regional['ms'] = { + closeText: 'Tutup', + prevText: '<Sebelum', + nextText: 'Selepas>', + currentText: 'hari ini', + monthNames: ['Januari','Februari','Mac','April','Mei','Jun', + 'Julai','Ogos','September','Oktober','November','Disember'], + monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun', + 'Jul','Ogo','Sep','Okt','Nov','Dis'], + dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'], + dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'], + dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'], + weekHeader: 'Mg', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ms']); +});/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Mathias Bynens */ +jQuery(function($){ + $.datepicker.regional.nl = { + closeText: 'Sluiten', + prevText: 'â†', + nextText: '→', + currentText: 'Vandaag', + monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', + 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], + monthNamesShort: ['jan', 'feb', 'maa', 'apr', 'mei', 'jun', + 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], + dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], + dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], + dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional.nl); +});/* Norwegian initialisation for the jQuery UI date picker plugin. */ +/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['no'] = { + closeText: 'Lukk', + prevText: '«Forrige', + nextText: 'Neste»', + currentText: 'I dag', + monthNames: ['Januar','Februar','Mars','April','Mai','Juni', + 'Juli','August','September','Oktober','November','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun', + 'Jul','Aug','Sep','Okt','Nov','Des'], + dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], + dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], + dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], + weekHeader: 'Uke', + dateFormat: 'yy-mm-dd', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['no']); +}); +/* Polish initialisation for the jQuery UI date picker plugin. */ +/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['pl'] = { + closeText: 'Zamknij', + prevText: '<Poprzedni', + nextText: 'NastÄ™pny>', + currentText: 'DziÅ›', + monthNames: ['StyczeÅ„','Luty','Marzec','KwiecieÅ„','Maj','Czerwiec', + 'Lipiec','SierpieÅ„','WrzesieÅ„','Październik','Listopad','GrudzieÅ„'], + monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze', + 'Lip','Sie','Wrz','Pa','Lis','Gru'], + dayNames: ['Niedziela','PoniedziaÅ‚ek','Wtorek','Åšroda','Czwartek','PiÄ…tek','Sobota'], + dayNamesShort: ['Nie','Pn','Wt','Åšr','Czw','Pt','So'], + dayNamesMin: ['N','Pn','Wt','Åšr','Cz','Pt','So'], + weekHeader: 'Tydz', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['pl']); +}); +/* Brazilian initialisation for the jQuery UI date picker plugin. */ +/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['pt-BR'] = { + closeText: 'Fechar', + prevText: '<Anterior', + nextText: 'Próximo>', + currentText: 'Hoje', + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', + 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Out','Nov','Dez'], + dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['pt-BR']); +});/* Romanian initialisation for the jQuery UI date picker plugin. + * + * Written by Edmond L. (ll_edmond@walla.com) + * and Ionut G. Stan (ionut.g.stan@gmail.com) + */ +jQuery(function($){ + $.datepicker.regional['ro'] = { + closeText: 'ÃŽnchide', + prevText: '« Luna precedentă', + nextText: 'Luna următoare »', + currentText: 'Azi', + monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie', + 'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'], + monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', + 'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Duminică', 'Luni', 'MarÅ£i', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'], + dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], + dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'], + weekHeader: 'Săpt', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ro']); +}); +/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Andrew Stromnov (stromnov@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ru'] = { + closeText: 'Закрыть', + prevText: '<Пред', + nextText: 'След>', + currentText: 'СегоднÑ', + monthNames: ['Январь','Февраль','Март','Ðпрель','Май','Июнь', + 'Июль','ÐвгуÑÑ‚','СентÑбрь','ОктÑбрь','ÐоÑбрь','Декабрь'], + monthNamesShort: ['Янв','Фев','Мар','Ðпр','Май','Июн', + 'Июл','Ðвг','Сен','Окт','ÐоÑ','Дек'], + dayNames: ['воÑкреÑенье','понедельник','вторник','Ñреда','четверг','пÑтница','Ñуббота'], + dayNamesShort: ['вÑк','пнд','втр','Ñрд','чтв','птн','Ñбт'], + dayNamesMin: ['Ð’Ñ','Пн','Ð’Ñ‚','Ср','Чт','Пт','Сб'], + weekHeader: 'Ðе', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ru']); +});/* Slovak initialisation for the jQuery UI date picker plugin. */ +/* Written by Vojtech Rinik (vojto@hmm.sk). */ +jQuery(function($){ + $.datepicker.regional['sk'] = { + closeText: 'ZavrieÅ¥', + prevText: '<Predchádzajúci', + nextText: 'Nasledujúci>', + currentText: 'Dnes', + monthNames: ['Január','Február','Marec','Apríl','Máj','Jún', + 'Júl','August','September','Október','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', + 'Júl','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['Nedel\'a','Pondelok','Utorok','Streda','Å tvrtok','Piatok','Sobota'], + dayNamesShort: ['Ned','Pon','Uto','Str','Å tv','Pia','Sob'], + dayNamesMin: ['Ne','Po','Ut','St','Å t','Pia','So'], + weekHeader: 'Ty', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sk']); +}); +/* Slovenian initialisation for the jQuery UI date picker plugin. */ +/* Written by Jaka Jancar (jaka@kubje.org). */ +/* c = č, s = š z = ž C = Č S = Š Z = Ž */ +jQuery(function($){ + $.datepicker.regional['sl'] = { + closeText: 'Zapri', + prevText: '<Prejšnji', + nextText: 'Naslednji>', + currentText: 'Trenutni', + monthNames: ['Januar','Februar','Marec','April','Maj','Junij', + 'Julij','Avgust','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Avg','Sep','Okt','Nov','Dec'], + dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'], + dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'], + dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'], + weekHeader: 'Teden', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sl']); +}); +/* Albanian initialisation for the jQuery UI date picker plugin. */ +/* Written by Flakron Bytyqi (flakron@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['sq'] = { + closeText: 'mbylle', + prevText: '<mbrapa', + nextText: 'Përpara>', + currentText: 'sot', + monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor', + 'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'], + monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer', + 'Kor','Gus','Sht','Tet','Nën','Dhj'], + dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'], + dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'], + dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'], + weekHeader: 'Ja', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sq']); +}); +/* Serbian i18n for the jQuery UI date picker plugin. */ +/* Written by Dejan Dimić. */ +jQuery(function($){ + $.datepicker.regional['sr-SR'] = { + closeText: 'Zatvori', + prevText: '<', + nextText: '>', + currentText: 'Danas', + monthNames: ['Januar','Februar','Mart','April','Maj','Jun', + 'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Avg','Sep','Okt','Nov','Dec'], + dayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','ÄŒetvrtak','Petak','Subota'], + dayNamesShort: ['Ned','Pon','Uto','Sre','ÄŒet','Pet','Sub'], + dayNamesMin: ['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'], + weekHeader: 'Sed', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sr-SR']); +}); +/* Serbian i18n for the jQuery UI date picker plugin. */ +/* Written by Dejan Dimić. */ +jQuery(function($){ + $.datepicker.regional['sr'] = { + closeText: 'Затвори', + prevText: '<', + nextText: '>', + currentText: 'ДанаÑ', + monthNames: ['Јануар','Фебруар','Март','Ðприл','Мај','Јун', + 'Јул','ÐвгуÑÑ‚','Септембар','Октобар','Ðовембар','Децембар'], + monthNamesShort: ['Јан','Феб','Мар','Ðпр','Мај','Јун', + 'Јул','Ðвг','Сеп','Окт','Ðов','Дец'], + dayNames: ['Ðедеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'], + dayNamesShort: ['Ðед','Пон','Уто','Сре','Чет','Пет','Суб'], + dayNamesMin: ['Ðе','По','Ут','Ср','Че','Пе','Су'], + weekHeader: 'Сед', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sr']); +}); +/* Swedish initialisation for the jQuery UI date picker plugin. */ +/* Written by Anders Ekdahl ( anders@nomadiz.se). */ +jQuery(function($){ + $.datepicker.regional['sv'] = { + closeText: 'Stäng', + prevText: '«Förra', + nextText: 'Nästa»', + currentText: 'Idag', + monthNames: ['Januari','Februari','Mars','April','Maj','Juni', + 'Juli','Augusti','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + dayNamesShort: ['Sön','MÃ¥n','Tis','Ons','Tor','Fre','Lör'], + dayNames: ['Söndag','MÃ¥ndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'], + dayNamesMin: ['Sö','MÃ¥','Ti','On','To','Fr','Lö'], + weekHeader: 'Ve', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sv']); +}); +/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by S A Sureshkumar (saskumar@live.com). */ +jQuery(function($){ + $.datepicker.regional['ta'] = { + closeText: 'மூடà¯', + prevText: 'à®®à¯à®©à¯à®©à¯ˆà®¯à®¤à¯', + nextText: 'அடà¯à®¤à¯à®¤à®¤à¯', + currentText: 'இனà¯à®±à¯', + monthNames: ['தை','மாசி','பஙà¯à®•à¯à®©à®¿','சிதà¯à®¤à®¿à®°à¯ˆ','வைகாசி','ஆனி', + 'ஆடி','ஆவணி','பà¯à®°à®Ÿà¯à®Ÿà®¾à®šà®¿','à®à®ªà¯à®ªà®šà®¿','காரà¯à®¤à¯à®¤à®¿à®•ை','மாரà¯à®•ழி'], + monthNamesShort: ['தை','மாசி','பஙà¯','சிதà¯','வைகா','ஆனி', + 'ஆடி','ஆவ','பà¯à®°','à®à®ªà¯','காரà¯','மாரà¯'], + dayNames: ['ஞாயிறà¯à®±à¯à®•à¯à®•ிழமை','திஙà¯à®•டà¯à®•ிழமை','செவà¯à®µà®¾à®¯à¯à®•à¯à®•ிழமை','பà¯à®¤à®©à¯à®•ிழமை','வியாழகà¯à®•ிழமை','வெளà¯à®³à®¿à®•à¯à®•ிழமை','சனிகà¯à®•ிழமை'], + dayNamesShort: ['ஞாயிறà¯','திஙà¯à®•ளà¯','செவà¯à®µà®¾à®¯à¯','பà¯à®¤à®©à¯','வியாழனà¯','வெளà¯à®³à®¿','சனி'], + dayNamesMin: ['ஞா','தி','செ','பà¯','வி','வெ','ச'], + weekHeader: 'Ðе', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ta']); +}); +/* Thai initialisation for the jQuery UI date picker plugin. */ +/* Written by pipo (pipo@sixhead.com). */ +jQuery(function($){ + $.datepicker.regional['th'] = { + closeText: 'ปิด', + prevText: '« à¸¢à¹‰à¸­à¸™', + nextText: 'ถัดไป »', + currentText: 'วันนี้', + monthNames: ['มà¸à¸£à¸²à¸„ม','à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน', + 'à¸à¸£à¸à¸à¸²à¸„ม','สิงหาคม','à¸à¸±à¸™à¸¢à¸²à¸¢à¸™','ตุลาคม','พฤศจิà¸à¸²à¸¢à¸™','ธันวาคม'], + monthNamesShort: ['ม.ค.','à¸.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.', + 'à¸.ค.','ส.ค.','à¸.ย.','ต.ค.','พ.ย.','ธ.ค.'], + dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุà¸à¸£à¹Œ','เสาร์'], + dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], + dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['th']); +});/* Turkish initialisation for the jQuery UI date picker plugin. */ +/* Written by Izzet Emre Erkan (kara@karalamalar.net). */ +jQuery(function($){ + $.datepicker.regional['tr'] = { + closeText: 'kapat', + prevText: '<geri', + nextText: 'ileri>', + currentText: 'bugün', + monthNames: ['Ocak','Åžubat','Mart','Nisan','Mayıs','Haziran', + 'Temmuz','AÄŸustos','Eylül','Ekim','Kasım','Aralık'], + monthNamesShort: ['Oca','Åžub','Mar','Nis','May','Haz', + 'Tem','AÄŸu','Eyl','Eki','Kas','Ara'], + dayNames: ['Pazar','Pazartesi','Salı','ÇarÅŸamba','PerÅŸembe','Cuma','Cumartesi'], + dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], + dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], + weekHeader: 'Hf', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['tr']); +});/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['uk'] = { + closeText: 'Закрити', + prevText: '<', + nextText: '>', + currentText: 'Сьогодні', + monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень', + 'Липень','Серпень','ВереÑень','Жовтень','ЛиÑтопад','Грудень'], + monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер', + 'Лип','Сер','Вер','Жов','ЛиÑ','Гру'], + dayNames: ['неділÑ','понеділок','вівторок','Ñереда','четвер','п’ÑтницÑ','Ñубота'], + dayNamesShort: ['нед','пнд','вів','Ñрд','чтв','птн','Ñбт'], + dayNamesMin: ['Ðд','Пн','Ð’Ñ‚','Ср','Чт','Пт','Сб'], + weekHeader: 'Ðе', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['uk']); +});/* Vietnamese initialisation for the jQuery UI date picker plugin. */ +/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */ +jQuery(function($){ + $.datepicker.regional['vi'] = { + closeText: 'Äóng', + prevText: '<Trước', + nextText: 'Tiếp>', + currentText: 'Hôm nay', + monthNames: ['Tháng Má»™t', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu', + 'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mưá»i', 'Tháng Mưá»i Má»™t', 'Tháng Mưá»i Hai'], + monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', + 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'], + dayNames: ['Chá»§ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'], + dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], + dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], + weekHeader: 'Tu', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['vi']); +}); +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by Cloudream (cloudream@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-CN'] = { + closeText: '关闭', + prevText: '<上月', + nextText: '下月>', + currentText: '今天', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','乿œˆ','åæœˆ','å一月','å二月'], + monthNamesShort: ['一','二','三','å››','五','å…­', + '七','å…«','ä¹','å','å一','å二'], + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['æ—¥','一','二','三','å››','五','å…­'], + weekHeader: '周', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: 'å¹´'}; + $.datepicker.setDefaults($.datepicker.regional['zh-CN']); +}); +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by SCCY (samuelcychan@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-HK'] = { + closeText: '關閉', + prevText: '<上月', + nextText: '下月>', + currentText: '今天', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','乿œˆ','åæœˆ','å一月','å二月'], + monthNamesShort: ['一','二','三','å››','五','å…­', + '七','å…«','ä¹','å','å一','å二'], + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['æ—¥','一','二','三','å››','五','å…­'], + weekHeader: '周', + dateFormat: 'dd-mm-yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: 'å¹´'}; + $.datepicker.setDefaults($.datepicker.regional['zh-HK']); +}); +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by Ressol (ressol@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-TW'] = { + closeText: '關閉', + prevText: '<上月', + nextText: '下月>', + currentText: '今天', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','乿œˆ','åæœˆ','å一月','å二月'], + monthNamesShort: ['一','二','三','å››','五','å…­', + '七','å…«','ä¹','å','å一','å二'], + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['æ—¥','一','二','三','å››','五','å…­'], + weekHeader: '周', + dateFormat: 'yy/mm/dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: 'å¹´'}; + $.datepicker.setDefaults($.datepicker.regional['zh-TW']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-af.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-af.js new file mode 100644 index 0000000..43fbf6c --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-af.js @@ -0,0 +1,23 @@ +/* Afrikaans initialisation for the jQuery UI date picker plugin. */ +/* Written by Renier Pretorius. */ +jQuery(function($){ + $.datepicker.regional['af'] = { + closeText: 'Selekteer', + prevText: 'Vorige', + nextText: 'Volgende', + currentText: 'Vandag', + monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie', + 'Julie','Augustus','September','Oktober','November','Desember'], + monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', + 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], + dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], + dayNamesShort: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'], + dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['af']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ar.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ar.js new file mode 100644 index 0000000..c799b48 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ar.js @@ -0,0 +1,24 @@ +/* Arabic Translation for jQuery UI date picker plugin. */ +/* Khaled Al Horani -- koko.dw@gmail.com */ +/* خالد الحوراني -- koko.dw@gmail.com */ +/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name ÙØ¨Ø±Ø§ÙŠØ± - يناير and there isn't any Arabic roots for these months */ +jQuery(function($){ + $.datepicker.regional['ar'] = { + closeText: 'إغلاق', + prevText: '<السابق', + nextText: 'التالي>', + currentText: 'اليوم', + monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'آذار', 'حزيران', + 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], + monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], + dayNames: ['السبت', 'الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة'], + dayNamesShort: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'], + dayNamesMin: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'], + weekHeader: 'أسبوع', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: true, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ar']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-az.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-az.js new file mode 100644 index 0000000..b543405 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-az.js @@ -0,0 +1,23 @@ +/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Jamil Najafov (necefov33@gmail.com). */ +jQuery(function($) { + $.datepicker.regional['az'] = { + closeText: 'BaÄŸla', + prevText: '<Geri', + nextText: 'İrÉ™li>', + currentText: 'Bugün', + monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun', + 'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'], + monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun', + 'İyul','Avq','Sen','Okt','Noy','Dek'], + dayNames: ['Bazar','Bazar ertÉ™si','ÇərÅŸÉ™nbÉ™ axÅŸamı','ÇərÅŸÉ™nbÉ™','CümÉ™ axÅŸamı','CümÉ™','ŞənbÉ™'], + dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Åž'], + dayNamesMin: ['B','B','Ç','С','Ç','C','Åž'], + weekHeader: 'Hf', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['az']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-bg.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-bg.js new file mode 100644 index 0000000..b5113f7 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-bg.js @@ -0,0 +1,24 @@ +/* Bulgarian initialisation for the jQuery UI date picker plugin. */ +/* Written by Stoyan Kyosev (http://svest.org). */ +jQuery(function($){ + $.datepicker.regional['bg'] = { + closeText: 'затвори', + prevText: '<назад', + nextText: 'напред>', + nextBigText: '>>', + currentText: 'днеÑ', + monthNames: ['Януари','Февруари','Март','Ðприл','Май','Юни', + 'Юли','ÐвгуÑÑ‚','Септември','Октомври','Ðоември','Декември'], + monthNamesShort: ['Яну','Фев','Мар','Ðпр','Май','Юни', + 'Юли','Ðвг','Сеп','Окт','Ðов','Дек'], + dayNames: ['ÐеделÑ','Понеделник','Вторник','СрÑда','Четвъртък','Петък','Събота'], + dayNamesShort: ['Ðед','Пон','Вто','СрÑ','Чет','Пет','Съб'], + dayNamesMin: ['Ðе','По','Ð’Ñ‚','Ср','Че','Пе','Съ'], + weekHeader: 'Wk', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['bg']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-bs.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-bs.js new file mode 100644 index 0000000..30ab826 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-bs.js @@ -0,0 +1,23 @@ +/* Bosnian i18n for the jQuery UI date picker plugin. */ +/* Written by Kenan Konjo. */ +jQuery(function($){ + $.datepicker.regional['bs'] = { + closeText: 'Zatvori', + prevText: '<', + nextText: '>', + currentText: 'Danas', + monthNames: ['Januar','Februar','Mart','April','Maj','Juni', + 'Juli','August','Septembar','Oktobar','Novembar','Decembar'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','ÄŒetvrtak','Petak','Subota'], + dayNamesShort: ['Ned','Pon','Uto','Sri','ÄŒet','Pet','Sub'], + dayNamesMin: ['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'], + weekHeader: 'Wk', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['bs']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ca.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ca.js new file mode 100644 index 0000000..b128e69 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ca.js @@ -0,0 +1,23 @@ +/* Inicialització en català per a l'extenció 'calendar' per jQuery. */ +/* Writers: (joan.leon@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ca'] = { + closeText: 'Tancar', + prevText: '<Ant', + nextText: 'Seg>', + currentText: 'Avui', + monthNames: ['Gener','Febrer','Març','Abril','Maig','Juny', + 'Juliol','Agost','Setembre','Octubre','Novembre','Desembre'], + monthNamesShort: ['Gen','Feb','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Oct','Nov','Des'], + dayNames: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'], + dayNamesShort: ['Dug','Dln','Dmt','Dmc','Djs','Dvn','Dsb'], + dayNamesMin: ['Dg','Dl','Dt','Dc','Dj','Dv','Ds'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ca']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-cs.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-cs.js new file mode 100644 index 0000000..c3c07ea --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-cs.js @@ -0,0 +1,23 @@ +/* Czech initialisation for the jQuery UI date picker plugin. */ +/* Written by Tomas Muller (tomas@tomas-muller.net). */ +jQuery(function($){ + $.datepicker.regional['cs'] = { + closeText: 'Zavřít', + prevText: '<Dříve', + nextText: 'PozdÄ›ji>', + currentText: 'Nyní', + monthNames: ['leden','únor','bÅ™ezen','duben','kvÄ›ten','Äerven', + 'Äervenec','srpen','září','říjen','listopad','prosinec'], + monthNamesShort: ['led','úno','bÅ™e','dub','kvÄ›','Äer', + 'Ävc','srp','zář','říj','lis','pro'], + dayNames: ['nedÄ›le', 'pondÄ›lí', 'úterý', 'stÅ™eda', 'Ätvrtek', 'pátek', 'sobota'], + dayNamesShort: ['ne', 'po', 'út', 'st', 'Ät', 'pá', 'so'], + dayNamesMin: ['ne','po','út','st','Ät','pá','so'], + weekHeader: 'Týd', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['cs']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-da.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-da.js new file mode 100644 index 0000000..4a99a58 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-da.js @@ -0,0 +1,23 @@ +/* Danish initialisation for the jQuery UI date picker plugin. */ +/* Written by Jan Christensen ( deletestuff@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['da'] = { + closeText: 'Luk', + prevText: '<Forrige', + nextText: 'Næste>', + currentText: 'Idag', + monthNames: ['Januar','Februar','Marts','April','Maj','Juni', + 'Juli','August','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], + dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], + dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], + weekHeader: 'Uge', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['da']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-de.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-de.js new file mode 100644 index 0000000..ac2d516 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-de.js @@ -0,0 +1,23 @@ +/* German initialisation for the jQuery UI date picker plugin. */ +/* Written by Milian Wolff (mail@milianw.de). */ +jQuery(function($){ + $.datepicker.regional['de'] = { + closeText: 'schließen', + prevText: '<zurück', + nextText: 'Vor>', + currentText: 'heute', + monthNames: ['Januar','Februar','März','April','Mai','Juni', + 'Juli','August','September','Oktober','November','Dezember'], + monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dez'], + dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], + dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], + dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], + weekHeader: 'Wo', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['de']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-el.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-el.js new file mode 100644 index 0000000..9542769 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-el.js @@ -0,0 +1,23 @@ +/* Greek (el) initialisation for the jQuery UI date picker plugin. */ +/* Written by Alex Cicovic (http://www.alexcicovic.com) */ +jQuery(function($){ + $.datepicker.regional['el'] = { + closeText: 'Κλείσιμο', + prevText: 'ΠÏοηγοÏμενος', + nextText: 'Επόμενος', + currentText: 'ΤÏέχων Μήνας', + monthNames: ['ΙανουάÏιος','ΦεβÏουάÏιος','ΜάÏτιος','ΑπÏίλιος','Μάιος','ΙοÏνιος', + 'ΙοÏλιος','ΑÏγουστος','ΣεπτέμβÏιος','ΟκτώβÏιος','ÎοέμβÏιος','ΔεκέμβÏιος'], + monthNamesShort: ['Ιαν','Φεβ','ΜαÏ','ΑπÏ','Μαι','Ιουν', + 'Ιουλ','Αυγ','Σεπ','Οκτ','Îοε','Δεκ'], + dayNames: ['ΚυÏιακή','ΔευτέÏα','ΤÏίτη','ΤετάÏτη','Πέμπτη','ΠαÏασκευή','Σάββατο'], + dayNamesShort: ['ΚυÏ','Δευ','ΤÏι','Τετ','Πεμ','ΠαÏ','Σαβ'], + dayNamesMin: ['Κυ','Δε','ΤÏ','Τε','Πε','Πα','Σα'], + weekHeader: 'Εβδ', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['el']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-en-GB.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-en-GB.js new file mode 100644 index 0000000..aac7b61 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-en-GB.js @@ -0,0 +1,23 @@ +/* English/UK initialisation for the jQuery UI date picker plugin. */ +/* Written by Stuart. */ +jQuery(function($){ + $.datepicker.regional['en-GB'] = { + closeText: 'Done', + prevText: 'Prev', + nextText: 'Next', + currentText: 'Today', + monthNames: ['January','February','March','April','May','June', + 'July','August','September','October','November','December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['en-GB']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-eo.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-eo.js new file mode 100644 index 0000000..ba57156 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-eo.js @@ -0,0 +1,23 @@ +/* Esperanto initialisation for the jQuery UI date picker plugin. */ +/* Written by Olivier M. (olivierweb@ifrance.com). */ +jQuery(function($){ + $.datepicker.regional['eo'] = { + closeText: 'Fermi', + prevText: '<Anta', + nextText: 'Sekv>', + currentText: 'Nuna', + monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio', + 'Julio','AÅ­gusto','Septembro','Oktobro','Novembro','Decembro'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','AÅ­g','Sep','Okt','Nov','Dec'], + dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ä´aÅ­do','Vendredo','Sabato'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Ä´aÅ­','Ven','Sab'], + dayNamesMin: ['Di','Lu','Ma','Me','Ä´a','Ve','Sa'], + weekHeader: 'Sb', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['eo']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-es.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-es.js new file mode 100644 index 0000000..a02133d --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-es.js @@ -0,0 +1,23 @@ +/* Inicialización en español para la extensión 'UI date picker' para jQuery. */ +/* Traducido por Vester (xvester@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['es'] = { + closeText: 'Cerrar', + prevText: '<Ant', + nextText: 'Sig>', + currentText: 'Hoy', + monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', + 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], + monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun', + 'Jul','Ago','Sep','Oct','Nov','Dic'], + dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'], + dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'], + dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['es']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-et.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-et.js new file mode 100644 index 0000000..f97311f --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-et.js @@ -0,0 +1,23 @@ +/* Estonian initialisation for the jQuery UI date picker plugin. */ +/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */ +jQuery(function($){ + $.datepicker.regional['et'] = { + closeText: 'Sulge', + prevText: 'Eelnev', + nextText: 'Järgnev', + currentText: 'Täna', + monthNames: ['Jaanuar','Veebruar','Märts','Aprill','Mai','Juuni', + 'Juuli','August','September','Oktoober','November','Detsember'], + monthNamesShort: ['Jaan', 'Veebr', 'Märts', 'Apr', 'Mai', 'Juuni', + 'Juuli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dets'], + dayNames: ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev'], + dayNamesShort: ['Pühap', 'Esmasp', 'Teisip', 'Kolmap', 'Neljap', 'Reede', 'Laup'], + dayNamesMin: ['P','E','T','K','N','R','L'], + weekHeader: 'Sm', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['et']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-eu.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-eu.js new file mode 100644 index 0000000..9ba6ee2 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-eu.js @@ -0,0 +1,23 @@ +/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */ +/* Karrikas-ek itzulia (karrikas@karrikas.com) */ +jQuery(function($){ + $.datepicker.regional['eu'] = { + closeText: 'Egina', + prevText: '<Aur', + nextText: 'Hur>', + currentText: 'Gaur', + monthNames: ['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina', + 'Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'], + monthNamesShort: ['Urt','Ots','Mar','Api','Mai','Eka', + 'Uzt','Abu','Ira','Urr','Aza','Abe'], + dayNames: ['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'], + dayNamesShort: ['Iga','Ast','Ast','Ast','Ost','Ost','Lar'], + dayNamesMin: ['Ig','As','As','As','Os','Os','La'], + weekHeader: 'Wk', + dateFormat: 'yy/mm/dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['eu']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fa.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fa.js new file mode 100644 index 0000000..adb3709 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fa.js @@ -0,0 +1,23 @@ +/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ +/* Javad Mowlanezhad -- jmowla@gmail.com */ +/* Jalali calendar should supported soon! (Its implemented but I have to test it) */ +jQuery(function($) { + $.datepicker.regional['fa'] = { + closeText: 'بستن', + prevText: '<قبلي', + nextText: 'بعدي>', + currentText: 'امروز', + monthNames: ['ÙØ±ÙˆØ±Ø¯ÙŠÙ†','ارديبهشت','خرداد','تير','مرداد','شهريور', + 'مهر','آبان','آذر','دي','بهمن','اسÙند'], + monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], + dayNames: ['يکشنبه','دوشنبه','سه‌شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'], + dayNamesShort: ['ÙŠ','د','س','Ú†','Ù¾','ج', 'Ø´'], + dayNamesMin: ['ÙŠ','د','س','Ú†','Ù¾','ج', 'Ø´'], + weekHeader: 'Ù‡Ù', + dateFormat: 'yy/mm/dd', + firstDay: 6, + isRTL: true, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fa']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fi.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fi.js new file mode 100644 index 0000000..e1f25fd --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fi.js @@ -0,0 +1,23 @@ +/* Finnish initialisation for the jQuery UI date picker plugin. */ +/* Written by Harri Kilpi� (harrikilpio@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['fi'] = { + closeText: 'Sulje', + prevText: '«Edellinen', + nextText: 'Seuraava»', + currentText: 'Tänään', + monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu', + 'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'], + monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä', + 'Heinä','Elo','Syys','Loka','Marras','Joulu'], + dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','Su'], + dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'], + dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'], + weekHeader: 'Vk', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fi']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fo.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fo.js new file mode 100644 index 0000000..c143622 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fo.js @@ -0,0 +1,23 @@ +/* Faroese initialisation for the jQuery UI date picker plugin */ +/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */ +jQuery(function($){ + $.datepicker.regional['fo'] = { + closeText: 'Lat aftur', + prevText: '<Fyrra', + nextText: 'Næsta>', + currentText: 'à dag', + monthNames: ['Januar','Februar','Mars','Apríl','Mei','Juni', + 'Juli','August','September','Oktober','November','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', + 'Jul','Aug','Sep','Okt','Nov','Des'], + dayNames: ['Sunnudagur','Mánadagur','Týsdagur','Mikudagur','Hósdagur','Fríggjadagur','Leyardagur'], + dayNamesShort: ['Sun','Mán','Týs','Mik','Hós','Frí','Ley'], + dayNamesMin: ['Su','Má','Tý','Mi','Hó','Fr','Le'], + weekHeader: 'Vk', + dateFormat: 'dd-mm-yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fo']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fr-CH.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fr-CH.js new file mode 100644 index 0000000..38212d5 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fr-CH.js @@ -0,0 +1,23 @@ +/* Swiss-French initialisation for the jQuery UI date picker plugin. */ +/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */ +jQuery(function($){ + $.datepicker.regional['fr-CH'] = { + closeText: 'Fermer', + prevText: '<Préc', + nextText: 'Suiv>', + currentText: 'Courant', + monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', + 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], + monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', + 'Jul','Aoû','Sep','Oct','Nov','Déc'], + dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], + dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], + weekHeader: 'Sm', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fr-CH']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fr.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fr.js new file mode 100644 index 0000000..134bda6 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-fr.js @@ -0,0 +1,23 @@ +/* French initialisation for the jQuery UI date picker plugin. */ +/* Written by Keith Wood (kbwood{at}iinet.com.au) and Stéphane Nahmani (sholby@sholby.net). */ +jQuery(function($){ + $.datepicker.regional['fr'] = { + closeText: 'Fermer', + prevText: '<Préc', + nextText: 'Suiv>', + currentText: 'Courant', + monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', + 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], + monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', + 'Jul','Aoû','Sep','Oct','Nov','Déc'], + dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], + dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fr']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-he.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-he.js new file mode 100644 index 0000000..3b3dc38 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-he.js @@ -0,0 +1,23 @@ +/* Hebrew initialisation for the UI Datepicker extension. */ +/* Written by Amir Hardon (ahardon at gmail dot com). */ +jQuery(function($){ + $.datepicker.regional['he'] = { + closeText: 'סגור', + prevText: '<הקוד×', + nextText: 'הב×>', + currentText: 'היו×', + monthNames: ['ינו×ר','פברו×ר','מרץ','×פריל','מ××™','יוני', + 'יולי','×וגוסט','ספטמבר','×וקטובר','נובמבר','דצמבר'], + monthNamesShort: ['1','2','3','4','5','6', + '7','8','9','10','11','12'], + dayNames: ['ר×שון','שני','שלישי','רביעי','חמישי','שישי','שבת'], + dayNamesShort: ['×\'','ב\'','×’\'','ד\'','×”\'','ו\'','שבת'], + dayNamesMin: ['×\'','ב\'','×’\'','ד\'','×”\'','ו\'','שבת'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: true, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['he']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-hr.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-hr.js new file mode 100644 index 0000000..0285c1a --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-hr.js @@ -0,0 +1,23 @@ +/* Croatian i18n for the jQuery UI date picker plugin. */ +/* Written by Vjekoslav Nesek. */ +jQuery(function($){ + $.datepicker.regional['hr'] = { + closeText: 'Zatvori', + prevText: '<', + nextText: '>', + currentText: 'Danas', + monthNames: ['SijeÄanj','VeljaÄa','Ožujak','Travanj','Svibanj','Lipanj', + 'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'], + monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip', + 'Srp','Kol','Ruj','Lis','Stu','Pro'], + dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','ÄŒetvrtak','Petak','Subota'], + dayNamesShort: ['Ned','Pon','Uto','Sri','ÄŒet','Pet','Sub'], + dayNamesMin: ['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'], + weekHeader: 'Tje', + dateFormat: 'dd.mm.yy.', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['hr']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-hu.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-hu.js new file mode 100644 index 0000000..249e7b0 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-hu.js @@ -0,0 +1,23 @@ +/* Hungarian initialisation for the jQuery UI date picker plugin. */ +/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */ +jQuery(function($){ + $.datepicker.regional['hu'] = { + closeText: 'bezárás', + prevText: '« vissza', + nextText: 'elÅ‘re »', + currentText: 'ma', + monthNames: ['Január', 'Február', 'Március', 'Ãprilis', 'Május', 'Június', + 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Már', 'Ãpr', 'Máj', 'Jún', + 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'], + dayNames: ['Vasárnap', 'Hétfö', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], + dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'], + dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], + weekHeader: 'Hé', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['hu']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-hy.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-hy.js new file mode 100644 index 0000000..c6cc194 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-hy.js @@ -0,0 +1,23 @@ +/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/ +jQuery(function($){ + $.datepicker.regional['hy'] = { + closeText: 'Õ“Õ¡Õ¯Õ¥Õ¬', + prevText: '<Õ†Õ¡Õ­.', + nextText: 'Õ€Õ¡Õ».>', + currentText: 'Ô±ÕµÕ½Ö…Ö€', + monthNames: ['Õ€Õ¸Ö‚Õ¶Õ¾Õ¡Ö€','Õ“Õ¥Õ¿Ö€Õ¾Õ¡Ö€','Õ„Õ¡Ö€Õ¿','Ô±ÕºÖ€Õ«Õ¬','Õ„Õ¡ÕµÕ«Õ½','Õ€Õ¸Ö‚Õ¶Õ«Õ½', + 'Õ€Õ¸Ö‚Õ¬Õ«Õ½','Õ•Õ£Õ¸Õ½Õ¿Õ¸Õ½','ÕÕ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€','Õ€Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€','Õ†Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€','Ô´Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€'], + monthNamesShort: ['Õ€Õ¸Ö‚Õ¶Õ¾','Õ“Õ¥Õ¿Ö€','Õ„Õ¡Ö€Õ¿','Ô±ÕºÖ€','Õ„Õ¡ÕµÕ«Õ½','Õ€Õ¸Ö‚Õ¶Õ«Õ½', + 'Õ€Õ¸Ö‚Õ¬','Õ•Õ£Õ½','ÕÕ¥Õº','Õ€Õ¸Õ¯','Õ†Õ¸Õµ','Ô´Õ¥Õ¯'], + dayNames: ['Õ¯Õ«Ö€Õ¡Õ¯Õ«','Õ¥Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«','Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«','Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«','Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«','Õ¸Ö‚Ö€Õ¢Õ¡Õ©','Õ·Õ¡Õ¢Õ¡Õ©'], + dayNamesShort: ['Õ¯Õ«Ö€','Õ¥Ö€Õ¯','Õ¥Ö€Ö„','Õ¹Ö€Ö„','Õ°Õ¶Õ£','Õ¸Ö‚Ö€Õ¢','Õ·Õ¢Õ©'], + dayNamesMin: ['Õ¯Õ«Ö€','Õ¥Ö€Õ¯','Õ¥Ö€Ö„','Õ¹Ö€Ö„','Õ°Õ¶Õ£','Õ¸Ö‚Ö€Õ¢','Õ·Õ¢Õ©'], + weekHeader: 'Õ‡Ô²Õ', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['hy']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-id.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-id.js new file mode 100644 index 0000000..c626fbb --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-id.js @@ -0,0 +1,23 @@ +/* Indonesian initialisation for the jQuery UI date picker plugin. */ +/* Written by Deden Fathurahman (dedenf@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['id'] = { + closeText: 'Tutup', + prevText: '<mundur', + nextText: 'maju>', + currentText: 'hari ini', + monthNames: ['Januari','Februari','Maret','April','Mei','Juni', + 'Juli','Agustus','September','Oktober','Nopember','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', + 'Jul','Agus','Sep','Okt','Nop','Des'], + dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'], + dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'], + dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'], + weekHeader: 'Mg', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['id']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-is.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-is.js new file mode 100644 index 0000000..c53235a --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-is.js @@ -0,0 +1,23 @@ +/* Icelandic initialisation for the jQuery UI date picker plugin. */ +/* Written by Haukur H. Thorsson (haukur@eskill.is). */ +jQuery(function($){ + $.datepicker.regional['is'] = { + closeText: 'Loka', + prevText: '< Fyrri', + nextText: 'Næsti >', + currentText: 'Í dag', + monthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní', + 'Júlí','Ágúst','September','Október','Nóvember','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún', + 'Júl','Ágú','Sep','Okt','Nóv','Des'], + dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'], + dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'], + dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'], + weekHeader: 'Vika', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['is']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-it.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-it.js new file mode 100644 index 0000000..59da2df --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-it.js @@ -0,0 +1,23 @@ +/* Italian initialisation for the jQuery UI date picker plugin. */ +/* Written by Antonello Pasella (antonello.pasella@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['it'] = { + closeText: 'Chiudi', + prevText: '<Prec', + nextText: 'Succ>', + currentText: 'Oggi', + monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno', + 'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], + monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu', + 'Lug','Ago','Set','Ott','Nov','Dic'], + dayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'], + dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], + dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['it']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ja.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ja.js new file mode 100644 index 0000000..79cd827 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ja.js @@ -0,0 +1,23 @@ +/* Japanese initialisation for the jQuery UI date picker plugin. */ +/* Written by Kentaro SATO (kentaro@ranvis.com). */ +jQuery(function($){ + $.datepicker.regional['ja'] = { + closeText: 'é–‰ã˜ã‚‹', + prevText: '<å‰', + nextText: '次>', + currentText: '今日', + monthNames: ['1月','2月','3月','4月','5月','6月', + '7月','8月','9月','10月','11月','12月'], + monthNamesShort: ['1月','2月','3月','4月','5月','6月', + '7月','8月','9月','10月','11月','12月'], + dayNames: ['日曜日','月曜日','ç«æ›œæ—¥','水曜日','木曜日','金曜日','土曜日'], + dayNamesShort: ['æ—¥','月','ç«','æ°´','木','金','土'], + dayNamesMin: ['æ—¥','月','ç«','æ°´','木','金','土'], + weekHeader: '週', + dateFormat: 'yy/mm/dd', + firstDay: 0, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: 'å¹´'}; + $.datepicker.setDefaults($.datepicker.regional['ja']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ko.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ko.js new file mode 100644 index 0000000..5b35316 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ko.js @@ -0,0 +1,23 @@ +/* Korean initialisation for the jQuery calendar extension. */ +/* Written by DaeKwon Kang (ncrash.dk@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ko'] = { + closeText: '닫기', + prevText: 'ì´ì „달', + nextText: '다ìŒë‹¬', + currentText: '오늘', + monthNames: ['1ì›”(JAN)','2ì›”(FEB)','3ì›”(MAR)','4ì›”(APR)','5ì›”(MAY)','6ì›”(JUN)', + '7ì›”(JUL)','8ì›”(AUG)','9ì›”(SEP)','10ì›”(OCT)','11ì›”(NOV)','12ì›”(DEC)'], + monthNamesShort: ['1ì›”(JAN)','2ì›”(FEB)','3ì›”(MAR)','4ì›”(APR)','5ì›”(MAY)','6ì›”(JUN)', + '7ì›”(JUL)','8ì›”(AUG)','9ì›”(SEP)','10ì›”(OCT)','11ì›”(NOV)','12ì›”(DEC)'], + dayNames: ['ì¼','ì›”','í™”','수','목','금','토'], + dayNamesShort: ['ì¼','ì›”','í™”','수','목','금','토'], + dayNamesMin: ['ì¼','ì›”','í™”','수','목','금','토'], + weekHeader: 'Wk', + dateFormat: 'yy-mm-dd', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: 'ë…„'}; + $.datepicker.setDefaults($.datepicker.regional['ko']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-kz.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-kz.js new file mode 100644 index 0000000..f1f897b --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-kz.js @@ -0,0 +1,23 @@ +/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['kz'] = { + closeText: 'Жабу', + prevText: '<Ðлдыңғы', + nextText: 'КелеÑÑ–>', + currentText: 'Бүгін', + monthNames: ['Қаңтар','Ðқпан','Ðаурыз','Сәуір','Мамыр','МауÑым', + 'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','ЖелтоқÑан'], + monthNamesShort: ['Қаң','Ðқп','Ðау','Сәу','Мам','Мау', + 'Шіл','Там','Қыр','Қаз','Қар','Жел'], + dayNames: ['ЖекÑенбі','ДүйÑенбі','СейÑенбі','СәрÑенбі','БейÑенбі','Жұма','Сенбі'], + dayNamesShort: ['жкÑ','дÑн','ÑÑн','ÑÑ€Ñ','бÑн','жма','Ñнб'], + dayNamesMin: ['Жк','ДÑ','СÑ','Ср','БÑ','Жм','Сн'], + weekHeader: 'Ðе', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['kz']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-lt.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-lt.js new file mode 100644 index 0000000..67d5119 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-lt.js @@ -0,0 +1,23 @@ +/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* @author Arturas Paleicikas */ +jQuery(function($){ + $.datepicker.regional['lt'] = { + closeText: 'Uždaryti', + prevText: '<Atgal', + nextText: 'Pirmyn>', + currentText: 'Å iandien', + monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis', + 'Liepa','RugpjÅ«tis','RugsÄ—jis','Spalis','Lapkritis','Gruodis'], + monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir', + 'Lie','Rugp','Rugs','Spa','Lap','Gru'], + dayNames: ['sekmadienis','pirmadienis','antradienis','treÄiadienis','ketvirtadienis','penktadienis','Å¡eÅ¡tadienis'], + dayNamesShort: ['sek','pir','ant','tre','ket','pen','Å¡eÅ¡'], + dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Å e'], + weekHeader: 'Wk', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['lt']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-lv.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-lv.js new file mode 100644 index 0000000..003934e --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-lv.js @@ -0,0 +1,23 @@ +/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* @author Arturas Paleicikas */ +jQuery(function($){ + $.datepicker.regional['lv'] = { + closeText: 'AizvÄ“rt', + prevText: 'Iepr', + nextText: 'NÄka', + currentText: 'Å odien', + monthNames: ['JanvÄris','FebruÄris','Marts','AprÄ«lis','Maijs','JÅ«nijs', + 'JÅ«lijs','Augusts','Septembris','Oktobris','Novembris','Decembris'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','JÅ«n', + 'JÅ«l','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['svÄ“tdiena','pirmdiena','otrdiena','treÅ¡diena','ceturtdiena','piektdiena','sestdiena'], + dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'], + dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'], + weekHeader: 'Nav', + dateFormat: 'dd-mm-yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['lv']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ms.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ms.js new file mode 100644 index 0000000..e953ac0 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ms.js @@ -0,0 +1,23 @@ +/* Malaysian initialisation for the jQuery UI date picker plugin. */ +/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */ +jQuery(function($){ + $.datepicker.regional['ms'] = { + closeText: 'Tutup', + prevText: '<Sebelum', + nextText: 'Selepas>', + currentText: 'hari ini', + monthNames: ['Januari','Februari','Mac','April','Mei','Jun', + 'Julai','Ogos','September','Oktober','November','Disember'], + monthNamesShort: ['Jan','Feb','Mac','Apr','Mei','Jun', + 'Jul','Ogo','Sep','Okt','Nov','Dis'], + dayNames: ['Ahad','Isnin','Selasa','Rabu','Khamis','Jumaat','Sabtu'], + dayNamesShort: ['Aha','Isn','Sel','Rab','kha','Jum','Sab'], + dayNamesMin: ['Ah','Is','Se','Ra','Kh','Ju','Sa'], + weekHeader: 'Mg', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ms']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-nl.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-nl.js new file mode 100644 index 0000000..289ff4f --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-nl.js @@ -0,0 +1,24 @@ +/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Mathias Bynens */ +jQuery(function($){ + $.datepicker.regional['nl'] = { + closeText: 'Sluiten', + prevText: 'â†', + nextText: '→', + currentText: 'Vandaag', + monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', + 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], + monthNamesShort: ['jan', 'feb', 'maa', 'apr', 'mei', 'jun', + 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], + dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], + dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], + dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: '' + }; + $.datepicker.setDefaults($.datepicker.regional.nl); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-no.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-no.js new file mode 100644 index 0000000..12b2356 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-no.js @@ -0,0 +1,23 @@ +/* Norwegian initialisation for the jQuery UI date picker plugin. */ +/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['no'] = { + closeText: 'Lukk', + prevText: '«Forrige', + nextText: 'Neste»', + currentText: 'I dag', + monthNames: ['Januar','Februar','Mars','April','Mai','Juni', + 'Juli','August','September','Oktober','November','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun', + 'Jul','Aug','Sep','Okt','Nov','Des'], + dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], + dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], + dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], + weekHeader: 'Uke', + dateFormat: 'yy-mm-dd', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['no']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-pl.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-pl.js new file mode 100644 index 0000000..61fa29c --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-pl.js @@ -0,0 +1,23 @@ +/* Polish initialisation for the jQuery UI date picker plugin. */ +/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['pl'] = { + closeText: 'Zamknij', + prevText: '<Poprzedni', + nextText: 'NastÄ™pny>', + currentText: 'DziÅ›', + monthNames: ['StyczeÅ„','Luty','Marzec','KwiecieÅ„','Maj','Czerwiec', + 'Lipiec','SierpieÅ„','WrzesieÅ„','Październik','Listopad','GrudzieÅ„'], + monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze', + 'Lip','Sie','Wrz','Pa','Lis','Gru'], + dayNames: ['Niedziela','PoniedziaÅ‚ek','Wtorek','Åšroda','Czwartek','PiÄ…tek','Sobota'], + dayNamesShort: ['Nie','Pn','Wt','Åšr','Czw','Pt','So'], + dayNamesMin: ['N','Pn','Wt','Åšr','Cz','Pt','So'], + weekHeader: 'Tydz', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['pl']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-pt-BR.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-pt-BR.js new file mode 100644 index 0000000..3cc8c79 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-pt-BR.js @@ -0,0 +1,23 @@ +/* Brazilian initialisation for the jQuery UI date picker plugin. */ +/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['pt-BR'] = { + closeText: 'Fechar', + prevText: '<Anterior', + nextText: 'Próximo>', + currentText: 'Hoje', + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', + 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Out','Nov','Dez'], + dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['pt-BR']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ro.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ro.js new file mode 100644 index 0000000..4fe95ae --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ro.js @@ -0,0 +1,26 @@ +/* Romanian initialisation for the jQuery UI date picker plugin. + * + * Written by Edmond L. (ll_edmond@walla.com) + * and Ionut G. Stan (ionut.g.stan@gmail.com) + */ +jQuery(function($){ + $.datepicker.regional['ro'] = { + closeText: 'ÃŽnchide', + prevText: '« Luna precedentă', + nextText: 'Luna următoare »', + currentText: 'Azi', + monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie', + 'Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'], + monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', + 'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Duminică', 'Luni', 'MarÅ£i', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'], + dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], + dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sâ'], + weekHeader: 'Săpt', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ro']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ru.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ru.js new file mode 100644 index 0000000..b8091f9 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ru.js @@ -0,0 +1,23 @@ +/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Andrew Stromnov (stromnov@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ru'] = { + closeText: 'Закрыть', + prevText: '<Пред', + nextText: 'След>', + currentText: 'СегоднÑ', + monthNames: ['Январь','Февраль','Март','Ðпрель','Май','Июнь', + 'Июль','ÐвгуÑÑ‚','СентÑбрь','ОктÑбрь','ÐоÑбрь','Декабрь'], + monthNamesShort: ['Янв','Фев','Мар','Ðпр','Май','Июн', + 'Июл','Ðвг','Сен','Окт','ÐоÑ','Дек'], + dayNames: ['воÑкреÑенье','понедельник','вторник','Ñреда','четверг','пÑтница','Ñуббота'], + dayNamesShort: ['вÑк','пнд','втр','Ñрд','чтв','птн','Ñбт'], + dayNamesMin: ['Ð’Ñ','Пн','Ð’Ñ‚','Ср','Чт','Пт','Сб'], + weekHeader: 'Ðе', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ru']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sk.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sk.js new file mode 100644 index 0000000..8a6771c --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sk.js @@ -0,0 +1,23 @@ +/* Slovak initialisation for the jQuery UI date picker plugin. */ +/* Written by Vojtech Rinik (vojto@hmm.sk). */ +jQuery(function($){ + $.datepicker.regional['sk'] = { + closeText: 'ZavrieÅ¥', + prevText: '<Predchádzajúci', + nextText: 'Nasledujúci>', + currentText: 'Dnes', + monthNames: ['Január','Február','Marec','Apríl','Máj','Jún', + 'Júl','August','September','Október','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', + 'Júl','Aug','Sep','Okt','Nov','Dec'], + dayNames: ['Nedel\'a','Pondelok','Utorok','Streda','Å tvrtok','Piatok','Sobota'], + dayNamesShort: ['Ned','Pon','Uto','Str','Å tv','Pia','Sob'], + dayNamesMin: ['Ne','Po','Ut','St','Å t','Pia','So'], + weekHeader: 'Ty', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sk']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sl.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sl.js new file mode 100644 index 0000000..5165501 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sl.js @@ -0,0 +1,24 @@ +/* Slovenian initialisation for the jQuery UI date picker plugin. */ +/* Written by Jaka Jancar (jaka@kubje.org). */ +/* c = č, s = š z = ž C = Č S = Š Z = Ž */ +jQuery(function($){ + $.datepicker.regional['sl'] = { + closeText: 'Zapri', + prevText: '<Prejšnji', + nextText: 'Naslednji>', + currentText: 'Trenutni', + monthNames: ['Januar','Februar','Marec','April','Maj','Junij', + 'Julij','Avgust','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Avg','Sep','Okt','Nov','Dec'], + dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'], + dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'], + dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'], + weekHeader: 'Teden', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sl']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sq.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sq.js new file mode 100644 index 0000000..be84104 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sq.js @@ -0,0 +1,23 @@ +/* Albanian initialisation for the jQuery UI date picker plugin. */ +/* Written by Flakron Bytyqi (flakron@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['sq'] = { + closeText: 'mbylle', + prevText: '<mbrapa', + nextText: 'Përpara>', + currentText: 'sot', + monthNames: ['Janar','Shkurt','Mars','Prill','Maj','Qershor', + 'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'], + monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer', + 'Kor','Gus','Sht','Tet','Nën','Dhj'], + dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'], + dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'], + dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'], + weekHeader: 'Ja', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sq']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sr-SR.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sr-SR.js new file mode 100644 index 0000000..8f8ea5e --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sr-SR.js @@ -0,0 +1,23 @@ +/* Serbian i18n for the jQuery UI date picker plugin. */ +/* Written by Dejan Dimić. */ +jQuery(function($){ + $.datepicker.regional['sr-SR'] = { + closeText: 'Zatvori', + prevText: '<', + nextText: '>', + currentText: 'Danas', + monthNames: ['Januar','Februar','Mart','April','Maj','Jun', + 'Jul','Avgust','Septembar','Oktobar','Novembar','Decembar'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Avg','Sep','Okt','Nov','Dec'], + dayNames: ['Nedelja','Ponedeljak','Utorak','Sreda','ÄŒetvrtak','Petak','Subota'], + dayNamesShort: ['Ned','Pon','Uto','Sre','ÄŒet','Pet','Sub'], + dayNamesMin: ['Ne','Po','Ut','Sr','ÄŒe','Pe','Su'], + weekHeader: 'Sed', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sr-SR']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sr.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sr.js new file mode 100644 index 0000000..49c9b4a --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sr.js @@ -0,0 +1,23 @@ +/* Serbian i18n for the jQuery UI date picker plugin. */ +/* Written by Dejan Dimić. */ +jQuery(function($){ + $.datepicker.regional['sr'] = { + closeText: 'Затвори', + prevText: '<', + nextText: '>', + currentText: 'ДанаÑ', + monthNames: ['Јануар','Фебруар','Март','Ðприл','Мај','Јун', + 'Јул','ÐвгуÑÑ‚','Септембар','Октобар','Ðовембар','Децембар'], + monthNamesShort: ['Јан','Феб','Мар','Ðпр','Мај','Јун', + 'Јул','Ðвг','Сеп','Окт','Ðов','Дец'], + dayNames: ['Ðедеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'], + dayNamesShort: ['Ðед','Пон','Уто','Сре','Чет','Пет','Суб'], + dayNamesMin: ['Ðе','По','Ут','Ср','Че','Пе','Су'], + weekHeader: 'Сед', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sr']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sv.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sv.js new file mode 100644 index 0000000..8236b62 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-sv.js @@ -0,0 +1,23 @@ +/* Swedish initialisation for the jQuery UI date picker plugin. */ +/* Written by Anders Ekdahl ( anders@nomadiz.se). */ +jQuery(function($){ + $.datepicker.regional['sv'] = { + closeText: 'Stäng', + prevText: '«Förra', + nextText: 'Nästa»', + currentText: 'Idag', + monthNames: ['Januari','Februari','Mars','April','Maj','Juni', + 'Juli','Augusti','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + dayNamesShort: ['Sön','MÃ¥n','Tis','Ons','Tor','Fre','Lör'], + dayNames: ['Söndag','MÃ¥ndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'], + dayNamesMin: ['Sö','MÃ¥','Ti','On','To','Fr','Lö'], + weekHeader: 'Ve', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['sv']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ta.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ta.js new file mode 100644 index 0000000..91116d3 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-ta.js @@ -0,0 +1,23 @@ +/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by S A Sureshkumar (saskumar@live.com). */ +jQuery(function($){ + $.datepicker.regional['ta'] = { + closeText: 'மூடà¯', + prevText: 'à®®à¯à®©à¯à®©à¯ˆà®¯à®¤à¯', + nextText: 'அடà¯à®¤à¯à®¤à®¤à¯', + currentText: 'இனà¯à®±à¯', + monthNames: ['தை','மாசி','பஙà¯à®•à¯à®©à®¿','சிதà¯à®¤à®¿à®°à¯ˆ','வைகாசி','ஆனி', + 'ஆடி','ஆவணி','பà¯à®°à®Ÿà¯à®Ÿà®¾à®šà®¿','à®à®ªà¯à®ªà®šà®¿','காரà¯à®¤à¯à®¤à®¿à®•ை','மாரà¯à®•ழி'], + monthNamesShort: ['தை','மாசி','பஙà¯','சிதà¯','வைகா','ஆனி', + 'ஆடி','ஆவ','பà¯à®°','à®à®ªà¯','காரà¯','மாரà¯'], + dayNames: ['ஞாயிறà¯à®±à¯à®•à¯à®•ிழமை','திஙà¯à®•டà¯à®•ிழமை','செவà¯à®µà®¾à®¯à¯à®•à¯à®•ிழமை','பà¯à®¤à®©à¯à®•ிழமை','வியாழகà¯à®•ிழமை','வெளà¯à®³à®¿à®•à¯à®•ிழமை','சனிகà¯à®•ிழமை'], + dayNamesShort: ['ஞாயிறà¯','திஙà¯à®•ளà¯','செவà¯à®µà®¾à®¯à¯','பà¯à®¤à®©à¯','வியாழனà¯','வெளà¯à®³à®¿','சனி'], + dayNamesMin: ['ஞா','தி','செ','பà¯','வி','வெ','ச'], + weekHeader: 'Ðе', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ta']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-th.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-th.js new file mode 100644 index 0000000..978500a --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-th.js @@ -0,0 +1,23 @@ +/* Thai initialisation for the jQuery UI date picker plugin. */ +/* Written by pipo (pipo@sixhead.com). */ +jQuery(function($){ + $.datepicker.regional['th'] = { + closeText: 'ปิด', + prevText: '« à¸¢à¹‰à¸­à¸™', + nextText: 'ถัดไป »', + currentText: 'วันนี้', + monthNames: ['มà¸à¸£à¸²à¸„ม','à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน', + 'à¸à¸£à¸à¸à¸²à¸„ม','สิงหาคม','à¸à¸±à¸™à¸¢à¸²à¸¢à¸™','ตุลาคม','พฤศจิà¸à¸²à¸¢à¸™','ธันวาคม'], + monthNamesShort: ['ม.ค.','à¸.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.', + 'à¸.ค.','ส.ค.','à¸.ย.','ต.ค.','พ.ย.','ธ.ค.'], + dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุà¸à¸£à¹Œ','เสาร์'], + dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], + dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], + weekHeader: 'Wk', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['th']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-tr.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-tr.js new file mode 100644 index 0000000..dedfc7f --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-tr.js @@ -0,0 +1,23 @@ +/* Turkish initialisation for the jQuery UI date picker plugin. */ +/* Written by Izzet Emre Erkan (kara@karalamalar.net). */ +jQuery(function($){ + $.datepicker.regional['tr'] = { + closeText: 'kapat', + prevText: '<geri', + nextText: 'ileri>', + currentText: 'bugün', + monthNames: ['Ocak','Åžubat','Mart','Nisan','Mayıs','Haziran', + 'Temmuz','AÄŸustos','Eylül','Ekim','Kasım','Aralık'], + monthNamesShort: ['Oca','Åžub','Mar','Nis','May','Haz', + 'Tem','AÄŸu','Eyl','Eki','Kas','Ara'], + dayNames: ['Pazar','Pazartesi','Salı','ÇarÅŸamba','PerÅŸembe','Cuma','Cumartesi'], + dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], + dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], + weekHeader: 'Hf', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['tr']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-uk.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-uk.js new file mode 100644 index 0000000..112b40e --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-uk.js @@ -0,0 +1,23 @@ +/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['uk'] = { + closeText: 'Закрити', + prevText: '<', + nextText: '>', + currentText: 'Сьогодні', + monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень', + 'Липень','Серпень','ВереÑень','Жовтень','ЛиÑтопад','Грудень'], + monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер', + 'Лип','Сер','Вер','Жов','ЛиÑ','Гру'], + dayNames: ['неділÑ','понеділок','вівторок','Ñереда','четвер','п’ÑтницÑ','Ñубота'], + dayNamesShort: ['нед','пнд','вів','Ñрд','чтв','птн','Ñбт'], + dayNamesMin: ['Ðд','Пн','Ð’Ñ‚','Ср','Чт','Пт','Сб'], + weekHeader: 'Ðе', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['uk']); +}); \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-vi.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-vi.js new file mode 100644 index 0000000..9813a59 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-vi.js @@ -0,0 +1,23 @@ +/* Vietnamese initialisation for the jQuery UI date picker plugin. */ +/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */ +jQuery(function($){ + $.datepicker.regional['vi'] = { + closeText: 'Äóng', + prevText: '<Trước', + nextText: 'Tiếp>', + currentText: 'Hôm nay', + monthNames: ['Tháng Má»™t', 'Tháng Hai', 'Tháng Ba', 'Tháng Tư', 'Tháng Năm', 'Tháng Sáu', + 'Tháng Bảy', 'Tháng Tám', 'Tháng Chín', 'Tháng Mưá»i', 'Tháng Mưá»i Má»™t', 'Tháng Mưá»i Hai'], + monthNamesShort: ['Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', + 'Tháng 7', 'Tháng 8', 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12'], + dayNames: ['Chá»§ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'], + dayNamesShort: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], + dayNamesMin: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], + weekHeader: 'Tu', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['vi']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-zh-CN.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-zh-CN.js new file mode 100644 index 0000000..6c4883f --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-zh-CN.js @@ -0,0 +1,23 @@ +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by Cloudream (cloudream@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-CN'] = { + closeText: '关闭', + prevText: '<上月', + nextText: '下月>', + currentText: '今天', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','乿œˆ','åæœˆ','å一月','å二月'], + monthNamesShort: ['一','二','三','å››','五','å…­', + '七','å…«','ä¹','å','å一','å二'], + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['æ—¥','一','二','三','å››','五','å…­'], + weekHeader: '周', + dateFormat: 'yy-mm-dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: 'å¹´'}; + $.datepicker.setDefaults($.datepicker.regional['zh-CN']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-zh-HK.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-zh-HK.js new file mode 100644 index 0000000..06c4c62 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-zh-HK.js @@ -0,0 +1,23 @@ +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by SCCY (samuelcychan@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-HK'] = { + closeText: '關閉', + prevText: '<上月', + nextText: '下月>', + currentText: '今天', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','乿œˆ','åæœˆ','å一月','å二月'], + monthNamesShort: ['一','二','三','å››','五','å…­', + '七','å…«','ä¹','å','å一','å二'], + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['æ—¥','一','二','三','å››','五','å…­'], + weekHeader: '周', + dateFormat: 'dd-mm-yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: 'å¹´'}; + $.datepicker.setDefaults($.datepicker.regional['zh-HK']); +}); diff --git a/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-zh-TW.js b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-zh-TW.js new file mode 100644 index 0000000..d211573 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/js/i18n/jquery.ui.datepicker-zh-TW.js @@ -0,0 +1,23 @@ +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by Ressol (ressol@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-TW'] = { + closeText: '關閉', + prevText: '<上月', + nextText: '下月>', + currentText: '今天', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','乿œˆ','åæœˆ','å一月','å二月'], + monthNamesShort: ['一','二','三','å››','五','å…­', + '七','å…«','ä¹','å','å一','å二'], + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['æ—¥','一','二','三','å››','五','å…­'], + weekHeader: '周', + dateFormat: 'yy/mm/dd', + firstDay: 1, + isRTL: false, + showMonthAfterYear: true, + yearSuffix: 'å¹´'}; + $.datepicker.setDefaults($.datepicker.regional['zh-TW']); +}); diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-ca.mo b/wp-content/plugins/events-manager/includes/langs/dbem-ca.mo new file mode 100644 index 0000000..53cab0a Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-ca.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-ca.po b/wp-content/plugins/events-manager/includes/langs/dbem-ca.po new file mode 100644 index 0000000..59a644a --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-ca.po @@ -0,0 +1,6736 @@ +# Copyright (C) 2010 Events Manager +# This file is distributed under the same license as the Events Manager package. +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.0.83\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-09-20 20:44:48+00:00\n" +"PO-Revision-Date: 2012-05-28 16:24+0100\n" +"Last-Translator: Gaspar Alomar Trias \n" +"Language-Team: <>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Catalan\n" +"X-Poedit-Country: SPAIN\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-SearchPath-0: .\n" + +#: buddypress/bp-em-activity.php:47 +#, php-format +msgid "%s added the event %s" +msgstr "%s ha afegit l'esdeveniment %s" + +#: buddypress/bp-em-activity.php:87 +#, php-format +msgid "%s is attending %s." +msgstr "%s està assistint a %s." + +#: buddypress/bp-em-activity.php:89 +#, php-format +msgid "%s will not be attending %s anymore." +msgstr "%s no assistirá a %s més." + +#: buddypress/bp-em-activity.php:95 +#, php-format +msgid "%s is attending %s of the group %s." +msgstr "%s està assistint a %s del grup %s." + +#: buddypress/bp-em-activity.php:97 +#, php-format +msgid "%s will not be attending %s of group %s anymore." +msgstr "%s no assistirá a %s del grup %s mai més." + +#: admin/em-ms-options.php:165 +#: admin/em-options.php:438 +#: admin/em-options.php:477 +#: admin/em-options.php:946 +#: buddypress/bp-em-core.php:12 +#: buddypress/bp-em-core.php:53 +#: buddypress/bp-em-core.php:81 +#: buddypress/bp-em-core.php:149 +#: buddypress/bp-em-core.php:176 +#: buddypress/screens/profile.php:27 +#: em-actions.php:102 +#: em-install.php:354 +#: em-install.php:400 +#: em-install.php:456 +#: em-install.php:457 +#: em-install.php:483 +#: em-install.php:732 +#: em-posts.php:137 +#: em-posts.php:140 +#: em-posts.php:142 +#: em-template-tags.php:179 +#: widgets/em-events.php:13 +msgid "Events" +msgstr "Esdeveniments" + +#: admin/em-options.php:1179 +#: em-functions.php:504 +msgid "Yes" +msgstr "Sí" + +#: admin/em-options.php:1180 +#: em-functions.php:504 +msgid "No" +msgstr "No" + +#: admin/em-options.php:889 +#: buddypress/bp-em-notifications.php:24 +#: buddypress/bp-em-notifications.php:26 +#: buddypress/bp-em-notifications.php:33 +#: buddypress/bp-em-notifications.php:35 +#: buddypress/bp-em-notifications.php:41 +#: buddypress/bp-em-notifications.php:43 +#: em-install.php:572 +#: em-install.php:769 +#: em-install.php:822 +msgid "My Bookings" +msgstr "Les meves reserves" + +#: buddypress/bp-em-notifications.php:24 +msgid "You have a pending booking" +msgstr "Tens una sol·licitud de reserva" + +#: buddypress/bp-em-notifications.php:26 +#, php-format +msgid "You have %s pending bookings" +msgstr "Tens %s sol·licituds de reserva" + +#: buddypress/bp-em-notifications.php:33 +msgid "You have a confirmed booking" +msgstr "Tens una reserva confirmada" + +#: buddypress/bp-em-notifications.php:35 +#, php-format +msgid "You have %s confirmed bookings" +msgstr "Tens %s reserves confirmades" + +#: buddypress/bp-em-notifications.php:41 +msgid "A user cancelled a booking" +msgstr "Un usuari ha cancel·lat la reserva" + +#: buddypress/bp-em-notifications.php:43 +#, php-format +msgid "%s users cancelled bookings." +msgstr "%s usuaris han cancel·lat reserves." + +#: buddypress/bp-em-core.php:124 +#: buddypress/screens/my-locations.php:32 +msgid "My Locations" +msgstr "Els meus llocs" + +#: buddypress/screens/my-locations.php:48 +#: em-events.php:165 +#: em-posts.php:239 +msgid "Edit Location" +msgstr "Editar localització" + +#: buddypress/screens/my-locations.php:46 +#: em-events.php:163 +#: em-posts.php:236 +msgid "Add Location" +msgstr "Afegir localització" + +#: buddypress/screens/group-events.php:20 +#: buddypress/screens/my-group-events.php:20 +msgid "Group Events" +msgstr "Esdeveniments de grup" + +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Estàs veient la teva pàgina pública, això és el que veuran els altres usuaris." + +#: buddypress/bp-em-core.php:112 +#: buddypress/screens/my-events.php:32 +#: templates/buddypress/profile.php:7 +msgid "My Events" +msgstr "Els meus esdeveniments" + +#: buddypress/screens/my-events.php:49 +#: em-events.php:152 +#: em-posts.php:146 +msgid "Edit Event" +msgstr "Editar esdeveniment" + +#: buddypress/screens/my-events.php:52 +#: em-events.php:155 +#: em-posts.php:143 +#: templates/buddypress/profile.php:20 +msgid "Add Event" +msgstr "Afegir esdeveniment" + +#: buddypress/bp-em-core.php:101 +#: buddypress/screens/attending.php:23 +#: templates/buddypress/profile.php:25 +msgid "Events I'm Attending" +msgstr "Esdeveniments als que assistiré" + +#: buddypress/bp-em-core.php:136 +#: buddypress/screens/my-bookings.php:30 +msgid "My Event Bookings" +msgstr "Les meves reserves d'esdeveniments" + +#: buddypress/bp-em-core.php:92 +msgid "My Profile" +msgstr "El meu perfil" + +#: em-posts.php:145 +#: em-posts.php:191 +#: em-posts.php:238 +#: templates/forms/event/bookings.php:87 +msgid "Edit" +msgstr "Editar" + +#: admin/bookings/em-events.php:98 +#: admin/bookings/em-pending.php:101 +#: admin/bookings/em-person.php:86 +#: admin/em-bookings.php:105 +#: admin/em-bookings.php:106 +#: admin/em-ms-options.php:162 +#: admin/em-options.php:306 +#: admin/em-options.php:329 +#: admin/em-options.php:455 +#: admin/em-options.php:469 +#: admin/em-options.php:496 +#: admin/em-options.php:497 +#: admin/em-options.php:954 +#: admin/em-options.php:1062 +#: admin/em-options.php:1090 +#: admin/em-options.php:1120 +#: admin/em-options.php:1143 +#: admin/em-options.php:1532 +#: classes/em-bookings-table.php:77 +#: classes/em-event-posts-admin.php:102 +#: classes/em-event-posts-admin.php:104 +#: classes/em-event-posts-admin.php:181 +#: classes/em-event-posts-admin.php:239 +#: classes/em-event-posts-admin.php:241 +#: classes/em-event.php:611 +#: classes/em-event.php:626 +#: classes/em-event.php:687 +#: classes/em-event.php:1233 +#: em-actions.php:102 +#: em-install.php:407 +#: em-install.php:439 +#: em-posts.php:141 +#: templates/forms/event-editor.php:12 +#: templates/templates/my-bookings.php:46 +msgid "Event" +msgstr "Esdeveniment" + +#: templates/templates/ical-event.php:10 +#: templates/templates/ical.php:12 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Calendari" + +#: widgets/em-calendar.php:17 +msgid "Display your events in a calendar widget." +msgstr "Mostrar esdeveniments en un giny de calendari." + +#: widgets/em-calendar.php:18 +msgid "Events Calendar" +msgstr "Calendari d'esdeveniments" + +#: widgets/em-calendar.php:58 +#: widgets/em-events.php:98 +#: widgets/em-locations.php:72 +msgid "Title" +msgstr "Títol" + +#: widgets/em-calendar.php:62 +msgid "Show Long Events?" +msgstr "Mostrar esdeveniments llargs?" + +#: widgets/em-calendar.php:66 +#: widgets/em-events.php:146 +msgid "Category IDs" +msgstr "Identificadors de categoria" + +# @ dbem +#: widgets/em-calendar.php:68 +#: widgets/em-events.php:148 +msgid "1,2,3 or 2 (0 = all)" +msgstr "1,2,3 o 2 (0 = tots)" + +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Ubicaciones d'esdeveniments" + +#: widgets/em-locations.php:24 +msgid "Display a list of event locations on Events Manager." +msgstr "Mostrar una llista de localitzacions d'esdevenioments al Events Manager." + +#: widgets/em-locations.php:49 +msgid "No locations" +msgstr "No hi ha localitzacions" + +#: widgets/em-locations.php:76 +msgid "Show number of locations" +msgstr "Mostrar el número de localitzacions" + +#: widgets/em-locations.php:80 +msgid "Scope of the locations" +msgstr "Abast de les localitzacions" + +#: widgets/em-locations.php:103 +msgid "Order of the locations" +msgstr "Ordre de les localitzacions" + +#: widgets/em-events.php:151 +#: widgets/em-locations.php:110 +msgid "List item format" +msgstr "Format de la llista d'ítems" + +#: widgets/em-events.php:22 +#: widgets/em-events.php:74 +#: widgets/em-events.php:160 +msgid "all events" +msgstr "tots els esdeveniments" + +#: widgets/em-events.php:31 +msgid "Display a list of events on Events Manager." +msgstr "Mostrar una llista d'esdeveniments al Events Manager." + +#: widgets/em-events.php:23 +#: widgets/em-events.php:164 +msgid "No events" +msgstr "No hi ha esdeveniments" + +#: widgets/em-events.php:102 +msgid "Number of events" +msgstr "Número d'esdeveniments" + +#: widgets/em-events.php:107 +msgid "Scope" +msgstr "Abast" + +#: widgets/em-events.php:117 +#: widgets/em-locations.php:90 +msgid "Order By" +msgstr "Ordenar per" + +#: widgets/em-events.php:26 +msgid "start date, start time, event name" +msgstr "data d'inici, hora d'inici, nom de l'esdeveniment" + +#: widgets/em-events.php:27 +msgid "name, start date, start time" +msgstr "nom, data d'inici, hora d'inici" + +#: widgets/em-events.php:28 +msgid "name, end date, end time" +msgstr "nom, data de finalització, hora de finalització" + +#: widgets/em-events.php:29 +msgid "end date, end time, event name" +msgstr "data de finalització, hora de finalització, nom de l'esdeveniment" + +#: widgets/em-events.php:130 +msgid "Order" +msgstr "Ordre" + +#: admin/em-options.php:525 +#: admin/em-options.php:528 +#: admin/em-options.php:579 +#: admin/em-options.php:684 +#: admin/em-options.php:687 +#: admin/em-options.php:734 +#: admin/em-options.php:737 +#: admin/em-options.php:824 +#: admin/em-options.php:827 +#: admin/em-options.php:911 +#: admin/em-options.php:914 +#: admin/em-options.php:1039 +#: widgets/em-events.php:134 +#: widgets/em-locations.php:105 +msgid "Ascending" +msgstr "Ascendent" + +#: admin/em-options.php:526 +#: admin/em-options.php:529 +#: admin/em-options.php:580 +#: admin/em-options.php:685 +#: admin/em-options.php:688 +#: admin/em-options.php:735 +#: admin/em-options.php:738 +#: admin/em-options.php:825 +#: admin/em-options.php:828 +#: admin/em-options.php:912 +#: admin/em-options.php:915 +#: admin/em-options.php:1040 +#: widgets/em-events.php:135 +#: widgets/em-locations.php:106 +msgid "Descending" +msgstr "Descendent" + +#: widgets/em-events.php:155 +msgid "Show all events link at bottom?" +msgstr "Mostrar l'enllaç a tots els esdeveniments al final?" + +#: widgets/em-events.php:159 +msgid "All events link text?" +msgstr "Texte de l'enllaç a tots els esdeveniments?" + +#: admin/bookings/em-events.php:14 +#: em-functions.php:180 +msgid "All events" +msgstr "Tots els esdeveniments" + +#: admin/bookings/em-events.php:15 +#: em-functions.php:181 +msgid "Future events" +msgstr "Esdeveniments futurs" + +#: admin/bookings/em-events.php:13 +#: em-functions.php:182 +msgid "Past events" +msgstr "Esdeveniments passats" + +#: em-functions.php:183 +msgid "Today's events" +msgstr "Esdeveniments d'avui" + +#: em-functions.php:184 +msgid "Tomorrow's events" +msgstr "Esdeveniments de demà" + +#: em-functions.php:185 +msgid "Events this month" +msgstr "Esdeveniments d'aquest mes" + +#: em-functions.php:186 +msgid "Events next month" +msgstr "Esdeveniments del pròxim mes" + +#: em-functions.php:187 +msgid "Events current and next month" +msgstr "Esdeveniments d'aquest mes i del proper" + +#: em-functions.php:188 +msgid "Events within 2 months" +msgstr "Esdeveniments d'aquí 2 mesos" + +#: em-functions.php:189 +msgid "Events within 3 months" +msgstr "Esdeveniments d'aquí 3 mesos" + +#: em-functions.php:190 +msgid "Events within 6 months" +msgstr "Esdeveniments d'aquí 6 mesos" + +#: em-functions.php:191 +msgid "Events within 12 months" +msgstr "Esdeveniments d'aquí 12 mesos" + +#: em-functions.php:249 +msgid "Trying to perform an illegal action." +msgstr "Intentant realitzar una acció no permesa." + +#: em-functions.php:326 +msgid "ERROR: Please enter a username." +msgstr "ERROR: Per favor, introdueix un nom d'usuari." + +#: em-functions.php:328 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "ERROR: Aquest nom d'usuari no és vàlid ya que utilitza caràcters no permesos. Per favor, introdueix un nom d'usuario vàlid." + +#: em-functions.php:331 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "ERROR: Aquest nom d'usuari ja està registrat. Per favor, eligeixi un altre." + +#: em-actions.php:278 +#: em-functions.php:336 +msgid "ERROR: Please type your e-mail address." +msgstr "ERROR: Per favor introdueix la teva direcció de correu electrònic." + +#: em-actions.php:281 +#: em-functions.php:338 +msgid "ERROR: The email address isn’t correct." +msgstr "ERROR: La direcció de correu electrònic no és vàlida." + +#: em-functions.php:341 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "ERROR: Aquest correu electrònico ja està registrat. Per favor, eligeix un altre." + +#: em-functions.php:361 +#, php-format +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "ERROR: No t'has pogut registrar... posa't en contacto amb el webmaster!" + +#: em-functions.php:396 +#, php-format +msgid "New user registration on your blog %s:" +msgstr "Nou registre d'usuari al teu bloc %s:" + +#: em-functions.php:397 +#, php-format +msgid "Username: %s" +msgstr "Nom d'usuari: %s" + +#: em-functions.php:398 +#, php-format +msgid "E-mail: %s" +msgstr "Correu electrònic: %s" + +#: em-functions.php:399 +#, php-format +msgid "[%s] New User Registration" +msgstr "[%s] Registre de nou usuari" + +#: em-functions.php:411 +#, php-format +msgid "[%s] Your username and password" +msgstr "[%s] El teu nom d'usuari i la teva contrasenya" + +#: classes/em-ticket.php:47 +msgid "Standard Ticket" +msgstr "Entrada estàndard" + +#: classes/em-booking.php:135 +#: classes/em-ticket-booking.php:69 +#: classes/em-ticket.php:97 +msgid "Changes saved" +msgstr "Canvis desats" + +#: classes/em-ticket.php:102 +msgid "Ticket created" +msgstr "Entrada creada" + +#: classes/em-ticket.php:105 +#: classes/em-ticket.php:106 +#: classes/em-ticket.php:111 +#: classes/em-ticket.php:112 +msgid "There was a problem saving the ticket." +msgstr "Hi ha hagut un problema mentre es desava l'entrada." + +#: classes/em-event.php:476 +#: classes/em-ticket-booking.php:113 +#: classes/em-ticket.php:161 +msgid "Missing fields: " +msgstr "Falten camps:" + +#: classes/em-ticket.php:277 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "No pots eliminar una entrada que té una reserva sobre ella mateixa." + +#: classes/em-location.php:106 +msgid "The location address" +msgstr "Adreça de la localització" + +#: classes/em-location.php:106 +msgid "The location town" +msgstr "Ciutat de la localització" + +#: classes/em-location.php:106 +msgid "The country" +msgstr "País" + +#: classes/em-event.php:440 +#: classes/em-location.php:242 +#: classes/em-location.php:258 +#: classes/em-location.php:260 +msgid " is required." +msgstr "és necessari." + +#: admin/em-bookings.php:129 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:347 +#: admin/em-options.php:358 +#: admin/em-options.php:626 +#: admin/em-options.php:640 +#: admin/em-options.php:654 +#: admin/em-options.php:655 +#: admin/em-options.php:1084 +#: admin/em-options.php:1550 +#: classes/em-event-posts-admin.php:110 +#: classes/em-event-posts-admin.php:247 +#: classes/em-location-posts-admin.php:47 +#: classes/em-location-posts-admin.php:49 +#: classes/em-location.php:365 +#: classes/em-location.php:372 +#: classes/em-location.php:661 +#: em-actions.php:180 +#: em-posts.php:234 +#: templates/buddypress/group-events.php:44 +#: templates/buddypress/my-group-events.php:44 +#: templates/forms/location-editor.php:37 +#: templates/tables/events.php:54 +msgid "Location" +msgstr "Localització" + +#: admin/em-ms-options.php:173 +#: admin/em-options.php:355 +#: admin/em-options.php:356 +#: admin/em-options.php:632 +#: admin/em-options.php:656 +#: admin/em-options.php:711 +#: admin/em-options.php:1086 +#: admin/em-options.php:1087 +#: classes/em-location-post-admin.php:59 +#: classes/em-location.php:360 +#: classes/em-location.php:370 +#: templates/forms/location-editor.php:11 +msgid "location" +msgstr "localització" + +#: classes/em-location.php:376 +#, php-format +msgid "You do not have permission to create/edit %s." +msgstr "No tens permís per a crear/editar %s." + +#: admin/em-ms-options.php:167 +#: admin/em-ms-options.php:172 +#: admin/em-ms-options.php:173 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:630 +#: admin/em-options.php:631 +#: admin/em-options.php:632 +#: admin/em-options.php:645 +#: admin/em-options.php:649 +#: admin/em-options.php:655 +#: admin/em-options.php:656 +#: admin/em-options.php:706 +#: admin/em-options.php:707 +#: admin/em-options.php:750 +#: admin/em-options.php:928 +#: admin/em-options.php:1079 +#: admin/em-options.php:1080 +#: admin/em-options.php:1081 +#: admin/em-options.php:1082 +#: admin/em-options.php:1552 +#: admin/em-options.php:1553 +#: admin/em-options.php:1554 +#: admin/em-options.php:1555 +#: admin/em-options.php:1556 +#: admin/em-options.php:1557 +#: classes/em-location.php:376 +#: events-manager.php:286 +#: events-manager.php:287 +#: events-manager.php:288 +#: events-manager.php:289 +#: events-manager.php:290 +#: events-manager.php:291 +#: events-manager.php:292 +msgid "locations" +msgstr "localitzacions" + +#: em-actions.php:104 +#, php-format +msgid "%s successfully deleted." +msgstr "%s eliminat amb èxit." + +#: em-actions.php:107 +#, php-format +msgid "%s could not be deleted." +msgstr "%s no s'ha pogut eliminat." + +#: classes/em-booking.php:144 +#: classes/em-booking.php:145 +#: classes/em-booking.php:153 +#: classes/em-booking.php:164 +#: classes/em-booking.php:170 +#: classes/em-tickets-bookings.php:70 +#: classes/em-tickets-bookings.php:71 +msgid "There was a problem saving the booking." +msgstr "Hi ha hagut un probleme en desar la reserva." + +#: classes/em-tickets-bookings.php:100 +#: em-install.php:539 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "La reserva no es pot fer, no hi ha suficientes places disponibles!" + +#: classes/em-tickets-bookings.php:165 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:11 +#, php-format +msgid "You do not have the rights to manage this %s." +msgstr "No tens els drets per administrar aquest %s." + +#: classes/em-booking.php:166 +#: classes/em-booking.php:172 +#: classes/em-booking.php:398 +#: classes/em-booking.php:400 +#: classes/em-bookings.php:109 +#: classes/em-tickets-bookings.php:165 +#: templates/placeholders/bookingbutton.php:8 +#: templates/placeholders/bookingbutton.php:9 +msgid "Booking" +msgstr "Reserva" + +#: admin/em-bookings.php:171 +#: admin/em-bookings.php:227 +#: admin/em-options.php:673 +#: admin/em-options.php:723 +#: admin/em-options.php:813 +#: classes/em-bookings-table.php:76 +#: classes/em-person.php:76 +#: templates/buddypress/group-events.php:42 +#: templates/buddypress/my-group-events.php:42 +#: templates/forms/bookingform/booking-fields.php:12 +#: templates/forms/ticket-form.php:12 +#: templates/forms/tickets-form.php:9 +#: templates/tables/events.php:52 +#: templates/tables/locations.php:36 +#: templates/tables/locations.php:45 +#: templates/templates/bookings-event-printable.php:24 +msgid "Name" +msgstr "Nom" + +#: classes/em-person.php:77 +msgid "Email" +msgstr "Correu electrònic" + +#: classes/em-people.php:28 +#: classes/em-person.php:78 +#: templates/forms/bookingform/booking-fields.php:16 +msgid "Phone" +msgstr "Telèfon" + +#: classes/em-ticket-booking.php:78 +msgid "Ticket booking created" +msgstr "Reserva d'entrades creada" + +#: classes/em-ticket-booking.php:85 +#: classes/em-ticket-booking.php:86 +#: classes/em-ticket-booking.php:91 +#: classes/em-ticket-booking.php:92 +msgid "There was a problem saving the ticket booking." +msgstr "Hi ha hagut un problema mentre en desava la reserva d'entrades." + +#: admin/em-options.php:801 +#: admin/em-options.php:1117 +#: admin/em-options.php:1118 +msgid "category" +msgstr "categoria" + +#: classes/em-bookings.php:109 +#, php-format +msgid "%s created." +msgstr "%s creat." + +#: classes/em-bookings.php:271 +#: classes/em-bookings.php:277 +#, php-format +msgid "Bookings %s. Mails Sent." +msgstr "Reserves %s. Correus enviats." + +#: classes/em-bookings.php:281 +msgid "An error occurred." +msgstr "S'ha produït un error." + +#: admin/bookings/em-events.php:131 +#: classes/em-booking.php:101 +#: classes/em-bookings-table.php:54 +#: classes/em-event-posts-admin.php:157 +#: classes/em-event.php:249 +#: templates/buddypress/group-events.php:95 +#: templates/buddypress/my-group-events.php:89 +#: templates/tables/events.php:19 +#: templates/tables/events.php:99 +msgid "Pending" +msgstr "Pendent" + +#: classes/em-booking.php:102 +#: classes/em-event.php:250 +msgid "Approved" +msgstr "Aprovat" + +#: classes/em-booking.php:103 +#: classes/em-bookings-table.php:57 +msgid "Rejected" +msgstr "Rebutjat" + +#: classes/em-booking.php:104 +#: classes/em-bookings-table.php:56 +#: em-install.php:536 +#: templates/placeholders/bookingbutton.php:12 +msgid "Cancelled" +msgstr "Cancel·lat" + +#: classes/em-booking.php:105 +msgid "Awaiting Online Payment" +msgstr "Esperant pagament en línia" + +#: classes/em-booking.php:106 +msgid "Awaiting Payment" +msgstr "Esperant pagament" + +#: classes/em-booking.php:140 +msgid "Your booking has been recorded" +msgstr "La teva reserva ha estat registrada" + +#: classes/em-booking.php:166 +#: classes/em-booking.php:172 +#, php-format +msgid "You cannot manage this %s." +msgstr "No pots gestionar aquest %s." + +#: classes/em-booking.php:223 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Estàs tractant de reservar un bitllet inexistent per aquest esdeveniment." + +#: classes/em-booking.php:398 +#, php-format +msgid "%s deleted" +msgstr "%s eliminat" + +#: classes/em-booking.php:400 +#, php-format +msgid "%s could not be deleted" +msgstr "%s no ha pogut ser eliminat" + +#: classes/em-booking.php:446 +msgid "Not approved, spaces full." +msgstr "No s'ha aprovat, no hi ha places." + +#: classes/em-booking.php:454 +#, php-format +msgid "Booking %s." +msgstr "Reservant %s." + +#: classes/em-booking.php:457 +#: em-actions.php:433 +#: em-actions.php:452 +msgid "Mail Sent." +msgstr "Correu enviat." + +#: classes/em-booking.php:460 +#: classes/em-booking.php:461 +#: em-actions.php:435 +#: em-actions.php:458 +msgid "ERROR : Mail Not Sent." +msgstr "ERROR: correu no enviat." + +#: classes/em-booking.php:467 +#: classes/em-booking.php:468 +#, php-format +msgid "Booking could not be %s." +msgstr "La reserva no s'ha pogut %s." + +#: classes/em-booking.php:483 +msgid "Booking note successfully added." +msgstr "Nota de reserva afegida amb èxit." + +#: classes/em-booking.php:634 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "El correu electrònic de confirmació no s'ha pogut enviar a la persona de contacte. El titular hauria d'haver rebut el seu correu electrònic (només l'administrador veu aquesta advertència)." + +#: classes/em-booking.php:643 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "El correu electrònic de confirmació no s'ha pogut enviar a l'administrador. El titular hauria d'haver rebut el seu correu electrònic (només l'administrador veu aquesta advertència)." + +#: admin/em-options.php:1115 +#: templates/buddypress/group-events.php:113 +#: templates/buddypress/my-group-events.php:107 +msgid "Category" +msgstr "Categoria" + +#: admin/em-options.php:765 +#: admin/em-options.php:769 +#: admin/em-options.php:778 +#: admin/em-options.php:840 +#: admin/em-options.php:1110 +#: admin/em-options.php:1111 +#: admin/em-options.php:1112 +#: admin/em-options.php:1113 +#: events-manager.php:295 +#: events-manager.php:296 +msgid "categories" +msgstr "categories" + +#: classes/em-tickets.php:111 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "No pots eliminar entrades si hi ha reserves associades a elles. Per favor, primerament elimina aquest tipus de reserves." + +#: classes/em-tickets.php:140 +msgid "Standard" +msgstr "Estàndard" + +#: classes/em-people.php:19 +msgid "User deleted by administrators" +msgstr "Usuari eliminat pels administradors" + +#: classes/em-event-post-admin.php:37 +msgid "WARNING: This is a recurring event." +msgstr "ADVERTÈNCIA: Aquest és un esdeveniment recurrent." + +#: classes/em-event-post-admin.php:38 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Les modificacions sobre aquest esdeveniment provocaran que totes les recurrències d'aquest esdeveniment siguin eliminades i tornades a crear, i les reserves anteriors seran eliminades! Pots editar les recurrències individuals i desvincular-les d'aquest esdeveniment recurrent." + +#: classes/em-event-post-admin.php:41 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "ADVERTÈNCIA: Aquesta és una repetició d'una sèrie d'esdeveniments recurrents." + +#: classes/em-event-post-admin.php:48 +#, php-format +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "ADVERTÈNCIA: Aquest és un esdeveniment que pertany al grup \"%s\". La resta d'administradors d'aquest grup també poden modificar aquest esdeveniment." + +#: classes/em-event.php:647 +msgid "Something went wrong with the recurrence update..." +msgstr "Quelcom ha anat malament a l'actualització recurrent..." + +#: classes/em-event.php:647 +msgid "There was a problem saving the recurring events." +msgstr "Hi ha hagut un problema a l'hora de desar els esdeveniments recurrents." + +#: classes/em-event.php:687 +#, php-format +msgid "%s successfully duplicated." +msgstr "%s duplicat amb èxit." + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:326 +#: admin/em-options.php:327 +#: admin/em-options.php:461 +#: admin/em-options.php:498 +#: admin/em-options.php:555 +#: admin/em-options.php:1563 +#: admin/em-options.php:1564 +#: classes/em-event-post-admin.php:85 +#: classes/em-event.php:606 +#: classes/em-event.php:619 +msgid "event" +msgstr "esdeveniment" + +#: classes/em-event.php:455 +#: classes/em-event.php:457 +msgid "Events cannot start after they end." +msgstr "Els esdeveniments no poden començar deprés de que hagi acabat." + +#: classes/em-event.php:462 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Les dates han de tenir el format correcte. Per favor, utilitzi el selector de dates." + +#: classes/em-event.php:1370 +#: templates/forms/bookingform/ticket-single.php:37 +#: templates/forms/bookingform/tickets-list.php:45 +msgid "N/A" +msgstr "No aplicable" + +#: classes/em-event.php:1380 +msgid "Profile" +msgstr "Perfil" + +#: classes/em-event.php:1895 +msgid "Sunday" +msgstr "Diumenge" + +#: classes/em-event.php:1895 +msgid "Monday" +msgstr "Dilluns" + +#: classes/em-event.php:1895 +msgid "Tuesday" +msgstr "Dimarts" + +#: classes/em-event.php:1895 +msgid "Wednesday" +msgstr "Dimecres" + +#: classes/em-event.php:1895 +msgid "Thursday" +msgstr "Dijous" + +#: classes/em-event.php:1895 +msgid "Friday" +msgstr "Divendres" + +#: classes/em-event.php:1895 +msgid "Saturday" +msgstr "Dissabte" + +#: classes/em-event.php:1896 +#, php-format +msgid "the first %s of the month" +msgstr "El primer %s del mes" + +#: classes/em-event.php:1896 +#, php-format +msgid "the second %s of the month" +msgstr "El segon %s del mes" + +#: classes/em-event.php:1896 +#, php-format +msgid "the third %s of the month" +msgstr "El tercer %s del mes" + +#: classes/em-event.php:1896 +#, php-format +msgid "the fourth %s of the month" +msgstr "La quarta %s del mes" + +#: classes/em-event.php:1896 +#, php-format +msgid "the last %s of the month" +msgstr "El darrer %s del mes" + +#: classes/em-event.php:1897 +#, php-format +msgid "From %1$s to %2$s" +msgstr "Des de %1$s fins %2$s" + +#: classes/em-event.php:1899 +msgid "everyday" +msgstr "cada dia" + +#: classes/em-event.php:1901 +#, php-format +msgid "every %s days" +msgstr "cada %s dies" + +#: classes/em-event.php:1910 +msgid "every week" +msgstr "cada setmana" + +#: classes/em-event.php:1912 +#, php-format +msgid "every %s weeks" +msgstr "cada %s setmanes" + +#: classes/em-event.php:1923 +#, php-format +msgid "every %s months" +msgstr "cada %s mesos" + +#: classes/em-object.php:1160 +msgid "The image file is too big! Maximum size:" +msgstr "La imatge és massa gran! El tamany màxim és:" + +#: classes/em-object.php:1167 +msgid "The image is too big! Maximum size allowed:" +msgstr "La imatge és massa gran! El tamany màxim permès és:" + +#: classes/em-object.php:1173 +msgid "The image is in a wrong format!" +msgstr "La imatge té un format erroni!" + +#: classes/em-mailer.php:103 +msgid "Please supply a valid email format." +msgstr "Per favor, faciliti un format de correu electrònic vàlid." + +#: admin/em-options.php:1380 +msgid "Booking cancelled" +msgstr "Reserva cancel·lada" + +#: em-actions.php:380 +msgid "You must log in to cancel your booking." +msgstr "Has d'iniciar sessió per poder cancel·lar la teva reserva." + +#: admin/em-bookings.php:292 +#: classes/em-tickets.php:205 +msgid "Ticket Type" +msgstr "Tipus d'entradas" + +#: admin/em-bookings.php:173 +#: admin/em-bookings.php:294 +#: classes/em-tickets.php:205 +#: templates/forms/event/bookings.php:31 +#: templates/forms/ticket-form.php:16 +#: templates/forms/tickets-form.php:11 +msgid "Price" +msgstr "Preu" + +#: admin/bookings/em-cancelled.php:87 +#: admin/bookings/em-confirmed.php:88 +#: admin/bookings/em-pending.php:105 +#: admin/bookings/em-person.php:87 +#: admin/bookings/em-rejected.php:87 +#: admin/em-bookings.php:174 +#: admin/em-bookings.php:293 +#: classes/em-bookings-table.php:80 +#: classes/em-tickets.php:205 +#: templates/forms/bookingform/ticket-single.php:30 +#: templates/forms/ticket-form.php:18 +#: templates/templates/bookings-event-printable.php:27 +#: templates/templates/my-bookings.php:48 +msgid "Spaces" +msgstr "Places" + +#: admin/em-bookings.php:350 +#: templates/forms/bookingform/booking-fields.php:26 +#: templates/templates/bookings-event-printable.php:28 +msgid "Comment" +msgstr "Comentari" + +#: em-install.php:524 +msgid "Send your booking" +msgstr "Envia la teva reserva" + +#: templates/forms/ticket-form.php:22 +msgid "Available from" +msgstr "Disponible des de" + +#: templates/forms/event/recurring-when.php:51 +#: templates/forms/event/recurring-when.php:58 +#: templates/forms/event/when-with-recurring.php:17 +#: templates/forms/event/when-with-recurring.php:18 +#: templates/forms/event/when-with-recurring.php:26 +#: templates/forms/event/when.php:11 +#: templates/forms/event/when.php:18 +#: templates/forms/ticket-form.php:25 +msgid "to" +msgstr "fins a" + +#: templates/forms/ticket-form.php:28 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Afegeix una data d'inici o de finalització (o ambdues) per a imposar limitacions de temps de disponibilitat d'entrades. Deixa-ho en blanc per no tenir límit superior/inferior." + +#: templates/forms/ticket-form.php:31 +msgid "Bookings must order between" +msgstr "Les reserves deuen encomanar entre" + +#: templates/forms/ticket-form.php:33 +#: templates/templates/events-search.php:38 +msgid "and" +msgstr "i" + +#: templates/forms/ticket-form.php:35 +msgid "spaces." +msgstr "places." + +#: templates/forms/ticket-form.php:36 +msgid "Leave either blank for no upper/lower limit." +msgstr "Deixa-les en blanc per a no tenir límit superior/inferior." + +#: admin/em-bookings.php:172 +#: templates/forms/ticket-form.php:39 +#: templates/forms/tickets-form.php:10 +msgid "Description" +msgstr "Descripció" + +#: admin/em-bookings.php:92 +#: admin/em-bookings.php:154 +#: admin/em-bookings.php:202 +#: admin/em-bookings.php:447 +#: admin/em-bookings.php:499 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:11 +msgid "Unauthorized Access" +msgstr "Accés no autoritzat" + +#: admin/em-ms-locations.php:39 +msgid "Add location" +msgstr "Afegir localització" + +#: admin/em-ms-locations.php:42 +msgid "Edit location" +msgstr "Editar localització" + +#: templates/forms/location-editor.php:17 +msgid "required" +msgstr "necessari" + +#: templates/forms/location-editor.php:28 +msgid "Location Name" +msgstr "Nom de la localització" + +#: templates/forms/location-editor.php:33 +msgid "The name of the location" +msgstr "El nom de la localització" + +#: templates/forms/location/where.php:5 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Si estàs utilitzant Google Maps, com més detalls ens proporcionis, més precís pot ser Google a l'hora de cercar la localització. Si la teva direcció no es troba, per favor intenta-ho a maps.google.com, afegint totes els camps següents separats per comes." + +#: templates/forms/event/location.php:66 +#: templates/forms/location/where.php:9 +msgid "Address:" +msgstr "Adreça:" + +#: templates/forms/event/location.php:72 +#: templates/forms/location/where.php:15 +msgid "City/Town:" +msgstr "Ciutat/Poble:" + +#: templates/forms/event/location.php:78 +#: templates/forms/location/where.php:21 +msgid "State/County:" +msgstr "Estat/Província:" + +#: templates/forms/event/location.php:84 +#: templates/forms/location/where.php:27 +msgid "Postcode:" +msgstr "Codi Postal:" + +#: templates/forms/event/location.php:96 +#: templates/forms/location/where.php:40 +msgid "Country:" +msgstr "País:" + +#: templates/forms/event/location.php:99 +#: templates/forms/location/where.php:43 +msgid "none selected" +msgstr "cap seleccionat" + +#: templates/forms/event/location.php:116 +#: templates/forms/location/where.php:53 +msgid "Location not found" +msgstr "Localització no trobada" + +#: templates/forms/event-editor.php:98 +#: templates/forms/location-editor.php:44 +msgid "Details" +msgstr "Detalls" + +#: templates/forms/location-editor.php:90 +msgid "No image uploaded for this location yet" +msgstr "Encara no hi ha cap imatge carregada per aquesta localització" + +#: templates/forms/event-editor.php:171 +#: templates/forms/location-editor.php:93 +msgid "Upload/change picture" +msgstr "Carregar/canviar la imatge" + +#: templates/forms/event-editor.php:173 +#: templates/forms/location-editor.php:95 +msgid "Delete Image?" +msgstr "Eliminar imatge?" + +#: templates/forms/location-editor.php:104 +msgid "Update location" +msgstr "Actualizar la localització" + +#: admin/bookings/em-cancelled.php:85 +#: admin/bookings/em-confirmed.php:86 +#: admin/bookings/em-pending.php:103 +#: admin/bookings/em-rejected.php:85 +#: classes/em-bookings-table.php:78 +#: templates/forms/bookingform/booking-fields.php:20 +#: templates/templates/bookings-event-printable.php:25 +msgid "E-mail" +msgstr "Correu electrònic" + +#: templates/forms/bookingform/login.php:8 +msgid "Log in if you already have an account with us." +msgstr "Inicia sessió si ja tens una conta amb nosaltres." + +#: templates/forms/bookingform/login.php:10 +msgid "Username" +msgstr "Nom d'usuari" + +#: templates/forms/bookingform/login.php:14 +msgid "Password" +msgstr "Contrasenya" + +#: templates/forms/bookingform/login.php:18 +msgid "Log In" +msgstr "Entrar" + +#: templates/forms/bookingform/login.php:19 +msgid "Remember Me" +msgstr "Recorda'm" + +#: templates/forms/bookingform/login.php:34 +msgid "Sign Up" +msgstr "Registra't" + +#: templates/forms/bookingform/login.php:38 +msgid "Password Lost and Found" +msgstr "Contrasenya perduda i trobada" + +#: templates/forms/bookingform/login.php:38 +msgid "Lost your password?" +msgstr "Has oblidat la teva contrasenya?" + +#: admin/em-bookings.php:114 +#: admin/em-options.php:898 +#: templates/forms/event-editor.php:31 +msgid "Event Name" +msgstr "Nom de l'esdeveniment" + +#: templates/forms/event-editor.php:35 +msgid "The event name. Example: Birthday party" +msgstr "Nom de l'esdeveniment. Exemple: la festa d'aniversari" + +#: templates/forms/event/group.php:23 +#: templates/forms/event-editor.php:61 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Seleccioni un grup que administris per a unir-hi aquest esdeveniment. Tingui en compte que tots els altres administradors d'aquest grup poden modificar la reserva, i tu no seràs capaç de desunir l'esdeveniment sens eliminar-lo." + +#: classes/em-event-post-admin.php:182 +#: templates/forms/event-editor.php:67 +msgid "When" +msgstr "Quan" + +#: templates/forms/event/when.php:23 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Aquest esdeveniment s'estèn per tots els dies entre la data d'inici i la de finalització, aplicant-se el temps d'inici/finalització a cada dia." + +#: templates/forms/event/recurring-when.php:67 +#: templates/forms/event/when-with-recurring.php:73 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Per un esdeveniment recurrent, un esdeveniment d'un dia es crearà a cada data recurrent dintre d'aquest interval de dates." + +#: templates/forms/event/recurring-when.php:10 +#: templates/forms/event/when-with-recurring.php:32 +msgid "This event repeats" +msgstr "Aquest esdeveniment es repeteix" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Daily" +msgstr "Diàriament" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Weekly" +msgstr "Setmanalment" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Monthly" +msgstr "Mensualment" + +#: templates/forms/event/recurring-when.php:17 +#: templates/forms/event/when-with-recurring.php:39 +msgid "every" +msgstr "cada" + +#: templates/forms/event/recurring-when.php:19 +#: templates/forms/event/when-with-recurring.php:41 +msgid "day" +msgstr "dia" + +#: templates/forms/event/recurring-when.php:20 +#: templates/forms/event/when-with-recurring.php:42 +msgid "days" +msgstr "dies" + +#: templates/forms/event/recurring-when.php:21 +#: templates/forms/event/when-with-recurring.php:43 +msgid "week on" +msgstr "setmana" + +#: templates/forms/event/recurring-when.php:22 +#: templates/forms/event/when-with-recurring.php:44 +msgid "weeks on" +msgstr "setmanes" + +#: templates/forms/event/recurring-when.php:23 +#: templates/forms/event/when-with-recurring.php:45 +msgid "month on the" +msgstr "mes en el" + +#: templates/forms/event/recurring-when.php:24 +#: templates/forms/event/when-with-recurring.php:46 +msgid "months on the" +msgstr "mesos en el" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +msgid "first" +msgstr "primer" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +msgid "second" +msgstr "segon" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +msgid "third" +msgstr "tercer" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +msgid "fourth" +msgstr "quart" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +msgid "last" +msgstr "darrer" + +#: templates/forms/event/recurring-when.php:43 +#: templates/forms/event/when-with-recurring.php:66 +msgid "of each month" +msgstr "de cada mes" + +#: classes/em-event-post-admin.php:184 +#: classes/em-event-post-admin.php:352 +#: classes/em-location-post-admin.php:113 +#: templates/forms/event-editor.php:93 +msgid "Where" +msgstr "On" + +#: templates/forms/event/location.php:28 +msgid "Location:" +msgstr "Localització:" + +#: templates/forms/event/location.php:61 +msgid "Create a location or start typing to search a previously created location." +msgstr "Crear una localització o començar a escriure per a cercar una localització creada prèviament." + +#: templates/forms/event/location.php:62 +msgid "You cannot edit saved locations here." +msgstr "Aquí No pots editar localitzacions desades." + +#: templates/forms/event/location.php:62 +msgid "Reset this form to create a location." +msgstr "Restablir aquest formulari per a crear una localització." + +#: templates/forms/event/location.php:90 +#: templates/forms/location/where.php:33 +msgid "Region:" +msgstr "Regió:" + +#: templates/forms/event/location.php:104 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Omplint això en primer lloc et permetrà trobar ràpidament els estats i regions del país prèviament omplerts." + +#: templates/forms/event-editor.php:106 +msgid "Details about the event." +msgstr "Detalls de l'esdeveniment." + +#: templates/forms/event-editor.php:106 +#: templates/forms/location-editor.php:52 +msgid "HTML Allowed." +msgstr "HTML permès." + +#: templates/forms/event-editor.php:115 +msgid "Category:" +msgstr "Categoria:" + +#: templates/forms/event-editor.php:189 +msgid "Submit Event" +msgstr "Enviar esdeveniment" + +#: classes/em-event-post-admin.php:188 +#: classes/em-event-post-admin.php:354 +#: templates/forms/event-editor.php:179 +msgid "Bookings/Registration" +msgstr "Reserves/ Registre" + +#: templates/forms/event/bookings.php:8 +msgid "Enable registration for this event" +msgstr "Permetre el registro per aquest esdeveniment" + +#: templates/forms/event/booking-stats.php:21 +msgid "manage bookings" +msgstr "gestió de reserves" + +#: templates/forms/event/booking-stats.php:22 +msgid "printable view" +msgstr "vista d'impressió" + +#: templates/forms/event/booking-stats.php:24 +msgid "export csv" +msgstr "exportar CSV" + +#: templates/forms/event/bookings.php:24 +msgid "Tickets" +msgstr "Entrades" + +#: classes/em-bookings-table.php:87 +#: templates/forms/event/bookings.php:30 +msgid "Ticket Name" +msgstr "Nom de les entrades" + +#: templates/forms/event/bookings.php:32 +msgid "Min/Max" +msgstr "Mín./Màx." + +#: templates/forms/event/bookings.php:33 +msgid "Start/End" +msgstr "Inici/Final" + +#: templates/forms/event/bookings.php:34 +msgid "Avail. Spaces" +msgstr "Places disponibles" + +#: admin/bookings/em-events.php:129 +#: templates/forms/event/bookings.php:35 +msgid "Booked Spaces" +msgstr "Places reservades" + +#: templates/forms/event/bookings.php:42 +msgid "Add new ticket" +msgstr "Afegir nova entrada" + +#: templates/forms/event/bookings.php:57 +msgid "Free" +msgstr "Lliure" + +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-rejected.php:113 +#: classes/em-bookings-table.php:563 +#: classes/em-bookings-table.php:572 +#: classes/em-bookings-table.php:580 +#: classes/em-bookings-table.php:588 +#: classes/em-bookings-table.php:594 +#: classes/em-bookings-table.php:599 +#: classes/em-event-posts-admin.php:168 +#: templates/buddypress/group-events.php:101 +#: templates/buddypress/group-events.php:135 +#: templates/buddypress/my-group-events.php:95 +#: templates/buddypress/my-group-events.php:129 +#: templates/forms/event/bookings.php:89 +#: templates/tables/events.php:105 +#: templates/tables/events.php:136 +msgid "Delete" +msgstr "Eliminar" + +#: templates/forms/event/bookings.php:91 +msgid "View Bookings" +msgstr "Veure reserves" + +#: events-manager.php:229 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Segur que vols reprogramar aquest esdeveniment recurrent? Si ho fas, perdràs tota la informació de reserva i els antics esdeveniments recurrents seràn eliminats." + +#: events-manager.php:230 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Segur que vols desactivar les reserves? Si ho fas, perdràs totes les reserves prèvies. Si vols evitar reserves addicionals, redueix el nombre de places disponibles per a la quantitat de reserves que hi han actualment" + +#: templates/forms/tickets-form.php:7 +msgid "Create a ticket" +msgstr "Crear una entrada" + +#: templates/forms/tickets-form.php:13 +msgid "Available ticket spaces" +msgstr "Places d'entrades disponibles" + +#: templates/forms/tickets-form.php:15 +msgid "Start date of ticket availability" +msgstr "Data d'inici de la disponibilitat d'entrades" + +#: templates/forms/tickets-form.php:16 +msgid "End date of ticket availability" +msgstr "Data de finalització de la disponibilitat d'entrades" + +#: templates/forms/tickets-form.php:17 +msgid "Minimum tickets required per booking" +msgstr "Mínim d'entrades necessàries per reserva" + +#: templates/forms/tickets-form.php:18 +msgid "Maximum tickets required per booking" +msgstr "Màxim d'entrades necessàries per reserva" + +#: templates/forms/tickets-form.php:24 +msgid "Add Ticket" +msgstr "Afegir entrada" + +#: admin/em-ms-locations.php:29 +#: templates/tables/events.php:11 +msgid "Add New" +msgstr "Afegir nou" + +#: em-events.php:128 +#: templates/tables/locations.php:10 +#, php-format +msgid "My %s" +msgstr "El meu %s" + +#: admin/em-admin.php:45 +#: admin/em-ms-locations.php:28 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:440 +#: admin/em-options.php:644 +#: admin/em-options.php:645 +#: admin/em-options.php:1077 +#: admin/em-options.php:1079 +#: admin/em-options.php:1080 +#: admin/em-options.php:1081 +#: admin/em-options.php:1082 +#: classes/em-location-posts-admin.php:38 +#: em-actions.php:180 +#: em-install.php:407 +#: em-install.php:408 +#: em-install.php:745 +#: em-install.php:792 +#: em-posts.php:230 +#: em-posts.php:233 +#: em-posts.php:235 +#: templates/tables/locations.php:10 +#: templates/tables/locations.php:13 +msgid "Locations" +msgstr "Localitzacions" + +#: templates/tables/locations.php:13 +#, php-format +msgid "All %s" +msgstr "Tots els %s" + +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:54 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-rejected.php:49 +#: templates/tables/locations.php:20 +msgid "Bulk Actions" +msgstr "Accions en bloc" + +#: admin/bookings/em-events.php:55 +#: templates/tables/locations.php:21 +msgid "Delete selected" +msgstr "Eliminar els seleccionats" + +#: admin/bookings/em-events.php:57 +#: templates/tables/locations.php:23 +msgid "Apply" +msgstr "Aplicar" + +#: classes/em-location-posts-admin.php:55 +#: templates/tables/locations.php:37 +#: templates/tables/locations.php:46 +msgid "Address" +msgstr "Adreça" + +#: classes/em-location-posts-admin.php:57 +#: templates/tables/locations.php:38 +#: templates/tables/locations.php:47 +msgid "State" +msgstr "Estat" + +#: admin/em-options.php:671 +#: admin/em-options.php:721 +#: admin/em-options.php:811 +#: classes/em-location-posts-admin.php:58 +#: templates/tables/locations.php:39 +#: templates/tables/locations.php:48 +msgid "Country" +msgstr "País" + +#: admin/bookings/em-events.php:99 +#: templates/buddypress/group-events.php:45 +#: templates/buddypress/my-group-events.php:45 +#: templates/tables/events.php:55 +msgid "Date and time" +msgstr "Dia i hora" + +#: em-install.php:579 +#: templates/buddypress/group-events.php:30 +#: templates/buddypress/my-group-events.php:30 +#: templates/buddypress/profile.php:20 +msgid "No Events" +msgstr "No hi ha esdeveniments" + +# @ dbem +#: templates/buddypress/profile.php:38 +msgid "Not attending any events yet." +msgstr "Encara no assisteixes a cap esdeveniment." + +#: templates/tables/events.php:17 +msgid "Upcoming" +msgstr "Pròxims" + +#: admin/bookings/em-events.php:29 +#: templates/tables/events.php:21 +msgid "Past Events" +msgstr "Esdeveniments passats" + +#: em-posts.php:150 +#: templates/tables/events.php:24 +#: templates/tables/events.php:26 +msgid "Search Events" +msgstr "Cercar esdeveniments" + +#: admin/bookings/em-events.php:88 +msgid "no events" +msgstr "no hi ha esdeveniments" + +#: admin/em-admin.php:38 +#: admin/em-bookings.php:134 +#: admin/em-bookings.php:183 +#: classes/em-event-posts-admin.php:154 +#: em-events.php:128 +#: templates/buddypress/group-events.php:92 +#: templates/buddypress/my-group-events.php:86 +#: templates/tables/events.php:96 +msgid "Bookings" +msgstr "Reserves" + +#: classes/em-event-posts-admin.php:155 +#: templates/buddypress/group-events.php:93 +#: templates/buddypress/my-group-events.php:87 +#: templates/tables/events.php:97 +#: templates/templates/bookings-event-printable.php:42 +msgid "Booked" +msgstr "Reservat" + +#: templates/buddypress/group-events.php:106 +#: templates/buddypress/my-group-events.php:100 +#: templates/tables/events.php:110 +msgid "Duplicate this event" +msgstr "Duplicar aquest esdeveniment" + +#: classes/em-event-posts-admin.php:162 +#: templates/buddypress/group-events.php:129 +#: templates/buddypress/my-group-events.php:123 +#: templates/tables/events.php:130 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "ADVERTÈNCIA! Eliminaràs TOTES les recurrencies d'aquest esdeveniment, incloent l'historial de reserves associades a qualsevol esdeveniment d'aquesta recurrència. Para mantener la información de reserva, visite el único evento relevante y guardarlo para separarla de esta serie de recurrencia." + +#: templates/templates/bookings-event-printable.php:21 +msgid "Bookings data" +msgstr "Dades de reserves" + +#: admin/bookings/em-cancelled.php:86 +#: admin/bookings/em-confirmed.php:87 +#: admin/bookings/em-pending.php:104 +#: admin/bookings/em-rejected.php:86 +#: templates/templates/bookings-event-printable.php:26 +msgid "Phone number" +msgstr "Número de telèfon" + +#: templates/templates/bookings-event-printable.php:47 +msgid "Available" +msgstr "Disponible" + +#: templates/placeholders/locationmap.php:15 +#: templates/templates/map-global.php:15 +msgid "Loading Map...." +msgstr "Carregant mapa..." + +#: admin/em-bookings.php:123 +#: templates/templates/my-bookings.php:47 +msgid "Date" +msgstr "Data" + +#: admin/bookings/em-person.php:88 +#: admin/em-bookings.php:262 +#: admin/em-bookings.php:272 +#: classes/em-bookings-table.php:81 +#: templates/templates/my-bookings.php:49 +msgid "Status" +msgstr "Estat" + +#: em-install.php:535 +msgid "Are you sure you want to cancel your booking?" +msgstr "Estàs segur que vols cancel·lar la teva reserva?" + +#: admin/em-bookings.php:281 +#: admin/em-bookings.php:367 +#: admin/em-options.php:150 +#: admin/em-options.php:167 +#: templates/placeholders/bookingbutton.php:10 +#: templates/templates/my-bookings.php:75 +msgid "Cancel" +msgstr "Cancel·lar" + +#: templates/templates/my-bookings.php:91 +msgid "You do not have any bookings." +msgstr "No tens cap reserva." + +#: templates/templates/my-bookings.php:101 +#, php-format +msgid "Please Log In to view your bookings." +msgstr "Per favor Entra per a veure les teves reserves." + +# @ dbem +#: templates/templates/events-search.php:35 +msgid "between" +msgstr "entre" + +#: em-install.php:331 +msgid "All Categories" +msgstr "Totes les categories" + +#: em-install.php:333 +msgid "All Countries" +msgstr "Tots els països" + +#: em-install.php:335 +msgid "All Regions" +msgstr "Totes les regions" + +#: em-install.php:337 +msgid "All States" +msgstr "Tots els estats" + +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: em-install.php:328 +#: events-manager.php:241 +msgid "Search" +msgstr "Cerca" + +#: events-manager.php:243 +msgid "Loading..." +msgstr "Carregant..." + +#: events-manager.php:242 +msgid "Searching..." +msgstr "Cercant..." + +#: templates/placeholders/bookingbutton.php:6 +msgid "Book Now" +msgstr "Reservi ara" + +#: templates/placeholders/bookingbutton.php:7 +msgid "Booking..." +msgstr "Reservant..." + +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Mapa no disponible" + +#: em-install.php:529 +msgid "Online bookings are not available for this event." +msgstr "Les reservas en línia no estan disponibles per aquest esdeveniment." + +#: em-install.php:530 +msgid "Bookings are closed for this event." +msgstr "Les reservas estan tancades per aquest esdeveniment." + +#: events-manager.php:222 +msgid "Please wait while the booking is being submitted." +msgstr "Per favor, espera mentre que la reserva s'està enviant." + +#: admin/em-options.php:40 +msgid "Changes saved." +msgstr "Canvis desats." + +#: admin/em-help.php:28 +#: admin/em-ms-options.php:52 +#: admin/em-options.php:187 +msgid "Event Related Placeholders" +msgstr "Marcadors de posició d'esdeveniments relacionats" + +#: admin/em-help.php:34 +#: admin/em-ms-options.php:53 +#: admin/em-options.php:188 +msgid "Location Related Placeholders" +msgstr "Marcadors de posició de localitzacions relacionades" + +#: admin/em-help.php:37 +#: admin/em-ms-options.php:54 +#: admin/em-options.php:189 +msgid "Booking Related Placeholders" +msgstr "Marcadors de posició de reserves relacionades" + +#: admin/em-help.php:31 +#: admin/em-ms-options.php:55 +#: admin/em-options.php:190 +msgid "Category Related Placeholders" +msgstr "Marcadors de posició de categories relacionades" + +#: admin/em-ms-options.php:56 +#: admin/em-options.php:191 +#, php-format +msgid "This accepts %s and %s placeholders." +msgstr "Això accepta marcadors de posició de %s i %s." + +#: admin/em-ms-options.php:57 +#: admin/em-ms-options.php:58 +#: admin/em-options.php:192 +#: admin/em-options.php:193 +#, php-format +msgid "This accepts %s placeholders." +msgstr "Això accepta marcadors de posició de %s." + +#: admin/em-ms-options.php:59 +#: admin/em-options.php:194 +#, php-format +msgid "This accepts %s, %s and %s placeholders." +msgstr "Això accepta marcadors de posició de %s, %s i %s ." + +#: admin/em-ms-options.php:61 +#: admin/em-ms-options.php:199 +#: admin/em-options.php:197 +#: admin/em-options.php:1432 +msgid "Save Changes" +msgstr "Desar canvis" + +#: admin/em-ms-options.php:61 +#: admin/em-options.php:197 +#: classes/em-bookings-table.php:53 +msgid "All" +msgstr "Tots" + +#: admin/em-ms-options.php:66 +#: admin/em-options.php:202 +msgid "Collapse All" +msgstr "Contreure tot" + +#: admin/em-ms-options.php:67 +#: admin/em-options.php:203 +msgid "Expand All" +msgstr "Desplegar tot" + +#: admin/em-ms-options.php:138 +#: admin/em-options.php:289 +msgid "Event Manager Options" +msgstr "Opcions de Event Manager" + +#: admin/em-ms-options.php:148 +#: admin/em-options.php:300 +#: admin/em-options.php:381 +#: admin/em-options.php:411 +#: admin/em-options.php:433 +#: admin/em-options.php:455 +#: admin/em-options.php:469 +#: admin/em-options.php:626 +#: admin/em-options.php:640 +#: admin/em-options.php:760 +#: admin/em-options.php:850 +#: admin/em-options.php:882 +#: admin/em-options.php:943 +#: admin/em-options.php:967 +#: admin/em-options.php:991 +#: admin/em-options.php:1009 +#: admin/em-options.php:1074 +#: admin/em-options.php:1105 +#: admin/em-options.php:1135 +#: admin/em-options.php:1157 +#: admin/em-options.php:1172 +#: admin/em-options.php:1201 +#: admin/em-options.php:1218 +#: admin/em-options.php:1236 +#: admin/em-options.php:1272 +#: admin/em-options.php:1284 +#: admin/em-options.php:1306 +#: admin/em-options.php:1340 +#: admin/em-options.php:1393 +#: admin/em-options.php:1453 +#: admin/em-options.php:1477 +#: admin/em-options.php:1523 +#: admin/em-options.php:1632 +msgid "Click to toggle" +msgstr "Clic per canviar" + +#: admin/em-ms-options.php:148 +msgid "Multi Site Options" +msgstr "Opcions MultiSte" + +#: admin/em-ms-options.php:152 +msgid "Enable global tables mode?" +msgstr "Activar el mode de taules global?" + +#: admin/em-ms-options.php:152 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Seleccionant \"sí\" farà que tots els esdeveniments es desin a la taula principal d'esdeveniments (EM també ha de estar activat). Això et permet compartir esdeveniments entre diferents blocs, com mostrar esdeveniments a la teva xarxa mentre es permet als usuaris mostrar i gestionar els seus esdeveniments dintre del seu propi bloc. Tingui en compte que activar això significarà que els esdeveniments creats anteriorment als sub-blocs no seran accessibles mai més, i si es canvia de nou aquests hi seran però els nous esdeveniments creats en el mode d'esdeveniments global només romandran en el lloc principal." + +#: admin/em-ms-options.php:163 +msgid "Display global events on main blog?" +msgstr "Mostrar els esdeveniments globals en el bloc principal?" + +#: admin/em-options.php:354 +msgid "Use dropdown for locations?" +msgstr "Utilitzar desplegable per a les localitzacions?" + +#: admin/em-options.php:354 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Selecciona sí per a escollir una localització d'un menú desplegable; la selecció de localització serà més ràpida, però perdràs l'habilitat d'inserir localitzacions amb esdeveniments" + +#: admin/em-options.php:310 +msgid "Select yes to enable the recurrence features feature" +msgstr "Selecciona sí per activar les característiques de les recurrències" + +#: admin/em-options.php:311 +msgid "Enable bookings?" +msgstr "Activar reserves?" + +#: admin/em-options.php:311 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Selecciona sí per a permetre reserves i entrades per esdeveniments" + +#: admin/em-options.php:314 +msgid "Select yes to enable the category features" +msgstr "Selecciona sí per activar les característiques de les categories" + +#: admin/em-options.php:326 +#: admin/em-options.php:355 +msgid "Select yes to enable the attributes feature" +msgstr "Selecciona sí per activar les característiques dels atributs" + +#: admin/em-options.php:318 +msgid "no default category" +msgstr "sense categoria per defecte" + +#: admin/em-options.php:323 +msgid "Default Category" +msgstr "Categoria per defecte" + +#: admin/em-options.php:323 +msgid "This option allows you to select the default category when adding an event." +msgstr "Aquesta opció et permet seleccionar la categoria per defecte quan s'afegeixi un esdeveniment." + +#: admin/em-options.php:339 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(actualment no aplicable amb la propiedad d'esdeveniments, molt aviat!)" + +#: admin/em-options.php:334 +msgid "no default location" +msgstr "sense localització per defecte" + +#: admin/em-options.php:339 +msgid "Default Location" +msgstr "Localització per defecte" + +#: admin/em-options.php:339 +msgid "This option allows you to select the default location when adding an event." +msgstr "Aquesta opció et permet seleccionar la localització per defecte quan s'afegeixi un esdeveniment." + +#: admin/em-options.php:342 +msgid "Default Location Country" +msgstr "País de la localitzacio per defecte" + +#: admin/em-options.php:342 +msgid "no default country" +msgstr "sense país per defecte" + +#: admin/em-options.php:342 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Si selecciones un país per defecte, aquest serà pre-seleccionat quan es creï una nova localització." + +#: admin/em-options.php:329 +#, php-format +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "També pots afegir aquí els atributs de l'esdeveniment, un per cada línia en aquest format #_ATT{key} . No apareixeran a les pàgines d'esdeveniments a no ser que els insereixis dintre una altra plantilla avall, però és possible que vulguis desar informació addicional sobre un esdeveniment per altres usos. Més informació sobre els marcadors de posició." + +#: admin/em-options.php:368 +msgid "Show some love?" +msgstr "Mostrar una mica d'amor?" + +#: admin/em-options.php:368 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Cents d'hores lliures se'ns han anat desenvolupant aquesta extensió gratuïta, mostra el teu suport i afegeix un petit enllaç a la pàgina web de l'extensió a la part inferior de les teves pàgines d'esdeveniments." + +#: admin/em-options.php:482 +msgid "Events page" +msgstr "Pàgines d'esdeveniments" + +#: admin/em-options.php:487 +msgid "Show events page in lists?" +msgstr "Mostar les pàgines d'esdeveniments en llistes?" + +#: admin/em-options.php:487 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Marca aquesta opció si vols que la pàgina d'esdeveniments apareixi juntament amb altres pàgines a les listes de pàgines." + +#: admin/em-options.php:488 +msgid "Display calendar in events page?" +msgstr "Mostrar calendari a la pàgina d'esdeveniments?" + +#: admin/em-options.php:488 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Aquesta opció permet mostrar el calendari a la pàgina d'esdeveniments, en lloc de la llista predeterminada. Es recomana no mostrar a la vegada el giny del calendari i la pàgina del calendari." + +#: admin/em-options.php:488 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Si vols mostrar els esdeveniments que abarquin més d'un dia, consulta la secció Calendari en aquesta pàgina." + +#: admin/em-options.php:489 +msgid "Disable title rewriting?" +msgstr "Desactivar la reescriptura de títols?" + +#: admin/em-options.php:490 +msgid "Event Manager titles" +msgstr "Títols d'Event Manager" + +#: admin/em-options.php:490 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Aquest ajust només importa si es selecciona 'Sí'. Veuràs que els títols de la pàgina d'esdeveniments no estan sent re-escrits, i tindràs un nou títol sota el nom de la pàgina per defecte. Aquí és on controles l'HTML d¡aquest títol. Assegura't de mantindre el marcador de posició #_PAGETITLE aquí, ja que això és el que es torna a escriure pel Events Manager. per controlar el que s'està reescrivint en aquest títol, consulta la configuració de més avall pels títols de les pàginas." + +#: admin/em-options.php:617 +msgid "Event List Limits" +msgstr "Límits de la llista d'esdeveniments" + +#: admin/em-options.php:617 +msgid "This will control how many events are shown on one list by default." +msgstr "Això controlrà quants esdeveniments es mostraran per defecte a una llista." + +#: admin/em-options.php:550 +msgid "Are current events past events?" +msgstr "Són passats els esdeveniments actuals?" + +#: admin/em-options.php:550 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Per defecte, els esdeveniments que tenen una data de finalització posterior a l'actual s'inclouen a les cerques, selecciona sí si consideres que els esdeveniments que començaren 'ahir' són passats." + +#: admin/em-options.php:491 +msgid "Show events search?" +msgstr "Mostrar la cerca d'esdeveniments?" + +#: admin/em-options.php:491 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Si es selecciona sí, un formulari de cerca apareixerà sobre la teva llista d'esdeveniments." + +#: admin/em-options.php:560 +#: admin/em-options.php:1022 +msgid "Default event list ordering" +msgstr "Ordre per defecte de la llista d'esdeveniments" + +#: admin/em-options.php:565 +msgid "Order by start date, start time, then event name" +msgstr "Ordenar per data d'inici, hora d'inici, llavors nom d'esdeveniment" + +#: admin/em-options.php:566 +msgid "Order by name, start date, then start time" +msgstr "Ordenar per nom, data d'inici, llavors hora d'inici" + +#: admin/em-options.php:567 +msgid "Order by name, end date, then end time" +msgstr "Ordenar per nom, data de finalització, llavors hora de finalització" + +#: admin/em-options.php:568 +msgid "Order by end date, end time, then event name" +msgstr "Ordenar per data de finalització, hora de finalització, llavors nom de l'esdeveniment" + +#: admin/em-options.php:582 +#: admin/em-options.php:1042 +msgid "All Ascending" +msgstr "Tot ascendent" + +#: admin/em-options.php:585 +#: admin/em-options.php:1045 +msgid "All Descending" +msgstr "Tot descendent" + +#: admin/em-options.php:539 +#: admin/em-options.php:599 +#: admin/em-options.php:1055 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "Quan Events Manager mostra la llista d'esdeveniments, el comportament predeterminat és ordenar per data d'inici en ordre ascendent. Per canviar això, modifica els valors anteriors." + +#: admin/em-options.php:603 +msgid "Event list scope" +msgstr "Abast de la llista d'esdeveniments" + +#: admin/em-options.php:613 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Mostrar sols els esdeveniments que comencin dintre d'un plaç determinat a la pàgina d'esdeveniments. Per defecte es mostren els esdeveniments futurs sense límit de temps final." + +#: admin/em-options.php:943 +msgid "Events format" +msgstr "Format dels esdeveniments" + +#: admin/em-options.php:946 +#: admin/em-options.php:1077 +#: admin/em-options.php:1108 +#, php-format +msgid "%s Page" +msgstr "Pàgina de %s" + +#: admin/em-options.php:948 +#: admin/em-options.php:1092 +#: admin/em-options.php:1122 +#: admin/em-options.php:1145 +msgid "Default event list format header" +msgstr "Capçalera per defecte de la llista d'esdeveniments" + +#: admin/em-options.php:948 +#: admin/em-options.php:1092 +#: admin/em-options.php:1122 +#: admin/em-options.php:1145 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Aquest contingut apareixerà just per sobre del teu codi pel format per defecte de la llista d'esdeveniments. Per defecte està en blanc." + +#: admin/em-options.php:949 +msgid "Default event list format" +msgstr "Format per defecte de la llista d'esdeveniments" + +#: admin/em-options.php:949 +msgid "The format of any events in a list." +msgstr "El format de qualsevol esdeveniment dins una llista." + +#: admin/em-options.php:950 +#: admin/em-options.php:1094 +#: admin/em-options.php:1124 +#: admin/em-options.php:1147 +msgid "Default event list format footer" +msgstr "Format per defecte del peu de la llista d'esdeveniments" + +#: admin/em-options.php:950 +#: admin/em-options.php:1094 +#: admin/em-options.php:1124 +#: admin/em-options.php:1147 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Aquest contingut apareixerà just per sota del teu codi pel format per defecte de la llista d'esdeveniments. Per defecte està en blanc." + +#: admin/em-options.php:951 +msgid "No events message" +msgstr "Missatge de \"no hi ha esdeveniments\"" + +#: admin/em-options.php:951 +msgid "The message displayed when no events are available." +msgstr "El missatge que aparaeix quan no hi ha esdeveniments disponibles" + +#: admin/em-options.php:952 +msgid "List events by date title" +msgstr "Títol de la llista d'esdeveniments per data" + +#: admin/em-options.php:952 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
          " +msgstr "Si està veient una pàgina d'esdeveniments per una data determinada, aquest és el títol que es mostrarà. Per insertar els valors de data, utilitzi els codis PHP de format de temps amb un símbol # davant d'ells. Per exemple, #m, #M, #j, etc
          " + +#: admin/em-options.php:954 +#: admin/em-options.php:1084 +#: admin/em-options.php:1115 +#: admin/em-options.php:1138 +#, php-format +msgid "Single %s Page" +msgstr "Pàgina d'un sol %s" + +#: admin/em-options.php:957 +msgid "Single event page title format" +msgstr "Format del títol de la pàgina d'un sol esdeveniment" + +#: admin/em-options.php:957 +msgid "The format of a single event page title." +msgstr "El format del títol de la pàgina d'un sol esdeveniment." + +#: admin/em-options.php:959 +msgid "Default single event format" +msgstr "Format per defecte d'un sol esdeveniment" + +#: admin/em-options.php:959 +msgid "The format of a single event page." +msgstr "El format de la pàgina d'un sol esdeveniment" + +#: admin/em-options.php:1009 +msgid "Calendar format" +msgstr "Format del calendari" + +#: admin/em-options.php:1013 +msgid "Small calendar title" +msgstr "Títol del calendari petit" + +#: admin/em-options.php:1013 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "El format del títol, corresponent al text que apareix quan es passa a un dia del calendari ple d'esdeveniments." + +#: admin/em-options.php:1014 +msgid "Small calendar title separator" +msgstr "Títol del separador del calendari petit" + +#: admin/em-options.php:1014 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "El separador que apareix sobre el títol quan més d'un esdeveniment està tenint lloc al mateix dia." + +#: admin/em-options.php:1015 +msgid "Full calendar events format" +msgstr "Format del calendari d'esdeveniments complet" + +#: admin/em-options.php:1015 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "El format de cada esdeveniment quan es mostra al calendari complet. Recorda incloure les etiquetes li abans i després de l'esdeveniment." + +#: admin/em-options.php:1016 +msgid "Show long events on calendar pages?" +msgstr "Mostrar els esdeveniments llargs a les pàginas del calendari?" + +#: admin/em-options.php:1016 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Si mostres el calendari a la pàgina d'esdeveniments (veure la sección 'Format dels esdeveniments' en aquesta pàgina), tens l'opció de mostrar esdeveniments que abasteixen més dies del dia en el que ocorreix." + +#: admin/em-options.php:1018 +msgid "Show list on day with single event?" +msgstr "Mostrar la llista a un dia mb un sol esdeveniment?" + +#: admin/em-options.php:1018 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Per defecte, si un dia del calendari tan sols té un esdeveniment, es mostra aquest sol esdeveniment quan es clica a l'enllaç d'aquell dia. Si selecciones 'Sí' aquí, sempre veuràs una llsta d'esdeveniments." + +#: admin/em-options.php:1062 +msgid "iCal Feed Settings" +msgstr "Configuració del feed de iCal" + +#: admin/em-options.php:1064 +msgid "iCal Title" +msgstr "Títol de iCal" + +# @ dbem +#: admin/em-options.php:1064 +msgid "The title that will appear in the calendar." +msgstr "Títol que apareixerà al calendari." + +# @ dbem +#: admin/em-options.php:1065 +msgid "iCal Limit" +msgstr "Límit iCal" + +# @ dbem +#: admin/em-options.php:1065 +msgid "Limits the number of future events shown (0 = unlimited)." +msgstr "Limita el nombre de futurs esdeveniments que es mostraran (0 = il·limitat)" + +#: admin/em-options.php:1074 +msgid "Locations format" +msgstr "Format de les localitzacions" + +#: admin/em-options.php:1079 +#: admin/em-options.php:1110 +#, php-format +msgid "%s list header format" +msgstr "Format de la capçalera de la llista de %s" + +#: admin/em-options.php:1079 +#: admin/em-options.php:1110 +#, php-format +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Aquest contingut apareixerà just per sobre del teu codi per la llista de %s d'avall. Per defecte està en blanc." + +#: admin/em-options.php:1080 +#: admin/em-options.php:1111 +#, php-format +msgid "%s list item format" +msgstr "Format de la llista d'items de %s" + +#: admin/em-options.php:1080 +#: admin/em-options.php:1111 +#, php-format +msgid "The format of a single %s in a list." +msgstr "El format d'un sol %s a una llista." + +#: admin/em-options.php:1081 +#: admin/em-options.php:1112 +#, php-format +msgid "%s list footer format" +msgstr "Format del peu de la llista de %s" + +#: admin/em-options.php:1081 +#: admin/em-options.php:1112 +#, php-format +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Aquest contingut apareixerà just per sota del teu codi per la llista de %s d'adalt. Per defecte està en blanc." + +#: admin/em-options.php:1082 +#: admin/em-options.php:1095 +#: admin/em-options.php:1113 +#: admin/em-options.php:1125 +#: admin/em-options.php:1148 +#, php-format +msgid "No %s message" +msgstr "Missatge de \"no hi ha %s\"" + +#: admin/em-options.php:1082 +#: admin/em-options.php:1113 +#, php-format +msgid "The message displayed when no %s are available." +msgstr "El missatge que apareixerà quan no hi hagi %s disponibles." + +#: admin/em-options.php:1086 +#: admin/em-options.php:1117 +#: admin/em-options.php:1140 +#, php-format +msgid "Single %s title format" +msgstr "Fotmat del títol d'un sol %s" + +#: admin/em-options.php:1086 +msgid "The format of a single location page title." +msgstr "El format del títol de la pàgina d'una sola localització." + +#: admin/em-options.php:1087 +#: admin/em-options.php:1118 +#: admin/em-options.php:1141 +#, php-format +msgid "Single %s page format" +msgstr "Fotmat de l pàgina d'un sol %s" + +#: admin/em-options.php:1087 +msgid "The format of a single location page." +msgstr "El format de la pàgina d'una sola localització." + +#: admin/em-options.php:1088 +msgid "Default location balloon format" +msgstr "Format per defecte del globus d'una localització" + +#: admin/em-options.php:1088 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "El format del text que apareix al globus que descriu la localització al mapa d'una sola localització." + +#: admin/em-options.php:1090 +#: admin/em-options.php:1120 +#: admin/em-options.php:1143 +#, php-format +msgid "%s List Formats" +msgstr "Formats de les llistes de %s" + +#: admin/em-options.php:1093 +#: admin/em-options.php:1123 +#: admin/em-options.php:1146 +#, php-format +msgid "Default %s list format" +msgstr "Format per defecte de les llistes de %s" + +#: admin/em-ms-options.php:163 +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-options.php:459 +#: admin/em-options.php:460 +#: admin/em-options.php:461 +#: admin/em-options.php:497 +#: admin/em-options.php:498 +#: admin/em-options.php:549 +#: admin/em-options.php:551 +#: admin/em-options.php:927 +#: admin/em-options.php:1093 +#: admin/em-options.php:1095 +#: admin/em-options.php:1123 +#: admin/em-options.php:1125 +#: admin/em-options.php:1146 +#: admin/em-options.php:1148 +#: admin/em-options.php:1534 +#: admin/em-options.php:1535 +#: admin/em-options.php:1536 +#: admin/em-options.php:1537 +#: admin/em-options.php:1538 +#: admin/em-options.php:1539 +#: events-manager.php:272 +#: events-manager.php:273 +#: events-manager.php:274 +#: events-manager.php:275 +#: events-manager.php:276 +#: events-manager.php:277 +msgid "events" +msgstr "esdeveniments" + +#: admin/em-options.php:1093 +msgid "The format of the events the list inserted in the location page through the #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS element." +msgstr "Format dels esdeveniments de la llista inserida a la pàgina de localització a través dels elements #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS i #_LOCATIONALLEVENTS." + +#: admin/em-options.php:1095 +msgid "The message to be displayed in the list generated by #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS when no events are available." +msgstr "Missatge que es mostrarà a la lista generada per #_LOCATIONNEXTEVENTS , #_LOCATIONPASTEVENTS i #_LOCATIONALLEVENTS quan no hi hagi esdeveniments disponibles." + +#: admin/em-options.php:1105 +msgid "Categories format" +msgstr "Format de les categories" + +#: admin/em-options.php:764 +#: admin/em-options.php:765 +#: admin/em-options.php:1108 +#: admin/em-options.php:1110 +#: admin/em-options.php:1111 +#: admin/em-options.php:1112 +#: admin/em-options.php:1113 +#: em-install.php:439 +#: em-install.php:441 +#: em-install.php:757 +#: em-install.php:807 +msgid "Categories" +msgstr "Categories" + +#: admin/em-options.php:1117 +msgid "The format of a single category page title." +msgstr "El format del títol de la pàgina d'una categoria." + +#: admin/em-options.php:1118 +msgid "The format of a single category page." +msgstr "El format de la pàgina d'una categoria." + +#: admin/em-options.php:1123 +msgid "The format of the events the list inserted in the category page through the #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." +msgstr "El format dels esdeveniments de la lista inserida a la pàgina de categories a través dels elements #_CATEGORYNEXTEVENTS , #_CATEGORYPASTEVENTS i #_CATEGORYALLEVENTS." + +#: admin/em-options.php:1125 +msgid "The message to be displayed in the list generated by #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS when no events are available." +msgstr "El missatge que es mostrarà a la lista generada per #_CATEGORYNEXTEVENTS , #_CATEGORYNEXTEVENTS i #_CATEGORYALLEVENTS quan no hi hagi esdeveniments disponibles." + +#: admin/em-options.php:1157 +msgid "RSS feed format" +msgstr "Format del fedd RSS" + +#: admin/em-options.php:1161 +msgid "RSS main title" +msgstr "Títol principal del RSS" + +#: admin/em-options.php:1161 +msgid "The main title of your RSS events feed." +msgstr "El títol principal del teu feed RSS d'esdeveniments." + +#: admin/em-options.php:1162 +msgid "RSS main description" +msgstr "Descripció principal del RSS" + +#: admin/em-options.php:1162 +msgid "The main description of your RSS events feed." +msgstr "La descripció principal del teu feed RSS d'esdeveniments" + +#: admin/em-options.php:1163 +msgid "RSS title format" +msgstr "Format del títol del RSS" + +#: admin/em-options.php:1163 +msgid "The format of the title of each item in the events RSS feed." +msgstr "El format del títol de cada ítem al feed RSS d'esdeveniments" + +#: admin/em-options.php:1164 +msgid "RSS description format" +msgstr "Format de la descripció del RSS" + +#: admin/em-options.php:1164 +msgid "The format of the description of each item in the events RSS feed." +msgstr "El format de la descripció de cada ítem al feed RSS d'esdeveniments" + +#: admin/em-options.php:1172 +msgid "Maps and geotagging" +msgstr "Mapes i geolocalització" + +#: admin/em-options.php:1177 +msgid "Enable Google Maps integration?" +msgstr "Activar la integració de Google Maps?" + +#: admin/em-options.php:1181 +msgid "Check this option to enable Goggle Map integration." +msgstr "Marca aquesta opció per a permetre la integració de Google Maps." + +#: admin/em-options.php:1185 +msgid "Map text format" +msgstr "Format del text del mapa" + +#: admin/em-options.php:1185 +msgid "The text format inside the map balloons." +msgstr "Format del texte dintre dels globus del mapa." + +#: admin/em-options.php:1206 +msgid "Approval Required?" +msgstr "Es necessita aprovació?" + +#: admin/em-options.php:1206 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Les reserves no es confirmaran fins que l'administrador de l'esdeveniment ho apovi." + +#: admin/em-options.php:1223 +msgid "Currency" +msgstr "Moneda" + +#: admin/em-options.php:1223 +msgid "Choose your currency for displaying event pricing." +msgstr "Selecciona la teva moneda per mostrar els preus de l'esdeveniment." + +#: admin/em-options.php:1288 +msgid "Single ticket mode?" +msgstr "Mode d'una sola entrada?" + +#: admin/em-options.php:1288 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "Al mode d'una sola entrada sencilla, l'usuari només pot crear una entreda per reserva (i no apareixeran les opcions per afegir més entrades)." + +#: admin/em-options.php:1289 +msgid "Show ticket table in single ticket mode?" +msgstr "Mostrar la taula d'entradas en el mode d'una entrada?" + +#: admin/em-options.php:1289 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Si prefereixes una taula d'entrades amb vàries entrades, inclòs pels esdeveniments d'una sola entrada, activa això." + +#: admin/em-options.php:1290 +msgid "Show unavailable tickets?" +msgstr "Mostrar les entrades no disponibles?" + +#: admin/em-options.php:1290 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Pots escoller si vols mostrar o no als visitants les entrades no disponibles." + +#: admin/em-options.php:1207 +msgid "Reserved unconfirmed spaces?" +msgstr "Places reservades no confirmades?" + +#: admin/em-options.php:1207 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Per defecte, les places dels esdeveniments deixen d'estar disponibles una vegada que hi ha suficientes reserves CONFIRMADES. Per reservar places inclòs si no són aprovades, seleccioni sí." + +#: admin/em-options.php:1291 +msgid "Show multiple tickets if logged out?" +msgstr "Mostrar múltiples entrades si no ha iniciat sessió?" + +#: admin/em-options.php:1291 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Si no ha iniciat sessió, es demanarà a l'usuari que estigui registrat per a poder reservar. De totes formes, podem mostrar entrades disponibles si tens més d'una entrada." + +#: admin/em-options.php:1209 +msgid "Allow overbooking when approving?" +msgstr "Permetre overbooking a l'aprovació?" + +#: admin/em-options.php:1209 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Si reps un munt de reserves pendents i decideixes permetre més reserves que espais disponibles, posant això a sí et permetrà anular el límit de places de l'esdeveniment quan els aprovis manualment." + +#: admin/em-options.php:1205 +msgid "Allow guest bookings?" +msgstr "Permetre les reserves de convidats?" + +#: admin/em-options.php:1205 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Si està activat, els visitants convidats poden proporcionar una direcció de correu electrònic i un compte d'usuari es crearà automàticamente juntament amb la seva reserva. Tambié estarà capacitat per tornar-hi a entrar amb la compté recentment creada." + +#: admin/em-options.php:1210 +msgid "Allow double bookings?" +msgstr "Permetre reserves dobles?" + +# @ dbem +#: admin/em-options.php:1210 +msgid "If enabled, users can book an event more than once." +msgstr "Si s'habilita, els usuaris poden reservar un esdeveniment més d'una vegada." + +#: admin/em-options.php:1276 +msgid "Display login form?" +msgstr "Mostrar el formulari d'inici de sessió?" + +#: admin/em-options.php:1276 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Escull si vols mostrar o no un formulari d'accés a l'àrea del formulari de reserves per recordar als teus membres que iniciïn sessió abans de reservar." + +#: admin/em-options.php:1253 +msgid "Booking form feedback messages" +msgstr "Reserves des de missatges de feedback" + +# @ dbem +#: admin/em-options.php:1254 +msgid "When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below." +msgstr "Quan un esdeveniment és fet per un usuari, un missatge de resposta es mostrarà en funció del resultat, el qual es pot personalitzar a continuació." + +#: admin/em-options.php:1256 +msgid "Successful booking" +msgstr "Reservat amb èxit" + +# @ dbem +#: admin/em-options.php:1256 +msgid "When a booking is registered and confirmed." +msgstr "Quan una reserva està registrada i confirmada." + +#: admin/em-options.php:1257 +msgid "Successful pending booking" +msgstr "Reserva pendent amb èxit" + +# @ dbem +#: admin/em-options.php:1257 +msgid "When a booking is registered but pending." +msgstr "Quan una reserva està registrada però pendent." + +# @ dbem +#: admin/em-options.php:1258 +msgid "Not enough spaces" +msgstr "No hi ha places suficients" + +#: admin/em-options.php:1258 +msgid "When a booking cannot be made due to lack of spaces." +msgstr "Quan una reserva no es pot fer degut a la manca de places." + +# @ dbem +#: admin/em-options.php:1259 +msgid "Errors" +msgstr "Errors" + +# @ dbem +#: admin/em-options.php:1259 +msgid "When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors." +msgstr "Quan una reserva no es pot fer degut a un error mentre s'omplia el formulari. Per sota d'aquesta, hi haurà una llista dinàmica d'errors." + +# @ dbem +#: admin/em-options.php:1261 +msgid "User must log in" +msgstr "L'usuari ha d'iniciar sessió" + +#: admin/em-options.php:1261 +msgid "When a user must log in before making a booking." +msgstr "Quan un usuari ha d'iniciar sessió abans de fer una reserva." + +# @ dbem +#: admin/em-options.php:1262 +msgid "Error mailing user" +msgstr "Error enviant un correu a l'usuari" + +# @ dbem +#: admin/em-options.php:1262 +msgid "If a booking is made and an email cannot be sent, this is added to the success message." +msgstr "Si es fa la reserva i el correu electrònic no es pot enviar, s'afegeix al missatge d'èxit." + +# @ dbem +#: admin/em-options.php:1263 +msgid "Already booked" +msgstr "Ja reservat." + +# @ dbem +#: admin/em-options.php:1263 +msgid "If the user made a previous booking and cannot double-book." +msgstr "Si l'usuari ha fet una reserva anterior i no pot reservar doblement." + +# @ dbem +#: admin/em-options.php:1264 +msgid "No spaces booked" +msgstr "No s'ha reservat cap plaça" + +# @ dbem +#: admin/em-options.php:1264 +msgid "If the user tries to make a booking without requesting any spaces." +msgstr "Si l'usuari intenta fer una reserva sense sol·licitar cap plaça." + +#: admin/em-options.php:1340 +msgid "Booking Email Templates" +msgstr "Plantilles del correu electrònic de reserva" + +#: admin/em-options.php:1345 +msgid "Default contact person" +msgstr "Persona de contacte per defecte" + +#: admin/em-options.php:1345 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Selecciona la persona de contacte per defecte. Aquest usuari s'utilitzarà sempre que la persona de contacte no s'hagi especificat explícitament per un esdeveniment." + +#: admin/em-options.php:1346 +msgid "Email events admin?" +msgstr "Correu electrònic de l'administrador d'esdeveniments?" + +#: admin/em-options.php:1346 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Si vols que a cada confirmació de reserva d'esdeveniment s'enviï un correu electrònic a un administrador, escriu aquí la seva direcció (deixa-ho en blanc per a no enviar res)." + +#: admin/em-options.php:1347 +msgid "Email contact person?" +msgstr "Correu electrònic a la persona de contacte?" + +#: admin/em-options.php:1347 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Marca aquesta opció si vols que el contacte de l'esdeveniment rebi un correu electrònic quan algú reserva places. S'enviarà un correu electrònic quan la reserva sigui creada (sense importar si és confirmada o pendent)." + +#: admin/em-options.php:1348 +msgid "Disable new registration email?" +msgstr "Desactivar el correu electrònic de nou registre?" + +#: admin/em-options.php:1350 +msgid "Contact person booking confirmed" +msgstr "Persona de contacte quan reserva confirmada " + +#: admin/em-options.php:1351 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "Un correu electrònic serà enviat al contacte de l'esdeveniment quan una reserva es creada." + +#: admin/em-options.php:1353 +msgid "Contact person email subject" +msgstr "Assumpte del correu electrònic per la persona de contacte" + +#: admin/em-options.php:1354 +msgid "Contact person email" +msgstr "Correu electrònic per la persona de contacte" + +#: admin/em-options.php:1356 +msgid "Contact person booking cancelled" +msgstr "Persona de contacte quan reserves cancel·lades" + +#: admin/em-options.php:1357 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Un correu electrònic serà enviat al contacte de l'esdeveniment si algú cancel·la la seva reserva." + +#: admin/em-options.php:1359 +msgid "Contact person cancellation subject" +msgstr "Assumpte del correu electrònic per la persona de contacte quan es cancel·li una reserva" + +#: admin/em-options.php:1360 +msgid "Contact person cancellation email" +msgstr "Correu electrònic per la persona de contacte quan es cancel·li una reserva" + +#: admin/em-options.php:1362 +msgid "Confirmed booking email" +msgstr "Correu electrònic de reserva confirmada" + +#: admin/em-options.php:1363 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Això s'envia quan la reserva d'una persona es confirmada. Serà enviat automàticament si l'aprovació és requerida i la reserva és aprovada. Si l'aprovació està desactivada, això s'envia quan un usuari envia primer la seva reserva." + +#: admin/em-options.php:1365 +msgid "Booking confirmed email subject" +msgstr "Assumpte del correu electrònic de reserva confirmada" + +#: admin/em-options.php:1366 +msgid "Booking confirmed email" +msgstr "Correu electrònic de reserva confirmada" + +#: admin/em-options.php:1368 +msgid "Pending booking email" +msgstr "Correu electrònic de reserva pendent" + +#: admin/em-options.php:1369 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Això serà enviat a la persona quan enviï primerament la seva reserva. No és rellevant si les reserves no requereixen aprovació." + +#: admin/em-options.php:1371 +msgid "Booking pending email subject" +msgstr "Assumpte del correu electrònic de reserva pendent" + +#: admin/em-options.php:1372 +msgid "Booking pending email" +msgstr "Correu electrònic de reserva pendent" + +#: admin/em-options.php:1374 +msgid "Rejected booking email" +msgstr "Assumpte del correu electrònic de reserva rebutjada" + +#: admin/em-options.php:1375 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Això serà enviat automàticament quan una reserva sigui rebutjada. No és rellevant si les reserves no requereixen aprovació." + +#: admin/em-options.php:1377 +msgid "Booking rejected email subject" +msgstr "Assumpte del correu electrònic de reserva rebutjada" + +#: admin/em-options.php:1378 +msgid "Booking rejected email" +msgstr "Correu electrònic de reserva rebutjada" + +#: admin/em-options.php:1381 +msgid "This will be sent when a user cancels their booking." +msgstr "Això serà enviat quan un usuari cancel·li la seva reserva." + +#: admin/em-options.php:1383 +msgid "Booking cancelled email subject" +msgstr "Assumpte del correu electrònic de reserva cancel·lada" + +#: admin/em-options.php:1384 +msgid "Booking cancelled email" +msgstr "Correu electrònic de reserva rebutjada" + +#: admin/em-options.php:1477 +msgid "Email Settings" +msgstr "Configuració de correu electrònic" + +#: admin/em-options.php:1481 +msgid "Notification sender name" +msgstr "Nom del remitent de notificació" + +#: admin/em-options.php:1481 +msgid "Insert the display name of the notification sender." +msgstr "Insereix el nom a mostrar del remitent de notificació." + +#: admin/em-options.php:1482 +msgid "Notification sender address" +msgstr "Direcció del remitent de notificació" + +#: admin/em-options.php:1482 +msgid "Insert the address of the notification sender." +msgstr "Insereix la direcció del remitent de notificació." + +#: admin/em-options.php:1488 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "El port a través del qual l'enviarem les notificacions per correu electrònic. Assegura't de que el firewall no bloqueja aquest port." + +#: admin/em-options.php:1483 +msgid "Mail sending method" +msgstr "Mètode d'enviament de correu" + +#: admin/em-options.php:1483 +msgid "PHP mail function" +msgstr "Funció de correu PHP" + +#: admin/em-options.php:1483 +msgid "Select the method to send email notification." +msgstr "Selecciona el mètode per enviar notificacions per correu electrònic." + +#: admin/em-options.php:1489 +msgid "Use SMTP authentication?" +msgstr "Utilitzar l'autenticació SMTP?" + +#: admin/em-options.php:1489 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "L'autenticació SMTP és sovint necessària. Si utilitzes Gmail, assegura't d'establir aquest paràmetre a Sí" + +#: admin/em-options.php:1490 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "El servidor SMTP. Generalment, correspon a 'localhost';. Si utilitzes Gmail, estableix aquest valor com 'ssl://smtp.gmail.com:465'." + +#: admin/em-options.php:1491 +msgid "SMTP username" +msgstr "Nom d'usuari SMTP" + +#: admin/em-options.php:1491 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Introdueix el nom d'usuari per accedir al seu servidor SMTP" + +#: admin/em-options.php:1492 +msgid "SMTP password" +msgstr "Contrasenya SMTP" + +#: admin/em-options.php:1492 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Introdueix la contrasenya per accedir al seu servidor SMTP" + +#: admin/em-options.php:1457 +msgid "Maximum width (px)" +msgstr "Amplada màxima (píxels)" + +#: admin/em-options.php:1457 +msgid "The maximum allowed width for images uploades" +msgstr "L'amplada màxima permesa per a les imatges pujades" + +#: admin/em-options.php:1459 +msgid "Maximum height (px)" +msgstr "Altura màxima (píxels)" + +#: admin/em-options.php:1459 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "L'altura màxima permesa per a les imatges pujades, en píxels" + +#: admin/em-options.php:1461 +msgid "Maximum size (bytes)" +msgstr "El tamany màxim (en bytes)" + +#: admin/em-options.php:1461 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "El tamany màxim permès per a les imatges pujades, en bytes" + +#: admin/em-options.php:1523 +msgid "User Capabilities" +msgstr "Capacitats d'usuari" + +#: admin/em-options.php:1527 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Advertència: La modificació d'aquests valors pot esdevenir l'exposició d'informació que abans estava oculta a tots els usuaris." + +#: admin/em-options.php:1573 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Ara pots donar un control molt precís respecte al que els usuaris poden veure dels esdeveniments. Cada rol d'usuari pot realitzar diverses sèries d'accions." + +#: admin/em-options.php:1566 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "L'usuari pot gestionar reserves dels seus esdeveniments." + +#: admin/em-options.php:1567 +msgid "User can use and manage bookings with their events." +msgstr "L'usuari pot utilitzar i gestionar reserves dels seus esdeveniments." + +#: admin/em-options.php:396 +msgid "Allow anonymous event submissions?" +msgstr "Permetre enviaments anònims d'esdeveniments?" + +#: admin/em-options.php:396 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "T'agradaria permetre als usuaris que facin reserves anònimament? Si és així, pots utilitzar el nou shortcode [event_form] o l'etiqueta de la plantilla em_event_form() amb això activat." + +#: admin/em-options.php:397 +msgid "Guest Default User" +msgstr "Usuari convidat predeterminat" + +#: admin/em-options.php:390 +#: admin/em-options.php:398 +msgid "Success Message" +msgstr "Missatge d'èxit" + +#: admin/em-options.php:398 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Els remitents anònims no poden veure o modificar el seu esdeveniment una vegada enviat. Pots personalitzar el missatge d'èxit que veuran aquí." + +#: admin/em-bookings.php:60 +msgid "Event Bookings Dashboard" +msgstr "Panell de reserves d'esdeveniments" + +#: admin/em-bookings.php:77 +msgid "Events With Bookings Enabled" +msgstr "Activats esdeveniments amb reserves" + +#: admin/em-bookings.php:92 +#: admin/em-bookings.php:202 +#: admin/em-bookings.php:447 +#: admin/em-bookings.php:499 +msgid "You do not have the rights to manage this event." +msgstr "No tens drets per gestionar aquest esdeveniment." + +#: admin/em-bookings.php:104 +#, php-format +msgid "Manage %s Bookings" +msgstr "Gestionar les reserves de %s" + +#: admin/em-bookings.php:165 +msgid "View/Edit Event" +msgstr "Veure/Editar Esdeveniment" + +#: admin/em-bookings.php:116 +msgid "Availability" +msgstr "Disponibilitat" + +#: admin/em-bookings.php:117 +msgid "Spaces confirmed" +msgstr "Places confirmades" + +#: admin/em-bookings.php:154 +msgid "You do not have the rights to manage this ticket." +msgstr "No tens drets per gestionar aquesta entrada." + +#: admin/em-bookings.php:164 +#, php-format +msgid "Ticket for %s" +msgstr "Entrada per %s" + +#: admin/em-bookings.php:166 +msgid "View Event Bookings" +msgstr "Veure reserves d'esdeveniments" + +#: admin/em-bookings.php:175 +msgid "Min" +msgstr "Mín." + +#: admin/em-bookings.php:176 +msgid "Max" +msgstr "Màx." + +#: admin/em-bookings.php:177 +msgid "Start" +msgstr "Inici" + +#: admin/em-bookings.php:178 +msgid "End" +msgstr "Final" + +#: admin/em-bookings.php:210 +msgid "Edit Booking" +msgstr "Editar reserva" + +#: admin/em-bookings.php:218 +msgid "Event Details" +msgstr "Detalls de l'esdeveniment" + +#: admin/em-bookings.php:229 +msgid "Date/Time" +msgstr "Data/Hora" + +#: admin/em-bookings.php:242 +#: admin/em-bookings.php:469 +msgid "Personal Details" +msgstr "Dades personals" + +#: admin/em-bookings.php:251 +msgid "Booking Details" +msgstr "Dades de la reserva" + +#: admin/em-bookings.php:361 +msgid "Modify Booking" +msgstr "Modificar reserva" + +#: admin/em-bookings.php:403 +msgid "Booking Notes" +msgstr "Notes de reserva" + +#: admin/em-bookings.php:406 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Pots afegir notes privades a continuació com a referència interna que només veuran els gerents de l'esdeveniment." + +#: admin/em-bookings.php:411 +msgid "wrote" +msgstr "va escriure" + +#: admin/em-bookings.php:457 +msgid "Manage Person's Booking" +msgstr "Gestionar reserva de la persona" + +#: admin/em-bookings.php:459 +msgid "Edit User" +msgstr "Editar usuari" + +#: admin/em-bookings.php:481 +msgid "Past And Present Bookings" +msgstr "Reserves passades i presents" + +# @ dbem +#: admin/em-admin.php:124 +#, php-format +msgid "

          Events Manager is ready to go! It is highly recommended you read the Getting Started guide on our site, as well as checking out the Settings Page. Dismiss

          " +msgstr "

          El Events Manager està llest per funcionar! És altament recomanat que llegeixes la guia Com començar a la nostra web, així com comprobar la Pàgina de configuració. Descartar

          " + +#: admin/em-admin.php:186 +#, php-format +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Aquesta pàgina correspon a la pàgina d'esdeveniments del Events Manager. El seu contingut será sobreescrit pel Events Manager, encara que si inclous la paraula CONTENTS (en majúscules) i la envoltes amb altre text, només CONTENTS es sobreescriurà. Si vols canviar l'aparença dels seus esdeveniments, ves a la pàgina de configuració." + +#: em-functions.php:75 +#, php-format +msgid "Displaying %s–%s of %s" +msgstr "Mostrant %s–%s de %s" + +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +#: classes/em-bookings-table.php:561 +#: classes/em-bookings-table.php:579 +#: classes/em-bookings-table.php:587 +msgid "Approve" +msgstr "Aprovar" + +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-rejected.php:55 +msgid "Decline" +msgstr "Declinar" + +#: admin/bookings/em-cancelled.php:84 +#: admin/bookings/em-confirmed.php:85 +#: admin/bookings/em-pending.php:99 +#: admin/bookings/em-rejected.php:84 +msgid "Booker" +msgstr "Reservador" + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Restaurar" + +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-rejected.php:112 +#: classes/em-bookings-table.php:564 +#: classes/em-bookings-table.php:573 +#: classes/em-bookings-table.php:581 +#: classes/em-bookings-table.php:589 +msgid "Edit/View" +msgstr "Editar/Veure" + +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "No hi ha reserves cancel·lades." + +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +msgid "Unapprove" +msgstr "Desaprovar" + +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +#: classes/em-bookings-table.php:562 +#: classes/em-bookings-table.php:571 +msgid "Reject" +msgstr "Rebutjar" + +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +msgid "No confirmed bookings." +msgstr "No hi ha reserves confirmades." + +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "No hi ha reserves rebutjades." + +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "No hi ha reserves pendents." + +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Tots els esdeveniments" + +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Esdeveniments futurs" + +#: classes/em-bookings-table.php:83 +msgid "Total" +msgstr "Total" + +#: admin/bookings/em-events.php:69 +#: classes/em-bookings-table.php:388 +msgid "Filter" +msgstr "Filtre" + +#: admin/em-options.php:672 +#: admin/em-options.php:722 +#: admin/em-options.php:812 +#: classes/em-location-posts-admin.php:56 +msgid "Town" +msgstr "Ciutat" + +#: admin/em-admin.php:41 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Obtenir ajuda per Events Manager" + +#: admin/em-help.php:25 +msgid "Placeholders for customizing event pages" +msgstr "Marcadors de posició per personalitzar les pàgines d'esdeveniments" + +#: admin/em-help.php:26 +#, php-format +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "A la pàgina de configuració , trobaràs diversos quadres de text on pots editar l'aspecte de la informació de l'esdeveniment, com per exemple les llistes d'esdeveniments i de localitzacions. Utilitzant els marcadors de posició que hi ha a continuació, pots elegir quina informació es mostrarà." + +#: admin/em-admin.php:90 +#: classes/em-people.php:28 +#: events-manager.php:537 +msgid "Events Manager" +msgstr "Events Manager" + +#: em-functions.php:238 +msgid "Mon" +msgstr "dl." + +#: em-functions.php:238 +msgid "Tue" +msgstr "dt." + +#: em-functions.php:238 +msgid "Wed" +msgstr "dc." + +#: em-functions.php:238 +msgid "Thu" +msgstr "dj." + +#: em-functions.php:238 +msgid "Fri" +msgstr "dv." + +#: em-functions.php:238 +msgid "Sat" +msgstr "ds." + +#: em-functions.php:238 +msgid "Sun" +msgstr "dg." + +#: buddypress/bp-em-groups.php:133 +#: classes/em-event-post-admin.php:357 +#: classes/em-event-post-admin.php:363 +msgid "Group Ownership" +msgstr "Propietari del grup" + +#: classes/em-event-post-admin.php:190 +msgid "Bookings Stats" +msgstr "Estadístiques de reserves" + +#: templates/forms/event/booking-stats.php:12 +msgid "Available Spaces" +msgstr "Places disponibles" + +#: templates/forms/event/booking-stats.php:13 +msgid "Confirmed Spaces" +msgstr "Places confirmades" + +#: templates/forms/event/booking-stats.php:14 +msgid "Pending Spaces" +msgstr "Places pendents" + +#: templates/forms/event/booking-stats.php:34 +msgid "No responses yet!" +msgstr "Encara no hi ha respostes!" + +#: classes/em-event-post-admin.php:244 +#, php-format +msgid "No categories available, create one here first" +msgstr "No hi ha categories disponibles, primerament crear'n una aquí" + +#: templates/forms/event-editor.php:168 +msgid "No image uploaded for this event yet" +msgstr "Encara no hi ha cap imatge carregada per aquest esdeveniment" + +#: classes/em-event-post-admin.php:194 +#: classes/em-event-post-admin.php:360 +#: classes/em-location-post-admin.php:116 +msgid "Attributes" +msgstr "Atributs" + +#: templates/forms/event/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "No tens cap atribut personalitzat definit a cap de les teves configuracions de plantilla de Events Manager. Per favor, afegeix-les a la pàgina de configuració" + +#: templates/forms/event/attributes.php:50 +#: templates/forms/location/attributes.php:50 +msgid "Depreciated Attributes" +msgstr "Atributs depreciats" + +#: em-install.php:301 +msgid "

          -------------------------------
          Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

          -------------------------------
          Desenvolupat per Events Manager - http://wp-events-plugin.com" + +#: em-install.php:400 +#: em-install.php:408 +#: em-install.php:441 +#, php-format +msgid "No %s" +msgstr "No %s" + +#: em-debug.php:18 +#: em-install.php:427 +msgid "
        • No events in this location
        • " +msgstr "
        • No hi ha esdeveniments en aquest lloc
        • " + +#: em-install.php:442 +msgid "
        • No events in this category
        • " +msgstr "
        • No hi ha esdeveniments a n'aquesta categoria
        • " + +#: em-install.php:537 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Reservat amb èxit, a l'espera de confirmació (també rebràs un correu electrònic un cop hagis confirmat)." + +#: em-install.php:538 +msgid "Booking successful." +msgstr "Reservat amb èxit." + +#: em-install.php:540 +msgid "You must log in or register to make a booking." +msgstr "Has d'iniciar sessió o registrar-te per a realitzar una reserva." + +#: em-install.php:541 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "No obstant, hi ha hagut alguns problemes mentre s'enviaven els correus electrònics de confirmació a tu i/o a la persona de contacte de l'esdeveniment. És possible que vulguis contactar amb aquesta directament i fer-li saber d'aquest error." + +#: em-install.php:542 +msgid "Booking could not be created" +msgstr "La reserva no s'ha pogut crear" + +#: em-install.php:543 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Aquest correu electrònic ja existeix al nostre sistema, per favor inicia sessió per continuar amb la teva reserva." + +#: em-install.php:544 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Una nova conta d'usuario s'ha creat per tu. Per favor, consulta al teu correu electrònic les dades d'accés." + +#: em-install.php:545 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Hi ha hagut un problema per crear el comte d'usuari, per favor contacti amb l'administrador de la web." + +#: em-install.php:546 +msgid "You already have booked a seat at this event." +msgstr "Ja tens reservada una plaça per aquest esdeveniment." + +#: em-install.php:547 +msgid "You must request at least one space to book an event." +msgstr "Has de sol·licitar com a mínim una plaça per a reservar un esdeveniment." + +#: admin/em-options.php:1242 +#: em-install.php:554 +#: em-install.php:562 +msgid "Booking Cancelled" +msgstr "Reserva cancel·lada" + +#: em-install.php:556 +msgid "Booking Pending" +msgstr "Sol·licitud de reserva" + +#: em-install.php:558 +msgid "Booking Rejected" +msgstr "Reservas refusada" + +#: em-install.php:560 +msgid "Booking Confirmed" +msgstr "Reserva confirmada" + +#: em-debug.php:44 +#, php-format +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Estàs en el mode de depuració de Events Manager. Per a desactivar el mode debug, ves a la pàgina de confuiguració." + +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "No s'ha facilitat identificació d'entrada" + +#: em-actions.php:181 +#, php-format +msgid "%s successfully deleted" +msgstr "%s eliminat correctament" + +#: em-install.php:536 +#, php-format +msgid "Booking %s" +msgstr "Reservant %s" + +#: events-manager.php:272 +#: events-manager.php:280 +#: events-manager.php:286 +#, php-format +msgid "You do not have permission to publish %s" +msgstr "No tens permís per publicar %s" + +#: events-manager.php:276 +#: events-manager.php:284 +#: events-manager.php:290 +#: events-manager.php:296 +#, php-format +msgid "You do not have permission to edit %s" +msgstr "No tens permís per editar %s" + +#: events-manager.php:273 +#: events-manager.php:281 +#: events-manager.php:287 +#, php-format +msgid "You do not have permission to delete others %s" +msgstr "No tens permís per eliminar altres %s" + +#: events-manager.php:275 +#: events-manager.php:283 +#: events-manager.php:289 +#, php-format +msgid "You do not have permission to edit others %s" +msgstr "No tens permís per editar altres %s" + +#: events-manager.php:269 +#, php-format +msgid "You do not have permission to manage others %s" +msgstr "No tens permís per administrar altres %s" + +#: admin/em-options.php:890 +#: admin/em-options.php:929 +#: events-manager.php:269 +#: events-manager.php:270 +msgid "bookings" +msgstr "reserves" + +#: events-manager.php:274 +#: events-manager.php:282 +#: events-manager.php:288 +#: events-manager.php:295 +#, php-format +msgid "You do not have permission to delete %s" +msgstr "No tens permís per eliminar %s" + +#: events-manager.php:270 +#, php-format +msgid "You do not have permission to manage %s" +msgstr "No tens permís per administrar %s" + +#: admin/em-options.php:443 +#: admin/em-options.php:760 +#: em-posts.php:87 +#: em-posts.php:90 +msgid "Event Categories" +msgstr "Categories d'esdeveniments" + +#: admin/em-admin.php:40 +msgid "Events Manager Settings" +msgstr "Configuració del Events Manager" + +#: admin/em-admin.php:40 +#: admin/em-admin.php:206 +#: admin/em-admin.php:214 +msgid "Settings" +msgstr "Configuració" + +#: admin/em-admin.php:41 +msgid "Help" +msgstr "Ajuda" + +#: admin/em-bookings.php:333 +msgid "Tax" +msgstr "Comissió" + +#: templates/forms/event/bookings.php:25 +msgid "You can have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Pots tenir entrades simples o múltiples, on certes entrades es converteixen en disponibles sota certes condicions. Per exemple: reserves anticipades, descomptes per a grups, reserves màximes per entrada, etc." + +# @ dbem +#: templates/forms/event/bookings.php:25 +msgid "Basic HTML is allowed in ticket labels and descriptions." +msgstr "El HTML bàsic està permès a les etiquetes i descripcions de les entrades." + +# @ dbem +#: admin/em-options.php:1293 +msgid "Ticket Price (Descending)" +msgstr "Preu de les entrades (Descendent)" + +# @ dbem +#: admin/em-options.php:1294 +msgid "Ticket Price (Ascending)" +msgstr "Preu de les entrades (Ascendent)" + +#: admin/em-options.php:1295 +msgid "Ticket Name (Ascending)" +msgstr "Nom de l'entrada (ascendent)" + +#: admin/em-options.php:1296 +msgid "Ticket Name (Descending)" +msgstr "Nom de l'entrada (descendent)" + +#: admin/em-options.php:1208 +msgid "Can users cancel their booking?" +msgstr "Els usuaris poden cancel·lar les seves reserves?" + +# @ dbem +#: admin/em-options.php:1208 +msgid "If enabled, users can cancel their bookings themselves from their bookings page." +msgstr "Si està habilitat, els usuaris poden cancel·lar les seves reserves ell mateixos des de la seva pàgina de reserves." + +# @ dbem +#: admin/em-options.php:1227 +msgid "Tax Rate" +msgstr "Comissió" + +# @ dbem +#: admin/em-options.php:1227 +msgid "Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price)." +msgstr "Afegeix una comissió al preu de les teves entrades (inserint 10 afegirà un 10% al preu de l'entrada)" + +# @ dbem +#: admin/em-options.php:1228 +msgid "Add tax to ticket price?" +msgstr "Afegir una comissió al preu de les entrades?" + +# @ dbem +#: admin/em-options.php:1228 +msgid "When displaying ticket prices and booking totals, include the tax automatically?" +msgstr "Quan es mostri el preu de les entrades i el total de reserves, incloure les comissions automàticament?" + +#: admin/em-options.php:1298 +msgid "Order Tickets By" +msgstr "Ordenar entrades per" + +# @ dbem +#: admin/em-options.php:1298 +msgid "Choose which order your tickets appear." +msgstr "Tria l'ordre en el que apareixen les teves entrades." + +#: admin/em-options.php:1306 +msgid "No-User Booking Mode" +msgstr "Mode de reserves sense usuari" + +# @ dbem +#: admin/em-options.php:1310 +msgid "By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them." +msgstr "Per defecte, quan una reserva és feta per l'usuari, aquesta reserva està fermada al compte de l'usuari, si l'usuari no està registrat o no ha iniciat sessió i les reserves d'habitació estan habilitades, es crearà un compte per ell." + +# @ dbem +#: admin/em-options.php:1312 +msgid "Warning : Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information." +msgstr "Advertència: Diverses característiques que ofereix als usuaris amb un compte no estaran disponibles, per exemple, la visualització de les reserves. Un cop l'activis i seleccionis un usuari, la modificació d'aquests valors evitarà reserves antigues no fetes per usuaris per mostrar la informació correcta." + +#: admin/em-options.php:1315 +msgid "Enable No-User Booking Mode?" +msgstr "Activar el mode de reserves sense usuari?" + +#: admin/em-options.php:1315 +msgid "This disables user registrations for bookings." +msgstr "Això desactiva el registre d'usuaris per a reserves." + +#: admin/em-options.php:1321 +msgid "Assign bookings to" +msgstr "Assignar les reserves a" + +#: admin/em-options.php:1393 +msgid "Event Email Templates" +msgstr "Plantilles del correu electrònic d'esdeveniments" + +#: admin/em-options.php:1403 +#: em-install.php:351 +msgid "Event Approved" +msgstr "Esdeveniment aprovat" + +# @ dbem +#: admin/em-options.php:1404 +msgid "An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the publish_events capability." +msgstr "Un correu electrònic serà enviat al propietari del esdeveniment quan l'esdeveniment sigui aprovat. Els usuaris que requereixin l'aprovació d'esdeveniments no tenen la capacitat publish_events." + +#: admin/em-options.php:1400 +#: admin/em-options.php:1406 +msgid "Event approved subject" +msgstr "Assumpte d'esdeveniment aprovat" + +#: admin/em-options.php:1401 +#: admin/em-options.php:1407 +msgid "Event approved email" +msgstr "Correu electrònic d'esdeveniment aprovat" + +#: classes/em-booking.php:360 +#: classes/em-booking.php:368 +msgid "Guest User" +msgstr "Usuari convidat" + +# @ dbem +#: classes/em-booking.php:364 +msgid "Not Supplied" +msgstr "No s'ha enviat" + +# @ dbem +#: classes/em-ticket.php:157 +msgid "Please enter a valid ticket price e.g. 10.50 (no currency signs)" +msgstr "Per favor, inserta un preu d'entrada vàlid, per exemple 10.50 (sense signes de monedes)" + +# @ dbem +#: em-install.php:531 +msgid "This event is fully booked." +msgstr "Aquest esdeveniment està complet." + +#: admin/em-admin.php:91 +msgid "Update Blogs" +msgstr "Actualitzar els blocs" + +#: admin/em-admin.php:139 +#, php-format +msgid "Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Ups! Per qualque raó, Wordpress no ha pogut crear una pàgina d'esdeveniments per a tu (o potser l'ha esborrada). No et preocupis, tot el que has de fer is crear una pàgina buida, nombrar-la com vulguis i seleccionar-la com la teva pàgina d'esdeveniments a la teva pàgina de configuració. Disculpa pel pas addicional! Si saps el que estas fent, es possible que ho hagis fet a propòsit, si es així ignora aquest missatge" + +# @ dbem +#: admin/em-admin.php:148 +msgid "There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update." +msgstr "Hi ha una nova versió del Events Manager Pro que es necessita per l'actual versió del Events Manager. Per favor, ves a la web de l'extensió i descarrega la darrera actualització." + +# @ dbem +#: admin/em-admin.php:159 +#, php-format +msgid "MultiSite options have moved here. Dismiss message" +msgstr "Les opcions de MultiSite s'han traslladat here. Descartar missatge" + +# @ dbem +#: admin/em-admin.php:171 +#, php-format +msgid "Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" +msgstr "Alhora que seguiran apareixent amb marcadors de posició, necessites migrar la teva localització i les imatges d'esdeveniment per tal que apareguin als teu formulari d'edició i a la mediateca. Descartar missatge" + +# @ dbem +#: admin/em-admin.php:220 +#: admin/em-options.php:1644 +msgid "Uninstall" +msgstr "Desinstal·lar" + +#: admin/em-ms-options.php:6 +msgid "Update Network" +msgstr "Actualitzar la xarxa" + +# @ default +#: admin/em-ms-options.php:24 +msgid "To update your network blogs with the latest Events Manager automatically, click the update button below." +msgstr "Per actualitzar els teus blocs amb el darrer Events Manager automàticament, fes clic al botó d'actualització que surt a continuació." + +#: admin/em-ms-options.php:27 +msgid "Update" +msgstr "Actualitzar" + +#: admin/em-ms-options.php:136 +#: admin/em-options.php:280 +#: admin/em-options.php:1201 +msgid "General" +msgstr "General" + +# @ default +#: admin/em-ms-options.php:157 +#, php-format +msgid "%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network." +msgstr "%s que pertany a altres sub-llocs tenen un slug addicional anteposat a ell perquè el seu lloc principal pot diferenciar entre la seva pròpia%s i els que pertanyen a altres llocs a la xarxa." + +#: admin/em-ms-options.php:158 +#, php-format +msgid "When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site." +msgstr "Quan es mostren els %s globals a la pàgina principal tens l'opció de que els usuaris vegin els detalls de %s al lloc principal o que siguin redirigits al sub-lloc." + +#: admin/em-ms-options.php:159 +#, php-format +msgid "Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Mostra per defecte els/les %s de tots els llocs a la xarxa. Encara pots restringir el %s per bloc utilitzant els codis curts i les etiquetes de plantilla juntament amb el atribut blog. Requereix que les taules globals estiguin activades." + +# @ default +#: admin/em-ms-options.php:160 +#, php-format +msgid "You must have assigned a %s page in your main blog settings for this to work." +msgstr "Necessites haver assignat una pàgina de %s a les teves opcions del bloc principal per fer que això funcioni." + +#: admin/em-ms-options.php:162 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:1201 +#: admin/em-options.php:1218 +#: admin/em-options.php:1272 +#: admin/em-options.php:1284 +#, php-format +msgid "%s Options" +msgstr "Opcions de %s" + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:173 +#, php-format +msgid "Link sub-site %s directly to sub-site?" +msgstr "Enllaçar el sub-lloc %s directament al sub-lloc?" + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, php-format +msgid "Global %s slug" +msgstr "Slug de %s global" + +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +msgid "Example:" +msgstr "Exemple:" + +#: admin/em-ms-options.php:167 +msgid "Locations on main blog?" +msgstr "Localitzacions al bloc principal?" + +# @ dbem +#: admin/em-ms-options.php:167 +msgid "If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog." +msgstr "Si prefereixes que totes les localitzacions pertanyin al teu bloc principal, els usuaris dels sub-llocs encara seran capaços de crear localitzacions, però les localitzacions actuals es creen i es desen al bloc principal." + +#: admin/em-ms-options.php:172 +#, php-format +msgid "Display global %s on main blog?" +msgstr "Mostrar els/les %s globals al bloc principal?" + +# @ dbem +#: admin/em-options.php:112 +msgid "Settings have been reset back to default. Your events, locations and categories have not been modified." +msgstr "La configuració s'ha restablert a la de per defecte. Els teus esdeveniments, localitzacions i categories no s'han modificat." + +#: admin/em-options.php:145 +#: admin/em-options.php:149 +msgid "Reset Events Manager" +msgstr "Reiniciar Events Manager" + +#: admin/em-options.php:146 +msgid "Are you sure you want to reset Events Manager?" +msgstr "Estàs segur que vols reiniciar Events Manager?" + +# @ dbem +#: admin/em-options.php:147 +msgid "All your settings, including email templates and template formats for Events Manager will be deleted." +msgstr "Totes les teves configuracions, incloent plantilles de correu electrònic i formats de plantilla per Events Manager seran esborrats." + +#: admin/em-options.php:161 +msgid "Uninstall Events Manager" +msgstr "Desinstalar Events Manager" + +#: admin/em-options.php:162 +msgid "Are you sure you want to uninstall Events Manager?" +msgstr "Estàs segur que vols desinstalar Events Manager?" + +# @ dbem +#: admin/em-options.php:163 +msgid "All your settings and events will be permanently deleted. This cannot be undone." +msgstr "Totes les teves configuracions i esdeveniments seran permanentment esborrats. Això no es pot desfer." + +# @ dbem +#: admin/em-options.php:164 +#, php-format +msgid "If you just want to deactivate the plugin, go to your plugins page." +msgstr "Si vols desactivar l'extensió, vea a la teva pàgina d'extensions." + +# @ dbem +#: admin/em-options.php:166 +msgid "Uninstall and Deactivate" +msgstr "Desinstal·lar i desactivar" + +#: admin/em-options.php:281 +#: admin/em-options.php:459 +#: admin/em-options.php:630 +msgid "Pages" +msgstr "Pàgines" + +# @ dbem +#: admin/em-options.php:282 +msgid "Formats/Layouts" +msgstr "Formats/Distribució" + +#: admin/em-options.php:284 +msgid "Booking Options" +msgstr "Opcions de reserva" + +#: admin/em-options.php:286 +msgid "Emails" +msgstr "Correus electrònics" + +#: admin/em-options.php:300 +msgid "General Options" +msgstr "Opcions generals" + +# @ dbem +#: admin/em-options.php:303 +msgid "Disable thumbnails?" +msgstr "Desactivar vistes en miniatura?" + +# @ dbem +#: admin/em-options.php:303 +msgid "Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here)." +msgstr "Selecciona sí per deshabilitar les vistes en miniatura del Events Manager (alguns temes ja tenen això activat, pel que no podrem desactivar-ho aquí)." + +#: admin/em-options.php:306 +#: admin/em-options.php:347 +#: admin/em-options.php:364 +#, php-format +msgid "%s Settings" +msgstr "Configuració de %s" + +#: admin/em-options.php:310 +msgid "Enable recurrence?" +msgstr "Habilitar les recurrències?" + +#: admin/em-options.php:312 +msgid "Enable tags?" +msgstr "Habilitar les etiquetes?" + +#: admin/em-options.php:312 +msgid "Select yes to enable the tag features" +msgstr "Selecciona sí per habilitar les característiques d'etiqueta" + +#: admin/em-options.php:314 +msgid "Enable categories?" +msgstr "Habilitar les categoríes?" + +# @ dbem +#: admin/em-options.php:323 +msgid "If an event does not have a category assigned when editing, this one will be assigned automatically." +msgstr "Si un esdeveniment no té una categoria assignada mentre s'edita, aquesta li serà assignada automàticament." + +# @ dbem +#: admin/em-options.php:327 +#: admin/em-options.php:356 +msgid "Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area." +msgstr "Els camps personalitzats són els mateixos que els atributs, excepte que no pots restringir els valors específics, els usuaris poden afegir qualsevol tipus de camp personalitzat del tipus nom/valor. Només està disponible a l'àrea d'administració de WordPress." + +#: admin/em-options.php:351 +msgid "Enable locations?" +msgstr "Habilitar les localitzacions?" + +# @ dbem +#: admin/em-options.php:351 +msgid "If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats." +msgstr "Si desactives les localitzacions, tingues en compte que has d'eliminar la teva pàgina de localitzacions, els codis curts i els marcadors de posició relacionats amb els teus formats." + +#: admin/em-options.php:353 +msgid "Require locations for events?" +msgstr "Exigir les localitzacions dels esdeveniments?" + +# @ dbem +#: admin/em-options.php:353 +msgid "Setting this to no will allow you to submit events without locations. You can use the {no_location}...{/no_location} or {has_location}..{/has_location} conditional placeholder to selectively display location information." +msgstr "Configurant això a 'no' li permetrà presentar els esdeveniments sense localitzacions. Pots utilitzar el marcador de posició condicional {no_location}...{/ no_location} o {has_location}...{/ has_location} per mostrar de forma selectiva la informació de localització." + +#: admin/em-options.php:364 +#: admin/em-options.php:882 +#: admin/em-options.php:1561 +msgid "Other" +msgstr "Altres" + +# @ dbem +#: admin/em-options.php:428 +msgid "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter." +msgstr "Molts temes mostren informació meta addicional en les entrades com 'publicat per' o 'data de publicació', que no pot ser desitjada. En general, les plantilles de pàgines contenen menys desordre." + +# @ dbem +#: admin/em-options.php:429 +#, php-format +msgid "Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named single-%s.php as shown on the wordpress codex, and leave this set to Posts." +msgstr "Tingues en compte que alguns temes no treballen amb aquesta opció, si és així (o si vols fer els seus propis canvis), pots crear un arxiu anomenat single-% s.php com es mostra en el Codex de WordPress, i deixar aquest conjunt a Entrades." + +# @ default +#: admin/em-options.php:430 +#, php-format +msgid "By using formats, you can control how your %s are displayed from within the Events Manager Formats tab above without having to edit your theme files." +msgstr "Mitjançant l'ús de formats, pots controlar com els seus %s es mostren dins la pestanyaFormats de Events Manager anterior sense haver d'editar els fitxers de temes." + +# @ dbem +#: admin/em-options.php:433 +msgid "Permalink Slugs" +msgstr "Enllaç permanent" + +# @ dbem +#: admin/em-options.php:435 +msgid "You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings." +msgstr "Pots canviar l'estructura d'enllaços permanents dels teus esdeveniments, localitzacions i categories aquí. Tingueu en compte que és possible que vulguis configurar les redireccions si canvies les teves estructures d'enllaços permanents per mantenir el rànquing SEO." + +# @ dbem +#: admin/em-options.php:438 +#: admin/em-options.php:440 +#: admin/em-options.php:443 +#: admin/em-options.php:446 +#, php-format +msgid "e.g. %s - you can use / seperators too" +msgstr "p.e. %s - també pots utilitzar els separadors /" + +#: admin/em-options.php:446 +#: admin/em-options.php:850 +#: em-posts.php:50 +#: em-posts.php:53 +msgid "Event Tags" +msgstr "Etiquetes d'esdeveniments" + +#: admin/em-options.php:455 +#: admin/em-options.php:626 +#: admin/em-options.php:882 +#, php-format +msgid "%s Pages" +msgstr "Pàgines de %s" + +#: admin/em-options.php:459 +#: admin/em-options.php:630 +#, php-format +msgid "Display %s as" +msgstr "Mostrar %s com a" + +# @ default +#: admin/em-options.php:459 +#: admin/em-options.php:630 +msgid "Posts" +msgstr "Entrades" + +# @ dbem +#: admin/em-options.php:460 +#: admin/em-options.php:549 +#: admin/em-options.php:631 +#: admin/em-options.php:706 +#: admin/em-options.php:778 +#: admin/em-options.php:854 +msgid "Override with Formats?" +msgstr "Reemplaça amb Formats?" + +# @ dbem +#: admin/em-options.php:469 +#: admin/em-options.php:640 +#, php-format +msgid "%s List/Archives" +msgstr "Llista/Arxius de %s" + +#: admin/em-options.php:477 +#: admin/em-options.php:644 +#: admin/em-options.php:764 +#, php-format +msgid "[No %s Page]" +msgstr "[No hi ha pàgina de %s]" + +# @ dbem +#: admin/em-options.php:482 +msgid "This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags." +msgstr "Aquesta opció et permet seleccionar quina pàgina utilitzar com a pàgina d'esdeveniments. Si no selecciones una pàgina d'esdeveniments, per mostrar la llista d'esdeveniments podras activar l'arxiu d'esdeveniments o utilitzar els apropiats codis curts i/o les etiquetes de plantilla." + +#: admin/em-options.php:489 +msgid "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Alguns temes de WordPress no segueixen les millors pràctiques quan generen els menús de navegació, per tant la funció de reescritura automàtica del títol pot causar problemes. Si els teus menús no funcionen correctament a la pàgina d'esdeveniments, prova de configurar això a 'Sí' i proveeix un títol HTML apropiat a continuació." + +#: admin/em-options.php:503 +#: admin/em-options.php:661 +msgid "Enable Archives?" +msgstr "Habilitar arxius?" + +# @ dbem +#: admin/em-options.php:503 +#: admin/em-options.php:661 +msgid "Allow WordPress post-style archives." +msgstr "Permetre els arxius post-estil de Wordpress." + +#: admin/em-options.php:508 +msgid "Default event archive ordering" +msgstr "Ordre per defecte de l'arxiu d'esdeveniments" + +#: admin/em-options.php:513 +msgid "Order by start date, start time" +msgstr "Ordenar per data i hora d'inici" + +#: admin/em-options.php:514 +msgid "Order by name" +msgstr "Ordenar per nom" + +#: admin/em-options.php:545 +#: admin/em-options.php:702 +#: admin/em-options.php:774 +msgid "General settings" +msgstr "Opcions generals" + +# @ dbem +#: admin/em-options.php:551 +#: admin/em-options.php:707 +msgid "Include in WordPress Searches?" +msgstr "Incloure a les cerques de WordPress?" + +# @ dbem +#: admin/em-options.php:551 +#: admin/em-options.php:707 +#, php-format +msgid "Allow %s to appear in the built-in search results." +msgstr "Permetre a %s aparéixer als resultats de cerca integrats." + +#: admin/em-options.php:555 +#: admin/em-options.php:711 +#: admin/em-options.php:801 +#, php-format +msgid "Default %s list options" +msgstr "Opcions per defecte de les llistes de %s" + +# @ dbem +#: admin/em-options.php:556 +#: admin/em-options.php:712 +#: admin/em-options.php:802 +msgid "These can be overriden when using shortcode or template tags." +msgstr "Aquests poden ser evitats quan s'utilitzen codis curts o etiquetes de plantilla." + +#: admin/em-options.php:645 +#: admin/em-options.php:765 +#: admin/em-options.php:890 +#: admin/em-options.php:927 +#: admin/em-options.php:928 +#: admin/em-options.php:929 +#, php-format +msgid "%s page" +msgstr "Pàgina de %s" + +# @ dbem +#: admin/em-options.php:645 +#, php-format +msgid "This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags." +msgstr "Aquesta opció et permet seleccionar quina pàgina utilitzar com la pàgina de %s. Si no selecciones cap pàgina de %s, per mostrar llistes pots activar els arxius o utilitzar els apropiats codis curts i/o les etiquetes de plantilla." + +#: admin/em-options.php:649 +#: admin/em-options.php:769 +#, php-format +msgid "Show %s page in lists?" +msgstr "Mostrar la pàgina de %s a les llistes?" + +#: admin/em-options.php:649 +#: admin/em-options.php:769 +#, php-format +msgid "Check this option if you want the %s page to appear together with other pages in pages lists." +msgstr "Marca aquesta opció si dessitja que la pàgina de %s aparegui amb altres pàgines a les llistes de pàgines." + +#: admin/em-options.php:666 +#: admin/em-options.php:781 +#: admin/em-options.php:857 +msgid "Default archive ordering" +msgstr "Ordre d'arxiu per defecte" + +#: admin/em-options.php:671 +#: admin/em-options.php:672 +#: admin/em-options.php:673 +#: admin/em-options.php:721 +#: admin/em-options.php:722 +#: admin/em-options.php:723 +#: admin/em-options.php:811 +#: admin/em-options.php:812 +#: admin/em-options.php:813 +#: admin/em-options.php:898 +#: admin/em-options.php:899 +#: admin/em-options.php:900 +#, php-format +msgid "Order by %s" +msgstr "Ordenar per %s" + +#: admin/em-options.php:716 +#: admin/em-options.php:806 +#: admin/em-options.php:893 +msgid "Default list ordering" +msgstr "Ordre de llista per defecte" + +#: admin/em-options.php:750 +#: admin/em-options.php:840 +msgid "List Limits" +msgstr "Limits de llista" + +#: admin/em-options.php:750 +#: admin/em-options.php:840 +#, php-format +msgid "This will control how many %s are shown on one list by default." +msgstr "Això controlarà quants %s es mostraran a una llista per defecte." + +#: admin/em-options.php:765 +#, php-format +msgid "This option allows you to select which page to use as the %s page." +msgstr "Aquesta opció et permet seleccionar quina pàgina s'ha d'usar com a pàgina %s." + +# @ dbem +#: admin/em-options.php:778 +msgid "Setting this to yes will make categories display as a page rather than an archive." +msgstr "Activant això farà que les categories es mostrin com una pàgina en lloc de com un arxiu." + +#: admin/em-options.php:854 +msgid "tags" +msgstr "etiquetes" + +# @ default +#: admin/em-options.php:884 +msgid "These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated." +msgstr "Aquestes pàgines et permeten proporcionar una interfície de gestió d'esdeveniments fora de l'àrea d'administració en qualsevol pàgina que volgueu al vostre lloc. Tinguis en compte que això és sobreescrit per BuddyPress si està activat." + +#: admin/em-options.php:888 +#: classes/em-event-posts-admin.php:135 +#: classes/em-event-posts-admin.php:269 +msgid "None" +msgstr "Cap" + +#: admin/em-options.php:927 +msgid "Edit events" +msgstr "Editar esdeveniments" + +#: admin/em-options.php:928 +msgid "Edit locations" +msgstr "Editar localitzacions" + +#: admin/em-options.php:929 +msgid "Manage bookings" +msgstr "Gestionar reserves" + +#: admin/em-options.php:890 +msgid "My bookings" +msgstr "Les meves reserves" + +#: admin/em-options.php:890 +msgid "Users can view their bookings for other events on this page." +msgstr "Els usuaris poden veure les seves reserves per altres esdeveniments en aquesta pàgina." + +# @ dbem +#: admin/em-options.php:967 +msgid "Search Form Options" +msgstr "Opcions del formulari de cerca" + +#: admin/em-options.php:971 +msgid "Show text search?" +msgstr "Mostrar cerca de texte?" + +# @ dbem +#: admin/em-options.php:972 +msgid "Text search label" +msgstr "Etiqueta del text de cerca" + +# @ dbem +#: admin/em-options.php:972 +msgid "Appears within the input box." +msgstr "Apareix al quadre d'entrada." + +# @ dbem +#: admin/em-options.php:973 +msgid "Show date range?" +msgstr "Mostrar rang de dates?" + +#: admin/em-options.php:974 +msgid "Show categories?" +msgstr "Mostrar categories?" + +#: admin/em-options.php:975 +msgid "Categories label" +msgstr "Etiqueta de categories" + +# @ dbem +#: admin/em-options.php:975 +#: admin/em-options.php:977 +#: admin/em-options.php:979 +#: admin/em-options.php:981 +#: admin/em-options.php:983 +msgid "Appears as the first default search option." +msgstr "Apareix com la primera opció de cerca per defecte." + +#: admin/em-options.php:976 +msgid "Show countries?" +msgstr "Mostrar països?" + +#: admin/em-options.php:977 +msgid "All countries text" +msgstr "Text de \"tots els països\"" + +#: admin/em-options.php:978 +msgid "Show regions?" +msgstr "Mostrar regions?" + +#: admin/em-options.php:979 +msgid "All regions text" +msgstr "Text de \"totes les regions\"" + +# @ dbem +#: admin/em-options.php:980 +msgid "Show states?" +msgstr "Mostrar països?" + +#: admin/em-options.php:981 +msgid "All states text" +msgstr "Text de \"tots els estats\"" + +# @ dbem +#: admin/em-options.php:982 +msgid "Show towns/cities?" +msgstr "Mostrar ciutats/pobles?" + +# @ dbem +#: admin/em-options.php:983 +msgid "All towns/cities text" +msgstr "Text de \"tots les/els ciutats/pobles\"" + +#: admin/em-options.php:991 +msgid "Date/Time formats" +msgstr "Formats de data/hora" + +# @ dbem +#: admin/em-options.php:993 +#, php-format +msgid "Date and Time formats follow the WordPress time formatting conventions" +msgstr "El formats de data i d'hora segueixen les convencions de format de temps de WordPress" + +#: admin/em-options.php:996 +msgid "Date Format" +msgstr "Format de data" + +#: admin/em-options.php:996 +#: admin/em-options.php:998 +#, php-format +msgid "For use with the %s placeholder" +msgstr "Per utilitzar amb els marcadors de posició de %s" + +# @ dbem +#: admin/em-options.php:997 +msgid "Date Seperator" +msgstr "Separador de data" + +# @ dbem +#: admin/em-options.php:997 +#: admin/em-options.php:999 +#, php-format +msgid "For when start/end %s are present, this will seperate the two (include spaces here if necessary)." +msgstr "Per quan el %s d'inici/finalització són presents, això separarà els dos (incloure espais aquí si és necessari)." + +#: admin/em-options.php:997 +msgid "dates" +msgstr "dates" + +# @ dbem +#: admin/em-options.php:998 +msgid "Time Format" +msgstr "Format de temps" + +# @ dbem +#: admin/em-options.php:999 +msgid "Time Seperator" +msgstr "Separador de temps" + +# @ dbem +#: admin/em-options.php:999 +msgid "times" +msgstr "vegades" + +#: admin/em-options.php:1135 +msgid "Tags format" +msgstr "Format d'etiquetes" + +# @ dbem +#: admin/em-options.php:1138 +msgid "Tag" +msgstr "Etiqueta" + +# @ dbem +#: admin/em-options.php:1140 +#: admin/em-options.php:1141 +msgid "tag" +msgstr "etiqueta" + +#: admin/em-options.php:1140 +msgid "The format of a single tag page title." +msgstr "El format del títol d'una pàgina d'una sola etiqueta." + +#: admin/em-options.php:1141 +msgid "The format of a single tag page." +msgstr "El format d'una pàgina d'una sola etiqueta." + +#: admin/em-options.php:1146 +msgid "The format of the events the list inserted in the tag page through the #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS element." +msgstr "El format dels esdeveniments de la llista inserits a la pàgina d'etiquetes a través dels elements #_TAGNEXTEVENTS, #_TAGNEXTEVENTS i #_TAGALLEVENTS." + +#: admin/em-options.php:1148 +msgid "The message to be displayed in the list generated by #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS when no events are available." +msgstr "El missatge que es mostrarà a la llista generada per #_TAGNEXTEVENTS, #_TAGNEXTEVENTS i #_TAGALLEVENTS quan no hi hagi esdeveniments disponibles." + +#: admin/em-options.php:1218 +msgid "Pricing" +msgstr "Fixar preus" + +#: admin/em-options.php:1272 +msgid "Booking Form" +msgstr "Formulari de reserva" + +#: admin/em-options.php:1284 +msgid "Ticket" +msgstr "Entrada" + +# @ dbem +#: admin/em-options.php:1311 +msgid "The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user." +msgstr "La següent opció permet desactivar els comptes d'usuari i assignar totes les reserves a un usuari pare, però encara veuràs la informació personal de la reserva proporcionada per a cada reserva. Quan aquest mode està habilitat, la informació de reserva addicional sobre la persona es emmagatzemada juntament amb l'expedient de reserva en lloc de com un usuari de WordPress." + +# @ dbem +#: admin/em-options.php:1321 +msgid "Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself." +msgstr "Selecciona un usuari pare per assignar-li les reserves. Les persones que fan la seva reserva no seran conscients d'això i mai tindran accés a les dades d'usuari. Hauria de ser un usuari subscriptor que no utilitzis per iniciar sessió com un mateix." + +#: admin/em-options.php:1348 +msgid "Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event." +msgstr "Marca aquesta opció si vols evitar el correu electrònic de registre de WordPress quan usuari reservi un esdeveniment anònimament." + +#: admin/em-options.php:1396 +msgid "Event Submitted" +msgstr "Esdeveniment enviat" + +#: admin/em-options.php:1397 +msgid "An email will be sent to the an administrator of your choice when an event is submitted and pending approval." +msgstr "Un correu electrònic serà enviat a un administrador de la teva elecció quan un esdeveniment sigui enviat i pendent d'aprovació." + +# @ dbem +#: admin/em-options.php:1399 +msgid "Administrator Email" +msgstr "Correu electrònic de l'administrador" + +# @ dbem +#: admin/em-options.php:1399 +msgid "If left blank, no email will be sent. Seperate emails with commas for more than one email." +msgstr "Si es deixa en blanc, no s'enviarà cap correu electrònic. Separa les direccions amb comes si vols posar més d'un correu electrònic." + +#: admin/em-options.php:381 +msgid "Event Submission Forms" +msgstr "Formulari d'enviament d'esdeveniments" + +#: admin/em-options.php:385 +#, php-format +msgid "You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below." +msgstr "Pots permetre als usuaris que enviïn esdeveniments públicament al teu bloc utilitzant el codi curt %s i activant els enviaments anònims a continuació." + +# @ dbem +#: admin/em-options.php:388 +msgid "Use Visual Editor?" +msgstr "Utilitzar editor visual?" + +# @ dbem +#: admin/em-options.php:388 +msgid "Users can now use the WordPress editor for easy HTML entry in the submission form." +msgstr "Els usuaris ara poden utilitzar l'editor de WordPress per fer entrades HTML amb facilitat al formulari d'enviament." + +# @ dbem +#: admin/em-options.php:389 +msgid "Show form again?" +msgstr "Mostrar el formulari una altra vegada?" + +# @ dbem +#: admin/em-options.php:389 +msgid "When a user submits their event, you can display a new event form again." +msgstr "Quan un usuari enviï el seu esdeveniment, pots mostrar un nou formulari d'esdeveniment." + +# @ dbem +#: admin/em-options.php:390 +msgid "Customize the message your user sees when they submitted their event." +msgstr "Personalitza el missatge que els teus usuaris veuran quan hagin enviat el seu esdeveniment." + +#: admin/em-options.php:393 +msgid "Anonymous event submissions" +msgstr "Enviament anònim d'esdeveniments" + +#: admin/em-options.php:397 +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting." +msgstr "Els esdeveniments requereixen un propietari. A fi de permetre que els esdeveniments siguin enviats anònimament, necessites assignar a tal esdeveniment un usuari específic. Et recomanem que creis un subscriptor \"Anònim\" amb una bona contrasenya i utilitza'l. Els convidats tindran els mateix permissos que dit usuari quan enviïn esdeveniments." + +#: admin/em-options.php:1453 +msgid "Image Sizes" +msgstr "Tamanys d'imatge" + +# @ dbem +#: admin/em-options.php:1484 +msgid "Send HTML Emails?" +msgstr "Enviar correus electrònics amb HTML?" + +# @ dbem +#: admin/em-options.php:1484 +msgid "If set to yes, your emails will be sent in HTML format, otherwise plaintext." +msgstr "Si s'activa, els teus correus electrònics seran enviats amb format HTML, en lloc de text pla." + +#: admin/em-options.php:1532 +#: admin/em-options.php:1542 +#: admin/em-options.php:1550 +#: admin/em-options.php:1561 +#, php-format +msgid "%s Capabilities" +msgstr "Capacitats de %s" + +#: admin/em-options.php:1534 +#: admin/em-options.php:1544 +#: admin/em-options.php:1552 +#, php-format +msgid "Users can publish %s and skip any admin approval" +msgstr "Els usuaris poden publicar %s i evitar qualsevol aprovació de l'adminitració" + +#: admin/em-options.php:1535 +#: admin/em-options.php:1545 +#: admin/em-options.php:1553 +#, php-format +msgid "User can delete other users %s" +msgstr "L'usuari pot eliminar els %s dels altres usuaris" + +#: admin/em-options.php:1536 +#: admin/em-options.php:1546 +#: admin/em-options.php:1554 +#, php-format +msgid "User can edit other users %s" +msgstr "L'usuari pot editar els %s dels altres usuaris" + +#: admin/em-options.php:1537 +#: admin/em-options.php:1547 +#: admin/em-options.php:1555 +#, php-format +msgid "User can delete their own %s" +msgstr "L'usuari pot eliminar el seu propi %s" + +#: admin/em-options.php:1538 +#: admin/em-options.php:1548 +#: admin/em-options.php:1556 +#, php-format +msgid "User can create and edit %s" +msgstr "L'usuari pot crear i editar %s" + +# @ dbem +#: admin/em-options.php:1539 +#: admin/em-options.php:1557 +#, php-format +msgid "User can view private %s" +msgstr "L'usuari pot veure el %s privat" + +#: admin/em-options.php:1542 +#: em-posts.php:187 +msgid "Recurring Event" +msgstr "Esdeveniment recurrent" + +#: admin/em-options.php:1544 +#: admin/em-options.php:1545 +#: admin/em-options.php:1546 +#: admin/em-options.php:1547 +#: admin/em-options.php:1548 +#: events-manager.php:280 +#: events-manager.php:281 +#: events-manager.php:282 +#: events-manager.php:283 +#: events-manager.php:284 +msgid "recurring events" +msgstr "esdeveniments recurrents" + +#: admin/em-options.php:1558 +msgid "User can use other user locations for their events." +msgstr "L'usuari pot utilitzar localitzacions d'altres usuaris pels seus esdeveniments." + +#: admin/em-options.php:1563 +#, php-format +msgid "User can delete %s categories and tags." +msgstr "L'usuari pot eliminar les categories de %s i les etiquetes." + +#: admin/em-options.php:1564 +#, php-format +msgid "User can edit %s categories and tags." +msgstr "L'usuari pot editar les categories de %s i les etiquetes." + +#: admin/em-options.php:1568 +msgid "User can upload images along with their events and locations." +msgstr "L'usuari pot pujar imatges juntament amb els seus esdeveniments i localitzacions." + +# @ dbem +#: admin/em-options.php:1632 +#: admin/em-options.php:1642 +msgid "Uninstall/Reset" +msgstr "Desinstal·lar/Reiniciar" + +# @ dbem +#: admin/em-options.php:1643 +msgid "Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data." +msgstr "Utilitza els següents botons per desinstal·lar l'Events Manager completament del teu sistema o per reiniciar l'Events Manager a la configuració original mantenint les teves dades d'esdeveniments." + +#: admin/em-options.php:1645 +msgid "Reset" +msgstr "Reiniciar" + +#: buddypress/bp-em-activity.php:58 +#, php-format +msgid "%s added the event %s to %s." +msgstr "%s ha afegit l'esdeveniment %s a %s." + +#: buddypress/bp-em-core.php:53 +#, php-format +msgid "Search %s..." +msgstr "Cercar %s..." + +#: buddypress/screens/my-events.php:47 +#: em-events.php:150 +msgid "Reschedule Events" +msgstr "Reprogramar esdeveniments" + +# @ dbem +#: classes/em-categories-taxonomy.php:55 +#, php-format +msgid "Choose a color for your category. You can access this using the %s placeholder." +msgstr "Escolleix un color per la teva categoria. Pots accedir a ell utilitzant el marcador de posició %s." + +# @ dbem +#: classes/em-categories-taxonomy.php:66 +msgid "Choose/Upload Image" +msgstr "Escollir/pujar imatge" + +# @ dbem +#: classes/em-categories-taxonomy.php:67 +#, php-format +msgid "Choose an image for your category, which can be displayed using the %s placeholder." +msgstr "Escolleix una imatge per a la teva categoria, la qual pot ser mostrada utilitzant el marcador de posició %s." + +# @ dbem +#: classes/em-event-post-admin.php:42 +#, php-format +msgid "If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, detach it." +msgstr "Si actualitzes la data de l'esdeveniment i ho deses, podria ser sobreescrit si edites la plantilla d'esdeveniment recurrent. Per fer-ho independent, separa-la." + +# @ dbem +#: classes/em-event-post-admin.php:43 +#, php-format +msgid "To manage the whole set, edit the recurring event template." +msgstr "Per gestionar tot el conjunt, edita la plantilla d'esdeveniment recurrent." + +# @ dbem +#: classes/em-event-post-admin.php:83 +msgid "Your event details are incorrect and recurrences cannot be created, please correct these errors first:" +msgstr "Els teus detalls d'esdeveniment són incorrectes i les recurrències no poden ser creades, per favor corregeix aquests error primer:" + +# @ dbem +#: classes/em-event-post-admin.php:85 +#: classes/em-location-post-admin.php:59 +#, php-format +msgid "Your %s details are incorrect and cannot be published, please correct these errors first:" +msgstr "Els teus detalls de %s són incorrectes i no poden ser publicats, per favor corregeix aquests errors primer:" + +#: classes/em-event-post-admin.php:197 +#: classes/em-event-post-admin.php:366 +msgid "Site Categories" +msgstr "Categories del lloc" + +#: classes/em-event-post-admin.php:350 +msgid "Recurrences" +msgstr "Recurrències" + +# @ default +#: classes/em-event-post.php:94 +#: classes/em-event-post.php:97 +#: classes/em-event-post.php:102 +#: classes/em-event-post.php:113 +#: classes/em-event-post.php:116 +#: classes/em-event-post.php:121 +#, php-format +msgid "View all posts in %s" +msgstr "Veure totes les entrades a %s" + +#: classes/em-event-posts-admin.php:74 +msgid "View all categories" +msgstr "Veure totes les categories" + +#: classes/em-event-posts-admin.php:111 +#: classes/em-event-posts-admin.php:248 +msgid "Date and Time" +msgstr "Dia i hora" + +#: classes/em-event-posts-admin.php:112 +#: classes/em-event-posts-admin.php:249 +msgid "Owner" +msgstr "Propietari" + +#: classes/em-event-posts-admin.php:168 +#: templates/buddypress/group-events.php:133 +#: templates/buddypress/my-group-events.php:127 +#: templates/tables/events.php:134 +msgid "Edit Recurring Events" +msgstr "Editar esdeveniments recurrents" + +#: classes/em-event-posts-admin.php:168 +msgid "Detach" +msgstr "Separar" + +#: classes/em-event-posts-admin.php:181 +#, php-format +msgid "Duplicate %s" +msgstr "%s duplicat" + +#: classes/em-event-posts-admin.php:181 +msgid "Duplicate" +msgstr "Duplicat" + +#: classes/em-event-posts-admin.php:213 +#, php-format +msgid "Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the events page." +msgstr "Les modificacions sobre aquest esdeveniment provocaran que totes les recurrències d'aquest esdeveniment siguin eliminades i tornades a crear i les reserves anteriors seran eliminades! Pots editar les recurrències individuals i desvincular-les d'esdeveniments recurrents visitant la pàgina d'esdeveniments." + +#: classes/em-event.php:440 +msgid "Event name" +msgstr "Nom de l'esdeveniment" + +#: classes/em-event.php:479 +msgid "Since the event is repeated, you must specify an event end date greater than the start date." +msgstr "Donat que l'esdeveniment es repeteix, ha d'especificar una data de finalització posterior a la data d'inici." + +# @ dbem +# @ default +#: classes/em-event.php:560 +#: classes/em-event.php:563 +msgid "There were some errors saving your location." +msgstr "Han ocorregut uns errors desant la teva localització." + +# @ default +#: classes/em-event.php:560 +#, php-format +msgid "It will not be displayed on the website listings, to correct this you must edit your location directly." +msgstr "No es mostrarà en els llistats del lloc web, per corregir això has d'editar la teva localització directament." + +# @ dbem +#: classes/em-event.php:606 +#: classes/em-location.php:360 +#, php-format +msgid "Something went wrong saving your %s to the index table. Please inform a site administrator about this." +msgstr "Alguna cosa ha hanat malament mentre es desava el teu %s a la taula d'índexs. Per favor, informa d'això a un administrador de la web." + +#: classes/em-event.php:611 +#: classes/em-event.php:626 +#: classes/em-location.php:365 +#: classes/em-location.php:372 +#, php-format +msgid "Successfully saved %s" +msgstr "%s desat amb èxit." + +# @ dbem +#: classes/em-event.php:619 +#: classes/em-location.php:370 +#, php-format +msgid "Something went wrong updating your %s to the index table. Please inform a site administrator about this." +msgstr "Alguna cosa ha hanat malament mentre s'actualitzava el teu %s a la taula d'índexs. Per favor, informa d'això a un administrador de la web." + +#: admin/em-bookings.php:106 +#: classes/em-event.php:1233 +#: classes/em-location.php:661 +#, php-format +msgid "Edit %s" +msgstr "Editar %s" + +#: classes/em-event.php:1549 +msgid "Event detached." +msgstr "Esdeveniment separat." + +# @ dbem +#: classes/em-event.php:1549 +msgid "Undo" +msgstr "Desfer" + +#: classes/em-event.php:1553 +msgid "Event could not be detached." +msgstr "L'esdeveniment no s'ha pogut separar." + +# @ dbem +#: classes/em-event.php:1567 +msgid "Event re-attached to recurrence." +msgstr "L'Esdeveniment s'ha tornat a unir a la recurrència." + +#: classes/em-event.php:1570 +msgid "Event could not be attached." +msgstr "L'esdeveniment no s'ha pogut adjuntar." + +#: classes/em-location.php:242 +#: widgets/em-locations.php:22 +msgid "Location name" +msgstr "Nom de la localització" + +# @ dbem +#: em-install.php:309 +msgid "A new event has been submitted by #_CONTACTNAME.
          Name : #_EVENTNAME
          Date : #_EVENTDATES
          Time : #_EVENTTIMES
          Please visit #_EDITEVENTURL to review this event for approval." +msgstr "Un nou esdeveniment ha estat enviat per #_CONTACTNAME.
          Nom : #_EVENTNAME
          Data : #_EVENTDATES
          Hora : #_EVENTTIMES
          Per favor, visita #_EDITEVENTURL per revisar aquest esdeveniment i aprovar-ho." + +#: em-install.php:339 +msgid "All Cities/Towns" +msgstr "Totes les ciutats/pobles" + +# @ dbem +#: em-install.php:343 +#: em-install.php:346 +msgid "You have successfully submitted your event, which will be published pending approval." +msgstr "Has enviat el teu esdeveniment amb èxit, el qual serà publicat quan sigui aprovat." + +# @ dbem +#: em-install.php:349 +msgid "Submitted Event Awaiting Approval" +msgstr "L'esdeveniment enviat està esperant aprovació" + +#: em-install.php:399 +msgid "All Day" +msgstr "Tot el dia" + +#: em-install.php:449 +msgid "
        • No events in this tag
        • " +msgstr "
        • No hi ha esdeveniments en aquesta etiqueta
        • " + +#: em-install.php:552 +msgid "New Booking" +msgstr "Nova reserva" + +#: em-posts.php:51 +#: em-posts.php:54 +msgid "Event Tag" +msgstr "Etiqueta d'esdeveniment" + +#: em-posts.php:55 +msgid "Search Event Tags" +msgstr "Cercar etiquetes d'esdeveniment" + +#: em-posts.php:56 +msgid "Popular Event Tags" +msgstr "Etiquetes d'esdeveniment populars" + +#: em-posts.php:57 +msgid "All Event Tags" +msgstr "Totes les etiquetes d'esdeveniment" + +#: em-posts.php:58 +msgid "Parent Event Tags" +msgstr "Etiquetes d'esdeveniment pares" + +#: em-posts.php:59 +msgid "Parent Event Tag:" +msgstr "Etiqueta d'esdeveniment pare:" + +#: em-posts.php:60 +msgid "Edit Event Tag" +msgstr "Editar etiqueta d'esdeveniment" + +#: em-posts.php:61 +msgid "Update Event Tag" +msgstr "Actualitzar etiqueta d'esdeveniment" + +#: em-posts.php:62 +msgid "Add New Event Tag" +msgstr "Afegir nova etiqueta d'esdeveniment" + +#: em-posts.php:63 +msgid "New Event Tag Name" +msgstr "Nom de la nova etiqueta d'esdeveniment" + +# @ dbem +#: em-posts.php:64 +msgid "Seperate event tags with commas" +msgstr "Separa les etiquetes d'esdeveniment amb comes" + +#: em-posts.php:65 +#: em-posts.php:102 +msgid "Add or remove events" +msgstr "Afegir o esborrar esdeveniments" + +#: em-posts.php:66 +msgid "Choose from most used event tags" +msgstr "Escollir d'entre les etiquetes d'esdeveniments més utilitzades" + +#: em-posts.php:88 +#: em-posts.php:91 +msgid "Event Category" +msgstr "Categoria d'esdeveniment" + +#: em-posts.php:92 +msgid "Search Event Categories" +msgstr "Cercar categories d'esdeveniment" + +#: em-posts.php:93 +msgid "Popular Event Categories" +msgstr "Categories d'esdeveniment populars" + +#: em-posts.php:94 +msgid "All Event Categories" +msgstr "Totes les categories d'esdeveniment" + +#: em-posts.php:95 +msgid "Parent Event Categories" +msgstr "Categories d'esdeveniment pare:" + +#: em-posts.php:96 +msgid "Parent Event Category:" +msgstr "Categoria d'esdeveniment pare:" + +#: em-posts.php:97 +msgid "Edit Event Category" +msgstr "Editar categoria d'esdeveniment" + +#: em-posts.php:98 +msgid "Update Event Category" +msgstr "Actualitzar categoria d'esdeveniment" + +#: em-posts.php:99 +msgid "Add New Event Category" +msgstr "Afegir nova categoria d'esdeveniment" + +#: em-posts.php:100 +msgid "New Event Category Name" +msgstr "Nom de la nova categoria d'esdeveniment" + +# @ dbem +#: em-posts.php:101 +msgid "Seperate event categories with commas" +msgstr "Separa les categories d'esdeveniment amb comes" + +# @ dbem +#: em-posts.php:103 +msgid "Choose from most used event categories" +msgstr "Escolleix de les categories d'esdeveniment més utilitzades" + +#: em-posts.php:138 +msgid "Display events on your blog." +msgstr "Mostrar els esdeveniments al teu bloc." + +#: em-posts.php:144 +msgid "Add New Event" +msgstr "Afegir nou esdeveniment" + +#: em-posts.php:147 +msgid "New Event" +msgstr "Nou esdeveniment" + +#: em-posts.php:148 +#: em-posts.php:194 +#: em-posts.php:241 +#: templates/tables/locations.php:62 +msgid "View" +msgstr "Veure" + +#: em-posts.php:149 +msgid "View Event" +msgstr "Veure esdeveniment" + +#: em-posts.php:151 +msgid "No Events Found" +msgstr "No hi ha esdeveniments" + +# @ dbem +#: em-posts.php:152 +msgid "No Events Found in Trash" +msgstr "No s'han trobat esdeveniments a la paperera" + +#: em-posts.php:153 +msgid "Parent Event" +msgstr "Esdeveniment pare" + +#: em-posts.php:183 +#: em-posts.php:186 +#: em-posts.php:188 +msgid "Recurring Events" +msgstr "Esdeveniments recurrents" + +#: em-posts.php:184 +msgid "Recurring Events Template" +msgstr "Plantilla d'esdeveniments recurrents" + +#: em-posts.php:189 +#: em-posts.php:195 +msgid "Add Recurring Event" +msgstr "Afegir esdeveniment recurrent" + +# @ dbem +#: em-posts.php:190 +msgid "Add New Recurring Event" +msgstr "Afegir un nou esdeveniment recurrent" + +#: em-posts.php:192 +msgid "Edit Recurring Event" +msgstr "Editar esdeveniment recurrent" + +#: em-posts.php:193 +msgid "New Recurring Event" +msgstr "Nou esdeveniment recurrent" + +#: em-posts.php:196 +msgid "Search Recurring Events" +msgstr "Cercar esdeveniments recurrents" + +# @ dbem +#: em-posts.php:197 +msgid "No Recurring Events Found" +msgstr "No s'han trobat esdeveniments recurrents" + +# @ dbem +#: em-posts.php:198 +msgid "No Recurring Events Found in Trash" +msgstr "No s'han trobat esdeveniments recurrents a la paperera" + +# @ dbem +#: em-posts.php:199 +msgid "Parent Recurring Event" +msgstr "Esdeveniment recurrent pare" + +#: em-posts.php:231 +msgid "Display locations on your blog." +msgstr "Mostrar les localitzacions al teu bloc." + +#: em-posts.php:237 +msgid "Add New Location" +msgstr "Afegir nova localització" + +#: em-posts.php:240 +msgid "New Location" +msgstr "Nova localització" + +#: em-posts.php:242 +msgid "View Location" +msgstr "Veure localització" + +#: em-posts.php:243 +msgid "Search Locations" +msgstr "Cercar localitzacions" + +#: em-posts.php:244 +msgid "No Locations Found" +msgstr "No s'han trobat localitzacions" + +#: em-posts.php:245 +msgid "No Locations Found in Trash" +msgstr "No s'han trobat localitzacions a la paparera" + +#: em-posts.php:246 +msgid "Parent Location" +msgstr "Localització pare" + +#: em-template-tags.php:297 +msgid "You must log in to view and manage your events." +msgstr "Necessites iniciar sessió per veure i gestionar els teus esdeveniments." + +#: em-template-tags.php:388 +msgid "You must log in to view and manage your locations." +msgstr "Necessites iniciar sessió per veure i gestionar les teves localitzacions." + +#: em-template-tags.php:406 +msgid "You must log in to view and manage your bookings." +msgstr "Necessites iniciar sessió per veure i gestionar les teves reserves." + +#: events-manager.php:231 +msgid "Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events." +msgstr "Està segur que desitja desassociar aquest esdeveniment? Si ho fas, aquest esdeveniment serà independent del conjunt d'esdeveniments recurrents." + +# @ dbem +#: events-manager.php:232 +msgid "This cannot be undone." +msgstr "Això no es pot desfer." + +# @ dbem +#: events-manager.php:232 +msgid "All events will be moved to trash." +msgstr "Tots els esdeveniments seran moguts a la paperera." + +#: events-manager.php:233 +msgid "Are you sure you want to delete all recurrences of this event?" +msgstr "Estàs segur que vols esborrar totes les recurrències d'aquest esdeveniment?" + +#: events-manager.php:277 +#: events-manager.php:291 +#, php-format +msgid "You cannot read private %s" +msgstr "No pots llegir el %s privat" + +#: events-manager.php:292 +#, php-format +msgid "You cannot view others %s" +msgstr "No pots veure els altres %s" + +#: events-manager.php:298 +msgid "You do not have permission to upload images" +msgstr "No tens permís per pujar imatges." + +#: templates/forms/event/attributes.php:51 +msgid "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Si veus qualque atribut aquí avall, significa que no estan utilitzant el format d'Events Manager. Per afegir-los, necessites afegir l'atribut personalitzat de nou a una opció de format a la pàgina de configuració. Per eliminar qualsevol d'aquest atributs depreciats, dóna-lis un valor blanc i desa-ho." + +# @ dbem +#: templates/forms/event/group.php:26 +msgid "No groups defined yet." +msgstr "Encara no s'ha definit cap grup." + +# @ default +#: templates/forms/event/location.php:9 +msgid "This event does not have a physical location." +msgstr "Aquest esdeveniment no té una localització física." + +#: templates/forms/event/location.php:31 +msgid "No Location" +msgstr "Sense localització" + +#: templates/forms/event/recurring-when.php:48 +#: templates/forms/event/when-with-recurring.php:13 +msgid "Recurrences span from " +msgstr "Les recurrències van a partir de" + +#: templates/forms/event/recurring-when.php:56 +#: templates/forms/event/when-with-recurring.php:23 +msgid "Events start from" +msgstr "L'esdeveniment comença a partir de" + +#: templates/forms/event/recurring-when.php:60 +#: templates/forms/event/when-with-recurring.php:28 +#: templates/forms/event/when.php:20 +msgid "All day" +msgstr "Tot el dia" + +#: templates/forms/event/recurring-when.php:63 +#: templates/forms/event/when-with-recurring.php:69 +msgid "Each event lasts" +msgstr "Cada esdeveniment té una duració de" + +#: templates/forms/event/recurring-when.php:65 +#: templates/forms/event/when-with-recurring.php:71 +msgid "day(s)" +msgstr "dia(es)" + +#: templates/forms/event/when-with-recurring.php:11 +msgid "This is a recurring event." +msgstr "Aquest és un esdeveniment recurrent." + +#: templates/forms/event/when-with-recurring.php:14 +#: templates/forms/event/when.php:8 +msgid "From " +msgstr "De" + +#: templates/forms/event/when-with-recurring.php:24 +#: templates/forms/event/when.php:16 +msgid "Event starts at" +msgstr "L'esdeveniment comença a les" + +#: templates/forms/event-editor.php:163 +msgid "Event Image" +msgstr "Imatge de l'esdeveniment" + +#: templates/forms/location-editor.php:52 +msgid "Details about the location." +msgstr "Detalls sobre la localització" + +#: templates/forms/location-editor.php:85 +msgid "Location Image" +msgstr "Imatge de la localització" + +#: templates/tables/locations.php:76 +msgid "No locations have been inserted yet!" +msgstr "Encara no s'ha inserit cap localització!" + +#: widgets/em-locations.php:21 +msgid "Event start date/time, location name" +msgstr "Data/hora d'inici de l'esdeveniment, nom de la localització" + +# @ em-pro +#: admin/em-admin.php:179 +msgid "Dev Mode active: Just a friendly reminder that you are updating to development versions. Only admins see this message, and it will go away when you disable this here in your settings." +msgstr "Mode de desenvolupament actiu: Això sols és un simpàtic recordatori de que estàs actualitzant a versions en desenvolupament. Només els administradors veuen aquest missatge, i se n'anirà quan tu deshabilitis això aquí a la teva configuració." + +#: admin/em-bookings.php:67 +msgid "Recent Bookings" +msgstr "Reserves recents" + +#: admin/em-bookings.php:105 +#, php-format +msgid "View %s" +msgstr "Veure %s" + +#: admin/em-bookings.php:108 +msgid "Export CSV" +msgstr "Exportar CSV" + +#: admin/em-bookings.php:119 +msgid "Available spaces" +msgstr "Places disponibles" + +#: admin/em-bookings.php:264 +msgid "Change" +msgstr "Canviar" + +# @ dbem +#: admin/em-bookings.php:265 +msgid "Resend Email" +msgstr "Reenviar correu electrònic" + +#: admin/em-bookings.php:279 +msgid "Send Email" +msgstr "Enviar correu electrònic" + +#: admin/em-bookings.php:280 +#: admin/em-bookings.php:366 +msgid "Submit Changes" +msgstr "Enviar canvis" + +#: admin/em-bookings.php:327 +msgid "Total Price" +msgstr "Preu total" + +#: admin/em-bookings.php:328 +#, php-format +msgid "%d Spaces" +msgstr "%d places." + +# @ dbem +#: admin/em-bookings.php:338 +msgid "Total Price (inc. tax)" +msgstr "Preu total (taxes incloses)" + +# @ dbem +#: admin/em-bookings.php:364 +msgid "Notes: Ticket availability not taken into account (i.e. you can overbook). Emails are not resent automatically." +msgstr "Notes: La disponibilitat d'entrades no es té en compte (és a dir, pot haver-hi overbooking). Els correus electrònics no es reenvien de forma automàtica." + +# @ dbem +#: admin/em-options.php:122 +#: admin/em-options.php:132 +msgid "If there are any new updates, you should now see them in your Plugins or Updates admin pages." +msgstr "Si hi ha alguna nova actualització, ara hauries de veure-les a les teves pàgines d'Extensions o d'Actualitzacions." + +# @ dbem +#: admin/em-options.php:132 +msgid "Checking for dev versions." +msgstr "Comprovant les versions de desenvolupament." + +#: admin/em-options.php:326 +#: admin/em-options.php:355 +#, php-format +msgid "Enable %s attributes?" +msgstr "Habilitar els atributs de %s?" + +# @ dbem +#: admin/em-options.php:327 +#: admin/em-options.php:356 +#, php-format +msgid "Enable %s custom fields?" +msgstr "Activar els camps personalitzats de %s?" + +#: admin/em-options.php:329 +#: admin/em-options.php:358 +#, php-format +msgid "%s Attributes" +msgstr "Atributs de %s." + +#: admin/em-options.php:358 +#, php-format +msgid "You can also add location attributes here, one per line in this format #_LATT{key}. They will not appear on location pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "També pots afegir atributs de la localització aquí, un per línia amb aquest format #_LATT{key}. Aquests no apareixeran a les pàgines de localització de no ser que els insertis a una altra plantilla avall, però és possible que vulguis desar informació addicional sobre un esdeveniment per altres úsos. Més informació sobre els marcadors de posició." + +#: admin/em-options.php:461 +#: admin/em-options.php:632 +msgid "Enable Comments?" +msgstr "Habilitar comentaris?" + +# @ dbem +#: admin/em-options.php:461 +#: admin/em-options.php:632 +#, php-format +msgid "If you would like to disable comments entirely, disable this, otherwise you can disable comments on each single %s. Note that %s with comments enabled will still be until you resave them." +msgstr "Si voleu desactivar els comentaris del tot, desactiva aquesta opció, en cas contrari es pot desactivar els comentaris a cada %s. Recordeu que els %s amb els comentaris habilitats seguiran essent fins que els tornis a guardar." + +# @ dbem +#: admin/em-options.php:496 +#: admin/em-options.php:654 +#, php-format +msgid "WordPress %s Archives" +msgstr "Arxius de %s de WordPress" + +# @ default +#: admin/em-options.php:497 +#: admin/em-options.php:655 +#, php-format +msgid "%s custom post types can have archives, just like normal WordPress posts. If enabled, should you visit your base slug url %s and you will see an post-formatted archive of previous %s" +msgstr "Els tipus personalitzats d'entrades de %s poden tenir arxius, igual que les entrades normals de WordPress. Si està activat, has de visitar el slug base de la teva url %s i veuràs un arxiu pre-formatejat d'anteriors %s" + +# @ default +#: admin/em-options.php:498 +#, php-format +msgid "Note that assigning a %s page above will override this archive if the URLs collide (which is the default settings, and is recommended). You can have both at the same time, but you must ensure that your page and %s slugs are different." +msgstr "Tingueu en compte que l'assignació d'una pàgina de %s per sobre reemplaçarà aquest arxiu si les URLs xoquen (és la configuració per defecte, i és la recomanada). Pots tenir les dues alhora, però assegura't que la teva pàgina i els slugs de %s són diferents." + +# @ default +#: admin/em-options.php:656 +#, php-format +msgid "Note that assigning a %s page above will override this archive if the URLs collide (which is the default settings, and is recommended for maximum plugin compatability). You can have both at the same time, but you must ensure that your page and %s slugs are different." +msgstr "Tingueu en compte que l'assignació d'una pàgina de %s per sobre reemplaçarà aquest arxiu si les URLs xoquen (és la configuració per defecte, i és la recomanada per a una màxima compatibilitat de l'extensió). Pots tenir les dues alhora, però assegura't que la teva pàgina i els slugs de %s són diferents." + +#: admin/em-options.php:899 +msgid "Start Date" +msgstr "Data d'inici" + +#: admin/em-options.php:900 +#: classes/em-bookings-table.php:82 +msgid "Booking Date" +msgstr "Data de la reserva" + +# @ dbem +#: admin/em-options.php:926 +msgid "Front-end management pages" +msgstr "Pàgines frontals de configuració" + +#: admin/em-options.php:927 +#: admin/em-options.php:928 +#, php-format +msgid "Users can view, add and edit their %s on this page." +msgstr "Els usuaris poden veure, afegir i editar el seus %s en aquesta pàgina." + +#: admin/em-options.php:929 +#, php-format +msgid "Users can manage their %s on this page." +msgstr "Els usuaris poden gestionar el seus %s en aquesta pàgina." + +# @ dbem +#: admin/em-options.php:1000 +msgid "All Day Message" +msgstr "Missatge \"tot el dia\"" + +# @ dbem +#: admin/em-options.php:1000 +#, php-format +msgid "If an event lasts all day, this text will show if using the %s placeholder" +msgstr "Si un esdeveniment dura tot el dia, aquest text es mostrarà si utilitzas el marcador de posició %s" + +# @ dbem +#: admin/em-options.php:1001 +msgid "Use 24h Format?" +msgstr "Utilitzar el format 24h?" + +# @ dbem +#: admin/em-options.php:1001 +msgid "When creating events, would you like your times to be shown in 24 hour format?" +msgstr "Quan es crein esdeveniments, vols que les hores es mostrin en format 24h?" + +#: admin/em-options.php:1017 +msgid "Link directly to event on day with single event?" +msgstr "Enllaçar directament a l'esdeveniment del dia amb l'esdeveniment sol?" + +# @ dbem +#: admin/em-options.php:1017 +msgid "If a calendar day has only one event, you can force a direct link to the event (recommended to avoid duplicate content)." +msgstr "Si un dia del calendari només té un esdeveniment, pots forçar directament un enllaç a l'esdeveniment (recomenat per evitar contingut duplicat)." + +#: admin/em-options.php:1020 +msgid "Calendar Day Event List Settings" +msgstr "Configuració de la llista d'esdeveniments d'un dia del calendari" + +#: admin/em-options.php:1027 +msgid "Order by event name, then event start time" +msgstr "Ordenar pel nom de l'esdeveniment, després per l'hora d'inici" + +#: admin/em-options.php:1028 +msgid "Order by event start time, then event name" +msgstr "Ordenar per l'hora d'inici de l'esdeveniment, després pel nom" + +#: admin/em-options.php:1059 +msgid "Calendar events/day limit" +msgstr "Límit d'esdeveniments/dies del calendari" + +# @ dbem +#: admin/em-options.php:1059 +msgid "Limits the number of events on each calendar day. Leave blank for no limit." +msgstr "Limita el nombre d'esdeveniments per cada dia del calendari. Deixa-ho en blanc per a que no hi hagi límit." + +#: admin/em-options.php:1060 +msgid "More Events message" +msgstr "Missatge \"més esdeveniments\"" + +# @ dbem +#: admin/em-options.php:1060 +msgid "Text with link to calendar day page with all events for that day if there are more events than the limit above, leave blank for no link as the day number is also a link." +msgstr "Text amb enllaç a la pàgina d'un dia del calendari amb tots els esdeveniments per aquell dia si hi ha més esdeveniments que el límit de sobre. Deixa-ho en blanc per a que no hi hagi enllaç i que el número del dia sigui un enllaç." + +# @ dbem +#: admin/em-options.php:1224 +msgid "Thousands Seperator" +msgstr "Separador dels milers" + +#: admin/em-options.php:1225 +msgid "Decimal Point" +msgstr "Punt decimal" + +#: admin/em-options.php:1226 +msgid "Currency Format" +msgstr "Format de la moneda" + +# @ dbem +#: admin/em-options.php:1226 +msgid "Choose how prices are displayed. @ will be replaced by the currency symbol, and # will be replaced by the number." +msgstr "Escolleix com es mostren els preus. El símbol @ serà reemplaçat pel símbol de la moneda, i el símbol # serà reempleçat pel nombre." + +# @ dbem +#: admin/em-options.php:1236 +msgid "Customize Feedback Messages" +msgstr "Personalitzar els missatges de feedback" + +# @ dbem +#: admin/em-options.php:1238 +msgid "Below you will find texts that will be displayed to users in various areas during the bookings process, particularly on booking forms." +msgstr "A continuació trobaràs els textos que es mostraran als usuaris en diverses àrees durant el procés de reserves, sobretot en els formularis de reserva." + +#: admin/em-options.php:1240 +msgid "My Bookings messages" +msgstr "Missatges de les meves reserves" + +# @ dbem +#: admin/em-options.php:1242 +msgid "When a user cancels their booking, this message will be displayed confirming the cancellation." +msgstr "Quan un usuari cancel·la la seva reserva, se li mostra aquest missatge confirmant la cancel·lació." + +#: admin/em-options.php:1243 +msgid "Booking Cancellation Warning" +msgstr "Advertència de la cancel·lació de reserves" + +# @ dbem +#: admin/em-options.php:1243 +msgid "When a user chooses to cancel a booking, this warning is displayed for them to confirm." +msgstr "Quan un usuari escull cancel·lar una reserva, se li mostra aquest missatge d'advertència per a que ho confirmi." + +#: admin/em-options.php:1245 +msgid "Booking form texts/messages" +msgstr "Missatges/textos del formulari de reserves" + +#: admin/em-options.php:1247 +msgid "Bookings disabled" +msgstr "Reservas desactivades" + +#: admin/em-options.php:1247 +msgid "An event with no bookings." +msgstr "Un esdeveniment sense reserves" + +#: admin/em-options.php:1248 +msgid "Bookings closed" +msgstr "Reserves tancades" + +#: admin/em-options.php:1248 +msgid "Bookings have closed (e.g. event has started)." +msgstr "Reserves s'han tancat (per exemple, l'esdeveniment ha començat)." + +# @ dbem +#: admin/em-options.php:1249 +msgid "Fully booked" +msgstr "Reserves completes" + +# @ dbem +#: admin/em-options.php:1249 +msgid "Event is fully booked." +msgstr "L'esdeveniment té totes les reserves completes." + +#: admin/em-options.php:1250 +msgid "Already attending" +msgstr "Ja s'ha assistit" + +# @ dbem +#: admin/em-options.php:1250 +msgid "If already attending and double bookings are disabled, this message will be displayed, followed by a link to the users booking page." +msgstr "Si ja s'està assistint i les reserves dobles estan desactivades, aquest missatge es mostrarà, seguit per un enllaç a la pàgina de reserva dels usuaris." + +#: admin/em-options.php:1251 +msgid "Manage bookings link text" +msgstr "Texte de l'enllaç de gestió de reserves" + +# @ dbem +#: admin/em-options.php:1251 +msgid "Link text used for link to user bookings." +msgstr "Text de l'enllaç utilitzat per enllaçar a les reserves d'usuari." + +#: admin/em-options.php:1260 +msgid "Email Exists" +msgstr "El correu electrònic existeix" + +# @ dbem +#: admin/em-options.php:1260 +msgid "When a guest tries to book using an email registered with a user account." +msgstr "Quan un convidat intenta reservar ustilitzant un coreeu electrònic registrat amb un compte d'usuari." + +#: admin/em-options.php:1277 +msgid "Submit button text" +msgstr "Text del botó d'enviament" + +# @ dbem +#: admin/em-options.php:1277 +#, php-format +msgid "The text used by the submit button. To use an image instead, enter the full url starting with %s or %s." +msgstr "El text utilitzat pel botó d'enviament. Per utilitzar una imatge al seu lloc, insereix la direcció completa començant amb %s o %s." + +# @ dbem +#: admin/em-options.php:1344 +msgid "You can disable this email by leaving the subject blank." +msgstr "Pots deshabilitar aquest correu electrònic deixant l'assumpte en blanc." + +# @ dbem +#: admin/em-options.php:1346 +msgid "For multiple emails, seperate by commas (e.g. email1@test.com,email2@test.com,etc.)" +msgstr "Per mútiples correus, separa'ls per comes (p.e. email1@test.com,email2@test.com,etc.)" + +#: admin/em-options.php:1458 +msgid "Minimum width (px)" +msgstr "Amplada mínima (píxels)" + +#: admin/em-options.php:1458 +msgid "The minimum allowed width for images uploades" +msgstr "L'amplada mínima permesa per les imatges pujades" + +#: admin/em-options.php:1460 +msgid "Minimum height (px)" +msgstr "Altura mínima (píxels)" + +#: admin/em-options.php:1460 +msgid "The minimum allowed height for images uploaded, in pixels" +msgstr "L'altura mínima permesa per a les imatges carregades, en píxels" + +# @ dbem +#: admin/em-options.php:1484 +msgid "Depending on server settings, some sending methods may ignore this settings." +msgstr "Depenent de la configuració del servidor, alguns mètodes d'enviament poden ignorar aquestes configuracions." + +# @ dbem +#: admin/em-options.php:1632 +msgid "Admin Tools" +msgstr "Eines d'administració" + +# @ dbem +#: admin/em-options.php:1634 +msgid "Development Versions & Updates" +msgstr "Versions de desenvolupament i actualitzacions" + +# @ default +#: admin/em-options.php:1635 +msgid "We're always making improvements, adding features and fixing bugs between releases. We incrementally make these changes in between updates and make it available as a development version. You can download these manually, but we've made it easy for you. Warning: Development versions are not always fully tested before release, use wisely!" +msgstr "Sempre estem fent millores, afegint característiques i corregint errors entre versions. Fem aquests canvis de forma incremental entre les actualitzacions i fem que estiguin disponibles com una versió de desenvolupament. Pots descarregar-la de forma manual, però ho hem fet fàcil per a vostè. Advertència: les versions de desenvolupament no sempre estan sempre completament testejades abans del seu alliberament, utilitza-la sàviament!" + +# @ dbem +#: admin/em-options.php:1637 +msgid "Enable Dev Updates?" +msgstr "Habilitar les actualitzacions de desenvolupament?" + +# @ default +#: admin/em-options.php:1637 +msgid "If enabled, the latest dev version will always be checked instead of the latest stable version of the plugin." +msgstr "Si està activat, la darrera versió de desenvolupament sempre s'obtindrà en lloc de l'última versió estable de la extensió." + +#: admin/em-options.php:1639 +msgid "Re-Check Updates" +msgstr "Tornar a comprobar actualitzacions" + +# @ dbem +#: admin/em-options.php:1639 +msgid "If you would like to check and see if there is a new stable update." +msgstr "Si vols comprobar i veure si hi ha una nova actualització estable." + +# @ dbem +#: admin/em-options.php:1640 +msgid "Check Dev Versions" +msgstr "Comprobar versions de desenvolupament" + +# @ dbem +#: admin/em-options.php:1640 +msgid "If you would like to download a dev version, but just as a one-off, you can force a dev version check by clicking the button below. If there is one available, it should appear in your plugin updates page as a regular update." +msgstr "Si vols descarregar una versió de desenvolupament, però una sola vegada, pots forçar una comprovació de la versió de desenvolupament fent clic al botó de sota. Si n'hi ha una disponible, hauria d'aparèixer a la pàgina d'actualitzacions de les extensions com una actualització regular." + +#: classes/em-bookings-table.php:55 +msgid "Confirmed" +msgstr "Confirmat" + +# @ dbem +#: classes/em-bookings-table.php:58 +msgid "Needs Attention" +msgstr "Necessita atenció" + +#: classes/em-bookings-table.php:59 +msgid "Incomplete Bookings" +msgstr "Reserves incompletes" + +#: classes/em-bookings-table.php:79 +msgid "Phone Number" +msgstr "Número de telèfon" + +#: classes/em-bookings-table.php:84 +msgid "Booking ID" +msgstr "Identificador de la reserva" + +#: classes/em-bookings-table.php:88 +msgid "Ticket Description" +msgstr "Descripció de l'entrada" + +#: classes/em-bookings-table.php:89 +msgid "Ticket Price" +msgstr "Preu de l'entrada" + +#: classes/em-bookings-table.php:90 +msgid "Ticket ID" +msgstr "Identificador d'entrada" + +#: classes/em-bookings-table.php:98 +msgid "Actions" +msgstr "Accions" + +#: classes/em-bookings-table.php:250 +msgid "Bookings Table Settings" +msgstr "Configuració de la taula de reserves" + +# @ dbem +#: classes/em-bookings-table.php:251 +msgid "Modify what information is displayed in this booking table." +msgstr "Modifica la informació que es mostra en aquesta taula de reserves." + +# @ dbem +#: classes/em-bookings-table.php:254 +msgid "Collumns to show" +msgstr "Columnes a mostrar" + +# @ dbem +#: classes/em-bookings-table.php:255 +msgid "Drag items to or from the left collumn to add or remove them." +msgstr "Arrossegueu els elements des de o cap a la columna esquerra per afegir-los o eliminar-los." + +#: classes/em-bookings-table.php:276 +msgid "Save Settings" +msgstr "Desar configuració" + +#: classes/em-bookings-table.php:281 +msgid "Export Bookings" +msgstr "Exportar reserves" + +# @ dbem +#: classes/em-bookings-table.php:282 +msgid "Select the options below and export all the bookings you have currently filtered (all pages) into a CSV spreadsheet format." +msgstr "Selecciona les següents opcions i exporta totes les reserves que has filtrat (totes les pàgines) en un format de full de càlcul CSV." + +# @ dbem +#: classes/em-bookings-table.php:284 +msgid "Split bookings by ticket type" +msgstr "Dividir les reserves per tipus d'entrada" + +# @ default +#: classes/em-bookings-table.php:285 +msgid "If your events have multiple tickets, enabling this will show a seperate row for each ticket within a booking." +msgstr "Si els teus esdeveniments tenen entrades múltiples, activant això es mostraran una fila separada per a cada entrada dins una reserva." + +# @ dbem +#: classes/em-bookings-table.php:288 +msgid "Collumns to export" +msgstr "Columnes a exportar" + +#: classes/em-bookings-table.php:333 +msgid "Export Bookings Report" +msgstr "Exportar informe de reserves" + +#: classes/em-bookings-table.php:356 +msgid "Export these bookings." +msgstr "Exportar aquestes reserves." + +# @ dbem +#: classes/em-bookings-table.php:371 +#, php-format +msgid "%s Rows" +msgstr "Files de %s" + +# @ dbem +#: classes/em-bookings-table.php:390 +msgid "Displaying Event" +msgstr "Mostrant esdeveniment" + +#: classes/em-bookings-table.php:392 +msgid "Displaying User" +msgstr "Mostrant usuari" + +#: classes/em-bookings-table.php:444 +msgid "No bookings." +msgstr "No hi ha reserves." + +#: classes/em-bookings-table.php:570 +#: classes/em-bookings-table.php:578 +#: classes/em-bookings-table.php:586 +msgid "Unpprove" +msgstr "Desaprovar" + +#: classes/em-categories-taxonomy.php:19 +msgid "ID" +msgstr "Identificador" + +# @ dbem +#: classes/em-event-posts-admin.php:102 +#: classes/em-event-posts-admin.php:104 +#: classes/em-event-posts-admin.php:239 +#: classes/em-event-posts-admin.php:241 +#: classes/em-location-posts-admin.php:47 +#: classes/em-location-posts-admin.php:49 +#, php-format +msgid "%s ID" +msgstr "Identificador de %s" + +# @ default +#: classes/em-event.php:457 +msgid "For recurring events that end the following day, ensure you make your event last 1 or more days." +msgstr "Pels esdeveniments recurrents que finalitzen al dia següent, assegura't que la data de finalització és 1 o més dies posterior." + +#: classes/em-event.php:1926 +msgid "every year" +msgstr "cada any" + +#: classes/em-event.php:1928 +#, php-format +msgid "every %s years" +msgstr "cada %s anys" + +#: classes/em-mailer.php:56 +msgid "Could not send email." +msgstr "No s'ha pogut enviar el correu electrònic." + +#: classes/em-object.php:1170 +msgid "The image is too small! Minimum size allowed:" +msgstr "La imatge és massa petita! El tamany mínim permès és:" + +#: em-actions.php:611 +#, php-format +msgid "Exported booking on %s" +msgstr "Reserva exportada a %s." + +#: em-install.php:302 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_EVENTNAME on #_EVENTDATES. He wants to reserve #_BOOKINGSPACES spaces.
          Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
          Yours faithfully,
          Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) assistarà a #_EVENTNAME el #_EVENTDATES. Volia reservar #_BOOKINGSPACES places.
          Ara mateix hi ha #_BOOKEDSPACES places reservades, #_AVAILABLESPACES encara estan disponibles.
          Et saluda atentament,
          Events Manager - http://wp-events-plugin.com" + +#: em-install.php:303 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_EVENTNAME on #_EVENTDATES. He wanted to reserve #_BOOKINGSPACES spaces.
          Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
          Yours faithfully,
          Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) ha cancel·lat la serva reserva per #_EVENTNAME a #_EVENTDATES. Volia reservar #_BOOKINGSPACES places.
          Ara mateix hi ha #_BOOKEDSPACES places reservades, #_AVAILABLESPACES encara estan disponibles.
          Et saluda atentament,
          Events Manager - http://wp-events-plugin.com" + +#: em-install.php:304 +msgid "Dear #_BOOKINGNAME,
          you have successfully reserved #_BOOKINGSPACES space/spaces for #_EVENTNAME.
          When : #_EVENTDATES @ #_EVENTTIMES
          Where : #_LOCATIONNAME - #_LOCATIONFULLLINE
          Yours faithfully,
          #_CONTACTNAME" +msgstr "Estimat #_BOOKINGNAME,
          has reservat correctament #_BOOKINGSPACES plaça/places per #_EVENTNAME.
          Quan : #_EVENTDATES @ #_EVENTTIMES
          On : #_LOCATIONNAME - #_LOCATIONFULLLINE
          Et saluda atentament,
          #_CONTACTNAME" + +#: em-install.php:305 +msgid "Dear #_BOOKINGNAME,
          You have requested #_BOOKINGSPACES space/spaces for #_EVENTNAME.
          When : #_EVENTDATES @ #_EVENTTIMES
          Where : #_LOCATIONNAME - #_LOCATIONFULLLINE
          Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
          Yours faithfully,
          #_CONTACTNAME" +msgstr "Estimat #_BOOKINGNAME,
          Has demanat #_BOOKINGSPACES plaça/places per #_EVENTNAME.
          Quan : #_EVENTDATES @ #_EVENTTIMES
          On : #_LOCATIONNAME - #_LOCATIONFULLLINE
          La teva reserva està pendent d'aprovació pels nostres administradors. Un cop aprovat, rebrà una confirmació automàtica
          Et saluda atentament,
          #_CONTACTNAME" + +#: em-install.php:306 +msgid "Dear #_BOOKINGNAME,
          Your requested booking for #_BOOKINGSPACES spaces at #_EVENTNAME on #_EVENTDATES has been rejected.
          Yours faithfully,
          #_CONTACTNAME" +msgstr "Estimat #_BOOKINGNAME,
          La teva petició de reserva per #_BOOKINGSPACES places a #_EVENTNAME a #_EVENTDATES ha estat denegada.
          Et saluda atentament,
          #_CONTACTNAME" + +#: em-install.php:307 +msgid "Dear #_BOOKINGNAME,
          Your requested booking for #_BOOKINGSPACES spaces at #_EVENTNAME on #_EVENTDATES has been cancelled.
          Yours faithfully,
          #_CONTACTNAME" +msgstr "Estimat #_BOOKINGNAME,
          La teva petició de reserva per #_BOOKINGSPACES places a #_EVENTNAME a #_EVENTDATES ha estat cancel·lada.
          Et saluda atentament,
          #_CONTACTNAME" + +# @ dbem +#: em-install.php:308 +msgid "Dear #_CONTACTNAME,
          Your event #_EVENTNAME on #_EVENTDATES has been approved.
          You can view your event here: #_EVENTURL" +msgstr "Estimat #_CONTACTNAME,
          El teu esdeveniment #_EVENTNAME a #_EVENTDATES ha sigut aprovat.
          Pots veure el teu esdeveniment aquí: #_EVENTURL" + +# @ dbem +#: em-install.php:492 +msgid "more..." +msgstr "més..." + +#: em-install.php:532 +msgid "You are currently attending this event." +msgstr "Estàs atenent aquest esdeveniment actualment." + +#: em-install.php:533 +msgid "Manage my bookings" +msgstr "Gestionar les meves reserves" + +#: templates/forms/event/attributes.php:83 +#: templates/forms/location/attributes.php:83 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings > General to add attribute placeholders." +msgstr "Amb la finalitat d'utilitzar els atributs, és necessari definir alguns a les teves plantilles, en cas contrari mai es mostraran. Ves a Esdeveniments> Configuració > General per afegir marcadors de posició dels atributs." + +#: templates/forms/event/bookings.php:115 +msgid "Total Spaces" +msgstr "Total de places" + +# @ dbem +#: templates/forms/event/bookings.php:117 +msgid "Individual tickets with remaining spaces will not be available if total booking spaces reach this limit. Leave blank for no limit." +msgstr "Les entrades individuals amb places restants no estaran disponibles si el total de places de la reserva arriba a aquest límit. Deixa-ho en blanc per a que no hi hagi límit." + +#: templates/forms/event/bookings.php:120 +msgid "Booking Cut-Off Date" +msgstr "Data de tall de les reserves" + +# @ dbem +#: templates/forms/event/bookings.php:123 +msgid "This is the definite date after which bookings will be closed for this event, regardless of individual ticket settings above. Default value will be the event start date." +msgstr "Aquesta és la data definitiva en la que les reserves es tancaran per aquest esdeveniment, independentment de la configuració d'entrades individuals que hi ha a sobre. El valor per defecte serà la data d'inici de l'esdeveniment." + +#: templates/forms/event/group.php:13 +msgid "Not a Group Event" +msgstr "No és un esdeveniment de grup" + +#: templates/forms/event/location.php:57 +msgid "Location Name:" +msgstr "Nom de la localizació:" + +# @ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Yearly" +msgstr "Anual" + +#: templates/forms/event/recurring-when.php:25 +#: templates/forms/event/when-with-recurring.php:47 +msgid "year" +msgstr "any" + +# @ dbem +#: templates/forms/event/recurring-when.php:26 +#: templates/forms/event/when-with-recurring.php:48 +msgid "years" +msgstr "anys" + +#: templates/forms/location/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Locations Manager template settings. Please add them the settings page" +msgstr "No tens atributs personalitzats definits a qualsevol de les configuracions de plantilles de l'Administrador de Localitzacions. Per favor, afegeix-los a la pàgina de configuració" + +#: templates/forms/location/attributes.php:51 +msgid "If you see any attributes under here, that means they're not used in Locations Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Si vosté veu els atributs aquí avall, això significa que no s'estan eso utilitzant als formats de l'Administrador de Localitzacions. Per afegir-los, has d'agregar l'atribut personalitzat una altra vegada a una opció de format a la pàgina de configuració. Per eliminar qualsevol d'aquests atributs depreciats, dóna-li un valor en blanc i desa-ho." + +#: templates/forms/ticket-form.php:14 +msgid "Enter a ticket name." +msgstr "Entroduexi un nom per l'entrada" + +# @ dbem +#: templates/forms/ticket-form.php:19 +msgid "Enter a maximum number of spaces (required)." +msgstr "Introdueixi un nombre màxim de places (necessari)." + +#: templates/placeholders/bookingbutton.php:8 +#, php-format +msgid "%s Submitted" +msgstr "%s enviat" + +#: templates/placeholders/bookingbutton.php:9 +#: templates/placeholders/bookingbutton.php:13 +#, php-format +msgid "%s Error. Try again?" +msgstr "Error de %s. Provar de nou?" + +#: templates/placeholders/bookingbutton.php:11 +msgid "Canceling..." +msgstr "Cancel·lant..." + +#: templates/placeholders/bookingbutton.php:13 +msgid "Cancellation" +msgstr "Cancel·lació" + +#: widgets/em-events.php:163 +msgid "No events text" +msgstr "Text de \"no hi ha esdeveniments\"" + +#~ msgid "Events Admin" +#~ msgstr "Administració d'esdeveniments" + +#~ msgid "Settings Updated." +#~ msgstr "Configuració actualitzada." + +#~ msgid "Option Two" +#~ msgstr "Opció 2" + +#~ msgid "Action One" +#~ msgstr "Acció 1" + +#~ msgid "Action Two" +#~ msgstr "Acció 2" + +#~ msgid "Events Settings Header" +#~ msgstr "Capçalera de configuració d'esdeveniments" + +#~ msgid "Changes Saved." +#~ msgstr "Canvis desats." + +#~ msgid "Do you love clicking checkboxes?" +#~ msgstr "T'agrada fer click a les caselles de verificació?" + +#~ msgid "Events (%s)" +#~ msgstr "Esdeveniments (%s)" + +#~ msgid "However, the image could not be saved." +#~ msgstr "No obstant, la imatge no s'ha pogut desar." + +#~ msgid "The image could not be saved" +#~ msgstr "La imatge no s'ha pogut desar" + +#~ msgid "However, the image could not be saved:" +#~ msgstr "No obstant, la imatge no s'ha pogut desar:" + +#~ msgid "Could not save the %s details due to a database error." +#~ msgstr "" +#~ "No s'ha pogut desar els detalls de %s degut a un error de la base de " +#~ "dades." + +#~ msgid "" +#~ "If you update this event data and save, it will become an independent " +#~ "event, and will not be deleted or modified automatically if you " +#~ "reschedule the original recurring event details." +#~ msgstr "" +#~ "Si actualizes les dades d'aquest esdeveniment i ho deses, es convertirà " +#~ "en un esdeveniment independient, i no serà eliminat o modificat de forma " +#~ "automàtica si reprograma els detalls dels esdeveniments recurrents " +#~ "originals." + +#~ msgid "There was a problem saving the location so event was not saved." +#~ msgstr "" +#~ "Hi ha hagut un problema desant la localització, per tant l'esdeveniment " +#~ "no s'ha desat." + +#~ msgid "Something went wrong with creating tickets." +#~ msgstr "Quelcom ha anat malament a la creació d'entrades." + +#~ msgid "New event successfully inserted!" +#~ msgstr "Nou esdeveniment afegit exitosament!" + +#~ msgid "Could not save the event details due to a database error." +#~ msgstr "" +#~ "No s'han pogut desar els detalls de l'esdeveniment degut a un error de " +#~ "base de dades." + +#~ msgid "Event %s." +#~ msgstr "Esdeveniment %s." + +#~ msgid "You are not allowed to manage this %s." +#~ msgstr "No se't permet gestionar aquest %s." + +#~ msgid "Booking details for \"%s\" as of %s" +#~ msgstr "Els detalls de la reserva per \"%s\" com de %s" + +#~ msgid "The location name" +#~ msgstr "Nom de la localització" + +#~ msgid "%s successfully updated." +#~ msgstr "%s actualizat amb èxit." + +#~ msgid "You do not have permission to delete %s." +#~ msgstr "No tens permís per eliminar %s." + +#~ msgid "The category name" +#~ msgstr "Nom de la categoria" + +#~ msgid "Ach, some problems here:" +#~ msgstr "Hi ha hagut problemes aquí:" + +#~ msgid "edit" +#~ msgstr "editar" + +#~ msgid "No venues have been inserted yet!" +#~ msgstr "Encara no s'han inserit localitzacions!" + +#~ msgid "Insert New Event" +#~ msgstr "Inserta un nou esdeveniment" + +#~ msgid "Starts on " +#~ msgstr "Comienza el" + +#~ msgid "and ends on" +#~ msgstr "y termina el" + +#~ msgid "" +#~ "Check if your event happens more than once according to a regular pattern" +#~ msgstr "" +#~ "Compruebe si su caso pasa más de una vez de acuerdo a un patrón regular" + +#~ msgid "Choose from one of your locations" +#~ msgstr "Elegir entre uno de sus lugares" + +#~ msgid "or add a new location" +#~ msgstr "o agregar una nueva ubicación" + +#~ msgid "No Value" +#~ msgstr "Sin valor" + +#~ msgid "If blank, there's no space limit." +#~ msgstr "Si está en blanco, no hay límite de espacio." + +#~ msgid "No more tickets available at this time." +#~ msgstr "No hay más entradas disponibles en este momento." + +#~ msgid "Book now!" +#~ msgstr "Reserve ahora!" + +#~ msgid "" +#~ "You must register or log in in " +#~ "order to create and manage your bookings." +#~ msgstr "" +#~ "Usted debe registrarse o iniciar " +#~ "sesión con el fin de crear y gestionar sus reservas." + +#~ msgid "Cancel your booking" +#~ msgstr "Cancelar su reserva" + +#~ msgid "" +#~ "

          Hey, %s, welcome to Events Manager! " +#~ "We hope you like it around here.

          \r\n" +#~ "\t\t

          Now it's time to insert events lists through widgets, template tags or shortcodes.

          \r\n" +#~ "\t\t

          By the way, have you taken a look at the Settings page? That's where you customize the " +#~ "way events and locations are displayed.

          \r\n" +#~ "\t\t

          What? Tired of seeing this advice? I hear you, click here and you won't see " +#~ "this again!

          " +#~ msgstr "" +#~ "

          Hey, %s, la bienvenida a Events Manager! Esperamos que te guste aquí.

          \r\n" +#~ "\t\t

          Ahora es el momento de insertar listas de eventos a través de widgets, template tags o shortcodes.

          \r\n" +#~ "\t\t

          Por cierto, ¿has echado un vistazo a la configuración de la página? Ahí es donde puede personalizar " +#~ "la forma en eventos y lugares se muestran.

          \r\n" +#~ "\t\t

          ¿Qué? ¿Cansado de ver este consejo? Te escucho, click here y usted no verá esto " +#~ "otra vez!

          " + +#~ msgid "Add new" +#~ msgstr "Añadir nuevo" + +#~ msgid "You are now viewing the duplicated %s." +#~ msgstr "Ahora estás viendo el %s. duplicado" + +#~ msgid "EM_Categories" +#~ msgstr "EM_Categories" + +#~ msgid "Uncategorized" +#~ msgstr "Uncategorized" + +#~ msgid "Powered by" +#~ msgstr "Desarrollado por" + +#~ msgid "Bookings - #_NAME" +#~ msgstr "Reservas - #_NAME" + +#~ msgid "Ascendant" +#~ msgstr "Ascendente" + +#~ msgid "Descendant" +#~ msgstr "Descendiente" + +#~ msgid "The category has been added." +#~ msgstr "La categoría ha sido añadida." + +#~ msgid "The category has been updated." +#~ msgstr "La categoría ha sido actualizada." + +#~ msgid "Categories Deleted" +#~ msgstr "Categorías eliminados" + +#~ msgid "Category name" +#~ msgstr "Nombre de la categoría" + +#~ msgid "The name of the category" +#~ msgstr "El nombre de la categoría" + +#~ msgid "Hide Slug" +#~ msgstr "Ocultar Slug" + +#~ msgid "%s Slug" +#~ msgstr "%s Slug" + +#~ msgid "" +#~ "The event slug. If the event slug already exists, a random number will be " +#~ "appended to the end." +#~ msgstr "" +#~ "La babosa evento. Si la bala evento ya existe, un número al azar se añade " +#~ "al final." + +#~ msgid "Details about the category" +#~ msgstr "Los detalles sobre la categoría" + +#~ msgid "Category image" +#~ msgstr "Categoría de imágenes" + +#~ msgid "No image uploaded for this category yet" +#~ msgstr "No hay imagen cargada para esta categoría aún" + +#~ msgid "You do not have the rights to manage this location." +#~ msgstr "Usted no tiene los derechos para manejar esta situación." + +#~ msgid "Location Owner" +#~ msgstr "Localización" + +#~ msgid "Select..." +#~ msgstr "Seleccione ..." + +#~ msgid "Coordinates" +#~ msgstr "Coordenadas" + +#~ msgid "Repeated event" +#~ msgstr "Caso de repetirse" + +#~ msgid "Every" +#~ msgstr "Cada" + +#~ msgid "week" +#~ msgstr "semana" + +#~ msgid "weeks" +#~ msgstr "semana" + +#~ msgid "month" +#~ msgstr "mes" + +#~ msgid "months" +#~ msgstr "mes" + +#~ msgid "Event Owner/Contact Person" +#~ msgstr "Evento Propietario/Persona de Contacto" + +#~ msgid "Event Slug" +#~ msgstr "Caso Slug" + +#~ msgid "The event date." +#~ msgstr "La fecha del evento." + +#~ msgid "" +#~ "When not reoccurring, this event spans between the beginning and end date." +#~ msgstr "" +#~ "Cuando no se repita, este evento se extiende entre el comienzo y de " +#~ "finalización." + +#~ msgid "The recurrence beginning and end date." +#~ msgstr "El principio de recurrencia y de finalización." + +#~ msgid "Event time" +#~ msgstr "Hora del evento" + +#~ msgid "The time of the event beginning and end" +#~ msgstr "El momento del comienzo del evento y final" + +#~ msgid "" +#~ "The name of the location where the event takes place. You can use the " +#~ "name of a venue, a square, etc" +#~ msgstr "" +#~ "El nombre del lugar donde tiene lugar el evento. Usted puede utilizar el " +#~ "nombre de un lugar, un cuadrado, etc" + +#~ msgid "Details about the event" +#~ msgstr "Los detalles del evento" + +#~ msgid "" +#~ "WARNING! You are about to re-create all your recurrent events including " +#~ "erasing your old booking data! Are you sure you want to do this?" +#~ msgstr "" +#~ "ADVERTENCIA! Usted está a punto de volver a crear todos los eventos " +#~ "recurrentes como el borrado de datos de su reserva de edad! ¿Estás seguro " +#~ "de que quieres hacer esto?" + +#~ msgid "Pending Bookings" +#~ msgstr "Reservas pendientes" + +#~ msgid "Confirmed Bookings" +#~ msgstr "Las reservas confirmadas" + +#~ msgid "Totals" +#~ msgstr "Totales" + +#~ msgid "" +#~ "

          Hey, %s, welcome to Events Manager! " +#~ "We hope you like it around here.

          \r\n" +#~ "\t\t\t

          Now it's time to insert events lists through widgets, template tags or shortcodes.

          \r\n" +#~ "\t\t\t

          By the way, have you taken a look at the Settings page? That's where you customize the " +#~ "way events and locations are displayed.

          \r\n" +#~ "\t\t\t

          What? Tired of seeing this advice? I hear you, click here and you won't see " +#~ "this again!

          " +#~ msgstr "" +#~ "

          Hey, %s, la bienvenida a Events Manager! Esperamos que te guste aquí.

          \r\n" +#~ "\t\t\t

          Ahora es el momento de insertar listas de eventos a través de " +#~ "widgets, template tags o shortcodes.

          \r\n" +#~ "\t\t\t

          Por cierto, ¿has echado un vistazo a la configuración de la página? Ahí es donde " +#~ "puede personalizar la forma en eventos y lugares se muestran.

          \r\n" +#~ "\t\t\t

          ¿Qué? ¿Cansado de ver este consejo? Te escucho, haga clic aquí y usted no verá " +#~ "esto otra vez!

          " + +#~ msgid "" +#~ "Events Manager has some new features!
          • Bookings " +#~ "can now be approved before they count towards your event's space " +#~ "allocations.
          • Events now have owners, and you can restrict users " +#~ "so they can only manage events/locations/categories they create.

            These new permissions are enabled by default, but since you upgraded it " +#~ "has been disabled to maintain the previous plugin behaviour. You can re-" +#~ "enable it from the settings page. Dismiss" +#~ msgstr "" +#~ "Administrador de Eventos tiene algunas características nuevas!
            • Reservas pueden ahora ser aprobado antes de que se " +#~ "cuenta para la asignación del espacio de su evento.
            • " +#~ "Acontecimientos que ahora tienen dueños, y se puede restringir a los " +#~ "usuarios por lo que sólo puede administrar los eventos / lugares / " +#~ "categorías que crean.

              Estos nuevos permisos están habilitados " +#~ "por defecto, pero ya ha realizado una actualización que ha sido " +#~ "deshabilitado para mantener el comportamiento anterior plug-in. Se puede " +#~ "volver a habilitar la página de configuración . Descartar" + +#~ msgid "" +#~ "A LOT has changed since Events Manager 3. We recommend " +#~ "you take a look at the settings page for new features " +#~ "and upgrade instructions, and you may particualarly be interested in " +#~ "modifying permissions. Dismiss" +#~ msgstr "" +#~ "Mucho ha cambiado desde el Administrador de Eventos 3. " +#~ "Le recomendamos echar un vistazo a la página de " +#~ "configuración de nuevas características e instrucciones de " +#~ "actualización, y particualarly puede estar interesado en la modificación " +#~ "de los permisos. Descartar" + +#~ msgid "" +#~ "If you upgraded from 3.x to the RC2 and the update did not go so well, try reimporting old settings. Warning! Re-importing will " +#~ "rename all event slugs, re-import your old category settings from events, " +#~ "and recreate all tickets, so changes to these areas will be lost. Dismiss" +#~ msgstr "" +#~ "Si ha actualizado desde 3.x para la RC2 y la actualización no fue tan " +#~ "bien, tratar de reimportación configuración anterior . " +#~ "¡Advertencia! Volver a importar se cambie el nombre a todas las babosas " +#~ "caso, volver a importar la configuración antigua categoría de eventos, y " +#~ "recrear todos los boletos, por lo que los cambios en estas áreas se " +#~ "perderá. Descartar" + +#~ msgid "Only Network Admins see this" +#~ msgstr "Sólo los administradores de red ver esto" + +#~ msgid "Events page title" +#~ msgstr "Eventos título de la página" + +#~ msgid "The title on the multiple events page." +#~ msgstr "El título de la página de eventos múltiples." + +#~ msgid "%s page title" +#~ msgstr "%s título de la página" + +#~ msgid "The title on the multiple %s page." +#~ msgstr "El título en la página del %s múltiples." + +#~ msgid "Booking and Ticketing Options" +#~ msgstr "Reservas y venta de entradas Opciones" + +#~ msgid "" +#~ "The subject of the email sent to the person making a booking that is " +#~ "awaiting administrator approval. Not relevant if bookings don't require " +#~ "approval." +#~ msgstr "" +#~ "El asunto del correo electrónico enviado a la persona que hace una " +#~ "reserva que está en espera de la aprobación del administrador. No es " +#~ "relevante si las reservas no requieren aprobación." + +#~ msgid "" +#~ "The body of the email which will be sent to the person if the booking is " +#~ "rejected. Not relevant if bookings don't require approval." +#~ msgstr "" +#~ "El cuerpo del mensaje que se enviará a la persona si la reserva es " +#~ "rechazada. No es relevante si las reservas no requieren aprobación." + +#~ msgid "User can delete other users locations." +#~ msgstr "El usuario puede eliminar las ubicaciones de otros usuarios." + +#~ msgid "User can edit their locations." +#~ msgstr "El usuario puede editar sus ubicaciones." + +#~ msgid "" +#~ "User can view other users locations, to make locations shared by all " +#~ "users allow all event user roles to view all locations." +#~ msgstr "" +#~ "El usuario puede ver las ubicaciones de otros usuarios, hacer lugares " +#~ "compartidos por todos los usuarios que todos los roles de usuario evento " +#~ "para ver todos los lugares." + +#~ msgid "User can create recurrent events." +#~ msgstr "El usuario puede crear eventos recurrentes." + +#~ msgid "" +#~ "Do a search for this string within event name, details and location " +#~ "address." +#~ msgstr "" +#~ "Hacer una búsqueda de esta cadena en el nombre del evento, los detalles y " +#~ "la dirección de ubicación." + +#~ msgid "See the events lists limit option on the settings page." +#~ msgstr "" +#~ "Ver la opción de las listas de eventos de límite en la página de " +#~ "configuración." + +#~ msgid "" +#~ "Choose what fields to order your results by. You can supply a single " +#~ "field or multiple comma-seperated fields (e.g. \"start_date,name\")." +#~ msgstr "" +#~ "Elegir qué campos para ordenar los resultados por. Puede proporcionar un " +#~ "campo de una o varias comas seperated campos (por ejemplo, " +#~ "\"fecha_inicial, el nombre\")." + +#~ msgid "See the event lists ordering option on the settings page." +#~ msgstr "" +#~ "Vea la lista de eventos pedido opción en la página de configuración." + +#~ msgid "" +#~ "If set to 1 will only show locations that have at least one event " +#~ "occurring during the scope." +#~ msgstr "" +#~ "Si se establece en un sólo mostrará los lugares que tienen al menos un " +#~ "evento que ocurre durante el alcance." + +#~ msgid "" +#~ "If set to 1 will only show locations that have no events occurring during " +#~ "the scope." +#~ msgstr "" +#~ "Si se establece en un sólo mostrará los lugares que no tienen los eventos " +#~ "ocurridos durante el alcance." + +#~ msgid "" +#~ "Search for locations in this town (no partial matches, case sensitive)." +#~ msgstr "" +#~ "Búsqueda de lugares en esta ciudad (no hay coincidencias parciales, " +#~ "mayúsculas y minúsculas)." + +#~ msgid "" +#~ "Search for locations in this state (no partial matches, case sensitive)." +#~ msgstr "" +#~ "Buscar ubicaciones en este estado (sin coincidencias parciales, " +#~ "mayúsculas y minúsculas)." + +#~ msgid "" +#~ "Search for locations in this region (no partial matches, case sensitive)." +#~ msgstr "" +#~ "Buscar ubicaciones en esta región (sin coincidencias parciales, " +#~ "mayúsculas y minúsculas)." + +#~ msgid "" +#~ "Search for locations in this country (no partial matches, case sensitive)." +#~ msgstr "" +#~ "Búsqueda de lugares en este país (no hay coincidencias parciales, " +#~ "mayúsculas y minúsculas)." + +#~ msgid "" +#~ "Search for locations in this postcode (no partial matches, case " +#~ "sensitive)." +#~ msgstr "" +#~ "Buscar ubicaciones en este código postal (no las coincidencias parciales, " +#~ "mayúsculas y minúsculas)." + +#~ msgid "If set to 1 it will display a full calendar that shows event names." +#~ msgstr "" +#~ "Si se establece en 1, se mostrará un calendario completo que muestra los " +#~ "nombres de evento." + +#~ msgid "If set to 1, will show events that last longer than a day." +#~ msgstr "" +#~ "Si se establece en 1, se muestran los eventos que duran más de un día." + +#~ msgid "Limits the amount of values returned to this number." +#~ msgstr "Limita la cantidad de valores que devuelve a este número." + +#~ msgid "" +#~ "Choose the time frame of events to show. Accepted values are \"future\", " +#~ "\"past\" or \"all\" events. Additionally you can supply dates (in format " +#~ "of YYYY-MM-DD), either single for events on a specific date or two dates " +#~ "seperated by a comma (e.g. 2010-12-25,2010-12-31) for events ocurring " +#~ "between these dates." +#~ msgstr "" +#~ "Elija el período de tiempo de eventos para mostrar. Los valores aceptados " +#~ "son \"future\", \"past\" o \"all\". Además, puede proporcionar las fechas " +#~ "(en formato AAAA-MM-DD), ya sea solo para los eventos en una fecha " +#~ "específica o dos fechas separadas por una coma (por ejemplo, 2010-12-" +#~ "25,2010-12-31) para eventos ocurring entre estos fechas." + +#~ msgid "" +#~ "Indicates the order of the events. Choose between ASC (ascending) and " +#~ "DESC (descending)." +#~ msgstr "" +#~ "Indica el orden de los acontecimientos. Elija entre ASC (ascendente) y " +#~ "DESC (descendente)." + +#~ msgid "" +#~ "Choose what fields to order your results by. You can supply a single " +#~ "field or multiple comma-seperated fields (e.g. \"start_date,name\"). See " +#~ "specific instances (e.g. events, locations, etc.) for field names." +#~ msgstr "" +#~ "Elegir qué campos para ordenar los resultados por. Puede proporcionar un " +#~ "campo de una o varias comas seperated campos (por ejemplo, " +#~ "\"fecha_inicial, el nombre\"). Ver casos específicos (por ejemplo, " +#~ "eventos, lugares, etc) para los nombres de campo." + +#~ msgid "" +#~ "If you are displaying some information with the shortcode or function (e." +#~ "g. listing events), you can supply the html and placeholders here." +#~ msgstr "" +#~ "Si usted es de mostrar la información con el código abreviado o una " +#~ "función (por ejemplo, eventos de la lista), puede proporcionar el código " +#~ "HTML y marcadores de posición aquí." + +#~ msgid "The relevant default format will be taken from the settings page." +#~ msgstr "" +#~ "El formato por defecto correspondiente será tomado de la página de " +#~ "configuración." + +#~ msgid "" +#~ "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the " +#~ "search to events with these id(s)." +#~ msgstr "" +#~ "Suministro de un identificador único o identificadores de coma seperated " +#~ "(por ejemplo, \"1,2,3\") para limitar la búsqueda a los eventos con estas " +#~ "id (s)." + +#~ msgid "" +#~ "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the " +#~ "search to events in these categories." +#~ msgstr "" +#~ "Suministro de un identificador único o identificadores de coma seperated " +#~ "(por ejemplo, \"1,2,3\") para limitar la búsqueda a los eventos en estas " +#~ "categorías." + +#~ msgid "" +#~ "Supply a single id or comma-seperated ids to limit the search to these " +#~ "locations (or events in these locations)." +#~ msgstr "" +#~ "Suministro de un identificador único o identificadores de coma seperated " +#~ "para limitar la búsqueda a estos lugares (o eventos en estos lugares)." + +#~ msgid "" +#~ "For example, if you have ten results, if you set this to 5, only the last " +#~ "5 results will be returned. Useful for pagination." +#~ msgstr "" +#~ "Por ejemplo, si usted tiene diez resultados, si lo pone a 5, sólo los " +#~ "últimos 5 resultados serán devueltos. Útiles para la paginación." + +#~ msgid "" +#~ "If set to 1, will show only events that are recurring (i.e. events that " +#~ "are repeated over different dates)." +#~ msgstr "" +#~ "Si se establece en 1, se muestran sólo los eventos que son recurrentes " +#~ "(es decir, eventos que se repiten en fechas diferentes)." + +#~ msgid "" +#~ "If set to 1, will only show recurring event templates. Only useful if you " +#~ "know what you're doing, use recurrence if you want events that are " +#~ "recurrences." +#~ msgstr "" +#~ "Si se establece en 1, sólo se muestran las plantillas recurrentes del " +#~ "evento. Sólo es útil si usted sabe lo que está haciendo, el uso de " +#~ "recurrencia si desea que los eventos que son repeticiones." + +#~ msgid "" +#~ "If set to a month (1 to 12) only events that start or end during this " +#~ "month/year will be retured. Must be used in conjunction with year and " +#~ "does not work as intended if used with scope." +#~ msgstr "" +#~ "Si se establece en un mes (1 a 12) sólo los eventos que comienzan o " +#~ "terminan en este mes / año se retured. Debe ser usado en conjunción con " +#~ "el año y no funciona como está previsto si se utiliza con el alcance." + +#~ msgid "" +#~ "If set to a year (e.g. 2010) only events that start or end during this " +#~ "year/month will be returned. Does not work as intended if used with scope." +#~ msgstr "" +#~ "Si se establece en un año (por ejemplo, 2010) sólo los eventos que " +#~ "comienzan o terminan en este año / mes serán devueltos. No funciona como " +#~ "está previsto si se utiliza con el alcance." + +#~ msgid "" +#~ "If you supply this as an argument, the returned data will be in an array, " +#~ "no objects (only useful wen using PHP, not shortcodes)" +#~ msgstr "" +#~ "Si se proporciona este argumento, los datos devueltos estarán en una " +#~ "matriz, los objetos no (sólo es útil wen usando PHP, no shortcodes)" + +#~ msgid "" +#~ "When using a function or shortcode that outputs items (e.g. [events_list] " +#~ "for events, [locations_list] for locations), if the number of items " +#~ "supercede the limit of items to show, setting this to 1 will show page " +#~ "links under the list." +#~ msgstr "" +#~ "Cuando se utiliza una función o un código corto que las salidas de los " +#~ "elementos (por ejemplo, [events_list] para eventos, [locations_list] para " +#~ "las ubicaciones), si el número de elementos sustituyen a los límites de " +#~ "elementos que mostrar, dejando esto en una página de enlaces se muestran " +#~ "en la lista." + +#~ msgid "Displays the name of the event." +#~ msgstr "Muestra el nombre del evento." + +#~ msgid "Shows the description of the event." +#~ msgstr "Muestra la descripción del evento." + +#~ msgid "" +#~ "If you added a more tag to your event description, only the " +#~ "content before this tag will show (currently, no read more link is added)." +#~ msgstr "" +#~ "Si ha añadido una etiqueta más a su descripción del evento, sólo el " +#~ "contenido antes de que esta etiqueta se muestran (en la actualidad, no " +#~ "leer más vínculo se agrega)." + +#~ msgid "Shows the event corresponding ID number in the database table." +#~ msgstr "" +#~ "Muestra el número de ID de evento correspondiente en la tabla de base de " +#~ "datos." + +#~ msgid "Shows the event image, if available." +#~ msgstr "Muestra la imagen del evento, si está disponible." + +#~ msgid "Displays the start time in a 24 hours format (e.g. 16:30)." +#~ msgstr "" +#~ "Muestra la hora de inicio en formato de 24 horas (por ejemplo 16:30)." + +#~ msgid "Displays the end time in a 24 hours format (e.g. 18:30)." +#~ msgstr "Muestra el tiempo final en formato de 24 horas (por ejemplo 18:30)." + +#~ msgid "Displays the start time in a 12 hours format (e.g. 4:30 PM)." +#~ msgstr "" +#~ "Muestra la hora de inicio en formato de 12 horas (por ejemplo, 4:30 PM)." + +#~ msgid "Displays the end time in a 12 hours format (e.g. 6:30 PM)." +#~ msgstr "" +#~ "Muestra la hora final en un formato de 12 horas (por ejemplo 18:30)." + +#~ msgid "" +#~ "Events Manager allows extremely flexible date formatting by using PHP date syntax format " +#~ "characters along with placeholders." +#~ msgstr "" +#~ "Gestor de eventos permite el formato de fechas muy flexible mediante el " +#~ "uso de PHP " +#~ "fecha caracteres de formato de sintaxis , junto con marcadores de " +#~ "posición." + +#~ msgid "" +#~ "Prepend # or #@ before a valid PHP date syntax " +#~ "format character to show start and end date/time information respectively " +#~ "(e.g. #F will show the starting month name like \"January\", " +#~ "#@h shows the end hour)." +#~ msgstr "" +#~ "Anteponer # o #@ antes de una fecha válida de " +#~ "caracteres PHP sintaxis de formato para mostrar de inicio y finalización " +#~ "fecha / hora, respectivamente (por ejemplo, #F se mostrará " +#~ "el nombre del mes de partida como \"Enero\", # @ h, muestra la hora " +#~ "final)." + +#~ msgid "" +#~ "You can also create a date format without prepending # to each character " +#~ "by wrapping a valid php date() format in #{} or #@{} (e.g. #_{d/m/Y}). If there is no end date (or is same " +#~ "as start date), the value is not shown. This is useful if you want to " +#~ "show event end dates only on events that are longer than on day, e.g. " +#~ "#j #M #Y #@_{ u\n" +#~ "\t i l j M Y}." +#~ msgstr "" +#~ "También puede crear un formato de fecha sin anteponiendo # para cada " +#~ "personaje, envolviendo una fecha válida () de PHP en formato #{} o #@{} (por ejemplo, #_{d/m/Y} ). Si no " +#~ "hay una fecha de finalización (o es la misma que la fecha de inicio), el " +#~ "valor no se muestra. Esto es útil si desea mostrar las fechas de " +#~ "finalización del evento sólo en los eventos que son más largos que en el " +#~ "día, por ejemplo, #j #M #Y #@_{ u\n" +#~ "\t i lj MY} ." + +#~ msgid "" +#~ "Simply prints the event URL. You can use this placeholder to build your " +#~ "own customised links." +#~ msgstr "" +#~ "Simplemente imprime la URL del evento. Puede utilizar este marcador de " +#~ "posición para construir sus propios enlaces personalizados." + +#~ msgid "Shows the event image url, if available." +#~ msgstr "Muestra la url imagen del evento, si está disponible." + +#~ msgid "Displays the event name with a link to the event page." +#~ msgstr "Muestra el nombre del evento con un enlace a la página del evento." + +#~ msgid "" +#~ "Inserts a link to the admin or buddypress (if activated) edit event " +#~ "page, only if a user is logged in and is allowed to edit the event." +#~ msgstr "" +#~ "Inserta un enlace a la administración o BuddyPress (si está activado) " +#~ "página de edición de eventos, si un usuario está conectado y se le " +#~ "permite editar el evento." + +#~ msgid "" +#~ "Inserts a url to the admin or buddypress (if activated) edit event page, " +#~ "only if a user is logged in and is allowed to edit the event." +#~ msgstr "" +#~ "Inserta una url que el administrador o BuddyPress (si está activado) " +#~ "página de edición de eventos, si un usuario está conectado y se le " +#~ "permite editar el evento." + +#~ msgid "" +#~ "Events Manager allows you to create dynamic attributes to your events, " +#~ "which act as extra information fields for your events (e.g. \"Dress Code" +#~ "\"). For more information see our online documentation " +#~ "for more info on attributes." +#~ msgstr "" +#~ "Gestor de eventos le permite crear atributos dinámicos a sus eventos, que " +#~ "actúan como campos de información adicional para sus eventos (por " +#~ "ejemplo, \"Código de vestimenta\"). Para más información consulte nuestra documentación en línea para obtener más información sobre " +#~ "los atributos." + +#~ msgid "" +#~ "This key will appear as an option when adding attributes to your event." +#~ msgstr "" +#~ "Esta clave aparecerá como una opción al agregar atributos a su evento." + +#~ msgid "" +#~ "This key will appear as an option when adding attributes to your event. " +#~ "The text in the second braces will appear if the attribute is not defined " +#~ "or left blank for that event." +#~ msgstr "" +#~ "Esta clave aparecerá como una opción al agregar atributos a su evento. El " +#~ "texto de las llaves segundos aparecerá si el atributo no está definido o " +#~ "dejado en blanco para ese evento." + +#~ msgid "" +#~ "This key will appear as an option when adding attributes to your event. " +#~ "The second braces are optional and will use a select box with these " +#~ "values as input. If no valid value is defined, the first option is used." +#~ msgstr "" +#~ "Esta clave aparecerá como una opción al agregar atributos a su evento. " +#~ "Las llaves segundos son opcionales y se utiliza una caja de selección de " +#~ "estos valores como entrada. Si no hay ningún valor válido se define, la " +#~ "primera opción se utiliza." + +#~ msgid "" +#~ "These placeholders will only show if RSVP is enabled for the given event " +#~ "and in the events manager settings page. Spaces placeholders will default " +#~ "to 0" +#~ msgstr "" +#~ "Estos marcadores de posición sólo mostrará si RSVP está habilitada para " +#~ "el evento dado y en el gestor de eventos de configuración de la página. " +#~ "Marcadores de posición de los espacios por defecto a 0" + +#~ msgid "Adds a booking forms for this event." +#~ msgstr "Añade un formulario de reserva para este evento." + +#~ msgid "Shows available spaces for the event." +#~ msgstr "Muestra los espacios disponibles para el evento." + +#~ msgid "Shows the amount of currently booked spaces for the event." +#~ msgstr "" +#~ "Muestra la cantidad de espacios que actualmente reservado para el evento." + +#~ msgid "Shows the amount of pending spaces for the event." +#~ msgstr "Muestra la cantidad de espacios de espera para el evento." + +#~ msgid "Shows the total spaces for the event." +#~ msgstr "Muestra el número total de espacios para el evento." + +#~ msgid "Shows the list of user avatars attending events." +#~ msgstr "Muestra la lista de avatares de usuarios que asisten a los eventos." + +#~ msgid "" +#~ "A single button that will appear to logged in users, if they click on it, " +#~ "they apply for a booking. This button will only display if there is one " +#~ "ticket." +#~ msgstr "" +#~ "Un solo botón que aparecerá a los usuarios registrados, si hacen clic en " +#~ "él, se aplican de una reserva. Este botón sólo se muestra si hay un " +#~ "boleto." + +#~ msgid "" +#~ "Shows the url to the admin or buddypress (if activated) bookings " +#~ "management page for this event. Only shown if user is logged in and able " +#~ "to manage bookings." +#~ msgstr "" +#~ "Muestra la url a la administración o BuddyPress (si está activado) página " +#~ "de reservas de gestión de este evento. Sólo se muestra si el usuario está " +#~ "conectado y capaz de gestionar las reservas." + +#~ msgid "" +#~ "Shows a link to the admin or buddypress (if activated) bookings " +#~ "management page for this event. Only shown if user is logged in and able " +#~ "to manage bookings." +#~ msgstr "" +#~ "Muestra un enlace a la administración o BuddyPress (si está activado) " +#~ "página de reservas de gestión de este evento. Sólo se muestra si el " +#~ "usuario está conectado y capaz de gestionar las reservas." + +#~ msgid "" +#~ "The values here are taken from the chosen contact for the specific event, " +#~ "or the default contact in the settings page." +#~ msgstr "" +#~ "Los valores aquí se han obtenido del contacto elegido para el evento " +#~ "específico, o el contacto de forma predeterminada en la página de " +#~ "configuración." + +#~ msgid "" +#~ "Name of the contact person for this event (as shown in the dropdown when " +#~ "adding an event)." +#~ msgstr "" +#~ "Nombre de la persona de contacto para este evento (como se muestra en el " +#~ "menú desplegable cuando se añade un evento)." + +#~ msgid "Contact person's username." +#~ msgstr "Contactar con nombre de usuario de la persona." + +#~ msgid "E-mail of the contact person for this event." +#~ msgstr "E-mail de la persona de contacto para este evento." + +#~ msgid "" +#~ "Phone number of the contact person for this event. Can be set in the user " +#~ "profile page." +#~ msgstr "" +#~ "Número de teléfono de la persona de contacto para este evento. Se puede " +#~ "establecer en la página de perfil de usuario." + +#~ msgid "Contact person's avatar." +#~ msgstr "Contacto avatar de la persona." + +#~ msgid "" +#~ "Contact person's \"Profile\" link. Only works with BuddyPress enabled." +#~ msgstr "" +#~ "Persona de contacto \"Perfil\". Sólo funciona con BuddyPress habilitado." + +#~ msgid "Contact person's profile url. Only works with BuddyPress enabled." +#~ msgstr "" +#~ "Contacto url persona de perfil. Sólo funciona con BuddyPress habilitado." + +#~ msgid "Contact person's wordpress user ID." +#~ msgstr "Contact ID persona wordpress usuario." + +#~ msgid "Shows the category name of the event." +#~ msgstr "Muestra el nombre de la categoría del evento." + +#~ msgid "Shows the category ID of the event." +#~ msgstr "Muestra el ID de la categoría del evento." + +#~ msgid "Shows the location description." +#~ msgstr "Muestra la descripción de la ubicación." + +#~ msgid "Displays the location name." +#~ msgstr "Muestra el nombre de la ubicación." + +#~ msgid "Displays the town." +#~ msgstr "Muestra de la ciudad." + +#~ msgid "Displays the state/county." +#~ msgstr "Muestra el estado / país." + +#~ msgid "Displays the postcode." +#~ msgstr "Muestra el código postal." + +#~ msgid "Displays the region." +#~ msgstr "Muestra de la región." + +#~ msgid "Displays the country." +#~ msgstr "Muestra el país." + +#~ msgid "" +#~ "Displays a google map showing where the event is located (Will not show " +#~ "if maps are disabled in the settings page)" +#~ msgstr "" +#~ "Muestra un mapa de Google que muestra dónde se encuentra el caso (no se " +#~ "mostrará si los mapas son con discapacidad en la página de configuración)" + +#~ msgid "" +#~ "If you added a more tag to your location description, only the " +#~ "content before this tag will show (currently, no read more link is added)." +#~ msgstr "" +#~ "Si ha añadido una etiqueta más a la descripción de su ubicación, " +#~ "sólo el contenido antes de que esta etiqueta se muestran (en la " +#~ "actualidad, no leer más vínculo se agrega)." + +#~ msgid "Shows the location image." +#~ msgstr "Muestra la imagen de la ubicación." + +#~ msgid "Displays the location ID number." +#~ msgstr "Muestra el número ID de la ubicación." + +#~ msgid "" +#~ "Simply prints the location URL. You can use this placeholder to build " +#~ "your own customised links." +#~ msgstr "" +#~ "Simplemente imprime la dirección URL de ubicación. Puede utilizar este " +#~ "marcador de posición para construir sus propios enlaces personalizados." + +#~ msgid "Displays the location name with a link to the location page." +#~ msgstr "" +#~ "Muestra el nombre de la ubicación con un enlace a la página de " +#~ "localización." + +#~ msgid "" +#~ "You can show lists of other events that are being held at this location. " +#~ "The formatting of the list is the same as a normal events list." +#~ msgstr "" +#~ "Puede mostrar una lista de otros eventos que se celebran en este lugar. " +#~ "El formato de la lista es el mismo que una lista de eventos normales." + +#~ msgid "Will show a list of all past events at this location." +#~ msgstr "Mostrará una lista de todos los eventos pasados ​​en este lugar." + +#~ msgid "Will show a list of all future events at this location." +#~ msgstr "Mostrará una lista de todos los eventos futuros en este lugar." + +#~ msgid "Will show a list of all events at this location." +#~ msgstr "Mostrará una lista de todos los eventos en este lugar." + +#~ msgid "" +#~ "When a specific booking is displayed (on screen and on email), you can " +#~ "use these placeholders to show specific information about the booking. " +#~ "For contact details of the contact of this event, see the events " +#~ "placeholders." +#~ msgstr "" +#~ "Cuando una reserva específica se muestra (en la pantalla y en el correo " +#~ "electrónico), puede usar estos marcadores de posición para mostrar " +#~ "información específica acerca de la reserva. Para obtener más información " +#~ "póngase en contacto con el contacto de este evento, ver los marcadores de " +#~ "posición eventos." + +#~ msgid "Name of person who made the booking." +#~ msgstr "Nombre de la persona que realizó la reserva." + +#~ msgid "Email of person who made the booking." +#~ msgstr "Correo electrónico de la persona que realizó la reserva." + +#~ msgid "Phone number of person who made the booking." +#~ msgstr "Número de teléfono de la persona que realizó la reserva." + +#~ msgid "Number of spaces the person has booked." +#~ msgstr "Número de plazas de la persona que ha reservado." + +#~ msgid "Any specific comments made by the person who made the booking." +#~ msgstr "" +#~ "Comentarios específicos realizados por la persona que realizó la reserva." + +#~ msgid "" +#~ "Name of the ticket booked. Useful in single ticket mode, if multiple " +#~ "tickets are booked a random ticket is used." +#~ msgstr "" +#~ "Nombre del billete reservado. Útil en el modo de billete sencillo, si hay " +#~ "varias entradas reservado un billete al azar se utiliza." + +#~ msgid "" +#~ "Description of the ticket booked. Useful in single ticket mode, if " +#~ "multiple tickets are booked a random ticket is used." +#~ msgstr "" +#~ "Descripción del billete reservado. Útil en el modo de billete sencillo, " +#~ "si hay varias entradas reservado un billete al azar se utiliza." + +#~ msgid "" +#~ "Booked ticket price with currency symbol (e.g. $ 10.00). Useful in single " +#~ "ticket mode, if multiple tickets are booked a random ticket is used." +#~ msgstr "" +#~ "Billete reservado precio con el símbolo de moneda (por ejemplo, $ 10,00). " +#~ "Útil en el modo de billete sencillo, si hay varias entradas reservado un " +#~ "billete al azar se utiliza." + +#~ msgid "" +#~ "A list of booked tickets. You can modify this by using template files and " +#~ "modifying templates/emails/bookingtickets.php" +#~ msgstr "" +#~ "Una lista de los billetes reservados. Puede modificar esta usando " +#~ "archivos de plantilla y la modificación de plantillas / emails / " +#~ "bookingtickets.php" + +#~ msgid "" +#~ "People are able to manage their bookings. Below are some placeholder " +#~ "which automatically provides correctly formatted urls" +#~ msgstr "" +#~ "Las personas son capaces de manejar sus reservas. A continuación se " +#~ "presentan algunos de marcador de posición que proporciona automáticamente " +#~ "las direcciones URL con el formato correcto" + +#~ msgid "URL to page showing that users booked events." +#~ msgstr "URL de la página que muestra que los usuarios reservado eventos." + +#~ msgid "http://wp-events-plugin.com" +#~ msgstr "http://wp-events-plugin.com" + +#~ msgid "" +#~ "Event registration and booking management for Wordpress. Recurring " +#~ "events, locations, google maps, rss, ical, booking registration and more!" +#~ msgstr "" +#~ "Registro de eventos y gestión de reservas para Wordpress. Acontecimientos " +#~ "que se repiten, los lugares, los mapas de Google, RSS, iCal, registro de " +#~ "la Reserva y mucho más!" + +#~ msgid "Marcus Sykes" +#~ msgstr "Marcus Sykes" diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-cs_CZ.mo b/wp-content/plugins/events-manager/includes/langs/dbem-cs_CZ.mo new file mode 100644 index 0000000..17d8216 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-cs_CZ.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-cs_CZ.po b/wp-content/plugins/events-manager/includes/langs/dbem-cs_CZ.po new file mode 100644 index 0000000..12670df --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-cs_CZ.po @@ -0,0 +1,5906 @@ +#@ dbem +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.171\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-09-20 20:44:48+00:00\n" +"PO-Revision-Date: 2012-02-21 18:53+0100\n" +"Last-Translator: Marcus Sykes \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" + +# @ dbem +#: buddypress/bp-em-activity.php:48 +#, php-format +msgid "%s added the event %s" +msgstr "%s pÅ™idáno akce %s" + +# @ dbem +#: buddypress/bp-em-activity.php:86 +#, php-format +msgid "%s is attending %s." +msgstr "%s se úÄastní %s." + +# @ dbem +#: buddypress/bp-em-activity.php:88 +#, php-format +msgid "%s will not be attending %s anymore." +msgstr "%s nebudou navÅ¡tÄ›vovat %s jeÅ¡tÄ›." + +# @ dbem +#: buddypress/bp-em-activity.php:94 +#, php-format +msgid "%s is attending %s of the group %s." +msgstr "%s se úÄastní %s skupiny %s." + +# @ dbem +#: buddypress/bp-em-activity.php:96 +#, php-format +msgid "%s will not be attending %s of group %s anymore." +msgstr "%s nebudou navÅ¡tÄ›vovat %s skupiny %s jeÅ¡tÄ›." + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-options.php:397 +#: admin/em-options.php:435 +#: admin/em-options.php:850 +#: buddypress/bp-em-core.php:12 +#: buddypress/bp-em-core.php:51 +#: buddypress/bp-em-core.php:79 +#: buddypress/bp-em-core.php:147 +#: buddypress/bp-em-core.php:174 +#: buddypress/screens/profile.php:27 +#: em-actions.php:102 +#: em-install.php:336 +#: em-install.php:379 +#: em-install.php:429 +#: em-install.php:430 +#: em-install.php:454 +#: em-install.php:672 +#: em-posts.php:116 +#: em-posts.php:119 +#: em-posts.php:121 +#: em-template-tags.php:179 +#: widgets/em-events.php:13 +msgid "Events" +msgstr "události" + +# @ default +# @ dbem +#: admin/em-options.php:1031 +#: em-functions.php:473 +msgid "Yes" +msgstr "ano" + +# @ default +# @ dbem +#: admin/em-options.php:1032 +#: em-functions.php:473 +msgid "No" +msgstr "ne" + +# @ dbem +#: buddypress/bp-em-notifications.php:24 +#: buddypress/bp-em-notifications.php:26 +#: buddypress/bp-em-notifications.php:33 +#: buddypress/bp-em-notifications.php:35 +#: buddypress/bp-em-notifications.php:41 +#: buddypress/bp-em-notifications.php:43 +#: em-install.php:525 +#: em-install.php:709 +#: em-install.php:762 +msgid "My Bookings" +msgstr "moje rezervace" + +# @ dbem +#: buddypress/bp-em-notifications.php:24 +msgid "You have a pending booking" +msgstr "Máte Äekající rezervaci" + +# @ dbem +#: buddypress/bp-em-notifications.php:26 +#, php-format +msgid "You have %s pending bookings" +msgstr "jste %s až Rezervace" + +# @ dbem +#: buddypress/bp-em-notifications.php:33 +msgid "You have a confirmed booking" +msgstr "Máte potvrzenou rezervaci" + +# @ dbem +#: buddypress/bp-em-notifications.php:35 +#, php-format +msgid "You have %s confirmed bookings" +msgstr "jste %s potvrzené rezervace" + +# @ dbem +#: buddypress/bp-em-notifications.php:41 +msgid "A user cancelled a booking" +msgstr "ZruÅ¡eno uživatelem rezervaci" + +# @ dbem +#: buddypress/bp-em-notifications.php:43 +#, php-format +msgid "%s users cancelled bookings." +msgstr "%s Uživatelé zruÅ¡ena rezervace." + +# @ dbem +#: buddypress/bp-em-core.php:122 +#: buddypress/screens/my-locations.php:32 +msgid "My Locations" +msgstr "moje stránka" + +# @ dbem +#: buddypress/screens/my-locations.php:49 +#: em-events.php:166 +#: em-posts.php:216 +msgid "Edit Location" +msgstr "Upravit umístÄ›ní" + +# @ dbem +#: buddypress/screens/my-locations.php:47 +#: em-events.php:164 +#: em-posts.php:213 +msgid "Add Location" +msgstr "pÅ™idat místo" + +# @ dbem +#: buddypress/screens/group-events.php:20 +#: buddypress/screens/my-group-events.php:20 +msgid "Group Events" +msgstr "skupinových akcí" + +# @ dbem +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "PrávÄ› prohlížíte vaší veÅ™ejné stránce, to je to, co ostatní uvidí." + +# @ dbem +#: buddypress/bp-em-core.php:110 +#: buddypress/screens/my-events.php:32 +#: templates/buddypress/profile.php:6 +msgid "My Events" +msgstr "moje události" + +# @ dbem +#: buddypress/screens/my-events.php:50 +#: em-events.php:153 +#: em-posts.php:125 +msgid "Edit Event" +msgstr "Upravit událost" + +# @ dbem +#: buddypress/screens/my-events.php:53 +#: em-events.php:156 +#: em-posts.php:122 +#: templates/buddypress/profile.php:19 +msgid "Add Event" +msgstr "pÅ™idat událost" + +# @ dbem +#: buddypress/bp-em-core.php:99 +#: buddypress/screens/attending.php:23 +#: templates/buddypress/profile.php:24 +msgid "Events I'm Attending" +msgstr "Události jsem ÚÄast" + +# @ dbem +#: buddypress/bp-em-core.php:134 +#: buddypress/screens/my-bookings.php:30 +msgid "My Event Bookings" +msgstr "můj událost rezervace" + +# @ dbem +#: buddypress/bp-em-core.php:90 +msgid "My Profile" +msgstr "Můj profil" + +# @ dbem +#: em-posts.php:124 +#: em-posts.php:169 +#: em-posts.php:215 +#: templates/forms/event/bookings.php:86 +msgid "Edit" +msgstr "Upravit" + +# @ dbem +#: admin/bookings/em-events.php:101 +#: admin/bookings/em-pending.php:101 +#: admin/bookings/em-person.php:86 +#: admin/em-ms-options.php:162 +#: admin/em-options.php:293 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:858 +#: admin/em-options.php:920 +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#: admin/em-options.php:1364 +#: classes/em-event-posts-admin.php:163 +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-event.php:655 +#: classes/em-event.php:1159 +#: em-actions.php:102 +#: em-install.php:386 +#: em-install.php:416 +#: em-posts.php:120 +#: templates/forms/event-editor.php:12 +#: templates/templates/my-bookings.php:46 +msgid "Event" +msgstr "událost" + +# @ dbem +#: templates/templates/ical.php:12 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "kalendář" + +# @ dbem +#: widgets/em-calendar.php:17 +msgid "Display your events in a calendar widget." +msgstr "Display your events in a calendar widget." + +# @ dbem +#: widgets/em-calendar.php:18 +msgid "Events Calendar" +msgstr "Kalendář akcí" + +# @ dbem +#: widgets/em-calendar.php:60 +#: widgets/em-events.php:97 +#: widgets/em-locations.php:72 +msgid "Title" +msgstr "Titul" + +# @ dbem +#: widgets/em-calendar.php:64 +msgid "Show Long Events?" +msgstr "Zobrazit Dlouhá události?" + +# @ dbem +#: widgets/em-calendar.php:68 +#: widgets/em-events.php:145 +msgid "Category IDs" +msgstr "ID kategorií" + +# @ dbem +#: widgets/em-calendar.php:70 +#: widgets/em-events.php:147 +msgid "1,2,3 or 2 (0 = all)" +msgstr "1,2,3 nebo 2 (0 = vÅ¡echny)" + +# @ dbem +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "akce lokality" + +# @ dbem +#: widgets/em-locations.php:24 +msgid "Display a list of event locations on Events Manager." +msgstr "Zobrazit seznam lokalit akce na události Å™editel." + +# @ dbem +#: widgets/em-locations.php:49 +msgid "No locations" +msgstr "žádná místa" + +# @ dbem +#: widgets/em-locations.php:76 +msgid "Show number of locations" +msgstr "Zobrazit poÄet míst" + +# @ dbem +#: widgets/em-locations.php:80 +msgid "Scope of the locations" +msgstr "Rozsah míst" + +# @ dbem +#: widgets/em-locations.php:103 +msgid "Order of the locations" +msgstr "PoÅ™adí míst" + +# @ dbem +#: widgets/em-events.php:150 +#: widgets/em-locations.php:110 +msgid "List item format" +msgstr "Seznam položek ve formátu" + +# @ dbem +#: widgets/em-events.php:22 +#: widgets/em-events.php:73 +#: widgets/em-events.php:159 +msgid "all events" +msgstr "vÅ¡echny akce" + +# @ dbem +#: widgets/em-events.php:30 +msgid "Display a list of events on Events Manager." +msgstr "Zobrazit seznam událostí, o událostech Å™editel." + +# @ dbem +#: widgets/em-events.php:70 +msgid "No events" +msgstr "žádné události" + +# @ dbem +#: widgets/em-events.php:101 +msgid "Number of events" +msgstr "PoÄet akcí" + +# @ dbem +#: widgets/em-events.php:106 +msgid "Scope" +msgstr "rozsah" + +# @ dbem +#: widgets/em-events.php:116 +#: widgets/em-locations.php:90 +msgid "Order By" +msgstr "SeÅ™adit podle" + +# @ dbem +#: widgets/em-events.php:25 +msgid "start date, start time, event name" +msgstr "datum, Äas zaÄátku, název události" + +# @ dbem +#: widgets/em-events.php:26 +msgid "name, start date, start time" +msgstr "jméno, datum, Äas zahájení" + +# @ dbem +#: widgets/em-events.php:27 +msgid "name, end date, end time" +msgstr "jméno, datum ukonÄení, konec Äasu" + +# @ dbem +#: widgets/em-events.php:28 +msgid "end date, end time, event name" +msgstr "datum ukonÄení, konec Äasu, názvu akce" + +# @ dbem +#: widgets/em-events.php:129 +msgid "Order" +msgstr "poÅ™adí" + +# @ dbem +#: admin/em-options.php:476 +#: admin/em-options.php:479 +#: admin/em-options.php:530 +#: admin/em-options.php:627 +#: admin/em-options.php:630 +#: admin/em-options.php:677 +#: admin/em-options.php:680 +#: admin/em-options.php:767 +#: admin/em-options.php:770 +#: widgets/em-events.php:133 +#: widgets/em-locations.php:105 +msgid "Ascending" +msgstr "vzestupnÄ›" + +# @ dbem +#: admin/em-options.php:477 +#: admin/em-options.php:480 +#: admin/em-options.php:531 +#: admin/em-options.php:628 +#: admin/em-options.php:631 +#: admin/em-options.php:678 +#: admin/em-options.php:681 +#: admin/em-options.php:768 +#: admin/em-options.php:771 +#: widgets/em-events.php:134 +#: widgets/em-locations.php:106 +msgid "Descending" +msgstr "klesající" + +# @ dbem +#: widgets/em-events.php:154 +msgid "Show all events link at bottom?" +msgstr "Zobrazit vÅ¡echny akce link na dnÄ›?" + +# @ dbem +#: widgets/em-events.php:158 +msgid "All events link text?" +msgstr "VÅ¡echny akce text odkazu?" + +# @ dbem +#: admin/bookings/em-events.php:14 +#: em-functions.php:160 +msgid "All events" +msgstr "vÅ¡echny akce" + +# @ dbem +#: admin/bookings/em-events.php:15 +#: em-functions.php:161 +msgid "Future events" +msgstr "budoucí události" + +# @ dbem +#: admin/bookings/em-events.php:13 +#: em-functions.php:162 +msgid "Past events" +msgstr "UskuteÄnÄ›né akce" + +# @ dbem +#: em-functions.php:163 +msgid "Today's events" +msgstr "DneÅ¡ní události" + +# @ dbem +#: em-functions.php:164 +msgid "Tomorrow's events" +msgstr "ZítÅ™ejší Události" + +# @ dbem +#: em-functions.php:165 +msgid "Events this month" +msgstr "Události tohoto mÄ›síce" + +# @ dbem +#: em-functions.php:166 +msgid "Events next month" +msgstr "Události příští mÄ›síc" + +# @ dbem +#: em-functions.php:167 +msgid "Events current and next month" +msgstr "Události aktuální a příští mÄ›síc" + +# @ dbem +#: em-functions.php:168 +msgid "Events within 2 months" +msgstr "Události ve lhůtÄ› 2 mÄ›síců" + +# @ dbem +#: em-functions.php:169 +msgid "Events within 3 months" +msgstr "Události do 3 mÄ›síců" + +# @ dbem +#: em-functions.php:170 +msgid "Events within 6 months" +msgstr "Události do 6 mÄ›síců" + +# @ dbem +#: em-functions.php:171 +msgid "Events within 12 months" +msgstr "Události ve lhůtÄ› 12 mÄ›síců" + +# @ dbem +#: em-functions.php:224 +msgid "Trying to perform an illegal action." +msgstr "Snažím se hrát protiprávního jednání." + +# @ dbem +#: em-functions.php:296 +msgid "ERROR: Please enter a username." +msgstr "ERROR:Zadejte prosím uživatelské jméno." + +# @ dbem +#: em-functions.php:298 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "ERROR:Toto uživatelské jméno je neplatné, protože používá nepovolené znaky. Zadejte prosím platné uživatelské jméno." + +# @ default +#: em-functions.php:301 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "ERROR: Toto uživatelské jméno je již registrován, prosím vybrat jinou." + +# @ dbem +#: em-actions.php:270 +#: em-functions.php:306 +msgid "ERROR: Please type your e-mail address." +msgstr "ERROR: Prosím, zadejte svou e-mailovou adresu." + +# @ dbem +#: em-actions.php:273 +#: em-functions.php:308 +msgid "ERROR: The email address isn’t correct." +msgstr "ERROR: E-mailová adresa není správná." + +# @ default +#: em-functions.php:311 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "ERROR:Tento e-mail je již registrován, prosím vybrat jinou." + +# @ dbem +#: em-functions.php:331 +#, php-format +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "ERROR: Nelze zaregistrovat si... obraÅ¥te se na webmaster !" + +# @ dbem +#: em-functions.php:366 +#, php-format +msgid "New user registration on your blog %s:" +msgstr "Registrace nového uživatele na svém blogu %s:" + +# @ dbem +#: em-functions.php:367 +#, php-format +msgid "Username: %s" +msgstr "Uživatelské jméno: %s" + +# @ dbem +#: em-functions.php:368 +#, php-format +msgid "E-mail: %s" +msgstr "E-mail: %s" + +# @ dbem +#: em-functions.php:369 +#, php-format +msgid "[%s] New User Registration" +msgstr "[%s] Registrace nového uživatele" + +# @ dbem +#: em-functions.php:380 +#, php-format +msgid "[%s] Your username and password" +msgstr "[%s]VaÅ¡e uživatelské jméno a heslo" + +# @ dbem +#: classes/em-ticket.php:47 +msgid "Standard Ticket" +msgstr "standardní vstupenek" + +# @ dbem +#: classes/em-booking.php:134 +#: classes/em-ticket-booking.php:69 +#: classes/em-ticket.php:97 +msgid "Changes saved" +msgstr "zmÄ›ny uloženy" + +# @ dbem +#: classes/em-ticket.php:102 +msgid "Ticket created" +msgstr "Rezervace vstupenek vytvoÅ™il" + +# @ dbem +#: classes/em-ticket.php:105 +#: classes/em-ticket.php:106 +#: classes/em-ticket.php:111 +#: classes/em-ticket.php:112 +msgid "There was a problem saving the ticket." +msgstr "DoÅ¡lo k problému pÅ™i ukládání lístek." + +# @ dbem +# @ default +#: classes/em-event.php:461 +#: classes/em-ticket-booking.php:113 +#: classes/em-ticket.php:161 +msgid "Missing fields: " +msgstr "Chybí pole:" + +# @ dbem +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "Nemůžete mazat lístek, který má rezervaci na to." + +# @ dbem +#: classes/em-location.php:106 +msgid "The location address" +msgstr "Adresu místa" + +# @ dbem +#: classes/em-location.php:106 +msgid "The location town" +msgstr "UmístÄ›ní mÄ›sta" + +# @ dbem +#: classes/em-location.php:106 +msgid "The country" +msgstr "zemÄ›" + +# @ dbem +#: classes/em-event.php:428 +#: classes/em-location.php:224 +#: classes/em-location.php:239 +#: classes/em-location.php:241 +msgid " is required." +msgstr "Je nutné." + +# @ dbem +# @ default +#: admin/em-bookings.php:109 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:334 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:942 +#: admin/em-options.php:1382 +#: classes/em-event-posts-admin.php:95 +#: classes/em-event-posts-admin.php:214 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#: classes/em-location.php:618 +#: em-actions.php:180 +#: em-posts.php:211 +#: templates/buddypress/group-events.php:43 +#: templates/buddypress/my-group-events.php:43 +#: templates/forms/location-editor.php:32 +#: templates/tables/events.php:52 +msgid "Location" +msgstr "umístÄ›ní" + +# @ dbem +#: admin/em-ms-options.php:173 +#: admin/em-options.php:654 +#: admin/em-options.php:944 +#: admin/em-options.php:945 +#: classes/em-location-post-admin.php:59 +#: classes/em-location.php:332 +#: classes/em-location.php:342 +#: templates/forms/location-editor.php:6 +msgid "location" +msgstr "umístÄ›ní" + +# @ dbem +#: classes/em-location.php:348 +#, php-format +msgid "You do not have permission to create/edit %s." +msgstr "Nemáte oprávnÄ›ní k vytváření / editaci %s." + +# @ dbem +#: admin/em-ms-options.php:167 +#: admin/em-ms-options.php:172 +#: admin/em-ms-options.php:173 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:581 +#: admin/em-options.php:582 +#: admin/em-options.php:595 +#: admin/em-options.php:599 +#: admin/em-options.php:649 +#: admin/em-options.php:650 +#: admin/em-options.php:693 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: admin/em-options.php:1384 +#: admin/em-options.php:1385 +#: admin/em-options.php:1386 +#: admin/em-options.php:1387 +#: admin/em-options.php:1388 +#: admin/em-options.php:1389 +#: classes/em-location.php:348 +#: events-manager.php:309 +#: events-manager.php:310 +#: events-manager.php:311 +#: events-manager.php:312 +#: events-manager.php:313 +#: events-manager.php:314 +#: events-manager.php:315 +msgid "locations" +msgstr "míst" + +# @ dbem +#: em-actions.php:104 +#, php-format +msgid "%s successfully deleted." +msgstr "%s úspěšnÄ› odstranÄ›na." + +# @ dbem +#: em-actions.php:107 +#, php-format +msgid "%s could not be deleted." +msgstr "%s nelze odstranit." + +# @ dbem +#: classes/em-booking.php:143 +#: classes/em-booking.php:144 +#: classes/em-booking.php:152 +#: classes/em-booking.php:163 +#: classes/em-booking.php:169 +#: classes/em-tickets-bookings.php:69 +#: classes/em-tickets-bookings.php:70 +msgid "There was a problem saving the booking." +msgstr "DoÅ¡lo k problému pÅ™i ukládání rezervace." + +# @ dbem +#: classes/em-tickets-bookings.php:99 +#: em-install.php:489 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "Objednávka nemůže být, nestaÄí prostory k dispozici!" + +# @ dbem +#: classes/em-tickets-bookings.php:163 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +#, php-format +msgid "You do not have the rights to manage this %s." +msgstr "Nemáte právo spravovat tento %s." + +# @ dbem +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#: classes/em-booking.php:414 +#: classes/em-booking.php:416 +#: classes/em-bookings.php:108 +#: classes/em-tickets-bookings.php:163 +msgid "Booking" +msgstr "Rezervace" + +# @ dbem +#: admin/em-bookings.php:154 +#: admin/em-bookings.php:215 +#: admin/em-options.php:616 +#: admin/em-options.php:666 +#: admin/em-options.php:756 +#: classes/em-person.php:76 +#: templates/buddypress/group-events.php:41 +#: templates/buddypress/my-group-events.php:41 +#: templates/forms/bookingform/booking-fields.php:10 +#: templates/forms/tickets-form.php:4 +#: templates/tables/events.php:50 +#: templates/tables/locations.php:34 +#: templates/tables/locations.php:43 +#: templates/templates/bookings-event-printable.php:24 +msgid "Name" +msgstr "jméno" + +# @ dbem +#: classes/em-person.php:77 +msgid "Email" +msgstr "e-mail" + +# @ dbem +#: classes/em-people.php:28 +#: classes/em-person.php:78 +#: templates/forms/bookingform/booking-fields.php:14 +msgid "Phone" +msgstr "telefon" + +# @ dbem +#: classes/em-ticket-booking.php:78 +msgid "Ticket booking created" +msgstr "Rezervace vstupenek vytvoÅ™il" + +# @ dbem +#: classes/em-ticket-booking.php:85 +#: classes/em-ticket-booking.php:86 +#: classes/em-ticket-booking.php:91 +#: classes/em-ticket-booking.php:92 +msgid "There was a problem saving the ticket booking." +msgstr "DoÅ¡lo k problému pÅ™i ukládání rezervace vstupenek." + +# @ dbem +#: admin/em-options.php:744 +#: admin/em-options.php:973 +#: admin/em-options.php:974 +msgid "category" +msgstr "kategorie" + +# @ dbem +#: classes/em-bookings.php:108 +#, php-format +msgid "%s created." +msgstr "%s vytvoÅ™en." + +# @ dbem +#: classes/em-bookings.php:256 +#: classes/em-bookings.php:262 +#, php-format +msgid "Bookings %s. Mails Sent." +msgstr "Rezervace %s. Maily odeslané." + +# @ dbem +#: classes/em-bookings.php:266 +msgid "An error occurred." +msgstr "DoÅ¡lo k chybÄ›." + +# @ dbem +#: admin/bookings/em-events.php:136 +#: classes/em-booking.php:100 +#: classes/em-event-posts-admin.php:139 +#: classes/em-event.php:244 +#: templates/buddypress/group-events.php:94 +#: templates/buddypress/my-group-events.php:88 +#: templates/tables/events.php:17 +#: templates/tables/events.php:97 +msgid "Pending" +msgstr "až do" + +# @ dbem +#: classes/em-booking.php:101 +#: classes/em-event.php:245 +msgid "Approved" +msgstr "schválený" + +# @ dbem +#: classes/em-booking.php:102 +msgid "Rejected" +msgstr "Odmítnuto" + +# @ dbem +#: classes/em-booking.php:103 +#: em-actions.php:358 +msgid "Cancelled" +msgstr "ZruÅ¡ené" + +# @ dbem +#: classes/em-booking.php:104 +msgid "Awaiting Online Payment" +msgstr "ÄŒeká se on-line platby" + +# @ dbem +#: classes/em-booking.php:105 +msgid "Awaiting Payment" +msgstr "Äeká platby" + +# @ dbem +#: classes/em-booking.php:139 +msgid "Your booking has been recorded" +msgstr "VaÅ¡e rezervace byla zaznamenána" + +# @ dbem +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#, php-format +msgid "You cannot manage this %s." +msgstr "Nemůžete ovládat tento %s." + +# @ dbem +#: classes/em-booking.php:222 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Snažíte se kniha neexistující vstupenky na tuto akci." + +# @ dbem +#: classes/em-booking.php:414 +#, php-format +msgid "%s deleted" +msgstr "%s vymazány" + +# @ dbem +#: classes/em-booking.php:416 +#, php-format +msgid "%s could not be deleted" +msgstr "%s nelze odstranit" + +# @ dbem +#: classes/em-booking.php:462 +msgid "Not approved, spaces full." +msgstr "Které nebyly schváleny, prostor plný." + +# @ dbem +#: classes/em-booking.php:470 +#, php-format +msgid "Booking %s." +msgstr "Rezervace %s." + +# @ dbem +#: classes/em-booking.php:473 +msgid "Mail Sent." +msgstr "poÅ¡ta odeslán." + +# @ dbem +#: classes/em-booking.php:476 +#: classes/em-booking.php:477 +msgid "ERROR : Mail Not Sent." +msgstr "ERROR: poÅ¡ta odeslána." + +# @ dbem +#: classes/em-booking.php:483 +#: classes/em-booking.php:484 +#, php-format +msgid "Booking could not be %s." +msgstr "Rezervace nemůže být %s." + +# @ dbem +#: classes/em-booking.php:499 +msgid "Booking note successfully added." +msgstr "Objednávka byla úspěšnÄ› pÅ™idána poznámka." + +# @ dbem +#: classes/em-booking.php:636 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "Potvrzovací e-mail nelze odeslat na kontaktní osobu. Žadatel o registraci by se dostali své e-maily (pouze admin vidÄ›t varování)." + +# @ dbem +#: classes/em-booking.php:643 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "Potvrzovací e-mail nelze odeslat na admin. Žadatel o registraci by se dostali své e-maily (pouze admin vidÄ›t varování)." + +# @ dbem +#: admin/em-options.php:971 +#: templates/buddypress/group-events.php:112 +#: templates/buddypress/my-group-events.php:106 +msgid "Category" +msgstr "kategorie" + +# @ dbem +#: admin/em-options.php:708 +#: admin/em-options.php:712 +#: admin/em-options.php:721 +#: admin/em-options.php:783 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: events-manager.php:318 +#: events-manager.php:319 +msgid "categories" +msgstr "kategorie" + +# @ dbem +#: classes/em-tickets.php:98 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "Nemůžete mazat Vstupenky Pokud existují nÄ›jaké rezervace s nimi. Prosím smazat rezervací napÅ™ed." + +# @ dbem +#: classes/em-tickets.php:124 +msgid "Standard" +msgstr "standardní" + +# @ dbem +#: classes/em-people.php:19 +msgid "User deleted by administrators" +msgstr "Uživatel smazán správci" + +# @ dbem +#: classes/em-event-post-admin.php:37 +msgid "WARNING: This is a recurring event." +msgstr "UPOZORNÄšNÃ: Jedná se o opakující se události." + +# @ dbem +#: classes/em-event-post-admin.php:38 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "ZmÄ›ny na tuto událost způsobí, že vÅ¡echny recidivy této akce bude odstranÄ›n a znovu a pÅ™edchozí rezervace budou vymazány! Můžete upravovat jednotlivé recidivy a odlouÄit je s tímto opakované události." + +# @ dbem +#: classes/em-event-post-admin.php:41 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "VAROVÃNÃ: Toto je opakování v souboru opakující se události." + +# @ dbem +#: classes/em-event-post-admin.php:48 +#, php-format +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "UPOZORNÄšNÃ: Jedná se o akce, které patří do skupiny \"%s\". Druhá skupina administrátoÅ™i mohou také zmÄ›nit tuto událost." + +# @ dbem +#: classes/em-event.php:617 +msgid "Something went wrong with the recurrence update..." +msgstr "NÄ›co se pokazilo na opakování aktualizovat..." + +# @ dbem +#: classes/em-event.php:617 +msgid "There was a problem saving the recurring events." +msgstr "DoÅ¡lo k problému pÅ™i ukládání opakujících se událostí." + +# @ dbem +#: classes/em-event.php:655 +#, php-format +msgid "%s successfully duplicated." +msgstr "%s úspěšnÄ› duplicitní." + +# @ dbem +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:506 +#: admin/em-options.php:1395 +#: admin/em-options.php:1396 +#: classes/em-event-post-admin.php:85 +#: classes/em-event.php:582 +#: classes/em-event.php:594 +msgid "event" +msgstr "událost" + +# @ dbem +#: classes/em-event.php:442 +msgid "Events cannot start after they end." +msgstr "Události nelze spustit po ukonÄení." + +# @ dbem +#: classes/em-event.php:447 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Termíny musí mít správné formátování. Použijte ke dni stanovenému pro výbÄ›r." + +# @ dbem +#: classes/em-event.php:1255 +#: templates/forms/bookingform/ticket-single.php:21 +#: templates/forms/bookingform/tickets-list.php:28 +msgid "N/A" +msgstr "N/A" + +# @ dbem +#: classes/em-event.php:1265 +msgid "Profile" +msgstr "profil" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Sunday" +msgstr "nedÄ›le" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Monday" +msgstr "pondÄ›lí" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Tuesday" +msgstr "úterý" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Wednesday" +msgstr "stÅ™eda" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Thursday" +msgstr "Ätvrtek" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Friday" +msgstr "pátek" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Saturday" +msgstr "sobota" + +# @ dbem +#: classes/em-event.php:1703 +#, php-format +msgid "the first %s of the month" +msgstr "první %s mÄ›síce" + +# @ dbem +#: classes/em-event.php:1703 +#, php-format +msgid "the second %s of the month" +msgstr "druhé %s mÄ›síce" + +# @ dbem +#: classes/em-event.php:1703 +#, php-format +msgid "the third %s of the month" +msgstr "the third %s mÄ›síce" + +# @ dbem +#: classes/em-event.php:1703 +#, php-format +msgid "the fourth %s of the month" +msgstr "Ätvrtý %s mÄ›síce" + +# @ dbem +#: classes/em-event.php:1703 +#, php-format +msgid "the last %s of the month" +msgstr "poslední %s mÄ›síce" + +# @ dbem +#: classes/em-event.php:1704 +#, php-format +msgid "From %1$s to %2$s" +msgstr "z %1$s na %2$s" + +# @ dbem +#: classes/em-event.php:1706 +msgid "everyday" +msgstr "každodenní" + +# @ dbem +#: classes/em-event.php:1708 +#, php-format +msgid "every %s days" +msgstr "každý %s dnů" + +# @ dbem +#: classes/em-event.php:1717 +msgid "every week" +msgstr "každý týden" + +# @ dbem +#: classes/em-event.php:1719 +#, php-format +msgid "every %s weeks" +msgstr "každý %s týdnů" + +# @ dbem +#: classes/em-event.php:1730 +#, php-format +msgid "every %s months" +msgstr "každý %s mÄ›síců" + +# @ dbem +#: classes/em-object.php:872 +msgid "The image file is too big! Maximum size:" +msgstr "Obrazový soubor je příliÅ¡ velký! Maximální velikost:" + +# @ dbem +#: classes/em-object.php:877 +msgid "The image is too big! Maximum size allowed:" +msgstr "Obraz je příliÅ¡ velký! Maximální povolená velikost:" + +# @ dbem +#: classes/em-object.php:880 +msgid "The image is in a wrong format!" +msgstr "Obraz je ve Å¡patném formátu!" + +# @ dbem +#: classes/em-mailer.php:84 +msgid "Please supply a valid email format." +msgstr "PoskytnÄ›te prosím svůj e-mail ve formátu." + +# @ dbem +#: admin/em-options.php:1201 +msgid "Booking cancelled" +msgstr "Rezervace zruÅ¡ena" + +# @ dbem +#: em-actions.php:370 +msgid "You must log in to cancel your booking." +msgstr "Musíte se pÅ™ihlásit zruÅ¡it svou rezervaci." + +# @ dbem +#: admin/em-bookings.php:251 +#: templates/forms/bookingform/tickets-list.php:8 +msgid "Ticket Type" +msgstr "Typ letenky" + +# @ dbem +#: admin/em-bookings.php:156 +#: admin/em-bookings.php:253 +#: templates/forms/bookingform/ticket-single.php:9 +#: templates/forms/bookingform/tickets-list.php:10 +#: templates/forms/event/bookings.php:30 +#: templates/forms/ticket-form.php:9 +#: templates/forms/tickets-form.php:6 +msgid "Price" +msgstr "cena" + +# @ dbem +#: admin/bookings/em-cancelled.php:87 +#: admin/bookings/em-confirmed.php:88 +#: admin/bookings/em-pending.php:105 +#: admin/bookings/em-person.php:87 +#: admin/bookings/em-rejected.php:87 +#: admin/em-bookings.php:157 +#: admin/em-bookings.php:252 +#: templates/forms/bookingform/ticket-single.php:15 +#: templates/forms/bookingform/tickets-list.php:12 +#: templates/forms/ticket-form.php:11 +#: templates/templates/bookings-event-printable.php:27 +#: templates/templates/my-bookings.php:48 +msgid "Spaces" +msgstr "prostory" + +# @ dbem +#: admin/em-bookings.php:311 +#: templates/forms/bookingform/booking-fields.php:24 +#: templates/templates/bookings-event-printable.php:28 +msgid "Comment" +msgstr "komentář" + +# @ dbem +#: templates/placeholders/bookingform.php:54 +msgid "Send your booking" +msgstr "PoÅ¡lete svou rezervaci" + +# @ dbem +#: templates/placeholders/bookingform.php:71 +msgid "No more tickets available at this time." +msgstr "Žádné další vstupenky k dispozici v tomto okamžiku." + +# @ dbem +#: templates/forms/ticket-form.php:12 +msgid "If blank, there's no space limit." +msgstr "Pokud je prázdné, není prostor limit." + +# @ dbem +#: templates/forms/ticket-form.php:15 +msgid "Available from" +msgstr "K dispozici od" + +# @ dbem +#: templates/forms/event/recurring-when.php:56 +#: templates/forms/event/recurring-when.php:63 +#: templates/forms/event/when-with-recurring.php:17 +#: templates/forms/event/when-with-recurring.php:18 +#: templates/forms/event/when-with-recurring.php:26 +#: templates/forms/event/when.php:11 +#: templates/forms/event/when.php:18 +#: templates/forms/ticket-form.php:18 +msgid "to" +msgstr "na" + +# @ dbem +#: templates/forms/ticket-form.php:21 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "PÅ™idat zaÄátek nebo konec data (nebo obojí) uložit Äasového omezení dostupnosti vstupenek. Nechte buÄ prázdné, bez horní / dolní mez." + +# @ dbem +#: templates/forms/ticket-form.php:24 +msgid "Bookings must order between" +msgstr "Rezervace musí být, aby mezi" + +# @ dbem +#: templates/forms/ticket-form.php:26 +#: templates/templates/events-search.php:38 +msgid "and" +msgstr "a" + +# @ dbem +#: templates/forms/ticket-form.php:28 +msgid "spaces." +msgstr "prostory." + +# @ dbem +#: templates/forms/ticket-form.php:29 +msgid "Leave either blank for no upper/lower limit." +msgstr "Nechte buÄ prázdné, bez horní / dolní mez." + +# @ dbem +#: admin/em-bookings.php:155 +#: templates/forms/ticket-form.php:32 +#: templates/forms/tickets-form.php:5 +msgid "Description" +msgstr "popis" + +# @ dbem +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:137 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +msgid "Unauthorized Access" +msgstr "neoprávnÄ›nému přístupu" + +# @ dbem +#: admin/em-ms-locations.php:39 +msgid "Add location" +msgstr "pÅ™idat umístÄ›ní" + +# @ dbem +#: admin/em-ms-locations.php:42 +msgid "Edit location" +msgstr "Upravit umístÄ›ní" + +# @ dbem +#: templates/forms/location-editor.php:12 +msgid "required" +msgstr "požadovaný" + +# @ dbem +#: templates/forms/location-editor.php:23 +msgid "Location Name" +msgstr "název místa" + +# @ dbem +#: templates/forms/location-editor.php:28 +msgid "The name of the location" +msgstr "Název místa" + +# @ dbem +#: templates/forms/location/where.php:4 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Pokud používáte Google Maps, více detailů, které poskytnete, mohou být pÅ™esnÄ›jší Google pÅ™i hledání vaší lokalitÄ›. Pokud je vaÅ¡e adresa není nalezen, prosím Zkuste to na maps.google.com PÅ™idáním vÅ¡ech níže uvedených polí oddÄ›lených Äárkou." + +# @ dbem +#: templates/forms/event/location.php:69 +#: templates/forms/location/where.php:8 +msgid "Address:" +msgstr "adresa:" + +# @ dbem +#: templates/forms/event/location.php:75 +#: templates/forms/location/where.php:14 +msgid "City/Town:" +msgstr "MÄ›sto / obec:" + +# @ dbem +#: templates/forms/event/location.php:82 +#: templates/forms/location/where.php:20 +msgid "State/County:" +msgstr "Stát / kraj:" + +# @ dbem +#: templates/forms/event/location.php:89 +#: templates/forms/location/where.php:26 +msgid "Postcode:" +msgstr "PSÄŒ:" + +# @ dbem +#: templates/forms/event/location.php:102 +#: templates/forms/location/where.php:39 +msgid "Country:" +msgstr "zemÄ›:" + +# @ dbem +#: templates/forms/event/location.php:105 +#: templates/forms/location/where.php:42 +msgid "none selected" +msgstr "Nevybráno" + +# @ dbem +#: templates/forms/event/location.php:122 +#: templates/forms/location/where.php:52 +msgid "Location not found" +msgstr "Lokalita nebyla nalezena" + +# @ dbem +#: templates/forms/event-editor.php:99 +#: templates/forms/location-editor.php:39 +msgid "Details" +msgstr "podrobnosti" + +# @ dbem +#: templates/forms/location-editor.php:57 +msgid "No image uploaded for this location yet" +msgstr "Obrázek není k dispozici nahrané na tomto místÄ› jeÅ¡tÄ›" + +# @ dbem +#: templates/forms/event-editor.php:172 +#: templates/forms/location-editor.php:60 +msgid "Upload/change picture" +msgstr "PÅ™idat / ZmÄ›nit obrázek" + +# @ dbem +#: templates/forms/event-editor.php:174 +#: templates/forms/location-editor.php:62 +msgid "Delete Image?" +msgstr "Odstranit obrázek?" + +# @ dbem +#: templates/forms/location-editor.php:71 +msgid "Update location" +msgstr "aktualizace místo" + +# @ dbem +#: admin/bookings/em-cancelled.php:85 +#: admin/bookings/em-confirmed.php:86 +#: admin/bookings/em-pending.php:103 +#: admin/bookings/em-rejected.php:85 +#: templates/forms/bookingform/booking-fields.php:18 +#: templates/templates/bookings-event-printable.php:25 +msgid "E-mail" +msgstr "E-mail" + +# @ dbem +#: templates/forms/bookingform/login.php:3 +msgid "Log in if you already have an account with us." +msgstr "PÅ™ihlášení Pokud jste již u nás úÄet." + +# @ dbem +#: templates/forms/bookingform/login.php:5 +msgid "Username" +msgstr "Uživatelské jméno" + +# @ dbem +#: templates/forms/bookingform/login.php:9 +msgid "Password" +msgstr "heslo" + +# @ dbem +#: templates/forms/bookingform/login.php:13 +msgid "Log In" +msgstr "PÅ™ihlásit se" + +# @ dbem +#: templates/forms/bookingform/login.php:14 +msgid "Remember Me" +msgstr "Pamatovat si mÄ›" + +# @ dbem +#: templates/forms/bookingform/login.php:29 +msgid "Sign Up" +msgstr "Zaregistrujte se" + +# @ dbem +#: templates/forms/bookingform/login.php:33 +msgid "Password Lost and Found" +msgstr "Heslo Ztráty a nálezy" + +# @ dbem +#: templates/forms/bookingform/login.php:33 +msgid "Lost your password?" +msgstr "ZapomnÄ›li jste heslo?" + +# @ dbem +#: admin/em-bookings.php:100 +#: templates/forms/event-editor.php:30 +msgid "Event Name" +msgstr "Název události" + +# @ dbem +#: templates/forms/event-editor.php:34 +msgid "The event name. Example: Birthday party" +msgstr "Název akce. Příklad: Oslava narozenin" + +# @ dbem +#: templates/forms/event/group.php:23 +#: templates/forms/event-editor.php:60 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Vyberte skupinu, kterou admin pÅ™ipojit tuto akci k tomu. VÅ¡imnÄ›te si, že vÅ¡echny ostatní Správci skupiny, které mohou zmÄ›nit rezervaci, a nebudete moci unattach událost bez jeho odstranÄ›ní." + +# @ dbem +#: classes/em-event-post-admin.php:177 +#: templates/forms/event-editor.php:66 +msgid "When" +msgstr "kdy" + +# @ dbem +#: templates/forms/event/when.php:23 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Tato akce trvá každý den od zaÄátku a na konci dne, se systémem Start / konec doby se vztahují na každý den." + +# @ dbem +#: templates/forms/event/recurring-when.php:72 +#: templates/forms/event/when-with-recurring.php:78 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Pro opakované události, bude jednodenní akce bude vytvoÅ™ena na každém opakující den v tomto období." + +# @ dbem +#: templates/forms/event/recurring-when.php:10 +#: templates/forms/event/when-with-recurring.php:32 +msgid "This event repeats" +msgstr "Tato událost se opakuje" + +# @ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Daily" +msgstr "dennÄ›" + +# @ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Weekly" +msgstr "týdenní" + +# @ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Monthly" +msgstr "mÄ›síÄnÄ›" + +# @ dbem +#: templates/forms/event/recurring-when.php:17 +#: templates/forms/event/when-with-recurring.php:39 +msgid "every" +msgstr "každý" + +# @ dbem +#: templates/forms/event/recurring-when.php:20 +#: templates/forms/event/when-with-recurring.php:42 +msgid "day" +msgstr "den" + +# @ dbem +#: templates/forms/event/recurring-when.php:22 +#: templates/forms/event/when-with-recurring.php:44 +msgid "days" +msgstr "dnů" + +# @ dbem +#: templates/forms/event/recurring-when.php:24 +#: templates/forms/event/when-with-recurring.php:46 +msgid "week on" +msgstr "týden" + +# @ dbem +#: templates/forms/event/recurring-when.php:26 +#: templates/forms/event/when-with-recurring.php:48 +msgid "weeks on" +msgstr "týdny" + +# @ dbem +#: templates/forms/event/recurring-when.php:28 +#: templates/forms/event/when-with-recurring.php:50 +msgid "month on the" +msgstr "mÄ›síc" + +# @ dbem +#: templates/forms/event/recurring-when.php:30 +#: templates/forms/event/when-with-recurring.php:52 +msgid "months on the" +msgstr "mÄ›síců" + +# @ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "first" +msgstr "první" + +# @ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "second" +msgstr "druhý" + +# @ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "third" +msgstr "tÅ™etí" + +# @ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "fourth" +msgstr "Ätvrtý" + +# @ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "last" +msgstr "poslední" + +# @ dbem +#: templates/forms/event/recurring-when.php:48 +#: templates/forms/event/when-with-recurring.php:71 +msgid "of each month" +msgstr "každého mÄ›síce" + +# @ dbem +#: classes/em-event-post-admin.php:179 +#: classes/em-event-post-admin.php:354 +#: classes/em-location-post-admin.php:109 +#: templates/forms/event-editor.php:93 +msgid "Where" +msgstr "kde" + +# @ dbem +#: templates/forms/event/location.php:28 +msgid "Location:" +msgstr "umístÄ›ní:" + +# @ dbem +#: templates/forms/event/location.php:60 +msgid "Name:" +msgstr "jméno:" + +# @ dbem +#: templates/forms/event/location.php:64 +msgid "Create a location or start typing to search a previously created location." +msgstr "VytvoÅ™it místo, nebo zaÄnÄ›te psát pro hledání dříve vytvoÅ™ené místo." + +# @ dbem +#: templates/forms/event/location.php:65 +msgid "You cannot edit saved locations here." +msgstr "Nemůžete upravovat uložená místa zde." + +# @ dbem +#: templates/forms/event/location.php:65 +msgid "Reset this form to create a location." +msgstr "Reset tento formulář k vytvoÅ™ení místa." + +# @ dbem +#: templates/forms/event/location.php:95 +#: templates/forms/location/where.php:32 +msgid "Region:" +msgstr "kraj:" + +# @ dbem +#: templates/forms/event/location.php:110 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "VyplnÄ›ní tohoto na první vám umožní rychle najít dříve plné státy a regiony v zemi." + +# @ dbem +#: templates/forms/event-editor.php:107 +msgid "Details about the event." +msgstr "Podrobnosti o akci." + +# @ dbem +#: templates/forms/event-editor.php:107 +#: templates/forms/location-editor.php:47 +msgid "HTML Allowed." +msgstr "Povolené HTML." + +# @ dbem +#: templates/forms/event-editor.php:116 +msgid "Category:" +msgstr "kategorie:" + +# @ dbem +#: templates/forms/event-editor.php:190 +msgid "Submit Event" +msgstr "Odeslat akce" + +# @ dbem +#: classes/em-event-post-admin.php:183 +#: classes/em-event-post-admin.php:356 +#: templates/forms/event-editor.php:180 +msgid "Bookings/Registration" +msgstr "Rezervace / Registrace" + +# @ dbem +#: templates/forms/event/bookings.php:8 +msgid "Enable registration for this event" +msgstr "Povolit registraci na tuto akci" + +# @ dbem +#: templates/forms/event/booking-stats.php:21 +msgid "manage bookings" +msgstr "Správa rezervace" + +# @ dbem +#: templates/forms/event/booking-stats.php:22 +msgid "printable view" +msgstr "Zobrazit pro tisk" + +# @ dbem +#: admin/em-bookings.php:98 +#: templates/forms/event/booking-stats.php:23 +msgid "export csv" +msgstr "exportovat do CSV" + +# @ dbem +#: templates/forms/event/bookings.php:23 +msgid "Tickets" +msgstr "Vstupenky" + +# @ dbem +#: templates/forms/event/bookings.php:29 +msgid "Ticket Name" +msgstr "Název vstupenek" + +# @ dbem +#: templates/forms/event/bookings.php:31 +msgid "Min/Max" +msgstr "Min/Max" + +# @ dbem +#: templates/forms/event/bookings.php:32 +msgid "Start/End" +msgstr "ZaÄátek / konec" + +# @ dbem +#: templates/forms/event/bookings.php:33 +msgid "Avail. Spaces" +msgstr "prostory k dispozici" + +# @ dbem +#: admin/bookings/em-events.php:134 +#: templates/forms/event/bookings.php:34 +msgid "Booked Spaces" +msgstr "rezervované prostory" + +# @ dbem +#: templates/forms/event/bookings.php:41 +msgid "Add new ticket" +msgstr "PÅ™idat nový lístek" + +# @ dbem +#: templates/forms/event/bookings.php:56 +msgid "Free" +msgstr "volný" + +# @ dbem +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-rejected.php:113 +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:100 +#: templates/buddypress/group-events.php:134 +#: templates/buddypress/my-group-events.php:94 +#: templates/buddypress/my-group-events.php:128 +#: templates/forms/event/bookings.php:88 +#: templates/tables/events.php:103 +#: templates/tables/events.php:134 +msgid "Delete" +msgstr "vymazat" + +# @ dbem +#: templates/forms/event/bookings.php:90 +msgid "View Bookings" +msgstr "Zobrazit Rezervace" + +# @ dbem +#: events-manager.php:255 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Jste si jisti, že chcete zmÄ›nit plán této opakující se akce? Pokud tak uÄiníte, ztratíte vÅ¡echny informace o rezervacích a staré opakující se události budou smazány." + +# @ dbem +#: events-manager.php:256 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Jste si jisti, že chcete zakázat rezervaci? Pokud tak uÄiníte a uÅ¡etÅ™it, pÅ™ijdete o vÅ¡echny pÅ™edchozí rezervace. Pokud chcete, aby se zabránilo dalšímu rezervace, snížení poÄtu míst k dispozici množství rezervacích v souÄasné dobÄ›" + +# @ dbem +#: templates/forms/tickets-form.php:2 +msgid "Create a ticket" +msgstr "VytvoÅ™te si lístek" + +# @ dbem +#: templates/forms/tickets-form.php:8 +msgid "Available ticket spaces" +msgstr "Volnou vstupenku prostory" + +# @ dbem +#: templates/forms/tickets-form.php:10 +msgid "Start date of ticket availability" +msgstr "ZaÄátek, kdy se cestující k dispozici" + +# @ dbem +#: templates/forms/tickets-form.php:11 +msgid "End date of ticket availability" +msgstr "Datum ukonÄení dostupnosti vstupenek" + +# @ dbem +#: templates/forms/tickets-form.php:12 +msgid "Minimum tickets required per booking" +msgstr "Minimální požadované vstupenky na rezervaci" + +# @ dbem +#: templates/forms/tickets-form.php:13 +msgid "Maximum tickets required per booking" +msgstr "Maximální požadovaná na rezervaci vstupenek" + +# @ dbem +#: templates/forms/tickets-form.php:19 +msgid "Add Ticket" +msgstr "pÅ™idání vstupenek" + +# @ dbem +#: admin/em-ms-locations.php:29 +#: buddypress/screens/my-events.php:33 +#: buddypress/screens/my-locations.php:33 +msgid "Add New" +msgstr "pÅ™idat nový" + +# @ dbem +#: em-events.php:129 +#: templates/tables/locations.php:8 +#, php-format +msgid "My %s" +msgstr "můj %s" + +# @ dbem +#: admin/em-admin.php:45 +#: admin/em-ms-locations.php:28 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:399 +#: admin/em-options.php:594 +#: admin/em-options.php:595 +#: admin/em-options.php:935 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: classes/em-location-posts-admin.php:31 +#: em-actions.php:180 +#: em-install.php:386 +#: em-install.php:387 +#: em-install.php:685 +#: em-install.php:732 +#: em-posts.php:207 +#: em-posts.php:210 +#: em-posts.php:212 +#: templates/tables/locations.php:8 +#: templates/tables/locations.php:11 +msgid "Locations" +msgstr "míst" + +# @ dbem +#: templates/tables/locations.php:11 +#, php-format +msgid "All %s" +msgstr "vÅ¡e %s" + +# @ dbem +# @ default +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:57 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-rejected.php:49 +#: templates/tables/locations.php:18 +msgid "Bulk Actions" +msgstr "Hromadné akce" + +# @ dbem +#: admin/bookings/em-events.php:58 +#: templates/tables/locations.php:19 +msgid "Delete selected" +msgstr "odstranit vybrané" + +# @ default +#: admin/bookings/em-events.php:60 +#: templates/tables/locations.php:21 +msgid "Apply" +msgstr "platit" + +# @ dbem +#: classes/em-location-posts-admin.php:40 +#: templates/tables/locations.php:35 +#: templates/tables/locations.php:44 +msgid "Address" +msgstr "adresa" + +# @ dbem +#: classes/em-location-posts-admin.php:42 +#: templates/tables/locations.php:36 +#: templates/tables/locations.php:45 +msgid "State" +msgstr "stav" + +# @ dbem +#: admin/em-options.php:614 +#: admin/em-options.php:664 +#: admin/em-options.php:754 +#: classes/em-location-posts-admin.php:43 +#: templates/tables/locations.php:37 +#: templates/tables/locations.php:46 +msgid "Country" +msgstr "zemÄ›" + +# @ dbem +#: admin/bookings/em-events.php:102 +#: templates/buddypress/group-events.php:44 +#: templates/buddypress/my-group-events.php:44 +#: templates/tables/events.php:53 +msgid "Date and time" +msgstr "Datum a Äas" + +# @ dbem +#: em-install.php:532 +#: templates/buddypress/group-events.php:29 +#: templates/buddypress/my-group-events.php:29 +#: templates/buddypress/profile.php:19 +msgid "No Events" +msgstr "žádné události" + +# @ dbem +#: templates/buddypress/profile.php:37 +msgid "Not attending any events yet." +msgstr "Ne chodit do nÄ›jaké události dosud." + +# @ dbem +#: templates/tables/events.php:15 +msgid "Upcoming" +msgstr "nadcházející" + +# @ dbem +#: admin/bookings/em-events.php:29 +#: templates/tables/events.php:19 +msgid "Past Events" +msgstr "minulé akce" + +# @ dbem +#: em-posts.php:129 +#: templates/tables/events.php:22 +#: templates/tables/events.php:24 +msgid "Search Events" +msgstr "hledání událostí" + +# @ dbem +#: admin/bookings/em-events.php:91 +msgid "no events" +msgstr "žádné události" + +# @ dbem +#: admin/em-admin.php:38 +#: classes/em-event-posts-admin.php:136 +#: em-events.php:129 +#: templates/buddypress/group-events.php:91 +#: templates/buddypress/my-group-events.php:85 +#: templates/tables/events.php:94 +msgid "Bookings" +msgstr "Rezervace" + +# @ dbem +#: classes/em-event-posts-admin.php:137 +#: templates/buddypress/group-events.php:92 +#: templates/buddypress/my-group-events.php:86 +#: templates/tables/events.php:95 +#: templates/templates/bookings-event-printable.php:42 +msgid "Booked" +msgstr "rezervovaný" + +# @ dbem +#: templates/buddypress/group-events.php:105 +#: templates/buddypress/my-group-events.php:99 +#: templates/tables/events.php:108 +msgid "Duplicate this event" +msgstr "Duplicitní této události" + +# @ dbem +#: classes/em-event-posts-admin.php:144 +#: templates/buddypress/group-events.php:128 +#: templates/buddypress/my-group-events.php:122 +#: templates/tables/events.php:128 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "VAROVÃNÃ! Budete odstranit vÅ¡echny recidivy této události, vÄetnÄ› rezervace historie spojené s událostí v tomto opakování. Chcete-li zachovat informace o rezervacích naleznete na přísluÅ¡né jednorázovou akci a uložte ji odpojit od tohoto opakování seriálu." + +# @ dbem +#: templates/templates/bookings-event-printable.php:21 +msgid "Bookings data" +msgstr "Rezervace dat" + +# @ dbem +#: admin/bookings/em-cancelled.php:86 +#: admin/bookings/em-confirmed.php:87 +#: admin/bookings/em-pending.php:104 +#: admin/bookings/em-rejected.php:86 +#: templates/templates/bookings-event-printable.php:26 +msgid "Phone number" +msgstr "telefonní Äíslo" + +# @ dbem +#: templates/templates/bookings-event-printable.php:47 +msgid "Available" +msgstr "dostupný" + +# @ dbem +#: templates/placeholders/locationmap.php:15 +#: templates/templates/map-global.php:15 +msgid "Loading Map...." +msgstr "nakládání mapa...." + +# @ dbem +#: templates/templates/csv-event-bookings.php:16 +#, php-format +msgid "Booking details for \"%s\" as of %s" +msgstr "Rezervace podrobnosti \"%s\" jak %s" + +# @ dbem +#: admin/em-bookings.php:103 +#: templates/templates/my-bookings.php:47 +msgid "Date" +msgstr "datum" + +# @ dbem +#: admin/bookings/em-person.php:88 +#: admin/em-bookings.php:246 +#: templates/templates/my-bookings.php:49 +msgid "Status" +msgstr "postavení" + +# @ dbem +#: templates/templates/my-bookings.php:75 +msgid "Are you sure you want to cancel your booking?" +msgstr "Jste si jisti, že chcete zruÅ¡it svou rezervaci?" + +# @ dbem +#: admin/em-options.php:130 +#: admin/em-options.php:147 +#: templates/templates/my-bookings.php:75 +msgid "Cancel" +msgstr "zruÅ¡it" + +# @ dbem +#: templates/templates/my-bookings.php:91 +msgid "You do not have any bookings." +msgstr "Nemáte žádné rezervace." + +# @ dbem +#: templates/templates/my-bookings.php:101 +#, php-format +msgid "Please Log In to view your bookings." +msgstr "prosím PÅ™ihlásit se pro zobrazení rezervace." + +# @ dbem +#: templates/templates/events-search.php:35 +msgid "between" +msgstr "mezi" + +# @ dbem +#: em-install.php:313 +msgid "All Categories" +msgstr "vÅ¡echny kategorie" + +# @ dbem +#: em-install.php:315 +msgid "All Countries" +msgstr "vÅ¡echny zemÄ›" + +# @ dbem +#: em-install.php:317 +msgid "All Regions" +msgstr "vÅ¡echny regiony" + +# @ dbem +#: em-install.php:319 +msgid "All States" +msgstr "vÅ¡echny státy" + +# @ dbem +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: em-install.php:310 +#: events-manager.php:264 +msgid "Search" +msgstr "hledání" + +# @ dbem +#: events-manager.php:266 +msgid "Loading..." +msgstr "Nahrávám ..." + +# @ dbem +#: events-manager.php:265 +msgid "Searching..." +msgstr "Vyhledávání ..." + +# @ dbem +#: templates/placeholders/bookingbutton.php:2 +msgid "Book Now" +msgstr "rezervovat" + +# @ dbem +#: templates/placeholders/bookingbutton.php:3 +msgid "Booking..." +msgstr "Objednávka ..." + +# @ dbem +#: templates/placeholders/bookingbutton.php:4 +msgid "Booking Submitted" +msgstr "Rezervace Odesláno" + +# @ dbem +#: templates/placeholders/bookingbutton.php:5 +msgid "Booking Error. Try again?" +msgstr "Rezervace chyby. Zkuste to znovu?" + +# @ dbem +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "mapa není k dispozici" + +# @ dbem +#: templates/placeholders/bookingform.php:11 +#, php-format +msgid "You are currently attending this event. Manage my bookings" +msgstr "Ty jsou v souÄasné dobÄ› úÄast na této akci. Správa Moje rezervace" + +# @ dbem +#: templates/placeholders/bookingform.php:13 +msgid "Online bookings are not available for this event." +msgstr "Online rezervace nejsou k dispozici pro tuto událost." + +# @ dbem +#: templates/placeholders/bookingform.php:15 +msgid "Bookings are closed for this event." +msgstr "Objednávky jsou uzavÅ™eny pro tuto akci." + +# @ dbem +#: events-manager.php:250 +msgid "Please wait while the booking is being submitted." +msgstr "PoÄkejte prosím, rezervace je pÅ™edložen." + +# @ dbem +#: admin/em-options.php:40 +msgid "Changes saved." +msgstr "ZmÄ›ny uloženy." + +# @ dbem +#: admin/em-help.php:28 +#: admin/em-ms-options.php:52 +#: admin/em-options.php:167 +msgid "Event Related Placeholders" +msgstr "Událost týkající symboly" + +# @ dbem +#: admin/em-help.php:34 +#: admin/em-ms-options.php:53 +#: admin/em-options.php:168 +msgid "Location Related Placeholders" +msgstr "Související umístÄ›ní zástupných symbolů" + +# @ dbem +#: admin/em-help.php:37 +#: admin/em-ms-options.php:54 +#: admin/em-options.php:169 +msgid "Booking Related Placeholders" +msgstr "Rezervace Související symboly" + +# @ dbem +#: admin/em-help.php:31 +#: admin/em-ms-options.php:55 +#: admin/em-options.php:170 +msgid "Category Related Placeholders" +msgstr "Související kategorie symboly" + +# @ dbem +#: admin/em-ms-options.php:56 +#: admin/em-options.php:171 +#, php-format +msgid "This accepts %s and %s placeholders." +msgstr "To pÅ™ijímá %s a %s zástupné symboly." + +# @ dbem +#: admin/em-ms-options.php:57 +#: admin/em-ms-options.php:58 +#: admin/em-options.php:172 +#: admin/em-options.php:173 +#, php-format +msgid "This accepts %s placeholders." +msgstr "To pÅ™ijímá %s zástupné symboly." + +# @ dbem +#: admin/em-ms-options.php:59 +#: admin/em-options.php:174 +#, php-format +msgid "This accepts %s, %s and %s placeholders." +msgstr "To pÅ™ijímá %s, %s a %s zástupné symboly." + +# @ dbem +# @ default +#: admin/em-ms-options.php:61 +#: admin/em-ms-options.php:200 +#: admin/em-options.php:177 +#: admin/em-options.php:1251 +msgid "Save Changes" +msgstr "uložit zmÄ›ny" + +# @ dbem +#: admin/em-ms-options.php:61 +#: admin/em-options.php:177 +msgid "All" +msgstr "vÅ¡e" + +# @ dbem +#: admin/em-ms-options.php:66 +#: admin/em-options.php:182 +msgid "Collapse All" +msgstr "Sbalit vÅ¡echny" + +# @ dbem +#: admin/em-ms-options.php:67 +#: admin/em-options.php:183 +msgid "Expand All" +msgstr "Rozbalit vÅ¡echny" + +# @ dbem +#: admin/em-ms-options.php:138 +#: admin/em-options.php:276 +msgid "Event Manager Options" +msgstr "Možnosti událost Å™editel" + +# @ dbem +#: admin/em-ms-options.php:148 +#: admin/em-options.php:287 +#: admin/em-options.php:370 +#: admin/em-options.php:392 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:703 +#: admin/em-options.php:793 +#: admin/em-options.php:825 +#: admin/em-options.php:847 +#: admin/em-options.php:869 +#: admin/em-options.php:893 +#: admin/em-options.php:909 +#: admin/em-options.php:932 +#: admin/em-options.php:961 +#: admin/em-options.php:989 +#: admin/em-options.php:1009 +#: admin/em-options.php:1024 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#: admin/em-options.php:1130 +#: admin/em-options.php:1162 +#: admin/em-options.php:1214 +#: admin/em-options.php:1272 +#: admin/em-options.php:1305 +#: admin/em-options.php:1327 +#: admin/em-options.php:1355 +#: admin/em-options.php:1460 +msgid "Click to toggle" +msgstr "KlepnÄ›te na tlaÄítko pro pÅ™epnutí" + +# @ dbem +#: admin/em-ms-options.php:148 +msgid "Multi Site Options" +msgstr "Více Možnosti webu" + +# @ dbem +#: admin/em-ms-options.php:152 +msgid "Enable global tables mode?" +msgstr "Povolit globální tabulky režimu?" + +# @ dbem +#: admin/em-ms-options.php:152 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Nastavení to ano, uÄiní vÅ¡echny akce s výjimkou hlavních tabulkách místo události (EM musí být aktivní). To umožňuje sdílet události v různých blogů, jako je například Ukázat události v síti a zároveň umožňuje uživatelům zobrazit a spravovat jejich akcí v rámci své vlastní blog. MÄ›jte na pamÄ›ti, že aktivace této funkce bude znamenat staré události vytvoÅ™ené na sub-blogy, nebude již více přístupný, a pokud se pÅ™epnete zpÄ›t budou ale nové události vytvoÅ™ené v globální události režim zůstane pouze na hlavní stránce." + +# @ dbem +#: admin/em-ms-options.php:163 +msgid "Display global events on main blog?" +msgstr "Displej globální události na hlavní blog?" + +# @ dbem +#: admin/em-options.php:341 +msgid "Use dropdown for locations?" +msgstr "Použijte rozbalovací pro umístÄ›ní?" + +# @ dbem +#: admin/em-options.php:341 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Zvolte Ano pro výbÄ›r umístÄ›ní z drow-down menu, výbÄ›r umístÄ›ní bude rychlejší, ale ztratíte možnost vkládat místa s událostmi" + +# @ dbem +#: admin/em-options.php:297 +msgid "Select yes to enable the recurrence features feature" +msgstr "Zvolte Ano, aby opakování prvků funkci" + +# @ dbem +#: admin/em-options.php:298 +msgid "Enable bookings?" +msgstr "Povolit rezervaci?" + +# @ dbem +#: admin/em-options.php:298 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Zvolte Ano pro povolení a rezervace vstupenek na akce." + +# @ dbem +#: admin/em-options.php:301 +msgid "Select yes to enable the category features" +msgstr "Zvolte Ano, aby Vlastnosti kategorie" + +# @ dbem +#: admin/em-options.php:313 +msgid "Select yes to enable the attributes feature" +msgstr "Zvolte Ano, aby atributy funkce" + +# @ dbem +#: admin/em-options.php:305 +msgid "no default category" +msgstr "žádné výchozí kategorie" + +# @ dbem +#: admin/em-options.php:310 +msgid "Default Category" +msgstr "Výchozí kategorie" + +# @ dbem +#: admin/em-options.php:310 +msgid "This option allows you to select the default category when adding an event." +msgstr "Tato volba umožňuje vybrat výchozí kategorii pÅ™i pÅ™idávání události." + +# @ dbem +#: admin/em-options.php:326 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(nevztahuje se akce vlastnictví v souÄasné dobÄ›, již brzy!)" + +# @ dbem +#: admin/em-options.php:321 +msgid "no default location" +msgstr "žádné výchozí místo" + +# @ dbem +#: admin/em-options.php:326 +msgid "Default Location" +msgstr "Výchozí umístÄ›ní" + +# @ dbem +#: admin/em-options.php:326 +msgid "This option allows you to select the default location when adding an event." +msgstr "Tato volba umožňuje nastavit výchozí umístÄ›ní pÅ™i pÅ™idávání události." + +# @ dbem +#: admin/em-options.php:329 +msgid "Default Location Country" +msgstr "Výchozí umístÄ›ní ZemÄ›" + +# @ dbem +#: admin/em-options.php:329 +msgid "no default country" +msgstr "žádné výchozí zemÄ›" + +# @ dbem +#: admin/em-options.php:329 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Vyberete-li výchozí zemi, bude to pÅ™edem vybraných pÅ™i vytváření nového umístÄ›ní." + +# @ dbem +#: admin/em-options.php:316 +msgid "Event Attributes" +msgstr "akce atributy" + +# @ dbem +#: admin/em-options.php:316 +#, php-format +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Můžete také pÅ™idat akci atributy tady, jeden na řádku v tomto formátu #_ATT{key}. Ty se nezobrazí na stránkách akce, pokud vložíte do jiné Å¡ablony níže, ale můžete uložit další informace o akci pro jiné úÄely.Více informací na vyhrazená místa." + +# @ dbem +#: admin/em-options.php:350 +msgid "Show some love?" +msgstr "Ukazují nÄ›které láska?" + +# @ dbem +#: admin/em-options.php:350 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Stovky volných hodin, Å¡li do tvorby tohoto volného plugin, Projevte nám svou podporu a pÅ™idat malou odkaz na plugin stránkách ve spodní Äásti Vaší akce stránek." + +# @ dbem +#: admin/em-options.php:440 +msgid "Events page" +msgstr "události stránky" + +# @ dbem +#: admin/em-options.php:445 +msgid "Show events page in lists?" +msgstr "Zobrazit stránce Události v seznamech?" + +# @ dbem +#: admin/em-options.php:445 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "ZaÅ¡krtnÄ›te tuto volbu, chcete-li události, stránky se objeví spolu s ostatními stránkami na stránkách seznamu." + +# @ dbem +#: admin/em-options.php:446 +msgid "Display calendar in events page?" +msgstr "Zobrazit kalendář akcí stránce?" + +# @ dbem +#: admin/em-options.php:446 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Tato volba umožňuje zobrazení kalendáře na stránce Události, místo výchozího seznamu. DoporuÄuje se, aby i zobrazení kalendáře widget a stránky kalendáře." + +# @ dbem +#: admin/em-options.php:446 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Pokud byste chtÄ›li ukázat, události, které zahrnují více než jeden den, naleznete v sekci Kalendář na této stránce." + +# @ dbem +#: admin/em-options.php:447 +msgid "Disable title rewriting?" +msgstr "Zakázat titul pÅ™episování?" + +# @ dbem +#: admin/em-options.php:448 +msgid "Event Manager titles" +msgstr "Tituly Event Manager" + +# @ dbem +#: admin/em-options.php:448 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Toto nastavení jen záleží jen pokud jste zvolili \"Ano\" výše. Můžete si vÅ¡imnout, události, názvy stránek nejsou pÅ™epsány, a máte nový titul pod názvem výchozí stránku. To je místo, kde můžete ovládat HTML tohoto titulu. UjistÄ›te se, že budete mít #_PAGETITLE symbol zde, stejnÄ› jako je to, co je pÅ™epsána událostmi Manager. Kontrolovat, co je pÅ™epsán v této hlavÄ›, viz Nastavení níže na stránce titulů." + +# @ dbem +#: admin/em-options.php:568 +msgid "Event List Limits" +msgstr "Omezení seznamu událostí" + +# @ dbem +#: admin/em-options.php:568 +msgid "This will control how many events are shown on one list by default." +msgstr "To bude urÄovat, kolik událostí se zobrazují na jednom seznamu ve výchozím nastavení." + +# @ dbem +#: admin/em-options.php:501 +msgid "Are current events past events?" +msgstr "Jsou aktuální události minulých událostí?" + +# @ dbem +#: admin/em-options.php:501 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Ve výchozím nastavení událostí, které mají datum ukonÄení pozdÄ›ji než dnes být zahrnuta do vyhledávání, nastavit na Ano a za události, která zaÄala \"vÄera\", jak minulost." + +# @ dbem +#: admin/em-options.php:449 +msgid "Show events search?" +msgstr "Zobrazit události vyhledávání?" + +# @ dbem +#: admin/em-options.php:449 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Pokud je nastavena na hodnotu Ano, bude formulář pro vyhledávání se objeví tÄ›snÄ› nad seznamem událostí." + +# @ dbem +#: admin/em-options.php:511 +msgid "Default event list ordering" +msgstr "Výchozí seznam událostí objednávání" + +# @ dbem +#: admin/em-options.php:516 +msgid "Order by start date, start time, then event name" +msgstr "SeÅ™adit podle datum, Äas zaÄátku, pak názvu akce" + +# @ dbem +#: admin/em-options.php:517 +msgid "Order by name, start date, then start time" +msgstr "SeÅ™adit podle názvu, data zahájení, pak se Äas zaÄátku" + +# @ dbem +#: admin/em-options.php:518 +msgid "Order by name, end date, then end time" +msgstr "SeÅ™adit dle názvu, datum ukonÄení, pak se Äas ukonÄení" + +# @ dbem +#: admin/em-options.php:519 +msgid "Order by end date, end time, then event name" +msgstr "SeÅ™adit podle koneÄného data, Äas konce, pak názvu akce" + +# @ dbem +#: admin/em-options.php:533 +msgid "All Ascending" +msgstr "vÅ¡echny vzestupnÄ›" + +# @ dbem +#: admin/em-options.php:536 +msgid "All Descending" +msgstr "vÅ¡echny SestupnÄ›" + +# @ dbem +#: admin/em-options.php:490 +#: admin/em-options.php:550 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "PÅ™i události Manager se zobrazí seznam akcí, výchozí chování je Řazení podle data zahájení ve vzestupném poÅ™adí. Chcete-li zmÄ›nit, upravte hodnoty výše." + +# @ dbem +#: admin/em-options.php:554 +msgid "Event list scope" +msgstr "Seznam událostí rozsahu" + +# @ dbem +#: admin/em-options.php:564 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Zobrazit pouze událostí, které zaÄíná v urÄitém Äasovém limitu na stránce Události. Výchozí hodnota je budoucí události bez omezení Äas ukonÄení." + +# @ dbem +#: admin/em-options.php:847 +msgid "Events format" +msgstr "události ve formátu" + +# @ dbem +#: admin/em-options.php:850 +#: admin/em-options.php:935 +#: admin/em-options.php:964 +#, php-format +msgid "%s Page" +msgstr "%s strana" + +# @ dbem +#: admin/em-options.php:852 +msgid "Default event list format header" +msgstr "Výchozí seznam událostí formát záhlaví" + +# @ dbem +#: admin/em-options.php:852 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Tento obsah se zobrazí jen nad kódu pro seznam výchozí událost formátu. Výchozí hodnota je prázdná" + +# @ dbem +#: admin/em-options.php:853 +msgid "Default event list format" +msgstr "Výchozí seznam událostí ve formátu" + +# @ dbem +#: admin/em-options.php:853 +msgid "The format of any events in a list." +msgstr "Formát vÅ¡ech událostí v seznamu." + +# @ dbem +#: admin/em-options.php:854 +msgid "Default event list format footer" +msgstr "Výchozí seznam událostí ve formátu zápatí" + +# @ dbem +#: admin/em-options.php:854 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Tento obsah se zobrazí přímo pod kód pro seznam výchozí událost formátu. Výchozí hodnota je prázdná" + +# @ dbem +#: admin/em-options.php:855 +msgid "No events message" +msgstr "Žádné události zprávu" + +# @ dbem +#: admin/em-options.php:855 +msgid "The message displayed when no events are available." +msgstr "Tato zpráva zobrazí, když Žádné akce k dispozici." + +# @ dbem +#: admin/em-options.php:856 +msgid "List events by date title" +msgstr "Seznam událostí podle data titul" + +# @ dbem +#: admin/em-options.php:856 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
              " +msgstr "Je-li zobrazení stránky pro akce k urÄitému datu, to je titul, který by se ukázal. Pro vložení dat, použijte PHP znaky formátu Äasu s # symbol pÅ™ed nimi, i.e. #m, #M, #j, etc.
              " + +# @ dbem +#: admin/em-options.php:858 +#: admin/em-options.php:942 +#: admin/em-options.php:971 +#: admin/em-options.php:992 +#, php-format +msgid "Single %s Page" +msgstr "jediný %s strana" + +# @ dbem +#: admin/em-options.php:860 +msgid "Single event page title format" +msgstr "Jediná událost název stránky formátu" + +# @ dbem +#: admin/em-options.php:860 +msgid "The format of a single event page title." +msgstr "Formát jednoho titulu stránku události." + +# @ dbem +#: admin/em-options.php:861 +msgid "Default single event format" +msgstr "Výchozí jedna událost formátu" + +# @ dbem +#: admin/em-options.php:861 +msgid "The format of a single event page." +msgstr "Formát jednu stránku události." + +# @ dbem +#: admin/em-options.php:909 +msgid "Calendar format" +msgstr "formát kalendáře" + +# @ dbem +#: admin/em-options.php:913 +msgid "Small calendar title" +msgstr "Malé Název kalendáře" + +# @ dbem +#: admin/em-options.php:913 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "Formát titulu, který odpovídá textu, který se zobrazí pÅ™i najetí na ruÅ¡ný den kalendář." + +# @ dbem +#: admin/em-options.php:914 +msgid "Small calendar title separator" +msgstr "Malé Název kalendáře separátoru" + +# @ dbem +#: admin/em-options.php:914 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "OddÄ›lovaÄ se objeví na nad titulem, když více než jeden události se konají ve stejný den." + +# @ dbem +#: admin/em-options.php:915 +msgid "Full calendar events format" +msgstr "Úplný kalendář událostí formátu" + +# @ dbem +#: admin/em-options.php:915 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "Formát každé události pÅ™i zobrazení v plné calenda. Nezapomeňte zahrnout li Tagy pÅ™ed a po události." + +# @ dbem +#: admin/em-options.php:916 +msgid "Show long events on calendar pages?" +msgstr "Zobrazit události v kalendáři dlouho stránkách?" + +# @ dbem +#: admin/em-options.php:916 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Pokud jste Zobrazení kalendáře na stránce Události (viz Akce ve formátu sekci na této stránce), máte možnost ukázat událostí, které trvají nÄ›kolik dní každý den k ní dojde." + +# @ dbem +#: admin/em-options.php:917 +msgid "Show list on day with single event?" +msgstr "Zobrazit seznam v den jednorázová akce?" + +# @ dbem +#: admin/em-options.php:917 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Ve výchozím nastavení, pokud je kalendářní den, má pouze jeden případ, zobrazí se událost, pÅ™i kliknutí na odkaz v tomto kalendářním dni. Zvolíte-li Ano, tady se vám vždy zobrazí seznam událostí." + +# @ dbem +#: admin/em-options.php:920 +msgid "iCal Feed Settings" +msgstr "Nastavení iCal Feed" + +# @ dbem +#: admin/em-options.php:922 +msgid "iCal Title" +msgstr "titul iCal" + +# @ dbem +#: admin/em-options.php:922 +msgid "The title that will appear in the calendar." +msgstr "Titul, který se objeví v kalendáři." + +# @ dbem +#: admin/em-options.php:923 +msgid "iCal Limit" +msgstr "omezení iCal" + +# @ dbem +#: admin/em-options.php:923 +msgid "Limits the number of future events shown (0 = unlimited)." +msgstr "Omezuje poÄet budoucích událostí ukazuje (0 = neomezeno)." + +# @ dbem +#: admin/em-options.php:932 +msgid "Locations format" +msgstr "PoboÄky ve formátu" + +# @ dbem +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "%s list header format" +msgstr "%s záhlaví seznamu Formát" + +# @ dbem +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Tento obsah se zobrazí jen nad kód %s formát seznamu níže. Výchozí hodnota je prázdná" + +# @ dbem +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "%s list item format" +msgstr "%s Seznam položek ve formátu" + +# @ dbem +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "The format of a single %s in a list." +msgstr "Formát jednoho %s v seznamu." + +# @ dbem +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "%s list footer format" +msgstr "%s Seznam zápatí ve formátu" + +# @ dbem +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Tento obsah se zobrazí tÄ›snÄ› pod kód %s formát seznamu výše. Výchozí hodnota je prázdná" + +# @ dbem +#: admin/em-options.php:940 +#: admin/em-options.php:951 +#: admin/em-options.php:969 +#: admin/em-options.php:979 +#: admin/em-options.php:1000 +#, php-format +msgid "No %s message" +msgstr "ne %s zpráva" + +# @ dbem +#: admin/em-options.php:940 +#: admin/em-options.php:969 +#, php-format +msgid "The message displayed when no %s are available." +msgstr "Tato zpráva zobrazí, když ne %s jsou k dispozici." + +# @ dbem +#: admin/em-options.php:944 +#: admin/em-options.php:973 +#: admin/em-options.php:994 +#, php-format +msgid "Single %s title format" +msgstr "jediný %s Název formátu" + +# @ dbem +#: admin/em-options.php:944 +msgid "The format of a single location page title." +msgstr "Formát jednoho titulu umístÄ›ní stránky." + +# @ dbem +#: admin/em-options.php:945 +#: admin/em-options.php:974 +#: admin/em-options.php:995 +#, php-format +msgid "Single %s page format" +msgstr "jediný %s formát stránky" + +# @ dbem +#: admin/em-options.php:945 +msgid "The format of a single location page." +msgstr "Formát na jednom místÄ› stránky." + +# @ dbem +#: admin/em-options.php:946 +msgid "Default location balloon format" +msgstr "Výchozí místo balónu formátu" + +# @ dbem +#: admin/em-options.php:946 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "Formát textu jsou uvedeny v balón s popisem umístÄ›ní na jednom místÄ› mapy." + +# @ dbem +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#, php-format +msgid "%s List Formats" +msgstr "%s seznam formátů" + +# @ dbem +#: admin/em-options.php:950 +#: admin/em-options.php:978 +#: admin/em-options.php:999 +#, php-format +msgid "Default %s list format" +msgstr "standardní %s seznam ve formátu" + +# @ dbem +#: admin/em-ms-options.php:163 +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-options.php:418 +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:502 +#: admin/em-options.php:950 +#: admin/em-options.php:951 +#: admin/em-options.php:978 +#: admin/em-options.php:979 +#: admin/em-options.php:999 +#: admin/em-options.php:1000 +#: admin/em-options.php:1366 +#: admin/em-options.php:1367 +#: admin/em-options.php:1368 +#: admin/em-options.php:1369 +#: admin/em-options.php:1370 +#: admin/em-options.php:1371 +#: events-manager.php:295 +#: events-manager.php:296 +#: events-manager.php:297 +#: events-manager.php:298 +#: events-manager.php:299 +#: events-manager.php:300 +msgid "events" +msgstr "události" + +# @ dbem +#: admin/em-options.php:950 +msgid "The format of the events the list inserted in the location page through the #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS element." +msgstr "Formát událostí seznamu vloženy v místÄ› po stránkách #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS a #_LOCATIONALLEVENTS prvek." + +# @ dbem +#: admin/em-options.php:951 +msgid "The message to be displayed in the list generated by #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS when no events are available." +msgstr "Zprávy se zobrazí v seznamu, vytvoÅ™ené #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS a #_LOCATIONALLEVENTS PÅ™i Žádné akce k dispozici." + +# @ dbem +#: admin/em-options.php:961 +msgid "Categories format" +msgstr "kategorie formátu" + +# @ dbem +#: admin/em-options.php:707 +#: admin/em-options.php:708 +#: admin/em-options.php:964 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: em-install.php:416 +#: em-install.php:418 +#: em-install.php:697 +#: em-install.php:747 +msgid "Categories" +msgstr "kategorie" + +# @ dbem +#: admin/em-options.php:973 +msgid "The format of a single category page title." +msgstr "Formát jednoho titulu kategorii stránce." + +# @ dbem +#: admin/em-options.php:974 +msgid "The format of a single category page." +msgstr "Formát jedné kategorie stránku." + +# @ dbem +#: admin/em-options.php:978 +msgid "The format of the events the list inserted in the category page through the #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." +msgstr "Formát událostí seznamu vloženy do kategorie po stránkách #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS a #_CATEGORYALLEVENTS prvek." + +# @ dbem +#: admin/em-options.php:979 +msgid "The message to be displayed in the list generated by #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS when no events are available." +msgstr "Zprávy se zobrazí v seznamu, vytvoÅ™ené #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS a #_CATEGORYALLEVENTS PÅ™i Žádné akce k dispozici." + +# @ dbem +#: admin/em-options.php:1009 +msgid "RSS feed format" +msgstr "RSS zdroj formátu" + +# @ dbem +#: admin/em-options.php:1013 +msgid "RSS main title" +msgstr "RSS hlavní titul" + +# @ dbem +#: admin/em-options.php:1013 +msgid "The main title of your RSS events feed." +msgstr "Hlavní titulek události RSS zdroj." + +# @ dbem +#: admin/em-options.php:1014 +msgid "RSS main description" +msgstr "RSS hlavní popis" + +# @ dbem +#: admin/em-options.php:1014 +msgid "The main description of your RSS events feed." +msgstr "Hlavní popis vaÅ¡ich akcí RSS feed." + +# @ dbem +#: admin/em-options.php:1015 +msgid "RSS title format" +msgstr "RSS title format" + +# @ dbem +#: admin/em-options.php:1015 +msgid "The format of the title of each item in the events RSS feed." +msgstr "Formát názvu každé položky v kanálu RSS Události." + +# @ dbem +#: admin/em-options.php:1016 +msgid "RSS description format" +msgstr "Popis ve formátu RSS" + +# @ dbem +#: admin/em-options.php:1016 +msgid "The format of the description of each item in the events RSS feed." +msgstr "Formát popisu každé položky v kanálu RSS Události." + +# @ dbem +#: admin/em-options.php:1024 +msgid "Maps and geotagging" +msgstr "Mapy a geotagging" + +# @ dbem +#: admin/em-options.php:1029 +msgid "Enable Google Maps integration?" +msgstr "Povolit integraci Google Maps?" + +# @ dbem +#: admin/em-options.php:1033 +msgid "Check this option to enable Goggle Map integration." +msgstr "ZaÅ¡krtnÄ›te tuto volbu, aby brýle Mapa integrace." + +# @ dbem +#: admin/em-options.php:1037 +msgid "Map text format" +msgstr "Mapa textovém formátu" + +# @ dbem +#: admin/em-options.php:1037 +msgid "The text format inside the map balloons." +msgstr "V textovém formátu map balóny." + +# @ dbem +#: admin/em-options.php:1055 +msgid "Approval Required?" +msgstr "Požadováno schválení?" + +# @ dbem +#: admin/em-options.php:1055 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Rezervace nebude potvrzena, dokud případÄ› správce schválí." + +# @ dbem +#: admin/em-options.php:1072 +msgid "Currency" +msgstr "mÄ›na" + +# @ dbem +#: admin/em-options.php:1072 +msgid "Choose your currency for displaying event pricing." +msgstr "Vyberte si mÄ›nu pro zobrazování událostí ceny." + +# @ dbem +#: admin/em-options.php:1112 +msgid "Single ticket mode?" +msgstr "JednosmÄ›rnou letenku režimu?" + +# @ dbem +#: admin/em-options.php:1112 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "V jednu jízdenku režimu mohou uživatelé vytvoÅ™it jen jednu jízdenku na rezervaci (a nebude vidÄ›t možnosti pÅ™idat více vstupenek)." + +# @ dbem +#: admin/em-options.php:1113 +msgid "Show ticket table in single ticket mode?" +msgstr "Zobrazit vstupenek tabulky v rámci jedné letenky režimu?" + +# @ dbem +#: admin/em-options.php:1113 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Pokud dáváte pÅ™ednost lístek stole jako s mnoha lístky, a to i pro jednotlivé jízdenky události, umožnit to." + +# @ dbem +#: admin/em-options.php:1114 +msgid "Show unavailable tickets?" +msgstr "Zobrazit dispozici lístky?" + +# @ dbem +#: admin/em-options.php:1114 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Můžete si vybrat, zda chcete zobrazovat k dispozici vstupenky na návÅ¡tÄ›vníky." + +# @ dbem +#: admin/em-options.php:1056 +msgid "Reserved unconfirmed spaces?" +msgstr "Vyhrazené prostory nepotvrzených?" + +# @ dbem +#: admin/em-options.php:1056 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Ve výchozím nastavení se akce prostory k dispozici, jakmile jsou dostateÄnÄ› potvrzené rezervace. Pro rezervaci míst, i když unnapproved, zvolte Ano." + +# @ dbem +#: admin/em-options.php:1115 +msgid "Show multiple tickets if logged out?" +msgstr "Zobrazit více lístků, pokud nejste pÅ™ihlášeni?" + +# @ dbem +#: admin/em-options.php:1115 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Pokud jste pÅ™ihlášeni ven, bude uživatel vyzván, aby si pro knihy. NicménÄ›, my můžeme ukázat vstupenky k dispozici, pokud máte více než jeden lístek." + +# @ dbem +#: admin/em-options.php:1058 +msgid "Allow overbooking when approving?" +msgstr "Povolit pÅ™eknihování pÅ™i schvalování?" + +# @ dbem +#: admin/em-options.php:1058 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Pokud se vám hodnÄ› Äeká rezervací a vy se rozhodnete, aby více rezervací než prostor dovolí, bude toto nastavení zmÄ›nit Ano, vám umožní pÅ™epsat Prostory hranici, kdy ruÄní schvalování." + +# @ dbem +#: admin/em-options.php:1087 +msgid "Allow guest bookings?" +msgstr "Povolit host rezervaci?" + +# @ dbem +#: admin/em-options.php:1087 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Pokud je povoleno, může host návÅ¡tÄ›vníci nabídky e-mailovou adresu a uživatelský úÄet se automaticky vytvoří pro nÄ› spolu s jejich rezervaci. Budou také moci znovu pÅ™ihlásit se, že novÄ› vytvoÅ™ený úÄet." + +# @ dbem +#: admin/em-options.php:1059 +msgid "Allow double bookings?" +msgstr "Povolit dvojité rezervace?" + +# @ dbem +#: admin/em-options.php:1059 +msgid "If enabled, users can book an event more than once." +msgstr "Pokud je povoleno, mohou uživatelé knihy událost více než jednou." + +# @ dbem +#: admin/em-options.php:1088 +msgid "Display login form?" +msgstr "Zobrazení pÅ™ihlaÅ¡ovací formulář?" + +# @ dbem +#: admin/em-options.php:1088 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Vyberte, zda chcete zobrazit pÅ™ihlaÅ¡ovací formulář v oblasti rezervaÄního formuláře pÅ™ipomenout své Äleny pÅ™ihlásit pÅ™ed provedením rezervace." + +# @ dbem +#: admin/em-options.php:1090 +msgid "Booking form feedback messages" +msgstr "RezervaÄní formulář hlášení zpÄ›tné vazby" + +# @ dbem +#: admin/em-options.php:1091 +msgid "When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below." +msgstr "Je-li rezervace provedena uživatelem, je zpÄ›tná vazba zpráva na obrázku v závislosti na výsledku, který lze upravit níže." + +# @ dbem +#: admin/em-options.php:1093 +msgid "Successful booking" +msgstr "úspěšné rezervace" + +# @ dbem +#: admin/em-options.php:1093 +msgid "When a booking is registered and confirmed." +msgstr "Pokud je rezervace zapsána a potvrzena." + +# @ dbem +#: admin/em-options.php:1094 +msgid "Successful pending booking" +msgstr "Úspěšné až rezervaci" + +# @ dbem +#: admin/em-options.php:1094 +msgid "When a booking is registered but pending." +msgstr "Je-li registrovaný uživatel, ale Äeká rezervaci." + +# @ dbem +#: admin/em-options.php:1095 +msgid "Not enough spaces" +msgstr "Není dostatek místa" + +# @ dbem +#: admin/em-options.php:1095 +msgid "When a booking cannot be made due to lack of spaces." +msgstr "Když si rezervaci nemÄ›lo být kvůli nedostatku prostor." + +# @ dbem +#: admin/em-options.php:1096 +msgid "Errors" +msgstr "chyby" + +# @ dbem +#: admin/em-options.php:1096 +msgid "When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors." +msgstr "Když si rezervaci nemÄ›lo být kvůli chybÄ› pÅ™i vyplňování formuláře. Pod tímto, bude dynamický seznam chyb." + +# @ dbem +#: admin/em-options.php:1097 +msgid "User must log in" +msgstr "Uživatel se musí pÅ™ihlásit" + +# @ dbem +#: admin/em-options.php:1097 +msgid "When a user must log in before making a booking." +msgstr "Když se uživatel musí pÅ™ihlásit jeÅ¡tÄ› pÅ™ed provedením rezervace." + +# @ dbem +#: admin/em-options.php:1098 +msgid "Error mailing user" +msgstr "Chyba mailing uživatele" + +# @ dbem +#: admin/em-options.php:1098 +msgid "If a booking is made and an email cannot be sent, this is added to the success message." +msgstr "Je-li rezervace provedena, a e-mail nelze odeslat, je to pÅ™idal k úspÄ›chu zprávy." + +# @ dbem +#: admin/em-options.php:1099 +msgid "Already booked" +msgstr "již rezervované" + +# @ dbem +#: admin/em-options.php:1099 +msgid "If the user made a previous booking and cannot double-book." +msgstr "Pokud si uživatel z pÅ™edchozí rezervace a nelze dvakrát knihy." + +# @ dbem +#: admin/em-options.php:1100 +msgid "No spaces booked" +msgstr "Bez mezer rezervace" + +# @ dbem +#: admin/em-options.php:1100 +msgid "If the user tries to make a booking without requesting any spaces." +msgstr "Pokud se uživatel pokusí provést rezervaci aniž by vyžadovaly žádné mezery." + +# @ dbem +#: admin/em-options.php:1162 +msgid "Booking Email Templates" +msgstr "Rezervace e-mailové Å¡ablony" + +# @ dbem +#: admin/em-options.php:1166 +msgid "Default contact person" +msgstr "Výchozí kontaktní osoba" + +# @ dbem +#: admin/em-options.php:1166 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Vyberte výchozí kontaktní osoby. Tento uživatel bude mít vždy, když je zamÄ›stnán kontaktní osoba, která není výslovnÄ› uvedeno na akci" + +# @ dbem +#: admin/em-options.php:1167 +msgid "Email events admin?" +msgstr "Email události admin?" + +# @ dbem +#: admin/em-options.php:1167 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Pokud byste chtÄ›li vÅ¡ech událostí potvrzení rezervace e-mailem na správce napsat svůj email (nechte prázdné, nechcete-li e-mailem)." + +# @ dbem +#: admin/em-options.php:1168 +msgid "Email contact person?" +msgstr "E-mail kontaktní osoby?" + +# @ dbem +#: admin/em-options.php:1168 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "ZaÅ¡krtnÄ›te tuto volbu, pokud chcete událost kontakt obdržíte e-mail, když nÄ›kdo knih míst.E-mail bude zaslán pÅ™i rezervaci poprvé provedena (bez ohledu na to, pokud potvrdí nebo v jednání)" + +# @ dbem +#: admin/em-options.php:1169 +msgid "Disable new registration email?" +msgstr "Zakázat nová registrace e-mailu?" + +# @ dbem +#: admin/em-options.php:1171 +msgid "Contact person booking confirmed" +msgstr "Kontaktní osoba rezervace potvrzena" + +# @ dbem +#: admin/em-options.php:1172 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "E-mail bude zaslán na akci kontaktu, pokud je rezervace hotova." + +# @ dbem +#: admin/em-options.php:1174 +msgid "Contact person email subject" +msgstr "Kontaktní osoba pÅ™edmÄ›t e-mailu" + +# @ dbem +#: admin/em-options.php:1175 +msgid "Contact person email" +msgstr "Kontaktní osoba e-mail" + +# @ dbem +#: admin/em-options.php:1177 +msgid "Contact person booking cancelled" +msgstr "Kontaktní osoba rezervace zruÅ¡ena" + +# @ dbem +#: admin/em-options.php:1178 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "E-mail bude zaslán na akci kontaktu, když nÄ›kdo zruší své rezervace." + +# @ dbem +#: admin/em-options.php:1180 +msgid "Contact person cancellation subject" +msgstr "Kontaktní osoba zruÅ¡ení pÅ™edmÄ›tu" + +# @ dbem +#: admin/em-options.php:1181 +msgid "Contact person cancellation email" +msgstr "Kontaktní osoba zruÅ¡ení e-mailu" + +# @ dbem +#: admin/em-options.php:1183 +msgid "Confirmed booking email" +msgstr "Potvrzené objednávky e-mailem" + +# @ dbem +#: admin/em-options.php:1184 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "To je vyslán pÅ™i potvrzení rezervace osoby. To bude odeslána automaticky, pokud jsou nutné povolení a rezervace je schválen. Je-li povolení jsou zakázány, je to poslal, když uživatel poprvé pÅ™edkládá svou rezervaci." + +# @ dbem +#: admin/em-options.php:1186 +msgid "Booking confirmed email subject" +msgstr "Rezervace potvrzena pÅ™edmÄ›t e-mailu" + +# @ dbem +#: admin/em-options.php:1187 +msgid "Booking confirmed email" +msgstr "Rezervace potvrzena e-mailem" + +# @ dbem +#: admin/em-options.php:1189 +msgid "Pending booking email" +msgstr "Až do rezervace e-mailem" + +# @ dbem +#: admin/em-options.php:1190 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "To bude zaslána osobÄ›, když poprvé podání rezervace. Není relevantní, jestliže rezervace nevyžadují schválení." + +# @ dbem +#: admin/em-options.php:1192 +msgid "Booking pending email subject" +msgstr "Rezervace do doby, než pÅ™edmÄ›t e-mailu" + +# @ dbem +#: admin/em-options.php:1193 +msgid "Booking pending email" +msgstr "Rezervace do doby, než e-mail" + +# @ dbem +#: admin/em-options.php:1195 +msgid "Rejected booking email" +msgstr "Odmítnuto rezervace e-mailem" + +# @ dbem +#: admin/em-options.php:1196 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "To bude odeslána automaticky, pokud je odmítnuta rezervace. Není relevantní, jestliže rezervace nevyžadují schválení." + +# @ dbem +#: admin/em-options.php:1198 +msgid "Booking rejected email subject" +msgstr "Rezervace odmítl pÅ™edmÄ›t e-mailu" + +# @ dbem +#: admin/em-options.php:1198 +msgid "The subject of the email sent to the person making a booking that is awaiting administrator approval. Not relevant if bookings don't require approval." +msgstr "PÅ™edmÄ›t e-mailu zaslaného osobÄ›, která rezervaci, která je Äeká schválení administrátorem. Není relevantní, jestliže rezervace nevyžadují schválení." + +# @ dbem +#: admin/em-options.php:1199 +msgid "Booking rejected email" +msgstr "Rezervace odmítl e-mail" + +# @ dbem +#: admin/em-options.php:1199 +msgid "The body of the email which will be sent to the person if the booking is rejected. Not relevant if bookings don't require approval." +msgstr "TÄ›lo e-mailu, který bude odeslán na osobu, pokud je rezervace odmítnut. Není relevantní, jestliže rezervace nevyžadují schválení." + +# @ dbem +#: admin/em-options.php:1202 +msgid "This will be sent when a user cancels their booking." +msgstr "To bude odeslána, když uživatel zruší své rezervace." + +# @ dbem +#: admin/em-options.php:1204 +msgid "Booking cancelled email subject" +msgstr "Rezervace zruÅ¡ena pÅ™edmÄ›t e-mailu" + +# @ dbem +#: admin/em-options.php:1205 +msgid "Booking cancelled email" +msgstr "Rezervace zruÅ¡ena e-mailem" + +# @ dbem +#: admin/em-options.php:1327 +msgid "Email Settings" +msgstr "Nastavení e-mailu" + +# @ dbem +#: admin/em-options.php:1332 +msgid "Notification sender name" +msgstr "Oznámení jméno odesílatele" + +# @ dbem +#: admin/em-options.php:1332 +msgid "Insert the display name of the notification sender." +msgstr "Vložte zobrazované jméno oznámení odesílatele." + +# @ dbem +#: admin/em-options.php:1333 +msgid "Notification sender address" +msgstr "Oznámení adresu odesílatele" + +# @ dbem +#: admin/em-options.php:1333 +msgid "Insert the address of the notification sender." +msgstr "Vložte adresu odesílatele oznámení." + +# @ dbem +#: admin/em-options.php:1334 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "Port, pÅ™es který budete e-mailem zaslat. UjistÄ›te se, že firewall neblokuje tento port" + +# @ dbem +#: admin/em-options.php:1335 +msgid "Mail sending method" +msgstr "Mail způsob odeslání" + +# @ dbem +#: admin/em-options.php:1335 +msgid "PHP mail function" +msgstr "PHP mail funkce" + +# @ dbem +#: admin/em-options.php:1335 +msgid "Select the method to send email notification." +msgstr "Vyberte způsob odeslání upozornÄ›ní e-mailem." + +# @ dbem +#: admin/em-options.php:1336 +msgid "Use SMTP authentication?" +msgstr "Použít ověření SMTP?" + +# @ dbem +#: admin/em-options.php:1336 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "SMTP autentizace je Äasto potÅ™eba. Pokud používáte Gmail, ujistÄ›te se, že nastavení tohoto parametru na Ano" + +# @ dbem +#: admin/em-options.php:1337 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "SMTP hostitel.Obvykle to odpovídá 'localhost'. Pokud používáte GMail, nastavte tuto hodnotu na 'ssl://smtp.gmail.com:465'." + +# @ dbem +#: admin/em-options.php:1338 +msgid "SMTP username" +msgstr "SMTP uživatelské jméno" + +# @ dbem +#: admin/em-options.php:1338 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Vložte uživatelské jméno bude použita pro přístup k SMTP serveru." + +# @ dbem +#: admin/em-options.php:1339 +msgid "SMTP password" +msgstr "heslo SMTP" + +# @ dbem +#: admin/em-options.php:1339 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Vložte heslo, které mají být použity pro přístup k SMTP serveru" + +# @ dbem +#: admin/em-options.php:1309 +msgid "Maximum width (px)" +msgstr "Maximální šířka (px)" + +# @ dbem +#: admin/em-options.php:1309 +msgid "The maximum allowed width for images uploades" +msgstr "Maximální povolená šířka obrázků obrázky" + +# @ dbem +#: admin/em-options.php:1310 +msgid "Maximum height (px)" +msgstr "Maximální výška (px)" + +# @ dbem +#: admin/em-options.php:1310 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "Maximální povolená výška nahrané obrázky, v pixelech" + +# @ dbem +#: admin/em-options.php:1311 +msgid "Maximum size (bytes)" +msgstr "Maximální velikost (bytes)" + +# @ dbem +#: admin/em-options.php:1311 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "Maximální povolená velikost pro obrazy nahrané v bajtech" + +# @ dbem +#: admin/em-options.php:1355 +msgid "User Capabilities" +msgstr "Uživatel možnosti" + +# @ dbem +#: admin/em-options.php:1359 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "UpozornÄ›ní: ZmÄ›na tÄ›chto hodnot může vést k odhalení dosud skrytých informací pro vÅ¡echny uživatele." + +# @ dbem +#: admin/em-options.php:1405 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Nyní si můžete dát jemnozrnné řízení s ohledem na to, co uživatelé mohou dÄ›lat s událostmi. Každý uživatel může mít roli plnit různé typy kroků." + +# @ dbem +#: admin/em-options.php:1398 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "Uživatel může spravovat ostatní uživatele individuálních rezervací a nastavení událostí rezervace." + +# @ dbem +#: admin/em-options.php:1399 +msgid "User can use and manage bookings with their events." +msgstr "Uživatel může použít a spravovat rezervace s jejich akcí." + +# @ dbem +#: admin/em-options.php:1287 +msgid "Allow anonymous event submissions?" +msgstr "Povolit anonymní případÄ› podání?" + +# @ dbem +#: admin/em-options.php:1287 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Chcete umožnit uživatelům, aby pÅ™edložily rezervace anonymnÄ›? Pokud ano, můžete využít nové [event_form] shortcode nebo em_event_form() Å¡ablona tag s tímto povolena." + +# @ dbem +#: admin/em-options.php:1288 +msgid "Guest Default User" +msgstr "Host Default User" + +# @ dbem +#: admin/em-options.php:1281 +#: admin/em-options.php:1289 +msgid "Success Message" +msgstr "zprávu o úspěšné operaci" + +# @ dbem +#: admin/em-options.php:1289 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Anonymní zadavatelé nemohou vidÄ›t nebo mÄ›nit jejich akce, jakmile pÅ™edloženy. Můžete upravit zprávu o úspěšné operaci, které naleznete zde." + +# @ dbem +#: admin/em-bookings.php:59 +msgid "Event Bookings Dashboard" +msgstr "Akce Rezervace Dashboard" + +# @ dbem +#: admin/em-bookings.php:63 +#: admin/em-bookings.php:114 +#: admin/em-bookings.php:166 +msgid "Pending Bookings" +msgstr "Až Rezervace" + +# @ dbem +#: admin/em-bookings.php:66 +msgid "Events With Bookings Enabled" +msgstr "Události s povolenými Rezervace" + +# @ dbem +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +msgid "You do not have the rights to manage this event." +msgstr "Nemáte právo spravovat tuto událost." + +# @ dbem +#: admin/em-bookings.php:93 +#, php-format +msgid "Manage %s Bookings" +msgstr "řídit %s Rezervace" + +# @ dbem +#: admin/em-bookings.php:94 +#: admin/em-bookings.php:148 +msgid "View/Edit Event" +msgstr "Zobrazit / Upravit událost" + +# @ dbem +#: admin/em-bookings.php:101 +msgid "Availability" +msgstr "dostupnost" + +# @ dbem +#: admin/em-bookings.php:101 +msgid "Spaces confirmed" +msgstr "prostory potvrzeno" + +# @ dbem +#: admin/em-bookings.php:117 +#: admin/em-bookings.php:169 +msgid "Confirmed Bookings" +msgstr "potvrzené rezervace" + +# @ dbem +#: admin/em-bookings.php:119 +#: admin/em-bookings.php:171 +msgid "Rejected Bookings" +msgstr "Odmítnuto Rezervace" + +# @ dbem +#: admin/em-bookings.php:121 +#: admin/em-bookings.php:173 +msgid "Cancelled Bookings" +msgstr "ZruÅ¡ené rezervace" + +# @ dbem +#: admin/em-bookings.php:137 +msgid "You do not have the rights to manage this ticket." +msgstr "Nemáte právo spravovat tento lístek." + +# @ dbem +#: admin/em-bookings.php:147 +#, php-format +msgid "Ticket for %s" +msgstr "Vstupenka na %s" + +# @ dbem +#: admin/em-bookings.php:149 +msgid "View Event Bookings" +msgstr "Zobrazit událost Rezervace" + +# @ dbem +#: admin/em-bookings.php:158 +msgid "Min" +msgstr "můj" + +# @ dbem +#: admin/em-bookings.php:159 +msgid "Max" +msgstr "Max" + +# @ dbem +#: admin/em-bookings.php:160 +msgid "Start" +msgstr "zaÄátek" + +# @ dbem +#: admin/em-bookings.php:161 +msgid "End" +msgstr "konec" + +# @ dbem +#: admin/em-bookings.php:198 +msgid "Edit Booking" +msgstr "Upravit Rezervace" + +# @ dbem +#: admin/em-bookings.php:206 +msgid "Event Details" +msgstr "podrobnosti o události" + +# @ dbem +#: admin/em-bookings.php:217 +msgid "Date/Time" +msgstr "Datum / Äas" + +# @ dbem +#: admin/em-bookings.php:229 +#: admin/em-bookings.php:389 +msgid "Personal Details" +msgstr "osobní data" + +# @ dbem +#: admin/em-bookings.php:237 +msgid "Booking Details" +msgstr "Rezervace Podrobnosti" + +# @ dbem +#: admin/em-bookings.php:283 +msgid "Totals" +msgstr "souÄty" + +# @ dbem +#: admin/em-bookings.php:302 +msgid "Modify Booking" +msgstr "zmÄ›nit Rezervace" + +# @ dbem +#: admin/em-bookings.php:307 +msgid "Note: ticket availability not taken into account (i.e. you can overbook). Confirmation email is not resent automatically." +msgstr "Poznámka: dostupnosti vstupenek nejsou brány v úvahu (napÅ™. si můžete ZmÄ›nit rezervaci). Potvrzovací e-mail není zlé automaticky." + +# @ dbem +#: admin/em-bookings.php:323 +msgid "Booking Notes" +msgstr "Rezervace Poznámky" + +# @ dbem +#: admin/em-bookings.php:326 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Můžete pÅ™idat soukromé poznámky níže pro interní reference, že jen akce manažerů uvidí." + +# @ dbem +#: admin/em-bookings.php:331 +msgid "wrote" +msgstr "napsal" + +# @ dbem +#: admin/em-bookings.php:377 +msgid "Manage Person's Booking" +msgstr "Správa Osoby Rezervace" + +# @ dbem +#: admin/em-bookings.php:379 +msgid "Edit User" +msgstr "Upravit uživatele" + +# @ dbem +#: admin/em-bookings.php:400 +msgid "Past And Present Bookings" +msgstr "Minulost a souÄasnost Rezervace" + +# @ dbem +#: admin/em-admin.php:124 +#, php-format +msgid "

              Events Manager is ready to go! It is highly recommended you read the Getting Started guide on our site, as well as checking out the Settings Page. Dismiss

              " +msgstr "

              Events Manager je hotovo! DůraznÄ› se doporuÄuje, abyste si pÅ™eÄetli ZaÄínáme průvodci na naÅ¡ich stránkách, stejnÄ› jako mimo kontrolu nastavení stránky. propustit

              " + +# @ dbem +#: admin/em-admin.php:179 +#, php-format +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Tato stránka odpovídá Events Manager události stránky. Její obsah bude pÅ™ekryté tím Events Manager, Pokud ale obsahují slovo CONTENTS (pÅ™esnÄ› ve mÄ›stech) a obklopují jej s dalším textem, pouze CONTENTS bude pÅ™epsán.Pokud chcete zmÄ›nit způsob, jakým VaÅ¡e akce vypadat, pÅ™ejdÄ›te na nastavení strana. " + +# @ dbem +#: em-functions.php:74 +#, php-format +msgid "Displaying %s–%s of %s" +msgstr "Zobrazeno %s - %s z %s" + +# @ dbem +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +msgid "Approve" +msgstr "schvalovat" + +# @ dbem +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-rejected.php:55 +msgid "Decline" +msgstr "pokles" + +# @ dbem +#: admin/bookings/em-cancelled.php:84 +#: admin/bookings/em-confirmed.php:85 +#: admin/bookings/em-pending.php:99 +#: admin/bookings/em-rejected.php:84 +msgid "Booker" +msgstr "Booker" + +# @ dbem +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "obnovit" + +# @ dbem +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-rejected.php:112 +msgid "Edit/View" +msgstr "Úpravy / Zobrazit" + +# @ dbem +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Žádné rezervace zruÅ¡ena." + +# @ dbem +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +msgid "Unapprove" +msgstr "neschválené" + +# @ dbem +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +msgid "Reject" +msgstr "odmítnout" + +# @ dbem +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +msgid "No confirmed bookings." +msgstr "Žádné potvrzené rezervace." + +# @ dbem +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Žádné odmítl rezervace." + +# @ dbem +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Žádné nevyřízené objednávky." + +# @ dbem +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "vÅ¡echny akce" + +# @ dbem +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "budoucí události" + +# @ dbem +#: admin/bookings/em-events.php:51 +msgid "Total" +msgstr "celkový" + +# @ default +#: admin/bookings/em-events.php:72 +msgid "Filter" +msgstr "filtr" + +# @ dbem +#: admin/em-options.php:615 +#: admin/em-options.php:665 +#: admin/em-options.php:755 +#: classes/em-location-posts-admin.php:41 +msgid "Town" +msgstr "mÄ›sto" + +# @ dbem +#: admin/em-admin.php:41 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Získání nápovÄ›dy pro Events Manager" + +# @ dbem +#: admin/em-help.php:25 +msgid "Placeholders for customizing event pages" +msgstr "Vyhrazená místa pro vlastní akci stránky" + +# @ dbem +#: admin/em-help.php:26 +#, php-format +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "V nastavení stránky, najdete různé textových polí, kde si můžete upravovat, jak vypadá informace o události, jako je například událost a místo seznamu. Použití zástupných symbolů níže, můžete si vybrat, jaké informace by mÄ›ly být zobrazeny." + +# @ dbem +#: admin/em-admin.php:90 +#: classes/em-people.php:28 +msgid "Events Manager" +msgstr "Events Manager" + +# @ default +#: em-functions.php:213 +msgid "Mon" +msgstr "Mon" + +# @ default +#: em-functions.php:213 +msgid "Tue" +msgstr "út." + +# @ default +#: em-functions.php:213 +msgid "Wed" +msgstr "stÅ™eda" + +# @ default +#: em-functions.php:213 +msgid "Thu" +msgstr "Ät." + +# @ default +#: em-functions.php:213 +msgid "Fri" +msgstr "pá." + +# @ default +#: em-functions.php:213 +msgid "Sat" +msgstr "sobota" + +# @ default +#: em-functions.php:213 +msgid "Sun" +msgstr "nedÄ›le" + +# @ dbem +#: classes/em-event-post-admin.php:192 +#: classes/em-event-post-admin.php:359 +#: classes/em-event-post-admin.php:365 +msgid "Group Ownership" +msgstr "Skupina vlastnictví" + +# @ dbem +#: classes/em-event-post-admin.php:185 +msgid "Bookings Stats" +msgstr "Rezervace Stats" + +# @ dbem +#: templates/forms/event/booking-stats.php:12 +msgid "Available Spaces" +msgstr "prostory k dispozici" + +# @ dbem +#: templates/forms/event/booking-stats.php:13 +msgid "Confirmed Spaces" +msgstr "potvrzeno prostory" + +# @ dbem +#: templates/forms/event/booking-stats.php:14 +msgid "Pending Spaces" +msgstr "Do doby, než prostory" + +# @ dbem +#: templates/forms/event/booking-stats.php:32 +msgid "No responses yet!" +msgstr "Zatím žádný komentář!" + +# @ dbem +#: classes/em-event-post-admin.php:246 +#, php-format +msgid "No categories available, create one here first" +msgstr "K dispozici žádné kategorie, vytvoÅ™it tu první" + +# @ dbem +#: templates/forms/event-editor.php:169 +msgid "No image uploaded for this event yet" +msgstr "Obrázek není k dispozici nahrané na tuto akci jeÅ¡tÄ›" + +# @ dbem +#: classes/em-event-post-admin.php:189 +#: classes/em-event-post-admin.php:362 +msgid "Attributes" +msgstr "atributy" + +# @ dbem +#: templates/forms/event/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Nemáte žádné vlastní atributy definované v nÄ›které z vaÅ¡ich akcí Správce nastavení Å¡ablony. Prosím, pÅ™idejte nastavení stránky" + +# @ dbem +#: templates/forms/event/attributes.php:50 +msgid "Depreciated Attributes" +msgstr "oslabil atributy" + +# @ dbem +#: templates/forms/event/attributes.php:83 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings to add attribute placeholders." +msgstr "Aby bylo možné použít atributy, je nutné definovat nÄ›které v Å¡ablonách, jinak se nikdy show. PÅ™ejít na události> Nastavení pÅ™idat atribut zástupných symbolů." + +# @ dbem +#: em-install.php:284 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_NAME on #F #j, #Y. He wants to reserve #_BOOKINGSPACES spaces.
              Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
              Yours faithfully,
              Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) se zúÄastní #_NAME na #F #j, #Y. Chce rezervy #_BOOKINGSPACES prostory.
              Nyní je #_BOOKEDSPACES prostory vyhrazené, #_AVAILABLESPACES jsou stále k dispozici.
              S přátelským pozdravem,
              Events Manager - http://wp-events-plugin.com" + +# @ dbem +#: em-install.php:284 +#: em-install.php:285 +#: em-install.php:286 +#: em-install.php:287 +#: em-install.php:288 +#: em-install.php:289 +#: em-install.php:290 +#: em-install.php:291 +msgid "

              -------------------------------
              Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

              -------------------------------
              Powered by Events Manager - http://wp-events-plugin.com" + +# @ dbem +#: em-install.php:285 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_NAME on #F #j, #Y. He wanted to reserve #_BOOKINGSPACES spaces.
              Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
              Yours faithfully,
              Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) zrušena jeho rezervace #_NAME na #F #j, #Y. Chtěl rezervy #_BOOKINGSPACES prostory.
              Nyní je #_BOOKEDSPACES prostory vyhrazené, #_AVAILABLESPACES jsou stále k dispozici.
              S přátelským pozdravem,
              Events Manager - http://wp-events-plugin.com" + +# @ dbem +#: em-install.php:286 +msgid "Dear #_BOOKINGNAME,
              you have successfully reserved #_BOOKINGSPACES space/spaces for #_NAME.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "drahý #_BOOKINGNAME,
              Úspěšně jste vyhrazeny #_BOOKINGSPACES prostoru / prostoru pro #_NAME.
              S přátelským pozdravem,
              #_CONTACTNAME" + +# @ dbem +#: em-install.php:287 +msgid "Dear #_BOOKINGNAME,
              You have requested #_BOOKINGSPACES space/spaces for #_NAME.
              Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "drahý #_BOOKINGNAME,
              Požádali jste #_BOOKINGSPACES prostoru / prostoru pro #_NAME.
              VaÅ¡e rezervace je v souÄasné dobÄ› Äeká na schválení naÅ¡imi administrátory. Po schválení obdržíte automatické potvrzení.
              S přátelským pozdravem,
              #_CONTACTNAME" + +# @ dbem +#: em-install.php:288 +msgid "Dear #_BOOKINGNAME,
              Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been rejected.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "drahý #_BOOKINGNAME,
              Vaše žádost o rezervaci #_BOOKINGSPACES míst na #_NAME na #F #j, #Y byla zamítnuta.
              S přátelským pozdravem,
              #_CONTACTNAME" + +# @ dbem +#: em-install.php:289 +msgid "Dear #_BOOKINGNAME,
              Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been cancelled.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "drahý #_BOOKINGNAME,
              Vaše žádost o rezervaci #_BOOKINGSPACES míst na #_NAME na #F #j, #Y byla zrušena.
              S přátelským pozdravem,
              #_CONTACTNAME" + +# @ dbem +#: em-install.php:379 +#: em-install.php:387 +#: em-install.php:418 +#, php-format +msgid "No %s" +msgstr "ne %s" + +# @ dbem +#: em-debug.php:18 +#: em-install.php:406 +msgid "
            • No events in this location
            • " +msgstr "
            • Žádné události v této lokalitÄ›
            • " + +# @ dbem +#: em-install.php:419 +msgid "
            • No events in this category
            • " +msgstr "
            • Žádné události v této kategorii
            • " + +# @ dbem +#: em-install.php:487 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Rezervace úspěšná, až do potvrzení (také obdržíte e-mail, jakmile potvrzeno)." + +# @ dbem +#: em-install.php:488 +msgid "Booking successful." +msgstr "Rezervace úspěšný." + +# @ dbem +#: em-install.php:490 +msgid "You must log in or register to make a booking." +msgstr "Musíte se pÅ™ihlásit nebo zaregistrovat k vytvoÅ™ení rezervace." + +# @ dbem +#: em-install.php:491 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "NicménÄ›, tam byly nÄ›jaké problémy pÅ™i odesílání e-mailů Vám potvrzení a / nebo v případÄ› kontaktní osoby. Možná budete chtít kontaktovat přímo a dát jim vÄ›dÄ›t o této chybÄ›." + +# @ dbem +#: em-install.php:492 +msgid "Booking could not be created" +msgstr "Rezervace nebylo možné vytvoÅ™it" + +# @ dbem +#: em-install.php:493 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Tento e-mail již v naÅ¡em systému, pÅ™ihlaÅ¡te se zaregistrovat pokraÄovat s vaší rezervaci." + +# @ dbem +#: em-install.php:494 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Nový uživatelský úÄet byl vytvoÅ™en pro vás. Zkontrolujte prosím e-mail pro přístupové údaje." + +# @ dbem +#: em-install.php:495 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Tam byl problém vytvoÅ™it uživatelský úÄet, obraÅ¥te se na správce webu." + +# @ dbem +#: em-install.php:496 +msgid "You already have booked a seat at this event." +msgstr "Ty už si rezervovali místo na této akci." + +# @ dbem +#: em-install.php:497 +msgid "You must request at least one space to book an event." +msgstr "Musíte požádat alespoň o jedno místo knihu událost." + +# @ dbem +#: em-install.php:504 +#: em-install.php:512 +msgid "Booking Cancelled" +msgstr "Rezervace zruÅ¡ena" + +# @ dbem +#: em-install.php:506 +msgid "Booking Pending" +msgstr "Do rezervace" + +# @ dbem +#: em-install.php:508 +msgid "Booking Rejected" +msgstr "Rezervace Odmítnuto" + +# @ dbem +#: em-install.php:510 +msgid "Booking Confirmed" +msgstr "Potvrzeno Rezervace" + +# @ dbem +#: em-install.php:515 +msgid "Powered by" +msgstr "Powered by" + +# @ dbem +#: em-install.php:516 +msgid "Bookings - #_NAME" +msgstr "Rezervace - #_NAME" + +# @ default +#: em-debug.php:44 +#, php-format +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Nacházíte se v módu akce Správci ladÄ›ní. Chcete-li režim ladÄ›ní vypnout, jít na nastavení strana." + +# @ dbem +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "Žádné vstupenek za pÅ™edpokladu, id" + +# @ dbem +#: em-actions.php:181 +#, php-format +msgid "%s successfully deleted" +msgstr "%s úspěšnÄ› smazána" + +# @ dbem +#: em-actions.php:358 +#, php-format +msgid "Booking %s" +msgstr "Rezervace %s" + +# @ dbem +#: events-manager.php:295 +#: events-manager.php:303 +#: events-manager.php:309 +#, php-format +msgid "You do not have permission to publish %s" +msgstr "Nemáte oprávnÄ›ní k publikování %s" + +# @ dbem +#: events-manager.php:299 +#: events-manager.php:307 +#: events-manager.php:313 +#: events-manager.php:319 +#, php-format +msgid "You do not have permission to edit %s" +msgstr "Nemáte oprávnÄ›ní k úpravám %s" + +# @ dbem +#: events-manager.php:296 +#: events-manager.php:304 +#: events-manager.php:310 +#, php-format +msgid "You do not have permission to delete others %s" +msgstr "Nemáte oprávnÄ›ní k odstranÄ›ní dalších %s" + +# @ dbem +#: events-manager.php:298 +#: events-manager.php:306 +#: events-manager.php:312 +#, php-format +msgid "You do not have permission to edit others %s" +msgstr "Nemáte oprávnÄ›ní k úpravám dalších %s" + +# @ dbem +#: events-manager.php:292 +#, php-format +msgid "You do not have permission to manage others %s" +msgstr "Nemáte oprávnÄ›ní ke správÄ› ostatní %s" + +# @ dbem +#: admin/em-options.php:835 +#: events-manager.php:292 +#: events-manager.php:293 +msgid "bookings" +msgstr "Rezervace" + +# @ dbem +#: events-manager.php:297 +#: events-manager.php:305 +#: events-manager.php:311 +#: events-manager.php:318 +#, php-format +msgid "You do not have permission to delete %s" +msgstr "Nemáte oprávnÄ›ní k odstranÄ›ní %s" + +# @ dbem +#: events-manager.php:293 +#, php-format +msgid "You do not have permission to manage %s" +msgstr "Nemáte oprávnÄ›ní ke správÄ› %s" + +# @ dbem +#: admin/em-options.php:402 +#: admin/em-options.php:703 +#: em-posts.php:66 +#: em-posts.php:69 +msgid "Event Categories" +msgstr "kategorie událostí" + +# @ dbem +#: admin/em-admin.php:40 +msgid "Events Manager Settings" +msgstr "Události Manažer Nastavení" + +# @ dbem +#: admin/em-admin.php:40 +#: admin/em-admin.php:199 +#: admin/em-admin.php:207 +msgid "Settings" +msgstr "nastavení" + +# @ dbem +#: admin/em-admin.php:41 +msgid "Help" +msgstr "pomoc" + +# @ dbem +#: admin/em-bookings.php:289 +msgid "Tax" +msgstr "daň" + +# @ dbem +#: admin/em-bookings.php:294 +msgid "Total (inc. tax)" +msgstr "celkový (zahrnovat daňové)" + +# @ dbem +#: templates/forms/event/bookings.php:24 +msgid "You can have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Můžete mít jednu nebo více vstupenek, nÄ›které lístky se availalble za urÄitých podmínek, napÅ™. Äasné rezervace, skupinové slevy, maximálnÄ› Rezervace na letenku, atd." + +# @ dbem +#: templates/forms/event/bookings.php:24 +msgid "Basic HTML is allowed in ticket labels and descriptions." +msgstr "Základní HTML je povoleno v blokovém Å¡títky a popisky." + +# @ dbem +#: admin/em-options.php:1117 +msgid "Ticket Price (Descending)" +msgstr "Cena jízdenky (sestupnÄ›)" + +# @ dbem +#: admin/em-options.php:1118 +msgid "Ticket Price (Ascending)" +msgstr "Cena jízdenky (vzestupnÄ›)" + +# @ dbem +#: admin/em-options.php:1119 +msgid "Ticket Name (Ascending)" +msgstr "Název vstupenek (vzestupnÄ›)" + +# @ dbem +#: admin/em-options.php:1120 +msgid "Ticket Name (Descending)" +msgstr "Název vstupenek (sestupnÄ›)" + +# @ dbem +#: admin/em-options.php:1057 +msgid "Can users cancel their booking?" +msgstr "Uživatelé mohou zruÅ¡it svou rezervaci?" + +# @ dbem +#: admin/em-options.php:1057 +msgid "If enabled, users can cancel their bookings themselves from their bookings page." +msgstr "Pokud je povoleno, uživatelé mohou zcela zruÅ¡it svůj rezervace se od své rezervace stránku." + +# @ dbem +#: admin/em-options.php:1073 +msgid "Tax Rate" +msgstr "Sazba danÄ›" + +# @ dbem +#: admin/em-options.php:1073 +msgid "Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price)." +msgstr "PÅ™idat sazby danÄ› do cen letenek (vstup 10 pÅ™idá 10% k cenÄ› letenky)." + +# @ dbem +#: admin/em-options.php:1074 +msgid "Add tax to ticket price?" +msgstr "PÅ™idání daň cenÄ› letenky?" + +# @ dbem +#: admin/em-options.php:1074 +msgid "When displaying ticket prices and booking totals, include the tax automatically?" +msgstr "PÅ™i zobrazení Ceny vstupenek a rezervace souÄty, zahrnuje daň, automaticky?" + +# @ dbem +#: admin/em-options.php:1122 +msgid "Order Tickets By" +msgstr "Objednat vstupenek" + +# @ dbem +#: admin/em-options.php:1122 +msgid "Choose which order your tickets appear." +msgstr "Vyberte si, která aby si lístky objeví." + +# @ dbem +#: admin/em-options.php:1130 +msgid "No-User Booking Mode" +msgstr "No-uživatelů on-line režimu" + +# @ dbem +#: admin/em-options.php:1134 +msgid "By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them." +msgstr "Ve výchozím nastavení se pÅ™i rezervaci provádí uživatel, je tato rezervace vázána na uživatelský úÄet, v případÄ›, že uživatel není registrován ani pÅ™ihlášeni a hostující rezervace je povoleno, bude vytvoÅ™en úÄet pro nÄ›." + +# @ dbem +#: admin/em-options.php:1136 +msgid "Warning : Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information." +msgstr "varování: Různé funkce poskytované uživatelům úÄtu nebude k dispozici, napÅ™. sledování rezervace. Jakmile aktivujete tuto a vyberte uživatele, kterým se mÄ›ní tyto hodnoty zabrání starší non-uživatele rezervace zobrazování správné informace." + +# @ dbem +#: admin/em-options.php:1139 +msgid "Enable No-User Booking Mode?" +msgstr "Povolení No-Uživatel Rezervace režim?" + +# @ dbem +#: admin/em-options.php:1139 +msgid "This disables user registrations for bookings." +msgstr "Zakáže uživatelské registrace pro rezervace." + +# @ dbem +#: admin/em-options.php:1145 +msgid "Assign bookings to" +msgstr "PÅ™iÅ™azení rezervací" + +# @ dbem +#: admin/em-options.php:1214 +msgid "Event Email Templates" +msgstr "Å ablony akce Email" + +# @ dbem +#: admin/em-options.php:1224 +#: em-install.php:333 +msgid "Event Approved" +msgstr "Schválené akce" + +# @ dbem +#: admin/em-options.php:1225 +msgid "An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the publish_events capability." +msgstr "E-mail bude zaslán na akci vlastníkovi, když je schválena jejich akce. Uživatele, kteří vyžadují případÄ› schválení nemají publish_events funkce." + +# @ dbem +#: admin/em-options.php:1221 +#: admin/em-options.php:1227 +msgid "Event approved subject" +msgstr "Akce schváleno s výhradou" + +# @ dbem +#: admin/em-options.php:1222 +#: admin/em-options.php:1228 +msgid "Event approved email" +msgstr "Akce schválené e-mail" + +# @ dbem +#: classes/em-booking.php:376 +#: classes/em-booking.php:384 +msgid "Guest User" +msgstr "uživatel Guest" + +# @ dbem +#: classes/em-booking.php:380 +msgid "Not Supplied" +msgstr "není souÄástí dodávky" + +# @ dbem +#: classes/em-ticket.php:157 +msgid "Please enter a valid ticket price e.g. 10.50 (no currency signs)" +msgstr "Zadejte prosím platnou jízdenku ceny napÅ™. 10.50 (ne znaky mÄ›n)" + +# @ dbem +#: em-install.php:290 +msgid "Dear #_CONTACTNAME,
              Your event #_NAME on #F #j, #Y has been approved.
              You can view your event here: #_EVENTURL" +msgstr "drahý #_CONTACTNAME,
              Vaše akce #_NAME na #F #j, #Y byla schválena.
              Můžete si zobrazit akce zde:#_EVENTURL" + +# @ dbem +#: templates/placeholders/bookingform.php:17 +msgid "This event is fully booked." +msgstr "Tato akce je již plnÄ› obsazen." + +# @ dbem +#: admin/em-admin.php:91 +msgid "Update Blogs" +msgstr "aktualizace Blogy" + +# @ dbem +#: admin/em-admin.php:139 +#, php-format +msgid "Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Uh Oh! Z nÄ›jakého důvodu WordPress Nelze vytvoÅ™it události, stránky pro Vás (nebo jste právÄ› odstranili). Není se Äeho bát když vÅ¡e, co musíte udÄ›lat, je vytvoÅ™it prázdnou stránku, pojmenujte ho jak chcete, a zvolte ji jako svůj stránce Události v stránce nastavení . Omlouvám se za další krok! Pokud víte, co dÄ›láte, můžete si to udÄ›lal schválnÄ›, pokud ano, tuto zprávu ignorovat " + +# @ dbem +#: admin/em-admin.php:148 +msgid "There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update." +msgstr "K dispozici je novÄ›jší verze událostí Manager Pro, která je potÅ™ebná pro tuto aktuální verzi událostí Manager. PÅ™ejdÄ›te na stránky pluginu a stáhnÄ›te nejnovÄ›jší aktualizace." + +# @ dbem +#: admin/em-admin.php:159 +#, php-format +msgid "MultiSite options have moved here. Dismiss message" +msgstr "MultiSite volby posunuly zde . Odmítnout zprávu " + +# @ dbem +#: admin/em-admin.php:171 +#, php-format +msgid "Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" +msgstr "Zatímco oni budou stále zobrazovat pomocí zástupných symbolů, musíte migraci umístÄ›ní a události obrázky , aby pro nÄ› objeví v upravovat formuláře a knihovny médií. Odmítnout zprávu " + +# @ dbem +#: admin/em-admin.php:213 +#: admin/em-options.php:1463 +msgid "Uninstall" +msgstr "odinstalovat" + +# @ default +#: admin/em-ms-options.php:6 +msgid "Update Network" +msgstr "aktualizace sítÄ›" + +# @ default +#: admin/em-ms-options.php:24 +msgid "To update your network blogs with the latest Events Manager automatically, click the update button below." +msgstr "Chcete-li aktualizovat sítÄ› blogy s posledními událostmi Manager automaticky, klepnÄ›te na tlaÄítko Aktualizovat níže." + +# @ dbem +#: admin/em-ms-options.php:27 +msgid "Update" +msgstr "aktualizovat" + +# @ dbem +#: admin/em-ms-options.php:136 +#: admin/em-options.php:267 +#: admin/em-options.php:1051 +msgid "General" +msgstr "obecný" + +# @ default +#: admin/em-ms-options.php:157 +#, php-format +msgid "%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network." +msgstr "%s patřící k jiným sub-stránky budou mít navíc Slug preppended na to, aby na hlavní stránce je možné rozliÅ¡ovat mezi vlastní% s, a ti, kteří patří na jiná místa v síti." + +# @ dbem +#: admin/em-ms-options.php:158 +#, php-format +msgid "When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site." +msgstr "PÅ™i zobrazení globální %s na hlavní stránce máte možnost uživatelům, kteří zobrazují %s detaily na hlavní stránce, nebo směřuje k sub-stránky." + +# @ dbem +#: admin/em-ms-options.php:159 +#, php-format +msgid "Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Zobrazí %s od vÅ¡ech stránkách v síti ve výchozím nastavení. Stále můžete omezit %s tím, blog pomocí Å¡ablon a zkratková slova spolu s blog atribut. Vyžaduje globální tabulky zapnout." + +# @ default +#: admin/em-ms-options.php:160 +#, php-format +msgid "You must have assigned a %s page in your main blog settings for this to work." +msgstr "Můžete musí pÅ™iÅ™adili %s tránku v hlavní nastavení blogu pro tuto práci." + +# @ dbem +#: admin/em-ms-options.php:162 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#, php-format +msgid "%s Options" +msgstr "%s Možnosti" + +# @ dbem +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:173 +#, php-format +msgid "Link sub-site %s directly to sub-site?" +msgstr "Link sub-stránky %s přímo na sub-stránky?" + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, php-format +msgid "Global %s slug" +msgstr "Globální %s Slug" + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +msgid "Example:" +msgstr "Příklad:" + +# @ dbem +#: admin/em-ms-options.php:167 +msgid "Locations on main blog?" +msgstr "Místa na hlavní blog?" + +# @ dbem +#: admin/em-ms-options.php:167 +msgid "If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog." +msgstr "Pokud byste radÄ›ji vÅ¡echny lokality patří k vaší hlavní blog, budou uživatelé v podstránky stále možnost vytvoÅ™it místa, ale že se skuteÄné umístÄ›ní jsou vytvářeny a pobývat na území hlavního blogu." + +# @ dbem +#: admin/em-ms-options.php:172 +#, php-format +msgid "Display global %s on main blog?" +msgstr "Displej globální %s na hlavní blog?" + +# @ dbem +#: admin/em-options.php:112 +msgid "Settings have been reset back to default. Your events, locations and categories have not been modified." +msgstr "Nastavení byly nastaveny zpÄ›t do výchozího nastavení. VaÅ¡e akce, lokality a kategorie nebyly zmÄ›nÄ›ny." + +# @ dbem +#: admin/em-options.php:125 +#: admin/em-options.php:129 +msgid "Reset Events Manager" +msgstr "Obnovit Events Manager" + +# @ dbem +#: admin/em-options.php:126 +msgid "Are you sure you want to reset Events Manager?" +msgstr "Jste si jisti, že chcete obnovit Events Manager?" + +# @ dbem +#: admin/em-options.php:127 +msgid "All your settings, including email templates and template formats for Events Manager will be deleted." +msgstr "VÅ¡echna vaÅ¡e nastavení, vÄetnÄ› e-mailové Å¡ablony a Å¡ablony formáty pro manažera akce budou smazány." + +# @ dbem +#: admin/em-options.php:141 +msgid "Uninstall Events Manager" +msgstr "odinstalovat Events Manager" + +# @ dbem +#: admin/em-options.php:142 +msgid "Are you sure you want to uninstall Events Manager?" +msgstr "Jste si jisti, že chcete odinstalovat Events Manager?" + +# @ dbem +#: admin/em-options.php:143 +msgid "All your settings and events will be permanently deleted. This cannot be undone." +msgstr "VÅ¡echna vaÅ¡e nastavení a události budou trvale odstranÄ›ny. To nelze vrátit zpÄ›t." + +# @ dbem +#: admin/em-options.php:144 +#, php-format +msgid "If you just want to deactivate the plugin, go to your plugins page." +msgstr "Pokud si jen chcete deaktivovat plugin, pÅ™ejdÄ›te na stránku pluginy ." + +# @ dbem +#: admin/em-options.php:146 +msgid "Uninstall and Deactivate" +msgstr "Odinstalovat a deaktivovat" + +# @ dbem +# @ default +#: admin/em-options.php:268 +#: admin/em-options.php:418 +#: admin/em-options.php:581 +msgid "Pages" +msgstr "stránky" + +# @ dbem +#: admin/em-options.php:269 +msgid "Formats/Layouts" +msgstr "Formáty / rozvržení" + +# @ dbem +#: admin/em-options.php:271 +msgid "Booking Options" +msgstr "Rezervace Možnosti" + +# @ dbem +#: admin/em-options.php:273 +msgid "Emails" +msgstr "E-maily" + +# @ dbem +#: admin/em-options.php:287 +msgid "General Options" +msgstr "obecné možnosti" + +# @ dbem +#: admin/em-options.php:290 +msgid "Disable thumbnails?" +msgstr "Zakázat náhledy?" + +# @ dbem +#: admin/em-options.php:290 +msgid "Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here)." +msgstr "Zvolte Ano pro vypnutí Události Manager umožňuje miniatur (nÄ›která témata již může toto umožnilo, kterou nelze vypnout zde)." + +# @ dbem +#: admin/em-options.php:293 +#: admin/em-options.php:334 +#: admin/em-options.php:346 +#, php-format +msgid "%s Settings" +msgstr "%s nastavení" + +# @ dbem +#: admin/em-options.php:297 +msgid "Enable recurrence?" +msgstr "Povolení opakování?" + +# @ dbem +#: admin/em-options.php:299 +msgid "Enable tags?" +msgstr "Povolit znaÄky?" + +# @ dbem +#: admin/em-options.php:299 +msgid "Select yes to enable the tag features" +msgstr "Zvolte Ano, aby znaÄku funkcí" + +# @ dbem +#: admin/em-options.php:301 +msgid "Enable categories?" +msgstr "Povolit kategorií?" + +# @ dbem +#: admin/em-options.php:310 +msgid "If an event does not have a category assigned when editing, this one will be assigned automatically." +msgstr "Pokud se událost nemá kategorii pÅ™iÅ™azen pÅ™i úpravách bude tento bude pÅ™iÅ™azen automaticky." + +# @ dbem +#: admin/em-options.php:313 +msgid "Enable event attributes?" +msgstr "Povolit akce atributy?" + +# @ dbem +#: admin/em-options.php:314 +msgid "Enable event custom fields?" +msgstr "Povolit pole událostí na zakázku?" + +# @ dbem +#: admin/em-options.php:314 +msgid "Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area." +msgstr "Vlastní pole jsou stejné jako atributy, kromÄ› tebe nemůže omezit urÄité hodnoty, mohou uživatelé pÅ™idávat jakékoliv vlastního pole dvojici název / hodnota. K dispozici pouze v oblasti admin WordPress." + +# @ dbem +#: admin/em-options.php:338 +msgid "Enable locations?" +msgstr "Povolit míst?" + +# @ dbem +#: admin/em-options.php:338 +msgid "If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats." +msgstr "Pokud zakážete míst, mÄ›jte na pamÄ›ti, že byste mÄ›li odstranit vaÅ¡i polohu stránku, zkratková a související symboly z vaÅ¡eho formátu." + +# @ dbem +#: admin/em-options.php:340 +msgid "Require locations for events?" +msgstr "Vyžaduje umístÄ›ní událostí?" + +# @ dbem +#: admin/em-options.php:340 +msgid "Setting this to no will allow you to submit events without locations. You can use the {no_location}...{/no_location} or {has_location}..{/has_location} conditional placeholder to selectively display location information." +msgstr "Nastavení to ne vám umožní pÅ™edkládat události bez umístÄ›ní. Můžete použít {no_location}...{/no_location} nebo {has_location}..{/has_location} podmínÄ›né zástupný selektivnÄ› zobrazit informace o poloze." + +# @ dbem +#: admin/em-options.php:346 +#: admin/em-options.php:825 +#: admin/em-options.php:1393 +msgid "Other" +msgstr "další" + +# @ dbem +#: admin/em-options.php:387 +msgid "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter." +msgstr "Mnoho témat zobrazit další meta informace na příspÄ›vek Stránky jako je \"Vystavil\", nebo \"po dni\" informace, které nemusí být žádoucí. Obvykle Å¡ablon stránek obsahuje ménÄ› nepořádku." + +# @ dbem +#: admin/em-options.php:388 +#, php-format +msgid "Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named single-%s.php as shown on the wordpress codex, and leave this set to Posts." +msgstr "UvÄ›domte si, že nÄ›která témata budou fungovat s touto volbou, pokud ano (nebo chcete-li vytvoÅ™it vlastní zmÄ›ny), můžete vytvoÅ™it soubor s názvem single-%s.php jak je uvedeno na WordPress Codex , a nechat tuto sadu na příspÄ›vky." + +# @ default +#: admin/em-options.php:389 +#, php-format +msgid "By using formats, you can control how your %s are displayed from within the Events Manager Formats tab above without having to edit your theme files." +msgstr "PÅ™i použití formátu, můžete urÄit, jak jsou vaÅ¡e %s zobrazené v rámci akce vedoucí Formáty záložku výše, aniž by museli upravovat své téma soubory." + +# @ dbem +#: admin/em-options.php:392 +msgid "Permalink Slugs" +msgstr "Slimáci permalink" + +# @ dbem +#: admin/em-options.php:394 +msgid "You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings." +msgstr "Můžete zmÄ›nit strukturu permalink vaÅ¡ich akcí, umístÄ›ní, kategorie a tagy. UvÄ›domte si, že budete chtít nastavit pÅ™esmÄ›rování, pokud zmÄ›níte permalink struktury k udržení SEO žebříÄku." + +# @ dbem +#: admin/em-options.php:397 +#: admin/em-options.php:399 +#: admin/em-options.php:402 +#: admin/em-options.php:405 +#, php-format +msgid "e.g. %s - you can use / seperators too" +msgstr "napÅ™. %s - můžete použít / separátor i" + +# @ dbem +# @ default +#: admin/em-options.php:405 +#: admin/em-options.php:793 +#: em-posts.php:29 +#: em-posts.php:32 +msgid "Event Tags" +msgstr "Tagy akce" + +# @ dbem +#: admin/em-options.php:414 +#: admin/em-options.php:577 +#: admin/em-options.php:825 +#, php-format +msgid "%s Pages" +msgstr "%s stránky" + +# @ dbem +#: admin/em-options.php:418 +#: admin/em-options.php:581 +#, php-format +msgid "Display %s as" +msgstr "Zobrazit %s jako" + +# @ default +#: admin/em-options.php:418 +#: admin/em-options.php:581 +msgid "Posts" +msgstr "příspÄ›vky" + +# @ dbem +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:582 +#: admin/em-options.php:649 +#: admin/em-options.php:721 +#: admin/em-options.php:797 +msgid "Override with Formats?" +msgstr "PÅ™epsat s formáty?" + +# @ dbem +#: admin/em-options.php:427 +#: admin/em-options.php:590 +#, php-format +msgid "%s List/Archives" +msgstr "%s List / Archiv" + +# @ dbem +#: admin/em-options.php:435 +#: admin/em-options.php:594 +#: admin/em-options.php:707 +#, php-format +msgid "[No %s Page]" +msgstr "[ne %s strana]" + +# @ dbem +#: admin/em-options.php:440 +msgid "This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags." +msgstr "Tato volba umožňuje vybrat, které stránky používají jako události stránky. Pokud si nevyberete stránce Události k zobrazení seznamu událostí můžete povolit archiv akcí nebo použít přísluÅ¡nou zkratková a / nebo Å¡ablony tagy." + +# @ dbem +#: admin/em-options.php:447 +msgid "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "NÄ›které WordPress Témata nemusí dodržovat doporuÄené postupy pÅ™i generování menu navigace, a tak automatické pÅ™epsání názvu funkce může způsobit problémy, pokud vaÅ¡e nabídky nepracují správnÄ› na stránkách akce, zkuste toto nastavení zmÄ›nit \"Ano\", a poskytnout vhodnou titul ve formátu HTML níže." + +# @ dbem +#: admin/em-options.php:454 +#: admin/em-options.php:604 +msgid "Enable Archives?" +msgstr "Povolit archivy?" + +# @ dbem +#: admin/em-options.php:454 +#: admin/em-options.php:604 +msgid "Allow WordPress post-style archives." +msgstr "Povolit WordPress post-styl archivů." + +# @ dbem +#: admin/em-options.php:459 +msgid "Default event archive ordering" +msgstr "Výchozí Archiv akcí objednávání" + +# @ dbem +#: admin/em-options.php:464 +msgid "Order by start date, start time" +msgstr "SeÅ™adit podle datum, Äas zahájení" + +# @ dbem +#: admin/em-options.php:465 +msgid "Order by name" +msgstr "SeÅ™adit podle názvu" + +# @ dbem +#: admin/em-options.php:496 +#: admin/em-options.php:645 +#: admin/em-options.php:717 +msgid "General settings" +msgstr "obecné nastavení" + +# @ dbem +#: admin/em-options.php:502 +#: admin/em-options.php:650 +msgid "Include in WordPress Searches?" +msgstr "Zahrnout do vyhledávání WordPress?" + +# @ dbem +#: admin/em-options.php:502 +#: admin/em-options.php:650 +#, php-format +msgid "Allow %s to appear in the built-in search results." +msgstr "dovolit %s se objeví ve vestavÄ›né ve výsledcích vyhledávání." + +# @ dbem +#: admin/em-options.php:506 +#: admin/em-options.php:654 +#: admin/em-options.php:744 +#, php-format +msgid "Default %s list options" +msgstr "standardní %s seznam možností" + +# @ dbem +#: admin/em-options.php:507 +#: admin/em-options.php:655 +#: admin/em-options.php:745 +msgid "These can be overriden when using shortcode or template tags." +msgstr "Ty mohou být pÅ™ekryté pÅ™i použití krátký kód nebo Å¡ablony tagy." + +# @ dbem +#: admin/em-options.php:595 +#: admin/em-options.php:708 +#: admin/em-options.php:832 +#: admin/em-options.php:833 +#: admin/em-options.php:834 +#: admin/em-options.php:835 +#, php-format +msgid "%s page" +msgstr "%s strana" + +# @ dbem +#: admin/em-options.php:595 +#, php-format +msgid "This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags." +msgstr "Tato volba umožňuje vybrat, které stránky k použití jako %s strana. Pokud si nevyberete žádnou %s strana, pro zobrazení seznamu můžete povolit archivy nebo použít přísluÅ¡nou zkratková a / nebo Å¡ablony tagy." + +# @ dbem +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, php-format +msgid "Show %s page in lists?" +msgstr "Show %s stránky v seznamech?" + +# @ dbem +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, php-format +msgid "Check this option if you want the %s page to appear together with other pages in pages lists." +msgstr "ZaÅ¡krtnÄ›te tuto volbu, pokud chcete %s strana se objeví spolu s ostatními stránkami na stránkách seznamu." + +# @ dbem +#: admin/em-options.php:609 +#: admin/em-options.php:724 +#: admin/em-options.php:800 +msgid "Default archive ordering" +msgstr "Výchozí archiv objednávání" + +# @ dbem +#: admin/em-options.php:614 +#: admin/em-options.php:615 +#: admin/em-options.php:616 +#: admin/em-options.php:664 +#: admin/em-options.php:665 +#: admin/em-options.php:666 +#: admin/em-options.php:754 +#: admin/em-options.php:755 +#: admin/em-options.php:756 +#, php-format +msgid "Order by %s" +msgstr "SeÅ™adit podle %s" + +# @ dbem +#: admin/em-options.php:659 +#: admin/em-options.php:749 +msgid "Default list ordering" +msgstr "Výchozí seznam objednávání" + +# @ dbem +#: admin/em-options.php:693 +#: admin/em-options.php:783 +msgid "List Limits" +msgstr "seznam limity" + +# @ dbem +#: admin/em-options.php:693 +#: admin/em-options.php:783 +#, php-format +msgid "This will control how many %s are shown on one list by default." +msgstr "To bude urÄovat, kolik %s jsou uvedeny na jednom seznamu ve výchozím nastavení." + +# @ dbem +#: admin/em-options.php:708 +#, php-format +msgid "This option allows you to select which page to use as the %s page." +msgstr "Tato volba umožňuje vybrat, které stránky k použití jako %s stránky." + +# @ default +#: admin/em-options.php:721 +msgid "Setting this to yes will make categories display as a page rather than an archive." +msgstr "Nastavení to ano, bude kategorie Zobrazit jako stránku a ne archiv." + +# @ dbem +#: admin/em-options.php:797 +msgid "tags" +msgstr "tagy" + +# @ default +#: admin/em-options.php:827 +msgid "These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated." +msgstr "Tyto stránky umožňují poskytovat rozhraní pro správu událostí mimo území admin na cokoliv stránku, kterou chcete na svých webových stránkách. MÄ›jte na pamÄ›ti, že je to tím, pÅ™ekryté BuddyPress pokud je aktivní." + +# @ dbem +#: admin/em-options.php:831 +#: classes/em-event-posts-admin.php:117 +#: classes/em-event-posts-admin.php:233 +msgid "None" +msgstr "žádný" + +# @ dbem +#: admin/em-options.php:832 +msgid "Edit events" +msgstr "Upravit události" + +# @ dbem +#: admin/em-options.php:833 +msgid "Edit locations" +msgstr "Upravit míst" + +# @ dbem +#: admin/em-options.php:834 +msgid "Manage bookings" +msgstr "Správa rezervace" + +# @ dbem +#: admin/em-options.php:835 +msgid "My bookings" +msgstr "moje rezervace" + +# @ dbem +#: admin/em-options.php:835 +msgid "Users can view their bookings for other events on this page." +msgstr "Uživatelé si mohou prohlížet své rezervace na jiné události, na této stránce." + +# @ dbem +#: admin/em-options.php:869 +msgid "Search Form Options" +msgstr "Možnosti vyhledávací formulář" + +# @ dbem +#: admin/em-options.php:873 +msgid "Show text search?" +msgstr "Zobrazit textové vyhledávání?" + +# @ dbem +#: admin/em-options.php:874 +msgid "Text search label" +msgstr "Textové vyhledávání Å¡títek" + +# @ dbem +#: admin/em-options.php:874 +msgid "Appears within the input box." +msgstr "Objeví se v rámci vstupního pole." + +# @ dbem +#: admin/em-options.php:875 +msgid "Show date range?" +msgstr "Zobrazit Äasové období?" + +# @ dbem +#: admin/em-options.php:876 +msgid "Show categories?" +msgstr "Zobrazit kategorií?" + +# @ dbem +#: admin/em-options.php:877 +msgid "Categories label" +msgstr "kategorie Å¡títek" + +# @ dbem +#: admin/em-options.php:877 +#: admin/em-options.php:879 +#: admin/em-options.php:881 +#: admin/em-options.php:883 +#: admin/em-options.php:885 +msgid "Appears as the first default search option." +msgstr "Se objeví jako první možnost výchozí vyhledávaÄ." + +# @ dbem +#: admin/em-options.php:878 +msgid "Show countries?" +msgstr "Zobrazit zemí?" + +# @ dbem +#: admin/em-options.php:879 +msgid "All countries text" +msgstr "VÅ¡echny zemÄ› textu" + +# @ dbem +#: admin/em-options.php:880 +msgid "Show regions?" +msgstr "Zobrazit regiony?" + +# @ dbem +#: admin/em-options.php:881 +msgid "All regions text" +msgstr "VÅ¡echny regiony textu" + +# @ dbem +#: admin/em-options.php:882 +msgid "Show states?" +msgstr "Zobrazit státy?" + +# @ dbem +#: admin/em-options.php:883 +msgid "All states text" +msgstr "VÅ¡echny státy textu" + +# @ dbem +#: admin/em-options.php:884 +msgid "Show towns/cities?" +msgstr "Zobrazit mÄ›sta / mÄ›sta?" + +# @ dbem +#: admin/em-options.php:885 +msgid "All towns/cities text" +msgstr "VÅ¡echna mÄ›sta / mÄ›sta textu" + +# @ dbem +#: admin/em-options.php:893 +msgid "Date/Time formats" +msgstr "Datum / Äas formáty" + +# @ dbem +#: admin/em-options.php:895 +#, php-format +msgid "Date and Time formats follow the WordPress time formatting conventions" +msgstr "Formáty data a Äasu postupujte podle WordPress konvence Äasu formátování" + +# @ dbem +#: admin/em-options.php:898 +msgid "Date Format" +msgstr "Formát data" + +# @ default +#: admin/em-options.php:898 +#: admin/em-options.php:900 +#, php-format +msgid "For use with the %s placeholder" +msgstr "Pro použití s %s zástupný symbol" + +# @ dbem +#: admin/em-options.php:899 +msgid "Date Seperator" +msgstr "Datum oddÄ›lovaÄ" + +# @ dbem +#: admin/em-options.php:899 +#: admin/em-options.php:901 +#, php-format +msgid "For when start/end %s are present, this will seperate the two (include spaces here if necessary)." +msgstr "V případÄ›, kdy zaÄátek / konec %s jsou přítomny, bude to oddÄ›lit dvÄ› (vÄetnÄ› mezer zde v případÄ› potÅ™eby)." + +# @ dbem +#: admin/em-options.php:899 +msgid "dates" +msgstr "data" + +# @ dbem +#: admin/em-options.php:900 +msgid "Time Format" +msgstr "Formát Äasu" + +# @ dbem +#: admin/em-options.php:901 +msgid "Time Seperator" +msgstr "Moje Rezervace Äasu" + +# @ dbem +#: admin/em-options.php:901 +msgid "times" +msgstr "doba" + +# @ dbem +#: admin/em-options.php:918 +msgid "Full calendar events/day limit" +msgstr "Úplný kalendář akcí / denní limit" + +# @ dbem +#: admin/em-options.php:918 +msgid "To reduce the clutter on your calendar, you can add a limit to events displayed in one day on the calendar." +msgstr "Chcete-li snížit nepořádek v kalendáři můžete pÅ™idat omezení událostí zobrazených v jeden den v kalendáři." + +# @ dbem +#: admin/em-options.php:989 +msgid "Tags format" +msgstr "ZnaÄky ve formátu" + +# @ dbem +#: admin/em-options.php:992 +msgid "Tag" +msgstr "den" + +# @ dbem +#: admin/em-options.php:994 +#: admin/em-options.php:995 +msgid "tag" +msgstr "den" + +# @ dbem +#: admin/em-options.php:994 +msgid "The format of a single tag page title." +msgstr "Formát jedné znaÄky titulu stránky." + +# @ dbem +#: admin/em-options.php:995 +msgid "The format of a single tag page." +msgstr "Formát jedné znaÄky stránku." + +# @ dbem +#: admin/em-options.php:999 +msgid "The format of the events the list inserted in the tag page through the #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS element." +msgstr "Formát událostí seznam vložen do stránky pomocí tagu #_TAGNEXTEVENTS, #_TAGNEXTEVENTS a #_TAGALLEVENTS prvek." + +# @ dbem +#: admin/em-options.php:1000 +msgid "The message to be displayed in the list generated by #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS when no events are available." +msgstr "Zprávy se zobrazí v seznamu, vytvoÅ™ené #_TAGNEXTEVENTS, #_TAGNEXTEVENTS a #_TAGALLEVENTS PÅ™i Žádné akce k dispozici." + +# @ dbem +#: admin/em-options.php:1067 +msgid "Pricing" +msgstr "Ceny" + +# @ dbem +#: admin/em-options.php:1083 +msgid "Booking Form" +msgstr "rezervaÄní formulář" + +# @ dbem +#: admin/em-options.php:1108 +msgid "Ticket" +msgstr "jízdenka" + +# @ dbem +#: admin/em-options.php:1135 +msgid "The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user." +msgstr "Z níže uvedených možností můžete vypnout uživatelské úÄty a pÅ™idÄ›lit veÅ¡keré rezervace na mateÅ™ské uživatele, ale stále budete vidÄ›t dodaných rezervace osobní údaje pro každou rezervaci. Je-li tato režim, zvláštní rezervace informace o osobÄ› uložena vedle hotelu záznam, nikoli jako uživatel WordPress." + +# @ dbem +#: admin/em-options.php:1145 +msgid "Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself." +msgstr "Vyberte si rodiÄe uživatel pÅ™iÅ™adit rezervací. Lidé, aby jejich rezervace budou vÄ›domi toho a nikdy nebude mít přístup k uživatelským detaily. To by mÄ›l být úÄastník uživatele nechcete použít pro pÅ™ihlášení sám se sebou." + +# @ dbem +#: admin/em-options.php:1169 +msgid "Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event." +msgstr "ZaÅ¡krtnÄ›te tuto volbu, pokud chcete, aby se zabránilo registraci WordPress e-mail od jít ven, když uživatel anonymnÄ› knihy událost." + +# @ dbem +#: admin/em-options.php:1217 +msgid "Event Submitted" +msgstr "akce Odesláno" + +# @ dbem +#: admin/em-options.php:1218 +msgid "An email will be sent to the an administrator of your choice when an event is submitted and pending approval." +msgstr "E-mail bude odeslán na správce vaÅ¡eho výbÄ›ru, kdy je událost pÅ™edložen a Äeká na schválení." + +# @ dbem +#: admin/em-options.php:1220 +msgid "Administrator Email" +msgstr "správce e-mail" + +# @ dbem +#: admin/em-options.php:1220 +msgid "If left blank, no email will be sent. Seperate emails with commas for more than one email." +msgstr "Pokud je prázdné, žádný e-mail odeslán. E-maily oddÄ›lené Äárkami pro více než jeden e-mail." + +# @ dbem +#: admin/em-options.php:1272 +msgid "Event Submission Forms" +msgstr "Formuláře případÄ› podání" + +# @ dbem +#: admin/em-options.php:1276 +#, php-format +msgid "You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below." +msgstr "Můžete uživatelům umožnit veÅ™ejnosti pÅ™edkládat události do svého blogu pomocí %s krátký kód, a umožňuje anonymní příspÄ›vky níže." + +# @ dbem +#: admin/em-options.php:1279 +msgid "Use Visual Editor?" +msgstr "Použití Visual Editor?" + +# @ dbem +#: admin/em-options.php:1279 +msgid "Users can now use the WordPress editor for easy HTML entry in the submission form." +msgstr "Uživatelé nyní mohou pomocí editoru HTML WordPress pro snadný vstup do formuláře pro podání." + +# @ dbem +#: admin/em-options.php:1280 +msgid "Show form again?" +msgstr "Zobrazit formulář znovu?" + +# @ dbem +#: admin/em-options.php:1280 +msgid "When a user submits their event, you can display a new event form again." +msgstr "Když uživatel odeÅ¡le svou akci, můžete zobrazit novou událost formulář znovu." + +# @ dbem +#: admin/em-options.php:1281 +msgid "Customize the message your user sees when they submitted their event." +msgstr "Vlastní zprávu si uživatel uvidí, když pÅ™edložily své akce." + +# @ dbem +#: admin/em-options.php:1284 +msgid "Anonymous event submissions" +msgstr "Anonymní případÄ› podání" + +# @ dbem +#: admin/em-options.php:1288 +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting." +msgstr "Události vyžadují, aby uživatel vlastní. S cílem umožnit událostí má být pÅ™edložen anonymnÄ› musíte pÅ™iÅ™adit tuto událost konkrétního uživatele. DoporuÄujeme vytvoÅ™it \"anonymní \" úÄastník s velmi dobrou heslo a použít. Hosté budou mít stejnou událost oprávnÄ›ní jako tento uživatel pÅ™i podání." + +# @ dbem +#: admin/em-options.php:1305 +msgid "Image Sizes" +msgstr "velikosti obrázku" + +# @ dbem +#: admin/em-options.php:1331 +msgid "Send HTML Emails?" +msgstr "Poslat HTML e-maily?" + +# @ dbem +#: admin/em-options.php:1331 +msgid "If set to yes, your emails will be sent in HTML format, otherwise plaintext." +msgstr "Pokud je nastavena na hodnotu Ano, bude vaÅ¡e e-maily budou zaslány ve formátu HTML, jinak textu." + +# @ dbem +#: admin/em-options.php:1364 +#: admin/em-options.php:1374 +#: admin/em-options.php:1382 +#: admin/em-options.php:1393 +#, php-format +msgid "%s Capabilities" +msgstr "%s možnosti" + +# @ dbem +#: admin/em-options.php:1366 +#: admin/em-options.php:1376 +#: admin/em-options.php:1384 +#, php-format +msgid "Users can publish %s and skip any admin approval" +msgstr "Uživatelé mohou publikovat %s a pÅ™eskoÄit schválení správce" + +# @ dbem +#: admin/em-options.php:1367 +#: admin/em-options.php:1377 +#: admin/em-options.php:1385 +#, php-format +msgid "User can delete other users %s" +msgstr "Uživatel může odstranit ostatních uživatelů %s" + +# @ dbem +#: admin/em-options.php:1368 +#: admin/em-options.php:1378 +#: admin/em-options.php:1386 +#, php-format +msgid "User can edit other users %s" +msgstr "Uživatel může upravovat ostatní uživatelé %s" + +# @ dbem +#: admin/em-options.php:1369 +#: admin/em-options.php:1379 +#: admin/em-options.php:1387 +#, php-format +msgid "User can delete their own %s" +msgstr "Uživatel může smazat jejich %s" + +# @ dbem +#: admin/em-options.php:1370 +#: admin/em-options.php:1380 +#: admin/em-options.php:1388 +#, php-format +msgid "User can create and edit %s" +msgstr "Uživatel může vytvářet a upravovat %s" + +# @ dbem +#: admin/em-options.php:1371 +#: admin/em-options.php:1389 +#, php-format +msgid "User can view private %s" +msgstr "Uživatel může zobrazit soukromé %s" + +# @ dbem +#: admin/em-options.php:1374 +#: em-posts.php:165 +msgid "Recurring Event" +msgstr "opakující se událost" + +# @ dbem +#: admin/em-options.php:1376 +#: admin/em-options.php:1377 +#: admin/em-options.php:1378 +#: admin/em-options.php:1379 +#: admin/em-options.php:1380 +#: events-manager.php:303 +#: events-manager.php:304 +#: events-manager.php:305 +#: events-manager.php:306 +#: events-manager.php:307 +msgid "recurring events" +msgstr "opakujících se událostí" + +# @ dbem +#: admin/em-options.php:1390 +msgid "User can use other user locations for their events." +msgstr "Uživatel může použít i jiné uživatele míst pro jejich akce." + +# @ dbem +#: admin/em-options.php:1395 +#, php-format +msgid "User can delete %s categories and tags." +msgstr "Uživatel může odstranit %s kategorií a znaÄek." + +# @ dbem +#: admin/em-options.php:1396 +#, php-format +msgid "User can edit %s categories and tags." +msgstr "Uživatel může editovat %s kategorií a znaÄek." + +# @ dbem +#: admin/em-options.php:1400 +msgid "User can upload images along with their events and locations." +msgstr "Uživatel může vkládat obrázky spolu s jejich akcí a lokalit." + +# @ dbem +#: admin/em-options.php:1460 +msgid "Uninstall/Reset" +msgstr "Odinstalovat / Reset" + +# @ dbem +#: admin/em-options.php:1462 +msgid "Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data." +msgstr "Pomocí tlaÄítek pod odinstalovat Události manažer zcela ze systému nebo resetovat události vedoucí k původnímu nastavení a vaÅ¡e data události." + +# @ dbem +#: admin/em-options.php:1464 +msgid "Reset" +msgstr "Reset" + +# @ dbem +#: buddypress/bp-em-activity.php:58 +#, php-format +msgid "%s added the event %s to %s." +msgstr "%s pÅ™idáno akce %s na %s." + +# @ dbem +#: buddypress/bp-em-core.php:51 +#, php-format +msgid "Search %s..." +msgstr "Hledání %s. .." + +# @ dbem +#: buddypress/screens/my-events.php:48 +#: em-events.php:151 +msgid "Reschedule Events" +msgstr "naplánovat akce" + +# @ dbem +#: classes/em-categories-taxonomy.php:35 +#, php-format +msgid "Choose a color for your category. You can access this using the %s placeholder." +msgstr "Vyberte si barvu své kategorii. Můžete se pomocí %s zástupný symbol." + +# @ dbem +#: classes/em-categories-taxonomy.php:46 +msgid "Choose/Upload Image" +msgstr "Vyberte si / Nahrát obrázek" + +# @ dbem +#: classes/em-categories-taxonomy.php:47 +#, php-format +msgid "Choose an image for your category, which can be displayed using the %s placeholder." +msgstr "Vyberte si image pro své kategorii, které lze zobrazit pomocí %s zástupný symbol." + +# @ dbem +#: classes/em-event-post-admin.php:42 +#, php-format +msgid "If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, detach it." +msgstr "Máte-li aktualizovat údaje této události a uložit, mohlo by to pÅ™epsány Pokud upravíte opakované události Å¡ablony. Aby to bylo nezávislé, sejmout ." + +# @ dbem +#: classes/em-event-post-admin.php:43 +#, php-format +msgid "To manage the whole set, edit the recurring event template." +msgstr "Chcete-li spravovat celou sadu, upravit opakované události Å¡ablony ." + +# @ dbem +#: classes/em-event-post-admin.php:83 +msgid "Your event details are incorrect and recurrences cannot be created, please correct these errors first:" +msgstr "VaÅ¡i akci údaje jsou nesprávné a recidiv nemůže být vytvoÅ™en, prosím, opravit tyto chyby jako první:" + +# @ dbem +#: classes/em-event-post-admin.php:85 +#: classes/em-location-post-admin.php:59 +#, php-format +msgid "Your %s details are incorrect and cannot be published, please correct these errors first:" +msgstr "Váš %s údaje jsou nesprávné a nemohou být zveÅ™ejnÄ›ny, prosím, opravit tyto chyby jako první:" + +# @ dbem +#: classes/em-event-post-admin.php:195 +msgid "Site Categories" +msgstr "Kategorie webu" + +# @ dbem +#: classes/em-event-post-admin.php:352 +msgid "Recurrences" +msgstr "recidiv" + +# @ default +#: classes/em-event-post.php:94 +#: classes/em-event-post.php:97 +#: classes/em-event-post.php:102 +#: classes/em-event-post.php:113 +#: classes/em-event-post.php:116 +#: classes/em-event-post.php:121 +#, php-format +msgid "View all posts in %s" +msgstr "Zobrazit vÅ¡echny příspÄ›vky v %s" + +# @ default +#: classes/em-event-posts-admin.php:66 +msgid "View all categories" +msgstr "Zobrazit vÅ¡echny kategorie" + +# @ default +#: classes/em-event-posts-admin.php:96 +#: classes/em-event-posts-admin.php:215 +msgid "Date and Time" +msgstr "Datum a Äas" + +# @ dbem +#: classes/em-event-posts-admin.php:97 +#: classes/em-event-posts-admin.php:216 +msgid "Owner" +msgstr "majitel" + +# @ dbem +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:132 +#: templates/buddypress/my-group-events.php:126 +#: templates/tables/events.php:132 +msgid "Edit Recurring Events" +msgstr "Upravit opakujících se událostí" + +# @ dbem +#: classes/em-event-posts-admin.php:150 +msgid "Detach" +msgstr "odpojit" + +# @ dbem +#: classes/em-event-posts-admin.php:163 +#, php-format +msgid "Duplicate %s" +msgstr "duplikát %s" + +# @ dbem +#: classes/em-event-posts-admin.php:163 +msgid "Duplicate" +msgstr "duplikát" + +# @ dbem +#: classes/em-event-posts-admin.php:187 +#, php-format +msgid "Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the events page." +msgstr "Modifikace tÄ›chto událostí způsobí, že vÅ¡echny recidivy každé události mají být odstranÄ›ny a znovu a pÅ™edchozí rezervace budou vymazány! Můžete upravovat jednotlivé recidivy a oddÄ›lit je od opakujících se událostí pÅ™i návÅ¡tÄ›vÄ› události stránky." + +# @ default +#: classes/em-event.php:428 +msgid "Event name" +msgstr "název akce" + +# @ dbem +#: classes/em-event.php:464 +msgid "Since the event is repeated, you must specify an event end date greater than the start date." +msgstr "Protože událost se opakuje, je nutné zadat datum ukonÄení akce vÄ›tší než poÄáteÄní datum." + +# @ dbem +# @ default +#: classes/em-event.php:546 +#: classes/em-event.php:548 +msgid "There were some errors saving your location." +msgstr "Tam byly nÄ›které chyby, uložení polohy." + +# @ default +#: classes/em-event.php:546 +#, php-format +msgid "It will not be displayed on the website listings, to correct this you must edit your location directly." +msgstr "Nebude se zobrazí na webových stránkách seznamy, opravit to musíte upravovat své místo přímo." + +# @ dbem +#: classes/em-event.php:582 +#: classes/em-location.php:332 +#, php-format +msgid "Something went wrong saving your %s to the index table. Please inform a site administrator about this." +msgstr "NepodaÅ™ilo se uložit vaÅ¡e %s na index tabulky. Informujte prosím správce webu o tom." + +# @ dbem +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#, php-format +msgid "Successfully saved %s" +msgstr "úspěšnÄ› uloženo %s" + +# @ dbem +#: classes/em-event.php:594 +#: classes/em-location.php:342 +#, php-format +msgid "Something went wrong updating your %s to the index table. Please inform a site administrator about this." +msgstr "NÄ›co je Å¡patnÄ› aktualizaci vaÅ¡eho %s na index tabulky. Informujte prosím správce webu o tom." + +# @ dbem +#: classes/em-event.php:1159 +#: classes/em-location.php:618 +#, php-format +msgid "Edit %s" +msgstr "Upravit %s" + +# @ dbem +#: classes/em-event.php:1384 +msgid "Event detached." +msgstr "Akce oddÄ›lit." + +# @ dbem +#: classes/em-event.php:1384 +msgid "Undo" +msgstr "zruÅ¡it" + +# @ dbem +#: classes/em-event.php:1388 +msgid "Event could not be detached." +msgstr "PřípadÄ› nelze oddÄ›lit." + +# @ dbem +#: classes/em-event.php:1402 +msgid "Event re-attached to recurrence." +msgstr "Událost znovu pÅ™ipojen k opakování." + +# @ dbem +#: classes/em-event.php:1405 +msgid "Event could not be attached." +msgstr "PřípadÄ› nemůže být pÅ™ipojen." + +# @ default +# @ dbem +#: classes/em-location.php:224 +#: widgets/em-locations.php:22 +msgid "Location name" +msgstr "název místa" + +# @ dbem +#: em-install.php:291 +msgid "A new event has been submitted by #_CONTACTNAME.
              Name : #_EVENTNAME
              Date : #_EVENTDATES
              Time : #_EVENTTIMES
              Please visit #_EDITEVENTURL to review this event for approval." +msgstr "Nové události byly předloženy #_CONTACTNAME.
              jméno: #_EVENTNAME
              datum: #_EVENTDATES
              Äas: #_EVENTTIMES
              navÅ¡tivte prosím #_EDITEVENTURL pÅ™ezkoumání této události ke schválení." + +# @ dbem +#: em-install.php:321 +msgid "All Cities/Towns" +msgstr "VÅ¡echna mÄ›sta / mÄ›sta" + +# @ dbem +#: em-install.php:325 +#: em-install.php:328 +msgid "You have successfully submitted your event, which will be published pending approval." +msgstr "ÚspěšnÄ› jste zadali svou akci, která bude zveÅ™ejnÄ›na Äeká na schválení." + +# @ dbem +#: em-install.php:331 +msgid "Submitted Event Awaiting Approval" +msgstr "Vložil akce Äeká na schválení" + +# @ dbem +#: em-install.php:378 +msgid "All Day" +msgstr "Celý den" + +# @ dbem +#: em-install.php:424 +msgid "
            • No events in this tag
            • " +msgstr "
            • Žádné události v této tag
            • " + +# @ dbem +#: em-install.php:502 +msgid "New Booking" +msgstr "nové rezervace" + +# @ default +# @ dbem +#: em-posts.php:30 +#: em-posts.php:33 +msgid "Event Tag" +msgstr "akce Tag" + +# @ dbem +#: em-posts.php:34 +msgid "Search Event Tags" +msgstr "KlíÄová slova Hledat událost" + +# @ dbem +#: em-posts.php:35 +msgid "Popular Event Tags" +msgstr "Populární akce slova" + +# @ dbem +#: em-posts.php:36 +msgid "All Event Tags" +msgstr "VÅ¡echny akce slova" + +# @ dbem +#: em-posts.php:37 +msgid "Parent Event Tags" +msgstr "Tagy rodiÄů akce" + +# @ dbem +#: em-posts.php:38 +msgid "Parent Event Tag:" +msgstr "MateÅ™ská akce Tag:" + +# @ dbem +#: em-posts.php:39 +msgid "Edit Event Tag" +msgstr "Upravit událost Tag" + +# @ dbem +#: em-posts.php:40 +msgid "Update Event Tag" +msgstr "Aktualizovat událost Tag" + +# @ dbem +#: em-posts.php:41 +msgid "Add New Event Tag" +msgstr "PÅ™idat novou událost Tag" + +# @ dbem +#: em-posts.php:42 +msgid "New Event Tag Name" +msgstr "Nová událost Tag název" + +# @ dbem +#: em-posts.php:43 +msgid "Seperate event tags with commas" +msgstr "Různé události výrazy Äárkou" + +# @ dbem +#: em-posts.php:44 +#: em-posts.php:81 +msgid "Add or remove events" +msgstr "PÅ™idávání a odstraňování událostí" + +# @ dbem +#: em-posts.php:45 +msgid "Choose from most used event tags" +msgstr "Vyberte si z nejpoužívanÄ›jších událostí znaÄek" + +# @ dbem +#: em-posts.php:67 +#: em-posts.php:70 +msgid "Event Category" +msgstr "Kategorie události" + +# @ dbem +#: em-posts.php:71 +msgid "Search Event Categories" +msgstr "Kategorií Hledání událostí" + +# @ dbem +#: em-posts.php:72 +msgid "Popular Event Categories" +msgstr "Populární kategorie událostí" + +# @ dbem +#: em-posts.php:73 +msgid "All Event Categories" +msgstr "VÅ¡echny kategorie událostí" + +# @ dbem +#: em-posts.php:74 +msgid "Parent Event Categories" +msgstr "Kategorie rodiÄů akce" + +# @ dbem +#: em-posts.php:75 +msgid "Parent Event Category:" +msgstr "MateÅ™ská Kategorie události:" + +# @ dbem +#: em-posts.php:76 +msgid "Edit Event Category" +msgstr "Upravit Kategorie události" + +# @ dbem +#: em-posts.php:77 +msgid "Update Event Category" +msgstr "Aktualizace Kategorie události" + +# @ dbem +#: em-posts.php:78 +msgid "Add New Event Category" +msgstr "PÅ™idat novou událost kategorii" + +# @ dbem +#: em-posts.php:79 +msgid "New Event Category Name" +msgstr "Nová událost Název kategorie" + +# @ dbem +#: em-posts.php:80 +msgid "Seperate event categories with commas" +msgstr "Různé události v kategoriích s Äárkami" + +# @ dbem +#: em-posts.php:82 +msgid "Choose from most used event categories" +msgstr "Vyberte si z nejpoužívanÄ›jších událostí kategorií" + +# @ dbem +#: em-posts.php:117 +msgid "Display events on your blog." +msgstr "Zobrazení událostí na svém blogu." + +# @ dbem +#: em-posts.php:123 +msgid "Add New Event" +msgstr "PÅ™idat novou událost" + +# @ dbem +#: em-posts.php:126 +msgid "New Event" +msgstr "nové události" + +# @ dbem +# @ default +#: em-posts.php:127 +#: em-posts.php:172 +#: em-posts.php:218 +#: templates/tables/locations.php:60 +msgid "View" +msgstr "pohled" + +# @ dbem +#: em-posts.php:128 +msgid "View Event" +msgstr "Zobrazit událost" + +# @ dbem +#: em-posts.php:130 +msgid "No Events Found" +msgstr "Nebyly nalezeny žádné akce" + +# @ dbem +#: em-posts.php:131 +msgid "No Events Found in Trash" +msgstr "Nebyly nalezeny žádné akce v koÅ¡i" + +# @ dbem +#: em-posts.php:132 +msgid "Parent Event" +msgstr "mateÅ™ská akce" + +# @ dbem +#: em-posts.php:161 +#: em-posts.php:164 +#: em-posts.php:166 +msgid "Recurring Events" +msgstr "opakujících se událostí" + +# @ dbem +#: em-posts.php:162 +msgid "Recurring Events Template" +msgstr "Opakujících se událostí Å¡ablony" + +# @ dbem +#: em-posts.php:167 +#: em-posts.php:173 +msgid "Add Recurring Event" +msgstr "PÅ™idat opakující se událost" + +# @ dbem +#: em-posts.php:168 +msgid "Add New Recurring Event" +msgstr "PÅ™idat opakující se událost" + +# @ dbem +#: em-posts.php:170 +msgid "Edit Recurring Event" +msgstr "Upravit Opakující" + +# @ dbem +#: em-posts.php:171 +msgid "New Recurring Event" +msgstr "Opakující se událost" + +# @ dbem +#: em-posts.php:174 +msgid "Search Recurring Events" +msgstr "Hledání opakujících se událostí" + +# @ dbem +#: em-posts.php:175 +msgid "No Recurring Events Found" +msgstr "Žádné opakující se události nalezen" + +# @ dbem +#: em-posts.php:176 +msgid "No Recurring Events Found in Trash" +msgstr "Žádné opakované události Nalezeno v koÅ¡i" + +# @ dbem +#: em-posts.php:177 +msgid "Parent Recurring Event" +msgstr "Opakující se rodiÄe" + +# @ dbem +#: em-posts.php:208 +msgid "Display locations on your blog." +msgstr "Zobrazení míst na svém blogu." + +# @ dbem +#: em-posts.php:214 +msgid "Add New Location" +msgstr "PÅ™idat nové umístÄ›ní" + +# @ dbem +#: em-posts.php:217 +msgid "New Location" +msgstr "nové umístÄ›ní" + +# @ dbem +#: em-posts.php:219 +msgid "View Location" +msgstr "Zobrazit umístÄ›ní" + +# @ dbem +#: em-posts.php:220 +msgid "Search Locations" +msgstr "Vyhledávání lokalit" + +# @ dbem +#: em-posts.php:221 +msgid "No Locations Found" +msgstr "Žádné poboÄky nalezen" + +# @ dbem +#: em-posts.php:222 +msgid "No Locations Found in Trash" +msgstr "Žádná místa Nalezeno v koÅ¡i" + +# @ dbem +#: em-posts.php:223 +msgid "Parent Location" +msgstr "BydliÅ¡tÄ› rodiÄe" + +# @ dbem +#: em-template-tags.php:296 +msgid "You must log in to view and manage your events." +msgstr "Musíte se pÅ™ihlásit pro zobrazení a správu událostí." + +# @ dbem +#: em-template-tags.php:386 +msgid "You must log in to view and manage your locations." +msgstr "Musíte se pÅ™ihlásit k prohlížení a správu vaÅ¡ich místech." + +# @ dbem +#: em-template-tags.php:404 +msgid "You must log in to view and manage your bookings." +msgstr "Musíte se pÅ™ihlásit pro zobrazení a správu rezervace." + +# @ dbem +#: events-manager.php:257 +msgid "Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events." +msgstr "Jste si jisti, že chcete uvolnit tuto událost? Tím se tato událost je nezávislá na opakující soubor událostí." + +# @ dbem +#: events-manager.php:258 +msgid "This cannot be undone." +msgstr "To nelze vrátit zpÄ›t." + +# @ dbem +#: events-manager.php:258 +msgid "All events will be moved to trash." +msgstr "VÅ¡echny akce budou pÅ™esunuty do koÅ¡e." + +# @ dbem +#: events-manager.php:259 +msgid "Are you sure you want to delete all recurrences of this event?" +msgstr "Jste si jisti, že chcete odstranit vÅ¡echny recidivy této akce?" + +# @ dbem +#: events-manager.php:300 +#: events-manager.php:314 +#, php-format +msgid "You cannot read private %s" +msgstr "Nemůžete Äíst soukromé %s" + +# @ dbem +#: events-manager.php:315 +#, php-format +msgid "You cannot view others %s" +msgstr "Nelze zobrazit další %s" + +# @ dbem +#: events-manager.php:321 +msgid "You do not have permission to upload images" +msgstr "Nemáte oprávnÄ›ní vkládat obrázky" + +# @ default +#: templates/forms/event/attributes.php:51 +msgid "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." + +# @ dbem +#: templates/forms/event/group.php:26 +msgid "No groups defined yet." +msgstr "Ne skupiny dosud definována." + +# @ default +#: templates/forms/event/location.php:9 +msgid "This event does not have a physical location." +msgstr "Tato událost nemá fyzické umístÄ›ní." + +# @ default +#: templates/forms/event/location.php:31 +msgid "No Location" +msgstr "žádné umístÄ›ní" + +# @ dbem +#: templates/forms/event/recurring-when.php:53 +#: templates/forms/event/when-with-recurring.php:13 +msgid "Recurrences span from " +msgstr "Recidiv rozpÄ›tí od" + +# @ dbem +#: templates/forms/event/recurring-when.php:61 +#: templates/forms/event/when-with-recurring.php:23 +msgid "Events start from" +msgstr "Události zaÄít" + +# @ dbem +#: templates/forms/event/recurring-when.php:65 +#: templates/forms/event/when-with-recurring.php:28 +#: templates/forms/event/when.php:20 +msgid "All day" +msgstr "Celý den" + +# @ dbem +#: templates/forms/event/recurring-when.php:68 +#: templates/forms/event/when-with-recurring.php:74 +msgid "Each event lasts" +msgstr "Každá akce trvá" + +# @ dbem +#: templates/forms/event/recurring-when.php:70 +#: templates/forms/event/when-with-recurring.php:76 +msgid "day(s)" +msgstr "den (dny)" + +# @ dbem +#: templates/forms/event/when-with-recurring.php:11 +msgid "This is a recurring event." +msgstr "Jedná se o opakující se události." + +# @ dbem +#: templates/forms/event/when-with-recurring.php:14 +#: templates/forms/event/when.php:8 +msgid "From " +msgstr "z" + +# @ dbem +#: templates/forms/event/when-with-recurring.php:24 +#: templates/forms/event/when.php:16 +msgid "Event starts at" +msgstr "Akce zaÄíná v" + +# @ dbem +#: templates/forms/event-editor.php:164 +msgid "Event Image" +msgstr "akce obrázku" + +# @ dbem +#: templates/forms/location-editor.php:47 +msgid "Details about the location." +msgstr "Podrobnosti o umístÄ›ní." + +# @ dbem +#: templates/forms/location-editor.php:52 +msgid "Location Image" +msgstr "umístÄ›ní obrázku" + +# @ dbem +#: templates/tables/locations.php:74 +msgid "No locations have been inserted yet!" +msgstr "Žádné poboÄky byly vloženy jeÅ¡tÄ›!" + +# @ dbem +#: widgets/em-locations.php:21 +msgid "Event start date/time, location name" +msgstr "Akce datum / Äas, místo jména" + diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-da_DK.mo b/wp-content/plugins/events-manager/includes/langs/dbem-da_DK.mo new file mode 100644 index 0000000..c60226f Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-da_DK.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-da_DK.po b/wp-content/plugins/events-manager/includes/langs/dbem-da_DK.po new file mode 100644 index 0000000..1dcea63 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-da_DK.po @@ -0,0 +1,6294 @@ +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 5.1.3\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-06-30 14:49:00+00:00\n" +"PO-Revision-Date: 2012-03-01 11:24+0100\n" +"Last-Translator: Marcus Sykes \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Danish\n" +"X-Poedit-Country: DENMARK\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Poedit-Basepath: .\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: Event Manage\n" + +#@ dbem +#: admin/em-ms-options.php:165 +#: admin/em-options.php:425 +#: admin/em-options.php:464 +#: admin/em-options.php:919 +#: buddypress/bp-em-core.php:12 +#: buddypress/bp-em-core.php:51 +#: buddypress/bp-em-core.php:79 +#: buddypress/bp-em-core.php:147 +#: buddypress/bp-em-core.php:174 +#: buddypress/screens/profile.php:27 +#: em-actions.php:102 +#: em-install.php:353 +#: em-install.php:399 +#: em-install.php:455 +#: em-install.php:456 +#: em-install.php:480 +#: em-install.php:717 +#: em-posts.php:135 +#: em-posts.php:138 +#: em-posts.php:140 +#: em-template-tags.php:179 +#: widgets/em-events.php:13 +msgid "Events" +msgstr "Events" + +#@ dbem +#: events-manager.php:273 +#: events-manager.php:281 +#: events-manager.php:287 +#, php-format +msgid "You do not have permission to publish %s" +msgstr "Du har ikke tilladelse til at udgive %s" + +#@ dbem +#: admin/em-ms-options.php:163 +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-options.php:446 +#: admin/em-options.php:447 +#: admin/em-options.php:448 +#: admin/em-options.php:529 +#: admin/em-options.php:531 +#: admin/em-options.php:900 +#: admin/em-options.php:1065 +#: admin/em-options.php:1067 +#: admin/em-options.php:1095 +#: admin/em-options.php:1097 +#: admin/em-options.php:1118 +#: admin/em-options.php:1120 +#: admin/em-options.php:1472 +#: admin/em-options.php:1473 +#: admin/em-options.php:1474 +#: admin/em-options.php:1475 +#: admin/em-options.php:1476 +#: admin/em-options.php:1477 +#: events-manager.php:273 +#: events-manager.php:274 +#: events-manager.php:275 +#: events-manager.php:276 +#: events-manager.php:277 +#: events-manager.php:278 +msgid "events" +msgstr "events" + +#@ dbem +#: events-manager.php:277 +#: events-manager.php:285 +#: events-manager.php:291 +#: events-manager.php:297 +#, php-format +msgid "You do not have permission to edit %s" +msgstr "Du har ikke tilladelse til at redigere %s" + +#@ dbem +#: admin/em-options.php:738 +#: admin/em-options.php:742 +#: admin/em-options.php:751 +#: admin/em-options.php:813 +#: admin/em-options.php:1082 +#: admin/em-options.php:1083 +#: admin/em-options.php:1084 +#: admin/em-options.php:1085 +#: events-manager.php:296 +#: events-manager.php:297 +msgid "categories" +msgstr "kategori" + +#@ dbem +#: events-manager.php:274 +#: events-manager.php:282 +#: events-manager.php:288 +#, php-format +msgid "You do not have permission to delete others %s" +msgstr "Du har ikke tilladelse til at slette andres %s" + +#@ dbem +#: admin/em-ms-options.php:167 +#: admin/em-ms-options.php:172 +#: admin/em-ms-options.php:173 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:610 +#: admin/em-options.php:611 +#: admin/em-options.php:612 +#: admin/em-options.php:625 +#: admin/em-options.php:629 +#: admin/em-options.php:679 +#: admin/em-options.php:680 +#: admin/em-options.php:723 +#: admin/em-options.php:901 +#: admin/em-options.php:1051 +#: admin/em-options.php:1052 +#: admin/em-options.php:1053 +#: admin/em-options.php:1054 +#: admin/em-options.php:1490 +#: admin/em-options.php:1491 +#: admin/em-options.php:1492 +#: admin/em-options.php:1493 +#: admin/em-options.php:1494 +#: admin/em-options.php:1495 +#: classes/em-location.php:372 +#: events-manager.php:287 +#: events-manager.php:288 +#: events-manager.php:289 +#: events-manager.php:290 +#: events-manager.php:291 +#: events-manager.php:292 +#: events-manager.php:293 +msgid "locations" +msgstr "lokationer" + +#@ dbem +#: events-manager.php:276 +#: events-manager.php:284 +#: events-manager.php:290 +#, php-format +msgid "You do not have permission to edit others %s" +msgstr "Du har ikke tilladelse til at redigere andres %s" + +#@ dbem +#: events-manager.php:270 +#, php-format +msgid "You do not have permission to manage others %s" +msgstr "Du har ikke tilladelse til at administrere andres %s" + +#@ dbem +#: admin/em-options.php:863 +#: admin/em-options.php:902 +#: events-manager.php:270 +#: events-manager.php:271 +msgid "bookings" +msgstr "tilmeldinger" + +#@ dbem +#: events-manager.php:275 +#: events-manager.php:283 +#: events-manager.php:289 +#: events-manager.php:296 +#, php-format +msgid "You do not have permission to delete %s" +msgstr "Du har ikke tilladelse til at administrere %s" + +#@ dbem +#: events-manager.php:271 +#, php-format +msgid "You do not have permission to manage %s" +msgstr "Du har ikke tilladelse til at administrere %s" + +#@ dbem +#: em-posts.php:143 +#: em-posts.php:188 +#: em-posts.php:234 +#: templates/forms/event/bookings.php:87 +msgid "Edit" +msgstr "Rediger" + +#@ dbem +#: admin/em-admin.php:45 +#: admin/em-ms-locations.php:28 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:427 +#: admin/em-options.php:624 +#: admin/em-options.php:625 +#: admin/em-options.php:1049 +#: admin/em-options.php:1051 +#: admin/em-options.php:1052 +#: admin/em-options.php:1053 +#: admin/em-options.php:1054 +#: classes/em-location-posts-admin.php:31 +#: em-actions.php:180 +#: em-install.php:406 +#: em-install.php:407 +#: em-install.php:730 +#: em-install.php:777 +#: em-posts.php:226 +#: em-posts.php:229 +#: em-posts.php:231 +#: templates/tables/locations.php:10 +#: templates/tables/locations.php:13 +msgid "Locations" +msgstr "Lokationer" + +#@ dbem +#: admin/em-admin.php:38 +#: admin/em-bookings.php:125 +#: admin/em-bookings.php:174 +#: classes/em-event-posts-admin.php:136 +#: em-events.php:128 +#: templates/buddypress/group-events.php:92 +#: templates/buddypress/my-group-events.php:86 +#: templates/tables/events.php:96 +msgid "Bookings" +msgstr "Tilmeldinger" + +#@ dbem +#: admin/em-options.php:430 +#: admin/em-options.php:733 +#: em-posts.php:85 +#: em-posts.php:88 +msgid "Event Categories" +msgstr "Eventkategorier" + +#@ dbem +#: admin/em-options.php:737 +#: admin/em-options.php:738 +#: admin/em-options.php:1080 +#: admin/em-options.php:1082 +#: admin/em-options.php:1083 +#: admin/em-options.php:1084 +#: admin/em-options.php:1085 +#: em-install.php:438 +#: em-install.php:440 +#: em-install.php:742 +#: em-install.php:792 +msgid "Categories" +msgstr "Kategori" + +#@ dbem +#: admin/em-admin.php:40 +msgid "Events Manager Settings" +msgstr "Event Manager indstillinger" + +#@ dbem +#: admin/em-admin.php:40 +#: admin/em-admin.php:199 +#: admin/em-admin.php:207 +msgid "Settings" +msgstr "Indstillinger" + +#@ dbem +#: admin/em-admin.php:41 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "FÃ¥ hjælp til Events manager" + +#@ dbem +#: admin/em-admin.php:41 +msgid "Help" +msgstr "Hjælp" + +#@ dbem +#: admin/em-help.php:25 +msgid "Placeholders for customizing event pages" +msgstr "Pladsholdere for tilpasning af eventsider" + +#@ dbem +#: admin/em-help.php:26 +#, php-format +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "PÃ¥ indstillingssiden, finder du forskellige tekstbokse, hvor du kan redigere hvorledes event-informationer vises, som f.eks. for event- og lokationstabeller. Ved at benytte pladsholderne herunder, kan du vælge hvilken information der skal vises." + +#@ dbem +#: admin/em-help.php:28 +#: admin/em-ms-options.php:52 +#: admin/em-options.php:167 +msgid "Event Related Placeholders" +msgstr "Event relateret pladsholdere" + +#@ dbem +#: admin/em-help.php:31 +#: admin/em-ms-options.php:55 +#: admin/em-options.php:170 +msgid "Category Related Placeholders" +msgstr "Kategori relateret pladsholdere" + +#@ dbem +#: admin/em-help.php:34 +#: admin/em-ms-options.php:53 +#: admin/em-options.php:168 +msgid "Location Related Placeholders" +msgstr "Lokationsrelateret pladsholdere" + +#@ dbem +#: admin/em-help.php:37 +#: admin/em-ms-options.php:54 +#: admin/em-options.php:169 +msgid "Booking Related Placeholders" +msgstr "Tilmeldingsrelaterede pladsholdere" + +#@ dbem +#: admin/em-ms-locations.php:29 +msgid "Add New" +msgstr "Tilføj ny" + +#@ dbem +#: admin/em-bookings.php:162 +#: admin/em-bookings.php:218 +#: admin/em-options.php:646 +#: admin/em-options.php:696 +#: admin/em-options.php:786 +#: classes/em-person.php:76 +#: templates/buddypress/group-events.php:42 +#: templates/buddypress/my-group-events.php:42 +#: templates/forms/bookingform/booking-fields.php:12 +#: templates/forms/tickets-form.php:9 +#: templates/tables/events.php:52 +#: templates/tables/locations.php:36 +#: templates/tables/locations.php:45 +#: templates/templates/bookings-event-printable.php:24 +msgid "Name" +msgstr "Navn" + +#@ dbem +#: admin/em-bookings.php:92 +#: admin/em-bookings.php:145 +#: admin/em-bookings.php:193 +#: admin/em-bookings.php:372 +#: admin/em-bookings.php:424 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:11 +msgid "Unauthorized Access" +msgstr "Uautoriseret adgang" + +#@ dbem +#: admin/em-options.php:1087 +#: templates/buddypress/group-events.php:113 +#: templates/buddypress/my-group-events.php:107 +msgid "Category" +msgstr "Kategori" + +#@ dbem +#: templates/forms/event-editor.php:100 +#: templates/forms/location-editor.php:44 +msgid "Details" +msgstr "Detaljer" + +#@ dbem +#: templates/forms/event-editor.php:173 +#: templates/forms/location-editor.php:93 +msgid "Upload/change picture" +msgstr "Send/ændr billede" + +#@ dbem +#: em-events.php:128 +#: templates/tables/locations.php:10 +#, php-format +msgid "My %s" +msgstr "Min %s" + +#@ dbem +#: templates/tables/locations.php:13 +#, php-format +msgid "All %s" +msgstr "Alle %s" + +#@ dbem +#@ default +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:54 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-rejected.php:49 +#: templates/tables/locations.php:20 +msgid "Bulk Actions" +msgstr "Massehandlinger" + +#@ dbem +#: admin/bookings/em-events.php:55 +#: templates/tables/locations.php:21 +msgid "Delete selected" +msgstr "Slet valgte" + +#@ default +#: admin/bookings/em-events.php:57 +#: templates/tables/locations.php:23 +msgid "Apply" +msgstr "Anvend" + +#@ dbem +#: classes/em-location-posts-admin.php:40 +#: templates/tables/locations.php:37 +#: templates/tables/locations.php:46 +msgid "Address" +msgstr "Adresse" + +#@ dbem +#: admin/em-options.php:645 +#: admin/em-options.php:695 +#: admin/em-options.php:785 +#: classes/em-location-posts-admin.php:41 +msgid "Town" +msgstr "By" + +#@ dbem +#: classes/em-location-posts-admin.php:42 +#: templates/tables/locations.php:38 +#: templates/tables/locations.php:47 +msgid "State" +msgstr "Stat" + +#@ dbem +#: admin/em-options.php:644 +#: admin/em-options.php:694 +#: admin/em-options.php:784 +#: classes/em-location-posts-admin.php:43 +#: templates/tables/locations.php:39 +#: templates/tables/locations.php:48 +msgid "Country" +msgstr "Land" + +#@ dbem +#: admin/em-ms-locations.php:39 +msgid "Add location" +msgstr "Tilføj lokation" + +#@ dbem +#: admin/em-ms-locations.php:42 +msgid "Edit location" +msgstr "Rediger lokation" + +#@ dbem +#: templates/forms/location-editor.php:17 +msgid "required" +msgstr "pÃ¥krævet" + +#@ dbem +#: templates/forms/location-editor.php:28 +msgid "Location Name" +msgstr "Lokationsnavn" + +#@ dbem +#: templates/forms/location-editor.php:33 +msgid "The name of the location" +msgstr "Navnet pÃ¥ lokationen" + +#@ dbem +#@ default +#: admin/em-bookings.php:120 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:334 +#: admin/em-options.php:345 +#: admin/em-options.php:606 +#: admin/em-options.php:620 +#: admin/em-options.php:1056 +#: admin/em-options.php:1488 +#: classes/em-event-posts-admin.php:95 +#: classes/em-event-posts-admin.php:214 +#: classes/em-location.php:361 +#: classes/em-location.php:368 +#: classes/em-location.php:657 +#: em-actions.php:180 +#: em-posts.php:230 +#: templates/buddypress/group-events.php:44 +#: templates/buddypress/my-group-events.php:44 +#: templates/forms/location-editor.php:37 +#: templates/tables/events.php:54 +msgid "Location" +msgstr "Lokation" + +#@ dbem +#: templates/forms/location/where.php:5 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Hvis du bruger Google Maps, jo flere detaljer du tilføjer, jo mere præcis er Google til at finde din lokation. Hvis din adresse ikke bliver fundet, sÃ¥ prøv venligst pÃ¥ maps.google.com ved at tilføje alle felterne nedenfor adskilt af kommaer." + +#@ dbem +#: templates/forms/event/location.php:66 +#: templates/forms/location/where.php:9 +msgid "Address:" +msgstr "Adresse:" + +#@ dbem +#: templates/forms/event/location.php:72 +#: templates/forms/location/where.php:15 +msgid "City/Town:" +msgstr "By:" + +#@ dbem +#: templates/forms/event/location.php:78 +#: templates/forms/location/where.php:21 +msgid "State/County:" +msgstr "Stat/Provins:" + +#@ dbem +#: templates/forms/event/location.php:84 +#: templates/forms/location/where.php:27 +msgid "Postcode:" +msgstr "Postnummer:" + +#@ dbem +#: templates/forms/event/location.php:90 +#: templates/forms/location/where.php:33 +msgid "Region:" +msgstr "Region:" + +#@ dbem +#: templates/forms/event/location.php:96 +#: templates/forms/location/where.php:40 +msgid "Country:" +msgstr "Land:" + +#@ dbem +#: templates/forms/event/location.php:99 +#: templates/forms/location/where.php:43 +msgid "none selected" +msgstr "Ingen er valgt" + +#@ dbem +#: templates/forms/event/location.php:116 +#: templates/forms/location/where.php:53 +msgid "Location not found" +msgstr "Lokation ikke fundet" + +#@ dbem +#: templates/forms/location-editor.php:90 +msgid "No image uploaded for this location yet" +msgstr "Der er endnu ikke sendt et billede for denne lokation" + +#@ dbem +#: templates/forms/location-editor.php:104 +msgid "Update location" +msgstr "Opdater lokation" + +#@ dbem +#: admin/bookings/em-events.php:13 +#: em-functions.php:165 +msgid "Past events" +msgstr "Tidligere events" + +#@ dbem +#: admin/bookings/em-events.php:14 +#: em-functions.php:163 +msgid "All events" +msgstr "Alle events" + +#@ dbem +#: admin/bookings/em-events.php:15 +#: em-functions.php:164 +msgid "Future events" +msgstr "Kommende events" + +#@ dbem +#: classes/em-booking.php:101 +#: classes/em-event.php:248 +msgid "Approved" +msgstr "Godkendt" + +#@ dbem +#: admin/bookings/em-events.php:133 +#: classes/em-booking.php:100 +#: classes/em-bookings-table.php:38 +#: classes/em-event-posts-admin.php:139 +#: classes/em-event.php:247 +#: templates/buddypress/group-events.php:95 +#: templates/buddypress/my-group-events.php:89 +#: templates/tables/events.php:19 +#: templates/tables/events.php:99 +msgid "Pending" +msgstr "Afventer godkendelse" + +#@ dbem +#: em-posts.php:148 +#: templates/tables/events.php:24 +#: templates/tables/events.php:26 +msgid "Search Events" +msgstr "Søg events" + +#@ default +#: admin/bookings/em-events.php:69 +#: classes/em-bookings-table.php:285 +msgid "Filter" +msgstr "Filter" + +#@ dbem +#: admin/bookings/em-events.php:88 +msgid "no events" +msgstr "ingen events" + +#@ dbem +#: admin/bookings/em-events.php:99 +#: templates/buddypress/group-events.php:45 +#: templates/buddypress/my-group-events.php:45 +#: templates/tables/events.php:55 +msgid "Date and time" +msgstr "Dato og tidspunkt" + +#@ dbem +#: classes/em-event-posts-admin.php:137 +#: templates/buddypress/group-events.php:93 +#: templates/buddypress/my-group-events.php:87 +#: templates/tables/events.php:97 +#: templates/templates/bookings-event-printable.php:42 +msgid "Booked" +msgstr "Tilmeldt" + +#@ dbem +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-rejected.php:113 +#: classes/em-bookings-table.php:436 +#: classes/em-bookings-table.php:445 +#: classes/em-bookings-table.php:453 +#: classes/em-bookings-table.php:461 +#: classes/em-bookings-table.php:467 +#: classes/em-bookings-table.php:472 +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:101 +#: templates/buddypress/group-events.php:135 +#: templates/buddypress/my-group-events.php:95 +#: templates/buddypress/my-group-events.php:129 +#: templates/forms/event/bookings.php:89 +#: templates/tables/events.php:105 +#: templates/tables/events.php:136 +msgid "Delete" +msgstr "Slet" + +#@ dbem +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +#: classes/em-bookings-table.php:434 +#: classes/em-bookings-table.php:452 +#: classes/em-bookings-table.php:460 +msgid "Approve" +msgstr "Godkend" + +#@ dbem +#: templates/buddypress/group-events.php:106 +#: templates/buddypress/my-group-events.php:100 +#: templates/tables/events.php:110 +msgid "Duplicate this event" +msgstr "Dubliker denne event" + +#@ dbem +#: classes/em-event-posts-admin.php:144 +#: templates/buddypress/group-events.php:129 +#: templates/buddypress/my-group-events.php:123 +#: templates/tables/events.php:130 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "ADVARSEL! Du vil slette ALLE gentagelser af denne event, herunder tilmeldingshistorik tilknyttet ethvert event i denne gentagelse. For at beholde tilmeldingsoplysninger, sÃ¥ gÃ¥ til den relevante single-event, og gem den for at fjerne tilknytningen til denne gentaget serie." + +#@ dbem +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: em-install.php:327 +#: events-manager.php:242 +msgid "Search" +msgstr "Søg" + +#@ dbem +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-rejected.php:55 +msgid "Decline" +msgstr "Afvis" + +#@ dbem +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Genskab" + +#@ dbem +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-rejected.php:112 +#: classes/em-bookings-table.php:437 +#: classes/em-bookings-table.php:446 +#: classes/em-bookings-table.php:454 +#: classes/em-bookings-table.php:462 +msgid "Edit/View" +msgstr "Rediger/læs" + +#@ dbem +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Ingen annullerede tilmeldinger." + +#@ dbem +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Ingen afviste tilmeldinger." + +#@ dbem +#: admin/bookings/em-events.php:29 +#: templates/tables/events.php:21 +msgid "Past Events" +msgstr "Tidligere events" + +#@ dbem +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Alle events" + +#@ dbem +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Kommende events" + +#@ dbem +#: admin/bookings/em-events.php:98 +#: admin/bookings/em-pending.php:101 +#: admin/bookings/em-person.php:86 +#: admin/em-ms-options.php:162 +#: admin/em-options.php:293 +#: admin/em-options.php:316 +#: admin/em-options.php:442 +#: admin/em-options.php:456 +#: admin/em-options.php:927 +#: admin/em-options.php:1034 +#: admin/em-options.php:1062 +#: admin/em-options.php:1092 +#: admin/em-options.php:1115 +#: admin/em-options.php:1470 +#: classes/em-bookings-table.php:63 +#: classes/em-event-posts-admin.php:163 +#: classes/em-event.php:597 +#: classes/em-event.php:612 +#: classes/em-event.php:673 +#: classes/em-event.php:1211 +#: em-actions.php:102 +#: em-install.php:406 +#: em-install.php:438 +#: em-posts.php:139 +#: templates/forms/event-editor.php:12 +#: templates/templates/my-bookings.php:46 +msgid "Event" +msgstr "Event" + +#@ dbem +#: admin/bookings/em-events.php:131 +#: templates/forms/event/bookings.php:35 +msgid "Booked Spaces" +msgstr "Tilmeldte pladser" + +#@ dbem +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +msgid "Unapprove" +msgstr "Tilbagekald godkendelse" + +#@ dbem +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +#: classes/em-bookings-table.php:435 +#: classes/em-bookings-table.php:444 +msgid "Reject" +msgstr "Afvis" + +#@ dbem +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +msgid "No confirmed bookings." +msgstr "Ingen bekræftet tilmeldinger." + +#@ dbem +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Ingen tilmeldinger der afventer godkendelse." + +#@ dbem +#: classes/em-tickets-bookings.php:165 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:11 +#, php-format +msgid "You do not have the rights to manage this %s." +msgstr "Du har ikke tilladelse til at administrere denne %s." + +#@ dbem +#: buddypress/screens/my-events.php:49 +#: em-events.php:152 +#: em-posts.php:144 +msgid "Edit Event" +msgstr "Rediger event" + +#@ default +#: em-functions.php:227 +msgid "Mon" +msgstr "Man" + +#@ default +#: em-functions.php:227 +msgid "Tue" +msgstr "Tir" + +#@ default +#: em-functions.php:227 +msgid "Wed" +msgstr "Ons" + +#@ default +#: em-functions.php:227 +msgid "Thu" +msgstr "Tors" + +#@ default +#: em-functions.php:227 +msgid "Fri" +msgstr "Fre" + +#@ default +#: em-functions.php:227 +msgid "Sat" +msgstr "Lør" + +#@ default +#: em-functions.php:227 +msgid "Sun" +msgstr "Søn" + +#@ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Daily" +msgstr "Dagligt" + +#@ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Weekly" +msgstr "Ugentligt" + +#@ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Monthly" +msgstr "MÃ¥nedligt" + +#@ dbem +#: templates/forms/event/recurring-when.php:20 +#: templates/forms/event/when-with-recurring.php:42 +msgid "day" +msgstr "dag" + +#@ dbem +#: templates/forms/event/recurring-when.php:22 +#: templates/forms/event/when-with-recurring.php:44 +msgid "days" +msgstr "dage" + +#@ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "first" +msgstr "første" + +#@ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "second" +msgstr "anden" + +#@ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "third" +msgstr "tredje" + +#@ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "fourth" +msgstr "fjerde" + +#@ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "last" +msgstr "sidste" + +#@ dbem +#: classes/em-event-post-admin.php:197 +#: classes/em-event-post-admin.php:364 +#: classes/em-event-post-admin.php:370 +msgid "Group Ownership" +msgstr "Gruppe-ejerskab" + +#@ dbem +#: templates/forms/event/group.php:23 +#: templates/forms/event-editor.php:61 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Vælg en gruppe du administrerer for at tilknytte denne event til denne. Bemærk at alle andre administratorer i denne gruppe kan redigere tilmeldingen, og du vil ikke være i stand til at fjerne denne event igen uden at slette det." + +#@ dbem +#: classes/em-event-post-admin.php:190 +msgid "Bookings Stats" +msgstr "Tilmeldingsstatistikker" + +#@ dbem +#: templates/forms/event/booking-stats.php:12 +msgid "Available Spaces" +msgstr "Ledige pladser" + +#@ dbem +#: templates/forms/event/booking-stats.php:13 +msgid "Confirmed Spaces" +msgstr "Bekræftet pladser" + +#@ dbem +#: templates/forms/event/booking-stats.php:14 +msgid "Pending Spaces" +msgstr "Pladser der afventer godkendelse" + +#@ dbem +#: templates/forms/event/booking-stats.php:21 +msgid "manage bookings" +msgstr "Administrer tilmeldinger" + +#@ dbem +#: templates/forms/event/booking-stats.php:22 +msgid "printable view" +msgstr "printvisning" + +#@ dbem +#: admin/em-bookings.php:109 +#: templates/forms/event/booking-stats.php:23 +msgid "export csv" +msgstr "Eksportér csv" + +#@ dbem +#: templates/forms/event/booking-stats.php:32 +msgid "No responses yet!" +msgstr "Ingen tilbagemeldinger endnu!" + +#@ dbem +#: classes/em-event-post-admin.php:251 +#, php-format +msgid "No categories available, create one here first" +msgstr "Ingen kategorier tilgængelige, opret først en her" + +#@ dbem +#: templates/forms/event-editor.php:35 +msgid "The event name. Example: Birthday party" +msgstr "Eventsnavn. Eksempel: Fødselsdagsfest" + +#@ dbem +#: templates/forms/event/location.php:28 +msgid "Location:" +msgstr "Lokation:" + +#@ dbem +#: templates/forms/event/location.php:61 +msgid "Create a location or start typing to search a previously created location." +msgstr "Opret en lokation eller begynd at taste for at søge efter en tidligere oprettet lokation." + +#@ dbem +#: templates/forms/event/location.php:62 +msgid "You cannot edit saved locations here." +msgstr "Du kan ikke redigere gemte lokationer her." + +#@ dbem +#: templates/forms/event/location.php:62 +msgid "Reset this form to create a location." +msgstr "Nulstil denne formular for at oprette en lokation." + +#@ dbem +#: templates/forms/event/location.php:104 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Ved at indtaste dette først kan du hurtigt finde frem til tidligere indtastet stater og regioner i landet." + +#@ dbem +#: templates/forms/event-editor.php:170 +msgid "No image uploaded for this event yet" +msgstr "Der er endnu intet billede sendt for denne event" + +#@ dbem +#: classes/em-event-post-admin.php:188 +#: classes/em-event-post-admin.php:361 +#: templates/forms/event-editor.php:181 +msgid "Bookings/Registration" +msgstr "Tilmeldinger/Registrering" + +#@ dbem +#: templates/forms/event/bookings.php:8 +msgid "Enable registration for this event" +msgstr "Tillad registrering til dette event" + +#@ dbem +#: templates/forms/event/bookings.php:24 +msgid "Tickets" +msgstr "Billetter" + +#@ dbem +#: templates/forms/event/bookings.php:30 +msgid "Ticket Name" +msgstr "Billetnavn" + +#@ dbem +#: admin/em-bookings.php:164 +#: admin/em-bookings.php:256 +#: classes/em-bookings-table.php:68 +#: classes/em-tickets.php:205 +#: em-bookings.php:115 +#: templates/forms/event/bookings.php:31 +#: templates/forms/ticket-form.php:12 +#: templates/forms/tickets-form.php:11 +msgid "Price" +msgstr "Pris" + +#@ dbem +#: templates/forms/event/bookings.php:32 +msgid "Min/Max" +msgstr "Min/Max" + +#@ dbem +#: templates/forms/event/bookings.php:33 +msgid "Start/End" +msgstr "Start/Slut" + +#@ dbem +#: templates/forms/event/bookings.php:34 +msgid "Avail. Spaces" +msgstr "Tilgæng. pladser" + +#@ dbem +#: templates/forms/event/bookings.php:42 +msgid "Add new ticket" +msgstr "Tilføj ny billet" + +#@ dbem +#: templates/forms/event/bookings.php:57 +msgid "Free" +msgstr "Gratis" + +#@ dbem +#: templates/forms/event/bookings.php:91 +msgid "View Bookings" +msgstr "Vis tilmeldinger" + +#@ dbem +#: classes/em-event-post-admin.php:194 +#: classes/em-event-post-admin.php:367 +#: classes/em-location-post-admin.php:116 +msgid "Attributes" +msgstr "Attributter" + +#@ dbem +#: templates/forms/event/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Du har ingen brugerdefinerede attributter i nogen af dine Events-Manager-skabelonindstillinger. Tilføj dem venligst pÃ¥ indstillingssiden" + +#@ dbem +#: templates/forms/event/attributes.php:50 +#: templates/forms/location/attributes.php:50 +msgid "Depreciated Attributes" +msgstr "Afskrevet attributter" + +#@ dbem +#: templates/forms/event-editor.php:191 +msgid "Submit Event" +msgstr "Tilføj event" + +#@ dbem +#: events-manager.php:233 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Er du sikker pÃ¥ du ønsker at omlægge dette gentaget event? Hvis du gør dette, vil du miste alle tilmeldingsinformationer og de tidligere gentaget events vil blive slettet." + +#@ dbem +#: events-manager.php:234 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Er du sikker pÃ¥ du vil deaktivere tilmeldinger? Hvis du gør dette og klikker gem, vil du miste alle de tidligere tilmeldinger. Hvis du ønsker at forhindre yderligere tilmeldinger, sÃ¥ reducer antal tilgængelige pladser til det antal tilmeldinger som du har i øjeblikket" + +#@ dbem +#: admin/em-bookings.php:60 +msgid "Event Bookings Dashboard" +msgstr "Event tilmeldingspanel" + +#@ dbem +#: admin/em-bookings.php:77 +msgid "Events With Bookings Enabled" +msgstr "Events med tilmeldinger aktiveret" + +#@ dbem +#: admin/em-bookings.php:92 +#: admin/em-bookings.php:193 +#: admin/em-bookings.php:372 +#: admin/em-bookings.php:424 +msgid "You do not have the rights to manage this event." +msgstr "Du har ikke rettigheder til at administrere denne event." + +#@ dbem +#: admin/em-bookings.php:104 +#, php-format +msgid "Manage %s Bookings" +msgstr "Administrer %s tilmeldinger" + +#@ dbem +#: admin/em-bookings.php:105 +#: admin/em-bookings.php:156 +msgid "View/Edit Event" +msgstr "Vis/rediger event" + +#@ dbem +#: admin/em-bookings.php:111 +#: admin/em-options.php:871 +#: templates/forms/event-editor.php:31 +msgid "Event Name" +msgstr "Eventnavn" + +#@ dbem +#: admin/em-bookings.php:112 +msgid "Spaces confirmed" +msgstr "Pladser bekræftet" + +#@ dbem +#: admin/em-bookings.php:114 +#: templates/templates/my-bookings.php:47 +msgid "Date" +msgstr "Dato" + +#@ dbem +#: admin/em-bookings.php:145 +msgid "You do not have the rights to manage this ticket." +msgstr "Du har ikke rettigheder til at administrere denne billet." + +#@ dbem +#: admin/em-bookings.php:155 +#, php-format +msgid "Ticket for %s" +msgstr "Billet til %s" + +#@ dbem +#: admin/em-bookings.php:157 +msgid "View Event Bookings" +msgstr "Vis event-tilmeldinger" + +#@ dbem +#: admin/em-bookings.php:163 +#: templates/forms/ticket-form.php:35 +#: templates/forms/tickets-form.php:10 +msgid "Description" +msgstr "Beskrivelse" + +#@ dbem +#: admin/bookings/em-cancelled.php:87 +#: admin/bookings/em-confirmed.php:88 +#: admin/bookings/em-pending.php:105 +#: admin/bookings/em-person.php:87 +#: admin/bookings/em-rejected.php:87 +#: admin/em-bookings.php:165 +#: admin/em-bookings.php:255 +#: classes/em-bookings-table.php:66 +#: classes/em-tickets.php:205 +#: em-bookings.php:116 +#: em-bookings.php:144 +#: templates/forms/bookingform/ticket-single.php:30 +#: templates/forms/ticket-form.php:14 +#: templates/templates/bookings-event-printable.php:27 +#: templates/templates/my-bookings.php:48 +msgid "Spaces" +msgstr "Pladser" + +#@ dbem +#: admin/em-bookings.php:166 +msgid "Min" +msgstr "Min" + +#@ dbem +#: admin/em-bookings.php:167 +msgid "Max" +msgstr "Max" + +#@ dbem +#: admin/em-bookings.php:168 +msgid "Start" +msgstr "Start" + +#@ dbem +#: admin/em-bookings.php:169 +msgid "End" +msgstr "Slut" + +#@ dbem +#: admin/em-bookings.php:201 +msgid "Edit Booking" +msgstr "Rediger tilmelding" + +#@ dbem +#: admin/em-bookings.php:209 +msgid "Event Details" +msgstr "Event detaljer" + +#@ dbem +#: admin/em-bookings.php:220 +msgid "Date/Time" +msgstr "Dato/klokkeslæt" + +#@ dbem +#: admin/em-bookings.php:232 +#: admin/em-bookings.php:394 +msgid "Personal Details" +msgstr "Personlige detaljer" + +#@ dbem +#: admin/em-bookings.php:240 +msgid "Booking Details" +msgstr "Detaljer om tilmelding" + +#@ dbem +#: admin/bookings/em-person.php:88 +#: admin/em-bookings.php:249 +#: classes/em-bookings-table.php:67 +#: templates/templates/my-bookings.php:49 +msgid "Status" +msgstr "Status" + +#@ dbem +#: admin/em-bookings.php:254 +#: classes/em-tickets.php:205 +#: em-bookings.php:114 +msgid "Ticket Type" +msgstr "Billet type" + +#@ dbem +#: admin/em-bookings.php:316 +#: em-bookings.php:158 +#: templates/forms/bookingform/booking-fields.php:26 +#: templates/templates/bookings-event-printable.php:28 +msgid "Comment" +msgstr "Kommentar" + +#@ dbem +#: admin/em-bookings.php:328 +msgid "Booking Notes" +msgstr "Tilmeldingsnoter" + +#@ dbem +#: admin/em-bookings.php:331 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Du kan tilføje private noter herunder for interne henvisninger som kun Event administratorer kan se." + +#@ dbem +#: admin/em-bookings.php:336 +msgid "wrote" +msgstr "skrev" + +#@ dbem +#: admin/em-bookings.php:382 +msgid "Manage Person's Booking" +msgstr "Administrer en persons tilmelding" + +#@ dbem +#: admin/em-bookings.php:384 +msgid "Edit User" +msgstr "Rediger bruger" + +#@ dbem +#: admin/em-bookings.php:406 +msgid "Past And Present Bookings" +msgstr "Tidligere og nuværende tilmeldinger" + +#@ dbem +#: admin/em-admin.php:179 +#, php-format +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Denne side svare til Events Manager's eventsside. Indholdet vil blive overskrevet af Events Manager, men hvis du inkludere ordet CONTENTS (præcis som skrevet med store bogstaver) og omgiver det med anden tekst, vil kun CONTENTS blive overskrevet. Hvis du vil ændre den mÃ¥de hvorpÃ¥ events ser ud, sÃ¥ gÃ¥ til settings siden " + +#@ dbem +#: em-functions.php:75 +#, php-format +msgid "Displaying %s–%s of %s" +msgstr "Viser %s–%s af %s" + +#@ dbem +#: admin/em-options.php:40 +msgid "Changes saved." +msgstr "Ændringer gemt." + +#@ dbem +#: admin/em-ms-options.php:56 +#: admin/em-options.php:171 +#, php-format +msgid "This accepts %s and %s placeholders." +msgstr "Her accepterers %s og %s pladsholdere." + +#@ dbem +#: admin/em-ms-options.php:57 +#: admin/em-ms-options.php:58 +#: admin/em-options.php:172 +#: admin/em-options.php:173 +#, php-format +msgid "This accepts %s placeholders." +msgstr "Her accepteres %s pladsholdere." + +#@ dbem +#: admin/em-ms-options.php:59 +#: admin/em-options.php:174 +#, php-format +msgid "This accepts %s, %s and %s placeholders." +msgstr "Her accepteres %s, %s og %s." + +#@ dbem +#@ default +#: admin/em-ms-options.php:61 +#: admin/em-ms-options.php:199 +#: admin/em-options.php:177 +#: admin/em-options.php:1390 +msgid "Save Changes" +msgstr "Gem ændringer" + +#@ dbem +#: admin/em-ms-options.php:61 +#: admin/em-options.php:177 +#: classes/em-bookings-table.php:37 +msgid "All" +msgstr "Alle" + +#@ dbem +#: admin/em-ms-options.php:66 +#: admin/em-options.php:182 +msgid "Collapse All" +msgstr "Sammenfold alle" + +#@ dbem +#: admin/em-ms-options.php:67 +#: admin/em-options.php:183 +msgid "Expand All" +msgstr "Udfold alle" + +#@ dbem +#: admin/em-ms-options.php:138 +#: admin/em-options.php:276 +msgid "Event Manager Options" +msgstr "Event Manager indstillinger" + +#@ dbem +#: admin/em-ms-options.php:148 +#: admin/em-options.php:287 +#: admin/em-options.php:368 +#: admin/em-options.php:398 +#: admin/em-options.php:420 +#: admin/em-options.php:442 +#: admin/em-options.php:456 +#: admin/em-options.php:606 +#: admin/em-options.php:620 +#: admin/em-options.php:733 +#: admin/em-options.php:823 +#: admin/em-options.php:855 +#: admin/em-options.php:916 +#: admin/em-options.php:940 +#: admin/em-options.php:964 +#: admin/em-options.php:981 +#: admin/em-options.php:1046 +#: admin/em-options.php:1077 +#: admin/em-options.php:1107 +#: admin/em-options.php:1129 +#: admin/em-options.php:1144 +#: admin/em-options.php:1173 +#: admin/em-options.php:1190 +#: admin/em-options.php:1208 +#: admin/em-options.php:1242 +#: admin/em-options.php:1264 +#: admin/em-options.php:1298 +#: admin/em-options.php:1351 +#: admin/em-options.php:1411 +#: admin/em-options.php:1433 +#: admin/em-options.php:1461 +#: admin/em-options.php:1566 +msgid "Click to toggle" +msgstr "Klik for at skifte" + +#@ dbem +#: admin/em-ms-options.php:148 +msgid "Multi Site Options" +msgstr "Multi-site indstillinger" + +#@ dbem +#: admin/em-ms-options.php:152 +msgid "Enable global tables mode?" +msgstr "Aktiver globale tabeller-funktion?" + +#@ dbem +#: admin/em-ms-options.php:152 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Sæt denne til ja, og alle events vil blive sikret pÃ¥ hovedsiden for eventtabeller (EM skal ogsÃ¥ være aktiveret). Dette giver dig rettigheder til at dele events pÃ¥ forskellige blogs, som f.eks. at vise events i dit netværk mens du tillader brugerne at vise og administrere events pÃ¥ deres egen blog. Tænk pÃ¥, at hvis denne aktiveres vil gamle events oprettet pÃ¥ en under-blog ikke være tilgængelige mere; hvis du skifter tilbage vil de være tilgængelige igen, men nye events oprettet med global eventfunktion vil kun bibeholdes pÃ¥ hovedsiden." + +#@ dbem +#: admin/em-ms-options.php:163 +msgid "Display global events on main blog?" +msgstr "Vis globale events pÃ¥ hovedblog?" + +#@ dbem +#: admin/em-options.php:341 +msgid "Use dropdown for locations?" +msgstr "Brug rullegardin-menu for lokationer?" + +#@ dbem +#: admin/em-options.php:341 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Sæt til ja for at vælge lokation fra en rullegardin-menu; valg af lokation vil gÃ¥ hurtigere, men du vil miste muligheden for at indsætte lokationer sammen med events" + +#@ dbem +#: admin/em-options.php:297 +msgid "Select yes to enable the recurrence features feature" +msgstr "Vælg ja for at aktivere gentagelsesfunktionen" + +#@ dbem +#: admin/em-options.php:298 +msgid "Enable bookings?" +msgstr "Aktivér tilmeldinger?" + +#@ dbem +#: admin/em-options.php:298 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Vælg ja for at tillade tilmeldinger og billetter til events." + +#@ dbem +#: admin/em-options.php:301 +msgid "Select yes to enable the category features" +msgstr "Vælg ja for at aktivere kategorifunktioner" + +#@ dbem +#: admin/em-options.php:313 +#: admin/em-options.php:342 +msgid "Select yes to enable the attributes feature" +msgstr "Vælg ja for at aktivere attributfunktioner" + +#@ dbem +#: admin/em-options.php:305 +msgid "no default category" +msgstr "Ingen standard-kategori" + +#@ dbem +#: admin/em-options.php:310 +msgid "Default Category" +msgstr "Standard kategori" + +#@ dbem +#: admin/em-options.php:310 +msgid "This option allows you to select the default category when adding an event." +msgstr "Denne valgmulighed giver dig mulighed for at vælge en standard-kategori nÃ¥r du tilføjer en event." + +#@ dbem +#: admin/em-options.php:326 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(for øjeblikket ikke anvendelig med event ejerskab slÃ¥et til, kommer snart!)" + +#@ dbem +#: admin/em-options.php:321 +msgid "no default location" +msgstr "Ingen standard lokation" + +#@ dbem +#: admin/em-options.php:326 +msgid "Default Location" +msgstr "Standard lokation" + +#@ dbem +#: admin/em-options.php:326 +msgid "This option allows you to select the default location when adding an event." +msgstr "Denne valgmulighed giver dig mulighed for at vælge en standard-lokation nÃ¥r du tilføjer en event." + +#@ dbem +#: admin/em-options.php:329 +msgid "Default Location Country" +msgstr "Standard lokationsland" + +#@ dbem +#: admin/em-options.php:329 +msgid "no default country" +msgstr "Intet standard-land" + +#@ dbem +#: admin/em-options.php:329 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Hvis du vælger et standard land, vil det blive sat som standard nÃ¥r der oprettes en ny lokation." + +#@ dbem +#: admin/em-options.php:316 +#, php-format +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Du kan ogsÃ¥ tilføje event-attributter her, én pr. linje i dette format #_ATT{key}. De vil ikke vises pÃ¥ eventsiderne, undtagen hvis du indsætter dem i en anden skabelon herunder, men du vil mÃ¥ske gerne gemme ekstra information om en event for at genbruge denne igen. Mere information om pladsholdere." + +#@ dbem +#: admin/em-options.php:355 +msgid "Show some love?" +msgstr "Vis lidt kærlighed?" + +#@ dbem +#: admin/em-options.php:355 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Hundredevis af fritimer er gÃ¥et med at programmere dette gratis plugin, vis din opbakning og tilføj et lille link til hjemmesiden for dette plugin i bunden af din eventsider." + +#@ dbem +#: admin/em-options.php:469 +msgid "Events page" +msgstr "Eventsside" + +#@ dbem +#: admin/em-options.php:474 +msgid "Show events page in lists?" +msgstr "Vis eventssider i tabeller?" + +#@ dbem +#: admin/em-options.php:474 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Afkryds denne valgmulighed hvis du ønsker at eventssiden vises sammen med andre sider i tabeller." + +#@ dbem +#: admin/em-options.php:475 +msgid "Display calendar in events page?" +msgstr "Vis kalender pÃ¥ eventssider?" + +#@ dbem +#: admin/em-options.php:475 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Denne valgmulighed tillader at kalenderen vises pÃ¥ eventssiden, i stedet for standard-tabellen. Det anbefales ikke at vise bÃ¥de en kalender-widget og en kalenderside." + +#@ dbem +#: admin/em-options.php:475 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Hvis du gerne vil vise events som løber over mere end én dag, sÃ¥ se kalendersektionen pÃ¥ denne side." + +#@ dbem +#: admin/em-options.php:476 +msgid "Disable title rewriting?" +msgstr "SlÃ¥ titel-omskrivning fra?" + +#@ dbem +#: admin/em-options.php:477 +msgid "Event Manager titles" +msgstr "Event Manager titler" + +#@ dbem +#: admin/em-options.php:477 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Denne indstilling betyder kun noget hvis du valgte 'Ja' herover. Du vil bemærke at eventsside-titler ikke omskrives, og at du har en ny titel under standardside navnet. Det er her du kontrollere HTML for denne titel. Vær sikker pÃ¥ at du beholder #_PAGETITLE pladsholderen her, da det er hvad der omskrives af af events manager. For at kontrollere hvad der omskrives i denne titel, se indstillingerne længere nede for sidetitler." + +#@ dbem +#: admin/em-options.php:597 +msgid "Event List Limits" +msgstr "Eventtabel begrænsninger" + +#@ dbem +#: admin/em-options.php:597 +msgid "This will control how many events are shown on one list by default." +msgstr "Dette kontrollerer hvor mange events der vises i en tabel som standard." + +#@ dbem +#: admin/em-options.php:530 +msgid "Are current events past events?" +msgstr "Er nuværende events tidligere events?" + +#@ dbem +#: admin/em-options.php:530 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Events som har en slutdato senere end dags dato, vil som standard blive inkluderet i søgninger, indstil denne til ja for at betragte events som startede 'i gÃ¥r' som før dags dato." + +#@ dbem +#: admin/em-options.php:478 +msgid "Show events search?" +msgstr "Vis event-søgning" + +#@ dbem +#: admin/em-options.php:478 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Hvis sat til ja, vises en søge-rubrik lige over din tabel med events." + +#@ dbem +#: admin/em-options.php:540 +#: admin/em-options.php:994 +msgid "Default event list ordering" +msgstr "Standard sortering pÃ¥ eventtabel" + +#@ dbem +#: admin/em-options.php:545 +msgid "Order by start date, start time, then event name" +msgstr "Sorter efter startdato, starttidspunkt, og eventnavn" + +#@ dbem +#: admin/em-options.php:546 +msgid "Order by name, start date, then start time" +msgstr "Sorter efter navn, startdato, og starttidspunkt" + +#@ dbem +#: admin/em-options.php:547 +msgid "Order by name, end date, then end time" +msgstr "Sorter efter navn, slutdato, og sluttidspunkt" + +#@ dbem +#: admin/em-options.php:548 +msgid "Order by end date, end time, then event name" +msgstr "Sorter efter slutdato, sluttidspunkt, og eventnavn" + +#@ dbem +#: admin/em-options.php:505 +#: admin/em-options.php:508 +#: admin/em-options.php:559 +#: admin/em-options.php:657 +#: admin/em-options.php:660 +#: admin/em-options.php:707 +#: admin/em-options.php:710 +#: admin/em-options.php:797 +#: admin/em-options.php:800 +#: admin/em-options.php:884 +#: admin/em-options.php:887 +#: admin/em-options.php:1011 +#: widgets/em-events.php:133 +#: widgets/em-locations.php:105 +msgid "Ascending" +msgstr "Stigende" + +#@ dbem +#: admin/em-options.php:506 +#: admin/em-options.php:509 +#: admin/em-options.php:560 +#: admin/em-options.php:658 +#: admin/em-options.php:661 +#: admin/em-options.php:708 +#: admin/em-options.php:711 +#: admin/em-options.php:798 +#: admin/em-options.php:801 +#: admin/em-options.php:885 +#: admin/em-options.php:888 +#: admin/em-options.php:1012 +#: widgets/em-events.php:134 +#: widgets/em-locations.php:106 +msgid "Descending" +msgstr "Faldende" + +#@ dbem +#: admin/em-options.php:562 +#: admin/em-options.php:1014 +msgid "All Ascending" +msgstr "Sorter alle stigende" + +#@ dbem +#: admin/em-options.php:565 +#: admin/em-options.php:1017 +msgid "All Descending" +msgstr "Sorter alle faldende" + +#@ dbem +#: admin/em-options.php:519 +#: admin/em-options.php:579 +#: admin/em-options.php:1027 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "NÃ¥r Events Manager viser tabeller over events, sÃ¥ er sorteringen som standard sat til startdato i stigende rækkefølge. For at ændrer dette kan du tilpasse indstillingerne herover." + +#@ dbem +#: admin/em-options.php:583 +msgid "Event list scope" +msgstr "Eventtabel indhold" + +#@ dbem +#: admin/em-options.php:593 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Vis kun events der begynder indenfor en afgrænset tidsperiode pÃ¥ eventssiden. Standard er kommende events uden en tidsafgrænsning pÃ¥ slutdatoen." + +#@ dbem +#: admin/em-options.php:916 +msgid "Events format" +msgstr "Eventsformat" + +#@ dbem +#: admin/em-options.php:919 +#: admin/em-options.php:1049 +#: admin/em-options.php:1080 +#, php-format +msgid "%s Page" +msgstr "% s-side" + +#@ dbem +#: admin/em-options.php:921 +#: admin/em-options.php:1064 +#: admin/em-options.php:1094 +#: admin/em-options.php:1117 +msgid "Default event list format header" +msgstr "Standard eventtabel sidehovedformat" + +#@ dbem +#: admin/em-options.php:921 +#: admin/em-options.php:1064 +#: admin/em-options.php:1094 +#: admin/em-options.php:1117 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Dette indhold vises lige over din kode for standard eventtabel-format. Standard er ingenting." + +#@ dbem +#: admin/em-options.php:922 +msgid "Default event list format" +msgstr "Standard eventtabel-format" + +#@ dbem +#: admin/em-options.php:922 +msgid "The format of any events in a list." +msgstr "Formatet pÃ¥ enhver event i en tabel." + +#@ dbem +#: admin/em-options.php:923 +#: admin/em-options.php:1066 +#: admin/em-options.php:1096 +#: admin/em-options.php:1119 +msgid "Default event list format footer" +msgstr "Standard eventtabel sidefodformat" + +#@ dbem +#: admin/em-options.php:923 +#: admin/em-options.php:1066 +#: admin/em-options.php:1096 +#: admin/em-options.php:1119 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Dette indhold vises lige under din kode for standard eventtabel-format. Standard er ingenting." + +#@ dbem +#: admin/em-options.php:924 +msgid "No events message" +msgstr "Ingen eventbesked" + +#@ dbem +#: admin/em-options.php:924 +msgid "The message displayed when no events are available." +msgstr "Den viste besked, nÃ¥r der ikke er nogen events tilgængelige." + +#@ dbem +#: admin/em-options.php:925 +msgid "List events by date title" +msgstr "Sorter events efter dato titel" + +#@ dbem +#: admin/em-options.php:925 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
              " +msgstr "Vises en eventsside på en bestemt dato, er dette titlen som vises. For at indsætte datoformater, benyt PHP tidsformat karakterer med et # foranstillet symbol,f.eks. #m, #M, #j, etc.
              " + +#@ dbem +#: admin/em-options.php:927 +#: admin/em-options.php:1056 +#: admin/em-options.php:1087 +#: admin/em-options.php:1110 +#, php-format +msgid "Single %s Page" +msgstr "Single-%s side" + +#@ dbem +#: admin/em-options.php:930 +msgid "Single event page title format" +msgstr "Single-event sidetitel format" + +#@ dbem +#: admin/em-options.php:930 +msgid "The format of a single event page title." +msgstr "Titel format på en single-event side." + +#@ dbem +#: admin/em-options.php:932 +msgid "Default single event format" +msgstr "Standard single-event format" + +#@ dbem +#: admin/em-options.php:932 +msgid "The format of a single event page." +msgstr "Formatet på en single-eventside." + +#@ dbem +#: admin/em-options.php:981 +msgid "Calendar format" +msgstr "Kalenderformat" + +#@ dbem +#: admin/em-options.php:985 +msgid "Small calendar title" +msgstr "Lille kalendertitel" + +#@ dbem +#: admin/em-options.php:985 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "Titelformatet på den tekst der vises når musen trækkes over en event-kalenderdag." + +#@ dbem +#: admin/em-options.php:986 +msgid "Small calendar title separator" +msgstr "Lille kalendertitel skilletegn" + +#@ dbem +#: admin/em-options.php:986 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "Skilletegnet der vises i ovenstående titel, når mere end en event finder sted på samme dag." + +#@ dbem +#: admin/em-options.php:987 +msgid "Full calendar events format" +msgstr "Komplet eventskalender format" + +#@ dbem +#: admin/em-options.php:987 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "Formatet på hvert event når de vises i komplet kalenderformat. Husk at inkludere li tags før og efter event." + +#@ dbem +#: admin/em-options.php:988 +msgid "Show long events on calendar pages?" +msgstr "Vis længerevarende events på kalendersider?" + +#@ dbem +#: admin/em-options.php:988 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Hvis du viser en kalender på eventsiden (se Events formatsektionen på denne side), har du mulighed for at vise events som løber over flere dage hver eneste dag de optræder." + +#@ dbem +#: admin/em-options.php:990 +msgid "Show list on day with single event?" +msgstr "Vis tabeller på dage med single-event?" + +#@ dbem +#: admin/em-options.php:990 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Hvis en kalenderdag kun har én event, vises denne som standard som en single-event når der klikkes på kalenderdatoens link. Hvis du vælger Ja her, vil du altid se en tabel med events." + +#@ dbem +#: admin/em-options.php:1046 +msgid "Locations format" +msgstr "Lokationsformat" + +#@ dbem +#: admin/em-options.php:1051 +#: admin/em-options.php:1082 +#, php-format +msgid "%s list header format" +msgstr "%s tabel sidehovedformat" + +#@ dbem +#: admin/em-options.php:1051 +#: admin/em-options.php:1082 +#, php-format +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Dette indhold vises lige over din kode for alle %s tabelformater, herunder. Standard er ingenting" + +#@ dbem +#: admin/em-options.php:1052 +#: admin/em-options.php:1083 +#, php-format +msgid "%s list item format" +msgstr "%s tabel elementformat" + +#@ dbem +#: admin/em-options.php:1052 +#: admin/em-options.php:1083 +#, php-format +msgid "The format of a single %s in a list." +msgstr "Formatet for single-%s i en tabel." + +#@ dbem +#: admin/em-options.php:1053 +#: admin/em-options.php:1084 +#, php-format +msgid "%s list footer format" +msgstr "%s tabel sidefodformat" + +#@ dbem +#: admin/em-options.php:1053 +#: admin/em-options.php:1084 +#, php-format +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Dette indhold vises lige under din kode for alle %s tabelformater herover. Standard er ingenting" + +#@ dbem +#: admin/em-options.php:1054 +#: admin/em-options.php:1067 +#: admin/em-options.php:1085 +#: admin/em-options.php:1097 +#: admin/em-options.php:1120 +#, php-format +msgid "No %s message" +msgstr "Ingen %s besked" + +#@ dbem +#: admin/em-options.php:1054 +#: admin/em-options.php:1085 +#, php-format +msgid "The message displayed when no %s are available." +msgstr "Beskeden der vises hvis når ingen %s er tilgængelige." + +#@ dbem +#: admin/em-options.php:1058 +#: admin/em-options.php:1089 +#: admin/em-options.php:1112 +#, php-format +msgid "Single %s title format" +msgstr "Single-%s titelformat" + +#@ dbem +#: admin/em-ms-options.php:173 +#: admin/em-options.php:342 +#: admin/em-options.php:343 +#: admin/em-options.php:612 +#: admin/em-options.php:684 +#: admin/em-options.php:1058 +#: admin/em-options.php:1059 +#: classes/em-location-post-admin.php:59 +#: classes/em-location.php:356 +#: classes/em-location.php:366 +#: templates/forms/location-editor.php:11 +msgid "location" +msgstr "lokation" + +#@ dbem +#: admin/em-options.php:1058 +msgid "The format of a single location page title." +msgstr "Titelformat på en single-lokationsside." + +#@ dbem +#: admin/em-options.php:1059 +#: admin/em-options.php:1090 +#: admin/em-options.php:1113 +#, php-format +msgid "Single %s page format" +msgstr "Single-%s sideformat" + +#@ dbem +#: admin/em-options.php:1059 +msgid "The format of a single location page." +msgstr "Formatet på en single-lokationsside." + +#@ dbem +#: admin/em-options.php:1060 +msgid "Default location balloon format" +msgstr "Standard lokation-ballonformat" + +#@ dbem +#: admin/em-options.php:1060 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "Format på den tekst der vises i ballonen der beskriver lokationen på et single-lokationskort." + +#@ dbem +#: admin/em-options.php:1065 +#: admin/em-options.php:1095 +#: admin/em-options.php:1118 +#, php-format +msgid "Default %s list format" +msgstr "Standard %s tabelformat" + +#@ dbem +#: admin/em-options.php:1077 +msgid "Categories format" +msgstr "Kategoriformat" + +#@ dbem +#: admin/em-options.php:774 +#: admin/em-options.php:1089 +#: admin/em-options.php:1090 +msgid "category" +msgstr "kategori" + +#@ dbem +#: admin/em-options.php:1089 +msgid "The format of a single category page title." +msgstr "Titelformat på en single-kategoriside." + +#@ dbem +#: admin/em-options.php:1090 +msgid "The format of a single category page." +msgstr "Formatet på en single-kategoriside." + +#@ dbem +#: admin/em-options.php:1129 +msgid "RSS feed format" +msgstr "RSS feed-format" + +#@ dbem +#: admin/em-options.php:1133 +msgid "RSS main title" +msgstr "RSS titel" + +#@ dbem +#: admin/em-options.php:1133 +msgid "The main title of your RSS events feed." +msgstr "Hovedtitlen på dine RSS feed events." + +#@ dbem +#: admin/em-options.php:1134 +msgid "RSS main description" +msgstr "RSS beskrivelse" + +#@ dbem +#: admin/em-options.php:1134 +msgid "The main description of your RSS events feed." +msgstr "Hovedbeskrivelsen af dine RSS feed events." + +#@ dbem +#: admin/em-options.php:1135 +msgid "RSS title format" +msgstr "RSS titelformat" + +#@ dbem +#: admin/em-options.php:1135 +msgid "The format of the title of each item in the events RSS feed." +msgstr "Titelformat på hvert punkt i event RSS feed." + +#@ dbem +#: admin/em-options.php:1136 +msgid "RSS description format" +msgstr "RSS beskrivelsesformat" + +#@ dbem +#: admin/em-options.php:1136 +msgid "The format of the description of each item in the events RSS feed." +msgstr "Beskrivelsesformat på hvert punkt i event RSS feed." + +#@ dbem +#: admin/em-options.php:1144 +msgid "Maps and geotagging" +msgstr "Kort og geotagging" + +#@ dbem +#: admin/em-options.php:1149 +msgid "Enable Google Maps integration?" +msgstr "Aktiver Google Maps integration?" + +#@ default +#@ dbem +#: admin/em-options.php:1151 +#: em-functions.php:492 +msgid "Yes" +msgstr "Ja" + +#@ default +#@ dbem +#: admin/em-options.php:1152 +#: em-functions.php:492 +msgid "No" +msgstr "Nej" + +#@ dbem +#: admin/em-options.php:1153 +msgid "Check this option to enable Goggle Map integration." +msgstr "Afkryds denne valgmulighed for at aktivere Google Maps integration." + +#@ dbem +#: admin/em-options.php:1157 +msgid "Map text format" +msgstr "Kort tekstformat" + +#@ dbem +#: admin/em-options.php:1157 +msgid "The text format inside the map balloons." +msgstr "Tekstformatet i kort-ballonerne." + +#@ dbem +#: admin/em-options.php:1178 +msgid "Approval Required?" +msgstr "Godkendelse påkrævet?" + +#@ dbem +#: admin/em-options.php:1178 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Tilmeldinger vil ikke blive bekræftet før event-administrator godkender dem." + +#@ dbem +#: admin/em-options.php:1195 +msgid "Currency" +msgstr "Valuta" + +#@ dbem +#: admin/em-options.php:1195 +msgid "Choose your currency for displaying event pricing." +msgstr "Vælg din valuta for at vise eventpriser." + +#@ dbem +#: admin/em-options.php:1246 +msgid "Single ticket mode?" +msgstr "Enkeltbillet funktion?" + +#@ dbem +#: admin/em-options.php:1246 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "I enkeltbillet funktion kan brugere kun oprette én billet per tilmelding (og vil ikke se valgmuligheden for tilføjelse af flere billetter)." + +#@ dbem +#: admin/em-options.php:1247 +msgid "Show ticket table in single ticket mode?" +msgstr "Vis billet-tabel som enkeltbillet funktion?" + +#@ dbem +#: admin/em-options.php:1247 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Hvis du foretrækker en billet-tabel ligesom med multiple billetter, selv for en enkeltbillet-events, så aktiver denne." + +#@ dbem +#: admin/em-options.php:1248 +msgid "Show unavailable tickets?" +msgstr "Vis utilgængelige billetter?" + +#@ dbem +#: admin/em-options.php:1248 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Du kan vælge om du vil vise utilgængelige billetter til besøgende." + +#@ dbem +#: admin/em-options.php:1179 +msgid "Reserved unconfirmed spaces?" +msgstr "Reserver ubekræftet pladser?" + +#@ dbem +#: admin/em-options.php:1179 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Event-pladser bliver som standard utilgængelige når der er tilstrækkeligt med BEKRÆFTEDE tilmeldinger. For at reservere pladser selvom de ikke er godkendt, vælg ja." + +#@ dbem +#: admin/em-options.php:1249 +msgid "Show multiple tickets if logged out?" +msgstr "Vis multiple billetter hvis logget ud?" + +#@ dbem +#: admin/em-options.php:1249 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Hvis en bruger ikke er logget ind vil han blive bedt om at lade sig registrere. Men vi er i stand til at vise tilgængelige billetter hvis du har mere end én billet." + +#@ dbem +#: admin/em-options.php:1181 +msgid "Allow overbooking when approving?" +msgstr "Tillad overbooking?" + +#@ dbem +#: admin/em-options.php:1181 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Hvis du modtager mange tilmeldinger der afventer godkendelse, kan du vælge at tillade flere tilmeldinger end der er pladser; sæt denne til ja og du kan tilsidesætte event pladsbegrænsningerne, når du godkender manuelt." + +#@ dbem +#: admin/em-options.php:1177 +msgid "Allow guest bookings?" +msgstr "Tillad gæstetilmeldinger?" + +#@ dbem +#: admin/em-options.php:1177 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Hvis aktiveret, kan gæste-besøgende oplyse deres E-mailadresse, og bliver automatisk oprettet en brugerkonto sammen med tilmeldingen." + +#@ dbem +#: admin/em-options.php:1212 +msgid "Display login form?" +msgstr "Vis logind-formular?" + +#@ dbem +#: admin/em-options.php:1212 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Vælg om der skal vises en logind rubrik på tilmeldingssiden for at påminde dine medlemmer om at logge ind før tilmelding." + +#@ dbem +#: admin/em-options.php:1298 +msgid "Booking Email Templates" +msgstr "Tilmeldingsskablon for E-mails" + +#@ dbem +#: admin/em-options.php:1303 +msgid "Default contact person" +msgstr "Standard kontaktperson" + +#@ dbem +#: admin/em-options.php:1303 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Vælg standard kontaktperson. Denne bruger vil blive anvendt, når en specifik kontaktperson ikke er angivet for en event." + +#@ dbem +#: admin/em-options.php:1304 +msgid "Email events admin?" +msgstr "Send E-mail til eventsadministrator?" + +#@ dbem +#: admin/em-options.php:1304 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Hvis du vil have at hver eneste event tilmeldingsbekræftelses E-mail afsendes til en administrator, skriv hans E-mail her (efterlad blank for ikke at afsende en E-mail)." + +#@ dbem +#: admin/em-options.php:1305 +msgid "Email contact person?" +msgstr "Send E-mail til kontaktperson?" + +#@ dbem +#: admin/em-options.php:1305 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Afkryds denne valgmulighed hvis du vil have at event-kontaktpersonen modtager en E-mail, når en bruger foretager en pladstilmelding. Der afsendes en E-mail når den første tilmelding er gennemført (uanset om den er bekræftet eller afventer godkendelse)" + +#@ dbem +#: admin/em-options.php:1306 +msgid "Disable new registration email?" +msgstr "Deaktiver ny registrerings E-mail?" + +#@ dbem +#: admin/em-options.php:1308 +msgid "Contact person booking confirmed" +msgstr "Kontaktperson tilmelding bekræftet" + +#@ dbem +#: admin/em-options.php:1309 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "Der bliver sendt en E-mail til event-kontaktpersonen første gang en tilmelding gennemføres." + +#@ dbem +#: admin/em-options.php:1311 +msgid "Contact person email subject" +msgstr "Kontaktperson E-mail emnefelt" + +#@ dbem +#: admin/em-options.php:1312 +msgid "Contact person email" +msgstr "Konaktperson E-mail" + +#@ dbem +#: admin/em-options.php:1314 +msgid "Contact person booking cancelled" +msgstr "Kontaktperson tilmelding annulleret" + +#@ dbem +#: admin/em-options.php:1315 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Der bliver sendt en E-mail til event-kontaktpersonen hvis en tilmelding aflyses." + +#@ dbem +#: admin/em-options.php:1317 +msgid "Contact person cancellation subject" +msgstr "Kontaktperson aflysning emnefelt" + +#@ dbem +#: admin/em-options.php:1318 +msgid "Contact person cancellation email" +msgstr "Kontaktperson aflysning E-mail" + +#@ dbem +#: admin/em-options.php:1320 +msgid "Confirmed booking email" +msgstr "Bekræftet tilmelding E-mail" + +#@ dbem +#: admin/em-options.php:1321 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Dette fremsendes når en persons tilmelding er bekræftet. Det afsendes automatisk hvis godkendelser er påkrævet og tilmeldingen bliver godkendt. Hvis godkendelser er deaktiveret, afsendes dette når en bruger tilføjer en tilmelding." + +#@ dbem +#: admin/em-options.php:1323 +msgid "Booking confirmed email subject" +msgstr "Tilmelding bekræftet E-mail emnefelt" + +#@ dbem +#: admin/em-options.php:1324 +msgid "Booking confirmed email" +msgstr "Tilmelding bekræftet E-mail" + +#@ dbem +#: admin/em-options.php:1326 +msgid "Pending booking email" +msgstr "Afventer godkendelse E-mail" + +#@ dbem +#: admin/em-options.php:1327 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Dette afsendes til personen når han tilføjer en tilmelding. Det er ikke relevant hvis tilmeldinger ikke kræver godkendelse." + +#@ dbem +#: admin/em-options.php:1329 +msgid "Booking pending email subject" +msgstr "Tilmelding afventer godkendelse E-mail emnefelt" + +#@ dbem +#: admin/em-options.php:1330 +msgid "Booking pending email" +msgstr "Tilmelding afventer godkendelse E-mail" + +#@ dbem +#: admin/em-options.php:1332 +msgid "Rejected booking email" +msgstr "Afvist tilmelding E-mail" + +#@ dbem +#: admin/em-options.php:1333 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Dette afsendes automatisk når en tilmelding afvises. Det er ikke relevant hvis tilmeldinger ikke kræver godkendelse." + +#@ dbem +#: admin/em-options.php:1335 +msgid "Booking rejected email subject" +msgstr "Tilmelding afvist E-mail emnefelt" + +#@ dbem +#: admin/em-options.php:1336 +msgid "Booking rejected email" +msgstr "Tilmelding afvist E-mail" + +#@ dbem +#: admin/em-options.php:1338 +#: em-bookings.php:74 +msgid "Booking cancelled" +msgstr "Tilmelding annulleret" + +#@ dbem +#: admin/em-options.php:1339 +msgid "This will be sent when a user cancels their booking." +msgstr "Dette vil blive sendt hvis en bruger aflyser hans tilmelding." + +#@ dbem +#: admin/em-options.php:1341 +msgid "Booking cancelled email subject" +msgstr "Tilmelding annulleret E-mail emnefelt" + +#@ dbem +#: admin/em-options.php:1342 +msgid "Booking cancelled email" +msgstr "Tilmelding annulleret E-mail" + +#@ dbem +#: admin/em-options.php:1433 +msgid "Email Settings" +msgstr "E-mail indstilinger" + +#@ dbem +#: admin/em-options.php:1438 +msgid "Notification sender name" +msgstr "Meddelelsens afsendernavn" + +#@ dbem +#: admin/em-options.php:1438 +msgid "Insert the display name of the notification sender." +msgstr "Indsæt navnevisning på afsender af meddelelsen." + +#@ dbem +#: admin/em-options.php:1439 +msgid "Notification sender address" +msgstr "Meddelelsens afsenderadresse" + +#@ dbem +#: admin/em-options.php:1439 +msgid "Insert the address of the notification sender." +msgstr "Indsæt adressen på afsender af meddelelsen." + +#@ dbem +#: admin/em-options.php:1440 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "Port som dine E-mail meddelelser kommunikerer igennem. Sikre dig at din firewall ikke blokerer denne port." + +#@ dbem +#: admin/em-options.php:1441 +msgid "Mail sending method" +msgstr "E-mail afsender metode" + +#@ dbem +#: admin/em-options.php:1441 +msgid "PHP mail function" +msgstr "PHP e-mail funktion" + +#@ dbem +#: admin/em-options.php:1441 +msgid "Select the method to send email notification." +msgstr "Vælg metode hvormed E-mail meddelelser afsendes." + +#@ dbem +#: admin/em-options.php:1442 +msgid "Use SMTP authentication?" +msgstr "Brug SMTP godkendelse?" + +#@ dbem +#: admin/em-options.php:1442 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "SMTP autorisation er ofte påkrævet. Hvis du benytter GMail, så sikre dig at dette parameter sættes til Ja" + +#@ dbem +#: admin/em-options.php:1443 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "SMTP host. Svare normalt til 'localhost'. Hvis du benytter GMail, så sæt denne værdi til 'ssl://smtp.gmail.com:465'." + +#@ dbem +#: admin/em-options.php:1444 +msgid "SMTP username" +msgstr "SMTP brugernavn" + +#@ dbem +#: admin/em-options.php:1444 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Indsæt brugernavnet der benyttes for at give adgang til din SMTP server." + +#@ dbem +#: admin/em-options.php:1445 +msgid "SMTP password" +msgstr "SMTP adgangskode" + +#@ dbem +#: admin/em-options.php:1445 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Indsæt adgangskoden der benyttes for adgang til din SMTP server" + +#@ dbem +#: admin/em-options.php:1415 +msgid "Maximum width (px)" +msgstr "Maksimum bredde (px)" + +#@ dbem +#: admin/em-options.php:1415 +msgid "The maximum allowed width for images uploades" +msgstr "Maksimal tilladt bredde på indsendte billeder" + +#@ dbem +#: admin/em-options.php:1416 +msgid "Maximum height (px)" +msgstr "Maksimum højde (px)" + +#@ dbem +#: admin/em-options.php:1416 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "Maksimal tilladt højde på indsendte billeder, i pixels" + +#@ dbem +#: admin/em-options.php:1417 +msgid "Maximum size (bytes)" +msgstr "Maksimum størrelse (bytes)" + +#@ dbem +#: admin/em-options.php:1417 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "Maksimal tilladt størrelse på indsendte billeder, i bytes" + +#@ dbem +#: admin/em-options.php:1461 +msgid "User Capabilities" +msgstr "Brugerfunktioner" + +#@ dbem +#: admin/em-options.php:1465 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Advarsel: Hvis du ændre disse værdier kan det resultere i eksponering af hidtil skjulte oplysninger til alle brugere." + +#@ dbem +#: admin/em-options.php:1511 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Nu kan du opsætte en finkornet kontrol med hensyn til, hvad dine brugere kan gøre med events. Hver brugerrolle kan udføre forskellige slags handlinger." + +#@ dbem +#: admin/em-options.php:1504 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "Bruger kan administrere andre brugeres individuelle tilmeldinger og event tilmeldingsindstillinger." + +#@ dbem +#: admin/em-options.php:1505 +msgid "User can use and manage bookings with their events." +msgstr "Bruger kan benytte og administrere tilmeldinger med deres egne events." + +#@ dbem +#: admin/em-options.php:383 +msgid "Allow anonymous event submissions?" +msgstr "Tillad anonyme event indlæg?" + +#@ dbem +#: admin/em-options.php:383 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Vil du tillade brugere at indsende tilmeldinger anonymt? Hvis det er tilfældet, kan du bruge den nye [event_form] shortcode eller em_event_form() skabelon-tag med denne aktiveret." + +#@ dbem +#: admin/em-options.php:384 +msgid "Guest Default User" +msgstr "Standard gæste bruger" + +#@ dbem +#: admin/em-options.php:377 +#: admin/em-options.php:385 +msgid "Success Message" +msgstr "Besked ved gennemført" + +#@ dbem +#: admin/em-options.php:385 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Anonyme indsendere kan ikke se eller ændre deres event når den er afsendt. Du kan tilpasse gennemført-beskeden, de ser her." + +#@ dbem +#: templates/templates/bookings-event-printable.php:21 +msgid "Bookings data" +msgstr "Tilmeldingsdata" + +#@ dbem +#: admin/bookings/em-cancelled.php:85 +#: admin/bookings/em-confirmed.php:86 +#: admin/bookings/em-pending.php:103 +#: admin/bookings/em-rejected.php:85 +#: classes/em-bookings-table.php:64 +#: templates/forms/bookingform/booking-fields.php:20 +#: templates/templates/bookings-event-printable.php:25 +msgid "E-mail" +msgstr "E-mail" + +#@ dbem +#: admin/bookings/em-cancelled.php:86 +#: admin/bookings/em-confirmed.php:87 +#: admin/bookings/em-pending.php:104 +#: admin/bookings/em-rejected.php:86 +#: templates/templates/bookings-event-printable.php:26 +msgid "Phone number" +msgstr "Telefonnummer:" + +#@ dbem +#: templates/templates/bookings-event-printable.php:47 +msgid "Available" +msgstr "Tilgængelig" + +#@ dbem +#: classes/em-people.php:28 +#: classes/em-person.php:78 +#: templates/forms/bookingform/booking-fields.php:16 +msgid "Phone" +msgstr "Telefon" + +#@ dbem +#: admin/em-admin.php:90 +#: classes/em-people.php:28 +msgid "Events Manager" +msgstr "Events Manager" + +#@ dbem +#: templates/placeholders/locationmap.php:15 +#: templates/templates/map-global.php:15 +msgid "Loading Map...." +msgstr "Indlæser kort..." + +#@ dbem +#: templates/templates/events-search.php:35 +msgid "between" +msgstr "mellem" + +#@ dbem +#: templates/forms/ticket-form.php:29 +#: templates/templates/events-search.php:38 +msgid "and" +msgstr "og" + +#@ dbem +#: em-install.php:330 +msgid "All Categories" +msgstr "Alle kategorier" + +#@ dbem +#: em-install.php:332 +msgid "All Countries" +msgstr "Alle lande" + +#@ dbem +#: em-install.php:334 +msgid "All Regions" +msgstr "Alle regioner" + +#@ dbem +#: em-install.php:336 +msgid "All States" +msgstr "Alle stater" + +#@ dbem +#: events-manager.php:244 +msgid "Loading..." +msgstr "Indlæser..." + +#@ dbem +#: events-manager.php:243 +msgid "Searching..." +msgstr "Søger..." + +#@ dbem +#: templates/templates/ical-event.php:10 +#: templates/templates/ical.php:12 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Kalender" + +#@ dbem +#: classes/em-event-post-admin.php:182 +#: templates/forms/event-editor.php:67 +msgid "When" +msgstr "Hvornår" + +#@ dbem +#: templates/forms/event/recurring-when.php:56 +#: templates/forms/event/recurring-when.php:63 +#: templates/forms/event/when-with-recurring.php:17 +#: templates/forms/event/when-with-recurring.php:18 +#: templates/forms/event/when-with-recurring.php:26 +#: templates/forms/event/when.php:11 +#: templates/forms/event/when.php:18 +#: templates/forms/ticket-form.php:21 +msgid "to" +msgstr "til" + +#@ dbem +#: templates/forms/event/when.php:23 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Denne event løber hver dag mellem start- og slutdatoen, hvor start- og sluttidspunkter hhv. refererer til disse to datoer." + +#@ dbem +#: templates/forms/event/recurring-when.php:72 +#: templates/forms/event/when-with-recurring.php:78 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Vedrørende en gentaget event, en éndagsevent oprettes på hver gentaget dato inden for dette datointerval." + +#@ dbem +#: classes/em-event.php:1840 +msgid "Monday" +msgstr "mandag" + +#@ dbem +#: classes/em-event.php:1840 +msgid "Tuesday" +msgstr "Tirsdag" + +#@ dbem +#: classes/em-event.php:1840 +msgid "Wednesday" +msgstr "onsdag" + +#@ dbem +#: classes/em-event.php:1840 +msgid "Thursday" +msgstr "torsdag" + +#@ dbem +#: classes/em-event.php:1840 +msgid "Friday" +msgstr "fredag" + +#@ dbem +#: classes/em-event.php:1840 +msgid "Saturday" +msgstr "lørdag" + +#@ dbem +#: classes/em-event.php:1840 +msgid "Sunday" +msgstr "søndag" + +#@ dbem +#: templates/forms/event/recurring-when.php:10 +#: templates/forms/event/when-with-recurring.php:32 +msgid "This event repeats" +msgstr "Denne event gentages" + +#@ dbem +#: templates/forms/event/recurring-when.php:17 +#: templates/forms/event/when-with-recurring.php:39 +msgid "every" +msgstr "hver" + +#@ dbem +#: templates/forms/event/recurring-when.php:24 +#: templates/forms/event/when-with-recurring.php:46 +msgid "week on" +msgstr "uge den" + +#@ dbem +#: templates/forms/event/recurring-when.php:26 +#: templates/forms/event/when-with-recurring.php:48 +msgid "weeks on" +msgstr "uger den" + +#@ dbem +#: templates/forms/event/recurring-when.php:28 +#: templates/forms/event/when-with-recurring.php:50 +msgid "month on the" +msgstr "måned den" + +#@ dbem +#: templates/forms/event/recurring-when.php:30 +#: templates/forms/event/when-with-recurring.php:52 +msgid "months on the" +msgstr "måneder den" + +#@ dbem +#: templates/forms/event/recurring-when.php:48 +#: templates/forms/event/when-with-recurring.php:71 +msgid "of each month" +msgstr "i hver måned" + +#@ dbem +#: classes/em-event-post-admin.php:184 +#: classes/em-event-post-admin.php:359 +#: classes/em-location-post-admin.php:113 +#: templates/forms/event-editor.php:94 +msgid "Where" +msgstr "Hvor" + +#@ dbem +#: templates/forms/event-editor.php:108 +msgid "Details about the event." +msgstr "Detaljer om event." + +#@ dbem +#: templates/forms/event-editor.php:108 +#: templates/forms/location-editor.php:52 +msgid "HTML Allowed." +msgstr "HTML tilladt." + +#@ dbem +#: templates/forms/event-editor.php:117 +msgid "Category:" +msgstr "Kategori:" + +#@ dbem +#: templates/templates/my-bookings.php:75 +msgid "Are you sure you want to cancel your booking?" +msgstr "Er du sikker på at du vil annullere din tilmelding?" + +#@ dbem +#: admin/em-options.php:130 +#: admin/em-options.php:147 +#: templates/placeholders/bookingbutton.php:10 +#: templates/templates/my-bookings.php:75 +msgid "Cancel" +msgstr "Annullér" + +#@ dbem +#: templates/templates/my-bookings.php:91 +msgid "You do not have any bookings." +msgstr "Du har ingen tilmeldinger." + +#@ dbem +#: templates/templates/my-bookings.php:101 +#, php-format +msgid "Please Log In to view your bookings." +msgstr "Venligst logind for at se dine tilmeldinger." + +#@ dbem +#: em-install.php:574 +#: templates/buddypress/group-events.php:30 +#: templates/buddypress/my-group-events.php:30 +#: templates/buddypress/profile.php:20 +msgid "No Events" +msgstr "Ingen events" + +#@ dbem +#: templates/tables/events.php:17 +msgid "Upcoming" +msgstr "Kommende" + +#@ dbem +#: templates/placeholders/bookingbutton.php:6 +msgid "Book Now" +msgstr "Tilmeld dig nu" + +#@ dbem +#: templates/placeholders/bookingbutton.php:7 +msgid "Booking..." +msgstr "Tilmelder..." + +#@ dbem +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "kort utilgængelig" + +#@ dbem +#: em-install.php:526 +msgid "Online bookings are not available for this event." +msgstr "Online-tilmeldinger er ikke mulige til denne event." + +#@ dbem +#: em-install.php:527 +msgid "Bookings are closed for this event." +msgstr "Tilmeldinger er lukket til denne event." + +#@ dbem +#: classes/em-event.php:1344 +#: em-bookings.php:129 +#: em-bookings.php:151 +#: templates/forms/bookingform/ticket-single.php:37 +#: templates/forms/bookingform/tickets-list.php:45 +msgid "N/A" +msgstr "Ikke tilgængelig" + +#@ dbem +#: em-bookings.php:162 +#: em-install.php:521 +msgid "Send your booking" +msgstr "Send din tilmelding" + +#@ dbem +#: templates/forms/bookingform/login.php:8 +msgid "Log in if you already have an account with us." +msgstr "Logind hvis du allerede har en brugerkonto hos os." + +#@ dbem +#: templates/forms/bookingform/login.php:10 +msgid "Username" +msgstr "Brugernavn" + +#@ dbem +#: templates/forms/bookingform/login.php:14 +msgid "Password" +msgstr "Adgangskode" + +#@ dbem +#: templates/forms/bookingform/login.php:18 +msgid "Log In" +msgstr "Logind" + +#@ dbem +#: templates/forms/bookingform/login.php:19 +msgid "Remember Me" +msgstr "Husk mig" + +#@ dbem +#: templates/forms/bookingform/login.php:34 +msgid "Sign Up" +msgstr "Tilmeld dig" + +#@ dbem +#: templates/forms/bookingform/login.php:38 +msgid "Password Lost and Found" +msgstr "Adgangskode mistet og fundet" + +#@ dbem +#: templates/forms/bookingform/login.php:38 +msgid "Lost your password?" +msgstr "Har du mistet din adgangskode?" + +#@ dbem +#: em-bookings.php:169 +msgid "No more tickets available at this time." +msgstr "Der er ikke flere billetter tilgængelige på dette tidspunkt." + +#@ dbem +#: events-manager.php:228 +msgid "Please wait while the booking is being submitted." +msgstr "Vent venligst mens tilmeldingen indsendes." + +#@ dbem +#: templates/forms/ticket-form.php:18 +msgid "Available from" +msgstr "Tilgængelig fra" + +#@ dbem +#: templates/forms/ticket-form.php:24 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Tilføj start eller slutdato (eller begge) for at indføre tidsmæssige begrænsninger på billet-tilgængeligheden. Efterlad begge tomme for ingen øvre / nedre grænse." + +#@ dbem +#: templates/forms/ticket-form.php:27 +msgid "Bookings must order between" +msgstr "Tilmeldinger skal sorteres mellem" + +#@ dbem +#: templates/forms/ticket-form.php:31 +msgid "spaces." +msgstr "pladser." + +#@ dbem +#: templates/forms/ticket-form.php:32 +msgid "Leave either blank for no upper/lower limit." +msgstr "Lad begge være tomme for ingen øvre/nedre grænse." + +#@ dbem +#: templates/forms/tickets-form.php:7 +msgid "Create a ticket" +msgstr "Opret en billet" + +#@ dbem +#: templates/forms/tickets-form.php:13 +msgid "Available ticket spaces" +msgstr "Tilgængelige billet-pladser" + +#@ dbem +#: templates/forms/tickets-form.php:15 +msgid "Start date of ticket availability" +msgstr "Startdato for billet-tilgængelighed" + +#@ dbem +#: templates/forms/tickets-form.php:16 +msgid "End date of ticket availability" +msgstr "Slutdato for billet-tilgængelighed" + +#@ dbem +#: templates/forms/tickets-form.php:17 +msgid "Minimum tickets required per booking" +msgstr "Minimum antal billetter påkrævet per tilmelding" + +#@ dbem +#: templates/forms/tickets-form.php:18 +msgid "Maximum tickets required per booking" +msgstr "Maksimum antal billetter påkrævet per tilmelding" + +#@ dbem +#: templates/forms/tickets-form.php:24 +msgid "Add Ticket" +msgstr "Tilføj billet" + +#@ dbem +#: classes/em-bookings-table.php:205 +msgid "Save Settings" +msgstr "Gem indstillinger" + +#@ dbem +#: buddypress/bp-em-activity.php:47 +#, php-format +msgid "%s added the event %s" +msgstr "%s tilføjede event %s" + +#@ dbem +#: buddypress/bp-em-activity.php:85 +#, php-format +msgid "%s is attending %s." +msgstr "%s deltager i %s." + +#@ dbem +#: buddypress/bp-em-activity.php:87 +#, php-format +msgid "%s will not be attending %s anymore." +msgstr "%s vil ikke deltage i %s længere" + +#@ dbem +#: buddypress/bp-em-core.php:99 +#: buddypress/screens/attending.php:23 +#: templates/buddypress/profile.php:25 +msgid "Events I'm Attending" +msgstr "Events jeg deltager i" + +#@ dbem +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Du ser lige nu din offentlige side, dette er hvad andre brugere vil se." + +#@ dbem +#: buddypress/bp-em-core.php:110 +#: buddypress/screens/my-events.php:32 +#: templates/buddypress/profile.php:7 +msgid "My Events" +msgstr "Mine events" + +#@ dbem +#: buddypress/screens/group-events.php:20 +#: buddypress/screens/my-group-events.php:20 +msgid "Group Events" +msgstr "Sorter events" + +#@ dbem +#: buddypress/screens/my-events.php:52 +#: em-events.php:155 +#: em-posts.php:141 +#: templates/buddypress/profile.php:20 +msgid "Add Event" +msgstr "Tilføj event" + +#@ dbem +#: buddypress/bp-em-core.php:122 +#: buddypress/screens/my-locations.php:32 +msgid "My Locations" +msgstr "Mine lokationer" + +#@ dbem +#: buddypress/screens/my-locations.php:48 +#: em-events.php:165 +#: em-posts.php:235 +msgid "Edit Location" +msgstr "Rediger lokation" + +#@ dbem +#: buddypress/screens/my-locations.php:46 +#: em-events.php:163 +#: em-posts.php:232 +msgid "Add Location" +msgstr "Tilføj lokation" + +#@ dbem +#: buddypress/bp-em-core.php:134 +#: buddypress/screens/my-bookings.php:30 +msgid "My Event Bookings" +msgstr "Mine event-tilmeldinger" + +#@ dbem +#: buddypress/bp-em-core.php:90 +msgid "My Profile" +msgstr "Min profil" + +#@ dbem +#: admin/em-options.php:862 +#: buddypress/bp-em-notifications.php:24 +#: buddypress/bp-em-notifications.php:26 +#: buddypress/bp-em-notifications.php:33 +#: buddypress/bp-em-notifications.php:35 +#: buddypress/bp-em-notifications.php:41 +#: buddypress/bp-em-notifications.php:43 +#: em-install.php:567 +#: em-install.php:754 +#: em-install.php:807 +msgid "My Bookings" +msgstr "Mine tilmeldinger" + +#@ dbem +#: buddypress/bp-em-notifications.php:24 +msgid "You have a pending booking" +msgstr "Du har en tilmelding der afventer godkendelse" + +#@ dbem +#: buddypress/bp-em-notifications.php:26 +#, php-format +msgid "You have %s pending bookings" +msgstr "Du har %s tilmeldinger der afventer godkendelse" + +#@ dbem +#: buddypress/bp-em-notifications.php:33 +msgid "You have a confirmed booking" +msgstr "Du har en bekræftet tilmelding" + +#@ dbem +#: buddypress/bp-em-notifications.php:35 +#, php-format +msgid "You have %s confirmed bookings" +msgstr "Du har %s bekræftet tilmeldinger" + +#@ dbem +#: buddypress/bp-em-notifications.php:41 +msgid "A user cancelled a booking" +msgstr "En bruger annullerede en tilmelding" + +#@ dbem +#: buddypress/bp-em-notifications.php:43 +#, php-format +msgid "%s users cancelled bookings." +msgstr "%s brugere annullerede tilmeldinger." + +#@ dbem +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Event-lokationer" + +#@ dbem +#: widgets/em-locations.php:24 +msgid "Display a list of event locations on Events Manager." +msgstr "Viser en tabel over event-lokationer på Events Manager." + +#@ dbem +#: widgets/em-locations.php:49 +msgid "No locations" +msgstr "Ingen lokationer" + +#@ dbem +#: widgets/em-calendar.php:58 +#: widgets/em-events.php:97 +#: widgets/em-locations.php:72 +msgid "Title" +msgstr "Titel" + +#@ dbem +#: widgets/em-locations.php:76 +msgid "Show number of locations" +msgstr "Vis antal af lokationer" + +#@ dbem +#: widgets/em-locations.php:80 +msgid "Scope of the locations" +msgstr "Indhold af lokationer" + +#@ dbem +#: widgets/em-locations.php:103 +msgid "Order of the locations" +msgstr "Sortering af lokationerne" + +#@ dbem +#: widgets/em-events.php:150 +#: widgets/em-locations.php:110 +msgid "List item format" +msgstr "Tabel elementformat" + +#@ dbem +#: widgets/em-events.php:22 +#: widgets/em-events.php:73 +#: widgets/em-events.php:159 +msgid "all events" +msgstr "alle events" + +#@ dbem +#: widgets/em-events.php:30 +msgid "Display a list of events on Events Manager." +msgstr "Viser en tabel på events på Events Manager." + +#@ dbem +#: widgets/em-events.php:70 +msgid "No events" +msgstr "Ingen events" + +#@ dbem +#: widgets/em-events.php:101 +msgid "Number of events" +msgstr "Antal events" + +#@ dbem +#: widgets/em-events.php:106 +msgid "Scope" +msgstr "Indhold" + +#@ dbem +#: widgets/em-events.php:116 +#: widgets/em-locations.php:90 +msgid "Order By" +msgstr "Bestilt af" + +#@ dbem +#: widgets/em-events.php:25 +msgid "start date, start time, event name" +msgstr "startdato, startstidspunkt, eventnavn" + +#@ dbem +#: widgets/em-events.php:26 +msgid "name, start date, start time" +msgstr "navn, startdato, starttidspunkt" + +#@ dbem +#: widgets/em-events.php:27 +msgid "name, end date, end time" +msgstr "navn, slutdato, sluttidspunkt" + +#@ dbem +#: widgets/em-events.php:28 +msgid "end date, end time, event name" +msgstr "slutdato, sluttidspunkt, eventnavn" + +#@ dbem +#: widgets/em-events.php:129 +msgid "Order" +msgstr "Sortering" + +#@ dbem +#: widgets/em-events.php:154 +msgid "Show all events link at bottom?" +msgstr "Vis link til alle events i bunden?" + +#@ dbem +#: widgets/em-events.php:158 +msgid "All events link text?" +msgstr "Tekst på alle events link" + +#@ dbem +#: widgets/em-calendar.php:17 +msgid "Display your events in a calendar widget." +msgstr "Viser dine events i en kalender-widget." + +#@ dbem +#: widgets/em-calendar.php:18 +msgid "Events Calendar" +msgstr "Event-kalender" + +#@ dbem +#: widgets/em-calendar.php:62 +msgid "Show Long Events?" +msgstr "Vis længerevarende events?" + +#@ dbem +#: classes/em-booking.php:143 +#: classes/em-booking.php:144 +#: classes/em-booking.php:152 +#: classes/em-booking.php:163 +#: classes/em-booking.php:169 +#: classes/em-tickets-bookings.php:70 +#: classes/em-tickets-bookings.php:71 +msgid "There was a problem saving the booking." +msgstr "Der opstod et problem da tilmeldingen skulle gemmes." + +#@ dbem +#: classes/em-tickets-bookings.php:100 +#: em-install.php:534 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "Tilmelding kan ikke udføres, der er ikke ledige pladser nok!" + +#@ dbem +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#: classes/em-booking.php:415 +#: classes/em-booking.php:417 +#: classes/em-bookings.php:108 +#: classes/em-tickets-bookings.php:165 +#: templates/placeholders/bookingbutton.php:8 +#: templates/placeholders/bookingbutton.php:9 +msgid "Booking" +msgstr "Tilmelding" + +#@ dbem +#: classes/em-tickets.php:140 +msgid "Standard" +msgstr "Standard" + +#@ dbem +#: classes/em-mailer.php:84 +msgid "Please supply a valid email format." +msgstr "Oplys venligst et gyldigt E-mail format." + +#@ dbem +#: classes/em-ticket.php:47 +msgid "Standard Ticket" +msgstr "Standard billet" + +#@ dbem +#: classes/em-booking.php:134 +#: classes/em-ticket-booking.php:69 +#: classes/em-ticket.php:97 +msgid "Changes saved" +msgstr "Ændringer gemt" + +#@ dbem +#: classes/em-ticket.php:102 +msgid "Ticket created" +msgstr "Billet oprettet" + +#@ dbem +#: classes/em-ticket.php:105 +#: classes/em-ticket.php:106 +#: classes/em-ticket.php:111 +#: classes/em-ticket.php:112 +msgid "There was a problem saving the ticket." +msgstr "Der opstod et problem da billetten skulle gemmes." + +#@ dbem +#@ default +#: classes/em-event.php:466 +#: classes/em-ticket-booking.php:113 +#: classes/em-ticket.php:161 +msgid "Missing fields: " +msgstr "Manglende felter: " + +#@ dbem +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "Du kan ikke slette en billet som har en tilmelding." + +#@ dbem +#: classes/em-ticket-booking.php:78 +msgid "Ticket booking created" +msgstr "Billet tilmelding oprettet" + +#@ dbem +#: classes/em-ticket-booking.php:85 +#: classes/em-ticket-booking.php:86 +#: classes/em-ticket-booking.php:91 +#: classes/em-ticket-booking.php:92 +msgid "There was a problem saving the ticket booking." +msgstr " Der opstod et problem da billet-tilmeldingen skulle gemmes." + +#@ dbem +#: classes/em-tickets.php:111 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "Du kan ikke slette billetter hvis der er tilmeldinger på disse. Slet venligst disse tilmeldingerne først." + +#@ dbem +#: classes/em-location.php:106 +msgid "The location address" +msgstr "Lokations-adresse" + +#@ dbem +#: classes/em-location.php:106 +msgid "The location town" +msgstr "Lokations-by" + +#@ dbem +#: classes/em-location.php:106 +msgid "The country" +msgstr "Landet" + +#@ dbem +#: classes/em-event.php:432 +#: classes/em-location.php:242 +#: classes/em-location.php:258 +#: classes/em-location.php:260 +msgid " is required." +msgstr "er påkrævet." + +#@ dbem +#: classes/em-location.php:372 +#, php-format +msgid "You do not have permission to create/edit %s." +msgstr "Du har ikke tilladelse til at oprette/redigere %s." + +#@ dbem +#: em-actions.php:104 +#, php-format +msgid "%s successfully deleted." +msgstr "%s slettet med succes." + +#@ dbem +#: em-actions.php:107 +#, php-format +msgid "%s could not be deleted." +msgstr "%s kunne ikke slettes." + +#@ dbem +#: classes/em-event-post-admin.php:37 +msgid "WARNING: This is a recurring event." +msgstr "ADVARSEL: Dette er en gentaget event." + +#@ dbem +#: classes/em-event-post-admin.php:38 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Ændringer på denne event vil forårsage at alle gentagelser af denne event vil blive slettet og genskabt, og tidligere tilmeldinger vil blive slettet! Du kan redigere de enkelte gentagelser hver for sig, og fjerne tilknytningen til dette gentaget event." + +#@ dbem +#: classes/em-event-post-admin.php:41 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "ADVARSEL: Dette er en gentagelse i en række af gentagne events." + +#@ dbem +#: classes/em-event-post-admin.php:48 +#, php-format +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "ADVARSEL: Dette er en event tilhørende gruppen \"%s\". Andre gruppeadministratorer kan også redigere dette event." + +#@ dbem +#: classes/em-event.php:633 +msgid "Something went wrong with the recurrence update..." +msgstr "Et eller andet gik galt med den gentagtagne opdatering..." + +#@ dbem +#: classes/em-event.php:633 +msgid "There was a problem saving the recurring events." +msgstr "Der var et problem med at gemme gentaget events." + +#@ dbem +#: classes/em-booking.php:486 +#: classes/em-booking.php:487 +#, php-format +msgid "Booking could not be %s." +msgstr "Tilmelding kunne ikke %s." + +#@ dbem +#: classes/em-event.php:673 +#, php-format +msgid "%s successfully duplicated." +msgstr "%s duplikeret med succes." + +#@ dbem +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:313 +#: admin/em-options.php:314 +#: admin/em-options.php:448 +#: admin/em-options.php:535 +#: admin/em-options.php:1501 +#: admin/em-options.php:1502 +#: classes/em-event-post-admin.php:85 +#: classes/em-event.php:592 +#: classes/em-event.php:605 +msgid "event" +msgstr "event" + +#@ dbem +#: classes/em-event.php:447 +msgid "Events cannot start after they end." +msgstr "Events kan ikke starte efter de slutter." + +#@ dbem +#: classes/em-event.php:452 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Datoformatet skal være korrekt. Benyt venligst den viste datovælger." + +#@ dbem +#: classes/em-event.php:1354 +msgid "Profile" +msgstr "Profil" + +#@ dbem +#: classes/em-event.php:1841 +#, php-format +msgid "the first %s of the month" +msgstr "den første %s i måneden" + +#@ dbem +#: classes/em-event.php:1841 +#, php-format +msgid "the second %s of the month" +msgstr "den anden %s i måneden" + +#@ dbem +#: classes/em-event.php:1841 +#, php-format +msgid "the third %s of the month" +msgstr "den tredje %s i måneden" + +#@ dbem +#: classes/em-event.php:1841 +#, php-format +msgid "the fourth %s of the month" +msgstr "den fjerde %s i måneden" + +#@ dbem +#: classes/em-event.php:1841 +#, php-format +msgid "the last %s of the month" +msgstr "den sidste %s i måneden" + +#@ dbem +#: classes/em-event.php:1842 +#, php-format +msgid "From %1$s to %2$s" +msgstr "Fra %1$s til %2$s" + +#@ dbem +#: classes/em-event.php:1844 +msgid "everyday" +msgstr "alle dage" + +#@ dbem +#: classes/em-event.php:1846 +#, php-format +msgid "every %s days" +msgstr "hver %s dage" + +#@ dbem +#: classes/em-event.php:1855 +msgid "every week" +msgstr "alle uger" + +#@ dbem +#: classes/em-event.php:1857 +#, php-format +msgid "every %s weeks" +msgstr "alle %s uger" + +#@ dbem +#: classes/em-event.php:1868 +#, php-format +msgid "every %s months" +msgstr "alle %s måneder" + +#@ dbem +#: classes/em-person.php:77 +msgid "Email" +msgstr "E-mail" + +#@ dbem +#: em-install.php:532 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Tilmelding gennemført, bekræftelse afventer godkendelse (du vil også modtage en E-mail efter at den er bekræftet)." + +#@ dbem +#: em-install.php:533 +msgid "Booking successful." +msgstr "Tilmelding fuldført." + +#@ dbem +#: em-install.php:536 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "Men, der var nogle problemer ved afsendelse af en bekræftelses E-mails til dig og / eller event-kontaktperson. Du ønsker måske at kontakte dem direkte, og lade dem vide af denne fejl." + +#@ dbem +#: em-install.php:537 +msgid "Booking could not be created" +msgstr "Tilmelding kunne ikke oprettes" + +#@ dbem +#: classes/em-bookings.php:108 +#, php-format +msgid "%s created." +msgstr "%s oprettet" + +#@ dbem +#: classes/em-bookings.php:268 +#: classes/em-bookings.php:274 +#, php-format +msgid "Bookings %s. Mails Sent." +msgstr "Tilmeldinger %s. E-mails afsendt." + +#@ dbem +#: classes/em-bookings.php:278 +msgid "An error occurred." +msgstr "Der opstod en fejl." + +#@ dbem +#: templates/templates/csv-event-bookings.php:16 +#, php-format +msgid "Booking details for \"%s\" as of %s" +msgstr "Tilmeldingsdetaljer for \"%s\" fra og med %s" + +#@ dbem +#: classes/em-booking.php:102 +#: classes/em-bookings-table.php:41 +msgid "Rejected" +msgstr "Afvist" + +#@ dbem +#: classes/em-booking.php:103 +#: classes/em-bookings-table.php:40 +#: em-actions.php:366 +#: templates/placeholders/bookingbutton.php:12 +msgid "Cancelled" +msgstr "Annulleret" + +#@ dbem +#: classes/em-booking.php:104 +#: classes/em-bookings-table.php:44 +msgid "Awaiting Online Payment" +msgstr "Afventer Online betaling" + +#@ dbem +#: classes/em-booking.php:105 +msgid "Awaiting Payment" +msgstr "Afventer betaling" + +#@ dbem +#: classes/em-booking.php:139 +msgid "Your booking has been recorded" +msgstr "Din tilmelding er registreret" + +#@ dbem +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#, php-format +msgid "You cannot manage this %s." +msgstr "Du kan ikke administrere denne %s." + +#@ dbem +#: classes/em-booking.php:222 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Du prøver at tilmelde en ikke-eksisterende billet til denne event." + +#@ dbem +#: em-install.php:542 +msgid "You must request at least one space to book an event." +msgstr "Du skal anmode om mindst en plads for at tilmelde en event." + +#@ dbem +#: classes/em-booking.php:415 +#, php-format +msgid "%s deleted" +msgstr "%s slettet" + +#@ dbem +#: classes/em-booking.php:417 +#, php-format +msgid "%s could not be deleted" +msgstr "%s kunne ikke slettes" + +#@ dbem +#: classes/em-booking.php:463 +msgid "Not approved, spaces full." +msgstr "Ikke godkendt, ingen ledige pladser." + +#@ dbem +#: classes/em-booking.php:471 +#, php-format +msgid "Booking %s." +msgstr "Tilmelding %s." + +#@ dbem +#: classes/em-booking.php:475 +msgid "Mail Sent." +msgstr "E-mail afsendt." + +#@ dbem +#: classes/em-booking.php:478 +#: classes/em-booking.php:479 +msgid "ERROR : Mail Not Sent." +msgstr "FEJL : E-mail ikke sendt." + +#@ dbem +#: classes/em-booking.php:502 +msgid "Booking note successfully added." +msgstr "Tilmeldingsnote tilføjet med succes." + +#@ dbem +#: classes/em-booking.php:647 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "Bekræftelses E-mail kunne ikke sendes til kontaktpersonen. Registranten skulle have modtaget hans E-mal (kun administrator ser denne advarsel)." + +#@ dbem +#: classes/em-booking.php:654 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "Bekræftelses E-mail kunne ikke sendes til administrator. Registranten skulle have modtaget hans E-mal (kun administrator ser denne advarsel)." + +#@ dbem +#: classes/em-object.php:1159 +msgid "The image file is too big! Maximum size:" +msgstr "Billedet er for stort! Maksimum størrelse:" + +#@ dbem +#: classes/em-object.php:1164 +msgid "The image is too big! Maximum size allowed:" +msgstr "Billedet er for stort! Maksimum tilladte størrelse:" + +#@ dbem +#: classes/em-object.php:1167 +msgid "The image is in a wrong format!" +msgstr "Billedeformat er forkert!" + +#@ dbem +#: classes/em-people.php:19 +msgid "User deleted by administrators" +msgstr "Bruger slettet af administratorer" + +#@ dbem +#: em-install.php:300 +msgid "

              -------------------------------
              Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

              -------------------------------
              Leveret af Events Manager - http://wp-events-plugin.com" + +#@ dbem +#: em-install.php:399 +#: em-install.php:407 +#: em-install.php:440 +#, php-format +msgid "No %s" +msgstr "Ingen %s" + +#@ dbem +#: em-debug.php:18 +#: em-install.php:426 +msgid "
            • No events in this location
            • " +msgstr "
            • Ingen events pÃ¥ denne lokation
            • " + +#@ dbem +#: em-install.php:549 +#: em-install.php:557 +msgid "Booking Cancelled" +msgstr "Tilmelding annulleret" + +#@ dbem +#: em-install.php:551 +msgid "Booking Pending" +msgstr "Tilmelding afventer godkendelse" + +#@ dbem +#: em-install.php:553 +msgid "Booking Rejected" +msgstr "Tilmelding afvist" + +#@ dbem +#: em-install.php:555 +msgid "Booking Confirmed" +msgstr "Tilmelding bekræftet" + +#@ dbem +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "Ingen billet- id oplyst" + +#@ dbem +#: em-actions.php:181 +#, php-format +msgid "%s successfully deleted" +msgstr "%s slettet med succes" + +#@ dbem +#: em-install.php:539 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "En ny brugerkonto er oprettet til dig. Kontroller venligst din E-mail for adgangsdetaljer." + +#@ dbem +#: em-install.php:538 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Denne E-mail eksisterer allerede i vores system, venligst logind for at fortsætte med din tilmelding." + +#@ dbem +#: em-install.php:540 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Der var et problem med oprettelse af en brugerkonto, kontakt venligst en administrator pÃ¥ hjemmesiden." + +#@ dbem +#: em-install.php:535 +msgid "You must log in or register to make a booking." +msgstr "Du skal logge ind eller registrere dig for at oprette en tilmelding." + +#@ dbem +#: em-install.php:541 +msgid "You already have booked a seat at this event." +msgstr "Du har allerede tilmeldt dig en plads til denne event." + +#@ dbem +#: em-actions.php:366 +#, php-format +msgid "Booking %s" +msgstr "Tilmelding %s" + +#@ dbem +#: em-actions.php:379 +#: em-bookings.php:77 +msgid "You must log in to cancel your booking." +msgstr "Du skal logge ind for at annullere din tilmelding." + +#@ dbem +#: em-bookings.php:97 +msgid "Book now!" +msgstr "Tilmeld nu!" + +#@ dbem +#: em-bookings.php:171 +#, php-format +msgid "You must register or log in in order to create and manage your bookings." +msgstr "Du skal registrere dig eller logge ind for at oprette og administrere dine tilmeldinger." + +#@ dbem +#: em-bookings.php:219 +#: em-bookings.php:233 +msgid "Cancel your booking" +msgstr "Annuller din tilmelding" + +#@ default +#: em-debug.php:44 +#, php-format +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Du er i Events Manager fejlfindingstilstand. For at slukke for fejlfindingstilstand, gÃ¥ til siden indstillinger." + +#@ dbem +#: em-functions.php:166 +msgid "Today's events" +msgstr "Dagens events" + +#@ dbem +#: em-functions.php:167 +msgid "Tomorrow's events" +msgstr "Events i morgen" + +#@ dbem +#: em-functions.php:168 +msgid "Events this month" +msgstr "Denne mÃ¥neds events" + +#@ dbem +#: em-functions.php:169 +msgid "Events next month" +msgstr "Næste mÃ¥neds events" + +#@ dbem +#: em-functions.php:171 +msgid "Events within 2 months" +msgstr "De næste 2 mÃ¥neders events" + +#@ dbem +#: em-functions.php:172 +msgid "Events within 3 months" +msgstr "De næste 3 mÃ¥neders events" + +#@ dbem +#: em-functions.php:173 +msgid "Events within 6 months" +msgstr "De næste 6 mÃ¥neders events" + +#@ dbem +#: em-functions.php:174 +msgid "Events within 12 months" +msgstr "Events inden for 12 mÃ¥neder" + +#@ dbem +#: em-functions.php:238 +msgid "Trying to perform an illegal action." +msgstr "Forsøg pÃ¥ udførsel af ugyldig handling." + +#@ dbem +#: em-functions.php:315 +msgid "ERROR: Please enter a username." +msgstr "ERROR: Indtast venligst et brugernavn.." + +#@ dbem +#: em-functions.php:317 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "ERROR: Dette brugernavn er ugyldigt, da det indeholder ugyldige tegn. Angiv et gyldigt brugernavn." + +#@ default +#: em-functions.php:320 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "ERROR: Dette brugernavn eksisterer allerede, vælg venligst et andet." + +#@ dbem +#: em-actions.php:277 +#: em-functions.php:325 +msgid "ERROR: Please type your e-mail address." +msgstr "ERROR: Indtast venligst din E-mailadresse." + +#@ dbem +#: em-actions.php:280 +#: em-functions.php:327 +msgid "ERROR: The email address isn’t correct." +msgstr "ERROR: E-mailadressen er ikke korrekt." + +#@ default +#: em-functions.php:330 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "ERROR: Denne E-mailadresse eksisterer allerede, vælg venligst en anden." + +#@ dbem +#: em-functions.php:350 +#, php-format +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "ERROR: Var ikke istand til at registrere dig... kontakt venligst webmaster !" + +#@ dbem +#: em-functions.php:385 +#, php-format +msgid "New user registration on your blog %s:" +msgstr "Ny bruger-tilmelding pÃ¥ din blog %s:" + +#@ dbem +#: em-functions.php:386 +#, php-format +msgid "Username: %s" +msgstr "Brugernavn: %s" + +#@ dbem +#: em-functions.php:387 +#, php-format +msgid "E-mail: %s" +msgstr "E-mail: %s" + +#@ dbem +#: em-functions.php:388 +#, php-format +msgid "[%s] New User Registration" +msgstr "[%s] Ny bruger registrering" + +#@ dbem +#: em-functions.php:399 +#, php-format +msgid "[%s] Your username and password" +msgstr "[%s] Dit brugernavn og adgangskode" + +#@ dbem +#: admin/bookings/em-cancelled.php:84 +#: admin/bookings/em-confirmed.php:85 +#: admin/bookings/em-pending.php:99 +#: admin/bookings/em-rejected.php:84 +#: classes/em-bookings-table.php:62 +msgid "Booker" +msgstr "Registrant" + +#@ dbem +#: admin/em-admin.php:124 +#, php-format +msgid "

              Events Manager is ready to go! It is highly recommended you read the Getting Started guide on our site, as well as checking out the Settings Page. Dismiss

              " +msgstr "

              Events Manager er klar! Det anbefales kraftigt at du læser Kom godt i gang guiden på vores hjemmeside, og samtidig checke Indstillingssiden. Afbryd

              " + +#@ dbem +#: admin/em-bookings.php:112 +msgid "Availability" +msgstr "Tilgængelighed" + +#@ dbem +#: admin/em-bookings.php:307 +msgid "Modify Booking" +msgstr "Tilpas tilmelding" + +#@ dbem +#: admin/em-bookings.php:312 +msgid "Note: ticket availability not taken into account (i.e. you can overbook). Confirmation email is not resent automatically." +msgstr "Bemærk: billetters tilgængelighed er ikke taget i betragtning (du kan f.eks. overtegne). Bekræftelses E-mail afsendes ikke automatisk.." + +#@ dbem +#: admin/em-options.php:1034 +msgid "iCal Feed Settings" +msgstr "iCal Feed indstillinger" + +#@ dbem +#: admin/em-options.php:1036 +msgid "iCal Title" +msgstr "iCal titel" + +#@ dbem +#: admin/em-options.php:1036 +msgid "The title that will appear in the calendar." +msgstr "Titlen som vises i kalenderen." + +#@ dbem +#: admin/em-options.php:1037 +msgid "iCal Limit" +msgstr "iCal begrænsning" + +#@ dbem +#: admin/em-options.php:1037 +msgid "Limits the number of future events shown (0 = unlimited)." +msgstr "Begrænser antallet af fremtidige events der vises (0 = ubegrænset)." + +#@ dbem +#: admin/em-options.php:1062 +#: admin/em-options.php:1092 +#: admin/em-options.php:1115 +#, php-format +msgid "%s List Formats" +msgstr "%s tabelformater" + +#@ dbem +#: admin/em-options.php:1065 +msgid "The format of the events the list inserted in the location page through the #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS element." +msgstr "Format på eventstabel indsat på lokationssiden med #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS og #_LOCATIONALLEVENTS element." + +#@ dbem +#: admin/em-options.php:1067 +msgid "The message to be displayed in the list generated by #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS when no events are available." +msgstr "Beskeden der skal vises i tabellen genereret af#_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS og #_LOCATIONALLEVENTS når der ikke er nogen events tilgængelige." + +#@ dbem +#: admin/em-options.php:1095 +msgid "The format of the events the list inserted in the category page through the #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." +msgstr "Opstillingen på events tabellen indsat på kategorisiden ved brug af #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS og #_CATEGORYALLEVENTS element." + +#@ dbem +#: admin/em-options.php:1097 +msgid "The message to be displayed in the list generated by #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS when no events are available." +msgstr "Beskeden der skal vises i tabellen genereret af #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS og #_CATEGORYALLEVENTS når der ikke er nogen events tilgængelige." + +#@ dbem +#: buddypress/bp-em-activity.php:93 +#, php-format +msgid "%s is attending %s of the group %s." +msgstr "%s deltager %s i gruppe %s." + +#@ dbem +#: buddypress/bp-em-activity.php:95 +#, php-format +msgid "%s will not be attending %s of group %s anymore." +msgstr "%s vil ikke deltage %s i gruppe %s mere." + +#@ dbem +#: em-functions.php:170 +msgid "Events current and next month" +msgstr "Events i denne og næste måned" + +#@ dbem +#: em-install.php:441 +msgid "
            • No events in this category
            • " +msgstr "
            • Ingen events i denne kategori
            • " + +#@ dbem +#: templates/buddypress/profile.php:38 +msgid "Not attending any events yet." +msgstr "Deltager ikke i nogen events endnu." + +#@ dbem +#: widgets/em-calendar.php:66 +#: widgets/em-events.php:145 +msgid "Category IDs" +msgstr "Kategori id'er" + +#@ dbem +#: widgets/em-calendar.php:68 +#: widgets/em-events.php:147 +msgid "1,2,3 or 2 (0 = all)" +msgstr "1,2,3 or 2 (0 = alle)" + +#@ dbem +#: templates/forms/event-editor.php:175 +#: templates/forms/location-editor.php:95 +msgid "Delete Image?" +msgstr "Slet billede?" + +#@ dbem +#: admin/em-options.php:1182 +msgid "Allow double bookings?" +msgstr "Tillad dobbelt booking?" + +#@ dbem +#: admin/em-options.php:1182 +msgid "If enabled, users can book an event more than once." +msgstr "Hvis aktiveret, kan brugere tilmelde en event mere end én gang." + +#@ dbem +#: admin/em-options.php:1223 +msgid "Booking form feedback messages" +msgstr "Tilmeldingsblanket Feedback beskeder" + +#@ dbem +#: admin/em-options.php:1224 +msgid "When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below." +msgstr "NÃ¥r en tilmelding er foretaget af en bruger vises en Feedback besked afhængig af resultatet, beskeden kan tilpasses herunder." + +#@ dbem +#: admin/em-options.php:1226 +msgid "Successful booking" +msgstr "Vellykket tilmelding" + +#@ dbem +#: admin/em-options.php:1226 +msgid "When a booking is registered and confirmed." +msgstr "NÃ¥r en tilmelding er registreret og bekræftet." + +#@ dbem +#: admin/em-options.php:1227 +msgid "Successful pending booking" +msgstr "Vellykket tilmelding der afventer godkendelse" + +#@ dbem +#: admin/em-options.php:1227 +msgid "When a booking is registered but pending." +msgstr "NÃ¥r en tilmelding er registreret, men afventer godkendelse." + +#@ dbem +#: admin/em-options.php:1228 +msgid "Not enough spaces" +msgstr "Ikke nok pladser" + +#@ dbem +#: admin/em-options.php:1228 +msgid "When a booking cannot be made due to lack of spaces." +msgstr "NÃ¥r en tilmelding ikke kan foretages pÃ¥ grund af manglende pladser." + +#@ dbem +#: admin/em-options.php:1229 +msgid "Errors" +msgstr "Fejl" + +#@ dbem +#: admin/em-options.php:1229 +msgid "When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors." +msgstr "NÃ¥r en tilmelding ikke kan foretages pÃ¥ grund af en fejl ved udfyldning af formularen. Nedenfor, vil der være en dynamisk liste med fejl." + +#@ dbem +#: admin/em-options.php:1231 +msgid "User must log in" +msgstr "Bruger skal logge ind" + +#@ dbem +#: admin/em-options.php:1231 +msgid "When a user must log in before making a booking." +msgstr "NÃ¥r en bruger skal logge ind før der foretages en tilmelding." + +#@ dbem +#: admin/em-options.php:1232 +msgid "Error mailing user" +msgstr "Fejl ved afsendelse af mail til bruger" + +#@ dbem +#: admin/em-options.php:1232 +msgid "If a booking is made and an email cannot be sent, this is added to the success message." +msgstr "Hvis en tilmelding er foretaget, og der ikke kan afsendes en e-mail, tilføjes dette til 'Vellykket tilmelding' meddelelsen ." + +#@ dbem +#: admin/em-options.php:1233 +msgid "Already booked" +msgstr "Allerede tilmeldt" + +#@ dbem +#: admin/em-options.php:1233 +msgid "If the user made a previous booking and cannot double-book." +msgstr "Hvis brugeren har oprettet en tidligere tilmelding, og ikke kan foretage dobbelt booking." + +#@ dbem +#: admin/em-options.php:1234 +msgid "No spaces booked" +msgstr "Ingen pladser tilmeldt" + +#@ dbem +#: admin/em-options.php:1234 +msgid "If the user tries to make a booking without requesting any spaces." +msgstr "Hvis brugeren forsøger at foretage en tilmelding uden at forespørge pÃ¥ pladser." + +#@ dbem +#: admin/em-bookings.php:293 +msgid "Tax" +msgstr "Skat" + +#@ dbem +#: templates/forms/event/bookings.php:25 +msgid "You can have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Du kan have enkelt- eller multiple billetter hvor nogle billetter bliver tilgængelige under visse betingelser, f.eks tidlige tilmeldinger, grupperabatter, maksimalt antal tilmeldinger pr billet, osv." + +#@ dbem +#: templates/forms/event/bookings.php:25 +msgid "Basic HTML is allowed in ticket labels and descriptions." +msgstr "Basic HTML er tilladt i billetetiketter og beskrivelser." + +#@ dbem +#: admin/em-options.php:1251 +msgid "Ticket Price (Descending)" +msgstr "Billetpris (faldende)" + +#@ dbem +#: admin/em-options.php:1252 +msgid "Ticket Price (Ascending)" +msgstr "Billetpris (stigende)" + +#@ dbem +#: admin/em-options.php:1253 +msgid "Ticket Name (Ascending)" +msgstr "Billetnavn (stigende)" + +#@ dbem +#: admin/em-options.php:1254 +msgid "Ticket Name (Descending)" +msgstr "Billetnavn (faldende)" + +#@ dbem +#: admin/em-options.php:1180 +msgid "Can users cancel their booking?" +msgstr "Kan Brugere annullere deres bestillinger?" + +#@ dbem +#: admin/em-options.php:1180 +msgid "If enabled, users can cancel their bookings themselves from their bookings page." +msgstr "Hvis aktiveret, kan brugere selv annullere deres reservationer fra deres reservationsside." + +#@ dbem +#: admin/em-options.php:1199 +msgid "Tax Rate" +msgstr "Skatteprocent" + +#@ dbem +#: admin/em-options.php:1199 +msgid "Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price)." +msgstr "Tilføj en afgift til dine billetpriser (ved indtastning af 10 tilføjes 10% til billetprisen)" + +#@ dbem +#: admin/em-options.php:1200 +msgid "Add tax to ticket price?" +msgstr "Tilføj en afgift til billetprisen?" + +#@ dbem +#: admin/em-options.php:1200 +msgid "When displaying ticket prices and booking totals, include the tax automatically?" +msgstr "NÃ¥r der vises billetpriser og tilmeldingsoversigter, sÃ¥ inkluder afgiften automatisk?" + +#@ dbem +#: admin/em-options.php:1256 +msgid "Order Tickets By" +msgstr "Sorter billetter efter" + +#@ dbem +#: admin/em-options.php:1256 +msgid "Choose which order your tickets appear." +msgstr "Vælg i hvilken rækkefølge dine billetter vises." + +#@ dbem +#: admin/em-options.php:1264 +msgid "No-User Booking Mode" +msgstr "Ingen-Bruger tilmeldingstilstand" + +#@ dbem +#: admin/em-options.php:1268 +msgid "By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them." +msgstr "NÃ¥r en tilmelding foretages af en bruger er denne bundet til en brugerkonto som standard, hvis brugeren ikke er registreret eller logget ind og hvis gæstebookinger ikke er aktiveret, vil en konto blive oprettet for dem." + +#@ dbem +#: admin/em-options.php:1270 +msgid "Warning : Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information." +msgstr "Advarsel: Forskellige funktioner, der tilbydes til brugere med en konto, vil ikke være tilgængelige, f.eks. visning af tilmeldinger. NÃ¥r du aktiverer denne og vælger en bruger, kan en ændring af disse værdier forhindre tidligere ikke-bruger tilmeldinger i at vise de korrekte oplysninger." + +#@ dbem +#: admin/em-options.php:1273 +msgid "Enable No-User Booking Mode?" +msgstr "Aktiver Ingen-bruger tilmelding?" + +#@ dbem +#: admin/em-options.php:1273 +msgid "This disables user registrations for bookings." +msgstr "Dette deaktiverer brugerregistreringer for tilmeldinger." + +#@ dbem +#: admin/em-options.php:1279 +msgid "Assign bookings to" +msgstr "Tildel tilmeldinger til" + +#@ dbem +#: admin/em-options.php:1351 +msgid "Event Email Templates" +msgstr "Event E-mail skabeloner" + +#@ dbem +#: admin/em-options.php:1361 +#: em-install.php:350 +msgid "Event Approved" +msgstr "Event godkendt" + +#@ dbem +#: admin/em-options.php:1362 +msgid "An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the publish_events capability." +msgstr "En E-mail vil blive sendt til event-ejeren, nÃ¥r event'en godkendes. Brugere, hvor der kræves event-godkendelse, mangler muligheden for publish_events." + +#@ dbem +#: admin/em-options.php:1358 +#: admin/em-options.php:1364 +msgid "Event approved subject" +msgstr "Event godkendt emnefelt" + +#@ dbem +#: admin/em-options.php:1359 +#: admin/em-options.php:1365 +msgid "Event approved email" +msgstr "Event godkendt e-mail" + +#@ dbem +#: classes/em-booking.php:377 +#: classes/em-booking.php:385 +msgid "Guest User" +msgstr "Gæste-bruger" + +#@ dbem +#: classes/em-booking.php:381 +msgid "Not Supplied" +msgstr "Ikke opgivet" + +#@ dbem +#: classes/em-ticket.php:157 +msgid "Please enter a valid ticket price e.g. 10.50 (no currency signs)" +msgstr "Indtast venligst en gyldig billetpris f.eks. 10.50 (ingen valuta symboler)" + +#@ dbem +#: em-install.php:528 +msgid "This event is fully booked." +msgstr "Denne event er fuldt booket." + +#@ dbem +#: admin/em-admin.php:91 +msgid "Update Blogs" +msgstr "Updatér Blogs" + +#@ dbem +#: admin/em-admin.php:139 +#, php-format +msgid "Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Ups! Wordpress kunne af en eller anden grund ikke oprette en eventsside til dig (eller du kom til at slette den). Der er dog ingen grund til bekymring, det eneste du skal gøre er at oprette en tom side, navngiv den som du ønsker, og vælg den som din eventsside pÃ¥ din indstillingsside. Undskyld for dette ekstra trin! Hvis du ved hvad du foretager dig, har du mÃ¥ske gjort det med vilje, hvis dette er tilfældet sÃ¥ ignorer denne meddelelse" + +#@ dbem +#: admin/em-admin.php:148 +msgid "There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update." +msgstr "Der er en nyere version af Events Manager Pro, som er pÃ¥krævet for den nuværende version af Events Manager. Besøg venligst plugin-hjemmesiden og hent den seneste opdatering." + +#@ dbem +#: admin/em-admin.php:159 +#, php-format +msgid "MultiSite options have moved here. Dismiss message" +msgstr "MultiSite-indstillinger er flyttet hertil. Afvis besked" + +#@ dbem +#: admin/em-admin.php:171 +#, php-format +msgid "Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" +msgstr "Medens de stadig vises ved brug af pladsholdere, skal du migrere din lokation og eventbilleder for at fÃ¥ dem til at blive vist i dine redigerbare formularer og mediebibliotek. Afvis besked" + +#@ dbem +#: admin/em-admin.php:213 +#: admin/em-options.php:1569 +msgid "Uninstall" +msgstr "Afinstaller" + +#@ dbem +#: admin/em-bookings.php:67 +msgid "Recent Bookings" +msgstr "Nyelige tilmeldinger" + +#@ dbem +#: admin/em-bookings.php:287 +msgid "Total Price" +msgstr "Pris i alt" + +#@ dbem +#: admin/em-bookings.php:288 +#, php-format +msgid "%d Spaces" +msgstr "%d pladser" + +#@ dbem +#: admin/em-bookings.php:298 +msgid "Total Price (inc. tax)" +msgstr "Pris i alt (inkl. moms)" + +#@ default +#: admin/em-ms-options.php:6 +msgid "Update Network" +msgstr "Opdater netværk" + +#@ default +#: admin/em-ms-options.php:24 +msgid "To update your network blogs with the latest Events Manager automatically, click the update button below." +msgstr "For at opdatere dine netværk-blogs automatisk, med seneste version af Events Manager, skal du klikke pÃ¥ knappen Opdater nedenfor." + +#@ dbem +#: admin/em-ms-options.php:27 +msgid "Update" +msgstr "Opdater" + +#@ dbem +#: admin/em-ms-options.php:136 +#: admin/em-options.php:267 +#: admin/em-options.php:1173 +msgid "General" +msgstr "Generelt" + +#@ default +#: admin/em-ms-options.php:157 +#, php-format +msgid "%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network." +msgstr "%s der tilhører andre undersider har en ektra slug foranstillet, sÃ¥ledes at din primære side kan skelne mellem sine egne %s og dem der tilhører andre sider i dit netværk." + +#@ dbem +#: admin/em-ms-options.php:158 +#, php-format +msgid "When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site." +msgstr "NÃ¥r du viser dine globale %s pÃ¥ din primære side, kan du vælge at lade dine brugere se %s detaljer pÃ¥ denne eller lade dem omdirigere til undersiden." + +#@ dbem +#: admin/em-ms-options.php:159 +#, php-format +msgid "Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Viser som standard %s fra alle steder pÃ¥ netværket. Du kan stadig begrænse %s ved at blogge ved hjælp af shortcodes og skabelon-tags kombineret med blog attributten. Dette kræver at globale tabeller er aktiveret." + +#@ default +#: admin/em-ms-options.php:160 +#, php-format +msgid "You must have assigned a %s page in your main blog settings for this to work." +msgstr "Du skal have tildelt en %s side i din primær blogindstillinger for at dette vil virke." + +#@ dbem +#: admin/em-ms-options.php:162 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:1173 +#: admin/em-options.php:1190 +#: admin/em-options.php:1208 +#: admin/em-options.php:1242 +#, php-format +msgid "%s Options" +msgstr "%s indstillinger" + +#@ dbem +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:173 +#, php-format +msgid "Link sub-site %s directly to sub-site?" +msgstr "Link underside %s direkte til undersiden?" + +#@ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, php-format +msgid "Global %s slug" +msgstr "Global %s slug" + +#@ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +msgid "Example:" +msgstr "Eksempel:" + +#@ dbem +#: admin/em-ms-options.php:167 +msgid "Locations on main blog?" +msgstr "Lokationer pÃ¥ din hovedblog" + +#@ dbem +#: admin/em-ms-options.php:167 +msgid "If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog." +msgstr "Hvis du vil foretrække at alle dine lokationer tilhører din primære blog, vil brugerne pÃ¥ undersider stadig være i stand til at oprette lokationer, men de faktiske lokationer er oprettet og indeholdt i hovedbloggen." + +#@ dbem +#: admin/em-ms-options.php:172 +#, php-format +msgid "Display global %s on main blog?" +msgstr "Vis globale %s pÃ¥ hovedbloggen?" + +#@ dbem +#: admin/em-options.php:112 +msgid "Settings have been reset back to default. Your events, locations and categories have not been modified." +msgstr "Indstillingerne er nulstillet til standardværdier. Dine events, lokationer og kategorier er ikke blevet ændret." + +#@ dbem +#: admin/em-options.php:125 +#: admin/em-options.php:129 +msgid "Reset Events Manager" +msgstr "Nulstil Events Manager" + +#@ dbem +#: admin/em-options.php:126 +msgid "Are you sure you want to reset Events Manager?" +msgstr "Er du sikker pÃ¥ at du vil nulstille Events Manager?" + +#@ dbem +#: admin/em-options.php:127 +msgid "All your settings, including email templates and template formats for Events Manager will be deleted." +msgstr "Alle dine indstillinger, inklusive e-mail-skabeloner og skabelonformater for Events Manager vil blive slettet." + +#@ dbem +#: admin/em-options.php:141 +msgid "Uninstall Events Manager" +msgstr "Afinstaller Events Manager" + +#@ dbem +#: admin/em-options.php:142 +msgid "Are you sure you want to uninstall Events Manager?" +msgstr "Er du sikker pÃ¥ at du vil afinstallere Events Manager?" + +#@ dbem +#: admin/em-options.php:143 +msgid "All your settings and events will be permanently deleted. This cannot be undone." +msgstr "Alle dine indstillinger og Events vil blive slettet permanent. Dette kan ikke ændres efterfølgende." + +#@ dbem +#: admin/em-options.php:144 +#, php-format +msgid "If you just want to deactivate the plugin, go to your plugins page." +msgstr "Hvis du kun vil deaktivere plugin'et, gÃ¥ til din plugin-side." + +#@ dbem +#: admin/em-options.php:146 +msgid "Uninstall and Deactivate" +msgstr "Afinstaller og deaktiver" + +#@ dbem +#@ default +#: admin/em-options.php:268 +#: admin/em-options.php:446 +#: admin/em-options.php:610 +msgid "Pages" +msgstr "Sider" + +#@ dbem +#: admin/em-options.php:269 +msgid "Formats/Layouts" +msgstr "Formater/layouts" + +#@ dbem +#: admin/em-options.php:271 +msgid "Booking Options" +msgstr "Tilmeldingsindstillinger" + +#@ dbem +#: admin/em-options.php:273 +msgid "Emails" +msgstr "E-mails" + +#@ dbem +#: admin/em-options.php:287 +msgid "General Options" +msgstr "Generelle indstillinger" + +#@ dbem +#: admin/em-options.php:290 +msgid "Disable thumbnails?" +msgstr "Deaktiver minaturebilleder?" + +#@ dbem +#: admin/em-options.php:290 +msgid "Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here)." +msgstr "Vælg ja for at fjerne muligheden i Events Manager for at vise miniaturebilleder (nogle temaer har mÃ¥ske allerede gjort dette, i sÃ¥ fald kan det ikke aktiveres her)." + +#@ dbem +#: admin/em-options.php:293 +#: admin/em-options.php:334 +#: admin/em-options.php:351 +#, php-format +msgid "%s Settings" +msgstr "%s indstillinger" + +#@ dbem +#: admin/em-options.php:297 +msgid "Enable recurrence?" +msgstr "Aktiver gentagelser?" + +#@ dbem +#: admin/em-options.php:299 +msgid "Enable tags?" +msgstr "Aktiver tags?" + +#@ dbem +#: admin/em-options.php:299 +msgid "Select yes to enable the tag features" +msgstr "Vælg ja for at aktivere tag-funktionenerne" + +#@ dbem +#: admin/em-options.php:301 +msgid "Enable categories?" +msgstr "Aktiver kategorier?" + +#@ dbem +#: admin/em-options.php:310 +msgid "If an event does not have a category assigned when editing, this one will be assigned automatically." +msgstr "Hvis en event ikke har en tildelt kategori nÃ¥r den redigeres, vil denne her blive tildelt automatisk." + +#@ dbem +#: admin/em-options.php:313 +#: admin/em-options.php:342 +#, php-format +msgid "Enable %s attributes?" +msgstr "Aktiver %s attributter?" + +#@ dbem +#: admin/em-options.php:314 +#: admin/em-options.php:343 +#, php-format +msgid "Enable %s custom fields?" +msgstr "Aktiver %s brugertilpassede felter?" + +#@ dbem +#: admin/em-options.php:314 +#: admin/em-options.php:343 +msgid "Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area." +msgstr "Brugertilpassede felter er det samme som attributter, bortset fra at du ikke kan sætte bestemte værdier, brugere kan tilføje et hvilket som helst brugertilpasset feltnavn/værdi. Kun tilgængelig i Wordpress Admin interface." + +#@ dbem +#: admin/em-options.php:316 +#: admin/em-options.php:345 +#, php-format +msgid "%s Attributes" +msgstr "%s attributter" + +#@ dbem +#: admin/em-options.php:338 +msgid "Enable locations?" +msgstr "Aktiver lokationer?" + +#@ dbem +#: admin/em-options.php:338 +msgid "If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats." +msgstr "Hvis du deaktiverer lokationer, sÃ¥ husk pÃ¥, at du skal fjerne din lokationsside, shortcodes og relaterede pladsholdere fra dine formater." + +#@ dbem +#: admin/em-options.php:340 +msgid "Require locations for events?" +msgstr "Kræv lokationer for events?" + +#@ dbem +#: admin/em-options.php:340 +msgid "Setting this to no will allow you to submit events without locations. You can use the {no_location}...{/no_location} or {has_location}..{/has_location} conditional placeholder to selectively display location information." +msgstr "Sæt denne til nej, vil tillade dig at oprette events uden lokationer. Du kan bruge {no_location}...{/no_location} eller {has_location}..{/has_location} betinget pladsholder til selektivt at vise lokationsoplysninger." + +#@ dbem +#: admin/em-options.php:345 +#, php-format +msgid "You can also add location attributes here, one per line in this format #_LATT{key}. They will not appear on location pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Du kan ogsÃ¥ tilføje lokationsattributter her, én pr linje i dette format #_LATT{key}. De bliver ikke vist pÃ¥ lokationssider medmindre du indsætter dem i en anden skabelon nedenfor, men du ønsker mÃ¥ske at lagre ekstra oplysninger om en event for andre brugere. Flere oplysninger om pladsholdere." + +#@ dbem +#: admin/em-options.php:351 +#: admin/em-options.php:855 +#: admin/em-options.php:1499 +msgid "Other" +msgstr "Andre" + +#@ dbem +#: admin/em-options.php:368 +msgid "Event Submission Forms" +msgstr "Event indsendelsesformularer" + +#@ dbem +#: admin/em-options.php:372 +#, php-format +msgid "You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below." +msgstr "Du kan tillade brugere at postere offentlige events pÃ¥ din blog ved hjælp af %s shortcode, og aktivere anonyme indlæg herunder." + +#@ dbem +#: admin/em-options.php:375 +msgid "Use Visual Editor?" +msgstr "Brug grafisk redigering?" + +#@ dbem +#: admin/em-options.php:375 +msgid "Users can now use the WordPress editor for easy HTML entry in the submission form." +msgstr "Nu kan brugere benytte Wordpress redigeringen for nem HTML adgang i indsendelsesformularen." + +#@ dbem +#: admin/em-options.php:376 +msgid "Show form again?" +msgstr "Vis formular igen?" + +#@ dbem +#: admin/em-options.php:376 +msgid "When a user submits their event, you can display a new event form again." +msgstr "NÃ¥r en bruger tilføjer deres event kan du vise en ny eventformular igen." + +#@ dbem +#: admin/em-options.php:377 +msgid "Customize the message your user sees when they submitted their event." +msgstr "Tilpas den besked som dine brugere ser nÃ¥r de har tilføjet deres event." + +#@ dbem +#: admin/em-options.php:380 +msgid "Anonymous event submissions" +msgstr "Anonyme event-tilføjelser" + +#@ dbem +#: admin/em-options.php:384 +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting." +msgstr "Events kræver at en bruger ejer dem. For at tillade at events kan tilføjes anonymt er du nødt til at tildele den pÃ¥gældende event til en specifik bruger. Vi anbefaler, at du opretter og benytter en \"Anonym\" abonnent med en meget god adgangskode. Gæsterne vil have de samme event-rettigheder, som denne bruger, ved tilføjelse af events." + +#@ dbem +#: admin/em-options.php:415 +msgid "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter." +msgstr "Mange temaer viser ekstra meta-data information pÃ¥ indlægssider, sÃ¥som 'udgivet af' eller 'udgivet den' information, hvilket mÃ¥ske ikke ønskes. Normalt indeholder sideskabeloner mindre fyld." + +#@ dbem +#: admin/em-options.php:416 +#, php-format +msgid "Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named single-%s.php as shown on the wordpress codex, and leave this set to Posts." +msgstr "Vær opmærksom pÃ¥ at nogle temaer ikke virker med denne indstilling, hvis dette tilfældet (eller hvis du vil lave dine egne ændringer), kan du oprette en fil med navnet single-%s.php som anvist i wordpress codex, og lade dette sæt være indstillet til indlæg." + +#@ default +#: admin/em-options.php:417 +#, php-format +msgid "By using formats, you can control how your %s are displayed from within the Events Manager Formats tab above without having to edit your theme files." +msgstr "Ved at bruge formater, kan du kontrollere hvordan din % s vises i Events Manager Formater i fanen ovenfor, uden du behøver at redigere dine temafiler." + +#@ dbem +#: admin/em-options.php:420 +msgid "Permalink Slugs" +msgstr "Permalink Slugs" + +#@ dbem +#: admin/em-options.php:422 +msgid "You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings." +msgstr "Du kan ændre permalink-strukturen for dine events, lokationer, kategorier og tags her. Bemærk venligst at du mÃ¥ske ønsker at oprette viderestillinger, hvis du ændre din permalink-struktur, for at opretholde din SEO placeringer." + +#@ dbem +#: admin/em-options.php:425 +#: admin/em-options.php:427 +#: admin/em-options.php:430 +#: admin/em-options.php:433 +#, php-format +msgid "e.g. %s - you can use / seperators too" +msgstr "f.eks. %s - du kan ogsÃ¥ benytte / seperatorer" + +#@ dbem +#@ default +#: admin/em-options.php:433 +#: admin/em-options.php:823 +#: em-posts.php:48 +#: em-posts.php:51 +msgid "Event Tags" +msgstr "Event tags" + +#@ dbem +#: admin/em-options.php:442 +#: admin/em-options.php:606 +#: admin/em-options.php:855 +#, php-format +msgid "%s Pages" +msgstr "%s-sider" + +#@ dbem +#: admin/em-options.php:446 +#: admin/em-options.php:610 +#, php-format +msgid "Display %s as" +msgstr "Vis %s som" + +#@ default +#: admin/em-options.php:446 +#: admin/em-options.php:610 +msgid "Posts" +msgstr "Indlæg" + +#@ dbem +#: admin/em-options.php:447 +#: admin/em-options.php:529 +#: admin/em-options.php:611 +#: admin/em-options.php:679 +#: admin/em-options.php:751 +#: admin/em-options.php:827 +msgid "Override with Formats?" +msgstr "Tilsidesæt med formater?" + +#@ dbem +#: admin/em-options.php:448 +#: admin/em-options.php:612 +msgid "Enable Comments?" +msgstr "Aktiver kommentarer?" + +#@ dbem +#: admin/em-options.php:448 +#: admin/em-options.php:612 +#, php-format +msgid "If you would like to disable comments entirely, disable this, otherwise you can disable comments on each single %s. Note that %s with comments enabled will still be until you resave them." +msgstr "Hvis du gerne vil slÃ¥ kommentarer fuldstændigt fra, sÃ¥ deaktiver denne, du kan ogsÃ¥ deaktivere kommentarer pÃ¥ hver enkelt %s. Bemærk at %s med kommentarer aktiveret vil bibeholde dette indtil du gemmer pÃ¥ ny." + +#@ dbem +#: admin/em-options.php:456 +#: admin/em-options.php:620 +#, php-format +msgid "%s List/Archives" +msgstr "%s-tabel/arkiv" + +#@ dbem +#: admin/em-options.php:464 +#: admin/em-options.php:624 +#: admin/em-options.php:737 +#, php-format +msgid "[No %s Page]" +msgstr "[No %s Page]" + +#@ dbem +#: admin/em-options.php:469 +msgid "This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags." +msgstr "Denne indstillling tillader dig at vælge hvilken side du ønsker som eventsside. Hvis du ikke vælger en eventsside, kan du aktivere event-arkiver eller benytte de relevante shortcodes og/eller skabelontags, for at vise eventstabeller." + +#@ dbem +#: admin/em-options.php:476 +msgid "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Nogle WordPress temaer følger ikke god praksis nÃ¥r navigationsmenuer genereres, hvorfor den automatiske titel-omskrivningsfunktion kan forÃ¥rsage problemer. Hvis dine menuer ikke fungerer korrekt pÃ¥ eventssider, sÃ¥ prøv at sætte denne til 'Ja', og tilføj et passende HTML-titelformat herunder." + +#@ dbem +#: admin/em-options.php:483 +#: admin/em-options.php:634 +msgid "Enable Archives?" +msgstr "Aktiver arkiver?" + +#@ dbem +#: admin/em-options.php:483 +#: admin/em-options.php:634 +msgid "Allow WordPress post-style archives." +msgstr "Tillad Wordpress indlægstype-arkiver." + +#@ dbem +#: admin/em-options.php:488 +msgid "Default event archive ordering" +msgstr "Standard event-arkiv sortering" + +#@ dbem +#: admin/em-options.php:493 +msgid "Order by start date, start time" +msgstr "Sorter efter startdato, starttidspunkt" + +#@ dbem +#: admin/em-options.php:494 +msgid "Order by name" +msgstr "Sorter efter navn" + +#@ dbem +#: admin/em-options.php:525 +#: admin/em-options.php:675 +#: admin/em-options.php:747 +msgid "General settings" +msgstr "Generelle indstillinger" + +#@ dbem +#: admin/em-options.php:531 +#: admin/em-options.php:680 +msgid "Include in WordPress Searches?" +msgstr "Inkluder i Wordpress-søgninger?" + +#@ dbem +#: admin/em-options.php:531 +#: admin/em-options.php:680 +#, php-format +msgid "Allow %s to appear in the built-in search results." +msgstr "Tillad visning af %s i den indbyggede søgefunktions resultater." + +#@ dbem +#: admin/em-options.php:535 +#: admin/em-options.php:684 +#: admin/em-options.php:774 +#, php-format +msgid "Default %s list options" +msgstr "Standard %s tabelindstillinger" + +#@ dbem +#: admin/em-options.php:536 +#: admin/em-options.php:685 +#: admin/em-options.php:775 +msgid "These can be overriden when using shortcode or template tags." +msgstr "Disse kan overskrives ved brug af shortcode eller skabelontags." + +#@ dbem +#: admin/em-options.php:625 +#: admin/em-options.php:738 +#: admin/em-options.php:863 +#: admin/em-options.php:900 +#: admin/em-options.php:901 +#: admin/em-options.php:902 +#, php-format +msgid "%s page" +msgstr "%s-side" + +#@ dbem +#: admin/em-options.php:625 +#, php-format +msgid "This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags." +msgstr "Denne indstillling tillader dig at vælge hvilken side du ønsker som %s side. Hvis du ikke vælger en %s-side, kan du aktivere arkiver eller benytte de relevante shortcodes og/eller skabelontags, for at vise tabeller." + +#@ dbem +#: admin/em-options.php:629 +#: admin/em-options.php:742 +#, php-format +msgid "Show %s page in lists?" +msgstr "Vis %s-side i tabeller?" + +#@ dbem +#: admin/em-options.php:629 +#: admin/em-options.php:742 +#, php-format +msgid "Check this option if you want the %s page to appear together with other pages in pages lists." +msgstr "Marker denne indstilling hvis du ønsker at %s-siden skal vises sammen med andre sider pÃ¥ sideoversigter." + +#@ dbem +#: admin/em-options.php:639 +#: admin/em-options.php:754 +#: admin/em-options.php:830 +msgid "Default archive ordering" +msgstr "Standard arkiv-sortering" + +#@ dbem +#: admin/em-options.php:644 +#: admin/em-options.php:645 +#: admin/em-options.php:646 +#: admin/em-options.php:694 +#: admin/em-options.php:695 +#: admin/em-options.php:696 +#: admin/em-options.php:784 +#: admin/em-options.php:785 +#: admin/em-options.php:786 +#: admin/em-options.php:871 +#: admin/em-options.php:872 +#: admin/em-options.php:873 +#, php-format +msgid "Order by %s" +msgstr "Sorter efter %s" + +#@ dbem +#: admin/em-options.php:689 +#: admin/em-options.php:779 +#: admin/em-options.php:866 +msgid "Default list ordering" +msgstr "Standard tabelsortering" + +#@ dbem +#: admin/em-options.php:723 +#: admin/em-options.php:813 +msgid "List Limits" +msgstr "Tabelbegræsninger" + +#@ dbem +#: admin/em-options.php:723 +#: admin/em-options.php:813 +#, php-format +msgid "This will control how many %s are shown on one list by default." +msgstr "Denne kontrollerer hvor mange %s der vises i en tabel som standard." + +#@ dbem +#: admin/em-options.php:738 +#, php-format +msgid "This option allows you to select which page to use as the %s page." +msgstr "Denne indstilling tillader dig at vælge hvilken side, du vil benytte som %s-siden." + +#@ dbem +#: admin/em-options.php:751 +msgid "Setting this to yes will make categories display as a page rather than an archive." +msgstr "NÃ¥r denne sættes til ja, vil kategorier vises som en side fremfor et arkiv." + +#@ dbem +#: admin/em-options.php:827 +msgid "tags" +msgstr "tags" + +#@ default +#: admin/em-options.php:857 +msgid "These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated." +msgstr "Disse sider tillader dig at tilføje et event-management-interface udenfor admin-interfacet, pÃ¥ en hvilken som helst side pÃ¥ din hjemmeside. Men tænk over, at det overskrives af BuddyPress hvis aktiveret." + +#@ dbem +#: admin/em-options.php:861 +#: classes/em-event-posts-admin.php:117 +#: classes/em-event-posts-admin.php:233 +msgid "None" +msgstr "Ingen" + +#@ dbem +#: admin/em-options.php:900 +msgid "Edit events" +msgstr "Rediger events" + +#@ dbem +#: admin/em-options.php:901 +msgid "Edit locations" +msgstr "Rediger lokationer" + +#@ dbem +#: admin/em-options.php:902 +msgid "Manage bookings" +msgstr "Administrer tilmeldinger" + +#@ dbem +#: admin/em-options.php:863 +msgid "My bookings" +msgstr "Mine tilmeldinger" + +#@ dbem +#: admin/em-options.php:863 +msgid "Users can view their bookings for other events on this page." +msgstr "Brugere kan se deres tilmeldinger til andre events pÃ¥ denne side." + +#@ dbem +#: admin/em-options.php:940 +msgid "Search Form Options" +msgstr "Formular søgningsindstillinger" + +#@ dbem +#: admin/em-options.php:944 +msgid "Show text search?" +msgstr "Vis tekstsøgning?" + +#@ dbem +#: admin/em-options.php:945 +msgid "Text search label" +msgstr "Tekstsøgnings-etiket" + +#@ dbem +#: admin/em-options.php:945 +msgid "Appears within the input box." +msgstr "Vises indeni indtastningsfeltet." + +#@ dbem +#: admin/em-options.php:946 +msgid "Show date range?" +msgstr "Vis datointerval?" + +#@ dbem +#: admin/em-options.php:947 +msgid "Show categories?" +msgstr "Vis kategorier?" + +#@ dbem +#: admin/em-options.php:948 +msgid "Categories label" +msgstr "Kategori-etiket" + +#@ dbem +#: admin/em-options.php:948 +#: admin/em-options.php:950 +#: admin/em-options.php:952 +#: admin/em-options.php:954 +#: admin/em-options.php:956 +msgid "Appears as the first default search option." +msgstr "Vises som den første standard søgeindstilling." + +#@ dbem +#: admin/em-options.php:949 +msgid "Show countries?" +msgstr "Vis lande?" + +#@ dbem +#: admin/em-options.php:950 +msgid "All countries text" +msgstr "Alle landes tekst" + +#@ dbem +#: admin/em-options.php:951 +msgid "Show regions?" +msgstr "Vis regioner?" + +#@ dbem +#: admin/em-options.php:952 +msgid "All regions text" +msgstr "Alle regioners tekst" + +#@ dbem +#: admin/em-options.php:953 +msgid "Show states?" +msgstr "Vis stater?" + +#@ dbem +#: admin/em-options.php:954 +msgid "All states text" +msgstr "Alle staters tekst" + +#@ dbem +#: admin/em-options.php:955 +msgid "Show towns/cities?" +msgstr "Vis byer?" + +#@ dbem +#: admin/em-options.php:956 +msgid "All towns/cities text" +msgstr "Alle byer tekst" + +#@ dbem +#: admin/em-options.php:964 +msgid "Date/Time formats" +msgstr "Dato-/tidsformater" + +#@ dbem +#: admin/em-options.php:966 +#, php-format +msgid "Date and Time formats follow the WordPress time formatting conventions" +msgstr "Dato- og tidsformater følger WordPress time formatting conventions" + +#@ dbem +#: admin/em-options.php:969 +msgid "Date Format" +msgstr "Datoformat" + +#@ default +#: admin/em-options.php:969 +#: admin/em-options.php:971 +#, php-format +msgid "For use with the %s placeholder" +msgstr "Benyttes sammen med %s pladsholder" + +#@ dbem +#: admin/em-options.php:970 +msgid "Date Seperator" +msgstr "Dato seperator" + +#@ dbem +#: admin/em-options.php:970 +#: admin/em-options.php:972 +#, php-format +msgid "For when start/end %s are present, this will seperate the two (include spaces here if necessary)." +msgstr "NÃ¥r start/slut %s er tilstede, vil denne adskille disse to (inkluder mellemrum her hvis nødvendigt)." + +#@ dbem +#: admin/em-options.php:970 +msgid "dates" +msgstr "datoer" + +#@ dbem +#: admin/em-options.php:971 +msgid "Time Format" +msgstr "Tidsformat" + +#@ dbem +#: admin/em-options.php:972 +msgid "Time Seperator" +msgstr "Tid seperator" + +#@ dbem +#: admin/em-options.php:972 +msgid "times" +msgstr "tider" + +#@ dbem +#: admin/em-options.php:973 +msgid "All Day Message" +msgstr "Heldags besked" + +#@ dbem +#: admin/em-options.php:973 +#, php-format +msgid "If an event lasts all day, this text will show if using the %s placeholder" +msgstr "Hvis en event varer hele dagen, vil denne tekst vises nÃ¥r du benytter %s pladsholder" + +#@ dbem +#: admin/em-options.php:989 +msgid "Link directly to event on day with single event?" +msgstr "Link direkte til event pÃ¥ dag med single-event?" + +#@ dbem +#: admin/em-options.php:989 +msgid "If a calendar day has only one event, you can force a direct link to the event (recommended to avoid duplicate content)." +msgstr "Hvis en kalenderdag kun har én event, kan du sætte et link direkte til denne event (anbefales for at undgÃ¥ duplikeret indhold)" + +#@ dbem +#: admin/em-options.php:992 +msgid "Calendar Day Event List Settings" +msgstr "Kalenderdag Eventabel-indstillinger" + +#@ dbem +#: admin/em-options.php:999 +msgid "Order by event name, then event start time" +msgstr "Sorter først pÃ¥ eventnavn, og derefter pÃ¥ starttidspunkt for event" + +#@ dbem +#: admin/em-options.php:1000 +msgid "Order by event start time, then event name" +msgstr "Sorter først pÃ¥ starttidspunkt for event, og derefter eventnavn" + +#@ dbem +#: admin/em-options.php:1031 +msgid "Calendar events/day limit" +msgstr "Kalenderevents/-dag begrænsninger" + +#@ dbem +#: admin/em-options.php:1031 +msgid "Limits the number of events on each calendar day. Leave blank for no limit." +msgstr "Begræns antallet af events pÃ¥ hver kalenderdag. Efterlad tom for ingen begrænsninger." + +#@ dbem +#: admin/em-options.php:1032 +msgid "More Events message" +msgstr "Flere Events-beskeder" + +#@ dbem +#: admin/em-options.php:1032 +msgid "Text with link to calendar day page with all events for that day if there are more events than the limit above, leave blank for no link as the day number is also a link." +msgstr "Tekst med link til side for kalenderdag der indeholder alle events pÃ¥ denne dag, sÃ¥fremt der er flere events en grænsen sat herover. Efterlad denne tom sÃ¥fremt du kun ønsker datoen som link." + +#@ dbem +#: admin/em-options.php:1107 +msgid "Tags format" +msgstr "Tags-format" + +#@ dbem +#: admin/em-options.php:1110 +msgid "Tag" +msgstr "Tag" + +#@ dbem +#: admin/em-options.php:1112 +#: admin/em-options.php:1113 +msgid "tag" +msgstr "tag" + +#@ dbem +#: admin/em-options.php:1112 +msgid "The format of a single tag page title." +msgstr "Formatet pÃ¥ en single-tag sidetitel." + +#@ dbem +#: admin/em-options.php:1113 +msgid "The format of a single tag page." +msgstr "Formatet pÃ¥ en single-tag side." + +#@ dbem +#: admin/em-options.php:1118 +msgid "The format of the events the list inserted in the tag page through the #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS element." +msgstr "Formatet pÃ¥ events i den indsatte tabel pÃ¥ tag-siden ved brug af #_TAGNEXTEVENTS, #_TAGNEXTEVENTS og #_TAGALLEVENTS element." + +#@ dbem +#: admin/em-options.php:1120 +msgid "The message to be displayed in the list generated by #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS when no events are available." +msgstr "Beskeden som vises i tabellen genereret af #_TAGNEXTEVENTS, #_TAGNEXTEVENTS og #_TAGALLEVENTS nÃ¥r der ikke er nogen events tilgængelige." + +#@ dbem +#: admin/em-options.php:1190 +msgid "Pricing" +msgstr "Prissætning" + +#@ dbem +#: admin/em-options.php:1196 +msgid "Thousands Seperator" +msgstr "Tusinde-seperator" + +#@ dbem +#: admin/em-options.php:1197 +msgid "Decimal Point" +msgstr "Decimaltegn" + +#@ dbem +#: admin/em-options.php:1198 +msgid "Currency Format" +msgstr "Valuta-format" + +#@ dbem +#: admin/em-options.php:1198 +msgid "Choose how prices are displayed. @ will be replaced by the currency symbol, and # will be replaced by the number." +msgstr "Vælg hvorledes priser vises. @ erstattes af valutasymbolet, og # erstattes af tallet." + +#@ dbem +#: admin/em-options.php:1208 +msgid "Booking Form" +msgstr "Tilmeldingsformular" + +#@ dbem +#: admin/em-options.php:1213 +msgid "Submit button text" +msgstr "Tilføj knap-tekst" + +#@ dbem +#: admin/em-options.php:1213 +#, php-format +msgid "The text used by the submit button. To use an image instead, enter the full url starting with %s or %s." +msgstr "Teksten der benyttes pÃ¥ tilføj-knappen. For at benytte et billede istedet, indtast hele url begyndende med %s eller %s." + +#@ dbem +#: admin/em-options.php:1215 +msgid "Booking form texts/messages" +msgstr "Tilmeldingsformular tekster/beskeder" + +#@ dbem +#: admin/em-options.php:1217 +msgid "Bookings disabled" +msgstr "Tilmeldinger deaktiveret" + +#@ dbem +#: admin/em-options.php:1217 +msgid "An event with no bookings." +msgstr "En event uden tilmeldinger." + +#@ dbem +#: admin/em-options.php:1218 +msgid "Bookings closed" +msgstr "Tilmeldinger lukket" + +#@ dbem +#: admin/em-options.php:1218 +msgid "Bookings have closed (e.g. event has started)." +msgstr "Tilmeldinger er lukket (f.eks. hvis events er startet)." + +#@ dbem +#: admin/em-options.php:1219 +msgid "Fully booked" +msgstr "Fuldt booket" + +#@ dbem +#: admin/em-options.php:1219 +msgid "Event is fully booked." +msgstr "Event er fuldt booket." + +#@ dbem +#: admin/em-options.php:1220 +msgid "Already attending" +msgstr "Detager allerede" + +#@ dbem +#: admin/em-options.php:1220 +msgid "If already attending and double bookings are disabled, this message will be displayed, followed by a link to the users booking page." +msgstr "Hvis du allerede deltager og dobbelt-tilmeldinger er deaktiveret, vises denne besked fulgt af et link til brugerens tilmeldingsside." + +#@ dbem +#: admin/em-options.php:1221 +msgid "Manage bookings link text" +msgstr "Administrer tekst pÃ¥ tilmeldingslinks" + +#@ dbem +#: admin/em-options.php:1221 +msgid "Link text used for link to user bookings." +msgstr "Tekst pÃ¥ links til brugertilmeldinger." + +#@ dbem +#: admin/em-options.php:1230 +msgid "Email Exists" +msgstr "E-mail eksisterer" + +#@ dbem +#: admin/em-options.php:1230 +msgid "When a guest tries to book using an email registered with a user account." +msgstr "NÃ¥r en gæst forsøger at tilmelde sig via en e-mail registreret pÃ¥ en brugerkonto." + +#@ dbem +#: admin/em-options.php:1242 +msgid "Ticket" +msgstr "Billet" + +#@ dbem +#: admin/em-options.php:1269 +msgid "The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user." +msgstr "Indstillingen nedenfor tillader dig at deaktivere brugerkonti og tildele alle tilmeldinger til en forælder-bruger, du vil dog stadig se de tilføjet personoplysninger pÃ¥ disse tilmeldinger. NÃ¥r denne funktion er aktiveret, gemmes ekstra oplysninger knyttet til personen ved siden af tilmeldingsoplysningerne, og ikke som en WordPress-bruger." + +#@ dbem +#: admin/em-options.php:1279 +msgid "Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself." +msgstr "Vælg en forælder-bruger der kan tildeles tilmeldinger. Folk der opretter tilmeldinger kan ikke se disse detaljer, og vil aldrig have adgang til disse brugeroplysninger. Brugeren skal være en abonnent som du ikke selv benytter til at logge ind med." + +#@ dbem +#: admin/em-options.php:1302 +msgid "You can disable this email by leaving the subject blank." +msgstr "Du kan deaktivere denne e-mail ved at efterlade emnefeltet tomt." + +#@ dbem +#: admin/em-options.php:1306 +msgid "Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event." +msgstr "Vælg denne indstilling hvis du vil forhindre Wordpress registrerings-email fra at blive sendt, nÃ¥r en anonym bruger tilmelder sig til en event." + +#@ dbem +#: admin/em-options.php:1354 +msgid "Event Submitted" +msgstr "Event tilføjet" + +#@ dbem +#: admin/em-options.php:1355 +msgid "An email will be sent to the an administrator of your choice when an event is submitted and pending approval." +msgstr "Der sendes en e-mail til en administrator efter dit eget valg, nÃ¥r en event tilføjes og afventer godkendelse." + +#@ dbem +#: admin/em-options.php:1357 +msgid "Administrator Email" +msgstr "Aministrator e-mail" + +#@ dbem +#: admin/em-options.php:1357 +msgid "If left blank, no email will be sent. Seperate emails with commas for more than one email." +msgstr "Efterlades denne tom, bliver der ikke afsendt nogen e-mail. Adskil e-mails med kommaer hvis du indtaster flere adresser." + +#@ dbem +#: admin/em-options.php:1411 +msgid "Image Sizes" +msgstr "Billedstørrelser" + +#@ dbem +#: admin/em-options.php:1437 +msgid "Send HTML Emails?" +msgstr "Send HTML e-mails?" + +#@ dbem +#: admin/em-options.php:1437 +msgid "If set to yes, your emails will be sent in HTML format, otherwise plaintext." +msgstr "Hvis sat til ja, vil dine e-mails blive sendt i HTML-format, ellers i ren tekst." + +#@ dbem +#: admin/em-options.php:1470 +#: admin/em-options.php:1480 +#: admin/em-options.php:1488 +#: admin/em-options.php:1499 +#, php-format +msgid "%s Capabilities" +msgstr "%s muligheder" + +#@ dbem +#: admin/em-options.php:1472 +#: admin/em-options.php:1482 +#: admin/em-options.php:1490 +#, php-format +msgid "Users can publish %s and skip any admin approval" +msgstr "Brugere kan udgive %s uden admin godkendelse" + +#@ dbem +#: admin/em-options.php:1473 +#: admin/em-options.php:1483 +#: admin/em-options.php:1491 +#, php-format +msgid "User can delete other users %s" +msgstr "Bruger kan slette andre brugeres %s" + +#@ dbem +#: admin/em-options.php:1474 +#: admin/em-options.php:1484 +#: admin/em-options.php:1492 +#, php-format +msgid "User can edit other users %s" +msgstr "Bruger kan redigere andre brugeres %s" + +#@ dbem +#: admin/em-options.php:1475 +#: admin/em-options.php:1485 +#: admin/em-options.php:1493 +#, php-format +msgid "User can delete their own %s" +msgstr "Bruger kan slette egne %s" + +#@ dbem +#: admin/em-options.php:1476 +#: admin/em-options.php:1486 +#: admin/em-options.php:1494 +#, php-format +msgid "User can create and edit %s" +msgstr "Bruger kan oprette og redigere %s" + +#@ dbem +#: admin/em-options.php:1477 +#: admin/em-options.php:1495 +#, php-format +msgid "User can view private %s" +msgstr "Bruger kan se private %s" + +#@ dbem +#: admin/em-options.php:1480 +#: em-posts.php:184 +msgid "Recurring Event" +msgstr "Tilbagevendende event" + +#@ dbem +#: admin/em-options.php:1482 +#: admin/em-options.php:1483 +#: admin/em-options.php:1484 +#: admin/em-options.php:1485 +#: admin/em-options.php:1486 +#: events-manager.php:281 +#: events-manager.php:282 +#: events-manager.php:283 +#: events-manager.php:284 +#: events-manager.php:285 +msgid "recurring events" +msgstr "tilbagevendende events" + +#@ dbem +#: admin/em-options.php:1496 +msgid "User can use other user locations for their events." +msgstr "Bruger kan benytte andre brugerlokationer til egne events." + +#@ dbem +#: admin/em-options.php:1501 +#, php-format +msgid "User can delete %s categories and tags." +msgstr "Bruger kan slette %s kategorier og tags." + +#@ dbem +#: admin/em-options.php:1502 +#, php-format +msgid "User can edit %s categories and tags." +msgstr "Bruger kan redigere %s kategorier og tags." + +#@ dbem +#: admin/em-options.php:1506 +msgid "User can upload images along with their events and locations." +msgstr "Bruger kan overføre billeder sammen med deres events og lokationer." + +#@ dbem +#: admin/em-options.php:1566 +msgid "Uninstall/Reset" +msgstr "Afinstaller/Nulstil" + +#@ dbem +#: admin/em-options.php:1568 +msgid "Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data." +msgstr "Benyt knapperne herunder for at afinstallere Events Manager og fjerne det helt fra dit system, eller til at nulstille Events Manager til original-indstillinger og bibeholde dine event data." + +#@ dbem +#: admin/em-options.php:1570 +msgid "Reset" +msgstr "Nulstil" + +#@ dbem +#: buddypress/bp-em-activity.php:57 +#, php-format +msgid "%s added the event %s to %s." +msgstr "%s tilføjede event %s til %s." + +#@ dbem +#: buddypress/bp-em-core.php:51 +#, php-format +msgid "Search %s..." +msgstr "Søg %s..." + +#@ dbem +#: buddypress/screens/my-events.php:47 +#: em-events.php:150 +msgid "Reschedule Events" +msgstr "Omlæg tidsplan for events" + +#@ dbem +#: classes/em-bookings-table.php:39 +msgid "Confirmed" +msgstr "Bekræftet" + +#@ dbem +#: classes/em-bookings-table.php:42 +msgid "Needs Attention" +msgstr "Behøver din opmærksomhed" + +#@ dbem +#: classes/em-bookings-table.php:43 +msgid "Incomplete Bookings" +msgstr "Ufuldstændige tilmeldinger" + +#@ dbem +#: classes/em-bookings-table.php:45 +msgid "Awaiting Offline Payment" +msgstr "Afventer Offline betaling" + +#@ dbem +#: classes/em-bookings-table.php:65 +msgid "Phone Number" +msgstr "Telefonnummer" + +#@ dbem +#: classes/em-bookings-table.php:69 +msgid "Actions" +msgstr "Handlinger" + +#@ dbem +#: classes/em-bookings-table.php:195 +msgid "Bookings Table Settings" +msgstr "Tilmeldings-tabelindstillinger" + +#@ dbem +#: classes/em-bookings-table.php:196 +msgid "Modify what information is displayed in this booking table." +msgstr "Tilpas de informationer som skal vises i denne tilmeldingstabel." + +#@ dbem +#: classes/em-bookings-table.php:198 +msgid "Collumns to show" +msgstr "Kollonner der skal vises" + +#@ dbem +#: classes/em-bookings-table.php:268 +#, php-format +msgid "%s Rows" +msgstr "%s rækker" + +#@ dbem +#: classes/em-bookings-table.php:287 +msgid "Displaying Event" +msgstr "Viser event" + +#@ dbem +#: classes/em-bookings-table.php:289 +msgid "Displaying User" +msgstr "Viser bruger" + +#@ dbem +#: classes/em-bookings-table.php:332 +msgid "No bookings." +msgstr "Ingen tilmeldinger." + +#@ dbem +#: classes/em-bookings-table.php:443 +#: classes/em-bookings-table.php:451 +#: classes/em-bookings-table.php:459 +msgid "Unpprove" +msgstr "Afvise" + +#@ dbem +#: classes/em-categories-taxonomy.php:35 +#, php-format +msgid "Choose a color for your category. You can access this using the %s placeholder." +msgstr "Vælg en farve til din kategori. Du kan tilgÃ¥ dette ved at benytte %s placeholderen." + +#@ dbem +#: classes/em-categories-taxonomy.php:46 +msgid "Choose/Upload Image" +msgstr "Vælg/Overfør billede" + +#@ dbem +#: classes/em-categories-taxonomy.php:47 +#, php-format +msgid "Choose an image for your category, which can be displayed using the %s placeholder." +msgstr "Vælg et billede til din kategori, som kan vises ved brug af %s pladsholder." + +#@ dbem +#: classes/em-event-post-admin.php:42 +#, php-format +msgid "If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, detach it." +msgstr "Hvis du opdaterer data pÃ¥ denne event og gemmer, kan det blive overskrevet hvis du efterfølgende redigerer den tilbagevende-eventskabelon. For at gøre den uafhængig, fjern tilkytningen." + +#@ dbem +#: classes/em-event-post-admin.php:43 +#, php-format +msgid "To manage the whole set, edit the recurring event template." +msgstr "For at administrerer hele sættet, rediger den tilbagevendende-eventskabelon." + +#@ dbem +#: classes/em-event-post-admin.php:83 +msgid "Your event details are incorrect and recurrences cannot be created, please correct these errors first:" +msgstr "Dine eventdetaljer er ukorrekte og gentagelser kan ikke oprettes, ret venligst disse fejl først:" + +#@ dbem +#: classes/em-event-post-admin.php:85 +#: classes/em-location-post-admin.php:59 +#, php-format +msgid "Your %s details are incorrect and cannot be published, please correct these errors first:" +msgstr "Dine %s detaljer er ukorrekte og kan ikke udgives, ret venligst disse fejl først:" + +#@ dbem +#: classes/em-event-post-admin.php:200 +#: classes/em-event-post-admin.php:373 +msgid "Site Categories" +msgstr "Hjemmeside-kategorier" + +#@ dbem +#: classes/em-event-post-admin.php:357 +msgid "Recurrences" +msgstr "Gentagelser" + +#@ default +#: classes/em-event-post.php:94 +#: classes/em-event-post.php:97 +#: classes/em-event-post.php:102 +#: classes/em-event-post.php:113 +#: classes/em-event-post.php:116 +#: classes/em-event-post.php:121 +#, php-format +msgid "View all posts in %s" +msgstr "Vis alle indlæg i %s" + +#@ default +#: classes/em-event-posts-admin.php:66 +msgid "View all categories" +msgstr "Vis alle kategorier" + +#@ default +#: classes/em-event-posts-admin.php:96 +#: classes/em-event-posts-admin.php:215 +msgid "Date and Time" +msgstr "Dato og tidspunkt" + +#@ dbem +#: classes/em-event-posts-admin.php:97 +#: classes/em-event-posts-admin.php:216 +msgid "Owner" +msgstr "Ejer" + +#@ dbem +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:133 +#: templates/buddypress/my-group-events.php:127 +#: templates/tables/events.php:134 +msgid "Edit Recurring Events" +msgstr "Rediger tilbagevendende Events" + +#@ dbem +#: classes/em-event-posts-admin.php:150 +msgid "Detach" +msgstr "Fjern tilknytning" + +#@ dbem +#: classes/em-event-posts-admin.php:163 +#, php-format +msgid "Duplicate %s" +msgstr "Kopier %s" + +#@ dbem +#: classes/em-event-posts-admin.php:163 +msgid "Duplicate" +msgstr "Kopier" + +#@ dbem +#: classes/em-event-posts-admin.php:187 +#, php-format +msgid "Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the events page." +msgstr "Tilpasning af disse events vil forÃ¥rsage, at alle gentagelser af enhver event slettes og genskabes, og at tidligere tilmeldinger slettes! Du kan redigere de enkelte gentagelser, og fjerne tilknytningen til tilbagevendende events ved at besøge eventssiden." + +#@ default +#: classes/em-event.php:432 +msgid "Event name" +msgstr "Eventnavn" + +#@ dbem +#: classes/em-event.php:469 +msgid "Since the event is repeated, you must specify an event end date greater than the start date." +msgstr "Da denne event er gentaget, skal du specificere en event slutdato som er senere end startdatoen." + +#@ dbem +#@ default +#: classes/em-event.php:551 +#: classes/em-event.php:553 +msgid "There were some errors saving your location." +msgstr "Der opstod nogle fejl, da din lokation blev gemt." + +#@ default +#: classes/em-event.php:551 +#, php-format +msgid "It will not be displayed on the website listings, to correct this you must edit your location directly." +msgstr "Det vil ikke blive vist i dine hjemmeside-tabeller, for at rette dette mÃ¥ du redigere din lokation direkte." + +#@ dbem +#: classes/em-event.php:592 +#: classes/em-location.php:356 +#, php-format +msgid "Something went wrong saving your %s to the index table. Please inform a site administrator about this." +msgstr "Noget gik galt da din %s skulle gemmes i indeks-tabellen. Informer venligst hjemmeside-administratoren om dette." + +#@ dbem +#: classes/em-event.php:597 +#: classes/em-event.php:612 +#: classes/em-location.php:361 +#: classes/em-location.php:368 +#, php-format +msgid "Successfully saved %s" +msgstr "Gemt %s" + +#@ dbem +#: classes/em-event.php:605 +#: classes/em-location.php:366 +#, php-format +msgid "Something went wrong updating your %s to the index table. Please inform a site administrator about this." +msgstr "Noget gik galt da din %s skulle opdateres i indeks-tabellen. Informer venligst hjemmeside-administratoren om dette." + +#@ dbem +#: classes/em-event.php:1211 +#: classes/em-location.php:657 +#, php-format +msgid "Edit %s" +msgstr "Rediger %s" + +#@ dbem +#: classes/em-event.php:1508 +msgid "Event detached." +msgstr "Event frakoblet." + +#@ dbem +#: classes/em-event.php:1508 +msgid "Undo" +msgstr "Fortryd" + +#@ dbem +#: classes/em-event.php:1512 +msgid "Event could not be detached." +msgstr "Event kunne ikke frakobles." + +#@ dbem +#: classes/em-event.php:1526 +msgid "Event re-attached to recurrence." +msgstr "Event tilknyttet gentagelse pÃ¥ ny." + +#@ dbem +#: classes/em-event.php:1529 +msgid "Event could not be attached." +msgstr "Event kunne ikke frakobles." + +#@ default +#@ dbem +#: classes/em-location.php:242 +#: widgets/em-locations.php:22 +msgid "Location name" +msgstr "Lokationsnavn" + +#@ dbem +#: em-actions.php:564 +#, php-format +msgid "Exported booking on %s" +msgstr "Eksporterede tilmeldinger den %s" + +#@ dbem +#: em-install.php:301 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_EVENTNAME on #_EVENTDATES. He wants to reserve #_BOOKINGSPACES spaces.
              Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
              Yours faithfully,
              Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) deltager i #_EVENTNAME den #_EVENTDATES. Han ønsker at tilmelde #_BOOKINGSPACES pladser.
              Nu er #_BOOKEDSPACES tilmeldte pladser, #_AVAILABLESPACES er stadig tilgængelige.
              Venlig hilsen,
              Events Manager - http://wp-events-plugin.com" + +#@ dbem +#: em-install.php:302 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_EVENTNAME on #_EVENTDATES. He wanted to reserve #_BOOKINGSPACES spaces.
              Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
              Yours faithfully,
              Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) har aflyst hans tilmelding til #_EVENTNAME den #_EVENTDATES. Han havde tilmeldt #_BOOKINGSPACES pladser.
              Nu er der #_BOOKEDSPACES tilmeldte pladser, #_AVAILABLESPACES er stadig tilgængelige.
              Venlig hilsen,
              Events Manager - http://wp-events-plugin.com" + +#@ dbem +#: em-install.php:303 +msgid "Dear #_BOOKINGNAME,
              you have successfully reserved #_BOOKINGSPACES space/spaces for #_EVENTNAME.
              When : #_EVENTDATES @ #_EVENTTIMES
              Where : #_LOCATIONNAME - #_LOCATIONFULLLINE
              Yours faithfully,
              #_CONTACTNAME" +msgstr "Kære #_BOOKINGNAME,
              du har tilmeldt #_BOOKINGSPACES plads/pladser til #_EVENTNAME.
              Hvornår: #_EVENTDATES @ #_EVENTTIMES
              Hvor: #_LOCATIONNAME - #_LOCATIONFULLLINE
              Venlig hilsen,
              #_CONTACTNAME" + +#@ dbem +#: em-install.php:304 +msgid "Dear #_BOOKINGNAME,
              You have requested #_BOOKINGSPACES space/spaces for #_EVENTNAME.
              When : #_EVENTDATES @ #_EVENTTIMES
              Where : #_LOCATIONNAME - #_LOCATIONFULLLINE
              Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "Kære #_BOOKINGNAME,
              Du har anmodet om #_BOOKINGSPACES plads/pladser til #_EVENTNAME.
              Hvornår: #_EVENTDATES @ #_EVENTTIMES
              Hvor: #_LOCATIONNAME - #_LOCATIONFULLLINE
              Din tilmelding afventer for nuværende godkendelse af vores administratorer. Du modtager automatisk en bekræftelse efter godkendelse .
              Venlig hilsen,
              #_CONTACTNAME" + +#@ dbem +#: em-install.php:305 +msgid "Dear #_BOOKINGNAME,
              Your requested booking for #_BOOKINGSPACES spaces at #_EVENTNAME on #_EVENTDATES has been rejected.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "Kære #_BOOKINGNAME,
              Din anmodning om tilmelding af #_BOOKINGSPACES pladser til #_EVENTNAME den #_EVENTDATES er blevet afvist.
              Venlig hilsen,
              #_CONTACTNAME" + +#@ dbem +#: em-install.php:306 +msgid "Dear #_BOOKINGNAME,
              Your requested booking for #_BOOKINGSPACES spaces at #_EVENTNAME on #_EVENTDATES has been cancelled.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "Kære #_BOOKINGNAME,
              Din tilmelding af #_BOOKINGSPACES pladser til #_EVENTNAME den #_EVENTDATES er blevet aflyst.
              Venlig hilsen,
              #_CONTACTNAME" + +#@ dbem +#: em-install.php:307 +msgid "Dear #_CONTACTNAME,
              Your event #_EVENTNAME on #_EVENTDATES has been approved.
              You can view your event here: #_EVENTURL" +msgstr "Kære #_CONTACTNAME,
              Din event #_EVENTNAME den #_EVENTDATES er blevet godkendt.
              Du kan se din event her: #_EVENTURL" + +#@ dbem +#: em-install.php:308 +msgid "A new event has been submitted by #_CONTACTNAME.
              Name : #_EVENTNAME
              Date : #_EVENTDATES
              Time : #_EVENTTIMES
              Please visit #_EDITEVENTURL to review this event for approval." +msgstr "Der er tilføjet en ny event af #_CONTACTNAME.
              Navn: #_EVENTNAME
              Dato: #_EVENTDATES
              Tid: #_EVENTTIMES
              Besøg venligst #_EDITEVENTURL for at gennemse denne event for godkendelse." + +#@ dbem +#: em-install.php:338 +msgid "All Cities/Towns" +msgstr "Alle byer" + +#@ dbem +#: em-install.php:342 +#: em-install.php:345 +msgid "You have successfully submitted your event, which will be published pending approval." +msgstr "Du har tilføjet din event med succes, der vil blive udgivet som afventer godkendelse." + +#@ dbem +#: em-install.php:348 +msgid "Submitted Event Awaiting Approval" +msgstr "Tilføjet event afventer godkendelse" + +#@ dbem +#: em-install.php:398 +msgid "All Day" +msgstr "Hele dagen" + +#@ dbem +#: em-install.php:448 +msgid "
            • No events in this tag
            • " +msgstr "
            • Ingen events pÃ¥ denne tag
            • " + +#@ dbem +#: em-install.php:489 +msgid "more..." +msgstr "mere..." + +#@ dbem +#: em-install.php:529 +msgid "You are currently attending this event." +msgstr "Du deltager i øjeblikket i denne event." + +#@ dbem +#: em-install.php:530 +msgid "Manage my bookings" +msgstr "Administrer mine tilmeldinger" + +#@ dbem +#: em-install.php:547 +msgid "New Booking" +msgstr "Ny tilmelding" + +#@ default +#@ dbem +#: em-posts.php:49 +#: em-posts.php:52 +msgid "Event Tag" +msgstr "Event-tag" + +#@ dbem +#: em-posts.php:53 +msgid "Search Event Tags" +msgstr "Søg event-tags" + +#@ dbem +#: em-posts.php:54 +msgid "Popular Event Tags" +msgstr "Populære event-tags" + +#@ dbem +#: em-posts.php:55 +msgid "All Event Tags" +msgstr "Alle event-tags" + +#@ dbem +#: em-posts.php:56 +msgid "Parent Event Tags" +msgstr "Forælder event-tags" + +#@ dbem +#: em-posts.php:57 +msgid "Parent Event Tag:" +msgstr "Forælder event-tag:" + +#@ dbem +#: em-posts.php:58 +msgid "Edit Event Tag" +msgstr "Rediger event-tag" + +#@ dbem +#: em-posts.php:59 +msgid "Update Event Tag" +msgstr "Opdater event-tag" + +#@ dbem +#: em-posts.php:60 +msgid "Add New Event Tag" +msgstr "Tilføj nyt event-tag" + +#@ dbem +#: em-posts.php:61 +msgid "New Event Tag Name" +msgstr "Nyt event-tag navn" + +#@ dbem +#: em-posts.php:62 +msgid "Seperate event tags with commas" +msgstr "Adskil event-tags med kommaer" + +#@ dbem +#: em-posts.php:63 +#: em-posts.php:100 +msgid "Add or remove events" +msgstr "Tilføj eller fjern events" + +#@ dbem +#: em-posts.php:64 +msgid "Choose from most used event tags" +msgstr "Vælg fra de mest benyttede event-tags" + +#@ dbem +#: em-posts.php:86 +#: em-posts.php:89 +msgid "Event Category" +msgstr "Eventkategori" + +#@ dbem +#: em-posts.php:90 +msgid "Search Event Categories" +msgstr "Søg eventkategorier" + +#@ dbem +#: em-posts.php:91 +msgid "Popular Event Categories" +msgstr "Populære eventkategorier" + +#@ dbem +#: em-posts.php:92 +msgid "All Event Categories" +msgstr "Alle eventkategorier" + +#@ dbem +#: em-posts.php:93 +msgid "Parent Event Categories" +msgstr "Forælder-eventkategorier" + +#@ dbem +#: em-posts.php:94 +msgid "Parent Event Category:" +msgstr "Forælder-eventkategori:" + +#@ dbem +#: em-posts.php:95 +msgid "Edit Event Category" +msgstr "Rediger eventkategori" + +#@ dbem +#: em-posts.php:96 +msgid "Update Event Category" +msgstr "Opdater eventkategori" + +#@ dbem +#: em-posts.php:97 +msgid "Add New Event Category" +msgstr "Tilføj ny eventkategori" + +#@ dbem +#: em-posts.php:98 +msgid "New Event Category Name" +msgstr "Nyt eventkategori-navn" + +#@ dbem +#: em-posts.php:99 +msgid "Seperate event categories with commas" +msgstr "Adskil event-kategorier med kommaer" + +#@ dbem +#: em-posts.php:101 +msgid "Choose from most used event categories" +msgstr "Vælg fra de mest benyttede event-kategorier" + +#@ dbem +#: em-posts.php:136 +msgid "Display events on your blog." +msgstr "Vis events pÃ¥ din blog." + +#@ dbem +#: em-posts.php:142 +msgid "Add New Event" +msgstr "Tilføj ny event" + +#@ dbem +#: em-posts.php:145 +msgid "New Event" +msgstr "Ny event" + +#@ dbem +#@ default +#: em-posts.php:146 +#: em-posts.php:191 +#: em-posts.php:237 +#: templates/tables/locations.php:62 +msgid "View" +msgstr "Vis" + +#@ dbem +#: em-posts.php:147 +msgid "View Event" +msgstr "Vis event" + +#@ dbem +#: em-posts.php:149 +msgid "No Events Found" +msgstr "Ingen event fundet" + +#@ dbem +#: em-posts.php:150 +msgid "No Events Found in Trash" +msgstr "Ingen event fundet i papirkurven" + +#@ dbem +#: em-posts.php:151 +msgid "Parent Event" +msgstr "Forælder-event" + +#@ dbem +#: em-posts.php:180 +#: em-posts.php:183 +#: em-posts.php:185 +msgid "Recurring Events" +msgstr "Tilbagevendende events" + +#@ dbem +#: em-posts.php:181 +msgid "Recurring Events Template" +msgstr "Tilbagevendende Events-skabelon" + +#@ dbem +#: em-posts.php:186 +#: em-posts.php:192 +msgid "Add Recurring Event" +msgstr "Tilføj tilbagevendende event" + +#@ dbem +#: em-posts.php:187 +msgid "Add New Recurring Event" +msgstr "Tilføj ny tilbagevendende event." + +#@ dbem +#: em-posts.php:189 +msgid "Edit Recurring Event" +msgstr "Rediger tilbagevendende event" + +#@ dbem +#: em-posts.php:190 +msgid "New Recurring Event" +msgstr "Ny tilbagevendende event" + +#@ dbem +#: em-posts.php:193 +msgid "Search Recurring Events" +msgstr "Søg tilbagevendende events" + +#@ dbem +#: em-posts.php:194 +msgid "No Recurring Events Found" +msgstr "Ingen tilbagevendende events fundet" + +#@ dbem +#: em-posts.php:195 +msgid "No Recurring Events Found in Trash" +msgstr "Ingen tilbagevendende events fundet i papirkurven" + +#@ dbem +#: em-posts.php:196 +msgid "Parent Recurring Event" +msgstr "Forælder-tilbagevendende-event" + +#@ dbem +#: em-posts.php:227 +msgid "Display locations on your blog." +msgstr "Vis lokationer pÃ¥ din blog." + +#@ dbem +#: em-posts.php:233 +msgid "Add New Location" +msgstr "Tilføj ny lokation" + +#@ dbem +#: em-posts.php:236 +msgid "New Location" +msgstr "Ny lokation" + +#@ dbem +#: em-posts.php:238 +msgid "View Location" +msgstr "Se lokation" + +#@ dbem +#: em-posts.php:239 +msgid "Search Locations" +msgstr "Søg lokationer" + +#@ dbem +#: em-posts.php:240 +msgid "No Locations Found" +msgstr "Ingen lokationer fundet" + +#@ dbem +#: em-posts.php:241 +msgid "No Locations Found in Trash" +msgstr "Ingen lokationer fundet i papirkurven" + +#@ dbem +#: em-posts.php:242 +msgid "Parent Location" +msgstr "Forældre lokation" + +#@ dbem +#: em-template-tags.php:297 +msgid "You must log in to view and manage your events." +msgstr "Du skal logge ind for at se og administrere dine events." + +#@ dbem +#: em-template-tags.php:388 +msgid "You must log in to view and manage your locations." +msgstr "Du skal logge ind for at se og administrere dine lokationer." + +#@ dbem +#: em-template-tags.php:406 +msgid "You must log in to view and manage your bookings." +msgstr "Du skal logge ind for at se og administrere dine tilmeldinger." + +#@ dbem +#: events-manager.php:235 +msgid "Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events." +msgstr "Er du sikker pÃ¥ at du vil fjerne tilknytningen til denne event? Hvis du gør dette, vil den være uafhængig af den gentaget række af events." + +#@ dbem +#: events-manager.php:236 +msgid "This cannot be undone." +msgstr "Dette kan ikke fortrydes." + +#@ dbem +#: events-manager.php:236 +msgid "All events will be moved to trash." +msgstr "Alle events vil blive flyttet til papirkurven." + +#@ dbem +#: events-manager.php:237 +msgid "Are you sure you want to delete all recurrences of this event?" +msgstr "Er du sikker pÃ¥ at du vil slette alle gentagelser af denne event?" + +#@ dbem +#: events-manager.php:278 +#: events-manager.php:292 +#, php-format +msgid "You cannot read private %s" +msgstr "Du kan ikke læse private %s" + +#@ dbem +#: events-manager.php:293 +#, php-format +msgid "You cannot view others %s" +msgstr "Du kan ikke se andres %s" + +#@ dbem +#: events-manager.php:299 +msgid "You do not have permission to upload images" +msgstr "Du har ikke tilladelse til at overføre billeder" + +#@ default +#: templates/forms/event/attributes.php:51 +msgid "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Hvis du ser nogen attributter herunder, betyder det at de ikke længere er i brug i Events Manager fomater. For at tilføje dem, skal du tilføje den brugerdefinerede attribut igen til en formateringsindstilling pÃ¥ indstillingssiden. For at fjerne nogen af disse afskrevne attributter, give den en tom værdi og gem." + +#@ dbem +#: templates/forms/event/attributes.php:83 +#: templates/forms/location/attributes.php:83 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings > General to add attribute placeholders." +msgstr "For at kunne benytte attributter, skal du definere nogle i din skabelon, ellers vil de aldrig blive vist. GÃ¥ til events>Indstillinger>Generelt, for at tilføje attribut pladsholdere." + +#@ dbem +#: templates/forms/event/bookings.php:115 +msgid "Total Spaces" +msgstr "Antal pladser i alt" + +#@ dbem +#: templates/forms/event/bookings.php:117 +msgid "Individual tickets with remaining spaces will not be available if total booking spaces reach this limit. Leave blank for no limit." +msgstr "Individuelle billetter med ledige pladser vil ikke være tilgængelige, hvis det maksimale antal tilmeldinger overskrides. Lad denne være tom for ubegrænset antal tilmeldinger." + +#@ dbem +#: templates/forms/event/group.php:26 +msgid "No groups defined yet." +msgstr "Ingen grupper defineret endnu." + +#@ default +#: templates/forms/event/location.php:9 +msgid "This event does not have a physical location." +msgstr "Denne event har ingen fysisk lokation." + +#@ default +#: templates/forms/event/location.php:31 +msgid "No Location" +msgstr "Ingen lokation" + +#@ dbem +#: templates/forms/event/recurring-when.php:53 +#: templates/forms/event/when-with-recurring.php:13 +msgid "Recurrences span from " +msgstr "Gentagelser strækker sig fra " + +#@ dbem +#: templates/forms/event/recurring-when.php:61 +#: templates/forms/event/when-with-recurring.php:23 +msgid "Events start from" +msgstr "Events starter fra" + +#@ dbem +#: templates/forms/event/recurring-when.php:65 +#: templates/forms/event/when-with-recurring.php:28 +#: templates/forms/event/when.php:20 +msgid "All day" +msgstr "Hele dagen" + +#@ dbem +#: templates/forms/event/recurring-when.php:68 +#: templates/forms/event/when-with-recurring.php:74 +msgid "Each event lasts" +msgstr "Hver event varer" + +#@ dbem +#: templates/forms/event/recurring-when.php:70 +#: templates/forms/event/when-with-recurring.php:76 +msgid "day(s)" +msgstr "dag(e)" + +#@ dbem +#: templates/forms/event/when-with-recurring.php:11 +msgid "This is a recurring event." +msgstr "Dette er en tilbagevendende event." + +#@ dbem +#: templates/forms/event/when-with-recurring.php:14 +#: templates/forms/event/when.php:8 +msgid "From " +msgstr "Fra " + +#@ dbem +#: templates/forms/event/when-with-recurring.php:24 +#: templates/forms/event/when.php:16 +msgid "Event starts at" +msgstr "Event begynder " + +#@ dbem +#: templates/forms/event-editor.php:165 +msgid "Event Image" +msgstr "Eventbillede" + +#@ dbem +#: templates/forms/location/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Locations Manager template settings. Please add them the settings page" +msgstr "Du har ingen brugerdefinerede attributter i nogen af dine administrator lokations-skabelonindstillinger. Tilføj dem venligst pÃ¥ indstillingssiden" + +#@ default +#: templates/forms/location/attributes.php:51 +msgid "If you see any attributes under here, that means they're not used in Locations Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Hvis du ser nogen attributter herunder, betyder det at de ikke benyttes i Events Manager formats. For at tilføje dem, skal du tilføje den brugerdefinerede attribut igen til en formateringsindstilling pÃ¥ indstillingssiden. For at fjerne nogen af disse afskrevne attributter, give den en tom værdi og gem." + +#@ dbem +#: templates/forms/location-editor.php:52 +msgid "Details about the location." +msgstr "Detaljer om lokationen." + +#@ dbem +#: templates/forms/location-editor.php:85 +msgid "Location Image" +msgstr "Lokationsbillede" + +#@ dbem +#: templates/forms/ticket-form.php:15 +msgid "Enter a maximum number of spaces (required)." +msgstr "Indtast et maksimalt antal pladser (pÃ¥krævet)." + +#@ dbem +#: templates/placeholders/bookingbutton.php:8 +#, php-format +msgid "%s Submitted" +msgstr "%s tilføjet" + +#@ dbem +#: templates/placeholders/bookingbutton.php:9 +#: templates/placeholders/bookingbutton.php:13 +#, php-format +msgid "%s Error. Try again?" +msgstr "%s fejl. Prøv igen?" + +#@ dbem +#: templates/placeholders/bookingbutton.php:11 +msgid "Canceling..." +msgstr "Afbestiller..." + +#@ dbem +#: templates/placeholders/bookingbutton.php:13 +msgid "Cancellation" +msgstr "Afbestilling" + +#@ dbem +#: templates/tables/locations.php:76 +msgid "No locations have been inserted yet!" +msgstr "Der er endnu ikke indsat lokationer!" + +#@ dbem +#: widgets/em-locations.php:21 +msgid "Event start date/time, location name" +msgstr "Event-start dato/tid, lokationsnavn" + +#@ dbem +#: admin/em-options.php:872 +msgid "Start Date" +msgstr "Startdato" + +#@ dbem +#: admin/em-options.php:873 +msgid "Booking Date" +msgstr "Tilmeldingsdato" + +#@ dbem +#: admin/em-options.php:899 +msgid "Front-end management pages" +msgstr "Brugerflade administrator-sider" + +#@ dbem +#: admin/em-options.php:900 +#: admin/em-options.php:901 +#, php-format +msgid "Users can view, add and edit their %s on this page." +msgstr "Brugere kan se, tilføje og redigere deres %s pÃ¥ denne side." + +#@ dbem +#: admin/em-options.php:902 +#, php-format +msgid "Users can manage their %s on this page." +msgstr "Brugere kan administrere deres %s pÃ¥ denne side." + +#@ dbem +#: templates/forms/event/location.php:57 +msgid "Location Name:" +msgstr "Lokationsnavn:" + diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-de_DE.mo b/wp-content/plugins/events-manager/includes/langs/dbem-de_DE.mo new file mode 100644 index 0000000..ced5330 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-de_DE.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-de_DE.po b/wp-content/plugins/events-manager/includes/langs/dbem-de_DE.po new file mode 100644 index 0000000..48fb7e4 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-de_DE.po @@ -0,0 +1,6235 @@ +#@ dbem +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.171\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-09-20 20:44:48+00:00\n" +"PO-Revision-Date: 2012-02-24 13:39+0100\n" +"Last-Translator: Marcus Sykes \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" + +#: buddypress/bp-em-activity.php:48 +#, php-format +msgid "%s added the event %s" +msgstr "%s fügt die Veranstaltung %s hinzu" + +#: buddypress/bp-em-activity.php:86 +#, php-format +msgid "%s is attending %s." +msgstr "%s besucht %s." + +#: buddypress/bp-em-activity.php:88 +#, php-format +msgid "%s will not be attending %s anymore." +msgstr "%s wird an %s nicht mehr teilnehmen." + +#: buddypress/bp-em-activity.php:94 +#, fuzzy, php-format +msgid "%s is attending %s of the group %s." +msgstr "%s besucht %s." + +#: buddypress/bp-em-activity.php:96 +#, fuzzy, php-format +msgid "%s will not be attending %s of group %s anymore." +msgstr "%s wird an %s nicht mehr teilnehmen." + +#: admin/em-ms-options.php:165 +#: admin/em-options.php:397 +#: admin/em-options.php:435 +#: admin/em-options.php:850 +#: buddypress/bp-em-core.php:12 +#: buddypress/bp-em-core.php:51 +#: buddypress/bp-em-core.php:79 +#: buddypress/bp-em-core.php:147 +#: buddypress/bp-em-core.php:174 +#: buddypress/screens/profile.php:27 +#: em-actions.php:102 +#: em-install.php:336 +#: em-install.php:379 +#: em-install.php:429 +#: em-install.php:430 +#: em-install.php:454 +#: em-install.php:672 +#: em-posts.php:116 +#: em-posts.php:119 +#: em-posts.php:121 +#: em-template-tags.php:179 +#: widgets/em-events.php:13 +msgid "Events" +msgstr "Veranstaltungen" + +#: admin/em-options.php:1031 +#: em-functions.php:473 +msgid "Yes" +msgstr "Ja" + +#: admin/em-options.php:1032 +#: em-functions.php:473 +msgid "No" +msgstr "Nein" + +#: buddypress/bp-em-notifications.php:24 +#: buddypress/bp-em-notifications.php:26 +#: buddypress/bp-em-notifications.php:33 +#: buddypress/bp-em-notifications.php:35 +#: buddypress/bp-em-notifications.php:41 +#: buddypress/bp-em-notifications.php:43 +#: em-install.php:525 +#: em-install.php:709 +#: em-install.php:762 +msgid "My Bookings" +msgstr "Meine Reservierungen" + +#: buddypress/bp-em-notifications.php:24 +msgid "You have a pending booking" +msgstr "Sie haben einen unbestätigte Reservierung" + +#: buddypress/bp-em-notifications.php:26 +#, php-format +msgid "You have %s pending bookings" +msgstr "Sie haben %s unbestätigte Reservierung" + +#: buddypress/bp-em-notifications.php:33 +msgid "You have a confirmed booking" +msgstr "Sie haben eine bestätigte Reservierung" + +#: buddypress/bp-em-notifications.php:35 +#, php-format +msgid "You have %s confirmed bookings" +msgstr "Sie haben %s bestätigte Reservierungen" + +#: buddypress/bp-em-notifications.php:41 +msgid "A user cancelled a booking" +msgstr "Ein Benutzer hat eine Reservierung storniert" + +#: buddypress/bp-em-notifications.php:43 +#, php-format +msgid "%s users cancelled bookings." +msgstr "%s Benutzer haben Reservierungen storniert." + +#: buddypress/bp-em-core.php:122 +#: buddypress/screens/my-locations.php:32 +msgid "My Locations" +msgstr "Meine Veranstaltungsorte" + +#: buddypress/screens/my-locations.php:49 +#: em-events.php:166 +#: em-posts.php:216 +msgid "Edit Location" +msgstr "Veranstaltungsort Bearbeiten" + +#: buddypress/screens/my-locations.php:47 +#: em-events.php:164 +#: em-posts.php:213 +msgid "Add Location" +msgstr "Veranstaltungsort hinzufügen" + +#: buddypress/screens/group-events.php:20 +#: buddypress/screens/my-group-events.php:20 +msgid "Group Events" +msgstr "Gruppen-Veranstaltungen" + +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Sie sehen gerade Ihre öffentliche Seite und sehen das, was andere Benutzer sehen können." + +#: buddypress/bp-em-core.php:110 +#: buddypress/screens/my-events.php:32 +#: templates/buddypress/profile.php:6 +msgid "My Events" +msgstr "Meine Veranstaltungen" + +#: buddypress/screens/my-events.php:50 +#: em-events.php:153 +#: em-posts.php:125 +msgid "Edit Event" +msgstr "Veranstaltung bearbeiten" + +#: buddypress/screens/my-events.php:53 +#: em-events.php:156 +#: em-posts.php:122 +#: templates/buddypress/profile.php:19 +msgid "Add Event" +msgstr "Hinzufügen Veranstaltung" + +#: buddypress/bp-em-core.php:99 +#: buddypress/screens/attending.php:23 +#: templates/buddypress/profile.php:24 +msgid "Events I'm Attending" +msgstr "Meine Teilnahmen" + +#: buddypress/bp-em-core.php:134 +#: buddypress/screens/my-bookings.php:30 +msgid "My Event Bookings" +msgstr "Reservierungen für meine Veranstaltungen" + +#: buddypress/bp-em-core.php:90 +msgid "My Profile" +msgstr "Mein Profil" + +#: em-posts.php:124 +#: em-posts.php:169 +#: em-posts.php:215 +#: templates/forms/event/bookings.php:86 +msgid "Edit" +msgstr "Bearbeiten" + +#: admin/bookings/em-events.php:101 +#: admin/bookings/em-pending.php:101 +#: admin/bookings/em-person.php:86 +#: admin/em-ms-options.php:162 +#: admin/em-options.php:293 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:858 +#: admin/em-options.php:920 +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#: admin/em-options.php:1364 +#: classes/em-event-posts-admin.php:163 +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-event.php:655 +#: classes/em-event.php:1159 +#: em-actions.php:102 +#: em-install.php:386 +#: em-install.php:416 +#: em-posts.php:120 +#: templates/forms/event-editor.php:12 +#: templates/templates/my-bookings.php:46 +msgid "Event" +msgstr "Veranstaltung" + +#: templates/templates/ical.php:12 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Kalender" + +#: widgets/em-calendar.php:17 +msgid "Display your events in a calendar widget." +msgstr "Zeigen Sie Ihre Veranstaltungen in einem Kalender-Widget." + +#: widgets/em-calendar.php:18 +msgid "Events Calendar" +msgstr "Veranstaltungskalender" + +#: widgets/em-calendar.php:60 +#: widgets/em-events.php:97 +#: widgets/em-locations.php:72 +msgid "Title" +msgstr "Titel" + +#: widgets/em-calendar.php:64 +msgid "Show Long Events?" +msgstr "Zeige Lange Veranstaltungen?" + +#: widgets/em-calendar.php:68 +#: widgets/em-events.php:145 +#, fuzzy +msgid "Category IDs" +msgstr "Kategorie" + +# @ dbem +#: widgets/em-calendar.php:70 +#: widgets/em-events.php:147 +msgid "1,2,3 or 2 (0 = all)" +msgstr "" + +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Veranstaltungsorte" + +#: widgets/em-locations.php:24 +msgid "Display a list of event locations on Events Manager." +msgstr "Zeigt eine Liste der Veranstaltungsorte auf Events Manager." + +#: widgets/em-locations.php:49 +msgid "No locations" +msgstr "Keine Veranstaltungsorte" + +#: widgets/em-locations.php:76 +msgid "Show number of locations" +msgstr "Zeige die Anzahl der Veranstaltungsorte" + +#: widgets/em-locations.php:80 +msgid "Scope of the locations" +msgstr "Umfang der Veranstaltungsorte" + +#: widgets/em-locations.php:103 +msgid "Order of the locations" +msgstr "Reihenfolge der Veranstaltungsorte" + +#: widgets/em-events.php:150 +#: widgets/em-locations.php:110 +msgid "List item format" +msgstr "Listenelement-Format" + +#: widgets/em-events.php:22 +#: widgets/em-events.php:73 +#: widgets/em-events.php:159 +msgid "all events" +msgstr "alle Veranstaltungen" + +#: widgets/em-events.php:30 +msgid "Display a list of events on Events Manager." +msgstr "Zeigt eine Liste der Veranstaltungen auf Events Manager." + +#: widgets/em-events.php:70 +msgid "No events" +msgstr "Keine Veranstaltungen" + +#: widgets/em-events.php:101 +msgid "Number of events" +msgstr "Anzahl Veranstaltungen" + +#: widgets/em-events.php:106 +msgid "Scope" +msgstr "Umfang" + +#: widgets/em-events.php:116 +#: widgets/em-locations.php:90 +msgid "Order By" +msgstr "Sortieren nach" + +#: widgets/em-events.php:25 +msgid "start date, start time, event name" +msgstr "Startdatum, Startzeit, Event-Namen" + +#: widgets/em-events.php:26 +msgid "name, start date, start time" +msgstr "Name, Startdatum, Startzeit" + +#: widgets/em-events.php:27 +msgid "name, end date, end time" +msgstr "Namen, Enddatum, Endzeit" + +#: widgets/em-events.php:28 +msgid "end date, end time, event name" +msgstr "Enddatum, Endzeit, Veranstaltungsname" + +#: widgets/em-events.php:129 +msgid "Order" +msgstr "Bestellen/Sortieren" + +#: admin/em-options.php:476 +#: admin/em-options.php:479 +#: admin/em-options.php:530 +#: admin/em-options.php:627 +#: admin/em-options.php:630 +#: admin/em-options.php:677 +#: admin/em-options.php:680 +#: admin/em-options.php:767 +#: admin/em-options.php:770 +#: widgets/em-events.php:133 +#: widgets/em-locations.php:105 +msgid "Ascending" +msgstr "aufsteigend" + +#: admin/em-options.php:477 +#: admin/em-options.php:480 +#: admin/em-options.php:531 +#: admin/em-options.php:628 +#: admin/em-options.php:631 +#: admin/em-options.php:678 +#: admin/em-options.php:681 +#: admin/em-options.php:768 +#: admin/em-options.php:771 +#: widgets/em-events.php:134 +#: widgets/em-locations.php:106 +msgid "Descending" +msgstr "absteigend" + +#: widgets/em-events.php:154 +msgid "Show all events link at bottom?" +msgstr "Alle Veranstaltungen Link am Ende anzeigen?" + +#: widgets/em-events.php:158 +msgid "All events link text?" +msgstr "Alle Veranstaltungen Link-Text?" + +#: admin/bookings/em-events.php:14 +#: em-functions.php:160 +msgid "All events" +msgstr "Alle Veranstaltungen" + +#: admin/bookings/em-events.php:15 +#: em-functions.php:161 +msgid "Future events" +msgstr "Zukünftige Veranstaltungen" + +#: admin/bookings/em-events.php:13 +#: em-functions.php:162 +msgid "Past events" +msgstr "Vergangene Veranstaltungen" + +#: em-functions.php:163 +msgid "Today's events" +msgstr "Heutige Veranstaltungen" + +#: em-functions.php:164 +msgid "Tomorrow's events" +msgstr "Veranstaltungen von morgen" + +#: em-functions.php:165 +msgid "Events this month" +msgstr "Veranstaltungen in diesem Monat" + +#: em-functions.php:166 +msgid "Events next month" +msgstr "Veranstaltungen im nächsten Monat" + +#: em-functions.php:167 +#, fuzzy +msgid "Events current and next month" +msgstr "Veranstaltungen im nächsten Monat" + +#: em-functions.php:168 +msgid "Events within 2 months" +msgstr "Veranstaltungen innerhalb von 2 Monaten" + +#: em-functions.php:169 +msgid "Events within 3 months" +msgstr "Veranstaltungen innerhalb von 3 Monaten" + +#: em-functions.php:170 +msgid "Events within 6 months" +msgstr "Veranstaltungen innerhalb von 6 Monaten" + +#: em-functions.php:171 +msgid "Events within 12 months" +msgstr "Veranstaltungen innerhalb von 12 Monaten" + +#: em-functions.php:224 +msgid "Trying to perform an illegal action." +msgstr "Versuch, eine illegale Aktion auszuführen." + +#: em-functions.php:296 +msgid "ERROR: Please enter a username." +msgstr "FEHLER: Bitte geben Sie einen Benutzernamen ein." + +#: em-functions.php:298 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "FEHLER: Dieser Benutzername ist ungültig, da er nicht zugelassene Zeichen verwendet. Bitte geben Sie einen gültigen Benutzernamen ein." + +#: em-functions.php:301 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "FEHLER: Dieser Benutzername ist bereits registriert, wählen Sie bitte einen anderen." + +#: em-actions.php:270 +#: em-functions.php:306 +msgid "ERROR: Please type your e-mail address." +msgstr "FEHLER: Bitte geben Sie Ihre E-Mail-Adresse ein." + +#: em-actions.php:273 +#: em-functions.php:308 +msgid "ERROR: The email address isn’t correct." +msgstr "FEHLER: Die E-Mail-Adresse ist nicht korrekt." + +#: em-functions.php:311 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "FEHLER: Diese E-Mail ist bereits registriert, wählen Sie bitte eine andere." + +#: em-functions.php:331 +#, php-format +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "FEHLER: Sie konnten nicht registriert werden. Bitte kontaktieren Sie den Adinistrator !" + +#: em-functions.php:366 +#, php-format +msgid "New user registration on your blog %s:" +msgstr "Registrierung eines neuen Benutzers auf Deinem Blog %s:" + +#: em-functions.php:367 +#, php-format +msgid "Username: %s" +msgstr "Benutzername: %s" + +#: em-functions.php:368 +#, php-format +msgid "E-mail: %s" +msgstr "E-mail: %s" + +#: em-functions.php:369 +#, php-format +msgid "[%s] New User Registration" +msgstr "[%s] Neuen Benutzer anmelden" + +#: em-functions.php:380 +#, php-format +msgid "[%s] Your username and password" +msgstr "[%s] Ihr Benutzername und Passwort" + +#: classes/em-ticket.php:47 +msgid "Standard Ticket" +msgstr "Standard-Ticket" + +#: classes/em-booking.php:134 +#: classes/em-ticket-booking.php:69 +#: classes/em-ticket.php:97 +msgid "Changes saved" +msgstr "Änderungen gespeichert" + +#: classes/em-ticket.php:102 +msgid "Ticket created" +msgstr "Ticket erstellt" + +#: classes/em-ticket.php:105 +#: classes/em-ticket.php:106 +#: classes/em-ticket.php:111 +#: classes/em-ticket.php:112 +msgid "There was a problem saving the ticket." +msgstr "Es gab ein Problem beim Speichern des Tickets." + +#: classes/em-event.php:461 +#: classes/em-ticket-booking.php:113 +#: classes/em-ticket.php:161 +msgid "Missing fields: " +msgstr "Fehlende Felder:" + +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "Sie können ein Ticket nicht löschen, solange noch Reservierungen dafür existieren." + +#: classes/em-location.php:106 +msgid "The location address" +msgstr "Die Adresse des Veranstaltungsorts" + +#: classes/em-location.php:106 +msgid "The location town" +msgstr "Die Stadt des Veranstaltungsorts" + +#: classes/em-location.php:106 +msgid "The country" +msgstr "Das Land" + +#: classes/em-event.php:428 +#: classes/em-location.php:224 +#: classes/em-location.php:239 +#: classes/em-location.php:241 +msgid " is required." +msgstr "ist erforderlich." + +#: admin/em-bookings.php:109 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:334 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:942 +#: admin/em-options.php:1382 +#: classes/em-event-posts-admin.php:95 +#: classes/em-event-posts-admin.php:214 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#: classes/em-location.php:618 +#: em-actions.php:180 +#: em-posts.php:211 +#: templates/buddypress/group-events.php:43 +#: templates/buddypress/my-group-events.php:43 +#: templates/forms/location-editor.php:32 +#: templates/tables/events.php:52 +msgid "Location" +msgstr "Veranstaltungsort" + +#: admin/em-ms-options.php:173 +#: admin/em-options.php:654 +#: admin/em-options.php:944 +#: admin/em-options.php:945 +#: classes/em-location-post-admin.php:59 +#: classes/em-location.php:332 +#: classes/em-location.php:342 +#: templates/forms/location-editor.php:6 +msgid "location" +msgstr "Veranstaltungsort" + +#: classes/em-location.php:348 +#, php-format +msgid "You do not have permission to create/edit %s." +msgstr "Sie haben keine Berechtigungu %s zu erstellen / bearbeiten." + +#: admin/em-ms-options.php:167 +#: admin/em-ms-options.php:172 +#: admin/em-ms-options.php:173 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:581 +#: admin/em-options.php:582 +#: admin/em-options.php:595 +#: admin/em-options.php:599 +#: admin/em-options.php:649 +#: admin/em-options.php:650 +#: admin/em-options.php:693 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: admin/em-options.php:1384 +#: admin/em-options.php:1385 +#: admin/em-options.php:1386 +#: admin/em-options.php:1387 +#: admin/em-options.php:1388 +#: admin/em-options.php:1389 +#: classes/em-location.php:348 +#: events-manager.php:309 +#: events-manager.php:310 +#: events-manager.php:311 +#: events-manager.php:312 +#: events-manager.php:313 +#: events-manager.php:314 +#: events-manager.php:315 +msgid "locations" +msgstr "Veranstaltungsorte" + +#: em-actions.php:104 +#, php-format +msgid "%s successfully deleted." +msgstr "%s erfolgreich gelöscht." + +#: em-actions.php:107 +#, php-format +msgid "%s could not be deleted." +msgstr "%s konnte nicht gelöscht werden." + +#: classes/em-booking.php:143 +#: classes/em-booking.php:144 +#: classes/em-booking.php:152 +#: classes/em-booking.php:163 +#: classes/em-booking.php:169 +#: classes/em-tickets-bookings.php:69 +#: classes/em-tickets-bookings.php:70 +msgid "There was a problem saving the booking." +msgstr "Es gab ein Problem beim Speichern der Reservierung." + +#: classes/em-tickets-bookings.php:99 +#: em-install.php:489 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "Reservierung kann nicht vorgenommen werden, nicht genug Plätze frei!" + +#: classes/em-tickets-bookings.php:163 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +#, php-format +msgid "You do not have the rights to manage this %s." +msgstr "Sie haben nicht die Rechte, %s zu bearbeiten." + +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#: classes/em-booking.php:414 +#: classes/em-booking.php:416 +#: classes/em-bookings.php:108 +#: classes/em-tickets-bookings.php:163 +msgid "Booking" +msgstr "Reservierung" + +#: admin/em-bookings.php:154 +#: admin/em-bookings.php:215 +#: admin/em-options.php:616 +#: admin/em-options.php:666 +#: admin/em-options.php:756 +#: classes/em-person.php:76 +#: templates/buddypress/group-events.php:41 +#: templates/buddypress/my-group-events.php:41 +#: templates/forms/bookingform/booking-fields.php:10 +#: templates/forms/tickets-form.php:4 +#: templates/tables/events.php:50 +#: templates/tables/locations.php:34 +#: templates/tables/locations.php:43 +#: templates/templates/bookings-event-printable.php:24 +msgid "Name" +msgstr "Name" + +#: classes/em-person.php:77 +msgid "Email" +msgstr "E-Mail" + +#: classes/em-people.php:28 +#: classes/em-person.php:78 +#: templates/forms/bookingform/booking-fields.php:14 +msgid "Phone" +msgstr "Telefon" + +#: classes/em-ticket-booking.php:78 +msgid "Ticket booking created" +msgstr "Ticket-Buchung erstellt" + +#: classes/em-ticket-booking.php:85 +#: classes/em-ticket-booking.php:86 +#: classes/em-ticket-booking.php:91 +#: classes/em-ticket-booking.php:92 +msgid "There was a problem saving the ticket booking." +msgstr "Es gab ein Problem beim Speichern der Ticket-Buchung." + +#: admin/em-options.php:744 +#: admin/em-options.php:973 +#: admin/em-options.php:974 +msgid "category" +msgstr "Kategorie" + +#: classes/em-bookings.php:108 +#, php-format +msgid "%s created." +msgstr "%s erstellt." + +#: classes/em-bookings.php:256 +#: classes/em-bookings.php:262 +#, php-format +msgid "Bookings %s. Mails Sent." +msgstr "Reservierung %s. E-Mails wurden versendet." + +#: classes/em-bookings.php:266 +msgid "An error occurred." +msgstr "Es ist ein Fehler aufgetreten." + +#: admin/bookings/em-events.php:136 +#: classes/em-booking.php:100 +#: classes/em-event-posts-admin.php:139 +#: classes/em-event.php:244 +#: templates/buddypress/group-events.php:94 +#: templates/buddypress/my-group-events.php:88 +#: templates/tables/events.php:17 +#: templates/tables/events.php:97 +msgid "Pending" +msgstr "In Bearbeitung" + +#: classes/em-booking.php:101 +#: classes/em-event.php:245 +msgid "Approved" +msgstr "Genehmigt" + +#: classes/em-booking.php:102 +msgid "Rejected" +msgstr "abgelehnt" + +#: classes/em-booking.php:103 +#: em-actions.php:358 +msgid "Cancelled" +msgstr "Abgesagt" + +#: classes/em-booking.php:104 +msgid "Awaiting Online Payment" +msgstr "Online Zahlung erwartet" + +#: classes/em-booking.php:105 +msgid "Awaiting Payment" +msgstr "Zahlung erwartet" + +#: classes/em-booking.php:139 +msgid "Your booking has been recorded" +msgstr "Ihre Reservierung wurde erfasst" + +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#, php-format +msgid "You cannot manage this %s." +msgstr "Sie dürfen %s nicht bearbeiten." + +#: classes/em-booking.php:222 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Sie versuchen, ein nicht vorhandenes Ticket für diese Veranstaltung zu reservieren." + +#: classes/em-booking.php:414 +#, php-format +msgid "%s deleted" +msgstr "%s gelöscht" + +#: classes/em-booking.php:416 +#, php-format +msgid "%s could not be deleted" +msgstr "%s konnte nicht gelöscht werden" + +#: classes/em-booking.php:462 +msgid "Not approved, spaces full." +msgstr "Nicht bestätigt, alle Plätze sind ausgebucht." + +#: classes/em-booking.php:470 +#, php-format +msgid "Booking %s." +msgstr "Reservierung %s." + +#: classes/em-booking.php:473 +msgid "Mail Sent." +msgstr "E-Mail verschickt." + +#: classes/em-booking.php:476 +#: classes/em-booking.php:477 +msgid "ERROR : Mail Not Sent." +msgstr "FEHLER: E-Mail nicht gesendet." + +#: classes/em-booking.php:483 +#: classes/em-booking.php:484 +#, php-format +msgid "Booking could not be %s." +msgstr "Reservierung konnte nicht %s." + +#: classes/em-booking.php:499 +msgid "Booking note successfully added." +msgstr "Notiz zur Reservierung erfolgreich hinzugefügt." + +#: classes/em-booking.php:636 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "Bestätigung per E-Mail konnte nicht an den Ansprechpartner der Veranstaltung gesendet werden. Der Registrierende sollte seine E-Mail bekommen haben (nur admins sehen diese Warnung)." + +#: classes/em-booking.php:643 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "Bestätigung per E-Mail konnte nicht an admin gesendet werden. Registrierender sollte seine E-Mail bekommen haben (nur admins sehen diese Warnung)." + +#: admin/em-options.php:971 +#: templates/buddypress/group-events.php:112 +#: templates/buddypress/my-group-events.php:106 +msgid "Category" +msgstr "Kategorie" + +#: admin/em-options.php:708 +#: admin/em-options.php:712 +#: admin/em-options.php:721 +#: admin/em-options.php:783 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: events-manager.php:318 +#: events-manager.php:319 +msgid "categories" +msgstr "Kategorien" + +#: classes/em-tickets.php:98 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "Sie können keine Tickets löschen, wenn Reservierungen dafür existieren. Bitte löschen sie zuerst die Reservierungen." + +#: classes/em-tickets.php:124 +msgid "Standard" +msgstr "Standard" + +#: classes/em-people.php:19 +msgid "User deleted by administrators" +msgstr "Benutzer wurde von einem Administrator gelöscht" + +#: classes/em-event-post-admin.php:37 +msgid "WARNING: This is a recurring event." +msgstr "ACHTUNG: Das ist eine wiederkehrende Veranstaltung." + +#: classes/em-event-post-admin.php:38 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Änderungen an dieser Veranstaltung führen dazu, dass alle Wiederholungen dieser Veranstaltung gelöscht und neu erstellt werden. Dabei werden alle Reservierungen gelöscht! Sie können die einzelnen Wiederholungen bearbeiten und diese von dieser Veranstaltung lösen." + +#: classes/em-event-post-admin.php:41 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "ACHTUNG: Dies ist eine Wiederholung aus einer sich wiederholenden Veranstaltung." + +#: classes/em-event-post-admin.php:48 +#, php-format +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "ACHTUNG: Dies ist eine Veranstaltung, die zur Gruppe \"%s\" gehört. Andere Gruppen-Administratoren können die Veranstaltung ändern." + +#: classes/em-event.php:617 +msgid "Something went wrong with the recurrence update..." +msgstr "Bei der Aktualisierung der Wiederholungen ist ein Fehler passiert ..." + +#: classes/em-event.php:617 +msgid "There was a problem saving the recurring events." +msgstr "Es gab ein Problem beim Speichern der wiederkehrenden Veranstaltungen." + +#: classes/em-event.php:655 +#, php-format +msgid "%s successfully duplicated." +msgstr "%s erfolgreich kopiert." + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:506 +#: admin/em-options.php:1395 +#: admin/em-options.php:1396 +#: classes/em-event-post-admin.php:85 +#: classes/em-event.php:582 +#: classes/em-event.php:594 +msgid "event" +msgstr "Veranstaltung" + +#: classes/em-event.php:442 +msgid "Events cannot start after they end." +msgstr "Veranstaltung kann nicht später starten als enden." + +#: classes/em-event.php:447 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Daten müssen richtig formatiert werden. Bitte benutzen Sie die Datumsauswahl." + +#: classes/em-event.php:1255 +#: templates/forms/bookingform/ticket-single.php:21 +#: templates/forms/bookingform/tickets-list.php:28 +msgid "N/A" +msgstr "Keine" + +#: classes/em-event.php:1265 +msgid "Profile" +msgstr "Profil" + +#: classes/em-event.php:1702 +msgid "Sunday" +msgstr "Sonntag" + +#: classes/em-event.php:1702 +msgid "Monday" +msgstr "Montag" + +#: classes/em-event.php:1702 +msgid "Tuesday" +msgstr "Dienstag" + +#: classes/em-event.php:1702 +msgid "Wednesday" +msgstr "Mittwoch" + +#: classes/em-event.php:1702 +msgid "Thursday" +msgstr "Donnerstag" + +#: classes/em-event.php:1702 +msgid "Friday" +msgstr "Freitag" + +#: classes/em-event.php:1702 +msgid "Saturday" +msgstr "Samstag" + +#: classes/em-event.php:1703 +#, php-format +msgid "the first %s of the month" +msgstr "das erste %s des Monats" + +#: classes/em-event.php:1703 +#, php-format +msgid "the second %s of the month" +msgstr "die zweite %s des Monats" + +#: classes/em-event.php:1703 +#, php-format +msgid "the third %s of the month" +msgstr "das dritte %s des Monats" + +#: classes/em-event.php:1703 +#, php-format +msgid "the fourth %s of the month" +msgstr "das vierte %s des Monats" + +#: classes/em-event.php:1703 +#, php-format +msgid "the last %s of the month" +msgstr "den letzten %s des Monats" + +#: classes/em-event.php:1704 +#, php-format +msgid "From %1$s to %2$s" +msgstr "von %1$s bis %2$s" + +#: classes/em-event.php:1706 +msgid "everyday" +msgstr "täglich" + +#: classes/em-event.php:1708 +#, php-format +msgid "every %s days" +msgstr "jeden %s. Tag" + +#: classes/em-event.php:1717 +msgid "every week" +msgstr "jede Woche" + +#: classes/em-event.php:1719 +#, php-format +msgid "every %s weeks" +msgstr "jede %s. Woche" + +#: classes/em-event.php:1730 +#, php-format +msgid "every %s months" +msgstr "jeden %s Monat" + +#: classes/em-object.php:872 +msgid "The image file is too big! Maximum size:" +msgstr "Die Bilddatei ist zu groß! Maximale Größe:" + +#: classes/em-object.php:877 +msgid "The image is too big! Maximum size allowed:" +msgstr "Das Bild ist zu groß! Maximale Größe zulässig:" + +#: classes/em-object.php:880 +msgid "The image is in a wrong format!" +msgstr "Das Bild hat ein falsches Format!" + +#: classes/em-mailer.php:84 +msgid "Please supply a valid email format." +msgstr "Bitte geben Sie ein eine gültige Email-Addresse ein." + +#: admin/em-options.php:1201 +msgid "Booking cancelled" +msgstr "Reservierung storniert" + +#: em-actions.php:370 +msgid "You must log in to cancel your booking." +msgstr "Sie müssen angemeldet sein, um ihre Reservierung zu stornieren." + +#: admin/em-bookings.php:251 +#: templates/forms/bookingform/tickets-list.php:8 +msgid "Ticket Type" +msgstr "Ticket-Typ" + +#: admin/em-bookings.php:156 +#: admin/em-bookings.php:253 +#: templates/forms/bookingform/ticket-single.php:9 +#: templates/forms/bookingform/tickets-list.php:10 +#: templates/forms/event/bookings.php:30 +#: templates/forms/ticket-form.php:9 +#: templates/forms/tickets-form.php:6 +msgid "Price" +msgstr "Preis" + +#: admin/bookings/em-cancelled.php:87 +#: admin/bookings/em-confirmed.php:88 +#: admin/bookings/em-pending.php:105 +#: admin/bookings/em-person.php:87 +#: admin/bookings/em-rejected.php:87 +#: admin/em-bookings.php:157 +#: admin/em-bookings.php:252 +#: templates/forms/bookingform/ticket-single.php:15 +#: templates/forms/bookingform/tickets-list.php:12 +#: templates/forms/ticket-form.php:11 +#: templates/templates/bookings-event-printable.php:27 +#: templates/templates/my-bookings.php:48 +msgid "Spaces" +msgstr "Plätze" + +#: admin/em-bookings.php:311 +#: templates/forms/bookingform/booking-fields.php:24 +#: templates/templates/bookings-event-printable.php:28 +msgid "Comment" +msgstr "Kommentar" + +#: templates/placeholders/bookingform.php:54 +msgid "Send your booking" +msgstr "Buchung abschicken" + +#: templates/placeholders/bookingform.php:71 +msgid "No more tickets available at this time." +msgstr "Aktuell sind keine Tickets verfügbar." + +#: templates/forms/ticket-form.php:12 +msgid "If blank, there's no space limit." +msgstr "Wenn leer, gibt es keine Begrenzung der Plätze." + +#: templates/forms/ticket-form.php:15 +msgid "Available from" +msgstr "Verfügbar ab" + +#: templates/forms/event/recurring-when.php:56 +#: templates/forms/event/recurring-when.php:63 +#: templates/forms/event/when-with-recurring.php:17 +#: templates/forms/event/when-with-recurring.php:18 +#: templates/forms/event/when-with-recurring.php:26 +#: templates/forms/event/when.php:11 +#: templates/forms/event/when.php:18 +#: templates/forms/ticket-form.php:18 +msgid "to" +msgstr "bis" + +#: templates/forms/ticket-form.php:21 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Fügen Sie einen Start-oder Enddatum (oder beides) ein, um die Verfügbarkeit der Ticket einzuschränken. Lassen Sie das Feld leer, um keine obere bzw. untere Grenze festzulegen." + +#: templates/forms/ticket-form.php:24 +msgid "Bookings must order between" +msgstr "Reservierungen muessen erfolgen zwischen " + +#: templates/forms/ticket-form.php:26 +#: templates/templates/events-search.php:38 +msgid "and" +msgstr "und" + +#: templates/forms/ticket-form.php:28 +msgid "spaces." +msgstr "Plätze." + +#: templates/forms/ticket-form.php:29 +msgid "Leave either blank for no upper/lower limit." +msgstr "Leer lassen für keine obere/untere Grenze." + +#: admin/em-bookings.php:155 +#: templates/forms/ticket-form.php:32 +#: templates/forms/tickets-form.php:5 +msgid "Description" +msgstr "Beschreibung" + +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:137 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +msgid "Unauthorized Access" +msgstr "Unberechtigter Zugriff" + +#: admin/em-ms-locations.php:39 +msgid "Add location" +msgstr "Standort hinzufügen" + +#: admin/em-ms-locations.php:42 +msgid "Edit location" +msgstr "Standort bearbeiten" + +#: templates/forms/location-editor.php:12 +msgid "required" +msgstr "erforderlich" + +#: templates/forms/location-editor.php:23 +msgid "Location Name" +msgstr "Standort-Name" + +#: templates/forms/location-editor.php:28 +msgid "The name of the location" +msgstr "Der Name des Veranstaltungsorts" + +#: templates/forms/location/where.php:4 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Google kann den Veranstaltungsort je besser finden, desto mehr Informationen Sie eingeben. Wenn Ihre Adresse nicht gefunden wird, probieren Sie sie aus auf maps.google.com, indem Sie alle unten angegebenen Felder durch Komma getrennt eingeben." + +#: templates/forms/event/location.php:69 +#: templates/forms/location/where.php:8 +msgid "Address:" +msgstr "Anschrift:" + +#: templates/forms/event/location.php:75 +#: templates/forms/location/where.php:14 +msgid "City/Town:" +msgstr "Stadt / Ort:" + +#: templates/forms/event/location.php:82 +#: templates/forms/location/where.php:20 +msgid "State/County:" +msgstr "Bundesland/Land:" + +#: templates/forms/event/location.php:89 +#: templates/forms/location/where.php:26 +msgid "Postcode:" +msgstr "Postleitzahl:" + +#: templates/forms/event/location.php:102 +#: templates/forms/location/where.php:39 +msgid "Country:" +msgstr "Land:" + +#: templates/forms/event/location.php:105 +#: templates/forms/location/where.php:42 +msgid "none selected" +msgstr "keine ausgewählt" + +#: templates/forms/event/location.php:122 +#: templates/forms/location/where.php:52 +msgid "Location not found" +msgstr "Veranstaltungsort nicht gefunden" + +#: templates/forms/event-editor.php:99 +#: templates/forms/location-editor.php:39 +msgid "Details" +msgstr "Details" + +#: templates/forms/location-editor.php:57 +msgid "No image uploaded for this location yet" +msgstr "Noch kein Bild für diesen Veranstaltungsort hochgeladen." + +#: templates/forms/event-editor.php:172 +#: templates/forms/location-editor.php:60 +msgid "Upload/change picture" +msgstr "Bild hochladen" + +#: templates/forms/event-editor.php:174 +#: templates/forms/location-editor.php:62 +#, fuzzy +msgid "Delete Image?" +msgstr "Löschen" + +#: templates/forms/location-editor.php:71 +msgid "Update location" +msgstr "Veranstaltungsort aktualisieren" + +#: admin/bookings/em-cancelled.php:85 +#: admin/bookings/em-confirmed.php:86 +#: admin/bookings/em-pending.php:103 +#: admin/bookings/em-rejected.php:85 +#: templates/forms/bookingform/booking-fields.php:18 +#: templates/templates/bookings-event-printable.php:25 +msgid "E-mail" +msgstr "E-mail" + +#: templates/forms/bookingform/login.php:3 +msgid "Log in if you already have an account with us." +msgstr "Melden Sie sich an, wenn Sie bereits ein Konto bei uns haben." + +#: templates/forms/bookingform/login.php:5 +msgid "Username" +msgstr "Benutzername" + +#: templates/forms/bookingform/login.php:9 +msgid "Password" +msgstr "Kennwort" + +#: templates/forms/bookingform/login.php:13 +msgid "Log In" +msgstr "Anmelden" + +#: templates/forms/bookingform/login.php:14 +msgid "Remember Me" +msgstr "Merken" + +#: templates/forms/bookingform/login.php:29 +msgid "Sign Up" +msgstr "Registrieren" + +#: templates/forms/bookingform/login.php:33 +msgid "Password Lost and Found" +msgstr "Kennwort verloren und gefunden" + +#: templates/forms/bookingform/login.php:33 +msgid "Lost your password?" +msgstr "Kennwort vergessen?" + +#: admin/em-bookings.php:100 +#: templates/forms/event-editor.php:30 +msgid "Event Name" +msgstr "Veranstaltungsname" + +#: templates/forms/event-editor.php:34 +msgid "The event name. Example: Birthday party" +msgstr "Titel der Veranstaltung. Beispiel: Geburtstagsparty" + +#: templates/forms/event/group.php:23 +#: templates/forms/event-editor.php:60 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Wählen Sie eine Gruppe, die Sie verwalten, der diese Verwaltung zugeordnet werden soll. Beachten Sie, dass alle anderen Admins der Gruppe die Buchung ändern können. Und Sie werden nicht in der Lage sein, das Ereignis von der Gruppe zu lösen, ohne es zu löschen." + +#: classes/em-event-post-admin.php:177 +#: templates/forms/event-editor.php:66 +msgid "When" +msgstr "Wann" + +#: templates/forms/event/when.php:23 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Diese Veranstaltung umfasst jeden Tag zwischen Beginn und Ende, mit der Start- und Endzeit an jedem dieser Tage." + +#: templates/forms/event/recurring-when.php:72 +#: templates/forms/event/when-with-recurring.php:78 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Für eine wiederkehrende Veranstaltung wird eine eintägige Veranstaltung für jeder wiederkehrenden Termin in diesem Zeitraum erstellt werden." + +#: templates/forms/event/recurring-when.php:10 +#: templates/forms/event/when-with-recurring.php:32 +msgid "This event repeats" +msgstr "Die Veranstaltung wiederholt sich" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Daily" +msgstr "Täglich" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Weekly" +msgstr "Wöchentlich" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Monthly" +msgstr "Monatlich" + +#: templates/forms/event/recurring-when.php:17 +#: templates/forms/event/when-with-recurring.php:39 +msgid "every" +msgstr "jede(r/n)" + +#: templates/forms/event/recurring-when.php:20 +#: templates/forms/event/when-with-recurring.php:42 +msgid "day" +msgstr "Tag" + +#: templates/forms/event/recurring-when.php:22 +#: templates/forms/event/when-with-recurring.php:44 +msgid "days" +msgstr "Tage" + +#: templates/forms/event/recurring-when.php:24 +#: templates/forms/event/when-with-recurring.php:46 +msgid "week on" +msgstr "Woche" + +#: templates/forms/event/recurring-when.php:26 +#: templates/forms/event/when-with-recurring.php:48 +msgid "weeks on" +msgstr "Wochen auf" + +#: templates/forms/event/recurring-when.php:28 +#: templates/forms/event/when-with-recurring.php:50 +msgid "month on the" +msgstr "Monat auf der" + +#: templates/forms/event/recurring-when.php:30 +#: templates/forms/event/when-with-recurring.php:52 +msgid "months on the" +msgstr "Monate auf der" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "first" +msgstr "erste" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "second" +msgstr "zweite" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "third" +msgstr "dritte" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "fourth" +msgstr "vierte" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "last" +msgstr "letzte" + +#: templates/forms/event/recurring-when.php:48 +#: templates/forms/event/when-with-recurring.php:71 +msgid "of each month" +msgstr "eines jeden Monats" + +#: classes/em-event-post-admin.php:179 +#: classes/em-event-post-admin.php:354 +#: classes/em-location-post-admin.php:109 +#: templates/forms/event-editor.php:93 +msgid "Where" +msgstr "Wo" + +#: templates/forms/event/location.php:28 +msgid "Location:" +msgstr "Veranstaltungsort:" + +#: templates/forms/event/location.php:60 +msgid "Name:" +msgstr "Name:" + +#: templates/forms/event/location.php:64 +msgid "Create a location or start typing to search a previously created location." +msgstr "Erstellen Sie einen Veranstaltungsort, oder fangen Sie an zu einzugeben, um einen zuvor erstellten Veranstaltungsort zu suchen." + +#: templates/forms/event/location.php:65 +msgid "You cannot edit saved locations here." +msgstr "Gespeicherte Veranstaltungsorte können hier nicht bearbeitet werden." + +#: templates/forms/event/location.php:65 +msgid "Reset this form to create a location." +msgstr "Um einen neuen Veranstaltungsort zu erstellen, setzen sie das Formular zurück." + +#: templates/forms/event/location.php:95 +#: templates/forms/location/where.php:32 +msgid "Region:" +msgstr "Region:" + +#: templates/forms/event/location.php:110 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Wenn sie dies hier zuerst ausfüllen, finden sie schnell bereits zuvor eingegebene Länder, Bundesländer/-staaten oder Regionen für dieses Land." + +#: templates/forms/event-editor.php:107 +msgid "Details about the event." +msgstr "Details über die Veranstaltung." + +#: templates/forms/event-editor.php:107 +#: templates/forms/location-editor.php:47 +msgid "HTML Allowed." +msgstr "HTML erlaubt." + +#: templates/forms/event-editor.php:116 +msgid "Category:" +msgstr "Kategorie:" + +#: templates/forms/event-editor.php:190 +msgid "Submit Event" +msgstr "Veranstaltung speichern" + +#: classes/em-event-post-admin.php:183 +#: classes/em-event-post-admin.php:356 +#: templates/forms/event-editor.php:180 +msgid "Bookings/Registration" +msgstr "Reservierung/Anmeldung" + +#: templates/forms/event/bookings.php:8 +msgid "Enable registration for this event" +msgstr "Reservierung/Anmeldung für diese Veranstaltung aktivieren" + +#: templates/forms/event/booking-stats.php:21 +msgid "manage bookings" +msgstr "Reservierungen verwalten" + +#: templates/forms/event/booking-stats.php:22 +msgid "printable view" +msgstr "Druckansicht" + +#: admin/em-bookings.php:98 +#: templates/forms/event/booking-stats.php:23 +msgid "export csv" +msgstr "CSV exportieren" + +#: templates/forms/event/bookings.php:23 +msgid "Tickets" +msgstr "Tickets" + +#: templates/forms/event/bookings.php:29 +msgid "Ticket Name" +msgstr "Ticket-Name" + +#: templates/forms/event/bookings.php:31 +msgid "Min/Max" +msgstr "Min/Max" + +#: templates/forms/event/bookings.php:32 +msgid "Start/End" +msgstr "Start/End" + +#: templates/forms/event/bookings.php:33 +msgid "Avail. Spaces" +msgstr "Verfügbare Plätze" + +#: admin/bookings/em-events.php:134 +#: templates/forms/event/bookings.php:34 +msgid "Booked Spaces" +msgstr "Reservierte Plätze" + +#: templates/forms/event/bookings.php:41 +msgid "Add new ticket" +msgstr "Neues Ticket hinzufügen" + +#: templates/forms/event/bookings.php:56 +msgid "Free" +msgstr "Frei" + +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-rejected.php:113 +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:100 +#: templates/buddypress/group-events.php:134 +#: templates/buddypress/my-group-events.php:94 +#: templates/buddypress/my-group-events.php:128 +#: templates/forms/event/bookings.php:88 +#: templates/tables/events.php:103 +#: templates/tables/events.php:134 +msgid "Delete" +msgstr "Löschen" + +#: templates/forms/event/bookings.php:90 +msgid "View Bookings" +msgstr "Zeige Reservierungen" + +#: events-manager.php:255 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Sind Sie sicher, dass Sie diese sich wiederholedne Veranstaltung verschieben wollen? Wenn Sie dies tun, verlieren Sie alle Reservierungsinformationen und die alte wiederkehrenden Veranstaltung werden gelöscht." + +#: events-manager.php:256 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Sind Sie sicher, dass Sie Reservierung deaktivieren wollen? Wenn Sie das tun und speichern, werden Sie alle bisherigen Reservierungen verlieren. Wenn Sie weitere Reservierungen verhindern wollen, reduzieren Sie die Anzahl der verfügbaren Plätze auf die Anzahl der bisherigen Reservierungen." + +#: templates/forms/tickets-form.php:2 +msgid "Create a ticket" +msgstr "Erstellen Sie ein Ticket" + +#: templates/forms/tickets-form.php:8 +msgid "Available ticket spaces" +msgstr "Verfügbare Tickets" + +#: templates/forms/tickets-form.php:10 +msgid "Start date of ticket availability" +msgstr "Startdatum der Verfügbarkeit der Tickets" + +#: templates/forms/tickets-form.php:11 +msgid "End date of ticket availability" +msgstr "Enddatum der Verfügbarkeit der Tickets" + +#: templates/forms/tickets-form.php:12 +msgid "Minimum tickets required per booking" +msgstr "Mindestzahl Tickets erforderlich pro Reservierung" + +#: templates/forms/tickets-form.php:13 +msgid "Maximum tickets required per booking" +msgstr "Maximale Anzahl Tickets pro Reservierung" + +#: templates/forms/tickets-form.php:19 +msgid "Add Ticket" +msgstr "Ticket hinzufügen" + +#: admin/em-ms-locations.php:29 +#: buddypress/screens/my-events.php:33 +#: buddypress/screens/my-locations.php:33 +msgid "Add New" +msgstr "Hinzufügen" + +#: em-events.php:129 +#: templates/tables/locations.php:8 +#, php-format +msgid "My %s" +msgstr "meine %s" + +#: admin/em-admin.php:45 +#: admin/em-ms-locations.php:28 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:399 +#: admin/em-options.php:594 +#: admin/em-options.php:595 +#: admin/em-options.php:935 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: classes/em-location-posts-admin.php:31 +#: em-actions.php:180 +#: em-install.php:386 +#: em-install.php:387 +#: em-install.php:685 +#: em-install.php:732 +#: em-posts.php:207 +#: em-posts.php:210 +#: em-posts.php:212 +#: templates/tables/locations.php:8 +#: templates/tables/locations.php:11 +msgid "Locations" +msgstr "Veranstaltungsorte" + +#: templates/tables/locations.php:11 +#, php-format +msgid "All %s" +msgstr "alle %s" + +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:57 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-rejected.php:49 +#: templates/tables/locations.php:18 +msgid "Bulk Actions" +msgstr "Sammel-Aktionen" + +#: admin/bookings/em-events.php:58 +#: templates/tables/locations.php:19 +msgid "Delete selected" +msgstr "Lösche ausgewählte" + +#: admin/bookings/em-events.php:60 +#: templates/tables/locations.php:21 +msgid "Apply" +msgstr "Anwenden" + +#: classes/em-location-posts-admin.php:40 +#: templates/tables/locations.php:35 +#: templates/tables/locations.php:44 +msgid "Address" +msgstr "Adresse" + +#: classes/em-location-posts-admin.php:42 +#: templates/tables/locations.php:36 +#: templates/tables/locations.php:45 +msgid "State" +msgstr "Bundesstaat" + +#: admin/em-options.php:614 +#: admin/em-options.php:664 +#: admin/em-options.php:754 +#: classes/em-location-posts-admin.php:43 +#: templates/tables/locations.php:37 +#: templates/tables/locations.php:46 +msgid "Country" +msgstr "Land" + +#: admin/bookings/em-events.php:102 +#: templates/buddypress/group-events.php:44 +#: templates/buddypress/my-group-events.php:44 +#: templates/tables/events.php:53 +msgid "Date and time" +msgstr "Datum und Uhrzeit" + +#: em-install.php:532 +#: templates/buddypress/group-events.php:29 +#: templates/buddypress/my-group-events.php:29 +#: templates/buddypress/profile.php:19 +msgid "No Events" +msgstr "Keine Veranstaltungen" + +# @ dbem +#: templates/buddypress/profile.php:37 +msgid "Not attending any events yet." +msgstr "" + +#: templates/tables/events.php:15 +msgid "Upcoming" +msgstr "Bevorstehende" + +#: admin/bookings/em-events.php:29 +#: templates/tables/events.php:19 +msgid "Past Events" +msgstr "Frühere Veranstaltungen" + +#: em-posts.php:129 +#: templates/tables/events.php:22 +#: templates/tables/events.php:24 +msgid "Search Events" +msgstr "Suche Veranstaltungen" + +#: admin/bookings/em-events.php:91 +msgid "no events" +msgstr "keine Veranstaltungen" + +#: admin/em-admin.php:38 +#: classes/em-event-posts-admin.php:136 +#: em-events.php:129 +#: templates/buddypress/group-events.php:91 +#: templates/buddypress/my-group-events.php:85 +#: templates/tables/events.php:94 +msgid "Bookings" +msgstr "Reservierungen" + +#: classes/em-event-posts-admin.php:137 +#: templates/buddypress/group-events.php:92 +#: templates/buddypress/my-group-events.php:86 +#: templates/tables/events.php:95 +#: templates/templates/bookings-event-printable.php:42 +msgid "Booked" +msgstr "Gebucht" + +#: templates/buddypress/group-events.php:105 +#: templates/buddypress/my-group-events.php:99 +#: templates/tables/events.php:108 +msgid "Duplicate this event" +msgstr "Diese Veranstaltung duplizieren" + +#: classes/em-event-posts-admin.php:144 +#: templates/buddypress/group-events.php:128 +#: templates/buddypress/my-group-events.php:122 +#: templates/tables/events.php:128 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "WARNUNG! Sie löschen alle Wiederholungen dieser Veranstaltung, einschließlich der Reservierungen und der Reservierungshistorie dafür. Um einzelne Reservierungsinformationen zu behalten, müssen Sie zu den einzelnen Veranstaltungen gehen und dort die Informationen sichern, oder die Veranstaltungen aus der Serie entfernen." + +#: templates/templates/bookings-event-printable.php:21 +msgid "Bookings data" +msgstr "Reservierungsinformationen" + +#: admin/bookings/em-cancelled.php:86 +#: admin/bookings/em-confirmed.php:87 +#: admin/bookings/em-pending.php:104 +#: admin/bookings/em-rejected.php:86 +#: templates/templates/bookings-event-printable.php:26 +msgid "Phone number" +msgstr "Telefonnummer" + +#: templates/templates/bookings-event-printable.php:47 +msgid "Available" +msgstr "Verfügbar" + +#: templates/placeholders/locationmap.php:15 +#: templates/templates/map-global.php:15 +msgid "Loading Map...." +msgstr "Lade Karte...." + +#: templates/templates/csv-event-bookings.php:16 +#, php-format +msgid "Booking details for \"%s\" as of %s" +msgstr "Reservierungsdaten für \"%s\" ab %s" + +#: admin/em-bookings.php:103 +#: templates/templates/my-bookings.php:47 +msgid "Date" +msgstr "Datum" + +#: admin/bookings/em-person.php:88 +#: admin/em-bookings.php:246 +#: templates/templates/my-bookings.php:49 +msgid "Status" +msgstr "Status" + +#: templates/templates/my-bookings.php:75 +msgid "Are you sure you want to cancel your booking?" +msgstr "Sind Sie sicher, dass Sie Ihre Reservierung stornieren wollen?" + +#: admin/em-options.php:130 +#: admin/em-options.php:147 +#: templates/templates/my-bookings.php:75 +msgid "Cancel" +msgstr "Stornieren" + +#: templates/templates/my-bookings.php:91 +msgid "You do not have any bookings." +msgstr "Sie haben noch keine Reservierungen." + +#: templates/templates/my-bookings.php:101 +#, php-format +msgid "Please Log In to view your bookings." +msgstr "Bitte anmelden, um Ihre Reservierungen anzuzeigen." + +#: templates/templates/events-search.php:35 +msgid "between" +msgstr "zwischen" + +#: em-install.php:313 +msgid "All Categories" +msgstr "Alle Kategorien" + +#: em-install.php:315 +msgid "All Countries" +msgstr "Alle Länder" + +#: em-install.php:317 +msgid "All Regions" +msgstr "Alle Regionen" + +#: em-install.php:319 +msgid "All States" +msgstr "Alle Bundesstaaten" + +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: em-install.php:310 +#: events-manager.php:264 +msgid "Search" +msgstr "Suche" + +#: events-manager.php:266 +msgid "Loading..." +msgstr "Laden..." + +#: events-manager.php:265 +msgid "Searching..." +msgstr "Suche..." + +#: templates/placeholders/bookingbutton.php:2 +msgid "Book Now" +msgstr "Jetzt reservieren" + +#: templates/placeholders/bookingbutton.php:3 +msgid "Booking..." +msgstr "Reservierung ..." + +#: templates/placeholders/bookingbutton.php:4 +msgid "Booking Submitted" +msgstr "Reservierung abgeschickt" + +#: templates/placeholders/bookingbutton.php:5 +msgid "Booking Error. Try again?" +msgstr "Buchungsfehler. Noch einmal versuchen?" + +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Karte nicht verfügbar" + +#: templates/placeholders/bookingform.php:11 +#, php-format +msgid "You are currently attending this event. Manage my bookings" +msgstr "Aktuell nehmen Sie an dieser Veranstaltung teil. Meine Buchungen" + +#: templates/placeholders/bookingform.php:13 +msgid "Online bookings are not available for this event." +msgstr "Online-Buchungen sind nicht verfügbar für diese Veranstaltung." + +#: templates/placeholders/bookingform.php:15 +msgid "Bookings are closed for this event." +msgstr "Buchungen sind für diese Veranstaltung geschlossen." + +#: events-manager.php:250 +msgid "Please wait while the booking is being submitted." +msgstr "Bitte warten Sie, bis die Reservierung geseichert ist." + +#: admin/em-options.php:40 +msgid "Changes saved." +msgstr "Änderungen gespeichert." + +#: admin/em-help.php:28 +#: admin/em-ms-options.php:52 +#: admin/em-options.php:167 +msgid "Event Related Placeholders" +msgstr "Platzhalter für Veranstaltungen" + +#: admin/em-help.php:34 +#: admin/em-ms-options.php:53 +#: admin/em-options.php:168 +msgid "Location Related Placeholders" +msgstr "Platzhalter für Veranstaltungsorte" + +#: admin/em-help.php:37 +#: admin/em-ms-options.php:54 +#: admin/em-options.php:169 +msgid "Booking Related Placeholders" +msgstr "Platzhalter für Reservierungen" + +#: admin/em-help.php:31 +#: admin/em-ms-options.php:55 +#: admin/em-options.php:170 +msgid "Category Related Placeholders" +msgstr "Platzhalter für Kategorien" + +#: admin/em-ms-options.php:56 +#: admin/em-options.php:171 +#, php-format +msgid "This accepts %s and %s placeholders." +msgstr "%s und %s können verwendet werden." + +#: admin/em-ms-options.php:57 +#: admin/em-ms-options.php:58 +#: admin/em-options.php:172 +#: admin/em-options.php:173 +#, php-format +msgid "This accepts %s placeholders." +msgstr " %s sind erlaubt." + +#: admin/em-ms-options.php:59 +#: admin/em-options.php:174 +#, php-format +msgid "This accepts %s, %s and %s placeholders." +msgstr "%s, %s und %s sind erlaubt." + +#: admin/em-ms-options.php:61 +#: admin/em-ms-options.php:200 +#: admin/em-options.php:177 +#: admin/em-options.php:1251 +msgid "Save Changes" +msgstr "Änderungen speichern" + +#: admin/em-ms-options.php:61 +#: admin/em-options.php:177 +msgid "All" +msgstr "Alle" + +#: admin/em-ms-options.php:66 +#: admin/em-options.php:182 +msgid "Collapse All" +msgstr "Alle zusammenklappen" + +#: admin/em-ms-options.php:67 +#: admin/em-options.php:183 +msgid "Expand All" +msgstr "Alle erweitern" + +#: admin/em-ms-options.php:138 +#: admin/em-options.php:276 +msgid "Event Manager Options" +msgstr "Event Manager Optionen" + +#: admin/em-ms-options.php:148 +#: admin/em-options.php:287 +#: admin/em-options.php:370 +#: admin/em-options.php:392 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:703 +#: admin/em-options.php:793 +#: admin/em-options.php:825 +#: admin/em-options.php:847 +#: admin/em-options.php:869 +#: admin/em-options.php:893 +#: admin/em-options.php:909 +#: admin/em-options.php:932 +#: admin/em-options.php:961 +#: admin/em-options.php:989 +#: admin/em-options.php:1009 +#: admin/em-options.php:1024 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#: admin/em-options.php:1130 +#: admin/em-options.php:1162 +#: admin/em-options.php:1214 +#: admin/em-options.php:1272 +#: admin/em-options.php:1305 +#: admin/em-options.php:1327 +#: admin/em-options.php:1355 +#: admin/em-options.php:1460 +msgid "Click to toggle" +msgstr "Klicken zum Umschalten" + +#: admin/em-ms-options.php:148 +msgid "Multi Site Options" +msgstr "Multi Site Optionen" + +#: admin/em-ms-options.php:152 +msgid "Enable global tables mode?" +msgstr "Globalen Tabellen-Modus aktivieren?" + +#: admin/em-ms-options.php:152 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Wird dies auf Yes gesetzt, wird alle Veranstaltungen in den Tabellen der Haupt-Site speichern (EM muss dafür aktiviert sein). Dies ermöglicht Ihnen Ereignisse über verschiedene Blogs zu teilen, zum Beispiele Ihre Veranstaltungen in Ihrem Netzwerk während Nutzer ihre eigenen Veranstaltungen in ihrem eigenen Blog verwalten können. Denken Sie daran, dass die Aktivierung dieser Option bedeutet, dass alte, in Sub-Blogs angelegte Veranstaltungen dann nicht mehr zugänglich sind. Und wenn Sie wieder zurückwechseln, sind sie zwar diese alten Veranstaltungen wieder zugänglich, aber die inzwischen neu angelegten Veranstaltungen sind dann nur noch auf der Haupt-Website verfügbar." + +#: admin/em-ms-options.php:163 +msgid "Display global events on main blog?" +msgstr "Globale Veranstaltungen auf dem Haupt-Blog anzeigen?" + +#: admin/em-options.php:341 +msgid "Use dropdown for locations?" +msgstr "Für Veranstaltungsorte eine Dropdownliste verwenden?" + +#: admin/em-options.php:341 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Wählen Sie Ja um Veranstaltungsorte aus einer Dropdown-Liste auszuwählen. Die Auswahl vom Veranstaltungsort wird schneller sein, aber Sie verlieren damit die Möglichkeit, direkt in der Veranstaltung einen neuen Veranstaltungsort anzulegen." + +#: admin/em-options.php:297 +msgid "Select yes to enable the recurrence features feature" +msgstr "Wählen Sie Ja, um Funktionen für sich wiederholende Veranstaltungen zu aktivieren" + +#: admin/em-options.php:298 +msgid "Enable bookings?" +msgstr "Möchten sie Reservierungen aktivieren?" + +#: admin/em-options.php:298 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Wenn sie Ja wählen, können sie Reservierungen und Tickets für Veranstaltungen verwenden." + +#: admin/em-options.php:301 +msgid "Select yes to enable the category features" +msgstr "Wählen Sie Ja, um die Veranstaltungen in Kategorien zu verwalten." + +#: admin/em-options.php:313 +msgid "Select yes to enable the attributes feature" +msgstr "Wählen Sie Ja, um die Attribute zu aktivieren" + +#: admin/em-options.php:305 +msgid "no default category" +msgstr "keine Standard-Kategorie" + +#: admin/em-options.php:310 +msgid "Default Category" +msgstr "Standard Kategorie" + +#: admin/em-options.php:310 +msgid "This option allows you to select the default category when adding an event." +msgstr "Wenn sie eine Standard-Kategorie wählen, wird diese automatisch eingetragen, wenn eine Veranstaltung hinzugefügt wird." + +#: admin/em-options.php:326 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(momentan nicht verwendbar bei Veranstaltung mit Eigentümern, kommt bald!)" + +#: admin/em-options.php:321 +msgid "no default location" +msgstr "kein Standard-Veranstaltungsort" + +#: admin/em-options.php:326 +msgid "Default Location" +msgstr "Standard-Veranstaltungsort" + +#: admin/em-options.php:326 +msgid "This option allows you to select the default location when adding an event." +msgstr "Diese Option ermöglicht es Ihnen, einen Standard-Veranstaltungsort für neue Veranstaltungen auszuwählen." + +#: admin/em-options.php:329 +msgid "Default Location Country" +msgstr "Standard-Land" + +#: admin/em-options.php:329 +msgid "no default country" +msgstr "kein Standard-Land" + +#: admin/em-options.php:329 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Wenn Sie ein Land als Standard auswählen, wird dieses beim Erstellen eines neuen Veranstaltungsortes vorgeschlagen." + +#: admin/em-options.php:316 +msgid "Event Attributes" +msgstr "Veranstaltungsattribute" + +#: admin/em-options.php:316 +#, php-format +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Sie können hier Veranstaltungsattribute hinzufügen, ein Attribut pro Zeile in folgendem Format: #_ATT{key}. Die Attribute werden auf der Veranstaltungsseite erst angezeigt, wenn Sie sie in ein anderes Template unten einfügen, aber vielleicht wollen Sie die Extra-Informationen zu einer Veranstaltung für andere Zwecke speichern. Weitere Informationen zu Platzhaltern." + +#: admin/em-options.php:350 +msgid "Show some love?" +msgstr "Zeigen Sie etwas Liebe?" + +#: admin/em-options.php:350 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Hunderte von freien Stunden sind in die Erstellung dieses Plugins geflossen. Zeigen Sie Ihre Unterstützung und fügen Sie einen kleinen Link zur Plugin-Website am unteren Rand Ihrer Veranstaltungsseite." + +#: admin/em-options.php:440 +msgid "Events page" +msgstr "Veranstaltungsseite" + +#: admin/em-options.php:445 +msgid "Show events page in lists?" +msgstr "Zeige Veranstaltungsseite in Listen?" + +#: admin/em-options.php:445 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Aktivieren Sie diese Option, wenn sie wollen, dass die Veranstaltungsseite mit den anderen Seiten in den Seitenlisten angezeigt werden soll." + +#: admin/em-options.php:446 +msgid "Display calendar in events page?" +msgstr "Kalender auf Veranstaltungsseite anzeigen?" + +#: admin/em-options.php:446 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Diese Option ermöglicht es ihnen, auf der Veranstaltungsseite anstatt der Liste einen Kalender anzuzeigen. Es wird empfohlen, nicht gleichzeitig das Kalender-Widget und eine Kalenderseite anzuzeigen." + +#: admin/em-options.php:446 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Wenn Sie Veranstaltungen anzeigen möchten, die über mehr als einen Tag dauern, siehe den Abschnitt Kalender auf dieser Seite." + +#: admin/em-options.php:447 +msgid "Disable title rewriting?" +msgstr "Titel rewriting deaktivieren?" + +#: admin/em-options.php:448 +msgid "Event Manager titles" +msgstr "Event Manager-Titel" + +#: admin/em-options.php:448 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Diese Einstellung ist nur dann wichtig, wenn sie oben 'ja' ausgewählt haben. Sie werden bemerken, dass der Seitentitel auf der Veranstaltungsseite nicht verändert wird und dass sie einen neuen Titel direkt unter dem Standard-Seitennamen haben. Hier können Sie das HTML für diesen Titel einstellen. Achten Sie darauf, dass sie den Platzhalter #_PAGETITLE Platzhalter hier verwenden, damit Events Manager den Titel (siehe weiter unten) richtig einsetzen kann." + +#: admin/em-options.php:568 +msgid "Event List Limits" +msgstr "Anzahl Veranstaltungen in der Veranstaltungsliste" + +#: admin/em-options.php:568 +msgid "This will control how many events are shown on one list by default." +msgstr "Gibt an, wie viele Ereignisse auf einer Liste standardmäßig angezeigt werden." + +#: admin/em-options.php:501 +msgid "Are current events past events?" +msgstr "Zählen gegenwärtige Veranstaltungen als vergangene Veranstaltungen?" + +#: admin/em-options.php:501 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Standardmäßig werden Veranstaltungen, deren Enddatum später als heute liegt, werden bei der Suche einbezogen. Setzen Sie diese Option auf Ja, um Veranstaltungen, die \"gestern\" begonnen haben, als vergangene Veranstaltungen zu behandeln." + +#: admin/em-options.php:449 +msgid "Show events search?" +msgstr "Veranstaltungssuche anzeigen?" + +#: admin/em-options.php:449 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Ja bedeutet, dass oberhalb der Liste der Veranstaltungen ein Suchformular angezeigt wird." + +#: admin/em-options.php:511 +msgid "Default event list ordering" +msgstr "Sortierung der Veranstaltungsliste" + +#: admin/em-options.php:516 +msgid "Order by start date, start time, then event name" +msgstr "Sortieren nach Startdatum, Startzeit, dann Ereignisnamen" + +#: admin/em-options.php:517 +msgid "Order by name, start date, then start time" +msgstr "Sortieren nach Name, Startdatum, dann Startzeit" + +#: admin/em-options.php:518 +msgid "Order by name, end date, then end time" +msgstr "Sortieren nach Name, Enddatum, dann Endzeit" + +#: admin/em-options.php:519 +msgid "Order by end date, end time, then event name" +msgstr "Sortieren nach Enddatum, Endzeit, dann Ereignisnamen" + +#: admin/em-options.php:533 +msgid "All Ascending" +msgstr "Alle aufsteigend" + +#: admin/em-options.php:536 +msgid "All Descending" +msgstr "Alle Absteigend" + +#: admin/em-options.php:490 +#: admin/em-options.php:550 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "Normalerweise sortiert Event-Manager die Liste der Veranstaltungen nach dem Startdatum in aufsteigender Reihenfolge. Um die Sortierung zu ändern, passen Sie die Werte oben an." + +#: admin/em-options.php:554 +msgid "Event list scope" +msgstr "Bereich der Veranstaltungsliste" + +#: admin/em-options.php:564 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Nur Veranstaltungen innerhalb eines bestimmten Zeitintervalls auf der Veranstaltungsseite anzeigen. Standardmäßig werden alle zukünftigen Veranstaltungen angezeigt." + +#: admin/em-options.php:847 +msgid "Events format" +msgstr "Veranstaltungs-Format" + +#: admin/em-options.php:850 +#: admin/em-options.php:935 +#: admin/em-options.php:964 +#, php-format +msgid "%s Page" +msgstr "%s Seite" + +#: admin/em-options.php:852 +msgid "Default event list format header" +msgstr "Standardkopfzeilen für eine Veranstaltungsliste" + +#: admin/em-options.php:852 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Dieser Inhalt wird vor der Veranstaltungsliste eingefügt. Der Standardwert ist leer" + +#: admin/em-options.php:853 +msgid "Default event list format" +msgstr "Anzeige einer Veranstaltung in einer Liste" + +#: admin/em-options.php:853 +msgid "The format of any events in a list." +msgstr "Bestimmt, wie eine Veranstaltung in einer List angezeigt wird." + +#: admin/em-options.php:854 +msgid "Default event list format footer" +msgstr "Inhalt der Fußzeile für die Veranstaltungsliste" + +#: admin/em-options.php:854 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Dieser Code wird direkt nach Veranstaltungslisten eingesetzt. Der Standardwert ist leer" + +#: admin/em-options.php:855 +msgid "No events message" +msgstr "Text für Keine Veranstaltungen" + +#: admin/em-options.php:855 +msgid "The message displayed when no events are available." +msgstr "Dieser Text wird angezeigt, wenn keine Veranstaltungen angezeigt werden können." + +#: admin/em-options.php:856 +msgid "List events by date title" +msgstr "Titel der Liste für Veranstaltungen zu einem Datum" + +#: admin/em-options.php:856 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
              " +msgstr "Wenn nur Veranstaltungen für ein bestimmtes Datum angezeigt werden, kann hier der Titel eingegeben werden. Um Datumswerte einzufügen, verwenden Sie PHP Zeitformat Zeichen mit einem # Zeichen davor, z.B. #m, #M, #j, usw.
              " + +#: admin/em-options.php:858 +#: admin/em-options.php:942 +#: admin/em-options.php:971 +#: admin/em-options.php:992 +#, php-format +msgid "Single %s Page" +msgstr "Einzelne %s - Seite" + +#: admin/em-options.php:860 +msgid "Single event page title format" +msgstr "Titelinhalt und -format für eine einzelne Veranstaltung" + +#: admin/em-options.php:860 +msgid "The format of a single event page title." +msgstr "Seitentitel für eine Seite mit einer einzelnen Veranstaltung." + +#: admin/em-options.php:861 +msgid "Default single event format" +msgstr "Formatierung für eine einzelne Veranstaltung" + +#: admin/em-options.php:861 +msgid "The format of a single event page." +msgstr "Format für Seite mit einer einzelnen Veranstaltung." + +#: admin/em-options.php:909 +msgid "Calendar format" +msgstr "Kalenderformat" + +#: admin/em-options.php:913 +msgid "Small calendar title" +msgstr "Titel für den kleinen Kalender" + +#: admin/em-options.php:913 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "Das Format für den Titel der Veranstaltung. Wird angezeigt, wenn mit der Maus über den entsprechenden Kalendertag gefahren wird." + +#: admin/em-options.php:914 +msgid "Small calendar title separator" +msgstr "Trennzeichen für mehrere Titel im kleinen Kalender" + +#: admin/em-options.php:914 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "Das Trennzeichen, mit dem die obigen Titel getrennt werden, wenn mehrere Veranstaltungen am selben Tag stattfinden." + +#: admin/em-options.php:915 +msgid "Full calendar events format" +msgstr "Formatierung der Veranstaltung für den großen Kalender." + +#: admin/em-options.php:915 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "Formatierung für eine Veranstaltung im großen Kalender. Denken Sie daran, li Tags vor und nach der Veranstaltung anzugeben." + +#: admin/em-options.php:916 +msgid "Show long events on calendar pages?" +msgstr "Zeige lange Veranstaltungen auf dem Kalender-Seiten?" + +#: admin/em-options.php:916 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Wenn auf der Veranstaltungsseite ein Kalender angezeigt wird (siehe im Abschnitt Veranstaltungen formatieren auf dieser Seite), haben Sie die Möglichkeit, Veranstaltungen, die mehrere Tage dauern, bei jedem Tag der Veranstaltung anzuzeigen." + +#: admin/em-options.php:917 +msgid "Show list on day with single event?" +msgstr "Liste anzeigen am Tag mit Einzel-Event?" + +#: admin/em-options.php:917 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Normalerweise wird ein Link auf die Veranstaltung angezeigt, wenn ein Tag nur eine einzige Veranstaltung hat. Wenn Sie hier Ja wählen, erhalten Sie immer eine Liste mit den Veranstaltungen." + +#: admin/em-options.php:920 +#, fuzzy +msgid "iCal Feed Settings" +msgstr "Einstellungen speichern" + +#: admin/em-options.php:922 +#, fuzzy +msgid "iCal Title" +msgstr "Titel" + +# @ dbem +#: admin/em-options.php:922 +msgid "The title that will appear in the calendar." +msgstr "" + +# @ dbem +#: admin/em-options.php:923 +msgid "iCal Limit" +msgstr "" + +# @ dbem +#: admin/em-options.php:923 +msgid "Limits the number of future events shown (0 = unlimited)." +msgstr "" + +#: admin/em-options.php:932 +msgid "Locations format" +msgstr "Format für Veranstaltungsorte" + +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "%s list header format" +msgstr "Kopfzeile für die Liste der %s" + +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, fuzzy, php-format +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Dieser Inhalt wird vor dem folgenden Listenformat eingefügt. Der Standardwert ist leer" + +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "%s list item format" +msgstr "Formatierung für einen der %s in der Liste" + +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "The format of a single %s in a list." +msgstr "Das Format für einen der vorhandenen %s in einer Liste." + +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "%s list footer format" +msgstr "Fußzeile für die Liste der %s" + +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, fuzzy, php-format +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Dieser Inhalt wird direkt nach dem Code für das obige Listenformat eingefügt. Der Standardwert ist leer" + +#: admin/em-options.php:940 +#: admin/em-options.php:951 +#: admin/em-options.php:969 +#: admin/em-options.php:979 +#: admin/em-options.php:1000 +#, php-format +msgid "No %s message" +msgstr "Keine %s Nachricht" + +#: admin/em-options.php:940 +#: admin/em-options.php:969 +#, php-format +msgid "The message displayed when no %s are available." +msgstr "Meldung, wenn keine %s zum Anzeigen da sind." + +#: admin/em-options.php:944 +#: admin/em-options.php:973 +#: admin/em-options.php:994 +#, php-format +msgid "Single %s title format" +msgstr "Seitentitelformat für einzelne(n) %s" + +#: admin/em-options.php:944 +msgid "The format of a single location page title." +msgstr "Seitentitelformat für einen einzelnen Veranstaltungsort" + +#: admin/em-options.php:945 +#: admin/em-options.php:974 +#: admin/em-options.php:995 +#, php-format +msgid "Single %s page format" +msgstr "Seitenformatierung für einzelne %s" + +#: admin/em-options.php:945 +msgid "The format of a single location page." +msgstr "Das Format für eine Seite mit einem einzelnen Veranstaltungsort." + +#: admin/em-options.php:946 +msgid "Default location balloon format" +msgstr "Standardformat für Ballon eines Veranstaltungsorts" + +#: admin/em-options.php:946 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "Das Format für die Beschreibung im Ballon für einen Veranstaltungsort auf einer Karte für einen einzelnen Veranstaltungsort" + +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#, fuzzy, php-format +msgid "%s List Formats" +msgstr "Formatierung für einen der %s in der Liste" + +#: admin/em-options.php:950 +#: admin/em-options.php:978 +#: admin/em-options.php:999 +#, php-format +msgid "Default %s list format" +msgstr "Standard-Listenformat für %s " + +#: admin/em-ms-options.php:163 +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-options.php:418 +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:502 +#: admin/em-options.php:950 +#: admin/em-options.php:951 +#: admin/em-options.php:978 +#: admin/em-options.php:979 +#: admin/em-options.php:999 +#: admin/em-options.php:1000 +#: admin/em-options.php:1366 +#: admin/em-options.php:1367 +#: admin/em-options.php:1368 +#: admin/em-options.php:1369 +#: admin/em-options.php:1370 +#: admin/em-options.php:1371 +#: events-manager.php:295 +#: events-manager.php:296 +#: events-manager.php:297 +#: events-manager.php:298 +#: events-manager.php:299 +#: events-manager.php:300 +msgid "events" +msgstr "Veranstaltungen" + +#: admin/em-options.php:950 +#, fuzzy +msgid "The format of the events the list inserted in the location page through the #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS element." +msgstr "Formatierung der Veranstaltungen in einer Liste auf der Seite vom Veranstaltungsort, angezeigt mit dem Elementen #_NEXTEVENTS, #_PASTEVENTS und #_ALLEVENTS." + +#: admin/em-options.php:951 +#, fuzzy +msgid "The message to be displayed in the list generated by #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS when no events are available." +msgstr "Die Meldung, die anstatt der von #_NEXTEVENTS, #_PASTEVENTS und #_ALLEVENTS generierten Listen angezeigt wird, wenn keine Veranstaltungen verfügbar sind." + +#: admin/em-options.php:961 +msgid "Categories format" +msgstr "Kategorien-Format" + +#: admin/em-options.php:707 +#: admin/em-options.php:708 +#: admin/em-options.php:964 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: em-install.php:416 +#: em-install.php:418 +#: em-install.php:697 +#: em-install.php:747 +msgid "Categories" +msgstr "Kategorien" + +#: admin/em-options.php:973 +msgid "The format of a single category page title." +msgstr "Titel-Format für Seiten mit einer einzigen Kategorie." + +#: admin/em-options.php:974 +msgid "The format of a single category page." +msgstr "Formatierung für eine Seite mit einer einzelnen Kategorie." + +#: admin/em-options.php:978 +#, fuzzy +msgid "The format of the events the list inserted in the category page through the #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." +msgstr "Formatierung der Veranstaltungen in einer Liste auf der Seite vom Veranstaltungsort, angezeigt mit dem Elementen #_NEXTEVENTS, #_PASTEVENTS und #_ALLEVENTS." + +#: admin/em-options.php:979 +#, fuzzy +msgid "The message to be displayed in the list generated by #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS when no events are available." +msgstr "Die Meldung, die anstatt der von #_NEXTEVENTS, #_PASTEVENTS und #_ALLEVENTS generierten Listen angezeigt wird, wenn keine Veranstaltungen verfügbar sind." + +#: admin/em-options.php:1009 +msgid "RSS feed format" +msgstr "RSS-Feed Format" + +#: admin/em-options.php:1013 +msgid "RSS main title" +msgstr "RSS Haupttitel" + +#: admin/em-options.php:1013 +msgid "The main title of your RSS events feed." +msgstr "Die Haupttitel für den RSS-Feed der Veranstaltungen." + +#: admin/em-options.php:1014 +msgid "RSS main description" +msgstr "Beschreibung für den Veranstaltungs-RSS" + +#: admin/em-options.php:1014 +msgid "The main description of your RSS events feed." +msgstr "Die Haupt-Beschreibung für den RSS-Feed der Veranstaltungen." + +#: admin/em-options.php:1015 +msgid "RSS title format" +msgstr "RSS Titel Formatierung" + +#: admin/em-options.php:1015 +msgid "The format of the title of each item in the events RSS feed." +msgstr "Das Format für den Titel jedes einzelnen Elements im Veranstaltungs-RSS-Feed." + +#: admin/em-options.php:1016 +msgid "RSS description format" +msgstr "Formatierung der Beschreibung im RSS-Feed" + +#: admin/em-options.php:1016 +msgid "The format of the description of each item in the events RSS feed." +msgstr "Formatierung für die Beschreibung jeder Veranstaltung im Veranstaltungs-RSS-Feed." + +#: admin/em-options.php:1024 +msgid "Maps and geotagging" +msgstr "Karten und Geotagging" + +#: admin/em-options.php:1029 +msgid "Enable Google Maps integration?" +msgstr "Google Maps Integration aktivieren?" + +#: admin/em-options.php:1033 +msgid "Check this option to enable Goggle Map integration." +msgstr "Aktivieren Sie diese Option, um Goggle Maps Integration zu aktivieren." + +#: admin/em-options.php:1037 +msgid "Map text format" +msgstr "Format für Text in Karte" + +#: admin/em-options.php:1037 +msgid "The text format inside the map balloons." +msgstr "Format des Texts, der innerhalb der Ballons in einer Karte angezeigt wird." + +#: admin/em-options.php:1055 +msgid "Approval Required?" +msgstr "Genehmigung erforderlich?" + +#: admin/em-options.php:1055 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Eine Reservierung wird erst bestätigt, wenn ein Administrator der Veranstaltung diese genehmigt." + +#: admin/em-options.php:1072 +msgid "Currency" +msgstr "Währung" + +#: admin/em-options.php:1072 +msgid "Choose your currency for displaying event pricing." +msgstr "Wählen sie die Währung für die Anzeige der Veranstaltungspreise." + +#: admin/em-options.php:1112 +msgid "Single ticket mode?" +msgstr "Einzelkartenmodus?" + +#: admin/em-options.php:1112 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "In Einzelkartenmodus kann der Benutzer pro Reservierung immer nur ein Ticket reservieren. (Die Option für mehrere Karten wird nicht angezeigt)." + +#: admin/em-options.php:1113 +msgid "Show ticket table in single ticket mode?" +msgstr "Zeige Ticket-Tabelle im Einzelkartenmodus?" + +#: admin/em-options.php:1113 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Wenn sie die Liste der Tickets auch für Veranstaltungen mit nur einer Ticketart anzeigen möchten, können sie diese Option aktivieren." + +#: admin/em-options.php:1114 +msgid "Show unavailable tickets?" +msgstr "Nicht verfügbar Tickets anzeigen?" + +#: admin/em-options.php:1114 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Sie können wählen, ob Sie nicht verfügbare Tickets für Besucher anzeigen wollen oder nicht." + +#: admin/em-options.php:1056 +msgid "Reserved unconfirmed spaces?" +msgstr "Unbestätigte Plätze reservieren?" + +#: admin/em-options.php:1056 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Standardmäßig sind Tickets nicht mehr verfügbar, sobald es genügend BESTÄTIGTE Reservierungen gibt. Um auch Plätze für noch unbestätigte Reservierungen zu reservieren, wählen Sie Ja." + +#: admin/em-options.php:1115 +msgid "Show multiple tickets if logged out?" +msgstr "Tickets anzeigen, wenn abgemeldet?" + +#: admin/em-options.php:1115 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Wenn abgemeldet, wird der Benutzer aufgefordert, sich anzumelden. Jedoch können wir die verfügbaren Tickets anzeigen, wenn Sie mehr als ein Ticket haben." + +#: admin/em-options.php:1058 +msgid "Allow overbooking when approving?" +msgstr "Überbuchung bei Genehmigung zulassen?" + +#: admin/em-options.php:1058 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Stellen sie diese Option auf Ja, wenn sie viele Reservierungen erhalten und sie sich entschließen, bei manueller Genehmigung mehr Reservierungen zuzulassen als Plätze vorhanden sind." + +#: admin/em-options.php:1087 +msgid "Allow guest bookings?" +msgstr "Reservierungen von Gästen zulassen?" + +#: admin/em-options.php:1087 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Wenn diese Option aktiviert ist, können Gäste eine E-Mail-Adresse hinterlegen. Für die Reservierung wird dann automatisch ein Benutzerkonto angelegt. Die Gäste können sich dann unter dem neu angelegten Konto wieder anmelden." + +#: admin/em-options.php:1059 +#, fuzzy +msgid "Allow double bookings?" +msgstr "Reservierungen von Gästen zulassen?" + +# @ dbem +#: admin/em-options.php:1059 +msgid "If enabled, users can book an event more than once." +msgstr "" + +#: admin/em-options.php:1088 +msgid "Display login form?" +msgstr "Login-Formular anzeigen?" + +#: admin/em-options.php:1088 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Wählen Sie, ob Sie ein Login-Formular neben dem Reservierungsformular angezeigt werden soll. Das Formular soll Mitglieder daran erinnern, sich anzumelden, bevor sie Reservierungen eintragen." + +#: admin/em-options.php:1090 +#, fuzzy +msgid "Booking form feedback messages" +msgstr "E-Mail bei Reservierungsbestätigung" + +# @ dbem +#: admin/em-options.php:1091 +msgid "When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below." +msgstr "" + +#: admin/em-options.php:1093 +#, fuzzy +msgid "Successful booking" +msgstr "Buchung abschicken" + +# @ dbem +#: admin/em-options.php:1093 +msgid "When a booking is registered and confirmed." +msgstr "" + +#: admin/em-options.php:1094 +#, fuzzy +msgid "Successful pending booking" +msgstr "Sie haben %s unbestätigte Reservierung" + +# @ dbem +#: admin/em-options.php:1094 +msgid "When a booking is registered but pending." +msgstr "" + +# @ dbem +#: admin/em-options.php:1095 +msgid "Not enough spaces" +msgstr "" + +#: admin/em-options.php:1095 +#, fuzzy +msgid "When a booking cannot be made due to lack of spaces." +msgstr "Reservierung kann nicht vorgenommen werden, nicht genug Plätze frei!" + +# @ dbem +#: admin/em-options.php:1096 +msgid "Errors" +msgstr "" + +# @ dbem +#: admin/em-options.php:1096 +msgid "When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors." +msgstr "" + +# @ dbem +#: admin/em-options.php:1097 +msgid "User must log in" +msgstr "" + +#: admin/em-options.php:1097 +#, fuzzy +msgid "When a user must log in before making a booking." +msgstr "Sie müssen sich anmelden, um eine Buchung vornehmen zu können." + +# @ dbem +#: admin/em-options.php:1098 +msgid "Error mailing user" +msgstr "" + +# @ dbem +#: admin/em-options.php:1098 +msgid "If a booking is made and an email cannot be sent, this is added to the success message." +msgstr "" + +# @ dbem +#: admin/em-options.php:1099 +msgid "Already booked" +msgstr "" + +# @ dbem +#: admin/em-options.php:1099 +msgid "If the user made a previous booking and cannot double-book." +msgstr "" + +# @ dbem +#: admin/em-options.php:1100 +msgid "No spaces booked" +msgstr "" + +# @ dbem +#: admin/em-options.php:1100 +msgid "If the user tries to make a booking without requesting any spaces." +msgstr "" + +#: admin/em-options.php:1162 +msgid "Booking Email Templates" +msgstr "Email-Vorlagen für die Reservierung" + +#: admin/em-options.php:1166 +msgid "Default contact person" +msgstr "Standardmäßiger Ansprechpartner" + +#: admin/em-options.php:1166 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Wählen Sie den Standard-Ansprechpartner. Dieser Benutzer wird verwendet, wenn bei der Veranstaltung nicht explizit ein Ansprechpartner angegeben wird." + +#: admin/em-options.php:1167 +msgid "Email events admin?" +msgstr "E-Mails an Administrator der Veranstaltung?" + +#: admin/em-options.php:1167 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Wenn Sie möchten, dass jede Reservierungsbestätigung per E-Mail an einen Administrator geschickt werden soll, geben sie hier seine E-Mail-Adresse ein (leer lassen, um keine Emails zu verschicken)." + +#: admin/em-options.php:1168 +msgid "Email contact person?" +msgstr "E-Mail an Ansprechpartner?" + +#: admin/em-options.php:1168 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Aktivieren Sie diese Option, wenn Sie wollen, dass die Kontaktperson von der Veranstaltung bei jeder Reservierung eine Email erhalten soll. Die Email wird bei der Reservierung geschickt (unabhängig davon ob bestätigt oder unbestätigt)." + +#: admin/em-options.php:1169 +msgid "Disable new registration email?" +msgstr "Email bei neuer Registrierung deaktivieren?" + +#: admin/em-options.php:1171 +msgid "Contact person booking confirmed" +msgstr "Ansprechpartner Reservierung bestätigt" + +#: admin/em-options.php:1172 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "Eine E-Mail wird an den Ansprechpartner geschickt, wenn erstmalig eine Reservierung gemacht wird." + +#: admin/em-options.php:1174 +msgid "Contact person email subject" +msgstr "Titel der E-Mail an den Ansprechpartner" + +#: admin/em-options.php:1175 +msgid "Contact person email" +msgstr "Inhalt der E-Mail an Ansprechpartner" + +#: admin/em-options.php:1177 +msgid "Contact person booking cancelled" +msgstr "Ansprechpartner Reservierung storniert" + +#: admin/em-options.php:1178 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Wenn jemand die Reservierung storniert, wird eine E-Mail an die Kontaktperson geschickt." + +#: admin/em-options.php:1180 +msgid "Contact person cancellation subject" +msgstr "Titel der E-Mail an den Ansprechpartner bei Stornierung" + +#: admin/em-options.php:1181 +msgid "Contact person cancellation email" +msgstr "E-Mail an den Ansprechpartner bei Stornierung" + +#: admin/em-options.php:1183 +msgid "Confirmed booking email" +msgstr "E-Mail für Reservierungbestätigung" + +#: admin/em-options.php:1184 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Diese E-Mail wird an den Benutzer geschickt, wenn die Reservierung bestätigt wird. Wenn eine Genehmigung erforderlich ist, erfolgt dies bei der Genehmigung durch den Administrator. Wenn die Genehmigung deaktiviert ist, wird die E-Mail an den Benutzer geschickt, wenn dieser die Reservierung zum ersten Mal aufgibt." + +#: admin/em-options.php:1186 +msgid "Booking confirmed email subject" +msgstr "Titel der E-Mail für Reservierungsbestätigung" + +#: admin/em-options.php:1187 +msgid "Booking confirmed email" +msgstr "E-Mail bei Reservierungsbestätigung" + +#: admin/em-options.php:1189 +msgid "Pending booking email" +msgstr "E-Mail für neu zu bearbeitende Reservierung" + +#: admin/em-options.php:1190 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Diese E-Mail wird geschickt, wenn eine neue Reservierung eingegeben wurde. Ist nicht relevant, wenn keine Genehmigung für Reservierung erforderlich." + +#: admin/em-options.php:1192 +msgid "Booking pending email subject" +msgstr "Titel der E-Mail für nicht bestätigte Reservierung" + +#: admin/em-options.php:1193 +msgid "Booking pending email" +msgstr "E-Mail bei nicht bestätigter Reservierung" + +#: admin/em-options.php:1195 +msgid "Rejected booking email" +msgstr "E-Mail bei abgelehnter Reservierung" + +#: admin/em-options.php:1196 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Diese E-Mail wird an den Benutzer geschickt, wenn die Reservierung abgelehnt wird. Ist nicht relevant, Reservierungen keine Genehmigung erfordern." + +#: admin/em-options.php:1198 +msgid "Booking rejected email subject" +msgstr "Titel der E-Mail, wenn die Reservierung abgelehnt wurde." + +#: admin/em-options.php:1198 +msgid "The subject of the email sent to the person making a booking that is awaiting administrator approval. Not relevant if bookings don't require approval." +msgstr "Der Titel er E-Mail, die zu der Person geschickt wird, die die Reservierung gemacht hat, wenn die Reservierung nicht bestätigt werden kann. Ist nicht relevant, wenn die Reservierungen keine Genehmigung erfordern." + +#: admin/em-options.php:1199 +msgid "Booking rejected email" +msgstr "Inhalt der E-Mail, wenn die Reservierung abgelehnt wurde" + +#: admin/em-options.php:1199 +msgid "The body of the email which will be sent to the person if the booking is rejected. Not relevant if bookings don't require approval." +msgstr "Inhalt der E-Mail an die Person, die die Reservierung gemacht hat, wenn die Reservierung abgelehnt wurde. Ist nicht relevant, wenn Reservierungen keine Genehmigung erfordern." + +#: admin/em-options.php:1202 +msgid "This will be sent when a user cancels their booking." +msgstr "Diese E-Mail wird geschickt, wenn der Benutzer seine Reservierung storniert." + +#: admin/em-options.php:1204 +msgid "Booking cancelled email subject" +msgstr "Titel der E-Mail bei Stornierung" + +#: admin/em-options.php:1205 +msgid "Booking cancelled email" +msgstr "Inhalt der E-Mail bei Stornierung" + +#: admin/em-options.php:1327 +msgid "Email Settings" +msgstr "E-Mail Einstellungen" + +#: admin/em-options.php:1332 +msgid "Notification sender name" +msgstr "Name des Absenders von Benachrichtigungen" + +#: admin/em-options.php:1332 +msgid "Insert the display name of the notification sender." +msgstr "Geben sie den Namen für den Absender bei Benachrichtigungen an." + +#: admin/em-options.php:1333 +msgid "Notification sender address" +msgstr "Absender E-Mail Adresse" + +#: admin/em-options.php:1333 +msgid "Insert the address of the notification sender." +msgstr "Geben sie eine existiernede E-Mail Adresse als Absender für die Benachrichtigungen an." + +#: admin/em-options.php:1334 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "Der Port, über den Ihre E-Mail-Benachrichtigungen verschickt werden. Stellen sie sicher, dass die Firewall den Port nicht blockiert." + +#: admin/em-options.php:1335 +msgid "Mail sending method" +msgstr "E-Mail Sendemethode" + +#: admin/em-options.php:1335 +msgid "PHP mail function" +msgstr "PHP Mail-Funktion" + +#: admin/em-options.php:1335 +msgid "Select the method to send email notification." +msgstr "Wählen sie eine Methode, wie die Benachrichtigungen geschickt werden sollen." + +#: admin/em-options.php:1336 +msgid "Use SMTP authentication?" +msgstr "SMTP-Authentifizierung verwenden?" + +#: admin/em-options.php:1336 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "SMTP-Authentifizierung falls erforderlich. Wenn Sie Google Mail verwenden, müssen sie diesen Parameter auf Ja setzen." + +#: admin/em-options.php:1337 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "Der SMTP-Host. Normalerweise 'localhost'. Wenn Sie Google Mail verwenden, setzen Sie diesen Wert auf 'ssl://smtp.gmail.com:465'." + +#: admin/em-options.php:1338 +msgid "SMTP username" +msgstr "SMTP Benutzername" + +#: admin/em-options.php:1338 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Geben sie den Benutzernamen an, der verwendet werden soll, um auf Ihren SMTP-Server zuzugreifen." + +#: admin/em-options.php:1339 +msgid "SMTP password" +msgstr "SMTP Kennwort" + +#: admin/em-options.php:1339 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Geben Sie das Kennwort an, das verwendet werden soll, um auf Ihren SMTP-Server zuzugreifen." + +#: admin/em-options.php:1309 +msgid "Maximum width (px)" +msgstr "Maximale Breite (px)" + +#: admin/em-options.php:1309 +msgid "The maximum allowed width for images uploades" +msgstr "Die maximal zulässige Breite für Bilder die hochgeladen werden können in Pixeln" + +#: admin/em-options.php:1310 +msgid "Maximum height (px)" +msgstr "Maximale Höhe (px)" + +#: admin/em-options.php:1310 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "Die maximal zulässige Höhe für Bilder, die hochgeladen werden können, in Pixeln" + +#: admin/em-options.php:1311 +msgid "Maximum size (bytes)" +msgstr "Maximale Größe (in Bytes)" + +#: admin/em-options.php:1311 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "Die maximal zulässige Größe für hochgeladene Bilder, in Bytes." + +#: admin/em-options.php:1355 +msgid "User Capabilities" +msgstr "Berechtigungen" + +#: admin/em-options.php:1359 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Warnung: Die Änderung dieser Werte kann dazu führen, dass alle Benutzer Informationen sehen, die vorher für sie verborgen war." + +#: admin/em-options.php:1405 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Sie können genau einstellen, welche Benutzergruppe welche Funktionen ausüben kann. Jede Benutzerrolle kann eine unterschiedliche Menge von Aktionen ausführen." + +#: admin/em-options.php:1398 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "Benutzer kann individuelle Reservierungen und Reservierungseinstellungen anderer Benutzern bearbeiten." + +#: admin/em-options.php:1399 +msgid "User can use and manage bookings with their events." +msgstr "Benutzer können Reservierungen für ihre Veranstaltungen verwalten." + +#: admin/em-options.php:1287 +msgid "Allow anonymous event submissions?" +msgstr "Anonymes Einsenden von Veranstaltungen erlauben?" + +#: admin/em-options.php:1287 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Möchten Sie, dass Benutzer Veranstaltungen anonym einreichen können? Wenn ja, verwenden Sie den [event_form]-Shortcode oder den em_event_form () Template-Tag und aktivieren Sie diese Option." + +#: admin/em-options.php:1288 +msgid "Guest Default User" +msgstr "Gast Standard-User" + +#: admin/em-options.php:1281 +#: admin/em-options.php:1289 +msgid "Success Message" +msgstr "Erfolgsmeldung" + +#: admin/em-options.php:1289 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Anonyme Benutzer können ihre eingereichten Veranstaltungen nicht mehr bearbeiten, wenn sie diese eingereicht haben. Sie können die Erfolgsmeldung hier entsprechend gestalten." + +#: admin/em-bookings.php:59 +msgid "Event Bookings Dashboard" +msgstr "Reservierungsübersicht" + +#: admin/em-bookings.php:63 +#: admin/em-bookings.php:114 +#: admin/em-bookings.php:166 +msgid "Pending Bookings" +msgstr "Zu Bearbeitende Reservierungen" + +#: admin/em-bookings.php:66 +msgid "Events With Bookings Enabled" +msgstr "Veranstaltungen mit Reservierungsmöglichkeit" + +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +msgid "You do not have the rights to manage this event." +msgstr "Sie haben nicht die Rechte, diese Veranstaltung zu verwalten." + +#: admin/em-bookings.php:93 +#, php-format +msgid "Manage %s Bookings" +msgstr "Reservierungen für %s verwalten" + +#: admin/em-bookings.php:94 +#: admin/em-bookings.php:148 +msgid "View/Edit Event" +msgstr "Veranstaltung ansehen/bearbeiten" + +#: admin/em-bookings.php:101 +#, fuzzy +msgid "Availability" +msgstr "Verfügbar" + +#: admin/em-bookings.php:101 +msgid "Spaces confirmed" +msgstr "Plätze bestätigt" + +#: admin/em-bookings.php:117 +#: admin/em-bookings.php:169 +msgid "Confirmed Bookings" +msgstr "Bestätigte Reservierungen" + +#: admin/em-bookings.php:119 +#: admin/em-bookings.php:171 +msgid "Rejected Bookings" +msgstr "Abgelehnt Reservierungen" + +#: admin/em-bookings.php:121 +#: admin/em-bookings.php:173 +msgid "Cancelled Bookings" +msgstr "Stornierte Reservierungen" + +#: admin/em-bookings.php:137 +msgid "You do not have the rights to manage this ticket." +msgstr "Sie haben nicht die Rechte, dieses Ticket zu verwalten." + +#: admin/em-bookings.php:147 +#, php-format +msgid "Ticket for %s" +msgstr "Ticket für %s" + +#: admin/em-bookings.php:149 +msgid "View Event Bookings" +msgstr "Zeigt die Reservierungen der Veranstaltung" + +#: admin/em-bookings.php:158 +msgid "Min" +msgstr "Min" + +#: admin/em-bookings.php:159 +msgid "Max" +msgstr "Max" + +#: admin/em-bookings.php:160 +msgid "Start" +msgstr "Beginn" + +#: admin/em-bookings.php:161 +msgid "End" +msgstr "Ende" + +#: admin/em-bookings.php:198 +msgid "Edit Booking" +msgstr "Reservierung bearbeiten" + +#: admin/em-bookings.php:206 +msgid "Event Details" +msgstr "Veranstaltungsdetails" + +#: admin/em-bookings.php:217 +msgid "Date/Time" +msgstr "Datum/Zeit" + +#: admin/em-bookings.php:229 +#: admin/em-bookings.php:389 +msgid "Personal Details" +msgstr "Persönliche Angaben" + +#: admin/em-bookings.php:237 +msgid "Booking Details" +msgstr "Reservierungsdetails" + +#: admin/em-bookings.php:283 +msgid "Totals" +msgstr "Gesamt" + +#: admin/em-bookings.php:302 +#, fuzzy +msgid "Modify Booking" +msgstr "Meine Reservierungen" + +# @ dbem +#: admin/em-bookings.php:307 +msgid "Note: ticket availability not taken into account (i.e. you can overbook). Confirmation email is not resent automatically." +msgstr "" + +#: admin/em-bookings.php:323 +msgid "Booking Notes" +msgstr "Hinweise" + +#: admin/em-bookings.php:326 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Sie können Notizen für interne Zwecke eintragen. Nur Manager der Veranstaltung können diese Notizen sehen." + +#: admin/em-bookings.php:331 +msgid "wrote" +msgstr "schrieb" + +#: admin/em-bookings.php:377 +msgid "Manage Person's Booking" +msgstr "Reservierungen der Person verwalten" + +#: admin/em-bookings.php:379 +msgid "Edit User" +msgstr "Benutzer bearbeiten" + +#: admin/em-bookings.php:400 +msgid "Past And Present Bookings" +msgstr "Vergangene und aktuelle Reservierungen" + +# @ dbem +#: admin/em-admin.php:124 +#, php-format +msgid "

              Events Manager is ready to go! It is highly recommended you read the Getting Started guide on our site, as well as checking out the Settings Page. Dismiss

              " +msgstr "" + +#: admin/em-admin.php:179 +#, php-format +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Diese Seite ist die Events Manager Veranstaltungsseite. Der Inhalt wird durch Events Manager überschrieben. Wenn man das Wort INHALT (genau in Großbuchstaben) einsetzt und mit Text umgibt, wird nur INHALT überschrieben werden. Wenn sie das Aussehen von Veranstaltungen anpassen wollen, gehen sie auf die Einstellungsseite. " + +#: em-functions.php:74 +#, php-format +msgid "Displaying %s–%s of %s" +msgstr "Anzeige %s–%s von %s" + +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +msgid "Approve" +msgstr "Genehmigen" + +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-rejected.php:55 +msgid "Decline" +msgstr "Ablehnen" + +#: admin/bookings/em-cancelled.php:84 +#: admin/bookings/em-confirmed.php:85 +#: admin/bookings/em-pending.php:99 +#: admin/bookings/em-rejected.php:84 +#, fuzzy +msgid "Booker" +msgstr "Gebucht" + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Wiederherstellen" + +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-rejected.php:112 +msgid "Edit/View" +msgstr "Bearbeiten/Anzeigen" + +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Keine stornierten Reservierungen." + +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +msgid "Unapprove" +msgstr "Genehmigung zurückziehen" + +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +msgid "Reject" +msgstr "Ablehnen" + +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +msgid "No confirmed bookings." +msgstr "Keine bestätigten Reservierungen." + +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Keine abgelehnten Reservierungen." + +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Keine ausstehenden Reservierungen." + +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Alle Veranstaltungen" + +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Zukünftige Veranstaltungen" + +#: admin/bookings/em-events.php:51 +msgid "Total" +msgstr "Gesamt" + +#: admin/bookings/em-events.php:72 +msgid "Filter" +msgstr "Filter" + +#: admin/em-options.php:615 +#: admin/em-options.php:665 +#: admin/em-options.php:755 +#: classes/em-location-posts-admin.php:41 +msgid "Town" +msgstr "Stadt" + +#: admin/em-admin.php:41 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Erste Hilfe für Events Manager" + +#: admin/em-help.php:25 +msgid "Placeholders for customizing event pages" +msgstr "Platzhalter für die Anpassung von Veranstaltungsseiten" + +#: admin/em-help.php:26 +#, php-format +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "Auf der Einstellungsseite finden Sie verschiedene Textfelder, in denen Sie eintragen können, wie die Veranstaltung, der Veranstaltungsort, die Liste der Veranstaltungen, oder die Liste der Veranstaltungsorte angezeigt werden sollen. Mit den folgenden Platzhaltern können Sie wählen, welche Informationen angezeigt werden sollen." + +#: admin/em-admin.php:90 +#: classes/em-people.php:28 +msgid "Events Manager" +msgstr "Events Manager" + +#: em-functions.php:213 +msgid "Mon" +msgstr "Mo" + +#: em-functions.php:213 +msgid "Tue" +msgstr "Di" + +#: em-functions.php:213 +msgid "Wed" +msgstr "Mi" + +#: em-functions.php:213 +msgid "Thu" +msgstr "Do" + +#: em-functions.php:213 +msgid "Fri" +msgstr "Fr" + +#: em-functions.php:213 +msgid "Sat" +msgstr "Sa" + +#: em-functions.php:213 +msgid "Sun" +msgstr "So" + +#: classes/em-event-post-admin.php:192 +#: classes/em-event-post-admin.php:359 +#: classes/em-event-post-admin.php:365 +msgid "Group Ownership" +msgstr "Gruppen-Besitz" + +#: classes/em-event-post-admin.php:185 +msgid "Bookings Stats" +msgstr "Reservierungsstatistik" + +#: templates/forms/event/booking-stats.php:12 +msgid "Available Spaces" +msgstr "Freie Plätze" + +#: templates/forms/event/booking-stats.php:13 +msgid "Confirmed Spaces" +msgstr "Bestätigte Plätze" + +#: templates/forms/event/booking-stats.php:14 +msgid "Pending Spaces" +msgstr "Wartende Reservierungen" + +#: templates/forms/event/booking-stats.php:32 +msgid "No responses yet!" +msgstr "Noch keine Antworten!" + +#: classes/em-event-post-admin.php:246 +#, php-format +msgid "No categories available, create one here first" +msgstr "Noch keine Kategorien vorhanden, erstellen Sie eine Kategorie" + +#: templates/forms/event-editor.php:169 +msgid "No image uploaded for this event yet" +msgstr "Bisher wurde kein Bild für die Veranstaltung hochgeladen." + +#: classes/em-event-post-admin.php:189 +#: classes/em-event-post-admin.php:362 +msgid "Attributes" +msgstr "Attribute" + +#: templates/forms/event/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Sie haben noch keine benutzerdefinierten Attribute in Ihren Events Manager Template-Einstellungen definiert. Bitte fügen Sie diese auf der Einstellungs-Seite ein." + +#: templates/forms/event/attributes.php:50 +msgid "Depreciated Attributes" +msgstr "Verfallene Attribute" + +#: templates/forms/event/attributes.php:83 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings to add attribute placeholders." +msgstr "Um Attribute zu verwenden, müssen Sie Attribute in Ihren Vorlagen definieren, sonst werden sie nicht angezeigt. Gehen sie über Veranstaltungen zu Einstellunge um die Platzhalter für die Attribute hinzuzufügen." + +#: em-install.php:284 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_NAME on #F #j, #Y. He wants to reserve #_BOOKINGSPACES spaces.
              Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
              Yours faithfully,
              Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) wird an der Veranstaltung #_NAME am #F #j, #Y teilnehmen. Er/sie will #_BOOKINGSPACES Plätze reservieren.
              Es sind bisher #_BOOKEDSPACES Plätze reserviert, #_AVAILABLESPACES sind noch verfügbar.
              Mit freundlichen Grüßen
              Events Manager - http://wp-events-plugin.com" + +#: em-install.php:284 +#: em-install.php:285 +#: em-install.php:286 +#: em-install.php:287 +#: em-install.php:288 +#: em-install.php:289 +#: em-install.php:290 +#: em-install.php:291 +msgid "

              -------------------------------
              Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

              -------------------------------
              Powered by Events Manager - http://wp-events-plugin.com" + +#: em-install.php:285 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_NAME on #F #j, #Y. He wanted to reserve #_BOOKINGSPACES spaces.
              Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
              Yours faithfully,
              Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) hat seine Buchung für #_NAME am #F #j, #Y storniert. Er wollte #_BOOKINGSPACES Plätze reservieren.
              Momentan sind #_BOOKEDSPACES Plätze reserviert, #_AVAILABLESPACES sind noch verfügbar.
              Mit freundlichen Grüßen
              Events Manager - http://wp-events-plugin.com" + +#: em-install.php:286 +msgid "Dear #_BOOKINGNAME,
              you have successfully reserved #_BOOKINGSPACES space/spaces for #_NAME.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "liebe #_BOOKINGNAME,
              Sie haben erfolgreich #_BOOKINGSPACES Platz/Plätze für die Veranstaltung #_NAME reserviert.
              Mit freundlichen Grüßen
              #_CONTACTNAME" + +#: em-install.php:287 +msgid "Dear #_BOOKINGNAME,
              You have requested #_BOOKINGSPACES space/spaces for #_NAME.
              Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "Liebe #_BOOKINGNAME,
              Sie haben #_BOOKINGSPACES Platz/Plätze für #_NAME reserviert.
              Ihre Reservierung muss noch bestätigt werden. Sie erhalten eine weitere Email, sobald die Bestätigung erfolgt.
              Mit freundlichen Grüßen
              #_CONTACTNAME" + +#: em-install.php:288 +msgid "Dear #_BOOKINGNAME,
              Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been rejected.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "Hallo #_BOOKINGNAME,
              Die Reservierung für #_BOOKINGSPACES Platz/Plätze bei der Veranstaltung #_NAME am #F #j, #Y wurde abgelehnt.
              Mit freundlichen Grüßen
              #_CONTACTNAME" + +#: em-install.php:289 +msgid "Dear #_BOOKINGNAME,
              Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been cancelled.
              Yours faithfully,
              #_CONTACTNAME" +msgstr "Hallo #_BOOKINGNAME,
              Die Reservierung für #_BOOKINGSPACES Platz/Plätze bei der Veranstaltung #_NAME am #F #j, #Y wurde storniert.
              Mit freundlichen Grüßen
              #_CONTACTNAME" + +#: em-install.php:379 +#: em-install.php:387 +#: em-install.php:418 +#, php-format +msgid "No %s" +msgstr "Keine %s" + +#: em-debug.php:18 +#: em-install.php:406 +msgid "
            • No events in this location
            • " +msgstr "
            • Keine Termine für diesen Veranstaltungsort
            • " + +#: em-install.php:419 +#, fuzzy +msgid "
            • No events in this category
            • " +msgstr "
            • Keine Termine für diesen Veranstaltungsort
            • " + +#: em-install.php:487 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Reservierung wurde erfolgreich gespeichert. Sie werden eine E-Mail erhalten, sobald die Reservierung bestätigt wird." + +#: em-install.php:488 +msgid "Booking successful." +msgstr "Reservierung erfolgreich." + +#: em-install.php:490 +msgid "You must log in or register to make a booking." +msgstr "Sie müssen sich anmelden oder registrieren, um eine Reservierung vorzunehmen." + +#: em-install.php:491 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "Allerdings gab es einige Probleme bei der Übermittlung der Bestätigungs-E-Mails an Sie und/oder den Ansprechpartner der Veranstaltung. Bitte kontaktieren sie den Veranstalter direkt und teilen Sie ihm die Details zum Fehler mit." + +#: em-install.php:492 +msgid "Booking could not be created" +msgstr "Reservierung konnte nicht erstellt werden" + +#: em-install.php:493 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Diese E-Mail existiert bereits in unserem System. Bitte melden Sie sich an, um mit ihrer Reservierung fortzufahren." + +#: em-install.php:494 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Ein neues Benutzerkonto wurde für Sie erstellt. Die Zugangsdaten wurden per E-Mail an sie verschickt." + +#: em-install.php:495 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Es gab ein Problem beim Erstellen eines Benutzerkontos. Kontaktieren Sie bitte einen Website-Administrator." + +#: em-install.php:496 +msgid "You already have booked a seat at this event." +msgstr "Sie haben bereits einen Platz bei dieser Veranstaltung reserviert." + +#: em-install.php:497 +msgid "You must request at least one space to book an event." +msgstr "Sie müssen bei der Anfrage mindestens einen Platz anfordern, um die Veranstaltung zu reservieren." + +#: em-install.php:504 +#: em-install.php:512 +msgid "Booking Cancelled" +msgstr "Reservierung storniert" + +#: em-install.php:506 +msgid "Booking Pending" +msgstr "Reservierung in Bearbeitung" + +#: em-install.php:508 +msgid "Booking Rejected" +msgstr "Reservierung abgelehnt" + +#: em-install.php:510 +msgid "Booking Confirmed" +msgstr "Reservierung bestätigt" + +#: em-install.php:515 +msgid "Powered by" +msgstr "Präsentiert von" + +#: em-install.php:516 +msgid "Bookings - #_NAME" +msgstr "Reservierungen - #_NAME" + +#: em-debug.php:44 +#, php-format +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Sie befinden sich im Events Manager Debug-Modus. Um den Debug-Modus auszuschalten, gehen Sie auf die Einstellungen vom Events-Manager." + +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "Keine Ticket-ID vorhanden" + +#: em-actions.php:181 +#, php-format +msgid "%s successfully deleted" +msgstr "%s erfolgreich gelöscht" + +#: em-actions.php:358 +#, php-format +msgid "Booking %s" +msgstr "Reservierung %s" + +#: events-manager.php:295 +#: events-manager.php:303 +#: events-manager.php:309 +#, php-format +msgid "You do not have permission to publish %s" +msgstr "Sie haben keine Berechtigung, %s zu veröffentlichen" + +#: events-manager.php:299 +#: events-manager.php:307 +#: events-manager.php:313 +#: events-manager.php:319 +#, php-format +msgid "You do not have permission to edit %s" +msgstr "Sie haben keine Berechtigung, um %s zu bearbeiten" + +#: events-manager.php:296 +#: events-manager.php:304 +#: events-manager.php:310 +#, php-format +msgid "You do not have permission to delete others %s" +msgstr "Sie haben keine Berechtigung um %s von anderen zu löschen" + +#: events-manager.php:298 +#: events-manager.php:306 +#: events-manager.php:312 +#, php-format +msgid "You do not have permission to edit others %s" +msgstr "Sie haben keine Berechtigung um %s von anderen zu bearbeiten" + +#: events-manager.php:292 +#, php-format +msgid "You do not have permission to manage others %s" +msgstr "Sie haben keine Berechtigung um %s von anderen zu verwalten" + +#: admin/em-options.php:835 +#: events-manager.php:292 +#: events-manager.php:293 +msgid "bookings" +msgstr "Reservierungen" + +#: events-manager.php:297 +#: events-manager.php:305 +#: events-manager.php:311 +#: events-manager.php:318 +#, php-format +msgid "You do not have permission to delete %s" +msgstr "Sie haben keine Berechtigung, %s zu löschen" + +#: events-manager.php:293 +#, php-format +msgid "You do not have permission to manage %s" +msgstr "Sie haben keine Berechtigung, %s zu bearbeiten" + +#: admin/em-options.php:402 +#: admin/em-options.php:703 +#: em-posts.php:66 +#: em-posts.php:69 +msgid "Event Categories" +msgstr "Veranstaltungskategorien" + +#: admin/em-admin.php:40 +msgid "Events Manager Settings" +msgstr "Events Manager Einstellungen" + +#: admin/em-admin.php:40 +#: admin/em-admin.php:199 +#: admin/em-admin.php:207 +msgid "Settings" +msgstr "Einstellungen" + +#: admin/em-admin.php:41 +msgid "Help" +msgstr "Hilfe" + +#: admin/em-bookings.php:289 +#, fuzzy +msgid "Tax" +msgstr "Max" + +# @ dbem +#: admin/em-bookings.php:294 +msgid "Total (inc. tax)" +msgstr "" + +#: templates/forms/event/bookings.php:24 +#, fuzzy +msgid "You can have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Sie haben einen oder mehrere Tickets, die unter bestimmten Bedingungen verfügbar sind, z. B. Frühbucher-, Gruppen-Rabatte, maximale Buchungen pro Ticket, oder Preiskategorien etc." + +# @ dbem +#: templates/forms/event/bookings.php:24 +msgid "Basic HTML is allowed in ticket labels and descriptions." +msgstr "" + +# @ dbem +#: admin/em-options.php:1117 +msgid "Ticket Price (Descending)" +msgstr "" + +# @ dbem +#: admin/em-options.php:1118 +msgid "Ticket Price (Ascending)" +msgstr "" + +#: admin/em-options.php:1119 +#, fuzzy +msgid "Ticket Name (Ascending)" +msgstr "Ticket-Name" + +#: admin/em-options.php:1120 +#, fuzzy +msgid "Ticket Name (Descending)" +msgstr "Ticket-Name" + +#: admin/em-options.php:1057 +#, fuzzy +msgid "Can users cancel their booking?" +msgstr "%s Benutzer haben Reservierungen storniert." + +# @ dbem +#: admin/em-options.php:1057 +msgid "If enabled, users can cancel their bookings themselves from their bookings page." +msgstr "" + +# @ dbem +#: admin/em-options.php:1073 +msgid "Tax Rate" +msgstr "" + +# @ dbem +#: admin/em-options.php:1073 +msgid "Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price)." +msgstr "" + +# @ dbem +#: admin/em-options.php:1074 +msgid "Add tax to ticket price?" +msgstr "" + +# @ dbem +#: admin/em-options.php:1074 +msgid "When displaying ticket prices and booking totals, include the tax automatically?" +msgstr "" + +#: admin/em-options.php:1122 +#, fuzzy +msgid "Order Tickets By" +msgstr "Sortieren nach" + +# @ dbem +#: admin/em-options.php:1122 +msgid "Choose which order your tickets appear." +msgstr "" + +#: admin/em-options.php:1130 +#, fuzzy +msgid "No-User Booking Mode" +msgstr "Hinweise" + +# @ dbem +#: admin/em-options.php:1134 +msgid "By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them." +msgstr "" + +# @ dbem +#: admin/em-options.php:1136 +msgid "Warning : Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information." +msgstr "" + +#: admin/em-options.php:1139 +#, fuzzy +msgid "Enable No-User Booking Mode?" +msgstr "Möchten sie Reservierungen aktivieren?" + +#: admin/em-options.php:1139 +#, fuzzy +msgid "This disables user registrations for bookings." +msgstr "Registrierung eines neuen Benutzers auf Deinem Blog %s:" + +#: admin/em-options.php:1145 +#, fuzzy +msgid "Assign bookings to" +msgstr "Reservierungen" + +#: admin/em-options.php:1214 +#, fuzzy +msgid "Event Email Templates" +msgstr "Email-Vorlagen für die Reservierung" + +#: admin/em-options.php:1224 +#: em-install.php:333 +#, fuzzy +msgid "Event Approved" +msgstr "Genehmigt" + +# @ dbem +#: admin/em-options.php:1225 +msgid "An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the publish_events capability." +msgstr "" + +#: admin/em-options.php:1221 +#: admin/em-options.php:1227 +#, fuzzy +msgid "Event approved subject" +msgstr "Titel der E-Mail an den Ansprechpartner" + +#: admin/em-options.php:1222 +#: admin/em-options.php:1228 +#, fuzzy +msgid "Event approved email" +msgstr "Veranstaltungsdetails" + +#: classes/em-booking.php:376 +#: classes/em-booking.php:384 +#, fuzzy +msgid "Guest User" +msgstr "Gast Standard-User" + +# @ dbem +#: classes/em-booking.php:380 +msgid "Not Supplied" +msgstr "" + +# @ dbem +#: classes/em-ticket.php:157 +msgid "Please enter a valid ticket price e.g. 10.50 (no currency signs)" +msgstr "" + +# @ dbem +#: em-install.php:290 +msgid "Dear #_CONTACTNAME,
              Your event #_NAME on #F #j, #Y has been approved.
              You can view your event here: #_EVENTURL" +msgstr "" + +# @ dbem +#: templates/placeholders/bookingform.php:17 +msgid "This event is fully booked." +msgstr "" + +#: admin/em-admin.php:91 +#, fuzzy +msgid "Update Blogs" +msgstr "Veranstaltungsort aktualisieren" + +#: admin/em-admin.php:139 +#, fuzzy, php-format +msgid "Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Uh Oh! Aus irgendeinem Grund konnte Wordpress keine Seite für Veranstaltungen erstellen (oder sie haben die Seite gerade gelöscht). Keine Sorge, alles, was Sie tun müssen, ist eine leere Seite mit einem beliebigen Namen zu erstellen. Dann wählen Sie diese neue Seite als Veranstaltungsseite auf der Einstellungsseite aus. Sorry für diesen zusätzlichen Schritt! Wenn Sie wissen, was Sie tun, können Sie dies absichtlich getan haben; in dem Fall ignorieren Sie diese Meldung" + +# @ dbem +#: admin/em-admin.php:148 +msgid "There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update." +msgstr "" + +# @ dbem +#: admin/em-admin.php:159 +#, php-format +msgid "MultiSite options have moved here. Dismiss message" +msgstr "" + +# @ dbem +#: admin/em-admin.php:171 +#, php-format +msgid "Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" +msgstr "" + +# @ dbem +#: admin/em-admin.php:213 +#: admin/em-options.php:1463 +msgid "Uninstall" +msgstr "" + +#: admin/em-ms-options.php:6 +#, fuzzy +msgid "Update Network" +msgstr "Kategorie Speichern" + +# @ default +#: admin/em-ms-options.php:24 +msgid "To update your network blogs with the latest Events Manager automatically, click the update button below." +msgstr "" + +#: admin/em-ms-options.php:27 +#, fuzzy +msgid "Update" +msgstr "aktualisiert" + +#: admin/em-ms-options.php:136 +#: admin/em-options.php:267 +#: admin/em-options.php:1051 +#, fuzzy +msgid "General" +msgstr "Allgemeine Optionen" + +# @ default +#: admin/em-ms-options.php:157 +#, php-format +msgid "%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network." +msgstr "" + +#: admin/em-ms-options.php:158 +#, fuzzy, php-format +msgid "When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site." +msgstr "Bei der Anzeige von globalen Ereignissen auf der Haupt-Website haben Sie die Möglichkeit, dass Nutzer beim Betrachten der Veranstaltungsdetails auf die Haupt-Website oder die sub-Website geleitet werden." + +#: admin/em-ms-options.php:159 +#, fuzzy, php-format +msgid "Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Zeigt standardmäßig Veranstaltungen von allen Sites im Netzwerk an. Sie können Veranstaltungen pro Blog immer noch einschränken, wenn sie Shortcodes und Template-Tags mit dem Blog -Attribut gekoppelt verwenden. Globale Tabellen müssen dafür eingeschaltet werden." + +# @ default +#: admin/em-ms-options.php:160 +#, php-format +msgid "You must have assigned a %s page in your main blog settings for this to work." +msgstr "" + +#: admin/em-ms-options.php:162 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#, fuzzy, php-format +msgid "%s Options" +msgstr "Option eins" + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:173 +#, fuzzy, php-format +msgid "Link sub-site %s directly to sub-site?" +msgstr "Verlinken der Veranstaltungen von Unterwebsites direkt zu diesen Unterwebsites?" + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, php-format +msgid "Global %s slug" +msgstr "" + +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, fuzzy +msgid "Example:" +msgstr "Name:" + +#: admin/em-ms-options.php:167 +#, fuzzy +msgid "Locations on main blog?" +msgstr "Format für Veranstaltungsorte" + +# @ dbem +#: admin/em-ms-options.php:167 +msgid "If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog." +msgstr "" + +#: admin/em-ms-options.php:172 +#, fuzzy, php-format +msgid "Display global %s on main blog?" +msgstr "Globale Veranstaltungen auf dem Haupt-Blog anzeigen?" + +# @ dbem +#: admin/em-options.php:112 +msgid "Settings have been reset back to default. Your events, locations and categories have not been modified." +msgstr "" + +#: admin/em-options.php:125 +#: admin/em-options.php:129 +#, fuzzy +msgid "Reset Events Manager" +msgstr "Events Manager" + +#: admin/em-options.php:126 +#, fuzzy +msgid "Are you sure you want to reset Events Manager?" +msgstr "Sind Sie sicher, dass Sie Ihre Reservierung stornieren wollen?" + +# @ dbem +#: admin/em-options.php:127 +msgid "All your settings, including email templates and template formats for Events Manager will be deleted." +msgstr "" + +#: admin/em-options.php:141 +#, fuzzy +msgid "Uninstall Events Manager" +msgstr "Events Manager" + +#: admin/em-options.php:142 +#, fuzzy +msgid "Are you sure you want to uninstall Events Manager?" +msgstr "Sind Sie sicher, dass Sie Ihre Reservierung stornieren wollen?" + +# @ dbem +#: admin/em-options.php:143 +msgid "All your settings and events will be permanently deleted. This cannot be undone." +msgstr "" + +# @ dbem +#: admin/em-options.php:144 +#, php-format +msgid "If you just want to deactivate the plugin, go to your plugins page." +msgstr "" + +# @ dbem +#: admin/em-options.php:146 +msgid "Uninstall and Deactivate" +msgstr "" + +#: admin/em-options.php:268 +#: admin/em-options.php:418 +#: admin/em-options.php:581 +#, fuzzy +msgid "Pages" +msgstr "%s Seite" + +# @ dbem +#: admin/em-options.php:269 +msgid "Formats/Layouts" +msgstr "" + +#: admin/em-options.php:271 +#, fuzzy +msgid "Booking Options" +msgstr "Reservierungsdetails" + +#: admin/em-options.php:273 +#, fuzzy +msgid "Emails" +msgstr "E-Mail" + +#: admin/em-options.php:287 +#, fuzzy +msgid "General Options" +msgstr "Allgemeine Optionen" + +# @ dbem +#: admin/em-options.php:290 +msgid "Disable thumbnails?" +msgstr "" + +# @ dbem +#: admin/em-options.php:290 +msgid "Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here)." +msgstr "" + +#: admin/em-options.php:293 +#: admin/em-options.php:334 +#: admin/em-options.php:346 +#, fuzzy, php-format +msgid "%s Settings" +msgstr "Einstellungen" + +#: admin/em-options.php:297 +#, fuzzy +msgid "Enable recurrence?" +msgstr "Wollen sie sich wiederholende Veranstaltungen verwenden?" + +#: admin/em-options.php:299 +#, fuzzy +msgid "Enable tags?" +msgstr "Möchten sie Reservierungen aktivieren?" + +#: admin/em-options.php:299 +#, fuzzy +msgid "Select yes to enable the tag features" +msgstr "Wählen Sie Ja, um die Veranstaltungen in Kategorien zu verwalten." + +#: admin/em-options.php:301 +#, fuzzy +msgid "Enable categories?" +msgstr "Kategorien verwenden?" + +# @ dbem +#: admin/em-options.php:310 +msgid "If an event does not have a category assigned when editing, this one will be assigned automatically." +msgstr "" + +#: admin/em-options.php:313 +#, fuzzy +msgid "Enable event attributes?" +msgstr "Veranstaltungsattribute verwenden?" + +# @ dbem +#: admin/em-options.php:314 +msgid "Enable event custom fields?" +msgstr "" + +# @ dbem +#: admin/em-options.php:314 +msgid "Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area." +msgstr "" + +#: admin/em-options.php:338 +#, fuzzy +msgid "Enable locations?" +msgstr "Möchten sie Reservierungen aktivieren?" + +# @ dbem +#: admin/em-options.php:338 +msgid "If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats." +msgstr "" + +#: admin/em-options.php:340 +#, fuzzy +msgid "Require locations for events?" +msgstr "Wie für Veranstaltungen." + +# @ dbem +#: admin/em-options.php:340 +msgid "Setting this to no will allow you to submit events without locations. You can use the {no_location}...{/no_location} or {has_location}..{/has_location} conditional placeholder to selectively display location information." +msgstr "" + +#: admin/em-options.php:346 +#: admin/em-options.php:825 +#: admin/em-options.php:1393 +#, fuzzy +msgid "Other" +msgstr "dritte" + +# @ dbem +#: admin/em-options.php:387 +msgid "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter." +msgstr "" + +# @ dbem +#: admin/em-options.php:388 +#, php-format +msgid "Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named single-%s.php as shown on the wordpress codex, and leave this set to Posts." +msgstr "" + +# @ default +#: admin/em-options.php:389 +#, php-format +msgid "By using formats, you can control how your %s are displayed from within the Events Manager Formats tab above without having to edit your theme files." +msgstr "" + +# @ dbem +#: admin/em-options.php:392 +msgid "Permalink Slugs" +msgstr "" + +# @ dbem +#: admin/em-options.php:394 +msgid "You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings." +msgstr "" + +# @ dbem +#: admin/em-options.php:397 +#: admin/em-options.php:399 +#: admin/em-options.php:402 +#: admin/em-options.php:405 +#, php-format +msgid "e.g. %s - you can use / seperators too" +msgstr "" + +#: admin/em-options.php:405 +#: admin/em-options.php:793 +#: em-posts.php:29 +#: em-posts.php:32 +#, fuzzy +msgid "Event Tags" +msgstr "Bild der Veranstaltung" + +#: admin/em-options.php:414 +#: admin/em-options.php:577 +#: admin/em-options.php:825 +#, fuzzy, php-format +msgid "%s Pages" +msgstr "%s Seite" + +#: admin/em-options.php:418 +#: admin/em-options.php:581 +#, fuzzy, php-format +msgid "Display %s as" +msgstr "Zeigt die Adresse." + +# @ default +#: admin/em-options.php:418 +#: admin/em-options.php:581 +msgid "Posts" +msgstr "" + +# @ dbem +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:582 +#: admin/em-options.php:649 +#: admin/em-options.php:721 +#: admin/em-options.php:797 +msgid "Override with Formats?" +msgstr "" + +# @ dbem +#: admin/em-options.php:427 +#: admin/em-options.php:590 +#, php-format +msgid "%s List/Archives" +msgstr "" + +#: admin/em-options.php:435 +#: admin/em-options.php:594 +#: admin/em-options.php:707 +#, fuzzy, php-format +msgid "[No %s Page]" +msgstr "[Keine Veranstaltungsseite]" + +# @ dbem +#: admin/em-options.php:440 +msgid "This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags." +msgstr "" + +#: admin/em-options.php:447 +#, fuzzy +msgid "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Einige wordpress Themen halten sich nicht an die Vorgaben für die Generierung von Navigationsmenüs und dem automatischen rewrite der Titel. Wenn das rewriting zu Problemen führt, oder ihre Menüs auf der Veranstaltungsseite nicht richtig funktionieren, versuchen Sie diese Einstellung auf 'Ja' zu setzen und geben sie eine passende HTML-Formatierung für den Seitentitel ein." + +#: admin/em-options.php:454 +#: admin/em-options.php:604 +#, fuzzy +msgid "Enable Archives?" +msgstr "Möchten sie Reservierungen aktivieren?" + +# @ dbem +#: admin/em-options.php:454 +#: admin/em-options.php:604 +msgid "Allow WordPress post-style archives." +msgstr "" + +#: admin/em-options.php:459 +#, fuzzy +msgid "Default event archive ordering" +msgstr "Sortierung der Veranstaltungsliste" + +#: admin/em-options.php:464 +#, fuzzy +msgid "Order by start date, start time" +msgstr "Sortieren nach Name, Startdatum, dann Startzeit" + +#: admin/em-options.php:465 +#, fuzzy +msgid "Order by name" +msgstr "Sortieren nach" + +#: admin/em-options.php:496 +#: admin/em-options.php:645 +#: admin/em-options.php:717 +#, fuzzy +msgid "General settings" +msgstr "Allgemeine Optionen" + +# @ dbem +#: admin/em-options.php:502 +#: admin/em-options.php:650 +msgid "Include in WordPress Searches?" +msgstr "" + +# @ dbem +#: admin/em-options.php:502 +#: admin/em-options.php:650 +#, php-format +msgid "Allow %s to appear in the built-in search results." +msgstr "" + +#: admin/em-options.php:506 +#: admin/em-options.php:654 +#: admin/em-options.php:744 +#, fuzzy, php-format +msgid "Default %s list options" +msgstr "Standard-Listenformat für %s " + +# @ dbem +#: admin/em-options.php:507 +#: admin/em-options.php:655 +#: admin/em-options.php:745 +msgid "These can be overriden when using shortcode or template tags." +msgstr "" + +#: admin/em-options.php:595 +#: admin/em-options.php:708 +#: admin/em-options.php:832 +#: admin/em-options.php:833 +#: admin/em-options.php:834 +#: admin/em-options.php:835 +#, fuzzy, php-format +msgid "%s page" +msgstr "%s Seite" + +# @ dbem +#: admin/em-options.php:595 +#, php-format +msgid "This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags." +msgstr "" + +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, fuzzy, php-format +msgid "Show %s page in lists?" +msgstr "Zeige Veranstaltungsseite in Listen?" + +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, fuzzy, php-format +msgid "Check this option if you want the %s page to appear together with other pages in pages lists." +msgstr "Aktivieren Sie diese Option, wenn sie wollen, dass die Veranstaltungsseite mit den anderen Seiten in den Seitenlisten angezeigt werden soll." + +#: admin/em-options.php:609 +#: admin/em-options.php:724 +#: admin/em-options.php:800 +#, fuzzy +msgid "Default archive ordering" +msgstr "Sortierung der Veranstaltungsliste" + +#: admin/em-options.php:614 +#: admin/em-options.php:615 +#: admin/em-options.php:616 +#: admin/em-options.php:664 +#: admin/em-options.php:665 +#: admin/em-options.php:666 +#: admin/em-options.php:754 +#: admin/em-options.php:755 +#: admin/em-options.php:756 +#, fuzzy, php-format +msgid "Order by %s" +msgstr "Sortieren nach" + +#: admin/em-options.php:659 +#: admin/em-options.php:749 +#, fuzzy +msgid "Default list ordering" +msgstr "Sortierung der Veranstaltungsliste" + +#: admin/em-options.php:693 +#: admin/em-options.php:783 +#, fuzzy +msgid "List Limits" +msgstr "Anzahl Veranstaltungen in der Veranstaltungsliste" + +#: admin/em-options.php:693 +#: admin/em-options.php:783 +#, fuzzy, php-format +msgid "This will control how many %s are shown on one list by default." +msgstr "Gibt an, wie viele Ereignisse auf einer Liste standardmäßig angezeigt werden." + +#: admin/em-options.php:708 +#, fuzzy, php-format +msgid "This option allows you to select which page to use as the %s page." +msgstr "Mit dieser Option können Sie wählen, welche Seite als Veranstaltungsseite verwendet werden soll." + +# @ default +#: admin/em-options.php:721 +msgid "Setting this to yes will make categories display as a page rather than an archive." +msgstr "" + +#: admin/em-options.php:797 +#, fuzzy +msgid "tags" +msgstr "Status" + +# @ default +#: admin/em-options.php:827 +msgid "These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated." +msgstr "" + +#: admin/em-options.php:831 +#: classes/em-event-posts-admin.php:117 +#: classes/em-event-posts-admin.php:233 +#, fuzzy +msgid "None" +msgstr "keine(r)" + +#: admin/em-options.php:832 +#, fuzzy +msgid "Edit events" +msgstr "Veranstaltung bearbeiten" + +#: admin/em-options.php:833 +#, fuzzy +msgid "Edit locations" +msgstr "Standort bearbeiten" + +#: admin/em-options.php:834 +#, fuzzy +msgid "Manage bookings" +msgstr "Reservierungen verwalten" + +#: admin/em-options.php:835 +#, fuzzy +msgid "My bookings" +msgstr "Meine Reservierungen" + +#: admin/em-options.php:835 +#, fuzzy +msgid "Users can view their bookings for other events on this page." +msgstr "Benutzer können Reservierungen für ihre Veranstaltungen verwalten." + +# @ dbem +#: admin/em-options.php:869 +msgid "Search Form Options" +msgstr "" + +#: admin/em-options.php:873 +#, fuzzy +msgid "Show text search?" +msgstr "Veranstaltungssuche anzeigen?" + +# @ dbem +#: admin/em-options.php:874 +msgid "Text search label" +msgstr "" + +# @ dbem +#: admin/em-options.php:874 +msgid "Appears within the input box." +msgstr "" + +# @ dbem +#: admin/em-options.php:875 +msgid "Show date range?" +msgstr "" + +#: admin/em-options.php:876 +#, fuzzy +msgid "Show categories?" +msgstr "Kategorien verwenden?" + +#: admin/em-options.php:877 +#, fuzzy +msgid "Categories label" +msgstr "Kategorien" + +# @ dbem +#: admin/em-options.php:877 +#: admin/em-options.php:879 +#: admin/em-options.php:881 +#: admin/em-options.php:883 +#: admin/em-options.php:885 +msgid "Appears as the first default search option." +msgstr "" + +#: admin/em-options.php:878 +#, fuzzy +msgid "Show countries?" +msgstr "Alle Länder" + +#: admin/em-options.php:879 +#, fuzzy +msgid "All countries text" +msgstr "Alle Länder" + +#: admin/em-options.php:880 +#, fuzzy +msgid "Show regions?" +msgstr "Zeige Lange Veranstaltungen?" + +#: admin/em-options.php:881 +#, fuzzy +msgid "All regions text" +msgstr "Alle Regionen" + +# @ dbem +#: admin/em-options.php:882 +msgid "Show states?" +msgstr "" + +#: admin/em-options.php:883 +#, fuzzy +msgid "All states text" +msgstr "Alle Bundesstaaten" + +# @ dbem +#: admin/em-options.php:884 +msgid "Show towns/cities?" +msgstr "" + +# @ dbem +#: admin/em-options.php:885 +msgid "All towns/cities text" +msgstr "" + +#: admin/em-options.php:893 +#, fuzzy +msgid "Date/Time formats" +msgstr "Kategorien-Format" + +# @ dbem +#: admin/em-options.php:895 +#, php-format +msgid "Date and Time formats follow the WordPress time formatting conventions" +msgstr "" + +#: admin/em-options.php:898 +#, fuzzy +msgid "Date Format" +msgstr "Format für Text in Karte" + +#: admin/em-options.php:898 +#: admin/em-options.php:900 +#, fuzzy, php-format +msgid "For use with the %s placeholder" +msgstr " %s sind erlaubt." + +# @ dbem +#: admin/em-options.php:899 +msgid "Date Seperator" +msgstr "" + +# @ dbem +#: admin/em-options.php:899 +#: admin/em-options.php:901 +#, php-format +msgid "For when start/end %s are present, this will seperate the two (include spaces here if necessary)." +msgstr "" + +#: admin/em-options.php:899 +#, fuzzy +msgid "dates" +msgstr "Tage" + +# @ dbem +#: admin/em-options.php:900 +msgid "Time Format" +msgstr "" + +# @ dbem +#: admin/em-options.php:901 +msgid "Time Seperator" +msgstr "" + +# @ dbem +#: admin/em-options.php:901 +msgid "times" +msgstr "" + +#: admin/em-options.php:918 +#, fuzzy +msgid "Full calendar events/day limit" +msgstr "Formatierung der Veranstaltung für den großen Kalender." + +# @ dbem +#: admin/em-options.php:918 +msgid "To reduce the clutter on your calendar, you can add a limit to events displayed in one day on the calendar." +msgstr "" + +#: admin/em-options.php:989 +#, fuzzy +msgid "Tags format" +msgstr "Kategorien-Format" + +# @ dbem +#: admin/em-options.php:992 +msgid "Tag" +msgstr "" + +# @ dbem +#: admin/em-options.php:994 +#: admin/em-options.php:995 +msgid "tag" +msgstr "" + +#: admin/em-options.php:994 +#, fuzzy +msgid "The format of a single tag page title." +msgstr "Seitentitel für eine Seite mit einer einzelnen Veranstaltung." + +#: admin/em-options.php:995 +#, fuzzy +msgid "The format of a single tag page." +msgstr "Format für Seite mit einer einzelnen Veranstaltung." + +#: admin/em-options.php:999 +#, fuzzy +msgid "The format of the events the list inserted in the tag page through the #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS element." +msgstr "Formatierung der Veranstaltungen in einer Liste auf der Seite vom Veranstaltungsort, angezeigt mit dem Elementen #_NEXTEVENTS, #_PASTEVENTS und #_ALLEVENTS." + +#: admin/em-options.php:1000 +#, fuzzy +msgid "The message to be displayed in the list generated by #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS when no events are available." +msgstr "Die Meldung, die anstatt der von #_NEXTEVENTS, #_PASTEVENTS und #_ALLEVENTS generierten Listen angezeigt wird, wenn keine Veranstaltungen verfügbar sind." + +#: admin/em-options.php:1067 +#, fuzzy +msgid "Pricing" +msgstr "Preis" + +#: admin/em-options.php:1083 +#, fuzzy +msgid "Booking Form" +msgstr "Reservierung bestätigt" + +#: admin/em-options.php:1108 +#, fuzzy +msgid "Ticket" +msgstr "Tickets" + +# @ dbem +#: admin/em-options.php:1135 +msgid "The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user." +msgstr "" + +# @ dbem +#: admin/em-options.php:1145 +msgid "Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself." +msgstr "" + +#: admin/em-options.php:1169 +#, fuzzy +msgid "Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event." +msgstr "Aktivieren Sie diese Option, wenn Sie verhindern wollen, dass die Wordpress-Registrierungs-Mail verschickt wird, wenn ein User anonym eine Veranstaltung bucht." + +#: admin/em-options.php:1217 +#, fuzzy +msgid "Event Submitted" +msgstr "Reservierung abgeschickt" + +#: admin/em-options.php:1218 +#, fuzzy +msgid "An email will be sent to the an administrator of your choice when an event is submitted and pending approval." +msgstr "Eine E-Mail wird an den Ansprechpartner geschickt, wenn erstmalig eine Reservierung gemacht wird." + +# @ dbem +#: admin/em-options.php:1220 +msgid "Administrator Email" +msgstr "" + +# @ dbem +#: admin/em-options.php:1220 +msgid "If left blank, no email will be sent. Seperate emails with commas for more than one email." +msgstr "" + +#: admin/em-options.php:1272 +#, fuzzy +msgid "Event Submission Forms" +msgstr "Anonyme Einreichung von Veranstaltungen" + +#: admin/em-options.php:1276 +#, fuzzy, php-format +msgid "You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below." +msgstr "Sie können Benutzern erlauben, in ihrem Blog Veranstaltungen vorzuschlagen, indem Sie den [event_form]-Shortcode nutzen und das anonyme Einsenden von Veranstaltungen unten erlauben." + +# @ dbem +#: admin/em-options.php:1279 +msgid "Use Visual Editor?" +msgstr "" + +# @ dbem +#: admin/em-options.php:1279 +msgid "Users can now use the WordPress editor for easy HTML entry in the submission form." +msgstr "" + +# @ dbem +#: admin/em-options.php:1280 +msgid "Show form again?" +msgstr "" + +# @ dbem +#: admin/em-options.php:1280 +msgid "When a user submits their event, you can display a new event form again." +msgstr "" + +# @ dbem +#: admin/em-options.php:1281 +msgid "Customize the message your user sees when they submitted their event." +msgstr "" + +#: admin/em-options.php:1284 +#, fuzzy +msgid "Anonymous event submissions" +msgstr "Anonyme Einreichung von Veranstaltungen" + +#: admin/em-options.php:1288 +#, fuzzy +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting." +msgstr "Veranstaltungen benötigen einen Benutzer als Eigentümer. Damit Veranstaltungen anonym eingereicht werden können, müssen Sie hier einen Benutzer zuordnen. Wir empfehlen Ihnen, dafür einen Benutzer \"Anonym\" einzurichten und ein sehr gutes Passwort zu verwenden." + +#: admin/em-options.php:1305 +#, fuzzy +msgid "Image Sizes" +msgstr "Bilder Größe" + +# @ dbem +#: admin/em-options.php:1331 +msgid "Send HTML Emails?" +msgstr "" + +# @ dbem +#: admin/em-options.php:1331 +msgid "If set to yes, your emails will be sent in HTML format, otherwise plaintext." +msgstr "" + +#: admin/em-options.php:1364 +#: admin/em-options.php:1374 +#: admin/em-options.php:1382 +#: admin/em-options.php:1393 +#, fuzzy, php-format +msgid "%s Capabilities" +msgstr "Berechtigungen" + +#: admin/em-options.php:1366 +#: admin/em-options.php:1376 +#: admin/em-options.php:1384 +#, fuzzy, php-format +msgid "Users can publish %s and skip any admin approval" +msgstr "Benutzer kann Veranstaltungen ohne jegliche Admin-Genehmigung veröffentlichen." + +#: admin/em-options.php:1367 +#: admin/em-options.php:1377 +#: admin/em-options.php:1385 +#, fuzzy, php-format +msgid "User can delete other users %s" +msgstr "Benutzer kann Veranstaltungen andere Benutzer löschen." + +#: admin/em-options.php:1368 +#: admin/em-options.php:1378 +#: admin/em-options.php:1386 +#, fuzzy, php-format +msgid "User can edit other users %s" +msgstr "Benutzer kann Veranstaltungen anderer Benutzer bearbeiten." + +#: admin/em-options.php:1369 +#: admin/em-options.php:1379 +#: admin/em-options.php:1387 +#, fuzzy, php-format +msgid "User can delete their own %s" +msgstr "Benutzer kann ihre eigenen Standorte löschen." + +#: admin/em-options.php:1370 +#: admin/em-options.php:1380 +#: admin/em-options.php:1388 +#, fuzzy, php-format +msgid "User can create and edit %s" +msgstr "Benutzer können ihre Veranstaltungen erstellen und bearbeiten." + +# @ dbem +#: admin/em-options.php:1371 +#: admin/em-options.php:1389 +#, php-format +msgid "User can view private %s" +msgstr "" + +#: admin/em-options.php:1374 +#: em-posts.php:165 +#, fuzzy +msgid "Recurring Event" +msgstr "Wiederholung" + +#: admin/em-options.php:1376 +#: admin/em-options.php:1377 +#: admin/em-options.php:1378 +#: admin/em-options.php:1379 +#: admin/em-options.php:1380 +#: events-manager.php:303 +#: events-manager.php:304 +#: events-manager.php:305 +#: events-manager.php:306 +#: events-manager.php:307 +#, fuzzy +msgid "recurring events" +msgstr "Wiederholungen" + +#: admin/em-options.php:1390 +#, fuzzy +msgid "User can use other user locations for their events." +msgstr "Benutzer kann Veranstaltungsorte anderer Benutzer bearbeiten." + +#: admin/em-options.php:1395 +#, fuzzy, php-format +msgid "User can delete %s categories and tags." +msgstr "Benutzer kann eigene Veranstaltungen löschen." + +#: admin/em-options.php:1396 +#, fuzzy, php-format +msgid "User can edit %s categories and tags." +msgstr "Benutzer kann globale Kategorien bearbeiten." + +#: admin/em-options.php:1400 +#, fuzzy +msgid "User can upload images along with their events and locations." +msgstr "Benutzer können Reservierungen für ihre Veranstaltungen verwalten." + +# @ dbem +#: admin/em-options.php:1460 +msgid "Uninstall/Reset" +msgstr "" + +# @ dbem +#: admin/em-options.php:1462 +msgid "Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data." +msgstr "" + +#: admin/em-options.php:1464 +#, fuzzy +msgid "Reset" +msgstr "Ablehnen" + +#: buddypress/bp-em-activity.php:58 +#, fuzzy, php-format +msgid "%s added the event %s to %s." +msgstr "%s fügt die Veranstaltung %s hinzu" + +#: buddypress/bp-em-core.php:51 +#, fuzzy, php-format +msgid "Search %s..." +msgstr "Suche..." + +#: buddypress/screens/my-events.php:48 +#: em-events.php:151 +#, fuzzy +msgid "Reschedule Events" +msgstr "Neu planen" + +# @ dbem +#: classes/em-categories-taxonomy.php:35 +#, php-format +msgid "Choose a color for your category. You can access this using the %s placeholder." +msgstr "" + +# @ dbem +#: classes/em-categories-taxonomy.php:46 +msgid "Choose/Upload Image" +msgstr "" + +# @ dbem +#: classes/em-categories-taxonomy.php:47 +#, php-format +msgid "Choose an image for your category, which can be displayed using the %s placeholder." +msgstr "" + +# @ dbem +#: classes/em-event-post-admin.php:42 +#, php-format +msgid "If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, detach it." +msgstr "" + +# @ dbem +#: classes/em-event-post-admin.php:43 +#, php-format +msgid "To manage the whole set, edit the recurring event template." +msgstr "" + +# @ dbem +#: classes/em-event-post-admin.php:83 +msgid "Your event details are incorrect and recurrences cannot be created, please correct these errors first:" +msgstr "" + +# @ dbem +#: classes/em-event-post-admin.php:85 +#: classes/em-location-post-admin.php:59 +#, php-format +msgid "Your %s details are incorrect and cannot be published, please correct these errors first:" +msgstr "" + +#: classes/em-event-post-admin.php:195 +#, fuzzy +msgid "Site Categories" +msgstr "Kategorien" + +#: classes/em-event-post-admin.php:352 +#, fuzzy +msgid "Recurrences" +msgstr "Wiederholung" + +# @ default +#: classes/em-event-post.php:94 +#: classes/em-event-post.php:97 +#: classes/em-event-post.php:102 +#: classes/em-event-post.php:113 +#: classes/em-event-post.php:116 +#: classes/em-event-post.php:121 +#, php-format +msgid "View all posts in %s" +msgstr "" + +#: classes/em-event-posts-admin.php:66 +#, fuzzy +msgid "View all categories" +msgstr "Alle Kategorien" + +#: classes/em-event-posts-admin.php:96 +#: classes/em-event-posts-admin.php:215 +#, fuzzy +msgid "Date and Time" +msgstr "Datum und Uhrzeit" + +#: classes/em-event-posts-admin.php:97 +#: classes/em-event-posts-admin.php:216 +#, fuzzy +msgid "Owner" +msgstr "Bestellen/Sortieren" + +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:132 +#: templates/buddypress/my-group-events.php:126 +#: templates/tables/events.php:132 +#, fuzzy +msgid "Edit Recurring Events" +msgstr "Veranstaltung bearbeiten" + +#: classes/em-event-posts-admin.php:150 +#, fuzzy +msgid "Detach" +msgstr "Suche" + +#: classes/em-event-posts-admin.php:163 +#, fuzzy, php-format +msgid "Duplicate %s" +msgstr "Diese Veranstaltung duplizieren" + +#: classes/em-event-posts-admin.php:163 +#, fuzzy +msgid "Duplicate" +msgstr "aktualisiert" + +#: classes/em-event-posts-admin.php:187 +#, fuzzy, php-format +msgid "Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the events page." +msgstr "Änderungen an dieser Veranstaltung führen dazu, dass alle Wiederholungen dieser Veranstaltung gelöscht und neu erstellt werden. Dabei werden alle Reservierungen gelöscht! Sie können die einzelnen Wiederholungen bearbeiten und diese von dieser Veranstaltung lösen." + +#: classes/em-event.php:428 +#, fuzzy +msgid "Event name" +msgstr "Veranstaltungsname" + +#: classes/em-event.php:464 +#, fuzzy +msgid "Since the event is repeated, you must specify an event end date greater than the start date." +msgstr "Da die Veranstaltung sich wiederholt, müssen Sie einen Veranstaltungstermin eingeben." + +# @ dbem +# @ default +#: classes/em-event.php:546 +#: classes/em-event.php:548 +msgid "There were some errors saving your location." +msgstr "" + +# @ default +#: classes/em-event.php:546 +#, php-format +msgid "It will not be displayed on the website listings, to correct this you must edit your location directly." +msgstr "" + +# @ dbem +#: classes/em-event.php:582 +#: classes/em-location.php:332 +#, php-format +msgid "Something went wrong saving your %s to the index table. Please inform a site administrator about this." +msgstr "" + +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#, fuzzy, php-format +msgid "Successfully saved %s" +msgstr "%s erfolgreich hinzugefügt." + +# @ dbem +#: classes/em-event.php:594 +#: classes/em-location.php:342 +#, php-format +msgid "Something went wrong updating your %s to the index table. Please inform a site administrator about this." +msgstr "" + +#: classes/em-event.php:1159 +#: classes/em-location.php:618 +#, fuzzy, php-format +msgid "Edit %s" +msgstr "Benutzer bearbeiten" + +#: classes/em-event.php:1384 +#, fuzzy +msgid "Event detached." +msgstr "Veranstaltungsdatum" + +# @ dbem +#: classes/em-event.php:1384 +msgid "Undo" +msgstr "" + +#: classes/em-event.php:1388 +#, fuzzy +msgid "Event could not be detached." +msgstr "%s konnte nicht gelöscht werden." + +# @ dbem +#: classes/em-event.php:1402 +msgid "Event re-attached to recurrence." +msgstr "" + +#: classes/em-event.php:1405 +#, fuzzy +msgid "Event could not be attached." +msgstr "%s konnte nicht gelöscht werden." + +#: classes/em-location.php:224 +#: widgets/em-locations.php:22 +#, fuzzy +msgid "Location name" +msgstr "Standort-Name" + +# @ dbem +#: em-install.php:291 +msgid "A new event has been submitted by #_CONTACTNAME.
              Name : #_EVENTNAME
              Date : #_EVENTDATES
              Time : #_EVENTTIMES
              Please visit #_EDITEVENTURL to review this event for approval." +msgstr "" + +#: em-install.php:321 +#, fuzzy +msgid "All Cities/Towns" +msgstr "Alle Länder" + +# @ dbem +#: em-install.php:325 +#: em-install.php:328 +msgid "You have successfully submitted your event, which will be published pending approval." +msgstr "" + +# @ dbem +#: em-install.php:331 +msgid "Submitted Event Awaiting Approval" +msgstr "" + +#: em-install.php:378 +#, fuzzy +msgid "All Day" +msgstr "alle %s" + +#: em-install.php:424 +#, fuzzy +msgid "
            • No events in this tag
            • " +msgstr "
            • Keine Termine für diesen Veranstaltungsort
            • " + +#: em-install.php:502 +#, fuzzy +msgid "New Booking" +msgstr "Neue Reservierung" + +#: em-posts.php:30 +#: em-posts.php:33 +#, fuzzy +msgid "Event Tag" +msgstr "Bild der Veranstaltung" + +#: em-posts.php:34 +#, fuzzy +msgid "Search Event Tags" +msgstr "Suche Veranstaltungen" + +#: em-posts.php:35 +#, fuzzy +msgid "Popular Event Tags" +msgstr "Frühere Veranstaltungen" + +#: em-posts.php:36 +#, fuzzy +msgid "All Event Tags" +msgstr "Alle Veranstaltungen" + +#: em-posts.php:37 +#, fuzzy +msgid "Parent Event Tags" +msgstr "Frühere Veranstaltungen" + +#: em-posts.php:38 +#, fuzzy +msgid "Parent Event Tag:" +msgstr "Frühere Veranstaltungen" + +#: em-posts.php:39 +#, fuzzy +msgid "Edit Event Tag" +msgstr "Veranstaltung bearbeiten" + +#: em-posts.php:40 +#, fuzzy +msgid "Update Event Tag" +msgstr "Veranstaltung bearbeiten" + +#: em-posts.php:41 +#, fuzzy +msgid "Add New Event Tag" +msgstr "Hinzufügen Veranstaltung" + +#: em-posts.php:42 +#, fuzzy +msgid "New Event Tag Name" +msgstr "Veranstaltungsname" + +# @ dbem +#: em-posts.php:43 +msgid "Seperate event tags with commas" +msgstr "" + +#: em-posts.php:44 +#: em-posts.php:81 +#, fuzzy +msgid "Add or remove events" +msgstr "Veranstaltung hinzufügen" + +#: em-posts.php:45 +#, fuzzy +msgid "Choose from most used event tags" +msgstr "Format für Seite mit einer einzelnen Veranstaltung." + +#: em-posts.php:67 +#: em-posts.php:70 +#, fuzzy +msgid "Event Category" +msgstr "Veranstaltungskategorien" + +#: em-posts.php:71 +#, fuzzy +msgid "Search Event Categories" +msgstr "Veranstaltungskategorien" + +#: em-posts.php:72 +#, fuzzy +msgid "Popular Event Categories" +msgstr "Veranstaltungskategorien" + +#: em-posts.php:73 +#, fuzzy +msgid "All Event Categories" +msgstr "Veranstaltungskategorien" + +#: em-posts.php:74 +#, fuzzy +msgid "Parent Event Categories" +msgstr "Veranstaltungskategorien" + +#: em-posts.php:75 +#, fuzzy +msgid "Parent Event Category:" +msgstr "Veranstaltungskategorien" + +#: em-posts.php:76 +#, fuzzy +msgid "Edit Event Category" +msgstr "Kategorie bearbeiten" + +#: em-posts.php:77 +#, fuzzy +msgid "Update Event Category" +msgstr "Kategorie Speichern" + +#: em-posts.php:78 +#, fuzzy +msgid "Add New Event Category" +msgstr "Veranstaltungskategorien" + +#: em-posts.php:79 +#, fuzzy +msgid "New Event Category Name" +msgstr "Veranstaltungskategorien" + +# @ dbem +#: em-posts.php:80 +msgid "Seperate event categories with commas" +msgstr "" + +# @ dbem +#: em-posts.php:82 +msgid "Choose from most used event categories" +msgstr "" + +#: em-posts.php:117 +#, fuzzy +msgid "Display events on your blog." +msgstr "Globale Veranstaltungen auf dem Haupt-Blog anzeigen?" + +#: em-posts.php:123 +#, fuzzy +msgid "Add New Event" +msgstr "Hinzufügen Veranstaltung" + +#: em-posts.php:126 +#, fuzzy +msgid "New Event" +msgstr "Keine Veranstaltungen" + +#: em-posts.php:127 +#: em-posts.php:172 +#: em-posts.php:218 +#: templates/tables/locations.php:60 +#, fuzzy +msgid "View" +msgstr "Zeige Kurzlink" + +#: em-posts.php:128 +#, fuzzy +msgid "View Event" +msgstr "Veranstaltung ansehen/bearbeiten" + +#: em-posts.php:130 +#, fuzzy +msgid "No Events Found" +msgstr "Keine Veranstaltungen" + +# @ dbem +#: em-posts.php:131 +msgid "No Events Found in Trash" +msgstr "" + +#: em-posts.php:132 +#, fuzzy +msgid "Parent Event" +msgstr "Frühere Veranstaltungen" + +#: em-posts.php:161 +#: em-posts.php:164 +#: em-posts.php:166 +#, fuzzy +msgid "Recurring Events" +msgstr "Wiederholungstermine" + +#: em-posts.php:162 +#, fuzzy +msgid "Recurring Events Template" +msgstr "Zählen gegenwärtige Veranstaltungen als vergangene Veranstaltungen?" + +#: em-posts.php:167 +#: em-posts.php:173 +#, fuzzy +msgid "Add Recurring Event" +msgstr "Veranstaltung hinzufügen" + +# @ dbem +#: em-posts.php:168 +msgid "Add New Recurring Event" +msgstr "" + +#: em-posts.php:170 +#, fuzzy +msgid "Edit Recurring Event" +msgstr "Veranstaltung bearbeiten" + +#: em-posts.php:171 +#, fuzzy +msgid "New Recurring Event" +msgstr "Neue wiederkehrende Veranstaltung eingefügt!" + +#: em-posts.php:174 +#, fuzzy +msgid "Search Recurring Events" +msgstr "Suche Veranstaltungen" + +# @ dbem +#: em-posts.php:175 +msgid "No Recurring Events Found" +msgstr "" + +# @ dbem +#: em-posts.php:176 +msgid "No Recurring Events Found in Trash" +msgstr "" + +# @ dbem +#: em-posts.php:177 +msgid "Parent Recurring Event" +msgstr "" + +#: em-posts.php:208 +#, fuzzy +msgid "Display locations on your blog." +msgstr "Zeigt die ID-Nummer vom Veranstaltungsort." + +#: em-posts.php:214 +#, fuzzy +msgid "Add New Location" +msgstr "Veranstaltungsort hinzufügen" + +#: em-posts.php:217 +#, fuzzy +msgid "New Location" +msgstr "Veranstaltungsort" + +#: em-posts.php:219 +#, fuzzy +msgid "View Location" +msgstr "Veranstaltungsort Bearbeiten" + +#: em-posts.php:220 +#, fuzzy +msgid "Search Locations" +msgstr "Veranstaltungsorte" + +#: em-posts.php:221 +#, fuzzy +msgid "No Locations Found" +msgstr "Keine Veranstaltungsorte" + +#: em-posts.php:222 +#, fuzzy +msgid "No Locations Found in Trash" +msgstr "Format für Veranstaltungsorte" + +#: em-posts.php:223 +#, fuzzy +msgid "Parent Location" +msgstr "Veranstaltungsorte" + +#: em-template-tags.php:296 +#, fuzzy +msgid "You must log in to view and manage your events." +msgstr "Sie müssen angemeldet sein, um ihre Reservierung zu stornieren." + +#: em-template-tags.php:386 +#, fuzzy +msgid "You must log in to view and manage your locations." +msgstr "Sie müssen angemeldet sein, um ihre Reservierung zu stornieren." + +#: em-template-tags.php:404 +#, fuzzy +msgid "You must log in to view and manage your bookings." +msgstr "Sie müssen angemeldet sein, um ihre Reservierung zu stornieren." + +#: events-manager.php:257 +#, fuzzy +msgid "Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events." +msgstr "Sind Sie sicher, dass Sie diese sich wiederholedne Veranstaltung verschieben wollen? Wenn Sie dies tun, verlieren Sie alle Reservierungsinformationen und die alte wiederkehrenden Veranstaltung werden gelöscht." + +# @ dbem +#: events-manager.php:258 +msgid "This cannot be undone." +msgstr "" + +# @ dbem +#: events-manager.php:258 +msgid "All events will be moved to trash." +msgstr "" + +#: events-manager.php:259 +#, fuzzy +msgid "Are you sure you want to delete all recurrences of this event?" +msgstr "Sind Sie sicher, dass Sie Ihre Reservierung stornieren wollen?" + +#: events-manager.php:300 +#: events-manager.php:314 +#, fuzzy, php-format +msgid "You cannot read private %s" +msgstr "Sie können %s von anderen nicht sehen" + +#: events-manager.php:315 +#, fuzzy, php-format +msgid "You cannot view others %s" +msgstr "Sie können %s von anderen nicht sehen" + +#: events-manager.php:321 +#, fuzzy +msgid "You do not have permission to upload images" +msgstr "Sie haben keine Berechtigung, %s zu bearbeiten" + +#: templates/forms/event/attributes.php:51 +#, fuzzy +msgid "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Wenn Sie irgendwelche Attribute hierunter sehen, bedeutet das, dass sie im Events Manager mehr mehr verwendet werden. Um sie wieder zu verwenden, müssen sie die Attribute wieder in den Formatierungsoptionen auf der Einstellungsseite einfügen. Um die veralteten Attribute zu löschen, geben sie einen leeren Wert ein und speichern Sie." + +# @ dbem +#: templates/forms/event/group.php:26 +msgid "No groups defined yet." +msgstr "" + +# @ default +#: templates/forms/event/location.php:9 +msgid "This event does not have a physical location." +msgstr "" + +#: templates/forms/event/location.php:31 +#, fuzzy +msgid "No Location" +msgstr "Keine Veranstaltungsorte" + +#: templates/forms/event/recurring-when.php:53 +#: templates/forms/event/when-with-recurring.php:13 +#, fuzzy +msgid "Recurrences span from " +msgstr "Wiederholung aktualisiert!" + +#: templates/forms/event/recurring-when.php:61 +#: templates/forms/event/when-with-recurring.php:23 +#, fuzzy +msgid "Events start from" +msgstr "Veranstaltungs-Format" + +#: templates/forms/event/recurring-when.php:65 +#: templates/forms/event/when-with-recurring.php:28 +#: templates/forms/event/when.php:20 +#, fuzzy +msgid "All day" +msgstr "alle %s" + +#: templates/forms/event/recurring-when.php:68 +#: templates/forms/event/when-with-recurring.php:74 +#, fuzzy +msgid "Each event lasts" +msgstr "Die Veranstaltung wiederholt sich" + +#: templates/forms/event/recurring-when.php:70 +#: templates/forms/event/when-with-recurring.php:76 +#, fuzzy +msgid "day(s)" +msgstr "Tage" + +#: templates/forms/event/when-with-recurring.php:11 +#, fuzzy +msgid "This is a recurring event." +msgstr "Dies ist keine wiederkehrende Veranstaltung" + +#: templates/forms/event/when-with-recurring.php:14 +#: templates/forms/event/when.php:8 +#, fuzzy +msgid "From " +msgstr "von" + +#: templates/forms/event/when-with-recurring.php:24 +#: templates/forms/event/when.php:16 +#, fuzzy +msgid "Event starts at" +msgstr "Veranstaltungsattribute" + +#: templates/forms/event-editor.php:164 +#, fuzzy +msgid "Event Image" +msgstr "Bild der Veranstaltung" + +#: templates/forms/location-editor.php:47 +#, fuzzy +msgid "Details about the location." +msgstr "Details über den Veranstaltungsort" + +#: templates/forms/location-editor.php:52 +#, fuzzy +msgid "Location Image" +msgstr "Bild vom Veranstaltungsort" + +#: templates/tables/locations.php:74 +#, fuzzy +msgid "No locations have been inserted yet!" +msgstr "Bisher wurden noch keine Kategorien eingefügt!" + +#: widgets/em-locations.php:21 +#, fuzzy +msgid "Event start date/time, location name" +msgstr "Startdatum, Startzeit, Event-Namen" + +#~ msgid "Add new" +#~ msgstr "Neue hinzufügen" + +#~ msgid "" +#~ "Do a search for this string within event name, details and location " +#~ "address." +#~ msgstr "" +#~ "Suche nach dieser Zeichenfolge durchführen im Veranstaltungstitel, " +#~ "Details und Adresse des Veranstaltungsorts" + +#~ msgid "See the events lists limit option on the settings page." +#~ msgstr "" +#~ "Zeige die Option für die Anzahl Veranstaltungen in der Liste auf der " +#~ "Einstellungsseite." + +#~ msgid "" +#~ "Choose what fields to order your results by. You can supply a single " +#~ "field or multiple comma-seperated fields (e.g. \"start_date,name\")." +#~ msgstr "" +#~ "Wählen Sie, nach welchen Feldern das Ergebnis sortiert werden soll. Sie " +#~ "können ein einzelnes Feld oder mehrere Felder mit Komma getrennt angeben." + +#~ msgid "See the event lists ordering option on the settings page." +#~ msgstr "Zeige die Sortieroptionen auf der Einstellungsseite." + +#~ msgid "" +#~ "If set to 1 will only show locations that have at least one event " +#~ "occurring during the scope." +#~ msgstr "" +#~ "Wenn auf 1 gesetzt, werden nur Veranstaltungsorte angezeigt, für die " +#~ "mindestens noch eine Veranstaltung während des Zeitraums eingetragen ist." + +#~ msgid "" +#~ "If set to 1 will only show locations that have no events occurring during " +#~ "the scope." +#~ msgstr "" +#~ "Wenn auf 1 gesetzt, werden nur Veranstaltungsorte ohne Veranstaltung (im " +#~ "vorgegebenen Zeitbereich) angezeigt." + +#~ msgid "" +#~ "Search for locations in this town (no partial matches, case sensitive)." +#~ msgstr "" +#~ "Suche nach Veranstaltungsorten in der Stadt (keine partielle " +#~ "Übereinstimmungen, Groß-und Kleinschreibung)." + +#~ msgid "" +#~ "Search for locations in this state (no partial matches, case sensitive)." +#~ msgstr "" +#~ "Suche nach Veranstaltungsorten in diesem Staat (keine partielle " +#~ "Übereinstimmungen, Groß-und Kleinschreibung)." + +#~ msgid "" +#~ "Search for locations in this region (no partial matches, case sensitive)." +#~ msgstr "" +#~ "Suche nach Veranstaltungsorten in dieser Region (keine partielle " +#~ "Übereinstimmungen, Groß-und Kleinschreibung)." + +#~ msgid "" +#~ "Search for locations in this country (no partial matches, case sensitive)." +#~ msgstr "" +#~ "Suche nach Veranstaltungsorten in diesem Land (keine partielle " +#~ "Übereinstimmungen, Groß-und Kleinschreibung)." + +#~ msgid "" +#~ "Search for locations in this postcode (no partial matches, case " +#~ "sensitive)." +#~ msgstr "" +#~ "Suche nach Veranstaltungsorten mit dieser Postleitzahl (keine partielle " +#~ "Übereinstimmungen, Groß-und Kleinschreibung)." + +#~ msgid "If set to 1 it will display a full calendar that shows event names." +#~ msgstr "" +#~ "Wenn auf 1 gesetzt, wird ein Kalender mit den Namen der Veranstaltungen " +#~ "angezeigt." + +#~ msgid "If set to 1, will show events that last longer than a day." +#~ msgstr "" +#~ "Wenn auf 1 gesetzt, werden Veranstaltungen angezeigt, die länger als " +#~ "einen Tag dauern." + +#~ msgid "Limits the amount of values returned to this number." +#~ msgstr "Begrenzt die Anzahl der Werte." + +#~ msgid "" +#~ "Choose the time frame of events to show. Accepted values are \"future\", " +#~ "\"past\" or \"all\" events. Additionally you can supply dates (in format " +#~ "of YYYY-MM-DD), either single for events on a specific date or two dates " +#~ "seperated by a comma (e.g. 2010-12-25,2010-12-31) for events ocurring " +#~ "between these dates." +#~ msgstr "" +#~ "Wählen Sie den Zeitraum aus, in dem Veranstaltungen angezeigt werden " +#~ "sollen. Sie können die Kürzel \"future\", \"past\" or \"all\" eingeben, " +#~ "oder ein Datum (im Format JJJJ-MM-DD), oder zwei Datumsangaben mit Komma " +#~ "getrennt (z. B. 2010-12-25,2010-12-31)." + +#~ msgid "" +#~ "Indicates the order of the events. Choose between ASC (ascending) and " +#~ "DESC (descending)." +#~ msgstr "" +#~ "Die Reihenfolge der Veranstaltungen. Wählen Sie zwischen ASC " +#~ "(aufsteigend) und DESC (absteigend)." + +#~ msgid "" +#~ "Choose what fields to order your results by. You can supply a single " +#~ "field or multiple comma-seperated fields (e.g. \"start_date,name\"). See " +#~ "specific instances (e.g. events, locations, etc.) for field names." +#~ msgstr "" +#~ "Wählen Sie, nach welchen Feldern die Ergebnisse sortiert werden sollen. " +#~ "Sie können ein einzelnes Feld oder mehrere Komma-getrennte Felder (e.g. " +#~ "\"start_date,name\")." + +#~ msgid "" +#~ "If you are displaying some information with the shortcode or function (e." +#~ "g. listing events), you can supply the html and placeholders here." +#~ msgstr "" +#~ "Wenn Sie Informationen mit Shortcode oder Funktion (z. B. listing events) " +#~ "anzeigen, können Sie HTML und Platzhalter hier zu angeben." + +#~ msgid "The relevant default format will be taken from the settings page." +#~ msgstr "" +#~ "Das relevante Standard-Format wird von der Einstellungsseite übernommen." + +#~ msgid "" +#~ "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the " +#~ "search to events with these id(s)." +#~ msgstr "" +#~ "Geben sie eine einzige ID, oder Komma-getrennte IDs (zB \"1,2,3\") an, um " +#~ "die Veranstaltungssuche auf diese ID (s) zu begrenzen." + +#~ msgid "" +#~ "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the " +#~ "search to events in these categories." +#~ msgstr "" +#~ "Geben sie eine einzige ID, oder Komma-getrennte IDs (zB \"1,2,3\"), um " +#~ "die Veransltaltungssuche auf diese Kategorien zu beschränken." + +#~ msgid "" +#~ "Supply a single id or comma-seperated ids to limit the search to these " +#~ "locations (or events in these locations)." +#~ msgstr "" +#~ "Geben sie eine einzigen ID, oder Komma-getrennte IDs an, um die Suche auf " +#~ "diese Veranstaltungsort (oder Veranstaltungen an diesen Orten) zu " +#~ "begrenzen." + +#~ msgid "" +#~ "For example, if you have ten results, if you set this to 5, only the last " +#~ "5 results will be returned. Useful for pagination." +#~ msgstr "" +#~ "Zum Beispiel, wenn Sie zehn Ergebisse haben und sie diesen Wert auf 5 " +#~ "setzen, werden nur die letzten 5 Ergebnisse zurückgegeben. Nützlich für " +#~ "eine seitenweise Darstellung." + +#~ msgid "" +#~ "If set to 1, will show only events that are recurring (i.e. events that " +#~ "are repeated over different dates)." +#~ msgstr "" +#~ "Wenn auf 1 gesetzt, werden nur sich wiederholende Veranstaltungen " +#~ "angezeigt, d.h. Veranstaltungen, die sich an verschiedenen Daten " +#~ "wiederholen." + +#~ msgid "" +#~ "If set to 1, will only show recurring event templates. Only useful if you " +#~ "know what you're doing, use recurrence if you want events that are " +#~ "recurrences." +#~ msgstr "" +#~ "Wenn auf 1 gesetzt, werden nur die Vorlagen der wiederkehrenden " +#~ "Veranstaltungen angezeigt. Nur sinnvoll, wenn Sie wissen was Sie tun. " +#~ "Verwenden Sie Wiederholungen, wenn sie Veranstaltungen haben, die immer " +#~ "wieder stattfinden." + +#~ msgid "" +#~ "If set to a month (1 to 12) only events that start or end during this " +#~ "month/year will be retured. Must be used in conjunction with year and " +#~ "does not work as intended if used with scope." +#~ msgstr "" +#~ "Wenn sie einen Monat (1-12) eingeben, werden nur Veranstaltungen " +#~ "geliefert, die in diesem Monat anfangen, oder enden. Diese Einstellung " +#~ "muss in Verbindung mit Jahr verwendet werden. Sie wird nicht " +#~ "funktionieren, wenn sie mit einem Zeitbereich verwendet wird." + +#~ msgid "" +#~ "If set to a year (e.g. 2010) only events that start or end during this " +#~ "year/month will be returned. Does not work as intended if used with scope." +#~ msgstr "" +#~ "Wenn sie ein Jahr (z.B. 2010) eingeben, werden nur Veranstaltungen " +#~ "angezeigt, die in diesem Jahr beginnen, oder enden. Funktioniert nicht, " +#~ "wenn ein Zeitbereich angegeben wird." + +#~ msgid "" +#~ "If you supply this as an argument, the returned data will be in an array, " +#~ "no objects (only useful wen using PHP, not shortcodes)" +#~ msgstr "" +#~ "Wenn Sie dieses Argument angeben, werden die Daten in einem Array " +#~ "zurückgeliefert (nicht in einem Objekt). Diese Option ist nur sinnvoll, " +#~ "wenn mit PHP und nicht mit shortcodes gearbeitet wird." + +#~ msgid "" +#~ "When using a function or shortcode that outputs items (e.g. [events_list] " +#~ "for events, [locations_list] for locations), if the number of items " +#~ "supercede the limit of items to show, setting this to 1 will show page " +#~ "links under the list." +#~ msgstr "" +#~ "Wenn sie eine Funktion oder Shortcode verwenden, die Elemente " +#~ "zurückliefern (z. B. [events_list] für Veranstaltungen, [locations_list] " +#~ "für Standorte), die die eingestellte Anzahl überschreitet, werden Seiten-" +#~ "Links am Ende der Liste angezeigt, wenn hier 1 eingestellt wird." + +#~ msgid "Displays the name of the event." +#~ msgstr "Zeigt den Namen der Veranstaltung." + +#~ msgid "Shows the description of the event." +#~ msgstr "Zeigt die Beschreibung der Veranstaltung." + +#~ msgid "" +#~ "If you added a more tag to your event description, only the " +#~ "content before this tag will show (currently, no read more link is added)." +#~ msgstr "" +#~ "Wenn sie eine mehr Tagsin die Beschreibung des Veranstaltung einfügen, " +#~ "wird nur der Inhalt vor diesem Tag angezeigt (derzeit wird kein mehr ...-" +#~ "Link hinzugefügt)." + +#~ msgid "Shows the event corresponding ID number in the database table." +#~ msgstr "" +#~ "Zeigt die der Veranstaltung entsprechende ID-Nummer in der Datenbank-" +#~ "Tabelle." + +#~ msgid "Shows the event image, if available." +#~ msgstr "Zeigt das Bild der Veranstaltung, falls verfügbar." + +#~ msgid "Displays the start time in a 24 hours format (e.g. 16:30)." +#~ msgstr "Zeigt die Startzeit in einem 24 Stunden-Format (z.B. 16:30)." + +#~ msgid "Displays the end time in a 24 hours format (e.g. 18:30)." +#~ msgstr "Zeigt das Ende der Zeit in einem 24-Stunden-Format (z.B. 18:30)." + +#~ msgid "Displays the start time in a 12 hours format (e.g. 4:30 PM)." +#~ msgstr "Zeigt die Startzeit in einem 12 Stunden-Format (z.B. 04:30 PM)." + +#~ msgid "Displays the end time in a 12 hours format (e.g. 6:30 PM)." +#~ msgstr "" +#~ "Zeigt das Ende der Zeit in einem 12 Stunden-Format (z. B. 06:30 PM)." + +#~ msgid "" +#~ "Events Manager allows extremely flexible date formatting by using PHP date syntax format " +#~ "characters along with placeholders." +#~ msgstr "" +#~ "Events Manager ermöglicht äußerst flexible Datsumsformatierungen durch " +#~ "Nutzung von PHP date Syntaxformat Zeichen zusammen mit Platzhaltern." + +#~ msgid "" +#~ "Prepend # or #@ before a valid PHP date syntax " +#~ "format character to show start and end date/time information respectively " +#~ "(e.g. #F will show the starting month name like \"January\", " +#~ "#@h shows the end hour)." +#~ msgstr "" +#~ "Voranstellen von # oder #@ vor einem gültigen " +#~ "PHP Datums-Syntaxformat-Zeichen, um Information zu Beginn und Ende von " +#~ "Datum/Uhrzeit anzuzeigen. Z.B. zeigt #F den Namen des " +#~ "Startmonats, wie \"Januar\"; #@h zeigt die Stunde der Ende-Zeit." + +#~ msgid "" +#~ "You can also create a date format without prepending # to each character " +#~ "by wrapping a valid php date() format in #{} or #@{} (e.g. #_{d/m/Y}). If there is no end date (or is same " +#~ "as start date), the value is not shown. This is useful if you want to " +#~ "show event end dates only on events that are longer than on day, e.g. " +#~ "#j #M #Y #@_{ \\u\\n\\t\\i\\l j M Y}." +#~ msgstr "" +#~ "Sie können auch ein Datumsformat ohne Voranstellen # vor jedem Zeichen " +#~ "durch das Einwickeln einer gültigen php date() formatieren im #{} oder #@{} (z.B. #_{d/m/Y}). Wenn es kein " +#~ "Enddatum gibt oder dieses identisch mit dem Startdatum ist, wird der Wert " +#~ "nicht angezeigt. Dies ist nützlich, wenn Sie Enddaten nur von " +#~ "Veranstaltungen anzeigen wollen, die länger als an einen Tag dauern z.B. " +#~ "#j #M #Y #@_{ \\u\\n\\t\\i\\l j M Y}." + +#~ msgid "" +#~ "Simply prints the event URL. You can use this placeholder to build your " +#~ "own customised links." +#~ msgstr "" +#~ "Druckt einfach die Veranstaltungs-URL aus. Sie können diesen Platzhalter " +#~ "verwenden, um Ihre eigenen Links zu erzeugen." + +#~ msgid "Shows the event image url, if available." +#~ msgstr "Zeigt die URL des Bildes der Veranstaltung, falls verfügbar." + +#~ msgid "Displays the event name with a link to the event page." +#~ msgstr "" +#~ "Zeigt den Namen der Veranstaltung mit einem Link zu der Veranstaltung-" +#~ "Seite." + +#~ msgid "" +#~ "Inserts a link to the admin or buddypress (if activated) edit event " +#~ "page, only if a user is logged in and is allowed to edit the event." +#~ msgstr "" +#~ "Fügt einen Link ein zur Admin- oder Veranstaltungsbearbeitungsseite von " +#~ "buddypress (sofern aktiviert). Jedoch nur, wenn ein Benutzer angemeldet " +#~ "ist und die Berechtigung zum Bearbeiten der Veranstaltung hat." + +#~ msgid "" +#~ "Inserts a url to the admin or buddypress (if activated) edit event page, " +#~ "only if a user is logged in and is allowed to edit the event." +#~ msgstr "" +#~ "Fügt eine URL ein zu dem admin oder Veranstaltungsbearbeitungsseite von " +#~ "buddypress (sofern aktiviert). Jedoch nur, wenn ein Benutzer angemeldet " +#~ "ist und die Berechtigung zum Bearbeiten der Veranstaltung hat." + +#~ msgid "" +#~ "Events Manager allows you to create dynamic attributes to your events, " +#~ "which act as extra information fields for your events (e.g. \"Dress Code" +#~ "\"). For more information see our online documentation " +#~ "for more info on attributes." +#~ msgstr "" +#~ "Events Manager ermöglicht es Ihnen, dynamische Attribute für Ihre " +#~ "Veranstaltungen zu erzeugen, die als zusätzliche Informationsfelder für " +#~ "Ihre Veranstaltungen (zB \"Dress Code \") dienen. Weitere Informationen " +#~ " finden Sie auf unserer Online-Dokumentation." + +#~ msgid "" +#~ "This key will appear as an option when adding attributes to your event." +#~ msgstr "" +#~ "Dieser Schlüssel wird als Option angezeigt, wenn Sie Attribute zu Ihrer " +#~ "Veranstaltung hinzufügen." + +#~ msgid "" +#~ "This key will appear as an option when adding attributes to your event. " +#~ "The text in the second braces will appear if the attribute is not defined " +#~ "or left blank for that event." +#~ msgstr "" +#~ "Dieser Schlüssel wird als Option angezeigt wird, wenn Sie Attribute zu " +#~ "Ihrer Veranstaltung hinzufügen. Der Text in der zweiten geschweiften " +#~ "Klammern wird angezeigt, wenn das Attribut für diese Veranstaltung nicht " +#~ "definiert ist oder oder leer gelassen wird." + +#~ msgid "" +#~ "This key will appear as an option when adding attributes to your event. " +#~ "The second braces are optional and will use a select box with these " +#~ "values as input. If no valid value is defined, the first option is used." +#~ msgstr "" +#~ "Dieser Schlüssel wird als Option angezeigt wird, wenn Sie Attribute zu " +#~ "Ihrer Veranstaltung hinzufügen. Die zweite Klammer ist optional und wird " +#~ "eine Auswahlbox mit diesen Werten als Eingabe verwenden. Wenn kein " +#~ "gültiger Wert definiert ist, wird die erste Option verwendet." + +#~ msgid "" +#~ "These placeholders will only show if RSVP is enabled for the given event " +#~ "and in the events manager settings page. Spaces placeholders will default " +#~ "to 0" +#~ msgstr "" +#~ "Diese Platzhalter werden nur angezeigt, wenn Reservierung/Anmeldung für " +#~ "diese Veranstaltung und in den Events-Manager-Einstellungen aktiviert " +#~ "ist. Der Platzhalter für die Anzahl der Plätze hat den Standardwert 0." + +#~ msgid "Adds a booking forms for this event." +#~ msgstr "Fügt ein Reservierungs-Formular für die Veranstaltung ein." + +#~ msgid "Shows available spaces for the event." +#~ msgstr "Zeigt verfügbare Plätze für die Veranstaltung." + +#~ msgid "Shows the amount of currently booked spaces for the event." +#~ msgstr "" +#~ "Zeigt die Anzahl der aktuell gebuchten Plätze für die Veranstaltung." + +#~ msgid "Shows the amount of pending spaces for the event." +#~ msgstr "" +#~ "Zeigt die Anzahl der zu bearbeitenden Reservierungen für diese " +#~ "Veranstaltung." + +#~ msgid "Shows the total spaces for the event." +#~ msgstr "Zeigt die Anzahl der Plätze für die Veranstaltung." + +#~ msgid "Shows the list of user avatars attending events." +#~ msgstr "Zeigt die Liste der Avatare der Veranstaltungsteilnehmer." + +#~ msgid "" +#~ "A single button that will appear to logged in users, if they click on it, " +#~ "they apply for a booking. This button will only display if there is one " +#~ "ticket." +#~ msgstr "" +#~ "Eine einzelne Taste, die für angemeldete Benutzer angezeigt wird. Wenn " +#~ "sie darauf klicken, beantragen Sie eine Reservierung. Dieser Button wird " +#~ "nur angezeigt, wenn es ein Ticket gibt." + +#~ msgid "" +#~ "Shows the url to the admin or buddypress (if activated) bookings " +#~ "management page for this event. Only shown if user is logged in and able " +#~ "to manage bookings." +#~ msgstr "" +#~ "Zeigt die URL der admin oder buddypress (sofern aktiviert) Buchungs-" +#~ "Management-Seite für diese Veranstaltung. Nur angezeigt, wenn Benutzer " +#~ "angemeldet und in der Lage ist, Buchungen verwalten." + +#~ msgid "" +#~ "Shows a link to the admin or buddypress (if activated) bookings " +#~ "management page for this event. Only shown if user is logged in and able " +#~ "to manage bookings." +#~ msgstr "" +#~ "Zeigt einen Link zu der admin oder buddypress (sofern aktiviert) Buchungs-" +#~ "Management-Seite für dieses Ereignis. Nur angezeigt, wenn Benutzer " +#~ "angemeldet und in der Lage ist, Buchungen verwalten." + +#~ msgid "" +#~ "The values here are taken from the chosen contact for the specific event, " +#~ "or the default contact in the settings page." +#~ msgstr "" +#~ "Die Werte werden vom Ansprechpartner für das jeweilige Ereignis oder von " +#~ "den Standard-Kontaktdaten der Einstellungs-Seite übernommen." + +#~ msgid "" +#~ "Name of the contact person for this event (as shown in the dropdown when " +#~ "adding an event)." +#~ msgstr "" +#~ "Name des Ansprechpartners für diese Veranstaltung (wie in der Dropdown " +#~ "beim Hinzufügen einer Veranstaltung angezeigt)." + +#~ msgid "Contact person's username." +#~ msgstr "Benutzername des Ansprechpartners." + +#~ msgid "E-mail of the contact person for this event." +#~ msgstr "E-Mail des Ansprechpartners für diese Veranstaltung." + +#~ msgid "" +#~ "Phone number of the contact person for this event. Can be set in the user " +#~ "profile page." +#~ msgstr "" +#~ "Telefonnummer des Ansprechpartners für diese Veranstaltung. Kann in der " +#~ "Benutzerprofil-Seite angegeben werden." + +#~ msgid "Contact person's avatar." +#~ msgstr "Avatar des Ansprechpartners." + +#~ msgid "" +#~ "Contact person's \"Profile\" link. Only works with BuddyPress enabled." +#~ msgstr "" +#~ "\"Profil\" Link des Ansprechpartners. Funktioniert nur, wenn BuddyPress " +#~ "aktiviert ist." + +#~ msgid "Contact person's profile url. Only works with BuddyPress enabled." +#~ msgstr "" +#~ "URL für das Profil des Ansprechpartners. Funktioniert nur, wenn " +#~ "BuddyPress aktiviert ist." + +#~ msgid "Contact person's wordpress user ID." +#~ msgstr "Die Wordpress Benutzer-ID vom Ansprechpartner." + +#~ msgid "Shows the category name of the event." +#~ msgstr "Zeigt den Namen der Kategorie der Veranstaltung." + +#~ msgid "Shows the category ID of the event." +#~ msgstr "Zeigt die Kategorie-ID der Veranstaltung." + +#~ msgid "Shows the location description." +#~ msgstr "Zeigt die Beschreibung des Veranstaltungsorts." + +#~ msgid "Displays the location name." +#~ msgstr "Zeigt den Namen des Veranstaltungsortes." + +#~ msgid "Displays the town." +#~ msgstr "Zeigt die Stadt." + +#~ msgid "Displays the state/county." +#~ msgstr "Zeigt den Bundesstaat." + +#~ msgid "Displays the postcode." +#~ msgstr "Zeigt die Postleitzahl." + +#~ msgid "Displays the region." +#~ msgstr "Zeigt der Region." + +#~ msgid "Displays the country." +#~ msgstr "Zeigt das Land." + +#~ msgid "" +#~ "Displays a google map showing where the event is located (Will not show " +#~ "if maps are disabled in the settings page)" +#~ msgstr "" +#~ "Zeigt eine Google Map an, wo die Veranstaltung stattfindet. Wird nicht " +#~ "angezeigt, wenn Karten auf der Einstellungsseite deaktiviert wurden." + +#~ msgid "" +#~ "If you added a more tag to your location description, only the " +#~ "content before this tag will show (currently, no read more link is added)." +#~ msgstr "" +#~ "Wenn Sie einen mehr-Tag zu der Beschreibung des " +#~ "Veranstaltungsorts hinzugefügt haben, wird nur der Inhalt vor diesem Tag " +#~ "angezeigt (derzeit wird kein mehr lesen-Link hinzugefügt)." + +#~ msgid "Shows the location image." +#~ msgstr "Zeigt das Bild vom Veranstaltungsort." + +#~ msgid "" +#~ "Simply prints the location URL. You can use this placeholder to build " +#~ "your own customised links." +#~ msgstr "" +#~ "Zeigt die URL vom Veranstaltungsort an. Sie können diesen Platzhalter " +#~ "verwenden, um Ihre eigene Links zu erstellen." + +#~ msgid "Displays the location name with a link to the location page." +#~ msgstr "" +#~ "Zeigt den Namen des Veranstaltungsortes mit einem Link auf die Seite des " +#~ "Veranstaltungsorts." + +#~ msgid "" +#~ "You can show lists of other events that are being held at this location. " +#~ "The formatting of the list is the same as a normal events list." +#~ msgstr "" +#~ "Sie können eine Liste aller Veranstaltungen an diesem Veranstaltungsort " +#~ "anzeigen. Die Formatierung der Liste ist identisch wie die der normalen " +#~ "Veranstaltungsliste." + +#~ msgid "Will show a list of all past events at this location." +#~ msgstr "" +#~ "Zeigt eine Liste aller vergangenen Veranstaltungen an diesem " +#~ "Veranstaltungsort." + +#~ msgid "Will show a list of all future events at this location." +#~ msgstr "" +#~ "Zeigt eine Liste aller zukünftigen Veranstaltungen an diesem " +#~ "Veranstaltungsort." + +#~ msgid "Will show a list of all events at this location." +#~ msgstr "Zeigt eine Liste aller Veranstaltungen an diesem Veranstaltungsort." + +#~ msgid "" +#~ "When a specific booking is displayed (on screen and on email), you can " +#~ "use these placeholders to show specific information about the booking. " +#~ "For contact details of the contact of this event, see the events " +#~ "placeholders." +#~ msgstr "" +#~ "Wenn eine bestimmte Reservierung angezeigt wird (auf dem Bildschirm oder " +#~ "in einer E-Mail), können Sie diese Platzhalter verwenden, um spezifische " +#~ "Informationen über die Reservierung anzuzeigen. Für die Kontaktdaten der " +#~ "Ansprechpartner dieser Veranstaltung, siehe Beschreibung der " +#~ "Veranstaltungsplatzhalter." + +#~ msgid "Name of person who made the booking." +#~ msgstr "Name der Person, die die Reservierung vorgenommen hat." + +#~ msgid "Email of person who made the booking." +#~ msgstr "E-Mail der Person, die die Reservierung vorgenommen hat." + +#~ msgid "Phone number of person who made the booking." +#~ msgstr "Telefonnummer der Person, die die Reservierung vorgenommen hat." + +#~ msgid "Number of spaces the person has booked." +#~ msgstr "Anzahl der Karten, die die Person reserviert hat." + +#~ msgid "Any specific comments made by the person who made the booking." +#~ msgstr "Alle Bemerkungen der Person, die die Reservierung vorgenommen hat." + +#~ msgid "" +#~ "Name of the ticket booked. Useful in single ticket mode, if multiple " +#~ "tickets are booked a random ticket is used." +#~ msgstr "" +#~ "Namen des reservierten Tickets. Nützlich im Einzelkarten-Modus. Wenn " +#~ "mehrere verschiedene Tickets gebucht werden, ist es Zufall, welche " +#~ "Bezeichnung gezeigt wird." + +#~ msgid "" +#~ "Description of the ticket booked. Useful in single ticket mode, if " +#~ "multiple tickets are booked a random ticket is used." +#~ msgstr "" +#~ "Beschreibung des reservierten Tickets. Nützlich im Einzelkarten-Modus. " +#~ "wenn mehrere verschiedene Tickets reserviert wurden, wird eine zufällig " +#~ "aussgewählte Beschreibung angezeigt." + +#~ msgid "" +#~ "Booked ticket price with currency symbol (e.g. $ 10.00). Useful in single " +#~ "ticket mode, if multiple tickets are booked a random ticket is used." +#~ msgstr "" +#~ "Preis des gebuchten Tickets mit Währungssymbol (z.B. $ 10,00). Nützlich " +#~ "im Einzelkarten-Modus. Wenn mehrere Tickets gebucht werden, wird ein " +#~ "Preis von einem zufällig ausgewählten Ticket angezeigt." + +#~ msgid "" +#~ "A list of booked tickets. You can modify this by using template files and " +#~ "modifying templates/emails/bookingtickets.php" +#~ msgstr "" +#~ "Eine Liste der reservierten Tickets. Sie können dies durch die Verwendung " +#~ "von Template-Dateien und das Ändern von templates/emails/bookingtickets." +#~ "php ändern." + +#~ msgid "" +#~ "People are able to manage their bookings. Below are some placeholder " +#~ "which automatically provides correctly formatted urls" +#~ msgstr "" +#~ "Personen sind in der Lage, ihre Reservierungen zu verwalten. Im Folgenden " +#~ "sind einige Platzhalter, die automatisch korrekt formatierte URLs zur " +#~ "Verfügung stellen." + +#~ msgid "URL to page showing that users booked events." +#~ msgstr "" +#~ "URL zur Seite die zeigt, dass der Benutzer Veranstaltungen gebucht hat." + +#~ msgid "The category has been added." +#~ msgstr "Die Kategorie wurde hinzugefügt." + +#~ msgid "The category has been updated." +#~ msgstr "Die Kategorie wurde aktualisiert." + +#~ msgid "Categories Deleted" +#~ msgstr "Kategorien wurden gelöscht" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Category name" +#~ msgstr "Kategorie Name" + +#~ msgid "The name of the category" +#~ msgstr "Der Name der Kategorie" + +#~ msgid "Hide Slug" +#~ msgstr "Kurzlink verbergen" + +#~ msgid "%s Slug" +#~ msgstr "%s Kurzlink" + +#~ msgid "" +#~ "The event slug. If the event slug already exists, a random number will be " +#~ "appended to the end." +#~ msgstr "" +#~ "Der Kurzlink der Veranstaltung. Wenn bereits ein gleicher Kurzlink " +#~ "existiert, wird eine Zufallszahl an das Ende angehängt." + +#~ msgid "Details about the category" +#~ msgstr "Details über die Kategorie" + +#~ msgid "Category image" +#~ msgstr "Kategorie-Bild" + +#~ msgid "No image uploaded for this category yet" +#~ msgstr "Kein Bild für diese Kategorie hochgeladen" + +#~ msgid "No venues have been inserted yet!" +#~ msgstr "Noch keine Veranstaltungsorte eingetragen!" + +#~ msgid "You do not have the rights to manage this location." +#~ msgstr "Sie haben nicht die Rechte, diesen Veranstaltungsort zu verwalten." + +#~ msgid "Location Owner" +#~ msgstr "Besitzer des Veranstaltungsorts" + +#~ msgid "Select..." +#~ msgstr "Auswählen ..." + +#~ msgid "Coordinates" +#~ msgstr "Koordinaten" + +#~ msgid "Insert New Event" +#~ msgstr "Neue Veranstaltung" + +#~ msgid "Repeated event" +#~ msgstr "Wiederholte Veranstaltung" + +#~ msgid "Every" +#~ msgstr "Jeden" + +#~ msgid "week" +#~ msgstr "Woche" + +#~ msgid "weeks" +#~ msgstr "Wochen" + +#~ msgid "month" +#~ msgstr "Monat" + +#~ msgid "months" +#~ msgstr "Monate" + +#~ msgid "" +#~ "Check if your event happens more than once according to a regular pattern" +#~ msgstr "" +#~ "Überprüfen Sie, ob die Veranstaltung regelmäßig nach einem bestimmten " +#~ "Muster stattfindet" + +#~ msgid "Event Owner/Contact Person" +#~ msgstr "Besitzer/Ansprechpartner der Veranstaltung" + +#~ msgid "Event Slug" +#~ msgstr "Kurzlink der Veranstaltung" + +#~ msgid "The event date." +#~ msgstr "Das Datum der Veranstaltung." + +#~ msgid "" +#~ "When not reoccurring, this event spans between the beginning and end date." +#~ msgstr "" +#~ "Wenn sich die Veranstaltung nicht wiederholt, erstreckt sie sich vom " +#~ "Beginn- bis zum Enddatum." + +#~ msgid "The recurrence beginning and end date." +#~ msgstr "" +#~ "Bei wiederkehrenden Veranstaltungen Beginn- und Enddatum für den " +#~ "Wiederholungszeitraum." + +#~ msgid "Event time" +#~ msgstr "Zeit" + +#~ msgid "The time of the event beginning and end" +#~ msgstr "Beginn- und Endezeit der Veranstaltung" + +#~ msgid "" +#~ "The name of the location where the event takes place. You can use the " +#~ "name of a venue, a square, etc" +#~ msgstr "" +#~ "Der Name des Ortes, wo die Veranstaltung stattfindet. Sie können den " +#~ "Namen von einem Ort, einem Lokal etc. eingeben." + +#~ msgid "Details about the event" +#~ msgstr "Details zur Veranstaltung" + +#~ msgid "No Value" +#~ msgstr "Kein Wert" + +#~ msgid "" +#~ "WARNING! You are about to re-create all your recurrent events including " +#~ "erasing your old booking data! Are you sure you want to do this?" +#~ msgstr "" +#~ "ACHTUNG! Sie sind dabei, alle wiederkehrenden Veranstaltungen neu zu " +#~ "erstellen. Das wird alle bisherigen Reservierungen löschen! Sind Sie " +#~ "sicher, dass Sie das tun wollen?" + +#~ msgid "" +#~ "

              Hey, %s, welcome to Events Manager! " +#~ "We hope you like it around here.

              \r\n" +#~ "\t\t\t

              Now it's time to insert events lists through widgets, template tags or shortcodes.

              \r\n" +#~ "\t\t\t

              By the way, have you taken a look at the Settings page? That's where you customize the " +#~ "way events and locations are displayed.

              \r\n" +#~ "\t\t\t

              What? Tired of seeing this advice? I hear you, click here and you won't see " +#~ "this again!

              " +#~ msgstr "" +#~ "

              Hallo, %s, Willkommen bei Events Manager! Wir hoffen, Ihnen gefällt es hier.

              \r\n" +#~ "\t\t\t

              Jetzt ist es Zeit, um Veranstaltungslisten einzufügen, widgets, template tags oder shortcodeszu verwenden.

              \r\n" +#~ "\t\t\t

              Übrigens, haben Sie schon einen Blick auf die Einstellungen geworfen? Dort können Sie " +#~ "einstellen, wie Veranstaltungen und Veranstaltungsorte angezeigt werden.\r\n" +#~ "\t\t\t

              Was? Möchten sie diese Hinweise nicht mehr sehen? Klicken Sie hier, und sie werden " +#~ "diese Hinweise nicht wieder sehen!

              " + +#~ msgid "" +#~ "Events Manager has some new features!
              • Bookings " +#~ "can now be approved before they count towards your event's space " +#~ "allocations.
              • Events now have owners, and you can restrict users " +#~ "so they can only manage events/locations/categories they create.

                These new permissions are enabled by default, but since you upgraded it " +#~ "has been disabled to maintain the previous plugin behaviour. You can re-" +#~ "enable it from the settings page. Dismiss" +#~ msgstr "" +#~ "Events Manager hat einige neue Funktionen!
                • Reservierungen können nun genehmigt werden, bevor sie auf " +#~ "die Anzahl der freien Plätze angerechnet werden.
                • Veranstaltungen " +#~ "haben jetzt Eigentümer, und Sie können Benutzer so einschränken, dass sie " +#~ "nur Veranstaltungen, Veranstaltungesorte, oder Kategorien bearbeiten " +#~ "können, die sie selber angelegt haben.

                  Diese neuen " +#~ "Berechtigungen sind standardmäßig aktiviert, aber wenn sie ein Upgrade " +#~ "durchgeführt haben, wurden diese Optionen deaktiviert, um das gleiche " +#~ "Verhalten wie zuvor zu gewährleisten. Sie können die Berechtigungen auf " +#~ "der Einstellungsseite wieder aktivieren. Weg damit" + +#~ msgid "" +#~ "A LOT has changed since Events Manager 3. We recommend " +#~ "you take a look at the settings page for new features " +#~ "and upgrade instructions, and you may particualarly be interested in " +#~ "modifying permissions. Dismiss" +#~ msgstr "" +#~ "VIELEShat sich seit Events Manager 3 geändert. Wir " +#~ "empfehlen Ihnen, einen Blick auf die Einstellungeseite " +#~ "für neue Features und Upgrade-Anweisungen zu werfen. Vielleicht möchten " +#~ "sie auch detaillierte Berechtigungen vergeben.Nachricht " +#~ "schließen" + +#~ msgid "" +#~ "If you upgraded from 3.x to the RC2 and the update did not go so well, try reimporting old settings. Warning! Re-importing will " +#~ "rename all event slugs, re-import your old category settings from events, " +#~ "and recreate all tickets, so changes to these areas will be lost. Dismiss" +#~ msgstr "" +#~ "Wenn Sie von 3.x auf die RC2 aktualisiert haben und die Aktualisierung " +#~ "nicht so gut verlaufen ist, versuchen Sie einen Reimport " +#~ "Ihrer alten Einstellungen. Achtung! Re-Import wird die Kurzlinks der " +#~ "Veranstaltungen umbenennen, die alten Kategorie Einstellungen re-" +#~ "importieren und alle Tickets neu erstellen. Alle gemachten Änderungen in " +#~ "diesen Bereichen gehen verloren.Hinweis schließen" + +#~ msgid "Only Network Admins see this" +#~ msgstr "Nur Netzwerk-Administratoren sehen das" + +#~ msgid "Events page title" +#~ msgstr "Titel Veranstaltungsseite" + +#~ msgid "The title on the multiple events page." +#~ msgstr "Der Titel der Seite, wenn mehrere Veranstaltungen angezeigt werden." + +#~ msgid "%s page title" +#~ msgstr "Seitentitel für %s" + +#~ msgid "The title on the multiple %s page." +#~ msgstr "Der Titel auf der Seite mit mehreren %s." + +#~ msgid "Booking and Ticketing Options" +#~ msgstr "Reservierungs- und Ticketing-Optionen" + +#~ msgid "User can delete other users locations." +#~ msgstr "Benutzer kann Veranstaltungsorte anderer Benutzer löschen." + +#~ msgid "User can edit their locations." +#~ msgstr "Benutzer kann eigene Veranstaltungsorte bearbeiten." + +#~ msgid "" +#~ "User can view other users locations, to make locations shared by all " +#~ "users allow all event user roles to view all locations." +#~ msgstr "" +#~ "Benutzer können die Veranstaltungsorte anderer Benutzer verwenden. Um " +#~ "gemeinsame Veranstaltungsorte zu realisieren, müssen sie allen Benutzern " +#~ "erlauben, alle Veranstaltungsorte zu bearbeiten." + +#~ msgid "User can create recurrent events." +#~ msgstr "Benutzer können sich wiederholende Veranstaltungen erstellen." + +#~ msgid "Starts on " +#~ msgstr "Startet am" + +#~ msgid "and ends on" +#~ msgstr "und endet am" + +#~ msgid "Choose from one of your locations" +#~ msgstr "Wählen Sie aus einem Ihrer Standorte" + +#~ msgid "or add a new location" +#~ msgstr "oder fügen Sie einen neuen Standort hinzu" + +#~ msgid "edit" +#~ msgstr "bearbeiten" + +#~ msgid "Events Admin" +#~ msgstr "Veranstaltung Admin" + +#~ msgid "Settings Updated." +#~ msgstr "Einstellungen aktualisiert." + +#~ msgid "Option Two" +#~ msgstr "Option Zwei" + +#~ msgid "Events Settings Header" +#~ msgstr "Veranstaltungeinstellungen Kopfzeile" + +#~ msgid "Events Settings" +#~ msgstr "Veranstaltungseinstellungen" + +#~ msgid "Changes Saved." +#~ msgstr "Änderungen gespeichert." + +#~ msgid "Do you love clicking checkboxes?" +#~ msgstr "Klicken Sie gerne Checkboxen?" + +#~ msgid "Events (%s)" +#~ msgstr "Veranstaltung (%s)" + +#~ msgid "Action One" +#~ msgstr "Aktion Ein" + +#~ msgid "Action Two" +#~ msgstr "Aktion Zwei" + +#~ msgid "Ascendant" +#~ msgstr "Aufsteigend" + +#~ msgid "Descendant" +#~ msgstr "Nachkomme" + +#~ msgid "Could not save the %s details due to a database error." +#~ msgstr "Konnte %s aufgrund eines Datenbankfehlers nicht speichern." + +#~ msgid "The location name" +#~ msgstr "Der Name des Veranstaltungsorts" + +#~ msgid "%s successfully updated." +#~ msgstr "%s erfolgreich aktualisiert." + +#~ msgid "You do not have permission to delete %s." +#~ msgstr "Sie haben keine Berechtigung, um %s zu löschen." + +#~ msgid "" +#~ "If you update this event data and save, it will become an independent " +#~ "event, and will not be deleted or modified automatically if you " +#~ "reschedule the original recurring event details." +#~ msgstr "" +#~ "Wenn Sie diese Veranstaltung ändern und speichern, wird sie zu einer " +#~ "eigenständigen Veranstaltung und aus der Reihe der wiederholten " +#~ "Veranstaltung herausgelöst. Sie wird somit nicht mehr gelöscht oder " +#~ "automatisch geändert, wenn Sie das Original der wiederkehrenden " +#~ "Veranstaltung verschieben oder ändern." + +#~ msgid "There was a problem saving the location so event was not saved." +#~ msgstr "" +#~ "Es gab ein Problem beim Speichern des Veranstaltungsorts. Daher wurde die " +#~ "Veranstaltung nicht gespeichert." + +#~ msgid "Something went wrong with creating tickets." +#~ msgstr "Bei der Erstellung der Tickets ging etwas schief." + +#~ msgid "New event successfully inserted!" +#~ msgstr "Neue Veranstaltung erfolgreich eingetragen!" + +#~ msgid "Could not save the event details due to a database error." +#~ msgstr "" +#~ "Die Veranstaltung konnte wegen einem Datenbankfehhler nicht gespeichert " +#~ "werden." + +#~ msgid "Event %s." +#~ msgstr "Veranstaltung %s." + +#~ msgid "You are not allowed to manage this %s." +#~ msgstr "Sie sind nicht berechtigt, diese %s zu verwalten." + +#~ msgid "The category name" +#~ msgstr "Der Name der Kategorie" + +#~ msgid "However, the image could not be saved." +#~ msgstr "Jedoch konnte das Bild nicht gespeichert werden." + +#~ msgid "The image could not be saved" +#~ msgstr "Das Bild konnte nicht gespeichert werden" + +#~ msgid "However, the image could not be saved:" +#~ msgstr "Jedoch konnte das Bild nicht gespeichert werden:" + +#~ msgid "Uncategorized" +#~ msgstr "Allgemein" + +#~ msgid "Ach, some problems here:" +#~ msgstr "Ach, ein paar Probleme hier:" + +#~ msgid "You are now viewing the duplicated %s." +#~ msgstr "Sie sehen jetzt die duplizierten %s." + +#~ msgid "EM_Categories" +#~ msgstr "EM_Categories" + +#~ msgid "Book now!" +#~ msgstr "Reservieren Sie jetzt!" + +#~ msgid "" +#~ "You must register or log in in " +#~ "order to create and manage your bookings." +#~ msgstr "" +#~ "Sie müssen sich registrieren oder anmelden, um Ihre Reservierungen zu verwalten." + +#~ msgid "Cancel your booking" +#~ msgstr "Stornieren Sie ihre Reservierung" + +#~ msgid "" +#~ "

                  Hey, %s, welcome to Events Manager! " +#~ "We hope you like it around here.

                  \r\n" +#~ "\t\t

                  Now it's time to insert events lists through widgets, template tags or shortcodes.

                  \r\n" +#~ "\t\t

                  By the way, have you taken a look at the Settings page? That's where you customize the " +#~ "way events and locations are displayed.

                  \r\n" +#~ "\t\t

                  What? Tired of seeing this advice? I hear you, click here and you won't see " +#~ "this again!

                  " +#~ msgstr "" +#~ "

                  Hey, %s, Willkommen bei Events Manager! Wir hoffen, Ihnen gefällt es hier.

                  \r\n" +#~ "\t\t

                  Jetzt ist es Zeit, um Ereignislisten mit widgets, oder template tags, oder shortcodes einzufügen.

                  \r\n" +#~ "\t\t

                  Übrigens, haben Sie schon einen Blick auf die Einstellungsseitegeworfen? Dort können Sie " +#~ "die Darstellung von Veranstaltungen und Veranstaltungsorten anpassen.

                  " +#~ "\r\n" +#~ "\t\t

                  Wenn sie diese Meldung nicht mehr sehen wollen, klicken Sie hier

                  " + +#~ msgid "http://wp-events-plugin.com" +#~ msgstr "http://wp-events-plugin.com" + +#~ msgid "" +#~ "Event registration and booking management for Wordpress. Recurring " +#~ "events, locations, google maps, rss, ical, booking registration and more!" +#~ msgstr "" +#~ "Veranstaltungs- und Reservierungsmanagement für Wordpress. Wiederkehrende " +#~ "Veranstaltungen, Veranstaltungsorte, Google Maps, RSS, iCal, " +#~ "Reservierung, Anmeldung und mehr!" + +#~ msgid "Marcus Sykes" +#~ msgstr "Marcus Sykes" diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-es_ES.mo b/wp-content/plugins/events-manager/includes/langs/dbem-es_ES.mo new file mode 100644 index 0000000..8b9f3a3 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-es_ES.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-es_ES.po b/wp-content/plugins/events-manager/includes/langs/dbem-es_ES.po new file mode 100644 index 0000000..28c23f3 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-es_ES.po @@ -0,0 +1,4112 @@ +# Copyright (C) 2010 Events Manager +# This file is distributed under the same license as the Events Manager package. +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.0.83\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-06-28 08:06:36+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2011-06-30 20:48+0300\n" +"Last-Translator: aa \n" +"Language-Team: <>\n" +"X-Poedit-Language: Spanish\n" +"X-Poedit-Country: SPAIN\n" + +#: buddypress/bp-em-activity.php:67 +msgid "%s added the event %s" +msgstr "%s añadido el caso de %s" + +#: buddypress/bp-em-activity.php:89 +msgid "%s is attending %s." +msgstr "%s está asistiendo a%s." + +#: buddypress/bp-em-activity.php:91 +msgid "%s will not be attending %s anymore." +msgstr "%s no asistirá %s más." + +#: buddypress/bp-em-admin.php:33 +msgid "Events Admin" +msgstr "Eventos de administración" + +#: buddypress/bp-em-admin.php:36 +msgid "Settings Updated." +msgstr "Configuración actualizada." + +#: buddypress/bp-em-admin.php:42 +msgid "Option One" +msgstr "Opción uno" + +#: buddypress/bp-em-admin.php:47 +msgid "Option Two" +msgstr "Opción dos" + +#: buddypress/bp-em-admin.php:54 +#: buddypress/screens/settings.php:46 +msgid "Save Settings" +msgstr "Guardar configuración" + +#: buddypress/bp-em-notifications.php:44 +#: buddypress/screens/profile.php:27 +#: buddypress/bp-em-core.php:55 +#: buddypress/bp-em-core.php:117 +#: buddypress/bp-em-core.php:128 +#: events-manager.php:319 +#: em-template-tags.php:74 +#: em-actions.php:107 +#: em-install.php:301 +#: em-install.php:344 +#: em-install.php:381 +#: em-install.php:382 +#: em-install.php:388 +#: em-install.php:408 +#: em-install.php:508 +#: widgets/em-events.php:13 +#: admin/em-options.php:303 +msgid "Events" +msgstr "Eventos" + +#: buddypress/bp-em-notifications.php:45 +#: em-functions.php:436 +#: admin/em-options.php:408 +msgid "Yes" +msgstr "Sí" + +#: buddypress/bp-em-notifications.php:46 +#: em-functions.php:437 +#: admin/em-options.php:409 +msgid "No" +msgstr "No" + +#: buddypress/bp-em-notifications.php:50 +msgid "Action One" +msgstr "Una acción" + +#: buddypress/bp-em-notifications.php:56 +msgid "Action Two" +msgstr "La acción de dos" + +#: buddypress/bp-em-notifications.php:87 +#: buddypress/bp-em-notifications.php:89 +#: buddypress/bp-em-notifications.php:96 +#: buddypress/bp-em-notifications.php:98 +#: buddypress/bp-em-notifications.php:104 +#: buddypress/bp-em-notifications.php:106 +#: em-install.php:456 +msgid "My Bookings" +msgstr "Mis Reservas" + +#: buddypress/bp-em-notifications.php:87 +msgid "You have a pending booking" +msgstr "Usted tiene una solicitud de reserva" + +#: buddypress/bp-em-notifications.php:89 +msgid "You have %s pending bookings" +msgstr "Usted tiene reservas pendientes de %s" + +#: buddypress/bp-em-notifications.php:96 +msgid "You have a confirmed booking" +msgstr "Usted tiene una reserva confirmada" + +#: buddypress/bp-em-notifications.php:98 +msgid "You have %s confirmed bookings" +msgstr "Usted tiene reservas confirmadas %s" + +#: buddypress/bp-em-notifications.php:104 +msgid "A user cancelled a booking" +msgstr "Un usuario ha cancelado la reserva" + +#: buddypress/bp-em-notifications.php:106 +msgid "%s users cancelled bookings." +msgstr "Usuarios %s cancelado reservas." + +#: buddypress/screens/my-bookings.php:32 +#: buddypress/bp-em-core.php:106 +msgid "My Event Bookings" +msgstr "Mis Reservas de eventos" + +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Usted está viendo la página pública, esto es lo que verán los demás usuarios." + +#: buddypress/screens/profile.php:34 +#: buddypress/screens/my-events.php:40 +#: buddypress/bp-em-core.php:86 +msgid "My Events" +msgstr "Mis eventos" + +#: buddypress/screens/profile.php:47 +#: templates/buddypress/group-events.php:35 +#: templates/buddypress/my-group-events.php:35 +#: em-install.php:463 +msgid "No Events" +msgstr "No hay Eventos" + +#: buddypress/screens/profile.php:51 +#: buddypress/screens/attending.php:23 +#: buddypress/bp-em-core.php:76 +msgid "Events I'm Attending" +msgstr "Voy a asistir a los eventos" + +#: buddypress/screens/settings.php:26 +msgid "Events Settings Header" +msgstr "Eventos Configuración encabezado" + +#: buddypress/screens/settings.php:30 +msgid "Events Settings" +msgstr "Configuración de eventos" + +#: buddypress/screens/settings.php:38 +msgid "Changes Saved." +msgstr "Cambios guardados." + +#: buddypress/screens/settings.php:44 +msgid "Do you love clicking checkboxes?" +msgstr "¿Te gusta casillas haciendo clic en?" + +#: buddypress/screens/group-events.php:17 +#: buddypress/screens/my-group-events.php:17 +msgid "Group Events" +msgstr "Eventos del grupo" + +#: buddypress/screens/my-events.php:54 +#: templates/forms/event-editor.php:15 +#: admin/em-event.php:25 +msgid "Edit Event" +msgstr "Edición de eventos" + +#: buddypress/screens/my-events.php:56 +msgid "Add Event" +msgstr "Agregar evento" + +#: buddypress/screens/my-locations.php:47 +#: buddypress/bp-em-core.php:96 +msgid "My Locations" +msgstr "Mis localizaciones" + +#: buddypress/screens/my-locations.php:61 +msgid "Edit Location" +msgstr "Editar ubicación" + +#: buddypress/screens/my-locations.php:63 +msgid "Add Location" +msgstr "Agregar ubicación" + +#: buddypress/bp-em-core.php:66 +msgid "My Profile" +msgstr "Mi perfil" + +#: buddypress/bp-em-core.php:149 +msgid "Events (%s)" +msgstr "Eventos (%s)" + +#: buddypress/bp-em-core.php:179 +#: classes/em-event.php:793 +#: templates/forms/event-editor.php:367 +#: events-manager.php:322 +#: admin/em-event.php:573 +msgid "Edit" +msgstr "Editar" + +#: buddypress/bp-em-core.php:179 +#: classes/em-event.php:553 +#: classes/em-event.php:793 +#: templates/forms/event-editor.php:6 +#: em-actions.php:107 +#: em-install.php:348 +#: em-install.php:373 +#: admin/em-event.php:14 +#: admin/bookings/em-events.php:101 +#: admin/em-options.php:312 +msgid "Event" +msgstr "Evento" + +#: classes/em-booking.php:96 +#: classes/em-event.php:207 +#: templates/buddypress/my-events.php:41 +#: templates/buddypress/my-events.php:118 +#: admin/bookings/em-events.php:136 +#: admin/em-events.php:66 +#: admin/em-events.php:166 +msgid "Pending" +msgstr "Pendiente" + +#: classes/em-booking.php:97 +#: classes/em-event.php:208 +#: admin/em-events.php:65 +msgid "Approved" +msgstr "Aprobado" + +#: classes/em-booking.php:98 +msgid "Rejected" +msgstr "Rechazado" + +#: classes/em-booking.php:99 +#: em-actions.php:354 +msgid "Cancelled" +msgstr "Cancelado" + +#: classes/em-booking.php:100 +msgid "Awaiting Online Payment" +msgstr "En espera de pago en línea" + +#: classes/em-booking.php:101 +msgid "Awaiting Payment" +msgstr "En espera de pago" + +#: classes/em-booking.php:125 +#: classes/em-ticket.php:101 +#: classes/em-ticket-booking.php:67 +msgid "Changes saved" +msgstr "Cambios guardados" + +#: classes/em-booking.php:130 +msgid "Your booking has been recorded" +msgstr "Su reserva ha sido registrada" + +#: classes/em-booking.php:133 +#: classes/em-booking.php:134 +#: classes/em-booking.php:143 +#: classes/em-booking.php:152 +#: classes/em-booking.php:158 +#: classes/em-tickets-bookings.php:69 +#: classes/em-tickets-bookings.php:70 +msgid "There was a problem saving the booking." +msgstr "Hubo un problema al guardar la reserva." + +#: classes/em-booking.php:154 +#: classes/em-booking.php:160 +msgid "You cannot manage this %s." +msgstr "Usted no puede manejar este %s." + +#: classes/em-booking.php:154 +#: classes/em-booking.php:160 +#: classes/em-booking.php:370 +#: classes/em-booking.php:372 +#: classes/em-tickets-bookings.php:141 +#: classes/em-bookings.php:106 +msgid "Booking" +msgstr "Reserva" + +#: classes/em-booking.php:210 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Usted está tratando de reservar un billete no existe para este evento." + +#: classes/em-booking.php:231 +msgid "You must request at least one space to book an event." +msgstr "Usted debe solicitar al menos un espacio para reservar un evento." + +#: classes/em-booking.php:370 +msgid "%s deleted" +msgstr "%s eliminado" + +#: classes/em-booking.php:372 +msgid "%s could not be deleted" +msgstr "%s no pudo ser eliminado" + +#: classes/em-booking.php:416 +msgid "Not approved, spaces full." +msgstr "No se ha aprobado, espacios llenos." + +#: classes/em-booking.php:424 +msgid "Booking %s." +msgstr "Reservas %s." + +#: classes/em-booking.php:427 +msgid "Mail Sent." +msgstr "Correo enviado." + +#: classes/em-booking.php:430 +#: classes/em-booking.php:431 +msgid "ERROR : Mail Not Sent." +msgstr "ERROR: correo no enviado." + +#: classes/em-booking.php:437 +#: classes/em-booking.php:438 +#: classes/em-event.php:535 +msgid "Booking could not be %s." +msgstr "Reserva no podía ser %s." + +#: classes/em-booking.php:453 +msgid "Booking note successfully added." +msgstr "Nota Reserva agregado con éxito." + +#: classes/em-booking.php:538 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "Correo electrónico de confirmación no se pudo enviar a la persona de contacto. Solicitante debería haber recibido su correo electrónico (sólo admin ve esta advertencia)." + +#: classes/em-booking.php:545 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "Correo electrónico de confirmación no pudo ser enviado al administrador. Solicitante debería haber recibido su correo electrónico (sólo admin ve esta advertencia)." + +#: classes/em-tickets-bookings.php:91 +#: classes/em-bookings.php:89 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "Reserva no se puede hacer, no suficiente espacio disponible!" + +#: classes/em-tickets-bookings.php:141 +#: templates/forms/event-editor.php:6 +#: templates/forms/location-editor.php:7 +#: admin/em-event.php:14 +msgid "You do not have the rights to manage this %s." +msgstr "Usted no tiene los derechos para administrar este %s." + +#: classes/em-tickets-bookings.php:169 +#: classes/em-tickets.php:130 +msgid "Standard" +msgstr "Estándar" + +#: classes/em-object.php:731 +msgid "However, the image could not be saved." +msgstr "Sin embargo, la imagen no pudo ser salvado." + +#: classes/em-object.php:733 +msgid "The image could not be saved" +msgstr "La imagen no pudo ser salvado" + +#: classes/em-object.php:737 +msgid "However, the image could not be saved:" +msgstr "Sin embargo, la imagen no pudo ser salvado:" + +#: classes/em-object.php:754 +msgid "The image file is too big! Maximum size:" +msgstr "El archivo de imagen es muy grande! El tamaño máximo:" + +#: classes/em-object.php:759 +msgid "The image is too big! Maximum size allowed:" +msgstr "La imagen es demasiado grande! El tamaño máximo permitido:" + +#: classes/em-object.php:762 +msgid "The image is in a wrong format!" +msgstr "La imagen está en un formato incorrecto!" + +#: classes/em-categories.php:206 +#: classes/em-location.php:144 +#: classes/em-location.php:152 +msgid "Could not save the %s details due to a database error." +msgstr "No se pudo guardar los detalles debido a un error de la base de datos %s." + +#: classes/em-categories.php:206 +#: admin/em-options.php:377 +#: admin/em-options.php:378 +msgid "category" +msgstr "categoría" + +#: classes/em-tickets.php:104 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "No se puede eliminar entradas si hay reservas asociadas a ellos. Por favor, elimine este tipo de reservas en primer lugar." + +#: classes/em-event.php:213 +msgid "WARNING: This is a recurring event." +msgstr "ADVERTENCIA: Este es un evento recurrente." + +#: classes/em-event.php:213 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Modificaciones a este evento hará que todas las recidivas de este evento que se elimina y vuelve a reservas previas y se eliminará! Puede editar las recurrencias individuales y desvincularse con este evento recurrente." + +#: classes/em-event.php:215 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "ADVERTENCIA: Esta es una repetición de una serie de eventos recurrentes." + +#: classes/em-event.php:215 +msgid "If you update this event data and save, it will become an independent event, and will not be deleted or modified automatically if you reschedule the original recurring event details." +msgstr "Si actualiza estos datos de eventos y guardar, se convertirá en un evento independiente, y no serán eliminados o modificados de forma automática si reprograma los detalles originales recurrentes del evento." + +#: classes/em-event.php:218 +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "ADVERTENCIA: Este es un evento perteneciente al \"%s\" del grupo. Los administradores de otros grupos también pueden modificar este evento." + +#: classes/em-event.php:339 +msgid "There was a problem saving the location so event was not saved." +msgstr "Hubo un problema al guardar el lugar para eventos no se ha guardado." + +#: classes/em-event.php:380 +#: classes/em-event.php:431 +msgid "Something went wrong with creating tickets." +msgstr "Algo salió mal con la creación de entradas." + +#: classes/em-event.php:392 +#: classes/em-event.php:442 +msgid "Something went wrong with the recurrence update..." +msgstr "Algo salió mal con la actualización de repetición ..." + +#: classes/em-event.php:393 +#: classes/em-event.php:443 +msgid "There was a problem saving the recurring events." +msgstr "Hubo un problema al guardar los eventos recurrentes." + +#: classes/em-event.php:398 +msgid "New recurrent event inserted!" +msgstr "Evento recurrente inserta el nuevo!" + +#: classes/em-event.php:402 +msgid "New event successfully inserted!" +msgstr "Nuevo evento ha entrado con éxito!" + +#: classes/em-event.php:405 +#: classes/em-event.php:450 +msgid "Could not save the event details due to a database error." +msgstr "No se pudo guardar los detalles del evento debido a un error de base de datos." + +#: classes/em-event.php:429 +#: classes/em-event.php:454 +msgid "updated" +msgstr "actualizado" + +#: classes/em-event.php:446 +msgid "Recurrence updated!" +msgstr "Recurrencia actualizado!" + +#: classes/em-event.php:531 +msgid "Event %s." +msgstr "Evento %s." + +#: classes/em-event.php:553 +msgid "%s successfully duplicated." +msgstr "%s con éxito duplicado." + +#: classes/em-event.php:557 +msgid "You are not allowed to manage this %s." +msgstr "No se les permite gestionar este %s." + +#: classes/em-event.php:557 +#: em-actions.php:93 +msgid "event" +msgstr "evento" + +#: classes/em-event.php:578 +#: classes/em-ticket.php:159 +#: classes/em-ticket-booking.php:102 +msgid "Missing fields: " +msgstr "Faltan campos:" + +#: classes/em-event.php:581 +msgid "Since the event is repeated, you must specify an event date." +msgstr "Dado que el evento se repite, debe especificar una fecha del evento." + +#: classes/em-event.php:585 +msgid "Events cannot start after they end." +msgstr "Eventos no se puede iniciar después de su desaparición." + +#: classes/em-event.php:588 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Las fechas deben tener el formato correcto. Por favor, utilice el selector de fechas previstas." + +#: classes/em-event.php:866 +#: templates/placeholders/bookingform.php:57 +#: templates/placeholders/bookingform.php:86 +#: em-bookings.php:129 +#: em-bookings.php:151 +msgid "N/A" +msgstr "N / A" + +#: classes/em-event.php:876 +#: classes/em-event.php:885 +msgid "Profile" +msgstr "Perfil" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Sunday" +msgstr "Domingo" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Monday" +msgstr "Lunes" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Tuesday" +msgstr "Martes" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Wednesday" +msgstr "Miércoles" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Thursday" +msgstr "Jueves" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Friday" +msgstr "Viernes" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Saturday" +msgstr "Sábado" + +#: classes/em-event.php:1240 +msgid "the first %s of the month" +msgstr "los primeros %s del mes" + +#: classes/em-event.php:1240 +msgid "the second %s of the month" +msgstr "el segundo %s del mes" + +#: classes/em-event.php:1240 +msgid "the third %s of the month" +msgstr "la tercera %s del mes" + +#: classes/em-event.php:1240 +msgid "the fourth %s of the month" +msgstr "la cuarta %s del mes" + +#: classes/em-event.php:1240 +msgid "the last %s of the month" +msgstr "los últimos %s del mes" + +#: classes/em-event.php:1241 +msgid "From %1$s to %2$s" +msgstr "De %1$s en %2$s" + +#: classes/em-event.php:1243 +msgid "everyday" +msgstr "diario" + +#: classes/em-event.php:1245 +msgid "every %s days" +msgstr "cada %s días" + +#: classes/em-event.php:1254 +msgid "every week" +msgstr "cada semana" + +#: classes/em-event.php:1256 +msgid "every %s weeks" +msgstr "cada %s semanas" + +#: classes/em-event.php:1267 +msgid "every %s months" +msgstr "cada mes %s" + +#: classes/em-bookings.php:69 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Confirmación de la reserva con éxito, a la espera (que también recibirá un correo electrónico de confirmación)." + +#: classes/em-bookings.php:71 +msgid "Booking successful." +msgstr "Reservas éxito." + +#: classes/em-bookings.php:74 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "Sin embargo, hubo algunos problemas, mientras que el envío de mensajes de correo electrónico de confirmación para usted y / o la persona de contacto de eventos. Es posible que desee contactar con ellos directamente y hacerles saber de este error." + +#: classes/em-bookings.php:86 +msgid "Booking could not be created" +msgstr "Reserva no podía ser creado" + +#: classes/em-bookings.php:106 +msgid "%s created." +msgstr "%s creado." + +#: classes/em-bookings.php:249 +#: classes/em-bookings.php:255 +msgid "Bookings %s. Mails Sent." +msgstr "Reservas %s. Mails enviados." + +#: classes/em-bookings.php:259 +msgid "An error occurred." +msgstr "Ha ocurrido un error." + +#: classes/em-bookings.php:528 +msgid "Booking details for \"%s\" as of %s" +msgstr "Reserva los detalles para \"%s\", como de %s" + +#: classes/em-ticket.php:51 +msgid "Standard Ticket" +msgstr "Venta de entradas estándar" + +#: classes/em-ticket.php:106 +msgid "Ticket created" +msgstr "Venta de entradas creadas" + +#: classes/em-ticket.php:109 +#: classes/em-ticket.php:110 +#: classes/em-ticket.php:114 +#: classes/em-ticket.php:115 +msgid "There was a problem saving the ticket." +msgstr "Hubo un problema al guardar el boleto." + +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "No se puede eliminar una entrada que tiene una reserva sobre el mismo." + +#: classes/em-ticket-booking.php:72 +msgid "Ticket booking created" +msgstr "Reserva de entradas creadas" + +#: classes/em-ticket-booking.php:75 +#: classes/em-ticket-booking.php:76 +#: classes/em-ticket-booking.php:80 +#: classes/em-ticket-booking.php:81 +msgid "There was a problem saving the ticket booking." +msgstr "Hubo un problema al guardar la reserva de entradas." + +#: classes/em-mailer.php:67 +msgid "Please supply a valid email format." +msgstr "Por favor, facilite un formato de correo electrónico válida." + +#: classes/em-people.php:81 +msgid "User deleted by administrators" +msgstr "Usuario eliminado por los administradores" + +#: classes/em-person.php:60 +#: templates/buddypress/group-events.php:12 +#: templates/buddypress/my-events.php:73 +#: templates/buddypress/my-locations.php:53 +#: templates/buddypress/my-locations.php:62 +#: templates/buddypress/my-group-events.php:12 +#: templates/forms/tickets-form.php:4 +#: templates/placeholders/bookingform.php:98 +#: admin/em-categories.php:72 +#: admin/em-categories.php:79 +#: admin/em-locations.php:78 +#: admin/em-locations.php:88 +#: admin/em-event.php:291 +#: admin/em-bookings.php:180 +#: admin/em-bookings.php:240 +#: admin/em-people.php:30 +#: admin/em-events.php:121 +msgid "Name" +msgstr "Nombre" + +#: classes/em-person.php:61 +msgid "Email" +msgstr "E-mail" + +#: classes/em-person.php:62 +#: templates/placeholders/bookingform.php:102 +#: admin/em-people.php:72 +msgid "Phone" +msgstr "Teléfono" + +#: classes/em-location.php:50 +msgid "The location name" +msgstr "El nombre de la ubicación" + +#: classes/em-location.php:50 +msgid "The location address" +msgstr "La dirección de ubicación" + +#: classes/em-location.php:50 +msgid "The location town" +msgstr "Ubicación de la ciudad" + +#: classes/em-location.php:50 +msgid "The country" +msgstr "El país" + +#: classes/em-location.php:111 +#: classes/em-location.php:113 +#: classes/em-category.php:70 +msgid " is required." +msgstr "es necesario." + +#: classes/em-location.php:142 +#: classes/em-category.php:90 +msgid "%s successfully updated." +msgstr "%s se ha actualizado." + +#: classes/em-location.php:142 +#: classes/em-location.php:150 +#: classes/em-location.php:194 +#: classes/em-location.php:196 +#: templates/buddypress/group-events.php:13 +#: templates/buddypress/my-events.php:75 +#: templates/buddypress/my-group-events.php:13 +#: templates/forms/location-editor.php:41 +#: em-actions.php:169 +#: admin/em-locations.php:178 +#: admin/em-locations.php:211 +#: admin/em-event.php:366 +#: admin/em-bookings.php:135 +#: admin/em-options.php:350 +#: admin/em-events.php:123 +msgid "Location" +msgstr "Ubicación" + +#: classes/em-location.php:144 +#: classes/em-location.php:152 +#: templates/forms/location-editor.php:7 +#: admin/em-options.php:352 +#: admin/em-options.php:353 +msgid "location" +msgstr "ubicación" + +#: classes/em-location.php:150 +#: classes/em-category.php:96 +msgid "%s successfully added." +msgstr "%s agregado con éxito." + +#: classes/em-location.php:157 +#: classes/em-category.php:100 +msgid "You do not have permission to create/edit %s." +msgstr "Usted no tiene permiso para crear / editar %s." + +#: classes/em-location.php:157 +#: classes/em-location.php:199 +#: events-manager.php:211 +#: events-manager.php:212 +#: events-manager.php:215 +#: events-manager.php:217 +#: events-manager.php:219 +#: admin/em-options.php:344 +#: admin/em-options.php:345 +#: admin/em-options.php:346 +#: admin/em-options.php:347 +#: admin/em-options.php:348 +msgid "locations" +msgstr "lugares" + +#: classes/em-location.php:194 +#: em-actions.php:109 +msgid "%s successfully deleted." +msgstr "%s se ha eliminado correctamente." + +#: classes/em-location.php:196 +#: em-actions.php:112 +msgid "%s could not be deleted." +msgstr "%s no pudo ser eliminado." + +#: classes/em-location.php:199 +msgid "You do not have permission to delete %s." +msgstr "Usted no tiene permiso para eliminar %s." + +#: classes/em-category.php:31 +msgid "The category name" +msgstr "El nombre de la categoría" + +#: classes/em-category.php:90 +#: classes/em-category.php:96 +#: templates/buddypress/my-events.php:136 +#: em-actions.php:239 +#: admin/em-categories.php:166 +#: admin/em-event.php:265 +#: admin/em-options.php:375 +msgid "Category" +msgstr "Categoría" + +#: classes/em-category.php:100 +#: events-manager.php:209 +#: admin/em-options.php:369 +#: admin/em-options.php:370 +#: admin/em-options.php:371 +#: admin/em-options.php:372 +#: admin/em-options.php:373 +msgid "categories" +msgstr "categorías" + +#: em-template-tags-depreciated.php:146 +msgid "Ach, some problems here:" +msgstr "Ach, algunos problemas aquí:" + +#: templates/buddypress/group-events.php:14 +#: templates/buddypress/my-events.php:76 +#: templates/buddypress/my-group-events.php:14 +#: admin/bookings/em-events.php:102 +#: admin/em-events.php:124 +msgid "Date and time" +msgstr "Fecha y hora" + +#: templates/buddypress/group-events.php:25 +#: templates/buddypress/my-group-events.php:25 +msgid "edit" +msgstr "editar" + +#: templates/buddypress/my-events.php:37 +#: templates/buddypress/my-locations.php:25 +#: admin/em-categories.php:58 +#: admin/em-locations.php:42 +#: admin/em-events.php:43 +msgid "Add New" +msgstr "Añadir nuevo" + +#: templates/buddypress/my-events.php:39 +msgid "Upcoming" +msgstr "Próximos" + +#: templates/buddypress/my-events.php:43 +#: admin/bookings/em-events.php:29 +msgid "Past Events" +msgstr "Eventos pasados" + +#: templates/buddypress/my-events.php:46 +#: templates/buddypress/my-events.php:48 +#: templates/templates/events-search.php:10 +#: admin/em-events.php:70 +#: admin/em-events.php:72 +msgid "Search Events" +msgstr "Búsqueda de eventos" + +#: templates/buddypress/my-events.php:63 +#: admin/bookings/em-events.php:91 +#: admin/em-events.php:111 +msgid "no events" +msgstr "hay eventos" + +#: templates/buddypress/my-events.php:115 +#: events-manager.php:325 +#: em-events.php:130 +#: admin/em-events.php:163 +msgid "Bookings" +msgstr "Reservas" + +#: templates/buddypress/my-events.php:116 +#: admin/em-people.php:48 +#: admin/em-events.php:164 +msgid "Booked" +msgstr "Reservado" + +#: templates/buddypress/my-events.php:124 +#: templates/buddypress/my-events.php:167 +#: templates/buddypress/my-events.php:169 +#: templates/forms/event-editor.php:369 +#: admin/em-event.php:575 +#: admin/bookings/em-rejected.php:113 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-confirmed.php:118 +#: admin/em-events.php:171 +#: admin/em-events.php:203 +msgid "Delete" +msgstr "Borrar" + +#: templates/buddypress/my-events.php:129 +#: admin/em-events.php:178 +msgid "Duplicate this event" +msgstr "Duplicar este evento" + +#: templates/buddypress/my-events.php:155 +#: templates/buddypress/my-events.php:166 +#: templates/forms/event-editor.php:13 +#: templates/forms/event-editor.php:174 +#: admin/em-event.php:23 +#: admin/em-event.php:145 +#: admin/em-events.php:202 +msgid "Reschedule" +msgstr "Reprogramar" + +#: templates/buddypress/my-events.php:162 +#: admin/em-events.php:198 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "ADVERTENCIA! Eliminará todas las repeticiones de este evento, incluyendo historial de reservas asociadas a cualquier caso de esta recurrencia. Para mantener la información de reserva, visite el único evento relevante y guardarlo para separarla de esta serie de recurrencia." + +#: templates/buddypress/my-locations.php:27 +#: em-events.php:130 +#: admin/em-locations.php:52 +msgid "My %s" +msgstr "Mi %s" + +#: templates/buddypress/my-locations.php:27 +#: templates/buddypress/my-locations.php:30 +#: events-manager.php:324 +#: em-actions.php:169 +#: em-install.php:348 +#: em-install.php:349 +#: admin/em-locations.php:41 +#: admin/em-locations.php:52 +#: admin/em-locations.php:55 +#: admin/em-options.php:342 +#: admin/em-options.php:344 +#: admin/em-options.php:345 +#: admin/em-options.php:346 +#: admin/em-options.php:347 +#: admin/em-options.php:348 +msgid "Locations" +msgstr "Ubicaciones" + +#: templates/buddypress/my-locations.php:30 +#: admin/em-locations.php:55 +msgid "All %s" +msgstr "Todos los %s" + +#: templates/buddypress/my-locations.php:37 +#: admin/em-locations.php:62 +#: admin/bookings/em-rejected.php:49 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:57 +#: admin/em-events.php:78 +msgid "Bulk Actions" +msgstr "Acciones en Bloque" + +#: templates/buddypress/my-locations.php:38 +#: admin/em-locations.php:63 +#: admin/bookings/em-events.php:58 +#: admin/em-events.php:79 +msgid "Delete selected" +msgstr "Eliminar seleccionados" + +#: templates/buddypress/my-locations.php:40 +#: admin/em-locations.php:65 +#: admin/bookings/em-events.php:60 +#: admin/em-events.php:81 +msgid "Apply" +msgstr "Aplicar" + +#: templates/buddypress/my-locations.php:54 +#: templates/buddypress/my-locations.php:63 +#: admin/em-locations.php:79 +#: admin/em-locations.php:89 +msgid "Address" +msgstr "Dirección" + +#: templates/buddypress/my-locations.php:55 +#: templates/buddypress/my-locations.php:64 +#: admin/em-locations.php:81 +#: admin/em-locations.php:91 +msgid "State" +msgstr "Estado" + +#: templates/buddypress/my-locations.php:56 +#: templates/buddypress/my-locations.php:65 +#: admin/em-locations.php:82 +#: admin/em-locations.php:92 +msgid "Country" +msgstr "País" + +#: templates/buddypress/my-locations.php:85 +#: admin/em-locations.php:113 +msgid "No venues have been inserted yet!" +msgstr "No hay lugares se han insertado todavía!" + +#: templates/templates/my-bookings.php:73 +msgid "Are you sure you want to cancel your booking?" +msgstr "¿Está seguro que desea cancelar su reserva?" + +#: templates/templates/my-bookings.php:73 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/templates/my-bookings.php:85 +msgid "You do not have any bookings." +msgstr "Usted no tiene ninguna reserva." + +#: templates/templates/my-bookings.php:95 +msgid "Please Log In to view your bookings." +msgstr "Por favor Entrar para ver sus reservas." + +#: templates/templates/map-global.php:15 +#: templates/placeholders/locationmap.php:15 +msgid "Loading Map...." +msgstr "Cargando mapa ...." + +#: templates/templates/events-search.php:31 +msgid "All Categories" +msgstr "Todas las categorías" + +#: templates/templates/events-search.php:39 +msgid "All Countries" +msgstr "Todos los países" + +#: templates/templates/events-search.php:53 +#: em-actions.php:452 +msgid "All Regions" +msgstr "Todas las regiones" + +#: templates/templates/events-search.php:70 +#: em-actions.php:429 +msgid "All States" +msgstr "Todos los Estados" + +#: templates/templates/events-search.php:88 +#: templates/templates/events-search.php:138 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +msgid "Search" +msgstr "Búsqueda" + +#: templates/templates/events-search.php:94 +#: templates/templates/events-search.php:95 +#: templates/templates/events-search.php:109 +msgid "Loading..." +msgstr "Loading ..." + +#: templates/templates/events-search.php:135 +msgid "Searching..." +msgstr "Buscando ..." + +#: templates/templates/ical.php:9 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Calendario" + +#: templates/forms/event-editor.php:6 +#: templates/forms/location-editor.php:7 +#: admin/em-categories.php:118 +#: admin/em-locations.php:125 +#: admin/em-event.php:14 +#: admin/em-bookings.php:107 +#: admin/em-bookings.php:163 +#: admin/em-bookings.php:213 +#: admin/em-bookings.php:351 +#: admin/em-people.php:9 +msgid "Unauthorized Access" +msgstr "Acceso no autorizado" + +#: templates/forms/event-editor.php:19 +#: admin/em-event.php:29 +msgid "Insert New Event" +msgstr "Insertar Nuevo Evento" + +#: templates/forms/event-editor.php:57 +#: admin/em-bookings.php:126 +msgid "Event Name" +msgstr "Nombre del Evento" + +#: templates/forms/event-editor.php:61 +#: admin/em-event.php:296 +msgid "The event name. Example: Birthday party" +msgstr "El nombre del evento. Ejemplo: la fiesta de cumpleaños" + +#: templates/forms/event-editor.php:87 +#: admin/em-event.php:206 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Seleccione el grupo que admin para unir este evento a la misma. Tenga en cuenta que todos los otros administradores de este grupo pueden modificar la reserva, y usted no será capaz de unattach el evento sin eliminarlo." + +#: templates/forms/event-editor.php:93 +msgid "When" +msgstr "Cuando" + +#: templates/forms/event-editor.php:96 +msgid "Starts on " +msgstr "Comienza el" + +#: templates/forms/event-editor.php:99 +msgid "from" +msgstr "de" + +#: templates/forms/event-editor.php:101 +#: templates/forms/ticket-form.php:18 +msgid "to" +msgstr "a" + +#: templates/forms/event-editor.php:103 +msgid "and ends on" +msgstr "y termina el" + +#: templates/forms/event-editor.php:109 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Este evento se extiende por todos los días entre el inicio y fecha final, con el inicio / fin de aplicar a cada día." + +#: templates/forms/event-editor.php:112 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Para un evento recurrente, un evento de un día, se creará en cada fecha recurrentes dentro de este intervalo de fechas." + +#: templates/forms/event-editor.php:124 +msgid "This event repeats" +msgstr "Este evento se repite" + +#: templates/forms/event-editor.php:127 +#: admin/em-event.php:95 +msgid "Daily" +msgstr "Diario" + +#: templates/forms/event-editor.php:127 +#: admin/em-event.php:95 +msgid "Weekly" +msgstr "Semanal" + +#: templates/forms/event-editor.php:127 +#: admin/em-event.php:95 +msgid "Monthly" +msgstr "Mensual" + +#: templates/forms/event-editor.php:131 +msgid "every" +msgstr "cada" + +#: templates/forms/event-editor.php:134 +#: admin/em-event.php:104 +msgid "day" +msgstr "día" + +#: templates/forms/event-editor.php:136 +#: admin/em-event.php:106 +msgid "days" +msgstr "días" + +#: templates/forms/event-editor.php:138 +msgid "week on" +msgstr "semana" + +#: templates/forms/event-editor.php:140 +msgid "weeks on" +msgstr "semanas" + +#: templates/forms/event-editor.php:142 +msgid "month on the" +msgstr "mes en el" + +#: templates/forms/event-editor.php:144 +msgid "months on the" +msgstr "mes en el" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "first" +msgstr "primero" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "second" +msgstr "segundo" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "third" +msgstr "tercera" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "fourth" +msgstr "cuarto" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "last" +msgstr "pasado" + +#: templates/forms/event-editor.php:162 +msgid "of each month" +msgstr "de cada mes" + +#: templates/forms/event-editor.php:167 +#: admin/em-event.php:138 +msgid "Check if your event happens more than once according to a regular pattern" +msgstr "Compruebe si su caso pasa más de una vez de acuerdo a un patrón regular" + +#: templates/forms/event-editor.php:179 +#: admin/em-event.php:150 +msgid "This is't a recurrent event" +msgstr "Este is't un evento recurrente" + +#: templates/forms/event-editor.php:186 +msgid "Where" +msgstr "Donde" + +#: templates/forms/event-editor.php:210 +msgid "Choose from one of your locations" +msgstr "Elegir entre uno de sus lugares" + +#: templates/forms/event-editor.php:210 +msgid "or add a new location" +msgstr "o agregar una nueva ubicación" + +#: templates/forms/event-editor.php:214 +#: templates/forms/location-editor.php:85 +#: admin/em-locations.php:262 +#: admin/em-event.php:453 +msgid "Location not found" +msgstr "Ubicación que no se encuentran" + +#: templates/forms/event-editor.php:221 +#: templates/forms/location-editor.php:95 +#: admin/em-categories.php:175 +#: admin/em-locations.php:274 +#: admin/em-event.php:464 +msgid "Details" +msgstr "Detalles" + +#: templates/forms/event-editor.php:226 +msgid "Details about the event." +msgstr "Los detalles del evento." + +#: templates/forms/event-editor.php:226 +msgid "HTML Allowed." +msgstr "HTML permitidas." + +#: templates/forms/event-editor.php:233 +msgid "Category:" +msgstr "Categoría:" + +#: templates/forms/event-editor.php:262 +#: admin/em-event.php:635 +msgid "No Value" +msgstr "Sin valor" + +#: templates/forms/event-editor.php:282 +#: admin/em-event.php:492 +msgid "Bookings/Registration" +msgstr "Reservas / Registro" + +#: templates/forms/event-editor.php:286 +#: admin/em-event.php:498 +msgid "Enable registration for this event" +msgstr "Permitir el registro para este evento" + +#: templates/forms/event-editor.php:288 +#: admin/em-event.php:238 +msgid "manage bookings" +msgstr "gestión de reservas" + +#: templates/forms/event-editor.php:289 +#: admin/em-event.php:239 +msgid "printable view" +msgstr "imprimir vista" + +#: templates/forms/event-editor.php:290 +#: admin/em-event.php:240 +#: admin/em-bookings.php:124 +msgid "export csv" +msgstr "csv de exportación" + +#: templates/forms/event-editor.php:307 +#: admin/em-event.php:513 +msgid "Tickets" +msgstr "Entradas" + +#: templates/forms/event-editor.php:308 +#: admin/em-event.php:514 +msgid "You have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Usted tiene billetes sencillos o múltiples, donde las entradas se availalble cierto bajo ciertas condiciones, por ejemplo, reservas anticipadas, descuentos para grupos, reservas de máximo por ticket, etc" + +#: templates/forms/event-editor.php:313 +#: admin/em-event.php:519 +msgid "Ticket Name" +msgstr "Ticket Nombre" + +#: templates/forms/event-editor.php:314 +#: templates/forms/ticket-form.php:9 +#: templates/forms/tickets-form.php:6 +#: templates/placeholders/bookingform.php:40 +#: templates/placeholders/bookingform.php:76 +#: em-bookings.php:115 +#: admin/em-event.php:520 +#: admin/em-bookings.php:182 +#: admin/em-bookings.php:276 +msgid "Price" +msgstr "Precio" + +#: templates/forms/event-editor.php:315 +#: admin/em-event.php:521 +msgid "Min/Max" +msgstr "Min / Max" + +#: templates/forms/event-editor.php:316 +#: admin/em-event.php:522 +msgid "Start/End" +msgstr "Inicio / Fin" + +#: templates/forms/event-editor.php:317 +#: admin/em-event.php:523 +msgid "Avail. Spaces" +msgstr "En vano. Espacios" + +#: templates/forms/event-editor.php:318 +#: admin/em-event.php:524 +#: admin/bookings/em-events.php:134 +msgid "Booked Spaces" +msgstr "Espacios reservados" + +#: templates/forms/event-editor.php:325 +#: admin/em-event.php:531 +msgid "Add new ticket" +msgstr "Añadir nuevo ticket" + +#: templates/forms/event-editor.php:338 +#: admin/em-event.php:544 +msgid "Free" +msgstr "Libre" + +#: templates/forms/event-editor.php:371 +#: admin/em-event.php:577 +msgid "View Bookings" +msgstr "Reservas de vista" + +#: templates/forms/event-editor.php:403 +#: admin/em-event.php:712 +msgid "Submit Event" +msgstr "Enviar evento" + +#: templates/forms/event-editor.php:415 +#: admin/em-event.php:733 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "¿Seguro de que desea volver a programar este evento se repita? Si usted hace esto, perderá toda la información de reserva y los acontecimientos que se repiten viejos serán eliminados." + +#: templates/forms/event-editor.php:424 +#: admin/em-event.php:743 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "¿Seguro de que desea desactivar las reservas? Si usted hace esto y guardar, perderá todas las reservas anteriores. Si desea evitar que las reservas, que se reduzca el número de espacios disponibles para la cantidad de reservas que tiene actualmente" + +#: templates/forms/ticket-form.php:11 +#: templates/placeholders/bookingform.php:42 +#: templates/placeholders/bookingform.php:80 +#: em-bookings.php:116 +#: em-bookings.php:144 +#: admin/em-bookings.php:183 +#: admin/em-bookings.php:275 +#: admin/em-people.php:33 +msgid "Spaces" +msgstr "Espacios" + +#: templates/forms/ticket-form.php:12 +msgid "If blank, there's no space limit." +msgstr "Si está en blanco, no hay límite de espacio." + +#: templates/forms/ticket-form.php:15 +msgid "Available from" +msgstr "Disponible en" + +#: templates/forms/ticket-form.php:21 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Agregar una fecha de inicio o al final (o ambos) para imponer limitaciones de tiempo de disponibilidad de entradas. Deja en blanco para el límite superior / inferior." + +#: templates/forms/ticket-form.php:24 +msgid "Bookings must order between" +msgstr "Las reservas deben orden entre" + +#: templates/forms/ticket-form.php:26 +msgid "and" +msgstr "y" + +#: templates/forms/ticket-form.php:28 +msgid "spaces." +msgstr "espacios." + +#: templates/forms/ticket-form.php:29 +msgid "Leave either blank for no upper/lower limit." +msgstr "Deja en blanco para el límite superior / inferior." + +#: templates/forms/ticket-form.php:32 +#: templates/forms/tickets-form.php:5 +#: admin/em-bookings.php:181 +msgid "Description" +msgstr "Descripción" + +#: templates/forms/tickets-form.php:2 +msgid "Create a ticket" +msgstr "Crear un ticket" + +#: templates/forms/tickets-form.php:8 +msgid "Available ticket spaces" +msgstr "Espacios disponibles entradas" + +#: templates/forms/tickets-form.php:10 +msgid "Start date of ticket availability" +msgstr "Fecha de inicio de la disponibilidad de entradas" + +#: templates/forms/tickets-form.php:11 +msgid "End date of ticket availability" +msgstr "Fecha de finalización de la disponibilidad de entradas" + +#: templates/forms/tickets-form.php:12 +msgid "Minimum tickets required per booking" +msgstr "Billetes mínimo requerido por reserva" + +#: templates/forms/tickets-form.php:13 +msgid "Maximum tickets required per booking" +msgstr "Entradas máxima requerida por reserva" + +#: templates/forms/tickets-form.php:18 +msgid "Add Ticket" +msgstr "Añadir Ticket" + +#: templates/forms/location-editor.php:12 +#: admin/em-locations.php:130 +msgid "Add location" +msgstr "Añadir ubicación" + +#: templates/forms/location-editor.php:15 +#: admin/em-locations.php:133 +msgid "Edit location" +msgstr "Editar la ubicación del" + +#: templates/forms/location-editor.php:17 +#: admin/em-locations.php:135 +msgid "required" +msgstr "necesario" + +#: templates/forms/location-editor.php:32 +#: admin/em-locations.php:156 +msgid "Location Name" +msgstr "Ubicación Nombre" + +#: templates/forms/location-editor.php:37 +#: admin/em-locations.php:161 +msgid "The name of the location" +msgstr "El nombre de la ubicación" + +#: templates/forms/location-editor.php:44 +#: admin/em-locations.php:214 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Si estás usando el Google Maps, más detalles nos proporcione, más preciso que Google puede estar en la búsqueda de su ubicación. Si su dirección no se encuentra, por favor intenta en maps.google.com , añadiendo el siguiente formulario separados por comas." + +#: templates/forms/location-editor.php:48 +#: admin/em-locations.php:218 +#: admin/em-event.php:403 +msgid "Address:" +msgstr "Dirección:" + +#: templates/forms/location-editor.php:54 +#: admin/em-locations.php:224 +#: admin/em-event.php:409 +msgid "City/Town:" +msgstr "Ciudad / Pueblo:" + +#: templates/forms/location-editor.php:60 +#: admin/em-locations.php:230 +#: admin/em-event.php:416 +msgid "State/County:" +msgstr "Estado / Provincia:" + +#: templates/forms/location-editor.php:66 +#: admin/em-locations.php:236 +#: admin/em-event.php:423 +msgid "Postcode:" +msgstr "Código Postal:" + +#: templates/forms/location-editor.php:72 +#: admin/em-locations.php:249 +#: admin/em-event.php:436 +msgid "Country:" +msgstr "País:" + +#: templates/forms/location-editor.php:75 +#: admin/em-locations.php:252 +#: admin/em-event.php:439 +msgid "none selected" +msgstr "no seleccionados" + +#: templates/forms/location-editor.php:99 +#: admin/em-locations.php:281 +msgid "Details about the location" +msgstr "Detalles sobre la ubicación" + +#: templates/forms/location-editor.php:103 +#: admin/em-locations.php:287 +msgid "Location image" +msgstr "Ubicación de la imagen" + +#: templates/forms/location-editor.php:109 +#: admin/em-locations.php:293 +msgid "No image uploaded for this location yet" +msgstr "No hay imagen cargada para esta ubicación" + +#: templates/forms/location-editor.php:112 +#: admin/em-categories.php:197 +#: admin/em-locations.php:296 +#: admin/em-event.php:486 +msgid "Upload/change picture" +msgstr "Carga / cambio de imagen" + +#: templates/forms/location-editor.php:115 +#: admin/em-locations.php:304 +msgid "Update location" +msgstr "Actualización de posición" + +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Mapa no disponible" + +#: templates/placeholders/bookingbutton.php:2 +msgid "Book Now" +msgstr "Reserve ahora" + +#: templates/placeholders/bookingbutton.php:3 +msgid "Booking..." +msgstr "Reservas ..." + +#: templates/placeholders/bookingbutton.php:4 +msgid "Booking Submitted" +msgstr "Reservas Enviado" + +#: templates/placeholders/bookingbutton.php:5 +msgid "Booking Error. Try again?" +msgstr "Reservas de error. Intentar de nuevo?" + +#: templates/placeholders/bookingform.php:15 +msgid "You are currently attending this event. Manage my bookings" +msgstr "En este momento está asistiendo a este evento. Gestionar mi reserva" + +#: templates/placeholders/bookingform.php:17 +msgid "Online bookings are not available for this event." +msgstr "Reservas en línea no están disponibles para este evento." + +#: templates/placeholders/bookingform.php:19 +msgid "Bookings are closed for this event." +msgstr "Reservas están cerrados para este evento." + +#: templates/placeholders/bookingform.php:38 +#: em-bookings.php:114 +#: admin/em-bookings.php:274 +msgid "Ticket Type" +msgstr "Tipo de entradas" + +#: templates/placeholders/bookingform.php:106 +#: admin/em-people.php:31 +msgid "E-mail" +msgstr "E-mail" + +#: templates/placeholders/bookingform.php:112 +#: em-bookings.php:158 +#: admin/em-bookings.php:297 +#: admin/em-people.php:34 +msgid "Comment" +msgstr "Comentario" + +#: templates/placeholders/bookingform.php:117 +#: em-bookings.php:162 +msgid "Send your booking" +msgstr "Enviar su reserva" + +#: templates/placeholders/bookingform.php:124 +#: em-actions.php:408 +msgid "You must log in before you make a booking." +msgstr "Usted debe registrarse antes de hacer una reserva." + +#: templates/placeholders/bookingform.php:130 +msgid "Log in if you already have an account with us." +msgstr "Inicia sesión si ya tiene una cuenta con nosotros." + +#: templates/placeholders/bookingform.php:132 +msgid "Username" +msgstr "Nombre de usuario" + +#: templates/placeholders/bookingform.php:136 +msgid "Password" +msgstr "Contraseña" + +#: templates/placeholders/bookingform.php:140 +msgid "Log In" +msgstr "Entrar" + +#: templates/placeholders/bookingform.php:141 +msgid "Remember Me" +msgstr "Recordarme" + +#: templates/placeholders/bookingform.php:156 +msgid "Sign Up" +msgstr "Regístrate" + +#: templates/placeholders/bookingform.php:160 +msgid "Password Lost and Found" +msgstr "Contraseña Lost and Found" + +#: templates/placeholders/bookingform.php:160 +msgid "Lost your password?" +msgstr "¿Olvidó su contraseña?" + +#: templates/placeholders/bookingform.php:166 +#: em-bookings.php:169 +msgid "No more tickets available at this time." +msgstr "No hay más entradas disponibles en este momento." + +#: templates/placeholders/bookingform.php:183 +msgid "Please wait while the booking is being submitted." +msgstr "Por favor, espere mientras que la reserva se ha presentado." + +#: em-bookings.php:74 +#: admin/em-options.php:484 +msgid "Booking cancelled" +msgstr "Reserva cancelada" + +#: em-bookings.php:77 +#: em-actions.php:366 +msgid "You must log in to cancel your booking." +msgstr "Usted debe registrarse para poder cancelar su reserva." + +#: em-bookings.php:97 +msgid "Book now!" +msgstr "Reserve ahora!" + +#: em-bookings.php:171 +msgid "You must register or log in in order to create and manage your bookings." +msgstr "Usted debe registrarse o iniciar sesión con el fin de crear y gestionar sus reservas." + +#: em-bookings.php:219 +#: em-bookings.php:233 +msgid "Cancel your booking" +msgstr "Cancelar su reserva" + +#: em-functions.php:9 +msgid "" +"

                  Hey, %s, welcome to Events Manager! We hope you like it around here.

                  \r\n" +"\t\t

                  Now it's time to insert events lists through widgets, template tags or shortcodes.

                  \r\n" +"\t\t

                  By the way, have you taken a look at the Settings page? That's where you customize the way events and locations are displayed.

                  \r\n" +"\t\t

                  What? Tired of seeing this advice? I hear you, click here and you won't see this again!

                  " +msgstr "" +"

                  Hey, %s, la bienvenida a Events Manager! Esperamos que te guste aquí.

                  \r\n" +"\t\t

                  Ahora es el momento de insertar listas de eventos a través de widgets, template tags o shortcodes.

                  \r\n" +"\t\t

                  Por cierto, ¿has echado un vistazo a la configuración de la página? Ahí es donde puede personalizar la forma en eventos y lugares se muestran.

                  \r\n" +"\t\t

                  ¿Qué? ¿Cansado de ver este consejo? Te escucho, click here y usted no verá esto otra vez!

                  " + +#: em-functions.php:139 +#: admin/bookings/em-events.php:14 +#: admin/em-events.php:48 +msgid "All events" +msgstr "Todos los eventos" + +#: em-functions.php:140 +#: admin/bookings/em-events.php:15 +#: admin/em-events.php:49 +msgid "Future events" +msgstr "Eventos futuros" + +#: em-functions.php:141 +#: admin/bookings/em-events.php:13 +#: admin/em-events.php:47 +msgid "Past events" +msgstr "Eventos pasados" + +#: em-functions.php:142 +msgid "Today's events" +msgstr "Acontecimientos de hoy" + +#: em-functions.php:143 +msgid "Tomorrow's events" +msgstr "Eventos de mañana" + +#: em-functions.php:144 +msgid "Events this month" +msgstr "Eventos de este mes" + +#: em-functions.php:145 +msgid "Events next month" +msgstr "Eventos del próximo mes" + +#: em-functions.php:146 +msgid "Events within 2 months" +msgstr "Eventos en los 2 meses" + +#: em-functions.php:147 +msgid "Events within 3 months" +msgstr "Eventos en los 3 meses" + +#: em-functions.php:148 +msgid "Events within 6 months" +msgstr "Eventos en los 6 meses" + +#: em-functions.php:149 +msgid "Events within 12 months" +msgstr "Eventos en los 12 meses" + +#: em-functions.php:181 +msgid "Trying to perform an illegal action." +msgstr "Intentando realizar una acción ilegal." + +#: em-functions.php:252 +msgid "ERROR: Please enter a username." +msgstr "ERROR: Por favor, introduzca un nombre de usuario." + +#: em-functions.php:254 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "ERROR: Este nombre de usuario no es válida, ya que utiliza caracteres no válidos. Por favor, introduzca un nombre de usuario válido." + +#: em-functions.php:257 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "ERROR: Este nombre de usuario ya está registrado, por favor, elija otro." + +#: em-functions.php:262 +msgid "ERROR: Please type your e-mail address." +msgstr "ERROR: Por favor escriba su dirección de correo electrónico." + +#: em-functions.php:264 +msgid "ERROR: The email address isn’t correct." +msgstr "ERROR: La dirección de correo electrónico no es correcto." + +#: em-functions.php:267 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "ERROR: Este correo electrónico ya está registrado, por favor, elija otro." + +#: em-functions.php:285 +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "ERROR: No se pudo registrar ... póngase en contacto con el webmaster !" + +#: em-functions.php:320 +msgid "New user registration on your blog %s:" +msgstr "Nuevo registro del usuario en el %s blog:" + +#: em-functions.php:321 +msgid "Username: %s" +msgstr "Nombre de usuario: %s" + +#: em-functions.php:322 +msgid "E-mail: %s" +msgstr "E-mail: %s" + +#: em-functions.php:323 +msgid "[%s] New User Registration" +msgstr "[%s] Registro de nuevo usuario" + +#: em-functions.php:334 +msgid "[%s] Your username and password" +msgstr "[%s] Su nombre de usuario y contraseña" + +#: events-manager.php:208 +msgid "You do not have permission to publish %s" +msgstr "Usted no tiene permiso para publicar %s" + +#: events-manager.php:208 +#: events-manager.php:210 +#: events-manager.php:214 +#: events-manager.php:216 +#: events-manager.php:221 +#: admin/em-options.php:355 +#: admin/em-options.php:356 +msgid "events" +msgstr "eventos" + +#: events-manager.php:209 +#: events-manager.php:217 +#: events-manager.php:220 +#: events-manager.php:221 +msgid "You do not have permission to edit %s" +msgstr "Usted no tiene permiso para editar %s" + +#: events-manager.php:210 +#: events-manager.php:211 +msgid "You do not have permission to delete others %s" +msgstr "Usted no tiene permiso para eliminar otros %s" + +#: events-manager.php:212 +#: events-manager.php:214 +msgid "You do not have permission to edit others %s" +msgstr "Usted no tiene permiso para editar otros %s" + +#: events-manager.php:213 +msgid "You do not have permission to manage others %s" +msgstr "Usted no tiene permiso para administrar otros %s" + +#: events-manager.php:213 +#: events-manager.php:218 +msgid "bookings" +msgstr "reservas" + +#: events-manager.php:215 +#: events-manager.php:216 +msgid "You do not have permission to delete %s" +msgstr "Usted no tiene permiso para eliminar %s" + +#: events-manager.php:218 +msgid "You do not have permission to manage %s" +msgstr "Usted no tiene permiso para administrar %s" + +#: events-manager.php:219 +msgid "You cannot to view others %s" +msgstr "No se puede ver a los demás %s" + +#: events-manager.php:220 +msgid "recurrences" +msgstr "recurrencias" + +#: events-manager.php:323 +msgid "Add new" +msgstr "Añadir nuevo" + +#: events-manager.php:326 +msgid "Event Categories" +msgstr "Categorías de eventos" + +#: events-manager.php:326 +#: em-install.php:373 +#: em-install.php:375 +#: admin/em-categories.php:57 +#: admin/em-options.php:367 +#: admin/em-options.php:369 +#: admin/em-options.php:370 +#: admin/em-options.php:371 +#: admin/em-options.php:372 +#: admin/em-options.php:373 +msgid "Categories" +msgstr "Categorías" + +#: events-manager.php:327 +msgid "Events Manager Settings" +msgstr "Eventos Settings Manager" + +#: events-manager.php:327 +#: events-manager.php:473 +msgid "Settings" +msgstr "Configuración" + +#: events-manager.php:328 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Obtención de ayuda para el Administrador de Eventos" + +#: events-manager.php:328 +msgid "Help" +msgstr "Ayuda" + +#: events-manager.php:456 +msgid "Add an event" +msgstr "Añadir un evento" + +#: em-debug.php:18 +#: em-install.php:368 +msgid "
                • No events in this location
                • " +msgstr "
                • No hay eventos en este lugar
                • " + +#: em-debug.php:44 +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Usted está en modo de depuración Eventos Manager. Para activar el modo debug off, vaya a la configuración de página." + +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "No Identificación del comprobante de pago facilitado" + +#: em-actions.php:93 +msgid "You are now viewing the duplicated %s." +msgstr "Ahora estás viendo el %s. duplicado" + +#: em-actions.php:170 +#: em-actions.php:240 +msgid "%s successfully deleted" +msgstr "%s se ha eliminado correctamente" + +#: em-actions.php:239 +msgid "EM_Categories" +msgstr "EM_Categories" + +#: em-actions.php:286 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Una nueva cuenta de usuario ha sido creado para usted. Por favor, consultar su correo electrónico los datos de acceso." + +#: em-actions.php:293 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Este correo electrónico ya existe en nuestro sistema, por favor acceda a registrarse para continuar con su reserva." + +#: em-actions.php:298 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Hubo un problema al crear una cuenta de usuario, por favor póngase en contacto con el administrador del sitio web." + +#: em-actions.php:303 +msgid "You must log in or register to make a booking." +msgstr "Debe iniciar sesión o registrarse para realizar una reserva." + +#: em-actions.php:343 +msgid "You already have booked a seat at this event." +msgstr "Usted ya tiene reservado un asiento en este evento." + +#: em-actions.php:354 +msgid "Booking %s" +msgstr "Reservas %s" + +#: em-install.php:225 +msgid "Uncategorized" +msgstr "Uncategorized" + +#: em-install.php:280 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_NAME on #F #j, #Y. He wants to reserve #_BOOKINGSPACES spaces.
                  Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                  Yours faithfully,
                  Events Manager - http://wp-events-plugin.com" +msgstr "# _BOOKINGNAME (#_BOOKINGEMAIL) Asistirá #_NAME en # F # J, # Y. Quiere reservar espacios #_BOOKINGSPACES .
                  Ahora bien, hay espacios #_BOOKEDSPACES reservados, #_AVAILABLESPACES están todavía disponibles.
                  Le saluda atentamente,
                  Gerente de Eventos - http://wp-events-plugin.com" + +#: em-install.php:280 +#: em-install.php:281 +#: em-install.php:282 +#: em-install.php:283 +#: em-install.php:284 +#: em-install.php:285 +msgid "

                  -------------------------------
                  Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

                  -------------------------------
                  Desarrollado por el Administrador de Eventos - http://wp-events-plugin.com" + +#: em-install.php:281 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_NAME on #F #j, #Y. He wanted to reserve #_BOOKINGSPACES spaces.
                  Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                  Yours faithfully,
                  Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) Canceló su reserva en el número de #_NAME #F #J, #Y. Quería reservar espacios #_BOOKINGSPACES .
                  Ahora bien, hay espacios #_BOOKEDSPACES reservados, #_AVAILABLESPACES están todavía disponibles.
                  Le saluda atentamente,
                  Gerente de Eventos - http://wp-events-plugin.com" + +#: em-install.php:282 +msgid "Dear #_BOOKINGNAME,
                  you have successfully reserved #_BOOKINGSPACES space/spaces for #_NAME.
                  Yours faithfully,
                  #_CONTACTNAME" +msgstr "Estimado #_BOOKINGNAME,
                  Usted ha reservado espacio #_BOOKINGSPACES / espacios para #_NAME.
                  Le saluda atentamente,
                  #_CONTACTNAME" + +#: em-install.php:283 +msgid "Dear #_BOOKINGNAME,
                  You have requested #_BOOKINGSPACES space/spaces for #_NAME.
                  Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
                  Yours faithfully,
                  #_CONTACTNAME" +msgstr "Estimado #_BOOKINGNAME,
                  Que ha requerido #_BOOKINGSPACES espacio para #_NAME.
                  Su reserva está actualmente pendiente de aprobación por nuestros administradores. Una vez aprobado, recibirá una confirmación automática.
                  Le saluda atentamente,
                  #_CONTACTNAME" + +#: em-install.php:284 +msgid "Dear #_BOOKINGNAME,
                  Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been rejected.
                  Yours faithfully,
                  #_CONTACTNAME" +msgstr "Estimado #_BOOKINGNAME,
                  Su reserva solicitada por en espacios #_BOOKINGSPACES #_NAME en #F #J, #Y ha sido rechazada.
                  Le saluda atentamente,
                  #_CONTACTNAME" + +#: em-install.php:285 +msgid "Dear #_BOOKINGNAME,
                  Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been cancelled.
                  Yours faithfully,
                  #_CONTACTNAME" +msgstr "Estimado #_BOOKINGNAME,
                  Su reserva solicitada por en espacios #_BOOKINGSPACES #_NAME en #F #J, #Y ha sido cancelado.
                  Le saluda atentamente,
                  #_CONTACTNAME" + +#: em-install.php:344 +#: em-install.php:349 +#: em-install.php:375 +msgid "No %s" +msgstr "No %s" + +#: em-install.php:434 +msgid "New booking" +msgstr "Nueva reserva" + +#: em-install.php:436 +#: em-install.php:444 +msgid "Booking Cancelled" +msgstr "Reservas canceladas" + +#: em-install.php:438 +msgid "Booking Pending" +msgstr "SOLICITUD DE RESERVA" + +#: em-install.php:440 +msgid "Booking Rejected" +msgstr "Reservas Rechazado" + +#: em-install.php:442 +msgid "Booking Confirmed" +msgstr "Reserva confirmada" + +#: em-install.php:447 +msgid "Powered by" +msgstr "Desarrollado por" + +#: em-install.php:448 +msgid "Bookings - #_NAME" +msgstr "Reservas - #_NAME" + +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Ubicaciones de eventos" + +#: widgets/em-locations.php:19 +msgid "Display a list of event locations on Events Manager." +msgstr "Mostrar una lista de lugares de actividades en el Administrador de Eventos." + +#: widgets/em-locations.php:44 +msgid "No locations" +msgstr "No hay lugares" + +#: widgets/em-locations.php:67 +#: widgets/em-calendar.php:58 +#: widgets/em-events.php:76 +msgid "Title" +msgstr "Título" + +#: widgets/em-locations.php:71 +msgid "Show number of locations" +msgstr "Mostrar el número de localidades" + +#: widgets/em-locations.php:75 +msgid "Scope of the locations" +msgstr "Alcance de las localidades" + +#: widgets/em-locations.php:85 +msgid "Order of the locations" +msgstr "Orden de las ubicaciones" + +#: widgets/em-locations.php:87 +msgid "Ascendant" +msgstr "Ascendente" + +#: widgets/em-locations.php:88 +msgid "Descendant" +msgstr "Descendiente" + +#: widgets/em-locations.php:92 +#: widgets/em-events.php:128 +msgid "List item format" +msgstr "Formato de la lista el punto" + +#: widgets/em-calendar.php:16 +msgid "Display your events in a calendar widget." +msgstr "Mostrar eventos en un widget de calendario." + +#: widgets/em-calendar.php:17 +msgid "Events Calendar" +msgstr "Calendario de Eventos" + +#: widgets/em-calendar.php:62 +msgid "Show Long Events?" +msgstr "Mostrar eventos de largo?" + +#: widgets/em-events.php:21 +#: widgets/em-events.php:52 +#: widgets/em-events.php:137 +msgid "all events" +msgstr "todos los eventos" + +#: widgets/em-events.php:23 +msgid "Display a list of events on Events Manager." +msgstr "Mostrar una lista de eventos en el Administrador de Eventos." + +#: widgets/em-events.php:49 +msgid "No events" +msgstr "No hay eventos" + +#: widgets/em-events.php:80 +msgid "Number of events" +msgstr "Número de eventos" + +#: widgets/em-events.php:84 +msgid "Scope" +msgstr "Alcance" + +#: widgets/em-events.php:94 +msgid "Order By" +msgstr "Ordenar por" + +#: widgets/em-events.php:98 +msgid "start date, start time, event name" +msgstr "fecha de inicio, hora de inicio, nombre del evento" + +#: widgets/em-events.php:99 +msgid "name, start date, start time" +msgstr "nombre, fecha de inicio, hora de inicio" + +#: widgets/em-events.php:100 +msgid "name, end date, end time" +msgstr "nombre, fecha de finalización, hora de finalización" + +#: widgets/em-events.php:101 +msgid "end date, end time, event name" +msgstr "fecha de finalización, hora de finalización, nombre del evento" + +#: widgets/em-events.php:112 +msgid "Order" +msgstr "Orden" + +#: widgets/em-events.php:116 +#: admin/em-options.php:255 +msgid "Ascending" +msgstr "Ascendente" + +#: widgets/em-events.php:117 +#: admin/em-options.php:256 +msgid "Descending" +msgstr "Descendente" + +#: widgets/em-events.php:132 +msgid "Show all events link at bottom?" +msgstr "Mostrar todos los eventos de enlace en el fondo?" + +#: widgets/em-events.php:136 +msgid "All events link text?" +msgstr "Todos los eventos de texto de enlaces?" + +#: admin/em-categories.php:21 +msgid "The category has been added." +msgstr "La categoría ha sido añadida." + +#: admin/em-categories.php:23 +msgid "The category has been updated." +msgstr "La categoría ha sido actualizada." + +#: admin/em-categories.php:39 +msgid "Categories Deleted" +msgstr "Categorías eliminados" + +#: admin/em-categories.php:71 +#: admin/em-categories.php:78 +msgid "ID" +msgstr "Identificación" + +#: admin/em-categories.php:102 +msgid "No categories have been inserted yet!" +msgstr "No hay categorías se han introducido todavía!" + +#: admin/em-categories.php:128 +msgid "Edit category" +msgstr "Editar categoría" + +#: admin/em-categories.php:145 +msgid "Category name" +msgstr "Nombre de la categoría" + +#: admin/em-categories.php:149 +msgid "The name of the category" +msgstr "El nombre de la categoría" + +#: admin/em-categories.php:150 +#: admin/em-locations.php:162 +#: admin/em-event.php:297 +msgid "View Slug" +msgstr "Ver Slug" + +#: admin/em-categories.php:157 +#: admin/em-locations.php:169 +#: admin/em-event.php:304 +msgid "Hide Slug" +msgstr "Ocultar Slug" + +#: admin/em-categories.php:166 +#: admin/em-locations.php:178 +msgid "%s Slug" +msgstr "%s Slug" + +#: admin/em-categories.php:168 +#: admin/em-locations.php:180 +#: admin/em-event.php:315 +msgid "The event slug. If the event slug already exists, a random number will be appended to the end." +msgstr "La babosa evento. Si la bala evento ya existe, un número al azar se añade al final." + +#: admin/em-categories.php:182 +msgid "Details about the category" +msgstr "Los detalles sobre la categoría" + +#: admin/em-categories.php:188 +msgid "Category image" +msgstr "Categoría de imágenes" + +#: admin/em-categories.php:194 +msgid "No image uploaded for this category yet" +msgstr "No hay imagen cargada para esta categoría aún" + +#: admin/em-categories.php:202 +msgid "Update category" +msgstr "Actualización de la categoría" + +#: admin/em-locations.php:80 +#: admin/em-locations.php:90 +msgid "Town" +msgstr "Ciudad" + +#: admin/em-locations.php:125 +msgid "You do not have the rights to manage this location." +msgstr "Usted no tiene los derechos para manejar esta situación." + +#: admin/em-locations.php:187 +msgid "Location Owner" +msgstr "Localización" + +#: admin/em-locations.php:192 +#: admin/em-event.php:165 +msgid "Select..." +msgstr "Seleccione ..." + +#: admin/em-locations.php:201 +#: admin/em-event.php:356 +msgid "Coordinates" +msgstr "Coordenadas" + +#: admin/em-locations.php:242 +#: admin/em-event.php:429 +msgid "Region:" +msgstr "Región:" + +#: admin/em-event.php:56 +msgid "Mon" +msgstr "Lun" + +#: admin/em-event.php:56 +msgid "Tue" +msgstr "Mar" + +#: admin/em-event.php:56 +msgid "Wed" +msgstr "Casarse" + +#: admin/em-event.php:56 +msgid "Thu" +msgstr "Jue" + +#: admin/em-event.php:56 +msgid "Fri" +msgstr "Vie" + +#: admin/em-event.php:56 +msgid "Sat" +msgstr "Sáb" + +#: admin/em-event.php:56 +msgid "Sun" +msgstr "Sol" + +#: admin/em-event.php:81 +msgid "Recurrence" +msgstr "Reaparición" + +#: admin/em-event.php:88 +msgid "Repeated event" +msgstr "Caso de repetirse" + +#: admin/em-event.php:101 +#: admin/em-event.php:124 +msgid "Every" +msgstr "Cada" + +#: admin/em-event.php:108 +msgid "week" +msgstr "semana" + +#: admin/em-event.php:110 +msgid "weeks" +msgstr "semana" + +#: admin/em-event.php:112 +msgid "month" +msgstr "mes" + +#: admin/em-event.php:114 +msgid "months" +msgstr "mes" + +#: admin/em-event.php:161 +msgid "Event Owner/Contact Person" +msgstr "Evento Propietario/Persona de Contacto" + +#: admin/em-event.php:192 +msgid "Group Ownership" +msgstr "Grupo de Propiedad" + +#: admin/em-event.php:218 +msgid "Bookings Stats" +msgstr "Estadísticas de reservas" + +#: admin/em-event.php:229 +msgid "Available Spaces" +msgstr "Espacios disponibles" + +#: admin/em-event.php:230 +msgid "Confirmed Spaces" +msgstr "Espacios confirmados" + +#: admin/em-event.php:231 +msgid "Pending Spaces" +msgstr "Espacios pendientes" + +#: admin/em-event.php:249 +msgid "No responses yet!" +msgstr "No hay respuestas aún!" + +#: admin/em-event.php:276 +msgid "No categories available, create one here first" +msgstr "No hay categorías disponibles, crear uno aquí en primer lugar" + +#: admin/em-event.php:313 +msgid "Event Slug" +msgstr "Caso Slug" + +#: admin/em-event.php:320 +msgid "Event date" +msgstr "Fecha del evento" + +#: admin/em-event.php:321 +msgid "Recurrence dates" +msgstr "Fechas de recurrencia" + +#: admin/em-event.php:330 +msgid "The event date." +msgstr "La fecha del evento." + +#: admin/em-event.php:333 +msgid "When not reoccurring, this event spans between the beginning and end date." +msgstr "Cuando no se repita, este evento se extiende entre el comienzo y de finalización." + +#: admin/em-event.php:338 +msgid "The recurrence beginning and end date." +msgstr "El principio de recurrencia y de finalización." + +#: admin/em-event.php:344 +msgid "Event time" +msgstr "Hora del evento" + +#: admin/em-event.php:351 +msgid "The time of the event beginning and end" +msgstr "El momento del comienzo del evento y final" + +#: admin/em-event.php:373 +msgid "Location:" +msgstr "Ubicación:" + +#: admin/em-event.php:389 +msgid "The name of the location where the event takes place. You can use the name of a venue, a square, etc" +msgstr "El nombre del lugar donde tiene lugar el evento. Usted puede utilizar el nombre de un lugar, un cuadrado, etc" + +#: admin/em-event.php:394 +msgid "Name:" +msgstr "Nombre:" + +#: admin/em-event.php:398 +msgid "Create a location or start typing to search a previously created location." +msgstr "Crear un lugar o empezar a escribir para buscar un lugar creado previamente." + +#: admin/em-event.php:399 +msgid "You cannot edit saved locations here." +msgstr "No puede editar ubicaciones guardadas aquí." + +#: admin/em-event.php:399 +msgid "Reset this form to create a location." +msgstr "Restablecer este formulario para crear un lugar." + +#: admin/em-event.php:444 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Llenar este en primer lugar, le permite encontrar rápidamente los estados previamente llenados y regiones del país." + +#: admin/em-event.php:471 +msgid "Details about the event" +msgstr "Los detalles del evento" + +#: admin/em-event.php:477 +msgid "Event image" +msgstr "Caso de la imagen" + +#: admin/em-event.php:483 +msgid "No image uploaded for this event yet" +msgstr "No hay imagen cargada para este evento" + +#: admin/em-event.php:609 +msgid "Attributes" +msgstr "Atributos" + +#: admin/em-event.php:654 +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Usted no tiene los atributos personalizados definidos en cualquiera de sus configuraciones de plantilla Gerente de Eventos. Por favor, añada a la página de configuración" + +#: admin/em-event.php:661 +msgid "Depreciated Attributes" +msgstr "Los atributos se depreció" + +#: admin/em-event.php:662 +msgid "If you see any attributes under here, that means they're not used in Events Manager anymore. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Si usted ve los atributos aquí abajo, eso significa que no estamos acostumbrados en el Administrador de Eventos más. Para agregarlos, es necesario agregar el atributo personalizado de nuevo a una opción de formato en la página de configuración. Para eliminar cualquiera de estos atributos se depreció, le dan un valor en blanco y guardar." + +#: admin/em-event.php:693 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings to add attribute placeholders." +msgstr "Con el fin de utilizar los atributos, es necesario definir algunos de sus plantillas, de lo contrario nunca va a mostrar. Ir a Eventos > Configuración para agregar marcadores de posición de atributos." + +#: admin/em-event.php:708 +msgid "WARNING! You are about to re-create all your recurrent events including erasing your old booking data! Are you sure you want to do this?" +msgstr "ADVERTENCIA! Usted está a punto de volver a crear todos los eventos recurrentes como el borrado de datos de su reserva de edad! ¿Estás seguro de que quieres hacer esto?" + +#: admin/em-bookings.php:85 +msgid "Event Bookings Dashboard" +msgstr "Reservas evento panel" + +#: admin/em-bookings.php:89 +#: admin/em-bookings.php:140 +#: admin/em-bookings.php:191 +msgid "Pending Bookings" +msgstr "Reservas pendientes" + +#: admin/em-bookings.php:92 +msgid "Events With Bookings Enabled" +msgstr "Eventos con reservas Activado" + +#: admin/em-bookings.php:107 +#: admin/em-bookings.php:213 +#: admin/em-bookings.php:351 +#: admin/em-people.php:9 +msgid "You do not have the rights to manage this event." +msgstr "Usted no tiene los derechos para gestionar este evento." + +#: admin/em-bookings.php:119 +msgid "Manage %s Bookings" +msgstr "Administrar las reservas %s" + +#: admin/em-bookings.php:120 +#: admin/em-bookings.php:174 +msgid "View/Edit Event" +msgstr "Ver / Editar Evento" + +#: admin/em-bookings.php:127 +msgid "Spaces confirmed" +msgstr "Espacios confirmados" + +#: admin/em-bookings.php:129 +msgid "Date" +msgstr "Fecha" + +#: admin/em-bookings.php:143 +#: admin/em-bookings.php:194 +msgid "Confirmed Bookings" +msgstr "Las reservas confirmadas" + +#: admin/em-bookings.php:145 +#: admin/em-bookings.php:196 +msgid "Rejected Bookings" +msgstr "Reservas rechazada" + +#: admin/em-bookings.php:147 +#: admin/em-bookings.php:198 +msgid "Cancelled Bookings" +msgstr "Reservas canceladas" + +#: admin/em-bookings.php:163 +msgid "You do not have the rights to manage this ticket." +msgstr "Usted no tiene los derechos para administrar este billete." + +#: admin/em-bookings.php:173 +msgid "Ticket for %s" +msgstr "Venta de entradas para %s" + +#: admin/em-bookings.php:175 +msgid "View Event Bookings" +msgstr "Ver reservas de eventos" + +#: admin/em-bookings.php:184 +msgid "Min" +msgstr "Min" + +#: admin/em-bookings.php:185 +msgid "Max" +msgstr "Max" + +#: admin/em-bookings.php:186 +msgid "Start" +msgstr "Comienzo" + +#: admin/em-bookings.php:187 +msgid "End" +msgstr "Final" + +#: admin/em-bookings.php:223 +msgid "Edit Booking" +msgstr "Editar Reserva" + +#: admin/em-bookings.php:231 +msgid "Event Details" +msgstr "Detalles del evento" + +#: admin/em-bookings.php:242 +msgid "Date/Time" +msgstr "Fecha / Hora" + +#: admin/em-bookings.php:254 +#: admin/em-bookings.php:373 +msgid "Personal Details" +msgstr "Datos personales" + +#: admin/em-bookings.php:262 +msgid "Booking Details" +msgstr "Datos de la Reserva" + +#: admin/em-bookings.php:270 +msgid "Status" +msgstr "Estado" + +#: admin/em-bookings.php:290 +msgid "Totals" +msgstr "Totales" + +#: admin/em-bookings.php:307 +msgid "Booking Notes" +msgstr "Notas de reserva" + +#: admin/em-bookings.php:310 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Usted puede agregar notas personales a continuación como referencia interna que los gerentes sólo evento se vea." + +#: admin/em-bookings.php:315 +msgid "wrote" +msgstr "escribió" + +#: admin/em-bookings.php:361 +msgid "Manage Person's Booking" +msgstr "Gestionar Reserva de la Persona" + +#: admin/em-bookings.php:363 +msgid "Edit User" +msgstr "Editar usuario" + +#: admin/em-bookings.php:384 +msgid "Past And Present Bookings" +msgstr "Reservas pasado y el presente" + +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-confirmed.php:53 +#: admin/em-events.php:173 +msgid "Approve" +msgstr "Aprobar" + +#: admin/bookings/em-rejected.php:55 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-confirmed.php:56 +msgid "Decline" +msgstr "Descenso" + +#: admin/bookings/em-rejected.php:112 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-confirmed.php:119 +msgid "Edit/View" +msgstr "Editar / Vista" + +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "No rechazó las reservas." + +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +#: admin/bookings/em-confirmed.php:116 +msgid "Reject" +msgstr "Rechazar" + +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "No se hacen reservas pendientes." + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Restaurar" + +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "No canceló las reservaciones." + +#: admin/bookings/em-person.php:118 +#: admin/bookings/em-confirmed.php:114 +msgid "Unapprove" +msgstr "Desaprobar" + +#: admin/bookings/em-person.php:139 +#: admin/bookings/em-confirmed.php:131 +msgid "No confirmed bookings." +msgstr "No hay reservas confirmadas." + +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Todos los eventos" + +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Eventos futuros" + +#: admin/bookings/em-events.php:51 +#: admin/em-events.php:63 +msgid "Total" +msgstr "Total" + +#: admin/bookings/em-events.php:72 +#: admin/em-events.php:92 +msgid "Filter" +msgstr "Filtro" + +#: admin/em-help.php:15 +msgid "Placeholders for customizing event pages" +msgstr "Marcadores de posición para la personalización de páginas de eventos" + +#: admin/em-help.php:16 +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "En la página de configuración , usted encontrará varios cuadros de texto donde puede editar la información del evento se ve cómo, por ejemplo, para las listas de eventos y ubicación. Utilizando los marcadores de posición a continuación, puede elegir qué información se debe mostrar." + +#: admin/em-help.php:17 +#: admin/em-options.php:58 +msgid "Event Related Placeholders" +msgstr "Eventos relacionados con marcadores de posición" + +#: admin/em-help.php:19 +#: admin/em-options.php:61 +msgid "Category Related Placeholders" +msgstr "Categoría relacionada marcadores de posición" + +#: admin/em-help.php:21 +#: admin/em-options.php:59 +msgid "Location Related Placeholders" +msgstr "Ubicación relacionados Marcadores" + +#: admin/em-help.php:23 +#: admin/em-options.php:60 +msgid "Booking Related Placeholders" +msgstr "Reservas marcadores relacionados" + +#: admin/em-people.php:27 +msgid "Bookings data" +msgstr "Reservas de datos" + +#: admin/em-people.php:32 +msgid "Phone number" +msgstr "Número de teléfono" + +#: admin/em-people.php:53 +msgid "Available" +msgstr "Disponible" + +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/em-people.php:72 +msgid "Events Manager" +msgstr "Gerente de Eventos" + +#: admin/em-admin.php:20 +msgid "" +"

                  Hey, %s, welcome to Events Manager! We hope you like it around here.

                  \r\n" +"\t\t\t

                  Now it's time to insert events lists through widgets, template tags or shortcodes.

                  \r\n" +"\t\t\t

                  By the way, have you taken a look at the Settings page? That's where you customize the way events and locations are displayed.

                  \r\n" +"\t\t\t

                  What? Tired of seeing this advice? I hear you, click here and you won't see this again!

                  " +msgstr "" +"

                  Hey, %s, la bienvenida a Events Manager! Esperamos que te guste aquí.

                  \r\n" +"\t\t\t

                  Ahora es el momento de insertar listas de eventos a través de widgets, template tags o shortcodes.

                  \r\n" +"\t\t\t

                  Por cierto, ¿has echado un vistazo a la configuración de la página? Ahí es donde puede personalizar la forma en eventos y lugares se muestran.

                  \r\n" +"\t\t\t

                  ¿Qué? ¿Cansado de ver este consejo? Te escucho, haga clic aquí y usted no verá esto otra vez!

                  " + +#: admin/em-admin.php:57 +msgid "Events Manager has some new features!
                  • Bookings can now be approved before they count towards your event's space allocations.
                  • Events now have owners, and you can restrict users so they can only manage events/locations/categories they create.

                    These new permissions are enabled by default, but since you upgraded it has been disabled to maintain the previous plugin behaviour. You can re-enable it from the settings page. Dismiss" +msgstr "Administrador de Eventos tiene algunas características nuevas!
                    • Reservas pueden ahora ser aprobado antes de que se cuenta para la asignación del espacio de su evento.
                    • Acontecimientos que ahora tienen dueños, y se puede restringir a los usuarios por lo que sólo puede administrar los eventos / lugares / categorías que crean.

                      Estos nuevos permisos están habilitados por defecto, pero ya ha realizado una actualización que ha sido deshabilitado para mantener el comportamiento anterior plug-in. Se puede volver a habilitar la página de configuración . Descartar" + +#: admin/em-admin.php:70 +msgid "Uh Oh! For some reason wordpress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Uh Oh! Por alguna razón, wordpress no pudo crear una página de eventos para que usted (o simplemente eliminado). No te preocupes, todo lo que tienes que hacer es crear una página en blanco, el nombre que quieras, y seleccionarla como su página de eventos en su página de configuración . Lo siento por el paso extra! Si usted sabe lo que está haciendo, es posible que haya hecho esto a propósito, si es así caso omiso de este mensaje" + +#: admin/em-admin.php:82 +msgid "A LOT has changed since Events Manager 3. We recommend you take a look at the settings page for new features and upgrade instructions, and you may particualarly be interested in modifying permissions. Dismiss" +msgstr "Mucho ha cambiado desde el Administrador de Eventos 3. Le recomendamos echar un vistazo a la página de configuración de nuevas características e instrucciones de actualización, y particualarly puede estar interesado en la modificación de los permisos. Descartar" + +#: admin/em-admin.php:94 +msgid "If you upgraded from 3.x to the RC2 and the update did not go so well, try reimporting old settings. Warning! Re-importing will rename all event slugs, re-import your old category settings from events, and recreate all tickets, so changes to these areas will be lost. Dismiss" +msgstr "Si ha actualizado desde 3.x para la RC2 y la actualización no fue tan bien, tratar de reimportación configuración anterior . ¡Advertencia! Volver a importar se cambie el nombre a todas las babosas caso, volver a importar la configuración antigua categoría de eventos, y recrear todos los boletos, por lo que los cambios en estas áreas se perderá. Descartar" + +#: admin/em-admin.php:118 +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Esta página corresponde al Administrador de Eventos de los eventos de página. Su contenido será invalidados por el Administrador de Eventos, aunque si se incluye el contenido de palabras (exactamente en mayúsculas) y rodearla con otro texto, contenido sólo se sobrescribirá. Si desea cambiar la forma de ver sus eventos, ir a la configuración de página." + +#: admin/em-admin.php:145 +msgid "Displaying %s–%s of %s" +msgstr "Viendo %s, %s de %s" + +#: admin/em-options.php:42 +msgid "Changes saved." +msgstr "Los cambios guardados." + +#: admin/em-options.php:62 +msgid "This accepts %s and %s placeholders." +msgstr "Este acepta variables %s y %s." + +#: admin/em-options.php:63 +#: admin/em-options.php:64 +msgid "This accepts %s placeholders." +msgstr "Este acepta variables %s." + +#: admin/em-options.php:65 +msgid "This accepts %s, %s and %s placeholders." +msgstr "Este acepta marcadores de posición%s,%s y %s." + +#: admin/em-options.php:67 +#: admin/em-options.php:626 +msgid "Save Changes" +msgstr "Guardar cambios" + +#: admin/em-options.php:67 +msgid "All" +msgstr "Todos" + +#: admin/em-options.php:69 +msgid "Only Network Admins see this" +msgstr "Sólo los administradores de red ver esto" + +#: admin/em-options.php:73 +msgid "Collapse All" +msgstr "Contraer todos" + +#: admin/em-options.php:74 +msgid "Expand All" +msgstr "Desplegar todo" + +#: admin/em-options.php:102 +msgid "Event Manager Options" +msgstr "Opciones de Event Manager" + +#: admin/em-options.php:152 +#: admin/em-options.php:168 +#: admin/em-options.php:210 +#: admin/em-options.php:300 +#: admin/em-options.php:323 +#: admin/em-options.php:339 +#: admin/em-options.php:364 +#: admin/em-options.php:386 +#: admin/em-options.php:401 +#: admin/em-options.php:422 +#: admin/em-options.php:444 +#: admin/em-options.php:496 +#: admin/em-options.php:515 +#: admin/em-options.php:529 +#: admin/em-options.php:593 +msgid "Click to toggle" +msgstr "Haga clic para cambiar" + +#: admin/em-options.php:152 +msgid "Multi Site Options" +msgstr "Opciones múltiples del Sitio" + +#: admin/em-options.php:156 +msgid "Enable global tables mode?" +msgstr "Activar el modo de tablas global?" + +#: admin/em-options.php:156 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Dejando esto en sí hará que todos los eventos, salvo en las tablas de eventos principal del sitio (EM también debe estar activado). Esto le permite compartir eventos a través de diferentes blogs, como el que muestra los eventos de la red al tiempo que permite a los usuarios visualizar y gestionar sus eventos dentro de su propio blog. Tenga en cuenta que la activación de eventos, esto significará antiguo creado en los blogs sub-no se tiene acceso a él, y si se cambia de nuevo que no será más que nuevos eventos creados en el modo de los acontecimientos mundiales sólo se mantendrá en el sitio principal." + +#: admin/em-options.php:157 +msgid "Display global events on main blog?" +msgstr "Mostrar los eventos mundiales en el blog principal?" + +#: admin/em-options.php:157 +msgid "Displays events from all sites on the network by default. You can still restrict events by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Muestra los sucesos de todos los sitios en la red por defecto. Todavía se puede restringir el blog a través de eventos de códigos cortos y etiquetas de plantilla, junto con el blog ​​atributo. Requiere tablas globales para ser activado." + +#: admin/em-options.php:158 +msgid "Link sub-site events directly to sub-site?" +msgstr "Vínculos a sitios sub-eventos directamente al sub-sitio?" + +#: admin/em-options.php:158 +msgid "When displaying global events on the main site you have the option of users viewing the event details on the main site or being directed to the sub-site." +msgstr "Cuando se muestran los acontecimientos mundiales en el sitio principal que tiene la opción de los usuarios que vean los detalles del evento en la página principal o se dirige a la sub-sitio." + +#: admin/em-options.php:168 +msgid "General options" +msgstr "Opciones generales" + +#: admin/em-options.php:172 +msgid "Use dropdown for locations?" +msgstr "Use desplegable para lugares?" + +#: admin/em-options.php:172 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Seleccione Sí para elegir la ubicación de un menú desplegable drow, la selección de ubicación será más rápido, pero perderá la capacidad de insertar los lugares con eventos" + +#: admin/em-options.php:173 +msgid "Use recurrence?" +msgstr "Use la recurrencia?" + +#: admin/em-options.php:173 +msgid "Select yes to enable the recurrence features feature" +msgstr "Seleccione Sí para activar la función de repetición características" + +#: admin/em-options.php:174 +msgid "Enable bookings?" +msgstr "Permiten reservas?" + +#: admin/em-options.php:174 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Seleccione Sí para permitir que las reservas y entradas para eventos." + +#: admin/em-options.php:175 +msgid "Use categories?" +msgstr "Utilice las categorías?" + +#: admin/em-options.php:175 +msgid "Select yes to enable the category features" +msgstr "Seleccione Sí para activar las funciones de categoría" + +#: admin/em-options.php:176 +msgid "Use event attributes?" +msgstr "Utilice los atributos de eventos?" + +#: admin/em-options.php:176 +msgid "Select yes to enable the attributes feature" +msgstr "Seleccione Sí para activar la función de los atributos" + +#: admin/em-options.php:180 +msgid "no default category" +msgstr "ninguna categoría por defecto" + +#: admin/em-options.php:185 +msgid "Default Category" +msgstr "Categoría por defecto" + +#: admin/em-options.php:185 +msgid "This option allows you to select the default category when adding an event." +msgstr "Esta opción le permite seleccionar la categoría por defecto al añadir un evento." + +#: admin/em-options.php:185 +#: admin/em-options.php:194 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(No aplicable a la propiedad en el caso actualmente, muy pronto!)" + +#: admin/em-options.php:189 +msgid "no default location" +msgstr "sin ubicación predeterminada" + +#: admin/em-options.php:194 +msgid "Default Location" +msgstr "Ubicación predeterminada" + +#: admin/em-options.php:194 +msgid "This option allows you to select the default location when adding an event." +msgstr "Esta opción le permite seleccionar la ubicación predeterminada cuando se agrega un evento." + +#: admin/em-options.php:197 +msgid "Default Location Country" +msgstr "Por defecto locación" + +#: admin/em-options.php:197 +msgid "no default country" +msgstr "ningún país por defecto" + +#: admin/em-options.php:197 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Si selecciona un país por defecto, que serán pre-seleccionados al crear una nueva ubicación." + +#: admin/em-options.php:199 +msgid "Event Attributes" +msgstr "Los atributos de eventos" + +#: admin/em-options.php:199 +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Usted puede también agregar los atributos de eventos aquí, uno por línea en este formato #_ATT{key} . Ellos no van a aparecer en las páginas de eventos a menos que se inserta en otra plantilla de abajo, pero es posible que desee almacenar información adicional acerca de un evento para otros usos. Más información sobre los marcadores de posición." + +#: admin/em-options.php:201 +msgid "Show some love?" +msgstr "Mostrar amor?" + +#: admin/em-options.php:201 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Cientos de horas libres han ido a hacer este plugin, mostrar su apoyo y añadir un pequeño enlace a la página web plug-in en la parte inferior de las páginas de su evento." + +#: admin/em-options.php:210 +#: admin/em-options.php:224 +msgid "Events page" +msgstr "Los eventos de página" + +#: admin/em-options.php:219 +msgid "[No Events Page]" +msgstr "[No hay página de Eventos]" + +#: admin/em-options.php:224 +msgid "This option allows you to select which page to use as an events page" +msgstr "Esta opción le permite seleccionar la página que desea usar como una página de eventos" + +#: admin/em-options.php:227 +msgid "Show events page in lists?" +msgstr "Mostrar eventos de página en las listas?" + +#: admin/em-options.php:227 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Marque esta opción si desea que la página de eventos que aparecen junto a otras páginas en las listas de las páginas." + +#: admin/em-options.php:228 +msgid "Display calendar in events page?" +msgstr "Ahora se está jugando en la página de eventos?" + +#: admin/em-options.php:228 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Esta opción permite ver el calendario en la página de eventos, en lugar de la lista predeterminada. Se recomienda que no muestre tanto el widget de calendario y una página del calendario." + +#: admin/em-options.php:228 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Si desea mostrar los eventos que abarque más de un día, consulte la sección de calendario en esta página." + +#: admin/em-options.php:229 +msgid "Disable title rewriting?" +msgstr "Desactivar el título reescritura?" + +#: admin/em-options.php:229 +msgid "Some wordpress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Algunos temas de los wordpress no siguen las mejores prácticas en la generación de los menús de navegación, por lo que el título de reescritura automática característica puede causar problemas, si los menús no están funcionando correctamente en las páginas de eventos, pruebe con la opción 'Sí', y ofrecen un marco HTML formato de título a continuación." + +#: admin/em-options.php:230 +msgid "Event Manager titles" +msgstr "Títulos Event Manager" + +#: admin/em-options.php:230 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Este ajuste sólo sólo importa si se selecciona 'Sí' para arriba. Usted se dará cuenta de los títulos de página de eventos no están siendo re-escrito, y usted tiene un nuevo título bajo el nombre de la página por defecto. Aquí es donde usted controla el HTML de este título. Asegúrese de mantener el marcador de posición #_PAGETITLE aquí, ya que eso es lo que se vuelve a escribir por el gerente de eventos. Para controlar lo que está reescrito en este título, consulte la configuración de más abajo para los títulos de las páginas." + +#: admin/em-options.php:231 +msgid "Event List Limits" +msgstr "Límites de la lista de eventos" + +#: admin/em-options.php:231 +msgid "This will control how many events are shown on one list by default." +msgstr "Esto controlar cuántos eventos se muestran en una lista por defecto." + +#: admin/em-options.php:232 +msgid "Are current events past events?" +msgstr "Son los acontecimientos actuales últimos acontecimientos?" + +#: admin/em-options.php:232 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "De manera predeterminada, los eventos que se tienen una fecha de finalización a más tardar hoy se incluyen en las búsquedas, cambie a si tener en cuenta los acontecimientos que comenzaron \"ayer\" como el pasado." + +#: admin/em-options.php:233 +msgid "Show events search?" +msgstr "Mostrar eventos de búsqueda?" + +#: admin/em-options.php:233 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Si es yes, un formulario de búsqueda aparecerá justo encima de la lista de eventos." + +#: admin/em-options.php:236 +msgid "Default event list ordering" +msgstr "Defecto ordenar la lista de eventos" + +#: admin/em-options.php:241 +msgid "Order by start date, start time, then event name" +msgstr "Ordenar por fecha de inicio, hora de inicio, y luego el nombre del evento" + +#: admin/em-options.php:242 +msgid "Order by name, start date, then start time" +msgstr "Ordenar por nombre, fecha de inicio, entonces la hora de inicio" + +#: admin/em-options.php:243 +msgid "Order by name, end date, then end time" +msgstr "Ordenar por nombre, fecha de finalización, el tiempo final" + +#: admin/em-options.php:244 +msgid "Order by end date, end time, then event name" +msgstr "Ordenar por fecha de finalización, hora de finalización, y luego el nombre del evento" + +#: admin/em-options.php:258 +msgid "All Ascending" +msgstr "Todos los Ascendente" + +#: admin/em-options.php:261 +msgid "All Descending" +msgstr "Todos los Descendente" + +#: admin/em-options.php:275 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "Cuando el Gestor de Eventos muestra una lista de eventos el comportamiento predeterminado es ordenar por fecha de inicio en orden ascendente. Para cambiar esto, modificar los valores anteriores." + +#: admin/em-options.php:279 +msgid "Event list scope" +msgstr "Evento alcance la lista" + +#: admin/em-options.php:289 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Mostrar sólo los eventos que comienzan dentro de un plazo determinado en la página de eventos. Por defecto es acontecimientos futuros sin límite de tiempo final." + +#: admin/em-options.php:300 +msgid "Events format" +msgstr "Eventos formato" + +#: admin/em-options.php:303 +#: admin/em-options.php:342 +#: admin/em-options.php:367 +msgid "%s Page" +msgstr "Página %s" + +#: admin/em-options.php:305 +msgid "Events page title" +msgstr "Eventos título de la página" + +#: admin/em-options.php:305 +msgid "The title on the multiple events page." +msgstr "El título de la página de eventos múltiples." + +#: admin/em-options.php:306 +msgid "Default event list format header" +msgstr "Caso por defecto Lista de formato de cabecera" + +#: admin/em-options.php:306 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Este contenido aparece justo encima de su código para el formato por defecto la lista de eventos. Por defecto está en blanco" + +#: admin/em-options.php:307 +msgid "Default event list format" +msgstr "Evento predeterminado lista de formatos" + +#: admin/em-options.php:307 +msgid "The format of any events in a list." +msgstr "El formato de los eventos en una lista." + +#: admin/em-options.php:308 +msgid "Default event list format footer" +msgstr "Evento predeterminado lista de formatos de pie de página" + +#: admin/em-options.php:308 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Este contenido aparecerá justo debajo de su código para el formato por defecto la lista de eventos. Por defecto está en blanco" + +#: admin/em-options.php:309 +msgid "No events message" +msgstr "No hay eventos mensaje" + +#: admin/em-options.php:309 +msgid "The message displayed when no events are available." +msgstr "El mensaje que aparece cuando no hay eventos disponibles." + +#: admin/em-options.php:310 +msgid "List events by date title" +msgstr "Lista de eventos por fecha título" + +#: admin/em-options.php:310 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
                      " +msgstr "Si está viendo una página de eventos en una fecha determinada, este es el título que se presentaba. Para insertar los valores de fecha, utilice PHP personajes formato de hora con un # símbolo delante de ellos, es decir, #m , #M , #j , etc
                      " + +#: admin/em-options.php:312 +#: admin/em-options.php:350 +#: admin/em-options.php:375 +msgid "Single %s Page" +msgstr "%s sola página" + +#: admin/em-options.php:314 +msgid "Single event page title format" +msgstr "Sola página en formato título evento" + +#: admin/em-options.php:314 +msgid "The format of a single event page title." +msgstr "El formato de un título del evento una sola página." + +#: admin/em-options.php:315 +msgid "Default single event format" +msgstr "El formato por defecto solo evento" + +#: admin/em-options.php:315 +msgid "The format of a single event page." +msgstr "El formato de una página solo evento." + +#: admin/em-options.php:323 +msgid "Calendar format" +msgstr "Calendario en formato" + +#: admin/em-options.php:327 +msgid "Small calendar title" +msgstr "Título del calendario pequeños" + +#: admin/em-options.php:327 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "El formato del título, correspondiente al texto que aparece cuando se pasa en un día del calendario lleno de eventos." + +#: admin/em-options.php:328 +msgid "Small calendar title separator" +msgstr "Calendario pequeño separador de título" + +#: admin/em-options.php:328 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "El separador que aparece en el título anterior, cuando más de uno los eventos están teniendo lugar en el mismo día." + +#: admin/em-options.php:329 +msgid "Full calendar events format" +msgstr "Calendario de eventos completo en formato" + +#: admin/em-options.php:329 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "El formato de cada evento cuando se muestra en el calendario completo. Recuerde incluir li etiquetas antes y después del evento." + +#: admin/em-options.php:330 +msgid "Show long events on calendar pages?" +msgstr "Mostrar eventos de largo en las páginas del calendario?" + +#: admin/em-options.php:330 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Si se muestra un calendario en la página de eventos (véase la sección Eventos de formato en esta página), usted tiene la opción de mostrar eventos que abarcan más de día en día se produce." + +#: admin/em-options.php:331 +msgid "Show list on day with single event?" +msgstr "Mostrar lista en el día con solo evento?" + +#: admin/em-options.php:331 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Por defecto, si un día de calendario sólo tiene un caso, se muestra un solo evento al hacer clic en el enlace de esa fecha del calendario. Si selecciona Sí aquí, usted conseguirá siempre ver una lista de eventos." + +#: admin/em-options.php:339 +msgid "Locations format" +msgstr "Lugares formato" + +#: admin/em-options.php:344 +#: admin/em-options.php:369 +msgid "%s page title" +msgstr "%s título de la página" + +#: admin/em-options.php:344 +#: admin/em-options.php:369 +msgid "The title on the multiple %s page." +msgstr "El título en la página del %s múltiples." + +#: admin/em-options.php:345 +#: admin/em-options.php:370 +msgid "%s list header format" +msgstr "%s formato de lista de cabecera" + +#: admin/em-options.php:345 +#: admin/em-options.php:370 +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Este contenido aparece justo por encima de su código para el formato de la lista %s abajo. Por defecto está en blanco" + +#: admin/em-options.php:346 +#: admin/em-options.php:371 +msgid "%s list item format" +msgstr "%s formato de lista de elementos" + +#: admin/em-options.php:346 +#: admin/em-options.php:371 +msgid "The format of a single %s in a list." +msgstr "El formato de un solo %s en una lista." + +#: admin/em-options.php:347 +#: admin/em-options.php:372 +msgid "%s list footer format" +msgstr "%s formato de lista de pie de página" + +#: admin/em-options.php:347 +#: admin/em-options.php:372 +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Este contenido aparecerá justo debajo de su código para el formato de la lista %s arriba. Por defecto está en blanco" + +#: admin/em-options.php:348 +#: admin/em-options.php:356 +#: admin/em-options.php:373 +msgid "No %s message" +msgstr "No hay mensaje de %s" + +#: admin/em-options.php:348 +#: admin/em-options.php:373 +msgid "The message displayed when no %s are available." +msgstr "El mensaje que aparece cuando hay %s están disponibles." + +#: admin/em-options.php:352 +#: admin/em-options.php:377 +msgid "Single %s title format" +msgstr "%s formato de un solo título" + +#: admin/em-options.php:352 +msgid "The format of a single location page title." +msgstr "El formato de un título ubicación única página." + +#: admin/em-options.php:353 +#: admin/em-options.php:378 +msgid "Single %s page format" +msgstr "%s formato de página única" + +#: admin/em-options.php:353 +msgid "The format of a single location page." +msgstr "El formato de una página única ubicación." + +#: admin/em-options.php:354 +msgid "Default location balloon format" +msgstr "Ubicación predeterminada globo formato" + +#: admin/em-options.php:354 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "El formato de la del texto que aparece en el globo que describe la ubicación de un mapa de ubicación." + +#: admin/em-options.php:355 +msgid "Default %s list format" +msgstr "Por defecto %s formato de lista" + +#: admin/em-options.php:355 +msgid "The format of the events the list inserted in the location page through the #_NEXTEVENTS, #_PASTEVENTS and #_ALLEVENTS element." +msgstr "El formato de los eventos de la lista inserta en la página de localización a través de la #_NEXTEVENTS , #_PASTEVENTS y #_ALLEVENTS elemento." + +#: admin/em-options.php:356 +msgid "The message to be displayed in the list generated by #_NEXTEVENTS, #_PASTEVENTS and #_ALLEVENTS when no events are available." +msgstr "El mensaje que se mostrará en la lista generada por #_NEXTEVENTS , #_PASTEVENTS y #_ALLEVENTS cuando no hay eventos disponibles." + +#: admin/em-options.php:364 +msgid "Categories format" +msgstr "Categorías de formatos" + +#: admin/em-options.php:377 +msgid "The format of a single category page title." +msgstr "El formato de un título de la categoría única página." + +#: admin/em-options.php:378 +msgid "The format of a single category page." +msgstr "El formato de una página sola categoría." + +#: admin/em-options.php:386 +msgid "RSS feed format" +msgstr "En formato RSS feed" + +#: admin/em-options.php:390 +msgid "RSS main title" +msgstr "RSS título principal" + +#: admin/em-options.php:390 +msgid "The main title of your RSS events feed." +msgstr "El título principal de su feed RSS eventos." + +#: admin/em-options.php:391 +msgid "RSS main description" +msgstr "RSS de descripción de" + +#: admin/em-options.php:391 +msgid "The main description of your RSS events feed." +msgstr "La descripción de sus principales fuentes RSS eventos." + +#: admin/em-options.php:392 +msgid "RSS title format" +msgstr "RSS en formato título" + +#: admin/em-options.php:392 +msgid "The format of the title of each item in the events RSS feed." +msgstr "El formato del título de cada elemento en la alimentación de RSS eventos." + +#: admin/em-options.php:393 +msgid "RSS description format" +msgstr "RSS formato de descripción de" + +#: admin/em-options.php:393 +msgid "The format of the description of each item in the events RSS feed." +msgstr "El formato de la descripción de cada elemento en la alimentación de RSS eventos." + +#: admin/em-options.php:401 +msgid "Maps and geotagging" +msgstr "Mapas y geolocalización" + +#: admin/em-options.php:406 +msgid "Enable Google Maps integration?" +msgstr "Permiten la integración de Google Maps?" + +#: admin/em-options.php:410 +msgid "Check this option to enable Goggle Map integration." +msgstr "Marque esta opción para permitir la integración Mapa gafas." + +#: admin/em-options.php:414 +msgid "Map text format" +msgstr "Mapa del formato de texto" + +#: admin/em-options.php:414 +msgid "The text format inside the map balloons." +msgstr "El formato de texto dentro de los globos mapa." + +#: admin/em-options.php:422 +msgid "Booking and Ticketing Options" +msgstr "Reservas y venta de entradas Opciones" + +#: admin/em-options.php:426 +msgid "Approval Required?" +msgstr "La aprobación requiere?" + +#: admin/em-options.php:426 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Las reservas no se confirmará hasta que el administrador del caso lo apruebe." + +#: admin/em-options.php:427 +msgid "Currency" +msgstr "Moneda" + +#: admin/em-options.php:427 +msgid "Choose your currency for displaying event pricing." +msgstr "Seleccione su moneda para mostrar los precios de evento." + +#: admin/em-options.php:428 +msgid "Single ticket mode?" +msgstr "Modo de billete sencillo?" + +#: admin/em-options.php:428 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "En el modo de billete sencillo, el usuario sólo puede crear una entrada por la reserva (y no aparecerán las opciones para añadir más entradas)." + +#: admin/em-options.php:429 +msgid "Show ticket table in single ticket mode?" +msgstr "Mostrar la tabla de entradas en el modo de billete sencillo?" + +#: admin/em-options.php:429 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Si usted prefiere una mesa de entrada como con varios boletos, incluso para los eventos solo boleto, permitir esto." + +#: admin/em-options.php:430 +msgid "Show unavailable tickets?" +msgstr "Mostrar los boletos no están disponibles?" + +#: admin/em-options.php:430 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Usted puede elegir si desea o no mostrar los boletos disponibles para los visitantes." + +#: admin/em-options.php:431 +msgid "Reserved unconfirmed spaces?" +msgstr "Reservados espacios sin confirmar?" + +#: admin/em-options.php:431 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Por defecto, espacios para eventos de estar disponible una vez que hay reservas suficientes CONFIRMADO. A los espacios de reserva, incluso si unnapproved, seleccione sí." + +#: admin/em-options.php:432 +msgid "Show multiple tickets if logged out?" +msgstr "Mostrar entradas múltiples si la sesión?" + +#: admin/em-options.php:432 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Si la sesión, el usuario tendrá que registrarse para reservar. Sin embargo, podemos mostrar entradas disponibles si usted tiene más de un ticket." + +#: admin/em-options.php:433 +msgid "Allow overbooking when approving?" +msgstr "Permitir overbooking en la aprobación?" + +#: admin/em-options.php:433 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Si usted recibe una gran cantidad de reservas pendientes y decide permitir que más reservas de espacios lo permiten, dejando esto en sí le permitirá anular el límite de espacio para eventos de forma manual cuando se aprueba." + +#: admin/em-options.php:434 +msgid "Allow guest bookings?" +msgstr "Permita que las reservas de invitados?" + +#: admin/em-options.php:434 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Si está habilitado, los visitantes invitados pueden proporcionar una dirección de correo electrónico y una cuenta de usuario se creará automáticamente para que junto con su reserva. Que también será capaz de volver a entrar con la cuenta recién creada." + +#: admin/em-options.php:435 +msgid "Display login form?" +msgstr "Mostrar la pantalla de inicio de sesión?" + +#: admin/em-options.php:435 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Elegir si desea o no mostrar un formulario de acceso en el área de formulario de reserva para recordar a sus miembros para iniciar la sesión en antes de reservar." + +#: admin/em-options.php:444 +msgid "Booking Email Templates" +msgstr "Reservas Plantillas de correo electrónico" + +#: admin/em-options.php:448 +msgid "Default contact person" +msgstr "Por defecto persona de contacto" + +#: admin/em-options.php:448 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Seleccione la persona de contacto por defecto. Este usuario se utilizarán siempre que sea una persona de contacto no se especifica explícitamente para un evento" + +#: admin/em-options.php:449 +msgid "Email events admin?" +msgstr "Eventos de correo electrónico admin?" + +#: admin/em-options.php:449 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Si desea que todas las reservas de eventos de correo electrónico de confirmación enviado a un administrador de escribir a su correo electrónico aquí (dejar en blanco para que no envíe un e-mail)." + +#: admin/em-options.php:450 +msgid "Email contact person?" +msgstr "Email persona de contacto?" + +#: admin/em-options.php:450 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Marque esta opción si desea que el evento de contacto para recibir un correo electrónico cuando alguien coloca los libros. Un correo electrónico será enviado cuando la reserva se hace primero (sin importar si se confirma o pendientes)" + +#: admin/em-options.php:451 +msgid "Disable new registration email?" +msgstr "Deshabilitar correo electrónico de registro de nuevo?" + +#: admin/em-options.php:451 +msgid "Check this option if you want to prevent the wordpress registration email from going out when a user anonymously books an event." +msgstr "Marque esta opción si desea evitar que el correo electrónico de registro de wordpress salir cuando un usuario anónimo libros de un evento." + +#: admin/em-options.php:453 +msgid "Contact person booking confirmed" +msgstr "Persona de contacto de reserva confirmada" + +#: admin/em-options.php:454 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "Un correo electrónico será enviado al evento de contacto cuando la reserva se hace primero." + +#: admin/em-options.php:456 +msgid "Contact person email subject" +msgstr "Póngase en contacto con las personas objeto de correo electrónico" + +#: admin/em-options.php:457 +msgid "Contact person email" +msgstr "Contactos de correo electrónico persona" + +#: admin/em-options.php:459 +msgid "Contact person booking cancelled" +msgstr "Persona de contacto reserva cancelada" + +#: admin/em-options.php:460 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Un correo electrónico será enviado al evento de contacto, si alguien cancela su reserva." + +#: admin/em-options.php:462 +msgid "Contact person cancellation subject" +msgstr "Póngase en contacto con las personas objeto de cancelación" + +#: admin/em-options.php:463 +msgid "Contact person cancellation email" +msgstr "Contactos de correo electrónico de cancelación persona" + +#: admin/em-options.php:465 +msgid "Confirmed booking email" +msgstr "Reserva confirmada de correo electrónico" + +#: admin/em-options.php:466 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Esto se envía al hacer la reserva de una persona se confirma. Esta será enviada automáticamente si la aprobación se requieren y la reserva aprobada. Si la aprobación se desactivan, esta se envía cuando un usuario envía su primera reserva." + +#: admin/em-options.php:468 +msgid "Booking confirmed email subject" +msgstr "Reserva por correo electrónico confirmó tema" + +#: admin/em-options.php:469 +msgid "Booking confirmed email" +msgstr "Reservas e-mail confirmado" + +#: admin/em-options.php:471 +msgid "Pending booking email" +msgstr "Solicitud de reserva por correo electrónico" + +#: admin/em-options.php:472 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Esta será enviada a la persona la primera vez que presentar su reserva. No es relevante si las reservas no requieren aprobación." + +#: admin/em-options.php:474 +msgid "Booking pending email subject" +msgstr "Reservas asignatura pendiente de correo electrónico" + +#: admin/em-options.php:475 +msgid "Booking pending email" +msgstr "Reserva por correo electrónico en espera" + +#: admin/em-options.php:477 +msgid "Rejected booking email" +msgstr "Reserva rechazó correo electrónico" + +#: admin/em-options.php:478 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Esta será enviada automáticamente cuando la reserva es rechazada. No es relevante si las reservas no requieren aprobación." + +#: admin/em-options.php:480 +msgid "Booking rejected email subject" +msgstr "Reservas rechazó asunto del correo electrónico" + +#: admin/em-options.php:480 +msgid "The subject of the email sent to the person making a booking that is awaiting administrator approval. Not relevant if bookings don't require approval." +msgstr "El asunto del correo electrónico enviado a la persona que hace una reserva que está en espera de la aprobación del administrador. No es relevante si las reservas no requieren aprobación." + +#: admin/em-options.php:481 +msgid "Booking rejected email" +msgstr "Reservas rechazó correo electrónico" + +#: admin/em-options.php:481 +msgid "The body of the email which will be sent to the person if the booking is rejected. Not relevant if bookings don't require approval." +msgstr "El cuerpo del mensaje que se enviará a la persona si la reserva es rechazada. No es relevante si las reservas no requieren aprobación." + +#: admin/em-options.php:485 +msgid "This will be sent when a user cancels their booking." +msgstr "Este será enviado cuando un usuario cancela su reserva." + +#: admin/em-options.php:487 +msgid "Booking cancelled email subject" +msgstr "Reserva sujeta cancelado correo electrónico" + +#: admin/em-options.php:488 +msgid "Booking cancelled email" +msgstr "Reserva por correo electrónico cancelado" + +#: admin/em-options.php:496 +msgid "Email Settings" +msgstr "Configuración del correo electrónico" + +#: admin/em-options.php:500 +msgid "Notification sender name" +msgstr "Notificación el nombre del remitente" + +#: admin/em-options.php:500 +msgid "Insert the display name of the notification sender." +msgstr "Introduzca el nombre para mostrar del remitente de la notificación." + +#: admin/em-options.php:501 +msgid "Notification sender address" +msgstr "Notificación de la dirección del remitente" + +#: admin/em-options.php:501 +msgid "Insert the address of the notification sender." +msgstr "Introduzca la dirección del remitente de la notificación." + +#: admin/em-options.php:502 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "El puerto a través del cual le enviaremos por correo electrónico se enviarán las notificaciones. Asegúrese de que el firewall no bloquea este puerto" + +#: admin/em-options.php:503 +msgid "Mail sending method" +msgstr "Método de envío de correo" + +#: admin/em-options.php:503 +msgid "PHP mail function" +msgstr "PHP función de correo electrónico" + +#: admin/em-options.php:503 +msgid "Select the method to send email notification." +msgstr "Seleccionar el método para enviar notificaciones por correo electrónico." + +#: admin/em-options.php:504 +msgid "Use SMTP authentication?" +msgstr "Utilizar la autenticación SMTP?" + +#: admin/em-options.php:504 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "Autenticación SMTP es a menudo necesaria. Si utilizas Gmail, asegúrate de establecer este parámetro en sí" + +#: admin/em-options.php:505 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "El servidor SMTP. Por lo general, corresponde a 'localhost'. Si utilizas Gmail, establezca este valor a 'ssl://smtp.gmail.com:465'." + +#: admin/em-options.php:506 +msgid "SMTP username" +msgstr "Nombre de usuario SMTP" + +#: admin/em-options.php:506 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Introduzca el nombre de usuario que se utilizará para acceder a su servidor SMTP." + +#: admin/em-options.php:507 +msgid "SMTP password" +msgstr "Contraseña SMTP" + +#: admin/em-options.php:507 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Introduzca la contraseña que se utiliza para acceder a su servidor SMTP" + +#: admin/em-options.php:515 +msgid "Images size" +msgstr "Tamaño de las imágenes" + +#: admin/em-options.php:519 +msgid "Maximum width (px)" +msgstr "Anchura máxima (píxeles)" + +#: admin/em-options.php:519 +msgid "The maximum allowed width for images uploades" +msgstr "El ancho máximo permitido para uploades imágenes" + +#: admin/em-options.php:520 +msgid "Maximum height (px)" +msgstr "Altura máxima (píxeles)" + +#: admin/em-options.php:520 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "La altura máxima permitida para las imágenes cargadas, en píxeles" + +#: admin/em-options.php:521 +msgid "Maximum size (bytes)" +msgstr "El tamaño máximo (en bytes)" + +#: admin/em-options.php:521 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "El tamaño máximo permitido para las imágenes cargadas, en bytes" + +#: admin/em-options.php:529 +msgid "User Capabilities" +msgstr "Capacidades de usuario" + +#: admin/em-options.php:533 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Advertencia: La modificación de estos valores puede resultar en la exposición de información que antes estaban ocultos a todos los usuarios." + +#: admin/em-options.php:540 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Ahora puede dar el control de grano fino con respecto a lo que los usuarios pueden ver con los acontecimientos. Cada rol de usuario puede tener realizar varias series de acciones." + +#: admin/em-options.php:548 +msgid "Users can publish events and skip any admin approval." +msgstr "Los usuarios pueden publicar eventos, y omitir toda aprobación de administrador." + +#: admin/em-options.php:549 +msgid "User can edit the global categories." +msgstr "El usuario puede editar las categorías de nivel mundial." + +#: admin/em-options.php:550 +msgid "User can delete other users events." +msgstr "El usuario puede eliminar los eventos de otros usuarios." + +#: admin/em-options.php:551 +msgid "User can delete other users locations." +msgstr "El usuario puede eliminar las ubicaciones de otros usuarios." + +#: admin/em-options.php:552 +msgid "User can edit other users locations." +msgstr "El usuario puede editar ubicaciones de otros usuarios." + +#: admin/em-options.php:553 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "El usuario puede gestionar otros usuarios reservas individuales y la configuración de eventos de reserva." + +#: admin/em-options.php:554 +msgid "User can edit other users events." +msgstr "El usuario puede editar los eventos de otros usuarios." + +#: admin/em-options.php:555 +msgid "User can delete their own locations." +msgstr "El usuario puede eliminar sus propias localidades." + +#: admin/em-options.php:556 +msgid "User can delete their events." +msgstr "El usuario puede borrar sus eventos." + +#: admin/em-options.php:557 +msgid "User can edit their locations." +msgstr "El usuario puede editar sus ubicaciones." + +#: admin/em-options.php:558 +msgid "User can use and manage bookings with their events." +msgstr "El usuario puede utilizar y gestionar las reservas con sus eventos." + +#: admin/em-options.php:559 +msgid "User can view other users locations, to make locations shared by all users allow all event user roles to view all locations." +msgstr "El usuario puede ver las ubicaciones de otros usuarios, hacer lugares compartidos por todos los usuarios que todos los roles de usuario evento para ver todos los lugares." + +#: admin/em-options.php:560 +msgid "User can create recurrent events." +msgstr "El usuario puede crear eventos recurrentes." + +#: admin/em-options.php:561 +msgid "User can create and edit their events." +msgstr "El usuario puede crear y editar sus eventos." + +#: admin/em-options.php:593 +msgid "Anonymous Event Submission" +msgstr "Presentación de eventos Anónimo" + +#: admin/em-options.php:597 +msgid "You can allow users to publicly submit events on your blog by using the [event_form] shortcode, and enabling anonymous submissions below." +msgstr "Puede permitir a los usuarios enviar públicamente los acontecimientos en su blog con los botones [event_form] abreviado, y que permite envíos anónimos a continuación." + +#: admin/em-options.php:600 +msgid "Allow anonymous event submissions?" +msgstr "Permitir envíos anónimos evento?" + +#: admin/em-options.php:600 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "¿Te gustaría que los usuarios puedan presentar las reservas de forma anónima? Si es así, puede utilizar el nuevo [event_form] abreviado o em_event_form() etiqueta de plantilla con esta opción activada." + +#: admin/em-options.php:601 +msgid "Guest Default User" +msgstr "Invitado de usuario predeterminado" + +#: admin/em-options.php:601 +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that." +msgstr "Eventos requieren que un usuario de su propiedad. A fin de que los eventos que se presentarán de forma anónima tiene que asignar el evento a un usuario específico. Le recomendamos crear un \"Anónimo\" abonado con una contraseña muy buena y el uso que." + +#: admin/em-options.php:602 +msgid "Success Message" +msgstr "Mensaje de Éxito" + +#: admin/em-options.php:602 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Los remitentes anónimos no puedan ver o modificar su caso, una vez presentadas. Usted puede personalizar el mensaje de éxito que vemos aquí." + +#: admin/em-docs.php:15 +msgid "Do a search for this string within event name, details and location address." +msgstr "Hacer una búsqueda de esta cadena en el nombre del evento, los detalles y la dirección de ubicación." + +#: admin/em-docs.php:16 +msgid "See the events lists limit option on the settings page." +msgstr "Ver la opción de las listas de eventos de límite en la página de configuración." + +#: admin/em-docs.php:17 +#: admin/em-docs.php:23 +msgid "Choose what fields to order your results by. You can supply a single field or multiple comma-seperated fields (e.g. \"start_date,name\")." +msgstr "Elegir qué campos para ordenar los resultados por. Puede proporcionar un campo de una o varias comas seperated campos (por ejemplo, \"fecha_inicial, el nombre\")." + +#: admin/em-docs.php:17 +#: admin/em-docs.php:18 +msgid "See the event lists ordering option on the settings page." +msgstr "Vea la lista de eventos pedido opción en la página de configuración." + +#: admin/em-docs.php:21 +msgid "If set to 1 will only show locations that have at least one event occurring during the scope." +msgstr "Si se establece en un sólo mostrará los lugares que tienen al menos un evento que ocurre durante el alcance." + +#: admin/em-docs.php:22 +msgid "If set to 1 will only show locations that have no events occurring during the scope." +msgstr "Si se establece en un sólo mostrará los lugares que no tienen los eventos ocurridos durante el alcance." + +#: admin/em-docs.php:25 +msgid "Search for locations in this town (no partial matches, case sensitive)." +msgstr "Búsqueda de lugares en esta ciudad (no hay coincidencias parciales, mayúsculas y minúsculas)." + +#: admin/em-docs.php:25 +#: admin/em-docs.php:26 +#: admin/em-docs.php:27 +#: admin/em-docs.php:28 +#: admin/em-docs.php:29 +msgid "none" +msgstr "ninguno" + +#: admin/em-docs.php:26 +msgid "Search for locations in this state (no partial matches, case sensitive)." +msgstr "Buscar ubicaciones en este estado (sin coincidencias parciales, mayúsculas y minúsculas)." + +#: admin/em-docs.php:27 +msgid "Search for locations in this region (no partial matches, case sensitive)." +msgstr "Buscar ubicaciones en esta región (sin coincidencias parciales, mayúsculas y minúsculas)." + +#: admin/em-docs.php:28 +msgid "Search for locations in this country (no partial matches, case sensitive)." +msgstr "Búsqueda de lugares en este país (no hay coincidencias parciales, mayúsculas y minúsculas)." + +#: admin/em-docs.php:29 +msgid "Search for locations in this postcode (no partial matches, case sensitive)." +msgstr "Buscar ubicaciones en este código postal (no las coincidencias parciales, mayúsculas y minúsculas)." + +#: admin/em-docs.php:32 +msgid "If set to 1 it will display a full calendar that shows event names." +msgstr "Si se establece en 1, se mostrará un calendario completo que muestra los nombres de evento." + +#: admin/em-docs.php:33 +msgid "If set to 1, will show events that last longer than a day." +msgstr "Si se establece en 1, se muestran los eventos que duran más de un día." + +#: admin/em-docs.php:34 +msgid "Same as for events." +msgstr "Igual que para los eventos." + +#: admin/em-docs.php:39 +msgid "Limits the amount of values returned to this number." +msgstr "Limita la cantidad de valores que devuelve a este número." + +#: admin/em-docs.php:40 +msgid "Choose the time frame of events to show. Accepted values are \"future\", \"past\" or \"all\" events. Additionally you can supply dates (in format of YYYY-MM-DD), either single for events on a specific date or two dates seperated by a comma (e.g. 2010-12-25,2010-12-31) for events ocurring between these dates." +msgstr "Elija el período de tiempo de eventos para mostrar. Los valores aceptados son \"future\", \"past\" o \"all\". Además, puede proporcionar las fechas (en formato AAAA-MM-DD), ya sea solo para los eventos en una fecha específica o dos fechas separadas por una coma (por ejemplo, 2010-12-25,2010-12-31) para eventos ocurring entre estos fechas." + +#: admin/em-docs.php:41 +msgid "Indicates the order of the events. Choose between ASC (ascending) and DESC (descending)." +msgstr "Indica el orden de los acontecimientos. Elija entre ASC (ascendente) y DESC (descendente)." + +#: admin/em-docs.php:42 +msgid "Choose what fields to order your results by. You can supply a single field or multiple comma-seperated fields (e.g. \"start_date,name\"). See specific instances (e.g. events, locations, etc.) for field names." +msgstr "Elegir qué campos para ordenar los resultados por. Puede proporcionar un campo de una o varias comas seperated campos (por ejemplo, \"fecha_inicial, el nombre\"). Ver casos específicos (por ejemplo, eventos, lugares, etc) para los nombres de campo." + +#: admin/em-docs.php:43 +msgid "If you are displaying some information with the shortcode or function (e.g. listing events), you can supply the html and placeholders here." +msgstr "Si usted es de mostrar la información con el código abreviado o una función (por ejemplo, eventos de la lista), puede proporcionar el código HTML y marcadores de posición aquí." + +#: admin/em-docs.php:43 +msgid "The relevant default format will be taken from the settings page." +msgstr "El formato por defecto correspondiente será tomado de la página de configuración." + +#: admin/em-docs.php:44 +msgid "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the search to events with these id(s)." +msgstr "Suministro de un identificador único o identificadores de coma seperated (por ejemplo, \"1,2,3\") para limitar la búsqueda a los eventos con estas id (s)." + +#: admin/em-docs.php:45 +msgid "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the search to events in these categories." +msgstr "Suministro de un identificador único o identificadores de coma seperated (por ejemplo, \"1,2,3\") para limitar la búsqueda a los eventos en estas categorías." + +#: admin/em-docs.php:46 +msgid "Supply a single id or comma-seperated ids to limit the search to these locations (or events in these locations)." +msgstr "Suministro de un identificador único o identificadores de coma seperated para limitar la búsqueda a estos lugares (o eventos en estos lugares)." + +#: admin/em-docs.php:47 +msgid "For example, if you have ten results, if you set this to 5, only the last 5 results will be returned. Useful for pagination." +msgstr "Por ejemplo, si usted tiene diez resultados, si lo pone a 5, sólo los últimos 5 resultados serán devueltos. Útiles para la paginación." + +#: admin/em-docs.php:48 +msgid "If set to 1, will show only events that are recurring (i.e. events that are repeated over different dates)." +msgstr "Si se establece en 1, se muestran sólo los eventos que son recurrentes (es decir, eventos que se repiten en fechas diferentes)." + +#: admin/em-docs.php:49 +msgid "If set to 1, will only show recurring event templates. Only useful if you know what you're doing, use recurrence if you want events that are recurrences." +msgstr "Si se establece en 1, sólo se muestran las plantillas recurrentes del evento. Sólo es útil si usted sabe lo que está haciendo, el uso de recurrencia si desea que los eventos que son repeticiones." + +#: admin/em-docs.php:50 +msgid "If set to a month (1 to 12) only events that start or end during this month/year will be retured. Must be used in conjunction with year and does not work as intended if used with scope." +msgstr "Si se establece en un mes (1 a 12) sólo los eventos que comienzan o terminan en este mes / año se retured. Debe ser usado en conjunción con el año y no funciona como está previsto si se utiliza con el alcance." + +#: admin/em-docs.php:51 +msgid "If set to a year (e.g. 2010) only events that start or end during this year/month will be returned. Does not work as intended if used with scope." +msgstr "Si se establece en un año (por ejemplo, 2010) sólo los eventos que comienzan o terminan en este año / mes serán devueltos. No funciona como está previsto si se utiliza con el alcance." + +#: admin/em-docs.php:52 +msgid "If you supply this as an argument, the returned data will be in an array, no objects (only useful wen using PHP, not shortcodes)" +msgstr "Si se proporciona este argumento, los datos devueltos estarán en una matriz, los objetos no (sólo es útil wen usando PHP, no shortcodes)" + +#: admin/em-docs.php:53 +msgid "When using a function or shortcode that outputs items (e.g. [events_list] for events, [locations_list] for locations), if the number of items supercede the limit of items to show, setting this to 1 will show page links under the list." +msgstr "Cuando se utiliza una función o un código corto que las salidas de los elementos (por ejemplo, [events_list] para eventos, [locations_list] para las ubicaciones), si el número de elementos sustituyen a los límites de elementos que mostrar, dejando esto en una página de enlaces se muestran en la lista." + +#: admin/em-docs.php:60 +msgid "Displays the name of the event." +msgstr "Muestra el nombre del evento." + +#: admin/em-docs.php:61 +msgid "Shows the description of the event." +msgstr "Muestra la descripción del evento." + +#: admin/em-docs.php:62 +msgid "If you added a more tag to your event description, only the content before this tag will show (currently, no read more link is added)." +msgstr "Si ha añadido una etiqueta más a su descripción del evento, sólo el contenido antes de que esta etiqueta se muestran (en la actualidad, no leer más vínculo se agrega)." + +#: admin/em-docs.php:63 +msgid "Shows the event corresponding ID number in the database table." +msgstr "Muestra el número de ID de evento correspondiente en la tabla de base de datos." + +#: admin/em-docs.php:64 +#: admin/em-docs.php:133 +msgid "Shows the event image, if available." +msgstr "Muestra la imagen del evento, si está disponible." + +#: admin/em-docs.php:70 +msgid "Displays the start time in a 24 hours format (e.g. 16:30)." +msgstr "Muestra la hora de inicio en formato de 24 horas (por ejemplo 16:30)." + +#: admin/em-docs.php:71 +msgid "Displays the end time in a 24 hours format (e.g. 18:30)." +msgstr "Muestra el tiempo final en formato de 24 horas (por ejemplo 18:30)." + +#: admin/em-docs.php:72 +msgid "Displays the start time in a 12 hours format (e.g. 4:30 PM)." +msgstr "Muestra la hora de inicio en formato de 12 horas (por ejemplo, 4:30 PM)." + +#: admin/em-docs.php:73 +msgid "Displays the end time in a 12 hours format (e.g. 6:30 PM)." +msgstr "Muestra la hora final en un formato de 12 horas (por ejemplo 18:30)." + +#: admin/em-docs.php:77 +msgid "Events Manager allows extremely flexible date formatting by using PHP date syntax format characters along with placeholders." +msgstr "Gestor de eventos permite el formato de fechas muy flexible mediante el uso de PHP fecha caracteres de formato de sintaxis , junto con marcadores de posición." + +#: admin/em-docs.php:79 +msgid "Prepend # or #@ before a valid PHP date syntax format character to show start and end date/time information respectively (e.g. #F will show the starting month name like \"January\", #@h shows the end hour)." +msgstr "Anteponer # o #@ antes de una fecha válida de caracteres PHP sintaxis de formato para mostrar de inicio y finalización fecha / hora, respectivamente (por ejemplo, #F se mostrará el nombre del mes de partida como \"Enero\", # @ h, muestra la hora final)." + +#: admin/em-docs.php:80 +msgid "" +"You can also create a date format without prepending # to each character by wrapping a valid php date() format in #{} or #@{} (e.g. #_{d/m/Y}). If there is no end date (or is same as start date), the value is not shown. This is useful if you want to show event end dates only on events that are longer than on day, e.g. #j #M #Y #@_{ u\n" +"\t i l j M Y}." +msgstr "" +"También puede crear un formato de fecha sin anteponiendo # para cada personaje, envolviendo una fecha válida () de PHP en formato #{} o #@{} (por ejemplo, #_{d/m/Y} ). Si no hay una fecha de finalización (o es la misma que la fecha de inicio), el valor no se muestra. Esto es útil si desea mostrar las fechas de finalización del evento sólo en los eventos que son más largos que en el día, por ejemplo, #j #M #Y #@_{ u\n" +"\t i lj MY} ." + +#: admin/em-docs.php:85 +msgid "Simply prints the event URL. You can use this placeholder to build your own customised links." +msgstr "Simplemente imprime la URL del evento. Puede utilizar este marcador de posición para construir sus propios enlaces personalizados." + +#: admin/em-docs.php:86 +#: admin/em-docs.php:134 +msgid "Shows the event image url, if available." +msgstr "Muestra la url imagen del evento, si está disponible." + +#: admin/em-docs.php:87 +msgid "Displays the event name with a link to the event page." +msgstr "Muestra el nombre del evento con un enlace a la página del evento." + +#: admin/em-docs.php:88 +msgid "Inserts a link to the admin or buddypress (if activated) edit event page, only if a user is logged in and is allowed to edit the event." +msgstr "Inserta un enlace a la administración o BuddyPress (si está activado) página de edición de eventos, si un usuario está conectado y se le permite editar el evento." + +#: admin/em-docs.php:89 +msgid "Inserts a url to the admin or buddypress (if activated) edit event page, only if a user is logged in and is allowed to edit the event." +msgstr "Inserta una url que el administrador o BuddyPress (si está activado) página de edición de eventos, si un usuario está conectado y se le permite editar el evento." + +#: admin/em-docs.php:93 +msgid "Events Manager allows you to create dynamic attributes to your events, which act as extra information fields for your events (e.g. \"Dress Code\"). For more information see our online documentation for more info on attributes." +msgstr "Gestor de eventos le permite crear atributos dinámicos a sus eventos, que actúan como campos de información adicional para sus eventos (por ejemplo, \"Código de vestimenta\"). Para más información consulte nuestra documentación en línea para obtener más información sobre los atributos." + +#: admin/em-docs.php:95 +msgid "This key will appear as an option when adding attributes to your event." +msgstr "Esta clave aparecerá como una opción al agregar atributos a su evento." + +#: admin/em-docs.php:96 +msgid "This key will appear as an option when adding attributes to your event. The text in the second braces will appear if the attribute is not defined or left blank for that event." +msgstr "Esta clave aparecerá como una opción al agregar atributos a su evento. El texto de las llaves segundos aparecerá si el atributo no está definido o dejado en blanco para ese evento." + +#: admin/em-docs.php:97 +msgid "This key will appear as an option when adding attributes to your event. The second braces are optional and will use a select box with these values as input. If no valid value is defined, the first option is used." +msgstr "Esta clave aparecerá como una opción al agregar atributos a su evento. Las llaves segundos son opcionales y se utiliza una caja de selección de estos valores como entrada. Si no hay ningún valor válido se define, la primera opción se utiliza." + +#: admin/em-docs.php:101 +msgid "These placeholders will only show if RSVP is enabled for the given event and in the events manager settings page. Spaces placeholders will default to 0" +msgstr "Estos marcadores de posición sólo mostrará si RSVP está habilitada para el evento dado y en el gestor de eventos de configuración de la página. Marcadores de posición de los espacios por defecto a 0" + +#: admin/em-docs.php:103 +msgid "Adds a booking forms for this event." +msgstr "Añade un formulario de reserva para este evento." + +#: admin/em-docs.php:104 +msgid "Shows available spaces for the event." +msgstr "Muestra los espacios disponibles para el evento." + +#: admin/em-docs.php:105 +msgid "Shows the amount of currently booked spaces for the event." +msgstr "Muestra la cantidad de espacios que actualmente reservado para el evento." + +#: admin/em-docs.php:106 +msgid "Shows the amount of pending spaces for the event." +msgstr "Muestra la cantidad de espacios de espera para el evento." + +#: admin/em-docs.php:107 +msgid "Shows the total spaces for the event." +msgstr "Muestra el número total de espacios para el evento." + +#: admin/em-docs.php:108 +msgid "Shows the list of user avatars attending events." +msgstr "Muestra la lista de avatares de usuarios que asisten a los eventos." + +#: admin/em-docs.php:109 +msgid "A single button that will appear to logged in users, if they click on it, they apply for a booking. This button will only display if there is one ticket." +msgstr "Un solo botón que aparecerá a los usuarios registrados, si hacen clic en él, se aplican de una reserva. Este botón sólo se muestra si hay un boleto." + +#: admin/em-docs.php:110 +msgid "Shows the url to the admin or buddypress (if activated) bookings management page for this event. Only shown if user is logged in and able to manage bookings." +msgstr "Muestra la url a la administración o BuddyPress (si está activado) página de reservas de gestión de este evento. Sólo se muestra si el usuario está conectado y capaz de gestionar las reservas." + +#: admin/em-docs.php:111 +msgid "Shows a link to the admin or buddypress (if activated) bookings management page for this event. Only shown if user is logged in and able to manage bookings." +msgstr "Muestra un enlace a la administración o BuddyPress (si está activado) página de reservas de gestión de este evento. Sólo se muestra si el usuario está conectado y capaz de gestionar las reservas." + +#: admin/em-docs.php:115 +msgid "The values here are taken from the chosen contact for the specific event, or the default contact in the settings page." +msgstr "Los valores aquí se han obtenido del contacto elegido para el evento específico, o el contacto de forma predeterminada en la página de configuración." + +#: admin/em-docs.php:117 +msgid "Name of the contact person for this event (as shown in the dropdown when adding an event)." +msgstr "Nombre de la persona de contacto para este evento (como se muestra en el menú desplegable cuando se añade un evento)." + +#: admin/em-docs.php:118 +msgid "Contact person's username." +msgstr "Contactar con nombre de usuario de la persona." + +#: admin/em-docs.php:119 +msgid "E-mail of the contact person for this event." +msgstr "E-mail de la persona de contacto para este evento." + +#: admin/em-docs.php:120 +msgid "Phone number of the contact person for this event. Can be set in the user profile page." +msgstr "Número de teléfono de la persona de contacto para este evento. Se puede establecer en la página de perfil de usuario." + +#: admin/em-docs.php:121 +msgid "Contact person's avatar." +msgstr "Contacto avatar de la persona." + +#: admin/em-docs.php:122 +msgid "Contact person's \"Profile\" link. Only works with BuddyPress enabled." +msgstr "Persona de contacto \"Perfil\". Sólo funciona con BuddyPress habilitado." + +#: admin/em-docs.php:123 +msgid "Contact person's profile url. Only works with BuddyPress enabled." +msgstr "Contacto url persona de perfil. Sólo funciona con BuddyPress habilitado." + +#: admin/em-docs.php:124 +msgid "Contact person's wordpress user ID." +msgstr "Contact ID persona wordpress usuario." + +#: admin/em-docs.php:131 +msgid "Shows the category name of the event." +msgstr "Muestra el nombre de la categoría del evento." + +#: admin/em-docs.php:132 +msgid "Shows the category ID of the event." +msgstr "Muestra el ID de la categoría del evento." + +#: admin/em-docs.php:135 +#: admin/em-docs.php:151 +msgid "Shows the location description." +msgstr "Muestra la descripción de la ubicación." + +#: admin/em-docs.php:143 +msgid "Displays the location name." +msgstr "Muestra el nombre de la ubicación." + +#: admin/em-docs.php:144 +msgid "Displays the address." +msgstr "Muestra la dirección." + +#: admin/em-docs.php:145 +msgid "Displays the town." +msgstr "Muestra de la ciudad." + +#: admin/em-docs.php:146 +msgid "Displays the state/county." +msgstr "Muestra el estado / país." + +#: admin/em-docs.php:147 +msgid "Displays the postcode." +msgstr "Muestra el código postal." + +#: admin/em-docs.php:148 +msgid "Displays the region." +msgstr "Muestra de la región." + +#: admin/em-docs.php:149 +msgid "Displays the country." +msgstr "Muestra el país." + +#: admin/em-docs.php:150 +msgid "Displays a google map showing where the event is located (Will not show if maps are disabled in the settings page)" +msgstr "Muestra un mapa de Google que muestra dónde se encuentra el caso (no se mostrará si los mapas son con discapacidad en la página de configuración)" + +#: admin/em-docs.php:152 +msgid "If you added a more tag to your location description, only the content before this tag will show (currently, no read more link is added)." +msgstr "Si ha añadido una etiqueta más a la descripción de su ubicación, sólo el contenido antes de que esta etiqueta se muestran (en la actualidad, no leer más vínculo se agrega)." + +#: admin/em-docs.php:153 +msgid "Shows the location image." +msgstr "Muestra la imagen de la ubicación." + +#: admin/em-docs.php:154 +msgid "Displays the location ID number." +msgstr "Muestra el número ID de la ubicación." + +#: admin/em-docs.php:159 +msgid "Simply prints the location URL. You can use this placeholder to build your own customised links." +msgstr "Simplemente imprime la dirección URL de ubicación. Puede utilizar este marcador de posición para construir sus propios enlaces personalizados." + +#: admin/em-docs.php:160 +msgid "Displays the location name with a link to the location page." +msgstr "Muestra el nombre de la ubicación con un enlace a la página de localización." + +#: admin/em-docs.php:164 +msgid "You can show lists of other events that are being held at this location. The formatting of the list is the same as a normal events list." +msgstr "Puede mostrar una lista de otros eventos que se celebran en este lugar. El formato de la lista es el mismo que una lista de eventos normales." + +#: admin/em-docs.php:166 +msgid "Will show a list of all past events at this location." +msgstr "Mostrará una lista de todos los eventos pasados ​​en este lugar." + +#: admin/em-docs.php:167 +msgid "Will show a list of all future events at this location." +msgstr "Mostrará una lista de todos los eventos futuros en este lugar." + +#: admin/em-docs.php:168 +msgid "Will show a list of all events at this location." +msgstr "Mostrará una lista de todos los eventos en este lugar." + +#: admin/em-docs.php:174 +msgid "When a specific booking is displayed (on screen and on email), you can use these placeholders to show specific information about the booking. For contact details of the contact of this event, see the events placeholders." +msgstr "Cuando una reserva específica se muestra (en la pantalla y en el correo electrónico), puede usar estos marcadores de posición para mostrar información específica acerca de la reserva. Para obtener más información póngase en contacto con el contacto de este evento, ver los marcadores de posición eventos." + +#: admin/em-docs.php:176 +msgid "Name of person who made the booking." +msgstr "Nombre de la persona que realizó la reserva." + +#: admin/em-docs.php:177 +msgid "Email of person who made the booking." +msgstr "Correo electrónico de la persona que realizó la reserva." + +#: admin/em-docs.php:178 +msgid "Phone number of person who made the booking." +msgstr "Número de teléfono de la persona que realizó la reserva." + +#: admin/em-docs.php:179 +msgid "Number of spaces the person has booked." +msgstr "Número de plazas de la persona que ha reservado." + +#: admin/em-docs.php:180 +msgid "Any specific comments made by the person who made the booking." +msgstr "Comentarios específicos realizados por la persona que realizó la reserva." + +#: admin/em-docs.php:181 +msgid "Name of the ticket booked. Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Nombre del billete reservado. Útil en el modo de billete sencillo, si hay varias entradas reservado un billete al azar se utiliza." + +#: admin/em-docs.php:182 +msgid "Description of the ticket booked. Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Descripción del billete reservado. Útil en el modo de billete sencillo, si hay varias entradas reservado un billete al azar se utiliza." + +#: admin/em-docs.php:183 +msgid "Booked ticket price with currency symbol (e.g. $ 10.00). Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Billete reservado precio con el símbolo de moneda (por ejemplo, $ 10,00). Útil en el modo de billete sencillo, si hay varias entradas reservado un billete al azar se utiliza." + +#: admin/em-docs.php:184 +msgid "A list of booked tickets. You can modify this by using template files and modifying templates/emails/bookingtickets.php" +msgstr "Una lista de los billetes reservados. Puede modificar esta usando archivos de plantilla y la modificación de plantillas / emails / bookingtickets.php" + +#: admin/em-docs.php:188 +msgid "People are able to manage their bookings. Below are some placeholder which automatically provides correctly formatted urls" +msgstr "Las personas son capaces de manejar sus reservas. A continuación se presentan algunos de marcador de posición que proporciona automáticamente las direcciones URL con el formato correcto" + +#: admin/em-docs.php:190 +msgid "URL to page showing that users booked events." +msgstr "URL de la página que muestra que los usuarios reservado eventos." + +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Plugin URI of the plugin/theme +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Author URI of the plugin/theme +msgid "http://wp-events-plugin.com" +msgstr "http://wp-events-plugin.com" + +#. Description of the plugin/theme +msgid "Event registration and booking management for Wordpress. Recurring events, locations, google maps, rss, ical, booking registration and more!" +msgstr "Registro de eventos y gestión de reservas para Wordpress. Acontecimientos que se repiten, los lugares, los mapas de Google, RSS, iCal, registro de la Reserva y mucho más!" + +#. Author of the plugin/theme +msgid "Marcus Sykes" +msgstr "Marcus Sykes" + diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-fr_FR.mo b/wp-content/plugins/events-manager/includes/langs/dbem-fr_FR.mo new file mode 100644 index 0000000..91ca749 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-fr_FR.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-fr_FR.po b/wp-content/plugins/events-manager/includes/langs/dbem-fr_FR.po new file mode 100644 index 0000000..a14327f --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-fr_FR.po @@ -0,0 +1,5906 @@ +#@ dbem +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.171\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-09-20 20:44:48+00:00\n" +"PO-Revision-Date: 2012-01-16 13:58+0100\n" +"Last-Translator: Marcus Sykes \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" + +# @ dbem +#: buddypress/bp-em-activity.php:48 +#, php-format +msgid "%s added the event %s" +msgstr "%s a ajouté l'évènement : %s" + +# @ dbem +#: buddypress/bp-em-activity.php:86 +#, php-format +msgid "%s is attending %s." +msgstr "%s assistera à l'évènement : %s." + +# @ dbem +#: buddypress/bp-em-activity.php:88 +#, php-format +msgid "%s will not be attending %s anymore." +msgstr "%s n'assistera plus à l'évènement : %s." + +# @ dbem +#: buddypress/bp-em-activity.php:94 +#, php-format +msgid "%s is attending %s of the group %s." +msgstr "%s participera à l'évènement % du groupe %s." + +# @ dbem +#: buddypress/bp-em-activity.php:96 +#, php-format +msgid "%s will not be attending %s of group %s anymore." +msgstr "%s ne participera plus à l'évènement %s du groupe %s." + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-options.php:397 +#: admin/em-options.php:435 +#: admin/em-options.php:850 +#: buddypress/bp-em-core.php:12 +#: buddypress/bp-em-core.php:51 +#: buddypress/bp-em-core.php:79 +#: buddypress/bp-em-core.php:147 +#: buddypress/bp-em-core.php:174 +#: buddypress/screens/profile.php:27 +#: em-actions.php:102 +#: em-install.php:336 +#: em-install.php:379 +#: em-install.php:429 +#: em-install.php:430 +#: em-install.php:454 +#: em-install.php:672 +#: em-posts.php:116 +#: em-posts.php:119 +#: em-posts.php:121 +#: em-template-tags.php:179 +#: widgets/em-events.php:13 +msgid "Events" +msgstr "Évènements" + +# @ default +# @ dbem +#: admin/em-options.php:1031 +#: em-functions.php:473 +msgid "Yes" +msgstr "Oui" + +# @ default +# @ dbem +#: admin/em-options.php:1032 +#: em-functions.php:473 +msgid "No" +msgstr "Non" + +# @ dbem +#: buddypress/bp-em-notifications.php:24 +#: buddypress/bp-em-notifications.php:26 +#: buddypress/bp-em-notifications.php:33 +#: buddypress/bp-em-notifications.php:35 +#: buddypress/bp-em-notifications.php:41 +#: buddypress/bp-em-notifications.php:43 +#: em-install.php:525 +#: em-install.php:709 +#: em-install.php:762 +msgid "My Bookings" +msgstr "Mes Réservations" + +# @ dbem +#: buddypress/bp-em-notifications.php:24 +msgid "You have a pending booking" +msgstr "Vous avez une réservation en attente" + +# @ dbem +#: buddypress/bp-em-notifications.php:26 +#, php-format +msgid "You have %s pending bookings" +msgstr "Vous avez %s réservations en attente" + +# @ dbem +#: buddypress/bp-em-notifications.php:33 +msgid "You have a confirmed booking" +msgstr "Vous avez une réservation confirmée" + +# @ dbem +#: buddypress/bp-em-notifications.php:35 +#, php-format +msgid "You have %s confirmed bookings" +msgstr "Vous avez %s réservations confirmées" + +# @ dbem +#: buddypress/bp-em-notifications.php:41 +msgid "A user cancelled a booking" +msgstr "Un utilisateur a annulé une réservation" + +# @ dbem +#: buddypress/bp-em-notifications.php:43 +#, php-format +msgid "%s users cancelled bookings." +msgstr "%s utilisateurs ont annulé leur réservations" + +# @ dbem +#: buddypress/bp-em-core.php:122 +#: buddypress/screens/my-locations.php:32 +msgid "My Locations" +msgstr "Mes Emplacements" + +# @ dbem +#: buddypress/screens/my-locations.php:49 +#: em-events.php:166 +#: em-posts.php:216 +msgid "Edit Location" +msgstr "Éditer un Emplacement" + +# @ dbem +#: buddypress/screens/my-locations.php:47 +#: em-events.php:164 +#: em-posts.php:213 +msgid "Add Location" +msgstr "Ajouter un Emplacement" + +# @ dbem +#: buddypress/screens/group-events.php:20 +#: buddypress/screens/my-group-events.php:20 +msgid "Group Events" +msgstr "Évènements de Groupe" + +# @ dbem +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Vous êtes en train de visualiser votre page publique, voici ce que les autres utilisateurs verront." + +# @ dbem +#: buddypress/bp-em-core.php:110 +#: buddypress/screens/my-events.php:32 +#: templates/buddypress/profile.php:6 +msgid "My Events" +msgstr "Mes Évènements" + +# @ dbem +#: buddypress/screens/my-events.php:50 +#: em-events.php:153 +#: em-posts.php:125 +msgid "Edit Event" +msgstr "Éditer l'Évènement" + +# @ dbem +#: buddypress/screens/my-events.php:53 +#: em-events.php:156 +#: em-posts.php:122 +#: templates/buddypress/profile.php:19 +msgid "Add Event" +msgstr "Ajouter un Évènement" + +# @ dbem +#: buddypress/bp-em-core.php:99 +#: buddypress/screens/attending.php:23 +#: templates/buddypress/profile.php:24 +msgid "Events I'm Attending" +msgstr "Évènements auxquels j'assisterai" + +# @ dbem +#: buddypress/bp-em-core.php:134 +#: buddypress/screens/my-bookings.php:30 +msgid "My Event Bookings" +msgstr "Mes Réservations" + +# @ dbem +#: buddypress/bp-em-core.php:90 +msgid "My Profile" +msgstr "Mon Profil" + +# @ dbem +#: em-posts.php:124 +#: em-posts.php:169 +#: em-posts.php:215 +#: templates/forms/event/bookings.php:86 +msgid "Edit" +msgstr "Éditer" + +# @ dbem +#: admin/bookings/em-events.php:101 +#: admin/bookings/em-pending.php:101 +#: admin/bookings/em-person.php:86 +#: admin/em-ms-options.php:162 +#: admin/em-options.php:293 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:858 +#: admin/em-options.php:920 +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#: admin/em-options.php:1364 +#: classes/em-event-posts-admin.php:163 +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-event.php:655 +#: classes/em-event.php:1159 +#: em-actions.php:102 +#: em-install.php:386 +#: em-install.php:416 +#: em-posts.php:120 +#: templates/forms/event-editor.php:12 +#: templates/templates/my-bookings.php:46 +msgid "Event" +msgstr "Évènement" + +# @ dbem +#: templates/templates/ical.php:12 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Calendrier" + +# @ dbem +#: widgets/em-calendar.php:17 +msgid "Display your events in a calendar widget." +msgstr "Afficher vos évènements dans un widget calendrier." + +# @ dbem +#: widgets/em-calendar.php:18 +msgid "Events Calendar" +msgstr "Calendrier des Évènements" + +# @ dbem +#: widgets/em-calendar.php:60 +#: widgets/em-events.php:97 +#: widgets/em-locations.php:72 +msgid "Title" +msgstr "Titre" + +# @ dbem +#: widgets/em-calendar.php:64 +msgid "Show Long Events?" +msgstr "Évènements Longue Durée ?" + +# @ dbem +#: widgets/em-calendar.php:68 +#: widgets/em-events.php:145 +msgid "Category IDs" +msgstr "Identifiants de Catégories" + +# @ dbem +#: widgets/em-calendar.php:70 +#: widgets/em-events.php:147 +msgid "1,2,3 or 2 (0 = all)" +msgstr "1,2,3 ou 2 (0 = tous)" + +# @ dbem +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Emplacements" + +# @ dbem +#: widgets/em-locations.php:24 +msgid "Display a list of event locations on Events Manager." +msgstr "Afficher une liste d'emplacements sur le gestionnaire d'évènements." + +# @ dbem +#: widgets/em-locations.php:49 +msgid "No locations" +msgstr "Aucun Emplacement" + +# @ dbem +#: widgets/em-locations.php:76 +msgid "Show number of locations" +msgstr "Afficher le nombre d'emplacements" + +# @ dbem +#: widgets/em-locations.php:80 +msgid "Scope of the locations" +msgstr "Périmètre des Emplacements" + +# @ dbem +#: widgets/em-locations.php:103 +msgid "Order of the locations" +msgstr "Tri des emplacements" + +# @ dbem +#: widgets/em-events.php:150 +#: widgets/em-locations.php:110 +msgid "List item format" +msgstr "Format des éléments de la liste" + +# @ dbem +#: widgets/em-events.php:22 +#: widgets/em-events.php:73 +#: widgets/em-events.php:159 +msgid "all events" +msgstr "Tous les Évènements" + +# @ dbem +#: widgets/em-events.php:30 +msgid "Display a list of events on Events Manager." +msgstr "Afficher une liste des Évènements sur Events Manager." + +# @ dbem +#: widgets/em-events.php:70 +msgid "No events" +msgstr "Aucun Évènement" + +# @ dbem +#: widgets/em-events.php:101 +msgid "Number of events" +msgstr "Nombre d'Évènements" + +# @ dbem +#: widgets/em-events.php:106 +msgid "Scope" +msgstr "Périmètre" + +# @ dbem +#: widgets/em-events.php:116 +#: widgets/em-locations.php:90 +msgid "Order By" +msgstr "Trier Par" + +# @ dbem +#: widgets/em-events.php:25 +msgid "start date, start time, event name" +msgstr "date de début, heure de début, nom de l'évènement" + +# @ dbem +#: widgets/em-events.php:26 +msgid "name, start date, start time" +msgstr "nom de l'évènement, date de début, heure de début" + +# @ dbem +#: widgets/em-events.php:27 +msgid "name, end date, end time" +msgstr "nom de l'évènement, date de fin, heure de fin" + +# @ dbem +#: widgets/em-events.php:28 +msgid "end date, end time, event name" +msgstr "date de fin, heure de fin, nom de l'évènement" + +# @ dbem +#: widgets/em-events.php:129 +msgid "Order" +msgstr "Tri" + +# @ dbem +#: admin/em-options.php:476 +#: admin/em-options.php:479 +#: admin/em-options.php:530 +#: admin/em-options.php:627 +#: admin/em-options.php:630 +#: admin/em-options.php:677 +#: admin/em-options.php:680 +#: admin/em-options.php:767 +#: admin/em-options.php:770 +#: widgets/em-events.php:133 +#: widgets/em-locations.php:105 +msgid "Ascending" +msgstr "Ascendant" + +# @ dbem +#: admin/em-options.php:477 +#: admin/em-options.php:480 +#: admin/em-options.php:531 +#: admin/em-options.php:628 +#: admin/em-options.php:631 +#: admin/em-options.php:678 +#: admin/em-options.php:681 +#: admin/em-options.php:768 +#: admin/em-options.php:771 +#: widgets/em-events.php:134 +#: widgets/em-locations.php:106 +msgid "Descending" +msgstr "Descendant" + +# @ dbem +#: widgets/em-events.php:154 +msgid "Show all events link at bottom?" +msgstr "Afficher le lien vers tous les évènements en-dessous ?" + +# @ dbem +#: widgets/em-events.php:158 +msgid "All events link text?" +msgstr "Le texte à afficher sur le lien vers tous les évènements ?" + +# @ dbem +#: admin/bookings/em-events.php:14 +#: em-functions.php:160 +msgid "All events" +msgstr "Tous les Évènements" + +# @ dbem +#: admin/bookings/em-events.php:15 +#: em-functions.php:161 +msgid "Future events" +msgstr "Évènements Futurs" + +# @ dbem +#: admin/bookings/em-events.php:13 +#: em-functions.php:162 +msgid "Past events" +msgstr "Évènements Passés" + +# @ dbem +#: em-functions.php:163 +msgid "Today's events" +msgstr "Évènements pour aujourd'hui" + +# @ dbem +#: em-functions.php:164 +msgid "Tomorrow's events" +msgstr "Évènements pour demain" + +# @ dbem +#: em-functions.php:165 +msgid "Events this month" +msgstr "Évènements pour ce mois-ci" + +# @ dbem +#: em-functions.php:166 +msgid "Events next month" +msgstr "Évènements pour le mois prochain" + +# @ dbem +#: em-functions.php:167 +msgid "Events current and next month" +msgstr "Évènements pour le mois en cours et le mois suivant" + +# @ dbem +#: em-functions.php:168 +msgid "Events within 2 months" +msgstr "Évènements pour les deux prochains mois" + +# @ dbem +#: em-functions.php:169 +msgid "Events within 3 months" +msgstr "Évènements pour les trois prochains mois" + +# @ dbem +#: em-functions.php:170 +msgid "Events within 6 months" +msgstr "Évènements pour les six prochains mois" + +# @ dbem +#: em-functions.php:171 +msgid "Events within 12 months" +msgstr "Évènements pour les douze prochains mois" + +# @ dbem +#: em-functions.php:224 +msgid "Trying to perform an illegal action." +msgstr "Tente d'effectuer une action illégale." + +# @ dbem +#: em-functions.php:296 +msgid "ERROR: Please enter a username." +msgstr "ERREUR : Veuillez entrer un nom d'utilisateur" + +# @ dbem +#: em-functions.php:298 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "ERREUR : Ce nom d'utilisateur utilise des caractères interdits. Veuillez entrer un nom d'utilisateur valide." + +# @ default +#: em-functions.php:301 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "ERREUR : Ce nom d'utilisateur est déjà utilisé, veuillez en choisir un autre ou vous identifier." + +# @ dbem +#: em-actions.php:270 +#: em-functions.php:306 +msgid "ERROR: Please type your e-mail address." +msgstr "ERREUR : Veuillez entrer votre adresse e-mail." + +# @ dbem +#: em-actions.php:273 +#: em-functions.php:308 +msgid "ERROR: The email address isn’t correct." +msgstr "ERREUR : Cette adresse e-mail est incorrecte." + +# @ default +#: em-functions.php:311 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "ERREUR : Cette adresse e-mail est déjà utilisée, veuillez en choisir une autre ou vous identifier." + +# @ dbem +#: em-functions.php:331 +#, php-format +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "ERREUR : Impossible de vous enregistrer ! Veuillez contacter le webmaster !" + +# @ dbem +#: em-functions.php:366 +#, php-format +msgid "New user registration on your blog %s:" +msgstr "Nouvelle inscription sur votre blog %s :" + +# @ dbem +#: em-functions.php:367 +#, php-format +msgid "Username: %s" +msgstr "Nom d'utilisateur : %s" + +# @ dbem +#: em-functions.php:368 +#, php-format +msgid "E-mail: %s" +msgstr "E-mail:%s" + +# @ dbem +#: em-functions.php:369 +#, php-format +msgid "[%s] New User Registration" +msgstr "[%s] Nouvelle inscription" + +# @ dbem +#: em-functions.php:380 +#, php-format +msgid "[%s] Your username and password" +msgstr "[%s] Vos Idenficiant & Mot de Passe" + +# @ dbem +#: classes/em-ticket.php:47 +msgid "Standard Ticket" +msgstr "Billet Standard" + +# @ dbem +#: classes/em-booking.php:134 +#: classes/em-ticket-booking.php:69 +#: classes/em-ticket.php:97 +msgid "Changes saved" +msgstr "Modifications enregistrées" + +# @ dbem +#: classes/em-ticket.php:102 +msgid "Ticket created" +msgstr "Billet créé" + +# @ dbem +#: classes/em-ticket.php:105 +#: classes/em-ticket.php:106 +#: classes/em-ticket.php:111 +#: classes/em-ticket.php:112 +msgid "There was a problem saving the ticket." +msgstr "Un problème s'est produit lors de la sauvegarde du billet." + +# @ dbem +# @ default +#: classes/em-event.php:461 +#: classes/em-ticket-booking.php:113 +#: classes/em-ticket.php:161 +msgid "Missing fields: " +msgstr "Champs manquants :" + +# @ dbem +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "Vous ne pouvez pas supprimer un billet qui fait l'objet d'une réservation." + +# @ dbem +#: classes/em-location.php:106 +msgid "The location address" +msgstr "L'adresse de l'emplacement" + +# @ dbem +#: classes/em-location.php:106 +msgid "The location town" +msgstr "La ville où se trouve l'emplacement" + +# @ dbem +#: classes/em-location.php:106 +msgid "The country" +msgstr "Le pays" + +# @ dbem +#: classes/em-event.php:428 +#: classes/em-location.php:224 +#: classes/em-location.php:239 +#: classes/em-location.php:241 +msgid " is required." +msgstr " est nécessaire." + +# @ dbem +# @ default +#: admin/em-bookings.php:109 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:334 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:942 +#: admin/em-options.php:1382 +#: classes/em-event-posts-admin.php:95 +#: classes/em-event-posts-admin.php:214 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#: classes/em-location.php:618 +#: em-actions.php:180 +#: em-posts.php:211 +#: templates/buddypress/group-events.php:43 +#: templates/buddypress/my-group-events.php:43 +#: templates/forms/location-editor.php:32 +#: templates/tables/events.php:52 +msgid "Location" +msgstr "Emplacement" + +# @ dbem +#: admin/em-ms-options.php:173 +#: admin/em-options.php:654 +#: admin/em-options.php:944 +#: admin/em-options.php:945 +#: classes/em-location-post-admin.php:59 +#: classes/em-location.php:332 +#: classes/em-location.php:342 +#: templates/forms/location-editor.php:6 +msgid "location" +msgstr "emplacement" + +# @ dbem +#: classes/em-location.php:348 +#, php-format +msgid "You do not have permission to create/edit %s." +msgstr "Vous n'avez pas le droit de créer / modifier %s." + +# @ dbem +#: admin/em-ms-options.php:167 +#: admin/em-ms-options.php:172 +#: admin/em-ms-options.php:173 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:581 +#: admin/em-options.php:582 +#: admin/em-options.php:595 +#: admin/em-options.php:599 +#: admin/em-options.php:649 +#: admin/em-options.php:650 +#: admin/em-options.php:693 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: admin/em-options.php:1384 +#: admin/em-options.php:1385 +#: admin/em-options.php:1386 +#: admin/em-options.php:1387 +#: admin/em-options.php:1388 +#: admin/em-options.php:1389 +#: classes/em-location.php:348 +#: events-manager.php:309 +#: events-manager.php:310 +#: events-manager.php:311 +#: events-manager.php:312 +#: events-manager.php:313 +#: events-manager.php:314 +#: events-manager.php:315 +msgid "locations" +msgstr "emplacements" + +# @ dbem +#: em-actions.php:104 +#, php-format +msgid "%s successfully deleted." +msgstr "%s supprimé avec succès." + +# @ dbem +#: em-actions.php:107 +#, php-format +msgid "%s could not be deleted." +msgstr "%s n'a pas pu être supprimé." + +# @ dbem +#: classes/em-booking.php:143 +#: classes/em-booking.php:144 +#: classes/em-booking.php:152 +#: classes/em-booking.php:163 +#: classes/em-booking.php:169 +#: classes/em-tickets-bookings.php:69 +#: classes/em-tickets-bookings.php:70 +msgid "There was a problem saving the booking." +msgstr "Un problème s'est produit lors de la sauvegarde de la réservation." + +# @ dbem +#: classes/em-tickets-bookings.php:99 +#: em-install.php:489 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "La réservation ne peut être faite, plus de places disponibles !" + +# @ dbem +#: classes/em-tickets-bookings.php:163 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +#, php-format +msgid "You do not have the rights to manage this %s." +msgstr "Vous n'avez pas le droit de gérer ce %s." + +# @ dbem +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#: classes/em-booking.php:414 +#: classes/em-booking.php:416 +#: classes/em-bookings.php:108 +#: classes/em-tickets-bookings.php:163 +msgid "Booking" +msgstr "Réservation" + +# @ dbem +#: admin/em-bookings.php:154 +#: admin/em-bookings.php:215 +#: admin/em-options.php:616 +#: admin/em-options.php:666 +#: admin/em-options.php:756 +#: classes/em-person.php:76 +#: templates/buddypress/group-events.php:41 +#: templates/buddypress/my-group-events.php:41 +#: templates/forms/bookingform/booking-fields.php:10 +#: templates/forms/tickets-form.php:4 +#: templates/tables/events.php:50 +#: templates/tables/locations.php:34 +#: templates/tables/locations.php:43 +#: templates/templates/bookings-event-printable.php:24 +msgid "Name" +msgstr "Nom" + +# @ dbem +#: classes/em-person.php:77 +msgid "Email" +msgstr "E-mail" + +# @ dbem +#: classes/em-people.php:28 +#: classes/em-person.php:78 +#: templates/forms/bookingform/booking-fields.php:14 +msgid "Phone" +msgstr "Téléphone" + +# @ dbem +#: classes/em-ticket-booking.php:78 +msgid "Ticket booking created" +msgstr "Réservation de billets effectuée" + +# @ dbem +#: classes/em-ticket-booking.php:85 +#: classes/em-ticket-booking.php:86 +#: classes/em-ticket-booking.php:91 +#: classes/em-ticket-booking.php:92 +msgid "There was a problem saving the ticket booking." +msgstr "Un problème s'est produit lors de la sauvegarde de la réservation de billets." + +# @ dbem +#: admin/em-options.php:744 +#: admin/em-options.php:973 +#: admin/em-options.php:974 +msgid "category" +msgstr "catégorie" + +# @ dbem +#: classes/em-bookings.php:108 +#, php-format +msgid "%s created." +msgstr "%s créé." + +# @ dbem +#: classes/em-bookings.php:256 +#: classes/em-bookings.php:262 +#, php-format +msgid "Bookings %s. Mails Sent." +msgstr "Réservations %s. E-mails envoyés." + +# @ dbem +#: classes/em-bookings.php:266 +msgid "An error occurred." +msgstr "Une erreur s'est produite." + +# @ dbem +#: admin/bookings/em-events.php:136 +#: classes/em-booking.php:100 +#: classes/em-event-posts-admin.php:139 +#: classes/em-event.php:244 +#: templates/buddypress/group-events.php:94 +#: templates/buddypress/my-group-events.php:88 +#: templates/tables/events.php:17 +#: templates/tables/events.php:97 +msgid "Pending" +msgstr "En attente" + +# @ dbem +#: classes/em-booking.php:101 +#: classes/em-event.php:245 +msgid "Approved" +msgstr "Approuvée(s)" + +# @ dbem +#: classes/em-booking.php:102 +msgid "Rejected" +msgstr "Rejetée" + +# @ dbem +#: classes/em-booking.php:103 +#: em-actions.php:358 +msgid "Cancelled" +msgstr "Annulé" + +# @ dbem +#: classes/em-booking.php:104 +msgid "Awaiting Online Payment" +msgstr "En attente du paiement en ligne" + +# @ dbem +#: classes/em-booking.php:105 +msgid "Awaiting Payment" +msgstr "Paiement En Attente" + +# @ dbem +#: classes/em-booking.php:139 +msgid "Your booking has been recorded" +msgstr "Votre réservation a été enregistrée" + +# @ dbem +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#, php-format +msgid "You cannot manage this %s." +msgstr "Vous ne pouvez pas gérer ce %s." + +# @ dbem +#: classes/em-booking.php:222 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Vous essayez de réserver un billet inexistant pour cet évènement." + +# @ dbem +#: classes/em-booking.php:414 +#, php-format +msgid "%s deleted" +msgstr "%s supprimé" + +# @ dbem +#: classes/em-booking.php:416 +#, php-format +msgid "%s could not be deleted" +msgstr "%s n'a pu être supprimé" + +# @ dbem +#: classes/em-booking.php:462 +msgid "Not approved, spaces full." +msgstr "Refusé, plus de places." + +# @ dbem +#: classes/em-booking.php:470 +#, php-format +msgid "Booking %s." +msgstr "Réservation %s." + +# @ dbem +#: classes/em-booking.php:473 +msgid "Mail Sent." +msgstr "E-mail envoyé." + +# @ dbem +#: classes/em-booking.php:476 +#: classes/em-booking.php:477 +msgid "ERROR : Mail Not Sent." +msgstr "ERREUR : E-mail Non Envoyé." + +# @ dbem +#: classes/em-booking.php:483 +#: classes/em-booking.php:484 +#, php-format +msgid "Booking could not be %s." +msgstr "La réservation ne peut être %s." + +# @ dbem +#: classes/em-booking.php:499 +msgid "Booking note successfully added." +msgstr "Note de réservation ajoutée avec succès." + +# @ dbem +#: classes/em-booking.php:636 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "L'e-mail de confirmation n'a pu être envoyé au point de contact de l'évènement. Le postulant devrait avoir reçu son e-mail (seul l'admin voit ce message)." + +# @ dbem +#: classes/em-booking.php:643 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "L'e-mail de confirmation n'a pu être envoyé à l'admin. Le postulant devrait avoir reçu son e-mail (seul l'admin voit ce message)." + +# @ dbem +#: admin/em-options.php:971 +#: templates/buddypress/group-events.php:112 +#: templates/buddypress/my-group-events.php:106 +msgid "Category" +msgstr "Catégorie" + +# @ dbem +#: admin/em-options.php:708 +#: admin/em-options.php:712 +#: admin/em-options.php:721 +#: admin/em-options.php:783 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: events-manager.php:318 +#: events-manager.php:319 +msgid "categories" +msgstr "catégories" + +# @ dbem +#: classes/em-tickets.php:98 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "Vous ne pouvez pas supprimer des billets si des réservations ont été effectuées dessus. Veuillez au préalable supprimer ces réservations." + +# @ dbem +#: classes/em-tickets.php:124 +msgid "Standard" +msgstr "Standard" + +# @ dbem +#: classes/em-people.php:19 +msgid "User deleted by administrators" +msgstr "Compte utilisateur supprimé par les administrateurs" + +# @ dbem +#: classes/em-event-post-admin.php:37 +msgid "WARNING: This is a recurring event." +msgstr "ATTENTION : il s'agit d'un évènement périodique." + +# @ dbem +#: classes/em-event-post-admin.php:38 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Toute modification apportée à cet évènement impliquera la suppression de toutes ses occurrences puis leur re-création, si bien que les réservations précédentes seront supprimées ! Vous pouvez modifier les occurrences individuellement, en les dissociant de cet évènement périodique." + +# @ dbem +#: classes/em-event-post-admin.php:41 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "ATTENTION : il s'agit d'une occurrence dans un groupe d'évènements périodiques." + +# @ dbem +#: classes/em-event-post-admin.php:48 +#, php-format +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "ATTENTION : Ceci est un évènement appartenant au groupe \"%s\". Les autres admins du groupe peuvent également modifier cet évènement." + +# @ dbem +#: classes/em-event.php:617 +msgid "Something went wrong with the recurrence update..." +msgstr "Quelque chose s'est mal passé lors de la mise à jour..." + +# @ dbem +#: classes/em-event.php:617 +msgid "There was a problem saving the recurring events." +msgstr "Un problème s'est produit lors de la sauvegarde des évènements périodiques." + +# @ dbem +#: classes/em-event.php:655 +#, php-format +msgid "%s successfully duplicated." +msgstr "%s dupliquée." + +# @ dbem +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:506 +#: admin/em-options.php:1395 +#: admin/em-options.php:1396 +#: classes/em-event-post-admin.php:85 +#: classes/em-event.php:582 +#: classes/em-event.php:594 +msgid "event" +msgstr "évènement" + +# @ dbem +#: classes/em-event.php:442 +msgid "Events cannot start after they end." +msgstr "Un évènement ne peut pas commencer après sa fin !" + +# @ dbem +#: classes/em-event.php:447 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Les dates doivent être au format correct, veuillez utiliser le sélecteur de dates." + +# @ dbem +#: classes/em-event.php:1255 +#: templates/forms/bookingform/ticket-single.php:21 +#: templates/forms/bookingform/tickets-list.php:28 +msgid "N/A" +msgstr "N/A" + +# @ dbem +#: classes/em-event.php:1265 +msgid "Profile" +msgstr "Profil" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Sunday" +msgstr "Dimanche" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Monday" +msgstr "Lundi" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Tuesday" +msgstr "Mardi" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Wednesday" +msgstr "Mercredi" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Thursday" +msgstr "Jeudi" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Friday" +msgstr "Vendredi" + +# @ dbem +#: classes/em-event.php:1702 +msgid "Saturday" +msgstr "Samedi" + +# @ dbem +#: classes/em-event.php:1703 +#, php-format +msgid "the first %s of the month" +msgstr "le premier %s du mois" + +# @ dbem +#: classes/em-event.php:1703 +#, php-format +msgid "the second %s of the month" +msgstr "le second % du mois" + +# @ dbem +#: classes/em-event.php:1703 +#, php-format +msgid "the third %s of the month" +msgstr "le troisième %s du mois" + +# @ dbem +#: classes/em-event.php:1703 +#, php-format +msgid "the fourth %s of the month" +msgstr "le quatrième %s du mois" + +# @ dbem +#: classes/em-event.php:1703 +#, php-format +msgid "the last %s of the month" +msgstr "le dernier %s du mois" + +# @ dbem +#: classes/em-event.php:1704 +#, php-format +msgid "From %1$s to %2$s" +msgstr "De %1$s à %2$s" + +# @ dbem +#: classes/em-event.php:1706 +msgid "everyday" +msgstr "chaque jour" + +# @ dbem +#: classes/em-event.php:1708 +#, php-format +msgid "every %s days" +msgstr "tous les %s jours" + +# @ dbem +#: classes/em-event.php:1717 +msgid "every week" +msgstr "chaque semaine" + +# @ dbem +#: classes/em-event.php:1719 +#, php-format +msgid "every %s weeks" +msgstr "toutes les % semaines" + +# @ dbem +#: classes/em-event.php:1730 +#, php-format +msgid "every %s months" +msgstr "tous les %s mois" + +# @ dbem +#: classes/em-object.php:872 +msgid "The image file is too big! Maximum size:" +msgstr "Le fichier image est trop grand ! Taille maximale :" + +# @ dbem +#: classes/em-object.php:877 +msgid "The image is too big! Maximum size allowed:" +msgstr "L'image est trop grande ! Taille maximale :" + +# @ dbem +#: classes/em-object.php:880 +msgid "The image is in a wrong format!" +msgstr "L'image est dans un mauvais format !" + +# @ dbem +#: classes/em-mailer.php:84 +msgid "Please supply a valid email format." +msgstr "Veuillez fournir une adresse e-mail dans un format valide." + +# @ dbem +#: admin/em-options.php:1201 +msgid "Booking cancelled" +msgstr "Réservation annulée" + +# @ dbem +#: em-actions.php:370 +msgid "You must log in to cancel your booking." +msgstr "Vous devez vous identifier pour annuler votre réservation." + +# @ dbem +#: admin/em-bookings.php:251 +#: templates/forms/bookingform/tickets-list.php:8 +msgid "Ticket Type" +msgstr "type de Billet" + +# @ dbem +#: admin/em-bookings.php:156 +#: admin/em-bookings.php:253 +#: templates/forms/bookingform/ticket-single.php:9 +#: templates/forms/bookingform/tickets-list.php:10 +#: templates/forms/event/bookings.php:30 +#: templates/forms/ticket-form.php:9 +#: templates/forms/tickets-form.php:6 +msgid "Price" +msgstr "Prix" + +# @ dbem +#: admin/bookings/em-cancelled.php:87 +#: admin/bookings/em-confirmed.php:88 +#: admin/bookings/em-pending.php:105 +#: admin/bookings/em-person.php:87 +#: admin/bookings/em-rejected.php:87 +#: admin/em-bookings.php:157 +#: admin/em-bookings.php:252 +#: templates/forms/bookingform/ticket-single.php:15 +#: templates/forms/bookingform/tickets-list.php:12 +#: templates/forms/ticket-form.php:11 +#: templates/templates/bookings-event-printable.php:27 +#: templates/templates/my-bookings.php:48 +msgid "Spaces" +msgstr "Places" + +# @ dbem +#: admin/em-bookings.php:311 +#: templates/forms/bookingform/booking-fields.php:24 +#: templates/templates/bookings-event-printable.php:28 +msgid "Comment" +msgstr "Commentaire" + +# @ dbem +#: templates/placeholders/bookingform.php:54 +msgid "Send your booking" +msgstr "Envoyer votre demande de réservation" + +# @ dbem +#: templates/placeholders/bookingform.php:71 +msgid "No more tickets available at this time." +msgstr "Plus de billets disponible pour le moment." + +# @ dbem +#: templates/forms/ticket-form.php:12 +msgid "If blank, there's no space limit." +msgstr "Si vide, pas de limite de places." + +# @ dbem +#: templates/forms/ticket-form.php:15 +msgid "Available from" +msgstr "Disponible auprès de" + +# @ dbem +#: templates/forms/event/recurring-when.php:56 +#: templates/forms/event/recurring-when.php:63 +#: templates/forms/event/when-with-recurring.php:17 +#: templates/forms/event/when-with-recurring.php:18 +#: templates/forms/event/when-with-recurring.php:26 +#: templates/forms/event/when.php:11 +#: templates/forms/event/when.php:18 +#: templates/forms/ticket-form.php:18 +msgid "to" +msgstr "à" + +# @ dbem +#: templates/forms/ticket-form.php:21 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Ajouter une date de début ou fin (ou les deux) pour imposer des contraintes de temps sur la disponibilité des billets. Laissez ce champ vide si vous ne souhaitez pas de limite supérieure / inférieure." + +# @ dbem +#: templates/forms/ticket-form.php:24 +msgid "Bookings must order between" +msgstr "Les réservations doivent être effectuées entre" + +# @ dbem +#: templates/forms/ticket-form.php:26 +#: templates/templates/events-search.php:38 +msgid "and" +msgstr "et" + +# @ dbem +#: templates/forms/ticket-form.php:28 +msgid "spaces." +msgstr "places." + +# @ dbem +#: templates/forms/ticket-form.php:29 +msgid "Leave either blank for no upper/lower limit." +msgstr "Laissez l'un de ces champs vide pour ne pas préciser de limite supérieure / inférieure." + +# @ dbem +#: admin/em-bookings.php:155 +#: templates/forms/ticket-form.php:32 +#: templates/forms/tickets-form.php:5 +msgid "Description" +msgstr "Description" + +# @ dbem +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:137 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +msgid "Unauthorized Access" +msgstr "Accès Non Autorisé" + +# @ dbem +#: admin/em-ms-locations.php:39 +msgid "Add location" +msgstr "Ajouter un emplacement" + +# @ dbem +#: admin/em-ms-locations.php:42 +msgid "Edit location" +msgstr "Éditer l'emplacement" + +# @ dbem +#: templates/forms/location-editor.php:12 +msgid "required" +msgstr "requis" + +# @ dbem +#: templates/forms/location-editor.php:23 +msgid "Location Name" +msgstr "Emplacement" + +# @ dbem +#: templates/forms/location-editor.php:28 +msgid "The name of the location" +msgstr "Le nom de l'emplacement" + +# @ dbem +#: templates/forms/location/where.php:4 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Si vous utilisez la carte Google Maps, plus vous fournirez de détails, et plus Google Maps sera performant dans la détermination de votre emplacement. Si votre adresse n'est pas trouvée, essayez sur maps.google.com en ajoutant tous les champs ci-dessous séparés par des virgules." + +# @ dbem +#: templates/forms/event/location.php:69 +#: templates/forms/location/where.php:8 +msgid "Address:" +msgstr "Adresse :" + +# @ dbem +#: templates/forms/event/location.php:75 +#: templates/forms/location/where.php:14 +msgid "City/Town:" +msgstr "Ville :" + +# @ dbem +#: templates/forms/event/location.php:82 +#: templates/forms/location/where.php:20 +msgid "State/County:" +msgstr "Etat / Région :" + +# @ dbem +#: templates/forms/event/location.php:89 +#: templates/forms/location/where.php:26 +msgid "Postcode:" +msgstr "Code Postal :" + +# @ dbem +#: templates/forms/event/location.php:102 +#: templates/forms/location/where.php:39 +msgid "Country:" +msgstr "Pays :" + +# @ dbem +#: templates/forms/event/location.php:105 +#: templates/forms/location/where.php:42 +msgid "none selected" +msgstr "aucune sélection" + +# @ dbem +#: templates/forms/event/location.php:122 +#: templates/forms/location/where.php:52 +msgid "Location not found" +msgstr "Emplacement non trouvé" + +# @ dbem +#: templates/forms/event-editor.php:99 +#: templates/forms/location-editor.php:39 +msgid "Details" +msgstr "Détails" + +# @ dbem +#: templates/forms/location-editor.php:57 +msgid "No image uploaded for this location yet" +msgstr "Aucune image n'a encore été téléchargée pour cet emplacement" + +# @ dbem +#: templates/forms/event-editor.php:172 +#: templates/forms/location-editor.php:60 +msgid "Upload/change picture" +msgstr "Télécharger une image" + +# @ dbem +#: templates/forms/event-editor.php:174 +#: templates/forms/location-editor.php:62 +msgid "Delete Image?" +msgstr "Effacer l'image ?" + +# @ dbem +#: templates/forms/location-editor.php:71 +msgid "Update location" +msgstr "Mettre à jour" + +# @ dbem +#: admin/bookings/em-cancelled.php:85 +#: admin/bookings/em-confirmed.php:86 +#: admin/bookings/em-pending.php:103 +#: admin/bookings/em-rejected.php:85 +#: templates/forms/bookingform/booking-fields.php:18 +#: templates/templates/bookings-event-printable.php:25 +msgid "E-mail" +msgstr "E-mail" + +# @ dbem +#: templates/forms/bookingform/login.php:3 +msgid "Log in if you already have an account with us." +msgstr "Connectez-vous si vous avez déjà un compte chez nous." + +# @ dbem +#: templates/forms/bookingform/login.php:5 +msgid "Username" +msgstr "Nom d'Utilisateur :" + +# @ dbem +#: templates/forms/bookingform/login.php:9 +msgid "Password" +msgstr "Mot de passe" + +# @ dbem +#: templates/forms/bookingform/login.php:13 +msgid "Log In" +msgstr "S'Identifier" + +# @ dbem +#: templates/forms/bookingform/login.php:14 +msgid "Remember Me" +msgstr "Se Souvenir De Moi" + +# @ dbem +#: templates/forms/bookingform/login.php:29 +msgid "Sign Up" +msgstr "Inscrivez Vous" + +# @ dbem +#: templates/forms/bookingform/login.php:33 +msgid "Password Lost and Found" +msgstr "Mot de Passe Oublié" + +# @ dbem +#: templates/forms/bookingform/login.php:33 +msgid "Lost your password?" +msgstr "Mot de Passe Oublié ?" + +# @ dbem +#: admin/em-bookings.php:100 +#: templates/forms/event-editor.php:30 +msgid "Event Name" +msgstr "Nom de l’Évènement" + +# @ dbem +#: templates/forms/event-editor.php:34 +msgid "The event name. Example: Birthday party" +msgstr "Le nom de l'évènement. Exemple: Fête d'anniversaire" + +# @ dbem +#: templates/forms/event/group.php:23 +#: templates/forms/event-editor.php:60 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Sélectionnez un groupe que vous administrez pour y fixer cet évènement. Notez que tous les autres administrateurs de ce groupe peuvent modifier la réservation, et vous ne serez pas en mesure de détacher l'évènement sans le supprimer." + +# @ dbem +#: classes/em-event-post-admin.php:177 +#: templates/forms/event-editor.php:66 +msgid "When" +msgstr "Quand" + +# @ dbem +#: templates/forms/event/when.php:23 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Cet évènement est récurrent depuis le premier jour et jusqu'au dernier, les horaires s'appliquent chaque jour." + +# @ dbem +#: templates/forms/event/recurring-when.php:72 +#: templates/forms/event/when-with-recurring.php:78 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Pour un évènement périodique, une occurrence sera créée à chaque date dans la plage de périodicité définie." + +# @ dbem +#: templates/forms/event/recurring-when.php:10 +#: templates/forms/event/when-with-recurring.php:32 +msgid "This event repeats" +msgstr "Cet évènement se répète" + +# @ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Daily" +msgstr "Quotidiennement" + +# @ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Weekly" +msgstr "Hebdomadairement" + +# @ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Monthly" +msgstr "Mensuellement" + +# @ dbem +#: templates/forms/event/recurring-when.php:17 +#: templates/forms/event/when-with-recurring.php:39 +msgid "every" +msgstr "chaque" + +# @ dbem +#: templates/forms/event/recurring-when.php:20 +#: templates/forms/event/when-with-recurring.php:42 +msgid "day" +msgstr "jour" + +# @ dbem +#: templates/forms/event/recurring-when.php:22 +#: templates/forms/event/when-with-recurring.php:44 +msgid "days" +msgstr "jours" + +# @ dbem +#: templates/forms/event/recurring-when.php:24 +#: templates/forms/event/when-with-recurring.php:46 +msgid "week on" +msgstr "semaine le" + +# @ dbem +#: templates/forms/event/recurring-when.php:26 +#: templates/forms/event/when-with-recurring.php:48 +msgid "weeks on" +msgstr "semaines le" + +# @ dbem +#: templates/forms/event/recurring-when.php:28 +#: templates/forms/event/when-with-recurring.php:50 +msgid "month on the" +msgstr "mois le" + +# @ dbem +#: templates/forms/event/recurring-when.php:30 +#: templates/forms/event/when-with-recurring.php:52 +msgid "months on the" +msgstr "mois le" + +# @ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "first" +msgstr "premier" + +# @ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "second" +msgstr "second" + +# @ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "third" +msgstr "troisième" + +# @ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "fourth" +msgstr "quatrième" + +# @ dbem +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "last" +msgstr "dernier" + +# @ dbem +#: templates/forms/event/recurring-when.php:48 +#: templates/forms/event/when-with-recurring.php:71 +msgid "of each month" +msgstr "de chaque mois" + +# @ dbem +#: classes/em-event-post-admin.php:179 +#: classes/em-event-post-admin.php:354 +#: classes/em-location-post-admin.php:109 +#: templates/forms/event-editor.php:93 +msgid "Where" +msgstr "Où" + +# @ dbem +#: templates/forms/event/location.php:28 +msgid "Location:" +msgstr "Emplacement :" + +# @ dbem +#: templates/forms/event/location.php:60 +msgid "Name:" +msgstr "Nom :" + +# @ dbem +#: templates/forms/event/location.php:64 +msgid "Create a location or start typing to search a previously created location." +msgstr "Commencez à saisir le nom pour rechercher un emplacement déjà créé." + +# @ dbem +#: templates/forms/event/location.php:65 +msgid "You cannot edit saved locations here." +msgstr "Vous ne pouvez pas modifier ici les emplacements enregistrés." + +# @ dbem +#: templates/forms/event/location.php:65 +msgid "Reset this form to create a location." +msgstr "Remettez à zéro ce formulaire pour créer un emplacement." + +# @ dbem +#: templates/forms/event/location.php:95 +#: templates/forms/location/where.php:32 +msgid "Region:" +msgstr "Région :" + +# @ dbem +#: templates/forms/event/location.php:110 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Remplir ceci en premier vous permettra de trouver rapidement les régions et les états déjà remplis pour le pays." + +# @ dbem +#: templates/forms/event-editor.php:107 +msgid "Details about the event." +msgstr "Détails à propos de l'évènement." + +# @ dbem +#: templates/forms/event-editor.php:107 +#: templates/forms/location-editor.php:47 +msgid "HTML Allowed." +msgstr "HTML Autorisé." + +# @ dbem +#: templates/forms/event-editor.php:116 +msgid "Category:" +msgstr "Catégorie :" + +# @ dbem +#: templates/forms/event-editor.php:190 +msgid "Submit Event" +msgstr "Soumettre" + +# @ dbem +#: classes/em-event-post-admin.php:183 +#: classes/em-event-post-admin.php:356 +#: templates/forms/event-editor.php:180 +msgid "Bookings/Registration" +msgstr "Réservations / Inscription" + +# @ dbem +#: templates/forms/event/bookings.php:8 +msgid "Enable registration for this event" +msgstr "Permettre les réservations sur cet évènement" + +# @ dbem +#: templates/forms/event/booking-stats.php:21 +msgid "manage bookings" +msgstr "gérer les réservations" + +# @ dbem +#: templates/forms/event/booking-stats.php:22 +msgid "printable view" +msgstr "Vue imprimable" + +# @ dbem +#: admin/em-bookings.php:98 +#: templates/forms/event/booking-stats.php:23 +msgid "export csv" +msgstr "Export CSV" + +# @ dbem +#: templates/forms/event/bookings.php:23 +msgid "Tickets" +msgstr "Billets" + +# @ dbem +#: templates/forms/event/bookings.php:29 +msgid "Ticket Name" +msgstr "Nom du Billet" + +# @ dbem +#: templates/forms/event/bookings.php:31 +msgid "Min/Max" +msgstr "Min / Max" + +# @ dbem +#: templates/forms/event/bookings.php:32 +msgid "Start/End" +msgstr "Début / Fin" + +# @ dbem +#: templates/forms/event/bookings.php:33 +msgid "Avail. Spaces" +msgstr "Places Disponibles" + +# @ dbem +#: admin/bookings/em-events.php:134 +#: templates/forms/event/bookings.php:34 +msgid "Booked Spaces" +msgstr "Places Réservées" + +# @ dbem +#: templates/forms/event/bookings.php:41 +msgid "Add new ticket" +msgstr "Ajouter un nouveau billet" + +# @ dbem +#: templates/forms/event/bookings.php:56 +msgid "Free" +msgstr "Libre" + +# @ dbem +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-rejected.php:113 +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:100 +#: templates/buddypress/group-events.php:134 +#: templates/buddypress/my-group-events.php:94 +#: templates/buddypress/my-group-events.php:128 +#: templates/forms/event/bookings.php:88 +#: templates/tables/events.php:103 +#: templates/tables/events.php:134 +msgid "Delete" +msgstr "Effacer" + +# @ dbem +#: templates/forms/event/bookings.php:90 +msgid "View Bookings" +msgstr "Afficher les Réservations" + +# @ dbem +#: events-manager.php:255 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Êtes-vous sûr que vous voulez reprogrammer cet évènement périodique ? Dans l'affirmative, toutes les réservations seront effacées, ainsi que les occurrences passées." + +# @ dbem +#: events-manager.php:256 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Êtes-vous sûr que vous voulez désactiver les réservations ? Dans l'affirmative, toutes les réservations déjà effectuées seront effacées. Si vous souhaitez interdire toute nouvelle réservation, réduisez plutôt le nombre de places disponibles au nombre de réservations déjà effectuées." + +# @ dbem +#: templates/forms/tickets-form.php:2 +msgid "Create a ticket" +msgstr "Créer un billet" + +# @ dbem +#: templates/forms/tickets-form.php:8 +msgid "Available ticket spaces" +msgstr "Places disponibles" + +# @ dbem +#: templates/forms/tickets-form.php:10 +msgid "Start date of ticket availability" +msgstr "Date de début de la disponibilité des billets" + +# @ dbem +#: templates/forms/tickets-form.php:11 +msgid "End date of ticket availability" +msgstr "Date de clôture de la disponibilité des billets" + +# @ dbem +#: templates/forms/tickets-form.php:12 +msgid "Minimum tickets required per booking" +msgstr "Nombre de billets minimum requis par réservation" + +# @ dbem +#: templates/forms/tickets-form.php:13 +msgid "Maximum tickets required per booking" +msgstr "Nombre de billets maximum requis par réservation" + +# @ dbem +#: templates/forms/tickets-form.php:19 +msgid "Add Ticket" +msgstr "Ajouter un Billet" + +# @ dbem +#: admin/em-ms-locations.php:29 +#: buddypress/screens/my-events.php:33 +#: buddypress/screens/my-locations.php:33 +msgid "Add New" +msgstr "Ajouter" + +# @ dbem +#: em-events.php:129 +#: templates/tables/locations.php:8 +#, php-format +msgid "My %s" +msgstr "Mes %s" + +# @ dbem +#: admin/em-admin.php:45 +#: admin/em-ms-locations.php:28 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:399 +#: admin/em-options.php:594 +#: admin/em-options.php:595 +#: admin/em-options.php:935 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: classes/em-location-posts-admin.php:31 +#: em-actions.php:180 +#: em-install.php:386 +#: em-install.php:387 +#: em-install.php:685 +#: em-install.php:732 +#: em-posts.php:207 +#: em-posts.php:210 +#: em-posts.php:212 +#: templates/tables/locations.php:8 +#: templates/tables/locations.php:11 +msgid "Locations" +msgstr "Emplacements" + +# @ dbem +#: templates/tables/locations.php:11 +#, php-format +msgid "All %s" +msgstr "Tous les %s" + +# @ dbem +# @ default +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:57 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-rejected.php:49 +#: templates/tables/locations.php:18 +msgid "Bulk Actions" +msgstr "Actions Groupées" + +# @ dbem +#: admin/bookings/em-events.php:58 +#: templates/tables/locations.php:19 +msgid "Delete selected" +msgstr "Effacer la sélection" + +# @ default +#: admin/bookings/em-events.php:60 +#: templates/tables/locations.php:21 +msgid "Apply" +msgstr "Appliquer" + +# @ dbem +#: classes/em-location-posts-admin.php:40 +#: templates/tables/locations.php:35 +#: templates/tables/locations.php:44 +msgid "Address" +msgstr "Adresse" + +# @ dbem +#: classes/em-location-posts-admin.php:42 +#: templates/tables/locations.php:36 +#: templates/tables/locations.php:45 +msgid "State" +msgstr "État" + +# @ dbem +#: admin/em-options.php:614 +#: admin/em-options.php:664 +#: admin/em-options.php:754 +#: classes/em-location-posts-admin.php:43 +#: templates/tables/locations.php:37 +#: templates/tables/locations.php:46 +msgid "Country" +msgstr "Pays" + +# @ dbem +#: admin/bookings/em-events.php:102 +#: templates/buddypress/group-events.php:44 +#: templates/buddypress/my-group-events.php:44 +#: templates/tables/events.php:53 +msgid "Date and time" +msgstr "Date et heure" + +# @ dbem +#: em-install.php:532 +#: templates/buddypress/group-events.php:29 +#: templates/buddypress/my-group-events.php:29 +#: templates/buddypress/profile.php:19 +msgid "No Events" +msgstr "Aucun Évènement" + +# @ dbem +#: templates/buddypress/profile.php:37 +msgid "Not attending any events yet." +msgstr "Ne participe à aucun évènement." + +# @ dbem +#: templates/tables/events.php:15 +msgid "Upcoming" +msgstr "A venir" + +# @ dbem +#: admin/bookings/em-events.php:29 +#: templates/tables/events.php:19 +msgid "Past Events" +msgstr "Évènements Passés" + +# @ dbem +#: em-posts.php:129 +#: templates/tables/events.php:22 +#: templates/tables/events.php:24 +msgid "Search Events" +msgstr "Rechercher..." + +# @ dbem +#: admin/bookings/em-events.php:91 +msgid "no events" +msgstr "Aucun évènement" + +# @ dbem +#: admin/em-admin.php:38 +#: classes/em-event-posts-admin.php:136 +#: em-events.php:129 +#: templates/buddypress/group-events.php:91 +#: templates/buddypress/my-group-events.php:85 +#: templates/tables/events.php:94 +msgid "Bookings" +msgstr "Réservations" + +# @ dbem +#: classes/em-event-posts-admin.php:137 +#: templates/buddypress/group-events.php:92 +#: templates/buddypress/my-group-events.php:86 +#: templates/tables/events.php:95 +#: templates/templates/bookings-event-printable.php:42 +msgid "Booked" +msgstr "Confirmée(s)" + +# @ dbem +#: templates/buddypress/group-events.php:105 +#: templates/buddypress/my-group-events.php:99 +#: templates/tables/events.php:108 +msgid "Duplicate this event" +msgstr "Dupliquer cet évènement" + +# @ dbem +#: classes/em-event-posts-admin.php:144 +#: templates/buddypress/group-events.php:128 +#: templates/buddypress/my-group-events.php:122 +#: templates/tables/events.php:128 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "ATTENTION! Vous allez supprimer TOUTES les occurrences de cet évènement, y compris l'historique de réservations associé a chacune d'elles. Pour conserver les informations de réservation d'un évènement, rendez-vous à l'évènement concerné et détachez-le de cette série." + +# @ dbem +#: templates/templates/bookings-event-printable.php:21 +msgid "Bookings data" +msgstr "Données de la réservation" + +# @ dbem +#: admin/bookings/em-cancelled.php:86 +#: admin/bookings/em-confirmed.php:87 +#: admin/bookings/em-pending.php:104 +#: admin/bookings/em-rejected.php:86 +#: templates/templates/bookings-event-printable.php:26 +msgid "Phone number" +msgstr "Numéro de téléphone" + +# @ dbem +#: templates/templates/bookings-event-printable.php:47 +msgid "Available" +msgstr "Disponible" + +# @ dbem +#: templates/placeholders/locationmap.php:15 +#: templates/templates/map-global.php:15 +msgid "Loading Map...." +msgstr "Chargement de la Carte ...." + +# @ dbem +#: templates/templates/csv-event-bookings.php:16 +#, php-format +msgid "Booking details for \"%s\" as of %s" +msgstr "Détails de la réservation pour \"%s\" en tant que %s" + +# @ dbem +#: admin/em-bookings.php:103 +#: templates/templates/my-bookings.php:47 +msgid "Date" +msgstr "Date" + +# @ dbem +#: admin/bookings/em-person.php:88 +#: admin/em-bookings.php:246 +#: templates/templates/my-bookings.php:49 +msgid "Status" +msgstr "Statut" + +# @ dbem +#: templates/templates/my-bookings.php:75 +msgid "Are you sure you want to cancel your booking?" +msgstr "Êtes-vous sûr de vouloir annuler votre réservation ?" + +# @ dbem +#: admin/em-options.php:130 +#: admin/em-options.php:147 +#: templates/templates/my-bookings.php:75 +msgid "Cancel" +msgstr "Annuler" + +# @ dbem +#: templates/templates/my-bookings.php:91 +msgid "You do not have any bookings." +msgstr "Vous n'avez actuellement aucune réservation." + +# @ dbem +#: templates/templates/my-bookings.php:101 +#, php-format +msgid "Please Log In to view your bookings." +msgstr "Veuillez Vous Connecter pour afficher vos réservations." + +# @ dbem +#: templates/templates/events-search.php:35 +msgid "between" +msgstr "entre les" + +# @ dbem +#: em-install.php:313 +msgid "All Categories" +msgstr "Toutes les Catégories" + +# @ dbem +#: em-install.php:315 +msgid "All Countries" +msgstr "Tous les Pays" + +# @ dbem +#: em-install.php:317 +msgid "All Regions" +msgstr "Toutes les Régions" + +# @ dbem +#: em-install.php:319 +msgid "All States" +msgstr "Tous les États" + +# @ dbem +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: em-install.php:310 +#: events-manager.php:264 +msgid "Search" +msgstr "Recherche" + +# @ dbem +#: events-manager.php:266 +msgid "Loading..." +msgstr "Chargement en cours..." + +# @ dbem +#: events-manager.php:265 +msgid "Searching..." +msgstr "Recherche en cours..." + +# @ dbem +#: templates/placeholders/bookingbutton.php:2 +msgid "Book Now" +msgstr "Réservez Maintenant" + +# @ dbem +#: templates/placeholders/bookingbutton.php:3 +msgid "Booking..." +msgstr "Réservation ..." + +# @ dbem +#: templates/placeholders/bookingbutton.php:4 +msgid "Booking Submitted" +msgstr "Réservation Effectuée" + +# @ dbem +#: templates/placeholders/bookingbutton.php:5 +msgid "Booking Error. Try again?" +msgstr "Erreur lors de la réservation. Essayer à nouveau ?" + +# @ dbem +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Carte Non Disponible" + +# @ dbem +#: templates/placeholders/bookingform.php:11 +#, php-format +msgid "You are currently attending this event. Manage my bookings" +msgstr "Vous avez effectué une réservation cet évènement. Gérer mes réservations" + +# @ dbem +#: templates/placeholders/bookingform.php:13 +msgid "Online bookings are not available for this event." +msgstr "Les réservations en ligne ne sont pas disponibles pour cet évènement." + +# @ dbem +#: templates/placeholders/bookingform.php:15 +msgid "Bookings are closed for this event." +msgstr "Les réservations sont closes pour cet évènement." + +# @ dbem +#: events-manager.php:250 +msgid "Please wait while the booking is being submitted." +msgstr "Veuillez patienter pendant que la réservation est soumise." + +# @ dbem +#: admin/em-options.php:40 +msgid "Changes saved." +msgstr "Modifications enregistrées." + +# @ dbem +#: admin/em-help.php:28 +#: admin/em-ms-options.php:52 +#: admin/em-options.php:167 +msgid "Event Related Placeholders" +msgstr "Marqueurs Relatifs Aux Évènements" + +# @ dbem +#: admin/em-help.php:34 +#: admin/em-ms-options.php:53 +#: admin/em-options.php:168 +msgid "Location Related Placeholders" +msgstr "Marqueurs Relatifs Aux Emplacements" + +# @ dbem +#: admin/em-help.php:37 +#: admin/em-ms-options.php:54 +#: admin/em-options.php:169 +msgid "Booking Related Placeholders" +msgstr "Marqueurs Relatifs Aux Réservations" + +# @ dbem +#: admin/em-help.php:31 +#: admin/em-ms-options.php:55 +#: admin/em-options.php:170 +msgid "Category Related Placeholders" +msgstr "Marqueurs Relatifs Aux Catégories" + +# @ dbem +#: admin/em-ms-options.php:56 +#: admin/em-options.php:171 +#, php-format +msgid "This accepts %s and %s placeholders." +msgstr "Accepte les %s et les %s." + +# @ dbem +#: admin/em-ms-options.php:57 +#: admin/em-ms-options.php:58 +#: admin/em-options.php:172 +#: admin/em-options.php:173 +#, php-format +msgid "This accepts %s placeholders." +msgstr "Accepte les %s." + +# @ dbem +#: admin/em-ms-options.php:59 +#: admin/em-options.php:174 +#, php-format +msgid "This accepts %s, %s and %s placeholders." +msgstr "Accepte les %s, les %s et les %s." + +# @ dbem +# @ default +#: admin/em-ms-options.php:61 +#: admin/em-ms-options.php:200 +#: admin/em-options.php:177 +#: admin/em-options.php:1251 +msgid "Save Changes" +msgstr "Enregistrer les modifications" + +# @ dbem +#: admin/em-ms-options.php:61 +#: admin/em-options.php:177 +msgid "All" +msgstr "Tous" + +# @ dbem +#: admin/em-ms-options.php:66 +#: admin/em-options.php:182 +msgid "Collapse All" +msgstr "Compacter Tout" + +# @ dbem +#: admin/em-ms-options.php:67 +#: admin/em-options.php:183 +msgid "Expand All" +msgstr "Déplier Tout" + +# @ dbem +#: admin/em-ms-options.php:138 +#: admin/em-options.php:276 +msgid "Event Manager Options" +msgstr "Paramètres du Gestionnaire d’Évènements" + +# @ dbem +#: admin/em-ms-options.php:148 +#: admin/em-options.php:287 +#: admin/em-options.php:370 +#: admin/em-options.php:392 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:703 +#: admin/em-options.php:793 +#: admin/em-options.php:825 +#: admin/em-options.php:847 +#: admin/em-options.php:869 +#: admin/em-options.php:893 +#: admin/em-options.php:909 +#: admin/em-options.php:932 +#: admin/em-options.php:961 +#: admin/em-options.php:989 +#: admin/em-options.php:1009 +#: admin/em-options.php:1024 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#: admin/em-options.php:1130 +#: admin/em-options.php:1162 +#: admin/em-options.php:1214 +#: admin/em-options.php:1272 +#: admin/em-options.php:1305 +#: admin/em-options.php:1327 +#: admin/em-options.php:1355 +#: admin/em-options.php:1460 +msgid "Click to toggle" +msgstr "Cliquer pour basculer" + +# @ dbem +#: admin/em-ms-options.php:148 +msgid "Multi Site Options" +msgstr "Options Multi Site" + +# @ dbem +#: admin/em-ms-options.php:152 +msgid "Enable global tables mode?" +msgstr "Permettre le mode de tables global ?" + +# @ dbem +#: admin/em-ms-options.php:152 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Sélectionnez Oui pour enregistrer les évènements dans les tables du site principal (EM doit également y être activée). Ceci vous permet de partager des évènements à travers différents blogs, comme par exemple pour montrer les évènements de votre réseau tout en permettant aux utilisateurs d'afficher et de gérer leurs propres évènements au sein de leur blog. Gardez à l'esprit que l'activation de ceci signifie que les anciens évènements créés sur les sous-blogs ne seront plus accessibles, ils le seront à nouveau si vous faites marche arrière, tandis que de nouveaux évènements créés en mode global resteront sur le site principal." + +# @ dbem +#: admin/em-ms-options.php:163 +msgid "Display global events on main blog?" +msgstr "Afficher les évènements globaux sur le site principal ?" + +# @ dbem +#: admin/em-options.php:341 +msgid "Use dropdown for locations?" +msgstr "Utiliser une liste déroulante pour les emplacements ?" + +# @ dbem +#: admin/em-options.php:341 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Sélectionnez Oui pour sélectionner l'emplacement depuis une liste déroulante ; la sélection sera plus rapide, mais vous ne pourrez ajouter des emplacements directement." + +# @ dbem +#: admin/em-options.php:297 +msgid "Select yes to enable the recurrence features feature" +msgstr "Sélectionnez Oui pour activer la fonctionnalité Périodicité et permettre de définir des évènements périodiques." + +# @ dbem +#: admin/em-options.php:298 +msgid "Enable bookings?" +msgstr "Permettre les réservations ?" + +# @ dbem +#: admin/em-options.php:298 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Sélectionnez Oui pour permettre les réservations et les billets pour des évènements." + +# @ dbem +#: admin/em-options.php:301 +msgid "Select yes to enable the category features" +msgstr "Sélectionnez Oui pour activer la fonctionnalité Catégories." + +# @ dbem +#: admin/em-options.php:313 +msgid "Select yes to enable the attributes feature" +msgstr "Sélectionnez Oui pour activer la fonctionnalité Attributs." + +# @ dbem +#: admin/em-options.php:305 +msgid "no default category" +msgstr "Pas de catégorie par défaut" + +# @ dbem +#: admin/em-options.php:310 +msgid "Default Category" +msgstr "Catégorie par défaut" + +# @ dbem +#: admin/em-options.php:310 +msgid "This option allows you to select the default category when adding an event." +msgstr "Cette option vous permet de sélectionner la catégorie par défaut lors de l'ajout d'un évènement." + +# @ dbem +#: admin/em-options.php:326 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "
                      (Non applicable à la propriété d'évènement telle qu'implémentée actuellement, à venir bientôt !)" + +# @ dbem +#: admin/em-options.php:321 +msgid "no default location" +msgstr "Aucun emplacement par défaut" + +# @ dbem +#: admin/em-options.php:326 +msgid "Default Location" +msgstr "Emplacement par défaut" + +# @ dbem +#: admin/em-options.php:326 +msgid "This option allows you to select the default location when adding an event." +msgstr "Cette option vous permet de sélectionner l'emplacement par défaut lors de l'ajout d'un évènement." + +# @ dbem +#: admin/em-options.php:329 +msgid "Default Location Country" +msgstr "Pays de l'emplacement par défaut" + +# @ dbem +#: admin/em-options.php:329 +msgid "no default country" +msgstr "pas de pays par défaut" + +# @ dbem +#: admin/em-options.php:329 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Si vous sélectionnez un pays par défaut, celui-ci sera présélectionné lors de la création d'un nouvel emplacement." + +# @ dbem +#: admin/em-options.php:316 +msgid "Event Attributes" +msgstr "Attributs d’Évènement" + +# @ dbem +#: admin/em-options.php:316 +#, php-format +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Vous pouvez également ajouter des attributs d'évènement ici, un par ligne dans ce format #_ATT{key} . Ils n'apparaîtront pas sur les pages d'évènement, sauf si vous les insérez dans un autre modèle. Vous pourrez stocker des informations supplémentaires sur un évènement pour d'autres usages. Plus d'informations sur les marqueurs." + +# @ dbem +#: admin/em-options.php:350 +msgid "Show some love?" +msgstr "Afficher un peu d'amour ?" + +# @ dbem +#: admin/em-options.php:350 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Des centaines d'heures sont passées dans cette extension gratuite pour WordPress, montrez votre soutien et ajoutez un petit lien vers le site de l'extension au bas de vos pages évènement." + +# @ dbem +#: admin/em-options.php:440 +msgid "Events page" +msgstr "Page Évènements" + +# @ dbem +#: admin/em-options.php:445 +msgid "Show events page in lists?" +msgstr "Afficher la page d'évènements dans les listes de pages WP ?" + +# @ dbem +#: admin/em-options.php:445 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Cocher cette option si vous voulez que la page des évènements apparaisse au milieu des autres dans les listes de pages WP." + +# @ dbem +#: admin/em-options.php:446 +msgid "Display calendar in events page?" +msgstr "Afficher le calendrier à la page d'évènements ?" + +# @ dbem +#: admin/em-options.php:446 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Cette option vous permet d'afficher le calendrier à la page des évènements, au lieu de la liste par défaut. Il est recommandé de ne pas afficher côte à côte ce calendrier et le widget calendrier." + +# @ dbem +#: admin/em-options.php:446 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "
                      Si vous souhaitez afficher des évènements qui durent plus d'une journée, référez-vous à la section Calendrier de cette page." + +# @ dbem +#: admin/em-options.php:447 +msgid "Disable title rewriting?" +msgstr "Désactiver la réécriture du titre ?" + +# @ dbem +#: admin/em-options.php:448 +msgid "Event Manager titles" +msgstr "Titres Event Manager" + +# @ dbem +#: admin/em-options.php:448 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Ce paramètre n'est utilisé que si vous cochez 'Oui' ci-dessus. Vous constaterez que les titres des pages d'évènements ne sont plus réécrits, et que vous avez un nouveau titre sous le titre par défaut. C'est ici que vous contrôlez l'HTML de ce titre : assurez-vous que le marqueur #_PAGETITLE est présent, car c'est celui qui est utilisé par Event Manager pour contrôler ce qui est réécrit dans ce titre, cf. plus bas." + +# @ dbem +#: admin/em-options.php:568 +msgid "Event List Limits" +msgstr "Longueur de la liste d'évènements" + +# @ dbem +#: admin/em-options.php:568 +msgid "This will control how many events are shown on one list by default." +msgstr "Cette option vous permet de définir combien d'évènements doivent être affichés dans une liste." + +# @ dbem +#: admin/em-options.php:501 +msgid "Are current events past events?" +msgstr "Est-ce que les évènements d'ajourd'hui sont considérés comme des évènements passés ?" + +# @ dbem +#: admin/em-options.php:501 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Par défaut, les évènements qui ont une date de fin au-delà d'aujourd'hui seront inclus dans les recherches, réglez ce paramètre à Oui pour considérer les évènements qui ont commencé 'hier' dans le passé." + +# @ dbem +#: admin/em-options.php:449 +msgid "Show events search?" +msgstr "Afficher le formulaire de recherche ?" + +# @ dbem +#: admin/em-options.php:449 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Si oui, un formulaire de recherche apparaîtra juste au-dessus de votre liste d'évènements." + +# @ dbem +#: admin/em-options.php:511 +msgid "Default event list ordering" +msgstr "Ordre par défaut d'une liste d'évènements" + +# @ dbem +#: admin/em-options.php:516 +msgid "Order by start date, start time, then event name" +msgstr "Date de début, heure de début, nom de l'évènement" + +# @ dbem +#: admin/em-options.php:517 +msgid "Order by name, start date, then start time" +msgstr "Nom de l'évènement, date de début, heure de début" + +# @ dbem +#: admin/em-options.php:518 +msgid "Order by name, end date, then end time" +msgstr "Nom de l'évènement, date de fin, heure de fin" + +# @ dbem +#: admin/em-options.php:519 +msgid "Order by end date, end time, then event name" +msgstr "Date de fin, heure de fin, nom de l'évènement" + +# @ dbem +#: admin/em-options.php:533 +msgid "All Ascending" +msgstr "Ascendant" + +# @ dbem +#: admin/em-options.php:536 +msgid "All Descending" +msgstr "Descendant" + +# @ dbem +#: admin/em-options.php:490 +#: admin/em-options.php:550 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "Lorsque le gestionnaire d'évènements affiche des listes d'évènements, le comportement par défaut est de les classer par date de début dans l'ordre croissant. Pour changer cela, modifiez les valeurs ci-dessus." + +# @ dbem +#: admin/em-options.php:554 +msgid "Event list scope" +msgstr "Contenu d'une liste d'évènements" + +# @ dbem +#: admin/em-options.php:564 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Afficher uniquement les évènements qui ont débuté dans une certaine plage de temps sur la page des évènements. Par défaut, les évènements futurs sans limite de fin." + +# @ dbem +#: admin/em-options.php:847 +msgid "Events format" +msgstr "Format des Pages Évènements" + +# @ dbem +#: admin/em-options.php:850 +#: admin/em-options.php:935 +#: admin/em-options.php:964 +#, php-format +msgid "%s Page" +msgstr "Page %s" + +# @ dbem +#: admin/em-options.php:852 +msgid "Default event list format header" +msgstr "Format par défaut de l'en-tête d'une liste d'évènements" + +# @ dbem +#: admin/em-options.php:852 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Ce contenu apparaitra juste au-dessus de votre code pour le format d'une liste d'évènements. Valeur par défaut : vide." + +# @ dbem +#: admin/em-options.php:853 +msgid "Default event list format" +msgstr "Format par défaut d'une liste d'évènements" + +# @ dbem +#: admin/em-options.php:853 +msgid "The format of any events in a list." +msgstr "Le format des évènements dans une liste." + +# @ dbem +#: admin/em-options.php:854 +msgid "Default event list format footer" +msgstr "Format par défaut du pied de page d'une liste d'évènements" + +# @ dbem +#: admin/em-options.php:854 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Ce contenu apparaitra juste sous votre code pour le format d'une liste d'évènements. Valeur par défaut : vide." + +# @ dbem +#: admin/em-options.php:855 +msgid "No events message" +msgstr "Message 'Aucun évènement'" + +# @ dbem +#: admin/em-options.php:855 +msgid "The message displayed when no events are available." +msgstr "Le message qui s'affiche lorsque la page n'a pas d'évènements à afficher." + +# @ dbem +#: admin/em-options.php:856 +msgid "List events by date title" +msgstr "Titre de page d'évènements par date" + +# @ dbem +#: admin/em-options.php:856 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
                      " +msgstr "Ceci est le titre d'une page qui regroupe les évènements d'une date précise. Pour insérer des valeurs de date, utilisez la syntaxe PHP pour les heures précédés du symbole #, ainsi #m, #M, #j, etc.
                      " + +# @ dbem +#: admin/em-options.php:858 +#: admin/em-options.php:942 +#: admin/em-options.php:971 +#: admin/em-options.php:992 +#, php-format +msgid "Single %s Page" +msgstr "Page %s Seul" + +# @ dbem +#: admin/em-options.php:860 +msgid "Single event page title format" +msgstr "Format du titre de page d'évènement seul" + +# @ dbem +#: admin/em-options.php:860 +msgid "The format of a single event page title." +msgstr "Le format du titre de page pour un évènement seul." + +# @ dbem +#: admin/em-options.php:861 +msgid "Default single event format" +msgstr "Format par défaut d'un évènement seul" + +# @ dbem +#: admin/em-options.php:861 +msgid "The format of a single event page." +msgstr "Le format de page pour un évènement seul." + +# @ dbem +#: admin/em-options.php:909 +msgid "Calendar format" +msgstr "Format du Calendrier" + +# @ dbem +#: admin/em-options.php:913 +msgid "Small calendar title" +msgstr "Titre du petit calendrier" + +# @ dbem +#: admin/em-options.php:913 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "Le format du titre, correspondant au texte qui s'affiche dans la bulle qui apparait lorsque la souris passe sur un jour du widget calendrier." + +# @ dbem +#: admin/em-options.php:914 +msgid "Small calendar title separator" +msgstr "Séparateur de titre du petit calendrier" + +# @ dbem +#: admin/em-options.php:914 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "Le séparateur apparaissant dans le titre ci-dessus lorsque plusieurs évènements se produisent le même jour." + +# @ dbem +#: admin/em-options.php:915 +msgid "Full calendar events format" +msgstr "Format des évènements du grand calendrier" + +# @ dbem +#: admin/em-options.php:915 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "Le format de chaque évènement affiché dans le calendrier pleine page. Souvenez-vous d'inclure des balises li avant et /li après l'évènement." + +# @ dbem +#: admin/em-options.php:916 +msgid "Show long events on calendar pages?" +msgstr "Afficher les évènements de longue durée sur les pages de calendrier ?" + +# @ dbem +#: admin/em-options.php:916 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Si vous affichez un calendrier sur la page des évènements (voir la section format des Évènements sur cette page), vous avez la possibilité d'afficher chaque jour les évènements qui s'étendent sur plusieurs jours." + +# @ dbem +#: admin/em-options.php:917 +msgid "Show list on day with single event?" +msgstr "Afficher une liste même s'il n'y a qu'un seul évènement ?" + +# @ dbem +#: admin/em-options.php:917 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Par défaut, si un jour civil a un seul évènement, sa page affiche un seul évènement lorsqu'on clique sur le lien de cette date dans le calendrier. Si vous sélectionnez Oui, vous obtiendrez toujours une liste d'évènements." + +# @ dbem +#: admin/em-options.php:920 +msgid "iCal Feed Settings" +msgstr "Paramètres du Flux iCal" + +# @ dbem +#: admin/em-options.php:922 +msgid "iCal Title" +msgstr "Titre iCal" + +# @ dbem +#: admin/em-options.php:922 +msgid "The title that will appear in the calendar." +msgstr "Le titre qui apparaitra dans le calendrier." + +# @ dbem +#: admin/em-options.php:923 +msgid "iCal Limit" +msgstr "Limite iCal" + +# @ dbem +#: admin/em-options.php:923 +msgid "Limits the number of future events shown (0 = unlimited)." +msgstr "Limite le nombre d'évènements à venir qui doivent être affichés (0 = illimité)." + +# @ dbem +#: admin/em-options.php:932 +msgid "Locations format" +msgstr "Format des emplacements" + +# @ dbem +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "%s list header format" +msgstr "Format de l'en-tête de liste" + +# @ dbem +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Ce contenu apparaitra juste au-dessus de votre code pour le format de liste %s ci-dessous. Valeur par défaut : vide" + +# @ dbem +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "%s list item format" +msgstr "Format des éléments d'une liste" + +# @ dbem +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "The format of a single %s in a list." +msgstr "Le format des éléments %s dans une liste." + +# @ dbem +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "%s list footer format" +msgstr "Format du pied de page de liste" + +# @ dbem +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Ce contenu apparaitra juste en-dessous de votre code pour le format de liste %s ci-dessous. Valeur par défaut : vide" + +# @ dbem +#: admin/em-options.php:940 +#: admin/em-options.php:951 +#: admin/em-options.php:969 +#: admin/em-options.php:979 +#: admin/em-options.php:1000 +#, php-format +msgid "No %s message" +msgstr "Message 'pas de %s'" + +# @ dbem +#: admin/em-options.php:940 +#: admin/em-options.php:969 +#, php-format +msgid "The message displayed when no %s are available." +msgstr "Le message qui s'affiche lorsque la page n'a pas de %s à afficher." + +# @ dbem +#: admin/em-options.php:944 +#: admin/em-options.php:973 +#: admin/em-options.php:994 +#, php-format +msgid "Single %s title format" +msgstr "Format Titre %s Seul" + +# @ dbem +#: admin/em-options.php:944 +msgid "The format of a single location page title." +msgstr "Le format du titre de la page affichant un seul évènement." + +# @ dbem +#: admin/em-options.php:945 +#: admin/em-options.php:974 +#: admin/em-options.php:995 +#, php-format +msgid "Single %s page format" +msgstr "Format Page %s Seul" + +# @ dbem +#: admin/em-options.php:945 +msgid "The format of a single location page." +msgstr "Le format de la page affichant un seul évènement." + +# @ dbem +#: admin/em-options.php:946 +msgid "Default location balloon format" +msgstr "Format de la bulle de l'emplacement par défaut" + +# @ dbem +#: admin/em-options.php:946 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "Le format du texte figurant dans le ballon matérialisant l'emplacement sur une carte." + +# @ dbem +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#, php-format +msgid "%s List Formats" +msgstr "Formats de Listes d'%ss" + +# @ dbem +#: admin/em-options.php:950 +#: admin/em-options.php:978 +#: admin/em-options.php:999 +#, php-format +msgid "Default %s list format" +msgstr "Format par défaut de liste %s" + +# @ dbem +#: admin/em-ms-options.php:163 +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-options.php:418 +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:502 +#: admin/em-options.php:950 +#: admin/em-options.php:951 +#: admin/em-options.php:978 +#: admin/em-options.php:979 +#: admin/em-options.php:999 +#: admin/em-options.php:1000 +#: admin/em-options.php:1366 +#: admin/em-options.php:1367 +#: admin/em-options.php:1368 +#: admin/em-options.php:1369 +#: admin/em-options.php:1370 +#: admin/em-options.php:1371 +#: events-manager.php:295 +#: events-manager.php:296 +#: events-manager.php:297 +#: events-manager.php:298 +#: events-manager.php:299 +#: events-manager.php:300 +msgid "events" +msgstr "évènements" + +# @ dbem +#: admin/em-options.php:950 +msgid "The format of the events the list inserted in the location page through the #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS element." +msgstr "Le format d'une liste d'évènements insérée à la page des emplacements via les éléments #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS et #_LOCATIONALLEVENTS." + +# @ dbem +#: admin/em-options.php:951 +msgid "The message to be displayed in the list generated by #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS when no events are available." +msgstr "Le message à afficher dans une liste générée par les éléments #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS lorsque aucun évènement n'est affiché." + +# @ dbem +#: admin/em-options.php:961 +msgid "Categories format" +msgstr "Format des Catégories" + +# @ dbem +#: admin/em-options.php:707 +#: admin/em-options.php:708 +#: admin/em-options.php:964 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: em-install.php:416 +#: em-install.php:418 +#: em-install.php:697 +#: em-install.php:747 +msgid "Categories" +msgstr "Catégories" + +# @ dbem +#: admin/em-options.php:973 +msgid "The format of a single category page title." +msgstr "Le format du titre de la page affichant une seule catégorie." + +# @ dbem +#: admin/em-options.php:974 +msgid "The format of a single category page." +msgstr "Le format d'une page rassemblant les éléments d'une seule catégorie." + +# @ dbem +#: admin/em-options.php:978 +msgid "The format of the events the list inserted in the category page through the #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." +msgstr "Le format d'une liste d'évènements insérée à la page des emplacements via les éléments #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS et #_CATEGORYALLEVENTS." + +# @ dbem +#: admin/em-options.php:979 +msgid "The message to be displayed in the list generated by #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS when no events are available." +msgstr "Le message à afficher dans une liste générée par les éléments #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS lorsque aucun évènement n'est affiché." + +# @ dbem +#: admin/em-options.php:1009 +msgid "RSS feed format" +msgstr "Format du Flux RSS" + +# @ dbem +#: admin/em-options.php:1013 +msgid "RSS main title" +msgstr "Titre du flux RSS" + +# @ dbem +#: admin/em-options.php:1013 +msgid "The main title of your RSS events feed." +msgstr "Le titre principal de votre flux RSS d'évènements." + +# @ dbem +#: admin/em-options.php:1014 +msgid "RSS main description" +msgstr "Description du flux RSS" + +# @ dbem +#: admin/em-options.php:1014 +msgid "The main description of your RSS events feed." +msgstr "La description principale de votre flux RSS des évènements." + +# @ dbem +#: admin/em-options.php:1015 +msgid "RSS title format" +msgstr "Format du titre du flux RSS" + +# @ dbem +#: admin/em-options.php:1015 +msgid "The format of the title of each item in the events RSS feed." +msgstr "Le format du titre de chaque élément dans le flux RSS des évènements." + +# @ dbem +#: admin/em-options.php:1016 +msgid "RSS description format" +msgstr "Format de la description du flux RSS" + +# @ dbem +#: admin/em-options.php:1016 +msgid "The format of the description of each item in the events RSS feed." +msgstr "Le format de la description de chaque élément de votre flux RSS des évènements." + +# @ dbem +#: admin/em-options.php:1024 +msgid "Maps and geotagging" +msgstr "Carte et géolocalisation" + +# @ dbem +#: admin/em-options.php:1029 +msgid "Enable Google Maps integration?" +msgstr "Activer l'intégration Google Maps ?" + +# @ dbem +#: admin/em-options.php:1033 +msgid "Check this option to enable Goggle Map integration." +msgstr "Sélectionnez Oui pour activer l'intégration Google Maps" + +# @ dbem +#: admin/em-options.php:1037 +msgid "Map text format" +msgstr "Format de texte" + +# @ dbem +#: admin/em-options.php:1037 +msgid "The text format inside the map balloons." +msgstr "Le format du texte à l'intérieur des bulles sur la carte." + +# @ dbem +#: admin/em-options.php:1055 +msgid "Approval Required?" +msgstr "Approbation nécessaire ?" + +# @ dbem +#: admin/em-options.php:1055 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Les réservations ne seront confirmées qu'après validation par le gestionnaire de l'évènement." + +# @ dbem +#: admin/em-options.php:1072 +msgid "Currency" +msgstr "Monnaie" + +# @ dbem +#: admin/em-options.php:1072 +msgid "Choose your currency for displaying event pricing." +msgstr "Choisissez votre monnaie pour l'affichage des prix pour les évènements payants." + +# @ dbem +#: admin/em-options.php:1112 +msgid "Single ticket mode?" +msgstr "Mode billet simple ?" + +# @ dbem +#: admin/em-options.php:1112 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "En mode billet unique, les utilisateurs ne peuvent réserver qu'un seul billet, et ne verront pas la possibilité d'ajouter plus de billets." + +# @ dbem +#: admin/em-options.php:1113 +msgid "Show ticket table in single ticket mode?" +msgstr "Afficher le tableau des billets en mode billet seul ?" + +# @ dbem +#: admin/em-options.php:1113 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Activer cette option si vous préférez afficher une table des billets comme si elle avait plusieurs billets, même pour des événements à billet unique." + +# @ dbem +#: admin/em-options.php:1114 +msgid "Show unavailable tickets?" +msgstr "Afficher les billets non disponibles ?" + +# @ dbem +#: admin/em-options.php:1114 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Choisissez d'afficher ou non les billets non disponibles aux visiteurs." + +# @ dbem +#: admin/em-options.php:1056 +msgid "Reserved unconfirmed spaces?" +msgstr "Places non confirmées réservées ?" + +# @ dbem +#: admin/em-options.php:1056 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Par défaut, les places deviennent non disponibles une fois que les réservations sont CONFIRMEES. Pour bloquer les places même lorsqu'elles ne sont pas encore approuvées, choisissez Oui." + +# @ dbem +#: admin/em-options.php:1115 +msgid "Show multiple tickets if logged out?" +msgstr "Afficher les billets si non identifié ?" + +# @ dbem +#: admin/em-options.php:1115 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "S'il n'est pas identifié, un visiteur se verra demander de s'identifier pour effectuer une réservation. Mais il est possible d'afficher les billets disponibles s'il en reste plus d'un." + +# @ dbem +#: admin/em-options.php:1058 +msgid "Allow overbooking when approving?" +msgstr "Autoriser la surréservation lors de l'approbation ?" + +# @ dbem +#: admin/em-options.php:1058 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Si vous avez beaucoup de réservations en attente et que vous avez décidé d'accepter plus de réservations que de places disponibles, sélectionner Oui ici vous permettra de dépasser la limite des places disponibles lors de l'approbation manuelle des réservations en attente." + +# @ dbem +#: admin/em-options.php:1087 +msgid "Allow guest bookings?" +msgstr "Autoriser les visiteurs à effectuer des réservations ?" + +# @ dbem +#: admin/em-options.php:1087 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Si activé, les visiteurs peuvent fournir une adresse e-mail et un compte d'utilisateur sera automatiquement créé pour eux avec leur réservation. Ils seront également en mesure de se reconnecter avec ce compte nouvellement créé." + +# @ dbem +#: admin/em-options.php:1059 +msgid "Allow double bookings?" +msgstr "Autoriser les réservations en double ?" + +# @ dbem +#: admin/em-options.php:1059 +msgid "If enabled, users can book an event more than once." +msgstr "Si activé, les utilisateurs pourront réserver un évènement plus d'une fois." + +# @ dbem +#: admin/em-options.php:1088 +msgid "Display login form?" +msgstr "Afficher le formulaire de connexion?" + +# @ dbem +#: admin/em-options.php:1088 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Choisissez si vous souhaitez afficher un formulaire de connexion dans la zone de formulaire de réservation afin de rappeler à vos membres de se connecter pour réserver." + +# @ dbem +#: admin/em-options.php:1090 +msgid "Booking form feedback messages" +msgstr "Messages de confirmation du formulaire de réservation" + +# @ dbem +#: admin/em-options.php:1091 +msgid "When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below." +msgstr "Lorsqu'une réservation est effectuée par un utilisateur, un message est affiché en fonction du résultat, qui peut être défini ci-dessous." + +# @ dbem +#: admin/em-options.php:1093 +msgid "Successful booking" +msgstr "Réservation effectuée avec succès" + +# @ dbem +#: admin/em-options.php:1093 +msgid "When a booking is registered and confirmed." +msgstr "Lorsqu'une réservation est enregistrée et confirmée." + +# @ dbem +#: admin/em-options.php:1094 +msgid "Successful pending booking" +msgstr "Réservation effectuée en attente" + +# @ dbem +#: admin/em-options.php:1094 +msgid "When a booking is registered but pending." +msgstr "Lorsqu'une réservation est enregistrée, mais mise en attente." + +# @ dbem +#: admin/em-options.php:1095 +msgid "Not enough spaces" +msgstr "Plus de places disponibles" + +# @ dbem +#: admin/em-options.php:1095 +msgid "When a booking cannot be made due to lack of spaces." +msgstr "Lorsqu'une réservation ne peut être effectuée par manque de places." + +# @ dbem +#: admin/em-options.php:1096 +msgid "Errors" +msgstr "Erreurs" + +# @ dbem +#: admin/em-options.php:1096 +msgid "When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors." +msgstr "Lorsqu'une réservation ne peut être effectuée, en raison d'une erreur dans le remplissage du formulaire. En-dessous de ceci, la liste des erreurs sera affichée." + +# @ dbem +#: admin/em-options.php:1097 +msgid "User must log in" +msgstr "L'utilisateur doit s'identifier" + +# @ dbem +#: admin/em-options.php:1097 +msgid "When a user must log in before making a booking." +msgstr "Lorsque l'utilisateur doit s'identifier avant d'effectuer une réservation." + +# @ dbem +#: admin/em-options.php:1098 +msgid "Error mailing user" +msgstr "Erreur lors de l'e-mail à l'utilisateur" + +# @ dbem +#: admin/em-options.php:1098 +msgid "If a booking is made and an email cannot be sent, this is added to the success message." +msgstr "Lorsqu'une réservation est effectuée et que l'e-mail ne peut être envoyé, ceci est ajouté au message de succès." + +# @ dbem +#: admin/em-options.php:1099 +msgid "Already booked" +msgstr "Déjà réservé" + +# @ dbem +#: admin/em-options.php:1099 +msgid "If the user made a previous booking and cannot double-book." +msgstr "Lorsque l'utilisateur a déjà effectué une réservation, et qu'il n'est pas permis d'en effectuer plusieurs." + +# @ dbem +#: admin/em-options.php:1100 +msgid "No spaces booked" +msgstr "Aucune place réservée" + +# @ dbem +#: admin/em-options.php:1100 +msgid "If the user tries to make a booking without requesting any spaces." +msgstr "Lorsque l'utilisateur essaye d'effectuer une réservation sans préciser le nombre de places." + +# @ dbem +#: admin/em-options.php:1162 +msgid "Booking Email Templates" +msgstr "Modèles E-mails de Réservation" + +# @ dbem +#: admin/em-options.php:1166 +msgid "Default contact person" +msgstr "Point de contact par défaut" + +# @ dbem +#: admin/em-options.php:1166 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Sélectionnez le point de contact par défaut. Cet utilisateur sera utilisé chaque fois qu'un point de contact n'est pas explicitement spécifié pour un évènement." + +# @ dbem +#: admin/em-options.php:1167 +msgid "Email events admin?" +msgstr "Adresse e-mail de l'admin de l'évènement ?" + +# @ dbem +#: admin/em-options.php:1167 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Si vous souhaitez qu'un e-mail de confirmation de réservation soit envoyé à un administrateur, écrivez son e-mail ici (laissez vide pour ne pas envoyer d'e-mail)." + +# @ dbem +#: admin/em-options.php:1168 +msgid "Email contact person?" +msgstr "E-mail point de contact ?" + +# @ dbem +#: admin/em-options.php:1168 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Cochez cette option si vous voulez que le point de contact de l'évènement reçoive un e-mail lorsque quelqu'un réserve des places. Un e-mail sera envoyé quand une réservation est effectuée (qu'elle soit confirmée ou en attente)" + +# @ dbem +#: admin/em-options.php:1169 +msgid "Disable new registration email?" +msgstr "Désactiver l'enregistrement par e-mail ?" + +# @ dbem +#: admin/em-options.php:1171 +msgid "Contact person booking confirmed" +msgstr "E-mail au point de contact - Réservation confirmée" + +# @ dbem +#: admin/em-options.php:1172 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "Un e-mail sera envoyé au point de contact de l'évènement lorsqu'une réservation est effectuée." + +# @ dbem +#: admin/em-options.php:1174 +msgid "Contact person email subject" +msgstr "Sujet de l'e-mail" + +# @ dbem +#: admin/em-options.php:1175 +msgid "Contact person email" +msgstr "Contenu de l'e-mail" + +# @ dbem +#: admin/em-options.php:1177 +msgid "Contact person booking cancelled" +msgstr "E-mail au point de contact - Réservation annulée" + +# @ dbem +#: admin/em-options.php:1178 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Un e-mail sera envoyé au point de contact de l'évènement lorsque quelqu'un annule sa réservation." + +# @ dbem +#: admin/em-options.php:1180 +msgid "Contact person cancellation subject" +msgstr "Sujet de l'e-mail" + +# @ dbem +#: admin/em-options.php:1181 +msgid "Contact person cancellation email" +msgstr "Contenu de l'e-mail" + +# @ dbem +#: admin/em-options.php:1183 +msgid "Confirmed booking email" +msgstr "E-mail de confirmation de réservation" + +# @ dbem +#: admin/em-options.php:1184 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Ceci sera envoyé à la personne ayant effectué une réservation lorsque celle-ci est confirmée. Si les approbations sont activées, ce sera envoyé automatiquement après que la réservation soit approuvée. Si les approbations sont désactivées, ce sera envoyé dès que l'utilisateur soumet sa réservation." + +# @ dbem +#: admin/em-options.php:1186 +msgid "Booking confirmed email subject" +msgstr "Sujet de l'e-mail" + +# @ dbem +#: admin/em-options.php:1187 +msgid "Booking confirmed email" +msgstr "Contenu de l'e-mail" + +# @ dbem +#: admin/em-options.php:1189 +msgid "Pending booking email" +msgstr "E-mail de réservation en attente" + +# @ dbem +#: admin/em-options.php:1190 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Ceci sera envoyé à la personne lorsqu'elle soumet une réservation. Non pertinent si les réservations ne nécessitent pas d'approbation." + +# @ dbem +#: admin/em-options.php:1192 +msgid "Booking pending email subject" +msgstr "Sujet de l'e-mail" + +# @ dbem +#: admin/em-options.php:1193 +msgid "Booking pending email" +msgstr "Contenu de l'e-mail" + +# @ dbem +#: admin/em-options.php:1195 +msgid "Rejected booking email" +msgstr "Contenu de l'e-mail" + +# @ dbem +#: admin/em-options.php:1196 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Ceci sera envoyé à la personne ayant effectué une réservation lorsque celle-ci est rejetée. Non pertinent si les réservations ne nécessitent pas d'approbation." + +# @ dbem +#: admin/em-options.php:1198 +msgid "Booking rejected email subject" +msgstr "Sujet de l'e-mail" + +# @ dbem +#: admin/em-options.php:1198 +msgid "The subject of the email sent to the person making a booking that is awaiting administrator approval. Not relevant if bookings don't require approval." +msgstr "Le sujet de l'e-mail envoyé à la personne qui a effectué une réservation qui attend une approbation de l'admin. Non pertinent si les réservations ne nécessitent pas d'approbation." + +# @ dbem +#: admin/em-options.php:1199 +msgid "Booking rejected email" +msgstr "Contenu de l'e-mail" + +# @ dbem +#: admin/em-options.php:1199 +msgid "The body of the email which will be sent to the person if the booking is rejected. Not relevant if bookings don't require approval." +msgstr "Le contenu de l'e-mail qui est envoyé à la personne dont la réservation est rejetée. Non pertinent si les réservations ne nécessitent pas d'approbation." + +# @ dbem +#: admin/em-options.php:1202 +msgid "This will be sent when a user cancels their booking." +msgstr "Ceci sera envoyé à la personne lorsqu'elle annule sa réservation." + +# @ dbem +#: admin/em-options.php:1204 +msgid "Booking cancelled email subject" +msgstr "Sujet de l'e-mail" + +# @ dbem +#: admin/em-options.php:1205 +msgid "Booking cancelled email" +msgstr "Contenu de l'e-mail" + +# @ dbem +#: admin/em-options.php:1327 +msgid "Email Settings" +msgstr "Paramètres E-mail" + +# @ dbem +#: admin/em-options.php:1332 +msgid "Notification sender name" +msgstr "Nom de l'expéditeur" + +# @ dbem +#: admin/em-options.php:1332 +msgid "Insert the display name of the notification sender." +msgstr "Le nom de l'expéditeur affiché dans les e-mails de notification" + +# @ dbem +#: admin/em-options.php:1333 +msgid "Notification sender address" +msgstr "Adresse e-mail de l'expéditeur" + +# @ dbem +#: admin/em-options.php:1333 +msgid "Insert the address of the notification sender." +msgstr "L'adresse e-mail de l'expéditeur affichée dans les e-mails de notification" + +# @ dbem +#: admin/em-options.php:1334 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "Le numéro de port au travers duquel s'effectue l'envoi des e-mails de notifications. Assurez-vous qu'un firewall ne bloque pas ce port." + +# @ dbem +#: admin/em-options.php:1335 +msgid "Mail sending method" +msgstr "Protocole d'envoi" + +# @ dbem +#: admin/em-options.php:1335 +msgid "PHP mail function" +msgstr "Fonction mail PHP" + +# @ dbem +#: admin/em-options.php:1335 +msgid "Select the method to send email notification." +msgstr "Sélectionnez la méthode d'envoi des e-mails de notification" + +# @ dbem +#: admin/em-options.php:1336 +msgid "Use SMTP authentication?" +msgstr "Authentification PHP ?" + +# @ dbem +#: admin/em-options.php:1336 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "Une authentification SMTP est fréquemment nécessaire. Si vous utilisez GMail, assurez-vous de régler ce paramètre à Oui." + +# @ dbem +#: admin/em-options.php:1337 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "L'hôte SMTP. En règle générale il s'agit de 'localhost'. Si vous utilisez GMail, réglez cette valeur à 'ssl://smtp.gmail.com:465'." + +# @ dbem +#: admin/em-options.php:1338 +msgid "SMTP username" +msgstr "Identifiant SMTP" + +# @ dbem +#: admin/em-options.php:1338 +msgid "Insert the username to be used to access your SMTP server." +msgstr "L'identifiant du compte à utiliser pour accéder au serveur SMTP." + +# @ dbem +#: admin/em-options.php:1339 +msgid "SMTP password" +msgstr "Mot de passe SMTP" + +# @ dbem +#: admin/em-options.php:1339 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Le mot de passe du compte à utiliser pour accéder au serveur SMTP." + +# @ dbem +#: admin/em-options.php:1309 +msgid "Maximum width (px)" +msgstr "Largeur maximum (px)" + +# @ dbem +#: admin/em-options.php:1309 +msgid "The maximum allowed width for images uploades" +msgstr "La largeur maximale autorisée pour l'envoi d'images sur le serveur." + +# @ dbem +#: admin/em-options.php:1310 +msgid "Maximum height (px)" +msgstr "Hauteur maximale (px)" + +# @ dbem +#: admin/em-options.php:1310 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "La hauteur maximale autorisée pour l'envoi d'images sur le serveur." + +# @ dbem +#: admin/em-options.php:1311 +msgid "Maximum size (bytes)" +msgstr "Taille maximale (octets)" + +# @ dbem +#: admin/em-options.php:1311 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "La taille maximale autorisée pour les images téléchargées, en octets" + +# @ dbem +#: admin/em-options.php:1355 +msgid "User Capabilities" +msgstr "Rôles Utilisateurs" + +# @ dbem +#: admin/em-options.php:1359 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Attention : toute modification de ces valeurs risque de rendre publiques des données qui étaient jusqu'à présent privées." + +# @ dbem +#: admin/em-options.php:1405 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Vous pouvez maintenant donner une bonne granularité à ce que vos utilisateurs peuvent faire avec les évènements. Chaque rôle peut effectuer divers types d'actions." + +# @ dbem +#: admin/em-options.php:1398 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "Peut gérer les réservations individuelles des autres utilisateurs et les paramètres de réservation d'évènement" + +# @ dbem +#: admin/em-options.php:1399 +msgid "User can use and manage bookings with their events." +msgstr "Peut utiliser et gérer les réservations de ses propres évènements" + +# @ dbem +#: admin/em-options.php:1287 +msgid "Allow anonymous event submissions?" +msgstr "Permettre les soumissions anonyme d'événements ?" + +# @ dbem +#: admin/em-options.php:1287 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Voulez-vous permettre aux utilisateurs de soumettre des réservations de manière anonyme ? Si oui, vous pouvez utiliser le minicode [event_form] ou les balises de modèle em_event_form()." + +# @ dbem +#: admin/em-options.php:1288 +msgid "Guest Default User" +msgstr "Utilisateur Invité par défaut" + +# @ dbem +#: admin/em-options.php:1281 +#: admin/em-options.php:1289 +msgid "Success Message" +msgstr "Message Succès" + +# @ dbem +#: admin/em-options.php:1289 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Les auteurs anonymes ne peuvent pas voir ou modifier leur événement une fois soumis. Vous pouvez personnaliser ici le message de réussite qu'ils verront." + +# @ dbem +#: admin/em-bookings.php:59 +msgid "Event Bookings Dashboard" +msgstr "Réservations d’Évènement" + +# @ dbem +#: admin/em-bookings.php:63 +#: admin/em-bookings.php:114 +#: admin/em-bookings.php:166 +msgid "Pending Bookings" +msgstr "Réservations En Attente" + +# @ dbem +#: admin/em-bookings.php:66 +msgid "Events With Bookings Enabled" +msgstr "Évènements Avec Réservations" + +# @ dbem +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +msgid "You do not have the rights to manage this event." +msgstr "Vous n'avez pas le droit de gérer cet évènement." + +# @ dbem +#: admin/em-bookings.php:93 +#, php-format +msgid "Manage %s Bookings" +msgstr "Gérer les Réservations pour %s" + +# @ dbem +#: admin/em-bookings.php:94 +#: admin/em-bookings.php:148 +msgid "View/Edit Event" +msgstr "Voir / Éditer un évènement" + +# @ dbem +#: admin/em-bookings.php:101 +msgid "Availability" +msgstr "Disponibilité" + +# @ dbem +#: admin/em-bookings.php:101 +msgid "Spaces confirmed" +msgstr "Places Confirmées" + +# @ dbem +#: admin/em-bookings.php:117 +#: admin/em-bookings.php:169 +msgid "Confirmed Bookings" +msgstr "Réservations Confirmées" + +# @ dbem +#: admin/em-bookings.php:119 +#: admin/em-bookings.php:171 +msgid "Rejected Bookings" +msgstr "Réservations Rejetées" + +# @ dbem +#: admin/em-bookings.php:121 +#: admin/em-bookings.php:173 +msgid "Cancelled Bookings" +msgstr "Réservations Annulées" + +# @ dbem +#: admin/em-bookings.php:137 +msgid "You do not have the rights to manage this ticket." +msgstr "Vous n'avez pas le droit de gérer ce billet." + +# @ dbem +#: admin/em-bookings.php:147 +#, php-format +msgid "Ticket for %s" +msgstr "Billet pour %s" + +# @ dbem +#: admin/em-bookings.php:149 +msgid "View Event Bookings" +msgstr "Afficher les Réservations pour l’Évènement" + +# @ dbem +#: admin/em-bookings.php:158 +msgid "Min" +msgstr "Min" + +# @ dbem +#: admin/em-bookings.php:159 +msgid "Max" +msgstr "Max" + +# @ dbem +#: admin/em-bookings.php:160 +msgid "Start" +msgstr "Début" + +# @ dbem +#: admin/em-bookings.php:161 +msgid "End" +msgstr "Fin" + +# @ dbem +#: admin/em-bookings.php:198 +msgid "Edit Booking" +msgstr "Éditer la réservation" + +# @ dbem +#: admin/em-bookings.php:206 +msgid "Event Details" +msgstr "Détails de l’Évènement" + +# @ dbem +#: admin/em-bookings.php:217 +msgid "Date/Time" +msgstr "Date / Heure" + +# @ dbem +#: admin/em-bookings.php:229 +#: admin/em-bookings.php:389 +msgid "Personal Details" +msgstr "Détails Personnels" + +# @ dbem +#: admin/em-bookings.php:237 +msgid "Booking Details" +msgstr "Détails de la Réservation" + +# @ dbem +#: admin/em-bookings.php:283 +msgid "Totals" +msgstr "Totaux" + +# @ dbem +#: admin/em-bookings.php:302 +msgid "Modify Booking" +msgstr "Modifier la Réservation" + +# @ dbem +#: admin/em-bookings.php:307 +msgid "Note: ticket availability not taken into account (i.e. you can overbook). Confirmation email is not resent automatically." +msgstr "NB : la disponibilité n'est pas vérifiée lors de la réservation, i.e. vous pouvez effectuer des sur-réservations. L'e-mail de confirmation ne sera pas envoyé automatiquement." + +# @ dbem +#: admin/em-bookings.php:323 +msgid "Booking Notes" +msgstr "Notes sur la Réservation" + +# @ dbem +#: admin/em-bookings.php:326 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Vous pouvez ajouter des notes privées ci-dessous pour référence interne que seuls les gestionnaires d'évènements verront." + +# @ dbem +#: admin/em-bookings.php:331 +msgid "wrote" +msgstr "a écrit" + +# @ dbem +#: admin/em-bookings.php:377 +msgid "Manage Person's Booking" +msgstr "Gérer les Réservations de l'Utilisateur" + +# @ dbem +#: admin/em-bookings.php:379 +msgid "Edit User" +msgstr "Éditer l'Utilisateur" + +# @ dbem +#: admin/em-bookings.php:400 +msgid "Past And Present Bookings" +msgstr "Réservations Passées et Courantes" + +# @ dbem +#: admin/em-admin.php:124 +#, php-format +msgid "

                      Events Manager is ready to go! It is highly recommended you read the Getting Started guide on our site, as well as checking out the Settings Page. Dismiss

                      " +msgstr "

                      Events Manager est prêt ! Il est fortement recommandé de lire le Guide de Démarrage sur notre site, ainsi que d'aller à la Page des Paramètres. Masquer

                      " + +# @ dbem +#: admin/em-admin.php:179 +#, php-format +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Cette page correspond à la page des évènements Events Manager. Son contenu sera écrasé par Events Manager, quoique si vous incluez le mot CONTENTS (exactement et en capitales) en l'entourant avec du texte, seul CONTENTS sera remplacé et votre texte sera conservé. Si vous voulez changer la façon dont vos évènements s'affichent, aller à la page des paramètres. " + +# @ dbem +#: em-functions.php:74 +#, php-format +msgid "Displaying %s–%s of %s" +msgstr "Affichage de %s–%s de %s" + +# @ dbem +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +msgid "Approve" +msgstr "Approuver" + +# @ dbem +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-rejected.php:55 +msgid "Decline" +msgstr "Décliner" + +# @ dbem +#: admin/bookings/em-cancelled.php:84 +#: admin/bookings/em-confirmed.php:85 +#: admin/bookings/em-pending.php:99 +#: admin/bookings/em-rejected.php:84 +msgid "Booker" +msgstr "Agent de réservations" + +# @ dbem +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Restaurer" + +# @ dbem +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-rejected.php:112 +msgid "Edit/View" +msgstr "Éditer / Voir" + +# @ dbem +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Aucune réservation n'a été annulée." + +# @ dbem +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +msgid "Unapprove" +msgstr "Désapprouver" + +# @ dbem +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +msgid "Reject" +msgstr "Rejeter" + +# @ dbem +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +msgid "No confirmed bookings." +msgstr "Aucune réservation n'a été confirmée." + +# @ dbem +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Aucune réservation n'a été rejetée." + +# @ dbem +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Aucune réservation en attente." + +# @ dbem +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Tous les Évènements" + +# @ dbem +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Évènements Futurs" + +# @ dbem +#: admin/bookings/em-events.php:51 +msgid "Total" +msgstr "Total" + +# @ default +#: admin/bookings/em-events.php:72 +msgid "Filter" +msgstr "Filtre" + +# @ dbem +#: admin/em-options.php:615 +#: admin/em-options.php:665 +#: admin/em-options.php:755 +#: classes/em-location-posts-admin.php:41 +msgid "Town" +msgstr "Ville" + +# @ dbem +#: admin/em-admin.php:41 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Aide de Events Manager, gestionnaire d'évènements" + +# @ dbem +#: admin/em-help.php:25 +msgid "Placeholders for customizing event pages" +msgstr "Marqueurs pour personnaliser les pages" + +# @ dbem +#: admin/em-help.php:26 +#, php-format +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "A la page des paramètres, vous trouverez diverses zones de texte où vous pourrez modifier la façon dont sont affichées les informations d'évènement, les listes d'évènements et d'emplacements. En utilisant ces espaces dédiés, vous pouvez choisir quelle information doit y être affichée." + +# @ dbem +#: admin/em-admin.php:90 +#: classes/em-people.php:28 +msgid "Events Manager" +msgstr "Events Manager" + +# @ default +#: em-functions.php:213 +msgid "Mon" +msgstr "Lun" + +# @ default +#: em-functions.php:213 +msgid "Tue" +msgstr "Mar" + +# @ default +#: em-functions.php:213 +msgid "Wed" +msgstr "Mer" + +# @ default +#: em-functions.php:213 +msgid "Thu" +msgstr "Jeu" + +# @ default +#: em-functions.php:213 +msgid "Fri" +msgstr "Ven" + +# @ default +#: em-functions.php:213 +msgid "Sat" +msgstr "sam" + +# @ default +#: em-functions.php:213 +msgid "Sun" +msgstr "Dim" + +# @ dbem +#: classes/em-event-post-admin.php:192 +#: classes/em-event-post-admin.php:359 +#: classes/em-event-post-admin.php:365 +msgid "Group Ownership" +msgstr "Propriété de Groupe" + +# @ dbem +#: classes/em-event-post-admin.php:185 +msgid "Bookings Stats" +msgstr "Statistiques Réservation" + +# @ dbem +#: templates/forms/event/booking-stats.php:12 +msgid "Available Spaces" +msgstr "Nombre de Places Disponibles" + +# @ dbem +#: templates/forms/event/booking-stats.php:13 +msgid "Confirmed Spaces" +msgstr "Places Confirmées" + +# @ dbem +#: templates/forms/event/booking-stats.php:14 +msgid "Pending Spaces" +msgstr "Places En Attente Confirmation" + +# @ dbem +#: templates/forms/event/booking-stats.php:32 +msgid "No responses yet!" +msgstr "Aucune réponse !" + +# @ dbem +#: classes/em-event-post-admin.php:246 +#, php-format +msgid "No categories available, create one here first" +msgstr "Aucune catégorie disponible, créez une catégorie maintenant" + +# @ dbem +#: templates/forms/event-editor.php:169 +msgid "No image uploaded for this event yet" +msgstr "aucune image n'a encore été téléchargée pour cet évènement" + +# @ dbem +#: classes/em-event-post-admin.php:189 +#: classes/em-event-post-admin.php:362 +msgid "Attributes" +msgstr "Attributs" + +# @ dbem +#: templates/forms/event/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Vous n'avez pas défini d'attributs personnalisés dans vos réglages du modèle. Veuillez les ajouter à la page des paramètres" + +# @ dbem +#: templates/forms/event/attributes.php:50 +msgid "Depreciated Attributes" +msgstr "Attributs Obsoletes" + +# @ dbem +#: templates/forms/event/attributes.php:83 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings to add attribute placeholders." +msgstr "Pour utiliser les attributs, vous devez en définir certains dans vos modèles, autrement ils ne seront jamais affichés. Aller à Evénements > Paramètres pour ajouter des marqueurs d'attributs." + +# @ dbem +#: em-install.php:284 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_NAME on #F #j, #Y. He wants to reserve #_BOOKINGSPACES spaces.
                      Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                      Yours faithfully,
                      Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) participera à #_NAME le #j #F #Y et souhaite réserver #_BOOKINGSPACES places.
                      Il y a maintenant #_BOOKEDSPACES places réservées, #_AVAILABLESPACES places sont encore disponibles.
                      Merci
                      Propulsé par Events Manager, gestionnaire d'évènements pour WordPress - http://wp-events-plugin.com" + +# @ dbem +#: em-install.php:284 +#: em-install.php:285 +#: em-install.php:286 +#: em-install.php:287 +#: em-install.php:288 +#: em-install.php:289 +#: em-install.php:290 +#: em-install.php:291 +msgid "

                      -------------------------------
                      Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

                      -------------------------------
                      Propulsé par Events Manager, gestionnaire d'évènements pour WordPress - http://wp-events-plugin.com" + +# @ dbem +#: em-install.php:285 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_NAME on #F #j, #Y. He wanted to reserve #_BOOKINGSPACES spaces.
                      Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                      Yours faithfully,
                      Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) a annulé sa réservation à #_NAME le #j #F #Y de #_BOOKINGSPACES places.
                      Il y a maintenant #_BOOKEDSPACES places réservées, #_AVAILABLESPACES places sont encore disponibles.
                      Merci
                      Propulsé par Events Manager, gestionnaire d'évènements pour WordPress - http://wp-events-plugin.com" + +# @ dbem +#: em-install.php:286 +msgid "Dear #_BOOKINGNAME,
                      you have successfully reserved #_BOOKINGSPACES space/spaces for #_NAME.
                      Yours faithfully,
                      #_CONTACTNAME" +msgstr "Cher/chère #_BOOKINGNAME,

                      Vous avez réservé #_BOOKINGSPACES place(s) pour #_NAME le #j #F #Y.

                      Cordialement,
                      #_CONTACTNAME" + +# @ dbem +#: em-install.php:287 +msgid "Dear #_BOOKINGNAME,
                      You have requested #_BOOKINGSPACES space/spaces for #_NAME.
                      Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
                      Yours faithfully,
                      #_CONTACTNAME" +msgstr "Cher/chère #_BOOKINGNAME,

                      Vous avez demandé à réserver #_BOOKINGSPACES place(s) pour #_NAME le #j #F #Y.

                      Cette réservation est maintenant en attente d'approbation par nos administrateurs : une fois approuvée vous recevrez un e-mail automatique de confirmation.

                      Cordialement,
                      #_CONTACTNAME" + +# @ dbem +#: em-install.php:288 +msgid "Dear #_BOOKINGNAME,
                      Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been rejected.
                      Yours faithfully,
                      #_CONTACTNAME" +msgstr "Cher/chère #_BOOKINGNAME,

                      Vous avez demandé à réserver #_BOOKINGSPACES place(s) pour #_NAME le #j #F #Y.

                      Nous ne pouvons hélas pas donner suite à cette demande, et vous invitons à vous rapprocher de l'organisateur pour plus d'information.

                      Cordialement,
                      #_CONTACTNAME" + +# @ dbem +#: em-install.php:289 +msgid "Dear #_BOOKINGNAME,
                      Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been cancelled.
                      Yours faithfully,
                      #_CONTACTNAME" +msgstr "Cher/chère #_BOOKINGNAME,

                      Vous avez demandé à réserver #_BOOKINGSPACES place(s) pour #_NAME le #j #F #Y.

                      Cette réservation est maintenant annulée.

                      Cordialement,
                      #_CONTACTNAME" + +# @ dbem +#: em-install.php:379 +#: em-install.php:387 +#: em-install.php:418 +#, php-format +msgid "No %s" +msgstr "Pas de %s" + +# @ dbem +#: em-debug.php:18 +#: em-install.php:406 +msgid "
                    • No events in this location
                    • " +msgstr "
                    • Aucun évènement à cet emplacement
                    • " + +# @ dbem +#: em-install.php:419 +msgid "
                    • No events in this category
                    • " +msgstr "
                    • Aucun évènement dans cette catégorie
                    • " + +# @ dbem +#: em-install.php:487 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Réservation effectuée, en attente de confirmation (vous recevrez également un e-mail après confirmation)." + +# @ dbem +#: em-install.php:488 +msgid "Booking successful." +msgstr "Réservation effectuée." + +# @ dbem +#: em-install.php:490 +msgid "You must log in or register to make a booking." +msgstr "Vous devez vous connecter ou vous enregistrer pour faire une réservation." + +# @ dbem +#: em-install.php:491 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "Cependant, des problèmes se sont produits lors de l'envoi des e-mails de confirmation pour vous et / ou le point de contact de l'évènement. Vous pouvez le contacter directement." + +# @ dbem +#: em-install.php:492 +msgid "Booking could not be created" +msgstr "La réservation n'a pu être effectuée " + +# @ dbem +#: em-install.php:493 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Cette adresse e-mail existe déjà dans notre système, veuillez vous identifier avec votre compte pour procéder à votre réservation." + +# @ dbem +#: em-install.php:494 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Un nouveau compte utilisateur a été créé pour vous. Veuillez consulter votre courrier électronique pour plus de détails concernant l'accès à ce compte." + +# @ dbem +#: em-install.php:495 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Un problème s'est produit lors de la création du compte utilisateur, veuillez contacter l'administrateur du site." + +# @ dbem +#: em-install.php:496 +msgid "You already have booked a seat at this event." +msgstr "Vous avez déjà réservé une place à cet évènement." + +# @ dbem +#: em-install.php:497 +msgid "You must request at least one space to book an event." +msgstr "Vous devez demander au moins une place pour votre réservation." + +# @ dbem +#: em-install.php:504 +#: em-install.php:512 +msgid "Booking Cancelled" +msgstr "Réservation Annulée" + +# @ dbem +#: em-install.php:506 +msgid "Booking Pending" +msgstr "Réservation En Attente" + +# @ dbem +#: em-install.php:508 +msgid "Booking Rejected" +msgstr "Réservation Rejetée" + +# @ dbem +#: em-install.php:510 +msgid "Booking Confirmed" +msgstr "Réservation Confirmée" + +# @ dbem +#: em-install.php:515 +msgid "Powered by" +msgstr "Propulsé par" + +# @ dbem +#: em-install.php:516 +msgid "Bookings - #_NAME" +msgstr "Réservations - #_NAME" + +# @ default +#: em-debug.php:44 +#, php-format +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Events Manager fonctionne en mode déboguage. Pour arrêter ce mode, rendez-vous à la page des Paramètres." + +# @ dbem +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "Aucune n° de billet n'a été fourni" + +# @ dbem +#: em-actions.php:181 +#, php-format +msgid "%s successfully deleted" +msgstr "%s effacé" + +# @ dbem +#: em-actions.php:358 +#, php-format +msgid "Booking %s" +msgstr "Réservation %s" + +# @ dbem +#: events-manager.php:295 +#: events-manager.php:303 +#: events-manager.php:309 +#, php-format +msgid "You do not have permission to publish %s" +msgstr "Vous n'avez pas la permission de publier des %s" + +# @ dbem +#: events-manager.php:299 +#: events-manager.php:307 +#: events-manager.php:313 +#: events-manager.php:319 +#, php-format +msgid "You do not have permission to edit %s" +msgstr "Vous n'avez pas la permission de modifier des %s" + +# @ dbem +#: events-manager.php:296 +#: events-manager.php:304 +#: events-manager.php:310 +#, php-format +msgid "You do not have permission to delete others %s" +msgstr "Vous n'avez pas la permission de supprimer les %s des autres utilisateurs" + +# @ dbem +#: events-manager.php:298 +#: events-manager.php:306 +#: events-manager.php:312 +#, php-format +msgid "You do not have permission to edit others %s" +msgstr "Vous n'avez pas la permission de modifier les %s des autres utilisateurs" + +# @ dbem +#: events-manager.php:292 +#, php-format +msgid "You do not have permission to manage others %s" +msgstr "Vous n'avez pas la permission de gérer les %s des autres utilisateurs" + +# @ dbem +#: admin/em-options.php:835 +#: events-manager.php:292 +#: events-manager.php:293 +msgid "bookings" +msgstr "réservations" + +# @ dbem +#: events-manager.php:297 +#: events-manager.php:305 +#: events-manager.php:311 +#: events-manager.php:318 +#, php-format +msgid "You do not have permission to delete %s" +msgstr "Vous n'avez pas la permission de supprimer des %s" + +# @ dbem +#: events-manager.php:293 +#, php-format +msgid "You do not have permission to manage %s" +msgstr "Vous n'avez pas la permission de gérer les %s" + +# @ dbem +#: admin/em-options.php:402 +#: admin/em-options.php:703 +#: em-posts.php:66 +#: em-posts.php:69 +msgid "Event Categories" +msgstr "Catégories" + +# @ dbem +#: admin/em-admin.php:40 +msgid "Events Manager Settings" +msgstr "Paramètres Events Manager" + +# @ dbem +#: admin/em-admin.php:40 +#: admin/em-admin.php:199 +#: admin/em-admin.php:207 +msgid "Settings" +msgstr "Paramètres" + +# @ dbem +#: admin/em-admin.php:41 +msgid "Help" +msgstr "Aide" + +# @ dbem +#: admin/em-bookings.php:289 +msgid "Tax" +msgstr "TVA" + +# @ dbem +#: admin/em-bookings.php:294 +msgid "Total (inc. tax)" +msgstr "Total (TVA inclus)" + +# @ dbem +#: templates/forms/event/bookings.php:24 +msgid "You can have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Vous pouvez avoir des billets simples ou multiples, où certains billets deviendront disponibles sous certaines conditions, par ex. réservations tardives, réductions de groupes, nombre de réservations, etc." + +# @ dbem +#: templates/forms/event/bookings.php:24 +msgid "Basic HTML is allowed in ticket labels and descriptions." +msgstr "Du HTML basique est autorisé dans les labels de billets et les descriptions ." + +# @ dbem +#: admin/em-options.php:1117 +msgid "Ticket Price (Descending)" +msgstr "Prix du Billet (Descendant)" + +# @ dbem +#: admin/em-options.php:1118 +msgid "Ticket Price (Ascending)" +msgstr "Prix du Billet (Ascendant)" + +# @ dbem +#: admin/em-options.php:1119 +msgid "Ticket Name (Ascending)" +msgstr "Nom du Billet (Ascendant)" + +# @ dbem +#: admin/em-options.php:1120 +msgid "Ticket Name (Descending)" +msgstr "Nom du Billet (Descendant)" + +# @ dbem +#: admin/em-options.php:1057 +msgid "Can users cancel their booking?" +msgstr "Les utilisateurs peuvent annuler les réservations ?" + +# @ dbem +#: admin/em-options.php:1057 +msgid "If enabled, users can cancel their bookings themselves from their bookings page." +msgstr "Si activé, les utilisateurs pourront annuler leurs réservations eux-mêmes, depuis leur page Mes Réservations." + +# @ dbem +#: admin/em-options.php:1073 +msgid "Tax Rate" +msgstr "Taux de Taxe" + +# @ dbem +#: admin/em-options.php:1073 +msgid "Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price)." +msgstr "Ajoutez une taxe au prix de vos billets (par exemple, entrez 10 pour ajouter 10% au prix du billet)." + +# @ dbem +#: admin/em-options.php:1074 +msgid "Add tax to ticket price?" +msgstr "Ajouter une taxe au prix des billets ?" + +# @ dbem +#: admin/em-options.php:1074 +msgid "When displaying ticket prices and booking totals, include the tax automatically?" +msgstr "Lors de l'affichage du prix des billets et du total de la réservation, inclure la taxe automatiquement ?" + +# @ dbem +#: admin/em-options.php:1122 +msgid "Order Tickets By" +msgstr "Trier les Tickets par" + +# @ dbem +#: admin/em-options.php:1122 +msgid "Choose which order your tickets appear." +msgstr "Choisissez dans quel ordre vos billets doivent apparaitre." + +# @ dbem +#: admin/em-options.php:1130 +msgid "No-User Booking Mode" +msgstr "Mode Réservation Sans Utilisateur" + +# @ dbem +#: admin/em-options.php:1134 +msgid "By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them." +msgstr "Par défaut, les réservations effectuées sont liées à un compte utilisateur. Si l'utilisateur n'est pas identifié et que les réservations sont autorisées pour les visiteurs, un compte sera automatiquement créé pour eux." + +# @ dbem +#: admin/em-options.php:1136 +msgid "Warning : Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information." +msgstr "Attention : Pluiseurs fonctions accordées aux utilisateurs normaux ne seront plus disponibles dans ce mode, tel que visualiser les réservations. Avec l'activation de ceci, lorsque vous sélectionnez un utilisateur, toute modification de ces valeurs pour un visiteur empêcherait l'affichage de l'information correcte." + +# @ dbem +#: admin/em-options.php:1139 +msgid "Enable No-User Booking Mode?" +msgstr "Activer le Mode Réservation Sans Utilisateur ?" + +# @ dbem +#: admin/em-options.php:1139 +msgid "This disables user registrations for bookings." +msgstr "Les réservations ne seront plus attribuées aux utilisateurs." + +# @ dbem +#: admin/em-options.php:1145 +msgid "Assign bookings to" +msgstr "Assigner les réservations à" + +# @ dbem +#: admin/em-options.php:1214 +msgid "Event Email Templates" +msgstr "Modèles d'E-mails Évènements" + +# @ dbem +#: admin/em-options.php:1224 +#: em-install.php:333 +msgid "Event Approved" +msgstr "Évènement Approuvé" + +# @ dbem +#: admin/em-options.php:1225 +msgid "An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the publish_events capability." +msgstr "Un e-mail sera envoyé au propriétaire de l'évènement lorsque celui-ci est approuvé. Les utilisateurs dont les évènements nécessitent une approbation préalable n'ont pas la capacité publish_events." + +# @ dbem +#: admin/em-options.php:1221 +#: admin/em-options.php:1227 +msgid "Event approved subject" +msgstr "Sujet de l'e-mail" + +# @ dbem +#: admin/em-options.php:1222 +#: admin/em-options.php:1228 +msgid "Event approved email" +msgstr "Contenu de l'e-mail" + +# @ dbem +#: classes/em-booking.php:376 +#: classes/em-booking.php:384 +msgid "Guest User" +msgstr "Utilisateur Invité" + +# @ dbem +#: classes/em-booking.php:380 +msgid "Not Supplied" +msgstr "Non Précisé" + +# @ dbem +#: classes/em-ticket.php:157 +msgid "Please enter a valid ticket price e.g. 10.50 (no currency signs)" +msgstr "Veuillez entrer un prix valide, par ex. 10.50 (sans le symbole monétaire)" + +# @ dbem +#: em-install.php:290 +msgid "Dear #_CONTACTNAME,
                      Your event #_NAME on #F #j, #Y has been approved.
                      You can view your event here: #_EVENTURL" +msgstr "Cher #_CONTACTNAME,
                      Votre évènement #_NAME le #F #j, #Y a été approuvé.
                      Vous pouvez visualiser votre évènement ici : #_EVENTURL" + +# @ dbem +#: templates/placeholders/bookingform.php:17 +msgid "This event is fully booked." +msgstr "Cet évènement est complet." + +# @ dbem +#: admin/em-admin.php:91 +msgid "Update Blogs" +msgstr "Mettre à jour les blogs" + +# @ dbem +#: admin/em-admin.php:139 +#, php-format +msgid "Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Houla ! Pour une raison inconnue, la page d'évènements n'a pas pu être créée (peut-être que vous venez de l'effacer ?). Vous devrez la créer manuellement, en créant une page vide, du nom que vous voulez, puis en la sélectionnant en tant que page d'évènements depuis la page de paramètres. Désolé pour cette étape supplémentaire ! Si vous savez ce que vous faites, vous pouvez ignorer ce message" + +# @ dbem +#: admin/em-admin.php:148 +msgid "There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update." +msgstr "Une version plus récente de Events Manager Pro est nécessaire pour cette version de Events Manager. Veuillez vous rendre sur le site de l'extension pour télécharger la mise à jour." + +# @ dbem +#: admin/em-admin.php:159 +#, php-format +msgid "MultiSite options have moved here. Dismiss message" +msgstr "Les options MultiSite ont été déplacées ici. Ignorer ce message" + +# @ dbem +#: admin/em-admin.php:171 +#, php-format +msgid "Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" +msgstr "Bien qu'elles apparaissent encore via les marqueurs, vous devrez migrer vos images pour les évènements et les emplacements, afin de les voir apparaitre dans vos formulaires d'édition, ainsi que votre bibliothèque de médias. Ignorer ce message" + +# @ dbem +#: admin/em-admin.php:213 +#: admin/em-options.php:1463 +msgid "Uninstall" +msgstr "Désinstaller" + +# @ default +#: admin/em-ms-options.php:6 +msgid "Update Network" +msgstr "" + +# @ default +#: admin/em-ms-options.php:24 +msgid "To update your network blogs with the latest Events Manager automatically, click the update button below." +msgstr "" + +# @ dbem +#: admin/em-ms-options.php:27 +msgid "Update" +msgstr "Mettre à Jour" + +# @ dbem +#: admin/em-ms-options.php:136 +#: admin/em-options.php:267 +#: admin/em-options.php:1051 +msgid "General" +msgstr "Général" + +# @ default +#: admin/em-ms-options.php:157 +#, php-format +msgid "%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network." +msgstr "" + +# @ dbem +#: admin/em-ms-options.php:158 +#, php-format +msgid "When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site." +msgstr "Lors de l'affichage des %s du site principal, vous avez l'option de permettre aux utilisateurs de visualiser les détails sur le site principal ou d'être redirigés vers le sous-site." + +# @ dbem +#: admin/em-ms-options.php:159 +#, php-format +msgid "Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Affiche les %s de tous les sites par défaut. Vous pourrez restreindre les %s par blog en utilisant des minicodes et des mots-clef de modèles associés à l'attribut blog. Nécessite que les tables globales soient activées." + +# @ default +#: admin/em-ms-options.php:160 +#, php-format +msgid "You must have assigned a %s page in your main blog settings for this to work." +msgstr "" + +# @ dbem +#: admin/em-ms-options.php:162 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#, php-format +msgid "%s Options" +msgstr "Options %s" + +# @ dbem +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:173 +#, php-format +msgid "Link sub-site %s directly to sub-site?" +msgstr "Lier le sous-site %s directement au site principal ?" + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, php-format +msgid "Global %s slug" +msgstr "Identifiant %s global" + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +msgid "Example:" +msgstr "Exemple :" + +# @ dbem +#: admin/em-ms-options.php:167 +msgid "Locations on main blog?" +msgstr "Emplacements sur le blog principal ?" + +# @ dbem +#: admin/em-ms-options.php:167 +msgid "If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog." +msgstr "Si vous préférez que tous vos emplacements appartiennent au blog principal, les utilisateurs pourront créer des emplacements, mais elles seront en fait créées sur le blog principal." + +# @ dbem +#: admin/em-ms-options.php:172 +#, php-format +msgid "Display global %s on main blog?" +msgstr "Afficher l'%s global sur le blog principal ?" + +# @ dbem +#: admin/em-options.php:112 +msgid "Settings have been reset back to default. Your events, locations and categories have not been modified." +msgstr "Les paramètres ont été remis aux valeurs par défaut. Vos évènements, emplacements et catégories n'ont pas été modifiées." + +# @ dbem +#: admin/em-options.php:125 +#: admin/em-options.php:129 +msgid "Reset Events Manager" +msgstr "Remettre à Zéro Events Manager" + +# @ dbem +#: admin/em-options.php:126 +msgid "Are you sure you want to reset Events Manager?" +msgstr "Êtes-vous sûr de vouloir remettre à zéro Events Manager ?" + +# @ dbem +#: admin/em-options.php:127 +msgid "All your settings, including email templates and template formats for Events Manager will be deleted." +msgstr "Tous vos réglages, y compris les modèles d'e-mails et les formats de modèles seront effacés." + +# @ dbem +#: admin/em-options.php:141 +msgid "Uninstall Events Manager" +msgstr "Désinstaller Events Manager" + +# @ dbem +#: admin/em-options.php:142 +msgid "Are you sure you want to uninstall Events Manager?" +msgstr "Êtes-vous sûr de vouloir désinstaller Events Manager ?" + +# @ dbem +#: admin/em-options.php:143 +msgid "All your settings and events will be permanently deleted. This cannot be undone." +msgstr "Tous vos réglages et évènements seront définitivement effacés. Ceci ne peut être annulé." + +# @ dbem +#: admin/em-options.php:144 +#, php-format +msgid "If you just want to deactivate the plugin, go to your plugins page." +msgstr "Si vous souhaitez vous contenter de désactiver l'extension, allez à la page des extensions." + +# @ dbem +#: admin/em-options.php:146 +msgid "Uninstall and Deactivate" +msgstr "Désinstaller et Désactiver" + +# @ dbem +# @ default +#: admin/em-options.php:268 +#: admin/em-options.php:418 +#: admin/em-options.php:581 +msgid "Pages" +msgstr "Pages" + +# @ dbem +#: admin/em-options.php:269 +msgid "Formats/Layouts" +msgstr "Formats / Mise en Page" + +# @ dbem +#: admin/em-options.php:271 +msgid "Booking Options" +msgstr "Options de Réservation" + +# @ dbem +#: admin/em-options.php:273 +msgid "Emails" +msgstr "E-mails" + +# @ dbem +#: admin/em-options.php:287 +msgid "General Options" +msgstr "Options Générales" + +# @ dbem +#: admin/em-options.php:290 +msgid "Disable thumbnails?" +msgstr "Désactiver les vignettes ?" + +# @ dbem +#: admin/em-options.php:290 +msgid "Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here)." +msgstr "Sélectionnez Oui pour que Events Manager ne génère pas les vignettes - certains thèmes génèrent déjà les vignettes, sans qu'il soit possible de le désactiver." + +# @ dbem +#: admin/em-options.php:293 +#: admin/em-options.php:334 +#: admin/em-options.php:346 +#, php-format +msgid "%s Settings" +msgstr "Paramètres %s" + +# @ dbem +#: admin/em-options.php:297 +msgid "Enable recurrence?" +msgstr "Activer la périodicité ?" + +# @ dbem +#: admin/em-options.php:299 +msgid "Enable tags?" +msgstr "Activer les mots-clef ?" + +# @ dbem +#: admin/em-options.php:299 +msgid "Select yes to enable the tag features" +msgstr "Sélectionnez Oui pour activer les mots-clef" + +# @ dbem +#: admin/em-options.php:301 +msgid "Enable categories?" +msgstr "Activer les catégories ?" + +# @ dbem +#: admin/em-options.php:310 +msgid "If an event does not have a category assigned when editing, this one will be assigned automatically." +msgstr "Si un évènement n'est pas associé à une catégorie lors de sa création, celle-ci lui sera associée par défaut." + +# @ dbem +#: admin/em-options.php:313 +msgid "Enable event attributes?" +msgstr "Activer les attributs d'évènement ?" + +# @ dbem +#: admin/em-options.php:314 +msgid "Enable event custom fields?" +msgstr "Activer les champs personnalisés ?" + +# @ dbem +#: admin/em-options.php:314 +msgid "Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area." +msgstr "Les Champs Personnalisés sont comme des attributs, sauf qu'on ne peut les restreindre à des valeurs spécifiques. Les utilisateurs peuvent ajouter n'importe quelle paire nom / valeur. N'est accessible que depuis la partie admin de WordPress." + +# @ dbem +#: admin/em-options.php:338 +msgid "Enable locations?" +msgstr "Activer les emplacements ?" + +# @ dbem +#: admin/em-options.php:338 +msgid "If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats." +msgstr "Si vous désactivez les emplacements, gardez à l'esprit que vous devrez supprimer votre page d'emplacements, ainsi que les minicodes et les marqueurs d'emplacements des formats que vous avez définis." + +# @ dbem +#: admin/em-options.php:340 +msgid "Require locations for events?" +msgstr "Emplacements obligatoires ?" + +# @ dbem +#: admin/em-options.php:340 +msgid "Setting this to no will allow you to submit events without locations. You can use the {no_location}...{/no_location} or {has_location}..{/has_location} conditional placeholder to selectively display location information." +msgstr "Sélectionnez Non pour permettre de définir des évènements sans en spécifier l'emplacement. Vous pouvez utiliser les marqueurs conditionnels {no_location}...{/no_location} ou {has_location}..{/has_location} pour afficher les informations d'emplacements de façon sélective." + +# @ dbem +#: admin/em-options.php:346 +#: admin/em-options.php:825 +#: admin/em-options.php:1393 +msgid "Other" +msgstr "Supplémentaires" + +# @ dbem +#: admin/em-options.php:387 +msgid "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter." +msgstr "De nombreux thèmes affichent des informations supplémentaires sur les pages d'articles, telles que 'publié par' ou 'publié le', qui pourraient ne pas être souhaitables. En général, les modèles de page contiennent moins de bruit de fond. " + +# @ dbem +#: admin/em-options.php:388 +#, php-format +msgid "Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named single-%s.php as shown on the wordpress codex, and leave this set to Posts." +msgstr "Méfiez-vous, certains thèmes ne fonctionneront pas avec cette option. Dans ce cas (ou si vous souhaitez effectuer vos propres changements), vous pouvez créer un fichier appelé single-%s.php, cf. le Codex Wordpress, et laisser ceci à Articles." + +# @ default +#: admin/em-options.php:389 +#, php-format +msgid "By using formats, you can control how your %s are displayed from within the Events Manager Formats tab above without having to edit your theme files." +msgstr "Vous pouvez contrôler comment vos %s s'affichent, en définissant des formats via l'onglet Formats de Events Manager, ci-dessus, sans avoir à éditer les fichiers de votre thème." + +# @ dbem +#: admin/em-options.php:392 +msgid "Permalink Slugs" +msgstr "Identifiants de Permaliens" + +# @ dbem +#: admin/em-options.php:394 +msgid "You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings." +msgstr "Vous pouvez changer la structure des permaliens pour vos évènements, emplacements, catégories et mots-clef. Méfiez-vous : il s'agit là des adresses de pages, aussi si vous modifiez ceci sur un site déjà en ligne, vous devrez mettre en place des redirections afin de conserver les classements des moteurs de recherche." + +# @ dbem +#: admin/em-options.php:397 +#: admin/em-options.php:399 +#: admin/em-options.php:402 +#: admin/em-options.php:405 +#, php-format +msgid "e.g. %s - you can use / seperators too" +msgstr "par ex. %s - vous pouvez également utiliser des séparateurs /" + +# @ dbem +# @ default +#: admin/em-options.php:405 +#: admin/em-options.php:793 +#: em-posts.php:29 +#: em-posts.php:32 +msgid "Event Tags" +msgstr "Mots-clef" + +# @ dbem +#: admin/em-options.php:414 +#: admin/em-options.php:577 +#: admin/em-options.php:825 +#, php-format +msgid "%s Pages" +msgstr "Pages %s" + +# @ dbem +#: admin/em-options.php:418 +#: admin/em-options.php:581 +#, php-format +msgid "Display %s as" +msgstr "Afficher %s en tant que" + +# @ default +#: admin/em-options.php:418 +#: admin/em-options.php:581 +msgid "Posts" +msgstr "" + +# @ dbem +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:582 +#: admin/em-options.php:649 +#: admin/em-options.php:721 +#: admin/em-options.php:797 +msgid "Override with Formats?" +msgstr "Redéfinir via les Formats ?" + +# @ dbem +#: admin/em-options.php:427 +#: admin/em-options.php:590 +#, php-format +msgid "%s List/Archives" +msgstr "Liste / Archives d'%s" + +# @ dbem +#: admin/em-options.php:435 +#: admin/em-options.php:594 +#: admin/em-options.php:707 +#, php-format +msgid "[No %s Page]" +msgstr "[Aucune Page %s]" + +# @ dbem +#: admin/em-options.php:440 +msgid "This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags." +msgstr "Cette option vous permet de sélectionner une page en tant que page d'évènements. Si vous ne sélectionnez pas de page d'évènements, vous pourrez afficher une liste d'évènements via les archives d'évènements, ou utiliser les minicodes appropriés et/ou les mots-clef." + +# @ dbem +#: admin/em-options.php:447 +msgid "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Certains thèmes WordPress ne suivent pas les règles de l'art dans la génération des menus, si bien que la réécriture automatique des titres peut poser des soucis. Si vos menus ne fonctionnent pas correctement à la page d'évènements, essayez de positionner ceci à Oui en fournissant le format de titre en HTML, ci-dessous." + +# @ dbem +#: admin/em-options.php:454 +#: admin/em-options.php:604 +msgid "Enable Archives?" +msgstr "Activer les Archives ?" + +# @ dbem +#: admin/em-options.php:454 +#: admin/em-options.php:604 +msgid "Allow WordPress post-style archives." +msgstr "Permettre les archives WordPress post-style." + +# @ dbem +#: admin/em-options.php:459 +msgid "Default event archive ordering" +msgstr "Ordre par défaut des archives d'évènements" + +# @ dbem +#: admin/em-options.php:464 +msgid "Order by start date, start time" +msgstr "Date de début, heure de début" + +# @ dbem +#: admin/em-options.php:465 +msgid "Order by name" +msgstr "Nom" + +# @ dbem +#: admin/em-options.php:496 +#: admin/em-options.php:645 +#: admin/em-options.php:717 +msgid "General settings" +msgstr "Paramètres généraux" + +# @ dbem +#: admin/em-options.php:502 +#: admin/em-options.php:650 +msgid "Include in WordPress Searches?" +msgstr "Inclure dans les Recherches WordPress ?" + +# @ dbem +#: admin/em-options.php:502 +#: admin/em-options.php:650 +#, php-format +msgid "Allow %s to appear in the built-in search results." +msgstr "Permettre d'afficher %s dans les résultats de recherche." + +# @ dbem +#: admin/em-options.php:506 +#: admin/em-options.php:654 +#: admin/em-options.php:744 +#, php-format +msgid "Default %s list options" +msgstr "Options par défaut pour les listes de %s" + +# @ dbem +#: admin/em-options.php:507 +#: admin/em-options.php:655 +#: admin/em-options.php:745 +msgid "These can be overriden when using shortcode or template tags." +msgstr "Ceci peut être redéfini au travers de minicodes ou de mots-clef." + +# @ dbem +#: admin/em-options.php:595 +#: admin/em-options.php:708 +#: admin/em-options.php:832 +#: admin/em-options.php:833 +#: admin/em-options.php:834 +#: admin/em-options.php:835 +#, php-format +msgid "%s page" +msgstr "page %s" + +# @ dbem +#: admin/em-options.php:595 +#, php-format +msgid "This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags." +msgstr "Cette option vous permet de choisir quelle page utiliser en tant que page %s. Si vous n'en sélectionnez pas, activez les archives ou utilisez les mini-codes appropriés et/ou les mots-clef." + +# @ dbem +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, php-format +msgid "Show %s page in lists?" +msgstr "Afficher la page %s dans les listes ?" + +# @ dbem +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, php-format +msgid "Check this option if you want the %s page to appear together with other pages in pages lists." +msgstr "Sélectionnez cette option si vous voulez que la page des %s apparaisse au milieu des autres pages dans les listes de pages WP." + +# @ dbem +#: admin/em-options.php:609 +#: admin/em-options.php:724 +#: admin/em-options.php:800 +msgid "Default archive ordering" +msgstr "Ordre par défaut des archives" + +# @ dbem +#: admin/em-options.php:614 +#: admin/em-options.php:615 +#: admin/em-options.php:616 +#: admin/em-options.php:664 +#: admin/em-options.php:665 +#: admin/em-options.php:666 +#: admin/em-options.php:754 +#: admin/em-options.php:755 +#: admin/em-options.php:756 +#, php-format +msgid "Order by %s" +msgstr "%s" + +# @ dbem +#: admin/em-options.php:659 +#: admin/em-options.php:749 +msgid "Default list ordering" +msgstr "Ordre par défaut des listes" + +# @ dbem +#: admin/em-options.php:693 +#: admin/em-options.php:783 +msgid "List Limits" +msgstr "Limites de Listes" + +# @ dbem +#: admin/em-options.php:693 +#: admin/em-options.php:783 +#, php-format +msgid "This will control how many %s are shown on one list by default." +msgstr "Ceci contrôle le nombre des %s devant être affichés dans une liste, par défaut." + +# @ dbem +#: admin/em-options.php:708 +#, php-format +msgid "This option allows you to select which page to use as the %s page." +msgstr "Cette option vous permet de sélectionner quelle page utiliser en tant que page pour les %s." + +# @ dbem +#: admin/em-options.php:721 +msgid "Setting this to yes will make categories display as a page rather than an archive." +msgstr "Sélectionnez Oui pour afficher les catégories en tant que page plutôt qu'en tant qu'archive." + +# @ dbem +#: admin/em-options.php:797 +msgid "tags" +msgstr "mots-clef" + +# @ default +#: admin/em-options.php:827 +msgid "These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated." +msgstr "" + +# @ dbem +#: admin/em-options.php:831 +#: classes/em-event-posts-admin.php:117 +#: classes/em-event-posts-admin.php:233 +msgid "None" +msgstr "Aucun" + +# @ dbem +#: admin/em-options.php:832 +msgid "Edit events" +msgstr "Éditer les évènements" + +# @ dbem +#: admin/em-options.php:833 +msgid "Edit locations" +msgstr "Éditer les emplacements" + +# @ dbem +#: admin/em-options.php:834 +msgid "Manage bookings" +msgstr "Gérer les réservations" + +# @ dbem +#: admin/em-options.php:835 +msgid "My bookings" +msgstr "Mes réservations" + +# @ dbem +#: admin/em-options.php:835 +msgid "Users can view their bookings for other events on this page." +msgstr "Les utilisateurs peuvent visualiser leurs réservations à cette page." + +# @ dbem +#: admin/em-options.php:869 +msgid "Search Form Options" +msgstr "Options du Formulaire de Recherche" + +# @ dbem +#: admin/em-options.php:873 +msgid "Show text search?" +msgstr "Afficher la recherche par mots-clef ?" + +# @ dbem +#: admin/em-options.php:874 +msgid "Text search label" +msgstr "Étiquette du champ de recherche" + +# @ dbem +#: admin/em-options.php:874 +msgid "Appears within the input box." +msgstr "Apparait dans le champ de saisie pour la recherche par mots-clef." + +# @ dbem +#: admin/em-options.php:875 +msgid "Show date range?" +msgstr "Afficher une plage de dates ?" + +# @ dbem +#: admin/em-options.php:876 +msgid "Show categories?" +msgstr "Afficher les catégories ?" + +# @ dbem +#: admin/em-options.php:877 +msgid "Categories label" +msgstr "Étiquette des catégories" + +# @ dbem +#: admin/em-options.php:877 +#: admin/em-options.php:879 +#: admin/em-options.php:881 +#: admin/em-options.php:883 +#: admin/em-options.php:885 +msgid "Appears as the first default search option." +msgstr "Apparait en tant qu'option de recherche par défaut" + +# @ dbem +#: admin/em-options.php:878 +msgid "Show countries?" +msgstr "Afficher les pays ?" + +# @ dbem +#: admin/em-options.php:879 +msgid "All countries text" +msgstr "Texte désignant 'tous les pays'" + +# @ dbem +#: admin/em-options.php:880 +msgid "Show regions?" +msgstr "Afficher les régions ?" + +# @ dbem +#: admin/em-options.php:881 +msgid "All regions text" +msgstr "Texte désignant 'toutes les régions'" + +# @ dbem +#: admin/em-options.php:882 +msgid "Show states?" +msgstr "Afficher les états / départements ?" + +# @ dbem +#: admin/em-options.php:883 +msgid "All states text" +msgstr "Texte désignant 'tous les états / départements'" + +# @ dbem +#: admin/em-options.php:884 +msgid "Show towns/cities?" +msgstr "Afficher les villes / cités ?" + +# @ dbem +#: admin/em-options.php:885 +msgid "All towns/cities text" +msgstr "Texte désignant 'toutes les villes / cités'" + +# @ dbem +#: admin/em-options.php:893 +msgid "Date/Time formats" +msgstr "Formats Date / Heure" + +# @ dbem +#: admin/em-options.php:895 +#, php-format +msgid "Date and Time formats follow the WordPress time formatting conventions" +msgstr "Les formats de date et d'heure suivent les conventions pour le formatage des heures WordPress" + +# @ dbem +#: admin/em-options.php:898 +msgid "Date Format" +msgstr "Format des dates" + +# @ default +#: admin/em-options.php:898 +#: admin/em-options.php:900 +#, php-format +msgid "For use with the %s placeholder" +msgstr "" + +# @ dbem +#: admin/em-options.php:899 +msgid "Date Seperator" +msgstr "Séparateur de Dates" + +# @ dbem +#: admin/em-options.php:899 +#: admin/em-options.php:901 +#, php-format +msgid "For when start/end %s are present, this will seperate the two (include spaces here if necessary)." +msgstr "Lorsque deux dates sont précisées, pour le début et la fin, ceci séparera les deux (inclure des espaces si nécessaire)." + +# @ dbem +#: admin/em-options.php:899 +msgid "dates" +msgstr "dates" + +# @ dbem +#: admin/em-options.php:900 +msgid "Time Format" +msgstr "Format des heures" + +# @ dbem +#: admin/em-options.php:901 +msgid "Time Seperator" +msgstr "Séparateur d'Heures" + +# @ dbem +#: admin/em-options.php:901 +msgid "times" +msgstr "heures" + +# @ dbem +#: admin/em-options.php:918 +msgid "Full calendar events/day limit" +msgstr "Évènements par jour dans le grand calendrier" + +# @ dbem +#: admin/em-options.php:918 +msgid "To reduce the clutter on your calendar, you can add a limit to events displayed in one day on the calendar." +msgstr "Afin de réduire le bruit dans votre calendrier, vous pouvez limiter le nombre d'évènements affichés dans un jour de votre calendrier." + +# @ dbem +#: admin/em-options.php:989 +msgid "Tags format" +msgstr "Format de Mots-Clef" + +# @ dbem +#: admin/em-options.php:992 +msgid "Tag" +msgstr "Mot-clef" + +# @ dbem +#: admin/em-options.php:994 +#: admin/em-options.php:995 +msgid "tag" +msgstr "mot-clef" + +# @ dbem +#: admin/em-options.php:994 +msgid "The format of a single tag page title." +msgstr "Le format du titre d'une page pour un seul mot-clef." + +# @ dbem +#: admin/em-options.php:995 +msgid "The format of a single tag page." +msgstr "Le format d'une page pour un seul mot-clef." + +# @ dbem +#: admin/em-options.php:999 +msgid "The format of the events the list inserted in the tag page through the #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS element." +msgstr "Le format d'une liste d'évènements insérée à la page des emplacements via les éléments #_TAGNEXTEVENTS, #_TAGNEXTEVENTS et #_TAGALLEVENTS." + +# @ dbem +#: admin/em-options.php:1000 +msgid "The message to be displayed in the list generated by #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS when no events are available." +msgstr "Le message à afficher dans une liste générée par les éléments #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS lorsque aucun évènement n'est affiché." + +# @ dbem +#: admin/em-options.php:1067 +msgid "Pricing" +msgstr "Prix" + +# @ dbem +#: admin/em-options.php:1083 +msgid "Booking Form" +msgstr "Formulaire de Réservation" + +# @ dbem +#: admin/em-options.php:1108 +msgid "Ticket" +msgstr "Billet" + +# @ dbem +#: admin/em-options.php:1135 +msgid "The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user." +msgstr "L'option ci-dessous vous permet de désactiver les comptes utilisateur et d'assigner toutes les réservations à un utilisateur parent, tout en conservant les informations individuelles à chaque réservation. Lorsque ce mode est activé, les informations supplémentaires de réservation à propos de la personne sont stockées à côté de sa réservation, au lieu d'être rattachées à son compte utilisateur WordPress." + +# @ dbem +#: admin/em-options.php:1145 +msgid "Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself." +msgstr "Choisissez un utilisateur parent auquel les réservations seront attribuées. Ceux qui effectueront leurs réservations ne seront pas au courant et ne pourront pas accéder aux détails de cet utilisateur. Ceci devrait être un compte de niveau Abonné que vous n'utilisez pas vous-même." + +# @ dbem +#: admin/em-options.php:1169 +msgid "Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event." +msgstr "Sélectionnez cette option si vous ne voulez pas des e-mails envoyés lors d'une réservation, lorsqu'un utilisateur effectue une réservation anonyme." + +# @ dbem +#: admin/em-options.php:1217 +msgid "Event Submitted" +msgstr "Évènement Soumis" + +# @ dbem +#: admin/em-options.php:1218 +msgid "An email will be sent to the an administrator of your choice when an event is submitted and pending approval." +msgstr "Un e-mail sera envoyé à l'administrateur de votre choix lorsqu'un évènement est soumis et en attente d'approbation." + +# @ dbem +#: admin/em-options.php:1220 +msgid "Administrator Email" +msgstr "E-mail Administrateur" + +# @ dbem +#: admin/em-options.php:1220 +msgid "If left blank, no email will be sent. Seperate emails with commas for more than one email." +msgstr "Si laissé vide, aucun e-mail ne sera envoyé. Séparer plusieurs e-mails avec des virgules." + +# @ dbem +#: admin/em-options.php:1272 +msgid "Event Submission Forms" +msgstr "Formulaire de Soumission d’Évènement" + +# @ dbem +#: admin/em-options.php:1276 +#, php-format +msgid "You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below." +msgstr "Vous pouvez permettre aux utilisateurs de soumettre publiquement des évènements sur votre blog en utilisant le minicode %s, et autoriser la soumission anonyme d'évènements." + +# @ dbem +#: admin/em-options.php:1279 +msgid "Use Visual Editor?" +msgstr "Utiliser l'Éditeur Visuel ?" + +# @ dbem +#: admin/em-options.php:1279 +msgid "Users can now use the WordPress editor for easy HTML entry in the submission form." +msgstr "Les utilisateurs peuvent maintenant utiliser l'éditeur WordPress pour ajouter de l'HTML dans le formulaire de soumission." + +# @ dbem +#: admin/em-options.php:1280 +msgid "Show form again?" +msgstr "Afficher à nouveau le formulaire ?" + +# @ dbem +#: admin/em-options.php:1280 +msgid "When a user submits their event, you can display a new event form again." +msgstr "Lorsqu'un utilisateur soumet son évènement, vous pouvez réafficher le formulaire après soumission de l'évènement." + +# @ dbem +#: admin/em-options.php:1281 +msgid "Customize the message your user sees when they submitted their event." +msgstr "Modifiez le message que verront vos utilisateurs lorsqu'ils soumettent leurs évènements." + +# @ dbem +#: admin/em-options.php:1284 +msgid "Anonymous event submissions" +msgstr "Soumission Anonyme d’Évènements" + +# @ dbem +#: admin/em-options.php:1288 +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting." +msgstr "Les évènements doivent avoir un propriétaire. Afin de permettre aux évènements d'être soumis de façon anonyme, vous devez spécifier un utilisateur particulier. Nous vous recommandons de créer un compte abonné \"Anonyme\" avec un excellent mot de passe et de l'utiliser pour cela. Les visiteurs auront les mêmes droits que ce compte, lors de la soumission de l'évènement." + +# @ dbem +#: admin/em-options.php:1305 +msgid "Image Sizes" +msgstr "Taille des Images" + +# @ dbem +#: admin/em-options.php:1331 +msgid "Send HTML Emails?" +msgstr "Envoyer des E-mails en HTML ?" + +# @ dbem +#: admin/em-options.php:1331 +msgid "If set to yes, your emails will be sent in HTML format, otherwise plaintext." +msgstr "Si activé, vos e-mails seront envoyés au format HTML, autrement en texte brut." + +# @ dbem +#: admin/em-options.php:1364 +#: admin/em-options.php:1374 +#: admin/em-options.php:1382 +#: admin/em-options.php:1393 +#, php-format +msgid "%s Capabilities" +msgstr "Capacités %s" + +# @ dbem +#: admin/em-options.php:1366 +#: admin/em-options.php:1376 +#: admin/em-options.php:1384 +#, php-format +msgid "Users can publish %s and skip any admin approval" +msgstr "Peut publier des %s sans nécessiter l'approbation d'un admin" + +# @ dbem +#: admin/em-options.php:1367 +#: admin/em-options.php:1377 +#: admin/em-options.php:1385 +#, php-format +msgid "User can delete other users %s" +msgstr "Peut effacer les %s des autres utilisateurs" + +# @ dbem +#: admin/em-options.php:1368 +#: admin/em-options.php:1378 +#: admin/em-options.php:1386 +#, php-format +msgid "User can edit other users %s" +msgstr "Peut éditer les %s des autres utilisateurs" + +# @ dbem +#: admin/em-options.php:1369 +#: admin/em-options.php:1379 +#: admin/em-options.php:1387 +#, php-format +msgid "User can delete their own %s" +msgstr "Peut effacer ses propres %s" + +# @ dbem +#: admin/em-options.php:1370 +#: admin/em-options.php:1380 +#: admin/em-options.php:1388 +#, php-format +msgid "User can create and edit %s" +msgstr "Peut créer et éditer des %s" + +# @ dbem +#: admin/em-options.php:1371 +#: admin/em-options.php:1389 +#, php-format +msgid "User can view private %s" +msgstr "Peut visualiser des %s privés" + +# @ dbem +#: admin/em-options.php:1374 +#: em-posts.php:165 +msgid "Recurring Event" +msgstr "Évènement Récurrent" + +# @ dbem +#: admin/em-options.php:1376 +#: admin/em-options.php:1377 +#: admin/em-options.php:1378 +#: admin/em-options.php:1379 +#: admin/em-options.php:1380 +#: events-manager.php:303 +#: events-manager.php:304 +#: events-manager.php:305 +#: events-manager.php:306 +#: events-manager.php:307 +msgid "recurring events" +msgstr "évènements périodiques" + +# @ dbem +#: admin/em-options.php:1390 +msgid "User can use other user locations for their events." +msgstr "Peut utiliser les emplacements définis par d'autres utilisateurs pour ses propres évènements" + +# @ dbem +#: admin/em-options.php:1395 +#, php-format +msgid "User can delete %s categories and tags." +msgstr "Peut effacer les catégories et les mots-clef des %" + +# @ dbem +#: admin/em-options.php:1396 +#, php-format +msgid "User can edit %s categories and tags." +msgstr "Peut éditer les catégories et les mots-clef des %" + +# @ dbem +#: admin/em-options.php:1400 +msgid "User can upload images along with their events and locations." +msgstr "Peut télécharger des images pour joindre à leurs évènements et leurs emplacements" + +# @ dbem +#: admin/em-options.php:1460 +msgid "Uninstall/Reset" +msgstr "Désinstallation / Remise à Zéro" + +# @ dbem +#: admin/em-options.php:1462 +msgid "Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data." +msgstr "Utilisez les boutons ci-dessous pour désinstaller complètement Events Manager de votre système, ou pour réinitialiser les valeurs par défaut, tout en conservant vos données d'évènements." + +# @ dbem +#: admin/em-options.php:1464 +msgid "Reset" +msgstr "Remettre A Zéro" + +# @ dbem +#: buddypress/bp-em-activity.php:58 +#, php-format +msgid "%s added the event %s to %s." +msgstr "%s a ajouté l'évènement %s à %s." + +# @ dbem +#: buddypress/bp-em-core.php:51 +#, php-format +msgid "Search %s..." +msgstr "Rechercher %s..." + +# @ dbem +#: buddypress/screens/my-events.php:48 +#: em-events.php:151 +msgid "Reschedule Events" +msgstr "Re-planifier les Évènements" + +# @ dbem +#: classes/em-categories-taxonomy.php:35 +#, php-format +msgid "Choose a color for your category. You can access this using the %s placeholder." +msgstr "Choisissez une couleur pour votre catégorie. Vous pourrez accéder à cette donnée en utilisant le marqueur %s." + +# @ dbem +#: classes/em-categories-taxonomy.php:46 +msgid "Choose/Upload Image" +msgstr "Choisir / Télécharger une Image" + +# @ dbem +#: classes/em-categories-taxonomy.php:47 +#, php-format +msgid "Choose an image for your category, which can be displayed using the %s placeholder." +msgstr "Choisir une image pour votre catégorie, qui pourra être affichée en utilisant le marqueur %s." + +# @ dbem +#: classes/em-event-post-admin.php:42 +#, php-format +msgid "If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, detach it." +msgstr "Si vous modifiez les données de cet évènement, celles-ci pourraient être écrasées si vous éditez l'évènement récurrent. Pour rendre cet évènement indépendant, détachez-le." + +# @ dbem +#: classes/em-event-post-admin.php:43 +#, php-format +msgid "To manage the whole set, edit the recurring event template." +msgstr "Pour gérer la série d'évènements, éditez l'évènement récurrent." + +# @ dbem +#: classes/em-event-post-admin.php:83 +msgid "Your event details are incorrect and recurrences cannot be created, please correct these errors first:" +msgstr "Les détails de l'évènement sont incorrects, et les occurrences ne peuvent être créées, veuillez corriger les erreurs suivantes :" + +# @ dbem +#: classes/em-event-post-admin.php:85 +#: classes/em-location-post-admin.php:59 +#, php-format +msgid "Your %s details are incorrect and cannot be published, please correct these errors first:" +msgstr "Les détails pour votre %s sont incorrects, et ne peuvent être publiées, veuillez corriger les erreurs suivantes :" + +# @ dbem +#: classes/em-event-post-admin.php:195 +msgid "Site Categories" +msgstr "Catégories du Site" + +# @ dbem +#: classes/em-event-post-admin.php:352 +msgid "Recurrences" +msgstr "Périodicité" + +# @ default +#: classes/em-event-post.php:94 +#: classes/em-event-post.php:97 +#: classes/em-event-post.php:102 +#: classes/em-event-post.php:113 +#: classes/em-event-post.php:116 +#: classes/em-event-post.php:121 +#, php-format +msgid "View all posts in %s" +msgstr "" + +# @ default +#: classes/em-event-posts-admin.php:66 +msgid "View all categories" +msgstr "" + +# @ default +#: classes/em-event-posts-admin.php:96 +#: classes/em-event-posts-admin.php:215 +msgid "Date and Time" +msgstr "" + +# @ dbem +#: classes/em-event-posts-admin.php:97 +#: classes/em-event-posts-admin.php:216 +msgid "Owner" +msgstr "Propriétaire" + +# @ dbem +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:132 +#: templates/buddypress/my-group-events.php:126 +#: templates/tables/events.php:132 +msgid "Edit Recurring Events" +msgstr "Éditer les Évènements Périodiques" + +# @ dbem +#: classes/em-event-posts-admin.php:150 +msgid "Detach" +msgstr "Détacher" + +# @ dbem +#: classes/em-event-posts-admin.php:163 +#, php-format +msgid "Duplicate %s" +msgstr "Dupliquer cet %s" + +# @ dbem +#: classes/em-event-posts-admin.php:163 +msgid "Duplicate" +msgstr "Dupliquer" + +# @ dbem +#: classes/em-event-posts-admin.php:187 +#, php-format +msgid "Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the events page." +msgstr "Toute modification à ces évènements impliquera la suppression de toute les occurrences puis leur re-création, si bien que les réservations déjà effectuées seront effacées ! Vous pouvez modifier des occurrences individuellement, en les détachant de la série périodique, depuis la page des évènements." + +# @ default +#: classes/em-event.php:428 +msgid "Event name" +msgstr "" + +# @ dbem +#: classes/em-event.php:464 +msgid "Since the event is repeated, you must specify an event end date greater than the start date." +msgstr "Puisque l'évènement est répétitif, vous devez préciser une date de fin d'évènement postérieure à la date de début." + +# @ dbem +# @ default +#: classes/em-event.php:546 +#: classes/em-event.php:548 +msgid "There were some errors saving your location." +msgstr "Des erreurs se sont produites lors de la sauvegarde de votre emplacement." + +# @ default +#: classes/em-event.php:546 +#, php-format +msgid "It will not be displayed on the website listings, to correct this you must edit your location directly." +msgstr "" + +# @ dbem +#: classes/em-event.php:582 +#: classes/em-location.php:332 +#, php-format +msgid "Something went wrong saving your %s to the index table. Please inform a site administrator about this." +msgstr "Quelque chose s'est mal passé lors de la sauvegarde de votre %s dans la table d'index. Veuillez en informer l'administrateur du site." + +# @ dbem +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#, php-format +msgid "Successfully saved %s" +msgstr "Enregistrement de %s : succès" + +# @ dbem +#: classes/em-event.php:594 +#: classes/em-location.php:342 +#, php-format +msgid "Something went wrong updating your %s to the index table. Please inform a site administrator about this." +msgstr "Quelque chose s'est mal passé lors de la mise à jour de votre %s dans la table d'index. Veuillez en informer l'administrateur du site." + +# @ dbem +#: classes/em-event.php:1159 +#: classes/em-location.php:618 +#, php-format +msgid "Edit %s" +msgstr "Éditer %s" + +# @ dbem +#: classes/em-event.php:1384 +msgid "Event detached." +msgstr "Évènement détaché." + +# @ dbem +#: classes/em-event.php:1384 +msgid "Undo" +msgstr "Annuler" + +# @ dbem +#: classes/em-event.php:1388 +msgid "Event could not be detached." +msgstr "L'évènement n'a pas pu être détaché." + +# @ dbem +#: classes/em-event.php:1402 +msgid "Event re-attached to recurrence." +msgstr "Évènement ré-attaché à la série périodique d'évènements." + +# @ dbem +#: classes/em-event.php:1405 +msgid "Event could not be attached." +msgstr "l'évènement n'a pas pu être attaché." + +# @ default +# @ dbem +#: classes/em-location.php:224 +#: widgets/em-locations.php:22 +msgid "Location name" +msgstr "Nom de l'emplacement" + +# @ dbem +#: em-install.php:291 +msgid "A new event has been submitted by #_CONTACTNAME.
                      Name : #_EVENTNAME
                      Date : #_EVENTDATES
                      Time : #_EVENTTIMES
                      Please visit #_EDITEVENTURL to review this event for approval." +msgstr "Un nouvel évènement vient d'être soumis par #_CONTACTNAME.
                      Nom : #_EVENTNAME
                      Date : #_EVENTDATES
                      Heure : #_EVENTTIMES
                      Veuillez visiter la page #_EDITEVENTURL pour valider cet évènement." + +# @ dbem +#: em-install.php:321 +msgid "All Cities/Towns" +msgstr "Toutes les Villes / Cités" + +# @ dbem +#: em-install.php:325 +#: em-install.php:328 +msgid "You have successfully submitted your event, which will be published pending approval." +msgstr "Vous avez soumis votre évènement, celui-ci sera publié après approbation." + +# @ dbem +#: em-install.php:331 +msgid "Submitted Event Awaiting Approval" +msgstr "Évènement en Attente d'Approbation" + +# @ dbem +#: em-install.php:378 +msgid "All Day" +msgstr "Toute la Journée" + +# @ dbem +#: em-install.php:424 +msgid "
                    • No events in this tag
                    • " +msgstr "
                    • Aucun évènement correspondant à ce mot-clef
                    • " + +# @ dbem +#: em-install.php:502 +msgid "New Booking" +msgstr "Nouvelle Réservation" + +# @ default +# @ dbem +#: em-posts.php:30 +#: em-posts.php:33 +msgid "Event Tag" +msgstr "Mot-clef Évènement" + +# @ dbem +#: em-posts.php:34 +msgid "Search Event Tags" +msgstr "Rechercher dans les Mots-Clef" + +# @ dbem +#: em-posts.php:35 +msgid "Popular Event Tags" +msgstr "Mots-Clef Populaires" + +# @ dbem +#: em-posts.php:36 +msgid "All Event Tags" +msgstr "Tous les Mots-Clef" + +# @ dbem +#: em-posts.php:37 +msgid "Parent Event Tags" +msgstr "Mots-Clef Évènement Parent" + +# @ dbem +#: em-posts.php:38 +msgid "Parent Event Tag:" +msgstr "Mot-Clef Évènement Parent" + +# @ dbem +#: em-posts.php:39 +msgid "Edit Event Tag" +msgstr "Éditer le Mot-Clef" + +# @ dbem +#: em-posts.php:40 +msgid "Update Event Tag" +msgstr "Mettre à Jour le Mot-Clef" + +# @ dbem +#: em-posts.php:41 +msgid "Add New Event Tag" +msgstr "Ajouter un Mot-Clef" + +# @ dbem +#: em-posts.php:42 +msgid "New Event Tag Name" +msgstr "Nom du Nouveau Mot-Clef" + +# @ dbem +#: em-posts.php:43 +msgid "Seperate event tags with commas" +msgstr "Séparez les mots-clef des évènements par des virgules" + +# @ dbem +#: em-posts.php:44 +#: em-posts.php:81 +msgid "Add or remove events" +msgstr "Ajouter ou enlever des évènements" + +# @ dbem +#: em-posts.php:45 +msgid "Choose from most used event tags" +msgstr "Choisir à partir des mots-clef les plus utilisés" + +# @ dbem +#: em-posts.php:67 +#: em-posts.php:70 +msgid "Event Category" +msgstr "Catégorie d’Évènement" + +# @ dbem +#: em-posts.php:71 +msgid "Search Event Categories" +msgstr "Rechercher dans les Catégories d’Évènement" + +# @ dbem +#: em-posts.php:72 +msgid "Popular Event Categories" +msgstr "Catégories d’Évènement Populaires" + +# @ dbem +#: em-posts.php:73 +msgid "All Event Categories" +msgstr "Toutes les Catégories d’Évènement" + +# @ dbem +#: em-posts.php:74 +msgid "Parent Event Categories" +msgstr "Catégories d’Évènement Parent" + +# @ dbem +#: em-posts.php:75 +msgid "Parent Event Category:" +msgstr "Catégorie d’Évènement Parent" + +# @ dbem +#: em-posts.php:76 +msgid "Edit Event Category" +msgstr "Éditer la Catégorie d’Évènement" + +# @ dbem +#: em-posts.php:77 +msgid "Update Event Category" +msgstr "Mettre à Jour la Catégorie d’Évènement" + +# @ dbem +#: em-posts.php:78 +msgid "Add New Event Category" +msgstr "Ajouter une Nouvelle Catégorie d’Évènement" + +# @ dbem +#: em-posts.php:79 +msgid "New Event Category Name" +msgstr "Nom de la Nouvelle Catégorie d’Évènement" + +# @ dbem +#: em-posts.php:80 +msgid "Seperate event categories with commas" +msgstr "Séparer les catégories d'évènements par des virgules" + +# @ dbem +#: em-posts.php:82 +msgid "Choose from most used event categories" +msgstr "Choisissez à partir des catégories les plus utilisées" + +# @ dbem +#: em-posts.php:117 +msgid "Display events on your blog." +msgstr "Afficher les évènements sur votre blog." + +# @ dbem +#: em-posts.php:123 +msgid "Add New Event" +msgstr "Ajouter un Nouvel Évènement" + +# @ dbem +#: em-posts.php:126 +msgid "New Event" +msgstr "Nouvel Évènement" + +# @ dbem +# @ default +#: em-posts.php:127 +#: em-posts.php:172 +#: em-posts.php:218 +#: templates/tables/locations.php:60 +msgid "View" +msgstr "Afficher" + +# @ dbem +#: em-posts.php:128 +msgid "View Event" +msgstr "Afficher l'Évènement" + +# @ dbem +#: em-posts.php:130 +msgid "No Events Found" +msgstr "Aucun Évènement Trouvé" + +# @ dbem +#: em-posts.php:131 +msgid "No Events Found in Trash" +msgstr "Aucun Évènement Trouvé dans la Poubelle" + +# @ dbem +#: em-posts.php:132 +msgid "Parent Event" +msgstr "Évènement Parent" + +# @ dbem +#: em-posts.php:161 +#: em-posts.php:164 +#: em-posts.php:166 +msgid "Recurring Events" +msgstr "Évènements Récurrents" + +# @ dbem +#: em-posts.php:162 +msgid "Recurring Events Template" +msgstr "Modèle d'Évènement Périodique" + +# @ dbem +#: em-posts.php:167 +#: em-posts.php:173 +msgid "Add Recurring Event" +msgstr "Ajouter un Évènement Périodique" + +# @ dbem +#: em-posts.php:168 +msgid "Add New Recurring Event" +msgstr "Ajouter un Nouvel Évènement Périodique" + +# @ dbem +#: em-posts.php:170 +msgid "Edit Recurring Event" +msgstr "Éditer l'Évènement Périodique" + +# @ dbem +#: em-posts.php:171 +msgid "New Recurring Event" +msgstr "Nouvel Évènement Périodique" + +# @ dbem +#: em-posts.php:174 +msgid "Search Recurring Events" +msgstr "Rechercher un Évènement Périodique" + +# @ dbem +#: em-posts.php:175 +msgid "No Recurring Events Found" +msgstr "Aucun Évènement Périodique Trouvé" + +# @ dbem +#: em-posts.php:176 +msgid "No Recurring Events Found in Trash" +msgstr "Aucun Évènement Périodique Trouvé dans la Poubelle" + +# @ dbem +#: em-posts.php:177 +msgid "Parent Recurring Event" +msgstr "Évènement Périodique Parent" + +# @ dbem +#: em-posts.php:208 +msgid "Display locations on your blog." +msgstr "Afficher les emplacements sur votre blog." + +# @ dbem +#: em-posts.php:214 +msgid "Add New Location" +msgstr "Ajouter un Nouvel Emplacement" + +# @ dbem +#: em-posts.php:217 +msgid "New Location" +msgstr "Nouvel Emplacement" + +# @ dbem +#: em-posts.php:219 +msgid "View Location" +msgstr "Afficher l'Emplacement" + +# @ dbem +#: em-posts.php:220 +msgid "Search Locations" +msgstr "Rechercher un Emplacement" + +# @ dbem +#: em-posts.php:221 +msgid "No Locations Found" +msgstr "Aucun Emplacement Trouvé" + +# @ dbem +#: em-posts.php:222 +msgid "No Locations Found in Trash" +msgstr "Aucun Emplacement Trouvé dans la Poubelle" + +# @ dbem +#: em-posts.php:223 +msgid "Parent Location" +msgstr "Emplacement Parent" + +# @ dbem +#: em-template-tags.php:296 +msgid "You must log in to view and manage your events." +msgstr "Vous devez vous identifier pour afficher et gérer vos évènements." + +# @ dbem +#: em-template-tags.php:386 +msgid "You must log in to view and manage your locations." +msgstr "Vous devez vous identifier pour afficher et gérer vos emplacements." + +# @ dbem +#: em-template-tags.php:404 +msgid "You must log in to view and manage your bookings." +msgstr "Vous devez vous identifier pour afficher et gérer vos réservations." + +# @ dbem +#: events-manager.php:257 +msgid "Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events." +msgstr "Êtes-vous sûr de vouloir détacher cet évènement ? Cet évènement sera alors indépendant de la série périodique d'évènements." + +# @ dbem +#: events-manager.php:258 +msgid "This cannot be undone." +msgstr "Ceci ne peut être annulé." + +# @ dbem +#: events-manager.php:258 +msgid "All events will be moved to trash." +msgstr "Tous les évènements seront déplacés vers la Poubelle." + +# @ dbem +#: events-manager.php:259 +msgid "Are you sure you want to delete all recurrences of this event?" +msgstr "Êtes-vous sûr de vouloir effacer toutes les occurrences de cet évènement ?" + +# @ dbem +#: events-manager.php:300 +#: events-manager.php:314 +#, php-format +msgid "You cannot read private %s" +msgstr "Vous ne pouvez accéder aux %s privés" + +# @ dbem +#: events-manager.php:315 +#, php-format +msgid "You cannot view others %s" +msgstr "Vous ne pouvez accéder aux %s des autres" + +# @ dbem +#: events-manager.php:321 +msgid "You do not have permission to upload images" +msgstr "Vous ne pouvez télécharger d'images" + +# @ default +#: templates/forms/event/attributes.php:51 +msgid "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "" + +# @ dbem +#: templates/forms/event/group.php:26 +msgid "No groups defined yet." +msgstr "Aucun groupe n'a encore été défini." + +# @ default +#: templates/forms/event/location.php:9 +msgid "This event does not have a physical location." +msgstr "" + +# @ default +#: templates/forms/event/location.php:31 +msgid "No Location" +msgstr "" + +# @ dbem +#: templates/forms/event/recurring-when.php:53 +#: templates/forms/event/when-with-recurring.php:13 +msgid "Recurrences span from " +msgstr "Les occurrences s'étendent depuis " + +# @ dbem +#: templates/forms/event/recurring-when.php:61 +#: templates/forms/event/when-with-recurring.php:23 +msgid "Events start from" +msgstr "Les évènements démarrent le" + +# @ dbem +#: templates/forms/event/recurring-when.php:65 +#: templates/forms/event/when-with-recurring.php:28 +#: templates/forms/event/when.php:20 +msgid "All day" +msgstr "Toute la Journée" + +# @ dbem +#: templates/forms/event/recurring-when.php:68 +#: templates/forms/event/when-with-recurring.php:74 +msgid "Each event lasts" +msgstr "Chaque évènement dure" + +# @ dbem +#: templates/forms/event/recurring-when.php:70 +#: templates/forms/event/when-with-recurring.php:76 +msgid "day(s)" +msgstr "jour(s)" + +# @ dbem +#: templates/forms/event/when-with-recurring.php:11 +msgid "This is a recurring event." +msgstr "Ceci est un évènement périodique." + +# @ dbem +#: templates/forms/event/when-with-recurring.php:14 +#: templates/forms/event/when.php:8 +msgid "From " +msgstr "Du " + +# @ dbem +#: templates/forms/event/when-with-recurring.php:24 +#: templates/forms/event/when.php:16 +msgid "Event starts at" +msgstr "De" + +# @ dbem +#: templates/forms/event-editor.php:164 +msgid "Event Image" +msgstr "Image de l'évènement" + +# @ dbem +#: templates/forms/location-editor.php:47 +msgid "Details about the location." +msgstr "Détails de l'emplacement." + +# @ dbem +#: templates/forms/location-editor.php:52 +msgid "Location Image" +msgstr "Image de l'Emplacement" + +# @ dbem +#: templates/tables/locations.php:74 +msgid "No locations have been inserted yet!" +msgstr "Aucune emplacement n'a encore été ajouté !" + +# @ dbem +#: widgets/em-locations.php:21 +msgid "Event start date/time, location name" +msgstr "Date / heure de début de l'évènement, nom de l'emplacement" + diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-hu_HU.mo b/wp-content/plugins/events-manager/includes/langs/dbem-hu_HU.mo new file mode 100644 index 0000000..c714365 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-hu_HU.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-hu_HU.po b/wp-content/plugins/events-manager/includes/langs/dbem-hu_HU.po new file mode 100644 index 0000000..b15415d --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-hu_HU.po @@ -0,0 +1,4385 @@ +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.0.9\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-06-30 14:49:00+00:00\n" +"PO-Revision-Date: \n" +"Last-Translator: Marcus Sykes \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Hungarian\n" +"X-Poedit-Country: HUNGARY\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: em-template-tags.php:74 +#: events-manager.php:319 +#: admin/em-options.php:303 +#: buddypress/screens/profile.php:27 +#: buddypress/bp-em-core.php:55 +#: buddypress/bp-em-core.php:117 +#: buddypress/bp-em-core.php:128 +#: buddypress/bp-em-notifications.php:44 +#: widgets/em-events.php:13 +#: em-install.php:301 +#: em-install.php:344 +#: em-install.php:381 +#: em-install.php:382 +#: em-install.php:388 +#: em-install.php:408 +#: em-install.php:508 +#: em-actions.php:107 +msgid "Events" +msgstr "Események" + +#: events-manager.php:208 +msgid "You do not have permission to publish %s" +msgstr "Nincs jogosultságod %s publikálni" + +#: events-manager.php:208 +#: events-manager.php:210 +#: events-manager.php:214 +#: events-manager.php:216 +#: events-manager.php:221 +#: admin/em-options.php:355 +#: admin/em-options.php:356 +msgid "events" +msgstr "eseményeket" + +#: events-manager.php:209 +#: events-manager.php:217 +#: events-manager.php:220 +#: events-manager.php:221 +msgid "You do not have permission to edit %s" +msgstr "Nincs jogosultságod %s szerkeszteni" + +#: events-manager.php:209 +#: admin/em-options.php:369 +#: admin/em-options.php:370 +#: admin/em-options.php:371 +#: admin/em-options.php:372 +#: admin/em-options.php:373 +#: classes/em-category.php:100 +msgid "categories" +msgstr "kategoriak" + +#: events-manager.php:210 +#: events-manager.php:211 +msgid "You do not have permission to delete others %s" +msgstr "Nincs jogosultságod mások %s törölni" + +#: events-manager.php:211 +#: events-manager.php:212 +#: events-manager.php:215 +#: events-manager.php:217 +#: events-manager.php:219 +#: admin/em-options.php:344 +#: admin/em-options.php:345 +#: admin/em-options.php:346 +#: admin/em-options.php:347 +#: admin/em-options.php:348 +#: classes/em-location.php:157 +#: classes/em-location.php:199 +msgid "locations" +msgstr "helyszinek" + +#: events-manager.php:212 +#: events-manager.php:214 +msgid "You do not have permission to edit others %s" +msgstr "Nincs jogosultságod mások %s szerkeszteni" + +#: events-manager.php:213 +msgid "You do not have permission to manage others %s" +msgstr "Nincs jogosultságod mások %s menedzselni" + +#: events-manager.php:213 +#: events-manager.php:218 +msgid "bookings" +msgstr "foglalasok" + +#: events-manager.php:215 +#: events-manager.php:216 +msgid "You do not have permission to delete %s" +msgstr "Nincs jogosultságod %s törölni" + +#: events-manager.php:218 +msgid "You do not have permission to manage %s" +msgstr "Nincs jogosultságod %s menedzselni" + +#: events-manager.php:219 +msgid "You cannot to view others %s" +msgstr "Nem nézheted meg mások %s" + +#: events-manager.php:220 +msgid "recurrences" +msgstr "ismétlÅ‘dések" + +#: events-manager.php:322 +#: admin/em-event.php:573 +#: templates/forms/event-editor.php:367 +#: buddypress/bp-em-core.php:179 +#: classes/em-event.php:793 +msgid "Edit" +msgstr "Szerkesztés" + +#: events-manager.php:323 +msgid "Add new" +msgstr "Új hozzáadása" + +#: events-manager.php:324 +#: admin/em-locations.php:41 +#: admin/em-locations.php:52 +#: admin/em-locations.php:55 +#: admin/em-options.php:342 +#: admin/em-options.php:344 +#: admin/em-options.php:345 +#: admin/em-options.php:346 +#: admin/em-options.php:347 +#: admin/em-options.php:348 +#: templates/buddypress/my-locations.php:27 +#: templates/buddypress/my-locations.php:30 +#: em-install.php:348 +#: em-install.php:349 +#: em-actions.php:169 +msgid "Locations" +msgstr "Helyszínek" + +#: events-manager.php:325 +#: admin/em-events.php:163 +#: templates/buddypress/my-events.php:115 +#: em-events.php:130 +msgid "Bookings" +msgstr "Foglalások" + +#: events-manager.php:326 +msgid "Event Categories" +msgstr "Esemény kategóriák" + +#: events-manager.php:326 +#: admin/em-categories.php:57 +#: admin/em-options.php:367 +#: admin/em-options.php:369 +#: admin/em-options.php:370 +#: admin/em-options.php:371 +#: admin/em-options.php:372 +#: admin/em-options.php:373 +#: em-install.php:373 +#: em-install.php:375 +msgid "Categories" +msgstr "Kategóriák" + +#: events-manager.php:327 +msgid "Events Manager Settings" +msgstr "Events Manager beállítások" + +#: events-manager.php:327 +#: events-manager.php:473 +msgid "Settings" +msgstr "Beállítások" + +#: events-manager.php:328 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Segítség az Events Managerhez" + +#: events-manager.php:328 +msgid "Help" +msgstr "Súgó" + +#: events-manager.php:456 +msgid "Add an event" +msgstr "Új esemény létrehozása" + +#: admin/em-docs.php:15 +msgid "Do a search for this string within event name, details and location address." +msgstr "Keresés indítása az események nevei, adatai és címek között." + +#: admin/em-docs.php:16 +msgid "See the events lists limit option on the settings page." +msgstr "Lásd az események listájának limit opcióját a beállítások oldalon." + +#: admin/em-docs.php:17 +#: admin/em-docs.php:23 +msgid "Choose what fields to order your results by. You can supply a single field or multiple comma-seperated fields (e.g. \"start_date,name\")." +msgstr "Válassza ki, milyen mezÅ‘k alapján sorrendezzük az eredményeket. Egy vagy több mezÅ‘t megadhat, vesszÅ‘vel elválasztva (pl.: \"start_date, name\")." + +#: admin/em-docs.php:17 +#: admin/em-docs.php:18 +msgid "See the event lists ordering option on the settings page." +msgstr "Lásd az esemény lista rendezési lehetÅ‘ségét a beállítások oldalon." + +#: admin/em-docs.php:21 +msgid "If set to 1 will only show locations that have at least one event occurring during the scope." +msgstr "Ha 1 akkor csak azok a helyszínek jelennek meg, ahol legalább egy esemény lesz." + +#: admin/em-docs.php:22 +msgid "If set to 1 will only show locations that have no events occurring during the scope." +msgstr "Ha 1 akkor csak azok a helyszínek jelennek meg, ahol nincs esemény." + +#: admin/em-docs.php:25 +msgid "Search for locations in this town (no partial matches, case sensitive)." +msgstr "Keresés helyszínek után ebben a városban (nincs részleges egyezés, kis-és nagybetű érzékeny)." + +#: admin/em-docs.php:25 +#: admin/em-docs.php:26 +#: admin/em-docs.php:27 +#: admin/em-docs.php:28 +#: admin/em-docs.php:29 +msgid "none" +msgstr "egyik sem" + +#: admin/em-docs.php:26 +msgid "Search for locations in this state (no partial matches, case sensitive)." +msgstr "Keresés helyszínek után ebben a megyében (nincs részleges egyezés, kis-és nagybetű érzékeny)." + +#: admin/em-docs.php:27 +msgid "Search for locations in this region (no partial matches, case sensitive)." +msgstr "Keresés helyszínek után ebben a térségben (nincs részleges egyezés, kis-és nagybetű érzékeny)." + +#: admin/em-docs.php:28 +msgid "Search for locations in this country (no partial matches, case sensitive)." +msgstr "Keresés helyszínek után ebben az országban (nincs részleges egyezés, kis-és nagybetű érzékeny)." + +#: admin/em-docs.php:29 +msgid "Search for locations in this postcode (no partial matches, case sensitive)." +msgstr "Keresés helyszínek után az irányítószám alapján (nincs részleges egyezés, kis-és nagybetű érzékeny)." + +#: admin/em-docs.php:32 +msgid "If set to 1 it will display a full calendar that shows event names." +msgstr "Ha 1 akkor egy teljes naptár jelenik meg, ami mutatja az események neveit." + +#: admin/em-docs.php:33 +msgid "If set to 1, will show events that last longer than a day." +msgstr "Ha 1 akkor látszódnak az egy napnál hosszabb események is" + +#: admin/em-docs.php:34 +msgid "Same as for events." +msgstr "Ugyanaz, mint az eseményeknél." + +#: admin/em-docs.php:39 +#, fuzzy +msgid "Limits the amount of values returned to this number." +msgstr "Korlátozza az értékek vissza ezt a számot." + +#: admin/em-docs.php:40 +#, fuzzy +msgid "Choose the time frame of events to show. Accepted values are \"future\", \"past\" or \"all\" events. Additionally you can supply dates (in format of YYYY-MM-DD), either single for events on a specific date or two dates seperated by a comma (e.g. 2010-12-25,2010-12-31) for events ocurring between these dates." +msgstr "Válassza ki a idÅ‘keretet, melyben az események megjelenjenek. Elfogadott értékek \"future\", \"past\" vagy \"all\" eseményt. Ezen kívül tud biztosítani dátumok (a formátuma ÉÉÉÉ-HH-NN), vagy egyedi rendezvények egy adott napon, vagy két dátum vesszÅ‘vel elválasztva (pl. 2010-12-25,2010-12-31) rendezvények ocurring között dátumokat." + +#: admin/em-docs.php:41 +msgid "Indicates the order of the events. Choose between ASC (ascending) and DESC (descending)." +msgstr "Jelzi az események sorrendjét. Válasszon az ASC (növekvÅ‘) és a DESC (csökkenÅ‘) között." + +#: admin/em-docs.php:42 +msgid "Choose what fields to order your results by. You can supply a single field or multiple comma-seperated fields (e.g. \"start_date,name\"). See specific instances (e.g. events, locations, etc.) for field names." +msgstr "Válassza ki, milyen mezÅ‘k alapján sorrendezzük az eredményeket. Egy vagy több mezÅ‘t megadhat, vesszÅ‘vel elválasztva (pl.: \"start_date, name\"). Lásd konkrét mezÅ‘neveket a típusoknál (pl. események, helyszínek, stb)." + +#: admin/em-docs.php:43 +msgid "If you are displaying some information with the shortcode or function (e.g. listing events), you can supply the html and placeholders here." +msgstr "Ha valamilyen információt jelenít meg rövidkóddal vagy egy függvénnyel (pl. események listázása), akkor itt adhatja meg a HTMLt és a placeholdereket." + +#: admin/em-docs.php:43 +msgid "The relevant default format will be taken from the settings page." +msgstr "A vonatkozó alapértelmezett formátum a beállítások oldalról kerül használatra." + +#: admin/em-docs.php:44 +msgid "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the search to events with these id(s)." +msgstr "Adjon megy ez azonosítot vagy vesszÅ‘vel elválasztott azonosítókat (pl.: \"1,2,3\"), hogy korlátozza a keresést ezen azonosítójú esemény(ek)re." + +#: admin/em-docs.php:45 +msgid "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the search to events in these categories." +msgstr "Adjon megy ez azonosítot vagy vesszÅ‘vel elválasztott azonosítókat (pl.: \"1,2,3\"), hogy korlátozza a keresést ezen azonosítójú kategóriá(k)ban lévÅ‘ eseményekre." + +#: admin/em-docs.php:46 +msgid "Supply a single id or comma-seperated ids to limit the search to these locations (or events in these locations)." +msgstr "Adjon megy ez azonosítot vagy vesszÅ‘vel elválasztott azonosítókat (pl.: \"1,2,3\"), hogy korlátozza a keresést ezeken a helyszíneken (vagy eseményeket ezeken a helyszíneken)." + +#: admin/em-docs.php:47 +msgid "For example, if you have ten results, if you set this to 5, only the last 5 results will be returned. Useful for pagination." +msgstr "Például, ha 10 darab találat van és ezt 5-re állítja, akkor az utolsó 5 találat fog látszódni. Hasznos lapozáshoz." + +#: admin/em-docs.php:48 +#, fuzzy +msgid "If set to 1, will show only events that are recurring (i.e. events that are repeated over different dates)." +msgstr "Ha 1, akkor csak azokat eseményeket, amelyek ismétlÅ‘dÅ‘ (azaz esemény, amely megismételni különbözÅ‘ idÅ‘pontokban)." + +#: admin/em-docs.php:49 +#, fuzzy +msgid "If set to 1, will only show recurring event templates. Only useful if you know what you're doing, use recurrence if you want events that are recurrences." +msgstr "Ha 1, akkor csak azt mutatják, visszatérÅ‘ esemény sablonokat. Csak akkor hasznos, ha tudod, mit csinálsz, használja kiújulásának ha szeretné események, amelyek kiújulás." + +#: admin/em-docs.php:50 +#, fuzzy +msgid "If set to a month (1 to 12) only events that start or end during this month/year will be retured. Must be used in conjunction with year and does not work as intended if used with scope." +msgstr "Ha be van állítva egy hónap (1-12) csak a rendezvények kezdete vagy vége ez alatt az év / hónap lesz retured. Kell együtt használják évben, és nem működik megfelelÅ‘en, ha használt hatálya alá." + +#: admin/em-docs.php:51 +#, fuzzy +msgid "If set to a year (e.g. 2010) only events that start or end during this year/month will be returned. Does not work as intended if used with scope." +msgstr "Ha meg egy évben (pl. 2010) csak a rendezvények kezdete vagy vége ez alatt az év / hónap vissza. Nem működik megfelelÅ‘en, ha használt hatálya alá." + +#: admin/em-docs.php:52 +#, fuzzy +msgid "If you supply this as an argument, the returned data will be in an array, no objects (only useful wen using PHP, not shortcodes)" +msgstr "Ha a kínálat ezt az érvet, a visszakapott adatokat egy tömbbe, nem tárgy (csak akkor hasznos, Wen PHP, nem shortcodes)" + +#: admin/em-docs.php:53 +#, fuzzy +msgid "When using a function or shortcode that outputs items (e.g. [events_list] for events, [locations_list] for locations), if the number of items supercede the limit of items to show, setting this to 1 will show page links under the list." +msgstr "Amikor egy funkciót vagy érvényesítÅ‘kód, hogy a kimeneti elem (pl. [events_list] rendezvényekre, [locations_list] a helyszínen), ha az elemek száma supercede határ tételek mutatják, amelyben ez az 1 jelenik meg az oldalon linkeket a listán." + +#: admin/em-docs.php:60 +msgid "Displays the name of the event." +msgstr "Megjeleníti az esemény nevét." + +#: admin/em-docs.php:61 +msgid "Shows the description of the event." +msgstr "Megmutatja az esemény leírását." + +#: admin/em-docs.php:62 +#, fuzzy +msgid "If you added a more tag to your event description, only the content before this tag will show (currently, no read more link is added)." +msgstr "Ha hozzáadott egy további tag a rendezvény leírását, csak a tartalmát, mielÅ‘tt ezt a címkét mutatja (jelenleg nincs tovább link hozzá.)" + +#: admin/em-docs.php:63 +#, fuzzy +msgid "Shows the event corresponding ID number in the database table." +msgstr "Megmutatja megfelelÅ‘ esemény azonosító száma az adatbázis tábla." + +#: admin/em-docs.php:64 +#: admin/em-docs.php:133 +msgid "Shows the event image, if available." +msgstr "Megmutatja az esemény képét, ha van." + +#: admin/em-docs.php:70 +#, fuzzy +msgid "Displays the start time in a 24 hours format (e.g. 16:30)." +msgstr "Megjeleníti a kezdési idÅ‘pontot egy 24 órás formátumban (pl. 16:30)." + +#: admin/em-docs.php:71 +#, fuzzy +msgid "Displays the end time in a 24 hours format (e.g. 18:30)." +msgstr "Megjeleníti a végén idÅ‘t a 24 órás formátumban (pl. 18:30)." + +#: admin/em-docs.php:72 +#, fuzzy +msgid "Displays the start time in a 12 hours format (e.g. 4:30 PM)." +msgstr "Megjeleníti a kezdési idÅ‘pontot a 12 órás formátumban (pl. 04:30)." + +#: admin/em-docs.php:73 +#, fuzzy +msgid "Displays the end time in a 12 hours format (e.g. 6:30 PM)." +msgstr "Megjeleníti a végén idÅ‘t 12 órás formátumban (pl. 06:30)." + +#: admin/em-docs.php:77 +#, fuzzy +msgid "Events Manager allows extremely flexible date formatting by using PHP date syntax format characters along with placeholders." +msgstr "Események Manager segítségével rendkívül rugalmas dátumformázási segítségével PHP szintaxis dátum formátumot karakterek mellett helyÅ‘rzÅ‘k." + +#: admin/em-docs.php:79 +#, fuzzy +msgid "Prepend # or #@ before a valid PHP date syntax format character to show start and end date/time information respectively (e.g. #F will show the starting month name like \"January\", #@h shows the end hour)." +msgstr "Neve elé # vagy #@ elÅ‘tt érvényes PHP date szintaktikai formában karaktert mutat kezdési és befejezési dátum / idÅ‘ adatokat, illetve (pl. #F megmutatja a kezdÅ‘ hónap neve, mint a \"január\", # @ h mutatja a vége óra)." + +#: admin/em-docs.php:80 +msgid "" +"You can also create a date format without prepending # to each character by wrapping a valid php date() format in #{} or #@{} (e.g. #_{d/m/Y}). If there is no end date (or is same as start date), the value is not shown. This is useful if you want to show event end dates only on events that are longer than on day, e.g. #j #M #Y #@_{ \\u\\n" +"\\t\\i\\l j M Y}." +msgstr "" + +#: admin/em-docs.php:85 +#, fuzzy +msgid "Simply prints the event URL. You can use this placeholder to build your own customised links." +msgstr "Egyszerűen kiírja az esemény URL-t. Ezzel az helyÅ‘rzÅ‘t készítsd el a saját személyre szabott linkeket." + +#: admin/em-docs.php:86 +#: admin/em-docs.php:134 +msgid "Shows the event image url, if available." +msgstr "Megmutatja az esemény képének urljét, ha van." + +#: admin/em-docs.php:87 +msgid "Displays the event name with a link to the event page." +msgstr "Megjeleníti a rendezvény nevét egy linkkel az esemény oldalára." + +#: admin/em-docs.php:88 +#, fuzzy +msgid "Inserts a link to the admin or buddypress (if activated) edit event page, only if a user is logged in and is allowed to edit the event." +msgstr "Beszúr egy linket az admin vagy a buddypress (ha aktív) esemény szerkesztése oldalon, ha a felhasználó bejelentkezett, és lehetÅ‘vé tette, hogy módosítsuk az eseményt." + +#: admin/em-docs.php:89 +#, fuzzy +msgid "Inserts a url to the admin or buddypress (if activated) edit event page, only if a user is logged in and is allowed to edit the event." +msgstr "Beszúr egy url az admin vagy buddypress (ha aktív) esemény szerkesztése oldalon, ha a felhasználó bejelentkezett, és lehetÅ‘vé tette, hogy módosítsuk az eseményt." + +#: admin/em-docs.php:93 +#, fuzzy +msgid "Events Manager allows you to create dynamic attributes to your events, which act as extra information fields for your events (e.g. \"Dress Code\"). For more information see our online documentation for more info on attributes." +msgstr "Események Manager lehetÅ‘vé teszi, hogy dinamikus jellemzÅ‘ket az események, amik extra információk mezÅ‘ket az események (pl.: \"Dress Code\"). További információkért lásd az online dokumentációt a További információk a jellemzÅ‘k." + +#: admin/em-docs.php:95 +#, fuzzy +msgid "This key will appear as an option when adding attributes to your event." +msgstr "Ez a gomb jelenik meg, mint lehetÅ‘séget, ha hozzá tulajdonít az esemény." + +#: admin/em-docs.php:96 +#, fuzzy +msgid "This key will appear as an option when adding attributes to your event. The text in the second braces will appear if the attribute is not defined or left blank for that event." +msgstr "Ez a gomb jelenik meg, mint lehetÅ‘séget, ha hozzá tulajdonít az esemény. A szöveg a második zárójelek jelenik meg, ha az attribútum nem határozza meg, vagy üres az eseményre." + +#: admin/em-docs.php:97 +#, fuzzy +msgid "This key will appear as an option when adding attributes to your event. The second braces are optional and will use a select box with these values as input. If no valid value is defined, the first option is used." +msgstr "Ez a gomb jelenik meg, mint lehetÅ‘séget, ha hozzá tulajdonít az esemény. A második zárójelek opcionális, és használja a legördülÅ‘ lista az ezeket az értékeket, mint bemenet. Ha nincs érvényes érték meghatározása, az elsÅ‘ opciót használjuk." + +#: admin/em-docs.php:101 +#, fuzzy +msgid "These placeholders will only show if RSVP is enabled for the given event and in the events manager settings page. Spaces placeholders will default to 0" +msgstr "Ezek a helyÅ‘rzÅ‘ket csak azt mutatják, ha RSVP engedélyezve van az adott eseményt, és az események-beállítások oldalt. Spaces helyÅ‘rzÅ‘ket alapértelmezés 0" + +#: admin/em-docs.php:103 +#, fuzzy +msgid "Adds a booking forms for this event." +msgstr "Hozzáad egy foglalás formáját erre az eseményre." + +#: admin/em-docs.php:104 +#, fuzzy +msgid "Shows available spaces for the event." +msgstr "Mutatja áll terek esetén." + +#: admin/em-docs.php:105 +#, fuzzy +msgid "Shows the amount of currently booked spaces for the event." +msgstr "Megjeleníti a jelenleg foglalt terek esetén." + +#: admin/em-docs.php:106 +#, fuzzy +msgid "Shows the amount of pending spaces for the event." +msgstr "Megjeleníti a függÅ‘ben lévÅ‘ terek esetén." + +#: admin/em-docs.php:107 +#, fuzzy +msgid "Shows the total spaces for the event." +msgstr "Megmutatja az összes terek esetén." + +#: admin/em-docs.php:108 +#, fuzzy +msgid "Shows the list of user avatars attending events." +msgstr "Listáját jeleníti meg a felhasználói avatarok részt rendezvényeken." + +#: admin/em-docs.php:109 +#, fuzzy +msgid "A single button that will appear to logged in users, if they click on it, they apply for a booking. This button will only display if there is one ticket." +msgstr "Egyetlen gomb jelenik meg a bejelentkezett felhasználók, ha kattintson rá, alkalmazzák a foglalás. Ez a gomb csak akkor jelenik meg, ha van egy jegy." + +#: admin/em-docs.php:110 +#, fuzzy +msgid "Shows the url to the admin or buddypress (if activated) bookings management page for this event. Only shown if user is logged in and able to manage bookings." +msgstr "Megmutatja az URL-t az admin, vagy buddypress (ha aktív) foglalások kezelése oldalon erre az eseményre. Csak akkor jelenik meg, ha a felhasználó bejelentkezett, és képes kezelni foglalások." + +#: admin/em-docs.php:111 +#, fuzzy +msgid "Shows a link to the admin or buddypress (if activated) bookings management page for this event. Only shown if user is logged in and able to manage bookings." +msgstr "Megmutatja egy linket az admin vagy a buddypress (ha aktív) foglalások kezelése oldalon erre az eseményre. Csak akkor jelenik meg, ha a felhasználó bejelentkezett, és képes kezelni foglalások." + +#: admin/em-docs.php:115 +#, fuzzy +msgid "The values here are taken from the chosen contact for the specific event, or the default contact in the settings page." +msgstr "Az értékek itt venni a kiválasztott forduljon az adott esemény, vagy az alapértelmezett kapcsolatot a beállítások oldalon." + +#: admin/em-docs.php:117 +#, fuzzy +msgid "Name of the contact person for this event (as shown in the dropdown when adding an event)." +msgstr "Neve a kapcsolattartó személy erre az eseményre (amint azt a legördülÅ‘, amikor hozzá egy eseményt.)" + +#: admin/em-docs.php:118 +msgid "Contact person's username." +msgstr "Kapcsolattartó személy felhasználóneve." + +#: admin/em-docs.php:119 +msgid "E-mail of the contact person for this event." +msgstr "A kapcsolattartó személy e-mail címe." + +#: admin/em-docs.php:120 +#, fuzzy +msgid "Phone number of the contact person for this event. Can be set in the user profile page." +msgstr "Telefonszám a kapcsolattartó személy erre az eseményre. Lehet beállítani a felhasználói profil oldalon." + +#: admin/em-docs.php:121 +msgid "Contact person's avatar." +msgstr "Kapcsolattartó személy avatárja." + +#: admin/em-docs.php:122 +msgid "Contact person's \"Profile\" link. Only works with BuddyPress enabled." +msgstr "Kapcsolattartó személy \"Adatlap\" linkje. Csak akkor működik, ha a BuddyPress engedélyezve van." + +#: admin/em-docs.php:123 +msgid "Contact person's profile url. Only works with BuddyPress enabled." +msgstr "Kapcsolattartó személy adatlapjának URL-je. Csak akkor működik, ha a BuddyPress engedélyezve van." + +#: admin/em-docs.php:124 +#, fuzzy +msgid "Contact person's wordpress user ID." +msgstr "Kapcsolattartó személy wordpress felhasználói azonosítót." + +#: admin/em-docs.php:131 +msgid "Shows the category name of the event." +msgstr "Megmutatja az esemény kategóriájának a nevét." + +#: admin/em-docs.php:132 +msgid "Shows the category ID of the event." +msgstr "Megmutatja az esemény kategória ID-ját." + +#: admin/em-docs.php:135 +#: admin/em-docs.php:151 +msgid "Shows the location description." +msgstr "Megmutatja a helyszín leírását." + +#: admin/em-docs.php:143 +msgid "Displays the location name." +msgstr "Megjeleníti a helyszín nevét." + +#: admin/em-docs.php:144 +msgid "Displays the address." +msgstr "Megjeleníti a címet." + +#: admin/em-docs.php:145 +msgid "Displays the town." +msgstr "Megjeleníti a várost." + +#: admin/em-docs.php:146 +msgid "Displays the state/county." +msgstr "Megjeleníti a megyét." + +#: admin/em-docs.php:147 +msgid "Displays the postcode." +msgstr "Megjeleníti a irányítószámot." + +#: admin/em-docs.php:148 +msgid "Displays the region." +msgstr "Megjeleníti a régiót." + +#: admin/em-docs.php:149 +msgid "Displays the country." +msgstr "Megjeleníti az országot." + +#: admin/em-docs.php:150 +msgid "Displays a google map showing where the event is located (Will not show if maps are disabled in the settings page)" +msgstr "Megjeleníti a google térképet, ahol az esemény található (nem jelenik meg, ha térkép le van tiltva a beállítások oldalon)" + +#: admin/em-docs.php:152 +msgid "If you added a more tag to your location description, only the content before this tag will show (currently, no read more link is added)." +msgstr "Ha hozzáadott egy \"Tovább\" vonalat a helyszín leírásához, akkor csak a vonal feletti rész fog látszódni (jelenleg nincs tovább link hozzá.)" + +#: admin/em-docs.php:153 +msgid "Shows the location image." +msgstr "Megmutatja a helyszín képét." + +#: admin/em-docs.php:154 +msgid "Displays the location ID number." +msgstr "Megjeleníti a helyszín azonosítószámát." + +#: admin/em-docs.php:159 +msgid "Simply prints the location URL. You can use this placeholder to build your own customised links." +msgstr "Egyszerűen kiírja a helyszín URL-jét. Ezzel a placeholderrel készíthet el egy saját személyre szabott linket." + +#: admin/em-docs.php:160 +msgid "Displays the location name with a link to the location page." +msgstr "Megjeleníti a helyszín nevét egy linket a helyszín oldalára." + +#: admin/em-docs.php:164 +#, fuzzy +msgid "You can show lists of other events that are being held at this location. The formatting of the list is the same as a normal events list." +msgstr "Ön tudja mutatni listáját egyéb események kerülnek megrendezésre ezen a helyen. A formázás a lista ugyanaz, mint a normál események listáját." + +#: admin/em-docs.php:166 +msgid "Will show a list of all past events at this location." +msgstr "Kilistázza az összes múltbeli eseményeket ezen a helyszínen." + +#: admin/em-docs.php:167 +msgid "Will show a list of all future events at this location." +msgstr "Kilistázza az összes jövÅ‘beli eseményeket ezen a helyszínen." + +#: admin/em-docs.php:168 +msgid "Will show a list of all events at this location." +msgstr "Kilistázza az összes eseményt ezen a helyszínen." + +#: admin/em-docs.php:174 +#, fuzzy +msgid "When a specific booking is displayed (on screen and on email), you can use these placeholders to show specific information about the booking. For contact details of the contact of this event, see the events placeholders." +msgstr "Amikor egy bizonyos foglalás jelenik meg (a képernyÅ‘n és e-mail), akkor ezeket a helyÅ‘rzÅ‘ket mutatni konkrét információkat a foglalás. Az elérhetÅ‘ségeit a kapcsolat ezen esemény, lásd az eseményeket helyÅ‘rzÅ‘ket." + +#: admin/em-docs.php:176 +msgid "Name of person who made the booking." +msgstr "A foglaló személy neve." + +#: admin/em-docs.php:177 +msgid "Email of person who made the booking." +msgstr "A foglaló személy e-mail címe." + +#: admin/em-docs.php:178 +msgid "Phone number of person who made the booking." +msgstr "A foglaló személy telefonszáma." + +#: admin/em-docs.php:179 +msgid "Number of spaces the person has booked." +msgstr "A foglaló által foglalt helyek száma." + +#: admin/em-docs.php:180 +msgid "Any specific comments made by the person who made the booking." +msgstr "A foglaláshoz fűzött megjegyzés." + +#: admin/em-docs.php:181 +msgid "Name of the ticket booked. Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "A foglalt jegy neve. Hasznos egy-jegy módban, ha több jegy lett foglalva, akkor véletlenül választunk egyet." + +#: admin/em-docs.php:182 +#, fuzzy +msgid "Description of the ticket booked. Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Leírása a jegyet foglalt. Hasznos vonaljegy módban, ha több jegyek foglalt egy véletlen jegyet használ." + +#: admin/em-docs.php:183 +#, fuzzy +msgid "Booked ticket price with currency symbol (e.g. $ 10.00). Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Foglalt jegy ára a deviza jel (pl. $ 10.00). Hasznos vonaljegy módban, ha több jegyek foglalt egy véletlen jegyet használ." + +#: admin/em-docs.php:184 +#, fuzzy +msgid "A list of booked tickets. You can modify this by using template files and modifying templates/emails/bookingtickets.php" +msgstr "A listát a lefoglalt jegyeket. Lehet módosítani ezt a sablont fájlok és módosítása sablonok / e-mail / bookingtickets.php" + +#: admin/em-docs.php:188 +#, fuzzy +msgid "People are able to manage their bookings. Below are some placeholder which automatically provides correctly formatted urls" +msgstr "Az emberek képesek kezelni a foglalásokat. Az alábbiakban néhány betűjele, amely automatikusan biztosítja a megfelelÅ‘ URL-eket formázott" + +#: admin/em-docs.php:190 +#, fuzzy +msgid "URL to page showing that users booked events." +msgstr "URL oldalt mutatja, hogy a felhasználók foglalt eseményeket." + +#: admin/em-help.php:15 +#, fuzzy +msgid "Placeholders for customizing event pages" +msgstr "HelyÅ‘rzÅ‘ket testreszabási rendezvény oldalak" + +#: admin/em-help.php:16 +#, fuzzy +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "A beállítások oldalon , megtalálod a különbözÅ‘ szövegdobozok, ahol lehet szerkeszteni, hogy amennyiben információk néz ki, mint az esemény és a helyszín listáját. A helyÅ‘rzÅ‘ket alábbi megadhatja, milyen információkat kell megjeleníteni." + +#: admin/em-help.php:17 +#: admin/em-options.php:58 +msgid "Event Related Placeholders" +msgstr "Eseményekkel kapcsolatos placeholderek" + +#: admin/em-help.php:19 +#: admin/em-options.php:61 +msgid "Category Related Placeholders" +msgstr "Kategóriákkal kapcsolatos placeholderek" + +#: admin/em-help.php:21 +#: admin/em-options.php:59 +msgid "Location Related Placeholders" +msgstr "Helyszínnel kapcsolatos placeholderek" + +#: admin/em-help.php:23 +#: admin/em-options.php:60 +msgid "Booking Related Placeholders" +msgstr "Foglalással kapcsolatos placeholderek" + +#: admin/em-categories.php:21 +msgid "The category has been added." +msgstr "A kategória hozzá lett adva." + +#: admin/em-categories.php:23 +msgid "The category has been updated." +msgstr "A kategória frissítve lett." + +#: admin/em-categories.php:39 +msgid "Categories Deleted" +msgstr "Törölt kategóriák" + +#: admin/em-categories.php:58 +#: admin/em-locations.php:42 +#: admin/em-events.php:43 +#: templates/buddypress/my-events.php:37 +#: templates/buddypress/my-locations.php:25 +msgid "Add New" +msgstr "Új hozzáadása" + +#: admin/em-categories.php:71 +#: admin/em-categories.php:78 +msgid "ID" +msgstr "ID" + +#: admin/em-categories.php:72 +#: admin/em-categories.php:79 +#: admin/em-locations.php:78 +#: admin/em-locations.php:88 +#: admin/em-events.php:121 +#: admin/em-event.php:291 +#: admin/em-bookings.php:180 +#: admin/em-bookings.php:240 +#: admin/em-people.php:30 +#: templates/buddypress/group-events.php:12 +#: templates/buddypress/my-events.php:73 +#: templates/buddypress/my-group-events.php:12 +#: templates/buddypress/my-locations.php:53 +#: templates/buddypress/my-locations.php:62 +#: templates/placeholders/bookingform.php:98 +#: templates/forms/tickets-form.php:4 +#: classes/em-person.php:60 +msgid "Name" +msgstr "Név" + +#: admin/em-categories.php:102 +msgid "No categories have been inserted yet!" +msgstr "Nem lett még kategória hozzáadva!" + +#: admin/em-categories.php:118 +#: admin/em-locations.php:125 +#: admin/em-event.php:14 +#: admin/em-bookings.php:107 +#: admin/em-bookings.php:163 +#: admin/em-bookings.php:213 +#: admin/em-bookings.php:351 +#: admin/em-people.php:9 +#: templates/templates/event-form.php:16 +#: templates/forms/location-editor.php:7 +#: templates/forms/event-editor.php:6 +msgid "Unauthorized Access" +msgstr "Nem engedélyezett hozzáférés" + +#: admin/em-categories.php:128 +msgid "Edit category" +msgstr "Kategória szerkesztése" + +#: admin/em-categories.php:145 +msgid "Category name" +msgstr "Kategória név" + +#: admin/em-categories.php:149 +msgid "The name of the category" +msgstr "A kategória neve" + +#: admin/em-categories.php:150 +#: admin/em-locations.php:162 +#: admin/em-event.php:297 +msgid "View Slug" +msgstr "KeresÅ‘barát név megtekintése" + +#: admin/em-categories.php:157 +#: admin/em-locations.php:169 +#: admin/em-event.php:304 +msgid "Hide Slug" +msgstr "KeresÅ‘barát név elrejtése" + +#: admin/em-categories.php:166 +#: admin/em-locations.php:178 +msgid "%s Slug" +msgstr "%s keresÅ‘barát neve" + +#: admin/em-categories.php:166 +#: admin/em-event.php:265 +#: admin/em-options.php:375 +#: templates/buddypress/my-events.php:136 +#: classes/em-category.php:90 +#: classes/em-category.php:96 +#: em-actions.php:239 +msgid "Category" +msgstr "Kategória" + +#: admin/em-categories.php:168 +#: admin/em-locations.php:180 +#: admin/em-event.php:315 +msgid "The event slug. If the event slug already exists, a random number will be appended to the end." +msgstr "Ha már létezik ilyen, akkor egy véletlen szám lesz a végére fűzve." + +#: admin/em-categories.php:175 +#: admin/em-locations.php:274 +#: admin/em-event.php:464 +#: templates/templates/event-form.php:326 +#: templates/forms/location-editor.php:95 +#: templates/forms/event-editor.php:221 +msgid "Details" +msgstr "Részletek" + +#: admin/em-categories.php:182 +msgid "Details about the category" +msgstr "Kategória részletei" + +#: admin/em-categories.php:188 +msgid "Category image" +msgstr "Kategória képe" + +#: admin/em-categories.php:194 +msgid "No image uploaded for this category yet" +msgstr "Még nincs feltöltve kép a kategóriához" + +#: admin/em-categories.php:197 +#: admin/em-locations.php:296 +#: admin/em-event.php:486 +#: templates/forms/location-editor.php:112 +msgid "Upload/change picture" +msgstr "Kép feltöltése/változtatása" + +#: admin/em-categories.php:202 +msgid "Update category" +msgstr "Kategória frissítése" + +#: admin/em-locations.php:52 +#: templates/buddypress/my-locations.php:27 +#: em-events.php:130 +msgid "My %s" +msgstr "Saját %s" + +#: admin/em-locations.php:55 +#: templates/buddypress/my-locations.php:30 +msgid "All %s" +msgstr "Összes %s" + +#: admin/em-locations.php:62 +#: admin/em-events.php:78 +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-rejected.php:49 +#: admin/bookings/em-events.php:57 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: templates/buddypress/my-locations.php:37 +msgid "Bulk Actions" +msgstr "Csoportművelet" + +#: admin/em-locations.php:63 +#: admin/em-events.php:79 +#: admin/bookings/em-events.php:58 +#: templates/buddypress/my-locations.php:38 +msgid "Delete selected" +msgstr "Kiválasztott(ak) törlése" + +#: admin/em-locations.php:65 +#: admin/em-events.php:81 +#: admin/bookings/em-events.php:60 +#: templates/buddypress/my-locations.php:40 +msgid "Apply" +msgstr "Alkalmaz" + +#: admin/em-locations.php:79 +#: admin/em-locations.php:89 +#: templates/buddypress/my-locations.php:54 +#: templates/buddypress/my-locations.php:63 +msgid "Address" +msgstr "Cím" + +#: admin/em-locations.php:80 +#: admin/em-locations.php:90 +msgid "Town" +msgstr "Város" + +#: admin/em-locations.php:81 +#: admin/em-locations.php:91 +#: templates/buddypress/my-locations.php:55 +#: templates/buddypress/my-locations.php:64 +msgid "State" +msgstr "Megye" + +#: admin/em-locations.php:82 +#: admin/em-locations.php:92 +#: templates/buddypress/my-locations.php:56 +#: templates/buddypress/my-locations.php:65 +msgid "Country" +msgstr "Ország" + +#: admin/em-locations.php:113 +#: templates/buddypress/my-locations.php:85 +msgid "No venues have been inserted yet!" +msgstr "Nincs még helyszín hozzaádva!" + +#: admin/em-locations.php:125 +msgid "You do not have the rights to manage this location." +msgstr "Nincs joga ezt a helyszínt szerkeszteni!" + +#: admin/em-locations.php:130 +#: templates/forms/location-editor.php:12 +msgid "Add location" +msgstr "Új helyszín hozzaádása" + +#: admin/em-locations.php:133 +#: templates/forms/location-editor.php:15 +msgid "Edit location" +msgstr "Helyszín szerkesztése" + +#: admin/em-locations.php:135 +#: templates/forms/location-editor.php:17 +msgid "required" +msgstr "kötelezÅ‘" + +#: admin/em-locations.php:156 +#: templates/forms/location-editor.php:32 +msgid "Location Name" +msgstr "Helyszín név" + +#: admin/em-locations.php:161 +#: templates/forms/location-editor.php:37 +msgid "The name of the location" +msgstr "A helyszín neve" + +#: admin/em-locations.php:178 +#: admin/em-locations.php:211 +#: admin/em-events.php:123 +#: admin/em-event.php:366 +#: admin/em-bookings.php:135 +#: admin/em-options.php:350 +#: templates/buddypress/group-events.php:13 +#: templates/buddypress/my-events.php:75 +#: templates/buddypress/my-group-events.php:13 +#: templates/forms/location-editor.php:41 +#: classes/em-location.php:142 +#: classes/em-location.php:150 +#: classes/em-location.php:194 +#: classes/em-location.php:196 +#: em-actions.php:169 +msgid "Location" +msgstr "Helyszín" + +#: admin/em-locations.php:187 +msgid "Location Owner" +msgstr "Helyszín tulajdonosa" + +#: admin/em-locations.php:192 +#: admin/em-event.php:165 +msgid "Select..." +msgstr "Válasszon..." + +#: admin/em-locations.php:201 +#: admin/em-event.php:356 +msgid "Coordinates" +msgstr "Koordináták" + +#: admin/em-locations.php:214 +#: templates/forms/location-editor.php:44 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Ha Google Maps-et használsz akkor annál részletesebb a térkép, minél több adatot adsz meg. Ha a cím nem található, kérlek próbáld ki a maps.google.com oldalon úgy, hogy a lenti mezÅ‘k tartalmát egymás mellé írod vesszÅ‘vel elválasztva." + +#: admin/em-locations.php:218 +#: admin/em-event.php:403 +#: templates/templates/event-form.php:267 +#: templates/forms/location-editor.php:48 +msgid "Address:" +msgstr "Cím:" + +#: admin/em-locations.php:224 +#: admin/em-event.php:409 +#: templates/templates/event-form.php:273 +#: templates/forms/location-editor.php:54 +msgid "City/Town:" +msgstr "Város:" + +#: admin/em-locations.php:230 +#: admin/em-event.php:416 +#: templates/templates/event-form.php:280 +#: templates/forms/location-editor.php:60 +msgid "State/County:" +msgstr "Megye:" + +#: admin/em-locations.php:236 +#: admin/em-event.php:423 +#: templates/templates/event-form.php:287 +#: templates/forms/location-editor.php:66 +msgid "Postcode:" +msgstr "Irányítószám:" + +#: admin/em-locations.php:242 +#: admin/em-event.php:429 +#: templates/templates/event-form.php:293 +msgid "Region:" +msgstr "Régió:" + +#: admin/em-locations.php:249 +#: admin/em-event.php:436 +#: templates/templates/event-form.php:300 +#: templates/forms/location-editor.php:72 +msgid "Country:" +msgstr "Ország:" + +#: admin/em-locations.php:252 +#: admin/em-event.php:439 +#: templates/templates/event-form.php:303 +#: templates/forms/location-editor.php:75 +msgid "none selected" +msgstr "nincs kiválasztva" + +#: admin/em-locations.php:262 +#: admin/em-event.php:453 +#: templates/templates/event-form.php:316 +#: templates/forms/location-editor.php:85 +#: templates/forms/event-editor.php:214 +msgid "Location not found" +msgstr "A helyszín nem található" + +#: admin/em-locations.php:281 +#: templates/forms/location-editor.php:99 +msgid "Details about the location" +msgstr "Részletek a helyszínrÅ‘l" + +#: admin/em-locations.php:287 +#: templates/forms/location-editor.php:103 +msgid "Location image" +msgstr "Kép a helyszínrÅ‘l" + +#: admin/em-locations.php:293 +#: templates/forms/location-editor.php:109 +msgid "No image uploaded for this location yet" +msgstr "Még nincs feltöltve kép a helyszínhez." + +#: admin/em-locations.php:304 +#: templates/forms/location-editor.php:115 +msgid "Update location" +msgstr "Helyszín frissítése" + +#: admin/em-events.php:47 +#: admin/bookings/em-events.php:13 +#: em-functions.php:141 +msgid "Past events" +msgstr "Múltbeli események" + +#: admin/em-events.php:48 +#: admin/bookings/em-events.php:14 +#: em-functions.php:139 +msgid "All events" +msgstr "Összes esemény" + +#: admin/em-events.php:49 +#: admin/bookings/em-events.php:15 +#: em-functions.php:140 +msgid "Future events" +msgstr "JövÅ‘beli események" + +#: admin/em-events.php:63 +#: admin/bookings/em-events.php:51 +msgid "Total" +msgstr "Összes" + +#: admin/em-events.php:65 +#: classes/em-event.php:208 +#: classes/em-booking.php:97 +msgid "Approved" +msgstr "Elfogadott" + +#: admin/em-events.php:66 +#: admin/em-events.php:166 +#: admin/bookings/em-events.php:136 +#: templates/buddypress/my-events.php:41 +#: templates/buddypress/my-events.php:118 +#: classes/em-event.php:207 +#: classes/em-booking.php:96 +msgid "Pending" +msgstr "FüggÅ‘ben" + +#: admin/em-events.php:70 +#: admin/em-events.php:72 +#: templates/templates/events-search.php:10 +#: templates/buddypress/my-events.php:46 +#: templates/buddypress/my-events.php:48 +msgid "Search Events" +msgstr "Események keresése" + +#: admin/em-events.php:92 +#: admin/bookings/em-events.php:72 +msgid "Filter" +msgstr "SzürÅ‘" + +#: admin/em-events.php:111 +#: admin/bookings/em-events.php:91 +#: templates/buddypress/my-events.php:63 +msgid "no events" +msgstr "nincs esemény" + +#: admin/em-events.php:124 +#: admin/bookings/em-events.php:102 +#: templates/buddypress/group-events.php:14 +#: templates/buddypress/my-events.php:76 +#: templates/buddypress/my-group-events.php:14 +msgid "Date and time" +msgstr "IdÅ‘pont" + +#: admin/em-events.php:164 +#: admin/em-people.php:48 +#: templates/buddypress/my-events.php:116 +msgid "Booked" +msgstr "Lefoglalt" + +#: admin/em-events.php:171 +#: admin/em-events.php:203 +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-rejected.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/em-event.php:575 +#: templates/buddypress/my-events.php:124 +#: templates/buddypress/my-events.php:167 +#: templates/buddypress/my-events.php:169 +#: templates/forms/event-editor.php:369 +msgid "Delete" +msgstr "Töröl" + +#: admin/em-events.php:173 +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +msgid "Approve" +msgstr "Elfogad" + +#: admin/em-events.php:178 +#: templates/buddypress/my-events.php:129 +msgid "Duplicate this event" +msgstr "Esemény duplikálása" + +#: admin/em-events.php:198 +#: templates/buddypress/my-events.php:162 +#, fuzzy +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "FIGYELEM! Ön törli az összes kiújulás az az esemény, beleértve a foglalás történelem kapcsolatos Mindenesetre ebben a megismétlÅ‘dését. Annak érdekében, hogy foglalás információkért látogassa meg a vonatkozó egyszeri esemény, és mentse le azt a kiújulás sorozat." + +#: admin/em-events.php:202 +#: admin/em-event.php:23 +#: admin/em-event.php:145 +#: templates/templates/event-form.php:23 +#: templates/templates/event-form.php:184 +#: templates/buddypress/my-events.php:155 +#: templates/buddypress/my-events.php:166 +#: templates/forms/event-editor.php:13 +#: templates/forms/event-editor.php:174 +msgid "Reschedule" +msgstr "Ãtütemezés" + +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: templates/templates/events-search.php:88 +#: templates/templates/events-search.php:138 +msgid "Search" +msgstr "Keresés" + +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-rejected.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +msgid "Decline" +msgstr "Elutasít" + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Visszaállít" + +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-rejected.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +msgid "Edit/View" +msgstr "Szerkeszt/Megtekint" + +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Nincs lemondott foglalás." + +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Nincs visszautasított foglalás." + +#: admin/bookings/em-events.php:29 +#: templates/buddypress/my-events.php:43 +msgid "Past Events" +msgstr "Múltbeli események" + +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Összes esemény" + +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "JövÅ‘beli események" + +#: admin/bookings/em-events.php:101 +#: admin/em-event.php:14 +#: admin/em-options.php:312 +#: templates/templates/event-form.php:16 +#: templates/forms/event-editor.php:6 +#: buddypress/bp-em-core.php:179 +#: classes/em-event.php:553 +#: classes/em-event.php:793 +#: em-install.php:348 +#: em-install.php:373 +#: em-actions.php:107 +msgid "Event" +msgstr "Esemény" + +#: admin/bookings/em-events.php:134 +#: admin/em-event.php:524 +#: templates/forms/event-editor.php:318 +msgid "Booked Spaces" +msgstr "Lefoglalt helyek" + +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +msgid "Unapprove" +msgstr "FüggÅ‘be" + +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +msgid "Reject" +msgstr "Visszautasít" + +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +msgid "No confirmed bookings." +msgstr "Nincs megerÅ‘sített foglalás." + +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Nincs függÅ‘ben lévÅ‘ foglalás." + +#: admin/em-event.php:14 +#: templates/templates/event-form.php:16 +#: templates/forms/location-editor.php:7 +#: templates/forms/event-editor.php:6 +#: classes/em-tickets-bookings.php:141 +msgid "You do not have the rights to manage this %s." +msgstr "Nincs jogod ezt a(z) %s kezelni!" + +#: admin/em-event.php:25 +#: templates/templates/event-form.php:25 +#: templates/forms/event-editor.php:15 +#: buddypress/screens/my-events.php:54 +msgid "Edit Event" +msgstr "Esemény szerkesztése" + +#: admin/em-event.php:29 +#: templates/templates/event-form.php:29 +#: templates/forms/event-editor.php:19 +msgid "Insert New Event" +msgstr "Új esemény hozzáadása" + +#: admin/em-event.php:56 +msgid "Mon" +msgstr "h" + +#: admin/em-event.php:56 +msgid "Tue" +msgstr "k" + +#: admin/em-event.php:56 +msgid "Wed" +msgstr "sze" + +#: admin/em-event.php:56 +msgid "Thu" +msgstr "cs" + +#: admin/em-event.php:56 +msgid "Fri" +msgstr "p" + +#: admin/em-event.php:56 +msgid "Sat" +msgstr "szo" + +#: admin/em-event.php:56 +msgid "Sun" +msgstr "v" + +#: admin/em-event.php:81 +msgid "Recurrence" +msgstr "IsmétlÅ‘dés" + +#: admin/em-event.php:88 +msgid "Repeated event" +msgstr "Ismételt esemény" + +#: admin/em-event.php:95 +#: templates/templates/event-form.php:137 +#: templates/forms/event-editor.php:127 +msgid "Daily" +msgstr "Napi" + +#: admin/em-event.php:95 +#: templates/templates/event-form.php:137 +#: templates/forms/event-editor.php:127 +msgid "Weekly" +msgstr "Heti" + +#: admin/em-event.php:95 +#: templates/templates/event-form.php:137 +#: templates/forms/event-editor.php:127 +msgid "Monthly" +msgstr "Havi" + +#: admin/em-event.php:101 +#: admin/em-event.php:124 +msgid "Every" +msgstr "Minden" + +#: admin/em-event.php:104 +#: templates/templates/event-form.php:144 +#: templates/forms/event-editor.php:134 +msgid "day" +msgstr "nap" + +#: admin/em-event.php:106 +#: templates/templates/event-form.php:146 +#: templates/forms/event-editor.php:136 +msgid "days" +msgstr "nap" + +#: admin/em-event.php:108 +msgid "week" +msgstr "hét" + +#: admin/em-event.php:110 +msgid "weeks" +msgstr "hét" + +#: admin/em-event.php:112 +msgid "month" +msgstr "hónap" + +#: admin/em-event.php:114 +msgid "months" +msgstr "hónap" + +#: admin/em-event.php:127 +#: templates/templates/event-form.php:165 +#: templates/forms/event-editor.php:155 +msgid "first" +msgstr "elsÅ‘" + +#: admin/em-event.php:127 +#: templates/templates/event-form.php:165 +#: templates/forms/event-editor.php:155 +msgid "second" +msgstr "második" + +#: admin/em-event.php:127 +#: templates/templates/event-form.php:165 +#: templates/forms/event-editor.php:155 +msgid "third" +msgstr "harmadik" + +#: admin/em-event.php:127 +#: templates/templates/event-form.php:165 +#: templates/forms/event-editor.php:155 +msgid "fourth" +msgstr "negyedik" + +#: admin/em-event.php:127 +#: templates/templates/event-form.php:165 +#: templates/forms/event-editor.php:155 +msgid "last" +msgstr "utolsó" + +#: admin/em-event.php:138 +#: templates/templates/event-form.php:177 +#: templates/forms/event-editor.php:167 +msgid "Check if your event happens more than once according to a regular pattern" +msgstr "Jelölje be, ha az esemény többször kerül megrendezésre egy szabályos minta alapján" + +#: admin/em-event.php:150 +#: templates/templates/event-form.php:189 +#: templates/forms/event-editor.php:179 +msgid "This is't a recurrent event" +msgstr "Ez nem ismétlÅ‘dÅ‘ esemény" + +#: admin/em-event.php:161 +msgid "Event Owner/Contact Person" +msgstr "Esemény tulajdonos/Kapcsolattartó" + +#: admin/em-event.php:192 +msgid "Group Ownership" +msgstr "Csoport tulajdonosa" + +#: admin/em-event.php:206 +#: templates/templates/event-form.php:97 +#: templates/forms/event-editor.php:87 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Válasszon ki egy csoportot, akihez az eseményt rendeli. Ne feledje, hogy az összes csoportadminisztrátor módosíthatja és nem lehet a csoport-összerendelést megszüntetni törlés nélkül!" + +#: admin/em-event.php:218 +msgid "Bookings Stats" +msgstr "Foglalás statisztika" + +#: admin/em-event.php:229 +msgid "Available Spaces" +msgstr "Rendelkezésre álló helyek" + +#: admin/em-event.php:230 +msgid "Confirmed Spaces" +msgstr "MegerÅ‘sített helyek" + +#: admin/em-event.php:231 +msgid "Pending Spaces" +msgstr "FüggÅ‘ben lévÅ‘ helyek" + +#: admin/em-event.php:238 +#: templates/forms/event-editor.php:288 +msgid "manage bookings" +msgstr "foglalások menedzselése" + +#: admin/em-event.php:239 +#: templates/forms/event-editor.php:289 +msgid "printable view" +msgstr "nyomtatható nézet" + +#: admin/em-event.php:240 +#: admin/em-bookings.php:124 +#: templates/forms/event-editor.php:290 +msgid "export csv" +msgstr "exportálás CSV-be" + +#: admin/em-event.php:249 +msgid "No responses yet!" +msgstr "Nincs válasz még!" + +#: admin/em-event.php:276 +msgid "No categories available, create one here first" +msgstr "Nem áll rendelkezésre kategória, hozzon létre egyet itt" + +#: admin/em-event.php:296 +#: templates/templates/event-form.php:71 +#: templates/forms/event-editor.php:61 +msgid "The event name. Example: Birthday party" +msgstr "Az esemény neve. Például: Születésnapi buli" + +#: admin/em-event.php:313 +msgid "Event Slug" +msgstr "Esemény keresÅ‘barát-név" + +#: admin/em-event.php:320 +msgid "Event date" +msgstr "Esemény dátuma" + +#: admin/em-event.php:321 +msgid "Recurrence dates" +msgstr "IsmétlÅ‘dés dátumok" + +#: admin/em-event.php:330 +msgid "The event date." +msgstr "Az esemény dátuma." + +#: admin/em-event.php:333 +msgid "When not reoccurring, this event spans between the beginning and end date." +msgstr "Ha nem ismétlÅ‘dÅ‘, az esemény a két dátum között kerül megrendezésre." + +#: admin/em-event.php:338 +msgid "The recurrence beginning and end date." +msgstr "Az ismétlés kezdete és vége." + +#: admin/em-event.php:344 +msgid "Event time" +msgstr "Esemény ideje" + +#: admin/em-event.php:351 +msgid "The time of the event beginning and end" +msgstr "Az esemény kezdete és vége" + +#: admin/em-event.php:373 +#: templates/templates/event-form.php:237 +msgid "Location:" +msgstr "Helyszín:" + +#: admin/em-event.php:389 +#: templates/templates/event-form.php:253 +msgid "The name of the location where the event takes place. You can use the name of a venue, a square, etc" +msgstr "A helszín neve, ahol az esemény lesz. Ahogy könnyebben hivatkozik rá." + +#: admin/em-event.php:394 +#: templates/templates/event-form.php:258 +msgid "Name:" +msgstr "Név:" + +#: admin/em-event.php:398 +#: templates/templates/event-form.php:262 +msgid "Create a location or start typing to search a previously created location." +msgstr "Hozz létre egy új helyszínt, vagy kezdj el gépelni, hogy a már létrehozott helyszínek közül válassz." + +#: admin/em-event.php:399 +#: templates/templates/event-form.php:263 +msgid "You cannot edit saved locations here." +msgstr "Itt nem lehet szerkeszteni az elmentett helyszíneket." + +#: admin/em-event.php:399 +#: templates/templates/event-form.php:263 +msgid "Reset this form to create a location." +msgstr "Űrlap törlése egy új helyszín létrehozásához." + +#: admin/em-event.php:444 +#: templates/templates/event-form.php:308 +#, fuzzy +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "A kitöltés az elsÅ‘ lehetÅ‘vé teszi, hogy gyorsan megtalálja a korábban kitöltött államok és régiók az országban." + +#: admin/em-event.php:471 +msgid "Details about the event" +msgstr "Részletek az eseményrÅ‘l" + +#: admin/em-event.php:477 +msgid "Event image" +msgstr "Esemény képe" + +#: admin/em-event.php:483 +msgid "No image uploaded for this event yet" +msgstr "Még nincs feltöltve kép az eseményhez" + +#: admin/em-event.php:492 +#: templates/forms/event-editor.php:282 +msgid "Bookings/Registration" +msgstr "Foglalások/regisztrációk" + +#: admin/em-event.php:498 +#: templates/forms/event-editor.php:286 +msgid "Enable registration for this event" +msgstr "Foglalás engedélyezése ehhez az eseményhez" + +#: admin/em-event.php:513 +#: templates/forms/event-editor.php:307 +msgid "Tickets" +msgstr "Jegyek" + +#: admin/em-event.php:514 +#: templates/forms/event-editor.php:308 +#, fuzzy +msgid "You have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Van egy vagy több jegyet, ahol bizonyos jegyek válnak availalble bizonyos körülmények között, például a korai foglalás, csoportos kedvezmények, maximum foglalások száma jegy, stb" + +#: admin/em-event.php:519 +#: templates/forms/event-editor.php:313 +msgid "Ticket Name" +msgstr "Jegy elnevezése" + +#: admin/em-event.php:520 +#: admin/em-bookings.php:182 +#: admin/em-bookings.php:276 +#: templates/placeholders/bookingform.php:40 +#: templates/placeholders/bookingform.php:76 +#: templates/forms/ticket-form.php:9 +#: templates/forms/tickets-form.php:6 +#: templates/forms/event-editor.php:314 +#: em-bookings.php:115 +msgid "Price" +msgstr "Ãr" + +#: admin/em-event.php:521 +#: templates/forms/event-editor.php:315 +msgid "Min/Max" +msgstr "Min/max" + +#: admin/em-event.php:522 +#: templates/forms/event-editor.php:316 +msgid "Start/End" +msgstr "Kezdés/befejezés" + +#: admin/em-event.php:523 +#: templates/forms/event-editor.php:317 +msgid "Avail. Spaces" +msgstr "ElérhetÅ‘ helyek" + +#: admin/em-event.php:531 +#: templates/forms/event-editor.php:325 +msgid "Add new ticket" +msgstr "Új jegy hozzáadása" + +#: admin/em-event.php:544 +#: templates/forms/event-editor.php:338 +msgid "Free" +msgstr "Ingyenes" + +#: admin/em-event.php:577 +#: templates/forms/event-editor.php:371 +msgid "View Bookings" +msgstr "Foglalások megtekintése" + +#: admin/em-event.php:609 +msgid "Attributes" +msgstr "Attribútumok" + +#: admin/em-event.php:635 +#: templates/templates/event-form.php:367 +#: templates/forms/event-editor.php:262 +msgid "No Value" +msgstr "Nincs érték" + +#: admin/em-event.php:654 +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Nem hozott létre egyéni attribútumot a sablonok beállításainál. Kérjük a beállítások oldalon adjon hozzá." + +#: admin/em-event.php:661 +msgid "Depreciated Attributes" +msgstr "Nem használt tulajdonságok" + +#: admin/em-event.php:662 +msgid "If you see any attributes under here, that means they're not used in Events Manager anymore. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Ha megjelenik ezalatt attribútum, az azt jelenti, hogy azokat már nem használja a rendszer. Hozzáadni Å‘ket bármelyik formázási opcióhoz a beállításoknál tudja, eltávolításhoz írjon be üres szöveget és mentse el." + +#: admin/em-event.php:693 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings to add attribute placeholders." +msgstr "Ahhoz, hogy használhasson attribútumokat, definiálnia kell Å‘ket a sablonokban, különben nem jelennek meg. Menjen az Események > Beállítások oldalra attrubútum placeholderek hozzáadásához." + +#: admin/em-event.php:708 +msgid "WARNING! You are about to re-create all your recurrent events including erasing your old booking data! Are you sure you want to do this?" +msgstr "FIGYELEM! Arra készül, hogy újra létrehozza az összes ismétlÅ‘dÅ‘ eseményt, ezzel törölve az összes eddigi foglalást! Biztos ezt akarja?" + +#: admin/em-event.php:712 +#: templates/templates/event-form.php:388 +#: templates/forms/event-editor.php:403 +msgid "Submit Event" +msgstr "Esemény mentése" + +#: admin/em-event.php:733 +#: templates/forms/event-editor.php:415 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Biztos benne, hogy szeretné átütemezni az ismétlÅ‘dÅ‘ eseményt? Ha ezt megteszi, akkor elveszti az összes eddig foglalást és a régi ismétlÅ‘dÅ‘ események törlÅ‘dnek." + +#: admin/em-event.php:743 +#: templates/forms/event-editor.php:424 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Biztos benne, hogy le szeretné tiltani a foglalásokat? Ha ezt megteszi az összes eddigi foglalást elveszti. Amennyiben korlátozni szeretné a további foglalásokat, csökkentse az elérhetÅ‘ jegyek számát." + +#: admin/em-bookings.php:85 +msgid "Event Bookings Dashboard" +msgstr "Foglalások kezelése" + +#: admin/em-bookings.php:89 +#: admin/em-bookings.php:140 +#: admin/em-bookings.php:191 +msgid "Pending Bookings" +msgstr "FüggÅ‘ foglalások" + +#: admin/em-bookings.php:92 +msgid "Events With Bookings Enabled" +msgstr "Események, ahol lehet foglalni" + +#: admin/em-bookings.php:107 +#: admin/em-bookings.php:213 +#: admin/em-bookings.php:351 +#: admin/em-people.php:9 +msgid "You do not have the rights to manage this event." +msgstr "Nincs jogod ezt az eseményt kezelni!" + +#: admin/em-bookings.php:119 +msgid "Manage %s Bookings" +msgstr "%s esemény foglalásainak kezelése" + +#: admin/em-bookings.php:120 +#: admin/em-bookings.php:174 +msgid "View/Edit Event" +msgstr "Esemény megtekintése/szerkesztése" + +#: admin/em-bookings.php:126 +#: templates/templates/event-form.php:67 +#: templates/forms/event-editor.php:57 +msgid "Event Name" +msgstr "Esemény neve" + +#: admin/em-bookings.php:127 +msgid "Spaces confirmed" +msgstr "hely megerÅ‘sítve" + +#: admin/em-bookings.php:129 +msgid "Date" +msgstr "IdÅ‘pont" + +#: admin/em-bookings.php:143 +#: admin/em-bookings.php:194 +msgid "Confirmed Bookings" +msgstr "MegerÅ‘sített foglalások" + +#: admin/em-bookings.php:145 +#: admin/em-bookings.php:196 +msgid "Rejected Bookings" +msgstr "Visszautasított foglalások" + +#: admin/em-bookings.php:147 +#: admin/em-bookings.php:198 +msgid "Cancelled Bookings" +msgstr "Lemondott foglalások" + +#: admin/em-bookings.php:163 +msgid "You do not have the rights to manage this ticket." +msgstr "Nincs joga, hogy ezt a jegyet kezelje." + +#: admin/em-bookings.php:173 +msgid "Ticket for %s" +msgstr "Jegy a(z) %s eseményre" + +#: admin/em-bookings.php:175 +msgid "View Event Bookings" +msgstr "Esemény foglalásainak megtekintése" + +#: admin/em-bookings.php:181 +#: templates/forms/ticket-form.php:32 +#: templates/forms/tickets-form.php:5 +msgid "Description" +msgstr "Leírás" + +#: admin/em-bookings.php:183 +#: admin/em-bookings.php:275 +#: admin/em-people.php:33 +#: templates/placeholders/bookingform.php:42 +#: templates/placeholders/bookingform.php:80 +#: templates/forms/ticket-form.php:11 +#: em-bookings.php:116 +#: em-bookings.php:144 +msgid "Spaces" +msgstr "Helyek" + +#: admin/em-bookings.php:184 +msgid "Min" +msgstr "Min" + +#: admin/em-bookings.php:185 +msgid "Max" +msgstr "Max" + +#: admin/em-bookings.php:186 +msgid "Start" +msgstr "Kezdés" + +#: admin/em-bookings.php:187 +msgid "End" +msgstr "Befejezés" + +#: admin/em-bookings.php:223 +msgid "Edit Booking" +msgstr "Foglalás szerkesztése" + +#: admin/em-bookings.php:231 +msgid "Event Details" +msgstr "Esemény részletei" + +#: admin/em-bookings.php:242 +msgid "Date/Time" +msgstr "IdÅ‘pont" + +#: admin/em-bookings.php:254 +#: admin/em-bookings.php:373 +msgid "Personal Details" +msgstr "Személyes adatok" + +#: admin/em-bookings.php:262 +msgid "Booking Details" +msgstr "Foglalás részletei" + +#: admin/em-bookings.php:270 +msgid "Status" +msgstr "Ãllapot" + +#: admin/em-bookings.php:274 +#: templates/placeholders/bookingform.php:38 +#: em-bookings.php:114 +msgid "Ticket Type" +msgstr "Jegy típusa" + +#: admin/em-bookings.php:290 +msgid "Totals" +msgstr "Összesítés" + +#: admin/em-bookings.php:297 +#: admin/em-people.php:34 +#: templates/placeholders/bookingform.php:112 +#: em-bookings.php:158 +msgid "Comment" +msgstr "Megjegyzés" + +#: admin/em-bookings.php:307 +msgid "Booking Notes" +msgstr "Foglaláshoz kapcsolódó jegyzetek" + +#: admin/em-bookings.php:310 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Ide írhat megjegyzéseket belsÅ‘ hasznáaltra, amiket csak az esemény-szervezÅ‘k láthatnak." + +#: admin/em-bookings.php:315 +msgid "wrote" +msgstr "írt" + +#: admin/em-bookings.php:361 +msgid "Manage Person's Booking" +msgstr "A személy foglalásainak kezelése" + +#: admin/em-bookings.php:363 +msgid "Edit User" +msgstr "Személy szerkesztése" + +#: admin/em-bookings.php:384 +msgid "Past And Present Bookings" +msgstr "Régebbi és jelenlegi foglalások" + +#: admin/em-admin.php:20 +#, fuzzy +msgid "" +"

                      Hey, %s, welcome to Events Manager! We hope you like it around here.

                      \r\n" +"\t\t\t

                      Now it's time to insert events lists through widgets, template tags or shortcodes.

                      \r\n" +"\t\t\t

                      By the way, have you taken a look at the Settings page? That's where you customize the way events and locations are displayed.

                      \r\n" +"\t\t\t

                      What? Tired of seeing this advice? I hear you, click here and you won't see this again!

                      " +msgstr "

                      Hé,%s, szívesen események menedzser! Reméljük, tetszik itt.

                      Most itt az ideje, hogy helyezze események listáját a kütyü , template tag vagy shortcodes .

                      By the way, már akkor tett egy pillantást a beállítások oldal ? Ez az, ahol testreszabhatja az utat események és helyszínek jelennek meg.

                      Mi az? Unod már látni ezt a tanácsot? Hallom, kattintson ide , és nem jelenik meg még egyszer!

                      " + +#: admin/em-admin.php:57 +#, fuzzy +msgid "Events Manager has some new features!
                      • Bookings can now be approved before they count towards your event's space allocations.
                      • Events now have owners, and you can restrict users so they can only manage events/locations/categories they create.

                        These new permissions are enabled by default, but since you upgraded it has been disabled to maintain the previous plugin behaviour. You can re-enable it from the settings page. Dismiss" +msgstr "Események Manager néhány új funkciókat!
                        • Foglalás most jóvá kell hagyni, mielÅ‘tt azok beleszámítanak a rendezvény helyet források.
                        • Események most már a tulajdonosok, és korlátozhatja a felhasználók, akik így csak kezelni esemény / hely / kategóriák hoznak létre.

                          Ezek az új engedélyek alapértelmezés szerint engedélyezve vannak, de mivel frissített azt tiltva fenntartani a korábbi plugin-viselkedést. Akkor újra lehetÅ‘vé teszi a beállítások oldalon . elvetése" + +#: admin/em-admin.php:70 +#, fuzzy +msgid "Uh Oh! For some reason wordpress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Uh Oh! Valamilyen oknál fogva wordpress nem hoz létre események az oldalon az Ön számára (vagy éppen most törölte azt). Nem kell aggódni azonban, mindössze annyit kell tennie, hogy hozzon létre egy üres oldalt, nevet, amit csak akarsz, és válassza ki azt az eseményt oldalt a beállítások oldalon . Elnézést a plusz lépést! Ha tudod, mit csinálsz, akkor megtette ezt célra, ha igen, hagyja figyelmen kívül ezt az üzenetet" + +#: admin/em-admin.php:82 +#, fuzzy +msgid "A LOT has changed since Events Manager 3. We recommend you take a look at the settings page for new features and upgrade instructions, and you may particualarly be interested in modifying permissions. Dismiss" +msgstr "A LOT óta változott Events Manager 3. Javasoljuk, hogy vessen egy pillantást a beállítások oldalon az új funkciók és frissítési utasításokat, és lehet, particualarly érdekelt engedélyek módosítása. elvetése" + +#: admin/em-admin.php:94 +#, fuzzy +msgid "If you upgraded from 3.x to the RC2 and the update did not go so well, try reimporting old settings. Warning! Re-importing will rename all event slugs, re-import your old category settings from events, and recreate all tickets, so changes to these areas will be lost. Dismiss" +msgstr "Ha a frissítés 3.x az RC2, és a frissítés nem ment olyan jól, próbáld újrabehozatalának régi beállításokat . Figyelem! Re-importáló majd nevezze át az összes eseményt meztelen csigák, újra importálni a régi kategória beállításokat eseményeket, és újra az összes jegyet, így változik ezeken a területeken el fog veszni. elvetése" + +#: admin/em-admin.php:118 +#, fuzzy +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Ez az oldal megfelel a Rendezvények vezetÅ‘ események az oldalon. A tartalmat átállításával az Events Manager, de ha szó szerepel TARTALOM (pontosan betűvel) és az Å‘t körülvevÅ‘ más szöveg, csak a tartalma felülíródik. Ha szeretné megváltoztatni a rendezvények meg, menj a beállítások oldalon." + +#: admin/em-admin.php:145 +#, fuzzy +msgid "Displaying %s–%s of %s" +msgstr "Megjelenítve %s-%s%s" + +#: admin/em-options.php:42 +msgid "Changes saved." +msgstr "Változások mentve." + +#: admin/em-options.php:62 +msgid "This accepts %s and %s placeholders." +msgstr "Ez %s és %s placeholdereket fogad." + +#: admin/em-options.php:63 +#: admin/em-options.php:64 +msgid "This accepts %s placeholders." +msgstr "Ez %s placeholdereket fogad." + +#: admin/em-options.php:65 +msgid "This accepts %s, %s and %s placeholders." +msgstr "Ez %s,%s és %s placeholdereket fogad." + +#: admin/em-options.php:67 +#: admin/em-options.php:626 +msgid "Save Changes" +msgstr "Változtatások mentése" + +#: admin/em-options.php:67 +msgid "All" +msgstr "Minden" + +#: admin/em-options.php:69 +msgid "Only Network Admins see this" +msgstr "Csak Network Adminok látja ezt" + +#: admin/em-options.php:73 +msgid "Collapse All" +msgstr "Az összes összecsukása" + +#: admin/em-options.php:74 +msgid "Expand All" +msgstr "Az összes kibontása" + +#: admin/em-options.php:102 +msgid "Event Manager Options" +msgstr "Event Manager beállításai" + +#: admin/em-options.php:152 +#: admin/em-options.php:168 +#: admin/em-options.php:210 +#: admin/em-options.php:300 +#: admin/em-options.php:323 +#: admin/em-options.php:339 +#: admin/em-options.php:364 +#: admin/em-options.php:386 +#: admin/em-options.php:401 +#: admin/em-options.php:422 +#: admin/em-options.php:444 +#: admin/em-options.php:496 +#: admin/em-options.php:515 +#: admin/em-options.php:529 +#: admin/em-options.php:593 +msgid "Click to toggle" +msgstr "Kattintson váltáshoz" + +#: admin/em-options.php:152 +msgid "Multi Site Options" +msgstr "Multi Site beállítások" + +#: admin/em-options.php:156 +msgid "Enable global tables mode?" +msgstr "Engedélyezi a globális táblázatok módot?" + +#: admin/em-options.php:156 +#, fuzzy +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Ha ezt a yes teszi minden eseményt kivéve a fÅ‘oldalra esemény táblák (EM kell aktiválni). Ez lehetÅ‘vé teszi, hogy ossza meg az eseményeket a különbözÅ‘ blogokat, mint a bemutató rendezvények a hálózathoz, miközben lehetÅ‘vé teszi a felhasználók számára megjeleníteni és kezelni eseményeket a saját blog. Ne feledjük, hogy aktiválja ez azt jelenti, a régi események létrehozott al-blogok nem lesznek elérhetÅ‘k már, és ha visszavált lesznek, hanem új események során keletkezett globális események mód csak is a fÅ‘ oldalon." + +#: admin/em-options.php:157 +msgid "Display global events on main blog?" +msgstr "Megjeleníti a globális eseményeket a fÅ‘ blogon?" + +#: admin/em-options.php:157 +#, fuzzy +msgid "Displays events from all sites on the network by default. You can still restrict events by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Megjeleníti események minden területen a hálózat alapértelmezés szerint. Továbbra is korlátozhatja események blog segítségével shortcodes és a sablon címkék párosul a blog attribútum. Szükség van a globális táblázatokat kell kapcsolni." + +#: admin/em-options.php:158 +#, fuzzy +msgid "Link sub-site events directly to sub-site?" +msgstr "Kapcsolat aloldal események közvetlenül aloldal?" + +#: admin/em-options.php:158 +#, fuzzy +msgid "When displaying global events on the main site you have the option of users viewing the event details on the main site or being directed to the sub-site." +msgstr "Megjelenítésekor a globális események fÅ‘ helyszínen lehetÅ‘ség van a megtekintÅ‘ felhasználók az esemény részleteit a fÅ‘ oldalon, vagy utasítása, hogy az al-site." + +#: admin/em-options.php:168 +msgid "General options" +msgstr "Ãltalános beállítások" + +#: admin/em-options.php:172 +msgid "Use dropdown for locations?" +msgstr "Használjunk legördülÅ‘ menüt a helszínek megadásához?" + +#: admin/em-options.php:172 +#, fuzzy +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Válassza az Igen gombot helyet az drow-down menüben helyet kiválasztás gyorsabb lesz, de elveszti a képességét, hogy helyezze helyek események" + +#: admin/em-options.php:173 +msgid "Use recurrence?" +msgstr "Használjunk ismétlÅ‘dést?" + +#: admin/em-options.php:173 +msgid "Select yes to enable the recurrence features feature" +msgstr "Válassza az igent, hogy engedélyezze az ismétlÅ‘dés funkciót" + +#: admin/em-options.php:174 +msgid "Enable bookings?" +msgstr "Foglalások engedélyezése?" + +#: admin/em-options.php:174 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Válassza az igent, ha engedélyezni szeretnénk a foglalásokat és jegyeket az eseményekhez." + +#: admin/em-options.php:175 +msgid "Use categories?" +msgstr "Használjunk kategóriákat?" + +#: admin/em-options.php:175 +msgid "Select yes to enable the category features" +msgstr "Válassza az igent, ha szeretne kategorizálást" + +#: admin/em-options.php:176 +msgid "Use event attributes?" +msgstr "Használjunk esemény attribútumokat?" + +#: admin/em-options.php:176 +#, fuzzy +msgid "Select yes to enable the attributes feature" +msgstr "Válasszon igen, hogy az attribútumok funkciót" + +#: admin/em-options.php:180 +msgid "no default category" +msgstr "nincs alapértelmezett kategória" + +#: admin/em-options.php:185 +msgid "Default Category" +msgstr "Alapértelmezett kategória" + +#: admin/em-options.php:185 +#, fuzzy +msgid "This option allows you to select the default category when adding an event." +msgstr "Ez az opció lehetÅ‘vé teszi, hogy válassza ki az alapértelmezett kategóriát, amikor hozzá egy eseményt." + +#: admin/em-options.php:185 +#: admin/em-options.php:194 +#, fuzzy +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(Nem alkalmazható az esemény tulajdon jelenleg, hamarosan!)" + +#: admin/em-options.php:189 +msgid "no default location" +msgstr "nincs alapértelmezett helyszín" + +#: admin/em-options.php:194 +msgid "Default Location" +msgstr "Alapértelmezett helyszín" + +#: admin/em-options.php:194 +#, fuzzy +msgid "This option allows you to select the default location when adding an event." +msgstr "Ez az opció lehetÅ‘vé teszi, hogy válassza ki az alapértelmezett helyet, ha hozzá egy eseményt." + +#: admin/em-options.php:197 +msgid "Default Location Country" +msgstr "Alapértelmezett ország" + +#: admin/em-options.php:197 +msgid "no default country" +msgstr "nincs alapértelmezett ország" + +#: admin/em-options.php:197 +#, fuzzy +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Ha kiválaszt egy alapértelmezett ország, hogy lesz elÅ‘re kiválasztott létrehozása során új helyre." + +#: admin/em-options.php:199 +msgid "Event Attributes" +msgstr "Esemény attribútumai" + +#: admin/em-options.php:199 +#, fuzzy +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Azt is hozzá esemény attribútumok itt, soronként egyet ebben a formátumban #_ATT{key} . Nem fognak megjelenni a rendezvény oldalakon ha be Å‘ket egy másik sablon alatt, de érdemes tárolni extra információt egy esemény más célokra. További információ a helyÅ‘rzÅ‘ket." + +#: admin/em-options.php:201 +msgid "Show some love?" +msgstr "Mutatassunk szeretet?" + +#: admin/em-options.php:201 +#, fuzzy +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Több száz ingyenes órát mentek bele, hogy ezt az ingyenes plugin, mutatják a támogatást, és adjunk hozzá egy kis linket a plugin honlapján alján rendezvény oldalakon." + +#: admin/em-options.php:210 +#: admin/em-options.php:224 +msgid "Events page" +msgstr "Események oldal" + +#: admin/em-options.php:219 +msgid "[No Events Page]" +msgstr "[Nincs esemény oldal]" + +#: admin/em-options.php:224 +#, fuzzy +msgid "This option allows you to select which page to use as an events page" +msgstr "Ez az opció lehetÅ‘vé teszi, hogy válassza ki melyik oldalon használható, mint egy esemény oldalon" + +#: admin/em-options.php:227 +#, fuzzy +msgid "Show events page in lists?" +msgstr "Események megjelenítése az oldalon a lista?" + +#: admin/em-options.php:227 +#, fuzzy +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Jelölje be ezt az opciót, ha szeretné, hogy az események oldalon jelennek meg együtt, más oldalak oldalak listáját." + +#: admin/em-options.php:228 +#, fuzzy +msgid "Display calendar in events page?" +msgstr "Naptár az események az oldalon?" + +#: admin/em-options.php:228 +#, fuzzy +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Ez az opció lehetÅ‘vé teszi, hogy megjelenítse a naptár az eseményeket oldal helyett az alapértelmezett listából. Nem ajánlott megjeleníteni mind a naptár widget vagy naptári oldalt." + +#: admin/em-options.php:228 +#, fuzzy +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Ha szeretné megmutatni események span több mint egy nap, lásd a naptár részben ezen az oldalon." + +#: admin/em-options.php:229 +#, fuzzy +msgid "Disable title rewriting?" +msgstr "Tiltása cím átírása?" + +#: admin/em-options.php:229 +#, fuzzy +msgid "Some wordpress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Néhány wordpress téma nem követik a legjobb gyakorlatokat, amikor generáló navigációs menük, és így az automatikus cím átírása funkció problémákat okozhat, ha a menük nem működnek megfelelÅ‘en a rendezvény oldalakon, próbáljuk meg a \"Yes\", és biztosítson megfelelÅ‘ HTML formátumú cím alatt." + +#: admin/em-options.php:230 +#, fuzzy +msgid "Event Manager titles" +msgstr "Event Manager címek" + +#: admin/em-options.php:230 +#, fuzzy +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Ez csak beállítás csak kérdések, ha a kiválasztott \"Igen\" fent. Észre fogja venni az események címszót nem is átírt, és van egy új címet alatt az alapértelmezett oldal neve. Itt ellenÅ‘rzik a HTML e cím. GyÅ‘zÅ‘djön meg róla, hogy tartsa a # _PAGETITLE helyÅ‘rzÅ‘ itt, mint amit az újraírt az események vezetÅ‘je. A kontroll mi átírt ebben a címben, lásd beállítások lejjebb a címszót." + +#: admin/em-options.php:231 +#, fuzzy +msgid "Event List Limits" +msgstr "Eseménylista határértékek" + +#: admin/em-options.php:231 +#, fuzzy +msgid "This will control how many events are shown on one list by default." +msgstr "Ez szabályozhatjuk, hány esemény látható egy lista alapértelmezés szerint." + +#: admin/em-options.php:232 +#, fuzzy +msgid "Are current events past events?" +msgstr "Vannak aktuális események múltbeli események?" + +#: admin/em-options.php:232 +#, fuzzy +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Alapértelmezés szerint, eseményeket, amelyek már a záró dátum késÅ‘bbi, mint ma, szerepelni fog a keresést, állítsa ezt yes figyelembe venni eseményeket kezdÅ‘dött \"tegnap\", mint korábban." + +#: admin/em-options.php:233 +msgid "Show events search?" +msgstr "Legyen esemény keresÅ‘?" + +#: admin/em-options.php:233 +#, fuzzy +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Ha be van állítva, hogy igen, egy keresÅ‘ jelenik meg, éppen csak meghaladja a listát az események." + +#: admin/em-options.php:236 +msgid "Default event list ordering" +msgstr "Az eseménylista alapértelmezett rendezése" + +#: admin/em-options.php:241 +msgid "Order by start date, start time, then event name" +msgstr "Rendezés: kezdÅ‘ dátum, kezdési idÅ‘pont, majd az esemény neve" + +#: admin/em-options.php:242 +msgid "Order by name, start date, then start time" +msgstr "Rendezés: név, kezdÅ‘ dátum, majd a kezdési idÅ‘pont" + +#: admin/em-options.php:243 +msgid "Order by name, end date, then end time" +msgstr "Rendezés: név, záró dátum, majd a befejezési idÅ‘" + +#: admin/em-options.php:244 +msgid "Order by end date, end time, then event name" +msgstr "Rendezés: záró dátum, befejezés idÅ‘pontja, majd az esemény neve" + +#: admin/em-options.php:255 +#: widgets/em-events.php:116 +msgid "Ascending" +msgstr "növekvÅ‘" + +#: admin/em-options.php:256 +#: widgets/em-events.php:117 +msgid "Descending" +msgstr "csökkenÅ‘" + +#: admin/em-options.php:258 +msgid "All Ascending" +msgstr "Minden növekvÅ‘" + +#: admin/em-options.php:261 +msgid "All Descending" +msgstr "Minden csökkenÅ‘" + +#: admin/em-options.php:275 +#, fuzzy +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "Amikor Events igazgatója mutatja felsorolja az események az alapértelmezett viselkedés Rendezés kezdÅ‘ dátum szerint növekvÅ‘ sorrendben. Ennek megváltoztatásához módosítsa az értékeket a fenti." + +#: admin/em-options.php:279 +msgid "Event list scope" +msgstr "Eseménynaptár köre" + +#: admin/em-options.php:289 +#, fuzzy +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Csak események kezdve egy bizonyos határidÅ‘n az események oldalon. Alapértelmezett jövÅ‘beli események nélkül vége a határidÅ‘." + +#: admin/em-options.php:300 +msgid "Events format" +msgstr "Események formátuma" + +#: admin/em-options.php:303 +#: admin/em-options.php:342 +#: admin/em-options.php:367 +msgid "%s Page" +msgstr "%s oldal" + +#: admin/em-options.php:305 +msgid "Events page title" +msgstr "Események oldal címe" + +#: admin/em-options.php:305 +#, fuzzy +msgid "The title on the multiple events page." +msgstr "A cím a többszörös események oldalon." + +#: admin/em-options.php:306 +#, fuzzy +msgid "Default event list format header" +msgstr "Alapértelmezett eseménylista formátumban fejléc" + +#: admin/em-options.php:306 +#, fuzzy +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Ez a tartalom jelenik meg, éppen a fenti kódot az alapértelmezett esemény lista formátumban. Az alapértelmezett üres" + +#: admin/em-options.php:307 +msgid "Default event list format" +msgstr "Alapértelmezett eseménylista formátuma" + +#: admin/em-options.php:307 +#, fuzzy +msgid "The format of any events in a list." +msgstr "A formátum olyan események listáját." + +#: admin/em-options.php:308 +#, fuzzy +msgid "Default event list format footer" +msgstr "Alapértelmezett eseménylista formátumban lábléc" + +#: admin/em-options.php:308 +#, fuzzy +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Ez a tartalom jelenik alatt a kódot az alapértelmezett esemény lista formátumban. Az alapértelmezett üres" + +#: admin/em-options.php:309 +msgid "No events message" +msgstr "Nincs esemény üzenet" + +#: admin/em-options.php:309 +msgid "The message displayed when no events are available." +msgstr "Ez az üzenet jelenik meg, ha nincs bejegyzett esemény." + +#: admin/em-options.php:310 +#, fuzzy +msgid "List events by date title" +msgstr "Lista események dátum cím" + +#: admin/em-options.php:310 +#, fuzzy +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
                          " +msgstr "Ha megtekintése oldalt események egy adott napon, ez a cím, ami megjelenik. A dátum beírása értékek használata PHP időformátum karakter egy # jelet előttük, azaz #m , #M , #j , stb
                          " + +#: admin/em-options.php:312 +#: admin/em-options.php:350 +#: admin/em-options.php:375 +msgid "Single %s Page" +msgstr "Egyetlen %s oldal" + +#: admin/em-options.php:314 +#, fuzzy +msgid "Single event page title format" +msgstr "Egyetlen esemény oldal címe formátumban" + +#: admin/em-options.php:314 +#, fuzzy +msgid "The format of a single event page title." +msgstr "A formátum egy egységes esemény oldal címét." + +#: admin/em-options.php:315 +#, fuzzy +msgid "Default single event format" +msgstr "Alapértelmezett egyszeri esemény formátumban" + +#: admin/em-options.php:315 +#, fuzzy +msgid "The format of a single event page." +msgstr "A formátum az egyetlen esemény oldalára." + +#: admin/em-options.php:323 +msgid "Calendar format" +msgstr "Naptár formátum" + +#: admin/em-options.php:327 +msgid "Small calendar title" +msgstr "Kis naptár címe" + +#: admin/em-options.php:327 +#, fuzzy +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "A formátum az a cím, amely megfelel a szöveg jelenik meg, ha lebeg egy eseménydús naptári nap." + +#: admin/em-options.php:328 +#, fuzzy +msgid "Small calendar title separator" +msgstr "Kis naptár címe elválasztó" + +#: admin/em-options.php:328 +#, fuzzy +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "Az elválasztó megjelenik a fenti címet, ha egynél több esemény zajlik ugyanazon a napon." + +#: admin/em-options.php:329 +msgid "Full calendar events format" +msgstr "Teljes naptár eseményeinek formátuma" + +#: admin/em-options.php:329 +#, fuzzy +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "A formátum az egyes események, amikor megjelenik a teljes naptári. Ne felejtsen el li tag elÅ‘tt és az esemény után." + +#: admin/em-options.php:330 +#, fuzzy +msgid "Show long events on calendar pages?" +msgstr "Mutatja a hosszú eseményeket a naptárban oldalon?" + +#: admin/em-options.php:330 +#, fuzzy +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Ha mutat a naptár az esemény oldalon (lásd Events formátumban részben ezen az oldalon), akkor azt a lehetÅ‘séget, hogy megmutassa események span át napig minden nap elÅ‘fordul." + +#: admin/em-options.php:331 +#, fuzzy +msgid "Show list on day with single event?" +msgstr "Mutasd listát naponta egyszeri esemény?" + +#: admin/em-options.php:331 +#, fuzzy +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Alapértelmezés szerint, ha egy naptári napra csak egy eseményt, akkor megjelenik egy egyszeri esemény, ha rákattint a linkre az adott naptári napra. Az Igen itt, akkor kap mindig látni egy listát az események." + +#: admin/em-options.php:339 +msgid "Locations format" +msgstr "Helyszínek formátuma" + +#: admin/em-options.php:344 +#: admin/em-options.php:369 +msgid "%s page title" +msgstr "%s oldal címe" + +#: admin/em-options.php:344 +#: admin/em-options.php:369 +msgid "The title on the multiple %s page." +msgstr "A cím a többszörös %s oldalon." + +#: admin/em-options.php:345 +#: admin/em-options.php:370 +msgid "%s list header format" +msgstr "%s lista fejlécének formátuma" + +#: admin/em-options.php:345 +#: admin/em-options.php:370 +#, fuzzy +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Ez a tartalom jelenik meg, éppen a fenti kódot a%s lista formátumot az alábbiakban. Az alapértelmezett üres" + +#: admin/em-options.php:346 +#: admin/em-options.php:371 +msgid "%s list item format" +msgstr "%s listaelem formátuma" + +#: admin/em-options.php:346 +#: admin/em-options.php:371 +msgid "The format of a single %s in a list." +msgstr "Egy %s elem formátuma a listában." + +#: admin/em-options.php:347 +#: admin/em-options.php:372 +#, fuzzy +msgid "%s list footer format" +msgstr "%s lista lábléc formátuma" + +#: admin/em-options.php:347 +#: admin/em-options.php:372 +#, fuzzy +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Ez a tartalom jelenik alatt a kódot a%s lista formátumban fent. Az alapértelmezett üres" + +#: admin/em-options.php:348 +#: admin/em-options.php:356 +#: admin/em-options.php:373 +msgid "No %s message" +msgstr "Nincs %s üzenet" + +#: admin/em-options.php:348 +#: admin/em-options.php:373 +#, fuzzy +msgid "The message displayed when no %s are available." +msgstr "Az üzenet jelenik meg, ha nincs%s nem állnak rendelkezésre." + +#: admin/em-options.php:352 +#: admin/em-options.php:377 +msgid "Single %s title format" +msgstr "Egyetlen %s címének a formátuma" + +#: admin/em-options.php:352 +#: admin/em-options.php:353 +#: templates/forms/location-editor.php:7 +#: classes/em-location.php:144 +#: classes/em-location.php:152 +msgid "location" +msgstr "helyszín" + +#: admin/em-options.php:352 +#, fuzzy +msgid "The format of a single location page title." +msgstr "A formátum egy helyen oldal címét." + +#: admin/em-options.php:353 +#: admin/em-options.php:378 +msgid "Single %s page format" +msgstr "Egyetlen %s oldal formátuma" + +#: admin/em-options.php:353 +msgid "The format of a single location page." +msgstr "Egy helyszínt megjelenítÅ‘ oldal formátuma." + +#: admin/em-options.php:354 +#, fuzzy +msgid "Default location balloon format" +msgstr "Alapértelmezett helyre léggömb formátumban" + +#: admin/em-options.php:354 +#, fuzzy +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "A formátum az a szöveg jelenik meg a ballonnal leírja a helyét egy térkép." + +#: admin/em-options.php:355 +#, fuzzy +msgid "Default %s list format" +msgstr "Alapértelmezett%s lista formátumban" + +#: admin/em-options.php:355 +#, fuzzy +msgid "The format of the events the list inserted in the location page through the #_NEXTEVENTS, #_PASTEVENTS and #_ALLEVENTS element." +msgstr "A formátum az események a lista be a helyét oldalon keresztül #_NEXTEVENTS , #_PASTEVENTS és #_ALLEVENTS elem." + +#: admin/em-options.php:356 +#, fuzzy +msgid "The message to be displayed in the list generated by #_NEXTEVENTS, #_PASTEVENTS and #_ALLEVENTS when no events are available." +msgstr "Az üzenet megjelenik a listában által generált #_NEXTEVENTS , #_PASTEVENTS és #_ALLEVENTS ha nincs bejegyzett esemény." + +#: admin/em-options.php:364 +msgid "Categories format" +msgstr "Kategóriák formátuma" + +#: admin/em-options.php:377 +#: admin/em-options.php:378 +#: classes/em-categories.php:206 +msgid "category" +msgstr "kategória" + +#: admin/em-options.php:377 +#, fuzzy +msgid "The format of a single category page title." +msgstr "A formátum az egyetlen kategóriába oldal címét." + +#: admin/em-options.php:378 +#, fuzzy +msgid "The format of a single category page." +msgstr "A formátum egy egységes kategória oldalon." + +#: admin/em-options.php:386 +msgid "RSS feed format" +msgstr "RSS folyam formátuma" + +#: admin/em-options.php:390 +msgid "RSS main title" +msgstr "RSS fÅ‘cím" + +#: admin/em-options.php:390 +msgid "The main title of your RSS events feed." +msgstr "Az RSS események folyamának fÅ‘címe" + +#: admin/em-options.php:391 +msgid "RSS main description" +msgstr "RSS fÅ‘ leírása" + +#: admin/em-options.php:391 +msgid "The main description of your RSS events feed." +msgstr "Az RSS események folamának fÅ‘ leírása." + +#: admin/em-options.php:392 +msgid "RSS title format" +msgstr "RSS cím formátuma" + +#: admin/em-options.php:392 +#, fuzzy +msgid "The format of the title of each item in the events RSS feed." +msgstr "A formátum a cím minden egyes elem az eseményeket RSS feed." + +#: admin/em-options.php:393 +msgid "RSS description format" +msgstr "RSS leírás formátuma" + +#: admin/em-options.php:393 +#, fuzzy +msgid "The format of the description of each item in the events RSS feed." +msgstr "A formátum leírásának egyes elemeit az eseményeket RSS feed." + +#: admin/em-options.php:401 +msgid "Maps and geotagging" +msgstr "Térképek és geotagging" + +#: admin/em-options.php:406 +msgid "Enable Google Maps integration?" +msgstr "Engedélyezi a Google Maps integráció?" + +#: admin/em-options.php:408 +#: buddypress/bp-em-notifications.php:45 +#: em-functions.php:436 +msgid "Yes" +msgstr "Igen" + +#: admin/em-options.php:409 +#: buddypress/bp-em-notifications.php:46 +#: em-functions.php:437 +msgid "No" +msgstr "Nem" + +#: admin/em-options.php:410 +msgid "Check this option to enable Goggle Map integration." +msgstr "Jelölje be, ha engedélyezi a Google Maps integrációt." + +#: admin/em-options.php:414 +msgid "Map text format" +msgstr "Térkép szöveges formátuma" + +#: admin/em-options.php:414 +msgid "The text format inside the map balloons." +msgstr "A szöveg formátuma a buborékokban." + +#: admin/em-options.php:422 +msgid "Booking and Ticketing Options" +msgstr "Foglalások és jegyek beállításai" + +#: admin/em-options.php:426 +msgid "Approval Required?" +msgstr "Jóváhagyás szükséges?" + +#: admin/em-options.php:426 +#, fuzzy +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Foglalás nem kell megerÅ‘síteni, amíg az esemény rendszergazda hagyja jóvá." + +#: admin/em-options.php:427 +msgid "Currency" +msgstr "Valuta" + +#: admin/em-options.php:427 +msgid "Choose your currency for displaying event pricing." +msgstr "Válassza ki a pénznemet az események áraihoz." + +#: admin/em-options.php:428 +msgid "Single ticket mode?" +msgstr "Egy-jegy mód?" + +#: admin/em-options.php:428 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "Az egy-jegy módban egy felhasználó csak egy jegyet foglalhat." + +#: admin/em-options.php:429 +msgid "Show ticket table in single ticket mode?" +msgstr "Mutassunk jegy táblázatot egy-jegy módban?" + +#: admin/em-options.php:429 +#, fuzzy +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Ha inkább egy jegyet asztalra, mint a több jegyet, még a vonaljegy események lehetÅ‘vé teszik ezt." + +#: admin/em-options.php:430 +#, fuzzy +msgid "Show unavailable tickets?" +msgstr "Mutassuk az nem elérhetÅ‘ jegyeket?" + +#: admin/em-options.php:430 +#, fuzzy +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Választhat-e vagy sem megmutatni nem érhetÅ‘ el jegyet a látogatók." + +#: admin/em-options.php:431 +#, fuzzy +msgid "Reserved unconfirmed spaces?" +msgstr "Fenntartva erÅ‘sített tereket?" + +#: admin/em-options.php:431 +#, fuzzy +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Alapértelmezés szerint, ha terek váltak elérhetetlenné, ha van elég CONFIRMED foglalások. A tartalék helyek akkor is, ha unnapproved válassza igen." + +#: admin/em-options.php:432 +#, fuzzy +msgid "Show multiple tickets if logged out?" +msgstr "Mutasd több jegyet, ha bejelentkezett ki?" + +#: admin/em-options.php:432 +#, fuzzy +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Ha kijelentkezett a felhasználó fogják kérni, hogy regisztrálj, hogy könyv. Azonban tudjuk mutatni elérhetÅ‘ jegyeket, ha egynél több jegyet." + +#: admin/em-options.php:433 +#, fuzzy +msgid "Allow overbooking when approving?" +msgstr "Hagyjuk túlfoglalás jóváhagyásakor?" + +#: admin/em-options.php:433 +#, fuzzy +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Ha kapsz egy csomó függÅ‘ben lévÅ‘ foglalások, és úgy dönt, hogy több foglalást, mint a terek teszik lehetÅ‘vé, ha ezt yes lehetÅ‘vé teszi, hogy felülírja az esemény térben határ, amikor kézzel jóváhagyása." + +#: admin/em-options.php:434 +msgid "Allow guest bookings?" +msgstr "Endedélyezi, hogy vendégek is foglalhassanak?" + +#: admin/em-options.php:434 +#, fuzzy +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Ha engedélyezve van, vendég látogatók ellátás az e-mail címet és egy felhasználói fiókot automatikusan létre számukra együtt a foglalás. Azt is meg kell adni tudnak bejelentkezni vissza az, hogy az újonnan létrehozott fiókot." + +#: admin/em-options.php:435 +msgid "Display login form?" +msgstr "Mutassuk a bejelentkezÅ‘ űrlapot?" + +#: admin/em-options.php:435 +#, fuzzy +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Válasszon-e vagy sem, hogy megjelenjen a login űrlap a foglalási űrlap területet, hogy emlékeztesse a tagokat, hogy jelentkezzen be foglalás elÅ‘tt." + +#: admin/em-options.php:444 +msgid "Booking Email Templates" +msgstr "Foglalás e-mailek sablonjai" + +#: admin/em-options.php:448 +msgid "Default contact person" +msgstr "Alapértelmezett kapcsolattartó személy" + +#: admin/em-options.php:448 +#, fuzzy +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Válassza ki az alapértelmezett kapcsolattartó személy. Ez a felhasználó lesz vállalkozó, ha a kapcsolattartó személy nem kifejezetten meghatározott esemény" + +#: admin/em-options.php:449 +msgid "Email events admin?" +msgstr "Küldjünk emailt az eseményszervezÅ‘nek?" + +#: admin/em-options.php:449 +#, fuzzy +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Ha szeretné minden esetben foglalás megerÅ‘sítÅ‘ e-mailt küldött a rendszergazda írja az e-mail van (hagyja üresen, hogy ne küldjön egy e-mailt)." + +#: admin/em-options.php:450 +msgid "Email contact person?" +msgstr "Küldjük emailt a kapcsolattartónaj?" + +#: admin/em-options.php:450 +#, fuzzy +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Jelölje be ezt az opciót, ha azt szeretnénk, ha kapcsolatba kap egy e-mailt, ha valaki könyvet helyeken. Egy e-mailt küldünk, ha a foglalás elÅ‘ször (függetlenül attól, hogy igazolt vagy folyamatban)" + +#: admin/em-options.php:451 +#, fuzzy +msgid "Disable new registration email?" +msgstr "Letiltása új regisztrációs e-mail?" + +#: admin/em-options.php:451 +#, fuzzy +msgid "Check this option if you want to prevent the wordpress registration email from going out when a user anonymously books an event." +msgstr "Jelölje be ezt az opciót, ha meg szeretné akadályozni a WordPress regisztrációs e-mailt fog, amikor a felhasználó anonim könyveket esemény." + +#: admin/em-options.php:453 +#, fuzzy +msgid "Contact person booking confirmed" +msgstr "Kapcsolattartó személy foglalás megerÅ‘sítette" + +#: admin/em-options.php:454 +#, fuzzy +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "Egy e-mailt fog küldeni az esemény kapcsolatot, ha a foglalás az elsÅ‘ sor." + +#: admin/em-options.php:456 +#, fuzzy +msgid "Contact person email subject" +msgstr "Kapcsolattartó személy e-mail tárgya" + +#: admin/em-options.php:457 +#, fuzzy +msgid "Contact person email" +msgstr "Kapcsolattartó személy e-mail" + +#: admin/em-options.php:459 +#, fuzzy +msgid "Contact person booking cancelled" +msgstr "Kapcsolattartó személy foglalás lemondás" + +#: admin/em-options.php:460 +#, fuzzy +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Egy e-mailt fog küldeni az esemény kapcsolatot, ha valaki lemondja a foglalást." + +#: admin/em-options.php:462 +#, fuzzy +msgid "Contact person cancellation subject" +msgstr "Kapcsolattartó személy megsemmisítése" + +#: admin/em-options.php:463 +#, fuzzy +msgid "Contact person cancellation email" +msgstr "Kapcsolattartó személy törlését e-mailben" + +#: admin/em-options.php:465 +#, fuzzy +msgid "Confirmed booking email" +msgstr "MegerÅ‘sített foglalás e-mailben" + +#: admin/em-options.php:466 +#, fuzzy +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Ez küldeni, ha egy személy foglalás megerÅ‘sítik. Ez automatikusan elküldi, ha a jóváhagyások van szükség, és a foglalás jóvá. Ha jóváhagyások le vannak tiltva, ezt küldte el, amikor egy felhasználó elÅ‘ször is arra hivatkozik, hogy foglalás." + +#: admin/em-options.php:468 +#, fuzzy +msgid "Booking confirmed email subject" +msgstr "Foglalás megerÅ‘sítette, e-mail tárgya" + +#: admin/em-options.php:469 +#, fuzzy +msgid "Booking confirmed email" +msgstr "Foglalás megerÅ‘sítette, e-mail" + +#: admin/em-options.php:471 +#, fuzzy +msgid "Pending booking email" +msgstr "FüggÅ‘ben lévÅ‘ foglalás e-mailben" + +#: admin/em-options.php:472 +#, fuzzy +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Ezt meg kell küldeni az a személy, amikor elÅ‘ször benyújtják foglalás. Nem releváns, ha foglalások nem igényelnek jóváhagyást." + +#: admin/em-options.php:474 +#, fuzzy +msgid "Booking pending email subject" +msgstr "Foglalás folyamatban e-mail tárgya" + +#: admin/em-options.php:475 +#, fuzzy +msgid "Booking pending email" +msgstr "Foglalás folyamatban email" + +#: admin/em-options.php:477 +#, fuzzy +msgid "Rejected booking email" +msgstr "Elutasított foglalás e-mailben" + +#: admin/em-options.php:478 +#, fuzzy +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Ez automatikusan elküldi, ha a foglalás elutasítja. Nem releváns, ha foglalások nem igényelnek jóváhagyást." + +#: admin/em-options.php:480 +#, fuzzy +msgid "Booking rejected email subject" +msgstr "Foglalás elutasította e-mail tárgya" + +#: admin/em-options.php:480 +#, fuzzy +msgid "The subject of the email sent to the person making a booking that is awaiting administrator approval. Not relevant if bookings don't require approval." +msgstr "A tárgy az e-mail küldeni a személy, aki olyan foglalás, amely várja a rendszergazda jóváhagyása. Nem releváns, ha foglalások nem igényelnek jóváhagyást." + +#: admin/em-options.php:481 +msgid "Booking rejected email" +msgstr "Foglalás elutasítva e-mail" + +#: admin/em-options.php:481 +#, fuzzy +msgid "The body of the email which will be sent to the person if the booking is rejected. Not relevant if bookings don't require approval." +msgstr "A szervezet az e-mail, amelyet megküldenek a személynek, ha a foglalást elutasítja. Nem releváns, ha foglalások nem igényelnek jóváhagyást." + +#: admin/em-options.php:484 +#: em-bookings.php:74 +msgid "Booking cancelled" +msgstr "Foglalás lemondva" + +#: admin/em-options.php:485 +msgid "This will be sent when a user cancels their booking." +msgstr "Ez lesz elküldve, ha a felhasználó lemondja a foglalását." + +#: admin/em-options.php:487 +#, fuzzy +msgid "Booking cancelled email subject" +msgstr "Foglalás törölt e-mail tárgya" + +#: admin/em-options.php:488 +msgid "Booking cancelled email" +msgstr "Foglalás lemondva e-mail" + +#: admin/em-options.php:496 +msgid "Email Settings" +msgstr "E-mail beállítások" + +#: admin/em-options.php:500 +#, fuzzy +msgid "Notification sender name" +msgstr "Értesítés feladó nevét" + +#: admin/em-options.php:500 +#, fuzzy +msgid "Insert the display name of the notification sender." +msgstr "Helyezze be a megjelenítési nevét a bejelentés feladónak." + +#: admin/em-options.php:501 +#, fuzzy +msgid "Notification sender address" +msgstr "Értesítés feladó címét" + +#: admin/em-options.php:501 +#, fuzzy +msgid "Insert the address of the notification sender." +msgstr "Helyezze be a címet az értesítés feladónak." + +#: admin/em-options.php:502 +#, fuzzy +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "A port, amelyen keresztül az e-mail értesítést küldünk. EllenÅ‘rizze, hogy a tűzfal nem blokkolja ezt a portot" + +#: admin/em-options.php:503 +#, fuzzy +msgid "Mail sending method" +msgstr "Mail küldési módszer" + +#: admin/em-options.php:503 +msgid "PHP mail function" +msgstr "PHP mail funkció" + +#: admin/em-options.php:503 +msgid "Select the method to send email notification." +msgstr "Válassza ki az e-mail értesítés küldésének módját." + +#: admin/em-options.php:504 +msgid "Use SMTP authentication?" +msgstr "SMTP hitelesítés használata?" + +#: admin/em-options.php:504 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "SMTP hitelesítésre gyakran van szükség. Ha GMailt használ, gyÅ‘zÅ‘djön meg arról, hogy ez igenre van állítva" + +#: admin/em-options.php:505 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "Az SMTP hoszt. Ez általában \"localhost\". Ha GMailt használ, állítsa ezt az értéket erre: 'ssl://smtp.gmail.com:465'." + +#: admin/em-options.php:506 +msgid "SMTP username" +msgstr "SMTP felhasználónév" + +#: admin/em-options.php:506 +#, fuzzy +msgid "Insert the username to be used to access your SMTP server." +msgstr "Helyezze be a felhasználónevet kell használni hozzáférést az SMTP szervert." + +#: admin/em-options.php:507 +msgid "SMTP password" +msgstr "SMTP jelszó" + +#: admin/em-options.php:507 +#, fuzzy +msgid "Insert the password to be used to access your SMTP server" +msgstr "Helyezze be a jelszót kell használni, hogy hozzáférjen a SMTP szerver" + +#: admin/em-options.php:515 +msgid "Images size" +msgstr "Képek mérete" + +#: admin/em-options.php:519 +msgid "Maximum width (px)" +msgstr "Legnagyobb szélessége (px)" + +#: admin/em-options.php:519 +msgid "The maximum allowed width for images uploades" +msgstr "A megengedett legnagyobb szélessége a feltöltött képeknek" + +#: admin/em-options.php:520 +msgid "Maximum height (px)" +msgstr "Maximális magasság (px)" + +#: admin/em-options.php:520 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "A maximális megengedett magassága a feltöltött képeknek pixelben" + +#: admin/em-options.php:521 +msgid "Maximum size (bytes)" +msgstr "Maximális méret (bájtok)" + +#: admin/em-options.php:521 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "A legnagyobb megengedett mérete a feltöltött képeknek bájtban" + +#: admin/em-options.php:529 +msgid "User Capabilities" +msgstr "Felhasználói jogosultságok" + +#: admin/em-options.php:533 +#, fuzzy +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Figyelem: Az értékek megváltoztatása vezethet tegye a korábban elrejtett információkat minden felhasználó számára." + +#: admin/em-options.php:540 +#, fuzzy +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Most hogy finomszemcsés szabályozás tekintetében, amit a felhasználók nem az eseményekkel. Minden felhasználó szerepe lehet végezni a különbözÅ‘ intézkedési csomagot." + +#: admin/em-options.php:548 +#, fuzzy +msgid "Users can publish events and skip any admin approval." +msgstr "A felhasználók közzé eseményeket, és ugorjon minden admin jóváhagyásra." + +#: admin/em-options.php:549 +msgid "User can edit the global categories." +msgstr "A felhasználó szerkesztheti a globális kategóriákat." + +#: admin/em-options.php:550 +msgid "User can delete other users events." +msgstr "A felhasználó törölheti a többi felhasználó eseményét." + +#: admin/em-options.php:551 +msgid "User can delete other users locations." +msgstr "A felhasználó törölheti a többi felhasználó helyszíneit." + +#: admin/em-options.php:552 +msgid "User can edit other users locations." +msgstr "A felhasználó szerkesztheti a többi felhasználó helyszíneit." + +#: admin/em-options.php:553 +#, fuzzy +msgid "User can manage other users individual bookings and event booking settings." +msgstr "A felhasználó kezelheti más felhasználók egyéni foglalások és az esemény foglalás beállításokat." + +#: admin/em-options.php:554 +msgid "User can edit other users events." +msgstr "A felhasználó szerkesztheti a többi felhasználó eseményeit." + +#: admin/em-options.php:555 +msgid "User can delete their own locations." +msgstr "A felhasználó törölheti a saját helyszíneit." + +#: admin/em-options.php:556 +msgid "User can delete their events." +msgstr "A felhasználó törölheti az eseményeit." + +#: admin/em-options.php:557 +msgid "User can edit their locations." +msgstr "A felhasználó szerkesztheti a helyszíneit." + +#: admin/em-options.php:558 +msgid "User can use and manage bookings with their events." +msgstr "A felhasználó használhatja és kezelheti a foglalásolat az eseményein." + +#: admin/em-options.php:559 +#, fuzzy +msgid "User can view other users locations, to make locations shared by all users allow all event user roles to view all locations." +msgstr "A felhasználó megtekintheti a többi felhasználó helyeken, hogy a helyszín, amely minden felhasználó számára lehetÅ‘vé teszi az összes esemény felhasználói szerepkörök megtekintheti az összes helyszínen." + +#: admin/em-options.php:560 +msgid "User can create recurrent events." +msgstr "A felhasználó létrehozhat ismétlÅ‘dÅ‘ eseményeket." + +#: admin/em-options.php:561 +msgid "User can create and edit their events." +msgstr "A felhasználó létrehozhat és szerkeszheti a saját eseményeti." + +#: admin/em-options.php:593 +msgid "Anonymous Event Submission" +msgstr "Névtelen esemény beküldése" + +#: admin/em-options.php:597 +#, fuzzy +msgid "You can allow users to publicly submit events on your blog by using the [event_form] shortcode, and enabling anonymous submissions below." +msgstr "Tudod, hogy a felhasználók nyilvánosan be eseményeket a blog segítségével [event_form] érvényesítÅ‘kód, és lehetÅ‘vé teszi névtelen bejelentések alatt." + +#: admin/em-options.php:600 +msgid "Allow anonymous event submissions?" +msgstr "Engedélyezi a névtelen esemény beküldését?" + +#: admin/em-options.php:600 +#, fuzzy +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Szeretné, hogy a felhasználók be foglalások névtelenül? Ha igen, akkor az új [event_form] érvényesítÅ‘kód vagy em_event_form() sablon tag ezzel engedélyezve van." + +#: admin/em-options.php:601 +msgid "Guest Default User" +msgstr "Vendég alapértelmezett felhasználó" + +#: admin/em-options.php:601 +#, fuzzy +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that." +msgstr "Események igényel a felhasználó saját Å‘ket. Annak érdekében, hogy eseményeket kell benyújtani névtelenül meg kell rendelni, hogy ha egy adott felhasználó. Javasoljuk, hogy hozzon létre egy \"Anonymous\" elÅ‘fizetÅ‘ egy nagyon jó jelszó, és azt használd." + +#: admin/em-options.php:602 +msgid "Success Message" +msgstr "Üzenet a sikerességrÅ‘l" + +#: admin/em-options.php:602 +#, fuzzy +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Anonymous elküldÅ‘ nem látja, vagy módosíthatja a rendezvény után benyújtott. A testre a siker üzenetet látnak itt." + +#: admin/em-people.php:27 +msgid "Bookings data" +msgstr "Foglalási adatok" + +#: admin/em-people.php:31 +#: templates/placeholders/bookingform.php:106 +msgid "E-mail" +msgstr "E-mail" + +#: admin/em-people.php:32 +msgid "Phone number" +msgstr "Telefonszám" + +#: admin/em-people.php:53 +msgid "Available" +msgstr "ElérhetÅ‘" + +#: admin/em-people.php:72 +#: templates/placeholders/bookingform.php:102 +#: classes/em-person.php:62 +msgid "Phone" +msgstr "Telefonszám" + +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/em-people.php:72 +msgid "Events Manager" +msgstr "Esemény szervezÅ‘" + +#: templates/templates/map-global.php:15 +#: templates/placeholders/locationmap.php:15 +msgid "Loading Map...." +msgstr "Térkép betöltése..." + +#: templates/templates/events-search.php:22 +msgid "between" +msgstr "között" + +#: templates/templates/events-search.php:25 +#: templates/forms/ticket-form.php:26 +msgid "and" +msgstr "és" + +#: templates/templates/events-search.php:31 +msgid "All Categories" +msgstr "Összes kategória" + +#: templates/templates/events-search.php:39 +msgid "All Countries" +msgstr "Összes ország" + +#: templates/templates/events-search.php:53 +#: em-actions.php:452 +msgid "All Regions" +msgstr "Összes régió" + +#: templates/templates/events-search.php:70 +#: em-actions.php:429 +msgid "All States" +msgstr "Összes megye" + +#: templates/templates/events-search.php:94 +#: templates/templates/events-search.php:95 +#: templates/templates/events-search.php:109 +msgid "Loading..." +msgstr "Töltés..." + +#: templates/templates/events-search.php:135 +msgid "Searching..." +msgstr "Keresés..." + +#: templates/templates/ical.php:9 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Naptár" + +#: templates/templates/event-form.php:103 +#: templates/forms/event-editor.php:93 +msgid "When" +msgstr "IdÅ‘pont" + +#: templates/templates/event-form.php:106 +#: templates/forms/event-editor.php:96 +msgid "Starts on " +msgstr "KezdÅ‘dik" + +#: templates/templates/event-form.php:109 +#: templates/forms/event-editor.php:99 +msgid "from" +msgstr "" + +#: templates/templates/event-form.php:111 +#: templates/forms/ticket-form.php:18 +#: templates/forms/event-editor.php:101 +msgid "to" +msgstr "" + +#: templates/templates/event-form.php:113 +#: templates/forms/event-editor.php:103 +msgid "and ends on" +msgstr "és befejezÅ‘dik:" + +#: templates/templates/event-form.php:119 +#: templates/forms/event-editor.php:109 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Az esemény a kezdési és befejezési dátum közötti napokon van, minden nap a megadott idÅ‘ben." + +#: templates/templates/event-form.php:122 +#: templates/forms/event-editor.php:112 +#, fuzzy +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "A visszatérÅ‘ esemény, egy napos rendezvény jön létre az egyes ismétlÅ‘dÅ‘ idÅ‘pontja belül erre az idÅ‘szakra." + +#: templates/templates/event-form.php:130 +#: templates/forms/event-editor.php:120 +#: classes/em-event.php:1239 +msgid "Monday" +msgstr "hétfÅ‘" + +#: templates/templates/event-form.php:130 +#: templates/forms/event-editor.php:120 +#: classes/em-event.php:1239 +msgid "Tuesday" +msgstr "kedd" + +#: templates/templates/event-form.php:130 +#: templates/forms/event-editor.php:120 +#: classes/em-event.php:1239 +msgid "Wednesday" +msgstr "szerda" + +#: templates/templates/event-form.php:130 +#: templates/forms/event-editor.php:120 +#: classes/em-event.php:1239 +msgid "Thursday" +msgstr "csütörtök" + +#: templates/templates/event-form.php:130 +#: templates/forms/event-editor.php:120 +#: classes/em-event.php:1239 +msgid "Friday" +msgstr "péntek" + +#: templates/templates/event-form.php:130 +#: templates/forms/event-editor.php:120 +#: classes/em-event.php:1239 +msgid "Saturday" +msgstr "szombat" + +#: templates/templates/event-form.php:130 +#: templates/forms/event-editor.php:120 +#: classes/em-event.php:1239 +msgid "Sunday" +msgstr "vasárnap" + +#: templates/templates/event-form.php:134 +#: templates/forms/event-editor.php:124 +msgid "This event repeats" +msgstr "Ez az esemény ismétlÅ‘dik" + +#: templates/templates/event-form.php:141 +#: templates/forms/event-editor.php:131 +msgid "every" +msgstr "minden" + +#: templates/templates/event-form.php:148 +#: templates/forms/event-editor.php:138 +msgid "week on" +msgstr "hét" + +#: templates/templates/event-form.php:150 +#: templates/forms/event-editor.php:140 +msgid "weeks on" +msgstr "hét" + +#: templates/templates/event-form.php:152 +#: templates/forms/event-editor.php:142 +msgid "month on the" +msgstr "hónapban az" + +#: templates/templates/event-form.php:154 +#: templates/forms/event-editor.php:144 +msgid "months on the" +msgstr "hónapban a" + +#: templates/templates/event-form.php:172 +#: templates/forms/event-editor.php:162 +msgid "of each month" +msgstr "minden hónap" + +#: templates/templates/event-form.php:196 +#: templates/forms/event-editor.php:186 +msgid "Where" +msgstr "Helyszín" + +#: templates/templates/event-form.php:230 +#: templates/forms/event-editor.php:210 +msgid "Choose from one of your locations" +msgstr "Válassz egyet a helyszínek közül" + +#: templates/templates/event-form.php:230 +#: templates/forms/event-editor.php:210 +msgid "or add a new location" +msgstr "vagy hozz létre újat" + +#: templates/templates/event-form.php:331 +#: templates/forms/event-editor.php:226 +msgid "Details about the event." +msgstr "Részletek az eseményrÅ‘l. " + +#: templates/templates/event-form.php:331 +#: templates/forms/event-editor.php:226 +msgid "HTML Allowed." +msgstr "HTML engedélyezett." + +#: templates/templates/event-form.php:338 +#: templates/forms/event-editor.php:233 +msgid "Category:" +msgstr "Kategória:" + +#: templates/templates/my-bookings.php:73 +msgid "Are you sure you want to cancel your booking?" +msgstr "Biztos, hogy lemondod a foglalást?" + +#: templates/templates/my-bookings.php:73 +msgid "Cancel" +msgstr "Lemond" + +#: templates/templates/my-bookings.php:85 +msgid "You do not have any bookings." +msgstr "Önnek még nincs foglalása." + +#: templates/templates/my-bookings.php:95 +msgid "Please Log In to view your bookings." +msgstr "Kérjük jelentkezzen be a foglalásainak megtekintéséhez." + +#: templates/buddypress/group-events.php:25 +#: templates/buddypress/my-group-events.php:25 +msgid "edit" +msgstr "Szerkesztés" + +#: templates/buddypress/group-events.php:35 +#: templates/buddypress/my-group-events.php:35 +#: buddypress/screens/profile.php:47 +#: em-install.php:463 +msgid "No Events" +msgstr "Nincsenek események" + +#: templates/buddypress/my-events.php:39 +msgid "Upcoming" +msgstr "KözelgÅ‘" + +#: templates/placeholders/bookingbutton.php:2 +msgid "Book Now" +msgstr "Foglalja le most" + +#: templates/placeholders/bookingbutton.php:3 +msgid "Booking..." +msgstr "Foglalás..." + +#: templates/placeholders/bookingbutton.php:4 +msgid "Booking Submitted" +msgstr "Foglalás beküldve" + +#: templates/placeholders/bookingbutton.php:5 +msgid "Booking Error. Try again?" +msgstr "Foglalás hiba. Próbálja újra?" + +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Térkép nem érhetÅ‘ el" + +#: templates/placeholders/bookingform.php:15 +msgid "You are currently attending this event. Manage my bookings" +msgstr "Már részt veszel az eseményen. Foglalásaim kezelése" + +#: templates/placeholders/bookingform.php:17 +msgid "Online bookings are not available for this event." +msgstr "Online foglalás nem lehetsége ehhez az eseményhez." + +#: templates/placeholders/bookingform.php:19 +msgid "Bookings are closed for this event." +msgstr "Foglalás zárva erre az eseményre." + +#: templates/placeholders/bookingform.php:57 +#: templates/placeholders/bookingform.php:86 +#: classes/em-event.php:866 +#: em-bookings.php:129 +#: em-bookings.php:151 +msgid "N/A" +msgstr "Ismeretlen" + +#: templates/placeholders/bookingform.php:117 +#: em-bookings.php:162 +msgid "Send your booking" +msgstr "Foglalás elküldése" + +#: templates/placeholders/bookingform.php:124 +#: em-actions.php:408 +msgid "You must log in before you make a booking." +msgstr "Be kell jelentkeznie, mielÅ‘tt foglalna." + +#: templates/placeholders/bookingform.php:130 +msgid "Log in if you already have an account with us." +msgstr "Lépj be, ha már van felhasználói neved!" + +#: templates/placeholders/bookingform.php:132 +msgid "Username" +msgstr "Felhasználónév" + +#: templates/placeholders/bookingform.php:136 +msgid "Password" +msgstr "Jelszó" + +#: templates/placeholders/bookingform.php:140 +msgid "Log In" +msgstr "Bejelentkezés" + +#: templates/placeholders/bookingform.php:141 +msgid "Remember Me" +msgstr "Megjegyez" + +#: templates/placeholders/bookingform.php:156 +msgid "Sign Up" +msgstr "Regisztráció" + +#: templates/placeholders/bookingform.php:160 +msgid "Password Lost and Found" +msgstr "Jelszó elfelejtve és megtalálva" + +#: templates/placeholders/bookingform.php:160 +msgid "Lost your password?" +msgstr "Elfelejtett jelszó?" + +#: templates/placeholders/bookingform.php:166 +#: em-bookings.php:169 +msgid "No more tickets available at this time." +msgstr "Jelenleg nincs több jegy." + +#: templates/placeholders/bookingform.php:183 +msgid "Please wait while the booking is being submitted." +msgstr "Kérem várjon, amíg a foglalás beküldésre kerül." + +#: templates/forms/ticket-form.php:12 +msgid "If blank, there's no space limit." +msgstr "Ha üres, nincs hely limit." + +#: templates/forms/ticket-form.php:15 +msgid "Available from" +msgstr "ElérhetÅ‘" + +#: templates/forms/ticket-form.php:21 +#, fuzzy +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Add a kezdési és befejezési idÅ‘pontját (vagy mindkettÅ‘) előírni idÅ‘ rövidsége a jegy rendelkezésre. Hagyj üresen nincs felsÅ‘ / alsó határérték." + +#: templates/forms/ticket-form.php:24 +#, fuzzy +msgid "Bookings must order between" +msgstr "Foglalás kell ahhoz között" + +#: templates/forms/ticket-form.php:28 +msgid "spaces." +msgstr "helyek." + +#: templates/forms/ticket-form.php:29 +msgid "Leave either blank for no upper/lower limit." +msgstr "Hagyja üresen, ha nincs felsÅ‘/alsó határ." + +#: templates/forms/tickets-form.php:2 +msgid "Create a ticket" +msgstr "Jegy létrehozása" + +#: templates/forms/tickets-form.php:8 +msgid "Available ticket spaces" +msgstr "ElérhetÅ‘ helyek" + +#: templates/forms/tickets-form.php:10 +msgid "Start date of ticket availability" +msgstr "Jegy elérhetÅ‘ségének kezdete" + +#: templates/forms/tickets-form.php:11 +msgid "End date of ticket availability" +msgstr "Jegy elérhetÅ‘ségének vége" + +#: templates/forms/tickets-form.php:12 +msgid "Minimum tickets required per booking" +msgstr "Foglalásonkénti minimum mennyiség" + +#: templates/forms/tickets-form.php:13 +msgid "Maximum tickets required per booking" +msgstr "Foglalásonkénti maximum mennyiség" + +#: templates/forms/tickets-form.php:18 +msgid "Add Ticket" +msgstr "Jegy hozzáadása" + +#: buddypress/bp-em-admin.php:33 +msgid "Events Admin" +msgstr "Események szerkesztése" + +#: buddypress/bp-em-admin.php:36 +msgid "Settings Updated." +msgstr "Beállítások frissítve." + +#: buddypress/bp-em-admin.php:42 +msgid "Option One" +msgstr "1-es opció" + +#: buddypress/bp-em-admin.php:47 +msgid "Option Two" +msgstr "2-es opció" + +#: buddypress/bp-em-admin.php:54 +#: buddypress/screens/settings.php:46 +msgid "Save Settings" +msgstr "Beállítások mentése" + +#: buddypress/bp-em-activity.php:67 +msgid "%s added the event %s" +msgstr "%s létrehozta a(z) %s eseményt." + +#: buddypress/bp-em-activity.php:89 +msgid "%s is attending %s." +msgstr "%s részt vesz a(z) %s eseményen." + +#: buddypress/bp-em-activity.php:91 +msgid "%s will not be attending %s anymore." +msgstr "%s már nem vesz részt a(z) %s eseményen." + +#: buddypress/screens/attending.php:23 +#: buddypress/screens/profile.php:51 +#: buddypress/bp-em-core.php:76 +msgid "Events I'm Attending" +msgstr "Részvétel" + +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Jelenleg a publikus lapját nézi, ezt látja a többi felhasználó." + +#: buddypress/screens/profile.php:34 +#: buddypress/screens/my-events.php:40 +#: buddypress/bp-em-core.php:86 +msgid "My Events" +msgstr "Saját események" + +#: buddypress/screens/group-events.php:17 +#: buddypress/screens/my-group-events.php:17 +msgid "Group Events" +msgstr "Csoport események" + +#: buddypress/screens/my-events.php:56 +msgid "Add Event" +msgstr "Esemény hozzáadása" + +#: buddypress/screens/my-locations.php:47 +#: buddypress/bp-em-core.php:96 +msgid "My Locations" +msgstr "Helyszíneim" + +#: buddypress/screens/my-locations.php:61 +msgid "Edit Location" +msgstr "Helyszín szerkesztése" + +#: buddypress/screens/my-locations.php:63 +msgid "Add Location" +msgstr "Helyszín hozzáadása" + +#: buddypress/screens/my-bookings.php:32 +#: buddypress/bp-em-core.php:106 +msgid "My Event Bookings" +msgstr "Foglalások" + +#: buddypress/screens/settings.php:26 +msgid "Events Settings Header" +msgstr "Események beállítások fejléc" + +#: buddypress/screens/settings.php:30 +msgid "Events Settings" +msgstr "Események beállításai" + +#: buddypress/screens/settings.php:38 +msgid "Changes Saved." +msgstr "Változások mentve." + +#: buddypress/screens/settings.php:44 +msgid "Do you love clicking checkboxes?" +msgstr "Szeret checkboxokat pipálgatni?" + +#: buddypress/bp-em-core.php:66 +msgid "My Profile" +msgstr "Profilom" + +#: buddypress/bp-em-core.php:149 +msgid "Events (%s)" +msgstr "Események (%s)" + +#: buddypress/bp-em-notifications.php:50 +msgid "Action One" +msgstr "1-es akció" + +#: buddypress/bp-em-notifications.php:56 +msgid "Action Two" +msgstr "2-es akció" + +#: buddypress/bp-em-notifications.php:87 +#: buddypress/bp-em-notifications.php:89 +#: buddypress/bp-em-notifications.php:96 +#: buddypress/bp-em-notifications.php:98 +#: buddypress/bp-em-notifications.php:104 +#: buddypress/bp-em-notifications.php:106 +#: em-install.php:456 +msgid "My Bookings" +msgstr "Foglalásaim" + +#: buddypress/bp-em-notifications.php:87 +msgid "You have a pending booking" +msgstr "Van egy függÅ‘ foglalásod" + +#: buddypress/bp-em-notifications.php:89 +msgid "You have %s pending bookings" +msgstr "%s függÅ‘ foglalásod van" + +#: buddypress/bp-em-notifications.php:96 +msgid "You have a confirmed booking" +msgstr "Van egy elfogadott foglalásod" + +#: buddypress/bp-em-notifications.php:98 +msgid "You have %s confirmed bookings" +msgstr "%s megerÅ‘sített foglalásod van" + +#: buddypress/bp-em-notifications.php:104 +msgid "A user cancelled a booking" +msgstr "Egy felhasználó lemondta a foglalását" + +#: buddypress/bp-em-notifications.php:106 +msgid "%s users cancelled bookings." +msgstr "%s felhasználó lemondta a foglalását." + +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Rendezvény helyszínek" + +#: widgets/em-locations.php:19 +#, fuzzy +msgid "Display a list of event locations on Events Manager." +msgstr "Listájának megjelenítése rendezvény helyszínek az Események parancsra." + +#: widgets/em-locations.php:44 +msgid "No locations" +msgstr "Nincs helyszín" + +#: widgets/em-locations.php:67 +#: widgets/em-events.php:76 +#: widgets/em-calendar.php:58 +msgid "Title" +msgstr "Cím" + +#: widgets/em-locations.php:71 +#, fuzzy +msgid "Show number of locations" +msgstr "Mutasd számú helyen" + +#: widgets/em-locations.php:75 +#, fuzzy +msgid "Scope of the locations" +msgstr "Terjedelme a helyszínek" + +#: widgets/em-locations.php:85 +msgid "Order of the locations" +msgstr "A helyszínek sorrendje" + +#: widgets/em-locations.php:87 +msgid "Ascendant" +msgstr "NövekvÅ‘" + +#: widgets/em-locations.php:88 +msgid "Descendant" +msgstr "CsökkenÅ‘" + +#: widgets/em-locations.php:92 +#: widgets/em-events.php:128 +msgid "List item format" +msgstr "Listaelem formátuma" + +#: widgets/em-events.php:21 +#: widgets/em-events.php:52 +#: widgets/em-events.php:137 +msgid "all events" +msgstr "az összes esemény" + +#: widgets/em-events.php:23 +#, fuzzy +msgid "Display a list of events on Events Manager." +msgstr "Listájának megjelenítése események Events Manager." + +#: widgets/em-events.php:49 +msgid "No events" +msgstr "Nincs esemény" + +#: widgets/em-events.php:80 +msgid "Number of events" +msgstr "Események száma" + +#: widgets/em-events.php:84 +msgid "Scope" +msgstr "Láthatóság" + +#: widgets/em-events.php:94 +msgid "Order By" +msgstr "Rendezés" + +#: widgets/em-events.php:98 +msgid "start date, start time, event name" +msgstr "kezdÅ‘ dátum, kezdési idÅ‘pont, esemény neve" + +#: widgets/em-events.php:99 +msgid "name, start date, start time" +msgstr "név, kezdÅ‘ dátum, kezdési idÅ‘pont" + +#: widgets/em-events.php:100 +msgid "name, end date, end time" +msgstr "név, záró dátum, befejezési idÅ‘" + +#: widgets/em-events.php:101 +msgid "end date, end time, event name" +msgstr "záró dátuma, befejezési idÅ‘, az esemény neve" + +#: widgets/em-events.php:112 +msgid "Order" +msgstr "Rendezés" + +#: widgets/em-events.php:132 +#, fuzzy +msgid "Show all events link at bottom?" +msgstr "Összes események link alján?" + +#: widgets/em-events.php:136 +#, fuzzy +msgid "All events link text?" +msgstr "Minden esemény hivatkozás szövege?" + +#: widgets/em-calendar.php:16 +#, fuzzy +msgid "Display your events in a calendar widget." +msgstr "KijelzÅ‘ az események a naptárban widget." + +#: widgets/em-calendar.php:17 +msgid "Events Calendar" +msgstr "Esemény-naptár" + +#: widgets/em-calendar.php:62 +msgid "Show Long Events?" +msgstr "Hosszú események megjelenítése?" + +#: classes/em-tickets-bookings.php:69 +#: classes/em-tickets-bookings.php:70 +#: classes/em-booking.php:133 +#: classes/em-booking.php:134 +#: classes/em-booking.php:143 +#: classes/em-booking.php:152 +#: classes/em-booking.php:158 +msgid "There was a problem saving the booking." +msgstr "Hiba történt a foglalás mentésekor." + +#: classes/em-tickets-bookings.php:91 +#: classes/em-bookings.php:89 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "Nem lehet foglalni, nincs elérhetÅ‘ hely!" + +#: classes/em-tickets-bookings.php:141 +#: classes/em-bookings.php:106 +#: classes/em-booking.php:154 +#: classes/em-booking.php:160 +#: classes/em-booking.php:370 +#: classes/em-booking.php:372 +msgid "Booking" +msgstr "Foglalás" + +#: classes/em-tickets-bookings.php:169 +#: classes/em-tickets.php:130 +msgid "Standard" +msgstr "Szabványos" + +#: classes/em-categories.php:206 +#: classes/em-location.php:144 +#: classes/em-location.php:152 +msgid "Could not save the %s details due to a database error." +msgstr "Nem sikerült menteni a(z) %s adatait egy adatbázis hiba miatt." + +#: classes/em-mailer.php:67 +msgid "Please supply a valid email format." +msgstr "Kérjük érvényes e-mail formátumot adjon meg." + +#: classes/em-ticket.php:51 +msgid "Standard Ticket" +msgstr "Ãltalános jegy" + +#: classes/em-ticket.php:101 +#: classes/em-ticket-booking.php:67 +#: classes/em-booking.php:125 +msgid "Changes saved" +msgstr "Változások mentve." + +#: classes/em-ticket.php:106 +msgid "Ticket created" +msgstr "Jegy létrehozva." + +#: classes/em-ticket.php:109 +#: classes/em-ticket.php:110 +#: classes/em-ticket.php:114 +#: classes/em-ticket.php:115 +msgid "There was a problem saving the ticket." +msgstr "Hiba történt a jegy mentése közben." + +#: classes/em-ticket.php:159 +#: classes/em-ticket-booking.php:102 +#: classes/em-event.php:578 +msgid "Missing fields: " +msgstr "Hiányzó mezÅ‘k:" + +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "Nem lehet törölni egy jegyet, amin foglalás van." + +#: classes/em-ticket-booking.php:72 +msgid "Ticket booking created" +msgstr "Jegyfoglalás létrehozva" + +#: classes/em-ticket-booking.php:75 +#: classes/em-ticket-booking.php:76 +#: classes/em-ticket-booking.php:80 +#: classes/em-ticket-booking.php:81 +msgid "There was a problem saving the ticket booking." +msgstr "Hiba történt a jegyfoglalás mentése közben." + +#: classes/em-tickets.php:104 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "Nem törölhet jegyeket, amíg van hozzájuk kapcsol foglalás. ElÅ‘ször törlje ezeket a foglalásokat." + +#: classes/em-location.php:50 +msgid "The location name" +msgstr "A helyszín neve" + +#: classes/em-location.php:50 +msgid "The location address" +msgstr "A helyszín címe" + +#: classes/em-location.php:50 +msgid "The location town" +msgstr "A helyszín városa" + +#: classes/em-location.php:50 +msgid "The country" +msgstr "Az ország" + +#: classes/em-location.php:111 +#: classes/em-location.php:113 +#: classes/em-category.php:70 +msgid " is required." +msgstr " nincs megadva." + +#: classes/em-location.php:142 +#: classes/em-category.php:90 +msgid "%s successfully updated." +msgstr "%s sikeresen frissítve." + +#: classes/em-location.php:150 +#: classes/em-category.php:96 +msgid "%s successfully added." +msgstr "%s sikeresen hozzáadva." + +#: classes/em-location.php:157 +#: classes/em-category.php:100 +msgid "You do not have permission to create/edit %s." +msgstr "Nincs engedélye létrehozni/szerkeszteni %s." + +#: classes/em-location.php:194 +#: em-actions.php:109 +msgid "%s successfully deleted." +msgstr "%s sikeresen törölve." + +#: classes/em-location.php:196 +#: em-actions.php:112 +msgid "%s could not be deleted." +msgstr "%s nem törölhetÅ‘." + +#: classes/em-location.php:199 +msgid "You do not have permission to delete %s." +msgstr "Nincs engedélye %s törölni." + +#: classes/em-event.php:213 +msgid "WARNING: This is a recurring event." +msgstr "FIGYELEM: Ez egy ismétlÅ‘dÅ‘ esemény." + +#: classes/em-event.php:213 +#, fuzzy +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Módosításai az esemény hatására az összes kiújulás az esemény, hogy el kell hagyni és újra, és az elÅ‘zÅ‘ foglalás törlésre kerül! Bármikor módosíthatja az egyes kiújulás és kettéválasztja Å‘ket a visszatérÅ‘ esemény." + +#: classes/em-event.php:215 +#, fuzzy +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "FIGYELEM: Ez a visszaesés egy sor ismétlÅ‘dÅ‘ események." + +#: classes/em-event.php:215 +#, fuzzy +msgid "If you update this event data and save, it will become an independent event, and will not be deleted or modified automatically if you reschedule the original recurring event details." +msgstr "Ha frissíti az esemény adatait, és mentse, akkor lesz független esemény, és nem törlÅ‘dik, vagy módosítani automatikusan, ha átütemezni az eredeti visszatérÅ‘ esemény részleteit." + +#: classes/em-event.php:218 +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "FIGYELEM: Ez az esemény a(z) \"%s\" csoporthoz tartozik. A többi csoport adminisztrátor is szerkesztheti ezt az eseményt!" + +#: classes/em-event.php:339 +#, fuzzy +msgid "There was a problem saving the location so event was not saved." +msgstr "Hiba történt mentés helyét, így ha nem volt mentve." + +#: classes/em-event.php:380 +#: classes/em-event.php:431 +#, fuzzy +msgid "Something went wrong with creating tickets." +msgstr "Valami elromlott létrehozásával jegyeket." + +#: classes/em-event.php:392 +#: classes/em-event.php:442 +#, fuzzy +msgid "Something went wrong with the recurrence update..." +msgstr "Valami elromlott a kiújulás frissítést ..." + +#: classes/em-event.php:393 +#: classes/em-event.php:443 +#, fuzzy +msgid "There was a problem saving the recurring events." +msgstr "Hiba megtakarítás az ismétlÅ‘dÅ‘ eseményeket." + +#: classes/em-event.php:398 +msgid "New recurrent event inserted!" +msgstr "Új ismétlÅ‘dÅ‘ esemény lett beszúrva!" + +#: classes/em-event.php:402 +msgid "New event successfully inserted!" +msgstr "Új esemény lett sikeresen beszúrva!" + +#: classes/em-event.php:405 +#: classes/em-event.php:450 +msgid "Could not save the event details due to a database error." +msgstr "Nem lehetett elmenteni az esemény részleteit egy adatbázis hiba miatt." + +#: classes/em-event.php:429 +#: classes/em-event.php:454 +msgid "updated" +msgstr "frissítve" + +#: classes/em-event.php:446 +msgid "Recurrence updated!" +msgstr "IsmétlÅ‘dés frissítve!" + +#: classes/em-event.php:531 +msgid "Event %s." +msgstr "Esemény %s." + +#: classes/em-event.php:535 +#: classes/em-booking.php:437 +#: classes/em-booking.php:438 +msgid "Booking could not be %s." +msgstr "Foglalást nem lehet %s" + +#: classes/em-event.php:553 +msgid "%s successfully duplicated." +msgstr "%s sikeresen duplikálva." + +#: classes/em-event.php:557 +msgid "You are not allowed to manage this %s." +msgstr "Ön nem jogosult kezelni ezt a(z) %s." + +#: classes/em-event.php:557 +#: em-actions.php:93 +msgid "event" +msgstr "esemény" + +#: classes/em-event.php:581 +msgid "Since the event is repeated, you must specify an event date." +msgstr "Mivel az esemény ismétlÅ‘dik, meg kell adnia az esemény idÅ‘pontját." + +#: classes/em-event.php:585 +msgid "Events cannot start after they end." +msgstr "Események nem kezdÅ‘dhetnek el miután véget értek." + +#: classes/em-event.php:588 +#, fuzzy +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "IdÅ‘pontok kell helyes formázást. Kérjük, használja a Dátumválasztó biztosított." + +#: classes/em-event.php:876 +#: classes/em-event.php:885 +msgid "Profile" +msgstr "Profil" + +#: classes/em-event.php:1240 +msgid "the first %s of the month" +msgstr "A hónap elsÅ‘ %s" + +#: classes/em-event.php:1240 +msgid "the second %s of the month" +msgstr "A hónap második %s" + +#: classes/em-event.php:1240 +msgid "the third %s of the month" +msgstr "A hónap harmadik %s" + +#: classes/em-event.php:1240 +msgid "the fourth %s of the month" +msgstr "A hónap negyedik %s" + +#: classes/em-event.php:1240 +msgid "the last %s of the month" +msgstr "A hónap utolsó %s" + +#: classes/em-event.php:1241 +msgid "From %1$s to %2$s" +msgstr "%1$s-tól %2$s-ig" + +#: classes/em-event.php:1243 +msgid "everyday" +msgstr "mindennap" + +#: classes/em-event.php:1245 +msgid "every %s days" +msgstr "minden %s nap" + +#: classes/em-event.php:1254 +msgid "every week" +msgstr "minden héten" + +#: classes/em-event.php:1256 +msgid "every %s weeks" +msgstr "minden %s héten" + +#: classes/em-event.php:1267 +msgid "every %s months" +msgstr "minden %s hónapban" + +#: classes/em-person.php:61 +msgid "Email" +msgstr "E-mail" + +#: classes/em-bookings.php:69 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Sikeres foglalás! A visszaigazolás folyamatban (amint véglegesítettük a foglalást, e-mailt küldünk!)..." + +#: classes/em-bookings.php:71 +msgid "Booking successful." +msgstr "Foglalás sikeres." + +#: classes/em-bookings.php:74 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "Azonban problémák adódtak az értesítÅ‘ emailek küldésével, vagy neked vagy a kapcsolattartónak. Kérjük vegye fel velünk a kapcsolatok személyesen, hogy biztos legyen a foglalása!" + +#: classes/em-bookings.php:86 +msgid "Booking could not be created" +msgstr "Foglalás nem hozható létre" + +#: classes/em-bookings.php:106 +msgid "%s created." +msgstr "%s létrehotva." + +#: classes/em-bookings.php:249 +#: classes/em-bookings.php:255 +msgid "Bookings %s. Mails Sent." +msgstr "Foglalás %s. Levelek elküldve." + +#: classes/em-bookings.php:259 +msgid "An error occurred." +msgstr "Hiba történt." + +#: classes/em-bookings.php:528 +msgid "Booking details for \"%s\" as of %s" +msgstr "Foglalási adatok a \"%s\", mint %s" + +#: classes/em-category.php:31 +msgid "The category name" +msgstr "A kategória neve" + +#: classes/em-booking.php:98 +msgid "Rejected" +msgstr "Visszautasítva" + +#: classes/em-booking.php:99 +#: em-actions.php:354 +msgid "Cancelled" +msgstr "Lemondva" + +#: classes/em-booking.php:100 +msgid "Awaiting Online Payment" +msgstr "Online fizetésre vár" + +#: classes/em-booking.php:101 +msgid "Awaiting Payment" +msgstr "Fizetésre vár" + +#: classes/em-booking.php:130 +msgid "Your booking has been recorded" +msgstr "Az Ön foglalása felvételre került" + +#: classes/em-booking.php:154 +#: classes/em-booking.php:160 +msgid "You cannot manage this %s." +msgstr "Nem tudja kezelni ezt a %s." + +#: classes/em-booking.php:210 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Nem létezÅ‘ jegyet próbálsz meg lefoglalni!" + +#: classes/em-booking.php:231 +msgid "You must request at least one space to book an event." +msgstr "Legalább egy helyet le kell foglalnod!" + +#: classes/em-booking.php:370 +msgid "%s deleted" +msgstr "%s törölve" + +#: classes/em-booking.php:372 +msgid "%s could not be deleted" +msgstr "%s nem törölhetÅ‘" + +#: classes/em-booking.php:416 +msgid "Not approved, spaces full." +msgstr "Nem engedélyezett, mindegyik hely betelt." + +#: classes/em-booking.php:424 +msgid "Booking %s." +msgstr "Foglalás %s." + +#: classes/em-booking.php:427 +msgid "Mail Sent." +msgstr "Levél kiküldve." + +#: classes/em-booking.php:430 +#: classes/em-booking.php:431 +msgid "ERROR : Mail Not Sent." +msgstr "HIBA : Levél nem lett elküldve." + +#: classes/em-booking.php:453 +msgid "Booking note successfully added." +msgstr "Foglalás megjegyzés sikeresen hozzáadva." + +#: classes/em-booking.php:538 +#, fuzzy +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "MegerÅ‘sítÅ‘ e-mailt nem lehet elküldeni a kapcsolattartó személy. Bejegyzést kell ütött az e-mail (csak az admin látja ezt a figyelmeztetést)." + +#: classes/em-booking.php:545 +#, fuzzy +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "MegerÅ‘sítÅ‘ e-mailt nem lehet elküldeni admin. Bejegyzést kell ütött az e-mail (csak az admin látja ezt a figyelmeztetést)." + +#: classes/em-object.php:731 +msgid "However, the image could not be saved." +msgstr "A képet azonban nem lehet menteni." + +#: classes/em-object.php:733 +msgid "The image could not be saved" +msgstr "A kép nem menthetÅ‘" + +#: classes/em-object.php:737 +msgid "However, the image could not be saved:" +msgstr "A képet azonban nem lehet menteni:" + +#: classes/em-object.php:754 +msgid "The image file is too big! Maximum size:" +msgstr "A kép fájl túl nagy! Maximális méret:" + +#: classes/em-object.php:759 +msgid "The image is too big! Maximum size allowed:" +msgstr "A kép túl nagy! Maximális megengedett méret:" + +#: classes/em-object.php:762 +msgid "The image is in a wrong format!" +msgstr "A képnek rossz a formátuma!" + +#: classes/em-people.php:81 +msgid "User deleted by administrators" +msgstr "A felhasználót egy adminisztrátor törölte" + +#: em-install.php:225 +msgid "Uncategorized" +msgstr "Nincs kategorizálva" + +#: em-install.php:280 +#, fuzzy +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_NAME on #F #j, #Y. He wants to reserve #_BOOKINGSPACES spaces.
                          Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                          Yours faithfully,
                          Events Manager - http://wp-events-plugin.com" +msgstr "# _BOOKINGNAME (# _BOOKINGEMAIL) Vesz részt # _NAME a # F # j # Y. Azt akarja foglalni # _BOOKINGSPACES terek.
                          Most van # _BOOKEDSPACES fenntartott helyek, # _AVAILABLESPACES még mindig áll.
                          Tisztelettel:
                          Események Manager - http://wp-events-plugin.com" + +#: em-install.php:280 +#: em-install.php:281 +#: em-install.php:282 +#: em-install.php:283 +#: em-install.php:284 +#: em-install.php:285 +msgid "

                          -------------------------------
                          Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

                          -------------------------------
                          Powered by Events Manager - http://wp-events-plugin.com" + +#: em-install.php:281 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_NAME on #F #j, #Y. He wanted to reserve #_BOOKINGSPACES spaces.
                          Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                          Yours faithfully,
                          Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) lemondta a foglalását a(z) #_NAME eseményre on #Y. #F #j. Eredetileg #_BOOKINGSPACES helyet foglalt le.
                          Ãgy már csak #_BOOKEDSPACES hely van lefoglalva, #_AVAILABLESPACES még továbbra is elérhetÅ‘.
                          Üdvözlettel,
                          Rendezvényszervező" + +#: em-install.php:282 +msgid "Dear #_BOOKINGNAME,
                          you have successfully reserved #_BOOKINGSPACES space/spaces for #_NAME.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Kedves #_BOOKINGNAME,
                          Ön sikeresen lefoglalt #_BOOKINGSPACES helyet a(z) # _NAME eseményre.
                          Tisztelettel:
                          #_CONTACTNAME" + +#: em-install.php:283 +msgid "Dear #_BOOKINGNAME,
                          You have requested #_BOOKINGSPACES space/spaces for #_NAME.
                          Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Kedves # _BOOKINGNAME,
                          Ön # _BOOKINGSPACES helyet igényelt a(z) #_NAME eseményre.
                          A foglalás jelenleg függőben van. A jóváhagyást követően kap egy automatikus visszaigazolást.
                          Tisztelettel:
                          #_CONTACTNAME" + +#: em-install.php:284 +msgid "Dear #_BOOKINGNAME,
                          Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been rejected.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Kedves #_BOOKINGNAME,
                          A(z) #_BOOKINGSPACES foglalásodat #Y. #F #j-án/én megrendezésre kerülő #_NAME eseményre visszautasítottuk.
                          Üdvözlettel,
                          #_CONTACTNAME" + +#: em-install.php:285 +msgid "Dear #_BOOKINGNAME,
                          Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been cancelled.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Kedves #_BOOKINGNAME,
                          Tudomásul vettük, hogy #_BOOKINGSPACES foglalásodat #Y. #F #j-án/én megrendezésre kerülő #_NAME eseményre lemondtad.
                          Üdvözlettel,
                          #_CONTACTNAME" + +#: em-install.php:344 +#: em-install.php:349 +#: em-install.php:375 +msgid "No %s" +msgstr "Nincs %s" + +#: em-install.php:368 +#: em-debug.php:18 +msgid "
                        • No events in this location
                        • " +msgstr "
                        • Nincs esemény ezen a helyszínen
                        • " + +#: em-install.php:434 +msgid "New booking" +msgstr "Új foglalás" + +#: em-install.php:436 +#: em-install.php:444 +msgid "Booking Cancelled" +msgstr "Foglalás lemondva" + +#: em-install.php:438 +msgid "Booking Pending" +msgstr "Foglalás függÅ‘ben" + +#: em-install.php:440 +msgid "Booking Rejected" +msgstr "Foglalás visszautasítva" + +#: em-install.php:442 +msgid "Booking Confirmed" +msgstr "Foglalás megerÅ‘sítve" + +#: em-install.php:447 +msgid "Powered by" +msgstr "Powered by" + +#: em-install.php:448 +msgid "Bookings - #_NAME" +msgstr "Foglalások - #_NAME" + +#: em-template-tags-depreciated.php:146 +msgid "Ach, some problems here:" +msgstr "Ahh, néhány probléma van:" + +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "Nincs jegy azonosító megadva" + +#: em-actions.php:93 +msgid "You are now viewing the duplicated %s." +msgstr "Most a duplikált %s nézi." + +#: em-actions.php:170 +#: em-actions.php:240 +msgid "%s successfully deleted" +msgstr "%s sikeresen törölve" + +#: em-actions.php:239 +msgid "EM_Categories" +msgstr "EM_Categories" + +#: em-actions.php:286 +#, fuzzy +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Egy új felhasználói fiókot hozott létre az Ön számára. Kérjük, ellenÅ‘rizze az e-mail hozzáférési részleteket." + +#: em-actions.php:293 +#, fuzzy +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Az email már létezik a rendszerben, kérjük jelentkezzen be a regisztráció folytatásához a foglalás." + +#: em-actions.php:298 +#, fuzzy +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Hiba létre egy felhasználói fiókot, kérjük lépjen kapcsolatba a honlap adminisztrátorával." + +#: em-actions.php:303 +msgid "You must log in or register to make a booking." +msgstr "Be kell jelentkeznie, vagy regisztrálnia a foglaláshoz." + +#: em-actions.php:343 +msgid "You already have booked a seat at this event." +msgstr "Már foglalt helyet erre az eseményre." + +#: em-actions.php:354 +msgid "Booking %s" +msgstr "Foglalás %s" + +#: em-actions.php:366 +#: em-bookings.php:77 +msgid "You must log in to cancel your booking." +msgstr "Be kell jelentkeznie, hogy lemondhassa a foglalást." + +#: em-bookings.php:97 +msgid "Book now!" +msgstr "Foglaljon most!" + +#: em-bookings.php:171 +#, fuzzy +msgid "You must register or log in in order to create and manage your bookings." +msgstr "Be kell regisztrálni , vagy jelentkezzen be annak érdekében, hogy létrehozni és kezelni a foglalásokat." + +#: em-bookings.php:219 +#: em-bookings.php:233 +msgid "Cancel your booking" +msgstr "Foglalás lemondása" + +#: em-debug.php:44 +#, fuzzy +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Ön Events Manager-debug módban. A be debug módban ki, menj a beállítások oldalon." + +#: em-functions.php:9 +#, fuzzy +msgid "" +"

                          Hey, %s, welcome to Events Manager! We hope you like it around here.

                          \r\n" +"\t\t

                          Now it's time to insert events lists through widgets, template tags or shortcodes.

                          \r\n" +"\t\t

                          By the way, have you taken a look at the Settings page? That's where you customize the way events and locations are displayed.

                          \r\n" +"\t\t

                          What? Tired of seeing this advice? I hear you, click here and you won't see this again!

                          " +msgstr "

                          Hé,%s, szívesen események menedzser! Reméljük, tetszik itt.

                          Most itt az ideje, hogy helyezze események listáját a kütyü , template tag vagy shortcodes .

                          By the way, már akkor tett egy pillantást a beállítások oldal ? Ez az, ahol testreszabhatja az utat események és helyszínek jelennek meg.

                          Mi az? Unod már látni ezt a tanácsot? Hallom, kattintson ide , és nem jelenik meg még egyszer!

                          " + +#: em-functions.php:142 +msgid "Today's events" +msgstr "Mai események" + +#: em-functions.php:143 +msgid "Tomorrow's events" +msgstr "Holnapi események" + +#: em-functions.php:144 +msgid "Events this month" +msgstr "Ehavi események" + +#: em-functions.php:145 +msgid "Events next month" +msgstr "JövÅ‘ havi események" + +#: em-functions.php:146 +msgid "Events within 2 months" +msgstr "2 hónapon belüli események" + +#: em-functions.php:147 +msgid "Events within 3 months" +msgstr "3 hónapon belüli események" + +#: em-functions.php:148 +msgid "Events within 6 months" +msgstr "Féléven belüli események" + +#: em-functions.php:149 +msgid "Events within 12 months" +msgstr "12 hónapon belüli események" + +#: em-functions.php:181 +msgid "Trying to perform an illegal action." +msgstr "Illegális műveletet próbál végrehajtani." + +#: em-functions.php:252 +msgid "ERROR: Please enter a username." +msgstr "HIBA: Kérjük, adjon meg egy felhasználónevet." + +#: em-functions.php:254 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "HIBA: Ez a felhasználónév érvénytelen, mert van benne illegális karakter. Kérjük, adjon meg egy érvényes felhasználónevet." + +#: em-functions.php:257 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "HIBA: Ez a felhasználónév már regisztrálva van, kérjük válasszon másikat." + +#: em-functions.php:262 +msgid "ERROR: Please type your e-mail address." +msgstr "HIBA: Kérjük, írja be e-mail címét." + +#: em-functions.php:264 +msgid "ERROR: The email address isn’t correct." +msgstr "HIBA: Az email cím nem helyes." + +#: em-functions.php:267 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "HIBA: Az email már regisztrálva van, kérjük válasszon másikat." + +#: em-functions.php:285 +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "HIBA: Nem sikerült a regisztráci... kérjük, forduljon a webmesterhez!" + +#: em-functions.php:320 +msgid "New user registration on your blog %s:" +msgstr "Új felhasználó a blogon %s:" + +#: em-functions.php:321 +msgid "Username: %s" +msgstr "Felhasználónév: %s" + +#: em-functions.php:322 +msgid "E-mail: %s" +msgstr "E-mail: %s" + +#: em-functions.php:323 +msgid "[%s] New User Registration" +msgstr "[%s] Új felhasználó regisztrációja" + +#: em-functions.php:334 +msgid "[%s] Your username and password" +msgstr "[%s] A felhasználóneve és jelszava" + +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Plugin URI of the plugin/theme +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Author URI of the plugin/theme +msgid "http://wp-events-plugin.com" +msgstr "http://wp-events-plugin.com" + +#. Description of the plugin/theme +msgid "Event registration and booking management for Wordpress. Recurring events, locations, google maps, rss, ical, booking registration and more!" +msgstr "Esemény regisztráció és foglalás menedzsment Wordpresshez. IsmétlÅ‘dÅ‘ események, helyszínek, Google Maps, rss, iCal, foglalás regisztráció és még sok egyéb!" + +#. Author of the plugin/theme +msgid "Marcus Sykes" +msgstr "Marcus Sykes" + +msgid "Availability" +msgstr "ElérhetÅ‘ség" + +msgid "Events current and next month" +msgstr "Ehavi és következÅ‘ havi események" + +msgid "Booker" +msgstr "Foglaló" + diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-it_IT.mo b/wp-content/plugins/events-manager/includes/langs/dbem-it_IT.mo new file mode 100644 index 0000000..503eef5 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-it_IT.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-it_IT.po b/wp-content/plugins/events-manager/includes/langs/dbem-it_IT.po new file mode 100644 index 0000000..f4863c7 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-it_IT.po @@ -0,0 +1,5274 @@ +#@ dbem +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.171\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-09-20 20:44:48+00:00\n" +"PO-Revision-Date: 2012-02-13 16:08+0100\n" +"Last-Translator: Marcus Sykes \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" + +#: buddypress/bp-em-activity.php:48 +#, php-format +msgid "%s added the event %s" +msgstr "%s ha aggiunto l'evento %s" + +#: buddypress/bp-em-activity.php:86 +#, php-format +msgid "%s is attending %s." +msgstr "%s frequenta %s." + +#: buddypress/bp-em-activity.php:88 +#, php-format +msgid "%s will not be attending %s anymore." +msgstr "%s non sarà più presente a %s ." + +#: buddypress/bp-em-activity.php:94 +#, php-format +msgid "%s is attending %s of the group %s." +msgstr "%s frequenta %s del gruppo %s." + +#: buddypress/bp-em-activity.php:96 +#, php-format +msgid "%s will not be attending %s of group %s anymore." +msgstr "%s non sarà più presente a %s del gruppo %s." + +#: admin/em-ms-options.php:165 +#: admin/em-options.php:397 +#: admin/em-options.php:435 +#: admin/em-options.php:850 +#: buddypress/bp-em-core.php:12 +#: buddypress/bp-em-core.php:51 +#: buddypress/bp-em-core.php:79 +#: buddypress/bp-em-core.php:147 +#: buddypress/bp-em-core.php:174 +#: buddypress/screens/profile.php:27 +#: em-actions.php:102 +#: em-install.php:336 +#: em-install.php:379 +#: em-install.php:429 +#: em-install.php:430 +#: em-install.php:454 +#: em-install.php:672 +#: em-posts.php:116 +#: em-posts.php:119 +#: em-posts.php:121 +#: em-template-tags.php:179 +#: widgets/em-events.php:13 +msgid "Events" +msgstr "Eventi" + +#: admin/em-options.php:1031 +#: em-functions.php:473 +msgid "Yes" +msgstr "Sì" + +#: admin/em-options.php:1032 +#: em-functions.php:473 +msgid "No" +msgstr "No" + +#: buddypress/bp-em-notifications.php:24 +#: buddypress/bp-em-notifications.php:26 +#: buddypress/bp-em-notifications.php:33 +#: buddypress/bp-em-notifications.php:35 +#: buddypress/bp-em-notifications.php:41 +#: buddypress/bp-em-notifications.php:43 +#: em-install.php:525 +#: em-install.php:709 +#: em-install.php:762 +msgid "My Bookings" +msgstr "Le mie prenotazioni" + +#: buddypress/bp-em-notifications.php:24 +msgid "You have a pending booking" +msgstr "Hai una prenotazione in sospeso" + +#: buddypress/bp-em-notifications.php:26 +#, php-format +msgid "You have %s pending bookings" +msgstr "Hai %s prenotazioni in attesa" + +#: buddypress/bp-em-notifications.php:33 +msgid "You have a confirmed booking" +msgstr "Hai una prenotazione confermata" + +#: buddypress/bp-em-notifications.php:35 +#, php-format +msgid "You have %s confirmed bookings" +msgstr "Hai %s prenotazioni confermate" + +#: buddypress/bp-em-notifications.php:41 +msgid "A user cancelled a booking" +msgstr "Un utente ha annullato la prenotazione" + +#: buddypress/bp-em-notifications.php:43 +#, php-format +msgid "%s users cancelled bookings." +msgstr "%s utenti hanno annullato la prenotazione." + +#: buddypress/bp-em-core.php:122 +#: buddypress/screens/my-locations.php:32 +msgid "My Locations" +msgstr "I miei Luoghi" + +#: buddypress/screens/my-locations.php:49 +#: em-events.php:166 +#: em-posts.php:216 +msgid "Edit Location" +msgstr "Modifica Luogo" + +#: buddypress/screens/my-locations.php:47 +#: em-events.php:164 +#: em-posts.php:213 +msgid "Add Location" +msgstr "Aggiungi luogo" + +#: buddypress/screens/group-events.php:20 +#: buddypress/screens/my-group-events.php:20 +msgid "Group Events" +msgstr "Gruppo Eventi" + +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Al momento stai visualizzando la pagina pubblica, questo è ciò che gli altri utenti vedranno." + +#: buddypress/bp-em-core.php:110 +#: buddypress/screens/my-events.php:32 +#: templates/buddypress/profile.php:6 +msgid "My Events" +msgstr "I miei Eventi" + +#: buddypress/screens/my-events.php:50 +#: em-events.php:153 +#: em-posts.php:125 +msgid "Edit Event" +msgstr "Modifica evento" + +#: buddypress/screens/my-events.php:53 +#: em-events.php:156 +#: em-posts.php:122 +#: templates/buddypress/profile.php:19 +msgid "Add Event" +msgstr "Aggiungi Evento" + +#: buddypress/bp-em-core.php:99 +#: buddypress/screens/attending.php:23 +#: templates/buddypress/profile.php:24 +msgid "Events I'm Attending" +msgstr "Eventi a cui partecipo" + +#: buddypress/bp-em-core.php:134 +#: buddypress/screens/my-bookings.php:30 +msgid "My Event Bookings" +msgstr "La mie Prenotazioni agli eventi." + +#: buddypress/bp-em-core.php:90 +msgid "My Profile" +msgstr "Il mio profilo" + +#: em-posts.php:124 +#: em-posts.php:169 +#: em-posts.php:215 +#: templates/forms/event/bookings.php:86 +msgid "Edit" +msgstr "Modifica" + +#: admin/bookings/em-events.php:101 +#: admin/bookings/em-pending.php:101 +#: admin/bookings/em-person.php:86 +#: admin/em-ms-options.php:162 +#: admin/em-options.php:293 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:858 +#: admin/em-options.php:920 +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#: admin/em-options.php:1364 +#: classes/em-event-posts-admin.php:163 +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-event.php:655 +#: classes/em-event.php:1159 +#: em-actions.php:102 +#: em-install.php:386 +#: em-install.php:416 +#: em-posts.php:120 +#: templates/forms/event-editor.php:12 +#: templates/templates/my-bookings.php:46 +msgid "Event" +msgstr "Evento" + +#: templates/templates/ical.php:12 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Calendario" + +#: widgets/em-calendar.php:17 +msgid "Display your events in a calendar widget." +msgstr "Visualizzare gli eventi in un widget calendario." + +#: widgets/em-calendar.php:18 +msgid "Events Calendar" +msgstr "Calendario Eventi" + +#: widgets/em-calendar.php:60 +#: widgets/em-events.php:97 +#: widgets/em-locations.php:72 +msgid "Title" +msgstr "Titolo" + +#: widgets/em-calendar.php:64 +msgid "Show Long Events?" +msgstr "Mostra eventi lunghi?" + +#: widgets/em-calendar.php:68 +#: widgets/em-events.php:145 +msgid "Category IDs" +msgstr "ID Categoria" + +# @ dbem +#: widgets/em-calendar.php:70 +#: widgets/em-events.php:147 +msgid "1,2,3 or 2 (0 = all)" +msgstr "1,2,3 o 2 (0 = tutti)" + +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Luoghi dell'evento" + +#: widgets/em-locations.php:24 +msgid "Display a list of event locations on Events Manager." +msgstr "Visualizza un elenco di luoghi per gli eventi di Events Manager." + +#: widgets/em-locations.php:49 +msgid "No locations" +msgstr "Nessun luogo" + +#: widgets/em-locations.php:76 +msgid "Show number of locations" +msgstr "Mostra il numero di luoghi" + +#: widgets/em-locations.php:80 +msgid "Scope of the locations" +msgstr "Capienza dei luoghi" + +#: widgets/em-locations.php:103 +msgid "Order of the locations" +msgstr "Ordine dei luoghi" + +#: widgets/em-events.php:150 +#: widgets/em-locations.php:110 +msgid "List item format" +msgstr "Lista elemento di formato" + +#: widgets/em-events.php:22 +#: widgets/em-events.php:73 +#: widgets/em-events.php:159 +msgid "all events" +msgstr "tutti gli eventi" + +#: widgets/em-events.php:30 +msgid "Display a list of events on Events Manager." +msgstr "Visualizzare un elenco di eventi su Events Manager." + +#: widgets/em-events.php:70 +msgid "No events" +msgstr "Non ci sono eventi" + +#: widgets/em-events.php:101 +msgid "Number of events" +msgstr "Numero di eventi" + +#: widgets/em-events.php:106 +msgid "Scope" +msgstr "Capienza" + +#: widgets/em-events.php:116 +#: widgets/em-locations.php:90 +msgid "Order By" +msgstr "Ordina per" + +#: widgets/em-events.php:25 +msgid "start date, start time, event name" +msgstr "data di inizio, ora di inizio, nome dell'evento" + +#: widgets/em-events.php:26 +msgid "name, start date, start time" +msgstr "nome, data di inizio, ora di inizio" + +#: widgets/em-events.php:27 +msgid "name, end date, end time" +msgstr "nome, data di fine, ora di fine" + +#: widgets/em-events.php:28 +msgid "end date, end time, event name" +msgstr "data di fine, ora di fine, nome dell'evento" + +#: widgets/em-events.php:129 +msgid "Order" +msgstr "Ordine" + +#: admin/em-options.php:476 +#: admin/em-options.php:479 +#: admin/em-options.php:530 +#: admin/em-options.php:627 +#: admin/em-options.php:630 +#: admin/em-options.php:677 +#: admin/em-options.php:680 +#: admin/em-options.php:767 +#: admin/em-options.php:770 +#: widgets/em-events.php:133 +#: widgets/em-locations.php:105 +msgid "Ascending" +msgstr "Ascendente" + +#: admin/em-options.php:477 +#: admin/em-options.php:480 +#: admin/em-options.php:531 +#: admin/em-options.php:628 +#: admin/em-options.php:631 +#: admin/em-options.php:678 +#: admin/em-options.php:681 +#: admin/em-options.php:768 +#: admin/em-options.php:771 +#: widgets/em-events.php:134 +#: widgets/em-locations.php:106 +msgid "Descending" +msgstr "Discendente" + +#: widgets/em-events.php:154 +msgid "Show all events link at bottom?" +msgstr "Mostra in fondo un collegamento a tutti gli eventi?" + +#: widgets/em-events.php:158 +msgid "All events link text?" +msgstr "Testo per il collegamento a tutti gli eventi?" + +#: admin/bookings/em-events.php:14 +#: em-functions.php:160 +msgid "All events" +msgstr "Tutti gli eventi" + +#: admin/bookings/em-events.php:15 +#: em-functions.php:161 +msgid "Future events" +msgstr "Eventi futuri" + +#: admin/bookings/em-events.php:13 +#: em-functions.php:162 +msgid "Past events" +msgstr "Eventi passati" + +#: em-functions.php:163 +msgid "Today's events" +msgstr "Eventi di oggi" + +#: em-functions.php:164 +msgid "Tomorrow's events" +msgstr "Gli eventi di domani" + +#: em-functions.php:165 +msgid "Events this month" +msgstr "Eventi di questo mese" + +#: em-functions.php:166 +msgid "Events next month" +msgstr "Eventi del mese prossimo" + +#: em-functions.php:167 +msgid "Events current and next month" +msgstr "Eventi di questo e del prossimo mese" + +#: em-functions.php:168 +msgid "Events within 2 months" +msgstr "Eventi entro 2 mesi" + +#: em-functions.php:169 +msgid "Events within 3 months" +msgstr "Eventi entro 3 mesi" + +#: em-functions.php:170 +msgid "Events within 6 months" +msgstr "Eventi entro 6 mesi" + +#: em-functions.php:171 +msgid "Events within 12 months" +msgstr "Eventi entro 12 mesi" + +#: em-functions.php:224 +msgid "Trying to perform an illegal action." +msgstr "Cercando di compiere un'azione illegale." + +#: em-functions.php:296 +msgid "ERROR: Please enter a username." +msgstr "ERRORE: Si prega di inserire un nome utente." + +#: em-functions.php:298 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "ERRORE: Questo nome utente non è valido perché utilizza caratteri non validi. Inserisci un nome utente valido." + +#: em-functions.php:301 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "ERRORE: Questo nome utente è già registrato, vi preghiamo di scegliere un altro." + +#: em-actions.php:270 +#: em-functions.php:306 +msgid "ERROR: Please type your e-mail address." +msgstr "ERRORE: Si prega di digitare il proprio indirizzo e-mail." + +#: em-actions.php:273 +#: em-functions.php:308 +msgid "ERROR: The email address isn’t correct." +msgstr "ERRORE: L'indirizzo e-mail non è corretto." + +#: em-functions.php:311 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "ERRORE: Questa e-mail è già registrata, vi preghiamo di sceglierne un'altra." + +#: em-functions.php:331 +#, php-format +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "ERRORE: Registrazione impossibile ... si prega di contattare il webmaster !" + +#: em-functions.php:366 +#, php-format +msgid "New user registration on your blog %s:" +msgstr "Registrazione di un nuovo utente sul tuo blog %s:" + +#: em-functions.php:367 +#, php-format +msgid "Username: %s" +msgstr "Nome utente: %s" + +#: em-functions.php:368 +#, php-format +msgid "E-mail: %s" +msgstr "E-mail: %s" + +#: em-functions.php:369 +#, php-format +msgid "[%s] New User Registration" +msgstr "[%s] Registrazione Nuovo Utente" + +#: em-functions.php:380 +#, php-format +msgid "[%s] Your username and password" +msgstr "[%s] Il tuo username e la password" + +#: classes/em-ticket.php:47 +msgid "Standard Ticket" +msgstr "Ticket di serie" + +#: classes/em-booking.php:134 +#: classes/em-ticket-booking.php:69 +#: classes/em-ticket.php:97 +msgid "Changes saved" +msgstr "Modifiche salvate" + +#: classes/em-ticket.php:102 +msgid "Ticket created" +msgstr "Biglietto creato" + +#: classes/em-ticket.php:105 +#: classes/em-ticket.php:106 +#: classes/em-ticket.php:111 +#: classes/em-ticket.php:112 +msgid "There was a problem saving the ticket." +msgstr "C'è stato un problema salvando il biglietto." + +#: classes/em-event.php:461 +#: classes/em-ticket-booking.php:113 +#: classes/em-ticket.php:161 +msgid "Missing fields: " +msgstr "Campi mancanti:" + +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "Non è possibile eliminare un biglietto che è stato prenotato" + +#: classes/em-location.php:106 +msgid "The location address" +msgstr "L'indirizzo del luogo" + +#: classes/em-location.php:106 +msgid "The location town" +msgstr "La città del luogo" + +#: classes/em-location.php:106 +msgid "The country" +msgstr "La nazione" + +#: classes/em-event.php:428 +#: classes/em-location.php:224 +#: classes/em-location.php:239 +#: classes/em-location.php:241 +msgid " is required." +msgstr "è richiesto." + +#: admin/em-bookings.php:109 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:334 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:942 +#: admin/em-options.php:1382 +#: classes/em-event-posts-admin.php:95 +#: classes/em-event-posts-admin.php:214 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#: classes/em-location.php:618 +#: em-actions.php:180 +#: em-posts.php:211 +#: templates/buddypress/group-events.php:43 +#: templates/buddypress/my-group-events.php:43 +#: templates/forms/location-editor.php:32 +#: templates/tables/events.php:52 +msgid "Location" +msgstr "Luogo" + +#: admin/em-ms-options.php:173 +#: admin/em-options.php:654 +#: admin/em-options.php:944 +#: admin/em-options.php:945 +#: classes/em-location-post-admin.php:59 +#: classes/em-location.php:332 +#: classes/em-location.php:342 +#: templates/forms/location-editor.php:6 +msgid "location" +msgstr "luogo" + +#: classes/em-location.php:348 +#, php-format +msgid "You do not have permission to create/edit %s." +msgstr "Non hai il permesso di creare/modificare %s." + +#: admin/em-ms-options.php:167 +#: admin/em-ms-options.php:172 +#: admin/em-ms-options.php:173 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:581 +#: admin/em-options.php:582 +#: admin/em-options.php:595 +#: admin/em-options.php:599 +#: admin/em-options.php:649 +#: admin/em-options.php:650 +#: admin/em-options.php:693 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: admin/em-options.php:1384 +#: admin/em-options.php:1385 +#: admin/em-options.php:1386 +#: admin/em-options.php:1387 +#: admin/em-options.php:1388 +#: admin/em-options.php:1389 +#: classes/em-location.php:348 +#: events-manager.php:309 +#: events-manager.php:310 +#: events-manager.php:311 +#: events-manager.php:312 +#: events-manager.php:313 +#: events-manager.php:314 +#: events-manager.php:315 +msgid "locations" +msgstr "luoghi" + +#: em-actions.php:104 +#, php-format +msgid "%s successfully deleted." +msgstr "%s cancellato con successo." + +#: em-actions.php:107 +#, php-format +msgid "%s could not be deleted." +msgstr "%s non può essere cancellato." + +#: classes/em-booking.php:143 +#: classes/em-booking.php:144 +#: classes/em-booking.php:152 +#: classes/em-booking.php:163 +#: classes/em-booking.php:169 +#: classes/em-tickets-bookings.php:69 +#: classes/em-tickets-bookings.php:70 +msgid "There was a problem saving the booking." +msgstr "C'è stato un problema durante il salvataggio della prenotazione." + +#: classes/em-tickets-bookings.php:99 +#: em-install.php:489 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "Prenotazione non può essere fatto, non gli spazi disponibili sufficienti!" + +#: classes/em-tickets-bookings.php:163 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +#, php-format +msgid "You do not have the rights to manage this %s." +msgstr "Non avete il diritto di gestire questo %s." + +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#: classes/em-booking.php:414 +#: classes/em-booking.php:416 +#: classes/em-bookings.php:108 +#: classes/em-tickets-bookings.php:163 +msgid "Booking" +msgstr "Prenotazione" + +#: admin/em-bookings.php:154 +#: admin/em-bookings.php:215 +#: admin/em-options.php:616 +#: admin/em-options.php:666 +#: admin/em-options.php:756 +#: classes/em-person.php:76 +#: templates/buddypress/group-events.php:41 +#: templates/buddypress/my-group-events.php:41 +#: templates/forms/bookingform/booking-fields.php:10 +#: templates/forms/tickets-form.php:4 +#: templates/tables/events.php:50 +#: templates/tables/locations.php:34 +#: templates/tables/locations.php:43 +#: templates/templates/bookings-event-printable.php:24 +msgid "Name" +msgstr "Nome" + +#: classes/em-person.php:77 +msgid "Email" +msgstr "E-mail" + +#: classes/em-people.php:28 +#: classes/em-person.php:78 +#: templates/forms/bookingform/booking-fields.php:14 +msgid "Phone" +msgstr "Telefono" + +#: classes/em-ticket-booking.php:78 +msgid "Ticket booking created" +msgstr "Prenotazione biglietti creato" + +#: classes/em-ticket-booking.php:85 +#: classes/em-ticket-booking.php:86 +#: classes/em-ticket-booking.php:91 +#: classes/em-ticket-booking.php:92 +msgid "There was a problem saving the ticket booking." +msgstr "C'è stato un problema durante il salvataggio della prenotazione del biglietto." + +#: admin/em-options.php:744 +#: admin/em-options.php:973 +#: admin/em-options.php:974 +msgid "category" +msgstr "categoria" + +#: classes/em-bookings.php:108 +#, php-format +msgid "%s created." +msgstr "%s creato." + +#: classes/em-bookings.php:256 +#: classes/em-bookings.php:262 +#, php-format +msgid "Bookings %s. Mails Sent." +msgstr "Prenotazione %s. Mail inviata." + +#: classes/em-bookings.php:266 +msgid "An error occurred." +msgstr "Si è verificato un errore." + +#: admin/bookings/em-events.php:136 +#: classes/em-booking.php:100 +#: classes/em-event-posts-admin.php:139 +#: classes/em-event.php:244 +#: templates/buddypress/group-events.php:94 +#: templates/buddypress/my-group-events.php:88 +#: templates/tables/events.php:17 +#: templates/tables/events.php:97 +msgid "Pending" +msgstr "In attesa di" + +#: classes/em-booking.php:101 +#: classes/em-event.php:245 +msgid "Approved" +msgstr "Approvato" + +#: classes/em-booking.php:102 +msgid "Rejected" +msgstr "Rifiutato" + +#: classes/em-booking.php:103 +#: em-actions.php:358 +msgid "Cancelled" +msgstr "Cancellato" + +#: classes/em-booking.php:104 +msgid "Awaiting Online Payment" +msgstr "In attesa di pagamento online" + +#: classes/em-booking.php:105 +msgid "Awaiting Payment" +msgstr "In attesa di pagamento" + +#: classes/em-booking.php:139 +msgid "Your booking has been recorded" +msgstr "La prenotazione è stata registrata" + +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#, php-format +msgid "You cannot manage this %s." +msgstr "Non è possibile gestire questo %s." + +#: classes/em-booking.php:222 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Si sta cercando di prenotare un biglietto inesistente per questo evento." + +#: classes/em-booking.php:414 +#, php-format +msgid "%s deleted" +msgstr "%s cancellato" + +#: classes/em-booking.php:416 +#, php-format +msgid "%s could not be deleted" +msgstr "%s non può essere cancellato" + +#: classes/em-booking.php:462 +msgid "Not approved, spaces full." +msgstr "Non approvato, posti finiti." + +#: classes/em-booking.php:470 +#, php-format +msgid "Booking %s." +msgstr "Prenotazione %s." + +#: classes/em-booking.php:473 +msgid "Mail Sent." +msgstr "Posta inviata." + +#: classes/em-booking.php:476 +#: classes/em-booking.php:477 +msgid "ERROR : Mail Not Sent." +msgstr "ERRORE: La posta non è stata inviata." + +#: classes/em-booking.php:483 +#: classes/em-booking.php:484 +#, php-format +msgid "Booking could not be %s." +msgstr "LA prenotazione non è stata %s." + +#: classes/em-booking.php:499 +msgid "Booking note successfully added." +msgstr "Nota per la prenotazione aggiunta con successo." + +#: classes/em-booking.php:636 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "Email di conferma non poteva essere inviate a persona di contatto. Dichiarante deve avere ottenuto la loro posta elettronica (solo admin vedere questo avviso)." + +#: classes/em-booking.php:643 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "E-mail di conferma non è stato possibile inviare a admin. Dichiarante deve avere ottenuto la loro posta elettronica (solo admin vedere questo avviso)." + +#: admin/em-options.php:971 +#: templates/buddypress/group-events.php:112 +#: templates/buddypress/my-group-events.php:106 +msgid "Category" +msgstr "Categoria" + +#: admin/em-options.php:708 +#: admin/em-options.php:712 +#: admin/em-options.php:721 +#: admin/em-options.php:783 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: events-manager.php:318 +#: events-manager.php:319 +msgid "categories" +msgstr "categorie" + +#: classes/em-tickets.php:98 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "Non è possibile eliminare i biglietti se ci sono prenotazioni ad essi associati. Si prega di eliminare queste prime prenotazioni." + +#: classes/em-tickets.php:124 +msgid "Standard" +msgstr "Standard" + +#: classes/em-people.php:19 +msgid "User deleted by administrators" +msgstr "Utente cancellato dagli amministratori" + +#: classes/em-event-post-admin.php:37 +msgid "WARNING: This is a recurring event." +msgstr "ATTENZIONE: Questo è un evento ricorrente." + +#: classes/em-event-post-admin.php:38 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Modifiche a questo evento faranno sì che tutte le ricorrenze di questo evento siano eliminate e ricreate e le prenotazioni precedenti siano CANCELLATE! È possibile modificare le ricorrenze individuali e dissociarle da questo evento ricorrente." + +#: classes/em-event-post-admin.php:41 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "ATTENZIONE: Questo evento fa parte di un insieme di eventi ricorrenti." + +#: classes/em-event-post-admin.php:48 +#, php-format +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "ATTENZIONE: Questo è un evento che appartiene al gruppo \"%s\" . Amministratori di altri gruppi possono modificare anche questo evento." + +#: classes/em-event.php:617 +msgid "Something went wrong with the recurrence update..." +msgstr "Qualcosa è andato storto con l'aggiornamento ricorrenza ..." + +#: classes/em-event.php:617 +msgid "There was a problem saving the recurring events." +msgstr "C'è stato un problema durante il salvataggio degli eventi ricorrenti." + +#: classes/em-event.php:655 +#, php-format +msgid "%s successfully duplicated." +msgstr "%s duplicato con successo ." + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:506 +#: admin/em-options.php:1395 +#: admin/em-options.php:1396 +#: classes/em-event-post-admin.php:85 +#: classes/em-event.php:582 +#: classes/em-event.php:594 +msgid "event" +msgstr "evento" + +#: classes/em-event.php:442 +msgid "Events cannot start after they end." +msgstr "Gli eventi non possono iniziare dopo che sono finiti." + +#: classes/em-event.php:447 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Le date devono avere la formattazione corretta. Si prega di utilizzare il selettore della data proposto." + +#: classes/em-event.php:1255 +#: templates/forms/bookingform/ticket-single.php:21 +#: templates/forms/bookingform/tickets-list.php:28 +msgid "N/A" +msgstr "N / A" + +#: classes/em-event.php:1265 +msgid "Profile" +msgstr "Profilo" + +#: classes/em-event.php:1702 +msgid "Sunday" +msgstr "Domenica" + +#: classes/em-event.php:1702 +msgid "Monday" +msgstr "Lunedì" + +#: classes/em-event.php:1702 +msgid "Tuesday" +msgstr "Martedì" + +#: classes/em-event.php:1702 +msgid "Wednesday" +msgstr "Mercoledì" + +#: classes/em-event.php:1702 +msgid "Thursday" +msgstr "Giovedì" + +#: classes/em-event.php:1702 +msgid "Friday" +msgstr "Venerdì" + +#: classes/em-event.php:1702 +msgid "Saturday" +msgstr "Sabato" + +#: classes/em-event.php:1703 +#, php-format +msgid "the first %s of the month" +msgstr "il primo %s del mese" + +#: classes/em-event.php:1703 +#, php-format +msgid "the second %s of the month" +msgstr "il secondo %s del mese" + +#: classes/em-event.php:1703 +#, php-format +msgid "the third %s of the month" +msgstr "il terzo %s del mese" + +#: classes/em-event.php:1703 +#, php-format +msgid "the fourth %s of the month" +msgstr "li quarto %s del mese" + +#: classes/em-event.php:1703 +#, php-format +msgid "the last %s of the month" +msgstr "l'ultimo%s del mese" + +#: classes/em-event.php:1704 +#, php-format +msgid "From %1$s to %2$s" +msgstr "Da %1$s in %2$s" + +#: classes/em-event.php:1706 +msgid "everyday" +msgstr "quotidiano" + +#: classes/em-event.php:1708 +#, php-format +msgid "every %s days" +msgstr "ogni %s giorni" + +#: classes/em-event.php:1717 +msgid "every week" +msgstr "ogni settimana" + +#: classes/em-event.php:1719 +#, php-format +msgid "every %s weeks" +msgstr "ogni %s settimane" + +#: classes/em-event.php:1730 +#, php-format +msgid "every %s months" +msgstr "ogni %s mesi" + +#: classes/em-object.php:872 +msgid "The image file is too big! Maximum size:" +msgstr "Il file immagine è troppo grande! Dimensione massima:" + +#: classes/em-object.php:877 +msgid "The image is too big! Maximum size allowed:" +msgstr "L'immagine è troppo grande! Dimensione massima consentita:" + +#: classes/em-object.php:880 +msgid "The image is in a wrong format!" +msgstr "L'immagine è in un formato sbagliato!" + +#: classes/em-mailer.php:84 +msgid "Please supply a valid email format." +msgstr "Si prega di fornire un formato email valido." + +#: admin/em-options.php:1201 +msgid "Booking cancelled" +msgstr "Prenotazione annullata" + +#: em-actions.php:370 +msgid "You must log in to cancel your booking." +msgstr "È necessario accedere per cancellare la prenotazione." + +#: admin/em-bookings.php:251 +#: templates/forms/bookingform/tickets-list.php:8 +msgid "Ticket Type" +msgstr "Tipo di biglietto" + +#: admin/em-bookings.php:156 +#: admin/em-bookings.php:253 +#: templates/forms/bookingform/ticket-single.php:9 +#: templates/forms/bookingform/tickets-list.php:10 +#: templates/forms/event/bookings.php:30 +#: templates/forms/ticket-form.php:9 +#: templates/forms/tickets-form.php:6 +msgid "Price" +msgstr "Prezzo" + +#: admin/bookings/em-cancelled.php:87 +#: admin/bookings/em-confirmed.php:88 +#: admin/bookings/em-pending.php:105 +#: admin/bookings/em-person.php:87 +#: admin/bookings/em-rejected.php:87 +#: admin/em-bookings.php:157 +#: admin/em-bookings.php:252 +#: templates/forms/bookingform/ticket-single.php:15 +#: templates/forms/bookingform/tickets-list.php:12 +#: templates/forms/ticket-form.php:11 +#: templates/templates/bookings-event-printable.php:27 +#: templates/templates/my-bookings.php:48 +msgid "Spaces" +msgstr "Posti" + +#: admin/em-bookings.php:311 +#: templates/forms/bookingform/booking-fields.php:24 +#: templates/templates/bookings-event-printable.php:28 +msgid "Comment" +msgstr "Commento" + +#: templates/placeholders/bookingform.php:54 +msgid "Send your booking" +msgstr "Invia la tua prenotazione" + +#: templates/placeholders/bookingform.php:71 +msgid "No more tickets available at this time." +msgstr "Biglietti non più disponibili in questo momento." + +#: templates/forms/ticket-form.php:12 +msgid "If blank, there's no space limit." +msgstr "Se vuoto, non c'è limite di posti." + +#: templates/forms/ticket-form.php:15 +msgid "Available from" +msgstr "Disponibile da" + +#: templates/forms/event/recurring-when.php:56 +#: templates/forms/event/recurring-when.php:63 +#: templates/forms/event/when-with-recurring.php:17 +#: templates/forms/event/when-with-recurring.php:18 +#: templates/forms/event/when-with-recurring.php:26 +#: templates/forms/event/when.php:11 +#: templates/forms/event/when.php:18 +#: templates/forms/ticket-form.php:18 +msgid "to" +msgstr "a" + +#: templates/forms/ticket-form.php:21 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Aggiungere una data di inizio o di fine (o entrambe) per imporre vincoli di tempo alla disponibilità dei biglietti. Lasciare in bianco per nessun limite superiore / inferiore." + +#: templates/forms/ticket-form.php:24 +msgid "Bookings must order between" +msgstr "Le prenotazioni devono essere fatte entro" + +#: templates/forms/ticket-form.php:26 +#: templates/templates/events-search.php:38 +msgid "and" +msgstr "e" + +#: templates/forms/ticket-form.php:28 +msgid "spaces." +msgstr "posti." + +#: templates/forms/ticket-form.php:29 +msgid "Leave either blank for no upper/lower limit." +msgstr "Lasciare in bianco per nessun limite superiore / inferiore." + +#: admin/em-bookings.php:155 +#: templates/forms/ticket-form.php:32 +#: templates/forms/tickets-form.php:5 +msgid "Description" +msgstr "Descrizione" + +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:137 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +msgid "Unauthorized Access" +msgstr "Accesso non autorizzato" + +#: admin/em-ms-locations.php:39 +msgid "Add location" +msgstr "Aggiungi luogo" + +#: admin/em-ms-locations.php:42 +msgid "Edit location" +msgstr "Modifica luogo" + +#: templates/forms/location-editor.php:12 +msgid "required" +msgstr "richiesto" + +#: templates/forms/location-editor.php:23 +msgid "Location Name" +msgstr "Nome luogo" + +#: templates/forms/location-editor.php:28 +msgid "The name of the location" +msgstr "Il nome del luogo" + +#: templates/forms/location/where.php:4 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Se si utilizza Google Maps, più dettagli fornisci, più Google può essere accurato nel trovare la posizione. Se l'indirizzo non viene trovato, per favore provalo su maps.google.com aggiungendo tutti i campi sottostanti separati da virgole." + +#: templates/forms/event/location.php:69 +#: templates/forms/location/where.php:8 +msgid "Address:" +msgstr "Indirizzo:" + +#: templates/forms/event/location.php:75 +#: templates/forms/location/where.php:14 +msgid "City/Town:" +msgstr "Città:" + +#: templates/forms/event/location.php:82 +#: templates/forms/location/where.php:20 +msgid "State/County:" +msgstr "Provincia:" + +#: templates/forms/event/location.php:89 +#: templates/forms/location/where.php:26 +msgid "Postcode:" +msgstr "CAP:" + +#: templates/forms/event/location.php:102 +#: templates/forms/location/where.php:39 +msgid "Country:" +msgstr "Nazione:" + +#: templates/forms/event/location.php:105 +#: templates/forms/location/where.php:42 +msgid "none selected" +msgstr "nessuno selezionato" + +#: templates/forms/event/location.php:122 +#: templates/forms/location/where.php:52 +msgid "Location not found" +msgstr "Posizione non trovata" + +#: templates/forms/event-editor.php:99 +#: templates/forms/location-editor.php:39 +msgid "Details" +msgstr "Dettagli" + +#: templates/forms/location-editor.php:57 +msgid "No image uploaded for this location yet" +msgstr "Nessuna immagine caricata per questo luogo" + +#: templates/forms/event-editor.php:172 +#: templates/forms/location-editor.php:60 +msgid "Upload/change picture" +msgstr "Carica/cambia immagine" + +#: templates/forms/event-editor.php:174 +#: templates/forms/location-editor.php:62 +msgid "Delete Image?" +msgstr "Cancellare l'immagine?" + +#: templates/forms/location-editor.php:71 +msgid "Update location" +msgstr "Aggiorna luogo" + +#: admin/bookings/em-cancelled.php:85 +#: admin/bookings/em-confirmed.php:86 +#: admin/bookings/em-pending.php:103 +#: admin/bookings/em-rejected.php:85 +#: templates/forms/bookingform/booking-fields.php:18 +#: templates/templates/bookings-event-printable.php:25 +msgid "E-mail" +msgstr "E-mail" + +#: templates/forms/bookingform/login.php:3 +msgid "Log in if you already have an account with us." +msgstr "Connettiti se ne hai già un account presso di noi." + +#: templates/forms/bookingform/login.php:5 +msgid "Username" +msgstr "Nome utente" + +#: templates/forms/bookingform/login.php:9 +msgid "Password" +msgstr "Password" + +#: templates/forms/bookingform/login.php:13 +msgid "Log In" +msgstr "Log In" + +#: templates/forms/bookingform/login.php:14 +msgid "Remember Me" +msgstr "Ricordami" + +#: templates/forms/bookingform/login.php:29 +msgid "Sign Up" +msgstr "Registrazione" + +#: templates/forms/bookingform/login.php:33 +msgid "Password Lost and Found" +msgstr "Recupero password" + +#: templates/forms/bookingform/login.php:33 +msgid "Lost your password?" +msgstr "Hai perso la password?" + +#: admin/em-bookings.php:100 +#: templates/forms/event-editor.php:30 +msgid "Event Name" +msgstr "Nome evento" + +#: templates/forms/event-editor.php:34 +msgid "The event name. Example: Birthday party" +msgstr "Il nome dell'evento. Esempio: Festa di compleanno" + +#: templates/forms/event/group.php:23 +#: templates/forms/event-editor.php:60 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Seleziona un gruppo che amministri per collegare questo evento ad esso. Da notare che tutti gli amministratori del detto gruppo possono modificare le prenotazioni, e non sarà in grado di scollegare l'evento senza eliminarlo." + +#: classes/em-event-post-admin.php:177 +#: templates/forms/event-editor.php:66 +msgid "When" +msgstr "Quando" + +#: templates/forms/event/when.php:23 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Questo evento si estende ogni giorno tra la data di inizio e di fine, con orari di inizio e fine giornalieri." + +#: templates/forms/event/recurring-when.php:72 +#: templates/forms/event/when-with-recurring.php:78 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Per un evento ricorrente, sarà creato un evento giornaliero ad ogni data all'interno di questo intervallo." + +#: templates/forms/event/recurring-when.php:10 +#: templates/forms/event/when-with-recurring.php:32 +msgid "This event repeats" +msgstr "Questo evento si ripete" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Daily" +msgstr "Quotidiano" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Weekly" +msgstr "Settimanale" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Monthly" +msgstr "Mensile" + +#: templates/forms/event/recurring-when.php:17 +#: templates/forms/event/when-with-recurring.php:39 +msgid "every" +msgstr "ogni" + +#: templates/forms/event/recurring-when.php:20 +#: templates/forms/event/when-with-recurring.php:42 +msgid "day" +msgstr "giorno" + +#: templates/forms/event/recurring-when.php:22 +#: templates/forms/event/when-with-recurring.php:44 +msgid "days" +msgstr "giorni" + +#: templates/forms/event/recurring-when.php:24 +#: templates/forms/event/when-with-recurring.php:46 +msgid "week on" +msgstr "settimana" + +#: templates/forms/event/recurring-when.php:26 +#: templates/forms/event/when-with-recurring.php:48 +msgid "weeks on" +msgstr "settimane" + +#: templates/forms/event/recurring-when.php:28 +#: templates/forms/event/when-with-recurring.php:50 +msgid "month on the" +msgstr "mese sul" + +#: templates/forms/event/recurring-when.php:30 +#: templates/forms/event/when-with-recurring.php:52 +msgid "months on the" +msgstr "mesi sul" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "first" +msgstr "prima" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "second" +msgstr "secondo" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "third" +msgstr "terzo" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "fourth" +msgstr "quarto" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "last" +msgstr "ultimo" + +#: templates/forms/event/recurring-when.php:48 +#: templates/forms/event/when-with-recurring.php:71 +msgid "of each month" +msgstr "di ogni mese" + +#: classes/em-event-post-admin.php:179 +#: classes/em-event-post-admin.php:354 +#: classes/em-location-post-admin.php:109 +#: templates/forms/event-editor.php:93 +msgid "Where" +msgstr "Dove" + +#: templates/forms/event/location.php:28 +msgid "Location:" +msgstr "Luogo:" + +#: templates/forms/event/location.php:60 +msgid "Name:" +msgstr "Nome:" + +#: templates/forms/event/location.php:64 +msgid "Create a location or start typing to search a previously created location." +msgstr "Crea un nuovo Luogo o inizia a digitare nel campo qui sopra per cercare un Luogo creato in precedenza." + +#: templates/forms/event/location.php:65 +msgid "You cannot edit saved locations here." +msgstr "Non è possibile modificare da qui i Luoghi salvati." + +#: templates/forms/event/location.php:65 +msgid "Reset this form to create a location." +msgstr "Azzerare questo modulo per creare un luogo." + +#: templates/forms/event/location.php:95 +#: templates/forms/location/where.php:32 +msgid "Region:" +msgstr "Regione:" + +#: templates/forms/event/location.php:110 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Compilando questo per primo ti permetterà di trovare rapidamente province e regioni precedentemente inserite per la nazione." + +#: templates/forms/event-editor.php:107 +msgid "Details about the event." +msgstr "Dettagli sull'evento." + +#: templates/forms/event-editor.php:107 +#: templates/forms/location-editor.php:47 +msgid "HTML Allowed." +msgstr "HTML ammesso." + +#: templates/forms/event-editor.php:116 +msgid "Category:" +msgstr "Categoria:" + +#: templates/forms/event-editor.php:190 +msgid "Submit Event" +msgstr "Pubblica un evento" + +#: classes/em-event-post-admin.php:183 +#: classes/em-event-post-admin.php:356 +#: templates/forms/event-editor.php:180 +msgid "Bookings/Registration" +msgstr "Prenotazioni / Registrazioni" + +#: templates/forms/event/bookings.php:8 +msgid "Enable registration for this event" +msgstr "Consenti le prenotazioni per questo evento" + +#: templates/forms/event/booking-stats.php:21 +msgid "manage bookings" +msgstr "gestisci le prenotazioni" + +#: templates/forms/event/booking-stats.php:22 +msgid "printable view" +msgstr "vista stampabile " + +#: admin/em-bookings.php:98 +#: templates/forms/event/booking-stats.php:23 +msgid "export csv" +msgstr "esportazione csv" + +#: templates/forms/event/bookings.php:23 +msgid "Tickets" +msgstr "Biglietti" + +#: templates/forms/event/bookings.php:29 +msgid "Ticket Name" +msgstr "Nome biglietto" + +#: templates/forms/event/bookings.php:31 +msgid "Min/Max" +msgstr "Min / Max" + +#: templates/forms/event/bookings.php:32 +msgid "Start/End" +msgstr "Inizio / fine" + +#: templates/forms/event/bookings.php:33 +msgid "Avail. Spaces" +msgstr "Posti disponibili" + +#: admin/bookings/em-events.php:134 +#: templates/forms/event/bookings.php:34 +msgid "Booked Spaces" +msgstr "Posti prenotati" + +#: templates/forms/event/bookings.php:41 +msgid "Add new ticket" +msgstr "Aggiungi un nuovo biglietto" + +#: templates/forms/event/bookings.php:56 +msgid "Free" +msgstr "Libero" + +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-rejected.php:113 +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:100 +#: templates/buddypress/group-events.php:134 +#: templates/buddypress/my-group-events.php:94 +#: templates/buddypress/my-group-events.php:128 +#: templates/forms/event/bookings.php:88 +#: templates/tables/events.php:103 +#: templates/tables/events.php:134 +msgid "Delete" +msgstr "Cancellare" + +#: templates/forms/event/bookings.php:90 +msgid "View Bookings" +msgstr "Visualizza Prenotazioni" + +#: events-manager.php:255 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Sei sicuro di voler ripianificare questo evento ricorrente? Se si esegue questa operazione, si perderanno tutte le informazioni delle prenotazioni e gli eventi ricorrenti verranno eliminati." + +#: events-manager.php:256 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Sei sicuro di voler disabilitare le prenotazioni? Se esegui questa operazione e salvi, si perdono tutte le prenotazioni precedenti. Se si desidera impedire ulteriori prenotazioni, riduci il numero di posti disponibili alla quantità di prenotazioni che hai attualmente" + +#: templates/forms/tickets-form.php:2 +msgid "Create a ticket" +msgstr "Crea un biglietto" + +#: templates/forms/tickets-form.php:8 +msgid "Available ticket spaces" +msgstr "Biglietti per posti disponibili" + +#: templates/forms/tickets-form.php:10 +msgid "Start date of ticket availability" +msgstr "Data di inizio disponibilità dei biglietti" + +#: templates/forms/tickets-form.php:11 +msgid "End date of ticket availability" +msgstr "Data di fine della disponibilità dei biglietti" + +#: templates/forms/tickets-form.php:12 +msgid "Minimum tickets required per booking" +msgstr "Numero minimo di biglietti richiesto per prenotazione" + +#: templates/forms/tickets-form.php:13 +msgid "Maximum tickets required per booking" +msgstr "Numero massimo di biglietti richiesto per prenotazione" + +#: templates/forms/tickets-form.php:19 +msgid "Add Ticket" +msgstr "Aggiungi biglietto" + +#: admin/em-ms-locations.php:29 +#: buddypress/screens/my-events.php:33 +#: buddypress/screens/my-locations.php:33 +msgid "Add New" +msgstr "Aggiungi nuovo" + +#: em-events.php:129 +#: templates/tables/locations.php:8 +#, php-format +msgid "My %s" +msgstr "Il mio %s" + +#: admin/em-admin.php:45 +#: admin/em-ms-locations.php:28 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:399 +#: admin/em-options.php:594 +#: admin/em-options.php:595 +#: admin/em-options.php:935 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: classes/em-location-posts-admin.php:31 +#: em-actions.php:180 +#: em-install.php:386 +#: em-install.php:387 +#: em-install.php:685 +#: em-install.php:732 +#: em-posts.php:207 +#: em-posts.php:210 +#: em-posts.php:212 +#: templates/tables/locations.php:8 +#: templates/tables/locations.php:11 +msgid "Locations" +msgstr "Luoghi" + +#: templates/tables/locations.php:11 +#, php-format +msgid "All %s" +msgstr "Tutti %s" + +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:57 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-rejected.php:49 +#: templates/tables/locations.php:18 +msgid "Bulk Actions" +msgstr "Azioni in blocco" + +#: admin/bookings/em-events.php:58 +#: templates/tables/locations.php:19 +msgid "Delete selected" +msgstr "Elimina selezionati" + +#: admin/bookings/em-events.php:60 +#: templates/tables/locations.php:21 +msgid "Apply" +msgstr "Applicare" + +#: classes/em-location-posts-admin.php:40 +#: templates/tables/locations.php:35 +#: templates/tables/locations.php:44 +msgid "Address" +msgstr "Indirizzo" + +#: classes/em-location-posts-admin.php:42 +#: templates/tables/locations.php:36 +#: templates/tables/locations.php:45 +msgid "State" +msgstr "Stato" + +#: admin/em-options.php:614 +#: admin/em-options.php:664 +#: admin/em-options.php:754 +#: classes/em-location-posts-admin.php:43 +#: templates/tables/locations.php:37 +#: templates/tables/locations.php:46 +msgid "Country" +msgstr "Nazione" + +#: admin/bookings/em-events.php:102 +#: templates/buddypress/group-events.php:44 +#: templates/buddypress/my-group-events.php:44 +#: templates/tables/events.php:53 +msgid "Date and time" +msgstr "Data e ora" + +#: em-install.php:532 +#: templates/buddypress/group-events.php:29 +#: templates/buddypress/my-group-events.php:29 +#: templates/buddypress/profile.php:19 +msgid "No Events" +msgstr "Nessun Evento" + +# @ dbem +#: templates/buddypress/profile.php:37 +msgid "Not attending any events yet." +msgstr "Non partecipa ancora a nessun evento." + +#: templates/tables/events.php:15 +msgid "Upcoming" +msgstr "Prossimi" + +#: admin/bookings/em-events.php:29 +#: templates/tables/events.php:19 +msgid "Past Events" +msgstr "Eventi passati" + +#: em-posts.php:129 +#: templates/tables/events.php:22 +#: templates/tables/events.php:24 +msgid "Search Events" +msgstr "Ricerca Eventi" + +#: admin/bookings/em-events.php:91 +msgid "no events" +msgstr "Eventi" + +#: admin/em-admin.php:38 +#: classes/em-event-posts-admin.php:136 +#: em-events.php:129 +#: templates/buddypress/group-events.php:91 +#: templates/buddypress/my-group-events.php:85 +#: templates/tables/events.php:94 +msgid "Bookings" +msgstr "Prenotazioni" + +#: classes/em-event-posts-admin.php:137 +#: templates/buddypress/group-events.php:92 +#: templates/buddypress/my-group-events.php:86 +#: templates/tables/events.php:95 +#: templates/templates/bookings-event-printable.php:42 +msgid "Booked" +msgstr "Prenotato" + +#: templates/buddypress/group-events.php:105 +#: templates/buddypress/my-group-events.php:99 +#: templates/tables/events.php:108 +msgid "Duplicate this event" +msgstr "Duplica questo evento" + +#: classes/em-event-posts-admin.php:144 +#: templates/buddypress/group-events.php:128 +#: templates/buddypress/my-group-events.php:122 +#: templates/tables/events.php:128 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "ATTENZIONE! Si cancellerà tutte le ricorrenze di questo evento, inclusa la storia delle prenotazioni associata ad ogni evento di questa ricorrenza. Per mantenere le informazioni sulle prenotazioni, modifica ogni singolo evento rilevante e salvalo scollegandolo da questa ricorrenza." + +#: templates/templates/bookings-event-printable.php:21 +msgid "Bookings data" +msgstr "dati di Prenotazione" + +#: admin/bookings/em-cancelled.php:86 +#: admin/bookings/em-confirmed.php:87 +#: admin/bookings/em-pending.php:104 +#: admin/bookings/em-rejected.php:86 +#: templates/templates/bookings-event-printable.php:26 +msgid "Phone number" +msgstr "Numero di telefono" + +#: templates/templates/bookings-event-printable.php:47 +msgid "Available" +msgstr "Disponibile" + +#: templates/placeholders/locationmap.php:15 +#: templates/templates/map-global.php:15 +msgid "Loading Map...." +msgstr "Sto caricando la mappa ...." + +#: templates/templates/csv-event-bookings.php:16 +#, php-format +msgid "Booking details for \"%s\" as of %s" +msgstr "Dettagli Prenotazioni \"%s\", come di %s" + +#: admin/em-bookings.php:103 +#: templates/templates/my-bookings.php:47 +msgid "Date" +msgstr "Data" + +#: admin/bookings/em-person.php:88 +#: admin/em-bookings.php:246 +#: templates/templates/my-bookings.php:49 +msgid "Status" +msgstr "Stato" + +#: templates/templates/my-bookings.php:75 +msgid "Are you sure you want to cancel your booking?" +msgstr "Sei sicuro di voler annullare la prenotazione?" + +#: admin/em-options.php:130 +#: admin/em-options.php:147 +#: templates/templates/my-bookings.php:75 +msgid "Cancel" +msgstr "Annullare" + +#: templates/templates/my-bookings.php:91 +msgid "You do not have any bookings." +msgstr "Non hai alcuna prenotazione." + +#: templates/templates/my-bookings.php:101 +#, php-format +msgid "Please Log In to view your bookings." +msgstr "Entra per vedere le tue prenotazioni." + +# @ dbem +#: templates/templates/events-search.php:35 +msgid "between" +msgstr "tra" + +#: em-install.php:313 +msgid "All Categories" +msgstr "Tutte le categorie" + +#: em-install.php:315 +msgid "All Countries" +msgstr "Tutti i Paesi" + +#: em-install.php:317 +msgid "All Regions" +msgstr "Tutte le Regioni" + +#: em-install.php:319 +msgid "All States" +msgstr "Tutti gli Stati" + +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: em-install.php:310 +#: events-manager.php:264 +msgid "Search" +msgstr "Ricerca" + +#: events-manager.php:266 +msgid "Loading..." +msgstr "Caricamento in corso ..." + +#: events-manager.php:265 +msgid "Searching..." +msgstr "Ricerca ..." + +#: templates/placeholders/bookingbutton.php:2 +msgid "Book Now" +msgstr "Prenota ora" + +#: templates/placeholders/bookingbutton.php:3 +msgid "Booking..." +msgstr "Prenotazione in corso ..." + +#: templates/placeholders/bookingbutton.php:4 +msgid "Booking Submitted" +msgstr "Prenotazione inviata" + +#: templates/placeholders/bookingbutton.php:5 +msgid "Booking Error. Try again?" +msgstr "Errore nella prenotazione. Prova di nuovo?" + +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Mappa non disponibile " + +#: templates/placeholders/bookingform.php:11 +#, php-format +msgid "You are currently attending this event. Manage my bookings" +msgstr "Hai eseguito la prenotazinoe a questo evento. Le mie prenotazioni" + +#: templates/placeholders/bookingform.php:13 +msgid "Online bookings are not available for this event." +msgstr "Prenotazioni online non sono disponibili per questo evento." + +#: templates/placeholders/bookingform.php:15 +msgid "Bookings are closed for this event." +msgstr "Le prenotazioni sono chiuse per questo evento." + +#: events-manager.php:250 +msgid "Please wait while the booking is being submitted." +msgstr "Per favore attendi che la prenotazione venga elaborata." + +#: admin/em-options.php:40 +msgid "Changes saved." +msgstr "Modifiche salvate." + +#: admin/em-help.php:28 +#: admin/em-ms-options.php:52 +#: admin/em-options.php:167 +msgid "Event Related Placeholders" +msgstr "Segnaposto correlati ad eventi" + +#: admin/em-help.php:34 +#: admin/em-ms-options.php:53 +#: admin/em-options.php:168 +msgid "Location Related Placeholders" +msgstr "Segnaposto correlati ai luoghi" + +#: admin/em-help.php:37 +#: admin/em-ms-options.php:54 +#: admin/em-options.php:169 +msgid "Booking Related Placeholders" +msgstr "Segnaposto correlati alle Prenotazioni" + +#: admin/em-help.php:31 +#: admin/em-ms-options.php:55 +#: admin/em-options.php:170 +msgid "Category Related Placeholders" +msgstr "Segnaposto relativi a categorie" + +#: admin/em-ms-options.php:56 +#: admin/em-options.php:171 +#, php-format +msgid "This accepts %s and %s placeholders." +msgstr "Questo accetta segnaposto %s e %s." + +#: admin/em-ms-options.php:57 +#: admin/em-ms-options.php:58 +#: admin/em-options.php:172 +#: admin/em-options.php:173 +#, php-format +msgid "This accepts %s placeholders." +msgstr "Questo accetta segnaposto %s." + +#: admin/em-ms-options.php:59 +#: admin/em-options.php:174 +#, php-format +msgid "This accepts %s, %s and %s placeholders." +msgstr "Questo accetta segnaposto %s , %s e%s." + +#: admin/em-ms-options.php:61 +#: admin/em-ms-options.php:200 +#: admin/em-options.php:177 +#: admin/em-options.php:1251 +msgid "Save Changes" +msgstr "Salva le modifiche" + +#: admin/em-ms-options.php:61 +#: admin/em-options.php:177 +msgid "All" +msgstr "Tutti" + +#: admin/em-ms-options.php:66 +#: admin/em-options.php:182 +msgid "Collapse All" +msgstr "Comprimi tutto" + +#: admin/em-ms-options.php:67 +#: admin/em-options.php:183 +msgid "Expand All" +msgstr "Espandi tutto" + +#: admin/em-ms-options.php:138 +#: admin/em-options.php:276 +msgid "Event Manager Options" +msgstr "Opzioni Events Manager " + +#: admin/em-ms-options.php:148 +#: admin/em-options.php:287 +#: admin/em-options.php:370 +#: admin/em-options.php:392 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:703 +#: admin/em-options.php:793 +#: admin/em-options.php:825 +#: admin/em-options.php:847 +#: admin/em-options.php:869 +#: admin/em-options.php:893 +#: admin/em-options.php:909 +#: admin/em-options.php:932 +#: admin/em-options.php:961 +#: admin/em-options.php:989 +#: admin/em-options.php:1009 +#: admin/em-options.php:1024 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#: admin/em-options.php:1130 +#: admin/em-options.php:1162 +#: admin/em-options.php:1214 +#: admin/em-options.php:1272 +#: admin/em-options.php:1305 +#: admin/em-options.php:1327 +#: admin/em-options.php:1355 +#: admin/em-options.php:1460 +msgid "Click to toggle" +msgstr "Clicca per passare" + +#: admin/em-ms-options.php:148 +msgid "Multi Site Options" +msgstr "Opzioni Multi Sito" + +#: admin/em-ms-options.php:152 +msgid "Enable global tables mode?" +msgstr "Abilita modalità tabelle globali?" + +#: admin/em-ms-options.php:152 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Impostando su 'sì' tutti gli eventi saranno salvati nelle tabelle eventi del sito principale (EM deve essere attivato). Questo permette di condividere eventi attraverso diversi blog, così come mostrare gli eventi nella tua rete pur consentendo agli utenti di visualizzare e gestire i loro eventi all'interno del loro blog. Tenete presente che l'attivazione di questo significherà che i vecchi eventi creati sui sotto-blog non saranno più accessibili, se torni indietro lo saranno, ma i nuovi eventi creati in modalità eventi globali rimarranno solo sul sito principale." + +#: admin/em-ms-options.php:163 +msgid "Display global events on main blog?" +msgstr "Visualizzare gli eventi globali sul blog principale?" + +#: admin/em-options.php:341 +msgid "Use dropdown for locations?" +msgstr "Usa menu a discesa per i luoghi?" + +#: admin/em-options.php:341 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Selezionare Sì per scegliere il luogo da un menu a tendina; la selezione del luogo sarà più veloce, ma si perde la possibilità di inserire luoghi dalla scheda degli eventi" + +#: admin/em-options.php:297 +msgid "Select yes to enable the recurrence features feature" +msgstr "Selezionare Sì per abilitare le funzioni delle ricorrenze" + +#: admin/em-options.php:298 +msgid "Enable bookings?" +msgstr "Abilitare le prenotazioni?" + +#: admin/em-options.php:298 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Selezionare Sì per consentire prenotazioni e biglietti per gli eventi." + +#: admin/em-options.php:301 +msgid "Select yes to enable the category features" +msgstr "Selezionare Sì per attivare le funzionalità delle categorie" + +#: admin/em-options.php:313 +msgid "Select yes to enable the attributes feature" +msgstr "Selezionare Sì per abilitare le funzionalità degli attributi" + +#: admin/em-options.php:305 +msgid "no default category" +msgstr "nessuna categoria predefinita" + +#: admin/em-options.php:310 +msgid "Default Category" +msgstr "Categoria predefinita" + +#: admin/em-options.php:310 +msgid "This option allows you to select the default category when adding an event." +msgstr "Questa opzione permette di selezionare la categoria predefinita quando si aggiunge un evento." + +#: admin/em-options.php:326 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(Non applicabile con la titolarità dell'evento per ora, ma lo sarà in futuro!)" + +#: admin/em-options.php:321 +msgid "no default location" +msgstr "nessuno luogo predefinito" + +#: admin/em-options.php:326 +msgid "Default Location" +msgstr "Luogo predefinito" + +#: admin/em-options.php:326 +msgid "This option allows you to select the default location when adding an event." +msgstr "Questa opzione consente di selezionare la posizione predefinita quando si aggiunge un evento." + +#: admin/em-options.php:329 +msgid "Default Location Country" +msgstr "Nazione del Luogo predefinito" + +#: admin/em-options.php:329 +msgid "no default country" +msgstr "nessuna nazione predefinita" + +#: admin/em-options.php:329 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Se si seleziona una nazione predefinita, questa sarà pre-selezionata durante la creazione di un nuovo luogo." + +#: admin/em-options.php:316 +msgid "Event Attributes" +msgstr "Attributi evento" + +#: admin/em-options.php:316 +#, php-format +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "È anche possibile aggiungere attributi di evento qui, uno per riga in questo formato #_ATT{key} . Essi non vengono visualizzati nelle pagine evento a meno che non vengano inseriti in un altro modello qui sotto, ma può essere utile per memorizzare informazioni aggiuntive su un evento per altri usi. Maggiori informazioni sul segnaposto." + +#: admin/em-options.php:350 +msgid "Show some love?" +msgstr "Vuoi mostrare un po' di amore?" + +#: admin/em-options.php:350 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Centinaia di ore di tempo libero sono state spese nel fare questo plugin gratuito, mostrate il vostro supporto e aggiungete un piccolo link al sito del plug-in fondo alle pagine evento." + +#: admin/em-options.php:440 +msgid "Events page" +msgstr "Pagina evento" + +#: admin/em-options.php:445 +msgid "Show events page in lists?" +msgstr "Mostrare la pagina degli eventi nelle liste delle pagine?" + +#: admin/em-options.php:445 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Selezionare questa opzione se si desidera che la pagina degli eventi appaia insieme ad altre pagine all'interno di elenchi di pagine." + +#: admin/em-options.php:446 +msgid "Display calendar in events page?" +msgstr "Visualizzare il calendario nelle pagine evento?" + +#: admin/em-options.php:446 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Questa opzione consente di visualizzare il calendario nella pagina degli eventi, invece che il classico elenco. Si raccomanda di non visualizzare sia il widget calendario che il calendario nella pagina degli eventi ." + +#: admin/em-options.php:446 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Se si desidera visualizzare gli eventi che si estendono su più di un giorno, vedere la sezione Calendario in questa pagina." + +#: admin/em-options.php:447 +msgid "Disable title rewriting?" +msgstr "Disabilitare la riscrittura del titolo?" + +#: admin/em-options.php:448 +msgid "Event Manager titles" +msgstr "Titoli di Events Manager" + +#: admin/em-options.php:448 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Questa impostazione ha senso solo se si seleziona 'Sì' qui sopra. Noterete che i titoli della pagina degli eventi non vengono riscritti, e si dispone di un nuovo titolo sotto il nome della pagina di default. Lì è dove si controlla il codice HTML di questo titolo. Assicurati di mantenere il segnaposto #_PAGETITLE lì, in quanto è ciò che viene riscritto da Events Manager. Per controllare ciò che è riscritto in questo titolo, vedi più avanti le impostazioni per i titoli delle pagine." + +#: admin/em-options.php:568 +msgid "Event List Limits" +msgstr "Limite per la lista Eventi " + +#: admin/em-options.php:568 +msgid "This will control how many events are shown on one list by default." +msgstr "In questo modo controllare il numero predefinito di eventi che sono mostrati in una sola lista." + +#: admin/em-options.php:501 +msgid "Are current events past events?" +msgstr "Gli eventi in corso risultano fra gli eventi del passato?" + +#: admin/em-options.php:501 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Per impostazione predefinita, gli eventi che hanno una data di fine successiva a quella di oggi saranno inclusi nelle ricerche. Scegli 'Sì' per considerare come passati gli eventi già iniziati ma non ancora finiti." + +#: admin/em-options.php:449 +msgid "Show events search?" +msgstr "Mostra ricerca eventi?" + +#: admin/em-options.php:449 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Se impostato su 'Sì', un modulo di ricerca apparirà appena sopra l'elenco degli eventi." + +#: admin/em-options.php:511 +msgid "Default event list ordering" +msgstr "Ordinamento predefinito della lista di eventi" + +#: admin/em-options.php:516 +msgid "Order by start date, start time, then event name" +msgstr "Ordina per data di inizio, ora di inizio e nome dell'evento" + +#: admin/em-options.php:517 +msgid "Order by name, start date, then start time" +msgstr "Ordina per nome, data di inizio e ora di inizio" + +#: admin/em-options.php:518 +msgid "Order by name, end date, then end time" +msgstr "Ordina per nome, data di conclusione e ora di conclusione" + +#: admin/em-options.php:519 +msgid "Order by end date, end time, then event name" +msgstr "Ordina per data di conclusione, ora di conclusione e nome dell'evento" + +#: admin/em-options.php:533 +msgid "All Ascending" +msgstr "In modo crescente" + +#: admin/em-options.php:536 +msgid "All Descending" +msgstr "In modo decrescente" + +#: admin/em-options.php:490 +#: admin/em-options.php:550 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "Quando Events Manager visualizza liste di eventi il ​​comportamento predefinito è ordinare per data di inizio in ordine crescente. Per modificare questo, modificare i valori qui sopra." + +#: admin/em-options.php:554 +msgid "Event list scope" +msgstr "Intervallo temporale della lista degli eventi" + +#: admin/em-options.php:564 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Mostra nella pagina degli eventi solo quelli che hanno inizio entro un certo limite temporale. Di default sono visualizzati tutti gli eventi futuri, senza limiti." + +#: admin/em-options.php:847 +msgid "Events format" +msgstr "Formattazione Eventi" + +#: admin/em-options.php:850 +#: admin/em-options.php:935 +#: admin/em-options.php:964 +#, php-format +msgid "%s Page" +msgstr "Pagina %s " + +#: admin/em-options.php:852 +msgid "Default event list format header" +msgstr "Formattazione predefinita dell'intestazione della lista degli eventi " + +#: admin/em-options.php:852 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Questo contenuto appare appena sopra il vostro codice per la formattazione dell'elenco di eventi." + +#: admin/em-options.php:853 +msgid "Default event list format" +msgstr "Formattazione predefinita della lista degli eventi" + +#: admin/em-options.php:853 +msgid "The format of any events in a list." +msgstr "La formattazione di ogni evento in un elenco." + +#: admin/em-options.php:854 +msgid "Default event list format footer" +msgstr "Formattazione predefinita del piè di pagina della lista degli eventi " + +#: admin/em-options.php:854 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Questo contenuto appare appena sotto il vostro codice per la formattazione dell'elenco di eventi." + +#: admin/em-options.php:855 +msgid "No events message" +msgstr "Messaggio di assenza eventi" + +#: admin/em-options.php:855 +msgid "The message displayed when no events are available." +msgstr "Il messaggio visualizzato quando non esistono eventi disponibili." + +#: admin/em-options.php:856 +msgid "List events by date title" +msgstr "Titolo dell'elenco di eventi di un giorno" + +#: admin/em-options.php:856 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
                          " +msgstr "Se si visualizza una pagina degli eventi in una data specifica, questo è il titolo che appare. Per inserire la formattazione della data, usa i caratteri di formattazione di PHP con un # davanti. Ad esempio: #m, #M, #j, ecc...
                          " + +#: admin/em-options.php:858 +#: admin/em-options.php:942 +#: admin/em-options.php:971 +#: admin/em-options.php:992 +#, php-format +msgid "Single %s Page" +msgstr "Pagina singolo %s " + +#: admin/em-options.php:860 +msgid "Single event page title format" +msgstr "Formattazione del titolo della pagina di un singolo evento." + +#: admin/em-options.php:860 +msgid "The format of a single event page title." +msgstr "Indicare la formattazione del titolo della pagina del singolo evento" + +#: admin/em-options.php:861 +msgid "Default single event format" +msgstr "Formattazione predefinito dell' evento singolo" + +#: admin/em-options.php:861 +msgid "The format of a single event page." +msgstr "Il codice HTML che esprime la formattazione della pagina dove è descritto il singolo evento." + +#: admin/em-options.php:909 +msgid "Calendar format" +msgstr "Formattazione Calendario" + +#: admin/em-options.php:913 +msgid "Small calendar title" +msgstr "Titolo del Calendario Widget" + +#: admin/em-options.php:913 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "La formattazione del testo che appare quando si passa sopra ad un giorno con eventi nel calendario widget." + +#: admin/em-options.php:914 +msgid "Small calendar title separator" +msgstr "Separatore titoli calendario widget" + +#: admin/em-options.php:914 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "Il separatore che appare quando più eventi si svolgono nello stesso giorno." + +#: admin/em-options.php:915 +msgid "Full calendar events format" +msgstr "Formattazione eventi calendario completo" + +#: admin/em-options.php:915 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "La formattazione di ogni evento quando viene visualizzata nel calendario completo. Ricordati di inserire i tag li prima e dopo l'evento." + +#: admin/em-options.php:916 +msgid "Show long events on calendar pages?" +msgstr "Mostrare eventi lunghi sulle pagine del calendario?" + +#: admin/em-options.php:916 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Se si sta mostrando un calendario sulla pagina degli eventi (vedere la sezione Formattazione Eventi in questa pagina), si ha la possibilità di mostrare gli eventi che si estendono su più giorni ogni giorno che coprono." + +#: admin/em-options.php:917 +msgid "Show list on day with single event?" +msgstr "Una lista anche se c'è un singolo evento?" + +#: admin/em-options.php:917 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Per impostazione predefinita, se un giorno del calendario ha un solo evento, viene mostrata il singolo evento quando si clicca sul link di quella data del calendario. Se invece si seleziona 'Sì', si aprirà sempre e comunque una pagina con un elenco di eventi." + +#: admin/em-options.php:920 +msgid "iCal Feed Settings" +msgstr "Impostazioni feed iCal" + +#: admin/em-options.php:922 +msgid "iCal Title" +msgstr "Titolo iCal" + +# @ dbem +#: admin/em-options.php:922 +msgid "The title that will appear in the calendar." +msgstr "Il titolo che apparirà nel calendario" + +# @ dbem +#: admin/em-options.php:923 +msgid "iCal Limit" +msgstr "Limite iCal " + +# @ dbem +#: admin/em-options.php:923 +msgid "Limits the number of future events shown (0 = unlimited)." +msgstr "Numero limite di eventi futuri visualizzati (0=illimitato)" + +#: admin/em-options.php:932 +msgid "Locations format" +msgstr "Formattazione luoghi" + +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "%s list header format" +msgstr "Formattazione dell'intestazione della lista %s" + +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Questo contenuto appare appena sopra il tuo codice per la formattazione della lista %s qui sotto. Il contenuto predefinito è vuoto." + +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "%s list item format" +msgstr "Formattazione elemento della lista %s" + +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "The format of a single %s in a list." +msgstr "La formattazione di un %s singolo all'interno di in un elenco." + +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "%s list footer format" +msgstr "Formattazione piè di pagina lista %s" + +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Questo contenuto apparirà appena sotto il vostro codice per la formattazione della lista %s qui sopra. il contenuto predefinito è vuoto." + +#: admin/em-options.php:940 +#: admin/em-options.php:951 +#: admin/em-options.php:969 +#: admin/em-options.php:979 +#: admin/em-options.php:1000 +#, php-format +msgid "No %s message" +msgstr "Messaggio assenza %s" + +#: admin/em-options.php:940 +#: admin/em-options.php:969 +#, php-format +msgid "The message displayed when no %s are available." +msgstr "Il messaggio visualizzato quando non ci sono %s disponibili." + +#: admin/em-options.php:944 +#: admin/em-options.php:973 +#: admin/em-options.php:994 +#, php-format +msgid "Single %s title format" +msgstr "Formattazione titolo %s singolo" + +#: admin/em-options.php:944 +msgid "The format of a single location page title." +msgstr "La formattazione del titolo della pagina di un singolo luogo." + +#: admin/em-options.php:945 +#: admin/em-options.php:974 +#: admin/em-options.php:995 +#, php-format +msgid "Single %s page format" +msgstr "Formattazione pagina singolo %s" + +#: admin/em-options.php:945 +msgid "The format of a single location page." +msgstr "La formattazione della pagina di un singolo luogo." + +#: admin/em-options.php:946 +msgid "Default location balloon format" +msgstr "Formattazione predefinita fumetto del luogo" + +#: admin/em-options.php:946 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "La formattazione del testo che appare nel fumetto della mappa di un luogo." + +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#, php-format +msgid "%s List Formats" +msgstr "Formattazione elemento della lista %s" + +#: admin/em-options.php:950 +#: admin/em-options.php:978 +#: admin/em-options.php:999 +#, php-format +msgid "Default %s list format" +msgstr "Formattazione predefinita di un elenco %s" + +#: admin/em-ms-options.php:163 +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-options.php:418 +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:502 +#: admin/em-options.php:950 +#: admin/em-options.php:951 +#: admin/em-options.php:978 +#: admin/em-options.php:979 +#: admin/em-options.php:999 +#: admin/em-options.php:1000 +#: admin/em-options.php:1366 +#: admin/em-options.php:1367 +#: admin/em-options.php:1368 +#: admin/em-options.php:1369 +#: admin/em-options.php:1370 +#: admin/em-options.php:1371 +#: events-manager.php:295 +#: events-manager.php:296 +#: events-manager.php:297 +#: events-manager.php:298 +#: events-manager.php:299 +#: events-manager.php:300 +msgid "events" +msgstr "eventi" + +#: admin/em-options.php:950 +msgid "The format of the events the list inserted in the location page through the #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS element." +msgstr "La formattazione della lista degli eventi inserita nella pagina dei luoghi attraverso i segnaposto #_LOCATIONNEXTEVENTS , #_LOCATIONPASTEVENTS e #_LOCATIONALLEVENTS." + +#: admin/em-options.php:951 +msgid "The message to be displayed in the list generated by #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS when no events are available." +msgstr "Il messaggio da visualizzare nella lista generata da #_LOCATIONNEXTEVENTS , #_LOCATIONPASTEVENTS e #_LOCATIONALLEVENTS quando non esistono eventi disponibili." + +#: admin/em-options.php:961 +msgid "Categories format" +msgstr "Formattazione categorie" + +#: admin/em-options.php:707 +#: admin/em-options.php:708 +#: admin/em-options.php:964 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: em-install.php:416 +#: em-install.php:418 +#: em-install.php:697 +#: em-install.php:747 +msgid "Categories" +msgstr "Categorie" + +#: admin/em-options.php:973 +msgid "The format of a single category page title." +msgstr "La formattazione del titolo della pagina di una singola categoria." + +#: admin/em-options.php:974 +msgid "The format of a single category page." +msgstr "La formattazione della pagina di una singola categoria." + +#: admin/em-options.php:978 +msgid "The format of the events the list inserted in the category page through the #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." +msgstr "La formattazione della lista degli eventi inserita nella pagina delle categorie attraverso i segnaposto #_CATEGORNEXTEVENTS , #_CATEGORPASTEVENTS e #_CATEGORALLEVENTS elemento." + +#: admin/em-options.php:979 +msgid "The message to be displayed in the list generated by #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS when no events are available." +msgstr "Il messaggio da visualizzare nella lista generata da #_CATEGORNEXTEVENTS , #_CATEGORPASTEVENTS e #_CATEGORALLEVENTS quando non esistono eventi disponibili." + +#: admin/em-options.php:1009 +msgid "RSS feed format" +msgstr "Formattazione RSS feed " + +#: admin/em-options.php:1013 +msgid "RSS main title" +msgstr "Titolo principale RSS" + +#: admin/em-options.php:1013 +msgid "The main title of your RSS events feed." +msgstr "Il titolo principale del feed RSS dei tuoi eventi." + +#: admin/em-options.php:1014 +msgid "RSS main description" +msgstr "Descrizione principale RSS" + +#: admin/em-options.php:1014 +msgid "The main description of your RSS events feed." +msgstr "La descrizione principale del feed RSS dei tuoi eventi." + +#: admin/em-options.php:1015 +msgid "RSS title format" +msgstr "Formattazione titolo RSS" + +#: admin/em-options.php:1015 +msgid "The format of the title of each item in the events RSS feed." +msgstr "La formattazione del titolo di ciascun elemento del feed RSS eventi." + +#: admin/em-options.php:1016 +msgid "RSS description format" +msgstr "Formattazione descrizione RSS" + +#: admin/em-options.php:1016 +msgid "The format of the description of each item in the events RSS feed." +msgstr "La formattazione della descrizione di ogni elemento del feed RSS degli eventi." + +#: admin/em-options.php:1024 +msgid "Maps and geotagging" +msgstr "Mappe e geolocalizzazione " + +#: admin/em-options.php:1029 +msgid "Enable Google Maps integration?" +msgstr "Abilitare l'integrazione di Google Maps?" + +#: admin/em-options.php:1033 +msgid "Check this option to enable Goggle Map integration." +msgstr "Selezionare questa opzione per abilitare l'integrazione di Goggle Map." + +#: admin/em-options.php:1037 +msgid "Map text format" +msgstr "Formattazione testo mappa" + +#: admin/em-options.php:1037 +msgid "The text format inside the map balloons." +msgstr "La formattazione del testo all'interno dei fumetti della mappa." + +#: admin/em-options.php:1055 +msgid "Approval Required?" +msgstr "Approvazione richiesta?" + +#: admin/em-options.php:1055 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "La prenotazione non sarà confermata fino a quando l'amministratore dell'evento non la approvi." + +#: admin/em-options.php:1072 +msgid "Currency" +msgstr "Valuta" + +#: admin/em-options.php:1072 +msgid "Choose your currency for displaying event pricing." +msgstr "Scegli la tua valuta per la visualizzazione del prezzi dell'evento." + +#: admin/em-options.php:1112 +msgid "Single ticket mode?" +msgstr "Modalità biglietto unico?" + +#: admin/em-options.php:1112 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "In modalità biglietto unico, gli utenti possono creare un solo biglietto per ogni prenotazione (e non vedere le opzioni per aggiungere più biglietti)." + +#: admin/em-options.php:1113 +msgid "Show ticket table in single ticket mode?" +msgstr "Mostra la tabella bigliettoi in modalità biglietto unico?" + +#: admin/em-options.php:1113 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Scegliere 'Sì' se si preferisce una tabella dei biglietti come quella per i biglietti multipli, anche per eventi con biglietto unico." + +#: admin/em-options.php:1114 +msgid "Show unavailable tickets?" +msgstr "Mostra biglietti non disponibili?" + +#: admin/em-options.php:1114 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "È possibile scegliere se visualizzare o meno i biglietti non disponibili ai visitatori." + +#: admin/em-options.php:1056 +msgid "Reserved unconfirmed spaces?" +msgstr "Riservare i posti non confermati?" + +#: admin/em-options.php:1056 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Per impostazione predefinita, i posti per gli eventi non sono più disponibili una volta che ci siano abbastanza prenotazioni CONFERMATE. Per riservare i posti anche se non approvati, scegliere 'Sì'." + +#: admin/em-options.php:1115 +msgid "Show multiple tickets if logged out?" +msgstr "Mostra i biglietti multipli se disconnesso?" + +#: admin/em-options.php:1115 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Se disconnesso, all'utente verrà chiesto di registrarsi per prenotare. Tuttavia, possiamo mostrare i biglietti a disposizione se avete più di un biglietto." + +#: admin/em-options.php:1058 +msgid "Allow overbooking when approving?" +msgstr "Consentire overbooking in sede di approvazione?" + +#: admin/em-options.php:1058 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Se si ottiene un sacco di prenotazioni in sospeso e si decide di concedere più prenotazioni di quanti posti ci siano, impostando 'Sì' ti permetterà di ignorare il limite di posti dell'evento durante la fase di approvazione delle prenotazioni." + +#: admin/em-options.php:1087 +msgid "Allow guest bookings?" +msgstr "Permetti prenotazioni ospite?" + +#: admin/em-options.php:1087 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Se attivato, ai visitatori ospiti che forniranno un indirizzo email verrà automaticamente creato per lor un account utente con la loro prenotazione. Essi saranno inoltre in grado di eseguire nuovamente l'accesso con 'account appena creato." + +#: admin/em-options.php:1059 +msgid "Allow double bookings?" +msgstr "Permetti doppie prenotazioni?" + +# @ dbem +#: admin/em-options.php:1059 +msgid "If enabled, users can book an event more than once." +msgstr "Se abilitato, gli utenti possono prenotare un evento più di una volta" + +#: admin/em-options.php:1088 +msgid "Display login form?" +msgstr "Visualizzare il modulo di login?" + +#: admin/em-options.php:1088 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Scegliere se visualizzare o meno un modulo di login nel modulo di prenotazione per ricordare ai vostri membri di eseguire l'accesso prima di prenotare." + +#: admin/em-options.php:1090 +msgid "Booking form feedback messages" +msgstr "Messaggio di notifica modulo prenotazione" + +# @ dbem +#: admin/em-options.php:1091 +msgid "When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below." +msgstr "Quando un utente fa una prenotazione, a seconda del risultato, viene visualizzato un messaggio di notifica, che può essere personalizzato qui sotto." + +#: admin/em-options.php:1093 +msgid "Successful booking" +msgstr "Prenotazione confermata con successo" + +# @ dbem +#: admin/em-options.php:1093 +msgid "When a booking is registered and confirmed." +msgstr "Quando una prenotazione è registrata e confermata." + +#: admin/em-options.php:1094 +msgid "Successful pending booking" +msgstr "Ricevuta prenotazione in attesa di conferma." + +# @ dbem +#: admin/em-options.php:1094 +msgid "When a booking is registered but pending." +msgstr "Quando una prenotazione è registrata ma in attesa." + +# @ dbem +#: admin/em-options.php:1095 +msgid "Not enough spaces" +msgstr "Non ci sono posti a sufficienza" + +#: admin/em-options.php:1095 +msgid "When a booking cannot be made due to lack of spaces." +msgstr "Quando una prenotazione non può essere fatta per una mancanza di posti disponibili sufficienti." + +# @ dbem +#: admin/em-options.php:1096 +msgid "Errors" +msgstr "Errori" + +# @ dbem +#: admin/em-options.php:1096 +msgid "When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors." +msgstr "Quando una prenotazione non può essere fatta a causa di un errore di compilazione del modulo. Qui sotto ci sarò una lista dinamica di errori." + +# @ dbem +#: admin/em-options.php:1097 +msgid "User must log in" +msgstr "L'utente deve eseguire il login" + +#: admin/em-options.php:1097 +msgid "When a user must log in before making a booking." +msgstr "Quando è necessario fare il login prima di effettuare una prenotazione." + +# @ dbem +#: admin/em-options.php:1098 +msgid "Error mailing user" +msgstr "Errore scrivendo all'utente " + +# @ dbem +#: admin/em-options.php:1098 +msgid "If a booking is made and an email cannot be sent, this is added to the success message." +msgstr "Se viene fatta una prenotazione e non può essere spedita una email, questo è ciò che viene aggiunto al messaggio di notifica." + +# @ dbem +#: admin/em-options.php:1099 +msgid "Already booked" +msgstr "Già prenotato" + +# @ dbem +#: admin/em-options.php:1099 +msgid "If the user made a previous booking and cannot double-book." +msgstr "Se un utente ha già fatto una prenotazione precedente e non può prenotare due volte. " + +# @ dbem +#: admin/em-options.php:1100 +msgid "No spaces booked" +msgstr "Nessun posto prenotato" + +# @ dbem +#: admin/em-options.php:1100 +msgid "If the user tries to make a booking without requesting any spaces." +msgstr "Se l'utente ha provato a prenotare un evento senza indicare alcun posto." + +#: admin/em-options.php:1162 +msgid "Booking Email Templates" +msgstr "Modelli email per prenotazioni " + +#: admin/em-options.php:1166 +msgid "Default contact person" +msgstr "Referente predefinito da contattare" + +#: admin/em-options.php:1166 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Selezionare la persona referente predefinita. Questo utente sarà impiegato ogni volta che una persona referente non è esplicitamente specificata in un evento" + +#: admin/em-options.php:1167 +msgid "Email events admin?" +msgstr "Email eventi agli amministratori?" + +#: admin/em-options.php:1167 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Se vuoi che ogni e-mail di conferma prenotazione ad un evento sia inviata ad un amministratore, scrivi la sua e-mail qui (lascia vuoto per non inviare l'e-mail)." + +#: admin/em-options.php:1168 +msgid "Email contact person?" +msgstr "E-mail al referente?" + +#: admin/em-options.php:1168 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Seleziona questa opzione se desideri che il referente dell'evento riceva una e-mail quando qualcuno prenota. Una email verrà inviata quando viene fatta la prenotazione (indipendentemente se confermato o in attesa)." + +#: admin/em-options.php:1169 +msgid "Disable new registration email?" +msgstr "Disabilitare l'e-mail di una nuova registrazione?" + +#: admin/em-options.php:1171 +msgid "Contact person booking confirmed" +msgstr "Email di prenotazione confermata al referente" + +#: admin/em-options.php:1172 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "Una email verrà inviata al referente dell'evento appena la prenotazione viene fatta." + +#: admin/em-options.php:1174 +msgid "Contact person email subject" +msgstr "Oggetto messaggio al referente di conferma prenotazione" + +#: admin/em-options.php:1175 +msgid "Contact person email" +msgstr "Testo del messaggio al referente di conferma prenotazione" + +#: admin/em-options.php:1177 +msgid "Contact person booking cancelled" +msgstr "Email al referente di una prenotazione cancellata " + +#: admin/em-options.php:1178 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Una email verrà inviata al referente dell'evento se qualcuno annulla la prenotazione." + +#: admin/em-options.php:1180 +msgid "Contact person cancellation subject" +msgstr "Oggetto del messaggio al referente per la cancellazione di una prenotazione " + +#: admin/em-options.php:1181 +msgid "Contact person cancellation email" +msgstr "Testo del messaggio al referente per la cancellazione di una prenotazione " + +#: admin/em-options.php:1183 +msgid "Confirmed booking email" +msgstr "Email di prenotazione confermata" + +#: admin/em-options.php:1184 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Questa viene inviata quando la prenotazione di una persona è confermata. Questa sarà inviata automaticamente se le approvazioni sono richieste e la prenotazione è approvata. Se le approvazioni sono disabilitate, questa è la mail inviata quando un utente invia la prenotazione." + +#: admin/em-options.php:1186 +msgid "Booking confirmed email subject" +msgstr "Oggetto email prenotazione confermata" + +#: admin/em-options.php:1187 +msgid "Booking confirmed email" +msgstr "Testo email prenotazione confermata" + +#: admin/em-options.php:1189 +msgid "Pending booking email" +msgstr "Email di prenotazione in attesa di conferma" + +#: admin/em-options.php:1190 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Questa sarà inviata alla persona quando presenta la sua prenotazione. Non rilevante se le prenotazioni non richiedono l'approvazione." + +#: admin/em-options.php:1192 +msgid "Booking pending email subject" +msgstr "Oggetto email prenotazione pendente" + +#: admin/em-options.php:1193 +msgid "Booking pending email" +msgstr "Testo email prenotazione pendente" + +#: admin/em-options.php:1195 +msgid "Rejected booking email" +msgstr "Email di prenotazione respinta" + +#: admin/em-options.php:1196 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Questa sarà inviata automaticamente quando la prenotazione viene rifiutata. Non rilevante se le prenotazioni non richiedono l'approvazione." + +#: admin/em-options.php:1198 +msgid "Booking rejected email subject" +msgstr "Oggetto email prenotazione respinta" + +#: admin/em-options.php:1198 +msgid "The subject of the email sent to the person making a booking that is awaiting administrator approval. Not relevant if bookings don't require approval." +msgstr "L'oggetto della mail inviata alla persona che effettua una prenotazione che è in attesa dell'approvazione dell'amministratore. Non rilevante se le prenotazioni non richiedono l'approvazione." + +#: admin/em-options.php:1199 +msgid "Booking rejected email" +msgstr "Testo email prenotazione respinta" + +#: admin/em-options.php:1199 +msgid "The body of the email which will be sent to the person if the booking is rejected. Not relevant if bookings don't require approval." +msgstr "Il corpo della e-mail che sarà inviata alla persona se la prenotazione viene rifiutata. Non rilevante se le prenotazioni non richiedono l'approvazione." + +#: admin/em-options.php:1202 +msgid "This will be sent when a user cancels their booking." +msgstr "Questa sarà inviata quando un utente cancella la prenotazione." + +#: admin/em-options.php:1204 +msgid "Booking cancelled email subject" +msgstr "Oggetto email prenotazione annullata" + +#: admin/em-options.php:1205 +msgid "Booking cancelled email" +msgstr "Testo email prenotazione annullata" + +#: admin/em-options.php:1327 +msgid "Email Settings" +msgstr "Impostazioni email" + +#: admin/em-options.php:1332 +msgid "Notification sender name" +msgstr "Nome del mittente" + +#: admin/em-options.php:1332 +msgid "Insert the display name of the notification sender." +msgstr "Inserire il nome visualizzato come mittente delle notifiche." + +#: admin/em-options.php:1333 +msgid "Notification sender address" +msgstr "Indirizzo del mittente delle notifiche" + +#: admin/em-options.php:1333 +msgid "Insert the address of the notification sender." +msgstr "Inserisci l'indirizzo del mittente delle notifiche." + +#: admin/em-options.php:1334 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "La porta attraverso la quale verranno inviate le notifiche e-mail. Assicurarsi che il firewall non blocchi questa porta" + +#: admin/em-options.php:1335 +msgid "Mail sending method" +msgstr "Metodo di invio posta" + +#: admin/em-options.php:1335 +msgid "PHP mail function" +msgstr "funzione PHP mail" + +#: admin/em-options.php:1335 +msgid "Select the method to send email notification." +msgstr "Selezionare il metodo per inviare le mail di notifica." + +#: admin/em-options.php:1336 +msgid "Use SMTP authentication?" +msgstr "Usa autenticazione SMTP?" + +#: admin/em-options.php:1336 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "L'autenticazione SMTP è spesso necessaria. Se si utilizza GMail, assicurarsi di impostare questo parametro su Sì" + +#: admin/em-options.php:1337 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "L'host SMTP. Di solito corrisponde a 'localhost'. Se si utilizza GMail, impostare questo valore a 'ssl:// smtp.gmail.com: 465'." + +#: admin/em-options.php:1338 +msgid "SMTP username" +msgstr "Nome utente SMTP" + +#: admin/em-options.php:1338 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Inserire il nome utente da utilizzare per accedere al server SMTP." + +#: admin/em-options.php:1339 +msgid "SMTP password" +msgstr "Password SMTP" + +#: admin/em-options.php:1339 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Inserire la password da utilizzare per accedere al server SMTP" + +#: admin/em-options.php:1309 +msgid "Maximum width (px)" +msgstr "Larghezza massima (px)" + +#: admin/em-options.php:1309 +msgid "The maximum allowed width for images uploades" +msgstr "La larghezza massima consentita per le immagini caricate" + +#: admin/em-options.php:1310 +msgid "Maximum height (px)" +msgstr "Altezza massima (px)" + +#: admin/em-options.php:1310 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "L'altezza massima consentita per le immagini caricate, in pixel" + +#: admin/em-options.php:1311 +msgid "Maximum size (bytes)" +msgstr "Dimensione massima (byte)" + +#: admin/em-options.php:1311 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "La dimensione massima consentita per le immagini caricate, in byte" + +#: admin/em-options.php:1355 +msgid "User Capabilities" +msgstr "Permessi utenti" + +#: admin/em-options.php:1359 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "ATTENZIONE: modificando questi valori si può comportare l'esposizione di informazioni precedentemente nascoste a tutti gli utenti." + +#: admin/em-options.php:1405 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "È ora possibile avere un controllo fine su quanto gli utenti possano fare con gli eventi. Ogni utente può eseguire diverse serie di azioni." + +#: admin/em-options.php:1398 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "L'utente può gestire prenotazioni individuali di altri utenti e le impostazioni di prenotazione dell'evento." + +#: admin/em-options.php:1399 +msgid "User can use and manage bookings with their events." +msgstr "L'utente può utilizzare e gestire le prenotazioni ei propri eventi." + +#: admin/em-options.php:1287 +msgid "Allow anonymous event submissions?" +msgstr "Permettere la presentazione di eventi anonimi?" + +#: admin/em-options.php:1287 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Volete permettere agli utenti di inviare le prenotazioni in forma anonima? Se è così, è possibile utilizzare il nuovo codice breve [event_form] o em_event_form() tag template con questo abilitato." + +#: admin/em-options.php:1288 +msgid "Guest Default User" +msgstr "Utente ospite predefinito" + +#: admin/em-options.php:1281 +#: admin/em-options.php:1289 +msgid "Success Message" +msgstr "Messaggio inviato con successo" + +#: admin/em-options.php:1289 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Presentatori anonimi non possono vedere o modificare il proprio evento, una volta presentato. È possibile personalizzare il messaggio di successo che vedono qui." + +#: admin/em-bookings.php:59 +msgid "Event Bookings Dashboard" +msgstr "Plancia per prenotazioni eventi" + +#: admin/em-bookings.php:63 +#: admin/em-bookings.php:114 +#: admin/em-bookings.php:166 +msgid "Pending Bookings" +msgstr "Prenotazioni in attesa" + +#: admin/em-bookings.php:66 +msgid "Events With Bookings Enabled" +msgstr "Eventi con prenotazioni abilitate" + +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +msgid "You do not have the rights to manage this event." +msgstr "Non hai i diritti per gestire questo evento." + +#: admin/em-bookings.php:93 +#, php-format +msgid "Manage %s Bookings" +msgstr "Gestione prenotazioni di %s " + +#: admin/em-bookings.php:94 +#: admin/em-bookings.php:148 +msgid "View/Edit Event" +msgstr "Visualizza / Modifica evento" + +#: admin/em-bookings.php:101 +msgid "Availability" +msgstr "Disponibilità" + +#: admin/em-bookings.php:101 +msgid "Spaces confirmed" +msgstr "Posti confermati" + +#: admin/em-bookings.php:117 +#: admin/em-bookings.php:169 +msgid "Confirmed Bookings" +msgstr "Prenotazioni confermate" + +#: admin/em-bookings.php:119 +#: admin/em-bookings.php:171 +msgid "Rejected Bookings" +msgstr "Prenotazioni respinte" + +#: admin/em-bookings.php:121 +#: admin/em-bookings.php:173 +msgid "Cancelled Bookings" +msgstr "Prenotazioni cancellate" + +#: admin/em-bookings.php:137 +msgid "You do not have the rights to manage this ticket." +msgstr "Non hai i diritti di gestire questo biglietto." + +#: admin/em-bookings.php:147 +#, php-format +msgid "Ticket for %s" +msgstr "Biglietto per %s" + +#: admin/em-bookings.php:149 +msgid "View Event Bookings" +msgstr "Visualizza prenotazioni evento" + +#: admin/em-bookings.php:158 +msgid "Min" +msgstr "Min" + +#: admin/em-bookings.php:159 +msgid "Max" +msgstr "Max" + +#: admin/em-bookings.php:160 +msgid "Start" +msgstr "Inizio" + +#: admin/em-bookings.php:161 +msgid "End" +msgstr "Fine" + +#: admin/em-bookings.php:198 +msgid "Edit Booking" +msgstr "Modifica Prenotazione" + +#: admin/em-bookings.php:206 +msgid "Event Details" +msgstr "Dettagli evento" + +#: admin/em-bookings.php:217 +msgid "Date/Time" +msgstr "Data / Ora" + +#: admin/em-bookings.php:229 +#: admin/em-bookings.php:389 +msgid "Personal Details" +msgstr "Dati personali" + +#: admin/em-bookings.php:237 +msgid "Booking Details" +msgstr "Dettagli Prenotazione" + +#: admin/em-bookings.php:283 +msgid "Totals" +msgstr "Totali" + +#: admin/em-bookings.php:302 +msgid "Modify Booking" +msgstr "Modifica prenotazioni" + +# @ dbem +#: admin/em-bookings.php:307 +msgid "Note: ticket availability not taken into account (i.e. you can overbook). Confirmation email is not resent automatically." +msgstr "Nota:Disponibilità dei posti non presa in considerzione (cioè si possono fare più prenotazioni del previsto). L'email di conferma non è rispedita automaticamente." + +#: admin/em-bookings.php:323 +msgid "Booking Notes" +msgstr "Note Prenotazione " + +#: admin/em-bookings.php:326 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "È possibile aggiungere di seguito note private per uso interno che solo i manager di eventi vedranno." + +#: admin/em-bookings.php:331 +msgid "wrote" +msgstr "ha scritto" + +#: admin/em-bookings.php:377 +msgid "Manage Person's Booking" +msgstr "Gestione Prenotazioni partecipante" + +#: admin/em-bookings.php:379 +msgid "Edit User" +msgstr "Modifica utente" + +#: admin/em-bookings.php:400 +msgid "Past And Present Bookings" +msgstr "Prenotazioni passate e presenti" + +# @ dbem +#: admin/em-admin.php:124 +#, php-format +msgid "

                          Events Manager is ready to go! It is highly recommended you read the Getting Started guide on our site, as well as checking out the Settings Page. Dismiss

                          " +msgstr "

                          Events Manager è pronto a partire! Si consiglia vivamente di leggere la guida Primi Passisul nostro sito, e di controllare la Pagina impostazioni. Chiudi

                          " + +#: admin/em-admin.php:179 +#, php-format +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Questa pagina corrisponde alla pagina eventi diEvents Manager. Il suo contenuto sarà sovrascritto da Events Manager, ma se si include la parola CONTENTS (esattamente in stampatello) e la circondi con altro testo, solo CONTENTS verrà sovrascritto. Se si desidera modificare il modo in cui i tuoi eventi appaiono, vai alla pagina impostazioni." + +#: em-functions.php:74 +#, php-format +msgid "Displaying %s–%s of %s" +msgstr "Visualizzati %s - %s di %s" + +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +msgid "Approve" +msgstr "Approva" + +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-rejected.php:55 +msgid "Decline" +msgstr "Declina" + +#: admin/bookings/em-cancelled.php:84 +#: admin/bookings/em-confirmed.php:85 +#: admin/bookings/em-pending.php:99 +#: admin/bookings/em-rejected.php:84 +msgid "Booker" +msgstr "Partecipante" + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Ripristina" + +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-rejected.php:112 +msgid "Edit/View" +msgstr "Modifica / Visualizza" + +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Nessuna prenotazione annullata." + +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +msgid "Unapprove" +msgstr "Disapprova" + +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +msgid "Reject" +msgstr "Respingi" + +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +msgid "No confirmed bookings." +msgstr "Nessuna prenotazione confermata." + +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Nessuna prenotazione respinta." + +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Nessuna prenotazione in sospeso." + +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Tutti gli eventi" + +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Eventi futuri" + +#: admin/bookings/em-events.php:51 +msgid "Total" +msgstr "Totale" + +#: admin/bookings/em-events.php:72 +msgid "Filter" +msgstr "Filtro" + +#: admin/em-options.php:615 +#: admin/em-options.php:665 +#: admin/em-options.php:755 +#: classes/em-location-posts-admin.php:41 +msgid "Town" +msgstr "Città" + +#: admin/em-admin.php:41 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Come ottenere assistenza per Events Manager" + +#: admin/em-help.php:25 +msgid "Placeholders for customizing event pages" +msgstr "Segnaposti per personalizzare le pagine di eventi" + +#: admin/em-help.php:26 +#, php-format +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "Nella pagina delle impostazioni , troverete diverse caselle di testo in cui è possibile modificare come appaiono le informazioni sugli eventi, le liste di eventi e i luoghi. Utilizzando i segnaposto di seguito, è possibile scegliere quali informazioni devono essere visualizzate." + +#: admin/em-admin.php:90 +#: classes/em-people.php:28 +msgid "Events Manager" +msgstr "Events Manager" + +#: em-functions.php:213 +msgid "Mon" +msgstr "Lun" + +#: em-functions.php:213 +msgid "Tue" +msgstr "Mar" + +#: em-functions.php:213 +msgid "Wed" +msgstr "Mer" + +#: em-functions.php:213 +msgid "Thu" +msgstr "Gio" + +#: em-functions.php:213 +msgid "Fri" +msgstr "Ven" + +#: em-functions.php:213 +msgid "Sat" +msgstr "Sab" + +#: em-functions.php:213 +msgid "Sun" +msgstr "Dom" + +#: classes/em-event-post-admin.php:192 +#: classes/em-event-post-admin.php:359 +#: classes/em-event-post-admin.php:365 +msgid "Group Ownership" +msgstr "Proprietà del gruppo" + +#: classes/em-event-post-admin.php:185 +msgid "Bookings Stats" +msgstr "Statistiche sulle prenotazioni" + +#: templates/forms/event/booking-stats.php:12 +msgid "Available Spaces" +msgstr "Posti disponibili" + +#: templates/forms/event/booking-stats.php:13 +msgid "Confirmed Spaces" +msgstr "Posti confermati" + +#: templates/forms/event/booking-stats.php:14 +msgid "Pending Spaces" +msgstr "Posti in attesa" + +#: templates/forms/event/booking-stats.php:32 +msgid "No responses yet!" +msgstr "Nessun risposta ancora!" + +#: classes/em-event-post-admin.php:246 +#, php-format +msgid "No categories available, create one here first" +msgstr "Nessuna categoria disponibile, creane una qui" + +#: templates/forms/event-editor.php:169 +msgid "No image uploaded for this event yet" +msgstr "Nessuna immagine caricata per questo evento" + +#: classes/em-event-post-admin.php:189 +#: classes/em-event-post-admin.php:362 +msgid "Attributes" +msgstr "Attributi" + +#: templates/forms/event/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Non c'è alcun attributo personalizzato definito in nessuna delle impostazioni dei modelli di Events Manager. Si prega di aggiungerli nella pagina delle impostazioni" + +#: templates/forms/event/attributes.php:50 +msgid "Depreciated Attributes" +msgstr "Attributi obsoleti" + +#: templates/forms/event/attributes.php:83 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings to add attribute placeholders." +msgstr "Per poter utilizzare gli attributi, è necessario definirne alcuni nei tuoi modelli, altrimenti non appariranno mai. Vai a Eventi > Impostazioni per aggiungere segnaposto attributi." + +#: em-install.php:284 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_NAME on #F #j, #Y. He wants to reserve #_BOOKINGSPACES spaces.
                          Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                          Yours faithfully,
                          Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) Sarà presente a #_EVENTNAME il #F #j, #Y. Vuole riservare #_BOOKINGSPACES posti.
                          Ora ci sono #_BOOKEDSPACES posti riservati, #_AVAILABLESPACES sono ancora disponibili.
                          Distinti saluti,
                          EventsManager - http://wp-events-plugin.com" + +#: em-install.php:284 +#: em-install.php:285 +#: em-install.php:286 +#: em-install.php:287 +#: em-install.php:288 +#: em-install.php:289 +#: em-install.php:290 +#: em-install.php:291 +msgid "

                          -------------------------------
                          Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

                          -------------------------------
                          Powered by Events Manager - http://wp-events-plugin.com" + +#: em-install.php:285 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_NAME on #F #j, #Y. He wanted to reserve #_BOOKINGSPACES spaces.
                          Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                          Yours faithfully,
                          Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) Ha cancellato la sua prenotazione a #_EVENTNAME il #F #j, #Y. Voleva prenotare #_BOOKINGSPACES posti.
                          Ora ci sono #_BOOKEDSPACES posti riservati, #_AVAILABLESPACES sono ancora disponibili.
                          Distinti saluti,
                          Events Manager - http://wp-events-plugin.com" + +#: em-install.php:286 +msgid "Dear #_BOOKINGNAME,
                          you have successfully reserved #_BOOKINGSPACES space/spaces for #_NAME.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                          hai riservato #_BOOKINGSPACES posto/i per #_EVENTNAME.
                          Distinti saluti,
                          #_CONTACTNAME" + +#: em-install.php:287 +msgid "Dear #_BOOKINGNAME,
                          You have requested #_BOOKINGSPACES space/spaces for #_NAME.
                          Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                          Hai richiesto #_BOOKINGSPACES posto/i per #_EVENTNAME.
                          La prenotazione è attualmente in attesa di approvazione da parte i nostri amministratori. Una volta approvata, riceverai una conferma automatica.
                          Distinti saluti,
                          #_CONTACTNAME" + +#: em-install.php:288 +msgid "Dear #_BOOKINGNAME,
                          Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been rejected.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                          La prenotazione richiesta per #_BOOKINGSPACES posto/i a #_EVENTNAME il #F #j, #Y è stata respinta.
                          Distinti saluti,
                          #_CONTACTNAME" + +#: em-install.php:289 +msgid "Dear #_BOOKINGNAME,
                          Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been cancelled.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                          La prenotazione richiesto per #_BOOKINGSPACES posto/i a #_EVENTNAME il #F #j, #Y è stata annullata.
                          Distinti saluti,
                          #_CONTACTNAME" + +#: em-install.php:379 +#: em-install.php:387 +#: em-install.php:418 +#, php-format +msgid "No %s" +msgstr "No %s" + +#: em-debug.php:18 +#: em-install.php:406 +msgid "
                        • No events in this location
                        • " +msgstr "
                        • Non ci sono eventi in questo luogo
                        • " + +#: em-install.php:419 +msgid "
                        • No events in this category
                        • " +msgstr "
                        • Non ci sono eventi in questa categoria
                        • " + +#: em-install.php:487 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Prenotazione avvenuta con successo, in attesa di conferma (riceverete anche una e-mail una volta che la prenotazione sia stata confermata)." + +#: em-install.php:488 +msgid "Booking successful." +msgstr "Prenotazione eseguita." + +#: em-install.php:490 +msgid "You must log in or register to make a booking." +msgstr "È necessario accedere o registrati per effettuare una prenotazione." + +#: em-install.php:491 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "Purtroppo, ci sono stati alcuni problemi, nell'invio della mail di conferma a voi e / o la persona referente dell'evento. Si consiglia di contattarla direttamente e far sapere di questo errore." + +#: em-install.php:492 +msgid "Booking could not be created" +msgstr "La prenotazione non può essere creata" + +#: em-install.php:493 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Questa e-mail esiste già nel nostro sistema, fai il login per registrarsi per procedere con la prenotazione." + +#: em-install.php:494 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Un nuovo account utente è stato creato per te. Controlla la posta elettronica per i dati di accesso." + +#: em-install.php:495 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "C'è stato un problema nel creare un account utente, si prega di contattare un amministratore del sito." + +#: em-install.php:496 +msgid "You already have booked a seat at this event." +msgstr "Hai già prenotato un posto a questo evento." + +#: em-install.php:497 +msgid "You must request at least one space to book an event." +msgstr "È necessario richiedere almeno uno posto per prenotare un evento." + +#: em-install.php:504 +#: em-install.php:512 +msgid "Booking Cancelled" +msgstr "Prenotazione annullata" + +#: em-install.php:506 +msgid "Booking Pending" +msgstr "Prenotazione in attesa" + +#: em-install.php:508 +msgid "Booking Rejected" +msgstr "Prenotazione Rifiutato" + +#: em-install.php:510 +msgid "Booking Confirmed" +msgstr "Prenotazione confermata" + +#: em-install.php:515 +msgid "Powered by" +msgstr "Powered by" + +#: em-install.php:516 +msgid "Bookings - #_NAME" +msgstr "Prenotazioni - #_EVENTNAME" + +#: em-debug.php:44 +#, php-format +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Ti trovi in ​​modalità di debug di Events Manager. Per disattivare la modalità debug, vai alla paginaimpostazioni ." + +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "Nessun numero biglietto previsto" + +#: em-actions.php:181 +#, php-format +msgid "%s successfully deleted" +msgstr "%s cancellato con successo" + +#: em-actions.php:358 +#, php-format +msgid "Booking %s" +msgstr "Prenotazione %s" + +#: events-manager.php:295 +#: events-manager.php:303 +#: events-manager.php:309 +#, php-format +msgid "You do not have permission to publish %s" +msgstr "Non hai il permesso di pubblicare %s" + +#: events-manager.php:299 +#: events-manager.php:307 +#: events-manager.php:313 +#: events-manager.php:319 +#, php-format +msgid "You do not have permission to edit %s" +msgstr "Non hai il permesso di modificare %s" + +#: events-manager.php:296 +#: events-manager.php:304 +#: events-manager.php:310 +#, php-format +msgid "You do not have permission to delete others %s" +msgstr "Non disponi dell'autorizzazione per eliminare gli altri %s" + +#: events-manager.php:298 +#: events-manager.php:306 +#: events-manager.php:312 +#, php-format +msgid "You do not have permission to edit others %s" +msgstr "Tu non hai i permessi per modificare gli altri %s" + +#: events-manager.php:292 +#, php-format +msgid "You do not have permission to manage others %s" +msgstr "Non si dispone dell'autorizzazione per gestire gli altri %s" + +#: admin/em-options.php:835 +#: events-manager.php:292 +#: events-manager.php:293 +msgid "bookings" +msgstr "prenotazioni" + +#: events-manager.php:297 +#: events-manager.php:305 +#: events-manager.php:311 +#: events-manager.php:318 +#, php-format +msgid "You do not have permission to delete %s" +msgstr "Non avete il permesso di cancellare %s" + +#: events-manager.php:293 +#, php-format +msgid "You do not have permission to manage %s" +msgstr "Non si dispone dell'autorizzazione per gestire %s" + +#: admin/em-options.php:402 +#: admin/em-options.php:703 +#: em-posts.php:66 +#: em-posts.php:69 +msgid "Event Categories" +msgstr "Categorie eventi" + +#: admin/em-admin.php:40 +msgid "Events Manager Settings" +msgstr "Impostazioni di Events Manager" + +#: admin/em-admin.php:40 +#: admin/em-admin.php:199 +#: admin/em-admin.php:207 +msgid "Settings" +msgstr "Impostazioni" + +#: admin/em-admin.php:41 +msgid "Help" +msgstr "Aiuto" + +#: admin/em-bookings.php:289 +msgid "Tax" +msgstr "Tassa" + +# @ dbem +#: admin/em-bookings.php:294 +msgid "Total (inc. tax)" +msgstr "Toitale (tasse incluse)" + +#: templates/forms/event/bookings.php:24 +msgid "You can have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Puoi inserire biglietti singoli o multipli, in cui alcuni biglietti diventano disponibili a determinate condizioni, ad esempio prenotazioni anticipate, sconti di gruppo, numero massimo di prenotazioni per biglietto, ecc..." + +# @ dbem +#: templates/forms/event/bookings.php:24 +msgid "Basic HTML is allowed in ticket labels and descriptions." +msgstr "HTML di base permesso nelle descrizioni e nelle etichette dei biglietti." + +# @ dbem +#: admin/em-options.php:1117 +msgid "Ticket Price (Descending)" +msgstr "Prezzo dei biglietti (ordine discendente)" + +# @ dbem +#: admin/em-options.php:1118 +msgid "Ticket Price (Ascending)" +msgstr "Prezzo dei biglietti (ordine crescente)" + +#: admin/em-options.php:1119 +msgid "Ticket Name (Ascending)" +msgstr "Nome biglietto (Ascendente)" + +#: admin/em-options.php:1120 +msgid "Ticket Name (Descending)" +msgstr "Nome biglietto (discendente)" + +#: admin/em-options.php:1057 +msgid "Can users cancel their booking?" +msgstr "I partecipanti possono annullare la loro prenotazione?" + +# @ dbem +#: admin/em-options.php:1057 +msgid "If enabled, users can cancel their bookings themselves from their bookings page." +msgstr "Se abilitato, gli utenti possono cancellare da soli le proprie prenotazioni dalla pagina delle prenotazioni." + +# @ dbem +#: admin/em-options.php:1073 +msgid "Tax Rate" +msgstr "IVA in percentuale " + +# @ dbem +#: admin/em-options.php:1073 +msgid "Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price)." +msgstr "Aggiungi l'IVA ai prezzi dei tuoi biglietti (inserendo 21 sarà aggiunto il 21% al prezzo del biglietto)." + +# @ dbem +#: admin/em-options.php:1074 +msgid "Add tax to ticket price?" +msgstr "Aggiungi l'IVA al prezzo del biglietto?" + +# @ dbem +#: admin/em-options.php:1074 +msgid "When displaying ticket prices and booking totals, include the tax automatically?" +msgstr "Quando si visualizzano prezzi dei biglietti e totale della prenotazione, aggiungere l'IVA automaticamente?" + +#: admin/em-options.php:1122 +msgid "Order Tickets By" +msgstr "Ordina biglietti per" + +# @ dbem +#: admin/em-options.php:1122 +msgid "Choose which order your tickets appear." +msgstr "Scegli l'ordine in cui appaiono i tuoi biglietti." + +#: admin/em-options.php:1130 +msgid "No-User Booking Mode" +msgstr "Modalità prenotazione senza utente" + +# @ dbem +#: admin/em-options.php:1134 +msgid "By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them." +msgstr "DI default, quando un utente fa una prenotazione, questa è associata a un Account utente. Se l'utente non è registrato o non ha fatto il login e le prenotazioni fatte da visitatori di passaggio sono permesse, viene creato un Account utente apposta per lui." + +# @ dbem +#: admin/em-options.php:1136 +msgid "Warning : Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information." +msgstr "Attenzione: Diverse funzionalità legate agli utenti con un account non saranno più disponibili, come, per esempio, far vedere agli utenti le proprie prenotazioni. Se, una volta abilitato e selezionato un utente qui sotto, si modificano queste scelte non saranno visualizzate correttamente le prenotazioni precedenti fatte dai non-utenti." + +#: admin/em-options.php:1139 +msgid "Enable No-User Booking Mode?" +msgstr "Abilitare la modalità prenotazione senza utente?" + +#: admin/em-options.php:1139 +msgid "This disables user registrations for bookings." +msgstr "Questa disabilita la registrazione di nuovi utente sul tuo blog." + +#: admin/em-options.php:1145 +msgid "Assign bookings to" +msgstr "Assegna le prenotazioni a" + +#: admin/em-options.php:1214 +msgid "Event Email Templates" +msgstr "Modelli email sugli eventi " + +#: admin/em-options.php:1224 +#: em-install.php:333 +msgid "Event Approved" +msgstr "Evento Approvato" + +# @ dbem +#: admin/em-options.php:1225 +msgid "An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the publish_events capability." +msgstr "Verrà spedita una email al referente dell'evento quando questo sarà approvato. Gli utenti che necessitano l'approvazione degli eventi non hanno l'opzione publish_events" + +#: admin/em-options.php:1221 +#: admin/em-options.php:1227 +msgid "Event approved subject" +msgstr "Oggetto messaggio di approvazione al referente evento" + +#: admin/em-options.php:1222 +#: admin/em-options.php:1228 +msgid "Event approved email" +msgstr "Testo del messaggio di approvazione al referente evento" + +#: classes/em-booking.php:376 +#: classes/em-booking.php:384 +msgid "Guest User" +msgstr "Utente Ospite" + +# @ dbem +#: classes/em-booking.php:380 +msgid "Not Supplied" +msgstr "Non fornita" + +# @ dbem +#: classes/em-ticket.php:157 +msgid "Please enter a valid ticket price e.g. 10.50 (no currency signs)" +msgstr "Si prega di inserire un valore corretto del prezzo del biglietto. Ad esempio: 10.50 (senza simboli di valuta)" + +# @ dbem +#: em-install.php:290 +msgid "Dear #_CONTACTNAME,
                          Your event #_NAME on #F #j, #Y has been approved.
                          You can view your event here: #_EVENTURL" +msgstr "Caro #_CONTACTNAME,
                          il tuo evento #_EVENTNAME del #F #j, #Y è stato approvato.
                          Puoi vedere il tuo evento qui: #_EVENTURL" + +# @ dbem +#: templates/placeholders/bookingform.php:17 +msgid "This event is fully booked." +msgstr "Questo evento è al completo." + +#: admin/em-admin.php:91 +msgid "Update Blogs" +msgstr "Aggiorna i blog" + +#: admin/em-admin.php:139 +#, php-format +msgid "Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Uh Oh! Per qualche ragione Wordpress non ha potuto creare una pagina eventi (o l'hai appena eliminata). Non c'è da preoccuparsi, tutto ciò che devi fare è creare una pagina vuota, darle il nome che vuoi, e selezionarla come tua pagina eventi nella tua pagina delle impostazioni . Ci scusiamo per il passo in più! Se sapete cosa state facendo, potresti aver fatto ciò di proposito, se è così ignora questo messaggio" + +# @ dbem +#: admin/em-admin.php:148 +msgid "There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update." +msgstr "C'è una nuova versione di Events Manager Pro che è necessaria per la versione corrente di Events Manager. Per favore visita il sito web del plugin e scarica l'ultima versione." + +# @ dbem +#: admin/em-admin.php:159 +#, php-format +msgid "MultiSite options have moved here. Dismiss message" +msgstr "Le opzioni multisito sono state spostate qui. Chiudi messaggio" + +# @ dbem +#: admin/em-admin.php:171 +#, php-format +msgid "Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" +msgstr "Mentre Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" + +# @ dbem +#: admin/em-admin.php:213 +#: admin/em-options.php:1463 +msgid "Uninstall" +msgstr "Disinstalla" + +#: admin/em-ms-options.php:6 +msgid "Update Network" +msgstr "Aggiorna rete" + +# @ default +#: admin/em-ms-options.php:24 +msgid "To update your network blogs with the latest Events Manager automatically, click the update button below." +msgstr "Per aggiornare la tua rete di blog con l'ultima versione di Events MAnager automaticamente, clicca il tasto aggiorna qui sotto." + +#: admin/em-ms-options.php:27 +msgid "Update" +msgstr "Aggiorna" + +#: admin/em-ms-options.php:136 +#: admin/em-options.php:267 +#: admin/em-options.php:1051 +msgid "General" +msgstr "Generale" + +# @ default +#: admin/em-ms-options.php:157 +#, php-format +msgid "%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network." +msgstr "%s appartenenti ad altri sottositi avranno un extra slug anteposto in modo il tuo sito principale possa differenziare tra il proprio %s a quelli appartenenti ad altri siti nella tua rete." + +#: admin/em-ms-options.php:158 +#, php-format +msgid "When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site." +msgstr "Quando si visualizzano %s globali sul sito principale si ha la possibilità di far visualizzare agli utenti i dettagli %s sul sito principale o di essere ridirezionati al sotto-sito." + +#: admin/em-ms-options.php:159 +#, php-format +msgid "Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Visualizza %s di tutti i siti della rete di default. È ancora possibile limitare %s dal blog utilizzando i codici brevi e tag modello accoppiati con l'attributo blog. Richiede che le tabelle globali siano attive." + +# @ default +#: admin/em-ms-options.php:160 +#, php-format +msgid "You must have assigned a %s page in your main blog settings for this to work." +msgstr "Devi assegnare una pagina %s nelle tuer Impostazioni principali del blog affinché questo funzioni." + +#: admin/em-ms-options.php:162 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#, php-format +msgid "%s Options" +msgstr "Opzioni %s" + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:173 +#, php-format +msgid "Link sub-site %s directly to sub-site?" +msgstr "Collegare %s dei sotto-sito direttamente al sotto-sito?" + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, php-format +msgid "Global %s slug" +msgstr "Slug %s globale" + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +msgid "Example:" +msgstr "Esempio:" + +#: admin/em-ms-options.php:167 +msgid "Locations on main blog?" +msgstr "Luoghi sul blog principale?" + +# @ dbem +#: admin/em-ms-options.php:167 +msgid "If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog." +msgstr "Se preferisci che tutti i tuoi luoghi appartengano al tuo blog principale, gli utente dei sottositi saranno comunque abilitati a creare nuovi luoghi, ma i luoghi attuali sono creati e risiedono sul blog principale." + +#: admin/em-ms-options.php:172 +#, php-format +msgid "Display global %s on main blog?" +msgstr "Visualizzare %s globali sul blog principale?" + +# @ dbem +#: admin/em-options.php:112 +msgid "Settings have been reset back to default. Your events, locations and categories have not been modified." +msgstr "Le impostazioni sono state resettate al loro valore predefinito. I tuoi eventi, luoghi e categorie non sono state modificate." + +#: admin/em-options.php:125 +#: admin/em-options.php:129 +msgid "Reset Events Manager" +msgstr "Ripristina Events Manager" + +#: admin/em-options.php:126 +msgid "Are you sure you want to reset Events Manager?" +msgstr "Sei sicuro di voler ripristinare Events Manager?" + +# @ dbem +#: admin/em-options.php:127 +msgid "All your settings, including email templates and template formats for Events Manager will be deleted." +msgstr "Tutte le tue impostazioni, inclusi modelli email e le formattazioni dei modelli di Events Manager saranno eliminati." + +#: admin/em-options.php:141 +msgid "Uninstall Events Manager" +msgstr "Disinstalla Events Manager" + +#: admin/em-options.php:142 +msgid "Are you sure you want to uninstall Events Manager?" +msgstr "Sei sicuro di voler disinstallare Events Manager?" + +# @ dbem +#: admin/em-options.php:143 +msgid "All your settings and events will be permanently deleted. This cannot be undone." +msgstr "Tutte le impostazioni e gli eventi saranno permanentemente eliminati. Questa azione è irreversibile." + +# @ dbem +#: admin/em-options.php:144 +#, php-format +msgid "If you just want to deactivate the plugin, go to your plugins page." +msgstr "Se vuoi solo disattivare il plugin, vai alla pagina dei plugin." + +# @ dbem +#: admin/em-options.php:146 +msgid "Uninstall and Deactivate" +msgstr "Disinstalla e disattiva" + +#: admin/em-options.php:268 +#: admin/em-options.php:418 +#: admin/em-options.php:581 +msgid "Pages" +msgstr "Pagine" + +# @ dbem +#: admin/em-options.php:269 +msgid "Formats/Layouts" +msgstr "Formattazione/Layout" + +#: admin/em-options.php:271 +msgid "Booking Options" +msgstr "Opzioni Prenotazione" + +#: admin/em-options.php:273 +msgid "Emails" +msgstr "E-mail" + +#: admin/em-options.php:287 +msgid "General Options" +msgstr "Opzioni generali" + +# @ dbem +#: admin/em-options.php:290 +msgid "Disable thumbnails?" +msgstr "Disabilitare miniature?" + +# @ dbem +#: admin/em-options.php:290 +msgid "Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here)." +msgstr "Seleziona Sì per disabilitare Events Manager dall'abilitare le miniature (alcuni temi potrebbero aver già questa opzione attiva, ma che non può essere disattivata qui)" + +#: admin/em-options.php:293 +#: admin/em-options.php:334 +#: admin/em-options.php:346 +#, php-format +msgid "%s Settings" +msgstr "Impostazioni %s" + +#: admin/em-options.php:297 +msgid "Enable recurrence?" +msgstr "Abilitare ricorrenze?" + +#: admin/em-options.php:299 +msgid "Enable tags?" +msgstr "Abilitare tag?" + +#: admin/em-options.php:299 +msgid "Select yes to enable the tag features" +msgstr "Selezionare Sì per attivare le funzionalità dei tag" + +#: admin/em-options.php:301 +msgid "Enable categories?" +msgstr "Abilitare le categorie?" + +# @ dbem +#: admin/em-options.php:310 +msgid "If an event does not have a category assigned when editing, this one will be assigned automatically." +msgstr "Se un evento non ha una categoria assegnata durante la modifica, questa sarò assegnata automaticamente." + +#: admin/em-options.php:313 +msgid "Enable event attributes?" +msgstr "Abilitare gli attributi evento?" + +# @ dbem +#: admin/em-options.php:314 +msgid "Enable event custom fields?" +msgstr "Abilitare campi personalizzati per gli eventi?" + +# @ dbem +#: admin/em-options.php:314 +msgid "Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area." +msgstr "I campi personalizzati sono come gli attributi, tranne che non restringerli a valori prescritti, gli utenti possono aggiungere ogni tipo di nome/valore del campo personalizzato. Disponibile solo nell'area di amministrazione di WordPress." + +#: admin/em-options.php:338 +msgid "Enable locations?" +msgstr "Abilitare i luoghi?" + +# @ dbem +#: admin/em-options.php:338 +msgid "If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats." +msgstr "Se disabiliti i Luoghi, tieni a mente che dovresti rimuovere la pagina Luoghi, codici brevi e relativi segnaposto delle tue formattazioni." + +#: admin/em-options.php:340 +msgid "Require locations for events?" +msgstr "Richiedere un luogo per gli eventi?" + +# @ dbem +#: admin/em-options.php:340 +msgid "Setting this to no will allow you to submit events without locations. You can use the {no_location}...{/no_location} or {has_location}..{/has_location} conditional placeholder to selectively display location information." +msgstr "Selezionando No ti permetterà di aggiungere eventi senza luoghi. puoi usare il segnaposto condizionato {no_location}...{/no_location} o {has_location}..{/has_location} per visualizzare in modo selezionato informazioni sui luoghi. " + +# @ dbem +#: admin/em-options.php:346 +#: admin/em-options.php:825 +#: admin/em-options.php:1393 +msgid "Other" +msgstr "Altro" + +# @ dbem +#: admin/em-options.php:387 +msgid "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter." +msgstr "Molti temi visualizzano informazioni extra nelle pagine dei post come 'postato da' o 'data del post', che potrebbero non essere desiderate. Di solito le pagine modello contengono meno confusione." + +# @ dbem +#: admin/em-options.php:388 +#, php-format +msgid "Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named single-%s.php as shown on the wordpress codex, and leave this set to Posts." +msgstr " Attenzione che alcuni temi non funzionano con questa opzione, ma se è così (o vuoi fare tu delle modifiche), puoi creare un file nominato single-%s.php come mostrato nel wordpress codex, e selezionare Articoli." + +# @ default +#: admin/em-options.php:389 +#, php-format +msgid "By using formats, you can control how your %s are displayed from within the Events Manager Formats tab above without having to edit your theme files." +msgstr "Usando le formattazioni puoi controllare come sono visualizzati i tuoi %s dal tab Formattazioni/Layout di Events Manager senza dover modificare i file del tema." + +# @ dbem +#: admin/em-options.php:392 +msgid "Permalink Slugs" +msgstr "Permalink Slugs" + +# @ dbem +#: admin/em-options.php:394 +msgid "You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings." +msgstr "Qui puoi cambiare la struttura permalink di eventi, luoghi, categorie e tag. Bada che potresti settare dei re-indirizzamenti se cambi la tua struttura permalink per mantenere la tua reputazione SEO." + +# @ dbem +#: admin/em-options.php:397 +#: admin/em-options.php:399 +#: admin/em-options.php:402 +#: admin/em-options.php:405 +#, php-format +msgid "e.g. %s - you can use / seperators too" +msgstr "ad esempio: %s - puoi usare anche separatori /" + +#: admin/em-options.php:405 +#: admin/em-options.php:793 +#: em-posts.php:29 +#: em-posts.php:32 +msgid "Event Tags" +msgstr "Tag dell'evento" + +#: admin/em-options.php:414 +#: admin/em-options.php:577 +#: admin/em-options.php:825 +#, php-format +msgid "%s Pages" +msgstr "Pagine %s" + +#: admin/em-options.php:418 +#: admin/em-options.php:581 +#, php-format +msgid "Display %s as" +msgstr "Visualizza %s come" + +# @ default +#: admin/em-options.php:418 +#: admin/em-options.php:581 +msgid "Posts" +msgstr "Post" + +# @ dbem +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:582 +#: admin/em-options.php:649 +#: admin/em-options.php:721 +#: admin/em-options.php:797 +msgid "Override with Formats?" +msgstr "Utilizzare le formattazioni?" + +# @ dbem +#: admin/em-options.php:427 +#: admin/em-options.php:590 +#, php-format +msgid "%s List/Archives" +msgstr " Liste/Archivi %s" + +#: admin/em-options.php:435 +#: admin/em-options.php:594 +#: admin/em-options.php:707 +#, php-format +msgid "[No %s Page]" +msgstr "[Nessuna Pagina %s]" + +# @ dbem +#: admin/em-options.php:440 +msgid "This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags." +msgstr "Quest'opzione ti permette di selezionare quale pagina usare come pagina degli eventi. Se non selezioni una pagina degli eventi, per visualizzare liste di eventi puoi abilitare gli archivi eventi o usare appropriati codici brevi e/o tag modello." + +#: admin/em-options.php:447 +msgid "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Alcuni temi wordpress non seguono le pratiche migliori per la generazione dei menu di navigazione, e così la funzione di riscrittura automatica del titolo può causare problemi. Se i tuoi menu non funzionano correttamente nelle pagine evento, seleziona 'Sì' e indica qui sotto un idonea formattazione HTML del titolo." + +#: admin/em-options.php:454 +#: admin/em-options.php:604 +msgid "Enable Archives?" +msgstr "Abilitare gli archivi?" + +# @ dbem +#: admin/em-options.php:454 +#: admin/em-options.php:604 +msgid "Allow WordPress post-style archives." +msgstr "Abilita archivi in stile articolo di WordPress." + +#: admin/em-options.php:459 +msgid "Default event archive ordering" +msgstr "Ordinamento predefinito dell'archivio di eventi" + +#: admin/em-options.php:464 +msgid "Order by start date, start time" +msgstr "Ordina per data di inizio e ora di inizio" + +#: admin/em-options.php:465 +msgid "Order by name" +msgstr "Ordina per nome" + +#: admin/em-options.php:496 +#: admin/em-options.php:645 +#: admin/em-options.php:717 +msgid "General settings" +msgstr "Opzioni generali" + +# @ dbem +#: admin/em-options.php:502 +#: admin/em-options.php:650 +msgid "Include in WordPress Searches?" +msgstr "Includere nelle ricerche di WordPress?" + +# @ dbem +#: admin/em-options.php:502 +#: admin/em-options.php:650 +#, php-format +msgid "Allow %s to appear in the built-in search results." +msgstr "Abilita %s ad apparire nei risultati delle ricerche." + +#: admin/em-options.php:506 +#: admin/em-options.php:654 +#: admin/em-options.php:744 +#, php-format +msgid "Default %s list options" +msgstr "Formattazione predefinita di un elenco %s" + +# @ dbem +#: admin/em-options.php:507 +#: admin/em-options.php:655 +#: admin/em-options.php:745 +msgid "These can be overriden when using shortcode or template tags." +msgstr "Questi possono essere calpestati quando si usano codici brevi o tag modello." + +#: admin/em-options.php:595 +#: admin/em-options.php:708 +#: admin/em-options.php:832 +#: admin/em-options.php:833 +#: admin/em-options.php:834 +#: admin/em-options.php:835 +#, php-format +msgid "%s page" +msgstr "Pagina %s" + +# @ dbem +#: admin/em-options.php:595 +#, php-format +msgid "This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags." +msgstr "Quest'opzione ti permette di selezionare quale pagina usare come pagina %s. Se non selezioni una pagina %s, per visualizzare liste puoi abilitare gli archivi o usare appropriati codici brevi e/o tag modello." + +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, php-format +msgid "Show %s page in lists?" +msgstr "Mostrare la pagina %s nelle liste?" + +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, php-format +msgid "Check this option if you want the %s page to appear together with other pages in pages lists." +msgstr "Selezionare questa opzione se si desidera che la pagina %s appaia insieme ad altre pagine all'interno di elenchi di pagine." + +#: admin/em-options.php:609 +#: admin/em-options.php:724 +#: admin/em-options.php:800 +msgid "Default archive ordering" +msgstr "Ordinamento predefinito degli archivi" + +#: admin/em-options.php:614 +#: admin/em-options.php:615 +#: admin/em-options.php:616 +#: admin/em-options.php:664 +#: admin/em-options.php:665 +#: admin/em-options.php:666 +#: admin/em-options.php:754 +#: admin/em-options.php:755 +#: admin/em-options.php:756 +#, php-format +msgid "Order by %s" +msgstr "Ordina per %s" + +#: admin/em-options.php:659 +#: admin/em-options.php:749 +msgid "Default list ordering" +msgstr "Ordinamento predefinito della lista" + +#: admin/em-options.php:693 +#: admin/em-options.php:783 +msgid "List Limits" +msgstr "Limite per la lista " + +#: admin/em-options.php:693 +#: admin/em-options.php:783 +#, php-format +msgid "This will control how many %s are shown on one list by default." +msgstr "In questo modo controllare il numero predefinito di %s che sono mostrati in una sola lista." + +#: admin/em-options.php:708 +#, php-format +msgid "This option allows you to select which page to use as the %s page." +msgstr "Questa opzione permette di selezionare quale pagina utilizzare come una pagina %s." + +# @ default +#: admin/em-options.php:721 +msgid "Setting this to yes will make categories display as a page rather than an archive." +msgstr "Selezionando Sì le categorie appariranno come pagine invece che come un archivio." + +# @ dbem +#: admin/em-options.php:797 +msgid "tags" +msgstr "tags" + +# @ default +#: admin/em-options.php:827 +msgid "These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated." +msgstr "Queste pagine ti permettono un'interfaccia perla gestione eventi all'esterno dell'area di amministrazione o in qualsiasi pagina del tuo sito. Tieni a mente che ciò è scavalcato da BuddyPress se attivato." + +# @ dbem +#: admin/em-options.php:831 +#: classes/em-event-posts-admin.php:117 +#: classes/em-event-posts-admin.php:233 +msgid "None" +msgstr "Nessuno" + +#: admin/em-options.php:832 +msgid "Edit events" +msgstr "Modifica eventi" + +#: admin/em-options.php:833 +msgid "Edit locations" +msgstr "Modifica luoghi" + +#: admin/em-options.php:834 +msgid "Manage bookings" +msgstr "Gestisci le prenotazioni" + +#: admin/em-options.php:835 +msgid "My bookings" +msgstr "Le mie prenotazioni" + +# @ dbem +#: admin/em-options.php:835 +msgid "Users can view their bookings for other events on this page." +msgstr "Gli utenti possono vedere le proprie prenotazioni ad altri eventi in questa pagina." + +# @ dbem +#: admin/em-options.php:869 +msgid "Search Form Options" +msgstr "Opzioni modulo di ricerca" + +#: admin/em-options.php:873 +msgid "Show text search?" +msgstr "Mostra ricerca testuale?" + +# @ dbem +#: admin/em-options.php:874 +msgid "Text search label" +msgstr "Etichetta ricerca testuale" + +# @ dbem +#: admin/em-options.php:874 +msgid "Appears within the input box." +msgstr "Appare nel campo di testo per la ricerca testuale" + +# @ dbem +#: admin/em-options.php:875 +msgid "Show date range?" +msgstr "Mostrare l'intervallo di date?" + +#: admin/em-options.php:876 +msgid "Show categories?" +msgstr "Mostrare le categorie?" + +#: admin/em-options.php:877 +msgid "Categories label" +msgstr "Etichetta tutte le categorie" + +# @ dbem +#: admin/em-options.php:877 +#: admin/em-options.php:879 +#: admin/em-options.php:881 +#: admin/em-options.php:883 +#: admin/em-options.php:885 +msgid "Appears as the first default search option." +msgstr "Appare come scelta predefinita di ricerca." + +#: admin/em-options.php:878 +msgid "Show countries?" +msgstr "Mostrare nazioni?" + +#: admin/em-options.php:879 +msgid "All countries text" +msgstr "Testo tutte le Nazioni" + +#: admin/em-options.php:880 +msgid "Show regions?" +msgstr "Mostrare le regioni?" + +#: admin/em-options.php:881 +msgid "All regions text" +msgstr "Stringa Tutte le Regioni" + +# @ dbem +#: admin/em-options.php:882 +msgid "Show states?" +msgstr "Mostrare le nazioni?" + +#: admin/em-options.php:883 +msgid "All states text" +msgstr "Stringa tutte le nazioni" + +# @ dbem +#: admin/em-options.php:884 +msgid "Show towns/cities?" +msgstr "Mostrare le Città?" + +# @ dbem +#: admin/em-options.php:885 +msgid "All towns/cities text" +msgstr "Stringa per tutte le città" + +#: admin/em-options.php:893 +msgid "Date/Time formats" +msgstr "Formattazione data/ora" + +# @ dbem +#: admin/em-options.php:895 +#, php-format +msgid "Date and Time formats follow the WordPress time formatting conventions" +msgstr "La formattazione di date e orari segue la convenzione di WordPress" + +#: admin/em-options.php:898 +msgid "Date Format" +msgstr "Formattazione data" + +#: admin/em-options.php:898 +#: admin/em-options.php:900 +#, php-format +msgid "For use with the %s placeholder" +msgstr "Per l'uso di segnaposto %s" + +# @ dbem +#: admin/em-options.php:899 +msgid "Date Seperator" +msgstr "Separatore tra date" + +# @ dbem +#: admin/em-options.php:899 +#: admin/em-options.php:901 +#, php-format +msgid "For when start/end %s are present, this will seperate the two (include spaces here if necessary)." +msgstr "Quando %s di inizio e fine sono presenti, questo separa i due valori (includere gli spazi se necessario)." + +#: admin/em-options.php:899 +msgid "dates" +msgstr "date" + +#: admin/em-options.php:900 +msgid "Time Format" +msgstr "Formattazione ora" + +# @ dbem +#: admin/em-options.php:901 +msgid "Time Seperator" +msgstr "Separatore tra orari" + +# @ dbem +#: admin/em-options.php:901 +msgid "times" +msgstr "orari" + +#: admin/em-options.php:918 +msgid "Full calendar events/day limit" +msgstr "Limiti evento/giorni del calendario completo" + +# @ dbem +#: admin/em-options.php:918 +msgid "To reduce the clutter on your calendar, you can add a limit to events displayed in one day on the calendar." +msgstr "Per ridurre l'ingombro sul calendario, è possibile aggiungere un limite di eventi visualizzati in un giorno sul calendario." + +#: admin/em-options.php:989 +msgid "Tags format" +msgstr "Formattazione tag" + +#: admin/em-options.php:992 +msgid "Tag" +msgstr "Tag" + +# @ dbem +#: admin/em-options.php:994 +#: admin/em-options.php:995 +msgid "tag" +msgstr "tag" + +#: admin/em-options.php:994 +msgid "The format of a single tag page title." +msgstr "Indicare la formattazione del titolo della pagina del singolo tag" + +#: admin/em-options.php:995 +msgid "The format of a single tag page." +msgstr "Indicare la formattazione della pagina del singolo tag" + +#: admin/em-options.php:999 +msgid "The format of the events the list inserted in the tag page through the #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS element." +msgstr "La formattazione della lista degli eventi inserita nella pagina dei tag attraverso i segnaposto #_TAGNEXTEVENTS , #_TAGPASTEVENTS e #_TAGALLEVENTS elemento." + +#: admin/em-options.php:1000 +msgid "The message to be displayed in the list generated by #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS when no events are available." +msgstr "Il messaggio da visualizzare nella lista generata da #_TAGNEXTEVENTS , #_TAGPASTEVENTS e #_TAGALLEVENTS quando non esistono tag disponibili." + +#: admin/em-options.php:1067 +msgid "Pricing" +msgstr "Prezzo" + +#: admin/em-options.php:1083 +msgid "Booking Form" +msgstr "Modulo Prenotazione" + +#: admin/em-options.php:1108 +msgid "Ticket" +msgstr "Biglietti" + +# @ dbem +#: admin/em-options.php:1135 +msgid "The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user." +msgstr "Le opzioni qui sotto permettono di disabilitare gli account utente e assegnare tutte le prenotazioni a un utente genitore, continuando però a vedere le informazioni personali delle prenotazioni fornite per ogni prenotazione. Quando questa modalità è attiva, le informazioni extra riguardanti le personi sono memorizzate accanto nelle righe delle prenotazioni invece che nelle schede utenti di wordpress." + +# @ dbem +#: admin/em-options.php:1145 +msgid "Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself." +msgstr "Scegli un utente genitore al quale assegnare le prenotazioni. Le persone che fanno prenotazioni, saranno all'oscuro di ciò e non avranno mai accesso ai dettagli di tale utente." + +#: admin/em-options.php:1169 +msgid "Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event." +msgstr "Selezionare questa opzione se si desidera impedire a WordPress di inviare la mail di avvenuta registrazione quando un utente anonimo prenota un evento." + +#: admin/em-options.php:1217 +msgid "Event Submitted" +msgstr "Evento inviato." + +#: admin/em-options.php:1218 +msgid "An email will be sent to the an administrator of your choice when an event is submitted and pending approval." +msgstr "Una email verrà inviata all'amministratore di tua scelta quando un evento viene inserito ed è in attesa di approvazione." + +# @ dbem +#: admin/em-options.php:1220 +msgid "Administrator Email" +msgstr "Email dell'amministratore" + +# @ dbem +#: admin/em-options.php:1220 +msgid "If left blank, no email will be sent. Seperate emails with commas for more than one email." +msgstr "Se lasciato vuoto, nessuna email verrà inviata. Separa email con delle virgole se ci sono più di una e-mail." + +#: admin/em-options.php:1272 +msgid "Event Submission Forms" +msgstr "Modulo inserimento eventi " + +#: admin/em-options.php:1276 +#, php-format +msgid "You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below." +msgstr "È possibile consentire agli utenti di pubblicare gli eventi sul tuo blog utilizzando il codice breve %s, e consentendo invii anonimi di seguito." + +# @ dbem +#: admin/em-options.php:1279 +msgid "Use Visual Editor?" +msgstr "Usa editor visuale?" + +# @ dbem +#: admin/em-options.php:1279 +msgid "Users can now use the WordPress editor for easy HTML entry in the submission form." +msgstr "Gli utenti possono ora utilizzare l'editor di WordPress per un facile inserimento di HTML nel modulo di presentazione." + +# @ dbem +#: admin/em-options.php:1280 +msgid "Show form again?" +msgstr "Mostra ancora il modulo?" + +# @ dbem +#: admin/em-options.php:1280 +msgid "When a user submits their event, you can display a new event form again." +msgstr "Quando un utente invia proprio evento, è possibile visualizzare un modulo per nuovo evento ." + +# @ dbem +#: admin/em-options.php:1281 +msgid "Customize the message your user sees when they submitted their event." +msgstr "Personalizza il messaggio che i tuoi utenti vedono quando sottomettono un evento." + +#: admin/em-options.php:1284 +msgid "Anonymous event submissions" +msgstr "Presentazione di eventi in forma anonima" + +#: admin/em-options.php:1288 +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting." +msgstr "Gli eventi richiedono un utente di riferimento. Al fine di consentire gli eventi da sottoporre in forma anonima è necessario assegnare tale evento ad un utente specifico. Si consiglia di creare un abbonato \"anonimo\" con una password molto buona e usare quella. Gli ospiti avranno gli stessi permessi sugli eventi di questo utente." + +#: admin/em-options.php:1305 +msgid "Image Sizes" +msgstr "Dimensioni immagini" + +# @ dbem +#: admin/em-options.php:1331 +msgid "Send HTML Emails?" +msgstr "Mandare email in HTML?" + +# @ dbem +#: admin/em-options.php:1331 +msgid "If set to yes, your emails will be sent in HTML format, otherwise plaintext." +msgstr "Se settato su Sì, le tue email saranno spedite in formato HTML, altrimenti in semplice testo." + +#: admin/em-options.php:1364 +#: admin/em-options.php:1374 +#: admin/em-options.php:1382 +#: admin/em-options.php:1393 +#, php-format +msgid "%s Capabilities" +msgstr "Permessi %s" + +#: admin/em-options.php:1366 +#: admin/em-options.php:1376 +#: admin/em-options.php:1384 +#, php-format +msgid "Users can publish %s and skip any admin approval" +msgstr "Gli utenti possono pubblicare %s e saltare ogni approvazione degli amministratori." + +#: admin/em-options.php:1367 +#: admin/em-options.php:1377 +#: admin/em-options.php:1385 +#, php-format +msgid "User can delete other users %s" +msgstr "L'utente può cancellare %s di altri utenti." + +#: admin/em-options.php:1368 +#: admin/em-options.php:1378 +#: admin/em-options.php:1386 +#, php-format +msgid "User can edit other users %s" +msgstr "L'utente può modificare %s di altri utenti." + +#: admin/em-options.php:1369 +#: admin/em-options.php:1379 +#: admin/em-options.php:1387 +#, php-format +msgid "User can delete their own %s" +msgstr "L'utente può cancellare i propri %s." + +#: admin/em-options.php:1370 +#: admin/em-options.php:1380 +#: admin/em-options.php:1388 +#, php-format +msgid "User can create and edit %s" +msgstr "L'utente può creare e modificare i propri %s." + +# @ dbem +#: admin/em-options.php:1371 +#: admin/em-options.php:1389 +#, php-format +msgid "User can view private %s" +msgstr "L'utente può vedere % s privati" + +#: admin/em-options.php:1374 +#: em-posts.php:165 +msgid "Recurring Event" +msgstr "Evento Ricorrente" + +#: admin/em-options.php:1376 +#: admin/em-options.php:1377 +#: admin/em-options.php:1378 +#: admin/em-options.php:1379 +#: admin/em-options.php:1380 +#: events-manager.php:303 +#: events-manager.php:304 +#: events-manager.php:305 +#: events-manager.php:306 +#: events-manager.php:307 +msgid "recurring events" +msgstr "eventi ricorrenti" + +#: admin/em-options.php:1390 +msgid "User can use other user locations for their events." +msgstr "L'utente può usare luoghi di altri utenti per i propri eventi." + +#: admin/em-options.php:1395 +#, php-format +msgid "User can delete %s categories and tags." +msgstr "L'utente può cancellare categorie e tag %s." + +#: admin/em-options.php:1396 +#, php-format +msgid "User can edit %s categories and tags." +msgstr "L'utente può modificare categorie e tag %s." + +#: admin/em-options.php:1400 +msgid "User can upload images along with their events and locations." +msgstr "L'utente può caricare immagini per i propri eventi e i luoghi." + +# @ dbem +#: admin/em-options.php:1460 +msgid "Uninstall/Reset" +msgstr "Disinstallazione/Ripristino" + +# @ dbem +#: admin/em-options.php:1462 +msgid "Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data." +msgstr "Utilizzare i pulsanti di seguito per disinstallare Events Manager completamente dal vostro sistema o ripristinare Events Manager alle impostazioni originali e mantenere i vostri dati degli eventi." + +# @ dbem +#: admin/em-options.php:1464 +msgid "Reset" +msgstr "Reset" + +#: buddypress/bp-em-activity.php:58 +#, php-format +msgid "%s added the event %s to %s." +msgstr "%s ha aggiunto l'evento %s a %s." + +#: buddypress/bp-em-core.php:51 +#, php-format +msgid "Search %s..." +msgstr "Ricerca %s..." + +#: buddypress/screens/my-events.php:48 +#: em-events.php:151 +msgid "Reschedule Events" +msgstr "Ripianifica Eventi " + +# @ dbem +#: classes/em-categories-taxonomy.php:35 +#, php-format +msgid "Choose a color for your category. You can access this using the %s placeholder." +msgstr "Scegli un colore per la tua categoria. Puoi accedervi usando il segnaposto %s." + +# @ dbem +#: classes/em-categories-taxonomy.php:46 +msgid "Choose/Upload Image" +msgstr "Scegli /carica immagine" + +# @ dbem +#: classes/em-categories-taxonomy.php:47 +#, php-format +msgid "Choose an image for your category, which can be displayed using the %s placeholder." +msgstr "Scegli un'immagine per la tua categoria, che può essere visualizzata usando il segnaposto %s." + +# @ dbem +#: classes/em-event-post-admin.php:42 +#, php-format +msgid "If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, detach it." +msgstr "Se aggiorni i dati di questo evento e salvi, potrebbero essere sovrascritti se modifichi il modello dell'evento ricorrente. Per renderlo indipendente, scollegalo." + +# @ dbem +#: classes/em-event-post-admin.php:43 +#, php-format +msgid "To manage the whole set, edit the recurring event template." +msgstr "Per modificare l'intera serie, modifica il modello di evento ricorrente." + +# @ dbem +#: classes/em-event-post-admin.php:83 +msgid "Your event details are incorrect and recurrences cannot be created, please correct these errors first:" +msgstr "I dettagli del tuo evento non sono corretti e le ricorrenze non possono essere create, per favore correggi prima questi errori:" + +# @ dbem +#: classes/em-event-post-admin.php:85 +#: classes/em-location-post-admin.php:59 +#, php-format +msgid "Your %s details are incorrect and cannot be published, please correct these errors first:" +msgstr "I tuoi dettagli %s sono scorretti e non possono essere pubblicati, per favore correggi prima questi errori:" + +#: classes/em-event-post-admin.php:195 +msgid "Site Categories" +msgstr "Categorie del sito" + +#: classes/em-event-post-admin.php:352 +msgid "Recurrences" +msgstr "Ricorrenze" + +# @ default +#: classes/em-event-post.php:94 +#: classes/em-event-post.php:97 +#: classes/em-event-post.php:102 +#: classes/em-event-post.php:113 +#: classes/em-event-post.php:116 +#: classes/em-event-post.php:121 +#, php-format +msgid "View all posts in %s" +msgstr "Vedi tutti gli articoli in %s" + +#: classes/em-event-posts-admin.php:66 +msgid "View all categories" +msgstr "Mostra tutte le categorie" + +#: classes/em-event-posts-admin.php:96 +#: classes/em-event-posts-admin.php:215 +msgid "Date and Time" +msgstr "Data e ora" + +# @ dbem +#: classes/em-event-posts-admin.php:97 +#: classes/em-event-posts-admin.php:216 +msgid "Owner" +msgstr "Referente" + +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:132 +#: templates/buddypress/my-group-events.php:126 +#: templates/tables/events.php:132 +msgid "Edit Recurring Events" +msgstr "Modifica evento ricorrenti" + +#: classes/em-event-posts-admin.php:150 +msgid "Detach" +msgstr "Scollega" + +#: classes/em-event-posts-admin.php:163 +#, php-format +msgid "Duplicate %s" +msgstr "Duplica %s" + +#: classes/em-event-posts-admin.php:163 +msgid "Duplicate" +msgstr "Duplica" + +#: classes/em-event-posts-admin.php:187 +#, php-format +msgid "Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the events page." +msgstr "Modifiche a questo evento faranno sì che tutte le ricorrenze di questo evento siano eliminate e ricreate e le prenotazioni precedenti siano CANCELLATE! È possibile modificare le ricorrenze individuali e dissociarle da questo evento ricorrente visitando la pagina eventi." + +#: classes/em-event.php:428 +msgid "Event name" +msgstr "Nome evento" + +#: classes/em-event.php:464 +msgid "Since the event is repeated, you must specify an event end date greater than the start date." +msgstr "Dal momento che l'evento si ripete, è necessario specificare una data di conclusione dell'evento successiva alla data iniziale." + +# @ dbem +# @ default +#: classes/em-event.php:546 +#: classes/em-event.php:548 +msgid "There were some errors saving your location." +msgstr "C'è stato qualche errore salvando il tuo luogo." + +# @ default +#: classes/em-event.php:546 +#, php-format +msgid "It will not be displayed on the website listings, to correct this you must edit your location directly." +msgstr "Non verrà visualizzato sugli elenchi del sito, per correggere questo devi modificare il luogo directly." + +# @ dbem +#: classes/em-event.php:582 +#: classes/em-location.php:332 +#, php-format +msgid "Something went wrong saving your %s to the index table. Please inform a site administrator about this." +msgstr "Qualcosa è andato storto salvando i tuoi %s nella tabella indice. Per favore informa un amministratore di questo problema." + +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#, php-format +msgid "Successfully saved %s" +msgstr "%s salvato con successo." + +# @ dbem +#: classes/em-event.php:594 +#: classes/em-location.php:342 +#, php-format +msgid "Something went wrong updating your %s to the index table. Please inform a site administrator about this." +msgstr "Qualcosa è andato storto aggiornando i tuoi %s nella tabella indice. Per favore informa un amministratore di questo problema." + +#: classes/em-event.php:1159 +#: classes/em-location.php:618 +#, php-format +msgid "Edit %s" +msgstr "Modifica %s" + +#: classes/em-event.php:1384 +msgid "Event detached." +msgstr "Evento sganciato" + +# @ dbem +#: classes/em-event.php:1384 +msgid "Undo" +msgstr "Annulla" + +#: classes/em-event.php:1388 +msgid "Event could not be detached." +msgstr "L'evento non può essere sganciato." + +# @ dbem +#: classes/em-event.php:1402 +msgid "Event re-attached to recurrence." +msgstr "Evento ricollegato alla ricorrenza." + +#: classes/em-event.php:1405 +msgid "Event could not be attached." +msgstr "L'evento non può essere agganciato." + +#: classes/em-location.php:224 +#: widgets/em-locations.php:22 +msgid "Location name" +msgstr "Nome luogo" + +# @ dbem +#: em-install.php:291 +msgid "A new event has been submitted by #_CONTACTNAME.
                          Name : #_EVENTNAME
                          Date : #_EVENTDATES
                          Time : #_EVENTTIMES
                          Please visit #_EDITEVENTURL to review this event for approval." +msgstr "#_CONTACTNAME ha inserito un nuovo evento.
                          Nome : #_EVENTNAME
                          Data : #_EVENTDATES
                          Ora : #_EVENTTIMES
                          Si prega di visitare #_EDITEVENTURL per revisionare l'evento a i fini dell'approvazione." + +#: em-install.php:321 +msgid "All Cities/Towns" +msgstr "Tutti le città" + +# @ dbem +#: em-install.php:325 +#: em-install.php:328 +msgid "You have successfully submitted your event, which will be published pending approval." +msgstr "Hai inserito con successo il tuo evento, che sarà pubblicato in attesa di approvazione." + +# @ dbem +#: em-install.php:331 +msgid "Submitted Event Awaiting Approval" +msgstr "Inserito evento in attesa di approvazione." + +#: em-install.php:378 +msgid "All Day" +msgstr "Tutto il giorno" + +#: em-install.php:424 +msgid "
                        • No events in this tag
                        • " +msgstr "
                        • Non ci sono eventi in questo tag
                        • " + +#: em-install.php:502 +msgid "New Booking" +msgstr "Nuova prenotazione" + +#: em-posts.php:30 +#: em-posts.php:33 +msgid "Event Tag" +msgstr "Tag dell'evento" + +#: em-posts.php:34 +msgid "Search Event Tags" +msgstr "Ricerca tag degli Eventi" + +#: em-posts.php:35 +msgid "Popular Event Tags" +msgstr "Tag degli Eventi popolari" + +#: em-posts.php:36 +msgid "All Event Tags" +msgstr "Tutti i tag degli eventi" + +#: em-posts.php:37 +msgid "Parent Event Tags" +msgstr "Tag evento genitore" + +#: em-posts.php:38 +msgid "Parent Event Tag:" +msgstr "Tag evento genitore:" + +#: em-posts.php:39 +msgid "Edit Event Tag" +msgstr "Modifica tag evento" + +#: em-posts.php:40 +msgid "Update Event Tag" +msgstr "Aggiorna tag evento" + +#: em-posts.php:41 +msgid "Add New Event Tag" +msgstr "Aggiungi nuovo tag evento" + +#: em-posts.php:42 +msgid "New Event Tag Name" +msgstr "Nome nuovo tag evento" + +# @ dbem +#: em-posts.php:43 +msgid "Seperate event tags with commas" +msgstr "Separa i tag evento con virgole" + +#: em-posts.php:44 +#: em-posts.php:81 +msgid "Add or remove events" +msgstr "Aggiungi o rimuovi eventi" + +#: em-posts.php:45 +msgid "Choose from most used event tags" +msgstr "Cerca fra i tag evento più usati." + +#: em-posts.php:67 +#: em-posts.php:70 +msgid "Event Category" +msgstr "Categoria eventi" + +#: em-posts.php:71 +msgid "Search Event Categories" +msgstr "Cerca categorie eventi" + +#: em-posts.php:72 +msgid "Popular Event Categories" +msgstr "Categorie eventi popolari" + +#: em-posts.php:73 +msgid "All Event Categories" +msgstr "Tutte le categorie evento" + +#: em-posts.php:74 +msgid "Parent Event Categories" +msgstr "Genitore Categorie eventi " + +#: em-posts.php:75 +msgid "Parent Event Category:" +msgstr "Genitore Categoria evento" + +#: em-posts.php:76 +msgid "Edit Event Category" +msgstr "Modifica categoria evento" + +#: em-posts.php:77 +msgid "Update Event Category" +msgstr "Aggiorna categoria evento" + +#: em-posts.php:78 +msgid "Add New Event Category" +msgstr "Aggiungi nova Categoria evento" + +#: em-posts.php:79 +msgid "New Event Category Name" +msgstr "Nome nuova categoria evento" + +# @ dbem +#: em-posts.php:80 +msgid "Seperate event categories with commas" +msgstr "Separa le categorie evento con virgole" + +# @ dbem +#: em-posts.php:82 +msgid "Choose from most used event categories" +msgstr "Seleziona tra le categorie eventi più usate" + +#: em-posts.php:117 +msgid "Display events on your blog." +msgstr "Visualizza gli eventi sul blog." + +#: em-posts.php:123 +msgid "Add New Event" +msgstr "Aggiungi nuovo evento" + +#: em-posts.php:126 +msgid "New Event" +msgstr "Nuovo evento" + +#: em-posts.php:127 +#: em-posts.php:172 +#: em-posts.php:218 +#: templates/tables/locations.php:60 +msgid "View" +msgstr "Visualizza" + +#: em-posts.php:128 +msgid "View Event" +msgstr "Visualizza evento" + +#: em-posts.php:130 +msgid "No Events Found" +msgstr "Nessun evento trovato" + +# @ dbem +#: em-posts.php:131 +msgid "No Events Found in Trash" +msgstr "Nessun evento trovato nel cestino" + +#: em-posts.php:132 +msgid "Parent Event" +msgstr "Evento genitore" + +#: em-posts.php:161 +#: em-posts.php:164 +#: em-posts.php:166 +msgid "Recurring Events" +msgstr "Evento ricorrente" + +#: em-posts.php:162 +msgid "Recurring Events Template" +msgstr "Modello eventi ricorrenti" + +#: em-posts.php:167 +#: em-posts.php:173 +msgid "Add Recurring Event" +msgstr "Aggiungi evento ricorrente" + +# @ dbem +#: em-posts.php:168 +msgid "Add New Recurring Event" +msgstr "Aggiungi un evento ricorrente" + +#: em-posts.php:170 +msgid "Edit Recurring Event" +msgstr "Modifica evento ricorrente" + +#: em-posts.php:171 +msgid "New Recurring Event" +msgstr "Nuovo evento ricorrente" + +#: em-posts.php:174 +msgid "Search Recurring Events" +msgstr "Ricerca eventi ricorrenti" + +# @ dbem +#: em-posts.php:175 +msgid "No Recurring Events Found" +msgstr "Nessun evento ricorrente trovato" + +# @ dbem +#: em-posts.php:176 +msgid "No Recurring Events Found in Trash" +msgstr "Nessun evento ricorrente trovato nel cestino" + +# @ dbem +#: em-posts.php:177 +msgid "Parent Recurring Event" +msgstr "Evento ricorrente genitore." + +#: em-posts.php:208 +msgid "Display locations on your blog." +msgstr "Visualizza luoghi sul tuo blog." + +#: em-posts.php:214 +msgid "Add New Location" +msgstr "Aggiungi nuovo luogo" + +#: em-posts.php:217 +msgid "New Location" +msgstr "Nuovo Luogo" + +#: em-posts.php:219 +msgid "View Location" +msgstr "Visualizza luogo" + +#: em-posts.php:220 +msgid "Search Locations" +msgstr "Cerca luoghi" + +#: em-posts.php:221 +msgid "No Locations Found" +msgstr "Nessun luogo trovato" + +#: em-posts.php:222 +msgid "No Locations Found in Trash" +msgstr "Nessun luogo trovato nel cestino" + +#: em-posts.php:223 +msgid "Parent Location" +msgstr "Luogo genitore" + +#: em-template-tags.php:296 +msgid "You must log in to view and manage your events." +msgstr "È necessario eseguire il login per vedere e gestire i tuoi eventi." + +#: em-template-tags.php:386 +msgid "You must log in to view and manage your locations." +msgstr "È necessario eseguire il login per vedere e gestire i tuoi luoghi." + +#: em-template-tags.php:404 +msgid "You must log in to view and manage your bookings." +msgstr "È necessario eseguire il login per vedere e gestire le tue prenotazioni." + +#: events-manager.php:257 +msgid "Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events." +msgstr "Sei sicuro di voler scollegare questo evento ricorrente? Se si esegue questa operazione, questo sarà indipendente dal modello di ricorrenza." + +# @ dbem +#: events-manager.php:258 +msgid "This cannot be undone." +msgstr "Questa azione è irreversibile." + +# @ dbem +#: events-manager.php:258 +msgid "All events will be moved to trash." +msgstr "Tutti gli eventi saranno spostati nel cestino." + +#: events-manager.php:259 +msgid "Are you sure you want to delete all recurrences of this event?" +msgstr "Sei sicuro di voler cancellare tutte le ricorrenze di questo evento?" + +#: events-manager.php:300 +#: events-manager.php:314 +#, php-format +msgid "You cannot read private %s" +msgstr "Non è possibile leggere %s privati." + +#: events-manager.php:315 +#, php-format +msgid "You cannot view others %s" +msgstr "Non è possibile visualizzare altri %s" + +#: events-manager.php:321 +msgid "You do not have permission to upload images" +msgstr "Non si dispone dell'autorizzazione per caricare immagini" + +#: templates/forms/event/attributes.php:51 +msgid "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Se vedi degli attributi qui sotto, significa che non sono più usati in Events Manager. Per aggiungerli, è necessario aggiungere di nuovo l'attributo personalizzato in un'opzione di formattazione nella pagina delle impostazioni. Per rimuovere uno qualsiasi di questi attributi obsoleti, assegnagli un valore vuoto e salva." + +# @ dbem +#: templates/forms/event/group.php:26 +msgid "No groups defined yet." +msgstr "Nessun gruppo definito." + +# @ default +#: templates/forms/event/location.php:9 +msgid "This event does not have a physical location." +msgstr "Questo evento non ha un luogo fisico." + +#: templates/forms/event/location.php:31 +msgid "No Location" +msgstr "Nessun luogo" + +#: templates/forms/event/recurring-when.php:53 +#: templates/forms/event/when-with-recurring.php:13 +msgid "Recurrences span from " +msgstr "Ricorrenza comincia" + +#: templates/forms/event/recurring-when.php:61 +#: templates/forms/event/when-with-recurring.php:23 +msgid "Events start from" +msgstr "L'evento comincia da" + +#: templates/forms/event/recurring-when.php:65 +#: templates/forms/event/when-with-recurring.php:28 +#: templates/forms/event/when.php:20 +msgid "All day" +msgstr "Tutto il giorno" + +#: templates/forms/event/recurring-when.php:68 +#: templates/forms/event/when-with-recurring.php:74 +msgid "Each event lasts" +msgstr "Questo evento si ripete" + +# @ dbem +#: templates/forms/event/recurring-when.php:70 +#: templates/forms/event/when-with-recurring.php:76 +msgid "day(s)" +msgstr "Giorno(i)" + +#: templates/forms/event/when-with-recurring.php:11 +msgid "This is a recurring event." +msgstr "Questo è un evento ricorrente" + +# @ dbem +#: templates/forms/event/when-with-recurring.php:14 +#: templates/forms/event/when.php:8 +msgid "From " +msgstr "Da" + +#: templates/forms/event/when-with-recurring.php:24 +#: templates/forms/event/when.php:16 +msgid "Event starts at" +msgstr "L'evento comincia alle" + +#: templates/forms/event-editor.php:164 +msgid "Event Image" +msgstr "Immagine dell'evento" + +#: templates/forms/location-editor.php:47 +msgid "Details about the location." +msgstr "Dettagli circa il uogo" + +#: templates/forms/location-editor.php:52 +msgid "Location Image" +msgstr "Immagine del luogo" + +#: templates/tables/locations.php:74 +msgid "No locations have been inserted yet!" +msgstr "Nessun luogo è stato ancora inserito!" + +#: widgets/em-locations.php:21 +msgid "Event start date/time, location name" +msgstr "Data ora di inizio dell'evento, nome del luogo" + +#~ msgid "%s added the event %s of the %s group." +#~ msgstr "%s ha aggiunto l'evento %s del gruppo %s." + +#~ msgid "Action One" +#~ msgstr "Azione uno" + +#~ msgid "Action Two" +#~ msgstr "Azione Due" + +#~ msgid "Events Settings Header" +#~ msgstr "Intestazione Impostazioni Eventi" + +#~ msgid "Events Settings" +#~ msgstr "Eventi Impostazioni" + +#~ msgid "Changes Saved." +#~ msgstr "Modifiche salvate." + +#~ msgid "Do you love clicking checkboxes?" +#~ msgstr "Ti piace spuntare i quadratini?" + +#~ msgid "Save Settings" +#~ msgstr "Salva impostazioni" + +#~ msgid "Events Admin" +#~ msgstr "Eventi Admin" + +#~ msgid "Settings Updated." +#~ msgstr "Impostazioni aggiornate." + +#~ msgid "Option Two" +#~ msgstr "Opzione Due" + +#~ msgid "Events (%s)" +#~ msgstr "Eventi (%s)" + +#~ msgid "Ascendant" +#~ msgstr "Ascendente" + +#~ msgid "Descendant" +#~ msgstr "Discendente" + +#~ msgid "The location name" +#~ msgstr "Il nome del luogo" + +#~ msgid "%s successfully updated." +#~ msgstr "%s aggiornato con successo." + +#~ msgid "Could not save the %s details due to a database error." +#~ msgstr "" +#~ "Impossibile salvare i dettagli a causa di un errore del database %s." + +#~ msgid "You do not have permission to delete %s." +#~ msgstr "Non si dispone dell'autorizzazione per eliminare %s." + +#~ msgid "The category name" +#~ msgstr "Il nome della categoria" + +#~ msgid "" +#~ "If you update this event data and save, it will become an independent " +#~ "event, and will not be deleted or modified automatically if you " +#~ "reschedule the original recurring event details." +#~ msgstr "" +#~ "Se si aggiornano i dati di questo evento e si salva, diventerà un evento " +#~ "indipendente, e non verrà eliminato o modificato automaticamente in caso " +#~ "di riprogrammazione dei dettagli dell'evento ricorrente originale." + +#~ msgid "There was a problem saving the location so event was not saved." +#~ msgstr "" +#~ "C'è stato un problema nel salvare il luogo, quindi l'evento non è stato " +#~ "salvato." + +#~ msgid "Something went wrong with creating tickets." +#~ msgstr "Qualcosa è andato storto con la creazione di biglietti." + +#~ msgid "New event successfully inserted!" +#~ msgstr "Nuovo evento inserito con successo!" + +#~ msgid "Could not save the event details due to a database error." +#~ msgstr "" +#~ "Non è possibile salvare i dettagli dell'evento a causa di un errore del " +#~ "database." + +#~ msgid "Event %s." +#~ msgstr "Evento %s." + +#~ msgid "You are not allowed to manage this %s." +#~ msgstr "Non sei autorizzato a gestire questo %s." + +#~ msgid "However, the image could not be saved." +#~ msgstr "puertroppo, l'immagine non può essere salvata." + +#~ msgid "The image could not be saved" +#~ msgstr "L'immagine non poteva essere salvata" + +#~ msgid "However, the image could not be saved:" +#~ msgstr "Purtroppo, non è stato possibile salvare l'immagine:" + +#~ msgid "Insert New Event" +#~ msgstr "Inserisci un nuovo evento" + +#~ msgid "Starts on " +#~ msgstr "Inizia il" + +#~ msgid "from" +#~ msgstr "da" + +#~ msgid "and ends on" +#~ msgstr "e termina il" + +#~ msgid "" +#~ "Check if your event happens more than once according to a regular pattern" +#~ msgstr "" +#~ "Controlla se il tuo evento si verifica più di una volta secondo uno " +#~ "schema regolare" + +#~ msgid "Choose from one of your locations" +#~ msgstr "Scegli tra una dei luoghi" + +#~ msgid "or add a new location" +#~ msgstr "o aggiungi un nuovo luogo" + +#~ msgid "" +#~ "The name of the location where the event takes place. You can use the " +#~ "name of a venue, a square, etc" +#~ msgstr "" +#~ "Il nome del luogo in cui si svolge l'evento. È possibile utilizzare il " +#~ "nome di un'attività, una piazza, ecc" + +#~ msgid "No Value" +#~ msgstr "Nessun valore" + +#~ msgid "No venues have been inserted yet!" +#~ msgstr "Nessun luogo è stato ancora inserito!" + +#~ msgid "You must log in before you make a booking." +#~ msgstr "È necessario accedere prima di effettuare una prenotazione." + +#~ msgid "Only Network Admins see this" +#~ msgstr "Solo gli amministratori di rete vedono questo" + +#~ msgid "Events page title" +#~ msgstr "Titolo pagina eventi" + +#~ msgid "The title on the multiple events page." +#~ msgstr "Titolo della pagina con più di un evento." + +#~ msgid "The title on the multiple %s page." +#~ msgstr "Il titolo nella pagina %s multipli." + +#~ msgid "Booking and Ticketing Options" +#~ msgstr "Opzioni Prenotazione e Biglietti " + +#~ msgid "User can delete other users locations." +#~ msgstr "L'utente può cancellare luoghi di altri utenti." + +#~ msgid "User can edit their locations." +#~ msgstr "L'utente può modificare i propri luoghi." + +#~ msgid "" +#~ "User can view other users locations, to make locations shared by all " +#~ "users allow all event user roles to view all locations." +#~ msgstr "" +#~ "L'utente può visualizzare luoghi di altri utenti, fare luoghi condivisi " +#~ "da tutti gli utenti, permettere a tutti gli utenti di visualizzare tutte " +#~ "le località." + +#~ msgid "User can create recurrent events." +#~ msgstr "L'utente può creare eventi ricorrenti." + +#~ msgid "The category has been added." +#~ msgstr "La categoria è stata aggiunta." + +#~ msgid "The category has been updated." +#~ msgstr "La categoria è stata aggiornata." + +#~ msgid "Categories Deleted" +#~ msgstr "Categorie eliminate" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Category name" +#~ msgstr "Nome della categoria" + +#~ msgid "The name of the category" +#~ msgstr "Il nome della categoria" + +#~ msgid "Hide Slug" +#~ msgstr "Nascondi Slug" + +#~ msgid "%s Slug" +#~ msgstr "%s Slug" + +#~ msgid "" +#~ "The event slug. If the event slug already exists, a random number will be " +#~ "appended to the end." +#~ msgstr "" +#~ "Lo slug dell'evento. Se lo slug dell'evento è già presente, un numero " +#~ "casuale sarà aggiunto alla fine." + +#~ msgid "Details about the category" +#~ msgstr "Dettagli della categoria" + +#~ msgid "Category image" +#~ msgstr "Immagine della categoria" + +#~ msgid "No image uploaded for this category yet" +#~ msgstr "Nessuna immagine caricata per questa categoria" + +#~ msgid "" +#~ "Do a search for this string within event name, details and location " +#~ "address." +#~ msgstr "" +#~ "Fare una ricerca con questa stringa all'interno del nome dell'evento, di " +#~ "informazioni e indirizzo posizione." + +#~ msgid "See the events lists limit option on the settings page." +#~ msgstr "" +#~ "Vedere opzione per il limite della lista degli eventi nella pagina delle " +#~ "impostazioni." + +#~ msgid "" +#~ "Choose what fields to order your results by. You can supply a single " +#~ "field or multiple comma-seperated fields (e.g. \"start_date,name\")." +#~ msgstr "" +#~ "Scegliere per quali campi ordinare i risultati. È possibile fornire un " +#~ "singolo campo o più campi separati da virgole (ad esempio " +#~ "\"data_iniziale, nome\")." + +#~ msgid "See the event lists ordering option on the settings page." +#~ msgstr "" +#~ "Vedi l'opzione di ordinamento delle liste evento nella pagina delle " +#~ "impostazioni." diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-nl_NL.mo b/wp-content/plugins/events-manager/includes/langs/dbem-nl_NL.mo new file mode 100644 index 0000000..5418c2d Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-nl_NL.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-nl_NL.po b/wp-content/plugins/events-manager/includes/langs/dbem-nl_NL.po new file mode 100644 index 0000000..8d860d5 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-nl_NL.po @@ -0,0 +1,5350 @@ +# Translation of the WordPress plugin Events Manager 3.0.4 by Davide Benini, Marcus Sykes. +# Copyright (C) 2010 Davide Benini, Marcus Sykes +# This file is distributed under the same license as the Events Manager package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 5.1.2\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-09-20 20:44:48+00:00\n" +"PO-Revision-Date: 2012-03-13 11:16+0100\n" +"Last-Translator: Richard \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: buddypress/bp-em-activity.php:48 +#, php-format +msgid "%s added the event %s" +msgstr "%s heeft het evenement %s toegevoegd" + +#: buddypress/bp-em-activity.php:86 +#, php-format +msgid "%s is attending %s." +msgstr "%s bezoekt %s." + +#: buddypress/bp-em-activity.php:88 +#, php-format +msgid "%s will not be attending %s anymore." +msgstr "%s is geen bezoeker %s meer." + +#: buddypress/bp-em-activity.php:94 +#, php-format +msgid "%s is attending %s of the group %s." +msgstr "%s is bezoeker %s van de groep %s." + +#: buddypress/bp-em-activity.php:96 +#, php-format +msgid "%s will not be attending %s of group %s anymore." +msgstr "%s is geen bezoekerg %s van groep %s meer." + +#: admin/em-ms-options.php:165 +#: admin/em-options.php:397 +#: admin/em-options.php:435 +#: admin/em-options.php:850 +#: buddypress/bp-em-core.php:12 +#: buddypress/bp-em-core.php:51 +#: buddypress/bp-em-core.php:79 +#: buddypress/bp-em-core.php:147 +#: buddypress/bp-em-core.php:174 +#: buddypress/screens/profile.php:27 +#: em-actions.php:102 +#: em-install.php:336 +#: em-install.php:379 +#: em-install.php:429 +#: em-install.php:430 +#: em-install.php:454 +#: em-install.php:672 +#: em-posts.php:116 +#: em-posts.php:119 +#: em-posts.php:121 +#: em-template-tags.php:179 +#: widgets/em-events.php:13 +msgid "Events" +msgstr "Evenementen" + +#: admin/em-options.php:1031 +#: em-functions.php:473 +msgid "Yes" +msgstr "Ja" + +#: admin/em-options.php:1032 +#: em-functions.php:473 +msgid "No" +msgstr "Nee" + +#: buddypress/bp-em-notifications.php:24 +#: buddypress/bp-em-notifications.php:26 +#: buddypress/bp-em-notifications.php:33 +#: buddypress/bp-em-notifications.php:35 +#: buddypress/bp-em-notifications.php:41 +#: buddypress/bp-em-notifications.php:43 +#: em-install.php:525 +#: em-install.php:709 +#: em-install.php:762 +msgid "My Bookings" +msgstr "Mijn reserveringen" + +#: buddypress/bp-em-notifications.php:24 +msgid "You have a pending booking" +msgstr "U heeft een wachtende reservering" + +#: buddypress/bp-em-notifications.php:26 +#, php-format +msgid "You have %s pending bookings" +msgstr "U hebt %s wachtende reserveringen" + +#: buddypress/bp-em-notifications.php:33 +msgid "You have a confirmed booking" +msgstr "U heeft een bevestigde reservering" + +#: buddypress/bp-em-notifications.php:35 +#, php-format +msgid "You have %s confirmed bookings" +msgstr "U heeft %s bevestigde reserveringen" + +#: buddypress/bp-em-notifications.php:41 +msgid "A user cancelled a booking" +msgstr "Een gebruiker heeft een reservering ingetrokken" + +#: buddypress/bp-em-notifications.php:43 +#, php-format +msgid "%s users cancelled bookings." +msgstr "%s gebruikers hebben reserveringen ingetrokken" + +#: buddypress/bp-em-core.php:122 +#: buddypress/screens/my-locations.php:32 +msgid "My Locations" +msgstr "Mijn locaties" + +#: buddypress/screens/my-locations.php:49 +#: em-events.php:166 +#: em-posts.php:216 +msgid "Edit Location" +msgstr "Locatie aanpassen" + +#: buddypress/screens/my-locations.php:47 +#: em-events.php:164 +#: em-posts.php:213 +msgid "Add Location" +msgstr "Locatie toevoegen" + +#: buddypress/screens/group-events.php:20 +#: buddypress/screens/my-group-events.php:20 +msgid "Group Events" +msgstr "Groepeer evenementen" + +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "U bekijkt uw publieke pagina, dit is wat anderen zullen zien." + +#: buddypress/bp-em-core.php:110 +#: buddypress/screens/my-events.php:32 +#: templates/buddypress/profile.php:6 +msgid "My Events" +msgstr "Mijn evenementen" + +#: buddypress/screens/my-events.php:50 +#: em-events.php:153 +#: em-posts.php:125 +msgid "Edit Event" +msgstr "Evenement aanpassen" + +#: buddypress/screens/my-events.php:53 +#: em-events.php:156 +#: em-posts.php:122 +#: templates/buddypress/profile.php:19 +msgid "Add Event" +msgstr "Evenement toevoegen" + +#: buddypress/bp-em-core.php:99 +#: buddypress/screens/attending.php:23 +#: templates/buddypress/profile.php:24 +msgid "Events I'm Attending" +msgstr "Evenementen die ik bijwoon" + +#: buddypress/bp-em-core.php:134 +#: buddypress/screens/my-bookings.php:30 +msgid "My Event Bookings" +msgstr "Mijn reserveringen" + +#: buddypress/bp-em-core.php:90 +msgid "My Profile" +msgstr "Mijn profiel" + +#: em-posts.php:124 +#: em-posts.php:169 +#: em-posts.php:215 +#: templates/forms/event/bookings.php:86 +msgid "Edit" +msgstr "Aanpassen" + +#: admin/bookings/em-events.php:101 +#: admin/bookings/em-pending.php:101 +#: admin/bookings/em-person.php:86 +#: admin/em-ms-options.php:162 +#: admin/em-options.php:293 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:858 +#: admin/em-options.php:920 +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#: admin/em-options.php:1364 +#: classes/em-event-posts-admin.php:163 +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-event.php:655 +#: classes/em-event.php:1159 +#: em-actions.php:102 +#: em-install.php:386 +#: em-install.php:416 +#: em-posts.php:120 +#: templates/forms/event-editor.php:12 +#: templates/templates/my-bookings.php:46 +msgid "Event" +msgstr "Evenement" + +#: templates/templates/ical.php:12 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Kalender" + +#: widgets/em-calendar.php:17 +msgid "Display your events in a calendar widget." +msgstr "Laat evenementen zien in een kalender widget" + +#: widgets/em-calendar.php:18 +msgid "Events Calendar" +msgstr "Evenementen kalender" + +#: widgets/em-calendar.php:60 +#: widgets/em-events.php:97 +#: widgets/em-locations.php:72 +msgid "Title" +msgstr "Titel" + +#: widgets/em-calendar.php:64 +msgid "Show Long Events?" +msgstr "Lange evenementen tonen?" + +#: widgets/em-calendar.php:68 +#: widgets/em-events.php:145 +msgid "Category IDs" +msgstr "Categorie ID's" + +#: widgets/em-calendar.php:70 +#: widgets/em-events.php:147 +msgid "1,2,3 or 2 (0 = all)" +msgstr "1,2,3 of 2 (0 = allen)" + +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Locaties van evenementen" + +#: widgets/em-locations.php:24 +msgid "Display a list of event locations on Events Manager." +msgstr "Laat een lijst van evenementlocaties zien in de Events Manager." + +#: widgets/em-locations.php:49 +msgid "No locations" +msgstr "Geen Locaties" + +#: widgets/em-locations.php:76 +msgid "Show number of locations" +msgstr "Laat het aantal locaties zien" + +#: widgets/em-locations.php:80 +msgid "Scope of the locations" +msgstr "groep van locaties" + +#: widgets/em-locations.php:103 +msgid "Order of the locations" +msgstr "Volgorde van de locaties" + +#: widgets/em-events.php:150 +#: widgets/em-locations.php:110 +msgid "List item format" +msgstr "Opmaak van een item in de lijst" + +#: widgets/em-events.php:22 +#: widgets/em-events.php:73 +#: widgets/em-events.php:159 +msgid "all events" +msgstr "Alle evenementen" + +#: widgets/em-events.php:30 +msgid "Display a list of events on Events Manager." +msgstr "Laat een lijst van evenementen zin op Events Manager" + +#: widgets/em-events.php:70 +msgid "No events" +msgstr "Geen evenementen" + +#: widgets/em-events.php:101 +msgid "Number of events" +msgstr "Aantal evenementen" + +#: widgets/em-events.php:106 +msgid "Scope" +msgstr "Inhoud" + +#: widgets/em-events.php:116 +#: widgets/em-locations.php:90 +msgid "Order By" +msgstr "Sorteren op" + +#: widgets/em-events.php:25 +msgid "start date, start time, event name" +msgstr "startdatum, starttijd, evenementnaam" + +#: widgets/em-events.php:26 +msgid "name, start date, start time" +msgstr "naam, startdatum, starttijd" + +#: widgets/em-events.php:27 +msgid "name, end date, end time" +msgstr "naam, einddatum, eindtijd" + +#: widgets/em-events.php:28 +msgid "end date, end time, event name" +msgstr "einddatum, eindtijd, evenementnaam" + +#: widgets/em-events.php:129 +msgid "Order" +msgstr "Sorteer" + +#: admin/em-options.php:476 +#: admin/em-options.php:479 +#: admin/em-options.php:530 +#: admin/em-options.php:627 +#: admin/em-options.php:630 +#: admin/em-options.php:677 +#: admin/em-options.php:680 +#: admin/em-options.php:767 +#: admin/em-options.php:770 +#: widgets/em-events.php:133 +#: widgets/em-locations.php:105 +msgid "Ascending" +msgstr "Oplopend" + +#: admin/em-options.php:477 +#: admin/em-options.php:480 +#: admin/em-options.php:531 +#: admin/em-options.php:628 +#: admin/em-options.php:631 +#: admin/em-options.php:678 +#: admin/em-options.php:681 +#: admin/em-options.php:768 +#: admin/em-options.php:771 +#: widgets/em-events.php:134 +#: widgets/em-locations.php:106 +msgid "Descending" +msgstr "Aflopend" + +#: widgets/em-events.php:154 +msgid "Show all events link at bottom?" +msgstr "Toon alle evenementen link aan onderkant?" + +#: widgets/em-events.php:158 +msgid "All events link text?" +msgstr "Alle evenementen link tekst?" + +#: admin/bookings/em-events.php:14 +#: em-functions.php:160 +msgid "All events" +msgstr "Alle evenementen" + +#: admin/bookings/em-events.php:15 +#: em-functions.php:161 +msgid "Future events" +msgstr "Evenementen in de toekomst" + +#: admin/bookings/em-events.php:13 +#: em-functions.php:162 +msgid "Past events" +msgstr "Evenementen uit het verleden" + +#: em-functions.php:163 +msgid "Today's events" +msgstr "Evenementen van vandaag" + +#: em-functions.php:164 +msgid "Tomorrow's events" +msgstr "Evenementen van morgen" + +#: em-functions.php:165 +msgid "Events this month" +msgstr "Evenementen deze maand" + +#: em-functions.php:166 +msgid "Events next month" +msgstr "Evenementen komende maand" + +#: em-functions.php:167 +msgid "Events current and next month" +msgstr "Evenementen deze en volgende maand" + +#: em-functions.php:168 +msgid "Events within 2 months" +msgstr "Evenementen binnnen 2 maanden" + +#: em-functions.php:169 +msgid "Events within 3 months" +msgstr "Evenementen binnnen 3 maanden" + +#: em-functions.php:170 +msgid "Events within 6 months" +msgstr "Evenementen binnnen 6 maanden" + +#: em-functions.php:171 +msgid "Events within 12 months" +msgstr "Evenementen binnnen 12 maanden" + +#: em-functions.php:224 +msgid "Trying to perform an illegal action." +msgstr "U probeert een ongeldige actie uit te voeren" + +#: em-functions.php:296 +msgid "ERROR: Please enter a username." +msgstr "FOUT: voer een gebruikersnaam in a.u.b." + +#: em-functions.php:298 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "FOUT: De gebruikersnaam is niet gelding omdat het ongeldige karrakters bevat. Voer een geldige gebruikersnaam in a.u.b." + +# @ default +#: em-functions.php:301 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "FOUT: Deze gebruikersnaam is al geregistreerd, kies een andere gebruikersnaam a.u.b." + +#: em-actions.php:270 +#: em-functions.php:306 +msgid "ERROR: Please type your e-mail address." +msgstr "FOUT: Voer uw e-mailadres in a.u.b." + +#: em-actions.php:273 +#: em-functions.php:308 +msgid "ERROR: The email address isn’t correct." +msgstr "FOUT: Het e-mailadres is niet correct." + +# @ default +#: em-functions.php:311 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "FOUT: Dit e-mail adres is al geregistreerd, gebruik een ander adres a.u.b." + +#: em-functions.php:331 +#, php-format +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "FOUT: Het registreren is niet gelukt. neem contact op met de webmaster !" + +#: em-functions.php:366 +#, php-format +msgid "New user registration on your blog %s:" +msgstr "Nieuwe gebruiker geregistreerd op uw blog %s:" + +#: em-functions.php:367 +#, php-format +msgid "Username: %s" +msgstr "Gebruikersnaam: %s" + +#: em-functions.php:368 +#, php-format +msgid "E-mail: %s" +msgstr "E-mail: %s" + +#: em-functions.php:369 +#, php-format +msgid "[%s] New User Registration" +msgstr "[%s] Nieuwe registratie gebruiker" + +#: em-functions.php:380 +#, php-format +msgid "[%s] Your username and password" +msgstr "[%s] Uw gebruikersnaam en wachtwoord." + +#: classes/em-ticket.php:47 +msgid "Standard Ticket" +msgstr "Standaard plaatsbewijs" + +#: classes/em-booking.php:134 +#: classes/em-ticket-booking.php:69 +#: classes/em-ticket.php:97 +msgid "Changes saved" +msgstr "Wijzigingen zijn opgeslagen" + +#: classes/em-ticket.php:102 +msgid "Ticket created" +msgstr "Plaatsbewijs aangemaakt" + +#: classes/em-ticket.php:105 +#: classes/em-ticket.php:106 +#: classes/em-ticket.php:111 +#: classes/em-ticket.php:112 +msgid "There was a problem saving the ticket." +msgstr "Er was een probleem bij het opslaan van het plaatsbewijs." + +#: classes/em-event.php:461 +#: classes/em-ticket-booking.php:113 +#: classes/em-ticket.php:161 +msgid "Missing fields: " +msgstr "Ontbrekende velden" + +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "U kunt geen plaatsbewijs verwijderen waar op geboekt is." + +#: classes/em-location.php:106 +msgid "The location address" +msgstr "Adres van de locatie" + +#: classes/em-location.php:106 +msgid "The location town" +msgstr "Plaats van de locatie" + +#: classes/em-location.php:106 +msgid "The country" +msgstr "Het land" + +#: classes/em-event.php:428 +#: classes/em-location.php:224 +#: classes/em-location.php:239 +#: classes/em-location.php:241 +msgid " is required." +msgstr "is vereist." + +#: admin/em-bookings.php:109 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:334 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:942 +#: admin/em-options.php:1382 +#: classes/em-event-posts-admin.php:95 +#: classes/em-event-posts-admin.php:214 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#: classes/em-location.php:618 +#: em-actions.php:180 +#: em-posts.php:211 +#: templates/buddypress/group-events.php:43 +#: templates/buddypress/my-group-events.php:43 +#: templates/forms/location-editor.php:32 +#: templates/tables/events.php:52 +msgid "Location" +msgstr "Locatie" + +#: admin/em-ms-options.php:173 +#: admin/em-options.php:654 +#: admin/em-options.php:944 +#: admin/em-options.php:945 +#: classes/em-location-post-admin.php:59 +#: classes/em-location.php:332 +#: classes/em-location.php:342 +#: templates/forms/location-editor.php:6 +msgid "location" +msgstr "Locatie" + +#: classes/em-location.php:348 +#, php-format +msgid "You do not have permission to create/edit %s." +msgstr "U heeft geen rechten om aan te maken of te wijzigen %s." + +#: admin/em-ms-options.php:167 +#: admin/em-ms-options.php:172 +#: admin/em-ms-options.php:173 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:581 +#: admin/em-options.php:582 +#: admin/em-options.php:595 +#: admin/em-options.php:599 +#: admin/em-options.php:649 +#: admin/em-options.php:650 +#: admin/em-options.php:693 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: admin/em-options.php:1384 +#: admin/em-options.php:1385 +#: admin/em-options.php:1386 +#: admin/em-options.php:1387 +#: admin/em-options.php:1388 +#: admin/em-options.php:1389 +#: classes/em-location.php:348 +#: events-manager.php:309 +#: events-manager.php:310 +#: events-manager.php:311 +#: events-manager.php:312 +#: events-manager.php:313 +#: events-manager.php:314 +#: events-manager.php:315 +msgid "locations" +msgstr "Locaties" + +#: em-actions.php:104 +#, php-format +msgid "%s successfully deleted." +msgstr "%s succesvol verwijderd." + +#: em-actions.php:107 +#, php-format +msgid "%s could not be deleted." +msgstr "%s kon niet worden verwijderd." + +#: classes/em-booking.php:143 +#: classes/em-booking.php:144 +#: classes/em-booking.php:152 +#: classes/em-booking.php:163 +#: classes/em-booking.php:169 +#: classes/em-tickets-bookings.php:69 +#: classes/em-tickets-bookings.php:70 +msgid "There was a problem saving the booking." +msgstr "Er was een probleem bij het opslaan van de reservering" + +#: classes/em-tickets-bookings.php:99 +#: em-install.php:489 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "Reservering mislukt, niet voldoende plaatsen beschikbaar!" + +#: classes/em-tickets-bookings.php:163 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +#, php-format +msgid "You do not have the rights to manage this %s." +msgstr "U heeft geen rechten om dit te beheren %s." + +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#: classes/em-booking.php:414 +#: classes/em-booking.php:416 +#: classes/em-bookings.php:108 +#: classes/em-tickets-bookings.php:163 +msgid "Booking" +msgstr "Reservering" + +# Dutch translation by Dennis Lutz +#: admin/em-bookings.php:154 +#: admin/em-bookings.php:215 +#: admin/em-options.php:616 +#: admin/em-options.php:666 +#: admin/em-options.php:756 +#: classes/em-person.php:76 +#: templates/buddypress/group-events.php:41 +#: templates/buddypress/my-group-events.php:41 +#: templates/forms/bookingform/booking-fields.php:10 +#: templates/forms/tickets-form.php:4 +#: templates/tables/events.php:50 +#: templates/tables/locations.php:34 +#: templates/tables/locations.php:43 +#: templates/templates/bookings-event-printable.php:24 +msgid "Name" +msgstr "Naam" + +#: classes/em-person.php:77 +msgid "Email" +msgstr "E-mail" + +#: classes/em-people.php:28 +#: classes/em-person.php:78 +#: templates/forms/bookingform/booking-fields.php:14 +msgid "Phone" +msgstr "Telefoon" + +#: classes/em-ticket-booking.php:78 +msgid "Ticket booking created" +msgstr "Plaatsbewijs reservering is aangemaakt" + +#: classes/em-ticket-booking.php:85 +#: classes/em-ticket-booking.php:86 +#: classes/em-ticket-booking.php:91 +#: classes/em-ticket-booking.php:92 +msgid "There was a problem saving the ticket booking." +msgstr "Er was een probleem bij het opslaan van de reservering" + +#: admin/em-options.php:744 +#: admin/em-options.php:973 +#: admin/em-options.php:974 +msgid "category" +msgstr "Categorie" + +#: classes/em-bookings.php:108 +#, php-format +msgid "%s created." +msgstr "%s aangemaakt." + +#: classes/em-bookings.php:256 +#: classes/em-bookings.php:262 +#, php-format +msgid "Bookings %s. Mails Sent." +msgstr "Reserveringen %s. e-mails verstuurd." + +#: classes/em-bookings.php:266 +msgid "An error occurred." +msgstr "Er is een fout opgetreden." + +#: admin/bookings/em-events.php:136 +#: classes/em-booking.php:100 +#: classes/em-event-posts-admin.php:139 +#: classes/em-event.php:244 +#: templates/buddypress/group-events.php:94 +#: templates/buddypress/my-group-events.php:88 +#: templates/tables/events.php:17 +#: templates/tables/events.php:97 +msgid "Pending" +msgstr "in behandeling" + +#: classes/em-booking.php:101 +#: classes/em-event.php:245 +msgid "Approved" +msgstr "Goedgekeurd" + +#: classes/em-booking.php:102 +msgid "Rejected" +msgstr "Ingetrokken" + +#: classes/em-booking.php:103 +#: em-actions.php:358 +msgid "Cancelled" +msgstr "Gecancelled" + +#: classes/em-booking.php:104 +msgid "Awaiting Online Payment" +msgstr "Wacht op online betaling" + +#: classes/em-booking.php:105 +msgid "Awaiting Payment" +msgstr "Wacht op betaling" + +#: classes/em-booking.php:139 +msgid "Your booking has been recorded" +msgstr "Uw reservering is verwerkt" + +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#, php-format +msgid "You cannot manage this %s." +msgstr "U kunt dit niet beheren %s." + +#: classes/em-booking.php:222 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "U probeert een niet bestaand plaatsbewijs voor dit evenement te reserveren" + +#: classes/em-booking.php:414 +#, php-format +msgid "%s deleted" +msgstr "%s verwijderd" + +#: classes/em-booking.php:416 +#, php-format +msgid "%s could not be deleted" +msgstr "%s kon niet worden verwijderd." + +#: classes/em-booking.php:462 +msgid "Not approved, spaces full." +msgstr "Niet goedgekeurd, alle plaatsen bezet." + +#: classes/em-booking.php:470 +#, php-format +msgid "Booking %s." +msgstr "Reservering %s." + +#: classes/em-booking.php:473 +msgid "Mail Sent." +msgstr "e-mail is verzonden." + +#: classes/em-booking.php:476 +#: classes/em-booking.php:477 +msgid "ERROR : Mail Not Sent." +msgstr "FOUT: e-mail is niet verzonden." + +#: classes/em-booking.php:483 +#: classes/em-booking.php:484 +#, php-format +msgid "Booking could not be %s." +msgstr "Reservering kon niet %s." + +#: classes/em-booking.php:499 +msgid "Booking note successfully added." +msgstr "reserveringsnotitie succesvol toegevoegd." + +#: classes/em-booking.php:636 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "Bevestigingsmail kon niet verzonden worden aan contactpersoon. De registreerder moet de mail ontvangen hebben (alleen admin's zien deze waarschuwing)." + +#: classes/em-booking.php:643 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "Bevestigingsmail kon niet aan admin verstuurd worden. De registreerder moet de mail ontvangen hebben (alleen admin's zien deze waarschuwing)." + +#: admin/em-options.php:971 +#: templates/buddypress/group-events.php:112 +#: templates/buddypress/my-group-events.php:106 +msgid "Category" +msgstr "Categorie" + +#: admin/em-options.php:708 +#: admin/em-options.php:712 +#: admin/em-options.php:721 +#: admin/em-options.php:783 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: events-manager.php:318 +#: events-manager.php:319 +msgid "categories" +msgstr "categorieën" + +#: classes/em-tickets.php:98 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "U kunt plaatsbewijzen niet verwijderen als er reserveringen aan gekoppeld zijn. Verwijder eerst de reserveringen a.u.b." + +#: classes/em-tickets.php:124 +msgid "Standard" +msgstr "Standaard" + +#: classes/em-people.php:19 +msgid "User deleted by administrators" +msgstr "De gebruiker is verwijderd door admin's" + +#: classes/em-event-post-admin.php:37 +msgid "WARNING: This is a recurring event." +msgstr "LET OP: Dit is een terugkerend evenement." + +#: classes/em-event-post-admin.php:38 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Aanpassingen aan dit evenement heeft tot gevolg dat alle terugkerende voorstellingen van dit evenement opnieuw worden aangemaakt en voorgaande reserveringen worden verwijderd! U kunt individuele voorstellingen uit deze reeks aanpassen en ze loskoppelen van dit terugkerende evenement." + +#: classes/em-event-post-admin.php:41 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "LET OP: Dit is een terugkerend evenement in een reeks." + +#: classes/em-event-post-admin.php:48 +#, php-format +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "LET OP: Dit is een evenement dat hoor bij de groep \"%s\". Andere group admin's kunnen dit evenement ook aanpassen." + +#: classes/em-event.php:617 +msgid "Something went wrong with the recurrence update..." +msgstr "Er is iets foutgegaan bij het opslaan van terugkerend evenement" + +#: classes/em-event.php:617 +msgid "There was a problem saving the recurring events." +msgstr "Er was een probleem bij het opslaan van de terugkerende evenementen" + +#: classes/em-event.php:655 +#, php-format +msgid "%s successfully duplicated." +msgstr "%s succesvol gekopiëerd." + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:506 +#: admin/em-options.php:1395 +#: admin/em-options.php:1396 +#: classes/em-event-post-admin.php:85 +#: classes/em-event.php:582 +#: classes/em-event.php:594 +msgid "event" +msgstr "evenement" + +#: classes/em-event.php:442 +msgid "Events cannot start after they end." +msgstr "Evenementen kunnen niet starten nadat ze begonnen zijn." + +#: classes/em-event.php:447 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Data moeten juist worden ingevoerd. Gebruik de aangeboden datumprikker." + +#: classes/em-event.php:1255 +#: templates/forms/bookingform/ticket-single.php:21 +#: templates/forms/bookingform/tickets-list.php:28 +msgid "N/A" +msgstr "Niet beschikbaar" + +#: classes/em-event.php:1265 +msgid "Profile" +msgstr "Profiel" + +#: classes/em-event.php:1702 +msgid "Sunday" +msgstr "zondag" + +#: classes/em-event.php:1702 +msgid "Monday" +msgstr "maandag" + +#: classes/em-event.php:1702 +msgid "Tuesday" +msgstr "dinsdag" + +#: classes/em-event.php:1702 +msgid "Wednesday" +msgstr "woensdag" + +#: classes/em-event.php:1702 +msgid "Thursday" +msgstr "donderdag" + +#: classes/em-event.php:1702 +msgid "Friday" +msgstr "vrijdag" + +#: classes/em-event.php:1702 +msgid "Saturday" +msgstr "zaterdag" + +#: classes/em-event.php:1703 +#, php-format +msgid "the first %s of the month" +msgstr "de eerste %s van de maand" + +#: classes/em-event.php:1703 +#, php-format +msgid "the second %s of the month" +msgstr "de tweede %s van de maand" + +#: classes/em-event.php:1703 +#, php-format +msgid "the third %s of the month" +msgstr "de derde %s van de maand" + +#: classes/em-event.php:1703 +#, php-format +msgid "the fourth %s of the month" +msgstr "de vierde %s van de maand" + +#: classes/em-event.php:1703 +#, php-format +msgid "the last %s of the month" +msgstr "de laatste %s van de maand" + +#: classes/em-event.php:1704 +#, php-format +msgid "From %1$s to %2$s" +msgstr "Van %1$s tot %2$s" + +#: classes/em-event.php:1706 +msgid "everyday" +msgstr "Elke dag" + +#: classes/em-event.php:1708 +#, php-format +msgid "every %s days" +msgstr "elke %s dagen" + +#: classes/em-event.php:1717 +msgid "every week" +msgstr "elke week" + +#: classes/em-event.php:1719 +#, php-format +msgid "every %s weeks" +msgstr "elke %s weken" + +#: classes/em-event.php:1730 +#, php-format +msgid "every %s months" +msgstr "elke %s maanden" + +#: classes/em-object.php:872 +msgid "The image file is too big! Maximum size:" +msgstr "De afbeelding is te groot! Maximale groote:" + +#: classes/em-object.php:877 +msgid "The image is too big! Maximum size allowed:" +msgstr "De afbeelding is te groot! Maximale formaat:" + +#: classes/em-object.php:880 +msgid "The image is in a wrong format!" +msgstr "Afbeelding heeft een ongeldige opmaak!" + +#: classes/em-mailer.php:84 +msgid "Please supply a valid email format." +msgstr "Geef a.u.b. een geldig emailadres op" + +#: admin/em-options.php:1201 +msgid "Booking cancelled" +msgstr "Reservering verwijderd" + +#: em-actions.php:370 +msgid "You must log in to cancel your booking." +msgstr "U moet inloggen om uw resevering te cancelen." + +#: admin/em-bookings.php:251 +#: templates/forms/bookingform/tickets-list.php:8 +msgid "Ticket Type" +msgstr "Type plaatsbewijs" + +#: admin/em-bookings.php:156 +#: admin/em-bookings.php:253 +#: templates/forms/bookingform/ticket-single.php:9 +#: templates/forms/bookingform/tickets-list.php:10 +#: templates/forms/event/bookings.php:30 +#: templates/forms/ticket-form.php:9 +#: templates/forms/tickets-form.php:6 +msgid "Price" +msgstr "Prijs" + +#: admin/bookings/em-cancelled.php:87 +#: admin/bookings/em-confirmed.php:88 +#: admin/bookings/em-pending.php:105 +#: admin/bookings/em-person.php:87 +#: admin/bookings/em-rejected.php:87 +#: admin/em-bookings.php:157 +#: admin/em-bookings.php:252 +#: templates/forms/bookingform/ticket-single.php:15 +#: templates/forms/bookingform/tickets-list.php:12 +#: templates/forms/ticket-form.php:11 +#: templates/templates/bookings-event-printable.php:27 +#: templates/templates/my-bookings.php:48 +msgid "Spaces" +msgstr "Plaatsen" + +#: admin/em-bookings.php:311 +#: templates/forms/bookingform/booking-fields.php:24 +#: templates/templates/bookings-event-printable.php:28 +msgid "Comment" +msgstr "Opmerking" + +#: templates/placeholders/bookingform.php:54 +msgid "Send your booking" +msgstr "Verzend uw reservering" + +#: templates/placeholders/bookingform.php:71 +msgid "No more tickets available at this time." +msgstr "Er zijn geen plaatsbewijzen meer te verkrijgen." + +#: templates/forms/ticket-form.php:12 +msgid "If blank, there's no space limit." +msgstr "Indien leeg, er is geen beperking in plaatsen." + +#: templates/forms/ticket-form.php:15 +msgid "Available from" +msgstr "Beschikbaar van" + +#: templates/forms/event/recurring-when.php:56 +#: templates/forms/event/recurring-when.php:63 +#: templates/forms/event/when-with-recurring.php:17 +#: templates/forms/event/when-with-recurring.php:18 +#: templates/forms/event/when-with-recurring.php:26 +#: templates/forms/event/when.php:11 +#: templates/forms/event/when.php:18 +#: templates/forms/ticket-form.php:18 +msgid "to" +msgstr "tot" + +#: templates/forms/ticket-form.php:21 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Voeg een start- of einddatum (of beide) in om een tijdbeperking voor de beschikbare plaatsbewijzen op te geven. Of laat leeg als er geen limiet is." + +#: templates/forms/ticket-form.php:24 +msgid "Bookings must order between" +msgstr "Reserveringen moeten gedaan worden tussen" + +#: templates/forms/ticket-form.php:26 +#: templates/templates/events-search.php:38 +msgid "and" +msgstr "en" + +#: templates/forms/ticket-form.php:28 +msgid "spaces." +msgstr "plaatsen." + +#: templates/forms/ticket-form.php:29 +msgid "Leave either blank for no upper/lower limit." +msgstr "Of laat leeg als er geen limiet is." + +#: admin/em-bookings.php:155 +#: templates/forms/ticket-form.php:32 +#: templates/forms/tickets-form.php:5 +msgid "Description" +msgstr "Omschrijving" + +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:137 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +msgid "Unauthorized Access" +msgstr "Ongeauthoriseerde toegang" + +#: admin/em-ms-locations.php:39 +msgid "Add location" +msgstr "Locatie toevoegen" + +#: admin/em-ms-locations.php:42 +msgid "Edit location" +msgstr "Locatie aanpassen" + +#: templates/forms/location-editor.php:12 +msgid "required" +msgstr "vereist" + +#: templates/forms/location-editor.php:23 +msgid "Location Name" +msgstr "Locatienaam" + +#: templates/forms/location-editor.php:28 +msgid "The name of the location" +msgstr "Naam van de locatie" + +#: templates/forms/location/where.php:4 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Als je gebruik maakt van Google Maps; hoe meer gegevens je opgeeft, des te acurater kan Google de locatie aangeven. Als het adres niet gevonden wordt, probeer het op maps.google.com door alle velden, gescheiden door komma's in te voeren." + +#: templates/forms/event/location.php:69 +#: templates/forms/location/where.php:8 +msgid "Address:" +msgstr "Adres" + +#: templates/forms/event/location.php:75 +#: templates/forms/location/where.php:14 +msgid "City/Town:" +msgstr "Plaatsnaam:" + +#: templates/forms/event/location.php:82 +#: templates/forms/location/where.php:20 +msgid "State/County:" +msgstr "Land:" + +#: templates/forms/event/location.php:89 +#: templates/forms/location/where.php:26 +msgid "Postcode:" +msgstr "Postcode:" + +#: templates/forms/event/location.php:102 +#: templates/forms/location/where.php:39 +msgid "Country:" +msgstr "Land:" + +#: templates/forms/event/location.php:105 +#: templates/forms/location/where.php:42 +msgid "none selected" +msgstr "niets geselecteerd" + +#: templates/forms/event/location.php:122 +#: templates/forms/location/where.php:52 +msgid "Location not found" +msgstr "Locatie niet gevonden" + +#: templates/forms/event-editor.php:99 +#: templates/forms/location-editor.php:39 +msgid "Details" +msgstr "Details" + +#: templates/forms/location-editor.php:57 +msgid "No image uploaded for this location yet" +msgstr "Er is nog geen afbeelding voor deze locatie" + +#: templates/forms/event-editor.php:172 +#: templates/forms/location-editor.php:60 +msgid "Upload/change picture" +msgstr "Upload of vervang afbeelding" + +#: templates/forms/event-editor.php:174 +#: templates/forms/location-editor.php:62 +msgid "Delete Image?" +msgstr "Verwijderde afbeelding?" + +#: templates/forms/location-editor.php:71 +msgid "Update location" +msgstr "Locatiewijzigingen toepassen" + +#: admin/bookings/em-cancelled.php:85 +#: admin/bookings/em-confirmed.php:86 +#: admin/bookings/em-pending.php:103 +#: admin/bookings/em-rejected.php:85 +#: templates/forms/bookingform/booking-fields.php:18 +#: templates/templates/bookings-event-printable.php:25 +msgid "E-mail" +msgstr "E-mail" + +#: templates/forms/bookingform/login.php:3 +msgid "Log in if you already have an account with us." +msgstr "Log in als je al een gebruikersaccount bij ons hebt." + +#: templates/forms/bookingform/login.php:5 +msgid "Username" +msgstr "Gebruikersnaam" + +#: templates/forms/bookingform/login.php:9 +msgid "Password" +msgstr "Wachtwoord" + +#: templates/forms/bookingform/login.php:13 +msgid "Log In" +msgstr "Inloggen" + +#: templates/forms/bookingform/login.php:14 +msgid "Remember Me" +msgstr "Onthoud mij" + +#: templates/forms/bookingform/login.php:29 +msgid "Sign Up" +msgstr "Registreren" + +#: templates/forms/bookingform/login.php:33 +msgid "Password Lost and Found" +msgstr "Wachtwoord gezocht en gevonden" + +#: templates/forms/bookingform/login.php:33 +msgid "Lost your password?" +msgstr "Uw wachtwoord kwijt?" + +#: admin/em-bookings.php:100 +#: templates/forms/event-editor.php:30 +msgid "Event Name" +msgstr "Evenementnaam" + +#: templates/forms/event-editor.php:34 +msgid "The event name. Example: Birthday party" +msgstr "Naam van het evenement. Bijv. Verjaardagsfeestje" + +#: templates/forms/event/group.php:23 +#: templates/forms/event-editor.php:60 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Selecteer een groep die u beheert om dit evenment aan te koppelen. Let op dat alle admin's van deze groep de reserveringe kunnen bewerken en je een evenement niet meer kunt loskoppelen (alleen verwijderen)." + +#: classes/em-event-post-admin.php:177 +#: templates/forms/event-editor.php:66 +msgid "When" +msgstr "Wanneer" + +#: templates/forms/event/when.php:23 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Dit evenment loopt elke dag tussen de begin- en einddatum waarbij de start- en eindtijd voor iedere dag gelijk is." + +#: templates/forms/event/recurring-when.php:72 +#: templates/forms/event/when-with-recurring.php:78 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Voor een terugkerend evenement wordt een ééndaags evenemnt gemaakt op elke herhaaldatum binnen deze tijdsspanne." + +#: templates/forms/event/recurring-when.php:10 +#: templates/forms/event/when-with-recurring.php:32 +msgid "This event repeats" +msgstr "Dit evenment is terugkerend" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Daily" +msgstr "Dagelijks" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Weekly" +msgstr "Wekelijks" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Monthly" +msgstr "Maandelijks" + +#: templates/forms/event/recurring-when.php:17 +#: templates/forms/event/when-with-recurring.php:39 +msgid "every" +msgstr "elke" + +#: templates/forms/event/recurring-when.php:20 +#: templates/forms/event/when-with-recurring.php:42 +msgid "day" +msgstr "dag" + +#: templates/forms/event/recurring-when.php:22 +#: templates/forms/event/when-with-recurring.php:44 +msgid "days" +msgstr "dagen" + +#: templates/forms/event/recurring-when.php:24 +#: templates/forms/event/when-with-recurring.php:46 +msgid "week on" +msgstr "week op" + +#: templates/forms/event/recurring-when.php:26 +#: templates/forms/event/when-with-recurring.php:48 +msgid "weeks on" +msgstr "weken op" + +#: templates/forms/event/recurring-when.php:28 +#: templates/forms/event/when-with-recurring.php:50 +msgid "month on the" +msgstr "maand op de" + +#: templates/forms/event/recurring-when.php:30 +#: templates/forms/event/when-with-recurring.php:52 +msgid "months on the" +msgstr "maanden op de" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "first" +msgstr "eerste" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "second" +msgstr "tweede" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "third" +msgstr "derde" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "fourth" +msgstr "vierde" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "last" +msgstr "laatste" + +#: templates/forms/event/recurring-when.php:48 +#: templates/forms/event/when-with-recurring.php:71 +msgid "of each month" +msgstr "van elke maand" + +#: classes/em-event-post-admin.php:179 +#: classes/em-event-post-admin.php:354 +#: classes/em-location-post-admin.php:109 +#: templates/forms/event-editor.php:93 +msgid "Where" +msgstr "Waar" + +#: templates/forms/event/location.php:28 +msgid "Location:" +msgstr "Locatie:" + +#: templates/forms/event/location.php:60 +msgid "Name:" +msgstr "Naam:" + +#: templates/forms/event/location.php:64 +msgid "Create a location or start typing to search a previously created location." +msgstr "Maak een locatie aan of begin met invoer om een eerder aangemaakte locatie te zoeken." + +#: templates/forms/event/location.php:65 +msgid "You cannot edit saved locations here." +msgstr "U kunt opgeslagen locaties hier niet bewerken." + +#: templates/forms/event/location.php:65 +msgid "Reset this form to create a location." +msgstr "Reset dit formulier om een locatie aan te maken." + +#: templates/forms/event/location.php:95 +#: templates/forms/location/where.php:32 +msgid "Region:" +msgstr "Regio:" + +#: templates/forms/event/location.php:110 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Door dit eerst in te vullen bent u in staat snel voorgaande provincies en regio's voor het land te vinden." + +#: templates/forms/event-editor.php:107 +msgid "Details about the event." +msgstr "Details over het evenement." + +#: templates/forms/event-editor.php:107 +#: templates/forms/location-editor.php:47 +msgid "HTML Allowed." +msgstr "HTML toegestaan." + +#: templates/forms/event-editor.php:116 +msgid "Category:" +msgstr "Categorie:" + +#: templates/forms/event-editor.php:190 +msgid "Submit Event" +msgstr "Evenement toevoegen" + +#: classes/em-event-post-admin.php:183 +#: classes/em-event-post-admin.php:356 +#: templates/forms/event-editor.php:180 +msgid "Bookings/Registration" +msgstr "Reserveringen/Registratie" + +#: templates/forms/event/bookings.php:8 +msgid "Enable registration for this event" +msgstr "Registratie voor dit evenement aanzetten" + +#: templates/forms/event/booking-stats.php:21 +msgid "manage bookings" +msgstr "reserveringen beheren" + +#: templates/forms/event/booking-stats.php:22 +msgid "printable view" +msgstr "printbare weergave" + +#: admin/em-bookings.php:98 +#: templates/forms/event/booking-stats.php:23 +msgid "export csv" +msgstr "Exporteer CSV" + +#: templates/forms/event/bookings.php:23 +msgid "Tickets" +msgstr "Plaatsbewijzen" + +#: templates/forms/event/bookings.php:29 +msgid "Ticket Name" +msgstr "Naam plaatsbewijs" + +#: templates/forms/event/bookings.php:31 +msgid "Min/Max" +msgstr "Min/Max" + +#: templates/forms/event/bookings.php:32 +msgid "Start/End" +msgstr "Start/Eind" + +#: templates/forms/event/bookings.php:33 +msgid "Avail. Spaces" +msgstr "Beschikbare plaatsen" + +#: admin/bookings/em-events.php:134 +#: templates/forms/event/bookings.php:34 +msgid "Booked Spaces" +msgstr "Geboekte plaatsen" + +#: templates/forms/event/bookings.php:41 +msgid "Add new ticket" +msgstr "Nieuw plaatsbewijs toevoegen" + +#: templates/forms/event/bookings.php:56 +msgid "Free" +msgstr "Gratis" + +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-rejected.php:113 +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:100 +#: templates/buddypress/group-events.php:134 +#: templates/buddypress/my-group-events.php:94 +#: templates/buddypress/my-group-events.php:128 +#: templates/forms/event/bookings.php:88 +#: templates/tables/events.php:103 +#: templates/tables/events.php:134 +msgid "Delete" +msgstr "Verwijderen" + +#: templates/forms/event/bookings.php:90 +msgid "View Bookings" +msgstr "Reserveringen bekijken" + +#: events-manager.php:255 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Weet u zeker dat u het schema wil aanpassen? alle reserveringsinformatie zal worden verwijderd!" + +#: events-manager.php:256 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Weet u zeker dat u reserveringen wilt uitschakelen? Als u dat doet en opslaat, zullen alle reserveringen uit het verleden verloren gaan. Wanneer u wilt voorkomen dat er nog gereserveerd wordt voor dit evenement, kunt u het aantal beschikbare plaatsen verminderen." + +#: templates/forms/tickets-form.php:2 +msgid "Create a ticket" +msgstr "Maak een plaatsbewijs aan" + +#: templates/forms/tickets-form.php:8 +msgid "Available ticket spaces" +msgstr "Beschikbare plaatsen" + +#: templates/forms/tickets-form.php:10 +msgid "Start date of ticket availability" +msgstr "Startdatum beschikbaarheid plaatsbewijzen" + +#: templates/forms/tickets-form.php:11 +msgid "End date of ticket availability" +msgstr "Einddatum beschikbaarheid plaatsbewijzen" + +#: templates/forms/tickets-form.php:12 +msgid "Minimum tickets required per booking" +msgstr "Minimaal aantal plaatsbewijzen benodigd per reservering" + +#: templates/forms/tickets-form.php:13 +msgid "Maximum tickets required per booking" +msgstr "Maximaal aantal plaatsbewijzen benodigd per reservering" + +#: templates/forms/tickets-form.php:19 +msgid "Add Ticket" +msgstr "Voeg plaatsbewijs toe" + +#: admin/em-ms-locations.php:29 +#: buddypress/screens/my-events.php:33 +#: buddypress/screens/my-locations.php:33 +msgid "Add New" +msgstr "Nieuwe toevoegen" + +#: em-events.php:129 +#: templates/tables/locations.php:8 +#, php-format +msgid "My %s" +msgstr "Mijn %s" + +#: admin/em-admin.php:45 +#: admin/em-ms-locations.php:28 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:399 +#: admin/em-options.php:594 +#: admin/em-options.php:595 +#: admin/em-options.php:935 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: classes/em-location-posts-admin.php:31 +#: em-actions.php:180 +#: em-install.php:386 +#: em-install.php:387 +#: em-install.php:685 +#: em-install.php:732 +#: em-posts.php:207 +#: em-posts.php:210 +#: em-posts.php:212 +#: templates/tables/locations.php:8 +#: templates/tables/locations.php:11 +msgid "Locations" +msgstr "Locaties" + +#: templates/tables/locations.php:11 +#, php-format +msgid "All %s" +msgstr "Alle %s" + +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:57 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-rejected.php:49 +#: templates/tables/locations.php:18 +msgid "Bulk Actions" +msgstr "Bulk acties" + +#: admin/bookings/em-events.php:58 +#: templates/tables/locations.php:19 +msgid "Delete selected" +msgstr "Verwijder geselecteerde" + +#: admin/bookings/em-events.php:60 +#: templates/tables/locations.php:21 +msgid "Apply" +msgstr "Toepassen" + +#: classes/em-location-posts-admin.php:40 +#: templates/tables/locations.php:35 +#: templates/tables/locations.php:44 +msgid "Address" +msgstr "Adres" + +#: classes/em-location-posts-admin.php:42 +#: templates/tables/locations.php:36 +#: templates/tables/locations.php:45 +msgid "State" +msgstr "Staat" + +#: admin/em-options.php:614 +#: admin/em-options.php:664 +#: admin/em-options.php:754 +#: classes/em-location-posts-admin.php:43 +#: templates/tables/locations.php:37 +#: templates/tables/locations.php:46 +msgid "Country" +msgstr "Land" + +#: admin/bookings/em-events.php:102 +#: templates/buddypress/group-events.php:44 +#: templates/buddypress/my-group-events.php:44 +#: templates/tables/events.php:53 +msgid "Date and time" +msgstr "Datum en tijd" + +#: em-install.php:532 +#: templates/buddypress/group-events.php:29 +#: templates/buddypress/my-group-events.php:29 +#: templates/buddypress/profile.php:19 +msgid "No Events" +msgstr "Geen evenementen" + +#: templates/buddypress/profile.php:37 +msgid "Not attending any events yet." +msgstr "Nog niet geboekt op een evenement" + +#: templates/tables/events.php:15 +msgid "Upcoming" +msgstr "Verwachte" + +#: admin/bookings/em-events.php:29 +#: templates/tables/events.php:19 +msgid "Past Events" +msgstr "Evenementen uit het verleden" + +#: em-posts.php:129 +#: templates/tables/events.php:22 +#: templates/tables/events.php:24 +msgid "Search Events" +msgstr "Zoek evenementen" + +#: admin/bookings/em-events.php:91 +msgid "no events" +msgstr "geen evenementen" + +#: admin/em-admin.php:38 +#: classes/em-event-posts-admin.php:136 +#: em-events.php:129 +#: templates/buddypress/group-events.php:91 +#: templates/buddypress/my-group-events.php:85 +#: templates/tables/events.php:94 +msgid "Bookings" +msgstr "Reserveringen" + +#: classes/em-event-posts-admin.php:137 +#: templates/buddypress/group-events.php:92 +#: templates/buddypress/my-group-events.php:86 +#: templates/tables/events.php:95 +#: templates/templates/bookings-event-printable.php:42 +msgid "Booked" +msgstr "Geboekt" + +#: templates/buddypress/group-events.php:105 +#: templates/buddypress/my-group-events.php:99 +#: templates/tables/events.php:108 +msgid "Duplicate this event" +msgstr "Dupliceer dit evenement" + +#: classes/em-event-posts-admin.php:144 +#: templates/buddypress/group-events.php:128 +#: templates/buddypress/my-group-events.php:122 +#: templates/tables/events.php:128 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "PAS OP! u verwijderd alle voorstellingen van dit evenement, inclusief reserveringsgeschiedenis met elk van deze voorstellingen. Om de reserveringsinformatie te behouden: ga naar de relevante voorstelling en sla het op om het los te koppelen van de voorstellingenserie." + +#: templates/templates/bookings-event-printable.php:21 +msgid "Bookings data" +msgstr "Reserveringsgegevens" + +#: admin/bookings/em-cancelled.php:86 +#: admin/bookings/em-confirmed.php:87 +#: admin/bookings/em-pending.php:104 +#: admin/bookings/em-rejected.php:86 +#: templates/templates/bookings-event-printable.php:26 +msgid "Phone number" +msgstr "Telefoonnummer" + +#: templates/templates/bookings-event-printable.php:47 +msgid "Available" +msgstr "Beschikbaar" + +#: templates/placeholders/locationmap.php:15 +#: templates/templates/map-global.php:15 +msgid "Loading Map...." +msgstr "Kaart wordt geladen ..." + +#: templates/templates/csv-event-bookings.php:16 +#, php-format +msgid "Booking details for \"%s\" as of %s" +msgstr "Reserveringsdetails voor \"%s\" vanaf %s" + +#: admin/em-bookings.php:103 +#: templates/templates/my-bookings.php:47 +msgid "Date" +msgstr "Datum" + +#: admin/bookings/em-person.php:88 +#: admin/em-bookings.php:246 +#: templates/templates/my-bookings.php:49 +msgid "Status" +msgstr "Status" + +#: templates/templates/my-bookings.php:75 +msgid "Are you sure you want to cancel your booking?" +msgstr "Weet u zeker dat u uw reservering wilt cancellen?" + +#: admin/em-options.php:130 +#: admin/em-options.php:147 +#: templates/templates/my-bookings.php:75 +msgid "Cancel" +msgstr "Cancel" + +#: templates/templates/my-bookings.php:91 +msgid "You do not have any bookings." +msgstr "U heeft geen enkele reservering." + +#: templates/templates/my-bookings.php:101 +#, php-format +msgid "Please Log In to view your bookings." +msgstr "Log In om uw reserveringen te bekijken." + +#: templates/templates/events-search.php:35 +msgid "between" +msgstr "tussen" + +#: em-install.php:313 +msgid "All Categories" +msgstr "Alle categorieën" + +#: em-install.php:315 +msgid "All Countries" +msgstr "Alle landen" + +#: em-install.php:317 +msgid "All Regions" +msgstr "Alle regio's" + +#: em-install.php:319 +msgid "All States" +msgstr "Alle staten" + +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: em-install.php:310 +#: events-manager.php:264 +msgid "Search" +msgstr "Zoeken" + +#: events-manager.php:266 +msgid "Loading..." +msgstr "Wordt geladen..." + +#: events-manager.php:265 +msgid "Searching..." +msgstr "Bezig met zoeken..." + +#: templates/placeholders/bookingbutton.php:2 +msgid "Book Now" +msgstr "Reserveer nu!" + +#: templates/placeholders/bookingbutton.php:3 +msgid "Booking..." +msgstr "Reserveren..." + +#: templates/placeholders/bookingbutton.php:4 +msgid "Booking Submitted" +msgstr "Reservering verzonden" + +#: templates/placeholders/bookingbutton.php:5 +msgid "Booking Error. Try again?" +msgstr "Fout bij het reserveren, nogmaals proberen?" + +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Kaart is niet beschikbaar" + +#: templates/placeholders/bookingform.php:11 +#, php-format +msgid "You are currently attending this event. Manage my bookings" +msgstr "U bent aanwezig bij dit evenement. Beheer mijn reserveringen" + +#: templates/placeholders/bookingform.php:13 +msgid "Online bookings are not available for this event." +msgstr "Online reserveren is niet mogelijk voor dit evenement." + +#: templates/placeholders/bookingform.php:15 +msgid "Bookings are closed for this event." +msgstr "Er kunnen voor dit evenement geen reserveringen meer worden gedaan." + +#: events-manager.php:250 +msgid "Please wait while the booking is being submitted." +msgstr "Even geduld, de reservering wordt verzonden." + +#: admin/em-options.php:40 +msgid "Changes saved." +msgstr "Wijzigingen zijn opgeslagen" + +#: admin/em-help.php:28 +#: admin/em-ms-options.php:52 +#: admin/em-options.php:167 +msgid "Event Related Placeholders" +msgstr "Evenement gerelateerde invoegcodes" + +#: admin/em-help.php:34 +#: admin/em-ms-options.php:53 +#: admin/em-options.php:168 +msgid "Location Related Placeholders" +msgstr "Locatie gerelateerde invoegcodes" + +#: admin/em-help.php:37 +#: admin/em-ms-options.php:54 +#: admin/em-options.php:169 +msgid "Booking Related Placeholders" +msgstr "Reserverings gerelateerde invoegcodes" + +#: admin/em-help.php:31 +#: admin/em-ms-options.php:55 +#: admin/em-options.php:170 +msgid "Category Related Placeholders" +msgstr "Categorie gerelateerde invoegcodes" + +#: admin/em-ms-options.php:56 +#: admin/em-options.php:171 +#, php-format +msgid "This accepts %s and %s placeholders." +msgstr "U kunt gebruik maken van %s en %s invoegcodes." + +#: admin/em-ms-options.php:57 +#: admin/em-ms-options.php:58 +#: admin/em-options.php:172 +#: admin/em-options.php:173 +#, php-format +msgid "This accepts %s placeholders." +msgstr "U kunt gebruik maken van %s invoegcodes." + +#: admin/em-ms-options.php:59 +#: admin/em-options.php:174 +#, php-format +msgid "This accepts %s, %s and %s placeholders." +msgstr "U kunt gebruik maken van %s, %s en %s invoegcodes." + +#: admin/em-ms-options.php:61 +#: admin/em-ms-options.php:200 +#: admin/em-options.php:177 +#: admin/em-options.php:1251 +msgid "Save Changes" +msgstr "Wijzigingen opslaan" + +#: admin/em-ms-options.php:61 +#: admin/em-options.php:177 +msgid "All" +msgstr "Alle" + +#: admin/em-ms-options.php:66 +#: admin/em-options.php:182 +msgid "Collapse All" +msgstr "Alles inklappen" + +#: admin/em-ms-options.php:67 +#: admin/em-options.php:183 +msgid "Expand All" +msgstr "Alles uitklappen" + +#: admin/em-ms-options.php:138 +#: admin/em-options.php:276 +msgid "Event Manager Options" +msgstr "Event Manager opties" + +#: admin/em-ms-options.php:148 +#: admin/em-options.php:287 +#: admin/em-options.php:370 +#: admin/em-options.php:392 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:703 +#: admin/em-options.php:793 +#: admin/em-options.php:825 +#: admin/em-options.php:847 +#: admin/em-options.php:869 +#: admin/em-options.php:893 +#: admin/em-options.php:909 +#: admin/em-options.php:932 +#: admin/em-options.php:961 +#: admin/em-options.php:989 +#: admin/em-options.php:1009 +#: admin/em-options.php:1024 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#: admin/em-options.php:1130 +#: admin/em-options.php:1162 +#: admin/em-options.php:1214 +#: admin/em-options.php:1272 +#: admin/em-options.php:1305 +#: admin/em-options.php:1327 +#: admin/em-options.php:1355 +#: admin/em-options.php:1460 +msgid "Click to toggle" +msgstr "Klik om aan/uit te zetten" + +#: admin/em-ms-options.php:148 +msgid "Multi Site Options" +msgstr "Opties bij meerdere sites" + +#: admin/em-ms-options.php:152 +msgid "Enable global tables mode?" +msgstr "Global tables mode toestaan" + +#: admin/em-ms-options.php:152 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Als u hier ja kiest worden alle evenmenten in de hoofd tabel opgeslagen (EM moet ook geactiveerd zijn). Hierdoor kunt u evementen delen over verschillende blogs, zoals het weergeven van de evenementen in uw netwerk en daarmee gebruikers de mogelijkheid geven hun evenementen te beheren in hun eigen blog. Houd er rekening mee dat wanneer u deze optie actieveert dat oude evenementen die op sub-blogs zijn aangemaakt niet meer beschikbaar zijn, en dat wanneer u terug gaat naar de oude situatie de nieuwe evenementen aangemaakt in global events mode alleen op de site blijven staan." + +#: admin/em-ms-options.php:163 +msgid "Display global events on main blog?" +msgstr "Geef globale evenementen op het hoofdblog weer?" + +#: admin/em-options.php:341 +msgid "Use dropdown for locations?" +msgstr "Dropdown voor locaties gebruiken?" + +#: admin/em-options.php:341 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Selecteer 'ja' om de locatie uit een dropdown lijst te selecteren. Hiermee vervalt de mogelijkheid om locaties toe te voegen bij evenementen" + +#: admin/em-options.php:297 +msgid "Select yes to enable the recurrence features feature" +msgstr "Selecteer ja om de herhalingsopties te gebruiken" + +#: admin/em-options.php:298 +msgid "Enable bookings?" +msgstr "Reserveringen toestaan?" + +#: admin/em-options.php:298 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Selecteer 'ja' om reserveringen voor evenementen toe te staan." + +#: admin/em-options.php:301 +msgid "Select yes to enable the category features" +msgstr "Selecteer ja om de categorie-opties aan te zetten" + +#: admin/em-options.php:313 +msgid "Select yes to enable the attributes feature" +msgstr "Selecteer ja om de attributen-optie aan te zetten" + +#: admin/em-options.php:305 +msgid "no default category" +msgstr "geen standaard categorie" + +#: admin/em-options.php:310 +msgid "Default Category" +msgstr "Standaard categorie" + +#: admin/em-options.php:310 +msgid "This option allows you to select the default category when adding an event." +msgstr "Met deze optie kunt u de standaard categorie keizen als u een evenement toevoegd." + +#: admin/em-options.php:326 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(nog niet beschikbaar met evenementseigendom, komt snel!)" + +#: admin/em-options.php:321 +msgid "no default location" +msgstr "Geen standaard locatie" + +#: admin/em-options.php:326 +msgid "Default Location" +msgstr "Standaard locatie" + +#: admin/em-options.php:326 +msgid "This option allows you to select the default location when adding an event." +msgstr "Met deze optie kunt u de standaard locatie kiezen als u een evenement toevoegd." + +#: admin/em-options.php:329 +msgid "Default Location Country" +msgstr "Standaard locatie land" + +#: admin/em-options.php:329 +msgid "no default country" +msgstr "Geen standaard land" + +#: admin/em-options.php:329 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Als u een standaard land selecteerd wordt deze voorgesteld bij het maken van een nieuwe locatie." + +#: admin/em-options.php:316 +msgid "Event Attributes" +msgstr "Evenement attributen" + +#: admin/em-options.php:316 +#, php-format +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "U kunt hier ook evenement eigenschappen toevoegen, één per regel in deze opmaak #_ATT{key}. Deze verschijnen niet op de evenementpagina's mits u ze invoegt in een template hieronder, maar u kunt extra informatie teovoegen voor andere gebruikers. Meer informatie over invoegcodes." + +#: admin/em-options.php:350 +msgid "Show some love?" +msgstr "Toon respect voor de makers?" + +#: admin/em-options.php:350 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Er zijn honderden uren besteed aan het maken van deze gratis plugin, laat uw steun blijken en voeg een kleine link naar de plugin website toe aan de evenementenpagina's." + +#: admin/em-options.php:440 +msgid "Events page" +msgstr "Evenementen pagina" + +#: admin/em-options.php:445 +msgid "Show events page in lists?" +msgstr "Evenementen-pagina in lijsten weergeven?" + +#: admin/em-options.php:445 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Kies 'ja' als u wilt dat evenementenpagina samen met de andere pagina's in de paginalijsten getoond wordt (in in het menu)." + +#: admin/em-options.php:446 +msgid "Display calendar in events page?" +msgstr "Kalender op de evenentenpagina weergeven?" + +#: admin/em-options.php:446 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Met deze optie wordt een kalender op de evenementenpagina weergegeven, in plaats van de lijst met eveneten. Wij raden af om de kalender en de widget samen te gebruiken." + +#: admin/em-options.php:446 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Als je evenementen wilt laten zien die over meer dan één dag lopen bekijk dan het Kalender gedeelte op deze pagina." + +#: admin/em-options.php:447 +msgid "Disable title rewriting?" +msgstr "Titel herschrijven uitzetten?" + +#: admin/em-options.php:448 +msgid "Event Manager titles" +msgstr "Evenement manager titels" + +#: admin/em-options.php:448 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Deze optie heeft alleen nut als u hierboven 'ja' hebt ingevuld. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." + +#: admin/em-options.php:568 +msgid "Event List Limits" +msgstr "Limiet van evenementenlijst" + +#: admin/em-options.php:568 +msgid "This will control how many events are shown on one list by default." +msgstr "Hiermee stelt u in hoeveel evenementen er standaard op één lijst worden getoond." + +#: admin/em-options.php:501 +msgid "Are current events past events?" +msgstr "Huidige evenementen als voorbij beschouwen?" + +#: admin/em-options.php:501 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Standaard worden evenementen die een latere startdatum hebben dan 'vandaag' in een zoekopdracht meegenomen. Kies ja om evenementen die 'gisteren' zijn gestart als voorbij aan te merken." + +#: admin/em-options.php:449 +msgid "Show events search?" +msgstr "Evenementen zoeken tonen?" + +#: admin/em-options.php:449 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Als u hier ja kiest wordt er boven uw evenementlijst een zoekformulier opgenomen." + +#: admin/em-options.php:511 +msgid "Default event list ordering" +msgstr "Standaard sortering van de evenementenlijst" + +#: admin/em-options.php:516 +msgid "Order by start date, start time, then event name" +msgstr "Sorteer op startdatum, starttijd en vervolgens op evenementnaam" + +#: admin/em-options.php:517 +msgid "Order by name, start date, then start time" +msgstr "Sorteer op naam, startdatum en vervolgens op starttijd" + +#: admin/em-options.php:518 +msgid "Order by name, end date, then end time" +msgstr "Sorteer op naam, einddatum en vervolgens op starttijd" + +#: admin/em-options.php:519 +msgid "Order by end date, end time, then event name" +msgstr "Sorteren op einddatum, eindtijd en vervolgens op evenementnaam" + +#: admin/em-options.php:533 +msgid "All Ascending" +msgstr "Alles oplopend" + +#: admin/em-options.php:536 +msgid "All Descending" +msgstr "Alles aflopend" + +#: admin/em-options.php:490 +#: admin/em-options.php:550 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "Als Events Manager een lijst evenementen toont wordt deze gesorteerd op startdatum (oplopend). Pas de sortering aan door bovenstaande waarden." + +#: admin/em-options.php:554 +msgid "Event list scope" +msgstr "Evenementenlijst omvang" + +#: admin/em-options.php:564 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Kies hierboven of u alleen evenementen binnen een bepaalde tijdslimiet wilt tonen op de evenemetenpagina. Standaard is alle evenementen zonder limiet." + +#: admin/em-options.php:847 +msgid "Events format" +msgstr "Opmaak evenementen" + +#: admin/em-options.php:850 +#: admin/em-options.php:935 +#: admin/em-options.php:964 +#, php-format +msgid "%s Page" +msgstr "%s pagina" + +#: admin/em-options.php:852 +msgid "Default event list format header" +msgstr "Opmaak voor de header van de lijst" + +#: admin/em-options.php:852 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Dit zal worden getoond boven de code voor de standaard evenementenlijst." + +#: admin/em-options.php:853 +msgid "Default event list format" +msgstr "Standaard opmaak voor lijst" + +#: admin/em-options.php:853 +msgid "The format of any events in a list." +msgstr "De opmaak van elk evenement in een lijst." + +#: admin/em-options.php:854 +msgid "Default event list format footer" +msgstr "Opmaak van de voettekst van een evenementenlijst" + +#: admin/em-options.php:854 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Deze tekst zal onder de code van de standaard evenementenlijst verschijnen." + +#: admin/em-options.php:855 +msgid "No events message" +msgstr "Geen evenement bericht" + +#: admin/em-options.php:855 +msgid "The message displayed when no events are available." +msgstr "Het bericht dat wordt weergegeven wanneer geen evenementen beschikbaar zijn." + +#: admin/em-options.php:856 +msgid "List events by date title" +msgstr "Evenementen per datum en titel sorteren" + +#: admin/em-options.php:856 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
                          " +msgstr "Wanneer u een pagina met evenementen op een specifieke dag bekijkt, wordt deze titel gebruikt. Gebruik PHP tijd opmaak karrakters met een #teken ervoor, bijv. #m, #M, #j, etc.
                          " + +#: admin/em-options.php:858 +#: admin/em-options.php:942 +#: admin/em-options.php:971 +#: admin/em-options.php:992 +#, php-format +msgid "Single %s Page" +msgstr "Enkele %s pagina" + +#: admin/em-options.php:860 +msgid "Single event page title format" +msgstr "Opmaak voor de titel van een pagina met een enkel evenement" + +#: admin/em-options.php:860 +msgid "The format of a single event page title." +msgstr "Opmaak voor de titel van een pagina met een enkel evenement." + +#: admin/em-options.php:861 +msgid "Default single event format" +msgstr "Standaard opmaak van een evenement" + +#: admin/em-options.php:861 +msgid "The format of a single event page." +msgstr "Opmaak voor een pagina met een enkel evenement." + +#: admin/em-options.php:909 +msgid "Calendar format" +msgstr "Kalender opmaak" + +#: admin/em-options.php:913 +msgid "Small calendar title" +msgstr "Kleine kalender titel" + +#: admin/em-options.php:913 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "De opmaak van de tekst die verschijnt wanneer de muisaanwijzer over een dag met een evenement gaat." + +#: admin/em-options.php:914 +msgid "Small calendar title separator" +msgstr "Kleine kalender titel scheidingsteken" + +#: admin/em-options.php:914 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "Het scheidingsteken dat boven de titel staan wanneer meer dan een evenementen op dezelfde dag plaatsvinden" + +#: admin/em-options.php:915 +msgid "Full calendar events format" +msgstr "opmaak voor volledige kalender evenementen" + +#: admin/em-options.php:915 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "De opmaak die wordt gebruikt wanneer een evenement volledig wordt weergegeven in de kalender. Vergeet niet om de li tags voor en na het evenement te zetten." + +#: admin/em-options.php:916 +msgid "Show long events on calendar pages?" +msgstr "Toon langlopende evenemeten in de kalender pagina's?" + +#: admin/em-options.php:916 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Als u een kalender op de evenementpagina opneemt (zie Evenementen opmaak elders op deze pagina) heeft u de optie om evenementen voor meerdere dagen weer te geven die op elke dag getoond worden." + +#: admin/em-options.php:917 +msgid "Show list on day with single event?" +msgstr "Laat de lijst zien op een dag met een enkel evenement?" + +#: admin/em-options.php:917 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Standaard wordt, wanneer een kalenderdag slechts één evenement bevat een link naar dat evenement getoond. Wanneer u hier 'ja' kiest wordt er altijd een lijst met evenementen getoond." + +#: admin/em-options.php:920 +msgid "iCal Feed Settings" +msgstr "iCal Feed instellingen" + +#: admin/em-options.php:922 +msgid "iCal Title" +msgstr "iCal titel" + +#: admin/em-options.php:922 +msgid "The title that will appear in the calendar." +msgstr "De titel die in de kalender getoond wordt." + +#: admin/em-options.php:923 +msgid "iCal Limit" +msgstr "iCal limiet" + +#: admin/em-options.php:923 +msgid "Limits the number of future events shown (0 = unlimited)." +msgstr "Beperkt het aantal getoonde toekomstige evenementen (0 = geen limiet)." + +#: admin/em-options.php:932 +msgid "Locations format" +msgstr "Locatie opmaak" + +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "%s list header format" +msgstr "%s lijst kop opmaak" + +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Deze inhoud wordt getoond boven uw code voor de %s lijst opmaak hieronder. Standaardwaarde is leeg" + +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "%s list item format" +msgstr "%s lijst evenementregels opmaak" + +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "The format of a single %s in a list." +msgstr "De weergave van een enkel %s in een lijst." + +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "%s list footer format" +msgstr "%s lijst voettekst opmaak " + +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Deze inhoud wordt getoond onder uw code voor de %s lijst opmaak hierboven. Standaardwaarde is leeg" + +#: admin/em-options.php:940 +#: admin/em-options.php:951 +#: admin/em-options.php:969 +#: admin/em-options.php:979 +#: admin/em-options.php:1000 +#, php-format +msgid "No %s message" +msgstr "Geen %s bericht" + +#: admin/em-options.php:940 +#: admin/em-options.php:969 +#, php-format +msgid "The message displayed when no %s are available." +msgstr "Het bericht dat wordt weergegeven als er geen %s beschikbaar zijn." + +#: admin/em-options.php:944 +#: admin/em-options.php:973 +#: admin/em-options.php:994 +#, php-format +msgid "Single %s title format" +msgstr "Titelopmaak voor pagina's met een enkele %s" + +#: admin/em-options.php:944 +msgid "The format of a single location page title." +msgstr "Titel opmaak voor een pagina met een enkele locatie." + +#: admin/em-options.php:945 +#: admin/em-options.php:974 +#: admin/em-options.php:995 +#, php-format +msgid "Single %s page format" +msgstr "Opmaak van een %s pagina met een enkel evenement." + +#: admin/em-options.php:945 +msgid "The format of a single location page." +msgstr "Opmaak voor een pagina met een enkele locatie." + +#: admin/em-options.php:946 +msgid "Default location balloon format" +msgstr "Standaard locatie ballon opmaak" + +#: admin/em-options.php:946 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "Opmaak van de tekst in de ballon op een pagina met een enkele locatie." + +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#, php-format +msgid "%s List Formats" +msgstr "%s Lijst opmaak" + +#: admin/em-options.php:950 +#: admin/em-options.php:978 +#: admin/em-options.php:999 +#, php-format +msgid "Default %s list format" +msgstr "Standaard %s lijst opmaak" + +#: admin/em-ms-options.php:163 +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-options.php:418 +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:502 +#: admin/em-options.php:950 +#: admin/em-options.php:951 +#: admin/em-options.php:978 +#: admin/em-options.php:979 +#: admin/em-options.php:999 +#: admin/em-options.php:1000 +#: admin/em-options.php:1366 +#: admin/em-options.php:1367 +#: admin/em-options.php:1368 +#: admin/em-options.php:1369 +#: admin/em-options.php:1370 +#: admin/em-options.php:1371 +#: events-manager.php:295 +#: events-manager.php:296 +#: events-manager.php:297 +#: events-manager.php:298 +#: events-manager.php:299 +#: events-manager.php:300 +msgid "events" +msgstr "evenementen" + +#: admin/em-options.php:950 +msgid "The format of the events the list inserted in the location page through the #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS element." +msgstr "Opmaak van de evenementenlijst in de locatiepagina met #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS en #_LOCATIONALLEVENTS element." + +#: admin/em-options.php:951 +msgid "The message to be displayed in the list generated by #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS when no events are available." +msgstr "Dit bericht wordt in de lijst getoond bij <#_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS en #_LOCATIONALLEVENTS wanneer geen evenementen beschikbaar zijn." + +#: admin/em-options.php:961 +msgid "Categories format" +msgstr "Opmaak categorieën " + +#: admin/em-options.php:707 +#: admin/em-options.php:708 +#: admin/em-options.php:964 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: em-install.php:416 +#: em-install.php:418 +#: em-install.php:697 +#: em-install.php:747 +msgid "Categories" +msgstr "Categorieën" + +#: admin/em-options.php:973 +msgid "The format of a single category page title." +msgstr "De opmaak van een enkele categorie paginatitel" + +#: admin/em-options.php:974 +msgid "The format of a single category page." +msgstr "De opmaak van een pagina met een enkele categorie." + +#: admin/em-options.php:978 +msgid "The format of the events the list inserted in the category page through the #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." +msgstr "Opmaak van de evenementenlijst in de categoriepagina met het #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." + +#: admin/em-options.php:979 +msgid "The message to be displayed in the list generated by #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS when no events are available." +msgstr "Het bericht dat in de lijst getoond wordt bij #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS> wanneer geen evenementen beschikbaar zijn." + +#: admin/em-options.php:1009 +msgid "RSS feed format" +msgstr "RSS feed opmaak" + +#: admin/em-options.php:1013 +msgid "RSS main title" +msgstr "RSS titel" + +#: admin/em-options.php:1013 +msgid "The main title of your RSS events feed." +msgstr "De algemene titel van uw RSS feed" + +#: admin/em-options.php:1014 +msgid "RSS main description" +msgstr "Omschrijving van uw RSS feed" + +#: admin/em-options.php:1014 +msgid "The main description of your RSS events feed." +msgstr "De omschrijving van uw RSS feed" + +#: admin/em-options.php:1015 +msgid "RSS title format" +msgstr "opmaak van uw RSS titel" + +#: admin/em-options.php:1015 +msgid "The format of the title of each item in the events RSS feed." +msgstr "De opmaak van de titel van ieder evenement in de RSS feed" + +#: admin/em-options.php:1016 +msgid "RSS description format" +msgstr "Opmaak van de omschrijving in de RSS feed" + +#: admin/em-options.php:1016 +msgid "The format of the description of each item in the events RSS feed." +msgstr "De opmaak van de omschrijving van ieder evenement in de RSS feed." + +#: admin/em-options.php:1024 +msgid "Maps and geotagging" +msgstr "Kaarten en geotagging" + +#: admin/em-options.php:1029 +msgid "Enable Google Maps integration?" +msgstr "Google Maps integratie aanzetten?" + +#: admin/em-options.php:1033 +msgid "Check this option to enable Goggle Map integration." +msgstr "Zet deze optie aan om Google Maps integratie aan te zetten" + +#: admin/em-options.php:1037 +msgid "Map text format" +msgstr "Opmaak van tekst in de kaart" + +#: admin/em-options.php:1037 +msgid "The text format inside the map balloons." +msgstr "De opmaak binnen tekstballonnen op de kaart." + +#: admin/em-options.php:1055 +msgid "Approval Required?" +msgstr "Goedkeuring vereist?" + +#: admin/em-options.php:1055 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "De reserveringen zijn niet bevestigd totdat de evenementsbeheerder deze goedkeurt." + +#: admin/em-options.php:1072 +msgid "Currency" +msgstr "Valuta" + +#: admin/em-options.php:1072 +msgid "Choose your currency for displaying event pricing." +msgstr "Kies uw valuta voor het weergeven van de evenementsprijs." + +#: admin/em-options.php:1112 +msgid "Single ticket mode?" +msgstr "Eén plaatsbewijs modus instellen?" + +#: admin/em-options.php:1112 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "In enkele plaatsbewijs modus kunnen gebruikers maar één plaatsbewijs per reservering aanmaken (en krijgen niet de mogelijkheid om meer plaatsbewijzen toe te voegen)." + +#: admin/em-options.php:1113 +msgid "Show ticket table in single ticket mode?" +msgstr "De plaatsbewijstabel in één plaatsbewijs modus tonen?" + +#: admin/em-options.php:1113 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Als u de voorkeur heeft aan een plaatsbewijstabel zoals bij meerdere plaatsbewijzen, ook als er maar één plaatsbwijs is, schakel dan deze optie in." + +#: admin/em-options.php:1114 +msgid "Show unavailable tickets?" +msgstr "Toon niet beschikbare plaatsbewijzen?" + +#: admin/em-options.php:1114 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Kies hier of u de of u de niet beschikbare plaatsbewijzen wel of niet aan de bezoekers wilt laten zien." + +#: admin/em-options.php:1056 +msgid "Reserved unconfirmed spaces?" +msgstr "Onbevestigde plaatsen gereserveerd?" + +#: admin/em-options.php:1056 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Standaard worden plaatsen voor een evenement onbeschikbaar als er genoeg bevestigde reserveringen zijn. Kies 'ja' om plaatsen te reserveren, ook al zijn ze niet bevestigd." + +#: admin/em-options.php:1115 +msgid "Show multiple tickets if logged out?" +msgstr "Meerdere plaatsbewijzen laten zien wanneer gebruiker is uitgelogd?" + +#: admin/em-options.php:1115 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Als een gebruiker is uitgelogd dan wordt gevraagd om te registreren om te kunnen reserveren. U kunt er wel voor kiezen beschikbare plaatsbewijzten te tonen als er meerdere zijn." + +#: admin/em-options.php:1058 +msgid "Allow overbooking when approving?" +msgstr "Overreservering toestaan bij het goedkeuren?" + +#: admin/em-options.php:1058 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Als u veel lopende reserveringen heeft en u besluit om meer reserveringen toe te laten dan er plaatsen zijn, kies hier dan ja zodat u de plaatslimiet kunt overschrijden bij het handmatig goedkeuren." + +#: admin/em-options.php:1087 +msgid "Allow guest bookings?" +msgstr "Reserveringen van gasten (niet geregistreerd) toestaan?" + +#: admin/em-options.php:1087 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Indien ingeschakeld kunnen gastengebruikers een emailadres invoeren, een gebruikersaccount wordt dan automatisch aangemaakt bij het reserveren. Zij hebben de mogelijkheid om later weer in te loggen met dit nieuw gemaakte account." + +#: admin/em-options.php:1059 +msgid "Allow double bookings?" +msgstr "Dubbele reserveringen toestaan?" + +#: admin/em-options.php:1059 +msgid "If enabled, users can book an event more than once." +msgstr "Indien ingeschakeld kunnen gebruikers een evenement meerdere keren reserveren." + +#: admin/em-options.php:1088 +msgid "Display login form?" +msgstr "Het loginformulier weergeven?" + +#: admin/em-options.php:1088 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Kies of u het loginscherm wilt weergeven in het reserveringsformulier om gebruikers eraan te herinneren in te loggen voor het reserveren." + +#: admin/em-options.php:1090 +msgid "Booking form feedback messages" +msgstr "Reserveringsformulier antwoordberichten." + +#: admin/em-options.php:1091 +msgid "When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below." +msgstr "Als een gebruiker heeft geboekt wordt een terugkoppeling getoond afhankelijk van het resultaat. Deze boodschap kan hieronder worden aangepast." + +#: admin/em-options.php:1093 +msgid "Successful booking" +msgstr "Succesvolle reservering" + +#: admin/em-options.php:1093 +msgid "When a booking is registered and confirmed." +msgstr "Als een reservering is geregistreerd en bevestigd." + +#: admin/em-options.php:1094 +msgid "Successful pending booking" +msgstr "Reservering is in behandeling" + +#: admin/em-options.php:1094 +msgid "When a booking is registered but pending." +msgstr "Als een reservering is geregistreerd maar in behandeling." + +#: admin/em-options.php:1095 +msgid "Not enough spaces" +msgstr "Niet voldoende plaatsen" + +#: admin/em-options.php:1095 +msgid "When a booking cannot be made due to lack of spaces." +msgstr "Als een reservering niet kan worden verricht vanwege te weinig plaatsen." + +#: admin/em-options.php:1096 +msgid "Errors" +msgstr "Fouten" + +#: admin/em-options.php:1096 +msgid "When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors." +msgstr "Als een reservering niet kan worden gemaakt door een fout bij het invullen van het formulier. Hieronder een foutenlijst." + +#: admin/em-options.php:1097 +msgid "User must log in" +msgstr "Gebruiker moet inloggen" + +#: admin/em-options.php:1097 +msgid "When a user must log in before making a booking." +msgstr "Als een gebruiker moet inloggen voordat een reservering gemaakt kan worden." + +#: admin/em-options.php:1098 +msgid "Error mailing user" +msgstr "Fout bij het e-mailen van de gebruiker" + +#: admin/em-options.php:1098 +msgid "If a booking is made and an email cannot be sent, this is added to the success message." +msgstr "Als een reservering is verricht en een e-mail kan niet verzonden worden, dit wordt toegevoegd aan het succesvol bericht." + +#: admin/em-options.php:1099 +msgid "Already booked" +msgstr "Al geboekt" + +#: admin/em-options.php:1099 +msgid "If the user made a previous booking and cannot double-book." +msgstr "Als de gebruiker al een eerder geboekt heeft en niet dubbel kan reserveren." + +#: admin/em-options.php:1100 +msgid "No spaces booked" +msgstr "Geen plaatsen geboekt" + +#: admin/em-options.php:1100 +msgid "If the user tries to make a booking without requesting any spaces." +msgstr "Als een gebruiker probeert te reserveren zonder het aantal plaatsen op te geven." + +#: admin/em-options.php:1162 +msgid "Booking Email Templates" +msgstr "Reservering e-mail templates" + +#: admin/em-options.php:1166 +msgid "Default contact person" +msgstr "Standaard contactpersoon" + +#: admin/em-options.php:1166 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Selecteer de standaard contactpersoon. Deze gebruiker zal gewaarschuwd worden wanneer geen specifiek contactpersoon voor een evenement is aangewezen." + +#: admin/em-options.php:1167 +msgid "Email events admin?" +msgstr "E-mail naar evenementsbeheerder?" + +#: admin/em-options.php:1167 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Als u wilt dat alle bevestigingsmail naar een beheerder worden gestuurd voer dan hier het e-mailadres in (laat leeg als er geen e-mail gestuurd moet worden)" + +#: admin/em-options.php:1168 +msgid "Email contact person?" +msgstr "E-mail naar contactpersoon?" + +#: admin/em-options.php:1168 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Zet deze optie aan als u wilt dat de evenements contactpersoon een email ontvangt wanneer iemand plaatsen boekt. Er wordt een e-mail verstuurd als een reservering gemaakt wordt (ongeacht of deze bevestigd is of wacht op goedkeur)" + +#: admin/em-options.php:1169 +msgid "Disable new registration email?" +msgstr "Nieuwe registratie e-mail uitschakelen?" + +#: admin/em-options.php:1171 +msgid "Contact person booking confirmed" +msgstr "Contactpersoon reservering goedgekeurd" + +#: admin/em-options.php:1172 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "Er wordt een e-mail verzonden naar de contactpersoon voor het evenement als een reservering voor het eerst is aangemaakt." + +#: admin/em-options.php:1174 +msgid "Contact person email subject" +msgstr "Contactpersoon e-mail onderwerp" + +#: admin/em-options.php:1175 +msgid "Contact person email" +msgstr "Contactpersoon e-mail tekst" + +#: admin/em-options.php:1177 +msgid "Contact person booking cancelled" +msgstr "Contactpersoon reservering gecancelled" + +#: admin/em-options.php:1178 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Er wordt een e-mail verzonden naar de contactpersoon voor het evenement als iemand zijn reservering intrekt." + +#: admin/em-options.php:1180 +msgid "Contact person cancellation subject" +msgstr "Contactpersoon cancelbericht onderwerp" + +#: admin/em-options.php:1181 +msgid "Contact person cancellation email" +msgstr "Contactpersoon cancelbericht tekst" + +#: admin/em-options.php:1183 +msgid "Confirmed booking email" +msgstr "Reserveringsbevestiging e-mail" + +#: admin/em-options.php:1184 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Deze wordt gestuurd als een reservering is goedgekeurd. Deze wordt automatisch verzonden als goedkeuring is vereist en gegeven. Als goedkeuring is uitgeschakeld dan wordt de e-mail verzonden als een gebruiker een reservering maakt." + +#: admin/em-options.php:1186 +msgid "Booking confirmed email subject" +msgstr "Reserveringsbevestigings e-mail onderwerp" + +#: admin/em-options.php:1187 +msgid "Booking confirmed email" +msgstr "Reserveringsbevestigings e-mail tekst" + +#: admin/em-options.php:1189 +msgid "Pending booking email" +msgstr "Reservering in behandeling e-mail" + +#: admin/em-options.php:1190 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Deze wordt verstuurd als een gebruiker een reservering maakt. Niet van toepassing voor reserveringen die geen goedkeur behoeven." + +#: admin/em-options.php:1192 +msgid "Booking pending email subject" +msgstr "Reservering in behandeling e-mail onderwerp" + +#: admin/em-options.php:1193 +msgid "Booking pending email" +msgstr "Reservering wordt verwerkt e-mail" + +#: admin/em-options.php:1195 +msgid "Rejected booking email" +msgstr "Afgewezen reservering e-mail" + +#: admin/em-options.php:1196 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Deze wordt automatisch verzonden als een reservering is afgewezen. Niet van toepassing voor reserveringen die geen goedkeur behoeven." + +#: admin/em-options.php:1198 +msgid "Booking rejected email subject" +msgstr "Afgewezen reservering e-mail onderwerp" + +#: admin/em-options.php:1198 +msgid "The subject of the email sent to the person making a booking that is awaiting administrator approval. Not relevant if bookings don't require approval." +msgstr "Het onderwerp van de e-mail die aan de gebruiker wordt gestuurd die wacht op goedkeuring door de beheerder. Niet van toepassing voor reserveringen die geen goedkeur behoeven." + +#: admin/em-options.php:1199 +msgid "Booking rejected email" +msgstr "Reservering afgewezen e-mail" + +#: admin/em-options.php:1199 +msgid "The body of the email which will be sent to the person if the booking is rejected. Not relevant if bookings don't require approval." +msgstr "De tekst van de email die gestuurd wordt waarvan een reservering is afgewezen. Niet van toepassing voor reserveringen die geen goedkeur behoeven." + +#: admin/em-options.php:1202 +msgid "This will be sent when a user cancels their booking." +msgstr "Deze wordt gestuurd als een gebruiker een reservering intrekt." + +#: admin/em-options.php:1204 +msgid "Booking cancelled email subject" +msgstr "Ingetrokken reservering e-mail onderwerp" + +#: admin/em-options.php:1205 +msgid "Booking cancelled email" +msgstr "Reservering verwijderdt e-mail" + +#: admin/em-options.php:1327 +msgid "Email Settings" +msgstr "Email instellingen" + +#: admin/em-options.php:1332 +msgid "Notification sender name" +msgstr "Naam van afzender van het bericht" + +#: admin/em-options.php:1332 +msgid "Insert the display name of the notification sender." +msgstr "Voer de naam in van de afzender van het bericht." + +#: admin/em-options.php:1333 +msgid "Notification sender address" +msgstr "Adres van afzender notificatie" + +#: admin/em-options.php:1333 +msgid "Insert the address of the notification sender." +msgstr "Voer het e-mail adres van de afzender van het bericht." + +#: admin/em-options.php:1334 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "De poort die gebruikt wordt voor email notificaties." + +#: admin/em-options.php:1335 +msgid "Mail sending method" +msgstr "Mail verzend methode" + +#: admin/em-options.php:1335 +msgid "PHP mail function" +msgstr "PHP mail functie" + +#: admin/em-options.php:1335 +msgid "Select the method to send email notification." +msgstr "Selecteer de methode die gebruikt wordt om email te verzenden" + +#: admin/em-options.php:1336 +msgid "Use SMTP authentication?" +msgstr "SMTP authenticatie gebruiken?" + +#: admin/em-options.php:1336 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "Vaak is authentificatie nodig voor SMTP. Zet op 'ja' wanneer u GMail gebruikt" + +#: admin/em-options.php:1337 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "De SMTP host. vaak is het 'localhost'. Bij gebruik van GMail: 'ssl://smtp.gmail.com:465'." + +#: admin/em-options.php:1338 +msgid "SMTP username" +msgstr "SMTP gebruikersnaam" + +#: admin/em-options.php:1338 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Voer de gebruikersnaam in voor uw SMTP server." + +#: admin/em-options.php:1339 +msgid "SMTP password" +msgstr "SMTP wachtwoord" + +#: admin/em-options.php:1339 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Voer het wachtwoord in dat nodig is voor uw SMTP server" + +#: admin/em-options.php:1309 +msgid "Maximum width (px)" +msgstr "Maximum breedte (pixels)" + +#: admin/em-options.php:1309 +msgid "The maximum allowed width for images uploades" +msgstr "De maximaal toelaatbare breedte voor afbeeldingen" + +#: admin/em-options.php:1310 +msgid "Maximum height (px)" +msgstr "Maximum hoogte (pixels)" + +#: admin/em-options.php:1310 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "De maximaal toegestane hoogte van afbeeldingen in pixels" + +#: admin/em-options.php:1311 +msgid "Maximum size (bytes)" +msgstr "Maximum bestandsgrootte (bytes)" + +#: admin/em-options.php:1311 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "De maximale bestandsgrootte van afbeeldingen, in bytes" + +#: admin/em-options.php:1355 +msgid "User Capabilities" +msgstr "Gebruikers rechten/mogelijkheden" + +#: admin/em-options.php:1359 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Waarschuwing: Het aanpassen van deze waarden lijdt ertoe dat eerder verborgen informatie aan alle gebruikers wordt getoond." + +#: admin/em-options.php:1405 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "U kunt aangeven wat gebruikers wl en niet mogen met een evenement. Elke gebruikersrol kan verschillende regels hebben." + +#: admin/em-options.php:1398 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "Gebruiker kan reserveringen en evenementsinstelligen van andere gebruikers beheren." + +#: admin/em-options.php:1399 +msgid "User can use and manage bookings with their events." +msgstr "Gebruiker kan reserveringen beheren voor zijn evenementen." + +#: admin/em-options.php:1287 +msgid "Allow anonymous event submissions?" +msgstr "Sta anonieme evenementeninvoer toe?" + +#: admin/em-options.php:1287 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Wilt u de mogelijkheid dat gebruikers anoniem evenementen kunnen toevoegen? Indien u dit wilt kunt u de nieuwe [event_form] afkorting of em_event_form() gebruiken waarbij dit is ingeschakeld." + +#: admin/em-options.php:1288 +msgid "Guest Default User" +msgstr "Gast standaard gebruiker" + +#: admin/em-options.php:1281 +#: admin/em-options.php:1289 +msgid "Success Message" +msgstr "Succesvol bericht" + +#: admin/em-options.php:1289 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Anonieme toevoegers kunnen het evenement niet zien of aanpassen zodra dit ingegeven is. U kunt het succesvol toegevoegd bericht dat zij zien hier aanpassen." + +#: admin/em-bookings.php:59 +msgid "Event Bookings Dashboard" +msgstr "Evenement reserveringen dashboard" + +#: admin/em-bookings.php:63 +#: admin/em-bookings.php:114 +#: admin/em-bookings.php:166 +msgid "Pending Bookings" +msgstr "Reserveringen in behandeling" + +#: admin/em-bookings.php:66 +msgid "Events With Bookings Enabled" +msgstr "Evenementen waarbij boekignen mogelijk zijn" + +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +msgid "You do not have the rights to manage this event." +msgstr "U heeft niet de rechten dit evenement te beheren." + +#: admin/em-bookings.php:93 +#, php-format +msgid "Manage %s Bookings" +msgstr "Beheer %s reserveringen" + +#: admin/em-bookings.php:94 +#: admin/em-bookings.php:148 +msgid "View/Edit Event" +msgstr "Evenement bekijken/aanpassen" + +#: admin/em-bookings.php:101 +msgid "Availability" +msgstr "Beschikbaarheid" + +#: admin/em-bookings.php:101 +msgid "Spaces confirmed" +msgstr "Bevestigde plaatsen" + +#: admin/em-bookings.php:117 +#: admin/em-bookings.php:169 +msgid "Confirmed Bookings" +msgstr "Bevestigde reserveringen" + +#: admin/em-bookings.php:119 +#: admin/em-bookings.php:171 +msgid "Rejected Bookings" +msgstr "Afgewezen reserveringen" + +#: admin/em-bookings.php:121 +#: admin/em-bookings.php:173 +msgid "Cancelled Bookings" +msgstr "Gecancelde reserveringen" + +#: admin/em-bookings.php:137 +msgid "You do not have the rights to manage this ticket." +msgstr "U heeft niet de rechten om dit plaatsbewijs aan te passen." + +#: admin/em-bookings.php:147 +#, php-format +msgid "Ticket for %s" +msgstr "Plaatsbewijzen voor %s" + +#: admin/em-bookings.php:149 +msgid "View Event Bookings" +msgstr "Bekijk reserveringen" + +#: admin/em-bookings.php:158 +msgid "Min" +msgstr "Min" + +#: admin/em-bookings.php:159 +msgid "Max" +msgstr "Max" + +#: admin/em-bookings.php:160 +msgid "Start" +msgstr "Start" + +#: admin/em-bookings.php:161 +msgid "End" +msgstr "Eind" + +#: admin/em-bookings.php:198 +msgid "Edit Booking" +msgstr "Reservering bewerken" + +#: admin/em-bookings.php:206 +msgid "Event Details" +msgstr "Evenement details" + +#: admin/em-bookings.php:217 +msgid "Date/Time" +msgstr "Datum en tijd" + +#: admin/em-bookings.php:229 +#: admin/em-bookings.php:389 +msgid "Personal Details" +msgstr "Persoonlijke details" + +#: admin/em-bookings.php:237 +msgid "Booking Details" +msgstr "Reserveringsdetails" + +#: admin/em-bookings.php:283 +msgid "Totals" +msgstr "Totalen" + +#: admin/em-bookings.php:302 +msgid "Modify Booking" +msgstr "Pas reservering aan" + +#: admin/em-bookings.php:307 +msgid "Note: ticket availability not taken into account (i.e. you can overbook). Confirmation email is not resent automatically." +msgstr "Let op: er wordt geen rekening gehouden met het aantal beschikbare plaatsbewijzen (u kunt overreserveren). Bevestigings e-mail wordt niet automatisch opnieuw verzonden." + +#: admin/em-bookings.php:323 +msgid "Booking Notes" +msgstr "Reserveringsnotities" + +#: admin/em-bookings.php:326 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "U kunt hieronder privéopmerkingen kwijt die alleen door andere evenementbeheerders kunnen worden gezien." + +#: admin/em-bookings.php:331 +msgid "wrote" +msgstr "schreef" + +#: admin/em-bookings.php:377 +msgid "Manage Person's Booking" +msgstr "Beheer reserveringen van deze persoon" + +#: admin/em-bookings.php:379 +msgid "Edit User" +msgstr "Gebruiker bewerken" + +#: admin/em-bookings.php:400 +msgid "Past And Present Bookings" +msgstr "Vroegere en huidige reserveringen" + +#: admin/em-admin.php:124 +#, php-format +msgid "

                          Events Manager is ready to go! It is highly recommended you read the Getting Started guide on our site, as well as checking out the Settings Page. Dismiss

                          " +msgstr "

                          Events Manager is klaar om te starten! Lees eerst de Getting Started op onze site, en de Instellingen. Uitschakelen

                          " + +#: admin/em-admin.php:179 +#, php-format +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Deze pagina hoort bij de Events manager evenementenpagina. De inhoud zal worden overschreven door Events manager. Indien u echter het woord CONTENTS (exact gelijk in kapitalen) invoegt en hieromhee andere tekst plaatst wordt alleen CONTENTS overschreven. Als u de manier waarop uw evenementen worden weergegeven wilt aanpassen gan dan naar de Instellingen pagina." + +#: em-functions.php:74 +#, php-format +msgid "Displaying %s–%s of %s" +msgstr "Toont %s–%s van %s" + +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +msgid "Approve" +msgstr "Goedkeuren" + +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-rejected.php:55 +msgid "Decline" +msgstr "Afwijzen" + +#: admin/bookings/em-cancelled.php:84 +#: admin/bookings/em-confirmed.php:85 +#: admin/bookings/em-pending.php:99 +#: admin/bookings/em-rejected.php:84 +msgid "Booker" +msgstr "Reserveerder" + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Terugzetten" + +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-rejected.php:112 +msgid "Edit/View" +msgstr "Aanpassen" + +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Geen gecancelde reserveringen." + +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +msgid "Unapprove" +msgstr "Niet goedkeuren" + +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +msgid "Reject" +msgstr "Afwijzen" + +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +msgid "No confirmed bookings." +msgstr "Geen bevestigde reserveringen." + +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Geen afgewezen reserveringen." + +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Geen reserveringen in behandeling" + +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Alle evenementen" + +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Aankomende evenementen" + +#: admin/bookings/em-events.php:51 +msgid "Total" +msgstr "Totaal" + +#: admin/bookings/em-events.php:72 +msgid "Filter" +msgstr "Filter" + +#: admin/em-options.php:615 +#: admin/em-options.php:665 +#: admin/em-options.php:755 +#: classes/em-location-posts-admin.php:41 +msgid "Town" +msgstr "Plaats" + +#: admin/em-admin.php:41 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Hulp nodig bij Events Manager" + +#: admin/em-help.php:25 +msgid "Placeholders for customizing event pages" +msgstr "Invoegcodes voor het aanpasen van evenementenpagina's" + +#: admin/em-help.php:26 +#, php-format +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "Op de instellingen pagina, vind u verschillende tekstvelden waar u kunt aanpassen hoe de evenement informatie getoond wordt. Door gebruik te mkaen van de plaatsmarkeringen hieronder kunt u kiezen welke informatie wordt getoond." + +#: admin/em-admin.php:90 +#: classes/em-people.php:28 +msgid "Events Manager" +msgstr "Events Manager" + +#: em-functions.php:213 +msgid "Mon" +msgstr "Maa" + +#: em-functions.php:213 +msgid "Tue" +msgstr "Din" + +#: em-functions.php:213 +msgid "Wed" +msgstr "Woe" + +#: em-functions.php:213 +msgid "Thu" +msgstr "Don" + +#: em-functions.php:213 +msgid "Fri" +msgstr "Vrij" + +#: em-functions.php:213 +msgid "Sat" +msgstr "Zat" + +#: em-functions.php:213 +msgid "Sun" +msgstr "Zon" + +#: classes/em-event-post-admin.php:192 +#: classes/em-event-post-admin.php:359 +#: classes/em-event-post-admin.php:365 +msgid "Group Ownership" +msgstr "Groeps eigendom" + +#: classes/em-event-post-admin.php:185 +msgid "Bookings Stats" +msgstr "Statistieken reserveringen" + +#: templates/forms/event/booking-stats.php:12 +msgid "Available Spaces" +msgstr "Beschikbare plaatsen" + +#: templates/forms/event/booking-stats.php:13 +msgid "Confirmed Spaces" +msgstr "Bevestigde plaatsen" + +#: templates/forms/event/booking-stats.php:14 +msgid "Pending Spaces" +msgstr "Plaatsen die wachten op goedkeur" + +#: templates/forms/event/booking-stats.php:32 +msgid "No responses yet!" +msgstr "Nog geen reacties" + +#: classes/em-event-post-admin.php:246 +#, php-format +msgid "No categories available, create one here first" +msgstr "Geen categorieen beschikbaar, maak eerst een categorie aan" + +#: templates/forms/event-editor.php:169 +msgid "No image uploaded for this event yet" +msgstr "Er is nog geen afbeelding voor dit evenement ge-upload" + +#: classes/em-event-post-admin.php:189 +#: classes/em-event-post-admin.php:362 +msgid "Attributes" +msgstr "Attributen" + +#: templates/forms/event/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "U heeft geen eigen attributen gedefinieerd in een van uw Events Manager template instellingen. Voeg deze a.u.b. toe op de instellingen pagina" + +#: templates/forms/event/attributes.php:50 +msgid "Depreciated Attributes" +msgstr "Gebruikte attributen" + +#: templates/forms/event/attributes.php:83 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings to add attribute placeholders." +msgstr "Om attributen te kunnen gebruiken dient u deze te definieren in uw sjabloon. Ga naar Evenementen > Instellingen om invoegcodes toe te voegen." + +#: em-install.php:284 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_NAME on #F #j, #Y. He wants to reserve #_BOOKINGSPACES spaces.
                          Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                          Yours faithfully,
                          Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) will #_NAME on #F #j, #Y bijwonen en wil #_BOOKINGSPACES plaatsen reserveren.
                          Er zijn nu #_BOOKEDSPACES plaatsen gereserveerd, #_AVAILABLESPACES zijn nog beschikbaar.
                          Met vriendelijke groet,
                          Uw reserveringssite." + +#: em-install.php:284 +#: em-install.php:285 +#: em-install.php:286 +#: em-install.php:287 +#: em-install.php:288 +#: em-install.php:289 +#: em-install.php:290 +#: em-install.php:291 +msgid "

                          -------------------------------
                          Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

                          -------------------------------
                          Powered by Events Manager - http://wp-events-plugin.com" + +#: em-install.php:285 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_NAME on #F #j, #Y. He wanted to reserve #_BOOKINGSPACES spaces.
                          Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                          Yours faithfully,
                          Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) heeft de reservering voor #_NAME on #F #j, #Y ingetrokken. De reservering was voor #_BOOKINGSPACES plaatsen.
                          Er zijn nu #_BOOKEDSPACES plaatsen gereserveerd, #_AVAILABLESPACES zijn nog beschikbaar.
                          Met vriendelijke groet,
                          Uw reserveringssite." + +#: em-install.php:286 +msgid "Dear #_BOOKINGNAME,
                          you have successfully reserved #_BOOKINGSPACES space/spaces for #_NAME.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Beste #_BOOKINGNAME,
                          wij hebben u reservering voor #_BOOKINGSPACES plaatsen voor #_NAME ontvangen.
                          Met vriendelijke groet,
                          #_CONTACTNAME" + +#: em-install.php:287 +msgid "Dear #_BOOKINGNAME,
                          You have requested #_BOOKINGSPACES space/spaces for #_NAME.
                          Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Beste #_BOOKINGNAME,
                          U heeft verzocht om reservering van #_BOOKINGSPACES plaats(en) voorr #_NAME.
                          Uw reservering is in behandeling en wacht op goedkeur van de beheerder. Zodra uw reservering is goedgekeurd ontvangt u een automatische bevestiging.
                          Met vriendelijke groet,
                          #_CONTACTNAME" + +#: em-install.php:288 +msgid "Dear #_BOOKINGNAME,
                          Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been rejected.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Beste #_BOOKINGNAME,
                          De door u verzochte reservering voor#_BOOKINGSPACES plaatsen voor #_NAME op #F #j, #Y is afgewezen.
                          Met vriendelijke groet,
                          #_CONTACTNAME" + +#: em-install.php:289 +msgid "Dear #_BOOKINGNAME,
                          Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been cancelled.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Beste #_BOOKINGNAME,
                          De door u verzochte reservering voor #_BOOKINGSPACES plaatsen voor #_NAME op #F #j, #Y is gecancelled.
                          Met vriendelijke groet,
                          #_CONTACTNAME" + +#: em-install.php:379 +#: em-install.php:387 +#: em-install.php:418 +#, php-format +msgid "No %s" +msgstr "Geen %s" + +#: em-debug.php:18 +#: em-install.php:406 +msgid "
                        • No events in this location
                        • " +msgstr "
                        • Geen evenementen op deze locatie
                        • " + +#: em-install.php:419 +msgid "
                        • No events in this category
                        • " +msgstr "
                        • Geen evenementen in deze categorie
                        • " + +#: em-install.php:487 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Reservering succesvol, wacht op bevestiging (u ontvang een e-mail zodra de reservering goedgekeurd is)." + +#: em-install.php:488 +msgid "Booking successful." +msgstr "Reservering gelukt" + +#: em-install.php:490 +msgid "You must log in or register to make a booking." +msgstr "U moet inloggen of registreren om een reservering ge kunnen plaatsen." + +#: em-install.php:491 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "Er waren problemen bij het verzenden van bevestigingsmail naar u en/of het contactpersoon. Mogelijk kunt u direct contact opnemen met hun, en hun op de hoogte stellen van deze fout." + +#: em-install.php:492 +msgid "Booking could not be created" +msgstr "Reservering kon niet worden aangemaakt" + +#: em-install.php:493 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Dit e-mail adres bestaat al in ons systeem, log a.u.b. in om te registreren en door te gaan met uw reservering." + +#: em-install.php:494 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Er is een nieuw gebruikersaccount voor u aangamaakt. Controleer u e-mail voor toegangsgegevens." + +#: em-install.php:495 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Er is iets foutgegaan met het aanmaken van een gebruikersaccount, neem contact op met de websitebeheerder." + +#: em-install.php:496 +msgid "You already have booked a seat at this event." +msgstr "U heeft al een plaats voor de evenement gereserveerd." + +#: em-install.php:497 +msgid "You must request at least one space to book an event." +msgstr "U moet minimaal één plaats kiezen om te kunnen reserveren." + +#: em-install.php:504 +#: em-install.php:512 +msgid "Booking Cancelled" +msgstr "Reserveringen verwijderd" + +#: em-install.php:506 +msgid "Booking Pending" +msgstr "Reservering in behandeling" + +#: em-install.php:508 +msgid "Booking Rejected" +msgstr "Reservering afgewezen" + +#: em-install.php:510 +msgid "Booking Confirmed" +msgstr "Reservering bevestigd" + +#: em-install.php:515 +msgid "Powered by" +msgstr "Powered by" + +#: em-install.php:516 +msgid "Bookings - #_NAME" +msgstr "Reserveringen - #_NAME" + +# @ default +#: em-debug.php:44 +#, php-format +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "U werkt in de Events Manager foutenopspoor modus. Om de foutenopspoormodus uit te schakelen, ga naar de instellingen pagina." + +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "Geen plaatsbewijs ID opgegeven" + +#: em-actions.php:181 +#, php-format +msgid "%s successfully deleted" +msgstr "%s succesvol verwijderd" + +#: em-actions.php:358 +#, php-format +msgid "Booking %s" +msgstr "Reservering %s" + +#: events-manager.php:295 +#: events-manager.php:303 +#: events-manager.php:309 +#, php-format +msgid "You do not have permission to publish %s" +msgstr "U heeft geen rechten om %s te publiceren" + +#: events-manager.php:299 +#: events-manager.php:307 +#: events-manager.php:313 +#: events-manager.php:319 +#, php-format +msgid "You do not have permission to edit %s" +msgstr "U heeft geen rechten om %s te wijzigen" + +#: events-manager.php:296 +#: events-manager.php:304 +#: events-manager.php:310 +#, php-format +msgid "You do not have permission to delete others %s" +msgstr "U heeft geen rechten om %s van anderen te verwijderen" + +#: events-manager.php:298 +#: events-manager.php:306 +#: events-manager.php:312 +#, php-format +msgid "You do not have permission to edit others %s" +msgstr "U heeft geen rechten om %s van anderen te wijzigen" + +#: events-manager.php:292 +#, php-format +msgid "You do not have permission to manage others %s" +msgstr "U heeft geen rechten om %s van anderen te beheren" + +#: admin/em-options.php:835 +#: events-manager.php:292 +#: events-manager.php:293 +msgid "bookings" +msgstr "reserveringen" + +#: events-manager.php:297 +#: events-manager.php:305 +#: events-manager.php:311 +#: events-manager.php:318 +#, php-format +msgid "You do not have permission to delete %s" +msgstr "U heeft geen rechten om %s te verwijderen" + +#: events-manager.php:293 +#, php-format +msgid "You do not have permission to manage %s" +msgstr "U heeft geen rechten om %s te beheren" + +#: admin/em-options.php:402 +#: admin/em-options.php:703 +#: em-posts.php:66 +#: em-posts.php:69 +msgid "Event Categories" +msgstr "Evenement categorieën" + +#: admin/em-admin.php:40 +msgid "Events Manager Settings" +msgstr "Instellingen van Events Manager" + +#: admin/em-admin.php:40 +#: admin/em-admin.php:199 +#: admin/em-admin.php:207 +msgid "Settings" +msgstr "Instellingen" + +#: admin/em-admin.php:41 +msgid "Help" +msgstr "Help" + +#: admin/em-bookings.php:289 +msgid "Tax" +msgstr "Btw." + +#: admin/em-bookings.php:294 +msgid "Total (inc. tax)" +msgstr "Totaal (incl. btw)" + +#: templates/forms/event/bookings.php:24 +msgid "You can have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "U kunt enkele of meerdere plaatsbewijzen hebben waarbij sommige plaatsbewijzen beschikbaar komen onder bepaalde voorwaarden zoals vroegboeking, groepskorting, maximaal aantal reserveringen per plaatsbewijs enz." + +#: templates/forms/event/bookings.php:24 +msgid "Basic HTML is allowed in ticket labels and descriptions." +msgstr "Basis HTML is toegestaan in omschrijving van plaatsbewijzen." + +#: admin/em-options.php:1117 +msgid "Ticket Price (Descending)" +msgstr "Prijs plaatsbewijs (aflopend)" + +#: admin/em-options.php:1118 +msgid "Ticket Price (Ascending)" +msgstr "Prijs plaatsbewijs (oplopend)" + +#: admin/em-options.php:1119 +msgid "Ticket Name (Ascending)" +msgstr "Naam plaatsbewijs (oplopend)" + +#: admin/em-options.php:1120 +msgid "Ticket Name (Descending)" +msgstr "Naam plaatsbewijs (aflopend)" + +#: admin/em-options.php:1057 +msgid "Can users cancel their booking?" +msgstr "Kunnen gebruikers hun reservering cancellen?" + +#: admin/em-options.php:1057 +msgid "If enabled, users can cancel their bookings themselves from their bookings page." +msgstr "Indien ingeschakeld kunnen gebruikers zelf hun reservering intrekken op hun reserveringspagina." + +#: admin/em-options.php:1073 +msgid "Tax Rate" +msgstr "Btw tarief" + +#: admin/em-options.php:1073 +msgid "Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price)." +msgstr "Voeg een BTW tarief aan uw plaatsbewijzen toe (voer 19 in om 19% aan de prijs toe te voegen)" + +#: admin/em-options.php:1074 +msgid "Add tax to ticket price?" +msgstr "Btw toevoegen aan de prijs van het plaatsbewijs?" + +#: admin/em-options.php:1074 +msgid "When displaying ticket prices and booking totals, include the tax automatically?" +msgstr "Prijs incl. btw automatisch toevoegen in plaatsbewijsprijzen en reserveringstotalen?" + +#: admin/em-options.php:1122 +msgid "Order Tickets By" +msgstr "Bestel plaatsbewijzen bij" + +#: admin/em-options.php:1122 +msgid "Choose which order your tickets appear." +msgstr "Kies in welke volgorde uw plaatsbewijzen worden getoond." + +#: admin/em-options.php:1130 +msgid "No-User Booking Mode" +msgstr "Geen gebruik maken van gebruikersaccounts bij reservering" + +#: admin/em-options.php:1134 +msgid "By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them." +msgstr "Standaard wordt een reservering gekoppeld aan een gebruikersaccount. Als de gebruiker niet is geregistreerd of ingelogd, en gastreserveringen zijn toegestaan, dan automatisch een account voor hen aangemaakt." + +#: admin/em-options.php:1136 +msgid "Warning : Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information." +msgstr "Waarschuwing : Verschillende opties voor gebruikers met een account zullen niet mogelijk zijn, bijv. reserveringen inzien. Als u dit inschakelt en een gebruiker selecteerd resulteerd het aanpassen van deze waarde erin dat oudere niet gebruikers reserveringen verkeerde informatie weergeven." + +#: admin/em-options.php:1139 +msgid "Enable No-User Booking Mode?" +msgstr "Gebruik van gebruikersaccounts uitschakelen?" + +#: admin/em-options.php:1139 +msgid "This disables user registrations for bookings." +msgstr "Hierdoor wordt gebruikersregistratie voor reserveringen uitgeschakeld." + +#: admin/em-options.php:1145 +msgid "Assign bookings to" +msgstr "Registreer reserveringen bij gebruiker:" + +#: admin/em-options.php:1214 +msgid "Event Email Templates" +msgstr "Evenement e-mail templates" + +#: admin/em-options.php:1224 +#: em-install.php:333 +msgid "Event Approved" +msgstr "Evenement goedgekeurd" + +#: admin/em-options.php:1225 +msgid "An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the publish_events capability." +msgstr "Er wordt een e-mail gestuurd naar de eigenaar van het evenemnt als hun evenement is goedgekeurd. Gebruikers die goedkeuring nodig hebben beschiken niet over de publish_events mogelijkheid." + +#: admin/em-options.php:1221 +#: admin/em-options.php:1227 +msgid "Event approved subject" +msgstr "Evenement goedgekeurd onderwerp" + +#: admin/em-options.php:1222 +#: admin/em-options.php:1228 +msgid "Event approved email" +msgstr "Evenement goedgekeurd email tekst" + +#: classes/em-booking.php:376 +#: classes/em-booking.php:384 +msgid "Guest User" +msgstr "Gastgebruiker" + +#: classes/em-booking.php:380 +msgid "Not Supplied" +msgstr "Niet opgegeven" + +#: classes/em-ticket.php:157 +msgid "Please enter a valid ticket price e.g. 10.50 (no currency signs)" +msgstr "Geef een geldige prijs voor het plaatsbewijs bijv 10,50 (geen Euroteken)" + +#: em-install.php:290 +msgid "Dear #_CONTACTNAME,
                          Your event #_NAME on #F #j, #Y has been approved.
                          You can view your event here: #_EVENTURL" +msgstr "Beste #_CONTACTNAME,
                          Uw evenement #_NAME op #F #j, #Y is goedgekeurd.
                          U kunt uw evenement hier bekijken: #_EVENTURL" + +#: templates/placeholders/bookingform.php:17 +msgid "This event is fully booked." +msgstr "Dit evenement is vol geboekt" + +#: admin/em-admin.php:91 +msgid "Update Blogs" +msgstr "Blogs bijwerken" + +#: admin/em-admin.php:139 +#, php-format +msgid "Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Ahum! Om één of andere reden kon Wordpress de evenementen pagina niet voor u aanmaken (of u hebt het verwijderd). Geen zorgen, maak gewoon een lege pagina aan (naam maakt niet uit) en selecteer deze als uw evenementenpagina in de instellingen pagina. Excuses voor deze extra stap. Wellicht heeft u dit bewust gedaan. In dat geval kunt u dit bericht negeren" + +#: admin/em-admin.php:148 +msgid "There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update." +msgstr "Er is een nieuwere versie van Event Manager Pro die vereist is voor deze versie van Events Manager. Bezoek de plugin website en download de laatste update." + +#: admin/em-admin.php:159 +#, php-format +msgid "MultiSite options have moved here. Dismiss message" +msgstr "MultiSite opties zij verplaatst naar hier. Verwijder bericht" + +#: admin/em-admin.php:171 +#, php-format +msgid "Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" +msgstr "Ondanks dat ze nog steeds verschijnen bij gebruik van plaatscodes moet u de plaats van uw afbeeldigen aanpassen om ze in nieuwe formulieren en media bibliotheek te laten verschijnen. Verwijder bericht" + +#: admin/em-admin.php:213 +#: admin/em-options.php:1463 +msgid "Uninstall" +msgstr "Deinstalleer" + +#: admin/em-ms-options.php:6 +msgid "Update Network" +msgstr "Netwerk bijwerken" + +# @ default +#: admin/em-ms-options.php:24 +msgid "To update your network blogs with the latest Events Manager automatically, click the update button below." +msgstr "Om uw blogs automatisch te updaten met de nieuwste Events Manager, klik de onderstaande knop." + +#: admin/em-ms-options.php:27 +msgid "Update" +msgstr "Bijwerken" + +#: admin/em-ms-options.php:136 +#: admin/em-options.php:267 +#: admin/em-options.php:1051 +msgid "General" +msgstr "Algemeen" + +# @ default +#: admin/em-ms-options.php:157 +#, php-format +msgid "%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network." +msgstr "%s behoren tot andere sub-sites hebben een extra slug zodat de hoofdsite het verschil kan bepalen tussen zijn eigen %s en die van andere sites in uw netwerk." + +#: admin/em-ms-options.php:158 +#, php-format +msgid "When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site." +msgstr "Wanner u globale %s op de hoofdsite weergeeft heeft u de optie om gebruikers de %s details te bekijken of door te leiden naar de sub-site." + +#: admin/em-ms-options.php:159 +#, php-format +msgid "Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Geef standaard %s van alle sites in het netwerk. U kunt nog steeds %s blokkeren per blog door gebruik te maken van shortcodes en template tags tezamen met de blog atribute. Globale tabellen moet daarvoor aan staan." + +# @ default +#: admin/em-ms-options.php:160 +#, php-format +msgid "You must have assigned a %s page in your main blog settings for this to work." +msgstr "U moet een %s pagina toegewezen hebben in de basisinstellingen voordat dit functioneerd." + +#: admin/em-ms-options.php:162 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#, php-format +msgid "%s Options" +msgstr "%s opties" + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:173 +#, php-format +msgid "Link sub-site %s directly to sub-site?" +msgstr "Kopel sub-site %s direct aan sub-site?" + +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, php-format +msgid "Global %s slug" +msgstr "Globale %s slug" + +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +msgid "Example:" +msgstr "Voorbeeld:" + +#: admin/em-ms-options.php:167 +msgid "Locations on main blog?" +msgstr "Locaties op de hoofdblog?" + +#: admin/em-ms-options.php:167 +msgid "If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog." +msgstr "Als u wilt dat al uw locaties tot uw hooftblog dan zijn gebruikers van sub-sites nog steeds in staat locaties aan te maken maar de actuele" + +#: admin/em-ms-options.php:172 +#, php-format +msgid "Display global %s on main blog?" +msgstr "Toon globale %s op hoofd blog?" + +#: admin/em-options.php:112 +msgid "Settings have been reset back to default. Your events, locations and categories have not been modified." +msgstr "De standaardinstellingen zijn teruggezet. Uw evenementen, locaties en categorieen zijn niet aangepast." + +#: admin/em-options.php:125 +#: admin/em-options.php:129 +msgid "Reset Events Manager" +msgstr "Reset Events Manager" + +#: admin/em-options.php:126 +msgid "Are you sure you want to reset Events Manager?" +msgstr "Weet u zeker dat u Events Manger wilt resetten?" + +#: admin/em-options.php:127 +msgid "All your settings, including email templates and template formats for Events Manager will be deleted." +msgstr "Al uw instellignen, inclusief e-mail templates en layouttemplates voor Event Manager zullen verwijderd worden." + +#: admin/em-options.php:141 +msgid "Uninstall Events Manager" +msgstr "Deinstalleer Events Manager" + +#: admin/em-options.php:142 +msgid "Are you sure you want to uninstall Events Manager?" +msgstr "Weet u zeker dat u Events Manager wilt deinstalleren>" + +#: admin/em-options.php:143 +msgid "All your settings and events will be permanently deleted. This cannot be undone." +msgstr "Al uw instellingen worden permanent vewijderd. Dit kan niet ongedaan worden gemaakt." + +#: admin/em-options.php:144 +#, php-format +msgid "If you just want to deactivate the plugin, go to your plugins page." +msgstr "Als u de plugin alleen wilt deactiveren, ga dan naar uw plugin pagina." + +#: admin/em-options.php:146 +msgid "Uninstall and Deactivate" +msgstr "Deinstalleren en deactiveren" + +# @ default +#: admin/em-options.php:268 +#: admin/em-options.php:418 +#: admin/em-options.php:581 +msgid "Pages" +msgstr "Pagina's" + +#: admin/em-options.php:269 +msgid "Formats/Layouts" +msgstr "Opmaak/layout" + +#: admin/em-options.php:271 +msgid "Booking Options" +msgstr "Reservering opties" + +#: admin/em-options.php:273 +msgid "Emails" +msgstr "E-mails" + +#: admin/em-options.php:287 +msgid "General Options" +msgstr "Algemene opties" + +#: admin/em-options.php:290 +msgid "Disable thumbnails?" +msgstr "Thumbnails uitschakelen?" + +#: admin/em-options.php:290 +msgid "Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here)." +msgstr "Selecteer ja om thumbnails voor Events Manager uit te schakelen (andere thema's hebben dit mogelijk ingeschakeld, die kunnen hier niet uitgeschakeld worden)" + +#: admin/em-options.php:293 +#: admin/em-options.php:334 +#: admin/em-options.php:346 +#, php-format +msgid "%s Settings" +msgstr "%s instellingen" + +#: admin/em-options.php:297 +msgid "Enable recurrence?" +msgstr "Voorstellingenreeksen toestaan?" + +#: admin/em-options.php:299 +msgid "Enable tags?" +msgstr "steekwoorden inschakelen?" + +#: admin/em-options.php:299 +msgid "Select yes to enable the tag features" +msgstr "Selecteer 'ja' om steekwoorden (tags) te kunnen gebruiken" + +#: admin/em-options.php:301 +msgid "Enable categories?" +msgstr "Categorieën gebruiken?" + +#: admin/em-options.php:310 +msgid "If an event does not have a category assigned when editing, this one will be assigned automatically." +msgstr "Als een evenement geen categorie heeft toegewezen gekregen, dan word deze er automatisch aan toegewezen." + +#: admin/em-options.php:313 +msgid "Enable event attributes?" +msgstr "Attributen gebruiken?" + +#: admin/em-options.php:314 +msgid "Enable event custom fields?" +msgstr "Aangepaste velden voor evenementen toestaan?" + +#: admin/em-options.php:314 +msgid "Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area." +msgstr "Aangepaste velden zijn het zelfde als attributen alleen kunt u geen specifieke waarden kiezen. Gebruikers kunnen alle mogelijke namen of waarden toevoegen. Alleen zichtbaar in de Wordpress admin." + +#: admin/em-options.php:338 +msgid "Enable locations?" +msgstr "Locaties gebruiken?" + +#: admin/em-options.php:338 +msgid "If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats." +msgstr "Indien u locaties uitschakelt denk er dan aan uw locatiepagina uit te schakelen en evt. locatiegerelateerde invoegcodes uit uw layouts te halen." + +#: admin/em-options.php:340 +msgid "Require locations for events?" +msgstr "Is een locatie benodigd voor evenementen?" + +#: admin/em-options.php:340 +msgid "Setting this to no will allow you to submit events without locations. You can use the {no_location}...{/no_location} or {has_location}..{/has_location} conditional placeholder to selectively display location information." +msgstr "Wanneer u hier nee kiest kunt u evenementen zonder locatie toevogen. U kunt de {no_location}...{/no_location} of {has_location}..{/has_location} gebruiken om selectief locatieinformatie op te geven." + +#: admin/em-options.php:346 +#: admin/em-options.php:825 +#: admin/em-options.php:1393 +msgid "Other" +msgstr "Anderen" + +#: admin/em-options.php:387 +msgid "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter." +msgstr "Veel thema's tonen extra meta informatie zoals 'posted by' en 'post date' die mogelijk niet nodig zijn. Pagina's bevatten over het algemeen minder vervuiling." + +#: admin/em-options.php:388 +#, php-format +msgid "Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named single-%s.php as shown on the wordpress codex, and leave this set to Posts." +msgstr " Wees erop bedacht dat sommige thema's niet werken met deze optie. Als dit het geval is (of je wilt eigen aanpassingen) kun je een bestand genaamd single-%s.php zoals weergegeven in de wordpress codex aanmaken en deze instellingen op 'berichten' laten staan." + +# @ default +#: admin/em-options.php:389 +#, php-format +msgid "By using formats, you can control how your %s are displayed from within the Events Manager Formats tab above without having to edit your theme files." +msgstr "Bij het gebruik van opmaak heeft u controle voer de wijze waarop uw %s worden weergegeven in de Events Manager Opmaak tab hierboven zonder dat u de themabestanden aan hoeft te passen." + +#: admin/em-options.php:392 +msgid "Permalink Slugs" +msgstr "Permalink Slugs" + +#: admin/em-options.php:394 +msgid "You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings." +msgstr "U kunt de permalinkstructuur van uw evenementen, locaties, categorieen en steekwoorden hier veranderen. Wees u ervan bewust dat u verwijzigen moet opzetten als u de permalink structuur aanpast om SEO rankings te behouden." + +#: admin/em-options.php:397 +#: admin/em-options.php:399 +#: admin/em-options.php:402 +#: admin/em-options.php:405 +#, php-format +msgid "e.g. %s - you can use / seperators too" +msgstr "bijv. %s - u kunt ook / scheidingstekens gebruiken" + +#: admin/em-options.php:405 +#: admin/em-options.php:793 +#: em-posts.php:29 +#: em-posts.php:32 +msgid "Event Tags" +msgstr "Evenementen steekwoorden" + +#: admin/em-options.php:414 +#: admin/em-options.php:577 +#: admin/em-options.php:825 +#, php-format +msgid "%s Pages" +msgstr "%s pagina's" + +#: admin/em-options.php:418 +#: admin/em-options.php:581 +#, php-format +msgid "Display %s as" +msgstr "Geef %s weer als" + +# @ default +#: admin/em-options.php:418 +#: admin/em-options.php:581 +msgid "Posts" +msgstr "Posts" + +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:582 +#: admin/em-options.php:649 +#: admin/em-options.php:721 +#: admin/em-options.php:797 +msgid "Override with Formats?" +msgstr "Overschrijven met opmaak?" + +#: admin/em-options.php:427 +#: admin/em-options.php:590 +#, php-format +msgid "%s List/Archives" +msgstr "%s lijsten/archieven" + +#: admin/em-options.php:435 +#: admin/em-options.php:594 +#: admin/em-options.php:707 +#, php-format +msgid "[No %s Page]" +msgstr "[Geen %s pagina]" + +#: admin/em-options.php:440 +msgid "This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags." +msgstr "Deze optie maakt het mogelijk te kiezen welke pagina als evenementenpagina wordt gebruikt. Als u geen evenementpagina selecteert om evenementen weer te geven kunt u evenement archief inschakelen of gebruik maken van de juiste codes of template tags." + +#: admin/em-options.php:447 +msgid "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Bij sommige wordpress thema's is het genereren van navigatiemenu's niet goed geregeld, waardoor de automatische titelherschrijf functie voor problemen kan zorgen. Wanneer uw menu's niet correct werken op de evenementenpagina's kunt u deze optie op 'ja' zetten en hieronder de titel in correct HTML formaat invoeren." + +#: admin/em-options.php:454 +#: admin/em-options.php:604 +msgid "Enable Archives?" +msgstr "Archieven inschakelen?" + +#: admin/em-options.php:454 +#: admin/em-options.php:604 +msgid "Allow WordPress post-style archives." +msgstr "Wordpress post-style archieven toestaan." + +#: admin/em-options.php:459 +msgid "Default event archive ordering" +msgstr "Standaard sortering evenementen archief" + +#: admin/em-options.php:464 +msgid "Order by start date, start time" +msgstr "Sorteren op startdatum, starttijd" + +#: admin/em-options.php:465 +msgid "Order by name" +msgstr "Sorteer op naam" + +#: admin/em-options.php:496 +#: admin/em-options.php:645 +#: admin/em-options.php:717 +msgid "General settings" +msgstr "Algemene instellingen" + +#: admin/em-options.php:502 +#: admin/em-options.php:650 +msgid "Include in WordPress Searches?" +msgstr "Opnemen in Wordpress zoekacties?" + +#: admin/em-options.php:502 +#: admin/em-options.php:650 +#, php-format +msgid "Allow %s to appear in the built-in search results." +msgstr "Sta toe dat %s verschijnen in de ingebouwde zoekresultaten?" + +#: admin/em-options.php:506 +#: admin/em-options.php:654 +#: admin/em-options.php:744 +#, php-format +msgid "Default %s list options" +msgstr "Standaard %s lijst opties" + +#: admin/em-options.php:507 +#: admin/em-options.php:655 +#: admin/em-options.php:745 +msgid "These can be overriden when using shortcode or template tags." +msgstr "Deze kunnen overruled worden door gebruk te maken van shortcodes of template tags." + +#: admin/em-options.php:595 +#: admin/em-options.php:708 +#: admin/em-options.php:832 +#: admin/em-options.php:833 +#: admin/em-options.php:834 +#: admin/em-options.php:835 +#, php-format +msgid "%s page" +msgstr "%s pagina" + +#: admin/em-options.php:595 +#, php-format +msgid "This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags." +msgstr "Deze optie stelt u instaat te selecteren welke pagina gebruikt wordt als %s pagina. Als u geen %s pagina kiest om lijsten te tonen kunt u archieven activeren of gebruik maken van de juiste shortcodes en/of template tags." + +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, php-format +msgid "Show %s page in lists?" +msgstr "%s pagina in lijsten weergeven?" + +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, php-format +msgid "Check this option if you want the %s page to appear together with other pages in pages lists." +msgstr "Kies 'ja' als u wilt dat de %s pagina samen met de andere pagina's in de paginalijsten getoond wordt (en in het menu)." + +#: admin/em-options.php:609 +#: admin/em-options.php:724 +#: admin/em-options.php:800 +msgid "Default archive ordering" +msgstr "Standaard sortering archief" + +#: admin/em-options.php:614 +#: admin/em-options.php:615 +#: admin/em-options.php:616 +#: admin/em-options.php:664 +#: admin/em-options.php:665 +#: admin/em-options.php:666 +#: admin/em-options.php:754 +#: admin/em-options.php:755 +#: admin/em-options.php:756 +#, php-format +msgid "Order by %s" +msgstr "Sorteren op %s" + +#: admin/em-options.php:659 +#: admin/em-options.php:749 +msgid "Default list ordering" +msgstr "Standaard sortering lijst" + +#: admin/em-options.php:693 +#: admin/em-options.php:783 +msgid "List Limits" +msgstr "Geef limieten weer" + +#: admin/em-options.php:693 +#: admin/em-options.php:783 +#, php-format +msgid "This will control how many %s are shown on one list by default." +msgstr "Dit regelt hoeveel %s er standaard worden getoond in een lijst." + +#: admin/em-options.php:708 +#, php-format +msgid "This option allows you to select which page to use as the %s page." +msgstr "Met deze optie kunt u de pagina kiezen die als %s pagina dienst doet." + +# @ default +#: admin/em-options.php:721 +msgid "Setting this to yes will make categories display as a page rather than an archive." +msgstr "Kies hier ja om categorieen weer te geven als een pagina i.p.v. een archief." + +#: admin/em-options.php:797 +msgid "tags" +msgstr "steekwoorden" + +# @ default +#: admin/em-options.php:827 +msgid "These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated." +msgstr "Deze pagina's maken het mogelijk een evenementbeheersscherm buiten de adminpagina te maken, waar u maar wilt op uw website. Houd er rekening mee dat deze instelling wordt overschreven door BuddyPress als deze is geactiveerd." + +#: admin/em-options.php:831 +#: classes/em-event-posts-admin.php:117 +#: classes/em-event-posts-admin.php:233 +msgid "None" +msgstr "Geen" + +#: admin/em-options.php:832 +msgid "Edit events" +msgstr "Evenementen aanpassen" + +#: admin/em-options.php:833 +msgid "Edit locations" +msgstr "Locaties aanpassen" + +#: admin/em-options.php:834 +msgid "Manage bookings" +msgstr "Reserveringen beheren" + +#: admin/em-options.php:835 +msgid "My bookings" +msgstr "Mijn reserveringen" + +#: admin/em-options.php:835 +msgid "Users can view their bookings for other events on this page." +msgstr "Gebruikers kunnen hun reserveringen voor andere evenementen bekijken op deze pagina." + +#: admin/em-options.php:869 +msgid "Search Form Options" +msgstr "Zoekformulier opties" + +#: admin/em-options.php:873 +msgid "Show text search?" +msgstr "Toon de tekst zoeken?" + +#: admin/em-options.php:874 +msgid "Text search label" +msgstr "Label zoekveld" + +#: admin/em-options.php:874 +msgid "Appears within the input box." +msgstr "Deze verschijnt in het invoervak." + +#: admin/em-options.php:875 +msgid "Show date range?" +msgstr "Toon tijdsspanne?" + +#: admin/em-options.php:876 +msgid "Show categories?" +msgstr "Categorieën tonen?" + +#: admin/em-options.php:877 +msgid "Categories label" +msgstr "Categorieën label" + +#: admin/em-options.php:877 +#: admin/em-options.php:879 +#: admin/em-options.php:881 +#: admin/em-options.php:883 +#: admin/em-options.php:885 +msgid "Appears as the first default search option." +msgstr "Verschijnt als de eerste standaard zoekoptie." + +#: admin/em-options.php:878 +msgid "Show countries?" +msgstr "Landen tonen?" + +#: admin/em-options.php:879 +msgid "All countries text" +msgstr "Alle landen tekst" + +#: admin/em-options.php:880 +msgid "Show regions?" +msgstr "Regio's tonen?" + +#: admin/em-options.php:881 +msgid "All regions text" +msgstr "Alle regio's tekst" + +#: admin/em-options.php:882 +msgid "Show states?" +msgstr "Toon staten?" + +#: admin/em-options.php:883 +msgid "All states text" +msgstr "Alle staten tekst" + +#: admin/em-options.php:884 +msgid "Show towns/cities?" +msgstr "Toon steden?" + +#: admin/em-options.php:885 +msgid "All towns/cities text" +msgstr "Alle steden tekst" + +#: admin/em-options.php:893 +msgid "Date/Time formats" +msgstr "Datum/tijd opmaak" + +#: admin/em-options.php:895 +#, php-format +msgid "Date and Time formats follow the WordPress time formatting conventions" +msgstr "Datum en tijdsnotaties zijn conform de WordPress tijdsnotatie conventies" + +#: admin/em-options.php:898 +msgid "Date Format" +msgstr "Datum opmaak" + +# @ default +#: admin/em-options.php:898 +#: admin/em-options.php:900 +#, php-format +msgid "For use with the %s placeholder" +msgstr "Te gebruiken met de %s invoegcode" + +#: admin/em-options.php:899 +msgid "Date Seperator" +msgstr "Datumscheidingsteken" + +#: admin/em-options.php:899 +#: admin/em-options.php:901 +#, php-format +msgid "For when start/end %s are present, this will seperate the two (include spaces here if necessary)." +msgstr "Als start/eind %s aanwezig zijn, wordt dit teken gebruikt om ze te scheiden (voeg spaties toe indien nodig)." + +#: admin/em-options.php:899 +msgid "dates" +msgstr "data" + +#: admin/em-options.php:900 +msgid "Time Format" +msgstr "Tijsnotatie" + +#: admin/em-options.php:901 +msgid "Time Seperator" +msgstr "Tijdsscheidingsteken" + +#: admin/em-options.php:901 +msgid "times" +msgstr "tijden" + +#: admin/em-options.php:918 +msgid "Full calendar events/day limit" +msgstr "Limiet aantal evenementen per dag in de kalender" + +#: admin/em-options.php:918 +msgid "To reduce the clutter on your calendar, you can add a limit to events displayed in one day on the calendar." +msgstr "Om vervuiling van uw calender tegen te gaan kunt u een limiet opgeven van het aantal evenementen dat op één dag getoond wordt." + +#: admin/em-options.php:989 +msgid "Tags format" +msgstr "Opmaak steekwoorden" + +#: admin/em-options.php:992 +msgid "Tag" +msgstr "Tag" + +#: admin/em-options.php:994 +#: admin/em-options.php:995 +msgid "tag" +msgstr "tag" + +#: admin/em-options.php:994 +msgid "The format of a single tag page title." +msgstr "De opmaak van een enkele tag paginatitel." + +#: admin/em-options.php:995 +msgid "The format of a single tag page." +msgstr "De opmaak van een enkele tag pagina." + +#: admin/em-options.php:999 +msgid "The format of the events the list inserted in the tag page through the #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS element." +msgstr "Opmaak van de evenementen die zijn ingevoerd in de tag pagina's met #_TAGNEXTEVENTS, #_TAGNEXTEVENTS en #_TAGALLEVENTS element." + +#: admin/em-options.php:1000 +msgid "The message to be displayed in the list generated by #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS when no events are available." +msgstr "Het bericht dat wordt weergegeven bij #_TAGNEXTEVENTS, #_TAGNEXTEVENTS en #_TAGALLEVENTS als er geen evenementen beschikbaar zijn." + +#: admin/em-options.php:1067 +msgid "Pricing" +msgstr "Prijzen" + +#: admin/em-options.php:1083 +msgid "Booking Form" +msgstr "Reserveringsformulier" + +#: admin/em-options.php:1108 +msgid "Ticket" +msgstr "Plaatsbewijs" + +#: admin/em-options.php:1135 +msgid "The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user." +msgstr "De optie hieronder stelt u in staat om het gebruik van gebruikersaccounts uit te schakelen en alle reserveringen aan een bepaalde gerbruiker toe te wijzen. U blijft wel de opgegeven persoonlijke info voor elke reservering zien. Als deze modus is ingeschakeld dan wordt extra reserveringsinfo over de persoon bij de reservering opgeslagen en niet als WordPress gebruiker." + +#: admin/em-options.php:1145 +msgid "Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself." +msgstr "Kies een gebruiker om alle reserveringen aan toe te wijzen. Personen die een reservering maken merken dit niet en hebben nooit toegang tot deze gebruikerdetails. Dit moet een abonnee account zijn die u niet zelf gebruikt om in te loggen. " + +#: admin/em-options.php:1169 +msgid "Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event." +msgstr "Zet deze optie aan wanneer u een wilt voorkomend dat de Wordpress registratie e-mail wordt verzonden wanneer een gebruiker anoniem reserveerd." + +#: admin/em-options.php:1217 +msgid "Event Submitted" +msgstr "Evenement ingegeven" + +#: admin/em-options.php:1218 +msgid "An email will be sent to the an administrator of your choice when an event is submitted and pending approval." +msgstr "Er wordt een e-mail naar een beheerder naar uw keuze gestuurd als een evenement is opgegeven en wacht op goedkeuring." + +#: admin/em-options.php:1220 +msgid "Administrator Email" +msgstr "Beheerders e-mail" + +#: admin/em-options.php:1220 +msgid "If left blank, no email will be sent. Seperate emails with commas for more than one email." +msgstr "Indien leeg wordt geen e-mail gestuurd. Geef meerdere e-mail adressen op door ze met een komma te scheiden." + +#: admin/em-options.php:1272 +msgid "Event Submission Forms" +msgstr "Evenement invoerformulieren" + +#: admin/em-options.php:1276 +#, php-format +msgid "You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below." +msgstr "U kunt gebrukers toestaan om gebruikers evenementen toe te laten voegen aan uw blog door gebruik te maken van de %s code en anonieme aanmeldingen hieronder toe te staan." + +#: admin/em-options.php:1279 +msgid "Use Visual Editor?" +msgstr "Visuele editor gebruiken?" + +#: admin/em-options.php:1279 +msgid "Users can now use the WordPress editor for easy HTML entry in the submission form." +msgstr "Gebruikers kunnen nu gebruik maken van de Wordpress editor om eenvoudige HTML invoer op te geven in het aanmeldformulier." + +#: admin/em-options.php:1280 +msgid "Show form again?" +msgstr "Het formulier opnieuw tonen?" + +#: admin/em-options.php:1280 +msgid "When a user submits their event, you can display a new event form again." +msgstr "Als een gebruiker zijn evenement aanmeld dan kunt u opnieuw een evenementformulier tonen." + +#: admin/em-options.php:1281 +msgid "Customize the message your user sees when they submitted their event." +msgstr "Pas het bericht aan dat gebruikers zien wanneer ze hun evenement hebben opgegeven." + +#: admin/em-options.php:1284 +msgid "Anonymous event submissions" +msgstr "Anonieme evenement opgave" + +#: admin/em-options.php:1288 +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting." +msgstr "Een eigenaar is vereist voor een evenement. Om evenementen anoniem toe te voegen moeten deze aan een specifieke gebruiker worden gekoppeld. Wij adviseren om een 'Anonieme' gebruiker aan te maken met een goed wachtwoord. Gasten hebben dezelfde rechten als deze gebruiker wanneer ze een evenement aanmelden." + +#: admin/em-options.php:1305 +msgid "Image Sizes" +msgstr "Afmeting van afbeeldingen" + +#: admin/em-options.php:1331 +msgid "Send HTML Emails?" +msgstr "e-mails in HTML opmaak sturen?" + +#: admin/em-options.php:1331 +msgid "If set to yes, your emails will be sent in HTML format, otherwise plaintext." +msgstr "Als u hier ja kiest worden uw e-mails verzonden in HTML opmaak, anders is de opmaak platte tekst." + +#: admin/em-options.php:1364 +#: admin/em-options.php:1374 +#: admin/em-options.php:1382 +#: admin/em-options.php:1393 +#, php-format +msgid "%s Capabilities" +msgstr "%s rechten" + +#: admin/em-options.php:1366 +#: admin/em-options.php:1376 +#: admin/em-options.php:1384 +#, php-format +msgid "Users can publish %s and skip any admin approval" +msgstr "Gebruikers mogen %s publiceren mogen beheerdersgoedkeuring overslaan" + +#: admin/em-options.php:1367 +#: admin/em-options.php:1377 +#: admin/em-options.php:1385 +#, php-format +msgid "User can delete other users %s" +msgstr "Gebruiker kan andere gebruikers %s verwijderen" + +#: admin/em-options.php:1368 +#: admin/em-options.php:1378 +#: admin/em-options.php:1386 +#, php-format +msgid "User can edit other users %s" +msgstr "Gebruiker kan andere gebruikers %s aanpassen" + +#: admin/em-options.php:1369 +#: admin/em-options.php:1379 +#: admin/em-options.php:1387 +#, php-format +msgid "User can delete their own %s" +msgstr "Gebruikers kunnen hun eigen %s verwijderen" + +#: admin/em-options.php:1370 +#: admin/em-options.php:1380 +#: admin/em-options.php:1388 +#, php-format +msgid "User can create and edit %s" +msgstr "Gebruiker kan %s aanmaken en wijzigen" + +#: admin/em-options.php:1371 +#: admin/em-options.php:1389 +#, php-format +msgid "User can view private %s" +msgstr "Gebruiker kan prive %s inzien" + +#: admin/em-options.php:1374 +#: em-posts.php:165 +msgid "Recurring Event" +msgstr "Terugkerend evenement" + +#: admin/em-options.php:1376 +#: admin/em-options.php:1377 +#: admin/em-options.php:1378 +#: admin/em-options.php:1379 +#: admin/em-options.php:1380 +#: events-manager.php:303 +#: events-manager.php:304 +#: events-manager.php:305 +#: events-manager.php:306 +#: events-manager.php:307 +msgid "recurring events" +msgstr "terugkerende evenementen" + +#: admin/em-options.php:1390 +msgid "User can use other user locations for their events." +msgstr "Een gebruiker kan andere locaties voor zijn evenement gebruiken." + +#: admin/em-options.php:1395 +#, php-format +msgid "User can delete %s categories and tags." +msgstr "Gebruiker kan %s categorieen en steekwoorden verwijderen." + +#: admin/em-options.php:1396 +#, php-format +msgid "User can edit %s categories and tags." +msgstr "Gebruiker kan %s categorieen en steekwoorden aanapssen." + +#: admin/em-options.php:1400 +msgid "User can upload images along with their events and locations." +msgstr "Gebruiker kan afbeeldingen uploaden bij hun evenementen en locaties." + +#: admin/em-options.php:1460 +msgid "Uninstall/Reset" +msgstr "Deinstalleren/Resetten" + +#: admin/em-options.php:1462 +msgid "Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data." +msgstr "Gebruik de knoppen hieronder om Events Manager geheel van u systeem te verwijderen of Events Mangager terug te zetten naar de standaardinstellingen met behoud van evenementgegevens." + +#: admin/em-options.php:1464 +msgid "Reset" +msgstr "Resetten" + +#: buddypress/bp-em-activity.php:58 +#, php-format +msgid "%s added the event %s to %s." +msgstr "%s heeft het evenement toegevoegd %s aan %s." + +#: buddypress/bp-em-core.php:51 +#, php-format +msgid "Search %s..." +msgstr "Zoek %s..." + +#: buddypress/screens/my-events.php:48 +#: em-events.php:151 +msgid "Reschedule Events" +msgstr "Opnieuw plannen" + +#: classes/em-categories-taxonomy.php:35 +#, php-format +msgid "Choose a color for your category. You can access this using the %s placeholder." +msgstr "Kies een kleur voor uw categorie. U heeft toegang tot deze door gebruik te maken van de %s invoegcode." + +#: classes/em-categories-taxonomy.php:46 +msgid "Choose/Upload Image" +msgstr "Kies of upload een afbeelding" + +#: classes/em-categories-taxonomy.php:47 +#, php-format +msgid "Choose an image for your category, which can be displayed using the %s placeholder." +msgstr "Kies een afbeelding voor uw categorie, deze kan worden getoond door gebruik te maken van de %s invoegcode." + +#: classes/em-event-post-admin.php:42 +#, php-format +msgid "If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, detach it." +msgstr "Als u deze evenementgegevens opslaat wordt eht mogelijk overschreven als u de terugkerenden evenement sjabloon aanpast. Om het onafhankelijk te maken moet u het loskoppelen." + +#: classes/em-event-post-admin.php:43 +#, php-format +msgid "To manage the whole set, edit the recurring event template." +msgstr "Om de hele set te beheren, pas de terugkerende evenementsjabloon aan." + +#: classes/em-event-post-admin.php:83 +msgid "Your event details are incorrect and recurrences cannot be created, please correct these errors first:" +msgstr "Uw evenementdetails zijn niet correct en terugkerende versies kunnen niet worden aangemaakt, corrigeer eerst de fouten:" + +#: classes/em-event-post-admin.php:85 +#: classes/em-location-post-admin.php:59 +#, php-format +msgid "Your %s details are incorrect and cannot be published, please correct these errors first:" +msgstr "Uw %s details zijn niet correct en kunnen niet worden aangemaakt, corrigeer eerst deze fouten:" + +#: classes/em-event-post-admin.php:195 +msgid "Site Categories" +msgstr "Categorieën" + +#: classes/em-event-post-admin.php:352 +msgid "Recurrences" +msgstr "Herhalingen" + +# @ default +#: classes/em-event-post.php:94 +#: classes/em-event-post.php:97 +#: classes/em-event-post.php:102 +#: classes/em-event-post.php:113 +#: classes/em-event-post.php:116 +#: classes/em-event-post.php:121 +#, php-format +msgid "View all posts in %s" +msgstr "Bekijk alle posts in %s" + +#: classes/em-event-posts-admin.php:66 +msgid "View all categories" +msgstr "Bekijk alle categorieen" + +#: classes/em-event-posts-admin.php:96 +#: classes/em-event-posts-admin.php:215 +msgid "Date and Time" +msgstr "Datum en tijd" + +#: classes/em-event-posts-admin.php:97 +#: classes/em-event-posts-admin.php:216 +msgid "Owner" +msgstr "Eigenaar" + +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:132 +#: templates/buddypress/my-group-events.php:126 +#: templates/tables/events.php:132 +msgid "Edit Recurring Events" +msgstr "Terugkerende evenementen aanpassen" + +#: classes/em-event-posts-admin.php:150 +msgid "Detach" +msgstr "Loskoppelen" + +#: classes/em-event-posts-admin.php:163 +#, php-format +msgid "Duplicate %s" +msgstr "Dupliceer %s" + +#: classes/em-event-posts-admin.php:163 +msgid "Duplicate" +msgstr "Duplicaat" + +#: classes/em-event-posts-admin.php:187 +#, php-format +msgid "Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the events page." +msgstr "Aanpassingen aan deze evenementen veroorzaakt dat alle terugkerende versies worden verwijderd en opnieuw worden aangemaakt. Alle eerdere reserveringen worden verwijderd! U kunt elke afzonderlijke voorstelling aanpassen en deze loskoppelen van de serie op de events page." + +#: classes/em-event.php:428 +msgid "Event name" +msgstr "Evenement naam" + +#: classes/em-event.php:464 +msgid "Since the event is repeated, you must specify an event end date greater than the start date." +msgstr "Aangezien het een terugkerend evenement betreft, dient u een einddatum op te geven die na de startdatum ligt" + +# @ default +#: classes/em-event.php:546 +#: classes/em-event.php:548 +msgid "There were some errors saving your location." +msgstr "Er is iets fout gegaan bij het opslaan van uw locatie." + +# @ default +#: classes/em-event.php:546 +#, php-format +msgid "It will not be displayed on the website listings, to correct this you must edit your location directly." +msgstr "Het zal niet worden getoond op uw website, om dit te corrigeren moet u direct uw locatie aanpassen." + +#: classes/em-event.php:582 +#: classes/em-location.php:332 +#, php-format +msgid "Something went wrong saving your %s to the index table. Please inform a site administrator about this." +msgstr "Er is iets fout gegaan bij het opslaan van uw %s in de index tabel. Informeer de sitebeheerder hierover a.u.b." + +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#, php-format +msgid "Successfully saved %s" +msgstr "%s succesvol opgeslagen" + +#: classes/em-event.php:594 +#: classes/em-location.php:342 +#, php-format +msgid "Something went wrong updating your %s to the index table. Please inform a site administrator about this." +msgstr "Er is iets fout gegaan bij het updaten van uw %s in de index tabel. Informeer de sitebeheerder hierover a.u.b." + +#: classes/em-event.php:1159 +#: classes/em-location.php:618 +#, php-format +msgid "Edit %s" +msgstr "Aanpassen %s" + +#: classes/em-event.php:1384 +msgid "Event detached." +msgstr "Evenement losgekoppeld" + +#: classes/em-event.php:1384 +msgid "Undo" +msgstr "Ongedaan maken" + +#: classes/em-event.php:1388 +msgid "Event could not be detached." +msgstr "Evenement kon niet worden losgekoppeld" + +#: classes/em-event.php:1402 +msgid "Event re-attached to recurrence." +msgstr "Evenement opnieuw toegevoegd aan de voorstellingenreeks." + +#: classes/em-event.php:1405 +msgid "Event could not be attached." +msgstr "Evenement kon niet worden gekoppeld" + +#: classes/em-location.php:224 +#: widgets/em-locations.php:22 +msgid "Location name" +msgstr "Locatienaam" + +#: em-install.php:291 +msgid "A new event has been submitted by #_CONTACTNAME.
                          Name : #_EVENTNAME
                          Date : #_EVENTDATES
                          Time : #_EVENTTIMES
                          Please visit #_EDITEVENTURL to review this event for approval." +msgstr "Er is een nieuw evenement aangemeldt door #_CONTACTNAME.
                          Evenement : #_EVENTNAME
                          Data : #_EVENTDATES
                          Tijd : #_EVENTTIMES
                          Ga naar #_EDITEVENTURL om dit evenement te bekijken en/of goed te keuren." + +#: em-install.php:321 +msgid "All Cities/Towns" +msgstr "Alle plaatsen" + +#: em-install.php:325 +#: em-install.php:328 +msgid "You have successfully submitted your event, which will be published pending approval." +msgstr "U heeft uw evenement succesvol aangemeldt, het wordt gepubliceerd zodra het is goedgekeurd." + +#: em-install.php:331 +msgid "Submitted Event Awaiting Approval" +msgstr "Evenement aangemeld, wacht op goedkeuring" + +#: em-install.php:378 +msgid "All Day" +msgstr "Hele dag" + +#: em-install.php:424 +msgid "
                        • No events in this tag
                        • " +msgstr "
                        • Geen evenementen in deze tag
                        • " + +#: em-install.php:502 +msgid "New Booking" +msgstr "Nieuwe reservering" + +#: em-posts.php:30 +#: em-posts.php:33 +msgid "Event Tag" +msgstr "Evenement tag" + +#: em-posts.php:34 +msgid "Search Event Tags" +msgstr "Zoek evenement steekwoorden" + +#: em-posts.php:35 +msgid "Popular Event Tags" +msgstr "Populaire evenement steekwoorden" + +#: em-posts.php:36 +msgid "All Event Tags" +msgstr "Alle evenementen steekwoorden" + +#: em-posts.php:37 +msgid "Parent Event Tags" +msgstr "steekwoorden uit het verleden" + +#: em-posts.php:38 +msgid "Parent Event Tag:" +msgstr "Eerdere evenement tag" + +#: em-posts.php:39 +msgid "Edit Event Tag" +msgstr "Evenement tag bewerken" + +#: em-posts.php:40 +msgid "Update Event Tag" +msgstr "Evenement tag aanpassen" + +#: em-posts.php:41 +msgid "Add New Event Tag" +msgstr "Voeg evenement tag toe" + +#: em-posts.php:42 +msgid "New Event Tag Name" +msgstr "Nieuwe evenement tag naam" + +#: em-posts.php:43 +msgid "Seperate event tags with commas" +msgstr "Gebruik komma's om evenement steekwoorden te scheiden" + +#: em-posts.php:44 +#: em-posts.php:81 +msgid "Add or remove events" +msgstr "Evenement toevoegen of verwijderen" + +#: em-posts.php:45 +msgid "Choose from most used event tags" +msgstr "Kies uit de meest gebruikte evenement steekwoorden" + +#: em-posts.php:67 +#: em-posts.php:70 +msgid "Event Category" +msgstr "Evenement categorieën" + +#: em-posts.php:71 +msgid "Search Event Categories" +msgstr "Zoek evenement categorieën" + +#: em-posts.php:72 +msgid "Popular Event Categories" +msgstr "Populaire categorieen" + +#: em-posts.php:73 +msgid "All Event Categories" +msgstr "Alle categorieen " + +#: em-posts.php:74 +msgid "Parent Event Categories" +msgstr "Eerdere evenement categorieen" + +#: em-posts.php:75 +msgid "Parent Event Category:" +msgstr "Eerdere evenementcategorie:" + +#: em-posts.php:76 +msgid "Edit Event Category" +msgstr "Categorie aanpassen" + +#: em-posts.php:77 +msgid "Update Event Category" +msgstr "Categorie bijwerken" + +#: em-posts.php:78 +msgid "Add New Event Category" +msgstr "Voeg evenement categorie toe" + +#: em-posts.php:79 +msgid "New Event Category Name" +msgstr "Nieuwe evenement categorie" + +#: em-posts.php:80 +msgid "Seperate event categories with commas" +msgstr "Gebruik komma's om categorieen te scheiden" + +#: em-posts.php:82 +msgid "Choose from most used event categories" +msgstr "Kies uit de meest gebruikte categorieen" + +#: em-posts.php:117 +msgid "Display events on your blog." +msgstr "Evenementen weergeven op uw blog" + +#: em-posts.php:123 +msgid "Add New Event" +msgstr "Evenement toevoegen" + +#: em-posts.php:126 +msgid "New Event" +msgstr "Nieuw evenement aanmaken" + +# @ default +#: em-posts.php:127 +#: em-posts.php:172 +#: em-posts.php:218 +#: templates/tables/locations.php:60 +msgid "View" +msgstr "Bekijk" + +#: em-posts.php:128 +msgid "View Event" +msgstr "Bekijk evenement" + +#: em-posts.php:130 +msgid "No Events Found" +msgstr "Geen evenementen gevonden" + +#: em-posts.php:131 +msgid "No Events Found in Trash" +msgstr "Geen evenementen gevonden in de prullenbak" + +#: em-posts.php:132 +msgid "Parent Event" +msgstr "Eerder evenement" + +#: em-posts.php:161 +#: em-posts.php:164 +#: em-posts.php:166 +msgid "Recurring Events" +msgstr "Terugkerende evenementen" + +#: em-posts.php:162 +msgid "Recurring Events Template" +msgstr "Terugkerende envenementen sjabloon" + +#: em-posts.php:167 +#: em-posts.php:173 +msgid "Add Recurring Event" +msgstr "Terugkerend evenement toevoegen" + +#: em-posts.php:168 +msgid "Add New Recurring Event" +msgstr "Voeg een nieuwe evenementenreeks toe" + +#: em-posts.php:170 +msgid "Edit Recurring Event" +msgstr "Terugkerend evenement aanpassen" + +#: em-posts.php:171 +msgid "New Recurring Event" +msgstr "Nieuw terugkerend evenement" + +#: em-posts.php:174 +msgid "Search Recurring Events" +msgstr "Zoet terugkerende evenementen." + +#: em-posts.php:175 +msgid "No Recurring Events Found" +msgstr "Geen evenementenreeksen gevonden" + +#: em-posts.php:176 +msgid "No Recurring Events Found in Trash" +msgstr "Geen evenementenreeksen gevonden in de prullenbak" + +#: em-posts.php:177 +msgid "Parent Recurring Event" +msgstr "Eerste van evenementenreeks" + +#: em-posts.php:208 +msgid "Display locations on your blog." +msgstr "Geef locatie weer op uw blog" + +#: em-posts.php:214 +msgid "Add New Location" +msgstr "Locatie toevoegen" + +#: em-posts.php:217 +msgid "New Location" +msgstr "Nieuwe locatie" + +#: em-posts.php:219 +msgid "View Location" +msgstr "Bekijk locatie" + +#: em-posts.php:220 +msgid "Search Locations" +msgstr "zoek locaties" + +#: em-posts.php:221 +msgid "No Locations Found" +msgstr "Geen Locaties gevonden" + +#: em-posts.php:222 +msgid "No Locations Found in Trash" +msgstr "Geen locaties gevonden in de prullenbak" + +#: em-posts.php:223 +msgid "Parent Location" +msgstr "Eerdere locatie" + +#: em-template-tags.php:296 +msgid "You must log in to view and manage your events." +msgstr "U moet inloggen om uw evenementen te bekijken en te beheren." + +#: em-template-tags.php:386 +msgid "You must log in to view and manage your locations." +msgstr "U moet inloggen om uw locaties bekijken en te beheren." + +#: em-template-tags.php:404 +msgid "You must log in to view and manage your bookings." +msgstr "U moet inloggen om uw reserveringen te bekijken en te beheren." + +#: events-manager.php:257 +msgid "Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events." +msgstr "Weet u zeker dat u het evenement wilt loskoppelen, hierdoor wordt het evenement losstaand t.o.v. de serie evenementen waar het deel van uitmaakte!" + +#: events-manager.php:258 +msgid "This cannot be undone." +msgstr "Dit kan niet ongedaan worden gemaakt." + +#: events-manager.php:258 +msgid "All events will be moved to trash." +msgstr "Alle evenementen worden naar de prullenbak verplaatst." + +#: events-manager.php:259 +msgid "Are you sure you want to delete all recurrences of this event?" +msgstr "Weet u zeker dat u alle evenementen uit de reeks wilt verwijderen?" + +#: events-manager.php:300 +#: events-manager.php:314 +#, php-format +msgid "You cannot read private %s" +msgstr "U heeft geen rechten om prive %s te lezen" + +#: events-manager.php:315 +#, php-format +msgid "You cannot view others %s" +msgstr "U heeft geen rechten om andermans %s te bijkijken" + +#: events-manager.php:321 +msgid "You do not have permission to upload images" +msgstr "U heeft geen rechten om afbeeldingen te uploaden" + +# @ default +#: templates/forms/event/attributes.php:51 +msgid "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Als u hieronder attributen ziet staan dan zijn deze niet gebruikt in Events Manager layouts. Om ze toe te voegen moet u het attribuut opnieuw toevoegan aan een weergave optie op de instellingen pagina. Om één van deze niet aan te raden attributen te verwijderen, geef ze een lege waarde en kies opslaan." + +#: templates/forms/event/group.php:26 +msgid "No groups defined yet." +msgstr "Er zijn nog geen groepen gedefinieerd" + +# @ default +#: templates/forms/event/location.php:9 +msgid "This event does not have a physical location." +msgstr "Dit evenement heeft geen fysieke locatie." + +#: templates/forms/event/location.php:31 +msgid "No Location" +msgstr "Geen locatie" + +#: templates/forms/event/recurring-when.php:53 +#: templates/forms/event/when-with-recurring.php:13 +msgid "Recurrences span from " +msgstr "Herhalingen lopen van" + +#: templates/forms/event/recurring-when.php:61 +#: templates/forms/event/when-with-recurring.php:23 +msgid "Events start from" +msgstr "Evenement start van" + +#: templates/forms/event/recurring-when.php:65 +#: templates/forms/event/when-with-recurring.php:28 +#: templates/forms/event/when.php:20 +msgid "All day" +msgstr "De hele dag" + +#: templates/forms/event/recurring-when.php:68 +#: templates/forms/event/when-with-recurring.php:74 +msgid "Each event lasts" +msgstr "Elk evenement duurt" + +#: templates/forms/event/recurring-when.php:70 +#: templates/forms/event/when-with-recurring.php:76 +msgid "day(s)" +msgstr "dagen" + +#: templates/forms/event/when-with-recurring.php:11 +msgid "This is a recurring event." +msgstr "Dit is een terugkerend evenement" + +#: templates/forms/event/when-with-recurring.php:14 +#: templates/forms/event/when.php:8 +msgid "From " +msgstr "Van" + +#: templates/forms/event/when-with-recurring.php:24 +#: templates/forms/event/when.php:16 +msgid "Event starts at" +msgstr "Evenement start om" + +#: templates/forms/event-editor.php:164 +msgid "Event Image" +msgstr "Afbeelding evenement" + +#: templates/forms/location-editor.php:47 +msgid "Details about the location." +msgstr "Details over het evenement" + +#: templates/forms/location-editor.php:52 +msgid "Location Image" +msgstr "Afbeelding van de locatie" + +#: templates/tables/locations.php:74 +msgid "No locations have been inserted yet!" +msgstr "Er zijn nog geen lokaties opgegeven" + +#: widgets/em-locations.php:21 +msgid "Event start date/time, location name" +msgstr "Evenement startdatum/tijd, locatie" + +#~ msgid "Some required fields are missing:" +#~ msgstr "Er ontbreken verplichte velden" + +#~ msgid "Since the event is repeated, you must specify an end date" +#~ msgstr "" +#~ "Aangezien dit een herhaald evenement is, dient u een einddatum op te geven" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Add category" +#~ msgstr "Categorie toevoegen" + +#~ msgid "" +#~ "Modifying these data all the events linked to this recurrence will be " +#~ "rescheduled" +#~ msgstr "" +#~ "Wanneer deze gegevens worden aangepast, zullen alle gerelateerde " +#~ "evenementen worden aangepast" + +#~ msgid "and all booking information will be deleted!" +#~ msgstr "en alle boekingsinformatie zal worden verwijderd!" + +#~ msgid "WARNING: This is a recurrence." +#~ msgstr "LET OP: dit is een herhaling" + +#~ msgid "" +#~ "If you change these data and save, this will become an independent event." +#~ msgstr "" +#~ "Wanneer u deze gegevens aanpast en opslaat, wordt dit een op zich zelf " +#~ "staand evenement." + +#~ msgid "Repeated event" +#~ msgstr "Herhaald evenement" + +#~ msgid "month" +#~ msgstr "maand" + +#~ msgid "" +#~ "Check if your event happens more than once according to a regular pattern" +#~ msgstr "" +#~ "Controlleer of dit evenement meer dan eens voorkomt, volgens een vast " +#~ "patroon" + +#~ msgid "Contact Person" +#~ msgstr "Neem contact op met" + +#~ msgid "Contact" +#~ msgstr "Contact" + +#~ msgid "Select..." +#~ msgstr "Selecteer" + +#~ msgid "RSVP" +#~ msgstr "RSVP" + +#~ msgid "responses so far" +#~ msgstr "reacties tot nu toe" + +#~ msgid "" +#~ "When not reoccurring, this event spans between the beginning and end date." +#~ msgstr "" +#~ "Wanneer het geen herhaald evenement is, wordt aangenomen dat het van " +#~ "begin tot einddatum duurt." + +#~ msgid "The recurrence beginning and end date." +#~ msgstr "Begin en einddatum van de herhaling" + +#~ msgid "The time of the event beginning and end" +#~ msgstr "De begin- en eindtijd van het evenement" + +#~ msgid "Coordinates" +#~ msgstr "Coördinaten" + +#~ msgid "" +#~ "The name of the location where the event takes place. You can use the " +#~ "name of a venue, a square, etc" +#~ msgstr "De naam van de locatie waar het evenement plaatsvindt." + +#~ msgid "" +#~ "The address of the location where the event takes place. Example: 21, " +#~ "Dominick Street" +#~ msgstr "Het adres van de locatie waar het evenemt zal plaatsvinden." + +#~ msgid "" +#~ "The town where the location is located. If you're using the Google Map " +#~ "integration and want to avoid geotagging ambiguities include the country " +#~ "in the town field. Example: Verona, Italy." +#~ msgstr "" +#~ "De plaats waar de locatie is geleven. Bij gebruik van Google Map " +#~ "integratie, kunt u hier ook de landnaam invullen, om foutieve geologische " +#~ "informatie te voorkomen. Bijv Delft, Netherlands" + +#~ msgid "Not defined in templates" +#~ msgstr "Niet in de sjabloon gedefinieerd" + +#~ msgid "Ach, there's a problem here:" +#~ msgstr "Oei, er is hier een probleem:" + +#~ msgid "Previous Page" +#~ msgstr "Vorige pagina" + +#~ msgid "D d M Y" +#~ msgstr "D d < Y" + +#~ msgid "Locations Deleted" +#~ msgstr "Locaties verwijderd" + +#~ msgid "The location has been updated." +#~ msgstr "De locatie is aangepast" + +#~ msgid "The location has been added." +#~ msgstr "De locatie is toegevoegd" + +#~ msgid "No venues have been inserted yet!" +#~ msgstr "Er zijn nog geen plaatsen ingevoerd" + +#~ msgid "The address of the location" +#~ msgstr "Adres van de locatie" + +#~ msgid "Location town" +#~ msgstr "Plaatsnaam locatie" + +#~ msgid "The town of the location" +#~ msgstr "De plaats waar de locatie zich bevindt" + +#~ msgid "Select an image to upload" +#~ msgstr "Selecteer een afbeelding om te uploaden" + +#~ msgid "" +#~ "A description of the Location. You may include any kind of info here." +#~ msgstr "Een omschrijving van de locatie." + +#~ msgid "The town where the location is located" +#~ msgstr "De plaats waar de locatie zich bevindt" + +#~ msgid "Location map" +#~ msgstr "Kaart van de locatie" + +#~ msgid "Use RSVP?" +#~ msgstr "RSCP gebruiken?" + +#~ msgid "Select yes to enable the RSVP feature" +#~ msgstr "Selecteer ja om RSVPoptie aan te zetten" + +#~ msgid "" +#~ "The format of any events in a list.
                          Insert one or more of the " +#~ "following placeholders: #_NAME, #_LOCATION, " +#~ "#_ADDRESS, #_TOWN, #_NOTES.
                          " +#~ "Use #_EXCERPT to show #_NOTES until you place a " +#~ "<!–– more ––> marker.
                          Use " +#~ "#_LINKEDNAME for the event name with a link to the given " +#~ "event page.
                          Use #_EVENTPAGEURL to print the event page " +#~ "URL and make your own customised links.
                          Use #_LOCATIONPAGEURL to print the location page URL and make your own customised links." +#~ "
                          Use #_EDITEVENTLINK to add add a link to edit page for " +#~ "the event, which will appear only when a user is logged in.
                          To insert " +#~ "date and time values, use PHP time format characters with a # symbol " +#~ "before them, i.e. #m, #M, #j, etc." +#~ "
                          For the end time, put #@ in front of the character, " +#~ "ie. #@h, #@i, etc.
                          You can also create a " +#~ "date format without prepending # by wrapping it in #_{} or " +#~ "#@_{} (e.g. #_{d/m/Y}). If there is no end date, the value " +#~ "is not shown.
                          Feel free to use HTML tags as li, " +#~ "br and so on.
                          For custom attributes, you use #_ATT" +#~ "{key}{alternative text}, the second braces are optional and will " +#~ "appear if the attribute is not defined or left blank for that event. This " +#~ "key will appear as an option when adding attributes to your event." +#~ msgstr "" +#~ "Opmaak van elke evenement in de lijst.
                          Voeg een of meer van deze " +#~ "markeringen toe: #_NAME, #_LOCATION, " +#~ "#_ADDRESS, #_TOWN, #_NOTES.
                          " +#~ "#_EXCERPT om #_NOTES te tonen tot in de tekst " +#~ "<!–– more ––> voorkomt.
                          Gebruik " +#~ "#_LINKEDNAME voor de naam van het evenement met een link " +#~ "naar de pagina van het evenement.
                          Gebruik #_EVENTPAGEURL om de URL weer te geven.
                          Gebruik #_LOCATIONPAGEURL om de URL naar de locatie weer te geven.
                          Gebruik " +#~ "#_EDITEVENTLINK p, een link naar de beheerpagina van het " +#~ "evenement te tonen, deze wordt alleen aan ingelogde gebruikers getoond." +#~ "
                          Gebruik PHP time format characters met een # symbool ervoor " +#~ "om datum en tijd weer te geveb bijv. #m, #M, " +#~ "#j, etc.
                          Voor de eindtijd kunt u #@ voor " +#~ "het teken zetten, bijv. #@h, #@i, etc.
                          U " +#~ "kunt ook datumformaat zonder # gebruiken door het tussen #_" +#~ "{} of #@_{} te zetten (bijv. #_{d/m/Y}). Als er geen " +#~ "einddatums is wordt de waarde niet getoond.
                          Gebruik gerust HTML tags " +#~ "zoals li, br etc.
                          Voor uw eigen attributen " +#~ "kunt u #_ATT{key}{alternative text} gebruiken, de tweede " +#~ "haken zijn optioneel en worden gebruikt als het attribuut niet is " +#~ "gedefinieerd of wanneer het leeg is voor het betreffende evenement." + +#~ msgid "" +#~ "The format of a single event page.
                          Follow the previous formatting " +#~ "instructions.
                          Use #_MAP to insert a map.
                          Use " +#~ "#_CONTACTNAME, #_CONTACTEMAIL, " +#~ "#_CONTACTPHONE to insert respectively the name, e-mail " +#~ "address and phone number of the designated contact person.
                          Use " +#~ "#_ADDBOOKINGFORM to insert a form to allow the user to " +#~ "respond to your events reserving one or more places (RSVP).
                          Use " +#~ "#_REMOVEBOOKINGFORM to insert a form where users, inserting " +#~ "their name and e-mail address, can remove their bookings." +#~ msgstr "" +#~ "Opmaak van een pagina met een evenement.
                          Gebruik #_MAP " +#~ "om een kaart in te voegen.
                          #_CONTACTNAME, " +#~ "#_CONTACTEMAIL, #_CONTACTPHONE vppr naam, " +#~ "emailadresm en telefoonnummer van contactpersoon in te voegen.
                          Gebruik #_ADDBOOKINGFORM om het boekingsformulier te tonen " +#~ "(bij gebruik van RSVP).
                          Gebruik#_REMOVEBOOKINGFORM om " +#~ "het annuleringsformulier te tonen." + +#~ msgid "Events page title" +#~ msgstr "Titel van evenementen pagina" + +#~ msgid "Single location page title format" +#~ msgstr "Enkele locatie titel opmaak" + +#~ msgid "" +#~ "The format of a single location page title.
                          Follow the previous " +#~ "formatting instructions." +#~ msgstr "" +#~ "De opmaak van de titel op pagina van een enkele locatie.
                          Volg eerder " +#~ "genoemde opmaak instructies." + +#~ msgid "" +#~ "The format of a single location page.
                          Insert one or more of the " +#~ "following placeholders: #_NAME, #_ADDRESS, " +#~ "#_TOWN, #_DESCRIPTION.
                          Use #_MAP to display a map of the event location, and #_IMAGE to " +#~ "display an image of the location.
                          Use #_NEXTEVENTS to " +#~ "insert a list of the upcoming events, #_PASTEVENTS for a " +#~ "list of past events, #_ALLEVENTS for a list of all events " +#~ "taking place in this location." +#~ msgstr "" +#~ "Opmaak voor een pagina met een enkele locatie
                          Gebruik een van de " +#~ "volgende verwijzingen:#_NAME, #_ADDRESS, " +#~ "#_TOWN, #_DESCRIPTION.
                          Gebruik " +#~ "#_MAP om een kaart met de locatie van het evenement toe te " +#~ "voegen, en #_IMAGE om een afbeelding van de locatie te tonen." +#~ "
                          Gebruik #_NEXTEVENTS om een lijst met volgende " +#~ "evenementen te tonen, #_PASTEVENTS voor een lijst met " +#~ "evenementen in het verleden, #_ALLEVENTS voor een lijst met " +#~ "alle evenementen op deze locatie." + +#~ msgid "" +#~ "The format of of the text appearing in the baloon describing the location " +#~ "in the map.
                          Insert one or more of the following placeholders: " +#~ "#_NAME, #_ADDRESS, #_TOWN, " +#~ "#_DESCRIPTION or #_IMAGE." +#~ msgstr "" +#~ "De opmaak voor de tekst die in de ballon op de kaart wordt weergegeven." +#~ "
                          Gebruik een of meer van de volgende verwijzingen: #_NAME, #_ADDRESS, #_TOWN, #_DESCRIPTION of #_IMAGE." + +#~ msgid "Default location event list format" +#~ msgstr "Opmaak voor standaard locatielijst" + +#~ msgid "Default no events message" +#~ msgstr "Standaard 'geen evenement' bericht" + +#~ msgid "" +#~ "The format of the description of each item in the events RSS feed. Follow " +#~ "the previous formatting instructions." +#~ msgstr "De opmaak van de tekst van elk evenement in de RSS feed" + +#~ msgid "Enable the RSVP e-mail notifications?" +#~ msgstr "RSVP e-mail notificaties aanzetten?" + +#~ msgid "" +#~ "The format or the email which will be sent to the contact person. Follow " +#~ "the events formatting instructions.
                          Use #_RESPNAME, " +#~ "#_RESPEMAIL and #_RESPPHONE to display " +#~ "respectively the name, e-mail, address and phone of the respondent.
                          Use #_SPACES to display the number of spaces reserved by " +#~ "the respondent. Use #_COMMENT to display the respondent's " +#~ "comment.
                          Use #_BOOKEDSEATS and #_AVAILABLESEATS to display respectively the number of booked and available seats." +#~ msgstr "" +#~ "Opmaak van de email die verzonden wordt aan de contactpersoon. " +#~ "#_RESPNAME, #_RESPEMAIL en #_RESPPHONE voor naam, email, adres en telefoonnummer van de respondent.
                          Gebruik #_SPACES om aantal plaatsen die respondent " +#~ "reserveerde te tonen. #_COMMENT om commentaar van de " +#~ "respondent te tonen.
                          Gebrruik #_BOOKEDSEATS en " +#~ "#_AVAILABLESEATS om aantal gereserveerde en aantal " +#~ "beschikbare plaatsen te tonen." + +#~ msgid "" +#~ "The format or the email which will be sent to reposdent. Follow the " +#~ "events formatting instructions.
                          Use #_RESPNAME to " +#~ "display the name of the respondent.
                          Use #_CONTACTNAME " +#~ "and #_CONTACTEMAIL a to display respectively the name and e-" +#~ "mail of the contact person.
                          Use #_SPACES to display the " +#~ "number of spaces reserved by the respondent. Use #_COMMENT " +#~ "to display the respondent's comment." +#~ msgstr "" +#~ "Opmaak van de mail die naar de respondent wordt gestuurd.
                          #_RESPNAMEvoor naam van de respondent.
                          " +#~ "#_CONTACTNAME en #_CONTACTEMAILvoor naam en " +#~ "email van de contactpersoon.
                          gebruik #_SPACES om aantal " +#~ "plaatsen die respondent reserveerde te tonen en #_COMMENT om " +#~ "respondent's opmerkingen te tonen." + +#~ msgid "Default notification receiver address" +#~ msgstr "Standaard adres voor de ontvanger van notificaties" + +#~ msgid "Insert the address of the receiver of your notifications" +#~ msgstr "Voer het adres in van de ontvanger van notificaties" + +#~ msgid "" +#~ "Insert the address of the notification sender. It must corresponds with " +#~ "your gmail account user" +#~ msgstr "" +#~ "Voer het adres in van de afzender van notificaties. Het moet " +#~ "corresponderen met uw mail account gebruiker" + +#~ msgid "No people have responded to your events yet!" +#~ msgstr "Er zijn nog geen reakties op uw evenementen!" + +#~ msgid "" +#~ "This table collects the data about the people who responded to your events" +#~ msgstr "" +#~ "Deze tabel verzamelt gegevens van de mensen die gereageerd hebben op uw " +#~ "evenementen" + +#~ msgid "There are no bookings associated to this name and e-mail" +#~ msgstr "Er zijn geen reserveringen voor deze naam/e-mail" + +#~ msgid "E-Mail" +#~ msgstr "Email" + +#~ msgid "Hide cancellation form" +#~ msgstr "Annuleringsscherm verbergen" + +#~ msgid "However, we were not able to send you an email." +#~ msgstr "We konden u echter geen emailbericht verzenden" + +#~ msgid "There was a problem saving the location so event was not saved." +#~ msgstr "" +#~ "Er ging iets mis bij opslaan van de locatie. evenement is niet opgeslagen" + +#~ msgid "Could not save the event details due to a database error." +#~ msgstr "Er ging iets fout in de database, evenement is niet opgeslagen" + +#~ msgid "The location name" +#~ msgstr "Naam van de locatie" + +#~ msgid "The image could not be loaded" +#~ msgstr "Afbeelding kon niet worden geladen" + +#~ msgid " is missing!" +#~ msgstr "ontbreekt!" + +#~ msgid "Please provide a valid email address." +#~ msgstr "Geef a.u.b. een geldig emailadres op" + +#~ msgid "" +#~ "

                          Hey, %s, welcome to Events Manager! " +#~ "We hope you like it around here.

                          \n" +#~ "\t\t

                          Now it's time to insert events lists through widgets, template tags or shortcodes.

                          \n" +#~ "\t\t

                          By the way, have you taken a look at the Settings page? That's where you customize the " +#~ "way events and locations are displayed.

                          \n" +#~ "\t\t

                          What? Tired of seeing this advice? I hear you, click here and you won't see " +#~ "this again!

                          " +#~ msgstr "" +#~ "

                          Hallo, %s, welkom bij Events manager! We hopen dat het hier bevalt.

                          \n" +#~ " \t\t

                          Het moment is gekomen om evenementen toe te voegen met de widgets, sjabloon tags of de shortcodes.

                          \n" +#~ "\t\t

                          Heeft u al een kijkje genomen in de instellingen? Daar kan van alles worden ingesteld voor " +#~ "de evenementen en locaties.

                          \n" +#~ "\t\t

                          Wat? Bent u dit advies beu? Okay, okay , klik hieren u zult het bericht niet " +#~ "meer zien!

                          " + +#~ msgid "" +#~ "We could not mirgrate old recurrence data over. DONT WORRY! You can just " +#~ "delete the current plugin, and re-install the previous 2.2.2 version and " +#~ "you wont lose any of your data. Either way, please contact the developers " +#~ "to let them know of this bug." +#~ msgstr "" +#~ "We konden de oude herhalings gegevens niet migreren. Geen zorgen. U kunt " +#~ "de huidige plugin verwijderen en de vorige versie installeren. U verliest " +#~ "zo geen gegevens. Neem wel even contact op met de ontwikkelaars over deze " +#~ "'bug'." + +#~ msgid "" +#~ "Events Manager successfully imported your events, please check your " +#~ "records to verify." +#~ msgstr "" +#~ "Uw evenementen zijn succesvol geïmporteerd. Check de gegevens voor de " +#~ "zekerheid." + +#~ msgid "" +#~ "Something has gone wrong when importing your old event. See the support page for more information. Dismiss this " +#~ "message" +#~ msgstr "" +#~ "Er ging iets mis tijdens de import van een oud evenement. Check de support pagina voor meer informatie. Negeer dit bericht" + +#~ msgid "Ach, some problems here:" +#~ msgstr "Oei, problemen hier:" + +#~ msgid "Scope of the events" +#~ msgstr "Scope van evenementen" + +#~ msgid "Locations with upcoming events" +#~ msgstr "Locaties waar evenementen zullen plaatsvinden" + +#~ msgid "Locations with past events " +#~ msgstr "Locaties waar evenementen hebben plaatsgevonden" + +#~ msgid "http://davidebenini.it/wordpress-plugins/events-manager/" +#~ msgstr "http://davidebenini.it/wordpress-plugins/events-manager/" + +#~ msgid "" +#~ "Manage events specifying precise spatial data (Location, Town, Province, " +#~ "etc)." +#~ msgstr "Beheer evenementen in detail" + +#~ msgid "Davide Benini, Marcus Sykes" +#~ msgstr "Davide Benini, Marcus Sykes" + +#~ msgid "http://www.davidebenini.it/blog" +#~ msgstr "http://www.davidebenini.it/blog" diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-pt_BR.mo b/wp-content/plugins/events-manager/includes/langs/dbem-pt_BR.mo new file mode 100644 index 0000000..b3c141d Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-pt_BR.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-pt_BR.po b/wp-content/plugins/events-manager/includes/langs/dbem-pt_BR.po new file mode 100644 index 0000000..8556b5d --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-pt_BR.po @@ -0,0 +1,4112 @@ +# Copyright (C) 2010 Events Manager +# This file is distributed under the same license as the Events Manager package. +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.0.83\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-06-28 08:06:36+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2012-05-24 18:42+0100\n" +"Last-Translator: Marcus Sykes \n" +"Language-Team: <>\n" +"X-Poedit-Language: Portuguese\n" +"X-Poedit-Country: PORTUGAL\n" + +#: buddypress/bp-em-activity.php:67 +msgid "%s added the event %s" +msgstr "%s adicionado o evento %s" + +#: buddypress/bp-em-activity.php:89 +msgid "%s is attending %s." +msgstr "%s está participando.%s." + +#: buddypress/bp-em-activity.php:91 +msgid "%s will not be attending %s anymore." +msgstr "%s não participará %s mais." + +#: buddypress/bp-em-admin.php:33 +msgid "Events Admin" +msgstr "Administração de Eventos" + +#: buddypress/bp-em-admin.php:36 +msgid "Settings Updated." +msgstr "Configurações atualizadas." + +#: buddypress/bp-em-admin.php:42 +msgid "Option One" +msgstr "Opção um" + +#: buddypress/bp-em-admin.php:47 +msgid "Option Two" +msgstr "Opção Dois" + +#: buddypress/bp-em-admin.php:54 +#: buddypress/screens/settings.php:46 +msgid "Save Settings" +msgstr "Salvar configurações" + +#: buddypress/bp-em-notifications.php:44 +#: buddypress/screens/profile.php:27 +#: buddypress/bp-em-core.php:55 +#: buddypress/bp-em-core.php:117 +#: buddypress/bp-em-core.php:128 +#: events-manager.php:319 +#: em-template-tags.php:74 +#: em-actions.php:107 +#: em-install.php:301 +#: em-install.php:344 +#: em-install.php:381 +#: em-install.php:382 +#: em-install.php:388 +#: em-install.php:408 +#: em-install.php:508 +#: widgets/em-events.php:13 +#: admin/em-options.php:303 +msgid "Events" +msgstr "Eventos" + +#: buddypress/bp-em-notifications.php:45 +#: em-functions.php:436 +#: admin/em-options.php:408 +msgid "Yes" +msgstr "Sim" + +#: buddypress/bp-em-notifications.php:46 +#: em-functions.php:437 +#: admin/em-options.php:409 +msgid "No" +msgstr "Não" + +#: buddypress/bp-em-notifications.php:50 +msgid "Action One" +msgstr "Primeira ação" + +#: buddypress/bp-em-notifications.php:56 +msgid "Action Two" +msgstr "Segunda ação" + +#: buddypress/bp-em-notifications.php:87 +#: buddypress/bp-em-notifications.php:89 +#: buddypress/bp-em-notifications.php:96 +#: buddypress/bp-em-notifications.php:98 +#: buddypress/bp-em-notifications.php:104 +#: buddypress/bp-em-notifications.php:106 +#: em-install.php:456 +msgid "My Bookings" +msgstr "Minhas Reservas" + +#: buddypress/bp-em-notifications.php:87 +msgid "You have a pending booking" +msgstr "Você tem uma reserva pendente" + +#: buddypress/bp-em-notifications.php:89 +msgid "You have %s pending bookings" +msgstr "Você tem %s reservas pendentes" + +#: buddypress/bp-em-notifications.php:96 +msgid "You have a confirmed booking" +msgstr "Você tem uma reserva confirmada" + +#: buddypress/bp-em-notifications.php:98 +msgid "You have %s confirmed bookings" +msgstr "Você tem %s reservas confirmadas" + +#: buddypress/bp-em-notifications.php:104 +msgid "A user cancelled a booking" +msgstr "Um usuário cancelou a sua reserva" + +#: buddypress/bp-em-notifications.php:106 +msgid "%s users cancelled bookings." +msgstr "%s usuários cancelaram suas reservas." + +#: buddypress/screens/my-bookings.php:32 +#: buddypress/bp-em-core.php:106 +msgid "My Event Bookings" +msgstr "Minhas reservas de Eventos" + +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Você está vendo sua página pública, isto é o que os outros usuários verão." + +#: buddypress/screens/profile.php:34 +#: buddypress/screens/my-events.php:40 +#: buddypress/bp-em-core.php:86 +msgid "My Events" +msgstr "Meus Eventos" + +#: buddypress/screens/profile.php:47 +#: templates/buddypress/group-events.php:35 +#: templates/buddypress/my-group-events.php:35 +#: em-install.php:463 +msgid "No Events" +msgstr "Nenhum Eventos" + +#: buddypress/screens/profile.php:51 +#: buddypress/screens/attending.php:23 +#: buddypress/bp-em-core.php:76 +msgid "Events I'm Attending" +msgstr "Eventos que vou participar" + +#: buddypress/screens/settings.php:26 +msgid "Events Settings Header" +msgstr "Configurações do cabeçalho de Eventos" + +#: buddypress/screens/settings.php:30 +msgid "Events Settings" +msgstr "Configurações de eventos" + +#: buddypress/screens/settings.php:38 +msgid "Changes Saved." +msgstr "Alterações Salvas." + +#: buddypress/screens/settings.php:44 +msgid "Do you love clicking checkboxes?" +msgstr "Você gosta de clicar checkboxes?" + +#: buddypress/screens/group-events.php:17 +#: buddypress/screens/my-group-events.php:17 +msgid "Group Events" +msgstr "Eventos para grupos" + +#: buddypress/screens/my-events.php:54 +#: templates/forms/event-editor.php:15 +#: admin/em-event.php:25 +msgid "Edit Event" +msgstr "Editar Evento" + +#: buddypress/screens/my-events.php:56 +msgid "Add Event" +msgstr "Adicionar Evento" + +#: buddypress/screens/my-locations.php:47 +#: buddypress/bp-em-core.php:96 +msgid "My Locations" +msgstr "Meus Locais" + +#: buddypress/screens/my-locations.php:61 +msgid "Edit Location" +msgstr "Editar Localização" + +#: buddypress/screens/my-locations.php:63 +msgid "Add Location" +msgstr "Adicionar Localização" + +#: buddypress/bp-em-core.php:66 +msgid "My Profile" +msgstr "Meu Perfil" + +#: buddypress/bp-em-core.php:149 +msgid "Events (%s)" +msgstr "Eventos (%s)" + +#: buddypress/bp-em-core.php:179 +#: classes/em-event.php:793 +#: templates/forms/event-editor.php:367 +#: events-manager.php:322 +#: admin/em-event.php:573 +msgid "Edit" +msgstr "Editar" + +#: buddypress/bp-em-core.php:179 +#: classes/em-event.php:553 +#: classes/em-event.php:793 +#: templates/forms/event-editor.php:6 +#: em-actions.php:107 +#: em-install.php:348 +#: em-install.php:373 +#: admin/em-event.php:14 +#: admin/bookings/em-events.php:101 +#: admin/em-options.php:312 +msgid "Event" +msgstr "Evento" + +#: classes/em-booking.php:96 +#: classes/em-event.php:207 +#: templates/buddypress/my-events.php:41 +#: templates/buddypress/my-events.php:118 +#: admin/bookings/em-events.php:136 +#: admin/em-events.php:66 +#: admin/em-events.php:166 +msgid "Pending" +msgstr "Pendente" + +#: classes/em-booking.php:97 +#: classes/em-event.php:208 +#: admin/em-events.php:65 +msgid "Approved" +msgstr "Aprovado" + +#: classes/em-booking.php:98 +msgid "Rejected" +msgstr "Rejeitado" + +#: classes/em-booking.php:99 +#: em-actions.php:354 +msgid "Cancelled" +msgstr "Cancelado" + +#: classes/em-booking.php:100 +msgid "Awaiting Online Payment" +msgstr "Aguardando pagamento on-line" + +#: classes/em-booking.php:101 +msgid "Awaiting Payment" +msgstr "Aguardando pagamento" + +#: classes/em-booking.php:125 +#: classes/em-ticket.php:101 +#: classes/em-ticket-booking.php:67 +msgid "Changes saved" +msgstr "Alterações salvas" + +#: classes/em-booking.php:130 +msgid "Your booking has been recorded" +msgstr "A sua reserva foi registrada" + +#: classes/em-booking.php:133 +#: classes/em-booking.php:134 +#: classes/em-booking.php:143 +#: classes/em-booking.php:152 +#: classes/em-booking.php:158 +#: classes/em-tickets-bookings.php:69 +#: classes/em-tickets-bookings.php:70 +msgid "There was a problem saving the booking." +msgstr "Houve um problema ao salvar a sua reserva." + +#: classes/em-booking.php:154 +#: classes/em-booking.php:160 +msgid "You cannot manage this %s." +msgstr "Você não pode gerir este %s." + +#: classes/em-booking.php:154 +#: classes/em-booking.php:160 +#: classes/em-booking.php:370 +#: classes/em-booking.php:372 +#: classes/em-tickets-bookings.php:141 +#: classes/em-bookings.php:106 +msgid "Booking" +msgstr "Reserva" + +#: classes/em-booking.php:210 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Você está tentando reservar um bilhete inexistente para este evento." + +#: classes/em-booking.php:231 +msgid "You must request at least one space to book an event." +msgstr "Você deve solicitar pelo menos um espaço para reservar um evento." + +#: classes/em-booking.php:370 +msgid "%s deleted" +msgstr "%s excluído" + +#: classes/em-booking.php:372 +msgid "%s could not be deleted" +msgstr "%s não pôde ser excluída" + +#: classes/em-booking.php:416 +msgid "Not approved, spaces full." +msgstr "Não aprovado, espaços esgotados." + +#: classes/em-booking.php:424 +msgid "Booking %s." +msgstr "Reserva %s." + +#: classes/em-booking.php:427 +msgid "Mail Sent." +msgstr "E-mails enviado." + +#: classes/em-booking.php:430 +#: classes/em-booking.php:431 +msgid "ERROR : Mail Not Sent." +msgstr "ERRO: Mail não enviado." + +#: classes/em-booking.php:437 +#: classes/em-booking.php:438 +#: classes/em-event.php:535 +msgid "Booking could not be %s." +msgstr "Reserva não poderia ser %s." + +#: classes/em-booking.php:453 +msgid "Booking note successfully added." +msgstr "Nota da reserva adicionada com sucesso." + +#: classes/em-booking.php:538 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "E-mail de confirmação não pôde ser enviada ao contato da pessoa.Essa pessoa deveria ter recebido seu e-mail (somente o administrador vai ver este aviso)." + +#: classes/em-booking.php:545 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "E-mail de confirmação não pôde ser enviada a admnistração.A pessoa registrada deveria ter recebido seu e-mail (somente o administrador vai ver este aviso)." + +#: classes/em-tickets-bookings.php:91 +#: classes/em-bookings.php:89 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "A sua reserva não pode ser efetuada, não há lugares disponíveis!" + +#: classes/em-tickets-bookings.php:141 +#: templates/forms/event-editor.php:6 +#: templates/forms/location-editor.php:7 +#: admin/em-event.php:14 +msgid "You do not have the rights to manage this %s." +msgstr "Você não tem permissão para gerir este %s." + +#: classes/em-tickets-bookings.php:169 +#: classes/em-tickets.php:130 +msgid "Standard" +msgstr "Padrão" + +#: classes/em-object.php:731 +msgid "However, the image could not be saved." +msgstr "No entanto, a imagem não pôde ser salva." + +#: classes/em-object.php:733 +msgid "The image could not be saved" +msgstr "A imagem não pôde ser salva" + +#: classes/em-object.php:737 +msgid "However, the image could not be saved:" +msgstr "No entanto, a imagem não pôde ser salva:" + +#: classes/em-object.php:754 +msgid "The image file is too big! Maximum size:" +msgstr "O arquivo de imagem é muito grande! Tamanho máximo:" + +#: classes/em-object.php:759 +msgid "The image is too big! Maximum size allowed:" +msgstr "A imagem é muito grande! Tamanho máximo permitido:" + +#: classes/em-object.php:762 +msgid "The image is in a wrong format!" +msgstr "A imagem está em um formato errado!" + +#: classes/em-categories.php:206 +#: classes/em-location.php:144 +#: classes/em-location.php:152 +msgid "Could not save the %s details due to a database error." +msgstr "Não foi possível salvar as %s informações devido a um erro de banco de dados." + +#: classes/em-categories.php:206 +#: admin/em-options.php:377 +#: admin/em-options.php:378 +msgid "category" +msgstr "categoria" + +#: classes/em-tickets.php:104 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "Você não pode excluir bilhetes se houver alguma reserva associada a eles. Favor excluir essas reservas em primeiro." + +#: classes/em-event.php:213 +msgid "WARNING: This is a recurring event." +msgstr "AVISO: Este é um evento recorrente." + +#: classes/em-event.php:213 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Modificações a este evento fará com que todas as recorrências deste evento a ser excluído e recriado e a reservas anterior será apagada! Você pode editar as recorrências individuais e dissociá-las com este evento recorrente." + +#: classes/em-event.php:215 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "AVISO: Este é um retorno em um conjunto de eventos recorrentes." + +#: classes/em-event.php:215 +msgid "If you update this event data and save, it will become an independent event, and will not be deleted or modified automatically if you reschedule the original recurring event details." +msgstr "Se você atualizar os dados de eventos e salvar, ele se tornará um evento independente, e não serão excluídas ou modificadas automaticamente se você reagendar os detalhes do evento original recorrente." + +#: classes/em-event.php:218 +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "ATENÇÃO: Este é um evento que pertence ao grupo \"%s\". Outro grupo de Admins também podem modificar este evento." + +#: classes/em-event.php:339 +msgid "There was a problem saving the location so event was not saved." +msgstr "Houve um problema ao salvar o local de modo que o evento não foi salvo." + +#: classes/em-event.php:380 +#: classes/em-event.php:431 +msgid "Something went wrong with creating tickets." +msgstr "Algo deu errado na criação dos ingressos." + +#: classes/em-event.php:392 +#: classes/em-event.php:442 +msgid "Something went wrong with the recurrence update..." +msgstr "Algo deu errado com a atualização da recorrência ..." + +#: classes/em-event.php:393 +#: classes/em-event.php:443 +msgid "There was a problem saving the recurring events." +msgstr "Houve um problema para salvar a eventos recorrentes." + +#: classes/em-event.php:398 +msgid "New recurrent event inserted!" +msgstr "Novo evento recorrente inserido!" + +#: classes/em-event.php:402 +msgid "New event successfully inserted!" +msgstr "Novo evento inserido com sucesso!" + +#: classes/em-event.php:405 +#: classes/em-event.php:450 +msgid "Could not save the event details due to a database error." +msgstr "Não foi possível salvar os detalhes do evento devido a um erro no banco de dados." + +#: classes/em-event.php:429 +#: classes/em-event.php:454 +msgid "updated" +msgstr "atualizado" + +#: classes/em-event.php:446 +msgid "Recurrence updated!" +msgstr "Recorrência atualizada!" + +#: classes/em-event.php:531 +msgid "Event %s." +msgstr "Evento %s." + +#: classes/em-event.php:553 +msgid "%s successfully duplicated." +msgstr "%s reproduzido com sucesso." + +#: classes/em-event.php:557 +msgid "You are not allowed to manage this %s." +msgstr "Você não tem permissão para gerir este %s." + +#: classes/em-event.php:557 +#: em-actions.php:93 +msgid "event" +msgstr "evento" + +#: classes/em-event.php:578 +#: classes/em-ticket.php:159 +#: classes/em-ticket-booking.php:102 +msgid "Missing fields: " +msgstr "Faltando campos:" + +#: classes/em-event.php:581 +msgid "Since the event is repeated, you must specify an event date." +msgstr "Uma vez que o evento se repete, você deve especificar uma data de evento." + +#: classes/em-event.php:585 +msgid "Events cannot start after they end." +msgstr "Eventos não podem começar depois de terem terminado." + +#: classes/em-event.php:588 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Datas devem ter a formatação correta. Por favor, use o selecionador de data fornecido." + +#: classes/em-event.php:866 +#: templates/placeholders/bookingform.php:57 +#: templates/placeholders/bookingform.php:86 +#: em-bookings.php:129 +#: em-bookings.php:151 +msgid "N/A" +msgstr "N / A" + +#: classes/em-event.php:876 +#: classes/em-event.php:885 +msgid "Profile" +msgstr "Perfil" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Sunday" +msgstr "Domingo" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Monday" +msgstr "Segunda-feira" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Tuesday" +msgstr "Terça-feira" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Wednesday" +msgstr "Quarta-feira" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Thursday" +msgstr "Quinta-feira" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Friday" +msgstr "Sexta-feira" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Saturday" +msgstr "Sábado" + +#: classes/em-event.php:1240 +msgid "the first %s of the month" +msgstr "o primeiro %s do mês" + +#: classes/em-event.php:1240 +msgid "the second %s of the month" +msgstr "o segundo %s do mês" + +#: classes/em-event.php:1240 +msgid "the third %s of the month" +msgstr "o terceiro %s do mês" + +#: classes/em-event.php:1240 +msgid "the fourth %s of the month" +msgstr "o quarto %s do mês" + +#: classes/em-event.php:1240 +msgid "the last %s of the month" +msgstr "o último %s do mês" + +#: classes/em-event.php:1241 +msgid "From %1$s to %2$s" +msgstr "De %1$s para %2$s" + +#: classes/em-event.php:1243 +msgid "everyday" +msgstr "totdo os dias" + +#: classes/em-event.php:1245 +msgid "every %s days" +msgstr "todo %s dias" + +#: classes/em-event.php:1254 +msgid "every week" +msgstr "todas as semanas" + +#: classes/em-event.php:1256 +msgid "every %s weeks" +msgstr "todas %s semanas" + +#: classes/em-event.php:1267 +msgid "every %s months" +msgstr "todos %s meses" + +#: classes/em-bookings.php:69 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Confirmação de reserva bem sucedida, aguardando confirmação(você também receberá um e-mail uma vez confirmado)." + +#: classes/em-bookings.php:71 +msgid "Booking successful." +msgstr "Reserva feita com sucesso." + +#: classes/em-bookings.php:74 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "No entanto, tivemos problemas ao enviar um e-mail de confirmação para você e / ou a pessoa de contacto evento. Você também pode entrar em contato diretamente, informando sobre o erro." + +#: classes/em-bookings.php:86 +msgid "Booking could not be created" +msgstr "Reserva não pôde ser criada" + +#: classes/em-bookings.php:106 +msgid "%s created." +msgstr "%s criado." + +#: classes/em-bookings.php:249 +#: classes/em-bookings.php:255 +msgid "Bookings %s. Mails Sent." +msgstr "Reservas %s. Mails enviados." + +#: classes/em-bookings.php:259 +msgid "An error occurred." +msgstr "Um erro ocorreu." + +#: classes/em-bookings.php:528 +msgid "Booking details for \"%s\" as of %s" +msgstr "Detalhes para reserva \"%s\", a partir de %s" + +#: classes/em-ticket.php:51 +msgid "Standard Ticket" +msgstr "Ingresso padrão" + +#: classes/em-ticket.php:106 +msgid "Ticket created" +msgstr "Ingresso criado" + +#: classes/em-ticket.php:109 +#: classes/em-ticket.php:110 +#: classes/em-ticket.php:114 +#: classes/em-ticket.php:115 +msgid "There was a problem saving the ticket." +msgstr "Houve um problema ao salvar o ingresso." + +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "Você não pode excluir um ingresso que já tenha uma reserva." + +#: classes/em-ticket-booking.php:72 +msgid "Ticket booking created" +msgstr "Reserva de ingresso realizado" + +#: classes/em-ticket-booking.php:75 +#: classes/em-ticket-booking.php:76 +#: classes/em-ticket-booking.php:80 +#: classes/em-ticket-booking.php:81 +msgid "There was a problem saving the ticket booking." +msgstr "Houve um problema ao salvar a reserva dos ingressos." + +#: classes/em-mailer.php:67 +msgid "Please supply a valid email format." +msgstr "Por favor, forneça um formato de e-mail válido." + +#: classes/em-people.php:81 +msgid "User deleted by administrators" +msgstr "Usuário excluído pelos administradores" + +#: classes/em-person.php:60 +#: templates/buddypress/group-events.php:12 +#: templates/buddypress/my-events.php:73 +#: templates/buddypress/my-locations.php:53 +#: templates/buddypress/my-locations.php:62 +#: templates/buddypress/my-group-events.php:12 +#: templates/forms/tickets-form.php:4 +#: templates/placeholders/bookingform.php:98 +#: admin/em-categories.php:72 +#: admin/em-categories.php:79 +#: admin/em-locations.php:78 +#: admin/em-locations.php:88 +#: admin/em-event.php:291 +#: admin/em-bookings.php:180 +#: admin/em-bookings.php:240 +#: admin/em-people.php:30 +#: admin/em-events.php:121 +msgid "Name" +msgstr "Nome" + +#: classes/em-person.php:61 +msgid "Email" +msgstr "E-mail" + +#: classes/em-person.php:62 +#: templates/placeholders/bookingform.php:102 +#: admin/em-people.php:72 +msgid "Phone" +msgstr "Telefone" + +#: classes/em-location.php:50 +msgid "The location name" +msgstr "O nome do local" + +#: classes/em-location.php:50 +msgid "The location address" +msgstr "O endereço do local" + +#: classes/em-location.php:50 +msgid "The location town" +msgstr "A localização da cidade" + +#: classes/em-location.php:50 +msgid "The country" +msgstr "O país" + +#: classes/em-location.php:111 +#: classes/em-location.php:113 +#: classes/em-category.php:70 +msgid " is required." +msgstr "é necessária." + +#: classes/em-location.php:142 +#: classes/em-category.php:90 +msgid "%s successfully updated." +msgstr "%s atualizado com sucesso." + +#: classes/em-location.php:142 +#: classes/em-location.php:150 +#: classes/em-location.php:194 +#: classes/em-location.php:196 +#: templates/buddypress/group-events.php:13 +#: templates/buddypress/my-events.php:75 +#: templates/buddypress/my-group-events.php:13 +#: templates/forms/location-editor.php:41 +#: em-actions.php:169 +#: admin/em-locations.php:178 +#: admin/em-locations.php:211 +#: admin/em-event.php:366 +#: admin/em-bookings.php:135 +#: admin/em-options.php:350 +#: admin/em-events.php:123 +msgid "Location" +msgstr "Localização" + +#: classes/em-location.php:144 +#: classes/em-location.php:152 +#: templates/forms/location-editor.php:7 +#: admin/em-options.php:352 +#: admin/em-options.php:353 +msgid "location" +msgstr "localização" + +#: classes/em-location.php:150 +#: classes/em-category.php:96 +msgid "%s successfully added." +msgstr "%s adicionado com sucesso." + +#: classes/em-location.php:157 +#: classes/em-category.php:100 +msgid "You do not have permission to create/edit %s." +msgstr "Você não tem permissão para criar / editar %s." + +#: classes/em-location.php:157 +#: classes/em-location.php:199 +#: events-manager.php:211 +#: events-manager.php:212 +#: events-manager.php:215 +#: events-manager.php:217 +#: events-manager.php:219 +#: admin/em-options.php:344 +#: admin/em-options.php:345 +#: admin/em-options.php:346 +#: admin/em-options.php:347 +#: admin/em-options.php:348 +msgid "locations" +msgstr "locais" + +#: classes/em-location.php:194 +#: em-actions.php:109 +msgid "%s successfully deleted." +msgstr "%s removido com sucesso." + +#: classes/em-location.php:196 +#: em-actions.php:112 +msgid "%s could not be deleted." +msgstr "%s não pôde ser excluído." + +#: classes/em-location.php:199 +msgid "You do not have permission to delete %s." +msgstr "Você não tem permissão para excluir %s." + +#: classes/em-category.php:31 +msgid "The category name" +msgstr "O nome da categoria" + +#: classes/em-category.php:90 +#: classes/em-category.php:96 +#: templates/buddypress/my-events.php:136 +#: em-actions.php:239 +#: admin/em-categories.php:166 +#: admin/em-event.php:265 +#: admin/em-options.php:375 +msgid "Category" +msgstr "Categoria" + +#: classes/em-category.php:100 +#: events-manager.php:209 +#: admin/em-options.php:369 +#: admin/em-options.php:370 +#: admin/em-options.php:371 +#: admin/em-options.php:372 +#: admin/em-options.php:373 +msgid "categories" +msgstr "categorias" + +#: em-template-tags-depreciated.php:146 +msgid "Ach, some problems here:" +msgstr "Ach, alguns problemas aqui:" + +#: templates/buddypress/group-events.php:14 +#: templates/buddypress/my-events.php:76 +#: templates/buddypress/my-group-events.php:14 +#: admin/bookings/em-events.php:102 +#: admin/em-events.php:124 +msgid "Date and time" +msgstr "Data e hora" + +#: templates/buddypress/group-events.php:25 +#: templates/buddypress/my-group-events.php:25 +msgid "edit" +msgstr "editar" + +#: templates/buddypress/my-events.php:37 +#: templates/buddypress/my-locations.php:25 +#: admin/em-categories.php:58 +#: admin/em-locations.php:42 +#: admin/em-events.php:43 +msgid "Add New" +msgstr "Adicionar Novo" + +#: templates/buddypress/my-events.php:39 +msgid "Upcoming" +msgstr "Próximos" + +#: templates/buddypress/my-events.php:43 +#: admin/bookings/em-events.php:29 +msgid "Past Events" +msgstr "Eventos passados" + +#: templates/buddypress/my-events.php:46 +#: templates/buddypress/my-events.php:48 +#: templates/templates/events-search.php:10 +#: admin/em-events.php:70 +#: admin/em-events.php:72 +msgid "Search Events" +msgstr "Buscar Eventos" + +#: templates/buddypress/my-events.php:63 +#: admin/bookings/em-events.php:91 +#: admin/em-events.php:111 +msgid "no events" +msgstr "sem eventos" + +#: templates/buddypress/my-events.php:115 +#: events-manager.php:325 +#: em-events.php:130 +#: admin/em-events.php:163 +msgid "Bookings" +msgstr "Reservas" + +#: templates/buddypress/my-events.php:116 +#: admin/em-people.php:48 +#: admin/em-events.php:164 +msgid "Booked" +msgstr "Reservado" + +#: templates/buddypress/my-events.php:124 +#: templates/buddypress/my-events.php:167 +#: templates/buddypress/my-events.php:169 +#: templates/forms/event-editor.php:369 +#: admin/em-event.php:575 +#: admin/bookings/em-rejected.php:113 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-confirmed.php:118 +#: admin/em-events.php:171 +#: admin/em-events.php:203 +msgid "Delete" +msgstr "Excluir" + +#: templates/buddypress/my-events.php:129 +#: admin/em-events.php:178 +msgid "Duplicate this event" +msgstr "Duplicar este evento" + +#: templates/buddypress/my-events.php:155 +#: templates/buddypress/my-events.php:166 +#: templates/forms/event-editor.php:13 +#: templates/forms/event-editor.php:174 +#: admin/em-event.php:23 +#: admin/em-event.php:145 +#: admin/em-events.php:202 +msgid "Reschedule" +msgstr "Reagendar" + +#: templates/buddypress/my-events.php:162 +#: admin/em-events.php:198 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "ATENÇÃO! Você vai excluir todas as recorrências deste evento, incluindo o histórico de reservas associadas a qualquer evento desta recorrência. Para manter as informações de reserva, vá para o único evento relevante e salve-o para retirá-la desta série de recorrências." + +#: templates/buddypress/my-locations.php:27 +#: em-events.php:130 +#: admin/em-locations.php:52 +msgid "My %s" +msgstr "Minha %s" + +#: templates/buddypress/my-locations.php:27 +#: templates/buddypress/my-locations.php:30 +#: events-manager.php:324 +#: em-actions.php:169 +#: em-install.php:348 +#: em-install.php:349 +#: admin/em-locations.php:41 +#: admin/em-locations.php:52 +#: admin/em-locations.php:55 +#: admin/em-options.php:342 +#: admin/em-options.php:344 +#: admin/em-options.php:345 +#: admin/em-options.php:346 +#: admin/em-options.php:347 +#: admin/em-options.php:348 +msgid "Locations" +msgstr "Locais" + +#: templates/buddypress/my-locations.php:30 +#: admin/em-locations.php:55 +msgid "All %s" +msgstr "Todos %s" + +#: templates/buddypress/my-locations.php:37 +#: admin/em-locations.php:62 +#: admin/bookings/em-rejected.php:49 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:57 +#: admin/em-events.php:78 +msgid "Bulk Actions" +msgstr "Ações globais" + +#: templates/buddypress/my-locations.php:38 +#: admin/em-locations.php:63 +#: admin/bookings/em-events.php:58 +#: admin/em-events.php:79 +msgid "Delete selected" +msgstr "Excluir os selecionados" + +#: templates/buddypress/my-locations.php:40 +#: admin/em-locations.php:65 +#: admin/bookings/em-events.php:60 +#: admin/em-events.php:81 +msgid "Apply" +msgstr "Aplicar" + +#: templates/buddypress/my-locations.php:54 +#: templates/buddypress/my-locations.php:63 +#: admin/em-locations.php:79 +#: admin/em-locations.php:89 +msgid "Address" +msgstr "Endereço" + +#: templates/buddypress/my-locations.php:55 +#: templates/buddypress/my-locations.php:64 +#: admin/em-locations.php:81 +#: admin/em-locations.php:91 +msgid "State" +msgstr "Estado" + +#: templates/buddypress/my-locations.php:56 +#: templates/buddypress/my-locations.php:65 +#: admin/em-locations.php:82 +#: admin/em-locations.php:92 +msgid "Country" +msgstr "País" + +#: templates/buddypress/my-locations.php:85 +#: admin/em-locations.php:113 +msgid "No venues have been inserted yet!" +msgstr "Nemhum local foi inseridos ainda!" + +#: templates/templates/my-bookings.php:73 +msgid "Are you sure you want to cancel your booking?" +msgstr "Tem certeza de que deseja cancelar a sua reserva?" + +#: templates/templates/my-bookings.php:73 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/templates/my-bookings.php:85 +msgid "You do not have any bookings." +msgstr "Você ainda não tem reservas." + +#: templates/templates/my-bookings.php:95 +msgid "Please Log In to view your bookings." +msgstr "Favor Login para ver as suas reservas." + +#: templates/templates/map-global.php:15 +#: templates/placeholders/locationmap.php:15 +msgid "Loading Map...." +msgstr "Carregando mapa ...." + +#: templates/templates/events-search.php:31 +msgid "All Categories" +msgstr "Todas as Categorias" + +#: templates/templates/events-search.php:39 +msgid "All Countries" +msgstr "Todos os Países" + +#: templates/templates/events-search.php:53 +#: em-actions.php:452 +msgid "All Regions" +msgstr "Todas as Regiões" + +#: templates/templates/events-search.php:70 +#: em-actions.php:429 +msgid "All States" +msgstr "Todos os Estados" + +#: templates/templates/events-search.php:88 +#: templates/templates/events-search.php:138 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +msgid "Search" +msgstr "Buscar" + +#: templates/templates/events-search.php:94 +#: templates/templates/events-search.php:95 +#: templates/templates/events-search.php:109 +msgid "Loading..." +msgstr "Carregando ..." + +#: templates/templates/events-search.php:135 +msgid "Searching..." +msgstr "Busca ..." + +#: templates/templates/ical.php:9 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Calendário" + +#: templates/forms/event-editor.php:6 +#: templates/forms/location-editor.php:7 +#: admin/em-categories.php:118 +#: admin/em-locations.php:125 +#: admin/em-event.php:14 +#: admin/em-bookings.php:107 +#: admin/em-bookings.php:163 +#: admin/em-bookings.php:213 +#: admin/em-bookings.php:351 +#: admin/em-people.php:9 +msgid "Unauthorized Access" +msgstr "Acesso não autorizado" + +#: templates/forms/event-editor.php:19 +#: admin/em-event.php:29 +msgid "Insert New Event" +msgstr "Inserir Novo Evento" + +#: templates/forms/event-editor.php:57 +#: admin/em-bookings.php:126 +msgid "Event Name" +msgstr "Nome do Evento" + +#: templates/forms/event-editor.php:61 +#: admin/em-event.php:296 +msgid "The event name. Example: Birthday party" +msgstr "O nome do evento. Exemplo: Festa de aniversário" + +#: templates/forms/event-editor.php:87 +#: admin/em-event.php:206 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Selecionar um grupo de administração para você anexar esse evento a ele. Note que todos os outros administradores desse grupo podem modificar a reserva, e você não será capaz de desanexar o evento sem excluí-lo." + +#: templates/forms/event-editor.php:93 +msgid "When" +msgstr "Quando" + +#: templates/forms/event-editor.php:96 +msgid "Starts on " +msgstr "Começa em" + +#: templates/forms/event-editor.php:99 +msgid "from" +msgstr "a partir de" + +#: templates/forms/event-editor.php:101 +#: templates/forms/ticket-form.php:18 +msgid "to" +msgstr "para" + +#: templates/forms/event-editor.php:103 +msgid "and ends on" +msgstr "e termina em" + +#: templates/forms/event-editor.php:109 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Este evento abrange todos os dias entre o início e término, com horário iinício/término aplicados para cada dia." + +#: templates/forms/event-editor.php:112 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Para um evento recorrente, um evento de um dia será criado em cada data recorrentes dentro deste intervalo de datas." + +#: templates/forms/event-editor.php:124 +msgid "This event repeats" +msgstr "Este evento se repetirá" + +#: templates/forms/event-editor.php:127 +#: admin/em-event.php:95 +msgid "Daily" +msgstr "Diariamente" + +#: templates/forms/event-editor.php:127 +#: admin/em-event.php:95 +msgid "Weekly" +msgstr "Semanal" + +#: templates/forms/event-editor.php:127 +#: admin/em-event.php:95 +msgid "Monthly" +msgstr "Mensal" + +#: templates/forms/event-editor.php:131 +msgid "every" +msgstr "cada" + +#: templates/forms/event-editor.php:134 +#: admin/em-event.php:104 +msgid "day" +msgstr "dia" + +#: templates/forms/event-editor.php:136 +#: admin/em-event.php:106 +msgid "days" +msgstr "dias" + +#: templates/forms/event-editor.php:138 +msgid "week on" +msgstr "semana em" + +#: templates/forms/event-editor.php:140 +msgid "weeks on" +msgstr "semanas em" + +#: templates/forms/event-editor.php:142 +msgid "month on the" +msgstr "mês na" + +#: templates/forms/event-editor.php:144 +msgid "months on the" +msgstr "meses na" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "first" +msgstr "primeiro" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "second" +msgstr "segundo" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "third" +msgstr "terceiro" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "fourth" +msgstr "quarto" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "last" +msgstr "último" + +#: templates/forms/event-editor.php:162 +msgid "of each month" +msgstr "de cada mês" + +#: templates/forms/event-editor.php:167 +#: admin/em-event.php:138 +msgid "Check if your event happens more than once according to a regular pattern" +msgstr "Verifique se o seu evento acontece mais de uma vez de acordo com um padrão regular" + +#: templates/forms/event-editor.php:179 +#: admin/em-event.php:150 +msgid "This is't a recurrent event" +msgstr "Este não é um evento recorrente" + +#: templates/forms/event-editor.php:186 +msgid "Where" +msgstr "Onde" + +#: templates/forms/event-editor.php:210 +msgid "Choose from one of your locations" +msgstr "Escolha a partir de algum de seus locais" + +#: templates/forms/event-editor.php:210 +msgid "or add a new location" +msgstr "ou adicionar um novo local" + +#: templates/forms/event-editor.php:214 +#: templates/forms/location-editor.php:85 +#: admin/em-locations.php:262 +#: admin/em-event.php:453 +msgid "Location not found" +msgstr "Localização não encontrado" + +#: templates/forms/event-editor.php:221 +#: templates/forms/location-editor.php:95 +#: admin/em-categories.php:175 +#: admin/em-locations.php:274 +#: admin/em-event.php:464 +msgid "Details" +msgstr "Detalhes" + +#: templates/forms/event-editor.php:226 +msgid "Details about the event." +msgstr "Detalhes sobre o evento." + +#: templates/forms/event-editor.php:226 +msgid "HTML Allowed." +msgstr "HTML permitido." + +#: templates/forms/event-editor.php:233 +msgid "Category:" +msgstr "Categoria:" + +#: templates/forms/event-editor.php:262 +#: admin/em-event.php:635 +msgid "No Value" +msgstr "Sem Valor" + +#: templates/forms/event-editor.php:282 +#: admin/em-event.php:492 +msgid "Bookings/Registration" +msgstr "Registro/ Reservas" + +#: templates/forms/event-editor.php:286 +#: admin/em-event.php:498 +msgid "Enable registration for this event" +msgstr "Habilitar o registro para este evento" + +#: templates/forms/event-editor.php:288 +#: admin/em-event.php:238 +msgid "manage bookings" +msgstr "gerir reservas" + +#: templates/forms/event-editor.php:289 +#: admin/em-event.php:239 +msgid "printable view" +msgstr "visualizar versão para impressão" + +#: templates/forms/event-editor.php:290 +#: admin/em-event.php:240 +#: admin/em-bookings.php:124 +msgid "export csv" +msgstr "csv exportação" + +#: templates/forms/event-editor.php:307 +#: admin/em-event.php:513 +msgid "Tickets" +msgstr "Ingressos" + +#: templates/forms/event-editor.php:308 +#: admin/em-event.php:514 +msgid "You have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Você tem ingressos simples ou múltiplos, onde os ingressos certos podem se tornar disponíveis em certas condições, por exemplo, reservas antecipadas, descontos para grupos, reservas máximo por bilhete, etc" + +#: templates/forms/event-editor.php:313 +#: admin/em-event.php:519 +msgid "Ticket Name" +msgstr "Nome do imgresso" + +#: templates/forms/event-editor.php:314 +#: templates/forms/ticket-form.php:9 +#: templates/forms/tickets-form.php:6 +#: templates/placeholders/bookingform.php:40 +#: templates/placeholders/bookingform.php:76 +#: em-bookings.php:115 +#: admin/em-event.php:520 +#: admin/em-bookings.php:182 +#: admin/em-bookings.php:276 +msgid "Price" +msgstr "Preço" + +#: templates/forms/event-editor.php:315 +#: admin/em-event.php:521 +msgid "Min/Max" +msgstr "Min / Max" + +#: templates/forms/event-editor.php:316 +#: admin/em-event.php:522 +msgid "Start/End" +msgstr "Início / Fim" + +#: templates/forms/event-editor.php:317 +#: admin/em-event.php:523 +msgid "Avail. Spaces" +msgstr "disponível.espaços" + +#: templates/forms/event-editor.php:318 +#: admin/em-event.php:524 +#: admin/bookings/em-events.php:134 +msgid "Booked Spaces" +msgstr "Espaços reservados" + +#: templates/forms/event-editor.php:325 +#: admin/em-event.php:531 +msgid "Add new ticket" +msgstr "Adicionar novo ingresso" + +#: templates/forms/event-editor.php:338 +#: admin/em-event.php:544 +msgid "Free" +msgstr "Livre" + +#: templates/forms/event-editor.php:371 +#: admin/em-event.php:577 +msgid "View Bookings" +msgstr "Visualizar Reservas " + +#: templates/forms/event-editor.php:403 +#: admin/em-event.php:712 +msgid "Submit Event" +msgstr "Enviar evento" + +#: templates/forms/event-editor.php:415 +#: admin/em-event.php:733 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Tem certeza de que deseja reagendar este evento recorrente? Se você fizer isso, você perderá todas as informações da reserva e os eventos antigos recorrentes serão apagados." + +#: templates/forms/event-editor.php:424 +#: admin/em-event.php:743 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Tem certeza de que deseja desativar reservas? Se você fizer isso e salvar, você vai perder todas as reservas anteriores. Se você deseja evitar reservas adicionais, reduza o número de espaços disponíveis para a quantidade de reservas que você atualmente têm" + +#: templates/forms/ticket-form.php:11 +#: templates/placeholders/bookingform.php:42 +#: templates/placeholders/bookingform.php:80 +#: em-bookings.php:116 +#: em-bookings.php:144 +#: admin/em-bookings.php:183 +#: admin/em-bookings.php:275 +#: admin/em-people.php:33 +msgid "Spaces" +msgstr "Espaços" + +#: templates/forms/ticket-form.php:12 +msgid "If blank, there's no space limit." +msgstr "Se em branco, não há limite de espaço." + +#: templates/forms/ticket-form.php:15 +msgid "Available from" +msgstr "Disponível a partir de " + +#: templates/forms/ticket-form.php:21 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Adicionar uma data de início ou fim (ou ambos) para impor restrições de tempo sobre a disponibilidade de ingressos. Ou deixe em branco para nenhum limite superior / inferior." + +#: templates/forms/ticket-form.php:24 +msgid "Bookings must order between" +msgstr "As reservas devem ser ordenadas entre" + +#: templates/forms/ticket-form.php:26 +msgid "and" +msgstr "e" + +#: templates/forms/ticket-form.php:28 +msgid "spaces." +msgstr "espaços." + +#: templates/forms/ticket-form.php:29 +msgid "Leave either blank for no upper/lower limit." +msgstr "Ou deixe em branco para nenhum limite superior / inferior." + +#: templates/forms/ticket-form.php:32 +#: templates/forms/tickets-form.php:5 +#: admin/em-bookings.php:181 +msgid "Description" +msgstr "Descrição" + +#: templates/forms/tickets-form.php:2 +msgid "Create a ticket" +msgstr "Criar um ingresso" + +#: templates/forms/tickets-form.php:8 +msgid "Available ticket spaces" +msgstr "Espaços disponíveis com ingressos" + +#: templates/forms/tickets-form.php:10 +msgid "Start date of ticket availability" +msgstr "Data de início para disponibilidade de ingressos" + +#: templates/forms/tickets-form.php:11 +msgid "End date of ticket availability" +msgstr "Data final da disponibilidade de ingressos" + +#: templates/forms/tickets-form.php:12 +msgid "Minimum tickets required per booking" +msgstr "Número mínimo e ingressos exigidos por reserva" + +#: templates/forms/tickets-form.php:13 +msgid "Maximum tickets required per booking" +msgstr "Número máximo de ingressos exigido por reserva" + +#: templates/forms/tickets-form.php:18 +msgid "Add Ticket" +msgstr "Adicionar Ingresso" + +#: templates/forms/location-editor.php:12 +#: admin/em-locations.php:130 +msgid "Add location" +msgstr "Adicionar localização" + +#: templates/forms/location-editor.php:15 +#: admin/em-locations.php:133 +msgid "Edit location" +msgstr "Editar localização" + +#: templates/forms/location-editor.php:17 +#: admin/em-locations.php:135 +msgid "required" +msgstr "exigido" + +#: templates/forms/location-editor.php:32 +#: admin/em-locations.php:156 +msgid "Location Name" +msgstr "Nome do local" + +#: templates/forms/location-editor.php:37 +#: admin/em-locations.php:161 +msgid "The name of the location" +msgstr "O nome da localidade" + +#: templates/forms/location-editor.php:44 +#: admin/em-locations.php:214 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Se você estiver usando o Google Maps, quanto mais detalhes você fornecer, o Google pode ser mais preciso para encontrar a sua localização. Se o seu endereço não está sendo encontrado, por favor tente em maps.google.com , acrescentando todos os campos abaixo separados por vírgulas." + +#: templates/forms/location-editor.php:48 +#: admin/em-locations.php:218 +#: admin/em-event.php:403 +msgid "Address:" +msgstr "Endereço:" + +#: templates/forms/location-editor.php:54 +#: admin/em-locations.php:224 +#: admin/em-event.php:409 +msgid "City/Town:" +msgstr "Cidade / Município:" + +#: templates/forms/location-editor.php:60 +#: admin/em-locations.php:230 +#: admin/em-event.php:416 +msgid "State/County:" +msgstr "Estado / País:" + +#: templates/forms/location-editor.php:66 +#: admin/em-locations.php:236 +#: admin/em-event.php:423 +msgid "Postcode:" +msgstr "CEP:" + +#: templates/forms/location-editor.php:72 +#: admin/em-locations.php:249 +#: admin/em-event.php:436 +msgid "Country:" +msgstr "País:" + +#: templates/forms/location-editor.php:75 +#: admin/em-locations.php:252 +#: admin/em-event.php:439 +msgid "none selected" +msgstr "nenhum selecionado" + +#: templates/forms/location-editor.php:99 +#: admin/em-locations.php:281 +msgid "Details about the location" +msgstr "Detalhes sobre a localização" + +#: templates/forms/location-editor.php:103 +#: admin/em-locations.php:287 +msgid "Location image" +msgstr "Imagem do local" + +#: templates/forms/location-editor.php:109 +#: admin/em-locations.php:293 +msgid "No image uploaded for this location yet" +msgstr "Nenhuma imagem uploaded para este local ainda" + +#: templates/forms/location-editor.php:112 +#: admin/em-categories.php:197 +#: admin/em-locations.php:296 +#: admin/em-event.php:486 +msgid "Upload/change picture" +msgstr "Upload / alterar a imagem" + +#: templates/forms/location-editor.php:115 +#: admin/em-locations.php:304 +msgid "Update location" +msgstr "Atualize o local" + +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Mapa não está disponível" + +#: templates/placeholders/bookingbutton.php:2 +msgid "Book Now" +msgstr "Reserve agora" + +#: templates/placeholders/bookingbutton.php:3 +msgid "Booking..." +msgstr "Reserva ..." + +#: templates/placeholders/bookingbutton.php:4 +msgid "Booking Submitted" +msgstr "Reserva enviada" + +#: templates/placeholders/bookingbutton.php:5 +msgid "Booking Error. Try again?" +msgstr "Erro de reserva. Tente novamente?" + +#: templates/placeholders/bookingform.php:15 +msgid "You are currently attending this event. Manage my bookings" +msgstr "você está participando desse evento. Gerenciar minhas reservas" + +#: templates/placeholders/bookingform.php:17 +msgid "Online bookings are not available for this event." +msgstr "Reservas on-line não estão disponíveis para este evento." + +#: templates/placeholders/bookingform.php:19 +msgid "Bookings are closed for this event." +msgstr "As reservas estão fechados para este evento." + +#: templates/placeholders/bookingform.php:38 +#: em-bookings.php:114 +#: admin/em-bookings.php:274 +msgid "Ticket Type" +msgstr "Tipo de ingresso" + +#: templates/placeholders/bookingform.php:106 +#: admin/em-people.php:31 +msgid "E-mail" +msgstr "E-mail" + +#: templates/placeholders/bookingform.php:112 +#: em-bookings.php:158 +#: admin/em-bookings.php:297 +#: admin/em-people.php:34 +msgid "Comment" +msgstr "Comentário" + +#: templates/placeholders/bookingform.php:117 +#: em-bookings.php:162 +msgid "Send your booking" +msgstr "Enviar a sua reserva" + +#: templates/placeholders/bookingform.php:124 +#: em-actions.php:408 +msgid "You must log in before you make a booking." +msgstr "Você deve fazer login antes de fazer uma reserva." + +#: templates/placeholders/bookingform.php:130 +msgid "Log in if you already have an account with us." +msgstr "Faça seu login se você já tem uma conta conosco." + +#: templates/placeholders/bookingform.php:132 +msgid "Username" +msgstr "Nome de Usuário" + +#: templates/placeholders/bookingform.php:136 +msgid "Password" +msgstr "Senha" + +#: templates/placeholders/bookingform.php:140 +msgid "Log In" +msgstr "Entrar" + +#: templates/placeholders/bookingform.php:141 +msgid "Remember Me" +msgstr "Lembre-se de Mim" + +#: templates/placeholders/bookingform.php:156 +msgid "Sign Up" +msgstr "Inscreva-se" + +#: templates/placeholders/bookingform.php:160 +msgid "Password Lost and Found" +msgstr "Senha para Achados e Perdidos" + +#: templates/placeholders/bookingform.php:160 +msgid "Lost your password?" +msgstr "Perdeu sua senha?" + +#: templates/placeholders/bookingform.php:166 +#: em-bookings.php:169 +msgid "No more tickets available at this time." +msgstr "Não temos mais ingressos disponíveis neste momento." + +#: templates/placeholders/bookingform.php:183 +msgid "Please wait while the booking is being submitted." +msgstr "Por favor, aguarde enquanto a reserva está sendo processada." + +#: em-bookings.php:74 +#: admin/em-options.php:484 +msgid "Booking cancelled" +msgstr "Reserva cancelada" + +#: em-bookings.php:77 +#: em-actions.php:366 +msgid "You must log in to cancel your booking." +msgstr "Você deve fazer login para cancelar a sua reserva." + +#: em-bookings.php:97 +msgid "Book now!" +msgstr "Reserve já!" + +#: em-bookings.php:171 +msgid "You must register or log in in order to create and manage your bookings." +msgstr "Você deve registrar ou login para criar e gerenciar suas reservas." + +#: em-bookings.php:219 +#: em-bookings.php:233 +msgid "Cancel your booking" +msgstr "Cancelar a sua reserva" + +#: em-functions.php:9 +msgid "" +"

                          Hey, %s, welcome to Events Manager! We hope you like it around here.

                          \r\n" +"\t\t

                          Now it's time to insert events lists through widgets, template tags or shortcodes.

                          \r\n" +"\t\t

                          By the way, have you taken a look at the Settings page? That's where you customize the way events and locations are displayed.

                          \r\n" +"\t\t

                          What? Tired of seeing this advice? I hear you, click here and you won't see this again!

                          " +msgstr "" +"

                          Olá, %s, bem-vindo ao Events Manager! Nós esperamos que você goste daqui.

                          \r\n" +"\t\t

                          Agora é hora de inserir suas listas de eventos através widgets, template tags ou shortcodes.

                          \r\n" +"\t\t

                          Por acaso você deu uma olhada no página de configurações? É aí que você personalizar a maneira de como os eventos e locais são exibidos.

                          \r\n" +"\t\t

                          O quê? Cansado de ver este conselho? Eu entendo você, clique aqui e você não vai ver esse aviso novamente!

                          " + +#: em-functions.php:139 +#: admin/bookings/em-events.php:14 +#: admin/em-events.php:48 +msgid "All events" +msgstr "Todos os eventos" + +#: em-functions.php:140 +#: admin/bookings/em-events.php:15 +#: admin/em-events.php:49 +msgid "Future events" +msgstr "Eventos futuros" + +#: em-functions.php:141 +#: admin/bookings/em-events.php:13 +#: admin/em-events.php:47 +msgid "Past events" +msgstr "Eventos passados" + +#: em-functions.php:142 +msgid "Today's events" +msgstr "Eventos de hoje" + +#: em-functions.php:143 +msgid "Tomorrow's events" +msgstr "Eventos de amanhã" + +#: em-functions.php:144 +msgid "Events this month" +msgstr "Eventos este mês" + +#: em-functions.php:145 +msgid "Events next month" +msgstr "Eventos no próximo mês" + +#: em-functions.php:146 +msgid "Events within 2 months" +msgstr "Eventos dentro de 2 meses" + +#: em-functions.php:147 +msgid "Events within 3 months" +msgstr "Eventos dentro de 3 meses" + +#: em-functions.php:148 +msgid "Events within 6 months" +msgstr "Eventos dentro de 6 meses" + +#: em-functions.php:149 +msgid "Events within 12 months" +msgstr "Eventos dentro de 12 meses" + +#: em-functions.php:181 +msgid "Trying to perform an illegal action." +msgstr "Tentando executar uma ação ilegal." + +#: em-functions.php:252 +msgid "ERROR: Please enter a username." +msgstr "Erro: Digite um nome de usuário." + +#: em-functions.php:254 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "ERRO: Este nome de usuário é inválido porque ele usa caracteres ilegais. Digite um nome de usuário válido." + +#: em-functions.php:257 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "ERRO: Este nome de usuário já está registrado, por favor, escolha outro." + +#: em-functions.php:262 +msgid "ERROR: Please type your e-mail address." +msgstr "ERRO: Por favor digite seu endereço de e-mail." + +#: em-functions.php:264 +msgid "ERROR: The email address isn’t correct." +msgstr "ERRO: O endereço de e-mail não é correto." + +#: em-functions.php:267 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "ERRO: Este email já está registrado, por favor, escolha outro." + +#: em-functions.php:285 +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "ERRO: Não foi possível registrá-lo ... por favor contacte o webmaster !" + +#: em-functions.php:320 +msgid "New user registration on your blog %s:" +msgstr "Registro de novo usuário no seu %s blog:" + +#: em-functions.php:321 +msgid "Username: %s" +msgstr "Nome de usuário:%s" + +#: em-functions.php:322 +msgid "E-mail: %s" +msgstr "E-mail:%s" + +#: em-functions.php:323 +msgid "[%s] New User Registration" +msgstr "[%s] Novo Registro de Usuário" + +#: em-functions.php:334 +msgid "[%s] Your username and password" +msgstr "[%s] O seu nome de usuário e senha" + +#: events-manager.php:208 +msgid "You do not have permission to publish %s" +msgstr "Você não tem permissão para publicar %s" + +#: events-manager.php:208 +#: events-manager.php:210 +#: events-manager.php:214 +#: events-manager.php:216 +#: events-manager.php:221 +#: admin/em-options.php:355 +#: admin/em-options.php:356 +msgid "events" +msgstr "eventos" + +#: events-manager.php:209 +#: events-manager.php:217 +#: events-manager.php:220 +#: events-manager.php:221 +msgid "You do not have permission to edit %s" +msgstr "Você não tem permissão para editar %s" + +#: events-manager.php:210 +#: events-manager.php:211 +msgid "You do not have permission to delete others %s" +msgstr "Você não tem permissão para excluir outros %s" + +#: events-manager.php:212 +#: events-manager.php:214 +msgid "You do not have permission to edit others %s" +msgstr "Você não tem permissão para editar outros %s" + +#: events-manager.php:213 +msgid "You do not have permission to manage others %s" +msgstr "Você não tem permissão para gerenciar outros %s" + +#: events-manager.php:213 +#: events-manager.php:218 +msgid "bookings" +msgstr "reservas" + +#: events-manager.php:215 +#: events-manager.php:216 +msgid "You do not have permission to delete %s" +msgstr "Você não tem permissão para excluir %s" + +#: events-manager.php:218 +msgid "You do not have permission to manage %s" +msgstr "Você não tem permissão para gerenciar %s" + +#: events-manager.php:219 +msgid "You cannot to view others %s" +msgstr "Você não pode ver os outros %s" + +#: events-manager.php:220 +msgid "recurrences" +msgstr "recorrências" + +#: events-manager.php:323 +msgid "Add new" +msgstr "Adicione novo" + +#: events-manager.php:326 +msgid "Event Categories" +msgstr "Categorias Eventos" + +#: events-manager.php:326 +#: em-install.php:373 +#: em-install.php:375 +#: admin/em-categories.php:57 +#: admin/em-options.php:367 +#: admin/em-options.php:369 +#: admin/em-options.php:370 +#: admin/em-options.php:371 +#: admin/em-options.php:372 +#: admin/em-options.php:373 +msgid "Categories" +msgstr "Categorias" + +#: events-manager.php:327 +msgid "Events Manager Settings" +msgstr "Configurações do Gerenciador de eventos" + +#: events-manager.php:327 +#: events-manager.php:473 +msgid "Settings" +msgstr "Configurações" + +#: events-manager.php:328 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Obter Ajuda para a gerente de eventos" + +#: events-manager.php:328 +msgid "Help" +msgstr "Ajuda" + +#: events-manager.php:456 +msgid "Add an event" +msgstr "Adicionar um evento" + +#: em-debug.php:18 +#: em-install.php:368 +msgid "
                        • No events in this location
                        • " +msgstr "
                        • Nenhum evento neste local
                        • " + +#: em-debug.php:44 +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Você está em modo de debug Events Manager. Para ativar o modo debug off, vá para a definições de página." + +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "Nenhum ID de ingresso fornecido" + +#: em-actions.php:93 +msgid "You are now viewing the duplicated %s." +msgstr "Você agora está exibindo o duplicado %s." + +#: em-actions.php:170 +#: em-actions.php:240 +msgid "%s successfully deleted" +msgstr "%s removido com sucesso" + +#: em-actions.php:239 +msgid "EM_Categories" +msgstr "EM_Categories" + +#: em-actions.php:286 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Uma nova conta de usuário foi criado para você. Por favor verifique seu e-mail para detalhes de acesso." + +#: em-actions.php:293 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Este e-mail já existe em nosso sistema, faça o login para registar-se e prosseguir com a sua reserva." + +#: em-actions.php:298 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Houve um problema ao criar uma conta de usuário, por favor entre em com o administrador do site." + +#: em-actions.php:303 +msgid "You must log in or register to make a booking." +msgstr "Você deve fazer login ou registre-se para fazer uma reserva." + +#: em-actions.php:343 +msgid "You already have booked a seat at this event." +msgstr "Você já tem reservado um lugar neste evento." + +#: em-actions.php:354 +msgid "Booking %s" +msgstr "Reserva %s" + +#: em-install.php:225 +msgid "Uncategorized" +msgstr "Sem categoria" + +#: em-install.php:280 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_NAME on #F #j, #Y. He wants to reserve #_BOOKINGSPACES spaces.
                          Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                          Yours faithfully,
                          Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) Vai assistir #_NAME em #F #J # Y. Ele quer #_BOOKINGSPACES reserva espaços
                          Agora, há espaços reservados #_BOOKEDSPACES , #_AVAILABLESPACES ainda estão disponíveis.
                          Atenciosamente,
                          Events Manager - http://wp-events-plugin.com" + +#: em-install.php:280 +#: em-install.php:281 +#: em-install.php:282 +#: em-install.php:283 +#: em-install.php:284 +#: em-install.php:285 +msgid "

                          -------------------------------
                          Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

                          -------------------------------
                          Desenvolvido por Events Manager - http://wp-events-plugin.com" + +#: em-install.php:281 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_NAME on #F #j, #Y. He wanted to reserve #_BOOKINGSPACES spaces.
                          Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                          Yours faithfully,
                          Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) Cancelou sua reserva na posição #_NAME em #F #J, #Y. Ele queria reservar#_BOOKINGSPACES nos espaços.
                          Agora, há espaços reservados #_BOOKEDSPACES #_AVAILABLESPACES ainda estão disponíveis.
                          Atenciosamente,
                          Eventos Manager - http://wp-events-plugin.com" + +#: em-install.php:282 +msgid "Dear #_BOOKINGNAME,
                          you have successfully reserved #_BOOKINGSPACES space/spaces for #_NAME.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                          você teve sucesso na sua reserva #_BOOKINGSPACES espaço / espaços para #_NAME.
                          Atenciosamente,
                          #_CONTACTNAME" + +#: em-install.php:283 +msgid "Dear #_BOOKINGNAME,
                          You have requested #_BOOKINGSPACES space/spaces for #_NAME.
                          Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                          Você pediu #_BOOKINGSPACES espaço / espaços para #_NAME.
                          A sua reserva está pendente para sua aprovação pelos nossos administradores. Uma vez aprovado, você receberá uma confirmação automática.
                          Atenciosamente,
                          #_CONTACTNAME" + +#: em-install.php:284 +msgid "Dear #_BOOKINGNAME,
                          Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been rejected.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                          Você solicitou uma reserva para#_BOOKINGSPACES #_NAME em #F #J, #Y e foi rejeitada.
                          Atenciosamente,
                          #_CONTACTNAME" + +#: em-install.php:285 +msgid "Dear #_BOOKINGNAME,
                          Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been cancelled.
                          Yours faithfully,
                          #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                          Você solicitou uma reserva para #_BOOKINGSPACES #_NAME em #F #J, #Y e foi cancelada.
                          Atenciosamente,
                          #_CONTACTNAME" + +#: em-install.php:344 +#: em-install.php:349 +#: em-install.php:375 +msgid "No %s" +msgstr "Não %s" + +#: em-install.php:434 +msgid "New booking" +msgstr "Nova reserva" + +#: em-install.php:436 +#: em-install.php:444 +msgid "Booking Cancelled" +msgstr "Reserva cancelada" + +#: em-install.php:438 +msgid "Booking Pending" +msgstr "Reserva Pendente" + +#: em-install.php:440 +msgid "Booking Rejected" +msgstr "Reserva Rejeitada" + +#: em-install.php:442 +msgid "Booking Confirmed" +msgstr "Reserva Confirmada" + +#: em-install.php:447 +msgid "Powered by" +msgstr "Desenvolvido por" + +#: em-install.php:448 +msgid "Bookings - #_NAME" +msgstr "Reservas - #_NAME" + +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Locais Evento" + +#: widgets/em-locations.php:19 +msgid "Display a list of event locations on Events Manager." +msgstr "Exibir uma lista de locais de eventos no Events Manager." + +#: widgets/em-locations.php:44 +msgid "No locations" +msgstr "Não locais" + +#: widgets/em-locations.php:67 +#: widgets/em-calendar.php:58 +#: widgets/em-events.php:76 +msgid "Title" +msgstr "Título" + +#: widgets/em-locations.php:71 +msgid "Show number of locations" +msgstr "Exibir número de locais" + +#: widgets/em-locations.php:75 +msgid "Scope of the locations" +msgstr "Âmbito dos locais" + +#: widgets/em-locations.php:85 +msgid "Order of the locations" +msgstr "Ordem dos locais" + +#: widgets/em-locations.php:87 +msgid "Ascendant" +msgstr "Ascendente" + +#: widgets/em-locations.php:88 +msgid "Descendant" +msgstr "Descendente" + +#: widgets/em-locations.php:92 +#: widgets/em-events.php:128 +msgid "List item format" +msgstr "Formato de item da lista" + +#: widgets/em-calendar.php:16 +msgid "Display your events in a calendar widget." +msgstr "Mostrar os seus eventos em um calendário widget." + +#: widgets/em-calendar.php:17 +msgid "Events Calendar" +msgstr "Calendário de Eventos" + +#: widgets/em-calendar.php:62 +msgid "Show Long Events?" +msgstr "Mostrar Eventos Longos?" + +#: widgets/em-events.php:21 +#: widgets/em-events.php:52 +#: widgets/em-events.php:137 +msgid "all events" +msgstr "todos os eventos" + +#: widgets/em-events.php:23 +msgid "Display a list of events on Events Manager." +msgstr "Exibir uma lista de eventos em Events Manager." + +#: widgets/em-events.php:49 +msgid "No events" +msgstr "Nenhum evento" + +#: widgets/em-events.php:80 +msgid "Number of events" +msgstr "Número de eventos" + +#: widgets/em-events.php:84 +msgid "Scope" +msgstr "Escopo" + +#: widgets/em-events.php:94 +msgid "Order By" +msgstr "Ordenar Por" + +#: widgets/em-events.php:98 +msgid "start date, start time, event name" +msgstr "data de início, hora de início, nome do evento" + +#: widgets/em-events.php:99 +msgid "name, start date, start time" +msgstr "nome, data de início, hora de início" + +#: widgets/em-events.php:100 +msgid "name, end date, end time" +msgstr "nome, data de término, horário final" + +#: widgets/em-events.php:101 +msgid "end date, end time, event name" +msgstr "data final, hora de término, nome do evento" + +#: widgets/em-events.php:112 +msgid "Order" +msgstr "Ordem" + +#: widgets/em-events.php:116 +#: admin/em-options.php:255 +msgid "Ascending" +msgstr "Ascendente" + +#: widgets/em-events.php:117 +#: admin/em-options.php:256 +msgid "Descending" +msgstr "Descendente" + +#: widgets/em-events.php:132 +msgid "Show all events link at bottom?" +msgstr "Mostrar todos os eventos link no fundo?" + +#: widgets/em-events.php:136 +msgid "All events link text?" +msgstr "Todos os eventos texto do link?" + +#: admin/em-categories.php:21 +msgid "The category has been added." +msgstr "A categoria foi adicionada." + +#: admin/em-categories.php:23 +msgid "The category has been updated." +msgstr "A categoria foi atualizada." + +#: admin/em-categories.php:39 +msgid "Categories Deleted" +msgstr "Categorias Excluídos" + +#: admin/em-categories.php:71 +#: admin/em-categories.php:78 +msgid "ID" +msgstr "ID" + +#: admin/em-categories.php:102 +msgid "No categories have been inserted yet!" +msgstr "Nenhuma categoria foi inserida ainda!" + +#: admin/em-categories.php:128 +msgid "Edit category" +msgstr "Editar categoria" + +#: admin/em-categories.php:145 +msgid "Category name" +msgstr "Nome da categoria" + +#: admin/em-categories.php:149 +msgid "The name of the category" +msgstr "O nome da categoria" + +#: admin/em-categories.php:150 +#: admin/em-locations.php:162 +#: admin/em-event.php:297 +msgid "View Slug" +msgstr "Ver Slug" + +#: admin/em-categories.php:157 +#: admin/em-locations.php:169 +#: admin/em-event.php:304 +msgid "Hide Slug" +msgstr "Ocultar Slug" + +#: admin/em-categories.php:166 +#: admin/em-locations.php:178 +msgid "%s Slug" +msgstr "Slug%s" + +#: admin/em-categories.php:168 +#: admin/em-locations.php:180 +#: admin/em-event.php:315 +msgid "The event slug. If the event slug already exists, a random number will be appended to the end." +msgstr "O Slud do evento. Se o Slug do evento já existe, um número aleatório será adicionado ao final." + +#: admin/em-categories.php:182 +msgid "Details about the category" +msgstr "Detalhes sobre a categoria" + +#: admin/em-categories.php:188 +msgid "Category image" +msgstr "Imagem da categoria" + +#: admin/em-categories.php:194 +msgid "No image uploaded for this category yet" +msgstr "Nenhuma imagem enviados para esta categoria ainda" + +#: admin/em-categories.php:202 +msgid "Update category" +msgstr "Atualização da categoria" + +#: admin/em-locations.php:80 +#: admin/em-locations.php:90 +msgid "Town" +msgstr "Cidade" + +#: admin/em-locations.php:125 +msgid "You do not have the rights to manage this location." +msgstr "Você não tem os direitos para gerir este local." + +#: admin/em-locations.php:187 +msgid "Location Owner" +msgstr "Proprietário local" + +#: admin/em-locations.php:192 +#: admin/em-event.php:165 +msgid "Select..." +msgstr "Selecione ..." + +#: admin/em-locations.php:201 +#: admin/em-event.php:356 +msgid "Coordinates" +msgstr "Coordenadas" + +#: admin/em-locations.php:242 +#: admin/em-event.php:429 +msgid "Region:" +msgstr "Região:" + +#: admin/em-event.php:56 +msgid "Mon" +msgstr "Seg." + +#: admin/em-event.php:56 +msgid "Tue" +msgstr "Ter" + +#: admin/em-event.php:56 +msgid "Wed" +msgstr "Casar" + +#: admin/em-event.php:56 +msgid "Thu" +msgstr "Qui" + +#: admin/em-event.php:56 +msgid "Fri" +msgstr "Sex" + +#: admin/em-event.php:56 +msgid "Sat" +msgstr "Sáb." + +#: admin/em-event.php:56 +msgid "Sun" +msgstr "Sol" + +#: admin/em-event.php:81 +msgid "Recurrence" +msgstr "Retorno" + +#: admin/em-event.php:88 +msgid "Repeated event" +msgstr "Evento repetido" + +#: admin/em-event.php:101 +#: admin/em-event.php:124 +msgid "Every" +msgstr "Cada" + +#: admin/em-event.php:108 +msgid "week" +msgstr "semana" + +#: admin/em-event.php:110 +msgid "weeks" +msgstr "semana" + +#: admin/em-event.php:112 +msgid "month" +msgstr "mês" + +#: admin/em-event.php:114 +msgid "months" +msgstr "mês" + +#: admin/em-event.php:161 +msgid "Event Owner/Contact Person" +msgstr "Proprietário do Evento / Contato" + +#: admin/em-event.php:192 +msgid "Group Ownership" +msgstr "Propriedade do grupo" + +#: admin/em-event.php:218 +msgid "Bookings Stats" +msgstr "Estatísticas reservas" + +#: admin/em-event.php:229 +msgid "Available Spaces" +msgstr "Espaços disponíveis" + +#: admin/em-event.php:230 +msgid "Confirmed Spaces" +msgstr "Espaços confirmada" + +#: admin/em-event.php:231 +msgid "Pending Spaces" +msgstr "Espaços pendentes" + +#: admin/em-event.php:249 +msgid "No responses yet!" +msgstr "Nenhuma resposta ainda!" + +#: admin/em-event.php:276 +msgid "No categories available, create one here first" +msgstr "Sem categorias disponíveis, criar uma aqui primeiro" + +#: admin/em-event.php:313 +msgid "Event Slug" +msgstr "Slug evento" + +#: admin/em-event.php:320 +msgid "Event date" +msgstr "Data do evento" + +#: admin/em-event.php:321 +msgid "Recurrence dates" +msgstr "Datas de recorrência" + +#: admin/em-event.php:330 +msgid "The event date." +msgstr "A data do evento." + +#: admin/em-event.php:333 +msgid "When not reoccurring, this event spans between the beginning and end date." +msgstr "Quando não recorrentes, este evento se estende entre o início e de término." + +#: admin/em-event.php:338 +msgid "The recurrence beginning and end date." +msgstr "O início recorrência e data de término." + +#: admin/em-event.php:344 +msgid "Event time" +msgstr "Hora do evento" + +#: admin/em-event.php:351 +msgid "The time of the event beginning and end" +msgstr "O tempo do início do evento e final" + +#: admin/em-event.php:373 +msgid "Location:" +msgstr "Localização:" + +#: admin/em-event.php:389 +msgid "The name of the location where the event takes place. You can use the name of a venue, a square, etc" +msgstr "O nome do local onde o evento acontece. Você pode usar o nome de um local, uma praça, etc" + +#: admin/em-event.php:394 +msgid "Name:" +msgstr "Nome:" + +#: admin/em-event.php:398 +msgid "Create a location or start typing to search a previously created location." +msgstr "Criar um local ou começar a digitar para procurar um local previamente criado." + +#: admin/em-event.php:399 +msgid "You cannot edit saved locations here." +msgstr "Você não pode editar locais salvos aqui." + +#: admin/em-event.php:399 +msgid "Reset this form to create a location." +msgstr "Redefinir este formulário para criar um local." + +#: admin/em-event.php:444 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Preencher esse campo em primeiro lugar permite-lhe encontrar rapidamente estados previamente preenchidos e regiões para o país." + +#: admin/em-event.php:471 +msgid "Details about the event" +msgstr "Detalhes do evento" + +#: admin/em-event.php:477 +msgid "Event image" +msgstr "Imagem do evento" + +#: admin/em-event.php:483 +msgid "No image uploaded for this event yet" +msgstr "Nenhuma imagem enviada para este evento" + +#: admin/em-event.php:609 +msgid "Attributes" +msgstr "Atributos" + +#: admin/em-event.php:654 +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Você não tem os atributos personalizados definidos em qualquer um das sua configurações de Modelos no Events Manager. Por favor, adicione a página de configurações" + +#: admin/em-event.php:661 +msgid "Depreciated Attributes" +msgstr "Atributos Depreciados" + +#: admin/em-event.php:662 +msgid "If you see any attributes under here, that means they're not used in Events Manager anymore. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Se você ver todos os atributos aqui abaixo, isso significa que eles não são mais usados no Events Manager . Para adicioná-los, você precisa adicionar o atributo personalizado novamente para uma opção de formatação na página de configurações. Para remover qualquer um desses atributos depreciados, dar-lhe um valor em branco e salvar." + +#: admin/em-event.php:693 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings to add attribute placeholders." +msgstr "Com o intuito de usar os atributos, você deve definir alguns atributos em seus modelos, caso contrário eles nunca vão aparecer. Ir para Eventos> Configurações para adicionar espaços reservados atributo." + +#: admin/em-event.php:708 +msgid "WARNING! You are about to re-create all your recurrent events including erasing your old booking data! Are you sure you want to do this?" +msgstr "ATENÇÃO! Você está prestes a recriar todos os seus eventos recorrentes incluindo apagar seus dados de reservas antigas! Tem certeza de que quer fazer isso?" + +#: admin/em-bookings.php:85 +msgid "Event Bookings Dashboard" +msgstr "Painel de reservas de evento" + +#: admin/em-bookings.php:89 +#: admin/em-bookings.php:140 +#: admin/em-bookings.php:191 +msgid "Pending Bookings" +msgstr "Reservas pendentes" + +#: admin/em-bookings.php:92 +msgid "Events With Bookings Enabled" +msgstr "Eventos com reservas Habilitado" + +#: admin/em-bookings.php:107 +#: admin/em-bookings.php:213 +#: admin/em-bookings.php:351 +#: admin/em-people.php:9 +msgid "You do not have the rights to manage this event." +msgstr "Você não tem os direitos para gerir este evento." + +#: admin/em-bookings.php:119 +msgid "Manage %s Bookings" +msgstr "Gerenciar reservas %s" + +#: admin/em-bookings.php:120 +#: admin/em-bookings.php:174 +msgid "View/Edit Event" +msgstr "Ver / Editar Evento" + +#: admin/em-bookings.php:127 +msgid "Spaces confirmed" +msgstr "Espaços confirmados" + +#: admin/em-bookings.php:129 +msgid "Date" +msgstr "Data" + +#: admin/em-bookings.php:143 +#: admin/em-bookings.php:194 +msgid "Confirmed Bookings" +msgstr "Reservas confirmadas" + +#: admin/em-bookings.php:145 +#: admin/em-bookings.php:196 +msgid "Rejected Bookings" +msgstr "Reservas rejeitadas" + +#: admin/em-bookings.php:147 +#: admin/em-bookings.php:198 +msgid "Cancelled Bookings" +msgstr "Reservas canceladas" + +#: admin/em-bookings.php:163 +msgid "You do not have the rights to manage this ticket." +msgstr "Você não tem os direitos para gerir este ingresso." + +#: admin/em-bookings.php:173 +msgid "Ticket for %s" +msgstr "Ingresso para %s" + +#: admin/em-bookings.php:175 +msgid "View Event Bookings" +msgstr "Ver Reservas de eventos" + +#: admin/em-bookings.php:184 +msgid "Min" +msgstr "Min" + +#: admin/em-bookings.php:185 +msgid "Max" +msgstr "Max" + +#: admin/em-bookings.php:186 +msgid "Start" +msgstr "Começar" + +#: admin/em-bookings.php:187 +msgid "End" +msgstr "Final" + +#: admin/em-bookings.php:223 +msgid "Edit Booking" +msgstr "Editar Reserva" + +#: admin/em-bookings.php:231 +msgid "Event Details" +msgstr "Detalhes do evento" + +#: admin/em-bookings.php:242 +msgid "Date/Time" +msgstr "Data / Hora" + +#: admin/em-bookings.php:254 +#: admin/em-bookings.php:373 +msgid "Personal Details" +msgstr "Detalhes pessoais" + +#: admin/em-bookings.php:262 +msgid "Booking Details" +msgstr "Detalhes reserva" + +#: admin/em-bookings.php:270 +msgid "Status" +msgstr "Estado" + +#: admin/em-bookings.php:290 +msgid "Totals" +msgstr "Totais" + +#: admin/em-bookings.php:307 +msgid "Booking Notes" +msgstr "Notas reserva" + +#: admin/em-bookings.php:310 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Você pode adicionar notas privadas abaixo para referência interna que somente os gerentes de evento irão ver." + +#: admin/em-bookings.php:315 +msgid "wrote" +msgstr "escreveu" + +#: admin/em-bookings.php:361 +msgid "Manage Person's Booking" +msgstr "Gerenciar Reserva" + +#: admin/em-bookings.php:363 +msgid "Edit User" +msgstr "Editar Usuário" + +#: admin/em-bookings.php:384 +msgid "Past And Present Bookings" +msgstr "Reservas do Passado e Presente" + +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-confirmed.php:53 +#: admin/em-events.php:173 +msgid "Approve" +msgstr "Aprovar" + +#: admin/bookings/em-rejected.php:55 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-confirmed.php:56 +msgid "Decline" +msgstr "Recusar" + +#: admin/bookings/em-rejected.php:112 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-confirmed.php:119 +msgid "Edit/View" +msgstr "Editar / Ver" + +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Nenhuma reserva rejeitada" + +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +#: admin/bookings/em-confirmed.php:116 +msgid "Reject" +msgstr "Rejeitar" + +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Sem reservas pendentes." + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Restaurar" + +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Nenhuma reserva cancelada" + +#: admin/bookings/em-person.php:118 +#: admin/bookings/em-confirmed.php:114 +msgid "Unapprove" +msgstr "Desaprovar" + +#: admin/bookings/em-person.php:139 +#: admin/bookings/em-confirmed.php:131 +msgid "No confirmed bookings." +msgstr "Nenhuma reserva confirmada" + +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Todos os Eventos" + +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Eventos futuros" + +#: admin/bookings/em-events.php:51 +#: admin/em-events.php:63 +msgid "Total" +msgstr "Total" + +#: admin/bookings/em-events.php:72 +#: admin/em-events.php:92 +msgid "Filter" +msgstr "Filtrar" + +#: admin/em-help.php:15 +msgid "Placeholders for customizing event pages" +msgstr "Espaços reservados para personalizar páginas do evento" + +#: admin/em-help.php:16 +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "Na página de configurações , você vai encontrar várias caixas de texto onde você pode editar informações de eventos como aparência, listas de eventos e localização. Usando os espaços reservados abaixo, você pode escolher quais informações devem ser exibidas." + +#: admin/em-help.php:17 +#: admin/em-options.php:58 +msgid "Event Related Placeholders" +msgstr "Eventos Relacionados Resevados" + +#: admin/em-help.php:19 +#: admin/em-options.php:61 +msgid "Category Related Placeholders" +msgstr "Os espaços reservados de categorias relacionadas" + +#: admin/em-help.php:21 +#: admin/em-options.php:59 +msgid "Location Related Placeholders" +msgstr "Localização Reservas Relacionados" + +#: admin/em-help.php:23 +#: admin/em-options.php:60 +msgid "Booking Related Placeholders" +msgstr "Reserva Espaços Relacionados" + +#: admin/em-people.php:27 +msgid "Bookings data" +msgstr "Dados reservas" + +#: admin/em-people.php:32 +msgid "Phone number" +msgstr "Número de telefone" + +#: admin/em-people.php:53 +msgid "Available" +msgstr "Disponível" + +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/em-people.php:72 +msgid "Events Manager" +msgstr "Events Manager" + +#: admin/em-admin.php:20 +msgid "" +"

                          Hey, %s, welcome to Events Manager! We hope you like it around here.

                          \r\n" +"\t\t\t

                          Now it's time to insert events lists through widgets, template tags or shortcodes.

                          \r\n" +"\t\t\t

                          By the way, have you taken a look at the Settings page? That's where you customize the way events and locations are displayed.

                          \r\n" +"\t\t\t

                          What? Tired of seeing this advice? I hear you, click here and you won't see this again!

                          " +msgstr "" +"

                          Olá, %s, bem-vindo ao Events Manager! Nós esperamos que você goste daqui.

                          \r\n" +"\t\t\t

                          Agora é hora de inserir listas de eventos através widgets, template tags ou shortcodes.

                          \r\n" +"\t\t\t

                          Por acaso, você deu uma olhada no página de definições? É aí que você personalizar a maneira como os eventos e locais são exibidos.

                          \r\n" +"\t\t\t

                          O quê? Cansado de ver este conselho? Eu entendo você, clique aqui e você não vai ver isso novamente!

                          " + +#: admin/em-admin.php:57 +msgid "Events Manager has some new features!
                          • Bookings can now be approved before they count towards your event's space allocations.
                          • Events now have owners, and you can restrict users so they can only manage events/locations/categories they create.

                            These new permissions are enabled by default, but since you upgraded it has been disabled to maintain the previous plugin behaviour. You can re-enable it from the settings page. Dismiss" +msgstr "O Events Manager tem algumas características novas!
                            • As reservas podem agora ser aprovadas antes que elas contem para alocações de espaço do seu evento.
                            • Os eventos agora tem donos definidos, e você pode restringir os usuários para que eles só possam gerenciar eventos / locations / categorias que eles criam.

                              Estas novas permissões são ativadas por padrão, mas desde que você atualizou o Plugin ele foi desativado para manter o comportamento do plugin anterior. Você pode reativá-lo a partir da página de configurações . Dismiss" + +#: admin/em-admin.php:70 +msgid "Uh Oh! For some reason wordpress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Opa! Por alguma razão Wordpress não conseguiu criar uma página de eventos para você (ou você simplesmente apagou). Não se preocupe, tudo que você precisa fazer é criar uma página em branco, dê o nome que você quiser, e selecioná-lo como sua página eventos em sua página de configurações . Desculpe ter que adicionar essa etapa extra! Se você souber o que está fazendo, você pode ter feito isso de propósito, em caso afirmativo ignorar esta mensagem" + +#: admin/em-admin.php:82 +msgid "A LOT has changed since Events Manager 3. We recommend you take a look at the settings page for new features and upgrade instructions, and you may particualarly be interested in modifying permissions. Dismiss" +msgstr "Muito coisa mudou desde Events Manager 3. Recomendamos que você dê uma olhada na página de definições para novos recursos e instruções para essa atualização, e você pode estar interessado em particualarly permissões de modificação. Dismiss" + +#: admin/em-admin.php:94 +msgid "If you upgraded from 3.x to the RC2 and the update did not go so well, try reimporting old settings. Warning! Re-importing will rename all event slugs, re-import your old category settings from events, and recreate all tickets, so changes to these areas will be lost. Dismiss" +msgstr "Se você atualizou do 3.x para o RC2 e a atualização não está funcionando como devia, tente reimportar configurações antigas . Atenção! Re-importação irá renomear todas os Slugs do evento, re-importe as configurações categorias antiga de eventos, e recrie todos os ingressos, portanto, alterações dessas áreas serão perdidas. Dismiss" + +#: admin/em-admin.php:118 +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Esta página corresponde a página de eventos Events Manager. Seu conteúdo será anulado pelo Events Manager, mas se você incluir o conteúdo da palavra CONTENTS (exatamente nas capitais) e cercá-la com outro texto, CONTEÚDO só serão substituídos. Se você quiser mudar a forma como os seus eventos aparecem, ir para a definições de página." + +#: admin/em-admin.php:145 +msgid "Displaying %s–%s of %s" +msgstr "Exibindo s %s-% de %s" + +#: admin/em-options.php:42 +msgid "Changes saved." +msgstr "Alterações salvas." + +#: admin/em-options.php:62 +msgid "This accepts %s and %s placeholders." +msgstr "Este aceita espaços reservados %s e %s." + +#: admin/em-options.php:63 +#: admin/em-options.php:64 +msgid "This accepts %s placeholders." +msgstr "Este aceita %s espaços reservados." + +#: admin/em-options.php:65 +msgid "This accepts %s, %s and %s placeholders." +msgstr "Este aceita espaços reservados %s,%s e %s." + +#: admin/em-options.php:67 +#: admin/em-options.php:626 +msgid "Save Changes" +msgstr "Salvar alterações" + +#: admin/em-options.php:67 +msgid "All" +msgstr "Todos" + +#: admin/em-options.php:69 +msgid "Only Network Admins see this" +msgstr "Somente Administradores de Rede podem ver isso" + +#: admin/em-options.php:73 +msgid "Collapse All" +msgstr "Recolher Tudo" + +#: admin/em-options.php:74 +msgid "Expand All" +msgstr "Expandir Tudo" + +#: admin/em-options.php:102 +msgid "Event Manager Options" +msgstr "Events Manager Opções" + +#: admin/em-options.php:152 +#: admin/em-options.php:168 +#: admin/em-options.php:210 +#: admin/em-options.php:300 +#: admin/em-options.php:323 +#: admin/em-options.php:339 +#: admin/em-options.php:364 +#: admin/em-options.php:386 +#: admin/em-options.php:401 +#: admin/em-options.php:422 +#: admin/em-options.php:444 +#: admin/em-options.php:496 +#: admin/em-options.php:515 +#: admin/em-options.php:529 +#: admin/em-options.php:593 +msgid "Click to toggle" +msgstr "Clique para alternar" + +#: admin/em-options.php:152 +msgid "Multi Site Options" +msgstr "Multi-Opções do Site" + +#: admin/em-options.php:156 +msgid "Enable global tables mode?" +msgstr "Ativar o modo de tabelas global?" + +#: admin/em-options.php:156 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Definir esta opção como sim vai fazer todos os eventos sejam salvados nas tabelas evento principal do site (EM também deve ser ativado). Isto permite que você compartilhe eventos em toda os Blogs diferentes, tais como eventos mostrando a sua rede, permitindo simultaneamente que os usuários exibam e gerenciem seus eventos dentro de seu próprio Blog. Tenha em mente que a ativação disso significará que ventos antigos criados no sub-blogs não serão mais acessíveis, e se você voltar, eles serão criados como novos eventos durante o modo de eventos globais só vai permanecer no site principal." + +#: admin/em-options.php:157 +msgid "Display global events on main blog?" +msgstr "Mostrar eventos globais no blog principal?" + +#: admin/em-options.php:157 +msgid "Displays events from all sites on the network by default. You can still restrict events by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Mostra eventos de todos os sites na rede por padrão. Você ainda pode restringir eventos pelo blog usando códigos de acesso e tags de templates juntamente com o blog atributo. Requer tabelas global a ser ligado." + +#: admin/em-options.php:158 +msgid "Link sub-site events directly to sub-site?" +msgstr "Link sub-site eventos diretamente para o site-sub?" + +#: admin/em-options.php:158 +msgid "When displaying global events on the main site you have the option of users viewing the event details on the main site or being directed to the sub-site." +msgstr "Ao exibir eventos globais no site principal você tem a opção de usuários que estão visualizando os detalhes do evento no site principal ou sendo direcionada para o sub-site." + +#: admin/em-options.php:168 +msgid "General options" +msgstr "Opções gerais" + +#: admin/em-options.php:172 +msgid "Use dropdown for locations?" +msgstr "Use dropdown para locais?" + +#: admin/em-options.php:172 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Selecione sim para selecionar localização de um menu drow-down; seleção local será mais rápido, mas você vai perder a capacidade de inserir locais com eventos" + +#: admin/em-options.php:173 +msgid "Use recurrence?" +msgstr "Use recorrência?" + +#: admin/em-options.php:173 +msgid "Select yes to enable the recurrence features feature" +msgstr "Selecione Sim para ativar a recorrência de características de" + +#: admin/em-options.php:174 +msgid "Enable bookings?" +msgstr "Habilitar reservas?" + +#: admin/em-options.php:174 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Escolha Sim para permitir reservas e bilhetes para eventos." + +#: admin/em-options.php:175 +msgid "Use categories?" +msgstr "Use as categorias?" + +#: admin/em-options.php:175 +msgid "Select yes to enable the category features" +msgstr "Selecione Sim para habilitar os recursos da categoria" + +#: admin/em-options.php:176 +msgid "Use event attributes?" +msgstr "Use atributos evento?" + +#: admin/em-options.php:176 +msgid "Select yes to enable the attributes feature" +msgstr "Selecione Sim para ativar o recurso de atributos" + +#: admin/em-options.php:180 +msgid "no default category" +msgstr "nenhuma categoria padrão" + +#: admin/em-options.php:185 +msgid "Default Category" +msgstr "Categoria padrão" + +#: admin/em-options.php:185 +msgid "This option allows you to select the default category when adding an event." +msgstr "Esta opção permite que você selecione a categoria padrão ao adicionar um evento." + +#: admin/em-options.php:185 +#: admin/em-options.php:194 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(Não aplicável com a posse de eventos em breve, em breve!)" + +#: admin/em-options.php:189 +msgid "no default location" +msgstr "sem local padrão" + +#: admin/em-options.php:194 +msgid "Default Location" +msgstr "Localização padrão" + +#: admin/em-options.php:194 +msgid "This option allows you to select the default location when adding an event." +msgstr "Esta opção permite que você selecione o local padrão ao adicionar um evento." + +#: admin/em-options.php:197 +msgid "Default Location Country" +msgstr "Localização País padrão" + +#: admin/em-options.php:197 +msgid "no default country" +msgstr "nenhum país padrão" + +#: admin/em-options.php:197 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Se você selecionar um país padrão, será pré-selecionado ao criar um novo local." + +#: admin/em-options.php:199 +msgid "Event Attributes" +msgstr "Atributos do Evento" + +#: admin/em-options.php:199 +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Você também pode adicionar atributos do evento aqui, um por linha neste formato #_ATT{key} . Eles não aparecem nas páginas de eventos a menos que você inseri-los em outro modelo abaixo, mas você pode querer armazenar informações extras sobre um evento para outros usos. Mais informações sobre espaços reservados." + +#: admin/em-options.php:201 +msgid "Show some love?" +msgstr "Demonstre um pouco de agradecimento?" + +#: admin/em-options.php:201 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Passamos centenas de horas de trabalho a fazer este Plugin livre, mostre o seu apoio e adicione um pequeno Link para o site do Plugin na parte inferior das páginas do seu evento!" + +#: admin/em-options.php:210 +#: admin/em-options.php:224 +msgid "Events page" +msgstr "Página de eventos" + +#: admin/em-options.php:219 +msgid "[No Events Page]" +msgstr "[Nenhuma Página de Eventos]" + +#: admin/em-options.php:224 +msgid "This option allows you to select which page to use as an events page" +msgstr "Esta opção permite que você selecione qual página para usar como uma página de eventos" + +#: admin/em-options.php:227 +msgid "Show events page in lists?" +msgstr "Mostrar página de eventos em listas?" + +#: admin/em-options.php:227 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Marque esta opção se quiser que a página de eventos possa aparecer junto com outras páginas em listas de páginas." + +#: admin/em-options.php:228 +msgid "Display calendar in events page?" +msgstr "Exibição do calendário na página de eventos?" + +#: admin/em-options.php:228 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Esta opção permite visualizar o calendário na página de eventos, em vez da lista padrão. Recomenda-se não mostrar widget do calendário junto com uma página do calendário." + +#: admin/em-options.php:228 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Se você gostaria de mostrar os eventos que se estendem por mais de um dia, ver a seção Calendário nesta página." + +#: admin/em-options.php:229 +msgid "Disable title rewriting?" +msgstr "Desabilitar reescrever título?" + +#: admin/em-options.php:229 +msgid "Some wordpress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Alguns temas Wordpress não seguem as melhores práticas ao gerar menus de navegação, e assim o recuro reescrever título automático pode causar problemas, se o seu menus não estão funcionando corretamente nas páginas de eventos, tente definir esta opção para \"Sim\", e proporcionar uma adequada formato HTML título abaixo." + +#: admin/em-options.php:230 +msgid "Event Manager titles" +msgstr "Gerente de títulos de eventos" + +#: admin/em-options.php:230 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Esta definição só é importante se você selecionou 'Sim' acima. Você vai notar os títulos eventos da página não está sendo reescritos, e você tem um novo título sob o nome da página padrão. Isto é onde você controla o HTML deste título. Certifique-se de manter o espaço reservado #_PAGETITLE aqui, como isso é o que é reescrito pelo Events Manager. Para controlar o que é reescrito no presente título, ver as configurações mais abaixo para títulos de página." + +#: admin/em-options.php:231 +msgid "Event List Limits" +msgstr "Lista de Limites de evento" + +#: admin/em-options.php:231 +msgid "This will control how many events are shown on one list by default." +msgstr "Isto irá controlar quantos eventos são mostrados em uma lista por padrão." + +#: admin/em-options.php:232 +msgid "Are current events past events?" +msgstr "São eventos atuais últimos acontecimentos?" + +#: admin/em-options.php:232 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Por padrão, os eventos que têm uma data de término mais tarde do que hoje vão ser incluídas em pesquisas, para definir esta sim, considere os eventos que começaram \"ontem\", como passado." + +#: admin/em-options.php:233 +msgid "Show events search?" +msgstr "Mostrar eventos de pesquisa?" + +#: admin/em-options.php:233 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Se definido como sim, um formulário de pesquisa vai aparecer logo acima da lista de eventos." + +#: admin/em-options.php:236 +msgid "Default event list ordering" +msgstr "Lista de eventos padrão ordenação" + +#: admin/em-options.php:241 +msgid "Order by start date, start time, then event name" +msgstr "Ordem por data de início, hora de início, em seguida, nome do evento" + +#: admin/em-options.php:242 +msgid "Order by name, start date, then start time" +msgstr "Ordenar por nome, data de início, então a hora de início" + +#: admin/em-options.php:243 +msgid "Order by name, end date, then end time" +msgstr "Ordenar por nome, data de término, então o tempo final" + +#: admin/em-options.php:244 +msgid "Order by end date, end time, then event name" +msgstr "Ordem por data final, hora de conclusão, nome do evento" + +#: admin/em-options.php:258 +msgid "All Ascending" +msgstr "Todos os Crescente" + +#: admin/em-options.php:261 +msgid "All Descending" +msgstr "Todos os Decrescente" + +#: admin/em-options.php:275 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "Quando o Events Manager exibe listas de eventos o comportamento padrão é a ordenação por data de início em ordem crescente. Para alterar isso, modifique os valores acima." + +#: admin/em-options.php:279 +msgid "Event list scope" +msgstr "Âmbito lista de eventos" + +#: admin/em-options.php:289 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Apenas mostrar os eventos de partida dentro de um certo limite de tempo na página de eventos. Padrão é eventos futuros, sem limite de tempo do fim." + +#: admin/em-options.php:300 +msgid "Events format" +msgstr "Formato de eventos" + +#: admin/em-options.php:303 +#: admin/em-options.php:342 +#: admin/em-options.php:367 +msgid "%s Page" +msgstr "Página %s" + +#: admin/em-options.php:305 +msgid "Events page title" +msgstr "Eventos título da página" + +#: admin/em-options.php:305 +msgid "The title on the multiple events page." +msgstr "O título na página de vários eventos." + +#: admin/em-options.php:306 +msgid "Default event list format header" +msgstr "De eventos padrão de cabeçalho formato de lista" + +#: admin/em-options.php:306 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Este conteúdo vai aparecer logo acima do seu código para o formato de lista de eventos padrão. Padrão em branco" + +#: admin/em-options.php:307 +msgid "Default event list format" +msgstr "Formato padrão de lista de eventos" + +#: admin/em-options.php:307 +msgid "The format of any events in a list." +msgstr "O formato de todos os eventos em uma lista." + +#: admin/em-options.php:308 +msgid "Default event list format footer" +msgstr "De eventos padrão rodapé formato de lista" + +#: admin/em-options.php:308 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Este conteúdo vai aparecer logo abaixo o código para o formato de lista de eventos padrão. Padrão em branco" + +#: admin/em-options.php:309 +msgid "No events message" +msgstr "Nenhuma mensagem de eventos" + +#: admin/em-options.php:309 +msgid "The message displayed when no events are available." +msgstr "A mensagem exibida quando nenhum evento estão disponíveis." + +#: admin/em-options.php:310 +msgid "List events by date title" +msgstr "Lista de eventos por título data" + +#: admin/em-options.php:310 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
                              " +msgstr "Se visualização de uma página para eventos em uma data específica, este é o título que iria aparecer. Para inserir valores de data, use caracteres de formato PHP tempo com um # símbolo, antes deles, ou seja #m , #M , #j , etc
                              " + +#: admin/em-options.php:312 +#: admin/em-options.php:350 +#: admin/em-options.php:375 +msgid "Single %s Page" +msgstr "Página % solteiros s" + +#: admin/em-options.php:314 +msgid "Single event page title format" +msgstr "Único evento de formato de título da página" + +#: admin/em-options.php:314 +msgid "The format of a single event page title." +msgstr "O formato de um único título de evento de página." + +#: admin/em-options.php:315 +msgid "Default single event format" +msgstr "Formato padrão único evento" + +#: admin/em-options.php:315 +msgid "The format of a single event page." +msgstr "O formato de uma página único evento." + +#: admin/em-options.php:323 +msgid "Calendar format" +msgstr "Formato de calendário" + +#: admin/em-options.php:327 +msgid "Small calendar title" +msgstr "Título pequeno calendário" + +#: admin/em-options.php:327 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "O formato do título, correspondente ao texto que aparece quando pairando sobre um dia do calendário repleto de eventos." + +#: admin/em-options.php:328 +msgid "Small calendar title separator" +msgstr "Separador de título pequeno calendário" + +#: admin/em-options.php:328 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "O separador que aparecem no título acima, quando mais de uma eventos estão ocorrendo no mesmo dia." + +#: admin/em-options.php:329 +msgid "Full calendar events format" +msgstr "Completo calendário formato eventos" + +#: admin/em-options.php:329 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "O formato de cada evento quando exibido no calendário completo. Lembre-se de incluir li tags antes e depois do evento." + +#: admin/em-options.php:330 +msgid "Show long events on calendar pages?" +msgstr "Mostrar eventos longos em páginas da agenda?" + +#: admin/em-options.php:330 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Se você está mostrando um calendário na página de eventos (consulte a seção Eventos formato nesta página), você tem a opção de mostrar os eventos que se estendem ao longo de dias em cada dia que ela ocorra." + +#: admin/em-options.php:331 +msgid "Show list on day with single event?" +msgstr "Mostrar lista em dia com o único evento?" + +#: admin/em-options.php:331 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Por padrão, se um dia do calendário só tem um evento, ele exibirá um único evento ao clicar no link dessa data do calendário. Se você selecionar Sim, aqui, você vai ter sempre ver uma lista de eventos." + +#: admin/em-options.php:339 +msgid "Locations format" +msgstr "Formato locais" + +#: admin/em-options.php:344 +#: admin/em-options.php:369 +msgid "%s page title" +msgstr "Title %s página" + +#: admin/em-options.php:344 +#: admin/em-options.php:369 +msgid "The title on the multiple %s page." +msgstr "O título na página %s múltiplas." + +#: admin/em-options.php:345 +#: admin/em-options.php:370 +msgid "%s list header format" +msgstr "Formato %s cabeçalho da lista" + +#: admin/em-options.php:345 +#: admin/em-options.php:370 +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Este conteúdo vai aparecer logo acima do seu código para formatar o %s lista abaixo. Padrão em branco" + +#: admin/em-options.php:346 +#: admin/em-options.php:371 +msgid "%s list item format" +msgstr "Formato %s item da lista" + +#: admin/em-options.php:346 +#: admin/em-options.php:371 +msgid "The format of a single %s in a list." +msgstr "O formato de um único %s em uma lista." + +#: admin/em-options.php:347 +#: admin/em-options.php:372 +msgid "%s list footer format" +msgstr "Formato %s rodapé lista" + +#: admin/em-options.php:347 +#: admin/em-options.php:372 +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Este conteúdo vai aparecer logo abaixo do seu código para formatar o %s lista acima. Padrão em branco" + +#: admin/em-options.php:348 +#: admin/em-options.php:356 +#: admin/em-options.php:373 +msgid "No %s message" +msgstr "Mensagem não %s" + +#: admin/em-options.php:348 +#: admin/em-options.php:373 +msgid "The message displayed when no %s are available." +msgstr "A mensagem que aparece quando não s % estão disponíveis." + +#: admin/em-options.php:352 +#: admin/em-options.php:377 +msgid "Single %s title format" +msgstr "Formato %s único título" + +#: admin/em-options.php:352 +msgid "The format of a single location page title." +msgstr "O formato de um único título local da página." + +#: admin/em-options.php:353 +#: admin/em-options.php:378 +msgid "Single %s page format" +msgstr "Formato %s única página" + +#: admin/em-options.php:353 +msgid "The format of a single location page." +msgstr "O formato de uma página única localização." + +#: admin/em-options.php:354 +msgid "Default location balloon format" +msgstr "Padrão de formato de balão de localização" + +#: admin/em-options.php:354 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "O formato do do texto constante do baloon descrever a localização de um mapa único local." + +#: admin/em-options.php:355 +msgid "Default %s list format" +msgstr "Padrão %s formato de lista" + +#: admin/em-options.php:355 +msgid "The format of the events the list inserted in the location page through the #_NEXTEVENTS, #_PASTEVENTS and #_ALLEVENTS element." +msgstr "O formato dos eventos da lista inserido na página de localização através do #_NEXTEVENTS , #_PASTEVENTS e #_ALLEVENTS elemento." + +#: admin/em-options.php:356 +msgid "The message to be displayed in the list generated by #_NEXTEVENTS, #_PASTEVENTS and #_ALLEVENTS when no events are available." +msgstr "A mensagem a ser exibida na lista gerada pelo #_NEXTEVENTS , #_PASTEVENTS e #_ALLEVENTS quando não há eventos estão disponíveis." + +#: admin/em-options.php:364 +msgid "Categories format" +msgstr "Formato categorias" + +#: admin/em-options.php:377 +msgid "The format of a single category page title." +msgstr "O formato de um único título da categoria página." + +#: admin/em-options.php:378 +msgid "The format of a single category page." +msgstr "O formato de uma página única categoria." + +#: admin/em-options.php:386 +msgid "RSS feed format" +msgstr "Formato de feed RSS" + +#: admin/em-options.php:390 +msgid "RSS main title" +msgstr "RSS título principal" + +#: admin/em-options.php:390 +msgid "The main title of your RSS events feed." +msgstr "O título principal do seu feed RSS eventos." + +#: admin/em-options.php:391 +msgid "RSS main description" +msgstr "RSS descrição principal" + +#: admin/em-options.php:391 +msgid "The main description of your RSS events feed." +msgstr "A principal descrição do seu feed RSS eventos." + +#: admin/em-options.php:392 +msgid "RSS title format" +msgstr "RSS formato de título" + +#: admin/em-options.php:392 +msgid "The format of the title of each item in the events RSS feed." +msgstr "O formato do título de cada item do feed RSS eventos." + +#: admin/em-options.php:393 +msgid "RSS description format" +msgstr "RSS formato de descrição" + +#: admin/em-options.php:393 +msgid "The format of the description of each item in the events RSS feed." +msgstr "O formato da descrição de cada item do feed RSS eventos." + +#: admin/em-options.php:401 +msgid "Maps and geotagging" +msgstr "Mapas e geotagging" + +#: admin/em-options.php:406 +msgid "Enable Google Maps integration?" +msgstr "Permitir a integração do Google Maps?" + +#: admin/em-options.php:410 +msgid "Check this option to enable Goggle Map integration." +msgstr "Marque esta opção para permitir a integração Mapa Goggle." + +#: admin/em-options.php:414 +msgid "Map text format" +msgstr "Mapa formato de texto" + +#: admin/em-options.php:414 +msgid "The text format inside the map balloons." +msgstr "O formato de texto dentro dos balões mapa." + +#: admin/em-options.php:422 +msgid "Booking and Ticketing Options" +msgstr "Reserva e emissão de bilhetes Opções" + +#: admin/em-options.php:426 +msgid "Approval Required?" +msgstr "Aprovação Obrigatório?" + +#: admin/em-options.php:426 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Reservas não será confirmada até que o administrador aprove." + +#: admin/em-options.php:427 +msgid "Currency" +msgstr "Moeda" + +#: admin/em-options.php:427 +msgid "Choose your currency for displaying event pricing." +msgstr "Escolha a sua moeda para exibir preços evento." + +#: admin/em-options.php:428 +msgid "Single ticket mode?" +msgstr "Modo de ingresso único?" + +#: admin/em-options.php:428 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "No modo de ingresso único, os usuários podem criar apenas um ingresso por reserva (e não verá opções para adicionar mais ingressos)." + +#: admin/em-options.php:429 +msgid "Show ticket table in single ticket mode?" +msgstr "Mostrar tabela Ingresso no modo ingresso único?" + +#: admin/em-options.php:429 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Se você preferir uma tabela Ingresso como com vários ingressos, mesmo para eventos único bilhete, permita isso." + +#: admin/em-options.php:430 +msgid "Show unavailable tickets?" +msgstr "Mostrar ingressos indisponíveis?" + +#: admin/em-options.php:430 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Você pode escolher se quer ou não mostrar ingressos disponíveis para os visitantes." + +#: admin/em-options.php:431 +msgid "Reserved unconfirmed spaces?" +msgstr "Reservados espaços não confirmados?" + +#: admin/em-options.php:431 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Por padrão, espaços para eventos se tornam indisponíveis uma vez que há reservas suficientes CONFIRMADO. A espaços de reserva, mesmo que não aprovados, escolha sim." + +#: admin/em-options.php:432 +msgid "Show multiple tickets if logged out?" +msgstr "Mostram vários ingressos se esiver não logado?" + +#: admin/em-options.php:432 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Se desconectado, o usuário será solicitado a se cadastrar para fazer a reserva. No entanto, podemos mostrar ingressos disponíveis, se você tiver mais de um ingresso." + +#: admin/em-options.php:433 +msgid "Allow overbooking when approving?" +msgstr "Permitir overbooking ao aprovar?" + +#: admin/em-options.php:433 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Se você receber mitas reservas pendentes e você decidir permitir reservas mais do que espaços permitem, definindo-o como sim lhe permitirá substituir o limite de espaço de eventos quando aprovando manualmente." + +#: admin/em-options.php:434 +msgid "Allow guest bookings?" +msgstr "Permitir reservas para convidados?" + +#: admin/em-options.php:434 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Se ativado, os visitantes podem fornecer um endereço de e-mail e uma conta de usuário será automaticamente criado para eles, juntamente com a sua reserva. Eles também serão capazes de voltar a entrar com essa conta recém-criada." + +#: admin/em-options.php:435 +msgid "Display login form?" +msgstr "Mostrar formulário de login?" + +#: admin/em-options.php:435 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Escolher se quer ou não exibir um formulário de login na área formulário de reserva de lembrar seus membros efetuem login antes de reservar." + +#: admin/em-options.php:444 +msgid "Booking Email Templates" +msgstr "Modelos de reserva E-mail" + +#: admin/em-options.php:448 +msgid "Default contact person" +msgstr "Pessoa de contacto padrão" + +#: admin/em-options.php:448 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Selecione a pessoa de contato padrão. Esse usuário será utilizado sempre que uma pessoa de contato não é explicitamente especificada para um evento" + +#: admin/em-options.php:449 +msgid "Email events admin?" +msgstr "Eventos de e-mail admin?" + +#: admin/em-options.php:449 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Se você quiser todos os eventos de e-mail de confirmação de reserva enviado a um administrador escrever seu e-mail aqui (deixe em branco para não enviar um e-mail)." + +#: admin/em-options.php:450 +msgid "Email contact person?" +msgstr "E-mail pessoa de contato?" + +#: admin/em-options.php:450 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Marque esta opção se você quiser o contato de eventos para receber um e-mail livros quando coloca alguém. Um e-mail será enviado quando a reserva for feita pela primeira vez (independentemente se confirmada ou pendente)" + +#: admin/em-options.php:451 +msgid "Disable new registration email?" +msgstr "Desabilitar email novo registro?" + +#: admin/em-options.php:451 +msgid "Check this option if you want to prevent the wordpress registration email from going out when a user anonymously books an event." +msgstr "Marque esta opção se você quiser evitar o email de inscrição Wordpress de sair quando um usuário anônimo livros um evento." + +#: admin/em-options.php:453 +msgid "Contact person booking confirmed" +msgstr "Reserva confirmada pessoa de contato" + +#: admin/em-options.php:454 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "Um e-mail será enviado para o contato evento quando a reserva for feita pela primeira vez." + +#: admin/em-options.php:456 +msgid "Contact person email subject" +msgstr "Contactar a pessoa de e-mail" + +#: admin/em-options.php:457 +msgid "Contact person email" +msgstr "E-mail de contato pessoa" + +#: admin/em-options.php:459 +msgid "Contact person booking cancelled" +msgstr "Pessoa de contacto reserva cancelada" + +#: admin/em-options.php:460 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Um e-mail será enviado para o contato evento se alguém cancela sua reserva." + +#: admin/em-options.php:462 +msgid "Contact person cancellation subject" +msgstr "Contactar a pessoa de cancelamento" + +#: admin/em-options.php:463 +msgid "Contact person cancellation email" +msgstr "De e-mail de cancelamento pessoa" + +#: admin/em-options.php:465 +msgid "Confirmed booking email" +msgstr "E-mail reserva confirmada" + +#: admin/em-options.php:466 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Este é enviado no momento da reserva de uma pessoa é confirmada. Este será enviado automaticamente se as aprovações são necessárias e a reserva for aprovado. Se aprovações são deficientes, este é enviado quando um usuário submete sua primeira reserva." + +#: admin/em-options.php:468 +msgid "Booking confirmed email subject" +msgstr "Reservas sujeitas e-mail confirmado" + +#: admin/em-options.php:469 +msgid "Booking confirmed email" +msgstr "Reservas e-mail confirmado" + +#: admin/em-options.php:471 +msgid "Pending booking email" +msgstr "E-mail reserva pendente" + +#: admin/em-options.php:472 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Esta será enviada para a pessoa quando pela primeira vez apresentar a sua reserva. Não é relevante se as reservas não precisam de aprovação." + +#: admin/em-options.php:474 +msgid "Booking pending email subject" +msgstr "Reserva assunto do email pendentes" + +#: admin/em-options.php:475 +msgid "Booking pending email" +msgstr "Reserva de e-mail pendentes" + +#: admin/em-options.php:477 +msgid "Rejected booking email" +msgstr "E-mail reserva rejeitado" + +#: admin/em-options.php:478 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Este será enviado automaticamente quando a reserva for rejeitada. Não é relevante se as reservas não precisam de aprovação." + +#: admin/em-options.php:480 +msgid "Booking rejected email subject" +msgstr "Reserva rejeitado assunto do email" + +#: admin/em-options.php:480 +msgid "The subject of the email sent to the person making a booking that is awaiting administrator approval. Not relevant if bookings don't require approval." +msgstr "O assunto do e-mail enviado para a pessoa fazer uma reserva que está aguardando aprovação do administrador. Não é relevante se as reservas não precisam de aprovação." + +#: admin/em-options.php:481 +msgid "Booking rejected email" +msgstr "Reserva rejeitada e-mail" + +#: admin/em-options.php:481 +msgid "The body of the email which will be sent to the person if the booking is rejected. Not relevant if bookings don't require approval." +msgstr "O corpo do e-mail que será enviado para a pessoa se a reserva for rejeitada. Não é relevante se as reservas não precisam de aprovação." + +#: admin/em-options.php:485 +msgid "This will be sent when a user cancels their booking." +msgstr "Este será enviado quando o usuário cancela a sua reserva." + +#: admin/em-options.php:487 +msgid "Booking cancelled email subject" +msgstr "Reserva assunto do email cancelado" + +#: admin/em-options.php:488 +msgid "Booking cancelled email" +msgstr "Reserva de e-mail cancelado" + +#: admin/em-options.php:496 +msgid "Email Settings" +msgstr "Configurações de e-mail" + +#: admin/em-options.php:500 +msgid "Notification sender name" +msgstr "Notificação nome do remetente" + +#: admin/em-options.php:500 +msgid "Insert the display name of the notification sender." +msgstr "Insira o nome de exibição do remetente notificação." + +#: admin/em-options.php:501 +msgid "Notification sender address" +msgstr "Notificação endereço do remetente" + +#: admin/em-options.php:501 +msgid "Insert the address of the notification sender." +msgstr "Insira o endereço do remetente notificação." + +#: admin/em-options.php:502 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "A porta através da qual você e-mail serão enviadas notificações. Verifique se o firewall não bloqueia esta porta" + +#: admin/em-options.php:503 +msgid "Mail sending method" +msgstr "Método de envio de email" + +#: admin/em-options.php:503 +msgid "PHP mail function" +msgstr "PHP função mail" + +#: admin/em-options.php:503 +msgid "Select the method to send email notification." +msgstr "Selecione o método para enviar email de notificação." + +#: admin/em-options.php:504 +msgid "Use SMTP authentication?" +msgstr "Usar a autenticação SMTP?" + +#: admin/em-options.php:504 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "Autenticação SMTP é muitas vezes necessário. Se você usa GMail, certifique-se definir esse parâmetro como Sim" + +#: admin/em-options.php:505 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "O host SMTP. Normalmente, corresponde a 'localhost'. Se você usa GMail, defina este valor para 'ssl://smtp.gmail.com: 465'." + +#: admin/em-options.php:506 +msgid "SMTP username" +msgstr "SMTP nome de usuário" + +#: admin/em-options.php:506 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Insira o nome de usuário para ser usado para acessar o seu servidor SMTP." + +#: admin/em-options.php:507 +msgid "SMTP password" +msgstr "SMTP password" + +#: admin/em-options.php:507 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Inserir a senha para ser usado para acessar o seu servidor SMTP" + +#: admin/em-options.php:515 +msgid "Images size" +msgstr "Tamanho das imagens" + +#: admin/em-options.php:519 +msgid "Maximum width (px)" +msgstr "Largura máxima (px)" + +#: admin/em-options.php:519 +msgid "The maximum allowed width for images uploades" +msgstr "A largura máxima permitida para uploades imagens" + +#: admin/em-options.php:520 +msgid "Maximum height (px)" +msgstr "Altura máxima (px)" + +#: admin/em-options.php:520 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "A altura máxima permitida para o upload de imagens, em pixels" + +#: admin/em-options.php:521 +msgid "Maximum size (bytes)" +msgstr "Tamanho máximo (bytes)" + +#: admin/em-options.php:521 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "O tamanho máximo permitido para upload de imagens, em bytes" + +#: admin/em-options.php:529 +msgid "User Capabilities" +msgstr "Capacidades de usuário" + +#: admin/em-options.php:533 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Atenção: Alterar esses valores pode resultar em exposição de informações anteriormente oculto a todos os usuários." + +#: admin/em-options.php:540 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Agora você pode dar o controle refinado no que diz respeito ao que os usuários podem ver com os acontecimentos. Cada função de usuário pode ter executar diferentes conjuntos de ações." + +#: admin/em-options.php:548 +msgid "Users can publish events and skip any admin approval." +msgstr "Os usuários podem publicar eventos e ignorar qualquer aprovação do administrador." + +#: admin/em-options.php:549 +msgid "User can edit the global categories." +msgstr "Usuário pode editar as categorias global." + +#: admin/em-options.php:550 +msgid "User can delete other users events." +msgstr "Usuário pode excluir eventos de outros usuários." + +#: admin/em-options.php:551 +msgid "User can delete other users locations." +msgstr "O usuário pode excluir locais de outros usuários." + +#: admin/em-options.php:552 +msgid "User can edit other users locations." +msgstr "Usuário pode editar outras localidades usuários." + +#: admin/em-options.php:553 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "Usuário pode gerenciar outros usuários reservas individuais e configurações reserva evento." + +#: admin/em-options.php:554 +msgid "User can edit other users events." +msgstr "Usuário pode editar eventos de outros usuários." + +#: admin/em-options.php:555 +msgid "User can delete their own locations." +msgstr "Usuário pode excluir seus próprios locais." + +#: admin/em-options.php:556 +msgid "User can delete their events." +msgstr "Usuário pode excluir seus eventos." + +#: admin/em-options.php:557 +msgid "User can edit their locations." +msgstr "Usuário pode editar suas localizações." + +#: admin/em-options.php:558 +msgid "User can use and manage bookings with their events." +msgstr "O usuário pode usar e gerenciar reservas com os seus eventos." + +#: admin/em-options.php:559 +msgid "User can view other users locations, to make locations shared by all users allow all event user roles to view all locations." +msgstr "O usuário pode visualizar a localização dos outros usuários, para tornar locais compartilhados por todos os usuários permitir que todas as funções de usuário evento para ver todos os locais." + +#: admin/em-options.php:560 +msgid "User can create recurrent events." +msgstr "Usuário pode criar eventos recorrentes." + +#: admin/em-options.php:561 +msgid "User can create and edit their events." +msgstr "Usuário pode criar e editar seus eventos." + +#: admin/em-options.php:593 +msgid "Anonymous Event Submission" +msgstr "Submission evento anônimos" + +#: admin/em-options.php:597 +msgid "You can allow users to publicly submit events on your blog by using the [event_form] shortcode, and enabling anonymous submissions below." +msgstr "Você pode permitir que os usuários publicamente apresentar eventos em seu blog usando o [event_form] shortcode, e permitindo contribuições anônimas abaixo." + +#: admin/em-options.php:600 +msgid "Allow anonymous event submissions?" +msgstr "Permitem submissões de eventos anônimo?" + +#: admin/em-options.php:600 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Gostaria de permitir que os usuários enviem reservas anonimamente? Se sim, você pode usar o novo [event_form] shortcode ou em_event_form() template tag com este habilitado." + +#: admin/em-options.php:601 +msgid "Guest Default User" +msgstr "Default User Guest" + +#: admin/em-options.php:601 +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that." +msgstr "Eventos exigem um usuário para eles próprios. A fim de permitir eventos a serem apresentados de forma anónima é necessário atribuir esse evento um usuário específico. Nós recomendamos que você crie um assinante \"Anonymous\" com uma senha muito bom e usar isso." + +#: admin/em-options.php:602 +msgid "Success Message" +msgstr "Mensagem de sucesso" + +#: admin/em-options.php:602 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Submitters anônimo não pode ver ou modificar o seu evento, uma vez submetido. Você pode personalizar a mensagem de sucesso que vê aqui." + +#: admin/em-docs.php:15 +msgid "Do a search for this string within event name, details and location address." +msgstr "Fazer uma pesquisa para esta cadeia dentro de nome do evento, detalhes e endereço do local." + +#: admin/em-docs.php:16 +msgid "See the events lists limit option on the settings page." +msgstr "Veja os eventos opção de limite de listas na página de configurações." + +#: admin/em-docs.php:17 +#: admin/em-docs.php:23 +msgid "Choose what fields to order your results by. You can supply a single field or multiple comma-seperated fields (e.g. \"start_date,name\")." +msgstr "Escolher quais campos para ordenar os seus resultados por. Você pode fornecer um campo único ou múltiplo por vírgula seperated campos (por exemplo, \"start_date nome\")." + +#: admin/em-docs.php:17 +#: admin/em-docs.php:18 +msgid "See the event lists ordering option on the settings page." +msgstr "Veja a lista de eventos ordenação opção na página de configurações." + +#: admin/em-docs.php:21 +msgid "If set to 1 will only show locations that have at least one event occurring during the scope." +msgstr "Se definido como 1 só vai mostrar os locais que têm pelo menos um evento que ocorre durante o escopo." + +#: admin/em-docs.php:22 +msgid "If set to 1 will only show locations that have no events occurring during the scope." +msgstr "Se definido como 1 só vai mostrar os locais que não têm eventos que ocorrem durante o escopo." + +#: admin/em-docs.php:25 +msgid "Search for locations in this town (no partial matches, case sensitive)." +msgstr "Procura de locais na cidade (sem resultados parciais caso, sensíveis)." + +#: admin/em-docs.php:25 +#: admin/em-docs.php:26 +#: admin/em-docs.php:27 +#: admin/em-docs.php:28 +#: admin/em-docs.php:29 +msgid "none" +msgstr "nenhum" + +#: admin/em-docs.php:26 +msgid "Search for locations in this state (no partial matches, case sensitive)." +msgstr "Procura de locais neste estado (sem resultados parciais caso, sensíveis)." + +#: admin/em-docs.php:27 +msgid "Search for locations in this region (no partial matches, case sensitive)." +msgstr "Procurar locais nesta região (sem resultados parciais caso, sensíveis)." + +#: admin/em-docs.php:28 +msgid "Search for locations in this country (no partial matches, case sensitive)." +msgstr "Procura de locais no país (sem resultados parciais caso, sensíveis)." + +#: admin/em-docs.php:29 +msgid "Search for locations in this postcode (no partial matches, case sensitive)." +msgstr "Procura de locais neste código postal (sem resultados parciais caso, sensíveis)." + +#: admin/em-docs.php:32 +msgid "If set to 1 it will display a full calendar that shows event names." +msgstr "Se configurado com 1 ele irá mostrar um calendário completo que mostra nomes de eventos." + +#: admin/em-docs.php:33 +msgid "If set to 1, will show events that last longer than a day." +msgstr "Se definido como 1, vai mostrar os eventos que duram mais de um dia." + +#: admin/em-docs.php:34 +msgid "Same as for events." +msgstr "Mesmo que para eventos." + +#: admin/em-docs.php:39 +msgid "Limits the amount of values returned to this number." +msgstr "Limita a quantidade de valores retornados para este número." + +#: admin/em-docs.php:40 +msgid "Choose the time frame of events to show. Accepted values are \"future\", \"past\" or \"all\" events. Additionally you can supply dates (in format of YYYY-MM-DD), either single for events on a specific date or two dates seperated by a comma (e.g. 2010-12-25,2010-12-31) for events ocurring between these dates." +msgstr "Escolha o período de tempo de eventos para mostrar. Os valores aceitos são \"future\", \"past\" ou \"all\" os eventos. Além disso, você pode fornecer datas (no formato de AAAA-MM-DD), seja único para eventos em uma data específica ou duas datas separadas por uma vírgula (por exemplo, 2010-12-25,2010-12-31) para eventos ocorrendo entre estes datas." + +#: admin/em-docs.php:41 +msgid "Indicates the order of the events. Choose between ASC (ascending) and DESC (descending)." +msgstr "Indica a ordem dos eventos. Escolher entre ASC (ascendente) e DESC (descendente)." + +#: admin/em-docs.php:42 +msgid "Choose what fields to order your results by. You can supply a single field or multiple comma-seperated fields (e.g. \"start_date,name\"). See specific instances (e.g. events, locations, etc.) for field names." +msgstr "Escolher quais campos para ordenar os seus resultados por. Você pode fornecer um campo único ou múltiplo por vírgula seperated campos (por exemplo, \"start_date nome\"). Veja casos específicos (por exemplo, eventos, locais, etc) para nomes de campo." + +#: admin/em-docs.php:43 +msgid "If you are displaying some information with the shortcode or function (e.g. listing events), you can supply the html and placeholders here." +msgstr "Se você está exibindo algumas informações com o shortcode ou função (eventos de listagem, por exemplo), você pode fornecer o html e espaços reservados aqui." + +#: admin/em-docs.php:43 +msgid "The relevant default format will be taken from the settings page." +msgstr "O formato padrão pertinentes serão tomadas a partir da página de configurações." + +#: admin/em-docs.php:44 +msgid "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the search to events with these id(s)." +msgstr "Fornecer um ID único ou por vírgula seperated ids (por exemplo, \"1,2,3\") para limitar a pesquisa a eventos com estas id (s)." + +#: admin/em-docs.php:45 +msgid "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the search to events in these categories." +msgstr "Fornecer um ID único ou por vírgula seperated ids (por exemplo, \"1,2,3\") para limitar a pesquisa a eventos nessas categorias." + +#: admin/em-docs.php:46 +msgid "Supply a single id or comma-seperated ids to limit the search to these locations (or events in these locations)." +msgstr "Fornecer um ID único ou por vírgula seperated ids para limitar a busca a esses locais (ou eventos nesses locais)." + +#: admin/em-docs.php:47 +msgid "For example, if you have ten results, if you set this to 5, only the last 5 results will be returned. Useful for pagination." +msgstr "Por exemplo, se você tem dez resultados, se você definir essa a 5, apenas os últimos 5 resultados serão devolvidos. Útil para a paginação." + +#: admin/em-docs.php:48 +msgid "If set to 1, will show only events that are recurring (i.e. events that are repeated over different dates)." +msgstr "Se definido como 1, vai mostrar apenas os eventos que são recorrentes (ou seja, eventos que se repetem ao longo datas diferentes)." + +#: admin/em-docs.php:49 +msgid "If set to 1, will only show recurring event templates. Only useful if you know what you're doing, use recurrence if you want events that are recurrences." +msgstr "Se definido como 1, só vai mostrar modelos evento recorrente. Somente útil se você sabe o que está fazendo, use recorrência se você quiser eventos que são as recorrências." + +#: admin/em-docs.php:50 +msgid "If set to a month (1 to 12) only events that start or end during this month/year will be retured. Must be used in conjunction with year and does not work as intended if used with scope." +msgstr "Se definido como um mês (1 a 12) apenas os eventos que começam ou terminam neste mês / ano serão devolvidos. Deve ser usado em conjunto com o ano e não funciona como esperado se usado com escopo." + +#: admin/em-docs.php:51 +msgid "If set to a year (e.g. 2010) only events that start or end during this year/month will be returned. Does not work as intended if used with scope." +msgstr "Se definido para um ano (por exemplo, 2010) apenas os eventos que começam ou terminam durante este ano / mês serão devolvidos. Não funciona como esperado se usado com escopo." + +#: admin/em-docs.php:52 +msgid "If you supply this as an argument, the returned data will be in an array, no objects (only useful wen using PHP, not shortcodes)" +msgstr "Se você fornecer isso como um argumento, os dados retornados serão em uma matriz, nenhum objeto (apenas wen úteis usando PHP, não shortcodes)" + +#: admin/em-docs.php:53 +msgid "When using a function or shortcode that outputs items (e.g. [events_list] for events, [locations_list] for locations), if the number of items supercede the limit of items to show, setting this to 1 will show page links under the list." +msgstr "Ao usar uma função ou shortcode que as saídas de itens (por exemplo, [events_list] para eventos, [locations_list] para locais), se o número de itens superam o limite de itens a serem mostrados, definindo-o para um irá mostrar links de páginas na lista." + +#: admin/em-docs.php:60 +msgid "Displays the name of the event." +msgstr "Exibe o nome do evento." + +#: admin/em-docs.php:61 +msgid "Shows the description of the event." +msgstr "Mostra a descrição do evento." + +#: admin/em-docs.php:62 +msgid "If you added a more tag to your event description, only the content before this tag will show (currently, no read more link is added)." +msgstr "Se você adicionou um tag mais à sua descrição do evento, apenas o conteúdo antes de essa marca vai mostrar (atualmente, não leia mais ligação é adicionado)." + +#: admin/em-docs.php:63 +msgid "Shows the event corresponding ID number in the database table." +msgstr "Mostra o evento número de identificação correspondente na tabela de banco de dados." + +#: admin/em-docs.php:64 +#: admin/em-docs.php:133 +msgid "Shows the event image, if available." +msgstr "Mostra a imagem do evento, se disponível." + +#: admin/em-docs.php:70 +msgid "Displays the start time in a 24 hours format (e.g. 16:30)." +msgstr "Exibe o horário de início no formato de 24 horas (por exemplo 16:30)." + +#: admin/em-docs.php:71 +msgid "Displays the end time in a 24 hours format (e.g. 18:30)." +msgstr "Exibe o tempo final em um formato de 24 horas (por exemplo 18:30)." + +#: admin/em-docs.php:72 +msgid "Displays the start time in a 12 hours format (e.g. 4:30 PM)." +msgstr "Exibe a hora de início em um formato de 12 horas (por exemplo, 4:30 PM)." + +#: admin/em-docs.php:73 +msgid "Displays the end time in a 12 hours format (e.g. 6:30 PM)." +msgstr "Exibe o tempo final em um formato de 12 horas (por exemplo, 6:30)." + +#: admin/em-docs.php:77 +msgid "Events Manager allows extremely flexible date formatting by using PHP date syntax format characters along with placeholders." +msgstr "Events Manager permite a formatação da data extremamente flexível usando PHP date caracteres de formato de sintaxe , juntamente com espaços reservados." + +#: admin/em-docs.php:79 +msgid "Prepend # or #@ before a valid PHP date syntax format character to show start and end date/time information respectively (e.g. #F will show the starting month name like \"January\", #@h shows the end hour)." +msgstr "Prepend # ou #@ antes de uma data válida PHP caráter formato de sintaxe para mostrar de início e término de data / hora, respectivamente, informações (por exemplo, #F mostrará o nome do mês de início como \"Janeiro\", # @ h mostra a hora final)." + +#: admin/em-docs.php:80 +msgid "" +"You can also create a date format without prepending # to each character by wrapping a valid php date() format in #{} or #@{} (e.g. #_{d/m/Y}). If there is no end date (or is same as start date), the value is not shown. This is useful if you want to show event end dates only on events that are longer than on day, e.g. #j #M #Y #@_{ u\n" +"\til j M Y}." +msgstr "" +"Você também pode criar um formato de data sem prepending # para cada personagem envolvendo uma data válida php () formato em #{} ou #@{} (por exemplo, #_{d/m/Y} ). Se não há uma data final (ou é a mesma data de início), o valor não é mostrado. Isto é útil se você quer mostrar end evento datas somente em eventos que são mais do que no dia, por exemplo, #j #M #Y #@_{ u\n" +"\tilj MY} ." + +#: admin/em-docs.php:85 +msgid "Simply prints the event URL. You can use this placeholder to build your own customised links." +msgstr "Simplesmente imprime a URL do evento. Você pode usar este espaço reservado para construir seus próprios links personalizados." + +#: admin/em-docs.php:86 +#: admin/em-docs.php:134 +msgid "Shows the event image url, if available." +msgstr "Mostra a url imagem do evento, se disponível." + +#: admin/em-docs.php:87 +msgid "Displays the event name with a link to the event page." +msgstr "Exibe o nome do evento com um link para a página do evento." + +#: admin/em-docs.php:88 +msgid "Inserts a link to the admin or buddypress (if activated) edit event page, only if a user is logged in and is allowed to edit the event." +msgstr "Insere um link para o administrador ou BuddyPress (se ativado) editar página do evento, somente se o usuário está logado e tem permissão para editar o evento." + +#: admin/em-docs.php:89 +msgid "Inserts a url to the admin or buddypress (if activated) edit event page, only if a user is logged in and is allowed to edit the event." +msgstr "Insere uma url para o administrador ou BuddyPress (se ativado) editar página do evento, somente se o usuário está logado e tem permissão para editar o evento." + +#: admin/em-docs.php:93 +msgid "Events Manager allows you to create dynamic attributes to your events, which act as extra information fields for your events (e.g. \"Dress Code\"). For more information see our online documentation for more info on attributes." +msgstr "Events Manager permite-lhe criar atributos dinâmicos para seus eventos, que funcionam como campos de informação extra para seus eventos (por exemplo, \"Dress Code\"). Para mais informações, consulte a nossa documentação on-line para mais informações sobre atributos." + +#: admin/em-docs.php:95 +msgid "This key will appear as an option when adding attributes to your event." +msgstr "Esta chave irá aparecer como uma opção ao adicionar atributos ao seu evento." + +#: admin/em-docs.php:96 +msgid "This key will appear as an option when adding attributes to your event. The text in the second braces will appear if the attribute is not defined or left blank for that event." +msgstr "Esta chave irá aparecer como uma opção ao adicionar atributos ao seu evento. O texto no segundo aparelho aparecerá se o atributo não é definido ou deixado em branco para esse evento." + +#: admin/em-docs.php:97 +msgid "This key will appear as an option when adding attributes to your event. The second braces are optional and will use a select box with these values as input. If no valid value is defined, the first option is used." +msgstr "Esta chave irá aparecer como uma opção ao adicionar atributos ao seu evento. As chaves são opcionais e segundo usará uma caixa de seleção com esses valores como entrada. Se nenhum valor válido é definido, a primeira opção é usada." + +#: admin/em-docs.php:101 +msgid "These placeholders will only show if RSVP is enabled for the given event and in the events manager settings page. Spaces placeholders will default to 0" +msgstr "Esses espaços reservados serão exibidos apenas se RSVP é habilitado para o determinado evento e na página de configurações eventos gerente. Espaços reservados espaços será o padrão para 0" + +#: admin/em-docs.php:103 +msgid "Adds a booking forms for this event." +msgstr "Adiciona uma forma de reserva para este evento." + +#: admin/em-docs.php:104 +msgid "Shows available spaces for the event." +msgstr "Mostra os espaços disponíveis para o evento." + +#: admin/em-docs.php:105 +msgid "Shows the amount of currently booked spaces for the event." +msgstr "Mostra a quantidade de espaços actualmente reservado para o evento." + +#: admin/em-docs.php:106 +msgid "Shows the amount of pending spaces for the event." +msgstr "Mostra a quantidade de espaços pendentes para o evento." + +#: admin/em-docs.php:107 +msgid "Shows the total spaces for the event." +msgstr "Mostra o total de espaços para o evento." + +#: admin/em-docs.php:108 +msgid "Shows the list of user avatars attending events." +msgstr "Mostra a lista de avatares usuário participar de eventos." + +#: admin/em-docs.php:109 +msgid "A single button that will appear to logged in users, if they click on it, they apply for a booking. This button will only display if there is one ticket." +msgstr "Um único botão que aparecerá para usuários logados, se clicar sobre ele, se candidatam a uma reserva. Este botão só vai mostrar se há um ingresoo." + +#: admin/em-docs.php:110 +msgid "Shows the url to the admin or buddypress (if activated) bookings management page for this event. Only shown if user is logged in and able to manage bookings." +msgstr "Mostra o url para o administrador ou BuddyPress (se ativado) página de gerenciamento de reservas para este evento. Só aparece se o usuário está logado e capaz de gerenciar reservas." + +#: admin/em-docs.php:111 +msgid "Shows a link to the admin or buddypress (if activated) bookings management page for this event. Only shown if user is logged in and able to manage bookings." +msgstr "Mostra um link para o administrador ou BuddyPress (se ativado) página de gerenciamento de reservas para este evento. Só aparece se o usuário está logado e capaz de gerenciar reservas." + +#: admin/em-docs.php:115 +msgid "The values here are taken from the chosen contact for the specific event, or the default contact in the settings page." +msgstr "Os valores aqui são tomadas a partir do contato escolhido para o evento específico, ou o contato padrão na página de configurações." + +#: admin/em-docs.php:117 +msgid "Name of the contact person for this event (as shown in the dropdown when adding an event)." +msgstr "Nome da pessoa de contato para este evento (como mostrado na lista suspensa ao adicionar um evento)." + +#: admin/em-docs.php:118 +msgid "Contact person's username." +msgstr "Fale nome da pessoa." + +#: admin/em-docs.php:119 +msgid "E-mail of the contact person for this event." +msgstr "E-mail da pessoa de contato para este evento." + +#: admin/em-docs.php:120 +msgid "Phone number of the contact person for this event. Can be set in the user profile page." +msgstr "Número de telefone da pessoa de contato para este evento. Pode ser definido na página de perfil de usuário." + +#: admin/em-docs.php:121 +msgid "Contact person's avatar." +msgstr "Fale avatar da pessoa." + +#: admin/em-docs.php:122 +msgid "Contact person's \"Profile\" link. Only works with BuddyPress enabled." +msgstr "Pessoa de contato do link \"Perfil\". Só funciona com BuddyPress habilitado." + +#: admin/em-docs.php:123 +msgid "Contact person's profile url. Only works with BuddyPress enabled." +msgstr "Fale url pessoa de perfil. Só funciona com BuddyPress habilitado." + +#: admin/em-docs.php:124 +msgid "Contact person's wordpress user ID." +msgstr "ID da pessoa de contato do usuário wordpress." + +#: admin/em-docs.php:131 +msgid "Shows the category name of the event." +msgstr "Mostra o nome da categoria do evento." + +#: admin/em-docs.php:132 +msgid "Shows the category ID of the event." +msgstr "Mostra o ID da categoria do evento." + +#: admin/em-docs.php:135 +#: admin/em-docs.php:151 +msgid "Shows the location description." +msgstr "Mostra a descrição do local." + +#: admin/em-docs.php:143 +msgid "Displays the location name." +msgstr "Exibe o nome do local." + +#: admin/em-docs.php:144 +msgid "Displays the address." +msgstr "Exibe o endereço." + +#: admin/em-docs.php:145 +msgid "Displays the town." +msgstr "Exibe a cidade." + +#: admin/em-docs.php:146 +msgid "Displays the state/county." +msgstr "Exibe o estado / município." + +#: admin/em-docs.php:147 +msgid "Displays the postcode." +msgstr "Exibe o código postal." + +#: admin/em-docs.php:148 +msgid "Displays the region." +msgstr "Exibe a região." + +#: admin/em-docs.php:149 +msgid "Displays the country." +msgstr "Exibe o país." + +#: admin/em-docs.php:150 +msgid "Displays a google map showing where the event is located (Will not show if maps are disabled in the settings page)" +msgstr "Exibe um mapa do google, mostrando onde o evento está localizado (não vai mostrar se os mapas estão desabilitados na página de configurações)" + +#: admin/em-docs.php:152 +msgid "If you added a more tag to your location description, only the content before this tag will show (currently, no read more link is added)." +msgstr "Se você adicionou um tag mais a sua descrição, localização apenas o conteúdo antes de essa marca vai mostrar (atualmente, não leia mais ligação é adicionado)." + +#: admin/em-docs.php:153 +msgid "Shows the location image." +msgstr "Mostra a imagem do local." + +#: admin/em-docs.php:154 +msgid "Displays the location ID number." +msgstr "Exibe o número de identificação do local." + +#: admin/em-docs.php:159 +msgid "Simply prints the location URL. You can use this placeholder to build your own customised links." +msgstr "Simplesmente imprime a URL do local. Você pode usar este espaço reservado para construir seus próprios links personalizados." + +#: admin/em-docs.php:160 +msgid "Displays the location name with a link to the location page." +msgstr "Exibe o nome do local com um link para a página de localização." + +#: admin/em-docs.php:164 +msgid "You can show lists of other events that are being held at this location. The formatting of the list is the same as a normal events list." +msgstr "Você pode mostrar as listas de outros eventos que estão sendo realizadas neste local. A formatação da lista é o mesmo que uma lista de eventos normal." + +#: admin/em-docs.php:166 +msgid "Will show a list of all past events at this location." +msgstr "Irá mostrar uma lista de todos os acontecimentos do passado neste local." + +#: admin/em-docs.php:167 +msgid "Will show a list of all future events at this location." +msgstr "Irá mostrar uma lista de todos os eventos futuros neste local." + +#: admin/em-docs.php:168 +msgid "Will show a list of all events at this location." +msgstr "Irá mostrar uma lista de todos os eventos neste local." + +#: admin/em-docs.php:174 +msgid "When a specific booking is displayed (on screen and on email), you can use these placeholders to show specific information about the booking. For contact details of the contact of this event, see the events placeholders." +msgstr "Quando uma reserva específica é exibido (na tela e no e-mail), você pode usar esses espaços reservados para mostrar as informações específicas sobre a reserva. Para detalhes de contato do contato deste evento, ver os espaços reservados eventos." + +#: admin/em-docs.php:176 +msgid "Name of person who made the booking." +msgstr "Nome da pessoa que fez a reserva." + +#: admin/em-docs.php:177 +msgid "Email of person who made the booking." +msgstr "E-mail da pessoa que fez a reserva." + +#: admin/em-docs.php:178 +msgid "Phone number of person who made the booking." +msgstr "Número de telefone da pessoa que fez a reserva." + +#: admin/em-docs.php:179 +msgid "Number of spaces the person has booked." +msgstr "Número de espaços que a pessoa tem reservado." + +#: admin/em-docs.php:180 +msgid "Any specific comments made by the person who made the booking." +msgstr "Quaisquer comentários específicos feitos pela pessoa que fez a reserva." + +#: admin/em-docs.php:181 +msgid "Name of the ticket booked. Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Nome do ingresso reservado. Útil no modo de bilhete único, se os ingressos múltiplos são reservados um ingresso aleatório é usado." + +#: admin/em-docs.php:182 +msgid "Description of the ticket booked. Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Descrição do ingresso reservado. Útil no modo de bilhete único, se os ingresso múltiplos são reservados um ingresso aleatório é usado." + +#: admin/em-docs.php:183 +msgid "Booked ticket price with currency symbol (e.g. $ 10.00). Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Preço do ingresso reservado com o símbolo de moeda (por exemplo $ 10,00). Útil no modo de ingresso único, se os ingresso múltiplos são reservados um ingresso aleatório é usado." + +#: admin/em-docs.php:184 +msgid "A list of booked tickets. You can modify this by using template files and modifying templates/emails/bookingtickets.php" +msgstr "A lista de ingressos reservados. Você pode modificar isso usando arquivos de modelo e modificar templates / emails / bookingtickets.php" + +#: admin/em-docs.php:188 +msgid "People are able to manage their bookings. Below are some placeholder which automatically provides correctly formatted urls" +msgstr "As pessoas são capazes de gerir as suas reservas. Abaixo estão alguns espaços reservados que fornecem automaticamente urls formatado corretamente" + +#: admin/em-docs.php:190 +msgid "URL to page showing that users booked events." +msgstr "URL para a página mostrando que os usuários reservaram os eventos." + +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Plugin URI of the plugin/theme +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Author URI of the plugin/theme +msgid "http://wp-events-plugin.com" +msgstr "http://wp-events-plugin.com" + +#. Description of the plugin/theme +msgid "Event registration and booking management for Wordpress. Recurring events, locations, google maps, rss, ical, booking registration and more!" +msgstr "Registro de eventos e gestão de reserva para Wordpress. Eventos recorrentes, locais, google maps, rss, iCal, o registro de reserva e muito mais!" + +#. Author of the plugin/theme +msgid "Marcus Sykes" +msgstr "Marcus Sykes" + diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-pt_PT.mo b/wp-content/plugins/events-manager/includes/langs/dbem-pt_PT.mo new file mode 100644 index 0000000..3309754 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-pt_PT.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-pt_PT.po b/wp-content/plugins/events-manager/includes/langs/dbem-pt_PT.po new file mode 100644 index 0000000..120d0a5 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-pt_PT.po @@ -0,0 +1,4112 @@ +# Copyright (C) 2010 Events Manager +# This file is distributed under the same license as the Events Manager package. +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.0.83\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-06-28 08:06:36+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2011-07-01 00:21+0300\n" +"Last-Translator: aa \n" +"Language-Team: <>\n" +"X-Poedit-Language: Portuguese\n" +"X-Poedit-Country: PORTUGAL\n" + +#: buddypress/bp-em-activity.php:67 +msgid "%s added the event %s" +msgstr "%s adicionado o evento %s" + +#: buddypress/bp-em-activity.php:89 +msgid "%s is attending %s." +msgstr "%s está participando.%s." + +#: buddypress/bp-em-activity.php:91 +msgid "%s will not be attending %s anymore." +msgstr "%s não estará atendendo %s mais." + +#: buddypress/bp-em-admin.php:33 +msgid "Events Admin" +msgstr "Administração eventos" + +#: buddypress/bp-em-admin.php:36 +msgid "Settings Updated." +msgstr "Atualizado configurações." + +#: buddypress/bp-em-admin.php:42 +msgid "Option One" +msgstr "Uma opção" + +#: buddypress/bp-em-admin.php:47 +msgid "Option Two" +msgstr "Opção Dois" + +#: buddypress/bp-em-admin.php:54 +#: buddypress/screens/settings.php:46 +msgid "Save Settings" +msgstr "Salvar configurações" + +#: buddypress/bp-em-notifications.php:44 +#: buddypress/screens/profile.php:27 +#: buddypress/bp-em-core.php:55 +#: buddypress/bp-em-core.php:117 +#: buddypress/bp-em-core.php:128 +#: events-manager.php:319 +#: em-template-tags.php:74 +#: em-actions.php:107 +#: em-install.php:301 +#: em-install.php:344 +#: em-install.php:381 +#: em-install.php:382 +#: em-install.php:388 +#: em-install.php:408 +#: em-install.php:508 +#: widgets/em-events.php:13 +#: admin/em-options.php:303 +msgid "Events" +msgstr "Eventos" + +#: buddypress/bp-em-notifications.php:45 +#: em-functions.php:436 +#: admin/em-options.php:408 +msgid "Yes" +msgstr "Sim" + +#: buddypress/bp-em-notifications.php:46 +#: em-functions.php:437 +#: admin/em-options.php:409 +msgid "No" +msgstr "Não" + +#: buddypress/bp-em-notifications.php:50 +msgid "Action One" +msgstr "Uma ação" + +#: buddypress/bp-em-notifications.php:56 +msgid "Action Two" +msgstr "Dois ação" + +#: buddypress/bp-em-notifications.php:87 +#: buddypress/bp-em-notifications.php:89 +#: buddypress/bp-em-notifications.php:96 +#: buddypress/bp-em-notifications.php:98 +#: buddypress/bp-em-notifications.php:104 +#: buddypress/bp-em-notifications.php:106 +#: em-install.php:456 +msgid "My Bookings" +msgstr "Minhas reservas" + +#: buddypress/bp-em-notifications.php:87 +msgid "You have a pending booking" +msgstr "Você tem uma reserva pendente" + +#: buddypress/bp-em-notifications.php:89 +msgid "You have %s pending bookings" +msgstr "Você tem reservas pendentes %s" + +#: buddypress/bp-em-notifications.php:96 +msgid "You have a confirmed booking" +msgstr "Você tem uma reserva confirmada" + +#: buddypress/bp-em-notifications.php:98 +msgid "You have %s confirmed bookings" +msgstr "Você tem reservas confirmadas %s" + +#: buddypress/bp-em-notifications.php:104 +msgid "A user cancelled a booking" +msgstr "Um usuário cancelado a sua reserva" + +#: buddypress/bp-em-notifications.php:106 +msgid "%s users cancelled bookings." +msgstr "Usuários %s cancelada reservas." + +#: buddypress/screens/my-bookings.php:32 +#: buddypress/bp-em-core.php:106 +msgid "My Event Bookings" +msgstr "Minhas reservas de Eventos" + +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Você está vendo sua página pública, isto é o que os outros usuários verão." + +#: buddypress/screens/profile.php:34 +#: buddypress/screens/my-events.php:40 +#: buddypress/bp-em-core.php:86 +msgid "My Events" +msgstr "Meus Eventos" + +#: buddypress/screens/profile.php:47 +#: templates/buddypress/group-events.php:35 +#: templates/buddypress/my-group-events.php:35 +#: em-install.php:463 +msgid "No Events" +msgstr "Sem Eventos" + +#: buddypress/screens/profile.php:51 +#: buddypress/screens/attending.php:23 +#: buddypress/bp-em-core.php:76 +msgid "Events I'm Attending" +msgstr "Eventos em que participo" + +#: buddypress/screens/settings.php:26 +msgid "Events Settings Header" +msgstr "Eventos cabeçalho Configurações" + +#: buddypress/screens/settings.php:30 +msgid "Events Settings" +msgstr "Configurações de eventos" + +#: buddypress/screens/settings.php:38 +msgid "Changes Saved." +msgstr "Alterações Salvas." + +#: buddypress/screens/settings.php:44 +msgid "Do you love clicking checkboxes?" +msgstr "Você ama checkboxes clicar?" + +#: buddypress/screens/group-events.php:17 +#: buddypress/screens/my-group-events.php:17 +msgid "Group Events" +msgstr "Eventos grupo" + +#: buddypress/screens/my-events.php:54 +#: templates/forms/event-editor.php:15 +#: admin/em-event.php:25 +msgid "Edit Event" +msgstr "Editar Evento" + +#: buddypress/screens/my-events.php:56 +msgid "Add Event" +msgstr "Adicionar Evento" + +#: buddypress/screens/my-locations.php:47 +#: buddypress/bp-em-core.php:96 +msgid "My Locations" +msgstr "Meus Locais" + +#: buddypress/screens/my-locations.php:61 +msgid "Edit Location" +msgstr "Editar Localização" + +#: buddypress/screens/my-locations.php:63 +msgid "Add Location" +msgstr "Adicionar Location" + +#: buddypress/bp-em-core.php:66 +msgid "My Profile" +msgstr "Meu Perfil" + +#: buddypress/bp-em-core.php:149 +msgid "Events (%s)" +msgstr "Eventos (%s)" + +#: buddypress/bp-em-core.php:179 +#: classes/em-event.php:793 +#: templates/forms/event-editor.php:367 +#: events-manager.php:322 +#: admin/em-event.php:573 +msgid "Edit" +msgstr "Editar" + +#: buddypress/bp-em-core.php:179 +#: classes/em-event.php:553 +#: classes/em-event.php:793 +#: templates/forms/event-editor.php:6 +#: em-actions.php:107 +#: em-install.php:348 +#: em-install.php:373 +#: admin/em-event.php:14 +#: admin/bookings/em-events.php:101 +#: admin/em-options.php:312 +msgid "Event" +msgstr "Evento" + +#: classes/em-booking.php:96 +#: classes/em-event.php:207 +#: templates/buddypress/my-events.php:41 +#: templates/buddypress/my-events.php:118 +#: admin/bookings/em-events.php:136 +#: admin/em-events.php:66 +#: admin/em-events.php:166 +msgid "Pending" +msgstr "Pendente" + +#: classes/em-booking.php:97 +#: classes/em-event.php:208 +#: admin/em-events.php:65 +msgid "Approved" +msgstr "Aprovado" + +#: classes/em-booking.php:98 +msgid "Rejected" +msgstr "Rejeitado" + +#: classes/em-booking.php:99 +#: em-actions.php:354 +msgid "Cancelled" +msgstr "Cancelado" + +#: classes/em-booking.php:100 +msgid "Awaiting Online Payment" +msgstr "Aguardando pagamento on-line" + +#: classes/em-booking.php:101 +msgid "Awaiting Payment" +msgstr "Aguardando pagamento" + +#: classes/em-booking.php:125 +#: classes/em-ticket.php:101 +#: classes/em-ticket-booking.php:67 +msgid "Changes saved" +msgstr "Alterações salvas" + +#: classes/em-booking.php:130 +msgid "Your booking has been recorded" +msgstr "A sua reserva foi registrada" + +#: classes/em-booking.php:133 +#: classes/em-booking.php:134 +#: classes/em-booking.php:143 +#: classes/em-booking.php:152 +#: classes/em-booking.php:158 +#: classes/em-tickets-bookings.php:69 +#: classes/em-tickets-bookings.php:70 +msgid "There was a problem saving the booking." +msgstr "Houve um problema ao salvar a reserva." + +#: classes/em-booking.php:154 +#: classes/em-booking.php:160 +msgid "You cannot manage this %s." +msgstr "Você não pode gerir este %s." + +#: classes/em-booking.php:154 +#: classes/em-booking.php:160 +#: classes/em-booking.php:370 +#: classes/em-booking.php:372 +#: classes/em-tickets-bookings.php:141 +#: classes/em-bookings.php:106 +msgid "Booking" +msgstr "Reserva" + +#: classes/em-booking.php:210 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Você está tentando reservar um bilhete inexistente para este evento." + +#: classes/em-booking.php:231 +msgid "You must request at least one space to book an event." +msgstr "Você deve solicitar pelo menos um espaço de reservar um evento." + +#: classes/em-booking.php:370 +msgid "%s deleted" +msgstr "%s excluído" + +#: classes/em-booking.php:372 +msgid "%s could not be deleted" +msgstr "%s não pôde ser excluída" + +#: classes/em-booking.php:416 +msgid "Not approved, spaces full." +msgstr "Não aprovados, os espaços completo." + +#: classes/em-booking.php:424 +msgid "Booking %s." +msgstr "Reserva %s." + +#: classes/em-booking.php:427 +msgid "Mail Sent." +msgstr "E-mails enviados." + +#: classes/em-booking.php:430 +#: classes/em-booking.php:431 +msgid "ERROR : Mail Not Sent." +msgstr "ERROR: Mail não enviada." + +#: classes/em-booking.php:437 +#: classes/em-booking.php:438 +#: classes/em-event.php:535 +msgid "Booking could not be %s." +msgstr "Reserva não poderia ser %s." + +#: classes/em-booking.php:453 +msgid "Booking note successfully added." +msgstr "Nota reserva adicionado com sucesso." + +#: classes/em-booking.php:538 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "E-mail de confirmação não pôde ser enviada ao contato da pessoa. Registante deve ter começado seu e-mail (somente administrador ver esse aviso)." + +#: classes/em-booking.php:545 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "E-mail de confirmação não pode ser enviada para admin. Registante deve ter começado seu e-mail (somente administrador ver esse aviso)." + +#: classes/em-tickets-bookings.php:91 +#: classes/em-bookings.php:89 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "Reserva não pode ser feito, não o suficiente espaços disponíveis!" + +#: classes/em-tickets-bookings.php:141 +#: templates/forms/event-editor.php:6 +#: templates/forms/location-editor.php:7 +#: admin/em-event.php:14 +msgid "You do not have the rights to manage this %s." +msgstr "Você não tem os direitos para gerir este %s." + +#: classes/em-tickets-bookings.php:169 +#: classes/em-tickets.php:130 +msgid "Standard" +msgstr "Padrão" + +#: classes/em-object.php:731 +msgid "However, the image could not be saved." +msgstr "No entanto, a imagem não poderia ser salvo." + +#: classes/em-object.php:733 +msgid "The image could not be saved" +msgstr "A imagem não poderia ser salva" + +#: classes/em-object.php:737 +msgid "However, the image could not be saved:" +msgstr "No entanto, a imagem não pôde ser salvo:" + +#: classes/em-object.php:754 +msgid "The image file is too big! Maximum size:" +msgstr "O arquivo de imagem é muito grande! Tamanho máximo:" + +#: classes/em-object.php:759 +msgid "The image is too big! Maximum size allowed:" +msgstr "A imagem é muito grande! Tamanho máximo permitido:" + +#: classes/em-object.php:762 +msgid "The image is in a wrong format!" +msgstr "A imagem está em um formato errado!" + +#: classes/em-categories.php:206 +#: classes/em-location.php:144 +#: classes/em-location.php:152 +msgid "Could not save the %s details due to a database error." +msgstr "Não foi possível salvar as informações devido a um erro de banco de dados %s." + +#: classes/em-categories.php:206 +#: admin/em-options.php:377 +#: admin/em-options.php:378 +msgid "category" +msgstr "categoria" + +#: classes/em-tickets.php:104 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "Você não pode excluir bilhetes se houver qualquer reserva a eles associados. Por favor, excluir essas reservas em primeiro lugar." + +#: classes/em-event.php:213 +msgid "WARNING: This is a recurring event." +msgstr "AVISO: Este é um evento recorrente." + +#: classes/em-event.php:213 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Modificações a este evento fará com que todas as recorrências deste evento a ser excluído e recriado e reservas anterior será apagado! Você pode editar as recorrências individuais e dissociá-los com este evento recorrente." + +#: classes/em-event.php:215 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "AVISO: Este é um retorno em um conjunto de eventos recorrentes." + +#: classes/em-event.php:215 +msgid "If you update this event data and save, it will become an independent event, and will not be deleted or modified automatically if you reschedule the original recurring event details." +msgstr "Se você atualizar os dados de eventos e salvar, ele se tornará um evento independente, e não serão excluídas ou modificadas automaticamente se você reprogramar o original detalhes do evento recorrente." + +#: classes/em-event.php:218 +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "ATENÇÃO: Este é um evento que pertence ao grupo \"%s\". Admins outro grupo também pode modificar este evento." + +#: classes/em-event.php:339 +msgid "There was a problem saving the location so event was not saved." +msgstr "Houve um problema ao salvar o local para evento não foi salvo." + +#: classes/em-event.php:380 +#: classes/em-event.php:431 +msgid "Something went wrong with creating tickets." +msgstr "Algo deu errado com a criação de bilhetes." + +#: classes/em-event.php:392 +#: classes/em-event.php:442 +msgid "Something went wrong with the recurrence update..." +msgstr "Algo deu errado com a atualização recorrência ..." + +#: classes/em-event.php:393 +#: classes/em-event.php:443 +msgid "There was a problem saving the recurring events." +msgstr "Houve um problema ao salvar a eventos recorrentes." + +#: classes/em-event.php:398 +msgid "New recurrent event inserted!" +msgstr "Evento recorrente novo inserido!" + +#: classes/em-event.php:402 +msgid "New event successfully inserted!" +msgstr "Novo evento inserido com sucesso!" + +#: classes/em-event.php:405 +#: classes/em-event.php:450 +msgid "Could not save the event details due to a database error." +msgstr "Não foi possível salvar os detalhes do evento devido a um erro do banco de dados." + +#: classes/em-event.php:429 +#: classes/em-event.php:454 +msgid "updated" +msgstr "atualizado" + +#: classes/em-event.php:446 +msgid "Recurrence updated!" +msgstr "Recorrência atualizado!" + +#: classes/em-event.php:531 +msgid "Event %s." +msgstr "Evento %s." + +#: classes/em-event.php:553 +msgid "%s successfully duplicated." +msgstr "%s reproduzido com sucesso." + +#: classes/em-event.php:557 +msgid "You are not allowed to manage this %s." +msgstr "Você não tem permissão para gerir este %s." + +#: classes/em-event.php:557 +#: em-actions.php:93 +msgid "event" +msgstr "evento" + +#: classes/em-event.php:578 +#: classes/em-ticket.php:159 +#: classes/em-ticket-booking.php:102 +msgid "Missing fields: " +msgstr "Faltando campos:" + +#: classes/em-event.php:581 +msgid "Since the event is repeated, you must specify an event date." +msgstr "Uma vez que o evento é repetido, você deve especificar uma data de evento." + +#: classes/em-event.php:585 +msgid "Events cannot start after they end." +msgstr "Eventos não podem começar depois de terminar." + +#: classes/em-event.php:588 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Datas devem ter formatação correta. Por favor, use o selecionador de data fornecido." + +#: classes/em-event.php:866 +#: templates/placeholders/bookingform.php:57 +#: templates/placeholders/bookingform.php:86 +#: em-bookings.php:129 +#: em-bookings.php:151 +msgid "N/A" +msgstr "N / A" + +#: classes/em-event.php:876 +#: classes/em-event.php:885 +msgid "Profile" +msgstr "Perfil" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Sunday" +msgstr "Domingo" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Monday" +msgstr "Segunda-feira" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Tuesday" +msgstr "Terça-feira" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Wednesday" +msgstr "Quarta-feira" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Thursday" +msgstr "Quinta-feira" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Friday" +msgstr "Sexta-feira" + +#: classes/em-event.php:1239 +#: templates/forms/event-editor.php:120 +msgid "Saturday" +msgstr "Sábado" + +#: classes/em-event.php:1240 +msgid "the first %s of the month" +msgstr "o primeiro %s do mês" + +#: classes/em-event.php:1240 +msgid "the second %s of the month" +msgstr "o segundo %s do mês" + +#: classes/em-event.php:1240 +msgid "the third %s of the month" +msgstr "o terceiro %s do mês" + +#: classes/em-event.php:1240 +msgid "the fourth %s of the month" +msgstr "o quarto %s do mês" + +#: classes/em-event.php:1240 +msgid "the last %s of the month" +msgstr "últimos %s do mês" + +#: classes/em-event.php:1241 +msgid "From %1$s to %2$s" +msgstr "De %1$s para %2$s" + +#: classes/em-event.php:1243 +msgid "everyday" +msgstr "cotidiano" + +#: classes/em-event.php:1245 +msgid "every %s days" +msgstr "dias a cada%s" + +#: classes/em-event.php:1254 +msgid "every week" +msgstr "todas as semanas" + +#: classes/em-event.php:1256 +msgid "every %s weeks" +msgstr "semanas a cada %s" + +#: classes/em-event.php:1267 +msgid "every %s months" +msgstr "meses a cada %s" + +#: classes/em-bookings.php:69 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Confirmação de reserva, bem sucedido pendentes (você também receberá um e-mail uma vez confirmado)." + +#: classes/em-bookings.php:71 +msgid "Booking successful." +msgstr "Reserva de sucesso." + +#: classes/em-bookings.php:74 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "No entanto, houve alguns problemas ao enviar e-mails de confirmação para você e / ou a pessoa de contacto evento. Você pode querer contatá-los diretamente e deixando que eles sabem desse erro." + +#: classes/em-bookings.php:86 +msgid "Booking could not be created" +msgstr "Reserva não poderia ser criado" + +#: classes/em-bookings.php:106 +msgid "%s created." +msgstr "%s criado." + +#: classes/em-bookings.php:249 +#: classes/em-bookings.php:255 +msgid "Bookings %s. Mails Sent." +msgstr "Reservas %s. Mails enviados." + +#: classes/em-bookings.php:259 +msgid "An error occurred." +msgstr "Ocorreu um erro." + +#: classes/em-bookings.php:528 +msgid "Booking details for \"%s\" as of %s" +msgstr "Reserva detalhes para \"%s\", como de %s" + +#: classes/em-ticket.php:51 +msgid "Standard Ticket" +msgstr "Ticket padrão" + +#: classes/em-ticket.php:106 +msgid "Ticket created" +msgstr "Ticket criado" + +#: classes/em-ticket.php:109 +#: classes/em-ticket.php:110 +#: classes/em-ticket.php:114 +#: classes/em-ticket.php:115 +msgid "There was a problem saving the ticket." +msgstr "Houve um problema ao salvar o bilhete." + +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "Você não pode excluir um bilhete que tem uma reserva nele." + +#: classes/em-ticket-booking.php:72 +msgid "Ticket booking created" +msgstr "Reserva de bilhetes criado" + +#: classes/em-ticket-booking.php:75 +#: classes/em-ticket-booking.php:76 +#: classes/em-ticket-booking.php:80 +#: classes/em-ticket-booking.php:81 +msgid "There was a problem saving the ticket booking." +msgstr "Houve um problema ao salvar a reserva de bilhetes." + +#: classes/em-mailer.php:67 +msgid "Please supply a valid email format." +msgstr "Por favor, forneça um formato de e-mail válido." + +#: classes/em-people.php:81 +msgid "User deleted by administrators" +msgstr "Usuário que foi excluído pelos administradores" + +#: classes/em-person.php:60 +#: templates/buddypress/group-events.php:12 +#: templates/buddypress/my-events.php:73 +#: templates/buddypress/my-locations.php:53 +#: templates/buddypress/my-locations.php:62 +#: templates/buddypress/my-group-events.php:12 +#: templates/forms/tickets-form.php:4 +#: templates/placeholders/bookingform.php:98 +#: admin/em-categories.php:72 +#: admin/em-categories.php:79 +#: admin/em-locations.php:78 +#: admin/em-locations.php:88 +#: admin/em-event.php:291 +#: admin/em-bookings.php:180 +#: admin/em-bookings.php:240 +#: admin/em-people.php:30 +#: admin/em-events.php:121 +msgid "Name" +msgstr "Nome" + +#: classes/em-person.php:61 +msgid "Email" +msgstr "E-mail" + +#: classes/em-person.php:62 +#: templates/placeholders/bookingform.php:102 +#: admin/em-people.php:72 +msgid "Phone" +msgstr "Telefone" + +#: classes/em-location.php:50 +msgid "The location name" +msgstr "O nome do local" + +#: classes/em-location.php:50 +msgid "The location address" +msgstr "O endereço do local" + +#: classes/em-location.php:50 +msgid "The location town" +msgstr "A cidade localização" + +#: classes/em-location.php:50 +msgid "The country" +msgstr "O país" + +#: classes/em-location.php:111 +#: classes/em-location.php:113 +#: classes/em-category.php:70 +msgid " is required." +msgstr "é necessária." + +#: classes/em-location.php:142 +#: classes/em-category.php:90 +msgid "%s successfully updated." +msgstr "%s atualizado com sucesso." + +#: classes/em-location.php:142 +#: classes/em-location.php:150 +#: classes/em-location.php:194 +#: classes/em-location.php:196 +#: templates/buddypress/group-events.php:13 +#: templates/buddypress/my-events.php:75 +#: templates/buddypress/my-group-events.php:13 +#: templates/forms/location-editor.php:41 +#: em-actions.php:169 +#: admin/em-locations.php:178 +#: admin/em-locations.php:211 +#: admin/em-event.php:366 +#: admin/em-bookings.php:135 +#: admin/em-options.php:350 +#: admin/em-events.php:123 +msgid "Location" +msgstr "Localização" + +#: classes/em-location.php:144 +#: classes/em-location.php:152 +#: templates/forms/location-editor.php:7 +#: admin/em-options.php:352 +#: admin/em-options.php:353 +msgid "location" +msgstr "localização" + +#: classes/em-location.php:150 +#: classes/em-category.php:96 +msgid "%s successfully added." +msgstr "%s adicionado com sucesso." + +#: classes/em-location.php:157 +#: classes/em-category.php:100 +msgid "You do not have permission to create/edit %s." +msgstr "Você não tem permissão para criar / editar %s." + +#: classes/em-location.php:157 +#: classes/em-location.php:199 +#: events-manager.php:211 +#: events-manager.php:212 +#: events-manager.php:215 +#: events-manager.php:217 +#: events-manager.php:219 +#: admin/em-options.php:344 +#: admin/em-options.php:345 +#: admin/em-options.php:346 +#: admin/em-options.php:347 +#: admin/em-options.php:348 +msgid "locations" +msgstr "locais" + +#: classes/em-location.php:194 +#: em-actions.php:109 +msgid "%s successfully deleted." +msgstr "%s removido com sucesso." + +#: classes/em-location.php:196 +#: em-actions.php:112 +msgid "%s could not be deleted." +msgstr "%s não pôde ser excluído." + +#: classes/em-location.php:199 +msgid "You do not have permission to delete %s." +msgstr "Você não tem permissão para excluir %s." + +#: classes/em-category.php:31 +msgid "The category name" +msgstr "O nome da categoria" + +#: classes/em-category.php:90 +#: classes/em-category.php:96 +#: templates/buddypress/my-events.php:136 +#: em-actions.php:239 +#: admin/em-categories.php:166 +#: admin/em-event.php:265 +#: admin/em-options.php:375 +msgid "Category" +msgstr "Categoria" + +#: classes/em-category.php:100 +#: events-manager.php:209 +#: admin/em-options.php:369 +#: admin/em-options.php:370 +#: admin/em-options.php:371 +#: admin/em-options.php:372 +#: admin/em-options.php:373 +msgid "categories" +msgstr "categorias" + +#: em-template-tags-depreciated.php:146 +msgid "Ach, some problems here:" +msgstr "Ach, alguns problemas aqui:" + +#: templates/buddypress/group-events.php:14 +#: templates/buddypress/my-events.php:76 +#: templates/buddypress/my-group-events.php:14 +#: admin/bookings/em-events.php:102 +#: admin/em-events.php:124 +msgid "Date and time" +msgstr "Data e hora" + +#: templates/buddypress/group-events.php:25 +#: templates/buddypress/my-group-events.php:25 +msgid "edit" +msgstr "editar" + +#: templates/buddypress/my-events.php:37 +#: templates/buddypress/my-locations.php:25 +#: admin/em-categories.php:58 +#: admin/em-locations.php:42 +#: admin/em-events.php:43 +msgid "Add New" +msgstr "Adicionar Novo" + +#: templates/buddypress/my-events.php:39 +msgid "Upcoming" +msgstr "Próximos" + +#: templates/buddypress/my-events.php:43 +#: admin/bookings/em-events.php:29 +msgid "Past Events" +msgstr "Eventos passados" + +#: templates/buddypress/my-events.php:46 +#: templates/buddypress/my-events.php:48 +#: templates/templates/events-search.php:10 +#: admin/em-events.php:70 +#: admin/em-events.php:72 +msgid "Search Events" +msgstr "Eventos pesquisa" + +#: templates/buddypress/my-events.php:63 +#: admin/bookings/em-events.php:91 +#: admin/em-events.php:111 +msgid "no events" +msgstr "sem eventos" + +#: templates/buddypress/my-events.php:115 +#: events-manager.php:325 +#: em-events.php:130 +#: admin/em-events.php:163 +msgid "Bookings" +msgstr "Reservas" + +#: templates/buddypress/my-events.php:116 +#: admin/em-people.php:48 +#: admin/em-events.php:164 +msgid "Booked" +msgstr "Reservado" + +#: templates/buddypress/my-events.php:124 +#: templates/buddypress/my-events.php:167 +#: templates/buddypress/my-events.php:169 +#: templates/forms/event-editor.php:369 +#: admin/em-event.php:575 +#: admin/bookings/em-rejected.php:113 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-confirmed.php:118 +#: admin/em-events.php:171 +#: admin/em-events.php:203 +msgid "Delete" +msgstr "Excluir" + +#: templates/buddypress/my-events.php:129 +#: admin/em-events.php:178 +msgid "Duplicate this event" +msgstr "Duplicar este evento" + +#: templates/buddypress/my-events.php:155 +#: templates/buddypress/my-events.php:166 +#: templates/forms/event-editor.php:13 +#: templates/forms/event-editor.php:174 +#: admin/em-event.php:23 +#: admin/em-event.php:145 +#: admin/em-events.php:202 +msgid "Reschedule" +msgstr "Reagendar" + +#: templates/buddypress/my-events.php:162 +#: admin/em-events.php:198 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "ATENÇÃO! Você vai excluir todas as recorrências deste evento, incluindo o histórico de reserva associados a qualquer evento desta recorrência. Para manter as informações de reserva, vá para o único evento relevante e salve-o para retirá-la desta série recorrência." + +#: templates/buddypress/my-locations.php:27 +#: em-events.php:130 +#: admin/em-locations.php:52 +msgid "My %s" +msgstr "Minha %s" + +#: templates/buddypress/my-locations.php:27 +#: templates/buddypress/my-locations.php:30 +#: events-manager.php:324 +#: em-actions.php:169 +#: em-install.php:348 +#: em-install.php:349 +#: admin/em-locations.php:41 +#: admin/em-locations.php:52 +#: admin/em-locations.php:55 +#: admin/em-options.php:342 +#: admin/em-options.php:344 +#: admin/em-options.php:345 +#: admin/em-options.php:346 +#: admin/em-options.php:347 +#: admin/em-options.php:348 +msgid "Locations" +msgstr "Locais" + +#: templates/buddypress/my-locations.php:30 +#: admin/em-locations.php:55 +msgid "All %s" +msgstr "Todos s %" + +#: templates/buddypress/my-locations.php:37 +#: admin/em-locations.php:62 +#: admin/bookings/em-rejected.php:49 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:57 +#: admin/em-events.php:78 +msgid "Bulk Actions" +msgstr "Ações em Alto Volume" + +#: templates/buddypress/my-locations.php:38 +#: admin/em-locations.php:63 +#: admin/bookings/em-events.php:58 +#: admin/em-events.php:79 +msgid "Delete selected" +msgstr "Excluir selecionados" + +#: templates/buddypress/my-locations.php:40 +#: admin/em-locations.php:65 +#: admin/bookings/em-events.php:60 +#: admin/em-events.php:81 +msgid "Apply" +msgstr "Aplicar" + +#: templates/buddypress/my-locations.php:54 +#: templates/buddypress/my-locations.php:63 +#: admin/em-locations.php:79 +#: admin/em-locations.php:89 +msgid "Address" +msgstr "Endereço" + +#: templates/buddypress/my-locations.php:55 +#: templates/buddypress/my-locations.php:64 +#: admin/em-locations.php:81 +#: admin/em-locations.php:91 +msgid "State" +msgstr "Estado" + +#: templates/buddypress/my-locations.php:56 +#: templates/buddypress/my-locations.php:65 +#: admin/em-locations.php:82 +#: admin/em-locations.php:92 +msgid "Country" +msgstr "País" + +#: templates/buddypress/my-locations.php:85 +#: admin/em-locations.php:113 +msgid "No venues have been inserted yet!" +msgstr "Não locais foram inseridos ainda!" + +#: templates/templates/my-bookings.php:73 +msgid "Are you sure you want to cancel your booking?" +msgstr "Tem certeza de que deseja cancelar a sua reserva?" + +#: templates/templates/my-bookings.php:73 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/templates/my-bookings.php:85 +msgid "You do not have any bookings." +msgstr "Você não tem quaisquer reservas." + +#: templates/templates/my-bookings.php:95 +msgid "Please Log In to view your bookings." +msgstr "Por favor Entrar para ver as suas reservas." + +#: templates/templates/map-global.php:15 +#: templates/placeholders/locationmap.php:15 +msgid "Loading Map...." +msgstr "Carregando mapa ...." + +#: templates/templates/events-search.php:31 +msgid "All Categories" +msgstr "Todas as Categorias" + +#: templates/templates/events-search.php:39 +msgid "All Countries" +msgstr "Todos os Países" + +#: templates/templates/events-search.php:53 +#: em-actions.php:452 +msgid "All Regions" +msgstr "Todas as Regiões" + +#: templates/templates/events-search.php:70 +#: em-actions.php:429 +msgid "All States" +msgstr "Todos os Estados" + +#: templates/templates/events-search.php:88 +#: templates/templates/events-search.php:138 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +msgid "Search" +msgstr "Pesquisa" + +#: templates/templates/events-search.php:94 +#: templates/templates/events-search.php:95 +#: templates/templates/events-search.php:109 +msgid "Loading..." +msgstr "Carregando ..." + +#: templates/templates/events-search.php:135 +msgid "Searching..." +msgstr "Busca ..." + +#: templates/templates/ical.php:9 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Calendário" + +#: templates/forms/event-editor.php:6 +#: templates/forms/location-editor.php:7 +#: admin/em-categories.php:118 +#: admin/em-locations.php:125 +#: admin/em-event.php:14 +#: admin/em-bookings.php:107 +#: admin/em-bookings.php:163 +#: admin/em-bookings.php:213 +#: admin/em-bookings.php:351 +#: admin/em-people.php:9 +msgid "Unauthorized Access" +msgstr "Acesso não autorizado" + +#: templates/forms/event-editor.php:19 +#: admin/em-event.php:29 +msgid "Insert New Event" +msgstr "Inserir Novo Evento" + +#: templates/forms/event-editor.php:57 +#: admin/em-bookings.php:126 +msgid "Event Name" +msgstr "Nome do Evento" + +#: templates/forms/event-editor.php:61 +#: admin/em-event.php:296 +msgid "The event name. Example: Birthday party" +msgstr "O nome do evento. Exemplo: festa de aniversário" + +#: templates/forms/event-editor.php:87 +#: admin/em-event.php:206 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Selecionar um grupo de administração para você anexar esse evento para ele. Note-se que todos os outros administradores desse grupo pode modificar a reserva, e você não será capaz de unattach o evento sem excluí-lo." + +#: templates/forms/event-editor.php:93 +msgid "When" +msgstr "Quando" + +#: templates/forms/event-editor.php:96 +msgid "Starts on " +msgstr "Começa na" + +#: templates/forms/event-editor.php:99 +msgid "from" +msgstr "a partir de" + +#: templates/forms/event-editor.php:101 +#: templates/forms/ticket-form.php:18 +msgid "to" +msgstr "para" + +#: templates/forms/event-editor.php:103 +msgid "and ends on" +msgstr "e termina no" + +#: templates/forms/event-editor.php:109 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Este evento abrange todos os dias entre o início e término, com start / end vezes aplicando a cada dia." + +#: templates/forms/event-editor.php:112 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Para um evento recorrente, um evento de um dia será criado em cada data recorrentes dentro deste intervalo de datas." + +#: templates/forms/event-editor.php:124 +msgid "This event repeats" +msgstr "Este evento se repetirá" + +#: templates/forms/event-editor.php:127 +#: admin/em-event.php:95 +msgid "Daily" +msgstr "Diariamente" + +#: templates/forms/event-editor.php:127 +#: admin/em-event.php:95 +msgid "Weekly" +msgstr "Semanal" + +#: templates/forms/event-editor.php:127 +#: admin/em-event.php:95 +msgid "Monthly" +msgstr "Mensal" + +#: templates/forms/event-editor.php:131 +msgid "every" +msgstr "cada" + +#: templates/forms/event-editor.php:134 +#: admin/em-event.php:104 +msgid "day" +msgstr "dia" + +#: templates/forms/event-editor.php:136 +#: admin/em-event.php:106 +msgid "days" +msgstr "dia" + +#: templates/forms/event-editor.php:138 +msgid "week on" +msgstr "semana em" + +#: templates/forms/event-editor.php:140 +msgid "weeks on" +msgstr "semanas" + +#: templates/forms/event-editor.php:142 +msgid "month on the" +msgstr "mês na" + +#: templates/forms/event-editor.php:144 +msgid "months on the" +msgstr "meses na" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "first" +msgstr "primeiro" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "second" +msgstr "segundo" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "third" +msgstr "terceiro" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "fourth" +msgstr "quarto" + +#: templates/forms/event-editor.php:155 +#: admin/em-event.php:127 +msgid "last" +msgstr "passado" + +#: templates/forms/event-editor.php:162 +msgid "of each month" +msgstr "de cada mês" + +#: templates/forms/event-editor.php:167 +#: admin/em-event.php:138 +msgid "Check if your event happens more than once according to a regular pattern" +msgstr "Verifique se o seu evento acontece mais de uma vez de acordo com um padrão regular" + +#: templates/forms/event-editor.php:179 +#: admin/em-event.php:150 +msgid "This is't a recurrent event" +msgstr "Este is't um evento recorrente" + +#: templates/forms/event-editor.php:186 +msgid "Where" +msgstr "Onde" + +#: templates/forms/event-editor.php:210 +msgid "Choose from one of your locations" +msgstr "Escolha a partir de um de seus locais" + +#: templates/forms/event-editor.php:210 +msgid "or add a new location" +msgstr "ou adicionar um novo local" + +#: templates/forms/event-editor.php:214 +#: templates/forms/location-editor.php:85 +#: admin/em-locations.php:262 +#: admin/em-event.php:453 +msgid "Location not found" +msgstr "Localização não encontrado" + +#: templates/forms/event-editor.php:221 +#: templates/forms/location-editor.php:95 +#: admin/em-categories.php:175 +#: admin/em-locations.php:274 +#: admin/em-event.php:464 +msgid "Details" +msgstr "Detalhes" + +#: templates/forms/event-editor.php:226 +msgid "Details about the event." +msgstr "Detalhes sobre o evento." + +#: templates/forms/event-editor.php:226 +msgid "HTML Allowed." +msgstr "HTML permitidos." + +#: templates/forms/event-editor.php:233 +msgid "Category:" +msgstr "Categoria:" + +#: templates/forms/event-editor.php:262 +#: admin/em-event.php:635 +msgid "No Value" +msgstr "Sem Valor" + +#: templates/forms/event-editor.php:282 +#: admin/em-event.php:492 +msgid "Bookings/Registration" +msgstr "Reservas / Registro" + +#: templates/forms/event-editor.php:286 +#: admin/em-event.php:498 +msgid "Enable registration for this event" +msgstr "Habilitar o registro para este evento" + +#: templates/forms/event-editor.php:288 +#: admin/em-event.php:238 +msgid "manage bookings" +msgstr "gerir reservas" + +#: templates/forms/event-editor.php:289 +#: admin/em-event.php:239 +msgid "printable view" +msgstr "printable vista" + +#: templates/forms/event-editor.php:290 +#: admin/em-event.php:240 +#: admin/em-bookings.php:124 +msgid "export csv" +msgstr "csv exportação" + +#: templates/forms/event-editor.php:307 +#: admin/em-event.php:513 +msgid "Tickets" +msgstr "Bilhetes" + +#: templates/forms/event-editor.php:308 +#: admin/em-event.php:514 +msgid "You have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Você tem bilhetes simples ou múltiplos, onde os bilhetes certos tornar availalble sob certas condições, por exemplo, reservas antecipadas, descontos para grupos, reservas máximo por bilhete, etc" + +#: templates/forms/event-editor.php:313 +#: admin/em-event.php:519 +msgid "Ticket Name" +msgstr "Nome de Bilheteira" + +#: templates/forms/event-editor.php:314 +#: templates/forms/ticket-form.php:9 +#: templates/forms/tickets-form.php:6 +#: templates/placeholders/bookingform.php:40 +#: templates/placeholders/bookingform.php:76 +#: em-bookings.php:115 +#: admin/em-event.php:520 +#: admin/em-bookings.php:182 +#: admin/em-bookings.php:276 +msgid "Price" +msgstr "Preço" + +#: templates/forms/event-editor.php:315 +#: admin/em-event.php:521 +msgid "Min/Max" +msgstr "Min / Max" + +#: templates/forms/event-editor.php:316 +#: admin/em-event.php:522 +msgid "Start/End" +msgstr "Início / Fim" + +#: templates/forms/event-editor.php:317 +#: admin/em-event.php:523 +msgid "Avail. Spaces" +msgstr "Vão. Espaços" + +#: templates/forms/event-editor.php:318 +#: admin/em-event.php:524 +#: admin/bookings/em-events.php:134 +msgid "Booked Spaces" +msgstr "Espaços reservados" + +#: templates/forms/event-editor.php:325 +#: admin/em-event.php:531 +msgid "Add new ticket" +msgstr "Adicionar novo bilhete" + +#: templates/forms/event-editor.php:338 +#: admin/em-event.php:544 +msgid "Free" +msgstr "Livre" + +#: templates/forms/event-editor.php:371 +#: admin/em-event.php:577 +msgid "View Bookings" +msgstr "Reservas vista" + +#: templates/forms/event-editor.php:403 +#: admin/em-event.php:712 +msgid "Submit Event" +msgstr "Submeter evento" + +#: templates/forms/event-editor.php:415 +#: admin/em-event.php:733 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Tem certeza de que deseja reagendar este evento recorrente? Se você fizer isso, você perderá todas as informações de reserva e os eventos antigos recorrentes serão apagados." + +#: templates/forms/event-editor.php:424 +#: admin/em-event.php:743 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Tem certeza de que deseja desativar reservas? Se você fizer isso e salvar, você vai perder todas as reservas anteriores. Se você deseja evitar reservas, reduzir o número de espaços disponíveis para a quantidade de reservas que atualmente têm" + +#: templates/forms/ticket-form.php:11 +#: templates/placeholders/bookingform.php:42 +#: templates/placeholders/bookingform.php:80 +#: em-bookings.php:116 +#: em-bookings.php:144 +#: admin/em-bookings.php:183 +#: admin/em-bookings.php:275 +#: admin/em-people.php:33 +msgid "Spaces" +msgstr "Espaços" + +#: templates/forms/ticket-form.php:12 +msgid "If blank, there's no space limit." +msgstr "Se em branco, não há limite de espaço." + +#: templates/forms/ticket-form.php:15 +msgid "Available from" +msgstr "Disponível em" + +#: templates/forms/ticket-form.php:21 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Adicionar uma data de início ou fim (ou ambos) para impor restrições de tempo sobre a disponibilidade de ingressos. Deixe ou em branco para nenhum limite superior / inferior." + +#: templates/forms/ticket-form.php:24 +msgid "Bookings must order between" +msgstr "As reservas devem ordem entre" + +#: templates/forms/ticket-form.php:26 +msgid "and" +msgstr "e" + +#: templates/forms/ticket-form.php:28 +msgid "spaces." +msgstr "espaços." + +#: templates/forms/ticket-form.php:29 +msgid "Leave either blank for no upper/lower limit." +msgstr "Deixe ou em branco para nenhum limite superior / inferior." + +#: templates/forms/ticket-form.php:32 +#: templates/forms/tickets-form.php:5 +#: admin/em-bookings.php:181 +msgid "Description" +msgstr "Descrição" + +#: templates/forms/tickets-form.php:2 +msgid "Create a ticket" +msgstr "Criar um bilhete" + +#: templates/forms/tickets-form.php:8 +msgid "Available ticket spaces" +msgstr "Disponíveis espaços de bilhetes" + +#: templates/forms/tickets-form.php:10 +msgid "Start date of ticket availability" +msgstr "Data de início da disponibilidade de ingressos" + +#: templates/forms/tickets-form.php:11 +msgid "End date of ticket availability" +msgstr "Data final da disponibilidade de ingressos" + +#: templates/forms/tickets-form.php:12 +msgid "Minimum tickets required per booking" +msgstr "Bilhetes mínimo exigido por reserva" + +#: templates/forms/tickets-form.php:13 +msgid "Maximum tickets required per booking" +msgstr "Bilhetes máxima exigida por reserva" + +#: templates/forms/tickets-form.php:18 +msgid "Add Ticket" +msgstr "Adicionar Ticket" + +#: templates/forms/location-editor.php:12 +#: admin/em-locations.php:130 +msgid "Add location" +msgstr "Adicionar a localização" + +#: templates/forms/location-editor.php:15 +#: admin/em-locations.php:133 +msgid "Edit location" +msgstr "Editar localização" + +#: templates/forms/location-editor.php:17 +#: admin/em-locations.php:135 +msgid "required" +msgstr "exigido" + +#: templates/forms/location-editor.php:32 +#: admin/em-locations.php:156 +msgid "Location Name" +msgstr "Nome local" + +#: templates/forms/location-editor.php:37 +#: admin/em-locations.php:161 +msgid "The name of the location" +msgstr "O nome da localidade" + +#: templates/forms/location-editor.php:44 +#: admin/em-locations.php:214 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Se você estiver usando o Google Maps, mais detalhes você fornecer, o Google pode ser mais precisa para encontrar a sua localização. Se o seu endereço não está sendo encontrado, por favor experimentá-lo em maps.google.com , acrescentando todos os campos abaixo separados por vírgulas." + +#: templates/forms/location-editor.php:48 +#: admin/em-locations.php:218 +#: admin/em-event.php:403 +msgid "Address:" +msgstr "Endereço:" + +#: templates/forms/location-editor.php:54 +#: admin/em-locations.php:224 +#: admin/em-event.php:409 +msgid "City/Town:" +msgstr "City / Town:" + +#: templates/forms/location-editor.php:60 +#: admin/em-locations.php:230 +#: admin/em-event.php:416 +msgid "State/County:" +msgstr "Estado / País:" + +#: templates/forms/location-editor.php:66 +#: admin/em-locations.php:236 +#: admin/em-event.php:423 +msgid "Postcode:" +msgstr "CEP:" + +#: templates/forms/location-editor.php:72 +#: admin/em-locations.php:249 +#: admin/em-event.php:436 +msgid "Country:" +msgstr "País:" + +#: templates/forms/location-editor.php:75 +#: admin/em-locations.php:252 +#: admin/em-event.php:439 +msgid "none selected" +msgstr "nenhum selecionado" + +#: templates/forms/location-editor.php:99 +#: admin/em-locations.php:281 +msgid "Details about the location" +msgstr "Detalhes sobre a localização" + +#: templates/forms/location-editor.php:103 +#: admin/em-locations.php:287 +msgid "Location image" +msgstr "Localização da imagem" + +#: templates/forms/location-editor.php:109 +#: admin/em-locations.php:293 +msgid "No image uploaded for this location yet" +msgstr "Sem imagem enviada para este local ainda" + +#: templates/forms/location-editor.php:112 +#: admin/em-categories.php:197 +#: admin/em-locations.php:296 +#: admin/em-event.php:486 +msgid "Upload/change picture" +msgstr "Upload / alterar a imagem" + +#: templates/forms/location-editor.php:115 +#: admin/em-locations.php:304 +msgid "Update location" +msgstr "Local de atualização" + +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Mapa não disponível" + +#: templates/placeholders/bookingbutton.php:2 +msgid "Book Now" +msgstr "Reserve agora" + +#: templates/placeholders/bookingbutton.php:3 +msgid "Booking..." +msgstr "Reserva ..." + +#: templates/placeholders/bookingbutton.php:4 +msgid "Booking Submitted" +msgstr "Enviado reserva" + +#: templates/placeholders/bookingbutton.php:5 +msgid "Booking Error. Try again?" +msgstr "Erro de reserva. Tentar novamente?" + +#: templates/placeholders/bookingform.php:15 +msgid "You are currently attending this event. Manage my bookings" +msgstr "Encontra-se a ir a este evento. Manage my reservas" + +#: templates/placeholders/bookingform.php:17 +msgid "Online bookings are not available for this event." +msgstr "Reservas on-line não estão disponíveis para este evento." + +#: templates/placeholders/bookingform.php:19 +msgid "Bookings are closed for this event." +msgstr "As reservas estão fechados para este evento." + +#: templates/placeholders/bookingform.php:38 +#: em-bookings.php:114 +#: admin/em-bookings.php:274 +msgid "Ticket Type" +msgstr "Tipo de bilhete" + +#: templates/placeholders/bookingform.php:106 +#: admin/em-people.php:31 +msgid "E-mail" +msgstr "E-mail" + +#: templates/placeholders/bookingform.php:112 +#: em-bookings.php:158 +#: admin/em-bookings.php:297 +#: admin/em-people.php:34 +msgid "Comment" +msgstr "Comentário" + +#: templates/placeholders/bookingform.php:117 +#: em-bookings.php:162 +msgid "Send your booking" +msgstr "Enviar a sua reserva" + +#: templates/placeholders/bookingform.php:124 +#: em-actions.php:408 +msgid "You must log in before you make a booking." +msgstr "Você deve fazer login antes de fazer uma reserva." + +#: templates/placeholders/bookingform.php:130 +msgid "Log in if you already have an account with us." +msgstr "Entrar se você já tem uma conta conosco." + +#: templates/placeholders/bookingform.php:132 +msgid "Username" +msgstr "Nome de Usuário" + +#: templates/placeholders/bookingform.php:136 +msgid "Password" +msgstr "Senha" + +#: templates/placeholders/bookingform.php:140 +msgid "Log In" +msgstr "Entrar" + +#: templates/placeholders/bookingform.php:141 +msgid "Remember Me" +msgstr "Lembrar de Mim" + +#: templates/placeholders/bookingform.php:156 +msgid "Sign Up" +msgstr "Inscrever-se" + +#: templates/placeholders/bookingform.php:160 +msgid "Password Lost and Found" +msgstr "Senha Achados e Perdidos" + +#: templates/placeholders/bookingform.php:160 +msgid "Lost your password?" +msgstr "Perdeu a senha?" + +#: templates/placeholders/bookingform.php:166 +#: em-bookings.php:169 +msgid "No more tickets available at this time." +msgstr "Sem mais ingressos disponíveis neste momento." + +#: templates/placeholders/bookingform.php:183 +msgid "Please wait while the booking is being submitted." +msgstr "Por favor, aguarde enquanto a reserva está sendo submetido." + +#: em-bookings.php:74 +#: admin/em-options.php:484 +msgid "Booking cancelled" +msgstr "Reserva cancelada" + +#: em-bookings.php:77 +#: em-actions.php:366 +msgid "You must log in to cancel your booking." +msgstr "Você deve fazer login para cancelar a sua reserva." + +#: em-bookings.php:97 +msgid "Book now!" +msgstr "Reserve já!" + +#: em-bookings.php:171 +msgid "You must register or log in in order to create and manage your bookings." +msgstr "Você deve registrar ou login para criar e gerenciar suas reservas." + +#: em-bookings.php:219 +#: em-bookings.php:233 +msgid "Cancel your booking" +msgstr "Cancelar a sua reserva" + +#: em-functions.php:9 +msgid "" +"

                              Hey, %s, welcome to Events Manager! We hope you like it around here.

                              \r\n" +"\t\t

                              Now it's time to insert events lists through widgets, template tags or shortcodes.

                              \r\n" +"\t\t

                              By the way, have you taken a look at the Settings page? That's where you customize the way events and locations are displayed.

                              \r\n" +"\t\t

                              What? Tired of seeing this advice? I hear you, click here and you won't see this again!

                              " +msgstr "" +"

                              Hey, %s, bem-vindo ao Events Manager! Nós esperamos que você goste por aqui.

                              \r\n" +"\t\t

                              Agora é hora de inserir listas de eventos através widgets, template tags ou shortcodes.

                              \r\n" +"\t\t

                              By the way, você deu uma olhada no Settings page? É aí que você personalizar a maneira como os eventos e locais são exibidos.

                              \r\n" +"\t\t

                              O quê? Cansado de ver este conselho? Eu ouço você, clique aqui e você não vai ver isso de novo!

                              " + +#: em-functions.php:139 +#: admin/bookings/em-events.php:14 +#: admin/em-events.php:48 +msgid "All events" +msgstr "Todos os eventos" + +#: em-functions.php:140 +#: admin/bookings/em-events.php:15 +#: admin/em-events.php:49 +msgid "Future events" +msgstr "Eventos futuros" + +#: em-functions.php:141 +#: admin/bookings/em-events.php:13 +#: admin/em-events.php:47 +msgid "Past events" +msgstr "Eventos passados" + +#: em-functions.php:142 +msgid "Today's events" +msgstr "Eventos de hoje" + +#: em-functions.php:143 +msgid "Tomorrow's events" +msgstr "Eventos de amanhã" + +#: em-functions.php:144 +msgid "Events this month" +msgstr "Eventos este mês" + +#: em-functions.php:145 +msgid "Events next month" +msgstr "Eventos no próximo mês" + +#: em-functions.php:146 +msgid "Events within 2 months" +msgstr "Eventos dentro de 2 meses" + +#: em-functions.php:147 +msgid "Events within 3 months" +msgstr "Eventos dentro de 3 meses" + +#: em-functions.php:148 +msgid "Events within 6 months" +msgstr "Eventos dentro de 6 meses" + +#: em-functions.php:149 +msgid "Events within 12 months" +msgstr "Eventos dentro de 12 meses" + +#: em-functions.php:181 +msgid "Trying to perform an illegal action." +msgstr "Tentando executar uma ação ilegal." + +#: em-functions.php:252 +msgid "ERROR: Please enter a username." +msgstr "Erro: digite um nome de usuário." + +#: em-functions.php:254 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "ERROR: Este nome de usuário é inválido porque ele usa caracteres ilegais. Digite um nome de usuário válido." + +#: em-functions.php:257 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "ERROR: Este nome de usuário já está registrado, por favor, escolha outro." + +#: em-functions.php:262 +msgid "ERROR: Please type your e-mail address." +msgstr "ERROR: Por favor digite seu endereço de e-mail." + +#: em-functions.php:264 +msgid "ERROR: The email address isn’t correct." +msgstr "ERRO: O endereço de e-mail não é correto." + +#: em-functions.php:267 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "ERROR: Este email já está registrado, por favor, escolha outro." + +#: em-functions.php:285 +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "ERROR: Não foi possível registrá-lo ... por favor contacte o webmaster !" + +#: em-functions.php:320 +msgid "New user registration on your blog %s:" +msgstr "Registro de novo usuário no seu %s blog:" + +#: em-functions.php:321 +msgid "Username: %s" +msgstr "Nome de usuário:%s" + +#: em-functions.php:322 +msgid "E-mail: %s" +msgstr "E-mail:%s" + +#: em-functions.php:323 +msgid "[%s] New User Registration" +msgstr "[%s] Novo Registro de Usuário" + +#: em-functions.php:334 +msgid "[%s] Your username and password" +msgstr "[%s] O seu nome de usuário e senha" + +#: events-manager.php:208 +msgid "You do not have permission to publish %s" +msgstr "Você não tem permissão para publicar %s" + +#: events-manager.php:208 +#: events-manager.php:210 +#: events-manager.php:214 +#: events-manager.php:216 +#: events-manager.php:221 +#: admin/em-options.php:355 +#: admin/em-options.php:356 +msgid "events" +msgstr "eventos" + +#: events-manager.php:209 +#: events-manager.php:217 +#: events-manager.php:220 +#: events-manager.php:221 +msgid "You do not have permission to edit %s" +msgstr "Você não tem permissão para editar %s" + +#: events-manager.php:210 +#: events-manager.php:211 +msgid "You do not have permission to delete others %s" +msgstr "Você não tem permissão para excluir outros %s" + +#: events-manager.php:212 +#: events-manager.php:214 +msgid "You do not have permission to edit others %s" +msgstr "Você não tem permissão para editar outros %s" + +#: events-manager.php:213 +msgid "You do not have permission to manage others %s" +msgstr "Você não tem permissão para gerenciar outros %s" + +#: events-manager.php:213 +#: events-manager.php:218 +msgid "bookings" +msgstr "reservas" + +#: events-manager.php:215 +#: events-manager.php:216 +msgid "You do not have permission to delete %s" +msgstr "Você não tem permissão para excluir %s" + +#: events-manager.php:218 +msgid "You do not have permission to manage %s" +msgstr "Você não tem permissão para gerenciar %s" + +#: events-manager.php:219 +msgid "You cannot to view others %s" +msgstr "Você não pode ver os outros %s" + +#: events-manager.php:220 +msgid "recurrences" +msgstr "recorrências" + +#: events-manager.php:323 +msgid "Add new" +msgstr "Add new" + +#: events-manager.php:326 +msgid "Event Categories" +msgstr "Categorias evento" + +#: events-manager.php:326 +#: em-install.php:373 +#: em-install.php:375 +#: admin/em-categories.php:57 +#: admin/em-options.php:367 +#: admin/em-options.php:369 +#: admin/em-options.php:370 +#: admin/em-options.php:371 +#: admin/em-options.php:372 +#: admin/em-options.php:373 +msgid "Categories" +msgstr "Categorias" + +#: events-manager.php:327 +msgid "Events Manager Settings" +msgstr "Configurações do Gerenciador de eventos" + +#: events-manager.php:327 +#: events-manager.php:473 +msgid "Settings" +msgstr "Configurações" + +#: events-manager.php:328 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Obter Ajuda para a gerente de eventos" + +#: events-manager.php:328 +msgid "Help" +msgstr "Ajuda" + +#: events-manager.php:456 +msgid "Add an event" +msgstr "Adicionar um evento" + +#: em-debug.php:18 +#: em-install.php:368 +msgid "
                            • No events in this location
                            • " +msgstr "
                            • Nenhum evento neste local
                            • " + +#: em-debug.php:44 +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Você está em modo de depuração Events Manager. Para ativar o modo debug off, vá para a definições de página." + +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "Nenhum ID de ticket fornecido" + +#: em-actions.php:93 +msgid "You are now viewing the duplicated %s." +msgstr "Você agora está exibindo o duplicado %s." + +#: em-actions.php:170 +#: em-actions.php:240 +msgid "%s successfully deleted" +msgstr "%s removido com sucesso" + +#: em-actions.php:239 +msgid "EM_Categories" +msgstr "EM_Categories" + +#: em-actions.php:286 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Uma nova conta de usuário foi criado para você. Por favor verifique seu e-mail para detalhes de acesso." + +#: em-actions.php:293 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Este e-mail já existe no nosso sistema, faça o login em registar-se para prosseguir com a sua reserva." + +#: em-actions.php:298 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Houve um problema ao criar uma conta de usuário, por favor contacte um administrador do site." + +#: em-actions.php:303 +msgid "You must log in or register to make a booking." +msgstr "Você deve fazer login ou registre-se para fazer uma reserva." + +#: em-actions.php:343 +msgid "You already have booked a seat at this event." +msgstr "Você já tem reservado um lugar neste evento." + +#: em-actions.php:354 +msgid "Booking %s" +msgstr "Booking %s" + +#: em-install.php:225 +msgid "Uncategorized" +msgstr "Sem categoria" + +#: em-install.php:280 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_NAME on #F #j, #Y. He wants to reserve #_BOOKINGSPACES spaces.
                              Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                              Yours faithfully,
                              Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) Vai assistir #_NAME em #F #J # Y. Ele quer #_BOOKINGSPACES reserva espaços
                              Agora, há espaços reservados #_BOOKEDSPACES , #_AVAILABLESPACES ainda estão disponíveis.
                              Com os melhores cumprimentos,
                              Eventos Manager - http://wp-events-plugin.com" + +#: em-install.php:280 +#: em-install.php:281 +#: em-install.php:282 +#: em-install.php:283 +#: em-install.php:284 +#: em-install.php:285 +msgid "

                              -------------------------------
                              Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

                              -------------------------------
                              Alimentado por Events Manager - http://wp-events-plugin.com" + +#: em-install.php:281 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_NAME on #F #j, #Y. He wanted to reserve #_BOOKINGSPACES spaces.
                              Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                              Yours faithfully,
                              Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) Cancelou sua reserva na posição #_NAME em #F #J, #Y. Ele queria #_BOOKINGSPACES reserva espaços.
                              Agora, há espaços reservados #_BOOKEDSPACES #_AVAILABLESPACES ainda estão disponíveis.
                              Com os melhores cumprimentos,
                              Eventos Manager - http://wp-events-plugin.com" + +#: em-install.php:282 +msgid "Dear #_BOOKINGNAME,
                              you have successfully reserved #_BOOKINGSPACES space/spaces for #_NAME.
                              Yours faithfully,
                              #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                              você tem sucesso reservados #_BOOKINGSPACES espaço / espaços para #_NAME.
                              Com os melhores cumprimentos,
                              #_CONTACTNAME" + +#: em-install.php:283 +msgid "Dear #_BOOKINGNAME,
                              You have requested #_BOOKINGSPACES space/spaces for #_NAME.
                              Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
                              Yours faithfully,
                              #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                              Você pediu #_BOOKINGSPACES espaço / espaços para #_NAME.
                              A sua reserva está pendente de aprovação pelos nossos administradores. Uma vez aprovado, você receberá uma confirmação automática.
                              Com os melhores cumprimentos,
                              #_CONTACTNAME" + +#: em-install.php:284 +msgid "Dear #_BOOKINGNAME,
                              Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been rejected.
                              Yours faithfully,
                              #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                              Solicitado a sua reserva de espaços em #_BOOKINGSPACES #_NAME em #F #J, #Y foi rejeitada.
                              Com os melhores cumprimentos,
                              #_CONTACTNAME" + +#: em-install.php:285 +msgid "Dear #_BOOKINGNAME,
                              Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been cancelled.
                              Yours faithfully,
                              #_CONTACTNAME" +msgstr "Caro #_BOOKINGNAME,
                              Solicitado a sua reserva de espaços em #_BOOKINGSPACES #_NAME em #F #J, #Y foi cancelada.
                              Com os melhores cumprimentos,
                              #_CONTACTNAME" + +#: em-install.php:344 +#: em-install.php:349 +#: em-install.php:375 +msgid "No %s" +msgstr "Não %s" + +#: em-install.php:434 +msgid "New booking" +msgstr "Nova reserva" + +#: em-install.php:436 +#: em-install.php:444 +msgid "Booking Cancelled" +msgstr "Reserva cancelada" + +#: em-install.php:438 +msgid "Booking Pending" +msgstr "Na pendência de reserva" + +#: em-install.php:440 +msgid "Booking Rejected" +msgstr "Rejeitado reserva" + +#: em-install.php:442 +msgid "Booking Confirmed" +msgstr "Confirmado reserva" + +#: em-install.php:447 +msgid "Powered by" +msgstr "Desenvolvido por" + +#: em-install.php:448 +msgid "Bookings - #_NAME" +msgstr "Reservas - #_NAME" + +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Locais evento" + +#: widgets/em-locations.php:19 +msgid "Display a list of event locations on Events Manager." +msgstr "Exibir uma lista de locais de eventos em Gerenciador de Eventos." + +#: widgets/em-locations.php:44 +msgid "No locations" +msgstr "Não locais" + +#: widgets/em-locations.php:67 +#: widgets/em-calendar.php:58 +#: widgets/em-events.php:76 +msgid "Title" +msgstr "Título" + +#: widgets/em-locations.php:71 +msgid "Show number of locations" +msgstr "Exibir número de locais" + +#: widgets/em-locations.php:75 +msgid "Scope of the locations" +msgstr "Âmbito dos locais" + +#: widgets/em-locations.php:85 +msgid "Order of the locations" +msgstr "Ordem dos locais" + +#: widgets/em-locations.php:87 +msgid "Ascendant" +msgstr "Ascendente" + +#: widgets/em-locations.php:88 +msgid "Descendant" +msgstr "Descendente" + +#: widgets/em-locations.php:92 +#: widgets/em-events.php:128 +msgid "List item format" +msgstr "Formato item da lista" + +#: widgets/em-calendar.php:16 +msgid "Display your events in a calendar widget." +msgstr "Mostrar os seus eventos em um widget de calendário." + +#: widgets/em-calendar.php:17 +msgid "Events Calendar" +msgstr "Calendário de Eventos" + +#: widgets/em-calendar.php:62 +msgid "Show Long Events?" +msgstr "Mostrar Eventos Long?" + +#: widgets/em-events.php:21 +#: widgets/em-events.php:52 +#: widgets/em-events.php:137 +msgid "all events" +msgstr "todos os eventos" + +#: widgets/em-events.php:23 +msgid "Display a list of events on Events Manager." +msgstr "Exibir uma lista de eventos em Gerenciador de Eventos." + +#: widgets/em-events.php:49 +msgid "No events" +msgstr "Nenhum evento" + +#: widgets/em-events.php:80 +msgid "Number of events" +msgstr "Número de eventos" + +#: widgets/em-events.php:84 +msgid "Scope" +msgstr "Escopo" + +#: widgets/em-events.php:94 +msgid "Order By" +msgstr "Por fim" + +#: widgets/em-events.php:98 +msgid "start date, start time, event name" +msgstr "data de início, hora de início, nome do evento" + +#: widgets/em-events.php:99 +msgid "name, start date, start time" +msgstr "nome, data de início, hora de início" + +#: widgets/em-events.php:100 +msgid "name, end date, end time" +msgstr "nome, data de término do tempo do fim" + +#: widgets/em-events.php:101 +msgid "end date, end time, event name" +msgstr "data final, hora de término, nome do evento" + +#: widgets/em-events.php:112 +msgid "Order" +msgstr "Ordem" + +#: widgets/em-events.php:116 +#: admin/em-options.php:255 +msgid "Ascending" +msgstr "Ascendente" + +#: widgets/em-events.php:117 +#: admin/em-options.php:256 +msgid "Descending" +msgstr "Descendente" + +#: widgets/em-events.php:132 +msgid "Show all events link at bottom?" +msgstr "Mostrar todos os eventos ligação no fundo?" + +#: widgets/em-events.php:136 +msgid "All events link text?" +msgstr "Todos os eventos texto do link?" + +#: admin/em-categories.php:21 +msgid "The category has been added." +msgstr "A categoria foi adicionada." + +#: admin/em-categories.php:23 +msgid "The category has been updated." +msgstr "A categoria foi atualizada." + +#: admin/em-categories.php:39 +msgid "Categories Deleted" +msgstr "Categorias Excluídos" + +#: admin/em-categories.php:71 +#: admin/em-categories.php:78 +msgid "ID" +msgstr "ID" + +#: admin/em-categories.php:102 +msgid "No categories have been inserted yet!" +msgstr "Nenhuma categoria tem sido inserido ainda!" + +#: admin/em-categories.php:128 +msgid "Edit category" +msgstr "Editar categoria" + +#: admin/em-categories.php:145 +msgid "Category name" +msgstr "Nome da categoria" + +#: admin/em-categories.php:149 +msgid "The name of the category" +msgstr "O nome da categoria" + +#: admin/em-categories.php:150 +#: admin/em-locations.php:162 +#: admin/em-event.php:297 +msgid "View Slug" +msgstr "Ver Slug" + +#: admin/em-categories.php:157 +#: admin/em-locations.php:169 +#: admin/em-event.php:304 +msgid "Hide Slug" +msgstr "Ocultar Slug" + +#: admin/em-categories.php:166 +#: admin/em-locations.php:178 +msgid "%s Slug" +msgstr "Slug%s" + +#: admin/em-categories.php:168 +#: admin/em-locations.php:180 +#: admin/em-event.php:315 +msgid "The event slug. If the event slug already exists, a random number will be appended to the end." +msgstr "A lesma evento. Se a lesma evento já existe, um número aleatório será adicionado ao final." + +#: admin/em-categories.php:182 +msgid "Details about the category" +msgstr "Detalhes sobre a categoria" + +#: admin/em-categories.php:188 +msgid "Category image" +msgstr "Imagem da categoria" + +#: admin/em-categories.php:194 +msgid "No image uploaded for this category yet" +msgstr "Nenhuma imagem enviados para esta categoria ainda" + +#: admin/em-categories.php:202 +msgid "Update category" +msgstr "Atualização categoria" + +#: admin/em-locations.php:80 +#: admin/em-locations.php:90 +msgid "Town" +msgstr "Cidade" + +#: admin/em-locations.php:125 +msgid "You do not have the rights to manage this location." +msgstr "Você não tem os direitos para gerir este local." + +#: admin/em-locations.php:187 +msgid "Location Owner" +msgstr "Proprietário local" + +#: admin/em-locations.php:192 +#: admin/em-event.php:165 +msgid "Select..." +msgstr "Selecione ..." + +#: admin/em-locations.php:201 +#: admin/em-event.php:356 +msgid "Coordinates" +msgstr "Coordenadas" + +#: admin/em-locations.php:242 +#: admin/em-event.php:429 +msgid "Region:" +msgstr "Região:" + +#: admin/em-event.php:56 +msgid "Mon" +msgstr "Seg." + +#: admin/em-event.php:56 +msgid "Tue" +msgstr "Ter" + +#: admin/em-event.php:56 +msgid "Wed" +msgstr "Casar" + +#: admin/em-event.php:56 +msgid "Thu" +msgstr "Qui" + +#: admin/em-event.php:56 +msgid "Fri" +msgstr "Sex" + +#: admin/em-event.php:56 +msgid "Sat" +msgstr "Sáb." + +#: admin/em-event.php:56 +msgid "Sun" +msgstr "Sol" + +#: admin/em-event.php:81 +msgid "Recurrence" +msgstr "Retorno" + +#: admin/em-event.php:88 +msgid "Repeated event" +msgstr "Evento repetido" + +#: admin/em-event.php:101 +#: admin/em-event.php:124 +msgid "Every" +msgstr "Cada" + +#: admin/em-event.php:108 +msgid "week" +msgstr "semana" + +#: admin/em-event.php:110 +msgid "weeks" +msgstr "semana" + +#: admin/em-event.php:112 +msgid "month" +msgstr "mês" + +#: admin/em-event.php:114 +msgid "months" +msgstr "mês" + +#: admin/em-event.php:161 +msgid "Event Owner/Contact Person" +msgstr "Pessoa evento Proprietário / Contato" + +#: admin/em-event.php:192 +msgid "Group Ownership" +msgstr "Propriedade do grupo" + +#: admin/em-event.php:218 +msgid "Bookings Stats" +msgstr "Estatísticas reservas" + +#: admin/em-event.php:229 +msgid "Available Spaces" +msgstr "Espaços disponíveis" + +#: admin/em-event.php:230 +msgid "Confirmed Spaces" +msgstr "Espaços confirmada" + +#: admin/em-event.php:231 +msgid "Pending Spaces" +msgstr "Espaços pendentes" + +#: admin/em-event.php:249 +msgid "No responses yet!" +msgstr "Nenhuma resposta ainda!" + +#: admin/em-event.php:276 +msgid "No categories available, create one here first" +msgstr "Sem categorias disponíveis, criar uma aqui primeiro" + +#: admin/em-event.php:313 +msgid "Event Slug" +msgstr "Slug evento" + +#: admin/em-event.php:320 +msgid "Event date" +msgstr "Data do evento" + +#: admin/em-event.php:321 +msgid "Recurrence dates" +msgstr "Datas de recorrência" + +#: admin/em-event.php:330 +msgid "The event date." +msgstr "A data do evento." + +#: admin/em-event.php:333 +msgid "When not reoccurring, this event spans between the beginning and end date." +msgstr "Quando não recorrentes, este evento se estende entre o início e de término." + +#: admin/em-event.php:338 +msgid "The recurrence beginning and end date." +msgstr "O início recorrência e data de término." + +#: admin/em-event.php:344 +msgid "Event time" +msgstr "Hora do evento" + +#: admin/em-event.php:351 +msgid "The time of the event beginning and end" +msgstr "O tempo do início do evento e final" + +#: admin/em-event.php:373 +msgid "Location:" +msgstr "Localização:" + +#: admin/em-event.php:389 +msgid "The name of the location where the event takes place. You can use the name of a venue, a square, etc" +msgstr "O nome do local onde o evento acontece. Você pode usar o nome de um local, uma praça, etc" + +#: admin/em-event.php:394 +msgid "Name:" +msgstr "Nome:" + +#: admin/em-event.php:398 +msgid "Create a location or start typing to search a previously created location." +msgstr "Criar um local ou começar a digitar para procurar um local previamente criado." + +#: admin/em-event.php:399 +msgid "You cannot edit saved locations here." +msgstr "Você não pode editar locais guardados aqui." + +#: admin/em-event.php:399 +msgid "Reset this form to create a location." +msgstr "Redefinir este formulário para criar um local." + +#: admin/em-event.php:444 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Preencher esta em primeiro lugar permite-lhe encontrar rapidamente estados previamente preenchidos e regiões para o país." + +#: admin/em-event.php:471 +msgid "Details about the event" +msgstr "Detalhes sobre o evento" + +#: admin/em-event.php:477 +msgid "Event image" +msgstr "Imagem do evento" + +#: admin/em-event.php:483 +msgid "No image uploaded for this event yet" +msgstr "Sem imagem enviada para este evento" + +#: admin/em-event.php:609 +msgid "Attributes" +msgstr "Atributos" + +#: admin/em-event.php:654 +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Você não tem os atributos personalizados definidos em qualquer um dos seus eventos configurações do modelo Manager. Por favor, adicione-lhes a página de configurações" + +#: admin/em-event.php:661 +msgid "Depreciated Attributes" +msgstr "Atributos depreciado" + +#: admin/em-event.php:662 +msgid "If you see any attributes under here, that means they're not used in Events Manager anymore. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Se você ver todos os atributos aqui em baixo, isso significa que eles não são usados ​​no Gerenciador de Eventos anymore. Para adicioná-los, você precisa adicionar o atributo personalizado novamente para uma opção de formatação na página de configurações. Para remover qualquer um desses atributos depreciados, dar-lhe um valor em branco e salvar." + +#: admin/em-event.php:693 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings to add attribute placeholders." +msgstr ", A fim de usar os atributos, você deve definir algumas em seus modelos, caso contrário eles nunca vão show. Ir para Eventos> Configurações para adicionar espaços reservados atributo." + +#: admin/em-event.php:708 +msgid "WARNING! You are about to re-create all your recurrent events including erasing your old booking data! Are you sure you want to do this?" +msgstr "ATENÇÃO! Você está prestes a recriar todos os seus eventos recorrentes incluindo apagar seus dados de reserva de idade! Tem certeza de que quer fazer isso?" + +#: admin/em-bookings.php:85 +msgid "Event Bookings Dashboard" +msgstr "Painel reservas de evento" + +#: admin/em-bookings.php:89 +#: admin/em-bookings.php:140 +#: admin/em-bookings.php:191 +msgid "Pending Bookings" +msgstr "Reservas pendentes" + +#: admin/em-bookings.php:92 +msgid "Events With Bookings Enabled" +msgstr "Com reservas de eventos Habilitado" + +#: admin/em-bookings.php:107 +#: admin/em-bookings.php:213 +#: admin/em-bookings.php:351 +#: admin/em-people.php:9 +msgid "You do not have the rights to manage this event." +msgstr "Você não tem os direitos para gerir este evento." + +#: admin/em-bookings.php:119 +msgid "Manage %s Bookings" +msgstr "Gerenciar reservas %s" + +#: admin/em-bookings.php:120 +#: admin/em-bookings.php:174 +msgid "View/Edit Event" +msgstr "Ver / Editar Evento" + +#: admin/em-bookings.php:127 +msgid "Spaces confirmed" +msgstr "Espaços confirmada" + +#: admin/em-bookings.php:129 +msgid "Date" +msgstr "Data" + +#: admin/em-bookings.php:143 +#: admin/em-bookings.php:194 +msgid "Confirmed Bookings" +msgstr "Reservas confirmadas" + +#: admin/em-bookings.php:145 +#: admin/em-bookings.php:196 +msgid "Rejected Bookings" +msgstr "Reservas rejeitado" + +#: admin/em-bookings.php:147 +#: admin/em-bookings.php:198 +msgid "Cancelled Bookings" +msgstr "Reservas canceladas" + +#: admin/em-bookings.php:163 +msgid "You do not have the rights to manage this ticket." +msgstr "Você não tem os direitos para gerir este bilhete." + +#: admin/em-bookings.php:173 +msgid "Ticket for %s" +msgstr "Bilhete para %s" + +#: admin/em-bookings.php:175 +msgid "View Event Bookings" +msgstr "Ver Reservas de eventos" + +#: admin/em-bookings.php:184 +msgid "Min" +msgstr "Min" + +#: admin/em-bookings.php:185 +msgid "Max" +msgstr "Max" + +#: admin/em-bookings.php:186 +msgid "Start" +msgstr "Começar" + +#: admin/em-bookings.php:187 +msgid "End" +msgstr "Final" + +#: admin/em-bookings.php:223 +msgid "Edit Booking" +msgstr "Editar Booking" + +#: admin/em-bookings.php:231 +msgid "Event Details" +msgstr "Detalhes do evento" + +#: admin/em-bookings.php:242 +msgid "Date/Time" +msgstr "Data / Hora" + +#: admin/em-bookings.php:254 +#: admin/em-bookings.php:373 +msgid "Personal Details" +msgstr "Detalhes pessoais" + +#: admin/em-bookings.php:262 +msgid "Booking Details" +msgstr "Detalhes reserva" + +#: admin/em-bookings.php:270 +msgid "Status" +msgstr "Estado" + +#: admin/em-bookings.php:290 +msgid "Totals" +msgstr "Totais" + +#: admin/em-bookings.php:307 +msgid "Booking Notes" +msgstr "Notes reserva" + +#: admin/em-bookings.php:310 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Você pode adicionar notas privado abaixo para referência interna que os gerentes de evento só vai ver." + +#: admin/em-bookings.php:315 +msgid "wrote" +msgstr "escreveu" + +#: admin/em-bookings.php:361 +msgid "Manage Person's Booking" +msgstr "Gerenciar Reserva Pessoa" + +#: admin/em-bookings.php:363 +msgid "Edit User" +msgstr "Editar Usuário" + +#: admin/em-bookings.php:384 +msgid "Past And Present Bookings" +msgstr "Reservas Passado e Presente" + +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-confirmed.php:53 +#: admin/em-events.php:173 +msgid "Approve" +msgstr "Aprovar" + +#: admin/bookings/em-rejected.php:55 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-confirmed.php:56 +msgid "Decline" +msgstr "Declínio" + +#: admin/bookings/em-rejected.php:112 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-confirmed.php:119 +msgid "Edit/View" +msgstr "Editar / Ver" + +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Não rejeitou reservas." + +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +#: admin/bookings/em-confirmed.php:116 +msgid "Reject" +msgstr "Rejeitar" + +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Sem reservas pendentes." + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Restaurar" + +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Cancelada sem reservas." + +#: admin/bookings/em-person.php:118 +#: admin/bookings/em-confirmed.php:114 +msgid "Unapprove" +msgstr "Desaprovar" + +#: admin/bookings/em-person.php:139 +#: admin/bookings/em-confirmed.php:131 +msgid "No confirmed bookings." +msgstr "Não confirmou reservas." + +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Todos os Eventos" + +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Eventos futuros" + +#: admin/bookings/em-events.php:51 +#: admin/em-events.php:63 +msgid "Total" +msgstr "Total" + +#: admin/bookings/em-events.php:72 +#: admin/em-events.php:92 +msgid "Filter" +msgstr "Filtro" + +#: admin/em-help.php:15 +msgid "Placeholders for customizing event pages" +msgstr "Espaços reservados para personalizar páginas do evento" + +#: admin/em-help.php:16 +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "Na página de configurações , você vai encontrar várias caixas de texto onde você pode editar informações de eventos como aparência, como para listas de eventos e localização. Usando os espaços reservados abaixo, você pode escolher quais informações devem ser exibidas." + +#: admin/em-help.php:17 +#: admin/em-options.php:58 +msgid "Event Related Placeholders" +msgstr "Placeholders eventos relacionados" + +#: admin/em-help.php:19 +#: admin/em-options.php:61 +msgid "Category Related Placeholders" +msgstr "Os espaços reservados de categorias relacionadas" + +#: admin/em-help.php:21 +#: admin/em-options.php:59 +msgid "Location Related Placeholders" +msgstr "Placeholders localização relacionados" + +#: admin/em-help.php:23 +#: admin/em-options.php:60 +msgid "Booking Related Placeholders" +msgstr "Reserva espaços reservados relacionados" + +#: admin/em-people.php:27 +msgid "Bookings data" +msgstr "Dados reservas" + +#: admin/em-people.php:32 +msgid "Phone number" +msgstr "Número de telefone" + +#: admin/em-people.php:53 +msgid "Available" +msgstr "Disponível" + +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/em-people.php:72 +msgid "Events Manager" +msgstr "Gerente de Eventos" + +#: admin/em-admin.php:20 +msgid "" +"

                              Hey, %s, welcome to Events Manager! We hope you like it around here.

                              \r\n" +"\t\t\t

                              Now it's time to insert events lists through widgets, template tags or shortcodes.

                              \r\n" +"\t\t\t

                              By the way, have you taken a look at the Settings page? That's where you customize the way events and locations are displayed.

                              \r\n" +"\t\t\t

                              What? Tired of seeing this advice? I hear you, click here and you won't see this again!

                              " +msgstr "" +"

                              Hey, %s, bem-vindo ao Events Manager! Nós esperamos que você goste por aqui.

                              \r\n" +"\t\t\t

                              Agora é hora de inserir listas de eventos através widgets, template tags ou shortcodes.

                              \r\n" +"\t\t\t

                              By the way, você deu uma olhada no página de definições? É aí que você personalizar a maneira como os eventos e locais são exibidos.

                              \r\n" +"\t\t\t

                              O quê? Cansado de ver este conselho? Eu ouço você, clique aqui e você não vai ver isso de novo!

                              " + +#: admin/em-admin.php:57 +msgid "Events Manager has some new features!
                              • Bookings can now be approved before they count towards your event's space allocations.
                              • Events now have owners, and you can restrict users so they can only manage events/locations/categories they create.

                                These new permissions are enabled by default, but since you upgraded it has been disabled to maintain the previous plugin behaviour. You can re-enable it from the settings page. Dismiss" +msgstr "Gerente de eventos tem algumas características novas!
                                • As reservas podem agora ser aprovado antes que eles contam para alocações de espaço do seu evento.
                                • Eventos proprietários têm agora, e você pode restringir os usuários para que eles só podem gerenciar eventos / locations / categorias que eles criam.

                                  Estas novas permissões são ativadas por padrão, mas desde que você atualizou ele foi desativado para manter o comportamento do plugin anterior. Você pode reativá-lo a partir da página de configurações . Dismiss" + +#: admin/em-admin.php:70 +msgid "Uh Oh! For some reason wordpress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Uh Oh! Por alguma razão wordpress não conseguiu criar uma página de eventos para você (ou você simplesmente apagou). Não se preocupe, tudo que você precisa fazer é criar uma página em branco, dê o nome que você quiser, e selecioná-lo como sua página eventos em sua página de configurações . Desculpa para a etapa extra! Se você souber o que está fazendo, você pode ter feito isso de propósito, em caso afirmativo ignorar esta mensagem" + +#: admin/em-admin.php:82 +msgid "A LOT has changed since Events Manager 3. We recommend you take a look at the settings page for new features and upgrade instructions, and you may particualarly be interested in modifying permissions. Dismiss" +msgstr "Muita coisa mudou desde Events Manager 3. Recomendamos que você dê uma olhada na página de definições para novos recursos e instruções de atualização, e você pode estar interessado em particualarly permissões de modificação. Dismiss" + +#: admin/em-admin.php:94 +msgid "If you upgraded from 3.x to the RC2 and the update did not go so well, try reimporting old settings. Warning! Re-importing will rename all event slugs, re-import your old category settings from events, and recreate all tickets, so changes to these areas will be lost. Dismiss" +msgstr "Se você atualizou do 3.x para o RC2 ea atualização não vão tão bem, tente reimportar configurações antigas . Atenção! Re-importação irá renomear todas as lesmas evento, re-importar as configurações antiga categoria de eventos, e recriar todos os bilhetes, portanto, alterações essas áreas serão perdidos. Dismiss" + +#: admin/em-admin.php:118 +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Esta página corresponde a página de eventos Eventos Manager. Seu conteúdo será anulado pelo Gerenciador de Eventos, mas se você incluir o conteúdo da palavra (exatamente nas capitais) e cercá-la com outro texto, CONTEÚDO só serão substituídos. Se você quiser mudar a forma como os seus eventos olhar, ir para a definições de página." + +#: admin/em-admin.php:145 +msgid "Displaying %s–%s of %s" +msgstr "Exibindo s %s-% de %s" + +#: admin/em-options.php:42 +msgid "Changes saved." +msgstr "Alterações salvas." + +#: admin/em-options.php:62 +msgid "This accepts %s and %s placeholders." +msgstr "Este aceita espaços reservados %s e %s." + +#: admin/em-options.php:63 +#: admin/em-options.php:64 +msgid "This accepts %s placeholders." +msgstr "Este aceita %s espaços reservados." + +#: admin/em-options.php:65 +msgid "This accepts %s, %s and %s placeholders." +msgstr "Este aceita espaços reservados %s,%s e %s." + +#: admin/em-options.php:67 +#: admin/em-options.php:626 +msgid "Save Changes" +msgstr "Salvar alterações" + +#: admin/em-options.php:67 +msgid "All" +msgstr "Todos" + +#: admin/em-options.php:69 +msgid "Only Network Admins see this" +msgstr "Administradores de rede só ver isso" + +#: admin/em-options.php:73 +msgid "Collapse All" +msgstr "Recolher Tudo" + +#: admin/em-options.php:74 +msgid "Expand All" +msgstr "Expandir Tudo" + +#: admin/em-options.php:102 +msgid "Event Manager Options" +msgstr "Gerente de Opções de evento" + +#: admin/em-options.php:152 +#: admin/em-options.php:168 +#: admin/em-options.php:210 +#: admin/em-options.php:300 +#: admin/em-options.php:323 +#: admin/em-options.php:339 +#: admin/em-options.php:364 +#: admin/em-options.php:386 +#: admin/em-options.php:401 +#: admin/em-options.php:422 +#: admin/em-options.php:444 +#: admin/em-options.php:496 +#: admin/em-options.php:515 +#: admin/em-options.php:529 +#: admin/em-options.php:593 +msgid "Click to toggle" +msgstr "Clique para alternar" + +#: admin/em-options.php:152 +msgid "Multi Site Options" +msgstr "Multi-Opções do Site" + +#: admin/em-options.php:156 +msgid "Enable global tables mode?" +msgstr "Ativar o modo de tabelas global?" + +#: admin/em-options.php:156 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Definir esta opção como sim vai fazer todos os eventos economizar nas tabelas evento principal do site (EM também deve ser ativado). Isto permite que você compartilhe eventos em toda blogs diferentes, tais como eventos mostrando a sua rede, permitindo simultaneamente que os usuários exibam e gerenciar seus eventos dentro de seu próprio blog. Tenha em mente que a ativação isto significará eventos antigos criados no sub-blogs não será mais acessível, e se você voltar, mas eles serão criados novos eventos durante o modo de eventos globais só vai permanecer no site principal." + +#: admin/em-options.php:157 +msgid "Display global events on main blog?" +msgstr "Mostrar eventos globais no blog principal?" + +#: admin/em-options.php:157 +msgid "Displays events from all sites on the network by default. You can still restrict events by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Mostra eventos de todos os sites na rede por padrão. Você ainda pode restringir eventos pelo blog usando códigos de acesso e tags de templates juntamente com o blog atributo. Requer tabelas global a ser ligado." + +#: admin/em-options.php:158 +msgid "Link sub-site events directly to sub-site?" +msgstr "Ligação sub-site eventos diretamente para o site-sub?" + +#: admin/em-options.php:158 +msgid "When displaying global events on the main site you have the option of users viewing the event details on the main site or being directed to the sub-site." +msgstr "Ao exibir eventos globais no site principal que você tem a opção de usuários que estão visualizando os detalhes do evento no site principal ou sendo direcionada para o sub-site." + +#: admin/em-options.php:168 +msgid "General options" +msgstr "Opções gerais" + +#: admin/em-options.php:172 +msgid "Use dropdown for locations?" +msgstr "Use dropdown para locais?" + +#: admin/em-options.php:172 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Selecione sim para selecionar localização de um menu drow-down; seleção local será mais rápido, mas você vai perder a capacidade de inserir locais com eventos" + +#: admin/em-options.php:173 +msgid "Use recurrence?" +msgstr "Use recorrência?" + +#: admin/em-options.php:173 +msgid "Select yes to enable the recurrence features feature" +msgstr "Selecione Sim para ativar a recorrência de características de" + +#: admin/em-options.php:174 +msgid "Enable bookings?" +msgstr "Habilitar reservas?" + +#: admin/em-options.php:174 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Escolha Sim para permitir reservas e bilhetes para eventos." + +#: admin/em-options.php:175 +msgid "Use categories?" +msgstr "Use as categorias?" + +#: admin/em-options.php:175 +msgid "Select yes to enable the category features" +msgstr "Selecione Sim para habilitar os recursos da categoria" + +#: admin/em-options.php:176 +msgid "Use event attributes?" +msgstr "Use atributos evento?" + +#: admin/em-options.php:176 +msgid "Select yes to enable the attributes feature" +msgstr "Selecione Sim para ativar o recurso de atributos" + +#: admin/em-options.php:180 +msgid "no default category" +msgstr "nenhuma categoria padrão" + +#: admin/em-options.php:185 +msgid "Default Category" +msgstr "Categoria padrão" + +#: admin/em-options.php:185 +msgid "This option allows you to select the default category when adding an event." +msgstr "Esta opção permite que você selecione a categoria padrão ao adicionar um evento." + +#: admin/em-options.php:185 +#: admin/em-options.php:194 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(Não aplicável com a posse de eventos em breve, em breve!)" + +#: admin/em-options.php:189 +msgid "no default location" +msgstr "sem local padrão" + +#: admin/em-options.php:194 +msgid "Default Location" +msgstr "Localização padrão" + +#: admin/em-options.php:194 +msgid "This option allows you to select the default location when adding an event." +msgstr "Esta opção permite que você selecione o local padrão ao adicionar um evento." + +#: admin/em-options.php:197 +msgid "Default Location Country" +msgstr "Localização País padrão" + +#: admin/em-options.php:197 +msgid "no default country" +msgstr "nenhum país padrão" + +#: admin/em-options.php:197 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Se você selecionar um país padrão, que será pré-selecionado ao criar um novo local." + +#: admin/em-options.php:199 +msgid "Event Attributes" +msgstr "Atributos evento" + +#: admin/em-options.php:199 +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Você também pode adicionar atributos do evento aqui, um por linha neste formato #_ATT{key} . Eles não aparecem nas páginas de eventos a menos que você inseri-los em outro modelo abaixo, mas você pode querer armazenar informações extras sobre um evento para outros usos. Mais informações sobre espaços reservados." + +#: admin/em-options.php:201 +msgid "Show some love?" +msgstr "Mostrar um pouco de amor?" + +#: admin/em-options.php:201 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Centenas de horas livres passaram a fazer este plugin livre, mostrar o seu apoio e adicionar um pequeno link para o site de plugin na parte inferior das páginas do seu evento." + +#: admin/em-options.php:210 +#: admin/em-options.php:224 +msgid "Events page" +msgstr "Página de eventos" + +#: admin/em-options.php:219 +msgid "[No Events Page]" +msgstr "[Não Page Eventos]" + +#: admin/em-options.php:224 +msgid "This option allows you to select which page to use as an events page" +msgstr "Esta opção permite que você selecione qual página para usar como uma página de eventos" + +#: admin/em-options.php:227 +msgid "Show events page in lists?" +msgstr "Mostrar página de eventos em listas?" + +#: admin/em-options.php:227 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Marque esta opção se quiser que a página de eventos para aparecer junto com outras páginas em listas de páginas." + +#: admin/em-options.php:228 +msgid "Display calendar in events page?" +msgstr "Exibição do calendário na página de eventos?" + +#: admin/em-options.php:228 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Esta opção permite visualizar o calendário na página de eventos, em vez da lista padrão. Recomenda-se não tanto para mostrar widget do calendário e uma página do calendário." + +#: admin/em-options.php:228 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Se você gostaria de mostrar os eventos que se estendem por mais de um dia, ver a seção Calendário nesta página." + +#: admin/em-options.php:229 +msgid "Disable title rewriting?" +msgstr "Desabilitar título reescrever?" + +#: admin/em-options.php:229 +msgid "Some wordpress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Alguns temas wordpress não seguem as melhores práticas ao gerar menus de navegação, e assim o título automático reescrever recurso pode causar problemas, se o seu menus não estão funcionando corretamente nas páginas de eventos, tente definir esta opção para \"Sim\", e proporcionar uma adequada formato HTML título abaixo." + +#: admin/em-options.php:230 +msgid "Event Manager titles" +msgstr "Gerente de títulos de eventos" + +#: admin/em-options.php:230 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Esta definição só só importa se você selecionou 'Sim' para cima. Você vai notar os títulos eventos da página não está sendo reescrito, e você tem um novo título sob o nome da página padrão. Isto é onde você controla o HTML deste título. Certifique-se de manter o espaço reservado #_PAGETITLE aqui, como isso é o que é reescrito pelo gerente de eventos. Para controlar o que é reescrito no presente título, ver as configurações mais abaixo para títulos de página." + +#: admin/em-options.php:231 +msgid "Event List Limits" +msgstr "Lista de Limites de evento" + +#: admin/em-options.php:231 +msgid "This will control how many events are shown on one list by default." +msgstr "Isto irá controlar quantos eventos são mostrados em uma lista por padrão." + +#: admin/em-options.php:232 +msgid "Are current events past events?" +msgstr "São eventos atuais últimos acontecimentos?" + +#: admin/em-options.php:232 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Por padrão, os eventos que são, têm uma data de término mais tarde do que hoje vão ser incluídas em pesquisas, para definir esta sim a considerar eventos que começou \"ontem\", como passado." + +#: admin/em-options.php:233 +msgid "Show events search?" +msgstr "Mostrar eventos de pesquisa?" + +#: admin/em-options.php:233 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Se definido como sim, um formulário de pesquisa vai aparecer logo acima da lista de eventos." + +#: admin/em-options.php:236 +msgid "Default event list ordering" +msgstr "Lista de eventos padrão ordenação" + +#: admin/em-options.php:241 +msgid "Order by start date, start time, then event name" +msgstr "Ordem por data de início, hora de início, em seguida, nome do evento" + +#: admin/em-options.php:242 +msgid "Order by name, start date, then start time" +msgstr "Ordenar por nome, data de início, então a hora de início" + +#: admin/em-options.php:243 +msgid "Order by name, end date, then end time" +msgstr "Ordenar por nome, data de término, então o tempo final" + +#: admin/em-options.php:244 +msgid "Order by end date, end time, then event name" +msgstr "Ordem por data final, hora de conclusão, nome do evento" + +#: admin/em-options.php:258 +msgid "All Ascending" +msgstr "Todos os Crescente" + +#: admin/em-options.php:261 +msgid "All Descending" +msgstr "Todos os Decrescente" + +#: admin/em-options.php:275 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "Quando o Gerenciador de Eventos exibe listas de eventos o comportamento padrão é a ordenação por data de início em ordem crescente. Para alterar isso, modifique os valores acima." + +#: admin/em-options.php:279 +msgid "Event list scope" +msgstr "Âmbito lista de eventos" + +#: admin/em-options.php:289 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Apenas mostrar os eventos de partida dentro de um certo limite de tempo na página de eventos. Padrão é eventos futuros, sem limite de tempo do fim." + +#: admin/em-options.php:300 +msgid "Events format" +msgstr "Formato de eventos" + +#: admin/em-options.php:303 +#: admin/em-options.php:342 +#: admin/em-options.php:367 +msgid "%s Page" +msgstr "Página %s" + +#: admin/em-options.php:305 +msgid "Events page title" +msgstr "Eventos título da página" + +#: admin/em-options.php:305 +msgid "The title on the multiple events page." +msgstr "O título na página de vários eventos." + +#: admin/em-options.php:306 +msgid "Default event list format header" +msgstr "De eventos padrão de cabeçalho formato de lista" + +#: admin/em-options.php:306 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Este conteúdo vai aparecer logo acima do seu código para o formato de lista de eventos padrão. Padrão em branco" + +#: admin/em-options.php:307 +msgid "Default event list format" +msgstr "Formato padrão de lista de eventos" + +#: admin/em-options.php:307 +msgid "The format of any events in a list." +msgstr "O formato de todos os eventos em uma lista." + +#: admin/em-options.php:308 +msgid "Default event list format footer" +msgstr "De eventos padrão rodapé formato de lista" + +#: admin/em-options.php:308 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Este conteúdo vai aparecer logo abaixo o código para o formato de lista de eventos padrão. Padrão em branco" + +#: admin/em-options.php:309 +msgid "No events message" +msgstr "Nenhuma mensagem de eventos" + +#: admin/em-options.php:309 +msgid "The message displayed when no events are available." +msgstr "A mensagem exibida quando nenhum evento estão disponíveis." + +#: admin/em-options.php:310 +msgid "List events by date title" +msgstr "Lista de eventos por título data" + +#: admin/em-options.php:310 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
                                  " +msgstr "Se visualização de uma página para eventos em uma data específica, este é o título que iria aparecer. Para inserir valores de data, use caracteres de formato PHP tempo com um # símbolo, antes deles, ou seja #m , #M , #j , etc
                                  " + +#: admin/em-options.php:312 +#: admin/em-options.php:350 +#: admin/em-options.php:375 +msgid "Single %s Page" +msgstr "Página % solteiros s" + +#: admin/em-options.php:314 +msgid "Single event page title format" +msgstr "Único evento de formato de título da página" + +#: admin/em-options.php:314 +msgid "The format of a single event page title." +msgstr "O formato de um único título de evento de página." + +#: admin/em-options.php:315 +msgid "Default single event format" +msgstr "Formato padrão único evento" + +#: admin/em-options.php:315 +msgid "The format of a single event page." +msgstr "O formato de uma página único evento." + +#: admin/em-options.php:323 +msgid "Calendar format" +msgstr "Formato de calendário" + +#: admin/em-options.php:327 +msgid "Small calendar title" +msgstr "Título pequeno calendário" + +#: admin/em-options.php:327 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "O formato do título, correspondente ao texto que aparece quando pairando sobre um dia do calendário repleto de eventos." + +#: admin/em-options.php:328 +msgid "Small calendar title separator" +msgstr "Separador de título pequena calendário" + +#: admin/em-options.php:328 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "O separador que aparecem no título acima, quando mais de uma eventos estão ocorrendo no mesmo dia." + +#: admin/em-options.php:329 +msgid "Full calendar events format" +msgstr "Completa calendário formato eventos" + +#: admin/em-options.php:329 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "O formato de cada evento quando exibido no calendário completo. Lembre-se de incluir li tags antes e depois do evento." + +#: admin/em-options.php:330 +msgid "Show long events on calendar pages?" +msgstr "Mostrar eventos longos em páginas da agenda?" + +#: admin/em-options.php:330 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Se você está mostrando um calendário na página de eventos (consulte a seção Eventos formato nesta página), você tem a opção de mostrar os eventos que se estendem ao longo de dias em cada dia que ela ocorra." + +#: admin/em-options.php:331 +msgid "Show list on day with single event?" +msgstr "Mostrar lista em dia com o único evento?" + +#: admin/em-options.php:331 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Por padrão, se um dia do calendário só tem um evento, ele exibirá um único evento ao clicar no link dessa data do calendário. Se você selecionar Sim, aqui, você vai ter sempre ver uma lista de eventos." + +#: admin/em-options.php:339 +msgid "Locations format" +msgstr "Formato locais" + +#: admin/em-options.php:344 +#: admin/em-options.php:369 +msgid "%s page title" +msgstr "Title %s página" + +#: admin/em-options.php:344 +#: admin/em-options.php:369 +msgid "The title on the multiple %s page." +msgstr "O título na página %s múltiplas." + +#: admin/em-options.php:345 +#: admin/em-options.php:370 +msgid "%s list header format" +msgstr "Formato %s cabeçalho da lista" + +#: admin/em-options.php:345 +#: admin/em-options.php:370 +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Este conteúdo vai aparecer logo acima do seu código para formatar o %s lista abaixo. Padrão em branco" + +#: admin/em-options.php:346 +#: admin/em-options.php:371 +msgid "%s list item format" +msgstr "Formato %s item da lista" + +#: admin/em-options.php:346 +#: admin/em-options.php:371 +msgid "The format of a single %s in a list." +msgstr "O formato de um único %s em uma lista." + +#: admin/em-options.php:347 +#: admin/em-options.php:372 +msgid "%s list footer format" +msgstr "Formato %s rodapé lista" + +#: admin/em-options.php:347 +#: admin/em-options.php:372 +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Este conteúdo vai aparecer logo abaixo do seu código para formatar o %s lista acima. Padrão em branco" + +#: admin/em-options.php:348 +#: admin/em-options.php:356 +#: admin/em-options.php:373 +msgid "No %s message" +msgstr "Mensagem não %s" + +#: admin/em-options.php:348 +#: admin/em-options.php:373 +msgid "The message displayed when no %s are available." +msgstr "A mensagem que aparece quando não s % estão disponíveis." + +#: admin/em-options.php:352 +#: admin/em-options.php:377 +msgid "Single %s title format" +msgstr "Formato %s único título" + +#: admin/em-options.php:352 +msgid "The format of a single location page title." +msgstr "O formato de um único título local da página." + +#: admin/em-options.php:353 +#: admin/em-options.php:378 +msgid "Single %s page format" +msgstr "Formato %s única página" + +#: admin/em-options.php:353 +msgid "The format of a single location page." +msgstr "O formato de uma página única localização." + +#: admin/em-options.php:354 +msgid "Default location balloon format" +msgstr "Padrão de formato de balão de localização" + +#: admin/em-options.php:354 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "O formato do do texto constante do baloon descrever a localização de um mapa único local." + +#: admin/em-options.php:355 +msgid "Default %s list format" +msgstr "Padrão %s formato de lista" + +#: admin/em-options.php:355 +msgid "The format of the events the list inserted in the location page through the #_NEXTEVENTS, #_PASTEVENTS and #_ALLEVENTS element." +msgstr "O formato dos eventos da lista inserido na página de localização através do #_NEXTEVENTS , #_PASTEVENTS e #_ALLEVENTS elemento." + +#: admin/em-options.php:356 +msgid "The message to be displayed in the list generated by #_NEXTEVENTS, #_PASTEVENTS and #_ALLEVENTS when no events are available." +msgstr "A mensagem a ser exibida na lista gerada pelo #_NEXTEVENTS , #_PASTEVENTS e #_ALLEVENTS quando não há eventos estão disponíveis." + +#: admin/em-options.php:364 +msgid "Categories format" +msgstr "Formato categorias" + +#: admin/em-options.php:377 +msgid "The format of a single category page title." +msgstr "O formato de um único título da categoria página." + +#: admin/em-options.php:378 +msgid "The format of a single category page." +msgstr "O formato de uma página única categoria." + +#: admin/em-options.php:386 +msgid "RSS feed format" +msgstr "Formato de feed RSS" + +#: admin/em-options.php:390 +msgid "RSS main title" +msgstr "RSS título principal" + +#: admin/em-options.php:390 +msgid "The main title of your RSS events feed." +msgstr "O título principal do seu feed RSS eventos." + +#: admin/em-options.php:391 +msgid "RSS main description" +msgstr "RSS descrição principal" + +#: admin/em-options.php:391 +msgid "The main description of your RSS events feed." +msgstr "A principal descrição do seu feed RSS eventos." + +#: admin/em-options.php:392 +msgid "RSS title format" +msgstr "RSS formato de título" + +#: admin/em-options.php:392 +msgid "The format of the title of each item in the events RSS feed." +msgstr "O formato do título de cada item do feed RSS eventos." + +#: admin/em-options.php:393 +msgid "RSS description format" +msgstr "RSS formato de descrição" + +#: admin/em-options.php:393 +msgid "The format of the description of each item in the events RSS feed." +msgstr "O formato da descrição de cada item do feed RSS eventos." + +#: admin/em-options.php:401 +msgid "Maps and geotagging" +msgstr "Mapas e geotagging" + +#: admin/em-options.php:406 +msgid "Enable Google Maps integration?" +msgstr "Permitir a integração do Google Maps?" + +#: admin/em-options.php:410 +msgid "Check this option to enable Goggle Map integration." +msgstr "Marque esta opção para permitir a integração Mapa Goggle." + +#: admin/em-options.php:414 +msgid "Map text format" +msgstr "Mapa formato de texto" + +#: admin/em-options.php:414 +msgid "The text format inside the map balloons." +msgstr "O formato de texto dentro dos balões mapa." + +#: admin/em-options.php:422 +msgid "Booking and Ticketing Options" +msgstr "Reserva e emissão de bilhetes Opções" + +#: admin/em-options.php:426 +msgid "Approval Required?" +msgstr "Aprovação Obrigatório?" + +#: admin/em-options.php:426 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Reservas não será confirmada até que o administrador caso aprove." + +#: admin/em-options.php:427 +msgid "Currency" +msgstr "Moeda" + +#: admin/em-options.php:427 +msgid "Choose your currency for displaying event pricing." +msgstr "Escolha a sua moeda para exibir preços evento." + +#: admin/em-options.php:428 +msgid "Single ticket mode?" +msgstr "Modo de bilhete único?" + +#: admin/em-options.php:428 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "No modo de bilhete único, os usuários podem criar apenas um bilhete por reserva (e não verá opções para adicionar mais ingressos)." + +#: admin/em-options.php:429 +msgid "Show ticket table in single ticket mode?" +msgstr "Mostrar tabela ticket no modo bilhete único?" + +#: admin/em-options.php:429 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Se você preferir uma tabela ticket como com vários bilhetes, mesmo para eventos único bilhete, permitir isso." + +#: admin/em-options.php:430 +msgid "Show unavailable tickets?" +msgstr "Mostrar bilhetes indisponíveis?" + +#: admin/em-options.php:430 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Você pode escolher se quer ou não mostrar bilhetes disponíveis para os visitantes." + +#: admin/em-options.php:431 +msgid "Reserved unconfirmed spaces?" +msgstr "Reservados espaços não confirmados?" + +#: admin/em-options.php:431 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "Por padrão, espaços para eventos se tornam indisponíveis uma vez que há reservas suficientes CONFIRMADO. A espaços de reserva, mesmo que unnapproved, escolha sim." + +#: admin/em-options.php:432 +msgid "Show multiple tickets if logged out?" +msgstr "Mostram vários bilhetes se logado para fora?" + +#: admin/em-options.php:432 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Se desconectado, o usuário será solicitado a registrar, a fim de livro. No entanto, podemos mostrar bilhetes disponíveis, se você tiver mais de um bilhete." + +#: admin/em-options.php:433 +msgid "Allow overbooking when approving?" +msgstr "Permitir overbooking ao aprovar?" + +#: admin/em-options.php:433 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Se você receber um monte de reservas pendentes e você decidir permitir reservas mais do que espaços permitem, definindo-o como sim lhe permitirá substituir o limite de espaço de eventos quando manualmente aprovação." + +#: admin/em-options.php:434 +msgid "Allow guest bookings?" +msgstr "Permitir reservas convidado?" + +#: admin/em-options.php:434 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Se ativado, os visitantes hóspede pode fornecer um endereço de e-mail e uma conta de usuário será automaticamente criado para eles, juntamente com a sua reserva. Eles também serão capazes de voltar a entrar com essa conta recém-criada." + +#: admin/em-options.php:435 +msgid "Display login form?" +msgstr "Mostrar formulário de login?" + +#: admin/em-options.php:435 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Escolher se quer ou não exibir um formulário de login na área formulário de reserva de lembrar seus membros efetuem login antes de reservar." + +#: admin/em-options.php:444 +msgid "Booking Email Templates" +msgstr "Modelos de reserva E-mail" + +#: admin/em-options.php:448 +msgid "Default contact person" +msgstr "Pessoa de contacto padrão" + +#: admin/em-options.php:448 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Selecione a pessoa de contato padrão. Esse usuário será utilizado sempre que uma pessoa de contato não é explicitamente especificada para um evento" + +#: admin/em-options.php:449 +msgid "Email events admin?" +msgstr "Eventos de e-mail admin?" + +#: admin/em-options.php:449 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Se você quiser todos os eventos de e-mail de confirmação de reserva enviado a um administrador escrever seu e-mail aqui (deixe em branco para não enviar um e-mail)." + +#: admin/em-options.php:450 +msgid "Email contact person?" +msgstr "E-mail pessoa de contacto?" + +#: admin/em-options.php:450 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Marque esta opção se você quiser o contato de eventos para receber um e-mail livros quando coloca alguém. Um e-mail será enviado quando a reserva for feita pela primeira vez (independentemente se confirmada ou pendente)" + +#: admin/em-options.php:451 +msgid "Disable new registration email?" +msgstr "Desabilitar email novo registro?" + +#: admin/em-options.php:451 +msgid "Check this option if you want to prevent the wordpress registration email from going out when a user anonymously books an event." +msgstr "Marque esta opção se você quiser evitar o email de inscrição wordpress de sair quando um usuário anônimo livros um evento." + +#: admin/em-options.php:453 +msgid "Contact person booking confirmed" +msgstr "Reserva confirmada pessoa de contato" + +#: admin/em-options.php:454 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "Um e-mail será enviado para o contato evento quando a reserva for feita pela primeira vez." + +#: admin/em-options.php:456 +msgid "Contact person email subject" +msgstr "Contactar a pessoa de e-mail" + +#: admin/em-options.php:457 +msgid "Contact person email" +msgstr "E-mail de contato pessoa" + +#: admin/em-options.php:459 +msgid "Contact person booking cancelled" +msgstr "Pessoa de contacto reserva cancelada" + +#: admin/em-options.php:460 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Um e-mail será enviado para o contato evento se alguém cancela sua reserva." + +#: admin/em-options.php:462 +msgid "Contact person cancellation subject" +msgstr "Contactar a pessoa de cancelamento" + +#: admin/em-options.php:463 +msgid "Contact person cancellation email" +msgstr "De e-mail de cancelamento pessoa" + +#: admin/em-options.php:465 +msgid "Confirmed booking email" +msgstr "E-mail reserva confirmada" + +#: admin/em-options.php:466 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Este é enviado no momento da reserva de uma pessoa é confirmada. Este será enviado automaticamente se as aprovações são necessárias e a reserva for aprovado. Se aprovações são deficientes, este é enviado quando um usuário submete sua primeira reserva." + +#: admin/em-options.php:468 +msgid "Booking confirmed email subject" +msgstr "Reservas sujeitas e-mail confirmado" + +#: admin/em-options.php:469 +msgid "Booking confirmed email" +msgstr "Reservas e-mail confirmado" + +#: admin/em-options.php:471 +msgid "Pending booking email" +msgstr "E-mail reserva pendente" + +#: admin/em-options.php:472 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Esta será enviada para a pessoa quando pela primeira vez apresentar a sua reserva. Não é relevante se as reservas não precisam de aprovação." + +#: admin/em-options.php:474 +msgid "Booking pending email subject" +msgstr "Reserva assunto do email pendentes" + +#: admin/em-options.php:475 +msgid "Booking pending email" +msgstr "Reserva de e-mail pendentes" + +#: admin/em-options.php:477 +msgid "Rejected booking email" +msgstr "E-mail reserva rejeitado" + +#: admin/em-options.php:478 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Este será enviado automaticamente quando a reserva for rejeitada. Não é relevante se as reservas não precisam de aprovação." + +#: admin/em-options.php:480 +msgid "Booking rejected email subject" +msgstr "Reserva rejeitado assunto do email" + +#: admin/em-options.php:480 +msgid "The subject of the email sent to the person making a booking that is awaiting administrator approval. Not relevant if bookings don't require approval." +msgstr "O assunto do e-mail enviado para a pessoa fazer uma reserva que está aguardando aprovação do administrador. Não é relevante se as reservas não precisam de aprovação." + +#: admin/em-options.php:481 +msgid "Booking rejected email" +msgstr "Reserva rejeitada e-mail" + +#: admin/em-options.php:481 +msgid "The body of the email which will be sent to the person if the booking is rejected. Not relevant if bookings don't require approval." +msgstr "O corpo do e-mail que será enviado para a pessoa se a reserva for rejeitada. Não é relevante se as reservas não precisam de aprovação." + +#: admin/em-options.php:485 +msgid "This will be sent when a user cancels their booking." +msgstr "Este será enviado quando o usuário cancela a sua reserva." + +#: admin/em-options.php:487 +msgid "Booking cancelled email subject" +msgstr "Reserva assunto do email cancelado" + +#: admin/em-options.php:488 +msgid "Booking cancelled email" +msgstr "Reserva de e-mail cancelado" + +#: admin/em-options.php:496 +msgid "Email Settings" +msgstr "Configurações de e-mail" + +#: admin/em-options.php:500 +msgid "Notification sender name" +msgstr "Notificação nome do remetente" + +#: admin/em-options.php:500 +msgid "Insert the display name of the notification sender." +msgstr "Insira o nome de exibição do remetente notificação." + +#: admin/em-options.php:501 +msgid "Notification sender address" +msgstr "Notificação endereço do remetente" + +#: admin/em-options.php:501 +msgid "Insert the address of the notification sender." +msgstr "Insira o endereço do remetente notificação." + +#: admin/em-options.php:502 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "A porta através da qual você e-mail serão enviadas notificações. Verifique se o firewall não bloqueia esta porta" + +#: admin/em-options.php:503 +msgid "Mail sending method" +msgstr "Método de envio de email" + +#: admin/em-options.php:503 +msgid "PHP mail function" +msgstr "PHP função mail" + +#: admin/em-options.php:503 +msgid "Select the method to send email notification." +msgstr "Selecione o método para enviar email de notificação." + +#: admin/em-options.php:504 +msgid "Use SMTP authentication?" +msgstr "Usar a autenticação SMTP?" + +#: admin/em-options.php:504 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "Autenticação SMTP é muitas vezes necessário. Se você usa GMail, certifique-se definir esse parâmetro como Sim" + +#: admin/em-options.php:505 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "O host SMTP. Normalmente, corresponde a 'localhost'. Se você usa GMail, defina este valor para 'ssl://smtp.gmail.com: 465'." + +#: admin/em-options.php:506 +msgid "SMTP username" +msgstr "SMTP nome de usuário" + +#: admin/em-options.php:506 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Insira o nome de usuário para ser usado para acessar o seu servidor SMTP." + +#: admin/em-options.php:507 +msgid "SMTP password" +msgstr "SMTP password" + +#: admin/em-options.php:507 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Inserir a senha para ser usado para acessar o seu servidor SMTP" + +#: admin/em-options.php:515 +msgid "Images size" +msgstr "Tamanho das imagens" + +#: admin/em-options.php:519 +msgid "Maximum width (px)" +msgstr "Largura máxima (px)" + +#: admin/em-options.php:519 +msgid "The maximum allowed width for images uploades" +msgstr "A largura máxima permitida para uploades imagens" + +#: admin/em-options.php:520 +msgid "Maximum height (px)" +msgstr "Altura máxima (px)" + +#: admin/em-options.php:520 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "A altura máxima permitida para o upload de imagens, em pixels" + +#: admin/em-options.php:521 +msgid "Maximum size (bytes)" +msgstr "Tamanho máximo (bytes)" + +#: admin/em-options.php:521 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "O tamanho máximo permitido para upload de imagens, em bytes" + +#: admin/em-options.php:529 +msgid "User Capabilities" +msgstr "Capacidades de usuário" + +#: admin/em-options.php:533 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Atenção: Alterar esses valores pode resultar em exposição de informações anteriormente oculto a todos os usuários." + +#: admin/em-options.php:540 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Agora você pode dar o controle refinado no que diz respeito ao que os usuários podem ver com os acontecimentos. Cada função de usuário pode ter executar diferentes conjuntos de ações." + +#: admin/em-options.php:548 +msgid "Users can publish events and skip any admin approval." +msgstr "Os usuários podem publicar eventos e ignorar qualquer aprovação do administrador." + +#: admin/em-options.php:549 +msgid "User can edit the global categories." +msgstr "Usuário pode editar as categorias global." + +#: admin/em-options.php:550 +msgid "User can delete other users events." +msgstr "Usuário pode excluir eventos de outros usuários." + +#: admin/em-options.php:551 +msgid "User can delete other users locations." +msgstr "O usuário pode excluir locais de outros usuários." + +#: admin/em-options.php:552 +msgid "User can edit other users locations." +msgstr "Usuário pode editar outras localidades usuários." + +#: admin/em-options.php:553 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "Usuário pode gerenciar outros usuários reservas individuais e configurações reserva evento." + +#: admin/em-options.php:554 +msgid "User can edit other users events." +msgstr "Usuário pode editar eventos de outros usuários." + +#: admin/em-options.php:555 +msgid "User can delete their own locations." +msgstr "Usuário pode excluir seus próprios locais." + +#: admin/em-options.php:556 +msgid "User can delete their events." +msgstr "Usuário pode excluir seus eventos." + +#: admin/em-options.php:557 +msgid "User can edit their locations." +msgstr "Usuário pode editar suas localizações." + +#: admin/em-options.php:558 +msgid "User can use and manage bookings with their events." +msgstr "O usuário pode usar e gerenciar reservas com os seus eventos." + +#: admin/em-options.php:559 +msgid "User can view other users locations, to make locations shared by all users allow all event user roles to view all locations." +msgstr "O usuário pode visualizar a localização dos outros usuários, para tornar locais compartilhados por todos os usuários permitir que todas as funções de usuário evento para ver todos os locais." + +#: admin/em-options.php:560 +msgid "User can create recurrent events." +msgstr "Usuário pode criar eventos recorrentes." + +#: admin/em-options.php:561 +msgid "User can create and edit their events." +msgstr "Usuário pode criar e editar seus eventos." + +#: admin/em-options.php:593 +msgid "Anonymous Event Submission" +msgstr "Submission evento anônimos" + +#: admin/em-options.php:597 +msgid "You can allow users to publicly submit events on your blog by using the [event_form] shortcode, and enabling anonymous submissions below." +msgstr "Você pode permitir que os usuários publicamente apresentar eventos em seu blog usando o [event_form] shortcode, e permitindo contribuições anônimas abaixo." + +#: admin/em-options.php:600 +msgid "Allow anonymous event submissions?" +msgstr "Permitem submissões de eventos anônimo?" + +#: admin/em-options.php:600 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Gostaria de permitir que os usuários enviem reservas anonimamente? Se sim, você pode usar o novo [event_form] shortcode ou em_event_form() template tag com este habilitado." + +#: admin/em-options.php:601 +msgid "Guest Default User" +msgstr "Default User Guest" + +#: admin/em-options.php:601 +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that." +msgstr "Eventos exigem um usuário para eles próprios. A fim de permitir eventos a serem apresentados de forma anónima é necessário atribuir esse evento um usuário específico. Nós recomendamos que você crie um assinante \"Anonymous\" com uma senha muito bom e usar isso." + +#: admin/em-options.php:602 +msgid "Success Message" +msgstr "Mensagem de sucesso" + +#: admin/em-options.php:602 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Submitters anônimo não pode ver ou modificar o seu evento, uma vez submetido. Você pode personalizar a mensagem de sucesso que vê aqui." + +#: admin/em-docs.php:15 +msgid "Do a search for this string within event name, details and location address." +msgstr "Fazer uma pesquisa para esta cadeia dentro de nome do evento, detalhes e endereço do local." + +#: admin/em-docs.php:16 +msgid "See the events lists limit option on the settings page." +msgstr "Veja os eventos opção de limite de listas na página de configurações." + +#: admin/em-docs.php:17 +#: admin/em-docs.php:23 +msgid "Choose what fields to order your results by. You can supply a single field or multiple comma-seperated fields (e.g. \"start_date,name\")." +msgstr "Escolher quais campos para ordenar os seus resultados por. Você pode fornecer um campo único ou múltiplo por vírgula seperated campos (por exemplo, \"start_date nome\")." + +#: admin/em-docs.php:17 +#: admin/em-docs.php:18 +msgid "See the event lists ordering option on the settings page." +msgstr "Veja a lista de eventos ordenação opção na página de configurações." + +#: admin/em-docs.php:21 +msgid "If set to 1 will only show locations that have at least one event occurring during the scope." +msgstr "Se definido como 1 só vai mostrar os locais que têm pelo menos um evento que ocorre durante o escopo." + +#: admin/em-docs.php:22 +msgid "If set to 1 will only show locations that have no events occurring during the scope." +msgstr "Se definido como 1 só vai mostrar os locais que não têm eventos que ocorrem durante o escopo." + +#: admin/em-docs.php:25 +msgid "Search for locations in this town (no partial matches, case sensitive)." +msgstr "Procura de locais na cidade (sem resultados parciais caso, sensíveis)." + +#: admin/em-docs.php:25 +#: admin/em-docs.php:26 +#: admin/em-docs.php:27 +#: admin/em-docs.php:28 +#: admin/em-docs.php:29 +msgid "none" +msgstr "nenhum" + +#: admin/em-docs.php:26 +msgid "Search for locations in this state (no partial matches, case sensitive)." +msgstr "Procura de locais neste estado (sem resultados parciais caso, sensíveis)." + +#: admin/em-docs.php:27 +msgid "Search for locations in this region (no partial matches, case sensitive)." +msgstr "Procurar locais nesta região (sem resultados parciais caso, sensíveis)." + +#: admin/em-docs.php:28 +msgid "Search for locations in this country (no partial matches, case sensitive)." +msgstr "Procura de locais no país (sem resultados parciais caso, sensíveis)." + +#: admin/em-docs.php:29 +msgid "Search for locations in this postcode (no partial matches, case sensitive)." +msgstr "Procura de locais neste código postal (sem resultados parciais caso, sensíveis)." + +#: admin/em-docs.php:32 +msgid "If set to 1 it will display a full calendar that shows event names." +msgstr "Se configurado com 1 ele irá mostrar um calendário completo que mostra nomes de eventos." + +#: admin/em-docs.php:33 +msgid "If set to 1, will show events that last longer than a day." +msgstr "Se definido como 1, vai mostrar os eventos que duram mais de um dia." + +#: admin/em-docs.php:34 +msgid "Same as for events." +msgstr "Mesmo que para eventos." + +#: admin/em-docs.php:39 +msgid "Limits the amount of values returned to this number." +msgstr "Limita a quantidade de valores retornados para este número." + +#: admin/em-docs.php:40 +msgid "Choose the time frame of events to show. Accepted values are \"future\", \"past\" or \"all\" events. Additionally you can supply dates (in format of YYYY-MM-DD), either single for events on a specific date or two dates seperated by a comma (e.g. 2010-12-25,2010-12-31) for events ocurring between these dates." +msgstr "Escolha o período de tempo de eventos para mostrar. Os valores aceitos são \"future\", \"past\" ou \"all\" os eventos. Além disso, você pode fornecer datas (no formato de AAAA-MM-DD), seja único para eventos em uma data específica ou duas datas separadas por uma vírgula (por exemplo, 2010-12-25,2010-12-31) para eventos ocorrendo entre estes datas." + +#: admin/em-docs.php:41 +msgid "Indicates the order of the events. Choose between ASC (ascending) and DESC (descending)." +msgstr "Indica a ordem dos eventos. Escolher entre ASC (ascendente) e DESC (descendente)." + +#: admin/em-docs.php:42 +msgid "Choose what fields to order your results by. You can supply a single field or multiple comma-seperated fields (e.g. \"start_date,name\"). See specific instances (e.g. events, locations, etc.) for field names." +msgstr "Escolher quais campos para ordenar os seus resultados por. Você pode fornecer um campo único ou múltiplo por vírgula seperated campos (por exemplo, \"start_date nome\"). Veja casos específicos (por exemplo, eventos, locais, etc) para nomes de campo." + +#: admin/em-docs.php:43 +msgid "If you are displaying some information with the shortcode or function (e.g. listing events), you can supply the html and placeholders here." +msgstr "Se você está exibindo algumas informações com o shortcode ou função (eventos de listagem, por exemplo), você pode fornecer o html e espaços reservados aqui." + +#: admin/em-docs.php:43 +msgid "The relevant default format will be taken from the settings page." +msgstr "O formato padrão pertinentes serão tomadas a partir da página de configurações." + +#: admin/em-docs.php:44 +msgid "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the search to events with these id(s)." +msgstr "Fornecer um ID único ou por vírgula seperated ids (por exemplo, \"1,2,3\") para limitar a pesquisa a eventos com estas id (s)." + +#: admin/em-docs.php:45 +msgid "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the search to events in these categories." +msgstr "Fornecer um ID único ou por vírgula seperated ids (por exemplo, \"1,2,3\") para limitar a pesquisa a eventos nessas categorias." + +#: admin/em-docs.php:46 +msgid "Supply a single id or comma-seperated ids to limit the search to these locations (or events in these locations)." +msgstr "Fornecer um ID único ou por vírgula seperated ids para limitar a busca a esses locais (ou eventos nesses locais)." + +#: admin/em-docs.php:47 +msgid "For example, if you have ten results, if you set this to 5, only the last 5 results will be returned. Useful for pagination." +msgstr "Por exemplo, se você tem dez resultados, se você definir essa a 5, apenas os últimos 5 resultados serão devolvidos. Útil para a paginação." + +#: admin/em-docs.php:48 +msgid "If set to 1, will show only events that are recurring (i.e. events that are repeated over different dates)." +msgstr "Se definido como 1, vai mostrar apenas os eventos que são recorrentes (ou seja, eventos que se repetem ao longo datas diferentes)." + +#: admin/em-docs.php:49 +msgid "If set to 1, will only show recurring event templates. Only useful if you know what you're doing, use recurrence if you want events that are recurrences." +msgstr "Se definido como 1, só vai mostrar modelos evento recorrente. Somente útil se você sabe o que está fazendo, use recorrência se você quiser eventos que são as recorrências." + +#: admin/em-docs.php:50 +msgid "If set to a month (1 to 12) only events that start or end during this month/year will be retured. Must be used in conjunction with year and does not work as intended if used with scope." +msgstr "Se definido como um mês (1 a 12) apenas os eventos que começam ou terminam neste mês / ano serão retured. Deve ser usado em conjunto com o ano e não funciona como esperado se usado com escopo." + +#: admin/em-docs.php:51 +msgid "If set to a year (e.g. 2010) only events that start or end during this year/month will be returned. Does not work as intended if used with scope." +msgstr "Se definido para um ano (por exemplo, 2010) apenas os eventos que começam ou terminam durante este ano / mês serão devolvidos. Não funciona como esperado se usado com escopo." + +#: admin/em-docs.php:52 +msgid "If you supply this as an argument, the returned data will be in an array, no objects (only useful wen using PHP, not shortcodes)" +msgstr "Se você fornecer isso como um argumento, os dados retornados serão em uma matriz, nenhum objeto (apenas wen úteis usando PHP, não shortcodes)" + +#: admin/em-docs.php:53 +msgid "When using a function or shortcode that outputs items (e.g. [events_list] for events, [locations_list] for locations), if the number of items supercede the limit of items to show, setting this to 1 will show page links under the list." +msgstr "Ao usar uma função ou shortcode que as saídas de itens (por exemplo, [events_list] para eventos, [locations_list] para locais), se o número de itens superam o limite de itens a serem mostrados, definindo-o para um irá mostrar links de páginas na lista." + +#: admin/em-docs.php:60 +msgid "Displays the name of the event." +msgstr "Exibe o nome do evento." + +#: admin/em-docs.php:61 +msgid "Shows the description of the event." +msgstr "Mostra a descrição do evento." + +#: admin/em-docs.php:62 +msgid "If you added a more tag to your event description, only the content before this tag will show (currently, no read more link is added)." +msgstr "Se você adicionou um tag mais à sua descrição do evento, apenas o conteúdo antes de essa marca vai mostrar (atualmente, não leia mais ligação é adicionado)." + +#: admin/em-docs.php:63 +msgid "Shows the event corresponding ID number in the database table." +msgstr "Mostra o evento número de identificação correspondente na tabela de banco de dados." + +#: admin/em-docs.php:64 +#: admin/em-docs.php:133 +msgid "Shows the event image, if available." +msgstr "Mostra a imagem do evento, se disponível." + +#: admin/em-docs.php:70 +msgid "Displays the start time in a 24 hours format (e.g. 16:30)." +msgstr "Exibe o horário de início no formato de 24 horas (por exemplo 16:30)." + +#: admin/em-docs.php:71 +msgid "Displays the end time in a 24 hours format (e.g. 18:30)." +msgstr "Exibe o tempo final em um formato de 24 horas (por exemplo 18:30)." + +#: admin/em-docs.php:72 +msgid "Displays the start time in a 12 hours format (e.g. 4:30 PM)." +msgstr "Exibe a hora de início em um formato de 12 horas (por exemplo, 4:30 PM)." + +#: admin/em-docs.php:73 +msgid "Displays the end time in a 12 hours format (e.g. 6:30 PM)." +msgstr "Exibe o tempo final em um formato de 12 horas (por exemplo, 6:30)." + +#: admin/em-docs.php:77 +msgid "Events Manager allows extremely flexible date formatting by using PHP date syntax format characters along with placeholders." +msgstr "Gerente de eventos permite a formatação da data extremamente flexível usando PHP date caracteres de formato de sintaxe , juntamente com espaços reservados." + +#: admin/em-docs.php:79 +msgid "Prepend # or #@ before a valid PHP date syntax format character to show start and end date/time information respectively (e.g. #F will show the starting month name like \"January\", #@h shows the end hour)." +msgstr "Prepend # ou #@ antes de uma data válida PHP caráter formato de sintaxe para mostrar de início e término de data / hora, respectivamente, informações (por exemplo, #F mostrará o nome do mês de início como \"Janeiro\", # @ h mostra a hora final)." + +#: admin/em-docs.php:80 +msgid "" +"You can also create a date format without prepending # to each character by wrapping a valid php date() format in #{} or #@{} (e.g. #_{d/m/Y}). If there is no end date (or is same as start date), the value is not shown. This is useful if you want to show event end dates only on events that are longer than on day, e.g. #j #M #Y #@_{ u\n" +"\til j M Y}." +msgstr "" +"Você também pode criar um formato de data sem prepending # para cada personagem envolvendo uma data válida php () formato em #{} ou #@{} (por exemplo, #_{d/m/Y} ). Se não há uma data final (ou é a mesma data de início), o valor não é mostrado. Isto é útil se você quer mostrar end evento datas somente em eventos que são mais do que no dia, por exemplo, #j #M #Y #@_{ u\n" +"\tilj MY} ." + +#: admin/em-docs.php:85 +msgid "Simply prints the event URL. You can use this placeholder to build your own customised links." +msgstr "Simplesmente imprime a URL do evento. Você pode usar este espaço reservado para construir seus próprios links personalizados." + +#: admin/em-docs.php:86 +#: admin/em-docs.php:134 +msgid "Shows the event image url, if available." +msgstr "Mostra a url imagem do evento, se disponível." + +#: admin/em-docs.php:87 +msgid "Displays the event name with a link to the event page." +msgstr "Exibe o nome do evento com um link para a página do evento." + +#: admin/em-docs.php:88 +msgid "Inserts a link to the admin or buddypress (if activated) edit event page, only if a user is logged in and is allowed to edit the event." +msgstr "Insere um link para o administrador ou BuddyPress (se ativado) editar página do evento, somente se o usuário está logado e tem permissão para editar o evento." + +#: admin/em-docs.php:89 +msgid "Inserts a url to the admin or buddypress (if activated) edit event page, only if a user is logged in and is allowed to edit the event." +msgstr "Insere uma url para o administrador ou BuddyPress (se ativado) editar página do evento, somente se o usuário está logado e tem permissão para editar o evento." + +#: admin/em-docs.php:93 +msgid "Events Manager allows you to create dynamic attributes to your events, which act as extra information fields for your events (e.g. \"Dress Code\"). For more information see our online documentation for more info on attributes." +msgstr "Gerente de eventos permite-lhe criar atributos dinâmicos para seus eventos, que funcionam como campos de informação extra para seus eventos (por exemplo, \"Dress Code\"). Para mais informações, consulte a nossa documentação on-line para mais informações sobre atributos." + +#: admin/em-docs.php:95 +msgid "This key will appear as an option when adding attributes to your event." +msgstr "Esta chave irá aparecer como uma opção ao adicionar atributos ao seu evento." + +#: admin/em-docs.php:96 +msgid "This key will appear as an option when adding attributes to your event. The text in the second braces will appear if the attribute is not defined or left blank for that event." +msgstr "Esta chave irá aparecer como uma opção ao adicionar atributos ao seu evento. O texto no segundo aparelho aparecerá se o atributo não é definido ou deixado em branco para esse evento." + +#: admin/em-docs.php:97 +msgid "This key will appear as an option when adding attributes to your event. The second braces are optional and will use a select box with these values as input. If no valid value is defined, the first option is used." +msgstr "Esta chave irá aparecer como uma opção ao adicionar atributos ao seu evento. As chaves são opcionais e segundo usará uma caixa de seleção com esses valores como entrada. Se nenhum valor válido é definido, a primeira opção é usada." + +#: admin/em-docs.php:101 +msgid "These placeholders will only show if RSVP is enabled for the given event and in the events manager settings page. Spaces placeholders will default to 0" +msgstr "Esses espaços reservados serão exibidos apenas se RSVP é habilitado para o determinado evento e na página de configurações eventos gerente. Espaços reservados espaços será o padrão para 0" + +#: admin/em-docs.php:103 +msgid "Adds a booking forms for this event." +msgstr "Adiciona uma forma de reserva para este evento." + +#: admin/em-docs.php:104 +msgid "Shows available spaces for the event." +msgstr "Mostra os espaços disponíveis para o evento." + +#: admin/em-docs.php:105 +msgid "Shows the amount of currently booked spaces for the event." +msgstr "Mostra a quantidade de espaços actualmente reservado para o evento." + +#: admin/em-docs.php:106 +msgid "Shows the amount of pending spaces for the event." +msgstr "Mostra a quantidade de espaços pendentes para o evento." + +#: admin/em-docs.php:107 +msgid "Shows the total spaces for the event." +msgstr "Mostra o total de espaços para o evento." + +#: admin/em-docs.php:108 +msgid "Shows the list of user avatars attending events." +msgstr "Mostra a lista de avatares usuário participar de eventos." + +#: admin/em-docs.php:109 +msgid "A single button that will appear to logged in users, if they click on it, they apply for a booking. This button will only display if there is one ticket." +msgstr "Um único botão que aparecerá para usuários logados, se clicar sobre ele, se candidatam a uma reserva. Este botão só vai mostrar se há um bilhete." + +#: admin/em-docs.php:110 +msgid "Shows the url to the admin or buddypress (if activated) bookings management page for this event. Only shown if user is logged in and able to manage bookings." +msgstr "Mostra o url para o administrador ou BuddyPress (se ativado) página de gerenciamento de reservas para este evento. Só aparece se o usuário está logado e capaz de gerenciar reservas." + +#: admin/em-docs.php:111 +msgid "Shows a link to the admin or buddypress (if activated) bookings management page for this event. Only shown if user is logged in and able to manage bookings." +msgstr "Mostra um link para o administrador ou BuddyPress (se ativado) página de gerenciamento de reservas para este evento. Só aparece se o usuário está logado e capaz de gerenciar reservas." + +#: admin/em-docs.php:115 +msgid "The values here are taken from the chosen contact for the specific event, or the default contact in the settings page." +msgstr "Os valores aqui são tomadas a partir do contato escolhido para o evento específico, ou o contato padrão na página de configurações." + +#: admin/em-docs.php:117 +msgid "Name of the contact person for this event (as shown in the dropdown when adding an event)." +msgstr "Nome da pessoa de contato para este evento (como mostrado na lista suspensa ao adicionar um evento)." + +#: admin/em-docs.php:118 +msgid "Contact person's username." +msgstr "Fale nome da pessoa." + +#: admin/em-docs.php:119 +msgid "E-mail of the contact person for this event." +msgstr "E-mail da pessoa de contato para este evento." + +#: admin/em-docs.php:120 +msgid "Phone number of the contact person for this event. Can be set in the user profile page." +msgstr "Número de telefone da pessoa de contato para este evento. Pode ser definido na página de perfil de usuário." + +#: admin/em-docs.php:121 +msgid "Contact person's avatar." +msgstr "Fale avatar da pessoa." + +#: admin/em-docs.php:122 +msgid "Contact person's \"Profile\" link. Only works with BuddyPress enabled." +msgstr "Pessoa de contato do link \"Perfil\". Só funciona com BuddyPress habilitado." + +#: admin/em-docs.php:123 +msgid "Contact person's profile url. Only works with BuddyPress enabled." +msgstr "Fale url pessoa de perfil. Só funciona com BuddyPress habilitado." + +#: admin/em-docs.php:124 +msgid "Contact person's wordpress user ID." +msgstr "ID da pessoa de contato do usuário wordpress." + +#: admin/em-docs.php:131 +msgid "Shows the category name of the event." +msgstr "Mostra o nome da categoria do evento." + +#: admin/em-docs.php:132 +msgid "Shows the category ID of the event." +msgstr "Mostra o ID da categoria do evento." + +#: admin/em-docs.php:135 +#: admin/em-docs.php:151 +msgid "Shows the location description." +msgstr "Mostra a descrição do local." + +#: admin/em-docs.php:143 +msgid "Displays the location name." +msgstr "Exibe o nome do local." + +#: admin/em-docs.php:144 +msgid "Displays the address." +msgstr "Exibe o endereço." + +#: admin/em-docs.php:145 +msgid "Displays the town." +msgstr "Exibe a cidade." + +#: admin/em-docs.php:146 +msgid "Displays the state/county." +msgstr "Exibe o estado / município." + +#: admin/em-docs.php:147 +msgid "Displays the postcode." +msgstr "Exibe o código postal." + +#: admin/em-docs.php:148 +msgid "Displays the region." +msgstr "Exibe a região." + +#: admin/em-docs.php:149 +msgid "Displays the country." +msgstr "Exibe o país." + +#: admin/em-docs.php:150 +msgid "Displays a google map showing where the event is located (Will not show if maps are disabled in the settings page)" +msgstr "Exibe um mapa do google, mostrando onde o evento está localizado (não vai mostrar se os mapas estão desabilitados na página de configurações)" + +#: admin/em-docs.php:152 +msgid "If you added a more tag to your location description, only the content before this tag will show (currently, no read more link is added)." +msgstr "Se você adicionou um tag mais a sua descrição, localização apenas o conteúdo antes de essa marca vai mostrar (atualmente, não leia mais ligação é adicionado)." + +#: admin/em-docs.php:153 +msgid "Shows the location image." +msgstr "Mostra a imagem local." + +#: admin/em-docs.php:154 +msgid "Displays the location ID number." +msgstr "Exibe o número de identificação do local." + +#: admin/em-docs.php:159 +msgid "Simply prints the location URL. You can use this placeholder to build your own customised links." +msgstr "Simplesmente imprime a URL do local. Você pode usar este espaço reservado para construir seus próprios links personalizados." + +#: admin/em-docs.php:160 +msgid "Displays the location name with a link to the location page." +msgstr "Exibe o nome do local com um link para a página de localização." + +#: admin/em-docs.php:164 +msgid "You can show lists of other events that are being held at this location. The formatting of the list is the same as a normal events list." +msgstr "Você pode mostrar as listas de outros eventos que estão sendo realizadas neste local. A formatação da lista é o mesmo que uma lista de eventos normal." + +#: admin/em-docs.php:166 +msgid "Will show a list of all past events at this location." +msgstr "Irá mostrar uma lista de todos os acontecimentos do passado neste local." + +#: admin/em-docs.php:167 +msgid "Will show a list of all future events at this location." +msgstr "Irá mostrar uma lista de todos os eventos futuros neste local." + +#: admin/em-docs.php:168 +msgid "Will show a list of all events at this location." +msgstr "Irá mostrar uma lista de todos os eventos neste local." + +#: admin/em-docs.php:174 +msgid "When a specific booking is displayed (on screen and on email), you can use these placeholders to show specific information about the booking. For contact details of the contact of this event, see the events placeholders." +msgstr "Quando uma reserva específica é exibido (na tela e no e-mail), você pode usar esses espaços reservados para mostrar as informações específicas sobre a reserva. Para detalhes de contato do contato deste evento, ver os espaços reservados eventos." + +#: admin/em-docs.php:176 +msgid "Name of person who made the booking." +msgstr "Nome da pessoa que fez a reserva." + +#: admin/em-docs.php:177 +msgid "Email of person who made the booking." +msgstr "E-mail da pessoa que fez a reserva." + +#: admin/em-docs.php:178 +msgid "Phone number of person who made the booking." +msgstr "Número de telefone da pessoa que fez a reserva." + +#: admin/em-docs.php:179 +msgid "Number of spaces the person has booked." +msgstr "Número de espaços a pessoa tem reservado." + +#: admin/em-docs.php:180 +msgid "Any specific comments made by the person who made the booking." +msgstr "Quaisquer comentários específicos feitos pela pessoa que fez a reserva." + +#: admin/em-docs.php:181 +msgid "Name of the ticket booked. Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Nome do bilhete reservado. Útil no modo de bilhete único, se os bilhetes múltiplos são reservados com um bilhete aleatório é usado." + +#: admin/em-docs.php:182 +msgid "Description of the ticket booked. Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Descrição do bilhete reservado. Útil no modo de bilhete único, se os bilhetes múltiplos são reservados com um bilhete aleatório é usado." + +#: admin/em-docs.php:183 +msgid "Booked ticket price with currency symbol (e.g. $ 10.00). Useful in single ticket mode, if multiple tickets are booked a random ticket is used." +msgstr "Preço do bilhete reservado com o símbolo de moeda (por exemplo $ 10,00). Útil no modo de bilhete único, se os bilhetes múltiplos são reservados com um bilhete aleatório é usado." + +#: admin/em-docs.php:184 +msgid "A list of booked tickets. You can modify this by using template files and modifying templates/emails/bookingtickets.php" +msgstr "A lista de bilhetes reservados. Você pode modificar isso usando arquivos de modelo e modificar templates / emails / bookingtickets.php" + +#: admin/em-docs.php:188 +msgid "People are able to manage their bookings. Below are some placeholder which automatically provides correctly formatted urls" +msgstr "As pessoas são capazes de gerir as suas reservas. Abaixo estão algumas espaço reservado que fornece automaticamente urls formatado corretamente" + +#: admin/em-docs.php:190 +msgid "URL to page showing that users booked events." +msgstr "URL para a página mostrando que os usuários reservado eventos." + +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Plugin URI of the plugin/theme +#. #-#-#-#-# plugin.pot (Events Manager 4.0.83) #-#-#-#-# +#. Author URI of the plugin/theme +msgid "http://wp-events-plugin.com" +msgstr "http://wp-events-plugin.com" + +#. Description of the plugin/theme +msgid "Event registration and booking management for Wordpress. Recurring events, locations, google maps, rss, ical, booking registration and more!" +msgstr "Registro de eventos e gestão de reserva para Wordpress. Eventos recorrentes, locais, google maps, rss, iCal, o registro de reserva e muito mais!" + +#. Author of the plugin/theme +msgid "Marcus Sykes" +msgstr "Marcus Sykes" + diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-ru_RU.mo b/wp-content/plugins/events-manager/includes/langs/dbem-ru_RU.mo new file mode 100644 index 0000000..707a6d3 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-ru_RU.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-ru_RU.po b/wp-content/plugins/events-manager/includes/langs/dbem-ru_RU.po new file mode 100644 index 0000000..906c6db --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-ru_RU.po @@ -0,0 +1,6208 @@ +#@ dbem +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.171\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-09-20 20:44:48+00:00\n" +"PO-Revision-Date: 2012-02-13 16:01+0100\n" +"Last-Translator: Marcus Sykes \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" + +#: buddypress/bp-em-activity.php:48 +#, php-format +msgid "%s added the event %s" +msgstr "%s добавил Ñеминар %s." + +#: buddypress/bp-em-activity.php:86 +#, php-format +msgid "%s is attending %s." +msgstr "%s ÑобираетÑÑ Ð¿Ð¾Ñетить%s." + +#: buddypress/bp-em-activity.php:88 +#, php-format +msgid "%s will not be attending %s anymore." +msgstr "%s больше не ÑобираетÑÑ Ð¿Ð¾Ñетить %s." + +#: buddypress/bp-em-activity.php:94 +#, fuzzy, php-format +msgid "%s is attending %s of the group %s." +msgstr "%s ÑобираетÑÑ Ð¿Ð¾Ñетить%s." + +#: buddypress/bp-em-activity.php:96 +#, fuzzy, php-format +msgid "%s will not be attending %s of group %s anymore." +msgstr "%s больше не ÑобираетÑÑ Ð¿Ð¾Ñетить %s." + +#: admin/em-ms-options.php:165 +#: admin/em-options.php:397 +#: admin/em-options.php:435 +#: admin/em-options.php:850 +#: buddypress/bp-em-core.php:12 +#: buddypress/bp-em-core.php:51 +#: buddypress/bp-em-core.php:79 +#: buddypress/bp-em-core.php:147 +#: buddypress/bp-em-core.php:174 +#: buddypress/screens/profile.php:27 +#: em-actions.php:102 +#: em-install.php:336 +#: em-install.php:379 +#: em-install.php:429 +#: em-install.php:430 +#: em-install.php:454 +#: em-install.php:672 +#: em-posts.php:116 +#: em-posts.php:119 +#: em-posts.php:121 +#: em-template-tags.php:179 +#: widgets/em-events.php:13 +msgid "Events" +msgstr "Семинары" + +#: admin/em-options.php:1031 +#: em-functions.php:473 +msgid "Yes" +msgstr "Да" + +#: admin/em-options.php:1032 +#: em-functions.php:473 +msgid "No" +msgstr "Ðет" + +#: buddypress/bp-em-notifications.php:24 +#: buddypress/bp-em-notifications.php:26 +#: buddypress/bp-em-notifications.php:33 +#: buddypress/bp-em-notifications.php:35 +#: buddypress/bp-em-notifications.php:41 +#: buddypress/bp-em-notifications.php:43 +#: em-install.php:525 +#: em-install.php:709 +#: em-install.php:762 +msgid "My Bookings" +msgstr "Мои Заказы" + +#: buddypress/bp-em-notifications.php:24 +msgid "You have a pending booking" +msgstr "Ваш заказ ожидает проверки" + +#: buddypress/bp-em-notifications.php:26 +#, php-format +msgid "You have %s pending bookings" +msgstr "Ожидают проверки %s ваших заказа(ов)" + +#: buddypress/bp-em-notifications.php:33 +msgid "You have a confirmed booking" +msgstr "Ð’Ñ‹ подтвердили заказ" + +#: buddypress/bp-em-notifications.php:35 +#, php-format +msgid "You have %s confirmed bookings" +msgstr "Ð’Ñ‹ подтвердили %s заказа(ов)." + +#: buddypress/bp-em-notifications.php:41 +msgid "A user cancelled a booking" +msgstr "Пользователь отменил заказ билетов." + +#: buddypress/bp-em-notifications.php:43 +#, php-format +msgid "%s users cancelled bookings." +msgstr "%s пользователÑ(ей) отменили заказы." + +#: buddypress/bp-em-core.php:122 +#: buddypress/screens/my-locations.php:32 +msgid "My Locations" +msgstr "Мои меÑта" + +#: buddypress/screens/my-locations.php:49 +#: em-events.php:166 +#: em-posts.php:216 +msgid "Edit Location" +msgstr "Измененить меÑто" + +#: buddypress/screens/my-locations.php:47 +#: em-events.php:164 +#: em-posts.php:213 +msgid "Add Location" +msgstr "Добавить меÑто" + +#: buddypress/screens/group-events.php:20 +#: buddypress/screens/my-group-events.php:20 +msgid "Group Events" +msgstr "Семинары группы" + +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Ð’Ñ‹ проÑматриваете вашу общедоÑтупную Ñтраницу, Ñта Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ñ†Ð¸Ñ Ð²Ð¸Ð´Ð½Ð° оÑтальным пользователÑм." + +#: buddypress/bp-em-core.php:110 +#: buddypress/screens/my-events.php:32 +#: templates/buddypress/profile.php:6 +msgid "My Events" +msgstr "Мои Ñеминары" + +#: buddypress/screens/my-events.php:50 +#: em-events.php:153 +#: em-posts.php:125 +msgid "Edit Event" +msgstr "Редактировать Ñеминар" + +#: buddypress/screens/my-events.php:53 +#: em-events.php:156 +#: em-posts.php:122 +#: templates/buddypress/profile.php:19 +msgid "Add Event" +msgstr "Добавить Ñеминар" + +#: buddypress/bp-em-core.php:99 +#: buddypress/screens/attending.php:23 +#: templates/buddypress/profile.php:24 +msgid "Events I'm Attending" +msgstr "Семинары, которые Ñ ÑобираюÑÑŒ поÑетить" + +#: buddypress/bp-em-core.php:134 +#: buddypress/screens/my-bookings.php:30 +msgid "My Event Bookings" +msgstr "Мои заказы билетов" + +#: buddypress/bp-em-core.php:90 +msgid "My Profile" +msgstr "Мой профиль" + +#: em-posts.php:124 +#: em-posts.php:169 +#: em-posts.php:215 +#: templates/forms/event/bookings.php:86 +msgid "Edit" +msgstr "Редактировать" + +#: admin/bookings/em-events.php:101 +#: admin/bookings/em-pending.php:101 +#: admin/bookings/em-person.php:86 +#: admin/em-ms-options.php:162 +#: admin/em-options.php:293 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:858 +#: admin/em-options.php:920 +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#: admin/em-options.php:1364 +#: classes/em-event-posts-admin.php:163 +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-event.php:655 +#: classes/em-event.php:1159 +#: em-actions.php:102 +#: em-install.php:386 +#: em-install.php:416 +#: em-posts.php:120 +#: templates/forms/event-editor.php:12 +#: templates/templates/my-bookings.php:46 +msgid "Event" +msgstr "Семинар" + +#: templates/templates/ical.php:12 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Календарь" + +#: widgets/em-calendar.php:17 +msgid "Display your events in a calendar widget." +msgstr "Отображение ваших Ñобытий в виджете календарÑ." + +#: widgets/em-calendar.php:18 +msgid "Events Calendar" +msgstr "Календарь Ñобытий" + +#: widgets/em-calendar.php:60 +#: widgets/em-events.php:97 +#: widgets/em-locations.php:72 +msgid "Title" +msgstr "Ðазвание" + +#: widgets/em-calendar.php:64 +msgid "Show Long Events?" +msgstr "Показать длительные Ñеминары?" + +#: widgets/em-calendar.php:68 +#: widgets/em-events.php:145 +#, fuzzy +msgid "Category IDs" +msgstr "КатегориÑ" + +# @ dbem +#: widgets/em-calendar.php:70 +#: widgets/em-events.php:147 +msgid "1,2,3 or 2 (0 = all)" +msgstr "" + +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "МеÑта Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñеминаров" + +#: widgets/em-locations.php:24 +msgid "Display a list of event locations on Events Manager." +msgstr "Показать ÑпиÑок меÑÑ‚ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð² Events Manager." + +#: widgets/em-locations.php:49 +msgid "No locations" +msgstr "Ðет меÑÑ‚" + +#: widgets/em-locations.php:76 +msgid "Show number of locations" +msgstr "Показать чиÑло меÑÑ‚" + +#: widgets/em-locations.php:80 +msgid "Scope of the locations" +msgstr "Диапазон меÑÑ‚" + +#: widgets/em-locations.php:103 +msgid "Order of the locations" +msgstr "ПорÑдок меÑÑ‚" + +#: widgets/em-events.php:150 +#: widgets/em-locations.php:110 +msgid "List item format" +msgstr "Формат Ñлемента ÑпиÑка" + +#: widgets/em-events.php:22 +#: widgets/em-events.php:73 +#: widgets/em-events.php:159 +msgid "all events" +msgstr "вÑе Ñеминары" + +#: widgets/em-events.php:30 +msgid "Display a list of events on Events Manager." +msgstr "Показать ÑпиÑок Ñеминаров в Events Manager." + +#: widgets/em-events.php:70 +msgid "No events" +msgstr "Ðет Ñеминаров" + +#: widgets/em-events.php:101 +msgid "Number of events" +msgstr "КоличеÑтво Ñеминаров" + +#: widgets/em-events.php:106 +msgid "Scope" +msgstr "Диапазон" + +#: widgets/em-events.php:116 +#: widgets/em-locations.php:90 +msgid "Order By" +msgstr "УпорÑдочить по" + +#: widgets/em-events.php:25 +msgid "start date, start time, event name" +msgstr "дата начала, Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°, название ÑобытиÑ" + +#: widgets/em-events.php:26 +msgid "name, start date, start time" +msgstr "название, дата начала, Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°" + +#: widgets/em-events.php:27 +msgid "name, end date, end time" +msgstr "название, дата окончаниÑ, Ð²Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ" + +#: widgets/em-events.php:28 +msgid "end date, end time, event name" +msgstr "дата окончаниÑ, Ð²Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ, название Ñеминара" + +#: widgets/em-events.php:129 +msgid "Order" +msgstr "ПорÑдок" + +#: admin/em-options.php:476 +#: admin/em-options.php:479 +#: admin/em-options.php:530 +#: admin/em-options.php:627 +#: admin/em-options.php:630 +#: admin/em-options.php:677 +#: admin/em-options.php:680 +#: admin/em-options.php:767 +#: admin/em-options.php:770 +#: widgets/em-events.php:133 +#: widgets/em-locations.php:105 +msgid "Ascending" +msgstr "По возраÑтанию" + +#: admin/em-options.php:477 +#: admin/em-options.php:480 +#: admin/em-options.php:531 +#: admin/em-options.php:628 +#: admin/em-options.php:631 +#: admin/em-options.php:678 +#: admin/em-options.php:681 +#: admin/em-options.php:768 +#: admin/em-options.php:771 +#: widgets/em-events.php:134 +#: widgets/em-locations.php:106 +msgid "Descending" +msgstr "По убыванию" + +#: widgets/em-events.php:154 +msgid "Show all events link at bottom?" +msgstr "Показать ÑÑылку на вÑе Ñеминары внизу?" + +#: widgets/em-events.php:158 +msgid "All events link text?" +msgstr "ТекÑÑ‚ ÑÑылки на вÑе Ñеминары?" + +#: admin/bookings/em-events.php:14 +#: em-functions.php:160 +msgid "All events" +msgstr "Ð’Ñе Ñеминары" + +#: admin/bookings/em-events.php:15 +#: em-functions.php:161 +msgid "Future events" +msgstr "ПредÑтоÑщие Ñеминары" + +#: admin/bookings/em-events.php:13 +#: em-functions.php:162 +msgid "Past events" +msgstr "Прошедшие Ñеминары" + +#: em-functions.php:163 +msgid "Today's events" +msgstr "СегоднÑшние Ñеминары" + +#: em-functions.php:164 +msgid "Tomorrow's events" +msgstr "Завтрашние Ñеминары" + +#: em-functions.php:165 +msgid "Events this month" +msgstr "Семинары в Ñтом меÑÑце" + +#: em-functions.php:166 +msgid "Events next month" +msgstr "Семинары в Ñледующем меÑÑце" + +#: em-functions.php:167 +#, fuzzy +msgid "Events current and next month" +msgstr "Семинары в Ñледующем меÑÑце" + +#: em-functions.php:168 +msgid "Events within 2 months" +msgstr "Семинары в течение 2-Ñ… меÑÑцев" + +#: em-functions.php:169 +msgid "Events within 3 months" +msgstr "Семинары в течение 3-Ñ… меÑÑцев" + +#: em-functions.php:170 +msgid "Events within 6 months" +msgstr "Семинары в течение 6-ти меÑÑцев" + +#: em-functions.php:171 +msgid "Events within 12 months" +msgstr "Семинары в течение 12-ти меÑÑцев" + +#: em-functions.php:224 +msgid "Trying to perform an illegal action." +msgstr "Попытка выполнить незаконные дейÑтвиÑ." + +#: em-functions.php:296 +msgid "ERROR: Please enter a username." +msgstr "ОШИБКÐ: ПожалуйÑта, введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ." + +#: em-functions.php:298 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "ОШИБКÐ: Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑвлÑетÑÑ Ð½ÐµÐ´ÐµÐ¹Ñтвительным, поÑкольку оно Ñодержит недопуÑтимые Ñимволы. ПожалуйÑта, введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, ÑоответÑтвующее требованиÑм." + +#: em-functions.php:301 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "Ошибка: Пользователь Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже зарегиÑтрирован, пожалуйÑта, выберите другое." + +#: em-actions.php:270 +#: em-functions.php:306 +msgid "ERROR: Please type your e-mail address." +msgstr "ОШИБКÐ: ПожалуйÑта, введите Ñвой Ð°Ð´Ñ€ÐµÑ Ñлектронной почты." + +#: em-actions.php:273 +#: em-functions.php:308 +msgid "ERROR: The email address isn’t correct." +msgstr "ОШИБКÐ:Ðеправильный email." + +#: em-functions.php:311 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "ОШИБКÐ: Пользователь Ñ Ñ‚Ð°ÐºÐ¸Ð¼ email-адреÑом уже зарегиÑтрирован, пожалуйÑта, введите другой." + +#: em-functions.php:331 +#, php-format +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "ОШИБКÐ: Ðе удалоÑÑŒ зарегиÑтрировать Ð’Ð°Ñ ... пожалуйÑта, ÑвÑжитеÑÑŒ Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратором !" + +#: em-functions.php:366 +#, php-format +msgid "New user registration on your blog %s:" +msgstr "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² вашем блоге %s:" + +#: em-functions.php:367 +#, php-format +msgid "Username: %s" +msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:%s." + +#: em-functions.php:368 +#, php-format +msgid "E-mail: %s" +msgstr "ÐÐ´Ñ€ÐµÑ Ñлектронной почты:%s." + +#: em-functions.php:369 +#, php-format +msgid "[%s] New User Registration" +msgstr "[%s.] РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ пользователÑ" + +#: em-functions.php:380 +#, php-format +msgid "[%s] Your username and password" +msgstr "[%s.] Ваше Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль" + +#: classes/em-ticket.php:47 +msgid "Standard Ticket" +msgstr "Стандартный билет" + +#: classes/em-booking.php:134 +#: classes/em-ticket-booking.php:69 +#: classes/em-ticket.php:97 +msgid "Changes saved" +msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены" + +#: classes/em-ticket.php:102 +msgid "Ticket created" +msgstr "Билет Ñоздан" + +#: classes/em-ticket.php:105 +#: classes/em-ticket.php:106 +#: classes/em-ticket.php:111 +#: classes/em-ticket.php:112 +msgid "There was a problem saving the ticket." +msgstr "Возникла проблема при Ñохранении билета." + +#: classes/em-event.php:461 +#: classes/em-ticket-booking.php:113 +#: classes/em-ticket.php:161 +msgid "Missing fields: " +msgstr "ОтÑутÑтвуют полÑ:" + +#: classes/em-ticket.php:276 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "Ð’Ñ‹ не можете удалить билет, который забронирован." + +#: classes/em-location.php:106 +msgid "The location address" +msgstr "ÐÐ´Ñ€ÐµÑ Ð¼ÐµÑтонахождениÑ" + +#: classes/em-location.php:106 +msgid "The location town" +msgstr "Город" + +#: classes/em-location.php:106 +msgid "The country" +msgstr "Страна" + +#: classes/em-event.php:428 +#: classes/em-location.php:224 +#: classes/em-location.php:239 +#: classes/em-location.php:241 +msgid " is required." +msgstr "требуетÑÑ." + +#: admin/em-bookings.php:109 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:334 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:942 +#: admin/em-options.php:1382 +#: classes/em-event-posts-admin.php:95 +#: classes/em-event-posts-admin.php:214 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#: classes/em-location.php:618 +#: em-actions.php:180 +#: em-posts.php:211 +#: templates/buddypress/group-events.php:43 +#: templates/buddypress/my-group-events.php:43 +#: templates/forms/location-editor.php:32 +#: templates/tables/events.php:52 +msgid "Location" +msgstr "МеÑтоположение" + +#: admin/em-ms-options.php:173 +#: admin/em-options.php:654 +#: admin/em-options.php:944 +#: admin/em-options.php:945 +#: classes/em-location-post-admin.php:59 +#: classes/em-location.php:332 +#: classes/em-location.php:342 +#: templates/forms/location-editor.php:6 +msgid "location" +msgstr "меÑтоположение" + +#: classes/em-location.php:348 +#, php-format +msgid "You do not have permission to create/edit %s." +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° Ñоздание / редактирование %s." + +#: admin/em-ms-options.php:167 +#: admin/em-ms-options.php:172 +#: admin/em-ms-options.php:173 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:581 +#: admin/em-options.php:582 +#: admin/em-options.php:595 +#: admin/em-options.php:599 +#: admin/em-options.php:649 +#: admin/em-options.php:650 +#: admin/em-options.php:693 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: admin/em-options.php:1384 +#: admin/em-options.php:1385 +#: admin/em-options.php:1386 +#: admin/em-options.php:1387 +#: admin/em-options.php:1388 +#: admin/em-options.php:1389 +#: classes/em-location.php:348 +#: events-manager.php:309 +#: events-manager.php:310 +#: events-manager.php:311 +#: events-manager.php:312 +#: events-manager.php:313 +#: events-manager.php:314 +#: events-manager.php:315 +msgid "locations" +msgstr "меÑта" + +#: em-actions.php:104 +#, php-format +msgid "%s successfully deleted." +msgstr "%s уÑпешно удален." + +#: em-actions.php:107 +#, php-format +msgid "%s could not be deleted." +msgstr "%s не может быть удален." + +#: classes/em-booking.php:143 +#: classes/em-booking.php:144 +#: classes/em-booking.php:152 +#: classes/em-booking.php:163 +#: classes/em-booking.php:169 +#: classes/em-tickets-bookings.php:69 +#: classes/em-tickets-bookings.php:70 +msgid "There was a problem saving the booking." +msgstr "Возникла проблема при Ñохранении заказа" + +#: classes/em-tickets-bookings.php:99 +#: em-install.php:489 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "Заказ не может быть Ñделан, не хватает Ñвободных меÑÑ‚!" + +#: classes/em-tickets-bookings.php:163 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +#, php-format +msgid "You do not have the rights to manage this %s." +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на управление Ñтим %s." + +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#: classes/em-booking.php:414 +#: classes/em-booking.php:416 +#: classes/em-bookings.php:108 +#: classes/em-tickets-bookings.php:163 +msgid "Booking" +msgstr "Заказ" + +#: admin/em-bookings.php:154 +#: admin/em-bookings.php:215 +#: admin/em-options.php:616 +#: admin/em-options.php:666 +#: admin/em-options.php:756 +#: classes/em-person.php:76 +#: templates/buddypress/group-events.php:41 +#: templates/buddypress/my-group-events.php:41 +#: templates/forms/bookingform/booking-fields.php:10 +#: templates/forms/tickets-form.php:4 +#: templates/tables/events.php:50 +#: templates/tables/locations.php:34 +#: templates/tables/locations.php:43 +#: templates/templates/bookings-event-printable.php:24 +msgid "Name" +msgstr "ИмÑ" + +#: classes/em-person.php:77 +msgid "Email" +msgstr "Email" + +#: classes/em-people.php:28 +#: classes/em-person.php:78 +#: templates/forms/bookingform/booking-fields.php:14 +msgid "Phone" +msgstr "Телефон" + +#: classes/em-ticket-booking.php:78 +msgid "Ticket booking created" +msgstr "Бронирование билетов Ñоздано" + +#: classes/em-ticket-booking.php:85 +#: classes/em-ticket-booking.php:86 +#: classes/em-ticket-booking.php:91 +#: classes/em-ticket-booking.php:92 +msgid "There was a problem saving the ticket booking." +msgstr "Возникла проблема при Ñохранении Ð±Ñ€Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð¸Ð»ÐµÑ‚Ð¾Ð²." + +#: admin/em-options.php:744 +#: admin/em-options.php:973 +#: admin/em-options.php:974 +msgid "category" +msgstr "категориÑ" + +#: classes/em-bookings.php:108 +#, php-format +msgid "%s created." +msgstr "%s Ñоздан." + +#: classes/em-bookings.php:256 +#: classes/em-bookings.php:262 +#, php-format +msgid "Bookings %s. Mails Sent." +msgstr "Заказы %s. ПиÑьма отправлены." + +#: classes/em-bookings.php:266 +msgid "An error occurred." +msgstr "Произошла ошибка." + +#: admin/bookings/em-events.php:136 +#: classes/em-booking.php:100 +#: classes/em-event-posts-admin.php:139 +#: classes/em-event.php:244 +#: templates/buddypress/group-events.php:94 +#: templates/buddypress/my-group-events.php:88 +#: templates/tables/events.php:17 +#: templates/tables/events.php:97 +msgid "Pending" +msgstr "Ждет проверки" + +#: classes/em-booking.php:101 +#: classes/em-event.php:245 +msgid "Approved" +msgstr "Подтвержден" + +#: classes/em-booking.php:102 +msgid "Rejected" +msgstr "Отклонен" + +#: classes/em-booking.php:103 +#: em-actions.php:358 +msgid "Cancelled" +msgstr "Отменен" + +#: classes/em-booking.php:104 +msgid "Awaiting Online Payment" +msgstr "Ожидает онлайн-оплаты" + +#: classes/em-booking.php:105 +msgid "Awaiting Payment" +msgstr "Ожидает оплаты" + +#: classes/em-booking.php:139 +msgid "Your booking has been recorded" +msgstr "Ваш заказ был зарегиÑтрирован" + +#: classes/em-booking.php:165 +#: classes/em-booking.php:171 +#, php-format +msgid "You cannot manage this %s." +msgstr "Ð’Ñ‹ не можете управлÑть %s." + +#: classes/em-booking.php:222 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Ð’Ñ‹ пытаетеÑÑŒ заказать неÑущеÑтвующий билет на Ñтот Ñеминар" + +#: classes/em-booking.php:414 +#, php-format +msgid "%s deleted" +msgstr "%s удален" + +#: classes/em-booking.php:416 +#, php-format +msgid "%s could not be deleted" +msgstr "%s не может быть удален" + +#: classes/em-booking.php:462 +msgid "Not approved, spaces full." +msgstr "Ðе утвержден, нет меÑÑ‚." + +#: classes/em-booking.php:470 +#, php-format +msgid "Booking %s." +msgstr "Заказ билетов на %s." + +#: classes/em-booking.php:473 +msgid "Mail Sent." +msgstr "ПиÑьмо отправлено." + +#: classes/em-booking.php:476 +#: classes/em-booking.php:477 +msgid "ERROR : Mail Not Sent." +msgstr "ОШИБКÐ: пиÑьмо не отправлено." + +#: classes/em-booking.php:483 +#: classes/em-booking.php:484 +#, php-format +msgid "Booking could not be %s." +msgstr "Заказ не может быть %s." + +#: classes/em-booking.php:499 +msgid "Booking note successfully added." +msgstr "Примечание к заказу уÑпешно добавлено." + +#: classes/em-booking.php:636 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "Электронное пиÑьмо Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸ÐµÐ¼ не может быть отправлено контактному лицу. ЗарегиÑтрировавшийÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ был получить Ñвое пиÑьмо(только админиÑтратор видит Ñто Ñообщение)." + +#: classes/em-booking.php:643 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "Электронное пиÑьмо Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸ÐµÐ¼ не может быть отправлено админиÑтратору. ЗарегиÑтрировавшийÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ был получить Ñвое пиÑьмо (только админиÑтратор может видеть Ñто Ñообщение)." + +#: admin/em-options.php:971 +#: templates/buddypress/group-events.php:112 +#: templates/buddypress/my-group-events.php:106 +msgid "Category" +msgstr "КатегориÑ" + +#: admin/em-options.php:708 +#: admin/em-options.php:712 +#: admin/em-options.php:721 +#: admin/em-options.php:783 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: events-manager.php:318 +#: events-manager.php:319 +msgid "categories" +msgstr "категории" + +#: classes/em-tickets.php:98 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "Ð’Ñ‹ не можете удалÑть билеты, еÑли ecть любые заказы, ÑвÑзанные Ñ Ð½Ð¸Ð¼Ð¸. ПожалуйÑта, Ñначала удалите Ñти заказы." + +#: classes/em-tickets.php:124 +msgid "Standard" +msgstr "Стандартный" + +#: classes/em-people.php:19 +msgid "User deleted by administrators" +msgstr "Пользователь удален админиÑтраторами" + +#: classes/em-event-post-admin.php:37 +msgid "WARNING: This is a recurring event." +msgstr "ПРЕДУПРЕЖДЕÐИЕ: Это повторÑющееÑÑ Ñобытие." + +#: classes/em-event-post-admin.php:38 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ðº Ñтому Ñеминару повлекут удаление и Ñоздание заново вÑех повторов Ñтого Ñеминара и ÑущеÑтвующие заказы будут удалены! Ð’Ñ‹ можете редактировать отдельные ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¸ отделить их от Ñерии оÑтальных повторов Ñтого Ñеминара." + +#: classes/em-event-post-admin.php:41 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "ПРЕДУПРЕЖДЕÐИЕ: Этот Ñеминар ÑвлÑетÑÑ Ñ‡Ð°Ñтью поÑледовательноÑти повторÑющихÑÑ Ñобытий." + +#: classes/em-event-post-admin.php:48 +#, php-format +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "ПРЕДУПРЕЖДЕÐИЕ: Это Ñобытие принадлежит группе \"%s\". Другие админиÑтраторы группы также могут изменить Ñто Ñобытие." + +#: classes/em-event.php:617 +msgid "Something went wrong with the recurrence update..." +msgstr "Возникла ошибка Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ повторного ÑобытиÑ..." + +#: classes/em-event.php:617 +msgid "There was a problem saving the recurring events." +msgstr "Возникла проблема при Ñохранении повторÑющихÑÑ Ñобытий." + +#: classes/em-event.php:655 +#, php-format +msgid "%s successfully duplicated." +msgstr "%s уÑпешно копирован." + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:506 +#: admin/em-options.php:1395 +#: admin/em-options.php:1396 +#: classes/em-event-post-admin.php:85 +#: classes/em-event.php:582 +#: classes/em-event.php:594 +msgid "event" +msgstr "Ñеминар" + +#: classes/em-event.php:442 +msgid "Events cannot start after they end." +msgstr "Дата начала не может быть позже даты окончаниÑ." + +#: classes/em-event.php:447 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Даты должны иметь правильный формат. ПожалуйÑта, иÑпользуйте имеющееÑÑ ÑредÑтво выбора даты." + +#: classes/em-event.php:1255 +#: templates/forms/bookingform/ticket-single.php:21 +#: templates/forms/bookingform/tickets-list.php:28 +msgid "N/A" +msgstr "N / A" + +#: classes/em-event.php:1265 +msgid "Profile" +msgstr "Профиль" + +#: classes/em-event.php:1702 +msgid "Sunday" +msgstr "ВоÑкреÑенье" + +#: classes/em-event.php:1702 +msgid "Monday" +msgstr "Понедельник" + +#: classes/em-event.php:1702 +msgid "Tuesday" +msgstr "Вторник" + +#: classes/em-event.php:1702 +msgid "Wednesday" +msgstr "Среда" + +#: classes/em-event.php:1702 +msgid "Thursday" +msgstr "Четверг" + +#: classes/em-event.php:1702 +msgid "Friday" +msgstr "ПÑтница" + +#: classes/em-event.php:1702 +msgid "Saturday" +msgstr "Суббота" + +#: classes/em-event.php:1703 +#, php-format +msgid "the first %s of the month" +msgstr "первый(аÑ) %s меÑÑца" + +#: classes/em-event.php:1703 +#, php-format +msgid "the second %s of the month" +msgstr "второй(аÑ) %s меÑÑца" + +#: classes/em-event.php:1703 +#, php-format +msgid "the third %s of the month" +msgstr "третий(ÑŒÑ) %s меÑÑца" + +#: classes/em-event.php:1703 +#, php-format +msgid "the fourth %s of the month" +msgstr "четвертый(аÑ) %s меÑÑца" + +#: classes/em-event.php:1703 +#, php-format +msgid "the last %s of the month" +msgstr "поÑледний(ÑÑ) %s меÑÑца" + +#: classes/em-event.php:1704 +#, fuzzy, php-format +msgid "From %1$s to %2$s" +msgstr "С %1$S до %2$s." + +#: classes/em-event.php:1706 +msgid "everyday" +msgstr "ежедневно" + +#: classes/em-event.php:1708 +#, php-format +msgid "every %s days" +msgstr "каждые %s днÑ(ей)" + +#: classes/em-event.php:1717 +msgid "every week" +msgstr "еженедельно" + +#: classes/em-event.php:1719 +#, php-format +msgid "every %s weeks" +msgstr "каждые %s недели(ль)" + +#: classes/em-event.php:1730 +#, php-format +msgid "every %s months" +msgstr "каждые %s меÑÑца(ев)" + +#: classes/em-object.php:872 +msgid "The image file is too big! Maximum size:" +msgstr "Размер файла Ñлишком большой! МакÑимальный размер:" + +#: classes/em-object.php:877 +msgid "The image is too big! Maximum size allowed:" +msgstr "Изображение Ñлишком большое! МакÑимально допуÑтимый размер:" + +#: classes/em-object.php:880 +msgid "The image is in a wrong format!" +msgstr "формат Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹." + +#: classes/em-mailer.php:84 +msgid "Please supply a valid email format." +msgstr "ПожалуйÑта, укажите правильный формат Ñлектронной почты." + +#: admin/em-options.php:1201 +msgid "Booking cancelled" +msgstr "Бронирование ÑнÑто" + +#: em-actions.php:370 +msgid "You must log in to cancel your booking." +msgstr "Ð’Ñ‹ должны войти в ÑиÑтему, чтобы отменить Ñвой заказ." + +#: admin/em-bookings.php:251 +#: templates/forms/bookingform/tickets-list.php:8 +msgid "Ticket Type" +msgstr "Тип билета" + +#: admin/em-bookings.php:156 +#: admin/em-bookings.php:253 +#: templates/forms/bookingform/ticket-single.php:9 +#: templates/forms/bookingform/tickets-list.php:10 +#: templates/forms/event/bookings.php:30 +#: templates/forms/ticket-form.php:9 +#: templates/forms/tickets-form.php:6 +msgid "Price" +msgstr "Цена" + +#: admin/bookings/em-cancelled.php:87 +#: admin/bookings/em-confirmed.php:88 +#: admin/bookings/em-pending.php:105 +#: admin/bookings/em-person.php:87 +#: admin/bookings/em-rejected.php:87 +#: admin/em-bookings.php:157 +#: admin/em-bookings.php:252 +#: templates/forms/bookingform/ticket-single.php:15 +#: templates/forms/bookingform/tickets-list.php:12 +#: templates/forms/ticket-form.php:11 +#: templates/templates/bookings-event-printable.php:27 +#: templates/templates/my-bookings.php:48 +msgid "Spaces" +msgstr "МеÑта" + +#: admin/em-bookings.php:311 +#: templates/forms/bookingform/booking-fields.php:24 +#: templates/templates/bookings-event-printable.php:28 +msgid "Comment" +msgstr "Комментарий" + +#: templates/placeholders/bookingform.php:54 +msgid "Send your booking" +msgstr "Отправить заказ" + +#: templates/placeholders/bookingform.php:71 +msgid "No more tickets available at this time." +msgstr "Ðет больше билетов на данный момент." + +#: templates/forms/ticket-form.php:12 +msgid "If blank, there's no space limit." +msgstr "ЕÑли пуÑто, то ограничений по чиÑлу меÑÑ‚ нет" + +#: templates/forms/ticket-form.php:15 +msgid "Available from" +msgstr "ДоÑтупно Ñ " + +#: templates/forms/event/recurring-when.php:56 +#: templates/forms/event/recurring-when.php:63 +#: templates/forms/event/when-with-recurring.php:17 +#: templates/forms/event/when-with-recurring.php:18 +#: templates/forms/event/when-with-recurring.php:26 +#: templates/forms/event/when.php:11 +#: templates/forms/event/when.php:18 +#: templates/forms/ticket-form.php:18 +msgid "to" +msgstr "до" + +#: templates/forms/ticket-form.php:21 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Добавьте дату начала и/или окончаниÑ, чтобы наложить Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ времени на продажу билетов. Либо не заполнÑейте, еÑли верхнего/нижнего Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð½ÐµÑ‚." + +#: templates/forms/ticket-form.php:24 +msgid "Bookings must order between" +msgstr "Заказ должен бронировать от" + +#: templates/forms/ticket-form.php:26 +#: templates/templates/events-search.php:38 +msgid "and" +msgstr "до" + +#: templates/forms/ticket-form.php:28 +msgid "spaces." +msgstr "меÑÑ‚" + +#: templates/forms/ticket-form.php:29 +msgid "Leave either blank for no upper/lower limit." +msgstr "ОÑтавьте пуÑтым при отÑутÑтвии верхнего/нижнего ограничениÑ" + +#: admin/em-bookings.php:155 +#: templates/forms/ticket-form.php:32 +#: templates/forms/tickets-form.php:5 +msgid "Description" +msgstr "ОпиÑание" + +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:137 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:6 +msgid "Unauthorized Access" +msgstr "ÐеÑанкционированный доÑтуп" + +#: admin/em-ms-locations.php:39 +msgid "Add location" +msgstr "Добавить меÑтоположение" + +#: admin/em-ms-locations.php:42 +msgid "Edit location" +msgstr "Изменить меÑтоположение" + +#: templates/forms/location-editor.php:12 +msgid "required" +msgstr "требуетÑÑ" + +#: templates/forms/location-editor.php:23 +msgid "Location Name" +msgstr "Ðазвание меÑта" + +#: templates/forms/location-editor.php:28 +msgid "The name of the location" +msgstr "Ðазвание меÑта" + +#: templates/forms/location/where.php:4 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "ЕÑли вы иÑпользуете Google Maps, то чем больше подробноÑтей вы предоÑтавите, тем точнее Google определить ваше меÑтоположение. ЕÑли ваш Ð°Ð´Ñ€ÐµÑ Ð½Ðµ был найден, пожалуйÑта попробуйте найти его на maps.google.com добавлÑÑ Ð²Ñе приведенные ниже полÑ, разделенные запÑтыми." + +#: templates/forms/event/location.php:69 +#: templates/forms/location/where.php:8 +msgid "Address:" +msgstr "ÐдреÑ:" + +#: templates/forms/event/location.php:75 +#: templates/forms/location/where.php:14 +msgid "City/Town:" +msgstr "Город / наÑеленный пункт:" + +#: templates/forms/event/location.php:82 +#: templates/forms/location/where.php:20 +msgid "State/County:" +msgstr "ОблаÑть / Район:" + +#: templates/forms/event/location.php:89 +#: templates/forms/location/where.php:26 +msgid "Postcode:" +msgstr "ИндекÑ:" + +#: templates/forms/event/location.php:102 +#: templates/forms/location/where.php:39 +msgid "Country:" +msgstr "Страна:" + +#: templates/forms/event/location.php:105 +#: templates/forms/location/where.php:42 +msgid "none selected" +msgstr "не выбрано" + +#: templates/forms/event/location.php:122 +#: templates/forms/location/where.php:52 +msgid "Location not found" +msgstr "МеÑто не найдено" + +#: templates/forms/event-editor.php:99 +#: templates/forms/location-editor.php:39 +msgid "Details" +msgstr "Подробнее" + +#: templates/forms/location-editor.php:57 +msgid "No image uploaded for this location yet" +msgstr "Ð”Ð»Ñ Ñтого меÑта еще не загружено изображение" + +#: templates/forms/event-editor.php:172 +#: templates/forms/location-editor.php:60 +msgid "Upload/change picture" +msgstr "Добавить / изменить изображение" + +#: templates/forms/event-editor.php:174 +#: templates/forms/location-editor.php:62 +#, fuzzy +msgid "Delete Image?" +msgstr "Удалить" + +#: templates/forms/location-editor.php:71 +msgid "Update location" +msgstr "Обновить меÑтоположение" + +#: admin/bookings/em-cancelled.php:85 +#: admin/bookings/em-confirmed.php:86 +#: admin/bookings/em-pending.php:103 +#: admin/bookings/em-rejected.php:85 +#: templates/forms/bookingform/booking-fields.php:18 +#: templates/templates/bookings-event-printable.php:25 +msgid "E-mail" +msgstr "E-mail" + +#: templates/forms/bookingform/login.php:3 +msgid "Log in if you already have an account with us." +msgstr "Войдите в ÑиÑтему, еÑли у Ð²Ð°Ñ ÑƒÐ¶Ðµ еÑть ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ." + +#: templates/forms/bookingform/login.php:5 +msgid "Username" +msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" + +#: templates/forms/bookingform/login.php:9 +msgid "Password" +msgstr "Пароль" + +#: templates/forms/bookingform/login.php:13 +msgid "Log In" +msgstr "Войти" + +#: templates/forms/bookingform/login.php:14 +msgid "Remember Me" +msgstr "Запомнить менÑ" + +#: templates/forms/bookingform/login.php:29 +msgid "Sign Up" +msgstr "РегиÑтрациÑ" + +#: templates/forms/bookingform/login.php:33 +msgid "Password Lost and Found" +msgstr "Пароль забыт и воÑÑтановлен" + +#: templates/forms/bookingform/login.php:33 +msgid "Lost your password?" +msgstr "Забыли пароль?" + +#: admin/em-bookings.php:100 +#: templates/forms/event-editor.php:30 +msgid "Event Name" +msgstr "Ðазвание Ñеминара" + +#: templates/forms/event-editor.php:34 +msgid "The event name. Example: Birthday party" +msgstr "Ðазвание Ñеминара." + +#: templates/forms/event/group.php:23 +#: templates/forms/event-editor.php:60 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Выберите группу, в которой вы ÑвлÑетеÑÑŒ админиÑтратором, чтобы ÑвÑзать Ñ Ð½ÐµÐ¹ Ñтот Ñеминар. Обратите внимание, что вÑе другие админиÑтраторы Ñтой группы Ñмогут менÑть заказ, и вы не Ñможете удалить Ñобытие, не удалÑÑ ÐµÐ³Ð¾." + +#: classes/em-event-post-admin.php:177 +#: templates/forms/event-editor.php:66 +msgid "When" +msgstr "Когда" + +#: templates/forms/event/when.php:23 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Это Ñобытие повторÑетÑÑ ÐºÐ°Ð¶Ð´Ñ‹Ð¹ день от даты начала до даты окончаниÑ, Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°/Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑетÑÑ Ðº каждому дню." + +#: templates/forms/event/recurring-when.php:72 +#: templates/forms/event/when-with-recurring.php:78 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "Ð”Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑющегоÑÑ ÑобытиÑ, однодневное мероприÑтие будет Ñоздано Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ð´Ð½Ñ Ð²Ð½ÑƒÑ‚Ñ€Ð¸ временного промежутка." + +#: templates/forms/event/recurring-when.php:10 +#: templates/forms/event/when-with-recurring.php:32 +msgid "This event repeats" +msgstr "Это Ñобытие повторÑетÑÑ" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Daily" +msgstr "Ежедневно" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Weekly" +msgstr "Еженедельно" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Monthly" +msgstr "ЕжемеÑÑчно" + +#: templates/forms/event/recurring-when.php:17 +#: templates/forms/event/when-with-recurring.php:39 +msgid "every" +msgstr "каждый" + +#: templates/forms/event/recurring-when.php:20 +#: templates/forms/event/when-with-recurring.php:42 +msgid "day" +msgstr "день" + +#: templates/forms/event/recurring-when.php:22 +#: templates/forms/event/when-with-recurring.php:44 +msgid "days" +msgstr "дней" + +#: templates/forms/event/recurring-when.php:24 +#: templates/forms/event/when-with-recurring.php:46 +msgid "week on" +msgstr "неделю" + +#: templates/forms/event/recurring-when.php:26 +#: templates/forms/event/when-with-recurring.php:48 +msgid "weeks on" +msgstr "недель" + +#: templates/forms/event/recurring-when.php:28 +#: templates/forms/event/when-with-recurring.php:50 +msgid "month on the" +msgstr "меÑÑц" + +#: templates/forms/event/recurring-when.php:30 +#: templates/forms/event/when-with-recurring.php:52 +msgid "months on the" +msgstr "меÑÑцев" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "first" +msgstr "первый" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "second" +msgstr "второй" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "third" +msgstr "третий" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "fourth" +msgstr "четвертый" + +#: templates/forms/event/recurring-when.php:41 +#: templates/forms/event/when-with-recurring.php:64 +msgid "last" +msgstr "поÑледний" + +#: templates/forms/event/recurring-when.php:48 +#: templates/forms/event/when-with-recurring.php:71 +msgid "of each month" +msgstr "чиÑла каждого меÑÑца" + +#: classes/em-event-post-admin.php:179 +#: classes/em-event-post-admin.php:354 +#: classes/em-location-post-admin.php:109 +#: templates/forms/event-editor.php:93 +msgid "Where" +msgstr "Где" + +#: templates/forms/event/location.php:28 +msgid "Location:" +msgstr "МеÑто проведениÑ:" + +#: templates/forms/event/location.php:60 +msgid "Name:" +msgstr "ИмÑ:" + +#: templates/forms/event/location.php:64 +msgid "Create a location or start typing to search a previously created location." +msgstr "Создайте меÑто или начните печатать Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка ранее введенных меÑÑ‚." + +#: templates/forms/event/location.php:65 +msgid "You cannot edit saved locations here." +msgstr "Ð’Ñ‹ не можете редактировать Ñохраненные меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð´ÐµÑÑŒ." + +#: templates/forms/event/location.php:65 +msgid "Reset this form to create a location." +msgstr "Перезагрузите Ñту форму, чтобы Ñоздать меÑто." + +#: templates/forms/event/location.php:95 +#: templates/forms/location/where.php:32 +msgid "Region:" +msgstr "Регион:" + +#: templates/forms/event/location.php:110 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Заполнение Ñтого пункта первым позволит быÑтро найти ранее введенные штаты и облаÑти Ñтраны." + +#: templates/forms/event-editor.php:107 +msgid "Details about the event." +msgstr "ПодробноÑти о Ñеминаре." + +#: templates/forms/event-editor.php:107 +#: templates/forms/location-editor.php:47 +msgid "HTML Allowed." +msgstr "HTML разрешены." + +#: templates/forms/event-editor.php:116 +msgid "Category:" +msgstr "КатегориÑ:" + +#: templates/forms/event-editor.php:190 +msgid "Submit Event" +msgstr "Подтвердить Ñобытие" + +#: classes/em-event-post-admin.php:183 +#: classes/em-event-post-admin.php:356 +#: templates/forms/event-editor.php:180 +msgid "Bookings/Registration" +msgstr "Заказ/РегиÑтрациÑ" + +#: templates/forms/event/bookings.php:8 +msgid "Enable registration for this event" +msgstr "Включить региÑтрацию Ð´Ð»Ñ Ñтого ÑобытиÑ" + +#: templates/forms/event/booking-stats.php:21 +msgid "manage bookings" +msgstr "управление заказами" + +#: templates/forms/event/booking-stats.php:22 +msgid "printable view" +msgstr "верÑÐ¸Ñ Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸" + +#: admin/em-bookings.php:98 +#: templates/forms/event/booking-stats.php:23 +msgid "export csv" +msgstr "ÑкÑпорт CSV" + +#: templates/forms/event/bookings.php:23 +msgid "Tickets" +msgstr "Билеты" + +#: templates/forms/event/bookings.php:29 +msgid "Ticket Name" +msgstr "Ðазвание билета" + +#: templates/forms/event/bookings.php:31 +msgid "Min/Max" +msgstr "Min/Max" + +#: templates/forms/event/bookings.php:32 +msgid "Start/End" +msgstr "Ðачало/окончание" + +#: templates/forms/event/bookings.php:33 +msgid "Avail. Spaces" +msgstr "Свободные меÑта" + +#: admin/bookings/em-events.php:134 +#: templates/forms/event/bookings.php:34 +msgid "Booked Spaces" +msgstr "Забронированные меÑта" + +#: templates/forms/event/bookings.php:41 +msgid "Add new ticket" +msgstr "Добавить новый билет" + +#: templates/forms/event/bookings.php:56 +msgid "Free" +msgstr "БеÑплатно" + +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-rejected.php:113 +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:100 +#: templates/buddypress/group-events.php:134 +#: templates/buddypress/my-group-events.php:94 +#: templates/buddypress/my-group-events.php:128 +#: templates/forms/event/bookings.php:88 +#: templates/tables/events.php:103 +#: templates/tables/events.php:134 +msgid "Delete" +msgstr "Удалить" + +#: templates/forms/event/bookings.php:90 +msgid "View Bookings" +msgstr "ПоÑмотреть заказы" + +#: events-manager.php:255 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Ð’Ñ‹ уверены, что хотите перенеÑти Ñто повторÑющееÑÑ Ñобытие? ЕÑли вы Ñделаете Ñто, вы потерÑете вÑÑŽ информацию о заказах и Ñтарые повторÑющиеÑÑ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ удалены." + +#: events-manager.php:256 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Ð’Ñ‹ дейÑтвительно хотите отключить возможноÑть Ð±Ñ€Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð¸Ð»ÐµÑ‚Ð¾Ð²? ЕÑли вы Ñделаете Ñто и Ñохраните, то вы потерÑете вÑе предыдущие заказы. ЕÑли вы хотите предотвратить дальнейшие заказы, Ñократите количеÑтво меÑÑ‚ доÑтупных Ð´Ð»Ñ Ð¸Ð¼ÐµÑŽÑ‰ÐµÐ³Ð¾ÑÑ Ñƒ Ð²Ð°Ñ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑтва заказов" + +#: templates/forms/tickets-form.php:2 +msgid "Create a ticket" +msgstr "Создать билет" + +#: templates/forms/tickets-form.php:8 +msgid "Available ticket spaces" +msgstr "МеÑта, доÑтупные по билетам" + +#: templates/forms/tickets-form.php:10 +msgid "Start date of ticket availability" +msgstr "Дата начала продажи билетов" + +#: templates/forms/tickets-form.php:11 +msgid "End date of ticket availability" +msgstr "Дата Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð´Ð°Ð¶Ð¸ билетов" + +#: templates/forms/tickets-form.php:12 +msgid "Minimum tickets required per booking" +msgstr "Минимальное количеÑтво билетов, требуемое Ð´Ð»Ñ Ð·Ð°ÐºÐ°Ð·Ð°" + +#: templates/forms/tickets-form.php:13 +msgid "Maximum tickets required per booking" +msgstr "Макмимальное количеÑтво билетов, требуемое Ð´Ð»Ñ Ð·Ð°ÐºÐ°Ð·Ð°" + +#: templates/forms/tickets-form.php:19 +msgid "Add Ticket" +msgstr "Добавить билет" + +#: admin/em-ms-locations.php:29 +#: buddypress/screens/my-events.php:33 +#: buddypress/screens/my-locations.php:33 +msgid "Add New" +msgstr "Добавить" + +#: em-events.php:129 +#: templates/tables/locations.php:8 +#, php-format +msgid "My %s" +msgstr "Мои %s." + +#: admin/em-admin.php:45 +#: admin/em-ms-locations.php:28 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:399 +#: admin/em-options.php:594 +#: admin/em-options.php:595 +#: admin/em-options.php:935 +#: admin/em-options.php:937 +#: admin/em-options.php:938 +#: admin/em-options.php:939 +#: admin/em-options.php:940 +#: classes/em-location-posts-admin.php:31 +#: em-actions.php:180 +#: em-install.php:386 +#: em-install.php:387 +#: em-install.php:685 +#: em-install.php:732 +#: em-posts.php:207 +#: em-posts.php:210 +#: em-posts.php:212 +#: templates/tables/locations.php:8 +#: templates/tables/locations.php:11 +msgid "Locations" +msgstr "МеÑта" + +#: templates/tables/locations.php:11 +#, php-format +msgid "All %s" +msgstr "Ð’Ñе %s." + +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:57 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-rejected.php:49 +#: templates/tables/locations.php:18 +msgid "Bulk Actions" +msgstr "Групповые операции" + +#: admin/bookings/em-events.php:58 +#: templates/tables/locations.php:19 +msgid "Delete selected" +msgstr "Удалить выбранные" + +#: admin/bookings/em-events.php:60 +#: templates/tables/locations.php:21 +msgid "Apply" +msgstr "Применить" + +#: classes/em-location-posts-admin.php:40 +#: templates/tables/locations.php:35 +#: templates/tables/locations.php:44 +msgid "Address" +msgstr "ÐдреÑ" + +#: classes/em-location-posts-admin.php:42 +#: templates/tables/locations.php:36 +#: templates/tables/locations.php:45 +msgid "State" +msgstr "Штат" + +#: admin/em-options.php:614 +#: admin/em-options.php:664 +#: admin/em-options.php:754 +#: classes/em-location-posts-admin.php:43 +#: templates/tables/locations.php:37 +#: templates/tables/locations.php:46 +msgid "Country" +msgstr "Страна" + +#: admin/bookings/em-events.php:102 +#: templates/buddypress/group-events.php:44 +#: templates/buddypress/my-group-events.php:44 +#: templates/tables/events.php:53 +msgid "Date and time" +msgstr "Дата и времÑ" + +#: em-install.php:532 +#: templates/buddypress/group-events.php:29 +#: templates/buddypress/my-group-events.php:29 +#: templates/buddypress/profile.php:19 +msgid "No Events" +msgstr "Ðет Ñеминаров" + +# @ dbem +#: templates/buddypress/profile.php:37 +msgid "Not attending any events yet." +msgstr "" + +#: templates/tables/events.php:15 +msgid "Upcoming" +msgstr "ПредÑтоÑщие" + +#: admin/bookings/em-events.php:29 +#: templates/tables/events.php:19 +msgid "Past Events" +msgstr "Прошедшие Ñеминары" + +#: em-posts.php:129 +#: templates/tables/events.php:22 +#: templates/tables/events.php:24 +msgid "Search Events" +msgstr "ПоиÑк Ñеминара" + +#: admin/bookings/em-events.php:91 +msgid "no events" +msgstr "нет Ñеминаров" + +#: admin/em-admin.php:38 +#: classes/em-event-posts-admin.php:136 +#: em-events.php:129 +#: templates/buddypress/group-events.php:91 +#: templates/buddypress/my-group-events.php:85 +#: templates/tables/events.php:94 +msgid "Bookings" +msgstr "Заказы" + +#: classes/em-event-posts-admin.php:137 +#: templates/buddypress/group-events.php:92 +#: templates/buddypress/my-group-events.php:86 +#: templates/tables/events.php:95 +#: templates/templates/bookings-event-printable.php:42 +msgid "Booked" +msgstr "Заказан" + +#: templates/buddypress/group-events.php:105 +#: templates/buddypress/my-group-events.php:99 +#: templates/tables/events.php:108 +msgid "Duplicate this event" +msgstr "Копировать Ñто Ñобытие" + +#: classes/em-event-posts-admin.php:144 +#: templates/buddypress/group-events.php:128 +#: templates/buddypress/my-group-events.php:122 +#: templates/tables/events.php:128 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "Ð’ÐИМÐÐИЕ! Ð’Ñ‹ удалите ВСЕ повторы Ñтого ÑобытиÑ, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¸Ñторию заказов, ÑвÑзанную Ñ Ð»ÑŽÐ±Ñ‹Ð¼ Ñобытием в Ñтой Ñериии. Чтобы Ñохранить информацию о заказах билетов, перейдите на ÑоответÑтвующее Ñобытие и Ñохранить его, чтобы отделить его от Ñерии повторений." + +#: templates/templates/bookings-event-printable.php:21 +msgid "Bookings data" +msgstr "Данные о заказах" + +#: admin/bookings/em-cancelled.php:86 +#: admin/bookings/em-confirmed.php:87 +#: admin/bookings/em-pending.php:104 +#: admin/bookings/em-rejected.php:86 +#: templates/templates/bookings-event-printable.php:26 +msgid "Phone number" +msgstr "Телефон" + +#: templates/templates/bookings-event-printable.php:47 +msgid "Available" +msgstr "ДоÑтупен" + +#: templates/placeholders/locationmap.php:15 +#: templates/templates/map-global.php:15 +msgid "Loading Map...." +msgstr "Загрузка карты ...." + +#: templates/templates/csv-event-bookings.php:16 +#, fuzzy, php-format +msgid "Booking details for \"%s\" as of %s" +msgstr "Детали заказа билетов на \"% S\" по ÑоÑтоÑнию на %s." + +#: admin/em-bookings.php:103 +#: templates/templates/my-bookings.php:47 +msgid "Date" +msgstr "Дата" + +#: admin/bookings/em-person.php:88 +#: admin/em-bookings.php:246 +#: templates/templates/my-bookings.php:49 +msgid "Status" +msgstr "СтатуÑ" + +#: templates/templates/my-bookings.php:75 +msgid "Are you sure you want to cancel your booking?" +msgstr "Ð’Ñ‹ уверены, что хотите отменить Ñвой заказ?" + +#: admin/em-options.php:130 +#: admin/em-options.php:147 +#: templates/templates/my-bookings.php:75 +msgid "Cancel" +msgstr "Отменить" + +#: templates/templates/my-bookings.php:91 +msgid "You do not have any bookings." +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ заказов." + +#: templates/templates/my-bookings.php:101 +#, php-format +msgid "Please Log In to view your bookings." +msgstr "ПожалуйÑта, Войдите Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра заказов." + +# @ dbem +#: templates/templates/events-search.php:35 +msgid "between" +msgstr "" + +#: em-install.php:313 +msgid "All Categories" +msgstr "Ð’Ñе категории" + +#: em-install.php:315 +msgid "All Countries" +msgstr "Ð’Ñе Ñтраны" + +#: em-install.php:317 +msgid "All Regions" +msgstr "Ð’Ñе регионы" + +#: em-install.php:319 +msgid "All States" +msgstr "Ð’Ñе штаты" + +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: em-install.php:310 +#: events-manager.php:264 +msgid "Search" +msgstr "ПоиÑк" + +#: events-manager.php:266 +msgid "Loading..." +msgstr "Загрузка ..." + +#: events-manager.php:265 +msgid "Searching..." +msgstr "Идет поиÑк ..." + +#: templates/placeholders/bookingbutton.php:2 +msgid "Book Now" +msgstr "Забронировать" + +#: templates/placeholders/bookingbutton.php:3 +msgid "Booking..." +msgstr "Бронирование ..." + +#: templates/placeholders/bookingbutton.php:4 +msgid "Booking Submitted" +msgstr "Бронирование подтверждено" + +#: templates/placeholders/bookingbutton.php:5 +msgid "Booking Error. Try again?" +msgstr "Ошибка бронированиÑ. Попробовать еще раз?" + +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Карта недоÑтупна" + +#: templates/placeholders/bookingform.php:11 +#, php-format +msgid "You are currently attending this event. Manage my bookings" +msgstr "Ð’ данный момент вы ÑобираетеÑÑŒ поÑетить Ñтот Ñеминар. Управление моими заказами" + +#: templates/placeholders/bookingform.php:13 +msgid "Online bookings are not available for this event." +msgstr "Интернет-бронирование недоÑтупно Ð´Ð»Ñ Ñтого Ñеминара." + +#: templates/placeholders/bookingform.php:15 +msgid "Bookings are closed for this event." +msgstr "Заказ билетов на Ñтот Ñеминар закрыт." + +#: events-manager.php:250 +msgid "Please wait while the booking is being submitted." +msgstr "Подождите, пока ваш заказ принимаетÑÑ." + +#: admin/em-options.php:40 +msgid "Changes saved." +msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены." + +#: admin/em-help.php:28 +#: admin/em-ms-options.php:52 +#: admin/em-options.php:167 +msgid "Event Related Placeholders" +msgstr "Заполнители, каÑающиеÑÑ Ð¼ÐµÑ€Ð¾Ð¿Ñ€Ð¸Ñтий" + +#: admin/em-help.php:34 +#: admin/em-ms-options.php:53 +#: admin/em-options.php:168 +msgid "Location Related Placeholders" +msgstr "Заполнители, каÑающиеÑÑ Ð¼ÐµÑÑ‚ проведений" + +#: admin/em-help.php:37 +#: admin/em-ms-options.php:54 +#: admin/em-options.php:169 +msgid "Booking Related Placeholders" +msgstr "Заполнители, каÑающиеÑÑ Ð·Ð°ÐºÐ°Ð·Ð¾Ð² билетов" + +#: admin/em-help.php:31 +#: admin/em-ms-options.php:55 +#: admin/em-options.php:170 +msgid "Category Related Placeholders" +msgstr "Заполнители, каÑающиеÑÑ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¹" + +#: admin/em-ms-options.php:56 +#: admin/em-options.php:171 +#, php-format +msgid "This accepts %s and %s placeholders." +msgstr "Принимает заполнители %s и %s." + +#: admin/em-ms-options.php:57 +#: admin/em-ms-options.php:58 +#: admin/em-options.php:172 +#: admin/em-options.php:173 +#, php-format +msgid "This accepts %s placeholders." +msgstr "Принимает заполнитель %s." + +#: admin/em-ms-options.php:59 +#: admin/em-options.php:174 +#, php-format +msgid "This accepts %s, %s and %s placeholders." +msgstr "Принимает заполнители %s, %s и %s." + +#: admin/em-ms-options.php:61 +#: admin/em-ms-options.php:200 +#: admin/em-options.php:177 +#: admin/em-options.php:1251 +msgid "Save Changes" +msgstr "Сохранить изменениÑ" + +#: admin/em-ms-options.php:61 +#: admin/em-options.php:177 +msgid "All" +msgstr "Ð’Ñе" + +#: admin/em-ms-options.php:66 +#: admin/em-options.php:182 +msgid "Collapse All" +msgstr "Свернуть вÑе" + +#: admin/em-ms-options.php:67 +#: admin/em-options.php:183 +msgid "Expand All" +msgstr "Развернуть вÑе" + +#: admin/em-ms-options.php:138 +#: admin/em-options.php:276 +msgid "Event Manager Options" +msgstr "Параметры Event Manager" + +#: admin/em-ms-options.php:148 +#: admin/em-options.php:287 +#: admin/em-options.php:370 +#: admin/em-options.php:392 +#: admin/em-options.php:414 +#: admin/em-options.php:427 +#: admin/em-options.php:577 +#: admin/em-options.php:590 +#: admin/em-options.php:703 +#: admin/em-options.php:793 +#: admin/em-options.php:825 +#: admin/em-options.php:847 +#: admin/em-options.php:869 +#: admin/em-options.php:893 +#: admin/em-options.php:909 +#: admin/em-options.php:932 +#: admin/em-options.php:961 +#: admin/em-options.php:989 +#: admin/em-options.php:1009 +#: admin/em-options.php:1024 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#: admin/em-options.php:1130 +#: admin/em-options.php:1162 +#: admin/em-options.php:1214 +#: admin/em-options.php:1272 +#: admin/em-options.php:1305 +#: admin/em-options.php:1327 +#: admin/em-options.php:1355 +#: admin/em-options.php:1460 +msgid "Click to toggle" +msgstr "Ðажмите Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" + +#: admin/em-ms-options.php:148 +msgid "Multi Site Options" +msgstr "ÐаÑтройки Multi Site." + +#: admin/em-ms-options.php:152 +msgid "Enable global tables mode?" +msgstr "Включить режим глобальных таблиц?" + +#: admin/em-ms-options.php:152 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "УÑтановка параметра \"Да\" повлечение Ñохранение вÑех Ñеминаров в таблицы Ñеминаров оÑновного Ñайта (EM также должен быть активирован). Это позволÑет вам переÑылать Ñеминары между различными блогами. Имейте в виду, что Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ означать, что Ñтарые Ñеминары, Ñозданные в блогах больше не будут доÑтупны, и еÑли вы переключите обратно они оÑтанутÑÑ, но на главном Ñайте оÑтанутÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ те Ñеминары, которые были Ñозданы в режиме глобальных таблиц." + +#: admin/em-ms-options.php:163 +msgid "Display global events on main blog?" +msgstr "Показывать глобальные Ñеминары в главном блоге?" + +#: admin/em-options.php:341 +msgid "Use dropdown for locations?" +msgstr "ИÑпользоовать выпадающий ÑпиÑок Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð° меÑÑ‚?" + +#: admin/em-options.php:341 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Выберите Да, чтобы выбирать меÑта из выпадающего ÑпиÑка. Выбор будет быÑтрее, но у Ð²Ð°Ñ Ð½Ðµ будет возможноÑти добавлÑть новые меÑта Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ðº Ñеминарам" + +#: admin/em-options.php:297 +msgid "Select yes to enable the recurrence features feature" +msgstr "Выберите Да, чтобы включить функцию Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ Ñобытий" + +#: admin/em-options.php:298 +msgid "Enable bookings?" +msgstr "Включить бронирование?" + +#: admin/em-options.php:298 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Выберите Да, чтобы разрешить заказывать билеты и бронировать меÑта на Ñеминаре." + +#: admin/em-options.php:301 +msgid "Select yes to enable the category features" +msgstr "Выберите Да Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ категорий" + +#: admin/em-options.php:313 +msgid "Select yes to enable the attributes feature" +msgstr "Выберите Да Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ атрибутов" + +#: admin/em-options.php:305 +msgid "no default category" +msgstr "нет категории по умолчанию" + +#: admin/em-options.php:310 +msgid "Default Category" +msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð¿Ð¾ умолчанию" + +#: admin/em-options.php:310 +msgid "This option allows you to select the default category when adding an event." +msgstr "Эта Ð¾Ð¿Ñ†Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет вам выбрать категорию по умолчанию при добавлении Ñеминара." + +#: admin/em-options.php:326 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(неприменимо при владении Ñеминаром на временной оÑнове, в разработке!)" + +#: admin/em-options.php:321 +msgid "no default location" +msgstr "Ðет меÑта по умолчанию" + +#: admin/em-options.php:326 +msgid "Default Location" +msgstr "МеÑто по умолчанию" + +#: admin/em-options.php:326 +msgid "This option allows you to select the default location when adding an event." +msgstr "Эта Ð¾Ð¿Ñ†Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет вам выбрать меÑто по умолчанию при добавлении Ñеминара." + +#: admin/em-options.php:329 +msgid "Default Location Country" +msgstr "Страна по умолчанию" + +#: admin/em-options.php:329 +msgid "no default country" +msgstr "нет Ñтраны по умолчанию" + +#: admin/em-options.php:329 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "ЕÑли вы выберите Ñтрану по умолчанию, то она будет предварительно выбрана при Ñоздании нового меÑта." + +#: admin/em-options.php:316 +msgid "Event Attributes" +msgstr "Ðтрибуты Ñеминара" + +#: admin/em-options.php:316 +#, php-format +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Ð’Ñ‹ также можете добавить атрибуты Ñеминара здеÑÑŒ, по одному на Ñтроку в формате #_ATT{key} . Они не будут поÑвлÑтьÑÑ Ð½Ð° Ñтраницах Ñеминара, пока вы не вÑтавите их в другой шаблон ниже, но вы можете хранить дополнительную информацию о Ñеминаре Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… целей. Более Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ заполнителÑÑ…." + +#: admin/em-options.php:350 +msgid "Show some love?" +msgstr "ПроÑвить благодарноÑть?" + +#: admin/em-options.php:350 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Сотни чаÑов Ñвободного времени были потрачены на разработку Ñтого беÑплатного плагина, покажите Ñвою поддержку и размеÑтите маленькую ÑÑылку на Ñайт плагина внизу Ñтраниц Ñеминаров." + +#: admin/em-options.php:440 +msgid "Events page" +msgstr "Страница Ñеминаров" + +#: admin/em-options.php:445 +msgid "Show events page in lists?" +msgstr "Показать Ñтраницу Ñеминаров в ÑпиÑках?" + +#: admin/em-options.php:445 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Включите Ñту опцию, еÑли вы хотите, чтобы Ñтраница Ñеминаров поÑвилаÑÑŒ вмеÑте Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ Ñтраницами в ÑпиÑках Ñтраниц." + +#: admin/em-options.php:446 +msgid "Display calendar in events page?" +msgstr "Показывать календарь на Ñтранице Ñеминаров?" + +#: admin/em-options.php:446 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Эта Ð¾Ð¿Ñ†Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет отображать календарь на Ñтранице Ñеминаров вмеÑто ÑпиÑка по умолчанию. РекомендуетÑÑ, не отображать одновременно и Ñтраницу и виджет Ñ ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€ÐµÐ¼." + +#: admin/em-options.php:446 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "ЕÑли вы хотите показать ÑобытиÑ, которые продолжаютÑÑ Ð±Ð¾Ð»ÐµÐµ одного днÑ, Ñм. раздел Календарь на Ñтой Ñтранице." + +#: admin/em-options.php:447 +msgid "Disable title rewriting?" +msgstr "Отключить изменение заголовка?" + +#: admin/em-options.php:448 +msgid "Event Manager titles" +msgstr "Заголовки Event Manager" + +#: admin/em-options.php:448 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Эта наÑтройка нужна, только еÑли вы выбрали выше Да. Проверьте заполнитель #_PAGETITLE, поÑкольку он теперь перепиÑываетÑÑ events manager. ПоÑмотрите раздел ниже, чтобы задать, что будет запиÑыватьÑÑ Ð² заголовке." + +#: admin/em-options.php:568 +msgid "Event List Limits" +msgstr "ÐžÐ³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ ÑпиÑка Ñеминаров" + +#: admin/em-options.php:568 +msgid "This will control how many events are shown on one list by default." +msgstr "ЗдеÑÑŒ вы Ñможете задать, Ñколько Ñеминаров выводитÑÑ Ð½Ð° одной Ñтранице по умолчанию." + +#: admin/em-options.php:501 +msgid "Are current events past events?" +msgstr "ЯвлÑÑŽÑ‚ÑÑ Ð»Ð¸ текущие Ñеминары прошедшими ÑобытиÑми?" + +#: admin/em-options.php:501 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "По умолчанию, ÑобытиÑ, которые имеют конечную дату позднее ÑегоднÑшнего чиÑла, будут включены в поиÑк, уÑтановите здеÑÑŒ Да, чтобы Ñчитать Ñеминары, которые началиÑÑŒ \"вчера\", как те, что уже прошли." + +#: admin/em-options.php:449 +msgid "Show events search?" +msgstr "Показать поиÑк Ñеминаров?" + +#: admin/em-options.php:449 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "ЕÑли уÑтановлено значение Да, поиÑÐºÐ¾Ð²Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° поÑвитÑÑ Ñ‡ÑƒÑ‚ÑŒ выше ÑпиÑка Ñеминаров." + +#: admin/em-options.php:511 +msgid "Default event list ordering" +msgstr "ПорÑдок ÑпиÑка Ñеминаров по умолчанию" + +#: admin/em-options.php:516 +msgid "Order by start date, start time, then event name" +msgstr "УпорÑдочить по дате окончаниÑ, времени окончаниÑ, названию Ñеминара" + +#: admin/em-options.php:517 +msgid "Order by name, start date, then start time" +msgstr "Ñ" + +#: admin/em-options.php:518 +msgid "Order by name, end date, then end time" +msgstr "УпорÑдочить по названию Ñеминара, дате окончаниÑ, времени окончаниÑ" + +#: admin/em-options.php:519 +msgid "Order by end date, end time, then event name" +msgstr "УпорÑдочить по дате окончаниÑ, времени окончаниÑ, названию Ñеминара" + +#: admin/em-options.php:533 +msgid "All Ascending" +msgstr "Ð’Ñе по возраÑтанию" + +#: admin/em-options.php:536 +msgid "All Descending" +msgstr "Ð’Ñе по убыванию" + +#: admin/em-options.php:490 +#: admin/em-options.php:550 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "Когда Events Manager показывает ÑпиÑок Ñеминаров по умолчанию он упорÑдочиваетÑÑ Ð¿Ð¾ дате начала в порÑдке возраÑтаниÑ. Чтобы изменить порÑдок, выберите одно из значений выше." + +#: admin/em-options.php:554 +msgid "Event list scope" +msgstr "Диапазон ÑпиÑка Ñеминаров" + +#: admin/em-options.php:564 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Показывать только Ñеминары, начинающиеÑÑ Ð² течение определенного Ñрока на Ñтранице Ñеминаров. По умолчанию - будущие Ñеминары без Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ окончаниÑ." + +#: admin/em-options.php:847 +msgid "Events format" +msgstr "Формат Ñеминарв" + +#: admin/em-options.php:850 +#: admin/em-options.php:935 +#: admin/em-options.php:964 +#, php-format +msgid "%s Page" +msgstr "Страница %s" + +#: admin/em-options.php:852 +msgid "Default event list format header" +msgstr "Заголовок формата ÑпиÑка Ñеминаров по умолчанию" + +#: admin/em-options.php:852 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "Содержимое поÑвитÑÑ Ð½Ð°Ð´ вашим кодом формата ÑпиÑка Ñеминаров. По умолчанию пуÑто" + +#: admin/em-options.php:853 +msgid "Default event list format" +msgstr "Формат ÑпиÑка Ñеминаров по умолчанию" + +#: admin/em-options.php:853 +msgid "The format of any events in a list." +msgstr "Формат любого Ñеминара в ÑпиÑке" + +#: admin/em-options.php:854 +msgid "Default event list format footer" +msgstr "Формат подвала ÑпиÑка Ñеминаров по умолчанию" + +#: admin/em-options.php:854 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Содержимое поÑвитÑÑ Ñразу под вашим кодом Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° ÑпиÑка Ñеминаров. По умолчанию пуÑто" + +#: admin/em-options.php:855 +msgid "No events message" +msgstr "Ðет Ñообщений о Ñеминарах" + +#: admin/em-options.php:855 +msgid "The message displayed when no events are available." +msgstr "Сообщение показываетÑÑ, когда нет доÑтупных Ñеминаров" + +#: admin/em-options.php:856 +msgid "List events by date title" +msgstr "Заголовок ÑпиÑка Ñеминаров по дате" + +#: admin/em-options.php:856 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
                                  " +msgstr "ЕÑли Ñмотреть Ñтраницу Ð´Ð»Ñ Ñеминаров, проводимых в конкретную дату, Ñто заголовок, который поÑвлÑетÑÑ. Ð”Ð»Ñ Ð²Ñтавки значений дат, иÑпользуйте Ñимволы Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ в PHP Ñ # Ñимволом перед ними, то еÑть #m , #M , #j и Ñ‚.д.
                                  " + +#: admin/em-options.php:858 +#: admin/em-options.php:942 +#: admin/em-options.php:971 +#: admin/em-options.php:992 +#, php-format +msgid "Single %s Page" +msgstr "Страница %s" + +#: admin/em-options.php:860 +msgid "Single event page title format" +msgstr "Формат заголовка Ñтраницы отдельного Ñеминара" + +#: admin/em-options.php:860 +msgid "The format of a single event page title." +msgstr "Формат заголовка Ñтраницы отдельного Ñеминара." + +#: admin/em-options.php:861 +msgid "Default single event format" +msgstr "Формат отдельного Ñеминара по умолчанию" + +#: admin/em-options.php:861 +msgid "The format of a single event page." +msgstr "Формат Ñтраницы Ð´Ð»Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ñеминара." + +#: admin/em-options.php:909 +msgid "Calendar format" +msgstr "Формат календарÑ" + +#: admin/em-options.php:913 +msgid "Small calendar title" +msgstr "Заголовок малого календарÑ" + +#: admin/em-options.php:913 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "Формат заголовка, ÑоответÑтвующего текÑту, который поÑвлÑетÑÑ Ð¿Ñ€Ð¸ наведении на день календарÑ, в который еÑть Ñеминар." + +#: admin/em-options.php:914 +msgid "Small calendar title separator" +msgstr "Разделитель заголовка малого календарÑ" + +#: admin/em-options.php:914 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "Разделитель, поÑвлÑющийÑÑ Ð½Ð° заголовке, когда в один и тот же день имеют меÑто неÑколько Ñеминаров." + +#: admin/em-options.php:915 +msgid "Full calendar events format" +msgstr "Формат полного ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ñемнаров" + +#: admin/em-options.php:915 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "Формат каждого Ñеминара при отображении в полном календаре. Ðе забудьте включить li теги до и поÑле Ñеминара." + +#: admin/em-options.php:916 +msgid "Show long events on calendar pages?" +msgstr "Показать длительные Ñеминары на Ñтраницах календарÑ?" + +#: admin/em-options.php:916 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "ЕÑли вы показываете календарь на Ñтранице Ñеминаров (Ñм. раздел Формат Ñеминаров на Ñтой Ñтранице), у Ð²Ð°Ñ ÐµÑть возможноÑть показать ÑобытиÑ, которые охватывают более неÑколько дней, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ñ‚Ð¾Ñ‚ день, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ показан календарь." + +#: admin/em-options.php:917 +msgid "Show list on day with single event?" +msgstr "Показывать ÑпиÑок в день Ñ Ð¾Ð´Ð½Ð¸Ð¼ Ñеминаром?" + +#: admin/em-options.php:917 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "По умолчанию, еÑли на день ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ð¿Ñ€Ð¸Ñ…Ð¾Ð´Ð¸Ñ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ одно Ñобытие, то при нажатии на ÑÑылку Ñтой даты открываетÑÑ Ð¾Ñ‚Ð´ÐµÐ½ÑŒÐ½Ñ‹Ð¹ Ñеминар. ЕÑли вы выберете Да здеÑÑŒ, вы будете вÑегда видеть ÑпиÑок Ñеминаров." + +#: admin/em-options.php:920 +#, fuzzy +msgid "iCal Feed Settings" +msgstr "Сохранить наÑтройки" + +#: admin/em-options.php:922 +#, fuzzy +msgid "iCal Title" +msgstr "Ðазвание" + +# @ dbem +#: admin/em-options.php:922 +msgid "The title that will appear in the calendar." +msgstr "" + +# @ dbem +#: admin/em-options.php:923 +msgid "iCal Limit" +msgstr "" + +# @ dbem +#: admin/em-options.php:923 +msgid "Limits the number of future events shown (0 = unlimited)." +msgstr "" + +#: admin/em-options.php:932 +msgid "Locations format" +msgstr "Формат меÑÑ‚" + +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "%s list header format" +msgstr "Формат заголовка ÑпиÑка %s." + +#: admin/em-options.php:937 +#: admin/em-options.php:966 +#, php-format +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Содержимое будет поÑвлÑтьÑÑ Ñразу над вашим кодом Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° ÑпиÑка %s. По умолчанию пуÑто" + +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "%s list item format" +msgstr "Формат Ñлементка ÑпиÑка %s" + +#: admin/em-options.php:938 +#: admin/em-options.php:967 +#, php-format +msgid "The format of a single %s in a list." +msgstr "Формат отдельного %s в ÑпиÑке." + +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "%s list footer format" +msgstr "Формат подвала ÑпиÑка %s." + +#: admin/em-options.php:939 +#: admin/em-options.php:968 +#, php-format +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Содержимое будет поÑвлÑтьÑÑ Ñразу под вашим кодом Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° ÑпиÑка %s. По умолчанию пуÑто" + +#: admin/em-options.php:940 +#: admin/em-options.php:951 +#: admin/em-options.php:969 +#: admin/em-options.php:979 +#: admin/em-options.php:1000 +#, php-format +msgid "No %s message" +msgstr "Сообщение об отÑутÑтвии %s" + +#: admin/em-options.php:940 +#: admin/em-options.php:969 +#, php-format +msgid "The message displayed when no %s are available." +msgstr "Сообщение, поÑвлÑетÑÑ, когда нет доÑтупных %s." + +#: admin/em-options.php:944 +#: admin/em-options.php:973 +#: admin/em-options.php:994 +#, php-format +msgid "Single %s title format" +msgstr "Формат заголовка отдельного %s" + +#: admin/em-options.php:944 +msgid "The format of a single location page title." +msgstr "Формат заголовка Ñтраницы отдельного меÑта" + +#: admin/em-options.php:945 +#: admin/em-options.php:974 +#: admin/em-options.php:995 +#, php-format +msgid "Single %s page format" +msgstr "Формат Ñтраницы отдельного %s" + +#: admin/em-options.php:945 +msgid "The format of a single location page." +msgstr "Формат Ñтраницы отдельного меÑта." + +#: admin/em-options.php:946 +msgid "Default location balloon format" +msgstr "Формат вÑплывающей подÑказки Ð´Ð»Ñ Ð¼ÐµÑта по умолчанию" + +#: admin/em-options.php:946 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "Формат текÑта, поÑвлÑющегоÑÑ Ð²Ð¾ вÑплывающей подÑказке на карте Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸ÐµÐ¼ определенного меÑта." + +#: admin/em-options.php:948 +#: admin/em-options.php:976 +#: admin/em-options.php:997 +#, fuzzy, php-format +msgid "%s List Formats" +msgstr "Формат Ñлементка ÑпиÑка %s" + +#: admin/em-options.php:950 +#: admin/em-options.php:978 +#: admin/em-options.php:999 +#, php-format +msgid "Default %s list format" +msgstr "Формат ÑпиÑка %s по умолчанию" + +#: admin/em-ms-options.php:163 +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-options.php:418 +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:502 +#: admin/em-options.php:950 +#: admin/em-options.php:951 +#: admin/em-options.php:978 +#: admin/em-options.php:979 +#: admin/em-options.php:999 +#: admin/em-options.php:1000 +#: admin/em-options.php:1366 +#: admin/em-options.php:1367 +#: admin/em-options.php:1368 +#: admin/em-options.php:1369 +#: admin/em-options.php:1370 +#: admin/em-options.php:1371 +#: events-manager.php:295 +#: events-manager.php:296 +#: events-manager.php:297 +#: events-manager.php:298 +#: events-manager.php:299 +#: events-manager.php:300 +msgid "events" +msgstr "Ñеминаров" + +#: admin/em-options.php:950 +#, fuzzy +msgid "The format of the events the list inserted in the location page through the #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS element." +msgstr "Формат ÑпиÑка Ñеминаров, вÑтавленного на Ñтранице меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлементов #_NEXTEVENTS , #_PASTEVENTS и #_ALLEVENTS." + +#: admin/em-options.php:951 +#, fuzzy +msgid "The message to be displayed in the list generated by #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS when no events are available." +msgstr "Сообщение, которое будет отображатьÑÑ Ð² ÑпиÑке Ñгенерированном Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ #_NEXTEVENTS , #_PASTEVENTS и #_ALLEVENTS, когда Ñеминары недоÑтупны." + +#: admin/em-options.php:961 +msgid "Categories format" +msgstr "Формат категорий" + +#: admin/em-options.php:707 +#: admin/em-options.php:708 +#: admin/em-options.php:964 +#: admin/em-options.php:966 +#: admin/em-options.php:967 +#: admin/em-options.php:968 +#: admin/em-options.php:969 +#: em-install.php:416 +#: em-install.php:418 +#: em-install.php:697 +#: em-install.php:747 +msgid "Categories" +msgstr "Категории" + +#: admin/em-options.php:973 +msgid "The format of a single category page title." +msgstr "Формат заголовка Ñтраницы Ñеминаров одной категории" + +#: admin/em-options.php:974 +msgid "The format of a single category page." +msgstr "Формат Ñтраницы Ñеминаров одной категории" + +#: admin/em-options.php:978 +#, fuzzy +msgid "The format of the events the list inserted in the category page through the #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." +msgstr "Формат ÑпиÑка Ñеминаров, вÑтавленного на Ñтранице меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлементов #_NEXTEVENTS , #_PASTEVENTS и #_ALLEVENTS." + +#: admin/em-options.php:979 +#, fuzzy +msgid "The message to be displayed in the list generated by #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS when no events are available." +msgstr "Сообщение, которое будет отображатьÑÑ Ð² ÑпиÑке Ñгенерированном Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ #_NEXTEVENTS , #_PASTEVENTS и #_ALLEVENTS, когда Ñеминары недоÑтупны." + +#: admin/em-options.php:1009 +msgid "RSS feed format" +msgstr "Формат RSS-ленты." + +#: admin/em-options.php:1013 +msgid "RSS main title" +msgstr "Заголовок RSS" + +#: admin/em-options.php:1013 +msgid "The main title of your RSS events feed." +msgstr "Главный заголовок RSS-ленты Ñеминаров" + +#: admin/em-options.php:1014 +msgid "RSS main description" +msgstr "ОпиÑание RSS " + +#: admin/em-options.php:1014 +msgid "The main description of your RSS events feed." +msgstr "ОÑновное опиÑание вашей RSS-ленты Ñеминаров." + +#: admin/em-options.php:1015 +msgid "RSS title format" +msgstr "Формат заголовка RSS" + +#: admin/em-options.php:1015 +msgid "The format of the title of each item in the events RSS feed." +msgstr "Формат заголовка каждого Ñлемента RSS-ленты Ñеминаров." + +#: admin/em-options.php:1016 +msgid "RSS description format" +msgstr "Формат опиÑÐ°Ð½Ð¸Ñ RSS" + +#: admin/em-options.php:1016 +msgid "The format of the description of each item in the events RSS feed." +msgstr "Формат опиÑÐ°Ð½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñлемента в RSS-ленте Ñеминаров." + +#: admin/em-options.php:1024 +msgid "Maps and geotagging" +msgstr "Карты и геотегинг" + +#: admin/em-options.php:1029 +msgid "Enable Google Maps integration?" +msgstr "Включить интеграцию Google Maps?" + +#: admin/em-options.php:1033 +msgid "Check this option to enable Goggle Map integration." +msgstr "Включите Ñту опцию Ð´Ð»Ñ Ð¸Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ð¸ Google Maps." + +#: admin/em-options.php:1037 +msgid "Map text format" +msgstr "Формат текÑта на карте" + +#: admin/em-options.php:1037 +msgid "The text format inside the map balloons." +msgstr "Формат текÑта внутри вÑплывающих подÑказок на карте" + +#: admin/em-options.php:1055 +msgid "Approval Required?" +msgstr "ТребуетÑÑ ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ðµ?" + +#: admin/em-options.php:1055 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Бронирование не будет подтверждено, пока админиÑтратор не утвердит его." + +#: admin/em-options.php:1072 +msgid "Currency" +msgstr "Валюта" + +#: admin/em-options.php:1072 +msgid "Choose your currency for displaying event pricing." +msgstr "Выберите валюту Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ†ÐµÐ½ Ñеминаров" + +#: admin/em-options.php:1112 +msgid "Single ticket mode?" +msgstr "Режим одиночных билетов?" + +#: admin/em-options.php:1112 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "Ð’ режиме одиночных билетов, пользователи могут Ñоздавать только заказы по одному билету (и не увидÑÑ‚ опцию Добавить еще билеты)." + +#: admin/em-options.php:1113 +msgid "Show ticket table in single ticket mode?" +msgstr "Показать таблицу билетов в режиме одиночых билетов?" + +#: admin/em-options.php:1113 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "ЕÑли вам нравитÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° билетов как в Ñлучае Ñ Ð½ÐµÑколькими билетами, включите Ñту опцию." + +#: admin/em-options.php:1114 +msgid "Show unavailable tickets?" +msgstr "Показывать недоÑтупные билеты?" + +#: admin/em-options.php:1114 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Ð’Ñ‹ можете выбрать, показывать или не показывать поÑетителÑм недоÑтупные билеты." + +#: admin/em-options.php:1056 +msgid "Reserved unconfirmed spaces?" +msgstr "Резервировать неподтвержденные меÑта?" + +#: admin/em-options.php:1056 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "По умолчанию меÑта на Ñеминаре ÑтановÑÑ‚ÑÑ Ð½ÐµÐ´Ð¾Ñтупными как только их заказ ПОДТВЕРЖДЕÐ. Чтобы бронировать меÑта, даже еÑли заказ еще не утвержден, выберите Да." + +#: admin/em-options.php:1115 +msgid "Show multiple tickets if logged out?" +msgstr "Показывать неÑколько билетов, еÑли пользователь вышел из ÑиÑтемы?" + +#: admin/em-options.php:1115 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "ПоÑле выхода из ÑиÑтемы пользователю будет предложено зарегиÑтрироватьÑÑ Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñделать заказ. Тем не менее, мы можем показать доÑтупные билеты, еÑли их более одного." + +#: admin/em-options.php:1058 +msgid "Allow overbooking when approving?" +msgstr "Разрешить бронирование больше количеÑтва меÑÑ‚, чем имеетÑÑ, при утверждении?" + +#: admin/em-options.php:1058 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "ЕÑли вы получаете много заказов, ожидающих обработки, и вы решите забронировать больше меÑÑ‚, чем имеетÑÑ Ð² наличии, уÑтановка параметра Да позволит вам изменить ограничение по количеÑтву меÑÑ‚ при утверждении вручную." + +#: admin/em-options.php:1087 +msgid "Allow guest bookings?" +msgstr "Разрешить заказ в режиме гоÑÑ‚Ñ?" + +#: admin/em-options.php:1087 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "ЕÑли включено, гоÑти могут оÑтавлÑть Ð°Ð´Ñ€ÐµÑ Ñлектронной почты и ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±ÑƒÐ´ÐµÑ‚ автоматичеÑки ÑоздаватьÑÑ Ð½Ð°Ñ€Ñду Ñ Ð·Ð°ÐºÐ°Ð·Ð¾Ð¼. Они будут также иметь возможноÑть войти в ÑиÑтему Ñ Ñтой Ñозданной учетной запиÑью." + +#: admin/em-options.php:1059 +#, fuzzy +msgid "Allow double bookings?" +msgstr "Разрешить заказ в режиме гоÑÑ‚Ñ?" + +# @ dbem +#: admin/em-options.php:1059 +msgid "If enabled, users can book an event more than once." +msgstr "" + +#: admin/em-options.php:1088 +msgid "Display login form?" +msgstr "Отображать форму Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему?" + +#: admin/em-options.php:1088 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Выберите, Ñледует ли отображать форму Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему на форме заказа, чтобы напомнить пользователÑм войти в ÑиÑтему, прежде чем оÑтавлÑть заказ." + +#: admin/em-options.php:1090 +#, fuzzy +msgid "Booking form feedback messages" +msgstr "ПиÑьмо Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸ÐµÐ¼ заказа" + +# @ dbem +#: admin/em-options.php:1091 +msgid "When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below." +msgstr "" + +#: admin/em-options.php:1093 +#, fuzzy +msgid "Successful booking" +msgstr "Отправить заказ" + +# @ dbem +#: admin/em-options.php:1093 +msgid "When a booking is registered and confirmed." +msgstr "" + +#: admin/em-options.php:1094 +#, fuzzy +msgid "Successful pending booking" +msgstr "Ожидают проверки %s ваших заказа(ов)" + +# @ dbem +#: admin/em-options.php:1094 +msgid "When a booking is registered but pending." +msgstr "" + +# @ dbem +#: admin/em-options.php:1095 +msgid "Not enough spaces" +msgstr "" + +#: admin/em-options.php:1095 +#, fuzzy +msgid "When a booking cannot be made due to lack of spaces." +msgstr "Заказ не может быть Ñделан, не хватает Ñвободных меÑÑ‚!" + +# @ dbem +#: admin/em-options.php:1096 +msgid "Errors" +msgstr "" + +# @ dbem +#: admin/em-options.php:1096 +msgid "When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors." +msgstr "" + +# @ dbem +#: admin/em-options.php:1097 +msgid "User must log in" +msgstr "" + +#: admin/em-options.php:1097 +#, fuzzy +msgid "When a user must log in before making a booking." +msgstr "Ð’Ñ‹ должны войти в ÑиÑтему, прежде чем Ñделать заказ." + +# @ dbem +#: admin/em-options.php:1098 +msgid "Error mailing user" +msgstr "" + +# @ dbem +#: admin/em-options.php:1098 +msgid "If a booking is made and an email cannot be sent, this is added to the success message." +msgstr "" + +# @ dbem +#: admin/em-options.php:1099 +msgid "Already booked" +msgstr "" + +# @ dbem +#: admin/em-options.php:1099 +msgid "If the user made a previous booking and cannot double-book." +msgstr "" + +# @ dbem +#: admin/em-options.php:1100 +msgid "No spaces booked" +msgstr "" + +# @ dbem +#: admin/em-options.php:1100 +msgid "If the user tries to make a booking without requesting any spaces." +msgstr "" + +#: admin/em-options.php:1162 +msgid "Booking Email Templates" +msgstr "Шаблоны пиÑем о заказах" + +#: admin/em-options.php:1166 +msgid "Default contact person" +msgstr "Контактное лицо по умолчанию" + +#: admin/em-options.php:1166 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Выберите контактное лицо по умолчанию. Этот пользователь будет назначатьÑÑ, когда контактное лицо Ñеминара не будет Ñтрого задано." + +#: admin/em-options.php:1167 +msgid "Email events admin?" +msgstr "ОтправлÑть email админиÑтратору Ñеминара?" + +#: admin/em-options.php:1167 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "ЕÑли вы хотите отправлÑть пиÑьмо о каждом подтверждении заказа админиÑтратору, напишите текÑÑ‚ пиÑьма здеÑÑŒ (оÑтавьте пуÑтым, еÑли не надо отправлÑть пиÑьмо)." + +#: admin/em-options.php:1168 +msgid "Email contact person?" +msgstr "ОтправлÑть email контактному лицу?" + +#: admin/em-options.php:1168 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Включите Ñту опцию, еÑли вы хотите, чтобы контактному лицу отправлÑлÑÑ email каждый раз, когда кто-то бронирует меÑта. ПиÑьмо будет отправлено поÑле первоначального Ð±Ñ€Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ (незавиÑимо от того, подтверждено оно или на раÑÑмотрении)" + +#: admin/em-options.php:1169 +msgid "Disable new registration email?" +msgstr "Отключить пиÑьма о новой региÑтрации?" + +#: admin/em-options.php:1171 +msgid "Contact person booking confirmed" +msgstr "Подтверждение заказа контактному лицу" + +#: admin/em-options.php:1172 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "ПиÑьмо будет отправлено контактному лицу, когда заказ билетов делаетÑÑ Ð²Ð¿ÐµÑ€Ð²Ñ‹Ðµ." + +#: admin/em-options.php:1174 +msgid "Contact person email subject" +msgstr "Тема пиÑьма контактному лицу" + +#: admin/em-options.php:1175 +msgid "Contact person email" +msgstr "ПиÑьмо контактному лицу" + +#: admin/em-options.php:1177 +msgid "Contact person booking cancelled" +msgstr "Отмена заказа контактному лицу" + +#: admin/em-options.php:1178 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "ПиÑьмо будет отправлено контактному лицу каждый раз, когда кто-то отменил Ñвой заказ." + +#: admin/em-options.php:1180 +msgid "Contact person cancellation subject" +msgstr "Тема пиÑьма контактному лицу об отмене заказа" + +#: admin/em-options.php:1181 +msgid "Contact person cancellation email" +msgstr "ПиÑьмо контактному лицу об отмене заказа" + +#: admin/em-options.php:1183 +msgid "Confirmed booking email" +msgstr "ПиÑьмо Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸ÐµÐ¼ бронированиÑ" + +#: admin/em-options.php:1184 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Это пиÑьмо отправлÑетÑÑ Ð¿Ñ€Ð¸ подтверждении заказа. Оно будет отправлено автоматичеÑки, еÑли необходимо утверждение и заказ был утвержден. ЕÑли утверждение отключено, оно будет отправлено как только пользователь оÑтавит Ñвой заказ." + +#: admin/em-options.php:1186 +msgid "Booking confirmed email subject" +msgstr "Тема пиÑьма Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸ÐµÐ¼ заказа" + +#: admin/em-options.php:1187 +msgid "Booking confirmed email" +msgstr "ПиÑьмо Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸ÐµÐ¼ заказа" + +#: admin/em-options.php:1189 +msgid "Pending booking email" +msgstr "ПиÑьмо о том, что заказ ожидает подтверждениÑ" + +#: admin/em-options.php:1190 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "ПиÑьмо будет автоматичеÑки отправлено тому, кто впервые отправил заказ. Ðе иÑпользуетÑÑ Ð² Ñлучае, когда заказу не требуетÑÑ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ðµ." + +#: admin/em-options.php:1192 +msgid "Booking pending email subject" +msgstr "Тема пиÑьма о переходе заказа в ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ" + +#: admin/em-options.php:1193 +msgid "Booking pending email" +msgstr "ПиÑьмо об ожидании Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð·Ð°ÐºÐ°Ð·Ð¾Ð¼" + +#: admin/em-options.php:1195 +msgid "Rejected booking email" +msgstr "Отклоненное пиÑьмо Ñ Ð·Ð°ÐºÐ°Ð·Ð¾Ð¼" + +#: admin/em-options.php:1196 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "ПиÑьмо будет отправлено автоматичеÑки при отклонении заказа. Ðе иÑпользуетÑÑ Ð² Ñлучае, когда заказу не требуетÑÑ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ðµ." + +#: admin/em-options.php:1198 +msgid "Booking rejected email subject" +msgstr "Тема пиÑьма об отклонении заказа" + +#: admin/em-options.php:1198 +msgid "The subject of the email sent to the person making a booking that is awaiting administrator approval. Not relevant if bookings don't require approval." +msgstr "Тема пиÑьма, отправлÑемого тому, чей заказ ждет ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора. Ðе иÑпользуетÑÑ Ð² Ñлучае, когда заказу не требуетÑÑ ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ðµ." + +#: admin/em-options.php:1199 +msgid "Booking rejected email" +msgstr "ПиÑьмо об отклонении заказа" + +#: admin/em-options.php:1199 +msgid "The body of the email which will be sent to the person if the booking is rejected. Not relevant if bookings don't require approval." +msgstr "Тело пиÑьма, которое будет отправлено в Ñлучае, еÑли заказ будет отклонен. Ðе иÑпользуетÑÑ Ð² Ñлучае, когда заказу не требуетÑÑ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ðµ." + +#: admin/em-options.php:1202 +msgid "This will be sent when a user cancels their booking." +msgstr "Это пиÑьмо будет отправлено, когда пользователь отменит Ñвой заказ." + +#: admin/em-options.php:1204 +msgid "Booking cancelled email subject" +msgstr "Тема пиÑьма об отмене заказа" + +#: admin/em-options.php:1205 +msgid "Booking cancelled email" +msgstr "ПиÑьмо об отмене заказа" + +#: admin/em-options.php:1327 +msgid "Email Settings" +msgstr "ÐаÑтройки Ñлектронной почты" + +#: admin/em-options.php:1332 +msgid "Notification sender name" +msgstr "Ð˜Ð¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÐµÐ»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹" + +#: admin/em-options.php:1332 +msgid "Insert the display name of the notification sender." +msgstr "Введите отображаемое Ð¸Ð¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÐµÐ»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹" + +#: admin/em-options.php:1333 +msgid "Notification sender address" +msgstr "ÐÐ´Ñ€ÐµÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÐµÐ»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹" + +#: admin/em-options.php:1333 +msgid "Insert the address of the notification sender." +msgstr "Введите Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÐµÐ»Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹." + +#: admin/em-options.php:1334 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "Порт по которому будут отправлÑтьÑÑ Ñлектронные пиÑьма. Проверьте, что его не блокирует фаервол." + +#: admin/em-options.php:1335 +msgid "Mail sending method" +msgstr "СпоÑоб отправки Ñообщений" + +#: admin/em-options.php:1335 +msgid "PHP mail function" +msgstr "PHP Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ñ‡Ñ‚Ñ‹ " + +#: admin/em-options.php:1335 +msgid "Select the method to send email notification." +msgstr "Выберите метод Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ Ñообщений по Ñлектронной почте." + +#: admin/em-options.php:1336 +msgid "Use SMTP authentication?" +msgstr "ИÑпользовать SMTP-аутентификацию?" + +#: admin/em-options.php:1336 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "SMTP-Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ‡Ð°Ñто необходима. ЕÑли вы иÑпользуете GMail, удоÑтоверьтеÑÑŒ, что уÑтановлен параметр \"Да\"" + +#: admin/em-options.php:1337 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "ХоÑÑ‚ SMTP. Обычно он ÑоответÑтвует \"localhost\". ЕÑли вы иÑпользуете GMail, уÑтановите значение \"SSL://smtp.gmail.com: 465\"." + +#: admin/em-options.php:1338 +msgid "SMTP username" +msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ SMTP" + +#: admin/em-options.php:1338 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, которое будет иÑпользоватьÑÑ Ð´Ð»Ñ Ð´Ð¾Ñтупа к SMTP-Ñерверу." + +#: admin/em-options.php:1339 +msgid "SMTP password" +msgstr "Пароль Ð´Ð»Ñ SMTP" + +#: admin/em-options.php:1339 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Введите пароль, который будет иÑпользоватьÑÑ Ð´Ð»Ñ Ð´Ð¾Ñтупа к SMTP-Ñерверу" + +#: admin/em-options.php:1309 +msgid "Maximum width (px)" +msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° (пикÑелей)" + +#: admin/em-options.php:1309 +msgid "The maximum allowed width for images uploades" +msgstr "МакÑимально допуÑÑ‚Ð¸Ð¼Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° загружаемых изображений" + +#: admin/em-options.php:1310 +msgid "Maximum height (px)" +msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð²Ñ‹Ñота (пикÑелей)" + +#: admin/em-options.php:1310 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "МакÑимально допуÑÑ‚Ð¸Ð¼Ð°Ñ Ð²Ñ‹Ñота загружаемых изображений, в пикÑелÑÑ…" + +#: admin/em-options.php:1311 +msgid "Maximum size (bytes)" +msgstr "МакÑимальный размер (байт)" + +#: admin/em-options.php:1311 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "МакÑимально допуÑтимый размер загружаемых изображений, в байтах" + +#: admin/em-options.php:1355 +msgid "User Capabilities" +msgstr "ПользовательÑкие возможноÑти" + +#: admin/em-options.php:1359 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Внимание: Изменение Ñтих значений может привеÑти к доÑтупу вÑех пользователей к ранее Ñкрытой информации." + +#: admin/em-options.php:1405 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Теперь вы можете раздать права Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ того, какие дейÑÑ‚Ð²Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒ может делать Ñ Ñеминарами. ÐšÐ°Ð¶Ð´Ð°Ñ Ñ€Ð¾Ð»ÑŒ позволÑет выполнÑть разный набор дейÑтвий." + +#: admin/em-options.php:1398 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "Пользователь может управлÑть заказами других пользователей и наÑтройками Ð±Ñ€Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÑÑ‚ на Ñеминарах." + +#: admin/em-options.php:1399 +msgid "User can use and manage bookings with their events." +msgstr "Пользователь может иÑпользовать и управлÑть бронированием на Ñвоих Ñеминарах." + +#: admin/em-options.php:1287 +msgid "Allow anonymous event submissions?" +msgstr "Разрешить анонимную отправку Ñеминаров?" + +#: admin/em-options.php:1287 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Хотите позволить пользователÑм отправлÑть заказы анонимно? ЕÑли да, то вы можете иÑпользовать новый [event_form] короткий код или em_event_form() шаблонов тегов Ñ Ñтой включенной опцией." + +#: admin/em-options.php:1288 +msgid "Guest Default User" +msgstr "ГоÑть по умолчанию" + +#: admin/em-options.php:1281 +#: admin/em-options.php:1289 +msgid "Success Message" +msgstr "Сообщение об уÑпешном выполнении" + +#: admin/em-options.php:1289 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Ðнонимные отправители не могут видеть или изменÑть их Ñеминар поÑле отправки. Ð’Ñ‹ можете наÑтроить здеÑÑŒ Ñообщение об уÑпешном окончании, которое они увидÑÑ‚." + +#: admin/em-bookings.php:59 +msgid "Event Bookings Dashboard" +msgstr "Панель Ð±Ñ€Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñеминаров" + +#: admin/em-bookings.php:63 +#: admin/em-bookings.php:114 +#: admin/em-bookings.php:166 +msgid "Pending Bookings" +msgstr "Заказы, ожидающие утверждениÑ" + +#: admin/em-bookings.php:66 +msgid "Events With Bookings Enabled" +msgstr "Семинары Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтью бронированиÑ" + +#: admin/em-bookings.php:81 +#: admin/em-bookings.php:188 +#: admin/em-bookings.php:367 +#: admin/em-bookings.php:413 +msgid "You do not have the rights to manage this event." +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на управление Ñтим Ñобытием." + +#: admin/em-bookings.php:93 +#, php-format +msgid "Manage %s Bookings" +msgstr "Управление заказами %s." + +#: admin/em-bookings.php:94 +#: admin/em-bookings.php:148 +msgid "View/Edit Event" +msgstr "ПроÑмотр / редактирование Ñеминара" + +#: admin/em-bookings.php:101 +#, fuzzy +msgid "Availability" +msgstr "ДоÑтупен" + +#: admin/em-bookings.php:101 +msgid "Spaces confirmed" +msgstr "Подтвержденные меÑта" + +#: admin/em-bookings.php:117 +#: admin/em-bookings.php:169 +msgid "Confirmed Bookings" +msgstr "Подтвержденные заказы билетов" + +#: admin/em-bookings.php:119 +#: admin/em-bookings.php:171 +msgid "Rejected Bookings" +msgstr "Отклоненные заказы билетов" + +#: admin/em-bookings.php:121 +#: admin/em-bookings.php:173 +msgid "Cancelled Bookings" +msgstr "Отмененные заказы билетов" + +#: admin/em-bookings.php:137 +msgid "You do not have the rights to manage this ticket." +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на управление Ñтим билетом." + +#: admin/em-bookings.php:147 +#, php-format +msgid "Ticket for %s" +msgstr "Билет на %s." + +#: admin/em-bookings.php:149 +msgid "View Event Bookings" +msgstr "ПроÑмотр Ð±Ñ€Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÑÑ‚ на Ñеминаре" + +#: admin/em-bookings.php:158 +msgid "Min" +msgstr "Мин" + +#: admin/em-bookings.php:159 +msgid "Max" +msgstr "МакÑ" + +#: admin/em-bookings.php:160 +msgid "Start" +msgstr "Ðачало" + +#: admin/em-bookings.php:161 +msgid "End" +msgstr "Конец" + +#: admin/em-bookings.php:198 +msgid "Edit Booking" +msgstr "Редактировать заказ" + +#: admin/em-bookings.php:206 +msgid "Event Details" +msgstr "Детали Ñеминара" + +#: admin/em-bookings.php:217 +msgid "Date/Time" +msgstr "Дата / времÑ" + +#: admin/em-bookings.php:229 +#: admin/em-bookings.php:389 +msgid "Personal Details" +msgstr "ПерÑональные данные" + +#: admin/em-bookings.php:237 +msgid "Booking Details" +msgstr "Детали заказа" + +#: admin/em-bookings.php:283 +msgid "Totals" +msgstr "Итоги" + +#: admin/em-bookings.php:302 +#, fuzzy +msgid "Modify Booking" +msgstr "Мои Заказы" + +# @ dbem +#: admin/em-bookings.php:307 +msgid "Note: ticket availability not taken into account (i.e. you can overbook). Confirmation email is not resent automatically." +msgstr "" + +#: admin/em-bookings.php:323 +msgid "Booking Notes" +msgstr "Примечение заказа" + +#: admin/em-bookings.php:326 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Ð’Ñ‹ можете добавить оÑобые Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð½Ð¸Ð¶Ðµ Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ¹ ÑÑылки, которую увидÑÑ‚ только админиÑтраторы Ñеминара." + +#: admin/em-bookings.php:331 +msgid "wrote" +msgstr "напиÑал" + +#: admin/em-bookings.php:377 +msgid "Manage Person's Booking" +msgstr "Управление заказами лица" + +#: admin/em-bookings.php:379 +msgid "Edit User" +msgstr "Редактировать пользователÑ" + +#: admin/em-bookings.php:400 +msgid "Past And Present Bookings" +msgstr "Прошлые и наÑтоÑщие заказы" + +# @ dbem +#: admin/em-admin.php:124 +#, php-format +msgid "

                                  Events Manager is ready to go! It is highly recommended you read the Getting Started guide on our site, as well as checking out the Settings Page. Dismiss

                                  " +msgstr "" + +#: admin/em-admin.php:179 +#, php-format +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Эта Ñтраница ÑоответÑтвует Ñтранице Ñеминаров в Events Manager. Ее Ñодержание будет перепиÑано Events Manager, хотÑ, еÑли она будет Ñодержать Ñлово CONTENTS (заглавными) в окружении другого текÑта, то только CONTENTS будет перезапиÑано. ЕÑли вы хотите изменить вид ваших Ñеминаров, перейдите в наÑтройки Ñтраницы." + +#: em-functions.php:74 +#, php-format +msgid "Displaying %s–%s of %s" +msgstr "Показывает %s–%s Ñ %s" + +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +msgid "Approve" +msgstr "Утвердить" + +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-rejected.php:55 +msgid "Decline" +msgstr "Отклонить" + +#: admin/bookings/em-cancelled.php:84 +#: admin/bookings/em-confirmed.php:85 +#: admin/bookings/em-pending.php:99 +#: admin/bookings/em-rejected.php:84 +#, fuzzy +msgid "Booker" +msgstr "Заказан" + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "ВоÑÑтановление" + +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-rejected.php:112 +msgid "Edit/View" +msgstr "Редактировать / ПоÑмотреть" + +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Ðет отмененных заказов." + +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +msgid "Unapprove" +msgstr "Ðе принимать" + +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +msgid "Reject" +msgstr "Отказать" + +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +msgid "No confirmed bookings." +msgstr "Ðет подтвержденных заказов." + +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Ðет отклоненных заказов." + +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Ðет отложенных заказов." + +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Ð’Ñе Ñеминары" + +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Будущие Ñеминары" + +#: admin/bookings/em-events.php:51 +msgid "Total" +msgstr "Итого" + +#: admin/bookings/em-events.php:72 +msgid "Filter" +msgstr "Фильтр" + +#: admin/em-options.php:615 +#: admin/em-options.php:665 +#: admin/em-options.php:755 +#: classes/em-location-posts-admin.php:41 +msgid "Town" +msgstr "Город" + +#: admin/em-admin.php:41 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "Получение Ñправки Ð´Ð»Ñ Events Manager" + +#: admin/em-help.php:25 +msgid "Placeholders for customizing event pages" +msgstr "Заполнители Ð´Ð»Ñ Ð½Ð°Ñтройки Ñтраниц Ñеминара" + +#: admin/em-help.php:26 +#, php-format +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "Ðа Ñтранице наÑтроек, вы найдете различные полÑ, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ которых Ñможете менÑть вид информации о Ñеминаре, как Ð´Ð»Ñ ÑпиÑков меÑÑ‚ и Ñеминаров. С помощью Ñледующего Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»Ñ Ð²Ñ‹ можете выбрать, какую информацию отображать." + +#: admin/em-admin.php:90 +#: classes/em-people.php:28 +msgid "Events Manager" +msgstr "Events Manager" + +#: em-functions.php:213 +msgid "Mon" +msgstr "Пн" + +#: em-functions.php:213 +msgid "Tue" +msgstr "Ð’Ñ‚" + +#: em-functions.php:213 +msgid "Wed" +msgstr "Ср" + +#: em-functions.php:213 +msgid "Thu" +msgstr "Чт" + +#: em-functions.php:213 +msgid "Fri" +msgstr "Пт" + +#: em-functions.php:213 +msgid "Sat" +msgstr "Сб" + +#: em-functions.php:213 +msgid "Sun" +msgstr "Ð’Ñ" + +#: classes/em-event-post-admin.php:192 +#: classes/em-event-post-admin.php:359 +#: classes/em-event-post-admin.php:365 +msgid "Group Ownership" +msgstr "Групповое владение" + +#: classes/em-event-post-admin.php:185 +msgid "Bookings Stats" +msgstr "СтатиÑтика заказов" + +#: templates/forms/event/booking-stats.php:12 +msgid "Available Spaces" +msgstr "ДоÑтупные меÑта" + +#: templates/forms/event/booking-stats.php:13 +msgid "Confirmed Spaces" +msgstr "Подтвержденные меÑта" + +#: templates/forms/event/booking-stats.php:14 +msgid "Pending Spaces" +msgstr "МеÑта в ожидании подтверждениÑ" + +#: templates/forms/event/booking-stats.php:32 +msgid "No responses yet!" +msgstr "Пока нет ответов!" + +#: classes/em-event-post-admin.php:246 +#, php-format +msgid "No categories available, create one here first" +msgstr "Ðет доÑтупных категорий, Ñоздать здеÑÑŒ первую" + +#: templates/forms/event-editor.php:169 +msgid "No image uploaded for this event yet" +msgstr "Изображение Ð´Ð»Ñ Ñтого Ñеминара пока не загружено" + +#: classes/em-event-post-admin.php:189 +#: classes/em-event-post-admin.php:362 +msgid "Attributes" +msgstr "Ðтрибуты" + +#: templates/forms/event/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Ð’Ñ‹ не определили ни одного пользовательÑкого атрибута в наÑтроках шаблонов Events Manager. ПожалуйÑта, добавьте их на Ñтранице наÑтроек" + +#: templates/forms/event/attributes.php:50 +msgid "Depreciated Attributes" +msgstr "Сокращенные атрибуты" + +#: templates/forms/event/attributes.php:83 +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings to add attribute placeholders." +msgstr "Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾ чтобы иÑпользовать атрибуты, вы должны определить их шаблонах, в противном Ñлучае они не будут отображатьÑÑ. Откройте Семинары> ÐаÑтройки, чтобы добавить атрибут заполнителей." + +#: em-install.php:284 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_NAME on #F #j, #Y. He wants to reserve #_BOOKINGSPACES spaces.
                                  Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                                  Yours faithfully,
                                  Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) будет приÑутÑтвовать на #_NAME #F #у, #Y. Он хочет забронировать #_BOOKINGSPACES меÑÑ‚.
                                  Теперь забронировано #_BOOKEDSPACES меÑÑ‚, #_AVAILABLESPACES меÑÑ‚ по-прежнему доÑтупны.
                                  С уважением,
                                  Events Manager - http://wp-events-plugin.com" + +#: em-install.php:284 +#: em-install.php:285 +#: em-install.php:286 +#: em-install.php:287 +#: em-install.php:288 +#: em-install.php:289 +#: em-install.php:290 +#: em-install.php:291 +msgid "

                                  -------------------------------
                                  Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

                                  -------------------------------
                                  Работает под управлением Events Manager - http://wp-events-plugin.com" + +#: em-install.php:285 +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_NAME on #F #j, #Y. He wanted to reserve #_BOOKINGSPACES spaces.
                                  Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                                  Yours faithfully,
                                  Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) отменил Ñвой заказ на #_NAME на #F #у, #Y. Он хотел ÑнÑть бронирование Ñ #_BOOKINGSPACES меÑÑ‚.
                                  Теперь забронировано #_BOOKEDSPACES меÑÑ‚, #_AVAILABLESPACES меÑÑ‚ еще доÑтупны.
                                  С уважением,
                                  Events Manager - http://wp-events-plugin.com" + +#: em-install.php:286 +msgid "Dear #_BOOKINGNAME,
                                  you have successfully reserved #_BOOKINGSPACES space/spaces for #_NAME.
                                  Yours faithfully,
                                  #_CONTACTNAME" +msgstr "Уважаемый #_BOOKINGNAME,
                                  Ð’Ñ‹ уÑпешно забронировали #_BOOKINGSPACES меÑто / меÑта / меÑÑ‚ Ð´Ð»Ñ #_NAME.
                                  С уважением,
                                  #_CONTACTNAME" + +#: em-install.php:287 +msgid "Dear #_BOOKINGNAME,
                                  You have requested #_BOOKINGSPACES space/spaces for #_NAME.
                                  Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
                                  Yours faithfully,
                                  #_CONTACTNAME" +msgstr "Уважаемый #_BOOKINGNAME,
                                  Ð’Ñ‹ запроÑили #_BOOKINGSPACES меÑÑ‚ / меÑта / меÑÑ‚ Ð´Ð»Ñ #_NAME.
                                  Ваш заказ в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚ÑÑ Ð½Ð° утверждении наших админиÑтраторов. ПоÑле ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð²Ñ‹ получите автоматичеÑкое подтверждение.
                                  С уважением,
                                  #_CONTACTNAME" + +#: em-install.php:288 +msgid "Dear #_BOOKINGNAME,
                                  Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been rejected.
                                  Yours faithfully,
                                  #_CONTACTNAME" +msgstr "Уважаемый #_BOOKINGNAME,
                                  ваш Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° бронирование #_BOOKINGSPACES меÑта / меÑÑ‚ на #_NAME на # F # у, # Y был отклонен.
                                  С уважением,
                                  #_CONTACTNAME" + +#: em-install.php:289 +msgid "Dear #_BOOKINGNAME,
                                  Your requested booking for #_BOOKINGSPACES spaces at #_NAME on #F #j, #Y has been cancelled.
                                  Yours faithfully,
                                  #_CONTACTNAME" +msgstr "Уважаемый #_BOOKINGNAME,
                                  ваш Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° бронирование #_BOOKINGSPACES меÑта / меÑÑ‚ на #_NAME на # F # у, # Y был отменен.
                                  С уважением,
                                  #_CONTACTNAME" + +#: em-install.php:379 +#: em-install.php:387 +#: em-install.php:418 +#, php-format +msgid "No %s" +msgstr "Ðет %s" + +#: em-debug.php:18 +#: em-install.php:406 +msgid "
                                • No events in this location
                                • " +msgstr "
                                • Ðет Ñобытий в Ñтом меÑте
                                • " + +#: em-install.php:419 +#, fuzzy +msgid "
                                • No events in this category
                                • " +msgstr "
                                • Ðет Ñобытий в Ñтом меÑте
                                • " + +#: em-install.php:487 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Заказ выполнен уÑпешно, ожидает Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ (вы также получите Ñлектронное пиÑьмо поÑле подтверждениÑ)." + +#: em-install.php:488 +msgid "Booking successful." +msgstr "Заказ выполнен уÑпешно." + +#: em-install.php:490 +msgid "You must log in or register to make a booking." +msgstr "Ð’Ñ‹ должны войти в ÑиÑтему или зарегиÑтрируйтеÑÑŒ, чтобы Ñделать заказ." + +#: em-install.php:491 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "Возникли проблемы при отправле пиÑем Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸ÐµÐ¼ вам и/или контакным лицам мероприÑтиÑ. Ð’Ñ‹ можете ÑвÑзатьÑÑ Ñ Ð½Ð¸Ð¼Ð¸ напрÑмую и Ñообщить об Ñтой ошибке." + +#: em-install.php:492 +msgid "Booking could not be created" +msgstr "Заказ не может быть Ñоздан" + +#: em-install.php:493 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Это Ñообщение уже ÑущеÑтвует в нашей ÑиÑтеме, пожалуйÑта, войдите, чтобы зарегиÑтрироватьÑÑ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð±Ñ€Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ." + +#: em-install.php:494 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Ð”Ð»Ñ Ð²Ð°Ñ Ð±Ñ‹Ð»Ð° Ñоздана Ð½Ð¾Ð²Ð°Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ. ПожалуйÑта, проверьте Ñвою Ñлектронную почту, чтобы узнать подробноÑти." + +#: em-install.php:495 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Возникли проблемы при Ñоздании учетной запиÑи пользователÑ, пожалуйÑта, ÑвÑжитеÑÑŒ Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратором Ñайта." + +#: em-install.php:496 +msgid "You already have booked a seat at this event." +msgstr "Ð’Ñ‹ уже забронировали меÑто на Ñтом Ñеминаре." + +#: em-install.php:497 +msgid "You must request at least one space to book an event." +msgstr "Ð’Ñ‹ должны забронировать минимум 1 меÑто." + +#: em-install.php:504 +#: em-install.php:512 +msgid "Booking Cancelled" +msgstr "Заказ билетов отменен" + +#: em-install.php:506 +msgid "Booking Pending" +msgstr "Заказ на утверждении" + +#: em-install.php:508 +msgid "Booking Rejected" +msgstr "Заказ отклонен" + +#: em-install.php:510 +msgid "Booking Confirmed" +msgstr "Заказ подтвержден" + +#: em-install.php:515 +msgid "Powered by" +msgstr "Работает под управлением" + +#: em-install.php:516 +msgid "Bookings - #_NAME" +msgstr "Заказы - #_NAME" + +#: em-debug.php:44 +#, php-format +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "Ð’Ñ‹ находитеÑÑŒ в режиме отладки Events Manager. Чтобы выключить режим отладки, перейдите наÑтраницу наÑтроек." + +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "ОтÑутÑтвует Id билета" + +#: em-actions.php:181 +#, php-format +msgid "%s successfully deleted" +msgstr "%s уÑпешно удален" + +#: em-actions.php:358 +#, php-format +msgid "Booking %s" +msgstr "Бронирование %s." + +#: events-manager.php:295 +#: events-manager.php:303 +#: events-manager.php:309 +#, php-format +msgid "You do not have permission to publish %s" +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на публикацию %s." + +#: events-manager.php:299 +#: events-manager.php:307 +#: events-manager.php:313 +#: events-manager.php:319 +#, php-format +msgid "You do not have permission to edit %s" +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на редактирование %s." + +#: events-manager.php:296 +#: events-manager.php:304 +#: events-manager.php:310 +#, php-format +msgid "You do not have permission to delete others %s" +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на удаление других %s." + +#: events-manager.php:298 +#: events-manager.php:306 +#: events-manager.php:312 +#, php-format +msgid "You do not have permission to edit others %s" +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на редактирование других %s." + +#: events-manager.php:292 +#, php-format +msgid "You do not have permission to manage others %s" +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на управление другими %s." + +#: admin/em-options.php:835 +#: events-manager.php:292 +#: events-manager.php:293 +msgid "bookings" +msgstr "заказы" + +#: events-manager.php:297 +#: events-manager.php:305 +#: events-manager.php:311 +#: events-manager.php:318 +#, php-format +msgid "You do not have permission to delete %s" +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° удаление %s." + +#: events-manager.php:293 +#, php-format +msgid "You do not have permission to manage %s" +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° управление %s." + +#: admin/em-options.php:402 +#: admin/em-options.php:703 +#: em-posts.php:66 +#: em-posts.php:69 +msgid "Event Categories" +msgstr "Категории Ñеминаров" + +#: admin/em-admin.php:40 +msgid "Events Manager Settings" +msgstr "ÐаÑтройки Events Manager" + +#: admin/em-admin.php:40 +#: admin/em-admin.php:199 +#: admin/em-admin.php:207 +msgid "Settings" +msgstr "ÐаÑтройки" + +#: admin/em-admin.php:41 +msgid "Help" +msgstr "Помощь" + +#: admin/em-bookings.php:289 +#, fuzzy +msgid "Tax" +msgstr "МакÑ" + +# @ dbem +#: admin/em-bookings.php:294 +msgid "Total (inc. tax)" +msgstr "" + +#: templates/forms/event/bookings.php:24 +#, fuzzy +msgid "You can have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "У Ð²Ð°Ñ ÐµÑть один или неÑколько билетов, Ñоздание которых ÑтановитÑÑ Ð´Ð¾Ñтупно при определенных уÑловиÑÑ…, например, заказ заранее, групповые Ñкидки и Ñ‚.д." + +# @ dbem +#: templates/forms/event/bookings.php:24 +msgid "Basic HTML is allowed in ticket labels and descriptions." +msgstr "" + +# @ dbem +#: admin/em-options.php:1117 +msgid "Ticket Price (Descending)" +msgstr "" + +# @ dbem +#: admin/em-options.php:1118 +msgid "Ticket Price (Ascending)" +msgstr "" + +#: admin/em-options.php:1119 +#, fuzzy +msgid "Ticket Name (Ascending)" +msgstr "Ðазвание билета" + +#: admin/em-options.php:1120 +#, fuzzy +msgid "Ticket Name (Descending)" +msgstr "Ðазвание билета" + +#: admin/em-options.php:1057 +#, fuzzy +msgid "Can users cancel their booking?" +msgstr "%s пользователÑ(ей) отменили заказы." + +# @ dbem +#: admin/em-options.php:1057 +msgid "If enabled, users can cancel their bookings themselves from their bookings page." +msgstr "" + +# @ dbem +#: admin/em-options.php:1073 +msgid "Tax Rate" +msgstr "" + +# @ dbem +#: admin/em-options.php:1073 +msgid "Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price)." +msgstr "" + +# @ dbem +#: admin/em-options.php:1074 +msgid "Add tax to ticket price?" +msgstr "" + +# @ dbem +#: admin/em-options.php:1074 +msgid "When displaying ticket prices and booking totals, include the tax automatically?" +msgstr "" + +#: admin/em-options.php:1122 +#, fuzzy +msgid "Order Tickets By" +msgstr "УпорÑдочить по" + +# @ dbem +#: admin/em-options.php:1122 +msgid "Choose which order your tickets appear." +msgstr "" + +#: admin/em-options.php:1130 +#, fuzzy +msgid "No-User Booking Mode" +msgstr "Примечение заказа" + +# @ dbem +#: admin/em-options.php:1134 +msgid "By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them." +msgstr "" + +# @ dbem +#: admin/em-options.php:1136 +msgid "Warning : Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information." +msgstr "" + +#: admin/em-options.php:1139 +#, fuzzy +msgid "Enable No-User Booking Mode?" +msgstr "Включить бронирование?" + +#: admin/em-options.php:1139 +#, fuzzy +msgid "This disables user registrations for bookings." +msgstr "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² вашем блоге %s:" + +#: admin/em-options.php:1145 +#, fuzzy +msgid "Assign bookings to" +msgstr "заказы" + +#: admin/em-options.php:1214 +#, fuzzy +msgid "Event Email Templates" +msgstr "Шаблоны пиÑем о заказах" + +#: admin/em-options.php:1224 +#: em-install.php:333 +#, fuzzy +msgid "Event Approved" +msgstr "Подтвержден" + +# @ dbem +#: admin/em-options.php:1225 +msgid "An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the publish_events capability." +msgstr "" + +#: admin/em-options.php:1221 +#: admin/em-options.php:1227 +#, fuzzy +msgid "Event approved subject" +msgstr "Тема пиÑьма контактному лицу" + +#: admin/em-options.php:1222 +#: admin/em-options.php:1228 +#, fuzzy +msgid "Event approved email" +msgstr "Детали Ñеминара" + +#: classes/em-booking.php:376 +#: classes/em-booking.php:384 +#, fuzzy +msgid "Guest User" +msgstr "ГоÑть по умолчанию" + +# @ dbem +#: classes/em-booking.php:380 +msgid "Not Supplied" +msgstr "" + +# @ dbem +#: classes/em-ticket.php:157 +msgid "Please enter a valid ticket price e.g. 10.50 (no currency signs)" +msgstr "" + +# @ dbem +#: em-install.php:290 +msgid "Dear #_CONTACTNAME,
                                  Your event #_NAME on #F #j, #Y has been approved.
                                  You can view your event here: #_EVENTURL" +msgstr "" + +# @ dbem +#: templates/placeholders/bookingform.php:17 +msgid "This event is fully booked." +msgstr "" + +#: admin/em-admin.php:91 +#, fuzzy +msgid "Update Blogs" +msgstr "Обновить меÑтоположение" + +#: admin/em-admin.php:139 +#, fuzzy, php-format +msgid "Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "По какой-то причине WordPress не удалоÑÑŒ Ñоздать Ñтраницу Ñеминаров Ð´Ð»Ñ Ð²Ð°Ñ (или вы только что удалили ее). Ðе волнуйтеÑÑŒ, вÑе, что вам нужно Ñделать - Ñоздать пуÑтую Ñтраницу, назвать ее как вам угодно, и выбрать ее в качеÑтве Ñтраницы Ñеминаров на вашей Ñтранице наÑтроек . Извините за дополнительные дейÑтвиÑ! ЕÑли вы знаете, что вы делаете, вы, возможно, Ñделали Ñто Ñпециально, и еÑли да, то можете проигнорировать Ñто Ñообщение" + +# @ dbem +#: admin/em-admin.php:148 +msgid "There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update." +msgstr "" + +# @ dbem +#: admin/em-admin.php:159 +#, php-format +msgid "MultiSite options have moved here. Dismiss message" +msgstr "" + +# @ dbem +#: admin/em-admin.php:171 +#, php-format +msgid "Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" +msgstr "" + +# @ dbem +#: admin/em-admin.php:213 +#: admin/em-options.php:1463 +msgid "Uninstall" +msgstr "" + +#: admin/em-ms-options.php:6 +#, fuzzy +msgid "Update Network" +msgstr "Обновить категорию" + +# @ default +#: admin/em-ms-options.php:24 +msgid "To update your network blogs with the latest Events Manager automatically, click the update button below." +msgstr "" + +#: admin/em-ms-options.php:27 +#, fuzzy +msgid "Update" +msgstr "обновлено" + +#: admin/em-ms-options.php:136 +#: admin/em-options.php:267 +#: admin/em-options.php:1051 +#, fuzzy +msgid "General" +msgstr "Общие параметры" + +# @ default +#: admin/em-ms-options.php:157 +#, php-format +msgid "%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network." +msgstr "" + +#: admin/em-ms-options.php:158 +#, fuzzy, php-format +msgid "When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site." +msgstr "При отображении глобальных Ñеминаров на главном Ñайте у Ð²Ð°Ñ ÐµÑть возможноÑть выбора - будет ли пользователь проÑматривать подробную информацию на главном Ñайте или перенаправлÑтьÑÑ Ð½Ð° подÑайт." + +#: admin/em-ms-options.php:159 +#, fuzzy, php-format +msgid "Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Отображает ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ñо вÑех Ñайтов в Ñети по умолчанию. Ð’Ñ‹ вÑе еще можете ограничить Ñеминары блогами, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ¸Ðµ коды и теги шаблонов в Ñочетании Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ блог. Ðеобходимо включение режима глобальных таблиц." + +# @ default +#: admin/em-ms-options.php:160 +#, php-format +msgid "You must have assigned a %s page in your main blog settings for this to work." +msgstr "" + +#: admin/em-ms-options.php:162 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:1051 +#: admin/em-options.php:1067 +#: admin/em-options.php:1083 +#: admin/em-options.php:1108 +#, fuzzy, php-format +msgid "%s Options" +msgstr "Вариант 1" + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:173 +#, fuzzy, php-format +msgid "Link sub-site %s directly to sub-site?" +msgstr "Сделать ÑÑылку Ñ Ð¿Ð¾Ð´-Ñеминаров на их подÑайт?" + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, php-format +msgid "Global %s slug" +msgstr "" + +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, fuzzy +msgid "Example:" +msgstr "ИмÑ:" + +#: admin/em-ms-options.php:167 +#, fuzzy +msgid "Locations on main blog?" +msgstr "Формат меÑÑ‚" + +# @ dbem +#: admin/em-ms-options.php:167 +msgid "If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog." +msgstr "" + +#: admin/em-ms-options.php:172 +#, fuzzy, php-format +msgid "Display global %s on main blog?" +msgstr "Показывать глобальные Ñеминары в главном блоге?" + +# @ dbem +#: admin/em-options.php:112 +msgid "Settings have been reset back to default. Your events, locations and categories have not been modified." +msgstr "" + +#: admin/em-options.php:125 +#: admin/em-options.php:129 +#, fuzzy +msgid "Reset Events Manager" +msgstr "Events Manager" + +#: admin/em-options.php:126 +#, fuzzy +msgid "Are you sure you want to reset Events Manager?" +msgstr "Ð’Ñ‹ уверены, что хотите отменить Ñвой заказ?" + +# @ dbem +#: admin/em-options.php:127 +msgid "All your settings, including email templates and template formats for Events Manager will be deleted." +msgstr "" + +#: admin/em-options.php:141 +#, fuzzy +msgid "Uninstall Events Manager" +msgstr "Events Manager" + +#: admin/em-options.php:142 +#, fuzzy +msgid "Are you sure you want to uninstall Events Manager?" +msgstr "Ð’Ñ‹ уверены, что хотите отменить Ñвой заказ?" + +# @ dbem +#: admin/em-options.php:143 +msgid "All your settings and events will be permanently deleted. This cannot be undone." +msgstr "" + +# @ dbem +#: admin/em-options.php:144 +#, php-format +msgid "If you just want to deactivate the plugin, go to your plugins page." +msgstr "" + +# @ dbem +#: admin/em-options.php:146 +msgid "Uninstall and Deactivate" +msgstr "" + +#: admin/em-options.php:268 +#: admin/em-options.php:418 +#: admin/em-options.php:581 +#, fuzzy +msgid "Pages" +msgstr "Страница %s" + +# @ dbem +#: admin/em-options.php:269 +msgid "Formats/Layouts" +msgstr "" + +#: admin/em-options.php:271 +#, fuzzy +msgid "Booking Options" +msgstr "Детали заказа" + +#: admin/em-options.php:273 +#, fuzzy +msgid "Emails" +msgstr "Email" + +#: admin/em-options.php:287 +#, fuzzy +msgid "General Options" +msgstr "Общие параметры" + +# @ dbem +#: admin/em-options.php:290 +msgid "Disable thumbnails?" +msgstr "" + +# @ dbem +#: admin/em-options.php:290 +msgid "Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here)." +msgstr "" + +#: admin/em-options.php:293 +#: admin/em-options.php:334 +#: admin/em-options.php:346 +#, fuzzy, php-format +msgid "%s Settings" +msgstr "ÐаÑтройки" + +#: admin/em-options.php:297 +#, fuzzy +msgid "Enable recurrence?" +msgstr "ИÑпользовать повторение?" + +#: admin/em-options.php:299 +#, fuzzy +msgid "Enable tags?" +msgstr "Включить бронирование?" + +#: admin/em-options.php:299 +#, fuzzy +msgid "Select yes to enable the tag features" +msgstr "Выберите Да Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ категорий" + +#: admin/em-options.php:301 +#, fuzzy +msgid "Enable categories?" +msgstr "ИÑпользовать категории?" + +# @ dbem +#: admin/em-options.php:310 +msgid "If an event does not have a category assigned when editing, this one will be assigned automatically." +msgstr "" + +#: admin/em-options.php:313 +#, fuzzy +msgid "Enable event attributes?" +msgstr "ИÑользовать атрибуты Ñобытий?" + +# @ dbem +#: admin/em-options.php:314 +msgid "Enable event custom fields?" +msgstr "" + +# @ dbem +#: admin/em-options.php:314 +msgid "Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area." +msgstr "" + +#: admin/em-options.php:338 +#, fuzzy +msgid "Enable locations?" +msgstr "Включить бронирование?" + +# @ dbem +#: admin/em-options.php:338 +msgid "If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats." +msgstr "" + +#: admin/em-options.php:340 +#, fuzzy +msgid "Require locations for events?" +msgstr "То же, что Ð´Ð»Ñ Ñеминаров." + +# @ dbem +#: admin/em-options.php:340 +msgid "Setting this to no will allow you to submit events without locations. You can use the {no_location}...{/no_location} or {has_location}..{/has_location} conditional placeholder to selectively display location information." +msgstr "" + +#: admin/em-options.php:346 +#: admin/em-options.php:825 +#: admin/em-options.php:1393 +#, fuzzy +msgid "Other" +msgstr "третий" + +# @ dbem +#: admin/em-options.php:387 +msgid "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter." +msgstr "" + +# @ dbem +#: admin/em-options.php:388 +#, php-format +msgid "Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named single-%s.php as shown on the wordpress codex, and leave this set to Posts." +msgstr "" + +# @ default +#: admin/em-options.php:389 +#, php-format +msgid "By using formats, you can control how your %s are displayed from within the Events Manager Formats tab above without having to edit your theme files." +msgstr "" + +# @ dbem +#: admin/em-options.php:392 +msgid "Permalink Slugs" +msgstr "" + +# @ dbem +#: admin/em-options.php:394 +msgid "You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings." +msgstr "" + +# @ dbem +#: admin/em-options.php:397 +#: admin/em-options.php:399 +#: admin/em-options.php:402 +#: admin/em-options.php:405 +#, php-format +msgid "e.g. %s - you can use / seperators too" +msgstr "" + +#: admin/em-options.php:405 +#: admin/em-options.php:793 +#: em-posts.php:29 +#: em-posts.php:32 +#, fuzzy +msgid "Event Tags" +msgstr "Изображение Ñеминара" + +#: admin/em-options.php:414 +#: admin/em-options.php:577 +#: admin/em-options.php:825 +#, fuzzy, php-format +msgid "%s Pages" +msgstr "Страница %s" + +#: admin/em-options.php:418 +#: admin/em-options.php:581 +#, fuzzy, php-format +msgid "Display %s as" +msgstr "Показывает адреÑ." + +# @ default +#: admin/em-options.php:418 +#: admin/em-options.php:581 +msgid "Posts" +msgstr "" + +# @ dbem +#: admin/em-options.php:419 +#: admin/em-options.php:500 +#: admin/em-options.php:582 +#: admin/em-options.php:649 +#: admin/em-options.php:721 +#: admin/em-options.php:797 +msgid "Override with Formats?" +msgstr "" + +# @ dbem +#: admin/em-options.php:427 +#: admin/em-options.php:590 +#, php-format +msgid "%s List/Archives" +msgstr "" + +#: admin/em-options.php:435 +#: admin/em-options.php:594 +#: admin/em-options.php:707 +#, fuzzy, php-format +msgid "[No %s Page]" +msgstr "[Ðет Ñтраницы Ñеминаров]" + +# @ dbem +#: admin/em-options.php:440 +msgid "This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags." +msgstr "" + +#: admin/em-options.php:447 +#, fuzzy +msgid "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Ðекоторые темы WordPress не Ñледуют рекомендациÑм при Ñоздании навигационных меню, и потому Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкой замены заголовков может привеÑти к некоторым проблемам, еÑли ваше меню не работает должным образом на Ñтраницах Ñеминаров, попробуйте уÑтановить выбрать Да, а также задать ÑоотвеÑтвующий формат HTML-заголовка ниже." + +#: admin/em-options.php:454 +#: admin/em-options.php:604 +#, fuzzy +msgid "Enable Archives?" +msgstr "Включить бронирование?" + +# @ dbem +#: admin/em-options.php:454 +#: admin/em-options.php:604 +msgid "Allow WordPress post-style archives." +msgstr "" + +#: admin/em-options.php:459 +#, fuzzy +msgid "Default event archive ordering" +msgstr "ПорÑдок ÑпиÑка Ñеминаров по умолчанию" + +#: admin/em-options.php:464 +#, fuzzy +msgid "Order by start date, start time" +msgstr "Ñ" + +#: admin/em-options.php:465 +#, fuzzy +msgid "Order by name" +msgstr "УпорÑдочить по" + +#: admin/em-options.php:496 +#: admin/em-options.php:645 +#: admin/em-options.php:717 +#, fuzzy +msgid "General settings" +msgstr "Общие параметры" + +# @ dbem +#: admin/em-options.php:502 +#: admin/em-options.php:650 +msgid "Include in WordPress Searches?" +msgstr "" + +# @ dbem +#: admin/em-options.php:502 +#: admin/em-options.php:650 +#, php-format +msgid "Allow %s to appear in the built-in search results." +msgstr "" + +#: admin/em-options.php:506 +#: admin/em-options.php:654 +#: admin/em-options.php:744 +#, fuzzy, php-format +msgid "Default %s list options" +msgstr "Формат ÑпиÑка %s по умолчанию" + +# @ dbem +#: admin/em-options.php:507 +#: admin/em-options.php:655 +#: admin/em-options.php:745 +msgid "These can be overriden when using shortcode or template tags." +msgstr "" + +#: admin/em-options.php:595 +#: admin/em-options.php:708 +#: admin/em-options.php:832 +#: admin/em-options.php:833 +#: admin/em-options.php:834 +#: admin/em-options.php:835 +#, fuzzy, php-format +msgid "%s page" +msgstr "Страница %s" + +# @ dbem +#: admin/em-options.php:595 +#, php-format +msgid "This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags." +msgstr "" + +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, fuzzy, php-format +msgid "Show %s page in lists?" +msgstr "Показать Ñтраницу Ñеминаров в ÑпиÑках?" + +#: admin/em-options.php:599 +#: admin/em-options.php:712 +#, fuzzy, php-format +msgid "Check this option if you want the %s page to appear together with other pages in pages lists." +msgstr "Включите Ñту опцию, еÑли вы хотите, чтобы Ñтраница Ñеминаров поÑвилаÑÑŒ вмеÑте Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ Ñтраницами в ÑпиÑках Ñтраниц." + +#: admin/em-options.php:609 +#: admin/em-options.php:724 +#: admin/em-options.php:800 +#, fuzzy +msgid "Default archive ordering" +msgstr "ПорÑдок ÑпиÑка Ñеминаров по умолчанию" + +#: admin/em-options.php:614 +#: admin/em-options.php:615 +#: admin/em-options.php:616 +#: admin/em-options.php:664 +#: admin/em-options.php:665 +#: admin/em-options.php:666 +#: admin/em-options.php:754 +#: admin/em-options.php:755 +#: admin/em-options.php:756 +#, fuzzy, php-format +msgid "Order by %s" +msgstr "УпорÑдочить по" + +#: admin/em-options.php:659 +#: admin/em-options.php:749 +#, fuzzy +msgid "Default list ordering" +msgstr "ПорÑдок ÑпиÑка Ñеминаров по умолчанию" + +#: admin/em-options.php:693 +#: admin/em-options.php:783 +#, fuzzy +msgid "List Limits" +msgstr "ÐžÐ³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ ÑпиÑка Ñеминаров" + +#: admin/em-options.php:693 +#: admin/em-options.php:783 +#, fuzzy, php-format +msgid "This will control how many %s are shown on one list by default." +msgstr "ЗдеÑÑŒ вы Ñможете задать, Ñколько Ñеминаров выводитÑÑ Ð½Ð° одной Ñтранице по умолчанию." + +#: admin/em-options.php:708 +#, fuzzy, php-format +msgid "This option allows you to select which page to use as the %s page." +msgstr "Эта Ð¾Ð¿Ñ†Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет вам выбрать, какую Ñтраницу иÑпользовать в качеÑтве Ñтраницы Ñеминаров" + +# @ default +#: admin/em-options.php:721 +msgid "Setting this to yes will make categories display as a page rather than an archive." +msgstr "" + +#: admin/em-options.php:797 +#, fuzzy +msgid "tags" +msgstr "СтатуÑ" + +# @ default +#: admin/em-options.php:827 +msgid "These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated." +msgstr "" + +#: admin/em-options.php:831 +#: classes/em-event-posts-admin.php:117 +#: classes/em-event-posts-admin.php:233 +#, fuzzy +msgid "None" +msgstr "не задано" + +#: admin/em-options.php:832 +#, fuzzy +msgid "Edit events" +msgstr "Редактировать Ñеминар" + +#: admin/em-options.php:833 +#, fuzzy +msgid "Edit locations" +msgstr "Изменить меÑтоположение" + +#: admin/em-options.php:834 +#, fuzzy +msgid "Manage bookings" +msgstr "управление заказами" + +#: admin/em-options.php:835 +#, fuzzy +msgid "My bookings" +msgstr "Мои Заказы" + +#: admin/em-options.php:835 +#, fuzzy +msgid "Users can view their bookings for other events on this page." +msgstr "Пользователь может иÑпользовать и управлÑть бронированием на Ñвоих Ñеминарах." + +# @ dbem +#: admin/em-options.php:869 +msgid "Search Form Options" +msgstr "" + +#: admin/em-options.php:873 +#, fuzzy +msgid "Show text search?" +msgstr "Показать поиÑк Ñеминаров?" + +# @ dbem +#: admin/em-options.php:874 +msgid "Text search label" +msgstr "" + +# @ dbem +#: admin/em-options.php:874 +msgid "Appears within the input box." +msgstr "" + +# @ dbem +#: admin/em-options.php:875 +msgid "Show date range?" +msgstr "" + +#: admin/em-options.php:876 +#, fuzzy +msgid "Show categories?" +msgstr "ИÑпользовать категории?" + +#: admin/em-options.php:877 +#, fuzzy +msgid "Categories label" +msgstr "Категории" + +# @ dbem +#: admin/em-options.php:877 +#: admin/em-options.php:879 +#: admin/em-options.php:881 +#: admin/em-options.php:883 +#: admin/em-options.php:885 +msgid "Appears as the first default search option." +msgstr "" + +#: admin/em-options.php:878 +#, fuzzy +msgid "Show countries?" +msgstr "Ð’Ñе Ñтраны" + +#: admin/em-options.php:879 +#, fuzzy +msgid "All countries text" +msgstr "Ð’Ñе Ñтраны" + +#: admin/em-options.php:880 +#, fuzzy +msgid "Show regions?" +msgstr "Показать длительные Ñеминары?" + +#: admin/em-options.php:881 +#, fuzzy +msgid "All regions text" +msgstr "Ð’Ñе регионы" + +# @ dbem +#: admin/em-options.php:882 +msgid "Show states?" +msgstr "" + +#: admin/em-options.php:883 +#, fuzzy +msgid "All states text" +msgstr "Ð’Ñе штаты" + +# @ dbem +#: admin/em-options.php:884 +msgid "Show towns/cities?" +msgstr "" + +# @ dbem +#: admin/em-options.php:885 +msgid "All towns/cities text" +msgstr "" + +#: admin/em-options.php:893 +#, fuzzy +msgid "Date/Time formats" +msgstr "Формат категорий" + +# @ dbem +#: admin/em-options.php:895 +#, php-format +msgid "Date and Time formats follow the WordPress time formatting conventions" +msgstr "" + +#: admin/em-options.php:898 +#, fuzzy +msgid "Date Format" +msgstr "Формат текÑта на карте" + +#: admin/em-options.php:898 +#: admin/em-options.php:900 +#, fuzzy, php-format +msgid "For use with the %s placeholder" +msgstr "Принимает заполнитель %s." + +# @ dbem +#: admin/em-options.php:899 +msgid "Date Seperator" +msgstr "" + +# @ dbem +#: admin/em-options.php:899 +#: admin/em-options.php:901 +#, php-format +msgid "For when start/end %s are present, this will seperate the two (include spaces here if necessary)." +msgstr "" + +#: admin/em-options.php:899 +#, fuzzy +msgid "dates" +msgstr "обновлено" + +# @ dbem +#: admin/em-options.php:900 +msgid "Time Format" +msgstr "" + +# @ dbem +#: admin/em-options.php:901 +msgid "Time Seperator" +msgstr "" + +# @ dbem +#: admin/em-options.php:901 +msgid "times" +msgstr "" + +#: admin/em-options.php:918 +#, fuzzy +msgid "Full calendar events/day limit" +msgstr "Формат полного ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ Ñемнаров" + +# @ dbem +#: admin/em-options.php:918 +msgid "To reduce the clutter on your calendar, you can add a limit to events displayed in one day on the calendar." +msgstr "" + +#: admin/em-options.php:989 +#, fuzzy +msgid "Tags format" +msgstr "Формат категорий" + +# @ dbem +#: admin/em-options.php:992 +msgid "Tag" +msgstr "" + +# @ dbem +#: admin/em-options.php:994 +#: admin/em-options.php:995 +msgid "tag" +msgstr "" + +#: admin/em-options.php:994 +#, fuzzy +msgid "The format of a single tag page title." +msgstr "Формат заголовка Ñтраницы отдельного Ñеминара." + +#: admin/em-options.php:995 +#, fuzzy +msgid "The format of a single tag page." +msgstr "Формат Ñтраницы Ð´Ð»Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ñеминара." + +#: admin/em-options.php:999 +#, fuzzy +msgid "The format of the events the list inserted in the tag page through the #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS element." +msgstr "Формат ÑпиÑка Ñеминаров, вÑтавленного на Ñтранице меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñлементов #_NEXTEVENTS , #_PASTEVENTS и #_ALLEVENTS." + +#: admin/em-options.php:1000 +#, fuzzy +msgid "The message to be displayed in the list generated by #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS when no events are available." +msgstr "Сообщение, которое будет отображатьÑÑ Ð² ÑпиÑке Ñгенерированном Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ #_NEXTEVENTS , #_PASTEVENTS и #_ALLEVENTS, когда Ñеминары недоÑтупны." + +#: admin/em-options.php:1067 +#, fuzzy +msgid "Pricing" +msgstr "Цена" + +#: admin/em-options.php:1083 +#, fuzzy +msgid "Booking Form" +msgstr "Заказ подтвержден" + +#: admin/em-options.php:1108 +#, fuzzy +msgid "Ticket" +msgstr "Билеты" + +# @ dbem +#: admin/em-options.php:1135 +msgid "The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user." +msgstr "" + +# @ dbem +#: admin/em-options.php:1145 +msgid "Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself." +msgstr "" + +#: admin/em-options.php:1169 +#, fuzzy +msgid "Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event." +msgstr "Включите Ñту опцию, еÑли вы не хотите, чтобы отравлÑлоÑÑŒ пиÑьмо о региÑтрации в WordPress, когда пользователь анонимно бронирует меÑта на Ñеминаре." + +#: admin/em-options.php:1217 +#, fuzzy +msgid "Event Submitted" +msgstr "Бронирование подтверждено" + +#: admin/em-options.php:1218 +#, fuzzy +msgid "An email will be sent to the an administrator of your choice when an event is submitted and pending approval." +msgstr "ПиÑьмо будет отправлено контактному лицу, когда заказ билетов делаетÑÑ Ð²Ð¿ÐµÑ€Ð²Ñ‹Ðµ." + +# @ dbem +#: admin/em-options.php:1220 +msgid "Administrator Email" +msgstr "" + +# @ dbem +#: admin/em-options.php:1220 +msgid "If left blank, no email will be sent. Seperate emails with commas for more than one email." +msgstr "" + +#: admin/em-options.php:1272 +#, fuzzy +msgid "Event Submission Forms" +msgstr "ÐÐ½Ð¾Ð½Ð¸Ð¼Ð½Ð°Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ° Ñеминаров" + +#: admin/em-options.php:1276 +#, fuzzy, php-format +msgid "You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below." +msgstr "Ð’Ñ‹ можете позволить пользователÑм публично Ñоздавать Ñеминары в Ñвоем блоге Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ [event_form] кода, и включив анонимную отправку ниже." + +# @ dbem +#: admin/em-options.php:1279 +msgid "Use Visual Editor?" +msgstr "" + +# @ dbem +#: admin/em-options.php:1279 +msgid "Users can now use the WordPress editor for easy HTML entry in the submission form." +msgstr "" + +# @ dbem +#: admin/em-options.php:1280 +msgid "Show form again?" +msgstr "" + +# @ dbem +#: admin/em-options.php:1280 +msgid "When a user submits their event, you can display a new event form again." +msgstr "" + +# @ dbem +#: admin/em-options.php:1281 +msgid "Customize the message your user sees when they submitted their event." +msgstr "" + +#: admin/em-options.php:1284 +#, fuzzy +msgid "Anonymous event submissions" +msgstr "ÐÐ½Ð¾Ð½Ð¸Ð¼Ð½Ð°Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ° Ñеминаров" + +#: admin/em-options.php:1288 +#, fuzzy +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting." +msgstr "У Ñеминаров должен быть владелец. Чтобы Ñеминары могли ÑоздаватьÑÑ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾, вам надо ÑвÑзать их Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ñ‹Ð¼ пользователем. Рекомендуем вам Ñоздать учетную запиÑÑŒ \"Ðноним\" Ñ ÑƒÑтойчивым паролем и иÑпользовать ее." + +#: admin/em-options.php:1305 +#, fuzzy +msgid "Image Sizes" +msgstr "Размер изображениÑ" + +# @ dbem +#: admin/em-options.php:1331 +msgid "Send HTML Emails?" +msgstr "" + +# @ dbem +#: admin/em-options.php:1331 +msgid "If set to yes, your emails will be sent in HTML format, otherwise plaintext." +msgstr "" + +#: admin/em-options.php:1364 +#: admin/em-options.php:1374 +#: admin/em-options.php:1382 +#: admin/em-options.php:1393 +#, fuzzy, php-format +msgid "%s Capabilities" +msgstr "ПользовательÑкие возможноÑти" + +#: admin/em-options.php:1366 +#: admin/em-options.php:1376 +#: admin/em-options.php:1384 +#, fuzzy, php-format +msgid "Users can publish %s and skip any admin approval" +msgstr "Пользователи могут публиковать Ñеминар и пропуÑтить утверждение админиÑтратором." + +#: admin/em-options.php:1367 +#: admin/em-options.php:1377 +#: admin/em-options.php:1385 +#, fuzzy, php-format +msgid "User can delete other users %s" +msgstr "Пользователь может удалÑть Ñеминары других пользователей." + +#: admin/em-options.php:1368 +#: admin/em-options.php:1378 +#: admin/em-options.php:1386 +#, fuzzy, php-format +msgid "User can edit other users %s" +msgstr "Пользователь может редактировать Ñеминары других пользователей." + +#: admin/em-options.php:1369 +#: admin/em-options.php:1379 +#: admin/em-options.php:1387 +#, fuzzy, php-format +msgid "User can delete their own %s" +msgstr "Пользователь может удалÑть Ñвои меÑта." + +#: admin/em-options.php:1370 +#: admin/em-options.php:1380 +#: admin/em-options.php:1388 +#, fuzzy, php-format +msgid "User can create and edit %s" +msgstr "Пользователь может Ñоздавать и редактировать Ñвои Ñеминары." + +# @ dbem +#: admin/em-options.php:1371 +#: admin/em-options.php:1389 +#, php-format +msgid "User can view private %s" +msgstr "" + +#: admin/em-options.php:1374 +#: em-posts.php:165 +#, fuzzy +msgid "Recurring Event" +msgstr "Повторение" + +#: admin/em-options.php:1376 +#: admin/em-options.php:1377 +#: admin/em-options.php:1378 +#: admin/em-options.php:1379 +#: admin/em-options.php:1380 +#: events-manager.php:303 +#: events-manager.php:304 +#: events-manager.php:305 +#: events-manager.php:306 +#: events-manager.php:307 +#, fuzzy +msgid "recurring events" +msgstr "повторы" + +#: admin/em-options.php:1390 +#, fuzzy +msgid "User can use other user locations for their events." +msgstr "Пользователь может редактировать меÑта других пользователей." + +#: admin/em-options.php:1395 +#, fuzzy, php-format +msgid "User can delete %s categories and tags." +msgstr "Пользователь может удалÑть Ñвои Ñеминары" + +#: admin/em-options.php:1396 +#, fuzzy, php-format +msgid "User can edit %s categories and tags." +msgstr "Пользователь может редактировать глобальные категории." + +#: admin/em-options.php:1400 +#, fuzzy +msgid "User can upload images along with their events and locations." +msgstr "Пользователь может иÑпользовать и управлÑть бронированием на Ñвоих Ñеминарах." + +# @ dbem +#: admin/em-options.php:1460 +msgid "Uninstall/Reset" +msgstr "" + +# @ dbem +#: admin/em-options.php:1462 +msgid "Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data." +msgstr "" + +#: admin/em-options.php:1464 +#, fuzzy +msgid "Reset" +msgstr "Отказать" + +#: buddypress/bp-em-activity.php:58 +#, fuzzy, php-format +msgid "%s added the event %s to %s." +msgstr "%s добавил Ñеминар %s." + +#: buddypress/bp-em-core.php:51 +#, fuzzy, php-format +msgid "Search %s..." +msgstr "Идет поиÑк ..." + +#: buddypress/screens/my-events.php:48 +#: em-events.php:151 +#, fuzzy +msgid "Reschedule Events" +msgstr "Изменить раÑпиÑание" + +# @ dbem +#: classes/em-categories-taxonomy.php:35 +#, php-format +msgid "Choose a color for your category. You can access this using the %s placeholder." +msgstr "" + +# @ dbem +#: classes/em-categories-taxonomy.php:46 +msgid "Choose/Upload Image" +msgstr "" + +# @ dbem +#: classes/em-categories-taxonomy.php:47 +#, php-format +msgid "Choose an image for your category, which can be displayed using the %s placeholder." +msgstr "" + +# @ dbem +#: classes/em-event-post-admin.php:42 +#, php-format +msgid "If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, detach it." +msgstr "" + +# @ dbem +#: classes/em-event-post-admin.php:43 +#, php-format +msgid "To manage the whole set, edit the recurring event template." +msgstr "" + +# @ dbem +#: classes/em-event-post-admin.php:83 +msgid "Your event details are incorrect and recurrences cannot be created, please correct these errors first:" +msgstr "" + +# @ dbem +#: classes/em-event-post-admin.php:85 +#: classes/em-location-post-admin.php:59 +#, php-format +msgid "Your %s details are incorrect and cannot be published, please correct these errors first:" +msgstr "" + +#: classes/em-event-post-admin.php:195 +#, fuzzy +msgid "Site Categories" +msgstr "Категории" + +#: classes/em-event-post-admin.php:352 +#, fuzzy +msgid "Recurrences" +msgstr "Повторение" + +# @ default +#: classes/em-event-post.php:94 +#: classes/em-event-post.php:97 +#: classes/em-event-post.php:102 +#: classes/em-event-post.php:113 +#: classes/em-event-post.php:116 +#: classes/em-event-post.php:121 +#, php-format +msgid "View all posts in %s" +msgstr "" + +#: classes/em-event-posts-admin.php:66 +#, fuzzy +msgid "View all categories" +msgstr "Ð’Ñе категории" + +#: classes/em-event-posts-admin.php:96 +#: classes/em-event-posts-admin.php:215 +#, fuzzy +msgid "Date and Time" +msgstr "Дата и времÑ" + +#: classes/em-event-posts-admin.php:97 +#: classes/em-event-posts-admin.php:216 +#, fuzzy +msgid "Owner" +msgstr "ПорÑдок" + +#: classes/em-event-posts-admin.php:150 +#: templates/buddypress/group-events.php:132 +#: templates/buddypress/my-group-events.php:126 +#: templates/tables/events.php:132 +#, fuzzy +msgid "Edit Recurring Events" +msgstr "Редактировать Ñеминар" + +#: classes/em-event-posts-admin.php:150 +#, fuzzy +msgid "Detach" +msgstr "ПоиÑк" + +#: classes/em-event-posts-admin.php:163 +#, fuzzy, php-format +msgid "Duplicate %s" +msgstr "Копировать Ñто Ñобытие" + +#: classes/em-event-posts-admin.php:163 +#, fuzzy +msgid "Duplicate" +msgstr "обновлено" + +#: classes/em-event-posts-admin.php:187 +#, fuzzy, php-format +msgid "Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the events page." +msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ðº Ñтому Ñеминару повлекут удаление и Ñоздание заново вÑех повторов Ñтого Ñеминара и ÑущеÑтвующие заказы будут удалены! Ð’Ñ‹ можете редактировать отдельные ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¸ отделить их от Ñерии оÑтальных повторов Ñтого Ñеминара." + +#: classes/em-event.php:428 +#, fuzzy +msgid "Event name" +msgstr "Ðазвание Ñеминара" + +#: classes/em-event.php:464 +#, fuzzy +msgid "Since the event is repeated, you must specify an event end date greater than the start date." +msgstr "Так как Ñеминар повторÑетÑÑ, необходимо указать дату Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñеминара." + +# @ dbem +# @ default +#: classes/em-event.php:546 +#: classes/em-event.php:548 +msgid "There were some errors saving your location." +msgstr "" + +# @ default +#: classes/em-event.php:546 +#, php-format +msgid "It will not be displayed on the website listings, to correct this you must edit your location directly." +msgstr "" + +# @ dbem +#: classes/em-event.php:582 +#: classes/em-location.php:332 +#, php-format +msgid "Something went wrong saving your %s to the index table. Please inform a site administrator about this." +msgstr "" + +#: classes/em-event.php:587 +#: classes/em-event.php:596 +#: classes/em-location.php:337 +#: classes/em-location.php:344 +#, fuzzy, php-format +msgid "Successfully saved %s" +msgstr "%s уÑпешно добавлен." + +# @ dbem +#: classes/em-event.php:594 +#: classes/em-location.php:342 +#, php-format +msgid "Something went wrong updating your %s to the index table. Please inform a site administrator about this." +msgstr "" + +#: classes/em-event.php:1159 +#: classes/em-location.php:618 +#, fuzzy, php-format +msgid "Edit %s" +msgstr "Редактировать пользователÑ" + +#: classes/em-event.php:1384 +#, fuzzy +msgid "Event detached." +msgstr "Дата Ñеминара" + +# @ dbem +#: classes/em-event.php:1384 +msgid "Undo" +msgstr "" + +#: classes/em-event.php:1388 +#, fuzzy +msgid "Event could not be detached." +msgstr "%s не может быть удален." + +# @ dbem +#: classes/em-event.php:1402 +msgid "Event re-attached to recurrence." +msgstr "" + +#: classes/em-event.php:1405 +#, fuzzy +msgid "Event could not be attached." +msgstr "%s не может быть удален." + +#: classes/em-location.php:224 +#: widgets/em-locations.php:22 +#, fuzzy +msgid "Location name" +msgstr "Ðазвание меÑта" + +# @ dbem +#: em-install.php:291 +msgid "A new event has been submitted by #_CONTACTNAME.
                                  Name : #_EVENTNAME
                                  Date : #_EVENTDATES
                                  Time : #_EVENTTIMES
                                  Please visit #_EDITEVENTURL to review this event for approval." +msgstr "" + +#: em-install.php:321 +#, fuzzy +msgid "All Cities/Towns" +msgstr "Ð’Ñе Ñтраны" + +# @ dbem +#: em-install.php:325 +#: em-install.php:328 +msgid "You have successfully submitted your event, which will be published pending approval." +msgstr "" + +# @ dbem +#: em-install.php:331 +msgid "Submitted Event Awaiting Approval" +msgstr "" + +#: em-install.php:378 +#, fuzzy +msgid "All Day" +msgstr "Ð’Ñе %s." + +#: em-install.php:424 +#, fuzzy +msgid "
                                • No events in this tag
                                • " +msgstr "
                                • Ðет Ñобытий в Ñтом меÑте
                                • " + +#: em-install.php:502 +#, fuzzy +msgid "New Booking" +msgstr "Ðовый заказ" + +#: em-posts.php:30 +#: em-posts.php:33 +#, fuzzy +msgid "Event Tag" +msgstr "Изображение Ñеминара" + +#: em-posts.php:34 +#, fuzzy +msgid "Search Event Tags" +msgstr "ПоиÑк Ñеминара" + +#: em-posts.php:35 +#, fuzzy +msgid "Popular Event Tags" +msgstr "Прошедшие Ñеминары" + +#: em-posts.php:36 +#, fuzzy +msgid "All Event Tags" +msgstr "Ð’Ñе Ñеминары" + +#: em-posts.php:37 +#, fuzzy +msgid "Parent Event Tags" +msgstr "Прошедшие Ñеминары" + +#: em-posts.php:38 +#, fuzzy +msgid "Parent Event Tag:" +msgstr "Прошедшие Ñеминары" + +#: em-posts.php:39 +#, fuzzy +msgid "Edit Event Tag" +msgstr "Редактировать Ñеминар" + +#: em-posts.php:40 +#, fuzzy +msgid "Update Event Tag" +msgstr "Редактировать Ñеминар" + +#: em-posts.php:41 +#, fuzzy +msgid "Add New Event Tag" +msgstr "Добавить Ñеминар" + +#: em-posts.php:42 +#, fuzzy +msgid "New Event Tag Name" +msgstr "Ðазвание Ñеминара" + +# @ dbem +#: em-posts.php:43 +msgid "Seperate event tags with commas" +msgstr "" + +#: em-posts.php:44 +#: em-posts.php:81 +#, fuzzy +msgid "Add or remove events" +msgstr "Добавить Ñобытие" + +#: em-posts.php:45 +#, fuzzy +msgid "Choose from most used event tags" +msgstr "Формат Ñтраницы Ð´Ð»Ñ Ð¾Ñ‚Ð´ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ñеминара." + +#: em-posts.php:67 +#: em-posts.php:70 +#, fuzzy +msgid "Event Category" +msgstr "Категории Ñеминаров" + +#: em-posts.php:71 +#, fuzzy +msgid "Search Event Categories" +msgstr "Категории Ñеминаров" + +#: em-posts.php:72 +#, fuzzy +msgid "Popular Event Categories" +msgstr "Категории Ñеминаров" + +#: em-posts.php:73 +#, fuzzy +msgid "All Event Categories" +msgstr "Категории Ñеминаров" + +#: em-posts.php:74 +#, fuzzy +msgid "Parent Event Categories" +msgstr "Категории Ñеминаров" + +#: em-posts.php:75 +#, fuzzy +msgid "Parent Event Category:" +msgstr "Категории Ñеминаров" + +#: em-posts.php:76 +#, fuzzy +msgid "Edit Event Category" +msgstr "Изменить категорию" + +#: em-posts.php:77 +#, fuzzy +msgid "Update Event Category" +msgstr "Обновить категорию" + +#: em-posts.php:78 +#, fuzzy +msgid "Add New Event Category" +msgstr "Категории Ñеминаров" + +#: em-posts.php:79 +#, fuzzy +msgid "New Event Category Name" +msgstr "Категории Ñеминаров" + +# @ dbem +#: em-posts.php:80 +msgid "Seperate event categories with commas" +msgstr "" + +# @ dbem +#: em-posts.php:82 +msgid "Choose from most used event categories" +msgstr "" + +#: em-posts.php:117 +#, fuzzy +msgid "Display events on your blog." +msgstr "Показывать глобальные Ñеминары в главном блоге?" + +#: em-posts.php:123 +#, fuzzy +msgid "Add New Event" +msgstr "Добавить Ñеминар" + +#: em-posts.php:126 +#, fuzzy +msgid "New Event" +msgstr "Ðет Ñеминаров" + +#: em-posts.php:127 +#: em-posts.php:172 +#: em-posts.php:218 +#: templates/tables/locations.php:60 +#, fuzzy +msgid "View" +msgstr "Показать ЧПУ" + +#: em-posts.php:128 +#, fuzzy +msgid "View Event" +msgstr "ПроÑмотр / редактирование Ñеминара" + +#: em-posts.php:130 +#, fuzzy +msgid "No Events Found" +msgstr "Ðет Ñеминаров" + +# @ dbem +#: em-posts.php:131 +msgid "No Events Found in Trash" +msgstr "" + +#: em-posts.php:132 +#, fuzzy +msgid "Parent Event" +msgstr "Прошедшие Ñеминары" + +#: em-posts.php:161 +#: em-posts.php:164 +#: em-posts.php:166 +#, fuzzy +msgid "Recurring Events" +msgstr "Повторение даты" + +#: em-posts.php:162 +#, fuzzy +msgid "Recurring Events Template" +msgstr "ЯвлÑÑŽÑ‚ÑÑ Ð»Ð¸ текущие Ñеминары прошедшими ÑобытиÑми?" + +#: em-posts.php:167 +#: em-posts.php:173 +#, fuzzy +msgid "Add Recurring Event" +msgstr "Добавить Ñобытие" + +# @ dbem +#: em-posts.php:168 +msgid "Add New Recurring Event" +msgstr "" + +#: em-posts.php:170 +#, fuzzy +msgid "Edit Recurring Event" +msgstr "Редактировать Ñеминар" + +#: em-posts.php:171 +#, fuzzy +msgid "New Recurring Event" +msgstr "Ðовый повторÑющийÑÑ Ñеминар вÑтавлен!" + +#: em-posts.php:174 +#, fuzzy +msgid "Search Recurring Events" +msgstr "ПоиÑк Ñеминара" + +# @ dbem +#: em-posts.php:175 +msgid "No Recurring Events Found" +msgstr "" + +# @ dbem +#: em-posts.php:176 +msgid "No Recurring Events Found in Trash" +msgstr "" + +# @ dbem +#: em-posts.php:177 +msgid "Parent Recurring Event" +msgstr "" + +#: em-posts.php:208 +#, fuzzy +msgid "Display locations on your blog." +msgstr "Показывать глобальные Ñеминары в главном блоге?" + +#: em-posts.php:214 +#, fuzzy +msgid "Add New Location" +msgstr "Добавить меÑто" + +#: em-posts.php:217 +#, fuzzy +msgid "New Location" +msgstr "МеÑтоположение" + +#: em-posts.php:219 +#, fuzzy +msgid "View Location" +msgstr "Измененить меÑто" + +#: em-posts.php:220 +#, fuzzy +msgid "Search Locations" +msgstr "МеÑта" + +#: em-posts.php:221 +#, fuzzy +msgid "No Locations Found" +msgstr "Ðет меÑÑ‚" + +#: em-posts.php:222 +#, fuzzy +msgid "No Locations Found in Trash" +msgstr "Формат меÑÑ‚" + +#: em-posts.php:223 +#, fuzzy +msgid "Parent Location" +msgstr "МеÑта Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñеминаров" + +#: em-template-tags.php:296 +#, fuzzy +msgid "You must log in to view and manage your events." +msgstr "Ð’Ñ‹ должны войти в ÑиÑтему, чтобы отменить Ñвой заказ." + +#: em-template-tags.php:386 +#, fuzzy +msgid "You must log in to view and manage your locations." +msgstr "Ð’Ñ‹ должны войти в ÑиÑтему, чтобы отменить Ñвой заказ." + +#: em-template-tags.php:404 +#, fuzzy +msgid "You must log in to view and manage your bookings." +msgstr "Ð’Ñ‹ должны войти в ÑиÑтему, чтобы отменить Ñвой заказ." + +#: events-manager.php:257 +#, fuzzy +msgid "Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events." +msgstr "Ð’Ñ‹ уверены, что хотите перенеÑти Ñто повторÑющееÑÑ Ñобытие? ЕÑли вы Ñделаете Ñто, вы потерÑете вÑÑŽ информацию о заказах и Ñтарые повторÑющиеÑÑ ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ удалены." + +# @ dbem +#: events-manager.php:258 +msgid "This cannot be undone." +msgstr "" + +# @ dbem +#: events-manager.php:258 +msgid "All events will be moved to trash." +msgstr "" + +#: events-manager.php:259 +#, fuzzy +msgid "Are you sure you want to delete all recurrences of this event?" +msgstr "Ð’Ñ‹ уверены, что хотите отменить Ñвой заказ?" + +#: events-manager.php:300 +#: events-manager.php:314 +#, fuzzy, php-format +msgid "You cannot read private %s" +msgstr "Ð’Ñ‹ не можете проÑматривать другие %s." + +#: events-manager.php:315 +#, fuzzy, php-format +msgid "You cannot view others %s" +msgstr "Ð’Ñ‹ не можете проÑматривать другие %s." + +#: events-manager.php:321 +#, fuzzy +msgid "You do not have permission to upload images" +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° управление %s." + +#: templates/forms/event/attributes.php:51 +#, fuzzy +msgid "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "ЕÑли вы не видите здеÑÑŒ ни одного атрибута, значит они больше не иÑпользуютÑÑ Ð² Events Manager. Чтобы их добавить, вам Ñнова надо добавить пользовательÑкий атрибут к наÑтройке Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° Ñтранице наÑтроек. Чтобы удалить Ñти атрибуты, оÑтавьте там пуÑтое меÑто и Ñохраните." + +# @ dbem +#: templates/forms/event/group.php:26 +msgid "No groups defined yet." +msgstr "" + +# @ default +#: templates/forms/event/location.php:9 +msgid "This event does not have a physical location." +msgstr "" + +#: templates/forms/event/location.php:31 +#, fuzzy +msgid "No Location" +msgstr "Ðет меÑÑ‚" + +#: templates/forms/event/recurring-when.php:53 +#: templates/forms/event/when-with-recurring.php:13 +#, fuzzy +msgid "Recurrences span from " +msgstr "Повторение обновлено!" + +#: templates/forms/event/recurring-when.php:61 +#: templates/forms/event/when-with-recurring.php:23 +#, fuzzy +msgid "Events start from" +msgstr "Формат Ñеминарв" + +#: templates/forms/event/recurring-when.php:65 +#: templates/forms/event/when-with-recurring.php:28 +#: templates/forms/event/when.php:20 +#, fuzzy +msgid "All day" +msgstr "Ð’Ñе %s." + +#: templates/forms/event/recurring-when.php:68 +#: templates/forms/event/when-with-recurring.php:74 +#, fuzzy +msgid "Each event lasts" +msgstr "Это Ñобытие повторÑетÑÑ" + +#: templates/forms/event/recurring-when.php:70 +#: templates/forms/event/when-with-recurring.php:76 +#, fuzzy +msgid "day(s)" +msgstr "дней" + +#: templates/forms/event/when-with-recurring.php:11 +#, fuzzy +msgid "This is a recurring event." +msgstr "Это не повторÑющееÑÑ Ñобытие" + +#: templates/forms/event/when-with-recurring.php:14 +#: templates/forms/event/when.php:8 +#, fuzzy +msgid "From " +msgstr "Ñ" + +#: templates/forms/event/when-with-recurring.php:24 +#: templates/forms/event/when.php:16 +#, fuzzy +msgid "Event starts at" +msgstr "Ðтрибуты Ñеминара" + +#: templates/forms/event-editor.php:164 +#, fuzzy +msgid "Event Image" +msgstr "Изображение Ñеминара" + +#: templates/forms/location-editor.php:47 +#, fuzzy +msgid "Details about the location." +msgstr "Подробнее о меÑтоположени" + +#: templates/forms/location-editor.php:52 +#, fuzzy +msgid "Location Image" +msgstr "Изображение Ð´Ð»Ñ Ð¼ÐµÑтоположениÑ" + +#: templates/tables/locations.php:74 +#, fuzzy +msgid "No locations have been inserted yet!" +msgstr "Ðи одной категории еще не было добавлено!" + +#: widgets/em-locations.php:21 +#, fuzzy +msgid "Event start date/time, location name" +msgstr "дата начала, Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°, название ÑобытиÑ" + +#~ msgid "Events Admin" +#~ msgstr "ÐдминиÑтратор Ñеминара" + +#~ msgid "Settings Updated." +#~ msgstr "ÐаÑтройки обновлены." + +#~ msgid "Option Two" +#~ msgstr "Вариант 2" + +#~ msgid "Action One" +#~ msgstr "ДейÑтвие 1" + +#~ msgid "Action Two" +#~ msgstr "ДейÑтвие 2" + +#~ msgid "Events Settings Header" +#~ msgstr "Заголовок наÑтроек Ñеминаров" + +#~ msgid "Events Settings" +#~ msgstr "ÐаÑтройки Ñеминаров" + +#~ msgid "Changes Saved." +#~ msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены." + +#~ msgid "Do you love clicking checkboxes?" +#~ msgstr "Вам нравитÑÑ Ñ€Ð°ÑÑтавлÑть галочки?" + +#~ msgid "Events (%s)" +#~ msgstr "Семинары(%s)" + +#~ msgid "However, the image could not be saved." +#~ msgstr "Изображение не может быть Ñохранено." + +#~ msgid "The image could not be saved" +#~ msgstr "Изображение не может быть Ñохранено" + +#~ msgid "However, the image could not be saved:" +#~ msgstr "Изображение не может быть Ñохранено, потому что" + +#~ msgid "Could not save the %s details due to a database error." +#~ msgstr "Ðевозможно Ñохранить подробноÑти %s из-за ошибки базы данных." + +#~ msgid "" +#~ "If you update this event data and save, it will become an independent " +#~ "event, and will not be deleted or modified automatically if you " +#~ "reschedule the original recurring event details." +#~ msgstr "" +#~ "ЕÑли вы обновите и Ñохраните данные Ñтого Ñеминара, он Ñтанет " +#~ "незавиÑимым Ñобытием и не будет удален или изменен при изменении данных " +#~ "изначального повторÑющего ÑобытиÑ." + +#~ msgid "There was a problem saving the location so event was not saved." +#~ msgstr "" +#~ "Возникла проблема при Ñохранении меÑта проведениÑ, поÑтому Ñобытие не " +#~ "было Ñохранено." + +#~ msgid "Something went wrong with creating tickets." +#~ msgstr "Возникла ошибка Ñ Ñозданием билетов." + +#~ msgid "New event successfully inserted!" +#~ msgstr "Ðовый Ñеминар уÑпешно вÑтавлен!" + +#~ msgid "Could not save the event details due to a database error." +#~ msgstr "Ðевозможно Ñохранить ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ Ñеминаре из-за ошибки базы данных." + +#~ msgid "Event %s." +#~ msgstr "Семинар %s." + +#~ msgid "You are not allowed to manage this %s." +#~ msgstr "Ð’Ñ‹ не можете управлÑть %s." + +#~ msgid "The location name" +#~ msgstr "Ðазвание меÑта" + +#~ msgid "%s successfully updated." +#~ msgstr "%s уÑпешно обновлен." + +#~ msgid "You do not have permission to delete %s." +#~ msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° удаление %s." + +#~ msgid "The category name" +#~ msgstr "Ðазвание категории" + +#~ msgid "Ach, some problems here:" +#~ msgstr "Ой, возникли некоторые проблемы здеÑÑŒ:" + +#~ msgid "edit" +#~ msgstr "редактировать" + +#~ msgid "No venues have been inserted yet!" +#~ msgstr "Еще не было добавлено ни одного меÑта проведениÑ!" + +#~ msgid "Insert New Event" +#~ msgstr "Ð’Ñтавить новый Ñеминар" + +#~ msgid "Starts on " +#~ msgstr "ÐачинаетÑÑ Ð½Ð°" + +#~ msgid "and ends on" +#~ msgstr "и заканчиваетÑÑ" + +#~ msgid "" +#~ "Check if your event happens more than once according to a regular pattern" +#~ msgstr "" +#~ "УбедитеÑÑŒ, что ваше Ñобытие проиÑходит неÑколько раз ÑоглаÑно обычному " +#~ "шаблону" + +#~ msgid "Choose from one of your locations" +#~ msgstr "Выберите одно из ваших меÑÑ‚" + +#~ msgid "or add a new location" +#~ msgstr "или добавьте новое меÑто" + +#~ msgid "No Value" +#~ msgstr "Ðет значениÑ" + +#~ msgid "Book now!" +#~ msgstr "Заказать билет ÑейчаÑ!" + +#~ msgid "" +#~ "You must register or log in in " +#~ "order to create and manage your bookings." +#~ msgstr "" +#~ "Ð’Ñ‹ должны зарегиÑтрироватьÑÑ Ð¸Ð»Ð¸ войти Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñоздавать и управлÑть Ñвоими заказами." + +#~ msgid "Cancel your booking" +#~ msgstr "Отменить заказ" + +#~ msgid "" +#~ "

                                  Hey, %s, welcome to Events Manager! " +#~ "We hope you like it around here.

                                  \r\n" +#~ "\t\t

                                  Now it's time to insert events lists through widgets, template tags or shortcodes.

                                  \r\n" +#~ "\t\t

                                  By the way, have you taken a look at the Settings page? That's where you customize the " +#~ "way events and locations are displayed.

                                  \r\n" +#~ "\t\t

                                  What? Tired of seeing this advice? I hear you, click here and you won't see " +#~ "this again!

                                  " +#~ msgstr "" +#~ "

                                  Привет, %s, добро пожаловать вEvents Manager! Мы надеемÑÑ, что Вам здеÑÑŒ понравитÑÑ.

                                  \r\n" +#~ "\t\t

                                  Теперь пришло Ð²Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð²Ñтавки ÑпиÑков Ñеминаров Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ виджетов, шаблонов тегов или кодов.

                                  \r\n" +#~ "\t\t

                                  КÑтати, вы поÑмотрели Ñтраницу наÑтроек? Там вы можете наÑтроить ÑпоÑоб " +#~ "Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñеминаров и меÑÑ‚ проведениÑ.

                                  \r\n" +#~ "\t\t

                                  Что? Ðадоело видеть Ñтот Ñовет? Понимаю, нажмите здеÑÑŒ и вы не увидите его Ñнова!

                                  " + +#~ msgid "Add new" +#~ msgstr "Добавить" + +#~ msgid "You are now viewing the duplicated %s." +#~ msgstr "Ð’Ñ‹ Ñмотрите копию %s." + +#~ msgid "EM_Categories" +#~ msgstr "EM_Categories" + +#~ msgid "Uncategorized" +#~ msgstr "Без категории" + +#~ msgid "Ascendant" +#~ msgstr "ВозраÑтающий" + +#~ msgid "Descendant" +#~ msgstr "Убывающий" + +#~ msgid "The category has been added." +#~ msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð±Ñ‹Ð»Ð° добавлена." + +#~ msgid "The category has been updated." +#~ msgstr "ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð±Ñ‹Ð» обновлена." + +#~ msgid "Categories Deleted" +#~ msgstr "Категории удалены" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Category name" +#~ msgstr "Ðазвание категории" + +#~ msgid "The name of the category" +#~ msgstr "Ðазвание категории" + +#~ msgid "Hide Slug" +#~ msgstr "Скрыть чпу" + +#~ msgid "%s Slug" +#~ msgstr "%s ЧПУ" + +#~ msgid "" +#~ "The event slug. If the event slug already exists, a random number will be " +#~ "appended to the end." +#~ msgstr "" +#~ "ЧПУ Ñеминара. ЕÑли Ñеминар Ñ Ñ‚Ð°ÐºÐ¸Ð¼ адреÑом уже ÑущеÑтвует, то в конце " +#~ "будет запиÑано Ñлучайное чиÑло." + +#~ msgid "Details about the category" +#~ msgstr "Подробнее о категории" + +#~ msgid "Category image" +#~ msgstr "Изображение категории" + +#~ msgid "No image uploaded for this category yet" +#~ msgstr "Ð”Ð»Ñ Ñтой категории изображение еще не было загружено." + +#~ msgid "You do not have the rights to manage this location." +#~ msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на управление Ñтим меÑтонахождением." + +#~ msgid "Location Owner" +#~ msgstr "Владелец меÑтонахождениÑ" + +#~ msgid "Select..." +#~ msgstr "Выберите ..." + +#~ msgid "Coordinates" +#~ msgstr "Координаты" + +#~ msgid "Repeated event" +#~ msgstr "ПовторÑющийÑÑ Ñеминар" + +#~ msgid "Every" +#~ msgstr "Каждый" + +#~ msgid "week" +#~ msgstr "неделÑ" + +#~ msgid "weeks" +#~ msgstr "недель" + +#~ msgid "month" +#~ msgstr "меÑÑц" + +#~ msgid "months" +#~ msgstr "меÑÑцев" + +#~ msgid "Event Owner/Contact Person" +#~ msgstr "Владелец / Контактное лицо Ñеминара" + +#~ msgid "Event Slug" +#~ msgstr "ЧПУ Ñеминара" + +#~ msgid "The event date." +#~ msgstr "Дата Ñеминара." + +#~ msgid "" +#~ "When not reoccurring, this event spans between the beginning and end date." +#~ msgstr "" +#~ "Когда не повторÑетÑÑ, Ñто Ñобытие охватывает период Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° и дата " +#~ "окончаниÑ." + +#~ msgid "The recurrence beginning and end date." +#~ msgstr "ÐŸÐµÑ€Ð²Ð°Ñ Ð¸ поÑледнÑÑ Ð´Ð°Ñ‚Ð° времени повторениÑ." + +#~ msgid "Event time" +#~ msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñеминара" + +#~ msgid "The time of the event beginning and end" +#~ msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° и конца Ñеминара" + +#~ msgid "" +#~ "The name of the location where the event takes place. You can use the " +#~ "name of a venue, a square, etc" +#~ msgstr "" +#~ "Ðазвание меÑта, где проиÑходит Ñобытие. Ð’Ñ‹ можете иÑпользовать Ð¸Ð¼Ñ Ð¼ÐµÑта, " +#~ "площади, и Ñ‚.д." + +#~ msgid "Details about the event" +#~ msgstr "Подробнее о Ñеминаре" + +#~ msgid "" +#~ "WARNING! You are about to re-create all your recurrent events including " +#~ "erasing your old booking data! Are you sure you want to do this?" +#~ msgstr "" +#~ "Ð’ÐИМÐÐИЕ! Ð’Ñ‹ ÑобираетеÑÑŒ заново Ñоздать вÑе ваши повторÑющиеÑÑ ÑобытиÑ, " +#~ "Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ðµ Ñтарых данных о заказах билетов! Ð’Ñ‹ уверены, что хотите " +#~ "Ñто Ñделать?" + +#~ msgid "" +#~ "

                                  Hey, %s, welcome to Events Manager! " +#~ "We hope you like it around here.

                                  \r\n" +#~ "\t\t\t

                                  Now it's time to insert events lists through widgets, template tags or shortcodes.

                                  \r\n" +#~ "\t\t\t

                                  By the way, have you taken a look at the Settings page? That's where you customize the " +#~ "way events and locations are displayed.

                                  \r\n" +#~ "\t\t\t

                                  What? Tired of seeing this advice? I hear you, click here and you won't see " +#~ "this again!

                                  " +#~ msgstr "" +#~ "

                                  Привет, %s, добро пожаловать вEvents Manager! Мы надеемÑÑ, что Вам здеÑÑŒ понравитÑÑ.

                                  \r\n" +#~ "\t\t

                                  Теперь пришло Ð²Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð²Ñтавки Ñеминаров Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ виджетов, шаблонов тегов или номеров.

                                  \r\n" +#~ "\t\t

                                  КÑтати, вы поÑмотрели Ñтраницу наÑтроек? Там вы можете наÑтроить ÑпоÑоб " +#~ "Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñеминаров и меÑÑ‚ проведениÑ.

                                  \r\n" +#~ "\t\t

                                  Что? Ðадоело видеть Ñтот Ñовет? Понимаю, нажмите здеÑÑŒ и вы не увидите его Ñнова!

                                  " + +#~ msgid "" +#~ "Events Manager has some new features!
                                  • Bookings " +#~ "can now be approved before they count towards your event's space " +#~ "allocations.
                                  • Events now have owners, and you can restrict users " +#~ "so they can only manage events/locations/categories they create.

                                    These new permissions are enabled by default, but since you upgraded it " +#~ "has been disabled to maintain the previous plugin behaviour. You can re-" +#~ "enable it from the settings page. Dismiss" +#~ msgstr "" +#~ "Events Manager обладает некоторыми новыми возможноÑÑ‚Ñми! " +#~ "
                                    • Заказы могут теперь быть принÑты, прежде чем они будут " +#~ "учитыватьÑÑ Ð¿Ñ€Ð¸ раÑпределении меÑÑ‚ на вашем Ñеминаре.
                                    • Теперь у " +#~ "ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ ÐµÑть владельцы, и вы можете ограничить права пользователей, чтобы " +#~ "они могли управлÑть только теми Ñеминарами/ меÑтами / категориÑми, " +#~ "которые они Ñоздали.

                                      Эти новые Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹ по " +#~ "умолчанию, но поÑле Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð½Ð¸ были отключены, чтобы Ñохранить " +#~ "прежнее поведение плагина. Ð’Ñ‹ можете Ñнова включить их на Ñтранице наÑтрек . Скрыть" + +#~ msgid "" +#~ "A LOT has changed since Events Manager 3. We recommend " +#~ "you take a look at the settings page for new features " +#~ "and upgrade instructions, and you may particualarly be interested in " +#~ "modifying permissions. Dismiss" +#~ msgstr "" +#~ "Многое изменилоÑÑŒ Ñо времени Events Manager 3. Мы " +#~ "рекомендуем вам заглÑнуть на Ñтраницу наÑтроек в " +#~ "поиÑке новых функций и инÑтрукции по обновлению, и вы можете быть " +#~ "оÑобенно заинтереÑованы в изменении прав доÑтупа. Скрыть" + +#~ msgid "" +#~ "If you upgraded from 3.x to the RC2 and the update did not go so well, try reimporting old settings. Warning! Re-importing will " +#~ "rename all event slugs, re-import your old category settings from events, " +#~ "and recreate all tickets, so changes to these areas will be lost. Dismiss" +#~ msgstr "" +#~ "ЕÑли вы обновилиÑÑŒ Ñ Ð²ÐµÑ€Ñии 3.x до RC2 и Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾ÑˆÐ»Ð¾ не очень " +#~ "удачно, попробуйте импортировать Ñтарые наÑтройки . " +#~ "Внимание! Импорт изменит ЧПУ вÑех Ñеминаров, импортирует повторно " +#~ "наÑтройки Ñеминаров, и заново ÑоздаÑÑ‚ вÑе билеты, поÑтому вÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ " +#~ "будут потерÑны. Скрыть" + +#~ msgid "Only Network Admins see this" +#~ msgstr "Только админиÑтраторы Ñети могут Ñто видеть" + +#~ msgid "Events page title" +#~ msgstr "Заголовок Ñтраницы Ñеминаров" + +#~ msgid "The title on the multiple events page." +#~ msgstr "Заголовок Ñтраницы Ñ Ð½ÐµÑколькими Ñеминарами" + +#~ msgid "%s page title" +#~ msgstr "Заголовок Ñтраницы %s" + +#~ msgid "The title on the multiple %s page." +#~ msgstr "Заголовок Ñтраницы неÑкольких %s." + +#~ msgid "Booking and Ticketing Options" +#~ msgstr "ÐаÑтройки заказа и Ð±Ñ€Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð¸Ð»ÐµÑ‚Ð¾Ð²" + +#~ msgid "User can delete other users locations." +#~ msgstr "Пользователь может удалÑть меÑта других пользователей." + +#~ msgid "User can edit their locations." +#~ msgstr "Пользователь может редактировать Ñвои меÑта." + +#~ msgid "" +#~ "User can view other users locations, to make locations shared by all " +#~ "users allow all event user roles to view all locations." +#~ msgstr "" +#~ "Пользователь может проÑматривать меÑта других пользователей, чтобы меÑта " +#~ "были доÑтупны вÑем пользователÑм, позвольте вÑем пользователÑм Ñмотреть " +#~ "вÑе меÑта." + +#~ msgid "User can create recurrent events." +#~ msgstr "Пользователь может Ñоздавать повторÑющиеÑÑ Ñеминары." + +#~ msgid "" +#~ "Do a search for this string within event name, details and location " +#~ "address." +#~ msgstr "" +#~ "ЗапуÑтите поиÑк по Ñтой Ñтроке в названии Ñеминара, информации и адреÑу " +#~ "меÑта." + +#~ msgid "See the events lists limit option on the settings page." +#~ msgstr "" +#~ "Смотрите варианты наÑтройки упорÑÐ´Ð¾Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ ÑпиÑка Ñеминаров на Ñтранице " +#~ "наÑтроек." + +#~ msgid "" +#~ "Choose what fields to order your results by. You can supply a single " +#~ "field or multiple comma-seperated fields (e.g. \"start_date,name\")." +#~ msgstr "" +#~ "Выберите, по каким полÑм упорÑдочивать результаты. Ð’Ñ‹ можете указать одно " +#~ "поле или неÑколько полей, разделенных запÑтыми (например, \"нач_дата, " +#~ "имÑ»)." + +#~ msgid "See the event lists ordering option on the settings page." +#~ msgstr "" +#~ "Смотрите варианты наÑтройки упорÑÐ´Ð¾Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ ÑпиÑка Ñеминаров на Ñтранице " +#~ "наÑтроек." + +#~ msgid "" +#~ "If set to 1 will only show locations that have at least one event " +#~ "occurring during the scope." +#~ msgstr "" +#~ "ЕÑли уÑтановлено 1, будут отображатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ те меÑта, в которых еÑть " +#~ "Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один Ñеминар в течение диапазона." + +#~ msgid "" +#~ "If set to 1 will only show locations that have no events occurring during " +#~ "the scope." +#~ msgstr "" +#~ "ЕÑли уÑтановлено 1, будут отображатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ те меÑта, в которых нет " +#~ "Ñеминаров в течение диапазона." + +#~ msgid "" +#~ "Search for locations in this town (no partial matches, case sensitive)." +#~ msgstr "" +#~ "ПоиÑк меÑÑ‚ в Ñтом городе (без чаÑтичного ÑовпадениÑ, Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ региÑтра)." + +#~ msgid "" +#~ "Search for locations in this state (no partial matches, case sensitive)." +#~ msgstr "" +#~ "ПоиÑк меÑта в Ñтом штате (без чаÑтичного ÑовпадениÑ, Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ региÑтра)." + +#~ msgid "" +#~ "Search for locations in this region (no partial matches, case sensitive)." +#~ msgstr "" +#~ "ПоиÑк меÑÑ‚ в Ñтом регионе (без чаÑтичного ÑовпадениÑ, Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ региÑтра)." + +#~ msgid "" +#~ "Search for locations in this country (no partial matches, case sensitive)." +#~ msgstr "" +#~ "ПоиÑк меÑÑ‚ в Ñтой Ñтране (без чаÑтичного ÑовпадениÑ, Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ региÑтра)." + +#~ msgid "" +#~ "Search for locations in this postcode (no partial matches, case " +#~ "sensitive)." +#~ msgstr "" +#~ "ПоиÑк меÑта по почтовому индекÑу (без чаÑтичного ÑовпадениÑ, Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ " +#~ "региÑтра)." + +#~ msgid "If set to 1 it will display a full calendar that shows event names." +#~ msgstr "" +#~ "ЕÑли уÑтановлено 1, будет показан полный календарь, в котором запиÑаны " +#~ "Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñеминаров." + +#~ msgid "If set to 1, will show events that last longer than a day." +#~ msgstr "" +#~ "ЕÑли уÑтановлено в 1, будут показаны Ñеминары, длÑщиеÑÑ Ð±Ð¾Ð»ÐµÐµ одного днÑ." + +#~ msgid "Limits the amount of values returned to this number." +#~ msgstr "Ограничивает количеÑтво возвращаемых значений Ñтой величиной." + +#~ msgid "" +#~ "Choose the time frame of events to show. Accepted values are \"future\", " +#~ "\"past\" or \"all\" events. Additionally you can supply dates (in format " +#~ "of YYYY-MM-DD), either single for events on a specific date or two dates " +#~ "seperated by a comma (e.g. 2010-12-25,2010-12-31) for events ocurring " +#~ "between these dates." +#~ msgstr "" +#~ "Выберите период Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð° Ñеминаров. ДопуÑтимые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ \"будущие\", " +#~ "\"прошедшие\" или \"вÑе\" ÑобытиÑ. Кроме того, можно указать даты (в " +#~ "формате YYYY-MM-DD), либо одну Ð´Ð»Ñ Ñеминаров в определенный день, либо " +#~ "две даты, разделенные запÑтыми (например, 2010-12-25,2010-12-31) Ð´Ð»Ñ " +#~ "Ñеминаров, проводимых в Ñтот временной период." + +#~ msgid "" +#~ "Indicates the order of the events. Choose between ASC (ascending) and " +#~ "DESC (descending)." +#~ msgstr "" +#~ "Указывает порÑдок Ñобытий. Выбор между ASC (по возраÑтанию) и DESC (по " +#~ "убыванию)." + +#~ msgid "" +#~ "Choose what fields to order your results by. You can supply a single " +#~ "field or multiple comma-seperated fields (e.g. \"start_date,name\"). See " +#~ "specific instances (e.g. events, locations, etc.) for field names." +#~ msgstr "" +#~ "Выберите по каким полÑм упорÑдочивать результаты. Ð’Ñ‹ можете указать одно " +#~ "поле или неÑколько, разделив их запÑтыми (например, \"нач_дата, имÑ\")." + +#~ msgid "" +#~ "If you are displaying some information with the shortcode or function (e." +#~ "g. listing events), you can supply the html and placeholders here." +#~ msgstr "" +#~ "ЕÑли вы отображаете некоторую информацию Ñ ÐºÐ¾Ð´Ð¾Ð¼ или функцией (например, " +#~ "ÑпиÑок Ñемнаров), вы можете ввеÑти HTML и заполнители здеÑÑŒ." + +#~ msgid "The relevant default format will be taken from the settings page." +#~ msgstr "" +#~ "СоответÑтвующий формат по умолчанию будет взÑÑ‚ на Ñтранице наÑтроек." + +#~ msgid "" +#~ "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the " +#~ "search to events with these id(s)." +#~ msgstr "" +#~ "Введите один id или неÑколько id, разделенных запÑтыми (н-Ñ€, \"1,2,3\"), " +#~ "чтобы ограничить поиÑк Ñеминарами Ñ Ñтими номерами id." + +#~ msgid "" +#~ "Supply a single id or comma-seperated ids (e.g. \"1,2,3\") to limit the " +#~ "search to events in these categories." +#~ msgstr "" +#~ "Введите один id или неÑколько id, разделенных запÑтыми, чтобы ограничить " +#~ "поиÑк Ñтими категориÑми." + +#~ msgid "" +#~ "Supply a single id or comma-seperated ids to limit the search to these " +#~ "locations (or events in these locations)." +#~ msgstr "" +#~ "Введите один id или неÑколько id, разделенных запÑтыми, чтобы ограничить " +#~ "поиÑк Ñтими меÑтами (или Ñеминарами в Ñтих меÑтах)." + +#~ msgid "" +#~ "For example, if you have ten results, if you set this to 5, only the last " +#~ "5 results will be returned. Useful for pagination." +#~ msgstr "" +#~ "Ðапример, еÑли у Ð²Ð°Ñ ÐµÑть деÑÑть результатов, и еÑли вы уÑтановите здеÑÑŒ " +#~ "значение 5, только поÑледние 5 результатов будут возвращены. Полезно Ð´Ð»Ñ " +#~ "разбивки на Ñтраницы." + +#~ msgid "" +#~ "If set to 1, will show only events that are recurring (i.e. events that " +#~ "are repeated over different dates)." +#~ msgstr "" +#~ "ЕÑли уÑтановлено раным 1, будут показаны только те Ñеминары, которые " +#~ "периодичеÑки повторÑÑŽÑ‚ÑÑ (то еÑть ÑобытиÑ, которые повторÑÑŽÑ‚ÑÑ Ñ‡ÐµÑ€ÐµÐ· " +#~ "различные даты)." + +#~ msgid "" +#~ "If set to 1, will only show recurring event templates. Only useful if you " +#~ "know what you're doing, use recurrence if you want events that are " +#~ "recurrences." +#~ msgstr "" +#~ "ЕÑли уÑтановлено равным 1, будет показаны только шаблоны Ð´Ð»Ñ " +#~ "повторÑющихÑÑ Ñеминаров. ПрименÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ еÑли вы знаете, что вы " +#~ "делаете, иÑпользуйте повтор, еÑли хотите, чтобы Ñеминары повторÑлиÑÑŒ." + +#~ msgid "" +#~ "If set to a month (1 to 12) only events that start or end during this " +#~ "month/year will be retured. Must be used in conjunction with year and " +#~ "does not work as intended if used with scope." +#~ msgstr "" +#~ "ЕÑли задан меÑÑц (от 1 до 12) то только Ñеминары, которые начинаютÑÑ Ð¸Ð»Ð¸ " +#~ "заканчиваютÑÑ Ð² течение Ñтого меÑÑца / года будет возвращены. Должно " +#~ "иÑпользоватьÑÑ ÑовмеÑтно Ñ Ð³Ð¾Ð´Ð¾Ð¼ и не работает, еÑли иÑпользуетÑÑ Ñ " +#~ "диапазоном." + +#~ msgid "" +#~ "If set to a year (e.g. 2010) only events that start or end during this " +#~ "year/month will be returned. Does not work as intended if used with scope." +#~ msgstr "" +#~ "ЕÑли год задан (например, 2010) только Ñеминары, которые начинаютÑÑ Ð¸Ð»Ð¸ " +#~ "заканчиваютÑÑ Ð² течение Ñтого года / меÑÑца будут возвращены. Ðе " +#~ "работает, еÑли иÑпользуетÑÑ Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼." + +#~ msgid "" +#~ "If you supply this as an argument, the returned data will be in an array, " +#~ "no objects (only useful wen using PHP, not shortcodes)" +#~ msgstr "" +#~ "ЕÑли указать Ñто в качеÑтве аргумента, возвращаемые данные будут в " +#~ "маÑÑиве, а не объектами (имеет ÑмыÑл только при иÑпользованием PHP, а не " +#~ "кодов)" + +#~ msgid "" +#~ "When using a function or shortcode that outputs items (e.g. [events_list] " +#~ "for events, [locations_list] for locations), if the number of items " +#~ "supercede the limit of items to show, setting this to 1 will show page " +#~ "links under the list." +#~ msgstr "" +#~ "При иÑпользовании функции или кода которые выводÑÑ‚ Ñлементы (например, " +#~ "[events_list] Ð´Ð»Ñ Ñеминаров, [locations_list] Ð´Ð»Ñ Ð¼ÐµÑÑ‚), еÑли количеÑтво " +#~ "Ñлементов превышает количеÑтво отображаемых Ñлементов, уÑтановка Ñтого " +#~ "значение равным 1 покажет ÑÑылки на Ñтраницы под ÑпиÑком." + +#~ msgid "Displays the name of the event." +#~ msgstr "Показывает название Ñеминара." + +#~ msgid "Shows the description of the event." +#~ msgstr "Показывает опиÑание Ñеминара." + +#~ msgid "" +#~ "If you added a more tag to your event description, only the " +#~ "content before this tag will show (currently, no read more link is added)." +#~ msgstr "" +#~ "ЕÑли вы добавили тег more к вашему опиÑанию Ñеминара, будет " +#~ "показано Ñодержимое только до Ñтого тега (в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð½ÐµÑ‚ поддержки " +#~ "ÑÑылки more...)." + +#~ msgid "Shows the event corresponding ID number in the database table." +#~ msgstr "Показывает ÑоотвеÑтувющее ID Ñеминара в таблице БД" + +#~ msgid "Shows the event image, if available." +#~ msgstr "Показывает изображение Ñеминара, еÑли оно доÑтупно." + +#~ msgid "Displays the start time in a 24 hours format (e.g. 16:30)." +#~ msgstr "Показывает Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° в 24-Ñ… чаÑовом формате(например, 16:30)." + +#~ msgid "Displays the end time in a 24 hours format (e.g. 18:30)." +#~ msgstr "" +#~ "Показывает Ð²Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð² 24-Ñ… чаÑовом формате (например, 18:30)." + +#~ msgid "Displays the start time in a 12 hours format (e.g. 4:30 PM)." +#~ msgstr "" +#~ "Показывает Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° в 12-ти чаÑовом формате (например, 4:30 вечера)." + +#~ msgid "Displays the end time in a 12 hours format (e.g. 6:30 PM)." +#~ msgstr "" +#~ "Показывает Ð²Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð² 12-ти чаÑовом формате (например, 6:30 " +#~ "вечера)." + +#~ msgid "" +#~ "Events Manager allows extremely flexible date formatting by using PHP date syntax format " +#~ "characters along with placeholders." +#~ msgstr "" +#~ "Events Manager предоÑтавлÑет возможноÑти чрезвычайно гибкого " +#~ "Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ñ‚Ñ‹ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñимволов Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑинтакÑиÑа PHP нарÑду Ñ " +#~ "заполнителÑми." + +#~ msgid "" +#~ "Prepend # or #@ before a valid PHP date syntax " +#~ "format character to show start and end date/time information respectively " +#~ "(e.g. #F will show the starting month name like \"January\", " +#~ "#@h shows the end hour)." +#~ msgstr "" +#~ "ДобавлÑет # или #@ перед допуÑтимым Ñимволом " +#~ "Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ñ‚Ñ‹ в PHP, чтобы показать дату/Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° и Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ " +#~ "ÑоотвеÑтвенно (например, #F покажет название меÑÑца начала " +#~ "вида\"Январь\", # @h показывает Ñ‡Ð°Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ)." + +#~ msgid "" +#~ "You can also create a date format without prepending # to each character " +#~ "by wrapping a valid php date() format in #{} or #@{} (e.g. #_{d/m/Y}). If there is no end date (or is same " +#~ "as start date), the value is not shown. This is useful if you want to " +#~ "show event end dates only on events that are longer than on day, e.g. " +#~ "#j #M #Y #@_{ u\n" +#~ "\til j M Y}." +#~ msgstr "" +#~ "Ð’Ñ‹ также можете Ñоздать формат даты без Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ # перед каждым " +#~ "Ñимволом, заключив допуÑтимый формат date() PHP в #{} или " +#~ "#@{} (например, #_{d/m/Y} ). ЕÑли не будет " +#~ "конечной даты (или она Ñовпадает Ñ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¹), значение не отображаетÑÑ. " +#~ "Это полезно, еÑли вы хотите показать только даты Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ñеминаров, " +#~ "длÑщихÑÑ Ð±Ð¾Ð»ÐµÐµ одного днÑ, например, #j #M #Y #@_{ u\n" +#~ "\til j MY} ." + +#~ msgid "" +#~ "Simply prints the event URL. You can use this placeholder to build your " +#~ "own customised links." +#~ msgstr "" +#~ "ПроÑто печатает URL Ñеминара. Ð’Ñ‹ можете иÑпользовать Ñтот заполнитель Ð´Ð»Ñ " +#~ "ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑких ÑÑылок." + +#~ msgid "Shows the event image url, if available." +#~ msgstr "Показывает URL Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñеминара, еÑли оно доÑтупно." + +#~ msgid "Displays the event name with a link to the event page." +#~ msgstr "Показывает название Ñеминара Ñо ÑÑылкой на его Ñтраницу." + +#~ msgid "" +#~ "Inserts a link to the admin or buddypress (if activated) edit event " +#~ "page, only if a user is logged in and is allowed to edit the event." +#~ msgstr "" +#~ "Ð’ÑтавлÑет ÑÑылку на Ñтраницу Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñеминара Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора " +#~ "или BuddyPress (еÑли активировано), только еÑли пользователь вошел в " +#~ "ÑиÑтему и может редактировать ÑобытиÑ." + +#~ msgid "" +#~ "Inserts a url to the admin or buddypress (if activated) edit event page, " +#~ "only if a user is logged in and is allowed to edit the event." +#~ msgstr "" +#~ "Ð’ÑтавлÑет url на Ñтранице Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñеминара Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора или " +#~ "BuddyPress (еÑли активировано), только еÑли пользователь вошел в ÑиÑтему " +#~ "и может редактировать ÑобытиÑ." + +#~ msgid "" +#~ "Events Manager allows you to create dynamic attributes to your events, " +#~ "which act as extra information fields for your events (e.g. \"Dress Code" +#~ "\"). For more information see our online documentation " +#~ "for more info on attributes." +#~ msgstr "" +#~ "Events Manager позволÑет Ñоздавать динамичеÑкие атрибуты к вашим " +#~ "Ñеминарам, которые выÑтупают в качеÑтве дополнительных информационных " +#~ "полей Ð´Ð»Ñ Ð²Ð°ÑˆÐ¸Ñ… Ñеминаров (например, \"ДреÑÑ-код\"). Дополнительные " +#~ "ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтих атрибутах можно поÑмотреть в нашей онлайн-" +#~ "документации." + +#~ msgid "" +#~ "This key will appear as an option when adding attributes to your event." +#~ msgstr "" +#~ "Этот ключ в качеÑтве опции поÑвитÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при добавлении атрибутов к " +#~ "вашему Ñеминару." + +#~ msgid "" +#~ "This key will appear as an option when adding attributes to your event. " +#~ "The text in the second braces will appear if the attribute is not defined " +#~ "or left blank for that event." +#~ msgstr "" +#~ "Этот ключ в качеÑтве опции поÑвитÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при добавлении атрибутов к " +#~ "вашему Ñеминару.ТекÑÑ‚ во вторых Ñкобках будет отображатьÑÑ, еÑли атрибут " +#~ "не определен или оÑтавлен пуÑтым Ð´Ð»Ñ Ñтого Ñеминара." + +#~ msgid "" +#~ "This key will appear as an option when adding attributes to your event. " +#~ "The second braces are optional and will use a select box with these " +#~ "values as input. If no valid value is defined, the first option is used." +#~ msgstr "" +#~ "Этот ключ в качеÑтве опции поÑвитÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при добавлении атрибутов к " +#~ "вашему Ñеминару. Вторые Ñкобки ÑвлÑÑŽÑ‚ÑÑ Ð½ÐµÐ¾Ð±Ñзательными, и будут " +#~ "иÑпользовать поле выбора Ñ Ñтими значениÑми в качеÑтве входных данных. " +#~ "ЕÑли не будет определено значение, будет иÑпользоватьÑÑ Ð¿ÐµÑ€Ð²Ñ‹Ð¹ вариант." + +#~ msgid "" +#~ "These placeholders will only show if RSVP is enabled for the given event " +#~ "and in the events manager settings page. Spaces placeholders will default " +#~ "to 0" +#~ msgstr "" +#~ "Эти заполнители будет показыватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ еÑли RSVP включена Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ " +#~ "Ñеминара и на Ñтранице наÑтроек Events manager'а. Заполнители меÑÑ‚ по " +#~ "умолчанию будут 0" + +#~ msgid "Adds a booking forms for this event." +#~ msgstr "ДобавлÑет формы заказа билетов Ð´Ð»Ñ Ñтого Ñеминара." + +#~ msgid "Shows available spaces for the event." +#~ msgstr "Показывает Ñвободные меÑта на Ñеминаре." + +#~ msgid "Shows the amount of currently booked spaces for the event." +#~ msgstr "Показывает количеÑтво забронированных меÑÑ‚ на Ñеминаре." + +#~ msgid "Shows the amount of pending spaces for the event." +#~ msgstr "" +#~ "Показывает количеÑтво меÑÑ‚, ожидающих подтверждениÑ, Ð´Ð»Ñ Ñтого Ñеминара." + +#~ msgid "Shows the total spaces for the event." +#~ msgstr "Показывает общее количеÑтво меÑÑ‚ на Ñеминаре." + +#~ msgid "Shows the list of user avatars attending events." +#~ msgstr "Показывает ÑпиÑок аватар пользователей, учаÑтвующих в Ñеминаре." + +#~ msgid "" +#~ "A single button that will appear to logged in users, if they click on it, " +#~ "they apply for a booking. This button will only display if there is one " +#~ "ticket." +#~ msgstr "" +#~ "Кнопка, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñтанет доÑтупна пользователÑм поÑле входа в ÑиÑтеу, еÑли " +#~ "они щелкнут на нее - они отправÑÑ‚ заказ. Кнопка будет отображатьÑÑ, " +#~ "только еÑли еÑть Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один билет." + +#~ msgid "" +#~ "Shows the url to the admin or buddypress (if activated) bookings " +#~ "management page for this event. Only shown if user is logged in and able " +#~ "to manage bookings." +#~ msgstr "" +#~ "Показывает url на Ñтраницу ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°ÐºÐ°Ð·Ð°Ð¼Ð¸ Ð´Ð»Ñ Ñтого Ñеминара " +#~ "админиÑтратора или BuddyPress (еÑли активирован). ДоÑтупна только, еÑли " +#~ "пользователь вошел в ÑиÑтему и может управлÑть заказами." + +#~ msgid "" +#~ "Shows a link to the admin or buddypress (if activated) bookings " +#~ "management page for this event. Only shown if user is logged in and able " +#~ "to manage bookings." +#~ msgstr "" +#~ "Показывает ÑÑылку на Ñтраницу ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°ÐºÐ°Ð·Ð°Ð¼Ð¸ Ð´Ð»Ñ Ñтого Ñеминара " +#~ "админиÑтратора или BuddyPress (еÑли активирован). ДоÑтупна только, еÑли " +#~ "пользователь вошел в ÑиÑтему и может управлÑть заказами." + +#~ msgid "" +#~ "The values here are taken from the chosen contact for the specific event, " +#~ "or the default contact in the settings page." +#~ msgstr "" +#~ "Эти Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð·Ñты из выбранного контакта Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³Ð¾ Ñеминара или " +#~ "контакта по умолчанию на Ñтранице наÑтроек." + +#~ msgid "" +#~ "Name of the contact person for this event (as shown in the dropdown when " +#~ "adding an event)." +#~ msgstr "" +#~ "Ð˜Ð¼Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ лица Ð´Ð»Ñ Ñтого ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ (как показано в выпадающем ÑпиÑке " +#~ "при добавлении ÑобытиÑ)." + +#~ msgid "Contact person's username." +#~ msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, ÑвлÑющегоÑÑ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð½Ñ‹Ð¼ лицом." + +#~ msgid "E-mail of the contact person for this event." +#~ msgstr "Электронный Ð°Ð´Ñ€ÐµÑ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ лица Ð´Ð»Ñ Ñтого Ñеминара." + +#~ msgid "" +#~ "Phone number of the contact person for this event. Can be set in the user " +#~ "profile page." +#~ msgstr "" +#~ "Ðомер телефона контактного лица Ð´Ð»Ñ Ñтого Ñеминара. Может быть уÑтановлен " +#~ "на Ñтранице Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ." + +#~ msgid "Contact person's avatar." +#~ msgstr "Ðватар контактного лица" + +#~ msgid "" +#~ "Contact person's \"Profile\" link. Only works with BuddyPress enabled." +#~ msgstr "" +#~ "СÑылка вида \"Profile\" на профиль контактного лица. Работает только при " +#~ "включенном BuddyPress." + +#~ msgid "Contact person's profile url. Only works with BuddyPress enabled." +#~ msgstr "" +#~ "URL Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ лица. Работает только при включенном BuddyPress." + +#~ msgid "Contact person's wordpress user ID." +#~ msgstr "Id Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ wordpress, ÑвлÑющегоÑÑ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð½Ñ‹Ð¼ лицом." + +#~ msgid "Shows the category name of the event." +#~ msgstr "Показывает Ð¸Ð¼Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸ Ñеминара." + +#~ msgid "Shows the category ID of the event." +#~ msgstr "Показывает Id категории Ñеминара." + +#~ msgid "Shows the location description." +#~ msgstr "Показывает опиÑание меÑта." + +#~ msgid "Displays the location name." +#~ msgstr "Показывает название меÑта." + +#~ msgid "Displays the town." +#~ msgstr "Показывает город." + +#~ msgid "Displays the state/county." +#~ msgstr "Показывает облаÑть / штат." + +#~ msgid "Displays the postcode." +#~ msgstr "Показывает почтовый индекÑ." + +#~ msgid "Displays the region." +#~ msgstr "Показывает регион." + +#~ msgid "Displays the country." +#~ msgstr "Показывает Ñтрану." + +#~ msgid "" +#~ "Displays a google map showing where the event is located (Will not show " +#~ "if maps are disabled in the settings page)" +#~ msgstr "" +#~ "Показывает карты Google, на которых отмечено, где проводитÑÑ Ñеминар (не " +#~ "будет отображатьÑÑ, еÑли карты будут отключены на Ñтранице наÑтроек)" + +#~ msgid "" +#~ "If you added a more tag to your location description, only the " +#~ "content before this tag will show (currently, no read more link is added)." +#~ msgstr "" +#~ "ЕÑли вы добавили тег more к Ñвоему опиÑанию меÑта, то будет " +#~ "показано только Ñодержимое до Ñтого тега." + +#~ msgid "Shows the location image." +#~ msgstr "Показывает изображение меÑта" + +#~ msgid "Displays the location ID number." +#~ msgstr "Показывает ID меÑтоположениÑ." + +#~ msgid "" +#~ "Simply prints the location URL. You can use this placeholder to build " +#~ "your own customised links." +#~ msgstr "" +#~ "ПроÑто печатает URL меÑта. Ð’Ñ‹ можете иÑпользовать Ñтот заполнитель, чтобы " +#~ "Ñтроить Ñвои пользовательÑкие ÑÑылки." + +#~ msgid "Displays the location name with a link to the location page." +#~ msgstr "Отображает название меÑта Ñо ÑÑылкой его Ñтраницу." + +#~ msgid "" +#~ "You can show lists of other events that are being held at this location. " +#~ "The formatting of the list is the same as a normal events list." +#~ msgstr "" +#~ "Ð’Ñ‹ можете показать ÑпиÑки других Ñеминаров, которые проходÑÑ‚ в Ñтом " +#~ "меÑте. Форматирование ÑпиÑка такое же, как у обычного ÑпиÑка Ñеминаров" + +#~ msgid "Will show a list of all past events at this location." +#~ msgstr "Покажет ÑпиÑок вÑех прошедших Ñеминаров в Ñтом меÑте." + +#~ msgid "Will show a list of all future events at this location." +#~ msgstr "Покажет ÑпиÑок вÑех будущих Ñеминаров в Ñтом меÑте." + +#~ msgid "Will show a list of all events at this location." +#~ msgstr "Покажет ÑпиÑок вÑех Ñеминаров в Ñтом меÑте." + +#~ msgid "" +#~ "When a specific booking is displayed (on screen and on email), you can " +#~ "use these placeholders to show specific information about the booking. " +#~ "For contact details of the contact of this event, see the events " +#~ "placeholders." +#~ msgstr "" +#~ "При отображении конкретного заказа (на Ñкране или в пиÑьме) вы можете " +#~ "иÑпользовать Ñти заполнители, чтобы показать данные заказа. " + +#~ msgid "Name of person who made the booking." +#~ msgstr "Ð˜Ð¼Ñ Ñ‚Ð¾Ð³Ð¾, кто Ñделал заказ." + +#~ msgid "Email of person who made the booking." +#~ msgstr "Email того, кто Ñделал заказ." + +#~ msgid "Phone number of person who made the booking." +#~ msgstr "Ðомер телефона того, кто Ñделал заказ." + +#~ msgid "Number of spaces the person has booked." +#~ msgstr "КоличеÑтво меÑÑ‚, которые были забронированы." + +#~ msgid "Any specific comments made by the person who made the booking." +#~ msgstr "Дополнительные комментарии того, кто Ñделал заказ." + +#~ msgid "" +#~ "Name of the ticket booked. Useful in single ticket mode, if multiple " +#~ "tickets are booked a random ticket is used." +#~ msgstr "" +#~ "Ðазвание забронированного билета. Полезно при покупке одного билета, еÑли " +#~ "забронировано неÑколько билетов, то выбираетÑÑ Ð¾Ð´Ð¸Ð½ из них Ñлучайным " +#~ "образом." + +#~ msgid "" +#~ "Description of the ticket booked. Useful in single ticket mode, if " +#~ "multiple tickets are booked a random ticket is used." +#~ msgstr "" +#~ "ОпиÑание забронированного билета. Полезно при покупке одного билета, еÑли " +#~ "забронировано неÑколько билетов, то выбираетÑÑ Ð¾Ð´Ð¸Ð½ из них Ñлучайным " +#~ "образом." + +#~ msgid "" +#~ "Booked ticket price with currency symbol (e.g. $ 10.00). Useful in single " +#~ "ticket mode, if multiple tickets are booked a random ticket is used." +#~ msgstr "" +#~ "Цена забронированного билета Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸ÐµÐ¼ валюты (например, $ 10.00). " +#~ "Полезно при покупке одного билета, еÑли забронировано неÑколько билетов, " +#~ "то выбираетÑÑ Ð¾Ð´Ð¸Ð½ из них Ñлучайным образом." + +#~ msgid "" +#~ "A list of booked tickets. You can modify this by using template files and " +#~ "modifying templates/emails/bookingtickets.php" +#~ msgstr "" +#~ "СпиÑок забронированных билетов. Ð’Ñ‹ можете изменить его вид Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ " +#~ "шаблонов, изменÑÑ Ñ„Ð°Ð¹Ð» templates/emails/bookingtickets.php" + +#~ msgid "" +#~ "People are able to manage their bookings. Below are some placeholder " +#~ "which automatically provides correctly formatted urls" +#~ msgstr "" +#~ "Люди могут управлÑть Ñвоими заказами. Ðиже неÑколько заполнителей, " +#~ "которые автоматичеÑки проÑтавлÑÑŽÑ‚ правильно Ñформированные url-адреÑа." + +#~ msgid "URL to page showing that users booked events." +#~ msgstr "" +#~ "URL Ñтраницы, показывающей, что пользователи заказали билеты на Ñеминар." + +#~ msgid "http://wp-events-plugin.com" +#~ msgstr "http://wp-events-plugin.com" + +#~ msgid "" +#~ "Event registration and booking management for Wordpress. Recurring " +#~ "events, locations, google maps, rss, ical, booking registration and more!" +#~ msgstr "" +#~ "Управление региÑтрацией и бронированием Ñеминаров Ð´Ð»Ñ Wordpress. " +#~ "ПовторÑющиеÑÑ Ð¼ÐµÑ€Ð¾Ð¿Ñ€Ð¸ÑтиÑ, меÑта проведениÑ, Google Maps, RSS, iCal, " +#~ "бронирование и многое другое!" + +#~ msgid "Marcus Sykes" +#~ msgstr "Марк СайкÑ" diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-sv_SE.mo b/wp-content/plugins/events-manager/includes/langs/dbem-sv_SE.mo new file mode 100644 index 0000000..ae3f737 Binary files /dev/null and b/wp-content/plugins/events-manager/includes/langs/dbem-sv_SE.mo differ diff --git a/wp-content/plugins/events-manager/includes/langs/dbem-sv_SE.po b/wp-content/plugins/events-manager/includes/langs/dbem-sv_SE.po new file mode 100644 index 0000000..d0e80bd --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/dbem-sv_SE.po @@ -0,0 +1,5818 @@ +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.171\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-09-20 20:44:48+00:00\n" +"PO-Revision-Date: 2012-04-09 17:06+0100\n" +"Last-Translator: Marcus Sykes \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-SearchPath-0: .\n" + +#: buddypress/bp-em-activity.php:47 +#, php-format +msgid "%s added the event %s" +msgstr "%s la till eventet %s" + +#: buddypress/bp-em-activity.php:87 +#, php-format +msgid "%s is attending %s." +msgstr "%s kommer att besöka %s." + +#: buddypress/bp-em-activity.php:89 +#, php-format +msgid "%s will not be attending %s anymore." +msgstr "%s har avanmält sig ifrÃ¥n %s." + +#: buddypress/bp-em-activity.php:95 +#, php-format +msgid "%s is attending %s of the group %s." +msgstr "%s kommer att besöka %s tillhörande gruppen %s." + +#: buddypress/bp-em-activity.php:97 +#, php-format +msgid "%s will not be attending %s of group %s anymore." +msgstr "%s har avanmält sig ifrÃ¥n %s tillhörande gruppen %s." + +#: admin/em-ms-options.php:165 +#: admin/em-options.php:438 +#: admin/em-options.php:477 +#: admin/em-options.php:946 +#: buddypress/bp-em-core.php:12 +#: buddypress/bp-em-core.php:53 +#: buddypress/bp-em-core.php:81 +#: buddypress/bp-em-core.php:149 +#: buddypress/bp-em-core.php:176 +#: buddypress/screens/profile.php:27 +#: em-actions.php:102 +#: em-install.php:354 +#: em-install.php:400 +#: em-install.php:456 +#: em-install.php:457 +#: em-install.php:483 +#: em-install.php:732 +#: em-posts.php:137 +#: em-posts.php:140 +#: em-posts.php:142 +#: em-template-tags.php:179 +#: widgets/em-events.php:13 +msgid "Events" +msgstr "Event" + +#: admin/em-options.php:1179 +#: em-functions.php:504 +msgid "Yes" +msgstr "Ja" + +#: admin/em-options.php:1180 +#: em-functions.php:504 +msgid "No" +msgstr "Nej" + +#: admin/em-options.php:889 +#: buddypress/bp-em-notifications.php:24 +#: buddypress/bp-em-notifications.php:26 +#: buddypress/bp-em-notifications.php:33 +#: buddypress/bp-em-notifications.php:35 +#: buddypress/bp-em-notifications.php:41 +#: buddypress/bp-em-notifications.php:43 +#: em-install.php:572 +#: em-install.php:769 +#: em-install.php:822 +msgid "My Bookings" +msgstr "Mina bokningar" + +#: buddypress/bp-em-notifications.php:24 +msgid "You have a pending booking" +msgstr "Du har en pÃ¥gÃ¥ende bokning" + +#: buddypress/bp-em-notifications.php:26 +#, php-format +msgid "You have %s pending bookings" +msgstr "Du har %s pÃ¥gÃ¥ende bokningar" + +#: buddypress/bp-em-notifications.php:33 +msgid "You have a confirmed booking" +msgstr "Du har en bekräftad bokning" + +#: buddypress/bp-em-notifications.php:35 +#, php-format +msgid "You have %s confirmed bookings" +msgstr "Du har %s bekräftade bokningar" + +#: buddypress/bp-em-notifications.php:41 +msgid "A user cancelled a booking" +msgstr "En användare avbröt en bokning" + +#: buddypress/bp-em-notifications.php:43 +#, php-format +msgid "%s users cancelled bookings." +msgstr "%s användare avbröt bokningar." + +#: buddypress/bp-em-core.php:124 +#: buddypress/screens/my-locations.php:32 +msgid "My Locations" +msgstr "Mina platser" + +#: buddypress/screens/my-locations.php:48 +#: em-events.php:165 +#: em-posts.php:239 +msgid "Edit Location" +msgstr "Ändra Plats" + +#: buddypress/screens/my-locations.php:46 +#: em-events.php:163 +#: em-posts.php:236 +msgid "Add Location" +msgstr "Lägg till Plats" + +#: buddypress/screens/group-events.php:20 +#: buddypress/screens/my-group-events.php:20 +msgid "Group Events" +msgstr "Grupperade Event" + +#: buddypress/screens/profile.php:11 +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "Du just nu är pÃ¥ din publika sida, detta är vad andra användare kommer att se." + +#: buddypress/bp-em-core.php:112 +#: buddypress/screens/my-events.php:32 +#: templates/buddypress/profile.php:7 +msgid "My Events" +msgstr "Mina Event" + +#: buddypress/screens/my-events.php:49 +#: em-events.php:152 +#: em-posts.php:146 +msgid "Edit Event" +msgstr "Redigera Event" + +#: buddypress/screens/my-events.php:52 +#: em-events.php:155 +#: em-posts.php:143 +#: templates/buddypress/profile.php:20 +msgid "Add Event" +msgstr "Lägg till Event" + +#: buddypress/bp-em-core.php:101 +#: buddypress/screens/attending.php:23 +#: templates/buddypress/profile.php:25 +msgid "Events I'm Attending" +msgstr "Event jag deltar i" + +#: buddypress/bp-em-core.php:136 +#: buddypress/screens/my-bookings.php:30 +msgid "My Event Bookings" +msgstr "Mina Eventbokningar" + +#: buddypress/bp-em-core.php:92 +msgid "My Profile" +msgstr "Min Profil" + +#: em-posts.php:145 +#: em-posts.php:191 +#: em-posts.php:238 +#: templates/forms/event/bookings.php:87 +msgid "Edit" +msgstr "Ändra" + +#: admin/bookings/em-events.php:98 +#: admin/bookings/em-pending.php:101 +#: admin/bookings/em-person.php:86 +#: admin/em-bookings.php:105 +#: admin/em-bookings.php:106 +#: admin/em-ms-options.php:162 +#: admin/em-options.php:306 +#: admin/em-options.php:329 +#: admin/em-options.php:455 +#: admin/em-options.php:469 +#: admin/em-options.php:496 +#: admin/em-options.php:497 +#: admin/em-options.php:954 +#: admin/em-options.php:1062 +#: admin/em-options.php:1090 +#: admin/em-options.php:1120 +#: admin/em-options.php:1143 +#: admin/em-options.php:1532 +#: classes/em-bookings-table.php:77 +#: classes/em-event-posts-admin.php:102 +#: classes/em-event-posts-admin.php:104 +#: classes/em-event-posts-admin.php:181 +#: classes/em-event-posts-admin.php:239 +#: classes/em-event-posts-admin.php:241 +#: classes/em-event.php:611 +#: classes/em-event.php:626 +#: classes/em-event.php:687 +#: classes/em-event.php:1233 +#: em-actions.php:102 +#: em-install.php:407 +#: em-install.php:439 +#: em-posts.php:141 +#: templates/forms/event-editor.php:12 +#: templates/templates/my-bookings.php:46 +msgid "Event" +msgstr "Event" + +#: templates/templates/ical-event.php:10 +#: templates/templates/ical.php:12 +#: widgets/em-calendar.php:13 +msgid "Calendar" +msgstr "Kalender" + +#: widgets/em-calendar.php:17 +msgid "Display your events in a calendar widget." +msgstr "Visa dina event i en kalenderwidget" + +#: widgets/em-calendar.php:18 +msgid "Events Calendar" +msgstr "Eventkalender" + +#: widgets/em-calendar.php:58 +#: widgets/em-events.php:98 +#: widgets/em-locations.php:72 +msgid "Title" +msgstr "Rubrik" + +#: widgets/em-calendar.php:62 +msgid "Show Long Events?" +msgstr "Visa lÃ¥nga event?" + +#: widgets/em-calendar.php:66 +#: widgets/em-events.php:146 +msgid "Category IDs" +msgstr "Kategori ID" + +# @ dbem +#: widgets/em-calendar.php:68 +#: widgets/em-events.php:148 +msgid "1,2,3 or 2 (0 = all)" +msgstr "1,2,3 or 2 (0 = alla)" + +#: widgets/em-locations.php:13 +msgid "Event Locations" +msgstr "Eventplats" + +#: widgets/em-locations.php:24 +msgid "Display a list of event locations on Events Manager." +msgstr "Visa en lista av eventplatser i Events Manager" + +#: widgets/em-locations.php:49 +msgid "No locations" +msgstr "Inga platser" + +#: widgets/em-locations.php:76 +msgid "Show number of locations" +msgstr "Visa flera platser" + +#: widgets/em-locations.php:80 +msgid "Scope of the locations" +msgstr "Platsernas omfattning" + +#: widgets/em-locations.php:103 +msgid "Order of the locations" +msgstr "Platsernas ordning" + +#: widgets/em-events.php:151 +#: widgets/em-locations.php:110 +msgid "List item format" +msgstr "Format pÃ¥ listpost/listpunkt" + +#: widgets/em-events.php:22 +#: widgets/em-events.php:74 +#: widgets/em-events.php:160 +msgid "all events" +msgstr "alla event" + +#: widgets/em-events.php:31 +msgid "Display a list of events on Events Manager." +msgstr "Visa en lista pÃ¥ event i Event Manager" + +#: widgets/em-events.php:23 +#: widgets/em-events.php:164 +msgid "No events" +msgstr "Inga event" + +#: widgets/em-events.php:102 +msgid "Number of events" +msgstr "Antal event" + +#: widgets/em-events.php:107 +msgid "Scope" +msgstr "Omfattning" + +#: widgets/em-events.php:117 +#: widgets/em-locations.php:90 +msgid "Order By" +msgstr "Sortera efter" + +#: widgets/em-events.php:26 +msgid "start date, start time, event name" +msgstr "startdatum, starttid, eventmn" + +#: widgets/em-events.php:27 +msgid "name, start date, start time" +msgstr "namn, startdatum, starttid" + +#: widgets/em-events.php:28 +msgid "name, end date, end time" +msgstr "namn, slutdatum, sluttid" + +#: widgets/em-events.php:29 +msgid "end date, end time, event name" +msgstr "slutdatum, sluttid, eventmn" + +#: widgets/em-events.php:130 +msgid "Order" +msgstr "Sortera" + +#: admin/em-options.php:525 +#: admin/em-options.php:528 +#: admin/em-options.php:579 +#: admin/em-options.php:684 +#: admin/em-options.php:687 +#: admin/em-options.php:734 +#: admin/em-options.php:737 +#: admin/em-options.php:824 +#: admin/em-options.php:827 +#: admin/em-options.php:911 +#: admin/em-options.php:914 +#: admin/em-options.php:1039 +#: widgets/em-events.php:134 +#: widgets/em-locations.php:105 +msgid "Ascending" +msgstr "Stigande" + +#: admin/em-options.php:526 +#: admin/em-options.php:529 +#: admin/em-options.php:580 +#: admin/em-options.php:685 +#: admin/em-options.php:688 +#: admin/em-options.php:735 +#: admin/em-options.php:738 +#: admin/em-options.php:825 +#: admin/em-options.php:828 +#: admin/em-options.php:912 +#: admin/em-options.php:915 +#: admin/em-options.php:1040 +#: widgets/em-events.php:135 +#: widgets/em-locations.php:106 +msgid "Descending" +msgstr "Fallande" + +#: widgets/em-events.php:155 +msgid "Show all events link at bottom?" +msgstr "Visa alla event-länk längst ner?" + +#: widgets/em-events.php:159 +msgid "All events link text?" +msgstr "Alla event länktext?" + +#: admin/bookings/em-events.php:14 +#: em-functions.php:180 +msgid "All events" +msgstr "Alla event" + +#: admin/bookings/em-events.php:15 +#: em-functions.php:181 +msgid "Future events" +msgstr "Framtida event" + +#: admin/bookings/em-events.php:13 +#: em-functions.php:182 +msgid "Past events" +msgstr "Tidigare event" + +#: em-functions.php:183 +msgid "Today's events" +msgstr "Dagens event" + +#: em-functions.php:184 +msgid "Tomorrow's events" +msgstr "Morgondagens event" + +#: em-functions.php:185 +msgid "Events this month" +msgstr "Event denna mÃ¥nad" + +#: em-functions.php:186 +msgid "Events next month" +msgstr "Event nästa mÃ¥nad" + +#: em-functions.php:187 +msgid "Events current and next month" +msgstr "Event denna och nästkommande mÃ¥nad" + +#: em-functions.php:188 +msgid "Events within 2 months" +msgstr "Event inom 2 mÃ¥nader" + +#: em-functions.php:189 +msgid "Events within 3 months" +msgstr "Event inom 3 mÃ¥nader" + +#: em-functions.php:190 +msgid "Events within 6 months" +msgstr "Event inom 6 mÃ¥nader" + +#: em-functions.php:191 +msgid "Events within 12 months" +msgstr "Event inom 12 mÃ¥nader" + +#: em-functions.php:249 +msgid "Trying to perform an illegal action." +msgstr "Försöker utföra en förbjuden Ã¥tgärd." + +#: em-functions.php:326 +msgid "ERROR: Please enter a username." +msgstr "FEL: Vänligen ange ett användarnamn" + +#: em-functions.php:328 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "FEL: Detta användarnamn är ogiltigt eftersom det använder otillÃ¥tna tecken. Vänligen använd in ett annat användarnamn." + +#: em-functions.php:331 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "FEL: Detta användarnamn är redan upptaget, välj ett annat." + +#: em-actions.php:278 +#: em-functions.php:336 +msgid "ERROR: Please type your e-mail address." +msgstr "FEL: Skriv in din e-postadress." + +#: em-actions.php:281 +#: em-functions.php:338 +msgid "ERROR: The email address isn’t correct." +msgstr "FEL: E-postadressen är inte korrekt." + +#: em-functions.php:341 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "FEL: Denna e-post är redan registrerad, vänligen välj en annan." + +#: em-functions.php:361 +#, php-format +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "FEL: Kunde ej utföra registrering... Kontakta webmastern !" + +#: em-functions.php:396 +#, php-format +msgid "New user registration on your blog %s:" +msgstr "Ny användare registrerad pÃ¥ din hemsida %s:" + +#: em-functions.php:397 +#, php-format +msgid "Username: %s" +msgstr "Användarnamn: %s" + +#: em-functions.php:398 +#, php-format +msgid "E-mail: %s" +msgstr "E-post: %s" + +#: em-functions.php:399 +#, php-format +msgid "[%s] New User Registration" +msgstr "[%s] Ny användarregistrering" + +#: em-functions.php:411 +#, php-format +msgid "[%s] Your username and password" +msgstr "[%s] Ditt användarnamn och lösenord" + +#: classes/em-ticket.php:47 +msgid "Standard Ticket" +msgstr "Standardbiljett" + +#: classes/em-booking.php:135 +#: classes/em-ticket-booking.php:69 +#: classes/em-ticket.php:97 +msgid "Changes saved" +msgstr "Förändringar sparade" + +#: classes/em-ticket.php:102 +msgid "Ticket created" +msgstr "Biljett skapad" + +#: classes/em-ticket.php:105 +#: classes/em-ticket.php:106 +#: classes/em-ticket.php:111 +#: classes/em-ticket.php:112 +msgid "There was a problem saving the ticket." +msgstr "Det uppstod problem när biljetten sparades." + +#: classes/em-event.php:476 +#: classes/em-ticket-booking.php:113 +#: classes/em-ticket.php:161 +msgid "Missing fields: " +msgstr "Saknade fält: " + +#: classes/em-ticket.php:277 +msgid "You cannot delete a ticket that has a booking on it." +msgstr "Du kan inte ta bort en biljett som det finns bokningar knutna till." + +#: classes/em-location.php:106 +msgid "The location address" +msgstr "Platsadress" + +#: classes/em-location.php:106 +msgid "The location town" +msgstr "Platsen stad" + +#: classes/em-location.php:106 +msgid "The country" +msgstr "Landet" + +#: classes/em-event.php:440 +#: classes/em-location.php:242 +#: classes/em-location.php:258 +#: classes/em-location.php:260 +msgid " is required." +msgstr "krävs" + +#: admin/em-bookings.php:129 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:347 +#: admin/em-options.php:358 +#: admin/em-options.php:626 +#: admin/em-options.php:640 +#: admin/em-options.php:654 +#: admin/em-options.php:655 +#: admin/em-options.php:1084 +#: admin/em-options.php:1550 +#: classes/em-event-posts-admin.php:110 +#: classes/em-event-posts-admin.php:247 +#: classes/em-location-posts-admin.php:47 +#: classes/em-location-posts-admin.php:49 +#: classes/em-location.php:365 +#: classes/em-location.php:372 +#: classes/em-location.php:661 +#: em-actions.php:180 +#: em-posts.php:234 +#: templates/buddypress/group-events.php:44 +#: templates/buddypress/my-group-events.php:44 +#: templates/forms/location-editor.php:37 +#: templates/tables/events.php:54 +msgid "Location" +msgstr "Plats" + +#: admin/em-ms-options.php:173 +#: admin/em-options.php:355 +#: admin/em-options.php:356 +#: admin/em-options.php:632 +#: admin/em-options.php:656 +#: admin/em-options.php:711 +#: admin/em-options.php:1086 +#: admin/em-options.php:1087 +#: classes/em-location-post-admin.php:59 +#: classes/em-location.php:360 +#: classes/em-location.php:370 +#: templates/forms/location-editor.php:11 +msgid "location" +msgstr "plats" + +#: classes/em-location.php:376 +#, php-format +msgid "You do not have permission to create/edit %s." +msgstr "Du har inte rättigheter att skapa/ändra %s." + +#: admin/em-ms-options.php:167 +#: admin/em-ms-options.php:172 +#: admin/em-ms-options.php:173 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:630 +#: admin/em-options.php:631 +#: admin/em-options.php:632 +#: admin/em-options.php:645 +#: admin/em-options.php:649 +#: admin/em-options.php:655 +#: admin/em-options.php:656 +#: admin/em-options.php:706 +#: admin/em-options.php:707 +#: admin/em-options.php:750 +#: admin/em-options.php:928 +#: admin/em-options.php:1079 +#: admin/em-options.php:1080 +#: admin/em-options.php:1081 +#: admin/em-options.php:1082 +#: admin/em-options.php:1552 +#: admin/em-options.php:1553 +#: admin/em-options.php:1554 +#: admin/em-options.php:1555 +#: admin/em-options.php:1556 +#: admin/em-options.php:1557 +#: classes/em-location.php:376 +#: events-manager.php:286 +#: events-manager.php:287 +#: events-manager.php:288 +#: events-manager.php:289 +#: events-manager.php:290 +#: events-manager.php:291 +#: events-manager.php:292 +msgid "locations" +msgstr "platser" + +#: em-actions.php:104 +#, php-format +msgid "%s successfully deleted." +msgstr "%s borttagna." + +#: em-actions.php:107 +#, php-format +msgid "%s could not be deleted." +msgstr "%s kunde inte tas bort." + +#: classes/em-booking.php:144 +#: classes/em-booking.php:145 +#: classes/em-booking.php:153 +#: classes/em-booking.php:164 +#: classes/em-booking.php:170 +#: classes/em-tickets-bookings.php:70 +#: classes/em-tickets-bookings.php:71 +msgid "There was a problem saving the booking." +msgstr "Problem uppstod när bokning skulle sparas." + +#: classes/em-tickets-bookings.php:100 +#: em-install.php:539 +msgid "Booking cannot be made, not enough spaces available!" +msgstr "Bokningen kunde inte utföras, slut pÃ¥ lediga platser!" + +#: classes/em-tickets-bookings.php:165 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:11 +#, php-format +msgid "You do not have the rights to manage this %s." +msgstr "Du har inte rättigheter att hantera denna %s." + +#: classes/em-booking.php:166 +#: classes/em-booking.php:172 +#: classes/em-booking.php:398 +#: classes/em-booking.php:400 +#: classes/em-bookings.php:109 +#: classes/em-tickets-bookings.php:165 +#: templates/placeholders/bookingbutton.php:8 +#: templates/placeholders/bookingbutton.php:9 +msgid "Booking" +msgstr "Bokning" + +#: admin/em-bookings.php:171 +#: admin/em-bookings.php:227 +#: admin/em-options.php:673 +#: admin/em-options.php:723 +#: admin/em-options.php:813 +#: classes/em-bookings-table.php:76 +#: classes/em-person.php:76 +#: templates/buddypress/group-events.php:42 +#: templates/buddypress/my-group-events.php:42 +#: templates/forms/bookingform/booking-fields.php:12 +#: templates/forms/ticket-form.php:12 +#: templates/forms/tickets-form.php:9 +#: templates/tables/events.php:52 +#: templates/tables/locations.php:36 +#: templates/tables/locations.php:45 +#: templates/templates/bookings-event-printable.php:24 +msgid "Name" +msgstr "Namn" + +#: classes/em-person.php:77 +msgid "Email" +msgstr "E-post" + +#: classes/em-people.php:28 +#: classes/em-person.php:78 +#: templates/forms/bookingform/booking-fields.php:16 +msgid "Phone" +msgstr "Telefon" + +#: classes/em-ticket-booking.php:78 +msgid "Ticket booking created" +msgstr "Biljettbokning skapad." + +#: classes/em-ticket-booking.php:85 +#: classes/em-ticket-booking.php:86 +#: classes/em-ticket-booking.php:91 +#: classes/em-ticket-booking.php:92 +msgid "There was a problem saving the ticket booking." +msgstr "Det uppstod problem vid sparandet utav biljettbokningen." + +#: admin/em-options.php:801 +#: admin/em-options.php:1117 +#: admin/em-options.php:1118 +msgid "category" +msgstr "kategori" + +#: classes/em-bookings.php:109 +#, php-format +msgid "%s created." +msgstr "%s skapad." + +#: classes/em-bookings.php:271 +#: classes/em-bookings.php:277 +#, php-format +msgid "Bookings %s. Mails Sent." +msgstr "Bokningar %s. E-post skickat." + +#: classes/em-bookings.php:281 +msgid "An error occurred." +msgstr "Ett fel uppstod." + +#: admin/bookings/em-events.php:131 +#: classes/em-booking.php:101 +#: classes/em-bookings-table.php:54 +#: classes/em-event-posts-admin.php:157 +#: classes/em-event.php:249 +#: templates/buddypress/group-events.php:95 +#: templates/buddypress/my-group-events.php:89 +#: templates/tables/events.php:19 +#: templates/tables/events.php:99 +msgid "Pending" +msgstr "Väntande" + +#: classes/em-booking.php:102 +#: classes/em-event.php:250 +msgid "Approved" +msgstr "Godkänd" + +#: classes/em-booking.php:103 +#: classes/em-bookings-table.php:57 +msgid "Rejected" +msgstr "Avslagen" + +#: classes/em-booking.php:104 +#: classes/em-bookings-table.php:56 +#: em-install.php:536 +#: templates/placeholders/bookingbutton.php:12 +msgid "Cancelled" +msgstr "Avbruten" + +#: classes/em-booking.php:105 +msgid "Awaiting Online Payment" +msgstr "Inväntar onlinebetalning" + +#: classes/em-booking.php:106 +msgid "Awaiting Payment" +msgstr "Inväntar betalning" + +#: classes/em-booking.php:140 +msgid "Your booking has been recorded" +msgstr "Din bokning har blivit mottagen" + +#: classes/em-booking.php:166 +#: classes/em-booking.php:172 +#, php-format +msgid "You cannot manage this %s." +msgstr "Du kan inte hantera denna %s." + +#: classes/em-booking.php:223 +msgid "You are trying to book a non-existent ticket for this event." +msgstr "Biljetten du försöker boka finns ej till detta event." + +#: classes/em-booking.php:398 +#, php-format +msgid "%s deleted" +msgstr "%s borttagen" + +#: classes/em-booking.php:400 +#, php-format +msgid "%s could not be deleted" +msgstr "%s kunde inte tas bort" + +#: classes/em-booking.php:446 +msgid "Not approved, spaces full." +msgstr "Ej godkänd, inga lediga platser." + +#: classes/em-booking.php:454 +#, php-format +msgid "Booking %s." +msgstr "Bokning %s." + +#: classes/em-booking.php:457 +#: em-actions.php:433 +#: em-actions.php:452 +msgid "Mail Sent." +msgstr "E-post skickat." + +#: classes/em-booking.php:460 +#: classes/em-booking.php:461 +#: em-actions.php:435 +#: em-actions.php:458 +msgid "ERROR : Mail Not Sent." +msgstr "Fel: E-post ej sänt." + +#: classes/em-booking.php:467 +#: classes/em-booking.php:468 +#, php-format +msgid "Booking could not be %s." +msgstr "Bokning kunde inte %s." + +#: classes/em-booking.php:483 +msgid "Booking note successfully added." +msgstr "Bokningsanteckning tillagd." + +#: classes/em-booking.php:634 +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "Bekräftelsemail kunde inte skickas till kontaktpersonen. Bokaren har dock fÃ¥tt sitt mail (endast administratören ser denna varning)." + +#: classes/em-booking.php:643 +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "Bekräftelsemail kunde inte skickas till administratören. Bokaren har dock fÃ¥tt sitt mail (endast administratören ser denna varning)." + +#: admin/em-options.php:1115 +#: templates/buddypress/group-events.php:113 +#: templates/buddypress/my-group-events.php:107 +msgid "Category" +msgstr "Kategori" + +#: admin/em-options.php:765 +#: admin/em-options.php:769 +#: admin/em-options.php:778 +#: admin/em-options.php:840 +#: admin/em-options.php:1110 +#: admin/em-options.php:1111 +#: admin/em-options.php:1112 +#: admin/em-options.php:1113 +#: events-manager.php:295 +#: events-manager.php:296 +msgid "categories" +msgstr "kategorier" + +#: classes/em-tickets.php:111 +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "Du kan inte ta bort biljetter om det finns bokningar associerade med dem. Ta bort bokningen först." + +#: classes/em-tickets.php:140 +msgid "Standard" +msgstr "Standard" + +#: classes/em-people.php:19 +msgid "User deleted by administrators" +msgstr "Användare borttagen av administratören." + +#: classes/em-event-post-admin.php:37 +msgid "WARNING: This is a recurring event." +msgstr "Varning: Detta är en Ã¥terkommande event." + +#: classes/em-event-post-admin.php:38 +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "Modifieringar av detta event kommer innebära att alla upprepningar av utbilningen tas bort och Ã¥terkapas, samt att tidigare gjorda bokningar tas bort! Du kan istället ändra varje Ã¥terkommande event och av-associera dem med detta event." + +#: classes/em-event-post-admin.php:41 +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "Varning: Detta är en instans av en event i en serie av upprepade event." + +#: classes/em-event-post-admin.php:48 +#, php-format +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "Varning: Detta är en event som hör till gruppen \"%s\". Andra administratörer för denna grupp kan ocksÃ¥ modifiera detta event." + +#: classes/em-event.php:647 +msgid "Something went wrong with the recurrence update..." +msgstr "NÃ¥gonting blev fel med uppdateringen av den upprepade eventet..." + +#: classes/em-event.php:647 +msgid "There was a problem saving the recurring events." +msgstr "Ett problem uppstod vid sparandet av den Ã¥terkommande eventet." + +#: classes/em-event.php:687 +#, php-format +msgid "%s successfully duplicated." +msgstr "%s kopierad." + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:326 +#: admin/em-options.php:327 +#: admin/em-options.php:461 +#: admin/em-options.php:498 +#: admin/em-options.php:555 +#: admin/em-options.php:1563 +#: admin/em-options.php:1564 +#: classes/em-event-post-admin.php:85 +#: classes/em-event.php:606 +#: classes/em-event.php:619 +msgid "event" +msgstr "event" + +#: classes/em-event.php:455 +#: classes/em-event.php:457 +msgid "Events cannot start after they end." +msgstr "event kan inte starta efter att de har tagit slut." + +#: classes/em-event.php:462 +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "Datum mÃ¥ste ha korrekt formatering. Tips: Använd datumväljaren!" + +#: classes/em-event.php:1370 +#: templates/forms/bookingform/ticket-single.php:37 +#: templates/forms/bookingform/tickets-list.php:45 +msgid "N/A" +msgstr "N/A" + +#: classes/em-event.php:1380 +msgid "Profile" +msgstr "Profil" + +#: classes/em-event.php:1895 +msgid "Sunday" +msgstr "söndag" + +#: classes/em-event.php:1895 +msgid "Monday" +msgstr "mÃ¥ndag" + +#: classes/em-event.php:1895 +msgid "Tuesday" +msgstr "tisdag" + +#: classes/em-event.php:1895 +msgid "Wednesday" +msgstr "onsdag" + +#: classes/em-event.php:1895 +msgid "Thursday" +msgstr "torsdag" + +#: classes/em-event.php:1895 +msgid "Friday" +msgstr "fredag" + +#: classes/em-event.php:1895 +msgid "Saturday" +msgstr "lördag" + +#: classes/em-event.php:1896 +#, php-format +msgid "the first %s of the month" +msgstr "den första %s i mÃ¥naden" + +#: classes/em-event.php:1896 +#, php-format +msgid "the second %s of the month" +msgstr "den andra %s i mÃ¥naden" + +#: classes/em-event.php:1896 +#, php-format +msgid "the third %s of the month" +msgstr "den tredje %s i mÃ¥naden" + +#: classes/em-event.php:1896 +#, php-format +msgid "the fourth %s of the month" +msgstr "den fjärde %s i mÃ¥naden" + +#: classes/em-event.php:1896 +#, php-format +msgid "the last %s of the month" +msgstr "den sista %s i mÃ¥naden" + +#: classes/em-event.php:1897 +#, php-format +msgid "From %1$s to %2$s" +msgstr "FrÃ¥n %1$s till %2$s" + +#: classes/em-event.php:1899 +msgid "everyday" +msgstr "varje dag" + +#: classes/em-event.php:1901 +#, php-format +msgid "every %s days" +msgstr "var %s dag" + +#: classes/em-event.php:1910 +msgid "every week" +msgstr "varje vecka" + +#: classes/em-event.php:1912 +#, php-format +msgid "every %s weeks" +msgstr "var %s vecka" + +#: classes/em-event.php:1923 +#, php-format +msgid "every %s months" +msgstr "var %s mÃ¥nad" + +#: classes/em-object.php:1160 +msgid "The image file is too big! Maximum size:" +msgstr "Bildfilen kunde inte sparas! Max storlek:" + +#: classes/em-object.php:1167 +msgid "The image is too big! Maximum size allowed:" +msgstr "Bild kunde inte sparas! Max tillÃ¥ten storlek:" + +#: classes/em-object.php:1173 +msgid "The image is in a wrong format!" +msgstr "Bilden är i fel format!" + +#: classes/em-mailer.php:103 +msgid "Please supply a valid email format." +msgstr "Var vänlig fyll i en korrekt e-postadress." + +#: admin/em-options.php:1380 +msgid "Booking cancelled" +msgstr "Bokning avbruten" + +#: em-actions.php:380 +msgid "You must log in to cancel your booking." +msgstr "Du mÃ¥ste logga in för att kunna avbryta din bokning" + +#: admin/em-bookings.php:292 +#: classes/em-tickets.php:205 +msgid "Ticket Type" +msgstr "Biljettyp" + +#: admin/em-bookings.php:173 +#: admin/em-bookings.php:294 +#: classes/em-tickets.php:205 +#: templates/forms/event/bookings.php:31 +#: templates/forms/ticket-form.php:16 +#: templates/forms/tickets-form.php:11 +msgid "Price" +msgstr "Pris" + +#: admin/bookings/em-cancelled.php:87 +#: admin/bookings/em-confirmed.php:88 +#: admin/bookings/em-pending.php:105 +#: admin/bookings/em-person.php:87 +#: admin/bookings/em-rejected.php:87 +#: admin/em-bookings.php:174 +#: admin/em-bookings.php:293 +#: classes/em-bookings-table.php:80 +#: classes/em-tickets.php:205 +#: templates/forms/bookingform/ticket-single.php:30 +#: templates/forms/ticket-form.php:18 +#: templates/templates/bookings-event-printable.php:27 +#: templates/templates/my-bookings.php:48 +msgid "Spaces" +msgstr "Platser" + +#: admin/em-bookings.php:350 +#: templates/forms/bookingform/booking-fields.php:26 +#: templates/templates/bookings-event-printable.php:28 +msgid "Comment" +msgstr "Kommentar" + +#: em-install.php:524 +msgid "Send your booking" +msgstr "Skicka din bokning" + +#: templates/forms/ticket-form.php:22 +msgid "Available from" +msgstr "Tillgänglig frÃ¥n" + +#: templates/forms/event/recurring-when.php:51 +#: templates/forms/event/recurring-when.php:58 +#: templates/forms/event/when-with-recurring.php:17 +#: templates/forms/event/when-with-recurring.php:18 +#: templates/forms/event/when-with-recurring.php:26 +#: templates/forms/event/when.php:11 +#: templates/forms/event/when.php:18 +#: templates/forms/ticket-form.php:25 +msgid "to" +msgstr "till" + +#: templates/forms/ticket-form.php:28 +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "Lägg till ett start eller slutdatum (eller bÃ¥de och) för att kunna tidsbegränsa biljettillgängliheten. Lämna endera fält tomt om du inte vill ha nÃ¥gon under/övre gräns." + +#: templates/forms/ticket-form.php:31 +msgid "Bookings must order between" +msgstr "Bokningar mÃ¥ste bestÃ¥ av mellan" + +#: templates/forms/ticket-form.php:33 +#: templates/templates/events-search.php:38 +msgid "and" +msgstr "och" + +#: templates/forms/ticket-form.php:35 +msgid "spaces." +msgstr "platser." + +#: templates/forms/ticket-form.php:36 +msgid "Leave either blank for no upper/lower limit." +msgstr "Lämna endera blank ifall du inte vill ha nÃ¥gon övre/lägre gräns." + +#: admin/em-bookings.php:172 +#: templates/forms/ticket-form.php:39 +#: templates/forms/tickets-form.php:10 +msgid "Description" +msgstr "Beskrivning" + +#: admin/em-bookings.php:92 +#: admin/em-bookings.php:154 +#: admin/em-bookings.php:202 +#: admin/em-bookings.php:447 +#: admin/em-bookings.php:499 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:11 +msgid "Unauthorized Access" +msgstr "Obehörig Ã¥tkomst" + +#: admin/em-ms-locations.php:39 +msgid "Add location" +msgstr "Lägg till plats" + +#: admin/em-ms-locations.php:42 +msgid "Edit location" +msgstr "Ändra plats" + +#: templates/forms/location-editor.php:17 +msgid "required" +msgstr "krävs" + +#: templates/forms/location-editor.php:28 +msgid "Location Name" +msgstr "Platsnamn" + +#: templates/forms/location-editor.php:33 +msgid "The name of the location" +msgstr "Namnet pÃ¥ platsen" + +#: templates/forms/location/where.php:5 +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "Ju bättre du preciserar platsen, desto mer exakt kommer Google Map att kunna hitta din plats. Om din adress inte kan hittas, försök hitta den själv pÃ¥ maps.google.com genom att ange alla fält nedan separerade med kommatecken." + +#: templates/forms/event/location.php:66 +#: templates/forms/location/where.php:9 +msgid "Address:" +msgstr "Adress:" + +#: templates/forms/event/location.php:72 +#: templates/forms/location/where.php:15 +msgid "City/Town:" +msgstr "Stad:" + +#: templates/forms/event/location.php:78 +#: templates/forms/location/where.php:21 +msgid "State/County:" +msgstr "Stat/Län:" + +#: templates/forms/event/location.php:84 +#: templates/forms/location/where.php:27 +msgid "Postcode:" +msgstr "Postkod:" + +#: templates/forms/event/location.php:96 +#: templates/forms/location/where.php:40 +msgid "Country:" +msgstr "Land:" + +#: templates/forms/event/location.php:99 +#: templates/forms/location/where.php:43 +msgid "none selected" +msgstr "ingen vald" + +#: templates/forms/event/location.php:116 +#: templates/forms/location/where.php:53 +msgid "Location not found" +msgstr "Platsen kunde inte hittas" + +#: templates/forms/event-editor.php:98 +#: templates/forms/location-editor.php:44 +msgid "Details" +msgstr "Detaljer" + +#: templates/forms/location-editor.php:90 +msgid "No image uploaded for this location yet" +msgstr "Ingen bild är uppladdad för denna plats ännu" + +#: templates/forms/event-editor.php:171 +#: templates/forms/location-editor.php:93 +msgid "Upload/change picture" +msgstr "Ladda upp/ändra bild" + +#: templates/forms/event-editor.php:173 +#: templates/forms/location-editor.php:95 +msgid "Delete Image?" +msgstr "Ta bort Bild?" + +#: templates/forms/location-editor.php:104 +msgid "Update location" +msgstr "Uppdatera plats" + +#: admin/bookings/em-cancelled.php:85 +#: admin/bookings/em-confirmed.php:86 +#: admin/bookings/em-pending.php:103 +#: admin/bookings/em-rejected.php:85 +#: classes/em-bookings-table.php:78 +#: templates/forms/bookingform/booking-fields.php:20 +#: templates/templates/bookings-event-printable.php:25 +msgid "E-mail" +msgstr "E-post" + +#: templates/forms/bookingform/login.php:8 +msgid "Log in if you already have an account with us." +msgstr "Har du konto sedan tidigare?" + +#: templates/forms/bookingform/login.php:10 +msgid "Username" +msgstr "Användarnamn" + +#: templates/forms/bookingform/login.php:14 +msgid "Password" +msgstr "Lösenord" + +#: templates/forms/bookingform/login.php:18 +msgid "Log In" +msgstr "Logga in" + +#: templates/forms/bookingform/login.php:19 +msgid "Remember Me" +msgstr "Kom ihÃ¥g mig" + +#: templates/forms/bookingform/login.php:34 +msgid "Sign Up" +msgstr "Registrera dig" + +#: templates/forms/bookingform/login.php:38 +msgid "Password Lost and Found" +msgstr "Lösenordshittegods" + +#: templates/forms/bookingform/login.php:38 +msgid "Lost your password?" +msgstr "Tappat ditt lösenord?" + +#: admin/em-bookings.php:114 +#: admin/em-options.php:898 +#: templates/forms/event-editor.php:31 +msgid "Event Name" +msgstr "Bokningsnamn" + +#: templates/forms/event-editor.php:35 +msgid "The event name. Example: Birthday party" +msgstr "Namnet pÃ¥ eventet" + +#: templates/forms/event/group.php:23 +#: templates/forms/event-editor.php:61 +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "Välj en grupp du administrerar att koppla detta event till. Kom ihÃ¥g att alla andra gruppadministratörer kan modifiera bokningar, och du kommer inte att kunna plocka bort eventet ur gruppen utan att ta bort den helt." + +#: classes/em-event-post-admin.php:182 +#: templates/forms/event-editor.php:67 +msgid "When" +msgstr "När" + +#: templates/forms/event/when.php:23 +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "Detta event kommer att gÃ¥ varje dag mellan den första och den sista dagen. De start och sluttider som angivits kommer att vara desamma varje dag." + +#: templates/forms/event/recurring-when.php:67 +#: templates/forms/event/when-with-recurring.php:73 +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "För Ã¥terkommande event sÃ¥ kommer ett eventtillfälle att skapas pÃ¥ varje dag i datumserien." + +#: templates/forms/event/recurring-when.php:10 +#: templates/forms/event/when-with-recurring.php:32 +msgid "This event repeats" +msgstr "Detta event repeteras" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Daily" +msgstr "Dagligen" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Weekly" +msgstr "Veckoligen" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Monthly" +msgstr "MÃ¥natligen" + +#: templates/forms/event/recurring-when.php:17 +#: templates/forms/event/when-with-recurring.php:39 +msgid "every" +msgstr "varje" + +#: templates/forms/event/recurring-when.php:19 +#: templates/forms/event/when-with-recurring.php:41 +msgid "day" +msgstr "dag" + +#: templates/forms/event/recurring-when.php:20 +#: templates/forms/event/when-with-recurring.php:42 +msgid "days" +msgstr "dagar" + +#: templates/forms/event/recurring-when.php:21 +#: templates/forms/event/when-with-recurring.php:43 +msgid "week on" +msgstr "vecka den" + +#: templates/forms/event/recurring-when.php:22 +#: templates/forms/event/when-with-recurring.php:44 +msgid "weeks on" +msgstr "veckor den" + +#: templates/forms/event/recurring-when.php:23 +#: templates/forms/event/when-with-recurring.php:45 +msgid "month on the" +msgstr "mÃ¥nad den" + +#: templates/forms/event/recurring-when.php:24 +#: templates/forms/event/when-with-recurring.php:46 +msgid "months on the" +msgstr "mÃ¥naderna de" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +msgid "first" +msgstr "första" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +msgid "second" +msgstr "andra" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +msgid "third" +msgstr "tredje" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +msgid "fourth" +msgstr "fjärde" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +msgid "last" +msgstr "sista" + +#: templates/forms/event/recurring-when.php:43 +#: templates/forms/event/when-with-recurring.php:66 +msgid "of each month" +msgstr "varje mÃ¥nad" + +#: classes/em-event-post-admin.php:184 +#: classes/em-event-post-admin.php:352 +#: classes/em-location-post-admin.php:113 +#: templates/forms/event-editor.php:93 +msgid "Where" +msgstr "Var" + +#: templates/forms/event/location.php:28 +msgid "Location:" +msgstr "Plats:" + +#: templates/forms/event/location.php:61 +msgid "Create a location or start typing to search a previously created location." +msgstr "Skapa en plats eller börja skriva för att söka efter tidigare skapad plats." + +#: templates/forms/event/location.php:62 +msgid "You cannot edit saved locations here." +msgstr "Du kan inte ändra sparade platser här." + +#: templates/forms/event/location.php:62 +msgid "Reset this form to create a location." +msgstr "Ã…terställ detta formulär för att skapa en plats." + +#: templates/forms/event/location.php:90 +#: templates/forms/location/where.php:33 +msgid "Region:" +msgstr "Region:" + +#: templates/forms/event/location.php:104 +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "Om du fyller i detta först kommer du lätt att kunna hitta tidigare använda städer och platser i landet." + +#: templates/forms/event-editor.php:106 +msgid "Details about the event." +msgstr "Detaljer om eventet" + +#: templates/forms/event-editor.php:106 +#: templates/forms/location-editor.php:52 +msgid "HTML Allowed." +msgstr "HTML TillÃ¥tet." + +#: templates/forms/event-editor.php:115 +msgid "Category:" +msgstr "Kategori:" + +#: templates/forms/event-editor.php:189 +msgid "Submit Event" +msgstr "Spara event" + +#: classes/em-event-post-admin.php:188 +#: classes/em-event-post-admin.php:354 +#: templates/forms/event-editor.php:179 +msgid "Bookings/Registration" +msgstr "Bokning/Registrering" + +#: templates/forms/event/bookings.php:8 +msgid "Enable registration for this event" +msgstr "TillÃ¥t registrering för detta event" + +#: templates/forms/event/booking-stats.php:21 +msgid "manage bookings" +msgstr "hantera bokningar" + +#: templates/forms/event/booking-stats.php:22 +msgid "printable view" +msgstr "utskriftsvänlig vy" + +#: templates/forms/event/booking-stats.php:24 +msgid "export csv" +msgstr "exportera csv (kommaseparerat format)" + +#: templates/forms/event/bookings.php:24 +msgid "Tickets" +msgstr "Biljetter" + +#: classes/em-bookings-table.php:87 +#: templates/forms/event/bookings.php:30 +msgid "Ticket Name" +msgstr "Biljettnamn" + +#: templates/forms/event/bookings.php:32 +msgid "Min/Max" +msgstr "Min/Max" + +#: templates/forms/event/bookings.php:33 +msgid "Start/End" +msgstr "Start/Slut" + +#: templates/forms/event/bookings.php:34 +msgid "Avail. Spaces" +msgstr "Tillgängliga Platser" + +#: admin/bookings/em-events.php:129 +#: templates/forms/event/bookings.php:35 +msgid "Booked Spaces" +msgstr "Bokade Platser" + +#: templates/forms/event/bookings.php:42 +msgid "Add new ticket" +msgstr "Lägg till ny biljett" + +#: templates/forms/event/bookings.php:57 +msgid "Free" +msgstr "Gratis" + +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-rejected.php:113 +#: classes/em-bookings-table.php:563 +#: classes/em-bookings-table.php:572 +#: classes/em-bookings-table.php:580 +#: classes/em-bookings-table.php:588 +#: classes/em-bookings-table.php:594 +#: classes/em-bookings-table.php:599 +#: classes/em-event-posts-admin.php:168 +#: templates/buddypress/group-events.php:101 +#: templates/buddypress/group-events.php:135 +#: templates/buddypress/my-group-events.php:95 +#: templates/buddypress/my-group-events.php:129 +#: templates/forms/event/bookings.php:89 +#: templates/tables/events.php:105 +#: templates/tables/events.php:136 +msgid "Delete" +msgstr "Ta bort" + +#: templates/forms/event/bookings.php:91 +msgid "View Bookings" +msgstr "Visa Bokningar" + +#: events-manager.php:229 +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "Är du säker pÃ¥ att du vill boka om denna Ã¥terkommande event? Om du gör detta kommer du att förlora all bokningsinformation och gamla Ã¥terkommande eventtillfällen kommer att raderas." + +#: events-manager.php:230 +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "Är du säker pÃ¥ att du vill inaktivera bokningar? Om du gör det och sparar förlorar du alla tidigare bokningar. Om du vill förhindra ytterligare bokningar, minska istället antalet tillgängliga platser" + +#: templates/forms/tickets-form.php:7 +msgid "Create a ticket" +msgstr "Skapa en biljett" + +#: templates/forms/tickets-form.php:13 +msgid "Available ticket spaces" +msgstr "Tillgängliga biljettutrymmen" + +#: templates/forms/tickets-form.php:15 +msgid "Start date of ticket availability" +msgstr "Startdatum dÃ¥ biljetterna ska bli tillgängliga" + +#: templates/forms/tickets-form.php:16 +msgid "End date of ticket availability" +msgstr "Slutdatum dÃ¥ biljetterna slutar vara tillgängliga" + +#: templates/forms/tickets-form.php:17 +msgid "Minimum tickets required per booking" +msgstr "Minsta antalet biljetter som krävs per bokning" + +#: templates/forms/tickets-form.php:18 +msgid "Maximum tickets required per booking" +msgstr "Max antal biljetter som krävs per bokning" + +#: templates/forms/tickets-form.php:24 +msgid "Add Ticket" +msgstr "Lägg till biljett" + +#: admin/em-ms-locations.php:29 +#: templates/tables/events.php:11 +msgid "Add New" +msgstr "Lägg till Ny" + +#: em-events.php:128 +#: templates/tables/locations.php:10 +#, php-format +msgid "My %s" +msgstr "Mina %s" + +#: admin/em-admin.php:45 +#: admin/em-ms-locations.php:28 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:440 +#: admin/em-options.php:644 +#: admin/em-options.php:645 +#: admin/em-options.php:1077 +#: admin/em-options.php:1079 +#: admin/em-options.php:1080 +#: admin/em-options.php:1081 +#: admin/em-options.php:1082 +#: classes/em-location-posts-admin.php:38 +#: em-actions.php:180 +#: em-install.php:407 +#: em-install.php:408 +#: em-install.php:745 +#: em-install.php:792 +#: em-posts.php:230 +#: em-posts.php:233 +#: em-posts.php:235 +#: templates/tables/locations.php:10 +#: templates/tables/locations.php:13 +msgid "Locations" +msgstr "Platser" + +#: templates/tables/locations.php:13 +#, php-format +msgid "All %s" +msgstr "Alla %s" + +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:54 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-rejected.php:49 +#: templates/tables/locations.php:20 +msgid "Bulk Actions" +msgstr "MassÃ¥tgärder" + +#: admin/bookings/em-events.php:55 +#: templates/tables/locations.php:21 +msgid "Delete selected" +msgstr "Ta bort valda" + +#: admin/bookings/em-events.php:57 +#: templates/tables/locations.php:23 +msgid "Apply" +msgstr "Verkställ" + +#: classes/em-location-posts-admin.php:55 +#: templates/tables/locations.php:37 +#: templates/tables/locations.php:46 +msgid "Address" +msgstr "Adress" + +#: classes/em-location-posts-admin.php:57 +#: templates/tables/locations.php:38 +#: templates/tables/locations.php:47 +msgid "State" +msgstr "Stat" + +#: admin/em-options.php:671 +#: admin/em-options.php:721 +#: admin/em-options.php:811 +#: classes/em-location-posts-admin.php:58 +#: templates/tables/locations.php:39 +#: templates/tables/locations.php:48 +msgid "Country" +msgstr "Land" + +#: admin/bookings/em-events.php:99 +#: templates/buddypress/group-events.php:45 +#: templates/buddypress/my-group-events.php:45 +#: templates/tables/events.php:55 +msgid "Date and time" +msgstr "Datum och tid" + +#: em-install.php:579 +#: templates/buddypress/group-events.php:30 +#: templates/buddypress/my-group-events.php:30 +#: templates/buddypress/profile.php:20 +msgid "No Events" +msgstr "Inga event" + +# @ dbem +#: templates/buddypress/profile.php:38 +msgid "Not attending any events yet." +msgstr "Inte inbokad till nÃ¥gra event ännu." + +#: templates/tables/events.php:17 +msgid "Upcoming" +msgstr "Kommande" + +#: admin/bookings/em-events.php:29 +#: templates/tables/events.php:21 +msgid "Past Events" +msgstr "Tidigare event" + +#: em-posts.php:150 +#: templates/tables/events.php:24 +#: templates/tables/events.php:26 +msgid "Search Events" +msgstr "Sök event" + +#: admin/bookings/em-events.php:88 +msgid "no events" +msgstr "inga event" + +#: admin/em-admin.php:38 +#: admin/em-bookings.php:134 +#: admin/em-bookings.php:183 +#: classes/em-event-posts-admin.php:154 +#: em-events.php:128 +#: templates/buddypress/group-events.php:92 +#: templates/buddypress/my-group-events.php:86 +#: templates/tables/events.php:96 +msgid "Bookings" +msgstr "Bokningar" + +#: classes/em-event-posts-admin.php:155 +#: templates/buddypress/group-events.php:93 +#: templates/buddypress/my-group-events.php:87 +#: templates/tables/events.php:97 +#: templates/templates/bookings-event-printable.php:42 +msgid "Booked" +msgstr "Bokad" + +#: templates/buddypress/group-events.php:106 +#: templates/buddypress/my-group-events.php:100 +#: templates/tables/events.php:110 +msgid "Duplicate this event" +msgstr "Kopiera detta event" + +#: classes/em-event-posts-admin.php:162 +#: templates/buddypress/group-events.php:129 +#: templates/buddypress/my-group-events.php:123 +#: templates/tables/events.php:130 +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "Varning! Du kommer att ta bort ALLA upprepningar av detta event inklusive bokningshistorik för varje enskild event. För att behÃ¥lla bokningsinformationen, gÃ¥ till den berörda gemensamma eventet och spara den för att koppla loss den frÃ¥n denna upprepningsserien." + +#: templates/templates/bookings-event-printable.php:21 +msgid "Bookings data" +msgstr "Bokningsdata" + +#: admin/bookings/em-cancelled.php:86 +#: admin/bookings/em-confirmed.php:87 +#: admin/bookings/em-pending.php:104 +#: admin/bookings/em-rejected.php:86 +#: templates/templates/bookings-event-printable.php:26 +msgid "Phone number" +msgstr "Telefonnummer" + +#: templates/templates/bookings-event-printable.php:47 +msgid "Available" +msgstr "Tillgänglig" + +#: templates/placeholders/locationmap.php:15 +#: templates/templates/map-global.php:15 +msgid "Loading Map...." +msgstr "Laddar Karta..." + +#: admin/em-bookings.php:123 +#: templates/templates/my-bookings.php:47 +msgid "Date" +msgstr "Datum" + +#: admin/bookings/em-person.php:88 +#: admin/em-bookings.php:262 +#: admin/em-bookings.php:272 +#: classes/em-bookings-table.php:81 +#: templates/templates/my-bookings.php:49 +msgid "Status" +msgstr "Status" + +#: em-install.php:535 +msgid "Are you sure you want to cancel your booking?" +msgstr "Är du säker pÃ¥ att du vill avboka din bokning?" + +#: admin/em-bookings.php:281 +#: admin/em-bookings.php:367 +#: admin/em-options.php:150 +#: admin/em-options.php:167 +#: templates/placeholders/bookingbutton.php:10 +#: templates/templates/my-bookings.php:75 +msgid "Cancel" +msgstr "Avbryt" + +#: templates/templates/my-bookings.php:91 +msgid "You do not have any bookings." +msgstr "Du har inga bokningar." + +#: templates/templates/my-bookings.php:101 +#, php-format +msgid "Please Log In to view your bookings." +msgstr "Logga in här för att se dina bokningar." + +#: templates/templates/events-search.php:35 +msgid "between" +msgstr "mellan" + +#: em-install.php:331 +msgid "All Categories" +msgstr "Alla Kategorier" + +#: em-install.php:333 +msgid "All Countries" +msgstr "Alla Länder" + +#: em-install.php:335 +msgid "All Regions" +msgstr "Alla Regioner" + +#: em-install.php:337 +msgid "All States" +msgstr "All States" + +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: em-install.php:328 +#: events-manager.php:241 +msgid "Search" +msgstr "Sök" + +#: events-manager.php:243 +msgid "Loading..." +msgstr "Laddar..." + +#: events-manager.php:242 +msgid "Searching..." +msgstr "Söker..." + +#: templates/placeholders/bookingbutton.php:6 +msgid "Book Now" +msgstr "Boka nu" + +#: templates/placeholders/bookingbutton.php:7 +msgid "Booking..." +msgstr "Bokar..." + +#: templates/placeholders/locationmap.php:27 +msgid "Map Unavailable" +msgstr "Karta Otillgänglig" + +#: em-install.php:529 +msgid "Online bookings are not available for this event." +msgstr "Internetbokning är inte tillgänglig för detta event." + +#: em-install.php:530 +msgid "Bookings are closed for this event." +msgstr "Bokningen är stängd för detta event." + +#: events-manager.php:222 +msgid "Please wait while the booking is being submitted." +msgstr "Vänligen vänta medan din bokning registreras." + +#: admin/em-options.php:40 +msgid "Changes saved." +msgstr "Förändringar sparade." + +#: admin/em-help.php:28 +#: admin/em-ms-options.php:52 +#: admin/em-options.php:187 +msgid "Event Related Placeholders" +msgstr "Eventelaterade platshÃ¥llare" + +#: admin/em-help.php:34 +#: admin/em-ms-options.php:53 +#: admin/em-options.php:188 +msgid "Location Related Placeholders" +msgstr "Platsrelaterade platshÃ¥llare" + +#: admin/em-help.php:37 +#: admin/em-ms-options.php:54 +#: admin/em-options.php:189 +msgid "Booking Related Placeholders" +msgstr "Bokningsrelaterade platshÃ¥llare" + +#: admin/em-help.php:31 +#: admin/em-ms-options.php:55 +#: admin/em-options.php:190 +msgid "Category Related Placeholders" +msgstr "Kategorirelaterade platshÃ¥llare" + +#: admin/em-ms-options.php:56 +#: admin/em-options.php:191 +#, php-format +msgid "This accepts %s and %s placeholders." +msgstr "Denna accepterar %s och %s." + +#: admin/em-ms-options.php:57 +#: admin/em-ms-options.php:58 +#: admin/em-options.php:192 +#: admin/em-options.php:193 +#, php-format +msgid "This accepts %s placeholders." +msgstr "Denna accepterar %s." + +#: admin/em-ms-options.php:59 +#: admin/em-options.php:194 +#, php-format +msgid "This accepts %s, %s and %s placeholders." +msgstr "Denna accepterar %s, %s och %s." + +#: admin/em-ms-options.php:61 +#: admin/em-ms-options.php:199 +#: admin/em-options.php:197 +#: admin/em-options.php:1432 +msgid "Save Changes" +msgstr "Spara ändringar" + +#: admin/em-ms-options.php:61 +#: admin/em-options.php:197 +#: classes/em-bookings-table.php:53 +msgid "All" +msgstr "Alla" + +#: admin/em-ms-options.php:66 +#: admin/em-options.php:202 +msgid "Collapse All" +msgstr "Fäll ihop alla" + +#: admin/em-ms-options.php:67 +#: admin/em-options.php:203 +msgid "Expand All" +msgstr "Expandera alla" + +#: admin/em-ms-options.php:138 +#: admin/em-options.php:289 +msgid "Event Manager Options" +msgstr "Event Managers inställningar" + +#: admin/em-ms-options.php:148 +#: admin/em-options.php:300 +#: admin/em-options.php:381 +#: admin/em-options.php:411 +#: admin/em-options.php:433 +#: admin/em-options.php:455 +#: admin/em-options.php:469 +#: admin/em-options.php:626 +#: admin/em-options.php:640 +#: admin/em-options.php:760 +#: admin/em-options.php:850 +#: admin/em-options.php:882 +#: admin/em-options.php:943 +#: admin/em-options.php:967 +#: admin/em-options.php:991 +#: admin/em-options.php:1009 +#: admin/em-options.php:1074 +#: admin/em-options.php:1105 +#: admin/em-options.php:1135 +#: admin/em-options.php:1157 +#: admin/em-options.php:1172 +#: admin/em-options.php:1201 +#: admin/em-options.php:1218 +#: admin/em-options.php:1236 +#: admin/em-options.php:1272 +#: admin/em-options.php:1284 +#: admin/em-options.php:1306 +#: admin/em-options.php:1340 +#: admin/em-options.php:1393 +#: admin/em-options.php:1453 +#: admin/em-options.php:1477 +#: admin/em-options.php:1523 +#: admin/em-options.php:1632 +msgid "Click to toggle" +msgstr "Klicka för att växla" + +#: admin/em-ms-options.php:148 +msgid "Multi Site Options" +msgstr "Alternativ för flera hemsidor" + +#: admin/em-ms-options.php:152 +msgid "Enable global tables mode?" +msgstr "Aktivera läge med globala tabeller?" + +#: admin/em-ms-options.php:152 +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "Att sätta denna till \"ja\" kommer att innebära att alla event sparas i huvudsidans eventtabell (EM mÃ¥ste ocksÃ¥ vara aktiverat). Detta lÃ¥ter dig dela med event pÃ¥ olika bloggar/hemsidor. Du kan t ex visa event i ditt nätverk samtidigt som du tillÃ¥ter användare att visa och hantera sina event pÃ¥ deras egna hemsidor och bloggar. Tänk pÃ¥ att om du aktiverar detta kommer det innebära att gamla event som skapats pÃ¥ sub-bloggarna inte kommer att vara tillgänglig längre, och om du sedan byter tillbaka kommer de att bete sig som event skapade under den globala läget, och därför inte ha kvar nÃ¥gon association med sub-bloggarna/sidorna. De kommer alltsÃ¥ dÃ¥ enbart visas pÃ¥ huvudsidan." + +#: admin/em-ms-options.php:163 +msgid "Display global events on main blog?" +msgstr "Visa globala event pÃ¥ huvudbloggen/sidan?" + +#: admin/em-options.php:354 +msgid "Use dropdown for locations?" +msgstr "Använd rullgardinsmenyer för platserna?" + +#: admin/em-options.php:354 +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "Välj \"ja\" för att välja plats ifrÃ¥n en rullgardinsmeny; platsvalet kommer bli smidigare, men du förlorar möjligheten att ställa in ej färdigdefinierade platser ihop med event" + +#: admin/em-options.php:310 +msgid "Select yes to enable the recurrence features feature" +msgstr "Välj \"ja\" för att aktivera funktionen för upprepade event." + +#: admin/em-options.php:311 +msgid "Enable bookings?" +msgstr "Aktivera bokningar?" + +#: admin/em-options.php:311 +msgid "Select yes to allow bookings and tickets for events." +msgstr "Välj \"ja\" för att aktivera hantering utav bokningar och biljetter för event." + +#: admin/em-options.php:314 +msgid "Select yes to enable the category features" +msgstr "Välj \"ja\" för att aktivera kategorifunktionen." + +#: admin/em-options.php:326 +#: admin/em-options.php:355 +msgid "Select yes to enable the attributes feature" +msgstr "Välj \"ja\" för att aktivera attributfunktionen." + +#: admin/em-options.php:318 +msgid "no default category" +msgstr "ingen standardkategori" + +#: admin/em-options.php:323 +msgid "Default Category" +msgstr "Standardkategori" + +#: admin/em-options.php:323 +msgid "This option allows you to select the default category when adding an event." +msgstr "Detta val tillÃ¥ter dig att ställa in standardkategorin för dina event" + +#: admin/em-options.php:339 +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "(OBS: Gäller ej om event-äganderätten är pÃ¥slagen för närvarande, kommer snart!)" + +#: admin/em-options.php:334 +msgid "no default location" +msgstr "ingen standardplats" + +#: admin/em-options.php:339 +msgid "Default Location" +msgstr "Standardplats" + +#: admin/em-options.php:339 +msgid "This option allows you to select the default location when adding an event." +msgstr "Detta alternativ tillÃ¥ter dig att välja en standardplats när du lägger upp en event." + +#: admin/em-options.php:342 +msgid "Default Location Country" +msgstr "Standardland" + +#: admin/em-options.php:342 +msgid "no default country" +msgstr "inget standardland" + +#: admin/em-options.php:342 +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "Om du väljer ett standardland sÃ¥ kommer det att vara förvalt när du skapar en ny plats." + +#: admin/em-options.php:329 +#, php-format +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Du kan ocksÃ¥ lägga till eventattribut här, en per rad i detta format #_ATT{key}. Dom kommer inte att visas pÃ¥ events sidor ifall du inte sätter in dem i en annan mall nedan, men du kanske vill spara extra information om en event för andra ändamÃ¥l. Mer information om platshÃ¥llare." + +#: admin/em-options.php:368 +msgid "Show some love?" +msgstr "Visa lite kärlek?" + +#: admin/em-options.php:368 +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "Hundratals gratistimmar har gÃ¥tt Ã¥t i skapandet av detta gratisplugin, visa ditt stöd genom att lägga till en liten länk till pluginnets hemsida pÃ¥ botten av dina eventidor." + +#: admin/em-options.php:482 +msgid "Events page" +msgstr "Eventsida" + +#: admin/em-options.php:487 +msgid "Show events page in lists?" +msgstr "Visa eventsidan i listor?" + +#: admin/em-options.php:487 +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "Markera det här alternativet om du vill att eventsidan ska visas tillsammans med andra sidor i sidlistor." + +#: admin/em-options.php:488 +msgid "Display calendar in events page?" +msgstr "Visa kalendern pÃ¥ eventsidan?" + +#: admin/em-options.php:488 +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "Detta alternativ gör det möjligt att (istället för den förvalda listan) visa kalendern pÃ¥ eventsidan. Det är rekommenderat att du inte visar bÃ¥de kalenderwidgeten och en kalendersida." + +#: admin/em-options.php:488 +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "Se kalendersektionen pÃ¥ denna sida om du vill visa event som sträcker sig över mer än en dag." + +#: admin/em-options.php:489 +msgid "Disable title rewriting?" +msgstr "Avaktivera omskrivning utav rubriker?" + +#: admin/em-options.php:490 +msgid "Event Manager titles" +msgstr "Event Managers rubriker" + +#: admin/em-options.php:490 +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "Denna inställning är endast intressant ifall du har valt \"Ja\" ovan. Du kommer att märka events sidrubriker inte blir omskrivna, och att du har en ny rubrik under standardsidans namn. Det är här du styr HTML-koden för denna rubrik. Se till att du behÃ¥ller platshÃ¥llaren # _PAGETITLE här, eftersom det är den som skrivs över utav Event Manager. För att hantera vad som skrivs i denna rubrik, se inställningarna längre ner för sidrubriker." + +#: admin/em-options.php:617 +msgid "Event List Limits" +msgstr "eventlistans längd" + +#: admin/em-options.php:617 +msgid "This will control how many events are shown on one list by default." +msgstr "Detta kontrollerar hur mÃ¥nga event som visas pÃ¥ en och samma lista som standard." + +#: admin/em-options.php:550 +msgid "Are current events past events?" +msgstr "Ska just nu pÃ¥gÃ¥ende event betraktas som avslutade event?" + +#: admin/em-options.php:550 +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "Som standard kommer utbildnignar som har ett slutdatum senare än idag att vara sökbara. Ändra detta till \"Ja\" för att betrakta event som började \"igÃ¥r\" som förfallna." + +#: admin/em-options.php:491 +msgid "Show events search?" +msgstr "Visa eventssöken?" + +#: admin/em-options.php:491 +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "Om du sätter denna till \"ja\" sÃ¥ kommer ett sökformulär att visas ovanför listan med event." + +#: admin/em-options.php:560 +#: admin/em-options.php:1022 +msgid "Default event list ordering" +msgstr "Standardsortering för eventlistan" + +#: admin/em-options.php:565 +msgid "Order by start date, start time, then event name" +msgstr "Sortera efter startdatum, starttid, eventmn" + +#: admin/em-options.php:566 +msgid "Order by name, start date, then start time" +msgstr "Sortera efter namn, slutdatum, starttid" + +#: admin/em-options.php:567 +msgid "Order by name, end date, then end time" +msgstr "Sortera efter namn, slutdatum, sluttid" + +#: admin/em-options.php:568 +msgid "Order by end date, end time, then event name" +msgstr "Sortera efter slutdatum, sluttid, eventmn" + +#: admin/em-options.php:582 +#: admin/em-options.php:1042 +msgid "All Ascending" +msgstr "Alla stigande" + +#: admin/em-options.php:585 +#: admin/em-options.php:1045 +msgid "All Descending" +msgstr "Alla fallande" + +#: admin/em-options.php:539 +#: admin/em-options.php:599 +#: admin/em-options.php:1055 +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "När Events Manager visar listor pÃ¥ event sÃ¥ är standardbeteendet att sortera efter startdatum i fallande ordning. Detta kan du ändra ovan." + +#: admin/em-options.php:603 +msgid "Event list scope" +msgstr "eventlistans omfattning" + +#: admin/em-options.php:613 +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "Visa endast evenemang med början inom en viss tid pÃ¥ eventsidan. Standard är framtida event utan sluttidsgräns." + +#: admin/em-options.php:943 +msgid "Events format" +msgstr "Eventformat" + +#: admin/em-options.php:946 +#: admin/em-options.php:1077 +#: admin/em-options.php:1108 +#, php-format +msgid "%s Page" +msgstr "%s Sida" + +#: admin/em-options.php:948 +#: admin/em-options.php:1092 +#: admin/em-options.php:1122 +#: admin/em-options.php:1145 +msgid "Default event list format header" +msgstr "Standardformat för eventlistans header" + +#: admin/em-options.php:948 +#: admin/em-options.php:1092 +#: admin/em-options.php:1122 +#: admin/em-options.php:1145 +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "OvanstÃ¥ende kommer att visas precis under din kod för standardslistan över event. Standard här är ingenting." + +#: admin/em-options.php:949 +msgid "Default event list format" +msgstr "Standard för eventlistornas format" + +#: admin/em-options.php:949 +msgid "The format of any events in a list." +msgstr "Formatet pÃ¥ eventen i listan." + +#: admin/em-options.php:950 +#: admin/em-options.php:1094 +#: admin/em-options.php:1124 +#: admin/em-options.php:1147 +msgid "Default event list format footer" +msgstr "Standard sidfotformat för eventlistor" + +#: admin/em-options.php:950 +#: admin/em-options.php:1094 +#: admin/em-options.php:1124 +#: admin/em-options.php:1147 +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "Detta innehÃ¥ll kommer att visas precis nedanför din kod för standardlistan över event. Standard är blankt." + +#: admin/em-options.php:951 +msgid "No events message" +msgstr "Inga eventsmeddelanden" + +#: admin/em-options.php:951 +msgid "The message displayed when no events are available." +msgstr "Detta meddelande visas när inga event är tillgängliga." + +#: admin/em-options.php:952 +msgid "List events by date title" +msgstr "Visa event efter datum rubrik" + +#: admin/em-options.php:952 +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
                                      " +msgstr "Den här rubriken kommer upp om man tittar på en sida för en event ett visst datum. För att ställa in datumvärden, använd PHP-time formatbokstäver med en # symbol framför, t ex. #m, #M, #j, etc.
                                      " + +#: admin/em-options.php:954 +#: admin/em-options.php:1084 +#: admin/em-options.php:1115 +#: admin/em-options.php:1138 +#, php-format +msgid "Single %s Page" +msgstr "En %s Sida" + +#: admin/em-options.php:957 +msgid "Single event page title format" +msgstr "Enskild eventsidas rubrikformat" + +#: admin/em-options.php:957 +msgid "The format of a single event page title." +msgstr "Formatet på enskilda events sidrubrik" + +#: admin/em-options.php:959 +msgid "Default single event format" +msgstr "Standard för enskilda events format" + +#: admin/em-options.php:959 +msgid "The format of a single event page." +msgstr "Formatet på en fristående eventsida." + +#: admin/em-options.php:1009 +msgid "Calendar format" +msgstr "Kalenderformat" + +#: admin/em-options.php:1013 +msgid "Small calendar title" +msgstr "Rubrik för liten kalender" + +#: admin/em-options.php:1013 +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "Formatet på rubriken, det vill säga texten som visas när muspekaren hålls ovanför en eventik kalenderdag." + +#: admin/em-options.php:1014 +msgid "Small calendar title separator" +msgstr "Rubrikseparator för liten kalender " + +#: admin/em-options.php:1014 +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "Separatorn som visas ovanför rubriken när mer än en event hålls samma dag." + +#: admin/em-options.php:1015 +msgid "Full calendar events format" +msgstr "Fullständigt eventkalenderformat" + +#: admin/em-options.php:1015 +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "Formatet på varje event när de listas i den fulla kalendern. Kom ihåg att inkludera li taggar innan och efter eventet." + +#: admin/em-options.php:1016 +msgid "Show long events on calendar pages?" +msgstr "Visa långt eventformat på kalendersidor?" + +#: admin/em-options.php:1016 +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "Om du visar en kalender på eventsidan (se eventformat-avsnittet på denna sida), har du möjlighet att visa event som spänner över flera dagar på varje dag de inträffar." + +#: admin/em-options.php:1018 +msgid "Show list on day with single event?" +msgstr "Visa lista för dag med endast en event?" + +#: admin/em-options.php:1018 +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "Om en kalenderdag enbart har en event, kommer den som standard enbart att visa en enskild event när man klickar på denna kalenderdag. Om du väljer Ja här så kommer du alltid få se en längre lista med event." + +#: admin/em-options.php:1062 +msgid "iCal Feed Settings" +msgstr "iCal Feedinställningar" + +#: admin/em-options.php:1064 +msgid "iCal Title" +msgstr "iCal Rubrik" + +# @ dbem +#: admin/em-options.php:1064 +msgid "The title that will appear in the calendar." +msgstr "Rubriken som kommer att synas i kalendern." + +# @ dbem +#: admin/em-options.php:1065 +msgid "iCal Limit" +msgstr "iCal Gräns" + +# @ dbem +#: admin/em-options.php:1065 +msgid "Limits the number of future events shown (0 = unlimited)." +msgstr "Begränsa antalet framtida event som visas (0 = obegränsat)." + +#: admin/em-options.php:1074 +msgid "Locations format" +msgstr "Platsformat" + +#: admin/em-options.php:1079 +#: admin/em-options.php:1110 +#, php-format +msgid "%s list header format" +msgstr "%s listhuvudformat" + +#: admin/em-options.php:1079 +#: admin/em-options.php:1110 +#, php-format +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "Detta innehåll kommer att visas precis ovanför din kod för %s listans format nedan. Standard är blankt." + +#: admin/em-options.php:1080 +#: admin/em-options.php:1111 +#, php-format +msgid "%s list item format" +msgstr "%s listpostformat" + +#: admin/em-options.php:1080 +#: admin/em-options.php:1111 +#, php-format +msgid "The format of a single %s in a list." +msgstr "Formatet på en enskild %s i en lista." + +#: admin/em-options.php:1081 +#: admin/em-options.php:1112 +#, php-format +msgid "%s list footer format" +msgstr "%s listans sidfotsformat" + +#: admin/em-options.php:1081 +#: admin/em-options.php:1112 +#, php-format +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "Detta innehåll kommer att visas precis nedanför din kod för %s listans format ovan. Standard är tomt." + +#: admin/em-options.php:1082 +#: admin/em-options.php:1095 +#: admin/em-options.php:1113 +#: admin/em-options.php:1125 +#: admin/em-options.php:1148 +#, php-format +msgid "No %s message" +msgstr "Inga %s meddelanden" + +#: admin/em-options.php:1082 +#: admin/em-options.php:1113 +#, php-format +msgid "The message displayed when no %s are available." +msgstr "Meddelandet som visas när inga %s är tillgängliga." + +#: admin/em-options.php:1086 +#: admin/em-options.php:1117 +#: admin/em-options.php:1140 +#, php-format +msgid "Single %s title format" +msgstr "Enskild %s rubrikformat" + +#: admin/em-options.php:1086 +msgid "The format of a single location page title." +msgstr "Formatet på en enskild plats sidrubrik." + +#: admin/em-options.php:1087 +#: admin/em-options.php:1118 +#: admin/em-options.php:1141 +#, php-format +msgid "Single %s page format" +msgstr "Enskild %s sidformat" + +#: admin/em-options.php:1087 +msgid "The format of a single location page." +msgstr "Formatet på en enkel platssida." + +#: admin/em-options.php:1088 +msgid "Default location balloon format" +msgstr "Standardformat på kartplatsballongerna" + +#: admin/em-options.php:1088 +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "Formatet på texten som syns i ballongen som beskriver en plats på kartan." + +#: admin/em-options.php:1090 +#: admin/em-options.php:1120 +#: admin/em-options.php:1143 +#, php-format +msgid "%s List Formats" +msgstr "%s Listformat" + +#: admin/em-options.php:1093 +#: admin/em-options.php:1123 +#: admin/em-options.php:1146 +#, php-format +msgid "Default %s list format" +msgstr "Standard %s listformat" + +#: admin/em-ms-options.php:163 +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-options.php:459 +#: admin/em-options.php:460 +#: admin/em-options.php:461 +#: admin/em-options.php:497 +#: admin/em-options.php:498 +#: admin/em-options.php:549 +#: admin/em-options.php:551 +#: admin/em-options.php:927 +#: admin/em-options.php:1093 +#: admin/em-options.php:1095 +#: admin/em-options.php:1123 +#: admin/em-options.php:1125 +#: admin/em-options.php:1146 +#: admin/em-options.php:1148 +#: admin/em-options.php:1534 +#: admin/em-options.php:1535 +#: admin/em-options.php:1536 +#: admin/em-options.php:1537 +#: admin/em-options.php:1538 +#: admin/em-options.php:1539 +#: events-manager.php:272 +#: events-manager.php:273 +#: events-manager.php:274 +#: events-manager.php:275 +#: events-manager.php:276 +#: events-manager.php:277 +msgid "events" +msgstr "event" + +#: admin/em-options.php:1093 +msgid "The format of the events the list inserted in the location page through the #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS element." +msgstr "Eventlistans format som sätts in på platssidan m h a #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS och #_LOCATIONNEXTEVENTS elementen." + +#: admin/em-options.php:1095 +msgid "The message to be displayed in the list generated by #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS when no events are available." +msgstr "Meddelandet som ska visas i listan skapat av #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS och #_LOCATIONALLEVENTS när inga event finns tillgängliga." + +#: admin/em-options.php:1105 +msgid "Categories format" +msgstr "Kategoriformat" + +#: admin/em-options.php:764 +#: admin/em-options.php:765 +#: admin/em-options.php:1108 +#: admin/em-options.php:1110 +#: admin/em-options.php:1111 +#: admin/em-options.php:1112 +#: admin/em-options.php:1113 +#: em-install.php:439 +#: em-install.php:441 +#: em-install.php:757 +#: em-install.php:807 +msgid "Categories" +msgstr "Kategorier" + +#: admin/em-options.php:1117 +msgid "The format of a single category page title." +msgstr "Formatet för en enkel kategorisidrubrik." + +#: admin/em-options.php:1118 +msgid "The format of a single category page." +msgstr "Formatet på en enkel kategorisida." + +#: admin/em-options.php:1123 +msgid "The format of the events the list inserted in the category page through the #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." +msgstr "Eventlistans format som sätts in på kategorisidan mha #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS och #_CATEGORYALLEVENTS elementen." + +#: admin/em-options.php:1125 +msgid "The message to be displayed in the list generated by #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS when no events are available." +msgstr "Meddelandet som ska visas i listan skapat av #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS och #_CATEGORYALLEVENTS när inga event finns tillgängliga." + +#: admin/em-options.php:1157 +msgid "RSS feed format" +msgstr "RSS-flödesformat" + +#: admin/em-options.php:1161 +msgid "RSS main title" +msgstr "RSS huvudrubrik" + +#: admin/em-options.php:1161 +msgid "The main title of your RSS events feed." +msgstr "Huvudrubriken på dina events RSS-flöde." + +#: admin/em-options.php:1162 +msgid "RSS main description" +msgstr "RSS huvudbeskrivning" + +#: admin/em-options.php:1162 +msgid "The main description of your RSS events feed." +msgstr "Huvudbeskrivningen av ditt RSS-flöde" + +#: admin/em-options.php:1163 +msgid "RSS title format" +msgstr "RSS rubrikformat" + +#: admin/em-options.php:1163 +msgid "The format of the title of each item in the events RSS feed." +msgstr "Formatet på rubriken på varje objekt i events RSS-flöde." + +#: admin/em-options.php:1164 +msgid "RSS description format" +msgstr "RSS beskrivningsformat" + +#: admin/em-options.php:1164 +msgid "The format of the description of each item in the events RSS feed." +msgstr "Formatet på beskrivningen av varje objekt i RSS-feeden för event." + +#: admin/em-options.php:1172 +msgid "Maps and geotagging" +msgstr "Kartor och geotaggning" + +#: admin/em-options.php:1177 +msgid "Enable Google Maps integration?" +msgstr "Aktivera Google Maps-integration?" + +#: admin/em-options.php:1181 +msgid "Check this option to enable Goggle Map integration." +msgstr "Välj detta alternativ för att aktivera Google Maps-integration" + +#: admin/em-options.php:1185 +msgid "Map text format" +msgstr "Karttextformat" + +#: admin/em-options.php:1185 +msgid "The text format inside the map balloons." +msgstr "Textformatet i kart-ballongerna." + +#: admin/em-options.php:1206 +msgid "Approval Required?" +msgstr "Krävs godkännande?" + +#: admin/em-options.php:1206 +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "Bokningar kommer inte bli bekräftade förrän eventadministratören godkänner dem." + +#: admin/em-options.php:1223 +msgid "Currency" +msgstr "Valuta" + +#: admin/em-options.php:1223 +msgid "Choose your currency for displaying event pricing." +msgstr "Välj din valuta för prissättning på eventen." + +#: admin/em-options.php:1288 +msgid "Single ticket mode?" +msgstr "Enkelbiljett-läge?" + +#: admin/em-options.php:1288 +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "I enkel-biljett-läget kan användare bara skapa en biljett per bokning (och kommer inte att se alternativ för att lägga till fler biljetter)." + +#: admin/em-options.php:1289 +msgid "Show ticket table in single ticket mode?" +msgstr "Visa biljettabellen i enkelbiljett-läge?" + +#: admin/em-options.php:1289 +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "Aktivera denna om du vid enkelbiljetter föredrar en biljettabell precis som vid flera biljetter." + +#: admin/em-options.php:1290 +msgid "Show unavailable tickets?" +msgstr "Visa otillgängliga biljetter?" + +#: admin/em-options.php:1290 +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "Du kan bestämma om du vill visa otillgängliga biljetter för besökare." + +#: admin/em-options.php:1207 +msgid "Reserved unconfirmed spaces?" +msgstr "Reserverade obekräftade platser?" + +#: admin/em-options.php:1207 +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "som standard blir eventplatser upptagna när det är tillräckligt många BEKRÄFTADE bokningar. För att reservera platser även till icke-bekräftade, välj ja." + +#: admin/em-options.php:1291 +msgid "Show multiple tickets if logged out?" +msgstr "Visa flera biljetter om utloggad?" + +#: admin/em-options.php:1291 +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "Om användaren är utloggad kommer denne att bli ombedd att registrera sig för att boka en plats. Användaren kan fortfarande se tillgängliga biljetter om det finns mer än en." + +#: admin/em-options.php:1209 +msgid "Allow overbooking when approving?" +msgstr "Tillåt överbokning när vi använder oss av godkännandemetoden?" + +#: admin/em-options.php:1209 +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "Välj \"ja\" här för att tillåta överskridning av antalet ursprungliga platser när du godkänner väntande bokningar. D v s om du fått en stor mängd väntande bokningar och du beslutar dig för att tillåta fler platsbokningar än tillgängliga platser." + +#: admin/em-options.php:1205 +msgid "Allow guest bookings?" +msgstr "Tillåt gästbokningar?" + +#: admin/em-options.php:1205 +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "Om aktiverad så kan gästbesökare skriva in en e-postadress och automatiskt få ett användarkonto ihop med sin bokning. De kommer också få möjligheten att logga in senare med sitt nyskapade konto." + +#: admin/em-options.php:1210 +msgid "Allow double bookings?" +msgstr "Tillåt dubbelbokningar?" + +# @ dbem +#: admin/em-options.php:1210 +msgid "If enabled, users can book an event more than once." +msgstr "Om denna är aktiverad kan användare boka in sig på ett event mer än en gång." + +#: admin/em-options.php:1276 +msgid "Display login form?" +msgstr "Visa loginformulär?" + +#: admin/em-options.php:1276 +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "Välj ifall ett loginformulär ska visas vid bokningsformuläret för att påminna användaren om att logga in innan bokningen." + +#: admin/em-options.php:1253 +msgid "Booking form feedback messages" +msgstr "Feedbackmeddelanden för bokningsformuläret" + +# @ dbem +#: admin/em-options.php:1254 +msgid "When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below." +msgstr "När en användare gör en bokning kommer ett meddelande att visas beroende på hur bokningen gick. Detta ställs in nedan." + +#: admin/em-options.php:1256 +msgid "Successful booking" +msgstr "Lyckad bokning" + +# @ dbem +#: admin/em-options.php:1256 +msgid "When a booking is registered and confirmed." +msgstr "När en bokning är registrerad och bekräftad." + +#: admin/em-options.php:1257 +msgid "Successful pending booking" +msgstr "Lyckad avvaktande bokning" + +# @ dbem +#: admin/em-options.php:1257 +msgid "When a booking is registered but pending." +msgstr "När en bokning är registrerad men är avvaktande." + +# @ dbem +#: admin/em-options.php:1258 +msgid "Not enough spaces" +msgstr "Inte tillräckligt med platser" + +#: admin/em-options.php:1258 +msgid "When a booking cannot be made due to lack of spaces." +msgstr "När en bokningen inte kunde utföras på grund av platsbrist." + +# @ dbem +#: admin/em-options.php:1259 +msgid "Errors" +msgstr "Fel" + +# @ dbem +#: admin/em-options.php:1259 +msgid "When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors." +msgstr "När en bokning inte kan utföras på grund av att användaren fyllt i formuläret på fel sätt. Nedanför detta kommer det att finnas en dynamisk lista med felmeddelanden." + +# @ dbem +#: admin/em-options.php:1261 +msgid "User must log in" +msgstr "Användaren måste logga in" + +#: admin/em-options.php:1261 +msgid "When a user must log in before making a booking." +msgstr "När en användare måste logga in för att göra en bokning" + +# @ dbem +#: admin/em-options.php:1262 +msgid "Error mailing user" +msgstr "Fel vid e-postutskick till användaren" + +# @ dbem +#: admin/em-options.php:1262 +msgid "If a booking is made and an email cannot be sent, this is added to the success message." +msgstr "Detta läggs till meddelandet till användaren om en bokning utförs och lyckas, men e-post inte kan skickas." + +# @ dbem +#: admin/em-options.php:1263 +msgid "Already booked" +msgstr "Redan inbokad" + +# @ dbem +#: admin/em-options.php:1263 +msgid "If the user made a previous booking and cannot double-book." +msgstr "Om en användare gjort en tidigare bokning och inte kan dubbelboka." + +# @ dbem +#: admin/em-options.php:1264 +msgid "No spaces booked" +msgstr "Inga platser bokade" + +# @ dbem +#: admin/em-options.php:1264 +msgid "If the user tries to make a booking without requesting any spaces." +msgstr "Om användaren försöker göra en bokning utan att reservera några platser." + +#: admin/em-options.php:1340 +msgid "Booking Email Templates" +msgstr "Mall för e-post vid bokningar" + +#: admin/em-options.php:1345 +msgid "Default contact person" +msgstr "Standard kontaktperson" + +#: admin/em-options.php:1345 +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "Välj standardkontaktpersonen. Denna användare kommer att användas när ingen kontaktperson anges för en event." + +#: admin/em-options.php:1346 +msgid "Email events admin?" +msgstr "E-posta eventadministratören?" + +#: admin/em-options.php:1346 +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "Skriv administratörens e-post här ifall du vill att varje bokningsgodkännande ska e-postas till denne (lämna blank om du inte vill skicka någon e-post)." + +#: admin/em-options.php:1347 +msgid "Email contact person?" +msgstr "Kontaktpersonens e-post?" + +#: admin/em-options.php:1347 +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "Bocka för detta alternativ om du vill att eventkontakten ska få e-post när någon bokar plats(er) på en event. Ett e-post kommer att skickas när en bokning görs (oavsett om de är bekräftade eller avvaktande)" + +#: admin/em-options.php:1348 +msgid "Disable new registration email?" +msgstr "Avaktivera nyregistrerings-e-post?" + +#: admin/em-options.php:1350 +msgid "Contact person booking confirmed" +msgstr "Kontaktperson bokning bekräftad" + +#: admin/em-options.php:1351 +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "E-post kommer att skickas till eventets kontaktperson när en bokning görs." + +#: admin/em-options.php:1353 +msgid "Contact person email subject" +msgstr "Kontaktperson e-post-ämne" + +#: admin/em-options.php:1354 +msgid "Contact person email" +msgstr "E-post till kontaktperson" + +#: admin/em-options.php:1356 +msgid "Contact person booking cancelled" +msgstr "Kontaktperson bokning avbruten" + +#: admin/em-options.php:1357 +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "Ett e-postmeddelande kommer att skickas till eventets kontaktperson ifall någon avbryter sin bokning." + +#: admin/em-options.php:1359 +msgid "Contact person cancellation subject" +msgstr "Kontaktperson avbokningsämne" + +#: admin/em-options.php:1360 +msgid "Contact person cancellation email" +msgstr "Kontaktperson avboknings-e-post" + +#: admin/em-options.php:1362 +msgid "Confirmed booking email" +msgstr "Bekräftelse på boknings e-post" + +#: admin/em-options.php:1363 +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "Detta skickas när en persons bokning är bekräftad. Detta kommer att skickas automatiskt om godkännande krävs och bokningen är godkännd. Om godkännanden är inaktiverade så kommer detta att skickas ut när en användaren skickar in sin bokning." + +#: admin/em-options.php:1365 +msgid "Booking confirmed email subject" +msgstr "E-postrubrik för konfirmerad bokning" + +#: admin/em-options.php:1366 +msgid "Booking confirmed email" +msgstr "E-post för konfirmerad bokning" + +#: admin/em-options.php:1368 +msgid "Pending booking email" +msgstr "E-post för väntande bokning" + +#: admin/em-options.php:1369 +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "Detta kommer att skickas till personen när de skickar sin bokning. Inte relevant ifall bokningar inte kräver godkännande." + +#: admin/em-options.php:1371 +msgid "Booking pending email subject" +msgstr "E-postrubrik för väntande bokning" + +#: admin/em-options.php:1372 +msgid "Booking pending email" +msgstr "E-post för väntande bokning" + +#: admin/em-options.php:1374 +msgid "Rejected booking email" +msgstr "E-post för avvisad bokning" + +#: admin/em-options.php:1375 +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "Detta kommer att skickas ut automatiskt när en bokning bli avvisad. Detta är inte relevant ifall bokningarna inte kräver godkännande." + +#: admin/em-options.php:1377 +msgid "Booking rejected email subject" +msgstr "E-postrubrik för avvisad bokning" + +#: admin/em-options.php:1378 +msgid "Booking rejected email" +msgstr "Bokning avvisad e-post" + +#: admin/em-options.php:1381 +msgid "This will be sent when a user cancels their booking." +msgstr "Detta kommer att skickas när en användare avbryter sin bokning." + +#: admin/em-options.php:1383 +msgid "Booking cancelled email subject" +msgstr "Bokning avbruten - E-post rubrik" + +#: admin/em-options.php:1384 +msgid "Booking cancelled email" +msgstr "Bokning avbruten - E-post" + +#: admin/em-options.php:1477 +msgid "Email Settings" +msgstr "E-postinställningar" + +#: admin/em-options.php:1481 +msgid "Notification sender name" +msgstr "Avsändarnamn för meddelande" + +#: admin/em-options.php:1481 +msgid "Insert the display name of the notification sender." +msgstr "Skriv in visningsnamnet för notifierings avsändare." + +#: admin/em-options.php:1482 +msgid "Notification sender address" +msgstr "Notifieringens avsändaradress" + +#: admin/em-options.php:1482 +msgid "Insert the address of the notification sender." +msgstr "Skriv in adressen för notifieringens avsändare." + +#: admin/em-options.php:1488 +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "Porten som din e-post kommer att skickas igenom. Var noga med att ingen brandvägg blockerar denna port." + +#: admin/em-options.php:1483 +msgid "Mail sending method" +msgstr "Metod för att skicka e-post" + +#: admin/em-options.php:1483 +msgid "PHP mail function" +msgstr "PHP mail-funktion" + +#: admin/em-options.php:1483 +msgid "Select the method to send email notification." +msgstr "Välj metoden för att skicka e-postnotifieringar." + +#: admin/em-options.php:1489 +msgid "Use SMTP authentication?" +msgstr "Använd SMTP åtkomstkontroll?" + +#: admin/em-options.php:1489 +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "SMTP-åtkomstkontroll behövs för det mesta. Om du exempelvis använder GMail så behöver denna inställning sättas till Ja." + +#: admin/em-options.php:1490 +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "SMTP-värd. Vanligtvis 'localhost'. Om du använder GMail, ställ in denna till 'ssl://smtp.gmail.com:465'." + +#: admin/em-options.php:1491 +msgid "SMTP username" +msgstr "SMTP-användarnamn" + +#: admin/em-options.php:1491 +msgid "Insert the username to be used to access your SMTP server." +msgstr "Skriv in användarnamnet som ska användas för att ansluta till SMTP-servern" + +#: admin/em-options.php:1492 +msgid "SMTP password" +msgstr "SMTP lösenord" + +#: admin/em-options.php:1492 +msgid "Insert the password to be used to access your SMTP server" +msgstr "Skriv in lösenordet so ska användas för att ansluta till din SMTP-server" + +#: admin/em-options.php:1457 +msgid "Maximum width (px)" +msgstr "Maxbredd (px)" + +#: admin/em-options.php:1457 +msgid "The maximum allowed width for images uploades" +msgstr "Den maximalt tillåtna bredden för uppladdade bilder (i pixlar)" + +#: admin/em-options.php:1459 +msgid "Maximum height (px)" +msgstr "Maxhöjd (px)" + +#: admin/em-options.php:1459 +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "Den maximalt tillåtna höjden för uppladdade bilder (i pixlar)" + +#: admin/em-options.php:1461 +msgid "Maximum size (bytes)" +msgstr "Maxstorlek (bytes)" + +#: admin/em-options.php:1461 +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "Den maximalt tillåtna storleken för uppladdade bilder (i bytes)" + +#: admin/em-options.php:1523 +msgid "User Capabilities" +msgstr "Användarens möjligheter" + +#: admin/em-options.php:1527 +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "Varning: Om du ändrar dessa värden på ett felaktigt sätt kan tidigare dold information bli tillgänglig för alla användare på sidan." + +#: admin/em-options.php:1573 +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "Du kan nu ställa in noggran kontroll över vad dina registrerade användare kan göra med event på sidan. Varje användarroll kan få olika typer utav rättigheter." + +#: admin/em-options.php:1566 +msgid "User can manage other users individual bookings and event booking settings." +msgstr "Användaren kan ändra i andra användares individuella bokningar och bokningsinställningar tillhörande deras eventtillfällen." + +#: admin/em-options.php:1567 +msgid "User can use and manage bookings with their events." +msgstr "Användaren kan använda och hantera bokningar tillhörande de eventtillfällen de skapat." + +#: admin/em-options.php:396 +msgid "Allow anonymous event submissions?" +msgstr "Tillåt anonymt skapande av event?" + +#: admin/em-options.php:396 +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "Ska besökare få boka platser anonymt? Isåfall kan du använda den nya [event_form] kortkoden eller em_event_form() mall-taggen med detta aktiverat." + +#: admin/em-options.php:397 +msgid "Guest Default User" +msgstr "Standard gästanvändare" + +#: admin/em-options.php:390 +#: admin/em-options.php:398 +msgid "Success Message" +msgstr "Lyckat-meddelande" + +#: admin/em-options.php:398 +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "Anonyma inlämnare kan inte se eller ändra sina event när de väl har skickats in. Du kan anpassa lyckat-meddelandet de se här." + +#: admin/em-bookings.php:60 +msgid "Event Bookings Dashboard" +msgstr "Verktygspanel för bokningar" + +#: admin/em-bookings.php:77 +msgid "Events With Bookings Enabled" +msgstr "Event med bokning aktiverad" + +#: admin/em-bookings.php:92 +#: admin/em-bookings.php:202 +#: admin/em-bookings.php:447 +#: admin/em-bookings.php:499 +msgid "You do not have the rights to manage this event." +msgstr "Du har inte rättigheter att hantera detta event." + +#: admin/em-bookings.php:104 +#, php-format +msgid "Manage %s Bookings" +msgstr "Hantera %s bokningar" + +#: admin/em-bookings.php:165 +msgid "View/Edit Event" +msgstr "Visa/Redigera event" + +#: admin/em-bookings.php:116 +msgid "Availability" +msgstr "Tillgänglighet" + +#: admin/em-bookings.php:117 +msgid "Spaces confirmed" +msgstr "Platser bekräftade" + +#: admin/em-bookings.php:154 +msgid "You do not have the rights to manage this ticket." +msgstr "Du har inte rätt att hantera den här biljetten" + +#: admin/em-bookings.php:164 +#, php-format +msgid "Ticket for %s" +msgstr "Biljett för %s" + +#: admin/em-bookings.php:166 +msgid "View Event Bookings" +msgstr "Visa eventbokningar" + +#: admin/em-bookings.php:175 +msgid "Min" +msgstr "Min" + +#: admin/em-bookings.php:176 +msgid "Max" +msgstr "Max" + +#: admin/em-bookings.php:177 +msgid "Start" +msgstr "Start" + +#: admin/em-bookings.php:178 +msgid "End" +msgstr "Slut" + +#: admin/em-bookings.php:210 +msgid "Edit Booking" +msgstr "Ändra bokning" + +#: admin/em-bookings.php:218 +msgid "Event Details" +msgstr "Eventdetaljer" + +#: admin/em-bookings.php:229 +msgid "Date/Time" +msgstr "Datum/Tid" + +#: admin/em-bookings.php:242 +#: admin/em-bookings.php:469 +msgid "Personal Details" +msgstr "Personlig fakta" + +#: admin/em-bookings.php:251 +msgid "Booking Details" +msgstr "Bokningsdetaljer" + +#: admin/em-bookings.php:361 +msgid "Modify Booking" +msgstr "Ändra Bokning" + +#: admin/em-bookings.php:403 +msgid "Booking Notes" +msgstr "Bokningsnoteringar" + +#: admin/em-bookings.php:406 +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "Du kan lägga till privata noteringar nedan för intern referens. Dessa kommer enbart synas för eventshandläggaren." + +#: admin/em-bookings.php:411 +msgid "wrote" +msgstr "skrev" + +#: admin/em-bookings.php:457 +msgid "Manage Person's Booking" +msgstr "Hantera en persons bokning" + +#: admin/em-bookings.php:459 +msgid "Edit User" +msgstr "Ändra användare" + +#: admin/em-bookings.php:481 +msgid "Past And Present Bookings" +msgstr "Tidigare och nuvarande bokningar" + +# @ dbem +#: admin/em-admin.php:124 +#, php-format +msgid "

                                      Events Manager is ready to go! It is highly recommended you read the Getting Started guide on our site, as well as checking out the Settings Page. Dismiss

                                      " +msgstr "

                                      Events Manager är redo! Det är starkt rekommenderat att du läser Getting Started-guiden på vår hemsida, samt går igenomInställningssidan. Ta bort

                                      " + +#: admin/em-admin.php:186 +#, php-format +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "Denna sida motsvarar Events Managers eventsida. Dess innehÃ¥ll kommer att skrivas över av Events Manager. Men om du inkluderar ordet CONTENTS (exakt sÃ¥, med stora bokstäver) pÃ¥ din sida och sedan omger det av annan text, sÃ¥ kommer endast CONTENTS att bli överskrivet. Om du vill ändra hur dina event ser ut, gÃ¥ till inställningssidan. " + +#: em-functions.php:75 +#, php-format +msgid "Displaying %s–%s of %s" +msgstr "Visar %s–%s av %s" + +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +#: classes/em-bookings-table.php:561 +#: classes/em-bookings-table.php:579 +#: classes/em-bookings-table.php:587 +msgid "Approve" +msgstr "Godkänn" + +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-rejected.php:55 +msgid "Decline" +msgstr "AvslÃ¥" + +#: admin/bookings/em-cancelled.php:84 +#: admin/bookings/em-confirmed.php:85 +#: admin/bookings/em-pending.php:99 +#: admin/bookings/em-rejected.php:84 +msgid "Booker" +msgstr "Bokare" + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +msgid "Restore" +msgstr "Ã…terställ" + +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-rejected.php:112 +#: classes/em-bookings-table.php:564 +#: classes/em-bookings-table.php:573 +#: classes/em-bookings-table.php:581 +#: classes/em-bookings-table.php:589 +msgid "Edit/View" +msgstr "Redigera/Visa" + +#: admin/bookings/em-cancelled.php:125 +msgid "No cancelled bookings." +msgstr "Inga avbrutna bokningar." + +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +msgid "Unapprove" +msgstr "Ã…terkalla godkännande" + +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +#: classes/em-bookings-table.php:562 +#: classes/em-bookings-table.php:571 +msgid "Reject" +msgstr "Avvisa" + +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +msgid "No confirmed bookings." +msgstr "Inga bekräftade bokningar." + +#: admin/bookings/em-rejected.php:125 +msgid "No rejected bookings." +msgstr "Inga avvisade bokningar." + +#: admin/bookings/em-pending.php:147 +msgid "No pending bookings." +msgstr "Inga avvaktande bokningar" + +#: admin/bookings/em-events.php:32 +msgid "All Events" +msgstr "Alla event" + +#: admin/bookings/em-events.php:35 +msgid "Future Events" +msgstr "Framtida event" + +#: classes/em-bookings-table.php:83 +msgid "Total" +msgstr "Total" + +#: admin/bookings/em-events.php:69 +#: classes/em-bookings-table.php:388 +msgid "Filter" +msgstr "Filter" + +#: admin/em-options.php:672 +#: admin/em-options.php:722 +#: admin/em-options.php:812 +#: classes/em-location-posts-admin.php:56 +msgid "Town" +msgstr "Stad" + +#: admin/em-admin.php:41 +#: admin/em-help.php:10 +msgid "Getting Help for Events Manager" +msgstr "FÃ¥ hjälp med Event Manager" + +#: admin/em-help.php:25 +msgid "Placeholders for customizing event pages" +msgstr "PlatshÃ¥llare för att anpassa eventidor" + +#: admin/em-help.php:26 +#, php-format +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "PÃ¥ inställningssidan kan du hitta diverse textboxar där du kan förändra hur utbildingsinformationen ser ut, sÃ¥som events och platslistor. Använd platshÃ¥llarna nedan för att välja vilken information som ska visas." + +#: admin/em-admin.php:90 +#: classes/em-people.php:28 +#: events-manager.php:537 +msgid "Events Manager" +msgstr "Events Manager" + +#: em-functions.php:238 +msgid "Mon" +msgstr "mÃ¥n" + +#: em-functions.php:238 +msgid "Tue" +msgstr "tis" + +#: em-functions.php:238 +msgid "Wed" +msgstr "ons" + +#: em-functions.php:238 +msgid "Thu" +msgstr "tors" + +#: em-functions.php:238 +msgid "Fri" +msgstr "fre" + +#: em-functions.php:238 +msgid "Sat" +msgstr "lör" + +#: em-functions.php:238 +msgid "Sun" +msgstr "sön" + +#: buddypress/bp-em-groups.php:133 +#: classes/em-event-post-admin.php:357 +#: classes/em-event-post-admin.php:363 +msgid "Group Ownership" +msgstr "Gruppägandeskap" + +#: classes/em-event-post-admin.php:190 +msgid "Bookings Stats" +msgstr "Bokningsstatistik" + +#: templates/forms/event/booking-stats.php:12 +msgid "Available Spaces" +msgstr "Tillgängliga platser" + +#: templates/forms/event/booking-stats.php:13 +msgid "Confirmed Spaces" +msgstr "Bekräftade platser" + +#: templates/forms/event/booking-stats.php:14 +msgid "Pending Spaces" +msgstr "Avvaktande platser" + +#: templates/forms/event/booking-stats.php:34 +msgid "No responses yet!" +msgstr "Ännu inga svar!" + +#: classes/em-event-post-admin.php:244 +#, php-format +msgid "No categories available, create one here first" +msgstr "Inga tillgängliga kategrier, skapa en här först" + +#: templates/forms/event-editor.php:168 +msgid "No image uploaded for this event yet" +msgstr "Ingen bild är uppladdad för detta event än" + +#: classes/em-event-post-admin.php:194 +#: classes/em-event-post-admin.php:360 +#: classes/em-location-post-admin.php:116 +msgid "Attributes" +msgstr "Attribut" + +#: templates/forms/event/attributes.php:43 +#, php-format +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "Du har inga egna attribut definierade i nÃ¥gon av dina mallar i Event Manager. Vänligen lägg in dem pÃ¥ inställningssidan " + +#: templates/forms/event/attributes.php:50 +#: templates/forms/location/attributes.php:50 +msgid "Depreciated Attributes" +msgstr "Avskrivna (depreciated) Attribut" + +#: em-install.php:301 +msgid "

                                      -------------------------------
                                      Powered by Events Manager - http://wp-events-plugin.com" +msgstr "

                                      -------------------------------
                                      Event Manager" + +#: em-install.php:400 +#: em-install.php:408 +#: em-install.php:441 +#, php-format +msgid "No %s" +msgstr "Inga %s" + +#: em-debug.php:18 +#: em-install.php:427 +msgid "
                                    • No events in this location
                                    • " +msgstr "
                                    • Inga event pÃ¥ denna plats
                                    • " + +#: em-install.php:442 +msgid "
                                    • No events in this category
                                    • " +msgstr "
                                    • Inga event i denna kategori
                                    • " + +#: em-install.php:537 +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "Bokning genomförd, inväntar bekräftelse (du kommer att fÃ¥ ett e-postmeddelande när din plats är bekräftad och verifierad)." + +#: em-install.php:538 +msgid "Booking successful." +msgstr "Du har nu bokat en plats! Se mailen för bokningsbekräftelse." + +#: em-install.php:540 +msgid "You must log in or register to make a booking." +msgstr "Du mÃ¥ste logga in eller registrera dig för att kunna utföra en bokning." + +#: em-install.php:541 +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "Men det uppstod problem när bekräftelsemailen skulle skickas till dig och eventets kontaktperson. Om du har möjlighet bör du kontakta dem direkt och rapportera detta fel." + +#: em-install.php:542 +msgid "Booking could not be created" +msgstr "Bokningen kunde inte skapas" + +#: em-install.php:543 +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "Denna e-postadress finns redan i vÃ¥rt system. Vänligen logga in för att registrera dig och fortsätta med din bokning." + +#: em-install.php:544 +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "Ett nytt användarkonto har skapats Ã¥t dig. Se vidare information i din e-post." + +#: em-install.php:545 +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "Ett fel uppstod vid skapandet av användarkontot, vänligen kontakta webbredaktören eller webbsidans administratör." + +#: em-install.php:546 +msgid "You already have booked a seat at this event." +msgstr "Du har redan bokat en plats pÃ¥ detta event." + +#: em-install.php:547 +msgid "You must request at least one space to book an event." +msgstr "Du mÃ¥ste välja Ã¥tminstone en plats för att boka en event." + +#: admin/em-options.php:1242 +#: em-install.php:554 +#: em-install.php:562 +msgid "Booking Cancelled" +msgstr "Bokning Avbruten" + +#: em-install.php:556 +msgid "Booking Pending" +msgstr "Bokning avvaktande" + +#: em-install.php:558 +msgid "Booking Rejected" +msgstr "Bokning avvisad" + +#: em-install.php:560 +msgid "Booking Confirmed" +msgstr "Bokning bekräftad" + +#: em-debug.php:44 +#, php-format +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the
                                      settings page." +msgstr "Du är i Events Managers debugläge. För att stänga av debugläget, gå till inställningssidan." + +#: em-actions.php:31 +msgid "No ticket id provided" +msgstr "Inget biljettid angivet" + +#: em-actions.php:181 +#, php-format +msgid "%s successfully deleted" +msgstr "%s borttagen" + +#: em-install.php:536 +#, php-format +msgid "Booking %s" +msgstr "Bokning %s" + +#: events-manager.php:272 +#: events-manager.php:280 +#: events-manager.php:286 +#, php-format +msgid "You do not have permission to publish %s" +msgstr "Du har inte rättigheter att publicera %s" + +#: events-manager.php:276 +#: events-manager.php:284 +#: events-manager.php:290 +#: events-manager.php:296 +#, php-format +msgid "You do not have permission to edit %s" +msgstr "Du har inte rättigheter att ändra %s" + +#: events-manager.php:273 +#: events-manager.php:281 +#: events-manager.php:287 +#, php-format +msgid "You do not have permission to delete others %s" +msgstr "Du har inte rättigheter att ta bort andras %s" + +#: events-manager.php:275 +#: events-manager.php:283 +#: events-manager.php:289 +#, php-format +msgid "You do not have permission to edit others %s" +msgstr "Du har inte rättigheter att ändra andras %s" + +#: events-manager.php:269 +#, php-format +msgid "You do not have permission to manage others %s" +msgstr "Du har inte rättigheter att hantera andras %s" + +#: admin/em-options.php:890 +#: admin/em-options.php:929 +#: events-manager.php:269 +#: events-manager.php:270 +msgid "bookings" +msgstr "bokningar" + +#: events-manager.php:274 +#: events-manager.php:282 +#: events-manager.php:288 +#: events-manager.php:295 +#, php-format +msgid "You do not have permission to delete %s" +msgstr "Du har inte rättigheter att ta bort %s" + +#: events-manager.php:270 +#, php-format +msgid "You do not have permission to manage %s" +msgstr "Du har inte rättigheter att hantera %s" + +#: admin/em-options.php:443 +#: admin/em-options.php:760 +#: em-posts.php:87 +#: em-posts.php:90 +msgid "Event Categories" +msgstr "Eventkategorier" + +#: admin/em-admin.php:40 +msgid "Events Manager Settings" +msgstr "Event Managers inställningar" + +#: admin/em-admin.php:40 +#: admin/em-admin.php:206 +#: admin/em-admin.php:214 +msgid "Settings" +msgstr "Inställningar" + +#: admin/em-admin.php:41 +msgid "Help" +msgstr "Hjälp" + +#: admin/em-bookings.php:333 +msgid "Tax" +msgstr "Moms" + +#: templates/forms/event/bookings.php:25 +msgid "You can have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "Du har en eller flera biljetter, där vissa biljetter blir tillgängliga under vissa förutsättningar, t ex tidiga bokningar, grupprabatter, max antal bokningar per biljett eller dylikt" + +# @ dbem +#: templates/forms/event/bookings.php:25 +msgid "Basic HTML is allowed in ticket labels and descriptions." +msgstr "Grundläggande HTML är tillåtet i biljettnamn och beskrivningar." + +# @ dbem +#: admin/em-options.php:1293 +msgid "Ticket Price (Descending)" +msgstr "Biljettpris (Fallande)" + +# @ dbem +#: admin/em-options.php:1294 +msgid "Ticket Price (Ascending)" +msgstr "Biljettpris (Stigande)" + +#: admin/em-options.php:1295 +msgid "Ticket Name (Ascending)" +msgstr "Biljettnamn (Stigande)" + +#: admin/em-options.php:1296 +msgid "Ticket Name (Descending)" +msgstr "Biljettnamn (Fallande)" + +#: admin/em-options.php:1208 +msgid "Can users cancel their booking?" +msgstr "Kan användarna avbryta sina bokningar?" + +# @ dbem +#: admin/em-options.php:1208 +msgid "If enabled, users can cancel their bookings themselves from their bookings page." +msgstr "Om denna är aktiverad kan användare avboka sig själv ifrån sin bokningssida." + +# @ dbem +#: admin/em-options.php:1227 +msgid "Tax Rate" +msgstr "Momssats" + +# @ dbem +#: admin/em-options.php:1227 +msgid "Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price)." +msgstr "Lägg till en momssats till dina biljettpriser (skriver du 25 kommer 25% moms att adderas till biljettpriset)." + +# @ dbem +#: admin/em-options.php:1228 +msgid "Add tax to ticket price?" +msgstr "Lägg på moms på biljettpriset?" + +# @ dbem +#: admin/em-options.php:1228 +msgid "When displaying ticket prices and booking totals, include the tax automatically?" +msgstr "Ska moms läggas på automatiskt när biljettpriser och bokningsdetaljer visas?" + +#: admin/em-options.php:1298 +msgid "Order Tickets By" +msgstr "Sortera Biljetter Efter" + +# @ dbem +#: admin/em-options.php:1298 +msgid "Choose which order your tickets appear." +msgstr "Välj i vilken ordning dina biljetter ska visas." + +#: admin/em-options.php:1306 +msgid "No-User Booking Mode" +msgstr "Användarlöst Bokningsläge" + +# @ dbem +#: admin/em-options.php:1310 +msgid "By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them." +msgstr "Som standard när en bokning görs av en användare så är bokningen knutet till ett konto. Om användaren inte är registrerad eller inloggad och gästbokningar är tillåtna så kommer ett konto att skapas åt dem." + +# @ dbem +#: admin/em-options.php:1312 +msgid "Warning : Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information." +msgstr "Varning : Olika funktioner som är knutna till användare med konto kommer inte att vara tillgängliga, exempelvis funktionen för användaren att se sina bokningar. Från och med att du aktiverat detta och valt en användare kommer ytterligare förändringar av detta värde medföra att dessa icke-användarknutnabokningar inte visar rätt information." + +#: admin/em-options.php:1315 +msgid "Enable No-User Booking Mode?" +msgstr "Aktivera användarlöst bokningsläge?" + +#: admin/em-options.php:1315 +msgid "This disables user registrations for bookings." +msgstr "Detta avaktiverar användarregistrering för bokning." + +#: admin/em-options.php:1321 +msgid "Assign bookings to" +msgstr "Tilldela alla bokningar till" + +#: admin/em-options.php:1393 +msgid "Event Email Templates" +msgstr "E-postmallar för Event" + +#: admin/em-options.php:1403 +#: em-install.php:351 +msgid "Event Approved" +msgstr "Eventet Godkänt" + +# @ dbem +#: admin/em-options.php:1404 +msgid "An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the publish_events capability." +msgstr "Ett e-postmeddelande kommer att skickas till eventägaren när deras event är godkänt. Användare vars event kräver godkännande har inte publish_events capabilityn." + +#: admin/em-options.php:1400 +#: admin/em-options.php:1406 +msgid "Event approved subject" +msgstr "Event godkänd - ämne" + +#: admin/em-options.php:1401 +#: admin/em-options.php:1407 +msgid "Event approved email" +msgstr "Event godkänd - e-post" + +#: classes/em-booking.php:360 +#: classes/em-booking.php:368 +msgid "Guest User" +msgstr "Gästanvändare" + +# @ dbem +#: classes/em-booking.php:364 +msgid "Not Supplied" +msgstr "Inte medföljande" + +# @ dbem +#: classes/em-ticket.php:157 +msgid "Please enter a valid ticket price e.g. 10.50 (no currency signs)" +msgstr "Ange ett giltigt biljettpris t.ex. 10.50 (inget valutatecken)" + +# @ dbem +#: em-install.php:531 +msgid "This event is fully booked." +msgstr "Detta event är fullbokat." + +#: admin/em-admin.php:91 +msgid "Update Blogs" +msgstr "Uppdatera Bloggar" + +#: admin/em-admin.php:139 +#, php-format +msgid "Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "Uh Oh! Av någon anledning kunde inte WordPress skapa en eventsida åt dig (eller så tog du precis bort den). Men oroa dig inte, allt du behöver göra är att skapa en tom sida, kalla den för vad du vill, och välja den som din eventsida på inställningssidan. Ledsen för detta extra steg! Om du vet vad du gör, så kanske du gjort såhär med mening, om så är fallet så kan du ignorera detta meddelande" + +# @ dbem +#: admin/em-admin.php:148 +msgid "There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update." +msgstr "Det finns en uppdaterad version av Events Manager Pro som krävs för denna version av Events Manager. Vänligen gå till pluginsidan och ladda ner den senaste uppdateringen." + +# @ dbem +#: admin/em-admin.php:159 +#, php-format +msgid "MultiSite options have moved here. Dismiss message" +msgstr "MultiSite-inställningar har flyttat hit. Stäng meddelande" + +# @ dbem +#: admin/em-admin.php:171 +#, php-format +msgid "Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" +msgstr "Även om de fortfarande syns vid användning av platshållare så behöver du för att dessa ska komma in i mediebiblioteket och formulären. Avfärda meddelande" + +# @ dbem +#: admin/em-admin.php:220 +#: admin/em-options.php:1644 +msgid "Uninstall" +msgstr "Avinstallera" + +#: admin/em-ms-options.php:6 +msgid "Update Network" +msgstr "Uppdatera Nätverk" + +# @ default +#: admin/em-ms-options.php:24 +msgid "To update your network blogs with the latest Events Manager automatically, click the update button below." +msgstr "Tryck på uppdatera-knappen nedan för att uppdatera dina nätverksbloggar med den senaste versionen av Events Manager automatiskt." + +#: admin/em-ms-options.php:27 +msgid "Update" +msgstr "Uppdatera" + +#: admin/em-ms-options.php:136 +#: admin/em-options.php:280 +#: admin/em-options.php:1201 +msgid "General" +msgstr "Allmänna" + +# @ default +#: admin/em-ms-options.php:157 +#, php-format +msgid "%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network." +msgstr "%s tillhörande andra subsiter kommer att ha en extra slug framför sig så att din huvudsida kan skilja på sina egna %s och de som tillhör andra sidor i ditt nätverk." + +#: admin/em-ms-options.php:158 +#, php-format +msgid "When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site." +msgstr "När du visar globala %s på huvudsidan har du möjlighet att låta användare se informationen för %s på huvudsidan, eller ledas till sub-sidan." + +#: admin/em-ms-options.php:159 +#, php-format +msgid "Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "Visar %s från alla webbsidor i nätverket som standard. Du kan fortfarande begränsa %s genom att att använda kortkoder och mall-taggar tillsammans med blog attributet. Detta kräver att globala tabeller slås på." + +# @ default +#: admin/em-ms-options.php:160 +#, php-format +msgid "You must have assigned a %s page in your main blog settings for this to work." +msgstr "Du måste ha kopplat en %s sida i dina huvudbloginställningar för att detta ska fungera." + +#: admin/em-ms-options.php:162 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:1201 +#: admin/em-options.php:1218 +#: admin/em-options.php:1272 +#: admin/em-options.php:1284 +#, php-format +msgid "%s Options" +msgstr "%s Alternativ" + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:173 +#, php-format +msgid "Link sub-site %s directly to sub-site?" +msgstr "Länka sub-side %s direkt till subsidor?" + +# @ dbem +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, php-format +msgid "Global %s slug" +msgstr "Global %s slug" + +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +msgid "Example:" +msgstr "Exempel:" + +#: admin/em-ms-options.php:167 +msgid "Locations on main blog?" +msgstr "Platser på huvudbloggen?" + +# @ dbem +#: admin/em-ms-options.php:167 +msgid "If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog." +msgstr "Om du vill att alla dina platser ska höra till din huvudblogg så kommer användare i subsiter fortfarande kunna skapa platser, men platserna kommer att skapas och lagras i huvudbloggen." + +#: admin/em-ms-options.php:172 +#, php-format +msgid "Display global %s on main blog?" +msgstr "Visa globala %s på huvudbloggen/sidan?" + +# @ dbem +#: admin/em-options.php:112 +msgid "Settings have been reset back to default. Your events, locations and categories have not been modified." +msgstr "Inställningarna har återställt till sina standardvärden. Dina event, platser och kategorier har inte blivit påverkade." + +#: admin/em-options.php:145 +#: admin/em-options.php:149 +msgid "Reset Events Manager" +msgstr "Återställ Events Manager till grundinställningar" + +#: admin/em-options.php:146 +msgid "Are you sure you want to reset Events Manager?" +msgstr "Är du säker på att du vill återställa grundinställningarna i Events Manager?" + +# @ dbem +#: admin/em-options.php:147 +msgid "All your settings, including email templates and template formats for Events Manager will be deleted." +msgstr "Alla dina inställningar, inklusive e-postmallar och formatmallar för Events Manager kommer att tas bort." + +#: admin/em-options.php:161 +msgid "Uninstall Events Manager" +msgstr "Avinstallera Events Manager" + +#: admin/em-options.php:162 +msgid "Are you sure you want to uninstall Events Manager?" +msgstr "Är du säker på att du vill avinstallera Events Manager?" + +# @ dbem +#: admin/em-options.php:163 +msgid "All your settings and events will be permanently deleted. This cannot be undone." +msgstr "Alla dina inställningar och event kommer att tas bort permanent. Detta kan inte ångras." + +# @ dbem +#: admin/em-options.php:164 +#, php-format +msgid "If you just want to deactivate the plugin, go to your plugins page." +msgstr "Om du bara vill avaktivera pluginet, gå till pluginsidan." + +# @ dbem +#: admin/em-options.php:166 +msgid "Uninstall and Deactivate" +msgstr "Avinstallera och Avaktivera" + +#: admin/em-options.php:281 +#: admin/em-options.php:459 +#: admin/em-options.php:630 +msgid "Pages" +msgstr "Sidor" + +# @ dbem +#: admin/em-options.php:282 +msgid "Formats/Layouts" +msgstr "Format och Layout" + +#: admin/em-options.php:284 +msgid "Booking Options" +msgstr "Bokningsalternativ" + +#: admin/em-options.php:286 +msgid "Emails" +msgstr "E-post" + +#: admin/em-options.php:300 +msgid "General Options" +msgstr "Allmäna Alternativ" + +# @ dbem +#: admin/em-options.php:303 +msgid "Disable thumbnails?" +msgstr "Avaktivera tumnagelbilder?" + +# @ dbem +#: admin/em-options.php:303 +msgid "Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here)." +msgstr "Välj ja för att avaktivera Events Manager från att använda tumnagelbilder (vissa teman kan ändå ha detta aktiverat, vilket vi inte kan påverka tyvärr)" + +#: admin/em-options.php:306 +#: admin/em-options.php:347 +#: admin/em-options.php:364 +#, php-format +msgid "%s Settings" +msgstr "%s Inställningar" + +#: admin/em-options.php:310 +msgid "Enable recurrence?" +msgstr "Aktivera upprepningar?" + +#: admin/em-options.php:312 +msgid "Enable tags?" +msgstr "Aktivera taggar?" + +#: admin/em-options.php:312 +msgid "Select yes to enable the tag features" +msgstr "Välj ja för att aktivera tagfunktionerna" + +#: admin/em-options.php:314 +msgid "Enable categories?" +msgstr "Aktivera kategorier?" + +# @ dbem +#: admin/em-options.php:323 +msgid "If an event does not have a category assigned when editing, this one will be assigned automatically." +msgstr "Om ett event inte har en kategori knuten till sig så kommer denna att användas automatiskt när man editerar eventet." + +# @ dbem +#: admin/em-options.php:327 +#: admin/em-options.php:356 +msgid "Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area." +msgstr "Anpassade fält är nästan detsamma som attribut. Bortsett från att du inte kan begränsa specifika värden så kan användarna lägga till vilket nyckel/värde par som helst. Endast tillgängligt i WordPress admingränssnitt." + +#: admin/em-options.php:351 +msgid "Enable locations?" +msgstr "Aktivera platser?" + +# @ dbem +#: admin/em-options.php:351 +msgid "If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats." +msgstr "Tänk på att ta bort platssidan, kortkoder och relaterade platshållare från dina format om du avaktiverar platser." + +#: admin/em-options.php:353 +msgid "Require locations for events?" +msgstr "Kräv plats för event?" + +# @ dbem +#: admin/em-options.php:353 +msgid "Setting this to no will allow you to submit events without locations. You can use the {no_location}...{/no_location} or {has_location}..{/has_location} conditional placeholder to selectively display location information." +msgstr "Om du sätter denna till nej kan du sparar event utan plats. Du kan använda de villkorade platshållarna {no_location}...{/no_location} eller {has_location}..{/has_location} för att manuellt visa platsinformation när du behöver det." + +#: admin/em-options.php:364 +#: admin/em-options.php:882 +#: admin/em-options.php:1561 +msgid "Other" +msgstr "Andra" + +# @ dbem +#: admin/em-options.php:428 +msgid "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter." +msgstr "Många teman visar extra meta-information på inläggssidor (ex: 'postat av', 'post-datum' etc) vilket kanske inte alltid önskas. Vanligtvis innehåller sidmallar mindre av detta." + +# @ dbem +#: admin/em-options.php:429 +#, php-format +msgid "Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named single-%s.php as shown on the wordpress codex, and leave this set to Posts." +msgstr "Tänk på att vissa teman inte kommer att fungera med detta alternativ. Om detta händer (eller om du vill göra dina egna justeringar) kan du skapa en fil du döper till single-%s.php såsom nämns i wordpress codex, och sätta denna inställning till Inlägg." + +# @ default +#: admin/em-options.php:430 +#, php-format +msgid "By using formats, you can control how your %s are displayed from within the Events Manager Formats tab above without having to edit your theme files." +msgstr "Genom att använda format kan du kontrollera hur dina %s visas inifrån Event Managers Format flik ovan utan att behöva ändra dina temafiler." + +# @ dbem +#: admin/em-options.php:433 +msgid "Permalink Slugs" +msgstr "Slugs för permalänkar" + +# @ dbem +#: admin/em-options.php:435 +msgid "You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings." +msgstr "Här kan du ändra permalänkstrukturen för dina event, platser, kategorier och taggar. Tänk på att sätta upp redirects if du ändrar permalänkstrukturen för att upprätthålla SEO rankning o dyl." + +# @ dbem +#: admin/em-options.php:438 +#: admin/em-options.php:440 +#: admin/em-options.php:443 +#: admin/em-options.php:446 +#, php-format +msgid "e.g. %s - you can use / seperators too" +msgstr "t.ex. %s - du kan också använda / som separatorer." + +#: admin/em-options.php:446 +#: admin/em-options.php:850 +#: em-posts.php:50 +#: em-posts.php:53 +msgid "Event Tags" +msgstr "Eventtaggar" + +#: admin/em-options.php:455 +#: admin/em-options.php:626 +#: admin/em-options.php:882 +#, php-format +msgid "%s Pages" +msgstr "%s Sidor" + +#: admin/em-options.php:459 +#: admin/em-options.php:630 +#, php-format +msgid "Display %s as" +msgstr "Visa %s som" + +# @ default +#: admin/em-options.php:459 +#: admin/em-options.php:630 +msgid "Posts" +msgstr "Poster" + +# @ dbem +#: admin/em-options.php:460 +#: admin/em-options.php:549 +#: admin/em-options.php:631 +#: admin/em-options.php:706 +#: admin/em-options.php:778 +#: admin/em-options.php:854 +msgid "Override with Formats?" +msgstr "Skriv över med Format?" + +# @ dbem +#: admin/em-options.php:469 +#: admin/em-options.php:640 +#, php-format +msgid "%s List/Archives" +msgstr "%s Listor/Arkiv" + +#: admin/em-options.php:477 +#: admin/em-options.php:644 +#: admin/em-options.php:764 +#, php-format +msgid "[No %s Page]" +msgstr "[Ingen %s Sida]" + +# @ dbem +#: admin/em-options.php:482 +msgid "This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags." +msgstr "Denna inställning tillåter dig att välja vilken sida du vill använda som eventsida. Om du inte väljer en eventsida så kan du visa eventlistor genom att aktivera eventarkiv eller använda de för syftet avsedda kortkommandona och/eller malltaggarna." + +#: admin/em-options.php:489 +msgid "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "Vissa WordPress-teman följer inte best practise när de genererar navigationsmenyer, så den automatiska rubrikomskrivningen kan orsaka problem. Om dina menyer inte fungerar korrekt på eventidorna, testa att sätta denna till 'Ja' och fyll i ett lämpligt HTML-rubrik-format nedan." + +#: admin/em-options.php:503 +#: admin/em-options.php:661 +msgid "Enable Archives?" +msgstr "Aktivera Arkiv?" + +# @ dbem +#: admin/em-options.php:503 +#: admin/em-options.php:661 +msgid "Allow WordPress post-style archives." +msgstr "Tillåt WordPress post-liknande arkiv." + +#: admin/em-options.php:508 +msgid "Default event archive ordering" +msgstr "Standardsortering för eventarkiv" + +#: admin/em-options.php:513 +msgid "Order by start date, start time" +msgstr "Sortera efter startdatum, starttid" + +#: admin/em-options.php:514 +msgid "Order by name" +msgstr "Sortera efter namn" + +#: admin/em-options.php:545 +#: admin/em-options.php:702 +#: admin/em-options.php:774 +msgid "General settings" +msgstr "Allmäna inställningar" + +# @ dbem +#: admin/em-options.php:551 +#: admin/em-options.php:707 +msgid "Include in WordPress Searches?" +msgstr "Inkludera i WordPress-sökningar?" + +# @ dbem +#: admin/em-options.php:551 +#: admin/em-options.php:707 +#, php-format +msgid "Allow %s to appear in the built-in search results." +msgstr "Tillåt %s att visas i den inbyggda sökens resultat." + +#: admin/em-options.php:555 +#: admin/em-options.php:711 +#: admin/em-options.php:801 +#, php-format +msgid "Default %s list options" +msgstr "Standard %s list alternativ" + +# @ dbem +#: admin/em-options.php:556 +#: admin/em-options.php:712 +#: admin/em-options.php:802 +msgid "These can be overriden when using shortcode or template tags." +msgstr "Dessa kan åsidodsättas genom att använda kortkoder eller malltaggar." + +#: admin/em-options.php:645 +#: admin/em-options.php:765 +#: admin/em-options.php:890 +#: admin/em-options.php:927 +#: admin/em-options.php:928 +#: admin/em-options.php:929 +#, php-format +msgid "%s page" +msgstr "%s sida" + +# @ dbem +#: admin/em-options.php:645 +#, php-format +msgid "This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags." +msgstr "Detta alternativ tillåter dig att välja vilken sida du vill använda som %s sidan. Om du inte väljer någon %s sida kan du visa listor genom att aktivera arkiv eller använda de för syftet avsedda kortkoder och/eller malltaggar." + +#: admin/em-options.php:649 +#: admin/em-options.php:769 +#, php-format +msgid "Show %s page in lists?" +msgstr "Visa %s sida i listor?" + +#: admin/em-options.php:649 +#: admin/em-options.php:769 +#, php-format +msgid "Check this option if you want the %s page to appear together with other pages in pages lists." +msgstr "Markera det här alternativet om du vill att %s sidan ska visas tillsammans med andra sidor i sidlistor." + +#: admin/em-options.php:666 +#: admin/em-options.php:781 +#: admin/em-options.php:857 +msgid "Default archive ordering" +msgstr "Standardsortering för arkivet" + +#: admin/em-options.php:671 +#: admin/em-options.php:672 +#: admin/em-options.php:673 +#: admin/em-options.php:721 +#: admin/em-options.php:722 +#: admin/em-options.php:723 +#: admin/em-options.php:811 +#: admin/em-options.php:812 +#: admin/em-options.php:813 +#: admin/em-options.php:898 +#: admin/em-options.php:899 +#: admin/em-options.php:900 +#, php-format +msgid "Order by %s" +msgstr "Sortera efter %s" + +#: admin/em-options.php:716 +#: admin/em-options.php:806 +#: admin/em-options.php:893 +msgid "Default list ordering" +msgstr "Standardsortering för listan" + +#: admin/em-options.php:750 +#: admin/em-options.php:840 +msgid "List Limits" +msgstr "Listans längd" + +#: admin/em-options.php:750 +#: admin/em-options.php:840 +#, php-format +msgid "This will control how many %s are shown on one list by default." +msgstr "Detta kontrollerar hur många %s som visas på en och samma lista som standard." + +#: admin/em-options.php:765 +#, php-format +msgid "This option allows you to select which page to use as the %s page." +msgstr "Detta alternativ tillåter dig att välja vilken sida du vill använda som %s sida." + +# @ default +#: admin/em-options.php:778 +msgid "Setting this to yes will make categories display as a page rather than an archive." +msgstr "Sätt detta till Ja för att få kategorier att visas som en sida istället för ett arkiv." + +#: admin/em-options.php:854 +msgid "tags" +msgstr "taggar" + +# @ default +#: admin/em-options.php:884 +msgid "These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated." +msgstr "Dessa sidor låter dig tillhandahålla ett eventhanterings-gränssnitt utanför admindelen av Wordpress på vilken sida du vill på din blogg/hemsida. Tänk på att om du kör BuddyPress kommer dess inställningar att stå över det du gör här." + +#: admin/em-options.php:888 +#: classes/em-event-posts-admin.php:135 +#: classes/em-event-posts-admin.php:269 +msgid "None" +msgstr "Ingen" + +#: admin/em-options.php:927 +msgid "Edit events" +msgstr "Redigera events" + +#: admin/em-options.php:928 +msgid "Edit locations" +msgstr "Ändra platser" + +#: admin/em-options.php:929 +msgid "Manage bookings" +msgstr "Hantera bokningar" + +#: admin/em-options.php:890 +msgid "My bookings" +msgstr "Mina bokningar" + +# @ dbem +#: admin/em-options.php:890 +msgid "Users can view their bookings for other events on this page." +msgstr "På denna sida kan användare se sina bokningar för andra event." + +# @ dbem +#: admin/em-options.php:967 +msgid "Search Form Options" +msgstr "Alternativ för sökformulär" + +#: admin/em-options.php:971 +msgid "Show text search?" +msgstr "Visa textsök?" + +# @ dbem +#: admin/em-options.php:972 +msgid "Text search label" +msgstr "Etikett för textsök" + +# @ dbem +#: admin/em-options.php:972 +msgid "Appears within the input box." +msgstr "Visas i rutan." + +# @ dbem +#: admin/em-options.php:973 +msgid "Show date range?" +msgstr "Visa datumintervall?" + +#: admin/em-options.php:974 +msgid "Show categories?" +msgstr "Visa kategorier?" + +#: admin/em-options.php:975 +msgid "Categories label" +msgstr "Kategorietikett" + +# @ dbem +#: admin/em-options.php:975 +#: admin/em-options.php:977 +#: admin/em-options.php:979 +#: admin/em-options.php:981 +#: admin/em-options.php:983 +msgid "Appears as the first default search option." +msgstr "Visas som första standard-sökalternativ." + +#: admin/em-options.php:976 +msgid "Show countries?" +msgstr "Visa länder?" + +#: admin/em-options.php:977 +msgid "All countries text" +msgstr "Alla länder-text" + +#: admin/em-options.php:978 +msgid "Show regions?" +msgstr "Visa regioner?" + +#: admin/em-options.php:979 +msgid "All regions text" +msgstr "Alla regioner-text" + +# @ dbem +#: admin/em-options.php:980 +msgid "Show states?" +msgstr "Visa stater?" + +#: admin/em-options.php:981 +msgid "All states text" +msgstr "Alla stater-text" + +# @ dbem +#: admin/em-options.php:982 +msgid "Show towns/cities?" +msgstr "Visa stad/ort?" + +# @ dbem +#: admin/em-options.php:983 +msgid "All towns/cities text" +msgstr "Text för alla städer/orter" + +#: admin/em-options.php:991 +msgid "Date/Time formats" +msgstr "Datum och Tidsformat" + +# @ dbem +#: admin/em-options.php:993 +#, php-format +msgid "Date and Time formats follow the WordPress time formatting conventions" +msgstr "Datum- och Tidformat följer WordPress tidsformatskonventioner" + +#: admin/em-options.php:996 +msgid "Date Format" +msgstr "Datumformat" + +#: admin/em-options.php:996 +#: admin/em-options.php:998 +#, php-format +msgid "For use with the %s placeholder" +msgstr "För användning med %s platshållaren" + +# @ dbem +#: admin/em-options.php:997 +msgid "Date Seperator" +msgstr "Datumseparator" + +# @ dbem +#: admin/em-options.php:997 +#: admin/em-options.php:999 +#, php-format +msgid "For when start/end %s are present, this will seperate the two (include spaces here if necessary)." +msgstr "För när start/slut %s finns så kommer denna att separera de två (inkludera mellanrum här ifall det behövs)." + +#: admin/em-options.php:997 +msgid "dates" +msgstr "datum" + +#: admin/em-options.php:998 +msgid "Time Format" +msgstr "Tidsformat" + +# @ dbem +#: admin/em-options.php:999 +msgid "Time Seperator" +msgstr "Tidseparator" + +# @ dbem +#: admin/em-options.php:999 +msgid "times" +msgstr "gånger" + +#: admin/em-options.php:1135 +msgid "Tags format" +msgstr "Tagformat" + +#: admin/em-options.php:1138 +msgid "Tag" +msgstr "Tag" + +# @ dbem +#: admin/em-options.php:1140 +#: admin/em-options.php:1141 +msgid "tag" +msgstr "tag" + +#: admin/em-options.php:1140 +msgid "The format of a single tag page title." +msgstr "Formatet på en tagsidas sidrubrik." + +#: admin/em-options.php:1141 +msgid "The format of a single tag page." +msgstr "Formatet på en fristående tagsida." + +#: admin/em-options.php:1146 +msgid "The format of the events the list inserted in the tag page through the #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS element." +msgstr "Eventlistans format som sätts in på kategorisidan mha #_TAGNEXTEVENTS, #_TAGNEXTEVENTS och #_TAGALLEVENTS elementen." + +#: admin/em-options.php:1148 +msgid "The message to be displayed in the list generated by #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS when no events are available." +msgstr "Meddelandet som ska visas i listan skapat av #_TAGNEXTEVENTS, #_TAGNEXTEVENTS och #_TAGALLEVENTS när inga event finns tillgängliga." + +#: admin/em-options.php:1218 +msgid "Pricing" +msgstr "Prissättning" + +#: admin/em-options.php:1272 +msgid "Booking Form" +msgstr "Bokningsformulär" + +#: admin/em-options.php:1284 +msgid "Ticket" +msgstr "Biljett" + +# @ dbem +#: admin/em-options.php:1311 +msgid "The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user." +msgstr "Alternativet nedan gör det möjligt att avaktivera användarkonton och knyta alla bokningar till en överliggande användare. Du kommer fortfarande se all inskriven personlig bokningsinformation för respektive bokning. Skillnaden är att användarinfo är sparat ihop med bokningen och inte som en wordpress-användare." + +# @ dbem +#: admin/em-options.php:1321 +msgid "Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself." +msgstr "Välj en överliggande användare att tilldelar bokningar till. Folk som gör bokningar kommer inte märka detta eller ha tillgång till dessa användardetaljer. Detta ska vara en användare med \"prenumerant\"-rättigheter som du inte använder för inloggning på sidan." + +#: admin/em-options.php:1348 +msgid "Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event." +msgstr "Markera detta alternativ om du vill förhindra att WordPress registreringsmail skickas ut till anonyma besökare som bokar in sig på ett event." + +#: admin/em-options.php:1396 +msgid "Event Submitted" +msgstr "Event skickad" + +#: admin/em-options.php:1397 +msgid "An email will be sent to the an administrator of your choice when an event is submitted and pending approval." +msgstr "E-post kommer att skickas till en administratör du väljer när ett event är inskickad och behöver godkännande." + +# @ dbem +#: admin/em-options.php:1399 +msgid "Administrator Email" +msgstr "E-post till Administratör" + +# @ dbem +#: admin/em-options.php:1399 +msgid "If left blank, no email will be sent. Seperate emails with commas for more than one email." +msgstr "Om du lämnar detta blankt så kommer inget mail att skickas. Om du vill ha mer än ett mail, separera flera e-postadresser med kommatecken." + +#: admin/em-options.php:381 +msgid "Event Submission Forms" +msgstr "Formulär för eventskapande" + +#: admin/em-options.php:385 +#, php-format +msgid "You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below." +msgstr "Du kan tillåta användare att fritt lägga in event på din blogg genom att använda %s kortkoden och aktivera anonyma bidrag nedan." + +# @ dbem +#: admin/em-options.php:388 +msgid "Use Visual Editor?" +msgstr "Använd visuell editor?" + +# @ dbem +#: admin/em-options.php:388 +msgid "Users can now use the WordPress editor for easy HTML entry in the submission form." +msgstr "Användare kan nu använda WordPress-editorn för att enkelt infoga HTML i formuläret." + +# @ dbem +#: admin/em-options.php:389 +msgid "Show form again?" +msgstr "Visa formulär igen?" + +# @ dbem +#: admin/em-options.php:389 +msgid "When a user submits their event, you can display a new event form again." +msgstr "När en användare skickar in sitt event så kan de visas ett nytt formulär igen." + +# @ dbem +#: admin/em-options.php:390 +msgid "Customize the message your user sees when they submitted their event." +msgstr "Ställ in det meddelande din användare ser när de skickat in sitt event." + +#: admin/em-options.php:393 +msgid "Anonymous event submissions" +msgstr "Anonymt skapand event" + +#: admin/em-options.php:397 +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting." +msgstr "Event kräver att en användare äger dom. För att tillåta event att kunna skickas in anonymt så behöver du lägga till en standardanvändare som är ägare till dessa. Vi rekommenderar att du skapar en \"Anonym\" prenumerant med ett mycket bra lösenord och använder den. Gäster kommer att ha samma rättigheter som denna användare när de skickar in." + +#: admin/em-options.php:1453 +msgid "Image Sizes" +msgstr "Bildstorlekar" + +# @ dbem +#: admin/em-options.php:1484 +msgid "Send HTML Emails?" +msgstr "Skicka E-post i HTML-format?" + +# @ dbem +#: admin/em-options.php:1484 +msgid "If set to yes, your emails will be sent in HTML format, otherwise plaintext." +msgstr "Om du väljer ja så kommer din e-post att skickas i HTML-format, annars skickas den i vanlig text." + +#: admin/em-options.php:1532 +#: admin/em-options.php:1542 +#: admin/em-options.php:1550 +#: admin/em-options.php:1561 +#, php-format +msgid "%s Capabilities" +msgstr "%s möjligheter" + +#: admin/em-options.php:1534 +#: admin/em-options.php:1544 +#: admin/em-options.php:1552 +#, php-format +msgid "Users can publish %s and skip any admin approval" +msgstr "Användaren kan publisera %s utan att dessa behöver godkännas utav en administratör." + +#: admin/em-options.php:1535 +#: admin/em-options.php:1545 +#: admin/em-options.php:1553 +#, php-format +msgid "User can delete other users %s" +msgstr "Användaren kan ta bort andra användares %s" + +#: admin/em-options.php:1536 +#: admin/em-options.php:1546 +#: admin/em-options.php:1554 +#, php-format +msgid "User can edit other users %s" +msgstr "Användaren kan ändra i andra användares %s" + +#: admin/em-options.php:1537 +#: admin/em-options.php:1547 +#: admin/em-options.php:1555 +#, php-format +msgid "User can delete their own %s" +msgstr "Användaren kan ta bort sina egna upplagda %s" + +#: admin/em-options.php:1538 +#: admin/em-options.php:1548 +#: admin/em-options.php:1556 +#, php-format +msgid "User can create and edit %s" +msgstr "Användaren kan skapa och ändra %s" + +# @ dbem +#: admin/em-options.php:1539 +#: admin/em-options.php:1557 +#, php-format +msgid "User can view private %s" +msgstr "Användaren kan se privata %s" + +#: admin/em-options.php:1542 +#: em-posts.php:187 +msgid "Recurring Event" +msgstr "Upprepande Event" + +#: admin/em-options.php:1544 +#: admin/em-options.php:1545 +#: admin/em-options.php:1546 +#: admin/em-options.php:1547 +#: admin/em-options.php:1548 +#: events-manager.php:280 +#: events-manager.php:281 +#: events-manager.php:282 +#: events-manager.php:283 +#: events-manager.php:284 +msgid "recurring events" +msgstr "upprepande event" + +#: admin/em-options.php:1558 +msgid "User can use other user locations for their events." +msgstr "Användaren kan använda andra användares upplagda platser i sina event." + +#: admin/em-options.php:1563 +#, php-format +msgid "User can delete %s categories and tags." +msgstr "Användaren kan ta bort %s kategorier och taggar." + +#: admin/em-options.php:1564 +#, php-format +msgid "User can edit %s categories and tags." +msgstr "Användaren kan ändra %s kategorier och taggar." + +#: admin/em-options.php:1568 +msgid "User can upload images along with their events and locations." +msgstr "Användaren kan ladda upp bilder ihop med sina event och platser." + +# @ dbem +#: admin/em-options.php:1632 +#: admin/em-options.php:1642 +msgid "Uninstall/Reset" +msgstr "Avinstallera/Återställ grundinställningar" + +# @ dbem +#: admin/em-options.php:1643 +msgid "Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data." +msgstr "Använd knappen nedan för att antingen avinstalla Events Manager fullständigt ifrån ditt system eller för att återställa Events Manager till originalinställningar och behålla din eventdata." + +#: admin/em-options.php:1645 +msgid "Reset" +msgstr "Återställ" + +#: buddypress/bp-em-activity.php:58 +#, php-format +msgid "%s added the event %s to %s." +msgstr "%s la till eventet %s till %s." + +#: buddypress/bp-em-core.php:53 +#, php-format +msgid "Search %s..." +msgstr "Sök %s..." + +#: buddypress/screens/my-events.php:47 +#: em-events.php:150 +msgid "Reschedule Events" +msgstr "Boka om Event" + +# @ dbem +#: classes/em-categories-taxonomy.php:55 +#, php-format +msgid "Choose a color for your category. You can access this using the %s placeholder." +msgstr "Välj en färg för din kategori. Du kan komma åt denna genom att använda %s platshållaren." + +# @ dbem +#: classes/em-categories-taxonomy.php:66 +msgid "Choose/Upload Image" +msgstr "Välj/Ladda upp bild" + +# @ dbem +#: classes/em-categories-taxonomy.php:67 +#, php-format +msgid "Choose an image for your category, which can be displayed using the %s placeholder." +msgstr "Välj en bild för din kategori. Bilden kan visas genom att använda %s platshållaren." + +# @ dbem +#: classes/em-event-post-admin.php:42 +#, php-format +msgid "If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, detach it." +msgstr "Om du uppdaterar denna eventdata och sparar så kan det ändå bli överskrivet om du ändrar mallen för det återkommande eventet. För att bryta ut just detta event ur mallen till ett fristående event, tryck här: koppla loss." + +# @ dbem +#: classes/em-event-post-admin.php:43 +#, php-format +msgid "To manage the whole set, edit the recurring event template." +msgstr "För att hantera ett helt set av event, ändra på mallen för de återkommande eventen." + +# @ dbem +#: classes/em-event-post-admin.php:83 +msgid "Your event details are incorrect and recurrences cannot be created, please correct these errors first:" +msgstr "Eventdetaljerna är felaktiga och upprepningen kan inte skapas, korrigera följande fel:" + +# @ dbem +#: classes/em-event-post-admin.php:85 +#: classes/em-location-post-admin.php:59 +#, php-format +msgid "Your %s details are incorrect and cannot be published, please correct these errors first:" +msgstr "Dina %s uppgifter är felaktiga och kan inte publiseras, vänligen korrigera dessa fel först:" + +#: classes/em-event-post-admin.php:197 +#: classes/em-event-post-admin.php:366 +msgid "Site Categories" +msgstr "Sidkategorier" + +#: classes/em-event-post-admin.php:350 +msgid "Recurrences" +msgstr "Upprepningar" + +# @ default +#: classes/em-event-post.php:94 +#: classes/em-event-post.php:97 +#: classes/em-event-post.php:102 +#: classes/em-event-post.php:113 +#: classes/em-event-post.php:116 +#: classes/em-event-post.php:121 +#, php-format +msgid "View all posts in %s" +msgstr "Visa alla poster i %s" + +#: classes/em-event-posts-admin.php:74 +msgid "View all categories" +msgstr "Visa alla kategorier" + +#: classes/em-event-posts-admin.php:111 +#: classes/em-event-posts-admin.php:248 +msgid "Date and Time" +msgstr "Datum och Tid" + +#: classes/em-event-posts-admin.php:112 +#: classes/em-event-posts-admin.php:249 +msgid "Owner" +msgstr "Ägare" + +#: classes/em-event-posts-admin.php:168 +#: templates/buddypress/group-events.php:133 +#: templates/buddypress/my-group-events.php:127 +#: templates/tables/events.php:134 +msgid "Edit Recurring Events" +msgstr "Ändra återkommande Event" + +#: classes/em-event-posts-admin.php:168 +msgid "Detach" +msgstr "Koppla bort" + +#: classes/em-event-posts-admin.php:181 +#, php-format +msgid "Duplicate %s" +msgstr "Kopiera %s" + +#: classes/em-event-posts-admin.php:181 +msgid "Duplicate" +msgstr "Kopiera" + +#: classes/em-event-posts-admin.php:213 +#, php-format +msgid "Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the events page." +msgstr "Modifieringar av detta event kommer innebära att alla upprepningar av utbilningen tas bort och återkapas, samt att tidigare gjorda bokningar tas bort! Du kan istället ändra varje återkommande event och av-associera dem med detta event genom att besöka eventsidan." + +#: classes/em-event.php:440 +msgid "Event name" +msgstr "Eventnamn" + +#: classes/em-event.php:479 +msgid "Since the event is repeated, you must specify an event end date greater than the start date." +msgstr "Eftersom eventet är återkommande så måste du specificera ett slutdatum som inträffar efter startdatumet." + +# @ dbem +# @ default +#: classes/em-event.php:560 +#: classes/em-event.php:563 +msgid "There were some errors saving your location." +msgstr "Fel uppstod när platsen skulle sparas." + +# @ default +#: classes/em-event.php:560 +#, php-format +msgid "It will not be displayed on the website listings, to correct this you must edit your location directly." +msgstr "Den kommer inte att visas i webbsidan listning, för att korrigera detta måste du ändra din plats direkt." + +# @ dbem +#: classes/em-event.php:606 +#: classes/em-location.php:360 +#, php-format +msgid "Something went wrong saving your %s to the index table. Please inform a site administrator about this." +msgstr "Någonting gick fel när %s skulle sparas till indextabellen. Vänligen informera sidans administratör om detta." + +#: classes/em-event.php:611 +#: classes/em-event.php:626 +#: classes/em-location.php:365 +#: classes/em-location.php:372 +#, php-format +msgid "Successfully saved %s" +msgstr "Sparat %s" + +# @ dbem +#: classes/em-event.php:619 +#: classes/em-location.php:370 +#, php-format +msgid "Something went wrong updating your %s to the index table. Please inform a site administrator about this." +msgstr "Någonting gick fel när %s skulle uppdateras i indextabellen. Vänligen informera sidans administratör om detta." + +#: admin/em-bookings.php:106 +#: classes/em-event.php:1233 +#: classes/em-location.php:661 +#, php-format +msgid "Edit %s" +msgstr "Ändra %s" + +#: classes/em-event.php:1549 +msgid "Event detached." +msgstr "Event bortkopplat." + +# @ dbem +#: classes/em-event.php:1549 +msgid "Undo" +msgstr "Ångra" + +#: classes/em-event.php:1553 +msgid "Event could not be detached." +msgstr "Eventet kunde inte kopplas bort." + +# @ dbem +#: classes/em-event.php:1567 +msgid "Event re-attached to recurrence." +msgstr "Event återkopplat till den upprepande kedjan event." + +#: classes/em-event.php:1570 +msgid "Event could not be attached." +msgstr "Eventet kunde inte bifogas." + +#: classes/em-location.php:242 +#: widgets/em-locations.php:22 +msgid "Location name" +msgstr "Platsnamn" + +# @ dbem +#: em-install.php:309 +msgid "A new event has been submitted by #_CONTACTNAME.
                                      Name : #_EVENTNAME
                                      Date : #_EVENTDATES
                                      Time : #_EVENTTIMES
                                      Please visit #_EDITEVENTURL to review this event for approval." +msgstr "Ett nytt event har skickats in av #_CONTACTNAME.
                                      Namn : #_EVENTNAME
                                      Datum : #_EVENTDATES
                                      Tid : #_EVENTTIMES
                                      Besök #_EDITEVENTURL för att godkänna detta event." + +#: em-install.php:339 +msgid "All Cities/Towns" +msgstr "Alla Städer/Orter" + +# @ dbem +#: em-install.php:343 +#: em-install.php:346 +msgid "You have successfully submitted your event, which will be published pending approval." +msgstr "Ditt event är inskickat och det kommer att sparas i väntan på godkännande" + +# @ dbem +#: em-install.php:349 +msgid "Submitted Event Awaiting Approval" +msgstr "Inskickat Event som väntar på godkännande" + +#: em-install.php:399 +msgid "All Day" +msgstr "Hela dagen" + +#: em-install.php:449 +msgid "
                                    • No events in this tag
                                    • " +msgstr "
                                    • Inga event är knutna till denna tag
                                    • " + +#: em-install.php:552 +msgid "New Booking" +msgstr "Ny Bokning" + +#: em-posts.php:51 +#: em-posts.php:54 +msgid "Event Tag" +msgstr "Eventtag" + +#: em-posts.php:55 +msgid "Search Event Tags" +msgstr "Sök Eventtaggar" + +#: em-posts.php:56 +msgid "Popular Event Tags" +msgstr "Populära Eventtaggar" + +#: em-posts.php:57 +msgid "All Event Tags" +msgstr "Alla Eventtaggar" + +#: em-posts.php:58 +msgid "Parent Event Tags" +msgstr "Ärvda Eventtaggar" + +#: em-posts.php:59 +msgid "Parent Event Tag:" +msgstr "Ärvd Eventtag:" + +#: em-posts.php:60 +msgid "Edit Event Tag" +msgstr "Ändra Eventtag" + +#: em-posts.php:61 +msgid "Update Event Tag" +msgstr "Uppdatera Eventtag" + +#: em-posts.php:62 +msgid "Add New Event Tag" +msgstr "Lägg till Eventtag" + +#: em-posts.php:63 +msgid "New Event Tag Name" +msgstr "Nytt Eventtagsnamn" + +# @ dbem +#: em-posts.php:64 +msgid "Seperate event tags with commas" +msgstr "Separera eventtaggar med kommatecken" + +#: em-posts.php:65 +#: em-posts.php:102 +msgid "Add or remove events" +msgstr "Lägg till eller ta bort event" + +#: em-posts.php:66 +msgid "Choose from most used event tags" +msgstr "Välj frÃ¥n mest använda eventtaggar" + +#: em-posts.php:88 +#: em-posts.php:91 +msgid "Event Category" +msgstr "Eventkategori" + +#: em-posts.php:92 +msgid "Search Event Categories" +msgstr "Sök Eventkategorier" + +#: em-posts.php:93 +msgid "Popular Event Categories" +msgstr "Populära Eventkategorier" + +#: em-posts.php:94 +msgid "All Event Categories" +msgstr "Alla Eventkategorier" + +#: em-posts.php:95 +msgid "Parent Event Categories" +msgstr "Ärvda Eventkategorier" + +#: em-posts.php:96 +msgid "Parent Event Category:" +msgstr "Ärvd Eventkategori:" + +#: em-posts.php:97 +msgid "Edit Event Category" +msgstr "Ändra Eventkategori" + +#: em-posts.php:98 +msgid "Update Event Category" +msgstr "Uppdatera Eventkategori" + +#: em-posts.php:99 +msgid "Add New Event Category" +msgstr "Lägg till ny Eventkategori" + +#: em-posts.php:100 +msgid "New Event Category Name" +msgstr "Nytt Eventkategorinamn" + +# @ dbem +#: em-posts.php:101 +msgid "Seperate event categories with commas" +msgstr "Separera eventkategorier med kommatecken" + +# @ dbem +#: em-posts.php:103 +msgid "Choose from most used event categories" +msgstr "Välj frÃ¥n mest använda eventkategorier" + +#: em-posts.php:138 +msgid "Display events on your blog." +msgstr "Visa event pÃ¥ bloggen." + +#: em-posts.php:144 +msgid "Add New Event" +msgstr "Lägg till nytt Event" + +#: em-posts.php:147 +msgid "New Event" +msgstr "Nytt Event" + +#: em-posts.php:148 +#: em-posts.php:194 +#: em-posts.php:241 +#: templates/tables/locations.php:62 +msgid "View" +msgstr "Visa" + +#: em-posts.php:149 +msgid "View Event" +msgstr "Visa Event" + +#: em-posts.php:151 +msgid "No Events Found" +msgstr "Hittade inga Event" + +# @ dbem +#: em-posts.php:152 +msgid "No Events Found in Trash" +msgstr "Inga events funna i Papperskorgen" + +#: em-posts.php:153 +msgid "Parent Event" +msgstr "Ärvda Event" + +#: em-posts.php:183 +#: em-posts.php:186 +#: em-posts.php:188 +msgid "Recurring Events" +msgstr "Upprepande Event" + +#: em-posts.php:184 +msgid "Recurring Events Template" +msgstr "Mall för upprepande Event" + +#: em-posts.php:189 +#: em-posts.php:195 +msgid "Add Recurring Event" +msgstr "Lägg till upprepande Event" + +# @ dbem +#: em-posts.php:190 +msgid "Add New Recurring Event" +msgstr "Lägg till nytt Ã¥terkommande Event" + +#: em-posts.php:192 +msgid "Edit Recurring Event" +msgstr "Ändra upprepande Event" + +#: em-posts.php:193 +msgid "New Recurring Event" +msgstr "Nytt upprepande Event" + +#: em-posts.php:196 +msgid "Search Recurring Events" +msgstr "Sök upprepande Event" + +# @ dbem +#: em-posts.php:197 +msgid "No Recurring Events Found" +msgstr "Hittade inga Ã¥terkommande Event" + +# @ dbem +#: em-posts.php:198 +msgid "No Recurring Events Found in Trash" +msgstr "Hittade inga Ã¥terkommande Event i Papperskorgen" + +# @ dbem +#: em-posts.php:199 +msgid "Parent Recurring Event" +msgstr "Överliggande Ã¥terkommande event" + +#: em-posts.php:231 +msgid "Display locations on your blog." +msgstr "Visa platser pÃ¥ din blog." + +#: em-posts.php:237 +msgid "Add New Location" +msgstr "Lägg till ny Plats" + +#: em-posts.php:240 +msgid "New Location" +msgstr "Ny Plats" + +#: em-posts.php:242 +msgid "View Location" +msgstr "Visa plats" + +#: em-posts.php:243 +msgid "Search Locations" +msgstr "Sök platser" + +#: em-posts.php:244 +msgid "No Locations Found" +msgstr "Hittade inga platser" + +#: em-posts.php:245 +msgid "No Locations Found in Trash" +msgstr "Hittade inga platser i Papperskorgen" + +#: em-posts.php:246 +msgid "Parent Location" +msgstr "Ärvd plats" + +#: em-template-tags.php:297 +msgid "You must log in to view and manage your events." +msgstr "Du mÃ¥ste logga in för att kunna visa och hantera dina event." + +#: em-template-tags.php:388 +msgid "You must log in to view and manage your locations." +msgstr "Du mÃ¥ste logga in för att visa och hantera dina platser." + +#: em-template-tags.php:406 +msgid "You must log in to view and manage your bookings." +msgstr "Du mÃ¥ste logga in för att visa och hantera dina bokningar." + +#: events-manager.php:231 +msgid "Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events." +msgstr "Är du säker pÃ¥ att du vill frikoppla detta Ã¥terkommande event? Om du gör detta kommer detta event att bli helt oberoende det Ã¥terkommande set av event det tidigare tillhört." + +# @ dbem +#: events-manager.php:232 +msgid "This cannot be undone." +msgstr "Detta kan inte Ã¥ngras." + +# @ dbem +#: events-manager.php:232 +msgid "All events will be moved to trash." +msgstr "Alla event kommer att flyttas till papperskorgen." + +#: events-manager.php:233 +msgid "Are you sure you want to delete all recurrences of this event?" +msgstr "Är du säker pÃ¥ att du vill ta bort alla Ã¥terkommande instanser av detta event?" + +#: events-manager.php:277 +#: events-manager.php:291 +#, php-format +msgid "You cannot read private %s" +msgstr "Du kan inte läsa privata %s" + +#: events-manager.php:292 +#, php-format +msgid "You cannot view others %s" +msgstr "Du kan inte se andras %s" + +#: events-manager.php:298 +msgid "You do not have permission to upload images" +msgstr "Du har inte rättigheter att ladda upp bilder" + +#: templates/forms/event/attributes.php:51 +msgid "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Om du ser nÃ¥gra attribut här under sÃ¥ betyder det att dom inte används i Event Manager mer. För att lägga till dom behöver du lägga till det egna attributet igen till ett formateringsalternativ pÃ¥ inställningssidan. För att ta bort nÃ¥got av dessa utfasade attribut, ge det ett tomt värde och spara." + +# @ dbem +#: templates/forms/event/group.php:26 +msgid "No groups defined yet." +msgstr "Inga grupper definierade ännu." + +# @ default +#: templates/forms/event/location.php:9 +msgid "This event does not have a physical location." +msgstr "Detta event saknar fysisk plats." + +#: templates/forms/event/location.php:31 +msgid "No Location" +msgstr "Ingen plats" + +#: templates/forms/event/recurring-when.php:48 +#: templates/forms/event/when-with-recurring.php:13 +msgid "Recurrences span from " +msgstr "Upprepningen sträcker sig ifrÃ¥n" + +#: templates/forms/event/recurring-when.php:56 +#: templates/forms/event/when-with-recurring.php:23 +msgid "Events start from" +msgstr "Event börjar frÃ¥n" + +#: templates/forms/event/recurring-when.php:60 +#: templates/forms/event/when-with-recurring.php:28 +#: templates/forms/event/when.php:20 +msgid "All day" +msgstr "Hela dagen" + +#: templates/forms/event/recurring-when.php:63 +#: templates/forms/event/when-with-recurring.php:69 +msgid "Each event lasts" +msgstr "Varje event varar" + +#: templates/forms/event/recurring-when.php:65 +#: templates/forms/event/when-with-recurring.php:71 +msgid "day(s)" +msgstr "dag(ar)" + +#: templates/forms/event/when-with-recurring.php:11 +msgid "This is a recurring event." +msgstr "Detta är ett Ã¥terkommande event." + +#: templates/forms/event/when-with-recurring.php:14 +#: templates/forms/event/when.php:8 +msgid "From " +msgstr "FrÃ¥n" + +#: templates/forms/event/when-with-recurring.php:24 +#: templates/forms/event/when.php:16 +msgid "Event starts at" +msgstr "Event börjar vid" + +#: templates/forms/event-editor.php:163 +msgid "Event Image" +msgstr "Eventbild" + +#: templates/forms/location-editor.php:52 +msgid "Details about the location." +msgstr "Detaljerad info om platsen." + +#: templates/forms/location-editor.php:85 +msgid "Location Image" +msgstr "Platsbild" + +#: templates/tables/locations.php:76 +msgid "No locations have been inserted yet!" +msgstr "Inga platser har lagts in ännu!" + +#: widgets/em-locations.php:21 +msgid "Event start date/time, location name" +msgstr "Startdatum/tid och plats för eventet" + +# @ em-pro +#: admin/em-admin.php:179 +msgid "Dev Mode active: Just a friendly reminder that you are updating to development versions. Only admins see this message, and it will go away when you disable this here in your settings." +msgstr "" + +#: admin/em-bookings.php:67 +#, fuzzy +msgid "Recent Bookings" +msgstr "Avvisade bokningar" + +#: admin/em-bookings.php:105 +#, fuzzy, php-format +msgid "View %s" +msgstr "Visa" + +#: admin/em-bookings.php:108 +#, fuzzy +msgid "Export CSV" +msgstr "exportera csv (kommaseparerat format)" + +#: admin/em-bookings.php:119 +#, fuzzy +msgid "Available spaces" +msgstr "Tillgängliga platser" + +#: admin/em-bookings.php:264 +#, fuzzy +msgid "Change" +msgstr "Avbryt" + +# @ dbem +#: admin/em-bookings.php:265 +#, fuzzy +msgid "Resend Email" +msgstr "Skicka E-post i HTML-format?" + +# @ dbem +#: admin/em-bookings.php:279 +#, fuzzy +msgid "Send Email" +msgstr "Skicka E-post i HTML-format?" + +#: admin/em-bookings.php:280 +#: admin/em-bookings.php:366 +#, fuzzy +msgid "Submit Changes" +msgstr "Spara ändringar" + +#: admin/em-bookings.php:327 +#, fuzzy +msgid "Total Price" +msgstr "Pris" + +#: admin/em-bookings.php:328 +#, fuzzy, php-format +msgid "%d Spaces" +msgstr "Platser" + +# @ dbem +#: admin/em-bookings.php:338 +#, fuzzy +msgid "Total Price (inc. tax)" +msgstr "Totalt (inkl. moms)" + +# @ dbem +#: admin/em-bookings.php:364 +#, fuzzy +msgid "Notes: Ticket availability not taken into account (i.e. you can overbook). Emails are not resent automatically." +msgstr "OBS: Tar inte hänsyn till biljettens tillgänglighet (du kan alltsÃ¥ t.ex. överboka). E-postbekräftelse skickas inte om automatiskt." + +# @ dbem +#: admin/em-options.php:122 +#: admin/em-options.php:132 +msgid "If there are any new updates, you should now see them in your Plugins or Updates admin pages." +msgstr "" + +# @ dbem +#: admin/em-options.php:132 +msgid "Checking for dev versions." +msgstr "" + +#: admin/em-options.php:326 +#: admin/em-options.php:355 +#, fuzzy, php-format +msgid "Enable %s attributes?" +msgstr "Aktivera eventattribut? " + +# @ dbem +#: admin/em-options.php:327 +#: admin/em-options.php:356 +#, fuzzy, php-format +msgid "Enable %s custom fields?" +msgstr "Aktivera egna fält för event?" + +#: admin/em-options.php:329 +#: admin/em-options.php:358 +#, fuzzy, php-format +msgid "%s Attributes" +msgstr "Attribut" + +#: admin/em-options.php:358 +#, fuzzy, php-format +msgid "You can also add location attributes here, one per line in this format #_LATT{key}. They will not appear on location pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "Du kan ocksÃ¥ lägga till eventattribut här, en per rad i detta format #_ATT{key}. Dom kommer inte att visas pÃ¥ events sidor ifall du inte sätter in dem i en annan mall nedan, men du kanske vill spara extra information om en event för andra ändamÃ¥l. Mer information om platshÃ¥llare." + +#: admin/em-options.php:461 +#: admin/em-options.php:632 +#, fuzzy +msgid "Enable Comments?" +msgstr "Aktivera taggar?" + +# @ dbem +#: admin/em-options.php:461 +#: admin/em-options.php:632 +#, php-format +msgid "If you would like to disable comments entirely, disable this, otherwise you can disable comments on each single %s. Note that %s with comments enabled will still be until you resave them." +msgstr "" + +# @ dbem +#: admin/em-options.php:496 +#: admin/em-options.php:654 +#, fuzzy, php-format +msgid "WordPress %s Archives" +msgstr "TillÃ¥t WordPress post-liknande arkiv." + +# @ default +#: admin/em-options.php:497 +#: admin/em-options.php:655 +#, php-format +msgid "%s custom post types can have archives, just like normal WordPress posts. If enabled, should you visit your base slug url %s and you will see an post-formatted archive of previous %s" +msgstr "" + +# @ default +#: admin/em-options.php:498 +#, php-format +msgid "Note that assigning a %s page above will override this archive if the URLs collide (which is the default settings, and is recommended). You can have both at the same time, but you must ensure that your page and %s slugs are different." +msgstr "" + +# @ default +#: admin/em-options.php:656 +#, php-format +msgid "Note that assigning a %s page above will override this archive if the URLs collide (which is the default settings, and is recommended for maximum plugin compatability). You can have both at the same time, but you must ensure that your page and %s slugs are different." +msgstr "" + +#: admin/em-options.php:899 +#, fuzzy +msgid "Start Date" +msgstr "Stat" + +#: admin/em-options.php:900 +#: classes/em-bookings-table.php:82 +#, fuzzy +msgid "Booking Date" +msgstr "Bokningsdata" + +# @ dbem +#: admin/em-options.php:926 +msgid "Front-end management pages" +msgstr "" + +# @ dbem +#: admin/em-options.php:927 +#: admin/em-options.php:928 +#, fuzzy, php-format +msgid "Users can view, add and edit their %s on this page." +msgstr "PÃ¥ denna sida kan användare se sina bokningar för andra event." + +# @ dbem +#: admin/em-options.php:929 +#, fuzzy, php-format +msgid "Users can manage their %s on this page." +msgstr "PÃ¥ denna sida kan användare se sina bokningar för andra event." + +#: admin/em-options.php:1000 +#, fuzzy +msgid "All Day Message" +msgstr "Hela dagen" + +# @ dbem +#: admin/em-options.php:1000 +#, php-format +msgid "If an event lasts all day, this text will show if using the %s placeholder" +msgstr "" + +#: admin/em-options.php:1001 +#, fuzzy +msgid "Use 24h Format?" +msgstr "Datumformat" + +# @ dbem +#: admin/em-options.php:1001 +msgid "When creating events, would you like your times to be shown in 24 hour format?" +msgstr "" + +#: admin/em-options.php:1017 +#, fuzzy +msgid "Link directly to event on day with single event?" +msgstr "Visa lista för dag med endast en event?" + +# @ dbem +#: admin/em-options.php:1017 +msgid "If a calendar day has only one event, you can force a direct link to the event (recommended to avoid duplicate content)." +msgstr "" + +#: admin/em-options.php:1020 +#, fuzzy +msgid "Calendar Day Event List Settings" +msgstr "Eventinställningar" + +#: admin/em-options.php:1027 +#, fuzzy +msgid "Order by event name, then event start time" +msgstr "Sortera efter slutdatum, sluttid, eventmn" + +#: admin/em-options.php:1028 +#, fuzzy +msgid "Order by event start time, then event name" +msgstr "Sortera efter startdatum, starttid, eventmn" + +#: admin/em-options.php:1059 +#, fuzzy +msgid "Calendar events/day limit" +msgstr "Event/dag-gräns för full kalender" + +# @ dbem +#: admin/em-options.php:1059 +#, fuzzy +msgid "Limits the number of events on each calendar day. Leave blank for no limit." +msgstr "Begränsa antalet framtida event som visas (0 = obegränsat)." + +#: admin/em-options.php:1060 +#, fuzzy +msgid "More Events message" +msgstr "Inga eventsmeddelanden" + +# @ dbem +#: admin/em-options.php:1060 +msgid "Text with link to calendar day page with all events for that day if there are more events than the limit above, leave blank for no link as the day number is also a link." +msgstr "" + +# @ dbem +#: admin/em-options.php:1224 +#, fuzzy +msgid "Thousands Seperator" +msgstr "Datumseparator" + +#: admin/em-options.php:1225 +#, fuzzy +msgid "Decimal Point" +msgstr "AvslÃ¥" + +#: admin/em-options.php:1226 +#, fuzzy +msgid "Currency Format" +msgstr "Valuta" + +# @ dbem +#: admin/em-options.php:1226 +msgid "Choose how prices are displayed. @ will be replaced by the currency symbol, and # will be replaced by the number." +msgstr "" + +#: admin/em-options.php:1236 +#, fuzzy +msgid "Customize Feedback Messages" +msgstr "Feedbackmeddelanden för bokningsformuläret" + +# @ dbem +#: admin/em-options.php:1238 +msgid "Below you will find texts that will be displayed to users in various areas during the bookings process, particularly on booking forms." +msgstr "" + +#: admin/em-options.php:1240 +#, fuzzy +msgid "My Bookings messages" +msgstr "Mina bokningar" + +# @ dbem +#: admin/em-options.php:1242 +msgid "When a user cancels their booking, this message will be displayed confirming the cancellation." +msgstr "" + +#: admin/em-options.php:1243 +#, fuzzy +msgid "Booking Cancellation Warning" +msgstr "Bokning avbruten - E-post" + +# @ dbem +#: admin/em-options.php:1243 +msgid "When a user chooses to cancel a booking, this warning is displayed for them to confirm." +msgstr "" + +#: admin/em-options.php:1245 +#, fuzzy +msgid "Booking form texts/messages" +msgstr "Feedbackmeddelanden för bokningsformuläret" + +#: admin/em-options.php:1247 +#, fuzzy +msgid "Bookings disabled" +msgstr "Bokningsdata" + +#: admin/em-options.php:1247 +#, fuzzy +msgid "An event with no bookings." +msgstr "Inga avvaktande bokningar" + +#: admin/em-options.php:1248 +#, fuzzy +msgid "Bookings closed" +msgstr "Bokning avbruten" + +#: admin/em-options.php:1248 +#, fuzzy +msgid "Bookings have closed (e.g. event has started)." +msgstr "Bokningen är stängd för detta event." + +# @ dbem +#: admin/em-options.php:1249 +#, fuzzy +msgid "Fully booked" +msgstr "Redan inbokad" + +# @ dbem +#: admin/em-options.php:1249 +#, fuzzy +msgid "Event is fully booked." +msgstr "Detta event är fullbokat." + +# @ dbem +#: admin/em-options.php:1250 +#, fuzzy +msgid "Already attending" +msgstr "Redan inbokad" + +# @ dbem +#: admin/em-options.php:1250 +msgid "If already attending and double bookings are disabled, this message will be displayed, followed by a link to the users booking page." +msgstr "" + +#: admin/em-options.php:1251 +#, fuzzy +msgid "Manage bookings link text" +msgstr "Hantera bokningar" + +# @ dbem +#: admin/em-options.php:1251 +msgid "Link text used for link to user bookings." +msgstr "" + +#: admin/em-options.php:1260 +#, fuzzy +msgid "Email Exists" +msgstr "E-post" + +# @ dbem +#: admin/em-options.php:1260 +msgid "When a guest tries to book using an email registered with a user account." +msgstr "" + +#: admin/em-options.php:1277 +#, fuzzy +msgid "Submit button text" +msgstr "Spara event" + +# @ dbem +#: admin/em-options.php:1277 +#, php-format +msgid "The text used by the submit button. To use an image instead, enter the full url starting with %s or %s." +msgstr "" + +# @ dbem +#: admin/em-options.php:1344 +msgid "You can disable this email by leaving the subject blank." +msgstr "" + +# @ dbem +#: admin/em-options.php:1346 +msgid "For multiple emails, seperate by commas (e.g. email1@test.com,email2@test.com,etc.)" +msgstr "" + +#: admin/em-options.php:1458 +#, fuzzy +msgid "Minimum width (px)" +msgstr "Maxbredd (px)" + +#: admin/em-options.php:1458 +#, fuzzy +msgid "The minimum allowed width for images uploades" +msgstr "Den maximalt tillÃ¥tna bredden för uppladdade bilder (i pixlar)" + +#: admin/em-options.php:1460 +#, fuzzy +msgid "Minimum height (px)" +msgstr "Maxhöjd (px)" + +#: admin/em-options.php:1460 +#, fuzzy +msgid "The minimum allowed height for images uploaded, in pixels" +msgstr "Den maximalt tillÃ¥tna höjden för uppladdade bilder (i pixlar)" + +# @ dbem +#: admin/em-options.php:1484 +msgid "Depending on server settings, some sending methods may ignore this settings." +msgstr "" + +# @ dbem +#: admin/em-options.php:1632 +msgid "Admin Tools" +msgstr "" + +# @ dbem +#: admin/em-options.php:1634 +msgid "Development Versions & Updates" +msgstr "" + +# @ default +#: admin/em-options.php:1635 +msgid "We're always making improvements, adding features and fixing bugs between releases. We incrementally make these changes in between updates and make it available as a development version. You can download these manually, but we've made it easy for you. Warning: Development versions are not always fully tested before release, use wisely!" +msgstr "" + +#: admin/em-options.php:1637 +#, fuzzy +msgid "Enable Dev Updates?" +msgstr "Aktivera eventattribut? " + +# @ default +#: admin/em-options.php:1637 +msgid "If enabled, the latest dev version will always be checked instead of the latest stable version of the plugin." +msgstr "" + +# @ dbem +#: admin/em-options.php:1639 +msgid "Re-Check Updates" +msgstr "" + +# @ dbem +#: admin/em-options.php:1639 +msgid "If you would like to check and see if there is a new stable update." +msgstr "" + +# @ dbem +#: admin/em-options.php:1640 +msgid "Check Dev Versions" +msgstr "" + +# @ dbem +#: admin/em-options.php:1640 +msgid "If you would like to download a dev version, but just as a one-off, you can force a dev version check by clicking the button below. If there is one available, it should appear in your plugin updates page as a regular update." +msgstr "" + +#: classes/em-bookings-table.php:55 +#, fuzzy +msgid "Confirmed" +msgstr "Bekräftade platser" + +# @ dbem +#: classes/em-bookings-table.php:58 +msgid "Needs Attention" +msgstr "" + +#: classes/em-bookings-table.php:59 +#, fuzzy +msgid "Incomplete Bookings" +msgstr "Avbrutna bokningar" + +#: classes/em-bookings-table.php:79 +#, fuzzy +msgid "Phone Number" +msgstr "Telefonnummer" + +#: classes/em-bookings-table.php:84 +#, fuzzy +msgid "Booking ID" +msgstr "Bokning" + +#: classes/em-bookings-table.php:88 +#, fuzzy +msgid "Ticket Description" +msgstr "Beskrivning" + +#: classes/em-bookings-table.php:89 +#, fuzzy +msgid "Ticket Price" +msgstr "Biljettyp" + +#: classes/em-bookings-table.php:90 +#, fuzzy +msgid "Ticket ID" +msgstr "Biljett" + +#: classes/em-bookings-table.php:98 +#, fuzzy +msgid "Actions" +msgstr "platser" + +#: classes/em-bookings-table.php:250 +#, fuzzy +msgid "Bookings Table Settings" +msgstr "Bokningsstatistik" + +# @ dbem +#: classes/em-bookings-table.php:251 +msgid "Modify what information is displayed in this booking table." +msgstr "" + +# @ dbem +#: classes/em-bookings-table.php:254 +msgid "Collumns to show" +msgstr "" + +# @ dbem +#: classes/em-bookings-table.php:255 +msgid "Drag items to or from the left collumn to add or remove them." +msgstr "" + +#: classes/em-bookings-table.php:276 +msgid "Save Settings" +msgstr "Spara inställningar" + +#: classes/em-bookings-table.php:281 +#, fuzzy +msgid "Export Bookings" +msgstr "Ändra bokning" + +# @ dbem +#: classes/em-bookings-table.php:282 +msgid "Select the options below and export all the bookings you have currently filtered (all pages) into a CSV spreadsheet format." +msgstr "" + +# @ dbem +#: classes/em-bookings-table.php:284 +msgid "Split bookings by ticket type" +msgstr "" + +# @ default +#: classes/em-bookings-table.php:285 +msgid "If your events have multiple tickets, enabling this will show a seperate row for each ticket within a booking." +msgstr "" + +# @ dbem +#: classes/em-bookings-table.php:288 +msgid "Collumns to export" +msgstr "" + +#: classes/em-bookings-table.php:333 +#, fuzzy +msgid "Export Bookings Report" +msgstr "Verktygspanel för bokningar" + +#: classes/em-bookings-table.php:356 +#, fuzzy +msgid "Export these bookings." +msgstr "Inga avvisade bokningar." + +# @ dbem +#: classes/em-bookings-table.php:371 +#, php-format +msgid "%s Rows" +msgstr "" + +# @ dbem +#: classes/em-bookings-table.php:390 +msgid "Displaying Event" +msgstr "" + +#: classes/em-bookings-table.php:392 +#, fuzzy +msgid "Displaying User" +msgstr "Visa loginformulär?" + +#: classes/em-bookings-table.php:444 +#, fuzzy +msgid "No bookings." +msgstr "bokningar" + +#: classes/em-bookings-table.php:570 +#: classes/em-bookings-table.php:578 +#: classes/em-bookings-table.php:586 +#, fuzzy +msgid "Unpprove" +msgstr "Ã…terkalla godkännande" + +#: classes/em-categories-taxonomy.php:19 +msgid "ID" +msgstr "ID" + +# @ dbem +#: classes/em-event-posts-admin.php:102 +#: classes/em-event-posts-admin.php:104 +#: classes/em-event-posts-admin.php:239 +#: classes/em-event-posts-admin.php:241 +#: classes/em-location-posts-admin.php:47 +#: classes/em-location-posts-admin.php:49 +#, php-format +msgid "%s ID" +msgstr "" + +# @ default +#: classes/em-event.php:457 +msgid "For recurring events that end the following day, ensure you make your event last 1 or more days." +msgstr "" + +#: classes/em-event.php:1926 +#, fuzzy +msgid "every year" +msgstr "varje vecka" + +#: classes/em-event.php:1928 +#, fuzzy, php-format +msgid "every %s years" +msgstr "var %s dag" + +#: classes/em-mailer.php:56 +#, fuzzy +msgid "Could not send email." +msgstr "E-post till kontaktperson" + +#: classes/em-object.php:1170 +#, fuzzy +msgid "The image is too small! Minimum size allowed:" +msgstr "Bild kunde inte sparas! Max tillÃ¥ten storlek:" + +#: em-actions.php:611 +#, fuzzy, php-format +msgid "Exported booking on %s" +msgstr "Inga avvisade bokningar." + +#: em-install.php:302 +#, fuzzy +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_EVENTNAME on #_EVENTDATES. He wants to reserve #_BOOKINGSPACES spaces.
                                      Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                                      Yours faithfully,
                                      Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) kommer att delta i #_NAME den #F #j, #Y. Han/hon vill reservera #_BOOKINGSPACES plats/platser.
                                      Det är nu #_BOOKEDSPACES platser reserverade, #_AVAILABLESPACES är fortfarande tillgängliga.
                                      Bästa hälsningar,
                                      Bokningshanteraren" + +#: em-install.php:303 +#, fuzzy +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_EVENTNAME on #_EVENTDATES. He wanted to reserve #_BOOKINGSPACES spaces.
                                      Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                                      Yours faithfully,
                                      Events Manager - http://wp-events-plugin.com" +msgstr "#_BOOKINGNAME (#_BOOKINGEMAIL) avbröt sin bokning på #_NAME den #F #j, #Y. Han/hon ville reservera #_BOOKINGSPACES platser.
                                      Det är nu #_BOOKEDSPACES platser reserverade och #_AVAILABLESPACES platser är fortfarande lediga.
                                      Mvh,
                                      Bokningshanteraren" + +#: em-install.php:304 +#, fuzzy +msgid "Dear #_BOOKINGNAME,
                                      you have successfully reserved #_BOOKINGSPACES space/spaces for #_EVENTNAME.
                                      When : #_EVENTDATES @ #_EVENTTIMES
                                      Where : #_LOCATIONNAME - #_LOCATIONFULLLINE
                                      Yours faithfully,
                                      #_CONTACTNAME" +msgstr "Hej #_BOOKINGNAME,
                                      du har reserverat #_BOOKINGSPACES plats/platser for #_NAME.
                                      Bästa hälsningar,
                                      #_CONTACTNAME" + +#: em-install.php:305 +#, fuzzy +msgid "Dear #_BOOKINGNAME,
                                      You have requested #_BOOKINGSPACES space/spaces for #_EVENTNAME.
                                      When : #_EVENTDATES @ #_EVENTTIMES
                                      Where : #_LOCATIONNAME - #_LOCATIONFULLLINE
                                      Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
                                      Yours faithfully,
                                      #_CONTACTNAME" +msgstr "Hej #_BOOKINGNAME,
                                      Du har skickat en förfrågan om #_BOOKEDSPACES plats/platser för eventet #_NAME.
                                      Din bokning ligger för bekräftelse hos våra administratörer. När din plats är bekräftad kommer du att få ett automatiskt e-postmeddelande om detta.
                                      Bästa hälsningar,
                                      #_CONTACTNAME" + +#: em-install.php:306 +#, fuzzy +msgid "Dear #_BOOKINGNAME,
                                      Your requested booking for #_BOOKINGSPACES spaces at #_EVENTNAME on #_EVENTDATES has been rejected.
                                      Yours faithfully,
                                      #_CONTACTNAME" +msgstr "Hej #_BOOKINGNAME,
                                      Din förfrågan om #_BOOKINGSPACES platser på #_NAME on #F #j, #Y har tyvärr fått avvisats.
                                      Mvh,
                                      #_CONTACTNAME" + +#: em-install.php:307 +#, fuzzy +msgid "Dear #_BOOKINGNAME,
                                      Your requested booking for #_BOOKINGSPACES spaces at #_EVENTNAME on #_EVENTDATES has been cancelled.
                                      Yours faithfully,
                                      #_CONTACTNAME" +msgstr "Hej #_BOOKINGNAME,
                                      Din förfrågan om #_BOOKINGSPACES platser på #_NAME on #F #j, #Y har avbrutits.
                                      Mvh,
                                      #_CONTACTNAME" + +# @ dbem +#: em-install.php:308 +#, fuzzy +msgid "Dear #_CONTACTNAME,
                                      Your event #_EVENTNAME on #_EVENTDATES has been approved.
                                      You can view your event here: #_EVENTURL" +msgstr "#_CONTACTNAME,
                                      Ditt event #_NAME den #F #j, #Y har blivit godkänt.
                                      Du kan se det här: #_EVENTURL" + +# @ dbem +#: em-install.php:492 +msgid "more..." +msgstr "" + +#: em-install.php:532 +#, fuzzy +msgid "You are currently attending this event." +msgstr "Du är inbokad pÃ¥ detta event. Hantera mina bokningar" + +#: em-install.php:533 +#, fuzzy +msgid "Manage my bookings" +msgstr "Hantera bokningar" + +#: templates/forms/event/attributes.php:83 +#: templates/forms/location/attributes.php:83 +#, fuzzy +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings > General to add attribute placeholders." +msgstr "För att kunna använda attribut behöver du definiera nÃ¥gra i din mall, annars kommer de inte att visas. GÃ¥ till event -> Inställningar för att lägga till attribut-platshÃ¥llare." + +#: templates/forms/event/bookings.php:115 +#, fuzzy +msgid "Total Spaces" +msgstr "Tillgängliga Platser" + +# @ dbem +#: templates/forms/event/bookings.php:117 +msgid "Individual tickets with remaining spaces will not be available if total booking spaces reach this limit. Leave blank for no limit." +msgstr "" + +#: templates/forms/event/bookings.php:120 +#, fuzzy +msgid "Booking Cut-Off Date" +msgstr "Bokning Skickad" + +# @ dbem +#: templates/forms/event/bookings.php:123 +msgid "This is the definite date after which bookings will be closed for this event, regardless of individual ticket settings above. Default value will be the event start date." +msgstr "" + +#: templates/forms/event/group.php:13 +#, fuzzy +msgid "Not a Group Event" +msgstr "Grupperade Event" + +#: templates/forms/event/location.php:57 +#, fuzzy +msgid "Location Name:" +msgstr "Platsnamn" + +# @ dbem +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +msgid "Yearly" +msgstr "" + +#: templates/forms/event/recurring-when.php:25 +#: templates/forms/event/when-with-recurring.php:47 +#, fuzzy +msgid "year" +msgstr "Sök" + +# @ dbem +#: templates/forms/event/recurring-when.php:26 +#: templates/forms/event/when-with-recurring.php:48 +msgid "years" +msgstr "" + +#: templates/forms/location/attributes.php:43 +#, fuzzy, php-format +msgid "You don't have any custom attributes defined in any of your Locations Manager template settings. Please add them the settings page" +msgstr "Du har inga egna attribut definierade i nÃ¥gon av dina mallar i Event Manager. Vänligen lägg in dem pÃ¥ inställningssidan " + +#: templates/forms/location/attributes.php:51 +#, fuzzy +msgid "If you see any attributes under here, that means they're not used in Locations Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "Om du ser nÃ¥gra attribut här under sÃ¥ betyder det att dom inte används i Event Manager mer. För att lägga till dom behöver du lägga till det egna attributet igen till ett formateringsalternativ pÃ¥ inställningssidan. För att ta bort nÃ¥got av dessa utfasade attribut, ge det ett tomt värde och spara." + +#: templates/forms/ticket-form.php:14 +#, fuzzy +msgid "Enter a ticket name." +msgstr "Skapa en biljett" + +# @ dbem +#: templates/forms/ticket-form.php:19 +msgid "Enter a maximum number of spaces (required)." +msgstr "" + +#: templates/placeholders/bookingbutton.php:8 +#, fuzzy, php-format +msgid "%s Submitted" +msgstr "Event skickad" + +#: templates/placeholders/bookingbutton.php:9 +#: templates/placeholders/bookingbutton.php:13 +#, fuzzy, php-format +msgid "%s Error. Try again?" +msgstr "Bokningsfel. Försöka igen?" + +#: templates/placeholders/bookingbutton.php:11 +#, fuzzy +msgid "Canceling..." +msgstr "Avbryt" + +#: templates/placeholders/bookingbutton.php:13 +#, fuzzy +msgid "Cancellation" +msgstr "Avbruten" + +#: widgets/em-events.php:163 +#, fuzzy +msgid "No events text" +msgstr "Inga event" + +#~ msgid "No more tickets available at this time." +#~ msgstr "Inga fler biljetter tillgängliga för tillfället." + +#~ msgid "If blank, there's no space limit." +#~ msgstr "Om lämnad tom sÃ¥ anges ingen platsgräns" + +#~ msgid "Name:" +#~ msgstr "Namn:" + +#~ msgid "Booking details for \"%s\" as of %s" +#~ msgstr "Bokningsdetaljer för \"%s\" den %s" + +#~ msgid "Event Attributes" +#~ msgstr "Eventeattribut" + +#~ msgid "" +#~ "The subject of the email sent to the person making a booking that is " +#~ "awaiting administrator approval. Not relevant if bookings don't require " +#~ "approval." +#~ msgstr "" +#~ "Ämnet för e-posten som skickas till personen som gör en bokning som " +#~ "väntar pÃ¥ administratörens godkännande. Inte relevant ifall bokningar " +#~ "inte kräver godkännande." + +#~ msgid "" +#~ "The body of the email which will be sent to the person if the booking is " +#~ "rejected. Not relevant if bookings don't require approval." +#~ msgstr "" +#~ "E-postmeddelandet som skickas till personen om bokningen avvisas. Inte " +#~ "relevant om bokningar inte kräver godkännande." + +#~ msgid "Pending Bookings" +#~ msgstr "Avvaktande bokningar" + +#~ msgid "Confirmed Bookings" +#~ msgstr "Bekräftade bokningar" + +#~ msgid "Totals" +#~ msgstr "Totalt" + +#~ msgid "Powered by" +#~ msgstr "Powered by" + +#~ msgid "Bookings - #_NAME" +#~ msgstr "Bokningar - #_NAME" diff --git a/wp-content/plugins/events-manager/includes/langs/events-manager.pot b/wp-content/plugins/events-manager/includes/langs/events-manager.pot new file mode 100644 index 0000000..ccfb9f5 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/langs/events-manager.pot @@ -0,0 +1,6629 @@ +msgid "" +msgstr "" +"Project-Id-Version: Events Manager 4.171\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/events-manager\n" +"POT-Creation-Date: 2011-09-20 20:44:48+00:00\n" +"PO-Revision-Date: 2011-09-29 19:41+0100\n" +"Last-Translator: Marcus Sykes \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: \n" +"X-Poedit-Country: \n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n" +"X-Poedit-Basepath: \n" +"X-Poedit-Bookmarks: \n" +"X-Poedit-SearchPath-0: .\n" +"X-Textdomain-Support: yes" + +#: buddypress/bp-em-activity.php:47 +#, php-format +#@ dbem +msgid "%s added the event %s" +msgstr "" + +#: buddypress/bp-em-activity.php:87 +#, php-format +#@ dbem +msgid "%s is attending %s." +msgstr "" + +#: buddypress/bp-em-activity.php:89 +#, php-format +#@ dbem +msgid "%s will not be attending %s anymore." +msgstr "" + +#: buddypress/bp-em-activity.php:95 +#, php-format +#@ dbem +msgid "%s is attending %s of the group %s." +msgstr "" + +#: buddypress/bp-em-activity.php:97 +#, php-format +#@ dbem +msgid "%s will not be attending %s of group %s anymore." +msgstr "" + +#: admin/em-ms-options.php:165 +#: admin/em-options.php:438 +#: admin/em-options.php:477 +#: admin/em-options.php:946 +#: buddypress/bp-em-core.php:12 +#: buddypress/bp-em-core.php:53 +#: buddypress/bp-em-core.php:81 +#: buddypress/bp-em-core.php:149 +#: buddypress/bp-em-core.php:176 +#: buddypress/screens/profile.php:27 +#: em-actions.php:102 +#: em-install.php:354 +#: em-install.php:400 +#: em-install.php:456 +#: em-install.php:457 +#: em-install.php:483 +#: em-install.php:732 +#: em-posts.php:137 +#: em-posts.php:140 +#: em-posts.php:142 +#: em-template-tags.php:179 +#: widgets/em-events.php:13 +#@ dbem +msgid "Events" +msgstr "" + +#: admin/em-options.php:1179 +#: em-functions.php:504 +#@ default +#@ dbem +msgid "Yes" +msgstr "" + +#: admin/em-options.php:1180 +#: em-functions.php:504 +#@ default +#@ dbem +msgid "No" +msgstr "" + +#: admin/em-options.php:889 +#: buddypress/bp-em-notifications.php:24 +#: buddypress/bp-em-notifications.php:26 +#: buddypress/bp-em-notifications.php:33 +#: buddypress/bp-em-notifications.php:35 +#: buddypress/bp-em-notifications.php:41 +#: buddypress/bp-em-notifications.php:43 +#: em-install.php:572 +#: em-install.php:769 +#: em-install.php:822 +#@ dbem +msgid "My Bookings" +msgstr "" + +#: buddypress/bp-em-notifications.php:24 +#@ dbem +msgid "You have a pending booking" +msgstr "" + +#: buddypress/bp-em-notifications.php:26 +#, php-format +#@ dbem +msgid "You have %s pending bookings" +msgstr "" + +#: buddypress/bp-em-notifications.php:33 +#@ dbem +msgid "You have a confirmed booking" +msgstr "" + +#: buddypress/bp-em-notifications.php:35 +#, php-format +#@ dbem +msgid "You have %s confirmed bookings" +msgstr "" + +#: buddypress/bp-em-notifications.php:41 +#@ dbem +msgid "A user cancelled a booking" +msgstr "" + +#: buddypress/bp-em-notifications.php:43 +#, php-format +#@ dbem +msgid "%s users cancelled bookings." +msgstr "" + +#: buddypress/bp-em-core.php:124 +#: buddypress/screens/my-locations.php:32 +#@ dbem +msgid "My Locations" +msgstr "" + +#: buddypress/screens/my-locations.php:48 +#: em-events.php:165 +#: em-posts.php:239 +#@ dbem +msgid "Edit Location" +msgstr "" + +#: buddypress/screens/my-locations.php:46 +#: em-events.php:163 +#: em-posts.php:236 +#@ dbem +msgid "Add Location" +msgstr "" + +#: buddypress/screens/group-events.php:20 +#: buddypress/screens/my-group-events.php:20 +#@ dbem +msgid "Group Events" +msgstr "" + +#: buddypress/screens/profile.php:11 +#@ dbem +msgid "You are currently viewing your public page, this is what other users will see." +msgstr "" + +#: buddypress/bp-em-core.php:112 +#: buddypress/screens/my-events.php:32 +#: templates/buddypress/profile.php:7 +#@ dbem +msgid "My Events" +msgstr "" + +#: buddypress/screens/my-events.php:49 +#: em-events.php:152 +#: em-posts.php:146 +#@ dbem +msgid "Edit Event" +msgstr "" + +#: buddypress/screens/my-events.php:52 +#: em-events.php:155 +#: em-posts.php:143 +#: templates/buddypress/profile.php:20 +#@ dbem +msgid "Add Event" +msgstr "" + +#: buddypress/bp-em-core.php:101 +#: buddypress/screens/attending.php:23 +#: templates/buddypress/profile.php:25 +#@ dbem +msgid "Events I'm Attending" +msgstr "" + +#: buddypress/bp-em-core.php:136 +#: buddypress/screens/my-bookings.php:30 +#@ dbem +msgid "My Event Bookings" +msgstr "" + +#: buddypress/bp-em-core.php:92 +#@ dbem +msgid "My Profile" +msgstr "" + +#: em-posts.php:145 +#: em-posts.php:191 +#: em-posts.php:238 +#: templates/forms/event/bookings.php:87 +#@ dbem +msgid "Edit" +msgstr "" + +#: admin/bookings/em-events.php:98 +#: admin/bookings/em-pending.php:101 +#: admin/bookings/em-person.php:86 +#: admin/em-bookings.php:105 +#: admin/em-bookings.php:106 +#: admin/em-ms-options.php:162 +#: admin/em-options.php:306 +#: admin/em-options.php:329 +#: admin/em-options.php:455 +#: admin/em-options.php:469 +#: admin/em-options.php:496 +#: admin/em-options.php:497 +#: admin/em-options.php:954 +#: admin/em-options.php:1062 +#: admin/em-options.php:1090 +#: admin/em-options.php:1120 +#: admin/em-options.php:1143 +#: admin/em-options.php:1532 +#: classes/em-bookings-table.php:77 +#: classes/em-event-posts-admin.php:102 +#: classes/em-event-posts-admin.php:104 +#: classes/em-event-posts-admin.php:181 +#: classes/em-event-posts-admin.php:239 +#: classes/em-event-posts-admin.php:241 +#: classes/em-event.php:611 +#: classes/em-event.php:626 +#: classes/em-event.php:687 +#: classes/em-event.php:1233 +#: em-actions.php:102 +#: em-install.php:407 +#: em-install.php:439 +#: em-posts.php:141 +#: templates/forms/event-editor.php:12 +#: templates/templates/my-bookings.php:46 +#@ dbem +msgid "Event" +msgstr "" + +#: templates/templates/ical-event.php:10 +#: templates/templates/ical.php:12 +#: widgets/em-calendar.php:13 +#@ dbem +msgid "Calendar" +msgstr "" + +#: widgets/em-calendar.php:17 +#@ dbem +msgid "Display your events in a calendar widget." +msgstr "" + +#: widgets/em-calendar.php:18 +#@ dbem +msgid "Events Calendar" +msgstr "" + +#: widgets/em-calendar.php:58 +#: widgets/em-events.php:98 +#: widgets/em-locations.php:72 +#@ dbem +msgid "Title" +msgstr "" + +#: widgets/em-calendar.php:62 +#@ dbem +msgid "Show Long Events?" +msgstr "" + +#: widgets/em-calendar.php:66 +#: widgets/em-events.php:146 +#@ dbem +msgid "Category IDs" +msgstr "" + +#: widgets/em-calendar.php:68 +#: widgets/em-events.php:148 +#@ dbem +msgid "1,2,3 or 2 (0 = all)" +msgstr "" + +#: widgets/em-locations.php:13 +#@ dbem +msgid "Event Locations" +msgstr "" + +#: widgets/em-locations.php:24 +#@ dbem +msgid "Display a list of event locations on Events Manager." +msgstr "" + +#: widgets/em-locations.php:49 +#@ dbem +msgid "No locations" +msgstr "" + +#: widgets/em-locations.php:76 +#@ dbem +msgid "Show number of locations" +msgstr "" + +#: widgets/em-locations.php:80 +#@ dbem +msgid "Scope of the locations" +msgstr "" + +#: widgets/em-locations.php:103 +#@ dbem +msgid "Order of the locations" +msgstr "" + +#: widgets/em-events.php:151 +#: widgets/em-locations.php:110 +#@ dbem +msgid "List item format" +msgstr "" + +#: widgets/em-events.php:22 +#: widgets/em-events.php:74 +#: widgets/em-events.php:160 +#@ dbem +msgid "all events" +msgstr "" + +#: widgets/em-events.php:31 +#@ dbem +msgid "Display a list of events on Events Manager." +msgstr "" + +#: widgets/em-events.php:23 +#: widgets/em-events.php:164 +#@ dbem +msgid "No events" +msgstr "" + +#: widgets/em-events.php:102 +#@ dbem +msgid "Number of events" +msgstr "" + +#: widgets/em-events.php:107 +#@ dbem +msgid "Scope" +msgstr "" + +#: widgets/em-events.php:117 +#: widgets/em-locations.php:90 +#@ dbem +msgid "Order By" +msgstr "" + +#: widgets/em-events.php:26 +#@ dbem +msgid "start date, start time, event name" +msgstr "" + +#: widgets/em-events.php:27 +#@ dbem +msgid "name, start date, start time" +msgstr "" + +#: widgets/em-events.php:28 +#@ dbem +msgid "name, end date, end time" +msgstr "" + +#: widgets/em-events.php:29 +#@ dbem +msgid "end date, end time, event name" +msgstr "" + +#: widgets/em-events.php:130 +#@ dbem +msgid "Order" +msgstr "" + +#: admin/em-options.php:525 +#: admin/em-options.php:528 +#: admin/em-options.php:579 +#: admin/em-options.php:684 +#: admin/em-options.php:687 +#: admin/em-options.php:734 +#: admin/em-options.php:737 +#: admin/em-options.php:824 +#: admin/em-options.php:827 +#: admin/em-options.php:911 +#: admin/em-options.php:914 +#: admin/em-options.php:1039 +#: widgets/em-events.php:134 +#: widgets/em-locations.php:105 +#@ dbem +msgid "Ascending" +msgstr "" + +#: admin/em-options.php:526 +#: admin/em-options.php:529 +#: admin/em-options.php:580 +#: admin/em-options.php:685 +#: admin/em-options.php:688 +#: admin/em-options.php:735 +#: admin/em-options.php:738 +#: admin/em-options.php:825 +#: admin/em-options.php:828 +#: admin/em-options.php:912 +#: admin/em-options.php:915 +#: admin/em-options.php:1040 +#: widgets/em-events.php:135 +#: widgets/em-locations.php:106 +#@ dbem +msgid "Descending" +msgstr "" + +#: widgets/em-events.php:155 +#@ dbem +msgid "Show all events link at bottom?" +msgstr "" + +#: widgets/em-events.php:159 +#@ dbem +msgid "All events link text?" +msgstr "" + +#: admin/bookings/em-events.php:14 +#: em-functions.php:180 +#@ dbem +msgid "All events" +msgstr "" + +#: admin/bookings/em-events.php:15 +#: em-functions.php:181 +#@ dbem +msgid "Future events" +msgstr "" + +#: admin/bookings/em-events.php:13 +#: em-functions.php:182 +#@ dbem +msgid "Past events" +msgstr "" + +#: em-functions.php:183 +#@ dbem +msgid "Today's events" +msgstr "" + +#: em-functions.php:184 +#@ dbem +msgid "Tomorrow's events" +msgstr "" + +#: em-functions.php:185 +#@ dbem +msgid "Events this month" +msgstr "" + +#: em-functions.php:186 +#@ dbem +msgid "Events next month" +msgstr "" + +#: em-functions.php:187 +#@ dbem +msgid "Events current and next month" +msgstr "" + +#: em-functions.php:188 +#@ dbem +msgid "Events within 2 months" +msgstr "" + +#: em-functions.php:189 +#@ dbem +msgid "Events within 3 months" +msgstr "" + +#: em-functions.php:190 +#@ dbem +msgid "Events within 6 months" +msgstr "" + +#: em-functions.php:191 +#@ dbem +msgid "Events within 12 months" +msgstr "" + +#: em-functions.php:249 +#@ dbem +msgid "Trying to perform an illegal action." +msgstr "" + +#: em-functions.php:326 +#@ dbem +msgid "ERROR: Please enter a username." +msgstr "" + +#: em-functions.php:328 +#@ dbem +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "" + +#: em-functions.php:331 +#@ default +msgid "ERROR: This username is already registered, please choose another one." +msgstr "" + +#: em-actions.php:278 +#: em-functions.php:336 +#@ dbem +msgid "ERROR: Please type your e-mail address." +msgstr "" + +#: em-actions.php:281 +#: em-functions.php:338 +#@ dbem +msgid "ERROR: The email address isn’t correct." +msgstr "" + +#: em-functions.php:341 +#@ default +msgid "ERROR: This email is already registered, please choose another one." +msgstr "" + +#: em-functions.php:361 +#, php-format +#@ dbem +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "" + +#: em-functions.php:396 +#, php-format +#@ dbem +msgid "New user registration on your blog %s:" +msgstr "" + +#: em-functions.php:397 +#, php-format +#@ dbem +msgid "Username: %s" +msgstr "" + +#: em-functions.php:398 +#, php-format +#@ dbem +msgid "E-mail: %s" +msgstr "" + +#: em-functions.php:399 +#, php-format +#@ dbem +msgid "[%s] New User Registration" +msgstr "" + +#: em-functions.php:411 +#, php-format +#@ dbem +msgid "[%s] Your username and password" +msgstr "" + +#: classes/em-ticket.php:47 +#@ dbem +msgid "Standard Ticket" +msgstr "" + +#: classes/em-booking.php:135 +#: classes/em-ticket-booking.php:69 +#: classes/em-ticket.php:97 +#@ dbem +msgid "Changes saved" +msgstr "" + +#: classes/em-ticket.php:102 +#@ dbem +msgid "Ticket created" +msgstr "" + +#: classes/em-ticket.php:105 +#: classes/em-ticket.php:106 +#: classes/em-ticket.php:111 +#: classes/em-ticket.php:112 +#@ dbem +msgid "There was a problem saving the ticket." +msgstr "" + +#: classes/em-event.php:476 +#: classes/em-ticket-booking.php:113 +#: classes/em-ticket.php:161 +#@ dbem +#@ default +msgid "Missing fields: " +msgstr "" + +#: classes/em-ticket.php:277 +#@ dbem +msgid "You cannot delete a ticket that has a booking on it." +msgstr "" + +#: classes/em-location.php:106 +#@ dbem +msgid "The location address" +msgstr "" + +#: classes/em-location.php:106 +#@ dbem +msgid "The location town" +msgstr "" + +#: classes/em-location.php:106 +#@ dbem +msgid "The country" +msgstr "" + +#: classes/em-event.php:440 +#: classes/em-location.php:242 +#: classes/em-location.php:258 +#: classes/em-location.php:260 +#@ dbem +msgid " is required." +msgstr "" + +#: admin/em-bookings.php:129 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:347 +#: admin/em-options.php:358 +#: admin/em-options.php:626 +#: admin/em-options.php:640 +#: admin/em-options.php:654 +#: admin/em-options.php:655 +#: admin/em-options.php:1084 +#: admin/em-options.php:1550 +#: classes/em-event-posts-admin.php:110 +#: classes/em-event-posts-admin.php:247 +#: classes/em-location-posts-admin.php:47 +#: classes/em-location-posts-admin.php:49 +#: classes/em-location.php:365 +#: classes/em-location.php:372 +#: classes/em-location.php:661 +#: em-actions.php:180 +#: em-posts.php:234 +#: templates/buddypress/group-events.php:44 +#: templates/buddypress/my-group-events.php:44 +#: templates/forms/location-editor.php:37 +#: templates/tables/events.php:54 +#@ dbem +#@ default +msgid "Location" +msgstr "" + +#: admin/em-ms-options.php:173 +#: admin/em-options.php:355 +#: admin/em-options.php:356 +#: admin/em-options.php:632 +#: admin/em-options.php:656 +#: admin/em-options.php:711 +#: admin/em-options.php:1086 +#: admin/em-options.php:1087 +#: classes/em-location-post-admin.php:59 +#: classes/em-location.php:360 +#: classes/em-location.php:370 +#: templates/forms/location-editor.php:11 +#@ dbem +msgid "location" +msgstr "" + +#: classes/em-location.php:376 +#, php-format +#@ dbem +msgid "You do not have permission to create/edit %s." +msgstr "" + +#: admin/em-ms-options.php:167 +#: admin/em-ms-options.php:172 +#: admin/em-ms-options.php:173 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:630 +#: admin/em-options.php:631 +#: admin/em-options.php:632 +#: admin/em-options.php:645 +#: admin/em-options.php:649 +#: admin/em-options.php:655 +#: admin/em-options.php:656 +#: admin/em-options.php:706 +#: admin/em-options.php:707 +#: admin/em-options.php:750 +#: admin/em-options.php:928 +#: admin/em-options.php:1079 +#: admin/em-options.php:1080 +#: admin/em-options.php:1081 +#: admin/em-options.php:1082 +#: admin/em-options.php:1552 +#: admin/em-options.php:1553 +#: admin/em-options.php:1554 +#: admin/em-options.php:1555 +#: admin/em-options.php:1556 +#: admin/em-options.php:1557 +#: classes/em-location.php:376 +#: events-manager.php:286 +#: events-manager.php:287 +#: events-manager.php:288 +#: events-manager.php:289 +#: events-manager.php:290 +#: events-manager.php:291 +#: events-manager.php:292 +#@ dbem +msgid "locations" +msgstr "" + +#: em-actions.php:104 +#, php-format +#@ dbem +msgid "%s successfully deleted." +msgstr "" + +#: em-actions.php:107 +#, php-format +#@ dbem +msgid "%s could not be deleted." +msgstr "" + +#: classes/em-booking.php:144 +#: classes/em-booking.php:145 +#: classes/em-booking.php:153 +#: classes/em-booking.php:164 +#: classes/em-booking.php:170 +#: classes/em-tickets-bookings.php:70 +#: classes/em-tickets-bookings.php:71 +#@ dbem +msgid "There was a problem saving the booking." +msgstr "" + +#: classes/em-tickets-bookings.php:100 +#: em-install.php:539 +#@ dbem +msgid "Booking cannot be made, not enough spaces available!" +msgstr "" + +#: classes/em-tickets-bookings.php:165 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:11 +#, php-format +#@ dbem +msgid "You do not have the rights to manage this %s." +msgstr "" + +#: classes/em-booking.php:166 +#: classes/em-booking.php:172 +#: classes/em-booking.php:398 +#: classes/em-booking.php:400 +#: classes/em-bookings.php:109 +#: classes/em-tickets-bookings.php:165 +#: templates/placeholders/bookingbutton.php:8 +#: templates/placeholders/bookingbutton.php:9 +#@ dbem +msgid "Booking" +msgstr "" + +#: admin/em-bookings.php:171 +#: admin/em-bookings.php:227 +#: admin/em-options.php:673 +#: admin/em-options.php:723 +#: admin/em-options.php:813 +#: classes/em-bookings-table.php:76 +#: classes/em-person.php:76 +#: templates/buddypress/group-events.php:42 +#: templates/buddypress/my-group-events.php:42 +#: templates/forms/bookingform/booking-fields.php:12 +#: templates/forms/ticket-form.php:12 +#: templates/forms/tickets-form.php:9 +#: templates/tables/events.php:52 +#: templates/tables/locations.php:36 +#: templates/tables/locations.php:45 +#: templates/templates/bookings-event-printable.php:24 +#@ dbem +msgid "Name" +msgstr "" + +#: classes/em-person.php:77 +#@ dbem +msgid "Email" +msgstr "" + +#: classes/em-people.php:28 +#: classes/em-person.php:78 +#: templates/forms/bookingform/booking-fields.php:16 +#@ dbem +msgid "Phone" +msgstr "" + +#: classes/em-ticket-booking.php:78 +#@ dbem +msgid "Ticket booking created" +msgstr "" + +#: classes/em-ticket-booking.php:85 +#: classes/em-ticket-booking.php:86 +#: classes/em-ticket-booking.php:91 +#: classes/em-ticket-booking.php:92 +#@ dbem +msgid "There was a problem saving the ticket booking." +msgstr "" + +#: admin/em-options.php:801 +#: admin/em-options.php:1117 +#: admin/em-options.php:1118 +#@ dbem +msgid "category" +msgstr "" + +#: classes/em-bookings.php:109 +#, php-format +#@ dbem +msgid "%s created." +msgstr "" + +#: classes/em-bookings.php:271 +#: classes/em-bookings.php:277 +#, php-format +#@ dbem +msgid "Bookings %s. Mails Sent." +msgstr "" + +#: classes/em-bookings.php:281 +#@ dbem +msgid "An error occurred." +msgstr "" + +#: admin/bookings/em-events.php:131 +#: classes/em-booking.php:101 +#: classes/em-bookings-table.php:54 +#: classes/em-event-posts-admin.php:157 +#: classes/em-event.php:249 +#: templates/buddypress/group-events.php:95 +#: templates/buddypress/my-group-events.php:89 +#: templates/tables/events.php:19 +#: templates/tables/events.php:99 +#@ dbem +msgid "Pending" +msgstr "" + +#: classes/em-booking.php:102 +#: classes/em-event.php:250 +#@ dbem +msgid "Approved" +msgstr "" + +#: classes/em-booking.php:103 +#: classes/em-bookings-table.php:57 +#@ dbem +msgid "Rejected" +msgstr "" + +#: classes/em-booking.php:104 +#: classes/em-bookings-table.php:56 +#: em-install.php:536 +#: templates/placeholders/bookingbutton.php:12 +#@ dbem +msgid "Cancelled" +msgstr "" + +#: classes/em-booking.php:105 +#@ dbem +msgid "Awaiting Online Payment" +msgstr "" + +#: classes/em-booking.php:106 +#@ dbem +msgid "Awaiting Payment" +msgstr "" + +#: classes/em-booking.php:140 +#@ dbem +msgid "Your booking has been recorded" +msgstr "" + +#: classes/em-booking.php:166 +#: classes/em-booking.php:172 +#, php-format +#@ dbem +msgid "You cannot manage this %s." +msgstr "" + +#: classes/em-booking.php:223 +#@ dbem +msgid "You are trying to book a non-existent ticket for this event." +msgstr "" + +#: classes/em-booking.php:398 +#, php-format +#@ dbem +msgid "%s deleted" +msgstr "" + +#: classes/em-booking.php:400 +#, php-format +#@ dbem +msgid "%s could not be deleted" +msgstr "" + +#: classes/em-booking.php:446 +#@ dbem +msgid "Not approved, spaces full." +msgstr "" + +#: classes/em-booking.php:454 +#, php-format +#@ dbem +msgid "Booking %s." +msgstr "" + +#: classes/em-booking.php:457 +#: em-actions.php:433 +#: em-actions.php:452 +#@ dbem +msgid "Mail Sent." +msgstr "" + +#: classes/em-booking.php:460 +#: classes/em-booking.php:461 +#: em-actions.php:435 +#: em-actions.php:458 +#@ dbem +msgid "ERROR : Mail Not Sent." +msgstr "" + +#: classes/em-booking.php:467 +#: classes/em-booking.php:468 +#, php-format +#@ dbem +msgid "Booking could not be %s." +msgstr "" + +#: classes/em-booking.php:483 +#@ dbem +msgid "Booking note successfully added." +msgstr "" + +#: classes/em-booking.php:634 +#@ dbem +msgid "Confirmation email could not be sent to contact person. Registrant should have gotten their email (only admin see this warning)." +msgstr "" + +#: classes/em-booking.php:643 +#@ dbem +msgid "Confirmation email could not be sent to admin. Registrant should have gotten their email (only admin see this warning)." +msgstr "" + +#: admin/em-options.php:1115 +#: templates/buddypress/group-events.php:113 +#: templates/buddypress/my-group-events.php:107 +#@ dbem +msgid "Category" +msgstr "" + +#: admin/em-options.php:765 +#: admin/em-options.php:769 +#: admin/em-options.php:778 +#: admin/em-options.php:840 +#: admin/em-options.php:1110 +#: admin/em-options.php:1111 +#: admin/em-options.php:1112 +#: admin/em-options.php:1113 +#: events-manager.php:295 +#: events-manager.php:296 +#@ dbem +msgid "categories" +msgstr "" + +#: classes/em-tickets.php:111 +#@ dbem +msgid "You cannot delete tickets if there are any bookings associated with them. Please delete these bookings first." +msgstr "" + +#: classes/em-tickets.php:140 +#@ dbem +msgid "Standard" +msgstr "" + +#: classes/em-people.php:19 +#@ dbem +msgid "User deleted by administrators" +msgstr "" + +#: classes/em-event-post-admin.php:37 +#@ dbem +msgid "WARNING: This is a recurring event." +msgstr "" + +#: classes/em-event-post-admin.php:38 +#@ dbem +msgid "Modifications to this event will cause all recurrences of this event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and disassociate them with this recurring event." +msgstr "" + +#: classes/em-event-post-admin.php:41 +#@ dbem +msgid "WARNING: This is a recurrence in a set of recurring events." +msgstr "" + +#: classes/em-event-post-admin.php:48 +#, php-format +#@ dbem +msgid "WARNING: This is a event belonging to the group \"%s\". Other group admins can also modify this event." +msgstr "" + +#: classes/em-event.php:647 +#@ dbem +msgid "Something went wrong with the recurrence update..." +msgstr "" + +#: classes/em-event.php:647 +#@ dbem +msgid "There was a problem saving the recurring events." +msgstr "" + +#: classes/em-event.php:687 +#, php-format +#@ dbem +msgid "%s successfully duplicated." +msgstr "" + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:326 +#: admin/em-options.php:327 +#: admin/em-options.php:461 +#: admin/em-options.php:498 +#: admin/em-options.php:555 +#: admin/em-options.php:1563 +#: admin/em-options.php:1564 +#: classes/em-event-post-admin.php:85 +#: classes/em-event.php:606 +#: classes/em-event.php:619 +#@ dbem +msgid "event" +msgstr "" + +#: classes/em-event.php:455 +#: classes/em-event.php:457 +#@ dbem +msgid "Events cannot start after they end." +msgstr "" + +#: classes/em-event.php:462 +#@ dbem +msgid "Dates must have correct formatting. Please use the date picker provided." +msgstr "" + +#: classes/em-event.php:1370 +#: templates/forms/bookingform/ticket-single.php:37 +#: templates/forms/bookingform/tickets-list.php:45 +#@ dbem +msgid "N/A" +msgstr "" + +#: classes/em-event.php:1380 +#@ dbem +msgid "Profile" +msgstr "" + +#: classes/em-event.php:1895 +#@ dbem +msgid "Sunday" +msgstr "" + +#: classes/em-event.php:1895 +#@ dbem +msgid "Monday" +msgstr "" + +#: classes/em-event.php:1895 +#@ dbem +msgid "Tuesday" +msgstr "" + +#: classes/em-event.php:1895 +#@ dbem +msgid "Wednesday" +msgstr "" + +#: classes/em-event.php:1895 +#@ dbem +msgid "Thursday" +msgstr "" + +#: classes/em-event.php:1895 +#@ dbem +msgid "Friday" +msgstr "" + +#: classes/em-event.php:1895 +#@ dbem +msgid "Saturday" +msgstr "" + +#: classes/em-event.php:1896 +#, php-format +#@ dbem +msgid "the first %s of the month" +msgstr "" + +#: classes/em-event.php:1896 +#, php-format +#@ dbem +msgid "the second %s of the month" +msgstr "" + +#: classes/em-event.php:1896 +#, php-format +#@ dbem +msgid "the third %s of the month" +msgstr "" + +#: classes/em-event.php:1896 +#, php-format +#@ dbem +msgid "the fourth %s of the month" +msgstr "" + +#: classes/em-event.php:1896 +#, php-format +#@ dbem +msgid "the last %s of the month" +msgstr "" + +#: classes/em-event.php:1897 +#, php-format +#@ dbem +msgid "From %1$s to %2$s" +msgstr "" + +#: classes/em-event.php:1899 +#@ dbem +msgid "everyday" +msgstr "" + +#: classes/em-event.php:1901 +#, php-format +#@ dbem +msgid "every %s days" +msgstr "" + +#: classes/em-event.php:1910 +#@ dbem +msgid "every week" +msgstr "" + +#: classes/em-event.php:1912 +#, php-format +#@ dbem +msgid "every %s weeks" +msgstr "" + +#: classes/em-event.php:1923 +#, php-format +#@ dbem +msgid "every %s months" +msgstr "" + +#: classes/em-object.php:1160 +#@ dbem +msgid "The image file is too big! Maximum size:" +msgstr "" + +#: classes/em-object.php:1167 +#@ dbem +msgid "The image is too big! Maximum size allowed:" +msgstr "" + +#: classes/em-object.php:1173 +#@ dbem +msgid "The image is in a wrong format!" +msgstr "" + +#: classes/em-mailer.php:103 +#@ dbem +msgid "Please supply a valid email format." +msgstr "" + +#: admin/em-options.php:1380 +#@ dbem +msgid "Booking cancelled" +msgstr "" + +#: em-actions.php:380 +#@ dbem +msgid "You must log in to cancel your booking." +msgstr "" + +#: admin/em-bookings.php:292 +#: classes/em-tickets.php:205 +#@ dbem +msgid "Ticket Type" +msgstr "" + +#: admin/em-bookings.php:173 +#: admin/em-bookings.php:294 +#: classes/em-tickets.php:205 +#: templates/forms/event/bookings.php:31 +#: templates/forms/ticket-form.php:16 +#: templates/forms/tickets-form.php:11 +#@ dbem +msgid "Price" +msgstr "" + +#: admin/bookings/em-cancelled.php:87 +#: admin/bookings/em-confirmed.php:88 +#: admin/bookings/em-pending.php:105 +#: admin/bookings/em-person.php:87 +#: admin/bookings/em-rejected.php:87 +#: admin/em-bookings.php:174 +#: admin/em-bookings.php:293 +#: classes/em-bookings-table.php:80 +#: classes/em-tickets.php:205 +#: templates/forms/bookingform/ticket-single.php:30 +#: templates/forms/ticket-form.php:18 +#: templates/templates/bookings-event-printable.php:27 +#: templates/templates/my-bookings.php:48 +#@ dbem +msgid "Spaces" +msgstr "" + +#: admin/em-bookings.php:350 +#: templates/forms/bookingform/booking-fields.php:26 +#: templates/templates/bookings-event-printable.php:28 +#@ dbem +msgid "Comment" +msgstr "" + +#: em-install.php:524 +#@ dbem +msgid "Send your booking" +msgstr "" + +#: templates/forms/ticket-form.php:22 +#@ dbem +msgid "Available from" +msgstr "" + +#: templates/forms/event/recurring-when.php:51 +#: templates/forms/event/recurring-when.php:58 +#: templates/forms/event/when-with-recurring.php:17 +#: templates/forms/event/when-with-recurring.php:18 +#: templates/forms/event/when-with-recurring.php:26 +#: templates/forms/event/when.php:11 +#: templates/forms/event/when.php:18 +#: templates/forms/ticket-form.php:25 +#@ dbem +msgid "to" +msgstr "" + +#: templates/forms/ticket-form.php:28 +#@ dbem +msgid "Add a start or end date (or both) to impose time constraints on ticket availability. Leave either blank for no upper/lower limit." +msgstr "" + +#: templates/forms/ticket-form.php:31 +#@ dbem +msgid "Bookings must order between" +msgstr "" + +#: templates/forms/ticket-form.php:33 +#: templates/templates/events-search.php:38 +#@ dbem +msgid "and" +msgstr "" + +#: templates/forms/ticket-form.php:35 +#@ dbem +msgid "spaces." +msgstr "" + +#: templates/forms/ticket-form.php:36 +#@ dbem +msgid "Leave either blank for no upper/lower limit." +msgstr "" + +#: admin/em-bookings.php:172 +#: templates/forms/ticket-form.php:39 +#: templates/forms/tickets-form.php:10 +#@ dbem +msgid "Description" +msgstr "" + +#: admin/em-bookings.php:92 +#: admin/em-bookings.php:154 +#: admin/em-bookings.php:202 +#: admin/em-bookings.php:447 +#: admin/em-bookings.php:499 +#: templates/forms/event-editor.php:12 +#: templates/forms/location-editor.php:11 +#@ dbem +msgid "Unauthorized Access" +msgstr "" + +#: admin/em-ms-locations.php:39 +#@ dbem +msgid "Add location" +msgstr "" + +#: admin/em-ms-locations.php:42 +#@ dbem +msgid "Edit location" +msgstr "" + +#: templates/forms/location-editor.php:17 +#@ dbem +msgid "required" +msgstr "" + +#: templates/forms/location-editor.php:28 +#@ dbem +msgid "Location Name" +msgstr "" + +#: templates/forms/location-editor.php:33 +#@ dbem +msgid "The name of the location" +msgstr "" + +#: templates/forms/location/where.php:5 +#@ dbem +msgid "If you're using the Google Maps, the more detail you provide, the more accurate Google can be at finding your location. If your address isn't being found, please try it on maps.google.com by adding all the fields below seperated by commas." +msgstr "" + +#: templates/forms/event/location.php:66 +#: templates/forms/location/where.php:9 +#@ dbem +msgid "Address:" +msgstr "" + +#: templates/forms/event/location.php:72 +#: templates/forms/location/where.php:15 +#@ dbem +msgid "City/Town:" +msgstr "" + +#: templates/forms/event/location.php:78 +#: templates/forms/location/where.php:21 +#@ dbem +msgid "State/County:" +msgstr "" + +#: templates/forms/event/location.php:84 +#: templates/forms/location/where.php:27 +#@ dbem +msgid "Postcode:" +msgstr "" + +#: templates/forms/event/location.php:96 +#: templates/forms/location/where.php:40 +#@ dbem +msgid "Country:" +msgstr "" + +#: templates/forms/event/location.php:99 +#: templates/forms/location/where.php:43 +#@ dbem +msgid "none selected" +msgstr "" + +#: templates/forms/event/location.php:116 +#: templates/forms/location/where.php:53 +#@ dbem +msgid "Location not found" +msgstr "" + +#: templates/forms/event-editor.php:98 +#: templates/forms/location-editor.php:44 +#@ dbem +msgid "Details" +msgstr "" + +#: templates/forms/location-editor.php:90 +#@ dbem +msgid "No image uploaded for this location yet" +msgstr "" + +#: templates/forms/event-editor.php:171 +#: templates/forms/location-editor.php:93 +#@ dbem +msgid "Upload/change picture" +msgstr "" + +#: templates/forms/event-editor.php:173 +#: templates/forms/location-editor.php:95 +#@ dbem +msgid "Delete Image?" +msgstr "" + +#: templates/forms/location-editor.php:104 +#@ dbem +msgid "Update location" +msgstr "" + +#: admin/bookings/em-cancelled.php:85 +#: admin/bookings/em-confirmed.php:86 +#: admin/bookings/em-pending.php:103 +#: admin/bookings/em-rejected.php:85 +#: classes/em-bookings-table.php:78 +#: templates/forms/bookingform/booking-fields.php:20 +#: templates/templates/bookings-event-printable.php:25 +#@ dbem +msgid "E-mail" +msgstr "" + +#: templates/forms/bookingform/login.php:8 +#@ dbem +msgid "Log in if you already have an account with us." +msgstr "" + +#: templates/forms/bookingform/login.php:10 +#@ dbem +msgid "Username" +msgstr "" + +#: templates/forms/bookingform/login.php:14 +#@ dbem +msgid "Password" +msgstr "" + +#: templates/forms/bookingform/login.php:18 +#@ dbem +msgid "Log In" +msgstr "" + +#: templates/forms/bookingform/login.php:19 +#@ dbem +msgid "Remember Me" +msgstr "" + +#: templates/forms/bookingform/login.php:34 +#@ dbem +msgid "Sign Up" +msgstr "" + +#: templates/forms/bookingform/login.php:38 +#@ dbem +msgid "Password Lost and Found" +msgstr "" + +#: templates/forms/bookingform/login.php:38 +#@ dbem +msgid "Lost your password?" +msgstr "" + +#: admin/em-bookings.php:114 +#: admin/em-options.php:898 +#: templates/forms/event-editor.php:31 +#@ dbem +msgid "Event Name" +msgstr "" + +#: templates/forms/event-editor.php:35 +#@ dbem +msgid "The event name. Example: Birthday party" +msgstr "" + +#: templates/forms/event/group.php:23 +#: templates/forms/event-editor.php:61 +#@ dbem +msgid "Select a group you admin to attach this event to it. Note that all other admins of that group can modify the booking, and you will not be able to unattach the event without deleting it." +msgstr "" + +#: classes/em-event-post-admin.php:182 +#: templates/forms/event-editor.php:67 +#@ dbem +msgid "When" +msgstr "" + +#: templates/forms/event/when.php:23 +#@ dbem +msgid "This event spans every day between the beginning and end date, with start/end times applying to each day." +msgstr "" + +#: templates/forms/event/recurring-when.php:67 +#: templates/forms/event/when-with-recurring.php:73 +#@ dbem +msgid "For a recurring event, a one day event will be created on each recurring date within this date range." +msgstr "" + +#: templates/forms/event/recurring-when.php:10 +#: templates/forms/event/when-with-recurring.php:32 +#@ dbem +msgid "This event repeats" +msgstr "" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +#@ dbem +msgid "Daily" +msgstr "" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +#@ dbem +msgid "Weekly" +msgstr "" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +#@ dbem +msgid "Monthly" +msgstr "" + +#: templates/forms/event/recurring-when.php:17 +#: templates/forms/event/when-with-recurring.php:39 +#@ dbem +msgid "every" +msgstr "" + +#: templates/forms/event/recurring-when.php:19 +#: templates/forms/event/when-with-recurring.php:41 +#@ dbem +msgid "day" +msgstr "" + +#: templates/forms/event/recurring-when.php:20 +#: templates/forms/event/when-with-recurring.php:42 +#@ dbem +msgid "days" +msgstr "" + +#: templates/forms/event/recurring-when.php:21 +#: templates/forms/event/when-with-recurring.php:43 +#@ dbem +msgid "week on" +msgstr "" + +#: templates/forms/event/recurring-when.php:22 +#: templates/forms/event/when-with-recurring.php:44 +#@ dbem +msgid "weeks on" +msgstr "" + +#: templates/forms/event/recurring-when.php:23 +#: templates/forms/event/when-with-recurring.php:45 +#@ dbem +msgid "month on the" +msgstr "" + +#: templates/forms/event/recurring-when.php:24 +#: templates/forms/event/when-with-recurring.php:46 +#@ dbem +msgid "months on the" +msgstr "" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +#@ dbem +msgid "first" +msgstr "" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +#@ dbem +msgid "second" +msgstr "" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +#@ dbem +msgid "third" +msgstr "" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +#@ dbem +msgid "fourth" +msgstr "" + +#: templates/forms/event/recurring-when.php:36 +#: templates/forms/event/when-with-recurring.php:59 +#@ dbem +msgid "last" +msgstr "" + +#: templates/forms/event/recurring-when.php:43 +#: templates/forms/event/when-with-recurring.php:66 +#@ dbem +msgid "of each month" +msgstr "" + +#: classes/em-event-post-admin.php:184 +#: classes/em-event-post-admin.php:352 +#: classes/em-location-post-admin.php:113 +#: templates/forms/event-editor.php:93 +#@ dbem +msgid "Where" +msgstr "" + +#: templates/forms/event/location.php:28 +#@ dbem +msgid "Location:" +msgstr "" + +#: templates/forms/event/location.php:61 +#@ dbem +msgid "Create a location or start typing to search a previously created location." +msgstr "" + +#: templates/forms/event/location.php:62 +#@ dbem +msgid "You cannot edit saved locations here." +msgstr "" + +#: templates/forms/event/location.php:62 +#@ dbem +msgid "Reset this form to create a location." +msgstr "" + +#: templates/forms/event/location.php:90 +#: templates/forms/location/where.php:33 +#@ dbem +msgid "Region:" +msgstr "" + +#: templates/forms/event/location.php:104 +#@ dbem +msgid "Filling this in first will allow you to quickly find previously filled states and regions for the country." +msgstr "" + +#: templates/forms/event-editor.php:106 +#@ dbem +msgid "Details about the event." +msgstr "" + +#: templates/forms/event-editor.php:106 +#: templates/forms/location-editor.php:52 +#@ dbem +msgid "HTML Allowed." +msgstr "" + +#: templates/forms/event-editor.php:115 +#@ dbem +msgid "Category:" +msgstr "" + +#: templates/forms/event-editor.php:189 +#@ dbem +msgid "Submit Event" +msgstr "" + +#: classes/em-event-post-admin.php:188 +#: classes/em-event-post-admin.php:354 +#: templates/forms/event-editor.php:179 +#@ dbem +msgid "Bookings/Registration" +msgstr "" + +#: templates/forms/event/bookings.php:8 +#@ dbem +msgid "Enable registration for this event" +msgstr "" + +#: templates/forms/event/booking-stats.php:21 +#@ dbem +msgid "manage bookings" +msgstr "" + +#: templates/forms/event/booking-stats.php:22 +#@ dbem +msgid "printable view" +msgstr "" + +#: templates/forms/event/booking-stats.php:24 +#@ dbem +msgid "export csv" +msgstr "" + +#: templates/forms/event/bookings.php:24 +#@ dbem +msgid "Tickets" +msgstr "" + +#: classes/em-bookings-table.php:87 +#: templates/forms/event/bookings.php:30 +#@ dbem +msgid "Ticket Name" +msgstr "" + +#: templates/forms/event/bookings.php:32 +#@ dbem +msgid "Min/Max" +msgstr "" + +#: templates/forms/event/bookings.php:33 +#@ dbem +msgid "Start/End" +msgstr "" + +#: templates/forms/event/bookings.php:34 +#@ dbem +msgid "Avail. Spaces" +msgstr "" + +#: admin/bookings/em-events.php:129 +#: templates/forms/event/bookings.php:35 +#@ dbem +msgid "Booked Spaces" +msgstr "" + +#: templates/forms/event/bookings.php:42 +#@ dbem +msgid "Add new ticket" +msgstr "" + +#: templates/forms/event/bookings.php:57 +#@ dbem +msgid "Free" +msgstr "" + +#: admin/bookings/em-cancelled.php:113 +#: admin/bookings/em-confirmed.php:118 +#: admin/bookings/em-pending.php:134 +#: admin/bookings/em-person.php:127 +#: admin/bookings/em-rejected.php:113 +#: classes/em-bookings-table.php:563 +#: classes/em-bookings-table.php:572 +#: classes/em-bookings-table.php:580 +#: classes/em-bookings-table.php:588 +#: classes/em-bookings-table.php:594 +#: classes/em-bookings-table.php:599 +#: classes/em-event-posts-admin.php:168 +#: templates/buddypress/group-events.php:101 +#: templates/buddypress/group-events.php:135 +#: templates/buddypress/my-group-events.php:95 +#: templates/buddypress/my-group-events.php:129 +#: templates/forms/event/bookings.php:89 +#: templates/tables/events.php:105 +#: templates/tables/events.php:136 +#@ dbem +msgid "Delete" +msgstr "" + +#: templates/forms/event/bookings.php:91 +#@ dbem +msgid "View Bookings" +msgstr "" + +#: events-manager.php:229 +#@ dbem +msgid "Are you sure you want to reschedule this recurring event? If you do this, you will lose all booking information and the old recurring events will be deleted." +msgstr "" + +#: events-manager.php:230 +#@ dbem +msgid "Are you sure you want to disable bookings? If you do this and save, you will lose all previous bookings. If you wish to prevent further bookings, reduce the number of spaces available to the amount of bookings you currently have" +msgstr "" + +#: templates/forms/tickets-form.php:7 +#@ dbem +msgid "Create a ticket" +msgstr "" + +#: templates/forms/tickets-form.php:13 +#@ dbem +msgid "Available ticket spaces" +msgstr "" + +#: templates/forms/tickets-form.php:15 +#@ dbem +msgid "Start date of ticket availability" +msgstr "" + +#: templates/forms/tickets-form.php:16 +#@ dbem +msgid "End date of ticket availability" +msgstr "" + +#: templates/forms/tickets-form.php:17 +#@ dbem +msgid "Minimum tickets required per booking" +msgstr "" + +#: templates/forms/tickets-form.php:18 +#@ dbem +msgid "Maximum tickets required per booking" +msgstr "" + +#: templates/forms/tickets-form.php:24 +#@ dbem +msgid "Add Ticket" +msgstr "" + +#: admin/em-ms-locations.php:29 +#: templates/tables/events.php:11 +#@ dbem +msgid "Add New" +msgstr "" + +#: em-events.php:128 +#: templates/tables/locations.php:10 +#, php-format +#@ dbem +msgid "My %s" +msgstr "" + +#: admin/em-admin.php:45 +#: admin/em-ms-locations.php:28 +#: admin/em-ms-options.php:174 +#: admin/em-options.php:440 +#: admin/em-options.php:644 +#: admin/em-options.php:645 +#: admin/em-options.php:1077 +#: admin/em-options.php:1079 +#: admin/em-options.php:1080 +#: admin/em-options.php:1081 +#: admin/em-options.php:1082 +#: classes/em-location-posts-admin.php:38 +#: em-actions.php:180 +#: em-install.php:407 +#: em-install.php:408 +#: em-install.php:745 +#: em-install.php:792 +#: em-posts.php:230 +#: em-posts.php:233 +#: em-posts.php:235 +#: templates/tables/locations.php:10 +#: templates/tables/locations.php:13 +#@ dbem +msgid "Locations" +msgstr "" + +#: templates/tables/locations.php:13 +#, php-format +#@ dbem +msgid "All %s" +msgstr "" + +#: admin/bookings/em-cancelled.php:49 +#: admin/bookings/em-confirmed.php:50 +#: admin/bookings/em-events.php:54 +#: admin/bookings/em-pending.php:64 +#: admin/bookings/em-person.php:51 +#: admin/bookings/em-rejected.php:49 +#: templates/tables/locations.php:20 +#@ dbem +#@ default +msgid "Bulk Actions" +msgstr "" + +#: admin/bookings/em-events.php:55 +#: templates/tables/locations.php:21 +#@ dbem +msgid "Delete selected" +msgstr "" + +#: admin/bookings/em-events.php:57 +#: templates/tables/locations.php:23 +#@ default +msgid "Apply" +msgstr "" + +#: classes/em-location-posts-admin.php:55 +#: templates/tables/locations.php:37 +#: templates/tables/locations.php:46 +#@ dbem +msgid "Address" +msgstr "" + +#: classes/em-location-posts-admin.php:57 +#: templates/tables/locations.php:38 +#: templates/tables/locations.php:47 +#@ dbem +msgid "State" +msgstr "" + +#: admin/em-options.php:671 +#: admin/em-options.php:721 +#: admin/em-options.php:811 +#: classes/em-location-posts-admin.php:58 +#: templates/tables/locations.php:39 +#: templates/tables/locations.php:48 +#@ dbem +msgid "Country" +msgstr "" + +#: admin/bookings/em-events.php:99 +#: templates/buddypress/group-events.php:45 +#: templates/buddypress/my-group-events.php:45 +#: templates/tables/events.php:55 +#@ dbem +msgid "Date and time" +msgstr "" + +#: em-install.php:579 +#: templates/buddypress/group-events.php:30 +#: templates/buddypress/my-group-events.php:30 +#: templates/buddypress/profile.php:20 +#@ dbem +msgid "No Events" +msgstr "" + +#: templates/buddypress/profile.php:38 +#@ dbem +msgid "Not attending any events yet." +msgstr "" + +#: templates/tables/events.php:17 +#@ dbem +msgid "Upcoming" +msgstr "" + +#: admin/bookings/em-events.php:29 +#: templates/tables/events.php:21 +#@ dbem +msgid "Past Events" +msgstr "" + +#: em-posts.php:150 +#: templates/tables/events.php:24 +#: templates/tables/events.php:26 +#@ dbem +msgid "Search Events" +msgstr "" + +#: admin/bookings/em-events.php:88 +#@ dbem +msgid "no events" +msgstr "" + +#: admin/em-admin.php:38 +#: admin/em-bookings.php:134 +#: admin/em-bookings.php:183 +#: classes/em-event-posts-admin.php:154 +#: em-events.php:128 +#: templates/buddypress/group-events.php:92 +#: templates/buddypress/my-group-events.php:86 +#: templates/tables/events.php:96 +#@ dbem +msgid "Bookings" +msgstr "" + +#: classes/em-event-posts-admin.php:155 +#: templates/buddypress/group-events.php:93 +#: templates/buddypress/my-group-events.php:87 +#: templates/tables/events.php:97 +#: templates/templates/bookings-event-printable.php:42 +#@ dbem +msgid "Booked" +msgstr "" + +#: templates/buddypress/group-events.php:106 +#: templates/buddypress/my-group-events.php:100 +#: templates/tables/events.php:110 +#@ dbem +msgid "Duplicate this event" +msgstr "" + +#: classes/em-event-posts-admin.php:162 +#: templates/buddypress/group-events.php:129 +#: templates/buddypress/my-group-events.php:123 +#: templates/tables/events.php:130 +#@ dbem +msgid "WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series." +msgstr "" + +#: templates/templates/bookings-event-printable.php:21 +#@ dbem +msgid "Bookings data" +msgstr "" + +#: admin/bookings/em-cancelled.php:86 +#: admin/bookings/em-confirmed.php:87 +#: admin/bookings/em-pending.php:104 +#: admin/bookings/em-rejected.php:86 +#: templates/templates/bookings-event-printable.php:26 +#@ dbem +msgid "Phone number" +msgstr "" + +#: templates/templates/bookings-event-printable.php:47 +#@ dbem +msgid "Available" +msgstr "" + +#: templates/placeholders/locationmap.php:15 +#: templates/templates/map-global.php:15 +#@ dbem +msgid "Loading Map...." +msgstr "" + +#: admin/em-bookings.php:123 +#: templates/templates/my-bookings.php:47 +#@ dbem +msgid "Date" +msgstr "" + +#: admin/bookings/em-person.php:88 +#: admin/em-bookings.php:262 +#: admin/em-bookings.php:272 +#: classes/em-bookings-table.php:81 +#: templates/templates/my-bookings.php:49 +#@ dbem +msgid "Status" +msgstr "" + +#: em-install.php:535 +#@ dbem +msgid "Are you sure you want to cancel your booking?" +msgstr "" + +#: admin/em-bookings.php:281 +#: admin/em-bookings.php:367 +#: admin/em-options.php:150 +#: admin/em-options.php:167 +#: templates/placeholders/bookingbutton.php:10 +#: templates/templates/my-bookings.php:75 +#@ dbem +msgid "Cancel" +msgstr "" + +#: templates/templates/my-bookings.php:91 +#@ dbem +msgid "You do not have any bookings." +msgstr "" + +#: templates/templates/my-bookings.php:101 +#, php-format +#@ dbem +msgid "Please Log In to view your bookings." +msgstr "" + +#: templates/templates/events-search.php:35 +#@ dbem +msgid "between" +msgstr "" + +#: em-install.php:331 +#@ dbem +msgid "All Categories" +msgstr "" + +#: em-install.php:333 +#@ dbem +msgid "All Countries" +msgstr "" + +#: em-install.php:335 +#@ dbem +msgid "All Regions" +msgstr "" + +#: em-install.php:337 +#@ dbem +msgid "All States" +msgstr "" + +#: admin/bookings/em-cancelled.php:38 +#: admin/bookings/em-cancelled.php:40 +#: admin/bookings/em-confirmed.php:39 +#: admin/bookings/em-confirmed.php:41 +#: admin/bookings/em-pending.php:53 +#: admin/bookings/em-pending.php:55 +#: admin/bookings/em-person.php:40 +#: admin/bookings/em-person.php:42 +#: admin/bookings/em-rejected.php:38 +#: admin/bookings/em-rejected.php:40 +#: em-install.php:328 +#: events-manager.php:241 +#@ dbem +msgid "Search" +msgstr "" + +#: events-manager.php:243 +#@ dbem +msgid "Loading..." +msgstr "" + +#: events-manager.php:242 +#@ dbem +msgid "Searching..." +msgstr "" + +#: templates/placeholders/bookingbutton.php:6 +#@ dbem +msgid "Book Now" +msgstr "" + +#: templates/placeholders/bookingbutton.php:7 +#@ dbem +msgid "Booking..." +msgstr "" + +#: templates/placeholders/locationmap.php:27 +#@ dbem +msgid "Map Unavailable" +msgstr "" + +#: em-install.php:529 +#@ dbem +msgid "Online bookings are not available for this event." +msgstr "" + +#: em-install.php:530 +#@ dbem +msgid "Bookings are closed for this event." +msgstr "" + +#: events-manager.php:222 +#@ dbem +msgid "Please wait while the booking is being submitted." +msgstr "" + +#: admin/em-options.php:40 +#@ dbem +msgid "Changes saved." +msgstr "" + +#: admin/em-help.php:28 +#: admin/em-ms-options.php:52 +#: admin/em-options.php:187 +#@ dbem +msgid "Event Related Placeholders" +msgstr "" + +#: admin/em-help.php:34 +#: admin/em-ms-options.php:53 +#: admin/em-options.php:188 +#@ dbem +msgid "Location Related Placeholders" +msgstr "" + +#: admin/em-help.php:37 +#: admin/em-ms-options.php:54 +#: admin/em-options.php:189 +#@ dbem +msgid "Booking Related Placeholders" +msgstr "" + +#: admin/em-help.php:31 +#: admin/em-ms-options.php:55 +#: admin/em-options.php:190 +#@ dbem +msgid "Category Related Placeholders" +msgstr "" + +#: admin/em-ms-options.php:56 +#: admin/em-options.php:191 +#, php-format +#@ dbem +msgid "This accepts %s and %s placeholders." +msgstr "" + +#: admin/em-ms-options.php:57 +#: admin/em-ms-options.php:58 +#: admin/em-options.php:192 +#: admin/em-options.php:193 +#, php-format +#@ dbem +msgid "This accepts %s placeholders." +msgstr "" + +#: admin/em-ms-options.php:59 +#: admin/em-options.php:194 +#, php-format +#@ dbem +msgid "This accepts %s, %s and %s placeholders." +msgstr "" + +#: admin/em-ms-options.php:61 +#: admin/em-ms-options.php:199 +#: admin/em-options.php:197 +#: admin/em-options.php:1432 +#@ dbem +#@ default +msgid "Save Changes" +msgstr "" + +#: admin/em-ms-options.php:61 +#: admin/em-options.php:197 +#: classes/em-bookings-table.php:53 +#@ dbem +msgid "All" +msgstr "" + +#: admin/em-ms-options.php:66 +#: admin/em-options.php:202 +#@ dbem +msgid "Collapse All" +msgstr "" + +#: admin/em-ms-options.php:67 +#: admin/em-options.php:203 +#@ dbem +msgid "Expand All" +msgstr "" + +#: admin/em-ms-options.php:138 +#: admin/em-options.php:289 +#@ dbem +msgid "Event Manager Options" +msgstr "" + +#: admin/em-ms-options.php:148 +#: admin/em-options.php:300 +#: admin/em-options.php:381 +#: admin/em-options.php:411 +#: admin/em-options.php:433 +#: admin/em-options.php:455 +#: admin/em-options.php:469 +#: admin/em-options.php:626 +#: admin/em-options.php:640 +#: admin/em-options.php:760 +#: admin/em-options.php:850 +#: admin/em-options.php:882 +#: admin/em-options.php:943 +#: admin/em-options.php:967 +#: admin/em-options.php:991 +#: admin/em-options.php:1009 +#: admin/em-options.php:1074 +#: admin/em-options.php:1105 +#: admin/em-options.php:1135 +#: admin/em-options.php:1157 +#: admin/em-options.php:1172 +#: admin/em-options.php:1201 +#: admin/em-options.php:1218 +#: admin/em-options.php:1236 +#: admin/em-options.php:1272 +#: admin/em-options.php:1284 +#: admin/em-options.php:1306 +#: admin/em-options.php:1340 +#: admin/em-options.php:1393 +#: admin/em-options.php:1453 +#: admin/em-options.php:1477 +#: admin/em-options.php:1523 +#: admin/em-options.php:1632 +#@ dbem +msgid "Click to toggle" +msgstr "" + +#: admin/em-ms-options.php:148 +#@ dbem +msgid "Multi Site Options" +msgstr "" + +#: admin/em-ms-options.php:152 +#@ dbem +msgid "Enable global tables mode?" +msgstr "" + +#: admin/em-ms-options.php:152 +#@ dbem +msgid "Setting this to yes will make all events save in the main site event tables (EM must also be activated). This allows you to share events across different blogs, such as showing events in your network whilst allowing users to display and manage their events within their own blog. Bear in mind that activating this will mean old events created on the sub-blogs will not be accessible anymore, and if you switch back they will be but new events created during global events mode will only remain on the main site." +msgstr "" + +#: admin/em-ms-options.php:163 +#@ dbem +msgid "Display global events on main blog?" +msgstr "" + +#: admin/em-options.php:354 +#@ dbem +msgid "Use dropdown for locations?" +msgstr "" + +#: admin/em-options.php:354 +#@ dbem +msgid "Select yes to select location from a drow-down menu; location selection will be faster, but you will lose the ability to insert locations with events" +msgstr "" + +#: admin/em-options.php:310 +#@ dbem +msgid "Select yes to enable the recurrence features feature" +msgstr "" + +#: admin/em-options.php:311 +#@ dbem +msgid "Enable bookings?" +msgstr "" + +#: admin/em-options.php:311 +#@ dbem +msgid "Select yes to allow bookings and tickets for events." +msgstr "" + +#: admin/em-options.php:314 +#@ dbem +msgid "Select yes to enable the category features" +msgstr "" + +#: admin/em-options.php:326 +#: admin/em-options.php:355 +#@ dbem +msgid "Select yes to enable the attributes feature" +msgstr "" + +#: admin/em-options.php:318 +#@ dbem +msgid "no default category" +msgstr "" + +#: admin/em-options.php:323 +#@ dbem +msgid "Default Category" +msgstr "" + +#: admin/em-options.php:323 +#@ dbem +msgid "This option allows you to select the default category when adding an event." +msgstr "" + +#: admin/em-options.php:339 +#@ dbem +msgid "(not applicable with event ownership on presently, coming soon!)" +msgstr "" + +#: admin/em-options.php:334 +#@ dbem +msgid "no default location" +msgstr "" + +#: admin/em-options.php:339 +#@ dbem +msgid "Default Location" +msgstr "" + +#: admin/em-options.php:339 +#@ dbem +msgid "This option allows you to select the default location when adding an event." +msgstr "" + +#: admin/em-options.php:342 +#@ dbem +msgid "Default Location Country" +msgstr "" + +#: admin/em-options.php:342 +#@ dbem +msgid "no default country" +msgstr "" + +#: admin/em-options.php:342 +#@ dbem +msgid "If you select a default country, that will be pre-selected when creating a new location." +msgstr "" + +#: admin/em-options.php:329 +#, php-format +#@ dbem +msgid "You can also add event attributes here, one per line in this format #_ATT{key}. They will not appear on event pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "" + +#: admin/em-options.php:368 +#@ dbem +msgid "Show some love?" +msgstr "" + +#: admin/em-options.php:368 +#@ dbem +msgid "Hundreds of free hours have gone into making this free plugin, show your support and add a small link to the plugin website at the bottom of your event pages." +msgstr "" + +#: admin/em-options.php:482 +#@ dbem +msgid "Events page" +msgstr "" + +#: admin/em-options.php:487 +#@ dbem +msgid "Show events page in lists?" +msgstr "" + +#: admin/em-options.php:487 +#@ dbem +msgid "Check this option if you want the events page to appear together with other pages in pages lists." +msgstr "" + +#: admin/em-options.php:488 +#@ dbem +msgid "Display calendar in events page?" +msgstr "" + +#: admin/em-options.php:488 +#@ dbem +msgid "This options allows to display the calendar in the events page, instead of the default list. It is recommended not to display both the calendar widget and a calendar page." +msgstr "" + +#: admin/em-options.php:488 +#@ dbem +msgid "If you would like to show events that span over more than one day, see the Calendar section on this page." +msgstr "" + +#: admin/em-options.php:489 +#@ dbem +msgid "Disable title rewriting?" +msgstr "" + +#: admin/em-options.php:490 +#@ dbem +msgid "Event Manager titles" +msgstr "" + +#: admin/em-options.php:490 +#@ dbem +msgid "This only setting only matters if you selected 'Yes' to above. You will notice the events page titles aren't being rewritten, and you have a new title underneath the default page name. This is where you control the HTML of this title. Make sure you keep the #_PAGETITLE placeholder here, as that's what is rewritten by events manager. To control what's rewritten in this title, see settings further down for page titles." +msgstr "" + +#: admin/em-options.php:617 +#@ dbem +msgid "Event List Limits" +msgstr "" + +#: admin/em-options.php:617 +#@ dbem +msgid "This will control how many events are shown on one list by default." +msgstr "" + +#: admin/em-options.php:550 +#@ dbem +msgid "Are current events past events?" +msgstr "" + +#: admin/em-options.php:550 +#@ dbem +msgid "By default, events that are have an end date later than today will be included in searches, set this to yes to consider events that started 'yesterday' as past." +msgstr "" + +#: admin/em-options.php:491 +#@ dbem +msgid "Show events search?" +msgstr "" + +#: admin/em-options.php:491 +#@ dbem +msgid "If set to yes, a search form will appear just above your list of events." +msgstr "" + +#: admin/em-options.php:560 +#: admin/em-options.php:1022 +#@ dbem +msgid "Default event list ordering" +msgstr "" + +#: admin/em-options.php:565 +#@ dbem +msgid "Order by start date, start time, then event name" +msgstr "" + +#: admin/em-options.php:566 +#@ dbem +msgid "Order by name, start date, then start time" +msgstr "" + +#: admin/em-options.php:567 +#@ dbem +msgid "Order by name, end date, then end time" +msgstr "" + +#: admin/em-options.php:568 +#@ dbem +msgid "Order by end date, end time, then event name" +msgstr "" + +#: admin/em-options.php:582 +#: admin/em-options.php:1042 +#@ dbem +msgid "All Ascending" +msgstr "" + +#: admin/em-options.php:585 +#: admin/em-options.php:1045 +#@ dbem +msgid "All Descending" +msgstr "" + +#: admin/em-options.php:539 +#: admin/em-options.php:599 +#: admin/em-options.php:1055 +#@ dbem +msgid "When Events Manager displays lists of events the default behaviour is ordering by start date in ascending order. To change this, modify the values above." +msgstr "" + +#: admin/em-options.php:603 +#@ dbem +msgid "Event list scope" +msgstr "" + +#: admin/em-options.php:613 +#@ dbem +msgid "Only show events starting within a certain time limit on the events page. Default is future events with no end time limit." +msgstr "" + +#: admin/em-options.php:943 +#@ dbem +msgid "Events format" +msgstr "" + +#: admin/em-options.php:946 +#: admin/em-options.php:1077 +#: admin/em-options.php:1108 +#, php-format +#@ dbem +msgid "%s Page" +msgstr "" + +#: admin/em-options.php:948 +#: admin/em-options.php:1092 +#: admin/em-options.php:1122 +#: admin/em-options.php:1145 +#@ dbem +msgid "Default event list format header" +msgstr "" + +#: admin/em-options.php:948 +#: admin/em-options.php:1092 +#: admin/em-options.php:1122 +#: admin/em-options.php:1145 +#@ dbem +msgid "This content will appear just above your code for the default event list format. Default is blank" +msgstr "" + +#: admin/em-options.php:949 +#@ dbem +msgid "Default event list format" +msgstr "" + +#: admin/em-options.php:949 +#@ dbem +msgid "The format of any events in a list." +msgstr "" + +#: admin/em-options.php:950 +#: admin/em-options.php:1094 +#: admin/em-options.php:1124 +#: admin/em-options.php:1147 +#@ dbem +msgid "Default event list format footer" +msgstr "" + +#: admin/em-options.php:950 +#: admin/em-options.php:1094 +#: admin/em-options.php:1124 +#: admin/em-options.php:1147 +#@ dbem +msgid "This content will appear just below your code for the default event list format. Default is blank" +msgstr "" + +#: admin/em-options.php:951 +#@ dbem +msgid "No events message" +msgstr "" + +#: admin/em-options.php:951 +#@ dbem +msgid "The message displayed when no events are available." +msgstr "" + +#: admin/em-options.php:952 +#@ dbem +msgid "List events by date title" +msgstr "" + +#: admin/em-options.php:952 +#@ dbem +msgid "If viewing a page for events on a specific date, this is the title that would show up. To insert date values, use PHP time format characters with a # symbol before them, i.e. #m, #M, #j, etc.
                                      " +msgstr "" + +#: admin/em-options.php:954 +#: admin/em-options.php:1084 +#: admin/em-options.php:1115 +#: admin/em-options.php:1138 +#, php-format +#@ dbem +msgid "Single %s Page" +msgstr "" + +#: admin/em-options.php:957 +#@ dbem +msgid "Single event page title format" +msgstr "" + +#: admin/em-options.php:957 +#@ dbem +msgid "The format of a single event page title." +msgstr "" + +#: admin/em-options.php:959 +#@ dbem +msgid "Default single event format" +msgstr "" + +#: admin/em-options.php:959 +#@ dbem +msgid "The format of a single event page." +msgstr "" + +#: admin/em-options.php:1009 +#@ dbem +msgid "Calendar format" +msgstr "" + +#: admin/em-options.php:1013 +#@ dbem +msgid "Small calendar title" +msgstr "" + +#: admin/em-options.php:1013 +#@ dbem +msgid "The format of the title, corresponding to the text that appears when hovering on an eventful calendar day." +msgstr "" + +#: admin/em-options.php:1014 +#@ dbem +msgid "Small calendar title separator" +msgstr "" + +#: admin/em-options.php:1014 +#@ dbem +msgid "The separator appearing on the above title when more than one events are taking place on the same day." +msgstr "" + +#: admin/em-options.php:1015 +#@ dbem +msgid "Full calendar events format" +msgstr "" + +#: admin/em-options.php:1015 +#@ dbem +msgid "The format of each event when displayed in the full calendar. Remember to include li tags before and after the event." +msgstr "" + +#: admin/em-options.php:1016 +#@ dbem +msgid "Show long events on calendar pages?" +msgstr "" + +#: admin/em-options.php:1016 +#@ dbem +msgid "If you are showing a calendar on the events page (see Events format section on this page), you have the option of showing events that span over days on each day it occurs." +msgstr "" + +#: admin/em-options.php:1018 +#@ dbem +msgid "Show list on day with single event?" +msgstr "" + +#: admin/em-options.php:1018 +#@ dbem +msgid "By default, if a calendar day only has one event, it display a single event when clicking on the link of that calendar date. If you select Yes here, you will get always see a list of events." +msgstr "" + +#: admin/em-options.php:1062 +#@ dbem +msgid "iCal Feed Settings" +msgstr "" + +#: admin/em-options.php:1064 +#@ dbem +msgid "iCal Title" +msgstr "" + +#: admin/em-options.php:1064 +#@ dbem +msgid "The title that will appear in the calendar." +msgstr "" + +#: admin/em-options.php:1065 +#@ dbem +msgid "iCal Limit" +msgstr "" + +#: admin/em-options.php:1065 +#@ dbem +msgid "Limits the number of future events shown (0 = unlimited)." +msgstr "" + +#: admin/em-options.php:1074 +#@ dbem +msgid "Locations format" +msgstr "" + +#: admin/em-options.php:1079 +#: admin/em-options.php:1110 +#, php-format +#@ dbem +msgid "%s list header format" +msgstr "" + +#: admin/em-options.php:1079 +#: admin/em-options.php:1110 +#, php-format +#@ dbem +msgid "This content will appear just above your code for the %s list format below. Default is blank" +msgstr "" + +#: admin/em-options.php:1080 +#: admin/em-options.php:1111 +#, php-format +#@ dbem +msgid "%s list item format" +msgstr "" + +#: admin/em-options.php:1080 +#: admin/em-options.php:1111 +#, php-format +#@ dbem +msgid "The format of a single %s in a list." +msgstr "" + +#: admin/em-options.php:1081 +#: admin/em-options.php:1112 +#, php-format +#@ dbem +msgid "%s list footer format" +msgstr "" + +#: admin/em-options.php:1081 +#: admin/em-options.php:1112 +#, php-format +#@ dbem +msgid "This content will appear just below your code for the %s list format above. Default is blank" +msgstr "" + +#: admin/em-options.php:1082 +#: admin/em-options.php:1095 +#: admin/em-options.php:1113 +#: admin/em-options.php:1125 +#: admin/em-options.php:1148 +#, php-format +#@ dbem +msgid "No %s message" +msgstr "" + +#: admin/em-options.php:1082 +#: admin/em-options.php:1113 +#, php-format +#@ dbem +msgid "The message displayed when no %s are available." +msgstr "" + +#: admin/em-options.php:1086 +#: admin/em-options.php:1117 +#: admin/em-options.php:1140 +#, php-format +#@ dbem +msgid "Single %s title format" +msgstr "" + +#: admin/em-options.php:1086 +#@ dbem +msgid "The format of a single location page title." +msgstr "" + +#: admin/em-options.php:1087 +#: admin/em-options.php:1118 +#: admin/em-options.php:1141 +#, php-format +#@ dbem +msgid "Single %s page format" +msgstr "" + +#: admin/em-options.php:1087 +#@ dbem +msgid "The format of a single location page." +msgstr "" + +#: admin/em-options.php:1088 +#@ dbem +msgid "Default location balloon format" +msgstr "" + +#: admin/em-options.php:1088 +#@ dbem +msgid "The format of of the text appearing in the baloon describing the location a single location map." +msgstr "" + +#: admin/em-options.php:1090 +#: admin/em-options.php:1120 +#: admin/em-options.php:1143 +#, php-format +#@ dbem +msgid "%s List Formats" +msgstr "" + +#: admin/em-options.php:1093 +#: admin/em-options.php:1123 +#: admin/em-options.php:1146 +#, php-format +#@ dbem +msgid "Default %s list format" +msgstr "" + +#: admin/em-ms-options.php:163 +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:165 +#: admin/em-options.php:459 +#: admin/em-options.php:460 +#: admin/em-options.php:461 +#: admin/em-options.php:497 +#: admin/em-options.php:498 +#: admin/em-options.php:549 +#: admin/em-options.php:551 +#: admin/em-options.php:927 +#: admin/em-options.php:1093 +#: admin/em-options.php:1095 +#: admin/em-options.php:1123 +#: admin/em-options.php:1125 +#: admin/em-options.php:1146 +#: admin/em-options.php:1148 +#: admin/em-options.php:1534 +#: admin/em-options.php:1535 +#: admin/em-options.php:1536 +#: admin/em-options.php:1537 +#: admin/em-options.php:1538 +#: admin/em-options.php:1539 +#: events-manager.php:272 +#: events-manager.php:273 +#: events-manager.php:274 +#: events-manager.php:275 +#: events-manager.php:276 +#: events-manager.php:277 +#@ dbem +msgid "events" +msgstr "" + +#: admin/em-options.php:1093 +#@ dbem +msgid "The format of the events the list inserted in the location page through the #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS element." +msgstr "" + +#: admin/em-options.php:1095 +#@ dbem +msgid "The message to be displayed in the list generated by #_LOCATIONNEXTEVENTS, #_LOCATIONNEXTEVENTS and #_LOCATIONALLEVENTS when no events are available." +msgstr "" + +#: admin/em-options.php:1105 +#@ dbem +msgid "Categories format" +msgstr "" + +#: admin/em-options.php:764 +#: admin/em-options.php:765 +#: admin/em-options.php:1108 +#: admin/em-options.php:1110 +#: admin/em-options.php:1111 +#: admin/em-options.php:1112 +#: admin/em-options.php:1113 +#: em-install.php:439 +#: em-install.php:441 +#: em-install.php:757 +#: em-install.php:807 +#@ dbem +msgid "Categories" +msgstr "" + +#: admin/em-options.php:1117 +#@ dbem +msgid "The format of a single category page title." +msgstr "" + +#: admin/em-options.php:1118 +#@ dbem +msgid "The format of a single category page." +msgstr "" + +#: admin/em-options.php:1123 +#@ dbem +msgid "The format of the events the list inserted in the category page through the #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS element." +msgstr "" + +#: admin/em-options.php:1125 +#@ dbem +msgid "The message to be displayed in the list generated by #_CATEGORYNEXTEVENTS, #_CATEGORYNEXTEVENTS and #_CATEGORYALLEVENTS when no events are available." +msgstr "" + +#: admin/em-options.php:1157 +#@ dbem +msgid "RSS feed format" +msgstr "" + +#: admin/em-options.php:1161 +#@ dbem +msgid "RSS main title" +msgstr "" + +#: admin/em-options.php:1161 +#@ dbem +msgid "The main title of your RSS events feed." +msgstr "" + +#: admin/em-options.php:1162 +#@ dbem +msgid "RSS main description" +msgstr "" + +#: admin/em-options.php:1162 +#@ dbem +msgid "The main description of your RSS events feed." +msgstr "" + +#: admin/em-options.php:1163 +#@ dbem +msgid "RSS title format" +msgstr "" + +#: admin/em-options.php:1163 +#@ dbem +msgid "The format of the title of each item in the events RSS feed." +msgstr "" + +#: admin/em-options.php:1164 +#@ dbem +msgid "RSS description format" +msgstr "" + +#: admin/em-options.php:1164 +#@ dbem +msgid "The format of the description of each item in the events RSS feed." +msgstr "" + +#: admin/em-options.php:1172 +#@ dbem +msgid "Maps and geotagging" +msgstr "" + +#: admin/em-options.php:1177 +#@ dbem +msgid "Enable Google Maps integration?" +msgstr "" + +#: admin/em-options.php:1181 +#@ dbem +msgid "Check this option to enable Goggle Map integration." +msgstr "" + +#: admin/em-options.php:1185 +#@ dbem +msgid "Map text format" +msgstr "" + +#: admin/em-options.php:1185 +#@ dbem +msgid "The text format inside the map balloons." +msgstr "" + +#: admin/em-options.php:1206 +#@ dbem +msgid "Approval Required?" +msgstr "" + +#: admin/em-options.php:1206 +#@ dbem +msgid "Bookings will not be confirmed until the event administrator approves it." +msgstr "" + +#: admin/em-options.php:1223 +#@ dbem +msgid "Currency" +msgstr "" + +#: admin/em-options.php:1223 +#@ dbem +msgid "Choose your currency for displaying event pricing." +msgstr "" + +#: admin/em-options.php:1288 +#@ dbem +msgid "Single ticket mode?" +msgstr "" + +#: admin/em-options.php:1288 +#@ dbem +msgid "In single ticket mode, users can only create one ticket per booking (and will not see options to add more tickets)." +msgstr "" + +#: admin/em-options.php:1289 +#@ dbem +msgid "Show ticket table in single ticket mode?" +msgstr "" + +#: admin/em-options.php:1289 +#@ dbem +msgid "If you prefer a ticket table like with multiple tickets, even for single ticket events, enable this." +msgstr "" + +#: admin/em-options.php:1290 +#@ dbem +msgid "Show unavailable tickets?" +msgstr "" + +#: admin/em-options.php:1290 +#@ dbem +msgid "You can choose whether or not to show unavailable tickets to visitors." +msgstr "" + +#: admin/em-options.php:1207 +#@ dbem +msgid "Reserved unconfirmed spaces?" +msgstr "" + +#: admin/em-options.php:1207 +#@ dbem +msgid "By default, event spaces become unavailable once there are enough CONFIRMED bookings. To reserve spaces even if unnapproved, choose yes." +msgstr "" + +#: admin/em-options.php:1291 +#@ dbem +msgid "Show multiple tickets if logged out?" +msgstr "" + +#: admin/em-options.php:1291 +#@ dbem +msgid "If logged out, a user will be asked to register in order to book. However, we can show available tickets if you have more than one ticket." +msgstr "" + +#: admin/em-options.php:1209 +#@ dbem +msgid "Allow overbooking when approving?" +msgstr "" + +#: admin/em-options.php:1209 +#@ dbem +msgid "If you get a lot of pending bookings and you decide to allow more bookings than spaces allow, setting this to yes will allow you to override the event space limit when manually approving." +msgstr "" + +#: admin/em-options.php:1205 +#@ dbem +msgid "Allow guest bookings?" +msgstr "" + +#: admin/em-options.php:1205 +#@ dbem +msgid "If enabled, guest visitors can supply an email address and a user account will automatically be created for them along with their booking. They will be also be able to log back in with that newly created account." +msgstr "" + +#: admin/em-options.php:1210 +#@ dbem +msgid "Allow double bookings?" +msgstr "" + +#: admin/em-options.php:1210 +#@ dbem +msgid "If enabled, users can book an event more than once." +msgstr "" + +#: admin/em-options.php:1276 +#@ dbem +msgid "Display login form?" +msgstr "" + +#: admin/em-options.php:1276 +#@ dbem +msgid "Choose whether or not to display a login form in the booking form area to remind your members to log in before booking." +msgstr "" + +#: admin/em-options.php:1253 +#@ dbem +msgid "Booking form feedback messages" +msgstr "" + +#: admin/em-options.php:1254 +#@ dbem +msgid "When a booking is made by a user, a feedback message is shown depending on the result, which can be customized below." +msgstr "" + +#: admin/em-options.php:1256 +#@ dbem +msgid "Successful booking" +msgstr "" + +#: admin/em-options.php:1256 +#@ dbem +msgid "When a booking is registered and confirmed." +msgstr "" + +#: admin/em-options.php:1257 +#@ dbem +msgid "Successful pending booking" +msgstr "" + +#: admin/em-options.php:1257 +#@ dbem +msgid "When a booking is registered but pending." +msgstr "" + +#: admin/em-options.php:1258 +#@ dbem +msgid "Not enough spaces" +msgstr "" + +#: admin/em-options.php:1258 +#@ dbem +msgid "When a booking cannot be made due to lack of spaces." +msgstr "" + +#: admin/em-options.php:1259 +#@ dbem +msgid "Errors" +msgstr "" + +#: admin/em-options.php:1259 +#@ dbem +msgid "When a booking cannot be made due to an error when filling the form. Below this, there will be a dynamic list of errors." +msgstr "" + +#: admin/em-options.php:1261 +#@ dbem +msgid "User must log in" +msgstr "" + +#: admin/em-options.php:1261 +#@ dbem +msgid "When a user must log in before making a booking." +msgstr "" + +#: admin/em-options.php:1262 +#@ dbem +msgid "Error mailing user" +msgstr "" + +#: admin/em-options.php:1262 +#@ dbem +msgid "If a booking is made and an email cannot be sent, this is added to the success message." +msgstr "" + +#: admin/em-options.php:1263 +#@ dbem +msgid "Already booked" +msgstr "" + +#: admin/em-options.php:1263 +#@ dbem +msgid "If the user made a previous booking and cannot double-book." +msgstr "" + +#: admin/em-options.php:1264 +#@ dbem +msgid "No spaces booked" +msgstr "" + +#: admin/em-options.php:1264 +#@ dbem +msgid "If the user tries to make a booking without requesting any spaces." +msgstr "" + +#: admin/em-options.php:1340 +#@ dbem +msgid "Booking Email Templates" +msgstr "" + +#: admin/em-options.php:1345 +#@ dbem +msgid "Default contact person" +msgstr "" + +#: admin/em-options.php:1345 +#@ dbem +msgid "Select the default contact person. This user will be employed whenever a contact person is not explicitly specified for an event" +msgstr "" + +#: admin/em-options.php:1346 +#@ dbem +msgid "Email events admin?" +msgstr "" + +#: admin/em-options.php:1346 +#@ dbem +msgid "If you would like every event booking confirmation email sent to an administrator write their email here (leave blank to not send an email)." +msgstr "" + +#: admin/em-options.php:1347 +#@ dbem +msgid "Email contact person?" +msgstr "" + +#: admin/em-options.php:1347 +#@ dbem +msgid "Check this option if you want the event contact to receive an email when someone books places. An email will be sent when a booking is first made (regardless if confirmed or pending)" +msgstr "" + +#: admin/em-options.php:1348 +#@ dbem +msgid "Disable new registration email?" +msgstr "" + +#: admin/em-options.php:1350 +#@ dbem +msgid "Contact person booking confirmed" +msgstr "" + +#: admin/em-options.php:1351 +#@ dbem +msgid "An email will be sent to the event contact when a booking is first made." +msgstr "" + +#: admin/em-options.php:1353 +#@ dbem +msgid "Contact person email subject" +msgstr "" + +#: admin/em-options.php:1354 +#@ dbem +msgid "Contact person email" +msgstr "" + +#: admin/em-options.php:1356 +#@ dbem +msgid "Contact person booking cancelled" +msgstr "" + +#: admin/em-options.php:1357 +#@ dbem +msgid "An email will be sent to the event contact if someone cancels their booking." +msgstr "" + +#: admin/em-options.php:1359 +#@ dbem +msgid "Contact person cancellation subject" +msgstr "" + +#: admin/em-options.php:1360 +#@ dbem +msgid "Contact person cancellation email" +msgstr "" + +#: admin/em-options.php:1362 +#@ dbem +msgid "Confirmed booking email" +msgstr "" + +#: admin/em-options.php:1363 +#@ dbem +msgid "This is sent when a person's booking is confirmed. This will be sent automatically if approvals are required and the booking is approved. If approvals are disabled, this is sent out when a user first submits their booking." +msgstr "" + +#: admin/em-options.php:1365 +#@ dbem +msgid "Booking confirmed email subject" +msgstr "" + +#: admin/em-options.php:1366 +#@ dbem +msgid "Booking confirmed email" +msgstr "" + +#: admin/em-options.php:1368 +#@ dbem +msgid "Pending booking email" +msgstr "" + +#: admin/em-options.php:1369 +#@ dbem +msgid "This will be sent to the person when they first submit their booking. Not relevant if bookings don't require approval." +msgstr "" + +#: admin/em-options.php:1371 +#@ dbem +msgid "Booking pending email subject" +msgstr "" + +#: admin/em-options.php:1372 +#@ dbem +msgid "Booking pending email" +msgstr "" + +#: admin/em-options.php:1374 +#@ dbem +msgid "Rejected booking email" +msgstr "" + +#: admin/em-options.php:1375 +#@ dbem +msgid "This will be sent automatically when a booking is rejected. Not relevant if bookings don't require approval." +msgstr "" + +#: admin/em-options.php:1377 +#@ dbem +msgid "Booking rejected email subject" +msgstr "" + +#: admin/em-options.php:1378 +#@ dbem +msgid "Booking rejected email" +msgstr "" + +#: admin/em-options.php:1381 +#@ dbem +msgid "This will be sent when a user cancels their booking." +msgstr "" + +#: admin/em-options.php:1383 +#@ dbem +msgid "Booking cancelled email subject" +msgstr "" + +#: admin/em-options.php:1384 +#@ dbem +msgid "Booking cancelled email" +msgstr "" + +#: admin/em-options.php:1477 +#@ dbem +msgid "Email Settings" +msgstr "" + +#: admin/em-options.php:1481 +#@ dbem +msgid "Notification sender name" +msgstr "" + +#: admin/em-options.php:1481 +#@ dbem +msgid "Insert the display name of the notification sender." +msgstr "" + +#: admin/em-options.php:1482 +#@ dbem +msgid "Notification sender address" +msgstr "" + +#: admin/em-options.php:1482 +#@ dbem +msgid "Insert the address of the notification sender." +msgstr "" + +#: admin/em-options.php:1488 +#@ dbem +msgid "The port through which you e-mail notifications will be sent. Make sure the firewall doesn't block this port" +msgstr "" + +#: admin/em-options.php:1483 +#@ dbem +msgid "Mail sending method" +msgstr "" + +#: admin/em-options.php:1483 +#@ dbem +msgid "PHP mail function" +msgstr "" + +#: admin/em-options.php:1483 +#@ dbem +msgid "Select the method to send email notification." +msgstr "" + +#: admin/em-options.php:1489 +#@ dbem +msgid "Use SMTP authentication?" +msgstr "" + +#: admin/em-options.php:1489 +#@ dbem +msgid "SMTP authentication is often needed. If you use GMail, make sure to set this parameter to Yes" +msgstr "" + +#: admin/em-options.php:1490 +#@ dbem +msgid "The SMTP host. Usually it corresponds to 'localhost'. If you use GMail, set this value to 'ssl://smtp.gmail.com:465'." +msgstr "" + +#: admin/em-options.php:1491 +#@ dbem +msgid "SMTP username" +msgstr "" + +#: admin/em-options.php:1491 +#@ dbem +msgid "Insert the username to be used to access your SMTP server." +msgstr "" + +#: admin/em-options.php:1492 +#@ dbem +msgid "SMTP password" +msgstr "" + +#: admin/em-options.php:1492 +#@ dbem +msgid "Insert the password to be used to access your SMTP server" +msgstr "" + +#: admin/em-options.php:1457 +#@ dbem +msgid "Maximum width (px)" +msgstr "" + +#: admin/em-options.php:1457 +#@ dbem +msgid "The maximum allowed width for images uploades" +msgstr "" + +#: admin/em-options.php:1459 +#@ dbem +msgid "Maximum height (px)" +msgstr "" + +#: admin/em-options.php:1459 +#@ dbem +msgid "The maximum allowed height for images uploaded, in pixels" +msgstr "" + +#: admin/em-options.php:1461 +#@ dbem +msgid "Maximum size (bytes)" +msgstr "" + +#: admin/em-options.php:1461 +#@ dbem +msgid "The maximum allowed size for images uploaded, in bytes" +msgstr "" + +#: admin/em-options.php:1523 +#@ dbem +msgid "User Capabilities" +msgstr "" + +#: admin/em-options.php:1527 +#@ dbem +msgid "Warning: Changing these values may result in exposing previously hidden information to all users." +msgstr "" + +#: admin/em-options.php:1573 +#@ dbem +msgid "You can now give fine grained control with regards to what your users can do with events. Each user role can have perform different sets of actions." +msgstr "" + +#: admin/em-options.php:1566 +#@ dbem +msgid "User can manage other users individual bookings and event booking settings." +msgstr "" + +#: admin/em-options.php:1567 +#@ dbem +msgid "User can use and manage bookings with their events." +msgstr "" + +#: admin/em-options.php:396 +#@ dbem +msgid "Allow anonymous event submissions?" +msgstr "" + +#: admin/em-options.php:396 +#@ dbem +msgid "Would you like to allow users to submit bookings anonymously? If so, you can use the new [event_form] shortcode or em_event_form() template tag with this enabled." +msgstr "" + +#: admin/em-options.php:397 +#@ dbem +msgid "Guest Default User" +msgstr "" + +#: admin/em-options.php:390 +#: admin/em-options.php:398 +#@ dbem +msgid "Success Message" +msgstr "" + +#: admin/em-options.php:398 +#@ dbem +msgid "Anonymous submitters cannot see or modify their event once submitted. You can customize the success message they see here." +msgstr "" + +#: admin/em-bookings.php:60 +#@ dbem +msgid "Event Bookings Dashboard" +msgstr "" + +#: admin/em-bookings.php:77 +#@ dbem +msgid "Events With Bookings Enabled" +msgstr "" + +#: admin/em-bookings.php:92 +#: admin/em-bookings.php:202 +#: admin/em-bookings.php:447 +#: admin/em-bookings.php:499 +#@ dbem +msgid "You do not have the rights to manage this event." +msgstr "" + +#: admin/em-bookings.php:104 +#, php-format +#@ dbem +msgid "Manage %s Bookings" +msgstr "" + +#: admin/em-bookings.php:165 +#@ dbem +msgid "View/Edit Event" +msgstr "" + +#: admin/em-bookings.php:116 +#@ dbem +msgid "Availability" +msgstr "" + +#: admin/em-bookings.php:117 +#@ dbem +msgid "Spaces confirmed" +msgstr "" + +#: admin/em-bookings.php:154 +#@ dbem +msgid "You do not have the rights to manage this ticket." +msgstr "" + +#: admin/em-bookings.php:164 +#, php-format +#@ dbem +msgid "Ticket for %s" +msgstr "" + +#: admin/em-bookings.php:166 +#@ dbem +msgid "View Event Bookings" +msgstr "" + +#: admin/em-bookings.php:175 +#@ dbem +msgid "Min" +msgstr "" + +#: admin/em-bookings.php:176 +#@ dbem +msgid "Max" +msgstr "" + +#: admin/em-bookings.php:177 +#@ dbem +msgid "Start" +msgstr "" + +#: admin/em-bookings.php:178 +#@ dbem +msgid "End" +msgstr "" + +#: admin/em-bookings.php:210 +#@ dbem +msgid "Edit Booking" +msgstr "" + +#: admin/em-bookings.php:218 +#@ dbem +msgid "Event Details" +msgstr "" + +#: admin/em-bookings.php:229 +#@ dbem +msgid "Date/Time" +msgstr "" + +#: admin/em-bookings.php:242 +#: admin/em-bookings.php:469 +#@ dbem +msgid "Personal Details" +msgstr "" + +#: admin/em-bookings.php:251 +#@ dbem +msgid "Booking Details" +msgstr "" + +#: admin/em-bookings.php:361 +#@ dbem +msgid "Modify Booking" +msgstr "" + +#: admin/em-bookings.php:403 +#@ dbem +msgid "Booking Notes" +msgstr "" + +#: admin/em-bookings.php:406 +#@ dbem +msgid "You can add private notes below for internal reference that only event managers will see." +msgstr "" + +#: admin/em-bookings.php:411 +#@ dbem +msgid "wrote" +msgstr "" + +#: admin/em-bookings.php:457 +#@ dbem +msgid "Manage Person's Booking" +msgstr "" + +#: admin/em-bookings.php:459 +#@ dbem +msgid "Edit User" +msgstr "" + +#: admin/em-bookings.php:481 +#@ dbem +msgid "Past And Present Bookings" +msgstr "" + +#: admin/em-admin.php:124 +#, php-format +#@ dbem +msgid "

                                      Events Manager is ready to go! It is highly recommended you read the Getting Started guide on our site, as well as checking out the Settings Page. Dismiss

                                      " +msgstr "" + +#: admin/em-admin.php:186 +#, php-format +#@ dbem +msgid "This page corresponds to Events Manager events page. Its content will be overriden by Events Manager, although if you include the word CONTENTS (exactly in capitals) and surround it with other text, only CONTENTS will be overwritten. If you want to change the way your events look, go to the settings page. " +msgstr "" + +#: em-functions.php:75 +#, php-format +#@ dbem +msgid "Displaying %s–%s of %s" +msgstr "" + +#: admin/bookings/em-cancelled.php:52 +#: admin/bookings/em-confirmed.php:53 +#: admin/bookings/em-pending.php:67 +#: admin/bookings/em-pending.php:132 +#: admin/bookings/em-person.php:54 +#: admin/bookings/em-person.php:115 +#: admin/bookings/em-rejected.php:52 +#: admin/bookings/em-rejected.php:111 +#: classes/em-bookings-table.php:561 +#: classes/em-bookings-table.php:579 +#: classes/em-bookings-table.php:587 +#@ dbem +msgid "Approve" +msgstr "" + +#: admin/bookings/em-cancelled.php:55 +#: admin/bookings/em-confirmed.php:56 +#: admin/bookings/em-pending.php:70 +#: admin/bookings/em-person.php:57 +#: admin/bookings/em-rejected.php:55 +#@ dbem +msgid "Decline" +msgstr "" + +#: admin/bookings/em-cancelled.php:84 +#: admin/bookings/em-confirmed.php:85 +#: admin/bookings/em-pending.php:99 +#: admin/bookings/em-rejected.php:84 +#@ dbem +msgid "Booker" +msgstr "" + +#: admin/bookings/em-cancelled.php:111 +#: admin/bookings/em-person.php:121 +#@ dbem +msgid "Restore" +msgstr "" + +#: admin/bookings/em-cancelled.php:112 +#: admin/bookings/em-confirmed.php:119 +#: admin/bookings/em-pending.php:135 +#: admin/bookings/em-person.php:126 +#: admin/bookings/em-rejected.php:112 +#: classes/em-bookings-table.php:564 +#: classes/em-bookings-table.php:573 +#: classes/em-bookings-table.php:581 +#: classes/em-bookings-table.php:589 +#@ dbem +msgid "Edit/View" +msgstr "" + +#: admin/bookings/em-cancelled.php:125 +#@ dbem +msgid "No cancelled bookings." +msgstr "" + +#: admin/bookings/em-confirmed.php:114 +#: admin/bookings/em-person.php:118 +#@ dbem +msgid "Unapprove" +msgstr "" + +#: admin/bookings/em-confirmed.php:116 +#: admin/bookings/em-pending.php:133 +#: admin/bookings/em-person.php:124 +#: classes/em-bookings-table.php:562 +#: classes/em-bookings-table.php:571 +#@ dbem +msgid "Reject" +msgstr "" + +#: admin/bookings/em-confirmed.php:131 +#: admin/bookings/em-person.php:139 +#@ dbem +msgid "No confirmed bookings." +msgstr "" + +#: admin/bookings/em-rejected.php:125 +#@ dbem +msgid "No rejected bookings." +msgstr "" + +#: admin/bookings/em-pending.php:147 +#@ dbem +msgid "No pending bookings." +msgstr "" + +#: admin/bookings/em-events.php:32 +#@ dbem +msgid "All Events" +msgstr "" + +#: admin/bookings/em-events.php:35 +#@ dbem +msgid "Future Events" +msgstr "" + +#: classes/em-bookings-table.php:83 +#@ dbem +msgid "Total" +msgstr "" + +#: admin/bookings/em-events.php:69 +#: classes/em-bookings-table.php:388 +#@ default +msgid "Filter" +msgstr "" + +#: admin/em-options.php:672 +#: admin/em-options.php:722 +#: admin/em-options.php:812 +#: classes/em-location-posts-admin.php:56 +#@ dbem +msgid "Town" +msgstr "" + +#: admin/em-admin.php:41 +#: admin/em-help.php:10 +#@ dbem +msgid "Getting Help for Events Manager" +msgstr "" + +#: admin/em-help.php:25 +#@ dbem +msgid "Placeholders for customizing event pages" +msgstr "" + +#: admin/em-help.php:26 +#, php-format +#@ dbem +msgid "In the settings page, you'll find various textboxes where you can edit how event information looks, such as for event and location lists. Using the placeholders below, you can choose what information should be displayed." +msgstr "" + +#: admin/em-admin.php:90 +#: classes/em-people.php:28 +#: events-manager.php:537 +#@ dbem +msgid "Events Manager" +msgstr "" + +#: em-functions.php:238 +#@ default +msgid "Mon" +msgstr "" + +#: em-functions.php:238 +#@ default +msgid "Tue" +msgstr "" + +#: em-functions.php:238 +#@ default +msgid "Wed" +msgstr "" + +#: em-functions.php:238 +#@ default +msgid "Thu" +msgstr "" + +#: em-functions.php:238 +#@ default +msgid "Fri" +msgstr "" + +#: em-functions.php:238 +#@ default +msgid "Sat" +msgstr "" + +#: em-functions.php:238 +#@ default +msgid "Sun" +msgstr "" + +#: buddypress/bp-em-groups.php:133 +#: classes/em-event-post-admin.php:357 +#: classes/em-event-post-admin.php:363 +#@ dbem +msgid "Group Ownership" +msgstr "" + +#: classes/em-event-post-admin.php:190 +#@ dbem +msgid "Bookings Stats" +msgstr "" + +#: templates/forms/event/booking-stats.php:12 +#@ dbem +msgid "Available Spaces" +msgstr "" + +#: templates/forms/event/booking-stats.php:13 +#@ dbem +msgid "Confirmed Spaces" +msgstr "" + +#: templates/forms/event/booking-stats.php:14 +#@ dbem +msgid "Pending Spaces" +msgstr "" + +#: templates/forms/event/booking-stats.php:34 +#@ dbem +msgid "No responses yet!" +msgstr "" + +#: classes/em-event-post-admin.php:244 +#, php-format +#@ dbem +msgid "No categories available, create one here first" +msgstr "" + +#: templates/forms/event-editor.php:168 +#@ dbem +msgid "No image uploaded for this event yet" +msgstr "" + +#: classes/em-event-post-admin.php:194 +#: classes/em-event-post-admin.php:360 +#: classes/em-location-post-admin.php:116 +#@ dbem +msgid "Attributes" +msgstr "" + +#: templates/forms/event/attributes.php:43 +#, php-format +#@ dbem +msgid "You don't have any custom attributes defined in any of your Events Manager template settings. Please add them the settings page" +msgstr "" + +#: templates/forms/event/attributes.php:50 +#: templates/forms/location/attributes.php:50 +#@ dbem +msgid "Depreciated Attributes" +msgstr "" + +#: em-install.php:301 +#@ dbem +msgid "

                                      -------------------------------
                                      Powered by Events Manager - http://wp-events-plugin.com" +msgstr "" + +#: em-install.php:400 +#: em-install.php:408 +#: em-install.php:441 +#, php-format +#@ dbem +msgid "No %s" +msgstr "" + +#: em-debug.php:18 +#: em-install.php:427 +#@ dbem +msgid "
                                    • No events in this location
                                    • " +msgstr "" + +#: em-install.php:442 +#@ dbem +msgid "
                                    • No events in this category
                                    • " +msgstr "" + +#: em-install.php:537 +#@ dbem +msgid "Booking successful, pending confirmation (you will also receive an email once confirmed)." +msgstr "" + +#: em-install.php:538 +#@ dbem +msgid "Booking successful." +msgstr "" + +#: em-install.php:540 +#@ dbem +msgid "You must log in or register to make a booking." +msgstr "" + +#: em-install.php:541 +#@ dbem +msgid "However, there were some problems whilst sending confirmation emails to you and/or the event contact person. You may want to contact them directly and letting them know of this error." +msgstr "" + +#: em-install.php:542 +#@ dbem +msgid "Booking could not be created" +msgstr "" + +#: em-install.php:543 +#@ dbem +msgid "This email already exists in our system, please log in to register to proceed with your booking." +msgstr "" + +#: em-install.php:544 +#@ dbem +msgid "A new user account has been created for you. Please check your email for access details." +msgstr "" + +#: em-install.php:545 +#@ dbem +msgid "There was a problem creating a user account, please contact a website administrator." +msgstr "" + +#: em-install.php:546 +#@ dbem +msgid "You already have booked a seat at this event." +msgstr "" + +#: em-install.php:547 +#@ dbem +msgid "You must request at least one space to book an event." +msgstr "" + +#: admin/em-options.php:1242 +#: em-install.php:554 +#: em-install.php:562 +#@ dbem +msgid "Booking Cancelled" +msgstr "" + +#: em-install.php:556 +#@ dbem +msgid "Booking Pending" +msgstr "" + +#: em-install.php:558 +#@ dbem +msgid "Booking Rejected" +msgstr "" + +#: em-install.php:560 +#@ dbem +msgid "Booking Confirmed" +msgstr "" + +#: em-debug.php:44 +#, php-format +#@ default +msgid "You are in Events Manager debug mode. To turn debug mode off, go to the settings page." +msgstr "" + +#: em-actions.php:31 +#@ dbem +msgid "No ticket id provided" +msgstr "" + +#: em-actions.php:181 +#, php-format +#@ dbem +msgid "%s successfully deleted" +msgstr "" + +#: em-install.php:536 +#, php-format +#@ dbem +msgid "Booking %s" +msgstr "" + +#: events-manager.php:272 +#: events-manager.php:280 +#: events-manager.php:286 +#, php-format +#@ dbem +msgid "You do not have permission to publish %s" +msgstr "" + +#: events-manager.php:276 +#: events-manager.php:284 +#: events-manager.php:290 +#: events-manager.php:296 +#, php-format +#@ dbem +msgid "You do not have permission to edit %s" +msgstr "" + +#: events-manager.php:273 +#: events-manager.php:281 +#: events-manager.php:287 +#, php-format +#@ dbem +msgid "You do not have permission to delete others %s" +msgstr "" + +#: events-manager.php:275 +#: events-manager.php:283 +#: events-manager.php:289 +#, php-format +#@ dbem +msgid "You do not have permission to edit others %s" +msgstr "" + +#: events-manager.php:269 +#, php-format +#@ dbem +msgid "You do not have permission to manage others %s" +msgstr "" + +#: admin/em-options.php:890 +#: admin/em-options.php:929 +#: events-manager.php:269 +#: events-manager.php:270 +#@ dbem +msgid "bookings" +msgstr "" + +#: events-manager.php:274 +#: events-manager.php:282 +#: events-manager.php:288 +#: events-manager.php:295 +#, php-format +#@ dbem +msgid "You do not have permission to delete %s" +msgstr "" + +#: events-manager.php:270 +#, php-format +#@ dbem +msgid "You do not have permission to manage %s" +msgstr "" + +#: admin/em-options.php:443 +#: admin/em-options.php:760 +#: em-posts.php:87 +#: em-posts.php:90 +#@ dbem +msgid "Event Categories" +msgstr "" + +#: admin/em-admin.php:40 +#@ dbem +msgid "Events Manager Settings" +msgstr "" + +#: admin/em-admin.php:40 +#: admin/em-admin.php:206 +#: admin/em-admin.php:214 +#@ dbem +msgid "Settings" +msgstr "" + +#: admin/em-admin.php:41 +#@ dbem +msgid "Help" +msgstr "" + +#: admin/em-bookings.php:333 +#@ dbem +msgid "Tax" +msgstr "" + +#: templates/forms/event/bookings.php:25 +#@ dbem +msgid "You can have single or multiple tickets, where certain tickets become availalble under certain conditions, e.g. early bookings, group discounts, maximum bookings per ticket, etc." +msgstr "" + +#: templates/forms/event/bookings.php:25 +#@ dbem +msgid "Basic HTML is allowed in ticket labels and descriptions." +msgstr "" + +#: admin/em-options.php:1293 +#@ dbem +msgid "Ticket Price (Descending)" +msgstr "" + +#: admin/em-options.php:1294 +#@ dbem +msgid "Ticket Price (Ascending)" +msgstr "" + +#: admin/em-options.php:1295 +#@ dbem +msgid "Ticket Name (Ascending)" +msgstr "" + +#: admin/em-options.php:1296 +#@ dbem +msgid "Ticket Name (Descending)" +msgstr "" + +#: admin/em-options.php:1208 +#@ dbem +msgid "Can users cancel their booking?" +msgstr "" + +#: admin/em-options.php:1208 +#@ dbem +msgid "If enabled, users can cancel their bookings themselves from their bookings page." +msgstr "" + +#: admin/em-options.php:1227 +#@ dbem +msgid "Tax Rate" +msgstr "" + +#: admin/em-options.php:1227 +#@ dbem +msgid "Add a tax rate to your ticket prices (entering 10 will add 10% to the ticket price)." +msgstr "" + +#: admin/em-options.php:1228 +#@ dbem +msgid "Add tax to ticket price?" +msgstr "" + +#: admin/em-options.php:1228 +#@ dbem +msgid "When displaying ticket prices and booking totals, include the tax automatically?" +msgstr "" + +#: admin/em-options.php:1298 +#@ dbem +msgid "Order Tickets By" +msgstr "" + +#: admin/em-options.php:1298 +#@ dbem +msgid "Choose which order your tickets appear." +msgstr "" + +#: admin/em-options.php:1306 +#@ dbem +msgid "No-User Booking Mode" +msgstr "" + +#: admin/em-options.php:1310 +#@ dbem +msgid "By default, when a booking is made by a user, this booking is tied to a user account, if the user is not registered nor logged in and guest bookings are enabled, an account will be created for them." +msgstr "" + +#: admin/em-options.php:1312 +#@ dbem +msgid "Warning : Various features afforded to users with an account will not be available, e.g. viewing bookings. Once you enable this and select a user, modifying these values will prevent older non-user bookings from displaying the correct information." +msgstr "" + +#: admin/em-options.php:1315 +#@ dbem +msgid "Enable No-User Booking Mode?" +msgstr "" + +#: admin/em-options.php:1315 +#@ dbem +msgid "This disables user registrations for bookings." +msgstr "" + +#: admin/em-options.php:1321 +#@ dbem +msgid "Assign bookings to" +msgstr "" + +#: admin/em-options.php:1393 +#@ dbem +msgid "Event Email Templates" +msgstr "" + +#: admin/em-options.php:1403 +#: em-install.php:351 +#@ dbem +msgid "Event Approved" +msgstr "" + +#: admin/em-options.php:1404 +#@ dbem +msgid "An email will be sent to the event owner when their event is approved. Users requiring event approval do not have the publish_events capability." +msgstr "" + +#: admin/em-options.php:1400 +#: admin/em-options.php:1406 +#@ dbem +msgid "Event approved subject" +msgstr "" + +#: admin/em-options.php:1401 +#: admin/em-options.php:1407 +#@ dbem +msgid "Event approved email" +msgstr "" + +#: classes/em-booking.php:360 +#: classes/em-booking.php:368 +#@ dbem +msgid "Guest User" +msgstr "" + +#: classes/em-booking.php:364 +#@ dbem +msgid "Not Supplied" +msgstr "" + +#: classes/em-ticket.php:157 +#@ dbem +msgid "Please enter a valid ticket price e.g. 10.50 (no currency signs)" +msgstr "" + +#: em-install.php:531 +#@ dbem +msgid "This event is fully booked." +msgstr "" + +#: admin/em-admin.php:91 +#@ dbem +msgid "Update Blogs" +msgstr "" + +#: admin/em-admin.php:139 +#, php-format +#@ dbem +msgid "Uh Oh! For some reason WordPress could not create an events page for you (or you just deleted it). Not to worry though, all you have to do is create an empty page, name it whatever you want, and select it as your events page in your settings page. Sorry for the extra step! If you know what you are doing, you may have done this on purpose, if so ignore this message" +msgstr "" + +#: admin/em-admin.php:148 +#@ dbem +msgid "There is a newer version of Events Manager Pro which is required for this current version of Events Manager. Please go to the plugin website and download the latest update." +msgstr "" + +#: admin/em-admin.php:159 +#, php-format +#@ dbem +msgid "MultiSite options have moved here. Dismiss message" +msgstr "" + +#: admin/em-admin.php:171 +#, php-format +#@ dbem +msgid "Whilst they will still appear using placeholders, you need to migrate your location and event images in order for them to appear in your edit forms and media library. Dismiss message" +msgstr "" + +#: admin/em-admin.php:220 +#: admin/em-options.php:1644 +#@ dbem +msgid "Uninstall" +msgstr "" + +#: admin/em-ms-options.php:6 +#@ default +msgid "Update Network" +msgstr "" + +#: admin/em-ms-options.php:24 +#@ default +msgid "To update your network blogs with the latest Events Manager automatically, click the update button below." +msgstr "" + +#: admin/em-ms-options.php:27 +#@ dbem +msgid "Update" +msgstr "" + +#: admin/em-ms-options.php:136 +#: admin/em-options.php:280 +#: admin/em-options.php:1201 +#@ dbem +msgid "General" +msgstr "" + +#: admin/em-ms-options.php:157 +#, php-format +#@ default +msgid "%s belonging to other sub-sites will have an extra slug preppended to it so that your main site can differentiate between its own %s and those belonging to other sites in your network." +msgstr "" + +#: admin/em-ms-options.php:158 +#, php-format +#@ dbem +msgid "When displaying global %s on the main site you have the option of users viewing the %s details on the main site or being directed to the sub-site." +msgstr "" + +#: admin/em-ms-options.php:159 +#, php-format +#@ dbem +msgid "Displays %s from all sites on the network by default. You can still restrict %s by blog using shortcodes and template tags coupled with the blog attribute. Requires global tables to be turned on." +msgstr "" + +#: admin/em-ms-options.php:160 +#, php-format +#@ default +msgid "You must have assigned a %s page in your main blog settings for this to work." +msgstr "" + +#: admin/em-ms-options.php:162 +#: admin/em-ms-options.php:166 +#: admin/em-options.php:1201 +#: admin/em-options.php:1218 +#: admin/em-options.php:1272 +#: admin/em-options.php:1284 +#, php-format +#@ dbem +msgid "%s Options" +msgstr "" + +#: admin/em-ms-options.php:164 +#: admin/em-ms-options.php:173 +#, php-format +#@ dbem +msgid "Link sub-site %s directly to sub-site?" +msgstr "" + +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#, php-format +#@ dbem +msgid "Global %s slug" +msgstr "" + +#: admin/em-ms-options.php:165 +#: admin/em-ms-options.php:174 +#@ dbem +msgid "Example:" +msgstr "" + +#: admin/em-ms-options.php:167 +#@ dbem +msgid "Locations on main blog?" +msgstr "" + +#: admin/em-ms-options.php:167 +#@ dbem +msgid "If you would prefer all your locations to belong to your main blog, users in sub-sites will still be able to create locations, but the actual locations are created and reside in the main blog." +msgstr "" + +#: admin/em-ms-options.php:172 +#, php-format +#@ dbem +msgid "Display global %s on main blog?" +msgstr "" + +#: admin/em-options.php:112 +#@ dbem +msgid "Settings have been reset back to default. Your events, locations and categories have not been modified." +msgstr "" + +#: admin/em-options.php:145 +#: admin/em-options.php:149 +#@ dbem +msgid "Reset Events Manager" +msgstr "" + +#: admin/em-options.php:146 +#@ dbem +msgid "Are you sure you want to reset Events Manager?" +msgstr "" + +#: admin/em-options.php:147 +#@ dbem +msgid "All your settings, including email templates and template formats for Events Manager will be deleted." +msgstr "" + +#: admin/em-options.php:161 +#@ dbem +msgid "Uninstall Events Manager" +msgstr "" + +#: admin/em-options.php:162 +#@ dbem +msgid "Are you sure you want to uninstall Events Manager?" +msgstr "" + +#: admin/em-options.php:163 +#@ dbem +msgid "All your settings and events will be permanently deleted. This cannot be undone." +msgstr "" + +#: admin/em-options.php:164 +#, php-format +#@ dbem +msgid "If you just want to deactivate the plugin, go to your plugins page." +msgstr "" + +#: admin/em-options.php:166 +#@ dbem +msgid "Uninstall and Deactivate" +msgstr "" + +#: admin/em-options.php:281 +#: admin/em-options.php:459 +#: admin/em-options.php:630 +#@ dbem +#@ default +msgid "Pages" +msgstr "" + +#: admin/em-options.php:282 +#@ dbem +msgid "Formats/Layouts" +msgstr "" + +#: admin/em-options.php:284 +#@ dbem +msgid "Booking Options" +msgstr "" + +#: admin/em-options.php:286 +#@ dbem +msgid "Emails" +msgstr "" + +#: admin/em-options.php:300 +#@ dbem +msgid "General Options" +msgstr "" + +#: admin/em-options.php:303 +#@ dbem +msgid "Disable thumbnails?" +msgstr "" + +#: admin/em-options.php:303 +#@ dbem +msgid "Select yes to disable Events Manager from enabling thumbnails (some themes may already have this enabled, which we cannot be turned off here)." +msgstr "" + +#: admin/em-options.php:306 +#: admin/em-options.php:347 +#: admin/em-options.php:364 +#, php-format +#@ dbem +msgid "%s Settings" +msgstr "" + +#: admin/em-options.php:310 +#@ dbem +msgid "Enable recurrence?" +msgstr "" + +#: admin/em-options.php:312 +#@ dbem +msgid "Enable tags?" +msgstr "" + +#: admin/em-options.php:312 +#@ dbem +msgid "Select yes to enable the tag features" +msgstr "" + +#: admin/em-options.php:314 +#@ dbem +msgid "Enable categories?" +msgstr "" + +#: admin/em-options.php:323 +#@ dbem +msgid "If an event does not have a category assigned when editing, this one will be assigned automatically." +msgstr "" + +#: admin/em-options.php:327 +#: admin/em-options.php:356 +#@ dbem +msgid "Custom fields are the same as attributes, except you cannot restrict specific values, users can add any kind of custom field name/value pair. Only available in the WordPress admin area." +msgstr "" + +#: admin/em-options.php:351 +#@ dbem +msgid "Enable locations?" +msgstr "" + +#: admin/em-options.php:351 +#@ dbem +msgid "If you disable locations, bear in mind that you should remove your location page, shortcodes and related placeholders from your formats." +msgstr "" + +#: admin/em-options.php:353 +#@ dbem +msgid "Require locations for events?" +msgstr "" + +#: admin/em-options.php:353 +#@ dbem +msgid "Setting this to no will allow you to submit events without locations. You can use the {no_location}...{/no_location} or {has_location}..{/has_location} conditional placeholder to selectively display location information." +msgstr "" + +#: admin/em-options.php:364 +#: admin/em-options.php:882 +#: admin/em-options.php:1561 +#@ dbem +msgid "Other" +msgstr "" + +#: admin/em-options.php:428 +#@ dbem +msgid "Many themes display extra meta information on post pages such as 'posted by' or 'post date' information, which may not be desired. Usually, page templates contain less clutter." +msgstr "" + +#: admin/em-options.php:429 +#, php-format +#@ dbem +msgid "Be aware that some themes will not work with this option, if so (or you want to make your own changes), you can create a file named single-%s.php as shown on the wordpress codex, and leave this set to Posts." +msgstr "" + +#: admin/em-options.php:430 +#, php-format +#@ default +msgid "By using formats, you can control how your %s are displayed from within the Events Manager Formats tab above without having to edit your theme files." +msgstr "" + +#: admin/em-options.php:433 +#@ dbem +msgid "Permalink Slugs" +msgstr "" + +#: admin/em-options.php:435 +#@ dbem +msgid "You can change the permalink structure of your events, locations, categories and tags here. Be aware that you may want to set up redirects if you change your permalink structures to maintain SEO rankings." +msgstr "" + +#: admin/em-options.php:438 +#: admin/em-options.php:440 +#: admin/em-options.php:443 +#: admin/em-options.php:446 +#, php-format +#@ dbem +msgid "e.g. %s - you can use / seperators too" +msgstr "" + +#: admin/em-options.php:446 +#: admin/em-options.php:850 +#: em-posts.php:50 +#: em-posts.php:53 +#@ dbem +#@ default +msgid "Event Tags" +msgstr "" + +#: admin/em-options.php:455 +#: admin/em-options.php:626 +#: admin/em-options.php:882 +#, php-format +#@ dbem +msgid "%s Pages" +msgstr "" + +#: admin/em-options.php:459 +#: admin/em-options.php:630 +#, php-format +#@ dbem +msgid "Display %s as" +msgstr "" + +#: admin/em-options.php:459 +#: admin/em-options.php:630 +#@ default +msgid "Posts" +msgstr "" + +#: admin/em-options.php:460 +#: admin/em-options.php:549 +#: admin/em-options.php:631 +#: admin/em-options.php:706 +#: admin/em-options.php:778 +#: admin/em-options.php:854 +#@ dbem +msgid "Override with Formats?" +msgstr "" + +#: admin/em-options.php:469 +#: admin/em-options.php:640 +#, php-format +#@ dbem +msgid "%s List/Archives" +msgstr "" + +#: admin/em-options.php:477 +#: admin/em-options.php:644 +#: admin/em-options.php:764 +#, php-format +#@ dbem +msgid "[No %s Page]" +msgstr "" + +#: admin/em-options.php:482 +#@ dbem +msgid "This option allows you to select which page to use as an events page. If you do not select an events page, to display event lists you can enable event archives or use the appropriate shortcodes and/or template tags." +msgstr "" + +#: admin/em-options.php:489 +#@ dbem +msgid "Some WordPress themes don't follow best practices when generating navigation menus, and so the automatic title rewriting feature may cause problems, if your menus aren't working correctly on the event pages, try setting this to 'Yes', and provide an appropriate HTML title format below." +msgstr "" + +#: admin/em-options.php:503 +#: admin/em-options.php:661 +#@ dbem +msgid "Enable Archives?" +msgstr "" + +#: admin/em-options.php:503 +#: admin/em-options.php:661 +#@ dbem +msgid "Allow WordPress post-style archives." +msgstr "" + +#: admin/em-options.php:508 +#@ dbem +msgid "Default event archive ordering" +msgstr "" + +#: admin/em-options.php:513 +#@ dbem +msgid "Order by start date, start time" +msgstr "" + +#: admin/em-options.php:514 +#@ dbem +msgid "Order by name" +msgstr "" + +#: admin/em-options.php:545 +#: admin/em-options.php:702 +#: admin/em-options.php:774 +#@ dbem +msgid "General settings" +msgstr "" + +#: admin/em-options.php:551 +#: admin/em-options.php:707 +#@ dbem +msgid "Include in WordPress Searches?" +msgstr "" + +#: admin/em-options.php:551 +#: admin/em-options.php:707 +#, php-format +#@ dbem +msgid "Allow %s to appear in the built-in search results." +msgstr "" + +#: admin/em-options.php:555 +#: admin/em-options.php:711 +#: admin/em-options.php:801 +#, php-format +#@ dbem +msgid "Default %s list options" +msgstr "" + +#: admin/em-options.php:556 +#: admin/em-options.php:712 +#: admin/em-options.php:802 +#@ dbem +msgid "These can be overriden when using shortcode or template tags." +msgstr "" + +#: admin/em-options.php:645 +#: admin/em-options.php:765 +#: admin/em-options.php:890 +#: admin/em-options.php:927 +#: admin/em-options.php:928 +#: admin/em-options.php:929 +#, php-format +#@ dbem +msgid "%s page" +msgstr "" + +#: admin/em-options.php:645 +#, php-format +#@ dbem +msgid "This option allows you to select which page to use as the %s page. If you do not select no %s page, to display lists you can enable archives or use the appropriate shortcodes and/or template tags." +msgstr "" + +#: admin/em-options.php:649 +#: admin/em-options.php:769 +#, php-format +#@ dbem +msgid "Show %s page in lists?" +msgstr "" + +#: admin/em-options.php:649 +#: admin/em-options.php:769 +#, php-format +#@ dbem +msgid "Check this option if you want the %s page to appear together with other pages in pages lists." +msgstr "" + +#: admin/em-options.php:666 +#: admin/em-options.php:781 +#: admin/em-options.php:857 +#@ dbem +msgid "Default archive ordering" +msgstr "" + +#: admin/em-options.php:671 +#: admin/em-options.php:672 +#: admin/em-options.php:673 +#: admin/em-options.php:721 +#: admin/em-options.php:722 +#: admin/em-options.php:723 +#: admin/em-options.php:811 +#: admin/em-options.php:812 +#: admin/em-options.php:813 +#: admin/em-options.php:898 +#: admin/em-options.php:899 +#: admin/em-options.php:900 +#, php-format +#@ dbem +msgid "Order by %s" +msgstr "" + +#: admin/em-options.php:716 +#: admin/em-options.php:806 +#: admin/em-options.php:893 +#@ dbem +msgid "Default list ordering" +msgstr "" + +#: admin/em-options.php:750 +#: admin/em-options.php:840 +#@ dbem +msgid "List Limits" +msgstr "" + +#: admin/em-options.php:750 +#: admin/em-options.php:840 +#, php-format +#@ dbem +msgid "This will control how many %s are shown on one list by default." +msgstr "" + +#: admin/em-options.php:765 +#, php-format +#@ dbem +msgid "This option allows you to select which page to use as the %s page." +msgstr "" + +#: admin/em-options.php:778 +#@ dbem +msgid "Setting this to yes will make categories display as a page rather than an archive." +msgstr "" + +#: admin/em-options.php:854 +#@ dbem +msgid "tags" +msgstr "" + +#: admin/em-options.php:884 +#@ default +msgid "These pages allow you to provide an event management interface outside the admin area on whatever page you want on your website. Bear in mind that this is overriden by BuddyPress if activated." +msgstr "" + +#: admin/em-options.php:888 +#: classes/em-event-posts-admin.php:135 +#: classes/em-event-posts-admin.php:269 +#@ dbem +msgid "None" +msgstr "" + +#: admin/em-options.php:927 +#@ dbem +msgid "Edit events" +msgstr "" + +#: admin/em-options.php:928 +#@ dbem +msgid "Edit locations" +msgstr "" + +#: admin/em-options.php:929 +#@ dbem +msgid "Manage bookings" +msgstr "" + +#: admin/em-options.php:890 +#@ dbem +msgid "My bookings" +msgstr "" + +#: admin/em-options.php:890 +#@ dbem +msgid "Users can view their bookings for other events on this page." +msgstr "" + +#: admin/em-options.php:967 +#@ dbem +msgid "Search Form Options" +msgstr "" + +#: admin/em-options.php:971 +#@ dbem +msgid "Show text search?" +msgstr "" + +#: admin/em-options.php:972 +#@ dbem +msgid "Text search label" +msgstr "" + +#: admin/em-options.php:972 +#@ dbem +msgid "Appears within the input box." +msgstr "" + +#: admin/em-options.php:973 +#@ dbem +msgid "Show date range?" +msgstr "" + +#: admin/em-options.php:974 +#@ dbem +msgid "Show categories?" +msgstr "" + +#: admin/em-options.php:975 +#@ dbem +msgid "Categories label" +msgstr "" + +#: admin/em-options.php:975 +#: admin/em-options.php:977 +#: admin/em-options.php:979 +#: admin/em-options.php:981 +#: admin/em-options.php:983 +#@ dbem +msgid "Appears as the first default search option." +msgstr "" + +#: admin/em-options.php:976 +#@ dbem +msgid "Show countries?" +msgstr "" + +#: admin/em-options.php:977 +#@ dbem +msgid "All countries text" +msgstr "" + +#: admin/em-options.php:978 +#@ dbem +msgid "Show regions?" +msgstr "" + +#: admin/em-options.php:979 +#@ dbem +msgid "All regions text" +msgstr "" + +#: admin/em-options.php:980 +#@ dbem +msgid "Show states?" +msgstr "" + +#: admin/em-options.php:981 +#@ dbem +msgid "All states text" +msgstr "" + +#: admin/em-options.php:982 +#@ dbem +msgid "Show towns/cities?" +msgstr "" + +#: admin/em-options.php:983 +#@ dbem +msgid "All towns/cities text" +msgstr "" + +#: admin/em-options.php:991 +#@ dbem +msgid "Date/Time formats" +msgstr "" + +#: admin/em-options.php:993 +#, php-format +#@ dbem +msgid "Date and Time formats follow the WordPress time formatting conventions" +msgstr "" + +#: admin/em-options.php:996 +#@ dbem +msgid "Date Format" +msgstr "" + +#: admin/em-options.php:996 +#: admin/em-options.php:998 +#, php-format +#@ default +msgid "For use with the %s placeholder" +msgstr "" + +#: admin/em-options.php:997 +#@ dbem +msgid "Date Seperator" +msgstr "" + +#: admin/em-options.php:997 +#: admin/em-options.php:999 +#, php-format +#@ dbem +msgid "For when start/end %s are present, this will seperate the two (include spaces here if necessary)." +msgstr "" + +#: admin/em-options.php:997 +#@ dbem +msgid "dates" +msgstr "" + +#: admin/em-options.php:998 +#@ dbem +msgid "Time Format" +msgstr "" + +#: admin/em-options.php:999 +#@ dbem +msgid "Time Seperator" +msgstr "" + +#: admin/em-options.php:999 +#@ dbem +msgid "times" +msgstr "" + +#: admin/em-options.php:1135 +#@ dbem +msgid "Tags format" +msgstr "" + +#: admin/em-options.php:1138 +#@ dbem +msgid "Tag" +msgstr "" + +#: admin/em-options.php:1140 +#: admin/em-options.php:1141 +#@ dbem +msgid "tag" +msgstr "" + +#: admin/em-options.php:1140 +#@ dbem +msgid "The format of a single tag page title." +msgstr "" + +#: admin/em-options.php:1141 +#@ dbem +msgid "The format of a single tag page." +msgstr "" + +#: admin/em-options.php:1146 +#@ dbem +msgid "The format of the events the list inserted in the tag page through the #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS element." +msgstr "" + +#: admin/em-options.php:1148 +#@ dbem +msgid "The message to be displayed in the list generated by #_TAGNEXTEVENTS, #_TAGNEXTEVENTS and #_TAGALLEVENTS when no events are available." +msgstr "" + +#: admin/em-options.php:1218 +#@ dbem +msgid "Pricing" +msgstr "" + +#: admin/em-options.php:1272 +#@ dbem +msgid "Booking Form" +msgstr "" + +#: admin/em-options.php:1284 +#@ dbem +msgid "Ticket" +msgstr "" + +#: admin/em-options.php:1311 +#@ dbem +msgid "The option below allows you to disable user accounts and assign all bookings to a parent user, yet you will still see the supplied booking personal information for each booking. When this mode is enabled, extra booking information about the person is stored alongside the booking record rather than as a WordPress user." +msgstr "" + +#: admin/em-options.php:1321 +#@ dbem +msgid "Choose a parent user to assign bookings to. People making their booking will be unaware of this and will never have access to those user details. This should be a subscriber user you do not use to log in with yourself." +msgstr "" + +#: admin/em-options.php:1348 +#@ dbem +msgid "Check this option if you want to prevent the WordPress registration email from going out when a user anonymously books an event." +msgstr "" + +#: admin/em-options.php:1396 +#@ dbem +msgid "Event Submitted" +msgstr "" + +#: admin/em-options.php:1397 +#@ dbem +msgid "An email will be sent to the an administrator of your choice when an event is submitted and pending approval." +msgstr "" + +#: admin/em-options.php:1399 +#@ dbem +msgid "Administrator Email" +msgstr "" + +#: admin/em-options.php:1399 +#@ dbem +msgid "If left blank, no email will be sent. Seperate emails with commas for more than one email." +msgstr "" + +#: admin/em-options.php:381 +#@ dbem +msgid "Event Submission Forms" +msgstr "" + +#: admin/em-options.php:385 +#, php-format +#@ dbem +msgid "You can allow users to publicly submit events on your blog by using the %s shortcode, and enabling anonymous submissions below." +msgstr "" + +#: admin/em-options.php:388 +#@ dbem +msgid "Use Visual Editor?" +msgstr "" + +#: admin/em-options.php:388 +#@ dbem +msgid "Users can now use the WordPress editor for easy HTML entry in the submission form." +msgstr "" + +#: admin/em-options.php:389 +#@ dbem +msgid "Show form again?" +msgstr "" + +#: admin/em-options.php:389 +#@ dbem +msgid "When a user submits their event, you can display a new event form again." +msgstr "" + +#: admin/em-options.php:390 +#@ dbem +msgid "Customize the message your user sees when they submitted their event." +msgstr "" + +#: admin/em-options.php:393 +#@ dbem +msgid "Anonymous event submissions" +msgstr "" + +#: admin/em-options.php:397 +#@ dbem +msgid "Events require a user to own them. In order to allow events to be submitted anonymously you need to assign that event a specific user. We recommend you create a \"Anonymous\" subscriber with a very good password and use that. Guests will have the same event permissions as this user when submitting." +msgstr "" + +#: admin/em-options.php:1453 +#@ dbem +msgid "Image Sizes" +msgstr "" + +#: admin/em-options.php:1484 +#@ dbem +msgid "Send HTML Emails?" +msgstr "" + +#: admin/em-options.php:1484 +#@ dbem +msgid "If set to yes, your emails will be sent in HTML format, otherwise plaintext." +msgstr "" + +#: admin/em-options.php:1532 +#: admin/em-options.php:1542 +#: admin/em-options.php:1550 +#: admin/em-options.php:1561 +#, php-format +#@ dbem +msgid "%s Capabilities" +msgstr "" + +#: admin/em-options.php:1534 +#: admin/em-options.php:1544 +#: admin/em-options.php:1552 +#, php-format +#@ dbem +msgid "Users can publish %s and skip any admin approval" +msgstr "" + +#: admin/em-options.php:1535 +#: admin/em-options.php:1545 +#: admin/em-options.php:1553 +#, php-format +#@ dbem +msgid "User can delete other users %s" +msgstr "" + +#: admin/em-options.php:1536 +#: admin/em-options.php:1546 +#: admin/em-options.php:1554 +#, php-format +#@ dbem +msgid "User can edit other users %s" +msgstr "" + +#: admin/em-options.php:1537 +#: admin/em-options.php:1547 +#: admin/em-options.php:1555 +#, php-format +#@ dbem +msgid "User can delete their own %s" +msgstr "" + +#: admin/em-options.php:1538 +#: admin/em-options.php:1548 +#: admin/em-options.php:1556 +#, php-format +#@ dbem +msgid "User can create and edit %s" +msgstr "" + +#: admin/em-options.php:1539 +#: admin/em-options.php:1557 +#, php-format +#@ dbem +msgid "User can view private %s" +msgstr "" + +#: admin/em-options.php:1542 +#: em-posts.php:187 +#@ dbem +msgid "Recurring Event" +msgstr "" + +#: admin/em-options.php:1544 +#: admin/em-options.php:1545 +#: admin/em-options.php:1546 +#: admin/em-options.php:1547 +#: admin/em-options.php:1548 +#: events-manager.php:280 +#: events-manager.php:281 +#: events-manager.php:282 +#: events-manager.php:283 +#: events-manager.php:284 +#@ dbem +msgid "recurring events" +msgstr "" + +#: admin/em-options.php:1558 +#@ dbem +msgid "User can use other user locations for their events." +msgstr "" + +#: admin/em-options.php:1563 +#, php-format +#@ dbem +msgid "User can delete %s categories and tags." +msgstr "" + +#: admin/em-options.php:1564 +#, php-format +#@ dbem +msgid "User can edit %s categories and tags." +msgstr "" + +#: admin/em-options.php:1568 +#@ dbem +msgid "User can upload images along with their events and locations." +msgstr "" + +#: admin/em-options.php:1632 +#: admin/em-options.php:1642 +#@ dbem +msgid "Uninstall/Reset" +msgstr "" + +#: admin/em-options.php:1643 +#@ dbem +msgid "Use the buttons below to uninstall Events Manager completely from your system or reset Events Manager to original settings and keep your event data." +msgstr "" + +#: admin/em-options.php:1645 +#@ dbem +msgid "Reset" +msgstr "" + +#: buddypress/bp-em-activity.php:58 +#, php-format +#@ dbem +msgid "%s added the event %s to %s." +msgstr "" + +#: buddypress/bp-em-core.php:53 +#, php-format +#@ dbem +msgid "Search %s..." +msgstr "" + +#: buddypress/screens/my-events.php:47 +#: em-events.php:150 +#@ dbem +msgid "Reschedule Events" +msgstr "" + +#: classes/em-categories-taxonomy.php:55 +#, php-format +#@ dbem +msgid "Choose a color for your category. You can access this using the %s placeholder." +msgstr "" + +#: classes/em-categories-taxonomy.php:66 +#@ dbem +msgid "Choose/Upload Image" +msgstr "" + +#: classes/em-categories-taxonomy.php:67 +#, php-format +#@ dbem +msgid "Choose an image for your category, which can be displayed using the %s placeholder." +msgstr "" + +#: classes/em-event-post-admin.php:42 +#, php-format +#@ dbem +msgid "If you update this event data and save, it could get overwritten if you edit the recurring event template. To make it an independent, detach it." +msgstr "" + +#: classes/em-event-post-admin.php:43 +#, php-format +#@ dbem +msgid "To manage the whole set, edit the recurring event template." +msgstr "" + +#: classes/em-event-post-admin.php:83 +#@ dbem +msgid "Your event details are incorrect and recurrences cannot be created, please correct these errors first:" +msgstr "" + +#: classes/em-event-post-admin.php:85 +#: classes/em-location-post-admin.php:59 +#, php-format +#@ dbem +msgid "Your %s details are incorrect and cannot be published, please correct these errors first:" +msgstr "" + +#: classes/em-event-post-admin.php:197 +#: classes/em-event-post-admin.php:366 +#@ dbem +msgid "Site Categories" +msgstr "" + +#: classes/em-event-post-admin.php:350 +#@ dbem +msgid "Recurrences" +msgstr "" + +#: classes/em-event-post.php:94 +#: classes/em-event-post.php:97 +#: classes/em-event-post.php:102 +#: classes/em-event-post.php:113 +#: classes/em-event-post.php:116 +#: classes/em-event-post.php:121 +#, php-format +#@ default +msgid "View all posts in %s" +msgstr "" + +#: classes/em-event-posts-admin.php:74 +#@ default +msgid "View all categories" +msgstr "" + +#: classes/em-event-posts-admin.php:111 +#: classes/em-event-posts-admin.php:248 +#@ dbem +#@ default +msgid "Date and Time" +msgstr "" + +#: classes/em-event-posts-admin.php:112 +#: classes/em-event-posts-admin.php:249 +#@ dbem +msgid "Owner" +msgstr "" + +#: classes/em-event-posts-admin.php:168 +#: templates/buddypress/group-events.php:133 +#: templates/buddypress/my-group-events.php:127 +#: templates/tables/events.php:134 +#@ dbem +msgid "Edit Recurring Events" +msgstr "" + +#: classes/em-event-posts-admin.php:168 +#@ dbem +msgid "Detach" +msgstr "" + +#: classes/em-event-posts-admin.php:181 +#, php-format +#@ dbem +msgid "Duplicate %s" +msgstr "" + +#: classes/em-event-posts-admin.php:181 +#@ dbem +msgid "Duplicate" +msgstr "" + +#: classes/em-event-posts-admin.php:213 +#, php-format +#@ dbem +msgid "Modifications to these events will cause all recurrences of each event to be deleted and recreated and previous bookings will be deleted! You can edit individual recurrences and detach them from recurring events by visiting the events page." +msgstr "" + +#: classes/em-event.php:440 +#@ default +msgid "Event name" +msgstr "" + +#: classes/em-event.php:479 +#@ dbem +msgid "Since the event is repeated, you must specify an event end date greater than the start date." +msgstr "" + +#: classes/em-event.php:560 +#: classes/em-event.php:563 +#@ dbem +#@ default +msgid "There were some errors saving your location." +msgstr "" + +#: classes/em-event.php:560 +#, php-format +#@ default +msgid "It will not be displayed on the website listings, to correct this you must edit your location directly." +msgstr "" + +#: classes/em-event.php:606 +#: classes/em-location.php:360 +#, php-format +#@ dbem +msgid "Something went wrong saving your %s to the index table. Please inform a site administrator about this." +msgstr "" + +#: classes/em-event.php:611 +#: classes/em-event.php:626 +#: classes/em-location.php:365 +#: classes/em-location.php:372 +#, php-format +#@ dbem +msgid "Successfully saved %s" +msgstr "" + +#: classes/em-event.php:619 +#: classes/em-location.php:370 +#, php-format +#@ dbem +msgid "Something went wrong updating your %s to the index table. Please inform a site administrator about this." +msgstr "" + +#: admin/em-bookings.php:106 +#: classes/em-event.php:1233 +#: classes/em-location.php:661 +#, php-format +#@ dbem +msgid "Edit %s" +msgstr "" + +#: classes/em-event.php:1549 +#@ dbem +msgid "Event detached." +msgstr "" + +#: classes/em-event.php:1549 +#@ dbem +msgid "Undo" +msgstr "" + +#: classes/em-event.php:1553 +#@ dbem +msgid "Event could not be detached." +msgstr "" + +#: classes/em-event.php:1567 +#@ dbem +msgid "Event re-attached to recurrence." +msgstr "" + +#: classes/em-event.php:1570 +#@ dbem +msgid "Event could not be attached." +msgstr "" + +#: classes/em-location.php:242 +#: widgets/em-locations.php:22 +#@ default +#@ dbem +msgid "Location name" +msgstr "" + +#: em-install.php:309 +#@ dbem +msgid "A new event has been submitted by #_CONTACTNAME.
                                      Name : #_EVENTNAME
                                      Date : #_EVENTDATES
                                      Time : #_EVENTTIMES
                                      Please visit #_EDITEVENTURL to review this event for approval." +msgstr "" + +#: em-install.php:339 +#@ dbem +msgid "All Cities/Towns" +msgstr "" + +#: em-install.php:343 +#: em-install.php:346 +#@ dbem +msgid "You have successfully submitted your event, which will be published pending approval." +msgstr "" + +#: em-install.php:349 +#@ dbem +msgid "Submitted Event Awaiting Approval" +msgstr "" + +#: em-install.php:399 +#@ dbem +msgid "All Day" +msgstr "" + +#: em-install.php:449 +#@ dbem +msgid "
                                    • No events in this tag
                                    • " +msgstr "" + +#: em-install.php:552 +#@ dbem +msgid "New Booking" +msgstr "" + +#: em-posts.php:51 +#: em-posts.php:54 +#@ default +#@ dbem +msgid "Event Tag" +msgstr "" + +#: em-posts.php:55 +#@ dbem +msgid "Search Event Tags" +msgstr "" + +#: em-posts.php:56 +#@ dbem +msgid "Popular Event Tags" +msgstr "" + +#: em-posts.php:57 +#@ dbem +msgid "All Event Tags" +msgstr "" + +#: em-posts.php:58 +#@ dbem +msgid "Parent Event Tags" +msgstr "" + +#: em-posts.php:59 +#@ dbem +msgid "Parent Event Tag:" +msgstr "" + +#: em-posts.php:60 +#@ dbem +msgid "Edit Event Tag" +msgstr "" + +#: em-posts.php:61 +#@ dbem +msgid "Update Event Tag" +msgstr "" + +#: em-posts.php:62 +#@ dbem +msgid "Add New Event Tag" +msgstr "" + +#: em-posts.php:63 +#@ dbem +msgid "New Event Tag Name" +msgstr "" + +#: em-posts.php:64 +#@ dbem +msgid "Seperate event tags with commas" +msgstr "" + +#: em-posts.php:65 +#: em-posts.php:102 +#@ dbem +msgid "Add or remove events" +msgstr "" + +#: em-posts.php:66 +#@ dbem +msgid "Choose from most used event tags" +msgstr "" + +#: em-posts.php:88 +#: em-posts.php:91 +#@ dbem +msgid "Event Category" +msgstr "" + +#: em-posts.php:92 +#@ dbem +msgid "Search Event Categories" +msgstr "" + +#: em-posts.php:93 +#@ dbem +msgid "Popular Event Categories" +msgstr "" + +#: em-posts.php:94 +#@ dbem +msgid "All Event Categories" +msgstr "" + +#: em-posts.php:95 +#@ dbem +msgid "Parent Event Categories" +msgstr "" + +#: em-posts.php:96 +#@ dbem +msgid "Parent Event Category:" +msgstr "" + +#: em-posts.php:97 +#@ dbem +msgid "Edit Event Category" +msgstr "" + +#: em-posts.php:98 +#@ dbem +msgid "Update Event Category" +msgstr "" + +#: em-posts.php:99 +#@ dbem +msgid "Add New Event Category" +msgstr "" + +#: em-posts.php:100 +#@ dbem +msgid "New Event Category Name" +msgstr "" + +#: em-posts.php:101 +#@ dbem +msgid "Seperate event categories with commas" +msgstr "" + +#: em-posts.php:103 +#@ dbem +msgid "Choose from most used event categories" +msgstr "" + +#: em-posts.php:138 +#@ dbem +msgid "Display events on your blog." +msgstr "" + +#: em-posts.php:144 +#@ dbem +msgid "Add New Event" +msgstr "" + +#: em-posts.php:147 +#@ dbem +msgid "New Event" +msgstr "" + +#: em-posts.php:148 +#: em-posts.php:194 +#: em-posts.php:241 +#: templates/tables/locations.php:62 +#@ dbem +#@ default +msgid "View" +msgstr "" + +#: em-posts.php:149 +#@ dbem +msgid "View Event" +msgstr "" + +#: em-posts.php:151 +#@ dbem +msgid "No Events Found" +msgstr "" + +#: em-posts.php:152 +#@ dbem +msgid "No Events Found in Trash" +msgstr "" + +#: em-posts.php:153 +#@ dbem +msgid "Parent Event" +msgstr "" + +#: em-posts.php:183 +#: em-posts.php:186 +#: em-posts.php:188 +#@ dbem +msgid "Recurring Events" +msgstr "" + +#: em-posts.php:184 +#@ dbem +msgid "Recurring Events Template" +msgstr "" + +#: em-posts.php:189 +#: em-posts.php:195 +#@ dbem +msgid "Add Recurring Event" +msgstr "" + +#: em-posts.php:190 +#@ dbem +msgid "Add New Recurring Event" +msgstr "" + +#: em-posts.php:192 +#@ dbem +msgid "Edit Recurring Event" +msgstr "" + +#: em-posts.php:193 +#@ dbem +msgid "New Recurring Event" +msgstr "" + +#: em-posts.php:196 +#@ dbem +msgid "Search Recurring Events" +msgstr "" + +#: em-posts.php:197 +#@ dbem +msgid "No Recurring Events Found" +msgstr "" + +#: em-posts.php:198 +#@ dbem +msgid "No Recurring Events Found in Trash" +msgstr "" + +#: em-posts.php:199 +#@ dbem +msgid "Parent Recurring Event" +msgstr "" + +#: em-posts.php:231 +#@ dbem +msgid "Display locations on your blog." +msgstr "" + +#: em-posts.php:237 +#@ dbem +msgid "Add New Location" +msgstr "" + +#: em-posts.php:240 +#@ dbem +msgid "New Location" +msgstr "" + +#: em-posts.php:242 +#@ dbem +msgid "View Location" +msgstr "" + +#: em-posts.php:243 +#@ dbem +msgid "Search Locations" +msgstr "" + +#: em-posts.php:244 +#@ dbem +msgid "No Locations Found" +msgstr "" + +#: em-posts.php:245 +#@ dbem +msgid "No Locations Found in Trash" +msgstr "" + +#: em-posts.php:246 +#@ dbem +msgid "Parent Location" +msgstr "" + +#: em-template-tags.php:297 +#@ dbem +msgid "You must log in to view and manage your events." +msgstr "" + +#: em-template-tags.php:388 +#@ dbem +msgid "You must log in to view and manage your locations." +msgstr "" + +#: em-template-tags.php:406 +#@ dbem +msgid "You must log in to view and manage your bookings." +msgstr "" + +#: events-manager.php:231 +#@ dbem +msgid "Are you sure you want to detach this event? By doing so, this event will be independent of the recurring set of events." +msgstr "" + +#: events-manager.php:232 +#@ dbem +msgid "This cannot be undone." +msgstr "" + +#: events-manager.php:232 +#@ dbem +msgid "All events will be moved to trash." +msgstr "" + +#: events-manager.php:233 +#@ dbem +msgid "Are you sure you want to delete all recurrences of this event?" +msgstr "" + +#: events-manager.php:277 +#: events-manager.php:291 +#, php-format +#@ dbem +msgid "You cannot read private %s" +msgstr "" + +#: events-manager.php:292 +#, php-format +#@ dbem +msgid "You cannot view others %s" +msgstr "" + +#: events-manager.php:298 +#@ dbem +msgid "You do not have permission to upload images" +msgstr "" + +#: templates/forms/event/attributes.php:51 +#@ default +msgid "If you see any attributes under here, that means they're not used in Events Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "" + +#: templates/forms/event/group.php:26 +#@ dbem +msgid "No groups defined yet." +msgstr "" + +#: templates/forms/event/location.php:9 +#@ default +msgid "This event does not have a physical location." +msgstr "" + +#: templates/forms/event/location.php:31 +#@ default +msgid "No Location" +msgstr "" + +#: templates/forms/event/recurring-when.php:48 +#: templates/forms/event/when-with-recurring.php:13 +#@ dbem +msgid "Recurrences span from " +msgstr "" + +#: templates/forms/event/recurring-when.php:56 +#: templates/forms/event/when-with-recurring.php:23 +#@ dbem +msgid "Events start from" +msgstr "" + +#: templates/forms/event/recurring-when.php:60 +#: templates/forms/event/when-with-recurring.php:28 +#: templates/forms/event/when.php:20 +#@ dbem +msgid "All day" +msgstr "" + +#: templates/forms/event/recurring-when.php:63 +#: templates/forms/event/when-with-recurring.php:69 +#@ dbem +msgid "Each event lasts" +msgstr "" + +#: templates/forms/event/recurring-when.php:65 +#: templates/forms/event/when-with-recurring.php:71 +#@ dbem +msgid "day(s)" +msgstr "" + +#: templates/forms/event/when-with-recurring.php:11 +#@ dbem +msgid "This is a recurring event." +msgstr "" + +#: templates/forms/event/when-with-recurring.php:14 +#: templates/forms/event/when.php:8 +#@ dbem +msgid "From " +msgstr "" + +#: templates/forms/event/when-with-recurring.php:24 +#: templates/forms/event/when.php:16 +#@ dbem +msgid "Event starts at" +msgstr "" + +#: templates/forms/event-editor.php:163 +#@ dbem +msgid "Event Image" +msgstr "" + +#: templates/forms/location-editor.php:52 +#@ dbem +msgid "Details about the location." +msgstr "" + +#: templates/forms/location-editor.php:85 +#@ dbem +msgid "Location Image" +msgstr "" + +#: templates/tables/locations.php:76 +#@ dbem +msgid "No locations have been inserted yet!" +msgstr "" + +#: widgets/em-locations.php:21 +#@ dbem +msgid "Event start date/time, location name" +msgstr "" + +#: admin/em-admin.php:179 +#@ em-pro +msgid "Dev Mode active: Just a friendly reminder that you are updating to development versions. Only admins see this message, and it will go away when you disable this here in your settings." +msgstr "" + +#: admin/em-bookings.php:67 +#@ dbem +msgid "Recent Bookings" +msgstr "" + +#: admin/em-bookings.php:105 +#, php-format +#@ dbem +msgid "View %s" +msgstr "" + +#: admin/em-bookings.php:108 +#@ dbem +msgid "Export CSV" +msgstr "" + +#: admin/em-bookings.php:119 +#@ dbem +msgid "Available spaces" +msgstr "" + +#: admin/em-bookings.php:264 +#@ dbem +msgid "Change" +msgstr "" + +#: admin/em-bookings.php:265 +#@ dbem +msgid "Resend Email" +msgstr "" + +#: admin/em-bookings.php:279 +#@ dbem +msgid "Send Email" +msgstr "" + +#: admin/em-bookings.php:280 +#: admin/em-bookings.php:366 +#@ dbem +msgid "Submit Changes" +msgstr "" + +#: admin/em-bookings.php:327 +#@ dbem +msgid "Total Price" +msgstr "" + +#: admin/em-bookings.php:328 +#, php-format +#@ dbem +msgid "%d Spaces" +msgstr "" + +#: admin/em-bookings.php:338 +#@ dbem +msgid "Total Price (inc. tax)" +msgstr "" + +#: admin/em-bookings.php:364 +#@ dbem +msgid "Notes: Ticket availability not taken into account (i.e. you can overbook). Emails are not resent automatically." +msgstr "" + +#: admin/em-options.php:122 +#: admin/em-options.php:132 +#@ dbem +msgid "If there are any new updates, you should now see them in your Plugins or Updates admin pages." +msgstr "" + +#: admin/em-options.php:132 +#@ dbem +msgid "Checking for dev versions." +msgstr "" + +#: admin/em-options.php:326 +#: admin/em-options.php:355 +#, php-format +#@ dbem +msgid "Enable %s attributes?" +msgstr "" + +#: admin/em-options.php:327 +#: admin/em-options.php:356 +#, php-format +#@ dbem +msgid "Enable %s custom fields?" +msgstr "" + +#: admin/em-options.php:329 +#: admin/em-options.php:358 +#, php-format +#@ dbem +msgid "%s Attributes" +msgstr "" + +#: admin/em-options.php:358 +#, php-format +#@ dbem +msgid "You can also add location attributes here, one per line in this format #_LATT{key}. They will not appear on location pages unless you insert them into another template below, but you may want to store extra information about an event for other uses. More information on placeholders." +msgstr "" + +#: admin/em-options.php:461 +#: admin/em-options.php:632 +#@ dbem +msgid "Enable Comments?" +msgstr "" + +#: admin/em-options.php:461 +#: admin/em-options.php:632 +#, php-format +#@ dbem +msgid "If you would like to disable comments entirely, disable this, otherwise you can disable comments on each single %s. Note that %s with comments enabled will still be until you resave them." +msgstr "" + +#: admin/em-options.php:496 +#: admin/em-options.php:654 +#, php-format +#@ dbem +msgid "WordPress %s Archives" +msgstr "" + +#: admin/em-options.php:497 +#: admin/em-options.php:655 +#, php-format +#@ default +msgid "%s custom post types can have archives, just like normal WordPress posts. If enabled, should you visit your base slug url %s and you will see an post-formatted archive of previous %s" +msgstr "" + +#: admin/em-options.php:498 +#, php-format +#@ default +msgid "Note that assigning a %s page above will override this archive if the URLs collide (which is the default settings, and is recommended). You can have both at the same time, but you must ensure that your page and %s slugs are different." +msgstr "" + +#: admin/em-options.php:656 +#, php-format +#@ default +msgid "Note that assigning a %s page above will override this archive if the URLs collide (which is the default settings, and is recommended for maximum plugin compatability). You can have both at the same time, but you must ensure that your page and %s slugs are different." +msgstr "" + +#: admin/em-options.php:899 +#@ dbem +msgid "Start Date" +msgstr "" + +#: admin/em-options.php:900 +#: classes/em-bookings-table.php:82 +#@ dbem +msgid "Booking Date" +msgstr "" + +#: admin/em-options.php:926 +#@ dbem +msgid "Front-end management pages" +msgstr "" + +#: admin/em-options.php:927 +#: admin/em-options.php:928 +#, php-format +#@ dbem +msgid "Users can view, add and edit their %s on this page." +msgstr "" + +#: admin/em-options.php:929 +#, php-format +#@ dbem +msgid "Users can manage their %s on this page." +msgstr "" + +#: admin/em-options.php:1000 +#@ dbem +msgid "All Day Message" +msgstr "" + +#: admin/em-options.php:1000 +#, php-format +#@ dbem +msgid "If an event lasts all day, this text will show if using the %s placeholder" +msgstr "" + +#: admin/em-options.php:1001 +#@ dbem +msgid "Use 24h Format?" +msgstr "" + +#: admin/em-options.php:1001 +#@ dbem +msgid "When creating events, would you like your times to be shown in 24 hour format?" +msgstr "" + +#: admin/em-options.php:1017 +#@ dbem +msgid "Link directly to event on day with single event?" +msgstr "" + +#: admin/em-options.php:1017 +#@ dbem +msgid "If a calendar day has only one event, you can force a direct link to the event (recommended to avoid duplicate content)." +msgstr "" + +#: admin/em-options.php:1020 +#@ dbem +msgid "Calendar Day Event List Settings" +msgstr "" + +#: admin/em-options.php:1027 +#@ dbem +msgid "Order by event name, then event start time" +msgstr "" + +#: admin/em-options.php:1028 +#@ dbem +msgid "Order by event start time, then event name" +msgstr "" + +#: admin/em-options.php:1059 +#@ dbem +msgid "Calendar events/day limit" +msgstr "" + +#: admin/em-options.php:1059 +#@ dbem +msgid "Limits the number of events on each calendar day. Leave blank for no limit." +msgstr "" + +#: admin/em-options.php:1060 +#@ dbem +msgid "More Events message" +msgstr "" + +#: admin/em-options.php:1060 +#@ dbem +msgid "Text with link to calendar day page with all events for that day if there are more events than the limit above, leave blank for no link as the day number is also a link." +msgstr "" + +#: admin/em-options.php:1224 +#@ dbem +msgid "Thousands Seperator" +msgstr "" + +#: admin/em-options.php:1225 +#@ dbem +msgid "Decimal Point" +msgstr "" + +#: admin/em-options.php:1226 +#@ dbem +msgid "Currency Format" +msgstr "" + +#: admin/em-options.php:1226 +#@ dbem +msgid "Choose how prices are displayed. @ will be replaced by the currency symbol, and # will be replaced by the number." +msgstr "" + +#: admin/em-options.php:1236 +#@ dbem +msgid "Customize Feedback Messages" +msgstr "" + +#: admin/em-options.php:1238 +#@ dbem +msgid "Below you will find texts that will be displayed to users in various areas during the bookings process, particularly on booking forms." +msgstr "" + +#: admin/em-options.php:1240 +#@ dbem +msgid "My Bookings messages" +msgstr "" + +#: admin/em-options.php:1242 +#@ dbem +msgid "When a user cancels their booking, this message will be displayed confirming the cancellation." +msgstr "" + +#: admin/em-options.php:1243 +#@ dbem +msgid "Booking Cancellation Warning" +msgstr "" + +#: admin/em-options.php:1243 +#@ dbem +msgid "When a user chooses to cancel a booking, this warning is displayed for them to confirm." +msgstr "" + +#: admin/em-options.php:1245 +#@ dbem +msgid "Booking form texts/messages" +msgstr "" + +#: admin/em-options.php:1247 +#@ dbem +msgid "Bookings disabled" +msgstr "" + +#: admin/em-options.php:1247 +#@ dbem +msgid "An event with no bookings." +msgstr "" + +#: admin/em-options.php:1248 +#@ dbem +msgid "Bookings closed" +msgstr "" + +#: admin/em-options.php:1248 +#@ dbem +msgid "Bookings have closed (e.g. event has started)." +msgstr "" + +#: admin/em-options.php:1249 +#@ dbem +msgid "Fully booked" +msgstr "" + +#: admin/em-options.php:1249 +#@ dbem +msgid "Event is fully booked." +msgstr "" + +#: admin/em-options.php:1250 +#@ dbem +msgid "Already attending" +msgstr "" + +#: admin/em-options.php:1250 +#@ dbem +msgid "If already attending and double bookings are disabled, this message will be displayed, followed by a link to the users booking page." +msgstr "" + +#: admin/em-options.php:1251 +#@ dbem +msgid "Manage bookings link text" +msgstr "" + +#: admin/em-options.php:1251 +#@ dbem +msgid "Link text used for link to user bookings." +msgstr "" + +#: admin/em-options.php:1260 +#@ dbem +msgid "Email Exists" +msgstr "" + +#: admin/em-options.php:1260 +#@ dbem +msgid "When a guest tries to book using an email registered with a user account." +msgstr "" + +#: admin/em-options.php:1277 +#@ dbem +msgid "Submit button text" +msgstr "" + +#: admin/em-options.php:1277 +#, php-format +#@ dbem +msgid "The text used by the submit button. To use an image instead, enter the full url starting with %s or %s." +msgstr "" + +#: admin/em-options.php:1344 +#@ dbem +msgid "You can disable this email by leaving the subject blank." +msgstr "" + +#: admin/em-options.php:1346 +#@ dbem +msgid "For multiple emails, seperate by commas (e.g. email1@test.com,email2@test.com,etc.)" +msgstr "" + +#: admin/em-options.php:1458 +#@ dbem +msgid "Minimum width (px)" +msgstr "" + +#: admin/em-options.php:1458 +#@ dbem +msgid "The minimum allowed width for images uploades" +msgstr "" + +#: admin/em-options.php:1460 +#@ dbem +msgid "Minimum height (px)" +msgstr "" + +#: admin/em-options.php:1460 +#@ dbem +msgid "The minimum allowed height for images uploaded, in pixels" +msgstr "" + +#: admin/em-options.php:1484 +#@ dbem +msgid "Depending on server settings, some sending methods may ignore this settings." +msgstr "" + +#: admin/em-options.php:1632 +#@ dbem +msgid "Admin Tools" +msgstr "" + +#: admin/em-options.php:1634 +#@ dbem +msgid "Development Versions & Updates" +msgstr "" + +#: admin/em-options.php:1635 +#@ default +msgid "We're always making improvements, adding features and fixing bugs between releases. We incrementally make these changes in between updates and make it available as a development version. You can download these manually, but we've made it easy for you. Warning: Development versions are not always fully tested before release, use wisely!" +msgstr "" + +#: admin/em-options.php:1637 +#@ dbem +msgid "Enable Dev Updates?" +msgstr "" + +#: admin/em-options.php:1637 +#@ default +msgid "If enabled, the latest dev version will always be checked instead of the latest stable version of the plugin." +msgstr "" + +#: admin/em-options.php:1639 +#@ dbem +msgid "Re-Check Updates" +msgstr "" + +#: admin/em-options.php:1639 +#@ dbem +msgid "If you would like to check and see if there is a new stable update." +msgstr "" + +#: admin/em-options.php:1640 +#@ dbem +msgid "Check Dev Versions" +msgstr "" + +#: admin/em-options.php:1640 +#@ dbem +msgid "If you would like to download a dev version, but just as a one-off, you can force a dev version check by clicking the button below. If there is one available, it should appear in your plugin updates page as a regular update." +msgstr "" + +#: classes/em-bookings-table.php:55 +#@ dbem +msgid "Confirmed" +msgstr "" + +#: classes/em-bookings-table.php:58 +#@ dbem +msgid "Needs Attention" +msgstr "" + +#: classes/em-bookings-table.php:59 +#@ dbem +msgid "Incomplete Bookings" +msgstr "" + +#: classes/em-bookings-table.php:79 +#@ dbem +msgid "Phone Number" +msgstr "" + +#: classes/em-bookings-table.php:84 +#@ dbem +msgid "Booking ID" +msgstr "" + +#: classes/em-bookings-table.php:88 +#@ dbem +msgid "Ticket Description" +msgstr "" + +#: classes/em-bookings-table.php:89 +#@ dbem +msgid "Ticket Price" +msgstr "" + +#: classes/em-bookings-table.php:90 +#@ dbem +msgid "Ticket ID" +msgstr "" + +#: classes/em-bookings-table.php:98 +#@ dbem +msgid "Actions" +msgstr "" + +#: classes/em-bookings-table.php:250 +#@ dbem +msgid "Bookings Table Settings" +msgstr "" + +#: classes/em-bookings-table.php:251 +#@ dbem +msgid "Modify what information is displayed in this booking table." +msgstr "" + +#: classes/em-bookings-table.php:254 +#@ dbem +msgid "Collumns to show" +msgstr "" + +#: classes/em-bookings-table.php:255 +#@ dbem +msgid "Drag items to or from the left collumn to add or remove them." +msgstr "" + +#: classes/em-bookings-table.php:276 +#@ dbem +msgid "Save Settings" +msgstr "" + +#: classes/em-bookings-table.php:281 +#@ dbem +msgid "Export Bookings" +msgstr "" + +#: classes/em-bookings-table.php:282 +#@ dbem +msgid "Select the options below and export all the bookings you have currently filtered (all pages) into a CSV spreadsheet format." +msgstr "" + +#: classes/em-bookings-table.php:284 +#@ dbem +msgid "Split bookings by ticket type" +msgstr "" + +#: classes/em-bookings-table.php:285 +#@ default +msgid "If your events have multiple tickets, enabling this will show a seperate row for each ticket within a booking." +msgstr "" + +#: classes/em-bookings-table.php:288 +#@ dbem +msgid "Collumns to export" +msgstr "" + +#: classes/em-bookings-table.php:333 +#@ dbem +msgid "Export Bookings Report" +msgstr "" + +#: classes/em-bookings-table.php:356 +#@ dbem +msgid "Export these bookings." +msgstr "" + +#: classes/em-bookings-table.php:371 +#, php-format +#@ dbem +msgid "%s Rows" +msgstr "" + +#: classes/em-bookings-table.php:390 +#@ dbem +msgid "Displaying Event" +msgstr "" + +#: classes/em-bookings-table.php:392 +#@ dbem +msgid "Displaying User" +msgstr "" + +#: classes/em-bookings-table.php:444 +#@ dbem +msgid "No bookings." +msgstr "" + +#: classes/em-bookings-table.php:570 +#: classes/em-bookings-table.php:578 +#: classes/em-bookings-table.php:586 +#@ dbem +msgid "Unpprove" +msgstr "" + +#: classes/em-categories-taxonomy.php:19 +#@ dbem +msgid "ID" +msgstr "" + +#: classes/em-event-posts-admin.php:102 +#: classes/em-event-posts-admin.php:104 +#: classes/em-event-posts-admin.php:239 +#: classes/em-event-posts-admin.php:241 +#: classes/em-location-posts-admin.php:47 +#: classes/em-location-posts-admin.php:49 +#, php-format +#@ dbem +msgid "%s ID" +msgstr "" + +#: classes/em-event.php:457 +#@ default +msgid "For recurring events that end the following day, ensure you make your event last 1 or more days." +msgstr "" + +#: classes/em-event.php:1926 +#@ dbem +msgid "every year" +msgstr "" + +#: classes/em-event.php:1928 +#, php-format +#@ dbem +msgid "every %s years" +msgstr "" + +#: classes/em-mailer.php:56 +#@ dbem +msgid "Could not send email." +msgstr "" + +#: classes/em-object.php:1170 +#@ dbem +msgid "The image is too small! Minimum size allowed:" +msgstr "" + +#: em-actions.php:611 +#, php-format +#@ dbem +msgid "Exported booking on %s" +msgstr "" + +#: em-install.php:302 +#@ dbem +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) will attend #_EVENTNAME on #_EVENTDATES. He wants to reserve #_BOOKINGSPACES spaces.
                                      Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                                      Yours faithfully,
                                      Events Manager - http://wp-events-plugin.com" +msgstr "" + +#: em-install.php:303 +#@ dbem +msgid "#_BOOKINGNAME (#_BOOKINGEMAIL) cancelled his booking at #_EVENTNAME on #_EVENTDATES. He wanted to reserve #_BOOKINGSPACES spaces.
                                      Now there are #_BOOKEDSPACES spaces reserved, #_AVAILABLESPACES are still available.
                                      Yours faithfully,
                                      Events Manager - http://wp-events-plugin.com" +msgstr "" + +#: em-install.php:304 +#@ dbem +msgid "Dear #_BOOKINGNAME,
                                      you have successfully reserved #_BOOKINGSPACES space/spaces for #_EVENTNAME.
                                      When : #_EVENTDATES @ #_EVENTTIMES
                                      Where : #_LOCATIONNAME - #_LOCATIONFULLLINE
                                      Yours faithfully,
                                      #_CONTACTNAME" +msgstr "" + +#: em-install.php:305 +#@ dbem +msgid "Dear #_BOOKINGNAME,
                                      You have requested #_BOOKINGSPACES space/spaces for #_EVENTNAME.
                                      When : #_EVENTDATES @ #_EVENTTIMES
                                      Where : #_LOCATIONNAME - #_LOCATIONFULLLINE
                                      Your booking is currently pending approval by our administrators. Once approved you will receive an automatic confirmation.
                                      Yours faithfully,
                                      #_CONTACTNAME" +msgstr "" + +#: em-install.php:306 +#@ dbem +msgid "Dear #_BOOKINGNAME,
                                      Your requested booking for #_BOOKINGSPACES spaces at #_EVENTNAME on #_EVENTDATES has been rejected.
                                      Yours faithfully,
                                      #_CONTACTNAME" +msgstr "" + +#: em-install.php:307 +#@ dbem +msgid "Dear #_BOOKINGNAME,
                                      Your requested booking for #_BOOKINGSPACES spaces at #_EVENTNAME on #_EVENTDATES has been cancelled.
                                      Yours faithfully,
                                      #_CONTACTNAME" +msgstr "" + +#: em-install.php:308 +#@ dbem +msgid "Dear #_CONTACTNAME,
                                      Your event #_EVENTNAME on #_EVENTDATES has been approved.
                                      You can view your event here: #_EVENTURL" +msgstr "" + +#: em-install.php:492 +#@ dbem +msgid "more..." +msgstr "" + +#: em-install.php:532 +#@ dbem +msgid "You are currently attending this event." +msgstr "" + +#: em-install.php:533 +#@ dbem +msgid "Manage my bookings" +msgstr "" + +#: templates/forms/event/attributes.php:83 +#: templates/forms/location/attributes.php:83 +#@ dbem +msgid "In order to use attributes, you must define some in your templates, otherwise they'll never show. Go to Events > Settings > General to add attribute placeholders." +msgstr "" + +#: templates/forms/event/bookings.php:115 +#@ dbem +msgid "Total Spaces" +msgstr "" + +#: templates/forms/event/bookings.php:117 +#@ dbem +msgid "Individual tickets with remaining spaces will not be available if total booking spaces reach this limit. Leave blank for no limit." +msgstr "" + +#: templates/forms/event/bookings.php:120 +#@ dbem +msgid "Booking Cut-Off Date" +msgstr "" + +#: templates/forms/event/bookings.php:123 +#@ dbem +msgid "This is the definite date after which bookings will be closed for this event, regardless of individual ticket settings above. Default value will be the event start date." +msgstr "" + +#: templates/forms/event/group.php:13 +#@ dbem +msgid "Not a Group Event" +msgstr "" + +#: templates/forms/event/location.php:57 +#@ dbem +msgid "Location Name:" +msgstr "" + +#: templates/forms/event/recurring-when.php:13 +#: templates/forms/event/when-with-recurring.php:35 +#@ dbem +msgid "Yearly" +msgstr "" + +#: templates/forms/event/recurring-when.php:25 +#: templates/forms/event/when-with-recurring.php:47 +#@ dbem +msgid "year" +msgstr "" + +#: templates/forms/event/recurring-when.php:26 +#: templates/forms/event/when-with-recurring.php:48 +#@ dbem +msgid "years" +msgstr "" + +#: templates/forms/location/attributes.php:43 +#, php-format +#@ dbem +msgid "You don't have any custom attributes defined in any of your Locations Manager template settings. Please add them the settings page" +msgstr "" + +#: templates/forms/location/attributes.php:51 +#@ default +msgid "If you see any attributes under here, that means they're not used in Locations Manager formats. To add them, you need to add the custom attribute again to a formatting option in the settings page. To remove any of these depreciated attributes, give it a blank value and save." +msgstr "" + +#: templates/forms/ticket-form.php:14 +#@ dbem +msgid "Enter a ticket name." +msgstr "" + +#: templates/forms/ticket-form.php:19 +#@ dbem +msgid "Enter a maximum number of spaces (required)." +msgstr "" + +#: templates/placeholders/bookingbutton.php:8 +#, php-format +#@ dbem +msgid "%s Submitted" +msgstr "" + +#: templates/placeholders/bookingbutton.php:9 +#: templates/placeholders/bookingbutton.php:13 +#, php-format +#@ dbem +msgid "%s Error. Try again?" +msgstr "" + +#: templates/placeholders/bookingbutton.php:11 +#@ dbem +msgid "Canceling..." +msgstr "" + +#: templates/placeholders/bookingbutton.php:13 +#@ dbem +msgid "Cancellation" +msgstr "" + +#: widgets/em-events.php:163 +#@ dbem +msgid "No events text" +msgstr "" + diff --git a/wp-content/plugins/events-manager/includes/sample-placeholders/booking-email.html b/wp-content/plugins/events-manager/includes/sample-placeholders/booking-email.html new file mode 100644 index 0000000..26eb97a --- /dev/null +++ b/wp-content/plugins/events-manager/includes/sample-placeholders/booking-email.html @@ -0,0 +1,31 @@ +---------- +Event Details: +#_NAME at #_LOCATION on #j #M #Y #@_{ \u\n\t\i\l j M Y} + +---------- +Booking Person Details: + +#__BOOKINGNAME : #_BOOKINGNAME +#__BOOKINGEMAIL : #_BOOKINGEMAIL +#__BOOKINGPHONE : #_BOOKINGPHONE +#__BOOKINGSPACES : #_BOOKINGSPACES +#__BOOKINGCOMMENT : #_BOOKINGCOMMENT + +---------- +Event Booking Stats: + +#__AVAILABLESPACES : #_AVAILABLESPACES +#__BOOKEDSPACES : #_BOOKEDSPACES +#__SPACES: #_SPACES + +---------- +Contact Details : + +#__CONTACTNAME : #_CONTACTNAME +#__CONTACTUSERNAME : #_CONTACTUSERNAME +#__CONTACTEMAIL : #_CONTACTEMAIL +#__CONTACTPHONE : #_CONTACTPHONE +#__CONTACTAVATAR : #_CONTACTAVATAR +#__CONTACTPROFILELINK : #_CONTACTPROFILELINK +#__CONTACTPROFILEURL : #_CONTACTPROFILEURL +#__CONTACTID : #_CONTACTID \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/sample-placeholders/event-list-default.html b/wp-content/plugins/events-manager/includes/sample-placeholders/event-list-default.html new file mode 100644 index 0000000..73d6746 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/sample-placeholders/event-list-default.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + +
                                      Date/TimeEvent
                                      + #_{d/m/Y} #@_{- d/m/Y}
                                      + #H:#i -#@H:#@i +
                                      + #_EVENTLINK
                                      + #_LOCATIONNAME, #_LOCATIONTOWN #_LOCATIONSTATE +
                                      \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/sample-placeholders/event-single-default.html b/wp-content/plugins/events-manager/includes/sample-placeholders/event-single-default.html new file mode 100644 index 0000000..2e83c2d --- /dev/null +++ b/wp-content/plugins/events-manager/includes/sample-placeholders/event-single-default.html @@ -0,0 +1,22 @@ +
                                      #_MAP
                                      +

                                      + Date/Time
                                      + Date(s) - #j #M #Y #@_{ \u\n\t\i\l j M Y}
                                      + #_12HSTARTTIME - #_12HENDTIME +

                                      +

                                      + Location
                                      + #_LOCATIONLINK +

                                      +

                                      + Category(ies) + #_CATEGORIES +

                                      +
                                      +#_NOTES +{has_bookings} +

                                      Bookings

                                      +#_BOOKINGFORM +{/has_bookings} + +

                                      Powered by Events Manager

                                      \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/sample-placeholders/event-single.html b/wp-content/plugins/events-manager/includes/sample-placeholders/event-single.html new file mode 100644 index 0000000..fef4b2a --- /dev/null +++ b/wp-content/plugins/events-manager/includes/sample-placeholders/event-single.html @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      When? + Date(s) - #j #M #Y #@_{ \u\n\t\i\l j M Y}
                                      + Time (24h Format) - #_24HSTARTTIME - #_24HENDTIME
                                      + Time (12h Format) - #_12HSTARTTIME - #_12HENDTIME +
                                      What? +

                                      #_NAME

                                      +

                                      + Event ID : #_EVENTID
                                      +

                                      + #_NOTES +
                                      Image + #_EVENTIMAGE +
                                      CATEGORY Stuff +
                                      #_CATEGORYIMAGE
                                      + #_CATEGORYDESCRIPTION
                                      + Category Name : #_CATEGORYNAME
                                      + Category URL : #_CATEGORYURL
                                      + Category Link : #_CATEGORYLINK
                                      + Category ID : #_CATEGORYID
                                      +
                                      + ATTRIBUTE EXAMPLES + Price
                                      + Dress Code
                                      +
                                      + #_ATT{Price}{Free}
                                      + #_ATT{Dress Code}{Informal}
                                      + #_AVAILABLESPACES / #_SPACES
                                      + +
                                      Who? + #_CONTACTAVATAR #_CONTACTNAME (aka #_CONTACTUSERNAME)
                                      + User ID : #_CONTACTID
                                      + Email : #_CONTACTEMAIL
                                      + Phone : #_CONTACTPHONE
                                      + URL : #_CONTACTPROFILEURL - #_CONTACTPROFILELINK
                                      +
                                      Bookings + Total Spaces : #_SPACES
                                      + Booked Spaces : #_BOOKEDSPACES
                                      + Available Spaces : #_AVAILABLESPACES
                                      + +

                                      #_BOOKINGFORM

                                      +
                                      Where? + Location Image : + #_LOCATIONIMAGE +

                                      + #_LOCATIONNAME, #_LOCATIONADDRESS, #_LOCATIONTOWN
                                      + ID - #_LOCATIONID
                                      + Links - #_LOCATIONPAGEURL or #_LOCATIONURL or #_LOCATIONLINK +

                                      + #_LOCATIONEXCERPT +
                                      + #_LOCATIONMAP +
                                      +

                                      Upcoming Events at #_LOCATION

                                      + #_LOCATIONNEXTEVENTS +
                                      +

                                      Previous Events at #_LOCATION

                                      + #_LOCATIONPASTEVENTS +
                                      +

                                      All Events at #_LOCATION

                                      + #_LOCATIONALLEVENTS +
                                      +#_EDITEVENTLINK diff --git a/wp-content/plugins/events-manager/includes/sample-placeholders/location-single-default.html b/wp-content/plugins/events-manager/includes/sample-placeholders/location-single-default.html new file mode 100644 index 0000000..168e0e9 --- /dev/null +++ b/wp-content/plugins/events-manager/includes/sample-placeholders/location-single-default.html @@ -0,0 +1,17 @@ +
                                      #_MAP
                                      +

                                      + Address
                                      + #_LOCATIONADDRESS
                                      + #_LOCATIONTOWN
                                      + #_LOCATIONSTATE
                                      + #_LOCATIONREGION
                                      + #_LOCATIONPOSTCODE
                                      + #_LOCATIONCOUNTRY +

                                      +
                                      +#_DESCRIPTION + +

                                      Upcoming events at this location

                                      +

                                      #_NEXTEVENTS

                                      + +

                                      Powered by Events Manager

                                      \ No newline at end of file diff --git a/wp-content/plugins/events-manager/includes/thumbnails/cache/index.html b/wp-content/plugins/events-manager/includes/thumbnails/cache/index.html new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/plugins/events-manager/includes/thumbnails/timthumb-config.php b/wp-content/plugins/events-manager/includes/thumbnails/timthumb-config.php new file mode 100644 index 0000000..8781bfa --- /dev/null +++ b/wp-content/plugins/events-manager/includes/thumbnails/timthumb-config.php @@ -0,0 +1,3 @@ + /dev/null 2>&1 & + Then set WEBSHOT_XVFB_RUNNING = true below. This will save your server having to fire off a new Xvfb server and shut it down every time a new shot is generated. + You will need to take responsibility for keeping Xvfb running in case it crashes. (It seems pretty stable) + You will also need to take responsibility for server security if you're running Xvfb as root. + + +*/ +if(! defined('WEBSHOT_ENABLED') ) define ('WEBSHOT_ENABLED', false); //Beta feature. Adding webshot=1 to your query string will cause the script to return a browser screenshot rather than try to fetch an image. +if(! defined('WEBSHOT_CUTYCAPT') ) define ('WEBSHOT_CUTYCAPT', '/usr/local/bin/CutyCapt'); //The path to CutyCapt. +if(! defined('WEBSHOT_XVFB') ) define ('WEBSHOT_XVFB', '/usr/bin/xvfb-run'); //The path to the Xvfb server +if(! defined('WEBSHOT_SCREEN_X') ) define ('WEBSHOT_SCREEN_X', '1024'); //1024 works ok +if(! defined('WEBSHOT_SCREEN_Y') ) define ('WEBSHOT_SCREEN_Y', '768'); //768 works ok +if(! defined('WEBSHOT_COLOR_DEPTH') ) define ('WEBSHOT_COLOR_DEPTH', '24'); //I haven't tested anything besides 24 +if(! defined('WEBSHOT_IMAGE_FORMAT') ) define ('WEBSHOT_IMAGE_FORMAT', 'png'); //png is about 2.5 times the size of jpg but is a LOT better quality +if(! defined('WEBSHOT_TIMEOUT') ) define ('WEBSHOT_TIMEOUT', '20'); //Seconds to wait for a webshot +if(! defined('WEBSHOT_USER_AGENT') ) define ('WEBSHOT_USER_AGENT', "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18"); //I hate to do this, but a non-browser robot user agent might not show what humans see. So we pretend to be Firefox +if(! defined('WEBSHOT_JAVASCRIPT_ON') ) define ('WEBSHOT_JAVASCRIPT_ON', true); //Setting to false might give you a slight speedup and block ads. But it could cause other issues. +if(! defined('WEBSHOT_JAVA_ON') ) define ('WEBSHOT_JAVA_ON', false); //Have only tested this as fase +if(! defined('WEBSHOT_PLUGINS_ON') ) define ('WEBSHOT_PLUGINS_ON', true); //Enable flash and other plugins +if(! defined('WEBSHOT_PROXY') ) define ('WEBSHOT_PROXY', ''); //In case you're behind a proxy server. +if(! defined('WEBSHOT_XVFB_RUNNING') ) define ('WEBSHOT_XVFB_RUNNING', false); //ADVANCED: Enable this if you've got Xvfb running in the background. + + +// If ALLOW_EXTERNAL is true and ALLOW_ALL_EXTERNAL_SITES is false, then external images will only be fetched from these domains and their subdomains. +if(! isset($ALLOWED_SITES)){ + $ALLOWED_SITES = array ( + 'flickr.com', + 'staticflickr.com', + 'picasa.com', + 'img.youtube.com', + 'upload.wikimedia.org', + 'photobucket.com', + 'imgur.com', + 'imageshack.us', + 'tinypic.com', + ); +} +// ------------------------------------------------------------- +// -------------- STOP EDITING CONFIGURATION HERE -------------- +// ------------------------------------------------------------- + +timthumb::start(); + +class timthumb { + protected $src = ""; + protected $is404 = false; + protected $docRoot = ""; + protected $lastURLError = false; + protected $localImage = ""; + protected $localImageMTime = 0; + protected $url = false; + protected $myHost = ""; + protected $isURL = false; + protected $cachefile = ''; + protected $errors = array(); + protected $toDeletes = array(); + protected $cacheDirectory = ''; + protected $startTime = 0; + protected $lastBenchTime = 0; + protected $cropTop = false; + protected $salt = ""; + protected $fileCacheVersion = 1; //Generally if timthumb.php is modifed (upgraded) then the salt changes and all cache files are recreated. This is a backup mechanism to force regen. + protected $filePrependSecurityBlock = "handleErrors(); + $tim->securityChecks(); + if($tim->tryBrowserCache()){ + exit(0); + } + $tim->handleErrors(); + if(FILE_CACHE_ENABLED && $tim->tryServerCache()){ + exit(0); + } + $tim->handleErrors(); + $tim->run(); + $tim->handleErrors(); + exit(0); + } + public function __construct(){ + global $ALLOWED_SITES; + $this->startTime = microtime(true); + date_default_timezone_set('UTC'); + $this->debug(1, "Starting new request from " . $this->getIP() . " to " . $_SERVER['REQUEST_URI']); + $this->calcDocRoot(); + //On windows systems I'm assuming fileinode returns an empty string or a number that doesn't change. Check this. + $this->salt = @filemtime(__FILE__) . '-' . @fileinode(__FILE__); + $this->debug(3, "Salt is: " . $this->salt); + if(FILE_CACHE_DIRECTORY){ + if(! is_dir(FILE_CACHE_DIRECTORY)){ + @mkdir(FILE_CACHE_DIRECTORY); + if(! is_dir(FILE_CACHE_DIRECTORY)){ + $this->error("Could not create the file cache directory."); + return false; + } + } + $this->cacheDirectory = FILE_CACHE_DIRECTORY; + if (!touch($this->cacheDirectory . '/index.html')) { + $this->error("Could not create the index.html file - to fix this create an empty file named index.html file in the cache directory."); + } + } else { + $this->cacheDirectory = sys_get_temp_dir(); + } + //Clean the cache before we do anything because we don't want the first visitor after FILE_CACHE_TIME_BETWEEN_CLEANS expires to get a stale image. + $this->cleanCache(); + + $this->myHost = preg_replace('/^www\./i', '', $_SERVER['HTTP_HOST']); + $this->src = $this->param('src'); + $this->url = parse_url($this->src); + $this->src = preg_replace('/https?:\/\/(?:www\.)?' . $this->myHost . '/i', '', $this->src); + + if(strlen($this->src) <= 3){ + $this->error("No image specified"); + return false; + } + if(BLOCK_EXTERNAL_LEECHERS && array_key_exists('HTTP_REFERER', $_SERVER) && (! preg_match('/^https?:\/\/(?:www\.)?' . $this->myHost . '(?:$|\/)/i', $_SERVER['HTTP_REFERER']))){ + // base64 encoded red image that says 'no hotlinkers' + // nothing to worry about! :) + $imgData = base64_decode("R0lGODlhUAAMAIAAAP8AAP///yH5BAAHAP8ALAAAAABQAAwAAAJpjI+py+0Po5y0OgAMjjv01YUZ\nOGplhWXfNa6JCLnWkXplrcBmW+spbwvaVr/cDyg7IoFC2KbYVC2NQ5MQ4ZNao9Ynzjl9ScNYpneb\nDULB3RP6JuPuaGfuuV4fumf8PuvqFyhYtjdoeFgAADs="); + header('Content-Type: image/gif'); + header('Content-Length: ' . sizeof($imgData)); + header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0'); + header("Pragma: no-cache"); + header('Expires: ' . gmdate ('D, d M Y H:i:s', time())); + echo $imgData; + return false; + exit(0); + } + if(preg_match('/^https?:\/\/[^\/]+/i', $this->src)){ + $this->debug(2, "Is a request for an external URL: " . $this->src); + $this->isURL = true; + } else { + $this->debug(2, "Is a request for an internal file: " . $this->src); + } + if($this->isURL && (! ALLOW_EXTERNAL)){ + $this->error("You are not allowed to fetch images from an external website."); + return false; + } + if($this->isURL){ + if(ALLOW_ALL_EXTERNAL_SITES){ + $this->debug(2, "Fetching from all external sites is enabled."); + } else { + $this->debug(2, "Fetching only from selected external sites is enabled."); + $allowed = false; + foreach($ALLOWED_SITES as $site){ + if ((strtolower(substr($this->url['host'],-strlen($site)-1)) === strtolower(".$site")) || (strtolower($this->url['host'])===strtolower($site))) { + $this->debug(3, "URL hostname {$this->url['host']} matches $site so allowing."); + $allowed = true; + } + } + if(! $allowed){ + return $this->error("You may not fetch images from that site. To enable this site in timthumb, you can either add it to \$ALLOWED_SITES and set ALLOW_EXTERNAL=true. Or you can set ALLOW_ALL_EXTERNAL_SITES=true, depending on your security needs."); + } + } + } + + $cachePrefix = ($this->isURL ? '_ext_' : '_int_'); + if($this->isURL){ + $arr = explode('&', $_SERVER ['QUERY_STRING']); + asort($arr); + $this->cachefile = $this->cacheDirectory . '/' . FILE_CACHE_PREFIX . $cachePrefix . md5($this->salt . implode('', $arr) . $this->fileCacheVersion) . FILE_CACHE_SUFFIX; + } else { + $this->localImage = $this->getLocalImagePath($this->src); + if(! $this->localImage){ + $this->debug(1, "Could not find the local image: {$this->localImage}"); + $this->error("Could not find the internal image you specified."); + $this->set404(); + return false; + } + $this->debug(1, "Local image path is {$this->localImage}"); + $this->localImageMTime = @filemtime($this->localImage); + //We include the mtime of the local file in case in changes on disk. + $this->cachefile = $this->cacheDirectory . '/' . FILE_CACHE_PREFIX . $cachePrefix . md5($this->salt . $this->localImageMTime . $_SERVER ['QUERY_STRING'] . $this->fileCacheVersion) . FILE_CACHE_SUFFIX; + } + $this->debug(2, "Cache file is: " . $this->cachefile); + + return true; + } + public function __destruct(){ + foreach($this->toDeletes as $del){ + $this->debug(2, "Deleting temp file $del"); + @unlink($del); + } + } + public function run(){ + if($this->isURL){ + if(! ALLOW_EXTERNAL){ + $this->debug(1, "Got a request for an external image but ALLOW_EXTERNAL is disabled so returning error msg."); + $this->error("You are not allowed to fetch images from an external website."); + return false; + } + $this->debug(3, "Got request for external image. Starting serveExternalImage."); + if($this->param('webshot')){ + if(WEBSHOT_ENABLED){ + $this->debug(3, "webshot param is set, so we're going to take a webshot."); + $this->serveWebshot(); + } else { + $this->error("You added the webshot parameter but webshots are disabled on this server. You need to set WEBSHOT_ENABLED == true to enable webshots."); + } + } else { + $this->debug(3, "webshot is NOT set so we're going to try to fetch a regular image."); + $this->serveExternalImage(); + + } + } else { + $this->debug(3, "Got request for internal image. Starting serveInternalImage()"); + $this->serveInternalImage(); + } + return true; + } + protected function handleErrors(){ + if($this->haveErrors()){ + if(NOT_FOUND_IMAGE && $this->is404()){ + if($this->serveImg(NOT_FOUND_IMAGE)){ + exit(0); + } else { + $this->error("Additionally, the 404 image that is configured could not be found or there was an error serving it."); + } + } + if(ERROR_IMAGE){ + if($this->serveImg(ERROR_IMAGE)){ + exit(0); + } else { + $this->error("Additionally, the error image that is configured could not be found or there was an error serving it."); + } + } + $this->serveErrors(); + exit(0); + } + return false; + } + protected function tryBrowserCache(){ + if(BROWSER_CACHE_DISABLE){ $this->debug(3, "Browser caching is disabled"); return false; } + if(!empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) ){ + $this->debug(3, "Got a conditional get"); + $mtime = false; + //We've already checked if the real file exists in the constructor + if(! is_file($this->cachefile)){ + //If we don't have something cached, regenerate the cached image. + return false; + } + if($this->localImageMTime){ + $mtime = $this->localImageMTime; + $this->debug(3, "Local real file's modification time is $mtime"); + } else if(is_file($this->cachefile)){ //If it's not a local request then use the mtime of the cached file to determine the 304 + $mtime = @filemtime($this->cachefile); + $this->debug(3, "Cached file's modification time is $mtime"); + } + if(! $mtime){ return false; } + + $iftime = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']); + $this->debug(3, "The conditional get's if-modified-since unixtime is $iftime"); + if($iftime < 1){ + $this->debug(3, "Got an invalid conditional get modified since time. Returning false."); + return false; + } + if($iftime < $mtime){ //Real file or cache file has been modified since last request, so force refetch. + $this->debug(3, "File has been modified since last fetch."); + return false; + } else { //Otherwise serve a 304 + $this->debug(3, "File has not been modified since last get, so serving a 304."); + header ($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); + $this->debug(1, "Returning 304 not modified"); + return true; + } + } + return false; + } + protected function tryServerCache(){ + $this->debug(3, "Trying server cache"); + if(file_exists($this->cachefile)){ + $this->debug(3, "Cachefile {$this->cachefile} exists"); + if($this->isURL){ + $this->debug(3, "This is an external request, so checking if the cachefile is empty which means the request failed previously."); + if(filesize($this->cachefile) < 1){ + $this->debug(3, "Found an empty cachefile indicating a failed earlier request. Checking how old it is."); + //Fetching error occured previously + if(time() - @filemtime($this->cachefile) > WAIT_BETWEEN_FETCH_ERRORS){ + $this->debug(3, "File is older than " . WAIT_BETWEEN_FETCH_ERRORS . " seconds. Deleting and returning false so app can try and load file."); + @unlink($this->cachefile); + return false; //to indicate we didn't serve from cache and app should try and load + } else { + $this->debug(3, "Empty cachefile is still fresh so returning message saying we had an error fetching this image from remote host."); + $this->set404(); + $this->error("An error occured fetching image."); + return false; + } + } + } else { + $this->debug(3, "Trying to serve cachefile {$this->cachefile}"); + } + if($this->serveCacheFile()){ + $this->debug(3, "Succesfully served cachefile {$this->cachefile}"); + return true; + } else { + $this->debug(3, "Failed to serve cachefile {$this->cachefile} - Deleting it from cache."); + //Image serving failed. We can't retry at this point, but lets remove it from cache so the next request recreates it + @unlink($this->cachefile); + return true; + } + } + } + protected function error($err){ + $this->debug(3, "Adding error message: $err"); + $this->errors[] = $err; + return false; + + } + protected function haveErrors(){ + if(sizeof($this->errors) > 0){ + return true; + } + return false; + } + protected function serveErrors(){ + header ($_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request'); + $html = '
                                        '; + foreach($this->errors as $err){ + $html .= '
                                      • ' . htmlentities($err) . '
                                      • '; + } + $html .= '
                                      '; + echo '

                                      A TimThumb error has occured

                                      The following error(s) occured:
                                      ' . $html . '
                                      '; + echo '
                                      Query String : ' . htmlentities ($_SERVER['QUERY_STRING']); + echo '
                                      TimThumb version : ' . VERSION . '
          '; + } + protected function serveInternalImage(){ + $this->debug(3, "Local image path is $this->localImage"); + if(! $this->localImage){ + $this->sanityFail("localImage not set after verifying it earlier in the code."); + return false; + } + $fileSize = filesize($this->localImage); + if($fileSize > MAX_FILE_SIZE){ + $this->error("The file you specified is greater than the maximum allowed file size."); + return false; + } + if($fileSize <= 0){ + $this->error("The file you specified is <= 0 bytes."); + return false; + } + $this->debug(3, "Calling processImageAndWriteToCache() for local image."); + if($this->processImageAndWriteToCache($this->localImage)){ + $this->serveCacheFile(); + return true; + } else { + return false; + } + } + protected function cleanCache(){ + if (FILE_CACHE_TIME_BETWEEN_CLEANS < 0) { + return; + } + $this->debug(3, "cleanCache() called"); + $lastCleanFile = $this->cacheDirectory . '/timthumb_cacheLastCleanTime.touch'; + + //If this is a new timthumb installation we need to create the file + if(! is_file($lastCleanFile)){ + $this->debug(1, "File tracking last clean doesn't exist. Creating $lastCleanFile"); + if (!touch($lastCleanFile)) { + $this->error("Could not create cache clean timestamp file."); + } + return; + } + if(@filemtime($lastCleanFile) < (time() - FILE_CACHE_TIME_BETWEEN_CLEANS) ){ //Cache was last cleaned more than 1 day ago + $this->debug(1, "Cache was last cleaned more than " . FILE_CACHE_TIME_BETWEEN_CLEANS . " seconds ago. Cleaning now."); + // Very slight race condition here, but worst case we'll have 2 or 3 servers cleaning the cache simultaneously once a day. + if (!touch($lastCleanFile)) { + $this->error("Could not create cache clean timestamp file."); + } + $files = glob($this->cacheDirectory . '/*' . FILE_CACHE_SUFFIX); + if ($files) { + $timeAgo = time() - FILE_CACHE_MAX_FILE_AGE; + foreach($files as $file){ + if(@filemtime($file) < $timeAgo){ + $this->debug(3, "Deleting cache file $file older than max age: " . FILE_CACHE_MAX_FILE_AGE . " seconds"); + @unlink($file); + } + } + } + return true; + } else { + $this->debug(3, "Cache was cleaned less than " . FILE_CACHE_TIME_BETWEEN_CLEANS . " seconds ago so no cleaning needed."); + } + return false; + } + protected function processImageAndWriteToCache($localImage){ + $sData = getimagesize($localImage); + $origType = $sData[2]; + $mimeType = $sData['mime']; + + $this->debug(3, "Mime type of image is $mimeType"); + if(! preg_match('/^image\/(?:gif|jpg|jpeg|png)$/i', $mimeType)){ + return $this->error("The image being resized is not a valid gif, jpg or png."); + } + + if (!function_exists ('imagecreatetruecolor')) { + return $this->error('GD Library Error: imagecreatetruecolor does not exist - please contact your webhost and ask them to install the GD library'); + } + + if (function_exists ('imagefilter') && defined ('IMG_FILTER_NEGATE')) { + $imageFilters = array ( + 1 => array (IMG_FILTER_NEGATE, 0), + 2 => array (IMG_FILTER_GRAYSCALE, 0), + 3 => array (IMG_FILTER_BRIGHTNESS, 1), + 4 => array (IMG_FILTER_CONTRAST, 1), + 5 => array (IMG_FILTER_COLORIZE, 4), + 6 => array (IMG_FILTER_EDGEDETECT, 0), + 7 => array (IMG_FILTER_EMBOSS, 0), + 8 => array (IMG_FILTER_GAUSSIAN_BLUR, 0), + 9 => array (IMG_FILTER_SELECTIVE_BLUR, 0), + 10 => array (IMG_FILTER_MEAN_REMOVAL, 0), + 11 => array (IMG_FILTER_SMOOTH, 0), + ); + } + + // get standard input properties + $new_width = (int) abs ($this->param('w', 0)); + $new_height = (int) abs ($this->param('h', 0)); + $zoom_crop = (int) $this->param('zc', DEFAULT_ZC); + $quality = (int) abs ($this->param('q', DEFAULT_Q)); + $align = $this->cropTop ? 't' : $this->param('a', 'c'); + $filters = $this->param('f', DEFAULT_F); + $sharpen = (bool) $this->param('s', DEFAULT_S); + $canvas_color = $this->param('cc', DEFAULT_CC); + $canvas_trans = (bool) $this->param('ct', '1'); + + // set default width and height if neither are set already + if ($new_width == 0 && $new_height == 0) { + $new_width = 100; + $new_height = 100; + } + + // ensure size limits can not be abused + $new_width = min ($new_width, MAX_WIDTH); + $new_height = min ($new_height, MAX_HEIGHT); + + // set memory limit to be able to have enough space to resize larger images + $this->setMemoryLimit(); + + // open the existing image + $image = $this->openImage ($mimeType, $localImage); + if ($image === false) { + return $this->error('Unable to open image.'); + } + + // Get original width and height + $width = imagesx ($image); + $height = imagesy ($image); + $origin_x = 0; + $origin_y = 0; + + // generate new w/h if not provided + if ($new_width && !$new_height) { + $new_height = floor ($height * ($new_width / $width)); + } else if ($new_height && !$new_width) { + $new_width = floor ($width * ($new_height / $height)); + } + + // scale down and add borders + if ($zoom_crop == 3) { + + $final_height = $height * ($new_width / $width); + + if ($final_height > $new_height) { + $new_width = $width * ($new_height / $height); + } else { + $new_height = $final_height; + } + + } + + // create a new true color image + $canvas = imagecreatetruecolor ($new_width, $new_height); + imagealphablending ($canvas, false); + + if (strlen($canvas_color) == 3) { //if is 3-char notation, edit string into 6-char notation + $canvas_color = str_repeat(substr($canvas_color, 0, 1), 2) . str_repeat(substr($canvas_color, 1, 1), 2) . str_repeat(substr($canvas_color, 2, 1), 2); + } else if (strlen($canvas_color) != 6) { + $canvas_color = DEFAULT_CC; // on error return default canvas color + } + + $canvas_color_R = hexdec (substr ($canvas_color, 0, 2)); + $canvas_color_G = hexdec (substr ($canvas_color, 2, 2)); + $canvas_color_B = hexdec (substr ($canvas_color, 4, 2)); + + // Create a new transparent color for image + // If is a png and PNG_IS_TRANSPARENT is false then remove the alpha transparency + // (and if is set a canvas color show it in the background) + if(preg_match('/^image\/png$/i', $mimeType) && !PNG_IS_TRANSPARENT && $canvas_trans){ + $color = imagecolorallocatealpha ($canvas, $canvas_color_R, $canvas_color_G, $canvas_color_B, 127); + }else{ + $color = imagecolorallocatealpha ($canvas, $canvas_color_R, $canvas_color_G, $canvas_color_B, 0); + } + + + // Completely fill the background of the new image with allocated color. + imagefill ($canvas, 0, 0, $color); + + // scale down and add borders + if ($zoom_crop == 2) { + + $final_height = $height * ($new_width / $width); + + if ($final_height > $new_height) { + + $origin_x = $new_width / 2; + $new_width = $width * ($new_height / $height); + $origin_x = round ($origin_x - ($new_width / 2)); + + } else { + + $origin_y = $new_height / 2; + $new_height = $final_height; + $origin_y = round ($origin_y - ($new_height / 2)); + + } + + } + + // Restore transparency blending + imagesavealpha ($canvas, true); + + if ($zoom_crop > 0) { + + $src_x = $src_y = 0; + $src_w = $width; + $src_h = $height; + + $cmp_x = $width / $new_width; + $cmp_y = $height / $new_height; + + // calculate x or y coordinate and width or height of source + if ($cmp_x > $cmp_y) { + + $src_w = round ($width / $cmp_x * $cmp_y); + $src_x = round (($width - ($width / $cmp_x * $cmp_y)) / 2); + + } else if ($cmp_y > $cmp_x) { + + $src_h = round ($height / $cmp_y * $cmp_x); + $src_y = round (($height - ($height / $cmp_y * $cmp_x)) / 2); + + } + + // positional cropping! + if ($align) { + if (strpos ($align, 't') !== false) { + $src_y = 0; + } + if (strpos ($align, 'b') !== false) { + $src_y = $height - $src_h; + } + if (strpos ($align, 'l') !== false) { + $src_x = 0; + } + if (strpos ($align, 'r') !== false) { + $src_x = $width - $src_w; + } + } + + imagecopyresampled ($canvas, $image, $origin_x, $origin_y, $src_x, $src_y, $new_width, $new_height, $src_w, $src_h); + + } else { + + // copy and resize part of an image with resampling + imagecopyresampled ($canvas, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); + + } + + if ($filters != '' && function_exists ('imagefilter') && defined ('IMG_FILTER_NEGATE')) { + // apply filters to image + $filterList = explode ('|', $filters); + foreach ($filterList as $fl) { + + $filterSettings = explode (',', $fl); + if (isset ($imageFilters[$filterSettings[0]])) { + + for ($i = 0; $i < 4; $i ++) { + if (!isset ($filterSettings[$i])) { + $filterSettings[$i] = null; + } else { + $filterSettings[$i] = (int) $filterSettings[$i]; + } + } + + switch ($imageFilters[$filterSettings[0]][1]) { + + case 1: + + imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1]); + break; + + case 2: + + imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1], $filterSettings[2]); + break; + + case 3: + + imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1], $filterSettings[2], $filterSettings[3]); + break; + + case 4: + + imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1], $filterSettings[2], $filterSettings[3], $filterSettings[4]); + break; + + default: + + imagefilter ($canvas, $imageFilters[$filterSettings[0]][0]); + break; + + } + } + } + } + + // sharpen image + if ($sharpen && function_exists ('imageconvolution')) { + + $sharpenMatrix = array ( + array (-1,-1,-1), + array (-1,16,-1), + array (-1,-1,-1), + ); + + $divisor = 8; + $offset = 0; + + imageconvolution ($canvas, $sharpenMatrix, $divisor, $offset); + + } + //Straight from Wordpress core code. Reduces filesize by up to 70% for PNG's + if ( (IMAGETYPE_PNG == $origType || IMAGETYPE_GIF == $origType) && function_exists('imageistruecolor') && !imageistruecolor( $image ) && imagecolortransparent( $image ) > 0 ){ + imagetruecolortopalette( $canvas, false, imagecolorstotal( $image ) ); + } + + $imgType = ""; + $tempfile = tempnam($this->cacheDirectory, 'timthumb_tmpimg_'); + if(preg_match('/^image\/(?:jpg|jpeg)$/i', $mimeType)){ + $imgType = 'jpg'; + imagejpeg($canvas, $tempfile, $quality); + } else if(preg_match('/^image\/png$/i', $mimeType)){ + $imgType = 'png'; + imagepng($canvas, $tempfile, floor($quality * 0.09)); + } else if(preg_match('/^image\/gif$/i', $mimeType)){ + $imgType = 'gif'; + imagegif($canvas, $tempfile); + } else { + return $this->sanityFail("Could not match mime type after verifying it previously."); + } + + if($imgType == 'png' && OPTIPNG_ENABLED && OPTIPNG_PATH && @is_file(OPTIPNG_PATH)){ + $exec = OPTIPNG_PATH; + $this->debug(3, "optipng'ing $tempfile"); + $presize = filesize($tempfile); + $out = `$exec -o1 $tempfile`; //you can use up to -o7 but it really slows things down + clearstatcache(); + $aftersize = filesize($tempfile); + $sizeDrop = $presize - $aftersize; + if($sizeDrop > 0){ + $this->debug(1, "optipng reduced size by $sizeDrop"); + } else if($sizeDrop < 0){ + $this->debug(1, "optipng increased size! Difference was: $sizeDrop"); + } else { + $this->debug(1, "optipng did not change image size."); + } + } else if($imgType == 'png' && PNGCRUSH_ENABLED && PNGCRUSH_PATH && @is_file(PNGCRUSH_PATH)){ + $exec = PNGCRUSH_PATH; + $tempfile2 = tempnam($this->cacheDirectory, 'timthumb_tmpimg_'); + $this->debug(3, "pngcrush'ing $tempfile to $tempfile2"); + $out = `$exec $tempfile $tempfile2`; + $todel = ""; + if(is_file($tempfile2)){ + $sizeDrop = filesize($tempfile) - filesize($tempfile2); + if($sizeDrop > 0){ + $this->debug(1, "pngcrush was succesful and gave a $sizeDrop byte size reduction"); + $todel = $tempfile; + $tempfile = $tempfile2; + } else { + $this->debug(1, "pngcrush did not reduce file size. Difference was $sizeDrop bytes."); + $todel = $tempfile2; + } + } else { + $this->debug(3, "pngcrush failed with output: $out"); + $todel = $tempfile2; + } + @unlink($todel); + } + + $this->debug(3, "Rewriting image with security header."); + $tempfile4 = tempnam($this->cacheDirectory, 'timthumb_tmpimg_'); + $context = stream_context_create (); + $fp = fopen($tempfile,'r',0,$context); + file_put_contents($tempfile4, $this->filePrependSecurityBlock . $imgType . ' ?' . '>'); //6 extra bytes, first 3 being image type + file_put_contents($tempfile4, $fp, FILE_APPEND); + fclose($fp); + @unlink($tempfile); + $this->debug(3, "Locking and replacing cache file."); + $lockFile = $this->cachefile . '.lock'; + $fh = fopen($lockFile, 'w'); + if(! $fh){ + return $this->error("Could not open the lockfile for writing an image."); + } + if(flock($fh, LOCK_EX)){ + @unlink($this->cachefile); //rename generally overwrites, but doing this in case of platform specific quirks. File might not exist yet. + rename($tempfile4, $this->cachefile); + flock($fh, LOCK_UN); + fclose($fh); + @unlink($lockFile); + } else { + fclose($fh); + @unlink($lockFile); + @unlink($tempfile4); + return $this->error("Could not get a lock for writing."); + } + $this->debug(3, "Done image replace with security header. Cleaning up and running cleanCache()"); + imagedestroy($canvas); + imagedestroy($image); + return true; + } + protected function calcDocRoot(){ + $docRoot = @$_SERVER['DOCUMENT_ROOT']; + if (defined('LOCAL_FILE_BASE_DIRECTORY')) { + $docRoot = LOCAL_FILE_BASE_DIRECTORY; + } + if(!isset($docRoot)){ + $this->debug(3, "DOCUMENT_ROOT is not set. This is probably windows. Starting search 1."); + if(isset($_SERVER['SCRIPT_FILENAME'])){ + $docRoot = str_replace( '\\', '/', substr($_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF']))); + $this->debug(3, "Generated docRoot using SCRIPT_FILENAME and PHP_SELF as: $docRoot"); + } + } + if(!isset($docRoot)){ + $this->debug(3, "DOCUMENT_ROOT still is not set. Starting search 2."); + if(isset($_SERVER['PATH_TRANSLATED'])){ + $docRoot = str_replace( '\\', '/', substr(str_replace('\\\\', '\\', $_SERVER['PATH_TRANSLATED']), 0, 0-strlen($_SERVER['PHP_SELF']))); + $this->debug(3, "Generated docRoot using PATH_TRANSLATED and PHP_SELF as: $docRoot"); + } + } + if($docRoot && $_SERVER['DOCUMENT_ROOT'] != '/'){ $docRoot = preg_replace('/\/$/', '', $docRoot); } + $this->debug(3, "Doc root is: " . $docRoot); + $this->docRoot = $docRoot; + + } + protected function getLocalImagePath($src){ + $src = ltrim($src, '/'); //strip off the leading '/' + if(! $this->docRoot){ + $this->debug(3, "We have no document root set, so as a last resort, lets check if the image is in the current dir and serve that."); + //We don't support serving images outside the current dir if we don't have a doc root for security reasons. + $file = preg_replace('/^.*?([^\/\\\\]+)$/', '$1', $src); //strip off any path info and just leave the filename. + if(is_file($file)){ + return $this->realpath($file); + } + return $this->error("Could not find your website document root and the file specified doesn't exist in timthumbs directory. We don't support serving files outside timthumb's directory without a document root for security reasons."); + } //Do not go past this point without docRoot set + + //Try src under docRoot + if(file_exists ($this->docRoot . '/' . $src)) { + $this->debug(3, "Found file as " . $this->docRoot . '/' . $src); + $real = $this->realpath($this->docRoot . '/' . $src); + if(stripos($real, $this->docRoot) === 0){ + return $real; + } else { + $this->debug(1, "Security block: The file specified occurs outside the document root."); + //allow search to continue + } + } + //Check absolute paths and then verify the real path is under doc root + $absolute = $this->realpath('/' . $src); + if($absolute && file_exists($absolute)){ //realpath does file_exists check, so can probably skip the exists check here + $this->debug(3, "Found absolute path: $absolute"); + if(! $this->docRoot){ $this->sanityFail("docRoot not set when checking absolute path."); } + if(stripos($absolute, $this->docRoot) === 0){ + return $absolute; + } else { + $this->debug(1, "Security block: The file specified occurs outside the document root."); + //and continue search + } + } + + $base = $this->docRoot; + + // account for Windows directory structure + if (strstr($_SERVER['SCRIPT_FILENAME'],':')) { + $sub_directories = explode('\\', str_replace($this->docRoot, '', $_SERVER['SCRIPT_FILENAME'])); + } else { + $sub_directories = explode('/', str_replace($this->docRoot, '', $_SERVER['SCRIPT_FILENAME'])); + } + + foreach ($sub_directories as $sub){ + $base .= $sub . '/'; + $this->debug(3, "Trying file as: " . $base . $src); + if(file_exists($base . $src)){ + $this->debug(3, "Found file as: " . $base . $src); + $real = $this->realpath($base . $src); + if(stripos($real, $this->realpath($this->docRoot)) === 0){ + return $real; + } else { + $this->debug(1, "Security block: The file specified occurs outside the document root."); + //And continue search + } + } + } + return false; + } + protected function realpath($path){ + //try to remove any relative paths + $remove_relatives = '/\w+\/\.\.\//'; + while(preg_match($remove_relatives,$path)){ + $path = preg_replace($remove_relatives, '', $path); + } + //if any remain use PHP realpath to strip them out, otherwise return $path + //if using realpath, any symlinks will also be resolved + return preg_match('#^\.\./|/\.\./#', $path) ? realpath($path) : $path; + } + protected function toDelete($name){ + $this->debug(3, "Scheduling file $name to delete on destruct."); + $this->toDeletes[] = $name; + } + protected function serveWebshot(){ + $this->debug(3, "Starting serveWebshot"); + $instr = "Please follow the instructions at http://code.google.com/p/timthumb/ to set your server up for taking website screenshots."; + if(! is_file(WEBSHOT_CUTYCAPT)){ + return $this->error("CutyCapt is not installed. $instr"); + } + if(! is_file(WEBSHOT_XVFB)){ + return $this->Error("Xvfb is not installed. $instr"); + } + $cuty = WEBSHOT_CUTYCAPT; + $xv = WEBSHOT_XVFB; + $screenX = WEBSHOT_SCREEN_X; + $screenY = WEBSHOT_SCREEN_Y; + $colDepth = WEBSHOT_COLOR_DEPTH; + $format = WEBSHOT_IMAGE_FORMAT; + $timeout = WEBSHOT_TIMEOUT * 1000; + $ua = WEBSHOT_USER_AGENT; + $jsOn = WEBSHOT_JAVASCRIPT_ON ? 'on' : 'off'; + $javaOn = WEBSHOT_JAVA_ON ? 'on' : 'off'; + $pluginsOn = WEBSHOT_PLUGINS_ON ? 'on' : 'off'; + $proxy = WEBSHOT_PROXY ? ' --http-proxy=' . WEBSHOT_PROXY : ''; + $tempfile = tempnam($this->cacheDirectory, 'timthumb_webshot'); + $url = $this->src; + if(! preg_match('/^https?:\/\/[a-zA-Z0-9\.\-]+/i', $url)){ + return $this->error("Invalid URL supplied."); + } + $url = preg_replace('/[^A-Za-z0-9\-\.\_\~:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=]+/', '', $url); //RFC 3986 + //Very important we don't allow injection of shell commands here. URL is between quotes and we are only allowing through chars allowed by a the RFC + // which AFAIKT can't be used for shell injection. + if(WEBSHOT_XVFB_RUNNING){ + putenv('DISPLAY=:100.0'); + $command = "$cuty $proxy --max-wait=$timeout --user-agent=\"$ua\" --javascript=$jsOn --java=$javaOn --plugins=$pluginsOn --js-can-open-windows=off --url=\"$url\" --out-format=$format --out=$tempfile"; + } else { + $command = "$xv --server-args=\"-screen 0, {$screenX}x{$screenY}x{$colDepth}\" $cuty $proxy --max-wait=$timeout --user-agent=\"$ua\" --javascript=$jsOn --java=$javaOn --plugins=$pluginsOn --js-can-open-windows=off --url=\"$url\" --out-format=$format --out=$tempfile"; + } + $this->debug(3, "Executing command: $command"); + $out = `$command`; + $this->debug(3, "Received output: $out"); + if(! is_file($tempfile)){ + $this->set404(); + return $this->error("The command to create a thumbnail failed."); + } + $this->cropTop = true; + if($this->processImageAndWriteToCache($tempfile)){ + $this->debug(3, "Image processed succesfully. Serving from cache"); + return $this->serveCacheFile(); + } else { + return false; + } + } + protected function serveExternalImage(){ + if(! preg_match('/^https?:\/\/[a-zA-Z0-9\-\.]+/i', $this->src)){ + $this->error("Invalid URL supplied."); + return false; + } + $tempfile = tempnam($this->cacheDirectory, 'timthumb'); + $this->debug(3, "Fetching external image into temporary file $tempfile"); + $this->toDelete($tempfile); + #fetch file here + if(! $this->getURL($this->src, $tempfile)){ + @unlink($this->cachefile); + touch($this->cachefile); + $this->debug(3, "Error fetching URL: " . $this->lastURLError); + $this->error("Error reading the URL you specified from remote host." . $this->lastURLError); + return false; + } + + $mimeType = $this->getMimeType($tempfile); + if(! preg_match("/^image\/(?:jpg|jpeg|gif|png)$/i", $mimeType)){ + $this->debug(3, "Remote file has invalid mime type: $mimeType"); + @unlink($this->cachefile); + touch($this->cachefile); + $this->error("The remote file is not a valid image."); + return false; + } + if($this->processImageAndWriteToCache($tempfile)){ + $this->debug(3, "Image processed succesfully. Serving from cache"); + return $this->serveCacheFile(); + } else { + return false; + } + } + public static function curlWrite($h, $d){ + fwrite(self::$curlFH, $d); + self::$curlDataWritten += strlen($d); + if(self::$curlDataWritten > MAX_FILE_SIZE){ + return 0; + } else { + return strlen($d); + } + } + protected function serveCacheFile(){ + $this->debug(3, "Serving {$this->cachefile}"); + if(! is_file($this->cachefile)){ + $this->error("serveCacheFile called in timthumb but we couldn't find the cached file."); + return false; + } + $fp = fopen($this->cachefile, 'rb'); + if(! $fp){ return $this->error("Could not open cachefile."); } + fseek($fp, strlen($this->filePrependSecurityBlock), SEEK_SET); + $imgType = fread($fp, 3); + fseek($fp, 3, SEEK_CUR); + if(ftell($fp) != strlen($this->filePrependSecurityBlock) + 6){ + @unlink($this->cachefile); + return $this->error("The cached image file seems to be corrupt."); + } + $imageDataSize = filesize($this->cachefile) - (strlen($this->filePrependSecurityBlock) + 6); + $this->sendImageHeaders($imgType, $imageDataSize); + $bytesSent = @fpassthru($fp); + fclose($fp); + if($bytesSent > 0){ + return true; + } + $content = file_get_contents ($this->cachefile); + if ($content != FALSE) { + $content = substr($content, strlen($this->filePrependSecurityBlock) + 6); + echo $content; + $this->debug(3, "Served using file_get_contents and echo"); + return true; + } else { + $this->error("Cache file could not be loaded."); + return false; + } + } + protected function sendImageHeaders($mimeType, $dataSize){ + if(! preg_match('/^image\//i', $mimeType)){ + $mimeType = 'image/' . $mimeType; + } + if(strtolower($mimeType) == 'image/jpg'){ + $mimeType = 'image/jpeg'; + } + $gmdate_expires = gmdate ('D, d M Y H:i:s', strtotime ('now +10 days')) . ' GMT'; + $gmdate_modified = gmdate ('D, d M Y H:i:s') . ' GMT'; + // send content headers then display image + header ('Content-Type: ' . $mimeType); + header ('Accept-Ranges: none'); //Changed this because we don't accept range requests + header ('Last-Modified: ' . $gmdate_modified); + header ('Content-Length: ' . $dataSize); + if(BROWSER_CACHE_DISABLE){ + $this->debug(3, "Browser cache is disabled so setting non-caching headers."); + header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0'); + header("Pragma: no-cache"); + header('Expires: ' . gmdate ('D, d M Y H:i:s', time())); + } else { + $this->debug(3, "Browser caching is enabled"); + header('Cache-Control: max-age=' . BROWSER_CACHE_MAX_AGE . ', must-revalidate'); + header('Expires: ' . $gmdate_expires); + } + return true; + } + protected function securityChecks(){ + } + protected function param($property, $default = ''){ + if (isset ($_GET[$property])) { + return $_GET[$property]; + } else { + return $default; + } + } + protected function openImage($mimeType, $src){ + switch ($mimeType) { + case 'image/jpeg': + $image = imagecreatefromjpeg ($src); + break; + + case 'image/png': + $image = imagecreatefrompng ($src); + break; + + case 'image/gif': + $image = imagecreatefromgif ($src); + break; + + default: + $this->error("Unrecognised mimeType"); + } + + return $image; + } + protected function getIP(){ + $rem = @$_SERVER["REMOTE_ADDR"]; + $ff = @$_SERVER["HTTP_X_FORWARDED_FOR"]; + $ci = @$_SERVER["HTTP_CLIENT_IP"]; + if(preg_match('/^(?:192\.168|172\.16|10\.|127\.)/', $rem)){ + if($ff){ return $ff; } + if($ci){ return $ci; } + return $rem; + } else { + if($rem){ return $rem; } + if($ff){ return $ff; } + if($ci){ return $ci; } + return "UNKNOWN"; + } + } + protected function debug($level, $msg){ + if(DEBUG_ON && $level <= DEBUG_LEVEL){ + $execTime = sprintf('%.6f', microtime(true) - $this->startTime); + $tick = sprintf('%.6f', 0); + if($this->lastBenchTime > 0){ + $tick = sprintf('%.6f', microtime(true) - $this->lastBenchTime); + } + $this->lastBenchTime = microtime(true); + error_log("TimThumb Debug line " . __LINE__ . " [$execTime : $tick]: $msg"); + } + } + protected function sanityFail($msg){ + return $this->error("There is a problem in the timthumb code. Message: Please report this error at timthumb's bug tracking page: $msg"); + } + protected function getMimeType($file){ + $info = getimagesize($file); + if(is_array($info) && $info['mime']){ + return $info['mime']; + } + return ''; + } + protected function setMemoryLimit(){ + $inimem = ini_get('memory_limit'); + $inibytes = timthumb::returnBytes($inimem); + $ourbytes = timthumb::returnBytes(MEMORY_LIMIT); + if($inibytes < $ourbytes){ + ini_set ('memory_limit', MEMORY_LIMIT); + $this->debug(3, "Increased memory from $inimem to " . MEMORY_LIMIT); + } else { + $this->debug(3, "Not adjusting memory size because the current setting is " . $inimem . " and our size of " . MEMORY_LIMIT . " is smaller."); + } + } + protected static function returnBytes($size_str){ + switch (substr ($size_str, -1)) + { + case 'M': case 'm': return (int)$size_str * 1048576; + case 'K': case 'k': return (int)$size_str * 1024; + case 'G': case 'g': return (int)$size_str * 1073741824; + default: return $size_str; + } + } + protected function getURL($url, $tempfile){ + $this->lastURLError = false; + $url = preg_replace('/ /', '%20', $url); + if(function_exists('curl_init')){ + $this->debug(3, "Curl is installed so using it to fetch URL."); + self::$curlFH = fopen($tempfile, 'w'); + if(! self::$curlFH){ + $this->error("Could not open $tempfile for writing."); + return false; + } + self::$curlDataWritten = 0; + $this->debug(3, "Fetching url with curl: $url"); + $curl = curl_init($url); + curl_setopt ($curl, CURLOPT_TIMEOUT, CURL_TIMEOUT); + curl_setopt ($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30"); + curl_setopt ($curl, CURLOPT_RETURNTRANSFER, TRUE); + curl_setopt ($curl, CURLOPT_HEADER, 0); + curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, FALSE); + curl_setopt ($curl, CURLOPT_WRITEFUNCTION, 'timthumb::curlWrite'); + @curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, true); + @curl_setopt ($curl, CURLOPT_MAXREDIRS, 10); + + $curlResult = curl_exec($curl); + fclose(self::$curlFH); + $httpStatus = curl_getinfo($curl, CURLINFO_HTTP_CODE); + if($httpStatus == 404){ + $this->set404(); + } + if($curlResult){ + curl_close($curl); + return true; + } else { + $this->lastURLError = curl_error($curl); + curl_close($curl); + return false; + } + } else { + $img = @file_get_contents ($url); + if($img === false){ + $err = error_get_last(); + if(is_array($err) && $err['message']){ + $this->lastURLError = $err['message']; + } else { + $this->lastURLError = $err; + } + if(preg_match('/404/', $this->lastURLError)){ + $this->set404(); + } + + return false; + } + if(! file_put_contents($tempfile, $img)){ + $this->error("Could not write to $tempfile."); + return false; + } + return true; + } + + } + protected function serveImg($file){ + $s = getimagesize($file); + if(! ($s && $s['mime'])){ + return false; + } + header ('Content-Type: ' . $s['mime']); + header ('Content-Length: ' . filesize($file) ); + header ('Cache-Control: no-store, no-cache, must-revalidate, max-age=0'); + header ("Pragma: no-cache"); + $bytes = @readfile($file); + if($bytes > 0){ + return true; + } + $content = @file_get_contents ($file); + if ($content != FALSE){ + echo $content; + return true; + } + return false; + + } + protected function set404(){ + $this->is404 = true; + } + protected function is404(){ + return $this->is404; + } +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/readme.txt b/wp-content/plugins/events-manager/readme.txt new file mode 100644 index 0000000..86fd9b5 --- /dev/null +++ b/wp-content/plugins/events-manager/readme.txt @@ -0,0 +1,850 @@ +=== Events Manager === +Contributors: netweblogic, nutsmuggler +Donate link: http://wp-events-plugin.com +Tags: events, event, event registration, event calendar, events calendar, event management, paypal, registration, ticket, tickets, ticketing, tickets, theme, widget, locations, maps, booking, attendance, attendee, buddypress, calendar, gigs, payment, payments, sports, +Requires at least: 3.3 +Tested up to: 3.4 +Stable tag: 5.1.8.5 + +Fully featured event registration management including recurring events, locations management, calendar, Google map integration, booking management + +== Description == + +Events Manager is a full-featured event registration plugin for WordPress based on the principles of flexibility, reliability and powerful features! + +Version 5 now makes events and locations WordPress Custom Post Types, allowing for more possibilities than ever before! + +* [Demo](http://demo.wp-events-plugin.com/) +* [Documentation](http://wp-events-plugin.com/documentation/) +* [Tutorials](http://wp-events-plugin.com/tutorials/) + += Main Features = + +* Easy event registration (single day with start/end times) +* Recurring and long (multi-day) event registration +* Bookings Management (including approval/rejections, export CVS, and more!) +* Multiple Tickets +* MultiSite Support +* BuddyPress Support + * Submit Events + * Group Events + * Personal Events + * Activity Stream + * more on the way +* Guest/Member Event submissions +* Assign event locations and view events by location +* Event categories +* Easily create custom event attributes (e.g. dress code) +* Google Maps +* Advanced permissions - restrict user management of events and locations. +* Widgets for Events, Locations and Calendars +* Fine grained control of how every aspect of your events are shown on your site, easily modify templates from the settings pages and template files +* iCal Feed (single and all events) +* Add to Google Calendar buttons +* RSS Feeds +* Compatible with SEO plugins +* Plenty of template tags and shortcodes for use in your posts and pages +* Actively maintained and supported +* Lots of documentation and tutorials +* And much more! + += Go Pro = +We have also released an add-on for Events Manager which not only demonstrates the flexibility of Events Manager, but also adds some important features: + +* PayPal, Authorize.net and Offline Payments +* Custom booking forms +* Coupon Codes +* Faster support via private forums + +For more information or to go pro, [visit our plugin website](http://wp-events-plugin.com). + +== Installation == + +Events Manager works like any standard Wordpress plugin, and requires little configuration to start managing events. If you get stuck, visit the our documentation and support forums. + +Whenever installing or upgrading any plugin, or even Wordpress itself, it is always recommended you back up your database first! + += Installing = + +1. If installing, go to Plugins > Add New in the admin area, and search for events manager. +2. Click install, once installed, activate and you're done! + +Once installed, you can start adding events straight away, although you may want to visit the plugin site documentation and learn how to unleash the full power of Events Manager. + += Upgrading = + +1. When upgrading, visit the plugins page in your admin area, scroll down to events manager and click upgrade. +2. Wordpress will help you upgrade automatically. + += Upgrading from version 4 to 5 = + +Please [read these instructions](http://wp-events-plugin.com/updating-to-v5/). + +== Upgrade Notice == + +For those upgrading from version 4 to 5, please [read these instructions](http://wp-events-plugin.com/updating-to-v5/). + +== Frequently Asked Questions == + +See our [FAQ](http://wp-events-plugin.com/documentation/faq/) page, which is updated more regularly. + +== Screenshots == + +1. Event registration and user submitted events pending approval +2. Event ticketing and bookings forms, easily styleable. +3. Multiple tickets with constraints and prices +4. Locations with google map integration +5. Event registration page +6. Manage attendees with various booking reports + +== Changelog == += 5.1.8.5 = +* fixed bug with bookings being open/closed due to changes in 5.1.8.5 + += 5.1.8.4 = +* fixed some issues in the EM blog updater and EM use of table constants +* improved BP member link generation in activity stream, uses bp_core_bet_user_domain now +* fixed cancellation link disappearing after booking cut-off date, even if event hasn't started +* fixed use of some get_price style filters and supplying pre-formatted currency numbers +* fixed pagination issues in shortcodes +* fixed booking table ajax issues +* fixed location auto-completer not working when maps are disabled +* fixed ical all-day event issues when offsets come into play +* fixed single day ical offset problems + += 5.1.8.3 = +* fixed bookings being closed if booking cut-off date/time not specificed in new events + += 5.1.8.2 = +* added booking cut-off times +* fixed events with bookings table ajax +* fixed bp group events list not showing location info +* fixed calendar day pages showing 'past' events if option is set not to + += 5.1.8.1 = +* important - Modified template files? See this http://em.cm/templates-5181 +* fixed date ranges not working properly +* fixed pagination issues + += 5.1.8 = +* important - Modified template files? See this http://em.cm/datetime +* fixed jigoshop session_start conflict +* removed some group metabox php warnings +* fixed slashes added to location/event name in db table +* fixed/improved multisite capability management (see network admin settings) +* events with >1 ticket will show multi-ticket editor regardless of single ticket mode setting +* updated Brazilian language, added Catalan and fixed a few language datepicker oddities +* fixed RSS validation fails for some special characters +* fixed cancellations being possible after event boookings close +* fixed admin-side search-by-category +* fixed manage_others_bookings not allowing access to bookings without other caps +* fixed calendar widgets taking on day link search arguments from other parts of the page +* fixed admin email problems when in auto-approve mode and using alternate status numbers e.g. 5 +* added force-approve booking flag in EM_Booking::set_status +* fixed ical locations and apostrophes and single ical file time offsets +* fixed gallery shortcode for recurring events +* fixed guest event submission auto-complete +* refactored booking form JS to allow multiple forms on one page +* fixed some booking js ui animations +* fixed booking table overlay issues +* added more js vars for translation purposes +* improved placeholder replacement logic +* added em_event_submission_login filter +* simplified timepicker and datepicker JS and html strucuture for re-use +* EM_Notices behaviour changed so errors are printed and not deleted, only at start/end of script + += 5.1.7 = +* added excludeable categories (use negative numbers instead) +* clarified some of the field tips of "other pages" in options +* fixed thumbnail issue in MS (again) +* added event dates and times as sortable booking collumns +* fixed multisite duplicate post id bug in global mode +* simplified meaning of EM_Bookings::get_booked_spaces, so it's just booked spaces, not pending. get_available_spaces() should be used for reserved seats instead. +* replaced old default date formats with #_EVENTDATES and #_EVENTTIMES +* fixed some datepicker problems in single ticket mode with start/end date tickets +* removed jQuery datepicker and autocomplete libraries, now using WP's internal scripts instead +* improved the reliability of returned json data in booking form +* fixed categories not editable in front-end, +* added email not sent flag to booking object +* fixed tags not working for slug searches +* fixed dst issues in ical calendars +* added name/slug search fall back for tags search +* added datepicker custom date formatting +* fixed non registered user problem for failed JS submissions +* fixed some rsvp conditional and gcal placeholders +* added jquery-ui-css id to jquery ui css loader to promote compatability with others +* you can now add a custom functions.php file within yourtheme/plugins/events-manager/ +* improved title rewriting compatibility +* added hierarchies to category dropdowns +* fixed an object reference error in em-object.php send_mail() +* added jQuery em_booking_success event to document +* fixed tickets not showing start/end dates in admin after editing +* fully booked message now shown rather than closed message +* location description won't take event description in public submission forms +* re-added get_date_format for backwards compatability with overriding templates +* fixed pagination issue in my events page on front-end +* fixed potential security xss exploit in json call links +* fixed default country overriding all country search option on search pages +* fixed pagination issue on my events page on the front-end + += 5.1.6 = +* fixed multiple admin emails not going out +* updated timthumb to v2.8.10 +* updated placeholder outputting to avoid overwriting longer variations of similarly named placeholders +* fixed #_BOOKINGTICKETNAME not working +* single location and event pages will still use location-single.php and event-single.php templates +* fixed thumbnail image links on multisite to work with timthumb, thanks BinaryMoon for the tut! +* Reduced sql calls for booking object instantiation. $EM_Booking->custom doesn't exist anymore, and notes must be loaded first with $EM_Booking->get_notes(). +* EM_Category->has_events() depreciated, returns false always +* More wp_rewrite tweaks to improve compatability +* fixed 24 hour formatting setting being ignored in timepicker +* fixed bad datepickers in single ticket mode +* fixed locations not being auto-approved if submitted via front-end and event is auto-approved. + += 5.1.5 = +* rewritten booking email function, simpler, less error-prone, overriedable and yet same effect +* fixed tax not showing on booking table totals +* fixed booking objects get_price filters, removed em_booking_get_prices from em-ticket-booking.php in place of em_ticket_booking_get_price +* changed filter name em_tickets_bookings_get_prices to em_tickets_bookings_get_price (bad name according to convention) +* admin email can be sent to multiple emails (comma delimited in settings) +* added booking status message filter +* added custom no events message in events widget +* fixed ical not working in non-permalinks mode ( must have /?ical=1 at end of homt url ) +* removed original CSV export link in place of booking table exporter, unless users made a custom template +* BuddyPress private group or normal private event info are now not shown in site activity. +* fixed some php warnings +* fixed certain languages breaking date formats +* added #_EVENTCATEGORIESIMAGES +* added yearly recurrences +* added a cut-off date for bookings, so bookings can take place past event start dates +* fixed some issues with dev mode checks +* fixed booking button and multiple bookings at once bug +* fixed ticket spaces export bug +* fixed rss pubdate format +* improved CSS for booking tables front-end +* edit event locations dropdown shown to users if they can read events (previously only if could edit) +* updated the POT file and Swedish translations +* added #_CONTACTMETA placeholder +* cleaned up the RSS filters so HTML now is allowed in feed + += 5.1.4.3 = +* fixed bp group hidden events not going private +* fixed countries list not working for certain langauges + += 5.1.4.1 = +* fixed wp rewrite issue when assigned events page slug = events slug +* fixed minimum ticket price placheholder problems +* added dev version auto-updater +* improved performance in events with booking widget listings +* improved performance in date range searches (e.g. calendar) +* reverted to using .delegate() instead of jQuery 1.7+ .on() listener for compatibility +* slightly improved mail options logic and layout (plus php mail can send html emails now) +* fixed buddypress conflict if groups component is disabled +* fixed event spaces not overriding displayed values in booking stats pages + += 5.1.4 = +* pinpoint your location with dragable map markers! +* sortable booking table collumns and additional collumns +* seriously improved CSV exporting options with sortable booking collumns +* buddypress private group events now only shown to group members +* added extra ID collumns to event/location/category admin lists +* resend emails, change booking status, and modify booking form information as well as ticket numbers +* any aspect of a booking can now be edited front-end with or without BuddyPress +* customizable cancel booking message and confirmation +* 24 hour option for time pickers possible in admin area +* wp archive options visible now regardless of event/location page options +* further fixes to post thumbnail compatability (hopefully fixed for good!) +* added "Add New" location and recurring events to admin bar +* blank pending status corrected in my bookings pages +* fixed event categories when event is a subsite event shown on main site +* added Swedish datepicker translations +* fixed pagination issue +* updated Danish, Dutch, Swedish languange files +* small fix for duplicating plugins that keep the event id when saving dupe (WPML fix) +* added ticket name field in single ticket mode +* fixed pre 2k events showing in future events list in admin area +* changed calendar linking so it works on all/most themes without JS +* fixed bad translation of JS calendar days in Italian +* hard-coded country names for currently translated languages +* fixed some incompatibilities with Yoast Breadcrumbs +* modified date fixed in ical +* single event ical endpoint detection improved +* fixed reserved spaces miscalculation bug +* invalid taxonomy ids now stripped from searches +* improvements to wp rewrite compatability by registering events and locations in varied order +* fixed recurrence bug for single day events ending next early morning +* depreciated attributes deleted if blank and resaved +* single-event.php now overrides EM regardless of page settings +* front-end deleted events now trashed (if available) rather than deleted +* fixed errors on recurring event creation with bad ticket data +* admin localized js variables (messages) hidden to public +* php and wp mail functions called directly instead of via em/phpmailer +* depreciated js .live() calls and used jQuery 1.7's .on() function, hence min wp 3.3 version + += 5.1.3 = +* added is_past and is_future conditionals +* corrected conditional regex to allow multiple duplicate conditionals and nesting +* fixed some wp_rewrite irregularities due to slug combinations/conflicts +* fixed template format files not overriding + + += 5.1.2 = +* fixed auto-delete bug where auto-draft recurring events deletes all events +* fixed recurrence pattern bug +* calendar ajax links are now SE and non JS friendly +* rss link fixed in non-permalinks mode +* added sorting options to my bookings page +* updated de_DE, cs_CZ, dk_DK +* fixed admin email not going out if booking approvals disabled + += 5.1.1 = +* fixed search JS bug, preventing searchings being made + += 5.1 = +* revised booking form template files (future-feature-proofing), simplified booking JS +* added readme files on updating templates with docs and commented further on templates +* improved booking button (allows cancellation) +* added disable email if subject is blank +* bookings can now have a overall spaces cap which override individual ticket spaces. +* improved compatibility with themes not supporting featured images +* improved the booking form ajax table to allow more customizability. +* calendars now will by default direct single event days directly to event page +* added various price related and location placeholders +* fixed post_id not being used in shortcode attributes +* fixed italian datepicker problem +* quick edit now reflects publish status +* GBP sign format corrected (encoding issue) +* fixed admin cross-post search function conflicts +* fixed some public side search issues +* fixed notes placeholders not formatting on some instances (e.g. categories) +* bp activity feed now reports cancelled bookings again +* location form now prefills region when loading prev. location +* fixed event sorting order for same-day events on archives (requires resaving the events). +* made times displayed on post tables use WP general time settings for consistency +* fixed empty tr in calendars +* fixed missing category meta box in MS global mode +* added em_wp_localize_script filter for hooking into localization of js +* moved anonymous event submissions back into blog settings in MS mode +* added "email exists" customizable message + += 5.0.51 = +* fixed limit issue for calendars when no limit is set +* bookings feedback messages showing properly again +* manage my bookings page link functioning correctly now +* GBP pound sign fixed +* fixed location atts setting box not being checked for placeholders + += 5.0.50 = +* bookings table now within a unified ajax table +* added location attributes +* added currency formatting +* added "all day" format setting for #_EVENTTIMES +* added calendar ordering an limits (full-sized calendar) +* moved 'add new' button next to event lists outside wp-admin +* fixed some redirection issues for some themes +* small date formatting fixes for international english +* ticket bookings now deleted with overall booking +* categories now copied correctly when duplicating events +* tickets can now just be shown to logged out users +* added is_long, not_long, logged_in, not_logged_in, fully_booked and has_spaces conditionals +* fixed a preg issue with date formatting +* booking modifications possible again (ticket numbers) +* pending space counting in emails corrected + += 5.0.42 = +* changed csv booking time to 24 hr format +* fixed EM_URI error +* added logged_in not_logged_in conditional placeholders +* buddypress does not override pages defined in settings > pages > other pages +* default events install properly now +* title seperator problem fixed +* fixed add theme support for thumbnail function not firing early enough + += 5.0.41 = +* fixed fatal error on install (bug since 5.0.4) +* italian js translation added to prevent js error +* CVS title bug fix + += 5.0.4 = +* added installation throttle, to prevent double event imports +* pending events migrate as pending now +* index auto-correction for non-indexed events/locations on save +* wp_rewrite theme compat hack for some offending themes +* guest submission now showing success message +* added events_gcal shortcode for google calendar +* fixed bad BP links in edit event/location tables +* added single event ical endpoint +* added import to google event placeholder +* fixed em_content_pre problem +* group event locations label showing +* empty attributes are saved when previously filled + += 5.0.3 = +* searching from/to without one or another date works as intended +* fixed various old-named properties (and refreshed old properties after object save) +* fixed overriding front-end edit links from within admin area +* fixed #_EDITEVENTURL +* fixed location placeholder output/filter function +* fixed missing php in opening tag of search template + += 5.0.2 = +* fixed new booking id not being saved and passed to filters +* fixed booking placeholders not showing +* single category placeholders working for event formats +* search form has options section with configurable texts + += 5.0.1 = +* js correction preventing maps loading + += 5.0 = +* Events and Locations are now custom post types +* categories are now custom taxonomies +* events can have tags +* new placeholders, conditionals and search attributes +* BuddyPress module rewritten using 1.5 BP_Component api +* list pages split up, assign a page for each list +* extended page formatting options +* new time picker and improved datepicker +* various bugs fixed +* streamlined templates and consolidated varoius list templates +* event and location editors revamped, consolidated and basic CSS added for front-end forms +* Locations are now optional (if chosen) +* more capabilities added for finer permission control +* all day events possible + += 4.305 = +* fixed my-bookings.php template for pagination errors +* fixed duplicate tickets produced in buddypress editor +* removed console.log from js +* fixed owner=0 when admins create ownerless events +* fixed bp activity posting of member links in 1.5 + += 4.304 = +* added pubdate to rss feed +* fixed datepickers in single ticket mode not showing saved dates +* fixed bookings view/edit link on second pages of ajax navigator +* added Aruba to countries list +* corrected login error string not being overriden +* removed bogus event settings page in BP (for now) +* attendees list now ommitting unconfirmed bookings +* booking addon pages should now override correctly +* improved buddypress activity notification (supports pro stuses and only one activity if a group event) + += 4.303 = +* fixed PHPMailer conflict when in wp_mail mode +* added html support in emails (if using smtp) +* new event owner now auto-selected +* tickets now duplicated along with event +* blank ticket price validation error fixed +* fixed 'available spaces' bug when only one remaining reserved/pending space is confirmed + += 4.302 = +* group events show proper links to event pages, not edit pages +* PHPMailer updated to v5.2.0 +* can_manage bug in MS Mode fixed +* added more actions to ticket forms/tables +* events_calendar shortcode now filtering location search attributes as expected + += 4.301 = +* saving event tickets will now validate properly with meaningful errors +* my-bookings page will show/hide bookings depending on multisite settings (MS only) +* adjusted EM_Events output to use old preg from 4.212 but process custom atts beforehand + += 4.300 = +* more calendar css cleanup +* timepicker now working for public event forms +* user cancellation of bookings now an option in settings +* tax percentage option +* fixed compatability with yoast seo plugin (EM overwrites the title) +* custom attributes breaking when nested in conditional tags fixed +* BP child themes should work properly now without the plugins.php file +* ical DQUOTES problem removed +* events now receive approval confirmation by email +* optional user registration + += 4.212 = +* removed JS entirely from booking form template, still included in footer (overriden templates should remove JS to avoid errors) +* fixed booking status name mixup when approvals are disabled +* added option to enable/disable user booking cancellation +* booking search attribute can use 'user' to show events booked by logged in user + += 4.211 = +* best explained here: http://wordpress.org/support/topic/tagging-new-plugin-version-issues?replies=14#post-2376253 + += 4.2 = +* forced update to correct wordpress repository db update notification +* jquery CSS loaded by js if needed for the datepicker +* small css tweaks/fixes to the calendar +* fixed js captcha warning +* fixed warnings +* event_form time entry now using the js time entry script +* double booking now working as expected +* hid some event booking info/links for admin viewers in group event pages +* buddypress my bookings screen fixed + += 4.18 = +* corrected bad HTML in default category page format +* added booking form JS to the wp_footer area for more theme compatability +* added em_admin_paginate filter +* added em_bookings_{action} action for bookings page +* updated placeholder docs +* new tickets ordering setting +* ticket name and descriptions accept images and link html +* fixed bug when using whole year searches in shortcode +* edit bookings link placeholders won't show to users without permission +* booking form will not show when an event is fully booked +* fixed #_BOOKINGTICKETS placeholder showing incorrect space numbers +* cancel booking link re-appearing in my-bookings section +* improved display of group events +* fixed double seperator in title +* scope now being correctly saved in event widgets +* removed unnecesary filtering in email content, causing html entities in plaintext +* updated pot and German/Sweedish translations + += 4.171 = +* tagged 4.17 in the repo as 4.171 due to premature release + += 4.17 = +* delete category/location/event image option added +* added some escaping functions to outputs in calendar +* fixed table duplicate index problem +* added customizable booking form notices +* RSS now passes the W3 Validator +* tested and passed for BuddyPress 1.5 +* fixed various warnings +* updated sweedish translation +* categories page title now working in disable title rewrite +* fixed the WP title seperator bug +* updated help placeholder list +* fixed badly named category events placeholders and added backward compatability +* locations_map shortcode now accepts location search attributes +* added option to prevent double bookings for one event +* changed rsvp search attribute into bookings and added backward compatability +* attribute dropdowns don't show a 'no value' since the first option should be default + += 4.16 = +* image thumbnails added +* phone and further email booking problems fixed +* added ical feed settings +* added category events list formatting options (previously taken from location settings) +* split up booking form template file into template parts +* single ticket events with only one space (due to limits or availability) won't show selection box +* added some widget filters for search arguments +* booking notes bug in 4.15 fixed +* calendar widget fix for eventful today links not showing +* event, location and category slugs can now be changed via the wp-config.php file + += 4.15 = +* single events can now be converted to recurring +* booking approval issue fixed +* group Event activities now included group wall +* fixed recurrence bug, where rescheduled past events aren't deleted +* dbem_phone fix +* initial password will now allow users to log in (bug in 4.14 only) +* fixed google map balloon centering and IE8 incompatability +* added the UK nations +* changed usernames shown in booking areas to full name (if available) + += 4.14 = +* Admin-editable bookings/tickets +* BP menu items do not show if a user doesn't have the relevant capabilities +* Member/Guest submit forms improved (still in beta due to pending template changes, but functionality is there) +* Updated the help pages with new placeholders +* Fixed a register-before-booking bug +* CSV event bookings export now an overridable template +* Cleaned up some ical formatting problems +* Countries list updated +* Fixed datepicker js issue in tickete +* Calendar headings have mb_ support for multi-byte characters. +* Various smaller bugfixes and warning removals + += 4.13 = +* events now allow 10 digit booking prices, if you have an event that costs more than this, call me :) +* fixed confirmation emails not firing from paid bookings +* fixed #_BOOKEDSPACES not including the confirmed booking in the total +* event details aren't copied by mistake to a location +* fixed booking notes +* added em_event_owner_dropdown_users filter +* added category selection in calendar widget + += 4.12 = +* fixed JS problem in admin area when WPLANG is set +* fixed confirmation email bug for pro users +* added belize to countries list + += 4.11 = +* fixed conflict of default category/event widget +* added/fixed some gettext domains +* removed some php warnings +* corrected filter misspelling of em_booking_get_prices to em_booking_get_price +* added a few new filters +* fixed initial notification emails not going out to event contact on pro payments + += 4.1 = +* nothing, just trying to get WP to recognize a new update + += 4.0.9 = +* added various google/user translated languages and updated pot file +* fixed various gettext domain errors +* search form defaults and behaviour fixed +* added dates to buddypress group events template +* improved the google maps js insertion (updated with google's new recommended code) +* no pending approvals when switching from auto-approval to approval mode +* added new "within month" scope +* various other nuances fixed + += 4.0.83 = +* added option to remove booking login form +* fixed login issues when guest bookings is disabled +* registration email is optional +* added option to show ticket table even in single ticket mode +* fixed search defaulting to default country when all countries selected +* fixed ical timezone issue +* corrected some typos +* added Jamaica and Bolivia to countries list +* added guest event and member submissions with [event_form] +* fixed location search ownership issue +* added new template tags for page type detection +* fixed some ticket display issues +* added search filter in event +* updated the docs (although needs a thourough revision once more) + += 4.0.82 = +* fixed bookings missing in non-approval mode + += 4.0.81 = +* fixed events not editing due to new location js +* fixed pro notification +* fixed calendar ajax year switching issue + += 4.0.8 = +* just made settings page expanded +* added some update notifications for pro user + += 4.0.7 = +* minium WP version is now 3.1 +* prevented JS loading in non-EM admin screens again +* updated jQuery ui objects to use the 1.8.x core +* removed dependency on ajaxForm javascript +* new booking ticket placeholders for emails +* images now saving in recurrence mode +* images now saving in multisite global/local modes +* LOADS of bugfixes in buddypress +* removed user list showing for normal location editors +* cleaning up the attributes e.g. apostrophes +* images kept when detaching recurrent event +* location and categories now have slug choice and get properly cleaned +* added and corrected some countries (Syria, Peru, corrected Panama code) +* added option to disable registration emails going out +* tickets now accept digits, e.g $1.50 +* location form in event more intuitive when using previous locations +* location form and map degrade more gracefully with small screens now. +* removed various php warnings + += 4.0.6 = +* removed more php warnings +* fixed recurrence issue +* improved default values of country/state/region in search forms +* fixed ticketing issues with recurrences +* added workaround for IIS users with 404 issues +* fixed global maps not working in some instances +* made notice collisions when saving in sessions less likely +* fixed MS recurrence issue + += 4.0.5 = +* removed various php warnings +* added explanation for incorrect recurrences +* fixed RSS title/desc not using html entities +* fixed event widget scope problem +* MultiSite superadmins can manage all + += 4.0.4 = +* Fixed the 404 problem +* added Peru to countries, fixed broken accented characters in country lists +* added ticket description to booking form. +* reordered the search form to make more sense + += 4.0.3 = +* Fixed the update method for good now +* fixed booking pending email discrepency +* other minor booking bugs +* ics file formatting fix +* buddypress group events working as expected again +* booking form and rsvps showing fixed +* fixes to search form + += 4.0.2 = +* updated default formats and event options on install +* fixed title meta location problem +* added town/country/state/region search attributes for locations +* added extra linking formatting for calendars (minor tweak for bug report) +* datepicker locale now matches WPLANG setting (if applicable) +* fixed recurrence and category issues +* changed version update mechanism + += 4.0.1 = +* fixed recurrence slug and creation issue +* fixed created/modified dates which weren't always updating +* added bvi and greenland to countries list +* got rid of known warnings to date +* fixed various issues with the search form ajax and loaded values +* added extra location info to columns +* location placeholders fixed +* attribute now working properly as intended + += 4.0 = +* see http://wp-events-plugin.com/news/events-manager-4-0-released/ + += 3.0.97 = +* Restoring stable version + += 3.0.96 = +* fixed js hook bug, you must now bind your function to the document's custom em_maps_locations_hook and em_maps_location_hook event triggers using jquery +* fixed tinymce bug with linking which cropped up in 3.1 due to new WP linking window. +* event_date_modified now properly updated + += 3.0.95 = +* removed some php warnings +* fixed blank widget defaults (resave current widgets to replace blanks with defaults) +* fixed calendar bug, where old events aren't being shown +* fixed calendar css for events on the current day +* unapproval is now reject if pre-approvals are turned off +* delete bookings working again +* booking emails working as expected without pre-approvals +* added js hook for maps +* fixed qtranslate conflict, delayed mo file loading for better compatability with wpml + += 3.0.94 = +* Fixed missing events, locations etc. due to permissions +* Fixed location widget bug +* fixed broken global map js + += 3.0.93 = +* Fixed bug with ownership and widgets +* Resolved 2.9 incompatibility +* Fixed rss ownership bug +* Fixed calendar bug where pre/post dates don't show events +* Fixed calendar, now showing today correctly +* Categories blank page fix +* fixed page nav conflicts with role scoper +* added shortcut to manage bookings on event list + + += 3.0.92 = +* Fixed permission issue +* Fixed category not saving +* Fixed location saving issue + + += 3.0.91 = +* Documentation finally up to date now! +* widget bug fixed +* added event permissions, so users can manage their own events/locations/categories +* improved event booking UI and management tools +* export CSV of bookings +* booking approvals added +* bookings can have individual notes +* calendar widget shows selected month if clicked on +* custom attributes field, for atts that don't need to be in a template (e.g. pdf file url) +* time limit for main events list and events widget (e.g. show events that occur within x months) +* default location +* default category +* added extra validation so event start date/times can't be after end date/time +* calendar navigation will pass on all arguments for following month (e.g. category, etc) +* small map balloon fix for some rare js conflicts +* fixed location gui editor + += 3.0.9 = +* Fixed small calendar discrepancies +* added event and location single shortcodes +* shortcodes now accept html within format attribute or within the shortcode tags [like]

          this

          [/like] +* fixed pagination functionality (or lack thereof) in shortcodes +* improved user experience when navigating/editing events in admin area +* added #_CONTACTAVATAR placeholder - avatar for contact person +* ajax loading spinner graphic added to calendars +* internal wp_mail support added +* added "all events" link to events widget +* fixed date translations +* cleaned up the settings page documentation and added placeholder docs on help page. +* fixed "enable notification emails" option in settings +* added admin email option that would be send every event booking to admin + += 3.0.81 = +* Fixed pagination bugs +* Global locations map won't show locations with 0-0 coords +* Fixed bug in recurrence description +* Removed most (if not all) php warnings +* Fixed booked seats calculation errors +* Removed dependence on php calendar + += 3.0.8 = +* Event lists now have pagination links for both admin and public areas! +* Fixed time zone issue with calendars, now taking time from WP settings, not server +* Added option to show long events if showing a calendar of events page. +* Multiple maps on one page will now show up. +* Modified styling of map balloons to not use #content (if you modded your theme, look at the CSS to override). +* Media uploads in GUI now working as expected +* Orderby ordering in events widget + += 3.0.7 = +* Renaming a few functions/shortcodes for consistency +* Fixing #_LOCATIONPAGEURL issue +* Fixed ordering issue again +* New template tags +* First filter + += 3.0.6 = +* Added revised German translation +* Fixed ordering issue +* Fixed old template tag attributes not being read +* Changed map balloon wrapper id to class + += 3.0.5 = +* Fixed 12pm bug +* Re-added #_LOCATIONPAGEURL (although officially it's depreciated) +* Added default order by settings in options page +* Added default event list limits in options page +* Added orderby attribute for shortcode +* scope attribute now also allows searching between dates, e.g. "2010-01-01,2010-01-31" +* Fixed booking email reporting bug + += 3.0.4 = +* Title rewriting workaround for themes where main menus are broken on events pages +* Added option to show lists on calendar days regardless of whether there is only one event on that day. +* added Spanish translation +* fixed rsvp deletion issue +* fixed potential phpmailer conflicts +* CSS issue with maps fixed +* optimized placeholders, adding new standard placeholders + += 3.0.3 = +* RSS Showing up again +* Fixed some reported fatal errors +* Added locations widget +* Adding location widget +* optimizing EM_Locations and removing redundant code across objects +* fixed locations_map shortcode attributes +* harmonized search attributes for locations and events +* rewrote recurrence code from scratch +* got rid of most php notices + += 3.0.2 = +* Recruccence bugfix + += 3.0.1 = +* Fixed spelling typos +* Fixed warnings for bad location image uploads (e.g. too big etc.) +* Fixed error for #_EXCERPT not showing + += 3.0 = +* Refactored all the underlying architecture, to make it object oriented. Now classes and templates are separate. +* Merged the events and recurrences tables +* Tables migration from dbem to em (to provide a fallback in case the previous merge goes wrong) +* Bugfix: 127 limit increased (got rid of tinyint types) +* Bugfix: fixed all major php bugs preventing the use with Wordpress 3.0 +* Bugfix: fixed all major js bugs preventing the use with Wordpress 3.0 +* Restyling of the Settings page +* Added a setting to revert to 2.2 +* optimizing EM_Locations and removing redundant code across objects + +For changelog of 2.x and lower, see the readme.txt file of version 2.2.2 \ No newline at end of file diff --git a/wp-content/plugins/events-manager/screenshot-1.png b/wp-content/plugins/events-manager/screenshot-1.png new file mode 100644 index 0000000..7d18eb2 Binary files /dev/null and b/wp-content/plugins/events-manager/screenshot-1.png differ diff --git a/wp-content/plugins/events-manager/screenshot-2.png b/wp-content/plugins/events-manager/screenshot-2.png new file mode 100644 index 0000000..4474c01 Binary files /dev/null and b/wp-content/plugins/events-manager/screenshot-2.png differ diff --git a/wp-content/plugins/events-manager/screenshot-3.png b/wp-content/plugins/events-manager/screenshot-3.png new file mode 100644 index 0000000..a8a7836 Binary files /dev/null and b/wp-content/plugins/events-manager/screenshot-3.png differ diff --git a/wp-content/plugins/events-manager/screenshot-4.png b/wp-content/plugins/events-manager/screenshot-4.png new file mode 100644 index 0000000..bca1473 Binary files /dev/null and b/wp-content/plugins/events-manager/screenshot-4.png differ diff --git a/wp-content/plugins/events-manager/screenshot-5.png b/wp-content/plugins/events-manager/screenshot-5.png new file mode 100644 index 0000000..1da0748 Binary files /dev/null and b/wp-content/plugins/events-manager/screenshot-5.png differ diff --git a/wp-content/plugins/events-manager/screenshot-6.png b/wp-content/plugins/events-manager/screenshot-6.png new file mode 100644 index 0000000..b70c410 Binary files /dev/null and b/wp-content/plugins/events-manager/screenshot-6.png differ diff --git a/wp-content/plugins/events-manager/templates/buddypress/group-events.php b/wp-content/plugins/events-manager/templates/buddypress/group-events.php new file mode 100644 index 0000000..8d65eed --- /dev/null +++ b/wp-content/plugins/events-manager/templates/buddypress/group-events.php @@ -0,0 +1,165 @@ +events->link . 'my-events/'; //url to this page + $order = ( !empty($_REQUEST ['order']) ) ? $_REQUEST ['order']:'ASC'; + $limit = ( !empty($_REQUEST['limit']) ) ? $_REQUEST['limit'] : 20;//Default limit + $page = ( !empty($_REQUEST['pno']) ) ? $_REQUEST['pno']:1; + $offset = ( $page > 1 ) ? ($page-1)*$limit : 0; + $EM_Events = EM_Events::get( array('group'=>'this','scope'=>'future', 'limit' => 0, 'order' => $order) ); + $events_count = count ( $EM_Events ); + $future_count = EM_Events::count( array('status'=>1, 'owner' =>get_current_user_id(), 'scope' => 'future')); + $pending_count = EM_Events::count( array('status'=>0, 'owner' =>get_current_user_id(), 'scope' => 'all') ); + $use_events_end = get_option('dbem_use_event_end'); + echo $EM_Notices; + ?> +
          + = $limit ) { + $events_nav = em_admin_paginate( $events_count, $limit, $page); + echo $events_nav; + } + ?> +
          +
          + + ". __( 'No Events','dbem' ) ."

          "; + } else { + ?> + + + + + + + + */ ?> + + + + + + + + = $offset || $offset === 0) ) { + $rowno++; + $class = ($rowno % 2) ? 'alternate' : ''; + // FIXME set to american + $localised_start_date = date_i18n('D d M Y', $event->start); + $localised_end_date = date_i18n('D d M Y', $event->end); + $style = ""; + $today = date ( "Y-m-d" ); + $location_summary = "" . $event->get_location()->name . "
          " . $event->get_location()->address . " - " . $event->get_location()->town; + + if ($event->start_date < $today && $event->end_date < $today){ + $class .= " past"; + } + //Check pending approval events + if ( !$event->status ){ + $class .= " pending"; + } + ?> + id="event_event_id ?>"> + + + + */ ?> + + + + + + + + + +
           
          + + can_manage('edit_events','edit_others_events') ){ + echo $event->output('#_NAME'); + }else{ + echo $event->output('#_EVENTLINK'); + } + ?> + + can_manage('manage_bookings','manage_others_bookings') && get_option('dbem_rsvp_enabled') == 1 && $event->rsvp == 1 ){ + ?> +
          + – + : get_bookings()->get_booked_spaces()."/".$event->get_spaces(); ?> + + | : get_bookings()->get_pending_spaces(); ?> + +
          + can_manage('delete_events', 'delete_others_events')) : ?> + + +
          +
          + + + + + + + name) ) : ?> +
          : name ?> + +
          + + +
          + start_time, 0, 5 ) . " - " . substr ( $event->end_time, 0, 5 ); + ?> +
          + is_recurrence() && $event->can_manage('edit_events','edit_others_events') ) { + $recurrence_delete_confirm = __('WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series.','dbem'); + ?> + + get_recurrence_description(); ?>
          + + + + +
          + +
          + +
          +
          +
          +
          + = $limit ) : ?> +
          + +
          + +
          +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/buddypress/my-bookings.php b/wp-content/plugins/events-manager/templates/buddypress/my-bookings.php new file mode 100644 index 0000000..7793c44 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/buddypress/my-bookings.php @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/buddypress/my-events.php b/wp-content/plugins/events-manager/templates/buddypress/my-events.php new file mode 100644 index 0000000..e0c0fdc --- /dev/null +++ b/wp-content/plugins/events-manager/templates/buddypress/my-events.php @@ -0,0 +1,2 @@ +events->link . 'my-events/'; //url to this page + $order = ( !empty($_REQUEST ['order']) ) ? $_REQUEST ['order']:'ASC'; + $limit = ( !empty($_REQUEST['limit']) ) ? $_REQUEST['limit'] : 20;//Default limit + $page = ( !empty($_REQUEST['pno']) ) ? $_REQUEST['pno']:1; + $offset = ( $page > 1 ) ? ($page-1)*$limit : 0; + $EM_Events = EM_Events::get( array('group'=>'my','scope'=>'future', 'limit' => 0, 'order' => $order) ); + $events_count = count ( $EM_Events ); + $future_count = EM_Events::count( array('status'=>1, 'owner' =>get_current_user_id(), 'scope' => 'future')); + $pending_count = EM_Events::count( array('status'=>0, 'owner' =>get_current_user_id(), 'scope' => 'all') ); + $use_events_end = get_option('dbem_use_event_end'); + echo $EM_Notices; + ?> +
          + = $limit ) { + $events_nav = em_admin_paginate( $events_count, $limit, $page); + echo $events_nav; + } + ?> +
          +
          + + ". __( 'No Events','dbem' ) ."

          "; + } else { + ?> + + + + + + + + */ ?> + + + + + + + + = $offset || $offset === 0) ) { + $rowno++; + $class = ($rowno % 2) ? 'alternate' : ''; + // FIXME set to american + $localised_start_date = date_i18n('D d M Y', $event->start); + $localised_end_date = date_i18n('D d M Y', $event->end); + $style = ""; + $today = date ( "Y-m-d" ); + $location_summary = "" . $event->get_location()->name . "
          " . $event->get_location()->address . " - " . $event->get_location()->town; + + if ($event->start_date < $today && $event->end_date < $today){ + $class .= " past"; + } + //Check pending approval events + if ( !$event->status ){ + $class .= " pending"; + } + ?> + id="event_event_id ?>"> + + + + */ ?> + + + + + + + + + +
           
          + + event_name); ?> + + can_manage('manage_bookings','manage_others_bookings') && get_option('dbem_rsvp_enabled') == 1 && $event->event_rsvp == 1 ){ + ?> +
          + – + : get_bookings()->get_booked_spaces()."/".$event->get_spaces(); ?> + + | : get_bookings()->get_pending_spaces(); ?> + +
          + + + +
          +
          + + + + + + + name) ) : ?> +
          : name ?> + +
          + + +
          + start_time, 0, 5 ) . " - " . substr ( $event->end_time, 0, 5 ); + ?> +
          + is_recurrence() && $event->can_manage('edit_events','edit_others_events') ) { + $recurrence_delete_confirm = __('WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series.','dbem'); + ?> + + get_recurrence_description(); ?>
          + + + + +
          + +
          + +
          +
          +
          +
          + = $limit ) : ?> +
          + +
          + +
          +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/buddypress/my-locations.php b/wp-content/plugins/events-manager/templates/buddypress/my-locations.php new file mode 100644 index 0000000..4f5c8c3 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/buddypress/my-locations.php @@ -0,0 +1,2 @@ +displayed_user->id,'edit_events') ){ + ?> +

          + $bp->displayed_user->id)); + if( count($events) > 0 ){ + $args = array( + 'format_header' => get_option('dbem_bp_events_list_format_header'), + 'format' => get_option('dbem_bp_events_list_format'), + 'format_footer' => get_option('dbem_bp_events_list_format_footer'), + 'owner' => $bp->displayed_user->id + ); + echo EM_Events::output($events, $args); + }else{ + ?> +

          .

          + +

          +displayed_user->id ); +$EM_Bookings = $EM_Person->get_bookings(); +if(count($EM_Bookings->bookings) > 0){ + //Get events here in one query to speed things up + $event_ids = array(); + foreach($EM_Bookings as $EM_Booking){ + $event_ids[] = $EM_Booking->event_id; + } + echo EM_Events::output(array('event'=>$event_ids)); +}else{ + ?> +

          + get_tickets_bookings() as $EM_Ticket_Booking): ?> +get_ticket()->name; +?> + +Quantity: get_spaces(); ?> + +Price: get_price(),2); ?> + + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/emails/new-user.php b/wp-content/plugins/events-manager/templates/emails/new-user.php new file mode 100644 index 0000000..469976f --- /dev/null +++ b/wp-content/plugins/events-manager/templates/emails/new-user.php @@ -0,0 +1,8 @@ +You have successfully created an account at . + +You can log into our site . + +Username : %username% +Password : %password% + +To view your bookings, please visit after logging in. \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/emails/readme.txt b/wp-content/plugins/events-manager/templates/emails/readme.txt new file mode 100644 index 0000000..61822f0 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/emails/readme.txt @@ -0,0 +1,10 @@ +This folder contains email templates or parts of email templates that would be used in emails. + +Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly. + +To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/emails/ and edit as needed. + +If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there. + +Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a +reported bug, please keep this in mind when updating. \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/formats/readme.txt b/wp-content/plugins/events-manager/templates/formats/readme.txt new file mode 100644 index 0000000..c07329c --- /dev/null +++ b/wp-content/plugins/events-manager/templates/formats/readme.txt @@ -0,0 +1,21 @@ +Files in this folder or in wp-content/themes/yourthemedir/plugins/events-manager/formats/ would be used to replace formatting options in the settings page. This allows you a much greater degree of flexibility as you can use PHP go do all sorts of customizations to your events. + +To overwrite a formatting option, you need to firstly create a file here with the same name as the setting name in the wp_options table without the dbem_ prefix. So, for example: + +'dbem_event_list_item_format' - format for controlling a single event format in a list of events + +becomes + +event_list_item_format.php + +Then, using the example above, to activate the overriding format, you need to add this to your theme's functions.php file. + + + +If you want to add more than one format, add more option names to the $my_formats array and create the corresponding php file. \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/bookingform/booking-fields.php b/wp-content/plugins/events-manager/templates/forms/bookingform/booking-fields.php new file mode 100644 index 0000000..86d154c --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/bookingform/booking-fields.php @@ -0,0 +1,28 @@ + + + + +

          + + /> +

          +

          + + /> +

          +

          + + /> +

          + + +

          + + +

          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/bookingform/login.php b/wp-content/plugins/events-manager/templates/forms/bookingform/login.php new file mode 100644 index 0000000..7076f61 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/bookingform/login.php @@ -0,0 +1,40 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/bookingform/ticket-single.php b/wp-content/plugins/events-manager/templates/forms/bookingform/ticket-single.php new file mode 100644 index 0000000..12ca1fd --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/bookingform/ticket-single.php @@ -0,0 +1,50 @@ + title +foreach( $collumns as $type => $name ): ?> + ticket_description)){ //show description if there is one + ?>

          ticket_description,$allowedposttags); ?>

          get_price(true); ?>

          get_available_spaces() > 1 && ( empty($EM_Ticket->ticket_max) || $EM_Ticket->ticket_max > 1 ) ): //more than one space available ?> +

          + + ticket_id]['spaces']) ? $_REQUEST['em_tickets'][$EM_Ticket->ticket_id]['spaces']:0; + $spaces_options = $EM_Ticket->get_spaces_options(false,$default); + if( $spaces_options ){ + echo $spaces_options; + }else{ + echo "".__('N/A','dbem').""; + } + ?> +

          + + + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/bookingform/tickets-list.php b/wp-content/plugins/events-manager/templates/forms/bookingform/tickets-list.php new file mode 100644 index 0000000..1b62690 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/bookingform/tickets-list.php @@ -0,0 +1,60 @@ +get_bookings()->get_tickets(); //already instantiated, so should be a quick retrieval. +/* + * This variable can be overriden, by hooking into the em_booking_form_tickets_cols filter and adding your collumns into this array. + * Then, you should create a em_booking_form_tickets_col_arraykey action for your collumn data, which will pass a ticket and event object. + */ +$collumns = $EM_Tickets->get_ticket_collumns(); //array of collumn type => title +?> + + + $name): ?> + + + + tickets as $EM_Ticket ): /* @var $EM_Ticket EM_Ticket */ ?> + is_available() || get_option('dbem_bookings_tickets_show_unavailable') ): ?> + + + $name ): ?> + + + + + + + + + + + + +
          ticket_name); ?>ticket_description)) :?>
          ticket_description,$allowedposttags); ?>
          get_price(true); ?> + ticket_id]['spaces']) ? $_REQUEST['em_tickets'][$EM_Ticket->ticket_id]['spaces']:0; + $spaces_options = $EM_Ticket->get_spaces_options(true,$default); + echo ( $spaces_options ) ? $spaces_options:"".__('N/A','dbem').""; + ?> +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/event-editor.php b/wp-content/plugins/events-manager/templates/forms/event-editor.php new file mode 100644 index 0000000..5354d08 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/event-editor.php @@ -0,0 +1,208 @@ +can_manage('edit_events','edit_others_events') ){ + ?> +

          + +
          +
          + + +

          +
          +

          + + +

          +

          + + +

          + +
          + +

          +
          + +
          + + group_id) ): ?> + groups) ){ + $group_data = groups_get_user_groups(get_current_user_id()); + foreach( $group_data['groups'] as $group_id ){ + if( groups_is_user_admin(get_current_user_id(), $group_id) ){ + $user_groups[] = groups_get_group( array('group_id'=>$group_id)); + } + } + } + ?> + 0 ): ?> +

          + +
          + +

          + + +
          + +

          +
          + event_id) && $EM_Event->can_manage('edit_recurring_events','edit_others_recurring_events') && get_option('dbem_recurrence_enabled') ){ + em_locate_template('forms/event/when-with-recurring.php',true); + }elseif( $EM_Event->is_recurring() ){ + em_locate_template('forms/event/recurring-when.php',true); + ?> + + +
          + + +

          +
          + +
          + + +

          +
          +
          + + post_content, 'em-editor-content', array('textarea_name'=>'content') ); ?> + + +
          + + +
          +
          + + 'name','hide_empty'=>0)); ?> + 0 ): ?> +
          + + + + +
          + + + + + + 0 ) : ?> + +
          + + 0 ): ?> + + + + +
          + + + +
          +
          + + can_manage('upload_event_images','upload_event_images') ): ?> +

          +
          + get_image_url() != '') : ?> + ' alt='event_name ?>'/> + + + +

          + +
          + +
          + + + can_manage('manage_bookings','manage_others_bookings') ) : ?> + +

          +
          + +
          + + + + +
          +

          + +

          + + + + + + +
          + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/event/attributes.php b/wp-content/plugins/events-manager/templates/forms/event/attributes.php new file mode 100644 index 0000000..e98d3b2 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/event/attributes.php @@ -0,0 +1,89 @@ + +
          + 0 ) : ?> + + + + + + + + + + + + + + + + + +
          Attribute NameValue
          + 0 ): ?> + + + + +
          settings page",'dbem'),EM_ADMIN_URL ."&page=events-manager-options"); ?>
          + event_attributes), $attributes['names'])) > 0 ): ?> +

          +

          + + + + + + + + + event_attributes) and count($EM_Event->event_attributes) > 0){ + foreach( $EM_Event->event_attributes as $name => $value){ + if( is_array($value) ) $value = serialize($value); + if( !in_array($name, $attributes['names']) ){ + ?> + + + + + + +
          Attribute NameValue
          + +
          + + +

          + Settings > General to add attribute placeholders.', 'dbem'); ?> +

          + + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/event/booking-stats.php b/wp-content/plugins/events-manager/templates/forms/event/booking-stats.php new file mode 100644 index 0000000..43f9113 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/event/booking-stats.php @@ -0,0 +1,38 @@ + +
          + get_bookings()->get_available_spaces(); + $booked_spaces = $EM_Event->get_bookings()->get_booked_spaces(); + + if ( count($EM_Event->get_bookings()->bookings) > 0 ) { + ?> +
          +

          get_bookings()->get_available_spaces(); ?>

          +

          get_bookings()->get_booked_spaces(); ?>

          +

          get_bookings()->get_pending_spaces(); ?>

          +
          + +
          + +
          +
          +
          + + +
          + + +
          +
          +
          +
          + +

          + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/event/bookings.php b/wp-content/plugins/events-manager/templates/forms/event/bookings.php new file mode 100644 index 0000000..6b03fd8 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/event/bookings.php @@ -0,0 +1,160 @@ + +
          + event_rsvp) ? 'checked="checked"' : ''; ?> /> +    + +
          +
          + + get_tickets(); + if( count($EM_Tickets->tickets) == 0 ){ + $EM_Tickets->tickets[] = new EM_Ticket(); + $delete_temp_ticket = true; + } + if( get_option('dbem_bookings_tickets_single') && count($EM_Tickets->tickets) == 1 ){ + $EM_Ticket = $EM_Tickets->get_first(); + include( em_locate_template('forms/ticket-form.php') ); + }else{ + ?> +

          +

          + + + + + + + + + + + + + + + + + + + + tickets as $EM_Ticket){ + /* @var $EM_Ticket EM_Ticket */ + ?> + + + + + + + + + + + + tickets); + } + ?> + +
            
          + +
          ticket_name); ?>
          ticket_description,$allowedposttags); ?>
          + ticket_price) ? $EM_Ticket->ticket_price : __('Free','dbem'); ?> + + + ticket_min) ) ? $EM_Ticket->ticket_min:'-'; ?> + / + ticket_max) ) ? $EM_Ticket->ticket_max:'-'; ?> + + ticket_start) ) ? date(get_option('dbem_date_format'), $EM_Ticket->start_timestamp):''; ?> - + ticket_end) ) ? date(get_option('dbem_date_format'), $EM_Ticket->end_timestamp):''; ?> + + get_available_spaces(); ?>/ + + get_spaces() ){ + echo $EM_Ticket->get_spaces(); + echo (!empty($EM_Ticket->ticket_spaces_limit)) ? '':'*'; + }else{ + echo '-'; + } + ?> + + + get_booked_spaces(); ?> + + + get_bookings()->bookings) == 0 ): ?> + | + + | + + + + + + + start_timestamp):''; ?>" /> + end_timestamp):''; ?>" /> + + + +
          +

          + +
          + +

          +

          + + + + + + +
          + +

          + + +
          + +$group_id)); + } +} +if( count($user_groups) > 0 ){ + ?> + +
          + + *"; +?> + +
          +

          + event_id) && ($EM_Event->location_id === '0' || $EM_Event->location_id === 0) ) echo 'checked="checked"'; ?>> + +

          + +
          + +
          + + can_manage('edit_locations','edit_others_locations') ) : ?> + + + + + +
          + +
          + + + location_id !== 0 ){ + $EM_Location = $EM_Event->get_location(); + }elseif(get_option('dbem_default_location') > 0){ + $EM_Location = new EM_Location(get_option('dbem_default_location')); + } + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + + +
          + +
            + +
            + +
            + +
            + +
            + +
            + +
          + + +
          +
          +

          +
          + +
          + +
          +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/event/recurring-when.php b/wp-content/plugins/events-manager/templates/forms/event/recurring-when.php new file mode 100644 index 0000000..736cb17 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/event/recurring-when.php @@ -0,0 +1,80 @@ + + + +
          + + + + + + + + + + + + +

          + is_recurring()) ? explode ( ",", $EM_Event->recurrence_byday ) : array(); + em_checkbox_items ( 'recurrence_bydays[]', $days_names, $saved_bydays ); + ?> +

          +

          + + + +   +

          +
          +

          + + + + + + +

          +

          + + + + + event_all_day)) echo 'checked="checked"'; ?> /> +

          +

          + + + +

          +

          +
          + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/event/when-with-recurring.php b/wp-content/plugins/events-manager/templates/forms/event/when-with-recurring.php new file mode 100644 index 0000000..e4945cd --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/event/when-with-recurring.php @@ -0,0 +1,91 @@ +is_recurring(); +?> + + +
          +

          is_recurring()) echo 'checked' ?> />

          +

          + + + + + + + + +

          +

          + + + + + + event_all_day)) echo 'checked="checked"'; ?> /> +

          +
          +

          + + + + + + + + + + + + +

          +

          + is_recurring()) ? explode ( ",", $EM_Event->recurrence_byday ) : array(); + em_checkbox_items ( 'recurrence_bydays[]', $days_names, $saved_bydays ); + ?> +

          +

          + + + +

          +

          + + + +

          +
          +
          + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/event/when.php b/wp-content/plugins/events-manager/templates/forms/event/when.php new file mode 100644 index 0000000..2d861d9 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/event/when.php @@ -0,0 +1,28 @@ +*"; +?> +
          +

          + + + + + + +

          +

          + + + + + event_all_day)) echo 'checked="checked"'; ?> /> +

          + + + +
          +is_recurrence() ) : //in future, we could enable this and then offer a detach option alongside, which resets the recurrence id and removes the attachment to the recurrence set ?> + +can_manage('edit_locations','edit_others_locations') ){ + ?> +

          + (".__('required','dbem').")"; +echo $EM_Notices; +?> +
          + + ' /> + + + + +

          + +

          +
          + +
          + +
          + +

          + +

          +
          + +
          + +

          + +

          +
          + + post_content, 'em-editor-content', array('textarea_name'=>'content') ); ?> + + +
          + + +
          + + + + + 0 ) : ?> + +
          + + 0 ): ?> + + + + +
          + + + + + can_manage('upload_event_images','upload_event_images') ): ?> +

          +
          + get_image_url() != '') : ?> + ' alt='location_name ?>'/> + + + +

          + +
          + +
          + + + + + + + +

          ' />

          +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/location/attributes.php b/wp-content/plugins/events-manager/templates/forms/location/attributes.php new file mode 100644 index 0000000..ecddf0b --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/location/attributes.php @@ -0,0 +1,89 @@ + +
          + 0 ) : ?> + + + + + + + + + + + + + + + + + +
          Attribute NameValue
          + 0 ): ?> + + + + +
          settings page",'dbem'),EM_ADMIN_URL ."&page=locations-manager-options"); ?>
          + location_attributes), $attributes['names'])) > 0 ): ?> +

          +

          + + + + + + + + + location_attributes) and count($EM_Location->location_attributes) > 0){ + foreach( $EM_Location->location_attributes as $name => $value){ + if( is_array($value) ) $value = serialize($value); + if( !in_array($name, $attributes['names']) ){ + ?> + + + + + + +
          Attribute NameValue
          + +
          + + +

          + Settings > General to add attribute placeholders.', 'dbem'); ?> +

          + + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/location/where.php b/wp-content/plugins/events-manager/templates/forms/location/where.php new file mode 100644 index 0000000..c008f68 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/location/where.php @@ -0,0 +1,63 @@ + +

          try it on maps.google.com by adding all the fields below seperated by commas.",'dbem')?>

          +
          + + + + + + + + + + + + + + + + + + + + + + + + + +
            + +
            + +
            + +
            + +
            + + +
            + +
          + +
          +
          +

          +
          + +
          + +
          + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/readme.txt b/wp-content/plugins/events-manager/templates/forms/readme.txt new file mode 100644 index 0000000..fafa96a --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/readme.txt @@ -0,0 +1,13 @@ +This folder contains specific forms used throughout EM. + +CAREFUL!! If you do override these files, make sure you keep form IDs, actions, filters and other php code of that nature. +Doing this could prevent the form from working properly. + +Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly. + +To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/forms/ and edit as needed. + +If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there. + +Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a +reported bug, please keep this in mind when updating. \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/ticket-form.php b/wp-content/plugins/events-manager/templates/forms/ticket-form.php new file mode 100644 index 0000000..ec4475f --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/ticket-form.php @@ -0,0 +1,43 @@ + + +
          + +
          + + + ? +
          +
          +
          + + ? +
          +
          + + + start_timestamp):''; ?>" /> + + + end_timestamp):''; ?>" /> + ? +
          +
          + + + + + + ? +
          +
          + + +
          + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/forms/tickets-form.php b/wp-content/plugins/events-manager/templates/forms/tickets-form.php new file mode 100644 index 0000000..898da04 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/forms/tickets-form.php @@ -0,0 +1,32 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/placeholders/attendees.php b/wp-content/plugins/events-manager/templates/placeholders/attendees.php new file mode 100644 index 0000000..54b9976 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/placeholders/attendees.php @@ -0,0 +1,14 @@ +get_bookings() as $EM_Booking){ + if($EM_Booking->status == 1){ + $people[$EM_Booking->person->ID] = $EM_Booking->person; + } +} +?> +
            + +
          • ID, 50); ?>
          • + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/placeholders/attendeeslist.php b/wp-content/plugins/events-manager/templates/placeholders/attendeeslist.php new file mode 100644 index 0000000..9ae25fa --- /dev/null +++ b/wp-content/plugins/events-manager/templates/placeholders/attendeeslist.php @@ -0,0 +1,18 @@ +get_bookings(); +if( count($EM_Bookings->bookings) > 0 ){ + ?> +
            + status == 1 && !in_array($EM_Booking->get_person()->ID, $people)){ + $people[] = $EM_Booking->get_person()->ID; + echo '
          • '. $EM_Booking->get_person()->get_name() .'
          • '; + } + } + ?> +
          + +get_bookings()->get_available_tickets()->tickets) == 1 && is_user_logged_in() ): ?> + get_bookings()->has_booking(); + ob_start(); + ?> + status != 3 && get_option('dbem_bookings_user_cancellation') ) : $show_js = true; ?> + + + + + + + + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/placeholders/bookingform.php b/wp-content/plugins/events-manager/templates/placeholders/bookingform.php new file mode 100644 index 0000000..1570895 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/placeholders/bookingform.php @@ -0,0 +1,96 @@ +get_bookings()->get_tickets(); +$EM_Ticket = $EM_Tickets->get_first(); +$can_book = is_user_logged_in() || (get_option('dbem_bookings_anonymous') && !is_user_logged_in()); +?> +
          + + get_bookings()->has_booking(); + ?> + +

          + + +

          + rsvp ): //bookings not enabled ?> +

          + get_bookings()->get_available_spaces() <= 0 ): ?> +

          + get_bookings()->is_open() ): //event has started ?> +

          + + + tickets) > 0) : ?> + +
          '> + + + '/> + tickets) > 1 || get_option('dbem_bookings_tickets_single_form')) ){ //show if more than 1 ticket, or if in forced ticket list view mode + do_action('em_booking_form_before_tickets'); //do not delete + //Show multiple tickets form to user, or single ticket list if settings enable this + //If logged out, can be allowed to see this in settings witout the register form + em_locate_template('forms/bookingform/tickets-list.php',true, array('EM_Event'=>$EM_Event)); + do_action('em_booking_form_after_tickets'); //do not delete + } + ?> + +
          + tickets) == 1 && !get_option('dbem_bookings_tickets_single_form') ){ + do_action('em_booking_form_before_tickets'); //do not delete + //show single ticket form, only necessary to show to users able to book (or guests if enabled) + em_locate_template('forms/bookingform/ticket-single.php',true, array('EM_Event'=>$EM_Event, 'EM_Ticket'=>$EM_Ticket)); + do_action('em_booking_form_after_tickets'); //do not delete + } + ?> + $EM_Event, 'EM_Ticket'=>$EM_Ticket)); + } + do_action('em_booking_form_after_user_details'); + ?> + +
          + + + + + +
          + +
          + +

          + +
          + $EM_Event)); + } + ?> +
          + + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/placeholders/categories.php b/wp-content/plugins/events-manager/templates/placeholders/categories.php new file mode 100644 index 0000000..58abccf --- /dev/null +++ b/wp-content/plugins/events-manager/templates/placeholders/categories.php @@ -0,0 +1,14 @@ +get_categories()->categories) > 0; +if( $count_cats > 0 ){ + ?> +
            + get_categories() as $EM_Category): ?> +
          • output("#_CATEGORYLINK"); ?>
          • + +
          + get_categories()->categories) > 0; +if( $count_cats > 0 ){ + $one_image = false; + ?> +
            + get_categories() as $EM_Category): /* @var $EM_Category EM_Category */ ?> + get_image_url() != '' ): ?> +
          • output("#_CATEGORYIMAGE"); $one_image = true; ?>
          • + + + +
          • + +
          + post_id, EM_TAXONOMY_TAG); +if( is_array($tags) && count($tags) > 0 ){ + $tags_list = array(); + foreach($tags as $tag){ + $link = get_term_link($tag->slug, EM_TAXONOMY_TAG); + if ( is_wp_error($link) ) $link = ''; + $tags_list[] = ''. $tag->name .''; + } + echo implode(', ', $tags_list); +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/placeholders/locationmap.php b/wp-content/plugins/events-manager/templates/placeholders/locationmap.php new file mode 100644 index 0000000..7254a17 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/placeholders/locationmap.php @@ -0,0 +1,28 @@ +location_latitude != 0 && $EM_Location->location_longitude != 0 ) ) { + $width = (isset($args['width'])) ? $args['width']:'400'; + $height = (isset($args['height'])) ? $args['height']:'300'; + $rand = substr(md5(rand().rand()),0,5); + ?> +
          + + + location_latitude == 0 && $EM_Location->location_longitude == 0 ){ + echo ''. __('Map Unavailable', 'dbem') .''; + } \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/placeholders/readme.txt b/wp-content/plugins/events-manager/templates/placeholders/readme.txt new file mode 100644 index 0000000..31450a0 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/placeholders/readme.txt @@ -0,0 +1,12 @@ +This folder has files containing some of the more complex placeholders output information. + +Files in this folder are loaded automatically by the corresponding object and make certain variables available to them (see individual files for examples). + +Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly. + +To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/placeholders/ and edit as needed. + +If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there. + +Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a +reported bug, please keep this in mind when updating. \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/readme.txt b/wp-content/plugins/events-manager/templates/readme.txt new file mode 100644 index 0000000..426786c --- /dev/null +++ b/wp-content/plugins/events-manager/templates/readme.txt @@ -0,0 +1,16 @@ +This folder has files containing various templates which events manager uses to output its information. + +Almost every aspect of the public interface (and some parts of the admin interface!) can be modified. Please individual folders for more information + +Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly. + +To override a file, copy (not move) the file to "wp-content/themes/yourtheme/plugins/events-manager/filepath within this folder/" and edit as needed. + +For example: + +copy templates/events-single.php + +to wp-content/themes/yourtheme/plugins/events-manager/templates/events-single.php + +Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a +reported bug, please keep this in mind when updating. \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/tables/events.php b/wp-content/plugins/events-manager/templates/tables/events.php new file mode 100644 index 0000000..979624e --- /dev/null +++ b/wp-content/plugins/events-manager/templates/tables/events.php @@ -0,0 +1,163 @@ +'edit','scope'=>null,'status'=>null,'event_id'=>null)).'">'.__('Add New','dbem').''; + ?> +
          + +
          + + +
          + = $limit ) { + $events_nav = em_admin_paginate( $events_count, $limit, $page); + echo $events_nav; + } + ?> +
          +
          + + + + + + + + + + */ ?> + + + + + + + + start); + $localised_end_date = date_i18n('D d M Y', $event->end); + $style = ""; + $today = date ( "Y-m-d" ); + $location_summary = "" . $event->get_location()->name . "
          " . $event->get_location()->address . " - " . $event->get_location()->town; + + if ($event->start_date < $today && $event->end_date < $today){ + $class .= " past"; + } + //Check pending approval events + if ( !$event->status ){ + $class .= " pending"; + } + ?> + id="event_event_id ?>"> + + + + */ ?> + + + + + + + + + +
           
          + + name); ?> + + rsvp == 1 ){ + ?> +
          + – + : get_bookings()->get_booked_spaces()."/".$event->get_spaces(); ?> + + | : get_bookings()->get_pending_spaces(); ?> + +
          + + + +
          +
          + + + + + + + + + +
          + start_time, 0, 5 ) . " - " . substr ( $event->end_time, 0, 5 ); + ?> +
          + is_recurrence() ) { + $recurrence_delete_confirm = __('WARNING! You will delete ALL recurrences of this event, including booking history associated with any event in this recurrence. To keep booking information, go to the relevant single event and save it to detach it from this recurrence series.','dbem'); + ?> + + get_recurrence_description(); ?>
          + + + + +
          + +
          + +
          +
          +
          +
          + = $limit ) : ?> +
          + +
          + +
          +
          +
          +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/tables/locations.php b/wp-content/plugins/events-manager/templates/tables/locations.php new file mode 100644 index 0000000..6ae03c5 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/tables/locations.php @@ -0,0 +1,80 @@ +'edit','scope'=>null,'status'=>null,'location_id'=>null)).'">Add New'; +?> + +
          + + + 0 ) : ?> +
          +
          + + +
          + = $limit ) { + $locations_nav = em_admin_paginate( $locations_count, $limit, $page ); + echo $locations_nav; + } + ?> +
          + + + + + + + + + + + + + + + + + + + + + + + = $offset && $i <= $offset+$limit ): ?> + + + + + + + + + + + +
          + can_manage('edit_events','edit_others_events') ): ?> + location_name ?> + + location_name ?> - + '> + + location_address,$EM_Location->location_town,$EM_Location->location_postcode)); ?>location_state ?>get_country() ?>
          + +
          +

          + + + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/tables/readme.txt b/wp-content/plugins/events-manager/templates/tables/readme.txt new file mode 100644 index 0000000..ed741a5 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/tables/readme.txt @@ -0,0 +1,10 @@ +This folder has files containing table output layouts, such as event and location admin tables for the public pages. + +Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly. + +To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/tables/ and edit as needed. + +If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there. + +Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a +reported bug, please keep this in mind when updating. \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/bookings-event-printable.php b/wp-content/plugins/events-manager/templates/templates/bookings-event-printable.php new file mode 100644 index 0000000..1f51646 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/bookings-event-printable.php @@ -0,0 +1,53 @@ + + + + + + Bookings for <?php echo $EM_Event->name; ?> + + + +
          +

          Bookings for name; ?>

          +

          output("#d #M #Y"); ?>

          +

          output("#_LOCATION, #_ADDRESS, #_TOWN"); ?>

          +

          + + + + + + + + + get_bookings()->bookings as $EM_Booking) { ?> + + + + + + + + + + + + + + + + + + + +
          person->get_name() ?>person->user_email ?>person->phone ?>get_spaces() ?>booking_comment ?>
           :get_bookings()->get_booked_spaces(); ?>
           :get_bookings()->get_available_spaces(); ?>
          +
          + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/calendar-day.php b/wp-content/plugins/events-manager/templates/templates/calendar-day.php new file mode 100644 index 0000000..27af05e --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/calendar-day.php @@ -0,0 +1,23 @@ + 1 || $page > 1 || get_option('dbem_display_calendar_day_single') == 1 ) { + $args['limit'] = get_option('dbem_events_default_limit'); + $args['offset'] = $args['limit'] * ($page-1); + echo EM_Events::output($events, apply_filters('em_content_calendar_day_output_args', $args) ); +} elseif( count($events) == 1 ) { + $EM_Event = $events[0]; + echo $EM_Event->output_single(); +} else { + echo get_option('dbem_no_events_message'); +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/calendar-full.php b/wp-content/plugins/events-manager/templates/templates/calendar-full.php new file mode 100644 index 0000000..ef28fff --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/calendar-full.php @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + $cell_data ){ + $class = ( !empty($cell_data['events']) && count($cell_data['events']) > 0 ) ? 'eventful':'eventless'; + if(!empty($cell_data['type'])){ + $class .= "-".$cell_data['type']; + } + ?> + + ':''; + $tot_count ++; + } + ?> + + +
          <<>>
          ',$calendar['row_headers']); ?>
          + 0 ): ?> + +
            + get_option('dbem_display_calendar_events_limit')) break; + } + }else{ + $cell_events = $cell_data['events']; + } + ?> + get_option('dbem_full_calendar_event_format'))); ?> + get_option('dbem_display_calendar_events_limit',3) && get_option('dbem_display_calendar_events_limit_msg') != '' ): ?> +
          • + +
          + + + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/calendar-small.php b/wp-content/plugins/events-manager/templates/templates/calendar-small.php new file mode 100644 index 0000000..64f6c80 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/calendar-small.php @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + $cell_data ){ + $class = ( !empty($cell_data['events']) && count($cell_data['events']) > 0 ) ? 'eventful':'eventless'; + if(!empty($cell_data['type'])){ + $class .= "-".$cell_data['type']; + } + ?> + + ':''; + $count ++; + } + ?> + + +
          <<>>
          ',$calendar['row_headers']); ?>
          + 0 ): ?> + + + + +
          \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/categories-list.php b/wp-content/plugins/events-manager/templates/templates/categories-list.php new file mode 100644 index 0000000..c8ffc86 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/categories-list.php @@ -0,0 +1,18 @@ + 0 ){ + echo EM_Categories::output( $categories, $args ); +}else{ + echo get_option ( 'dbem_no_categories_message' ); +} \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/category-single.php b/wp-content/plugins/events-manager/templates/templates/category-single.php new file mode 100644 index 0000000..2bc8c40 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/category-single.php @@ -0,0 +1,12 @@ +output_single(); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/event-single.php b/wp-content/plugins/events-manager/templates/templates/event-single.php new file mode 100644 index 0000000..66ac722 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/event-single.php @@ -0,0 +1,17 @@ +output_single(); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/events-calendar.php b/wp-content/plugins/events-manager/templates/templates/events-calendar.php new file mode 100644 index 0000000..69ab716 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/events-calendar.php @@ -0,0 +1,13 @@ +"; +$events_count = EM_Events::count( apply_filters('em_content_events_args', $args) ); +$args['limit'] = get_option('dbem_events_default_limit'); +$args['page'] = (!empty($_REQUEST['pno']) && is_numeric($_REQUEST['pno']) )? $_REQUEST['pno'] : 1; +if( $events_count > 0 ){ + //If there's a search, let's change the pagination a little here + if(!empty($_REQUEST['action']) && $_REQUEST['action'] == 'search_events'){ + $args['pagination'] = false; + if(get_option('dbem_event_list_groupby') ){ + $args['mode'] = get_option('dbem_event_list_groupby'); + echo em_events_list_grouped($args); + }else{ + echo EM_Events::output( $args ); + } + //do some custom pagination (if needed/requested) + if( !empty($args['limit']) && $events_count > $args['limit'] ){ + //Show the pagination links (unless there's less than $limit events), note that we set em_search instead of search to prevent conflicts + $search_args = array_merge(EM_Events::get_post_search(), array('pno'=>'%PAGE%','action'=>'search_events','search'=>null, 'em_search'=>$args['search'])); + $page_link_template = em_add_get_params($_SERVER['REQUEST_URI'], $search_args, false); //don't html encode, so em_paginate does its thing + echo apply_filters('em_events_output_pagination', em_paginate( $page_link_template, $events_count, $args['limit'], $args['pno']), $page_link_template, $events_count, $args['limit'], $args['pno']); + } + }else{ + if(get_option('dbem_event_list_groupby') ){ + $args['mode'] = get_option('dbem_event_list_groupby'); + echo em_events_list_grouped($args); + }else{ + echo EM_Events::output( $args ); + } + } +}else{ + echo get_option ( 'dbem_no_events_message' ); +} +if( get_option('dbem_events_page_ajax', (defined('EM_AJAX_SEARCH'))) ) echo "
          "; \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/events-search.php b/wp-content/plugins/events-manager/templates/templates/events-search.php new file mode 100644 index 0000000..104ea0c --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/events-search.php @@ -0,0 +1,139 @@ + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/ical-event.php b/wp-content/plugins/events-manager/templates/templates/ical-event.php new file mode 100644 index 0000000..fa25f2d --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/ical-event.php @@ -0,0 +1,84 @@ +event_slug.'.ics"'); + +$description_format = str_replace ( ">", ">", str_replace ( "<", "<", get_option ( 'dbem_ical_description_format' ) ) ); +$blog_desc = ent2ncr(convert_chars(strip_tags(get_bloginfo()))) . " - " . __('Calendar','dbem'); + +echo "BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CALSCALE:GREGORIAN +PRODID:-//Events Manager//1.0//EN +X-WR-CALNAME:{$blog_desc}"; + + /* @var $EM_Event EM_Event */ + $offset = 3600 * get_option('gmt_offset'); + $description = $EM_Event->output($description_format,'ical'); + $description = str_replace("\\","\\\\",ent2ncr(convert_chars(strip_tags($description)))); + //$description = str_replace('"','DQUOTE',$description); + $description = str_replace(';','\;',$description); + $description = str_replace(',','\,',$description); + + $start_offset = ( date('I', $EM_Event->start) ) ? 0 : 3600; + $end_offset = ( date('I', $EM_Event->end) ) ? 0 : 3600; + + if($EM_Event->event_all_day && $EM_Event->event_start_date == $EM_Event->event_end_date){ + $dateStart = date('Ymd\T000000',$EM_Event->start); //all day + $dateEnd = date('Ymd\T000000',$EM_Event->start + 86400); //add one day + }else{ + $dateStart = date('Ymd\THis\Z',$EM_Event->start - $offset + $start_offset); + $dateEnd = date('Ymd\THis\Z',$EM_Event->end - $offset + $end_offset); + } + if( !empty($EM_Event->event_date_modified) ){ + $dateModified = date('Ymd\THis\Z', strtotime($EM_Event->event_date_modified) - $offset + $start_offset); + }else{ + $dateModified = date('Ymd\THis\Z', strtotime($EM_Event->event_date_created) - $offset + $start_offset); + } + + $location = $EM_Event->output('#_LOCATION', 'ical'); + $description = str_replace("\\","\\\\",ent2ncr(convert_chars(strip_tags($description)))); + //$location = str_replace('"','DQUOTE',$location); + $location = str_replace(';','\;',$location); + $location = str_replace(',','\,',$location); + + $locations = array(); + foreach($EM_Event->get_categories() as $EM_Category){ + $locations[] = $EM_Category->name; + } + $UID = sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', + // 32 bits for "time_low" + mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), + // 16 bits for "time_mid" + mt_rand( 0, 0xffff ), + // 16 bits for "time_hi_and_version", + // four most significant bits holds version number 4 + mt_rand( 0, 0x0fff ) | 0x4000, + // 16 bits, 8 bits for "clk_seq_hi_res", + // 8 bits for "clk_seq_low", + // two most significant bits holds zero and one for variant DCE1.1 + mt_rand( 0, 0x3fff ) | 0x8000, + // 48 bits for "node" + mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) + ); + +echo " +BEGIN:VEVENT +UID:{$UID} +DTSTART:{$dateStart} +DTEND:{$dateEnd} +DTSTAMP:{$dateModified} +SUMMARY:{$description} +LOCATION:{$location} +URL:{$EM_Event->output('#_EVENTURL')} +END:VEVENT"; +echo " +END:VCALENDAR"; +date_default_timezone_set($tz); // set the PHP timezone back the way it was \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/ical.php b/wp-content/plugins/events-manager/templates/templates/ical.php new file mode 100644 index 0000000..c964a23 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/ical.php @@ -0,0 +1,87 @@ +", ">", str_replace ( "<", "<", get_option ( 'dbem_ical_description_format' ) ) ); +if( !empty($_REQUEST['event_id']) ){ + $EM_Events = array(new EM_Event($_REQUEST['event_id'])); +}else{ + $EM_Events = EM_Events::get(apply_filters('em_calendar_template_args',array( 'limit'=>get_option('dbem_ical_limit'), 'owner'=>false, 'orderby'=>'event_start_date', 'scope' => get_option('dbem_ical_scope') )) ); +} +$blog_desc = ent2ncr(convert_chars(strip_tags(get_bloginfo()))) . " - " . __('Calendar','dbem'); + +echo "BEGIN:VCALENDAR +VERSION:2.0 +METHOD:PUBLISH +CALSCALE:GREGORIAN +PRODID:-//Events Manager//1.0//EN +X-WR-CALNAME:{$blog_desc}"; + +/* @var $EM_Event EM_Event */ +$offset = 3600 * get_option('gmt_offset'); +foreach ( $EM_Events as $EM_Event ) { + $description = $EM_Event->output($description_format,'ical'); + $description = str_replace("\\","\\\\",ent2ncr(convert_chars(strip_tags($description)))); + //$description = str_replace('"','DQUOTE',$description); + $description = str_replace(';','\;',$description); + $description = str_replace(',','\,',$description); + + $start_offset = ( date('I', $EM_Event->start) ) ? 0 : 3600; + $end_offset = ( date('I', $EM_Event->end) ) ? 0 : 3600; + + if($EM_Event->event_all_day && $EM_Event->event_start_date == $EM_Event->event_end_date){ + $dateStart = date('Ymd\T000000',$EM_Event->start); //all day + $dateEnd = date('Ymd\T000000',$EM_Event->start + 86400); //add one day + }else{ + $dateStart = date('Ymd\THis\Z',$EM_Event->start - $offset + $start_offset); + $dateEnd = date('Ymd\THis\Z',$EM_Event->end - $offset + $end_offset); + } + if( !empty($EM_Event->event_date_modified) ){ + $dateModified = date('Ymd\THis\Z', strtotime($EM_Event->event_date_modified) - $offset + $start_offset); + }else{ + $dateModified = date('Ymd\THis\Z', strtotime($EM_Event->event_date_created) - $offset + $start_offset); + } + + $location = $EM_Event->output('#_LOCATION', 'ical'); + $description = str_replace("\\","\\\\",ent2ncr(convert_chars(strip_tags($description)))); + //$location = str_replace('"','DQUOTE',$location); + $location = str_replace(';','\;',$location); + $location = str_replace(',','\,',$location); + + $locations = array(); + foreach($EM_Event->get_categories() as $EM_Category){ + $locations[] = $EM_Category->name; + } + $UID = sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', + // 32 bits for "time_low" + mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), + // 16 bits for "time_mid" + mt_rand( 0, 0xffff ), + // 16 bits for "time_hi_and_version", + // four most significant bits holds version number 4 + mt_rand( 0, 0x0fff ) | 0x4000, + // 16 bits, 8 bits for "clk_seq_hi_res", + // 8 bits for "clk_seq_low", + // two most significant bits holds zero and one for variant DCE1.1 + mt_rand( 0, 0x3fff ) | 0x8000, + // 48 bits for "node" + mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) + ); +echo " +BEGIN:VEVENT +UID:{$UID} +DTSTART:{$dateStart} +DTEND:{$dateEnd} +DTSTAMP:{$dateModified} +SUMMARY:{$description} +LOCATION:{$location} +URL:{$EM_Event->output('#_EVENTURL')} +END:VEVENT"; +} +echo " +END:VCALENDAR"; +date_default_timezone_set($tz); // set the PHP timezone back the way it was \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/location-single.php b/wp-content/plugins/events-manager/templates/templates/location-single.php new file mode 100644 index 0000000..595ae79 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/location-single.php @@ -0,0 +1,17 @@ +output_single(); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/locations-list.php b/wp-content/plugins/events-manager/templates/templates/locations-list.php new file mode 100644 index 0000000..4c498f0 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/locations-list.php @@ -0,0 +1,16 @@ + +
          px; height:px'>
          + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/my-bookings.php b/wp-content/plugins/events-manager/templates/templates/my-bookings.php new file mode 100644 index 0000000..eff1e19 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/my-bookings.php @@ -0,0 +1,97 @@ + +get_bookings(); + $bookings_count = count($EM_Bookings->bookings); + if($bookings_count > 0){ + //Get events here in one query to speed things up + $event_ids = array(); + foreach($EM_Bookings as $EM_Booking){ + $event_ids[] = $EM_Booking->event_id; + } + } + $limit = ( !empty($_GET['limit']) ) ? $_GET['limit'] : 20;//Default limit + $page = ( !empty($_GET['pno']) ) ? $_GET['pno']:1; + $offset = ( $page > 1 ) ? ($page-1)*$limit : 0; + echo $EM_Notices; + ?> +
          + = $limit ) : ?> +
          + = $limit ) { + $link = em_add_get_params($_SERVER['REQUEST_URI'], array('pno'=>'%PAGE%'), false); //don't html encode, so em_paginate does its thing + $bookings_nav = em_paginate( $link, $bookings_count, $limit, $page); + echo $bookings_nav; + } + ?> +
          +
          + +
          + 0 ): ?> +
          + + + + + + + + + + + + get_event(); + if( ($rowno < $limit || empty($limit)) && ($event_count >= $offset || $offset === 0) ) { + $rowno++; + ?> + + + + + + + + + +
           
          output("#_EVENTLINK"); ?>start ); ?>get_spaces() ?> + get_status(); ?> + + status != 3 && get_option('dbem_bookings_user_cancellation') && $EM_Event->get_bookings()->has_open_time() ){ + $cancel_url = em_add_get_params($_SERVER['REQUEST_URI'], array('action'=>'booking_cancel', 'booking_id'=>$EM_Booking->booking_id, '_wpnonce'=>$nonce)); + $cancel_link = ''.__('Cancel','dbem').''; + } + echo apply_filters('em_my_bookings_booking_actions', $cancel_link, $EM_Booking); + ?> +
          +
          + + + + = $limit ) : ?> +
          + +
          +
          + +
          + +

          Log In to view your bookings.','dbem'),site_url('wp-login.php', 'login'))?>

          + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/readme.txt b/wp-content/plugins/events-manager/templates/templates/readme.txt new file mode 100644 index 0000000..3ab4eb6 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/readme.txt @@ -0,0 +1,10 @@ +This folder has files containing various templates used by events manager. The file names are quite descriptive as to their functions. + +Any of these files in this folder can be individually overriden in your theme folder, making it upgrade safe without having to hack core plugin files directly. + +To override a file, copy (not move) the file to wp-content/themes/yourtheme/plugins/events-manager/templates/ and edit as needed. + +If the file is within a subfolder of this directory, create that subdirectory in your theme path above and copy the file there. + +Whilst we intend to keep changes to a minimum, it may be inevitable that we need to update these files to add new features or fix a +reported bug, please keep this in mind when updating. \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/rss.php b/wp-content/plugins/events-manager/templates/templates/rss.php new file mode 100644 index 0000000..d50fa13 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/rss.php @@ -0,0 +1,41 @@ +\n"; +?> + + + <?php echo esc_html(get_option ( 'dbem_rss_main_title' )); ?> + + + http://blogs.law.harvard.edu/tech/rss + + + ", ">", str_replace ( "<", "<", get_option ( 'dbem_rss_description_format' ) ) ); + //$EM_Events = new EM_Events( array('limit'=>5, 'owner'=>false) ); + $EM_Events = EM_Events::get( array('scope'=>'future', 'owner'=>false ) ); + + foreach ( $EM_Events as $EM_Event ) { + /* @var $EM_Event EM_Event */ + $description = $EM_Event->output( get_option ( 'dbem_rss_description_format' ), "rss"); + $description = ent2ncr(convert_chars($description)); //Some RSS filtering + $event_url = $EM_Event->output('#_EVENTURL'); + ?> + + <?php echo $EM_Event->output( get_option('dbem_rss_title_format'), "rss" ); ?> + + + ]]> + + + + + \ No newline at end of file diff --git a/wp-content/plugins/events-manager/templates/templates/tag-single.php b/wp-content/plugins/events-manager/templates/templates/tag-single.php new file mode 100644 index 0000000..4bc9533 --- /dev/null +++ b/wp-content/plugins/events-manager/templates/templates/tag-single.php @@ -0,0 +1,12 @@ +output_single(); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/widgets/em-calendar.php b/wp-content/plugins/events-manager/widgets/em-calendar.php new file mode 100644 index 0000000..ac286c0 --- /dev/null +++ b/wp-content/plugins/events-manager/widgets/em-calendar.php @@ -0,0 +1,74 @@ +defaults = array( + 'title' => __('Calendar','dbem'), + 'long_events' => 0, + 'category' => 0 + ); + $widget_ops = array('description' => __( "Display your events in a calendar widget.", 'dbem') ); + parent::WP_Widget(false, $name = __('Events Calendar','dbem'), $widget_ops); + } + + /** @see WP_Widget::widget */ + function widget($args, $instance) { + $instance = array_merge($this->defaults, $instance); + echo $args['before_widget']; + echo $args['before_title']; + echo $instance['title']; + echo $args['after_title']; + + //Shall we show a specific month? + if ( !empty($_REQUEST['calendar_day']) ) { + $date = explode('-', $_REQUEST['calendar_day']); + $instance['month'] = $date[1]; + $instance['year'] = $date[0]; + }else{ + $instance['month'] = date("m"); + } + + //Our Widget Content + echo EM_Calendar::output(apply_filters('em_widget_calendar_get_args',$instance)); + + echo $args['after_widget']; + } + + /** @see WP_Widget::update */ + function update($new_instance, $old_instance) { + //filter the new instance and replace blanks with defaults + $new_instance['title'] = ($new_instance['title'] == '') ? $this->defaults['title']:$new_instance['title']; + $new_instance['long_events'] = ($new_instance['long_events'] == '') ? $this->defaults['long_events']:$new_instance['long_events']; + $new_instance['category'] = ($new_instance['category'] == '') ? $this->defaults['category']:$new_instance['category']; + return $new_instance; + } + + /** @see WP_Widget::form */ + function form($instance) { + $instance = array_merge($this->defaults, $instance); + ?> +

          + + +

          +

          + + /> +

          +

          + +
          + +

          + defaults = array( + 'title' => __('Events','dbem'), + 'scope' => 'future', + 'order' => 'ASC', + 'limit' => 5, + 'category' => 0, + 'format' => '#_LINKEDNAME
          • #j #M #y
          • #_TOWN
          ', + 'nolistwrap' => false, + 'orderby' => 'event_start_date,event_start_time,event_name', + 'all_events' => 0, + 'all_events_text' => __('all events', 'dbem'), + 'no_events_text' => __('No events', 'dbem') + ); + $this->em_orderby_options = apply_filters('em_settings_events_default_orderby_ddm', array( + 'event_start_date,event_start_time,event_name' => __('start date, start time, event name','dbem'), + 'event_name,event_start_date,event_start_time' => __('name, start date, start time','dbem'), + 'event_name,event_end_date,event_end_time' => __('name, end date, end time','dbem'), + 'event_end_date,event_end_time,event_name' => __('end date, end time, event name','dbem'), + )); + $widget_ops = array('description' => __( "Display a list of events on Events Manager.", 'dbem') ); + parent::WP_Widget(false, $name = 'Events', $widget_ops); + } + + /** @see WP_Widget::widget */ + function widget($args, $instance) { + $instance = array_merge($this->defaults, $instance); + $instance = $this->fix_scope($instance); // depcreciate + echo $args['before_widget']; + echo $args['before_title']; + echo $instance['title']; + echo $args['after_title']; + $instance['owner'] = false; + //orderby fix for previous versions with old orderby values + if( !array_key_exists($instance['orderby'], $this->em_orderby_options) ){ + //replace old values + $old_vals = array( + 'name' => 'event_name', + 'end_date' => 'event_end_date', + 'start_date' => 'event_start_date', + 'end_time' => 'event_end_time', + 'start_time' => 'event_start_time' + ); + foreach($old_vals as $old_val => $new_val){ + $instance['orderby'] = str_replace($old_val, $new_val, $instance['orderby']); + } + } + + $events = EM_Events::get(apply_filters('em_widget_events_get_args',$instance)); + echo "
            "; + $li_wrap = !preg_match('/^
          • /i', trim($instance['format'])); + if ( count($events) > 0 ){ + foreach($events as $event){ + if( $li_wrap ){ + echo '
          • '. $event->output($instance['format']) .'
          • '; + }else{ + echo $event->output($instance['format']); + } + } + }else{ + echo '
          • '.$instance['no_events_text'].'
          • '; + } + if ( !empty($instance['all_events']) ){ + $events_link = (!empty($instance['all_events_text'])) ? em_get_link($instance['all_events_text']) : em_get_link(__('all events','dbem')); + echo '
          • '.$events_link.'
          • '; + } + echo "
          "; + + echo $args['after_widget']; + } + + /** @see WP_Widget::update */ + function update($new_instance, $old_instance) { + foreach($this->defaults as $key => $value){ + if( empty($new_instance[$key]) ){ + $new_instance[$key] = $value; + } + } + return $new_instance; + } + + /** @see WP_Widget::form */ + function form($instance) { + $instance = array_merge($this->defaults, $instance); + $instance = $this->fix_scope($instance); // depcreciate + ?> +

          + + +

          +

          + + +

          +

          + +
          + +

          +

          + + +

          +

          + + +

          +

          + +
          + +

          +

          + + +

          +

          + + > +

          +

          + + +

          +

          + + +

          + 1 ){ + $instance['scope'] = $instance['time_limit'].'-months'; + }elseif( !empty($instance['time_limit']) && $instance['time_limit'] == 1){ + $instance['scope'] = 'month'; + }elseif( !empty($instance['time_limit']) && $instance['time_limit'] == 'no-limit'){ + $instance['scope'] = 'all'; + } + return $instance; + } +} +add_action('widgets_init', create_function('', 'return register_widget("EM_Widget");')); +?> \ No newline at end of file diff --git a/wp-content/plugins/events-manager/widgets/em-locations.php b/wp-content/plugins/events-manager/widgets/em-locations.php new file mode 100644 index 0000000..f2d424f --- /dev/null +++ b/wp-content/plugins/events-manager/widgets/em-locations.php @@ -0,0 +1,117 @@ +defaults = array( + 'title' => __('Event Locations','dbem'), + 'scope' => 'future', + 'order' => 'ASC', + 'limit' => 5, + 'format' => '#_LOCATIONLINK
          • #_ADDRESS
          • #_TOWN
          ', + 'orderby' => 'event_start_date,event_start_time,location_name' + ); + $this->em_orderby_options = array( + 'event_start_date, event_start_time, location_name' => __('Event start date/time, location name','dbem'), + 'location_name' => __('Location name','dbem') + ); + $widget_ops = array('description' => __( "Display a list of event locations on Events Manager.", 'dbem') ); + parent::WP_Widget(false, $name = 'Event Locations', $widget_ops); + } + + /** @see WP_Widget::widget */ + function widget($args, $instance) { + $instance = array_merge($this->defaults, $instance); + echo $args['before_widget']; + echo $args['before_title']; + echo $instance['title']; + echo $args['after_title']; + + $instance['owner'] = false; + $locations = EM_Locations::get(apply_filters('em_widget_locations_get_args',$instance)); + echo "
            "; + $li_wrap = !preg_match('/^
          • /i', trim($instance['format'])); + if ( count($locations) > 0 ){ + foreach($locations as $location){ + if( $li_wrap ){ + echo '
          • '. $location->output($instance['format']) .'
          • '; + }else{ + echo $location->output($instance['format']); + } + } + }else{ + echo '
          • '.__('No locations', 'dbem').'
          • '; + } + echo "
          "; + + echo $args['after_widget']; + } + + /** @see WP_Widget::update */ + function update($new_instance, $old_instance) { + //filter the new instance and replace blanks with defaults + foreach($this->defaults as $key => $value){ + if( empty($new_instance[$key]) ){ + $new_instance[$key] = $value; + } + } + return $new_instance; + } + + /** @see WP_Widget::form */ + function form($instance) { + $instance = array_merge($this->defaults, $instance); + ?> +

          + + +

          +

          + + +

          +

          +
          + +

          +

          + + +

          +

          +
          + +

          +

          + + +

          + \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/change_log.txt b/wp-content/plugins/gravityforms/change_log.txt new file mode 100644 index 0000000..4aaf762 --- /dev/null +++ b/wp-content/plugins/gravityforms/change_log.txt @@ -0,0 +1,1464 @@ +------------------------------------------------------------------------------------------------------------------- +Version 1.6.4.5.4 + - Replaced }) with } ) to alleviate conflict with some themes that replace }) with ] + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.4.5.3 + - Added space between multiselect values on entry list view + - Fixed issue on confirmation page causing malformed markup and preventing progress bar from being displayed properly + - Added swedish translation + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.4.5.2 + - Fixed issue where submissions (entries) could be created on forms that did not exist or that were inactive. + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.4.5.1 + - Fixed issue with number field calculation not rounding correctly when entry is saved + - Added gform_shortcode_$action filter to allow Add-Ons to implement shortcode actions + add_filter("gform_shortcode_custom", "custom_action", 10, 3); + function custom_action($string, $attributes, $content){ + $string = "custom shortcode action"; + + return $string; + } + - Fixed issue with total not being calculated on forms with animation and next button conditional logic + - Fixed issue with conditional logic value reset with pre-populated fields + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.4.5 + - Fixed issue with conditional logic on jQuery 1.6.1 under certain circumstances + - Fixed issue where required quantity on single, hidden and cacluation products did not accept "0" + - Added logging infrastructure and a few log messages around multi-page file upload + - Fixed issue where inputs did not have calc events bound to change event + - Fixed issue where required quantity on single, hidden and cacluation products did not accept "0" + - Fixed issue with input mask not properly clearing value when form was submitted via the Enter key. + - Fixed issue with gform_product_info being added to meta even on non-product forms + - Fixed issue with default post category not being properly set + - Updated "GFCommon::is_post_field()" to be a public method (for use in User Registration Add-on) + - Fixed issue with number field failing validation when field was configured with commas for decimal separators + - Fixed issue with calculation not supporting the field number format setting + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.4.4 + - Fixed issue with get_product_fields() function caching product fields for pre-submission entries (ones without an ID) + - Fixed issue with credit card field not updating card type as the card number is entered + - Fixed issue with init scripts being executed more than once + - Fixed issue with gf_global not being output on certain situations + - Fixed issue with post not being associated with entries + - Fixed some notice messages + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.4.3 + - Fixed issue with notification url not accepting port number and cleaned up trailing slash and question mark when not necessary + - Fixed issue with shipping being displayed even when shipping is hidden by conditional logic + - Fixed issue with slow conditional logic on certain situations + - Added "create_lead()" function to allow creation of lead object prior to actually saving the lead + - Fixed issue with checkbox field reverting back to default selections after form is submitted + - Fixed issue with payment amount being displayed on entry details for payments of $0.00 + - Fixed issue causing long entry values to not be displayed when server's localization changes the number format + - Fixed issue with quantity fields not updating total on blur + - Fixed issue where "No duplicates" option was not working on calculated fields on values above 999 + - Fixed issue where jQuery prop function was not returning elem/value + - Fixed misc notices + - Added constant for min wp version and updated min version error to use this + - Fixed issue where hidden fields were not triggering calculation event + - Fixed an issue with character counter throwing errors when configured on admin only fields + - Fixed issue with shortcodes being executed as part of the post body template + - Fixed issue with default values being reset on forms with conditional logic + - Updated how gf_global js object was being enqueued and output to work around wp3.2 wp_localize script limitation + - Fixed issue with conditional logic when using the post category checkbox field as a target + - Fixed issue with no conflict mode blocking scripts for any ajax call + - Fixed issue with option and quantity fields not being properly re-assigned to another product field when the product field they are assigned to is deleted. + - Added validation to prevent option and quantity fields from being added to the form without a product field. + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.4.2 + - Fixed issue with website validation not allowing port numbers to be entered + - Added override for jQuery "prop" method which defaults to using attr if prop not available + - Updated AJAX .submit() call, removing extra event data parameter that caused a conflict with some scripts + - Fixed issue with field calculation not taking fields hidden by conditional logic into account + - Moved Cardholder name under the expiration date on credit card fields + - Fixed issue with post image size merge tag drop down not saving its value properly + - Fixed issue where field calculations were not triggering conditional logic + - Fixed issue with {all_fields} displaying duplicate values + - Fixed issue with No conflict mode not enqueueing gravityforms.js on the form editor + - Updated Single Product field so that the field label is changed to match the pre-populated product name + - Fixed issue with Forms menu overriding other custom post type menus + - Fixed issue where number fields in HTML where chocking on comma-formatted numbers + - Fixed issue on form editor for forms that had hidden product fields + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.4.1 + - Fixed issue with conditional logic throwing a javascript error. + - Fixed issue with price calculation rounding + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.4 + - Fixed issue with notification failing when a comma separated list of emails was entered with spaces in between emails + - Fixed quantity validation so that it does not allow decimals. + - Fixed issue with chosen script not being enqueued properly when form had conditional logic + - Fixed validation issue with quantity field that didn't honor the min/max setting + - Removed "Enable calculation" option from quantity field + - Added step='any' attribute to number inputs when HTML5 is enabled + - Fixed javascript error on AJAX forms with credit card field + - Added id attribute to anchor + - Fixed issue with the WordPress HTTPS plugin integration + - Added new entry information fields to the entry export field list + - Updated conditional logic and merge tag drop downs so that a width is specified instead of truncating the value + - Fixed issue on notification merge tag drop down wrapping to next line when field labels were long + - Fixed issue with hidden product not taking quantity into account when calculating total + - Fixed issue with hidden product field preventing quantity from being populated dynamically + - Fixed issue with entry detail page not loading the entry that was clicked on entry list page + - Updated inline js so that it is now "enqueued" and consolidated into a single script block tied to the 'gform_post_render' event + - Fixed admin display issue with the bulk-add modal panel in Chrome + - Fixed warnings when nl2br used on array + - Added new choices for conditional routing to administrator notifications (greater than, less than, contains, starts with, ends with) + - Updated notification wysiwyg styles in admin + - Fixed issue with form editor not allowing users to uncheck the "Set as Post Image" checkbox + - Fixed issue where errors would be displayed when a "starts with" conditional logic was configured without the actual "starts with" value + - Fixed issue with quantity field being recorded as . when a value is not entered + - Fixed issue with a "Select Format" option appearing in the quantity field's number format option for newly created fields. + - Added hook to allow users to specify the page size on the entry list page + add_filter("gform_entry_page_size", "set_page_size", 10, 2); + function set_page_size($page_size, $form_id){ + return 50; //sets page size to 50 + } + - Updated the form editor so that the max characters option on single input field is hidden when input mask is enabled + - Updated checkbox field so that it can be pre-populated using an array in addition to a comma separated list + - Fixed notice for $read_only variable + - Fixed notice for postStatus + - Added support for calculations in Number field + - Added Calculation product type + - Added [gravityforms action="conditional"] shortcode + - Added support for showing lead on entry detail when LID or POS are passed. Always third parties to link directly to leads. + - Implemented support for {Product Name:1:qty} merge tag to allow the quantity of product fields to be returned via a merge tag + - Fixed issue with {all_fields} merge tag when using post category fields as target of conditional logic + - Added filter to allow changes to the recaptcha init screen + add_filter("gform_recaptcha_init_script", "custom_translation", 10, 3); + function custom_translation($script, $form_id, $field){ + $script = 'RecaptchaOptions.custom_translations = { + instructions_visual : "Scrivi le due parole:", + instructions_audio : "Trascrivi ci\u00f2 che senti:", + play_again : "Riascolta la traccia audio", + cant_hear_this : "Scarica la traccia in formato MP3", + visual_challenge : "Modalit\u00e0 visiva", + audio_challenge : "Modalit\u00e0 auditiva", + refresh_btn : "Chiedi due nuove parole", + help_btn : "Aiuto", + incorrect_try_again : "Scorretto. Riprova.", + }'; + return $script; + + } + - Added support for {Total:1:price} merge tag to allow total to be formatted numerically + - Fixed issue of no results displayed when viewing a form that has a paged entry list and switching to a form that does not + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.3.1.2 + - Fixed notices in form widget and when enabling no-conflict mode + - Fixed issue with entry list throwing database errors when sorting while filtering by starred or unread + - Fixed javascript error on form editor for IE7/8 + - Fixed issue with entry detail page displaying an error when query string "pos" wasn't specified. + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.3.1.1 + - Fixed bug with Post Category merge tags + - Fixed issue when AJAX forms getting displayed blank + - Fixed issue with product fields being added to entry even though they were hidden by conditional logic + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.3.1 + - Fixed bug with conditional logic when applied to checkboxes + - Fixed issue where entry limit + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.3 + - Fixed issue where entry limit was not being validated on form submssion + - Fixed issue where form schedule was not being validated on form submission + - Added no-conflict mode functionality + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.3.beta2.4 + - Fixed issue with spinner when multiple forms are placed on the same page + - Fixed issue with AJAX multi-form not being displayed on some occasions + - Fixed issue with email validation when using {admin_email} on notification emails + - Added integration with ManageWP + - Fixed deprecated PHP functions + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.3.beta2.3 + - Updated pricing fields so that they don't support the "Admin Only" option. + - Fixed issue with reCaptcha not changing languages properly + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.3.beta2.2 + - Fixed issue when clicking on "enable values" in admin throwing javascript error; function SetFieldChoices was missing + - Fixed issue with non-customer facing error when there was no attachment + - Fixed issue with with submit button text always using default text + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.3.beta2 + - Fixed issue when applying conditional logic to the submit button + - Fixed issue with non-translatable strings in JS files + - Added merge tag support for HTML fields + - Added hook to enable attachments to be added to notifications + - Updated POT file + - Added total entries to dashboard widget + - Added filter to customize dashboard widget title + - Fixed issue with dashboard widget table breaking outside of container + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.3.beta1 + - Fixed issue with post author not being correctly set for posts configured to be created after payment is received + - Updated conditional logic to support other types of operation and other types of fields + - Updated search in admin to maintain the filter (starred, unread, spam, trash) so the filtered results you are viewing are what is searched + - Added field type (Multi Select, Drop Down, Radio, Checkbox) support to Post Category field + - Updated single product field so that its quantity is defauted to 1 when the quantity field is disabled + - Fixed notices in export and notification page + - Added setting to enable/disable Akismet + - Removed CDATA from scripts to prevent JS error on some browsers due to a character replacement done by WP core. + - Added hooks to enable CDATA wrapping + - Fixed issue with Date field not honoring the "No Duplicate" setting and allowing duplicate dates to be entered when they shouldn't + - Fixed issue with custom confirmation not working properly on AJAX forms + - Added back button to entry detail pagination + - Added pagination on entry detail page + - Fixed WP3.3 bug with {user:***} merge tag + - Fixed issue with chosen script initialization when field is target of conditional logic + - Added support for {admin_email} merge tag and using it as the default value for notifications instead of the actual admin email + - Updated admin paging total to not include items in the trash + - Updated admin paging links so that when an item is moved to the trash using the link, the counts are updated as necessary to reflect the change + - Updated admin paging links so that when an item is marked spam using the link, the counts are updated as necessary to reflect the change + - Fixed admin paging so that the filter carries through to the next page + - Fixed admin paging so that the counts displayed apply to the entry list you are viewing (all, unread, starred, spam, trash) + - Added "gform_akismet_enabled" hook which allows you to disable akismet integration + Documentation: http://www.gravityhelp.com/documentation/page/Gform_akismet_enabled + Example: + add_filter("gform_akismet_enabled", "__return_false"); + - Updated enqueue and print scripts functions to always include jQuery, allows "gform_post_render" js hook to be accessible even when GF not using it + - Added 'eventName' parameter to ajaxSpinner submit event to allow third party integrations to target this specific event + - Added $ajax parameter to 'gform_pre_render' hook + - Updated field type menu on form editor page to prevent it from overlapping the form toolbar when a notice is displayed + - Fixed issue with textarea and input mask script on AJAX forms + - Fixed issue with multi-select fields on AJAX multi-page forms + - Updated progress bar to start at 0% + - Added ability to turn on/off progress bar and set completion text when displayed with the confirmation text + - Added "gform_progressbar_start_at_zero" hook to set progress bar back to previous behavior + Example: + add_filter("gform_progressbar_start_at_zero", "set_progressbar_start", 10, 2); + function set_progressbar_start($start_at_zero, $form) + { + return false; + } + - Added functionality to store a static copy of the product info when the entry is created + - Updated Really Simple Captcha to set a tabindex + - Fixed notice occuring when 'postFormat' property of form object was not present + - Added TinyMCE editor to notification page + - Fixed issue with main Gravity Forms permission that prevented the Forms menu from displaying the first time a new user logged in. + - Fixed issue with Simple Captcha field not validating because of an extra "input_" in the input's ID attribute + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.2 + + - Fixed issue with uploaded files not being properly deleted on multi-site installs + - Updated thickbox enqueuing so that it is done conditionally when WP < 3.3, since the conflict between thickbox and the UI tabs have been fixed in WP 3.3 + - Fixed issue for ReallySimpleCaptcha with image/color display when changing size/font/background colors + - Fixed issue with preview link that is displyed after creating a new form + - Fixed notice messages + - Fixed link for reCaptcha sign-up + - Changed the way that the preview, print entry and column selection pages are requested so that they run within the WordPress page cycle instead of being called directly. + - Fixed issue with {all_fields:admin} not displaying admin labels for Single Product fields. + - Fixed issue with blank sections being displayed on {all_fields} merge tag. + - Fixed issue where content templates would return empty when a "0" was passed + - Added "gform_replace_merge_tags" hook which allows for the replacement of custom merge tags + Documentation: http://www.gravityhelp.com/documentation/page/Gform_replace_variables + Example: + add_filter('gform_replace_merge_tags', 'replace_download_link', 10, 7); + function replace_download_link($text, $form, $entry, $url_encode, $esc_html, $nl2br, $format) { + + if(strpos($text, '{download_link}') === false) + return $text; + + $text = str_replace('{download_link}', gform_get_meta($entry['id'], 'download_link'), $text); + + return $text; + } + - Added "gform_custom_merge_tags" hook which allows for the inclusion of custom merge tags whereever merge tag drop downs are generated + Documentation: http://www.gravityhelp.com/documentation/page/Gform_custom_merge_tags + Example: + add_filter('gform_custom_merge_tags', 'custom_merge_tags', 10, 4); + function custom_merge_tags($merge_tags, $form_id, $fields, $element_id) { + $merge_tags[] = array('label' => 'Download Link', 'tag' => '{download_link}'); + return $merge_tags; + } + - Added "gform_entry_created" hook which fires immediately after the lead has been created but before any lead specific functionality has processed + Documentation: http://www.gravityhelp.com/documentation/page/Gform_entry_created + Example: + add_action('gform_entry_created', 'generate_mergedoc'); + function generate_mergedoc($entry, $form) { + $download_link = self::get_download_link($entry['id']); + gform_update_meta($entry['id'], 'download_link', $download_link); + } + - Added "gform_form_actions" hook which allows the modification of existing form actions and addition of new form actions + Documentation: http://www.gravityhelp.com/documentation/page/Gform_form_actions + Example: + add_action('gform_form_actions', 'add_mergedoc_link', 10, 4); + function add_mergedoc_link($actions, $form_id) { + $actions['mergedoc_settings'] = "" . __("MergeDoc", "gravityformsmergedoc") . ""; + return $actions; + } + - Fixed issue with activation throwing errors when trying to remove old indexes. + - Fixed issue with Pricing fields displaying as $0.00 for text formatted notifications + - Updated issue where selecting "None" for Paging Progress Indicator option was not being re-populated correctly after updating the form + - Fixed issue with user defined price field not accepting $0.00 as a valid value + - Added ability to go back to a specific page when form valiation fails + - Fixed issue with radion button and checkbox pricing fields storing the selected items even when they had blank prices + - Fixed issue with escaping causing javascript errors on the entry list when language is set to French + - Updated the color_picker function in the GFFormDetail class to public (so Add-Ons can access it) + +------------------------------------------------------------------------------------------------------------------- +Version 1.6.1 + - Fixed issue with form preview returning a 404 + - Fixed issue with credit card field not escaping translated text properly and causing issues with French translation. + - Updated 'gform_allowable_tags' filter to run on every field including post fields + - Fixed issue with form export including the node for non credit card fields. + - Fixed issue with gform_save_field_value filter not accepting values greater than 200 characters + - Fixed issue with last field in the form being saved with the value of the total field. + +------------------------------------------------------------------------------------------------------------------- +Version 1.6 + - Added additional version-specific IE browser classes to gform_wrapper + - Removed json.php. Using WordPress JSON class instead. + - Fixed issue where blank post meta keys are created when empty value is submitted + - Added support for running Gravity Forms setup from settings page based on "setup" query string. (ie. ?page=gf_settings&setup) + - Fixed issue with radio buttons when using jQuery 1.6.4 (Wordpress 3.3) + - Fixed issue with post images getting saved in a wrong folder (based on the date of the embedded post/page instead of the newly created post) + - Fixed debug notice messages + - Added support for merge codes :label to allow field labels to be conditionally written to the outputted only when the field has a value. + - Fixed issue with Post Format not being selected correctly in the form editor + - Added hook on preview.php file to enqueue custom styles + - Added Primary key to wp_rg_form_meta and wp_rg_lead_detail_long tables + - Fixed issue on checkbox merge tag when targeting specific checkbox item + - Added support for :currency and :price modifier on pricing merge tags + - Updated tooltip script printing so that only tooltip specific scripts are printed when calling wp_print_scripts(); + - Updated "gform_confirmation_anchor" hook to affect AJAX forms and provide option for AJAX forms that allows you to specify an integer for the scroll position + - Fixed issue with thickbox script on upcoming WP 3.3 + - Fixed issue with Post Custom Field (Date field type) not honoring date format when storing post meta + - Updated editor "Update Form" button to do a full refresh instead of AJAX + - Fixed issue with formatting and total calculation of the Swiss Franc currency + - Added ID attribute to the "Add Form" link + - Dynamically calculating WordPress root directory on files that are loaded outside the WP context (i.e. preview.php, select_columns.php) + - Added "gform_post_render" javascript hook to functions to bound to every form render on AJAX enabled forms. + Documentation: http://www.gravityhelp.com/documentation/page/Gform_post_render + Example: + jQuery(document).bind('gform_post_render', function(){ + // code to trigger on AJAX form render + }); + - Added support for additional date formats + - Fixed conditional logic issue on multi-page forms when AJAX is turned on + - Fixed issue where the full list of radio and checkbox items were displayed in the admin after editing a choice + - Fixed erroneous single quote from AJAX inline script block + - Fixed issue with conditional logic fields not making into notification email when sending notification after payment is made. + - Added "gform_allowable_tags" hook to allow enabling HTML or specific HTML tags for submitted data + Documentation: http://www.gravityhelp.com/documentation/page/Gform_allowable_tags + Example: + add_filter("gform_allowable_tags", "__return_true"); + - Added browser class to gform_wrapper + - Added a form specific class to the confirmation container. "gform_confirmation_message_FORMID". + - Fixed issue where adding any post field to a form prevented the form from saving if Post Formats were not supported + - Fixed problem creating warning messages on radio button fields. + - Added extra classes to pagination steps + - Updated form editor UI + - Added Mask setting to Text Field. + - Fixed markup on form list page causing WP footer to overlap with long form list. + - Aded form advanced setting to require user to be logged in to view form and a configurable message. + - Added re-send notification functionality to entry list and entry detail page. + - Added Print to list of bulk action operations so that multiple entries can be printed at once. + - Added hook to change separator of entry export file. + - Added "Other" option to radio button field. + - Added tab index to shortcode and function to specify starting tab index. + - Added CDATA around scripts to ensure valid HTML. + - Updated shortcode wizard to remove square brackets( [ ] ) characters from form name when placed in the shortcode. + - Added duplicate field functionality. + - Added update message for bulk actions on entries list page. + - Added post format setting to main post fields (title, body). + - Added option to set post image field as a featured image. + - Added default value settings to simple name field + - Updated default price for options to $0.00 price instead of blank. + - Added visibility setting to product fields so that they can be hidden. + - Added trash and spam functionality. + - Added integration with Akismet. + - Fixed conditional logic problem when target values have single quotes. + - Fixed number field validation. + - Added support for 24 hour time on time field. + - Added Date drop down type to date field. + - Added new gform_after_submission hook that fires early in the process and deprecated gform_post_submission. + - Enhanced Limit entry option to allow (per day/week/month/year). + - Added hidden product field. + - Added list field type. + - Updated file upload field to increase security. + - Added lookup by form name on gravityform shortcode. + - Added checkbox merge variable to return a comma separated list of selected items. + - Updated product fields to improve pre-population via hooks. + - Added new easier to use field validation filter. + - Updated entry detail and notification emails to hide section break when all fields in that section are blank. + - Added validation so that option field does not get added to a form without a product field. + - Added hook for single product sublabels. + - Added support for merge tags in confirmation URL redirect field + - Added checkbox input type to Post Custom Field. + - Added an option to send emails in text format. + - Added rg_lead_meta table to be used by Add-On developers. + - Removed donation field button (still providing support for existing donation fields). + - Added option to use the "chosen" script on drop downs. + - Added multi-select field. + - Added multi-select field as input type for: Tag, Custom Field. + - Added checkbox (comma separated) to entry list. + - Added ability to save a predefined choice from the bulk add screen. + - Added list field to custom post field. + - Added hook for list field column. + - Added description placement setting (top label only). + - Added new merge tag for displaying Admin labels on notifications(create {all_fields:admin_label} and make it more flexible) + - Fixed issue with "gform_notification_format" filter not passing all of the parameters correctly + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2.10 + - Fixed issue with checkbox variable replacement creating a warning message. + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2.9 + - Replaced dot(.) in the state field ID with underscore. + - Disabling product state validation if field is configured for dynamic population + - Marked build_lead_array() function as public to allow developers to call it when performing custom entry queries. + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2.8 + - Added product price javascript filter to allow custom total calculation + + function gform_product_total(formId, price){ + return price + 100; + } + - Added gform_product_info filter to allow manipulation of the product list + - Removed custom class from field when displayed in the form editor + - Implemented gform_address_display_format on form display + - Fixed formatting issue with address field when state field was hidden + - Replace dot (.) in complex field's input IDs with underscores to prevent CSS problems when targeting the input + - Added gform_print_entry_header and gform_print_entry_footer hooks to allow users to add custom headers and footers in the Print Entry screen + - Added CSS rule to prevent a reported display issue where button panels were cut off by the container overflow in the form editor + - Fixed javascript error on drop down shipping fields when using WP 3.2 RC1 + - Fixed issue with Post Custom Field template not saving value correctly + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2.7 + - Fixed issue with drop down fields hidden by conditional logic getting sent in notifications + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2.6 + - Added rgobj() function to better handle retrieving properties from objects + - Added new hook "gform_default_notification" to allow the default admin notification for new forms to be disabled + Documentation: http://www.gravityhelp.com/documentation/page/Gform_default_notification + Example: + add_filter("gform_default_notification", "__return_false"); + + - Fixed localization issues on a few strings + - Updated POT file + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2.5 + - Adjusted website field so that if the default value of "http://" is left in the field, it is saved as a blank value + - Fixed issue with shortcode wizard adding shortcode to wrong the tab + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2.4 + - Changed entry export so that entry date is timezone aware + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2.3 + - Updated jQuery attr("checked"), attr("disabled") and attr("selected") statements for compatibility with jQuery 1.6 + - Fixed issue with form editor throwing errors on WP 3.2 on forms without page breaks + - Changed Print Entry page so that Admin labels are used when appropriate. + - Added "gfield_contains_required" class to main
        • when it contains a required field. + - Fixed issue with checkbox option fields displaying blank options in the admin and PayPal + - Added Greenland to the list of countries + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2.2 + - Changed form action to a relative path instead of full URL + - Removed TwentyTen theme-specific styles from forms.css + - Minor updates to admin.css + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2.1 + - Updated jQuery property selector to include quotes + - Removed 'href' attribute from 'Edit' link to resolve IE issue where it triggered the onBeforeUnload event + - Updated admin styles to make 'Close' link cursor display as a pointer + - Added 'gform_admin_pre_render' hook to fire on Form Editor view + - Added renewal reminder to admin notifications + - Removed Category ID from category variable replacement + - Fixed issue with back-slashes being removed when saving entry + - Added gform_get_input_value hook to replace gform_get_field_value + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.2 + - Updated reCAPTCHA API file + - Fixed issue with Post Category fields storing the wrong post when sub categories have the same name + - Fixed issue with Post Category field not displaying all categories in the form editor + - Fixed issue with drop downs not keeping selected item upon validation error when value is set to 0 (zero) and other item is selected by default + - Fixed issue with number of entries being written to the export files + - Fixed javascript error on Form Editor when "Enable Content Template" is checked, but nothing is entered in the template field + - Added JS escaping to prevent javascript error on Form Editor when translated AJAX error messages contain a single quote. + - Fixed issue drop downs not keeping selected item upon validation error when value is set to 0 (zero) + - Fixed issue with price calculation when conditional logic animation was enabled + - Added gform_validation_error in wrapper div when form fails validation + - Updated POT file + - Fixed error caused by GFCommon not being included when calling enqueue_function from functions.php + - Updated portuguese translation file + - Added gform_delete_lead hook + - Fixed problem with exporting/importing routing rules + - Fixed issue with product field validation when using Euro as currency + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.1 + - Fixed problem with getting embed_post for {custom_field} variables + - Added rules to forms.css file to reset unordered list styles to defaults inside HTML blocks + - Cleaned up Notice messages + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.0.2 + - Updated GFFormsModel::get_forms() to sort by "title ASC" by default + - Added autocomplete="off" to honeypot field when HTML5 is on + - Added shortcode support to entry limit and expired form messages + - Updated POT file + - Fixed File Upload and Post Field bug deleting field data when editing entry + - Fixed typo in validation message + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.0.1 + - Localized string "of" in character counter message. + - Fixed issue with option field where checkbox and radio buttons items where not getting refreshed when the + and - button were clicked + - Fixed issue with currency formatting for currencies with commas as decimal points + - Added form specific version of "gform_validation" hook + - Fixed issue with gform_unique_id not escaping result before displaying + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.RC7 + - Added "Disable Auto-formatting" option to form confirmations + - Added "Reset Views" and "Delete Entries" to the form list bulk action drop down + - Added "Settings" link to the plugins page + - Removed Thesis (theme) specific CSS rules from default forms.css file + +------------------------------------------------------------------------------------------------------------------- +Version 1.5.RC6 + - Added styles to admin.css for new toolbar element + - Implemented toolbar on Form editor, Notification and Entry list pages + - Added gform_countries filter to allow manipulation of the address field's country list + - Added gform_duplicate_message filter to allow customization of the default duplicate value validation message + - Populating content templates with the field's variable by default (applies to Post Title, Post Body and Post Custom Field) + - Fixed issue with Single Product and User Defined Product not displaying the Rule Settings + - Implemented Renew section on Settings page + - Limiting the number of items displayed in the admin for checkbox and multiple choice fields + - Fixed issue with user defined product field not formatting the entered value as currency + - Fixed issue with + + +
          + +
          + + +
          +

          + +

          +
          + + + + + + + "; + + $content = apply_filters("gform_field_content", $content, $field, $value, $lead["id"], $form["id"]); + + echo $content; + break; + } + } + ?> + +
          +

          +
          " . + GFCommon::get_field_input($field, $value, $lead["id"]) . "
          +
          +
          +
          + 0 && $is_editable && GFCommon::current_user_can_any("gravityforms_edit_entry_notes")){ + ?> +
          + + + '; + echo apply_filters("gform_notes_apply_button", $apply_button); + ?> +
          + + + + + + + + + + + = $notes_count ? true : false; + ?> + + + + + + + + + + + + +
          Notes
          + + + + "> + +
          +
          user_id, 48);?>
          +
          user_name)?>
          +

          user_email) ?>
          + date_created, false)) ?>

          +
          +
          value) ?>
          +
          + + '; + echo apply_filters("gform_addnote_button", $note_button); + + if(!empty($emails)){ ?> +    + + +    + + + + +
          + + + + + + + + + + = $field_count ? true : false; + ?> + + + + = $field_count && !$has_product_fields ? true : false; + $last_row = $is_last ? " lastrow" : ""; + + $display_value = empty($display_value) && $display_value !== "0" ? " " : $display_value; + + $content = ' + + + + + + '; + + $content = apply_filters("gform_field_content", $content, $field, $value, $lead["id"], $form["id"]); + + echo $content; + + } + break; + } + } + + $products = array(); + if($has_product_fields){ + $products = GFCommon::get_product_fields($form, $lead); + if(!empty($products["products"])){ + ?> + + + + + + + + + +
          + : + + + onclick="ToggleShowEmptyFields();"/>   + +
          ">
          ' . esc_html(GFCommon::get_label($field)) . '
          ' . $display_value . '
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
            + + > + +
          +
            
           
          +
          + $pos), remove_query_arg(array('pos', 'lid'))) . '"': ''; + $class .= ' gf_entry_pagination_link'; + $class .= $pos !== false ? ' gf_entry_pagination_link_active' : ' gf_entry_pagination_link_inactive'; + + return '' . $label . '
        • '; + } + +} +?> \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/entry_list.php b/wp-content/plugins/gravityforms/entry_list.php new file mode 100644 index 0000000..0cc3865 --- /dev/null +++ b/wp-content/plugins/gravityforms/entry_list.php @@ -0,0 +1,1329 @@ + +
          + ', ''); ?> +
          + id; + + self::leads_page($id); + } + } + + public static function leads_page($form_id){ + global $wpdb; + + //quit if version of wp is not supported + if(!GFCommon::ensure_wp_version()) + return; + + echo GFCommon::get_remote_message(); + $action = RGForms::post("action"); + $update_message = ""; + switch($action){ + case "delete" : + check_admin_referer('gforms_entry_list', 'gforms_entry_list'); + $lead_id = $_POST["action_argument"]; + RGFormsModel::delete_lead($lead_id); + $update_message = __("Entry deleted.", "gravityforms"); + break; + + case "bulk": + check_admin_referer('gforms_entry_list', 'gforms_entry_list'); + + $bulk_action = !empty($_POST["bulk_action"]) ? $_POST["bulk_action"] : $_POST["bulk_action2"]; + $leads = $_POST["lead"]; + + $entry_count = count($leads) > 1 ? sprintf(__("%d entries", "gravityforms"), count($leads)) : __("1 entry", "gravityforms"); + + switch($bulk_action) { + case "delete": + RGFormsModel::delete_leads($leads); + $update_message = sprintf(__("%s deleted.", "gravityforms"), $entry_count); + break; + + case "trash": + RGFormsModel::update_leads_property($leads, "status", "trash"); + $update_message = sprintf(__("%s moved to Trash.", "gravityforms"), $entry_count); + break; + + case "restore": + RGFormsModel::update_leads_property($leads, "status", "active"); + $update_message = sprintf(__("%s restored from the Trash.", "gravityforms"), $entry_count); + break; + + case "unspam": + RGFormsModel::update_leads_property($leads, "status", "active"); + $update_message = sprintf(__("%s restored from the spam.", "gravityforms"), $entry_count); + break; + + case "spam": + RGFormsModel::update_leads_property($leads, "status", "spam"); + $update_message = sprintf(__("%s marked as spam.", "gravityforms"), $entry_count); + break; + + case "mark_read": + RGFormsModel::update_leads_property($leads, "is_read", 1); + $update_message = sprintf(__("%s marked as read.", "gravityforms"), $entry_count); + break; + + case "mark_unread": + RGFormsModel::update_leads_property($leads, "is_read", 0); + $update_message = sprintf(__("%s marked as unread.", "gravityforms"), $entry_count); + break; + + case "add_star": + RGFormsModel::update_leads_property($leads, "is_starred", 1); + $update_message = sprintf(__("%s starred.", "gravityforms"), $entry_count); + break; + + case "remove_star": + RGFormsModel::update_leads_property($leads, "is_starred", 0); + $update_message = sprintf(__("%s unstarred.", "gravityforms"), $entry_count); + break; + } + break; + + case "change_columns": + check_admin_referer('gforms_entry_list', 'gforms_entry_list'); + $columns = GFCommon::json_decode(stripslashes($_POST["grid_columns"]), true); + RGFormsModel::update_grid_column_meta($form_id, $columns); + break; + } + + $filter = rgget("filter"); + if(rgpost("button_delete_permanently")){ + RGFormsModel::delete_leads_by_form($form_id, $filter); + } + + $sort_field = empty($_GET["sort"]) ? 0 : $_GET["sort"]; + $sort_direction = empty($_GET["dir"]) ? "DESC" : $_GET["dir"]; + $search = RGForms::get("s"); + $page_index = empty($_GET["paged"]) ? 0 : intval($_GET["paged"]) - 1; + + $star = $filter == "star" ? 1 : null; // is_numeric(RGForms::get("star")) ? intval(RGForms::get("star")) : null; + $read = $filter == "unread" ? 0 : null; //is_numeric(RGForms::get("read")) ? intval(RGForms::get("read")) : null; + + $page_size = apply_filters("gform_entry_page_size", apply_filters("gform_entry_page_size_{$form_id}", 20, $form_id), $form_id); + $first_item_index = $page_index * $page_size; + + $form = RGFormsModel::get_form_meta($form_id); + $sort_field_meta = RGFormsModel::get_field($form, $sort_field); + $is_numeric = $sort_field_meta["type"] == "number"; + + $status = in_array($filter, array("trash", "spam")) ? $filter : "active"; + $leads = RGFormsModel::get_leads($form_id, $sort_field, $sort_direction, $search, $first_item_index, $page_size, $star, $read, $is_numeric, null, null, $status); + $lead_count = RGFormsModel::get_lead_count($form_id, $search, $star, $read); + + $summary = RGFormsModel::get_form_counts($form_id); + $active_lead_count = $summary["total"]; + $unread_count = $summary["unread"]; + $starred_count = $summary["starred"]; + $spam_count = $summary["spam"]; + $trash_count = $summary["trash"]; + + $columns = RGFormsModel::get_grid_columns($form_id, true); + + $search_qs = empty($search) ? "" : "&s=" . urlencode($search); + $sort_qs = empty($sort_field) ? "" : "&sort=$sort_field"; + $dir_qs = empty($sort_field) ? "" : "&dir=$sort_direction"; + $star_qs = $star !== null ? "&star=$star" : ""; + $read_qs = $read !== null ? "&read=$read" : ""; + $filter_qs = "&filter=" . $filter; + + // determine which counter to use for paging and set total count + switch ($filter) + { + case "trash" : + $display_total = ceil($trash_count / $page_size); + $total_lead_count = $trash_count; + break; + case "spam" : + $display_total = ceil($spam_count / $page_size); + $total_lead_count = $spam_count; + break; + case "star" : + $display_total = ceil($starred_count / $page_size); + $total_lead_count = $starred_count; + break; + case "unread" : + $display_total = ceil($unread_count / $page_size); + $total_lead_count = $unread_count; + break; + default : + $display_total = ceil($active_lead_count / $page_size); + $total_lead_count = $active_lead_count; + break; + } + + $page_links = paginate_links( array( + 'base' => admin_url("admin.php") . "?page=gf_entries&view=entries&id=$form_id&%_%" . $search_qs . $sort_qs . $dir_qs. $star_qs . $read_qs . $filter_qs, + 'format' => 'paged=%#%', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => $display_total, + 'current' => $page_index + 1, + 'show_all' => false + )); + + wp_print_scripts(array("thickbox")); + wp_print_styles(array("thickbox")); + + ?> + + + + + + + + + + +
          + +

          +

          :

          + + + +
          + + + + + + + + +
          + +
          + + + '; + echo apply_filters("gform_entry_apply_button", $apply_button); + + if(in_array($filter, array("trash", "spam"))){ + $message = $filter == "trash" ? __("WARNING! This operation cannot be undone. Empty trash? \'Ok\' to empty trash. \'Cancel\' to abort.") : __("WARNING! This operation cannot be undone. Permanently delete all spam? \'Ok\' to delete. \'Cancel\' to abort."); + $button_label = $filter == "trash" ? __("Empty Trash", "gravityforms") : __("Delete All Spam", "gravityforms"); + ?> + + + + + + +
          + + + +
          +
          + + + + + + + + $field_info){ + $dir = $field_id == 0 ? "DESC" : "ASC"; //default every field so ascending sorting except date_created (id=0) + if($field_id == $sort_field) //reverting direction if clicking on the currently sorted field + $dir = $sort_direction == "ASC" ? "DESC" : "ASC"; + ?> + + + + + + + + + + + $field_info){ + $dir = $field_id == 0 ? "DESC" : "ASC"; //default every field so ascending sorting except date_created (id=0) + if($field_id == $sort_field) //reverting direction if clicking on the currently sorted field + $dir = $sort_direction == "ASC" ? "DESC" : "ASC"; + ?> + + + + + + + + 0){ + $field_ids = array_keys($columns); + + foreach($leads as $position => $lead){ + + $position = ($page_size * $page_index) + $position; + + ?> + " class='author-self status-inherit ' valign="top"> + + + + "; + } + else{ + $field = RGFormsModel::get_field($form, $field_id); + if(rgar($field, "enableChoiceValue") || rgar($field, "enablePrice")){ + foreach($field["choices"] as $choice){ + if($choice["value"] == $lead[$field_id]){ + $value = ""; + break; + } + else if($field["enablePrice"]){ + $ary = explode("|", $lead[$field_id]); + $val = count($ary) > 0 ? $ary[0] : ""; + $price = count($ary) > 1 ? $ary[1] : ""; + + if($val == $choice["value"]){ + $value = ""; + break; + } + } + } + } + } + } + } + } + break; + + case "post_image" : + list($url, $title, $caption, $description) = rgexplode("|:|", $value, 4); + if(!empty($url)){ + //displaying thumbnail (if file is an image) or an icon based on the extension + $thumb = self::get_icon_url($url); + $value = ""; + } + break; + + case "fileupload" : + $file_path = $value; + if(!empty($file_path)){ + //displaying thumbnail (if file is an image) or an icon based on the extension + $thumb = self::get_icon_url($file_path); + $file_path = esc_attr($file_path); + $value = ""; + } + break; + + case "source_url" : + $value = ".../" . esc_attr(GFCommon::truncate_url($lead["source_url"])) . ""; + break; + + case "textarea" : + case "post_content" : + case "post_excerpt" : + $value = esc_html($value); + break; + + case "date_created" : + case "payment_date" : + $value = GFCommon::format_date($value, false); + break; + + case "date" : + $field = RGFormsModel::get_field($form, $field_id); + $value = GFCommon::date_display($value, $field["dateFormat"]); + break; + + case "radio" : + case "select" : + $field = RGFormsModel::get_field($form, $field_id); + $value = GFCommon::selection_display($value, $field, $lead["currency"]); + break; + + case "number" : + $field = RGFormsModel::get_field($form, $field_id); + $value = GFCommon::format_number($value, rgar($field, "numberFormat")); + break; + + case "total" : + case "payment_amount" : + $value = GFCommon::to_money($value, $lead["currency"]); + break; + + case "created_by" : + if(!empty($value)){ + $userdata = get_userdata($value); + $value = $userdata->user_login; + } + break; + + case "multiselect": + // add space after comma-delimited values + $value = implode(', ', explode(',', $value)); + break; + + default: + $value = esc_html($value); + } + + $value = apply_filters("gform_entries_field_value", $value, $form_id, $field_id, $lead); + + /* ^ maybe move to function */ + + $query_string = "gf_entries&view=entry&id={$form_id}&lid={$lead["id"]}{$search_qs}{$sort_qs}{$dir_qs}{$filter_qs}&paged=" . ($page_index + 1); + if($is_first_column){ + ?> + + + + + + + + + + + + +
            + " href="/?gf_page=select_columns&id=&TB_iframe=true&height=365&width=600" class="thickbox entries_edit_icon"> +
            + +
          + " /> + + " src="/images/star.png" onclick="ToggleStar(this, );" /> + + &paged=&pos="> +
          + + + " href="admin.php?page=gf_entries&view=entry&id=&lid=&paged=&pos="> + | + + + + " href=""> + + + + + + ' . __("Delete Permanently", "gravityforms") .''; + echo apply_filters("gform_delete_entry_link", $delete_link); + ?> + + + + " href="admin.php?page=gf_entries&view=entry&id=&lid=&paged=&pos="> + | + + + + " href=""> + + + + + + ' . __("Delete Permanently", "gravityforms") .''; + echo apply_filters("gform_delete_entry_link", $delete_link); + ?> + + + + " href="admin.php?page=gf_entries&view=entry&id=&lid=&paged=&pos="> + | + + + " title="Mark this entry as read" href="javascript:ToggleRead();" style="display:;">" title="" href="javascript:ToggleRead();" style="display:;"> + + + + + " href=""> + + + + + + " href=""> + + + +
          + +
          +   + +  
          + +
          + +
          + +
          + + + '; + echo apply_filters("gform_entry_apply_button", $apply_button); + ?> +
          + + + +
          +
          + +
          +
          + + '; + $range_max = ''; + if (($first_item_index + $page_size) > $total_lead_count) + { + $range_max .= $total_lead_count; + } + else + { + $range_max .= ($first_item_index + $page_size); + } + $range_max .= ""; + $range_min = '' . ($first_item_index + 1) . ""; + $paging_total = '' . $total_lead_count . ""; + $paging_html .= sprintf(__("Displaying %s - %s of %s", "gravityforms"), $range_min, $range_max , $paging_total); + $paging_html .= "" .$page_links . "
          "; + } + else + { + $paging_html = ""; + } + return $paging_html; + } + +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/export.php b/wp-content/plugins/gravityforms/export.php new file mode 100644 index 0000000..8ed0215 --- /dev/null +++ b/wp-content/plugins/gravityforms/export.php @@ -0,0 +1,649 @@ +" . __("Please select the forms to be exported", "gravityforms") . ""; + return; + } + + $forms = RGFormsModel::get_forms_by_id($selected_forms); + + //removing the inputs for checkboxes (choices will be used during the import) + foreach($forms as &$form){ + foreach($form["fields"] as &$field){ + $inputType = RGFormsModel::get_input_type($field); + + if(isset($field["pageNumber"])) + unset($field["pageNumber"]); + + if($inputType == "checkbox") + unset($field["inputs"]); + + if($inputType != "address") + unset($field["addressType"]); + + if($inputType != "date"){ + unset($field["calendarIconType"]); + unset($field["dateType"]); + } + + if($inputType != "creditcard") + unset($field["creditCards"]); + + if($field["type"] == rgar($field, "inputType")) + unset($field["inputType"]); + + if(in_array($inputType, array("checkbox", "radio", "select")) && !rgar($field,"enableChoiceValue")){ + foreach($field["choices"] as &$choice) + unset($choice["value"]); + } + } + } + + require_once("xml.php"); + + $options = array( + "version" => GFCommon::$version, + "forms/form/id" => array("is_hidden" => true), + "forms/form/nextFieldId" => array("is_hidden" => true), + "forms/form/notification/routing" => array("array_tag" => "routing_item"), + "forms/form/useCurrentUserAsAuthor" => array("is_attribute" => true), + "forms/form/postAuthor" => array("is_attribute" => true), + "forms/form/postCategory" => array("is_attribute" => true), + "forms/form/postStatus" => array("is_attribute" => true), + "forms/form/postAuthor" => array("is_attribute" => true), + "forms/form/postFormat" => array("is_attribute" => true), + "forms/form/labelPlacement" => array("is_attribute" => true), + "forms/form/confirmation/type" => array("is_attribute" => true), + "forms/form/lastPageButton/type" => array("is_attribute" => true), + "forms/form/pagination/type" => array("is_attribute" => true), + "forms/form/pagination/style" => array("is_attribute" => true), + "forms/form/button/type" => array("is_attribute" => true), + "forms/form/button/conditionalLogic/actionType" => array("is_attribute" => true), + "forms/form/button/conditionalLogic/logicType" => array("is_attribute" => true), + "forms/form/button/conditionalLogic/rules/rule/fieldId" => array("is_attribute" => true), + "forms/form/button/conditionalLogic/rules/rule/operator" => array("is_attribute" => true), + "forms/form/button/conditionalLogic/rules/rule/value" => array("allow_empty" => true), + "forms/form/fields/field/id" => array("is_attribute" => true), + "forms/form/fields/field/type" => array("is_attribute" => true), + "forms/form/fields/field/inputType" => array("is_attribute" => true), + "forms/form/fields/field/displayOnly" => array("is_attribute" => true), + "forms/form/fields/field/size" => array("is_attribute" => true), + "forms/form/fields/field/isRequired" => array("is_attribute" => true), + "forms/form/fields/field/noDuplicates" => array("is_attribute" => true), + "forms/form/fields/field/inputs/input/id" => array("is_attribute" => true), + "forms/form/fields/field/inputs/input/name" => array("is_attribute" => true), + "forms/form/fields/field/formId" => array("is_hidden" => true), + "forms/form/fields/field/descriptionPlacement" => array("is_hidden" => true), + "forms/form/fields/field/allowsPrepopulate" => array("is_attribute" => true), + "forms/form/fields/field/adminOnly" => array("is_attribute" => true), + "forms/form/fields/field/enableChoiceValue" => array("is_attribute" => true), + "forms/form/fields/field/enableEnhancedUI" => array("is_attribute" => true), + "forms/form/fields/field/conditionalLogic/actionType" => array("is_attribute" => true), + "forms/form/fields/field/conditionalLogic/logicType" => array("is_attribute" => true), + "forms/form/fields/field/conditionalLogic/rules/rule/fieldId" => array("is_attribute" => true), + "forms/form/fields/field/conditionalLogic/rules/rule/operator" => array("is_attribute" => true), + "forms/form/fields/field/conditionalLogic/rules/rule/value" => array("allow_empty" => true), + "forms/form/fields/field/previousButton/type" => array("is_attribute" => true), + "forms/form/fields/field/nextButton/type" => array("is_attribute" => true), + "forms/form/fields/field/nextButton/conditionalLogic/actionType" => array("is_attribute" => true), + "forms/form/fields/field/nextButton/conditionalLogic/logicType" => array("is_attribute" => true), + "forms/form/fields/field/nextButton/conditionalLogic/rules/rule/fieldId" => array("is_attribute" => true), + "forms/form/fields/field/nextButton/conditionalLogic/rules/rule/operator" => array("is_attribute" => true), + "forms/form/fields/field/nextButton/conditionalLogic/rules/rule/value" => array("allow_empty" => true), + "forms/form/fields/field/choices/choice/isSelected" => array("is_attribute" => true), + "forms/form/fields/field/choices/choice/text" => array("allow_empty" => true), + "forms/form/fields/field/choices/choice/value" => array("allow_empty" => true), + "forms/form/fields/field/rangeMin" => array("is_attribute" => true), + "forms/form/fields/field/rangeMax" => array("is_attribute" => true), + "forms/form/fields/field/numberFormat" => array("is_attribute" => true), + "forms/form/fields/field/calendarIconType" => array("is_attribute" => true), + "forms/form/fields/field/dateFormat" => array("is_attribute" => true), + "forms/form/fields/field/dateType" => array("is_attribute" => true), + "forms/form/fields/field/nameFormat" => array("is_attribute" => true), + "forms/form/fields/field/phoneFormat" => array("is_attribute" => true), + "forms/form/fields/field/addressType" => array("is_attribute" => true), + "forms/form/fields/field/hideCountry" => array("is_attribute" => true), + "forms/form/fields/field/hideAddress2" => array("is_attribute" => true), + "forms/form/fields/field/disableQuantity" => array("is_attribute" => true), + "forms/form/fields/field/productField" => array("is_attribute" => true), + "forms/form/fields/field/enablePrice" => array("is_attribute" => true), + "forms/form/fields/field/displayTitle" => array("is_attribute" => true), + "forms/form/fields/field/displayCaption" => array("is_attribute" => true), + "forms/form/fields/field/displayDescription" => array("is_attribute" => true), + "forms/form/fields/field/displayAllCategories" => array("is_attribute" => true), + "forms/form/fields/field/postCustomFieldName" => array("is_attribute" => true) + ); + + $serializer = new RGXML($options); + $xml = $serializer->serialize("forms", $forms); + + if ( !seems_utf8( $xml ) ) + $value = utf8_encode( $xml ); + + $filename = "gravityforms-export-" . date("Y-m-d") . ".xml"; + header('Content-Description: File Transfer'); + header("Content-Disposition: attachment; filename=$filename"); + header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true); + echo $xml; + die(); + } + } + + public static function export_page(){ + if(!GFCommon::ensure_wp_version()) + return; + + echo GFCommon::get_remote_message(); + + $view = RGForms::get("view"); + switch($view){ + case "import_form" : + self::import_form_page(); + break; + + case "export_form" : + self::export_form_page(); + break; + + default: + self::export_lead_page(); + break; + } + + + } + + public static function export_links(){ + $view = RGForms::get("view"); + + ?> + +
          +
          + array("unserialize_as_array" => true), + "form"=> array("unserialize_as_array" => true), + "field"=> array("unserialize_as_array" => true), + "rule"=> array("unserialize_as_array" => true), + "choice"=> array("unserialize_as_array" => true), + "input"=> array("unserialize_as_array" => true), + "routing_item"=> array("unserialize_as_array" => true), + "creditCard"=> array("unserialize_as_array" => true), + "routin"=> array("unserialize_as_array" => true) //routin is for backwards compatibility + ); + $xml = new RGXML($options); + $forms = $xml->unserialize($xmlstr); + + if(!$forms) + return 0; //Error. could not unserialize XML file + else if(version_compare($forms["version"], self::$min_import_version, "<")) + return -1; //Error. XML version is not compatible with current Gravity Forms version + + //cleaning up generated object + self::cleanup($forms); + + foreach($forms as $key => $form){ + $title = $form["title"]; + $count = 2; + while(!RGFormsModel::is_unique_title($title)){ + $title = $form["title"] . "($count)"; + $count++; + } + + //inserting form + $form_id = RGFormsModel::insert_form($title); + + //updating form meta + $form["title"] = $title; + $form["id"] = $form_id; + RGFormsModel::update_form_meta($form_id, $form); + } + return sizeof($forms); + + } + + public static function import_form_page(){ + if(isset($_POST["import_forms"])){ + check_admin_referer("gf_import_forms", "gf_import_forms_nonce"); + + if(!empty($_FILES["gf_import_file"]["tmp_name"])){ + + $count = self::import_file($_FILES["gf_import_file"]["tmp_name"]); + + if($count == 0 ){ + ?> +
          + +
          + 1 ? __("forms", "gravityforms") : __("form", "gravityforms"); + ?> +
          + + +
          +

          +

          + +

          +
          + + + + +
          + + + + + + + +
          +

          + " name="import_forms" class="button-primary" /> + +
          +
          + + +
          +

          +

          + + +

          +
          +
          + + + + + + +
          +
            + +
          • + + +
          • + +
          +
          + +

          + " name="export_forms" class="button-primary" /> +
          +
          + + + + + +
          + +

          + +

          + + +

          +
          +
          + + + + + + + + + + + + + + + +
          + + + +
          +
            + +
          +
          +
          + 0){ + $sql = "SELECT d.field_number as field_id, ifnull(l.value, d.value) as value + FROM {$wpdb->prefix}rg_lead_detail d + LEFT OUTER JOIN {$wpdb->prefix}rg_lead_detail_long l ON d.id = l.lead_detail_id + WHERE d.form_id={$form["id"]} AND cast(d.field_number as decimal) IN ({$field_ids}) + LIMIT {$offset}, {$page_size}"; + + $results = $wpdb->get_results($sql, ARRAY_A); + + foreach($results as $result){ + $list = unserialize($result["value"]); + $current_row_count = isset($row_counts[$result["field_id"]]) ? intval($row_counts[$result["field_id"]]) : 0; + + if(is_array($list) && count($list) > $current_row_count ){ + $row_counts[$result["field_id"]] = count($list); + } + } + + $offset += $page_size; + $entry_count -= $page_size; + } + + return $row_counts; + } + + public static function start_export($form){ + + $form_id = $form["id"]; + $fields = $_POST["export_field"]; + $start_date = $_POST["export_date_start"]; + $end_date = $_POST["export_date_end"]; + + //adding default fields + array_push($form["fields"],array("id" => "created_by" , "label" => __("Created By (User Id)", "gravityforms"))); + array_push($form["fields"],array("id" => "id" , "label" => __("Entry Id", "gravityforms"))); + array_push($form["fields"],array("id" => "date_created" , "label" => __("Entry Date", "gravityforms"))); + array_push($form["fields"],array("id" => "source_url" , "label" => __("Source Url", "gravityforms"))); + array_push($form["fields"],array("id" => "transaction_id" , "label" => __("Transaction Id", "gravityforms"))); + array_push($form["fields"],array("id" => "payment_amount" , "label" => __("Payment Amount", "gravityforms"))); + array_push($form["fields"],array("id" => "payment_date" , "label" => __("Payment Date", "gravityforms"))); + array_push($form["fields"],array("id" => "payment_status" , "label" => __("Payment Status", "gravityforms"))); + array_push($form["fields"],array("id" => "post_id" , "label" => __("Post Id", "gravityforms"))); + array_push($form["fields"],array("id" => "user_agent" , "label" => __("User Agent", "gravityforms"))); + array_push($form["fields"],array("id" => "ip" , "label" => __("User IP", "gravityforms"))); + + $entry_count = RGFormsModel::get_lead_count($form_id, "", null, null, $start_date, $end_date); + + $page_size = 200; + $offset = 0; + + //Adding BOM marker for UTF-8 + $lines = chr(239) . chr(187) . chr(191); + + // set the separater + $separator = apply_filters('gform_export_separator_' . $form_id, apply_filters('gform_export_separator', ',', $form_id), $form_id); + + $field_rows = self::get_field_row_count($form, $fields, $entry_count); + + //writing header + foreach($fields as $field_id){ + $field = RGFormsModel::get_field($form, $field_id); + $value = str_replace('"', '""', GFCommon::get_label($field, $field_id)) ; + + $subrow_count = isset($field_rows[$field_id]) ? intval($field_rows[$field_id]) : 0; + if($subrow_count == 0){ + $lines .= '"' . $value . '"' . $separator; + } + else{ + for($i = 1; $i <= $subrow_count; $i++){ + $lines .= '"' . $value . " " . $i . '"' . $separator; + } + } + } + $lines = substr($lines, 0, strlen($lines)-1) . "\n"; + + //paging through results for memory issues + while($entry_count > 0){ + $leads = RGFormsModel::get_leads($form_id,"date_created", "DESC", "", $offset, $page_size, null, null, false, $start_date, $end_date); + + foreach($leads as $lead){ + foreach($fields as $field_id){ + switch($field_id){ + case "date_created" : + $lead_gmt_time = mysql2date("G", $lead["date_created"]); + $lead_local_time = GFCommon::get_local_timestamp($lead_gmt_time); + $value = date_i18n("Y-m-d H:i:s", $lead_local_time); + break; + + default : + $long_text = ""; + if(strlen($lead[$field_id]) >= (GFORMS_MAX_FIELD_LENGTH-10)){ + $long_text = RGFormsModel::get_field_value_long($lead, $field_id, $form); + } + + $value = !empty($long_text) ? $long_text : $lead[$field_id]; + + break; + } + + if(isset($field_rows[$field_id])){ + $list = empty($value) ? array() : unserialize($value); + + foreach($list as $row){ + $row_values = array_values($row); + $row_str = implode("|", $row_values); + $lines .= '"' . str_replace('"', '""', $row_str) . '"' . $separator; + } + + //filling missing subrow columns (if any) + $missing_count = intval($field_rows[$field_id]) - count($list); + for($i=0; $i<$missing_count; $i++) + $lines .= '""' . $separator; + + } + else{ + $value = maybe_unserialize($value); + if(is_array($value)) + $value = implode("|", $value); + + $lines .= '"' . str_replace('"', '""', $value) . '"' . $separator; + } + } + $lines = substr($lines, 0, strlen($lines)-1); + $lines.= "\n"; + } + + $offset += $page_size; + $entry_count -= $page_size; + + if ( !seems_utf8( $lines ) ) + $lines = utf8_encode( $lines ); + + echo $lines; + $lines = ""; + } + } + + private function cleanup(&$forms){ + unset($forms["version"]); + + //adding checkboxes "inputs" property based on "choices". (they were removed from the export + //to provide a cleaner xml format + foreach($forms as &$form){ + if(!is_array($form["fields"])) + continue; + + foreach($form["fields"] as &$field){ + $input_type = RGFormsModel::get_input_type($field); + + if(in_array($input_type, array("checkbox", "radio", "select", "multiselect"))){ + + //creating inputs array for checkboxes + if($input_type == "checkbox" && !isset($field["inputs"])) + $field["inputs"] = array(); + + for($i=1, $count = sizeof($field["choices"]); $i<=$count; $i++){ + if(!RGForms::get("enableChoiceValue", $field)) + $field["choices"][$i-1]["value"] = $field["choices"][$i-1]["text"]; + + if($input_type == "checkbox") + $field["inputs"][] = array("id" => $field["id"] . "." . $i, "label" => $field["choices"][$i-1]["text"]); + } + + } + } + } + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/form_detail.php b/wp-content/plugins/gravityforms/form_detail.php new file mode 100644 index 0000000..8e4a34d --- /dev/null +++ b/wp-content/plugins/gravityforms/form_detail.php @@ -0,0 +1,2639 @@ + + + + + + + + + + + + + + + + + + + + + + + array()); + + $form = apply_filters("gform_admin_pre_render_" . $form_id, apply_filters("gform_admin_pre_render", $form)); + + if(isset($form['id'])) + echo ""; + else + echo ""; + + ?> + + +
          + + +

          + + +

          + + + + +
          + + ', '') ?> +
          + +
          + +
          + +
          + +
          + + + + + + + +
          + +
          +
          + + + +
          +
          +
          + "> +
          + + +
          +

          +   + + +
          + +
          ;"> +
          + "> +
          + " alt="" title="" /> + +
          + +
            " style="position: relative;"> + +
          + +
          ;"> +
          + "> +
          + " alt="" title="" /> + +
          + + + +
          +
          +
          + + + +
          + + + ' . __("Delete Form", "gravityforms") . ''; + echo apply_filters("gform_form_delete_link", $delete_link); + } + + $button_text = rgar($form,"id") > 0 ? __("Update Form", "gravityforms") : __("Save Form", "gravityforms"); + $isNew = rgar($form, "id") > 0 ? 0 : 1; + $save_button = ''; + $save_button = apply_filters("gform_save_form_button", $save_button); + echo $save_button; + ?> + + + + + + +
          + + +
          + +
          +
          +
          +
          + + + + + + + + +
          + + "; + } + } + + //Hierarchical category functions copied from WordPress core and modified. + private static function _cat_rows( $categories, &$count, &$output, $parent = 0, $level = 0, $page = 1, $per_page = 9999999 ) { + if ( empty($categories) ) { + $args = array('hide_empty' => 0); + if ( !empty($_POST['search']) ) + $args['search'] = $_POST['search']; + $categories = get_categories( $args ); + } + + if ( !$categories ) + return false; + + $children = self::_get_term_hierarchy('category'); + + $start = ($page - 1) * $per_page; + $end = $start + $per_page; + $i = -1; + foreach ( $categories as $category ) { + if ( $count >= $end ) + break; + + $i++; + + if ( $category->parent != $parent ) + continue; + + // If the page starts in a subtree, print the parents. + if ( $count == $start && $category->parent > 0 ) { + $my_parents = array(); + while ( $my_parent) { + $my_parent = get_category($my_parent); + $my_parents[] = $my_parent; + if ( !$my_parent->parent ) + break; + $my_parent = $my_parent->parent; + } + $num_parents = count($my_parents); + while( $my_parent = array_pop($my_parents) ) { + self::_cat_row( $my_parent, $level - $num_parents, $output ); + $num_parents--; + } + } + + if ( $count >= $start ) + self::_cat_row( $category, $level, $output ); + + //unset($categories[$i]); // Prune the working set + $count++; + + if ( isset($children[$category->term_id]) ) + self::_cat_rows( $categories, $count, $output, $category->term_id, $level + 1, $page, $per_page ); + + } +} + private static function _cat_row( $category, $level, &$output, $name_override = false ) { + static $row_class = ''; + + $cat = get_category( $category, OBJECT, 'display' ); + + $default_cat_id = (int) get_option( 'default_category' ); + $pad = str_repeat( '— ', $level ); + $name = ( $name_override ? $name_override : $pad . ' ' . $cat->name ); + + $cat->count = number_format_i18n( $cat->count ); + + $output .=" + + + $name + "; + } + private static function _get_term_hierarchy($taxonomy) { + if ( !is_taxonomy_hierarchical($taxonomy) ) + return array(); + $children = get_option("{$taxonomy}_children"); + if ( is_array($children) ) + return $children; + + $children = array(); + $terms = get_terms($taxonomy, 'get=all'); + foreach ( $terms as $term ) { + if ( $term->parent > 0 ) + $children[$term->parent][] = $term->term_id; + } + update_option("{$taxonomy}_children", $children); + + return $children; + } + + private static function insert_variable_prepopulate($element_id, $callback=""){ + ?> + "; + } + else{ + $imageUrl = $button["imageUrl"]; + $button_input= ""; + } + return $button_input; + } + + private static function gform_footer($form, $class, $ajax, $field_values, $previous_button, $display_title, $display_description){ + $form_id = $form["id"]; + $footer = " +
          "; + $button_input = self::get_form_button($form["id"], "gform_submit_button_{$form["id"]}", $form["button"], __("Submit", "gravityforms"), "button gform_button", __("Submit", "gravityforms"), 0); + $button_input = apply_filters("gform_submit_button", $button_input, $form); + $button_input = apply_filters("gform_submit_button_{$form_id}", $button_input, $form); + $footer .= $previous_button . " " . $button_input; + + if($ajax){ + $footer .= ""; + } + + $current_page = self::get_current_page($form_id); + $next_page = $current_page + 1; + $next_page = $next_page > self::get_max_page_number($form) ? 0 : $next_page; + $field_values_str = is_array($field_values) ? http_build_query($field_values) : ""; + $files_input = ""; + if(!empty(RGFormsModel::$uploaded_files[$form_id])){ + $files = GFCommon::json_encode(RGFormsModel::$uploaded_files[$form_id]); + $files_input = ""; + } + + $footer .=" + + + + + + + + {$files_input} +
          "; + + return $footer; + } + + private static function get_max_page_number($form){ + $page_number = 0; + foreach($form["fields"] as $field){ + if($field["type"] == "page"){ + $page_number++; + } + } + return $page_number == 0 ? 0 : $page_number + 1; + } + + + private static function get_honeypot_field($form){ + $max_id = self::get_max_field_id($form); + $labels = self::get_honeypot_labels(); + return array("type" => "honeypot", "label" => $labels[rand(0, 3)], "id" => $max_id + 1, "cssClass" => "gform_validation_container", "description" => "This field is for validation purposes and should be left unchanged."); + } + + private static function get_max_field_id($form){ + $max = 0; + foreach($form["fields"] as $field){ + if(floatval($field["id"]) > $max) + $max = floatval($field["id"]); + } + return $max; + } + + private static function get_honeypot_labels(){ + return array("Name", "Email", "Phone", "Comments"); + } + + public static function is_empty($field, $form_id=0){ + switch(RGFormsModel::get_input_type($field)){ + case "post_image" : + case "fileupload" : + $input_name = "input_" . $field["id"]; + + $file_info = RGFormsModel::get_temp_filename($form_id, $input_name); + return !$file_info && empty($_FILES[$input_name]['name']); + + case "list" : + $value = rgpost("input_" . $field["id"]); + if(is_array($value)){ + //empty if all inputs are empty (for inputs with the same name) + foreach($value as $input){ + if(strlen(trim($input)) > 0 ) + return false; + } + } + + return true; + case 'singleproduct': + $quantity_id = $field["id"] . ".3"; + $quantity = rgpost($quantity_id, $value); + + } + + if(is_array($field["inputs"])) + { + foreach($field["inputs"] as $input){ + $value = rgpost("input_" . str_replace('.', '_', $input["id"])); + if(is_array($value) && !empty($value)){ + return false; + } + + $strlen = strlen(trim($value)); + if(!is_array($value) && strlen(trim($value)) > 0) + return false; + } + return true; + } + else{ + $value = rgpost("input_" . $field["id"]); + if(is_array($value)){ + //empty if any of the inputs are empty (for inputs with the same name) + foreach($value as $input){ + if(strlen(trim($input)) <= 0 ) + return true; + } + return false; + } + else if($field["enablePrice"]){ + list($label, $price) = explode("|", $value); + $is_empty = (strlen(trim($price)) <= 0); + return $is_empty; + } + else{ + $is_empty = (strlen(trim($value)) <= 0) || ($field["type"] == "post_category" && $value < 0); + return $is_empty; + } + } + } + + private static function clean_extensions($extensions){ + $count = sizeof($extensions); + for($i=0; $i<$count; $i++){ + $extensions[$i] = str_replace(".", "",str_replace(" ", "", $extensions[$i])); + } + return $extensions; + } + + private static function validate_range($field, $value){ + + if( !GFCommon::is_numeric($value, rgar($field, "numberFormat")) ) + return false; + + $number = GFCommon::clean_number($value, rgar($field, "numberFormat")); + if( (is_numeric($field["rangeMin"]) && $number < $field["rangeMin"]) || + (is_numeric($field["rangeMax"]) && $number > $field["rangeMax"]) + ) + return false; + else + return true; + } + + private static function validate_honeypot($form){ + $honeypot_id = self::get_max_field_id($form); + return rgempty("input_{$honeypot_id}"); + } + + public static function handle_submission($form, &$lead, $ajax=false){ + + //creating entry in DB + RGFormsModel::save_lead($form, $lead); + + //reading entry that was just saved + $lead = RGFormsModel::get_lead($lead["id"]); + + do_action('gform_entry_created', $lead, $form); + + //if Akismet plugin is installed, run lead through Akismet and mark it as Spam when appropriate + $is_spam = false; + if(GFCommon::akismet_enabled($form['id']) && GFCommon::is_akismet_spam($form, $lead)){ + $is_spam = true; + } + + if(!$is_spam){ + GFCommon::create_post($form, $lead); + //send auto-responder and notification emails + self::send_emails($form, $lead); + } + else{ + //marking entry as spam + RGFormsModel::update_lead_property($lead["id"], "status", "spam", false, true); + $lead["status"] = "spam"; + } + + //display confirmation message or redirect to confirmation page + return self::handle_confirmation($form, $lead, $ajax); + } + + public static function handle_confirmation($form, $lead, $ajax=false){ + + if($form["confirmation"]["type"] == "message"){ + $default_anchor = self::has_pages($form) ? 1 : 0; + $anchor = apply_filters("gform_confirmation_anchor_{$form["id"]}", apply_filters("gform_confirmation_anchor", $default_anchor)) ? "" : ""; + $nl2br = rgar($form["confirmation"],"disableAutoformat") ? false : true; + $confirmation = empty($form["confirmation"]["message"]) ? "{$anchor} " : "{$anchor}
          " . GFCommon::replace_variables($form["confirmation"]["message"], $form, $lead, false, true, $nl2br) . "
          "; + } + else{ + if(!empty($form["confirmation"]["pageId"])){ + $url = get_permalink($form["confirmation"]["pageId"]); + } + else{ + $url = GFCommon::replace_variables(trim($form["confirmation"]["url"]), $form, $lead, false, true); + $url_info = parse_url($url); + $query_string = $url_info["query"]; + $dynamic_query = GFCommon::replace_variables(trim($form["confirmation"]["queryString"]), $form, $lead, true); + $query_string .= empty($url_info["query"]) || empty($dynamic_query) ? $dynamic_query : "&" . $dynamic_query; + + if(!empty($url_info["fragment"])) + $query_string .= "#" . $url_info["fragment"]; + + $url = $url_info["scheme"] . "://" . $url_info["host"]; + if(!empty($url_info["port"])) + $url .= ":{$url_info["port"]}"; + + $url .= rgar($url_info,"path"); + if(!empty($query_string)){ + $url .= "?{$query_string}"; + } + + } + + if(headers_sent() || $ajax){ + //Perform client side redirect for AJAX forms, of if headers have already been sent + $confirmation = self::get_js_redirect_confirmation($url, $ajax); + } + else{ + $confirmation = array("redirect" => $url); + } + } + + $confirmation = apply_filters("gform_confirmation_{$form["id"]}", apply_filters("gform_confirmation", $confirmation, $form, $lead, $ajax), $form, $lead, $ajax); + + if(!is_array($confirmation)){ + $confirmation = GFCommon::gform_do_shortcode($confirmation); //enabling shortcodes + } + else if(headers_sent() || $ajax){ + //Perform client side redirect for AJAX forms, of if headers have already been sent + $confirmation = self::get_js_redirect_confirmation($confirmation["redirect"], $ajax); //redirecting via client side + } + + return $confirmation; + } + + private static function get_js_redirect_confirmation($url, $ajax){ + $confirmation = ""; + + return $confirmation; + } + + public static function send_emails($form, $lead){ + $disable_user_notification = apply_filters("gform_disable_user_notification_{$form["id"]}", apply_filters("gform_disable_user_notification", false, $form, $lead), $form, $lead); + if(!$disable_user_notification){ + GFCommon::send_user_notification($form, $lead); + } + + $disable_admin_notification = apply_filters("gform_disable_admin_notification_{$form["id"]}", apply_filters("gform_disable_admin_notification", false, $form, $lead), $form, $lead); + if(!$disable_admin_notification){ + GFCommon::send_admin_notification($form, $lead); + } + } + + public static function checkdate($month, $day, $year){ + if(empty($month) || !is_numeric($month) || empty($day) || !is_numeric($day) || empty($year) || !is_numeric($year) || strlen($year) != 4) + return false; + + return checkdate($month, $day, $year); + } + + public static function validate(&$form, $field_values, $page_number=0){ + + // validate form schedule + if(self::validate_form_schedule($form)) + return false; + + // validate entry limit + if(self::validate_entry_limit($form)) + return false; + + foreach($form["fields"] as &$field){ + + //If a page number is specified, only validates fields that are on current page + if($page_number > 0 && $field["pageNumber"] != $page_number) + continue; + + //ignore validation if field is hidden or admin only + if(RGFormsModel::is_field_hidden($form, $field, $field_values) || $field["adminOnly"]) + continue; + + $value = RGFormsModel::get_field_value($field); + + //display error message if field is marked as required and the submitted value is empty + if($field["isRequired"] && self::is_empty($field, $form["id"])){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("This field is required.", "gravityforms") : $field["errorMessage"]; + } + //display error if field does not allow duplicates and the submitted value already exists + else if($field["noDuplicates"] && RGFormsModel::is_duplicate($form["id"], $field, $value)){ + $field["failed_validation"] = true; + + $input_type = RGFormsModel::get_input_type($field); + switch($input_type){ + case "date" : + $default_message = __("This date has already been taken. Please select a new date.", "gravityforms"); + break; + + default: + $default_message = is_array($value) ? __("This field requires an unique entry and the values you entered have been already been used.", "gravityforms") : + sprintf(__("This field requires an unique entry and '%s' has already been used", "gravityforms"), $value); + break; + } + + $field["validation_message"] = apply_filters("gform_duplicate_message_{$form["id"]}", apply_filters("gform_duplicate_message", $default_message, $form), $form); + + } + else{ + if(self::failed_state_validation($form["id"], $field, $value)){ + $field["failed_validation"] = true; + $field["validation_message"] = in_array($field["inputType"], array("singleproduct", "singleshipping", "hiddenproduct")) ? __("Please enter a valid value.", "gravityforms") : __("Invalid selection. Please select one of the available choices.", "gravityforms"); + } + else{ + switch(RGFormsModel::get_input_type($field)){ + case "password" : + $password = $_POST["input_" . $field["id"]]; + $confirm = $_POST["input_" . $field["id"] . "_2"]; + if($password != $confirm){ + $field["failed_validation"] = true; + $field["validation_message"] = __("Your passwords do not match.", "gravityforms"); + } + else if(rgar($field,"passwordStrengthEnabled") && !rgempty("minPasswordStrength",$field) && !empty($password)){ + $strength = $_POST["input_" . $field["id"] . "_strength"]; + + $levels = array("short" => 1, "bad" => 2, "good" => 3, "strong" => 4); + if($levels[$strength] < $levels[$field["minPasswordStrength"]]){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("Your password does not meet the required strength.
          Hint: To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ & ).", "gravityforms") : $field["errorMessage"]; + } + } + break; + + case "name" : + if($field["isRequired"] && $field["nameFormat"] != "simple") + { + $first = $_POST["input_" . $field["id"] . "_3"]; + $last = $_POST["input_" . $field["id"] . "_6"]; + if(empty($first) || empty($last)){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("This field is required. Please enter the first and last name.", "gravityforms") : $field["errorMessage"]; + } + } + + break; + + case "address" : + if($field["isRequired"]) + { + $street = $_POST["input_" . $field["id"] . "_1"]; + $city = $_POST["input_" . $field["id"] . "_3"]; + $state = $_POST["input_" . $field["id"] . "_4"]; + $zip = $_POST["input_" . $field["id"] . "_5"]; + $country = $_POST["input_" . $field["id"] . "_6"]; + if(empty($street) || empty($city) || empty($zip) || (empty($state) && !$field["hideState"] ) || (empty($country) && !$field["hideCountry"])){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("This field is required. Please enter a complete address.", "gravityforms") : $field["errorMessage"]; + } + } + + break; + + case "creditcard" : + $card_number = rgpost("input_" . $field["id"] . "_1"); + $expiration_date = rgpost("input_" . $field["id"] . "_2"); + $security_code = rgpost("input_" . $field["id"] . "_3"); + + if(rgar($field, "isRequired") && (empty($card_number) || empty($security_code) || empty($expiration_date[0]) || empty($expiration_date[1]))){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("Please enter your credit card information.", "gravityforms") : $field["errorMessage"]; + } + else if(!empty($card_number)){ + $card_type = GFCommon::get_card_type($card_number); + $security_code = rgpost("input_" . $field["id"] . "_3"); + + if(empty($security_code)){ + $field["failed_validation"] = true; + $field["validation_message"] = __("Please enter your card's security code.", "gravityforms"); + } + else if(!$card_type){ + $field["failed_validation"] = true; + $field["validation_message"] = __("Invalid credit card number.", "gravityforms"); + } + else if(!GFCommon::is_card_supported($field, $card_type["slug"])){ + $field["failed_validation"] = true; + $field["validation_message"] = $card_type["name"] . " " . __("is not supported. Please enter one of the supported credit cards.", "gravityforms"); + } + } + break; + + case "email" : + if(!rgblank($value) && !GFCommon::is_valid_email($value)){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("Please enter a valid email address.", "gravityforms"): $field["errorMessage"]; + } + else if(rgget("emailConfirmEnabled", $field) && !empty($value)){ + $confirm = rgpost("input_" . $field["id"] . "_2"); + if($confirm != $value){ + $field["failed_validation"] = true; + $field["validation_message"] = __("Your emails do not match.", "gravityforms"); + } + } + break; + + case "donation" : + case "price" : + + if(!class_exists("RGCurrency")) + require_once("currency.php"); + + $donation = GFCommon::to_number($value); + if(!rgblank($value) && ($donation === false || $donation < 0)){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("Please enter a valid amount.", "gravityforms") : $field["errorMessage"]; + + } + break; + + case "number" : + + if(!rgblank($value) && !self::validate_range($field, $value) && !GFCommon::has_field_calculation($field)) { + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? GFCommon::get_range_message($field) : $field["errorMessage"]; + } + else if($field["type"] == "quantity" && intval($value) != $value){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("Please enter a valid quantity. Quantity cannot contain decimals.", "gravityforms") : $field["errorMessage"]; + } + + break; + + case "phone" : + + $regex = '/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/'; + if($field["phoneFormat"] == "standard" && !empty($value) && !preg_match($regex, $value)){ + $field["failed_validation"] = true; + if(!empty($field["errorMessage"])) + $field["validation_message"] = $field["errorMessage"]; + } + break; + + case "date" : + if(is_array($value) && rgempty(0, $value) && rgempty(1, $value)&& rgempty(2, $value)) + $value = null; + + if(!empty($value)){ + $format = empty($field["dateFormat"]) ? "mdy" : $field["dateFormat"]; + $date = GFCommon::parse_date($value, $format); + + if(empty($date) || !self::checkdate($date["month"], $date["day"], $date["year"])){ + $field["failed_validation"] = true; + $format_name = ""; + switch($format){ + case "mdy" : + $format_name = "mm/dd/yyyy"; + break; + case "dmy" : + $format_name = "dd/mm/yyyy"; + break; + case "dmy_dash" : + $format_name = "dd-mm-yyyy"; + break; + case "dmy_dot" : + $format_name = "dd.mm.yyyy"; + break; + case "ymd_slash" : + $format_name = "yyyy/mm/dd"; + break; + case "ymd_dash" : + $format_name = "yyyy-mm-dd"; + break; + case "ymd_dot" : + $format_name = "yyyy.mm.dd"; + break; + } + $message = $field["dateType"] == "datepicker" ? sprintf(__("Please enter a valid date in the format (%s).", "gravityforms"), $format_name) : __("Please enter a valid date.", "gravityforms"); + $field["validation_message"] = empty($field["errorMessage"]) ? $message : $field["errorMessage"]; + } + } + break; + + case "time" : + + //create variable values if time came in one field + if(!is_array($value) && !empty($value)){ + preg_match('/^(\d*):(\d*) ?(.*)$/', $value, $matches); + $value = array(); + $value[0] = $matches[1]; + $value[1] = $matches[2]; + } + + $hour = $value[0]; + $minute = $value[1]; + + if(empty($hour) && empty($minute)) + break; + + $is_valid_format = is_numeric($hour) && is_numeric($minute); + + $min_hour = rgar($field, "timeFormat") == "24" ? 0 : 1; + $max_hour = rgar($field, "timeFormat") == "24" ? 23 : 12; + + if(!$is_valid_format || $hour < $min_hour || $hour > $max_hour || $minute < 0 || $minute >= 60) + { + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("Please enter a valid time." , "gravityforms"): $field["errorMessage"]; + } + break; + + case "website" : + if(empty($value) || $value == "http://"){ + $value = ""; + if($field["isRequired"]){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("This field is required.", "gravityforms") : $field["errorMessage"]; + } + } + + if(!empty($value) && !GFCommon::is_valid_url($value)){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("Please enter a valid Website URL (i.e. http://www.gravityforms.com).", "gravityforms") : $field["errorMessage"]; + } + break; + + case "captcha" : + switch($field["captchaType"]){ + case "simple_captcha" : + if(class_exists("ReallySimpleCaptcha")){ + $prefix = $_POST["input_captcha_prefix_{$field["id"]}"]; + $captcha_obj = GFCommon::get_simple_captcha(); + + if(!$captcha_obj->check($prefix, str_replace(" ", "", $value))){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("The CAPTCHA wasn't entered correctly. Go back and try it again.", "gravityforms") : $field["errorMessage"]; + } + + //removes old files in captcha folder (older than 1 hour); + $captcha_obj->cleanup(); + } + break; + + case "math" : + $prefixes = explode(",", $_POST["input_captcha_prefix_{$field["id"]}"]); + $captcha_obj = GFCommon::get_simple_captcha(); + + //finding first number + $first = 0; + for($first=0; $first<10; $first++){ + if($captcha_obj->check($prefixes[0], $first)) + break; + } + + //finding second number + $second = 0; + for($second=0; $second<10; $second++){ + if($captcha_obj->check($prefixes[2], $second)) + break; + } + + //if it is a +, perform the sum + if($captcha_obj->check($prefixes[1], "+")) + $result = $first + $second; + else + $result = $first - $second; + + + if(intval($result) != intval($value)){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("The CAPTCHA wasn't entered correctly. Go back and try it again.", "gravityforms") : $field["errorMessage"]; + } + + //removes old files in captcha folder (older than 1 hour); + $captcha_obj->cleanup(); + + break; + + default : + if(!function_exists("recaptcha_get_html")){ + require_once(GFCommon::get_base_path() . '/recaptchalib.php'); + } + + $privatekey = get_option("rg_gforms_captcha_private_key"); + $resp = recaptcha_check_answer ($privatekey, + $_SERVER["REMOTE_ADDR"], + $_POST["recaptcha_challenge_field"], + $_POST["recaptcha_response_field"]); + + if (!$resp->is_valid) { + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("The reCAPTCHA wasn't entered correctly. Go back and try it again.", "gravityforms") : $field["errorMessage"]; + } + } + break; + + case "fileupload" : + case "post_image" : + $info = pathinfo($_FILES["input_" . $field["id"]]["name"]); + $allowedExtensions = self::clean_extensions(explode(",", strtolower($field["allowedExtensions"]))); + $extension = strtolower(rgget("extension",$info)); + + if(empty($field["allowedExtensions"]) && in_array($extension, array("php", "asp", "exe", "com", "htaccess"))){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("The uploaded file type is not allowed.", "gravityforms") : $field["errorMessage"]; + } + else if(!empty($field["allowedExtensions"]) && !empty($info["basename"]) && !in_array($extension, $allowedExtensions)){ + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? sprintf(__("The uploaded file type is not allowed. Must be one of the following: %s", "gravityforms"), strtolower($field["allowedExtensions"]) ) : $field["errorMessage"]; + } + break; + + case "calculation" : + case "singleproduct" : + case "hiddenproduct" : + $quantity_id = $field["id"] . ".3"; + $quantity = rgget($quantity_id, $value); + + if($field["isRequired"] && rgblank($quantity) && !rgar($field, "disableQuantity") ){ + $field["failed_validation"] = true; + $field["validation_message"] = rgempty("errorMessage", $field) ? __("This field is required.", "gravityforms") : rgar($field, "errorMessage"); + } + else if(!empty($quantity) && (!is_numeric($quantity) || intval($quantity) != floatval($quantity)) ) { + $field["failed_validation"] = true; + $field["validation_message"] = __("Please enter a valid quantity", "gravityforms"); + } + + break; + + case "radio" : + + if(rgar($field, 'enableOtherChoice') && $value == 'gf_other_choice') + $value = rgpost("input_{$field['id']}_other"); + + if($field["isRequired"] && rgar($field, 'enableOtherChoice') && $value == GFCommon::get_other_choice_value()) { + $field["failed_validation"] = true; + $field["validation_message"] = empty($field["errorMessage"]) ? __("This field is required.", "gravityforms") : $field["errorMessage"]; + } + + break; + } + } + } + + $custom_validation_result = apply_filters("gform_field_validation", array("is_valid"=> rgar($field, "failed_validation") ? false : true, "message"=>rgar($field, "validation_message")), $value, $form, $field); + $custom_validation_result = apply_filters("gform_field_validation_{$form["id"]}", $custom_validation_result, $value, $form, $field); + $custom_validation_result = apply_filters("gform_field_validation_{$form["id"]}_{$field["id"]}", $custom_validation_result, $value, $form, $field); + + $field["failed_validation"] = rgar($custom_validation_result, "is_valid") ? false : true; + $field["validation_message"] = rgar($custom_validation_result, "message"); + } + + $is_valid = true; + foreach($form["fields"] as $f){ + if(rgar($f,"failed_validation")){ + $is_valid = false; + break; + } + } + + $validation_result = apply_filters("gform_validation_{$form["id"]}", apply_filters("gform_validation", array("is_valid" => $is_valid, "form" => $form)) ); + $is_valid = $validation_result["is_valid"]; + $form = $validation_result["form"]; + + return $is_valid; + } + + public static function failed_state_validation($form_id, $field, $value){ + + global $_gf_state; + + //if field can be populated dynamically, disable state validation + if(rgar($field,"allowsPrepopulate")) { + return false; + } else if(!GFCommon::is_product_field($field["type"] && $field["type"] != "donation")) { + return false; + } else if (!in_array($field["inputType"], array("singleshipping", "singleproduct", "hiddenproduct", "checkbox", "radio", "select"))) { + return false; + } + + if(!isset($_gf_state)){ + $state = unserialize(base64_decode($_POST["state_{$form_id}"])); + + if(!$state || sizeof($state) != 2) + return true; + + //making sure state wasn't tampered with by validating checksum + $checksum = wp_hash(crc32($state[0])); + + if($checksum != $state[1]){ + return true; + } + + $_gf_state = unserialize($state[0]); + } + + if(!is_array($value)){ + $value = array($field["id"] => $value); + } + + foreach($value as $key => $input_value){ + $state = isset($_gf_state[$key]) ? $_gf_state[$key] : false; + + //converting price to a number for single product fields and single shipping fields + if( (in_array($field["inputType"], array("singleproduct", "hiddenproduct")) && $key == $field["id"] . ".2") || $field["inputType"] == "singleshipping") + $input_value = GFCommon::to_number($input_value); + + $hash = wp_hash($input_value); + + if(strlen($input_value) > 0 && $state !== false && ((is_array($state) && !in_array($hash, $state)) || (!is_array($state) && $hash != $state)) ){ + return true; + } + } + return false; + } + + public static function enqueue_scripts(){ + global $wp_query; + if(isset($wp_query->posts) && is_array($wp_query->posts)){ + foreach($wp_query->posts as $post){ + $forms = self::get_embedded_forms($post->post_content, $ajax); + foreach($forms as $form){ + self::enqueue_form_scripts($form, $ajax); + } + } + } + } + + public static function get_embedded_forms($post_content, &$ajax){ + $forms = array(); + if(preg_match_all('/\[gravityform +.*?((id=.+?)|(name=.+?))\]/is', $post_content, $matches, PREG_SET_ORDER)){ + $ajax = false; + foreach($matches as $match){ + //parsing shortcode attributes + $attr = shortcode_parse_atts($match[1]); + $form_id = $attr["id"]; + if(!is_numeric($form_id)) + $form_id = RGFormsModel::get_form_id($attr["name"]); + + $forms[] = RGFormsModel::get_form_meta($form_id); + $ajax = isset($attr["ajax"]) && strtolower(substr($attr["ajax"],0, 4)) == "true"; + } + } + return $forms; + } + + public static function enqueue_form_scripts($form, $ajax=false){ + if(!get_option('rg_gforms_disable_css')){ + wp_enqueue_style("gforms_css", GFCommon::get_base_url() . "/css/forms.css", null, GFCommon::$version); + } + + if(self::has_price_field($form) || self::has_password_strength($form) || GFCommon::has_list_field($form) || GFCommon::has_credit_card_field($form) || self::has_conditional_logic($form)){ + wp_enqueue_script("gforms_gravityforms", GFCommon::get_base_url() . "/js/gravityforms.js", array("jquery"), GFCommon::$version, false); + } + + if(self::has_conditional_logic($form)){ + wp_enqueue_script("gforms_conditional_logic_lib", GFCommon::get_base_url() . "/js/conditional_logic.js", array("jquery", "gforms_gravityforms"), GFCommon::$version); + } + + if(self::has_date_field($form)){ + wp_enqueue_script("gforms_ui_datepicker", GFCommon::get_base_url() . "/js/jquery-ui/ui.datepicker.js", array("jquery"), GFCommon::$version, true); + wp_enqueue_script("gforms_datepicker", GFCommon::get_base_url() . "/js/datepicker.js", array("gforms_ui_datepicker"), GFCommon::$version, true); + } + + if(self::has_price_field($form) || self::has_password_strength($form) || GFCommon::has_list_field($form) || GFCommon::has_credit_card_field($form) || self::has_calculation_field($form)){ + wp_enqueue_script("gforms_gravityforms", GFCommon::get_base_url() . "/js/gravityforms.js", array("jquery"), GFCommon::$version, false); + } + + if(self::has_enhanced_dropdown($form) || self::has_pages($form) || self::has_fileupload_field($form)){ + wp_enqueue_script("gforms_json", GFCommon::get_base_url() . "/js/jquery.json-1.3.js", array("jquery"), GFCommon::$version, true); + wp_enqueue_script("gforms_gravityforms", GFCommon::get_base_url() . "/js/gravityforms.js", array("gforms_json"), GFCommon::$version, false); + } + + if(self::has_character_counter($form)){ + wp_enqueue_script("gforms_character_counter", GFCommon::get_base_url() . "/js/jquery.textareaCounter.plugin.js", array("jquery"), GFCommon::$version, true); + } + + if(self::has_input_mask($form)){ + wp_enqueue_script("gforms_input_mask", GFCommon::get_base_url() . "/js/jquery.maskedinput-1.3.min.js", array("jquery"), GFCommon::$version, true); + } + + if(self::has_enhanced_dropdown($form)){ + wp_enqueue_script("gforms_chosen", GFCommon::get_base_url() . "/js/chosen.jquery.min.js", array("jquery"), GFCommon::$version, false); + } + + do_action("gform_enqueue_scripts", $form, $ajax); + do_action("gform_enqueue_scripts_{$form["id"]}", $form, $ajax); + + // enqueue jQuery every time form is displayed to allow "gform_post_render" js hook + // to be available to users even when GF is not using it + wp_enqueue_script("jquery"); + + } + + private static $printed_scripts = array(); + + public static function print_form_scripts($form, $ajax){ + + if(!get_option('rg_gforms_disable_css')){ + if(!wp_style_is("gforms_css", "queue")){ + wp_enqueue_style("gforms_css", GFCommon::get_base_url() . "/css/forms.css", GFCommon::$version); + wp_print_styles(array("gforms_css")); + } + } + + if( (self::has_enhanced_dropdown($form) || self::has_price_field($form) || self::has_password_strength($form) || self::has_pages($form) || self::has_password_strength($form) || GFCommon::has_list_field($form) || GFCommon::has_credit_card_field($form)) && !wp_script_is("gforms_gravityforms", "queue")){ + wp_enqueue_script("gforms_gravityforms", GFCommon::get_base_url() . "/js/gravityforms.js", array("jquery"), GFCommon::$version, false); + wp_print_scripts(array("gforms_gravityforms")); + } + + if(self::has_conditional_logic($form) && !wp_script_is("gforms_conditional_logic_lib", "queue")){ + wp_enqueue_script("gforms_conditional_logic_lib", GFCommon::get_base_url() . "/js/conditional_logic.js", array("jquery", "gforms_gravityforms"), GFCommon::$version); + wp_print_scripts(array("gforms_conditional_logic_lib")); + } + + if(self::has_date_field($form) && !wp_script_is("gforms_datepicker", "queue")){ + wp_enqueue_script("gforms_ui_datepicker", GFCommon::get_base_url() . "/js/jquery-ui/ui.datepicker.js", array("jquery"), GFCommon::$version, true); + wp_enqueue_script("gforms_datepicker", GFCommon::get_base_url() . "/js/datepicker.js", array("gforms_ui_datepicker"), GFCommon::$version, true); + wp_print_scripts(array("gforms_datepicker")); + } + + if(self::has_pages($form) && !wp_script_is("gforms_json", "queue")){ + wp_enqueue_script("gforms_json", GFCommon::get_base_url() . "/js/jquery.json-1.3.js", array("jquery"), GFCommon::$version, true); + wp_print_scripts(array("gforms_json")); + } + + if( (self::has_enhanced_dropdown($form) || self::has_price_field($form) || self::has_password_strength($form) || self::has_pages($form) || self::has_password_strength($form) || GFCommon::has_list_field($form) || GFCommon::has_credit_card_field($form)) || self::has_calculation_field($form) && !wp_script_is("gforms_gravityforms", "queue")){ + wp_enqueue_script("gforms_gravityforms", GFCommon::get_base_url() . "/js/gravityforms.js", array("jquery"), GFCommon::$version, false); + wp_print_scripts(array("gforms_gravityforms")); + } + + if(self::has_character_counter($form) && !wp_script_is("gforms_character_counter", "queue")){ + wp_enqueue_script("gforms_character_counter", GFCommon::get_base_url() . "/js/jquery.textareaCounter.plugin.js", array("jquery"), GFCommon::$version, true); + wp_print_scripts(array("gforms_character_counter")); + } + + if(self::has_input_mask($form) && !wp_script_is("gforms_input_mask", "queue")){ + wp_enqueue_script("gforms_input_mask", GFCommon::get_base_url() . "/js/jquery.maskedinput-1.3.min.js", array("jquery"), GFCommon::$version, true); + wp_print_scripts(array("gforms_input_mask")); + } + + if(self::has_enhanced_dropdown($form)&& !wp_script_is("gforms_chosen", "queue")){ + wp_enqueue_script("gforms_chosen", GFCommon::get_base_url() . "/js/chosen.jquery.min.js", array("jquery"), GFCommon::$version, false); + wp_print_scripts(array("gforms_chosen")); + } + + if(!wp_script_is("jquery", "queue")){ + wp_print_scripts(array("jquery")); + } + + if(wp_script_is("gforms_gravityforms")) { + require_once(GFCommon::get_base_path() . '/currency.php'); + echo ''; + } + + } + + private static function has_conditional_logic($form){ + if(empty($form)) + return false; + + if(isset($form["button"]["conditionalLogic"])) + return true; + + foreach($form["fields"] as $field){ + if(!empty($field["conditionalLogic"])){ + return true; + } + else if(isset($field["nextButton"]) && !empty($field["nextButton"]["conditionalLogic"])){ + return true; + } + } + return false; + } + + private static function get_conditional_logic($form, $field_values = array()){ + $logics = ""; + $dependents = ""; + $fields_with_logic = array(); + $default_values = array(); + + foreach($form["fields"] as $field){ + + //use section's logic if one exists + $section = RGFormsModel::get_section($form, $field["id"]); + $section_logic = !empty($section) ? rgar($section,"conditionalLogic") : null; + + $field_logic = $field["type"] != "page" ? RGForms::get("conditionalLogic", $field) : null; //page break conditional logic will be handled during the next button click + + $next_button_logic = isset($field["nextButton"]) && isset($field["nextButton"]["conditionalLogic"]) ? $field["nextButton"]["conditionalLogic"] : null; + + if(!empty($field_logic) || !empty($next_button_logic)){ + + $field_section_logic = array("field" => $field_logic, "nextButton" => $next_button_logic, "section" => $section_logic); + + $logics .= $field["id"] . ": " . GFCommon::json_encode($field_section_logic) . ","; + + $fields_with_logic[] = $field["id"]; + + $peers = $field["type"] == "section" ? GFCommon::get_section_fields($form, $field["id"]) : array($field); + $peer_ids = array(); + + foreach ($peers as $peer) + $peer_ids[] = $peer["id"]; + + $dependents .= $field["id"] . ": " . GFCommon::json_encode($peer_ids) . ","; + } + + //-- Saving default values so that they can be restored when toggling conditional logic --- + $field_val = ""; + $input_type = RGFormsModel::get_input_type($field); + + //get parameter value if pre-populate is enabled + if(rgar($field, "allowsPrepopulate")){ + if(is_array(rgar($field, "inputs"))){ + $field_val = array(); + foreach($field["inputs"] as $input){ + $field_val["input_{$input["id"]}"] = RGFormsModel::get_parameter_value(rgar($input, "name"), $field, $field_values); + } + } + else if($input_type == "time"){ + $parameter_val = RGFormsModel::get_parameter_value(rgar($field, "inputName"), $field, $field_values); + if(!empty($parameter_val) && preg_match('/^(\d*):(\d*) ?(.*)$/', $parameter_val, $matches)){ + $field_val = array(); + $field_val[] = esc_attr($matches[1]); //hour + $field_val[] = esc_attr($matches[2]); //minute + $field_val[] = rgar($matches,3); //am or pm + } + } + else if($input_type == "list"){ + $parameter_val = RGFormsModel::get_parameter_value(rgar($field, "inputName"), $field, $field_values); + $field_val = explode(",", str_replace("|", ",", $parameter_val)); + } + else { + $field_val = RGFormsModel::get_parameter_value(rgar($field, "inputName"), $field, $field_values); + } + } + + //use default value if pre-populated value is empty + $field_val = self::default_if_empty($field, $field_val); + + if(is_array(rgar($field, "choices")) && $input_type != "list"){ + + //radio buttons start at 0 and checkboxes start at 1 + $choice_index = $input_type == "radio" ? 0 : 1; + + foreach($field["choices"] as $choice){ + + if(rgar($choice,"isSelected") && $input_type == "select"){ + $val = isset($choice["price"]) ? $choice["value"] . "|" . GFCommon::to_number($choice["price"]) : $choice["value"]; + $default_values[$field["id"]] = $val; + } + else if(rgar($choice,"isSelected")){ + if(!isset($default_values[$field["id"]])) + $default_values[$field["id"]] = array(); + + $default_values[$field["id"]][] = "choice_{$field["id"]}_{$choice_index}"; + } + $choice_index++; + } + } + else if(!empty($field_val)){ + $default_values[$field["id"]] = $field_val; + } + } + + $button_conditional_script = ""; + + //adding form button conditional logic if enabled + if(isset($form["button"]["conditionalLogic"])){ + $logics .= "0: " . GFCommon::json_encode(array("field"=>$form["button"]["conditionalLogic"], "section" => null)) . ","; + $dependents .= "0: " . GFCommon::json_encode(array(0)) . ","; + $fields_with_logic[] = 0; + + $button_conditional_script = "jQuery('#gform_{$form['id']}').submit(" . + "function(event, isButtonPress){" . + " var visibleButton = jQuery('.gform_next_button:visible, .gform_button:visible, .gform_image_button:visible');" . + " return visibleButton.length > 0 || isButtonPress == true;" . + "}" . + ");"; + } + + if(!empty($logics)) + $logics = substr($logics, 0, strlen($logics) - 1); //removing last comma; + + if(!empty($dependents)) + $dependents = substr($dependents, 0, strlen($dependents) - 1); //removing last comma; + + $animation = rgar($form,"enableAnimation") ? "1" : "0"; + global $wp_locale; + $number_format = $wp_locale->number_format['decimal_point'] == "," ? "decimal_comma" : "decimal_dot"; + + $str = "if(window['jQuery']){" . + + "if(!window['gf_form_conditional_logic'])" . + "window['gf_form_conditional_logic'] = new Array();" . + "window['gf_form_conditional_logic'][{$form['id']}] = {'logic' : {" . $logics . " }, 'dependents' : {" . $dependents . " }, 'animation' : " . $animation . " , 'defaults' : " . json_encode($default_values) . " }; ". + "if(!window['gf_number_format'])" . + "window['gf_number_format'] = '" . $number_format . "';" . + + "jQuery(document).ready(function(){" . + "gf_apply_rules({$form['id']}, " . json_encode($fields_with_logic) . ", true);" . + "jQuery('#gform_wrapper_{$form['id']}').show();" . + "jQuery(document).trigger('gform_post_conditional_logic', [{$form['id']}, null, true]);" . + $button_conditional_script . + + "} );" . + + "} "; + + return $str; + } + + + /** + * Enqueue and retrieve all inline scripts that should be executed when the form is rendered. + * Use add_init_script() function to enqueue scripts. + * + * @param mixed $form + */ + private static function register_form_init_scripts($form, $field_values = array()) { + + // adding conditional logic script if conditional logic is configured for this form. + // get_conditional_logic also adds the chosen script for the enhanced dropdown option. + // if this form does not have conditional logic, add chosen script separately + if(self::has_conditional_logic($form)){ + self::add_init_script($form["id"], "conditional_logic", self::ON_PAGE_RENDER, self::get_conditional_logic($form, $field_values)); + } + + //adding currency config if there are any product fields in the form + if(self::has_price_field($form)){ + self::add_init_script($form["id"], "pricing", self::ON_PAGE_RENDER, self::get_pricing_init_script($form)); + } + + if(self::has_password_strength($form)){ + $password_script = self::get_password_strength_init_script($form); + self::add_init_script($form["id"], "password", self::ON_PAGE_RENDER, $password_script); + } + + if(self::has_enhanced_dropdown($form) ){ + $chosen_script = self::get_chosen_init_script($form); + self::add_init_script($form["id"], "chosen", self::ON_PAGE_RENDER, $chosen_script); + self::add_init_script($form["id"], "chosen", self::ON_CONDITIONAL_LOGIC, $chosen_script); + } + + if(GFCommon::has_credit_card_field($form)) { + self::add_init_script($form["id"], "credit_card", self::ON_PAGE_RENDER, self::get_credit_card_init_script($form)); + } + + if(self::has_character_counter($form)){ + self::add_init_script($form['id'], 'character_counter', self::ON_PAGE_RENDER, self::get_counter_init_script($form)); + } + + if(self::has_input_mask($form)) { + self::add_init_script($form['id'], 'input_mask', self::ON_PAGE_RENDER, self::get_input_mask_init_script($form)); + } + + if(self::has_calculation_field($form)) { + self::add_init_script($form['id'], 'calculation', self::ON_PAGE_RENDER, self::get_calculations_init_script($form)); + } + + } + + public static function get_form_init_scripts($form) { + + $script_string = ''; + + // temporary solution for output gf_global obj until wp min version raised to 3.3 + if(wp_script_is("gforms_gravityforms")) { + require_once(GFCommon::get_base_path() . '/currency.php'); + $gf_global_obj = array( 'gf_currency_config' => RGCurrency::get_currency(GFCommon::get_currency()) ); + $gf_global_script = "if(typeof gf_global == 'undefined') var gf_global = " . json_encode($gf_global_obj) . ";"; + } + + /* rendering initialization scripts */ + $init_scripts = rgar(self::$init_scripts, $form["id"]); + + if(!empty($init_scripts)){ + $script_string = + ""; + } + + return $script_string; + } + + public static function get_chosen_init_script($form){ + $chosen_fields = array(); + foreach($form["fields"] as $field){ + if(rgar($field, "enableEnhancedUI")) + $chosen_fields[] = "#input_{$form["id"]}_{$field["id"]}"; + } + return "gformInitChosenFields('" . implode(",", $chosen_fields) . "','" . esc_attr(apply_filters("gform_dropdown_no_results_text_{$form["id"]}", apply_filters("gform_dropdown_no_results_text", __("No results matched", "gravityforms"), $form["id"]), $form["id"])) . "');"; + } + + public static function get_counter_init_script($form){ + + $script = ""; + foreach($form["fields"] as $field){ + $max_length = rgar($field,"maxLength"); + $field_id = "input_{$form["id"]}_{$field["id"]}"; + if(!empty($max_length) && !rgar($field,"adminOnly")) + { + $field_script = + //****** make this callable only once *********** + "jQuery('#{$field_id}').textareaCount(" . + " {" . + " 'maxCharacterSize': {$max_length}," . + " 'originalStyle': 'ginput_counter'," . + " 'displayFormat' : '#input " . __("of", "gravityforms") . " #max " . __("max characters", "gravityforms") . "'" . + " } );"; + + $script .= apply_filters("gform_counter_script_{$form["id"]}", apply_filters("gform_counter_script", $field_script, $form["id"], $field_id, $max_length), $form["id"], $field_id, $max_length); + } + } + return $script; + } + + public static function get_credit_card_init_script($form) { + + $script = ""; + + foreach($form["fields"] as $field){ + + if($field['type'] != 'creditcard') + continue; + + $field_id = "input_{$form["id"]}_{$field["id"]}"; + $field_script = "jQuery(document).ready(function(){ { gformMatchCard(\"{$field_id}_1\"); } } );"; + + if(rgar($field, "forceSSL") && !GFCommon::is_ssl() && !GFCommon::is_preview()) + $field_script = "document.location.href='" . esc_js( RGFormsModel::get_current_page_url(true) ) . "'"; + + $script .= $field_script; + } + + $card_rules = self::get_credit_card_rules(); + $script = "if(!window['gf_cc_rules']){window['gf_cc_rules'] = new Array(); } window['gf_cc_rules'] = " . GFCommon::json_encode($card_rules) . "; $script"; + + return $script; + } + + public static function get_pricing_init_script($form) { + + if(!class_exists("RGCurrency")) + require_once("currency.php"); + + return "if(window[\"gformInitPriceFields\"]) jQuery(document).ready(function(){gformInitPriceFields();} );"; + } + + public static function get_password_strength_init_script($form) { + + $field_script = "if(!window['gf_text']){window['gf_text'] = new Array();} window['gf_text']['password_blank'] = '" . __("Strength indicator", "gravityforms") . "'; window['gf_text']['password_mismatch'] = '" . __("Mismatch", "gravityforms") . "';window['gf_text']['password_bad'] = '" . __("Bad", "gravityforms") . "'; window['gf_text']['password_short'] = '" . __("Short", "gravityforms") . "'; window['gf_text']['password_good'] = '" . __("Good", "gravityforms") . "'; window['gf_text']['password_strong'] = '" . __("Strong", "gravityforms") . "';"; + + foreach($form['fields'] as $field) { + if($field['type'] == 'password' && rgar($field, 'passwordStrengthEnabled')) { + $field_id = "input_{$form["id"]}_{$field["id"]}"; + $field_script .= "gformShowPasswordStrength(\"$field_id\");"; + } + } + + return $field_script; + } + + public static function get_input_mask_init_script($form) { + + $script_str = ''; + + foreach($form['fields'] as $field) { + + if(!rgar($field, 'inputMask') || !rgar($field, 'inputMaskValue')) + continue; + + $mask = rgar($field, 'inputMaskValue'); + $script = "jQuery('#input_{$form['id']}_{$field['id']}').mask('{$mask}').bind('keypress', function(e){if(e.which == 13){jQuery(this).blur();} } );"; + + $script_str .= apply_filters("gform_input_mask_script_{$form['id']}", apply_filters("gform_input_mask_script", $script, $form['id'], $field['id'], $mask), $form['id'], $field['id'], $mask); + } + + return $script_str; + } + + public static function get_calculations_init_script($form) { + require_once(GFCommon::get_base_path() . '/currency.php'); + + $formula_fields = array(); + + foreach($form['fields'] as $field) { + + if(!rgar($field, 'enableCalculation') || !rgar($field, 'calculationFormula')) + continue; + + $formula_fields[] = array('field_id' => $field['id'], 'formula' => rgar($field, 'calculationFormula'), 'rounding' => rgar($field, 'calculationRounding'), 'numberFormat' => rgar($field, 'numberFormat') ); + + } + + if(empty($formula_fields)) + return ''; + + $script = 'new GFCalc(' . $form['id'] . ', ' . GFCommon::json_encode($formula_fields) . ');'; + + return $script; + } + + + + + private static function has_date_field($form){ + if(is_array($form["fields"])){ + foreach($form["fields"] as $field){ + + if(RGFormsModel::get_input_type($field) == "date") + return true; + } + } + return false; + } + + private static function has_price_field($form){ + $price_fields = GFCommon::get_fields_by_type($form, array("product", "donation")); + return !empty($price_fields); + } + + private static function has_fileupload_field($form){ + $fileupload_fields = GFCommon::get_fields_by_type($form, array("fileupload", "post_image")); + if(is_array($form["fields"])){ + foreach($form["fields"] as $field){ + $input_type = RGFormsModel::get_input_type($field); + if(in_array($input_type, array("fileupload", "post_image"))) + return true; + } + } + return false; + } + + private static function has_recaptcha_field($form){ + if(is_array($form["fields"])){ + foreach($form["fields"] as $field){ + if(($field["type"] == "captcha" || $field["inputType"] == "captcha") && !in_array($field["captchaType"], array("simple_captcha", "math"))) + return true; + } + } + return false; + } + + public static function has_input_mask($form, $field = false){ + + if($field) { + if(self::has_field_input_mask($field)) + return true; + } else { + + if(!is_array($form["fields"])) + return false; + + foreach($form["fields"] as $field){ + if(rgar($field, "inputMask") && rgar($field, "inputMaskValue") && !rgar($field, "enablePasswordInput")) + return true; + } + + } + + return false; + } + + public static function has_field_input_mask($field){ + if(rgar($field, "inputMask") && rgar($field, "inputMaskValue") && !rgar($field, "enablePasswordInput")) + return true; + + return false; + } + + public static function has_calculation_field($form) { + + if(!is_array($form["fields"])) + return false; + + foreach($form['fields'] as $field) { + if(GFCommon::has_field_calculation($field)) + return true; + } + return false; + } + + //Getting all fields that have a rule based on the specified field id + private static function get_conditional_logic_fields($form, $fieldId){ + $fields = array(); + + //adding submit button field if enabled + if(isset($form["button"]["conditionalLogic"])){ + $fields[] = 0; + } + + foreach($form["fields"] as $field){ + + if($field["type"] != "page" && !empty($field["conditionalLogic"])){ + foreach($field["conditionalLogic"]["rules"] as $rule){ + if($rule["fieldId"] == $fieldId){ + $fields[] = $field["id"]; + + //if field is a section, add all fields in the section that have conditional logic (to support nesting) + if($field["type"] == "section"){ + $section_fields = GFCommon::get_section_fields($form, $field["id"]); + foreach($section_fields as $section_field) + if(!empty($section_field["conditionalLogic"])) + $fields[] = $section_field["id"]; + } + break; + } + } + } + //adding fields with next button logic + if(!empty($field["nextButton"]["conditionalLogic"])){ + foreach($field["nextButton"]["conditionalLogic"]["rules"] as $rule){ + if($rule["fieldId"] == $fieldId && !in_array($fieldId, $fields)){ + $fields[] = $field["id"]; + break; + } + } + } + } + return $fields; + } + + public static function get_field($field, $value="", $force_frontend_label = false, $form=null, $field_values=null){ + $custom_class = IS_ADMIN ? "" : rgget("cssClass", $field); + + if($field["type"] == "page"){ + if(IS_ADMIN && RG_CURRENT_VIEW == "entry"){ + return; //ignore page breaks in the entry detail page + } + else if(!IS_ADMIN){ + $next_button = self::get_form_button($form["id"], "gform_next_button_{$form["id"]}_{$field["id"]}", $field["nextButton"], __("Next", "gravityforms"), "button gform_next_button", __("Next Page", "gravityforms"), $field["pageNumber"]); + $previous_button = $field["pageNumber"] == 2 ? "" : self::get_form_button($form["id"], "gform_previous_button_{$form["id"]}_{$field["id"]}", $field["previousButton"], __("Previous", "gravityforms"), "button gform_previous_button", __("Previous Page", "gravityforms"), $field["pageNumber"]-2); + $style = self::is_page_active($form["id"], $field["pageNumber"]) ? "" : "style='display:none;'"; + $custom_class = !empty($custom_class) ? " {$custom_class}" : ""; + $html = " + + + +
          +
          +
            "; + + return $html; + } + } + + if($field["type"] == "post_category") { + + + + } + + if(!IS_ADMIN && rgar($field,"adminOnly")) + { + if($field["allowsPrepopulate"]) + $field["inputType"] = "adminonly_hidden"; + else + return; + } + + $id = $field["id"]; + $type = $field["type"]; + $input_type = RGFormsModel::get_input_type($field); + + $error_class = rgget("failed_validation", $field) ? "gfield_error" : ""; + $admin_only_class = rgget("adminOnly", $field) ? "field_admin_only" : ""; + $selectable_class = IS_ADMIN ? "selectable" : ""; + $hidden_class = in_array($input_type, array("hidden", "hiddenproduct")) ? "gform_hidden" : ""; + + $section_class = $field["type"] == "section" ? "gsection" : ""; + $page_class = $field["type"] == "page" ? "gpage" : ""; + $html_block_class = $field["type"] == "html" ? "gfield_html" : ""; + $html_formatted_class = $field["type"] == "html" && !IS_ADMIN && !rgget("disableMargins", $field) ? "gfield_html_formatted" : ""; + $html_no_follows_desc_class = $field["type"] == "html" && !IS_ADMIN && !self::prev_field_has_description($form, $field["id"]) ? "gfield_no_follows_desc" : ""; + + $calculation_class = RGFormsModel::get_input_type($field) == 'number' && GFCommon::has_field_calculation($field) ? 'gfield_calculation' : ''; + $calculation_class = RGFormsModel::get_input_type($field) == 'calculation' ? 'gfield_calculation' : ''; + + $product_suffix = "_{$form["id"]}_" . rgget("productField", $field); + $option_class = $field["type"] == "option" ? "gfield_price gfield_price{$product_suffix} gfield_option{$product_suffix}" : ""; + $quantity_class = $field["type"] == "quantity" ? "gfield_price gfield_price{$product_suffix} gfield_quantity{$product_suffix}" : ""; + $shipping_class = $field["type"] == "shipping" ? "gfield_price gfield_shipping gfield_shipping_{$form["id"]}" : ""; + $product_class = $field["type"] == "product" ? "gfield_price gfield_price_{$form["id"]}_{$field["id"]} gfield_product_{$form["id"]}_{$field["id"]}" : ""; + $hidden_product_class = $input_type == "hiddenproduct" ? "gfield_hidden_product" : ""; + $donation_class = $field["type"] == "donation" ? "gfield_price gfield_price_{$form["id"]}_{$field["id"]} gfield_donation_{$form["id"]}_{$field["id"]}" : ""; + $required_class = rgar($field, "isRequired") ? "gfield_contains_required" : ""; + $creditcard_warning_class = $input_type == "creditcard" && !GFCommon::is_ssl() ? "gfield_creditcard_warning" : ""; + + $css_class = "$selectable_class gfield $error_class $section_class $admin_only_class $custom_class $hidden_class $html_block_class $html_formatted_class $html_no_follows_desc_class $option_class $quantity_class $product_class $donation_class $shipping_class $page_class $required_class $hidden_product_class $creditcard_warning_class $calculation_class"; + $css_class = apply_filters("gform_field_css_class_{$form["id"]}", apply_filters("gform_field_css_class", trim($css_class), $field, $form), $field, $form); + + $style = !empty($form) && !IS_ADMIN && RGFormsModel::is_field_hidden($form, $field, $field_values) ? "style='display:none;'" : ""; + + $field_id = IS_ADMIN || empty($form) ? "field_$id" : "field_" . $form["id"] . "_$id"; + + return "
          • " . self::get_field_content($field, $value, $force_frontend_label, $form == null ? 0 : $form["id"]) . "
          • "; + } + + private static function prev_field_has_description($form, $field_id){ + if(!is_array($form["fields"])) + return false; + + $prev = null; + foreach($form["fields"] as $field){ + if($field["id"] == $field_id){ + return $prev != null && !empty($prev["description"]); + } + $prev = $field; + } + return false; + } + + public static function get_field_content($field, $value="", $force_frontend_label = false, $form_id=0){ + $id = $field["id"]; + $size = rgar($field,"size"); + $validation_message = (rgget("failed_validation", $field) && !empty($field["validation_message"])) ? sprintf("
            %s
            ", $field["validation_message"]) : ""; + + $duplicate_disabled = array('captcha', 'post_title', 'post_content', 'post_excerpt', 'total', 'shipping', 'creditcard'); + $duplicate_field_link = !in_array($field['type'], $duplicate_disabled) ? "" . __("Duplicate", "gravityforms") . "" : ""; + $duplicate_field_link = apply_filters("gform_duplicate_field_link", $duplicate_field_link); + + $delete_field_link = "" . __("Delete", "gravityforms") . ""; + $delete_field_link = apply_filters("gform_delete_field_link", $delete_field_link); + $field_type_title = GFCommon::get_field_type_title($field["type"]); + $admin_buttons = IS_ADMIN ? "
            {$field_type_title} : " . __("Field ID", "gravityforms") . " {$field["id"]}
            " . $delete_field_link . $duplicate_field_link . "" . __("Edit", "gravityforms") . "
            " : ""; + + $field_label = $force_frontend_label ? $field["label"] : GFCommon::get_label($field); + if(rgar($field, "inputType") == "singleproduct" && !rgempty($field["id"] . ".1", $value)) + $field_label = rgar($value, $field["id"] . ".1"); + + + $field_id = IS_ADMIN || $form_id == 0 ? "input_$id" : "input_" . $form_id . "_$id"; + + $required_div = IS_ADMIN || rgar($field, "isRequired") ? sprintf("%s", $field["isRequired"] ? "*" : "") : ""; + $target_input_id = ""; + $is_description_above = rgar($field, "descriptionPlacement") == "above"; + + switch(RGFormsModel::get_input_type($field)){ + case "section" : + $description = self::get_description(rgget("description", $field), "gsection_description"); + $field_content = sprintf("%s

            %s

            %s", $admin_buttons, esc_html($field_label), $description); + break; + + case "page" : + //only executed on the form editor in the admin + $page_label = __("Page Break", "gravityforms"); + $src = GFCommon::get_base_url() . "/images/gf_pagebreak_inline.png"; + $field_content = "{$admin_buttons} {$page_label}"; + break; + + case "adminonly_hidden": + case "hidden" : + case "html" : + $field_content = !IS_ADMIN ? "{FIELD}" : $field_content = sprintf("%s{FIELD}", $admin_buttons, $field_id, esc_html($field_label)); + break; + + case "checkbox": + case "radio": + $description = self::get_description(rgget("description", $field),"gfield_description"); + if($is_description_above) + $field_content = sprintf("%s%s{FIELD}%s", $admin_buttons, esc_html($field_label), $required_div , $description, $validation_message); + else + $field_content = sprintf("%s{FIELD}%s%s", $admin_buttons, esc_html($field_label), $required_div , $description, $validation_message); + break; + + case "name" : + switch(rgar($field, "nameFormat")){ + case "simple" : + $target_input_id = $field_id; + break; + + case "extended" : + $target_input_id = $field_id . "_2"; + break; + + default : + $target_input_id = $field_id . "_3"; + } + + case "address" : + if(empty($target_input_id)) + $target_input_id = $field_id . "_1"; + + default : + if(empty($target_input_id)) + $target_input_id = $field_id; + + $description = self::get_description(rgget("description", $field),"gfield_description"); + if($is_description_above) + $field_content = sprintf("%s%s{FIELD}%s", $admin_buttons, $target_input_id, esc_html($field_label), $required_div , $description, $validation_message); + else + $field_content = sprintf("%s{FIELD}%s%s", $admin_buttons, $target_input_id, esc_html($field_label), $required_div , $description, $validation_message); + break; + } + + if(RGFormsModel::get_input_type($field) == "creditcard" && !GFCommon::is_ssl() && !IS_ADMIN){ + $field_content = "
            " . __("This page is unsecured. Do not enter a real credit card number. Use this field only for testing purposes. ", "gravityforms") . "
            " . $field_content; + } + + $value = self::default_if_empty($field, $value); + + $field_content = str_replace("{FIELD}", GFCommon::get_field_input($field, $value, 0, $form_id), $field_content); + + $field_content = apply_filters("gform_field_content", $field_content, $field, $value, 0, $form_id); + + return $field_content; + } + + private static function default_if_empty($field, $value){ + + if(!GFCommon::is_empty_array($value)) + return $value; + + if(IS_ADMIN){ + $value = rgget("defaultValue", $field); + } + else{ + $value = rgar($field, "defaultValue"); + if(!is_array($value)) + $value = GFCommon::replace_variables_prepopulate(rgget("defaultValue", $field)); + } + + return $value; + } + + private static function get_description($description, $css_class){ + return IS_ADMIN || !empty($description) ? "
            " . $description . "
            " : ""; + } + + public static function get_credit_card_rules() { + + $cards = GFCommon::get_card_types(); + //$supported_cards = //TODO: Only include enabled cards + $rules = array(); + + foreach($cards as $card) { + $prefixes = explode(',', $card['prefixes']); + foreach($prefixes as $prefix) { + $rules[$card['slug']][] = $prefix; + } + } + + return $rules; + } + + private static function get_progress_bar($form, $form_id,$confirmation_message) { + + $progress_complete = false; + $progress_bar = ""; + $page_count = self::get_max_page_number($form); + $current_page = self::get_current_page($form_id); + $page_name = rgar(rgar($form["pagination"],"pages"), $current_page -1); + $page_name = !empty($page_name) ? " - " . $page_name : ""; + $style = $form["pagination"]["style"]; + $color = $style == "custom" ? " color:{$form["pagination"]["color"]};" : ""; + $bgcolor = $style == "custom" ? " background-color:{$form["pagination"]["backgroundColor"]};" : ""; + + if (!empty($confirmation_message)) + { + $progress_complete = true; + } + //check admin setting for whether the progress bar should start at zero + $start_at_zero = rgars($form, "pagination/display_progressbar_on_confirmation"); + //check for filter + $start_at_zero = apply_filters("gform_progressbar_start_at_zero", $start_at_zero, $form); + $progressbar_page_count = $start_at_zero ? $current_page - 1 : $current_page; + $percent = !$progress_complete ? floor(( ($progressbar_page_count) / $page_count ) * 100) . "%" : "100%"; + $percent_number = !$progress_complete ? floor(( ($progressbar_page_count) / $page_count ) * 100) . "" : "100"; + + if ($progress_complete) + { + $wrapper_css_class = GFCommon::get_browser_class() . " gform_wrapper"; + + //add on surrounding wrapper class when confirmation page + $progress_bar = "
            "; + $page_name = !empty($form["pagination"]["progressbar_completion_text"]) ? $form["pagination"]["progressbar_completion_text"] : ""; + } + + + $progress_bar .=" +
            +

            "; + $progress_bar .= !$progress_complete ? __("Step", "gravityforms") . " {$current_page} " . __("of", "gravityforms") . " {$page_count}{$page_name}" : "{$page_name}"; + $progress_bar .= " +

            +
            +
            {$percent}
            +
            "; + //close div for surrounding wrapper class when confirmation page + $progress_bar .= $progress_complete ? "
            " : ""; + + return $progress_bar; + } + + /** + * Validates the form's entry limit settings. Returns the entry limit message if entry limit exceeded. + * + * @param array $form current GF form object + * @return string If entry limit exceeded returns entry limit setting. + */ + public static function validate_entry_limit($form) { + + //If form has a limit of entries, check current entry count + if(rgar($form,"limitEntries")) { + $period = rgar($form, "limitEntriesPeriod"); + $range = self::get_limit_period_dates($period); + $entry_count = RGFormsModel::get_lead_count($form['id'], "", null, null, $range["start_date"], $range["end_date"]); + + if($entry_count >= $form["limitEntriesCount"]) + return empty($form["limitEntriesMessage"]) ? "

            " . __("Sorry. This form is no longer accepting new submissions.", "gravityforms"). "

            " : "

            " . GFCommon::gform_do_shortcode($form["limitEntriesMessage"]) . "

            "; + } + + } + + public static function validate_form_schedule($form) { + + //If form has a schedule, make sure it is within the configured start and end dates + if(rgar($form, "scheduleForm")){ + $local_time_start = sprintf("%s %02d:%02d %s", $form["scheduleStart"], $form["scheduleStartHour"], $form["scheduleStartMinute"], $form["scheduleStartAmpm"]); + $local_time_end = sprintf("%s %02d:%02d %s", $form["scheduleEnd"], $form["scheduleEndHour"], $form["scheduleEndMinute"], $form["scheduleEndAmpm"]); + $timestamp_start = strtotime($local_time_start . ' +0000'); + $timestamp_end = strtotime($local_time_end . ' +0000'); + $now = current_time("timestamp"); + + if( (!empty($form["scheduleStart"]) && $now < $timestamp_start) || (!empty($form["scheduleEnd"]) && $now > $timestamp_end)) + return empty($form["scheduleMessage"]) ? "

            " . __("Sorry. This form is no longer available.", "gravityforms") . "

            " : "

            " . GFCommon::gform_do_shortcode($form["scheduleMessage"]) . "

            "; + } + + } + +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/form_list.php b/wp-content/plugins/gravityforms/form_list.php new file mode 100644 index 0000000..0c0ef38 --- /dev/null +++ b/wp-content/plugins/gravityforms/form_list.php @@ -0,0 +1,305 @@ + + + + +
            + +

            +

            + + +

            +
            + + + + + + + +
            +
            + + + + '; + echo apply_filters("gform_form_apply_button", $apply_button); + ?> + +
            + +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0){ + foreach($forms as $form){ + $conversion = "0%"; + if($form->view_count > 0){ + $conversion = (number_format($form->lead_count / $form->view_count, 3) * 100) . "%"; + } + ?> + + + + + + + + + + + + + + + + + + +
            <?php echo $form->is_active ? __(" title="is_active ? __("Active", "gravityforms") : __("Inactive", "gravityforms");?>" onclick="ToggleActive(this, id ?>); " />id ?> + ">title ?> +
            + + id . '">' . __("Edit", "gravityforms") . ''; + $form_actions['preview'] = '' . __("Preview", "gravityforms") . ''; + + if(GFCommon::current_user_can_any("gravityforms_view_entries")) + $form_actions['entries'] = '' . __("Entries", "gravityforms") . ''; + + $form_actions['notifications'] = '' . __("Notifications", "gravityforms") . ''; + + if(GFCommon::current_user_can_any("gravityforms_create_form")) + $form_actions['duplicate'] = '' . __("Duplicate", "gravityforms") . ''; + + if(GFCommon::current_user_can_any("gravityforms_delete_forms")) { + $delete_link = 'id . ');}">' . __("Delete", "gravityforms"). ''; + $form_actions['delete'] = apply_filters("gform_form_delete_link", $delete_link); + } + + $form_actions = apply_filters("gform_form_actions", $form_actions, $form->id); + + if(is_array($form_actions) && !empty($form_actions)) { + $last_key = array_pop(array_keys($form_actions)); + foreach($form_actions as $action_key => $action_link) { + $divider = $action_key == $last_key ? '' : " | "; + ?> + + + + + + + +
            +
            view_count ?>lead_count ?>
            + ', ""); ?> +
            +
            +
            + + + + '; + echo apply_filters("gform_form_apply_button", $apply_button); + } + ?> +
            +
            +
            +
            +
            + \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/forms_model.php b/wp-content/plugins/gravityforms/forms_model.php new file mode 100644 index 0000000..e49edb8 --- /dev/null +++ b/wp-content/plugins/gravityforms/forms_model.php @@ -0,0 +1,2862 @@ +prefix . "rg_form"; + + } + + public static function get_meta_table_name(){ + global $wpdb; + return $wpdb->prefix . "rg_form_meta"; + } + + public static function get_form_view_table_name(){ + global $wpdb; + return $wpdb->prefix . "rg_form_view"; + } + + public static function get_lead_table_name(){ + global $wpdb; + return $wpdb->prefix . "rg_lead"; + } + + public static function get_lead_meta_table_name(){ + global $wpdb; + return $wpdb->prefix . "rg_lead_meta"; + } + + public static function get_lead_notes_table_name(){ + global $wpdb; + return $wpdb->prefix . "rg_lead_notes"; + } + + public static function get_lead_details_table_name(){ + global $wpdb; + return $wpdb->prefix . "rg_lead_detail"; + } + + public static function get_lead_details_long_table_name(){ + global $wpdb; + return $wpdb->prefix . "rg_lead_detail_long"; + } + + public static function get_lead_view_name(){ + global $wpdb; + return $wpdb->prefix . "rg_lead_view"; + } + + public static function get_forms($is_active = null, $sort="title ASC"){ + global $wpdb; + $form_table_name = self::get_form_table_name(); + $lead_table_name = self::get_lead_table_name(); + $view_table_name = self::get_form_view_table_name(); + + $active_clause = $is_active !== null ? $wpdb->prepare("WHERE is_active=%d", $is_active) : ""; + $order_by = !empty($sort) ? "ORDER BY $sort" : ""; + + $sql = "SELECT f.id, f.title, f.date_created, f.is_active, 0 as lead_count, 0 view_count + FROM $form_table_name f + $active_clause + $order_by"; + + //Getting all forms + $forms = $wpdb->get_results($sql); + + //Getting entry count per form + $sql = "SELECT form_id, count(id) as lead_count FROM $lead_table_name l WHERE status='active' GROUP BY form_id"; + $entry_count = $wpdb->get_results($sql); + + //Getting view count per form + $sql = "SELECT form_id, sum(count) as view_count FROM $view_table_name GROUP BY form_id"; + $view_count = $wpdb->get_results($sql); + + //Adding entry counts and to form array + foreach($forms as &$form){ + foreach($view_count as $count){ + if($count->form_id == $form->id){ + $form->view_count = $count->view_count; + break; + } + } + + foreach($entry_count as $count){ + if($count->form_id == $form->id){ + $form->lead_count = $count->lead_count; + break; + } + } + } + + return $forms; + } + + public static function get_forms_by_id($ids){ + global $wpdb; + $form_table_name = self::get_form_table_name(); + $meta_table_name = self::get_meta_table_name(); + + if(is_array($ids)) + $ids = implode(",", $ids); + + $results = $wpdb->get_results(" SELECT display_meta FROM {$form_table_name} f + INNER JOIN {$meta_table_name} m ON f.id = m.form_id + WHERE id in({$ids})", ARRAY_A); + + foreach ($results as &$result) + $result = maybe_unserialize($result["display_meta"]); + + return $results; + + } + + public static function get_form_payment_totals($form_id){ + global $wpdb; + $lead_table_name = self::get_lead_table_name(); + + $sql = $wpdb->prepare(" SELECT sum(payment_amount) revenue, count(l.id) orders + FROM $lead_table_name l + WHERE form_id=%d AND payment_amount IS NOT null", $form_id); + + $totals = $wpdb->get_row($sql, ARRAY_A); + + $active = $wpdb->get_var($wpdb->prepare(" SELECT count(id) as active + FROM $lead_table_name + WHERE form_id=%d AND payment_status='Active'", $form_id)); + + if(empty($active)) + $active = 0; + + $totals["active"] = $active; + + return $totals; + } + + public static function get_form_counts($form_id){ + global $wpdb; + $lead_table_name = self::get_lead_table_name(); + $sql = $wpdb->prepare( + "SELECT + (SELECT count(0) FROM $lead_table_name WHERE form_id=%d AND status='active') as total, + (SELECT count(0) FROM $lead_table_name WHERE is_read=0 AND status='active' AND form_id=%d) as unread, + (SELECT count(0) FROM $lead_table_name WHERE is_starred=1 AND status='active' AND form_id=%d) as starred, + (SELECT count(0) FROM $lead_table_name WHERE status='spam' AND form_id=%d) as spam, + (SELECT count(0) FROM $lead_table_name WHERE status='trash' AND form_id=%d) as trash", + $form_id, $form_id, $form_id, $form_id, $form_id); + + $results = $wpdb->get_results($sql, ARRAY_A); + + return $results[0]; + + } + + public static function get_form_summary(){ + global $wpdb; + $form_table_name = self::get_form_table_name(); + $lead_table_name = self::get_lead_table_name(); + + $sql = "SELECT l.form_id, count(l.id) as unread_count + FROM $lead_table_name l + WHERE is_read=0 AND status='active' + GROUP BY form_id"; + + //getting number of unread and total leads for all forms + $unread_results = $wpdb->get_results($sql, ARRAY_A); + + $sql = "SELECT l.form_id, max(l.date_created) as last_lead_date, count(l.id) as total_leads + FROM $lead_table_name l + WHERE status='active' + GROUP BY form_id"; + + $lead_date_results = $wpdb->get_results($sql, ARRAY_A); + + $sql = "SELECT id, title, '' as last_lead_date, 0 as unread_count + FROM $form_table_name + WHERE is_active=1 + ORDER BY title"; + + $forms = $wpdb->get_results($sql, ARRAY_A); + + + for($i=0; $count = sizeof($forms), $i<$count; $i++){ + if(is_array($unread_results)){ + foreach($unread_results as $unread_result){ + if($unread_result["form_id"] == $forms[$i]["id"]){ + $forms[$i]["unread_count"] = $unread_result["unread_count"]; + break; + } + } + } + + if(is_array($lead_date_results)){ + foreach($lead_date_results as $lead_date_result){ + if($lead_date_result["form_id"] == $forms[$i]["id"]){ + $forms[$i]["last_lead_date"] = $lead_date_result["last_lead_date"]; + $forms[$i]["total_leads"] = $lead_date_result["total_leads"]; + break; + } + } + } + + } + + return $forms; + } + + public static function get_form_count(){ + global $wpdb; + $form_table_name = self::get_form_table_name(); + $results = $wpdb->get_results("SELECT count(0) as count FROM $form_table_name UNION ALL SELECT count(0) as count FROM $form_table_name WHERE is_active=1 "); + return array( "total" => intval($results[0]->count), + "active" => intval($results[1]->count), + "inactive" => intval($results[0]->count) - intval($results[1]->count) + ); + } + + public static function get_form_id($form_title){ + $forms = self::get_forms(); + foreach($forms as $form){ + $sanitized_name = str_replace("[", "", str_replace("]","", $form->title)); + if($form->title == $form_title || $sanitized_name == $form_title) + return $form->id; + } + return 0; + } + + public static function get_form($form_id){ + global $wpdb; + $table_name = self::get_form_table_name(); + $results = $wpdb->get_results($wpdb->prepare("SELECT * FROM $table_name WHERE id=%d", $form_id)); + return $results[0]; + } + + public static function get_form_meta($form_id){ + global $wpdb; + + $table_name = self::get_meta_table_name(); + $form = maybe_unserialize($wpdb->get_var($wpdb->prepare("SELECT display_meta FROM $table_name WHERE form_id=%d", $form_id))); + + $page_number = 1; + $description_placement = rgar($form, "descriptionPlacement") == "above" ? "above" : "below"; + if(is_array($form["fields"])){ + foreach($form["fields"] as &$field){ + $field["formId"] = $form["id"]; + $field["pageNumber"] = $page_number; + $field["descriptionPlacement"] = $description_placement; + if($field["type"] == "page"){ + $page_number++; + $field["pageNumber"] = $page_number; + } + } + } + return $form; + } + + public static function add_default_properties($form){ + if(is_array($form["fields"])){ + $all_fields = array("adminLabel"=>"","adminOnly"=>"","allowsPrepopulate"=>"","defaultValue"=>"","description"=>"","content"=>"","cssClass"=>"", + "errorMessage"=>"","id"=>"","inputName"=>"","isRequired"=>"","label"=>"","noDuplicates"=>"", + "size"=>"","type"=>"","postCustomFieldName"=>"","displayAllCategories"=>"","displayCaption"=>"","displayDescription"=>"", + "displayTitle"=>"","inputType"=>"","rangeMin"=>"","rangeMax"=>"","calendarIconType"=>"", + "calendarIconUrl"=>"", "dateType"=>"","dateFormat"=>"","phoneFormat"=>"","addressType"=>"","defaultCountry"=>"","defaultProvince"=>"", + "defaultState"=>"","hideAddress2"=>"","hideCountry"=>"","hideState"=>"","inputs"=>"","nameFormat"=>"","allowedExtensions"=>"", + "captchaType"=>"","page_number"=>"","captchaTheme"=>"","simpleCaptchaSize"=>"","simpleCaptchaFontColor"=>"","simpleCaptchaBackgroundColor"=>"", + "failed_validation"=>"", "productField" => "", "enablePasswordInput" => "", "maxLength" => "", "enablePrice" => "", "basePrice" => ""); + + foreach($form["fields"] as &$field) + $field = wp_parse_args($field, $all_fields); + } + return $form; + } + + public static function get_grid_column_meta($form_id){ + global $wpdb; + + $table_name = self::get_meta_table_name(); + return maybe_unserialize($wpdb->get_var($wpdb->prepare("SELECT entries_grid_meta FROM $table_name WHERE form_id=%d", $form_id))); + } + + public static function update_grid_column_meta($form_id, $columns){ + global $wpdb; + + $table_name = self::get_meta_table_name(); + $meta = maybe_serialize(stripslashes_deep($columns) ); + $wpdb->query( $wpdb->prepare("UPDATE $table_name SET entries_grid_meta=%s WHERE form_id=%d", $meta, $form_id) ); + } + + public static function get_lead_detail_id($current_fields, $field_number){ + foreach($current_fields as $field) + if($field->field_number == $field_number) + return $field->id; + + return 0; + } + + public static function update_form_active($form_id, $is_active){ + global $wpdb; + $form_table = self::get_form_table_name(); + $sql = $wpdb->prepare("UPDATE $form_table SET is_active=%d WHERE id=%d", $is_active, $form_id); + $wpdb->query($sql); + } + + public static function update_forms_active($forms, $is_active){ + foreach($forms as $form_id) + self::update_form_active($form_id, $is_active); + } + + public static function update_leads_property($leads, $property_name, $property_value){ + foreach($leads as $lead) + self::update_lead_property($lead, $property_name, $property_value); + } + + public static function update_lead_property($lead_id, $property_name, $property_value, $update_akismet=true, $disable_hook=false){ + global $wpdb; + $lead_table = self::get_lead_table_name(); + + $lead = self::get_lead($lead_id); + + //marking entry as "spam" or "not spam" with Akismet if the plugin is installed + if($update_akismet && GFCommon::akismet_enabled($lead["form_id"]) && $property_name == "status" && in_array($property_value, array("active", "spam"))){ + + $current_status = $lead["status"]; + if($current_status == "spam" && $property_value == "active"){ + $form = self::get_form_meta($lead["form_id"]); + GFCommon::mark_akismet_spam($form, $lead, false); + } + else if($current_status == "active" && $property_value == "spam"){ + $form = self::get_form_meta($lead["form_id"]); + GFCommon::mark_akismet_spam($form, $lead, true); + } + } + + //updating lead + $wpdb->update($lead_table, array($property_name => $property_value ), array("id" => $lead_id)); + + if(!$disable_hook){ + + $previous_value = rgar($lead, $property_name); + + if($previous_value != $property_value) { + + // if property is status, prev value is spam and new value is active + if($property_name == 'status' && $previous_value == 'spam' && $property_value == 'active' && !rgar($lead, 'post_id')) { + $lead[$property_name] = $property_value; + $lead['post_id'] = GFCommon::create_post($form, $lead); + } + + do_action("gform_update_{$property_name}", $lead_id, $property_value, $previous_value); + } + } + + } + + + public static function update_lead($lead){ + global $wpdb; + $lead_table = self::get_lead_table_name(); + + $payment_date = strtotime(rgar($lead,"payment_date")) ? "'{$lead["payment_date"]}'" : "NULL"; + $payment_amount = !rgblank(rgar($lead, "payment_amount")) ? rgar($lead, "payment_amount") : "NULL"; + $transaction_type = !rgempty("transaction_type", $lead) ? $lead["transaction_type"] : "NULL"; + $status = !rgempty("status", $lead) ? $lead["status"] : "active"; + + $sql = $wpdb->prepare("UPDATE $lead_table SET + form_id=%d, + post_id=%d, + is_starred=%d, + is_read=%d, + ip=%s, + source_url=%s, + user_agent=%s, + currency=%s, + payment_status=%s, + payment_date={$payment_date}, + payment_amount={$payment_amount}, + transaction_id=%s, + is_fulfilled=%d, + transaction_type={$transaction_type}, + status='{$status}' + WHERE id=%d", rgar($lead,"form_id"), rgar($lead,"post_id"), rgar($lead,"is_starred"), rgar($lead,"is_read"), rgar($lead,"ip"), rgar($lead,"source_url"), rgar($lead,"user_agent"), + rgar($lead,"currency"), rgar($lead,"payment_status"), rgar($lead,"transaction_id"), rgar($lead,"is_fulfilled"), rgar($lead,"id")); + $wpdb->query($sql); + } + + public static function delete_leads($leads){ + foreach($leads as $lead_id) + self::delete_lead($lead_id); + } + + public static function delete_forms($forms){ + foreach($forms as $form_id) + self::delete_form($form_id); + } + + public static function delete_leads_by_form($form_id, $status=""){ + global $wpdb; + + if(!GFCommon::current_user_can_any("gravityforms_delete_entries")) + die(__("You don't have adequate permission to delete entries.", "gravityforms")); + + $lead_table = self::get_lead_table_name(); + $lead_notes_table = self::get_lead_notes_table_name(); + $lead_detail_table = self::get_lead_details_table_name(); + $lead_detail_long_table = self::get_lead_details_long_table_name(); + + //deleting uploaded files + self::delete_files_by_form($form_id, $status); + + $status_filter = empty($status) ? "" : $wpdb->prepare("AND status=%s", $status); + + //Delete from detail long + $sql = $wpdb->prepare(" DELETE FROM $lead_detail_long_table + WHERE lead_detail_id IN( + SELECT ld.id FROM $lead_detail_table ld + INNER JOIN $lead_table l ON l.id = ld.lead_id + WHERE l.form_id=%d AND ld.form_id=%d {$status_filter} + )", $form_id, $form_id); + $wpdb->query($sql); + + //Delete from lead details + $sql = $wpdb->prepare(" DELETE FROM $lead_detail_table + WHERE lead_id IN ( + SELECT id FROM $lead_table WHERE form_id=%d {$status_filter} + )", $form_id); + $wpdb->query($sql); + + //Delete from lead notes + $sql = $wpdb->prepare(" DELETE FROM $lead_notes_table + WHERE lead_id IN ( + SELECT id FROM $lead_table WHERE form_id=%d {$status_filter} + )", $form_id); + $wpdb->query($sql); + + //Delete from lead + $sql = $wpdb->prepare("DELETE FROM $lead_table WHERE form_id=%d {$status_filter}", $form_id); + $wpdb->query($sql); + } + + public static function delete_views($form_id){ + global $wpdb; + + $form_view_table = self::get_form_view_table_name(); + + //Delete form view + $sql = $wpdb->prepare("DELETE FROM $form_view_table WHERE form_id=%d", $form_id); + $wpdb->query($sql); + } + + public static function delete_form($form_id){ + global $wpdb; + + if(!GFCommon::current_user_can_any("gravityforms_delete_forms")) + die(__("You don't have adequate permission to delete forms.", "gravityforms")); + + do_action("gform_before_delete_form", $form_id); + + $form_meta_table = self::get_meta_table_name(); + $form_table = self::get_form_table_name(); + + //Deleting form Entries + self::delete_leads_by_form($form_id); + + //Delete form meta + $sql = $wpdb->prepare("DELETE FROM $form_meta_table WHERE form_id=%d", $form_id); + $wpdb->query($sql); + + //Deleting form Views + self::delete_views($form_id); + + //Delete form + $sql = $wpdb->prepare("DELETE FROM $form_table WHERE id=%d", $form_id); + $wpdb->query($sql); + + do_action("gform_after_delete_form", $form_id); + } + + public static function duplicate_form($form_id){ + global $wpdb; + + if(!GFCommon::current_user_can_any("gravityforms_create_form")) + die(__("You don't have adequate permission to create forms.", "gravityforms")); + + //finding unique title + $form = self::get_form($form_id); + $count = 2; + $title = $form->title . " - Copy 1"; + while(!self::is_unique_title($title)){ + $title = $form->title . " - Copy $count"; + $count++; + } + + //creating new form + $new_id = self::insert_form($title); + + //copying form meta + $meta = self::get_form_meta($form_id); + $meta["title"] = $title; + $meta["id"] = $new_id; + self::update_form_meta($new_id, $meta); + + return $new_id; + } + + public static function is_unique_title($title){ + $forms = self::get_forms(); + foreach($forms as $form){ + if(strtolower($form->title) == strtolower($title)) + return false; + } + + return true; + } + + public static function insert_form($form_title){ + global $wpdb; + $form_table_name = $wpdb->prefix . "rg_form"; + + //creating new form + $wpdb->query($wpdb->prepare("INSERT INTO $form_table_name(title, date_created) VALUES(%s, utc_timestamp())", $form_title)); + + //returning newly created form id + return $wpdb->insert_id; + + } + + public static function update_form_meta($form_id, $form_meta){ + global $wpdb; + $meta_table_name = self::get_meta_table_name(); + $form_meta = maybe_serialize($form_meta); + + if(intval($wpdb->get_var($wpdb->prepare("SELECT count(0) FROM $meta_table_name WHERE form_id=%d", $form_id))) > 0) + $wpdb->query( $wpdb->prepare("UPDATE $meta_table_name SET display_meta=%s WHERE form_id=%d", $form_meta, $form_id) ); + else + $wpdb->query( $wpdb->prepare("INSERT INTO $meta_table_name(form_id, display_meta) VALUES(%d, %s)", $form_id, $form_meta ) ); + } + + public static function delete_files($lead_id, $form=null){ + $lead = self::get_lead($lead_id); + + if($form == null) + $form = self::get_form_meta($lead["form_id"]); + + $fields = GFCommon::get_fields_by_type($form, array("fileupload", "post_image")); + if(is_array($fields)){ + foreach($fields as $field){ + $value = self::get_lead_field_value($lead, $field); + self::delete_physical_file($value); + } + } + } + + public static function delete_files_by_form($form_id, $status=""){ + global $wpdb; + $form = self::get_form_meta($form_id); + $fields = GFCommon::get_fields_by_type($form, array("fileupload", "post_image")); + if(empty($fields)) + return; + + $status_filter = empty($status) ? "" : $wpdb->prepare("AND status=%s", $status); + $results = $wpdb->get_results($wpdb->prepare("SELECT id FROM {$wpdb->prefix}rg_lead WHERE form_id=%d {$status_filter}", $form_id), ARRAY_A); + + foreach($results as $result){ + self::delete_files($result["id"], $form); + } + } + + public static function delete_file($lead_id, $field_id){ + global $wpdb; + + if($lead_id == 0 || $field_id == 0) + return; + + $lead_detail_table = self::get_lead_details_table_name(); + + //Deleting file + $sql = $wpdb->prepare("SELECT value FROM $lead_detail_table WHERE lead_id=%d AND field_number BETWEEN %s AND %s", $lead_id, doubleval($field_id) - 0.001, doubleval($field_id) + 0.001); + $file_path = $wpdb->get_var($sql); + + self::delete_physical_file($file_path); + + //Delete from lead details + $sql = $wpdb->prepare("DELETE FROM $lead_detail_table WHERE lead_id=%d AND field_number BETWEEN %s AND %s", $lead_id, doubleval($field_id) - 0.001, doubleval($field_id) + 0.001); + $wpdb->query($sql); + } + + private static function delete_physical_file($file_url){ + $ary = explode("|:|", $file_url); + $url = rgar($ary,0); + if(empty($url)) + return; + + //Convert from url to physical path + if (is_multisite()) { + $file_path = preg_replace("|^(.*?)/files/gravity_forms/|", BLOGUPLOADDIR . "gravity_forms/", $url); + } + else { + $file_path = str_replace(WP_CONTENT_URL, WP_CONTENT_DIR, $url); + } + + if(file_exists($file_path)){ + unlink($file_path); + } + } + + public static function delete_field($form_id, $field_id){ + global $wpdb; + + if($form_id == 0) + return; + + do_action("gform_before_delete_field", $form_id, $field_id); + + $lead_table = self::get_lead_table_name(); + $lead_detail_table = self::get_lead_details_table_name(); + $lead_detail_long_table = self::get_lead_details_long_table_name(); + + + $form = self::get_form_meta($form_id); + + $field_type = ""; + + //Deleting field from form meta + $count = sizeof($form["fields"]); + for($i = $count-1; $i >= 0; $i--){ + $field = $form["fields"][$i]; + + //Deleting associated conditional logic rules + if(!empty($field["conditionalLogic"])){ + $rule_count = sizeof($field["conditionalLogic"]["rules"]); + for($j = $rule_count-1; $j >= 0; $j--){ + if($field["conditionalLogic"]["rules"][$j]["fieldId"] == $field_id){ + unset($form["fields"][$i]["conditionalLogic"]["rules"][$j]); + } + } + $form["fields"][$i]["conditionalLogic"]["rules"] = array_values($form["fields"][$i]["conditionalLogic"]["rules"]); + + //If there aren't any rules, remove the conditional logic + if(sizeof($form["fields"][$i]["conditionalLogic"]["rules"]) == 0){ + $form["fields"][$i]["conditionalLogic"] = false; + } + } + + //Deleting field from form meta + if($field["id"] == $field_id){ + $field_type = $field["type"]; + unset($form["fields"][$i]); + } + + } + + //removing post content and title template if the field being deleted is a post content field or post title field + if($field_type == "post_content"){ + $form["postContentTemplateEnabled"] = false; + $form["postContentTemplate"] = ""; + } + else if($field_type == "post_title"){ + $form["postTitleTemplateEnabled"] = false; + $form["postTitleTemplate"] = ""; + } + + //Deleting associated routing rules + if(!empty($form["notification"]["routing"])){ + $routing_count = sizeof($form["notification"]["routing"]); + for($j = $routing_count-1; $j >= 0; $j--){ + if(intval($form["notification"]["routing"][$j]["fieldId"]) == $field_id){ + unset($form["notification"]["routing"][$j]); + } + } + $form["notification"]["routing"] = array_values($form["notification"]["routing"]); + + //If there aren't any routing, remove it + if(sizeof($form["notification"]["routing"]) == 0){ + $form["notification"]["routing"] = null; + } + } + + $form["fields"] = array_values($form["fields"]); + self::update_form_meta($form_id, $form); + + //Delete from grid column meta + $columns = self::get_grid_column_meta($form_id); + $count = sizeof($columns); + for($i = $count -1; $i >=0; $i--) + { + if(intval(rgar($columns,$i)) == intval($field_id)){ + unset($columns[$i]); + } + } + self::update_grid_column_meta($form_id, $columns); + + //Delete from detail long + $sql = $wpdb->prepare(" DELETE FROM $lead_detail_long_table + WHERE lead_detail_id IN( + SELECT id FROM $lead_detail_table WHERE form_id=%d AND field_number >= %d AND field_number < %d + )", $form_id, $field_id, $field_id + 1); + $wpdb->query($sql); + + //Delete from lead details + $sql = $wpdb->prepare("DELETE FROM $lead_detail_table WHERE form_id=%d AND field_number >= %d AND field_number < %d", $form_id, $field_id, $field_id + 1); + $wpdb->query($sql); + + //Delete leads with no details + $sql = $wpdb->prepare(" DELETE FROM $lead_table + WHERE form_id=%d + AND id NOT IN( + SELECT DISTINCT(lead_id) FROM $lead_detail_table WHERE form_id=%d + )", $form_id, $form_id); + $wpdb->query($sql); + + do_action("gform_after_delete_field", $form_id, $field_id); + } + + public static function delete_lead($lead_id){ + global $wpdb; + + if(!GFCommon::current_user_can_any("gravityforms_delete_entries")) + die(__("You don't have adequate permission to delete entries.", "gravityforms")); + + do_action("gform_delete_lead", $lead_id); + + $lead_table = self::get_lead_table_name(); + $lead_notes_table = self::get_lead_notes_table_name(); + $lead_detail_table = self::get_lead_details_table_name(); + $lead_detail_long_table = self::get_lead_details_long_table_name(); + + //deleting uploaded files + self::delete_files($lead_id); + + //Delete from detail long + $sql = $wpdb->prepare(" DELETE FROM $lead_detail_long_table + WHERE lead_detail_id IN( + SELECT id FROM $lead_detail_table WHERE lead_id=%d + )", $lead_id); + $wpdb->query($sql); + + //Delete from lead details + $sql = $wpdb->prepare("DELETE FROM $lead_detail_table WHERE lead_id=%d", $lead_id); + $wpdb->query($sql); + + //Delete from lead notes + $sql = $wpdb->prepare("DELETE FROM $lead_notes_table WHERE lead_id=%d", $lead_id); + $wpdb->query($sql); + + //Delete from lead meta + gform_delete_meta($lead_id); + + //Delete from lead + $sql = $wpdb->prepare("DELETE FROM $lead_table WHERE id=%d", $lead_id); + $wpdb->query($sql); + + } + + public static function add_note($lead_id, $user_id, $user_name, $note){ + global $wpdb; + + $table_name = self::get_lead_notes_table_name(); + $sql = $wpdb->prepare("INSERT INTO $table_name(lead_id, user_id, user_name, value, date_created) values(%d, %d, %s, %s, utc_timestamp())", $lead_id, $user_id, $user_name, $note); + + $wpdb->query($sql); + } + + public static function delete_note($note_id){ + global $wpdb; + + if(!GFCommon::current_user_can_any("gravityforms_edit_entry_notes")) + die(__("You don't have adequate permission to delete notes.", "gravityforms")); + + $table_name = self::get_lead_notes_table_name(); + $sql = $wpdb->prepare("DELETE FROM $table_name WHERE id=%d", $note_id); + $wpdb->query($sql); + } + + public static function delete_notes($notes){ + if(!is_array($notes)) + return; + + foreach($notes as $note_id){ + self::delete_note($note_id); + } + } + + public static function get_ip(){ + $ip = rgget("HTTP_X_FORWARDED_FOR", $_SERVER); + if (!$ip) + $ip = rgget("REMOTE_ADDR", $_SERVER); + + $ip_array = explode(",", $ip); //HTTP_X_FORWARDED_FOR can return a comma separated list of IPs. Using the first one. + return $ip_array[0]; + } + + public static function save_lead($form, &$lead){ + global $wpdb; + + if(IS_ADMIN && !GFCommon::current_user_can_any("gravityforms_edit_entries")) + die(__("You don't have adequate permission to edit entries.", "gravityforms")); + + $lead_detail_table = self::get_lead_details_table_name(); + + //Inserting lead if null + if($lead == null){ + global $current_user; + $user_id = $current_user && $current_user->ID ? $current_user->ID : 'NULL'; + + $lead_table = RGFormsModel::get_lead_table_name(); + $user_agent = strlen($_SERVER["HTTP_USER_AGENT"]) > 250 ? substr($_SERVER["HTTP_USER_AGENT"], 0, 250) : $_SERVER["HTTP_USER_AGENT"]; + $currency = GFCommon::get_currency(); + $wpdb->query($wpdb->prepare("INSERT INTO $lead_table(form_id, ip, source_url, date_created, user_agent, currency, created_by) VALUES(%d, %s, %s, utc_timestamp(), %s, %s, {$user_id})", $form["id"], self::get_ip(), self::get_current_page_url(), $user_agent, $currency)); + + //reading newly created lead id + $lead_id = $wpdb->insert_id; + $lead = array("id" => $lead_id); + } + + $current_fields = $wpdb->get_results($wpdb->prepare("SELECT id, field_number FROM $lead_detail_table WHERE lead_id=%d", $lead["id"])); + $original_post_id = rgget("post_id", $lead); + + $total_field = null; + $calculation_fields = array(); + $recalculate_total = false; + + foreach($form["fields"] as $field){ + + //Ignore fields that are marked as display only + if(rgget("displayOnly", $field) && $field["type"] != "password"){ + continue; + } + + //ignore pricing fields in the entry detail + if(RG_CURRENT_VIEW == "entry" && GFCommon::is_pricing_field($field["type"])){ + continue; + } + + //process total field after all fields have been saved + if($field["type"] == "total"){ + $total_field = $field; + continue; + } + + // process calculation fields after all fields have been saved + if(GFCommon::has_field_calculation($field)) { + $calculation_fields[] = $field; + continue; + } + + //only save fields that are not hidden (except on entry screen) + if(RG_CURRENT_VIEW == "entry" || !RGFormsModel::is_field_hidden($form, $field, array()) ){ + + if($field['type'] == 'post_category') + $field = GFCommon::add_categories_as_choices($field, ''); + + if(isset($field["inputs"]) && is_array($field["inputs"])){ + + foreach($field["inputs"] as $input) + self::save_input($form, $field, $lead, $current_fields, $input["id"]); + } + else{ + self::save_input($form, $field, $lead, $current_fields, $field["id"]); + } + } + } + + if(!empty($calculation_fields)) { + foreach($calculation_fields as $calculation_field) { + + if(isset($calculation_field["inputs"]) && is_array($calculation_field["inputs"])){ + foreach($calculation_field["inputs"] as $input) { + self::save_input($form, $calculation_field, $lead, $current_fields, $input["id"]); + } + } + else{ + self::save_input($form, $calculation_field, $lead, $current_fields, $calculation_field["id"]); + } + + } + self::refresh_product_cache($form, $lead = RGFormsModel::get_lead($lead['id'])); + } + + //saving total field as the last field of the form. + if($total_field) { + self::save_input($form, $total_field, $lead, $current_fields, $total_field["id"]); + } + + } + + public static function create_lead($form) { + global $current_user; + + $calculation_fields = array(); + + $lead = array(); + $lead['id'] = null; + $lead['post_id'] = null; + $lead['date_created'] = null; + $lead['form_id'] = $form['id']; + $lead['ip'] = self::get_ip(); + $lead['source_url'] = self::get_current_page_url(); + $lead['user_agent'] = strlen($_SERVER['HTTP_USER_AGENT']) > 250 ? substr($_SERVER['HTTP_USER_AGENT'], 0, 250) : $_SERVER['HTTP_USER_AGENT']; + $lead['currency'] = GFCommon::get_currency(); + $lead['created_by'] = $current_user && $current_user->ID ? $current_user->ID : 'NULL'; + + foreach($form['fields'] as $field) { + + // ignore fields that are marked as display only + if(rgget('displayOnly', $field) && $field['type'] != 'password'){ + continue; + } + + // process total field after all fields have been saved + if($field['type'] == 'total'){ + $total_field = $field; + continue; + } + + // process calculation fields after all fields have been saved + if(GFCommon::has_field_calculation($field)) { + $calculation_fields[] = $field; + continue; + } + + // only save fields that are not hidden + if(!RGFormsModel::is_field_hidden($form, $field, array()) ){ + + if($field['type'] == 'post_category') + $field = GFCommon::add_categories_as_choices($field, ''); + + if(isset($field['inputs']) && is_array($field['inputs'])){ + foreach($field['inputs'] as $input) { + $lead[(string)$input['id']] = self::get_prepared_input_value($form, $field, $lead, $input["id"]); + } + } + else { + $lead[$field['id']] = self::get_prepared_input_value($form, $field, $lead, $field["id"]); + } + } + } + + if(!empty($calculation_fields)) { + foreach($calculation_fields as $field) { + if(isset($field["inputs"]) && is_array($field["inputs"])){ + foreach($field["inputs"] as $input) { + $lead[(string)$input['id']] = self::get_prepared_input_value($form, $field, $lead, $input["id"]); + } + } + else{ + $lead[$field['id']] = self::get_prepared_input_value($form, $field, $lead, $field["id"]); + } + } + self::refresh_product_cache($form, $lead); + } + + // saving total field as the last field of the form. + if(isset($total_field)) { + $lead[$total_field['id']] = self::get_prepared_input_value($form, $total_field, $lead, $total_field["id"]); + } + + return $lead; + } + + public static function get_prepared_input_value($form, $field, $lead, $input_id) { + + $input_name = "input_" . str_replace('.', '_', $input_id); + $value = rgpost($input_name); + + if(empty($value) && rgar($field, "adminOnly") && !IS_ADMIN){ + $value = self::get_default_value($field, $input_id); + } + + switch(self::get_input_type($field)) { + + case "post_image": + $file_info = self::get_temp_filename($form['id'], $input_name); + $file_path = self::get_file_upload_path($form['id'], $file_info["uploaded_filename"]); + $url = $file_path['url']; + + $image_title = isset($_POST["{$input_name}_1"]) ? strip_tags($_POST["{$input_name}_1"]) : ""; + $image_caption = isset($_POST["{$input_name}_4"]) ? strip_tags($_POST["{$input_name}_4"]) : ""; + $image_description = isset($_POST["{$input_name}_7"]) ? strip_tags($_POST["{$input_name}_7"]) : ""; + + $value = !empty($url) ? $url . "|:|" . $image_title . "|:|" . $image_caption . "|:|" . $image_description : ""; + break; + + case "fileupload" : + $file_info = self::get_temp_filename($form['id'], $input_name); + $file_path = self::get_file_upload_path($form['id'], $file_info["uploaded_filename"]); + $value = $file_path['url']; + break; + + default: + + // processing values so that they are in the correct format for each input type + $value = self::prepare_value($form, $field, $value, $input_name, rgar($lead, 'id'), $lead); + + } + + return apply_filters("gform_save_field_value", $value, $lead, $field, $form); + } + + public static function refresh_product_cache($form, $lead, $use_choice_text = false, $use_admin_label = false) { + + $cache_options = array( + array(false, false), + array(false, true), + array(true, false), + array(true, true) + ); + + foreach($cache_options as $cache_option) { + list($use_choice_text, $use_admin_label) = $cache_option; + if( gform_get_meta( rgar($lead,'id'), "gform_product_info_{$use_choice_text}_{$use_admin_label}") ) { + gform_delete_meta(rgar($lead,'id'), "gform_product_info_{$use_choice_text}_{$use_admin_label}"); + GFCommon::get_product_fields($form, $lead, $use_choice_text, $use_admin_label); + } + } + + } + + public static function is_field_hidden($form, $field, $field_values, $lead=null){ + + $section = self::get_section($form, $field["id"]); + $section_display = self::get_field_display($form, $section, $field_values, $lead); + + //if section is hidden, hide field no matter what. if section is visible, see if field is supposed to be visible + if($section_display == "hide") + return true; + else if(self::is_page_hidden($form, rgar($field,"page_number"), $field_values, $lead)){ + return true; + } + else{ + $display = self::get_field_display($form, $field, $field_values, $lead); + return $display == "hide"; + } + } + + public static function is_page_hidden($form, $page_number, $field_values, $lead=null){ + $page = self::get_page_by_number($form, $page_number); + + if(!$page) + return false; + + $display = self::get_field_display($form, $page, $field_values, $lead); + return $display == "hide"; + } + + public static function get_page_by_number($form, $page_number){ + foreach($form["fields"] as $field){ + if($field["type"] == "page" && $field["pageNumber"] == $page_number) + return $field; + } + return null; + } + + public static function get_page_by_field($form, $field){ + return get_page_by_number($field["page_number"]); + } + + //gets the section that the specified field belongs to, or null if none + public static function get_section($form, $field_id){ + $current_section = null; + foreach($form["fields"] as $field){ + if($field["type"] == "section") + $current_section = $field; + + //stop section at a page break (sections don't go cross page) + if($field["type"] == "page") + $current_section = null; + + if($field["id"] == $field_id) + return $current_section; + } + + return null; + } + + public static function is_value_match($field_value, $target_value, $operation="is", $source_field=null){ + if($source_field && $source_field["type"] == "post_category"){ + $field_value = GFCommon::prepare_post_category_value($field_value, $source_field, "conditional_logic"); + } + + if(is_array($field_value)){ + foreach($field_value as $val){ + if(self::matches_operation(GFCommon::get_selection_value($val), $target_value, $operation)) + return true; + } + } + else if(self::matches_operation(GFCommon::get_selection_value($field_value), $target_value, $operation)){ + return true; + } + + return false; + } + + private static function try_convert_float($text){ + global $wp_locale; + $number_format = $wp_locale->number_format['decimal_point'] == "," ? "decimal_comma" : "decimal_dot"; + + if(GFCommon::is_numeric($text, $number_format)) + return GFCommon::clean_number($text, $number_format); + + return $text; + } + + public static function matches_operation($val1, $val2, $operation){ + + $val1 = !empty($val1) ? strtolower($val1) : ""; + $val2 = !empty($val2) ? strtolower($val2) : ""; + + switch($operation){ + case "is" : + return $val1 == $val2; + break; + + case "isnot" : + return $val1 != $val2; + break; + + case "greater_than": + case ">" : + $val1 = self::try_convert_float($val1); + $val2 = self::try_convert_float($val2); + + return $val1 > $val2; + break; + + case "less_than": + case "<" : + $val1 = self::try_convert_float($val1); + $val2 = self::try_convert_float($val2); + + return $val1 < $val2; + break; + + case "contains" : + return !empty($val2) && strpos($val1, $val2) !== false; + break; + + case "starts_with" : + return !empty($val2) && strpos($val1, $val2) === 0; + break; + + case "ends_with" : + $start = strlen($val1) - strlen($val2); + if($start < 0) + return false; + + $tail = substr($val1, $start); + return $val2 == $tail; + break; + } + + + return false; + } + + private static function get_field_display($form, $field, $field_values, $lead=null){ + + $logic = rgar($field, "conditionalLogic"); + + //if this field does not have any conditional logic associated with it, it won't be hidden + if(empty($logic)) + return "show"; + + $match_count = 0; + foreach($logic["rules"] as $rule){ + $source_field = RGFormsModel::get_field($form, $rule["fieldId"]); + $field_value = empty($lead) ? self::get_field_value($source_field, $field_values) : self::get_lead_field_value($lead, $source_field); + + $is_value_match = self::is_value_match($field_value, $rule["value"], $rule["operator"], $source_field); + + if($is_value_match) + $match_count++; + } + + $do_action = ($logic["logicType"] == "all" && $match_count == sizeof($logic["rules"]) ) || ($logic["logicType"] == "any" && $match_count > 0); + $is_hidden = ($do_action && $logic["actionType"] == "hide") || (!$do_action && $logic["actionType"] == "show"); + + return $is_hidden ? "hide" : "show"; + } + + public static function get_custom_choices(){ + $choices = get_option("gform_custom_choices"); + if(!$choices) + $choices = array(); + + return $choices; + } + + public static function delete_custom_choice($name){ + $choices = self::get_custom_choices(); + if(array_key_exists($name, $choices)) + unset($choices[$name]); + + update_option("gform_custom_choices", $choices); + } + + public static function save_custom_choice($previous_name, $new_name, $choices){ + $all_choices = self::get_custom_choices(); + + if(array_key_exists($previous_name, $all_choices)) + unset($all_choices[$previous_name]); + + $all_choices[$new_name] = $choices; + + update_option("gform_custom_choices", $all_choices); + } + + public static function get_field_value($field, $field_values = array(), $get_from_post=true){ + + if($field['type'] == 'post_category') + $field = GFCommon::add_categories_as_choices($field, ''); + + $value = array(); + switch(RGFormsModel::get_input_type($field)){ + case "post_image" : + $value[$field["id"] . ".1"] = self::get_input_value($field, "input_" . $field["id"] . "_1", $get_from_post); + $value[$field["id"] . ".4"] = self::get_input_value($field, "input_" . $field["id"] . "_4", $get_from_post); + $value[$field["id"] . ".7"] = self::get_input_value($field, "input_" . $field["id"] . "_7", $get_from_post); + break; + case "checkbox" : + $parameter_values = self::get_parameter_value($field["inputName"], $field_values, $field); + if(!empty($parameter_values) && !is_array($parameter_values)){ + $parameter_values = explode(",", $parameter_values); + } + + if(!is_array($field["inputs"])) + return ""; + + $choice_index = 0; + foreach($field["inputs"] as $input){ + if(!empty($_POST["is_submit_" . $field["formId"]]) && $get_from_post){ + $value[strval($input["id"])] = rgpost("input_" . str_replace('.', '_', strval($input["id"]))); + } + else{ + if(is_array($parameter_values)){ + foreach($parameter_values as $item){ + $item = trim($item); + if(self::choice_value_match($field, $field["choices"][$choice_index], $item)) + { + $value[$input["id"] . ""] = $item; + break; + } + } + } + } + $choice_index++; + } + + break; + + case "list" : + $value = self::get_input_value($field, "input_" . $field["id"], rgar($field, "inputName"), $field_values, $get_from_post); + $value = self::create_list_array($field, $value); + break; + + default: + + if(isset($field["inputs"]) && is_array($field["inputs"])){ + foreach($field["inputs"] as $input){ + $value[strval($input["id"])] = self::get_input_value($field, "input_" . str_replace('.', '_', strval($input["id"])), RGForms::get("name", $input), $field_values, $get_from_post); + } + } + else{ + $value = self::get_input_value($field, "input_" . $field["id"], rgar($field, "inputName"), $field_values, $get_from_post); + } + break; + } + + return $value; + } + + private static function get_input_value($field, $standard_name, $custom_name = "", $field_values=array(), $get_from_post=true){ + if(!empty($_POST["is_submit_" . rgar($field,"formId")]) && $get_from_post){ + return rgpost($standard_name); + } + else if(rgar($field, "allowsPrepopulate")){ + return self::get_parameter_value($custom_name, $field_values, $field); + } + } + + public static function get_parameter_value($name, $field_values, $field){ + $value = stripslashes(rgget($name)); + if(empty($value)) + $value = rgget($name, $field_values); + + //converting list format + if(RGFormsModel::get_input_type($field) == "list"){ + + //transforms this: col1|col2,col1b|col2b into this: col1,col2,col1b,col2b + $column_count = count(rgar($field,"choices")); + + $rows = explode(",", $value); + $ary_rows = array(); + if(!empty($rows)){ + foreach($rows as $row) + $ary_rows = array_merge($ary_rows, rgexplode("|", $row, $column_count)); + + $value = $ary_rows; + } + } + + return apply_filters("gform_field_value_$name", $value); + } + + public static function get_default_value($field, $input_id){ + if(!is_array(rgar($field,"choices"))){ + if(is_array(rgar($field, "inputs"))){ + $input = RGFormsModel::get_input($field, $input_id); + return rgar($input, "defaultValue"); + } + else{ + return IS_ADMIN ? $field["defaultValue"] : GFCommon::replace_variables_prepopulate($field["defaultValue"]); + } + } + else if($field["type"] == "checkbox"){ + for($i=0, $count=sizeof($field["inputs"]); $i<$count; $i++){ + $input = $field["inputs"][$i]; + $choice = $field["choices"][$i]; + if($input["id"] == $input_id && $choice["isSelected"]){ + return $choice["value"]; + } + } + return ""; + } + else{ + foreach($field["choices"] as $choice){ + if($choice["isSelected"] || $field["type"] == "post_category") + return $choice["value"]; + } + return ""; + } + + } + + public static function get_input_type($field){ + return empty($field["inputType"]) ? rgar($field,"type") : $field["inputType"]; + } + + private static function get_post_field_value($field, $lead){ + + if(is_array($field["inputs"])){ + $value = array(); + foreach($field["inputs"] as $input){ + $val = isset($lead[strval($input["id"])]) ? $lead[strval($input["id"])] : ""; + if(!empty($val)) + $value[] = $val; + } + $value = implode(",", $value); + } + else{ + $value = isset($lead[$field["id"]]) ? $lead[$field["id"]] : ""; + } + return $value; + } + + private static function get_post_fields($form, $lead) { + + $post_data = array(); + $post_data["post_custom_fields"] = array(); + $post_data["tags_input"] = array(); + $categories = array(); + $images = array(); + + foreach($form["fields"] as $field){ + + if($field['type'] == 'post_category') + $field = GFCommon::add_categories_as_choices($field, ''); + + $value = self::get_post_field_value($field, $lead); + + switch($field["type"]){ + case "post_title" : + case "post_excerpt" : + case "post_content" : + $post_data[$field["type"]] = $value; + break; + + case "post_tags" : + $tags = explode(",", $value); + if(is_array($tags) && sizeof($tags) > 0) + $post_data["tags_input"] = array_merge($post_data["tags_input"], $tags) ; + break; + + case "post_custom_field" : + $meta_name = $field["postCustomFieldName"]; + if(!isset($post_data["post_custom_fields"][$meta_name])){ + $post_data["post_custom_fields"][$meta_name] = $value; + } + else if(!is_array($post_data["post_custom_fields"][$meta_name])){ + $post_data["post_custom_fields"][$meta_name] = array($post_data["post_custom_fields"][$meta_name], $value); + } + else{ + $post_data["post_custom_fields"][$meta_name][] = $value; + } + + break; + + case "post_category" : + foreach(explode(',', $value) as $cat_string) { + list($cat_name, $cat_id) = rgexplode(":", $cat_string, 2); + array_push($categories, $cat_id); + } + break; + + case "post_image" : + $ary = !empty($value) ? explode("|:|", $value) : array(); + $url = count($ary) > 0 ? $ary[0] : ""; + $title = count($ary) > 1 ? $ary[1] : ""; + $caption = count($ary) > 2 ? $ary[2] : ""; + $description = count($ary) > 3 ? $ary[3] : ""; + + array_push($images, array("field_id" => $field["id"], "url" => $url, "title" => $title, "description" => $description, "caption" => $caption)); + break; + } + } + + $post_data["post_status"] = rgar($form, "postStatus"); + $post_data["post_category"] = !empty($categories) ? $categories : array(rgar($form, 'postCategory')); + $post_data["images"] = $images; + + //setting current user as author depending on settings + $post_data["post_author"] = $form["useCurrentUserAsAuthor"] && !empty($lead["created_by"]) ? $lead["created_by"] : $form["postAuthor"]; + + return $post_data; + } + + public static function get_custom_field_names(){ + global $wpdb; + $keys = $wpdb->get_col( " + SELECT meta_key + FROM $wpdb->postmeta + WHERE meta_key NOT LIKE '\_%' + GROUP BY meta_key + ORDER BY meta_id DESC"); + + if ( $keys ) + natcasesort($keys); + + return $keys; + } + + public static function get_input_masks(){ + + $masks = array( + 'US Phone' => '(999) 999-9999', + 'US Phone + Ext' => '(999) 999-9999? x99999', + 'Date' => '99/99/9999', + 'Tax ID' => '99-9999999', + 'SSN' => '999-99-9999', + 'Zip Code' => '99999', + 'Full Zip Code' => '99999?-9999' + ); + + return apply_filters('gform_input_masks', $masks); + } + + private static function get_default_post_title(){ + global $wpdb; + $title = "Untitled"; + $count = 1; + + $titles = $wpdb->get_col("SELECT post_title FROM $wpdb->posts WHERE post_title like '%Untitled%'"); + $titles = array_values($titles); + while(in_array($title, $titles)){ + $title = "Untitled_$count"; + $count++; + } + return $title; + } + + public static function prepare_date($date_format, $value){ + $format = empty($date_format) ? "mdy" : $date_format; + $date_info = GFCommon::parse_date($value, $format); + if(!empty($date_info)) + $value = sprintf("%s-%02d-%02d", $date_info["year"], $date_info["month"], $date_info["day"]); + else + $value = ""; + + return $value; + } + + /** + * Prepare the value before saving it to the lead. + * + * @param mixed $form + * @param mixed $field + * @param mixed $value + * @param mixed $input_name + * @param mixed $lead_id the current lead ID, used for fields that are processed after other fields have been saved (ie Total, Calculations) + * @param mixed $lead passed by the RGFormsModel::create_lead() method, lead ID is not available for leads created by this function + */ + public static function prepare_value($form, $field, $value, $input_name, $lead_id, $lead = array()){ + $form_id = $form["id"]; + + $input_type = self::get_input_type($field); + switch($input_type) + { + case "total" : + $lead = empty($lead) ? RGFormsModel::get_lead($lead_id) : $lead; + $value = GFCommon::get_order_total($form, $lead); + break; + + case "calculation" : + // ignore submitted value and recalculate price in backend + list(,,$input_id) = rgexplode("_", $input_name, 3); + if($input_id == 2) { + require_once(GFCommon::get_base_path() . '/currency.php'); + $currency = new RGCurrency(GFCommon::get_currency()); + $lead = empty($lead) ? RGFormsModel::get_lead($lead_id) : $lead; + $value = $currency->to_money(GFCommon::calculate($field, $form, $lead)); + } + break; + + case "phone" : + if($field["phoneFormat"] == "standard" && preg_match('/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/', $value, $matches)) + $value = sprintf("(%s)%s-%s", $matches[1], $matches[2], $matches[3]); + break; + + case "time": + + if(!is_array($value) && !empty($value)){ + preg_match('/^(\d*):(\d*) ?(.*)$/', $value, $matches); + $value = array(); + $value[0] = $matches[1]; + $value[1] = $matches[2]; + $value[2] = rgar($matches,3); + } + + $hour = empty($value[0]) ? "0" : strip_tags($value[0]); + $minute = empty($value[1]) ? "0" : strip_tags($value[1]); + $ampm = strip_tags(rgar($value,2)); + if(!empty($ampm)) + $ampm = " $ampm"; + + if(!(empty($hour) && empty($minute))) + $value = sprintf("%02d:%02d%s", $hour, $minute, $ampm); + else + $value = ""; + + break; + + case "date" : + $value = self::prepare_date($field["dateFormat"], $value); + + break; + + case "post_image": + $url = self::get_fileupload_value($form_id, $input_name); + $image_title = isset($_POST["{$input_name}_1"]) ? strip_tags($_POST["{$input_name}_1"]) : ""; + $image_caption = isset($_POST["{$input_name}_4"]) ? strip_tags($_POST["{$input_name}_4"]) : ""; + $image_description = isset($_POST["{$input_name}_7"]) ? strip_tags($_POST["{$input_name}_7"]) : ""; + + $value = !empty($url) ? $url . "|:|" . $image_title . "|:|" . $image_caption . "|:|" . $image_description : ""; + break; + + case "fileupload" : + $value = self::get_fileupload_value($form_id, $input_name); + break; + + case "number" : + $lead = empty($lead) ? RGFormsModel::get_lead($lead_id) : $lead; + $value = GFCommon::has_field_calculation($field) ? GFCommon::round_number(GFCommon::calculate($field, $form, $lead), rgar($field, "calculationRounding")) : GFCommon::clean_number($value, rgar($field, "numberFormat")); + break; + + case "website" : + if($value == "http://") + $value = ""; + break; + + case "list" : + if(GFCommon::is_empty_array($value)) + $value = ""; + else{ + $value = self::create_list_array($field, $value); + $value = serialize($value); + } + break; + + case "radio" : + if(rgar($field, 'enableOtherChoice') && $value == 'gf_other_choice') + $value = rgpost("input_{$field['id']}_other"); + break; + + case "multiselect" : + $value = empty($value) ? "" : implode(",", $value); + break; + + case "creditcard" : + //saving last 4 digits of credit card + list($input_token, $field_id_token, $input_id) = rgexplode("_", $input_name, 3); + if($input_id == "1"){ + $value = str_replace(" ", "", $value); + $card_number_length = strlen($value); + $value = substr($value, -4, 4); + $value = str_pad($value, $card_number_length, "X", STR_PAD_LEFT); + } + else if($input_id == "4") + { + $card_number = rgpost("input_{$field_id_token}_1"); + $card_type = GFCommon::get_card_type($card_number); + $value = $card_type ? $card_type["name"] : ""; + } + else{ + $value = ""; + } + + break; + + default: + + //allow HTML for certain field types + $allow_html = in_array($field["type"], array("post_custom_field", "post_title", "post_content", "post_excerpt", "post_tags")) || in_array($input_type, array("checkbox", "radio")) ? true : false; + $allowable_tags = apply_filters("gform_allowable_tags_{$form_id}", apply_filters("gform_allowable_tags", $allow_html, $field, $form_id), $field, $form_id); + + if($allowable_tags !== true) + $value = strip_tags($value, $allowable_tags); + + break; + } + + // special format for Post Category fields + if($field['type'] == 'post_category') { + + $full_values = array(); + + if(!is_array($value)) + $value = explode(',', $value); + + foreach($value as $cat_id) { + $cat = get_term($cat_id, 'category'); + $full_values[] = !is_wp_error($cat) && is_object($cat) ? $cat->name . ":" . $cat_id : ""; + } + + $value = implode(',', $full_values); + } + + //do not save price fields with blank price + if(rgar($field, "enablePrice")){ + $ary = explode("|", $value); + $label = count($ary) > 0 ? $ary[0] : ""; + $price = count($ary) > 1 ? $ary[1] : ""; + + $is_empty = (strlen(trim($price)) <= 0); + if($is_empty) + $value = ""; + } + + return $value; + } + + private static function create_list_array($field, $value){ + if(!rgar($field,"enableColumns")){ + return $value; + } + else{ + $col_count = count(rgar($field, "choices")); + $rows = array(); + + $row_count = count($value)/$col_count; + + $col_index = 0; + for($i=0; $i<$row_count; $i++){ + $row = array(); + foreach($field["choices"] as $column){ + $row[$column["text"]] = $value[$col_index]; + $col_index++; + } + $rows[] = $row; + } + return $rows; + } + } + + private static function get_fileupload_value($form_id, $input_name){ + global $_gf_uploaded_files; + if(empty($_gf_uploaded_files)) + $_gf_uploaded_files = array(); + + if(!isset($_gf_uploaded_files[$input_name])){ + + //check if file has already been uploaded by previous step + $file_info = self::get_temp_filename($form_id, $input_name); + $temp_filepath = self::get_upload_path($form_id) . "/tmp/" . $file_info["temp_filename"]; + if($file_info && file_exists($temp_filepath)){ + $_gf_uploaded_files[$input_name] = self::move_temp_file($form_id, $file_info); + } + else if (!empty($_FILES[$input_name]["name"])){ + $_gf_uploaded_files[$input_name] = self::upload_file($form_id, $_FILES[$input_name]); + } + } + + return rgget($input_name, $_gf_uploaded_files); + } + + public static function get_form_unique_id($form_id){ + if(RGForms::post("gform_submit") == $form_id) + return RGForms::post("gform_unique_id"); + else + return uniqid(); + } + + public static function get_temp_filename($form_id, $input_name){ + + $uploaded_filename = !empty($_FILES[$input_name]["name"]) ? $_FILES[$input_name]["name"] : ""; + + if(empty($uploaded_filename) && isset(self::$uploaded_files[$form_id])) + $uploaded_filename = rgget($input_name, self::$uploaded_files[$form_id]); + + if(empty($uploaded_filename)) + return false; + + $form_unique_id = self::get_form_unique_id($form_id); + $pathinfo = pathinfo($uploaded_filename); + return array("uploaded_filename" => $uploaded_filename, "temp_filename" => "{$form_unique_id}_{$input_name}.{$pathinfo["extension"]}"); + + } + + public static function get_choice_text($field, $value, $input_id=0){ + if(!is_array(rgar($field, "choices"))) + return $value; + + foreach($field["choices"] as $choice){ + if(is_array($value) && self::choice_value_match($field, $choice, $value[$input_id])){ + return $choice["text"]; + } + else if(!is_array($value) && self::choice_value_match($field, $choice, $value)){ + return $choice["text"]; + } + } + return is_array($value) ? "" : $value; + } + + + public static function choice_value_match($field, $choice, $value){ + + if($choice["value"] == $value){ + return true; + } + else if(rgget("enablePrice", $field)){ + $ary = explode("|", $value); + $val = count($ary) > 0 ? $ary[0] : ""; + $price = count($ary) > 1 ? $ary[1] : ""; + + if($val == $choice["value"]) + return true; + } + // add support for prepopulating multiselects @alex + else if(RGFormsModel::get_input_type($field) == 'multiselect') { + $values = explode(',', $value); + if(in_array($choice['value'], $values)) + return true; + } + return false; + } + + public static function choices_value_match($field, $choices, $value) { + foreach($choices as $choice){ + if(self::choice_value_match($field, $choice, $value)) + return true; + } + + return false; + } + + public static function create_post($form, &$lead){ + + $has_post_field = false; + foreach($form["fields"] as $field){ + $is_hidden = self::is_field_hidden($form, $field, array(), $lead); + if(!$is_hidden && in_array($field["type"], array("post_category","post_title","post_content","post_excerpt","post_tags","post_custom_fields","post_image"))){ + $has_post_field = true; + break; + } + } + + //if this form does not have any post fields, don't create a post + if(!$has_post_field) + return $lead; + + //processing post fields + $post_data = self::get_post_fields($form, $lead); + + //allowing users to change post fields before post gets created + $post_data = apply_filters("gform_post_data_{$form["id"]}", apply_filters("gform_post_data", $post_data , $form, $lead), $form, $lead); + + //adding default title if none of the required post fields are in the form (will make sure wp_insert_post() inserts the post) + if(empty($post_data["post_title"]) && empty($post_data["post_content"]) && empty($post_data["post_excerpt"])){ + $post_data["post_title"] = self::get_default_post_title(); + } + + //inserting post + $post_id = wp_insert_post($post_data); + + //adding form id and entry id hidden custom fields + add_post_meta($post_id, "_gform-form-id", $form["id"]); + add_post_meta($post_id, "_gform-entry-id", $lead["id"]); + + //creating post images + $post_images = array(); + foreach($post_data["images"] as $image){ + $image_meta= array( "post_excerpt" => $image["caption"], + "post_content" => $image["description"]); + + //adding title only if it is not empty. It will default to the file name if it is not in the array + if(!empty($image["title"])) + $image_meta["post_title"] = $image["title"]; + + if(!empty($image["url"])){ + $media_id = self::media_handle_upload($image["url"], $post_id, $image_meta); + + if($media_id){ + + //save media id for post body/title template variable replacement (below) + $post_images[$image["field_id"]] = $media_id; + $lead[$image["field_id"]] .= "|:|$media_id"; + + // set featured image + $field = RGFormsModel::get_field($form, $image["field_id"]); + if(rgar($field, 'postFeaturedImage')) + set_post_thumbnail($post_id, $media_id); + } + } + } + + //adding custom fields + foreach($post_data["post_custom_fields"] as $meta_name => $meta_value) { + if(!is_array($meta_value)) + $meta_value = array($meta_value); + + $meta_index = 0; + foreach($meta_value as $value){ + $custom_field = self::get_custom_field($form, $meta_name, $meta_index); + + //replacing template variables if template is enabled + if($custom_field && rgget("customFieldTemplateEnabled", $custom_field)){ + //replacing post image variables + $value = GFCommon::replace_variables_post_image($custom_field["customFieldTemplate"], $post_images, $lead); + + //replacing all other variables + $value = GFCommon::replace_variables($value, $form, $lead, false, false, false); + + // replace conditional shortcodes + $value = do_shortcode($value); + } + switch(RGFormsModel::get_input_type($custom_field)){ + case "list" : + $value = maybe_unserialize($value); + if(is_array($value)){ + foreach($value as $item){ + if(is_array($item)) + $item = implode("|", $item); + + if(!rgblank($item)) + add_post_meta($post_id, $meta_name, $item); + } + } + break; + + case "multiselect" : + case "checkbox" : + $value = explode(",", $value); + if(is_array($value)){ + foreach($value as $item){ + if(!rgblank($item)) + add_post_meta($post_id, $meta_name, $item); + } + } + break; + + case "date" : + $value = GFCommon::date_display($value, rgar($custom_field, "dateFormat")); + if(!rgblank($value)) + add_post_meta($post_id, $meta_name, $value); + break; + + default : + if(!rgblank($value)) + add_post_meta($post_id, $meta_name, $value); + break; + } + + $meta_index++; + } + } + + $has_content_field = sizeof(GFCommon::get_fields_by_type($form, array("post_content"))) > 0; + $has_title_field = sizeof(GFCommon::get_fields_by_type($form, array("post_title"))) > 0; + + //if a post field was configured with a content or title template, process template + if( (rgar($form, "postContentTemplateEnabled") && $has_content_field) || (rgar($form, "postTitleTemplateEnabled") && $has_title_field) ){ + + $post = get_post($post_id); + + if($form["postContentTemplateEnabled"] && $has_content_field){ + + //replacing post image variables + $post_content = GFCommon::replace_variables_post_image($form["postContentTemplate"], $post_images, $lead); + + //replacing all other variables + $post_content = GFCommon::replace_variables($post_content, $form, $lead, false, false, false); + + //updating post content + $post->post_content = $post_content; + } + + if($form["postTitleTemplateEnabled"] && $has_title_field){ + + //replacing post image variables + $post_title = GFCommon::replace_variables_post_image($form["postTitleTemplate"], $post_images, $lead); + + //replacing all other variables + $post_title = GFCommon::replace_variables($post_title, $form, $lead, false, false, false); + + // replace conditional shortcodes + $post_title = do_shortcode($post_title); + + //updating post + $post->post_title = $post_title; + + $post->post_name = $post_title; + } + + wp_update_post($post); + } + + //adding post format + if(current_theme_supports('post-formats') && rgar($form, 'postFormat')) { + + $formats = get_theme_support('post-formats'); + $post_format = rgar($form, 'postFormat'); + + if(is_array($formats)) { + $formats = $formats[0]; + if(in_array( $post_format, $formats)) { + set_post_format($post_id, $post_format); + } else if('0' == $post_format) { + set_post_format($post_id, false); + } + } + + } + + //update post_id field if a post was created + $lead["post_id"] = $post_id; + self::update_lead($lead); + + return $post_id; + } + + private static function get_custom_field($form, $meta_name, $meta_index){ + $custom_fields = GFCommon::get_fields_by_type($form, array("post_custom_field")); + + $index = 0; + foreach($custom_fields as $field){ + if($field["postCustomFieldName"] == $meta_name){ + if($meta_index == $index){ + return $field; + } + $index++; + } + } + return false; + } + + private static function copy_post_image($url, $post_id){ + $time = current_time('mysql'); + + if ( $post = get_post($post_id) ) { + if ( substr( $post->post_date, 0, 4 ) > 0 ) + $time = $post->post_date; + } + + //making sure there is a valid upload folder + if ( ! ( ( $uploads = wp_upload_dir($time) ) && false === $uploads['error'] ) ) + return false; + + $name = basename($url); + + $filename = wp_unique_filename($uploads['path'], $name); + + // Move the file to the uploads dir + $new_file = $uploads['path'] . "/$filename"; + + $uploaddir = wp_upload_dir(); + $path = str_replace($uploaddir["baseurl"], $uploaddir["basedir"], $url); + + if(!copy($path, $new_file)) + return false; + + // Set correct file permissions + $stat = stat( dirname( $new_file )); + $perms = $stat['mode'] & 0000666; + @ chmod( $new_file, $perms ); + + // Compute the URL + $url = $uploads['url'] . "/$filename"; + + if ( is_multisite() ) + delete_transient( 'dirsize_cache' ); + + $type = wp_check_filetype($new_file); + return array("file" => $new_file, "url" => $url, "type" => $type["type"]); + + } + + private static function media_handle_upload($url, $post_id, $post_data = array()) { + + //WordPress Administration API required for the media_handle_upload() function + require_once(ABSPATH . 'wp-admin/includes/image.php'); + + $name = basename($url); + + $file = self::copy_post_image($url, $post_id); + + if(!$file) + return false; + + $name_parts = pathinfo($name); + $name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $title = $name; + $content = ''; + + // use image exif/iptc data for title and caption defaults if possible + if ( $image_meta = @wp_read_image_metadata($file) ) { + if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) + $title = $image_meta['title']; + if ( trim( $image_meta['caption'] ) ) + $content = $image_meta['caption']; + } + + // Construct the attachment array + $attachment = array_merge( array( + 'post_mime_type' => $type, + 'guid' => $url, + 'post_parent' => $post_id, + 'post_title' => $title, + 'post_content' => $content, + ), $post_data ); + + // Save the data + $id = wp_insert_attachment($attachment, $file, $post_id); + if ( !is_wp_error($id) ) { + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + } + + return $id; + } + + public static function save_input($form, $field, &$lead, $current_fields, $input_id){ + global $wpdb; + + $lead_detail_table = self::get_lead_details_table_name(); + $lead_detail_long_table = self::get_lead_details_long_table_name(); + + $input_name = "input_" . str_replace('.', '_', $input_id); + $value = rgpost($input_name); + + //ignore file upload when nothing was sent in the admin + //ignore post fields in the admin + if(RG_CURRENT_VIEW == "entry" && self::get_input_type($field) == "fileupload" && empty($_FILES[$input_name]["name"])) + return; + else if(RG_CURRENT_VIEW == "entry" && in_array($field["type"], array("post_category","post_title","post_content","post_excerpt","post_tags","post_custom_field","post_image"))) + return; + + if(empty($value) && rgar($field, "adminOnly") && !IS_ADMIN){ + $value = self::get_default_value($field, $input_id); + } + + //processing values so that they are in the correct format for each input type + $value = self::prepare_value($form, $field, $value, $input_name, rgar($lead, "id")); + + //ignore fields that have not changed + if($lead != null && $value == rgget($input_id, $lead)) + return; + + if(!empty($value) || $value === "0"){ + + $value = apply_filters("gform_save_field_value", $value, $lead, $field, $form); + $truncated_value = substr($value, 0, GFORMS_MAX_FIELD_LENGTH); + + $lead_detail_id = self::get_lead_detail_id($current_fields, $input_id); + if($lead_detail_id > 0){ + + $wpdb->update($lead_detail_table, array("value" => $truncated_value), array("id" => $lead_detail_id), array("%s"), array("%d")); + + //insert, update or delete long value + $sql = $wpdb->prepare("SELECT count(0) FROM $lead_detail_long_table WHERE lead_detail_id=%d", $lead_detail_id); + $has_long_field = intval($wpdb->get_var($sql)) > 0; + + //delete long field if value has been shortened + if($has_long_field && strlen($value) <= GFORMS_MAX_FIELD_LENGTH){ + $sql = $wpdb->prepare("DELETE FROM $lead_detail_long_table WHERE lead_detail_id=%d", $lead_detail_id); + $wpdb->query($sql); + } + //update long field + else if($has_long_field){ + $wpdb->update($lead_detail_long_table, array("value" => $value), array("lead_detail_id" => $lead_detail_id), array("%s"), array("%d")); + } + //insert long field (value has been increased) + else if(strlen($value) > GFORMS_MAX_FIELD_LENGTH){ + $wpdb->insert($lead_detail_long_table, array("lead_detail_id" => $lead_detail_id, "value" => $value), array("%d", "%s")); + } + + } + else{ + $wpdb->insert($lead_detail_table, array("lead_id" => $lead["id"], "form_id" => $form["id"], "field_number" => $input_id, "value" => $truncated_value), array("%d", "%d", "%f", "%s")); + + if(strlen($value) > GFORMS_MAX_FIELD_LENGTH){ + + //read newly created lead detal id + $lead_detail_id = $wpdb->insert_id; + + //insert long value + $wpdb->insert($lead_detail_long_table, array("lead_detail_id" => $lead_detail_id, "value" => $value), array("%d", "%s")); + } + } + } + else{ + //Deleting details for this field + $sql = $wpdb->prepare("DELETE FROM $lead_detail_table WHERE lead_id=%d AND field_number BETWEEN %s AND %s ", $lead["id"], doubleval($input_id) - 0.001, doubleval($input_id) + 0.001); + $wpdb->query($sql); + + //Deleting long field if there is one + $sql = $wpdb->prepare("DELETE FROM $lead_detail_long_table + WHERE lead_detail_id IN( + SELECT id FROM $lead_detail_table WHERE lead_id=%d AND field_number BETWEEN %s AND %s + )", + $lead["id"], doubleval($input_id) - 0.001, doubleval($input_id) + 0.001); + $wpdb->query($sql); + } + } + + private static function move_temp_file($form_id, $tempfile_info){ + + $target = self::get_file_upload_path($form_id, $tempfile_info["uploaded_filename"]); + $source = self::get_upload_path($form_id) . "/tmp/" . $tempfile_info["temp_filename"]; + + if(rename($source, $target["path"])){ + self::set_permissions($target["path"]); + return $target["url"]; + } + else{ + return "FAILED (Temporary file could not be moved.)"; + } + } + + private static function set_permissions($path){ + + $permission = apply_filters("gform_file_permission", 0644, $path); + if($permission){ + chmod($path, $permission); + } + } + + public static function upload_file($form_id, $file){ + + $target = self::get_file_upload_path($form_id, $file["name"]); + if(!$target) + return "FAILED (Upload folder could not be created.)"; + + if(move_uploaded_file($file['tmp_name'], $target["path"])){ + self::set_permissions($target["path"]); + return $target["url"]; + } + else{ + return "FAILED (Temporary file could not be copied.)"; + } + } + + + public static function get_upload_root(){ + $dir = wp_upload_dir(); + + if($dir["error"]) + return null; + + return $dir["basedir"] . "/gravity_forms/"; + } + + public static function get_upload_url_root(){ + $dir = wp_upload_dir(); + + if($dir["error"]) + return null; + + return $dir["baseurl"] . "/gravity_forms/"; + } + + public static function get_upload_path($form_id){ + return self::get_upload_root() . $form_id . "-" . wp_hash($form_id); + } + + public static function get_upload_url($form_id){ + $dir = wp_upload_dir(); + return $dir["baseurl"] . "/gravity_forms/$form_id" . "-" . wp_hash($form_id); + } + + public static function get_file_upload_path($form_id, $file_name){ + if (get_magic_quotes_gpc()) + $file_name = stripslashes($file_name); + + // Where the file is going to be placed + // Generate the yearly and monthly dirs + $time = current_time( 'mysql' ); + $y = substr( $time, 0, 4 ); + $m = substr( $time, 5, 2 ); + $target_root = self::get_upload_path($form_id) . "/$y/$m/"; + $target_root_url = self::get_upload_url($form_id) . "/$y/$m/"; + + //adding filter to upload root path and url + $upload_root_info = array("path" => $target_root, "url" => $target_root_url); + $upload_root_info = apply_filters("gform_upload_path_{$form_id}", apply_filters("gform_upload_path", $upload_root_info, $form_id)); + + $target_root = $upload_root_info["path"]; + $target_root_url = $upload_root_info["url"]; + + if(!is_dir($target_root)){ + if(!wp_mkdir_p($target_root)) + return false; + + //adding index.html files to all subfolders + if(!file_exists(self::get_upload_root() . "/index.html")){ + GFCommon::recursive_add_index_file(self::get_upload_root()); + } + else if(!file_exists(self::get_upload_path($form_id) . "/index.html")){ + GFCommon::recursive_add_index_file(self::get_upload_path($form_id)); + } + else if(!file_exists(self::get_upload_path($form_id) . "/$y/index.html")){ + GFCommon::recursive_add_index_file(self::get_upload_path($form_id) . "/$y"); + } + else{ + GFCommon::recursive_add_index_file(self::get_upload_path($form_id) . "/$y/$m"); + } + + } + + //Add the original filename to our target path. + //Result is "uploads/filename.extension" + $file_info = pathinfo($file_name); + $extension = rgar($file_info, 'extension'); + $file_name = basename($file_info["basename"], "." . $extension); + + $file_name = sanitize_file_name($file_name); + + $counter = 1; + $target_path = $target_root . $file_name . "." . $extension; + while(file_exists($target_path)){ + $target_path = $target_root . $file_name . "$counter" . "." . $extension; + $counter++; + } + + //creating url + $target_url = str_replace($target_root, $target_root_url, $target_path); + + return array("path" => $target_path, "url" => $target_url); + } + + public static function drop_tables(){ + global $wpdb; + $wpdb->query("DROP TABLE IF EXISTS " . self::get_lead_details_long_table_name()); + $wpdb->query("DROP TABLE IF EXISTS " . self::get_lead_notes_table_name()); + $wpdb->query("DROP TABLE IF EXISTS " . self::get_lead_details_table_name()); + $wpdb->query("DROP TABLE IF EXISTS " . self::get_lead_table_name()); + $wpdb->query("DROP TABLE IF EXISTS " . self::get_form_view_table_name()); + $wpdb->query("DROP TABLE IF EXISTS " . self::get_meta_table_name()); + $wpdb->query("DROP TABLE IF EXISTS " . self::get_form_table_name()); + $wpdb->query("DROP TABLE IF EXISTS " . self::get_lead_meta_table_name()); + } + + public static function insert_form_view($form_id, $ip){ + global $wpdb; + $table_name = self::get_form_view_table_name(); + + $sql = $wpdb->prepare(" SELECT id FROM $table_name + WHERE form_id=%d + AND year(date_created) = year(utc_timestamp()) + AND month(date_created) = month(utc_timestamp()) + AND day(date_created) = day(utc_timestamp()) + AND hour(date_created) = hour(utc_timestamp())", $form_id); + + $id = $wpdb->get_var($sql, 0, 0); + + if(empty($id)) + $wpdb->query($wpdb->prepare("INSERT INTO $table_name(form_id, date_created, ip) values(%d, utc_timestamp(), %s)", $form_id, $ip)); + else + $wpdb->query($wpdb->prepare("UPDATE $table_name SET count = count+1 WHERE id=%d", $id)); + } + + public static function is_duplicate($form_id, $field, $value){ + global $wpdb; + $lead_detail_table_name = self::get_lead_details_table_name(); + $lead_table_name = self::get_lead_table_name(); + + switch(RGFormsModel::get_input_type($field)){ + case "time" : + $value = sprintf("%d:%02d %s", $value[0], $value[1], $value[2]); + break; + case "date" : + $value = self::prepare_date(rgar($field, "dateFormat"), $value); + break; + case "number" : + $value = GFCommon::clean_number($value, rgar($field, 'numberFormat')); + break; + } + + + $inner_sql_template = " SELECT %s as input, ld.lead_id + FROM $lead_detail_table_name ld + INNER JOIN $lead_table_name l ON l.id = ld.lead_id + WHERE l.form_id=%d AND ld.form_id=%d + AND ld.field_number between %s AND %s + AND ld.value=%s"; + + $sql = "SELECT count(distinct input) as match_count FROM ( "; + + $input_count = 1; + if(is_array($field["inputs"])){ + $input_count = sizeof($field["inputs"]); + foreach($field["inputs"] as $input){ + $union = empty($inner_sql) ? "" : " UNION ALL "; + $inner_sql .= $union . $wpdb->prepare($inner_sql_template, $input["id"], $form_id, $form_id, $input["id"] - 0.001, $input["id"] + 0.001, $value[$input["id"]]); + } + } + else{ + $inner_sql = $wpdb->prepare($inner_sql_template, $field["id"], $form_id, $form_id, doubleval($field["id"]) - 0.001, doubleval($field["id"]) + 0.001, $value); + } + + $sql .= $inner_sql . " + ) as count + GROUP BY lead_id + ORDER BY match_count DESC"; + + $count = apply_filters("gform_is_duplicate_{$form_id}", apply_filters('gform_is_duplicate', $wpdb->get_var($sql), $form_id, $field, $value), $form_id, $field, $value); + + return $count != null && $count >= $input_count; + } + + public static function get_lead($lead_id){ + global $wpdb; + $lead_detail_table_name = self::get_lead_details_table_name(); + $lead_table_name = self::get_lead_table_name(); + + $results = $wpdb->get_results($wpdb->prepare(" SELECT l.*, field_number, value + FROM $lead_table_name l + INNER JOIN $lead_detail_table_name ld ON l.id = ld.lead_id + WHERE l.id=%d", $lead_id)); + + $leads = self::build_lead_array($results, true); + return sizeof($leads) == 1 ? $leads[0] : false; + } + + public static function get_lead_notes($lead_id){ + global $wpdb; + $notes_table = self::get_lead_notes_table_name(); + + return $wpdb->get_results($wpdb->prepare(" SELECT n.id, n.user_id, n.date_created, n.value, ifnull(u.display_name,n.user_name) as user_name, u.user_email + FROM $notes_table n + LEFT OUTER JOIN $wpdb->users u ON n.user_id = u.id + WHERE lead_id=%d ORDER BY id", $lead_id)); + } + + public static function get_lead_field_value($lead, $field){ + if(empty($lead)) + return; + + $max_length = GFORMS_MAX_FIELD_LENGTH; + $value = array(); + if(is_array(rgar($field, "inputs"))){ + //making sure values submitted are sent in the value even if + //there isn't an input associated with it + $lead_field_keys = array_keys($lead); + foreach($lead_field_keys as $input_id){ + if(is_numeric($input_id) && absint($input_id) == absint($field["id"])){ + $val = $lead[$input_id]; + if(strlen($val) >= ($max_length-10)) { + if(empty($form)) + $form = RGFormsModel::get_form_meta($lead["form_id"]); + + $long_choice = self::get_field_value_long($lead, $input_id, $form); + } + else{ + $long_choice = $val; + } + + $value[$input_id] = !empty($long_choice) ? $long_choice : $val; + } + } + } + else{ + $val = rgget($field["id"], $lead); + + //To save a database call to get long text, only getting long text if regular field is "somewhat" large (i.e. max - 50) + if(strlen($val) >= ($max_length - 50)){ + if(empty($form)) + $form = RGFormsModel::get_form_meta($lead["form_id"]); + + $long_text = self::get_field_value_long($lead, $field["id"], $form); + } + + $value = !empty($long_text) ? $long_text : $val; + } + + //filtering lead value + $value = apply_filters("gform_get_field_value", $value, $lead, $field); + + return $value; + } + + public static function get_field_value_long($lead, $field_number, $form, $apply_filter=true){ + global $wpdb; + $detail_table_name = self::get_lead_details_table_name(); + $long_table_name = self::get_lead_details_long_table_name(); + + $sql = $wpdb->prepare(" SELECT l.value FROM $detail_table_name d + INNER JOIN $long_table_name l ON l.lead_detail_id = d.id + WHERE lead_id=%d AND field_number BETWEEN %s AND %s", $lead["id"], doubleval($field_number) - 0.001, doubleval($field_number) + 0.001); + + $val = $wpdb->get_var($sql); + + //running aform_get_input_value when needed + if($apply_filter){ + $field = RGFormsModel::get_field($form, $field_number); + $input_id = (string)$field_number == (string)$field["id"] ? "" : $field_number; + $val = apply_filters("gform_get_input_value", $val, $lead, $field, $input_id); + } + + return $val; + } + + public static function get_leads($form_id, $sort_field_number=0, $sort_direction='DESC', $search='', $offset=0, $page_size=30, $star=null, $read=null, $is_numeric_sort = false, $start_date=null, $end_date=null, $status='active'){ + global $wpdb; + + if($sort_field_number == 0) + $sort_field_number = "date_created"; + + if(is_numeric($sort_field_number)) + $sql = self::sort_by_custom_field_query($form_id, $sort_field_number, $sort_direction, $search, $offset, $page_size, $star, $read, $is_numeric_sort, $status); + else + $sql = self::sort_by_default_field_query($form_id, $sort_field_number, $sort_direction, $search, $offset, $page_size, $star, $read, $is_numeric_sort, $start_date, $end_date, $status); + + //initializing rownum + $wpdb->query("select @rownum:=0"); + + //getting results + $results = $wpdb->get_results($sql); + + $leads = self::build_lead_array($results); + + return $leads; + } + + private static function sort_by_custom_field_query($form_id, $sort_field_number=0, $sort_direction='DESC', $search='', $offset=0, $page_size=30, $star=null, $read=null, $is_numeric_sort = false, $status='active'){ + global $wpdb; + if(!is_numeric($form_id) || !is_numeric($sort_field_number)|| !is_numeric($offset)|| !is_numeric($page_size)) + return ""; + + $lead_detail_table_name = self::get_lead_details_table_name(); + $lead_table_name = self::get_lead_table_name(); + + $orderby = $is_numeric_sort ? "ORDER BY query, (value+0) $sort_direction" : "ORDER BY query, value $sort_direction"; + + $search_term = "%$search%"; + $search_filter = empty($search) ? "" : $wpdb->prepare("WHERE d.value LIKE %s", $search_term); + + //starred clause + $where = empty($search_filter) ? "WHERE" : "AND"; + $search_filter .= $star !== null && $status == 'active' ? $wpdb->prepare("$where is_starred=%d AND status='active' ", $star) : ""; + + //read clause + $where = empty($search_filter) ? "WHERE" : "AND"; + $search_filter .= $read !== null && $status == 'active' ? $wpdb->prepare("$where is_read=%d AND status='active' ", $read) : ""; + + //status clause + $where = empty($search_filter) ? "WHERE" : "AND"; + $search_filter .= $wpdb->prepare("$where status=%s ", $status); + + $field_number_min = $sort_field_number - 0.001; + $field_number_max = $sort_field_number + 0.001; + + $sql = " + SELECT filtered.sort, l.*, d.field_number, d.value + FROM $lead_table_name l + INNER JOIN $lead_detail_table_name d ON d.lead_id = l.id + INNER JOIN ( + SELECT distinct sorted.sort, l.id + FROM $lead_table_name l + INNER JOIN $lead_detail_table_name d ON d.lead_id = l.id + INNER JOIN ( + SELECT @rownum:=@rownum+1 as sort, id FROM ( + SELECT 0 as query, lead_id as id, value + FROM $lead_detail_table_name + WHERE form_id=$form_id + AND field_number between $field_number_min AND $field_number_max + + UNION ALL + + SELECT 1 as query, l.id, d.value + FROM $lead_table_name l + LEFT OUTER JOIN $lead_detail_table_name d ON d.lead_id = l.id AND field_number between $field_number_min AND $field_number_max + WHERE l.form_id=$form_id + AND d.lead_id IS NULL + + ) sorted1 + $orderby + ) sorted ON d.lead_id = sorted.id + $search_filter + LIMIT $offset,$page_size + ) filtered ON filtered.id = l.id + ORDER BY filtered.sort"; + + return $sql; + } + + private static function sort_by_default_field_query($form_id, $sort_field, $sort_direction='DESC', $search='', $offset=0, $page_size=30, $star=null, $read=null, $is_numeric_sort = false, $start_date=null, $end_date=null, $status='active'){ + global $wpdb; + + if(!is_numeric($form_id) || !is_numeric($offset)|| !is_numeric($page_size)){ + return ""; + } + + $lead_detail_table_name = self::get_lead_details_table_name(); + $lead_table_name = self::get_lead_table_name(); + + $search_term = "%$search%"; + $search_filter = empty($search) ? "" : $wpdb->prepare(" AND value LIKE %s", $search_term); + + $star_filter = $star !== null && $status == 'active' ? $wpdb->prepare(" AND is_starred=%d AND status='active' ", $star) : ""; + $read_filter = $read !== null && $status == 'active' ? $wpdb->prepare(" AND is_read=%d AND status='active' ", $read) : ""; + $status_filter = $wpdb->prepare(" AND status=%s ", $status); + + $start_date_filter = empty($start_date) ? "" : " AND datediff(date_created, '$start_date') >=0"; + $end_date_filter = empty($end_date) ? "" : " AND datediff(date_created, '$end_date') <=0"; + + $sql = " + SELECT filtered.sort, l.*, d.field_number, d.value + FROM $lead_table_name l + INNER JOIN $lead_detail_table_name d ON d.lead_id = l.id + INNER JOIN + ( + SELECT @rownum:=@rownum + 1 as sort, id + FROM + ( + SELECT distinct l.id + FROM $lead_table_name l + INNER JOIN $lead_detail_table_name d ON d.lead_id = l.id + WHERE l.form_id=$form_id + $search_filter + $star_filter + $read_filter + $status_filter + $start_date_filter + $end_date_filter + ORDER BY $sort_field $sort_direction + LIMIT $offset,$page_size + ) page + ) filtered ON filtered.id = l.id + ORDER BY filtered.sort"; + + return $sql; + } + + public static function build_lead_array($results, $use_long_values = false){ + + $leads = array(); + $lead = array(); + $form_id = 0; + if(is_array($results) && sizeof($results) > 0){ + $form_id = $results[0]->form_id; + $lead = array("id" => $results[0]->id, "form_id" => $results[0]->form_id, "date_created" => $results[0]->date_created, "is_starred" => intval($results[0]->is_starred), "is_read" => intval($results[0]->is_read), "ip" => $results[0]->ip, "source_url" => $results[0]->source_url, "post_id" => $results[0]->post_id, "currency" => $results[0]->currency, "payment_status" => $results[0]->payment_status, "payment_date" => $results[0]->payment_date, "transaction_id" => $results[0]->transaction_id, "payment_amount" => $results[0]->payment_amount, "is_fulfilled" => $results[0]->is_fulfilled, "created_by" => $results[0]->created_by, "transaction_type" => $results[0]->transaction_type, "user_agent" => $results[0]->user_agent, "status" => $results[0]->status); + } + + $form = RGFormsModel::get_form_meta($form_id); + $prev_lead_id=0; + foreach($results as $result){ + if($prev_lead_id <> $result->id && $prev_lead_id > 0){ + array_push($leads, $lead); + $lead = array("id" => $result->id, "form_id" => $result->form_id, "date_created" => $result->date_created, "is_starred" => intval($result->is_starred), "is_read" => intval($result->is_read), "ip" => $result->ip, "source_url" => $result->source_url, "post_id" => $result->post_id, "currency" => $result->currency, "payment_status" => $result->payment_status, "payment_date" => $result->payment_date, "transaction_id" => $result->transaction_id, "payment_amount" => $result->payment_amount, "is_fulfilled" => $result->is_fulfilled, "created_by" => $result->created_by, "transaction_type" => $result->transaction_type, "user_agent" => $result->user_agent, "status" => $result->status); + } + + $field_value = $result->value; + //using long values if specified + if($use_long_values && strlen($field_value) >= (GFORMS_MAX_FIELD_LENGTH-10)){ + $field = RGFormsModel::get_field($form, $result->field_number); + $long_text = RGFormsModel::get_field_value_long($lead, $result->field_number, $form, false); + $field_value = !empty($long_text) ? $long_text : $field_value; + } + + $lead[$result->field_number] = $field_value; + $prev_lead_id = $result->id; + } + //adding last lead. + if(sizeof($lead) > 0) + array_push($leads, $lead); + + //running entry through gform_get_field_value filter + foreach($leads as &$lead){ + foreach($form["fields"] as $field){ + if(isset($field["inputs"]) && is_array($field["inputs"])){ + foreach($field["inputs"] as $input){ + $lead[(string)$input["id"]] = apply_filters("gform_get_input_value", rgar($lead, (string)$input["id"]), $lead, $field, $input["id"]); + } + } + else{ + + $lead[$field["id"]] = apply_filters("gform_get_input_value", rgar($lead, (string)$field["id"]), $lead, $field, ""); + } + } + } + + return $leads; + + } + + public static function save_key($key){ + $current_key = get_option("rg_gforms_key"); + if(empty($key)){ + delete_option("rg_gforms_key"); + } + else if($current_key != $key){ + $key = trim($key); + update_option("rg_gforms_key", md5($key)); + } + } + + public static function get_lead_count($form_id, $search, $star=null, $read=null, $start_date=null, $end_date=null, $status=null){ + global $wpdb; + + if(!is_numeric($form_id)) + return ""; + + $detail_table_name = self::get_lead_details_table_name(); + $lead_table_name = self::get_lead_table_name(); + + $star_filter = $star !== null ? $wpdb->prepare("AND is_starred=%d ", $star) : ""; + $read_filter = $read !== null ? $wpdb->prepare("AND is_read=%d ", $read) : ""; + $start_date_filter = empty($start_date) ? "" : " AND datediff(date_created, '$start_date') >=0"; + $end_date_filter = empty($end_date) ? "" : " AND datediff(date_created, '$end_date') <=0"; + $status_filter = $status !== null ? $wpdb->prepare(" AND status='%s' ", $status) : ""; + + $search_term = "%$search%"; + $search_filter = empty($search) ? "" : $wpdb->prepare("AND value LIKE %s", $search_term); + + $sql = "SELECT count(distinct l.id) + FROM $lead_table_name l + INNER JOIN $detail_table_name ld ON l.id = ld.lead_id + WHERE l.form_id=$form_id + AND ld.form_id=$form_id + $star_filter + $read_filter + $start_date_filter + $end_date_filter + $status_filter + $search_filter"; + + return $wpdb->get_var($sql); + } + + public static function get_grid_columns($form_id, $input_label_only=false){ + $form = self::get_form_meta($form_id); + $field_ids = self::get_grid_column_meta($form_id); + + if(!is_array($field_ids)){ + $field_ids = array(); + for($i=0, $count=sizeof($form["fields"]); $i<$count && $i<5; $i++){ + $field = $form["fields"][$i]; + + if(RGForms::get("displayOnly",$field) || self::get_input_type($field) == "list") + continue; + + + if(isset($field["inputs"]) && is_array($field["inputs"])){ + if($field["type"] == "name"){ + $field_ids[] = $field["id"] . '.3'; //adding first name + $field_ids[] = $field["id"] . '.6'; //adding last name + } + else{ + $field_ids[] = $field["inputs"][0]["id"]; //getting first input + } + } + else{ + $field_ids[] = $field["id"]; + } + } + } + + $columns = array(); + foreach($field_ids as $field_id){ + + switch($field_id){ + case "id" : + $columns[$field_id] = array("label" => "Entry Id", "type" => "id"); + break; + case "ip" : + $columns[$field_id] = array("label" => "User IP", "type" => "ip"); + break; + case "date_created" : + $columns[$field_id] = array("label" => "Entry Date", "type" => "date_created"); + break; + case "source_url" : + $columns[$field_id] = array("label" => "Source Url", "type" => "source_url"); + break; + case "payment_status" : + $columns[$field_id] = array("label" => "Payment Status", "type" => "payment_status"); + break; + case "transaction_id" : + $columns[$field_id] = array("label" => "Transaction Id", "type" => "transaction_id"); + break; + case "payment_date" : + $columns[$field_id] = array("label" => "Payment Date", "type" => "payment_date"); + break; + case "payment_amount" : + $columns[$field_id] = array("label" => "Payment Amount", "type" => "payment_amount"); + break; + case "created_by" : + $columns[$field_id] = array("label" => "User", "type" => "created_by"); + break; + default : + $field = self::get_field($form, $field_id); + if($field) + $columns[strval($field_id)] = array("label" => self::get_label($field, $field_id, $input_label_only), "type" => rgget("type", $field), "inputType" => rgget("inputType", $field)); + } + } + return $columns; + } + + public static function get_label($field, $input_id = 0, $input_only = false){ + $field_label = (IS_ADMIN || RG_CURRENT_PAGE == "select_columns.php" || RG_CURRENT_PAGE == "print-entry.php" || rgget("gf_page", $_GET) == "select_columns" || rgget("gf_page", $_GET) == "print-entry") && !rgempty("adminLabel", $field) ? rgar($field,"adminLabel") : rgar($field,"label"); + $input = self::get_input($field, $input_id); + if(rgget("type", $field) == "checkbox" && $input != null) + return $input["label"]; + else if($input != null) + return $input_only ? $input["label"] : $field_label . ' (' . $input["label"] . ')'; + else + return $field_label; + } + + public static function get_input($field, $id){ + if(isset($field["inputs"]) && is_array($field["inputs"])){ + foreach($field["inputs"] as $input) + { + if($input["id"] == $id) + return $input; + } + } + return null; + } + + function has_input($field, $input_id){ + if(!is_array($field["inputs"])) + return false; + else{ + foreach($field["inputs"] as $input) + { + if($input["id"] == $input_id) + return true; + } + return false; + } + } + + public function get_current_page_url($force_ssl=false) { + $pageURL = 'http'; + if (RGForms::get("HTTPS",$_SERVER) == "on" || $force_ssl) + $pageURL .= "s"; + $pageURL .= "://"; + + $pageURL .= RGForms::get("HTTP_HOST", $_SERVER) . rgget("REQUEST_URI", $_SERVER); + return $pageURL; + } + + public static function get_submitted_fields($form_id){ + global $wpdb; + $lead_detail_table_name = self::get_lead_details_table_name(); + $field_list = ""; + $fields = $wpdb->get_results($wpdb->prepare("SELECT DISTINCT field_number FROM $lead_detail_table_name WHERE form_id=%d", $form_id)); + foreach($fields as $field) + $field_list .= intval($field->field_number) . ','; + + if(!empty($field_list)) + $field_list = substr($field_list, 0, strlen($field_list) -1); + + return $field_list; + } + + public static function get_field($form, $field_id){ + if(is_numeric($field_id)) + $field_id = intval($field_id); //removing floating part of field (i.e 1.3 -> 1) to return field by input id + + if(!is_array($form["fields"])) + return null; + + foreach($form["fields"] as $field){ + if($field["id"] == $field_id) + return $field; + } + return null; + } + + public static function is_html5_enabled(){ + return get_option("rg_gforms_enable_html5"); + } +} + +global $_gform_lead_meta; +$_gform_lead_meta = array(); + +//functions to handle lead meta +function gform_get_meta($entry_id, $meta_key){ + global $wpdb, $_gform_lead_meta; + + //get from cache if available + $cache_key = $entry_id . "_" . $meta_key; + if(array_key_exists($cache_key, $_gform_lead_meta)) + return $_gform_lead_meta[$cache_key]; + + $table_name = RGFormsModel::get_lead_meta_table_name(); + $value = $wpdb->get_var($wpdb->prepare("SELECT meta_value FROM {$table_name} WHERE lead_id=%d AND meta_key=%s", $entry_id, $meta_key)); + $meta_value = $value == null ? false : maybe_unserialize($value); + $_gform_lead_meta[$cache_key] = $meta_value; + return $meta_value; +} + +function gform_update_meta($entry_id, $meta_key, $meta_value){ + global $wpdb, $_gform_lead_meta; + $table_name = RGFormsModel::get_lead_meta_table_name(); + + $meta_value = maybe_serialize($meta_value); + $meta_exists = gform_get_meta($entry_id, $meta_key) !== false; + if($meta_exists){ + $wpdb->update($table_name, array("meta_value" => $meta_value), array("lead_id" => $entry_id, "meta_key" => $meta_key),array("%s"), array("%d", "%s")); + } + else{ + $wpdb->insert($table_name, array("lead_id" => $entry_id, "meta_key" => $meta_key, "meta_value" => $meta_value), array("%d", "%s", "%s")); + } + + //updates cache + $cache_key = $entry_id . "_" . $meta_key; + if(array_key_exists($cache_key, $_gform_lead_meta)) + $_gform_lead_meta[$cache_key] = maybe_unserialize($meta_value); +} + +function gform_delete_meta($entry_id, $meta_key=""){ + global $wpdb, $_gform_lead_meta; + $table_name = RGFormsModel::get_lead_meta_table_name(); + $meta_filter = empty($meta_key) ? "" : $wpdb->prepare("AND meta_key=%s", $meta_key); + + $wpdb->query($wpdb->prepare("DELETE FROM {$table_name} WHERE lead_id=%d {$meta_filter}", $entry_id)); + + //clears cache. + $_gform_lead_meta = array(); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/gravityforms.php b/wp-content/plugins/gravityforms/gravityforms.php new file mode 100644 index 0000000..10a5e5a --- /dev/null +++ b/wp-content/plugins/gravityforms/gravityforms.php @@ -0,0 +1,1791 @@ +=')); + +if(!defined("GRAVITY_MANAGER_URL")) + define("GRAVITY_MANAGER_URL", "http://www.gravityhelp.com/wp-content/plugins/gravitymanager"); + +require_once(WP_PLUGIN_DIR . "/" . basename(dirname(__FILE__)) . "/common.php"); +require_once(WP_PLUGIN_DIR . "/" . basename(dirname(__FILE__)) . "/forms_model.php"); +require_once(WP_PLUGIN_DIR . "/" . basename(dirname(__FILE__)) . "/widget.php"); + + +add_action('init', array('RGForms', 'init')); +add_action('wp', array('RGForms', 'maybe_process_form'), 9); +add_action('wp', array('RGForms', 'process_exterior_pages')); + +add_filter('user_has_cap', array("RGForms", "user_has_cap"), 10, 3); + + +//Hooks for no-conflict functionality +if(is_admin() && (RGForms::is_gravity_page() || RGForms::is_gravity_ajax_action())){ + add_action("wp_print_scripts", array("RGForms", "no_conflict_mode_script"), 1000); + add_action("admin_print_footer_scripts", array("RGForms", "no_conflict_mode_script"), 9); + + add_action("wp_print_styles", array("RGForms", "no_conflict_mode_style"), 1000); + add_action("admin_print_styles", array("RGForms", "no_conflict_mode_style"), 1); + add_action("admin_print_footer_scripts", array("RGForms", "no_conflict_mode_style"), 1); + add_action("admin_footer", array("RGForms", "no_conflict_mode_style"), 1); +} + +class RGForms{ + + public static function has_members_plugin(){ + return function_exists( 'members_get_capabilities' ); + } + + //Plugin starting point. Will load appropriate files + public static function init(){ + + load_plugin_textdomain( 'gravityforms', false, '/gravityforms/languages' ); + + add_filter("gform_logging_supported", array("RGForms", "set_logging_supported")); + + if(IS_ADMIN){ + + global $current_user; + + //Members plugin integration. Adding Gravity Forms roles to the checkbox list + if (self::has_members_plugin()) + add_filter('members_get_capabilities', array("RGForms", "members_get_capabilities")); + + //Loading Gravity Forms if user has access to any functionality + if(GFCommon::current_user_can_any(GFCommon::all_caps())) + { + require_once(GFCommon::get_base_path() . "/export.php"); + GFExport::maybe_export(); + + //runs the setup when version changes + self::setup(); + + //creates the "Forms" left menu + add_action('admin_menu', array('RGForms', 'create_menu')); + + if(GF_SUPPORTED_WP_VERSION){ + + add_action('admin_footer', array('RGForms', 'check_upload_folder')); + add_action('wp_dashboard_setup', array('RGForms', 'dashboard_setup')); + + //Adding "embed form" button + add_action('media_buttons_context', array('RGForms', 'add_form_button')); + + //Plugin update actions + add_filter("transient_update_plugins", array('RGForms', 'check_update')); + add_filter("site_transient_update_plugins", array('RGForms', 'check_update')); + + if(in_array(RG_CURRENT_PAGE, array('post.php', 'page.php', 'page-new.php', 'post-new.php'))){ + add_action('admin_footer', array('RGForms', 'add_mce_popup')); + } + else if(self::is_gravity_page()){ + require_once(GFCommon::get_base_path() . "/tooltips.php"); + add_action("admin_print_scripts", array('RGForms', 'print_scripts')); + } + else if(RG_CURRENT_PAGE == 'media-upload.php'){ + require_once(GFCommon::get_base_path() . "/entry_list.php"); + } + else if(in_array(RG_CURRENT_PAGE, array("admin.php", "admin-ajax.php"))){ + + add_action('wp_ajax_rg_save_form', array('RGForms', 'save_form')); + add_action('wp_ajax_rg_change_input_type', array('RGForms', 'change_input_type')); + add_action('wp_ajax_rg_add_field', array('RGForms', 'add_field')); + add_action('wp_ajax_rg_duplicate_field', array('RGForms', 'duplicate_field')); + add_action('wp_ajax_rg_delete_field', array('RGForms', 'delete_field')); + add_action('wp_ajax_rg_delete_file', array('RGForms', 'delete_file')); + add_action('wp_ajax_rg_select_export_form', array('RGForms', 'select_export_form')); + add_action('wp_ajax_rg_start_export', array('RGForms', 'start_export')); + add_action('wp_ajax_gf_upgrade_license', array('RGForms', 'upgrade_license')); + add_action('wp_ajax_gf_delete_custom_choice', array('RGForms', 'delete_custom_choice')); + add_action('wp_ajax_gf_save_custom_choice', array('RGForms', 'save_custom_choice')); + add_action('wp_ajax_gf_get_post_categories', array('RGForms', 'get_post_category_values')); + add_action('wp_ajax_gf_get_notification_post_categories', array('RGForms', 'get_notification_post_category_values')); + + //entry list ajax operations + add_action('wp_ajax_rg_update_lead_property', array('RGForms', 'update_lead_property')); + add_action('wp_ajax_delete-gf_entry', array('RGForms', 'update_lead_status')); + + //form list ajax operations + add_action('wp_ajax_rg_update_form_active', array('RGForms', 'update_form_active')); + + //dynamic captcha image + add_action('wp_ajax_rg_captcha_image', array('RGForms', 'captcha_image')); + + //dashboard message "dismiss upgrade" link + add_action("wp_ajax_rg_dismiss_upgrade", array('RGForms', 'dashboard_dismiss_upgrade')); + + // entry detial: resend notifications + add_action("wp_ajax_gf_resend_notifications", array('RGForms', 'resend_notifications')); + + } + + add_filter("plugins_api", array("RGForms", "get_addon_info"), 10, 3); + add_action('after_plugin_row_gravityforms/gravityforms.php', array('RGForms', 'plugin_row') ); + add_action('install_plugins_pre_plugin-information', array('RGForms', 'display_changelog')); + add_filter('plugin_action_links', array('RGForms', 'plugin_settings_link'),10,2); + } + } + } + else{ + add_action('wp_enqueue_scripts', array('RGForms', 'enqueue_scripts')); + add_action('wp', array('RGForms', 'ajax_parse_request'), 10); + + // ManageWP premium update filters + add_filter( 'mwp_premium_update_notification', array('RGForms', 'premium_update_push') ); + add_filter( 'mwp_premium_perform_update', array('RGForms', 'premium_update') ); + } + + add_shortcode('gravityform', array('RGForms', 'parse_shortcode')); + add_shortcode('gravityforms', array('RGForms', 'parse_shortcode')); + } + + public static function set_logging_supported($plugins) + { + $plugins["gravityforms"] = "Gravity Forms Core"; + return $plugins; + } + + public static function maybe_process_form(){ + + $form_id = isset($_POST["gform_submit"]) ? $_POST["gform_submit"] : 0; + if($form_id){ + $form_info = RGFormsModel::get_form($form_id); + $is_valid_form = $form_info && $form_info->is_active; + + if($is_valid_form){ + require_once(GFCommon::get_base_path() . "/form_display.php"); + GFFormDisplay::process_form($form_id); + } + } + } + + public static function process_exterior_pages(){ + if(rgempty("gf_page", $_GET)) + return; + + //ensure users are logged in + if(!is_user_logged_in()) + auth_redirect(); + + switch(rgget("gf_page")){ + case "preview": + require_once(GFCommon::get_base_path() . "/preview.php"); + break; + + case "print-entry" : + require_once(GFCommon::get_base_path() . "/print-entry.php"); + break; + + case "select_columns" : + require_once(GFCommon::get_base_path() . "/select_columns.php"); + break; + } + exit(); + } + + public static function check_update($update_plugins_option){ + if(!class_exists("GFCommon")) + require_once("common.php"); + + return GFCommon::check_update($update_plugins_option, true); + } + + //Creates or updates database tables. Will only run when version changes + public static function setup($force_setup = false){ + global $wpdb; + + $version = GFCommon::$version; + + if(get_option("rg_form_version") != $version || $force_setup){ + + $error = ""; + if(!self::has_database_permission($error)){ + ?> +
            + charset) ) + $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; + if ( ! empty($wpdb->collate) ) + $charset_collate .= " COLLATE $wpdb->collate"; + + //Fixes issue with dbDelta lower-casing table names, which cause problems on case sensitive DB servers. + add_filter( 'dbdelta_create_queries', array("RGForms", "dbdelta_fix_case")); + + //------ FORM ----------------------------------------------- + $form_table_name = RGFormsModel::get_form_table_name(); + $sql = "CREATE TABLE " . $form_table_name . " ( + id mediumint(8) unsigned not null auto_increment, + title varchar(150) not null, + date_created datetime not null, + is_active tinyint(1) not null default 1, + PRIMARY KEY (id) + ) $charset_collate;"; + dbDelta($sql); + + //droping table that was created by mistake in version 1.6.3.2 + $wpdb->query("DROP TABLE IF EXISTS A" . $form_table_name); + + //------ META ----------------------------------------------- + $meta_table_name = RGFormsModel::get_meta_table_name(); + $sql = "CREATE TABLE " . $meta_table_name . " ( + form_id mediumint(8) unsigned not null, + display_meta longtext, + entries_grid_meta longtext, + PRIMARY KEY (form_id) + ) $charset_collate;"; + dbDelta($sql); + + //droping outdated form_id index (if one exists) + self::drop_index($meta_table_name, 'form_id'); + + //------ FORM VIEW ----------------------------------------------- + $form_view_table_name = RGFormsModel::get_form_view_table_name(); + $sql = "CREATE TABLE " . $form_view_table_name . " ( + id bigint(20) unsigned not null auto_increment, + form_id mediumint(8) unsigned not null, + date_created datetime not null, + ip char(15), + count mediumint(8) unsigned not null default 1, + PRIMARY KEY (id), + KEY form_id (form_id) + ) $charset_collate;"; + dbDelta($sql); + + //------ LEAD ----------------------------------------------- + $lead_table_name = RGFormsModel::get_lead_table_name(); + $sql = "CREATE TABLE " . $lead_table_name . " ( + id int(10) unsigned not null auto_increment, + form_id mediumint(8) unsigned not null, + post_id bigint(20) unsigned, + date_created datetime not null, + is_starred tinyint(1) not null default 0, + is_read tinyint(1) not null default 0, + ip varchar(39) not null, + source_url varchar(200) not null default '', + user_agent varchar(250) not null default '', + currency varchar(5), + payment_status varchar(15), + payment_date datetime, + payment_amount decimal(19,2), + transaction_id varchar(50), + is_fulfilled tinyint(1), + created_by bigint(20) unsigned, + transaction_type tinyint(1), + status varchar(20) not null default 'active', + PRIMARY KEY (id), + KEY form_id (form_id), + KEY status (status) + ) $charset_collate;"; + dbDelta($sql); + + //------ LEAD NOTES ------------------------------------------ + $lead_notes_table_name = RGFormsModel::get_lead_notes_table_name(); + $sql = "CREATE TABLE " . $lead_notes_table_name . " ( + id int(10) unsigned not null auto_increment, + lead_id int(10) unsigned not null, + user_name varchar(250), + user_id bigint(20), + date_created datetime not null, + value longtext, + PRIMARY KEY (id), + KEY lead_id (lead_id), + KEY lead_user_key (lead_id,user_id) + ) $charset_collate;"; + dbDelta($sql); + + //------ LEAD DETAIL ----------------------------------------- + $lead_detail_table_name = RGFormsModel::get_lead_details_table_name(); + $sql = "CREATE TABLE " . $lead_detail_table_name . " ( + id bigint(20) unsigned not null auto_increment, + lead_id int(10) unsigned not null, + form_id mediumint(8) unsigned not null, + field_number float not null, + value varchar(". GFORMS_MAX_FIELD_LENGTH ."), + PRIMARY KEY (id), + KEY form_id (form_id), + KEY lead_id (lead_id) + ) $charset_collate;"; + dbDelta($sql); + + //------ LEAD DETAIL LONG ----------------------------------- + $lead_detail_long_table_name = RGFormsModel::get_lead_details_long_table_name(); + + $sql = "CREATE TABLE " . $lead_detail_long_table_name . " ( + lead_detail_id bigint(20) unsigned not null, + value longtext, + PRIMARY KEY (lead_detail_id) + ) $charset_collate;"; + dbDelta($sql); + + //droping outdated form_id index (if one exists) + self::drop_index($lead_detail_long_table_name, 'lead_detail_key'); + + //------ LEAD META ----------------------------------- + $lead_meta_table_name = RGFormsModel::get_lead_meta_table_name(); + $sql = "CREATE TABLE " . $lead_meta_table_name . " ( + id bigint(20) unsigned not null auto_increment, + lead_id bigint(20) unsigned not null, + meta_key varchar(255), + meta_value longtext, + PRIMARY KEY (id), + KEY meta_key (meta_key), + KEY lead_id (lead_id) + ) $charset_collate;"; + dbDelta($sql); + + remove_filter('dbdelta_create_queries', array("RGForms", "dbdelta_fix_case")); + + //fix checkbox value. needed for version 1.0 and below but won't hurt for higher versions + self::fix_checkbox_value(); + + //auto-setting license key based on value configured via the GF_LICENSE_KEY constant or the gf_license_key variable + global $gf_license_key; + $license_key = defined("GF_LICENSE_KEY") && empty($gf_license_key) ? GF_LICENSE_KEY : $gf_license_key; + if(!empty($license_key)) + update_option("rg_gforms_key", md5($license_key)); + + //auto-setting recaptcha keys based on value configured via the constant or global variable + global $gf_recaptcha_public_key, $gf_recaptcha_private_key; + $private_key = defined("GF_RECAPTCHA_PRIVATE_KEY") && empty($gf_recaptcha_private_key) ? GF_RECAPTCHA_PRIVATE_KEY : $gf_recaptcha_private_key; + if(!empty($private_key)) + update_option("rg_gforms_captcha_private_key", $private_key); + + $public_key = defined("GF_RECAPTCHA_PUBLIC_KEY") && empty($gf_recaptcha_public_key) ? GF_RECAPTCHA_PUBLIC_KEY : $gf_recaptcha_public_key; + if(!empty($public_key)) + update_option("rg_gforms_captcha_public_key", $public_key); + + //Auto-importing forms based on GF_IMPORT_FILE AND GF_THEME_IMPORT_FILE + if(defined("GF_IMPORT_FILE") && !get_option("gf_imported_file")){ + GFExport::import_file(GF_IMPORT_FILE); + update_option("gf_imported_file", true); + } + + //adds empty index.php files to upload folders. only for v1.5.2 and below + if(version_compare(get_option("rg_form_version"), "1.6", "<")){ + self::add_empty_index_files(); + } + + update_option("rg_form_version", $version); + } + + //Import theme specific forms if configured. Will only import forms once per theme. + if(defined("GF_THEME_IMPORT_FILE")){ + $themes = get_option("gf_imported_theme_file"); + if(!is_array($themes)) + $themes = array(); + + //if current theme has already imported it's forms, don't import again + $theme = get_template(); + if(!isset($themes[$theme])){ + + //importing forms + GFExport::import_file(get_stylesheet_directory() . "/" . GF_THEME_IMPORT_FILE); + + //adding current theme to the list of imported themes. So that forms are not imported again for it. + $themes[$theme] = true; + update_option("gf_imported_theme_file", $themes); + } + } + } + + public static function dbdelta_fix_case($cqueries){ + foreach ($cqueries as $table => $qry) { + $table_name = $table; + if(preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)){ + $query_table_name = trim($matches[1], '`' ); + + //fix table names that are different just by their casing + if(strtolower($query_table_name) == $table){ + $table_name = $query_table_name; + } + } + $queries[$table_name] = $qry; + } + return $queries; + } + + public static function no_conflict_mode_style(){ + if(!get_option("gform_enable_noconflict")) + return; + + global $wp_styles; + $wp_required_styles = array("admin-bar", "colors", "ie", "wp-admin"); + $gf_required_styles = array( + "common" => array(), + "gf_edit_forms" => array("thickbox"), + "gf_edit_forms_notification" => array("thickbox", "editor-buttons", "wp-jquery-ui-dialog"), + "gf_new_form" => array("thickbox"), + "gf_entries" => array("thickbox"), + "gf_settings" => array(), + "gf_export" => array(), + "gf_help" => array() + ); + + self::no_conflict_mode($wp_styles, $wp_required_styles, $gf_required_styles, "styles"); + } + + public static function no_conflict_mode_script(){ + if(!get_option("gform_enable_noconflict")) + return; + + global $wp_scripts; + + $wp_required_scripts = array("admin-bar", "common", "jquery-color", "utils"); + $gf_required_scripts = array( + "common" => array("qtip-init", "sack"), + "gf_edit_forms" => array("thickbox", "jquery-ui-core", "jquery-ui-sortable", "jquery-ui-tabs", "rg_currency", "gforms_gravityforms" ), + "gf_edit_forms_notification" => array("editor", "word-count", "quicktags", "wpdialogs-popup", "media-upload", "wplink"), + "gf_new_form" => array("thickbox", "jquery-ui-core", "jquery-ui-sortable", "jquery-ui-tabs", "rg_currency", "gforms_gravityforms" ), + "gf_entries" => array("thickbox", "gforms_gravityforms"), + "gf_settings" => array(), + "gf_export" => array(), + "gf_help" => array(), + ); + + self::no_conflict_mode($wp_scripts, $wp_required_scripts, $gf_required_scripts, "scripts"); + } + + private static function no_conflict_mode(&$wp_objects, $wp_required_objects, $gf_required_objects, $type="scripts"){ + + $current_page = trim(strtolower(rgget("page"))); + if(empty($current_page)) + $current_page = trim(strtolower(rgget("gf_page"))); + if(empty($current_page)) + $current_page = RG_CURRENT_PAGE; + + $view = rgempty("view", $_GET) ? "default" : rgget("view"); + $page_objects = isset($gf_required_objects[$current_page . "_" . $view]) ? $gf_required_objects[$current_page . "_" . $view] : rgar($gf_required_objects, $current_page); + + //disable no-conflict if $page_objects is false + if($page_objects === false) + return; + + if(!is_array($page_objects)) + $page_objects = array(); + + //merging wp scripts with gravity forms scripts + $required_objects = array_merge($wp_required_objects, $gf_required_objects["common"], $page_objects); + + //allowing addons or other products to change the list of no conflict scripts + $required_objects = apply_filters("gform_noconflict_{$type}", $required_objects); + + $queue = array(); + foreach($wp_objects->queue as $object){ + if(in_array($object, $required_objects)) + $queue[] = $object; + } + $wp_objects->queue = $queue; + + $required_objects = self::add_script_dependencies($wp_objects->registered, $required_objects); + + //unregistering scripts + $registered = array(); + foreach($wp_objects->registered as $script_name => $script_registration){ + if(in_array($script_name, $required_objects)){ + $registered[$script_name] = $script_registration; + } + } + $wp_objects->registered = $registered; + } + + private static function add_script_dependencies($registered, $scripts){ + + //gets all dependent scripts linked to the $scripts array passed + do{ + $dependents = array(); + foreach($scripts as $script){ + $deps = isset($registered[$script]) && is_array($registered[$script]->deps) ? $registered[$script]->deps : array(); + foreach($deps as $dep){ + if(!in_array($dep, $scripts) && !in_array($dep, $dependents)){ + $dependents[] = $dep; + } + } + } + $scripts = array_merge($scripts, $dependents); + }while(!empty($dependents)); + + return $scripts; + } + + //Integration with ManageWP + public static function premium_update_push( $premium_update ){ + + if( !function_exists( 'get_plugin_data' ) ) + include_once( ABSPATH.'wp-admin/includes/plugin.php'); + + $update = GFCommon::get_version_info(); + if( $update["is_valid_key"] == true && version_compare(GFCommon::$version, $update["version"], '<') ){ + $gforms = get_plugin_data( __FILE__ ); + $gforms['type'] = 'plugin'; + $gforms['slug'] = 'gravityforms/gravityforms.php'; + $gforms['new_version'] = isset($update['version']) ? $update['version'] : false ; + $premium_update[] = $gforms; + } + + return $premium_update; + } + + //Integration with ManageWP + public static function premium_update( $premium_update ){ + + if( !function_exists( 'get_plugin_data' ) ) + include_once( ABSPATH.'wp-admin/includes/plugin.php'); + + $update = GFCommon::get_version_info(); + if( $update["is_valid_key"] == true && version_compare(GFCommon::$version, $update["version"], '<') ){ + $gforms = get_plugin_data( __FILE__ ); + $gforms['slug'] = 'gravityforms/gravityforms.php'; // If not set by default, always pass theme template + $gforms['type'] = 'plugin'; + $gforms['url'] = isset($update["url"]) ? $update["url"] : false; // OR provide your own callback function for managing the update + + array_push($premium_update, $gforms); + } + return $premium_update; + } + + private static function drop_index($table, $index){ + global $wpdb; + $has_index = $wpdb->get_var("SHOW INDEX FROM {$table} WHERE Key_name='{$index}'"); + if($has_index){ + $wpdb->query("DROP INDEX {$index} ON {$table}"); + } + } + + private static function add_empty_index_files(){ + $upload_root = RGFormsModel::get_upload_root(); + GFCommon::recursive_add_index_file($upload_root); + } + + private static function has_database_permission(&$error){ + global $wpdb; + + $wpdb->hide_errors(); + + $has_permission = true; + + $sql = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}rg_test ( col1 int )"; + $wpdb->query($sql); + $error = "Current database user does not have necessary permissions to create tables."; + if(!empty($wpdb->last_error)) + $has_permission = false; + + $sql = "ALTER TABLE {$wpdb->prefix}rg_test ADD COLUMN " . uniqid() ." int"; + $wpdb->query($sql); + $error = "Current database user does not have necessary permissions to modify (ALTER) tables."; + if(!empty($wpdb->last_error)) + $has_permission = false; + + $sql = "DROP TABLE {$wpdb->prefix}rg_test"; + $wpdb->query($sql); + + $wpdb->show_errors(); + + return $has_permission; + } + + //Changes checkbox entry values from "!" to the current choice text. Neededed when upgrading users from 1.0 + private static function fix_checkbox_value(){ + global $wpdb; + + $table_name = RGFormsModel::get_lead_details_table_name(); + + $sql = "select * from $table_name where value= '!'"; + $results = $wpdb->get_results($sql); + foreach($results as $result){ + $form = RGFormsModel::get_form_meta($result->form_id); + $field = RGFormsModel::get_field($form, $result->field_number); + if($field["type"] == "checkbox"){ + $input = GFCommon::get_input($field, $result->field_number); + $wpdb->update($table_name, array("value" => $input["label"]), array("id" => $result->id)); + } + } + } + + public static function user_has_cap($all_caps, $cap, $args){ + $gf_caps = GFCommon::all_caps(); + $capability = rgar($cap, 0); + if($capability != "gform_full_access"){ + return $all_caps; + } + + if(!self::has_members_plugin()){ + //give full access to administrators if the members plugin is not installed + if(current_user_can("administrator") || is_super_admin()){ + $all_caps["gform_full_access"] = true; + } + } + else if(current_user_can("administrator")|| is_super_admin()){ + + //checking if user has any GF permission. + $has_gf_cap = false; + foreach($gf_caps as $gf_cap){ + if(rgar($all_caps, $gf_cap)) + $has_gf_cap = true; + } + + if(!$has_gf_cap){ + //give full access to administrators if none of the GF permissions are active by the Members plugin + $all_caps["gform_full_access"] = true; + } + } + + return $all_caps; + } + + //Target of Member plugin filter. Provides the plugin with Gravity Forms lists of capabilities + public static function members_get_capabilities( $caps ) { + return array_merge($caps, GFCommon::all_caps()); + } + + //Tests if the upload folder is writable and displays an error message if not + public static function check_upload_folder(){ + //check if upload folder is writable + $folder = RGFormsModel::get_upload_root(); + if(empty($folder)) + echo "
            Upload folder is not writable. Export and file upload features will not be functional.
            "; + } + + //Prints common admin scripts + public static function print_scripts(){ + wp_enqueue_script("sack"); + wp_print_scripts(); + } + + public static function is_gravity_ajax_action(){ + //Gravity Forms AJAX requests + $current_action = self::post("action"); + $gf_ajax_actions = array('rg_save_form', 'rg_change_input_type', 'rg_add_field', 'rg_duplicate_field', + 'rg_delete_field', 'rg_select_export_form', 'rg_start_export', 'gf_upgrade_license', + 'gf_delete_custom_choice', 'gf_save_custom_choice', 'gf_get_notification_post_categories', + 'rg_update_lead_property', 'delete-gf_entry', 'rg_update_form_active', + 'gf_resend_notifications', 'rg_dismiss_upgrade'); + + if(defined("DOING_AJAX") && DOING_AJAX && in_array($current_action, $gf_ajax_actions)) + return true; + + //not a gravity forms ajax request. + return false; + } + + //Returns true if the current page is one of Gravity Forms pages. Returns false if not + public static function is_gravity_page(){ + + //Gravity Forms pages + $current_page = trim(strtolower(self::get("page"))); + $gf_pages = array("gf_edit_forms","gf_new_form","gf_entries","gf_settings","gf_export","gf_help"); + + return in_array($current_page, $gf_pages); + } + + public static function do_menu_page(){ + $args = array( 'show_ui' => true, '_builtin' => false, 'show_in_menu' => true ); + $count = (int) count(get_post_types( $args )); + return $count > 0; + } + + //Creates "Forms" left nav + public static function create_menu(){ + + $has_full_access = current_user_can("gform_full_access"); + $min_cap = GFCommon::current_user_can_which(GFCommon::all_caps()); + if(empty($min_cap)) + $min_cap = "gform_full_access"; + + $addon_menus = array(); + $addon_menus = apply_filters("gform_addon_navigation", $addon_menus); + + $parent_menu = self::get_parent_menu($addon_menus); + + // Add a top-level left nav + $update_icon = GFCommon::has_update() ? "1" : ""; + + + //Getting around a Wordpress bug that prevents menus from displayeing when site has multiple custom post types + if( self::do_menu_page() ) + add_menu_page(__('Forms', "gravityforms"), __("Forms", "gravityforms") . $update_icon , $has_full_access ? "gform_full_access" : $min_cap, $parent_menu["name"] , $parent_menu["callback"], GFCommon::get_base_url() . '/images/gravity-admin-icon.png', 16.9); + else + add_object_page(__('Forms', "gravityforms"), __("Forms", "gravityforms") . $update_icon , $has_full_access ? "gform_full_access" : $min_cap, $parent_menu["name"] , $parent_menu["callback"], GFCommon::get_base_url() . '/images/gravity-admin-icon.png'); + + // Adding submenu pages + add_submenu_page($parent_menu["name"], __("Edit Forms", "gravityforms"), __("Edit Forms", "gravityforms"), $has_full_access ? "gform_full_access" : "gravityforms_edit_forms", "gf_edit_forms", array("RGForms", "forms")); + + add_submenu_page($parent_menu["name"], __("New Form", "gravityforms"), __("New Form", "gravityforms"), $has_full_access ? "gform_full_access" : "gravityforms_create_form", "gf_new_form", array("RGForms", "new_form")); + + add_submenu_page($parent_menu["name"], __("Entries", "gravityforms"), __("Entries", "gravityforms"), $has_full_access ? "gform_full_access" : "gravityforms_view_entries", "gf_entries", array("RGForms", "all_leads_page")); + + if(is_array($addon_menus)){ + foreach($addon_menus as $addon_menu) + add_submenu_page($parent_menu["name"], $addon_menu["label"], $addon_menu["label"], $has_full_access ? "gform_full_access" : $addon_menu["permission"], $addon_menu["name"], $addon_menu["callback"]); + } + + add_submenu_page($parent_menu["name"], __("Settings", "gravityforms"), __("Settings", "gravityforms"), $has_full_access ? "gform_full_access" : "gravityforms_view_settings", "gf_settings", array("RGForms", "settings_page")); + + add_submenu_page($parent_menu["name"], __("Import/Export", "gravityforms"), __("Import/Export", "gravityforms"), $has_full_access ? "gform_full_access" : "gravityforms_export_entries", "gf_export", array("RGForms", "export_page")); + + if(current_user_can("install_plugins")){ + add_submenu_page($parent_menu["name"], __("Updates", "gravityforms"), __("Updates", "gravityforms"), $has_full_access ? "gform_full_access" : "gravityforms_view_updates", "gf_update", array("RGForms", "update_page")); + add_submenu_page($parent_menu["name"], __("Add-Ons", "gravityforms"), __("Add-Ons", "gravityforms"), $has_full_access ? "gform_full_access" : "gravityforms_view_addons", "gf_addons", array("RGForms", "addons_page")); + } + + add_submenu_page($parent_menu["name"], __("Help", "gravityforms"), __("Help", "gravityforms"), $has_full_access ? "gform_full_access" : $min_cap, "gf_help", array("RGForms", "help_page")); + + } + + //Returns the parent menu item. It needs to be the same as the first sub-menu (otherwise WP will duplicate the main menu as a sub-menu) + public static function get_parent_menu($addon_menus){ + + if(GFCommon::current_user_can_any("gravityforms_edit_forms")) + $parent = array("name" => "gf_edit_forms", "callback" => array("RGForms", "forms")); + + else if(GFCommon::current_user_can_any("gravityforms_create_form")) + $parent = array("name" => "gf_new_form", "callback" => array("RGForms", "new_form")); + + else if(GFCommon::current_user_can_any("gravityforms_view_entries")) + $parent = array("name" => "gf_entries", "callback" => array("RGForms", "all_leads_page")); + + else if(is_array($addon_menus) && sizeof($addon_menus) > 0){ + foreach($addon_menus as $addon_menu) + if(GFCommon::current_user_can_any($addon_menu["permission"])) + { + $parent = array("name" => $addon_menu["name"], "callback" => $addon_menu["callback"]); + break; + } + } + else if(GFCommon::current_user_can_any("gravityforms_view_settings")) + $parent = array("name" => "gf_settings", "callback" => array("RGForms", "settings_page")); + + else if(GFCommon::current_user_can_any("gravityforms_export_entries")) + $parent = array("name" => "gf_export", "callback" => array("RGForms", "export_page")); + + else if(GFCommon::current_user_can_any("gravityforms_view_updates")) + $parent = array("name" => "gf_update", "callback" => array("RGForms", "update_page")); + + else if(GFCommon::current_user_can_any("gravityforms_view_addons")) + $parent = array("name" => "gf_addons", "callback" => array("RGForms", "addons_page")); + + else if(GFCommon::current_user_can_any(GFCommon::all_caps())) + $parent = array("name" => "gf_help", "callback" => array("RGForms", "help_page")); + + return $parent; + } + + //Parses the [gravityform shortcode and returns the front end form UI + public static function parse_shortcode($attributes, $content = null){ + extract(shortcode_atts(array( + 'title' => true, + 'description' => true, + 'id' => 0, + 'name' => '', + 'field_values' => "", + 'ajax' => false, + 'tabindex' => 1, + 'action' => 'form' + ), $attributes)); + + $shortcode_string = ""; + + switch($action) { + case 'conditional': + $shortcode_string = GFCommon::conditional_shortcode($attributes, $content); + break; + + case 'form' : + //displaying form + $title = strtolower($title) == "false" ? false : true; + $description = strtolower($description) == "false" ? false : true; + $field_values = htmlspecialchars_decode($field_values); + $field_values = str_replace("&", "&", $field_values); + + $ajax = strtolower($ajax) == "true" ? true : false; + + //using name to lookup form if id is not specified + if(empty($id)) + $id = $name; + + parse_str($field_values, $field_value_array); //parsing query string like string for field values and placing them into an associative array + $field_value_array = stripslashes_deep($field_value_array); + + $shortcode_string = self::get_form($id, $title, $description, false, $field_value_array, $ajax, $tabindex); + + break; + } + + $shortcode_string = apply_filters("gform_shortcode_{$action}", $shortcode_string, $attributes, $content); + + return $shortcode_string; + } + + //------------------------------------------------- + //----------- AJAX -------------------------------- + + public function ajax_parse_request($wp) { + + if (isset($_POST["gform_ajax"])) { + parse_str($_POST["gform_ajax"]); + + require_once(GFCommon::get_base_path() . "/form_display.php"); + $result = GFFormDisplay::get_form($form_id, $title, $description, false, $_POST["gform_field_values"], true); + die($result); + } + } + +//------------------------------------------------------ +//------------- PAGE/POST EDIT PAGE --------------------- + + //Action target that adds the "Insert Form" button to the post/page edit screen + public static function add_form_button($context){ + $is_post_edit_page = in_array(RG_CURRENT_PAGE, array('post.php', 'page.php', 'page-new.php', 'post-new.php')); + if(!$is_post_edit_page) + return $context; + + $image_btn = GFCommon::get_base_url() . "/images/form-button.png"; + $out = '' . __('; + return $context . $out; + } + + //Action target that displays the popup to insert a form to a post/page + function add_mce_popup(){ + ?> + + + + + ' . __( 'Settings', 'gravityforms' ) . ''); + + return $links; + } + + //Displays message on Plugin's page + public static function plugin_row($plugin_name){ + + $key = GFCommon::get_key(); + $version_info = GFCommon::get_version_info(); + + if(!$version_info["is_valid_key"]){ + + $plugin_name = "gravityforms/gravityforms.php"; + + $new_version = version_compare(GFCommon::$version, $version_info["version"], '<') ? __('There is a new version of Gravity Forms available.', 'gravityforms') .' '. sprintf(__('View version %s Details', 'gravityforms'), $version_info["version"]) . '. ' : ''; + echo '
            ' . $new_version . __('Register your copy of Gravity Forms to receive access to automatic upgrades and support. Need a license key? Purchase one now.', 'gravityforms') . '
            '; + } + } + + //Displays current version details on Plugin's page + public static function display_changelog(){ + if($_REQUEST["plugin"] != "gravityforms") + return; + + $page_text = self::get_changelog(); + echo $page_text; + + exit; + } + + public static function get_changelog(){ + $key = GFCommon::get_key(); + $body = "key=$key"; + $options = array('method' => 'POST', 'timeout' => 3, 'body' => $body); + $options['headers'] = array( + 'Content-Type' => 'application/x-www-form-urlencoded; charset=' . get_option('blog_charset'), + 'Content-Length' => strlen($body), + 'User-Agent' => 'WordPress/' . get_bloginfo("version"), + 'Referer' => get_bloginfo("url") + ); + + $raw_response = wp_remote_request(GRAVITY_MANAGER_URL . "/changelog.php?" . GFCommon::get_remote_request_params(), $options); + + if ( is_wp_error( $raw_response ) || 200 != $raw_response['response']['code']){ + $page_text = __("Oops!! Something went wrong.
            Please try again or contact us.", 'gravityforms'); + } + else{ + $page_text = $raw_response['body']; + if(substr($page_text, 0, 10) != "") + $page_text = ""; + } + return stripslashes($page_text); + } + +//------------------------------------------------------ +//-------------- DASHBOARD PAGE ------------------------- + + //Registers the dashboard widget + public static function dashboard_setup(){ + $dashboard_title = apply_filters("gform_dashboard_title", __("Forms", "gravityforms")); + wp_add_dashboard_widget('rg_forms_dashboard', $dashboard_title, array('RGForms', 'dashboard')); + } + + //Displays the dashboard UI + public static function dashboard(){ + $forms = RGFormsModel::get_form_summary(); + + if(sizeof($forms) > 0){ + ?> + + + + + + + + + + + + + + + + + + +
            + 0 ? "font-weight:bold;" : "" ?>" href="admin.php?page=gf_entries&view=entries&id=" title=" : "> + 0 ? "font-weight:bold;" : "" ?>" href="admin.php?page=gf_entries&view=entries&filter=unread&id=" title="">" title="">
            + +

            + +

            + +
            + ', ''); ?> +
            + ", ""); + }*/ + $message = sprintf(__("There is an update available for Gravity Forms. %sView Details%s %s", "gravityforms"), "", "", $auto_upgrade); + ?> +
            + +
            + + $plugin){ + $is_active = is_plugin_active($key); + $installed_plugin = array("plugin" => $key, "name" => $plugin["Name"], "is_active"=>$is_active); + $installed_plugin["activation_url"] = $is_active ? "" : wp_nonce_url("plugins.php?action=activate&plugin={$key}", "activate-plugin_{$key}"); + $installed_plugin["deactivation_url"] = !$is_active ? "" : wp_nonce_url("plugins.php?action=deactivate&plugin={$key}", "deactivate-plugin_{$key}"); + + $installed_plugins[] = $installed_plugin; + } + + $nonces = self::get_addon_nonces(); + + $body = array("plugins" => urlencode(serialize($installed_plugins)), "nonces" => urlencode(serialize($nonces)), "key" => GFCommon::get_key()); + $options = array('body' => $body, 'headers' => array('Referer' => get_bloginfo("url"))); + + $request_url = GRAVITY_MANAGER_URL . "/api.php?op=plugin_browser&{$_SERVER["QUERY_STRING"]}"; + $raw_response = wp_remote_post($request_url, $options); + + if ( is_wp_error( $raw_response ) || $raw_response['response']['code'] != 200){ + echo "
            " . __("Add-On browser is currently unavailable. Please try again later.", "gravityforms") . "
            "; + } + else{ + echo GFCommon::get_remote_message(); + echo $raw_response["body"]; + } + } + + public static function get_addon_info($api, $action, $args){ + if($action == "plugin_information" && empty($api) && !rgempty("rg", $_GET)){ + $request_url = GRAVITY_MANAGER_URL . "/api.php?op=get_plugin&slug={$args->slug}"; + $raw_response = wp_remote_post($request_url); + + if ( is_wp_error( $raw_response ) || $raw_response['response']['code'] != 200) + return false; + + $plugin = unserialize($raw_response["body"]); + + $api = new stdClass(); + $api->name = $plugin["title"]; + $api->version = $plugin["version"]; + $api->download_link = $plugin["download_url"]; + } + return $api; + } + + public static function get_addon_nonces(){ + $request_url = GRAVITY_MANAGER_URL . "/api.php?op=get_plugins"; + $raw_response = wp_remote_get($request_url); + + if ( is_wp_error( $raw_response ) || $raw_response['response']['code'] != 200) + return false; + + $addons = unserialize($raw_response["body"]); + $nonces = array(); + foreach($addons as $addon){ + $nonces[$addon["key"]] = wp_create_nonce("install-plugin_{$addon["key"]}"); + } + + return $nonces; + } + + public static function start_export(){ + require_once(GFCommon::get_base_path() . "/export.php"); + GFExport::start_export(); + } + + public static function get_post_category_values(){ + require_once(GFCommon::get_base_path() . "/form_detail.php"); + GFFormDetail::get_post_category_values(); + } + + public static function get_notification_post_category_values(){ + require_once(GFCommon::get_base_path() . "/notification.php"); + GFNotification::get_post_category_values(); + } + + public static function all_leads_page(){ + + //displaying lead detail page if lead id is in the query string + if(rgget('lid') || !rgblank(rgget('pos'))) + { + require_once(GFCommon::get_base_path() . "/entry_detail.php"); + GFEntryDetail::lead_detail_page(); + } + else{ + require_once(GFCommon::get_base_path() . "/entry_list.php"); + GFEntryList::all_leads_page(); + } + } + + public static function form_list_page(){ + require_once(GFCommon::get_base_path() . "/form_list.php"); + GFFormList::form_list_page(); + } + + public static function forms(){ + if(!GFCommon::ensure_wp_version()) + return; + + $id = RGForms::get("id"); + $view = RGForms::get("view"); + + if($view == "entries"){ + require_once(GFCommon::get_base_path() . "/entry_list.php"); + GFEntryList::leads_page($id); + } + else if($view == "entry"){ + require_once(GFCommon::get_base_path() . "/entry_detail.php"); + GFEntryDetail::lead_detail_page(); + } + else if($view == "notification"){ + require_once(GFCommon::get_base_path() . "/notification.php"); + GFNotification::notification_page($id); + } + else if(is_numeric($id)){ + self::forms_page($id); + } + else{ + self::form_list_page(); + } + + } + + public static function get($name, $array=null){ + if(!$array) + $array = $_GET; + + if(isset($array[$name])) + return $array[$name]; + + return ""; + } + + public static function post($name){ + if(isset($_POST[$name])) + return $_POST[$name]; + + return ""; + } + + // AJAX Function + public static function resend_notifications(){ + + check_admin_referer('gf_resend_notifications', 'gf_resend_notifications'); + + $leads = rgpost('leadIds'); // may be a single ID or an array of IDs + $leads = !is_array($leads) ? array($leads) : $leads; + + $form = RGFormsModel::get_form_meta(rgpost('formId')); + + if(empty($leads) || empty($form)) { + _e("There was an error while resending the notifications.", "gravityforms"); + die(); + }; + + $send_admin = rgpost('sendAdmin'); + $send_user = rgpost('sendUser'); + $override_options = array(); + $validation_errors = array(); + + if(rgpost('sendTo')) { + + if(rgpost('sendTo') && GFCommon::is_invalid_or_empty_email(rgpost('sendTo'))) + $validation_errors[] = __("The Send To email address provided is not valid.", "gravityforms"); + + if(!empty($validation_errors)) { + echo count($validation_errors) > 1 ? '
            • ' . implode('
            • ', $validation_errors) . '
            ' : $validation_errors[0]; + die(); + } + + $override_options['to'] = rgpost('sendTo'); + $override_options['bcc'] = ''; // overwrite bcc settings + + } + + foreach($leads as $lead_id){ + + $lead = RGFormsModel::get_lead($lead_id); + + if($send_admin) + GFCommon::send_admin_notification($form, $lead, $override_options); + + if($send_user) + GFCommon::send_user_notification($form, $lead, $override_options); + + } + + die(); + + } + +//------------------------------------------------- +//----------- AJAX CALLS -------------------------- + //captcha image + + public static function captcha_image(){ + $field = array("simpleCaptchaSize" => $_GET["size"], "simpleCaptchaFontColor"=> $_GET["fg"], "simpleCaptchaBackgroundColor"=>$_GET["bg"]); + if($_GET["type"] == "math") + $captcha = GFCommon::get_math_captcha($field, $_GET["pos"]); + else + $captcha = GFCommon::get_captcha($field); + + @ini_set('memory_limit', '256M'); + $image = imagecreatefrompng($captcha["path"]); + + include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); + wp_stream_image($image, "image/png", 0); + imagedestroy($image); + die(); + } + + //entry list + public static function update_form_active(){ + check_ajax_referer('rg_update_form_active','rg_update_form_active'); + RGFormsModel::update_form_active($_POST["form_id"], $_POST["is_active"]); + } + public static function update_lead_property(){ + check_ajax_referer('rg_update_lead_property','rg_update_lead_property'); + RGFormsModel::update_lead_property($_POST["lead_id"], $_POST["name"], $_POST["value"]); + } + + public static function update_lead_status(){ + check_ajax_referer('gf_delete_entry'); + $status = rgpost("status"); + $lead_id = rgpost("entry"); + + switch($status){ + case "unspam" : + //TODO: call akismet and set entry as not spam. + RGFormsModel::update_lead_property($lead_id, "status", "active"); + break; + + case "delete" : + RGFormsModel::delete_lead($lead_id); + break; + + default : + RGFormsModel::update_lead_property($lead_id, "status", $status); + break; + } + header("Content-Type: text/xml"); + echo ""; + exit(); + + } + + //settings + public static function upgrade_license(){ + require_once(GFCommon::get_base_path() . "/settings.php"); + GFSettings::upgrade_license(); + } + + //form detail + public static function save_form(){ + require_once(GFCommon::get_base_path() . "/form_detail.php"); + GFFormDetail::save_form(); + } + public static function add_field(){ + require_once(GFCommon::get_base_path() . "/form_detail.php"); + GFFormDetail::add_field(); + } + public static function duplicate_field(){ + require_once(GFCommon::get_base_path() . "/form_detail.php"); + GFFormDetail::duplicate_field(); + } + public static function delete_field(){ + require_once(GFCommon::get_base_path() . "/form_detail.php"); + GFFormDetail::delete_field(); + } + public static function change_input_type(){ + require_once(GFCommon::get_base_path() . "/form_detail.php"); + GFFormDetail::change_input_type(); + } + public static function delete_custom_choice(){ + require_once(GFCommon::get_base_path() . "/form_detail.php"); + GFFormDetail::delete_custom_choice(); + } + public static function save_custom_choice(){ + require_once(GFCommon::get_base_path() . "/form_detail.php"); + GFFormDetail::save_custom_choice(); + } + + //entry detail + public static function delete_file(){ + check_ajax_referer("rg_delete_file", "rg_delete_file"); + $lead_id = intval($_POST["lead_id"]); + $field_id = intval($_POST["field_id"]); + + RGFormsModel::delete_file($lead_id, $field_id); + die("EndDeleteFile($field_id);"); + } + + //export + public static function select_export_form(){ + check_ajax_referer("rg_select_export_form", "rg_select_export_form"); + $form_id = intval($_POST["form_id"]); + $form = RGFormsModel::get_form_meta($form_id); + $fields = array(); + + //Adding default fields + array_push($form["fields"],array("id" => "created_by" , "label" => __("Created By (User Id)", "gravityforms"))); + array_push($form["fields"],array("id" => "id" , "label" => __("Entry Id", "gravityforms"))); + array_push($form["fields"],array("id" => "date_created" , "label" => __("Entry Date", "gravityforms"))); + array_push($form["fields"],array("id" => "source_url" , "label" => __("Source Url", "gravityforms"))); + array_push($form["fields"],array("id" => "transaction_id" , "label" => __("Transaction Id", "gravityforms"))); + array_push($form["fields"],array("id" => "payment_amount" , "label" => __("Payment Amount", "gravityforms"))); + array_push($form["fields"],array("id" => "payment_date" , "label" => __("Payment Date", "gravityforms"))); + array_push($form["fields"],array("id" => "payment_status" , "label" => __("Payment Status", "gravityforms"))); + array_push($form["fields"],array("id" => "post_id" , "label" => __("Post Id", "gravityforms"))); + array_push($form["fields"],array("id" => "user_agent" , "label" => __("User Agent", "gravityforms"))); + array_push($form["fields"],array("id" => "ip" , "label" => __("User IP", "gravityforms"))); + + if(is_array($form["fields"])){ + foreach($form["fields"] as $field){ + if(is_array(rgar($field,"inputs"))){ + foreach($field["inputs"] as $input) + $fields[] = array($input["id"], GFCommon::get_label($field, $input["id"])); + } + else if(!rgar($field,"displayOnly")){ + $fields[] = array($field["id"], GFCommon::get_label($field)); + } + } + } + $field_json = GFCommon::json_encode($fields); + + die("EndSelectExportForm($field_json);"); + } + + public static function top_toolbar(){ + + $forms = RGFormsModel::get_forms(null, "title"); + $id = rgempty("id", $_GET) ? count($forms) > 0 ? $forms[0]->id : "0" : rgget("id"); + + ?> + + + +
            + +
            + + + $name)) + return $obj->$name; + + return ''; +} +} +if(!function_exists("rgexplode")){ +function rgexplode($sep, $string, $count){ + $ary = explode($sep, $string); + while(count($ary) < $count) + $ary[] = ""; + + return $ary; +} +} + +?> diff --git a/wp-content/plugins/gravityforms/help.php b/wp-content/plugins/gravityforms/help.php new file mode 100644 index 0000000..1af1b72 --- /dev/null +++ b/wp-content/plugins/gravityforms/help.php @@ -0,0 +1,182 @@ + + +
            +

            +

            + +
            + +
            IMPORTANT NOTICE: We do not provide support via e-mail. Please post any support queries in our support forums.", "gravityforms") ?>
            + +
            frequently asked questions (FAQ) first. If you still can't find the answer you need visit our support forums where we will be happy to answer your questions and assist you with any problems. Please note: If you have not purchased a license from us, you won't have access to these help resources.", "gravityforms"); ?>
            + + +
            + +

            + Note:
            Only licensed Gravity Forms customers are granted access to the documentation section.", "gravityforms"); ?> +
              +
            • +
              +
              + + "> +
              +
              + +
            • +
            + +
            + +

            + Please Note: Only licensed Gravity Forms customers are granted access to the FAQ section.", "gravityforms"); ?> +
              +
            • +
              +
              + + "> +
              +
              + +
            • + +
            + +
            + +

            + Please Note: Only licensed Gravity Forms customers are granted access to the support forums.", "gravityforms"); ?> +
              +
            • +
              +
              + + "> +
              +
              + +
            • + +
            + +
            + +

            + Please Note: Only licensed Gravity Forms customers are granted access to the downloads section.", "gravityforms"); ?> +
              +
            • +
              +
              + + "> +
              +
              + +
            • + +
            + + +
            + +

            + Please note: The Gravity Forms support team does not provide support for third party scripts, widgets, etc.", "gravityforms"); ?> + + + + + +
            +
            + + + \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/images/active0.png b/wp-content/plugins/gravityforms/images/active0.png new file mode 100644 index 0000000..840c3ce Binary files /dev/null and b/wp-content/plugins/gravityforms/images/active0.png differ diff --git a/wp-content/plugins/gravityforms/images/active1.png b/wp-content/plugins/gravityforms/images/active1.png new file mode 100644 index 0000000..003e0bd Binary files /dev/null and b/wp-content/plugins/gravityforms/images/active1.png differ diff --git a/wp-content/plugins/gravityforms/images/add.png b/wp-content/plugins/gravityforms/images/add.png new file mode 100644 index 0000000..227426e Binary files /dev/null and b/wp-content/plugins/gravityforms/images/add.png differ diff --git a/wp-content/plugins/gravityforms/images/arrow-right.jpg b/wp-content/plugins/gravityforms/images/arrow-right.jpg new file mode 100644 index 0000000..84e46f4 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/arrow-right.jpg differ diff --git a/wp-content/plugins/gravityforms/images/arrow-rightleft.jpg b/wp-content/plugins/gravityforms/images/arrow-rightleft.jpg new file mode 100644 index 0000000..54d5878 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/arrow-rightleft.jpg differ diff --git a/wp-content/plugins/gravityforms/images/blank.gif b/wp-content/plugins/gravityforms/images/blank.gif new file mode 100644 index 0000000..e565824 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/blank.gif differ diff --git a/wp-content/plugins/gravityforms/images/calendar.png b/wp-content/plugins/gravityforms/images/calendar.png new file mode 100644 index 0000000..6b354e3 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/calendar.png differ diff --git a/wp-content/plugins/gravityforms/images/captcha_blackglass.jpg b/wp-content/plugins/gravityforms/images/captcha_blackglass.jpg new file mode 100644 index 0000000..eb8a16b Binary files /dev/null and b/wp-content/plugins/gravityforms/images/captcha_blackglass.jpg differ diff --git a/wp-content/plugins/gravityforms/images/captcha_clean.jpg b/wp-content/plugins/gravityforms/images/captcha_clean.jpg new file mode 100644 index 0000000..0490657 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/captcha_clean.jpg differ diff --git a/wp-content/plugins/gravityforms/images/captcha_large.png b/wp-content/plugins/gravityforms/images/captcha_large.png new file mode 100644 index 0000000..efaab53 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/captcha_large.png differ diff --git a/wp-content/plugins/gravityforms/images/captcha_medium.png b/wp-content/plugins/gravityforms/images/captcha_medium.png new file mode 100644 index 0000000..d76b775 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/captcha_medium.png differ diff --git a/wp-content/plugins/gravityforms/images/captcha_red.jpg b/wp-content/plugins/gravityforms/images/captcha_red.jpg new file mode 100644 index 0000000..7a595f5 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/captcha_red.jpg differ diff --git a/wp-content/plugins/gravityforms/images/captcha_small.png b/wp-content/plugins/gravityforms/images/captcha_small.png new file mode 100644 index 0000000..fd528e7 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/captcha_small.png differ diff --git a/wp-content/plugins/gravityforms/images/captcha_white.jpg b/wp-content/plugins/gravityforms/images/captcha_white.jpg new file mode 100644 index 0000000..517df7b Binary files /dev/null and b/wp-content/plugins/gravityforms/images/captcha_white.jpg differ diff --git a/wp-content/plugins/gravityforms/images/chosen-sprite.png b/wp-content/plugins/gravityforms/images/chosen-sprite.png new file mode 100644 index 0000000..f20db44 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/chosen-sprite.png differ diff --git a/wp-content/plugins/gravityforms/images/close.png b/wp-content/plugins/gravityforms/images/close.png new file mode 100644 index 0000000..db6fb11 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/close.png differ diff --git a/wp-content/plugins/gravityforms/images/color.png b/wp-content/plugins/gravityforms/images/color.png new file mode 100644 index 0000000..809fb00 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/color.png differ diff --git a/wp-content/plugins/gravityforms/images/cross.png b/wp-content/plugins/gravityforms/images/cross.png new file mode 100644 index 0000000..1514d51 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/cross.png differ diff --git a/wp-content/plugins/gravityforms/images/datepicker_arrow_left.gif b/wp-content/plugins/gravityforms/images/datepicker_arrow_left.gif new file mode 100644 index 0000000..d6c523b Binary files /dev/null and b/wp-content/plugins/gravityforms/images/datepicker_arrow_left.gif differ diff --git a/wp-content/plugins/gravityforms/images/datepicker_arrow_right.gif b/wp-content/plugins/gravityforms/images/datepicker_arrow_right.gif new file mode 100644 index 0000000..d65b2ed Binary files /dev/null and b/wp-content/plugins/gravityforms/images/datepicker_arrow_right.gif differ diff --git a/wp-content/plugins/gravityforms/images/delete.png b/wp-content/plugins/gravityforms/images/delete.png new file mode 100644 index 0000000..284bb9c Binary files /dev/null and b/wp-content/plugins/gravityforms/images/delete.png differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_audio.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_audio.gif new file mode 100644 index 0000000..22dbad8 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_audio.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_css.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_css.gif new file mode 100644 index 0000000..f41be96 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_css.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_doc.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_doc.gif new file mode 100644 index 0000000..31e2217 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_doc.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_fla.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_fla.gif new file mode 100644 index 0000000..ed2e018 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_fla.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_generic.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_generic.gif new file mode 100644 index 0000000..a483fa9 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_generic.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_html.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_html.gif new file mode 100644 index 0000000..cc1f8e9 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_html.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_image.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_image.gif new file mode 100644 index 0000000..b62949f Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_image.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_js.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_js.gif new file mode 100644 index 0000000..c17243e Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_js.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_log.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_log.gif new file mode 100644 index 0000000..09c4ee3 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_log.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_mov.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_mov.gif new file mode 100644 index 0000000..821024e Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_mov.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_pdf.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_pdf.gif new file mode 100644 index 0000000..fdd6634 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_pdf.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_php.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_php.gif new file mode 100644 index 0000000..b7cb745 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_php.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_ppt.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_ppt.gif new file mode 100644 index 0000000..b788279 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_ppt.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_psd.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_psd.gif new file mode 100644 index 0000000..16fb71b Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_psd.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_sql.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_sql.gif new file mode 100644 index 0000000..f129eb8 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_sql.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_swf.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_swf.gif new file mode 100644 index 0000000..8dd07cf Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_swf.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_txt.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_txt.gif new file mode 100644 index 0000000..a215971 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_txt.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_video.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_video.gif new file mode 100644 index 0000000..e442f9e Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_video.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_xls.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_xls.gif new file mode 100644 index 0000000..16a039f Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_xls.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_xml.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_xml.gif new file mode 100644 index 0000000..32c163a Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_xml.gif differ diff --git a/wp-content/plugins/gravityforms/images/doctypes/icon_zip.gif b/wp-content/plugins/gravityforms/images/doctypes/icon_zip.gif new file mode 100644 index 0000000..bc15b68 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/doctypes/icon_zip.gif differ diff --git a/wp-content/plugins/gravityforms/images/download.png b/wp-content/plugins/gravityforms/images/download.png new file mode 100644 index 0000000..884ffd6 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/download.png differ diff --git a/wp-content/plugins/gravityforms/images/duplicate.png b/wp-content/plugins/gravityforms/images/duplicate.png new file mode 100644 index 0000000..c0ad676 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/duplicate.png differ diff --git a/wp-content/plugins/gravityforms/images/edit.png b/wp-content/plugins/gravityforms/images/edit.png new file mode 100644 index 0000000..8095d00 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/edit.png differ diff --git a/wp-content/plugins/gravityforms/images/error.png b/wp-content/plugins/gravityforms/images/error.png new file mode 100644 index 0000000..628cf2d Binary files /dev/null and b/wp-content/plugins/gravityforms/images/error.png differ diff --git a/wp-content/plugins/gravityforms/images/exclamation.png b/wp-content/plugins/gravityforms/images/exclamation.png new file mode 100644 index 0000000..c37bd06 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/exclamation.png differ diff --git a/wp-content/plugins/gravityforms/images/expand_title.png b/wp-content/plugins/gravityforms/images/expand_title.png new file mode 100644 index 0000000..9ffebb6 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/expand_title.png differ diff --git a/wp-content/plugins/gravityforms/images/form-button.png b/wp-content/plugins/gravityforms/images/form-button.png new file mode 100644 index 0000000..4f01bec Binary files /dev/null and b/wp-content/plugins/gravityforms/images/form-button.png differ diff --git a/wp-content/plugins/gravityforms/images/form_options.png b/wp-content/plugins/gravityforms/images/form_options.png new file mode 100644 index 0000000..41914b4 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/form_options.png differ diff --git a/wp-content/plugins/gravityforms/images/gf_creditcard_icons.png b/wp-content/plugins/gravityforms/images/gf_creditcard_icons.png new file mode 100644 index 0000000..22f239d Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_creditcard_icons.png differ diff --git a/wp-content/plugins/gravityforms/images/gf_entry_paging_sprite.jpg b/wp-content/plugins/gravityforms/images/gf_entry_paging_sprite.jpg new file mode 100644 index 0000000..526b54a Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_entry_paging_sprite.jpg differ diff --git a/wp-content/plugins/gravityforms/images/gf_fieldsettings_header.jpg b/wp-content/plugins/gravityforms/images/gf_fieldsettings_header.jpg new file mode 100644 index 0000000..24c7b12 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_fieldsettings_header.jpg differ diff --git a/wp-content/plugins/gravityforms/images/gf_formsettings_header.jpg b/wp-content/plugins/gravityforms/images/gf_formsettings_header.jpg new file mode 100644 index 0000000..26944c2 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_formsettings_header.jpg differ diff --git a/wp-content/plugins/gravityforms/images/gf_html_admin_placeholder.jpg b/wp-content/plugins/gravityforms/images/gf_html_admin_placeholder.jpg new file mode 100644 index 0000000..528a5a7 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_html_admin_placeholder.jpg differ diff --git a/wp-content/plugins/gravityforms/images/gf_media_button_bg.jpg b/wp-content/plugins/gravityforms/images/gf_media_button_bg.jpg new file mode 100644 index 0000000..d3372a9 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_media_button_bg.jpg differ diff --git a/wp-content/plugins/gravityforms/images/gf_new_option_bg 2.png b/wp-content/plugins/gravityforms/images/gf_new_option_bg 2.png new file mode 100644 index 0000000..3486ed7 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_new_option_bg 2.png differ diff --git a/wp-content/plugins/gravityforms/images/gf_new_option_bg.png b/wp-content/plugins/gravityforms/images/gf_new_option_bg.png new file mode 100644 index 0000000..3486ed7 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_new_option_bg.png differ diff --git a/wp-content/plugins/gravityforms/images/gf_pagebreak_end.png b/wp-content/plugins/gravityforms/images/gf_pagebreak_end.png new file mode 100644 index 0000000..6331e5d Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_pagebreak_end.png differ diff --git a/wp-content/plugins/gravityforms/images/gf_pagebreak_first.png b/wp-content/plugins/gravityforms/images/gf_pagebreak_first.png new file mode 100644 index 0000000..0214eee Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_pagebreak_first.png differ diff --git a/wp-content/plugins/gravityforms/images/gf_pagebreak_inline.png b/wp-content/plugins/gravityforms/images/gf_pagebreak_inline.png new file mode 100644 index 0000000..5140d7a Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_pagebreak_inline.png differ diff --git a/wp-content/plugins/gravityforms/images/gf_taboff_bg.png b/wp-content/plugins/gravityforms/images/gf_taboff_bg.png new file mode 100644 index 0000000..529de9b Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_taboff_bg.png differ diff --git a/wp-content/plugins/gravityforms/images/gf_toolbar_bg.jpg b/wp-content/plugins/gravityforms/images/gf_toolbar_bg.jpg new file mode 100644 index 0000000..f50effc Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_toolbar_bg.jpg differ diff --git a/wp-content/plugins/gravityforms/images/gf_toolbar_iconsprite.png b/wp-content/plugins/gravityforms/images/gf_toolbar_iconsprite.png new file mode 100644 index 0000000..b002572 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gf_toolbar_iconsprite.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity-admin-icon.png b/wp-content/plugins/gravityforms/images/gravity-admin-icon.png new file mode 100644 index 0000000..5c02b87 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity-admin-icon.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity-edit-icon-32.png b/wp-content/plugins/gravityforms/images/gravity-edit-icon-32.png new file mode 100644 index 0000000..181b8fa Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity-edit-icon-32.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity-entry-icon-32.png b/wp-content/plugins/gravityforms/images/gravity-entry-icon-32.png new file mode 100644 index 0000000..98b3fd1 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity-entry-icon-32.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity-export-icon-32.png b/wp-content/plugins/gravityforms/images/gravity-export-icon-32.png new file mode 100644 index 0000000..abefda3 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity-export-icon-32.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity-help-icon-32.png b/wp-content/plugins/gravityforms/images/gravity-help-icon-32.png new file mode 100644 index 0000000..8c3689f Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity-help-icon-32.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity-import-icon-32.png b/wp-content/plugins/gravityforms/images/gravity-import-icon-32.png new file mode 100644 index 0000000..eb3f3fc Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity-import-icon-32.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity-notification-icon-32.png b/wp-content/plugins/gravityforms/images/gravity-notification-icon-32.png new file mode 100644 index 0000000..6c70abb Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity-notification-icon-32.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity-settings-icon-32.png b/wp-content/plugins/gravityforms/images/gravity-settings-icon-32.png new file mode 100644 index 0000000..64e8c63 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity-settings-icon-32.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity-title-icon-32.png b/wp-content/plugins/gravityforms/images/gravity-title-icon-32.png new file mode 100644 index 0000000..3620595 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity-title-icon-32.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity-update-icon-32.png b/wp-content/plugins/gravityforms/images/gravity-update-icon-32.png new file mode 100644 index 0000000..09ee2ad Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity-update-icon-32.png differ diff --git a/wp-content/plugins/gravityforms/images/gravity_logo.png b/wp-content/plugins/gravityforms/images/gravity_logo.png new file mode 100644 index 0000000..70e9c8d Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravity_logo.png differ diff --git a/wp-content/plugins/gravityforms/images/gravityforms_business_upgrade.png b/wp-content/plugins/gravityforms/images/gravityforms_business_upgrade.png new file mode 100644 index 0000000..5d90130 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravityforms_business_upgrade.png differ diff --git a/wp-content/plugins/gravityforms/images/gravityforms_developer_upgrade.png b/wp-content/plugins/gravityforms/images/gravityforms_developer_upgrade.png new file mode 100644 index 0000000..21732c6 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/gravityforms_developer_upgrade.png differ diff --git a/wp-content/plugins/gravityforms/images/hovergrad.png b/wp-content/plugins/gravityforms/images/hovergrad.png new file mode 100644 index 0000000..dd080f6 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/hovergrad.png differ diff --git a/wp-content/plugins/gravityforms/images/icon-question.png b/wp-content/plugins/gravityforms/images/icon-question.png new file mode 100644 index 0000000..b3aac72 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/icon-question.png differ diff --git a/wp-content/plugins/gravityforms/images/icon-question2.png b/wp-content/plugins/gravityforms/images/icon-question2.png new file mode 100644 index 0000000..ffbab73 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/icon-question2.png differ diff --git a/wp-content/plugins/gravityforms/images/loading.gif b/wp-content/plugins/gravityforms/images/loading.gif new file mode 100644 index 0000000..d42f72c Binary files /dev/null and b/wp-content/plugins/gravityforms/images/loading.gif differ diff --git a/wp-content/plugins/gravityforms/images/percentbar_bg.png b/wp-content/plugins/gravityforms/images/percentbar_bg.png new file mode 100644 index 0000000..050b897 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/percentbar_bg.png differ diff --git a/wp-content/plugins/gravityforms/images/percentbar_blue.png b/wp-content/plugins/gravityforms/images/percentbar_blue.png new file mode 100644 index 0000000..f965abe Binary files /dev/null and b/wp-content/plugins/gravityforms/images/percentbar_blue.png differ diff --git a/wp-content/plugins/gravityforms/images/percentbar_custom.png b/wp-content/plugins/gravityforms/images/percentbar_custom.png new file mode 100644 index 0000000..baf6304 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/percentbar_custom.png differ diff --git a/wp-content/plugins/gravityforms/images/percentbar_gray.png b/wp-content/plugins/gravityforms/images/percentbar_gray.png new file mode 100644 index 0000000..1e05e88 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/percentbar_gray.png differ diff --git a/wp-content/plugins/gravityforms/images/percentbar_green.png b/wp-content/plugins/gravityforms/images/percentbar_green.png new file mode 100644 index 0000000..0c8e2a5 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/percentbar_green.png differ diff --git a/wp-content/plugins/gravityforms/images/percentbar_orange.png b/wp-content/plugins/gravityforms/images/percentbar_orange.png new file mode 100644 index 0000000..49b5335 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/percentbar_orange.png differ diff --git a/wp-content/plugins/gravityforms/images/percentbar_red.png b/wp-content/plugins/gravityforms/images/percentbar_red.png new file mode 100644 index 0000000..cad91b8 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/percentbar_red.png differ diff --git a/wp-content/plugins/gravityforms/images/percentbar_yellow.png b/wp-content/plugins/gravityforms/images/percentbar_yellow.png new file mode 100644 index 0000000..db384a5 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/percentbar_yellow.png differ diff --git a/wp-content/plugins/gravityforms/images/prodlist.png b/wp-content/plugins/gravityforms/images/prodlist.png new file mode 100644 index 0000000..2a8fb79 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/prodlist.png differ diff --git a/wp-content/plugins/gravityforms/images/prodlist_last.png b/wp-content/plugins/gravityforms/images/prodlist_last.png new file mode 100644 index 0000000..24332c4 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/prodlist_last.png differ diff --git a/wp-content/plugins/gravityforms/images/remove.png b/wp-content/plugins/gravityforms/images/remove.png new file mode 100644 index 0000000..bfd82cc Binary files /dev/null and b/wp-content/plugins/gravityforms/images/remove.png differ diff --git a/wp-content/plugins/gravityforms/images/screen-options-left.gif b/wp-content/plugins/gravityforms/images/screen-options-left.gif new file mode 100644 index 0000000..d692d86 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/screen-options-left.gif differ diff --git a/wp-content/plugins/gravityforms/images/spinner.gif b/wp-content/plugins/gravityforms/images/spinner.gif new file mode 100644 index 0000000..e10b97f Binary files /dev/null and b/wp-content/plugins/gravityforms/images/spinner.gif differ diff --git a/wp-content/plugins/gravityforms/images/star0.png b/wp-content/plugins/gravityforms/images/star0.png new file mode 100644 index 0000000..37934af Binary files /dev/null and b/wp-content/plugins/gravityforms/images/star0.png differ diff --git a/wp-content/plugins/gravityforms/images/star1.png b/wp-content/plugins/gravityforms/images/star1.png new file mode 100644 index 0000000..4366d5f Binary files /dev/null and b/wp-content/plugins/gravityforms/images/star1.png differ diff --git a/wp-content/plugins/gravityforms/images/stop.png b/wp-content/plugins/gravityforms/images/stop.png new file mode 100644 index 0000000..0cfd585 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/stop.png differ diff --git a/wp-content/plugins/gravityforms/images/stopbanner.png b/wp-content/plugins/gravityforms/images/stopbanner.png new file mode 100644 index 0000000..3872044 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/stopbanner.png differ diff --git a/wp-content/plugins/gravityforms/images/tick.png b/wp-content/plugins/gravityforms/images/tick.png new file mode 100644 index 0000000..a9925a0 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/tick.png differ diff --git a/wp-content/plugins/gravityforms/images/top_highlight.png b/wp-content/plugins/gravityforms/images/top_highlight.png new file mode 100644 index 0000000..36e3555 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/top_highlight.png differ diff --git a/wp-content/plugins/gravityforms/images/trash.png b/wp-content/plugins/gravityforms/images/trash.png new file mode 100644 index 0000000..c1282db Binary files /dev/null and b/wp-content/plugins/gravityforms/images/trash.png differ diff --git a/wp-content/plugins/gravityforms/images/webkit-enhanced-select.png b/wp-content/plugins/gravityforms/images/webkit-enhanced-select.png new file mode 100644 index 0000000..fe2b24b Binary files /dev/null and b/wp-content/plugins/gravityforms/images/webkit-enhanced-select.png differ diff --git a/wp-content/plugins/gravityforms/images/wp-logo.gif b/wp-content/plugins/gravityforms/images/wp-logo.gif new file mode 100644 index 0000000..42bc676 Binary files /dev/null and b/wp-content/plugins/gravityforms/images/wp-logo.gif differ diff --git a/wp-content/plugins/gravityforms/js.php b/wp-content/plugins/gravityforms/js.php new file mode 100644 index 0000000..c0bfb4e --- /dev/null +++ b/wp-content/plugins/gravityforms/js.php @@ -0,0 +1,928 @@ + + + + \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/js/chosen.jquery.min.js b/wp-content/plugins/gravityforms/js/chosen.jquery.min.js new file mode 100644 index 0000000..7f1e8bc --- /dev/null +++ b/wp-content/plugins/gravityforms/js/chosen.jquery.min.js @@ -0,0 +1,10 @@ +// Chosen, a Select Box Enhancer for jQuery and Protoype +// by Patrick Filler for Harvest, http://getharvest.com +// +// Version 0.9.3 +// Full source at https://github.com/harvesthq/chosen +// Copyright (c) 2011 Harvest http://getharvest.com + +// MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md +// This file is generated by `cake build`, do not edit it by hand. +(function(){var a,b,c,d,e=function(a,b){return function(){return a.apply(b,arguments)}};d=this,a=jQuery,a.fn.extend({chosen:function(c){return a.browser!=="msie"||a.browser.version!=="6.0"&&a.browser.version!=="7.0"?a(this).each(function(d){if(!a(this).hasClass("chzn-done"))return new b(this,c)}):this}}),b=function(){function b(b,c){this.form_field=b,this.options=c!=null?c:{},this.set_default_values(),this.form_field_jq=a(this.form_field),this.is_multiple=this.form_field.multiple,this.is_rtl=this.form_field_jq.hasClass("chzn-rtl"),this.default_text_default=this.form_field.multiple?"Select Some Options":"Select an Option",this.set_up_html(),this.register_observers(),this.form_field_jq.addClass("chzn-done")}b.prototype.set_default_values=function(){this.click_test_action=e(function(a){return this.test_active_click(a)},this),this.activate_action=e(function(a){return this.activate_field(a)},this),this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.result_single_selected=null,this.choices=0;return this.results_none_found=this.options.no_results_text||"No results match"},b.prototype.set_up_html=function(){var b,d,e,f;this.container_id=this.form_field.id.length?this.form_field.id.replace(/(:|\.)/g,"_"):this.generate_field_id(),this.container_id+="_chzn",this.f_width=this.form_field_jq.outerWidth(),this.default_text=this.form_field_jq.data("placeholder")?this.form_field_jq.data("placeholder"):this.default_text_default,b=a("
            ",{id:this.container_id,"class":"chzn-container"+(this.is_rtl?" chzn-rtl":""),style:"width: "+this.f_width+"px;"}),this.is_multiple?b.html('
              '):b.html(''+this.default_text+'
                '),this.form_field_jq.hide().after(b),this.container=a("#"+this.container_id),this.container.addClass("chzn-container-"+(this.is_multiple?"multi":"single")),this.dropdown=this.container.find("div.chzn-drop").first(),d=this.container.height(),e=this.f_width-c(this.dropdown),this.dropdown.css({width:e+"px",top:d+"px"}),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chzn-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chzn-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chzn-search").first(),this.selected_item=this.container.find(".chzn-single").first(),f=e-c(this.search_container)-c(this.search_field),this.search_field.css({width:f+"px"})),this.results_build();return this.set_tab_index()},b.prototype.register_observers=function(){this.container.mousedown(e(function(a){return this.container_mousedown(a)},this)),this.container.mouseenter(e(function(a){return this.mouse_enter(a)},this)),this.container.mouseleave(e(function(a){return this.mouse_leave(a)},this)),this.search_results.mouseup(e(function(a){return this.search_results_mouseup(a)},this)),this.search_results.mouseover(e(function(a){return this.search_results_mouseover(a)},this)),this.search_results.mouseout(e(function(a){return this.search_results_mouseout(a)},this)),this.form_field_jq.bind("liszt:updated",e(function(a){return this.results_update_field(a)},this)),this.search_field.blur(e(function(a){return this.input_blur(a)},this)),this.search_field.keyup(e(function(a){return this.keyup_checker(a)},this)),this.search_field.keydown(e(function(a){return this.keydown_checker(a)},this));if(this.is_multiple){this.search_choices.click(e(function(a){return this.choices_click(a)},this));return this.search_field.focus(e(function(a){return this.input_focus(a)},this))}},b.prototype.search_field_disabled=function(){this.is_disabled=this.form_field_jq.attr("disabled");if(this.is_disabled){this.container.addClass("chzn-disabled"),this.search_field.attr("disabled",!0),this.is_multiple||this.selected_item.unbind("focus",this.activate_action);return this.close_field()}this.container.removeClass("chzn-disabled"),this.search_field.attr("disabled",!1);if(!this.is_multiple)return this.selected_item.bind("focus",this.activate_action)},b.prototype.container_mousedown=function(b){if(!this.is_disabled){b&&b.type==="mousedown"&&b.stopPropagation();if(!this.pending_destroy_click){this.active_field?!this.is_multiple&&b&&(a(b.target)===this.selected_item||a(b.target).parents("a.chzn-single").length)&&(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(document).click(this.click_test_action),this.results_show());return this.activate_field()}return this.pending_destroy_click=!1}},b.prototype.mouse_enter=function(){return this.mouse_on_container=!0},b.prototype.mouse_leave=function(){return this.mouse_on_container=!1},b.prototype.input_focus=function(a){if(!this.active_field)return setTimeout(e(function(){return this.container_mousedown()},this),50)},b.prototype.input_blur=function(a){if(!this.mouse_on_container){this.active_field=!1;return setTimeout(e(function(){return this.blur_test()},this),100)}},b.prototype.blur_test=function(a){if(!this.active_field&&this.container.hasClass("chzn-container-active"))return this.close_field()},b.prototype.close_field=function(){a(document).unbind("click",this.click_test_action),this.is_multiple||(this.selected_item.attr("tabindex",this.search_field.attr("tabindex")),this.search_field.attr("tabindex",-1)),this.active_field=!1,this.results_hide(),this.container.removeClass("chzn-container-active"),this.winnow_results_clear(),this.clear_backstroke(),this.show_search_field_default();return this.search_field_scale()},b.prototype.activate_field=function(){!this.is_multiple&&!this.active_field&&(this.search_field.attr("tabindex",this.selected_item.attr("tabindex")),this.selected_item.attr("tabindex",-1)),this.container.addClass("chzn-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val());return this.search_field.focus()},b.prototype.test_active_click=function(b){return a(b.target).parents("#"+this.container_id).length?this.active_field=!0:this.close_field()},b.prototype.results_build=function(){var a,b,c,e,f,g;c=new Date,this.parsing=!0,this.results_data=d.SelectParser.select_to_array(this.form_field),this.is_multiple&&this.choices>0?(this.search_choices.find("li.search-choice").remove(),this.choices=0):this.is_multiple||this.selected_item.find("span").text(this.default_text),a="",g=this.results_data;for(e=0,f=g.length;e'+a("
                ").text(b.label).html()+""}return""},b.prototype.result_add_option=function(a){var b;if(!a.disabled){a.dom_id=this.container_id+"_o_"+a.array_index,b=a.selected&&this.is_multiple?[]:["active-result"],a.selected&&b.push("result-selected"),a.group_array_index!=null&&b.push("group-option");return'
              • '+a.html+"
              • "}return""},b.prototype.results_update_field=function(){this.result_clear_highlight(),this.result_single_selected=null;return this.results_build()},b.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight();if(b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(c'+b.html+''),d=a("#"+c).find("a").first();return d.click(e(function(a){return this.choice_destroy_link_click(a)},this))},b.prototype.choice_destroy_link_click=function(b){b.preventDefault();if(!this.is_disabled){this.pending_destroy_click=!0;return this.choice_destroy(a(b.target))}return b.stopPropagation},b.prototype.choice_destroy=function(a){this.choices-=1,this.show_search_field_default(),this.is_multiple&&this.choices>0&&this.search_field.val().length<1&&this.results_hide(),this.result_deselect(a.attr("rel"));return a.parents("li").first().remove()},b.prototype.result_select=function(a){var b,c,d,e;if(this.result_highlight){b=this.result_highlight,c=b.attr("id"),this.result_clear_highlight(),this.is_multiple?this.result_deactivate(b):(this.search_results.find(".result-selected").removeClass("result-selected"),this.result_single_selected=b),b.addClass("result-selected"),e=c.substr(c.lastIndexOf("_")+1),d=this.results_data[e],d.selected=!0,this.form_field.options[d.options_index].selected=!0,this.is_multiple?this.choice_build(d):this.selected_item.find("span").first().text(d.text),(!a.metaKey||!this.is_multiple)&&this.results_hide(),this.search_field.val(""),this.form_field_jq.trigger("change");return this.search_field_scale()}},b.prototype.result_activate=function(a){return a.addClass("active-result").show()},b.prototype.result_deactivate=function(a){return a.removeClass("active-result").hide()},b.prototype.result_deselect=function(b){var c,d;d=this.results_data[b],d.selected=!1,this.form_field.options[d.options_index].selected=!1,c=a("#"+this.container_id+"_o_"+b),c.removeClass("result-selected").addClass("active-result").show(),this.result_clear_highlight(),this.winnow_results(),this.form_field_jq.trigger("change");return this.search_field_scale()},b.prototype.results_search=function(a){return this.results_showing?this.winnow_results():this.results_show()},b.prototype.winnow_results=function(){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;j=new Date,this.no_results_clear(),h=0,i=this.search_field.val()===this.default_text?"":a("
                ").text(a.trim(this.search_field.val())).html(),f=new RegExp("^"+i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i"),m=new RegExp(i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),"i"),r=this.results_data;for(n=0,p=r.length;n=0||c.html.indexOf("[")===0){e=c.html.replace(/\[|\]/g,"").split(" ");if(e.length)for(o=0,q=e.length;o"+c.html.substr(k+i.length),l=l.substr(0,k)+""+l.substr(k)):l=c.html,a("#"+g).html!==l&&a("#"+g).html(l),this.result_activate(a("#"+g)),c.group_array_index!=null&&a("#"+this.results_data[c.group_array_index].dom_id).show()):(this.result_highlight&&g===this.result_highlight.attr("id")&&this.result_clear_highlight(),this.result_deactivate(a("#"+g)))}}return h<1&&i.length?this.no_results(i):this.winnow_results_set_highlight()},b.prototype.winnow_results_clear=function(){var b,c,d,e,f;this.search_field.val(""),c=this.search_results.find("li"),f=[];for(d=0,e=c.length;d'+this.results_none_found+' ""'),c.find("span").first().html(b);return this.search_results.append(c)},b.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},b.prototype.keydown_arrow=function(){var b,c;this.result_highlight?this.results_showing&&(c=this.result_highlight.nextAll("li.active-result").first(),c&&this.result_do_highlight(c)):(b=this.search_results.find("li.active-result").first(),b&&this.result_do_highlight(a(b)));if(!this.results_showing)return this.results_show()},b.prototype.keyup_arrow=function(){var a;if(!this.results_showing&&!this.is_multiple)return this.results_show();if(this.result_highlight){a=this.result_highlight.prevAll("li.active-result");if(a.length)return this.result_do_highlight(a.first());this.choices>0&&this.results_hide();return this.result_clear_highlight()}},b.prototype.keydown_backstroke=function(){if(this.pending_backstroke){this.choice_destroy(this.pending_backstroke.find("a").first());return this.clear_backstroke()}this.pending_backstroke=this.search_container.siblings("li.search-choice").last();return this.pending_backstroke.addClass("search-choice-focus")},b.prototype.clear_backstroke=function(){this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus");return this.pending_backstroke=null},b.prototype.keyup_checker=function(a){var b,c;b=(c=a.which)!=null?c:a.keyCode,this.search_field_scale();switch(b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices>0)return this.keydown_backstroke();if(!this.pending_backstroke){this.result_clear_highlight();return this.results_search()}break;case 13:a.preventDefault();if(this.results_showing)return this.result_select(a);break;case 27:if(this.results_showing)return this.results_hide();break;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},b.prototype.keydown_checker=function(a){var b,c;b=(c=a.which)!=null?c:a.keyCode,this.search_field_scale(),b!==8&&this.pending_backstroke&&this.clear_backstroke();switch(b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.mouse_on_container=!1;break;case 13:a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:this.keydown_arrow()}},b.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"];for(i=0,j=g.length;i",{style:f}),c.text(this.search_field.val()),a("body").append(c),h=c.width()+25,c.remove(),h>this.f_width-10&&(h=this.f_width-10),this.search_field.css({width:h+"px"}),b=this.container.height();return this.dropdown.css({top:b+"px"})}},b.prototype.generate_field_id=function(){var a;a=this.generate_random_id(),this.form_field.id=a;return a},b.prototype.generate_random_id=function(){var b;b="sel"+this.generate_random_char()+this.generate_random_char()+this.generate_random_char();while(a("#"+b).length>0)b+=this.generate_random_char();return b},b.prototype.generate_random_char=function(){var a,b,c;a="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ",c=Math.floor(Math.random()*a.length);return b=a.substring(c,c+1)};return b}(),c=function(a){var b;return b=a.outerWidth()-a.width()},d.get_side_border_padding=c}).call(this),function(){var a;a=function(){function a(){this.options_index=0,this.parsed=[]}a.prototype.add_node=function(a){return a.nodeName==="OPTGROUP"?this.add_group(a):this.add_option(a)},a.prototype.add_group=function(a){var b,c,d,e,f,g;b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:a.label,children:0,disabled:a.disabled}),f=a.childNodes,g=[];for(d=0,e=f.length;d
              "]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
              "]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
              ","
              "]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

              ";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
              ";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
              ").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
              ';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/js/jquery-ui/ui.core.js b/wp-content/plugins/gravityforms/js/jquery-ui/ui.core.js new file mode 100644 index 0000000..6be9993 --- /dev/null +++ b/wp-content/plugins/gravityforms/js/jquery-ui/ui.core.js @@ -0,0 +1,519 @@ +/* + * jQuery UI 1.7.1 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +;jQuery.ui || (function($) { + +var _remove = $.fn.remove, + isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9); + +//Helper functions and ui object +$.ui = { + version: "1.7.1", + + // $.ui.plugin is deprecated. Use the proxy pattern instead. + plugin: { + add: function(module, option, set) { + var proto = $.ui[module].prototype; + for(var i in set) { + proto.plugins[i] = proto.plugins[i] || []; + proto.plugins[i].push([option, set[i]]); + } + }, + call: function(instance, name, args) { + var set = instance.plugins[name]; + if(!set || !instance.element[0].parentNode) { return; } + + for (var i = 0; i < set.length; i++) { + if (instance.options[set[i][0]]) { + set[i][1].apply(instance.element, args); + } + } + } + }, + + contains: function(a, b) { + return document.compareDocumentPosition + ? a.compareDocumentPosition(b) & 16 + : a !== b && a.contains(b); + }, + + hasScroll: function(el, a) { + + //If overflow is hidden, the element might have extra content, but the user wants to hide it + if ($(el).css('overflow') == 'hidden') { return false; } + + var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop', + has = false; + + if (el[scroll] > 0) { return true; } + + // TODO: determine which cases actually cause this to happen + // if the element doesn't have the scroll set, see if it's possible to + // set the scroll + el[scroll] = 1; + has = (el[scroll] > 0); + el[scroll] = 0; + return has; + }, + + isOverAxis: function(x, reference, size) { + //Determines when x coordinate is over "b" element axis + return (x > reference) && (x < (reference + size)); + }, + + isOver: function(y, x, top, left, height, width) { + //Determines when x, y coordinates is over "b" element + return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width); + }, + + keyCode: { + BACKSPACE: 8, + CAPS_LOCK: 20, + COMMA: 188, + CONTROL: 17, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + INSERT: 45, + LEFT: 37, + NUMPAD_ADD: 107, + NUMPAD_DECIMAL: 110, + NUMPAD_DIVIDE: 111, + NUMPAD_ENTER: 108, + NUMPAD_MULTIPLY: 106, + NUMPAD_SUBTRACT: 109, + PAGE_DOWN: 34, + PAGE_UP: 33, + PERIOD: 190, + RIGHT: 39, + SHIFT: 16, + SPACE: 32, + TAB: 9, + UP: 38 + } +}; + +// WAI-ARIA normalization +if (isFF2) { + var attr = $.attr, + removeAttr = $.fn.removeAttr, + ariaNS = "http://www.w3.org/2005/07/aaa", + ariaState = /^aria-/, + ariaRole = /^wairole:/; + + $.attr = function(elem, name, value) { + var set = value !== undefined; + + return (name == 'role' + ? (set + ? attr.call(this, elem, name, "wairole:" + value) + : (attr.apply(this, arguments) || "").replace(ariaRole, "")) + : (ariaState.test(name) + ? (set + ? elem.setAttributeNS(ariaNS, + name.replace(ariaState, "aaa:"), value) + : attr.call(this, elem, name.replace(ariaState, "aaa:"))) + : attr.apply(this, arguments))); + }; + + $.fn.removeAttr = function(name) { + return (ariaState.test(name) + ? this.each(function() { + this.removeAttributeNS(ariaNS, name.replace(ariaState, "")); + }) : removeAttr.call(this, name)); + }; +} + +//jQuery plugins +$.fn.extend({ + remove: function() { + // Safari has a native remove event which actually removes DOM elements, + // so we have to use triggerHandler instead of trigger (#3037). + $("*", this).add(this).each(function() { + $(this).triggerHandler("remove"); + }); + return _remove.apply(this, arguments ); + }, + + enableSelection: function() { + return this + .attr('unselectable', 'off') + .css('MozUserSelect', '') + .unbind('selectstart.ui'); + }, + + disableSelection: function() { + return this + .attr('unselectable', 'on') + .css('MozUserSelect', 'none') + .bind('selectstart.ui', function() { return false; }); + }, + + scrollParent: function() { + var scrollParent; + if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { + scrollParent = this.parents().filter(function() { + return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); + }).eq(0); + } else { + scrollParent = this.parents().filter(function() { + return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); + }).eq(0); + } + + return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent; + } +}); + + +//Additional selectors +$.extend($.expr[':'], { + data: function(elem, i, match) { + return !!$.data(elem, match[3]); + }, + + focusable: function(element) { + var nodeName = element.nodeName.toLowerCase(), + tabIndex = $.attr(element, 'tabindex'); + return (/input|select|textarea|button|object/.test(nodeName) + ? !element.disabled + : 'a' == nodeName || 'area' == nodeName + ? element.href || !isNaN(tabIndex) + : !isNaN(tabIndex)) + // the element and all of its ancestors must be visible + // the browser may report that the area is hidden + && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length; + }, + + tabbable: function(element) { + var tabIndex = $.attr(element, 'tabindex'); + return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable'); + } +}); + + +// $.widget is a factory to create jQuery plugins +// taking some boilerplate code out of the plugin code +function getter(namespace, plugin, method, args) { + function getMethods(type) { + var methods = $[namespace][plugin][type] || []; + return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods); + } + + var methods = getMethods('getter'); + if (args.length == 1 && typeof args[0] == 'string') { + methods = methods.concat(getMethods('getterSetter')); + } + return ($.inArray(method, methods) != -1); +} + +$.widget = function(name, prototype) { + var namespace = name.split(".")[0]; + name = name.split(".")[1]; + + // create plugin method + $.fn[name] = function(options) { + var isMethodCall = (typeof options == 'string'), + args = Array.prototype.slice.call(arguments, 1); + + // prevent calls to internal methods + if (isMethodCall && options.substring(0, 1) == '_') { + return this; + } + + // handle getter methods + if (isMethodCall && getter(namespace, name, options, args)) { + var instance = $.data(this[0], name); + return (instance ? instance[options].apply(instance, args) + : undefined); + } + + // handle initialization and non-getter methods + return this.each(function() { + var instance = $.data(this, name); + + // constructor + (!instance && !isMethodCall && + $.data(this, name, new $[namespace][name](this, options))._init()); + + // method call + (instance && isMethodCall && $.isFunction(instance[options]) && + instance[options].apply(instance, args)); + }); + }; + + // create widget constructor + $[namespace] = $[namespace] || {}; + $[namespace][name] = function(element, options) { + var self = this; + + this.namespace = namespace; + this.widgetName = name; + this.widgetEventPrefix = $[namespace][name].eventPrefix || name; + this.widgetBaseClass = namespace + '-' + name; + + this.options = $.extend({}, + $.widget.defaults, + $[namespace][name].defaults, + $.metadata && $.metadata.get(element)[name], + options); + + this.element = $(element) + .bind('setData.' + name, function(event, key, value) { + if (event.target == element) { + return self._setData(key, value); + } + }) + .bind('getData.' + name, function(event, key) { + if (event.target == element) { + return self._getData(key); + } + }) + .bind('remove', function() { + return self.destroy(); + }); + }; + + // add widget prototype + $[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype); + + // TODO: merge getter and getterSetter properties from widget prototype + // and plugin prototype + $[namespace][name].getterSetter = 'option'; +}; + +$.widget.prototype = { + _init: function() {}, + destroy: function() { + this.element.removeData(this.widgetName) + .removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled') + .removeAttr('aria-disabled'); + }, + + option: function(key, value) { + var options = key, + self = this; + + if (typeof key == "string") { + if (value === undefined) { + return this._getData(key); + } + options = {}; + options[key] = value; + } + + $.each(options, function(key, value) { + self._setData(key, value); + }); + }, + _getData: function(key) { + return this.options[key]; + }, + _setData: function(key, value) { + this.options[key] = value; + + if (key == 'disabled') { + this.element + [value ? 'addClass' : 'removeClass']( + this.widgetBaseClass + '-disabled' + ' ' + + this.namespace + '-state-disabled') + .attr("aria-disabled", value); + } + }, + + enable: function() { + this._setData('disabled', false); + }, + disable: function() { + this._setData('disabled', true); + }, + + _trigger: function(type, event, data) { + var callback = this.options[type], + eventName = (type == this.widgetEventPrefix + ? type : this.widgetEventPrefix + type); + + event = $.Event(event); + event.type = eventName; + + // copy original event properties over to the new event + // this would happen if we could call $.event.fix instead of $.Event + // but we don't have a way to force an event to be fixed multiple times + if (event.originalEvent) { + for (var i = $.event.props.length, prop; i;) { + prop = $.event.props[--i]; + event[prop] = event.originalEvent[prop]; + } + } + + this.element.trigger(event, data); + + return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false + || event.isDefaultPrevented()); + } +}; + +$.widget.defaults = { + disabled: false +}; + + +/** Mouse Interaction Plugin **/ + +$.ui.mouse = { + _mouseInit: function() { + var self = this; + + this.element + .bind('mousedown.'+this.widgetName, function(event) { + return self._mouseDown(event); + }) + .bind('click.'+this.widgetName, function(event) { + if(self._preventClickEvent) { + self._preventClickEvent = false; + event.stopImmediatePropagation(); + return false; + } + }); + + // Prevent text selection in IE + if ($.browser.msie) { + this._mouseUnselectable = this.element.attr('unselectable'); + this.element.attr('unselectable', 'on'); + } + + this.started = false; + }, + + // TODO: make sure destroying one instance of mouse doesn't mess with + // other instances of mouse + _mouseDestroy: function() { + this.element.unbind('.'+this.widgetName); + + // Restore text selection in IE + ($.browser.msie + && this.element.attr('unselectable', this._mouseUnselectable)); + }, + + _mouseDown: function(event) { + // don't let more than one widget handle mouseStart + // TODO: figure out why we have to use originalEvent + event.originalEvent = event.originalEvent || {}; + if (event.originalEvent.mouseHandled) { return; } + + // we may have missed mouseup (out of window) + (this._mouseStarted && this._mouseUp(event)); + + this._mouseDownEvent = event; + + var self = this, + btnIsLeft = (event.which == 1), + elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false); + if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { + return true; + } + + this.mouseDelayMet = !this.options.delay; + if (!this.mouseDelayMet) { + this._mouseDelayTimer = setTimeout(function() { + self.mouseDelayMet = true; + }, this.options.delay); + } + + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { + this._mouseStarted = (this._mouseStart(event) !== false); + if (!this._mouseStarted) { + event.preventDefault(); + return true; + } + } + + // these delegates are required to keep context + this._mouseMoveDelegate = function(event) { + return self._mouseMove(event); + }; + this._mouseUpDelegate = function(event) { + return self._mouseUp(event); + }; + $(document) + .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate) + .bind('mouseup.'+this.widgetName, this._mouseUpDelegate); + + // preventDefault() is used to prevent the selection of text here - + // however, in Safari, this causes select boxes not to be selectable + // anymore, so this fix is needed + ($.browser.safari || event.preventDefault()); + + event.originalEvent.mouseHandled = true; + return true; + }, + + _mouseMove: function(event) { + // IE mouseup check - mouseup happened when mouse was out of window + if ($.browser.msie && !event.button) { + return this._mouseUp(event); + } + + if (this._mouseStarted) { + this._mouseDrag(event); + return event.preventDefault(); + } + + if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { + this._mouseStarted = + (this._mouseStart(this._mouseDownEvent, event) !== false); + (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); + } + + return !this._mouseStarted; + }, + + _mouseUp: function(event) { + $(document) + .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) + .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); + + if (this._mouseStarted) { + this._mouseStarted = false; + this._preventClickEvent = (event.target == this._mouseDownEvent.target); + this._mouseStop(event); + } + + return false; + }, + + _mouseDistanceMet: function(event) { + return (Math.max( + Math.abs(this._mouseDownEvent.pageX - event.pageX), + Math.abs(this._mouseDownEvent.pageY - event.pageY) + ) >= this.options.distance + ); + }, + + _mouseDelayMet: function(event) { + return this.mouseDelayMet; + }, + + // These are placeholder methods, to be overriden by extending plugin + _mouseStart: function(event) {}, + _mouseDrag: function(event) {}, + _mouseStop: function(event) {}, + _mouseCapture: function(event) { return true; } +}; + +$.ui.mouse.defaults = { + cancel: null, + distance: 1, + delay: 0 +}; + +})(jQuery); diff --git a/wp-content/plugins/gravityforms/js/jquery-ui/ui.datepicker.js b/wp-content/plugins/gravityforms/js/jquery-ui/ui.datepicker.js new file mode 100644 index 0000000..3e4ac00 --- /dev/null +++ b/wp-content/plugins/gravityforms/js/jquery-ui/ui.datepicker.js @@ -0,0 +1,1754 @@ +/* + * jQuery UI Datepicker 1.6 + * + * Copyright (c) 2008 AUTHORS.txt (http://ui.jquery.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Datepicker + * + * Depends: + * ui.core.js + */ + +(function($) { // hide the namespace + +$.extend($.ui, { datepicker: { version: "1.6" } }); + +var PROP_NAME = 'datepicker'; + +/* Date picker manager. + Use the singleton instance of this class, $.datepicker, to interact with the date picker. + Settings for (groups of) date pickers are maintained in an instance object, + allowing multiple different settings on the same page. */ + +function Datepicker() { + this.debug = false; // Change this to true to start debugging + this._curInst = null; // The current instance in use + this._keyEvent = false; // If the last event was a key event + this._disabledInputs = []; // List of date picker inputs that have been disabled + this._datepickerShowing = false; // True if the popup picker is showing , false if not + this._inDialog = false; // True if showing within a "dialog", false if not + this._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division + this._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class + this._appendClass = 'ui-datepicker-append'; // The name of the append marker class + this._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class + this._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class + this._promptClass = 'ui-datepicker-prompt'; // The name of the dialog prompt marker class + this._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class + this._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class + this._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class + this._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class + this._weekOverClass = 'ui-datepicker-week-over'; // The name of the week hover marker class + this.regional = []; // Available regional settings, indexed by language code + this.regional[''] = { // Default regional settings + clearText: 'Clear', // Display text for clear link + clearStatus: 'Erase the current date', // Status text for clear link + closeText: 'Close', // Display text for close link + closeStatus: 'Close without change', // Status text for close link + prevText: '<Prev', // Display text for previous month link + prevStatus: 'Show the previous month', // Status text for previous month link + prevBigText: '<<', // Display text for previous year link + prevBigStatus: 'Show the previous year', // Status text for previous year link + nextText: 'Next>', // Display text for next month link + nextStatus: 'Show the next month', // Status text for next month link + nextBigText: '>>', // Display text for next year link + nextBigStatus: 'Show the next year', // Status text for next year link + currentText: 'Today', // Display text for current month link + currentStatus: 'Show the current month', // Status text for current month link + monthNames: ['January','February','March','April','May','June', + 'July','August','September','October','November','December'], // Names of months for drop-down and formatting + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting + monthStatus: 'Show a different month', // Status text for selecting a month + yearStatus: 'Show a different year', // Status text for selecting a year + weekHeader: 'Wk', // Header for the week of the year column + weekStatus: 'Week of the year', // Status text for the week of the year column + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting + dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday + dayStatus: 'Set DD as first week day', // Status text for the day of the week selection + dateStatus: 'Select DD, M d', // Status text for the date selection + dateFormat: 'mm/dd/yy', // See format options on parseDate + firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... + initStatus: 'Select a date', // Initial Status text on opening + isRTL: false // True if right-to-left language, false if left-to-right + }; + this._defaults = { // Global defaults for all the date picker instances + showOn: 'focus', // 'focus' for popup on focus, + // 'button' for trigger button, or 'both' for either + showAnim: 'show', // Name of jQuery animation for popup + showOptions: {}, // Options for enhanced animations + defaultDate: null, // Used when field is blank: actual date, + // +/-number for offset from today, null for today + appendText: '', // Display text following the input box, e.g. showing the format + buttonText: '...', // Text for trigger button + buttonImage: '', // URL for trigger button image + buttonImageOnly: false, // True if the image appears alone, false if it appears on a button + closeAtTop: true, // True to have the clear/close at the top, + // false to have them at the bottom + mandatory: false, // True to hide the Clear link, false to include it + hideIfNoPrevNext: false, // True to hide next/previous month links + // if not applicable, false to just disable them + navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links + showBigPrevNext: false, // True to show big prev/next links + gotoCurrent: false, // True if today link goes back to current selection instead + changeMonth: true, // True if month can be selected directly, false if only prev/next + changeYear: true, // True if year can be selected directly, false if only prev/next + showMonthAfterYear: false, // True if the year select precedes month, false for month then year + yearRange: '-10:+10', // Range of years to display in drop-down, + // either relative to current year (-nn:+nn) or absolute (nnnn:nnnn) + changeFirstDay: true, // True to click on day name to change, false to remain as set + highlightWeek: false, // True to highlight the selected week + showOtherMonths: false, // True to show dates in other months, false to leave blank + showWeeks: false, // True to show week of the year, false to omit + calculateWeek: this.iso8601Week, // How to calculate the week of the year, + // takes a Date and returns the number of the week for it + shortYearCutoff: '+10', // Short year values < this are in the current century, + // > this are in the previous century, + // string value starting with '+' for current year + value + showStatus: false, // True to show status bar at bottom, false to not show it + statusForDate: this.dateStatus, // Function to provide status text for a date - + // takes date and instance as parameters, returns display text + minDate: null, // The earliest selectable date, or null for no limit + maxDate: null, // The latest selectable date, or null for no limit + duration: 'normal', // Duration of display/closure + beforeShowDay: null, // Function that takes a date and returns an array with + // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '', + // [2] = cell title (optional), e.g. $.datepicker.noWeekends + beforeShow: null, // Function that takes an input field and + // returns a set of custom settings for the date picker + onSelect: null, // Define a callback function when a date is selected + onChangeMonthYear: null, // Define a callback function when the month or year is changed + onClose: null, // Define a callback function when the datepicker is closed + numberOfMonths: 1, // Number of months to show at a time + showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0) + stepMonths: 1, // Number of months to step back/forward + stepBigMonths: 12, // Number of months to step back/forward for the big links + rangeSelect: false, // Allows for selecting a date range on one date picker + rangeSeparator: ' - ', // Text between two dates in a range + altField: '', // Selector for an alternate field to store selected dates into + altFormat: '', // The date format to use for the alternate field + constrainInput: true // The input is constrained by the current date format + }; + $.extend(this._defaults, this.regional['']); + this.dpDiv = $(''); +} + +$.extend(Datepicker.prototype, { + /* Class name added to elements to indicate already configured with a date picker. */ + markerClassName: 'hasDatepicker', + + /* Debug logging (if enabled). */ + log: function () { + if (this.debug) + console.log.apply('', arguments); + }, + + /* Override the default settings for all instances of the date picker. + @param settings object - the new settings to use as defaults (anonymous object) + @return the manager object */ + setDefaults: function(settings) { + extendRemove(this._defaults, settings || {}); + return this; + }, + + /* Attach the date picker to a jQuery selection. + @param target element - the target input field or division or span + @param settings object - the new settings to use for this date picker instance (anonymous) */ + _attachDatepicker: function(target, settings) { + // check for settings on the control itself - in namespace 'date:' + var inlineSettings = null; + for (var attrName in this._defaults) { + var attrValue = target.getAttribute('date:' + attrName); + if (attrValue) { + inlineSettings = inlineSettings || {}; + try { + inlineSettings[attrName] = eval(attrValue); + } catch (err) { + inlineSettings[attrName] = attrValue; + } + } + } + var nodeName = target.nodeName.toLowerCase(); + var inline = (nodeName == 'div' || nodeName == 'span'); + if (!target.id) + target.id = 'dp' + (++this.uuid); + var inst = this._newInst($(target), inline); + inst.settings = $.extend({}, settings || {}, inlineSettings || {}); + if (nodeName == 'input') { + this._connectDatepicker(target, inst); + } else if (inline) { + this._inlineDatepicker(target, inst); + } + }, + + /* Create a new instance object. */ + _newInst: function(target, inline) { + var id = target[0].id.replace(/([:\[\]\.])/g, '\\\\$1'); // escape jQuery meta chars + return {id: id, input: target, // associated target + selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection + drawMonth: 0, drawYear: 0, // month being drawn + inline: inline, // is datepicker inline or not + dpDiv: (!inline ? this.dpDiv : // presentation div + $('
              '))}; + }, + + /* Attach the date picker to an input field. */ + _connectDatepicker: function(target, inst) { + var input = $(target); + if (input.hasClass(this.markerClassName)) + return; + var appendText = this._get(inst, 'appendText'); + var isRTL = this._get(inst, 'isRTL'); + if (appendText) + input[isRTL ? 'before' : 'after']('' + appendText + ''); + var showOn = this._get(inst, 'showOn'); + if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field + input.focus(this._showDatepicker); + if (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked + var buttonText = this._get(inst, 'buttonText'); + var buttonImage = this._get(inst, 'buttonImage'); + var trigger = $(this._get(inst, 'buttonImageOnly') ? + $('').addClass(this._triggerClass). + attr({ src: buttonImage, alt: buttonText, title: buttonText }) : + $('').addClass(this._triggerClass). + html(buttonImage == '' ? buttonText : $('').attr( + { src:buttonImage, alt:buttonText, title:buttonText }))); + input[isRTL ? 'before' : 'after'](trigger); + trigger.click(function() { + if ($.datepicker._datepickerShowing && $.datepicker._lastInput == target) + $.datepicker._hideDatepicker(); + else + $.datepicker._showDatepicker(target); + return false; + }); + } + input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress). + bind("setData.datepicker", function(event, key, value) { + inst.settings[key] = value; + }).bind("getData.datepicker", function(event, key) { + return this._get(inst, key); + }); + $.data(target, PROP_NAME, inst); + }, + + /* Attach an inline date picker to a div. */ + _inlineDatepicker: function(target, inst) { + var divSpan = $(target); + if (divSpan.hasClass(this.markerClassName)) + return; + divSpan.addClass(this.markerClassName).append(inst.dpDiv). + bind("setData.datepicker", function(event, key, value){ + inst.settings[key] = value; + }).bind("getData.datepicker", function(event, key){ + return this._get(inst, key); + }); + $.data(target, PROP_NAME, inst); + this._setDate(inst, this._getDefaultDate(inst)); + this._updateDatepicker(inst); + this._updateAlternate(inst); + }, + + /* Pop-up the date picker in a "dialog" box. + @param input element - ignored + @param dateText string - the initial date to display (in the current format) + @param onSelect function - the function(dateText) to call when a date is selected + @param settings object - update the dialog date picker instance's settings (anonymous object) + @param pos int[2] - coordinates for the dialog's position within the screen or + event - with x/y coordinates or + leave empty for default (screen centre) + @return the manager object */ + _dialogDatepicker: function(input, dateText, onSelect, settings, pos) { + var inst = this._dialogInst; // internal instance + if (!inst) { + var id = 'dp' + (++this.uuid); + this._dialogInput = $(''); + this._dialogInput.keydown(this._doKeyDown); + $('body').append(this._dialogInput); + inst = this._dialogInst = this._newInst(this._dialogInput, false); + inst.settings = {}; + $.data(this._dialogInput[0], PROP_NAME, inst); + } + extendRemove(inst.settings, settings || {}); + this._dialogInput.val(dateText); + + this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); + if (!this._pos) { + var browserWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; + var browserHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; + var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; + var scrollY = document.documentElement.scrollTop || document.body.scrollTop; + this._pos = // should use actual width/height below + [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY]; + } + + // move input on screen for focus, but hidden behind dialog + this._dialogInput.css('left', this._pos[0] + 'px').css('top', this._pos[1] + 'px'); + inst.settings.onSelect = onSelect; + this._inDialog = true; + this.dpDiv.addClass(this._dialogClass); + this._showDatepicker(this._dialogInput[0]); + if ($.blockUI) + $.blockUI(this.dpDiv); + $.data(this._dialogInput[0], PROP_NAME, inst); + return this; + }, + + /* Detach a datepicker from its control. + @param target element - the target input field or division or span */ + _destroyDatepicker: function(target) { + var $target = $(target); + if (!$target.hasClass(this.markerClassName)) { + return; + } + var nodeName = target.nodeName.toLowerCase(); + $.removeData(target, PROP_NAME); + if (nodeName == 'input') { + $target.siblings('.' + this._appendClass).remove().end(). + siblings('.' + this._triggerClass).remove().end(). + removeClass(this.markerClassName). + unbind('focus', this._showDatepicker). + unbind('keydown', this._doKeyDown). + unbind('keypress', this._doKeyPress); + } else if (nodeName == 'div' || nodeName == 'span') + $target.removeClass(this.markerClassName).empty(); + }, + + /* Enable the date picker to a jQuery selection. + @param target element - the target input field or division or span */ + _enableDatepicker: function(target) { + var $target = $(target); + if (!$target.hasClass(this.markerClassName)) { + return; + } + var nodeName = target.nodeName.toLowerCase(); + if (nodeName == 'input') { + target.disabled = false; + $target.siblings('button.' + this._triggerClass). + each(function() { this.disabled = false; }).end(). + siblings('img.' + this._triggerClass). + css({opacity: '1.0', cursor: ''}); + } + else if (nodeName == 'div' || nodeName == 'span') { + $target.children('.' + this._disableClass).remove(); + } + this._disabledInputs = $.map(this._disabledInputs, + function(value) { return (value == target ? null : value); }); // delete entry + }, + + /* Disable the date picker to a jQuery selection. + @param target element - the target input field or division or span */ + _disableDatepicker: function(target) { + var $target = $(target); + if (!$target.hasClass(this.markerClassName)) { + return; + } + var nodeName = target.nodeName.toLowerCase(); + if (nodeName == 'input') { + target.disabled = true; + $target.siblings('button.' + this._triggerClass). + each(function() { this.disabled = true; }).end(). + siblings('img.' + this._triggerClass). + css({opacity: '0.5', cursor: 'default'}); + } + else if (nodeName == 'div' || nodeName == 'span') { + var inline = $target.children('.' + this._inlineClass); + var offset = inline.offset(); + var relOffset = {left: 0, top: 0}; + inline.parents().each(function() { + if ($(this).css('position') == 'relative') { + relOffset = $(this).offset(); + return false; + } + }); + $target.prepend('
              '); + } + this._disabledInputs = $.map(this._disabledInputs, + function(value) { return (value == target ? null : value); }); // delete entry + this._disabledInputs[this._disabledInputs.length] = target; + }, + + /* Is the first field in a jQuery collection disabled as a datepicker? + @param target element - the target input field or division or span + @return boolean - true if disabled, false if enabled */ + _isDisabledDatepicker: function(target) { + if (!target) + return false; + for (var i = 0; i < this._disabledInputs.length; i++) { + if (this._disabledInputs[i] == target) + return true; + } + return false; + }, + + /* Retrieve the instance data for the target control. + @param target element - the target input field or division or span + @return object - the associated instance data + @throws error if a jQuery problem getting data */ + _getInst: function(target) { + try { + return $.data(target, PROP_NAME); + } + catch (err) { + throw 'Missing instance data for this datepicker'; + } + }, + + /* Update the settings for a date picker attached to an input field or division. + @param target element - the target input field or division or span + @param name object - the new settings to update or + string - the name of the setting to change or + @param value any - the new value for the setting (omit if above is an object) */ + _optionDatepicker: function(target, name, value) { + var settings = name || {}; + if (typeof name == 'string') { + settings = {}; + settings[name] = value; + } + var inst = this._getInst(target); + if (inst) { + if (this._curInst == inst) { + this._hideDatepicker(null); + } + extendRemove(inst.settings, settings); + var date = new Date(); + extendRemove(inst, {rangeStart: null, // start of range + endDay: null, endMonth: null, endYear: null, // end of range + selectedDay: date.getDate(), selectedMonth: date.getMonth(), + selectedYear: date.getFullYear(), // starting point + currentDay: date.getDate(), currentMonth: date.getMonth(), + currentYear: date.getFullYear(), // current selection + drawMonth: date.getMonth(), drawYear: date.getFullYear()}); // month being drawn + this._updateDatepicker(inst); + } + }, + + // change method deprecated + _changeDatepicker: function(target, name, value) { + this._optionDatepicker(target, name, value); + }, + + /* Redraw the date picker attached to an input field or division. + @param target element - the target input field or division or span */ + _refreshDatepicker: function(target) { + var inst = this._getInst(target); + if (inst) { + this._updateDatepicker(inst); + } + }, + + /* Set the dates for a jQuery selection. + @param target element - the target input field or division or span + @param date Date - the new date + @param endDate Date - the new end date for a range (optional) */ + _setDateDatepicker: function(target, date, endDate) { + var inst = this._getInst(target); + if (inst) { + this._setDate(inst, date, endDate); + this._updateDatepicker(inst); + this._updateAlternate(inst); + } + }, + + /* Get the date(s) for the first entry in a jQuery selection. + @param target element - the target input field or division or span + @return Date - the current date or + Date[2] - the current dates for a range */ + _getDateDatepicker: function(target) { + var inst = this._getInst(target); + if (inst && !inst.inline) + this._setDateFromField(inst); + return (inst ? this._getDate(inst) : null); + }, + + /* Handle keystrokes. */ + _doKeyDown: function(event) { + var inst = $.datepicker._getInst(event.target); + var handled = true; + inst._keyEvent = true; + if ($.datepicker._datepickerShowing) + switch (event.keyCode) { + case 9: $.datepicker._hideDatepicker(null, ''); + break; // hide on tab out + case 13: var sel = $('td.' + $.datepicker._dayOverClass + + ', td.' + $.datepicker._currentClass, inst.dpDiv); + if (sel[0]) + $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); + else + $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration')); + return false; // don't submit the form + break; // select the value on enter + case 27: $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration')); + break; // hide on escape + case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? + -$.datepicker._get(inst, 'stepBigMonths') : + -$.datepicker._get(inst, 'stepMonths')), 'M'); + break; // previous month/year on page up/+ ctrl + case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? + +$.datepicker._get(inst, 'stepBigMonths') : + +$.datepicker._get(inst, 'stepMonths')), 'M'); + break; // next month/year on page down/+ ctrl + case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target); + handled = event.ctrlKey || event.metaKey; + break; // clear on ctrl or command +end + case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target); + handled = event.ctrlKey || event.metaKey; + break; // current on ctrl or command +home + case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -1, 'D'); + handled = event.ctrlKey || event.metaKey; + // -1 day on ctrl or command +left + if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? + -$.datepicker._get(inst, 'stepBigMonths') : + -$.datepicker._get(inst, 'stepMonths')), 'M'); + // next month/year on alt +left on Mac + break; + case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D'); + handled = event.ctrlKey || event.metaKey; + break; // -1 week on ctrl or command +up + case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +1, 'D'); + handled = event.ctrlKey || event.metaKey; + // +1 day on ctrl or command +right + if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? + +$.datepicker._get(inst, 'stepBigMonths') : + +$.datepicker._get(inst, 'stepMonths')), 'M'); + // next month/year on alt +right + break; + case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D'); + handled = event.ctrlKey || event.metaKey; + break; // +1 week on ctrl or command +down + default: handled = false; + } + else if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home + $.datepicker._showDatepicker(this); + else { + handled = false; + } + if (handled) { + event.preventDefault(); + event.stopPropagation(); + } + }, + + /* Filter entered characters - based on date format. */ + _doKeyPress: function(event) { + var inst = $.datepicker._getInst(event.target); + if ($.datepicker._get(inst, 'constrainInput')) { + var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')); + var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode); + return event.ctrlKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1); + } + }, + + /* Pop-up the date picker for a given input field. + @param input element - the input field attached to the date picker or + event - if triggered by focus */ + _showDatepicker: function(input) { + input = input.target || input; + if (input.nodeName.toLowerCase() != 'input') // find from button/image trigger + input = $('input', input.parentNode)[0]; + if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here + return; + var inst = $.datepicker._getInst(input); + var beforeShow = $.datepicker._get(inst, 'beforeShow'); + extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {})); + $.datepicker._hideDatepicker(null, ''); + $.datepicker._lastInput = input; + $.datepicker._setDateFromField(inst); + if ($.datepicker._inDialog) // hide cursor + input.value = ''; + if (!$.datepicker._pos) { // position below input + $.datepicker._pos = $.datepicker._findPos(input); + $.datepicker._pos[1] += input.offsetHeight; // add the height + } + var isFixed = false; + $(input).parents().each(function() { + isFixed |= $(this).css('position') == 'fixed'; + return !isFixed; + }); + if (isFixed && $.browser.opera) { // correction for Opera when fixed and scrolled + $.datepicker._pos[0] -= document.documentElement.scrollLeft; + $.datepicker._pos[1] -= document.documentElement.scrollTop; + } + var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; + $.datepicker._pos = null; + inst.rangeStart = null; + // determine sizing offscreen + inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'}); + $.datepicker._updateDatepicker(inst); + // fix width for dynamic number of date pickers + inst.dpDiv.width($.datepicker._getNumberOfMonths(inst)[1] * + $('.ui-datepicker', inst.dpDiv[0])[0].offsetWidth); + // and adjust position before showing + offset = $.datepicker._checkOffset(inst, offset, isFixed); + inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ? + 'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none', + left: offset.left + 'px', top: offset.top + 'px'}); + if (!inst.inline) { + var showAnim = $.datepicker._get(inst, 'showAnim') || 'show'; + var duration = $.datepicker._get(inst, 'duration'); + var postProcess = function() { + $.datepicker._datepickerShowing = true; + if ($.browser.msie && parseInt($.browser.version,10) < 7) // fix IE < 7 select problems + $('iframe.ui-datepicker-cover').css({width: inst.dpDiv.width() + 4, + height: inst.dpDiv.height() + 4}); + }; + if ($.effects && $.effects[showAnim]) + inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); + else + inst.dpDiv[showAnim](duration, postProcess); + if (duration == '') + postProcess(); + if (inst.input[0].type != 'hidden') + inst.input[0].focus(); + $.datepicker._curInst = inst; + } + }, + + /* Generate the date picker content. */ + _updateDatepicker: function(inst) { + var dims = {width: inst.dpDiv.width() + 4, + height: inst.dpDiv.height() + 4}; + inst.dpDiv.empty().append(this._generateHTML(inst)). + find('iframe.ui-datepicker-cover'). + css({width: dims.width, height: dims.height}); + var numMonths = this._getNumberOfMonths(inst); + inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') + + 'Class']('ui-datepicker-multi'); + inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') + + 'Class']('ui-datepicker-rtl'); + if (inst.input && inst.input[0].type != 'hidden' && inst == $.datepicker._curInst) + $(inst.input[0]).focus(); + }, + + /* Check positioning to remain on screen. */ + _checkOffset: function(inst, offset, isFixed) { + var pos = inst.input ? this._findPos(inst.input[0]) : null; + var browserWidth = window.innerWidth || (document.documentElement ? + document.documentElement.clientWidth : document.body.clientWidth); + var browserHeight = window.innerHeight || (document.documentElement ? + document.documentElement.clientHeight : document.body.clientHeight); + var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; + var scrollY = document.documentElement.scrollTop || document.body.scrollTop; + // reposition date picker horizontally if outside the browser window + if (this._get(inst, 'isRTL') || (offset.left + inst.dpDiv.width() - scrollX) > browserWidth) + offset.left = Math.max((isFixed ? 0 : scrollX), + pos[0] + (inst.input ? inst.input.width() : 0) - (isFixed ? scrollX : 0) - inst.dpDiv.width() - + (isFixed && $.browser.opera ? document.documentElement.scrollLeft : 0)); + else + offset.left -= (isFixed ? scrollX : 0); + // reposition date picker vertically if outside the browser window + if ((offset.top + inst.dpDiv.height() - scrollY) > browserHeight) + offset.top = Math.max((isFixed ? 0 : scrollY), + pos[1] - (isFixed ? scrollY : 0) - (this._inDialog ? 0 : inst.dpDiv.height()) - + (isFixed && $.browser.opera ? document.documentElement.scrollTop : 0)); + else + offset.top -= (isFixed ? scrollY : 0); + return offset; + }, + + /* Find an object's position on the screen. */ + _findPos: function(obj) { + while (obj && (obj.type == 'hidden' || obj.nodeType != 1)) { + obj = obj.nextSibling; + } + var position = $(obj).offset(); + return [position.left, position.top]; + }, + + /* Hide the date picker from view. + @param input element - the input field attached to the date picker + @param duration string - the duration over which to close the date picker */ + _hideDatepicker: function(input, duration) { + var inst = this._curInst; + if (!inst || (input && inst != $.data(input, PROP_NAME))) + return; + var rangeSelect = this._get(inst, 'rangeSelect'); + if (rangeSelect && inst.stayOpen) + this._selectDate('#' + inst.id, this._formatDate(inst, + inst.currentDay, inst.currentMonth, inst.currentYear)); + inst.stayOpen = false; + if (this._datepickerShowing) { + duration = (duration != null ? duration : this._get(inst, 'duration')); + var showAnim = this._get(inst, 'showAnim'); + var postProcess = function() { + $.datepicker._tidyDialog(inst); + }; + if (duration != '' && $.effects && $.effects[showAnim]) + inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), + duration, postProcess); + else + inst.dpDiv[(duration == '' ? 'hide' : (showAnim == 'slideDown' ? 'slideUp' : + (showAnim == 'fadeIn' ? 'fadeOut' : 'hide')))](duration, postProcess); + if (duration == '') + this._tidyDialog(inst); + var onClose = this._get(inst, 'onClose'); + if (onClose) + onClose.apply((inst.input ? inst.input[0] : null), + [(inst.input ? inst.input.val() : ''), inst]); // trigger custom callback + this._datepickerShowing = false; + this._lastInput = null; + inst.settings.prompt = null; + if (this._inDialog) { + this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' }); + if ($.blockUI) { + $.unblockUI(); + $('body').append(this.dpDiv); + } + } + this._inDialog = false; + } + this._curInst = null; + }, + + /* Tidy up after a dialog display. */ + _tidyDialog: function(inst) { + inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker'); + $('.' + this._promptClass, inst.dpDiv).remove(); + }, + + /* Close date picker if clicked elsewhere. */ + _checkExternalClick: function(event) { + if (!$.datepicker._curInst) + return; + var $target = $(event.target); + if (($target.parents('#' + $.datepicker._mainDivId).length == 0) && + !$target.hasClass($.datepicker.markerClassName) && + !$target.hasClass($.datepicker._triggerClass) && + $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI)) + $.datepicker._hideDatepicker(null, ''); + }, + + /* Adjust one of the date sub-fields. */ + _adjustDate: function(id, offset, period) { + var target = $(id); + var inst = this._getInst(target[0]); + this._adjustInstDate(inst, offset, period); + this._updateDatepicker(inst); + }, + + /* Action for current link. */ + _gotoToday: function(id) { + var target = $(id); + var inst = this._getInst(target[0]); + if (this._get(inst, 'gotoCurrent') && inst.currentDay) { + inst.selectedDay = inst.currentDay; + inst.drawMonth = inst.selectedMonth = inst.currentMonth; + inst.drawYear = inst.selectedYear = inst.currentYear; + } + else { + var date = new Date(); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + } + this._notifyChange(inst); + this._adjustDate(target); + }, + + /* Action for selecting a new month/year. */ + _selectMonthYear: function(id, select, period) { + var target = $(id); + var inst = this._getInst(target[0]); + inst._selectingMonthYear = false; + inst['selected' + (period == 'M' ? 'Month' : 'Year')] = + inst['draw' + (period == 'M' ? 'Month' : 'Year')] = + parseInt(select.options[select.selectedIndex].value,10); + this._notifyChange(inst); + this._adjustDate(target); + }, + + /* Restore input focus after not changing month/year. */ + _clickMonthYear: function(id) { + var target = $(id); + var inst = this._getInst(target[0]); + if (inst.input && inst._selectingMonthYear && !$.browser.msie) + inst.input[0].focus(); + inst._selectingMonthYear = !inst._selectingMonthYear; + }, + + /* Action for changing the first week day. */ + _changeFirstDay: function(id, day) { + var target = $(id); + var inst = this._getInst(target[0]); + inst.settings.firstDay = day; + this._updateDatepicker(inst); + }, + + /* Action for selecting a day. */ + _selectDay: function(id, month, year, td) { + if ($(td).hasClass(this._unselectableClass)) + return; + var target = $(id); + var inst = this._getInst(target[0]); + var rangeSelect = this._get(inst, 'rangeSelect'); + if (rangeSelect) { + inst.stayOpen = !inst.stayOpen; + if (inst.stayOpen) { + $('.ui-datepicker td', inst.dpDiv).removeClass(this._currentClass); + $(td).addClass(this._currentClass); + } + } + inst.selectedDay = inst.currentDay = $('a', td).html(); + inst.selectedMonth = inst.currentMonth = month; + inst.selectedYear = inst.currentYear = year; + if (inst.stayOpen) { + inst.endDay = inst.endMonth = inst.endYear = null; + } + else if (rangeSelect) { + inst.endDay = inst.currentDay; + inst.endMonth = inst.currentMonth; + inst.endYear = inst.currentYear; + } + this._selectDate(id, this._formatDate(inst, + inst.currentDay, inst.currentMonth, inst.currentYear)); + if (inst.stayOpen) { + inst.rangeStart = this._daylightSavingAdjust( + new Date(inst.currentYear, inst.currentMonth, inst.currentDay)); + this._updateDatepicker(inst); + } + else if (rangeSelect) { + inst.selectedDay = inst.currentDay = inst.rangeStart.getDate(); + inst.selectedMonth = inst.currentMonth = inst.rangeStart.getMonth(); + inst.selectedYear = inst.currentYear = inst.rangeStart.getFullYear(); + inst.rangeStart = null; + if (inst.inline) + this._updateDatepicker(inst); + } + }, + + /* Erase the input field and hide the date picker. */ + _clearDate: function(id) { + var target = $(id); + var inst = this._getInst(target[0]); + if (this._get(inst, 'mandatory')) + return; + inst.stayOpen = false; + inst.endDay = inst.endMonth = inst.endYear = inst.rangeStart = null; + this._selectDate(target, ''); + }, + + /* Update the input field with the selected date. */ + _selectDate: function(id, dateStr) { + var target = $(id); + var inst = this._getInst(target[0]); + dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); + if (this._get(inst, 'rangeSelect') && dateStr) + dateStr = (inst.rangeStart ? this._formatDate(inst, inst.rangeStart) : + dateStr) + this._get(inst, 'rangeSeparator') + dateStr; + if (inst.input) + inst.input.val(dateStr); + this._updateAlternate(inst); + var onSelect = this._get(inst, 'onSelect'); + if (onSelect) + onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback + else if (inst.input) + inst.input.trigger('change'); // fire the change event + if (inst.inline) + this._updateDatepicker(inst); + else if (!inst.stayOpen) { + this._hideDatepicker(null, this._get(inst, 'duration')); + this._lastInput = inst.input[0]; + if (typeof(inst.input[0]) != 'object') + inst.input[0].focus(); // restore focus + this._lastInput = null; + } + }, + + /* Update any alternate field to synchronise with the main field. */ + _updateAlternate: function(inst) { + var altField = this._get(inst, 'altField'); + if (altField) { // update alternate field too + var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat'); + var date = this._getDate(inst); + dateStr = (isArray(date) ? (!date[0] && !date[1] ? '' : + this.formatDate(altFormat, date[0], this._getFormatConfig(inst)) + + this._get(inst, 'rangeSeparator') + this.formatDate( + altFormat, date[1] || date[0], this._getFormatConfig(inst))) : + this.formatDate(altFormat, date, this._getFormatConfig(inst))); + $(altField).each(function() { $(this).val(dateStr); }); + } + }, + + /* Set as beforeShowDay function to prevent selection of weekends. + @param date Date - the date to customise + @return [boolean, string] - is this date selectable?, what is its CSS class? */ + noWeekends: function(date) { + var day = date.getDay(); + return [(day > 0 && day < 6), '']; + }, + + /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. + @param date Date - the date to get the week for + @return number - the number of the week within the year that contains this date */ + iso8601Week: function(date) { + var checkDate = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + var firstMon = new Date(checkDate.getFullYear(), 1 - 1, 4); // First week always contains 4 Jan + var firstDay = firstMon.getDay() || 7; // Day of week: Mon = 1, ..., Sun = 7 + firstMon.setDate(firstMon.getDate() + 1 - firstDay); // Preceding Monday + if (firstDay < 4 && checkDate < firstMon) { // Adjust first three days in year if necessary + checkDate.setDate(checkDate.getDate() - 3); // Generate for previous year + return $.datepicker.iso8601Week(checkDate); + } else if (checkDate > new Date(checkDate.getFullYear(), 12 - 1, 28)) { // Check last three days in year + firstDay = new Date(checkDate.getFullYear() + 1, 1 - 1, 4).getDay() || 7; + if (firstDay > 4 && (checkDate.getDay() || 7) < firstDay - 3) { // Adjust if necessary + return 1; + } + } + return Math.floor(((checkDate - firstMon) / 86400000) / 7) + 1; // Weeks to given date + }, + + /* Provide status text for a particular date. + @param date the date to get the status for + @param inst the current datepicker instance + @return the status display text for this date */ + dateStatus: function(date, inst) { + return $.datepicker.formatDate($.datepicker._get(inst, 'dateStatus'), + date, $.datepicker._getFormatConfig(inst)); + }, + + /* Parse a string value into a date object. + See formatDate below for the possible formats. + + @param format string - the expected format of the date + @param value string - the date in the above format + @param settings Object - attributes include: + shortYearCutoff number - the cutoff year for determining the century (optional) + dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) + dayNames string[7] - names of the days from Sunday (optional) + monthNamesShort string[12] - abbreviated names of the months (optional) + monthNames string[12] - names of the months (optional) + @return Date - the extracted date value or null if value is blank */ + parseDate: function (format, value, settings) { + if (format == null || value == null) + throw 'Invalid arguments'; + value = (typeof value == 'object' ? value.toString() : value + ''); + if (value == '') + return null; + var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff; + var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; + var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; + var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; + var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; + var year = -1; + var month = -1; + var day = -1; + var doy = -1; + var literal = false; + // Check whether a format character is doubled + var lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); + if (matches) + iFormat++; + return matches; + }; + // Extract a number from the string value + var getNumber = function(match) { + lookAhead(match); + var origSize = (match == '@' ? 14 : (match == 'y' ? 4 : (match == 'o' ? 3 : 2))); + var size = origSize; + var num = 0; + while (size > 0 && iValue < value.length && + value.charAt(iValue) >= '0' && value.charAt(iValue) <= '9') { + num = num * 10 + parseInt(value.charAt(iValue++),10); + size--; + } + if (size == origSize) + throw 'Missing number at position ' + iValue; + return num; + }; + // Extract a name from the string value and convert to an index + var getName = function(match, shortNames, longNames) { + var names = (lookAhead(match) ? longNames : shortNames); + var size = 0; + for (var j = 0; j < names.length; j++) + size = Math.max(size, names[j].length); + var name = ''; + var iInit = iValue; + while (size > 0 && iValue < value.length) { + name += value.charAt(iValue++); + for (var i = 0; i < names.length; i++) + if (name == names[i]) + return i + 1; + size--; + } + throw 'Unknown name at position ' + iInit; + }; + // Confirm that a literal character matches the string value + var checkLiteral = function() { + if (value.charAt(iValue) != format.charAt(iFormat)) + throw 'Unexpected literal at position ' + iValue; + iValue++; + }; + var iValue = 0; + for (var iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) + if (format.charAt(iFormat) == "'" && !lookAhead("'")) + literal = false; + else + checkLiteral(); + else + switch (format.charAt(iFormat)) { + case 'd': + day = getNumber('d'); + break; + case 'D': + getName('D', dayNamesShort, dayNames); + break; + case 'o': + doy = getNumber('o'); + break; + case 'm': + month = getNumber('m'); + break; + case 'M': + month = getName('M', monthNamesShort, monthNames); + break; + case 'y': + year = getNumber('y'); + break; + case '@': + var date = new Date(getNumber('@')); + year = date.getFullYear(); + month = date.getMonth() + 1; + day = date.getDate(); + break; + case "'": + if (lookAhead("'")) + checkLiteral(); + else + literal = true; + break; + default: + checkLiteral(); + } + } + if (year == -1) + year = new Date().getFullYear(); + else if (year < 100) + year += new Date().getFullYear() - new Date().getFullYear() % 100 + + (year <= shortYearCutoff ? 0 : -100); + if (doy > -1) { + month = 1; + day = doy; + do { + var dim = this._getDaysInMonth(year, month - 1); + if (day <= dim) + break; + month++; + day -= dim; + } while (true); + } + var date = this._daylightSavingAdjust(new Date(year, month - 1, day)); + if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) + throw 'Invalid date'; // E.g. 31/02/* + return date; + }, + + /* Standard date formats. */ + ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601) + COOKIE: 'D, dd M yy', + ISO_8601: 'yy-mm-dd', + RFC_822: 'D, d M y', + RFC_850: 'DD, dd-M-y', + RFC_1036: 'D, d M y', + RFC_1123: 'D, d M yy', + RFC_2822: 'D, d M yy', + RSS: 'D, d M y', // RFC 822 + TIMESTAMP: '@', + W3C: 'yy-mm-dd', // ISO 8601 + + /* Format a date object into a string value. + The format can be combinations of the following: + d - day of month (no leading zero) + dd - day of month (two digit) + o - day of year (no leading zeros) + oo - day of year (three digit) + D - day name short + DD - day name long + m - month of year (no leading zero) + mm - month of year (two digit) + M - month name short + MM - month name long + y - year (two digit) + yy - year (four digit) + @ - Unix timestamp (ms since 01/01/1970) + '...' - literal text + '' - single quote + + @param format string - the desired format of the date + @param date Date - the date value to format + @param settings Object - attributes include: + dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) + dayNames string[7] - names of the days from Sunday (optional) + monthNamesShort string[12] - abbreviated names of the months (optional) + monthNames string[12] - names of the months (optional) + @return string - the date in the above format */ + formatDate: function (format, date, settings) { + if (!date) + return ''; + var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; + var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; + var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; + var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; + // Check whether a format character is doubled + var lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); + if (matches) + iFormat++; + return matches; + }; + // Format a number, with leading zero if necessary + var formatNumber = function(match, value, len) { + var num = '' + value; + if (lookAhead(match)) + while (num.length < len) + num = '0' + num; + return num; + }; + // Format a name, short or long as requested + var formatName = function(match, value, shortNames, longNames) { + return (lookAhead(match) ? longNames[value] : shortNames[value]); + }; + var output = ''; + var literal = false; + if (date) + for (var iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) + if (format.charAt(iFormat) == "'" && !lookAhead("'")) + literal = false; + else + output += format.charAt(iFormat); + else + switch (format.charAt(iFormat)) { + case 'd': + output += formatNumber('d', date.getDate(), 2); + break; + case 'D': + output += formatName('D', date.getDay(), dayNamesShort, dayNames); + break; + case 'o': + var doy = date.getDate(); + for (var m = date.getMonth() - 1; m >= 0; m--) + doy += this._getDaysInMonth(date.getFullYear(), m); + output += formatNumber('o', doy, 3); + break; + case 'm': + output += formatNumber('m', date.getMonth() + 1, 2); + break; + case 'M': + output += formatName('M', date.getMonth(), monthNamesShort, monthNames); + break; + case 'y': + output += (lookAhead('y') ? date.getFullYear() : + (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100); + break; + case '@': + output += date.getTime(); + break; + case "'": + if (lookAhead("'")) + output += "'"; + else + literal = true; + break; + default: + output += format.charAt(iFormat); + } + } + return output; + }, + + /* Extract all possible characters from the date format. */ + _possibleChars: function (format) { + var chars = ''; + var literal = false; + for (var iFormat = 0; iFormat < format.length; iFormat++) + if (literal) + if (format.charAt(iFormat) == "'" && !lookAhead("'")) + literal = false; + else + chars += format.charAt(iFormat); + else + switch (format.charAt(iFormat)) { + case 'd': case 'm': case 'y': case '@': + chars += '0123456789'; + break; + case 'D': case 'M': + return null; // Accept anything + case "'": + if (lookAhead("'")) + chars += "'"; + else + literal = true; + break; + default: + chars += format.charAt(iFormat); + } + return chars; + }, + + /* Get a setting value, defaulting if necessary. */ + _get: function(inst, name) { + return inst.settings[name] !== undefined ? + inst.settings[name] : this._defaults[name]; + }, + + /* Parse existing date and initialise date picker. */ + _setDateFromField: function(inst) { + var dateFormat = this._get(inst, 'dateFormat'); + var dates = inst.input ? inst.input.val().split(this._get(inst, 'rangeSeparator')) : null; + inst.endDay = inst.endMonth = inst.endYear = null; + var date = defaultDate = this._getDefaultDate(inst); + if (dates.length > 0) { + var settings = this._getFormatConfig(inst); + if (dates.length > 1) { + date = this.parseDate(dateFormat, dates[1], settings) || defaultDate; + inst.endDay = date.getDate(); + inst.endMonth = date.getMonth(); + inst.endYear = date.getFullYear(); + } + try { + date = this.parseDate(dateFormat, dates[0], settings) || defaultDate; + } catch (event) { + this.log(event); + date = defaultDate; + } + } + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + inst.currentDay = (dates[0] ? date.getDate() : 0); + inst.currentMonth = (dates[0] ? date.getMonth() : 0); + inst.currentYear = (dates[0] ? date.getFullYear() : 0); + this._adjustInstDate(inst); + }, + + /* Retrieve the default date shown on opening. */ + _getDefaultDate: function(inst) { + var date = this._determineDate(this._get(inst, 'defaultDate'), new Date()); + var minDate = this._getMinMaxDate(inst, 'min', true); + var maxDate = this._getMinMaxDate(inst, 'max'); + date = (minDate && date < minDate ? minDate : date); + date = (maxDate && date > maxDate ? maxDate : date); + return date; + }, + + /* A date may be specified as an exact value or a relative one. */ + _determineDate: function(date, defaultDate) { + var offsetNumeric = function(offset) { + var date = new Date(); + date.setDate(date.getDate() + offset); + return date; + }; + var offsetString = function(offset, getDaysInMonth) { + var date = new Date(); + var year = date.getFullYear(); + var month = date.getMonth(); + var day = date.getDate(); + var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g; + var matches = pattern.exec(offset); + while (matches) { + switch (matches[2] || 'd') { + case 'd' : case 'D' : + day += parseInt(matches[1],10); break; + case 'w' : case 'W' : + day += parseInt(matches[1],10) * 7; break; + case 'm' : case 'M' : + month += parseInt(matches[1],10); + day = Math.min(day, getDaysInMonth(year, month)); + break; + case 'y': case 'Y' : + year += parseInt(matches[1],10); + day = Math.min(day, getDaysInMonth(year, month)); + break; + } + matches = pattern.exec(offset); + } + return new Date(year, month, day); + }; + date = (date == null ? defaultDate : + (typeof date == 'string' ? offsetString(date, this._getDaysInMonth) : + (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : date))); + date = (date && date.toString() == 'Invalid Date' ? defaultDate : date); + if (date) { + date.setHours(0); + date.setMinutes(0); + date.setSeconds(0); + date.setMilliseconds(0); + } + return this._daylightSavingAdjust(date); + }, + + /* Handle switch to/from daylight saving. + Hours may be non-zero on daylight saving cut-over: + > 12 when midnight changeover, but then cannot generate + midnight datetime, so jump to 1AM, otherwise reset. + @param date (Date) the date to check + @return (Date) the corrected date */ + _daylightSavingAdjust: function(date) { + if (!date) return null; + date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); + return date; + }, + + /* Set the date(s) directly. */ + _setDate: function(inst, date, endDate) { + var clear = !(date); + var origMonth = inst.selectedMonth; + var origYear = inst.selectedYear; + date = this._determineDate(date, new Date()); + inst.selectedDay = inst.currentDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = inst.currentMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = inst.currentYear = date.getFullYear(); + if (this._get(inst, 'rangeSelect')) { + if (endDate) { + endDate = this._determineDate(endDate, null); + inst.endDay = endDate.getDate(); + inst.endMonth = endDate.getMonth(); + inst.endYear = endDate.getFullYear(); + } else { + inst.endDay = inst.currentDay; + inst.endMonth = inst.currentMonth; + inst.endYear = inst.currentYear; + } + } + if (origMonth != inst.selectedMonth || origYear != inst.selectedYear) + this._notifyChange(inst); + this._adjustInstDate(inst); + if (inst.input) + inst.input.val(clear ? '' : this._formatDate(inst) + + (!this._get(inst, 'rangeSelect') ? '' : this._get(inst, 'rangeSeparator') + + this._formatDate(inst, inst.endDay, inst.endMonth, inst.endYear))); + }, + + /* Retrieve the date(s) directly. */ + _getDate: function(inst) { + var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null : + this._daylightSavingAdjust(new Date( + inst.currentYear, inst.currentMonth, inst.currentDay))); + if (this._get(inst, 'rangeSelect')) { + return [inst.rangeStart || startDate, + (!inst.endYear ? inst.rangeStart || startDate : + this._daylightSavingAdjust(new Date(inst.endYear, inst.endMonth, inst.endDay)))]; + } else + return startDate; + }, + + /* Generate the HTML for the current state of the date picker. */ + _generateHTML: function(inst) { + var today = new Date(); + today = this._daylightSavingAdjust( + new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time + var showStatus = this._get(inst, 'showStatus'); + var initStatus = this._get(inst, 'initStatus') || ' '; + var isRTL = this._get(inst, 'isRTL'); + // build the date picker HTML + var clear = (this._get(inst, 'mandatory') ? '' : + ''); + var controls = '
              ' + (isRTL ? '' : clear) + + '' + (isRTL ? clear : '') + '
              '; + var prompt = this._get(inst, 'prompt'); + var closeAtTop = this._get(inst, 'closeAtTop'); + var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext'); + var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat'); + var showBigPrevNext = this._get(inst, 'showBigPrevNext'); + var numMonths = this._getNumberOfMonths(inst); + var showCurrentAtPos = this._get(inst, 'showCurrentAtPos'); + var stepMonths = this._get(inst, 'stepMonths'); + var stepBigMonths = this._get(inst, 'stepBigMonths'); + var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1); + var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : + new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + var minDate = this._getMinMaxDate(inst, 'min', true); + var maxDate = this._getMinMaxDate(inst, 'max'); + var drawMonth = inst.drawMonth - showCurrentAtPos; + var drawYear = inst.drawYear; + if (drawMonth < 0) { + drawMonth += 12; + drawYear--; + } + if (maxDate) { + var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), + maxDate.getMonth() - numMonths[1] + 1, maxDate.getDate())); + maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); + while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { + drawMonth--; + if (drawMonth < 0) { + drawMonth = 11; + drawYear--; + } + } + } + // controls and links + var prevText = this._get(inst, 'prevText'); + prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), + this._getFormatConfig(inst))); + var prevBigText = (showBigPrevNext ? this._get(inst, 'prevBigText') : ''); + prevBigText = (!navigationAsDateFormat ? prevBigText : this.formatDate(prevBigText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepBigMonths, 1)), + this._getFormatConfig(inst))); + var prev = '
              ' + (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? + (showBigPrevNext ? '' + prevBigText + '' : '') + + '' + prevText + '' : + (hideIfNoPrevNext ? '' : (showBigPrevNext ? '' : '') + + '')) + '
              '; + var nextText = this._get(inst, 'nextText'); + nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), + this._getFormatConfig(inst))); + var nextBigText = (showBigPrevNext ? this._get(inst, 'nextBigText') : ''); + nextBigText = (!navigationAsDateFormat ? nextBigText : this.formatDate(nextBigText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepBigMonths, 1)), + this._getFormatConfig(inst))); + var next = '
              ' + (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? + '' + nextText + '' + + (showBigPrevNext ? '' + nextBigText + '' : '') : + (hideIfNoPrevNext ? '' : '' + + (showBigPrevNext ? '' : ''))) + '
              '; + var currentText = this._get(inst, 'currentText'); + var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today); + currentText = (!navigationAsDateFormat ? currentText : + this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); + var html = (closeAtTop && !inst.inline ? controls : '') + + '' + + (prompt ? '
              ' + prompt + '
              ' : ''); + var firstDay = parseInt(this._get(inst, 'firstDay')); + firstDay = (isNaN(firstDay) ? 0 : firstDay); + var changeFirstDay = this._get(inst, 'changeFirstDay'); + var dayNames = this._get(inst, 'dayNames'); + var dayNamesShort = this._get(inst, 'dayNamesShort'); + var dayNamesMin = this._get(inst, 'dayNamesMin'); + var monthNames = this._get(inst, 'monthNames'); + var beforeShowDay = this._get(inst, 'beforeShowDay'); + var highlightWeek = this._get(inst, 'highlightWeek'); + var showOtherMonths = this._get(inst, 'showOtherMonths'); + var showWeeks = this._get(inst, 'showWeeks'); + var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week; + var weekStatus = this._get(inst, 'weekStatus'); + var status = (showStatus ? this._get(inst, 'dayStatus') || initStatus : ''); + var dateStatus = this._get(inst, 'statusForDate') || this.dateStatus; + var endDate = inst.endDay ? this._daylightSavingAdjust( + new Date(inst.endYear, inst.endMonth, inst.endDay)) : currentDate; + var defaultDate = this._getDefaultDate(inst); + for (var row = 0; row < numMonths[0]; row++) + for (var col = 0; col < numMonths[1]; col++) { + var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); + html += '
              ' + + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, + selectedDate, row > 0 || col > 0, showStatus, initStatus, monthNames) + // draw month headers + '' + + '' + + (showWeeks ? '' + + this._get(inst, 'weekHeader') + '' : ''); + for (var dow = 0; dow < 7; dow++) { // days of the week + var day = (dow + firstDay) % 7; + var dayStatus = (status.indexOf('DD') > -1 ? status.replace(/DD/, dayNames[day]) : + status.replace(/D/, dayNamesShort[day])); + html += '= 5 ? ' class="ui-datepicker-week-end-cell"' : '') + '>' + + (!changeFirstDay ? '' + + dayNamesMin[day] + (changeFirstDay ? '' : '') + ''; + } + html += ''; + var daysInMonth = this._getDaysInMonth(drawYear, drawMonth); + if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth) + inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); + var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; + var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); // calculate the number of rows to generate + var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); + for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows + html += '' + + (showWeeks ? '' : ''); + for (var dow = 0; dow < 7; dow++) { // create date picker days + var daySettings = (beforeShowDay ? + beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']); + var otherMonth = (printDate.getMonth() != drawMonth); + var unselectable = otherMonth || !daySettings[0] || + (minDate && printDate < minDate) || (maxDate && printDate > maxDate); + html += ''; // display for this month + printDate.setDate(printDate.getDate() + 1); + printDate = this._daylightSavingAdjust(printDate); + } + html += ''; + } + drawMonth++; + if (drawMonth > 11) { + drawMonth = 0; + drawYear++; + } + html += '
              ' + + calculateWeek(printDate) + '' + // actions + (otherMonth ? (showOtherMonths ? printDate.getDate() : ' ') : // display for other months + (unselectable ? printDate.getDate() : '' + printDate.getDate() + '')) + '
              '; + } + html += (showStatus ? '
              ' + initStatus + '
              ' : '') + + (!closeAtTop && !inst.inline ? controls : '') + + '
              ' + + ($.browser.msie && parseInt($.browser.version,10) < 7 && !inst.inline ? + '' : ''); + inst._keyEvent = false; + return html; + }, + + /* Generate the month and year header. */ + _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, + selectedDate, secondary, showStatus, initStatus, monthNames) { + minDate = (inst.rangeStart && minDate && selectedDate < minDate ? selectedDate : minDate); + var changeMonth = this._get(inst, 'changeMonth'); + var changeYear = this._get(inst, 'changeYear'); + var showMonthAfterYear = this._get(inst, 'showMonthAfterYear'); + var html = '
              '; + var monthHtml = ''; + // month selection + if (secondary || !changeMonth) + monthHtml += monthNames[drawMonth]; + else { + var inMinYear = (minDate && minDate.getFullYear() == drawYear); + var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); + monthHtml += ''; + } + if (!showMonthAfterYear) + html += monthHtml + (secondary || changeMonth || changeYear ? ' ' : ''); + // year selection + if (secondary || !changeYear) + html += drawYear; + else { + // determine range of years to display + var years = this._get(inst, 'yearRange').split(':'); + var year = 0; + var endYear = 0; + if (years.length != 2) { + year = drawYear - 10; + endYear = drawYear + 10; + } else if (years[0].charAt(0) == '+' || years[0].charAt(0) == '-') { + year = endYear = new Date().getFullYear(); + year += parseInt(years[0], 10); + endYear += parseInt(years[1], 10); + } else { + year = parseInt(years[0], 10); + endYear = parseInt(years[1], 10); + } + year = (minDate ? Math.max(year, minDate.getFullYear()) : year); + endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); + html += ''; + } + if (showMonthAfterYear) + html += (secondary || changeMonth || changeYear ? ' ' : '') + monthHtml; + html += '
              '; // Close datepicker_header + return html; + }, + + /* Provide code to set and clear the status panel. */ + _addStatus: function(showStatus, id, text, initStatus) { + return (showStatus ? ' onmouseover="jQuery(\'#ui-datepicker-status-' + id + + '\').html(\'' + (text || initStatus) + '\');" ' + + 'onmouseout="jQuery(\'#ui-datepicker-status-' + id + + '\').html(\'' + initStatus + '\');"' : ''); + }, + + /* Adjust one of the date sub-fields. */ + _adjustInstDate: function(inst, offset, period) { + var year = inst.drawYear + (period == 'Y' ? offset : 0); + var month = inst.drawMonth + (period == 'M' ? offset : 0); + var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + + (period == 'D' ? offset : 0); + var date = this._daylightSavingAdjust(new Date(year, month, day)); + // ensure it is within the bounds set + var minDate = this._getMinMaxDate(inst, 'min', true); + var maxDate = this._getMinMaxDate(inst, 'max'); + date = (minDate && date < minDate ? minDate : date); + date = (maxDate && date > maxDate ? maxDate : date); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + if (period == 'M' || period == 'Y') + this._notifyChange(inst); + }, + + /* Notify change of month/year. */ + _notifyChange: function(inst) { + var onChange = this._get(inst, 'onChangeMonthYear'); + if (onChange) + onChange.apply((inst.input ? inst.input[0] : null), + [inst.selectedYear, inst.selectedMonth + 1, inst]); + }, + + /* Determine the number of months to show. */ + _getNumberOfMonths: function(inst) { + var numMonths = this._get(inst, 'numberOfMonths'); + return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths)); + }, + + /* Determine the current maximum date - ensure no time components are set - may be overridden for a range. */ + _getMinMaxDate: function(inst, minMax, checkRange) { + var date = this._determineDate(this._get(inst, minMax + 'Date'), null); + return (!checkRange || !inst.rangeStart ? date : + (!date || inst.rangeStart > date ? inst.rangeStart : date)); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function(year, month) { + return 32 - new Date(year, month, 32).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function(year, month) { + return new Date(year, month, 1).getDay(); + }, + + /* Determines if we should allow a "next/prev" month display change. */ + _canAdjustMonth: function(inst, offset, curYear, curMonth) { + var numMonths = this._getNumberOfMonths(inst); + var date = this._daylightSavingAdjust(new Date( + curYear, curMonth + (offset < 0 ? offset : numMonths[1]), 1)); + if (offset < 0) + date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); + return this._isInRange(inst, date); + }, + + /* Is the given date in the accepted range? */ + _isInRange: function(inst, date) { + // during range selection, use minimum of selected date and range start + var newMinDate = (!inst.rangeStart ? null : this._daylightSavingAdjust( + new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay))); + newMinDate = (newMinDate && inst.rangeStart < newMinDate ? inst.rangeStart : newMinDate); + var minDate = newMinDate || this._getMinMaxDate(inst, 'min'); + var maxDate = this._getMinMaxDate(inst, 'max'); + return ((!minDate || date >= minDate) && (!maxDate || date <= maxDate)); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function(inst) { + var shortYearCutoff = this._get(inst, 'shortYearCutoff'); + shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); + return {shortYearCutoff: shortYearCutoff, + dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'), + monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')}; + }, + + /* Format the given date for display. */ + _formatDate: function(inst, day, month, year) { + if (!day) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + var date = (day ? (typeof day == 'object' ? day : + this._daylightSavingAdjust(new Date(year, month, day))) : + this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst)); + } +}); + +/* jQuery extend now ignores nulls! */ +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) + if (props[name] == null || props[name] == undefined) + target[name] = props[name]; + return target; +}; + +/* Determine whether an object is an array. */ +function isArray(a) { + return (a && (($.browser.safari && typeof a == 'object' && a.length) || + (a.constructor && a.constructor.toString().match(/\Array\(\)/)))); +}; + +/* Invoke the datepicker functionality. + @param options string - a command, optionally followed by additional parameters or + Object - settings for attaching new datepicker functionality + @return jQuery object */ +$.fn.datepicker = function(options){ + + /* Initialise the date picker. */ + if (!$.datepicker.initialized) { + $(document.body).append($.datepicker.dpDiv). + mousedown($.datepicker._checkExternalClick); + $.datepicker.initialized = true; + } + + var otherArgs = Array.prototype.slice.call(arguments, 1); + if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate')) + return $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this[0]].concat(otherArgs)); + return this.each(function() { + typeof options == 'string' ? + $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this].concat(otherArgs)) : + $.datepicker._attachDatepicker(this, options); + }); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.6"; + +})(jQuery); diff --git a/wp-content/plugins/gravityforms/js/jquery-ui/ui.sortable.js b/wp-content/plugins/gravityforms/js/jquery-ui/ui.sortable.js new file mode 100644 index 0000000..c2a0e23 --- /dev/null +++ b/wp-content/plugins/gravityforms/js/jquery-ui/ui.sortable.js @@ -0,0 +1,1019 @@ +/* + * jQuery UI Sortable 1.7.1 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Sortables + * + * Depends: + * ui.core.js + */ +(function($) { + +$.widget("ui.sortable", $.extend({}, $.ui.mouse, { + _init: function() { + + var o = this.options; + this.containerCache = {}; + this.element.addClass("ui-sortable"); + + //Get the items + this.refresh(); + + //Let's determine if the items are floating + this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) : false; + + //Let's determine the parent's offset + this.offset = this.element.offset(); + + //Initialize mouse events for interaction + this._mouseInit(); + + }, + + destroy: function() { + this.element + .removeClass("ui-sortable ui-sortable-disabled") + .removeData("sortable") + .unbind(".sortable"); + this._mouseDestroy(); + + for ( var i = this.items.length - 1; i >= 0; i-- ) + this.items[i].item.removeData("sortable-item"); + }, + + _mouseCapture: function(event, overrideHandle) { + + if (this.reverting) { + return false; + } + + if(this.options.disabled || this.options.type == 'static') return false; + + //We have to refresh the items data once first + this._refreshItems(event); + + //Find out if the clicked node (or one of its parents) is a actual item in this.items + var currentItem = null, self = this, nodes = $(event.target).parents().each(function() { + if($.data(this, 'sortable-item') == self) { + currentItem = $(this); + return false; + } + }); + if($.data(event.target, 'sortable-item') == self) currentItem = $(event.target); + + if(!currentItem) return false; + if(this.options.handle && !overrideHandle) { + var validHandle = false; + + $(this.options.handle, currentItem).find("*").andSelf().each(function() { if(this == event.target) validHandle = true; }); + if(!validHandle) return false; + } + + this.currentItem = currentItem; + this._removeCurrentsFromItems(); + return true; + + }, + + _mouseStart: function(event, overrideHandle, noActivation) { + + var o = this.options, self = this; + this.currentContainer = this; + + //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture + this.refreshPositions(); + + //Create and append the visible helper + this.helper = this._createHelper(event); + + //Cache the helper size + this._cacheHelperProportions(); + + /* + * - Position generation - + * This block generates everything position related - it's the core of draggables. + */ + + //Cache the margins of the original element + this._cacheMargins(); + + //Get the next scrolling parent + this.scrollParent = this.helper.scrollParent(); + + //The element's absolute position on the page minus margins + this.offset = this.currentItem.offset(); + this.offset = { + top: this.offset.top - this.margins.top, + left: this.offset.left - this.margins.left + }; + + // Only after we got the offset, we can change the helper's position to absolute + // TODO: Still need to figure out a way to make relative sorting possible + this.helper.css("position", "absolute"); + this.cssPosition = this.helper.css("position"); + + $.extend(this.offset, { + click: { //Where the click happened, relative to the element + left: event.pageX - this.offset.left, + top: event.pageY - this.offset.top + }, + parent: this._getParentOffset(), + relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper + }); + + //Generate the original position + this.originalPosition = this._generatePosition(event); + this.originalPageX = event.pageX; + this.originalPageY = event.pageY; + + //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied + if(o.cursorAt) + this._adjustOffsetFromHelper(o.cursorAt); + + //Cache the former DOM position + this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; + + //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way + if(this.helper[0] != this.currentItem[0]) { + this.currentItem.hide(); + } + + //Create the placeholder + this._createPlaceholder(); + + //Set a containment if given in the options + if(o.containment) + this._setContainment(); + + if(o.cursor) { // cursor option + if ($('body').css("cursor")) this._storedCursor = $('body').css("cursor"); + $('body').css("cursor", o.cursor); + } + + if(o.opacity) { // opacity option + if (this.helper.css("opacity")) this._storedOpacity = this.helper.css("opacity"); + this.helper.css("opacity", o.opacity); + } + + if(o.zIndex) { // zIndex option + if (this.helper.css("zIndex")) this._storedZIndex = this.helper.css("zIndex"); + this.helper.css("zIndex", o.zIndex); + } + + //Prepare scrolling + if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') + this.overflowOffset = this.scrollParent.offset(); + + //Call callbacks + this._trigger("start", event, this._uiHash()); + + //Recache the helper size + if(!this._preserveHelperProportions) + this._cacheHelperProportions(); + + + //Post 'activate' events to possible containers + if(!noActivation) { + for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("activate", event, self._uiHash(this)); } + } + + //Prepare possible droppables + if($.ui.ddmanager) + $.ui.ddmanager.current = this; + + if ($.ui.ddmanager && !o.dropBehaviour) + $.ui.ddmanager.prepareOffsets(this, event); + + this.dragging = true; + + this.helper.addClass("ui-sortable-helper"); + this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position + return true; + + }, + + _mouseDrag: function(event) { + + //Compute the helpers position + this.position = this._generatePosition(event); + this.positionAbs = this._convertPositionTo("absolute"); + + if (!this.lastPositionAbs) { + this.lastPositionAbs = this.positionAbs; + } + + //Do scrolling + if(this.options.scroll) { + var o = this.options, scrolled = false; + if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') { + + if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) + this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; + else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) + this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; + + if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) + this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; + else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) + this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; + + } else { + + if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) + scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); + else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) + scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); + + if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) + scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); + else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) + scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); + + } + + if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) + $.ui.ddmanager.prepareOffsets(this, event); + } + + //Regenerate the absolute position used for position checks + this.positionAbs = this._convertPositionTo("absolute"); + + //Set the helper position + if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px'; + if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px'; + + //Rearrange + for (var i = this.items.length - 1; i >= 0; i--) { + + //Cache variables and intersection, continue if no intersection + var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item); + if (!intersection) continue; + + if(itemElement != this.currentItem[0] //cannot intersect with itself + && this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before + && !$.ui.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked + && (this.options.type == 'semi-dynamic' ? !$.ui.contains(this.element[0], itemElement) : true) + ) { + + this.direction = intersection == 1 ? "down" : "up"; + + if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) { + this._rearrange(event, item); + } else { + break; + } + + this._trigger("change", event, this._uiHash()); + break; + } + } + + //Post events to containers + this._contactContainers(event); + + //Interconnect with droppables + if($.ui.ddmanager) $.ui.ddmanager.drag(this, event); + + //Call callbacks + this._trigger('sort', event, this._uiHash()); + + this.lastPositionAbs = this.positionAbs; + return false; + + }, + + _mouseStop: function(event, noPropagation) { + + if(!event) return; + + //If we are using droppables, inform the manager about the drop + if ($.ui.ddmanager && !this.options.dropBehaviour) + $.ui.ddmanager.drop(this, event); + + if(this.options.revert) { + var self = this; + var cur = self.placeholder.offset(); + + self.reverting = true; + + $(this.helper).animate({ + left: cur.left - this.offset.parent.left - self.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft), + top: cur.top - this.offset.parent.top - self.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop) + }, parseInt(this.options.revert, 10) || 500, function() { + self._clear(event); + }); + } else { + this._clear(event, noPropagation); + } + + return false; + + }, + + cancel: function() { + + var self = this; + + if(this.dragging) { + + this._mouseUp(); + + if(this.options.helper == "original") + this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); + else + this.currentItem.show(); + + //Post deactivating events to containers + for (var i = this.containers.length - 1; i >= 0; i--){ + this.containers[i]._trigger("deactivate", null, self._uiHash(this)); + if(this.containers[i].containerCache.over) { + this.containers[i]._trigger("out", null, self._uiHash(this)); + this.containers[i].containerCache.over = 0; + } + } + + } + + //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! + if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]); + if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove(); + + $.extend(this, { + helper: null, + dragging: false, + reverting: false, + _noFinalSort: null + }); + + if(this.domPosition.prev) { + $(this.domPosition.prev).after(this.currentItem); + } else { + $(this.domPosition.parent).prepend(this.currentItem); + } + + return true; + + }, + + serialize: function(o) { + + var items = this._getItemsAsjQuery(o && o.connected); + var str = []; o = o || {}; + + $(items).each(function() { + var res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/)); + if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2])); + }); + + return str.join('&'); + + }, + + toArray: function(o) { + + var items = this._getItemsAsjQuery(o && o.connected); + var ret = []; o = o || {}; + + items.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); }); + return ret; + + }, + + /* Be careful with the following core functions */ + _intersectsWith: function(item) { + + var x1 = this.positionAbs.left, + x2 = x1 + this.helperProportions.width, + y1 = this.positionAbs.top, + y2 = y1 + this.helperProportions.height; + + var l = item.left, + r = l + item.width, + t = item.top, + b = t + item.height; + + var dyClick = this.offset.click.top, + dxClick = this.offset.click.left; + + var isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r; + + if( this.options.tolerance == "pointer" + || this.options.forcePointerForContainers + || (this.options.tolerance != "pointer" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height']) + ) { + return isOverElement; + } else { + + return (l < x1 + (this.helperProportions.width / 2) // Right Half + && x2 - (this.helperProportions.width / 2) < r // Left Half + && t < y1 + (this.helperProportions.height / 2) // Bottom Half + && y2 - (this.helperProportions.height / 2) < b ); // Top Half + + } + }, + + _intersectsWithPointer: function(item) { + + var isOverElementHeight = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), + isOverElementWidth = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), + isOverElement = isOverElementHeight && isOverElementWidth, + verticalDirection = this._getDragVerticalDirection(), + horizontalDirection = this._getDragHorizontalDirection(); + + if (!isOverElement) + return false; + + return this.floating ? + ( ((horizontalDirection && horizontalDirection == "right") || verticalDirection == "down") ? 2 : 1 ) + : ( verticalDirection && (verticalDirection == "down" ? 2 : 1) ); + + }, + + _intersectsWithSides: function(item) { + + var isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), + isOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), + verticalDirection = this._getDragVerticalDirection(), + horizontalDirection = this._getDragHorizontalDirection(); + + if (this.floating && horizontalDirection) { + return ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf)); + } else { + return verticalDirection && ((verticalDirection == "down" && isOverBottomHalf) || (verticalDirection == "up" && !isOverBottomHalf)); + } + + }, + + _getDragVerticalDirection: function() { + var delta = this.positionAbs.top - this.lastPositionAbs.top; + return delta != 0 && (delta > 0 ? "down" : "up"); + }, + + _getDragHorizontalDirection: function() { + var delta = this.positionAbs.left - this.lastPositionAbs.left; + return delta != 0 && (delta > 0 ? "right" : "left"); + }, + + refresh: function(event) { + this._refreshItems(event); + this.refreshPositions(); + }, + + _connectWith: function() { + var options = this.options; + return options.connectWith.constructor == String + ? [options.connectWith] + : options.connectWith; + }, + + _getItemsAsjQuery: function(connected) { + + var self = this; + var items = []; + var queries = []; + var connectWith = this._connectWith(); + + if(connectWith && connected) { + for (var i = connectWith.length - 1; i >= 0; i--){ + var cur = $(connectWith[i]); + for (var j = cur.length - 1; j >= 0; j--){ + var inst = $.data(cur[j], 'sortable'); + if(inst && inst != this && !inst.options.disabled) { + queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper"), inst]); + } + }; + }; + } + + queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper"), this]); + + for (var i = queries.length - 1; i >= 0; i--){ + queries[i][0].each(function() { + items.push(this); + }); + }; + + return $(items); + + }, + + _removeCurrentsFromItems: function() { + + var list = this.currentItem.find(":data(sortable-item)"); + + for (var i=0; i < this.items.length; i++) { + + for (var j=0; j < list.length; j++) { + if(list[j] == this.items[i].item[0]) + this.items.splice(i,1); + }; + + }; + + }, + + _refreshItems: function(event) { + + this.items = []; + this.containers = [this]; + var items = this.items; + var self = this; + var queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]]; + var connectWith = this._connectWith(); + + if(connectWith) { + for (var i = connectWith.length - 1; i >= 0; i--){ + var cur = $(connectWith[i]); + for (var j = cur.length - 1; j >= 0; j--){ + var inst = $.data(cur[j], 'sortable'); + if(inst && inst != this && !inst.options.disabled) { + queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); + this.containers.push(inst); + } + }; + }; + } + + for (var i = queries.length - 1; i >= 0; i--) { + var targetData = queries[i][1]; + var _queries = queries[i][0]; + + for (var j=0, queriesLength = _queries.length; j < queriesLength; j++) { + var item = $(_queries[j]); + + item.data('sortable-item', targetData); // Data for target checking (mouse manager) + + items.push({ + item: item, + instance: targetData, + width: 0, height: 0, + left: 0, top: 0 + }); + }; + }; + + }, + + refreshPositions: function(fast) { + + //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change + if(this.offsetParent && this.helper) { + this.offset.parent = this._getParentOffset(); + } + + for (var i = this.items.length - 1; i >= 0; i--){ + var item = this.items[i]; + + //We ignore calculating positions of all connected containers when we're not over them + if(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0]) + continue; + + var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; + + if (!fast) { + item.width = t.outerWidth(); + item.height = t.outerHeight(); + } + + var p = t.offset(); + item.left = p.left; + item.top = p.top; + }; + + if(this.options.custom && this.options.custom.refreshContainers) { + this.options.custom.refreshContainers.call(this); + } else { + for (var i = this.containers.length - 1; i >= 0; i--){ + var p = this.containers[i].element.offset(); + this.containers[i].containerCache.left = p.left; + this.containers[i].containerCache.top = p.top; + this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); + this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); + }; + } + + }, + + _createPlaceholder: function(that) { + + var self = that || this, o = self.options; + + if(!o.placeholder || o.placeholder.constructor == String) { + var className = o.placeholder; + o.placeholder = { + element: function() { + + var el = $(document.createElement(self.currentItem[0].nodeName)) + .addClass(className || self.currentItem[0].className+" ui-sortable-placeholder") + .removeClass("ui-sortable-helper")[0]; + + if(!className) + el.style.visibility = "hidden"; + + return el; + }, + update: function(container, p) { + + // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that + // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified + if(className && !o.forcePlaceholderSize) return; + + //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item + if(!p.height()) { p.height(self.currentItem.innerHeight() - parseInt(self.currentItem.css('paddingTop')||0, 10) - parseInt(self.currentItem.css('paddingBottom')||0, 10)); }; + if(!p.width()) { p.width(self.currentItem.innerWidth() - parseInt(self.currentItem.css('paddingLeft')||0, 10) - parseInt(self.currentItem.css('paddingRight')||0, 10)); }; + } + }; + } + + //Create the placeholder + self.placeholder = $(o.placeholder.element.call(self.element, self.currentItem)); + + //Append it after the actual current item + self.currentItem.after(self.placeholder); + + //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) + o.placeholder.update(self, self.placeholder); + + }, + + _contactContainers: function(event) { + for (var i = this.containers.length - 1; i >= 0; i--){ + + if(this._intersectsWith(this.containers[i].containerCache)) { + if(!this.containers[i].containerCache.over) { + + if(this.currentContainer != this.containers[i]) { + + //When entering a new container, we will find the item with the least distance and append our item near it + var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[i].floating ? 'left' : 'top']; + for (var j = this.items.length - 1; j >= 0; j--) { + if(!$.ui.contains(this.containers[i].element[0], this.items[j].item[0])) continue; + var cur = this.items[j][this.containers[i].floating ? 'left' : 'top']; + if(Math.abs(cur - base) < dist) { + dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; + } + } + + if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled + continue; + + this.currentContainer = this.containers[i]; + itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[i].element, true); + this._trigger("change", event, this._uiHash()); + this.containers[i]._trigger("change", event, this._uiHash(this)); + + //Update the placeholder + this.options.placeholder.update(this.currentContainer, this.placeholder); + + } + + this.containers[i]._trigger("over", event, this._uiHash(this)); + this.containers[i].containerCache.over = 1; + } + } else { + if(this.containers[i].containerCache.over) { + this.containers[i]._trigger("out", event, this._uiHash(this)); + this.containers[i].containerCache.over = 0; + } + } + + }; + }, + + _createHelper: function(event) { + + var o = this.options; + var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem); + + if(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already + $(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); + + if(helper[0] == this.currentItem[0]) + this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; + + if(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width()); + if(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height()); + + return helper; + + }, + + _adjustOffsetFromHelper: function(obj) { + if(obj.left != undefined) this.offset.click.left = obj.left + this.margins.left; + if(obj.right != undefined) this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; + if(obj.top != undefined) this.offset.click.top = obj.top + this.margins.top; + if(obj.bottom != undefined) this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; + }, + + _getParentOffset: function() { + + + //Get the offsetParent and cache its position + this.offsetParent = this.helper.offsetParent(); + var po = this.offsetParent.offset(); + + // This is a special case where we need to modify a offset calculated on start, since the following happened: + // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent + // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that + // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag + if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) { + po.left += this.scrollParent.scrollLeft(); + po.top += this.scrollParent.scrollTop(); + } + + if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information + || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix + po = { top: 0, left: 0 }; + + return { + top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), + left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) + }; + + }, + + _getRelativeOffset: function() { + + if(this.cssPosition == "relative") { + var p = this.currentItem.position(); + return { + top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), + left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() + }; + } else { + return { top: 0, left: 0 }; + } + + }, + + _cacheMargins: function() { + this.margins = { + left: (parseInt(this.currentItem.css("marginLeft"),10) || 0), + top: (parseInt(this.currentItem.css("marginTop"),10) || 0) + }; + }, + + _cacheHelperProportions: function() { + this.helperProportions = { + width: this.helper.outerWidth(), + height: this.helper.outerHeight() + }; + }, + + _setContainment: function() { + + var o = this.options; + if(o.containment == 'parent') o.containment = this.helper[0].parentNode; + if(o.containment == 'document' || o.containment == 'window') this.containment = [ + 0 - this.offset.relative.left - this.offset.parent.left, + 0 - this.offset.relative.top - this.offset.parent.top, + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top + ]; + + if(!(/^(document|window|parent)$/).test(o.containment)) { + var ce = $(o.containment)[0]; + var co = $(o.containment).offset(); + var over = ($(ce).css("overflow") != 'hidden'); + + this.containment = [ + co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, + co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, + co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left, + co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top + ]; + } + + }, + + _convertPositionTo: function(d, pos) { + + if(!pos) pos = this.position; + var mod = d == "absolute" ? 1 : -1; + var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + + return { + top: ( + pos.top // The absolute mouse position + + this.offset.relative.top * mod // Only for relative positioned nodes: Relative offset from element to offset parent + + this.offset.parent.top * mod // The offsetParent's offset without borders (offset + border) + - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) + ), + left: ( + pos.left // The absolute mouse position + + this.offset.relative.left * mod // Only for relative positioned nodes: Relative offset from element to offset parent + + this.offset.parent.left * mod // The offsetParent's offset without borders (offset + border) + - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) + ) + }; + + }, + + _generatePosition: function(event) { + + var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + + // This is another very weird special case that only happens for relative elements: + // 1. If the css position is relative + // 2. and the scroll parent is the document or similar to the offset parent + // we have to refresh the relative offset during the scroll so there are no jumps + if(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) { + this.offset.relative = this._getRelativeOffset(); + } + + var pageX = event.pageX; + var pageY = event.pageY; + + /* + * - Position constraining - + * Constrain the position to a mix of grid, containment. + */ + + if(this.originalPosition) { //If we are not dragging yet, we won't check for options + + if(this.containment) { + if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left; + if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top; + if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left; + if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top; + } + + if(o.grid) { + var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; + pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; + + var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; + pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; + } + + } + + return { + top: ( + pageY // The absolute mouse position + - this.offset.click.top // Click offset (relative to the element) + - this.offset.relative.top // Only for relative positioned nodes: Relative offset from element to offset parent + - this.offset.parent.top // The offsetParent's offset without borders (offset + border) + + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) + ), + left: ( + pageX // The absolute mouse position + - this.offset.click.left // Click offset (relative to the element) + - this.offset.relative.left // Only for relative positioned nodes: Relative offset from element to offset parent + - this.offset.parent.left // The offsetParent's offset without borders (offset + border) + + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) + ) + }; + + }, + + _rearrange: function(event, i, a, hardRefresh) { + + a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling)); + + //Various things done here to improve the performance: + // 1. we create a setTimeout, that calls refreshPositions + // 2. on the instance, we have a counter variable, that get's higher after every append + // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same + // 4. this lets only the last addition to the timeout stack through + this.counter = this.counter ? ++this.counter : 1; + var self = this, counter = this.counter; + + window.setTimeout(function() { + if(counter == self.counter) self.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove + },0); + + }, + + _clear: function(event, noPropagation) { + + this.reverting = false; + // We delay all events that have to be triggered to after the point where the placeholder has been removed and + // everything else normalized again + var delayedTriggers = [], self = this; + + // We first have to update the dom position of the actual currentItem + // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) + if(!this._noFinalSort && this.currentItem[0].parentNode) this.placeholder.before(this.currentItem); + this._noFinalSort = null; + + if(this.helper[0] == this.currentItem[0]) { + for(var i in this._storedCSS) { + if(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = ''; + } + this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); + } else { + this.currentItem.show(); + } + + if(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); + if((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed + if(!$.ui.contains(this.element[0], this.currentItem[0])) { //Node was moved out of the current element + if(!noPropagation) delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); + for (var i = this.containers.length - 1; i >= 0; i--){ + if($.ui.contains(this.containers[i].element[0], this.currentItem[0]) && !noPropagation) { + delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.containers[i])); + delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.containers[i])); + } + }; + }; + + //Post events to containers + for (var i = this.containers.length - 1; i >= 0; i--){ + if(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger("deactivate", event, this._uiHash(this)); }; }).call(this, this.containers[i])); + if(this.containers[i].containerCache.over) { + delayedTriggers.push((function(c) { return function(event) { c._trigger("out", event, this._uiHash(this)); }; }).call(this, this.containers[i])); + this.containers[i].containerCache.over = 0; + } + } + + //Do what was originally in plugins + if(this._storedCursor) $('body').css("cursor", this._storedCursor); //Reset cursor + if(this._storedOpacity) this.helper.css("opacity", this._storedOpacity); //Reset cursor + if(this._storedZIndex) this.helper.css("zIndex", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index + + this.dragging = false; + if(this.cancelHelperRemoval) { + if(!noPropagation) { + this._trigger("beforeStop", event, this._uiHash()); + for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events + this._trigger("stop", event, this._uiHash()); + } + return false; + } + + if(!noPropagation) this._trigger("beforeStop", event, this._uiHash()); + + //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! + this.placeholder[0].parentNode.removeChild(this.placeholder[0]); + + if(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null; + + if(!noPropagation) { + for (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events + this._trigger("stop", event, this._uiHash()); + } + + this.fromOutside = false; + return true; + + }, + + _trigger: function() { + if ($.widget.prototype._trigger.apply(this, arguments) === false) { + this.cancel(); + } + }, + + _uiHash: function(inst) { + var self = inst || this; + return { + helper: self.helper, + placeholder: self.placeholder || $([]), + position: self.position, + absolutePosition: self.positionAbs, //deprecated + offset: self.positionAbs, + item: self.currentItem, + sender: inst ? inst.element : null + }; + } + +})); + +$.extend($.ui.sortable, { + getter: "serialize toArray", + version: "1.7.1", + eventPrefix: "sort", + defaults: { + appendTo: "parent", + axis: false, + cancel: ":input,option", + connectWith: false, + containment: false, + cursor: 'auto', + cursorAt: false, + delay: 0, + distance: 1, + dropOnEmpty: true, + forcePlaceholderSize: false, + forceHelperSize: false, + grid: false, + handle: false, + helper: "original", + items: '> *', + opacity: false, + placeholder: false, + revert: false, + scroll: true, + scrollSensitivity: 20, + scrollSpeed: 20, + scope: "default", + tolerance: "intersect", + zIndex: 1000 + } +}); + +})(jQuery); diff --git a/wp-content/plugins/gravityforms/js/jquery.dimensions.js b/wp-content/plugins/gravityforms/js/jquery.dimensions.js new file mode 100644 index 0000000..62e4089 --- /dev/null +++ b/wp-content/plugins/gravityforms/js/jquery.dimensions.js @@ -0,0 +1,119 @@ +/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + * $LastChangedDate$ + * $Rev$ + * + * Version: @VERSION + * + * Requires: jQuery 1.2+ + */ + +(function($){ + +$.dimensions = { + version: '@VERSION' +}; + +// Create innerHeight, innerWidth, outerHeight and outerWidth methods +$.each( [ 'Height', 'Width' ], function(i, name){ + + // innerHeight and innerWidth + $.fn[ 'inner' + name ] = function() { + if (!this[0]) return; + + var torl = name == 'Height' ? 'Top' : 'Left', // top or left + borr = name == 'Height' ? 'Bottom' : 'Right'; // bottom or right + + return this.css('display') != 'none' ? this[0]['client' + name] : num( this, name.toLowerCase() ) + num(this, 'padding' + torl) + num(this, 'padding' + borr); + }; + + // outerHeight and outerWidth + $.fn[ 'outer' + name ] = function(options) { + if (!this[0]) return; + + var torl = name == 'Height' ? 'Top' : 'Left', // top or left + borr = name == 'Height' ? 'Bottom' : 'Right'; // bottom or right + + options = $.extend({ margin: false }, options || {}); + + var val = this.css('display') != 'none' ? + this[0]['offset' + name] : + num( this, name.toLowerCase() ) + + num(this, 'border' + torl + 'Width') + num(this, 'border' + borr + 'Width') + + num(this, 'padding' + torl) + num(this, 'padding' + borr); + + return val + (options.margin ? (num(this, 'margin' + torl) + num(this, 'margin' + borr)) : 0); + }; +}); + +// Create scrollLeft and scrollTop methods +$.each( ['Left', 'Top'], function(i, name) { + $.fn[ 'scroll' + name ] = function(val) { + if (!this[0]) return; + + return val != undefined ? + + // Set the scroll offset + this.each(function() { + this == window || this == document ? + window.scrollTo( + name == 'Left' ? val : $(window)[ 'scrollLeft' ](), + name == 'Top' ? val : $(window)[ 'scrollTop' ]() + ) : + this[ 'scroll' + name ] = val; + }) : + + // Return the scroll offset + this[0] == window || this[0] == document ? + self[ (name == 'Left' ? 'pageXOffset' : 'pageYOffset') ] || + $.boxModel && document.documentElement[ 'scroll' + name ] || + document.body[ 'scroll' + name ] : + this[0][ 'scroll' + name ]; + }; +}); + +$.fn.extend({ + position: function() { + var left = 0, top = 0, elem = this[0], offset, parentOffset, offsetParent, results; + + if (elem) { + // Get *real* offsetParent + offsetParent = this.offsetParent(); + + // Get correct offsets + offset = this.offset(); + parentOffset = offsetParent.offset(); + + // Subtract element margins + offset.top -= num(elem, 'marginTop'); + offset.left -= num(elem, 'marginLeft'); + + // Add offsetParent borders + parentOffset.top += num(offsetParent, 'borderTopWidth'); + parentOffset.left += num(offsetParent, 'borderLeftWidth'); + + // Subtract the two offsets + results = { + top: offset.top - parentOffset.top, + left: offset.left - parentOffset.left + }; + } + + return results; + }, + + offsetParent: function() { + var offsetParent = this[0].offsetParent; + while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && $.css(offsetParent, 'position') == 'static') ) + offsetParent = offsetParent.offsetParent; + return $(offsetParent); + } +}); + +function num(el, prop) { + return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0; +}; + +})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/js/jquery.json-1.3.js b/wp-content/plugins/gravityforms/js/jquery.json-1.3.js new file mode 100644 index 0000000..f0beaac --- /dev/null +++ b/wp-content/plugins/gravityforms/js/jquery.json-1.3.js @@ -0,0 +1,160 @@ +/* + * jQuery JSON Plugin + * version: 1.0 (2008-04-17) + * + * This document is licensed as free software under the terms of the + * MIT License: http://www.opensource.org/licenses/mit-license.php + * + * Brantley Harris technically wrote this plugin, but it is based somewhat + * on the JSON.org website's http://www.json.org/json2.js, which proclaims: + * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that + * I uphold. I really just cleaned it up. + * + * It is also based heavily on MochiKit's serializeJSON, which is + * copywrited 2005 by Bob Ippolito. + */ + +(function($) { + function toIntegersAtLease(n) + // Format integers to have at least two digits. + { + return n < 10 ? '0' + n : n; + } + + Date.prototype.toJSON = function(date) + // Yes, it polutes the Date namespace, but we'll allow it here, as + // it's damned usefull. + { + return this.getUTCFullYear() + '-' + + toIntegersAtLease(this.getUTCMonth()) + '-' + + toIntegersAtLease(this.getUTCDate()); + }; + + var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g; + var meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }; + + $.quoteString = function(string) + // Places quotes around a string, inteligently. + // If the string contains no control characters, no quote characters, and no + // backslash characters, then we can safely slap some quotes around it. + // Otherwise we must also replace the offending characters with safe escape + // sequences. + { + //if (escapeable.test(string)) + //{ + return '"' + string.replace(escapeable, function (a) + { + var c = meta[a]; + if (typeof c === 'string') { + return c; + } + c = a.charCodeAt(); + return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16); + }) + '"'; + //} + //else{ + // string = string.replace('\n','\\n'); + //} + return '"' + string + '"'; + }; + + $.toJSON = function(o, compact) + { + var type = typeof(o); + + if (type == "undefined") + return "undefined"; + else if (type == "number" || type == "boolean") + return o + ""; + else if (o === null) + return "null"; + + // Is it a string? + if (type == "string") + { + var str = $.quoteString(o); + return str; + } + + // Does it have a .toJSON function? + if (type == "object" && typeof o.toJSON == "function") + return o.toJSON(compact); + + // Is it an array? + if (type != "function" && typeof(o.length) == "number") + { + var ret = []; + for (var i = 0; i < o.length; i++) { + ret.push( $.toJSON(o[i], compact) ); + } + if (compact) + return "[" + ret.join(",") + "]"; + else + return "[" + ret.join(", ") + "]"; + } + + // If it's a function, we have to warn somebody! + if (type == "function") { + throw new TypeError("Unable to convert object of type 'function' to json."); + } + + // It's probably an object, then. + var ret = []; + for (var k in o) { + var name; + type = typeof(k); + + if (type == "number") + name = '"' + k + '"'; + else if (type == "string") + name = $.quoteString(k); + else + continue; //skip non-string or number keys + + var val = $.toJSON(o[k], compact); + if (typeof(val) != "string") { + // skip non-serializable values + continue; + } + + if (compact) + ret.push(name + ":" + val); + else + ret.push(name + ": " + val); + } + return "{" + ret.join(", ") + "}"; + }; + + $.compactJSON = function(o) + { + return $.toJSON(o, true); + }; + + $.evalJSON = function(src) + // Evals JSON that we know to be safe. + { + return eval("(" + src + ")"); + }; + + $.secureEvalJSON = function(src) + // Evals JSON in a way that is *more* secure. + { + var filtered = src; + filtered = filtered.replace(/\\["\\\/bfnrtu]/g, '@'); + filtered = filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); + filtered = filtered.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); + + if (/^[\],:{}\s]*$/.test(filtered)) + return eval("(" + src + ")"); + else + throw new SyntaxError("Error parsing JSON, source is not valid."); + }; +})(jQuery); diff --git a/wp-content/plugins/gravityforms/js/jquery.maskedinput-1.3.min.js b/wp-content/plugins/gravityforms/js/jquery.maskedinput-1.3.min.js new file mode 100644 index 0000000..fdbd520 --- /dev/null +++ b/wp-content/plugins/gravityforms/js/jquery.maskedinput-1.3.min.js @@ -0,0 +1,7 @@ +/* + Masked Input plugin for jQuery + Copyright (c) 2007-2011 Josh Bush (digitalbush.com) + Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license) + Version: 1.3 +*/ +(function(a){var b=(a.browser.msie?"paste":"input")+".mask",c=window.orientation!=undefined;a.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},dataName:"rawMaskFn"},a.fn.extend({caret:function(a,b){if(this.length!=0){if(typeof a=="number"){b=typeof b=="number"?b:a;return this.each(function(){if(this.setSelectionRange)this.setSelectionRange(a,b);else if(this.createTextRange){var c=this.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select()}})}if(this[0].setSelectionRange)a=this[0].selectionStart,b=this[0].selectionEnd;else if(document.selection&&document.selection.createRange){var c=document.selection.createRange();a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length}return{begin:a,end:b}}},unmask:function(){return this.trigger("unmask")},mask:function(d,e){if(!d&&this.length>0){var f=a(this[0]);return f.data(a.mask.dataName)()}e=a.extend({placeholder:"_",completed:null},e);var g=a.mask.definitions,h=[],i=d.length,j=null,k=d.length;a.each(d.split(""),function(a,b){b=="?"?(k--,i=a):g[b]?(h.push(new RegExp(g[b])),j==null&&(j=h.length-1)):h.push(null)});return this.trigger("unmask").each(function(){function v(a){var b=f.val(),c=-1;for(var d=0,g=0;db.length)break}else l[d]==b.charAt(g)&&d!=i&&(g++,c=d);if(!a&&c+1=i)u(),a||f.val(f.val().substring(0,c+1));return i?d:j}function u(){return f.val(l.join("")).val()}function t(a,b){for(var c=a;c=k&&e.completed.call(f)}}return!1}}function r(a){var b=a.which;if(b==8||b==46||c&&b==127){var d=f.caret(),e=d.begin,g=d.end;g-e==0&&(e=b!=46?o(e):g=n(e-1),g=b==46?n(g):g),t(e,g),p(e,g-1);return!1}if(b==27){f.val(m),f.caret(0,v());return!1}}function q(a){for(var b=a,c=e.placeholder;b=0&&!h[a]);return a}function n(a){while(++a<=k&&!h[a]);return a}var f=a(this),l=a.map(d.split(""),function(a,b){if(a!="?")return g[a]?e.placeholder:a}),m=f.val();f.data(a.mask.dataName,function(){return a.map(l,function(a,b){return h[b]&&a!=e.placeholder?a:null}).join("")}),f.attr("readonly")||f.one("unmask",function(){f.unbind(".mask").removeData(a.mask.dataName)}).bind("focus.mask",function(){m=f.val();var b=v();u();var c=function(){b==d.length?f.caret(0,b):f.caret(b)};(a.browser.msie?c:function(){setTimeout(c,0)})()}).bind("blur.mask",function(){v(),f.val()!=m&&f.change()}).bind("keydown.mask",r).bind("keypress.mask",s).bind(b,function(){setTimeout(function(){f.caret(v(!0))},0)}),v()})}})})(jQuery) \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/js/jquery.placeholder.1.2.min.js b/wp-content/plugins/gravityforms/js/jquery.placeholder.1.2.min.js new file mode 100644 index 0000000..5434ed2 --- /dev/null +++ b/wp-content/plugins/gravityforms/js/jquery.placeholder.1.2.min.js @@ -0,0 +1 @@ +(function($){$.Placeholder={settings:{color:"rgb(169,169,169)",dataName:"original-font-color"},init:function(settings){if(settings){$.extend($.Placeholder.settings,settings)}var getContent=function(element){return $(element).val()};var setContent=function(element,content){$(element).val(content)};var getPlaceholder=function(element){return $(element).attr("placeholder")};var isContentEmpty=function(element){var content=getContent(element);return(content.length===0)||content==getPlaceholder(element)};var setPlaceholderStyle=function(element){$(element).data($.Placeholder.settings.dataName,$(element).css("color"));$(element).css("color",$.Placeholder.settings.color)};var clearPlaceholderStyle=function(element){$(element).css("color",$(element).data($.Placeholder.settings.dataName));$(element).removeData($.Placeholder.settings.dataName)};var showPlaceholder=function(element){setContent(element,getPlaceholder(element));setPlaceholderStyle(element)};var hidePlaceholder=function(element){if($(element).data($.Placeholder.settings.dataName)){setContent(element,"");clearPlaceholderStyle(element)}};var inputFocused=function(){if(isContentEmpty(this)){hidePlaceholder(this)}};var inputBlurred=function(){if(isContentEmpty(this)){showPlaceholder(this)}};var parentFormSubmitted=function(){if(isContentEmpty(this)){hidePlaceholder(this)}};$("textarea, input[type='text']").each(function(index,element){if($(element).attr("placeholder")){$(element).focus(inputFocused);$(element).blur(inputBlurred);$(element).bind("parentformsubmitted",parentFormSubmitted);$(element).trigger("blur");$(element).parents("form").submit(function(){$(element).trigger("parentformsubmitted")})}});return this}}})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/js/jquery.qtip-1.0.0-rc2.min.js b/wp-content/plugins/gravityforms/js/jquery.qtip-1.0.0-rc2.min.js new file mode 100644 index 0000000..6203ac5 --- /dev/null +++ b/wp-content/plugins/gravityforms/js/jquery.qtip-1.0.0-rc2.min.js @@ -0,0 +1,15 @@ +/* + * jquery.qtip. The jQuery tooltip plugin + * + * Copyright (c) 2009 Craig Thompson + * http://craigsworks.com + * + * Licensed under MIT + * http://www.opensource.org/licenses/mit-license.php + * + * Launch : February 2009 + * Version : 1.0.0-rc2 + * Released: Monday 27th April, 2009 - 23:30 + * Debug: jquery.qtip.debug.js + */ +(function(f){f.fn.qtip=function(z,t){var x,s,y,r,w,v,u;if(!t){t=false}if(typeof z=="string"){if(z=="api"){if(typeof f(this).eq(0).data("qtip")=="object"){return f(this).eq(0).data("qtip")}else{f.fn.qtip.log.error.call(self,1,f.fn.qtip.constants.NO_TOOLTIP_PRESENT,false)}}}else{if(!z){z={}}if(typeof z.content!=="object"){z.content={text:z.content}}if(typeof z.content.title!=="object"){z.content.title={text:z.content.title}}if(typeof z.position!=="object"){z.position={corner:z.position}}if(typeof z.position.corner!=="object"){z.position.corner={target:z.position.corner,tooltip:z.position.corner}}if(typeof z.show!=="object"){z.show={when:z.show}}if(typeof z.show.when!=="object"){z.show.when={event:z.show.when}}if(typeof z.show.effect!=="object"){z.show.effect={type:z.show.effect}}if(typeof z.hide!=="object"){z.hide={when:z.hide}}if(typeof z.hide.when!=="object"){z.hide.when={event:z.hide.when}}if(typeof z.hide.effect!=="object"){z.hide.effect={type:z.hide.effect}}if(typeof z.style!=="object"){z.style={name:z.style}}z.style=c(z.style);r=f.extend(true,{},f.fn.qtip.defaults,z);r.style=a.call({options:r},r.style);r.user=f.extend(true,{},z)}return f(this).each(function(){if(typeof z=="string"){v=z.toLowerCase();y=f(this).data("interfaces");if(typeof y=="object"){if(t&&v=="destroy"){while(y.length>0){y[y.length-1].destroy()}}else{if(t===false){y=[y[y.length-1]]}for(x=0;x0))}if(typeof r.options.show.solo=="object"){y=f(r.options.show.solo)}else{if(r.options.show.solo===true){y=f("div.qtip").not(r.elements.tooltip)}}if(y){y.each(function(){if(f(this).qtip("api").status.rendered===true){f(this).qtip("api").hide()}})}if(typeof r.options.show.effect.type=="function"){r.options.show.effect.type.call(r.elements.tooltip,r.options.show.effect.length);r.elements.tooltip.queue(function(){v();f(this).dequeue()})}else{switch(r.options.show.effect.type.toLowerCase()){case"fade":r.elements.tooltip.fadeIn(r.options.show.effect.length,v);break;case"slide":r.elements.tooltip.slideDown(r.options.show.effect.length,function(){v();if(r.options.position.type!=="static"){r.updatePosition(x,true)}});break;case"grow":r.elements.tooltip.show(r.options.show.effect.length,v);break;default:r.elements.tooltip.show(null,v);break}r.elements.tooltip.addClass(r.options.style.classes.active)}r.onShow.call(r,x);f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_SHOWN,"show");return r},hide:function(x){var w;if(!r.status.rendered){f.fn.qtip.log.error.call(r,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"hide");return r}if(r.elements.tooltip.css("display")==="none"){return r}clearTimeout(r.timers.show);r.elements.tooltip.stop(true,true);w=r.beforeHide.call(r,x);if(w===false){return r}function v(){r.onHide.call(r,x)}if(typeof r.options.show.when.target.data("qtip-toggle")=="number"){r.options.show.when.target.data("qtip-toggle",0)}if(typeof r.options.hide.effect.type=="function"){r.options.hide.effect.type.call(r.elements.tooltip,r.options.hide.effect.length);r.elements.tooltip.queue(function(){v();f(this).dequeue()})}else{switch(r.options.hide.effect.type.toLowerCase()){case"fade":r.elements.tooltip.fadeOut(r.options.hide.effect.length,v);break;case"slide":r.elements.tooltip.slideUp(r.options.hide.effect.length,v);break;case"grow":r.elements.tooltip.hide(r.options.hide.effect.length,v);break;default:r.elements.tooltip.hide(null,v);break}r.elements.tooltip.removeClass(r.options.style.classes.active)}r.onHide.call(r,x);f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_HIDDEN,"hide");return r},updatePosition:function(v,w){var B,F,K,I,G,D,x,H,A,C,J,z,E,y;if(!r.status.rendered){f.fn.qtip.log.error.call(r,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"updatePosition");return r}else{if(r.options.position.type=="static"){f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.CANNOT_POSITION_STATIC,"updatePosition");return r}}F={position:{left:0,top:0},dimensions:{height:0,width:0},corner:r.options.position.corner.target};K={position:r.getPosition(),dimensions:r.getDimensions(),corner:r.options.position.corner.tooltip};if(r.options.position.target!=="mouse"){if(r.options.position.target.get(0).nodeName.toLowerCase()=="area"){I=r.options.position.target.attr("coords").split(",");for(B=0;BF.dimensions.width){F.dimensions.width=I[B]}if(I[B]F.dimensions.height){F.dimensions.height=I[B]}if(I[B]0){if(K.corner.search(/Left/)!==-1){x.left-=r.options.style.border.radius}else{if(K.corner.search(/Right/)!==-1){x.left+=r.options.style.border.radius}}if(K.corner.search(/Top/)!==-1){x.top-=r.options.style.border.radius}else{if(K.corner.search(/Bottom/)!==-1){x.top+=r.options.style.border.radius}}}if(H){if(K.corner.search(/top/)!==-1){x.top-=H}else{if(K.corner.search(/bottom/)!==-1){x.top+=H}}if(K.corner.search(/left/)!==-1){x.left-=H}else{if(K.corner.search(/right/)!==-1){x.left+=H}}if(K.corner.search(/leftMiddle|rightMiddle/)!==-1){x.top-=1}}if(r.options.position.adjust.screen===true){x=n.call(r,x,F,K)}if(r.options.position.target==="mouse"&&r.options.position.adjust.mouse===true){if(r.options.position.adjust.screen===true&&r.elements.tip){J=r.elements.tip.attr("rel")}else{J=r.options.position.corner.tooltip}x.left+=(J.search(/right/i)!==-1)?-6:6;x.top+=(J.search(/bottom/i)!==-1)?-6:6}if(!r.elements.bgiframe&&f.browser.msie&&parseInt(f.browser.version.charAt(0))==6){f("select, object").each(function(){z=f(this).offset();z.bottom=z.top+f(this).height();z.right=z.left+f(this).width();if(x.top+K.dimensions.height>=z.top&&x.left+K.dimensions.width>=z.left){j.call(r)}})}x.left+=r.options.position.adjust.x;x.top+=r.options.position.adjust.y;E=r.getPosition();if(x.left!=E.left||x.top!=E.top){y=r.beforePositionUpdate.call(r,v);if(y===false){return r}if(w===true){r.elements.tooltip.animate(x,200,"swing")}else{r.elements.tooltip.css(x)}r.onPositionUpdate.call(r,v);if(typeof v!=="undefined"&&v.type&&v.type!=="mousemove"){f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_POSITION_UPDATED,"updatePosition")}}return r},updateWidth:function(v){if(!r.status.rendered){f.fn.qtip.log.error.call(r,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"updateWidth");return r}if(v&&typeof v!=="number"){f.fn.qtip.log.error.call(r,2,"newWidth must be of type number","updateWidth");return r}if(!v){if(typeof r.options.style.width.value=="number"){v=r.options.style.width.value}else{r.elements.tooltip.css({width:"auto"});r.elements.contentWrapper.siblings().add(r.elements.tip).hide();if(f.browser.msie){r.elements.wrapper.add(r.elements.contentWrapper.children()).css({zoom:"normal"})}v=r.getDimensions().width+1;if(!r.options.style.width.value){if(v>r.options.style.width.max){v=r.options.style.width.max}if(v").get(0).getContext){y=r.elements.tooltip.find(".qtip-tip canvas:first");w=y.get(0).getContext("2d");w.clearRect(0,0,300,300);x=y.parent("div[rel]:first").attr("rel");A=b(x,r.options.style.tip.size.width,r.options.style.tip.size.height);h.call(r,y,A,r.options.style.tip.color||r.options.style.border.color)}else{if(f.browser.msie){y=r.elements.tooltip.find('.qtip-tip [nodeName="shape"]');y.attr("fillcolor",r.options.style.tip.color||r.options.style.border.color)}}}if(r.options.style.border.radius>0){r.elements.tooltip.find(".qtip-betweenCorners").css({backgroundColor:r.options.style.border.color});if(f("").get(0).getContext){z=g(r.options.style.border.radius);r.elements.tooltip.find(".qtip-wrapper canvas").each(function(){w=f(this).get(0).getContext("2d");w.clearRect(0,0,300,300);x=f(this).parent("div[rel]:first").attr("rel");q.call(r,f(this),z[x],r.options.style.border.radius,r.options.style.border.color)})}else{if(f.browser.msie){r.elements.tooltip.find('.qtip-wrapper [nodeName="arc"]').each(function(){f(this).attr("fillcolor",r.options.style.border.color)})}}}f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_STYLE_UPDATED,"updateStyle");return r},updateContent:function(z,x){var y,w,v;if(!r.status.rendered){f.fn.qtip.log.error.call(r,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"updateContent");return r}else{if(!z){f.fn.qtip.log.error.call(r,2,"You must specify some content with which to update","updateContent");return false}}y=r.beforeContentUpdate.call(r,z);if(typeof y=="string"){z=y}else{if(y===false){return}}if(f.browser.msie){r.elements.contentWrapper.children().css({zoom:"normal"})}if(z.jquery&&z.length>0){z.clone(true).appendTo(r.elements.content)}else{r.elements.content.html(z)}w=r.elements.content.find("img[complete=false]");if(w.length>0){v=0;w.each(function(B){f('').load(function(){if(++v==w.length){A()}})})}else{A()}function A(){r.updateWidth();if(x!==false){if(r.options.position.type!=="static"){r.updatePosition(r.elements.tooltip.is(":visible"),true)}if(r.options.style.tip.corner!==false){m.call(r)}}}r.onContentUpdate.call(r);f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_CONTENT_UPDATED,"loadContent");return r},loadContent:function(v,y,z){var x;if(!r.status.rendered){f.fn.qtip.log.error.call(r,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"loadContent");return r}x=r.beforeContentLoad.call(r);if(x===false){return r}if(z=="post"){f.post(v,y,w)}else{f.get(v,y,w)}function w(A){r.onContentLoad.call(r);f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_CONTENT_LOADED,"loadContent");r.updateContent(A)}return r},focus:function(y){var w,v,x;if(!r.status.rendered){f.fn.qtip.log.error.call(r,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"focus");return r}else{if(r.options.position.type=="static"){f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.CANNOT_FOCUS_STATIC,"focus");return r}}w=parseInt(r.elements.tooltip.css("z-index"));v=6000+f(".qtip").length-1;if(!r.status.focussed&&w!==v){x=r.beforeFocus.call(r,y);if(x===false){return r}f(".qtip").not(r.elements.tooltip).each(function(){if(f(this).qtip("api").status.rendered===true){if(typeof parseInt(f(this).css("z-index"))=="number"){f(this).css({zIndex:parseInt(f(this).css("z-index"))-1})}f(this).qtip("api").status.focused=false}});r.elements.tooltip.css({zIndex:v});r.status.focused=true;r.onFocus.call(r,y);f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_FOCUSED,"focus")}return r},disable:function(v){if(!r.status.rendered){f.fn.qtip.log.error.call(r,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"disable");return r}if(v){if(!r.status.disabled){r.status.disabled=true;f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_DISABLED,"disable")}else{f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.TOOLTIP_ALREADY_DISABLED,"disable")}}else{if(r.status.disabled){r.status.disabled=false;f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_ENABLED,"disable")}else{f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.TOOLTIP_ALREADY_ENABLED,"disable")}}return r},destroy:function(){var v,w,x;w=r.beforeDestroy.call(r);if(w===false){return r}if(r.status.rendered){r.options.show.when.target.unbind("mousemove.qtip",r.updatePosition);r.options.show.when.target.unbind("mouseout.qtip",r.hide);r.options.show.when.target.unbind(r.options.show.when.event+".qtip");r.options.show.when.target.removeData("qtip-toggle");r.options.hide.when.target.unbind(r.options.hide.when.event+".qtip");r.elements.tooltip.unbind(r.options.hide.when.event+".qtip");r.elements.tooltip.unbind("mouseover.qtip",r.focus);r.elements.tooltip.remove()}else{r.options.show.when.target.unbind(r.options.show.when.event+".qtip-create")}x=r.elements.target.data("interfaces");if(typeof x=="object"&&x.length>0){for(v=0;v0){r.elements.target.data("qtip",x[x.length-1])}else{r.elements.target.removeData("qtip")}r.onDestroy.call(r);f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_DESTROYED,"destroy");return r.elements.target},getPosition:function(){var v,w;if(!r.status.rendered){f.fn.qtip.log.error.call(r,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"getPosition");return r}v=(r.elements.tooltip.css("display")!=="none")?false:true;if(v){r.elements.tooltip.css({visiblity:"hidden"}).show()}w=r.elements.tooltip.offset();if(v){r.elements.tooltip.css({visiblity:"visible"}).hide()}return w},getDimensions:function(){var v,w;if(!r.status.rendered){f.fn.qtip.log.error.call(r,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"getDimensions");return r}v=(!r.elements.tooltip.is(":visible"))?true:false;if(v){r.elements.tooltip.css({visiblity:"hidden"}).show()}w={height:r.elements.tooltip.outerHeight(),width:r.elements.tooltip.outerWidth()};if(v){r.elements.tooltip.css({visiblity:"visible"}).hide()}return w}});o.call(r)}function o(){var r,u,s;r=this;if(r.options.content.prerender===false&&r.options.show.when.event!==false&&r.options.show.ready!==true){u=r.options.show.when.target;s=r.options.show.when.event;u.bind(s+".qtip-create",function(v){u.unbind(s+".qtip-create");t();r.cache.mouse={x:v.pageX,y:v.pageY};u.trigger(s)})}else{t()}function t(){var y,w,v,x,A,z;r.status.rendered=true;r.beforeRender.call(r);r.elements.tooltip='';r.elements.tooltip=f(r.elements.tooltip);r.elements.tooltip.appendTo(r.options.position.container).data("qtip",r);r.elements.wrapper=r.elements.tooltip.children("div:first").css({zoom:(f.browser.msie)?1:0});r.elements.contentWrapper=r.elements.wrapper.children("div:first").css({background:r.options.style.background});r.elements.content=r.elements.contentWrapper.children("div:first").css(p(r.options.style)).css({zoom:(f.browser.msie)?1:0});if(typeof r.options.style.width.value=="number"){r.updateWidth()}if(f("").get(0).getContext||f.browser.msie){if(r.options.style.border.radius>0){l.call(r)}else{r.elements.contentWrapper.css({border:r.options.style.border.width+"px solid "+r.options.style.border.color})}if(r.options.style.tip.corner!==false){e.call(r)}}else{r.elements.contentWrapper.css({border:r.options.style.border.width+"px solid "+r.options.style.border.color});r.options.style.border.radius=0;r.options.style.tip.corner=false;f.fn.qtip.log.error.call(r,2,f.fn.qtip.constants.CANVAS_VML_NOT_SUPPORTED,"render")}if(typeof r.options.content.text=="string"){w=r.options.content.text}else{if(r.options.content.text.jquery&&r.options.content.text.length>0){w=r.options.content.text}else{if(r.options.content.text===false){w=r.elements.target.attr("title").replace("\\n","
              ");r.elements.target.attr("title","")}else{w=" ";f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.NO_VALID_CONTENT,"render")}}}if(r.options.content.title.text!==false){i.call(r)}r.updateContent(w);if(r.options.content.url!==false){v=r.options.content.url;x=r.options.content.data;A=r.options.content.method||"get";r.loadContent(v,x,A)}k.call(r);if(r.options.show.ready===true){r.show()}r.onRender.call(r);f.fn.qtip.log.error.call(r,1,f.fn.qtip.constants.EVENT_RENDERED,"render")}}function l(){var E,y,s,A,w,D,t,F,C,x,v,B,z,r,u;E=this;E.elements.wrapper.find(".qtip-borderBottom, .qtip-borderTop").remove();s=E.options.style.border.width;A=E.options.style.border.radius;w=E.options.style.border.color||E.options.style.tip.color;D=g(A);t={};for(y in D){t[y]='
              ';if(f("").get(0).getContext){t[y]+=''}else{if(f.browser.msie){F=A*2+3;t[y]+=''}}t[y]+="
              "}C=E.getDimensions().width-(Math.max(s,A)*2);x='
              ';v='
              '+t.topLeft+t.topRight+x;E.elements.wrapper.prepend(v);B='
              '+t.bottomLeft+t.bottomRight+x;E.elements.wrapper.append(B);if(f("").get(0).getContext){E.elements.wrapper.find("canvas").each(function(){z=D[f(this).parent("[rel]:first").attr("rel")];q.call(E,f(this),z,A,w)})}else{if(f.browser.msie){E.elements.tooltip.append('')}}r=Math.max(A,(A+(s-A)));u=Math.max(s-A,0);E.elements.contentWrapper.css({border:"0px solid "+w,borderWidth:u+"px "+r+"px"})}function q(t,v,r,s){var u=t.get(0).getContext("2d");u.fillStyle=s;u.beginPath();u.arc(v[0],v[1],r,0,Math.PI*2,false);u.fill()}function e(u){var s,r,w,t,v;s=this;if(s.elements.tip!==null){s.elements.tip.remove()}r=s.options.style.tip.color||s.options.style.border.color;if(s.options.style.tip.corner===false){return}else{if(!u){u=s.options.style.tip.corner}}w=b(u,s.options.style.tip.size.width,s.options.style.tip.size.height);s.elements.tip='
              ';if(f("").get(0).getContext){s.elements.tip+=''}else{if(f.browser.msie){t=s.options.style.tip.size.width+","+s.options.style.tip.size.height;v="m"+w[0][0]+","+w[0][1];v+=" l"+w[1][0]+","+w[1][1];v+=" "+w[2][0]+","+w[2][1];v+=" xe";s.elements.tip+='';s.elements.tip+='';s.elements.contentWrapper.css("position","relative")}}s.elements.tooltip.prepend(s.elements.tip+"
              ");s.elements.tip=s.elements.tooltip.find("."+s.options.style.classes.tip).eq(0);if(f("").get(0).getContext){h.call(s,s.elements.tip.find("canvas:first"),w,r)}if(u.search(/top/)!==-1&&f.browser.msie&&parseInt(f.browser.version.charAt(0))===6){s.elements.tip.css({marginTop:-4})}m.call(s,u)}function h(s,u,r){var t=s.get(0).getContext("2d");t.fillStyle=r;t.beginPath();t.moveTo(u[0][0],u[0][1]);t.lineTo(u[1][0],u[1][1]);t.lineTo(u[2][0],u[2][1]);t.fill()}function m(u){var s,w,r,x,t,v;s=this;if(s.options.style.tip.corner===false||!s.elements.tip){return}if(!u){u=s.elements.tip.attr("rel")}w=positionAdjust=(f.browser.msie)?1:0;s.elements.tip.css(u.match(/left|right|top|bottom/)[0],0);if(u.search(/top|bottom/)!==-1){if(f.browser.msie){if(parseInt(f.browser.version.charAt(0))===6){positionAdjust=(u.search(/top/)!==-1)?-3:1}else{positionAdjust=(u.search(/top/)!==-1)?1:2}}if(u.search(/Middle/)!==-1){s.elements.tip.css({left:"50%",marginLeft:-(s.options.style.tip.size.width/2)})}else{if(u.search(/Left/)!==-1){s.elements.tip.css({left:s.options.style.border.radius-w})}else{if(u.search(/Right/)!==-1){s.elements.tip.css({right:s.options.style.border.radius+w})}}}if(u.search(/top/)!==-1){s.elements.tip.css({top:-positionAdjust})}else{s.elements.tip.css({bottom:positionAdjust})}}else{if(u.search(/left|right/)!==-1){if(f.browser.msie){positionAdjust=(parseInt(f.browser.version.charAt(0))===6)?1:((u.search(/left/)!==-1)?1:2)}if(u.search(/Middle/)!==-1){s.elements.tip.css({top:"50%",marginTop:-(s.options.style.tip.size.height/2)})}else{if(u.search(/Top/)!==-1){s.elements.tip.css({top:s.options.style.border.radius-w})}else{if(u.search(/Bottom/)!==-1){s.elements.tip.css({bottom:s.options.style.border.radius+w})}}}if(u.search(/left/)!==-1){s.elements.tip.css({left:-positionAdjust})}else{s.elements.tip.css({right:positionAdjust})}}}r="padding-"+u.match(/left|right|top|bottom/)[0];x=s.options.style.tip.size[(r.search(/left|right/)!==-1)?"width":"height"];s.elements.tooltip.css("padding",0);s.elements.tooltip.css(r,x);if(f.browser.msie&&parseInt(f.browser.version.charAt(0))==6){t=parseInt(s.elements.tip.css("margin-top"));v=t+parseInt(s.elements.content.css("margin-top"));s.elements.tip.css({marginTop:v})}}function i(){var r=this;if(r.elements.title!==null){r.elements.title.remove()}r.elements.title=f("
              ").addClass(r.options.style.classes.title).css(p(r.options.style.title,true)).css({zoom:(f.browser.msie)?1:0}).html(r.options.content.title.text).prependTo(r.elements.contentWrapper);if(r.options.content.title.button!==false&&typeof r.options.content.title.button=="string"){f('').attr("href","#").addClass(r.options.style.classes.button).html(r.options.content.title.button).prependTo(r.elements.title).click(function(){if(!r.status.disabled){r.hide()}})}}function k(){var s,u,t,r;s=this;u=s.options.show.when.target;t=s.options.hide.when.target;if(s.options.hide.fixed){t=t.add(s.elements.tooltip)}if(s.options.hide.when.event=="inactive"){r=["click","dblclick","mousedown","mouseup","mousemove","mouseout","mouseenter","mouseleave","mouseover"];function x(){if(s.status.disabled===true){return}clearTimeout(s.timers.inactive);s.timers.inactive=setTimeout(function(){f(r).each(function(){t.unbind(this+".qtip-inactive");s.elements.content.unbind(this+".qtip-inactive")});s.hide()},s.options.hide.delay)}}else{if(s.options.hide.fixed===true){s.elements.tooltip.bind("mouseover.qtip",function(){if(s.status.disabled===true){return}clearTimeout(s.timers.hide)})}}function w(y){if(s.status.disabled===true){return}if(s.options.hide.when.event=="inactive"){f(r).each(function(){t.bind(this+".qtip-inactive",x);s.elements.content.bind(this+".qtip-inactive",x)});x()}clearTimeout(s.timers.show);clearTimeout(s.timers.hide);s.timers.show=setTimeout(function(){s.show(y)},s.options.show.delay)}function v(y){if(s.status.disabled===true){return}if(s.options.hide.fixed===true&&s.options.hide.when.event.search(/mouse(out|leave)/i)!==-1&&f(y.relatedTarget).parents(".qtip").length>0){y.stopPropagation();y.preventDefault();clearTimeout(s.timers.hide);return false}clearTimeout(s.timers.show);clearTimeout(s.timers.hide);s.timers.hide=setTimeout(function(){s.hide(y)},s.options.hide.delay)}if((s.options.show.when.target.add(s.options.hide.when.target).length===1&&s.options.show.when.event==s.options.hide.when.event&&s.options.hide.when.event!=="inactive")||s.options.hide.when.event=="unfocus"){u.data("qtip-toggle",0);if(s.options.hide.when.event=="unfocus"){s.elements.tooltip.attr("unfocus",true)}u.bind(s.options.show.when.event+".qtip",function(y){if(parseInt(f(this).data("qtip-toggle"))===0){w(y)}else{v(y)}})}else{u.bind(s.options.show.when.event+".qtip",w);if(s.options.hide.when.event!=="inactive"){t.bind(s.options.hide.when.event+".qtip",v)}}if(s.options.position.type.search(/(fixed|absolute)/)!==-1){s.elements.tooltip.bind("mouseover.qtip",s.focus)}if(s.options.position.target==="mouse"&&s.options.position.type!=="static"){u.bind("mousemove.qtip",function(y){s.cache.mouse={x:y.pageX,y:y.pageY};if(s.status.disabled===false&&s.options.position.adjust.mouse===true&&s.options.position.type!=="static"&&s.elements.tooltip.css("display")!=="none"){s.updatePosition(y)}})}}function n(r,w,v){var s,y,u,x,t;s=this;if(v.corner=="center"){return w.position}y=f.extend({},r);u={x:false,y:false};x={left:(y.left=f.fn.qtip.cache.screen.width+f.fn.qtip.cache.screen.scroll.left),top:(y.top=f.fn.qtip.cache.screen.height+f.fn.qtip.cache.screen.scroll.top)};s.cache.position.adjust={left:(x.left&&(v.corner.search(/right/i)!=-1||(v.corner.search(/right/i)==-1&&!x.right))),right:(x.right&&(v.corner.search(/left/i)!=-1||(v.corner.search(/left/i)==-1&&!x.left))),top:(x.top&&v.corner.search(/top/i)==-1),bottom:(x.bottom&&v.corner.search(/bottom/i)==-1)};if(s.cache.position.adjust.left){if(s.options.position.target!=="mouse"){y.left=w.position.left+w.dimensions.width}else{y.left=s.cache.mouse.x}u.x="Left"}else{if(s.cache.position.adjust.right){if(s.options.position.target!=="mouse"){y.left=w.position.left-v.dimensions.width}else{y.left=s.cache.mouse.x-v.dimensions.width}u.x="Right"}}if(s.cache.position.adjust.top){if(s.options.position.target!=="mouse"){y.top=w.position.top+w.dimensions.height}else{y.top=s.cache.mouse.y}u.y="top"}else{if(s.cache.position.adjust.bottom){if(s.options.position.target!=="mouse"){y.top=w.position.top-v.dimensions.height}else{y.top=s.cache.mouse.y-v.dimensions.height}u.y="bottom"}}if(y.left<0){y.left=r.left;u.x=false}if(y.top<0){y.top=r.top;u.y=false}if(s.options.style.tip.corner!==false){y.corner=new String(v.corner);if(u.x!==false){y.corner=y.corner.replace(/Left|Right|Middle/,u.x)}if(u.y!==false){y.corner=y.corner.replace(/top|bottom/,u.y)}if(y.corner!==s.elements.tip.attr("rel")){e.call(s,y.corner)}}return y}function p(s,u){var t,r;t=f.extend(true,{},s);for(r in t){if(u===true&&r.search(/(tip|classes)/i)!==-1){delete t[r]}else{if(r.search(/(width|border|tip|title|classes|user)/i)!==-1){delete t[r]}}}return t}function c(r){if(typeof r.tip!=="object"){r.tip={corner:r.tip}}if(typeof r.tip.size!=="object"){r.tip.size={width:r.tip.size,height:r.tip.size}}if(typeof r.border!=="object"){r.border={width:r.border}}if(typeof r.width!=="object"){r.width={value:r.width}}if(typeof r.width.max=="string"){r.width.max=parseInt(r.width.max.replace(/([0-9]+)/i,"$1"))}if(typeof r.width.min=="string"){r.width.min=parseInt(r.width.min.replace(/([0-9]+)/i,"$1"))}if(typeof r.tip.size.x=="number"){r.tip.size.width=r.tip.size.x;delete r.tip.size.x}if(typeof r.tip.size.y=="number"){r.tip.size.height=r.tip.size.y;delete r.tip.size.y}return r}function a(){var r,s,t,w,u,v;r=this;t=[true,{}];for(s=0;s0){u.tip.size.width+=1}if(u.tip.size.height%2>0){u.tip.size.height+=1}if(u.tip.corner===true){u.tip.corner=(r.options.position.corner.tooltip==="center")?false:r.options.position.corner.tooltip}return u}function b(u,t,s){var r={bottomRight:[[0,0],[t,s],[t,0]],bottomLeft:[[0,0],[t,0],[0,s]],topRight:[[0,s],[t,0],[t,s]],topLeft:[[0,0],[0,s],[t,s]],topMiddle:[[0,s],[t/2,0],[t,s]],bottomMiddle:[[0,0],[t,0],[t/2,s]],rightMiddle:[[0,0],[t,s/2],[0,s]],leftMiddle:[[t,0],[t,s],[0,s/2]]};r.leftTop=r.bottomRight;r.rightTop=r.bottomLeft;r.leftBottom=r.topRight;r.rightBottom=r.topLeft;return r[u]}function g(r){var s;if(f("").get(0).getContext){s={topLeft:[r,r],topRight:[0,r],bottomLeft:[r,0],bottomRight:[0,0]}}else{if(f.browser.msie){s={topLeft:[-90,90,0],topRight:[-90,90,-r],bottomLeft:[90,270,0],bottomRight:[90,270,-r]}}}return s}function j(){var r,s,t;r=this;t=r.getDimensions();s='
              "); + jQuery("#TB_overlay").click(tb_remove); + } + }else{//all others + if(document.getElementById("TB_overlay") === null){ + jQuery("body").append("
              "); + jQuery("#TB_overlay").click(tb_remove); + } + } + + if(tb_detectMacXFF()){ + jQuery("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash + }else{ + jQuery("#TB_overlay").addClass("TB_overlayBG");//use background and opacity + } + + if(caption===null){caption="";} + jQuery("body").append("
              ");//add loader to the page + jQuery('#TB_load').show();//show loader + + var baseURL; + if(url.indexOf("?")!==-1){ //ff there is a query string involved + baseURL = url.substr(0, url.indexOf("?")); + }else{ + baseURL = url; + } + + var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/; + var urlType = baseURL.toLowerCase().match(urlString); + + if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images + + TB_PrevCaption = ""; + TB_PrevURL = ""; + TB_PrevHTML = ""; + TB_NextCaption = ""; + TB_NextURL = ""; + TB_NextHTML = ""; + TB_imageCount = ""; + TB_FoundURL = false; + if(imageGroup){ + TB_TempArray = jQuery("a[rel="+imageGroup+"]").get(); + for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) { + var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString); + if (!(TB_TempArray[TB_Counter].href == url)) { + if (TB_FoundURL) { + TB_NextCaption = TB_TempArray[TB_Counter].title; + TB_NextURL = TB_TempArray[TB_Counter].href; + TB_NextHTML = "  
              "+thickboxL10n.next+""; + } else { + TB_PrevCaption = TB_TempArray[TB_Counter].title; + TB_PrevURL = TB_TempArray[TB_Counter].href; + TB_PrevHTML = "  "+thickboxL10n.prev+""; + } + } else { + TB_FoundURL = true; + TB_imageCount = thickboxL10n.image + ' ' + (TB_Counter + 1) + ' ' + thickboxL10n.of + ' ' + (TB_TempArray.length); + } + } + } + + imgPreloader = new Image(); + imgPreloader.onload = function(){ + imgPreloader.onload = null; + + // Resizing large images - orginal by Christian Montoya edited by me. + var pagesize = tb_getPageSize(); + var x = pagesize[0] - 150; + var y = pagesize[1] - 150; + var imageWidth = imgPreloader.width; + var imageHeight = imgPreloader.height; + if (imageWidth > x) { + imageHeight = imageHeight * (x / imageWidth); + imageWidth = x; + if (imageHeight > y) { + imageWidth = imageWidth * (y / imageHeight); + imageHeight = y; + } + } else if (imageHeight > y) { + imageWidth = imageWidth * (y / imageHeight); + imageHeight = y; + if (imageWidth > x) { + imageHeight = imageHeight * (x / imageWidth); + imageWidth = x; + } + } + // End Resizing + + TB_WIDTH = imageWidth + 30; + TB_HEIGHT = imageHeight + 60; + jQuery("#TB_window").append(""+caption+"" + "
              "+caption+"
              " + TB_imageCount + TB_PrevHTML + TB_NextHTML + "
              "); + + jQuery("#TB_closeWindowButton").click(tb_remove); + + if (!(TB_PrevHTML === "")) { + function goPrev(){ + if(jQuery(document).unbind("click",goPrev)){jQuery(document).unbind("click",goPrev);} + jQuery("#TB_window").remove(); + jQuery("body").append("
              "); + tb_show(TB_PrevCaption, TB_PrevURL, imageGroup); + return false; + } + jQuery("#TB_prev").click(goPrev); + } + + if (!(TB_NextHTML === "")) { + function goNext(){ + jQuery("#TB_window").remove(); + jQuery("body").append("
              "); + tb_show(TB_NextCaption, TB_NextURL, imageGroup); + return false; + } + jQuery("#TB_next").click(goNext); + + } + + jQuery(document).bind('keydown.thickbox', function(e){ + e.stopImmediatePropagation(); + + if ( e.which == 27 ){ // close + if ( ! jQuery(document).triggerHandler( 'wp_CloseOnEscape', [{ event: e, what: 'thickbox', cb: tb_remove }] ) ) + tb_remove(); + + } else if ( e.which == 190 ){ // display previous image + if(!(TB_NextHTML == "")){ + jQuery(document).unbind('thickbox'); + goNext(); + } + } else if ( e.which == 188 ){ // display next image + if(!(TB_PrevHTML == "")){ + jQuery(document).unbind('thickbox'); + goPrev(); + } + } + return false; + }); + + tb_position(); + jQuery("#TB_load").remove(); + jQuery("#TB_ImageOff").click(tb_remove); + jQuery("#TB_window").css({'visibility':'visible'}); //for safari using css instead of show + }; + + imgPreloader.src = url; + }else{//code to show html + + var queryString = url.replace(/^[^\?]+\??/,''); + var params = tb_parseQuery( queryString ); + __inlineId = params["inlineId"]; + + TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL + TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL + ajaxContentW = TB_WIDTH - 30; + ajaxContentH = TB_HEIGHT - 45; + + if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window + urlNoQuery = url.split('TB_'); + jQuery("#TB_iframeContent").remove(); + if(params['modal'] != "true"){//iframe no modal + jQuery("#TB_window").append("
              "+caption+"
              "); + }else{//iframe modal + jQuery("#TB_overlay").unbind(); + jQuery("#TB_window").append(""); + } + }else{// not an iframe, ajax + if(jQuery("#TB_window").css("visibility") != "visible"){ + if(params['modal'] != "true"){//ajax no modal + jQuery("#TB_window").append("
              "+caption+"
              "); + }else{//ajax modal + jQuery("#TB_overlay").unbind(); + jQuery("#TB_window").append("
              "); + } + }else{//this means the window is already up, we are just loading new content via ajax + jQuery("#TB_ajaxContent")[0].style.width = ajaxContentW +"px"; + jQuery("#TB_ajaxContent")[0].style.height = ajaxContentH +"px"; + jQuery("#TB_ajaxContent")[0].scrollTop = 0; + jQuery("#TB_ajaxWindowTitle").html(caption); + } + } + + jQuery("#TB_closeWindowButton").click(tb_remove); + + if(url.indexOf('TB_inline') != -1){ + jQuery("#TB_ajaxContent").append(jQuery('#' + params['inlineId']).children()); + jQuery("#TB_window").unload(function () { + + jQuery('#' + params['inlineId']).append( jQuery("#TB_ajaxContent").children() ); // move elements back when you're finished + }); + tb_position(); + jQuery("#TB_load").remove(); + jQuery("#TB_window").css({'visibility':'visible'}); + }else if(url.indexOf('TB_iframe') != -1){ + tb_position(); + if(jQuery.browser.safari){//safari needs help because it will not fire iframe onload + jQuery("#TB_load").remove(); + jQuery("#TB_window").css({'visibility':'visible'}); + } + }else{ + jQuery("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method + tb_position(); + jQuery("#TB_load").remove(); + tb_init("#TB_ajaxContent a.thickbox"); + jQuery("#TB_window").css({'visibility':'visible'}); + }); + } + + } + + if(!params['modal']){ + jQuery(document).bind('keyup.thickbox', function(e){ + + if ( e.which == 27 ){ // close + e.stopImmediatePropagation(); + if ( ! jQuery(document).triggerHandler( 'wp_CloseOnEscape', [{ event: e, what: 'thickbox', cb: tb_remove }] ) ) + tb_remove(); + + return false; + } + }); + } + + } catch(e) { + //nothing here + } +} + +//helper functions below +function tb_showIframe(){ + jQuery("#TB_load").remove(); + jQuery("#TB_window").css({'visibility':'visible'}); +} + +function tb_remove() { + jQuery("#TB_imageOff").unbind("click"); + jQuery("#TB_closeWindowButton").unbind("click"); + + jQuery("#TB_window").fadeOut("fast", + function(){ + + if(__inlineId){ + jQuery('#'+ __inlineId).append( jQuery("#TB_ajaxContent").children() ); // move elements back when you're finished + __inlineId = ""; + } + + jQuery('#TB_window,#TB_overlay,#TB_HideSelect').unbind().remove(); + + }); + + jQuery("#TB_load").remove(); + if (typeof document.body.style.maxHeight == "undefined") {//if IE 6 + jQuery("body","html").css({height: "auto", width: "auto"}); + jQuery("html").css("overflow",""); + } + jQuery(document).unbind('.thickbox'); + + return false; +} + +function tb_position() { +var isIE6 = typeof document.body.style.maxHeight === "undefined"; +jQuery("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'}); + if ( ! isIE6 ) { // take away IE6 + jQuery("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'}); + } +} + +function tb_parseQuery ( query ) { + var Params = {}; + if ( ! query ) {return Params;}// return empty object + var Pairs = query.split(/[;&]/); + for ( var i = 0; i < Pairs.length; i++ ) { + var KeyVal = Pairs[i].split('='); + if ( ! KeyVal || KeyVal.length != 2 ) {continue;} + var key = unescape( KeyVal[0] ); + var val = unescape( KeyVal[1] ); + val = val.replace(/\+/g, ' '); + Params[key] = val; + } + return Params; +} + +function tb_getPageSize(){ + var de = document.documentElement; + var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth; + var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight; + arrayPageSize = [w,h]; + return arrayPageSize; +} + +function tb_detectMacXFF() { + var userAgent = navigator.userAgent.toLowerCase(); + if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) { + return true; + } +} diff --git a/wp-content/plugins/gravityforms/languages/gravityforms-de_DE.mo b/wp-content/plugins/gravityforms/languages/gravityforms-de_DE.mo new file mode 100644 index 0000000..c262d7f Binary files /dev/null and b/wp-content/plugins/gravityforms/languages/gravityforms-de_DE.mo differ diff --git a/wp-content/plugins/gravityforms/languages/gravityforms-fi.mo b/wp-content/plugins/gravityforms/languages/gravityforms-fi.mo new file mode 100644 index 0000000..79816d0 Binary files /dev/null and b/wp-content/plugins/gravityforms/languages/gravityforms-fi.mo differ diff --git a/wp-content/plugins/gravityforms/languages/gravityforms-fi_FI.mo b/wp-content/plugins/gravityforms/languages/gravityforms-fi_FI.mo new file mode 100644 index 0000000..79816d0 Binary files /dev/null and b/wp-content/plugins/gravityforms/languages/gravityforms-fi_FI.mo differ diff --git a/wp-content/plugins/gravityforms/languages/gravityforms-fr_FR.mo b/wp-content/plugins/gravityforms/languages/gravityforms-fr_FR.mo new file mode 100644 index 0000000..7386ad2 Binary files /dev/null and b/wp-content/plugins/gravityforms/languages/gravityforms-fr_FR.mo differ diff --git a/wp-content/plugins/gravityforms/languages/gravityforms-it_IT.mo b/wp-content/plugins/gravityforms/languages/gravityforms-it_IT.mo new file mode 100644 index 0000000..bc679d5 Binary files /dev/null and b/wp-content/plugins/gravityforms/languages/gravityforms-it_IT.mo differ diff --git a/wp-content/plugins/gravityforms/languages/gravityforms-nb_NO.mo b/wp-content/plugins/gravityforms/languages/gravityforms-nb_NO.mo new file mode 100644 index 0000000..dadbada Binary files /dev/null and b/wp-content/plugins/gravityforms/languages/gravityforms-nb_NO.mo differ diff --git a/wp-content/plugins/gravityforms/languages/gravityforms-nl_NL.mo b/wp-content/plugins/gravityforms/languages/gravityforms-nl_NL.mo new file mode 100644 index 0000000..b9df4b3 Binary files /dev/null and b/wp-content/plugins/gravityforms/languages/gravityforms-nl_NL.mo differ diff --git a/wp-content/plugins/gravityforms/languages/gravityforms-pt_BR.mo b/wp-content/plugins/gravityforms/languages/gravityforms-pt_BR.mo new file mode 100644 index 0000000..75c370b Binary files /dev/null and b/wp-content/plugins/gravityforms/languages/gravityforms-pt_BR.mo differ diff --git a/wp-content/plugins/gravityforms/languages/gravityforms-sv_SE.mo b/wp-content/plugins/gravityforms/languages/gravityforms-sv_SE.mo new file mode 100644 index 0000000..4b1a3fc Binary files /dev/null and b/wp-content/plugins/gravityforms/languages/gravityforms-sv_SE.mo differ diff --git a/wp-content/plugins/gravityforms/languages/gravityforms.pot b/wp-content/plugins/gravityforms/languages/gravityforms.pot new file mode 100644 index 0000000..25f08f7 --- /dev/null +++ b/wp-content/plugins/gravityforms/languages/gravityforms.pot @@ -0,0 +1,7336 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Gravity Forms\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-04-18 12:52-0500\n" +"PO-Revision-Date: 2012-04-18 12:52-0500\n" +"Last-Translator: Alex Cancado \n" +"Language-Team: Rocketgenius \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: _e;__\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-Language: English\n" +"X-Poedit-Country: UNITED STATES\n" +"X-Poedit-SearchPath-0: ..\n" + +#: ../common.php:194 +msgid "Select image size" +msgstr "" + +#: ../common.php:195 +msgid "Thumbnail" +msgstr "" + +#: ../common.php:196 +msgid "Thumbnail - Left Aligned" +msgstr "" + +#: ../common.php:197 +msgid "Thumbnail - Centered" +msgstr "" + +#: ../common.php:198 +msgid "Thumbnail - Right Aligned" +msgstr "" + +#: ../common.php:200 +#: ../form_detail.php:1046 +#: ../form_detail.php:1613 +#: ../form_detail.php:2026 +msgid "Medium" +msgstr "" + +#: ../common.php:201 +msgid "Medium - Left Aligned" +msgstr "" + +#: ../common.php:202 +msgid "Medium - Centered" +msgstr "" + +#: ../common.php:203 +msgid "Medium - Right Aligned" +msgstr "" + +#: ../common.php:205 +#: ../form_detail.php:1047 +#: ../form_detail.php:1613 +#: ../form_detail.php:2027 +msgid "Large" +msgstr "" + +#: ../common.php:206 +msgid "Large - Left Aligned" +msgstr "" + +#: ../common.php:207 +msgid "Large - Centered" +msgstr "" + +#: ../common.php:208 +msgid "Large - Right Aligned" +msgstr "" + +#: ../common.php:210 +msgid "Full Size" +msgstr "" + +#: ../common.php:211 +msgid "Full Size - Left Aligned" +msgstr "" + +#: ../common.php:212 +msgid "Full Size - Centered" +msgstr "" + +#: ../common.php:213 +msgid "Full Size - Right Aligned" +msgstr "" + +#: ../common.php:231 +msgid "Insert Merge Tag" +msgstr "" + +#: ../common.php:235 +#: ../js.php:905 +msgid "All Submitted Fields" +msgstr "" + +#: ../common.php:290 +msgid "Required form fields" +msgstr "" + +#: ../common.php:302 +msgid "Optional form fields" +msgstr "" + +#: ../common.php:314 +msgid "Pricing form fields" +msgstr "" + +#: ../common.php:318 +msgid "All Pricing Fields" +msgstr "" + +#: ../common.php:332 +#: ../common.php:4136 +#: ../form_detail.php:1601 +#: ../form_detail.php:1603 +msgid "Other" +msgstr "" + +#: ../common.php:333 +#: ../form_detail.php:2468 +msgid "Client IP Address" +msgstr "" + +#: ../common.php:334 +#: ../common.php:335 +#: ../common.php:1698 +#: ../form_detail.php:995 +#: ../form_detail.php:1834 +#: ../form_detail.php:2469 +#: ../form_detail.php:2470 +#: ../js.php:497 +#: ../js.php:905 +msgid "Date" +msgstr "" + +#: ../common.php:336 +#: ../form_detail.php:2471 +msgid "Embed Post/Page Id" +msgstr "" + +#: ../common.php:337 +#: ../form_detail.php:2472 +msgid "Embed Post/Page Title" +msgstr "" + +#: ../common.php:338 +#: ../form_detail.php:2473 +msgid "Embed URL" +msgstr "" + +#: ../common.php:339 +#: ../entry_detail.php:287 +#: ../export.php:514 +#: ../gravityforms.php:1449 +msgid "Entry Id" +msgstr "" + +#: ../common.php:340 +msgid "Entry URL" +msgstr "" + +#: ../common.php:341 +msgid "Form Id" +msgstr "" + +#: ../common.php:342 +#: ../js.php:905 +msgid "Form Title" +msgstr "" + +#: ../common.php:343 +#: ../form_detail.php:2474 +msgid "HTTP User Agent" +msgstr "" + +#: ../common.php:346 +msgid "Post Id" +msgstr "" + +#: ../common.php:347 +msgid "Post Edit URL" +msgstr "" + +#: ../common.php:350 +#: ../form_detail.php:2476 +msgid "User Display Name" +msgstr "" + +#: ../common.php:351 +#: ../form_detail.php:2477 +msgid "User Email" +msgstr "" + +#: ../common.php:352 +#: ../form_detail.php:2478 +msgid "User Login" +msgstr "" + +#: ../common.php:360 +#: ../form_detail.php:614 +#: ../form_detail.php:1808 +msgid "Custom" +msgstr "" + +#: ../common.php:908 +#: ../entry_detail.php:758 +msgid "Order" +msgstr "" + +#: ../common.php:939 +#: ../common.php:1742 +#: ../entry_detail.php:833 +#: ../gravityforms.php:1004 +#: ../js.php:596 +msgid "Total" +msgstr "" + +#: ../common.php:956 +#: ../common.php:1734 +#: ../entry_detail.php:770 +msgid "Product" +msgstr "" + +#: ../common.php:957 +#: ../entry_detail.php:771 +msgid "Qty" +msgstr "" + +#: ../common.php:958 +#: ../entry_detail.php:772 +msgid "Unit Price" +msgstr "" + +#: ../common.php:959 +#: ../common.php:2339 +#: ../entry_detail.php:773 +#: ../form_detail.php:820 +#: ../form_detail.php:1580 +#: ../js.php:573 +#: ../js.php:632 +msgid "Price" +msgstr "" + +#: ../common.php:1011 +msgid "Total:" +msgstr "" + +#: ../common.php:1415 +#, php-format +msgid "%s ago" +msgstr "" + +#: ../common.php:1417 +#: ../common.php:1420 +#, php-format +msgid "%1$s at %2$s" +msgstr "" + +#: ../common.php:1593 +#: ../common.php:1665 +#, php-format +msgid "%d of %d items shown. Edit field to view all" +msgstr "" + +#: ../common.php:1674 +msgid "Single Line Text" +msgstr "" + +#: ../common.php:1676 +#: ../form_detail.php:986 +msgid "Paragraph Text" +msgstr "" + +#: ../common.php:1678 +#: ../form_detail.php:794 +#: ../form_detail.php:811 +#: ../form_detail.php:845 +#: ../form_detail.php:859 +#: ../form_detail.php:874 +#: ../form_detail.php:987 +#: ../form_detail.php:1014 +#: ../form_detail.php:1203 +msgid "Drop Down" +msgstr "" + +#: ../common.php:1680 +#: ../form_detail.php:988 +#: ../form_detail.php:1015 +#: ../form_detail.php:1206 +msgid "Multi Select" +msgstr "" + +#: ../common.php:1682 +#: ../form_detail.php:873 +#: ../form_detail.php:989 +#: ../js.php:482 +msgid "Number" +msgstr "" + +#: ../common.php:1684 +#: ../form_detail.php:846 +#: ../form_detail.php:990 +#: ../form_detail.php:1016 +#: ../form_detail.php:1204 +msgid "Checkboxes" +msgstr "" + +#: ../common.php:1686 +#: ../form_detail.php:795 +#: ../form_detail.php:812 +#: ../form_detail.php:847 +#: ../form_detail.php:861 +#: ../form_detail.php:991 +#: ../form_detail.php:1017 +#: ../form_detail.php:1205 +msgid "Radio Buttons" +msgstr "" + +#: ../common.php:1688 +#: ../form_detail.php:797 +#: ../form_detail.php:875 +#: ../form_detail.php:992 +msgid "Hidden" +msgstr "" + +#: ../common.php:1690 +msgid "HTML" +msgstr "" + +#: ../common.php:1692 +#: ../js.php:370 +msgid "Section Break" +msgstr "" + +#: ../common.php:1694 +#: ../form_display.php:2074 +msgid "Page Break" +msgstr "" + +#: ../common.php:1696 +#: ../js.php:401 +#: ../js.php:573 +msgid "Name" +msgstr "" + +#: ../common.php:1700 +#: ../form_detail.php:996 +#: ../js.php:502 +msgid "Time" +msgstr "" + +#: ../common.php:1702 +#: ../form_detail.php:997 +#: ../js.php:491 +msgid "Phone" +msgstr "" + +#: ../common.php:1704 +#: ../js.php:456 +msgid "Address" +msgstr "" + +#: ../common.php:1706 +#: ../form_detail.php:998 +#: ../js.php:507 +msgid "Website" +msgstr "" + +#: ../common.php:1708 +#: ../form_detail.php:999 +#: ../js.php:475 +#: ../notification.php:404 +msgid "Email" +msgstr "" + +#: ../common.php:1710 +#: ../js.php:513 +msgid "Password" +msgstr "" + +#: ../common.php:1712 +#: ../form_detail.php:1000 +msgid "File Upload" +msgstr "" + +#: ../common.php:1714 +msgid "CAPTCHA" +msgstr "" + +#: ../common.php:1716 +#: ../form_detail.php:1001 +#: ../js.php:393 +msgid "List" +msgstr "" + +#: ../common.php:1718 +#: ../js.php:463 +msgid "Credit Card" +msgstr "" + +#: ../common.php:1720 +#: ../common.php:2605 +#: ../common.php:3692 +#: ../form_detail.php:285 +#: ../form_detail.php:1318 +#: ../form_list.php:171 +#: ../form_list.php:189 +#: ../gravityforms.php:1002 +msgid "Title" +msgstr "" + +#: ../common.php:1722 +msgid "Body" +msgstr "" + +#: ../common.php:1724 +msgid "Excerpt" +msgstr "" + +#: ../common.php:1726 +msgid "Tags" +msgstr "" + +#: ../common.php:1728 +#: ../form_detail.php:1215 +msgid "Category" +msgstr "" + +#: ../common.php:1730 +#: ../form_detail.php:338 +#: ../form_detail.php:714 +#: ../form_detail.php:908 +#: ../form_detail.php:945 +msgid "Image" +msgstr "" + +#: ../common.php:1732 +msgid "Custom Field" +msgstr "" + +#: ../common.php:1736 +#: ../js.php:573 +#: ../js.php:643 +msgid "Quantity" +msgstr "" + +#: ../common.php:1738 +#: ../js.php:602 +msgid "Option" +msgstr "" + +#: ../common.php:1740 +#: ../js.php:585 +msgid "Shipping" +msgstr "" + +#: ../common.php:1823 +msgid "Afghanistan" +msgstr "" + +#: ../common.php:1823 +msgid "Albania" +msgstr "" + +#: ../common.php:1823 +msgid "Algeria" +msgstr "" + +#: ../common.php:1823 +msgid "American Samoa" +msgstr "" + +#: ../common.php:1823 +msgid "Andorra" +msgstr "" + +#: ../common.php:1823 +msgid "Angola" +msgstr "" + +#: ../common.php:1823 +msgid "Antigua and Barbuda" +msgstr "" + +#: ../common.php:1823 +msgid "Argentina" +msgstr "" + +#: ../common.php:1823 +msgid "Armenia" +msgstr "" + +#: ../common.php:1823 +#: ../form_detail.php:1595 +msgid "Australia" +msgstr "" + +#: ../common.php:1823 +msgid "Austria" +msgstr "" + +#: ../common.php:1823 +msgid "Azerbaijan" +msgstr "" + +#: ../common.php:1823 +msgid "Bahamas" +msgstr "" + +#: ../common.php:1823 +msgid "Bahrain" +msgstr "" + +#: ../common.php:1823 +msgid "Bangladesh" +msgstr "" + +#: ../common.php:1823 +msgid "Barbados" +msgstr "" + +#: ../common.php:1823 +msgid "Belarus" +msgstr "" + +#: ../common.php:1823 +msgid "Belgium" +msgstr "" + +#: ../common.php:1823 +msgid "Belize" +msgstr "" + +#: ../common.php:1823 +msgid "Benin" +msgstr "" + +#: ../common.php:1823 +msgid "Bermuda" +msgstr "" + +#: ../common.php:1823 +msgid "Bhutan" +msgstr "" + +#: ../common.php:1823 +msgid "Bolivia" +msgstr "" + +#: ../common.php:1823 +msgid "Bosnia and Herzegovina" +msgstr "" + +#: ../common.php:1823 +msgid "Botswana" +msgstr "" + +#: ../common.php:1823 +msgid "Brazil" +msgstr "" + +#: ../common.php:1823 +msgid "Brunei" +msgstr "" + +#: ../common.php:1823 +msgid "Bulgaria" +msgstr "" + +#: ../common.php:1823 +msgid "Burkina Faso" +msgstr "" + +#: ../common.php:1823 +msgid "Burundi" +msgstr "" + +#: ../common.php:1823 +msgid "Cambodia" +msgstr "" + +#: ../common.php:1823 +msgid "Cameroon" +msgstr "" + +#: ../common.php:1823 +msgid "Canada" +msgstr "" + +#: ../common.php:1823 +msgid "Cape Verde" +msgstr "" + +#: ../common.php:1823 +msgid "Central African Republic" +msgstr "" + +#: ../common.php:1823 +msgid "Chad" +msgstr "" + +#: ../common.php:1823 +msgid "Chile" +msgstr "" + +#: ../common.php:1823 +msgid "China" +msgstr "" + +#: ../common.php:1823 +msgid "Colombia" +msgstr "" + +#: ../common.php:1823 +msgid "Comoros" +msgstr "" + +#: ../common.php:1823 +msgid "Congo, Democratic Republic of the" +msgstr "" + +#: ../common.php:1823 +msgid "Congo, Republic of the" +msgstr "" + +#: ../common.php:1823 +msgid "Costa Rica" +msgstr "" + +#: ../common.php:1823 +msgid "Côte d'Ivoire" +msgstr "" + +#: ../common.php:1823 +msgid "Croatia" +msgstr "" + +#: ../common.php:1823 +msgid "Cuba" +msgstr "" + +#: ../common.php:1823 +msgid "Cyprus" +msgstr "" + +#: ../common.php:1823 +msgid "Czech Republic" +msgstr "" + +#: ../common.php:1823 +msgid "Denmark" +msgstr "" + +#: ../common.php:1823 +msgid "Djibouti" +msgstr "" + +#: ../common.php:1823 +msgid "Dominica" +msgstr "" + +#: ../common.php:1823 +msgid "Dominican Republic" +msgstr "" + +#: ../common.php:1823 +msgid "East Timor" +msgstr "" + +#: ../common.php:1823 +msgid "Ecuador" +msgstr "" + +#: ../common.php:1823 +msgid "Egypt" +msgstr "" + +#: ../common.php:1823 +msgid "El Salvador" +msgstr "" + +#: ../common.php:1823 +msgid "Equatorial Guinea" +msgstr "" + +#: ../common.php:1823 +msgid "Eritrea" +msgstr "" + +#: ../common.php:1823 +msgid "Estonia" +msgstr "" + +#: ../common.php:1823 +msgid "Ethiopia" +msgstr "" + +#: ../common.php:1823 +msgid "Fiji" +msgstr "" + +#: ../common.php:1823 +msgid "Finland" +msgstr "" + +#: ../common.php:1823 +msgid "France" +msgstr "" + +#: ../common.php:1823 +msgid "Gabon" +msgstr "" + +#: ../common.php:1824 +msgid "Gambia" +msgstr "" + +#: ../common.php:1824 +#: ../common.php:2043 +#: ../common.php:2058 +msgid "Georgia" +msgstr "" + +#: ../common.php:1824 +msgid "Germany" +msgstr "" + +#: ../common.php:1824 +msgid "Ghana" +msgstr "" + +#: ../common.php:1824 +msgid "Greece" +msgstr "" + +#: ../common.php:1824 +msgid "Greenland" +msgstr "" + +#: ../common.php:1824 +msgid "Grenada" +msgstr "" + +#: ../common.php:1824 +msgid "Guam" +msgstr "" + +#: ../common.php:1824 +msgid "Guatemala" +msgstr "" + +#: ../common.php:1824 +msgid "Guinea" +msgstr "" + +#: ../common.php:1824 +msgid "Guinea-Bissau" +msgstr "" + +#: ../common.php:1824 +msgid "Guyana" +msgstr "" + +#: ../common.php:1824 +msgid "Haiti" +msgstr "" + +#: ../common.php:1824 +msgid "Honduras" +msgstr "" + +#: ../common.php:1824 +msgid "Hong Kong" +msgstr "" + +#: ../common.php:1824 +msgid "Hungary" +msgstr "" + +#: ../common.php:1824 +msgid "Iceland" +msgstr "" + +#: ../common.php:1824 +msgid "India" +msgstr "" + +#: ../common.php:1824 +msgid "Indonesia" +msgstr "" + +#: ../common.php:1824 +msgid "Iran" +msgstr "" + +#: ../common.php:1824 +msgid "Iraq" +msgstr "" + +#: ../common.php:1824 +msgid "Ireland" +msgstr "" + +#: ../common.php:1824 +msgid "Israel" +msgstr "" + +#: ../common.php:1824 +msgid "Italy" +msgstr "" + +#: ../common.php:1824 +msgid "Jamaica" +msgstr "" + +#: ../common.php:1824 +msgid "Japan" +msgstr "" + +#: ../common.php:1824 +msgid "Jordan" +msgstr "" + +#: ../common.php:1824 +msgid "Kazakhstan" +msgstr "" + +#: ../common.php:1824 +msgid "Kenya" +msgstr "" + +#: ../common.php:1824 +msgid "Kiribati" +msgstr "" + +#: ../common.php:1824 +msgid "North Korea" +msgstr "" + +#: ../common.php:1824 +msgid "South Korea" +msgstr "" + +#: ../common.php:1824 +msgid "Kuwait" +msgstr "" + +#: ../common.php:1824 +msgid "Kyrgyzstan" +msgstr "" + +#: ../common.php:1824 +msgid "Laos" +msgstr "" + +#: ../common.php:1824 +msgid "Latvia" +msgstr "" + +#: ../common.php:1824 +msgid "Lebanon" +msgstr "" + +#: ../common.php:1824 +msgid "Lesotho" +msgstr "" + +#: ../common.php:1824 +msgid "Liberia" +msgstr "" + +#: ../common.php:1824 +msgid "Libya" +msgstr "" + +#: ../common.php:1824 +msgid "Liechtenstein" +msgstr "" + +#: ../common.php:1824 +msgid "Lithuania" +msgstr "" + +#: ../common.php:1824 +msgid "Luxembourg" +msgstr "" + +#: ../common.php:1824 +msgid "Macedonia" +msgstr "" + +#: ../common.php:1824 +msgid "Madagascar" +msgstr "" + +#: ../common.php:1824 +msgid "Malawi" +msgstr "" + +#: ../common.php:1824 +msgid "Malaysia" +msgstr "" + +#: ../common.php:1824 +msgid "Maldives" +msgstr "" + +#: ../common.php:1824 +msgid "Mali" +msgstr "" + +#: ../common.php:1824 +msgid "Malta" +msgstr "" + +#: ../common.php:1824 +msgid "Marshall Islands" +msgstr "" + +#: ../common.php:1824 +msgid "Mauritania" +msgstr "" + +#: ../common.php:1824 +msgid "Mauritius" +msgstr "" + +#: ../common.php:1824 +msgid "Mexico" +msgstr "" + +#: ../common.php:1824 +msgid "Micronesia" +msgstr "" + +#: ../common.php:1824 +msgid "Moldova" +msgstr "" + +#: ../common.php:1824 +msgid "Monaco" +msgstr "" + +#: ../common.php:1824 +msgid "Mongolia" +msgstr "" + +#: ../common.php:1824 +msgid "Montenegro" +msgstr "" + +#: ../common.php:1824 +msgid "Morocco" +msgstr "" + +#: ../common.php:1824 +msgid "Mozambique" +msgstr "" + +#: ../common.php:1824 +msgid "Myanmar" +msgstr "" + +#: ../common.php:1824 +msgid "Namibia" +msgstr "" + +#: ../common.php:1824 +msgid "Nauru" +msgstr "" + +#: ../common.php:1824 +msgid "Nepal" +msgstr "" + +#: ../common.php:1824 +msgid "Netherlands" +msgstr "" + +#: ../common.php:1824 +msgid "New Zealand" +msgstr "" + +#: ../common.php:1825 +msgid "Nicaragua" +msgstr "" + +#: ../common.php:1825 +msgid "Niger" +msgstr "" + +#: ../common.php:1825 +msgid "Nigeria" +msgstr "" + +#: ../common.php:1825 +msgid "Norway" +msgstr "" + +#: ../common.php:1825 +msgid "Northern Mariana Islands" +msgstr "" + +#: ../common.php:1825 +msgid "Oman" +msgstr "" + +#: ../common.php:1825 +msgid "Pakistan" +msgstr "" + +#: ../common.php:1825 +msgid "Palau" +msgstr "" + +#: ../common.php:1825 +msgid "Palestine" +msgstr "" + +#: ../common.php:1825 +msgid "Panama" +msgstr "" + +#: ../common.php:1825 +msgid "Papua New Guinea" +msgstr "" + +#: ../common.php:1825 +msgid "Paraguay" +msgstr "" + +#: ../common.php:1825 +msgid "Peru" +msgstr "" + +#: ../common.php:1825 +msgid "Philippines" +msgstr "" + +#: ../common.php:1825 +msgid "Poland" +msgstr "" + +#: ../common.php:1825 +msgid "Portugal" +msgstr "" + +#: ../common.php:1825 +msgid "Puerto Rico" +msgstr "" + +#: ../common.php:1825 +msgid "Qatar" +msgstr "" + +#: ../common.php:1825 +msgid "Romania" +msgstr "" + +#: ../common.php:1825 +msgid "Russia" +msgstr "" + +#: ../common.php:1825 +msgid "Rwanda" +msgstr "" + +#: ../common.php:1825 +msgid "Saint Kitts and Nevis" +msgstr "" + +#: ../common.php:1825 +msgid "Saint Lucia" +msgstr "" + +#: ../common.php:1825 +msgid "Saint Vincent and the Grenadines" +msgstr "" + +#: ../common.php:1825 +msgid "Samoa" +msgstr "" + +#: ../common.php:1825 +msgid "San Marino" +msgstr "" + +#: ../common.php:1825 +msgid "Sao Tome and Principe" +msgstr "" + +#: ../common.php:1825 +msgid "Saudi Arabia" +msgstr "" + +#: ../common.php:1825 +msgid "Senegal" +msgstr "" + +#: ../common.php:1825 +msgid "Serbia and Montenegro" +msgstr "" + +#: ../common.php:1825 +msgid "Seychelles" +msgstr "" + +#: ../common.php:1825 +msgid "Sierra Leone" +msgstr "" + +#: ../common.php:1825 +msgid "Singapore" +msgstr "" + +#: ../common.php:1825 +msgid "Slovakia" +msgstr "" + +#: ../common.php:1825 +msgid "Slovenia" +msgstr "" + +#: ../common.php:1825 +msgid "Solomon Islands" +msgstr "" + +#: ../common.php:1825 +msgid "Somalia" +msgstr "" + +#: ../common.php:1825 +msgid "South Africa" +msgstr "" + +#: ../common.php:1825 +msgid "Spain" +msgstr "" + +#: ../common.php:1825 +msgid "Sri Lanka" +msgstr "" + +#: ../common.php:1825 +msgid "Sudan" +msgstr "" + +#: ../common.php:1825 +msgid "Sudan, South" +msgstr "" + +#: ../common.php:1825 +msgid "Suriname" +msgstr "" + +#: ../common.php:1825 +msgid "Swaziland" +msgstr "" + +#: ../common.php:1825 +msgid "Sweden" +msgstr "" + +#: ../common.php:1825 +msgid "Switzerland" +msgstr "" + +#: ../common.php:1825 +msgid "Syria" +msgstr "" + +#: ../common.php:1825 +msgid "Taiwan" +msgstr "" + +#: ../common.php:1825 +msgid "Tajikistan" +msgstr "" + +#: ../common.php:1825 +msgid "Tanzania" +msgstr "" + +#: ../common.php:1825 +msgid "Thailand" +msgstr "" + +#: ../common.php:1825 +msgid "Togo" +msgstr "" + +#: ../common.php:1825 +msgid "Tonga" +msgstr "" + +#: ../common.php:1825 +msgid "Trinidad and Tobago" +msgstr "" + +#: ../common.php:1825 +msgid "Tunisia" +msgstr "" + +#: ../common.php:1825 +msgid "Turkey" +msgstr "" + +#: ../common.php:1825 +msgid "Turkmenistan" +msgstr "" + +#: ../common.php:1825 +msgid "Tuvalu" +msgstr "" + +#: ../common.php:1825 +msgid "Uganda" +msgstr "" + +#: ../common.php:1825 +msgid "Ukraine" +msgstr "" + +#: ../common.php:1825 +msgid "United Arab Emirates" +msgstr "" + +#: ../common.php:1825 +msgid "United Kingdom" +msgstr "" + +#: ../common.php:1826 +#: ../common.php:3490 +msgid "United States" +msgstr "" + +#: ../common.php:1826 +msgid "Uruguay" +msgstr "" + +#: ../common.php:1826 +msgid "Uzbekistan" +msgstr "" + +#: ../common.php:1826 +msgid "Vanuatu" +msgstr "" + +#: ../common.php:1826 +msgid "Vatican City" +msgstr "" + +#: ../common.php:1826 +msgid "Venezuela" +msgstr "" + +#: ../common.php:1826 +msgid "Vietnam" +msgstr "" + +#: ../common.php:1826 +msgid "Virgin Islands, British" +msgstr "" + +#: ../common.php:1826 +msgid "Virgin Islands, U.S." +msgstr "" + +#: ../common.php:1826 +msgid "Yemen" +msgstr "" + +#: ../common.php:1826 +msgid "Zambia" +msgstr "" + +#: ../common.php:1826 +msgid "Zimbabwe" +msgstr "" + +#: ../common.php:1833 +msgid "AFGHANISTAN" +msgstr "" + +#: ../common.php:1834 +msgid "ALBANIA" +msgstr "" + +#: ../common.php:1835 +msgid "ALGERIA" +msgstr "" + +#: ../common.php:1836 +msgid "AMERICAN SAMOA" +msgstr "" + +#: ../common.php:1837 +msgid "ANDORRA" +msgstr "" + +#: ../common.php:1838 +msgid "ANGOLA" +msgstr "" + +#: ../common.php:1839 +msgid "ANTIGUA AND BARBUDA" +msgstr "" + +#: ../common.php:1840 +msgid "ARGENTINA" +msgstr "" + +#: ../common.php:1841 +msgid "ARMENIA" +msgstr "" + +#: ../common.php:1842 +msgid "AUSTRALIA" +msgstr "" + +#: ../common.php:1843 +msgid "AUSTRIA" +msgstr "" + +#: ../common.php:1844 +msgid "AZERBAIJAN" +msgstr "" + +#: ../common.php:1845 +msgid "BAHAMAS" +msgstr "" + +#: ../common.php:1846 +msgid "BAHRAIN" +msgstr "" + +#: ../common.php:1847 +msgid "BANGLADESH" +msgstr "" + +#: ../common.php:1848 +msgid "BARBADOS" +msgstr "" + +#: ../common.php:1849 +msgid "BELARUS" +msgstr "" + +#: ../common.php:1850 +msgid "BELGIUM" +msgstr "" + +#: ../common.php:1851 +msgid "BELIZE" +msgstr "" + +#: ../common.php:1852 +msgid "BENIN" +msgstr "" + +#: ../common.php:1853 +msgid "BERMUDA" +msgstr "" + +#: ../common.php:1854 +msgid "BHUTAN" +msgstr "" + +#: ../common.php:1855 +msgid "BOLIVIA" +msgstr "" + +#: ../common.php:1856 +msgid "BOSNIA AND HERZEGOVINA" +msgstr "" + +#: ../common.php:1857 +msgid "BOTSWANA" +msgstr "" + +#: ../common.php:1858 +msgid "BRAZIL" +msgstr "" + +#: ../common.php:1859 +msgid "BRUNEI" +msgstr "" + +#: ../common.php:1860 +msgid "BULGARIA" +msgstr "" + +#: ../common.php:1861 +msgid "BURKINA FASO" +msgstr "" + +#: ../common.php:1862 +msgid "BURUNDI" +msgstr "" + +#: ../common.php:1863 +msgid "CAMBODIA" +msgstr "" + +#: ../common.php:1864 +msgid "CAMEROON" +msgstr "" + +#: ../common.php:1865 +msgid "CANADA" +msgstr "" + +#: ../common.php:1866 +msgid "CAPE VERDE" +msgstr "" + +#: ../common.php:1867 +msgid "CENTRAL AFRICAN REPUBLIC" +msgstr "" + +#: ../common.php:1868 +msgid "CHAD" +msgstr "" + +#: ../common.php:1869 +msgid "CHILE" +msgstr "" + +#: ../common.php:1870 +msgid "CHINA" +msgstr "" + +#: ../common.php:1871 +msgid "COLOMBIA" +msgstr "" + +#: ../common.php:1872 +msgid "COMOROS" +msgstr "" + +#: ../common.php:1873 +msgid "CONGO, DEMOCRATIC REPUBLIC OF THE" +msgstr "" + +#: ../common.php:1874 +msgid "CONGO, REPUBLIC OF THE" +msgstr "" + +#: ../common.php:1875 +msgid "COSTA RICA" +msgstr "" + +#: ../common.php:1876 +msgid "C&OCIRC;TE D'IVOIRE" +msgstr "" + +#: ../common.php:1877 +msgid "CROATIA" +msgstr "" + +#: ../common.php:1878 +msgid "CUBA" +msgstr "" + +#: ../common.php:1879 +msgid "CYPRUS" +msgstr "" + +#: ../common.php:1880 +msgid "CZECH REPUBLIC" +msgstr "" + +#: ../common.php:1881 +msgid "DENMARK" +msgstr "" + +#: ../common.php:1882 +msgid "DJIBOUTI" +msgstr "" + +#: ../common.php:1883 +msgid "DOMINICA" +msgstr "" + +#: ../common.php:1884 +msgid "DOMINICAN REPUBLIC" +msgstr "" + +#: ../common.php:1885 +msgid "EAST TIMOR" +msgstr "" + +#: ../common.php:1886 +msgid "ECUADOR" +msgstr "" + +#: ../common.php:1887 +msgid "EGYPT" +msgstr "" + +#: ../common.php:1888 +msgid "EL SALVADOR" +msgstr "" + +#: ../common.php:1889 +msgid "EQUATORIAL GUINEA" +msgstr "" + +#: ../common.php:1890 +msgid "ERITREA" +msgstr "" + +#: ../common.php:1891 +msgid "ESTONIA" +msgstr "" + +#: ../common.php:1892 +msgid "ETHIOPIA" +msgstr "" + +#: ../common.php:1893 +msgid "FIJI" +msgstr "" + +#: ../common.php:1894 +msgid "FINLAND" +msgstr "" + +#: ../common.php:1895 +msgid "FRANCE" +msgstr "" + +#: ../common.php:1896 +msgid "GABON" +msgstr "" + +#: ../common.php:1897 +msgid "GAMBIA" +msgstr "" + +#: ../common.php:1898 +msgid "GEORGIA" +msgstr "" + +#: ../common.php:1899 +msgid "GERMANY" +msgstr "" + +#: ../common.php:1900 +msgid "GHANA" +msgstr "" + +#: ../common.php:1901 +msgid "GREECE" +msgstr "" + +#: ../common.php:1902 +msgid "GREENLAND" +msgstr "" + +#: ../common.php:1903 +msgid "GRENADA" +msgstr "" + +#: ../common.php:1904 +msgid "GUAM" +msgstr "" + +#: ../common.php:1905 +msgid "GUATEMALA" +msgstr "" + +#: ../common.php:1906 +msgid "GUINEA" +msgstr "" + +#: ../common.php:1907 +msgid "GUINEA-BISSAU" +msgstr "" + +#: ../common.php:1908 +msgid "GUYANA" +msgstr "" + +#: ../common.php:1909 +msgid "HAITI" +msgstr "" + +#: ../common.php:1910 +msgid "HONDURAS" +msgstr "" + +#: ../common.php:1911 +msgid "HONG KONG" +msgstr "" + +#: ../common.php:1912 +msgid "HUNGARY" +msgstr "" + +#: ../common.php:1913 +msgid "ICELAND" +msgstr "" + +#: ../common.php:1914 +msgid "INDIA" +msgstr "" + +#: ../common.php:1915 +msgid "INDONESIA" +msgstr "" + +#: ../common.php:1916 +msgid "IRAN" +msgstr "" + +#: ../common.php:1917 +msgid "IRAQ" +msgstr "" + +#: ../common.php:1918 +msgid "IRELAND" +msgstr "" + +#: ../common.php:1919 +msgid "ISRAEL" +msgstr "" + +#: ../common.php:1920 +msgid "ITALY" +msgstr "" + +#: ../common.php:1921 +msgid "JAMAICA" +msgstr "" + +#: ../common.php:1922 +msgid "JAPAN" +msgstr "" + +#: ../common.php:1923 +msgid "JORDAN" +msgstr "" + +#: ../common.php:1924 +msgid "KAZAKHSTAN" +msgstr "" + +#: ../common.php:1925 +msgid "KENYA" +msgstr "" + +#: ../common.php:1926 +msgid "KIRIBATI" +msgstr "" + +#: ../common.php:1927 +msgid "NORTH KOREA" +msgstr "" + +#: ../common.php:1928 +msgid "SOUTH KOREA" +msgstr "" + +#: ../common.php:1929 +msgid "KUWAIT" +msgstr "" + +#: ../common.php:1930 +msgid "KYRGYZSTAN" +msgstr "" + +#: ../common.php:1931 +msgid "LAOS" +msgstr "" + +#: ../common.php:1932 +msgid "LATVIA" +msgstr "" + +#: ../common.php:1933 +msgid "LEBANON" +msgstr "" + +#: ../common.php:1934 +msgid "LESOTHO" +msgstr "" + +#: ../common.php:1935 +msgid "LIBERIA" +msgstr "" + +#: ../common.php:1936 +msgid "LIBYA" +msgstr "" + +#: ../common.php:1937 +msgid "LIECHTENSTEIN" +msgstr "" + +#: ../common.php:1938 +msgid "LITHUANIA" +msgstr "" + +#: ../common.php:1939 +msgid "LUXEMBOURG" +msgstr "" + +#: ../common.php:1940 +msgid "MACEDONIA" +msgstr "" + +#: ../common.php:1941 +msgid "MADAGASCAR" +msgstr "" + +#: ../common.php:1942 +msgid "MALAWI" +msgstr "" + +#: ../common.php:1943 +msgid "MALAYSIA" +msgstr "" + +#: ../common.php:1944 +msgid "MALDIVES" +msgstr "" + +#: ../common.php:1945 +msgid "MALI" +msgstr "" + +#: ../common.php:1946 +msgid "MALTA" +msgstr "" + +#: ../common.php:1947 +msgid "MARSHALL ISLANDS" +msgstr "" + +#: ../common.php:1948 +msgid "MAURITANIA" +msgstr "" + +#: ../common.php:1949 +msgid "MAURITIUS" +msgstr "" + +#: ../common.php:1950 +msgid "MEXICO" +msgstr "" + +#: ../common.php:1951 +msgid "MICRONESIA" +msgstr "" + +#: ../common.php:1952 +msgid "MOLDOVA" +msgstr "" + +#: ../common.php:1953 +msgid "MONACO" +msgstr "" + +#: ../common.php:1954 +msgid "MONGOLIA" +msgstr "" + +#: ../common.php:1955 +msgid "MONTENEGRO" +msgstr "" + +#: ../common.php:1956 +msgid "MOROCCO" +msgstr "" + +#: ../common.php:1957 +msgid "MOZAMBIQUE" +msgstr "" + +#: ../common.php:1958 +msgid "MYANMAR" +msgstr "" + +#: ../common.php:1959 +msgid "NAMIBIA" +msgstr "" + +#: ../common.php:1960 +msgid "NAURU" +msgstr "" + +#: ../common.php:1961 +msgid "NEPAL" +msgstr "" + +#: ../common.php:1962 +msgid "NETHERLANDS" +msgstr "" + +#: ../common.php:1963 +msgid "NEW ZEALAND" +msgstr "" + +#: ../common.php:1964 +msgid "NICARAGUA" +msgstr "" + +#: ../common.php:1965 +msgid "NIGER" +msgstr "" + +#: ../common.php:1966 +msgid "NIGERIA" +msgstr "" + +#: ../common.php:1967 +msgid "NORTHERN MARIANA ISLANDS" +msgstr "" + +#: ../common.php:1968 +msgid "NORWAY" +msgstr "" + +#: ../common.php:1969 +msgid "OMAN" +msgstr "" + +#: ../common.php:1970 +msgid "PAKISTAN" +msgstr "" + +#: ../common.php:1971 +msgid "PALAU" +msgstr "" + +#: ../common.php:1972 +msgid "PALESTINE" +msgstr "" + +#: ../common.php:1973 +msgid "PANAMA" +msgstr "" + +#: ../common.php:1974 +msgid "PAPUA NEW GUINEA" +msgstr "" + +#: ../common.php:1975 +msgid "PARAGUAY" +msgstr "" + +#: ../common.php:1976 +msgid "PERU" +msgstr "" + +#: ../common.php:1977 +msgid "PHILIPPINES" +msgstr "" + +#: ../common.php:1978 +msgid "POLAND" +msgstr "" + +#: ../common.php:1979 +msgid "PORTUGAL" +msgstr "" + +#: ../common.php:1980 +msgid "PUERTO RICO" +msgstr "" + +#: ../common.php:1981 +msgid "QATAR" +msgstr "" + +#: ../common.php:1982 +msgid "ROMANIA" +msgstr "" + +#: ../common.php:1983 +msgid "RUSSIA" +msgstr "" + +#: ../common.php:1984 +msgid "RWANDA" +msgstr "" + +#: ../common.php:1985 +msgid "SAINT KITTS AND NEVIS" +msgstr "" + +#: ../common.php:1986 +msgid "SAINT LUCIA" +msgstr "" + +#: ../common.php:1987 +msgid "SAINT VINCENT AND THE GRENADINES" +msgstr "" + +#: ../common.php:1988 +msgid "SAMOA" +msgstr "" + +#: ../common.php:1989 +msgid "SAN MARINO" +msgstr "" + +#: ../common.php:1990 +msgid "SAO TOME AND PRINCIPE" +msgstr "" + +#: ../common.php:1991 +msgid "SAUDI ARABIA" +msgstr "" + +#: ../common.php:1992 +msgid "SENEGAL" +msgstr "" + +#: ../common.php:1993 +msgid "SERBIA AND MONTENEGRO" +msgstr "" + +#: ../common.php:1994 +msgid "SEYCHELLES" +msgstr "" + +#: ../common.php:1995 +msgid "SIERRA LEONE" +msgstr "" + +#: ../common.php:1996 +msgid "SINGAPORE" +msgstr "" + +#: ../common.php:1997 +msgid "SLOVAKIA" +msgstr "" + +#: ../common.php:1998 +msgid "SLOVENIA" +msgstr "" + +#: ../common.php:1999 +msgid "SOLOMON ISLANDS" +msgstr "" + +#: ../common.php:2000 +msgid "SOMALIA" +msgstr "" + +#: ../common.php:2001 +msgid "SOUTH AFRICA" +msgstr "" + +#: ../common.php:2002 +msgid "SPAIN" +msgstr "" + +#: ../common.php:2003 +msgid "SRI LANKA" +msgstr "" + +#: ../common.php:2004 +msgid "SUDAN" +msgstr "" + +#: ../common.php:2005 +msgid "SUDAN, SOUTH" +msgstr "" + +#: ../common.php:2006 +msgid "SURINAME" +msgstr "" + +#: ../common.php:2007 +msgid "SWAZILAND" +msgstr "" + +#: ../common.php:2008 +msgid "SWEDEN" +msgstr "" + +#: ../common.php:2009 +msgid "SWITZERLAND" +msgstr "" + +#: ../common.php:2010 +msgid "SYRIA" +msgstr "" + +#: ../common.php:2011 +msgid "TAIWAN" +msgstr "" + +#: ../common.php:2012 +msgid "TAJIKISTAN" +msgstr "" + +#: ../common.php:2013 +msgid "TANZANIA" +msgstr "" + +#: ../common.php:2014 +msgid "THAILAND" +msgstr "" + +#: ../common.php:2015 +msgid "TOGO" +msgstr "" + +#: ../common.php:2016 +msgid "TONGA" +msgstr "" + +#: ../common.php:2017 +msgid "TRINIDAD AND TOBAGO" +msgstr "" + +#: ../common.php:2018 +msgid "TUNISIA" +msgstr "" + +#: ../common.php:2019 +msgid "TURKEY" +msgstr "" + +#: ../common.php:2020 +msgid "TURKMENISTAN" +msgstr "" + +#: ../common.php:2021 +msgid "TUVALU" +msgstr "" + +#: ../common.php:2022 +msgid "UGANDA" +msgstr "" + +#: ../common.php:2023 +msgid "UKRAINE" +msgstr "" + +#: ../common.php:2024 +msgid "UNITED ARAB EMIRATES" +msgstr "" + +#: ../common.php:2025 +msgid "UNITED KINGDOM" +msgstr "" + +#: ../common.php:2026 +msgid "UNITED STATES" +msgstr "" + +#: ../common.php:2027 +msgid "URUGUAY" +msgstr "" + +#: ../common.php:2028 +msgid "UZBEKISTAN" +msgstr "" + +#: ../common.php:2029 +msgid "VANUATU" +msgstr "" + +#: ../common.php:2030 +msgid "VATICAN CITY" +msgstr "" + +#: ../common.php:2031 +msgid "VENEZUELA" +msgstr "" + +#: ../common.php:2032 +msgid "VIRGIN ISLANDS, BRITISH" +msgstr "" + +#: ../common.php:2033 +msgid "VIRGIN ISLANDS, U.S." +msgstr "" + +#: ../common.php:2034 +msgid "VIETNAM" +msgstr "" + +#: ../common.php:2035 +msgid "YEMEN" +msgstr "" + +#: ../common.php:2036 +msgid "ZAMBIA" +msgstr "" + +#: ../common.php:2037 +msgid "ZIMBABWE" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2048 +msgid "Alabama" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2049 +msgid "Alaska" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2050 +msgid "Arizona" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2051 +msgid "Arkansas" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2052 +msgid "California" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2053 +msgid "Colorado" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2054 +msgid "Connecticut" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2055 +msgid "Delaware" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2056 +msgid "District of Columbia" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2057 +msgid "Florida" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2059 +msgid "Hawaii" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2060 +msgid "Idaho" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2061 +msgid "Illinois" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2062 +msgid "Indiana" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2063 +msgid "Iowa" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2064 +msgid "Kansas" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2065 +msgid "Kentucky" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2066 +msgid "Louisiana" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2067 +msgid "Maine" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2068 +msgid "Maryland" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2069 +msgid "Massachusetts" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2070 +msgid "Michigan" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2071 +msgid "Minnesota" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2072 +msgid "Mississippi" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2073 +msgid "Missouri" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2074 +msgid "Montana" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2075 +msgid "Nebraska" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2076 +msgid "Nevada" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2077 +msgid "New Hampshire" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2078 +msgid "New Jersey" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2079 +msgid "New Mexico" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2080 +msgid "New York" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2081 +msgid "North Carolina" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2082 +msgid "North Dakota" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2083 +msgid "Ohio" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2084 +msgid "Oklahoma" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2085 +msgid "Oregon" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2086 +msgid "Pennsylvania" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2087 +msgid "Rhode Island" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2088 +msgid "South Carolina" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2089 +msgid "South Dakota" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2090 +msgid "Tennessee" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2091 +msgid "Texas" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2092 +msgid "Utah" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2093 +msgid "Vermont" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2094 +msgid "Virginia" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2095 +msgid "Washington" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2096 +msgid "West Virginia" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2097 +msgid "Wisconsin" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2098 +msgid "Wyoming" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2099 +msgid "Armed Forces Americas" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2100 +msgid "Armed Forces Europe" +msgstr "" + +#: ../common.php:2043 +#: ../common.php:2101 +msgid "Armed Forces Pacific" +msgstr "" + +#: ../common.php:2111 +msgid "Alberta" +msgstr "" + +#: ../common.php:2111 +msgid "British Columbia" +msgstr "" + +#: ../common.php:2111 +msgid "Manitoba" +msgstr "" + +#: ../common.php:2111 +msgid "New Brunswick" +msgstr "" + +#: ../common.php:2111 +msgid "Newfoundland & Labrador" +msgstr "" + +#: ../common.php:2111 +msgid "Northwest Territories" +msgstr "" + +#: ../common.php:2111 +msgid "Nova Scotia" +msgstr "" + +#: ../common.php:2111 +msgid "Nunavut" +msgstr "" + +#: ../common.php:2111 +msgid "Ontario" +msgstr "" + +#: ../common.php:2111 +msgid "Prince Edward Island" +msgstr "" + +#: ../common.php:2111 +msgid "Quebec" +msgstr "" + +#: ../common.php:2111 +msgid "Saskatchewan" +msgstr "" + +#: ../common.php:2111 +msgid "Yukon" +msgstr "" + +#: ../common.php:2162 +#, php-format +msgid "Please enter a value between %s and %s." +msgstr "" + +#: ../common.php:2164 +#, php-format +msgid "Please enter a value greater than or equal to %s." +msgstr "" + +#: ../common.php:2166 +#, php-format +msgid "Please enter a value less than or equal to %s." +msgstr "" + +#: ../common.php:2168 +msgid "Please enter a valid number" +msgstr "" + +#: ../common.php:2201 +#: ../common.php:3254 +msgid "Month" +msgstr "" + +#: ../common.php:2205 +msgid "Day" +msgstr "" + +#: ../common.php:2211 +#: ../common.php:3264 +msgid "Year" +msgstr "" + +#: ../common.php:2285 +msgid "Product fields are not editable" +msgstr "" + +#: ../common.php:2288 +msgid "Donations are not editable" +msgstr "" + +#: ../common.php:2324 +#: ../common.php:2328 +msgid "Quantity:" +msgstr "" + +#: ../common.php:2407 +#: ../common.php:2415 +msgid "Enter Email" +msgstr "" + +#: ../common.php:2407 +#: ../common.php:2415 +msgid "Confirm Email" +msgstr "" + +#: ../common.php:2508 +#: ../js.php:896 +msgid "Phone format:" +msgstr "" + +#: ../common.php:2595 +#: ../common.php:2957 +msgid "delete" +msgstr "" + +#: ../common.php:2599 +#: ../js.php:518 +msgid "File" +msgstr "" + +#: ../common.php:2608 +#: ../common.php:3693 +#: ../form_detail.php:1323 +msgid "Caption" +msgstr "" + +#: ../common.php:2611 +#: ../common.php:3694 +#: ../form_detail.php:293 +#: ../form_detail.php:1328 +#: ../form_detail.php:1747 +msgid "Description" +msgstr "" + +#: ../common.php:2621 +msgid "Click to select..." +msgstr "" + +#: ../common.php:2660 +#: ../form_display.php:1781 +msgid "Strength indicator" +msgstr "" + +#: ../common.php:2667 +msgid "Enter Password" +msgstr "" + +#: ../common.php:2667 +msgid "Confirm Password" +msgstr "" + +#: ../common.php:2687 +#: ../js.php:407 +msgid "Prefix" +msgstr "" + +#: ../common.php:2687 +#: ../common.php:2696 +#: ../js.php:407 +#: ../js.php:413 +msgid "First" +msgstr "" + +#: ../common.php:2687 +#: ../common.php:2696 +#: ../js.php:407 +#: ../js.php:413 +msgid "Last" +msgstr "" + +#: ../common.php:2687 +#: ../js.php:407 +msgid "Suffix" +msgstr "" + +#: ../common.php:2720 +#: ../common.php:3490 +#: ../form_detail.php:1365 +msgid "State" +msgstr "" + +#: ../common.php:2721 +#: ../common.php:3490 +msgid "Zip Code" +msgstr "" + +#: ../common.php:2741 +#: ../js.php:457 +msgid "Street Address" +msgstr "" + +#: ../common.php:2748 +#: ../js.php:457 +msgid "Address Line 2" +msgstr "" + +#: ../common.php:2758 +#: ../common.php:2774 +#: ../js.php:457 +msgid "City" +msgstr "" + +#: ../common.php:2795 +#: ../js.php:458 +msgid "Country" +msgstr "" + +#: ../common.php:2817 +#: ../common.php:2859 +#: ../common.php:2876 +#: ../common.php:2890 +#: ../common.php:2943 +msgid "MM" +msgstr "" + +#: ../common.php:2818 +#: ../common.php:2854 +#: ../common.php:2881 +#: ../common.php:2895 +msgid "DD" +msgstr "" + +#: ../common.php:2819 +#: ../common.php:2864 +#: ../common.php:2872 +#: ../common.php:2900 +msgid "YYYY" +msgstr "" + +#: ../common.php:2941 +msgid "AM" +msgstr "" + +#: ../common.php:2941 +msgid "PM" +msgstr "" + +#: ../common.php:2943 +msgid "HH" +msgstr "" + +#: ../common.php:2951 +msgid "Download file" +msgstr "" + +#: ../common.php:2951 +msgid "Delete file" +msgstr "" + +#: ../common.php:3002 +msgid "To use the reCaptcha field you must first do the following:" +msgstr "" + +#: ../common.php:3002 +#, php-format +msgid "Sign up%s for a free reCAPTCHA account" +msgstr "" + +#: ../common.php:3002 +#, php-format +msgid "Enter your reCAPTCHA keys in the %ssettings page%s" +msgstr "" + +#: ../common.php:3078 +msgid "Cardholder Name" +msgstr "" + +#: ../common.php:3079 +#: ../js.php:465 +msgid "Card Number" +msgstr "" + +#: ../common.php:3098 +#: ../js.php:466 +msgid "Expiration Date" +msgstr "" + +#: ../common.php:3108 +#: ../js.php:467 +msgid "Security Code" +msgstr "" + +#: ../common.php:3193 +msgid "Add a row" +msgstr "" + +#: ../common.php:3194 +msgid "Remove this row" +msgstr "" + +#: ../common.php:3489 +#: ../form_detail.php:1566 +msgid "International" +msgstr "" + +#: ../common.php:3489 +#: ../js.php:458 +msgid "Zip / Postal Code" +msgstr "" + +#: ../common.php:3489 +msgid "State / Province / Region" +msgstr "" + +#: ../common.php:3491 +msgid "Canadian" +msgstr "" + +#: ../common.php:3491 +#: ../form_detail.php:1369 +msgid "Postal Code" +msgstr "" + +#: ../common.php:3491 +msgid "Province" +msgstr "" + +#: ../common.php:3698 +#: ../common.php:3713 +#: ../entry_list.php:891 +#: ../entry_list.php:901 +msgid "Click to view" +msgstr "" + +#: ../common.php:3749 +msgid "Qty: " +msgstr "" + +#: ../common.php:3749 +msgid "Price: " +msgstr "" + +#: ../currency.php:94 +msgid "Australian Dollar" +msgstr "" + +#: ../currency.php:95 +msgid "Brazilian Real" +msgstr "" + +#: ../currency.php:96 +msgid "Canadian Dollar" +msgstr "" + +#: ../currency.php:97 +msgid "Czech Koruna" +msgstr "" + +#: ../currency.php:98 +msgid "Danish Krone" +msgstr "" + +#: ../currency.php:99 +msgid "Euro" +msgstr "" + +#: ../currency.php:100 +msgid "Hong Kong Dollar" +msgstr "" + +#: ../currency.php:101 +msgid "Hungarian Forint" +msgstr "" + +#: ../currency.php:102 +msgid "Israeli New Sheqel" +msgstr "" + +#: ../currency.php:103 +msgid "Japanese Yen" +msgstr "" + +#: ../currency.php:104 +msgid "Malaysian Ringgit" +msgstr "" + +#: ../currency.php:105 +msgid "Mexican Peso" +msgstr "" + +#: ../currency.php:106 +msgid "Norwegian Krone" +msgstr "" + +#: ../currency.php:107 +msgid "New Zealand Dollar" +msgstr "" + +#: ../currency.php:108 +msgid "Philippine Peso" +msgstr "" + +#: ../currency.php:109 +msgid "Polish Zloty" +msgstr "" + +#: ../currency.php:110 +msgid "Pound Sterling" +msgstr "" + +#: ../currency.php:111 +msgid "Singapore Dollar" +msgstr "" + +#: ../currency.php:112 +msgid "Swedish Krona" +msgstr "" + +#: ../currency.php:113 +msgid "Swiss Franc" +msgstr "" + +#: ../currency.php:114 +msgid "Taiwan New Dollar" +msgstr "" + +#: ../currency.php:115 +msgid "Thai Baht" +msgstr "" + +#: ../currency.php:116 +msgid "U.S. Dollar" +msgstr "" + +#: ../entry_detail.php:56 +msgid "Oops! We couldn't find your lead. Please try again" +msgstr "" + +#: ../entry_detail.php:145 +msgid "'Would you like to delete this file? \\'Cancel\\' to stop. \\'OK\\' to delete'" +msgstr "" + +#: ../entry_detail.php:155 +#: ../js.php:349 +msgid "Ajax error while deleting field." +msgstr "" + +#: ../entry_detail.php:200 +#: ../entry_list.php:364 +msgid "You must select at least one type of notification to resend." +msgstr "" + +#: ../entry_detail.php:219 +msgid "Notifications were resent successfully." +msgstr "" + +#: ../entry_detail.php:263 +msgid "Entry #" +msgstr "" + +#: ../entry_detail.php:281 +msgid "Info" +msgstr "" + +#: ../entry_detail.php:288 +msgid "Submitted on" +msgstr "" + +#: ../entry_detail.php:290 +#: ../export.php:516 +#: ../gravityforms.php:1451 +msgid "User IP" +msgstr "" + +#: ../entry_detail.php:295 +msgid "User" +msgstr "" + +#: ../entry_detail.php:295 +msgid "View user profile" +msgstr "" + +#: ../entry_detail.php:301 +msgid "Embed Url" +msgstr "" + +#: ../entry_detail.php:307 +msgid "Edit Post" +msgstr "" + +#: ../entry_detail.php:307 +msgid "Click to edit post" +msgstr "" + +#: ../entry_detail.php:313 +#: ../export.php:518 +#: ../gravityforms.php:1453 +msgid "Payment Status" +msgstr "" + +#: ../entry_detail.php:313 +msgid "Subscription Status" +msgstr "" + +#: ../entry_detail.php:317 +#: ../export.php:519 +#: ../gravityforms.php:1454 +msgid "Payment Date" +msgstr "" + +#: ../entry_detail.php:317 +msgid "Start Date" +msgstr "" + +#: ../entry_detail.php:323 +#: ../export.php:520 +#: ../gravityforms.php:1455 +msgid "Transaction Id" +msgstr "" + +#: ../entry_detail.php:323 +msgid "Subscriber Id" +msgstr "" + +#: ../entry_detail.php:329 +msgid "Payment Amount" +msgstr "" + +#: ../entry_detail.php:329 +msgid "Subscription Amount" +msgstr "" + +#: ../entry_detail.php:344 +#: ../entry_list.php:626 +#: ../entry_list.php:996 +#: ../entry_list.php:1134 +msgid "Not Spam" +msgstr "" + +#: ../entry_detail.php:350 +#: ../entry_detail.php:363 +msgid "You are about to delete this entry. \\'Cancel\\' to stop, \\'OK\\' to delete." +msgstr "" + +#: ../entry_detail.php:350 +#: ../entry_detail.php:363 +#: ../entry_list.php:620 +#: ../entry_list.php:630 +#: ../entry_list.php:980 +#: ../entry_list.php:1006 +#: ../entry_list.php:1128 +#: ../entry_list.php:1138 +msgid "Delete Permanently" +msgstr "" + +#: ../entry_detail.php:358 +#: ../entry_list.php:616 +#: ../entry_list.php:970 +#: ../entry_list.php:1124 +msgid "Restore" +msgstr "" + +#: ../entry_detail.php:372 +msgid "Move to Trash" +msgstr "" + +#: ../entry_detail.php:378 +msgid "Mark as Spam" +msgstr "" + +#: ../entry_detail.php:394 +#: ../entry_list.php:764 +#: ../entry_list.php:787 +#: ../form_detail.php:266 +#: ../form_detail.php:567 +#: ../form_detail.php:691 +#: ../form_display.php:2057 +#: ../form_list.php:217 +#: ../form_list.php:223 +#: ../js.php:136 +msgid "Edit" +msgstr "" + +#: ../entry_detail.php:394 +#: ../form_detail.php:64 +msgid "Update" +msgstr "" + +#: ../entry_detail.php:399 +#: ../form_detail.php:1649 +#: ../gravityforms.php:911 +msgid "Cancel" +msgstr "" + +#: ../entry_detail.php:411 +#: ../form_list.php:229 +#: ../gravityforms.php:1537 +#: ../notification.php:375 +msgid "Notifications" +msgstr "" + +#: ../entry_detail.php:418 +#: ../entry_list.php:679 +msgid "Admin Notification" +msgstr "" + +#: ../entry_detail.php:421 +#: ../entry_list.php:682 +msgid "User Notification" +msgstr "" + +#: ../entry_detail.php:428 +#: ../entry_list.php:689 +msgid "Send To" +msgstr "" + +#: ../entry_detail.php:434 +#: ../entry_list.php:327 +#: ../entry_list.php:641 +#: ../entry_list.php:694 +#: ../entry_list.php:1149 +msgid "Resend Notifications" +msgstr "" + +#: ../entry_detail.php:436 +#: ../entry_list.php:696 +msgid "Resending..." +msgstr "" + +#: ../entry_detail.php:447 +#: ../entry_list.php:642 +#: ../entry_list.php:728 +#: ../entry_list.php:1150 +msgid "Print" +msgstr "" + +#: ../entry_detail.php:450 +msgid "include notes" +msgstr "" + +#: ../entry_detail.php:470 +msgid "Notes" +msgstr "" + +#: ../entry_detail.php:506 +msgid "Entry Updated." +msgstr "" + +#: ../entry_detail.php:518 +msgid "Details" +msgstr "" + +#: ../entry_detail.php:567 +msgid " Bulk action" +msgstr "" + +#: ../entry_detail.php:569 +#: ../entry_list.php:611 +#: ../entry_list.php:1119 +msgid " Bulk action " +msgstr "" + +#: ../entry_detail.php:570 +#: ../form_detail.php:1650 +#: ../form_display.php:2054 +#: ../form_list.php:142 +#: ../form_list.php:235 +#: ../form_list.php:285 +msgid "Delete" +msgstr "" + +#: ../entry_detail.php:573 +#: ../entry_list.php:659 +#: ../entry_list.php:1166 +#: ../form_list.php:147 +#: ../form_list.php:290 +msgid "Apply" +msgstr "" + +#: ../entry_detail.php:620 +msgid "added on" +msgstr "" + +#: ../entry_detail.php:634 +msgid "Add Note" +msgstr "" + +#: ../entry_detail.php:641 +msgid "Also email this note to" +msgstr "" + +#: ../entry_detail.php:649 +msgid "Subject:" +msgstr "" + +#: ../entry_detail.php:676 +#: ../print-entry.php:50 +msgid "Entry # " +msgstr "" + +#: ../entry_detail.php:682 +msgid "show empty fields" +msgstr "" + +#: ../entry_list.php:15 +#, php-format +msgid "You don't have any active forms. Let's go %screate one%s" +msgstr "" + +#: ../entry_list.php:42 +msgid "Entry deleted." +msgstr "" + +#: ../entry_list.php:51 +#, php-format +msgid "%d entries" +msgstr "" + +#: ../entry_list.php:51 +msgid "1 entry" +msgstr "" + +#: ../entry_list.php:56 +#, php-format +msgid "%s deleted." +msgstr "" + +#: ../entry_list.php:61 +#, php-format +msgid "%s moved to Trash." +msgstr "" + +#: ../entry_list.php:66 +#, php-format +msgid "%s restored from the Trash." +msgstr "" + +#: ../entry_list.php:71 +#, php-format +msgid "%s restored from the spam." +msgstr "" + +#: ../entry_list.php:76 +#, php-format +msgid "%s marked as spam." +msgstr "" + +#: ../entry_list.php:81 +#, php-format +msgid "%s marked as read." +msgstr "" + +#: ../entry_list.php:86 +#, php-format +msgid "%s marked as unread." +msgstr "" + +#: ../entry_list.php:91 +#, php-format +msgid "%s starred." +msgstr "" + +#: ../entry_list.php:96 +#, php-format +msgid "%s unstarred." +msgstr "" + +#: ../entry_list.php:177 +msgid "«" +msgstr "" + +#: ../entry_list.php:178 +msgid "»" +msgstr "" + +#: ../entry_list.php:264 +msgid "Ajax error while setting lead property" +msgstr "" + +#: ../entry_list.php:319 +msgid "Please select at least one entry." +msgstr "" + +#: ../entry_list.php:333 +msgid "Print Entries" +msgstr "" + +#: ../entry_list.php:386 +#, php-format +msgid "Notifications for %s were resent successfully." +msgstr "" + +#: ../entry_list.php:387 +msgid "entry" +msgstr "" + +#: ../entry_list.php:387 +msgid "entries" +msgstr "" + +#: ../entry_list.php:491 +msgid "Entry List" +msgstr "" + +#: ../entry_list.php:577 +#: ../form_list.php:173 +#: ../form_list.php:191 +#: ../form_list.php:227 +#: ../gravityforms.php:732 +#: ../gravityforms.php:1544 +msgid "Entries" +msgstr "" + +#: ../entry_list.php:589 +#: ../form_list.php:128 +#: ../js.php:820 +msgid "All" +msgstr "" + +#: ../entry_list.php:590 +#: ../gravityforms.php:1003 +msgid "Unread" +msgstr "" + +#: ../entry_list.php:591 +msgid "Starred" +msgstr "" + +#: ../entry_list.php:595 +#: ../entry_list.php:647 +#: ../entry_list.php:1029 +#: ../entry_list.php:1154 +msgid "Spam" +msgstr "" + +#: ../entry_list.php:599 +#: ../entry_list.php:653 +#: ../entry_list.php:1039 +#: ../entry_list.php:1160 +msgid "Trash" +msgstr "" + +#: ../entry_list.php:602 +msgid "Search Entries:" +msgstr "" + +#: ../entry_list.php:603 +msgid "Search" +msgstr "" + +#: ../entry_list.php:609 +#: ../entry_list.php:1117 +#: ../form_list.php:139 +#: ../form_list.php:141 +#: ../form_list.php:282 +#: ../form_list.php:284 +msgid "Bulk action" +msgstr "" + +#: ../entry_list.php:637 +#: ../entry_list.php:1145 +msgid "Mark as Read" +msgstr "" + +#: ../entry_list.php:638 +#: ../entry_list.php:1146 +msgid "Mark as Unread" +msgstr "" + +#: ../entry_list.php:639 +#: ../entry_list.php:1147 +msgid "Add Star" +msgstr "" + +#: ../entry_list.php:640 +#: ../entry_list.php:1148 +msgid "Remove Star" +msgstr "" + +#: ../entry_list.php:663 +msgid "WARNING! This operation cannot be undone. Empty trash? \\'Ok\\' to empty trash. \\'Cancel\\' to abort." +msgstr "" + +#: ../entry_list.php:663 +msgid "WARNING! This operation cannot be undone. Permanently delete all spam? \\'Ok\\' to delete. \\'Cancel\\' to abort." +msgstr "" + +#: ../entry_list.php:664 +msgid "Empty Trash" +msgstr "" + +#: ../entry_list.php:664 +msgid "Delete All Spam" +msgstr "" + +#: ../entry_list.php:676 +msgid "Specify which notifications you would like to resend for the selected entries." +msgstr "" + +#: ../entry_list.php:702 +msgid "Close Window" +msgstr "" + +#: ../entry_list.php:716 +msgid "Print all of the selected entries at once." +msgstr "" + +#: ../entry_list.php:720 +msgid "Include notes" +msgstr "" + +#: ../entry_list.php:725 +msgid "Add page break between entries" +msgstr "" + +#: ../entry_list.php:764 +msgid "Select Columns" +msgstr "" + +#: ../entry_list.php:965 +#: ../entry_list.php:991 +#: ../entry_list.php:1018 +msgid "View this entry" +msgstr "" + +#: ../entry_list.php:965 +#: ../entry_list.php:991 +#: ../entry_list.php:1018 +msgid "View" +msgstr "" + +#: ../entry_list.php:970 +msgid "Restore this entry" +msgstr "" + +#: ../entry_list.php:980 +#: ../entry_list.php:1006 +msgid "Delete this entry permanently" +msgstr "" + +#: ../entry_list.php:996 +msgid "Mark this entry as not spam" +msgstr "" + +#: ../entry_list.php:1022 +msgid "Mark read" +msgstr "" + +#: ../entry_list.php:1022 +msgid "Mark this entry as unread" +msgstr "" + +#: ../entry_list.php:1022 +msgid "Mark unread" +msgstr "" + +#: ../entry_list.php:1029 +msgid "Mark this entry as spam" +msgstr "" + +#: ../entry_list.php:1039 +msgid "Move this entry to the trash" +msgstr "" + +#: ../entry_list.php:1081 +msgid "This form does not have any unread entries." +msgstr "" + +#: ../entry_list.php:1085 +msgid "This form does not have any starred entries." +msgstr "" + +#: ../entry_list.php:1089 +msgid "This form does not have any spam." +msgstr "" + +#: ../entry_list.php:1094 +msgid "This form does not have any entries in the trash." +msgstr "" + +#: ../entry_list.php:1099 +msgid "This form does not have any entries yet." +msgstr "" + +#: ../entry_list.php:1313 +#, php-format +msgid "Displaying %s - %s of %s" +msgstr "" + +#: ../export.php:26 +msgid "Please select the forms to be exported" +msgstr "" + +#: ../export.php:183 +msgid "Export Entries" +msgstr "" + +#: ../export.php:184 +#: ../export.php:307 +msgid "Export Forms" +msgstr "" + +#: ../export.php:185 +#: ../export.php:272 +msgid "Import Forms" +msgstr "" + +#: ../export.php:250 +msgid "Forms could not be imported. Please make sure your XML export file is in the correct format." +msgstr "" + +#: ../export.php:255 +msgid "Forms could not be imported. Your XML export file is not compatible with your current version of Gravity Forms." +msgstr "" + +#: ../export.php:260 +msgid "forms" +msgstr "" + +#: ../export.php:260 +msgid "form" +msgstr "" + +#: ../export.php:277 +msgid "Select the Gravity Forms XML file you would like to import. When you click the import button below, Gravity Forms will import the forms." +msgstr "" + +#: ../export.php:289 +msgid "Select File" +msgstr "" + +#: ../export.php:294 +msgid "Import" +msgstr "" + +#: ../export.php:312 +msgid "Select the forms you would like to export. When you click the download button below, Gravity Forms will create a XML file for you to save to your computer. Once you've saved the download file, you can use the Import tool to import the forms." +msgstr "" + +#: ../export.php:318 +msgid "Select Forms" +msgstr "" + +#: ../export.php:338 +#: ../export.php:446 +msgid "Download Export File" +msgstr "" + +#: ../export.php:359 +msgid "Ajax error while selecting a form" +msgstr "" + +#: ../export.php:372 +msgid "Deselect All" +msgstr "" + +#: ../export.php:372 +msgid "Select All" +msgstr "" + +#: ../export.php:388 +msgid "Export Form Entries" +msgstr "" + +#: ../export.php:393 +msgid "Select a form below to export entries. Once you have selected a form you may select the fields you would like to export and an optional date range. When you click the download button below, Gravity Forms will create a CSV file for you to save to your computer." +msgstr "" + +#: ../export.php:400 +#: ../gravityforms.php:1557 +msgid "Select A Form" +msgstr "" + +#: ../export.php:404 +msgid "Select a form" +msgstr "" + +#: ../export.php:418 +msgid "Select Fields" +msgstr "" + +#: ../export.php:425 +msgid "Select Date Range" +msgstr "" + +#: ../export.php:430 +msgid "Start" +msgstr "" + +#: ../export.php:435 +msgid "End" +msgstr "" + +#: ../export.php:438 +msgid "Date Range is optional, if no date range is selected all entries will be exported." +msgstr "" + +#: ../export.php:448 +msgid "Exporting entries. Please wait..." +msgstr "" + +#: ../export.php:515 +#: ../gravityforms.php:1450 +msgid "Entry Date" +msgstr "" + +#: ../export.php:517 +#: ../gravityforms.php:1452 +msgid "Source Url" +msgstr "" + +#: ../forms_model.php:406 +#: ../forms_model.php:724 +msgid "You don't have adequate permission to delete entries." +msgstr "" + +#: ../forms_model.php:460 +msgid "You don't have adequate permission to delete forms." +msgstr "" + +#: ../forms_model.php:488 +msgid "You don't have adequate permission to create forms." +msgstr "" + +#: ../forms_model.php:773 +msgid "You don't have adequate permission to delete notes." +msgstr "" + +#: ../forms_model.php:802 +msgid "You don't have adequate permission to edit entries." +msgstr "" + +#: ../form_detail.php:63 +#: ../form_detail.php:1648 +msgid "Save" +msgstr "" + +#: ../form_detail.php:66 +#: ../form_display.php:525 +#: ../form_display.php:1962 +#: ../js.php:382 +msgid "Previous" +msgstr "" + +#: ../form_detail.php:67 +msgid "Select a format" +msgstr "" + +#: ../form_detail.php:69 +#, php-format +msgid "5 of %d items shown. Edit field to view all" +msgstr "" + +#: ../form_detail.php:70 +msgid "Enter a value" +msgstr "" + +#: ../form_detail.php:71 +msgid "Untitled Form" +msgstr "" + +#: ../form_detail.php:72 +msgid "We would love to hear from you! Please fill out this form and we will get in touch with you shortly." +msgstr "" + +#: ../form_detail.php:73 +msgid "Thanks for contacting us! We will get in touch with you shortly." +msgstr "" + +#: ../form_detail.php:74 +#: ../form_display.php:686 +msgid "Submit" +msgstr "" + +#: ../form_detail.php:75 +#: ../notification.php:300 +msgid "Loading..." +msgstr "" + +#: ../form_detail.php:218 +#: ../gravityforms.php:730 +msgid "New Form" +msgstr "" + +#: ../form_detail.php:218 +msgid "Form Editor :" +msgstr "" + +#: ../form_detail.php:227 +#: ../form_detail.php:2328 +msgid "There was an error while saving your form." +msgstr "" + +#: ../form_detail.php:228 +#: ../form_detail.php:2329 +#, php-format +msgid "Please %scontact our support team%s." +msgstr "" + +#: ../form_detail.php:236 +msgid "The form title you have entered is already taken. Please enter an unique form title." +msgstr "" + +#: ../form_detail.php:244 +#: ../form_detail.php:2324 +msgid "Form updated successfully." +msgstr "" + +#: ../form_detail.php:262 +#: ../gravityforms.php:1536 +msgid "Form Settings" +msgstr "" + +#: ../form_detail.php:264 +msgid "Form ID" +msgstr "" + +#: ../form_detail.php:266 +msgid "Edit Form's properties" +msgstr "" + +#: ../form_detail.php:276 +#: ../form_detail.php:572 +#: ../form_detail.php:696 +#: ../form_detail.php:759 +msgid "Properties" +msgstr "" + +#: ../form_detail.php:277 +#: ../form_detail.php:573 +#: ../form_detail.php:760 +msgid "Advanced" +msgstr "" + +#: ../form_detail.php:278 +msgid "Confirmation" +msgstr "" + +#: ../form_detail.php:301 +msgid "Label Placement" +msgstr "" + +#: ../form_detail.php:305 +msgid "Top aligned" +msgstr "" + +#: ../form_detail.php:306 +msgid "Left aligned" +msgstr "" + +#: ../form_detail.php:307 +msgid "Right aligned" +msgstr "" + +#: ../form_detail.php:313 +msgid "Description Placement" +msgstr "" + +#: ../form_detail.php:317 +msgid "Below inputs" +msgstr "" + +#: ../form_detail.php:318 +msgid "Above inputs" +msgstr "" + +#: ../form_detail.php:328 +msgid "Form Button" +msgstr "" + +#: ../form_detail.php:332 +#: ../form_detail.php:708 +#: ../form_detail.php:902 +#: ../form_detail.php:939 +msgid "Default" +msgstr "" + +#: ../form_detail.php:344 +#: ../form_detail.php:720 +#: ../form_detail.php:914 +#: ../form_detail.php:951 +msgid "Text:" +msgstr "" + +#: ../form_detail.php:351 +#: ../form_detail.php:727 +#: ../form_detail.php:921 +#: ../form_detail.php:958 +msgid "Image Path:" +msgstr "" + +#: ../form_detail.php:359 +#: ../form_detail.php:2176 +msgid "Enable Conditional Logic" +msgstr "" + +#: ../form_detail.php:370 +#: ../form_detail.php:665 +#: ../form_detail.php:2105 +msgid "CSS Class Name" +msgstr "" + +#: ../form_detail.php:377 +msgid "Limit number of entries" +msgstr "" + +#: ../form_detail.php:383 +msgid "Number of Entries" +msgstr "" + +#: ../form_detail.php:388 +msgid "total entries" +msgstr "" + +#: ../form_detail.php:389 +msgid "per day" +msgstr "" + +#: ../form_detail.php:390 +msgid "per week" +msgstr "" + +#: ../form_detail.php:391 +msgid "per month" +msgstr "" + +#: ../form_detail.php:392 +msgid "per year" +msgstr "" + +#: ../form_detail.php:396 +msgid "Entry Limit Reached Message" +msgstr "" + +#: ../form_detail.php:403 +msgid "Schedule form" +msgstr "" + +#: ../form_detail.php:408 +msgid "Start Date/Time" +msgstr "" + +#: ../form_detail.php:439 +msgid "End Date/Time" +msgstr "" + +#: ../form_detail.php:471 +msgid "Form Expired Message" +msgstr "" + +#: ../form_detail.php:478 +msgid "Enable anti-spam honeypot" +msgstr "" + +#: ../form_detail.php:482 +msgid "Enable animation" +msgstr "" + +#: ../form_detail.php:486 +msgid "Require user to be logged in" +msgstr "" + +#: ../form_detail.php:491 +msgid "Require Login Message" +msgstr "" + +#: ../form_detail.php:503 +msgid "Confirmation Message" +msgstr "" + +#: ../form_detail.php:507 +msgid "Text" +msgstr "" + +#: ../form_detail.php:513 +#: ../js.php:78 +msgid "Page" +msgstr "" + +#: ../form_detail.php:519 +msgid "Redirect" +msgstr "" + +#: ../form_detail.php:529 +#: ../notification.php:606 +#: ../notification.php:737 +msgid "Disable Auto-formatting" +msgstr "" + +#: ../form_detail.php:535 +msgid "Select a page" +msgstr "" + +#: ../form_detail.php:544 +msgid "Pass Field Data Via Query String" +msgstr "" + +#: ../form_detail.php:551 +msgid "Sample: phone={Phone:1}&email{Email:2}" +msgstr "" + +#: ../form_detail.php:567 +#: ../form_detail.php:691 +msgid "Edit Last Page" +msgstr "" + +#: ../form_detail.php:569 +msgid "First Page Options" +msgstr "" + +#: ../form_detail.php:580 +msgid "Progress Indicator" +msgstr "" + +#: ../form_detail.php:586 +msgid "Progress Bar" +msgstr "" + +#: ../form_detail.php:591 +msgid "Steps" +msgstr "" + +#: ../form_detail.php:596 +#: ../form_detail.php:1719 +msgid "None" +msgstr "" + +#: ../form_detail.php:605 +msgid "Style" +msgstr "" + +#: ../form_detail.php:609 +msgid "Blue" +msgstr "" + +#: ../form_detail.php:610 +msgid "Gray" +msgstr "" + +#: ../form_detail.php:611 +#: ../form_detail.php:1601 +msgid "Green" +msgstr "" + +#: ../form_detail.php:612 +msgid "Orange" +msgstr "" + +#: ../form_detail.php:613 +#: ../form_detail.php:1079 +msgid "Red" +msgstr "" + +#: ../form_detail.php:620 +msgid "Text Color" +msgstr "" + +#: ../form_detail.php:627 +#: ../form_detail.php:1064 +msgid "Background Color" +msgstr "" + +#: ../form_detail.php:634 +msgid "Page Names" +msgstr "" + +#: ../form_detail.php:645 +msgid "Display completed progress bar on confirmation" +msgstr "" + +#: ../form_detail.php:653 +msgid "Completion Text" +msgstr "" + +#: ../form_detail.php:693 +msgid "Last Page Options" +msgstr "" + +#: ../form_detail.php:702 +#: ../form_detail.php:933 +msgid "Previous Button" +msgstr "" + +#: ../form_detail.php:741 +msgid "You have successfully saved your form!" +msgstr "" + +#: ../form_detail.php:742 +msgid "What would you like to do next?" +msgstr "" + +#: ../form_detail.php:743 +#: ../form_detail.php:2325 +#: ../form_list.php:224 +msgid "Preview this form" +msgstr "" + +#: ../form_detail.php:743 +msgid "Preview this Form" +msgstr "" + +#: ../form_detail.php:746 +msgid "Setup email notifications for this form" +msgstr "" + +#: ../form_detail.php:746 +msgid "Setup Email Notifications for this Form" +msgstr "" + +#: ../form_detail.php:749 +msgid "Continue editing this form" +msgstr "" + +#: ../form_detail.php:749 +msgid "Continue Editing this Form" +msgstr "" + +#: ../form_detail.php:751 +msgid "I am done. Take me back to form list" +msgstr "" + +#: ../form_detail.php:751 +msgid "Return to Form List" +msgstr "" + +#: ../form_detail.php:769 +msgid "Field Label" +msgstr "" + +#: ../form_detail.php:777 +msgid "Product Field" +msgstr "" + +#: ../form_detail.php:789 +#: ../form_detail.php:806 +#: ../form_detail.php:841 +#: ../form_detail.php:855 +#: ../form_detail.php:869 +#: ../form_detail.php:980 +#: ../form_detail.php:1009 +#: ../form_detail.php:1199 +msgid "Field Type" +msgstr "" + +#: ../form_detail.php:793 +msgid "Single Product" +msgstr "" + +#: ../form_detail.php:796 +#: ../form_detail.php:860 +msgid "User Defined Price" +msgstr "" + +#: ../form_detail.php:798 +msgid "Calculation" +msgstr "" + +#: ../form_detail.php:810 +msgid "Single Method" +msgstr "" + +#: ../form_detail.php:831 +msgid "Disable quantity field" +msgstr "" + +#: ../form_detail.php:884 +msgid "Content" +msgstr "" + +#: ../form_detail.php:897 +msgid "Next Button" +msgstr "" + +#: ../form_detail.php:971 +msgid "Disable default margins" +msgstr "" + +#: ../form_detail.php:984 +#: ../form_detail.php:2276 +msgid "Standard Fields" +msgstr "" + +#: ../form_detail.php:985 +#: ../form_detail.php:1013 +msgid "Single line text" +msgstr "" + +#: ../form_detail.php:994 +#: ../form_detail.php:2277 +msgid "Advanced Fields" +msgstr "" + +#: ../form_detail.php:1028 +msgid "Type" +msgstr "" + +#: ../form_detail.php:1032 +msgid "reCAPTCHA" +msgstr "" + +#: ../form_detail.php:1033 +msgid "Really Simple CAPTCHA" +msgstr "" + +#: ../form_detail.php:1034 +msgid "Math Challenge" +msgstr "" + +#: ../form_detail.php:1042 +#: ../form_detail.php:1613 +msgid "Size" +msgstr "" + +#: ../form_detail.php:1045 +#: ../form_detail.php:1613 +#: ../form_detail.php:2025 +msgid "Small" +msgstr "" + +#: ../form_detail.php:1055 +msgid "Font Color" +msgstr "" + +#: ../form_detail.php:1075 +msgid "Theme" +msgstr "" + +#: ../form_detail.php:1080 +msgid "White" +msgstr "" + +#: ../form_detail.php:1081 +msgid "Black Glass" +msgstr "" + +#: ../form_detail.php:1082 +msgid "Clean" +msgstr "" + +#: ../form_detail.php:1090 +msgid "Custom Field Name" +msgstr "" + +#: ../form_detail.php:1096 +msgid "Existing" +msgstr "" + +#: ../form_detail.php:1102 +msgid "New" +msgstr "" + +#: ../form_detail.php:1108 +msgid "Select an existing custom field" +msgstr "" + +#: ../form_detail.php:1125 +msgid "Post Status" +msgstr "" + +#: ../form_detail.php:1129 +msgid "Draft" +msgstr "" + +#: ../form_detail.php:1130 +msgid "Pending Review" +msgstr "" + +#: ../form_detail.php:1131 +msgid "Published" +msgstr "" + +#: ../form_detail.php:1139 +msgid "Default Post Author" +msgstr "" + +#: ../form_detail.php:1149 +msgid "Use logged in user as author" +msgstr "" + +#: ../form_detail.php:1161 +msgid "Post Format" +msgstr "" + +#: ../form_detail.php:1187 +#: ../js.php:362 +msgid "Post Category" +msgstr "" + +#: ../form_detail.php:1221 +msgid "All Categories" +msgstr "" + +#: ../form_detail.php:1227 +msgid "Select Categories" +msgstr "" + +#: ../form_detail.php:1250 +msgid "Display placeholder" +msgstr "" + +#: ../form_detail.php:1256 +msgid "Placeholder Label" +msgstr "" + +#: ../form_detail.php:1266 +#: ../form_detail.php:1283 +#: ../form_detail.php:1300 +msgid "Create content template" +msgstr "" + +#: ../form_detail.php:1315 +msgid "Image Metadata" +msgstr "" + +#: ../form_detail.php:1338 +msgid "Set as Featured Image" +msgstr "" + +#: ../form_detail.php:1350 +msgid "Address Type" +msgstr "" + +#: ../form_detail.php:1378 +#, php-format +msgid "Default %s" +msgstr "" + +#: ../form_detail.php:1394 +msgid "Default Country" +msgstr "" + +#: ../form_detail.php:1404 +msgid "Hide Country Field" +msgstr "" + +#: ../form_detail.php:1416 +#, php-format +msgid "Hide %s Field" +msgstr "" + +#: ../form_detail.php:1428 +msgid "Hide Address Line 2 Field" +msgstr "" + +#: ../form_detail.php:1438 +msgid "Name Format" +msgstr "" + +#: ../form_detail.php:1442 +msgid "Normal" +msgstr "" + +#: ../form_detail.php:1443 +msgid "Extended" +msgstr "" + +#: ../form_detail.php:1444 +msgid "Simple" +msgstr "" + +#: ../form_detail.php:1452 +msgid "Date Input Type" +msgstr "" + +#: ../form_detail.php:1456 +msgid "Date Field" +msgstr "" + +#: ../form_detail.php:1457 +msgid "Date Picker" +msgstr "" + +#: ../form_detail.php:1458 +msgid "Date Drop Down" +msgstr "" + +#: ../form_detail.php:1464 +msgid "No Icon" +msgstr "" + +#: ../form_detail.php:1469 +msgid "Calendar Icon" +msgstr "" + +#: ../form_detail.php:1474 +msgid "Custom Icon" +msgstr "" + +#: ../form_detail.php:1479 +msgid "Image Path: " +msgstr "" + +#: ../form_detail.php:1482 +msgid "Preview this form to see your custom icon." +msgstr "" + +#: ../form_detail.php:1491 +msgid "Date Format" +msgstr "" + +#: ../form_detail.php:1509 +msgid "Allowed file extensions" +msgstr "" + +#: ../form_detail.php:1513 +msgid "Separated with commas (i.e. jpg, gif, png, pdf)" +msgstr "" + +#: ../form_detail.php:1522 +msgid "Enable multiple columns" +msgstr "" + +#: ../form_detail.php:1534 +msgid "Maximum Rows" +msgstr "" + +#: ../form_detail.php:1546 +msgid "Time Format" +msgstr "" + +#: ../form_detail.php:1550 +msgid "12 hour" +msgstr "" + +#: ../form_detail.php:1551 +msgid "24 hour" +msgstr "" + +#: ../form_detail.php:1561 +msgid "Phone Format" +msgstr "" + +#: ../form_detail.php:1575 +msgid "enable values" +msgstr "" + +#: ../form_detail.php:1577 +msgid "Choices" +msgstr "" + +#: ../form_detail.php:1580 +msgid "Label" +msgstr "" + +#: ../form_detail.php:1580 +msgid "Value" +msgstr "" + +#: ../form_detail.php:1584 +msgid "Bulk Add / Predefined Choices" +msgstr "" + +#: ../form_detail.php:1592 +msgid "Countries" +msgstr "" + +#: ../form_detail.php:1593 +msgid "U.S. States" +msgstr "" + +#: ../form_detail.php:1594 +msgid "Canadian Province/Territory" +msgstr "" + +#: ../form_detail.php:1595 +msgid "Continents" +msgstr "" + +#: ../form_detail.php:1595 +msgid "Africa" +msgstr "" + +#: ../form_detail.php:1595 +msgid "Antarctica" +msgstr "" + +#: ../form_detail.php:1595 +msgid "Asia" +msgstr "" + +#: ../form_detail.php:1595 +msgid "Europe" +msgstr "" + +#: ../form_detail.php:1595 +msgid "North America" +msgstr "" + +#: ../form_detail.php:1595 +msgid "South America" +msgstr "" + +#: ../form_detail.php:1596 +msgid "Gender" +msgstr "" + +#: ../form_detail.php:1596 +msgid "Male" +msgstr "" + +#: ../form_detail.php:1596 +msgid "Female" +msgstr "" + +#: ../form_detail.php:1596 +#: ../form_detail.php:1597 +#: ../form_detail.php:1599 +#: ../form_detail.php:1602 +#: ../form_detail.php:1603 +msgid "Prefer Not to Answer" +msgstr "" + +#: ../form_detail.php:1597 +msgid "Age" +msgstr "" + +#: ../form_detail.php:1597 +msgid "Under 18" +msgstr "" + +#: ../form_detail.php:1597 +msgid "18-24" +msgstr "" + +#: ../form_detail.php:1597 +msgid "25-34" +msgstr "" + +#: ../form_detail.php:1597 +msgid "35-44" +msgstr "" + +#: ../form_detail.php:1597 +msgid "45-54" +msgstr "" + +#: ../form_detail.php:1597 +msgid "55-64" +msgstr "" + +#: ../form_detail.php:1597 +msgid "65 or Above" +msgstr "" + +#: ../form_detail.php:1598 +msgid "Marital Status" +msgstr "" + +#: ../form_detail.php:1598 +msgid "Single" +msgstr "" + +#: ../form_detail.php:1598 +msgid "Married" +msgstr "" + +#: ../form_detail.php:1598 +msgid "Divorced" +msgstr "" + +#: ../form_detail.php:1598 +msgid "Widowed" +msgstr "" + +#: ../form_detail.php:1599 +msgid "Employment" +msgstr "" + +#: ../form_detail.php:1599 +msgid "Employed Full-Time" +msgstr "" + +#: ../form_detail.php:1599 +msgid "Employed Part-Time" +msgstr "" + +#: ../form_detail.php:1599 +msgid "Self-employed" +msgstr "" + +#: ../form_detail.php:1599 +msgid "Not employed" +msgstr "" + +#: ../form_detail.php:1599 +msgid " but looking for work" +msgstr "" + +#: ../form_detail.php:1599 +msgid "Not employed and not looking for work" +msgstr "" + +#: ../form_detail.php:1599 +msgid "Homemaker" +msgstr "" + +#: ../form_detail.php:1599 +msgid "Retired" +msgstr "" + +#: ../form_detail.php:1599 +msgid "Student" +msgstr "" + +#: ../form_detail.php:1600 +msgid "Job Type" +msgstr "" + +#: ../form_detail.php:1600 +msgid "Full-Time" +msgstr "" + +#: ../form_detail.php:1600 +msgid "Part-Time" +msgstr "" + +#: ../form_detail.php:1600 +msgid "Per Diem" +msgstr "" + +#: ../form_detail.php:1600 +msgid "Employee" +msgstr "" + +#: ../form_detail.php:1600 +msgid "Temporary" +msgstr "" + +#: ../form_detail.php:1600 +msgid "Contract" +msgstr "" + +#: ../form_detail.php:1600 +msgid "Intern" +msgstr "" + +#: ../form_detail.php:1600 +msgid "Seasonal" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Industry" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Accounting/Finance" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Advertising/Public Relations" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Aerospace/Aviation" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Arts/Entertainment/Publishing" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Automotive" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Banking/Mortgage" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Business Development" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Business Opportunity" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Clerical/Administrative" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Construction/Facilities" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Consumer Goods" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Customer Service" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Education/Training" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Energy/Utilities" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Engineering" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Government/Military" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Healthcare" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Hospitality/Travel" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Human Resources" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Installation/Maintenance" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Insurance" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Internet" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Job Search Aids" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Law Enforcement/Security" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Legal" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Management/Executive" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Manufacturing/Operations" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Marketing" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Non-Profit/Volunteer" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Pharmaceutical/Biotech" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Professional Services" +msgstr "" + +#: ../form_detail.php:1601 +msgid "QA/Quality Control" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Real Estate" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Restaurant/Food Service" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Retail" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Sales" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Science/Research" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Skilled Labor" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Technology" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Telecommunications" +msgstr "" + +#: ../form_detail.php:1601 +msgid "Transportation/Logistics" +msgstr "" + +#: ../form_detail.php:1602 +msgid "Income" +msgstr "" + +#: ../form_detail.php:1602 +msgid "Under $20,000" +msgstr "" + +#: ../form_detail.php:1602 +msgid "$20,000 - $30,000" +msgstr "" + +#: ../form_detail.php:1602 +msgid "$30,000 - $40,000" +msgstr "" + +#: ../form_detail.php:1602 +msgid "$40,000 - $50,000" +msgstr "" + +#: ../form_detail.php:1602 +msgid "$50,000 - $75,000" +msgstr "" + +#: ../form_detail.php:1602 +msgid "$75,000 - $100,000" +msgstr "" + +#: ../form_detail.php:1602 +msgid "$100,000 - $150,000" +msgstr "" + +#: ../form_detail.php:1602 +msgid "$150,000 or more" +msgstr "" + +#: ../form_detail.php:1603 +msgid "Education" +msgstr "" + +#: ../form_detail.php:1603 +msgid "High School" +msgstr "" + +#: ../form_detail.php:1603 +msgid "Associate Degree" +msgstr "" + +#: ../form_detail.php:1603 +msgid "Bachelor's Degree" +msgstr "" + +#: ../form_detail.php:1603 +msgid "Graduate of Professional Degree" +msgstr "" + +#: ../form_detail.php:1603 +msgid "Some College" +msgstr "" + +#: ../form_detail.php:1604 +msgid "Days of the Week" +msgstr "" + +#: ../form_detail.php:1604 +msgid "Sunday" +msgstr "" + +#: ../form_detail.php:1604 +msgid "Monday" +msgstr "" + +#: ../form_detail.php:1604 +msgid "Tuesday" +msgstr "" + +#: ../form_detail.php:1604 +msgid "Wednesday" +msgstr "" + +#: ../form_detail.php:1604 +msgid "Thursday" +msgstr "" + +#: ../form_detail.php:1604 +msgid "Friday" +msgstr "" + +#: ../form_detail.php:1604 +msgid "Saturday" +msgstr "" + +#: ../form_detail.php:1605 +msgid "Months of the Year" +msgstr "" + +#: ../form_detail.php:1605 +msgid "January" +msgstr "" + +#: ../form_detail.php:1605 +msgid "February" +msgstr "" + +#: ../form_detail.php:1605 +msgid "March" +msgstr "" + +#: ../form_detail.php:1605 +msgid "April" +msgstr "" + +#: ../form_detail.php:1605 +msgid "May" +msgstr "" + +#: ../form_detail.php:1605 +msgid "June" +msgstr "" + +#: ../form_detail.php:1605 +msgid "July" +msgstr "" + +#: ../form_detail.php:1605 +msgid "August" +msgstr "" + +#: ../form_detail.php:1605 +msgid "September" +msgstr "" + +#: ../form_detail.php:1605 +msgid "October" +msgstr "" + +#: ../form_detail.php:1605 +msgid "November" +msgstr "" + +#: ../form_detail.php:1605 +msgid "December" +msgstr "" + +#: ../form_detail.php:1606 +msgid "How Often" +msgstr "" + +#: ../form_detail.php:1606 +msgid "Everyday" +msgstr "" + +#: ../form_detail.php:1606 +msgid "Once a week" +msgstr "" + +#: ../form_detail.php:1606 +msgid "2 to 3 times a week" +msgstr "" + +#: ../form_detail.php:1606 +msgid "Once a month" +msgstr "" + +#: ../form_detail.php:1606 +msgid " 2 to 3 times a month" +msgstr "" + +#: ../form_detail.php:1606 +msgid "Less than once a month" +msgstr "" + +#: ../form_detail.php:1607 +msgid "How Long" +msgstr "" + +#: ../form_detail.php:1607 +msgid "Less than a month" +msgstr "" + +#: ../form_detail.php:1607 +msgid "1-6 months" +msgstr "" + +#: ../form_detail.php:1607 +msgid "1-3 years" +msgstr "" + +#: ../form_detail.php:1607 +msgid "Over 3 Years" +msgstr "" + +#: ../form_detail.php:1607 +msgid "Never used" +msgstr "" + +#: ../form_detail.php:1608 +msgid "Satisfaction" +msgstr "" + +#: ../form_detail.php:1608 +msgid "Very Satisfied" +msgstr "" + +#: ../form_detail.php:1608 +msgid "Satisfied" +msgstr "" + +#: ../form_detail.php:1608 +msgid "Neutral" +msgstr "" + +#: ../form_detail.php:1608 +msgid "Unsatisfied" +msgstr "" + +#: ../form_detail.php:1608 +msgid "Very Unsatisfied" +msgstr "" + +#: ../form_detail.php:1609 +msgid "Importance" +msgstr "" + +#: ../form_detail.php:1609 +msgid "Very Important" +msgstr "" + +#: ../form_detail.php:1609 +msgid "Important" +msgstr "" + +#: ../form_detail.php:1609 +msgid "Somewhat Important" +msgstr "" + +#: ../form_detail.php:1609 +msgid "Not Important" +msgstr "" + +#: ../form_detail.php:1610 +msgid "Agreement" +msgstr "" + +#: ../form_detail.php:1610 +msgid "Strongly Agree" +msgstr "" + +#: ../form_detail.php:1610 +msgid "Agree" +msgstr "" + +#: ../form_detail.php:1610 +msgid "Disagree" +msgstr "" + +#: ../form_detail.php:1610 +msgid "Strongly Disagree" +msgstr "" + +#: ../form_detail.php:1611 +msgid "Comparison" +msgstr "" + +#: ../form_detail.php:1611 +msgid "Much Better" +msgstr "" + +#: ../form_detail.php:1611 +msgid "Somewhat Better" +msgstr "" + +#: ../form_detail.php:1611 +msgid "About the Same" +msgstr "" + +#: ../form_detail.php:1611 +msgid "Somewhat Worse" +msgstr "" + +#: ../form_detail.php:1611 +msgid "Much Worse" +msgstr "" + +#: ../form_detail.php:1612 +msgid "Would You" +msgstr "" + +#: ../form_detail.php:1612 +msgid "Definitely" +msgstr "" + +#: ../form_detail.php:1612 +msgid "Probably" +msgstr "" + +#: ../form_detail.php:1612 +msgid "Not Sure" +msgstr "" + +#: ../form_detail.php:1612 +msgid "Probably Not" +msgstr "" + +#: ../form_detail.php:1612 +msgid "Definitely Not" +msgstr "" + +#: ../form_detail.php:1613 +msgid "Extra Small" +msgstr "" + +#: ../form_detail.php:1613 +msgid "Extra Large" +msgstr "" + +#: ../form_detail.php:1622 +msgid "Select a category and customize the predefined choices or paste your own list to bulk add choices." +msgstr "" + +#: ../form_detail.php:1640 +msgid "Insert Choices" +msgstr "" + +#: ../form_detail.php:1645 +msgid "Save as new custom choice" +msgstr "" + +#: ../form_detail.php:1647 +msgid "Save as" +msgstr "" + +#: ../form_detail.php:1647 +msgid "Enter name" +msgstr "" + +#: ../form_detail.php:1647 +msgid "enter name" +msgstr "" + +#: ../form_detail.php:1674 +msgid "Enable \"other\" choice" +msgstr "" + +#: ../form_detail.php:1687 +msgid "Enable Email Confirmation" +msgstr "" + +#: ../form_detail.php:1697 +msgid "Enable Password Strength" +msgstr "" + +#: ../form_detail.php:1708 +msgid "Enable enhanced user interface" +msgstr "" + +#: ../form_detail.php:1715 +msgid "Minimum Strength" +msgstr "" + +#: ../form_detail.php:1720 +#: ../form_display.php:1781 +msgid "Short" +msgstr "" + +#: ../form_detail.php:1721 +#: ../form_display.php:1781 +msgid "Bad" +msgstr "" + +#: ../form_detail.php:1722 +#: ../form_display.php:1781 +msgid "Good" +msgstr "" + +#: ../form_detail.php:1723 +#: ../form_display.php:1781 +msgid "Strong" +msgstr "" + +#: ../form_detail.php:1733 +msgid "Number Format" +msgstr "" + +#: ../form_detail.php:1756 +msgid "Supported Credit Cards" +msgstr "" + +#: ../form_detail.php:1776 +msgid "Card Icon Style" +msgstr "" + +#: ../form_detail.php:1780 +#: ../form_detail.php:1802 +msgid "Standard" +msgstr "" + +#: ../form_detail.php:1781 +msgid "3D" +msgstr "" + +#: ../form_detail.php:1791 +msgid "Input Mask" +msgstr "" + +#: ../form_detail.php:1816 +msgid "Enter a custom mask" +msgstr "" + +#: ../form_detail.php:1817 +msgid "Custom Mask Instructions" +msgstr "" + +#: ../form_detail.php:1817 +#: ../gravityforms.php:748 +msgid "Help" +msgstr "" + +#: ../form_detail.php:1822 +#: ../form_detail.php:1945 +msgid "Usage" +msgstr "" + +#: ../form_detail.php:1824 +#: ../form_detail.php:1947 +msgid "Use a '9' to indicate a numerical character." +msgstr "" + +#: ../form_detail.php:1825 +#: ../form_detail.php:1948 +msgid "Use a lower case 'a' to indicate an alphabetical character." +msgstr "" + +#: ../form_detail.php:1826 +#: ../form_detail.php:1949 +msgid "Use an asterick '*' to indicate any alphanumeric character." +msgstr "" + +#: ../form_detail.php:1827 +#: ../form_detail.php:1950 +msgid "Use a question mark '?' to indicate optional characters. Note: All characters after the question mark will be optional." +msgstr "" + +#: ../form_detail.php:1828 +#: ../form_detail.php:1951 +msgid "All other characters are literal values and will be displayed automatically." +msgstr "" + +#: ../form_detail.php:1831 +msgid "Examples" +msgstr "" + +#: ../form_detail.php:1835 +#: ../form_detail.php:1840 +#: ../form_detail.php:1845 +#: ../form_detail.php:1850 +#: ../form_detail.php:1855 +msgid "Mask" +msgstr "" + +#: ../form_detail.php:1836 +#: ../form_detail.php:1841 +#: ../form_detail.php:1846 +#: ../form_detail.php:1851 +#: ../form_detail.php:1856 +msgid "Valid Input" +msgstr "" + +#: ../form_detail.php:1839 +msgid "Social Security Number" +msgstr "" + +#: ../form_detail.php:1844 +msgid "Course Code" +msgstr "" + +#: ../form_detail.php:1849 +msgid "License Key" +msgstr "" + +#: ../form_detail.php:1854 +msgid "Zip Code w/ Optional Plus Four" +msgstr "" + +#: ../form_detail.php:1864 +msgid "Select a Mask" +msgstr "" + +#: ../form_detail.php:1883 +msgid "Maximum Characters" +msgstr "" + +#: ../form_detail.php:1893 +msgid "Range" +msgstr "" + +#: ../form_detail.php:1899 +msgid "Min" +msgstr "" + +#: ../form_detail.php:1905 +msgid "Max" +msgstr "" + +#: ../form_detail.php:1921 +msgid "Enable Calculation" +msgstr "" + +#: ../form_detail.php:1929 +msgid "Formula" +msgstr "" + +#: ../form_detail.php:1959 +msgid "Rounding" +msgstr "" + +#: ../form_detail.php:1984 +msgid "Rules" +msgstr "" + +#: ../form_detail.php:1987 +msgid "Required" +msgstr "" + +#: ../form_detail.php:1993 +msgid "No Duplicates" +msgstr "" + +#: ../form_detail.php:2011 +msgid "Admin Label" +msgstr "" + +#: ../form_detail.php:2021 +msgid "Field Size" +msgstr "" + +#: ../form_detail.php:2035 +#: ../form_detail.php:2046 +msgid "Default Value" +msgstr "" + +#: ../form_detail.php:2056 +msgid "Validation Message" +msgstr "" + +#: ../form_detail.php:2066 +msgid "Credit Card Icon Style" +msgstr "" + +#: ../form_detail.php:2086 +msgid "Language" +msgstr "" + +#: ../form_detail.php:2090 +msgid "English" +msgstr "" + +#: ../form_detail.php:2091 +msgid "Dutch" +msgstr "" + +#: ../form_detail.php:2092 +msgid "French" +msgstr "" + +#: ../form_detail.php:2093 +msgid "German" +msgstr "" + +#: ../form_detail.php:2094 +msgid "Portuguese" +msgstr "" + +#: ../form_detail.php:2095 +msgid "Russian" +msgstr "" + +#: ../form_detail.php:2096 +msgid "Spanish" +msgstr "" + +#: ../form_detail.php:2097 +msgid "Turkish" +msgstr "" + +#: ../form_detail.php:2115 +msgid "Add Icon URL" +msgstr "" + +#: ../form_detail.php:2125 +msgid "Delete Icon URL" +msgstr "" + +#: ../form_detail.php:2134 +msgid "Enable Password Input" +msgstr "" + +#: ../form_detail.php:2141 +msgid "Force SSL" +msgstr "" + +#: ../form_detail.php:2148 +msgid "Visibility" +msgstr "" + +#: ../form_detail.php:2152 +msgid "Everyone" +msgstr "" + +#: ../form_detail.php:2157 +msgid "Admin Only" +msgstr "" + +#: ../form_detail.php:2166 +msgid "Allow field to be populated dynamically" +msgstr "" + +#: ../form_detail.php:2187 +msgid "Enable Page Conditional Logic" +msgstr "" + +#: ../form_detail.php:2199 +msgid "Enable Next Button Conditional Logic" +msgstr "" + +#: ../form_detail.php:2278 +msgid "Post Fields" +msgstr "" + +#: ../form_detail.php:2282 +msgid "Pricing Fields" +msgstr "" + +#: ../form_detail.php:2310 +msgid "Delete this Form" +msgstr "" + +#: ../form_detail.php:2310 +msgid "Would you like to delete this form and ALL entries associated with it? \\'Cancel\\' to stop. \\'OK\\' to delete" +msgstr "" + +#: ../form_detail.php:2310 +msgid "Delete Form" +msgstr "" + +#: ../form_detail.php:2314 +msgid "Update Form" +msgstr "" + +#: ../form_detail.php:2314 +msgid "Save Form" +msgstr "" + +#: ../form_detail.php:2325 +#: ../form_list.php:224 +#: ../gravityforms.php:1551 +msgid "Preview" +msgstr "" + +#: ../form_detail.php:2466 +msgid "Insert variable" +msgstr "" + +#: ../form_detail.php:2475 +msgid "HTTP Referer URL" +msgstr "" + +#: ../form_detail.php:2582 +msgid "New submission from" +msgstr "" + +#: ../form_display.php:371 +msgid "Oops! We could not locate your form." +msgstr "" + +#: ../form_display.php:388 +msgid "Sorry. You must be logged in to view this form." +msgstr "" + +#: ../form_display.php:494 +msgid "There was a problem with your submission." +msgstr "" + +#: ../form_display.php:494 +msgid "Errors have been highlighted below." +msgstr "" + +#: ../form_display.php:525 +#: ../form_display.php:1962 +msgid "Previous Page" +msgstr "" + +#: ../form_display.php:965 +#: ../form_display.php:1188 +#: ../form_display.php:1299 +#: ../form_display.php:1311 +msgid "This field is required." +msgstr "" + +#: ../form_display.php:974 +msgid "This date has already been taken. Please select a new date." +msgstr "" + +#: ../form_display.php:978 +msgid "This field requires an unique entry and the values you entered have been already been used." +msgstr "" + +#: ../form_display.php:979 +#, php-format +msgid "This field requires an unique entry and '%s' has already been used" +msgstr "" + +#: ../form_display.php:989 +msgid "Please enter a valid value." +msgstr "" + +#: ../form_display.php:989 +msgid "Invalid selection. Please select one of the available choices." +msgstr "" + +#: ../form_display.php:998 +msgid "Your passwords do not match." +msgstr "" + +#: ../form_display.php:1006 +msgid "Your password does not meet the required strength.
              Hint: To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ & )." +msgstr "" + +#: ../form_display.php:1018 +msgid "This field is required. Please enter the first and last name." +msgstr "" + +#: ../form_display.php:1034 +msgid "This field is required. Please enter a complete address." +msgstr "" + +#: ../form_display.php:1047 +msgid "Please enter your credit card information." +msgstr "" + +#: ../form_display.php:1055 +msgid "Please enter your card's security code." +msgstr "" + +#: ../form_display.php:1059 +msgid "Invalid credit card number." +msgstr "" + +#: ../form_display.php:1063 +msgid "is not supported. Please enter one of the supported credit cards." +msgstr "" + +#: ../form_display.php:1071 +msgid "Please enter a valid email address." +msgstr "" + +#: ../form_display.php:1077 +msgid "Your emails do not match." +msgstr "" + +#: ../form_display.php:1091 +msgid "Please enter a valid amount." +msgstr "" + +#: ../form_display.php:1149 +#, php-format +msgid "Please enter a valid date in the format (%s)." +msgstr "" + +#: ../form_display.php:1149 +msgid "Please enter a valid date." +msgstr "" + +#: ../form_display.php:1179 +msgid "Please enter a valid time." +msgstr "" + +#: ../form_display.php:1194 +msgid "Please enter a valid Website URL (i.e. http://www.gravityforms.com)." +msgstr "" + +#: ../form_display.php:1207 +#: ../form_display.php:1242 +msgid "The CAPTCHA wasn't entered correctly. Go back and try it again." +msgstr "" + +#: ../form_display.php:1263 +msgid "The reCAPTCHA wasn't entered correctly. Go back and try it again." +msgstr "" + +#: ../form_display.php:1276 +msgid "The uploaded file type is not allowed." +msgstr "" + +#: ../form_display.php:1280 +#, php-format +msgid "The uploaded file type is not allowed. Must be one of the following: %s" +msgstr "" + +#: ../form_display.php:1295 +msgid "Please enter a valid quantity" +msgstr "" + +#: ../form_display.php:1721 +msgid "No results matched" +msgstr "" + +#: ../form_display.php:1738 +#: ../form_display.php:2209 +msgid "of" +msgstr "" + +#: ../form_display.php:1738 +msgid "max characters" +msgstr "" + +#: ../form_display.php:1781 +msgid "Mismatch" +msgstr "" + +#: ../form_display.php:1961 +#: ../js.php:380 +msgid "Next" +msgstr "" + +#: ../form_display.php:1961 +msgid "Next Page" +msgstr "" + +#: ../form_display.php:2051 +msgid "click to duplicate this field" +msgstr "" + +#: ../form_display.php:2051 +#: ../form_list.php:232 +msgid "Duplicate" +msgstr "" + +#: ../form_display.php:2054 +msgid "click to delete this field" +msgstr "" + +#: ../form_display.php:2057 +msgid "Field ID" +msgstr "" + +#: ../form_display.php:2057 +msgid "click to edit this field" +msgstr "" + +#: ../form_display.php:2123 +msgid "This page is unsecured. Do not enter a real credit card number. Use this field only for testing purposes. " +msgstr "" + +#: ../form_display.php:2209 +msgid "Step" +msgstr "" + +#: ../form_display.php:2236 +msgid "Sorry. This form is no longer accepting new submissions." +msgstr "" + +#: ../form_display.php:2252 +msgid "Sorry. This form is no longer available." +msgstr "" + +#: ../form_list.php:72 +#: ../form_list.php:130 +#: ../form_list.php:214 +msgid "Inactive" +msgstr "" + +#: ../form_list.php:76 +#: ../form_list.php:129 +#: ../form_list.php:214 +msgid "Active" +msgstr "" + +#: ../form_list.php:90 +msgid "Ajax error while update form" +msgstr "" + +#: ../form_list.php:104 +#: ../form_list.php:235 +msgid "WARNING: You are about to delete this form and ALL entries associated with it. " +msgstr "" + +#: ../form_list.php:104 +#: ../form_list.php:108 +#: ../form_list.php:235 +msgid "\\'Cancel\\' to stop, \\'OK\\' to delete." +msgstr "" + +#: ../form_list.php:106 +msgid "Are you sure you would like to reset the Views for the selected forms? " +msgstr "" + +#: ../form_list.php:106 +msgid "\\'Cancel\\' to stop, \\'OK\\' to reset." +msgstr "" + +#: ../form_list.php:108 +msgid "WARNING: You are about to delete ALL entries associated with the selected forms. " +msgstr "" + +#: ../form_list.php:119 +#: ../gravityforms.php:728 +msgid "Edit Forms" +msgstr "" + +#: ../form_list.php:120 +msgid "Add New" +msgstr "" + +#: ../form_list.php:143 +#: ../form_list.php:286 +msgid "Reset Views" +msgstr "" + +#: ../form_list.php:144 +#: ../form_list.php:287 +msgid "Delete Entries" +msgstr "" + +#: ../form_list.php:170 +#: ../form_list.php:188 +msgid "Id" +msgstr "" + +#: ../form_list.php:172 +#: ../form_list.php:190 +msgid "Views" +msgstr "" + +#: ../form_list.php:174 +#: ../form_list.php:192 +msgid "Conversion" +msgstr "" + +#: ../form_list.php:227 +msgid "View entries generated by this form" +msgstr "" + +#: ../form_list.php:229 +msgid "Edit notifications sent by this form" +msgstr "" + +#: ../form_list.php:232 +msgid "Duplicate this form" +msgstr "" + +#: ../form_list.php:269 +#, php-format +msgid "You don't have any forms. Let's go %screate one%s!" +msgstr "" + +#: ../gravityforms.php:724 +msgid "Update Available" +msgstr "" + +#: ../gravityforms.php:725 +#: ../gravityforms.php:989 +msgid "Forms" +msgstr "" + +#: ../gravityforms.php:739 +#: ../gravityforms.php:929 +msgid "Settings" +msgstr "" + +#: ../gravityforms.php:741 +msgid "Import/Export" +msgstr "" + +#: ../gravityforms.php:744 +msgid "Updates" +msgstr "" + +#: ../gravityforms.php:745 +#: ../help.php:39 +msgid "Add-Ons" +msgstr "" + +#: ../gravityforms.php:854 +msgid "Add Gravity Form" +msgstr "" + +#: ../gravityforms.php:865 +msgid "Please select a form" +msgstr "" + +#: ../gravityforms.php:885 +msgid "Insert A Form" +msgstr "" + +#: ../gravityforms.php:887 +msgid "Select a form below to add it to your post or page." +msgstr "" + +#: ../gravityforms.php:892 +msgid "Select a Form" +msgstr "" + +#: ../gravityforms.php:902 +msgid "Can't find your form? Make sure it is active." +msgstr "" + +#: ../gravityforms.php:905 +msgid "Display form title" +msgstr "" + +#: ../gravityforms.php:906 +msgid "Display form description" +msgstr "" + +#: ../gravityforms.php:907 +msgid "Enable AJAX" +msgstr "" + +#: ../gravityforms.php:944 +msgid "There is a new version of Gravity Forms available." +msgstr "" + +#: ../gravityforms.php:944 +#, php-format +msgid "View version %s Details" +msgstr "" + +#: ../gravityforms.php:945 +msgid "Register your copy of Gravity Forms to receive access to automatic upgrades and support. Need a license key? Purchase one now." +msgstr "" + +#: ../gravityforms.php:974 +msgid "Oops!! Something went wrong.
              Please try again or contact us." +msgstr "" + +#: ../gravityforms.php:1016 +#: ../gravityforms.php:1019 +msgid "View All Entries" +msgstr "" + +#: ../gravityforms.php:1018 +#, php-format +msgid "Last Entry: %s" +msgstr "" + +#: ../gravityforms.php:1029 +msgid "View All Forms" +msgstr "" + +#: ../gravityforms.php:1036 +#, php-format +msgid "You don't have any forms. Let's go %s create one %s!" +msgstr "" + +#: ../gravityforms.php:1066 +#, php-format +msgid "There is an update available for Gravity Forms. %sView Details%s %s" +msgstr "" + +#: ../gravityforms.php:1069 +msgid "Dismiss" +msgstr "" + +#: ../gravityforms.php:1168 +msgid "Add-On browser is currently unavailable. Please try again later." +msgstr "" + +#: ../gravityforms.php:1300 +msgid "There was an error while resending the notifications." +msgstr "" + +#: ../gravityforms.php:1312 +msgid "The Send To email address provided is not valid." +msgstr "" + +#: ../gravityforms.php:1535 +msgid "Form Editor" +msgstr "" + +#: ../gravityforms.php:1562 +msgid "Switch Form" +msgstr "" + +#: ../help.php:13 +msgid "Gravity Forms Help" +msgstr "" + +#: ../help.php:17 +msgid "IMPORTANT NOTICE: We do not provide support via e-mail. Please post any support queries in our support forums." +msgstr "" + +#: ../help.php:19 +msgid "Please review the plugin documentation and frequently asked questions (FAQ) first. If you still can't find the answer you need visit our support forums where we will be happy to answer your questions and assist you with any problems. Please note: If you have not purchased a license from us, you won't have access to these help resources." +msgstr "" + +#: ../help.php:24 +msgid "Gravity Forms Documentation" +msgstr "" + +#: ../help.php:25 +msgid "Note: Only licensed Gravity Forms customers are granted access to the documentation section." +msgstr "" + +#: ../help.php:33 +msgid "Documentation (please select a topic)" +msgstr "" + +#: ../help.php:34 +msgid "Getting Started" +msgstr "" + +#: ../help.php:36 +msgid "Using Gravity Forms" +msgstr "" + +#: ../help.php:37 +msgid "Design and Layout" +msgstr "" + +#: ../help.php:38 +msgid "Developer Docs" +msgstr "" + +#: ../help.php:40 +msgid "How To" +msgstr "" + +#: ../help.php:44 +#: ../help.php:70 +#: ../help.php:120 +#: ../help.php:145 +msgid "GO" +msgstr "" + +#: ../help.php:53 +msgid "Gravity Forms FAQ" +msgstr "" + +#: ../help.php:54 +msgid "Please Note: Only licensed Gravity Forms customers are granted access to the FAQ section." +msgstr "" + +#: ../help.php:62 +msgid "FAQ (please select a topic)" +msgstr "" + +#: ../help.php:63 +msgid "Installation Questions" +msgstr "" + +#: ../help.php:64 +msgid "Formatting/Styling Questions" +msgstr "" + +#: ../help.php:65 +msgid "Notification Questions" +msgstr "" + +#: ../help.php:66 +msgid "General Questions" +msgstr "" + +#: ../help.php:80 +msgid "Gravity Forms Support Forums" +msgstr "" + +#: ../help.php:81 +msgid "Please Note: Only licensed Gravity Forms customers are granted access to the support forums." +msgstr "" + +#: ../help.php:89 +msgid "Forums (please select a topic)" +msgstr "" + +#: ../help.php:90 +msgid "General" +msgstr "" + +#: ../help.php:91 +msgid "News & Announcements" +msgstr "" + +#: ../help.php:92 +msgid "Pre-Sale Questions" +msgstr "" + +#: ../help.php:94 +msgid "Feature Requests" +msgstr "" + +#: ../help.php:95 +msgid "Testimonials" +msgstr "" + +#: ../help.php:97 +msgid "Plugin Support" +msgstr "" + +#: ../help.php:98 +#: ../help.php:140 +msgid "Gravity Forms" +msgstr "" + +#: ../help.php:102 +msgid "Gravity Forms MailChimp Add-On" +msgstr "" + +#: ../help.php:103 +msgid "Gravity Forms Campaign Monitor Add-On" +msgstr "" + +#: ../help.php:108 +msgid "Gravity Forms FreshBooks Add-On" +msgstr "" + +#: ../help.php:109 +msgid "Gravity Forms PayPal Add-On" +msgstr "" + +#: ../help.php:110 +msgid "Gravity Forms User Registration Add-On" +msgstr "" + +#: ../help.php:130 +msgid "Gravity Forms Downloads" +msgstr "" + +#: ../help.php:131 +msgid "Please Note: Only licensed Gravity Forms customers are granted access to the downloads section." +msgstr "" + +#: ../help.php:139 +msgid "Downloads (please select a product)" +msgstr "" + +#: ../help.php:141 +msgid "Gravity Forms Add-Ons" +msgstr "" + +#: ../help.php:156 +msgid "Gravity Forms Tutorials & Resources" +msgstr "" + +#: ../help.php:157 +msgid "Please note: The Gravity Forms support team does not provide support for third party scripts, widgets, etc." +msgstr "" + +#: ../js.php:6 +msgid "Delete this custom choice list? 'OK' to delete, 'Cancel' to abort." +msgstr "" + +#: ../js.php:20 +msgid "Item has been deleted." +msgstr "" + +#: ../js.php:27 +msgid "Please enter name." +msgstr "" + +#: ../js.php:31 +msgid "This custom choice name is already in use. Please enter another name." +msgstr "" + +#: ../js.php:50 +msgid "Item has been saved." +msgstr "" + +#: ../js.php:61 +#: ../js.php:221 +msgid "To use conditional logic, please create a drop down, checkbox or radio button field." +msgstr "" + +#: ../js.php:113 +msgid "Completed" +msgstr "" + +#: ../js.php:131 +msgid "Close" +msgstr "" + +#: ../js.php:147 +msgid "Select a category" +msgstr "" + +#: ../js.php:160 +msgid "Parameter Name:" +msgstr "" + +#: ../js.php:205 +msgid "Deleted Field" +msgstr "" + +#: ../js.php:242 +msgid "Column 1" +msgstr "" + +#: ../js.php:242 +msgid "Column 2" +msgstr "" + +#: ../js.php:242 +msgid "Column 3" +msgstr "" + +#: ../js.php:258 +msgid "The form title you have entered is already taken. Please enter an unique form title" +msgstr "" + +#: ../js.php:264 +msgid "Please enter a Title for this form. When adding the form to a page or post, you will have the option to hide the title." +msgstr "" + +#: ../js.php:275 +msgid "Your form currently has one ore more pages without any fields in it. Blank pages are a result of Page Breaks that are positioned as the first or last field in the form or right after to each other. Please adjust your Page Breaks and try again." +msgstr "" + +#: ../js.php:283 +msgid "" +"Your form currently has a product field with a blank label. \\n" +"Please enter a label for all product fields." +msgstr "" + +#: ../js.php:292 +msgid "" +"Your form currently has an option field without a product field.\\n" +"You must add a product field to your form." +msgstr "" + +#: ../js.php:329 +msgid "Ajax error while saving form" +msgstr "" + +#: ../js.php:338 +msgid "Warning! Deleting this field will also delete all entry data associated with it. \\'Cancel\\' to stop. \\'OK\\' to delete" +msgstr "" + +#: ../js.php:386 +msgid "HTML Block" +msgstr "" + +#: ../js.php:420 +#: ../js.php:433 +#: ../js.php:445 +#: ../js.php:662 +msgid "Untitled" +msgstr "" + +#: ../js.php:423 +#: ../js.php:437 +#: ../js.php:438 +#: ../js.php:449 +#: ../js.php:450 +msgid "First Choice" +msgstr "" + +#: ../js.php:423 +#: ../js.php:437 +#: ../js.php:438 +#: ../js.php:449 +#: ../js.php:450 +msgid "Second Choice" +msgstr "" + +#: ../js.php:423 +#: ../js.php:437 +#: ../js.php:438 +#: ../js.php:449 +#: ../js.php:450 +msgid "Third Choice" +msgstr "" + +#: ../js.php:458 +msgid "State / Province" +msgstr "" + +#: ../js.php:468 +msgid "Card Type" +msgstr "" + +#: ../js.php:469 +msgid "Cardholder\\'s Name" +msgstr "" + +#: ../js.php:523 +msgid "Hidden Field" +msgstr "" + +#: ../js.php:527 +msgid "Post Title" +msgstr "" + +#: ../js.php:531 +msgid "Post Body" +msgstr "" + +#: ../js.php:535 +msgid "Post Excerpt" +msgstr "" + +#: ../js.php:540 +msgid "Post Tags" +msgstr "" + +#: ../js.php:547 +msgid "Post Custom Field" +msgstr "" + +#: ../js.php:550 +msgid "Post Image" +msgstr "" + +#: ../js.php:558 +msgid "Captcha" +msgstr "" + +#: ../js.php:566 +msgid "Product Name" +msgstr "" + +#: ../js.php:608 +msgid "First Option" +msgstr "" + +#: ../js.php:608 +msgid "Second Option" +msgstr "" + +#: ../js.php:608 +msgid "Third Option" +msgstr "" + +#: ../js.php:619 +msgid "Donation" +msgstr "" + +#: ../js.php:693 +msgid "Only one reCAPTCHA field can be added to the form." +msgstr "" + +#: ../js.php:704 +msgid "Only one Shipping field can be added to the form" +msgstr "" + +#: ../js.php:711 +msgid "Only one Post Content field can be added to the form" +msgstr "" + +#: ../js.php:717 +msgid "Only one Post Title field can be added to the form" +msgstr "" + +#: ../js.php:723 +msgid "Only one Post Excerpt field can be added to the form" +msgstr "" + +#: ../js.php:729 +msgid "Only one credit card field can be added to the form" +msgstr "" + +#: ../js.php:752 +msgid "Ajax error while adding field" +msgstr "" + +#: ../js.php:768 +msgid "Ajax error while duplicating field" +msgstr "" + +#: ../js.php:793 +msgid "Ajax error while changing input type" +msgstr "" + +#: ../js.php:812 +msgid "this field if" +msgstr "" + +#: ../js.php:814 +msgid "this page" +msgstr "" + +#: ../js.php:816 +msgid "this form button" +msgstr "" + +#: ../js.php:818 +msgid "Show" +msgstr "" + +#: ../js.php:818 +msgid "Hide" +msgstr "" + +#: ../js.php:820 +msgid "Any" +msgstr "" + +#: ../js.php:821 +msgid "of the following match:" +msgstr "" + +#: ../js.php:833 +#: ../notification.php:180 +#: ../notification.php:449 +msgid "is" +msgstr "" + +#: ../js.php:833 +#: ../notification.php:181 +#: ../notification.php:450 +msgid "is not" +msgstr "" + +#: ../js.php:833 +#: ../notification.php:182 +#: ../notification.php:451 +msgid "greater than" +msgstr "" + +#: ../js.php:833 +#: ../notification.php:183 +#: ../notification.php:452 +msgid "less than" +msgstr "" + +#: ../js.php:833 +#: ../notification.php:184 +#: ../notification.php:453 +msgid "contains" +msgstr "" + +#: ../js.php:833 +#: ../notification.php:185 +#: ../notification.php:454 +msgid "starts with" +msgstr "" + +#: ../js.php:833 +#: ../notification.php:186 +#: ../notification.php:455 +msgid "ends with" +msgstr "" + +#: ../js.php:871 +msgid "add another choice" +msgstr "" + +#: ../js.php:874 +msgid "remove this choice" +msgstr "" + +#: ../js.php:905 +msgid "Select a field" +msgstr "" + +#: ../js.php:905 +msgid "User IP Address" +msgstr "" + +#: ../notification.php:177 +#: ../notification.php:446 +msgid "Send to" +msgstr "" + +#: ../notification.php:178 +#: ../notification.php:447 +msgid "if" +msgstr "" + +#: ../notification.php:325 +#: ../notification.php:893 +msgid "Enter value" +msgstr "" + +#: ../notification.php:381 +msgid "Notification to Administrator" +msgstr "" + +#: ../notification.php:386 +msgid "Enable email notification to administrators" +msgstr "" + +#: ../notification.php:389 +msgid "Enter a message below to receive a notification email when users submit this form." +msgstr "" + +#: ../notification.php:398 +msgid "Send To Email" +msgstr "" + +#: ../notification.php:409 +msgid "Routing" +msgstr "" + +#: ../notification.php:417 +msgid "Please enter a valid email address" +msgstr "" + +#: ../notification.php:428 +msgid "To use notification routing, your form must have a field supported by conditional logic." +msgstr "" + +#: ../notification.php:467 +msgid "Please enter a valid email address for all highlighted routing rules above." +msgstr "" + +#: ../notification.php:479 +#: ../notification.php:663 +msgid "From Name" +msgstr "" + +#: ../notification.php:486 +#: ../notification.php:511 +#: ../notification.php:537 +msgid "OR" +msgstr "" + +#: ../notification.php:488 +msgid "Select a name field" +msgstr "" + +#: ../notification.php:504 +#: ../notification.php:670 +msgid "From Email" +msgstr "" + +#: ../notification.php:513 +#: ../notification.php:539 +msgid "Select an email field" +msgstr "" + +#: ../notification.php:530 +msgid "Reply To" +msgstr "" + +#: ../notification.php:555 +#: ../notification.php:684 +msgid "BCC" +msgstr "" + +#: ../notification.php:567 +#: ../notification.php:697 +msgid "Subject" +msgstr "" + +#: ../notification.php:575 +msgid "Please enter a subject for the notification email" +msgstr "" + +#: ../notification.php:586 +#: ../notification.php:716 +msgid "Message" +msgstr "" + +#: ../notification.php:598 +msgid "Please enter a message for the notification email" +msgstr "" + +#: ../notification.php:619 +msgid "Notification to User" +msgstr "" + +#: ../notification.php:630 +#, php-format +msgid "Your form does not have any %semail%s field." +msgstr "" + +#: ../notification.php:632 +#, php-format +msgid "Sending notifications to users require that the form has at least one email field. %sEdit your form%s" +msgstr "" + +#: ../notification.php:639 +msgid "Enable email notification to users" +msgstr "" + +#: ../notification.php:643 +msgid "Enter a message below to send users an automatic response when they submit this form." +msgstr "" + +#: ../notification.php:647 +msgid "Send To Field" +msgstr "" + +#: ../notification.php:677 +msgid "Reply To (optional)" +msgstr "" + +#: ../notification.php:705 +msgid "Please enter a subject for the user notification email" +msgstr "" + +#: ../notification.php:729 +msgid "Please enter a message for the user notification email" +msgstr "" + +#: ../notification.php:755 +msgid "Save Settings" +msgstr "" + +#: ../notification.php:768 +msgid "Notification Updated." +msgstr "" + +#: ../notification.php:775 +msgid "Notification could not be updated. Please enter all required information below." +msgstr "" + +#: ../preview.php:21 +msgid "You don't have adequate permission to preview forms." +msgstr "" + +#: ../preview.php:30 +#: ../preview.php:50 +msgid "Form Preview" +msgstr "" + +#: ../preview.php:50 +#: ../print-entry.php:57 +msgid "close window" +msgstr "" + +#: ../preview.php:52 +msgid "Note: This is a simple form preview. This form may display differently when added to your page based on inheritance from individual theme styles." +msgstr "" + +#: ../print-entry.php:21 +msgid "You don't have adequate permission to view entries." +msgstr "" + +#: ../print-entry.php:31 +msgid "Form Id and Lead Id are required parameters." +msgstr "" + +#: ../print-entry.php:57 +msgid "Print Preview" +msgstr "" + +#: ../select_columns.php:21 +msgid "Oops! We could not locate your form. Please try again." +msgstr "" + +#: ../select_columns.php:97 +msgid "Drag & drop to order and select which columns are displayed in the entries table." +msgstr "" + +#: ../select_columns.php:100 +msgid "Active Columns" +msgstr "" + +#: ../select_columns.php:115 +msgid "Inactive Columns" +msgstr "" + +#: ../settings.php:14 +msgid "Gravity Forms Settings" +msgstr "" + +#: ../settings.php:67 +msgid "You don't have adequate permission to edit settings." +msgstr "" + +#: ../settings.php:88 +msgid "Settings Updated" +msgstr "" + +#: ../settings.php:95 +msgid "You don't have adequate permission to uninstall Gravity Forms." +msgstr "" + +#: ../settings.php:120 +#, php-format +msgid "Gravity Forms have been successfully uninstalled. It can be re-activated from the %splugins page%s." +msgstr "" + +#: ../settings.php:130 +msgid "General Settings" +msgstr "" + +#: ../settings.php:133 +msgid "Support License Key" +msgstr "" + +#: ../settings.php:146 +msgid "The license key is used for access to automatic upgrades and support." +msgstr "" + +#: ../settings.php:150 +#: ../tooltips.php:131 +msgid "Output CSS" +msgstr "" + +#: ../settings.php:152 +#: ../settings.php:160 +#: ../settings.php:179 +msgid "Yes" +msgstr "" + +#: ../settings.php:153 +#: ../settings.php:161 +#: ../settings.php:180 +msgid "No" +msgstr "" + +#: ../settings.php:154 +msgid "Set this to No if you would like to disable the plugin from outputting the form CSS." +msgstr "" + +#: ../settings.php:158 +#: ../tooltips.php:132 +msgid "Output HTML5" +msgstr "" + +#: ../settings.php:162 +msgid "Set this to No if you would like to disable the plugin from outputting HTML5 form fields." +msgstr "" + +#: ../settings.php:167 +#: ../tooltips.php:133 +msgid "No-Conflict Mode" +msgstr "" + +#: ../settings.php:169 +msgid "On" +msgstr "" + +#: ../settings.php:170 +msgid "Off" +msgstr "" + +#: ../settings.php:171 +msgid "Set this to On to prevent extraneous scripts and styles from being printed on Gravity Forms admin pages, reducing conflicts with other plugins and themes." +msgstr "" + +#: ../settings.php:177 +#: ../tooltips.php:137 +msgid "Akismet Integration" +msgstr "" + +#: ../settings.php:181 +#: ../tooltips.php:137 +msgid "Protect your form entries from spam using Akismet." +msgstr "" + +#: ../settings.php:187 +#: ../tooltips.php:136 +msgid "Currency" +msgstr "" + +#: ../settings.php:212 +msgid "reCAPTCHA Settings" +msgstr "" + +#: ../settings.php:214 +msgid "Gravity Forms integrates with reCAPTCHA, a free CAPTCHA service that helps to digitize books while protecting your forms from spam bots. " +msgstr "" + +#: ../settings.php:214 +msgid "Read more about reCAPTCHA" +msgstr "" + +#: ../settings.php:220 +msgid "reCAPTCHA Public Key" +msgstr "" + +#: ../settings.php:223 +#: ../settings.php:230 +msgid "Required only if you decide to use the reCAPTCHA field." +msgstr "" + +#: ../settings.php:223 +#: ../settings.php:230 +#, php-format +msgid "%sSign up%s for a free account to get the key." +msgstr "" + +#: ../settings.php:227 +msgid "reCAPTCHA Private Key" +msgstr "" + +#: ../settings.php:265 +msgid "Installation Status" +msgstr "" + +#: ../settings.php:269 +msgid "PHP Version" +msgstr "" + +#: ../settings.php:283 +msgid "Gravity Forms requires PHP 5 or above." +msgstr "" + +#: ../settings.php:290 +msgid "MySQL Version" +msgstr "" + +#: ../settings.php:304 +msgid "Gravity Forms requires MySQL 5 or above." +msgstr "" + +#: ../settings.php:311 +msgid "WordPress Version" +msgstr "" + +#: ../settings.php:325 +msgid "Gravity Forms requires WordPress 3.0 or above." +msgstr "" + +#: ../settings.php:332 +msgid "Gravity Forms Version" +msgstr "" + +#: ../settings.php:344 +#, php-format +msgid "New version %s available. Automatic upgrade available on the %splugins page%s" +msgstr "" + +#: ../settings.php:357 +#: ../settings.php:360 +msgid "Uninstall Gravity Forms" +msgstr "" + +#: ../settings.php:358 +msgid "Warning" +msgstr "" + +#: ../settings.php:358 +msgid "This operation deletes ALL Gravity Forms data. If you continue, You will not be able to retrieve or restore your forms or entries." +msgstr "" + +#: ../settings.php:360 +msgid "Warning! ALL Gravity Forms data, including form entries will be deleted. This cannot be undone. \\'OK\\' to delete, \\'Cancel\\' to stop" +msgstr "" + +#: ../tooltips.php:17 +msgid "Send To Email Address" +msgstr "" + +#: ../tooltips.php:17 +msgid "Enter the email address you would like the administrator notification email sent to." +msgstr "" + +#: ../tooltips.php:18 +#: ../tooltips.php:44 +msgid "Disable Auto-Formatting" +msgstr "" + +#: ../tooltips.php:18 +msgid "When enabled, auto-formatting will insert paragraph breaks automatically. Disable auto-formatting when using HTML to create email notification content." +msgstr "" + +#: ../tooltips.php:19 +msgid "Allows notification to be sent to different email addresses depending on values selected in the form." +msgstr "" + +#: ../tooltips.php:20 +#: ../tooltips.php:26 +msgid "From Email Address" +msgstr "" + +#: ../tooltips.php:20 +msgid "Enter the email address you would like the administrator notification email sent from, or select the email from available email form fields." +msgstr "" + +#: ../tooltips.php:21 +msgid "Enter the name you would like the administrator notification email sent from, or select the name from available name fields." +msgstr "" + +#: ../tooltips.php:22 +msgid "Enter the email address you would like to be used as the reply to address for the administrator notification email." +msgstr "" + +#: ../tooltips.php:23 +#: ../tooltips.php:24 +#: ../tooltips.php:25 +msgid "Blind Carbon Copy Addresses" +msgstr "" + +#: ../tooltips.php:23 +msgid "Enter a comma separated list of email addresses you would like to receive a BCC of the administrator notification email." +msgstr "" + +#: ../tooltips.php:24 +msgid "Select the email form field that the user notification email should be sent to." +msgstr "" + +#: ../tooltips.php:25 +msgid "Enter a comma separated list of email addresses you would like to receive a BCC of the user notification email." +msgstr "" + +#: ../tooltips.php:26 +msgid "Enter the email address you would like the user notification email sent from." +msgstr "" + +#: ../tooltips.php:27 +msgid "Enter the name you would like the user notification email sent from." +msgstr "" + +#: ../tooltips.php:28 +msgid "Reply To Address" +msgstr "" + +#: ../tooltips.php:28 +msgid "Enter the email address you would like to be used as the reply to address for the user notification email." +msgstr "" + +#: ../tooltips.php:29 +msgid "Limit Form Activity" +msgstr "" + +#: ../tooltips.php:29 +msgid "Limit the number of entries a form can generate and/or schedule a time period the form is active." +msgstr "" + +#: ../tooltips.php:30 +msgid "Limit Number of Entries" +msgstr "" + +#: ../tooltips.php:30 +msgid "Enter a number in the input box below to limit the number of entries allowed for this form. The form will become inactive when that number is reached." +msgstr "" + +#: ../tooltips.php:31 +msgid "Schedule Form" +msgstr "" + +#: ../tooltips.php:31 +msgid "Schedule a time period the form is active." +msgstr "" + +#: ../tooltips.php:32 +msgid "Enable Anti-spam honeypot" +msgstr "" + +#: ../tooltips.php:32 +msgid "Enables the honeypot spam protection technique, which is an alternative to the reCAPTCHA field." +msgstr "" + +#: ../tooltips.php:33 +msgid "Enable Animation" +msgstr "" + +#: ../tooltips.php:33 +msgid "Check this option to enable a sliding animation when displaying/hiding conditional logic fields." +msgstr "" + +#: ../tooltips.php:34 +msgid "Enter the title of your form." +msgstr "" + +#: ../tooltips.php:35 +msgid "Form Description" +msgstr "" + +#: ../tooltips.php:35 +msgid "Enter a description for your form. This may be used for user instructions." +msgstr "" + +#: ../tooltips.php:36 +msgid "Form Label Placement" +msgstr "" + +#: ../tooltips.php:36 +msgid "Select the label placement. Labels can be top aligned above a field, left aligned to the left of a field, or right aligned to the left of a field." +msgstr "" + +#: ../tooltips.php:37 +msgid "Select the description placement. Descriptions can be placed above the field inputs or below the field inputs." +msgstr "" + +#: ../tooltips.php:38 +msgid "Form Button Text" +msgstr "" + +#: ../tooltips.php:38 +msgid "Enter the text you would like to appear on the form submit button." +msgstr "" + +#: ../tooltips.php:39 +msgid "Form Button Image" +msgstr "" + +#: ../tooltips.php:39 +msgid "Enter the path to an image you would like to use as the form submit button." +msgstr "" + +#: ../tooltips.php:40 +msgid "Form CSS Class Name" +msgstr "" + +#: ../tooltips.php:40 +msgid "Enter the CSS class name you would like to use in order to override the default styles for this form." +msgstr "" + +#: ../tooltips.php:41 +msgid "Enter the URL of a custom image to replace the default 'add item' icon." +msgstr "" + +#: ../tooltips.php:42 +msgid "Enter the URL of a custom image to replace the default 'delete item' icon." +msgstr "" + +#: ../tooltips.php:43 +msgid "Confirmation Message Text" +msgstr "" + +#: ../tooltips.php:43 +msgid "Enter the text you would like the user to see on the confirmation page of this form." +msgstr "" + +#: ../tooltips.php:44 +msgid "When enabled, auto-formatting will insert paragraph breaks automatically. Disable auto-formatting when using HTML to create the confirmation content." +msgstr "" + +#: ../tooltips.php:45 +msgid "Redirect Form to Page" +msgstr "" + +#: ../tooltips.php:45 +msgid "Select the page you would like the user to be redirected to after they have submitted the form." +msgstr "" + +#: ../tooltips.php:46 +msgid "Redirect Form to URL" +msgstr "" + +#: ../tooltips.php:46 +msgid "Enter the URL of the webpage you would like the user to be redirected to after they have submitted the form." +msgstr "" + +#: ../tooltips.php:47 +msgid "Pass Data Via Query String" +msgstr "" + +#: ../tooltips.php:47 +msgid "To pass field data to the confirmation page, build a Query String using the 'Insert Merge Tag' drop down. ..more info on querystrings »" +msgstr "" + +#: ../tooltips.php:48 +msgid "Enter the label of the form field. This is the field title the user will see when filling out the form." +msgstr "" + +#: ../tooltips.php:49 +msgid "Enter the label for this HTML block. It will help you identify your HTML blocks in the form editor, but it will not be displayed on the form." +msgstr "" + +#: ../tooltips.php:50 +msgid "Disable Default Margins" +msgstr "" + +#: ../tooltips.php:50 +msgid "When enabled, margins are added to properly align the HTML content with other form fields." +msgstr "" + +#: ../tooltips.php:51 +msgid "Recaptcha Theme" +msgstr "" + +#: ../tooltips.php:51 +msgid "Select the visual theme for the reCAPTCHA field the available options to better match your site design." +msgstr "" + +#: ../tooltips.php:52 +msgid "CAPTCHA Type" +msgstr "" + +#: ../tooltips.php:52 +msgid "Select the type of CAPTCHA you would like to use." +msgstr "" + +#: ../tooltips.php:53 +msgid "Select the custom field name from available existing custom fields, or enter a new custom field name." +msgstr "" + +#: ../tooltips.php:54 +msgid "Field type" +msgstr "" + +#: ../tooltips.php:54 +msgid "Select the type of field from the available form fields." +msgstr "" + +#: ../tooltips.php:55 +msgid "Enter the maximum number of characters that this field is allowed to have." +msgstr "" + +#: ../tooltips.php:56 +msgid "Enter the maximum number of rows that users are allowed to add." +msgstr "" + +#: ../tooltips.php:57 +msgid "Select the type of inputs you would like to use for the date field. Date Picker will let users select a date from a calendar. Date Field will let users free type the date." +msgstr "" + +#: ../tooltips.php:58 +msgid "Select the type of address you would like to use." +msgstr "" + +#: ../tooltips.php:59 +msgid "Default State" +msgstr "" + +#: ../tooltips.php:59 +msgid "Select the state you would like to be selected by default when the form gets displayed." +msgstr "" + +#: ../tooltips.php:60 +msgid "Default Province" +msgstr "" + +#: ../tooltips.php:60 +msgid "Select the province you would like to be selected by default when the form gets displayed." +msgstr "" + +#: ../tooltips.php:61 +msgid "Select the country you would like to be selected by default when the form gets displayed." +msgstr "" + +#: ../tooltips.php:62 +msgid "Hide Country" +msgstr "" + +#: ../tooltips.php:62 +msgid "For addresses that only apply to one country, you can choose to not display the country drop down. Entries will still be recorded with the selected country." +msgstr "" + +#: ../tooltips.php:63 +msgid "Hide Address Line 2" +msgstr "" + +#: ../tooltips.php:63 +msgid "Check this box to prevent the extra address input (Address Line 2) from being displayed in the form." +msgstr "" + +#: ../tooltips.php:64 +msgid "Hide State Field" +msgstr "" + +#: ../tooltips.php:64 +msgid "Check this box to prevent the State field from being displayed in the form." +msgstr "" + +#: ../tooltips.php:65 +msgid "Hide Province Field" +msgstr "" + +#: ../tooltips.php:65 +msgid "Check this box to prevent Province field from being displayed in the form." +msgstr "" + +#: ../tooltips.php:66 +msgid "Hide State/Province/Region" +msgstr "" + +#: ../tooltips.php:66 +msgid "Check this box to prevent the State/Province/Region from being displayed in the form." +msgstr "" + +#: ../tooltips.php:67 +msgid "Field Name Format" +msgstr "" + +#: ../tooltips.php:67 +msgid "Select the format you would like to use for the Name field. There are 3 options, Normal which includes First and Last Name, Extended which adds Prefix and Suffix, or Simple which is a single input field." +msgstr "" + +#: ../tooltips.php:68 +msgid "Select the format of numbers that are allowed in this field. You have the option to use a comma or a dot as the decimal separator." +msgstr "" + +#: ../tooltips.php:69 +msgid "Check this box to prevent this field from being displayed in a non-secure page (i.e. not https://). It will redirect the page to the same URL, but starting with https:// instead. This option requires a properly configured SSL certificate." +msgstr "" + +#: ../tooltips.php:70 +msgid "Select the style you would like to use for the credit card icons." +msgstr "" + +#: ../tooltips.php:71 +msgid "Field Date Format" +msgstr "" + +#: ../tooltips.php:71 +msgid "Select the format you would like to use for the date input. Available options are MM/DD/YYYY and DD/MM/YYYY." +msgstr "" + +#: ../tooltips.php:72 +msgid "Select the format you would like to use for the time field. Available options are 12 hour (i.e. 8:30 pm) and 24 hour (i.e. 20:30)." +msgstr "" + +#: ../tooltips.php:73 +msgid "Allowed File Extensions" +msgstr "" + +#: ../tooltips.php:73 +msgid "Enter that allowed file extensions for file uploads. This will limit what type of files a user may upload." +msgstr "" + +#: ../tooltips.php:74 +msgid "Phone Number Format" +msgstr "" + +#: ../tooltips.php:74 +msgid "Select the format you would like to use for the phone input. Available options are domestic US/CANADA style phone number and international long format phone number." +msgstr "" + +#: ../tooltips.php:75 +msgid "Field Description" +msgstr "" + +#: ../tooltips.php:75 +msgid "Enter the description for the form field. This will be displayed to the user and provide some direction on how the field should be filled out or selected." +msgstr "" + +#: ../tooltips.php:76 +msgid "Required Field" +msgstr "" + +#: ../tooltips.php:76 +msgid "Select this option to make the form field required. A required field will prevent the form from being submitted if it is not filled out or selected." +msgstr "" + +#: ../tooltips.php:77 +msgid "Select this option to limit user input to unique values only. This will require that a value entered in a field does not currently exist in the entry database for that field." +msgstr "" + +#: ../tooltips.php:78 +msgid "Number Range" +msgstr "" + +#: ../tooltips.php:78 +msgid "Enter the minimum and maximum values for this form field. This will require that the value entered by the user must fall within this range." +msgstr "" + +#: ../tooltips.php:79 +msgid "Enabling caculations will allow the value of this field to be dynamically calculated based on a mathematical formula." +msgstr "" + +#: ../tooltips.php:80 +msgid "Specify a mathematical formula. The result of this formula will be dynamically populated as the value for this field." +msgstr "" + +#: ../tooltips.php:81 +msgid "Specify how many decimal places the number should be rounded to." +msgstr "" + +#: ../tooltips.php:82 +msgid "Enter the admin label of the form field. Entering a value in this field will override the Field Label when displayed in the Gravity Forms administration tool." +msgstr "" + +#: ../tooltips.php:83 +msgid "Select a form field size from the available options. This will set the width of the field." +msgstr "" + +#: ../tooltips.php:84 +msgid "If you would like to pre-populate the value of a field, enter it here." +msgstr "" + +#: ../tooltips.php:85 +msgid "If you would like to override the default error validation for a field, enter it here. This message will be displayed if there is an error with this field when the user submits the form." +msgstr "" + +#: ../tooltips.php:86 +msgid "reCaptcha Language" +msgstr "" + +#: ../tooltips.php:86 +msgid "Select the language you would like to use for the reCAPTCHA display from the available options." +msgstr "" + +#: ../tooltips.php:87 +msgid "Enter the CSS class name you would like to use in order to override the default styles for this field." +msgstr "" + +#: ../tooltips.php:88 +msgid "Select the visibility for this field. Field visibility set to Everyone will be visible by the user submitting the form. Form field visibility set to Admin Only will only be visible within the Gravity Forms administration tool.

              Setting a field to Admin Only is useful for creating fields that can be used to set a status or priority level on submitted entries." +msgstr "" + +#: ../tooltips.php:89 +msgid "Field Choices" +msgstr "" + +#: ../tooltips.php:89 +msgid "Add Choices to this field. You can mark each choice as checked by default by using the radio/checkbox fields on the left." +msgstr "" + +#: ../tooltips.php:90 +msgid "Enable Choice Values" +msgstr "" + +#: ../tooltips.php:90 +msgid "Check this option to specify a value for each choice. Choice values are not displayed to the user viewing the form, but are accessible to administrators when viewing the entry." +msgstr "" + +#: ../tooltips.php:91 +#: ../tooltips.php:105 +msgid "Conditional Logic" +msgstr "" + +#: ../tooltips.php:91 +msgid "Create rules to dynamically display or hide this field based on values from another field" +msgstr "" + +#: ../tooltips.php:92 +msgid "Enable Enhanced UI" +msgstr "" + +#: ../tooltips.php:92 +msgid "By selecting this option, the Chosen jQuery script will be applied to this field, enabling search capabilities to Drop Down fields and a more user-friendly interface for Multi Select fields." +msgstr "" + +#: ../tooltips.php:93 +msgid "\"Other\" Choice" +msgstr "" + +#: ../tooltips.php:93 +msgid "Check this option to add a text input as the final choice of your radio button field. This allows the user to specify a value that is not a predefined choice." +msgstr "" + +#: ../tooltips.php:94 +msgid "Check this option to require a user to be logged in to view this form" +msgstr "" + +#: ../tooltips.php:95 +msgid "Enter a message to be displayed to users who are not logged in (shortcodes and HTML are supported)" +msgstr "" + +#: ../tooltips.php:96 +msgid "Page Conditional Logic" +msgstr "" + +#: ../tooltips.php:96 +msgid "Create rules to dynamically display or hide this page based on values from another field" +msgstr "" + +#: ../tooltips.php:97 +msgid "Select which type of visual progress indicator you would like to display. Progress Bar, Steps or None" +msgstr "" + +#: ../tooltips.php:98 +msgid "Progress Bar Style" +msgstr "" + +#: ../tooltips.php:98 +msgid "Select which progress bar style you would like to use. Select custom to choose your own text and background color" +msgstr "" + +#: ../tooltips.php:99 +msgid "Name each of the pages on your form. Page names are displayed with the selected progress indicator" +msgstr "" + +#: ../tooltips.php:100 +msgid "Next Button Text" +msgstr "" + +#: ../tooltips.php:100 +msgid "Enter the text you would like to appear on the page next button" +msgstr "" + +#: ../tooltips.php:101 +msgid "Next Button Image" +msgstr "" + +#: ../tooltips.php:101 +msgid "Enter the path to an image you would like to use as the page next button" +msgstr "" + +#: ../tooltips.php:102 +msgid "Previous Button Text" +msgstr "" + +#: ../tooltips.php:102 +msgid "Enter the text you would like to appear on the page previous button" +msgstr "" + +#: ../tooltips.php:103 +msgid "Previous Button Image" +msgstr "" + +#: ../tooltips.php:103 +msgid "Enter the path to an image you would like to use as the page previous button" +msgstr "" + +#: ../tooltips.php:104 +msgid "Next Button Conditional Logic" +msgstr "" + +#: ../tooltips.php:104 +msgid "Create rules to dynamically display or hide the page's Next Button based on values from another field" +msgstr "" + +#: ../tooltips.php:105 +msgid "Create rules to dynamically display or hide the submit button based on values from another field" +msgstr "" + +#: ../tooltips.php:106 +msgid "Select which categories are displayed. You can choose to display all of them or select individual ones." +msgstr "" + +#: ../tooltips.php:107 +msgid "Select the post status that will be used for the post that is created by the form entry." +msgstr "" + +#: ../tooltips.php:108 +msgid "Post Author" +msgstr "" + +#: ../tooltips.php:108 +msgid "Select the author that will be used for the post that is created by the form entry." +msgstr "" + +#: ../tooltips.php:109 +msgid "Select the post format that will be used for the post that is created by the form entry." +msgstr "" + +#: ../tooltips.php:110 +msgid "Post Content Template" +msgstr "" + +#: ../tooltips.php:110 +msgid "Check this option to format and insert merge tags into the Post Content." +msgstr "" + +#: ../tooltips.php:111 +msgid "Post Title Template" +msgstr "" + +#: ../tooltips.php:111 +msgid "Check this option to format and insert merge tags into the Post Title." +msgstr "" + +#: ../tooltips.php:112 +msgid "Select the category that will be used for the post that is created by the form entry." +msgstr "" + +#: ../tooltips.php:113 +msgid "Use Current User as Author" +msgstr "" + +#: ../tooltips.php:113 +msgid "Selecting this option will set the post author to the WordPress user that submitted the form." +msgstr "" + +#: ../tooltips.php:114 +msgid "Image Meta" +msgstr "" + +#: ../tooltips.php:114 +msgid "Select one or more image metadata field to be displayed along with the image upload field. They enable users to enter additional information about the uploaded image." +msgstr "" + +#: ../tooltips.php:115 +msgid "Check this option to set this image as the post's Featured Image." +msgstr "" + +#: ../tooltips.php:116 +msgid "Incoming Field Data" +msgstr "" + +#: ../tooltips.php:116 +msgid "Check this option to enable data to be passed to the form and pre-populate this field dynamically. Data can be passed via Query Strings, Shortcode and/or Hooks" +msgstr "" + +#: ../tooltips.php:117 +msgid "Enter the content (Text or HTML) to be displayed on the form." +msgstr "" + +#: ../tooltips.php:118 +msgid "Base Price" +msgstr "" + +#: ../tooltips.php:118 +msgid "Enter the base price for this product." +msgstr "" + +#: ../tooltips.php:119 +msgid "Disable Quantity" +msgstr "" + +#: ../tooltips.php:119 +msgid "Disables the quantity field. A quantity of 1 will be assumed or you can add a Quantity field to your form from the Pricing Fields." +msgstr "" + +#: ../tooltips.php:120 +msgid "Select which Product this field is tied to." +msgstr "" + +#: ../tooltips.php:121 +msgid "Input masks provide a visual guide allowing users to more easily enter data in a specific format such as dates and phone numbers." +msgstr "" + +#: ../tooltips.php:122 +msgid "Standard Fields provide basic form functionality." +msgstr "" + +#: ../tooltips.php:123 +msgid "Advanced Fields are for specific uses. They enable advanced formatting of regularly used fields such as Name, Email, Address, etc." +msgstr "" + +#: ../tooltips.php:124 +msgid "Post Fields allow you to add fields to your form that create Post Drafts in WordPress from the submitted data." +msgstr "" + +#: ../tooltips.php:125 +msgid "Pricing fields allow you to add fields to your form that calculate pricing for selling goods and services." +msgstr "" + +#: ../tooltips.php:126 +msgid "Export Selected Form" +msgstr "" + +#: ../tooltips.php:126 +msgid "Select the form you would like to export entry data from. You may only export data from one form at a time." +msgstr "" + +#: ../tooltips.php:127 +msgid "Export Selected Forms" +msgstr "" + +#: ../tooltips.php:127 +msgid "Select the forms you would like to export." +msgstr "" + +#: ../tooltips.php:128 +msgid "Export Selected Fields" +msgstr "" + +#: ../tooltips.php:128 +msgid "Select the fields from the select form you would like to export data from." +msgstr "" + +#: ../tooltips.php:129 +msgid "Export Date Range" +msgstr "" + +#: ../tooltips.php:129 +msgid "Select a date range. Setting a range will only export entries submitted during that date range. If no range is set, all entries will be exported." +msgstr "" + +#: ../tooltips.php:130 +msgid "Settings License Key" +msgstr "" + +#: ../tooltips.php:130 +msgid "Your Gravity Forms support license key is used to verify your support package, enable automatic updates and receive support." +msgstr "" + +#: ../tooltips.php:131 +msgid "Select yes or no to enable or disable CSS output. Setting this to no will disable the standard Gravity Forms CSS from being included in your theme." +msgstr "" + +#: ../tooltips.php:132 +msgid "Select yes or no to enable or disable HTML5 output. Setting this to no will disable the standard Gravity Forms HTML5 form field output." +msgstr "" + +#: ../tooltips.php:133 +msgid "Select On or Off to enable or disable no-conflict mode. Setting this to On will prevent extraneous scripts and styles from being printed on Gravity Forms admin pages, reducing conflicts with other plugins and themes." +msgstr "" + +#: ../tooltips.php:134 +msgid "reCaptcha Public Key" +msgstr "" + +#: ../tooltips.php:134 +msgid "Enter your reCAPTCHA Public Key, if you do not have a key you can register for one at the provided link. reCAPTCHA is a free service." +msgstr "" + +#: ../tooltips.php:135 +msgid "reCaptcha Private Key" +msgstr "" + +#: ../tooltips.php:135 +msgid "Enter your reCAPTCHA Private Key, if you do not have a key you can register for one at the provided link. reCAPTCHA is a free service." +msgstr "" + +#: ../tooltips.php:136 +msgid "Please select the currency for your location. Currency is used for pricing fields and price calculations." +msgstr "" + +#: ../tooltips.php:138 +msgid "Entries Conversion" +msgstr "" + +#: ../tooltips.php:138 +msgid "Conversion is the percentage of form views that generated an entry. If a form was viewed twice, and one entry was generated, the conversion will be 50%." +msgstr "" + +#: ../tooltips.php:139 +msgid "Tab Index Start Value" +msgstr "" + +#: ../tooltips.php:139 +#: ../widget.php:95 +msgid "If you have other forms on the page (i.e. Comments Form), specify a higher tabindex start value so that your Gravity Form does not end up with the same tabindices as your other forms. To disable the tabindex, enter 0 (zero)." +msgstr "" + +#: ../tooltips.php:140 +msgid "Override Notifications" +msgstr "" + +#: ../tooltips.php:140 +msgid "Enter a comma separated list of email addresses you would like to receive the selected notification emails." +msgstr "" + +#: ../tooltips.php:141 +msgid "Progress Bar Confirmation Display" +msgstr "" + +#: ../tooltips.php:141 +msgid "Check this box if you would like the progress bar to display with the confirmation text." +msgstr "" + +#: ../tooltips.php:142 +msgid "Progress Bar Completion Text" +msgstr "" + +#: ../tooltips.php:142 +msgid "Enter text to display at the top of the progress bar." +msgstr "" + +#: ../update.php:5 +msgid "You don't have permissions to view this page" +msgstr "" + +#: ../update.php:19 +msgid "Gravity Forms Updates" +msgstr "" + +#: ../update.php:32 +#, php-format +msgid "

              You can update to the latest version automatically or download the update and install it manually. %sUpdate Automatically%s %sDownload Update%s" +msgstr "" + +#: ../update.php:40 +msgid "Register your copy of Gravity Forms to receive access to automatic updates and support. Need a license key? Purchase one now." +msgstr "" + +#: ../update.php:53 +msgid "Your version of Gravity Forms is up to date." +msgstr "" + +#: ../widget.php:15 +msgid "Gravity Forms Widget" +msgstr "" + +#: ../widget.php:63 +msgid "Contact Us" +msgstr "" + +#: ../widget.php:88 +msgid "advanced options" +msgstr "" + +#: ../widget.php:92 +msgid "Disable script output" +msgstr "" + +#: ../widget.php:93 +msgid "Tab Index Start" +msgstr "" + diff --git a/wp-content/plugins/gravityforms/notification.php b/wp-content/plugins/gravityforms/notification.php new file mode 100644 index 0000000..b5bebda --- /dev/null +++ b/wp-content/plugins/gravityforms/notification.php @@ -0,0 +1,908 @@ + + + + + + + + +

              + + +
              + +

              + +

              :

              + + + +
              +
              +

              +
              +
              + +
              + onclick="if(this.checked) {jQuery('#form_notification_admin_container').show('slow');} else {jQuery('#form_notification_to').val(''); jQuery('#form_notification_admin_container').hide('slow');}"/> +
              ;"> +
              +


              + +
                + +
              • > + + + value="email" onclick="jQuery('#notification_to_routing_container').hide(); jQuery('#notification_to_email_container').show('slow');"/> + +    + value="routing" onclick="jQuery('#notification_to_email_container').hide(); jQuery('#notification_to_routing_container').show('slow');"/> + + +
                ;"> + " class="fieldwidth-1" /> + + + + +
                + +
                ;"> +
                + +
                +

                +
                + +
                > + " onkeyup="SetRouting();"/> + + + + add another email routing + 1 ){ ?> + remove this email routing + +
                + + + + + +
                + +
                +
              • +
              • + + "/> + + + + +
              • +
              • + + "/> + + + + +
              • + +
              • + + " class="fieldwidth-2" /> + + + + +
              • +
              • + + " class="fieldwidth-1" /> +
              • + +
              • > +
                + +
                + +
                + " class="fieldwidth-1" /> + + + + +
                +
              • + +
              • > +
                + + false)); + } + else{ + ?> + + + + +
                +
              • +
              • +
                + /> + +
                +
              • +
              +
              +
              +
              +
              +
              + +
              +

              +
              +
              +
              + +
              +

              ", ""); ?>

              +

              + ', ''); ?> +

              +
              + + + onclick="if(this.checked) {jQuery('#form_notification_user_container').show('slow');} else {jQuery('#form_notification_user_container').hide('slow');}"/> + +
              ;"> +
              +


              +
                +
              • + + +
              • +
              • + + " class="fieldwidth-2" /> +
              • +
              • + + " class="fieldwidth-2" /> +
              • +
              • + + " class="fieldwidth-2" /> +
              • +
              • + + " class="fieldwidth-1" /> +
              • + + +
              • > + + +
                + +
                + " class="fieldwidth-1" /> + + + + + +
              • + +
              • > +
                + + false)); + } + else{ + ?> + + + + +
                +
              • +
              • +
                + /> + +
                +
              • +
              +
              + +
              +
              +
              +
              + +
              +
              + '; + echo apply_filters("gform_save_notification_button", $notification_button); + ?> +
              +
              +
              +
              + +
              + +
              + +
              + +
              + " . $field_label . ""; + } + } + return $str; + } + + private static function get_field_values($i, $form, $field_id, $selected_value, $max_field_length = 16){ + if(empty($field_id)) + $field_id = self::get_first_routing_field($form); + + if(empty($field_id)) + return ""; + + $field = RGFormsModel::get_field($form, $field_id); + $is_any_selected = false; + $str = ""; + + if (!$field) + return ""; + + if ($field["type"] == "post_category" && rgar($field, "displayAllCategories") == true) + { + $str .= wp_dropdown_categories(array("class"=>"gfield_routing_select gfield_category_dropdown gfield_routing_value_dropdown", "orderby"=> "name", "id"=> "routing_value_" . $i, "selected"=>$selected_value, "hierarchical"=>true, "hide_empty"=>0, "echo"=>false)); + } + elseif (rgar($field,"choices")) { + $str .= ""; + } + else + { + //create a text field for fields that don't have choices (i.e text, textarea, number, email, etc...) + $str = ""; + } + + return $str; + } + + public static function get_post_category_values(){ + + $id = "routing_value_" . rgpost("ruleIndex"); + $selected = rgempty("selectedValue") ? 0 : rgpost("selectedValue"); + + $dropdown = wp_dropdown_categories(array("class"=>"gfield_routing_select gfield_routing_value_dropdown gfield_category_dropdown", "orderby"=> "name", "id"=> $id, "selected"=>$selected, "hierarchical"=>true, "hide_empty"=>0, "echo"=>false)); + die($dropdown); + } +} +?> \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/preview.php b/wp-content/plugins/gravityforms/preview.php new file mode 100644 index 0000000..2939ae8 --- /dev/null +++ b/wp-content/plugins/gravityforms/preview.php @@ -0,0 +1,63 @@ + + + + + + + <?php _e("Form Preview", "gravityforms") ?> + + + + + + +
              +
              +
              +
              +
              +
              +
              + +
              + + + \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/print-entry.php b/wp-content/plugins/gravityforms/print-entry.php new file mode 100644 index 0000000..a2f15e4 --- /dev/null +++ b/wp-content/plugins/gravityforms/print-entry.php @@ -0,0 +1,88 @@ + + + + + + + + + + + + + Print Preview : + <?php echo $form["title"] ?> : + <?php echo count($lead_ids) > 1 ? __("Entry # ", "gravityforms") . $lead_ids[0] : 'Bulk Print' ?> + + + + + + +
              +
              '; + + do_action("gform_print_entry_footer", $form, $lead); + } + + ?> +
              + + \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/recaptchalib.php b/wp-content/plugins/gravityforms/recaptchalib.php new file mode 100644 index 0000000..874eba4 --- /dev/null +++ b/wp-content/plugins/gravityforms/recaptchalib.php @@ -0,0 +1,277 @@ + $value ) + $req .= $key . '=' . urlencode( stripslashes($value) ) . '&'; + + // Cut the last '&' + $req=substr($req,0,strlen($req)-1); + return $req; +} + + + +/** + * Submits an HTTP POST to a reCAPTCHA server + * @param string $host + * @param string $path + * @param array $data + * @param int port + * @return array response + */ +function _recaptcha_http_post($host, $path, $data, $port = 80) { + + $req = _recaptcha_qsencode ($data); + + $http_request = "POST $path HTTP/1.0\r\n"; + $http_request .= "Host: $host\r\n"; + $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; + $http_request .= "Content-Length: " . strlen($req) . "\r\n"; + $http_request .= "User-Agent: reCAPTCHA/PHP\r\n"; + $http_request .= "\r\n"; + $http_request .= $req; + + $response = ''; + if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) { + die ('Could not open socket'); + } + + fwrite($fs, $http_request); + + while ( !feof($fs) ) + $response .= fgets($fs, 1160); // One TCP-IP packet + fclose($fs); + $response = explode("\r\n\r\n", $response, 2); + + return $response; +} + + + +/** + * Gets the challenge HTML (javascript and non-javascript version). + * This is called from the browser, and the resulting reCAPTCHA HTML widget + * is embedded within the HTML form it was called from. + * @param string $pubkey A public key for reCAPTCHA + * @param string $error The error given by reCAPTCHA (optional, default is null) + * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false) + + * @return string - The HTML to be embedded in the user's form. + */ +function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false, $lang='en') +{ + if ($pubkey == null || $pubkey == '') { + die ("To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create"); + } + + if ($use_ssl) { + $server = RECAPTCHA_API_SECURE_SERVER; + } else { + $server = RECAPTCHA_API_SERVER; + } + + $errorpart = ""; + if ($error) { + $errorpart = "&error=" . $error; + } + return ' + + '; +} + + + + +/** + * A ReCaptchaResponse is returned from recaptcha_check_answer() + */ +class ReCaptchaResponse { + var $is_valid; + var $error; +} + + +/** + * Calls an HTTP POST function to verify if the user's guess was correct + * @param string $privkey + * @param string $remoteip + * @param string $challenge + * @param string $response + * @param array $extra_params an array of extra variables to post to the server + * @return ReCaptchaResponse + */ +function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array()) +{ + if ($privkey == null || $privkey == '') { + die ("To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create"); + } + + if ($remoteip == null || $remoteip == '') { + die ("For security reasons, you must pass the remote ip to reCAPTCHA"); + } + + + + //discard spam submissions + if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) { + $recaptcha_response = new ReCaptchaResponse(); + $recaptcha_response->is_valid = false; + $recaptcha_response->error = 'incorrect-captcha-sol'; + return $recaptcha_response; + } + + $response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify", + array ( + 'privatekey' => $privkey, + 'remoteip' => $remoteip, + 'challenge' => $challenge, + 'response' => $response + ) + $extra_params + ); + + $answers = explode ("\n", $response [1]); + $recaptcha_response = new ReCaptchaResponse(); + + if (trim ($answers [0]) == 'true') { + $recaptcha_response->is_valid = true; + } + else { + $recaptcha_response->is_valid = false; + $recaptcha_response->error = $answers [1]; + } + return $recaptcha_response; + +} + +/** + * gets a URL where the user can sign up for reCAPTCHA. If your application + * has a configuration page where you enter a key, you should provide a link + * using this function. + * @param string $domain The domain where the page is hosted + * @param string $appname The name of your application + */ +function recaptcha_get_signup_url ($domain = null, $appname = null) { + return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname)); +} + +function _recaptcha_aes_pad($val) { + $block_size = 16; + $numpad = $block_size - (strlen ($val) % $block_size); + return str_pad($val, strlen ($val) + $numpad, chr($numpad)); +} + +/* Mailhide related code */ + +function _recaptcha_aes_encrypt($val,$ky) { + if (! function_exists ("mcrypt_encrypt")) { + die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed."); + } + $mode=MCRYPT_MODE_CBC; + $enc=MCRYPT_RIJNDAEL_128; + $val=_recaptcha_aes_pad($val); + return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); +} + + +function _recaptcha_mailhide_urlbase64 ($x) { + return strtr(base64_encode ($x), '+/', '-_'); +} + +/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */ +function recaptcha_mailhide_url($pubkey, $privkey, $email) { + if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) { + die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " . + "you can do so at http://www.google.com/recaptcha/mailhide/apikey"); + } + + + $ky = pack('H*', $privkey); + $cryptmail = _recaptcha_aes_encrypt ($email, $ky); + + return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail); +} + +/** + * gets the parts of the email to expose to the user. + * eg, given johndoe@example,com return ["john", "example.com"]. + * the email is then displayed as john...@example.com + */ +function _recaptcha_mailhide_email_parts ($email) { + $arr = preg_split("/@/", $email ); + + if (strlen ($arr[0]) <= 4) { + $arr[0] = substr ($arr[0], 0, 1); + } else if (strlen ($arr[0]) <= 6) { + $arr[0] = substr ($arr[0], 0, 3); + } else { + $arr[0] = substr ($arr[0], 0, 4); + } + return $arr; +} + +/** + * Gets html to display an email address given a public an private key. + * to get a key, go to: + * + * http://www.google.com/recaptcha/mailhide/apikey + */ +function recaptcha_mailhide_html($pubkey, $privkey, $email) { + $emailparts = _recaptcha_mailhide_email_parts ($email); + $url = recaptcha_mailhide_url ($pubkey, $privkey, $email); + + return htmlentities($emailparts[0]) . "...@" . htmlentities ($emailparts [1]); + +} + + +?> diff --git a/wp-content/plugins/gravityforms/select_columns.php b/wp-content/plugins/gravityforms/select_columns.php new file mode 100644 index 0000000..15fa9c1 --- /dev/null +++ b/wp-content/plugins/gravityforms/select_columns.php @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + "id" , "label" => __("Entry Id", "gravityforms"))); + array_push($form["fields"],array("id" => "date_created" , "label" => __("Entry Date", "gravityforms"))); + array_push($form["fields"],array("id" => "ip" , "label" => __("User IP", "gravityforms"))); + array_push($form["fields"],array("id" => "source_url" , "label" => __("Source Url", "gravityforms"))); + array_push($form["fields"],array("id" => "payment_status" , "label" => __("Payment Status", "gravityforms"))); + array_push($form["fields"],array("id" => "transaction_id" , "label" => __("Transaction Id", "gravityforms"))); + array_push($form["fields"],array("id" => "payment_amount" , "label" => __("Payment Amount", "gravityforms"))); + array_push($form["fields"],array("id" => "payment_date" , "label" => __("Payment Date", "gravityforms"))); + array_push($form["fields"],array("id" => "created_by" , "label" => __("User", "gravityforms"))); + + ?> +
              +
              +
              +
              +
                + $field_info){ + ?> +
              • + +
              +
              + +
              + +
              +
              +
                + +
              • ">
              • + +
              • ">
              • + +
              • ">
              • + +
              +
              +
              + +
              + " class="button-primary" onclick="SelectColumns();"/>  + " class="button" onclick="self.parent.tb_remove();"/> +
              + + + + + $name, "icon" => $icon_path); + } + + public static function settings_page(){ + $addon_name = RGForms::get("addon"); + $icon_path = empty($addon_name) ? "" : self::$addon_pages[$addon_name]["icon"]; + $page_title = empty($addon_name) ? __("Gravity Forms Settings", "gravityforms") : $addon_name . " " . __("Settings", "gravityforms"); + $icon_path = empty($icon_path) ? GFCommon::get_base_url() . "/images/gravity-settings-icon-32.png" : $icon_path; + echo GFCommon::get_remote_message(); + ?> + +
              + +

              +

              + + + +
              + +
              + . +
              + time()) + (array)get_option('recently_activated')); + + ?> +
              ","")?>
              + +
              + +

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + '; + if($version_info["is_valid_key"]) + $key_field .= " valid key"; + else if (!empty($key)) + $key_field .= " invalid key"; + + echo apply_filters('gform_settings_key_field', $key_field); + ?> +
              + +
              + />    + />
              + +
              + id="gforms_enable_html5"/>    + />
              + +
              + id="gform_enable_noconflict"/>    + id="gform_disable_noconflict"/>
              + +
              + id="gforms_enable_akismet"/>    + />
              + +
              + + + + +
              + +
              + +

              + +

              .

              + + + + + + + + + + + + + +
              + " />
              + ', ''); ?> +
              + " />
              + ', ''); ?> +
              + + +

              +

              + '; + echo apply_filters("gform_settings_save_button", $save_button); + ?> +

              + +
              + + + + +
              + +

              + + + + + + + + + + + + + + + + + + + + + + +
              + + + ')){ + ?> + + + + + +
              + db_version();?> + + db_version(), '5.0.0', '>')){ + ?> + + + + + +
              + + + ')){ + ?> + + + + + +
              + + + =')){ + ?> + + ', ''); + } + ?> +
              + + + +
              + +
              + +

              +

              + '; + echo apply_filters("gform_uninstall_button", $uninstall_button); + ?> + +
              + +
              + + 'POST', 'timeout' => 3, 'body' => $body); + $options['headers'] = array( + 'Content-Type' => 'application/x-www-form-urlencoded; charset=' . get_option('blog_charset'), + 'Content-Length' => strlen($body), + 'User-Agent' => 'WordPress/' . get_bloginfo("version"), + 'Referer' => get_bloginfo("url") + ); + + $request_url = GRAVITY_MANAGER_URL . "/api.php?op=upgrade_message&key=" . GFCommon::get_key(); + $raw_response = wp_remote_request($request_url, $options); + + if ( is_wp_error( $raw_response ) || 200 != $raw_response['response']['code'] ) + $message = ""; + else + $message = $raw_response['body']; + + //validating that message is a valid Gravity Form message. If message is invalid, don't display anything + if(substr($message, 0, 10) != "") + $message = ""; + + echo $message; + + exit; + } + + +} +?> \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/tooltips.php b/wp-content/plugins/gravityforms/tooltips.php new file mode 100644 index 0000000..7fd36d7 --- /dev/null +++ b/wp-content/plugins/gravityforms/tooltips.php @@ -0,0 +1,160 @@ + "
              " . __("Send To Email Address", "gravityforms") . "
              " . __("Enter the email address you would like the administrator notification email sent to.", "gravityforms"), + "notification_autoformat" => "
              " . __("Disable Auto-Formatting", "gravityforms") . "
              " . __("When enabled, auto-formatting will insert paragraph breaks automatically. Disable auto-formatting when using HTML to create email notification content.", "gravityforms"), + "notification_send_to_routing" => "
              " . __("Routing", "gravityforms") . "
              " . __("Allows notification to be sent to different email addresses depending on values selected in the form.", "gravityforms"), + "notification_from_email" => "
              " . __("From Email Address", "gravityforms") . "
              " . __("Enter the email address you would like the administrator notification email sent from, or select the email from available email form fields.", "gravityforms"), + "notification_from_name" => "
              " . __("From Name", "gravityforms") . "
              " . __("Enter the name you would like the administrator notification email sent from, or select the name from available name fields.", "gravityforms"), + "notification_reply_to" => "
              " . __("Reply To", "gravityforms") . "
              " . __("Enter the email address you would like to be used as the reply to address for the administrator notification email.", "gravityforms"), + "notification_bcc" => "
              " . __("Blind Carbon Copy Addresses", "gravityforms") . "
              " . __("Enter a comma separated list of email addresses you would like to receive a BCC of the administrator notification email.", "gravityforms"), + "autoresponder_send_to_email" => "
              " . __("Blind Carbon Copy Addresses", "gravityforms") . "
              " . __("Select the email form field that the user notification email should be sent to.", "gravityforms"), + "autoresponder_bcc" => "
              " . __("Blind Carbon Copy Addresses", "gravityforms") . "
              " . __("Enter a comma separated list of email addresses you would like to receive a BCC of the user notification email.", "gravityforms"), + "autoresponder_from" => "
              " . __("From Email Address", "gravityforms") . "
              " . __("Enter the email address you would like the user notification email sent from.", "gravityforms"), + "autoresponder_from_name" => "
              " . __("From Name", "gravityforms") . "
              " . __("Enter the name you would like the user notification email sent from.", "gravityforms"), + "autoresponder_reply_to" => "
              " . __("Reply To Address", "gravityforms") . "
              " . __("Enter the email address you would like to be used as the reply to address for the user notification email.", "gravityforms"), + "form_activity" => "
              " . __("Limit Form Activity", "gravityforms") . "
              " . __("Limit the number of entries a form can generate and/or schedule a time period the form is active.", "gravityforms"), + "form_limit_entries" => "
              " . __("Limit Number of Entries", "gravityforms") . "
              " . __("Enter a number in the input box below to limit the number of entries allowed for this form. The form will become inactive when that number is reached.", "gravityforms"), + "form_schedule_form" => "
              " . __("Schedule Form", "gravityforms") . "
              " . __("Schedule a time period the form is active.", "gravityforms"), + "form_honeypot" => "
              " . __("Enable Anti-spam honeypot", "gravityforms") . "
              " . __("Enables the honeypot spam protection technique, which is an alternative to the reCAPTCHA field.", "gravityforms"), + "form_animation" => "
              " . __("Enable Animation", "gravityforms") . "
              " . __("Check this option to enable a sliding animation when displaying/hiding conditional logic fields.", "gravityforms"), + "form_tile" => "
              " . __("Form Title", "gravityforms") . "
              " . __("Enter the title of your form.", "gravityforms"), + "form_description" => "
              " . __("Form Description", "gravityforms") . "
              " . __("Enter a description for your form. This may be used for user instructions.", "gravityforms"), + "form_label_placement" => "
              " . __("Form Label Placement", "gravityforms") . "
              " . __("Select the label placement. Labels can be top aligned above a field, left aligned to the left of a field, or right aligned to the left of a field.", "gravityforms"), + "form_description_placement" => "
              " . __("Description Placement", "gravityforms") . "
              " . __("Select the description placement. Descriptions can be placed above the field inputs or below the field inputs.", "gravityforms"), + "form_button_text" => "
              " . __("Form Button Text", "gravityforms") . "
              " . __("Enter the text you would like to appear on the form submit button.", "gravityforms"), + "form_button_image" => "
              " . __("Form Button Image", "gravityforms") . "
              " . __("Enter the path to an image you would like to use as the form submit button.", "gravityforms"), + "form_css_class" => "
              " . __("Form CSS Class Name", "gravityforms") . "
              " . __("Enter the CSS class name you would like to use in order to override the default styles for this form.", "gravityforms"), + "form_field_add_icon_url" => "
              " . __("Add Icon URL", "gravityforms") . "
              " . __("Enter the URL of a custom image to replace the default 'add item' icon.", "gravityforms"), + "form_field_delete_icon_url" => "
              " . __("Delete Icon URL", "gravityforms") . "
              " . __("Enter the URL of a custom image to replace the default 'delete item' icon.", "gravityforms"), + "form_confirmation_message" => "
              " . __("Confirmation Message Text", "gravityforms") . "
              " . __("Enter the text you would like the user to see on the confirmation page of this form.", "gravityforms"), + "form_confirmation_autoformat" => "
              " . __("Disable Auto-Formatting", "gravityforms") . "
              " . __("When enabled, auto-formatting will insert paragraph breaks automatically. Disable auto-formatting when using HTML to create the confirmation content.", "gravityforms"), + "form_redirect_to_webpage" => "
              " . __("Redirect Form to Page", "gravityforms") . "
              " . __("Select the page you would like the user to be redirected to after they have submitted the form.", "gravityforms"), + "form_redirect_to_url" => "
              " . __("Redirect Form to URL", "gravityforms") . "
              " . __("Enter the URL of the webpage you would like the user to be redirected to after they have submitted the form.", "gravityforms"), + "form_redirect_querystring" => "
              " . __("Pass Data Via Query String", "gravityforms") . "
              " . __("To pass field data to the confirmation page, build a Query String using the 'Insert Merge Tag' drop down. ..more info on querystrings »", "gravityforms"), + "form_field_label" => "
              " . __("Field Label", "gravityforms") . "
              " . __("Enter the label of the form field. This is the field title the user will see when filling out the form.", "gravityforms"), + "form_field_label_html" => "
              " . __("Field Label", "gravityforms") . "
              " . __("Enter the label for this HTML block. It will help you identify your HTML blocks in the form editor, but it will not be displayed on the form.", "gravityforms"), + "form_field_disable_margins" => "
              " . __("Disable Default Margins", "gravityforms") . "
              " . __("When enabled, margins are added to properly align the HTML content with other form fields.", "gravityforms"), + "form_field_recaptcha_theme" => "
              " . __("Recaptcha Theme", "gravityforms") . "
              " . __("Select the visual theme for the reCAPTCHA field the available options to better match your site design.", "gravityforms"), + "form_field_captcha_type" => "
              " . __("CAPTCHA Type", "gravityforms") . "
              " . __("Select the type of CAPTCHA you would like to use.", "gravityforms"), + "form_field_custom_field_name" => "
              " . __("Custom Field Name", "gravityforms") . "
              " . __("Select the custom field name from available existing custom fields, or enter a new custom field name.", "gravityforms"), + "form_field_type" => "
              " . __("Field type", "gravityforms") . "
              " . __("Select the type of field from the available form fields.", "gravityforms"), + "form_field_maxlength" => "
              " . __("Maximum Characters", "gravityforms") . "
              " . __("Enter the maximum number of characters that this field is allowed to have.", "gravityforms"), + "form_field_maxrows" => "
              " . __("Maximum Rows", "gravityforms") . "
              " . __("Enter the maximum number of rows that users are allowed to add.", "gravityforms"), + "form_field_date_input_type" => "
              " . __("Date Input Type", "gravityforms") . "
              " . __("Select the type of inputs you would like to use for the date field. Date Picker will let users select a date from a calendar. Date Field will let users free type the date.", "gravityforms"), + "form_field_address_type" => "
              " . __("Address Type", "gravityforms") . "
              " . __("Select the type of address you would like to use.", "gravityforms"), + "form_field_address_default_state_us" => "
              " . __("Default State", "gravityforms") . "
              " . __("Select the state you would like to be selected by default when the form gets displayed.", "gravityforms"), + "form_field_address_default_state_canadian" => "
              " . __("Default Province", "gravityforms") . "
              " . __("Select the province you would like to be selected by default when the form gets displayed.", "gravityforms"), + "form_field_address_default_country" => "
              " . __("Default Country", "gravityforms") . "
              " . __("Select the country you would like to be selected by default when the form gets displayed.", "gravityforms"), + "form_field_address_hide_country" => "
              " . __("Hide Country", "gravityforms") . "
              " . __("For addresses that only apply to one country, you can choose to not display the country drop down. Entries will still be recorded with the selected country.", "gravityforms"), + "form_field_address_hide_address2" => "
              " . __("Hide Address Line 2", "gravityforms") . "
              " . __("Check this box to prevent the extra address input (Address Line 2) from being displayed in the form.", "gravityforms"), + "form_field_address_hide_state_us" => "
              " . __("Hide State Field", "gravityforms") . "
              " . __("Check this box to prevent the State field from being displayed in the form.", "gravityforms"), + "form_field_address_hide_state_canadian" => "
              " . __("Hide Province Field", "gravityforms") . "
              " . __("Check this box to prevent Province field from being displayed in the form.", "gravityforms"), + "form_field_address_hide_state_international" => "
              " . __("Hide State/Province/Region", "gravityforms") . "
              " . __("Check this box to prevent the State/Province/Region from being displayed in the form.", "gravityforms"), + "form_field_name_format" => "
              " . __("Field Name Format", "gravityforms") . "
              " . __("Select the format you would like to use for the Name field. There are 3 options, Normal which includes First and Last Name, Extended which adds Prefix and Suffix, or Simple which is a single input field.", "gravityforms"), + "form_field_number_format" => "
              " . __("Number Format", "gravityforms") . "
              " . __("Select the format of numbers that are allowed in this field. You have the option to use a comma or a dot as the decimal separator.", "gravityforms"), + "form_field_force_ssl" => "
              " . __("Force SSL", "gravityforms") . "
              " . __("Check this box to prevent this field from being displayed in a non-secure page (i.e. not https://). It will redirect the page to the same URL, but starting with https:// instead. This option requires a properly configured SSL certificate.", "gravityforms"), + "form_field_card_style" => "
              " . __("Credit Card Icon Style", "gravityforms") . "
              " . __("Select the style you would like to use for the credit card icons.", "gravityforms"), + "form_field_date_format" => "
              " . __("Field Date Format", "gravityforms") . "
              " . __("Select the format you would like to use for the date input. Available options are MM/DD/YYYY and DD/MM/YYYY.", "gravityforms"), + "form_field_time_format" => "
              " . __("Time Format", "gravityforms") . "
              " . __("Select the format you would like to use for the time field. Available options are 12 hour (i.e. 8:30 pm) and 24 hour (i.e. 20:30).", "gravityforms"), + "form_field_fileupload_allowed_extensions" => "
              " . __("Allowed File Extensions", "gravityforms") . "
              " . __("Enter that allowed file extensions for file uploads. This will limit what type of files a user may upload.", "gravityforms"), + "form_field_phone_format" => "
              " . __("Phone Number Format", "gravityforms") . "
              " . __("Select the format you would like to use for the phone input. Available options are domestic US/CANADA style phone number and international long format phone number.", "gravityforms"), + "form_field_description" => "
              " . __("Field Description", "gravityforms") . "
              " . __("Enter the description for the form field. This will be displayed to the user and provide some direction on how the field should be filled out or selected.", "gravityforms"), + "form_field_required" => "
              " . __("Required Field", "gravityforms") . "
              " . __("Select this option to make the form field required. A required field will prevent the form from being submitted if it is not filled out or selected.", "gravityforms"), + "form_field_no_duplicate" => "
              " . __("No Duplicates", "gravityforms") . "
              " . __("Select this option to limit user input to unique values only. This will require that a value entered in a field does not currently exist in the entry database for that field.", "gravityforms"), + "form_field_number_range" => "
              " . __("Number Range", "gravityforms") . "
              " . __("Enter the minimum and maximum values for this form field. This will require that the value entered by the user must fall within this range.", "gravityforms"), + "form_field_enable_calculation" => "
              " . __("Enable Calculation", "gravityforms") . "
              " . __("Enabling caculations will allow the value of this field to be dynamically calculated based on a mathematical formula.", "gravityforms"), + "form_field_calculation_formula" => "
              " . __("Formula", "gravityforms") . "
              " . __("Specify a mathematical formula. The result of this formula will be dynamically populated as the value for this field.", "gravityforms"), + "form_field_calculation_rounding" => "
              " . __("Rounding", "gravityforms") . "
              " . __("Specify how many decimal places the number should be rounded to.", "gravityforms"), + "form_field_admin_label" => "
              " . __("Admin Label", "gravityforms") . "
              " . __("Enter the admin label of the form field. Entering a value in this field will override the Field Label when displayed in the Gravity Forms administration tool.", "gravityforms"), + "form_field_size" => "
              " . __("Field Size", "gravityforms") . "
              " . __("Select a form field size from the available options. This will set the width of the field.", "gravityforms"), + "form_field_default_value" => "
              " . __("Default Value", "gravityforms") . "
              " . __("If you would like to pre-populate the value of a field, enter it here.", "gravityforms"), + "form_field_validation_message" => "
              " . __("Validation Message", "gravityforms") . "
              " . __("If you would like to override the default error validation for a field, enter it here. This message will be displayed if there is an error with this field when the user submits the form.", "gravityforms"), + "form_field_recaptcha_language" => "
              " . __("reCaptcha Language", "gravityforms") . "
              " . __("Select the language you would like to use for the reCAPTCHA display from the available options.", "gravityforms"), + "form_field_css_class" => "
              " . __("CSS Class Name", "gravityforms") . "
              " . __("Enter the CSS class name you would like to use in order to override the default styles for this field.", "gravityforms"), + "form_field_visibility" => "
              " . __("Visibility", "gravityforms") . "
              " . __("Select the visibility for this field. Field visibility set to Everyone will be visible by the user submitting the form. Form field visibility set to Admin Only will only be visible within the Gravity Forms administration tool.

              Setting a field to Admin Only is useful for creating fields that can be used to set a status or priority level on submitted entries.", "gravityforms"), + "form_field_choices" => "
              " . __("Field Choices", "gravityforms") . "
              " . __("Add Choices to this field. You can mark each choice as checked by default by using the radio/checkbox fields on the left.", "gravityforms"), + "form_field_choice_values" => "
              " . __("Enable Choice Values", "gravityforms") . "
              " . __("Check this option to specify a value for each choice. Choice values are not displayed to the user viewing the form, but are accessible to administrators when viewing the entry.", "gravityforms"), + "form_field_conditional_logic" => "
              " . __("Conditional Logic", "gravityforms") . "
              " . __("Create rules to dynamically display or hide this field based on values from another field", "gravityforms"), + "form_field_enable_enhanced_ui" => "
              " . __("Enable Enhanced UI", "gravityforms") . "
              " . __("By selecting this option, the Chosen jQuery script will be applied to this field, enabling search capabilities to Drop Down fields and a more user-friendly interface for Multi Select fields.", "gravityforms"), + "form_field_other_choice" => "
              " . __("\"Other\" Choice", "gravityforms") . "
              " . __("Check this option to add a text input as the final choice of your radio button field. This allows the user to specify a value that is not a predefined choice.", "gravityforms"), + "form_require_login" => "
              " . __("Require user to be logged in", "gravityforms") . "
              " . __("Check this option to require a user to be logged in to view this form", "gravityforms"), + "form_require_login_message" => "
              " . __("Require Login Message", "gravityforms") . "
              " . __("Enter a message to be displayed to users who are not logged in (shortcodes and HTML are supported)", "gravityforms"), + "form_page_conditional_logic" => "
              " . __("Page Conditional Logic", "gravityforms") . "
              " . __("Create rules to dynamically display or hide this page based on values from another field", "gravityforms"), + "form_progress_indicator" => "
              " . __("Progress Indicator", "gravityforms") . "
              " . __("Select which type of visual progress indicator you would like to display. Progress Bar, Steps or None", "gravityforms"), + "form_percentage_style" => "
              " . __("Progress Bar Style", "gravityforms") . "
              " . __("Select which progress bar style you would like to use. Select custom to choose your own text and background color", "gravityforms"), + "form_page_names" => "
              " . __("Page Names", "gravityforms") . "
              " . __("Name each of the pages on your form. Page names are displayed with the selected progress indicator", "gravityforms"), + "next_button_text" => "
              " . __("Next Button Text", "gravityforms") . "
              " . __("Enter the text you would like to appear on the page next button", "gravityforms"), + "next_button_image" => "
              " . __("Next Button Image", "gravityforms") . "
              " . __("Enter the path to an image you would like to use as the page next button", "gravityforms"), + "previous_button_text" => "
              " . __("Previous Button Text", "gravityforms") . "
              " . __("Enter the text you would like to appear on the page previous button", "gravityforms"), + "previous_button_image" => "
              " . __("Previous Button Image", "gravityforms") . "
              " . __("Enter the path to an image you would like to use as the page previous button", "gravityforms"), + "form_nextbutton_conditional_logic" => "
              " . __("Next Button Conditional Logic", "gravityforms") . "
              " . __("Create rules to dynamically display or hide the page's Next Button based on values from another field", "gravityforms"), + "form_button_conditional_logic" => "
              " . __("Conditional Logic", "gravityforms") . "
              " . __("Create rules to dynamically display or hide the submit button based on values from another field", "gravityforms"), + "form_field_post_category_selection" => "
              " . __("Post Category", "gravityforms") . "
              " . __("Select which categories are displayed. You can choose to display all of them or select individual ones.", "gravityforms"), + "form_field_post_status" => "
              " . __("Post Status", "gravityforms") . "
              " . __("Select the post status that will be used for the post that is created by the form entry.", "gravityforms"), + "form_field_post_author" => "
              " . __("Post Author", "gravityforms") . "
              " . __("Select the author that will be used for the post that is created by the form entry.", "gravityforms"), + "form_field_post_format" => "
              " . __("Post Format", "gravityforms") . "
              " . __("Select the post format that will be used for the post that is created by the form entry.", "gravityforms"), + "form_field_post_content_template_enable" => "
              " . __("Post Content Template", "gravityforms") . "
              " . __("Check this option to format and insert merge tags into the Post Content.", "gravityforms"), + "form_field_post_title_template_enable" => "
              " . __("Post Title Template", "gravityforms") . "
              " . __("Check this option to format and insert merge tags into the Post Title.", "gravityforms"), + "form_field_post_category" => "
              " . __("Post Category", "gravityforms") . "
              " . __("Select the category that will be used for the post that is created by the form entry.", "gravityforms"), + "form_field_current_user_as_author" => "
              " . __("Use Current User as Author", "gravityforms") . "
              " . __("Selecting this option will set the post author to the WordPress user that submitted the form.", "gravityforms"), + "form_field_image_meta" => "
              " . __("Image Meta", "gravityforms") . "
              " . __("Select one or more image metadata field to be displayed along with the image upload field. They enable users to enter additional information about the uploaded image.", "gravityforms"), + "form_field_featured_image" => "
              " . __("Set as Featured Image", "gravityforms") . "
              " . __("Check this option to set this image as the post's Featured Image.", "gravityforms"), + "form_field_prepopulate" => "
              " . __("Incoming Field Data", "gravityforms") . "
              " . __("Check this option to enable data to be passed to the form and pre-populate this field dynamically. Data can be passed via Query Strings, Shortcode and/or Hooks", "gravityforms"), + "form_field_content" => "
              " . __("Content", "gravityforms") . "
              " . __("Enter the content (Text or HTML) to be displayed on the form.", "gravityforms"), + "form_field_base_price" => "
              " . __("Base Price", "gravityforms") . "
              " . __("Enter the base price for this product.", "gravityforms"), + "form_field_disable_quantity" => "
              " . __("Disable Quantity", "gravityforms") . "
              " . __("Disables the quantity field. A quantity of 1 will be assumed or you can add a Quantity field to your form from the Pricing Fields.", "gravityforms"), + "form_field_product" => "
              " . __("Product Field", "gravityforms") . "
              " . __("Select which Product this field is tied to.", "gravityforms"), + "form_field_mask" => "
              " . __("Input Mask", "gravityforms") . "
              " . __("Input masks provide a visual guide allowing users to more easily enter data in a specific format such as dates and phone numbers.", "gravityforms"), + "form_standard_fields" => "
              " . __("Standard Fields", "gravityforms") . "
              " . __("Standard Fields provide basic form functionality.", "gravityforms"), + "form_advanced_fields" => "
              " . __("Advanced Fields", "gravityforms") . "
              " . __("Advanced Fields are for specific uses. They enable advanced formatting of regularly used fields such as Name, Email, Address, etc.", "gravityforms"), + "form_post_fields" => "
              " . __("Post Fields", "gravityforms") . "
              " . __("Post Fields allow you to add fields to your form that create Post Drafts in WordPress from the submitted data.", "gravityforms"), + "form_pricing_fields" => "
              " . __("Pricing Fields", "gravityforms") . "
              " . __("Pricing fields allow you to add fields to your form that calculate pricing for selling goods and services.", "gravityforms"), + "export_select_form" => "
              " . __("Export Selected Form", "gravityforms") . "
              " . __("Select the form you would like to export entry data from. You may only export data from one form at a time.", "gravityforms"), + "export_select_forms" => "
              " . __("Export Selected Forms", "gravityforms") . "
              " . __("Select the forms you would like to export.", "gravityforms"), + "export_select_fields" => "
              " . __("Export Selected Fields", "gravityforms") . "
              " . __("Select the fields from the select form you would like to export data from.", "gravityforms"), + "export_date_range" => "
              " . __("Export Date Range", "gravityforms") . "
              " . __("Select a date range. Setting a range will only export entries submitted during that date range. If no range is set, all entries will be exported.", "gravityforms"), + "settings_license_key" => "
              " . __("Settings License Key", "gravityforms") . "
              " . __("Your Gravity Forms support license key is used to verify your support package, enable automatic updates and receive support.", "gravityforms"), + "settings_output_css" => "
              " . __("Output CSS", "gravityforms") . "
              " . __("Select yes or no to enable or disable CSS output. Setting this to no will disable the standard Gravity Forms CSS from being included in your theme.", "gravityforms"), + "settings_html5" => "
              " . __("Output HTML5", "gravityforms") . "
              " . __("Select yes or no to enable or disable HTML5 output. Setting this to no will disable the standard Gravity Forms HTML5 form field output.", "gravityforms"), + "settings_noconflict" => "
              " . __("No-Conflict Mode", "gravityforms") . "
              " . __("Select On or Off to enable or disable no-conflict mode. Setting this to On will prevent extraneous scripts and styles from being printed on Gravity Forms admin pages, reducing conflicts with other plugins and themes.", "gravityforms"), + "settings_recaptcha_public" => "
              " . __("reCaptcha Public Key", "gravityforms") . "
              " . __("Enter your reCAPTCHA Public Key, if you do not have a key you can register for one at the provided link. reCAPTCHA is a free service.", "gravityforms"), + "settings_recaptcha_private" => "
              " . __("reCaptcha Private Key", "gravityforms") . "
              " . __("Enter your reCAPTCHA Private Key, if you do not have a key you can register for one at the provided link. reCAPTCHA is a free service.", "gravityforms"), + "settings_currency" => "
              " . __("Currency", "gravityforms") . "
              " . __("Please select the currency for your location. Currency is used for pricing fields and price calculations.", "gravityforms"), + "settings_akismet" => "
              " . __("Akismet Integration", "gravityforms") . "
              " . __("Protect your form entries from spam using Akismet.", "gravityforms"), + "entries_conversion" => "
              " . __("Entries Conversion", "gravityforms") . "
              " . __("Conversion is the percentage of form views that generated an entry. If a form was viewed twice, and one entry was generated, the conversion will be 50%.", "gravityforms"), + "widget_tabindex" => "
              " . __("Tab Index Start Value", "gravityforms") . "
              " . __("If you have other forms on the page (i.e. Comments Form), specify a higher tabindex start value so that your Gravity Form does not end up with the same tabindices as your other forms. To disable the tabindex, enter 0 (zero).", "gravityforms"), + "notification_override_email" => "
              " . __("Override Notifications", "gravityforms") . "
              " . __("Enter a comma separated list of email addresses you would like to receive the selected notification emails.", "gravityforms"), + "form_percentage_confirmation_display" => "
              " . __("Progress Bar Confirmation Display", "gravityforms") . "
              " . __("Check this box if you would like the progress bar to display with the confirmation text.", "gravityforms"), + "percentage_confirmation_page_name" => "
              " . __("Progress Bar Completion Text", "gravityforms") . "
              " . __("Enter text to display at the top of the progress bar.", "gravityforms"), + + ); + + $css_class = empty($css_class) ? "tooltip" : $css_class; + $gf_tooltips = apply_filters("gform_tooltips", $gf_tooltips); + + $tooltip = ""; + if(isset($gf_tooltips[$name])){ + $tooltip ="(?)"; + } + if($return) + return $tooltip; + else + echo $tooltip; +} + + +?> diff --git a/wp-content/plugins/gravityforms/update.php b/wp-content/plugins/gravityforms/update.php new file mode 100644 index 0000000..39c8a78 --- /dev/null +++ b/wp-content/plugins/gravityforms/update.php @@ -0,0 +1,80 @@ + + + " /> + +
              + +

              +

              + +
              + You can update to the latest version automatically or download the update and install it manually. %sUpdate Automatically%s %sDownload Update%s", "gravityforms"), "

              ", "", " ", ""); ?> +
              + +
              + Register your copy of Gravity Forms to receive access to automatic updates and support. Need a license key? Purchase one now.', 'gravityforms');?> +
              +
              "; + $changelog = RGForms::get_changelog(); + echo $changelog; + } + else{ + + ?> +
              + +
              + + + + +
              + \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/widget.php b/wp-content/plugins/gravityforms/widget.php new file mode 100644 index 0000000..ed95c57 --- /dev/null +++ b/wp-content/plugins/gravityforms/widget.php @@ -0,0 +1,103 @@ +WP_Widget( 'gform_widget', 'Form', + array( 'classname' => 'gform_widget', 'description' => __('Gravity Forms Widget', "gravityforms") ), + array( 'width' => 200, 'height' => 250, 'id_base' => 'gform_widget' ) + ); + } + + function widget( $args, $instance ) { + + extract( $args ); + echo $before_widget; + $title = apply_filters('widget_title', $instance['title'] ); + + if ( $title ) + echo $before_title . $title . $after_title; + + //setting tabindex based on configured value + if(is_numeric($instance['tabindex'])){ + add_filter("gform_tabindex_{$instance['form_id']}", create_function("", "return {$instance['tabindex']};")); + } + + //creating form + $form = RGFormsModel::get_form_meta($instance['form_id']); + + if(empty($instance["disable_scripts"])){ + RGForms::print_form_scripts($form, $instance["ajax"]); + } + + $form_markup = RGForms::get_form($instance['form_id'], $instance['showtitle'], $instance['showdescription'], false, null, $instance["ajax"]); + + //display form + echo $form_markup; + echo $after_widget; + } + + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance["title"] = strip_tags( $new_instance["title"] ); + $instance["form_id"] = $new_instance["form_id"]; + $instance["showtitle"] = $new_instance["showtitle"]; + $instance["ajax"] = $new_instance["ajax"]; + $instance["disable_scripts"] = $new_instance["disable_scripts"]; + $instance["showdescription"] = $new_instance["showdescription"]; + $instance["tabindex"] = $new_instance["tabindex"]; + + return $instance; + } + + function form( $instance ) { + + $instance = wp_parse_args( (array) $instance, array('title' => __("Contact Us", "gravityforms"), 'tabindex' => '1') ); + ?> +

              + + +

              +

              + + +

              +

              + value="1" />
              + value="1"/>
              +

              +

              + +

              + + + \ No newline at end of file diff --git a/wp-content/plugins/gravityforms/xml.php b/wp-content/plugins/gravityforms/xml.php new file mode 100644 index 0000000..d1ec7dd --- /dev/null +++ b/wp-content/plugins/gravityforms/xml.php @@ -0,0 +1,218 @@ +options = $options; + } + + private function indent($path){ + $depth = sizeof(explode("/", $path)) - 1; + $indent=""; + $indent = str_pad($indent, $depth, "\t"); + return "\r\n" . $indent; + } + + public function serialize($parent_node_name, $data, $path=""){ + $xml = ""; + if(empty($path)){ + $path = $parent_node_name; + $xml = ""; + } + + //if this element is marked as hidden, ignore it + $option = rgar($this->options, $path); + if(rgar($option,"is_hidden")) + return ""; + + $padding = $this->indent($path); + + //if the content is not an array, simply render the node + if(!is_array($data)){ + $option = rgar($this->options,$path); + return strlen($data) == 0 && !rgar($option, "allow_empty") ? "" : "$padding<$parent_node_name>" . $this->xml_value($parent_node_name, $data) . ""; + } + $is_associative = $this->is_assoc($data); + $is_empty = true; + + //opening parent node + $version = $path == $parent_node_name && isset($this->options["version"]) ? " version=\"" . $this->options["version"] . "\"" : ""; + $xml .= "{$padding}<{$parent_node_name}{$version}"; + + if($is_associative){ + //adding properties marked as attributes for associative arrays + foreach($data as $key => $obj){ + $child_path = "$path/$key"; + if($this->is_attribute($child_path)){ + $value = $this->xml_attribute($obj); + $option = rgar($this->options, $child_path); + if(strlen($value) > 0 || rgar($option, "allow_empty")){ + $xml .= " $key=\"$value\""; + $is_empty = false; + } + } + } + } + //closing element start tag + $xml .= ">"; + + //for a regular array, the child element (if not specified in the options) will be the singular vesion of the parent element(i.e.
              ...
              ...
              ) + $child_node_name = isset($this->options[$path]["array_tag"]) ? $this->options[$path]["array_tag"] : $this->to_singular($parent_node_name); + + //adding other properties as elements + foreach($data as $key => $obj){ + $node_name = $is_associative ? $key : $child_node_name; + $child_path = "$path/$node_name"; + if(!$this->is_attribute($child_path)){ + + $child_xml = $this->serialize($node_name, $obj, $child_path); + if(strlen($child_xml) > 0){ + $xml .= $child_xml; + $is_empty = false; + } + } + } + + //closing parent node + $xml .= "$padding"; + + return $is_empty ? "" : $xml; + } + + public function unserialize($xml_string){ + $xml_string = trim($xml_string); + + $xml_parser = xml_parser_create(); + $values = array(); + xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false); + xml_parser_set_option($xml_parser, XML_OPTION_SKIP_WHITE, 1); + + xml_parse_into_struct($xml_parser, $xml_string, $values); + + $object = $this->unserialize_node($values, 0); + xml_parser_free($xml_parser); + + return $object; + } + + private function unserialize_node($values, $index){ + $current = $values[$index]; + + //initializing current object + $obj = array(); + + //each attribute becomes a property of the object + if(isset($current["attributes"]) && is_array($current["attributes"])){ + foreach($current["attributes"] as $key => $attribute) + $obj[$key] = $attribute; + } + + //for nodes without children(i.e. contact us or ), simply return its content + if($current["type"] == "complete"){ + $val = isset($current["value"]) ? $current["value"] : ""; + return !empty($obj) ? $obj : $val; + } + + //get the current node's immediate children + $children = $this->get_children($values, $index); + + if(is_array($children)){ + //if all children have the same tag, add them as regular array items (not associative) + $is_identical_tags = $this->has_identical_tags($children); + $unserialize_as_array = $is_identical_tags && isset($this->options[$children[0]["tag"]]) && $this->options[$children[0]["tag"]]["unserialize_as_array"]; + + //serialize every child and add it to the object (as a regular array item, or as an associative array entry) + foreach($children as $child){ + $child_obj = $this->unserialize_node($values, $child["index"]); + if($unserialize_as_array) + $obj[] = $child_obj; + else + $obj[$child["tag"]] = $child_obj; + } + } + return $obj; + } + + private function get_children($values, $parent_index){ + $level = $values[$parent_index]["level"] + 1; + $nodes = array(); + for($i= $parent_index + 1, $count = sizeof($values); $i<$count; $i++){ + $current = $values[$i]; + + //If we have reached the close tag for the parent node, we are done. Return the current nodes. + if($current["level"] == $level -1 && $current["type"] == "close") + return $nodes; + else if($current["level"] == $level && ($current["type"] == "open" || $current["type"] == "complete")) + $nodes[] = array("tag" => $current["tag"], "index" => $i); //this is a child, add it to the list of nodes + + } + return $nodes; + } + + private function has_identical_tags($nodes){ + $tag = $nodes[0]["tag"]; + foreach($nodes as $node){ + if($node["tag"] != $tag) + return false; + } + return true; + } + + private function is_attribute($path){ + $option = rgar($this->options, $path); + return rgar($option,"is_attribute"); + } + + private function xml_value($node_name, $value){ + if(strlen($value) == 0) + return ""; + + if($this->xml_is_cdata($node_name)) + return $this->xml_cdata($value); + else + return $this->xml_content($value); + } + + private function xml_attribute($value){ + return esc_attr($value); + } + + private function xml_cdata($value){ + return ""; + } + + private function xml_content($value){ + return $value; + } + + private function xml_is_cdata($node_name){ + return true; + } + + private function is_assoc($array){ + return is_array($array) && array_diff_key($array,array_keys(array_keys($array))); + } + + private function to_singular($str){ + + $last3 = strtolower(substr($str, strlen($str) - 3)); + $fourth = strtolower(substr($str, strlen($str) - 4, 1)); + + if( $last3 == "ies" && in_array($fourth, array("a","e","i","o","u") ) ){ + return substr($str, 0, strlen($str)-3) . "y"; + } + else{ + return substr($str, 0, strlen($str)-1); + } + } +} +if(!function_exists("rgar")){ +function rgar($array, $name){ + if(isset($array[$name])) + return $array[$name]; + + return ''; +} +} + +?> diff --git a/wp-content/plugins/index.php b/wp-content/plugins/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/plugins/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/.gitignore b/wp-content/plugins/invite-anyone/.gitignore new file mode 100644 index 0000000..f24945d --- /dev/null +++ b/wp-content/plugins/invite-anyone/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +.DS_store +.svn +*.swp diff --git a/wp-content/plugins/invite-anyone/admin/admin-css.css b/wp-content/plugins/invite-anyone/admin/admin-css.css new file mode 100644 index 0000000..f64dca3 --- /dev/null +++ b/wp-content/plugins/invite-anyone/admin/admin-css.css @@ -0,0 +1,97 @@ +.ia-tabs { + background: #d7d7d7; + padding-top: 10px; +} + .ia-tabs li { + display: inline-block; + padding: 4px 10px; + background: #f9f9f9; + margin: 0 7px; + border: 1px solid #f9f9f9; + border-bottom: none; + border-radius: 5px 5px 0 0; + } + .ia-tabs li.current { + border-color: #666; + } + +.invite-anyone-admin-limited ul { + padding-left: 30px; +} + +div.cs-explain { + padding-left: 200px; +} + +div.cs-settings { + padding-top: 20px; +} + +div.cs-settings label { + width: 200px; + display: block; + float: left; +} + +div.cs-settings input { + padding: 5px auto; + width: 200px; +} + +div.cs p { + padding-top: 15px; + padding-right: 200px; +} + +.cs-logo { + float: left; +} + +#invite-anyone-settings-submit { + margin-top: 30px; + clear: both; +} + +.ia-admin-pagination { + position: relative; + height: 30px; + margin-top: 10px; + color: #555; + font-size: 11px; +} + .ia-admin-pagination .currently-viewing { + position: absolute; + top: 0; + left: 0; + font-style: italic; + } + .ia-admin-pagination .pag-links { + position: absolute; + top: 0; + right: 0; + } + .ia-admin-pagination .page-numbers { + margin-left: 8px; + } + + +.widefat .ia-inviter { + width: 200px; +} +.widefat .ia-cloudsponge { + width: 100px; +} + +.ia-stats th, .ia-stats td { + width: 50px; + vertical-align: middle; +} + .ia-stats .in-the-last { + width: 80px; + } + .ia-stats .top-inviter { + width: 90px; + } + .ia-stats .description { + font-size: 9px; + } \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/admin/admin-js.js b/wp-content/plugins/invite-anyone/admin/admin-js.js new file mode 100644 index 0000000..e54e032 --- /dev/null +++ b/wp-content/plugins/invite-anyone/admin/admin-js.js @@ -0,0 +1,56 @@ +jQuery(document).ready( function() { + var j = jQuery; + + /* Cloudsponge */ + var cstoggle = j("input#cloudsponge-enabled"); + var cstable = j("div.cs-settings"); + + if ( j(cstoggle).prop('checked') == false ) { + j(cstable).hide(); + } + + j(cstoggle).click(function(){ + j(cstable).slideToggle(300); + }); + + /* Access settings */ + var toggle = j("input#invite_anyone_toggle_email_limit"); + var offtoggle = j("input#invite_anyone_toggle_email_no_limit"); + var submitbutton = j("#invite-anyone-settings-submit"); + + if ( j(toggle).prop('checked') == false ) { + j("div.invite-anyone-admin-limited input").prop('disabled', 'disabled'); + j("div.invite-anyone-admin-limited select").prop('disabled', 'disabled'); + j("div.invite-anyone-admin-limited").css('color', '#999'); + j("div.invite-anyone-admin-limited input").css('color', '#999'); + } + + j(offtoggle).click( + function() { + j("div.invite-anyone-admin-limited input").prop('disabled', 'disabled'); + j("div.invite-anyone-admin-limited select").prop('disabled', 'disabled'); + + j("div.invite-anyone-admin-limited").css('color', '#999'); + j("div.invite-anyone-admin-limited input").css('color', '#999'); + } + ); + + j(toggle).click( + function() { + j("div.invite-anyone-admin-limited input").prop('disabled',false); + j("div.invite-anyone-admin-limited select").prop('disabled',false); + + j("div.invite-anyone-admin-limited").css('color', '#000'); + j("div.invite-anyone-admin-limited input").css('color', '#000'); + } + ); + + /* Undisables inputs and selects on form submit, so that WP saves the disabled options */ + j(submitbutton).click( + function() { + j("div.invite-anyone-admin-limited input").prop('disabled',false); + j("div.invite-anyone-admin-limited select").prop('disabled',false); + } + ); + +}); \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/admin/admin-panel.php b/wp-content/plugins/invite-anyone/admin/admin-panel.php new file mode 100644 index 0000000..d0425ad --- /dev/null +++ b/wp-content/plugins/invite-anyone/admin/admin-panel.php @@ -0,0 +1,591 @@ +' . __( 'Settings', 'bp-invite-anyone' ) . ''; + array_unshift( $links, $settings_link ); + + return $links; +} +add_filter( 'plugin_action_links', 'invite_anyone_admin_add_action_link', 10, 2 ); + + +function invite_anyone_admin_scripts() { + wp_enqueue_script( 'invite-anyone-admin-js', WP_PLUGIN_URL . '/invite-anyone/admin/admin-js.js' ); +} + +function invite_anyone_admin_styles() { + wp_enqueue_style( 'invite-anyone-admin-css', WP_PLUGIN_URL . '/invite-anyone/admin/admin-css.css' ); +} + +function invite_anyone_admin_panel() { + global $iaoptions; + + $subpage = isset( $_GET['subpage' ] ) ? $_GET['subpage'] : 'general-settings'; + + if ( !empty( $_GET['migrate'] ) && $_GET['migrate'] == '1' ) { + $iaoptions = invite_anyone_options(); + $maybe_version = !empty( $iaoptions['db_version'] ) ? $iaoptions['db_version'] : '0.7'; + + // Don't run this migrator if coming from IA 0.8 or greater + if ( !version_compare( $maybe_version, '0.8', '>=' ) ) { + invite_anyone_migration_step(); + return; + } + } + + + // Get the proper URL for submitting the settings form. (Settings API workaround) + $url_base = function_exists( 'is_network_admin' ) && is_network_admin() ? network_admin_url( 'admin.php?page=invite-anyone' ) : admin_url( 'admin.php?page=invite-anyone' ); + + $form_action = isset( $_GET['subpage'] ) ? add_query_arg( 'subpage', $_GET['subpage'], $url_base ) : $url_base; + + // Catch and save settings being saved (Settings API workaround) + if ( !empty( $_POST['invite-anyone-settings-submit'] ) ) { + $options = invite_anyone_options(); + + // Here are the fields currently allowed in each section + $settings_fields = array( + 'access-control' => array( + 'email_visibility_toggle', + 'email_since_toggle', + 'email_role_toggle', + 'minimum_role', + 'email_blacklist_toggle', + 'email_blacklist', + 'group_invites_can_admin', + 'group_invites_can_group_admin', + 'group_invites_can_group_mod', + 'group_invites_can_group_member', + 'days_since', + 'email_limit_invites_toggle', + 'limit_invites_per_user' + ), + 'cloudsponge' => array( + 'cloudsponge_enabled', + 'cloudsponge_key' + ), + 'general-settings' => array( + 'can_send_group_invites_email', + 'bypass_registration_lock', + 'default_invitation_subject', + 'default_invitation_message', + 'addl_invitation_message', + 'subject_is_customizable', + 'message_is_customizable', + 'max_invites' + ) + ); + + $current_fields = $settings_fields[$subpage]; + + foreach( $current_fields as $cfield ) { + $options[$cfield] = isset( $_POST['invite_anyone'][$cfield] ) ? $_POST['invite_anyone'][$cfield] : false; + } + + update_option( 'invite_anyone', $options ); + + // A hack to make sure that the most recent options are available later on the page + $iaoptions = $options; + } +?> +
              +

              + +
                + class="current"> + + + + class="current"> + + + + class="current"> + + + + class="current"> + + + + class="current"> + + + + +
              + +
              + + + + + + + + +
              + + +
              + +

              + + +
                +
              • %%SITENAME%% -
              • +
              • %%INVITERNAME%% -
              • +
              • %%INVITERURL%% -
              • +
              • %%ACCEPTURL%% -
              • +
              • %%OPTOUTURL%% -
              • +
              +"; +} + +function invite_anyone_settings_can_send_group_invites_email() { + $options = invite_anyone_options(); +?> + /> + + /> +" . esc_html( invite_anyone_invitation_subject() ) . "" ); +} + +function invite_anyone_settings_default_invitation_message() { + echo apply_filters( 'invite_anyone_settings_default_invitation_message', "" ); +} + +function invite_anyone_settings_addl_invitation_message() { + echo apply_filters( 'invite_anyone_settings_addl_invitation_message', "" ); +} + +function invite_anyone_settings_is_customizable() { + $options = invite_anyone_options(); +?> +
                +
              • + /> +
              • + +
              • + /> +
              • +
              + +

              + + +
                +
              • checked="checked" />
              • + +
              • /> +
                +
                  +
                • + /> + ' /> +
                • + +
                • + /> + +
                • + +
                • + /> cannot send invitations by email:', 'bp-invite-anyone' ) ?> + ' /> +
                • +
                +
                +
              • +
              + + + +
                +
              • + /> + ' /> +
              • +
              + + +
                +

                +
                +
              • Site admins can send group invitations to: ", 'bp-invite-anyone' ) ?> + +
              • + +
              • Group admins can send group invitations to: ", 'bp-invite-anyone' ) ?> + +
              • + +
              • Group mods can send group invitations to: ", 'bp-invite-anyone' ) ?> + +
              • + +
              • Group members can send group invitations to: ", 'bp-invite-anyone' ) ?> + +
              • +
              + +
              + + +
              +

              CloudSponge is a cool service that gives your users easy and secure access to their address books (Gmail, Yahoo, and a number of other online and desktop email clients), so that they can more easily invite friends to your site. In order to enable CloudSponge support in Invite Anyone and BuddyPress, you\'ll need to register for a CloudSponge account.', 'bp-invite-anyone' ) ?>

              + + +
              + +
              + + +

              +
              +
              + 'author', + 'title' => 'Inviter', + 'css_class' => 'ia-inviter' + ), + array( + 'name' => 'ia_invitees', + 'title' => 'Invited Email', + 'css_class' => 'ia-invited-email' + ), + array( + 'name' => 'sent', + 'title' => 'Sent', + 'css_class' => 'ia-sent', + 'default_order' => 'desc', + 'posts_column' => 'post_date', + 'is_default' => true + ), + array( + 'name' => 'accepted', + 'title' => 'Accepted', + 'css_class' => 'ia-accepted', + 'default_order' => 'desc' + ), + array( + 'name' => 'cloudsponge', + 'title' => 'CloudSponge', + 'css_class' => 'ia-cloudsponge' + ), + ); + + $sortable = new BBG_CPT_Sort( $cols ); + + $args = array( + 'orderby' => $sortable->get_orderby, + 'order' => $sortable->get_order, + 'posts_per_page' => $pagination->get_per_page, + 'paged' => $pagination->get_paged, + 'status' => 'trash,publish,pending,draft,future' + ); + + // Get the invites + $invite = new Invite_Anyone_Invitation; + $invites = $invite->get( $args ); + + // Complete the pagination setup + $pagination->setup_query( $invites ); + ?> + + have_posts() ) : ?> +
              +
              + currently_viewing_text() ?> +
              + + +
              + + + + + + + + have_columns() ) : while ( $sortable->have_columns() ) : $sortable->the_column() ?> + the_column_th() ?> + + + + + + + have_posts() ) : $invites->the_post() ?> + + + + + + + + + + + + + + + +
              + +
              + + + + +
              + +
              +
              + name ); + } + ?> + + post_date ); + ?> + + + + + + + +
              + + +

              Note: CloudSponge data has only been recorded since Invite Anyone v0.9.

              + + +
              +
              + currently_viewing_text() ?> +
              + + +
              + + +

              + + + + display(); +} + +function invite_anyone_settings_check($input) { + return $input; +} + +?> diff --git a/wp-content/plugins/invite-anyone/admin/admin-stats.php b/wp-content/plugins/invite-anyone/admin/admin-stats.php new file mode 100644 index 0000000..fca51b9 --- /dev/null +++ b/wp-content/plugins/invite-anyone/admin/admin-stats.php @@ -0,0 +1,422 @@ +__construct(); + } + + /** + * PHP 5 constructor + * + * @package Invite Anyone + * @since 0.9 + */ + function __construct() { + $this->setup_time_periods(); + $this->setup_get_params(); + $this->get_posts(); + } + + function setup_time_periods() { + // $time_periods are in seconds + $this->time_periods = apply_filters( 'invite_anyone_stats_time_periods', array( + 60*60*24 => array( + 'name' => __( '24 Hours', 'bp-invite-anyone' ), + ), + 60*60*24*3 => array( + 'name' => __( '3 Days', 'bp-invite-anyone' ), + ), + 60*60*24*7 => array( + 'name' => __( '1 Week', 'bp-invite-anyone' ), + ), + 60*60*24*28 => array( + 'name' => __( '4 Weeks', 'bp-invite-anyone' ), + ), + 60*60*24*30*3 => array( + 'name' => __( '3 Months', 'bp-invite-anyone' ), + ), + 0 => array( + 'name' => __( 'All Time', 'bp-invite-anyone' ), + ) + ) ); + } + /** + * Gets the stats params out of the $_GET global + * + * @package Invite Anyone + * @since 0.9 + */ + function setup_get_params() { + $params = array(); + + if ( isset( $_REQUEST['user_id'] ) ) { + $params['user_id'] = (int)$_REQUEST['user_id']; + } + + $this->params = $params; + } + + /** + * Gets posts, based on the params provided + * + * @package Invite Anyone + * @since 0.9 + */ + function get_posts() { + global $wpdb; + + // $posts is a multidimensional array, containing all different time periods + $posts = array(); + + foreach( $this->time_periods as $tp => $period ) { + $invite = new Invite_Anyone_Invitation; + + // Will be populated out of $this->params. Defaults to none? + $args = array( + 'posts_per_page' => '-1', + 'status' => 'pending,draft,future,publish,trash' + ); + + // Create the date filter + if ( $tp ) { + $since = time() - $tp; + $this->date_sql = $wpdb->prepare( " AND post_date > %s", date( 'Y-m-d H:i:s', $since ) ); + + add_filter( 'posts_where_paged', array( $this, 'where_filter' ) ); + } + + $invites = $invite->get( $args ); + + // Remove the filter + if ( $tp ) { + remove_filter( 'posts_where_paged', array( $this, 'where_filter' ) ); + } + + $period['total_count'] = 0; + $period['accepted_count'] = 0; + $period['total_count_cs'] = 0; + $period['accepted_count_cs'] = 0; + $period['unique_emails'] = 0; + $period['unique_inviters'] = 0; + + $period['unique_emails'] = array(); + $period['unique_inviters'] = array(); + + if ( $invites->have_posts() ) { + while ( $invites->have_posts() ) { + $invites->the_post(); + + // Increase the total count + $period['total_count']++; + + $author_key = get_the_author_ID(); + + // If it's a new sender, add them to $unique_inviters + if ( !isset( $period['unique_inviters'][$author_key] ) ) { + $period['unique_inviters'][$author_key] = array( + 'overall' => array( + 'sent' => 0, + 'accepted' => 0 + ), + 'cloudsponge' => array( + 'sent' => 0, + 'accepted' => 0 + + ) + ); + } + + // Bump the inviter's count + $period['unique_inviters'][$author_key]['overall']['sent']++; + + // Is it accepted? + $accepted = get_post_meta( get_the_ID(), 'bp_ia_accepted', true ); + + if ( $accepted ) { + // Total accepted count + $period['accepted_count']++; + + // Author's accepted count + $period['unique_inviters'][$author_key]['overall']['accepted']++; + } + + // Is it a CloudSponge invite? + $is_cloudsponge = get_post_meta( get_the_ID(), 'bp_ia_is_cloudsponge', true ); + + if ( __( 'Yes', 'bp-invite-anyone' ) == $is_cloudsponge ) { + + $period['total_count_cs']++; + + // Author count + $period['unique_inviters'][$author_key]['cloudsponge']['sent']++; + + if ( $accepted ) { + // Total accepted count + $period['accepted_count_cs']++; + + // Author's accepted count + $period['unique_inviters'][$author_key]['cloudsponge']['accepted']++; + } + } + } + } + + // With all the data tallied, we can come up with some percentages + + // Overall acceptance rate + if ( $period['total_count'] ) { + $period['acceptance_rate'] = round( ( $period['accepted_count'] / $period['total_count'] ) * 100 ); + $period['acceptance_rate'] .= '%'; + } else { + $period['acceptance_rate'] = __( 'n/a', 'bp-invite-anyone' ); + } + + // CS percentage + if ( $period['total_count'] ) { + $period['cs_percentage'] = round( ( $period['total_count_cs'] / $period['total_count'] ) * 100 ); + $period['cs_percentage'] .= '%'; + } else { + $period['cs_percentage'] = __( 'n/a', 'bp-invite-anyone' ); + } + + // CS acceptance rate + if ( $period['total_count_cs'] ) { + $period['acceptance_rate_cs'] = round( ( $period['accepted_count_cs'] / $period['total_count_cs'] ) * 100 ); + $period['acceptance_rate_cs'] .= '%'; + } else { + $period['acceptance_rate_cs'] = __( 'n/a', 'bp-invite-anyone' ); + } + + // Find the most active user + $leader_user_id_pct = 0; + $leader_val_pct = 0; + + $leader_user_id_num = 0; + $leader_val_num = 0; + + $leader_user_id_pct_cs = 0; + $leader_val_pct_cs = 0; + + $leader_user_id_num_cs = 0; + $leader_val_num_cs = 0; + + foreach ( $period['unique_inviters'] as $user_id => $u ) { + // Overall + if ( $u['overall']['sent'] ) { + if ( $u['overall']['sent'] >= $leader_val_num ) { + $leader_user_id_num = $user_id; + $leader_val_num = $u['overall']['sent']; + } + + if ( ( $u['overall']['accepted'] / $u['overall']['sent'] ) >= $leader_val_pct ) { + $leader_user_id_pct = $user_id; + $leader_val_pct = $u['overall']['accepted'] / $u['overall']['sent'] * 100; + } + } + + // CloudSponge + if ( $u['cloudsponge']['sent'] ) { + if ( $u['cloudsponge']['sent'] >= $leader_val_num_cs ) { + $leader_user_id_num_cs = $user_id; + $leader_val_num_cs = $u['cloudsponge']['sent']; + } + + if ( ( $u['cloudsponge']['accepted'] / $u['cloudsponge']['sent'] ) >= $leader_val_pct_cs ) { + $leader_user_id_pct_cs = $user_id; + $leader_val_pct_cs = $u['cloudsponge']['accepted'] / $u['cloudsponge']['sent'] * 100; + } + } + } + + $period['top_users']['top_user_num'] = array( + 'user_id' => $leader_user_id_num ? $leader_user_id_num : false, + 'sent' => $leader_val_num ? $leader_val_num : false + ); + + $period['top_users']['top_user_pct'] = array( + 'user_id' => $leader_user_id_pct ? $leader_user_id_pct : false, + 'accepted' => $leader_val_pct ? round( $leader_val_pct ) . '%' : '-' + ); + + $period['top_users']['top_user_num_cs'] = array( + 'user_id' => $leader_user_id_num_cs ? $leader_user_id_num_cs : false, + 'sent' => $leader_val_num_cs ? $leader_val_num_cs : false + ); + + $period['top_users']['top_user_pct_cs'] = array( + 'user_id' => $leader_user_id_pct_cs ? $leader_user_id_pct_cs : false, + 'accepted' => $leader_val_pct_cs ? round( $leader_val_pct_cs ) . '%' : '-' + ); + + // Fetch userlinks + foreach( $period['top_users'] as $key => $top_user ) { + $link = bp_core_get_userlink( $top_user['user_id'] ); + $period['top_users'][$key]['user_link'] = $link; + } + + + $this->time_periods[$tp] = $period; + } + } + + /** + * Add the date_sql filter to the where clause of the post query + * + * @package Invite Anyone + * @since 0.9 + * + * @param str $where Where clause from WP_Query + * @param str $where Where clause with date_sql appended + */ + function where_filter( $where ) { + $where .= $this->date_sql; + return $where; + } + + /** + * Displays the admin panel markup + * + * @package Invite Anyone + * @since 0.9 + */ + function display() { +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + time_periods as $tp => $period ) : ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + + + + + + + + + + + + + + + + + + + + + +
              + + + + + + + + + + + + + + + + + + + + + + + +
              + + +

              Note: CloudSponge data has only been recorded since Invite Anyone v0.9.

              + + \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/by-email/by-email-css.css b/wp-content/plugins/invite-anyone/by-email/by-email-css.css new file mode 100644 index 0000000..9f7f881 --- /dev/null +++ b/wp-content/plugins/invite-anyone/by-email/by-email-css.css @@ -0,0 +1,261 @@ +#subnav #invite-new-members { + padding-left:20px; + background: url(../images/invite_bullet.gif) no-repeat 0 50%; +} + +#subnav #sent-invites { + padding-left:20px; + background: url(../images/email_go.png) no-repeat 0 50%; +} +#welcome-message, +#sent-invites-intro {font-size:14px;} + +#invite-anyone-email-fields { + margin: 15px 30px 0 0; + list-style-type: lower-alpha; +} + +#invite-anyone-steps { + margin: 0 20px; + list-style-type: decimal; +} + +#invite-anyone-steps li { + margin: 20px; +} + +#invite-anyone-steps label, +#invite-anyone-steps p {font-weight:bold;} + +#invite-anyone-steps label { + display:block; + margin-bottom:5px; +} + +#invite-anyone-email-fields { + width: 380px; +} + +.invite-anyone-email-field { + width: 380px; +} + +#invite-anyone-custom-subject { + width: 400px; + height: 30px; +} + +label span.disabled-subject { + font-style:italic; + color:#8f8f8f; + font-size:11px; +} + +#invite-anyone-custom-message { + width: 400px; + height: 130px; + margin-bottom: 10px; +} + +#invite-anyone-group-list { + margin: 0; + padding: 0; + clear: both; + overflow:hidden; + width:100%; +<<<<<<< HEAD + +======= +>>>>>>> ef3663091faf6e7c70fbaa3f1639e5febef8d0f0 +} + +#invite-anyone-group-list li { + width: 200px; + margin: 5px 10px 10px 10px; + float: left; + height:60px; + min-height: 60px; + font-size: 11px; +} + +#invite-anyone-group-list li img { + margin-right: 5px; + float: left; + vertical-align:center; +} + +#invite-anyone-group-list label {margin-bottom:0;} + +#invite-anyone-group-list label, +#invite-anyone-group-list input { + cursor:pointer; +} + +#invite-anyone-group-list label span { + font-weight:normal; + line-height:30px; +} + +#invite-anyone-group-list li input { + float: left; + margin:10px 6px; + width:20px; +} + +.invite-anyone-group-name { + float: left; +} + +.invite-new-members .submit { + clear: both; + padding: 20px; +} + +.invite-anyone-sent-invites { + text-align: left; +} + +thead tr {border-bottom:2px solid #555;} + +thead tr th a.DESC { + padding-right:20px; + background: url(../images/sort-col-desc.gif) no-repeat 100% 50% ; +} + +thead tr th a.ASC { + padding-right:20px; + background: url(../images/sort-col-asc.gif) no-repeat 100% 0 ; +} + +.invite-anyone-sent-invites tbody tr { + border:2px solid #fff; + border-left:none; + border-right:none; +} + +.invite-anyone-sent-invites th a { + font-weight: normal; + text-decoration: none; +} + +.invite-anyone-sent-invites th.sort-by-me a { + font-weight: bold; + text-decoration: underline; +} + +.invite-anyone-sent-invites tbody tr td:first-child { + width: 30px; + text-align: center; +} + +.invite-anyone-sent-invites tr td:first-child a { + text-decoration: none; +} + +.invite-anyone-sent-invites tr.over { + background: #FFFEF3; +} + +.invite-anyone-sent-invites tr.accepted { + background:#FFFFE3; +} + +.invite-anyone-sent-invites tr.accepted td { + color: #70B479; +} + +.invite-anyone-sent-invites tr.accepted td.date-joined { + background: url(../images/tick.gif) no-repeat 0 50%; + padding-left:25px; +} + +.clear-entry, +.clear-entry span { + width:18px; + height:16px; +} + +.clear-entry { + position:relative; + display:block; + text-indent:-999em; +} + +.clear-entry span { + position:absolute; + left:0; + background: url(../images/clear-x.gif) no-repeat 0 0; + cursor:pointer; +} + +.clear-entry span:hover {background-position: 0 100%;} + +tr#batch-clear { + border-top:1px solid #8f8f8f; +} + +ul#invite-anyone-clear-links { + overflow:hidden; + width:100%; +} + +ul#invite-anyone-clear-links li { + float:left; +} + +ul#invite-anyone-clear-links li a { + padding-right:10px; + border-right: 1px solid #555; +} + +ul#invite-anyone-clear-links li.last a { + padding-left:10px; + border:none; +} + +#invite-anyone-steps div.invite-anyone-error p, +div.invite-anyone-error p { + display: inline-block; + font-weight: normal; + border-bottom: 1px solid #FFE8C4; + border-right: 1px solid #FFE8C4; + margin: 15px 0; + text-decoration: none; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + padding: 10px 15px; + font-size: 12px; + display: block; + background: #e41717; + color: #fff; + border-color: #a71a1a; + clear: left; +} + +textarea.invite-anyone-email-addresses { + width: 400px; + height: 130px; +} + +.ia-pagination { + position: relative; + height: 30px; + margin-top: 10px; + color: #555; + font-size: 11px; +} + .ia-pagination .currently-viewing { + position: absolute; + top: 0; + left: 0; + font-style: italic; + } + .ia-pagination .pag-links { + position: absolute; + top: 0; + right: 0; + } + .ia-pagination .page-numbers { + margin-left: 8px; + } \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/by-email/by-email-db.php b/wp-content/plugins/invite-anyone/by-email/by-email-db.php new file mode 100644 index 0000000..647de24 --- /dev/null +++ b/wp-content/plugins/invite-anyone/by-email/by-email-db.php @@ -0,0 +1,1031 @@ +construct(); + } + + /** + * PHP5 Constructor + * + * @package Invite Anyone + * @since 0.8 + */ + function __construct() { + global $current_blog; + + // There's no reason for the CPT to be loaded on non-root-blogs + if ( is_multisite() && $current_blog->blog_id != BP_ROOT_BLOG ) { + return; + } + + // Check the current db version and update if necessary + $this->db_version = get_option( 'invite_anyone_db_version' ); + + // Check for necessary updates to data schema + $this->update(); + + if ( $this->db_version != BP_INVITE_ANYONE_DB_VER ) { + update_option( 'invite_anyone_db_version', BP_INVITE_ANYONE_DB_VER ); + $this->db_version = BP_INVITE_ANYONE_DB_VER; + } + + // Define the post type name used throughout + $this->post_type_name = apply_filters( 'invite_anyone_post_type_name', 'ia_invites' ); + + // Define the invitee tax name used throughout + $this->invitee_tax_name = apply_filters( 'invite_anyone_invitee_tax_name', 'ia_invitees' ); + + // Define the invited group tax name used throughout + $this->invited_groups_tax_name = apply_filters( 'invite_anyone_invited_group_tax_name', 'ia_invited_groups' ); + + // Hooks into the 'init' action to register our WP custom post type and tax + add_action( 'init', array( $this, 'register_post_type' ), 1 ); + } + + /** + * Registers Invite Anyone's post type and taxonomies + * + * Data schema: + * - The ia_invites post type represents individual invitations, with post data divvied up + * as follows: + * - post_title is the subject of the email sent + * - post_content is the content of the email + * - post_author is the person sending the invitation + * - post_date is the date/time when the invitation is sent + * - post_status represents 'is_hidden' on the old custom table schema: + * - Default is 'publish' - i.e. the user sees the invitation on Sent Invites + * - When the invitation is hidden, it is switched to 'draft' + * - The ia_invitees taxonomy represents invited email addresses + * - The ia_invited_groups taxonomy represents the groups that a user has been invited to + * when the group invitation is sent + * - The following data is stored in postmeta: + * - opt_out (corresponds to old is_opt_out) is stored at opt_out time + * - The invitation accepted date is stored in a post_meta called bp_ia_accepted + * + * @package BuddyPress Docs + * @since 1.0 + */ + function register_post_type() { + global $bp; + + // Define the labels to be used by the post type + $post_type_labels = apply_filters( 'invite_anyone_post_type_labels', array( + 'name' => _x( 'BuddyPress Invitations', 'post type general name', 'bp-invite-anyone' ), + 'singular_name' => _x( 'Invitation', 'post type singular name', 'bp-invite-anyone' ), + 'add_new' => _x( 'Add New', 'add new', 'bp-invite-anyone' ), + 'add_new_item' => __( 'Add New Invitation', 'bp-invite-anyone' ), + 'edit_item' => __( 'Edit Invitation', 'bp-invite-anyone' ), + 'new_item' => __( 'New Invitation', 'bp-invite-anyone' ), + 'view_item' => __( 'View Invitation', 'bp-invite-anyone' ), + 'search_items' => __( 'Search Invitation', 'bp-invite-anyone' ), + 'not_found' => __( 'No Invitations found', 'bp-invite-anyone' ), + 'not_found_in_trash' => __( 'No Invitations found in Trash', 'bp-invite-anyone' ), + 'parent_item_colon' => '' + ), $this ); + + // Register the invitation post type + register_post_type( $this->post_type_name, apply_filters( 'invite_anyone_post_type_args', array( + 'label' => __( 'BuddyPress Invitations', 'bp-invite-anyone' ), + 'labels' => $post_type_labels, + 'public' => false, + '_builtin' => false, + 'show_ui' => $this->show_dashboard_ui(), + 'hierarchical' => false, + 'menu_icon' => WP_PLUGIN_URL . '/invite-anyone/images/smallest_buddypress_icon_ev.png', + 'supports' => array( 'title', 'editor', 'custom-fields' ) + ), $this ) ); + + // Define the labels to be used by the invitee taxonomy + $invitee_labels = apply_filters( 'invite_anyone_invitee_labels', array( + 'name' => __( 'Invitees', 'bp-invite-anyone' ), + 'singular_name' => __( 'Invitee', 'bp-invite-anyone' ), + 'search_items' => __( 'Search Invitees', 'bp-invite-anyone' ), + 'all_items' => __( 'All Invitees', 'bp-invite-anyone' ), + 'edit_item' => __( 'Edit Invitee', 'bp-invite-anyone' ), + 'update_item' => __( 'Update Invitee', 'bp-invite-anyone' ), + 'add_new_item' => __( 'Add New Invitee', 'bp-invite-anyone' ), + 'new_item_name' => __( 'New Invitee Name', 'bp-invite-anyone' ), + 'menu_name' => __( 'Invitee' ), + ), $this ); + + // Register the invitee taxonomy + register_taxonomy( $this->invitee_tax_name, $this->post_type_name, apply_filters( 'invite_anyone_invitee_tax_args', array( + 'label' => __( 'Invitees', 'bp-invite-anyone' ), + 'labels' => $invitee_labels, + 'hierarchical' => false, + 'show_ui' => true, + ), $this ) ); + + // Define the labels to be used by the invited groups taxonomy + $invited_groups_labels = apply_filters( 'invite_anyone_invited_groups_labels', array( + 'name' => __( 'Invited Groups', 'bp-invite-anyone' ), + 'singular_name' => __( 'Invited Group', 'bp-invite-anyone' ), + 'search_items' => __( 'Search Invited Groups', 'bp-invite-anyone' ), + 'all_items' => __( 'All Invited Groups', 'bp-invite-anyone' ), + 'edit_item' => __( 'Edit Invited Group', 'bp-invite-anyone' ), + 'update_item' => __( 'Update Invited Group', 'bp-invite-anyone' ), + 'add_new_item' => __( 'Add New Invited Group', 'bp-invite-anyone' ), + 'new_item_name' => __( 'New Invited Group Name', 'bp-invite-anyone' ), + 'menu_name' => __( 'Invited Group' ), + ), $this ); + + // Register the invited groups taxonomy + register_taxonomy( $this->invited_groups_tax_name, $this->post_type_name, apply_filters( 'invite_anyone_invited_group_tax_args', array( + 'label' => __( 'Invited Groups', 'bp-invite-anyone' ), + 'labels' => $invited_groups_labels, + 'hierarchical' => false, + 'show_ui' => true, + ), $this ) ); + + // Stash in $bp because of template tags that need it + $bp->invite_anyone->invitee_tax_name = $this->invitee_tax_name; + $bp->invite_anyone->invited_groups_tax_name = $this->invited_groups_tax_name; + } + + /** + * A filtered check for is_super_admin(), so plugins can mod who can see the Dashboard UI + * for the custom post type + * + * @package Invite Anyone + * @since 0.9 + * + * @return bool + */ + function show_dashboard_ui() { + return apply_filters( 'show_dashboard_ui', is_super_admin() ); + } + + /** + * Checks for necessary updates to data schema + * + * @package Invite Anyone + * @since 0.9 + */ + function update() { + if ( version_compare( $this->db_version, '0.9', '<' ) ) { + add_action( 'admin_init', array( $this, 'upgrade_0_9' ) ); + } + } + + /** + * Upgrade for pre-0.9 + * + * @package Invite Anyone + * @since 0.9 + */ + function upgrade_0_9() { + global $wp_query, $post; + + $args = array( + 'posts_per_page' => '30', + 'paged' => '1' + ); + + // Get the invites + $invite = new Invite_Anyone_Invitation; + $invites = $invite->get( $args ); + + // Get the total. We're going to loop through them in an attempt to save memory. + $total_invites = $invites->found_posts; + + unset( $invites ); + unset( $args ); + + // WP bug + $old_wp_query = $wp_query; + + $paged = 0; + while ( $paged * 30 <= $total_invites ) { + $paged++; + + $args = array( + 'posts_per_page' => '30', + 'paged' => $paged + ); + + // Get the invites + $invite = new Invite_Anyone_Invitation; + $invites = $invite->get( $args ); + + // I don't understand why, but I have to do this to avoid errors. WP bug? + $wp_query = $invites; + + if ( $invites->have_posts() ) { + while ( $invites->have_posts() ) { + $invites->the_post(); + + // Migrate the accepted data from date_modified to a meta + if ( !get_post_meta( get_the_ID(), 'bp_ia_accepted', true ) ) { + // When the dates are different, it's been accepted + if ( $post->post_date != $post->post_modified ) { + update_post_meta( get_the_ID(), 'bp_ia_accepted', $post->post_modified ); + } else { + // We set this to null so it still comes up in the + // meta query + update_post_meta( get_the_ID(), 'bp_ia_accepted', '' ); + } + } + } + } + + unset( $invites ); + unset( $args ); + } + + // WP bug + $wp_query = $old_wp_query; + } +} + +$invite_anyone_data = new Invite_Anyone_Schema; + +/** + * Defines the invitation object and its methods + * + * @package Invite Anyone + * @since 0.8 + */ +class Invite_Anyone_Invitation { + var $id; + var $invitee_tax_name; + var $post_type_name; + var $invited_groups_tax_name; + var $email_order; + + /** + * PHP4 Constructor + * + * @package Invite Anyone + * @since 0.8 + * + * @param int $id Optional. The unique id of the invitation post + */ + function invite_anyone_invitation( $id = false, $user_id ) { + $this->construct( $id ); + } + + /** + * PHP5 Constructor + * + * @package Invite Anyone + * @since 0.8 + * + * @param int $id Optional. The unique id of the invitation post + */ + function __construct( $id = false ) { + if ( $id ) { + $this->id = $id; + } + + // Define the post type name used throughout + $this->post_type_name = apply_filters( 'invite_anyone_post_type_name', 'ia_invites' ); + + // Define the invitee tax name used throughout + $this->invitee_tax_name = apply_filters( 'invite_anyone_invitee_tax_name', 'ia_invitees' ); + + // Define the invited group tax name used throughout + $this->invited_groups_tax_name = apply_filters( 'invite_anyone_invited_group_tax_name', 'ia_invited_groups' ); + } + + /** + * Creates a new invitation + * + * See the $defaults array for the potential values of $args + * + * @package Invite Anyone + * @since 0.8 + * + * @param array $args + */ + function create( $args = false ) { + // Set up the default arguments + $defaults = apply_filters( 'invite_anyone_create_invite_defaults', array( + 'inviter_id' => bp_loggedin_user_id(), + 'invitee_email' => false, + 'message' => false, + 'subject' => false, + 'groups' => false, + 'status' => 'publish', // i.e., visible on Sent Invites + 'date_created' => bp_core_current_time( false ), + 'date_modified' => bp_core_current_time( false ), + 'is_cloudsponge' => false + ) ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + // Let plugins stop this process if they want + do_action( 'invite_anyone_before_invitation_create', $r, $args ); + + // We can't record an invitation without a few key pieces of data + if ( empty( $inviter_id ) || empty( $invitee_email ) || empty( $message ) || empty( $subject ) ) + return false; + + // Set the arguments and create the post + $insert_post_args = array( + 'post_author' => $inviter_id, + 'post_content' => $message, + 'post_title' => $subject, + 'post_status' => $status, + 'post_type' => $this->post_type_name, + 'post_date' => $date_created + ); + + if ( !$this->id = wp_insert_post( $insert_post_args ) ) + return false; + + // If a date_modified has been passed, update it manually + if ( $date_modified ) { + $post_modified_args = array( + 'ID' => $this->id, + 'post_modified' => $date_modified + ); + + wp_update_post( $post_modified_args ); + } + + // Save a blank bp_ia_accepted post_meta + update_post_meta( $this->id, 'bp_ia_accepted', '' ); + + // Save a meta item about whether this is a CloudSponge email + update_post_meta( $this->id, 'bp_ia_is_cloudsponge', $is_cloudsponge ? __( 'Yes', 'bp-invite-anyone' ) : __( 'No', 'bp-invite-anyone' ) ); + + // Now set up the taxonomy terms + + // Invitee + wp_set_post_terms( $this->id, $invitee_email, $this->invitee_tax_name ); + + // Groups included in the invitation + if ( !empty( $groups ) ) + wp_set_post_terms( $this->id, $groups, $this->invited_groups_tax_name ); + + do_action( 'invite_anyone_after_invitation_create', $this->id, $r, $args ); + + return $this->id; + } + + /** + * Pulls up a list of existing invitations, based on a set of arguments provided + * + * See the $defaults array for the potential values of $args + * + * @package Invite Anyone + * @since 0.8 + * + * @param array $args + */ + function get( $args = false ) { + // Set up the default arguments + $defaults = apply_filters( 'invite_anyone_get_invite_defaults', array( + 'inviter_id' => false, + 'invitee_email' => false, + 'message' => false, + 'subject' => false, + 'groups' => false, + 'status' => 'publish', // i.e., visible on Sent Invites + 'date_created' => false, + 'posts_per_page' => false, + 'paged' => false, + 'orderby' => 'post_date', + 'order' => 'DESC' + ) ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r ); + + // Backward compatibility, and to keep the URL args clean + if ( $orderby == 'email' ) { + $orderby = $this->invitee_tax_name; + } else if ( $orderby == 'date_joined' || $orderby == 'accepted' ) { + $orderby = 'meta_value'; + $r['meta_key'] = 'bp_ia_accepted'; + } + + if ( !$posts_per_page && !$paged ) { + $r['posts_per_page'] = '10'; + $r['paged'] = '1'; + } + + // Todo: move all of this business to metadata + if ( 'ia_invitees' == $orderby ) { + // Filtering the query so that it's possible to sort by taxonomy terms + // This is not a recommended technique, as it's likely to break + add_filter( 'posts_fields', array( $this, 'filter_fields_emails' ), 10, 2 ); + add_filter( 'posts_join_paged', array( $this, 'filter_join_emails' ), 10, 2 ); + add_filter( 'posts_orderby', array( $this, 'filter_orderby_emails' ), 10, 2 ); + + $this->email_order = $order; + + // Limitations in the WP_Tax_Query class mean I have to assemble a tax term + // list first + $emails = get_terms( $this->invitee_tax_name, array( 'fields' => 'names' ) ); + + $r['tax_query'] = array( + array( + 'taxonomy' => $this->invitee_tax_name, + 'terms' => $emails, + 'field' => 'slug', + 'operator' => 'IN' + ) + ); + } + + // Let plugins stop this process if they want + do_action( 'invite_anyone_before_invitation_get', $r, $args ); + + // Set the arguments and get the posts + $query_post_args = array( + 'author' => $inviter_id, + 'post_status' => $status, + 'post_type' => $this->post_type_name, + 'orderby' => $orderby, + 'order' => $order + ); + + // Add optional arguments, if provided + // Todo: The tax and meta stuff needs to be updated for 3.1 queries + $optional_args = array( + 'message' => 'post_content', + 'subject' => 'post_title', + 'date_created' => 'date_created', + 'invitee_email' => $this->invitee_tax_name, + 'meta_key' => 'meta_key', + 'meta_value' => 'meta_value', + 'posts_per_page' => 'posts_per_page', + 'paged' => 'paged', + 'tax_query' => 'tax_query' + ); + + foreach ( $optional_args as $key => $value ) { + if ( !empty( $r[$key] ) ) { + $query_post_args[$value] = $r[$key]; + } + } + + return new WP_Query( $query_post_args ); + } + + /** + * Filters the join section of the query when sorting by invited email address + * + * This is a hack and should be removed. Migrate this data to metadata. + * + * @package Invite Anyone + * @since 0.9 + */ + function filter_join_emails( $join, $query ) { + global $wpdb; + + $join .= $wpdb->prepare( " INNER JOIN {$wpdb->term_taxonomy} wp_term_taxonomy_ia ON (wp_term_taxonomy_ia.term_taxonomy_id = wp_term_relationships.term_taxonomy_id) INNER JOIN {$wpdb->terms} wp_terms_ia ON ( wp_terms_ia.term_id = wp_term_taxonomy_ia.term_id )" ); + + return $join; + } + + /** + * Filters the fields section of the query when sorting by invited email address + * + * This is a hack and should be removed. Migrate this data to metadata. + * + * @package Invite Anyone + * @since 0.9 + */ + function filter_fields_emails( $fields, $query ) { + $fields .= ' ,wp_terms_ia.name, wp_term_taxonomy_ia.term_taxonomy_id'; + + return $fields; + } + + /** + * Filters the orderby section of the query when sorting by invited email address + * + * This is a hack and should be removed. Migrate this data to metadata. + * + * @package Invite Anyone + * @since 0.9 + */ + function filter_orderby_emails( $orderby, $query ) { + $orderby = 'wp_terms_ia.name ' . $this->email_order; + + return $orderby; + } + + /** + * Mark an invitation as accepted + * + * @package Invite Anyone + * @since 0.8 + * + * @param array $args + */ + function mark_accepted() { + update_post_meta( $this->id, 'bp_ia_accepted', $args['post_modified'] ); + + return true; + } + + /** + * Clear (unpublish) an invitation + * + * @package Invite Anyone + * @since 0.8 + * + * @param array $args + */ + function clear() { + $args = array( + 'ID' => $this->id, + 'post_status' => 'draft' + ); + if ( wp_update_post( $args ) ) + return true; + + return false; + } + + /** + * Mark an invite as being opt-out + * + * @package Invite Anyone + * @since 0.8 + * + * @param array $args + */ + function mark_opt_out() { + if ( update_post_meta( $this->id, 'opt_out', 'yes' ) ) + return true; + + return false; + } +} + +/** + * Records an invitation + * + * @package Invite Anyone + * @since {@internal Version Unknown} + * + * @param int $inviter_id + * @param str $email The email address of the individual receiving the invitation + * @param str $message The content of the email message + * @param array $groups An array of group ids that the invitation invites the user to join + * @param str $subject Optional The subject line of the email + * @param bool $is_cloudsponge Did this email address originate with CloudSponge? + */ +function invite_anyone_record_invitation( $inviter_id, $email, $message, $groups, $subject = false, $is_cloudsponge = false ) { + $args = array( + 'inviter_id' => $inviter_id, + 'invitee_email' => $email, + 'message' => $message, + 'subject' => $subject, + 'groups' => $groups, + 'is_cloudsponge' => $is_cloudsponge + ); + + $invite = new Invite_Anyone_Invitation; + + $id = $invite->create( $args ); + + return $id; +} + + +/** + * Get the invitations that a user has sent + * + * @package Invite Anyone + * @since {@internal Version Unknown} + * + * @param int $inviter_id + * @param str $orderby Optional The column being ordered by + * @param str $order Optional ASC or DESC + */ +function invite_anyone_get_invitations_by_inviter_id( $inviter_id, $orderby = false, $order = false, $posts_per_page = false, $paged = false ) { + $args = array( + 'inviter_id' => $inviter_id, + 'orderby' => $orderby, + 'order' => $order, + 'posts_per_page'=> $posts_per_page, + 'paged' => $paged + ); + + $invite = new Invite_Anyone_Invitation; + + return $invite->get( $args ); +} + +/** + * Get the invitations that have been sent to a given email address + * + * @package Invite Anyone + * @since {@internal Version Unknown} + * + * @param str $email The email address being checked + */ +function invite_anyone_get_invitations_by_invited_email( $email ) { + // hack to make sure that gmail + email addresses work + $email = str_replace( ' ', '+', $email ); + + $args = array( + 'invitee_email' => $email, + 'posts_per_page' => -1 + ); + + $invite = new Invite_Anyone_Invitation; + + return $invite->get( $args ); +} + +/** + * Clears invitations from the Sent Invites list + * + * @package Invite Anyone + * @since {@internal Version Unknown} + * + * @param array $args See below for the definition + */ +function invite_anyone_clear_sent_invite( $args ) { + global $post; + + /* Accepts arguments: array( + 'inviter_id' => id number of the inviter, (required) + 'clear_id' => id number of the item to be cleared, + 'type' => accepted, unaccepted, or all + ); */ + + $defaults = array( + 'inviter_id' => false, + 'clear_id' => false, + 'type' => false + ); + $args = wp_parse_args( $args, $defaults ); + + extract( $args ); + + if ( empty( $inviter_id ) ) + return false; + + $success = false; + + if ( $clear_id ) { + $invite = new Invite_Anyone_Invitation( $clear_id ); + if ( $invite->clear() ) + $success = true; + } else { + array( + 'inviter_id' => $inviter_id, + 'posts_per_page' => -1 + ); + + $invite = new Invite_Anyone_Invitation; + + $iobj = $invite->get( $args ); + + if ( $iobj->have_posts() ) { + while ( $iobj->have_posts() ) { + $iobj->the_post(); + + $clearme = false; + switch ( $type ) { + case 'accepted' : + if ( get_post_meta( get_the_ID(), 'bp_ia_accepted', true ) ) { + $clearme = true; + } + break; + case 'unaccepted' : + if ( !get_post_meta( get_the_ID(), 'bp_ia_accepted', true ) ) { + $clearme = true; + } + break; + case 'all' : + default : + $clearme = true; + break; + } + + if ( $clearme ) { + $this_invite = new Invite_Anyone_Invitation( get_the_ID() ); + $this_invite->clear(); + } + } + } + } + + return true; + +} + +/** + * Mark all of the invitations associated with a given address as joined + * + * @package Invite Anyone + * @since {@internal Version Unknown} + * + * @param str $email The email address being checked + */ +function invite_anyone_mark_as_joined( $email ) { + $invites = invite_anyone_get_invitations_by_invited_email( $email ); + + if ( $invites->have_posts() ) { + while ( $invites->have_posts() ) { + the_post(); + + $invite = new Invite_Anyone_Invitation( get_the_ID() ); + $invite->mark_accepted(); + } + } + + return true; +} + +/** + * Check to see whether a user has opted out of email invitations from the site + * + * @package Invite Anyone + * @since {@internal Version Unknown} + * + * @param str $email The email address being checked + */ +function invite_anyone_check_is_opt_out( $email ) { + $email = str_replace( ' ', '+', $email ); + + $args = array( + 'invitee_email' => $email, + 'posts_per_page' => 1, + 'meta_key' => 'opt_out', + 'meta_value' => 'yes' + ); + + $invite = new Invite_Anyone_Invitation; + + $invites = $invite->get( $args ); + + if ( $invites->have_posts() ) + return true; + else + return false; +} + +/** + * Mark all of an address's invitations as opt_out so that no others are sent + * + * @package Invite Anyone + * @since {@internal Version Unknown} + * + * @param str $email The email address being checked + */ +function invite_anyone_mark_as_opt_out( $email ) { + $invites = invite_anyone_get_invitations_by_invited_email( $email ); + + if ( $invites->have_posts() ) { + while ( $invites->have_posts() ) { + $invites->the_post(); + + $invite = new Invite_Anyone_Invitation( get_the_ID() ); + $invite->mark_opt_out(); + } + } + + return true; +} + +/** + * Checks to see whether a migration is necessary, and if so, prompts the user for it. + * + * @package Invite Anyone + * @since 0.8.3 + */ +function invite_anyone_migrate_nag() { + global $wpdb; + + // only show the nag to the network admin + if ( !is_super_admin() ) + return; + + // Some backward compatibility crap + $maybe_version = get_option( 'invite_anyone_db_version' ); + if ( empty( $maybe_version ) ) { + $iaoptions = get_option( 'invite_anyone' ); + $maybe_version = !empty( $iaoptions['db_version'] ) ? $iaoptions['db_version'] : '0.7'; + } + + // If you're on the Migrate page, no need to show the message + if ( !empty( $_GET['migrate'] ) && $_GET['migrate'] == '1' ) + return; + + // Don't run this migrator if coming from IA 0.8 or greater + if ( version_compare( $maybe_version, '0.8', '>=' ) ) + return; + + $table_exists = $wpdb->get_var( $wpdb->prepare( "SHOW TABLES LIKE %s", "%{$wpdb->base_prefix}bp_invite_anyone%" ) ); + + if ( !$table_exists ) + return; + + // First, check to see whether the data table exists + $table_name = $wpdb->base_prefix . 'bp_invite_anyone'; + $invite_count = $wpdb->get_var( "SELECT COUNT(*) FROM {$table_name}" ); + + if ( !$invite_count ) + return; + + // The auto-script can usually handle a migration of 5 or less + if ( (int)$invite_count <= 5 ) { + invite_anyone_data_migration(); + return; + } else { + $url = is_multisite() && function_exists( 'network_admin_url' ) ? network_admin_url( 'admin.php?page=invite-anyone/admin/admin-panel.php' ) : admin_url( 'admin.php?page=invite-anyone/admin/admin-panel.php' ); + $url = add_query_arg( 'migrate', '1', $url ); + ?> + +
              +

              Invite Anyone has been updated. Click here to migrate your invitation data and complete the upgrade.

              +
              + + base_prefix . 'bp_invite_anyone'; + + $total_table_contents = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$table_name}" ) ); + + $table_contents_sql = $wpdb->prepare( "SELECT * FROM {$table_name}" ); + + $table_contents_sql .= " ORDER BY id ASC LIMIT 5"; + + if ( $is_partial ) { + $table_contents_sql .= " OFFSET $start"; + } + + $table_contents = $wpdb->get_results( $table_contents_sql ); + + // If this is a stepwise migration, and the start number is too high or the table_contents + // query is empty, it means we've gotten to the end of the migration. + if ( $is_partial && ( (int)$start > $total_table_contents ) ) { + // Finally, update the Invite Anyone DB version so this doesn't run again + update_option( 'invite_anyone_db_version', BP_INVITE_ANYONE_DB_VER ); + + $url = is_multisite() && function_exists( 'network_admin_url' ) ? network_admin_url( 'admin.php?page=invite-anyone/admin/admin-panel.php' ) : admin_url( 'admin.php?page=invite-anyone/admin/admin-panel.php' ); + ?> + +

              + + + + $invite ) { + $success = false; + + // Instead of grabbing these from a global or something, I'm just filtering them + // in the same way that they are in the data schema + $post_type = apply_filters( 'invite_anyone_post_type_name', 'ia_invites' ); + $tax_name = apply_filters( 'invite_anyone_invitee_tax_name', 'ia_invitees' ); + + $invite_exists_args = array( + 'author' => $invite->inviter_id, + $tax_name => $invite->email, + 'date_created' => $invite->date_invited, + 'post_type' => $post_type + ); + + $maybe_invite = get_posts( $invite_exists_args ); + + if ( empty( $maybe_invite ) ) { + // First, record the invitation + $new_invite = new Invite_Anyone_Invitation; + $args = array( + 'inviter_id' => $invite->inviter_id, + 'invitee_email' => $invite->email, + 'message' => $invite->message, + 'subject' => __( 'Migrated Invitation', 'bp-invite-anyone' ), + 'groups' => maybe_unserialize( $invite->group_invitations ), + 'status' => 'publish', + 'date_created' => $invite->date_invited, + 'date_modified' => $invite->date_joined, + ); + + if ( $new_invite_id = $new_invite->create( $args ) ) { + // Now look to see whether the item should be opt out + if ( $invite->is_opt_out ) + update_post_meta( $new_invite_id, 'opt_out', 'yes' ); + + $success = true; + } + + if ( $success ) + $record_count++; + + if ( $is_partial ) { + $inviter = bp_core_get_user_displayname( $invite->inviter_id ); + printf( __( 'Importing: %1$s invited %2$s
              ', 'bp-invite-anyone' ), $inviter, $invite->email ); + } + } + } + + if ( $is_partial ) { + $url = is_multisite() && function_exists( 'network_admin_url' ) ? network_admin_url( 'admin.php?page=invite-anyone/admin/admin-panel.php' ) : admin_url( 'admin.php?page=invite-anyone/admin/admin-panel.php' ); + $url = add_query_arg( 'migrate', '1', $url ); + $url = add_query_arg( 'start', $start + 5, $url ); + + ?> +

              + + + + +
              +

              + + +

              + + GO + + + + +
              + + diff --git a/wp-content/plugins/invite-anyone/by-email/by-email-js.js b/wp-content/plugins/invite-anyone/by-email/by-email-js.js new file mode 100644 index 0000000..06afd16 --- /dev/null +++ b/wp-content/plugins/invite-anyone/by-email/by-email-js.js @@ -0,0 +1,5 @@ +jQuery(document).ready( function() { + + var j = jQuery; + +}); \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/by-email/by-email.php b/wp-content/plugins/invite-anyone/by-email/by-email.php new file mode 100644 index 0000000..41bc1d9 --- /dev/null +++ b/wp-content/plugins/invite-anyone/by-email/by-email.php @@ -0,0 +1,1264 @@ +current_component == BP_INVITE_ANYONE_SLUG ) { + $style_url = WP_PLUGIN_URL . '/invite-anyone/by-email/by-email-css.css'; + $style_file = WP_PLUGIN_DIR . '/invite-anyone/by-email/by-email-css.css'; + if (file_exists($style_file)) { + wp_register_style('invite-anyone-by-email-style', $style_url); + wp_enqueue_style('invite-anyone-by-email-style'); + } + } +} +add_action( 'wp_print_styles', 'invite_anyone_add_by_email_css' ); + +function invite_anyone_add_by_email_js() { + global $bp; + + if ( $bp->current_component == BP_INVITE_ANYONE_SLUG ) { + $style_url = WP_PLUGIN_URL . '/invite-anyone/by-email/by-email-js.js'; + $style_file = WP_PLUGIN_DIR . '/invite-anyone/by-email/by-email-js.js'; + if (file_exists($style_file)) { + wp_register_script('invite-anyone-by-email-scripts', $style_url); + wp_enqueue_script('invite-anyone-by-email-scripts'); + } + } +} +add_action( 'wp_print_scripts', 'invite_anyone_add_by_email_js' ); + +function invite_anyone_setup_globals() { + global $bp, $wpdb; + + $bp->invite_anyone->id = 'invite_anyone'; + + $bp->invite_anyone->table_name = $wpdb->base_prefix . 'bp_invite_anyone'; + $bp->invite_anyone->slug = 'invite-anyone'; + + /* Register this in the active components array */ + $bp->active_components[$bp->invite_anyone->slug] = $bp->invite_anyone->id; +} +add_action( 'bp_setup_globals', 'invite_anyone_setup_globals', 2 ); + + +function invite_anyone_opt_out_screen() { + global $bp; + + if ( isset( $_POST['oops_submit'] ) ) { + bp_core_redirect( site_url( BP_REGISTER_SLUG ) . '/accept-invitation/' . urlencode( $_POST['opt_out_email'] ) ); + } + + $opt_out_button_text = __( 'Opt Out', 'bp-invite-anyone' ); + $oops_button_text = __( 'Accept Invitation', 'bp-invite-anyone' ); + + $sitename = get_bloginfo( 'name' ); + + $opt_out_message = sprintf( __( 'To opt out of future invitations to %s, make sure that your email is entered in the field below and click "Opt Out".', 'bp-invite-anyone' ), $sitename ); + + $oops_message = sprintf( __( 'If you are here by mistake and would like to accept your invitation to %s, click "Accept Invitation" instead.', 'bp-invite-anyone' ), $sitename ); + + if ( $bp->current_component == BP_REGISTER_SLUG && $bp->current_action == 'opt-out' ) { + get_header(); +?> +
              +
              + action_variables[1] == 'submit' ) : ?> + + + + + + +

              + +

              + + + + + + + action_variables[0] ) : ?> + + + +
              + + + +

              + +

              + + + + +

              + +

              +

              + +
              + +
              +
              + + current_action ) && $bp->current_action == 'accept-invitation' && empty( $bp->action_variables[0] ) ) : ?> +

              + + + signup->step == 'request-details' && $bp->current_action == 'accept-invitation' && $email = urldecode( $bp->action_variables[0] ) ) : ?> + + + + + + + have_posts() ) { + while ( $ia_obj->have_posts() ) { + $ia_obj->the_post(); + $inviters[] = get_the_author_meta( 'ID' ); + } + } + $inviters = array_unique( $inviters ); + + $inviters_text = ''; + if ( count( $inviters ) == 0 ) { + $inviters_text = ''; + } else if ( count( $inviters ) == 1 ) { + $inviters_text .= 'by '; + $inviters_text .= bp_core_get_user_displayname( $inviters[0] ); + } else { + $counter = 1; + $inviters_text .= 'by '; + $inviters_text .= bp_core_get_user_displayname( $inviters[0] ); + while ( $counter < count( $inviters ) - 1 ) { + $inviters_text .= ', ' . bp_core_get_user_displayname( $inviters[$counter] ); + $counter++; + } + $inviters_text .= ' and ' . bp_core_get_user_displayname( $inviters[$counter] ); + } + + if ( !empty( $inviters_text ) ) { + $message = sprintf( __( 'Welcome! You\'ve been invited %s to join the site. Please fill out the information below to create your account.', 'bp-invite-anyone' ), $inviters_text ); + echo '

              ' . $message . '

              '; + } + + ?> + + +have_posts() ) { + // From the posts returned by the query, get a list of unique inviters + $inviters = array(); + $groups = array(); + while ( $invites->have_posts() ) { + $invites->the_post(); + + $inviter_id = get_the_author_meta( 'ID' ); + $inviters[] = $inviter_id; + + $groups_data = wp_get_post_terms( get_the_ID(), invite_anyone_get_invited_groups_tax_name() ); + foreach ( $groups_data as $group_data ) { + if ( !isset( $groups[$group_data->name] ) ) { + // Keyed by inviter, which means they'll only get one invite per group + $groups[$group_data->name] = $inviter_id; + } + } + + // Mark as accepted + update_post_meta( get_the_ID(), 'bp_ia_accepted', date( 'Y-m-d H:i:s' ) ); + } + + $inviters = array_unique( $inviters ); + + // Friendship requests + if ( bp_is_active( 'friends' ) ) { + if ( function_exists( 'friends_add_friend' ) ) { + foreach ( $inviters as $inviter ) { + friends_add_friend( $inviter, $user_id ); + } + } + } + + // BuddyPress Followers support + if ( function_exists( 'bp_follow_start_following' ) ) { + foreach ( $inviters as $inviter ) { + bp_follow_start_following( array( 'leader_id' => $user_id, 'follower_id' => $inviter ) ); + bp_follow_start_following( array( 'leader_id' => $inviter, 'follower_id' => $user_id ) ); + } + } + + // Group invitations + if ( bp_is_active( 'groups' ) ) { + foreach ( $groups as $group_id => $inviter_id ) { + $args = array( + 'user_id' => $user_id, + 'group_id' => $group_id, + 'inviter_id' => $inviter_id + ); + + groups_invite_user( $args ); + groups_send_invites( $inviter_id, $group_id ); + } + } + } + + do_action( 'accepted_email_invite', $user_id, $inviters ); +} +add_action( 'bp_core_activated_user', 'invite_anyone_activate_user', 10, 3 ); + +function invite_anyone_setup_nav() { + global $bp; + + if ( !invite_anyone_access_test() ) + return; + + /* Add 'Send Invites' to the main user profile navigation */ + bp_core_new_nav_item( array( + 'name' => __( 'Send Invites', 'buddypress' ), + 'slug' => $bp->invite_anyone->slug, + 'position' => 80, + 'screen_function' => 'invite_anyone_screen_one', + 'default_subnav_slug' => 'invite-new-members', + 'show_for_displayed_user' => invite_anyone_access_test() + ) ); + + $invite_anyone_link = $bp->loggedin_user->domain . $bp->invite_anyone->slug . '/'; + + /* Create two sub nav items for this component */ + bp_core_new_subnav_item( array( + 'name' => __( 'Invite New Members', 'bp-invite-anyone' ), + 'slug' => 'invite-new-members', + 'parent_slug' => $bp->invite_anyone->slug, + 'parent_url' => $invite_anyone_link, + 'screen_function' => 'invite_anyone_screen_one', + 'position' => 10, + 'user_has_access' => invite_anyone_access_test() + ) ); + + bp_core_new_subnav_item( array( + 'name' => __( 'Sent Invites', 'bp-invite-anyone' ), + 'slug' => 'sent-invites', + 'parent_slug' => $bp->invite_anyone->slug, + 'parent_url' => $invite_anyone_link, + 'screen_function' => 'invite_anyone_screen_two', + 'position' => 20, + 'user_has_access' => invite_anyone_access_test() + ) ); +} +add_action( 'bp_setup_nav', 'invite_anyone_setup_nav' ); + +function invite_anyone_access_test() { + global $current_user, $bp; + + if ( !is_user_logged_in() ) + return false; + + if ( bp_displayed_user_id() && !bp_is_my_profile() ) + return false; + + $iaoptions = invite_anyone_options(); + + /* This is the last of the general checks: logged in, looking at own profile, and finally admin has set to "All Users".*/ + if ( isset( $iaoptions['email_visibility_toggle'] ) && $iaoptions['email_visibility_toggle'] == 'no_limit' ) + return true; + + /* Minimum number of days since joined the site */ + if ( isset( $iaoptions['email_since_toggle'] ) && $iaoptions['email_since_toggle'] == 'yes' ) { + if ( isset( $iaoptions['days_since'] ) && $since = $iaoptions['days_since'] ) { + $since = $since * 86400; + + $date_registered = strtotime($current_user->data->user_registered); + $time = time(); + + if ( $time - $date_registered < $since ) + return false; + } + } + + /* Minimum role on this blog. Users who are at the necessary role or higher should move right through this toward the 'return true' at the end of the function. */ + if ( isset( $iaoptions['email_role_toggle'] ) && $iaoptions['email_role_toggle'] == 'yes' ) { + if ( isset( $iaoptions['minimum_role'] ) && $role = $iaoptions['minimum_role'] ) { + switch ( $role ) { + case 'Subscriber' : + if ( !current_user_can( 'read' ) ) + return false; + break; + + case 'Contributor' : + if ( !current_user_can( 'edit_posts' ) ) + return false; + break; + + case 'Author' : + if ( !current_user_can( 'publish_posts' ) ) + return false; + break; + + case 'Editor' : + if ( !current_user_can( 'delete_others_pages' ) ) + return false; + break; + + case 'Administrator' : + if ( !current_user_can( 'switch_themes' ) ) + return false; + break; + } + } + } + + /* User blacklist */ + if ( isset( $iaoptions['email_blacklist_toggle'] ) && $iaoptions['email_blacklist_toggle'] == 'yes' ) { + if ( isset( $iaoptions['email_blacklist'] ) ) { + $blacklist = explode( ",", $iaoptions['email_blacklist'] ); + $user_id = $current_user->ID; + if ( in_array( $user_id, $blacklist ) ) + return false; + } + } + + return true; + +} +add_action( 'wp_head', 'invite_anyone_access_test' ); + +function invite_anyone_catch_clear() { + global $bp; + + // We'll take a moment nice and early in the loading process to get returned_data + $keys = array( + 'error_message', + 'error_emails', + 'subject', + 'message', + 'groups' + ); + + foreach( $keys as $key ) { + $bp->invite_anyone->returned_data[$key] = null; + if ( isset( $_GET[$key] ) ) { + if ( is_array( $_GET[$key] ) ) { + $value = array(); + foreach( $_GET[$key] as $kk => $vv ) { + $value[$kk] = urldecode( $vv ); + } + } else { + $value = urldecode( $_GET[$key] ); + } + $bp->invite_anyone->returned_data[$key] = $value; + } + } + + if ( isset( $_GET['clear'] ) ) { + $clear_id = $_GET['clear']; + + $inviter_id = bp_loggedin_user_id(); + + check_admin_referer( 'invite_anyone_clear' ); + + if ( (int)$clear_id ) { + if ( invite_anyone_clear_sent_invite( array( 'inviter_id' => $inviter_id, 'clear_id' => $clear_id ) ) ) + bp_core_add_message( __( 'Invitation cleared', 'bp-invite-anyone' ) ); + else + bp_core_add_message( __( 'There was a problem clearing the invitation.', 'bp-invite-anyone' ), 'error' ); + } else { + if ( invite_anyone_clear_sent_invite( array( 'inviter_id' => $inviter_id, 'type' => $clear_id ) ) ) + bp_core_add_message( __( 'Invitations cleared.', 'bp-invite-anyone' ) ); + else + bp_core_add_message( __( 'There was a problem clearing the invitations.', 'bp-invite-anyone' ), 'error' ); + } + + bp_core_redirect( $bp->displayed_user->domain . $bp->invite_anyone->slug . '/sent-invites/' ); + } +} +add_action( 'wp', 'invite_anyone_catch_clear', 1 ); + +function invite_anyone_screen_one() { + global $bp; + + /* + print "
              ";
              +	print_r($bp);
              +	*/
              +
              +	/* Add a do action here, so your component can be extended by others. */
              +	do_action( 'invite_anyone_screen_one' );
              +
              +	/* bp_template_title ought to be used - bp-default needs to markup the template tag
              +	and run a conditional check on template tag true to hide empty element markup or not
              +	add_action( 'bp_template_title', 'invite_anyone_screen_one_title' );
              +	*/
              +	add_action( 'bp_template_content', 'invite_anyone_screen_one_content' );
              +
              +	bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) );
              +}
              +
              +/*
              +function invite_anyone_screen_one_title() {
              +
              +	 _e( 'Invite New Members', 'bp-invite-anyone' );
              +
              +	}
              +*/
              +
              +function invite_anyone_screen_one_content() {
              +	global $bp;
              +
              +	$iaoptions = invite_anyone_options();
              +
              +	// If the user has maxed out his invites, no need to go on
              +	if ( !empty( $iaoptions['email_limit_invites_toggle'] ) && $iaoptions['email_limit_invites_toggle'] == 'yes' && !current_user_can( 'delete_others_pages' ) ) {
              +		$sent_invites       = invite_anyone_get_invitations_by_inviter_id( bp_displayed_user_id() );
              +		$sent_invites_count  = $sent_invites->post_count;
              +		if ( $sent_invites_count >= $iaoptions['limit_invites_per_user'] ) : ?>
              +
              +			

              + +

              + + action_variables ) ) { + if ( 'group-invites' == $bp->action_variables[0] ) + $from_group = $bp->action_variables[1]; + } + + $returned_data = !empty( $bp->invite_anyone->returned_data ) ? $bp->invite_anyone->returned_data : false; + + /* If the user is coming from the widget, $returned_emails is populated with those email addresses */ + if ( isset( $_POST['invite_anyone_widget'] ) ) { + check_admin_referer( 'invite-anyone-widget_' . $bp->loggedin_user->id ); + + if ( !empty( $_POST['invite_anyone_email_addresses'] ) ) { + $returned_data['error_emails'] = invite_anyone_parse_addresses( $_POST['invite_anyone_email_addresses'] ); + } + + /* If the widget appeared on a group page, the group ID should come along with it too */ + if ( isset( $_POST['invite_anyone_widget_group'] ) ) + $returned_data['groups'] = $_POST['invite_anyone_widget_group']; + + } + + // $returned_groups is padded so that array_search (below) returns true for first group */ + + $counter = 0; + $returned_groups = array( 0 ); + if ( ! empty( $returned_data['groups'] ) ) { + foreach( $returned_data['groups'] as $group_id ) { + $returned_groups[] = $group_id; + } + } + + // Get the returned email subject, if there is one + $returned_subject = ! empty( $returned_data['subject'] ) ? stripslashes( $returned_data['subject'] ) : false; + + // Get the returned email message, if there is one + $returned_message = ! empty( $returned_data['message'] ) ? stripslashes( $returned_data['message'] ) : false; + + if ( ! empty( $returned_data['error_message'] ) ) { + ?> +
              +

              +
              + +
              + +

              + + post_count; + } + + $limit_invite_count = (int) $iaoptions['limit_invites_per_user'] - (int) $sent_invites_count; + + if ( $limit_invite_count < 0 ) { + $limit_invite_count = 0; + } + + ?> + +

              + + + +

              + +
                + +
              1. + +
                +

                +
                + + + + + + + +
              2. + +
              3. + + + + + + + + + +
              4. + +
              5. + + + + + + + + + +

                + +
              6. + + + +
              7. +

                +
                  + +
                • + checked /> + + + +
                • + + +
                +
              8. + + + + + + +
              + +
              + +
              + + +
              + current_component == $bp->invite_anyone->slug && $bp->current_action == 'sent-invites' && isset( $bp->action_variables[0] ) && $bp->action_variables[0] == 'send' ) { + if ( ! invite_anyone_process_invitations( $_POST ) ) + bp_core_add_message( __( 'Sorry, there was a problem sending your invitations. Please try again.', 'bp-invite-anyone' ), 'error' ); + } + + do_action( 'invite_anyone_sent_invites_screen' ); + + /* bp_template_title ought to be used - bp-default needs to markup the template tag + and run a conditional check on template tag true to hide empty element markup or not + add_action( 'bp_template_title', 'invite_anyone_screen_two_title' ); + */ + + add_action( 'bp_template_content', 'invite_anyone_screen_two_content' ); + + bp_core_load_template( apply_filters( 'bp_core_template_plugin', 'members/single/plugins' ) ); +} +/* + function invite_anyone_screen_two_title() { + _e( 'Sent Invites', 'bp-invite-anyone' ); + } +*/ + + function invite_anyone_screen_two_content() { + global $bp; + + // Load the pagination helper + if ( !class_exists( 'BBG_CPT_Pag' ) ) + require_once( dirname( __FILE__ ) . '/../lib/bbg-cpt-pag.php' ); + $pagination = new BBG_CPT_Pag; + + $inviter_id = bp_loggedin_user_id(); + + if ( isset( $_GET['sort_by'] ) ) + $sort_by = $_GET['sort_by']; + else + $sort_by = 'date_invited'; + + if ( isset( $_GET['order'] ) ) + $order = $_GET['order']; + else + $order = 'DESC'; + + $base_url = $bp->displayed_user->domain . $bp->invite_anyone->slug . '/sent-invites/'; + + ?> + +

              + + get_per_page, $pagination->get_paged ) ?> + + setup_query( $invites ) ?> + + have_posts() ) : ?> +

              + +
              +
              + currently_viewing_text() ?> +
              + + +
              + + + + + + + + + + + + + + + + + + + + have_posts() ) : $invites->the_post() ?> + + name; + + $post_id = get_the_ID(); + + $query_string = preg_replace( "|clear=[0-9]+|", '', $_SERVER['QUERY_STRING'] ); + + $clear_url = ( $query_string ) ? $base_url . '?' . $query_string . '&clear=' . $post_id : $base_url . '?clear=' . $post_id; + $clear_url = wp_nonce_url( $clear_url, 'invite_anyone_clear' ); + $clear_link = 'x'; + + $groups = wp_get_post_terms( get_the_ID(), invite_anyone_get_invited_groups_tax_name() ); + if ( !empty( $groups ) ) { + $group_names = '
                '; + foreach( $groups as $group_term ) { + $group = new BP_Groups_Group( $group_term->name ); + $group_names .= '
              • ' . bp_get_group_name( $group ) . '
              • '; + } + $group_names .= '
              '; + } else { + $group_names = '-'; + } + + global $post; + + $date_invited = invite_anyone_format_date( $post->post_date ); + + $accepted = get_post_meta( get_the_ID(), 'bp_ia_accepted', true ); + + if ( $accepted ): + $date_joined = invite_anyone_format_date( $accepted ); + $accepted = true; + else: + $date_joined = '-'; + $accepted = false; + endif; + + ?> + + class="accepted" > + + + + + + + + +
              class="sort-by-me">class="sort-by-me">class="sort-by-me">
              + +
              + +
              +
              + currently_viewing_text() ?> +
              + + +
              + + + + +

              + + + + +loggedin_user->userdata->display_name; + $blogname = get_bloginfo('name'); + + $iaoptions = invite_anyone_options(); + + if ( empty( $iaoptions['default_invitation_message'] ) ) { + $text = sprintf( __( 'You have been invited by %%INVITERNAME%% to join the %s community. + +Visit %%INVITERNAME%%\'s profile at %%INVITERURL%%.', 'bp-invite-anyone' ), $blogname ); /* Do not translate the strings embedded in %% ... %% ! */ + } else { + $text = $iaoptions['default_invitation_message']; + } + + if ( !is_admin() ) { + $text = invite_anyone_wildcard_replace( $text ); + } + } else { + $text = $returned_message; + } + + return apply_filters( 'invite_anyone_get_invitation_message', stripslashes( $text ) ); +} + +function invite_anyone_process_footer( $email ) { + + $iaoptions = invite_anyone_options(); + + if ( empty( $iaoptions['addl_invitation_message'] ) ) { + + $footer = apply_filters( 'invite_anyone_accept_invite_footer_message', __( 'To accept this invitation, please visit %%ACCEPTURL%%', 'bp-invite-anyone' ) ); + $footer .= ' + +'; + $footer .= apply_filters( 'invite_anyone_opt_out_footer_message', __( 'To opt out of future invitations to this site, please visit %%OPTOUTURL%%', 'bp-invite-anyone' ) ); + } else { + $footer = $iaoptions['addl_invitation_message']; + } + + return stripslashes( $footer ); +} + +function invite_anyone_wildcard_replace( $text, $email = false ) { + global $bp; + + $inviter_name = $bp->loggedin_user->userdata->display_name; + $site_name = get_bloginfo('name'); + $inviter_url = bp_loggedin_user_domain(); + $accept_link = apply_filters( 'invite_anyone_accept_url', site_url( BP_REGISTER_SLUG ) . '/accept-invitation/' . urlencode($email) ); + $opt_out_link = site_url( BP_REGISTER_SLUG ) . '/opt-out/' . urlencode( $email ); + + + $text = str_replace( '%%INVITERNAME%%', $inviter_name, $text ); + $text = str_replace( '%%INVITERURL%%', $inviter_url, $text ); + $text = str_replace( '%%SITENAME%%', $site_name, $text ); + $text = str_replace( '%%OPTOUTURL%%', $opt_out_link, $text ); + $text = str_replace( '%%ACCEPTURL%%', $accept_link, $text ); + + + /* Adding single % replacements because lots of people are making the mistake */ + $text = str_replace( '%INVITERNAME%', $inviter_name, $text ); + $text = str_replace( '%INVITERURL%', $inviter_url, $text ); + $text = str_replace( '%SITENAME%', $site_name, $text ); + $text = str_replace( '%OPTOUTURL%', $opt_out_link, $text ); + $text = str_replace( '%ACCEPTURL%', $accept_link, $text ); + + return $text; +} + +function invite_anyone_allowed_domains() { + + $domains = ''; + + if ( function_exists( 'get_site_option' ) ) { + $limited_email_domains = get_site_option( 'limited_email_domains' ); + + if ( !$limited_email_domains || !is_array( $limited_email_domains ) ) + return $domains; + + foreach( $limited_email_domains as $domain ) + $domains .= "$domain "; + } + + return $domains; +} + +/** + * Fetches the invitee taxonomy name out of the $bp global so it can be queried in the template + * + * @package Invite Anyone + * @since 0.8 + * + * @return str $tax_name + */ +function invite_anyone_get_invitee_tax_name() { + global $bp; + + $tax_name = ''; + + if ( !empty( $bp->invite_anyone->invitee_tax_name ) ) + $tax_name = $bp->invite_anyone->invitee_tax_name; + + return $tax_name; +} + +/** + * Fetches the groups taxonomy name out of the $bp global so it can be queried in the template + * + * @package Invite Anyone + * @since 0.8 + * + * @return str $tax_name + */ +function invite_anyone_get_invited_groups_tax_name() { + global $bp; + + $tax_name = ''; + + if ( !empty( $bp->invite_anyone->invited_groups_tax_name ) ) + $tax_name = $bp->invite_anyone->invited_groups_tax_name; + + return $tax_name; +} + +function invite_anyone_format_date( $date ) { + $thetime = strtotime( $date ); + $format = get_option('date_format'); + $thetime = date( "$format", $thetime ); + return $thetime; +} + +/** + * Parses email addresses, comma-separated or line-separated, into an array + * + * @package Invite Anyone + * @since 0.8.8 + * + * @param str $address_string The raw string from the input box + * @return array $emails An array of addresses + */ +function invite_anyone_parse_addresses( $address_string ) { + + $emails = array(); + + // First, split by line breaks + $rows = explode( "\n", $address_string ); + + // Then look through each row to split by comma + foreach( $rows as $row ) { + $row_addresses = explode( ',', $row ); + + // Then walk through and add each address to the array + foreach( $row_addresses as $row_address ) { + $row_address_trimmed = trim( $row_address ); + + // We also have to make sure that the email address isn't empty + if ( ! empty( $row_address_trimmed ) && ! in_array( $row_address_trimmed, $emails ) ) + $emails[] = $row_address_trimmed; + } + } + + return apply_filters( 'invite_anyone_parse_addresses', $emails, $address_string ); +} + +function invite_anyone_process_invitations( $data ) { + global $bp; + + $emails = false; + // Parse out the individual email addresses + if ( !empty( $data['invite_anyone_email_addresses'] ) ) { + $emails = invite_anyone_parse_addresses( $data['invite_anyone_email_addresses'] ); + } + + // Filter the email addresses so that plugins can have a field day + $emails = apply_filters( 'invite_anyone_submitted_email_addresses', $emails, $data ); + + // Set up a wrapper for any data to return to the Send Invites screen in case of error + $returned_data = array( + 'error_message' => false, + 'error_emails' => array(), + 'subject' => $data['invite_anyone_custom_subject'], + 'message' => $data['invite_anyone_custom_message'], + 'groups' => isset( $data['invite_anyone_groups'] ) ? $data['invite_anyone_groups'] : '' + ); + + // Check against the max number of invites. Send back right away if there are too many + $options = invite_anyone_options(); + $max_invites = !empty( $options['max_invites'] ) ? $options['max_invites'] : 5; + + if ( count( $emails ) > $max_invites ) { + + $returned_data['error_message'] = sprintf( __( 'You are only allowed to invite up to %s people at a time. Please remove some addresses and try again', 'bp-invite-anyone' ), $max_invites ); + $returned_data['error_emails'] = $emails; + + $redirect = bp_loggedin_user_domain() . $bp->invite_anyone->slug . '/invite-new-members' . invite_anyone_prepare_return_qs( $returned_data ); + bp_core_redirect( $redirect ); + } + + if ( empty( $emails ) ) { + bp_core_add_message( __( 'You didn\'t include any email addresses!', 'bp-invite-anyone' ), 'error' ); + bp_core_redirect( $bp->loggedin_user->domain . $bp->invite_anyone->slug . '/invite-new-members' ); + } + + // Max number of invites sent + if ( !empty( $options['email_limit_invites_toggle'] ) && !current_user_can( 'delete_others_pages' ) ) { + $sent_invites = invite_anyone_get_invitations_by_inviter_id( bp_loggedin_user_id() ); + $sent_invites_count = (int) $sent_invites->post_count; + $remaining_invites_count = (int) $options['limit_invites_per_user'] - $sent_invites_count; + + if ( count( $emails ) > $remaining_invites_count ) { + $returned_data['error_message'] = sprintf( __( 'You are only allowed to invite %s more people. Please remove some addresses and try again', 'bp-invite-anyone' ), $remaining_invites_count ); + $returned_data['error_emails'] = $emails; + + $redirect = bp_loggedin_user_domain() . $bp->invite_anyone->slug . '/invite-new-members' . invite_anyone_prepare_return_qs( $returned_data ); + bp_core_redirect( $redirect ); + } + } + + // Turn the CS emails into an array so that they can be matched against the main list + if ( isset( $_POST['cloudsponge-emails'] ) ) { + $cs_emails = explode( ',', $_POST['cloudsponge-emails'] ); + } + + // validate email addresses + foreach( $emails as $key => $email ) { + $check = invite_anyone_validate_email( $email ); + switch ( $check ) { + + case 'opt_out' : + $returned_data['error_message'] .= sprintf( __( '%s has opted out of email invitations from this site.', 'bp-invite-anyone' ), $email ); + break; + + case 'used' : + $returned_data['error_message'] .= sprintf( __( "%s is already a registered user of the site.", 'bp-invite-anyone' ), $email ); + break; + + case 'unsafe' : + $returned_data['error_message'] .= sprintf( __( '%s is not a permitted email address.', 'bp-invite-anyone' ), $email ); + break; + + case 'invalid' : + $returned_data['error_message'] .= sprintf( __( '%s is not a valid email address. Please make sure that you have typed it correctly.', 'bp-invite-anyone' ), $email ); + break; + + case 'limited_domain' : + $returned_data['error_message'] = sprintf( __( '%s is not a permitted email address. Please make sure that you have typed the domain name correctly.', 'bp-invite-anyone' ), $email ); + break; + } + + // If there was an error in validation, we won't process this email + if ( $check != 'okay' ) { + $returned_data['error_message'] .= '
              '; + $returned_data['error_emails'][] = $email; + unset( $emails[$key] ); + } + } + + if ( ! empty( $emails ) ) { + + unset( $message, $to ); + + /* send and record invitations */ + + do_action( 'invite_anyone_process_addl_fields' ); + + $groups = ! empty( $data['invite_anyone_groups'] ) ? $data['invite_anyone_groups'] : array(); + $is_error = 0; + + foreach( $emails as $email ) { + $subject = stripslashes( strip_tags( $data['invite_anyone_custom_subject'] ) ); + + $message = stripslashes( strip_tags( $data['invite_anyone_custom_message'] ) ); + + $footer = invite_anyone_process_footer( $email ); + $footer = invite_anyone_wildcard_replace( $footer, $email ); + + $message .= ' + +================ +'; + $message .= $footer; + + $to = apply_filters( 'invite_anyone_invitee_email', $email ); + $subject = apply_filters( 'invite_anyone_invitation_subject', $subject ); + $message = apply_filters( 'invite_anyone_invitation_message', $message ); + + wp_mail( $to, $subject, $message ); + + /* todo: isolate which email(s) cause problems, and send back to user */ + /* if ( !invite_anyone_send_invitation( $bp->loggedin_user->id, $email, $message, $groups ) ) + $is_error = 1; */ + + // Determine whether this address came from CloudSponge + $is_cloudsponge = isset( $cs_emails ) && in_array( $email, $cs_emails ) ? true : false; + + invite_anyone_record_invitation( $bp->loggedin_user->id, $email, $message, $groups, $subject, $is_cloudsponge ); + + do_action( 'sent_email_invite', $bp->loggedin_user->id, $email, $groups ); + + unset( $message, $to ); + } + + // Set a success message + + $success_message = sprintf( __( "Invitations were sent successfully to the following email addresses: %s", 'bp-invite-anyone' ), implode( ", ", $emails ) ); + bp_core_add_message( $success_message ); + + do_action( 'sent_email_invites', $bp->loggedin_user->id, $emails, $groups ); + + } else { + $success_message = sprintf( __( "Please correct your errors and resubmit.", 'bp-invite-anyone' ) ); + bp_core_add_message( $success_message, 'error' ); + + } + + // If there are errors, redirect to the Invite New Members page + if ( ! empty( $returned_data['error_emails'] ) ) { + $redirect = bp_loggedin_user_domain() . $bp->invite_anyone->slug . '/invite-new-members' . invite_anyone_prepare_return_qs( $returned_data ); + bp_core_redirect( $redirect ); + } + + return true; +} + +function invite_anyone_prepare_return_qs( $returned_data ) { + $qs = ''; + foreach( $returned_data as $key => $value ) { + /*if ( is_array( $value ) ) { + $key .= '[]'; + }*/ + $qs = add_query_arg( $key, $value, $qs ); + } + return $qs; +} + +function invite_anyone_send_invitation( $inviter_id, $email, $message, $groups ) { + global $bp; + +} + +function invite_anyone_bypass_registration_lock() { + global $bp; + + if ( $bp->current_component != BP_REGISTER_SLUG || $bp->current_action != 'accept-invitation' ) + return; + + if ( !isset( $bp->action_variables[0] ) || !$email = urldecode( $bp->action_variables[0] ) ) + return; + + $options = invite_anyone_options(); + + if ( empty( $options['bypass_registration_lock'] ) || $options['bypass_registration_lock'] != 'yes' ) + return; + + // Check to make sure that it's actually a valid email + $ia_obj = invite_anyone_get_invitations_by_invited_email( $email ); + + if ( !$ia_obj->have_posts() ) { + bp_core_add_message( __( "We couldn't find any invitations associated with this email address.", 'bp-invite-anyone' ), 'error' ); + return; + } + + // This is a royal hack until there is a filter on bp_get_signup_allowed() + if ( is_multisite() ) { + if ( !empty( $bp->site_options['registration'] ) && $bp->site_options['registration'] == 'blog' ) { + $bp->site_options['registration'] = 'all'; + } else if ( !empty( $bp->site_options['registration'] ) && $bp->site_options['registration'] == 'none' ) { + $bp->site_options['registration'] = 'user'; + } + } else { + add_filter( 'option_users_can_register', create_function( false, 'return true;' ) ); + } +} +add_action( 'wp', 'invite_anyone_bypass_registration_lock', 1 ); + + +function invite_anyone_validate_email( $user_email ) { + + $status = 'okay'; + + if ( invite_anyone_check_is_opt_out( $user_email ) ) { + $status = 'opt_out'; + } else if ( $user = get_user_by( 'email', $user_email ) ) { + $status = 'used'; + } else if ( function_exists( 'is_email_address_unsafe' ) && is_email_address_unsafe( $user_email ) ) { + $status = 'unsafe'; + } else if ( function_exists( 'is_email' ) && !is_email( $user_email ) ) { + $status = 'invalid'; + } + + if ( function_exists( 'get_site_option' ) ) { + if ( $limited_email_domains = get_site_option( 'limited_email_domains' ) ) { + if ( is_array( $limited_email_domains ) && empty( $limited_email_domains ) == false ) { + $emaildomain = substr( $user_email, 1 + strpos( $user_email, '@' ) ); + if( in_array( $emaildomain, $limited_email_domains ) == false ) { + $status = 'limited_domain'; + } + } + } + } + + return apply_filters( 'invite_anyone_validate_email', $status, $user_email ); +} + +?> diff --git a/wp-content/plugins/invite-anyone/by-email/cloudsponge-integration.php b/wp-content/plugins/invite-anyone/by-email/cloudsponge-integration.php new file mode 100644 index 0000000..39c4735 --- /dev/null +++ b/wp-content/plugins/invite-anyone/by-email/cloudsponge-integration.php @@ -0,0 +1,78 @@ +__construct(); + } + + /** + * PHP 5 Constructor + * + * @package Invite Anyone + * @since 0.8 + */ + function __construct() { + + if ( empty( $options ) ) + $options = get_option( 'invite_anyone' ); + + $this->enabled = !empty( $options['cloudsponge_enabled'] ) ? $options['cloudsponge_enabled'] : false; + $this->key = !empty( $options['cloudsponge_key'] ) ? $options['cloudsponge_key'] : false; + + if ( $this->enabled && $this->key ) { + define( 'INVITE_ANYONE_CS_ENABLED', true ); + add_action( 'invite_anyone_after_addresses', array( $this, 'import_markup' ) ); + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_script' ) ); + } + } + + /** + * Registers and loads CS JS. + * + * For now, this is overly generous to account for the fact that people can have the IA + * widget installed on any page. In the future I'll try to clean it up a bit. + * + * @package Invite Anyone + * @since 0.8.8 + */ + function enqueue_script() { + wp_enqueue_script( 'ia_cloudsponge_address_books', 'https://api.cloudsponge.com/address_books.js', array(), false, true ); + wp_enqueue_script( 'ia_cloudsponge', WP_PLUGIN_URL . '/invite-anyone/by-email/cloudsponge-js.js', array( 'ia_cloudsponge_address_books' ), false, true ); + + // The domain key must be printed as a javascript object so it's accessible to the + // script + wp_localize_script( 'ia_cloudsponge', 'ia_cloudsponge', array( + 'domain_key' => $this->key + ) ); + } + + /** + * Inserts the Cloudsponge markup into the Send Invites front end page + * + * @package Invite Anyone + * @since 0.8 + * + * @param array $options Invite Anyone settings. Check em so we can bail if necessary + */ + function import_markup( $options = false ) { + ?> + + + +from your Address Book.', 'bp-invite-anyone' ) ?> + + diff --git a/wp-content/plugins/invite-anyone/by-email/cloudsponge-js.js b/wp-content/plugins/invite-anyone/by-email/cloudsponge-js.js new file mode 100644 index 0000000..867c1b0 --- /dev/null +++ b/wp-content/plugins/invite-anyone/by-email/cloudsponge-js.js @@ -0,0 +1,31 @@ +csInit( { + domain_key: ia_cloudsponge.domain_key, + referrer: 'invite-anyone', + afterSubmitContacts:function(contacts) { + var emails = []; + var contact, name, email; + for(var i=0; i < contacts.length; i++) { + contact = contacts[i]; + name = contact.fullName(); + email = contact.selectedEmail(); + emails.push(email); + } + + + var textarea = document.getElementById('invite-anyone-email-addresses'); + /* Strip any manually entered whitespace */ + var already_emails = textarea.value.replace(/^\s+|\s+$/g,""); + + var new_emails; + var new_emails_for_input; + if ( already_emails == false ) { + new_emails = emails.join("\n"); + new_emails_for_input = emails; + } else { + new_emails = already_emails + "\n" + emails.join("\n") + new_emails_for_input = already_emails.replace(/\s/,',') + ',' + emails; + } + document.getElementById('invite-anyone-email-addresses').value = new_emails; + document.getElementById('cloudsponge-emails').value = new_emails_for_input; + } +} ); diff --git a/wp-content/plugins/invite-anyone/functions.php b/wp-content/plugins/invite-anyone/functions.php new file mode 100644 index 0000000..5bf10fb --- /dev/null +++ b/wp-content/plugins/invite-anyone/functions.php @@ -0,0 +1,54 @@ + 5, + 'allow_email_invitations' => 'all', + 'message_is_customizable' => 'yes', + 'subject_is_customizable' => 'no', + 'can_send_group_invites_email' => 'yes', + 'bypass_registration_lock' => 'yes', + 'email_visibility_toggle' => 'nolimit', + 'email_since_toggle' => 'no', + 'days_since' => 0, + 'email_role_toggle' => 'no', + 'minimum_role' => 'subscriber', + 'email_blacklist_toggle' => 'no', + 'email_blacklist' => '', + 'group_invites_can_admin' => 'anyone', + 'group_invites_can_group_admin' => 'anyone', + 'group_invites_can_group_mod' => 'anyone', + 'group_invites_can_group_member' => 'anyone', + 'cloudsponge_enabled' => 'off', + 'email_limit_invites_toggle' => 'no', + 'limit_invites_per_user' => 10 + ); + + foreach ( $defaults_array as $key => $value ) { + if ( !isset( $options[$key] ) ) + $options[$key] = $value; + } + + $iaoptions = $options; + + return apply_filters( 'invite_anyone_options', $options ); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/group-invites/group-invites-css.css b/wp-content/plugins/invite-anyone/group-invites/group-invites-css.css new file mode 100644 index 0000000..da14e9d --- /dev/null +++ b/wp-content/plugins/invite-anyone/group-invites/group-invites-css.css @@ -0,0 +1,97 @@ +.invite-anyone .left-menu, .group-create .left-menu { + width: 250px; +} + +.invite-anyone .main-column, +.group-create .main-column, +body.invite-anyone div#content .main-column +body.group-create div#content .main-column { + margin-left: 250px !important; +} + +#create-group-form ul.first { + margin: 0; +} + +#create-group-form ul.first li { + padding-left: 0; +} + +#invite-anyone-member-list { margin-bottom: 25px; } + +#invite-anyone-member-list ul, ul#friend-list { + margin: 0; +} + +#invite-anyone-member-list input { width: auto !important; } + +#invite-anyone-member-list ul li { + list-style: none; + padding: 0; +} + +#invite-anyone-member-list { + height: 275px; + overflow: auto; + border: 1px solid #ccc; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + padding: 5px; + background: #f5f5f5; + width: 225px; +} + +#invite-anyone-email-fields { + margin: 15px 30px 0 30px; + list-style-type: lower-alpha; +} + +#invite-anyone-steps { + margin: 0 20px; + list-style-type: decimal; +} + +#invite-anyone-steps li { + margin: 20px; +} + +.invite-anyone-email-fields { + width: 200px; +} + +#invite-anyone-group-list { + margin: 0; + padding: 0; + clear: both; +} + +#invite-anyone-group-list li { + width: 200px; + margin: 5px 10px 10px 10px; + float: left; +} + +#invite-anyone-group-list li img { + margin-right: 5px; +} + +#invite-anyone-group-list li input { + float: left; + margin: 13px; +} + +.invite-new-members .submit { + clear: both; + padding: 20px; +} + +.invite-anyone-sent-invites { + text-align: left; +} + +.autocomplete-w1 { background:url(img/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:8px 0 0 6px; /* IE6 fix: */ _background:none; _margin:0; } +.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; } +.autocomplete .selected { background:#F0F0F0; } +.autocomplete div { padding:2px 5px; white-space:nowrap; } +.autocomplete strong { font-weight:normal; color:#3399FF; } \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/group-invites/group-invites-js.js b/wp-content/plugins/invite-anyone/group-invites/group-invites-js.js new file mode 100644 index 0000000..0f6949e --- /dev/null +++ b/wp-content/plugins/invite-anyone/group-invites/group-invites-js.js @@ -0,0 +1,144 @@ +jQuery(document).ready( function() { + var j = jQuery; + + var onAutocompleteSelect = function(value, data) { + j('#selection').html(' ' + value); + //alert(data); + } + + var options = { + serviceUrl: ajaxurl, + width: 300, + delimiter: /(,|;)\s*/, + onSelect: ia_on_autocomplete_select, + deferRequestBy: 0, //miliseconds + params: { action: 'invite_anyone_autocomplete_ajax_handler' }, + noCache: true //set to true, to disable caching + }; + + a = j('#send-invite-form #send-to-input').autocomplete(options); + + j("div#invite-anyone-member-list input").click(function() { + var friend_id = j(this).val(); + + if ( j(this).prop('checked') == true ) { + var friend_action = 'invite'; + } else { + var friend_action = 'uninvite'; + } + + j.post( ajaxurl, { + action: 'invite_anyone_groups_invite_user', + 'friend_action': friend_action, + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': j("input#_wpnonce_invite_uninvite_user").val(), + 'friend_id': friend_id, + 'group_id': j("input#group_id").val() + }, + function(response) + { + if ( j("#message") ) + j("#message").hide(); + + if ( friend_action == 'invite' ) { + j('#invite-anyone-invite-list').append(response); + } else if ( friend_action == 'uninvite' ) { + j('#invite-anyone-invite-list li#uid-' + friend_id).remove(); + } + }); + }); + + j("#invite-anyone-invite-list li a.remove").live("click", function() { + var friend_id = j(this).prop('id'); + + friend_id = friend_id.split('-'); + friend_id = friend_id[1]; + + j.post( ajaxurl, { + action: 'invite_anyone_groups_invite_user', + 'friend_action': 'uninvite', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': j("input#_wpnonce_invite_uninvite_user").val(), + 'friend_id': friend_id, + 'group_id': j("input#group_id").val() + }, + function(response) + { + j('#invite-anyone-invite-list li#uid-' + friend_id).remove(); + j('#invite-anyone-member-list input#f-' + friend_id).prop('checked', false); + }); + + return false; + }); + + j("#invite-anyone-link").click( + function() { + + j('.ajax-loader').toggle(); + + var friend_id = j(this).val(); + + if ( j(this).prop('checked') == true ) { + var friend_action = 'invite'; + } else { + var friend_action = 'uninvite'; + } + + + j.post( ajaxurl, { + action: 'invite_anyone_groups_invite_user', + 'friend_action': friend_action, + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': j("input#_wpnonce_invite_uninvite_user").val(), + 'friend_id': friend_id, + 'group_id': j("input#group_id").val() + }, + function(response) + { + if ( j("#message") ) + j("#message").hide(); + + j('.ajax-loader').toggle(); + + if ( friend_action == 'invite' ) { + j('#invite-anyone-member-list').append(response); + } else if ( friend_action == 'uninvite' ) { + j('#invite-anyone-member-list li#uid-' + friend_id).remove(); + } + }); + } + ); +}); + +function ia_on_autocomplete_select( value, data ) { + var j = jQuery; + + // Check the right checkbox + j('#invite-anyone-member-list input#f-' + data).prop('checked',true); + + // Put the item in the invite list + j('div.item-list-tabs li.selected').addClass('loading'); + + j.post( ajaxurl, { + action: 'invite_anyone_groups_invite_user', + 'friend_action': 'invite', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': j("input#_wpnonce_invite_uninvite_user").val(), + 'friend_id': data, + 'group_id': j("input#group_id").val() + }, + function(response) + { + if ( j("#message") ) + j("#message").hide(); + + j('.ajax-loader').toggle(); + + j('#invite-anyone-invite-list').append(response); + + j('div.item-list-tabs li.selected').removeClass('loading'); + }); + + // Remove the value from the send-to-input box + j('#send-to-input').val(''); +} \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/group-invites/group-invites.php b/wp-content/plugins/invite-anyone/group-invites/group-invites.php new file mode 100644 index 0000000..ca1eb65 --- /dev/null +++ b/wp-content/plugins/invite-anyone/group-invites/group-invites.php @@ -0,0 +1,484 @@ +current_action == BP_INVITE_ANYONE_SLUG || ( isset( $bp->action_variables[1] ) && $bp->action_variables[1] == BP_INVITE_ANYONE_SLUG ) ) { + + wp_enqueue_script( 'invite-anyone-autocomplete-js', WP_PLUGIN_URL . '/invite-anyone/group-invites/jquery.autocomplete/jquery.autocomplete-min.js', array( 'jquery' ) ); + + wp_register_script( 'invite-anyone-js', WP_PLUGIN_URL . '/invite-anyone/group-invites/group-invites-js.js', array( 'invite-anyone-autocomplete-js' ) ); + wp_enqueue_script( 'invite-anyone-js' ); + + } +} +add_action( 'wp_head', 'invite_anyone_add_js', 1 ); + +function invite_anyone_add_group_invite_css() { + global $bp; + + if ( $bp->current_action == BP_INVITE_ANYONE_SLUG || ( isset( $bp->action_variables[1] ) && $bp->action_variables[1] == BP_INVITE_ANYONE_SLUG ) ) { + $style_url = WP_PLUGIN_URL . '/invite-anyone/group-invites/group-invites-css.css'; + $style_file = WP_PLUGIN_DIR . '/invite-anyone/group-invites/group-invites-css.css'; + + if (file_exists($style_file)) { + wp_register_style('invite-anyone-group-invites-style', $style_url); + wp_enqueue_style('invite-anyone-group-invites-style'); + } + } +} +add_action( 'wp_print_styles', 'invite_anyone_add_group_invite_css' ); + +function invite_anyone_add_old_css() { ?> + +has_caps = true; + + /* Group API Extension Properties */ + $this->name = __( 'Send Invites', 'buddypress' ); + $this->slug = BP_INVITE_ANYONE_SLUG; + + /* Set as early in the order as possible */ + $this->create_step_position = 42; + $this->nav_item_position = 71; + + /* Generic check access */ + if ( $this->has_caps == false ) { + $this->enable_create_step = false; + $this->enable_edit_step = false; + } + + $this->enable_nav_item = $this->enable_nav_item(); + $this->enable_create_step = $this->enable_nav_item(); + } + + function display() { + global $bp; + + if ( BP_INVITE_ANYONE_SLUG == $bp->current_action && isset( $bp->action_variables[0] ) && 'send' == $bp->action_variables[0] ) { + if ( !check_admin_referer( 'groups_send_invites', '_wpnonce_send_invites' ) ) + return false; + + // Send the invites. + groups_send_invites( $bp->loggedin_user->id, $bp->groups->current_group->id ); + + do_action( 'groups_screen_group_invite', $bp->groups->current_group->id ); + + // Hack to imitate bp_core_add_message, since bp_core_redirect is giving me such hell + echo '

              ' . __( 'Group invites sent.', 'buddypress' ) . '

              '; + } + + invite_anyone_create_screen_content('invite'); + } + + function create_screen() { + global $bp; + + /* If we're not at this step, go bye bye */ + if ( !bp_is_group_creation_step( $this->slug ) ) + return false; + + invite_anyone_create_screen_content( 'create' ); + + wp_nonce_field( 'groups_create_save_' . $this->slug ); + } + + function create_screen_save( ) { + global $bp; + + /* Always check the referer */ + check_admin_referer( 'groups_create_save_' . $this->slug ); + + /* Set method and save */ + if ( bp_group_has_invites() ) + $this->has_invites = true; + $this->method = 'create'; + $this->save(); + } + + function save() { + global $bp; + + /* Set error redirect based on save method */ + if ( $this->method == 'create' ) + $redirect_url = $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $this->slug; + else + $redirect_url = bp_get_group_permalink( $bp->groups->current_group ) . '/admin/' . $this->slug; + + groups_send_invites( $bp->loggedin_user->id, $bp->groups->current_group->id ); + + if ( $this->has_invites ) + bp_core_add_message( __('Group invites sent.', 'buddypress') ); + else + bp_core_add_message( __('Group created successfully.', 'buddypress') ); + } + + function enable_nav_item() { + global $bp; + + if ( invite_anyone_group_invite_access_test() == 'anyone' ) + return true; + else + return false; + } + + function widget_display() {} +} +bp_register_group_extension( 'BP_Invite_Anyone' ); + + +function invite_anyone_catch_group_invites() { + global $bp; + + if ( BP_INVITE_ANYONE_SLUG == $bp->current_action && isset( $bp->action_variables[0] ) && 'send' == $bp->action_variables[0] ) { + if ( !check_admin_referer( 'groups_send_invites', '_wpnonce_send_invites' ) ) + return false; + + // Send the invites. + groups_send_invites( $bp->loggedin_user->id, $bp->groups->current_group->id ); + + bp_core_add_message( __('Group invites sent.', 'buddypress') ); + + do_action( 'groups_screen_group_invite', $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) . BP_INVITE_ANYONE_SLUG ); + } +} +add_action( 'wp', 'invite_anyone_catch_group_invites', 1 ); + +function invite_anyone_create_screen_content( $event ) { + if ( !$template = locate_template( 'groups/single/invite-anyone.php', true ) ) { + include_once( 'templates/invite-anyone.php' ); + } +} + +/* Creates the list of members on the Sent Invite screen */ +function bp_new_group_invite_member_list() { + echo bp_get_new_group_invite_member_list(); +} + function bp_get_new_group_invite_member_list( $args = '' ) { + global $bp; + + $defaults = array( + 'group_id' => false, + 'separator' => 'li' + ); + + $r = wp_parse_args( $args, $defaults ); + extract( $r, EXTR_SKIP ); + + if ( !$group_id ) + $group_id = isset( $bp->groups->new_group_id ) ? $bp->groups->new_group_id : $bp->groups->current_group->id; + + $friends = get_members_invite_list( $bp->loggedin_user->id, $group_id ); + + if ( $friends ) { + $invites = groups_get_invites_for_group( $bp->loggedin_user->id, $group_id ); + + for ( $i = 0; $i < count( $friends ); $i++ ) { + $checked = ''; + if ( $invites ) { + if ( in_array( $friends[$i]['id'], $invites ) ) { + $checked = ' checked="checked"'; + } + } + + $items[] = '<' . $separator . '> ' . $friends[$i]['full_name'] . ''; + } + } + + return implode( "\n", (array)$items ); + } + +/** + * Fetch a list of site members eligible to be invited to a group. + * + * The list is essentially a list of everyone on the site, minus the logged in user and members + * of the current group. + * + * @package Invite Anyone + * @since 1.0 + * + * @param int $group_id The group_id you want to exclude + * @param str $search_terms If you want to search on username/display name + * @return array $users An array of located users + */ +function invite_anyone_invite_query( $group_id = false, $search_terms = false ) { + // Get a list of group members to be excluded from the main query + $group_members = array(); + $args = array( + 'group_id' => $group_id, + 'exclude_admins_mods' => false + ); + if ( $search_terms ) + $args['search'] = $search_terms; + + if ( bp_group_has_members( $args ) ) { + while ( bp_group_members() ) { + bp_group_the_member(); + $group_members[] = bp_get_group_member_id(); + } + } + + // Don't include the logged-in user, either + $group_members[] = bp_loggedin_user_id(); + + // Now do a user query + // Pass a null blog id so that the capabilities check is skipped. For BP blog_id doesn't + // matter anyway + $user_query = new Invite_Anyone_User_Query( array( 'blog_id' => NULL, 'exclude' => $group_members, 'search' => $search_terms ) ); + + return $user_query->results; +} + +/** + * Extends the WP_User_Query class to make it easier for us to search across different fields + * + * @package Invite Anyone + * @since 1.0.4 + */ +class Invite_Anyone_User_Query extends WP_User_Query { + function __construct( $query = null ) { + add_action( 'pre_user_query', array( &$this, 'filter_registered_users_only' ) ); + parent::__construct( $query ); + } + + /** + * BuddyPress has different user statuses. We need to filter the user list so only registered users are shown. + */ + function filter_registered_users_only( $query ) { + $query->query_where .= ' AND user_status = 0'; + } + + /** + * @see WP_User_Query::get_search_sql() + */ + function get_search_sql( $string, $cols, $wild = false ) { + $string = esc_sql( $string ); + + // Always search all columns + $cols = array( + 'user_email', + 'user_login', + 'user_nicename', + 'user_url', + 'display_name' + ); + + // Always do 'both' for trailing_wild + $wild = 'both'; + + $searches = array(); + $leading_wild = ( 'leading' == $wild || 'both' == $wild ) ? '%' : ''; + $trailing_wild = ( 'trailing' == $wild || 'both' == $wild ) ? '%' : ''; + foreach ( $cols as $col ) { + if ( 'ID' == $col ) + $searches[] = "$col = '$string'"; + else + $searches[] = "$col LIKE '$leading_wild" . like_escape($string) . "$trailing_wild'"; + } + + return ' AND (' . implode(' OR ', $searches) . ') AND user_status = 0'; + } +} + +function get_members_invite_list( $user_id = false, $group_id ) { + global $bp, $wpdb; + + if ( $users = invite_anyone_invite_query( $bp->groups->current_group->id ) ) { + + foreach( (array)$users as $member ) { + $user_id = $member->ID; + + $display_name = bp_core_get_user_displayname( $user_id ); + + if ( $display_name != '' ) { + $friends[] = array( + 'id' => $user_id, + 'full_name' => $display_name + ); + } + } + + } + + if ( !$friends ) + return false; + + return $friends; +} + +function invite_anyone_ajax_invite_user() { + global $bp; + + check_ajax_referer( 'groups_invite_uninvite_user' ); + + if ( !$_POST['friend_id'] || !$_POST['friend_action'] || !$_POST['group_id'] ) + return false; + + if ( 'invite' == $_POST['friend_action'] ) { + + if ( !groups_invite_user( array( 'user_id' => $_POST['friend_id'], 'group_id' => $_POST['group_id'] ) ) ) + return false; + + $user = new BP_Core_User( $_POST['friend_id'] ); + + $group_slug = isset( $bp->groups->root_slug ) ? $bp->groups->root_slug : $bp->groups->slug; + + echo '
            • '; + echo bp_core_fetch_avatar( array( 'item_id' => $user->id ) ); + echo '

              ' . bp_core_get_userlink( $user->id ) . '

              '; + echo '' . esc_html( $user->last_active ) . ''; + echo ''; + echo '
            • '; + + } else if ( 'uninvite' == $_POST['friend_action'] ) { + + if ( !groups_uninvite_user( $_POST['friend_id'], $_POST['group_id'] ) ) + return false; + + return true; + + } else { + return false; + } +} +add_action( 'wp_ajax_invite_anyone_groups_invite_user', 'invite_anyone_ajax_invite_user' ); + +function invite_anyone_ajax_autocomplete_results() { + global $bp; + + $return = array( + 'query' => $_REQUEST['query'], + 'data' => array(), + 'suggestions' => array() + ); + + $users = invite_anyone_invite_query( $bp->groups->current_group->id, $_REQUEST['query'] ); + + if ( $users ) { + $suggestions = array(); + $data = array(); + + foreach ( $users as $user ) { + $suggestions[] = $user->display_name . ' (' . $user->user_login . ')'; + $data[] = $user->ID; + } + + $return['suggestions'] = $suggestions; + $return['data'] = $data; + } + + echo json_encode( $return ); +} +add_action( 'wp_ajax_invite_anyone_autocomplete_ajax_handler', 'invite_anyone_ajax_autocomplete_results' ); + +function invite_anyone_remove_group_creation_invites( $a ) { + + foreach ( $a as $key => $value ) { + if ( $key == 'group-invites' ) { + unset( $a[$key] ); + } + } + return $a; +} + +function invite_anyone_remove_invite_subnav() { + global $bp; + + if ( invite_anyone_group_invite_access_test() == 'friends' ) + return; + + if ( isset( $bp->groups->group_creation_steps['group-invites'] ) ) + unset( $bp->groups->group_creation_steps['group-invites'] ); + + // BP 1.5 / BP 1.2 + $parent_slug = isset( $bp->groups->root_slug ) && isset( $bp->groups->current_group->slug ) ? $bp->groups->current_group->slug : $bp->groups->slug; + + bp_core_remove_subnav_item( $parent_slug, 'send-invites' ); +} +add_filter( 'groups_create_group_steps', 'invite_anyone_remove_group_creation_invites', 1 ); +add_action( 'bp_setup_nav', 'invite_anyone_remove_invite_subnav', 15 ); + + + + +/* Utility function to test which members the current user can invite to a group */ +function invite_anyone_group_invite_access_test() { + global $current_user, $bp; + + if ( !is_user_logged_in() || empty( $bp->groups->current_group ) ) + return 'noone'; + + if ( !$iaoptions = get_option( 'invite_anyone' ) ) + $iaoptions = array(); + + if ( bp_is_group_create() ) { + if ( empty( $iaoptions['group_invites_can_group_admin'] ) || $iaoptions['group_invites_can_group_admin'] == 'anyone' || !$iaoptions['group_invites_can_group_admin'] ) + return 'anyone'; + if ( $iaoptions['group_invites_can_group_admin'] == 'friends' ) + return 'friends'; + if ( $iaoptions['group_invites_can_group_admin'] == 'noone' ) + return 'noone'; + } + + if ( !groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) + return 'noone'; + + if ( is_super_admin() ) { + if ( empty( $iaoptions['group_invites_can_admin'] ) || $iaoptions['group_invites_can_admin'] == 'anyone' || !$iaoptions['group_invites_can_admin'] ) + return 'anyone'; + if ( $iaoptions['group_invites_can_admin'] == 'friends' ) + return 'friends'; + if ( $iaoptions['group_invites_can_admin'] == 'noone' ) + return 'noone'; + } else if ( bp_group_is_admin() || bp_is_group_create() ) { + if ( empty( $iaoptions['group_invites_can_group_admin'] ) || $iaoptions['group_invites_can_group_admin'] == 'anyone' || !$iaoptions['group_invites_can_group_admin'] ) + return 'anyone'; + if ( $iaoptions['group_invites_can_group_admin'] == 'friends' ) + return 'friends'; + if ( $iaoptions['group_invites_can_group_admin'] == 'noone' ) + return 'noone'; + } else if ( bp_group_is_mod() ) { + if ( empty( $iaoptions['group_invites_can_group_mod'] ) || $iaoptions['group_invites_can_group_mod'] == 'anyone' || !$iaoptions['group_invites_can_group_mod'] ) + return 'anyone'; + if ( $iaoptions['group_invites_can_group_mod'] == 'friends' ) + return 'friends'; + if ( $iaoptions['group_invites_can_group_mod'] == 'noone' ) + return 'noone'; + } else { + if ( empty( $iaoptions['group_invites_can_group_member'] ) || $iaoptions['group_invites_can_group_member'] == 'anyone' || !$iaoptions['group_invites_can_group_member'] ) + return 'anyone'; + if ( $iaoptions['group_invites_can_group_member'] == 'friends' ) + return 'friends'; + if ( $iaoptions['group_invites_can_group_member'] == 'noone' ) + return 'noone'; + } + + return 'noone'; +} + +?> diff --git a/wp-content/plugins/invite-anyone/group-invites/img/shadow.png b/wp-content/plugins/invite-anyone/group-invites/img/shadow.png new file mode 100644 index 0000000..a2561df Binary files /dev/null and b/wp-content/plugins/invite-anyone/group-invites/img/shadow.png differ diff --git a/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/jquery-1.3.2.min.js b/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/jquery-1.3.2.min.js new file mode 100644 index 0000000..b1ae21d --- /dev/null +++ b/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
              "]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
              ","
              "]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

              ";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
              ";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
              ").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
              ';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/jquery.autocomplete-min.js b/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/jquery.autocomplete-min.js new file mode 100644 index 0000000..7018fd0 --- /dev/null +++ b/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/jquery.autocomplete-min.js @@ -0,0 +1,11 @@ +/** +* Ajax Autocomplete for jQuery, version 1.1.3 +* (c) 2010 Tomas Kirda +* +* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. +* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/ +* +* Last Review: 04/19/2010 +*/ + +(function(d){function l(b,a,c){a="("+c.replace(m,"\\$1")+")";return b.replace(new RegExp(a,"gi"),"$1")}function i(b,a){this.el=d(b);this.el.attr("autocomplete","off");this.suggestions=[];this.data=[];this.badQueries=[];this.selectedIndex=-1;this.currentValue=this.el.val();this.intervalId=0;this.cachedResponse=[];this.onChangeInterval=null;this.ignoreValueChange=false;this.serviceUrl=a.serviceUrl;this.isLocal=false;this.options={autoSubmit:false,minChars:1,maxHeight:300,deferRequestBy:0, width:0,highlight:true,params:{},fnFormatResult:l,delimiter:null,zIndex:9999};this.initialize();this.setOptions(a)}var m=new RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)","g");d.fn.autocomplete=function(b){return new i(this.get(0)||d(""),b)};i.prototype={killerFn:null,initialize:function(){var b,a,c;b=this;a=Math.floor(Math.random()*1048576).toString(16);c="Autocomplete_"+a;this.killerFn=function(e){if(d(e.target).parents(".autocomplete").size()===0){b.killSuggestions(); b.disableKillerFn()}};if(!this.options.width)this.options.width=this.el.width();this.mainContainerId="AutocompleteContainter_"+a;d('
              ').appendTo("body");this.container=d("#"+c);this.fixPosition();window.opera?this.el.keypress(function(e){b.onKeyPress(e)}):this.el.keydown(function(e){b.onKeyPress(e)});this.el.keyup(function(e){b.onKeyUp(e)}); this.el.blur(function(){b.enableKillerFn()});this.el.focus(function(){b.fixPosition()})},setOptions:function(b){var a=this.options;d.extend(a,b);if(a.lookup){this.isLocal=true;if(d.isArray(a.lookup))a.lookup={suggestions:a.lookup,data:[]}}d("#"+this.mainContainerId).css({zIndex:a.zIndex});this.container.css({maxHeight:a.maxHeight+"px",width:a.width})},clearCache:function(){this.cachedResponse=[];this.badQueries=[]},disable:function(){this.disabled=true},enable:function(){this.disabled=false},fixPosition:function(){var b= this.el.offset();d("#"+this.mainContainerId).css({top:b.top+this.el.innerHeight()+"px",left:b.left+"px"})},enableKillerFn:function(){d(document).bind("click",this.killerFn)},disableKillerFn:function(){d(document).unbind("click",this.killerFn)},killSuggestions:function(){var b=this;this.stopKillSuggestions();this.intervalId=window.setInterval(function(){b.hide();b.stopKillSuggestions()},300)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},onKeyPress:function(b){if(!(this.disabled|| !this.enabled)){switch(b.keyCode){case 27:this.el.val(this.currentValue);this.hide();break;case 9:case 13:if(this.selectedIndex===-1){this.hide();return}this.select(this.selectedIndex);if(b.keyCode===9)return;break;case 38:this.moveUp();break;case 40:this.moveDown();break;default:return}b.stopImmediatePropagation();b.preventDefault()}},onKeyUp:function(b){if(!this.disabled){switch(b.keyCode){case 38:case 40:return}clearInterval(this.onChangeInterval);if(this.currentValue!==this.el.val())if(this.options.deferRequestBy> 0){var a=this;this.onChangeInterval=setInterval(function(){a.onValueChange()},this.options.deferRequestBy)}else this.onValueChange()}},onValueChange:function(){clearInterval(this.onChangeInterval);this.currentValue=this.el.val();var b=this.getQuery(this.currentValue);this.selectedIndex=-1;if(this.ignoreValueChange)this.ignoreValueChange=false;else b===""||b.length'+e(c,this.data[f],g)+"
              ");c.mouseover(j(f));c.click(k(f));this.container.append(c)}this.enabled=true;this.container.show()}},processResponse:function(b){var a;try{a=eval("("+b+")")}catch(c){return}if(!d.isArray(a.data))a.data=[];if(!this.options.noCache){this.cachedResponse[a.query]= a;a.suggestions.length===0&&this.badQueries.push(a.query)}if(a.query===this.getQuery(this.currentValue)){this.suggestions=a.suggestions;this.data=a.data;this.suggest()}},activate:function(b){var a,c;a=this.container.children();this.selectedIndex!==-1&&a.length>this.selectedIndex&&d(a.get(this.selectedIndex)).removeClass();this.selectedIndex=b;if(this.selectedIndex!==-1&&a.length>this.selectedIndex){c=a.get(this.selectedIndex);d(c).addClass("selected")}return c},deactivate:function(b,a){b.className= "";if(this.selectedIndex===a)this.selectedIndex=-1},select:function(b){var a;if(a=this.suggestions[b]){this.el.val(a);if(this.options.autoSubmit){a=this.el.parents("form");a.length>0&&a.get(0).submit()}this.ignoreValueChange=true;this.hide();this.onSelect(b)}},moveUp:function(){if(this.selectedIndex!==-1)if(this.selectedIndex===0){this.container.children().get(0).className="";this.selectedIndex=-1;this.el.val(this.currentValue)}else this.adjustScroll(this.selectedIndex-1)},moveDown:function(){this.selectedIndex!== this.suggestions.length-1&&this.adjustScroll(this.selectedIndex+1)},adjustScroll:function(b){var a,c,e;a=this.activate(b).offsetTop;c=this.container.scrollTop();e=c+this.options.maxHeight-25;if(ae&&this.container.scrollTop(a-this.options.maxHeight+25);this.el.val(this.getValue(this.suggestions[b]))},onSelect:function(b){var a,c;a=this.options.onSelect;c=this.suggestions[b];b=this.data[b];this.el.val(this.getValue(c));d.isFunction(a)&&a(c,b,this.el)},getValue:function(b){var a, c;a=this.options.delimiter;if(!a)return b;c=this.currentValue;a=c.split(a);if(a.length===1)return b;return c.substr(0,c.length-a[a.length-1].length)+b}}})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/jquery.autocomplete.js b/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/jquery.autocomplete.js new file mode 100644 index 0000000..6dd1b86 --- /dev/null +++ b/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/jquery.autocomplete.js @@ -0,0 +1,392 @@ +/** +* Ajax Autocomplete for jQuery, version 1.1.3 +* (c) 2010 Tomas Kirda +* +* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. +* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/ +* +* Last Review: 04/19/2010 +*/ + +/*jslint onevar: true, evil: true, nomen: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */ +/*global window: true, document: true, clearInterval: true, setInterval: true, jQuery: true */ + +(function($) { + + var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); + + function fnFormatResult(value, data, currentValue) { + var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')'; + return value.replace(new RegExp(pattern, 'gi'), '$1<\/strong>'); + } + + function Autocomplete(el, options) { + this.el = $(el); + this.el.attr('autocomplete', 'off'); + this.suggestions = []; + this.data = []; + this.badQueries = []; + this.selectedIndex = -1; + this.currentValue = this.el.val(); + this.intervalId = 0; + this.cachedResponse = []; + this.onChangeInterval = null; + this.ignoreValueChange = false; + this.serviceUrl = options.serviceUrl; + this.isLocal = false; + this.options = { + autoSubmit: false, + minChars: 1, + maxHeight: 300, + deferRequestBy: 0, + width: 0, + highlight: true, + params: {}, + fnFormatResult: fnFormatResult, + delimiter: null, + zIndex: 9999 + }; + this.initialize(); + this.setOptions(options); + } + + $.fn.autocomplete = function(options) { + return new Autocomplete(this.get(0)||$(''), options); + }; + + + Autocomplete.prototype = { + + killerFn: null, + + initialize: function() { + + var me, uid, autocompleteElId; + me = this; + uid = Math.floor(Math.random()*0x100000).toString(16); + autocompleteElId = 'Autocomplete_' + uid; + + this.killerFn = function(e) { + if ($(e.target).parents('.autocomplete').size() === 0) { + me.killSuggestions(); + me.disableKillerFn(); + } + }; + + if (!this.options.width) { this.options.width = this.el.width(); } + this.mainContainerId = 'AutocompleteContainter_' + uid; + + $('
              ').appendTo('body'); + + this.container = $('#' + autocompleteElId); + this.fixPosition(); + if (window.opera) { + this.el.keypress(function(e) { me.onKeyPress(e); }); + } else { + this.el.keydown(function(e) { me.onKeyPress(e); }); + } + this.el.keyup(function(e) { me.onKeyUp(e); }); + this.el.blur(function() { me.enableKillerFn(); }); + this.el.focus(function() { me.fixPosition(); }); + }, + + setOptions: function(options){ + var o = this.options; + $.extend(o, options); + if(o.lookup){ + this.isLocal = true; + if($.isArray(o.lookup)){ o.lookup = { suggestions:o.lookup, data:[] }; } + } + $('#'+this.mainContainerId).css({ zIndex:o.zIndex }); + this.container.css({ maxHeight: o.maxHeight + 'px', width:o.width }); + }, + + clearCache: function(){ + this.cachedResponse = []; + this.badQueries = []; + }, + + disable: function(){ + this.disabled = true; + }, + + enable: function(){ + this.disabled = false; + }, + + fixPosition: function() { + var offset = this.el.offset(); + $('#' + this.mainContainerId).css({ top: (offset.top + this.el.innerHeight()) + 'px', left: offset.left + 'px' }); + }, + + enableKillerFn: function() { + var me = this; + $(document).bind('click', me.killerFn); + }, + + disableKillerFn: function() { + var me = this; + $(document).unbind('click', me.killerFn); + }, + + killSuggestions: function() { + var me = this; + this.stopKillSuggestions(); + this.intervalId = window.setInterval(function() { me.hide(); me.stopKillSuggestions(); }, 300); + }, + + stopKillSuggestions: function() { + window.clearInterval(this.intervalId); + }, + + onKeyPress: function(e) { + if (this.disabled || !this.enabled) { return; } + // return will exit the function + // and event will not be prevented + switch (e.keyCode) { + case 27: //KEY_ESC: + this.el.val(this.currentValue); + this.hide(); + break; + case 9: //KEY_TAB: + case 13: //KEY_RETURN: + if (this.selectedIndex === -1) { + this.hide(); + return; + } + this.select(this.selectedIndex); + if(e.keyCode === 9){ return; } + break; + case 38: //KEY_UP: + this.moveUp(); + break; + case 40: //KEY_DOWN: + this.moveDown(); + break; + default: + return; + } + e.stopImmediatePropagation(); + e.preventDefault(); + }, + + onKeyUp: function(e) { + if(this.disabled){ return; } + switch (e.keyCode) { + case 38: //KEY_UP: + case 40: //KEY_DOWN: + return; + } + clearInterval(this.onChangeInterval); + if (this.currentValue !== this.el.val()) { + if (this.options.deferRequestBy > 0) { + // Defer lookup in case when value changes very quickly: + var me = this; + this.onChangeInterval = setInterval(function() { me.onValueChange(); }, this.options.deferRequestBy); + } else { + this.onValueChange(); + } + } + }, + + onValueChange: function() { + clearInterval(this.onChangeInterval); + this.currentValue = this.el.val(); + var q = this.getQuery(this.currentValue); + this.selectedIndex = -1; + if (this.ignoreValueChange) { + this.ignoreValueChange = false; + return; + } + if (q === '' || q.length < this.options.minChars) { + this.hide(); + } else { + this.getSuggestions(q); + } + }, + + getQuery: function(val) { + var d, arr; + d = this.options.delimiter; + if (!d) { return $.trim(val); } + arr = val.split(d); + return $.trim(arr[arr.length - 1]); + }, + + getSuggestionsLocal: function(q) { + var ret, arr, len, val, i; + arr = this.options.lookup; + len = arr.suggestions.length; + ret = { suggestions:[], data:[] }; + q = q.toLowerCase(); + for(i=0; i< len; i++){ + val = arr.suggestions[i]; + if(val.toLowerCase().indexOf(q) === 0){ + ret.suggestions.push(val); + ret.data.push(arr.data[i]); + } + } + return ret; + }, + + getSuggestions: function(q) { + var cr, me; + cr = this.isLocal ? this.getSuggestionsLocal(q) : this.cachedResponse[q]; + + if (cr && $.isArray(cr.suggestions)) { + this.suggestions = cr.suggestions; + this.data = cr.data; + this.suggest(); + } else if (!this.isBadQuery(q)) { + me = this; + me.options.params.query = q; + $.get(this.serviceUrl, me.options.params, function(txt) { me.processResponse(txt); }, 'text'); + } + }, + + isBadQuery: function(q) { + var i = this.badQueries.length; + while (i--) { + if (q.indexOf(this.badQueries[i]) === 0) { return true; } + } + return false; + }, + + hide: function() { + this.enabled = false; + this.selectedIndex = -1; + this.container.hide(); + }, + + suggest: function() { + if (this.suggestions.length === 0) { + this.hide(); + return; + } + + var me, len, div, f, v, i, s, mOver, mClick; + me = this; + len = this.suggestions.length; + f = this.options.fnFormatResult; + v = this.getQuery(this.currentValue); + mOver = function(xi) { return function() { me.activate(xi); }; }; + mClick = function(xi) { return function() { me.select(xi); }; }; + this.container.hide().empty(); + for (i = 0; i < len; i++) { + s = this.suggestions[i]; + div = $((me.selectedIndex === i ? '
              ' + f(s, this.data[i], v) + '
              '); + div.mouseover(mOver(i)); + div.click(mClick(i)); + this.container.append(div); + } + this.enabled = true; + this.container.show(); + }, + + processResponse: function(text) { + var response; + try { + response = eval('(' + text + ')'); + } catch (err) { return; } + if (!$.isArray(response.data)) { response.data = []; } + if(!this.options.noCache){ + this.cachedResponse[response.query] = response; + if (response.suggestions.length === 0) { this.badQueries.push(response.query); } + } + if (response.query === this.getQuery(this.currentValue)) { + + this.suggestions = response.suggestions; + this.data = response.data; + this.suggest(); + } + }, + + activate: function(index) { + var divs, activeItem; + divs = this.container.children(); + // Clear previous selection: + if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) { + $(divs.get(this.selectedIndex)).removeClass(); + } + this.selectedIndex = index; + if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) { + activeItem = divs.get(this.selectedIndex); + $(activeItem).addClass('selected'); + } + return activeItem; + }, + + deactivate: function(div, index) { + div.className = ''; + if (this.selectedIndex === index) { this.selectedIndex = -1; } + }, + + select: function(i) { + var selectedValue, f; + selectedValue = this.suggestions[i]; + if (selectedValue) { + this.el.val(selectedValue); + if (this.options.autoSubmit) { + f = this.el.parents('form'); + if (f.length > 0) { f.get(0).submit(); } + } + this.ignoreValueChange = true; + this.hide(); + this.onSelect(i); + } + }, + + moveUp: function() { + if (this.selectedIndex === -1) { return; } + if (this.selectedIndex === 0) { + this.container.children().get(0).className = ''; + this.selectedIndex = -1; + this.el.val(this.currentValue); + return; + } + this.adjustScroll(this.selectedIndex - 1); + }, + + moveDown: function() { + if (this.selectedIndex === (this.suggestions.length - 1)) { return; } + this.adjustScroll(this.selectedIndex + 1); + }, + + adjustScroll: function(i) { + var activeItem, offsetTop, upperBound, lowerBound; + activeItem = this.activate(i); + offsetTop = activeItem.offsetTop; + upperBound = this.container.scrollTop(); + lowerBound = upperBound + this.options.maxHeight - 25; + if (offsetTop < upperBound) { + this.container.scrollTop(offsetTop); + } else if (offsetTop > lowerBound) { + this.container.scrollTop(offsetTop - this.options.maxHeight + 25); + } + this.el.val(this.getValue(this.suggestions[i])); + }, + + onSelect: function(i) { + var me, fn, s, d; + me = this; + fn = me.options.onSelect; + s = me.suggestions[i]; + d = me.data[i]; + me.el.val(me.getValue(s)); + if ($.isFunction(fn)) { fn(s, d, me.el); } + }, + + getValue: function(value){ + var del, currVal, arr, me; + me = this; + del = me.options.delimiter; + if (!del) { return value; } + currVal = me.currentValue; + arr = currVal.split(del); + if (arr.length === 1) { return value; } + return currVal.substr(0, currVal.length - arr[arr.length - 1].length) + value; + } + + }; + +}(jQuery)); diff --git a/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/styles.css b/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/styles.css new file mode 100644 index 0000000..e056d5c --- /dev/null +++ b/wp-content/plugins/invite-anyone/group-invites/jquery.autocomplete/styles.css @@ -0,0 +1,6 @@ + +.autocomplete-w1 { background:url(img/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:8px 0 0 6px; /* IE6 fix: */ _background:none; _margin:0; } +.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; } +.autocomplete .selected { background:#F0F0F0; } +.autocomplete div { padding:2px 5px; white-space:nowrap; } +.autocomplete strong { font-weight:normal; color:#3399FF; } diff --git a/wp-content/plugins/invite-anyone/group-invites/templates/invite-anyone.php b/wp-content/plugins/invite-anyone/group-invites/templates/invite-anyone.php new file mode 100644 index 0000000..8628acd --- /dev/null +++ b/wp-content/plugins/invite-anyone/group-invites/templates/invite-anyone.php @@ -0,0 +1,201 @@ + + + + + + + +
              + + +
              + +

              + +
                +
              • + +
              • +
              + +

              + +
              +
                + +
              + + +
              + +
              + +
              + +
              +

              +
              + + + + +
                + + + + +
              • + + +

                + + + + +
                + + + +
                +
              • + + + +
              + + + +
              + +
              + + +

              + + + + + + +
              + + + + + + + + +

              + + + +
              + + +
              +

              + +
                +
              • + +
              • +
              + +

              + +
              +
                + +
              + + +
              +
              + +
              + +
              +

              +
              + + + + +
                + + + + +
              • + + +

                + + + + +
                + + + +
                +
              • + + + + +
              + + + +
              + +
              + + +
              + +
              + + + + + + + + +
              + + + + + + + diff --git a/wp-content/plugins/invite-anyone/images/clear-x.gif b/wp-content/plugins/invite-anyone/images/clear-x.gif new file mode 100644 index 0000000..1daf819 Binary files /dev/null and b/wp-content/plugins/invite-anyone/images/clear-x.gif differ diff --git a/wp-content/plugins/invite-anyone/images/clear-x.psd b/wp-content/plugins/invite-anyone/images/clear-x.psd new file mode 100644 index 0000000..9fc75e4 Binary files /dev/null and b/wp-content/plugins/invite-anyone/images/clear-x.psd differ diff --git a/wp-content/plugins/invite-anyone/images/cloudsponge_logo.png b/wp-content/plugins/invite-anyone/images/cloudsponge_logo.png new file mode 100644 index 0000000..ec6e0c0 Binary files /dev/null and b/wp-content/plugins/invite-anyone/images/cloudsponge_logo.png differ diff --git a/wp-content/plugins/invite-anyone/images/email_go.png b/wp-content/plugins/invite-anyone/images/email_go.png new file mode 100644 index 0000000..4a6c5d3 Binary files /dev/null and b/wp-content/plugins/invite-anyone/images/email_go.png differ diff --git a/wp-content/plugins/invite-anyone/images/invite_bullet.gif b/wp-content/plugins/invite-anyone/images/invite_bullet.gif new file mode 100644 index 0000000..4da2b9e Binary files /dev/null and b/wp-content/plugins/invite-anyone/images/invite_bullet.gif differ diff --git a/wp-content/plugins/invite-anyone/images/smallest_buddypress_icon_ev.png b/wp-content/plugins/invite-anyone/images/smallest_buddypress_icon_ev.png new file mode 100644 index 0000000..16852dd Binary files /dev/null and b/wp-content/plugins/invite-anyone/images/smallest_buddypress_icon_ev.png differ diff --git a/wp-content/plugins/invite-anyone/images/sort-col-asc.gif b/wp-content/plugins/invite-anyone/images/sort-col-asc.gif new file mode 100644 index 0000000..67f53c9 Binary files /dev/null and b/wp-content/plugins/invite-anyone/images/sort-col-asc.gif differ diff --git a/wp-content/plugins/invite-anyone/images/sort-col-desc.gif b/wp-content/plugins/invite-anyone/images/sort-col-desc.gif new file mode 100644 index 0000000..f1ad660 Binary files /dev/null and b/wp-content/plugins/invite-anyone/images/sort-col-desc.gif differ diff --git a/wp-content/plugins/invite-anyone/images/tick.gif b/wp-content/plugins/invite-anyone/images/tick.gif new file mode 100644 index 0000000..97db3e2 Binary files /dev/null and b/wp-content/plugins/invite-anyone/images/tick.gif differ diff --git a/wp-content/plugins/invite-anyone/invite-anyone.php b/wp-content/plugins/invite-anyone/invite-anyone.php new file mode 100644 index 0000000..9d2115a --- /dev/null +++ b/wp-content/plugins/invite-anyone/invite-anyone.php @@ -0,0 +1,74 @@ + diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-be_BY.mo b/wp-content/plugins/invite-anyone/languages/invite-anyone-be_BY.mo new file mode 100644 index 0000000..f46530e Binary files /dev/null and b/wp-content/plugins/invite-anyone/languages/invite-anyone-be_BY.mo differ diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-be_BY.po b/wp-content/plugins/invite-anyone/languages/invite-anyone-be_BY.po new file mode 100644 index 0000000..43e0da2 --- /dev/null +++ b/wp-content/plugins/invite-anyone/languages/invite-anyone-be_BY.po @@ -0,0 +1,470 @@ +msgid "" +msgstr "" +"Project-Id-Version: Invite Anyone RU\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/invite-anyone\n" +"POT-Creation-Date: 2010-04-23 17:18+0000\n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: Web Geeks\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Belarusian\n" +"X-Poedit-Country: BELARUS\n" +"X-Poedit-SourceCharset: utf-8\n" + +#. #-#-#-#-# plugin.pot (Invite Anyone 0.6 bleeding) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/admin-panel.php:4 +#: widgets/widgets.php:38 +#: widgets/widgets.php:95 +msgid "Invite Anyone" +msgstr "" + +#: admin/admin-panel.php:15 +msgid "Settings" +msgstr "Ðалады" + +#: admin/admin-panel.php:34 +msgid "Invite Anyone Settings" +msgstr "Ðалады Invite Anyone" + +#: admin/admin-panel.php:40 +msgid "Save Changes" +msgstr "Захаваць змены" + +#: admin/admin-panel.php:53 +msgid "General Settings" +msgstr "ÐÑÐ½Ð¾ÑžÐ½Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹" + +#: admin/admin-panel.php:55 +msgid "Replacement patterns for email text fields" +msgstr "Замена Ð´Ð»Ñ Ð¿Ð°Ð»Ñ‘Ñž у Ñ‚ÑкÑце паведамленнÑ" + +#: admin/admin-panel.php:57 +msgid "Text of email invitation subject line" +msgstr "ТÑкÑÑ‚ Ñ‚Ñмы запрашÑннÑ" + +#: admin/admin-panel.php:59 +msgid "Main text of email invitation message" +msgstr "ÐÑноўны Ñ‚ÑÑÑ‚ Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑÐ½Ð½Ñ Ð¿Ð° e-mail" + +#: admin/admin-panel.php:61 +msgid "Footer text of email invitation message (not editable by users)" +msgstr "ТÑкÑÑ‚ Ñклепа паведамленнÑ-запрашÑнні (не Ñ€Ñдагуемае карыÑтачом)" + +#: admin/admin-panel.php:64 +msgid "Allow users to customize invitation" +msgstr "Дазволіць карыÑтачам наладжваць запрашÑнне" + +#: admin/admin-panel.php:67 +msgid "Number of email invitations users are permitted to send at a time" +msgstr "КолькаÑць дазволеных e-mail запрашÑннÑÑž, паÑыланых за адзін раз" + +#: admin/admin-panel.php:69 +msgid "Allow users to send group invitations along with email invitations" +msgstr "Дазволіць карыÑтачам паÑылаць запрашÑнні Ñž групы паÑродкам e-mail запрашÑннÑÑž" + +#: admin/admin-panel.php:72 +msgid "Access Settings" +msgstr "Ðалада доÑтупу" + +#: admin/admin-panel.php:74 +msgid "Allow email invitations to be sent by" +msgstr "Дазволіць запрашаць праз e-mail" + +#: admin/admin-panel.php:76 +msgid "Limit group invitations" +msgstr "Ðбмежаванні запрашÑÐ½Ð½Ñ Ñž групы" + +#: admin/admin-panel.php:89 +msgid "Control the default behavior of Invite Anyone." +msgstr "Кіраванне паводзінамі Invite Anyone па-змаўчанню" + +#: admin/admin-panel.php:99 +msgid "name of your website" +msgstr "Ñ–Ð¼Ñ Ð²Ð°ÑˆÐ°Ð³Ð° вÑб-Ñайта" + +#: admin/admin-panel.php:100 +msgid "display name of the inviter" +msgstr "паказваць Ñ–Ð¼Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÐ°Ð»ÑŒÐ½Ð°Ð³Ð°" + +#: admin/admin-panel.php:101 +msgid "URL to the profile of the inviter" +msgstr "СпаÑылка на профіль запрашальнага" + +#: admin/admin-panel.php:102 +msgid "Link that invited users can click to accept the invitation" +msgstr "СпаÑылка Ð´Ð»Ñ Ð¿Ñ€Ñ‹Ñ‘Ð¼Ñƒ запрашÑннÑ" + +#: admin/admin-panel.php:103 +msgid "Link that invited users can click to opt out of future invitations" +msgstr "СпаÑылка Ð´Ð»Ñ Ð°Ð´Ñ‚Ñрміноўкі прынÑÑ†Ñ†Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑннÑ" + +#: admin/admin-panel.php:142 +msgid "Subject line" +msgstr "ТÑма" + +#: admin/admin-panel.php:146 +msgid "Message body" +msgstr "ТÑÑÑ‚ паведамленнÑ" + +#: admin/admin-panel.php:154 +msgid "Control which members are able to send various kinds of invitations." +msgstr "КантралÑваць, хто можа паÑылаць Ñ€Ð¾Ð·Ð½Ñ‹Ñ Ð²Ñ‹Ð³Ð»Ñды запрашÑннÑÑž" + +#: admin/admin-panel.php:163 +msgid "All users" +msgstr "УÑе карыÑтачы" + +#: admin/admin-panel.php:165 +msgid "A limited set of users" +msgstr "УÑталёўка ліміту Ð´Ð»Ñ ÐºÐ°Ñ€Ñ‹Ñтачоў" + +#: admin/admin-panel.php:169 +msgid "Only users who have been members of the site for a minimum number of days:" +msgstr "ÐктыўнаÑць карыÑтачоў, Ð¼Ñ–Ð½Ñ–Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñць дзён:" + +#: admin/admin-panel.php:174 +msgid "Only users who have at least the following role on this blog:" +msgstr "Толькі карыÑтачы, ÑÐºÑ–Ñ Ð²Ð°Ð»Ð¾Ð´Ð°ÑŽÑ†ÑŒ прынамÑÑ– наÑтупнымі ролÑмі:" + +#: admin/admin-panel.php:176 +msgid "Subscriber" +msgstr "ПадпіÑант" + +#: admin/admin-panel.php:177 +msgid "Contributor" +msgstr "Удзельнік" + +#: admin/admin-panel.php:178 +msgid "Author" +msgstr "Ðўтар" + +#: admin/admin-panel.php:179 +msgid "Editor" +msgstr "РÑдактар" + +#: admin/admin-panel.php:180 +msgid "Administrator" +msgstr "ÐдмініÑтратар" + +#: admin/admin-panel.php:185 +msgid "Provide a comma-separated list of users (identified by their numerical user ids) who cannot send invitations by email:" +msgstr "Ð¡Ð¿Ñ–Ñ ÐºÐ°Ñ€Ñ‹Ñтачоў праз коÑку (ID) хто не можа адпраўлÑць запрашÑнні па e-mail:" + +#: admin/admin-panel.php:200 +msgid "Invite Anyone extends BuddyPress's default group invitation settings. Instead of allowing you to invite only friends to a group, this plugin allows you to invite any member of the site. Use these settings to limit possible invitees for different group roles." +msgstr "Ðалады па-змаўчанню пашырÑÐ½Ð½Ñ Invite Anyone Ð´Ð»Ñ BuddyPress's Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑÐ½Ð½Ñ Ñž групы. Убудова дазвалÑе запрашаць у групы не толькі ÑÑброў, але Ñ– карыÑтачоў Ñайта. ВыкарыÑтоўвайце налады Ð´Ð»Ñ Ð°Ð±Ð¼ÐµÐ¶Ð°Ð²Ð°Ð½Ð½Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñці запрашÑÐ½Ð½Ñ Ñž Ñ€Ð¾Ð·Ð½Ñ‹Ñ Ð³Ñ€ÑƒÐ¿Ñ‹ па ролÑÑ…." + +#: admin/admin-panel.php:202 +msgid "Site admins can send group invitations to: " +msgstr "ÐдмініÑтратар Ñайта можа паÑылаць Ð³Ñ€ÑƒÐ¿Ð°Ð²Ñ‹Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑнні длÑ:" + +#: admin/admin-panel.php:204 +#: admin/admin-panel.php:212 +#: admin/admin-panel.php:220 +#: admin/admin-panel.php:228 +msgid "Anyone" +msgstr "Любай" + +#: admin/admin-panel.php:205 +#: admin/admin-panel.php:213 +#: admin/admin-panel.php:221 +#: admin/admin-panel.php:229 +msgid "Friends" +msgstr "СÑбры" + +#: admin/admin-panel.php:206 +#: admin/admin-panel.php:214 +#: admin/admin-panel.php:222 +#: admin/admin-panel.php:230 +msgid "No one" +msgstr "Ðе адзін" + +#: admin/admin-panel.php:210 +msgid "Group admins can send group invitations to: " +msgstr "ÐдмініÑтратар групы можа паÑылаць Ð³Ñ€ÑƒÐ¿Ð°Ð²Ñ‹Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑнні длÑ:" + +#: admin/admin-panel.php:218 +msgid "Group mods can send group invitations to: " +msgstr "МадÑратар групы можа паÑылаць Ð³Ñ€ÑƒÐ¿Ð°Ð²Ñ‹Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑнні длÑ:" + +#: admin/admin-panel.php:226 +msgid "Group members can send group invitations to: " +msgstr "КарыÑтач групы можа паÑылаць Ð³Ñ€ÑƒÐ¿Ð°Ð²Ñ‹Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑнні длÑ:" + +#: by-email/by-email.php:56 +msgid "Opt Out" +msgstr "Ðдмовіцца" + +#: by-email/by-email.php:57 +msgid "Accept Invitation" +msgstr "ПрынÑÑ‚Ñ‹Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑнні" + +#: by-email/by-email.php:61 +#, php-format +msgid "To opt out of future invitations to %s, make sure that your email is entered in the field below and click \"Opt Out\"." +msgstr "Каб адмовіць ад запрашÑннÑÑž на будучыню, %s, увÑдзіце ваш e-mail Ñ– націÑніце \"Ðдмовіцца\"." + +#: by-email/by-email.php:63 +#, php-format +msgid "If you are here by mistake and would like to accept your invitation to %s, click \"Accept Invitation\" instead." +msgstr "Калі вы апынуліÑÑ Ñ‚ÑƒÑ‚ па памылка Ñ– жадаеце прынÑць запрашÑнне Ñž %s, націÑніце \"ПрынÑць запрашÑнне\"." + +#: by-email/by-email.php:76 +msgid "You have successfully opted out. No more invitation emails will be sent to you by this site." +msgstr "Ð’Ñ‹ паÑпÑхова адмовіліÑÑ. Вам больш не будуць прыходзіць запрашÑнні на e-mail з гÑтага Ñайта." + +#: by-email/by-email.php:79 +msgid "Sorry, there was an error in processing your request" +msgstr "Выбачыце, адбылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° пры апрацоўцы вашага запыту" + +#: by-email/by-email.php:100 +msgid "Email:" +msgstr "E-mail:" + +#: by-email/by-email.php:122 +msgid "It looks like you're trying to accept an invitation to join the site, but some information is missing. Please try again by clicking on the link in the invitation email." +msgstr "Падобна, што вы Ñпрабуеце прынÑць запрашÑнне далучыцца да Ñайта, але Ð½ÐµÐºÐ°Ñ‚Ð¾Ñ€Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ Ð°Ð´Ñутнічае. Калі лаÑка, паÑпрабуйце ÑÑˆÑ‡Ñ Ñ€Ð°Ð·, націÑнуўшы на ÑпаÑылку Ñž запрашальным ліÑце." + +#: by-email/by-email.php:164 +#, php-format +msgid "Welcome! You've been invited %s to join the site. Please fill out the information below to create your account." +msgstr "СардÑчна запрашаем! Ð’Ñ‹ запрошаны на Ñайт - %s . Калі лаÑка, запоўніце палі Ð´Ð»Ñ ÑтварÑÐ½Ð½Ñ ÑžÐ»Ñ–ÐºÐ¾Ð²Ð°Ð³Ð° запіÑу на Ñайце!" + +#: by-email/by-email.php:228 +#: by-email/by-email.php:470 +#: group-invites/group-invites.php:83 +#: group-invites/group-invites.php:236 +#: group-invites/group-invites.php:334 +msgid "Send Invites" +msgstr "Ðдправіць запрашÑнні" + +#: by-email/by-email.php:240 +#: by-email/by-email.php:412 +msgid "Invite New Members" +msgstr "ЗапраÑіць новых карыÑтачоў" + +#: by-email/by-email.php:250 +#: by-email/by-email.php:524 +msgid "Sent Invites" +msgstr "ÐÐ´Ð¿Ñ€Ð°ÑžÐ»ÐµÐ½Ñ‹Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑнні" + +#: by-email/by-email.php:382 +#: widgets/widgets.php:61 +msgid "email address" +msgstr "e-mail адраÑ" + +#: by-email/by-email.php:407 +#, php-format +msgid "Invite friends to join %s by following these steps:" +msgstr "Каб запраÑіць ÑÑброў у %s, выканаеце наÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ ÐºÑ€Ð¾ÐºÑ–:" + +#: by-email/by-email.php:416 +msgid "Enter email addresses in the fields below." +msgstr "ÐіжÑй увÑдзіце e-mail." + +#: by-email/by-email.php:416 +msgid "You can only invite people whose email addresses end in one of the following domains:" +msgstr "Ð’Ñ‹ можите запрашаць толькі тых людзей у Ñкіх e-mail знаходзіцца на наÑтупных даменах:" + +#: by-email/by-email.php:423 +msgid "(optional) Customize the subject line of the invitation email." +msgstr "(апцыÑнальна) Ðаладзіць Ñ‚Ñму Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÐ°Ð»ÑŒÐ½Ñ‹Ñ… e-mail." + +#: by-email/by-email.php:426 +msgid "Subject:" +msgstr "ТÑма:" + +#: by-email/by-email.php:435 +msgid "(optional) Customize the text of the invitation." +msgstr "(апцыÑнальна) Ðалада цеÑта запрашÑннÑ." + +#: by-email/by-email.php:438 +msgid "Message:" +msgstr "Паведамленне:" + +#: by-email/by-email.php:443 +msgid "The message will also contain a custom footer containing links to accept the invitation or opt out of further email invitations from this site." +msgstr "Дадзенае паведамленне будзе такÑама ўтрымоўваць ÑпаÑылкі на прынÑцце запрашÑÐ½Ð½Ñ Ñ†Ñ– отказаза ад запрашÑннÑÑž з гÑтага Ñайта." + +#: by-email/by-email.php:449 +msgid "(optional) Select some groups. Invitees will receive invitations to these groups when they join the site." +msgstr "(апцыÑнальна) ÐбÑрыце некалькі груп. Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐ°Ð½Ñ‹Ñ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°ÑŽÑ†ÑŒ запрашÑнні Ñž гÑÑ‚Ñ‹Ñ Ð³Ñ€ÑƒÐ¿Ñ‹ калі далучацца да Ñайта." + +#: by-email/by-email.php:487 +msgid "Your invitations were sent successfully!" +msgstr "Вашы запрашÑнні паÑпÑхова адпраўлены!" + +#: by-email/by-email.php:489 +msgid "Sorry, there was a problem sending your invitations. Please try again." +msgstr "Выбачыце, пры адпраўцы запрашÑннÑÑž адбылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°. ПаÑпрабуйце ÑÑˆÑ‡Ñ Ñ€Ð°Ð·." + +#: by-email/by-email.php:528 +msgid "You have sent invitations to the following people." +msgstr "Ð’Ñ‹ адправілі запрашÑнні наÑтупным людзÑм:" + +#: by-email/by-email.php:533 +msgid "Invited email address" +msgstr "Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐ°Ð½Ñ‹Ñ e-mail" + +#: by-email/by-email.php:534 +msgid "Group invitations" +msgstr "ЗапрашÑнні Ñž групу" + +#: by-email/by-email.php:535 +msgid "Sent" +msgstr "Ðдпраўлена" + +#: by-email/by-email.php:536 +msgid "Accepted" +msgstr "ПрынÑта" + +#: by-email/by-email.php:546 +msgid "Clear this invitation" +msgstr "Выдаліць гÑта запрашÑнне" + +#: by-email/by-email.php:579 +msgid "Clear all accepted invitations" +msgstr "Выдаліць уÑе прынÑÑ‚Ñ‹Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑнні" + +#: by-email/by-email.php:580 +msgid "Clear all invitations" +msgstr "Выдаліць уÑе запрашÑнні" + +#: by-email/by-email.php:585 +msgid "You haven't sent any email invitations yet." +msgstr "Ð’Ñ‹ ÑÑˆÑ‡Ñ Ð½Ðµ адпраўлÑлі запрашÑнне на e-mail." + +#: by-email/by-email.php:627 +#, php-format +msgid "An invitation to join the %s community." +msgstr "ЗапрашÑнне далучыцца да ÑупольнаÑці %s." + +#: by-email/by-email.php:651 +#, php-format +msgid "" +"You have been invited by %%INVITERNAME%% to join the %s community. \\n" +"\\r\\n" +"\\rVisit %%INVITERNAME%%'s profile at %%INVITERURL%%." +msgstr "" +"Ð’Ñ‹ запрошаны %%INVITERNAME%% у ÑупольнаÑць %s \\n" +"\\r\\n" +"Пагледзіце прафайл %%INVITERNAME%%' па ÑпаÑылцы %%INVITERURL%%." + +#: by-email/by-email.php:671 +#, php-format +msgid "To accept this invitation, please visit %%ACCEPTURL%%" +msgstr "Ð”Ð»Ñ Ð¿Ñ€Ñ‹Ð½ÑÑ†Ñ†Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑннÑ, калі лаÑка наведаеце %%ACCEPTURL%%" + +#: by-email/by-email.php:675 +#, php-format +msgid "To opt out of future invitations to this site, please visit %%OPTOUTURL%%" +msgstr "Ð”Ð»Ñ Ð°Ð´Ð¼Ð¾Ð²Ñ‹ ад запрашÑннÑÑž з Ñайта, калі лаÑка наведаеце %%OPTOUTURL%%" + +#: by-email/by-email.php:743 +msgid "You didn't include any email addresses!" +msgstr "Ð’Ñ‹ не можаце ўключаць Ñ–Ð½ÑˆÑ‹Ñ e-mail!" + +#: by-email/by-email.php:753 +msgid "Sorry, $email has opted out of email invitations from this site." +msgstr "Выбачыце, $email запрешен Ð´Ð»Ñ Ð°Ð´Ð¿Ñ€Ð°ÑžÐºÑ– запрашÑннÑÑž з Ñайта." + +#: by-email/by-email.php:758 +msgid "Sorry, $email is already a registered user of the site. " +msgstr "Выбачыце, але $email прыналежыць ужо зарÑгіÑтраванаму на Ñайце чалавеку." + +#: by-email/by-email.php:763 +msgid "Sorry, $email is not a permitted email address." +msgstr "Выбачыце, $email не дазволены." + +#: by-email/by-email.php:768 +msgid "Sorry, $email is not a valid email address. Please make sure that you have typed it correctly." +msgstr "Выбачыце, $email - не правільны адраÑ. Праверце карÑктнаÑць уводу." + +#: by-email/by-email.php:773 +msgid "Sorry, $email is not a permitted email address. Please make sure that you have typed the domain name correctly." +msgstr "Выбачыце, $email нÑправільны адраÑ. Праверце правільнаÑць уведзенага дамена." + +#: by-email/by-email.php:779 +msgid "Please remove the email address and try again." +msgstr "Калі лаÑка выдаліце e-mail Ñ– паÑпрабуйце ÑÑˆÑ‡Ñ Ñ€Ð°Ð·." + +#: group-invites/group-invites.php:141 +msgid "Group invites sent." +msgstr "ЗапрашÑнне Ñž групу адпраўлена." + +#: group-invites/group-invites.php:143 +msgid "Group created successfully." +msgstr "Група паÑпÑхова Ñтворана" + +#: group-invites/group-invites.php:176 +#: group-invites/group-invites.php:270 +msgid "Search for members to invite:" +msgstr "Пошук карыÑтачоў Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑннÑ:" + +#: group-invites/group-invites.php:184 +#: group-invites/group-invites.php:278 +msgid "Select members from the directory:" +msgstr "ÐбÑрыце карыÑтачоў з дырÑкторыі:" + +#: group-invites/group-invites.php:199 +msgid "Select people to invite." +msgstr "ÐбÑрыце карыÑтачоў Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑннÑ." + +#: group-invites/group-invites.php:219 +#: group-invites/group-invites.php:315 +#: group-invites/group-invites.php:466 +msgid "Remove Invite" +msgstr "Выдаліць запрашÑнне" + +#: group-invites/group-invites.php:260 +msgid "Want to invite someone to the group who is not yet a member of the site?" +msgstr "Жадаеце запраÑіць у групу таго хто не з'ÑўлÑецца ўдзельнікам Ñайта?" + +#: group-invites/group-invites.php:260 +msgid "Send invitations by email." +msgstr "Ðдправіць запрашÑнні па e-mail" + +#: group-invites/group-invites.php:295 +msgid "Select people to invite from your friends list." +msgstr "ÐбÑрыце людзей Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð°ÑˆÑÐ½Ð½Ñ Ñа ÑпіÑу ÑÑброў." + +#: widgets/widgets.php:44 +#: widgets/widgets.php:101 +msgid "Invite friends to join the site by entering their email addresses below." +msgstr "ЗапроÑіце ÑÑброў далучыцца да Ñайта, паказаўшы Ñ–Ñ… адраÑÑ‹ Ñлектроннай пошты ніжÑй." + +#: widgets/widgets.php:77 +msgid "Continue" +msgstr "ПрацÑгнуць" + +#: widgets/widgets.php:104 +msgid "Title:" +msgstr "Загаловак:" + +#: widgets/widgets.php:106 +msgid "Text to display in widget:" +msgstr "ТÑÑÑ‚ Ð´Ð»Ñ Ð°Ð´Ð»ÑŽÑÑ‚Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ñž виджете:" + +#: widgets/widgets.php:110 +msgid "Number of email fields to display in widget:" +msgstr "КолькаÑць e-mail Ð´Ð»Ñ Ð°Ð´Ð»ÑŽÑÑ‚Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ñž виджете:" + +#. Plugin URI of the plugin/theme +msgid "http://teleogistic.net/code/buddypress/invite-anyone/" +msgstr "" + +#. Description of the plugin/theme +msgid "Allows group admins to invite any BuddyPress member to a group, whether or not they are friends" +msgstr "ДазвалÑе адмініÑтратарам групы запраÑіць любога чальца BuddyPress да групы, незалежна ад таго з'ÑўлÑюцца Ñны ÑÑбрам ці нÑма" + +#. Author of the plugin/theme +msgid "Boone Gorges" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://teleogistic.net" +msgstr "" + diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-de_DE.mo b/wp-content/plugins/invite-anyone/languages/invite-anyone-de_DE.mo new file mode 100644 index 0000000..a46c20d Binary files /dev/null and b/wp-content/plugins/invite-anyone/languages/invite-anyone-de_DE.mo differ diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-de_DE.po b/wp-content/plugins/invite-anyone/languages/invite-anyone-de_DE.po new file mode 100644 index 0000000..1ea2c9a --- /dev/null +++ b/wp-content/plugins/invite-anyone/languages/invite-anyone-de_DE.po @@ -0,0 +1,845 @@ +# Copyright (C) 2010 Invite Anyone +# This file is distributed under the same license as the Invite Anyone package. +msgid "" +msgstr "" +"Project-Id-Version: Invite Anyone 1.0.11\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/invite-anyone\n" +"POT-Creation-Date: 2012-05-21 12:38:43+00:00\n" +"PO-Revision-Date: 2012-05-21 15:27+0100\n" +"Last-Translator: Thorsten \n" +"Language-Team: Thorsten Wollenhoefer (first translater Lars Berning) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" + +#. #-#-#-#-# plugin.pot (Invite Anyone 1.0.11) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/admin-panel.php:5 +#: admin/admin-panel.php:111 +#: widgets/widgets.php:38 +#: widgets/widgets.php:86 +msgid "Invite Anyone" +msgstr "Invite Anyone" + +#: admin/admin-panel.php:23 +msgid "Settings" +msgstr "Einstellungen" + +#: admin/admin-panel.php:115 +#: admin/admin-panel.php:194 +msgid "General Settings" +msgstr "Allgemeine Einstellungen" + +#: admin/admin-panel.php:119 +msgid "Access Control" +msgstr "Zugriffskontrolle" + +#: admin/admin-panel.php:123 +#: admin/admin-panel.php:175 +msgid "CloudSponge" +msgstr "CloudSponge" + +#: admin/admin-panel.php:127 +#: admin/admin-panel.php:181 +msgid "Manage Invitations" +msgstr "Einladungen verwalten" + +#: admin/admin-panel.php:131 +#: admin/admin-panel.php:187 +msgid "Stats" +msgstr "Statistik" + +#: admin/admin-panel.php:145 +msgid "Save Changes" +msgstr "Änderungen speichern" + +#: admin/admin-panel.php:163 +msgid "Access Settings" +msgstr "Zugriffseinstellungen" + +#: admin/admin-panel.php:165 +msgid "Allow email invitations to be sent by" +msgstr "E-Mail Einladungen dürfen gesendet werden von" + +#: admin/admin-panel.php:167 +msgid "Limit group invitations" +msgstr "Gruppeneinladungen beschränken" + +#: admin/admin-panel.php:169 +msgid "Limit per-user invitations" +msgstr "Pro User Einladungsbegrenzung" + +#: admin/admin-panel.php:196 +msgid "Replacement patterns for email text fields" +msgstr "Ersetzungsmuster für E-Mail Textfelder" + +#: admin/admin-panel.php:198 +msgid "Text of email invitation subject line" +msgstr "Text der E-Mail Titelzeile" + +#: admin/admin-panel.php:200 +msgid "Main text of email invitation message" +msgstr "Einladungstext" + +#: admin/admin-panel.php:202 +msgid "Footer text of email invitation message (not editable by users)" +msgstr "Fußzeile der Einladungsmail (kann nicht durch Benutzer geändert werden)" + +#: admin/admin-panel.php:204 +msgid "Allow users to customize invitation" +msgstr "Benutzern das Ändern der Einladung erlauben" + +#: admin/admin-panel.php:206 +msgid "Number of email invitations users are permitted to send at a time" +msgstr "Maximalzahl an Empfängern pro Einladung" + +#: admin/admin-panel.php:208 +msgid "Allow users to send group invitations along with email invitations" +msgstr "E-Mail Einladungen dürfen Gruppeneinladungen enthalten" + +#: admin/admin-panel.php:210 +msgid "Allow email invitations to be accepted even when site registration is disabled" +msgstr "E-Mail Einladungen dürfen auch dann akzeptiert werden, wenn Registrierungen systemweit geschlossen sind" + +#: admin/admin-panel.php:222 +msgid "Control the default behavior of Invite Anyone." +msgstr "Standardverhalten von Invite Anyone steuern" + +#: admin/admin-panel.php:230 +msgid "name of your website" +msgstr "Name der Webseite" + +#: admin/admin-panel.php:231 +msgid "display name of the inviter" +msgstr "Name des Einladenden" + +#: admin/admin-panel.php:232 +msgid "URL to the profile of the inviter" +msgstr "URL zum Profil des Einladenden" + +#: admin/admin-panel.php:233 +msgid "Link that invited users can click to accept the invitation" +msgstr "Link zum Akzeptieren der Einladung" + +#: admin/admin-panel.php:234 +msgid "Link that invited users can click to opt out of future invitations" +msgstr "Link zum Verhindern zukünftiger E-Mails von der Webseite" + +#: admin/admin-panel.php:279 +msgid "Subject line" +msgstr "Titelzeile" + +#: admin/admin-panel.php:283 +msgid "Message body" +msgstr "Nachrichtentext" + +#: admin/admin-panel.php:291 +msgid "Control which members are able to send various kinds of invitations." +msgstr "Steuern welche Mitglieder unterschiedliche Einladungsarten senden können." + +#: admin/admin-panel.php:300 +msgid "All users" +msgstr "Alle Mitglieder" + +#: admin/admin-panel.php:302 +msgid "A limited set of users" +msgstr "Nur bestimmte Mitglieder" + +#: admin/admin-panel.php:306 +msgid "Only users who have been members of the site for a minimum number of days:" +msgstr "Nur Mitglieder, die mindestens die folgende Anzahl Tage Mitglied waren:" + +#: admin/admin-panel.php:311 +msgid "Only users who have at least the following role on this blog:" +msgstr "Nur Mitglieder, die mindestens die folgende Rolle haben:" + +#: admin/admin-panel.php:313 +msgid "Subscriber" +msgstr "Abonnent" + +#: admin/admin-panel.php:314 +msgid "Contributor" +msgstr "Mitarbeiter" + +#: admin/admin-panel.php:315 +msgid "Author" +msgstr "Autor" + +#: admin/admin-panel.php:316 +msgid "Editor" +msgstr "Redakteur" + +#: admin/admin-panel.php:317 +msgid "Administrator" +msgstr "Administrator" + +#: admin/admin-panel.php:322 +msgid "Provide a comma-separated list of users (identified by their numerical user ids) who cannot send invitations by email:" +msgstr "Kommaseparierte Liste mit numerischen Benutzer ID's, die keine Einladungen senden dürfen:" + +#: admin/admin-panel.php:339 +msgid "Limit number of invites per user :" +msgstr "Begrenze die Zahl der Einladungen pro User auf:" + +#: admin/admin-panel.php:351 +msgid "Invite Anyone extends BuddyPress's default group invitation settings. Instead of allowing you to invite only friends to a group, this plugin allows you to invite any member of the site. Use these settings to limit possible invitees for different group roles." +msgstr "Invite Anyone erweitert die Gruppeneinladungseinstellungen von BuddyPress. Anstatt nur Freunden können beliebige Mitglieder in Gruppen eingeladen werden. Mit den folgenden Einstellungen kann dieses Verhalten beschränkt werden." + +#: admin/admin-panel.php:353 +msgid "Site admins can send group invitations to: " +msgstr "Websiteadministratoren können Gruppeneinladungen verschicken an:" + +#: admin/admin-panel.php:355 +#: admin/admin-panel.php:363 +#: admin/admin-panel.php:371 +#: admin/admin-panel.php:379 +msgid "Anyone" +msgstr "Jeden" + +#: admin/admin-panel.php:356 +#: admin/admin-panel.php:364 +#: admin/admin-panel.php:372 +#: admin/admin-panel.php:380 +msgid "Friends" +msgstr "Freunde" + +#: admin/admin-panel.php:357 +#: admin/admin-panel.php:365 +#: admin/admin-panel.php:373 +#: admin/admin-panel.php:381 +msgid "No one" +msgstr "Niemanden" + +#: admin/admin-panel.php:361 +msgid "Group admins can send group invitations to: " +msgstr "Gruppenadministratoren können Gruppeneinladungen verschicken an:" + +#: admin/admin-panel.php:369 +msgid "Group mods can send group invitations to: " +msgstr "Gruppenmoderatoren können Gruppeneinladungen verschicken an:" + +#: admin/admin-panel.php:377 +msgid "Group members can send group invitations to: " +msgstr "Gruppenmitglieder können Gruppeneinladungen verschicken an:" + +#: admin/admin-panel.php:398 +msgid "CloudSponge is a cool service that gives your users easy and secure access to their address books (Gmail, Yahoo, and a number of other online and desktop email clients), so that they can more easily invite friends to your site. In order to enable CloudSponge support in Invite Anyone and BuddyPress, you'll need to register for a CloudSponge account." +msgstr "CloudSponge ist ein cooler Service für deine User, weil es sicheren Zugriff auf ihre Adressbücher (z.B. Gmail, Yahoo und viele andere Online- und Desktop-Emailclients) bietet. Somit können sie leichter mehr User einladen. Damit CloudSponge funktioniert, ist bitte erst eine Registrierung für einen CloudSponge Account erforderlich. Danach kann CloudSponge aktiviert werden." + +#: admin/admin-panel.php:400 +msgid "Enable CloudSponge?" +msgstr "CloudSponge aktivieren" + +#: admin/admin-panel.php:404 +msgid "CloudSponge Domain Key" +msgstr "CloudSponge Domain Key" + +#: admin/admin-panel.php:404 +msgid "CloudSponge integration will not work without a valid domain key." +msgstr "Die CloudSponge-Integration funktioniert nicht ohne gültigen Domain Key." + +#: admin/admin-panel.php:406 +msgid "When you use CloudSponge with Invite Anyone, part of your CloudSponge monthly payment goes to the author of Invite Anyone. This is a great way to support future development of the plugin. Thanks for your support!" +msgstr "Wenn Du CloudSponge mit Invite Anyone verwendest geht ein Teil der monatlichen Gebühr an den Autor von Invite Anyone. Dies ist eine gute Möglichkeit um die weitere Entwicklung dieses Plugins zu unterstützen. Danke für die Unterstützung!" + +#: admin/admin-panel.php:509 +#: by-email/by-email-db.php:98 +msgid "View Invitation" +msgstr "Einladung anzeigen" + +#: admin/admin-panel.php:549 +msgid "(no data)" +msgstr "(keine Daten)" + +#: admin/admin-panel.php:573 +msgid "No invitations have been sent yet." +msgstr "Bisher wurden keine Einladungen versendet." + +#: admin/admin-stats.php:41 +msgid "24 Hours" +msgstr "24 Stunden" + +#: admin/admin-stats.php:44 +msgid "3 Days" +msgstr "3 Tage" + +#: admin/admin-stats.php:47 +msgid "1 Week" +msgstr "1 Woche" + +#: admin/admin-stats.php:50 +msgid "4 Weeks" +msgstr "4 Wochen" + +#: admin/admin-stats.php:53 +msgid "3 Months" +msgstr "3 Monate" + +#: admin/admin-stats.php:56 +msgid "All Time" +msgstr "Die ganze Zeit" + +#: admin/admin-stats.php:163 +#: by-email/by-email-db.php:370 +msgid "Yes" +msgstr "Ja" + +#: admin/admin-stats.php:188 +#: admin/admin-stats.php:196 +#: admin/admin-stats.php:204 +msgid "n/a" +msgstr "nicht verfügbar" + +#: admin/admin-stats.php:305 +msgid "In the last..." +msgstr "In den letzten..." + +#: admin/admin-stats.php:309 +msgid "Total Sent" +msgstr "Insgesamt versendet" + +#: admin/admin-stats.php:313 +msgid "Total Accepted" +msgstr "Insgesamt akzeptiert" + +#: admin/admin-stats.php:317 +msgid "Acceptance Rate" +msgstr "Akzeptanz Rate" + +#: admin/admin-stats.php:321 +msgid "Top Inviter (by #)" +msgstr "Top Einlader (mit #)" + +#: admin/admin-stats.php:325 +msgid "Top Inviter (by % accepted)" +msgstr "Top Einlader (mit % akzeptierten)" + +#: admin/admin-stats.php:330 +msgid "Total Sent (CloudSponge)" +msgstr "Insgesamt versendet (CloudSponge)" + +#: admin/admin-stats.php:334 +msgid "Total Accepted (CloudSponge)" +msgstr "Insgesamt akzeptiert (CloudSponge)" + +#: admin/admin-stats.php:338 +msgid "Acceptance Rate (CloudSponge)" +msgstr "Akzeptanz Rate (CloudSponge)" + +#: admin/admin-stats.php:342 +msgid "CloudSponge Usage" +msgstr "CloudSponge Gebrauch" + +#: admin/admin-stats.php:346 +msgid "Top Inviter (by #) (CloudSponge)" +msgstr "Top Einlader (mit #) (CloudSponge)" + +#: admin/admin-stats.php:350 +msgid "Top Inviter (by % accepted) (CloudSponge)" +msgstr "Top Einlader (mit % akzeptierten) (CloudSponge)" + +#: admin/admin-stats.php:378 +#: admin/admin-stats.php:403 +msgid "(%d sent)" +msgstr "(%d versendeten)" + +#: admin/admin-stats.php:382 +#: admin/admin-stats.php:407 +msgid "(%s accepted)" +msgstr "(%s akzeptiert)" + +#: by-email/by-email-db.php:92 +msgctxt "post type general name" +msgid "BuddyPress Invitations" +msgstr "BuddyPress Einladungen" + +#: by-email/by-email-db.php:93 +msgctxt "post type singular name" +msgid "Invitation" +msgstr "Einladung" + +#: by-email/by-email-db.php:94 +msgctxt "add new" +msgid "Add New" +msgstr "Neu hinzufügen" + +#: by-email/by-email-db.php:95 +msgid "Add New Invitation" +msgstr "Neue Einladung hinzufügen" + +#: by-email/by-email-db.php:96 +msgid "Edit Invitation" +msgstr "Einladung ändern" + +#: by-email/by-email-db.php:97 +msgid "New Invitation" +msgstr "Neue Einladung" + +#: by-email/by-email-db.php:99 +msgid "Search Invitation" +msgstr "Einladung suchen" + +#: by-email/by-email-db.php:100 +msgid "No Invitations found" +msgstr "Keine Einladungen gefunden" + +#: by-email/by-email-db.php:101 +msgid "No Invitations found in Trash" +msgstr "Keine Einladungen im Papierkorb gefunden" + +#: by-email/by-email-db.php:107 +msgid "BuddyPress Invitations" +msgstr "BuddyPress Einladungen" + +#: by-email/by-email-db.php:119 +#: by-email/by-email-db.php:132 +msgid "Invitees" +msgstr "Eingeladene" + +#: by-email/by-email-db.php:120 +#: by-email/by-email-db.php:127 +msgid "Invitee" +msgstr "Eingeladener" + +#: by-email/by-email-db.php:121 +msgid "Search Invitees" +msgstr "Eingeladene suchen" + +#: by-email/by-email-db.php:122 +msgid "All Invitees" +msgstr "Alle Eingeladenen" + +#: by-email/by-email-db.php:123 +msgid "Edit Invitee" +msgstr "Eingeladenen ändern" + +#: by-email/by-email-db.php:124 +msgid "Update Invitee" +msgstr "Eingeladenen aktualisieren" + +#: by-email/by-email-db.php:125 +msgid "Add New Invitee" +msgstr "Neuen Eingeladenen hinzufügen" + +#: by-email/by-email-db.php:126 +msgid "New Invitee Name" +msgstr "Name des neuen Eingeladenen" + +#: by-email/by-email-db.php:140 +#: by-email/by-email-db.php:153 +msgid "Invited Groups" +msgstr "Eingeladene Gruppen" + +#: by-email/by-email-db.php:141 +#: by-email/by-email-db.php:148 +msgid "Invited Group" +msgstr "Eingeladene Gruppe" + +#: by-email/by-email-db.php:142 +msgid "Search Invited Groups" +msgstr "Eingeladene Gruppen suchen" + +#: by-email/by-email-db.php:143 +msgid "All Invited Groups" +msgstr "Alle eingeladenen Gruppen" + +#: by-email/by-email-db.php:144 +msgid "Edit Invited Group" +msgstr "Eingeladene Gruppe ändern" + +#: by-email/by-email-db.php:145 +msgid "Update Invited Group" +msgstr "Eingeladene Gruppe aktualisieren" + +#: by-email/by-email-db.php:146 +msgid "Add New Invited Group" +msgstr "Neue eigeladene Gruppe hinzufügen" + +#: by-email/by-email-db.php:147 +msgid "New Invited Group Name" +msgstr "Name der neuen eingeladenen Gruppe" + +#: by-email/by-email-db.php:370 +msgid "No" +msgstr "Nein" + +#: by-email/by-email-db.php:917 +msgid "All done!" +msgstr "Alles erledigt!" + +#: by-email/by-email-db.php:919 +msgid "Finish" +msgstr "Beenden" + +#: by-email/by-email-db.php:957 +msgid "Migrated Invitation" +msgstr "Migrierte Einladung" + +#: by-email/by-email-db.php:977 +msgid "Importing: %1$s invited %2$s
              " +msgstr "Importieren: %1$s eingeladen %2$s
              " + +#: by-email/by-email-db.php:988 +msgid "If your browser doesn’t start loading the next page automatically, click this link:" +msgstr "Wenn dein Browser nicht die nächste Seite automatisch lädt, dann klicke diesen Link:" + +#: by-email/by-email-db.php:988 +msgid "Next Invitations" +msgstr "Nächste Einladungen" + +#: by-email/by-email-db.php:1016 +msgid "Invite Anyone Upgrade" +msgstr "Invite Anyone Upgrade" + +#: by-email/by-email-db.php:1019 +msgid "Invite Anyone has just been updated, and needs to move some old invitation data in order to complete the upgrade. Click GO to start the process." +msgstr "Invite Anyone wurde aktualisiert und muss älteren Einladungsdaten verschieben, um das Upgrade abschließen zu können. Klicke GO um den Vorgang zu starten." + +#: by-email/by-email.php:69 +msgid "Opt Out" +msgstr "Austragen" + +#: by-email/by-email.php:70 +msgid "Accept Invitation" +msgstr "Einladung annehmen" + +#: by-email/by-email.php:74 +msgid "To opt out of future invitations to %s, make sure that your email is entered in the field below and click \"Opt Out\"." +msgstr "Um zukünftig keine Einladungen mehr in die %s Community zu erhalten, überprüfe ob die E-Mail-Adresse in dem unteren Feld richtig ist und klicke \"Austragen\"" + +#: by-email/by-email.php:76 +msgid "If you are here by mistake and would like to accept your invitation to %s, click \"Accept Invitation\" instead." +msgstr "Wenn Du hier versehentlich gelandet bist und eigentlich die Einladung annehmen wolltest, klicke \"Einladung annehmen\"." + +#: by-email/by-email.php:89 +msgid "You have successfully opted out. No more invitation emails will be sent to you by this site." +msgstr "Der Austragung war erfolgreich. Du wirst keine E-Mails mehr von dieser Seite erhalten." + +#: by-email/by-email.php:92 +msgid "Sorry, there was an error in processing your request" +msgstr "Entschuldigung, es gab einen Fehler beim Bearbeiten Deiner Anfrage." + +#: by-email/by-email.php:118 +msgid "Email:" +msgstr "E-Mail:" + +#: by-email/by-email.php:140 +msgid "It looks like you're trying to accept an invitation to join the site, but some information is missing. Please try again by clicking on the link in the invitation email." +msgstr "Scheinbar versuchst Du eine Einladung dieser Community anzunehmen, aber es fehlen Informationen. Bitte versuche es erneut, indem Du den Link in der Einladungsmail noch einmal anklickst." + +#: by-email/by-email.php:185 +msgid "Welcome! You've been invited %s to join the site. Please fill out the information below to create your account." +msgstr "Schön dass Du da bist! Fülle die Felder unten aus um einen Account anzulegen." + +#: by-email/by-email.php:273 +#: by-email/by-email.php:631 +#: group-invites/group-invites.php:59 +#: group-invites/templates/invite-anyone.php:87 +#: group-invites/templates/invite-anyone.php:176 +msgid "Send Invites" +msgstr "Einladungen verschicken" + +#: by-email/by-email.php:285 +#: by-email/by-email.php:471 +#: by-email/by-email.php:534 +msgid "Invite New Members" +msgstr "Neue Mitglieder einladen" + +#: by-email/by-email.php:295 +#: by-email/by-email.php:692 +msgid "Sent Invites" +msgstr "Bereits verschickte Einladungen" + +#: by-email/by-email.php:417 +msgid "Invitation cleared" +msgstr "Einladung entfernt" + +#: by-email/by-email.php:419 +msgid "There was a problem clearing the invitation." +msgstr "Beim entfernen der Einladung ist ein Problem aufgetreten." + +#: by-email/by-email.php:422 +msgid "Invitations cleared." +msgstr "Einladungen entfernt" + +#: by-email/by-email.php:424 +msgid "There was a problem clearing the invitations." +msgstr "Beim entfernen der Einladung ist ein Problem aufgetreten." + +#: by-email/by-email.php:473 +msgid "You have sent the maximum allowed number of invitations." +msgstr "Du hast die maximale Anzahl erlaubter Einladungen erreicht." + +#: by-email/by-email.php:523 +msgid "Some of your invitations were not sent. Please see the errors below and resubmit the failed invitations." +msgstr "Einige Deiner Einladungen konnten nicht gesendet werden. Bitte schau Dir die Fehler unten an und übermittle die fehlerhaften Einladungen erneut." + +#: by-email/by-email.php:529 +msgid "Invite friends to join %s by following these steps:" +msgstr "Lade Freunde in die %s Community ein:" + +#: by-email/by-email.php:552 +msgid "The site administrator has limited each user to %1$d invitations. You have %2$d invitations remaining." +msgstr "Der Site Administrator hat jeden User mit %1$d Einladungen begrenzt. Du kannst noch %2$d Einladungen durchführen." + +#: by-email/by-email.php:570 +msgid "Enter email addresses below, one per line." +msgstr "E-Mail-Adressen der Freunde, jeweils eine pro Zeile." + +#: by-email/by-email.php:570 +msgid "You can only invite people whose email addresses end in one of the following domains:" +msgstr "Du kannst nur Personen einladen, deren E-Mail-Adresse mit einer der folgenden Domänen endet:" + +#: by-email/by-email.php:582 +msgid "(optional) Customize the subject line of the invitation email." +msgstr "(optional) Ändere den Titel der Einladungsnachricht." + +#: by-email/by-email.php:585 +msgid "Subject: Subject line is fixed" +msgstr "Titel: Der Titel ist nicht änderbar" + +#: by-email/by-email.php:594 +msgid "(optional) Customize the text of the invitation." +msgstr "(optional) Ändere den Text der Einladung." + +#: by-email/by-email.php:597 +msgid "Message:" +msgstr "Nachricht:" + +#: by-email/by-email.php:602 +msgid "The message will also contain a custom footer containing links to accept the invitation or opt out of further email invitations from this site." +msgstr "Die Nachricht wird ebenfalls eine Fußzeile mit Links zum Annehmen der Einladung bzw. zum Ignorieren von zukünftigen Einladungen enthalten." + +#: by-email/by-email.php:609 +msgid "(optional) Select some groups. Invitees will receive invitations to these groups when they join the site." +msgstr "(optional) Wähle ein paar Gruppen aus. Eingeladene werden Einladungen in diese Gruppen erhalten, wenn sie sich anmelden." + +#: by-email/by-email.php:648 +msgid "Sorry, there was a problem sending your invitations. Please try again." +msgstr "Entschuldigung, es gab ein Problem beim Versenden der Einladungen. Bitte versuche es erneut." + +#: by-email/by-email.php:699 +msgid "You have sent invitations to the following people." +msgstr "Du hast bereits Einladungen an die folgenden Freunde verschickt:" + +#: by-email/by-email.php:712 +msgid "" +"This table displays a list of all your sent invites.\n" +"\t\t\tInvites that have been accepted are highlighted in the listings.\n" +"\t\t\tYou may clear any individual invites, all accepted invites or all of the invites from the list." +msgstr "" +"Diese Tabelle zeigt alle deine gesendeten Einladungen.\n" +"\t\t\tEinladungen, die angenommen wurden, sind hervorgehoben.\n" +"\t\t\tWenn du möchtest kannst du alle Einladungen aus der Tabelle entfernen, die individuell, akzeptiert oder anders erfolgt sind." + +#: by-email/by-email.php:718 +msgid "Invited email address" +msgstr "Eingeladene E-Mail-Adresse" + +#: by-email/by-email.php:719 +msgid "Group invitations" +msgstr "Gruppeneinladungen" + +#: by-email/by-email.php:720 +msgid "Sent" +msgstr "Gesendet" + +#: by-email/by-email.php:721 +msgid "Accepted" +msgstr "Angenommen" + +#: by-email/by-email.php:729 +msgid "Clear all accepted invites from the list" +msgstr "Alle angenommen Einladungen aus der Liste entfernen." + +#: by-email/by-email.php:729 +msgid "Clear all accepted invitations" +msgstr "Alle angenommen Einladungen entfernen." + +#: by-email/by-email.php:730 +msgid "Clear all your listed invites" +msgstr "Alle angezeigten Einladungen entfernen." + +#: by-email/by-email.php:730 +msgid "Clear all invitations" +msgstr "Alle Einladungen entfernen." + +#: by-email/by-email.php:755 +msgid "Clear this invitation" +msgstr "Diese Einladung entfernen." + +#: by-email/by-email.php:809 +msgid "You haven't sent any email invitations yet." +msgstr "Du hast noch keine Einladungen verschickt." + +#: by-email/by-email.php:842 +msgid "An invitation to join the %s community." +msgstr "Du hast eine Einladung in die %s Community erhalten" + +#: by-email/by-email.php:867 +msgid "" +"You have been invited by %%INVITERNAME%% to join the %s community.\n" +"\n" +"Visit %%INVITERNAME%%'s profile at %%INVITERURL%%." +msgstr "" +"Du bist von %%INVITERNAME%% in die %%SITENAME%% Community eingeladen worden.\n" +"\n" +"Besuche das Profil von %%INVITERNAME%% unter %%INVITERURL%%." + +#: by-email/by-email.php:890 +msgid "To accept this invitation, please visit %%ACCEPTURL%%" +msgstr "Um diese Einladung anzunehmen, kannst Du den folgenden Link benutzen %%ACCEPTURL%%" + +#: by-email/by-email.php:894 +msgid "To opt out of future invitations to this site, please visit %%OPTOUTURL%%" +msgstr "Um keine weiteren Einladungen von %%SITENAME%% zu erhalten, klicke auf den folgenden Link %%OPTOUTURL%%" + +#: by-email/by-email.php:1051 +msgid "You are only allowed to invite up to %s people at a time. Please remove some addresses and try again" +msgstr "Du kannst maximal %s Personen gleichzeitig einladen. Bitte entferne ein paar Adressen und versuche es erneut." + +#: by-email/by-email.php:1059 +msgid "You didn't include any email addresses!" +msgstr "Du hast keine E-Mail-Adressen eingegeben!" + +#: by-email/by-email.php:1070 +msgid "You are only allowed to invite %s more people. Please remove some addresses and try again" +msgstr "Du kannst maximal %s Personen gleichzeitig einladen. Bitte entferne ein paar Adressen und versuche es erneut" + +#: by-email/by-email.php:1089 +msgid "%s has opted out of email invitations from this site." +msgstr "%s hat sich von E-Mail-Einladungen von dieser Internetseite ausgetragen." + +#: by-email/by-email.php:1093 +msgid "%s is already a registered user of the site." +msgstr "%s ist bereits ein registriertes Mitglied dieser Community." + +#: by-email/by-email.php:1097 +msgid "%s is not a permitted email address." +msgstr "%s ist keine erlaubte E-Mail-Adresse." + +#: by-email/by-email.php:1101 +msgid "%s is not a valid email address. Please make sure that you have typed it correctly." +msgstr "%s ist keine gültige E-Mail-Adresse. Bitte überprüfe, ob die Adresse korrekt eingegeben wurde." + +#: by-email/by-email.php:1105 +msgid "%s is not a permitted email address. Please make sure that you have typed the domain name correctly." +msgstr "%s ist keine erlaubte E-Mail-Adresse. Bitte überprüfe, ob der Domain-Name korrekt eingegeben wurde." + +#: by-email/by-email.php:1164 +msgid "Invitations were sent successfully to the following email addresses: %s" +msgstr "Einladungen wurden erfolgreich an die folgenden E-Mail-Adressen gesendet: %s" + +#: by-email/by-email.php:1170 +msgid "Please correct your errors and resubmit." +msgstr "Bitte korrigiere die Fehler und versuch es erneut." + +#: by-email/by-email.php:1218 +msgid "We couldn't find any invitations associated with this email address." +msgstr "Wir konnten keine Einladungen finden, die dieser Email Adresse zugehörig ist." + +#: by-email/cloudsponge-integration.php:71 +msgid "You can also add email addresses from your Address Book." +msgstr "Du kannst auch E-Mail-Adressen aus Deinem Adressbuch hinzufügen." + +#: group-invites/group-invites.php:89 +#: group-invites/group-invites.php:132 +#: group-invites/group-invites.php:161 +msgid "Group invites sent." +msgstr "Gruppeneinladungen gesendet" + +#: group-invites/group-invites.php:134 +msgid "Group created successfully." +msgstr "Gruppe erfolgreich angelegt" + +#: group-invites/group-invites.php:354 +#: group-invites/templates/invite-anyone.php:70 +#: group-invites/templates/invite-anyone.php:157 +msgid "Remove Invite" +msgstr "Einladung löschen" + +#: group-invites/templates/invite-anyone.php:27 +#: group-invites/templates/invite-anyone.php:115 +msgid "Search for members to invite:" +msgstr "Nach Mitgliedern für die Einladung suchen:" + +#: group-invites/templates/invite-anyone.php:35 +#: group-invites/templates/invite-anyone.php:123 +msgid "Select members from the directory:" +msgstr "Mitglieder aus dem Verzeichnis auswählen:" + +#: group-invites/templates/invite-anyone.php:50 +msgid "Select people to invite." +msgstr "Personen für die Einladung auswählen." + +#: group-invites/templates/invite-anyone.php:107 +msgid "Want to invite someone to the group who is not yet a member of the site?" +msgstr "Möchtest Du jemanden in die Gruppe einladen, der noch kein Mitglied dieser Community ist?" + +#: group-invites/templates/invite-anyone.php:107 +msgid "Send invitations by email." +msgstr "Einladung per E-Mail verschicken." + +#: group-invites/templates/invite-anyone.php:137 +msgid "Select people to invite from your friends list." +msgstr "Personen für die Einladung aus Deiner Freundesliste auswählen." + +#: lib/bbg-cpt-pag.php:200 +msgid "Viewing %1$d - %2$d of a total of %3$d" +msgstr "Anzeigen %1$d - %2$d von gesamt %3$d" + +#: lib/bbg-cpt-pag.php:221 +msgid "«" +msgstr "«" + +#: lib/bbg-cpt-pag.php:222 +msgid "»" +msgstr "»" + +#: widgets/widgets.php:41 +msgid "Enter one email address per line to invite friends to join this site." +msgstr "Gib pro Zeile eine Email-Adresse ein, um Freunde in deine Community einzuladen." + +#: widgets/widgets.php:68 +msgid "Continue" +msgstr "Weiter" + +#: widgets/widgets.php:92 +msgid "Invite friends to join the site by entering their email addresses below." +msgstr "Lade Freunde ein, indem Du ihre E-Mail-Adresse unten einträgst." + +#: widgets/widgets.php:95 +msgid "Title:" +msgstr "Titel:" + +#: widgets/widgets.php:97 +msgid "Text to display in widget:" +msgstr "Text, der im Widget angezeigt wird:" + +#: widgets/widgets.php:101 +msgid "Number of email fields to display in widget:" +msgstr "Anzahl der E-Mail-Felder im Widget:" + +#. Plugin URI of the plugin/theme +msgid "http://teleogistic.net/code/buddypress/invite-anyone/" +msgstr "http://teleogistic.net/code/buddypress/invite-anyone/" + +#. Description of the plugin/theme +msgid "Allows group admins to invite any member of their BuddyPress community to a group or to the site" +msgstr "Gruppenadministratoren dürfen alle Mitglieder in Gruppen einladen" + +#. Author of the plugin/theme +msgid "Boone Gorges" +msgstr "Boone Gorges" + +#. Author URI of the plugin/theme +msgid "http://boone.gorg.es" +msgstr "http://boone.gorg.es" + +#~ msgid "email address" +#~ msgstr "E-Mail-Adresse" + +#~ msgid "Invite Anyone Settings" +#~ msgstr "Invite Anyone Einstellungen" diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-el.mo b/wp-content/plugins/invite-anyone/languages/invite-anyone-el.mo new file mode 100644 index 0000000..1180899 Binary files /dev/null and b/wp-content/plugins/invite-anyone/languages/invite-anyone-el.mo differ diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-el.po b/wp-content/plugins/invite-anyone/languages/invite-anyone-el.po new file mode 100644 index 0000000..2f9667e --- /dev/null +++ b/wp-content/plugins/invite-anyone/languages/invite-anyone-el.po @@ -0,0 +1,475 @@ +# Translation of the WordPress plugin Invite Anyone 0.6 bleeding by Boone Gorges. +# Copyright (C) 2010 Boone Gorges +# This file is distributed under the same license as the Invite Anyone package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Invite Anyone 0.6 bleeding\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/invite-anyone\n" +"POT-Creation-Date: 2010-04-23 17:18+0000\n" +"PO-Revision-Date: 2011-02-10 10:55+0200\n" +"Last-Translator: Stergatou Lena \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Greek\n" +"X-Poedit-Country: GREECE\n" +"X-Poedit-SourceCharset: utf-8\n" + +#. #-#-#-#-# plugin.pot (Invite Anyone 0.6 bleeding) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/admin-panel.php:4 +#: widgets/widgets.php:38 +#: widgets/widgets.php:95 +msgid "Invite Anyone" +msgstr "Invite Anyone" + +#: admin/admin-panel.php:15 +msgid "Settings" +msgstr "Ρυθμίσεις" + +#: admin/admin-panel.php:34 +msgid "Invite Anyone Settings" +msgstr "Ρυθμίσεις Invite Anyone" + +#: admin/admin-panel.php:40 +msgid "Save Changes" +msgstr "Αποθήκευση αλλαγών" + +#: admin/admin-panel.php:53 +msgid "General Settings" +msgstr "Γενικές Ïυθμίσεις" + +#: admin/admin-panel.php:55 +msgid "Replacement patterns for email text fields" +msgstr "ΠÏότυπο αντικατάστασης για τα πεδία κειμένου του email" + +#: admin/admin-panel.php:57 +msgid "Text of email invitation subject line" +msgstr "Κείμενο θέματος της Ï€Ïόσκλησης μέσω email" + +#: admin/admin-panel.php:59 +msgid "Main text of email invitation message" +msgstr "Βασικό κείμενο του email μηνÏματος Ï€Ïόσκλησης" + +#: admin/admin-panel.php:61 +msgid "Footer text of email invitation message (not editable by users)" +msgstr "Υποσέλιδο της Ï€Ïόσκληση email (δεν μποÏοÏν να το Ï„Ïοποποιήσουν οι χÏήστες)" + +#: admin/admin-panel.php:64 +msgid "Allow users to customize invitation" +msgstr "ΕπιτÏέπεται στους χÏήστες να επεξεÏγάζονται το κείμενο της Ï€Ïόσκλησης" + +#: admin/admin-panel.php:67 +msgid "Number of email invitations users are permitted to send at a time" +msgstr "Πλήθος Ï€Ïοσκλήσεων μέσω email που μποÏοÏν να σταλοÏν ταυτόχÏονα" + +#: admin/admin-panel.php:69 +msgid "Allow users to send group invitations along with email invitations" +msgstr "ΕπιτÏέπεται στους χÏήστες να αποστέλουν Ï€Ïοσκλήσες συμμετοχής σε ομάδα μέσω email" + +#: admin/admin-panel.php:72 +msgid "Access Settings" +msgstr "Ρυθμίσεις Ï€Ïόσβασης" + +#: admin/admin-panel.php:74 +msgid "Allow email invitations to be sent by" +msgstr "ΕπιτÏέπεται η αποστολή Ï€Ïοσκλήσεων email από τους" + +#: admin/admin-panel.php:76 +msgid "Limit group invitations" +msgstr "ÎŒÏιο Ï€Ïοσκλήσεων σε ομάδα" + +#: admin/admin-panel.php:89 +msgid "Control the default behavior of Invite Anyone." +msgstr "ΚαθοÏίζει τις τυπικές Ïυθμίσεις του Invite Anyone." + +#: admin/admin-panel.php:99 +msgid "name of your website" +msgstr "τίτλος του Î´Î¹ÎºÏ„Ï…Î±ÎºÎ¿Ï ÏƒÎ±Ï‚ τόπου" + +#: admin/admin-panel.php:100 +msgid "display name of the inviter" +msgstr "εμφάνιση ονόματος ατόμου που Ï€Ïοσκαλεί" + +#: admin/admin-panel.php:101 +msgid "URL to the profile of the inviter" +msgstr "URL Ï€Ïοφίλ του ατόμου που αποστέλλει την Ï€Ïόσκληση" + +#: admin/admin-panel.php:102 +msgid "Link that invited users can click to accept the invitation" +msgstr "ΣÏνδεσμος τον οποίο τα Ï€Ïοσκληθέντα άτομα μποÏοÏν να ακολουθήσουν για να αποδεχτοÏν την Ï€Ïόσκληση" + +#: admin/admin-panel.php:103 +msgid "Link that invited users can click to opt out of future invitations" +msgstr "ΣÏνδεσμος τον οποίο μποÏοÏν να ακολουθήσουν οι παÏαλήπτες ώστε να μην λαμβάνουν μελλοντικά άλλες Ï€Ïοσκλήσεις από αυτό τον δικτυακό τόπο" + +#: admin/admin-panel.php:142 +msgid "Subject line" +msgstr "ΓÏαμμή θέματος" + +#: admin/admin-panel.php:146 +msgid "Message body" +msgstr "Κείμενο μηνÏματος" + +#: admin/admin-panel.php:154 +msgid "Control which members are able to send various kinds of invitations." +msgstr "ΟÏισμός μελών που έχουν δικαίωμα να στέλνουν Ï€Ïοσκλήσεις διαφόÏων ειδών." + +#: admin/admin-panel.php:163 +msgid "All users" +msgstr "Όλοι οι χÏήστες" + +#: admin/admin-panel.php:165 +msgid "A limited set of users" +msgstr "Ένα πεÏιοÏισμένο πλήθος χÏηστών" + +#: admin/admin-panel.php:169 +msgid "Only users who have been members of the site for a minimum number of days:" +msgstr "Μόνο χÏήστες οι οποίοι είναι μέλοι του Î´Î¹ÎºÏ„Ï…Î±ÎºÎ¿Ï Ï„ÏŒÏ€Î¿Ï… τουλάχιστον για μέÏες:" + +#: admin/admin-panel.php:174 +msgid "Only users who have at least the following role on this blog:" +msgstr "Μόνοι χÏήστες που έχουν τουλάχιστον τον παÏακάτω Ïόλο σε αυτό το ιστολόγιο:" + +#: admin/admin-panel.php:176 +msgid "Subscriber" +msgstr "ΣυνδÏομητής" + +#: admin/admin-panel.php:177 +msgid "Contributor" +msgstr "ΣυνεÏγάτης" + +#: admin/admin-panel.php:178 +msgid "Author" +msgstr "Συντάκτης" + +#: admin/admin-panel.php:179 +msgid "Editor" +msgstr "ΑÏχισυντάκτης" + +#: admin/admin-panel.php:180 +msgid "Administrator" +msgstr "ΔιαχειÏιστής" + +#: admin/admin-panel.php:185 +msgid "Provide a comma-separated list of users (identified by their numerical user ids) who cannot send invitations by email:" +msgstr "Δώστε μία λίστα χÏηστών διαχωÏιζόμενη με κόμμα (με το αÏιθμητικό τους user ids) που δεν μποÏοÏν να στείλουν Ï€Ïοσκλήσεις μέσω email:" + +#: admin/admin-panel.php:200 +msgid "Invite Anyone extends BuddyPress's default group invitation settings. Instead of allowing you to invite only friends to a group, this plugin allows you to invite any member of the site. Use these settings to limit possible invitees for different group roles." +msgstr "Το Invite Anyone επεκτείνει τις κλασσικές Ïυθμίσεις του BuddyPress που αφοÏοÏν Ï€Ïόσκληση σε ομάδα. Έτσι μποÏείτε να Ï€Ïοσκαλέσετε όχι μόνο τους φίλους σας αλλά κάθε μέλος του Î´Î¹ÎºÏ„Ï…Î±ÎºÎ¿Ï Ï„ÏŒÏ€Î¿Ï…. ΧÏησιμοποιήστε τις Ïυθμίσεις για να πεÏιοÏίσετε τους πιθανοÏÏ‚ αποστολείς Ï€Ïοσκλήσεων σε συγκεκÏιμένους Ïόλους ομάδας." + +#: admin/admin-panel.php:202 +msgid "Site admins can send group invitations to: " +msgstr "ΔιαχειÏιστές του Î´Î¹ÎºÏ„Ï…Î±ÎºÎ¿Ï Ï„ÏŒÏ€Î¿Ï… μποÏοÏν να αποστείλουν Ï€Ïοσκλήσεις συμμετοχής σε ομάδα Ï€Ïος: " + +#: admin/admin-panel.php:204 +#: admin/admin-panel.php:212 +#: admin/admin-panel.php:220 +#: admin/admin-panel.php:228 +msgid "Anyone" +msgstr "Οποιοσδήποτε" + +#: admin/admin-panel.php:205 +#: admin/admin-panel.php:213 +#: admin/admin-panel.php:221 +#: admin/admin-panel.php:229 +msgid "Friends" +msgstr "Φίλους" + +#: admin/admin-panel.php:206 +#: admin/admin-panel.php:214 +#: admin/admin-panel.php:222 +#: admin/admin-panel.php:230 +msgid "No one" +msgstr "Κανένα" + +#: admin/admin-panel.php:210 +msgid "Group admins can send group invitations to: " +msgstr "ΔιαχειÏιστές ομάδας μποÏοÏν να αποστείλουν Ï€Ïοσκλήσεις συμμετοχής σε ομάδα Ï€Ïος: " + +#: admin/admin-panel.php:218 +msgid "Group mods can send group invitations to: " +msgstr "Συντονιστές ομάδας μποÏοÏν να αποστείλουν Ï€Ïοσκλήσεις συμμετοχής σε ομάδα Ï€Ïος: " + +#: admin/admin-panel.php:226 +msgid "Group members can send group invitations to: " +msgstr "Τα μέλη της ομάδας μποÏοÏν να στείλουν Ï€Ïοσκλήσεις σε:" + +#: by-email/by-email.php:56 +msgid "Opt Out" +msgstr "Opt Out" + +#: by-email/by-email.php:57 +msgid "Accept Invitation" +msgstr "Αποδοχή Ï€Ïόσκλησης" + +#: by-email/by-email.php:61 +#, php-format +msgid "To opt out of future invitations to %s, make sure that your email is entered in the field below and click \"Opt Out\"." +msgstr "Για να μην λάβετε άλλες Ï€Ïοσκλήσεις για το %s, βεβαιωθείτε ότι δώσατε το email στο παÏακάτω πεδίο και πατήστε \" ΕξαίÏεση (Opt Out)\"." + +#: by-email/by-email.php:63 +#, php-format +msgid "If you are here by mistake and would like to accept your invitation to %s, click \"Accept Invitation\" instead." +msgstr "Αν έγινε εκ παÏαδÏομής και θέλετε να αποδεχτείτε την Ï€Ïόσκληση στην ομάδα %s, πατήστε \"Αποδοχή ΠÏόσκλησης\"." + +#: by-email/by-email.php:76 +msgid "You have successfully opted out. No more invitation emails will be sent to you by this site." +msgstr "Επιτυχής ολοκλήÏωση αιτήματος εξαίÏεσης. Δεν θα λάβετε στο μέλλον μήνυμα Ï€Ïόσκλησης από αυτό τον δικτυακό τόπο." + +#: by-email/by-email.php:79 +msgid "Sorry, there was an error in processing your request" +msgstr "ΠαÏουσιάστηκε σφάλμα κατά την επεξεÏγασία του αιτήματός σας." + +#: by-email/by-email.php:100 +msgid "Email:" +msgstr "Email:" + +#: by-email/by-email.php:122 +msgid "It looks like you're trying to accept an invitation to join the site, but some information is missing. Please try again by clicking on the link in the invitation email." +msgstr "Μάλλον Ï€Ïοσπαθείτε να αποδεχτείτε μία Ï€Ïόσκληση για συμμετοχή στον δικτυακό τόπο, αλλά για κάποια πληÏοφοÏία λείπει.ΠαÏακαλώ δοκιμάστε εκ νέου πατώντας στον σÏνδεσμο του email Ï€Ïόσκλησης. " + +#: by-email/by-email.php:164 +#, php-format +msgid "Welcome! You've been invited %s to join the site. Please fill out the information below to create your account." +msgstr "ΚαλωσήÏθατε! ΠÏοσκληθήκατε %s να συμμετάσχετε στον δικτυακό τόπο. ΠαÏακαλώ συμπληÏώστε τα παÏακάτω πεδία για να δημιουÏγήσετε τον λογαÏιασμό σας." + +#: by-email/by-email.php:228 +#: by-email/by-email.php:470 +#: group-invites/group-invites.php:83 +#: group-invites/group-invites.php:236 +#: group-invites/group-invites.php:334 +msgid "Send Invites" +msgstr "Αποστολή ΠÏοσκλήσεων" + +#: by-email/by-email.php:240 +#: by-email/by-email.php:412 +msgid "Invite New Members" +msgstr "ΠÏόσκληση νέων μελών" + +#: by-email/by-email.php:250 +#: by-email/by-email.php:524 +msgid "Sent Invites" +msgstr "Αποσταλμένες Ï€Ïοσκλήσεις" + +#: by-email/by-email.php:382 +#: widgets/widgets.php:61 +msgid "email address" +msgstr "email διεÏθυνση" + +#: by-email/by-email.php:407 +#, php-format +msgid "Invite friends to join %s by following these steps:" +msgstr "ΠÏοσκαλέστε τους φίλους σας να συμμετάσχουν στην ομάδα %s ακολουθώντας τα εξής βήματα:" + +#: by-email/by-email.php:416 +msgid "Enter email addresses in the fields below." +msgstr "Δώστε διευθÏνσεις email στα παÏακάτω πεδία." + +#: by-email/by-email.php:416 +msgid "You can only invite people whose email addresses end in one of the following domains:" +msgstr "ΜποÏείτε να Ï€Ïοσκαλέσετε άτομα τα οποία έχουν email σε κάποιο από τα παÏακάτω domains:" + +#: by-email/by-email.php:423 +msgid "(optional) Customize the subject line of the invitation email." +msgstr "(Ï€ÏοαιÏετικό) ΔιαμοÏφώστε το θέμα της email Ï€Ïόσκλησης ." + +#: by-email/by-email.php:426 +msgid "Subject:" +msgstr "Θέμα:" + +#: by-email/by-email.php:435 +msgid "(optional) Customize the text of the invitation." +msgstr "(Ï€ÏοαιÏετικό) ΔιαμοÏφώστε το κείμενο της Ï€Ïόσκλησης." + +#: by-email/by-email.php:438 +msgid "Message:" +msgstr "Μήνυμα:" + +#: by-email/by-email.php:443 +msgid "The message will also contain a custom footer containing links to accept the invitation or opt out of further email invitations from this site." +msgstr "Το μήνυμα θα πεÏιέχει επίσης και ένα υποσέλιδο με συνδέσμους για την αποδοχή της Ï€Ïόσκλησης ή για την μη λήψη πεÏαιτέÏω Ï€Ïοσκλήσεων από αυτό τον δικτυακό τόπο." + +#: by-email/by-email.php:449 +msgid "(optional) Select some groups. Invitees will receive invitations to these groups when they join the site." +msgstr "(Ï€ÏοαιÏετικό) Επιλέξτε κάποιες ομάδες. Οι Ï€Ïοσκληθέντες θα λάβουν τις Ï€Ïοσκλήσεις για αυτές τις ομάδες όταν μπουν στον δικτυακό τόπο." + +#: by-email/by-email.php:487 +msgid "Your invitations were sent successfully!" +msgstr "Επιτυχής αποστολή των Ï€Ïοσκλήσεων σας!" + +#: by-email/by-email.php:489 +msgid "Sorry, there was a problem sending your invitations. Please try again." +msgstr "ΠαÏουσιάστηκε Ï€Ïόβλημα κατά την αποστολή των Ï€Ïοσκλήσεων. ΠαÏακαλώ δοκιμάστε αÏγότεÏα." + +#: by-email/by-email.php:528 +msgid "You have sent invitations to the following people." +msgstr "Έχετε στείλει Ï€Ïοσκλήσεις στους παÏακάτω." + +#: by-email/by-email.php:533 +msgid "Invited email address" +msgstr "Εmail διεÏθυνση που έχει Ï€Ïοσκληθεί" + +#: by-email/by-email.php:534 +msgid "Group invitations" +msgstr "ΠÏοσκλήσεις Ομάδας" + +#: by-email/by-email.php:535 +msgid "Sent" +msgstr "Απεσταλμένα" + +#: by-email/by-email.php:536 +msgid "Accepted" +msgstr "Έγινε αποδεκτό" + +#: by-email/by-email.php:546 +msgid "Clear this invitation" +msgstr "ΔιαγÏαφή αυτής της Ï€Ïόσκλησης" + +#: by-email/by-email.php:579 +msgid "Clear all accepted invitations" +msgstr "ΕκκαθάÏιση όλων των Ï€Ïοσκλήσεων που έγιναν αποδεκτές" + +#: by-email/by-email.php:580 +msgid "Clear all invitations" +msgstr "ΔιαγÏαφή όλων των Ï€Ïοσκλήσεων" + +#: by-email/by-email.php:585 +msgid "You haven't sent any email invitations yet." +msgstr "Δεν έχετε αποστείλει ακόμη κάποια Ï€Ïόσκληση μέσω email." + +#: by-email/by-email.php:627 +#, php-format +msgid "An invitation to join the %s community." +msgstr "Μία Ï€Ïόσκληση για να συμμετάσχετε στην κοινότητα %s." + +#: by-email/by-email.php:651 +#, php-format +msgid "" +"You have been invited by %%INVITERNAME%% to join the %s community. \\n" +"\\r\\n" +"\\rVisit %%INVITERNAME%%'s profile at %%INVITERURL%%." +msgstr "" +"ΠÏοσκληθήκατε από τον/ην %%INVITERNAME%% να συμμετάσχετε στην κοινότητα %s. \\n" +"\\r\\n" +"\\rΔείτε το Ï€Ïοφίλ του/της %%INVITERNAME%% στο %%INVITERURL%%." + +#: by-email/by-email.php:671 +#, php-format +msgid "To accept this invitation, please visit %%ACCEPTURL%%" +msgstr "Για να αποδεχτείτε την Ï€Ïόσκληση, παÏακαλώ επισκεφτείτε: %%ACCEPTURL%%" + +#: by-email/by-email.php:675 +#, php-format +msgid "To opt out of future invitations to this site, please visit %%OPTOUTURL%%" +msgstr "Για να μην λάβετε στο μέλλον άλλες Ï€Ïοσκλήσεις από αυτό τον δικτυακό τόπο, παÏακαλώ επισκεφτείτε %%OPTOUTURL%%" + +#: by-email/by-email.php:743 +msgid "You didn't include any email addresses!" +msgstr "Δεν έχετε δώσει κάποια διεÏθυνση email!" + +#: by-email/by-email.php:753 +msgid "Sorry, $email has opted out of email invitations from this site." +msgstr "Λυπάμαι, αλλά το $email έχει επιλέξει να μην λαμβάνει Ï€Ïοσκλήσεις από αυτό τον δικτυακό τόπο." + +#: by-email/by-email.php:758 +msgid "Sorry, $email is already a registered user of the site. " +msgstr "Λυπάμαι, αλλά ο $email είναι ήδη μέλος Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… Î´Î¹ÎºÏ„Ï…Î±ÎºÎ¿Ï Ï„ÏŒÏ€Î¿Ï…." + +#: by-email/by-email.php:763 +msgid "Sorry, $email is not a permitted email address." +msgstr "Λυπάμαι, αλλά το $email δεν είναι επιτÏεπόμενη email διεÏθυνση." + +#: by-email/by-email.php:768 +msgid "Sorry, $email is not a valid email address. Please make sure that you have typed it correctly." +msgstr "Λυπάμαι, αλλά η $email δεν είναι επιτÏεπτή διεÏθυνση email. ΠαÏακαλώ βεβαιωθείτε ότι την έχετε δώσει σωστά." + +#: by-email/by-email.php:773 +msgid "Sorry, $email is not a permitted email address. Please make sure that you have typed the domain name correctly." +msgstr "Λυπάμαι, αλλά η $email δεν είναι επιτÏεπτή διεÏθυνση email. ΠαÏακαλώ βεβαιωθείτε ότι έχετε δώσει σωστά το domain name." + +#: by-email/by-email.php:779 +msgid "Please remove the email address and try again." +msgstr "ΠαÏακαλώ αφαιÏέστε την email διεÏθυνση και δοκιμάστε ξανά." + +#: group-invites/group-invites.php:141 +msgid "Group invites sent." +msgstr "Η Ï€Ïόσκληση για συμμετοχή στην ομάδα στάλθηκε." + +#: group-invites/group-invites.php:143 +msgid "Group created successfully." +msgstr "Επιτυχής δημιουÏγία ομάδας." + +#: group-invites/group-invites.php:176 +#: group-invites/group-invites.php:270 +msgid "Search for members to invite:" +msgstr "Αναζήτηση μελών για Ï€Ïόσκληση:" + +#: group-invites/group-invites.php:184 +#: group-invites/group-invites.php:278 +msgid "Select members from the directory:" +msgstr "Επιλογή μελών από τον κατάλογο:" + +#: group-invites/group-invites.php:199 +msgid "Select people to invite." +msgstr "Επιλέξτε άτομα που θέλετε να Ï€Ïοσκαλέσετε." + +#: group-invites/group-invites.php:219 +#: group-invites/group-invites.php:315 +#: group-invites/group-invites.php:466 +msgid "Remove Invite" +msgstr "ΑφαίÏεση Ï€Ïόσκλησης" + +#: group-invites/group-invites.php:260 +msgid "Want to invite someone to the group who is not yet a member of the site?" +msgstr "Θέλετε να Ï€Ïοσκαλέσετε κάποιος στην ομάδα ενώ δεν είναι ακόμη μέλος του Î´Î¹ÎºÏ„Ï…Î±ÎºÎ¿Ï Ï„ÏŒÏ€Î¿Ï…;" + +#: group-invites/group-invites.php:260 +msgid "Send invitations by email." +msgstr "Αποστολή Ï€Ïοσκλήσεων μέσω email." + +#: group-invites/group-invites.php:295 +msgid "Select people to invite from your friends list." +msgstr "Επιλέξτε άτομα για να καλέσετε από τη λίστα των φίλων σας." + +#: widgets/widgets.php:44 +#: widgets/widgets.php:101 +msgid "Invite friends to join the site by entering their email addresses below." +msgstr "ΠÏοσκαλέστε φίλους σας στο δικτυακό τόπο δίνοντας το email τους παÏακάτω." + +#: widgets/widgets.php:77 +msgid "Continue" +msgstr "Συνέχεια" + +#: widgets/widgets.php:104 +msgid "Title:" +msgstr "Τίτλος:" + +#: widgets/widgets.php:106 +msgid "Text to display in widget:" +msgstr "Κείμενο Ï€Ïος εμφάνιση στη μονάδα (widget):" + +#: widgets/widgets.php:110 +msgid "Number of email fields to display in widget:" +msgstr "Πλήθος πεδίων email στην μονάδα (widget):" + +#. Plugin URI of the plugin/theme +msgid "http://teleogistic.net/code/buddypress/invite-anyone/" +msgstr "http://teleogistic.net/code/buddypress/invite-anyone/" + +#. Description of the plugin/theme +msgid "Allows group admins to invite any BuddyPress member to a group, whether or not they are friends" +msgstr "ΕπιτÏέπει στους διαχειÏιστές ομάδας να Ï€ÏοσκαλοÏν οποιοδήποτε μέλος στην ομάδα τους, ανεξάÏτητα αν είναι φίλοι ή όχι" + +#. Author of the plugin/theme +msgid "Boone Gorges" +msgstr "Boone Gorges" + +#. Author URI of the plugin/theme +msgid "http://teleogistic.net" +msgstr "http://teleogistic.net" + diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-es_ES.mo b/wp-content/plugins/invite-anyone/languages/invite-anyone-es_ES.mo new file mode 100644 index 0000000..f4902e6 Binary files /dev/null and b/wp-content/plugins/invite-anyone/languages/invite-anyone-es_ES.mo differ diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-es_ES.po b/wp-content/plugins/invite-anyone/languages/invite-anyone-es_ES.po new file mode 100644 index 0000000..2e20b38 --- /dev/null +++ b/wp-content/plugins/invite-anyone/languages/invite-anyone-es_ES.po @@ -0,0 +1,673 @@ +# Translation of the WordPress plugin Invite Anyone 0.6 bleeding by Boone Gorges. +# Copyright (C) 2010 Boone Gorges +# This file is distributed under the same license as the Invite Anyone package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Invite Anyone 0.6\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/invite-anyone\n" +"POT-Creation-Date: 2011-02-26 15:35:42+00:00\n" +"PO-Revision-Date: 2011-10-18 15:24+0100\n" +"Last-Translator: gg \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Spanish\n" +"X-Poedit-Country: COLOMBIA\n" +"X-Poedit-SourceCharset: utf-8\n" + +#: group-invites/group-invites.php:82 +#: group-invites/group-invites.php:271 +#: group-invites/group-invites.php:370 +#: by-email/by-email.php:267 +#: by-email/by-email.php:583 +msgid "Send Invites" +msgstr "Enviar invitaciones" + +#: group-invites/group-invites.php:112 +#: group-invites/group-invites.php:155 +#: group-invites/group-invites.php:184 +msgid "Group invites sent." +msgstr "Invitaciones a grupo enviadas." + +#: group-invites/group-invites.php:157 +msgid "Group created successfully." +msgstr "Grupo creado con éxito." + +#: group-invites/group-invites.php:211 +#: group-invites/group-invites.php:306 +msgid "Search for members to invite:" +msgstr "Buscar miembros a invitar:" + +#: group-invites/group-invites.php:219 +#: group-invites/group-invites.php:314 +msgid "Select members from the directory:" +msgstr "Seleccionar miembros del directorio:" + +#: group-invites/group-invites.php:234 +msgid "Select people to invite." +msgstr "Selecciona personas a invitar." + +#: group-invites/group-invites.php:254 +#: group-invites/group-invites.php:351 +#: group-invites/group-invites.php:508 +msgid "Remove Invite" +msgstr "Borrar invitación" + +#: group-invites/group-invites.php:296 +msgid "Want to invite someone to the group who is not yet a member of the site?" +msgstr "¿Quieres invitar a alguien al grupo que aún no es miembro del sitio?" + +#: group-invites/group-invites.php:296 +msgid "Send invitations by email." +msgstr "Enviar invitaciones por email." + +#: group-invites/group-invites.php:331 +msgid "Select people to invite from your friends list." +msgstr "Selecciona a las personas a invitar de tu listado de amigos." + +#: by-email/by-email-db.php:73 +msgctxt "post type general name" +msgid "BuddyPress Invitations" +msgstr "BuddyPress Invitations" + +#: by-email/by-email-db.php:74 +msgctxt "post type singular name" +msgid "Invitation" +msgstr "Invitación" + +#: by-email/by-email-db.php:75 +msgctxt "add new" +msgid "Add New" +msgstr "Añadir nuevo" + +#: by-email/by-email-db.php:76 +msgid "Add New Invitation" +msgstr "Añadir nueva invitación" + +#: by-email/by-email-db.php:77 +msgid "Edit Invitation" +msgstr "Editar invitación" + +#: by-email/by-email-db.php:78 +msgid "New Invitation" +msgstr "Nueva invitación" + +#: by-email/by-email-db.php:79 +msgid "View Invitation" +msgstr "Ver invitación" + +#: by-email/by-email-db.php:80 +msgid "Search Invitation" +msgstr "Buscar invitación" + +#: by-email/by-email-db.php:81 +msgid "No Invitations found" +msgstr "No se encontraron invitaciones" + +#: by-email/by-email-db.php:82 +msgid "No Invitations found in Trash" +msgstr "No se encontraron invitaciones en la basura" + +#: by-email/by-email-db.php:88 +msgid "BuddyPress Invitations" +msgstr "Invitaciones BuddyPress" + +#: by-email/by-email-db.php:99 +#: by-email/by-email-db.php:112 +msgid "Invitees" +msgstr "Invitados" + +#: by-email/by-email-db.php:100 +#: by-email/by-email-db.php:107 +msgid "Invitee" +msgstr "Invitado" + +#: by-email/by-email-db.php:101 +msgid "Search Invitees" +msgstr "Buscar invitados" + +#: by-email/by-email-db.php:102 +msgid "All Invitees" +msgstr "Todos los invitados" + +#: by-email/by-email-db.php:103 +msgid "Edit Invitee" +msgstr "Editar invitado" + +#: by-email/by-email-db.php:104 +msgid "Update Invitee" +msgstr "Actualizar invitado" + +#: by-email/by-email-db.php:105 +msgid "Add New Invitee" +msgstr "Añadir nuevo invitado" + +#: by-email/by-email-db.php:106 +msgid "New Invitee Name" +msgstr "Nombre del nuevo invitado" + +#: by-email/by-email-db.php:120 +#: by-email/by-email-db.php:133 +msgid "Invited Groups" +msgstr "Grupos invitados" + +#: by-email/by-email-db.php:121 +#: by-email/by-email-db.php:128 +msgid "Invited Group" +msgstr "Grupo invitado" + +#: by-email/by-email-db.php:122 +msgid "Search Invited Groups" +msgstr "Buscar grupos invitado" + +#: by-email/by-email-db.php:123 +msgid "All Invited Groups" +msgstr "Todos los grupos invitados" + +#: by-email/by-email-db.php:124 +msgid "Edit Invited Group" +msgstr "Editar grupo invitado" + +#: by-email/by-email-db.php:125 +msgid "Update Invited Group" +msgstr "Actualizar grupo invitado" + +#: by-email/by-email-db.php:126 +msgid "Add New Invited Group" +msgstr "Añadir nuevo grupo invitado" + +#: by-email/by-email-db.php:127 +msgid "New Invited Group Name" +msgstr "Nombre del nuevo grupo invitado" + +#: by-email/by-email-db.php:634 +msgid "Migrated Invitation" +msgstr "Invitación migrada" + +#: by-email/by-email.php:69 +msgid "Opt Out" +msgstr "Optar por no" + +#: by-email/by-email.php:70 +msgid "Accept Invitation" +msgstr "Aceptar invitación" + +#: by-email/by-email.php:74 +msgid "To opt out of future invitations to %s, make sure that your email is entered in the field below and click \"Opt Out\"." +msgstr "Para no recibir más invitaciones a %s, asegúrate que tu email del campo abajo es correcto y haz clic en \"Optar por no\"." + +#: by-email/by-email.php:76 +msgid "If you are here by mistake and would like to accept your invitation to %s, click \"Accept Invitation\" instead." +msgstr "Si estás aquí por error y quieres aceptar la invitación a %s, haz clic en \"Aceptar Invitación\"." + +#: by-email/by-email.php:89 +msgid "You have successfully opted out. No more invitation emails will be sent to you by this site." +msgstr "Has optado por no recibir más invitaciones. Ya no recebirás más invitaciones vía email de este sitio." + +#: by-email/by-email.php:92 +msgid "Sorry, there was an error in processing your request" +msgstr "Lo sentimos, surgió un error procesando tu petición" + +#: by-email/by-email.php:118 +msgid "Email:" +msgstr "Email:" + +#: by-email/by-email.php:140 +msgid "It looks like you're trying to accept an invitation to join the site, but some information is missing. Please try again by clicking on the link in the invitation email." +msgstr "Parece que estás intentando aceptar una invitación a unirte a este sitio, pero falta alguna información. Por favor, intenta de nuevo haciendo clic en el enlace del email de invitación." + +#: by-email/by-email.php:187 +msgid "Welcome! You've been invited %s to join the site. Please fill out the information below to create your account." +msgstr "¡Bienvenid@! Has sido invitado %s a unirte al sitio. Por favor, proporciona esta información para crear tu cuenta." + +#: by-email/by-email.php:279 +#: by-email/by-email.php:509 +msgid "Invite New Members" +msgstr "Invitar nuevos miembros" + +#: by-email/by-email.php:289 +#: by-email/by-email.php:639 +msgid "Sent Invites" +msgstr "Invitaciones enviadas" + +#: by-email/by-email.php:401 +msgid "Invitation cleared" +msgstr "Invitación borrada" + +#: by-email/by-email.php:403 +msgid "There was a problem clearing the invitation." +msgstr "Ocurrió un problema al borrar la invitación." + +#: by-email/by-email.php:406 +msgid "Invitations cleared." +msgstr "Invitaciones borradas." + +#: by-email/by-email.php:408 +msgid "There was a problem clearing the invitations." +msgstr "Ocurrio un problema al borrar las invitaciones." + +#: by-email/by-email.php:467 +#: widgets/widgets.php:61 +msgid "email address" +msgstr "dirección de email" + +#: by-email/by-email.php:498 +msgid "Some of your invitations were not sent. Please see the errors below and resubmit the failed invitations." +msgstr "Algunas de tus invitaciones no se enviaron. Por favor, corrige los errores indicados abajo y envía de nuevo las invitaciones fallidas." + +#: by-email/by-email.php:504 +msgid "Invite friends to join %s by following these steps:" +msgstr "Invita amigos a unirse a %s siguiendo estos pasos:" + +#: by-email/by-email.php:522 +msgid "Enter email addresses below, one per line." +msgstr "Introduce las direcciones de email, una por línea." + +#: by-email/by-email.php:522 +msgid "You can only invite people whose email addresses end in one of the following domains:" +msgstr "Sólo puedes invitar a personas cuyo email termina en los siguientes dominios:" + +#: by-email/by-email.php:534 +msgid "(optional) Customize the subject line of the invitation email." +msgstr "(opcional) Personaliza el asunto del email de invitación." + +#: by-email/by-email.php:537 +msgid "Subject: Subject line is fixed" +msgstr "Asunto: El asunto está fijo" + +#: by-email/by-email.php:546 +msgid "(optional) Customize the text of the invitation." +msgstr "(opcional) Personaliza el texto de la invitación." + +#: by-email/by-email.php:549 +msgid "Message:" +msgstr "Mensaje:" + +#: by-email/by-email.php:554 +msgid "The message will also contain a custom footer containing links to accept the invitation or opt out of further email invitations from this site." +msgstr "El mensaje también tendrá un pié de página personalizado con enlaces para aceptar la invitación, y para optar si recibir más invitaciones de este sitio." + +#: by-email/by-email.php:561 +msgid "(optional) Select some groups. Invitees will receive invitations to these groups when they join the site." +msgstr "(opcional) Selecciona grupos. Los invitados recibirán invitaciones a estos grupos cuando se unan al sitio." + +#: by-email/by-email.php:600 +msgid "Sorry, there was a problem sending your invitations. Please try again." +msgstr "Lo sentimos, surgió un problema al enviar tus invitaciones. Por favor, intenta de nuevo." + +#: by-email/by-email.php:644 +msgid "You have sent invitations to the following people." +msgstr "Has enviado invitaciones a estas personas." + +#: by-email/by-email.php:647 +msgid "" +"This table displays a list of all your sent invites.\n" +"\t\t\tInvites that have been accepted are highlighted in the listings.\n" +"\t\t\tYou may clear any individual invites, all accepted invites or all of the invite from the list." +msgstr "" +"Esta tabla muestra todas las invitaciones enviadas.\n" +"\t\t\tLas invitaciones aceptadas están resaltadas en el listado.\n" +"\t\t\tPuedes borrar cualquier invitación, todas las invitaciones aceptadas o toda la lista." + +#: by-email/by-email.php:653 +msgid "Invited email address" +msgstr "Email del invitado" + +#: by-email/by-email.php:654 +msgid "Group invitations" +msgstr "Invitaciones de grupo" + +#: by-email/by-email.php:655 +msgid "Sent" +msgstr "Enviadas" + +#: by-email/by-email.php:656 +msgid "Accepted" +msgstr "Aceptadas" + +#: by-email/by-email.php:664 +msgid "Clear all accepted invites from the list" +msgstr "Borra todas las invitaciones aceptadas de la lista" + +#: by-email/by-email.php:664 +msgid "Clear all accepted invitations" +msgstr "Borrar todas las invitaciones aceptadas" + +#: by-email/by-email.php:665 +msgid "Clear all your listed invites" +msgstr "Borrar todas tus invitaciones listadas" + +#: by-email/by-email.php:665 +msgid "Clear all invitations" +msgstr "Borrar todas las invitaciones" + +#: by-email/by-email.php:685 +msgid "Clear this invitation" +msgstr "Borrar esta invitación" + +#: by-email/by-email.php:726 +msgid "You haven't sent any email invitations yet." +msgstr "Nos ha enviado ninguna invitación todavía." + +#: by-email/by-email.php:760 +msgid "An invitation to join the %s community." +msgstr "Una invitación para unirte a la comunidad %s." + +#: by-email/by-email.php:784 +msgid "" +"You have been invited by %%INVITERNAME%% to join the %s community.\n" +"\n" +"Visit %%INVITERNAME%%'s profile at %%INVITERURL%%." +msgstr "" +"Has sido invitado por %%INVITERNAME%% a unirte a la comunidad %s.\n" +"\n" +"Visita el perfil de %%INVITERNAME%% en %%INVITERURL%%." + +#: by-email/by-email.php:806 +msgid "To accept this invitation, please visit %%ACCEPTURL%%" +msgstr "Para aceptar esta invitación, por favor visita %%ACCEPTURL%%" + +#: by-email/by-email.php:810 +msgid "To opt out of future invitations to this site, please visit %%OPTOUTURL%%" +msgstr "Para no recibir más invitaciones de este sitio, por favor visita %%OPTOUTURL%%" + +#: by-email/by-email.php:947 +msgid "You are only allowed to invite up to %s people at a time. Please remove some addresses and try again" +msgstr "Sólo puedes invitar hasta %s personas al mismo tiempo. Por favor, borra algunas direcciones e intenta de nuevo" + +#: by-email/by-email.php:957 +msgid "You didn't include any email addresses!" +msgstr "¡No has incluido ninguna dirección de email!" + +#: by-email/by-email.php:967 +msgid "%s has opted out of email invitations from this site." +msgstr "%s ha optado por no recibir más invitaciones por email de este sitio." + +#: by-email/by-email.php:971 +msgid "%s is already a registered user of the site." +msgstr "%s ya es un usuario registrado del sitio." + +#: by-email/by-email.php:975 +msgid "%s is not a permitted email address." +msgstr "%s no es una dirección de email permitida." + +#: by-email/by-email.php:979 +msgid "%s is not a valid email address. Please make sure that you have typed it correctly." +msgstr "%s no es una direccion de email válida. Por favor, asegúrate que el email es correcto." + +#: by-email/by-email.php:983 +msgid "%s is not a permitted email address. Please make sure that you have typed the domain name correctly." +msgstr "%s no es una dirección email válida. Por favor, asegúrate que el dominio es correcto." + +#: by-email/by-email.php:1044 +msgid "Invitations were sent successfully to the following email addresses: %s" +msgstr "Las invitaciones fueron enviadas satisfactoriamente a las siguientes direcciones: %s" + +#: by-email/by-email.php:1050 +msgid "Please correct your errors and resubmit." +msgstr "Por favor, corrige los errores y envía de nuevo." + +#: by-email/cloudsponge-integration.php:71 +msgid "You can also add email addresses from your Address Book." +msgstr "También puedes añadir emails de tu lista de contactos." + +#. #-#-#-#-# plugin.pot (Invite Anyone 0.8) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/admin-panel.php:5 +#: widgets/widgets.php:38 +#: widgets/widgets.php:95 +msgid "Invite Anyone" +msgstr "Invite Anyone" + +#: admin/admin-panel.php:17 +msgid "Settings" +msgstr "Configuración" + +#: admin/admin-panel.php:45 +msgid "Invite Anyone Settings" +msgstr "Configuración de Invite Anyone" + +#: admin/admin-panel.php:53 +msgid "Save Changes" +msgstr "Guardar cambios" + +#: admin/admin-panel.php:67 +msgid "General Settings" +msgstr "Configuración general" + +#: admin/admin-panel.php:69 +msgid "Replacement patterns for email text fields" +msgstr "Patrones de reemplazo para campos de texto de email" + +#: admin/admin-panel.php:71 +msgid "Text of email invitation subject line" +msgstr "Texto del asunto del email de invitación" + +#: admin/admin-panel.php:73 +msgid "Main text of email invitation message" +msgstr "Texto principal del email de invitación" + +#: admin/admin-panel.php:75 +msgid "Footer text of email invitation message (not editable by users)" +msgstr "Pié de página del email de invitación (no editable por usuarios)" + +#: admin/admin-panel.php:78 +msgid "Allow users to customize invitation" +msgstr "Permitir a los usuarios a personalizar la invitación" + +#: admin/admin-panel.php:81 +msgid "Number of email invitations users are permitted to send at a time" +msgstr "Número de invitaciones de email que usuarios pueden enviar simultáneamente" + +#: admin/admin-panel.php:83 +msgid "Allow users to send group invitations along with email invitations" +msgstr "Permitir a los usuarios a invitar a grupos junto con las invitaciones a unirse al sitio" + +#: admin/admin-panel.php:85 +msgid "Allow email invitations to be accepted even when site registration is disabled" +msgstr "Permitir que las invitaciones puedan ser aceptadas incluso cuando el registro al sitio esté deshabilitado" + +#: admin/admin-panel.php:88 +msgid "CloudSponge" +msgstr "CloudSponge" + +#: admin/admin-panel.php:91 +msgid "Access Settings" +msgstr "Configuración de acceso" + +#: admin/admin-panel.php:93 +msgid "Allow email invitations to be sent by" +msgstr "Permitir las invitaciones de correo a ser enviados por" + +#: admin/admin-panel.php:95 +msgid "Limit group invitations" +msgstr "Limitar las invitaciones de grupo" + +#: admin/admin-panel.php:104 +msgid "Control the default behavior of Invite Anyone." +msgstr "Controlar el comportamiento por defecto de Invite Anyone." + +#: admin/admin-panel.php:112 +msgid "name of your website" +msgstr "nombre de su sitio" + +#: admin/admin-panel.php:113 +msgid "display name of the inviter" +msgstr "mostrar el nombre de la persona que invita" + +#: admin/admin-panel.php:114 +msgid "URL to the profile of the inviter" +msgstr "URL del perfil de la persona que invita" + +#: admin/admin-panel.php:115 +msgid "Link that invited users can click to accept the invitation" +msgstr "Enlace que la persona invitada puede clicar para aceptar la invitación" + +#: admin/admin-panel.php:116 +msgid "Link that invited users can click to opt out of future invitations" +msgstr "Enlace que la persona invitada puede clicar para optar no recibir más invitaciones" + +#: admin/admin-panel.php:162 +msgid "Subject line" +msgstr "Asunto" + +#: admin/admin-panel.php:166 +msgid "Message body" +msgstr "Mensaje" + +#: admin/admin-panel.php:174 +msgid "Control which members are able to send various kinds of invitations." +msgstr "Controla qué miembros pueden enviar varios tipos de invitaciones." + +#: admin/admin-panel.php:183 +msgid "All users" +msgstr "Todos los usuarios" + +#: admin/admin-panel.php:185 +msgid "A limited set of users" +msgstr "Un grupo limitado de usuarios" + +#: admin/admin-panel.php:189 +msgid "Only users who have been members of the site for a minimum number of days:" +msgstr "Sólo usuarios que han sido miembros del sitio por un mínimo de días:" + +#: admin/admin-panel.php:194 +msgid "Only users who have at least the following role on this blog:" +msgstr "Sólo usuarios que tienen al menos uno de los siguientes roles:" + +#: admin/admin-panel.php:196 +msgid "Subscriber" +msgstr "Suscriptor" + +#: admin/admin-panel.php:197 +msgid "Contributor" +msgstr "Colaborador" + +#: admin/admin-panel.php:198 +msgid "Author" +msgstr "Autor" + +#: admin/admin-panel.php:199 +msgid "Editor" +msgstr "Editor" + +#: admin/admin-panel.php:200 +msgid "Administrator" +msgstr "Administrador" + +#: admin/admin-panel.php:205 +msgid "Provide a comma-separated list of users (identified by their numerical user ids) who cannot send invitations by email:" +msgstr "Proporciona una lista de usuarios, separados por coma (identificados por su ID numérico), que no pueden enviar invitaciones por email:" + +#: admin/admin-panel.php:220 +msgid "Invite Anyone extends BuddyPress's default group invitation settings. Instead of allowing you to invite only friends to a group, this plugin allows you to invite any member of the site. Use these settings to limit possible invitees for different group roles." +msgstr "Invite Anyone extiende la configuración por defecto de invitación a grupos de BuddyPress. En vez de permitir solo invitar amigos a un grupo, este plugin permite invitar a cualquier miembro al sitio. Usa esta configuración para limitar a los posibles invitados para diferentes roles de grupo." + +#: admin/admin-panel.php:222 +msgid "Site admins can send group invitations to: " +msgstr "Administradores del sition pueden enviar invitaciones de grupo a: " + +#: admin/admin-panel.php:224 +#: admin/admin-panel.php:232 +#: admin/admin-panel.php:240 +#: admin/admin-panel.php:248 +msgid "Anyone" +msgstr "Cualquiera" + +#: admin/admin-panel.php:225 +#: admin/admin-panel.php:233 +#: admin/admin-panel.php:241 +#: admin/admin-panel.php:249 +msgid "Friends" +msgstr "Amigos" + +#: admin/admin-panel.php:226 +#: admin/admin-panel.php:234 +#: admin/admin-panel.php:242 +#: admin/admin-panel.php:250 +msgid "No one" +msgstr "Nadie" + +#: admin/admin-panel.php:230 +msgid "Group admins can send group invitations to: " +msgstr "Administradores de grupo pueden enviar invitaciones de grupo a: " + +#: admin/admin-panel.php:238 +msgid "Group mods can send group invitations to: " +msgstr "Moderadores de grupo pueden enviar invitaciones a: " + +#: admin/admin-panel.php:246 +msgid "Group members can send group invitations to: " +msgstr "Miembros de grupo pueden enviar invitaciones de grupo a: " + +#: admin/admin-panel.php:267 +msgid "CloudSponge is a cool service that gives your users easy and secure access to their address books (Gmail, Yahoo, and a number of other online and desktop email clients), so that they can more easily invite friends to your site. In order to enable CloudSponge support in Invite Anyone and BuddyPress, you'll need to register for a CloudSponge account." +msgstr "CloudSponge es un servicio que da a los usuarios un acceso sencillo y seguro a sus listas de contacto (Gmail, Yahoo, y otros gestores de email online y de escritorio), de tal manera que pueden invitar a sus amigos a tu sitio. Para habilitar el soporte a CloudSponge en Invite Anyone y BuddyPress, deberás registrarte en CloudSponge." + +#: admin/admin-panel.php:269 +msgid "Enable CloudSponge?" +msgstr "¿Habilitar CloudSponge?" + +#: admin/admin-panel.php:275 +msgid "CloudSponge Domain Key" +msgstr "CloudSponge Domain Key" + +#: admin/admin-panel.php:275 +msgid "CloudSponge integration will not work without a valid domain key." +msgstr "La integración con CloudSponge no funcionará sin una domain key válida." + +#: admin/admin-panel.php:277 +msgid "When you use CloudSponge with Invite Anyone, part of your CloudSponge monthly payment goes to the author of Invite Anyone. This is a great way to support future development of the plugin. Thanks for your support!" +msgstr "Cuando usas CloudSponge con Invite Anyone, parte de tu pago mensual a CloudSponge va directamente al autor de Invite Anyone. Esta es una excelente manera de apoyar el desarrollo futuro del plugin. ¡Gracias por tu apoyo!" + +#: widgets/widgets.php:44 +#: widgets/widgets.php:101 +msgid "Invite friends to join the site by entering their email addresses below." +msgstr "Invita a amigos a unirse al sitio introduciendo sus direcciones de email a continuación." + +#: widgets/widgets.php:77 +msgid "Continue" +msgstr "Continuar" + +#: widgets/widgets.php:104 +msgid "Title:" +msgstr "Título:" + +#: widgets/widgets.php:106 +msgid "Text to display in widget:" +msgstr "Texto a mostrar en el widget:" + +#: widgets/widgets.php:110 +msgid "Number of email fields to display in widget:" +msgstr "Número de campos del email a mostrar en el widget:" + +#. Plugin URI of the plugin/theme +msgid "http://teleogistic.net/code/buddypress/invite-anyone/" +msgstr "http://teleogistic.net/code/buddypress/invite-anyone/" + +#. Description of the plugin/theme +msgid "Allows group admins to invite any BuddyPress member to a group, whether or not they are friends" +msgstr "Permitir a los administradores de grupo a invitar a miembros del sitio a un grupo, sean o no amigos" + +#. Author of the plugin/theme +msgid "Boone Gorges" +msgstr "Boone Gorges" + +#. Author URI of the plugin/theme +msgid "http://boonebgorges.com" +msgstr "http://boonebgorges.com" + +#~ msgid "Subject:" +#~ msgstr "Título:" + +#~ msgid "Your invitations were sent successfully!" +#~ msgstr "Sus invitaciones fueron enviadas satisfactoriamente!" + +#~ msgid "Please remove the email address and try again." +#~ msgstr "Por favor borre la dirección de correo e intente nuevamente." + +#~ msgid "http://teleogistic.net" +#~ msgstr "http://teleogistic.net" diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-fr_FR.mo b/wp-content/plugins/invite-anyone/languages/invite-anyone-fr_FR.mo new file mode 100644 index 0000000..7e7d6d7 Binary files /dev/null and b/wp-content/plugins/invite-anyone/languages/invite-anyone-fr_FR.mo differ diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-fr_FR.po b/wp-content/plugins/invite-anyone/languages/invite-anyone-fr_FR.po new file mode 100644 index 0000000..42270c6 --- /dev/null +++ b/wp-content/plugins/invite-anyone/languages/invite-anyone-fr_FR.po @@ -0,0 +1,827 @@ +# Translation of the WordPress plugin Invite Anyone 0.6 bleeding by Boone Gorges. +# Copyright (C) 2010 Boone Gorges +# This file is distributed under the same license as the Invite Anyone package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Invite Anyone 0.6 bleeding\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/invite-anyone\n" +"POT-Creation-Date: 2011-05-18 20:56:12+00:00\n" +"PO-Revision-Date: 2012-01-16 23:00+0100\n" +"Last-Translator: Nicolas Mollet \n" +"Language-Team: FR \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: French\n" + +#: by-email/cloudsponge-integration.php:71 +msgid "You can also add email addresses from your Address Book." +msgstr "Vous pouvez aussi ajouter des adresses email à partir de votre carnet d'adresses." + +#: by-email/by-email.php:69 +msgid "Opt Out" +msgstr "Bloquer les invitations" + +#: by-email/by-email.php:70 +msgid "Accept Invitation" +msgstr "Accepter l'invitation" + +#: by-email/by-email.php:74 +msgid "To opt out of future invitations to %s, make sure that your email is entered in the field below and click \"Opt Out\"." +msgstr "Pour ne plus recevoir d'invitation de %s, assurez-vous que votre email soit dans le champs ci-dessous et cliquez sur \"Bloquer les invitations\"" + +#: by-email/by-email.php:76 +msgid "If you are here by mistake and would like to accept your invitation to %s, click \"Accept Invitation\" instead." +msgstr "Si vous êtes arrivé sur cette page par erreur, mais que vous souhaitez tout de même accepter cette invitation, veuillez cliquer sur \"Accepter l'invitation\" SVP." + +#: by-email/by-email.php:89 +msgid "You have successfully opted out. No more invitation emails will be sent to you by this site." +msgstr "Vous ne recevrez plus d'invitations par email provenant de ce site." + +#: by-email/by-email.php:92 +msgid "Sorry, there was an error in processing your request" +msgstr "Une erreur s'est produite lors du traitement de votre requette. Veuillez recommencer SVP." + +#: by-email/by-email.php:118 +msgid "Email:" +msgstr "Email" + +#: by-email/by-email.php:140 +msgid "It looks like you're trying to accept an invitation to join the site, but some information is missing. Please try again by clicking on the link in the invitation email." +msgstr "Une erreur semble s'être produite. Veuillez cliquer sur le lien que vous avez reçu par email SVP." + +#: by-email/by-email.php:187 +msgid "Welcome! You've been invited %s to join the site. Please fill out the information below to create your account." +msgstr "Bonjour ! Vous avez été invité par %s à rejoindre ce site, le premier réseau social dédié au vin. Veuillez entrer les informations demandées afin de créer votre nouveau compte." + +#: by-email/by-email.php:270 +#: by-email/by-email.php:582 +#: group-invites/group-invites.php:82 +#: group-invites/templates/invite-anyone.php:87 +#: group-invites/templates/invite-anyone.php:176 +msgid "Send Invites" +msgstr "Inviter" + +#: by-email/by-email.php:282 +#: by-email/by-email.php:508 +msgid "Invite New Members" +msgstr "Inviter de nouveaux membres" + +#: by-email/by-email.php:292 +#: by-email/by-email.php:643 +msgid "Sent Invites" +msgstr "Invitation Envoyées" + +#: by-email/by-email.php:404 +msgid "Invitation cleared" +msgstr "Invitations effacées" + +#: by-email/by-email.php:406 +msgid "There was a problem clearing the invitation." +msgstr "Une erreur s'est produite pendant l'effacement de l'invitation." + +#: by-email/by-email.php:409 +msgid "Invitations cleared." +msgstr "Invitations effacées." + +#: by-email/by-email.php:411 +msgid "There was a problem clearing the invitations." +msgstr "Une erreur s'est produite pendant l'effacement des invitations." + +#: by-email/by-email.php:497 +msgid "Some of your invitations were not sent. Please see the errors below and resubmit the failed invitations." +msgstr "Certaines invitations n'ont pas été envoyées. Vérifiez les erreurs ci-dessous, et validez l'envoi à nouveau." + +#: by-email/by-email.php:503 +msgid "Invite friends to join %s by following these steps:" +msgstr "Vous pouvez invitez des membres à rejoindre %s en suivant ces étapes :" + +#: by-email/by-email.php:521 +msgid "Enter email addresses below, one per line." +msgstr "Veuillez entrer les adresses email, une par ligne" + +#: by-email/by-email.php:521 +msgid "You can only invite people whose email addresses end in one of the following domains:" +msgstr "Vous pouvez seulement inviter des personnes dont l'adresse email se termine par les domaines suivant :" + +#: by-email/by-email.php:533 +msgid "(optional) Customize the subject line of the invitation email." +msgstr "(facultatif) Personnalisez le sujet de l'email d'invitation." + +#: by-email/by-email.php:536 +msgid "Subject: Subject line is fixed" +msgstr "Sujet : Le sujet est figé" + +#: by-email/by-email.php:545 +msgid "(optional) Customize the text of the invitation." +msgstr "(facultatif) Personnalisez le message à envoyer" + +#: by-email/by-email.php:548 +msgid "Message:" +msgstr "Message :" + +#: by-email/by-email.php:553 +msgid "The message will also contain a custom footer containing links to accept the invitation or opt out of further email invitations from this site." +msgstr "Le message contient également le lien pour accepter votre invitation, ainsi qu'un lien permettant de bloquer d'éventuelles futures invitations provenant de ce site." + +#: by-email/by-email.php:560 +msgid "(optional) Select some groups. Invitees will receive invitations to these groups when they join the site." +msgstr "(facultatif) En selectionnant ces groupes, ils seront automatiquement suggérés aux invités ayant accepté votre invitation." + +#: by-email/by-email.php:599 +msgid "Sorry, there was a problem sending your invitations. Please try again." +msgstr "Une erreur s'est produite pendant l'envoi des invitations. Veuillez recommencer SVP." + +#: by-email/by-email.php:650 +msgid "You have sent invitations to the following people." +msgstr "Vous avez invité les personnes suivantes :" + +#: by-email/by-email.php:663 +msgid "" +"This table displays a list of all your sent invites.\n" +"\t\t\tInvites that have been accepted are highlighted in the listings.\n" +"\t\t\tYou may clear any individual invites, all accepted invites or all of the invite from the list." +msgstr "" +"Ce tableau contient toutes les invitations envoyées\n" +"\t\t\tLes invitations acceptées sont surlignées dans la liste..\n" +"\t\t\tVous pouvez effacer individuellement une invitation, toutes les invitations acceptées ou toutes les invitations de la liste." + +#: by-email/by-email.php:669 +msgid "Invited email address" +msgstr "Adresses email des invités" + +#: by-email/by-email.php:670 +msgid "Group invitations" +msgstr "Suggestions de groupes" + +#: by-email/by-email.php:671 +msgid "Sent" +msgstr "Envoyées" + +#: by-email/by-email.php:672 +msgid "Accepted" +msgstr "Acceptées" + +#: by-email/by-email.php:680 +msgid "Clear all accepted invites from the list" +msgstr "Effacer toutes les invitations acceptées" + +#: by-email/by-email.php:680 +msgid "Clear all accepted invitations" +msgstr "Effacer toutes les invitations acceptées" + +#: by-email/by-email.php:681 +msgid "Clear all your listed invites" +msgstr "Effacer toutes les invitations acceptées" + +#: by-email/by-email.php:681 +msgid "Clear all invitations" +msgstr "Effacer toutes les invitations" + +#: by-email/by-email.php:700 +msgid "Clear this invitation" +msgstr "Effacer cette invitation" + +#: by-email/by-email.php:754 +msgid "You haven't sent any email invitations yet." +msgstr "Vous n'avez pas envoyé d'invitation." + +#: by-email/by-email.php:788 +msgid "An invitation to join the %s community." +msgstr "Invitation à rejoindre la communauté %s." + +#: by-email/by-email.php:812 +msgid "" +"You have been invited by %%INVITERNAME%% to join the %s community.\n" +"\n" +"Visit %%INVITERNAME%%'s profile at %%INVITERURL%%." +msgstr "" +"Vous avez été invité par %%INVITERNAME%% à rejoindre la communauté %s.\n" +"\n" +"Visitez le profil de %%INVITERNAME%% à %%INVITERURL%%." + +#: by-email/by-email.php:834 +msgid "To accept this invitation, please visit %%ACCEPTURL%%" +msgstr "Pour accepter l'invitation, veuillez cliquer sur ce lien : %%ACCEPTURL%%" + +#: by-email/by-email.php:838 +msgid "To opt out of future invitations to this site, please visit %%OPTOUTURL%%" +msgstr "Si vous ne souhaitez plus recevoir d'invitations provenant de ce site, veuillez cliquer ici : %%OPTOUTURL%%" + +#: by-email/by-email.php:993 +msgid "You are only allowed to invite up to %s people at a time. Please remove some addresses and try again" +msgstr "Vous êtes uniquement autorisé à inviter jusqu'à %s personnes à la fois. Veuillez supprimer quelques adresses et essayez à nouveau" + +#: by-email/by-email.php:1003 +msgid "You didn't include any email addresses!" +msgstr "Vous n'avez entré aucune adresse email !" + +#: by-email/by-email.php:1018 +msgid "%s has opted out of email invitations from this site." +msgstr "%s a choisi de ne pas recevoir les emails de ce site?" + +#: by-email/by-email.php:1022 +msgid "%s is already a registered user of the site." +msgstr "%s est déjà membre de ce site." + +#: by-email/by-email.php:1026 +msgid "%s is not a permitted email address." +msgstr "%s est une adresse interdite." + +#: by-email/by-email.php:1030 +msgid "%s is not a valid email address. Please make sure that you have typed it correctly." +msgstr "%s n'est pas une adresse valide. Veuillez vérifier SVP." + +#: by-email/by-email.php:1034 +msgid "%s is not a permitted email address. Please make sure that you have typed the domain name correctly." +msgstr "%s n'est pas autorisée. Vérifiez que vous avez saisi le domaine correctement." + +#: by-email/by-email.php:1098 +msgid "Invitations were sent successfully to the following email addresses: %s" +msgstr "Les invitations ont été envoyées avec succès aux adresses email suivantes : %s" + +#: by-email/by-email.php:1104 +msgid "Please correct your errors and resubmit." +msgstr "Veuillez corriger les erreurs et validez à nouveau." + +#: by-email/by-email-db.php:92 +msgctxt "post type general name" +msgid "BuddyPress Invitations" +msgstr "Invitations BuddyPress" + +#: by-email/by-email-db.php:93 +msgctxt "post type singular name" +msgid "Invitation" +msgstr "Invitation" + +#: by-email/by-email-db.php:94 +msgctxt "add new" +msgid "Add New" +msgstr "Ajouter" + +#: by-email/by-email-db.php:95 +msgid "Add New Invitation" +msgstr "Nouvelle invitation" + +#: by-email/by-email-db.php:96 +msgid "Edit Invitation" +msgstr "Modifier l'invitation" + +#: by-email/by-email-db.php:97 +msgid "New Invitation" +msgstr "Ajouter l'invitation" + +#: by-email/by-email-db.php:98 +#: admin/admin-panel.php:441 +msgid "View Invitation" +msgstr "Voir l'invitation" + +#: by-email/by-email-db.php:99 +msgid "Search Invitation" +msgstr "Rechercher invitation" + +#: by-email/by-email-db.php:100 +msgid "No Invitations found" +msgstr "Aucune invitation trouvée" + +#: by-email/by-email-db.php:101 +msgid "No Invitations found in Trash" +msgstr "Aucune invitation dans la poubelle" + +#: by-email/by-email-db.php:107 +msgid "BuddyPress Invitations" +msgstr "Invitations BuddyPress" + +#: by-email/by-email-db.php:119 +#: by-email/by-email-db.php:132 +msgid "Invitees" +msgstr "Invités" + +#: by-email/by-email-db.php:120 +#: by-email/by-email-db.php:127 +msgid "Invitee" +msgstr "Invité" + +#: by-email/by-email-db.php:121 +msgid "Search Invitees" +msgstr "Rechercher invités" + +#: by-email/by-email-db.php:122 +msgid "All Invitees" +msgstr "Tous les invités" + +#: by-email/by-email-db.php:123 +msgid "Edit Invitee" +msgstr "Modifier l'invité" + +#: by-email/by-email-db.php:124 +msgid "Update Invitee" +msgstr "Mettre à jour l'invité" + +#: by-email/by-email-db.php:125 +msgid "Add New Invitee" +msgstr "Ajouter invité" + +#: by-email/by-email-db.php:126 +msgid "New Invitee Name" +msgstr "Ajouter invité" + +#: by-email/by-email-db.php:140 +#: by-email/by-email-db.php:153 +msgid "Invited Groups" +msgstr "Groupés invité" + +#: by-email/by-email-db.php:141 +#: by-email/by-email-db.php:148 +msgid "Invited Group" +msgstr "Groupe invité" + +#: by-email/by-email-db.php:142 +msgid "Search Invited Groups" +msgstr "Rechercher les groupes invités" + +#: by-email/by-email-db.php:143 +msgid "All Invited Groups" +msgstr "Tous les groupes invités" + +#: by-email/by-email-db.php:144 +msgid "Edit Invited Group" +msgstr "Modiifier le groupe invité" + +#: by-email/by-email-db.php:145 +msgid "Update Invited Group" +msgstr "Mettre à jour le groupe invité" + +#: by-email/by-email-db.php:146 +msgid "Add New Invited Group" +msgstr "Ajouter un groupe invité" + +#: by-email/by-email-db.php:147 +msgid "New Invited Group Name" +msgstr "Nouveau groupe invité" + +#: by-email/by-email-db.php:370 +#: admin/admin-stats.php:163 +msgid "Yes" +msgstr "Oui" + +#: by-email/by-email-db.php:370 +msgid "No" +msgstr "Non" + +#: by-email/by-email-db.php:910 +msgid "All done!" +msgstr "Terminé !" + +#: by-email/by-email-db.php:912 +msgid "Finish" +msgstr "Terminer" + +#: by-email/by-email-db.php:950 +msgid "Migrated Invitation" +msgstr "Invitations migrées" + +#: by-email/by-email-db.php:970 +msgid "Importing: %1$s invited %2$s
              " +msgstr "Importation : %1$s invités %2$s
              " + +#: by-email/by-email-db.php:981 +msgid "If your browser doesn’t start loading the next page automatically, click this link:" +msgstr "Si votre navigateur ne charge pas la page suivante automatiquement, cliquez ce lien:" + +#: by-email/by-email-db.php:981 +msgid "Next Invitations" +msgstr "Invitations suivantes" + +#: by-email/by-email-db.php:1009 +msgid "Invite Anyone Upgrade" +msgstr "Mise à jour Invite Anyone" + +#: by-email/by-email-db.php:1012 +msgid "Invite Anyone has just been updated, and needs to move some old invitation data in order to complete the upgrade. Click GO to start the process." +msgstr "Invite Anyone a été mis à jour, et a besoin de déplacer les anciennes données d'invitations, pour pouvoir terminer la mise à jour. Cliquez GO pour commencer le processus." + +#. #-#-#-#-# plugin.pot (Invite Anyone 0.9) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: widgets/widgets.php:38 +#: widgets/widgets.php:86 +#: admin/admin-panel.php:5 +#: admin/admin-panel.php:60 +msgid "Invite Anyone" +msgstr "Invite Anyone" + +#: widgets/widgets.php:41 +msgid "Enter one email address per line to invite friends to join this site." +msgstr "Saisir une adresse email par ligne, pour inviter vos amis à rejoindre ce site." + +#: widgets/widgets.php:68 +msgid "Continue" +msgstr "Continuer" + +#: widgets/widgets.php:92 +msgid "Invite friends to join the site by entering their email addresses below." +msgstr "Invitez des personnes à rejoindre ce site en entrant leurs adresses email ci-dessous :" + +#: widgets/widgets.php:95 +msgid "Title:" +msgstr "Titre :" + +#: widgets/widgets.php:97 +msgid "Text to display in widget:" +msgstr "Texte à afficher dans le widget :" + +#: widgets/widgets.php:101 +msgid "Number of email fields to display in widget:" +msgstr "Nombre de champs email à afficher dans le widget :" + +#: admin/admin-stats.php:41 +msgid "24 Hours" +msgstr "24 heures" + +#: admin/admin-stats.php:44 +msgid "3 Days" +msgstr "3 jours" + +#: admin/admin-stats.php:47 +msgid "1 Week" +msgstr "1 semaine" + +#: admin/admin-stats.php:50 +msgid "4 Weeks" +msgstr "4 semaines" + +#: admin/admin-stats.php:53 +msgid "3 Months" +msgstr "3 mois" + +#: admin/admin-stats.php:56 +msgid "All Time" +msgstr "Tout" + +#: admin/admin-stats.php:187 +#: admin/admin-stats.php:195 +#: admin/admin-stats.php:203 +msgid "n/a" +msgstr "n/a" + +#: admin/admin-stats.php:304 +msgid "In the last..." +msgstr "Dans les derniers..." + +#: admin/admin-stats.php:308 +msgid "Total Sent" +msgstr "Total envoyées" + +#: admin/admin-stats.php:312 +msgid "Total Accepted" +msgstr "Total acceptées" + +#: admin/admin-stats.php:316 +msgid "Acceptance Rate" +msgstr "Taux d'acceptation" + +#: admin/admin-stats.php:320 +msgid "Top Inviter (by #)" +msgstr "Top inviteur (par #)" + +#: admin/admin-stats.php:324 +msgid "Top Inviter (by % accepted)" +msgstr "Top inviteur (par % acceptées)" + +#: admin/admin-stats.php:329 +msgid "Total Sent (CloudSponge)" +msgstr "Total envoyées (CloudSponge)" + +#: admin/admin-stats.php:333 +msgid "Total Accepted (CloudSponge)" +msgstr "Total acceptées (CloudSponge)" + +#: admin/admin-stats.php:337 +msgid "Acceptance Rate (CloudSponge)" +msgstr "Taux d'acceptation (CloudSponge)" + +#: admin/admin-stats.php:341 +msgid "CloudSponge Usage" +msgstr "Utilisation Cloudsponge" + +#: admin/admin-stats.php:345 +msgid "Top Inviter (by #) (CloudSponge)" +msgstr "Top inviteur (by #) (CloudSponge)" + +#: admin/admin-stats.php:349 +msgid "Top Inviter (by % accepted) (CloudSponge)" +msgstr "Top inviteur (par % acceptées) (CloudSponge)" + +#: admin/admin-stats.php:375 +#: admin/admin-stats.php:400 +msgid "(%d sent)" +msgstr "(%d envoyées)" + +#: admin/admin-stats.php:379 +#: admin/admin-stats.php:404 +msgid "(%s accepted)" +msgstr "(%s accepté)" + +#: admin/admin-panel.php:17 +msgid "Settings" +msgstr "Paramètres" + +#: admin/admin-panel.php:64 +#: admin/admin-panel.php:139 +msgid "General Settings" +msgstr "Paramètres" + +#: admin/admin-panel.php:68 +msgid "Access Control" +msgstr "Contrôle d'accès" + +#: admin/admin-panel.php:72 +#: admin/admin-panel.php:120 +msgid "CloudSponge" +msgstr "CloudSponge" + +#: admin/admin-panel.php:76 +#: admin/admin-panel.php:126 +msgid "Manage Invitations" +msgstr "Gérer les invitations" + +#: admin/admin-panel.php:80 +#: admin/admin-panel.php:132 +msgid "Stats" +msgstr "Statistiques" + +#: admin/admin-panel.php:92 +msgid "Save Changes" +msgstr "Sauvegarder les modifications" + +#: admin/admin-panel.php:110 +msgid "Access Settings" +msgstr "Paramètres" + +#: admin/admin-panel.php:112 +msgid "Allow email invitations to be sent by" +msgstr "Autoriser x à envoyer des invitation par email" + +#: admin/admin-panel.php:114 +msgid "Limit group invitations" +msgstr "Limite d'invitation par groupe" + +#: admin/admin-panel.php:141 +msgid "Replacement patterns for email text fields" +msgstr "Variables existantes pour personnaliser les emails" + +#: admin/admin-panel.php:143 +msgid "Text of email invitation subject line" +msgstr "Texte du sujet pour l'invitation par email" + +#: admin/admin-panel.php:145 +msgid "Main text of email invitation message" +msgstr "Texte du message pour l'invitation par email" + +#: admin/admin-panel.php:147 +msgid "Footer text of email invitation message (not editable by users)" +msgstr "Texte du pied de message pour l'invitation par email (non éditable par l'utilisateur)" + +#: admin/admin-panel.php:149 +msgid "Allow users to customize invitation" +msgstr "Autoriser les utilisateurs à customiser leur invitation" + +#: admin/admin-panel.php:151 +msgid "Number of email invitations users are permitted to send at a time" +msgstr "Nombre d'invitations possibles par envoi" + +#: admin/admin-panel.php:153 +msgid "Allow users to send group invitations along with email invitations" +msgstr "Autoriser l'utilisateur à envoyer des invitations de groupes avec l'invitation par email" + +#: admin/admin-panel.php:155 +msgid "Allow email invitations to be accepted even when site registration is disabled" +msgstr "Autoriser à envoyer des invitation par email, même quand la création de compte est désactivée" + +#: admin/admin-panel.php:167 +msgid "Control the default behavior of Invite Anyone." +msgstr "Contrôler le comportement par défaut de Invite Anyone" + +#: admin/admin-panel.php:175 +msgid "name of your website" +msgstr "Nom de votre site web" + +#: admin/admin-panel.php:176 +msgid "display name of the inviter" +msgstr "Afficher le nom de l'utilisateur qui invite" + +#: admin/admin-panel.php:177 +msgid "URL to the profile of the inviter" +msgstr "URL du profil de l'utilisateur qui invite" + +#: admin/admin-panel.php:178 +msgid "Link that invited users can click to accept the invitation" +msgstr "Lien d'invitation à cliquer pour l'accepter" + +#: admin/admin-panel.php:179 +msgid "Link that invited users can click to opt out of future invitations" +msgstr "Lien qui permet aux utilisateurs invités de refuser d'éventuelles futures invitations par email." + +#: admin/admin-panel.php:225 +msgid "Subject line" +msgstr "Sujet" + +#: admin/admin-panel.php:229 +msgid "Message body" +msgstr "Message" + +#: admin/admin-panel.php:237 +msgid "Control which members are able to send various kinds of invitations." +msgstr "Controler quels membres sont autorisés à envoyer plusieurs sortes d'invitations" + +#: admin/admin-panel.php:246 +msgid "All users" +msgstr "Tous les utilisateurs" + +#: admin/admin-panel.php:248 +msgid "A limited set of users" +msgstr "Un ensemble limité d'utilisateurs" + +#: admin/admin-panel.php:252 +msgid "Only users who have been members of the site for a minimum number of days:" +msgstr "Seuls les membres qui sont membres depuis x jours minimum" + +#: admin/admin-panel.php:257 +msgid "Only users who have at least the following role on this blog:" +msgstr "Seuls les membres qui ont au minimum ce rôle" + +#: admin/admin-panel.php:259 +msgid "Subscriber" +msgstr "Abonné" + +#: admin/admin-panel.php:260 +msgid "Contributor" +msgstr "Contributeur" + +#: admin/admin-panel.php:261 +msgid "Author" +msgstr "Auteur" + +#: admin/admin-panel.php:262 +msgid "Editor" +msgstr "Editeur" + +#: admin/admin-panel.php:263 +msgid "Administrator" +msgstr "Administrateur" + +#: admin/admin-panel.php:268 +msgid "Provide a comma-separated list of users (identified by their numerical user ids) who cannot send invitations by email:" +msgstr "Utilisateurs qui ne pourront pas envoyer d'invitation (id numérique à séparer avec des virgules)" + +#: admin/admin-panel.php:283 +msgid "Invite Anyone extends BuddyPress's default group invitation settings. Instead of allowing you to invite only friends to a group, this plugin allows you to invite any member of the site. Use these settings to limit possible invitees for different group roles." +msgstr "Invite Anyone améliore les paramètres par défaut d'invitations aux groupes de BuddyPress. Au lieu d'autoriser à inviter uniquements les amis à un groupe, ce plugin permet d'inviter n'importe quel membre du site. Paramètrez-le pour limiter les invités à certaines rôles." + +#: admin/admin-panel.php:285 +msgid "Site admins can send group invitations to: " +msgstr "Administrateurs peuvent envoyer à" + +#: admin/admin-panel.php:287 +#: admin/admin-panel.php:295 +#: admin/admin-panel.php:303 +#: admin/admin-panel.php:311 +msgid "Anyone" +msgstr "Tout le monde" + +#: admin/admin-panel.php:288 +#: admin/admin-panel.php:296 +#: admin/admin-panel.php:304 +#: admin/admin-panel.php:312 +msgid "Friends" +msgstr "Amis" + +#: admin/admin-panel.php:289 +#: admin/admin-panel.php:297 +#: admin/admin-panel.php:305 +#: admin/admin-panel.php:313 +msgid "No one" +msgstr "Personne" + +#: admin/admin-panel.php:293 +msgid "Group admins can send group invitations to: " +msgstr "Administrateurs de groupe peuvent envoyer à" + +#: admin/admin-panel.php:301 +msgid "Group mods can send group invitations to: " +msgstr "Modérateurs de groupe peuvent envoyer à" + +#: admin/admin-panel.php:309 +msgid "Group members can send group invitations to: " +msgstr "Membres de groupe peuvent envoyer à" + +#: admin/admin-panel.php:330 +msgid "CloudSponge is a cool service that gives your users easy and secure access to their address books (Gmail, Yahoo, and a number of other online and desktop email clients), so that they can more easily invite friends to your site. In order to enable CloudSponge support in Invite Anyone and BuddyPress, you'll need to register for a CloudSponge account." +msgstr "" + +#: admin/admin-panel.php:332 +msgid "Enable CloudSponge?" +msgstr "Activer CloudSponge" + +#: admin/admin-panel.php:336 +msgid "CloudSponge Domain Key" +msgstr "Clé de domaine CloudSponge" + +#: admin/admin-panel.php:336 +msgid "CloudSponge integration will not work without a valid domain key." +msgstr "L'intégration CloudSponge ne fonctionnera pas sans une clé de domaine valide." + +#: admin/admin-panel.php:338 +msgid "When you use CloudSponge with Invite Anyone, part of your CloudSponge monthly payment goes to the author of Invite Anyone. This is a great way to support future development of the plugin. Thanks for your support!" +msgstr "Quand vous utilisez Cloudsponge avec Invite Anyone, une partie de vos paiements CloudSponge va à l'auteur de Invite Anyone. C'est un très bon moyen de supporter les futurs développements du plugin.Merci pour votre soutien." + +#: admin/admin-panel.php:481 +msgid "(no data)" +msgstr "(aucune donnée)" + +#: lib/bbg-cpt-pag.php:200 +msgid "Viewing %1$d - %2$d of a total of %3$d" +msgstr "Voir %1$d - %2$d sur un total de %3$d" + +#: lib/bbg-cpt-pag.php:221 +msgid "«" +msgstr "" + +#: lib/bbg-cpt-pag.php:222 +msgid "»" +msgstr "" + +#: group-invites/group-invites.php:112 +#: group-invites/group-invites.php:155 +#: group-invites/group-invites.php:184 +msgid "Group invites sent." +msgstr "Invitations envoyées" + +#: group-invites/group-invites.php:157 +msgid "Group created successfully." +msgstr "Groupe créé avec succès." + +#: group-invites/group-invites.php:306 +#: group-invites/templates/invite-anyone.php:70 +#: group-invites/templates/invite-anyone.php:157 +msgid "Remove Invite" +msgstr "Supprimer l'invitation pour ce contact" + +#: group-invites/templates/invite-anyone.php:27 +#: group-invites/templates/invite-anyone.php:115 +msgid "Search for members to invite:" +msgstr "Recherchez les membres à inviter :" + +#: group-invites/templates/invite-anyone.php:35 +#: group-invites/templates/invite-anyone.php:123 +msgid "Select members from the directory:" +msgstr "Ou sélectionnez les ci-dessous :" + +#: group-invites/templates/invite-anyone.php:50 +msgid "Select people to invite." +msgstr "Veuillez sélectionnez les membres à inviter." + +#: group-invites/templates/invite-anyone.php:107 +msgid "Want to invite someone to the group who is not yet a member of the site?" +msgstr "Vous souhaitez inviter des personnes qui ne sont pas encore membres ?" + +#: group-invites/templates/invite-anyone.php:107 +msgid "Send invitations by email." +msgstr "Envoyez-les par email !" + +#: group-invites/templates/invite-anyone.php:137 +msgid "Select people to invite from your friends list." +msgstr "Veuillez sélectionner les personnes à inviter parmis votre liste de contacts." + +#. Plugin URI of the plugin/theme +msgid "http://teleogistic.net/code/buddypress/invite-anyone/" +msgstr "" + +#. Description of the plugin/theme +msgid "Allows group admins to invite any BuddyPress member to a group, whether or not they are friends" +msgstr "Autoriser les administrateurs de groupe à inviter n'importe quel membre, même s'il n'est pas dans sa liste de contacts." + +#. Author of the plugin/theme +msgid "Boone Gorges" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://boonebgorges.com" +msgstr "" + +#~ msgid "Invite Anyone Settings" +#~ msgstr "Paramètres de Invite Anyone" + +#~ msgid "email address" +#~ msgstr "adresse email" + +#~ msgid "Subject:" +#~ msgstr "Sujet" + +#~ msgid "Your invitations were sent successfully!" +#~ msgstr "Vos invitations ont été envoyées !" + +#~ msgid "Please remove the email address and try again." +#~ msgstr "Veuillez effacer cette adresse email et recommencer SVP." diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-it_IT.mo b/wp-content/plugins/invite-anyone/languages/invite-anyone-it_IT.mo new file mode 100644 index 0000000..90c8cd9 Binary files /dev/null and b/wp-content/plugins/invite-anyone/languages/invite-anyone-it_IT.mo differ diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-it_IT.po b/wp-content/plugins/invite-anyone/languages/invite-anyone-it_IT.po new file mode 100644 index 0000000..7e6e52f --- /dev/null +++ b/wp-content/plugins/invite-anyone/languages/invite-anyone-it_IT.po @@ -0,0 +1,472 @@ +# Translation of the WordPress plugin Invite Anyone 0.6 bleeding by Boone Gorges. +# Copyright (C) 2010 Boone Gorges +# This file is distributed under the same license as the Invite Anyone package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Invite Anyone 0.6 bleeding\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/invite-anyone\n" +"POT-Creation-Date: 2010-04-23 17:18+0000\n" +"PO-Revision-Date: 2010-04-23 20:04+0100\n" +"Last-Translator: Luca Camellini \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. #-#-#-#-# plugin.pot (Invite Anyone 0.6 bleeding) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/admin-panel.php:4 +#: widgets/widgets.php:38 +#: widgets/widgets.php:95 +msgid "Invite Anyone" +msgstr "Invita Chiunque" + +#: admin/admin-panel.php:15 +msgid "Settings" +msgstr "Impostazioni" + +#: admin/admin-panel.php:34 +msgid "Invite Anyone Settings" +msgstr "Impostazioni di Invita Chiunque" + +#: admin/admin-panel.php:40 +msgid "Save Changes" +msgstr "Salva modifiche" + +#: admin/admin-panel.php:53 +msgid "General Settings" +msgstr "Impostazioni Generali" + +#: admin/admin-panel.php:55 +msgid "Replacement patterns for email text fields" +msgstr "Stringhe speciali utilizzabili nei campi email" + +#: admin/admin-panel.php:57 +msgid "Text of email invitation subject line" +msgstr "Oggetto dell'email d'invito" + +#: admin/admin-panel.php:59 +msgid "Main text of email invitation message" +msgstr "Messaggio dell'email d'invito" + +#: admin/admin-panel.php:61 +msgid "Footer text of email invitation message (not editable by users)" +msgstr "Piè di pagina nel messaggio dell'email d'invito (non modificabile dagli utenti)" + +#: admin/admin-panel.php:64 +msgid "Allow users to customize invitation" +msgstr "Permetti agli utenti di personalizzare l'invito" + +#: admin/admin-panel.php:67 +msgid "Number of email invitations users are permitted to send at a time" +msgstr "Numero di email d'invito che possono essere spedite contemporaneamente" + +#: admin/admin-panel.php:69 +msgid "Allow users to send group invitations along with email invitations" +msgstr "Permetti agli utenti di mandare inviti ai gruppi insieme alle email di invito" + +#: admin/admin-panel.php:72 +msgid "Access Settings" +msgstr "Impostazioni Permessi" + +#: admin/admin-panel.php:74 +msgid "Allow email invitations to be sent by" +msgstr "Gli inviti via email possono essere spediti da" + +#: admin/admin-panel.php:76 +msgid "Limit group invitations" +msgstr "Limita gli inviti ai gruppi" + +#: admin/admin-panel.php:89 +msgid "Control the default behavior of Invite Anyone." +msgstr "Regola il funzionamento di Invita Chiunque." + +#: admin/admin-panel.php:99 +msgid "name of your website" +msgstr "nome del tuo sito" + +#: admin/admin-panel.php:100 +msgid "display name of the inviter" +msgstr "mostra il nome di chi invita" + +#: admin/admin-panel.php:101 +msgid "URL to the profile of the inviter" +msgstr "URL del profilo di chi invita" + +#: admin/admin-panel.php:102 +msgid "Link that invited users can click to accept the invitation" +msgstr "Link che l'utente invitato può cliccare per accettare l'invito" + +#: admin/admin-panel.php:103 +msgid "Link that invited users can click to opt out of future invitations" +msgstr "Link che l'utente invitato può cliccare per non ricevere più inviti in futuro" + +#: admin/admin-panel.php:142 +msgid "Subject line" +msgstr "Oggetto dell'email" + +#: admin/admin-panel.php:146 +msgid "Message body" +msgstr "Corpo del messaggio" + +#: admin/admin-panel.php:154 +msgid "Control which members are able to send various kinds of invitations." +msgstr "Stabilisci quali membri possono spedire gli inviti." + +#: admin/admin-panel.php:163 +msgid "All users" +msgstr "Tutti gli utenti" + +#: admin/admin-panel.php:165 +msgid "A limited set of users" +msgstr "Un insieme limitato di utenti" + +#: admin/admin-panel.php:169 +msgid "Only users who have been members of the site for a minimum number of days:" +msgstr "Solo gli utenti che sono membri del sito da almeno il seguente numero di giorni:" + +#: admin/admin-panel.php:174 +msgid "Only users who have at least the following role on this blog:" +msgstr "Solo gli utenti che hanno almeno il seguente ruolo su questo blog:" + +#: admin/admin-panel.php:176 +msgid "Subscriber" +msgstr "Sottoscrittore" + +#: admin/admin-panel.php:177 +msgid "Contributor" +msgstr "Collaboratore" + +#: admin/admin-panel.php:178 +msgid "Author" +msgstr "Autore" + +#: admin/admin-panel.php:179 +msgid "Editor" +msgstr "Editore" + +#: admin/admin-panel.php:180 +msgid "Administrator" +msgstr "Amministratore" + +#: admin/admin-panel.php:185 +msgid "Provide a comma-separated list of users (identified by their numerical user ids) who cannot send invitations by email:" +msgstr "Inserisci la lista degli utenti (identificati con il loro ID utente numerico e separati da virgola) che non possono mandare inviti via email:" + +#: admin/admin-panel.php:200 +msgid "Invite Anyone extends BuddyPress's default group invitation settings. Instead of allowing you to invite only friends to a group, this plugin allows you to invite any member of the site. Use these settings to limit possible invitees for different group roles." +msgstr "Invita Chiunque estende le impostazioni relative agli inviti ai gruppi di BuddyPress. Invece di consentirti di invitare solo amici in un gruppo, questo plugin ti permette di invitare qualsiasi membro del sito. Usa questi settaggi per limitare gli inviti possibili per i diversi ruoli utente." + +#: admin/admin-panel.php:202 +msgid "Site admins can send group invitations to: " +msgstr "Gli amministratori del sito possono mandare inviti al gruppo a: " + +#: admin/admin-panel.php:204 +#: admin/admin-panel.php:212 +#: admin/admin-panel.php:220 +#: admin/admin-panel.php:228 +msgid "Anyone" +msgstr "Chiunque" + +#: admin/admin-panel.php:205 +#: admin/admin-panel.php:213 +#: admin/admin-panel.php:221 +#: admin/admin-panel.php:229 +msgid "Friends" +msgstr "Amici" + +#: admin/admin-panel.php:206 +#: admin/admin-panel.php:214 +#: admin/admin-panel.php:222 +#: admin/admin-panel.php:230 +msgid "No one" +msgstr "Nessuno" + +#: admin/admin-panel.php:210 +msgid "Group admins can send group invitations to: " +msgstr "Gli amministratori di un gruppo possono mandare inviti al gruppo a: " + +#: admin/admin-panel.php:218 +msgid "Group mods can send group invitations to: " +msgstr "I moderatori di un gruppo possono mandare inviti al gruppo a: " + +#: admin/admin-panel.php:226 +msgid "Group members can send group invitations to: " +msgstr "I membri di un gruppo possono mandare inviti al gruppo a: " + +#: by-email/by-email.php:56 +msgid "Opt Out" +msgstr "Disiscriviti" + +#: by-email/by-email.php:57 +msgid "Accept Invitation" +msgstr "Accetta Invito" + +#: by-email/by-email.php:61 +#, php-format +msgid "To opt out of future invitations to %s, make sure that your email is entered in the field below and click \"Opt Out\"." +msgstr "Per non ricevere ulteriori inviti su %s in futuro, inserisci il tuo indirizzo email nel campo sottostante e clicca \"Disiscriviti\"." + +#: by-email/by-email.php:63 +#, php-format +msgid "If you are here by mistake and would like to accept your invitation to %s, click \"Accept Invitation\" instead." +msgstr "Se ti trovi qui per errore e vuoi invece accettare l'invito su %s, clicca \"Accetta Invito\"." + +#: by-email/by-email.php:76 +msgid "You have successfully opted out. No more invitation emails will be sent to you by this site." +msgstr "Ti sei disiscritto correttamente. Non riceverai più email d'invito da questo sito." + +#: by-email/by-email.php:79 +msgid "Sorry, there was an error in processing your request" +msgstr "Attenzione, si è verificato un errore durante l'elaborazione della tua richiesta" + +#: by-email/by-email.php:100 +msgid "Email:" +msgstr "Email:" + +#: by-email/by-email.php:122 +msgid "It looks like you're trying to accept an invitation to join the site, but some information is missing. Please try again by clicking on the link in the invitation email." +msgstr "Stai tentando di accettare un invito su questo sito, ma alcune informazioni risultano incomplete. Per favore riprova, utilizzando il collegamento presente nell'email d'invito." + +#: by-email/by-email.php:164 +#, php-format +msgid "Welcome! You've been invited %s to join the site. Please fill out the information below to create your account." +msgstr "Benvenuto! Sei stato invitato su questo sito da %s. Inserisci le informazioni necessarie per creare il tuo account." + +#: by-email/by-email.php:228 +#: by-email/by-email.php:470 +#: group-invites/group-invites.php:83 +#: group-invites/group-invites.php:236 +#: group-invites/group-invites.php:334 +msgid "Send Invites" +msgstr "Spedisci Inviti" + +#: by-email/by-email.php:240 +#: by-email/by-email.php:412 +msgid "Invite New Members" +msgstr "Invita Nuovi Membri" + +#: by-email/by-email.php:250 +#: by-email/by-email.php:524 +msgid "Sent Invites" +msgstr "Inviti Spediti" + +#: by-email/by-email.php:382 +#: widgets/widgets.php:61 +msgid "email address" +msgstr "indirizzo email" + +#: by-email/by-email.php:407 +#, php-format +msgid "Invite friends to join %s by following these steps:" +msgstr "Invita i tuoi amici su %s tramite i seguenti passi:" + +#: by-email/by-email.php:416 +msgid "Enter email addresses in the fields below." +msgstr "Inserisci gli indirizzi email nei campi sottostanti." + +#: by-email/by-email.php:416 +msgid "You can only invite people whose email addresses end in one of the following domains:" +msgstr "Puoi invitare solo persone il cui indirizzo email termina con uno dei seguenti domini:" + +#: by-email/by-email.php:423 +msgid "(optional) Customize the subject line of the invitation email." +msgstr "(opzionale) Personalizza l'oggetto dell'email d'invito." + +#: by-email/by-email.php:426 +msgid "Subject:" +msgstr "Oggetto:" + +#: by-email/by-email.php:435 +msgid "(optional) Customize the text of the invitation." +msgstr "(opzionale) Personalizza il testo dell'invito." + +#: by-email/by-email.php:438 +msgid "Message:" +msgstr "Messaggio:" + +#: by-email/by-email.php:443 +msgid "The message will also contain a custom footer containing links to accept the invitation or opt out of further email invitations from this site." +msgstr "Il messaggio conterrà anche un piè di pagina personalizzato, con i link per accettare l'invito o per non ricevere più inviti dal sito in futuro." + +#: by-email/by-email.php:449 +msgid "(optional) Select some groups. Invitees will receive invitations to these groups when they join the site." +msgstr "(opzionale) Seleziona uno o più gruppi. I destinatari riceveranno un invito a questi gruppi quando si iscriveranno al sito." + +#: by-email/by-email.php:487 +msgid "Your invitations were sent successfully!" +msgstr "I tuoi inviti sono stati spediti con successo!" + +#: by-email/by-email.php:489 +msgid "Sorry, there was a problem sending your invitations. Please try again." +msgstr "Errore: c'è stato un problema durante la spedizione degli inviti, si prega di riprovare." + +#: by-email/by-email.php:528 +msgid "You have sent invitations to the following people." +msgstr "Hai spedito gli inviti alle seguenti persone." + +#: by-email/by-email.php:533 +msgid "Invited email address" +msgstr "Indirizzo email invitato" + +#: by-email/by-email.php:534 +msgid "Group invitations" +msgstr "Inviti gruppo" + +#: by-email/by-email.php:535 +msgid "Sent" +msgstr "Inviato" + +#: by-email/by-email.php:536 +msgid "Accepted" +msgstr "Accettato" + +#: by-email/by-email.php:546 +msgid "Clear this invitation" +msgstr "Elimina questo invito" + +#: by-email/by-email.php:579 +msgid "Clear all accepted invitations" +msgstr "Elimina tutti gli inviti accettati" + +#: by-email/by-email.php:580 +msgid "Clear all invitations" +msgstr "Elimina tutti gli inviti" + +#: by-email/by-email.php:585 +msgid "You haven't sent any email invitations yet." +msgstr "Non hai ancora spedito nessuna email d'invito." + +#: by-email/by-email.php:627 +#, php-format +msgid "An invitation to join the %s community." +msgstr "Invito alla community di %s." + +#: by-email/by-email.php:651 +#, php-format +msgid "" +"You have been invited by %%INVITERNAME%% to join the %s community. \\n" +"\\r\\n" +"\\rVisit %%INVITERNAME%%'s profile at %%INVITERURL%%." +msgstr "" +"Sei stato invitato da %%INVITERNAME%% ad unirti alla community di %s. \\n" +"\\r\\n" +"\\rVisita il profilo di %%INVITERNAME%% su %%INVITERURL%%." + +#: by-email/by-email.php:671 +#, php-format +msgid "To accept this invitation, please visit %%ACCEPTURL%%" +msgstr "Per accettare questo invito, visita %%ACCEPTURL%%" + +#: by-email/by-email.php:675 +#, php-format +msgid "To opt out of future invitations to this site, please visit %%OPTOUTURL%%" +msgstr "Per non ricevere ulteriori inviti a questo sito in futuro, visita %%OPTOUTURL%%" + +#: by-email/by-email.php:743 +msgid "You didn't include any email addresses!" +msgstr "Non hai specificato nessun indirizzo email!" + +#: by-email/by-email.php:753 +msgid "Sorry, $email has opted out of email invitations from this site." +msgstr "Spiacente, $email ha deciso di non ricevere email d'invito da questo sito." + +#: by-email/by-email.php:758 +msgid "Sorry, $email is already a registered user of the site. " +msgstr "Spiacente, $email è già iscritto a questo sito." + +#: by-email/by-email.php:763 +msgid "Sorry, $email is not a permitted email address." +msgstr "Spiacente, $email è un indirizzo email non permesso." + +#: by-email/by-email.php:768 +msgid "Sorry, $email is not a valid email address. Please make sure that you have typed it correctly." +msgstr "Spiacente, $email è un indirizzo email non valido. Verifica di averlo digitato correttamente." + +#: by-email/by-email.php:773 +msgid "Sorry, $email is not a permitted email address. Please make sure that you have typed the domain name correctly." +msgstr "Spiacente, $email è un indirizzo email non permesso. Verifica di avere digitato il dominio correttamente." + +#: by-email/by-email.php:779 +msgid "Please remove the email address and try again." +msgstr "Si prega di rimuovere l'indirizzo email e riprovare." + +#: group-invites/group-invites.php:141 +msgid "Group invites sent." +msgstr "Inviti al Gruppo spediti." + +#: group-invites/group-invites.php:143 +msgid "Group created successfully." +msgstr "Gruppo creato correttamente." + +#: group-invites/group-invites.php:176 +#: group-invites/group-invites.php:270 +msgid "Search for members to invite:" +msgstr "Cerca i membri da invitare:" + +#: group-invites/group-invites.php:184 +#: group-invites/group-invites.php:278 +msgid "Select members from the directory:" +msgstr "Seleziona i membri dalla lista:" + +#: group-invites/group-invites.php:199 +msgid "Select people to invite." +msgstr "Seleziona le persone da invitare." + +#: group-invites/group-invites.php:219 +#: group-invites/group-invites.php:315 +#: group-invites/group-invites.php:466 +msgid "Remove Invite" +msgstr "Cancella Invito" + +#: group-invites/group-invites.php:260 +msgid "Want to invite someone to the group who is not yet a member of the site?" +msgstr "Vuoi invitare in questo gruppo qualcuno che non è ancora membro del sito?" + +#: group-invites/group-invites.php:260 +msgid "Send invitations by email." +msgstr "Spediscigli un invito via email." + +#: group-invites/group-invites.php:295 +msgid "Select people to invite from your friends list." +msgstr "Seleziona le persone da invitare dalla tua lista amici." + +#: widgets/widgets.php:44 +#: widgets/widgets.php:101 +msgid "Invite friends to join the site by entering their email addresses below." +msgstr "Invita i tuoi amici su questo sito inserendo i loro indirizzi email qui sotto." + +#: widgets/widgets.php:77 +msgid "Continue" +msgstr "Continua" + +#: widgets/widgets.php:104 +msgid "Title:" +msgstr "Titolo:" + +#: widgets/widgets.php:106 +msgid "Text to display in widget:" +msgstr "Testo da mostrare nel widget:" + +#: widgets/widgets.php:110 +msgid "Number of email fields to display in widget:" +msgstr "Numero di campi email da mostrare nel widget:" + +#. Plugin URI of the plugin/theme +msgid "http://teleogistic.net/code/buddypress/invite-anyone/" +msgstr "http://teleogistic.net/code/buddypress/invite-anyone/" + +#. Description of the plugin/theme +msgid "Allows group admins to invite any BuddyPress member to a group, whether or not they are friends" +msgstr "Permette agli amministratori dei gruppi di invitare qualsiasi membro del sito in un gruppo, anche se non sono amici" + +#. Author of the plugin/theme +msgid "Boone Gorges" +msgstr "Boone Gorges" + +#. Author URI of the plugin/theme +msgid "http://teleogistic.net" +msgstr "http://teleogistic.net" + diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-nb_NO.mo b/wp-content/plugins/invite-anyone/languages/invite-anyone-nb_NO.mo new file mode 100644 index 0000000..e65715a Binary files /dev/null and b/wp-content/plugins/invite-anyone/languages/invite-anyone-nb_NO.mo differ diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-nb_NO.po b/wp-content/plugins/invite-anyone/languages/invite-anyone-nb_NO.po new file mode 100644 index 0000000..e516d55 --- /dev/null +++ b/wp-content/plugins/invite-anyone/languages/invite-anyone-nb_NO.po @@ -0,0 +1,575 @@ +msgid "" +msgstr "" +"Project-Id-Version: Invite Anyone 0.6.7\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/invite-anyone\n" +"POT-Creation-Date: 2010-04-23 17:18+0000\n" +"PO-Revision-Date: 2010-11-27 22:29+0100\n" +"Last-Translator: Stig Ulfsby \n" +"Language-Team: Stig Ulfsby \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n" +"X-Textdomain-Support: yes\n" +"X-Poedit-Language: Norwegian Bokmal\n" +"X-Poedit-Country: NORWAY\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: .\n" + +# @ bp-invite-anyone +#. #-#-#-#-# plugin.pot (Invite Anyone 0.6 bleeding) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/admin-panel.php:4 +#: widgets/widgets.php:38 +#: widgets/widgets.php:95 +msgid "Invite Anyone" +msgstr "Invite Anyone" + +# @ bp-invite-anyone +#: admin/admin-panel.php:15 +msgid "Settings" +msgstr "Innstillinger" + +# @ bp-invite-anyone +#: admin/admin-panel.php:34 +msgid "Invite Anyone Settings" +msgstr "Invite Anyone innstillinger" + +# @ default +#: admin/admin-panel.php:40 +msgid "Save Changes" +msgstr "Lagre endringer" + +# @ bp-invite-anyone +#: admin/admin-panel.php:53 +msgid "General Settings" +msgstr "Generelle innstillinger" + +# @ bp-invite-anyone +#: admin/admin-panel.php:55 +msgid "Replacement patterns for email text fields" +msgstr "Erstatningsmønstre for epost tekstfelt" + +# @ bp-invite-anyone +#: admin/admin-panel.php:57 +msgid "Text of email invitation subject line" +msgstr "Tekst for e-post invitasjon emnefeltet" + +# @ bp-invite-anyone +#: admin/admin-panel.php:59 +msgid "Main text of email invitation message" +msgstr "Hovedteksten i e-post invitasjonsmeldingen" + +# @ bp-invite-anyone +#: admin/admin-panel.php:61 +msgid "Footer text of email invitation message (not editable by users)" +msgstr "Bunntekst av e-post invitasjonsmeldingen (ikke redigerbart av brukere)" + +# @ bp-invite-anyone +#: admin/admin-panel.php:64 +msgid "Allow users to customize invitation" +msgstr "Tillat brukere Ã¥ tilpasse invitasjon" + +# @ bp-invite-anyone +#: admin/admin-panel.php:67 +msgid "Number of email invitations users are permitted to send at a time" +msgstr "Antall e-post iinvitasjoner brukere har tillatelse til Ã¥ sende om gangen" + +# @ bp-invite-anyone +#: admin/admin-panel.php:69 +msgid "Allow users to send group invitations along with email invitations" +msgstr "Tillat brukere Ã¥ sende gruppe invitasjoner sammen med e-post invitasjoner" + +# @ bp-invite-anyone +#: admin/admin-panel.php:72 +msgid "Access Settings" +msgstr "Tilgangsinnstillinger" + +# @ bp-invite-anyone +#: admin/admin-panel.php:74 +msgid "Allow email invitations to be sent by" +msgstr "Tillat e-invitasjoner Ã¥ sendes av" + +# @ bp-invite-anyone +#: admin/admin-panel.php:76 +msgid "Limit group invitations" +msgstr "Begrens gruppe invitasjoner" + +# @ bp-invite-anyone +#: admin/admin-panel.php:89 +msgid "Control the default behavior of Invite Anyone." +msgstr "Styr standard virkemÃ¥te for Invite Anyone." + +# @ bp-invite-anyone +#: admin/admin-panel.php:99 +msgid "name of your website" +msgstr "navnet pÃ¥ ditt nettsted" + +# @ bp-invite-anyone +#: admin/admin-panel.php:100 +msgid "display name of the inviter" +msgstr "visningsnavnet for den som inviterer" + +# @ bp-invite-anyone +#: admin/admin-panel.php:101 +msgid "URL to the profile of the inviter" +msgstr "URL til profilen til den som inviterer" + +# @ bp-invite-anyone +#: admin/admin-panel.php:102 +msgid "Link that invited users can click to accept the invitation" +msgstr "Lenke som inviterte brukere kan klikke for Ã¥ godta invitasjonen" + +# @ bp-invite-anyone +#: admin/admin-panel.php:103 +msgid "Link that invited users can click to opt out of future invitations" +msgstr "Lenke som inviterte brukere kan klikke for Ã¥ velge bort fremtidige invitasjoner" + +# @ bp-invite-anyone +#: admin/admin-panel.php:142 +msgid "Subject line" +msgstr "Emnefeltet" + +# @ bp-invite-anyone +#: admin/admin-panel.php:146 +msgid "Message body" +msgstr "Meldingsteksten" + +# @ bp-invite-anyone +#: admin/admin-panel.php:154 +msgid "Control which members are able to send various kinds of invitations." +msgstr "Styr hvilke medlemmer som er i stand til Ã¥ sende ulike typer invitasjoner." + +# @ bp-invite-anyone +#: admin/admin-panel.php:163 +msgid "All users" +msgstr "Alle brukere" + +# @ bp-invite-anyone +#: admin/admin-panel.php:165 +msgid "A limited set of users" +msgstr "Et begrenset sett med brukere" + +# @ bp-invite-anyone +#: admin/admin-panel.php:169 +msgid "Only users who have been members of the site for a minimum number of days:" +msgstr "Bare brukere som har vært medlemmer av nettstedet i et minimum antall dager:" + +# @ bp-invite-anyone +#: admin/admin-panel.php:174 +msgid "Only users who have at least the following role on this blog:" +msgstr "Bare brukere som har minst følgende rolle pÃ¥ denne bloggen:" + +# @ default +#: admin/admin-panel.php:176 +msgid "Subscriber" +msgstr "Abonnent" + +# @ default +#: admin/admin-panel.php:177 +msgid "Contributor" +msgstr "Bidragsyter" + +# @ default +#: admin/admin-panel.php:178 +msgid "Author" +msgstr "Forfatter" + +# @ default +#: admin/admin-panel.php:179 +msgid "Editor" +msgstr "Redaktør" + +# @ default +#: admin/admin-panel.php:180 +msgid "Administrator" +msgstr "Administrator" + +# @ bp-invite-anyone +#: admin/admin-panel.php:185 +msgid "Provide a comma-separated list of users (identified by their numerical user ids) who cannot send invitations by email:" +msgstr "Gi en kommaseparert liste med brukere (identifisert av sin numeriske bruker-ID) som ikke kan sende invitasjoner via e-post:" + +# @ bp-invite-anyone +#: admin/admin-panel.php:200 +msgid "Invite Anyone extends BuddyPress's default group invitation settings. Instead of allowing you to invite only friends to a group, this plugin allows you to invite any member of the site. Use these settings to limit possible invitees for different group roles." +msgstr "Invite Anyone utvider BuddyPress sin standard gruppeinvitasjon innstillinger. I stedet for Ã¥ tillate deg Ã¥ invitere bare venner til en gruppe, muliggjør dette programtillegget Ã¥ invitere et hvilket som helst medlem av nettstedet. Bruk disse innstillingene til Ã¥ begrense de som kan invitere for ulike grupperoller." + +# @ bp-invite-anyone +#: admin/admin-panel.php:202 +msgid "Site admins can send group invitations to: " +msgstr "Nettsteds administrator kan sende gruppe invitasjoner til: " + +# @ bp-invite-anyone +#: admin/admin-panel.php:204 +#: admin/admin-panel.php:212 +#: admin/admin-panel.php:220 +#: admin/admin-panel.php:228 +msgid "Anyone" +msgstr "Hvem som helst" + +# @ bp-invite-anyone +#: admin/admin-panel.php:205 +#: admin/admin-panel.php:213 +#: admin/admin-panel.php:221 +#: admin/admin-panel.php:229 +msgid "Friends" +msgstr "Venner" + +# @ bp-invite-anyone +#: admin/admin-panel.php:206 +#: admin/admin-panel.php:214 +#: admin/admin-panel.php:222 +#: admin/admin-panel.php:230 +msgid "No one" +msgstr "Ingen" + +# @ bp-invite-anyone +#: admin/admin-panel.php:210 +msgid "Group admins can send group invitations to: " +msgstr "Gruppe administratorer kan sende gruppe invitasjoner til: " + +# @ bp-invite-anyone +#: admin/admin-panel.php:218 +msgid "Group mods can send group invitations to: " +msgstr "Gruppe mods kan sende gruppe invitasjoner til: " + +# @ bp-invite-anyone +#: admin/admin-panel.php:226 +msgid "Group members can send group invitations to: " +msgstr "Gruppemedlemmer kan sende gruppe invitasjoner til: " + +# @ bp-invite-anyone +#: by-email/by-email.php:56 +msgid "Opt Out" +msgstr "Meld deg av" + +# @ bp-invite-anyone +#: by-email/by-email.php:57 +msgid "Accept Invitation" +msgstr "Aksepter invitasjonen" + +# @ bp-invite-anyone +#: by-email/by-email.php:61 +#, php-format +msgid "To opt out of future invitations to %s, make sure that your email is entered in the field below and click \"Opt Out\"." +msgstr "For Ã¥ melde deg av fremtidige invitasjoner til %s, sørg for at e-postadressen er skrevet inn i feltet under og klikk \"Meld av\"." + +# @ bp-invite-anyone +#: by-email/by-email.php:63 +#, php-format +msgid "If you are here by mistake and would like to accept your invitation to %s, click \"Accept Invitation\" instead." +msgstr "Hvis du er her ved en feil og ønsker Ã¥ ta imot invitasjonen til %s, klikk \"Aksepter invitasjon\" i stedet." + +# @ bp-invite-anyone +#: by-email/by-email.php:76 +msgid "You have successfully opted out. No more invitation emails will be sent to you by this site." +msgstr "Du har meldt deg av. Ingen flere invitasjons e-post vil bli sendt til deg av dette nettstedet." + +# @ bp-invite-anyone +#: by-email/by-email.php:79 +msgid "Sorry, there was an error in processing your request" +msgstr "Beklager, det oppstod en feil i behandlingen av forespørselen" + +# @ bp-invite-anyone +#: by-email/by-email.php:100 +msgid "Email:" +msgstr "E-post:" + +# @ bp-invite-anyone +#: by-email/by-email.php:122 +msgid "It looks like you're trying to accept an invitation to join the site, but some information is missing. Please try again by clicking on the link in the invitation email." +msgstr "Det ser ut som du prøver Ã¥ akseptere en invitasjon til Ã¥ bli med i nettsamfunnet, men noe informasjon mangler. Vennligst prøv igjen ved Ã¥ klikke pÃ¥ lenken i invitasjons e-posten." + +# @ bp-invite-anyone +#: by-email/by-email.php:164 +#, php-format +msgid "Welcome! You've been invited %s to join the site. Please fill out the information below to create your account." +msgstr "Velkommen! Du har blitt invitert %s til bli med i omrÃ¥det. Vennligst fyll ut informasjonen nedenfor for Ã¥ opprette kontoen." + +# @ buddypress +#: by-email/by-email.php:228 +#: by-email/by-email.php:470 +#: group-invites/group-invites.php:83 +#: group-invites/group-invites.php:236 +#: group-invites/group-invites.php:334 +msgid "Send Invites" +msgstr "Send invitasjoner" + +# @ bp-invite-anyone +#: by-email/by-email.php:240 +#: by-email/by-email.php:412 +msgid "Invite New Members" +msgstr "Inviter nye medlemmer" + +# @ bp-invite-anyone +#: by-email/by-email.php:250 +#: by-email/by-email.php:524 +msgid "Sent Invites" +msgstr "Sendte invitasjoner" + +# @ bp-invite-anyone +#: by-email/by-email.php:382 +#: widgets/widgets.php:61 +msgid "email address" +msgstr "e-postadresse" + +# @ bp-invite-anyone +#: by-email/by-email.php:407 +#, php-format +msgid "Invite friends to join %s by following these steps:" +msgstr "Inviter venner til %s ved Ã¥ følge disse trinnene:" + +# @ bp-invite-anyone +#: by-email/by-email.php:416 +msgid "Enter email addresses in the fields below." +msgstr "Skriv inn e-postadresser i feltene nedenfor." + +# @ bp-invite-anyone +#: by-email/by-email.php:416 +msgid "You can only invite people whose email addresses end in one of the following domains:" +msgstr "Du kan bare invitere folk hvis e-postadresser ender i en av følgende domener:" + +# @ bp-invite-anyone +#: by-email/by-email.php:423 +msgid "(optional) Customize the subject line of the invitation email." +msgstr "(Valgfritt) Tilpass emnelinjen i invitasjon e-posten." + +# @ bp-invite-anyone +#: by-email/by-email.php:426 +msgid "Subject:" +msgstr "Emne:" + +# @ bp-invite-anyone +#: by-email/by-email.php:435 +msgid "(optional) Customize the text of the invitation." +msgstr "(Valgfritt) Tilpass teksten i invitasjonen." + +# @ bp-invite-anyone +#: by-email/by-email.php:438 +msgid "Message:" +msgstr "Melding:" + +# @ bp-invite-anyone +#: by-email/by-email.php:443 +msgid "The message will also contain a custom footer containing links to accept the invitation or opt out of further email invitations from this site." +msgstr "Meldingen vil ogsÃ¥ inneholde en tilpasset bunntekst som inneholder lenker til Ã¥ akseptere invitasjonen eller reservere deg mot ytterligere e-post invitasjoner fra dette nettstedet." + +# @ bp-invite-anyone +#: by-email/by-email.php:449 +msgid "(optional) Select some groups. Invitees will receive invitations to these groups when they join the site." +msgstr "(Valgfritt) Velg noen grupper. Inviterte vil motta invitasjoner til disse gruppene nÃ¥r de bli med i nettsamfunnet." + +# @ bp-invite-anyone +#: by-email/by-email.php:487 +msgid "Your invitations were sent successfully!" +msgstr "Din invitasjoner ble sendt!" + +# @ bp-invite-anyone +#: by-email/by-email.php:489 +msgid "Sorry, there was a problem sending your invitations. Please try again." +msgstr "Beklager, det var et problem Ã¥ sende invitasjonene. Vennligst prøv igjen." + +# @ bp-invite-anyone +#: by-email/by-email.php:528 +msgid "You have sent invitations to the following people." +msgstr "Du har sendt invitasjoner til følgende personer." + +# @ bp-invite-anyone +#: by-email/by-email.php:533 +msgid "Invited email address" +msgstr "Invitert e-postadresse" + +# @ bp-invite-anyone +#: by-email/by-email.php:534 +msgid "Group invitations" +msgstr "Gruppe invitasjoner" + +# @ bp-invite-anyone +#: by-email/by-email.php:535 +msgid "Sent" +msgstr "Sendt" + +# @ bp-invite-anyone +#: by-email/by-email.php:536 +msgid "Accepted" +msgstr "Akseptert" + +# @ bp-invite-anyone +#: by-email/by-email.php:546 +msgid "Clear this invitation" +msgstr "Tøm denne invitasjonen" + +# @ bp-invite-anyone +#: by-email/by-email.php:579 +msgid "Clear all accepted invitations" +msgstr "Fjern alle aksepterte invitasjoner" + +# @ bp-invite-anyone +#: by-email/by-email.php:580 +msgid "Clear all invitations" +msgstr "Fjern alle invitasjoner" + +# @ bp-invite-anyone +#: by-email/by-email.php:585 +msgid "You haven't sent any email invitations yet." +msgstr "Du har ikke sendt noen e-post invitasjoner ennÃ¥." + +# @ bp-invite-anyone +#: by-email/by-email.php:627 +#, php-format +msgid "An invitation to join the %s community." +msgstr "En invitasjon til Ã¥ delta i %s samfunnet." + +# @ bp-invite-anyone +#: by-email/by-email.php:651 +#, php-format +msgid "" +"You have been invited by %%INVITERNAME%% to join the %s community. \\n" +"\\r\\n" +"\\rVisit %%INVITERNAME%%'s profile at %%INVITERURL%%." +msgstr "" +"Du har blitt invitert av %%INVITERNAME%% Ã¥ bli med i %s samfunnet. \\n" +"\\r\\n" +"\\rBesøk %%INVITERNAME%% sin profil pÃ¥ %%INVITERURL%%." + +# @ bp-invite-anyone +#: by-email/by-email.php:671 +#, php-format +msgid "To accept this invitation, please visit %%ACCEPTURL%%" +msgstr "For Ã¥ godta denne invitasjonen, kan du klikke %%ACCEPTURL%%" + +# @ bp-invite-anyone +#: by-email/by-email.php:675 +#, php-format +msgid "To opt out of future invitations to this site, please visit %%OPTOUTURL%%" +msgstr "For Ã¥ melde deg av fremtidige invitasjoner til dette omrÃ¥det, kan du klikke %%OPTOUTURL%%" + +# @ bp-invite-anyone +#: by-email/by-email.php:743 +msgid "You didn't include any email addresses!" +msgstr "Du inkluderte ikke noen e-postadresser!" + +# @ bp-invite-anyone +#: by-email/by-email.php:753 +msgid "Sorry, $email has opted out of email invitations from this site." +msgstr "Beklager, $email har meldt seg ut av e-post invitasjoner fra dette nettstedet." + +# @ bp-invite-anyone +#: by-email/by-email.php:758 +msgid "Sorry, $email is already a registered user of the site. " +msgstr "Beklager, $email er allerede registrert som bruker av nettstedet. " + +# @ bp-invite-anyone +#: by-email/by-email.php:763 +msgid "Sorry, $email is not a permitted email address." +msgstr "Beklager, $email er ikke en tillatt e-postadresse." + +# @ bp-invite-anyone +#: by-email/by-email.php:768 +msgid "Sorry, $email is not a valid email address. Please make sure that you have typed it correctly." +msgstr "Beklager, $email er ikke en gyldig e-postadresse. Vennligst sørg for at du har skrevet den riktig." + +# @ bp-invite-anyone +#: by-email/by-email.php:773 +msgid "Sorry, $email is not a permitted email address. Please make sure that you have typed the domain name correctly." +msgstr "Beklager, $email er ikke en tillatt e-postadresse. Vennligst sørg for at du har skrevet domenenavnet riktig." + +# @ bp-invite-anyone +#: by-email/by-email.php:779 +msgid "Please remove the email address and try again." +msgstr "Vennligst fjern e-postadressen og prøv igjen." + +# @ buddypress +#: group-invites/group-invites.php:141 +msgid "Group invites sent." +msgstr "Gruppe invitasjoner sendt." + +# @ buddypress +#: group-invites/group-invites.php:143 +msgid "Group created successfully." +msgstr "Gruppen vellykket opprettet." + +# @ bp-invite-anyone +#: group-invites/group-invites.php:176 +#: group-invites/group-invites.php:270 +msgid "Search for members to invite:" +msgstr "Søk etter medlemmer Ã¥ invitere:" + +# @ bp-invite-anyone +#: group-invites/group-invites.php:184 +#: group-invites/group-invites.php:278 +msgid "Select members from the directory:" +msgstr "Velg medlemmer fra katalogen:" + +# @ bp-invite-anyone +#: group-invites/group-invites.php:199 +msgid "Select people to invite." +msgstr "Velg folk til Ã¥ invitere." + +# @ buddypress +#: group-invites/group-invites.php:219 +#: group-invites/group-invites.php:315 +#: group-invites/group-invites.php:466 +msgid "Remove Invite" +msgstr "Fjern invitasjon" + +# @ bp-invite-anyone +#: group-invites/group-invites.php:260 +msgid "Want to invite someone to the group who is not yet a member of the site?" +msgstr "Lyst til Ã¥ invitere noen til gruppen som ikke er medlem ennÃ¥ av nettstedet?" + +# @ bp-invite-anyone +#: group-invites/group-invites.php:260 +msgid "Send invitations by email." +msgstr "Send invitasjoner via e-post." + +# @ buddypress +#: group-invites/group-invites.php:295 +msgid "Select people to invite from your friends list." +msgstr "Velg folk Ã¥ invitere fra vennelisten din." + +# @ bp-invite-anyone +#: widgets/widgets.php:44 +#: widgets/widgets.php:101 +msgid "Invite friends to join the site by entering their email addresses below." +msgstr "Inviter venner til Ã¥ bli med i nettsamfunnet ved Ã¥ oppgi e-postadressene nedenfor." + +# @ bp-invite-anyone +#: widgets/widgets.php:77 +msgid "Continue" +msgstr "Fortsett" + +# @ default +#: widgets/widgets.php:104 +msgid "Title:" +msgstr "Tittel:" + +# @ bp-invite-anyone +#: widgets/widgets.php:106 +msgid "Text to display in widget:" +msgstr "Tekst som skal vises i widget:" + +# @ bp-invite-anyone +#: widgets/widgets.php:110 +msgid "Number of email fields to display in widget:" +msgstr "Antall e-post felt som vises i widget:" + +#. Plugin URI of the plugin/theme +msgid "http://teleogistic.net/code/buddypress/invite-anyone/" +msgstr "http://teleogistic.net/code/buddypress/invite-anyone/" + +#. Description of the plugin/theme +msgid "Allows group admins to invite any BuddyPress member to a group, whether or not they are friends" +msgstr "Tillater gruppeadministratorer Ã¥ invitere enhver BuddyPress medlem til en gruppe, uansett om de er venner eller ikke" + +#. Author of the plugin/theme +msgid "Boone Gorges" +msgstr "Boone Gorges" + +#. Author URI of the plugin/theme +msgid "http://teleogistic.net" +msgstr "http://teleogistic.net" + diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-nl_NL.mo b/wp-content/plugins/invite-anyone/languages/invite-anyone-nl_NL.mo new file mode 100644 index 0000000..c990a3a Binary files /dev/null and b/wp-content/plugins/invite-anyone/languages/invite-anyone-nl_NL.mo differ diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-nl_NL.po b/wp-content/plugins/invite-anyone/languages/invite-anyone-nl_NL.po new file mode 100644 index 0000000..3d3254d --- /dev/null +++ b/wp-content/plugins/invite-anyone/languages/invite-anyone-nl_NL.po @@ -0,0 +1,478 @@ +# Translation of the WordPress plugin Invite Anyone 0.6 bleeding by Boone Gorges. +# Copyright (C) 2010 Boone Gorges +# This file is distributed under the same license as the Invite Anyone package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: Invite Anyone 0.6 bleeding\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/invite-anyone\n" +"POT-Creation-Date: 2010-04-23 17:18+0000\n" +"PO-Revision-Date: 2010-04-23 20:21+0100\n" +"Last-Translator: Jesper\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. #-#-#-#-# plugin.pot (Invite Anyone 0.6 bleeding) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/admin-panel.php:4 +#: widgets/widgets.php:38 +#: widgets/widgets.php:95 +msgid "Invite Anyone" +msgstr "Invite Anyone" + +#: admin/admin-panel.php:15 +msgid "Settings" +msgstr "Instellingen" + +#: admin/admin-panel.php:34 +msgid "Invite Anyone Settings" +msgstr "Invite Anyone Instellingen" + +#: admin/admin-panel.php:40 +msgid "Save Changes" +msgstr "Bewaar Wijzigingen" + +#: admin/admin-panel.php:53 +msgid "General Settings" +msgstr "Algemene Instellingen" + +#: admin/admin-panel.php:55 +msgid "Replacement patterns for email text fields" +msgstr "Vervanging patronen voor e-mail tekstvelden" + +#: admin/admin-panel.php:57 +msgid "Text of email invitation subject line" +msgstr "Tekst van de e-mail uitnodiging onderwerp" + +#: admin/admin-panel.php:59 +msgid "Main text of email invitation message" +msgstr "Hoofdtekst van e-mail uitnodiging" + +#: admin/admin-panel.php:61 +msgid "Footer text of email invitation message (not editable by users)" +msgstr "Footer tekst van de e-mail uitnodiging (niet bewerkbaar door de gebruikers)" + +#: admin/admin-panel.php:64 +msgid "Allow users to customize invitation" +msgstr "Laat gebruikers toe uitnodiging aan te passen" + +#: admin/admin-panel.php:67 +msgid "Number of email invitations users are permitted to send at a time" +msgstr "Aantal email uitnodigingen die gebruikers per keer mogen versturen" + +#: admin/admin-panel.php:69 +msgid "Allow users to send group invitations along with email invitations" +msgstr "Sta gebruikers toe om groep uitnodigingen samen met e-mail uitnodigingen te verzenden" + +#: admin/admin-panel.php:72 +msgid "Access Settings" +msgstr "Toegang Instellingen" + +#: admin/admin-panel.php:74 +msgid "Allow email invitations to be sent by" +msgstr "Sta email uitnodigingen toe om verstuurd te worden door" + +#: admin/admin-panel.php:76 +msgid "Limit group invitations" +msgstr "Beperk groep uitnodigingen" + +#: admin/admin-panel.php:89 +msgid "Control the default behavior of Invite Anyone." +msgstr "Beheer het standaard gedrag van Invite Anyone." + +#: admin/admin-panel.php:99 +msgid "name of your website" +msgstr "naam van je website" + +#: admin/admin-panel.php:100 +msgid "display name of the inviter" +msgstr "weergavenaam van de uitnodiger" + +#: admin/admin-panel.php:101 +msgid "URL to the profile of the inviter" +msgstr "URL naar het profiel van de uitnodiger" + +#: admin/admin-panel.php:102 +msgid "Link that invited users can click to accept the invitation" +msgstr "Link die uitgenodigde gebruikers kunnen klikken om de uitnodiging te accepteren" + +#: admin/admin-panel.php:103 +msgid "Link that invited users can click to opt out of future invitations" +msgstr "Link die uitgenodigde gebruikers kunnen klikken om uit te schrijven voor toekomstige uitnodigingen" + +#: admin/admin-panel.php:142 +msgid "Subject line" +msgstr "Onderwerp regel" + +#: admin/admin-panel.php:146 +msgid "Message body" +msgstr "Bericht " + +#: admin/admin-panel.php:154 +msgid "Control which members are able to send various kinds of invitations." +msgstr "Beheer welke leden verschillende soorten uitnodigingen kunnen versturen." + +#: admin/admin-panel.php:163 +msgid "All users" +msgstr "Alle gebruikers" + +#: admin/admin-panel.php:165 +msgid "A limited set of users" +msgstr "Een gelimiteerd aantal gebruikers" + +#: admin/admin-panel.php:169 +msgid "Only users who have been members of the site for a minimum number of days:" +msgstr "Alleen gebruikers die al een minimaal aantal dagen lid zijn van de site:" + +#: admin/admin-panel.php:174 +msgid "Only users who have at least the following role on this blog:" +msgstr "Alleen gebruikers die tenminste de volgende rol op dit blog hebben:" + +#: admin/admin-panel.php:176 +msgid "Subscriber" +msgstr "Subscriber" + +#: admin/admin-panel.php:177 +msgid "Contributor" +msgstr "Contributor" + +#: admin/admin-panel.php:178 +msgid "Author" +msgstr "Author" + +#: admin/admin-panel.php:179 +msgid "Editor" +msgstr "Editor" + +#: admin/admin-panel.php:180 +msgid "Administrator" +msgstr "Administrator" + +#: admin/admin-panel.php:185 +msgid "Provide a comma-separated list of users (identified by their numerical user ids) who cannot send invitations by email:" +msgstr "Lever een komma gescheiden lijst van gebruikers (geïdentificeerd door hun numerieke user ids) die niet uitnodigingen per e-mail kunnen versturen:" + +#: admin/admin-panel.php:200 +msgid "Invite Anyone extends BuddyPress's default group invitation settings. Instead of allowing you to invite only friends to a group, this plugin allows you to invite any member of the site. Use these settings to limit possible invitees for different group roles." +msgstr "Invite Anyone breidt BuddyPress's standaard groep uitnodiging instellingen uit. In plaats van dat je alleen vrienden voor een groep uit kunt nodigen, staat deze plugin je toe elk lid van de site uit te nodigen. Gebruik deze instellingen om eventuele genodigden voor verschillende groepsrollen te beperken." + +#: admin/admin-panel.php:202 +msgid "Site admins can send group invitations to: " +msgstr "Site admins kunnen groep uitnodigingen sturen naar:" + +#: admin/admin-panel.php:204 +#: admin/admin-panel.php:212 +#: admin/admin-panel.php:220 +#: admin/admin-panel.php:228 +msgid "Anyone" +msgstr "Iedereen" + +#: admin/admin-panel.php:205 +#: admin/admin-panel.php:213 +#: admin/admin-panel.php:221 +#: admin/admin-panel.php:229 +msgid "Friends" +msgstr "Vrienden" + +#: admin/admin-panel.php:206 +#: admin/admin-panel.php:214 +#: admin/admin-panel.php:222 +#: admin/admin-panel.php:230 +msgid "No one" +msgstr "Niemand" + +#: admin/admin-panel.php:210 +msgid "Group admins can send group invitations to: " +msgstr "Groep admins kunnen groep uitnodigingen sturen naar:" + +#: admin/admin-panel.php:218 +msgid "Group mods can send group invitations to: " +msgstr "Groep mods kunnen groep uitnodigingen sturen naar:" + +#: admin/admin-panel.php:226 +msgid "Group members can send group invitations to: " +msgstr "Groep leden kunnen groep uitnodigingen sturen naar:" + +#: by-email/by-email.php:56 +msgid "Opt Out" +msgstr "Trek Terug" + +#: by-email/by-email.php:57 +msgid "Accept Invitation" +msgstr "Accepteer Uitnodiging" + +#: by-email/by-email.php:61 +#, php-format +msgid "To opt out of future invitations to %s, make sure that your email is entered in the field below and click \"Opt Out\"." +msgstr "Als je je wilt afmelden voor toekomstige uitnodigingen tot % s, zorg ervoor dat je e-mail is opgenomen in het onderstaande veld en klik op \"Afmelden\"." + +#: by-email/by-email.php:63 +#, php-format +msgid "If you are here by mistake and would like to accept your invitation to %s, click \"Accept Invitation\" instead." +msgstr "Ben je hier per ongeluk en wil je je uitnodiging accepteren voor %s, klik dan op \"Accepteer Uitnodiging\"." + +#: by-email/by-email.php:76 +msgid "You have successfully opted out. No more invitation emails will be sent to you by this site." +msgstr "Je hebt je succesvol afgemeld. Er worden, van deze site, geen invitatie emails meer naar je verstuurd." + +#: by-email/by-email.php:79 +msgid "Sorry, there was an error in processing your request" +msgstr "Sorry, er is een fout opgetreden bij de verwerking van je aanvraag" + +#: by-email/by-email.php:100 +msgid "Email:" +msgstr "E-mail:" + +#: by-email/by-email.php:122 +msgid "It looks like you're trying to accept an invitation to join the site, but some information is missing. Please try again by clicking on the link in the invitation email." +msgstr "Het lijkt erop dat je probeert een uitnodiging, om lid van de site te worden, te accepteren. Maar enkele informatie is onvolledig. Probeer aub opnieuw door op de link in de invitatie e-mail te klikken." + +#: by-email/by-email.php:164 +#, php-format +msgid "Welcome! You've been invited %s to join the site. Please fill out the information below to create your account." +msgstr "Welkom! Je bent uitgenodigd door %s om lid te worden van de site. Vul aub de onderstaande informatie in om een account te maken." + +#: by-email/by-email.php:228 +#: by-email/by-email.php:470 +#: group-invites/group-invites.php:83 +#: group-invites/group-invites.php:236 +#: group-invites/group-invites.php:334 +msgid "Send Invites" +msgstr "Stuur Uitnodigingen" + +#: by-email/by-email.php:240 +#: by-email/by-email.php:412 +msgid "Invite New Members" +msgstr "Nodig Nieuwe Leden Uit" + +#: by-email/by-email.php:250 +#: by-email/by-email.php:524 +msgid "Sent Invites" +msgstr "Verzonden Uitnodigingen" + +#: by-email/by-email.php:382 +#: widgets/widgets.php:61 +msgid "email address" +msgstr "e-mail adres" + +#: by-email/by-email.php:407 +#, php-format +msgid "Invite friends to join %s by following these steps:" +msgstr "Nodig vrienden uit om lid te worden van %s door de volgende stappen te volgen:" + +#: by-email/by-email.php:416 +msgid "Enter email addresses in the fields below." +msgstr "Vul e-mail adressen in het onderstaande veld in." + +#: by-email/by-email.php:416 +msgid "You can only invite people whose email addresses end in one of the following domains:" +msgstr "Je kunt alleen mensen uitnodigen wiens e-mail adressen eindigen op een van de volgende domeinen:" + +#: by-email/by-email.php:423 +msgid "(optional) Customize the subject line of the invitation email." +msgstr "(optioneel) Maak de tekst van de onderwerp regel van de invitatie e-mail op maat." + +#: by-email/by-email.php:426 +msgid "Subject:" +msgstr "Onderwerp:" + +#: by-email/by-email.php:435 +msgid "(optional) Customize the text of the invitation." +msgstr "(optioneel) Maak de tekst van de uitnodiging op maat." + +#: by-email/by-email.php:438 +msgid "Message:" +msgstr "Bericht:" + +#: by-email/by-email.php:443 +msgid "The message will also contain a custom footer containing links to accept the invitation or opt out of further email invitations from this site." +msgstr "Het bericht zal ook een aangepaste voettekst bevatten met links om de uitnodiging te accepteren of om uit te schrijven voor toekomstige uitnodigingen van deze site." + +#: by-email/by-email.php:449 +msgid "(optional) Select some groups. Invitees will receive invitations to these groups when they join the site." +msgstr "(optioneel) Selecteer een aantal groepen. Genodigden ontvangen invitaties tot deze groepen wanneer ze lid van de site worden." + +#: by-email/by-email.php:487 +msgid "Your invitations were sent successfully!" +msgstr "Je uitnodigingen zijn succesvol verstuurd!" + +#: by-email/by-email.php:489 +msgid "Sorry, there was a problem sending your invitations. Please try again." +msgstr "Sorry, Er was een probleem bij het versturen van je uitnodiging. Probeer opnieuw aub." + +#: by-email/by-email.php:528 +msgid "You have sent invitations to the following people." +msgstr "Je hebt de volgende mensen uitnodigingen gestuurd." + +#: by-email/by-email.php:533 +msgid "Invited email address" +msgstr "Uitgenodigd e-mail adres" + +#: by-email/by-email.php:534 +msgid "Group invitations" +msgstr "Groep uitnodigingen" + +#: by-email/by-email.php:535 +msgid "Sent" +msgstr "Verzonden" + +#: by-email/by-email.php:536 +msgid "Accepted" +msgstr "Geaccepteerd" + +#: by-email/by-email.php:546 +msgid "Clear this invitation" +msgstr "Wis deze uitnodiging" + +#: by-email/by-email.php:579 +msgid "Clear all accepted invitations" +msgstr "Wis alle geaccepteerde uitnodigingen" + +#: by-email/by-email.php:580 +msgid "Clear all invitations" +msgstr "Wis alle uitnodigingen" + +#: by-email/by-email.php:585 +msgid "You haven't sent any email invitations yet." +msgstr "Je hebt nog geen e-mail uitnodigingen verzonden." + +#: by-email/by-email.php:627 +#, php-format +msgid "An invitation to join the %s community." +msgstr "Een uitnodiging om lid te worden van de %s community." + +#: by-email/by-email.php:651 +#, php-format +msgid "" +"You have been invited by %%INVITERNAME%% to join the %s community. \\n" +"\\r\\n" +"\\rVisit %%INVITERNAME%%'s profile at %%INVITERURL%%." +msgstr "" +"Je bent uitgenodigd door %%INVITERNAME%% om lid te worden van de %s community. \\n" +"\r\n" +"\rBezoek %%INVITERNAME%%'s profiel op %%INVITERURL%%." + +#: by-email/by-email.php:671 +#, php-format +msgid "To accept this invitation, please visit %%ACCEPTURL%%" +msgstr "" +"\n" +"\n" +"Om deze uitnodiging te accepteren, bezoek aub %%ACCEPTURL%%" + +#: by-email/by-email.php:675 +#, php-format +msgid "To opt out of future invitations to this site, please visit %%OPTOUTURL%%" +msgstr "" +"\n" +"\n" +"Als je je wilt afmelden voor toekomstige uitnodigingen tot deze site, bezoek aub %%OPTOUTURL%%" + +#: by-email/by-email.php:743 +msgid "You didn't include any email addresses!" +msgstr "Je hebt geen e-mail adressen toegevoegd!" + +#: by-email/by-email.php:753 +msgid "Sorry, $email has opted out of email invitations from this site." +msgstr "Sorry, $email heeft zich afgemeld voor email uitnodigingen van deze site." + +#: by-email/by-email.php:758 +msgid "Sorry, $email is already a registered user of the site. " +msgstr "Sorry, $email is reeds een geregistreerde gebruiker van de site." + +#: by-email/by-email.php:763 +msgid "Sorry, $email is not a permitted email address." +msgstr "Sorry, $email is niet een toegestaan e-mailadres." + +#: by-email/by-email.php:768 +msgid "Sorry, $email is not a valid email address. Please make sure that you have typed it correctly." +msgstr "Sorry, $email is geen geldig e-mailadres. Zorg ervoor dat je het correct hebt getypt." + +#: by-email/by-email.php:773 +msgid "Sorry, $email is not a permitted email address. Please make sure that you have typed the domain name correctly." +msgstr "Sorry, $email is niet een toegestaan e-mailadres. Zorg ervoor dat je de domeinnaam correct hebt getypt." + +#: by-email/by-email.php:779 +msgid "Please remove the email address and try again." +msgstr "Verwijder aub het e-mail adres en probeer opnieuw." + +#: group-invites/group-invites.php:141 +msgid "Group invites sent." +msgstr "Groep uitnodigingen verstuurd." + +#: group-invites/group-invites.php:143 +msgid "Group created successfully." +msgstr "Groep succesvol aangemaakt." + +#: group-invites/group-invites.php:176 +#: group-invites/group-invites.php:270 +msgid "Search for members to invite:" +msgstr "Zoek naar leden om uit te nodigen:" + +#: group-invites/group-invites.php:184 +#: group-invites/group-invites.php:278 +msgid "Select members from the directory:" +msgstr "Selecteer leden uit de directory:" + +#: group-invites/group-invites.php:199 +msgid "Select people to invite." +msgstr "Selecteer mensen om uit te nodigen." + +#: group-invites/group-invites.php:219 +#: group-invites/group-invites.php:315 +#: group-invites/group-invites.php:466 +msgid "Remove Invite" +msgstr "Verwijder Uitnodiging" + +#: group-invites/group-invites.php:260 +msgid "Want to invite someone to the group who is not yet a member of the site?" +msgstr "Wil je iemand uitnodigen voor de groep die nog geen lid is van deze site?" + +#: group-invites/group-invites.php:260 +msgid "Send invitations by email." +msgstr "Stuur uitnodigingen per e-mail." + +#: group-invites/group-invites.php:295 +msgid "Select people to invite from your friends list." +msgstr "Selecteer mensen uit je vriendenlijst om uit te nodigen." + +#: widgets/widgets.php:44 +#: widgets/widgets.php:101 +msgid "Invite friends to join the site by entering their email addresses below." +msgstr "Nodig vrienden uit om lid van de site te worden door het invoeren van hun e-mailadressen hieronder." + +#: widgets/widgets.php:77 +msgid "Continue" +msgstr "Voortzetten" + +#: widgets/widgets.php:104 +msgid "Title:" +msgstr "Titel:" + +#: widgets/widgets.php:106 +msgid "Text to display in widget:" +msgstr "Weer te geven tekst in widget:" + +#: widgets/widgets.php:110 +msgid "Number of email fields to display in widget:" +msgstr "Aantal e-mail velden om weer te gegeven in widget:" + +#. Plugin URI of the plugin/theme +msgid "http://teleogistic.net/code/buddypress/invite-anyone/" +msgstr "http://teleogistic.net/code/buddypress/invite-anyone/" + +#. Description of the plugin/theme +msgid "Allows group admins to invite any BuddyPress member to a group, whether or not they are friends" +msgstr "Sta groep admins toe elk BuddyPress lid, voor een groep, uit te nodigen. Wel of geen vrienden." + +#. Author of the plugin/theme +msgid "Boone Gorges" +msgstr "Boone Gorges" + +#. Author URI of the plugin/theme +msgid "http://teleogistic.net" +msgstr "http://teleogistic.net" + diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-ru_RU.mo b/wp-content/plugins/invite-anyone/languages/invite-anyone-ru_RU.mo new file mode 100644 index 0000000..f981733 Binary files /dev/null and b/wp-content/plugins/invite-anyone/languages/invite-anyone-ru_RU.mo differ diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone-ru_RU.po b/wp-content/plugins/invite-anyone/languages/invite-anyone-ru_RU.po new file mode 100644 index 0000000..1754dc8 --- /dev/null +++ b/wp-content/plugins/invite-anyone/languages/invite-anyone-ru_RU.po @@ -0,0 +1,470 @@ +msgid "" +msgstr "" +"Project-Id-Version: Invite Anyone RU\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/invite-anyone\n" +"POT-Creation-Date: 2010-04-23 17:18+0000\n" +"PO-Revision-Date: \n" +"Last-Translator: Jettochkin \n" +"Language-Team: Jettochkin \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\n" +"X-Poedit-SourceCharset: utf-8\n" + +#. #-#-#-#-# plugin.pot (Invite Anyone 0.6 bleeding) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/admin-panel.php:4 +#: widgets/widgets.php:38 +#: widgets/widgets.php:95 +msgid "Invite Anyone" +msgstr "" + +#: admin/admin-panel.php:15 +msgid "Settings" +msgstr "ÐаÑтройки" + +#: admin/admin-panel.php:34 +msgid "Invite Anyone Settings" +msgstr "ÐаÑтройки Invite Anyone" + +#: admin/admin-panel.php:40 +msgid "Save Changes" +msgstr "Сохранить изменениÑ" + +#: admin/admin-panel.php:53 +msgid "General Settings" +msgstr "ОÑновные наÑтройки" + +#: admin/admin-panel.php:55 +msgid "Replacement patterns for email text fields" +msgstr "Замена Ð´Ð»Ñ Ð¿Ð¾Ð»ÐµÐ¹ в текÑте ÑообщениÑ" + +#: admin/admin-panel.php:57 +msgid "Text of email invitation subject line" +msgstr "ТекÑÑ‚ темы приглашениÑ" + +#: admin/admin-panel.php:59 +msgid "Main text of email invitation message" +msgstr "ОÑновной теÑÑ‚ Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾ e-mail" + +#: admin/admin-panel.php:61 +msgid "Footer text of email invitation message (not editable by users)" +msgstr "ТекÑÑ‚ подвала ÑообщениÑ-Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ (не редактируемое пользователем)" + +#: admin/admin-panel.php:64 +msgid "Allow users to customize invitation" +msgstr "Позволить пользователÑм наÑтраивать приглашение" + +#: admin/admin-panel.php:67 +msgid "Number of email invitations users are permitted to send at a time" +msgstr "КоличеÑтво разрешённых e-mail приглашений, поÑылаемых за один раз" + +#: admin/admin-panel.php:69 +msgid "Allow users to send group invitations along with email invitations" +msgstr "Позволить пользователÑм поÑылать Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð² группы поÑредÑтвом e-mail приглашений" + +#: admin/admin-panel.php:72 +msgid "Access Settings" +msgstr "ÐаÑтройка доÑтупа" + +#: admin/admin-panel.php:74 +msgid "Allow email invitations to be sent by" +msgstr "Разрешить приглашать через e-mail" + +#: admin/admin-panel.php:76 +msgid "Limit group invitations" +msgstr "ÐžÐ³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð² группы" + +#: admin/admin-panel.php:89 +msgid "Control the default behavior of Invite Anyone." +msgstr "Управление поведением Invite Anyone по-умолчанию" + +#: admin/admin-panel.php:99 +msgid "name of your website" +msgstr "Ð¸Ð¼Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ веб-Ñайта" + +#: admin/admin-panel.php:100 +msgid "display name of the inviter" +msgstr "показывать Ð¸Ð¼Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐ°ÑŽÑ‰ÐµÐ³Ð¾" + +#: admin/admin-panel.php:101 +msgid "URL to the profile of the inviter" +msgstr "СÑылка на профиль приглашающего" + +#: admin/admin-panel.php:102 +msgid "Link that invited users can click to accept the invitation" +msgstr "СÑылка Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñ‘Ð¼Ð° приглашениÑ" + +#: admin/admin-panel.php:103 +msgid "Link that invited users can click to opt out of future invitations" +msgstr "СÑылка Ð´Ð»Ñ Ð¾Ñ‚Ñрочки принÑÑ‚Ð¸Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ" + +#: admin/admin-panel.php:142 +msgid "Subject line" +msgstr "Тема" + +#: admin/admin-panel.php:146 +msgid "Message body" +msgstr "ТеÑÑ‚ ÑообщениÑ" + +#: admin/admin-panel.php:154 +msgid "Control which members are able to send various kinds of invitations." +msgstr "Контролировать, кто может поÑылать различные виды приглашений" + +#: admin/admin-panel.php:163 +msgid "All users" +msgstr "Ð’Ñе пользователи" + +#: admin/admin-panel.php:165 +msgid "A limited set of users" +msgstr "УÑтановка лимита Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹" + +#: admin/admin-panel.php:169 +msgid "Only users who have been members of the site for a minimum number of days:" +msgstr "ÐктивноÑть пользователей, минимальное количеÑтво дней:" + +#: admin/admin-panel.php:174 +msgid "Only users who have at least the following role on this blog:" +msgstr "Только пользователи, которые обладают по крайней мере Ñледующими ролÑми:" + +#: admin/admin-panel.php:176 +msgid "Subscriber" +msgstr "ПодпиÑчик" + +#: admin/admin-panel.php:177 +msgid "Contributor" +msgstr "УчаÑтник" + +#: admin/admin-panel.php:178 +msgid "Author" +msgstr "Ðвтор" + +#: admin/admin-panel.php:179 +msgid "Editor" +msgstr "Редактор" + +#: admin/admin-panel.php:180 +msgid "Administrator" +msgstr "ÐдминиÑтратор" + +#: admin/admin-panel.php:185 +msgid "Provide a comma-separated list of users (identified by their numerical user ids) who cannot send invitations by email:" +msgstr "СпиÑок пользователей через запÑтую (ID) кто не может отправлÑть Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾ e-mail:" + +#: admin/admin-panel.php:200 +msgid "Invite Anyone extends BuddyPress's default group invitation settings. Instead of allowing you to invite only friends to a group, this plugin allows you to invite any member of the site. Use these settings to limit possible invitees for different group roles." +msgstr "ÐаÑтройки по-умолчанию раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Invite Anyone Ð´Ð»Ñ BuddyPress's Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð² группы. Плагин позволÑет приглашать в группы не только друзей, но и пользователей Ñайта. ИÑпользуйте наÑтройки Ð´Ð»Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñти Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð² различные группы по ролÑм." + +#: admin/admin-panel.php:202 +msgid "Site admins can send group invitations to: " +msgstr "ÐдминиÑтратор Ñайта может поÑылать групповые Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ:" + +#: admin/admin-panel.php:204 +#: admin/admin-panel.php:212 +#: admin/admin-panel.php:220 +#: admin/admin-panel.php:228 +msgid "Anyone" +msgstr "Любой" + +#: admin/admin-panel.php:205 +#: admin/admin-panel.php:213 +#: admin/admin-panel.php:221 +#: admin/admin-panel.php:229 +msgid "Friends" +msgstr "ДрузьÑ" + +#: admin/admin-panel.php:206 +#: admin/admin-panel.php:214 +#: admin/admin-panel.php:222 +#: admin/admin-panel.php:230 +msgid "No one" +msgstr "Ðе один" + +#: admin/admin-panel.php:210 +msgid "Group admins can send group invitations to: " +msgstr "ÐдминиÑтратор группы может поÑылать групповые Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ:" + +#: admin/admin-panel.php:218 +msgid "Group mods can send group invitations to: " +msgstr "Модератор группы может поÑылать групповые Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ:" + +#: admin/admin-panel.php:226 +msgid "Group members can send group invitations to: " +msgstr "Пользователь группы может поÑылать групповые Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ:" + +#: by-email/by-email.php:56 +msgid "Opt Out" +msgstr "ОтказатьÑÑ" + +#: by-email/by-email.php:57 +msgid "Accept Invitation" +msgstr "ПринÑтые приглашениÑ" + +#: by-email/by-email.php:61 +#, php-format +msgid "To opt out of future invitations to %s, make sure that your email is entered in the field below and click \"Opt Out\"." +msgstr "Чтобы отказать от приглашений на будущее, %s, введите ваш e-mail и нажмите \"ОтказатьÑÑ\"." + +#: by-email/by-email.php:63 +#, php-format +msgid "If you are here by mistake and would like to accept your invitation to %s, click \"Accept Invitation\" instead." +msgstr "ЕÑли вы оказалиÑÑŒ здеÑÑŒ по ошибка и хотите принÑть приглашение в %s, нажмите \"ПринÑть приглашение\"." + +#: by-email/by-email.php:76 +msgid "You have successfully opted out. No more invitation emails will be sent to you by this site." +msgstr "Ð’Ñ‹ уÑпешно отказалиÑÑŒ. Вам более не будут приходить Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð½Ð° e-mail Ñ Ñтого Ñайта." + +#: by-email/by-email.php:79 +msgid "Sorry, there was an error in processing your request" +msgstr "Извините, произошла ошибка при обработке вашего запроÑа" + +#: by-email/by-email.php:100 +msgid "Email:" +msgstr "E-mail:" + +#: by-email/by-email.php:122 +msgid "It looks like you're trying to accept an invitation to join the site, but some information is missing. Please try again by clicking on the link in the invitation email." +msgstr "Похоже, что вы пытаетеÑÑŒ принÑть приглашение приÑоединитьÑÑ Ðº Ñайту, но Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ÑутÑтвует. ПожалуйÑта, попробуйте еще раз, нажав на ÑÑылку в приглаÑительном пиÑьме." + +#: by-email/by-email.php:164 +#, php-format +msgid "Welcome! You've been invited %s to join the site. Please fill out the information below to create your account." +msgstr "Добро пожаловать! Ð’Ñ‹ приглашены на Ñайт - %s . ПожалуйÑта, заполните Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи на Ñайте!" + +#: by-email/by-email.php:228 +#: by-email/by-email.php:470 +#: group-invites/group-invites.php:83 +#: group-invites/group-invites.php:236 +#: group-invites/group-invites.php:334 +msgid "Send Invites" +msgstr "Отправить приглашениÑ" + +#: by-email/by-email.php:240 +#: by-email/by-email.php:412 +msgid "Invite New Members" +msgstr "ПриглаÑить новых пользователей" + +#: by-email/by-email.php:250 +#: by-email/by-email.php:524 +msgid "Sent Invites" +msgstr "Отправленные приглашениÑ" + +#: by-email/by-email.php:382 +#: widgets/widgets.php:61 +msgid "email address" +msgstr "e-mail адреÑ" + +#: by-email/by-email.php:407 +#, php-format +msgid "Invite friends to join %s by following these steps:" +msgstr "Чтобы приглаÑить друзей в %s, выполните Ñледующие шаги:" + +#: by-email/by-email.php:416 +msgid "Enter email addresses in the fields below." +msgstr "Ðиже введите e-mail." + +#: by-email/by-email.php:416 +msgid "You can only invite people whose email addresses end in one of the following domains:" +msgstr "Ð’Ñ‹ можите приглашать только тех людей у которых e-mail находитÑÑ Ð½Ð° Ñледующих доменах:" + +#: by-email/by-email.php:423 +msgid "(optional) Customize the subject line of the invitation email." +msgstr "(опционально) ÐаÑтроить тему Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°Ñительных e-mail." + +#: by-email/by-email.php:426 +msgid "Subject:" +msgstr "Тема:" + +#: by-email/by-email.php:435 +msgid "(optional) Customize the text of the invitation." +msgstr "(опционально) ÐаÑтройка теÑта приглашениÑ." + +#: by-email/by-email.php:438 +msgid "Message:" +msgstr "Сообщение:" + +#: by-email/by-email.php:443 +msgid "The message will also contain a custom footer containing links to accept the invitation or opt out of further email invitations from this site." +msgstr "Данное Ñообщение будет также Ñодержать ÑÑылки на принÑтие Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ отказаза от приглашений Ñ Ñтого Ñайта." + +#: by-email/by-email.php:449 +msgid "(optional) Select some groups. Invitees will receive invitations to these groups when they join the site." +msgstr "(опционально) Выберите неÑколько групп. Приглашенные получат Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð² Ñти группы когда приÑоединÑÑ‚ÑÑ Ðº Ñайту." + +#: by-email/by-email.php:487 +msgid "Your invitations were sent successfully!" +msgstr "Ваши Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ ÑƒÑпешно отправлены!" + +#: by-email/by-email.php:489 +msgid "Sorry, there was a problem sending your invitations. Please try again." +msgstr "Извините, при отправке приглашений произошла ошибка. Попробуйте еще раз." + +#: by-email/by-email.php:528 +msgid "You have sent invitations to the following people." +msgstr "Ð’Ñ‹ отправили Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ñледующим людÑм:" + +#: by-email/by-email.php:533 +msgid "Invited email address" +msgstr "Приглашенные e-mail" + +#: by-email/by-email.php:534 +msgid "Group invitations" +msgstr "ÐŸÑ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð² группу" + +#: by-email/by-email.php:535 +msgid "Sent" +msgstr "Отправлено" + +#: by-email/by-email.php:536 +msgid "Accepted" +msgstr "ПринÑто" + +#: by-email/by-email.php:546 +msgid "Clear this invitation" +msgstr "Удалить Ñто приглашение" + +#: by-email/by-email.php:579 +msgid "Clear all accepted invitations" +msgstr "Удалить вÑе принÑтые приглашениÑ" + +#: by-email/by-email.php:580 +msgid "Clear all invitations" +msgstr "Удалить вÑе приглашениÑ" + +#: by-email/by-email.php:585 +msgid "You haven't sent any email invitations yet." +msgstr "Ð’Ñ‹ еще не отправлÑли приглашение на e-mail." + +#: by-email/by-email.php:627 +#, php-format +msgid "An invitation to join the %s community." +msgstr "Приглашение приÑоединитьÑÑ Ðº ÑообщеÑтву %s." + +#: by-email/by-email.php:651 +#, php-format +msgid "" +"You have been invited by %%INVITERNAME%% to join the %s community. \\n" +"\\r\\n" +"\\rVisit %%INVITERNAME%%'s profile at %%INVITERURL%%." +msgstr "" +"Ð’Ñ‹ приглашены %%INVITERNAME%% в ÑообщеÑтво %s \\n" +"\\r\\n" +"ПоÑмотрите профайл %%INVITERNAME%%' по ÑÑылке %%INVITERURL%%." + +#: by-email/by-email.php:671 +#, php-format +msgid "To accept this invitation, please visit %%ACCEPTURL%%" +msgstr "Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð½ÑÑ‚Ð¸Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ, пожалуйÑта поÑетите %%ACCEPTURL%%" + +#: by-email/by-email.php:675 +#, php-format +msgid "To opt out of future invitations to this site, please visit %%OPTOUTURL%%" +msgstr "Ð”Ð»Ñ Ð¾Ñ‚ÐºÐ°Ð·Ð° от приглашений Ñ Ñайта, пожалуйÑта поÑетите %%OPTOUTURL%%" + +#: by-email/by-email.php:743 +msgid "You didn't include any email addresses!" +msgstr "Ð’Ñ‹ не можете включать другие e-mail!" + +#: by-email/by-email.php:753 +msgid "Sorry, $email has opted out of email invitations from this site." +msgstr "Извините, $email запрешен Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ приглашений Ñ Ñайта." + +#: by-email/by-email.php:758 +msgid "Sorry, $email is already a registered user of the site. " +msgstr "Извините, но $email принадлежит уже зарегиÑтрированному на Ñайте человеку." + +#: by-email/by-email.php:763 +msgid "Sorry, $email is not a permitted email address." +msgstr "Извините, $email не разрешен." + +#: by-email/by-email.php:768 +msgid "Sorry, $email is not a valid email address. Please make sure that you have typed it correctly." +msgstr "Извините, $email - не правильный адреÑ. Проверьте корректноÑть ввода." + +#: by-email/by-email.php:773 +msgid "Sorry, $email is not a permitted email address. Please make sure that you have typed the domain name correctly." +msgstr "Извините, $email неправильный адреÑ. Проверьте правильноÑть введенного домена." + +#: by-email/by-email.php:779 +msgid "Please remove the email address and try again." +msgstr "ПожалуйÑта удалите e-mail и попробуйте еще раз." + +#: group-invites/group-invites.php:141 +msgid "Group invites sent." +msgstr "Приглашение в групу отправлено." + +#: group-invites/group-invites.php:143 +msgid "Group created successfully." +msgstr "Группа уÑпешно Ñоздана" + +#: group-invites/group-invites.php:176 +#: group-invites/group-invites.php:270 +msgid "Search for members to invite:" +msgstr "ПоиÑк пользователей Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ:" + +#: group-invites/group-invites.php:184 +#: group-invites/group-invites.php:278 +msgid "Select members from the directory:" +msgstr "Выберите пользователей из директории:" + +#: group-invites/group-invites.php:199 +msgid "Select people to invite." +msgstr "Выберите пользователей Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ." + +#: group-invites/group-invites.php:219 +#: group-invites/group-invites.php:315 +#: group-invites/group-invites.php:466 +msgid "Remove Invite" +msgstr "Удалить приглашение" + +#: group-invites/group-invites.php:260 +msgid "Want to invite someone to the group who is not yet a member of the site?" +msgstr "Хотите приглаÑить в группу того кто не ÑвлÑетÑÑ ÑƒÑ‡Ð°Ñтником Ñайта?" + +#: group-invites/group-invites.php:260 +msgid "Send invitations by email." +msgstr "Отправить Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾ e-mail" + +#: group-invites/group-invites.php:295 +msgid "Select people to invite from your friends list." +msgstr "Выберите людей Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ Ð¸Ð· ÑпиÑка друзей." + +#: widgets/widgets.php:44 +#: widgets/widgets.php:101 +msgid "Invite friends to join the site by entering their email addresses below." +msgstr "ПриглаÑите друзей приÑоединитьÑÑ Ðº Ñайту, указав их адреÑа Ñлектронной почты ниже." + +#: widgets/widgets.php:77 +msgid "Continue" +msgstr "Продолжить" + +#: widgets/widgets.php:104 +msgid "Title:" +msgstr "Заголовок:" + +#: widgets/widgets.php:106 +msgid "Text to display in widget:" +msgstr "ТеÑÑ‚ Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² виджете:" + +#: widgets/widgets.php:110 +msgid "Number of email fields to display in widget:" +msgstr "КоличеÑтво e-mail Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² виджете:" + +#. Plugin URI of the plugin/theme +msgid "http://teleogistic.net/code/buddypress/invite-anyone/" +msgstr "" + +#. Description of the plugin/theme +msgid "Allows group admins to invite any BuddyPress member to a group, whether or not they are friends" +msgstr "ПозволÑет админиÑтраторам группы приглаÑить любого члена BuddyPress к группе, незавиÑимо от того ÑвлÑÑŽÑ‚ÑÑ Ð¾Ð½Ð¸ другом или нет" + +#. Author of the plugin/theme +msgid "Boone Gorges" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://teleogistic.net" +msgstr "" + diff --git a/wp-content/plugins/invite-anyone/languages/invite-anyone.pot b/wp-content/plugins/invite-anyone/languages/invite-anyone.pot new file mode 100644 index 0000000..5dc9000 --- /dev/null +++ b/wp-content/plugins/invite-anyone/languages/invite-anyone.pot @@ -0,0 +1,868 @@ +# Copyright (C) 2012 Invite Anyone +# This file is distributed under the same license as the Invite Anyone package. +msgid "" +msgstr "" +"Project-Id-Version: Invite Anyone 1.0.11\n" +"Report-Msgid-Bugs-To: http://wordpress.org/tag/invite-anyone\n" +"POT-Creation-Date: 2012-05-21 12:38:43+00:00\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2012-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" + +#. #-#-#-#-# plugin.pot (Invite Anyone 1.0.11) #-#-#-#-# +#. Plugin Name of the plugin/theme +#: admin/admin-panel.php:5 admin/admin-panel.php:111 widgets/widgets.php:38 +#: widgets/widgets.php:86 +msgid "Invite Anyone" +msgstr "" + +#: admin/admin-panel.php:23 +msgid "Settings" +msgstr "" + +#: admin/admin-panel.php:115 admin/admin-panel.php:194 +msgid "General Settings" +msgstr "" + +#: admin/admin-panel.php:119 +msgid "Access Control" +msgstr "" + +#: admin/admin-panel.php:123 admin/admin-panel.php:175 +msgid "CloudSponge" +msgstr "" + +#: admin/admin-panel.php:127 admin/admin-panel.php:181 +msgid "Manage Invitations" +msgstr "" + +#: admin/admin-panel.php:131 admin/admin-panel.php:187 +msgid "Stats" +msgstr "" + +#: admin/admin-panel.php:145 +msgid "Save Changes" +msgstr "" + +#: admin/admin-panel.php:163 +msgid "Access Settings" +msgstr "" + +#: admin/admin-panel.php:165 +msgid "Allow email invitations to be sent by" +msgstr "" + +#: admin/admin-panel.php:167 +msgid "Limit group invitations" +msgstr "" + +#: admin/admin-panel.php:169 +msgid "Limit per-user invitations" +msgstr "" + +#: admin/admin-panel.php:196 +msgid "Replacement patterns for email text fields" +msgstr "" + +#: admin/admin-panel.php:198 +msgid "Text of email invitation subject line" +msgstr "" + +#: admin/admin-panel.php:200 +msgid "Main text of email invitation message" +msgstr "" + +#: admin/admin-panel.php:202 +msgid "Footer text of email invitation message (not editable by users)" +msgstr "" + +#: admin/admin-panel.php:204 +msgid "Allow users to customize invitation" +msgstr "" + +#: admin/admin-panel.php:206 +msgid "Number of email invitations users are permitted to send at a time" +msgstr "" + +#: admin/admin-panel.php:208 +msgid "Allow users to send group invitations along with email invitations" +msgstr "" + +#: admin/admin-panel.php:210 +msgid "" +"Allow email invitations to be accepted even when site registration is " +"disabled" +msgstr "" + +#: admin/admin-panel.php:222 +msgid "Control the default behavior of Invite Anyone." +msgstr "" + +#: admin/admin-panel.php:230 +msgid "name of your website" +msgstr "" + +#: admin/admin-panel.php:231 +msgid "display name of the inviter" +msgstr "" + +#: admin/admin-panel.php:232 +msgid "URL to the profile of the inviter" +msgstr "" + +#: admin/admin-panel.php:233 +msgid "Link that invited users can click to accept the invitation" +msgstr "" + +#: admin/admin-panel.php:234 +msgid "Link that invited users can click to opt out of future invitations" +msgstr "" + +#: admin/admin-panel.php:279 +msgid "Subject line" +msgstr "" + +#: admin/admin-panel.php:283 +msgid "Message body" +msgstr "" + +#: admin/admin-panel.php:291 +msgid "Control which members are able to send various kinds of invitations." +msgstr "" + +#: admin/admin-panel.php:300 +msgid "All users" +msgstr "" + +#: admin/admin-panel.php:302 +msgid "A limited set of users" +msgstr "" + +#: admin/admin-panel.php:306 +msgid "" +"Only users who have been members of the site for a minimum number of days:" +msgstr "" + +#: admin/admin-panel.php:311 +msgid "Only users who have at least the following role on this blog:" +msgstr "" + +#: admin/admin-panel.php:313 +msgid "Subscriber" +msgstr "" + +#: admin/admin-panel.php:314 +msgid "Contributor" +msgstr "" + +#: admin/admin-panel.php:315 +msgid "Author" +msgstr "" + +#: admin/admin-panel.php:316 +msgid "Editor" +msgstr "" + +#: admin/admin-panel.php:317 +msgid "Administrator" +msgstr "" + +#: admin/admin-panel.php:322 +msgid "" +"Provide a comma-separated list of users (identified by their numerical user " +"ids) who cannot send invitations by email:" +msgstr "" + +#: admin/admin-panel.php:339 +msgid "Limit number of invites per user :" +msgstr "" + +#: admin/admin-panel.php:351 +msgid "" +"Invite Anyone extends BuddyPress's default group invitation settings. " +"Instead of allowing you to invite only friends to a group, this plugin " +"allows you to invite any member of the site. Use these settings to limit " +"possible invitees for different group roles." +msgstr "" + +#: admin/admin-panel.php:353 +msgid "Site admins can send group invitations to: " +msgstr "" + +#: admin/admin-panel.php:355 admin/admin-panel.php:363 +#: admin/admin-panel.php:371 admin/admin-panel.php:379 +msgid "Anyone" +msgstr "" + +#: admin/admin-panel.php:356 admin/admin-panel.php:364 +#: admin/admin-panel.php:372 admin/admin-panel.php:380 +msgid "Friends" +msgstr "" + +#: admin/admin-panel.php:357 admin/admin-panel.php:365 +#: admin/admin-panel.php:373 admin/admin-panel.php:381 +msgid "No one" +msgstr "" + +#: admin/admin-panel.php:361 +msgid "Group admins can send group invitations to: " +msgstr "" + +#: admin/admin-panel.php:369 +msgid "Group mods can send group invitations to: " +msgstr "" + +#: admin/admin-panel.php:377 +msgid "Group members can send group invitations to: " +msgstr "" + +#: admin/admin-panel.php:398 +msgid "" +"CloudSponge is a " +"cool service that gives your users easy and secure access to their address " +"books (Gmail, Yahoo, and a number of other online and desktop email " +"clients), so that they can more easily invite friends to your site. In order " +"to enable CloudSponge support in Invite Anyone and BuddyPress, you'll need " +"to register for a " +"CloudSponge account." +msgstr "" + +#: admin/admin-panel.php:400 +msgid "Enable CloudSponge?" +msgstr "" + +#: admin/admin-panel.php:404 +msgid "CloudSponge Domain Key" +msgstr "" + +#: admin/admin-panel.php:404 +msgid "CloudSponge integration will not work without a valid domain key." +msgstr "" + +#: admin/admin-panel.php:406 +msgid "" +"When you use CloudSponge with Invite Anyone, part of your CloudSponge " +"monthly payment goes to the author of Invite Anyone. This is a great way to " +"support future development of the plugin. Thanks for your support!" +msgstr "" + +#: admin/admin-panel.php:509 by-email/by-email-db.php:98 +msgid "View Invitation" +msgstr "" + +#: admin/admin-panel.php:549 +msgid "(no data)" +msgstr "" + +#: admin/admin-panel.php:573 +msgid "No invitations have been sent yet." +msgstr "" + +#: admin/admin-stats.php:41 +msgid "24 Hours" +msgstr "" + +#: admin/admin-stats.php:44 +msgid "3 Days" +msgstr "" + +#: admin/admin-stats.php:47 +msgid "1 Week" +msgstr "" + +#: admin/admin-stats.php:50 +msgid "4 Weeks" +msgstr "" + +#: admin/admin-stats.php:53 +msgid "3 Months" +msgstr "" + +#: admin/admin-stats.php:56 +msgid "All Time" +msgstr "" + +#: admin/admin-stats.php:163 by-email/by-email-db.php:370 +msgid "Yes" +msgstr "" + +#: admin/admin-stats.php:188 admin/admin-stats.php:196 +#: admin/admin-stats.php:204 +msgid "n/a" +msgstr "" + +#: admin/admin-stats.php:305 +msgid "In the last..." +msgstr "" + +#: admin/admin-stats.php:309 +msgid "Total Sent" +msgstr "" + +#: admin/admin-stats.php:313 +msgid "Total Accepted" +msgstr "" + +#: admin/admin-stats.php:317 +msgid "Acceptance Rate" +msgstr "" + +#: admin/admin-stats.php:321 +msgid "Top Inviter (by #)" +msgstr "" + +#: admin/admin-stats.php:325 +msgid "Top Inviter (by % accepted)" +msgstr "" + +#: admin/admin-stats.php:330 +msgid "Total Sent (CloudSponge)" +msgstr "" + +#: admin/admin-stats.php:334 +msgid "Total Accepted (CloudSponge)" +msgstr "" + +#: admin/admin-stats.php:338 +msgid "Acceptance Rate (CloudSponge)" +msgstr "" + +#: admin/admin-stats.php:342 +msgid "CloudSponge Usage" +msgstr "" + +#: admin/admin-stats.php:346 +msgid "Top Inviter (by #) (CloudSponge)" +msgstr "" + +#: admin/admin-stats.php:350 +msgid "Top Inviter (by % accepted) (CloudSponge)" +msgstr "" + +#: admin/admin-stats.php:378 admin/admin-stats.php:403 +msgid "(%d sent)" +msgstr "" + +#: admin/admin-stats.php:382 admin/admin-stats.php:407 +msgid "(%s accepted)" +msgstr "" + +#: by-email/by-email-db.php:92 +msgctxt "post type general name" +msgid "BuddyPress Invitations" +msgstr "" + +#: by-email/by-email-db.php:93 +msgctxt "post type singular name" +msgid "Invitation" +msgstr "" + +#: by-email/by-email-db.php:94 +msgctxt "add new" +msgid "Add New" +msgstr "" + +#: by-email/by-email-db.php:95 +msgid "Add New Invitation" +msgstr "" + +#: by-email/by-email-db.php:96 +msgid "Edit Invitation" +msgstr "" + +#: by-email/by-email-db.php:97 +msgid "New Invitation" +msgstr "" + +#: by-email/by-email-db.php:99 +msgid "Search Invitation" +msgstr "" + +#: by-email/by-email-db.php:100 +msgid "No Invitations found" +msgstr "" + +#: by-email/by-email-db.php:101 +msgid "No Invitations found in Trash" +msgstr "" + +#: by-email/by-email-db.php:107 +msgid "BuddyPress Invitations" +msgstr "" + +#: by-email/by-email-db.php:119 by-email/by-email-db.php:132 +msgid "Invitees" +msgstr "" + +#: by-email/by-email-db.php:120 by-email/by-email-db.php:127 +msgid "Invitee" +msgstr "" + +#: by-email/by-email-db.php:121 +msgid "Search Invitees" +msgstr "" + +#: by-email/by-email-db.php:122 +msgid "All Invitees" +msgstr "" + +#: by-email/by-email-db.php:123 +msgid "Edit Invitee" +msgstr "" + +#: by-email/by-email-db.php:124 +msgid "Update Invitee" +msgstr "" + +#: by-email/by-email-db.php:125 +msgid "Add New Invitee" +msgstr "" + +#: by-email/by-email-db.php:126 +msgid "New Invitee Name" +msgstr "" + +#: by-email/by-email-db.php:140 by-email/by-email-db.php:153 +msgid "Invited Groups" +msgstr "" + +#: by-email/by-email-db.php:141 by-email/by-email-db.php:148 +msgid "Invited Group" +msgstr "" + +#: by-email/by-email-db.php:142 +msgid "Search Invited Groups" +msgstr "" + +#: by-email/by-email-db.php:143 +msgid "All Invited Groups" +msgstr "" + +#: by-email/by-email-db.php:144 +msgid "Edit Invited Group" +msgstr "" + +#: by-email/by-email-db.php:145 +msgid "Update Invited Group" +msgstr "" + +#: by-email/by-email-db.php:146 +msgid "Add New Invited Group" +msgstr "" + +#: by-email/by-email-db.php:147 +msgid "New Invited Group Name" +msgstr "" + +#: by-email/by-email-db.php:370 +msgid "No" +msgstr "" + +#: by-email/by-email-db.php:917 +msgid "All done!" +msgstr "" + +#: by-email/by-email-db.php:919 +msgid "Finish" +msgstr "" + +#: by-email/by-email-db.php:957 +msgid "Migrated Invitation" +msgstr "" + +#: by-email/by-email-db.php:977 +msgid "Importing: %1$s invited %2$s
              " +msgstr "" + +#: by-email/by-email-db.php:988 +msgid "" +"If your browser doesn’t start loading the next page automatically, " +"click this link:" +msgstr "" + +#: by-email/by-email-db.php:988 +msgid "Next Invitations" +msgstr "" + +#: by-email/by-email-db.php:1016 +msgid "Invite Anyone Upgrade" +msgstr "" + +#: by-email/by-email-db.php:1019 +msgid "" +"Invite Anyone has just been updated, and needs to move some old invitation " +"data in order to complete the upgrade. Click GO to start the process." +msgstr "" + +#: by-email/by-email.php:69 +msgid "Opt Out" +msgstr "" + +#: by-email/by-email.php:70 +msgid "Accept Invitation" +msgstr "" + +#: by-email/by-email.php:74 +msgid "" +"To opt out of future invitations to %s, make sure that your email is entered " +"in the field below and click \"Opt Out\"." +msgstr "" + +#: by-email/by-email.php:76 +msgid "" +"If you are here by mistake and would like to accept your invitation to %s, " +"click \"Accept Invitation\" instead." +msgstr "" + +#: by-email/by-email.php:89 +msgid "" +"You have successfully opted out. No more invitation emails will be sent to " +"you by this site." +msgstr "" + +#: by-email/by-email.php:92 +msgid "Sorry, there was an error in processing your request" +msgstr "" + +#: by-email/by-email.php:118 +msgid "Email:" +msgstr "" + +#: by-email/by-email.php:140 +msgid "" +"It looks like you're trying to accept an invitation to join the site, but " +"some information is missing. Please try again by clicking on the link in the " +"invitation email." +msgstr "" + +#: by-email/by-email.php:185 +msgid "" +"Welcome! You've been invited %s to join the site. Please fill out the " +"information below to create your account." +msgstr "" + +#: by-email/by-email.php:273 by-email/by-email.php:631 +#: group-invites/group-invites.php:59 +#: group-invites/templates/invite-anyone.php:87 +#: group-invites/templates/invite-anyone.php:176 +msgid "Send Invites" +msgstr "" + +#: by-email/by-email.php:285 by-email/by-email.php:471 +#: by-email/by-email.php:534 +msgid "Invite New Members" +msgstr "" + +#: by-email/by-email.php:295 by-email/by-email.php:692 +msgid "Sent Invites" +msgstr "" + +#: by-email/by-email.php:417 +msgid "Invitation cleared" +msgstr "" + +#: by-email/by-email.php:419 +msgid "There was a problem clearing the invitation." +msgstr "" + +#: by-email/by-email.php:422 +msgid "Invitations cleared." +msgstr "" + +#: by-email/by-email.php:424 +msgid "There was a problem clearing the invitations." +msgstr "" + +#: by-email/by-email.php:473 +msgid "You have sent the maximum allowed number of invitations." +msgstr "" + +#: by-email/by-email.php:523 +msgid "" +"Some of your invitations were not sent. Please see the errors below and " +"resubmit the failed invitations." +msgstr "" + +#: by-email/by-email.php:529 +msgid "Invite friends to join %s by following these steps:" +msgstr "" + +#: by-email/by-email.php:552 +msgid "" +"The site administrator has limited each user to %1$d invitations. You have " +"%2$d invitations remaining." +msgstr "" + +#: by-email/by-email.php:570 +msgid "Enter email addresses below, one per line." +msgstr "" + +#: by-email/by-email.php:570 +msgid "" +"You can only invite people whose email addresses end in one of the following " +"domains:" +msgstr "" + +#: by-email/by-email.php:582 +msgid "(optional) Customize the subject line of the invitation email." +msgstr "" + +#: by-email/by-email.php:585 +msgid "Subject: Subject line is fixed" +msgstr "" + +#: by-email/by-email.php:594 +msgid "(optional) Customize the text of the invitation." +msgstr "" + +#: by-email/by-email.php:597 +msgid "Message:" +msgstr "" + +#: by-email/by-email.php:602 +msgid "" +"The message will also contain a custom footer containing links to accept the " +"invitation or opt out of further email invitations from this site." +msgstr "" + +#: by-email/by-email.php:609 +msgid "" +"(optional) Select some groups. Invitees will receive invitations to these " +"groups when they join the site." +msgstr "" + +#: by-email/by-email.php:648 +msgid "Sorry, there was a problem sending your invitations. Please try again." +msgstr "" + +#: by-email/by-email.php:699 +msgid "You have sent invitations to the following people." +msgstr "" + +#: by-email/by-email.php:712 +msgid "" +"This table displays a list of all your sent invites.\n" +"\t\t\tInvites that have been accepted are highlighted in the listings.\n" +"\t\t\tYou may clear any individual invites, all accepted invites or all of " +"the invites from the list." +msgstr "" + +#: by-email/by-email.php:718 +msgid "Invited email address" +msgstr "" + +#: by-email/by-email.php:719 +msgid "Group invitations" +msgstr "" + +#: by-email/by-email.php:720 +msgid "Sent" +msgstr "" + +#: by-email/by-email.php:721 +msgid "Accepted" +msgstr "" + +#: by-email/by-email.php:729 +msgid "Clear all accepted invites from the list" +msgstr "" + +#: by-email/by-email.php:729 +msgid "Clear all accepted invitations" +msgstr "" + +#: by-email/by-email.php:730 +msgid "Clear all your listed invites" +msgstr "" + +#: by-email/by-email.php:730 +msgid "Clear all invitations" +msgstr "" + +#: by-email/by-email.php:755 +msgid "Clear this invitation" +msgstr "" + +#: by-email/by-email.php:809 +msgid "You haven't sent any email invitations yet." +msgstr "" + +#: by-email/by-email.php:842 +msgid "An invitation to join the %s community." +msgstr "" + +#: by-email/by-email.php:867 +msgid "" +"You have been invited by %%INVITERNAME%% to join the %s community.\n" +"\n" +"Visit %%INVITERNAME%%'s profile at %%INVITERURL%%." +msgstr "" + +#: by-email/by-email.php:890 +msgid "To accept this invitation, please visit %%ACCEPTURL%%" +msgstr "" + +#: by-email/by-email.php:894 +msgid "" +"To opt out of future invitations to this site, please visit %%OPTOUTURL%%" +msgstr "" + +#: by-email/by-email.php:1051 +msgid "" +"You are only allowed to invite up to %s people at a time. Please remove some " +"addresses and try again" +msgstr "" + +#: by-email/by-email.php:1059 +msgid "You didn't include any email addresses!" +msgstr "" + +#: by-email/by-email.php:1070 +msgid "" +"You are only allowed to invite %s more people. Please remove some addresses " +"and try again" +msgstr "" + +#: by-email/by-email.php:1089 +msgid "%s has opted out of email invitations from this site." +msgstr "" + +#: by-email/by-email.php:1093 +msgid "%s is already a registered user of the site." +msgstr "" + +#: by-email/by-email.php:1097 +msgid "%s is not a permitted email address." +msgstr "" + +#: by-email/by-email.php:1101 +msgid "" +"%s is not a valid email address. Please make sure that you " +"have typed it correctly." +msgstr "" + +#: by-email/by-email.php:1105 +msgid "" +"%s is not a permitted email address. Please make sure that " +"you have typed the domain name correctly." +msgstr "" + +#: by-email/by-email.php:1164 +msgid "Invitations were sent successfully to the following email addresses: %s" +msgstr "" + +#: by-email/by-email.php:1170 +msgid "Please correct your errors and resubmit." +msgstr "" + +#: by-email/by-email.php:1218 +msgid "We couldn't find any invitations associated with this email address." +msgstr "" + +#: by-email/cloudsponge-integration.php:71 +msgid "" +"You can also add email addresses from your Address " +"Book." +msgstr "" + +#: group-invites/group-invites.php:89 group-invites/group-invites.php:132 +#: group-invites/group-invites.php:161 +msgid "Group invites sent." +msgstr "" + +#: group-invites/group-invites.php:134 +msgid "Group created successfully." +msgstr "" + +#: group-invites/group-invites.php:354 +#: group-invites/templates/invite-anyone.php:70 +#: group-invites/templates/invite-anyone.php:157 +msgid "Remove Invite" +msgstr "" + +#: group-invites/templates/invite-anyone.php:27 +#: group-invites/templates/invite-anyone.php:115 +msgid "Search for members to invite:" +msgstr "" + +#: group-invites/templates/invite-anyone.php:35 +#: group-invites/templates/invite-anyone.php:123 +msgid "Select members from the directory:" +msgstr "" + +#: group-invites/templates/invite-anyone.php:50 +msgid "Select people to invite." +msgstr "" + +#: group-invites/templates/invite-anyone.php:107 +msgid "" +"Want to invite someone to the group who is not yet a member of the site?" +msgstr "" + +#: group-invites/templates/invite-anyone.php:107 +msgid "Send invitations by email." +msgstr "" + +#: group-invites/templates/invite-anyone.php:137 +msgid "Select people to invite from your friends list." +msgstr "" + +#: lib/bbg-cpt-pag.php:200 +msgid "Viewing %1$d - %2$d of a total of %3$d" +msgstr "" + +#: lib/bbg-cpt-pag.php:221 +msgid "«" +msgstr "" + +#: lib/bbg-cpt-pag.php:222 +msgid "»" +msgstr "" + +#: widgets/widgets.php:41 +msgid "Enter one email address per line to invite friends to join this site." +msgstr "" + +#: widgets/widgets.php:68 +msgid "Continue" +msgstr "" + +#: widgets/widgets.php:92 +msgid "" +"Invite friends to join the site by entering their email addresses below." +msgstr "" + +#: widgets/widgets.php:95 +msgid "Title:" +msgstr "" + +#: widgets/widgets.php:97 +msgid "Text to display in widget:" +msgstr "" + +#: widgets/widgets.php:101 +msgid "Number of email fields to display in widget:" +msgstr "" + +#. Plugin URI of the plugin/theme +msgid "http://teleogistic.net/code/buddypress/invite-anyone/" +msgstr "" + +#. Description of the plugin/theme +msgid "" +"Allows group admins to invite any member of their BuddyPress community to a " +"group or to the site" +msgstr "" + +#. Author of the plugin/theme +msgid "Boone Gorges" +msgstr "" + +#. Author URI of the plugin/theme +msgid "http://boone.gorg.es" +msgstr "" diff --git a/wp-content/plugins/invite-anyone/lib/bbg-cpt-pag.php b/wp-content/plugins/invite-anyone/lib/bbg-cpt-pag.php new file mode 100644 index 0000000..7e906da --- /dev/null +++ b/wp-content/plugins/invite-anyone/lib/bbg-cpt-pag.php @@ -0,0 +1,237 @@ +__construct(); + } + + /** + * PHP 5 constructor + * + * @package BBG CPT Pag + * @since 1.0 + */ + function __construct( $query = false ) { + // Set up the $_GET keys (which are customizable) + $this->setup_get_keys(); + + // Get the pagination parameters out of $_GET + $this->setup_get_params(); + } + + /** + * Sets up query vars. + * + * I recommend that you instantiate this class right away when you start rendering the page, + * so that it can do some of the $_GET argument parsing for you, which you can use to + * construct your CPT query (query_posts() or new WP_Query). Then, after you have made the + * query, call this function manually, in order to populate the class with query-specific + * data. + * + * If you use query_posts() to construct the query, there's no need to pass along a $query + * parameter - the function will simply look inside of the $wp_query global. However, if + * you use WP_Query to run your query (so that the data is not in $wp_query), you should + * pass your query object along to setup_query(). + * + * @package BBG CPT Pag + * @since 1.0 + */ + function setup_query( $query = false ) { + global $wp_query; + + if ( !$query ) + $query =& $wp_query; + + $this->query = $query; + + // Get the total number of items + $this->setup_total_items(); + + // Get the total number of pages + $this->setup_total_pages(); + } + + /** + * Sets up the $_GET param keys. + * + * You can either override this function in your own extended class, or filter the default + * values. I have provided both options because I love you so very much. + * + * @package BBG CPT Pag + * @since 1.0 + */ + function setup_get_keys() { + $this->get_per_page_key = apply_filters( 'bbg_cpt_pag_per_page_key', 'per_page' ); + $this->get_paged_key = apply_filters( 'bbg_cpt_pag_paged_key', 'paged' ); + } + + /** + * Gets params out of $_GET global + * + * Does some basic checks to ensure that the values are integers and that they are non-empty + * + * @package BBG CPT Pag + * @since 1.0 + */ + function setup_get_params() { + // Per page + $per_page = isset( $_GET[$this->get_per_page_key] ) ? $_GET[$this->get_per_page_key] : 10; + + // Basic per_page sanity and security + if ( !(int)$per_page ) + $per_page = 10; + + $this->get_per_page = $per_page; + + // Page number + $paged = isset( $_GET[$this->get_paged_key] ) ? $_GET[$this->get_paged_key] : 1; + + // Basic paged sanity and security + if ( !(int)$paged ) + $paged = 1; + + $this->get_paged = $paged; + } + + /** + * Get the total number of items out of the query + * + * @package BBG CPT Pag + * @since 1.0 + */ + function setup_total_items() { + $this->total_items = $this->query->found_posts; + } + + /** + * Get the total number of pages out of the query + * + * @package BBG CPT Pag + * @since 1.0 + */ + function setup_total_pages() { + $this->total_pages = $this->query->max_num_pages; + } + + /** + * Get the start number for the current view (ie "Viewing *5* - 8 of 12") + * + * Here's the math: Subtract one from the current page number; multiply times posts_per_page + * to get the last post on the previous page; add one to get the start for this page. + * + * @package BBG CPT Pag + * @since 1.0 + * + * @return int $start The start number + */ + function get_start_number() { + $start = ( ( $this->get_paged - 1 ) * $this->get_per_page ) + 1; + + return $start; + } + + /** + * Get the end number for the current view (ie "Viewing 5 - *8* of 12") + * + * Here's the math: Multiply the posts_per_page by the current page number. If it's the last + * page (ie if the result is greater than the total number of docs), just use the total doc + * count + * + * @package BBG CPT Pag + * @since 1.0 + * + * @return int $end The start number + */ + function get_end_number() { + global $wp_query; + + $end = $this->get_paged * $this->get_per_page; + + if ( $end > $this->total_items ) + $end = $this->total_items; + + return $end; + } + + /** + * Return or echo the "Viewing x-y of z" message + * + * @package BBG CPT Pag + * @since 1.0 + * + * @param str $type Optional. 'echo' will echo the results, anything else will return them + * @return str $page_links The "viewing" text + */ + function currently_viewing_text( $type = 'echo' ) { + $start = $this->get_start_number(); + $end = $this->get_end_number(); + + $string = sprintf( __( 'Viewing %1$d - %2$d of a total of %3$d', 'bbg-cpt-pag' ), $start, $end, $this->total_items ); + + if ( 'echo' == $type ) + echo $string; + else + return $string; + } + + /** + * Return or echo the pagination links + * + * @package BBG CPT Pag + * @since 1.0 + * + * @param str $type Optional. 'echo' will echo the results, anything else will return them + * @return str $page_links The pagination links + */ + function paginate_links( $type = 'echo' ) { + $page_links = paginate_links( array( + 'base' => add_query_arg( $this->get_paged_key, '%#%' ), + 'format' => '', + 'prev_text' => __( '«' ), + 'next_text' => __( '»' ), + 'total' => $this->total_pages, + 'current' => $this->get_paged, + 'add_args' => array( $this->get_per_page_key => $this->get_per_page ) + )); + + if ( 'echo' == $type ) + echo $page_links; + else + return $page_links; + } +} + +endif; + +?> \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/lib/bbg-cpt-sort.php b/wp-content/plugins/invite-anyone/lib/bbg-cpt-sort.php new file mode 100644 index 0000000..4aa4e2d --- /dev/null +++ b/wp-content/plugins/invite-anyone/lib/bbg-cpt-sort.php @@ -0,0 +1,300 @@ +__construct( $cols ); + } + + /** + * PHP 5 constructor + * + * @package Boone's Sortable Columns + * @since 1.0 + * + * $columns should be an array of arrays. That is, an array of args for each column. See + * $defaults below for an explanation of these arrays. + */ + function __construct( $cols = false ) { + $defaults = array( + 'name' => false, + 'title' => false, + 'is_sortable' => true, + 'css_class' => false, + 'default_order' => 'asc', + 'posts_column' => false, + 'is_default' => false + ); + + $this->columns = array(); + $this->sortable_keys = array(); + + foreach( $cols as $col ) { + // You need at least a name and a title to continue + if ( empty( $col['name'] ) || empty( $col['title'] ) ) + continue; + + $r = wp_parse_args( $col, $defaults ); + + // If the css_class is not set, just use the name param + if ( empty( $r['css_class'] ) ) + $r['css_class'] = $r['name']; + + // Check to see whether this is a default. Providing more than one default + // will mean that the last one overrides the others + if ( !empty( $r['is_default'] ) ) + $this->default_orderby = $r['name']; + + // Compare the default order against a whitelist of 'asc' and 'desc' + if ( 'asc' == strtolower( $r['default_order'] ) || 'desc' == strtolower( $r['default_order'] ) ) { + $r['default_order'] = strtolower( $r['default_order'] ); + } else { + $r['default_order'] = 'asc'; + } + + // If it's sortable, add the name to the $sortable_keys array + if ( $r['is_sortable'] ) + $this->sortable_keys[] = $r['name']; + + // Convert to an object for maximum prettiness + $col_obj = new stdClass; + + foreach( $r as $key => $value ) { + $col_obj->$key = $value; + } + + $this->columns[] = $col_obj; + } + + // Now, set up some values for the loop + $this->column_count = count( $this->columns ); + $this->current_column = -1; + + // If a default orderby was not found, just choose the first item in the array + if ( empty( $this->default_orderby ) && !empty( $cols[0]['name'] ) ) { + $this->default_orderby = $cols[0]['name']; + } + + // Set up the $_GET keys (which are customizable) + $this->setup_get_keys(); + + // Get the pagination parameters out of $_GET + $this->setup_get_params(); + + // Set up the next orders (asc or desc) depending on current state + $this->setup_next_orders(); + } + + /** + * Sets up the $_GET param keys. + * + * You can either override this function in your own extended class, or filter the default + * values. I have provided both options because I love you so very much. + * + * @package Boone's Sortable Columns + * @since 1.0 + */ + function setup_get_keys() { + $this->get_orderby_key = apply_filters( 'bbg_cpt_sort_orderby_key', 'orderby' ); + $this->get_order_key = apply_filters( 'bbg_cpt_sort_order_key', 'order' ); + } + + /** + * Gets params out of $_GET global + * + * Does some basic checks to ensure that the values are integers and that they are non-empty + * + * @package Boone's Sortable Columns + * @since 1.0 + */ + function setup_get_params() { + // Orderby + $orderby = isset( $_GET[$this->get_orderby_key] ) ? $_GET[$this->get_orderby_key] : false; + + // If an orderby param is provided, check to see that it's permitted. + // Otherwise set the current orderby to the default + if ( $orderby && in_array( $orderby, $this->sortable_keys ) ) { + $this->get_orderby = $orderby; + } else { + $this->get_orderby = $this->default_orderby; + } + + // Order + $order = isset( $_GET[$this->get_order_key] ) ? $_GET[$this->get_order_key] : false; + + // If an order is provided, make sure it's either 'desc' or 'asc' + // Otherwise set current order to the orderby's default order + if ( $order && ( 'desc' == strtolower( $order ) || 'asc' == strtolower( $order ) ) ) { + $order = strtolower( $order ); + } else { + // Loop through to find the default order for this bad boy + // This is not optimized because of the way the array is keyed + foreach( $this->columns as $col ) { + if ( $col->name == $this->get_orderby ) { + $order = $col->default_order; + break; + } + } + } + + // There should only be two options, 'asc' and 'desc'. We'll cut some slack for + // uppercase variants + $order = 'desc' == strtolower( $order ) ? 'desc' : 'asc'; + + $this->get_order = $order; + } + + function setup_next_orders() { + foreach( $this->columns as $name => $col ) { + if ( $col->name == $this->get_orderby ) { + $current_order = $this->get_order; + } else { + $current_order = $col->default_order; + } + + $this->columns[$name]->next_order = 'asc' == $current_order ? 'desc' : 'asc'; + } + } + + function have_columns() { + // Compare against the column_count - 1 to account for the 0 array index shift + if ( $this->column_count && $this->current_column < $this->column_count - 1 ) + return true; + + return false; + } + + function next_column() { + $this->current_column++; + $this->column = $this->columns[$this->current_column]; + + return $this->column; + } + + function rewind_columns() { + $this->current_column = -1; + if ( $this->column_count > 0 ) { + $this->column = $this->columns[0]; + } + } + + function the_column() { + $this->in_the_loop = true; + $this->column = $this->next_column(); + + if ( 0 == $this->current_column ) // loop has just started + do_action('loop_start'); + } + + function the_column_css_class( $type = 'echo' ) { + // The column-identifying class + $class = array( $this->column->css_class ); + + // Sortable logic + if ( $this->column->is_sortable ) { + // Add the sorted/sortable class, based on whether this is the current sort + if ( $this->column->name == $this->get_orderby ) { + $class[] = 'sorted'; + $class[] = $this->get_order; + } else { + $class[] = 'sortable'; + $class[] = $this->column->next_order; + } + } + + $class = implode( ' ', $class ); + + if ( 'echo' == $type ) + echo $class; + else + return $class; + } + + function the_column_next_link( $type = 'echo', $html_or_url = 'html' ) { + $args = array( + $this->get_orderby_key => $this->column->name, + $this->get_order_key => $this->column->next_order + ); + + $url = add_query_arg( $args ); + + // Assemble the html link, if necessary + if ( 'html' == $html_or_url ) { + $html = sprintf( '%3$s', $this->column->name, $url, $this->the_column_title( 'return' ) ); + + $link = $html; + } else { + $link = $url; + } + + if ( 'echo' == $type ) + echo $link; + else + return $link; + } + + function the_column_title( $type = 'echo' ) { + $name = $this->column->title; + + if ( 'echo' == $type ) + echo $name; + else + return $name; + } + + function the_column_th( $type = 'echo' ) { + if ( $this->column->is_sortable ) { + $td_content = sprintf( '%2$s', $this->the_column_next_link( 'return', 'url' ), $this->the_column_title( 'return' ) ); + } else { + $td_content = $this->the_column_title( 'return' ); + + } + + $html = sprintf( '%2$s', $this->the_column_css_class( 'return' ), $td_content ); + + if ( 'echo' == $type ) + echo $html; + else + return $html; + } +} + +endif; + +?> \ No newline at end of file diff --git a/wp-content/plugins/invite-anyone/readme.txt b/wp-content/plugins/invite-anyone/readme.txt new file mode 100644 index 0000000..675e32b --- /dev/null +++ b/wp-content/plugins/invite-anyone/readme.txt @@ -0,0 +1,268 @@ +=== Plugin Name === +Contributors: boonebgorges, cuny-academic-commons +Donate link: http://teleogistic.net/donate +Tags: buddypress, invitations, group, invite, friends, members +Requires at least: WP 3.2, BuddyPress 1.2.9 +Tested up to: WP 3.3.2, BuddyPress 1.5.5 +Stable tag: 1.0.14 + +Makes BuddyPress's invitation features more powerful. + +== Description == + +Invite Anyone has two components: + +1) The ability to invite members to the site by email. The plugin creates a tab on each member's Profile page called "Send Invites", which contains a form where users can invite outsiders to join the site. There is a field for a custom message. Also, inviters can optionally select any number of their groups, and when the invitee accepts the invitation he or she automatically receive invitations to join those groups. + +The email invitation part of the plugin is customizable by the BP administrator, via Dashboard > BuddyPress > Invite Anyone. + +2) By default, BuddyPress only allows group admins to invite their friends to groups. In some communities, you might want members to be able to invite non-friends to groups as well. This plugin allows you to do so, by populating the invitation checklist with the entire membership of the site, rather than just a friend list. + +Because member lists can get very long and hard to navigate, this plugin adds a autosuggest search box to the Send Invites screen - the same one that appears on the Compose Message screen - which allows inviters to navigate directly to the members they want to invite. + +Invite Anyone features optional integration with CloudSponge http://cloudsponge.com, a premium address book service, that allows your users to invite their friends to the site in a way that's easy and fun. Enable it at Dashboard > BuddyPress > Invite Anyone. + +== Installation == + +* Upload the directory '/invite-anyone/' to your WP plugins directory and activate from the Dashboard of the main blog. Some users have reported problems when activating the plugin sitewide, so consider activating it on the BP blog only. +* Configure the plugin at Dashboard > BuddyPress > Invite Anyone, where you can customize the default invitation message, determine which members are allowed to invite by email, and more. If you are running WordPress Multisite version 3.1 or greater, BuddyPress Dashboard panels are found in the Network Admin area. +* If you are upgrading from a version of Invite Anyone older than 0.8, your data will be migrated from a custom database table (usually wp_bp_invite_anyone) to WordPress custom post types. After upgrading, if you are satisfied that the automatic migration has gone successfully, you can safely archive and remove the wp_bp_invite_anyone table from your database. + +== Translation credits == + +* Dutch: Jesper Popma +* French: Guillaume Coulon, Nicolas Mollet +* German: Lars Berning, Thorsten Wollenhöfer +* Greek: Lena Stergatou +* Italian: Luca Camellini +* Norwegian: Stig Ulfsby +* Russian: Jettochkin +* Spanish: Mauricio Camayo, Gregor Gimmy +* Belarussian: Alexander Ovsov (Web Geek Science) + +== Changelog == + += 1.0.14 = +* Prevents call-by-reference errors on PHP 5.4 setups + += 1.0.13 = +* Prevents fatal errors on activation in some setups, by changing where the upgrade process is run + += 1.0.12 = +* Ensure that spammed/inactive users are not returned by group invite autocomplete +* Updates German translation + += 1.0.11 = +* Adds per-user invitation limit option. Props Jeradin +* Reworks the way that returned_data is returned, to avoid 'headers already sent' errors + += 1.0.10 = +* Updates French translation. Props Nicolas Mollet + += 1.0.9 = +* Fixes some annoying PHP notices + += 1.0.8 = +* Yet another attempt at fixing activation problem +* Adds Belarussian translation. Props Alexander Ovsov + += 1.0.7 = +* Another attempt at fixing problem that some users are having when activating plugin + += 1.0.6 = +* Fixes bug that showed invitation message on registration screen when no invitation was found +* Fixes bug that allowed users to bypass registration lock on some setups +* Fixes some PHP notices + += 1.0.5 = +* Adds filters to some settings fields +* Removes repeated sent_email_invite action +* Adds updated Spanish translation + += 1.0.4 = +* Fixes errant autocomplete for group invitations +* Prevents 404s for shadow image in autocomplet. Props defunctl +* Fixes issue with Remove Invite link for items added with AJAX. Props defunctl + += 1.0.3 = +* Removes unneeded code block. Props defunctl + += 1.0.2 = +* Fixes syntax error that caused "invalid header" errors when activated on some setups + += 1.0.1 = +* Fixes problem that prevented settings from being saved properly on 1.2.x +* Fixes Settings link on Plugins page + += 1.0 = +* Compatibility with BuddyPress 1.5 +* Rewritten autocomplete script for group invitations +* Adds Spanish translation + += 0.9.3 = +* Fixed some PHP warnings on Manage Invitations and Stats panels +* Added a 'no invitations' message to Manage Invitations when none have been sent yet + += 0.9.2 = +* Fixed bug that caused settings from being properly saved in some cases + += 0.9.1 = +* Updated .pot file for translators + += 0.9 = +* Revamped admin screens, including admin view of all sent invites and stats about invitations +* Improved support for sorting by accepted date and by email address +* Pagination added to Sent Invites screen +* Fixed bug that caused Send Invites button to appear incorrectly on group create screen in some cases +* Fixed bug that caused group create form not to submit in some browsers + += 0.8.9 = +* Fixed bug that made Cloudsponge scripts load even when CS integration was turned off +* Fixed bug that prevented Cloudsponge authorization to happen because of a problem in script loading order +* Cleaned up markup in the admin panel + += 0.8.8 = +* Added an icon to the custom post type. Props Bowe for whipping it up +* Fixed bug that caused sent invites to be recorded as sent at GMT rather than properly offset for time zone +* Refactored the widget to use a single email box, like the regular invites page +* Put the CloudSponge link into the widget + += 0.8.7 = +* Fixed bug where an undeclared global was causing the custom post type not to be loaded on multisite installations + += 0.8.6 = +* Fixed bug that made update nav appear on non-root-blogs of Multisite installations +* Fixed bug that made CPT register on non-root-blogs on Multisite, which meant that there was a confusing empty BuddyPress Invitations section + += 0.8.5 = +* Moved group invitations tab content into a separate template file so that it can be easily overridden in a theme (with a file at [theme]/groups/single/invite-anyone.php). + += 0.8.4 = +* Fixed bug that caused update nag to show after updating options in some cases + += 0.8.3 = +* Improved support for migrating large numbers of legacy invitations + += 0.8.2 = +* Adds German translation - props Lars Berning + += 0.8.1 = +* Fixes the way admin menus are hooked to ensure compatibility with WP Multisite < 3.1 and BP < 1.2.8 + += 0.8 = +* Integration with CloudSponge, which allows users to pull email addresses from their address books for sending email invitations +* Sent invitation data has been converted to custom post types, which gives admins an easy way to manage invitations from the WP Dashboard + += 0.7.1 = +* Norwegian translation added - props Stig Ulfsby +* Greek translation added - props Lena Stergatou +* Fixed bug that made group creation bypass IA settings +* Fixed bug that broke the way that the BP core (friends only) tab rendered + += 0.7 = +* Big markup improvements to email invitations screens - huge props hnla +* Toggle to allow email invitation and registration when general registration is turned off + += 0.6.7 = +* Added hooks to provide support for Achievements +* Improved checking for deactivated components +* BuddyPress Followers support + += 0.6.6 = +* Updated hooks to work with more recent versions of BuddyPress +* Increased number of results returned to user on group invite autocomplete + += 0.6.5 = +* Workaround for "headers already sent" issue on group invites +* Fixed a number of variable type problems with email invitation pages + += 0.6.4 = +* Fixed bug that kept item group invitations from being sent +* Fixed bug that prevented Send Invites profile tab from being hidden when access control was set to Administrator + += 0.6.3 = +* Fixed bug that showed non-activated users in group invitation list on some instances of single WP +* Fixed bug that limited number of displayed groups on invite by email screen +* Cleaned up the appearance of the group list on the invite by email screen +* Fixed bug that may have cause foreach problem in email invitation + += 0.6.2 = +* Fixed bug that kept group invitation member list from being populated on some non-MU setups +* Fixed bug that kept non-admins from seeing Send Invites group tab +* Fixed bug that prevented JS and CSS from loading on invitation step in group creation +* Fixed bug that caused email fields not to load properly in IE - thanks, techguy! +* Added do_action hooks for other plugins (eg Cubepoints) to access +* Added filter on acceptance URL and action hook before accept invitation screen for plugins to access + += 0.6.1 = +* Added checks to allow email invitations to work when groups component is disabled +* Fixed l18n bugs with error messages +* French translation added - thanks, Guillaume! +* Russian translation added - thanks, Jettochkin! +* Updated translations + += 0.6 = +* Plugin now includes a widget for email invitation from any page +* Sent Invites sortable by email address, date invited, date accepted +* Invites can be cleared from Sent Invites list: individually, all accepted, all invitations +* Created admin controls over who group admins/mods/members can invite to groups +* Admins can now allow customization of invitation's main message but still have control over a non-editable footer +* CSS issues fixed + += 0.5.2 = +* Added Italian translation (thanks, Luca!) +* Removed "Want to invite..." prompt from Send Invites screen during group creation +* Attempted a fix for certain in_array errors in css/js loader file + += 0.5.1 = +* Fixed bug with subject/message content when email is returned as an error +* Fixed error with email error messages when no groups were selected +* Changed width of textareas on Invite New Members tab + += 0.5 = +* Enabled Opt Out option for invitees +* Subject line is now customizable by the admin +* Admin can toggle whether users can customize subject line and message body of invitation emails +* Some localization bugs fixed +* Filtered spammers from group invitation list +* Fixed bug that may have caused problems with some MU limited email domain lists +* Email Address field is now auto-populated on Accept Invitation screen +* Created admin toggle for group invites attached to email screen +* Added hook for additional fields on Invite New Members screen (as well as a hook for processing the additional data) + += 0.4.1 = +* Fixed problem with email validation causing fatal errors on single WP +* Fixed bug that allows members to see Send Invites tab on profiles other than their own + += 0.4 = +* New feature: Invite by email from new Send Invites profile tab +* Links from group invite pages to Invite By Email page +* Removed "Send Invites" button during group creation + += 0.3.5 = +* Corrected localization function (d'oh) +* Added Dutch translation - thanks, Jesper! + += 0.3.4 = +* Added POT file and localization function + += 0.3.3 = +* Fixed bug that kept non-active users from appearing in member list + += 0.3.2 = +* Made it possible to use the plugin with friends component turned off +* Turned off Site Wide Only to remove PHP errors on some subdomain blogs + += 0.3.1 = +* Added a "successfully created" message when no invites are sent on group creation + += 0.3 = +* Compatibility with BP 1.2.1, including new bp-default theme +* Rearranged files to ensure BP is loaded before plugin is + += 0.2 = +* Compatibility with BP 1.2 trunk +* Bugfixes regarding file locations + += 0.1 = +* Initial release diff --git a/wp-content/plugins/invite-anyone/widgets/widgets-css.css b/wp-content/plugins/invite-anyone/widgets/widgets-css.css new file mode 100644 index 0000000..6c8e01b --- /dev/null +++ b/wp-content/plugins/invite-anyone/widgets/widgets-css.css @@ -0,0 +1,13 @@ +form.standard-form .invite-anyone-email-addresses { + width: 95%; + padding: 4px; + font-size: 9pt; + margin-bottom: 10px; +} + +p#invite-anyone-widget-submit { + text-align: left; + margin-top: 10px; +} + + diff --git a/wp-content/plugins/invite-anyone/widgets/widgets.php b/wp-content/plugins/invite-anyone/widgets/widgets.php new file mode 100644 index 0000000..4a2347e --- /dev/null +++ b/wp-content/plugins/invite-anyone/widgets/widgets.php @@ -0,0 +1,111 @@ + 'invite-anyone', 'description' => 'Invite Anyone widget' ); + + /* Widget control settings. */ + $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'invite-anyone-widget' ); + + /* Create the widget. */ + $this->WP_Widget( 'invite-anyone-widget', 'Invite Anyone', $widget_ops, $control_ops ); + + if ( is_active_widget( false, false, $this->id_base ) ) + wp_enqueue_style( 'invite-anyone-widget-style', WP_PLUGIN_URL . '/invite-anyone/widgets/widgets-css.css' ); + + } + + /** @see WP_Widget::widget */ + function widget($args, $instance) { + global $bp; + extract( $args ); + + if ( !$title = apply_filters('widget_title', $instance['title'] ) ) + $title = __( 'Invite Anyone', 'bp-invite-anyone' ); + + if ( !$instruction_text = esc_attr( $instance['instruction_text'] ) ) + $instruction_text = __( 'Enter one email address per line to invite friends to join this site.', 'bp-invite-anyone' ); + ?> + + + current_component != $bp->invite_anyone->slug ) : ?> + + + +

              + +
              + + + + + + + + + + + + + + loggedin_user->id ) ?> +

              + +

              +
              + + + + +

              + +

              + +

              + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/AdminContext.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/AdminContext.php new file mode 100644 index 0000000..0463fbe --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/AdminContext.php @@ -0,0 +1,241 @@ +processPost($state); + } + + /** + * Processes the POST data from the previous state. + * @param AdminState $st The next state to be populated with the POST data + * from the previous state. + */ + private function processPost($st) { + $state = $st; + if (isset($_POST["Next"])) { + if ($_POST["Next"] == "Delete") { + LongTailFramework::setConfig($_POST[LONGTAIL_KEY . "config"]); + LongTailFramework::deleteConfig(); + $configs = LongTailFramework::getConfigs(); + if ($configs && count($configs) >= 2 && $_POST[LONGTAIL_KEY . "config"] == get_option($_POST[LONGTAIL_KEY . "default"])) { + update_option(LONGTAIL_KEY . "default", $configs[1]); + } else if (!$configs || count($configs) == 1) { + update_option(LONGTAIL_KEY . "default", "Out-of-the-Box"); + } + $state = new PlayerState($_POST[LONGTAIL_KEY . "config"]); + $del_player = $_POST[LONGTAIL_KEY . "config"]; + $this->feedback_message("The '$del_player' Player was successfully deleted."); + $state->render(); + } else { + if ($_POST["Next"] == "Create Custom Player") { + $_POST[LONGTAIL_KEY . "new_player"] = "Custom Player"; + } + $state->getNextState()->render(); + } + } else if (isset($_POST["Previous"])) { + $state->getPreviousState()->render(); + } else if (isset($_POST["Cancel"])) { + $state->getCancelState()->render(); + } else if (isset($_POST["Save"])) { + $config = $_POST[LONGTAIL_KEY . "config"]; + LongTailFramework::setConfig($config); + $save_values = $this->processSubmit(); + $success = LongTailFramework::saveConfig($this->convertToXML($save_values), esc_html($_POST[LONGTAIL_KEY . "new_player"])); + $configs = LongTailFramework::getConfigs(); + if ($configs && count($configs) == 2) { + update_option(LONGTAIL_KEY . "default", $_POST[LONGTAIL_KEY . "config"] ? $_POST[LONGTAIL_KEY . "config"] : $_POST[LONGTAIL_KEY . "new_player"]); + update_option(LONGTAIL_KEY . "ootb", false); + } + $save_player = $_POST[LONGTAIL_KEY . "new_player"] ? $_POST[LONGTAIL_KEY . "new_player"] : $config; + if ($success) { + $this->feedback_message("The '$save_player' Player was successfully saved."); + } else { + $this->error_message("The '$save_player' failed to save. Please make sure the " . LongTailFramework::getConfigPath() . " exists and is writable. " . JW_FILE_PERMISSIONS); + } + $state->getSaveState()->render(); + } else { + if (isset($_POST[LONGTAIL_KEY . "default"])) { + update_option(LONGTAIL_KEY . "default", $_POST[LONGTAIL_KEY . "default"]); + } + if (isset($_POST[LONGTAIL_KEY . "show_archive"])) { + update_option(LONGTAIL_KEY . "show_archive", true); + } else if (!empty($_POST)) { + update_option(LONGTAIL_KEY . "show_archive", false); + } + LongTailFramework::setConfig(isset($_POST[LONGTAIL_KEY . "config"]) ? $_POST[LONGTAIL_KEY . "config"] : ""); + $state->render(); + } + } + + /** + * Processes the final submission of the wizard to be saved as a player + * configuration. + * @return Array The array of configuration options to be saved. + */ + private function processSubmit() { + $data = LongTailFramework::getConfigValues(); + $plugins = array(); + $additional_plugins = ""; + foreach ($_POST as $name => $value) { + if (strstr($name, LONGTAIL_KEY . "player_")) { + $val = esc_html($value); + $new_val = $val; + $new_name = str_replace(LONGTAIL_KEY . "player_", "", $name); + if ($new_name == "skin") { + if ($new_val != "[Default]") { + $skins = LongTailFramework::getSkins(); + $skin_new = LongTailFramework::getSkinPath() . "$val/$val." . $skins[$val]; + if (file_exists($skin_new)) { + $new_val = LongTailFramework::getSkinURL() . "$val/$val." . $skins[$val]; + } else { + $new_val = LongTailFramework::getSkinURL() . "$val." . $skins[$val]; + } + $data[$new_name] = $new_val; + } else { + unset($data[$new_name]); + } + } else if ($new_name == "playlist_position") { + $data[str_replace("_", ".", $new_name)] = $new_val; + } else if ($new_name == "flashvars") { + $this->parseFlashvarString($new_val, $data); + } else if ($new_name == "plugins") { + $additional_plugins = $new_val; + } else if (!empty($new_val)) { + $data[$new_name] = $new_val; + } else { + unset($data[$new_name]); + } + } else if(strstr($name, LONGTAIL_KEY . "plugin_") && strstr($name, "_enable")) { + $plugins[str_replace("_enable", "", str_replace(LONGTAIL_KEY . "plugin_", "", $name))] = esc_html($value); + //Process the plugin flashvars. + } else if(strstr($name, LONGTAIL_KEY . "plugin_") && !empty($value)) { + $plugin_key = preg_replace("/_/", ".", str_replace(LONGTAIL_KEY . "plugin_", "", $name), 1); + $found = false; + foreach(array_keys($plugins) as $repo) { + $key = explode(".", $plugin_key); + if (strstr($repo, $key[0]) && $plugins[$repo]) { + $data[$plugin_key] = esc_html($value); + $found = true; + break; + } + } + if (!$found) { + unset($data[$plugin_key]); + } + } + } + $active_plugins = array(); + //Build final list of plugins to be used for this Player. + foreach($plugins as $name => $enabled) { + if ($enabled) { + $active_plugins[] = $name; + } + } + $plugin_string = implode(",", $active_plugins); + $plugin_string = empty($plugin_string) ? $additional_plugins : $plugin_string . "," . $additional_plugins; + if (!empty($plugins)) { + $data["plugins"] = $plugin_string; + } + if (!isset($data["plugins"]) || $data["plugins"] == "" || empty($data["plugins"])) { + unset($data["plugins"]); + } + return $data; + } + + private function parseFlashvarString($fv_str, &$data) { + $additional = array(); + $regex = "~^([a-zA-Z0-9._]+)=(.+)~m"; + preg_match_all($regex, $fv_str, $matches); + for ($i = 0; $i < count($matches[0]); $i++) { + $additional[trim($matches[1][$i])] = trim($matches[2][$i]); + } + $data["Additional"] = $additional; + } + + /** + * Converts a one dimensional array into an XML string representation. + * @param Array $target The one dimensional array to be converted to an XML + * string. + * @return An xml string representation of $target. + */ + private function convertToXML($target) { + $output = ""; + foreach($target as $name => $value) { + if ($name == "Additional") { + foreach ($value as $add_name => $add_value) { + $output .= "<" . $add_name . " type='Additional'>" . $add_value . "\n"; + } + } else { + $output .= "<" . $name . ">" . $value . "\n"; + } + } + return $output; + } + + /** + * Displays a feedback message to the user. + * @param String $message The message to be displayed. + * @param int $timeout The duration the message should stay on screen. + */ + private function feedback_message ($message, $timeout = 0) { ?> +
              +

              +
              +
              +

              +
              diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/AdminState.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/AdminState.php new file mode 100644 index 0000000..308d130 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/AdminState.php @@ -0,0 +1,145 @@ +current_player = $player; + $this->current_post_values = $post_values; + } + + /** + * Display an error message at the top of the current page. + * @param String $message The message to be displayed. + */ + protected function errorMessage($message) { ?> +
              +

              +
              +
              +

              +
              + + + + + +
              Selected Player: + current_player; ?> + + + + + +
              +

              + $val) { ?> + + + + + " value="" /> + " name="" value="current_player ?>" /> + + + + + + + +

              diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/AdvancedState.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/AdvancedState.php new file mode 100644 index 0000000..af927e8 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/AdvancedState.php @@ -0,0 +1,110 @@ +current_player); + return new LTASState($this->current_player, $this->current_post_values); + } + + /** + * @see FlashVarState::getPreviousState() + * @return \BasicState + */ + public function getPreviousState() { + LongTailFramework::setConfig($this->current_player); + return new BasicState($this->current_player); + } + + /** + * @see FlashVarState::getCancelState() + * @return \PlayerState + */ + public function getCancelState() { + return new PlayerState(""); + } + + /** + * @see FlashVarState::getSaveState() + * @return \PlayerState + */ + public function getSaveState() { + return new PlayerState(""); + } + + /** + * @see FlashVarState::flashVarCat() + * @return \LongTailFramework.ADVANCED + */ + protected function flashVarCat() { + return LongTailFramework::ADVANCED; + } + + /** + * @see FlashVarState::getButtonBar() + * @param bool $show_previous + */ + protected function getButtonBar($show_previous = true) { + $this->buttonBar(AdvancedState::getID()); + } + + /** + * @see FlashVarState::getTitle() + * @return \WizardState.ADVANCED_STATE + */ + public static function getTitle() { + return WizardState::ADVANCED_STATE; + } + + /** + * @see FlashVarState::getFooter() + */ + protected function getFooter() { ?> +
              +

              +
              + + + + + +
              + + + + +
              + Note: Overriding the standard flashvars could lead to unexpected behavior. "; ?> +
              +
              +
              diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/BasicState.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/BasicState.php new file mode 100644 index 0000000..e8f23f6 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/BasicState.php @@ -0,0 +1,75 @@ +current_player); + return new AdvancedState($this->current_player, $this->current_post_values); + } + + /** + * @see FlashVarState::getPreviousState() + */ + public function getPreviousState() { + return new PlayerState(""); + } + + /** + * @see FlashVarState::getCancelState() + */ + public function getCancelState() { + return new PlayerState(""); + } + + /** + * @see FlashVarState::getSaveState() + */ + public function getSaveState() { + return new PlayerState(""); + } + + /** + * @see FlashVarState::flashVarCat() + */ + protected function flashVarCat() { + return LongTailFramework::BASIC; + } + + /** + * @see FlashVarState::getButtonBar() + */ + protected function getButtonBar($show_previous = true) { + $this->buttonBar(BasicState::getID(), $show_previous); + } + + /** + * @see FlashVarState::getTitle() + */ + public static function getTitle() { + return WizardState::BASIC_STATE; + } + +} +?> diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/FlashVarState.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/FlashVarState.php new file mode 100644 index 0000000..91aab50 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/FlashVarState.php @@ -0,0 +1,150 @@ +current_player); + return new LTASState($this->current_player, $this->current_post_values); + } + + /** + * @see AdminState::getPreviousState() + */ + public function getPreviousState() { + return new PlayerState(""); + } + + /** + * @see AdminState::getCancelState() + */ + public function getCancelState() { + return new PlayerState(""); + } + + /** + * @see AdminState::getSaveState() + */ + public function getSaveState() { + return new PlayerState(""); + } + + /** + * @see AdminState::render() + */ + public function render() { + $flash_vars = LongTailFramework::getPlayerFlashVars($this->flashVarCat()); ?> +
              +
              " method="post" action=""> + + selectedPlayer(); ?> +

              +

              +
              +
              + getHeader(); ?> + +
              +

              +
              + + + + + + + +
              getName(); ?>: + getName(); ?> + getDefaultValue(); ?> + + getType() == FlashVar::SELECT) { ?> + + + + + getDescription(); ?> +
              +
              +
              + + getFooter(); ?> +
              +
              +
              + getButtonBar(false); ?> +
              +
              + buttonBar(FlashVarState::getID(), $show_previous); + } + + /** + * Returns the title of the page. + * @return string The title of the page. + */ + public static function getTitle() { + return "Player Settings"; + } + + /** + * + * @return + */ + protected function getHeader() { + return ""; + } + + /** + * + * @return + */ + protected function getFooter() { + return ""; + } + +} +?> diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/LTASState.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/LTASState.php new file mode 100644 index 0000000..53110bc --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/LTASState.php @@ -0,0 +1,113 @@ +http://www.longtailvideo.com/adsolution." . + "

              To sign up for this service, click here to create an account." +); + +/** + * Responsible for the display of LTAS configuration. + * @file Class definition of LTASState + * @see AdminState + */ +class LTASState extends WizardState { + + /** + * @see AdminState::__construct() + */ + public function __construct($player, $post_values = "") { + parent::__construct($player, $post_values); + } + + /** + * @see AdminState::getID() + */ + public static function getID() { + return "ltas"; + } + + /** + * @see AdminState::getNextState() + */ + public function getNextState() { + LongTailFramework::setConfig($this->current_player); + return new PluginState($this->current_player, $this->current_post_values); + } + + /** + * @see AdminState::getPreviousState() + */ + public function getPreviousState() { + LongTailFramework::setConfig($this->current_player); + return new AdvancedState($this->current_player); + } + + /** + * @see AdminState::getCancelState() + */ + public function getCancelState() { + return new PlayerState(""); + } + + /** + * @see AdminState::getSaveState() + */ + public function getSaveState() { + return new PlayerState(""); + } + + public static function getTitle() { + return WizardState::LTAS_STATE; + } + + /** + * @see AdminState::render() + */ + public function render() { + $ltas = LongTailFramework::getLTASConfig(); ?> +
              +
              " method="post" action=""> + + selectedPlayer(); ?> +

              +

              +
              +
              +
              +

              +
              + + + + + + + + + + + + + + + +
              /> + Enable LongTail AdSolution +
              ltas.cc + + AdSolution Dashboard."; ?> +
              +
              +
              +
              +
              +
              + buttonBar(LTASState::getID()); ?> +
              +
              + diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/LicensePage.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/LicensePage.php new file mode 100644 index 0000000..4173aab --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/LicensePage.php @@ -0,0 +1,19 @@ + + +
              +

              +
              " method="post" action="admin.php?page=jwplayer-update"> + +
              +
              diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/PlayerState.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/PlayerState.php new file mode 100644 index 0000000..2fd145f --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/PlayerState.php @@ -0,0 +1,249 @@ +LongTail Video." +); + +define("JW_SETUP_EDIT_PLAYERS", + "Optional: This section allows you to create custom players. It is possible to configure flashvars, skins and plugins." +); + +define("JW_LICENSED", + "To obtain a licensed player, please purchase a license from LongTail Video." +); + +/** + * Responsible for the display of the Player management page. + * @file Class definition of PlayerState. + * @see AdminState + */ +class PlayerState extends AdminState { + + /** + * @see AdminState::__construct() + * @param $player + * @param string $post_values + * @return \PlayerState + */ + public function __construct($player, $post_values = "") { + parent::__construct($player, $post_values); + } + + /** + * @see AdminState::getID() + * @return string + */ + public static function getID() { + return "player"; + } + + /** + * @see AdminState::getNextState() + * @return \BasicState + */ + public function getNextState() { + LongTailFramework::setConfig($this->current_player); + return new BasicState($this->current_player, $this->current_post_values); + } + + /** + * @see AdminState::getPreviousState() + */ + public function getPreviousState() { + echo "This shouldn't be called"; + } + + /** + * @see AdminState::getCancelState() + */ + public function getCancelState() { + echo "This shouldn't be called"; + } + + /** + * @see AdminState::getSaveState() + */ + public function getSaveState() { + echo "This shouldn't be called"; + } + + /** + * @see AdminState::render() + */ + public function render() { + $players = LongTailFramework::getConfigs(); + if (!$players) $this->infoMessage("If you wish to create custom players please make sure the " . JWPLAYER_FILES_DIR . "/configs/" . " directory exists and is writable. This directory is necessary for creating custom players. " . JW_FILE_PERMISSIONS)?> +
              + + + +

              JW Player Setup

              +

              + +

              " method="post" action="admin.php?page=jwplayer-update"> + + + + + +
              +
              +
              +
              +

              JW Player Status

              +
              + + + + +
              +
              + +

              + JW Player: +

              +

              JW Embedder:

              + +

              +

              + + +

              Current Player: Version Unknown"; ?>

              +

              The player is being loaded from an alternate location () and is not being managed by the plugin.

              + +

              Current Player: Version Unknown"; ?>

              +

              + +
              +
              +
              +
              +
              +
              +
              +
              + +
              " method="post" action="admin.php?page=jwplayer-update"> + Current Player: Version Unknown "; ?> + +
              + +
              " method="post" action=""> +
              +
              +
              +
              +

              Manage Players

              +
              + + + + +
              +
              +

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > + + + + + + + + + + + + + +
              DefaultPlayersControl BarSkinDockAutostartHeightWidthActions
              + " name="" value="Out-of-the-Box" /> + " type="submit" name="Next" value="Copy" onclick="copyHandler(this)"/>
              + " name="" value="" /> + getDefaultValue() ? $fvar->getDefaultValue() : "default"; ?> + " type="submit" name="Next" value="Copy" onclick="copyHandler(this)"/> + " type="submit" name="Next" value="Edit" onclick="selectionHandler(this)"/> + " type="submit" name="Next" value="Delete" onclick="return deleteHandler(this)"/> +
              +
              + + " type="hidden" name="" value=""/> + " type="hidden" name="" value=""/> + " value= /> +
              +
              +
              +
              +
              +
              +
              +
              +
              + diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/PluginState.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/PluginState.php new file mode 100644 index 0000000..c2fefa3 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/PluginState.php @@ -0,0 +1,217 @@ +current_player); + return new LTASState($this->current_player); + } + + /** + * @see AdminState::getCancelState() + * @return \PlayerState + */ + public function getCancelState() { + return new PlayerState(""); + } + + /** + * @see AdminState::getSaveState() + * @return \PlayerState + */ + public function getSaveState() { + return new PlayerState(""); + } + + public static function getTitle() { + return WizardState::PLUGIN_STATE; + } + + /** + * @see AdminState::render() + */ + public function render() { + $plugins = LongTailFramework::getPlugins(); + $configValues = LongTailFramework::getConfigValues(); + $pluginString = array(); + if (array_key_exists("plugins", $configValues)) { + $pluginString = explode(",", $configValues["plugins"]); + } + $pluginList = array(); + foreach ($pluginString as $pluginStr) { + $pluginList[$pluginStr] = $pluginStr; + } + ?> +
              + + + +
              " method="post" action=""> + + selectedPlayer(); ?> +

              +

              + + + +
              "> + + + getRepository() . "_" . "enable"; ?> + isEnabled(); ?> + + + + + + + + + +
              Enable getTitle(); ?>: + /> + " type="hidden" value="0"/> + getDescription() . " Learn more..."; ?> +
              +
              + + + getRepository()]); ?> +
              getRepository(); ?>"> + + getFlashVars()) as $plugin_flash_vars) { ?> + getFlashVars(); ?> + + + getPluginPrefix() . "_" . $plugin_flash_var->getName(); ?> + getDefaultValue(); ?> + + + + + + +
              getPluginPrefix() . "." . $plugin_flash_var->getName(); ?>: + getType() == FlashVar::SELECT) { ?> + + + + + getDescription(); ?> +
              +
              + +
              + + getFooter($pluginList); ?> + buttonBar(PluginState::getID(), true, false); ?> + +
              +
              + +

              +

              +
              +
              +
              +

              +
              + + + + + +
              + + + + +
              + Note: Flashvars for these plugins will need to be set in the Additional Flashvars section under the Advanced Settings tab."; ?> +
              +
              +
              +
              +
              +
              diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/SettingsPage.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/SettingsPage.php new file mode 100644 index 0000000..08428b1 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/SettingsPage.php @@ -0,0 +1,271 @@ +postmeta WHERE meta_key LIKE '" . LONGTAIL_KEY . "%';"; + $option_query = "DELETE FROM $wpdb->options WHERE option_name LIKE '" . LONGTAIL_KEY . "%';"; + $post_query = "DELETE FROM $wpdb->posts WHERE post_type = 'jw_playlist';"; + + $wpdb->query($meta_query); + $wpdb->query($option_query); + $wpdb->query($post_query); + + @unlink(LongTailFramework::getPlayerPath()); + @unlink(LongTailFramework::getEmbedderPath()); + @rmdir(JWPLAYER_FILES_DIR . "/player/"); + + $handler = @opendir(JWPLAYER_FILES_DIR . "/configs"); + if ($handler) { + while ($file = readdir($handler)) { + if ($file != "." && $file != ".." && strstr($file, ".xml")) { + @unlink(JWPLAYER_FILES_DIR . "/configs/$file"); + } + } + closedir($handler); + } + @rmdir(JWPLAYER_FILES_DIR . "/configs/"); + @rmdir(JWPLAYER_FILES_DIR); + + update_option(LONGTAIL_KEY . "uninstalled", true); + feedback_message(__('Files and settings deleted. The plugin can now be deactivated.')); +} + +function feedback_message ($message, $timeout = 0) { ?> +
              +

              +
              + +
              +

              +
              " method="post" action=""> +
              +
              +
              +
              +

              Shortcode Settings

              +
              +

              Configure the source for each page type. This is dependent on your theme which can either pull from the_content or the_excerpt. Optionally you can disable embedding on a specific page type. This will strip out the shortcode.

              + + + + + + + + + + + + + + + + + +
              Category Pages: + + /> + + /> + + /> + Configure JW Player shortcode behavior on category pages. +
              Search Pages: + + /> + + /> + + /> + Confgiure JW Player shortcode behavior on search result pages. +
              Tag Pages: + + /> + + /> + + /> + Confgiure JW Player shortcode behavior on tag pages. +
              Home Page: + + /> + + /> + + /> + Confgiure JW Player shortcode behavior on the home page. +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +

              Player Settings

              +
              + + + + + + + + + + + + + +
              Enable Alternative Player Location: + + /> + + /> + When enabled the plugin will load the player from the specified location. +
              Player Location: + " onblur="form.submit();" style="width: 300px;"/> + Configure the location the player.swf and jwplayer.js files should be loaded from. +
              Select Primary Mode: + + /> + + /> + Select which mode the player will default to (Flash or HTML5). +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +

              Content Settings

              +
              + + + + + + + + + + + + + +
              Show Duration on Images: + + /> + + /> + Controls whether the duration field is visible when editing the meta data for images. +
              Show Insert Button on Images: + + /> + + /> + Controls whether the insert button is visible when editing the meta data for images. +
              Enable Facebook Open Graph Data: + + /> + + /> + Whether or not Facebook Open Graph information should be inserted into the page for sharing on Facebook. +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +

              Site Settings

              +
              + + + + + + + + + +
              Use SSL when loading the player: + + /> + + /> + Controls whether the plugin will load the player, configs and skins using https if your site is https. Note:You will need to resave your players after making a change. +
              Load jwplayer.js/swfobject.js in page head: + + /> + + /> + Controls whether the plugin will insert the jwplayer.js or swfobject.js files into the head of every page. If set to No jwplayer.js or swfobject.js will only be included on pages where the jwplayer.js shortcode is used. +
              +
              +
              +
              +
              +
              +
              +
              +
              +
              +

              Uninstall

              +
              + + + + +
              +
              +

              +
              +


              +

              +
              + +
              +
              +
              +
              +
              +
              +
              +
              +
              \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/UpdatePage.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/UpdatePage.php new file mode 100644 index 0000000..a04cb25 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/UpdatePage.php @@ -0,0 +1,332 @@ + + +
              + +open($player_package)) { + $contents = ""; + $dir = $zip->getNameIndex(0); + $fp = $zip->getStream($dir . "player.swf"); + if (!$fp) return READ_ERROR; + while(!feof($fp)) { + $contents .= fread($fp, 2); + } + fclose($fp); + $result = @file_put_contents(LongTailFramework::getPrimaryPlayerPath(), $contents); + if (!$result) { + return WRITE_ERROR; + } + chmod(LongTailFramework::getPrimaryPlayerPath(), 0755); + $contents = ""; + $fp = $zip->getStream($dir . "yt.swf"); + if ($fp) { + while (!feof($fp)) { + $contents .= fread($fp, 2); + } + fclose($fp); + $result = @file_put_contents(str_replace("player.swf", "yt.swf", LongTailFramework::getPrimaryPlayerPath()), $contents); + if (!$result) { + return WRITE_ERROR; + } + chmod(str_replace("player.swf", "yt.swf", LongTailFramework::getPrimaryPlayerPath()), 0755); + } + $fp = $zip->getStream($dir . "jwplayer.js"); + if ($fp) { + $contents = ""; + while (!feof($fp)) { + $contents .= fread($fp, 2); + } + fclose($fp); + $result = @file_put_contents(LongTailFramework::getEmbedderPath(), $contents); + if (!$result) { + return WRITE_ERROR; + } + chmod(LongTailFramework::getEmbedderPath(), 0755); + } + $zip->close(); + } + + unlink($player_package); + return SUCCESS; +} + +function zip_fallback($player_package) { + $player_found = false; + require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php'); + $zip = new PclZip($player_package); + $archive_files = $zip->extract(PCLZIP_OPT_EXTRACT_AS_STRING); + $dir = $archive_files[0]["filename"]; + foreach($archive_files as $file) { + $result = true; + if ($file["filename"] == $dir . "player.swf" || $file["filename"] == $dir . "player-licensed.swf") { + $result = @file_put_contents(LongTailFramework::getPrimaryPlayerPath(), $file["content"]); + if (!$result) { + return WRITE_ERROR; + } + $player_found = true; + } else if ($file["filename"] == $dir . "yt.swf") { + $result = @file_put_contents(str_replace("player.swf", "yt.swf", LongTailFramework::getPrimaryPlayerPath()), $file["content"]); + if (!$result) { + return WRITE_ERROR; + } + } else if ($file["filename"] == $dir . "jwplayer.js") { + $result = @file_put_contents(LongTailFramework::getEmbedderPath(), $file["content"]); + if (!$result) { + return WRITE_ERROR; + } + } + } + if ($player_found) { + unlink($player_package); + return SUCCESS; + } + return ZIP_ERROR; +} + +function player_download() { + $player_package = download_url("http://www.longtailvideo.com/wp/jwplayer.zip"); + if (is_wp_error($player_package)) { + return DOWNLOAD_ERROR; + } + return unpack_player_archive($player_package); +} + +function player_upload() { + return unpack_player_archive($_FILES["file"]["tmp_name"]); +} + +function default_state() { ?> +

              +

              +

              +

              + +

              +

              +

              upgrade page."; ?>

              +
              +
              " method="post" action=""> + + + + +
              + +
              +
              + + If you already have the JW Player then you can install it using the upgrade page.
              + Alternatively you may FTP the player files directly to your site. Place the player.swf and jwplayer.js files in " . JWPLAYER_FILES_DIR . "/player/.
              " . JW_FILE_PERMISSIONS); + } else if ($result == WRITE_ERROR) { + error_message("Not able to install JW Player. + Please make sure the " . JWPLAYER_FILES_DIR . "/player/ directory exists (and is writabe) and then visit the upgrade page.
              + Alternatively you may FTP the player.swf and jwplayer.js files directly to your site.
              " . JW_FILE_PERMISSIONS); + } else if ($result == ZIP_ERROR) { + error_message("The necessary zip classes are missing. Please FTP the player manually.
              Place the player.swf and jwplayer.js files in " . JWPLAYER_FILES_DIR . "/player/."); + } else if ($result == READ_ERROR) { + error_message("Could not find player.swf or jwplayer.js. Either they are not present or the archive is invalid.
              + Alternatively you may FTP the player files directly to your site. Place the player.swf and jwplayer.js files in " . JWPLAYER_FILES_DIR . "/player/."); + } +} + +function upload_state() { ?> +

              +

              + + +

              + +
              " method="post" action=""> + + + + +
              + +
              +
              + upgrade page. " . JW_FILE_PERMISSIONS); + default_state(); + } else if ($result == ZIP_ERROR) { + error_message("The necessary zip classes are missing. Please upload the player manually instead using the upgrade page."); + default_state(); + } else if ($result == READ_ERROR) { + error_message("Could not find player.swf or yt.swf. Either they are not present or the archive is invalid."); + default_state(); + } else { + error_message("Not a valid zip archive."); + default_state(); + } +} + +function error_message($message) { ?> +
              +

              +
              "http://content.longtailvideo.com/videos/bunny.flv", + "image" => "http://content.longtailvideo.com/videos/bunny.jpg", + "id" => "jwplayer-1" + ); + wp_print_scripts('swfobject'); + $swf = LongTailFramework::generateSWFObject($atts, false); ?> + + generateEmbedScript(); ?> + + + +
              " method="post" action="" enctype="multipart/form-data" onsubmit="return fileValidation();"> +
              +
              +
              +
              +

              +
              + + + + + +
              +

              + LongTail Video."; ?> +

              +

              + + + +

              +
              +
              +
              +
              +
              +
              +
              + +
              " method="post" action=""> +
              +
              +
              +
              +

              +
              + + + + +
              +

              + +

              +

              + +

              +
              +
              +
              +
              +
              +
              +
              + + +
              diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/admin/WizardState.php b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/WizardState.php new file mode 100644 index 0000000..14d1465 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/admin/WizardState.php @@ -0,0 +1,53 @@ + + + + diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/playlist.css b/wp-content/plugins/jw-player-plugin-for-wordpress/css/playlist.css new file mode 100644 index 0000000..4eca63c --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/css/playlist.css @@ -0,0 +1,46 @@ +#media-upload .playlist-item { + border: 1px solid; + min-height: 36px; + position: relative; + margin-top: -1px; + width: 100%; +} + +#playlist-items, .imgedit-group { + border-color: #DFDFDF; +} + +.playlist-item { + border-color: #DFDFDF; +} + +.playlist-item .pinkynail { + float: left; + margin: 2px; + max-height: 32px; + max-width: 40px; +} + +.playlist-item .filename { + line-height: 36px; + overflow: hidden; + padding: 0 10px; +} + +#media-upload .ui-sortable .playlist-item { + cursor: move; +} + +.sorthelper { + height: 37px; + width: 300px; + display: block; +} + +.menu_order_input { + border: none; + cursor: default; + font-size: 10px; + padding: 1px; + width: 23px; +} \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-anim_basic_16x16.gif b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-anim_basic_16x16.gif new file mode 100644 index 0000000..085ccae Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-anim_basic_16x16.gif differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000..5b5dab2 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000..ac8b229 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..ad3d634 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000..42ccba2 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..5a46b47 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..86c2baa Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000..4443fdc Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..7c9fa6c Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_222222_256x240.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..ee039dc Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_222222_256x240.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_2e83ff_256x240.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..45e8928 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_2e83ff_256x240.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_454545_256x240.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..7ec70d1 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_454545_256x240.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_888888_256x240.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..5ba708c Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_888888_256x240.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..7930a55 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/images/ui-icons_cd0a0a_256x240.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/jquery.ui.jw.css b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/jquery.ui.jw.css new file mode 100644 index 0000000..235434a --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/css/smoothness/jquery.ui.jw.css @@ -0,0 +1,331 @@ +/* +* jQuery UI CSS Framework +* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +*/ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* +* jQuery UI CSS Framework +* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +*/ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } +.ui-widget-header a { color: #222222; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Button +----------------------------------*/ + +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ + + + + + +/* Tabs +----------------------------------*/ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/framework/EmbedConfigInterface.php b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/EmbedConfigInterface.php new file mode 100644 index 0000000..8af1918 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/EmbedConfigInterface.php @@ -0,0 +1,22 @@ + diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/framework/FlashVar.php b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/FlashVar.php new file mode 100644 index 0000000..c0c0a93 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/FlashVar.php @@ -0,0 +1,134 @@ +name = $nm; + $this->default_value = $def; + $this->description = $desc; + $this->values = $val; + $this->type = $typ; + $this->group = $grp; + } + + /** + * Get the name of the flashvar. + * @return string The flashvar name + */ + public function getName() { + return $this->name; + } + + /** + * Set the name of the flashvar. + * @param string $newName The new name for the flashvar + */ + public function setName($new_name) { + $this->name = $new_name; + } + + /** + * Get the default value for the flashvar. + * @return string The default value + */ + public function getDefaultValue() { + return $this->default_value; + } + + /** + * Set the default value for the flashvar. + * @param string $newDefault The new default value for the flashvar + */ + public function setDefaultValue($new_default) { + $this->default_value = $new_default; + } + + /** + * Get the description of the flashvar. + * @return string The description of the flashvar + */ + public function getDescription() { + return $this->description; + } + + /** + * Set the description of the flashvar. + * @param string $newDesc The new description of the flashvar + */ + public function setDescription($new_desc) { + $this->description = $new_desc; + } + + /** + * Get the possible values for the flashvar. + * @return array The array of possible values for the flashvar + */ + public function getValues() { + return $this->values; + } + + /** + * Set the possible values for the flashvar. + * @param array $newVal The new array of possible values for the flashvar + */ + public function setValues($new_val) { + $this->values = $new_val; + } + + /** + * Get the field type of the flashvar. + * @return string The field type of the flashvar + */ + public function getType() { + return $this->type; + } + + /** + * Set the field type of the flashvar. + * @param string $newType The new field type of the flashvar + */ + public function setType($new_type) { + $this->type = $new_type; + } + + /** + * Get the parent group the flashvar belongs to. + * @return string The parent group the flashvar belongs to + */ + public function getGroup() { + return $this->group; + } + + /** + * Set the parenet group the flashvar belongs to. + * @param string $newGroup The new parent group the flashvar belongs to + */ + public function setGroup($new_group) { + $this->group = $new_group; + } +} + +?> diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/framework/JWEmbedderConfig.php b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/JWEmbedderConfig.php new file mode 100644 index 0000000..062c6a5 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/JWEmbedderConfig.php @@ -0,0 +1,127 @@ + array( + "bufferPercent" => "number" + ), + "onBufferFull" => array(), + "onError" => array( + "message" => "string" + ), + "onFullscreen" => array( + "fullscreen" => "boolean" + ), + "onMeta" => array( + "metadata" => "object" + ), + "onMute" => array( + "mute" => "boolean" + ), + "onPlaylist" => array( + "playlist" => "array" + ), + "onPlaylistItem" => array( + "index" => "number" + ), + "onReady" => array(), + "onResize" => array( + "width" => "number", + "height" => "number" + ), + "onPlay" => array( + "oldstate" => "string", + "newstate" => "string" + ), + "onPause" => array( + "oldstate" => "string", + "newstate" => "string" + ), + "onBuffer" => array( + "oldstate" => "string", + "newstate" => "string" + ), + "onIdle" => array( + "oldstate" => "string", + "newstate" => "string" + ), + "onComplete" => array(), + "onTime" => array( + "duration" => "number", + "position" => "number" + ), + "onVolume" => array( + "volume" => "number" + ) + ); + + private $id; + private $path; + private $conf; + private $fvars; + private $dim; + private $config; + + function __construct($divId, $player_path, $config, $params = array(), $flash_vars = array(), $config_name = "") { + $this->id = "jwplayer-" . $divId; + $this->path = $player_path; + $this->conf = $config; + $this->config = $config_name; + $this->dim = $params; + $this->fvars = $flash_vars; + } + + public function generateDiv() { + //The outer div is needed for LTAS support. + return "
              id-div\" class=\"$this->config\">\n" . + "
              id\">
              \n" . + "
              \n"; + } + + private function generateSetup() { + $events = array(); + $eventValues = array(); + $eventKeys = array(); + $config = array( + "flashplayer" => $this->path, + "width" => $this->dim["width"], + "height" => $this->dim["height"], + "controlbar" => $this->dim["controlbar"] + ); + foreach ($this->fvars as $key => $value) { + if (isset (self::$events[$key])) { + $eventValues[] = urldecode(html_entity_decode($value)); + $events[$key] = "%function_$key%"; + $eventKeys[] = "\"%function_$key%\""; + } else { + $config[$key] = is_array($value) ? $value : urldecode(html_entity_decode($value)); + } + } + if (count($events) > 0) { + $config["events"] = $events; + } + $json = str_replace("\\/", "/", json_encode($config)); + return str_replace($eventKeys, $eventValues, $json); + } + + public function generateEmbedScript() { + $script = $this->generateDiv(); + $script .= ""; + return $script; + } + + public function getConfig() { + return $this->config; + } + + public function getId() { + return $this->id; + } +} +?> diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/framework/LongTailFramework.php b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/LongTailFramework.php new file mode 100644 index 0000000..5d0a5be --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/LongTailFramework.php @@ -0,0 +1,561 @@ +getName()] = (string) $flash_var; + } else { + if (!array_key_exists("Additional", $target)) { + $target["Additional"] = array(); + } + $target["Additional"][$flash_var->getName()] = (string) $flash_var; + } + } else { + $target[$flash_var->getName()] = (string) $flash_var; + } + } + } + return $target; + } + + /** + * Returns the flashvars available to the player with the defaults set to + * the values set to the loaded config value where applicable. + * @param string $flash_var_cat The category of flashvars to be returned. + * Default is null which returns all flashvars. + * @return array Structured array containing the specified flashvars. + */ + public static function getPlayerFlashVars($flash_var_cat = null) { + if ($flash_var_cat == null) { + return LongTailFramework::$loaded_flash_vars; + } + return LongTailFramework::$loaded_flash_vars[$flash_var_cat]; + } + + /** + * Returns the flashvars that are set in addition to those defined in the + * player.xml file. + * @return array Structured array containing the additional flashvars. + */ + public static function getPlayerAdditionalFlashVars() { + return LongTailFramework::$loaded_additional_flash_vars; + } + + /** + * Save the Player configuration to an xml file. + * @param $xml_string + * @param string $target Specified config file to save to. Default is null, + * in which case the currently loaded config is used. + * @return bool + * + * @internal param string $xmlString The xml formatted content to be saved. + * + */ + public static function saveConfig($xml_string, $target = "") { + $xml_file = ""; + if ($target == "") { + $xml_file = LongTailFramework::getConfigPath(); + } else { + $xml_file = JWPLAYER_FILES_DIR . "/configs/" . $target . ".xml"; + } + $xml_handle = @fopen($xml_file, "w"); + if (!$xml_handle) return false; + $configStr = "\n\n" . $xml_string . ""; + fwrite($xml_handle, $configStr); + fclose($xml_handle); + chmod($xml_file, 0755); + return true; + } + + /** + * Delete a Player configuration. + */ + public static function deleteConfig() { + $xml_file = LongTailFramework::getConfigPath(); + unlink($xml_file); + } + + /** + * Checks if a specified config exists. + * @param string $conf The config to check for. + * @return boolean If the config exists or not. + */ + public static function configExists($conf) { + if (!isset($conf)) {return false;} + return file_exists(LongTailFramework::getConfigPath($conf)); + } + + /** + * Given a Player config name, return the associated xml file. + * @param string $conf The name of the Player configuration. Default is null, + * in which case it uses the currently loaded config. + * @return A reference to the xml file. + */ + public static function getConfigFile($conf = "") { + $config = $conf != "" ? $conf : LongTailFramework::$current_config; + if ($config == "" || !file_exists(LongTailFramework::getConfigPath($config))) { + return false; + } + return simplexml_load_file(LongTailFramework::getConfigPath()); + } + + /** + * Get the complete URL for a given Player configuration. + * @param string $conf The name of the Player configuration. Default is null, + * in which case it uses the currently loaded config. + * @return The complete URL. + */ + public static function getConfigURL($conf = "") { + $config = $conf != "" ? $conf : LongTailFramework::$current_config; + if ($config == "") { + return ""; + } + return JWPLAYER_FILES_URL . "/configs/" . $config . ".xml"; + } + + /** + * Get the relative path for a given Player configuration. + * @param string $conf The name of the Player configuration. Default is null, + * in which case it uses the currently loaded config. + * @return The relative path. + */ + public static function getConfigPath($conf = "") { + $config = $conf != "" ? $conf : LongTailFramework::$current_config; + if ($config == "") { + return ""; + } + return JWPLAYER_FILES_DIR . "/configs/" . $config . ".xml"; + } + + /** + * Get the list of currently saved Player configurations. + * @return array The list of configurations. + */ + public static function getConfigs() { + $results = array(); + $handler = @opendir(JWPLAYER_FILES_DIR . "/configs"); + if (!$handler) return false; + $results[] = "New Player"; + while ($file = readdir($handler)) { + if ($file != "." && $file != ".." && strstr($file, ".xml")) { + $results[] = str_replace(".xml", "", $file); + } + } + closedir($handler); + return $results; + } + + /** + * Checks if there are any custom Player configs available. + * @return boolean If there are any configs or not. + */ + public static function configsAvailable() { + $configs = LongTailFramework::getConfigs(); + if ($configs && count($configs) > 1) { + return true; + } + return false; + } + + /** + * Returns the path to the player.swf. + * @return string The path to the player.swf. + */ + public static function getPlayerPath() { + if (file_exists(LongTailFramework::getPrimaryPlayerPath())) { + return LongTailFramework::getPrimaryPlayerPath(); + } + return LongTailFramework::getSecondaryPlayerPath(); + } + + /** + * Get the complete path to the JW Embedder javascript file. + * @return string The path to the JW Embedder. + */ + public static function getEmbedderPath() { + return JWPLAYER_FILES_DIR . "/player/jwplayer.js"; + } + + /** + * Get the complete path to the primary (and excepted) player location. + * @return string The path to the player. + */ + public static function getPrimaryPlayerPath() { + return JWPLAYER_FILES_DIR . "/player/player.swf"; + } + + /** + * Get the complete path to the secondary player location. This + * is necessary to support older versions. + * @return string The path to the player. + */ + public static function getSecondaryPlayerPath() { + return JWPLAYER_PLUGIN_DIR . "/player.swf"; + } + + /** + * Get the complete path to the temporary uploaded player. + * @return string The path to the temporary player. + */ + public static function getTempPlayerPath() { + return JWPLAYER_FILES_DIR . "/player/player_tmp.swf"; + } + + /** + * Get the complete path to the temporary uploaded player. + * @return string The path to the temporary player. + */ + public static function getTempPlayerJSPath() { + return JWPLAYER_FILES_DIR . "/player/jwplayer_tmp.js"; + } + + /** + * Get the complete URL for the Player swf. + * @return string The complete URL. + */ + public static function getPlayerURL() { + if (file_exists(LongTailFramework::getPrimaryPlayerPath())) { + return LongTailFramework::getPrimaryPlayerURL(); + } + return LongTailFramework::getSecondaryPlayerURL(); + } + + /** + * Get the complete URL for the JW Embedder javascript file. + * @return string The complete URL to the JW Embedder. + */ + public static function getEmbedderURL() { + return JWPLAYER_FILES_URL . "/player/jwplayer.js"; + } + + /** + * Get the complete url to the primary (and execpted) player location. + * @return string The url to the player. + */ + public static function getPrimaryPlayerURL() { + return JWPLAYER_FILES_URL . "/player/player.swf"; + } + + /** + * Get the complete url to the secondary player location. This + * is necessary to support older versions. + * @return string The url to the player. + */ + public static function getSecondaryPlayerURL() { + return JWPLAYER_PLUGIN_URL . "/player.swf"; + } + + /** + * Get the complete url to the temporary uploaded player. + * @return string The url to the temporary player. + */ + public static function getTempPlayerURL() { + return JWPLAYER_FILES_URL . "/player/player_tmp.swf"; + } + + /** + * For the given Player configuration, returns the LTAS details. + + * + * @internal param string $config The name of the Player configuration + * @return array An array containing the enabled state and channel code. + */ + public static function getLTASConfig() { + $ltas = array(); + if (file_exists(LongTailFramework::getConfigPath())) { + $config_file = simplexml_load_file(LongTailFramework::getConfigPath()); + if (strstr((string) $config_file->plugins, "ltas")) { + $ltas["enabled"] = true; + } + $ltas["channel_code"] = (string) $config_file->{"ltas.cc"}; + } + return $ltas; + } + + /** + * Get the relative path for the plugins. + * @return string The relative path + */ + public static function getPluginPath() { + return LongTailFramework::$dir . "/plugins/"; + } + + /** + * Generates a list of the available plugins along with their flashvars and default values. + * @param null $config_values + * + * @internal param string $config (optional) Pass in if you wish to load the plugin enabled state and flashvar values. + * @return array The list of available plugins + */ + public static function getPlugins(&$config_values = null) { + $handler = opendir(LongTailFramework::getPluginPath()); + $plugins = array(); + while ($file = readdir($handler)) { + if ($file != "." && $file != ".." && strstr($file, ".xml")) { + $plugin = LongTailFramework::processPlugin($file, $config_values); + $plugins[$plugin->getRepository()] = $plugin; + } + } + return $plugins; + } + + /** + * Get the relative path of the Player skins. + * @return string The relative path + */ + public static function getSkinPath() { + return LongTailFramework::$dir . "/skins/"; + } + + /** + * Get the complete URL for a skin. + * @return string The complete URL + */ + public static function getSkinURL() { + return LongTailFramework::$url . "/skins/"; + } + + /** + * Get the list of available skins. + * @return string The list of available skins + */ + public static function getSkins() { + $handler = opendir(LongTailFramework::getSkinPath()); + $skins = array(); + $skins["[Default]"] = ""; + while ($file = readdir($handler)) { + if ($file != "." && $file != ".." && (strstr($file, ".zip") || strstr($file, ".swf"))) { + $info = preg_split("/\./", $file); + $skins[$info[0]] = $info[1]; + } + } + ksort($skins); + return $skins; + } + + /** + * Get the necessary embed parameters for embedding a flash object. For now we assume + * the flash object will be as big as the dimensions of the player. + + * + * @internal param $string @config The Player configuration that is going to be embedded + * @return array The array with the flash object dimensions + */ + public static function getEmbedParameters() { + //If no config has been passed, use the player defaults. + if (LongTailFramework::$current_config == "") { + LongTailFramework::loadPlayerFlashVars(); + } + $flash_vars = LongTailFramework::$loaded_flash_vars; + $params = array( + "width" => $flash_vars["Basic Player Settings"]["General"]["width"]->getDefaultValue(), + "height" => $flash_vars["Basic Player Settings"]["General"]["height"]->getDefaultValue(), + "controlbar" => $flash_vars["Basic Player Settings"]["Appearance"]["controlbar"]->getDefaultValue() + ); + return $params; + } + + /** + * Generates the SWFObjectConfig object which acts as a wrapper for the SWFObject javascript library. + * @param $flash_vars + * @param bool $useJWEmbedder + * @param string $customLocation + * + * @internal param array $flashVars The array of flashVars to be used in the embedding + * @return SWFObjectConfig The configured SWFObjectConfig object to be used for embedding + */ + public static function generateSWFObject($flash_vars, $useJWEmbedder = false, $customLocation = "") { + $playerLocation = $customLocation ? $customLocation . "player.swf" : LongTailFramework::getPlayerURL(); + if ($useJWEmbedder) { + return new JWEmbedderConfig(LongTailFramework::$div_id++, $playerLocation, LongTailFramework::getConfigURL(), LongTailFramework::getEmbedParameters(), $flash_vars, LongTailFramework::$current_config); + } + return new SWFObjectConfig(LongTailFramework::$div_id++, $playerLocation, LongTailFramework::getConfigURL(), LongTailFramework::getEmbedParameters(), $flash_vars, LongTailFramework::$current_config); + } + + /** + * Generates the SWFObjectConfig object which acts as a wrapper for the SWFObject javascript library. + * This will embed the temporary swf file uploaded by a plugin. + * @param array $flash_vars The array of flashvars to be used in the embedding + * @return SWFObjectConfig The configured SWFOjbectConfig object to be used for embedding + */ + public static function generateTempSWFObject($flash_vars) { + return new SWFObjectConfig(LongTailFramework::$div_id++, LongTailFramework::getTempPlayerURL(), LongTailFramework::getConfigURL(), LongTailFramework::getEmbedParameters(), $flash_vars); + } + + /** + * Helper function to flatten the additional flashvars into a string representation. + * @param $flashvars + * + * @internal param \The $array array of additional flashvars + * @return string The string representation of the additional flashvars + */ + private static function flattenAdditionalFlashVars($flashvars) { + $output = ""; + $output_array = array(); + foreach ($flashvars as $key => $value) { + $output_array[] = $key . "=" . $value; + } + $output = implode("\n", $output_array); + return $output; + } + + /** + * Generates the list of flashvars supported by this version of the player along with + * their defaults. + * @return A structured array of the flashvars. + */ + private static function loadPlayerFlashVars() { + $f_vars = array(); + //Load the player xml file. + $xml = simplexml_load_file(LongTailFramework::$dir . "/player.xml"); + $config_file = LongTailFramework::$current_config_values; + $config_values = LongTailFramework::getConfigValues(); + //Process the flashvars in the player xml file. + foreach ($xml->flashvars as $flash_vars) { + $f_var = array(); + $f_var_section = (string) $flash_vars["section"]; + $f_var_advanced = (string) $flash_vars["type"]; + //Ignore the flashvars categorized as "None." + if ($f_var_advanced != "None") { + foreach ($flash_vars as $flash_var) { + $default = (string) $flash_var->{"default"}; + //If the config file was loaded and has an entry for the current flashvar + //use the value in the config file. + if ($config_file && $config_file->{$flash_var->name}) { + unset($config_values[(string) $flash_var->name]); + $default = (string) $config_file->{$flash_var->name}; + $default = str_replace(LongTailFramework::getSkinURL(), "", $default); + $default = preg_replace("/(\.swf|\.zip)/", "", $default); + $parts = explode("/", $default); + $default = empty($parts) ? $default : $parts[0]; + } + $values = (array) $flash_var->select; + $val = isset($values["option"]) ? $values["option"] : ""; + $type = (string) $flash_var["type"]; + //Load the possible values for the skin flashvar. + if ($flash_var->name == "skin") { + $type = "select"; + $val = array_keys(LongTailFramework::getSkins()); + } + $temp_var = new FlashVar( + (string) $flash_var->name, $default, (string) $flash_var->description, $val, $type + ); + $f_var[(string) $flash_var->name] = $temp_var; + } + $f_vars[$f_var_advanced][$f_var_section] = $f_var; + } + } + unset($config_values["plugins"]); + unset($config_values["ltas.cc"]); + LongTailFramework::getPlugins($config_values); + if ($config_values && array_key_exists("Additional", $config_values)) { + LongTailFramework::$loaded_additional_flash_vars = LongTailFramework::flattenAdditionalFlashVars($config_values["Additional"]); + } + LongTailFramework::$loaded_flash_vars = $f_vars; + } + + /** + * Creates a Plugin object which represents a given Player plugin. + * @param file $file The xml file which represents the Plugin + * @param &$config_values The currently loaded config values. Used to + * distinguish between standard flashvars and additional flashvars. + * @return A new Plugin object + */ + private static function processPlugin($file, &$config_values = null) { + $plugin_xml = simplexml_load_file(LongTailFramework::getPluginPath() . $file); + $title = (string)$plugin_xml->{"title"}; + $version = (string) $plugin_xml->{"version"}; + $file_name = (string) $plugin_xml->{"filename"}; + $repository = (string) $plugin_xml->{"repository"}; + $description = (string) $plugin_xml->{"description"}; + $href = (string) $plugin_xml->{"page"}; + $enabled = false; + $config_found = true; + $plugin_name = str_replace(".swf", "", $file_name); + //Check if the config file exists. + if (file_exists(LongTailFramework::getConfigPath())) { + $config_file = simplexml_load_file(LongTailFramework::getConfigPath()); + } else { + $config_found = false; + } + $enabled = isset($config_file) && strstr((string) $config_file->plugins, $repository) ? true : false; + $f_vars = array(); + //Process the flashvars in the plugin xml file. + foreach($plugin_xml->flashvars as $flash_vars) { + $f_var = array(); + $f_var_section = (string) $flash_vars["section"]; + $f_var_section = $f_var_section ? $f_var_section : "FlashVars"; + foreach ($flash_vars as $flash_var) { + $default = (string) $flash_var->{"default"}; + //If the config file was loaded and has an entry for the current flashvar + //use the value in the config file and set the plugin as enabled. + if ($config_found && $config_file->{$plugin_name . "." . $flash_var->name}) { + $p_key = $plugin_name . "." . $flash_var->name; + if ($config_values != null) { + unset($config_values[(string) $p_key]); + } + $default = (string) $config_file->{$plugin_name . "." . $flash_var->name}; + } + $values = (array) $flash_var->select; + $value_option = isset($values["option"]) ? (array) $values["option"] : array(); + $temp_var = new FlashVar( + (string) $flash_var->name, $default, (string) $flash_var->description, + $value_option, (string) $flash_var["type"] + ); + $f_var[(string) $flash_var->name] = $temp_var; + } + $f_vars[$f_var_section] = $f_var; + } + $plugin = new Plugin($title, $version, $repository, $file_name, $enabled, $description, $f_vars, $href); + return $plugin; + } +} + +?> diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/framework/PlayerPlugin.php b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/PlayerPlugin.php new file mode 100644 index 0000000..9eea4d7 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/PlayerPlugin.php @@ -0,0 +1,177 @@ +title = $name; + $this->version = $vers; + $this->repository = $repo; + $this->file_name = $file; + $this->description = $desc; + $this->flash_vars = $f_vars; + $this->enabled = $enable; + $this->page = $link; + } + + /** + * Get the title of the plugin. This is the natural language name. + * @return string The title of plugin + */ + public function getTitle() { + return $this->title; + } + + /** + * Set the title of the plugin. This is the natural language name. + * @param string $newTitle The new title of the plugin + */ + public function setTitle($new_title) { + $this->title = $new_title; + } + + /** + * Get the version of the plugin. + * @return string The version of the plugin + */ + public function getVersion() { + return $this->version; + } + + /** + * Set the version of the plugin. + * @param string $newVersion The new version of the plugin + */ + public function setVersion($new_version) { + $this->version = $new_version; + } + + /** + * Get the description of the plugin. + * @return string The description of the plugin + */ + public function getDescription() { + return $this->description; + } + + /** + * Set the description of the plugin. + * @param string $newDescription The new description of the plugin + */ + public function setDescription($new_description) { + $this->description = $new_description; + } + + /** + * Get the list of flashvars for the plugin. + * @return array An array of FlashVar objects associated with the plugin + */ + public function getFlashVars() { + return $this->flash_vars; + } + + /** + * Set the list of flashvars for the plugin. + * @param array $newFlashVars The new array of FlashVar objects to be associated with the plugin + */ + public function setFlashVars($new_flash_vars) { + $this->flash_vars = $new_flash_vars; + } + + /** + * Get the LongTail repository name of the plugin. + * @return string The LongTail repository name of the plugin + */ + public function getRepository() { + return $this->repository; + } + + /** + * Set the LongTail repository name of the plugin. + * @param string $newRepository The new LongTail repository name of the plugin + */ + public function setRepository($new_repository) { + $this->repository = $new_repository; + } + + /** + * Get the file name of the plugin. + * @return string The file name of the plugin + */ + public function getFileName() { + return $this->file_name; + } + + /** + * Set the file name of the plugin. + * @param string $newFileName The new file name of the plugin + */ + public function setFileName($new_file_name) { + $this->file_name = $new_file_name; + } + + /** + * Check if the plugin is enabled. + * @return string The enabled state of the plugin + */ + public function isEnabled() { + return $this->enabled; + } + + /** + * Set the enabled state of the plugin. + * @param string $enable The new enabled state of the plugin + */ + public function setEnabled($enable) { + $this->enabled = $enable; + } + + /** + * Get the plugin prefix for flashvars + * @return string The plugin prefix + */ + public function getPluginPrefix() { + return str_replace(".swf", "", $this->getFileName()); + } + + /** + * Get the home page for the plugin. + * @return string The home page for the plugin + */ + public function getPage() { + return $this->page; + } + + /** + * SEt the home page for the plugin. + * @param string $link The new home page for the plugin + */ + public function setPage($link) { + $this->page = $link; + } +} + +?> diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/framework/SWFObjectConfig.php b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/SWFObjectConfig.php new file mode 100644 index 0000000..04cc970 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/framework/SWFObjectConfig.php @@ -0,0 +1,158 @@ +id = "jwplayer-" . $divId; + $this->path = $player_path; + $this->conf = $config; + $this->cls = $config; + $this->init($params, $flash_vars); + } + + /** + * Perform the necessary initialization operations to prepare the SWFObject javascript object. + * @param array $params The list of SWFObject params + * @param $flash_vars + * + * @internal param array $flashVars The list of additional flashvars to be used in the embed + */ + private function init($params, $flash_vars) { + $wmode = isset($flash_vars["wmode"]) ? $flash_vars["wmode"] : "opaque"; + //Initialize defaults. + $default_params = array( + "width" => 400, + "height" => 280, + "allowfullscreen" => "true", + "allowscriptaccess" => "always", + "wmode" => $wmode, + "version" => "9", + "type" => "movie", + "bgcolor" => "#FFFFFF", + "express_redirect" => "/expressinstall.swf", + "class" => "", + ); + + $params += $default_params; + $width = $params["width"]; + $height = $params["height"]; + $express = $params["express_redirect"]; + $version = $params["version"]; + $bg_color = $params["bgcolor"]; + $this->cls = implode(" ", array($params["class"], "swfobject")); + $this->no_flash = isset($params["no_flash"]) ? $params["no_flash"] : ""; + + //Set the config flashvar to the Player configuration path + if ($this->conf != "") { + $flash_vars["config"] = $this->conf; + } + + //Populate the values used for the embed process. + $this->config["swfobject"]["files"][$this->id] = array( + "url" => $this->path, + "width" => isset($flash_vars["width"]) ? $flash_vars["width"] : $width, + "height" => isset($flash_vars["height"]) ? $flash_vars["height"] : $height, + "express_redirect" => $express, + "version" => $version, + "bgcolor" => $bg_color, + //The id and name need to be set for LTAS support + "attributes" => array("id" => $this->id, "name" => $this->id), + "params" => $params, + "flashVars" => $flash_vars, + ); + //Clear the default array + unset( + $params["width"], $params["height"], $params["express_redirect"], + $params["version"], $params["bgcolor"], $params["class"], $params["no_flash"] + ); + } + + /** + * Return the configuration values for generation of a SWFObject. + * @return array The configuration values for generation of a SWFObject + */ + public function getConfig() { + return $this->config; + } + + /** + * Generate the div to be inserted into the html page. + * @return string The div to be inserted into the html page + */ + public function generateDiv() { + //The outer div is needed for LTAS support. + return "
              id-div\" name=\"$this->id-div\">\n" . + "
              id\" class=\"{$this->cls}\">{$this->no_flash}
              \n" . + "
              \n"; + } + + /** + * Get the ID of the player to be embedded. + * @return string The id of the player to be embedded. + */ + public function getId() { + return $this->id; + } + + /** + * Generate the embed script for the player. + * @return string The embed script. + */ + public function generateEmbedScript() { + $id = $this->getId(); + $swf_config = $this->getConfig(); + $url = $swf_config["swfobject"]["files"][$id]["url"]; + $width = $swf_config["swfobject"]["files"][$id]["width"]; + $height = $swf_config["swfobject"]["files"][$id]["height"]; + $version = $swf_config["swfobject"]["files"][$id]["version"]; + $express_redirect = $swf_config["swfobject"]["files"][$id]["express_redirect"]; + $flash_vars = $this->transcribe_array($swf_config["swfobject"]["files"][$id]["flashVars"]); + $params = $this->transcribe_array($swf_config["swfobject"]["files"][$id]["params"]); + $attributes = $this->transcribe_array($swf_config["swfobject"]["files"][$id]["attributes"]); + return $this->generateDiv() . ""; + } + + /** + * Convert the PHP array of embed parameters to an array of JavaScript objects. + * @param $target + * + * @internal param \The $array PHP array to be transcribed. + * @return string The array of JavaScript objects. + */ + private function transcribe_array($target) { + $temp_array = array(); + foreach ($target as $key => $val) { + $temp_array[] = "\"" . $key . "\":" . "\"" . $val . "\""; + } + return "{" . implode(", ", $temp_array) . "}"; + } + +} + +?> diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/js/jquery.ui.jw.js b/wp-content/plugins/jw-player-plugin-for-wordpress/js/jquery.ui.jw.js new file mode 100644 index 0000000..06d7b03 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/js/jquery.ui.jw.js @@ -0,0 +1,89 @@ +/*! + * jQuery UI 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Widget + */ +(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype= +b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g= +b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create(); +this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/* + * jQuery UI Button 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Button + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,e=a([]);if(c)e=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return e};a.widget("ui.button",{options:{text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",i);this._determineButtonType(); +this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",e="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button", +function(){c.disabled||a(this).removeClass(e)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button", +function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var f=b.element[0];h(f).not(f).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button", +function(f){if(c.disabled)return false;if(f.keyCode==a.ui.keyCode.SPACE||f.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(f){f.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")? +"input":"button";if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var b=this.element.is(":checked");b&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()); +this.hasTitle||this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed", +true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon ui-button-text-only"), +c=a("").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Tabs 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Tabs + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(d){function s(){return++u}function v(){return++w}var u=0,w=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
              ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:'
            • #{label}
            • '},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c= +d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]|| +(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show", +null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs", +function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g, +j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this, +"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", +true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide"); +this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1=c?--h:h});this._tabify();this._trigger("remove", +null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this}, +select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing"); +if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}}, +abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate= +function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++khttp://codex.wordpress.org/Changing_File_Permissions.'); + +// Check for WP2.7 installation +if (!defined ('IS_WP27')) { + define('IS_WP27', version_compare($wp_version, '2.7', '>=') ); +} + +// This works only in WP2.7 or higher +if (IS_WP27 == FALSE) { + add_action('admin_notices', create_function('', 'echo \'

              ' . + __('Sorry, the JWPlayer Plugin for WordPress works only under WordPress 2.7 or higher.') . '

              \';')); + return; +} + +// The plugin is only compatible with PHP 5.0 or higher +if (version_compare(phpversion(), "5.0", '<')) { + add_action('admin_notices', create_function('', 'echo \'

              ' . + __('Sorry, the JWPlayer Plugin for WordPress only works with PHP Version 5 or higher.') . '

              \';')); + return; +} + +//Include core plugin files. +include_once (dirname (__FILE__) . "/framework/LongTailFramework.php"); +include_once (dirname (__FILE__) . "/admin/AdminContext.php"); +include_once (dirname (__FILE__) . "/media/JWMediaFunctions.php"); +include_once (dirname (__FILE__) . "/media/JWShortcode.php"); + +register_deactivation_hook(__FILE__, "jwplayer_deactivation"); +add_action('init', 'jwplayer_init'); + +//Define the plugin directory and url for file access. +$uploads = wp_upload_dir(); +if (isset($uploads["error"]) && !empty($uploads["error"])) { + add_action('admin_notices', create_function('', 'echo \'

              There was a ' . + 'problem completing activation of the JW Player Plugin for WordPress. Please note that the JWPlayer Plugin for ' . + 'WordPress requires that the WordPress uploads directory exists and is writable. ' . JW_FILE_PERMISSIONS . '

              \';')); + return; +} +$use_ssl = get_option(LONGTAIL_KEY . "use_ssl"); +$isHttps = is_ssl() && $use_ssl; +$pluginURL = $isHttps ? str_replace("http://", "https://", WP_PLUGIN_URL) : WP_PLUGIN_URL; +$uploadsURL = $isHttps ? str_replace("http://", "https://", $uploads["baseurl"]) : $uploads["baseurl"]; +define("JWPLAYER_PLUGIN_DIR", WP_PLUGIN_DIR . "/" . plugin_basename(dirname(__FILE__))); +define("JWPLAYER_PLUGIN_URL", $pluginURL . "/" . plugin_basename(dirname(__FILE__))); +define("JWPLAYER_FILES_DIR", $uploads["basedir"] . "/" . plugin_basename(dirname(__FILE__))); +define("JWPLAYER_FILES_URL", $uploadsURL . "/" . plugin_basename(dirname(__FILE__))); + +if (is_admin()) { + add_action( 'plugins_loaded', create_function( '', 'global $adminContext; $adminContext = new AdminContext();' ) ); + add_action("admin_menu", "jwplayer_plugin_menu"); +} + +function jwplayer_deactivation() { + delete_option(LONGTAIL_KEY . "uninstalled"); +} + +function jwplayer_init() { + global $pluginURL; + clearstatcache(); + if (!@is_dir(JWPLAYER_FILES_DIR)) { + if (!@mkdir(JWPLAYER_FILES_DIR, 0755, true)) { + add_action('admin_notices', create_function('', 'echo \'

              ' . + __('There was a problem completing activation of the plugin. The wp-content/uploads/jw-player-plugin-for-wordpress directory could not be created. ' . + 'Please ensure the WordPress uploads directory is writable. ' . JW_FILE_PERMISSIONS) . '

              \';')); + return; + } + chmod(JWPLAYER_FILES_DIR, 0755); + if (!@mkdir(JWPLAYER_FILES_DIR . "/player", 0755)) { + add_action('admin_notices', create_function('', 'echo \'

              ' . + __('There was a problem completing activation of the plugin. The wp-content/uploads/jw-player-plugin-for-wordpress/player directory could not be created. ' . + 'Please ensure the WordPress uploads directory is writable. ' . JW_FILE_PERMISSIONS) . '

              \';')); + return; + } + chmod(JWPLAYER_FILES_DIR . "/player", 0755); + if (!@mkdir(JWPLAYER_FILES_DIR . "/configs", 0755)) { + add_action('admin_notices', create_function('', 'echo \'

              ' . + __('There was a problem completing activation of the plugin. The wp-content/uploads/jw-player-plugin-for-wordpress/configs directory could not be created. ' . + 'Please ensure the WordPress uploads directory is writable. ' . JW_FILE_PERMISSIONS) . '

              \';')); + return; + } + chmod(JWPLAYER_FILES_DIR . "/configs", 0755); + if (@is_dir(JWPLAYER_PLUGIN_DIR . "/configs")) { + foreach (get_old_configs() as $config) { + @rename(JWPLAYER_PLUGIN_DIR . "/configs/$config.xml", JWPLAYER_FILES_DIR . "/configs/$config.xml"); + } + } + } + if (!@is_dir(JWPLAYER_FILES_DIR)) { + add_action('admin_notices', create_function('', 'echo \'

              ' . + __('Activation of the JW Player Plugin for WordPress could not complete successfully. The following directories could not be created automatically:

              • - ' . + JWPLAYER_FILES_DIR . '
              • - ' . JWPLAYER_FILES_DIR . '/configs
              • - ' . JWPLAYER_FILES_DIR . + '/player

              Please ensure these directories are writable. ' . JW_FILE_PERMISSIONS) . '

              \';')); + } else if (!file_exists(LongTailFramework::getPlayerPath())) { + // Error if the player doesn't exist + add_action('admin_notices', "jwplayer_install_notices"); + } + if (file_exists(LongTailFramework::getEmbedderPath())) { + if (get_option(LONGTAIL_KEY . "player_location_enable")) { + wp_register_script("jw-embedder", get_option(LONGTAIL_KEY . "player_location") . "jwplayer.js", array(), false); + } else { + wp_register_script("jw-embedder", LongTailFramework::getEmbedderURL(), array(), false); + } + if (get_option(LONGTAIL_KEY . "use_head_js")) { + wp_enqueue_script('jw-embedder'); + } + } else if (get_option(LONGTAIL_KEY . "use_head_js")) { + wp_enqueue_script('swfobject'); + } + if (!get_option(LONGTAIL_KEY . "uninstalled")) jwplayer_upgrade(); + add_filter("the_content", "jwplayer_tag_callback", 11); + add_filter("the_excerpt", "jwplayer_tag_excerpt_callback", 11); + add_filter("widget_text", "jwplayer_tag_widget_callback", 11); + // Parse the $_GET vars for callbacks + add_filter('query_vars', 'jwplayer_queryvars' ); + add_action('parse_request', 'jwplayer_parse_request', 9 ); + add_action("wp_ajax_verify_player", "verify_player"); +} + +function jwplayer_upgrade() { + $version = get_option(LONGTAIL_KEY . "plugin_version"); + if (!$version || version_compare($version, '1.5.1', '<')) { + if (!get_option(LONGTAIL_KEY . "default")) update_option(LONGTAIL_KEY . "default", "Out-of-the-Box"); + if (!get_option(LONGTAIL_KEY . "player_location_enable")) update_option(LONGTAIL_KEY . "player_location_enable", 0); + if (!get_option(LONGTAIL_KEY . "image_duration")) update_option(LONGTAIL_KEY . "image_duration", true); + if (!get_option(LONGTAIL_KEY . "image_insert")) update_option(LONGTAIL_KEY . "image_insert", true); + if (!get_option(LONGTAIL_KEY . "facebook")) update_option(LONGTAIL_KEY . "facebook", true); + if (get_option(LONGTAIL_KEY . "show_archive")) { + if (!get_option(LONGTAIL_KEY . "category_mode")) update_option(LONGTAIL_KEY . "category_mode", "excerpt"); + if (!get_option(LONGTAIL_KEY . "search_mode")) update_option(LONGTAIL_KEY . "search_mode", "excerpt"); + if (!get_option(LONGTAIL_KEY . "tag_mode")) update_option(LONGTAIL_KEY . "tag_mode", "excerpt"); + } else { + if (!get_option(LONGTAIL_KEY . "category_mode")) update_option(LONGTAIL_KEY . "category_mode", "content"); + if (!get_option(LONGTAIL_KEY . "search_mode")) update_option(LONGTAIL_KEY . "search_mode", "content"); + if (!get_option(LONGTAIL_KEY . "tag_mode")) update_option(LONGTAIL_KEY . "tag_mode", "content"); + } + if (!get_option(LONGTAIL_KEY . "home_mode")) update_option(LONGTAIL_KEY . "home_mode", "content"); + update_option(LONGTAIL_KEY . "plugin_version", "1.5.1"); + } + if (!$version || version_compare($version, '1.5.3', '<')) { + update_option(LONGTAIL_KEY . "use_ssl", true); + update_option(LONGTAIL_KEY . "plugin_version", "1.5.3"); + } + if (!$version || version_compare($version, '1.5.4', '<')) { + update_option(LONGTAIL_KEY . "use_head_js", true); + update_option(LONGTAIL_KEY . "plugin_version", "1.5.4"); + } + if (!$version || version_compare($version, '1.5.6', '<')) { + update_option(LONGTAIL_KEY . "player_mode", "flash"); + update_option(LONGTAIL_KEY . "plugin_version", "1.5.6"); + } +} + +function jwplayer_install_notices() { + if (isset($_GET["page"]) && $_GET["page"] == "jwplayer-update") { + return; + } ?> +
              +
              " method="post" action=""> +

              + + +

              +
              +
              +'."\n"; +} + +// Entry point to the Player configuration wizard. +function jwplayer_plugin_pages() { + switch ($_GET["page"]) { + case "jwplayer" : + global $adminContext; + $adminContext->processState(); + break; + case "jwplayer-license" : + require_once (dirname(__FILE__) . "/admin/LicensePage.php"); + break; + case "jwplayer-update" : + require_once (dirname(__FILE__) . "/admin/UpdatePage.php"); + break; + case "jwplayer-settings" : + require_once (dirname(__FILE__) . "/admin/SettingsPage.php"); + break; + } +} + +function jwplayer_media_pages() { + require_once(dirname(__FILE__) . "/media/JWPlaylistManager.php"); +} + +// Process xspf playlist requests. +function jwplayer_queryvars($query_vars) { + $query_vars[] = 'xspf'; + return $query_vars; +} + +// Parse xspf playlist requests. +function jwplayer_parse_request($wp) { + if (array_key_exists('xspf', $wp->query_vars) && $wp->query_vars['xspf'] == 'true') { + require_once (dirname (__FILE__) . '/media/JWPlaylistGenerator.php'); + exit(); + } +} + +// Handles Ajax call with submitted player version +function verify_player() { + $response = false; + if ($_POST["version"] != "null") { + $response = true; + update_option(LONGTAIL_KEY . "version", $_POST["version"]); + } + echo (int) $response; + exit; +} + +// Grab existing configs for migration to new configs directory +function get_old_configs() { + $results = array(); + $handler = @opendir(JWPLAYER_PLUGIN_DIR . "/configs"); + $results[] = "New Player"; + while ($file = @readdir($handler)) { + if ($file != "." && $file != ".." && strstr($file, ".xml")) { + $results[] = str_replace(".xml", "", $file); + } + } + @closedir($handler); + return $results; +} + +function skin_unzip($archive) { + if (class_exists('ZipArchive')) { + $zip = new ZipArchive(); + if ($zip->open($archive)) { + $zip->extractTo(LongTailFramework::getSkinPath()); + $zip->close(); + return true; + } + } else { + require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php'); + $zip = new PclZip($archive); + $zip->extract(PCLZIP_OPT_PATH, LongTailFramework::getSkinPath()); + return true; + } + return false; +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWMediaFunctions.php b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWMediaFunctions.php new file mode 100644 index 0000000..ba20486 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWMediaFunctions.php @@ -0,0 +1,433 @@ +ID, LONGTAIL_KEY . "fb_headers_id", true); + $meta_header_config = get_post_meta($post->ID, LONGTAIL_KEY . "fb_headers_config", true); + if (empty($meta_header_id)) { + return; + } else if (is_numeric($meta_header_id)) { + $attachment = get_post($meta_header_id); + $title = $attachment->post_title; + $description = $attachment->post_content; + $thumbnail = get_post_meta($meta_header_id, LONGTAIL_KEY . "thumbnail_url", true); + if (!isset($thumbnail) || $thumbnail == null || $thumbnail == "") { + $image_id = get_post_meta($meta_header_id, LONGTAIL_KEY . "thumbnail", true); + if (isset($image_id)) { + $image_attachment = get_post($image_id); + $thumbnail = !empty($image_attachment) ? $image_attachment->guid : ""; + } + } + $settings[] = "file=" . $attachment->guid; + } else { + $title = $post->post_title; + $description = $post->post_excerpt; + $thumbnail = ""; + $settings[] = "file=$meta_header_id"; + } + if (!empty($meta_header_config) && $meta_header_config != "") { + LongTailFramework::setConfig($meta_header_config); + } else { + LongTailFramework::setConfig(get_option(LONGTAIL_KEY . "default")); + } + $config_values = LongTailFramework::getConfigValues(); + $width = isset($config_values["width"]) ? $config_values["width"] : ""; + $height = isset($config_values["height"]) ? $config_values["height"] : ""; + foreach ($config_values as $key => $value) { + $settings[] = "$key=$value"; + } + $settings_string = htmlspecialchars(implode("&", $settings)); + $facebook_url = LongTailFramework::getPlayerURL(); + if ($settings_string) $facebook_url .= "?$settings_string"; + $output = ""; + $output .= ""; + $output .= ""; + $output .= ""; + $output .= ""; + $output .= ""; + $output .= ""; + $output .= ""; + $output .= ""; + echo $output; +} + +// Filter hook for specifying which custom fields are save. +add_filter("attachment_fields_to_save", "jwplayer_attachment_fields_to_save", 10, 2); + +/** + * Handler function for saving custom fields. + * @param array $post Array representing the post we are saving. + * @param array $attachment Array representing the attachment fields being + * saved. + * @return array $post updated with the attachment fields to be saved. + */ +function jwplayer_attachment_fields_to_save($post, $attachment) { + $mime_type = substr($post["post_mime_type"], 0, 5); + $rtmp = get_post_meta($post["ID"], LONGTAIL_KEY . "rtmp"); + if ($mime_type == "video" && isset($rtmp)) { + update_post_meta($post["ID"], LONGTAIL_KEY . "streamer", isset($attachment[LONGTAIL_KEY . "streamer"]) ? $attachment[LONGTAIL_KEY . "streamer"] : ""); + update_post_meta($post["ID"], LONGTAIL_KEY . "file", isset($attachment[LONGTAIL_KEY . "file"]) ? $attachment[LONGTAIL_KEY . "file"] : ""); + update_post_meta($post["ID"], LONGTAIL_KEY . "provider", isset($attachment[LONGTAIL_KEY . "provider"]) ? $attachment[LONGTAIL_KEY . "provider"] : ""); + } + if ($mime_type == "video" || $mime_type == "audio") { + update_post_meta($post["ID"], LONGTAIL_KEY . "thumbnail", $attachment[LONGTAIL_KEY . "thumbnail"]); + update_post_meta($post["ID"], LONGTAIL_KEY . "thumbnail_url", $attachment[LONGTAIL_KEY . "thumbnail_url"]); + update_post_meta($post["ID"], LONGTAIL_KEY . "creator", $attachment[LONGTAIL_KEY . "creator"]); + update_post_meta($post["ID"], LONGTAIL_KEY . "duration", $attachment[LONGTAIL_KEY . "duration"]); + update_post_meta($post["ID"], LONGTAIL_KEY . "html5_file", $attachment[LONGTAIL_KEY . "html5_file"]); + update_post_meta($post["ID"], LONGTAIL_KEY . "html5_file_selector", $attachment[LONGTAIL_KEY . "html5_file_selector"]); + update_post_meta($post["ID"], LONGTAIL_KEY . "download_file", $attachment[LONGTAIL_KEY . "download_file"]); + update_post_meta($post["ID"], LONGTAIL_KEY . "download_file_selector", $attachment[LONGTAIL_KEY . "download_file_selector"]); + } + if ($mime_type == "image") { + update_post_meta($post["ID"], LONGTAIL_KEY . "duration", $attachment[LONGTAIL_KEY . "duration"]); + } + return $post; +} + +// Filter hook for specifying additional fields to appear when editing +// attachments. +add_filter("attachment_fields_to_edit", "jwplayer_attachment_fields", 10, 2); + +/** + * Handler function for displaying custom fields. + * @param array $form_fields The fields to appear on the attachment form. + * @param array $post Object representing the post we are saving to. + * @return array Updated $form_fields with the new fields. + */ +function jwplayer_attachment_fields($form_fields, $post) { + $image_args = array( + "post_type" => "attachment", + "numberposts" => 50, + "post_status" => null, + "post_mime_type" => "image", + "post_parent" => null + ); + $image_attachments = get_posts($image_args); + $video_args = array( + "post_type" => "attachment", + "numberposts" => 25, + "post_status" => null, + "post_mime_type" => "video", + "post_parent" => null + ); + $video_attachments = get_posts($video_args); + $mime_type = substr($post->post_mime_type, 0, 5); + switch($mime_type) { + case "image": + if (get_option(LONGTAIL_KEY . "image_duration")) { + $form_fields[LONGTAIL_KEY . "duration"] = array( + "label" => __("Duration"), + "input" => "text", + "value" => get_post_meta($post->ID, LONGTAIL_KEY . "duration", true) + ); + } + break; + case "audio": + case "video": + $form_fields[LONGTAIL_KEY . 'thumbnail_url'] = array( + "label" => __("Thumbnail URL"), + "input" => "text", + "value" => get_post_meta($post->ID, LONGTAIL_KEY . "thumbnail_url", true) + ); + $form_fields[LONGTAIL_KEY . "thumbnail"] = array( + "label" => __("Thumbnail"), + "input" => "html", + "html" => generateImageSelectorHTML($post->ID, $image_attachments) + ); + $form_fields[LONGTAIL_KEY . "creator"] = array( + "label" => __("Creator"), + "input" => "text", + "value" => get_post_meta($post->ID, LONGTAIL_KEY . "creator", true) + ); + $form_fields[LONGTAIL_KEY . "duration"] = array( + "label" => __("Duration"), + "input" => "text", + "value" => get_post_meta($post->ID, LONGTAIL_KEY . "duration", true) + ); + $form_fields[LONGTAIL_KEY . 'html5_file'] = array( + "label" => __("HTML5 file"), + "input" => "text", + "value" => get_post_meta($post->ID, LONGTAIL_KEY . "html5_file", true) + ); + $form_fields[LONGTAIL_KEY . 'html5_file_selector'] = array( + "label" => __(""), + "input" => "html", + "html" => generateVideoSelectorHTML($post->ID, "html5_file_selector", $video_attachments) + ); + $form_fields[LONGTAIL_KEY . 'download_file'] = array( + "label" => __("Download file"), + "input" => "text", + "value" => get_post_meta($post->ID, LONGTAIL_KEY . "download_file", true) + ); + $form_fields[LONGTAIL_KEY . 'download_file_selector'] = array( + "label" => __(""), + "input" => "html", + "html" => generateVideoSelectorHTML($post->ID, "download_file_selector", $video_attachments) + ); + break; + } + $rtmp = get_post_meta($post->ID, LONGTAIL_KEY . "rtmp"); + if ($mime_type == "video" && isset($rtmp) && $rtmp) { + unset($form_fields["url"]); + $form_fields[LONGTAIL_KEY . "streamer"] = array( + "label" => __("Streamer"), + "input" => "text", + "value" => get_post_meta($post->ID, LONGTAIL_KEY . "streamer", true) + ); + $form_fields[LONGTAIL_KEY . "file"] = array( + "label" => __("File"), + "input" => "text", + "value" => get_post_meta($post->ID, LONGTAIL_KEY . "file", true) + ); + $form_fields[LONGTAIL_KEY . "provider"] = array( + "label" => __("Provider"), + "input" => "text", + "value" => get_post_meta($post->ID, LONGTAIL_KEY . "provider", true) + ); + } + if (isset($_GET["post_id"]) && ($mime_type == "video" || $mime_type == "audio" || ($mime_type == "image" && get_option(LONGTAIL_KEY . "image_duration")))) { + $insert = ""; + $form_fields[LONGTAIL_KEY . "player_select"] = array( + "label" => __("Select Player"), + "input" => "html", + "html" => generatePlayerSelectorHTML($post->ID) + ); + $form_fields["jwplayer"] = array("tr" => "\t\t$insert\n"); + } + return $form_fields; +} + +/** + * Generates the HTML for rendering the thumbnail image selector. + * @param int $id The id of the current attachment. + * @param $attachments + * @return string The HTML to render the image selector. + */ +function generateImageSelectorHTML($id, $attachments) { + $output = ""; + $sel = false; + if ($attachments) { + $output .= "\n"; + $output .= "\n"; + $output .= "\n"; + $output .= "\n"; + } + return $output; +} + +function generateVideoSelectorHTML($id, $field, $attachments) { + $output = ""; + $sel = false; + if ($attachments) { + $output .= "\n"; + $output .= "\n"; + $output .= "\n"; + $output .= "\n"; + } + return $output; +} + +/** + * Generates the combobox of available players. + * @param int $id The attachment id. + * @return string The HTML to render the player selector. + */ +function generatePlayerSelectorHTML($id) { + $player_select = "\n"; + return $player_select; +} + +// Filter hook for modifying the text inserted into the post body. +add_filter("media_send_to_editor", "jwplayer_tag_to_editor", 11, 3); + +/** + * Handler function for modifying the text entered into the post body. If the + * "Insert JW Player" button isn't hit the standard WordPress behavior is used. + * Otherwise the jwplayer tag is inserted. + * @param string $html The html WordPress will insert. + * @param string $send_id The id of the object triggering the insert. + * @param array $attachment The attachment to be inserted. + * @return string The text to be inserted. + */ +function jwplayer_tag_to_editor($html, $send_id, $attachment) { + if ($_POST["send"][$send_id] == "Insert JW Player") { + $output = "[jwplayer "; + if ($attachment[LONGTAIL_KEY . "player_select"] != "Default") { + $output .= "config=\"" . $attachment[LONGTAIL_KEY . "player_select"] . "\" "; + update_post_meta($_GET["post_id"], LONGTAIL_KEY . "fb_headers_config", $attachment[LONGTAIL_KEY . "player_select"]); + } + $output .= "mediaid=\"" . $send_id . "\"]"; + update_post_meta($_GET["post_id"], LONGTAIL_KEY . "fb_headers_id", $send_id); + return $output; + } + return $html; +} + +// Action hook for defining what the URL tab should use to render itself. +add_action("media_upload_jwplayer_url", "jwplayer_url_render"); + +/** + * Handler for rendering the External Media tab. + * @return string The HTML to render the tab. + */ +function jwplayer_url_render() { + $errors = null; + if (!empty($_POST)) { + $return = media_upload_form_handler(); + + if (is_string($return)) { + return $return; + } + if (is_array($return)) { + $errors = $return; + } + } + require_once (dirname(__FILE__) . "/JWURLImportManager.php"); + return wp_iframe("media_jwplayer_url_insert_form", $errors); +} + +// Action hook for defining what the Playlist tab should use to render itself. +add_action("media_upload_jwplayer", "jwplayer_render"); + +/** + * Handler for rendering the JW Playlist Manager tab. + * @return string The HTML to render the tab. + */ +function jwplayer_render() { + $errors = null; + if (!empty($_POST)) { + $return = media_upload_form_handler(); + + if (is_string($return)) { + return $return; + } + if (is_array($return)) { + $errors = $return; + } + } + wp_enqueue_script('admin-gallery'); + require_once (dirname(__FILE__) . "/JWPlaylistImportManager.php"); + return wp_iframe("media_jwplayer_insert_form", $errors); +} + +// Filter hook for adding additional tabs. +add_filter("media_upload_tabs", "jwplayer_tab"); + +/** + * Handler for adding additional tabs. + * @param array $_default_tabs The array of tabs. + * @return array $_default_tabs with the new tabs added. + */ +function jwplayer_tab($_default_tabs) { + $_default_tabs["jwplayer_url"] = "External Media"; + $_default_tabs["jwplayer"] = "Playlists"; + return $_default_tabs; +} + +// Filter hook for modifying the URL that displays for URL attachments. +add_filter("wp_get_attachment_url", "url_attachment_filter", 10, 2); + +/** + * Handler for modifying the attachment url. + * @param string $url The current URL. + * @param $id The id of the post. + * @return string The modified URL. + */ +function url_attachment_filter($url, $id) { + preg_match_all("/http:\/\/|rtmp:\/\//", $url, $matches); + if (count($matches[0]) > 1) { + $upload_dir = wp_upload_dir(); + return str_replace($upload_dir["baseurl"] . "/", "", $url); + } + return $url; +} + +// Filter hook for modifying the file value that appears in the Media Library. +add_filter("get_attached_file", "url_attached_file", 10, 2); + +/** + * Handler for modifying the path to the attached file. + * @param string $file The current file path. + * @param int $attachment_id The id of the attachmenet. + * @return string The modified file path. + */ +function url_attached_file($file, $attachment_id) { + global $post; + $external = get_post_meta($attachment_id, LONGTAIL_KEY . "external", true); + if ((isset($post) && substr($post->post_mime_type, 0, 5) == "video") || $external) { + $upload_dir = wp_upload_dir(); + return str_replace($upload_dir["basedir"] . "/", "", $file); + } + return $file; +} + +?> diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWPlaylistGenerator.php b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWPlaylistGenerator.php new file mode 100644 index 0000000..def42e8 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWPlaylistGenerator.php @@ -0,0 +1,67 @@ +"; +echo "\n\t".'' . esc_attr($title) . ''; +echo "\n\t".''; + +if (is_array ($playlist_items)) { + foreach ($playlist_items as $playlist_item_id) { + $playlist_item = get_post($playlist_item_id); + $image_id = get_post_meta($playlist_item_id, LONGTAIL_KEY . "thumbnail", true); + $creator = get_post_meta($playlist_item_id, LONGTAIL_KEY . "creator", true); + $thumbnail = get_post_meta($playlist_item_id, LONGTAIL_KEY . "thumbnail_url", true); + $streamer = get_post_meta($playlist_item_id, LONGTAIL_KEY . "streamer", true); + $file = get_post_meta($playlist_item_id, LONGTAIL_KEY . "file", true); + if (empty($thumbnail)) { + $temp = get_post($image_id); + $image = $temp->guid; + } else { + $image = $thumbnail; + } + + echo "\n\t\t".''; + echo "\n\t\t\t".'' . esc_attr(stripslashes($playlist_item->post_title)) . ''; + echo "\n\t\t\t".'' . esc_attr($creator) . ''; + if (!empty($streamer)) { + echo "\n\t\t\t".'' . esc_attr($streamer) . ''; + echo "\n\t\t\t".'' . esc_attr($file) . ''; + } else { + echo "\n\t\t\t".'' . esc_attr($playlist_item->guid) . ''; + } + if (substr($playlist_item->post_mime_type, 0, 5) == "image") { + $duration = get_post_meta($playlist_item_id, LONGTAIL_KEY . "duration", true); + echo "\n\t\t\t"."" . ($duration ? $duration : 10) . ""; + echo "\n\t\t\t".'' . esc_attr($playlist_item->guid) . ''; + } else { + echo "\n\t\t\t".'' . esc_attr($image) . ''; + } + echo "\n\t\t\t".'' . esc_attr( stripslashes($playlist_item->post_content) ) . ''; + echo "\n\t\t\t".'' . $playlist_item_id . ''; + echo "\n\t\t\t".'' . $playlist_item_id . ''; + echo "\n\t\t".''; + } +} + +echo "\n\t".''; +echo "\n"."\n"; + +?> \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWPlaylistImportManager.php b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWPlaylistImportManager.php new file mode 100644 index 0000000..430b7f8 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWPlaylistImportManager.php @@ -0,0 +1,110 @@ +ID; +?> + + + +
              + + +

              +

              +
              +
              +
              +
              + + + + + +
              +
              + +
              + +

              + + + +

              +
              +
              +
              + "jw_playlist", + "post_status" => null, + "post_parent" => null, + "nopaging" => true, + ); + return query_posts($playlist); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWPlaylistManager.php b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWPlaylistManager.php new file mode 100644 index 0000000..7b3e1b5 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWPlaylistManager.php @@ -0,0 +1,409 @@ +ID; + } else { + $new_playlist_id = wp_insert_post($new_playlist); + $playlists = jwplayer_get_playlists(); + } + $current_playlist = $new_playlist_id; +} else if (isset($_POST["delete"])) { + wp_delete_post($_POST[LONGTAIL_KEY . "playlist_select"]); + $playlists = jwplayer_get_playlists(); + $current_playlist = $playlists[0]->ID; +} + +if (!isset($current_playlist)) { + if (isset($_POST[LONGTAIL_KEY . "playlist_select"])) { + $current_playlist = $_POST[LONGTAIL_KEY . "playlist_select"]; + } else if (isset($_GET["playlist"])) { + $current_playlist = $_GET["playlist"]; + } else if (!empty($playlists)) { + $current_playlist = $playlists[0]->ID; + } else { + $current_playlist = -1; + } +} + +if (isset($_GET["p_items"])) { + $p_items = json_decode(str_replace("\\", "", $_GET["p_items"])); +} else if (isset($_POST["playlist_items"]) && $_POST["old_playlist"] == $current_playlist) { + $p_items = json_decode(str_replace("\\", "", $_POST["playlist_items"])); +} else { + $p_items = explode(",", get_post_meta($current_playlist, LONGTAIL_KEY . "playlist_items", true)); +} + +update_post_meta($new_playlist_id, LONGTAIL_KEY . "playlist_items", implode(",", $p_items)); + +$file_order = "asc"; +$file_class = "sortable asc"; +$author_order = "asc"; +$author_class = "sortable asc"; +$date_order = "asc"; +$date_class = "sortable asc"; +$order_by = "date"; +$order = "desc"; +if (isset($_GET["orderby"]) && isset($_GET["order"])) { + $order_by = $_GET["orderby"]; + $order = $_GET["order"]; + if ($order_by == "title") { + $file_order = $order == "desc" ? "asc" : "desc"; + $file_class = "sorted $order"; + } else if ($order_by == "post_author") { + $author_order = $order == "desc" ? "asc" : "desc"; + $author_class = "sorted $order"; + } else if ($order_by == "date") { + $date_order = $order == "desc" ? "asc" : "desc"; + $date_class = "sorted $order"; + } +} else { + $date_order = "desc"; + $date_class = "sortable desc"; +} + +$playlist_items = get_jw_playlist_items($p_items); +$paged = isset($_GET['paged']) ? $_GET['paged'] : 1; +$search = isset($_POST["s"]) ? $_POST["s"] : ""; +$media_items = get_jw_media_items($paged, $order_by, $order, $search, $p_items); +if ($paged > 1 && !$media_items->have_posts()) { + $paged = 1; + $media_items = get_jw_media_items($paged, $order_by, $order, $search, $p_items); +} +$total = ceil($media_items->found_posts / 10); + +$page_links = paginate_links( array( + 'base' => add_query_arg( 'paged', '%#%' ), + 'format' => '', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => $total, + 'current' => $paged, + 'add_args' => array('playlist' => $current_playlist, 'orderby' => $order_by, 'order' => $order) +)); + +function get_jw_media_items($page, $column = "date", $sort = "DESC", $search="", $playlist_items = array()) { + $args = array( + 'post_parent' => null, + 'posts_per_page' => 10, + 'paged' => $page, + 'post_status' => 'inherit', + 'post_type' => 'attachment', + 'orderby' => $column, + 'order' => $sort, + 'post__not_in' => $playlist_items, + 's' => $search + ); + $query = new WP_Query($args); + return $query; +} + +function get_jw_playlist_items($playlist_item_ids = array()) { + $args = array( + 'post_parent' => null, + 'posts_per_page'=>-1, + 'post_status' => 'inherit', + 'post_type' => 'attachment', + 'post__in' => $playlist_item_ids + ); + $items = new WP_Query($args); + $ordered_items = array(); + foreach ($playlist_item_ids as $playlist_item_id) { + while ($items->have_posts()) { + $item = $items->next_post(); + if ($item->ID == $playlist_item_id) { + $ordered_items[$playlist_item_id] = $item; + } + } + } + return $ordered_items; +} + +function jwplayer_get_playlists() { + $playlist = array( + "post_type" => "jw_playlist", + "post_status" => null, + "post_parent" => null, + "nopaging" => true, + ); + return query_posts($playlist); +} + +?> + +
              +

              + + + +
              +
              +
              +

              + + " name="" /> + " id="" value="" onclick="return createPlaylistHandler()" /> +

              +
              +
              +
              + + + + + + + Media List +
              +
              +
              +
              + + + +
              +
              +
              +
              +
              + + + + + + + + + + + + $playlist_item) { ?> + + + + + + + + + > + + + +
              FileAuthorDate
              + post_mime_type, 0, 5); ?> + guid : "http://localhost/wordpress/wp-includes/images/crystal/video.png"; ?> + + <?php echo $playlist_item->post_title; ?> + + + post_title ? $playlist_item->post_title : $playlist_item->guid ?> + + + ID, LONGTAIL_KEY . "creator", true); ?>post_date); ?>
              Drag items from the Media List to start building your playlist.
              +
              +
              + + + + + + + + + + + + have_posts()) { ?> + next_post(); ?> + + + + + + + + found_posts > 0 ? "style='display: none;'" : ""; ?> + > + + + +
              + + File + + + + + Author + + + + + Date + + +
              + post_mime_type, 0, 5); ?> + guid : "http://localhost/wordpress/wp-includes/images/crystal/video.png"; ?> + + <?php echo $media_item->post_title; ?> + + + post_title ? $media_item->post_title : $media_item->guid ?> + + + ID, LONGTAIL_KEY . "creator", true); ?>post_date); ?>
              No Results
              + +
              +
              + + +
              +
              + +
              +
              +
              +
              +
              +
              \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWShortcode.php b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWShortcode.php new file mode 100644 index 0000000..ddec610 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWShortcode.php @@ -0,0 +1,377 @@ +media
              ' . "\n"; + } + return $out; + } + return generate_embed_code($atts); +} + +function resolve_media_id(&$atts) { + $id = $atts["mediaid"]; + $post = get_post($id); + if (!isset($atts["image"])) { + $thumbnail = get_post_meta($id, LONGTAIL_KEY . "thumbnail_url", true); + if (!isset($thumbnail) || $thumbnail == null || $thumbnail == "") { + $image_id = get_post_meta($id, LONGTAIL_KEY . "thumbnail", true); + if (isset($image_id)) { + $image_attachment = get_post($image_id); + $atts["image"] = isset($image_attachment) ? $image_attachment->guid : ""; + } + } else { + $atts["image"] = $thumbnail; + } + } + $mime_type = substr($post->post_mime_type, 0, 5); + if ($mime_type == "image") { + $duration = get_post_meta($id, LONGTAIL_KEY . "duration", true); + $atts["duration"] = $duration ? $duration : 10; + $atts["image"] = $post->guid; + } else if ($mime_type == "audio") { + if (empty($atts["image"]) && empty($atts["width"]) && empty($atts["height"])) { + $atts["playerReady"] = "function(obj) { document.getElementById(obj['id']).parentNode.style.height = document.getElementById(obj['id']).getPluginConfig('controlbar')['height'] %2B 'px'; }"; + $atts["icons"] = false; + $atts["controlbar"] = "bottom"; + } + } + if (!isset($atts["file"])) { + $rtmp = get_post_meta($id, LONGTAIL_KEY . "rtmp"); + if (isset($rtmp) && $rtmp) { + $atts["streamer"] = get_post_meta($id, LONGTAIL_KEY . "streamer", true); + $atts["file"] = get_post_meta($id, LONGTAIL_KEY . "file", true); + } else { + $atts["file"] = $post->guid; + } + } + if (!array_key_exists("html5_file", $atts)) { + if ($html5_file = retrieve_file("html5", $id)) $atts["html5_file"] = $html5_file; + } + if (!array_key_exists("download_file", $atts)) { + if ($download_file = retrieve_file("download", $id)) $atts["download_file"] = $download_file; + } +} + +function generate_embed_code($atts) { + $version = version_compare(get_option(LONGTAIL_KEY . "version"), "5.3", ">="); + $embedder = file_exists(LongTailFramework::getEmbedderPath()); + if (!$embedder && !$version && preg_match("/iP(od|hone|ad)/i", $_SERVER["HTTP_USER_AGENT"])) { + $youtube_pattern = "/youtube.com\/watch\?v=([0-9a-zA-Z_-]*)/i"; + $loaded_config = LongTailFramework::getConfigValues(); + $width = isset($atts["width"]) ? $atts["width"] : $loaded_config["width"]; + $height = isset($atts["height"]) ? $atts["height"] : $loaded_config["height"]; + $output = ""; + if (preg_match($youtube_pattern, $atts["file"], $match)) { + $output = ''; + } else { + $output = ''; + } + return $output; + } else { + if (get_option(LONGTAIL_KEY . "player_location_enable")) { + $swf = LongTailFramework::generateSWFObject($atts, $embedder, get_option(LONGTAIL_KEY . "player_location")); + } else { + $swf = LongTailFramework::generateSWFObject($atts, $embedder); + } + if (!get_option(LONGTAIL_KEY . "use_head_js")) { + insert_embedder($embedder); + } + return $swf->generateEmbedScript(); + } +} + +function create_mode_block($atts) { + $modes = array(); + $playerMode = get_option(LONGTAIL_KEY . "player_mode", true); + $flashMode = new stdClass(); + $flashMode->type = "flash"; + $flashMode->src = LongTailFramework::getPlayerURL(); + $html5Mode = new stdClass(); + $html5Mode->type = "html5"; + $html5Mode->config = new stdClass(); + $html5Mode->config->streamer = ""; + $html5Mode->config->provider = ""; + if (array_key_exists("html5_file", $atts)) $html5Mode->config->file = $atts["html5_file"]; + $downloadMode = new stdClass(); + $downloadMode->type = "download"; + $downloadMode->config = new stdClass(); + $downloadMode->config->streamer = ""; + $downloadMode->config->provider = ""; + if (array_key_exists("download_file", $atts)) $html5Mode->config->file = $atts["download_file"]; + if ($playerMode == "html5") { + $modes[] = $html5Mode; + $modes[] = $flashMode; + } else { + $modes[] = $flashMode; + $modes[] = $html5Mode; + } + $modes[] = $downloadMode; + return $modes; +} + +function generate_playlist($playlist_id) { + $output = array(); + $playlist = get_post($playlist_id); + $playlist_items = ""; + if ($playlist) { + $playlist_items = explode(",", get_post_meta($playlist_id, LONGTAIL_KEY . "playlist_items", true)); + } + if (is_array($playlist_items)) { + foreach ($playlist_items as $playlist_item_id) { + $p_item = array(); + $playlist_item = get_post($playlist_item_id); + $image_id = get_post_meta($playlist_item_id, LONGTAIL_KEY . "thumbnail", true); + $creator = get_post_meta($playlist_item_id, LONGTAIL_KEY . "creator", true); + $thumbnail = get_post_meta($playlist_item_id, LONGTAIL_KEY . "thumbnail_url", true); + $streamer = get_post_meta($playlist_item_id, LONGTAIL_KEY . "streamer", true); + $file = get_post_meta($playlist_item_id, LONGTAIL_KEY . "file", true); + $html5_file = retrieve_file("html5", $playlist_item_id); + $download_file = retrieve_file("download", $playlist_item_id); + if (empty($thumbnail)) { + $temp = get_post($image_id); + $image = isset($temp) ? $temp->guid : ""; + } else { + $image = $thumbnail; + } + $p_item["title"] = $playlist_item->post_title; + $p_item["creator"] = $creator; + $p_item["author"] = $creator; + $p_item["date"] = $playlist_item->post_date; + $p_item["levels"] = array(); + $flashFile = new stdClass(); + if (!empty($streamer)) { + $p_item["streamer"] = $streamer; + $flashFile->file = $file; + $p_item["levels"][] = $flashFile; + } else { + $flashFile->file = $playlist_item->guid; + $p_item["levels"][] = $flashFile; + } + if ($html5_file) { + $html5File = new stdClass(); + $html5File->file = $html5_file; + $p_item["levels"][] = $html5File; + } + if ($download_file) { + $downloadFile = new stdClass(); + $downloadFile->file = $download_file; + $p_item["levels"][] = $downloadFile; + } + $duration = get_post_meta($playlist_item_id, LONGTAIL_KEY . "duration", true); + if ($duration) $p_item["duration"] = $duration; + if (substr($playlist_item->post_mime_type, 0, 5) == "image") { + $p_item["image"] = $playlist_item->guid; + } else { + $p_item["image"] = $image; + } + $p_item["description"] = $playlist_item->post_content; + $p_item["mediaid"] = $playlist_item_id; + $p_item["id"] = $playlist_item_id; + $output[] = $p_item; + } + } + return $output; +} + +function retrieve_file($fileType, $id) { + $file = get_post_meta($id, LONGTAIL_KEY . $fileType . "_file", true); + if (!isset($file) || $file == null || $file == "") { + $file_id = get_post_meta($id, LONGTAIL_KEY . $fileType . "_file_selector", true); + if (isset($file_id) && $file_id > -1) { + $file_attachment = get_post($file_id); + $file = $file_attachment->guid; + } + } + if (!isset($file) || $file == null || $file == "") { + return false; + } + return $file; +} + +function insert_embedder($embedderExists) { + if ($embedderExists) { + wp_print_scripts('jw-embedder'); + } else { + wp_print_scripts('swfobject'); + } +} + +?> diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWURLImportManager.php b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWURLImportManager.php new file mode 100644 index 0000000..4bddbe3 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/media/JWURLImportManager.php @@ -0,0 +1,145 @@ + "video/x-flv", + "guid" => $url, + "post_parent" => $post_id, + ); + if (preg_match($youtube_pattern, $url, $match)) { + $youtube_api = get_youtube_meta_data($match[1]); + if ($youtube_api) { + $attachment["post_title"] = $youtube_api["title"]; + $attachment["post_content"] = $youtube_api["description"]; + } + } else { + $file_info = wp_check_filetype($url); + if ($file_info["type"] != null) { + $attachment["post_mime_type"] = $file_info["type"]; + $attachment["post_content"]=""; + $attachment["post_title"]=""; + } + } + $id = wp_insert_attachment($attachment, $url, $post_id); + if ($youtube_api) { + update_post_meta($id, LONGTAIL_KEY . "thumbnail_url", $youtube_api["thumbnail_url"]); + update_post_meta($id, LONGTAIL_KEY . "creator", $youtube_api["author"]); + } else if (strstr($url, "rtmp://")) { + update_post_meta($id, LONGTAIL_KEY . "streamer", str_replace(basename($url), "", $url)); + update_post_meta($id, LONGTAIL_KEY . "file", basename($url)); + update_post_meta($id, LONGTAIL_KEY . "rtmp", true); + } + update_post_meta($id, LONGTAIL_KEY . "external", true); + wp_update_attachment_metadata($id, wp_generate_attachment_metadata($id, $url)); + } + ?> + +
              + + + + +

              + +
              + + + + + + + + + + + +
              + + * +
              + +
              +
              + + +
              + ' . esc_html($id->get_error_message()) . '
              '; + exit; + } + } + ?> +
              +

              + +

              + + author->name; + $youtube_media = $youtube_xml->children("http://search.yahoo.com/mrss/"); + $youtube_meta["title"] = $youtube_media->group->title; + $youtube_meta["description"] = $youtube_media->group->description; + $thumbnails = $youtube_xml->xpath("media:group/media:thumbnail"); + $youtube_meta["thumbnail_url"] = (string) $thumbnails[0]["url"]; + unlink($youtube_file); + return $youtube_meta; +} +?> diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/js/playlist.js b/wp-content/plugins/jw-player-plugin-for-wordpress/media/js/playlist.js new file mode 100644 index 0000000..dacc8e8 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/media/js/playlist.js @@ -0,0 +1,424 @@ +var topWin = window.dialogArguments || opener || parent || top; + +function fileDialogStart() { + jQuery("#playlist-upload-error").empty(); +} + +// progress and success handlers for playlist multi uploads +function fileQueued(fileObj) { + // Get rid of unused form + jQuery('.playlist-blank').remove(); + // Collapse a single item + if ( jQuery('form.type-form #playlist-items').children().length == 1 && jQuery('.hidden', '#playlist-items').length > 0 ) { + jQuery('.describe-toggle-on').show(); + jQuery('.describe-toggle-off').hide(); + jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden'); + } + // Create a progress bar containing the filename + jQuery('#playlist-items').append('
              ' + fileObj.name + '
              '); + // Display the progress div + jQuery('.progress', '#playlist-item-' + fileObj.id).show(); + + // Disable submit and enable cancel + jQuery('#insert-gallery').attr('disabled', 'disabled'); + jQuery('#cancel-upload').attr('disabled', ''); +} + +function uploadStart(fileObj) { + try { + if ( typeof topWin.tb_remove != 'undefined' ) + topWin.jQuery('#TB_overlay').unbind('click', topWin.tb_remove); + } catch(e){} + + return true; +} + +function uploadProgress(fileObj, bytesDone, bytesTotal) { + // Lengthen the progress bar + var w = jQuery('#playlist-items').width() - 2, item = jQuery('#playlist-item-' + fileObj.id); + jQuery('.bar', item).width( w * bytesDone / bytesTotal ); + jQuery('.percent', item).html( Math.ceil(bytesDone / bytesTotal * 100) + '%' ); + + if ( bytesDone == bytesTotal ) + jQuery('.bar', item).html('' + swfuploadL10n.crunching + ''); +} + +function preparePlaylistItem(fileObj, serverData) { + var f = ( typeof shortform == 'undefined' ) ? 1 : 2, item = jQuery('#playlist-item-' + fileObj.id); + // Move the progress bar to 100% + jQuery('.bar', item).remove(); + jQuery('.progress', item).hide(); + + try { + if ( typeof topWin.tb_remove != 'undefined' ) + topWin.jQuery('#TB_overlay').click(topWin.tb_remove); + } catch(e){} + + // Old style: Append the HTML returned by the server -- thumbnail and form inputs + if ( isNaN(serverData) || !serverData ) { + item.append(serverData); + preparePlaylistItemInit(fileObj); + } + // New style: server data is just the attachment ID, fetch the thumbnail and form html from the server + else { + item.load('async-upload.php', {attachment_id:serverData, fetch:f}, function(){preparePlaylistItemInit(fileObj);updatePlaylistForm()}); + } +} + +function preparePlaylistItemInit(fileObj) { + var item = jQuery('#playlist-item-' + fileObj.id); + // Clone the thumbnail as a "pinkynail" -- a tiny image to the left of the filename + jQuery('.thumbnail', item).clone().attr('class', 'pinkynail toggle').prependTo(item); + + // Replace the original filename with the new (unique) one assigned during upload + jQuery('.filename.original', item).replaceWith( jQuery('.filename.new', item) ); + + // Also bind toggle to the links + jQuery('a.toggle', item).click(function(){ + jQuery(this).siblings('.slidetoggle').slideToggle(350, function(){ + var w = jQuery(window).height(), t = jQuery(this).offset().top, h = jQuery(this).height(), b; + + if ( w && t && h ) { + b = t + h; + + if ( b > w && (h + 48) < w ) + window.scrollBy(0, b - w + 13); + else if ( b > w ) + window.scrollTo(0, t - 36); + } + }); + jQuery(this).siblings('.toggle').andSelf().toggle(); + jQuery(this).siblings('a.toggle').focus(); + return false; + }); + + // Bind AJAX to the new Delete button + jQuery('a.delete', item).click(function(){ + // Tell the server to delete it. TODO: handle exceptions + jQuery.ajax({ + url: 'admin-ajax.php', + type: 'post', + success: deleteSuccess, + error: deleteError, + id: fileObj.id, + data: { + id : this.id.replace(/[^0-9]/g, ''), + action : 'trash-post', + _ajax_nonce : this.href.replace(/^.*wpnonce=/,'') + } + }); + return false; + }); + + // Bind AJAX to the new Undo button + jQuery('a.undo', item).click(function(){ + // Tell the server to untrash it. TODO: handle exceptions + jQuery.ajax({ + url: 'admin-ajax.php', + type: 'post', + id: fileObj.id, + data: { + id : this.id.replace(/[^0-9]/g,''), + action: 'untrash-post', + _ajax_nonce: this.href.replace(/^.*wpnonce=/,'') + }, + success: function(data, textStatus){ + var item = jQuery('#playlist-item-' + fileObj.id); + + if ( type = jQuery('#type-of-' + fileObj.id).val() ) + jQuery('#' + type + '-counter').text(jQuery('#' + type + '-counter').text()-0+1); + if ( item.hasClass('child-of-'+post_id) ) + jQuery('#attachments-count').text(jQuery('#attachments-count').text()-0+1); + + jQuery('.filename .trashnotice', item).remove(); + jQuery('.filename .title', item).css('font-weight','normal'); + jQuery('a.undo', item).addClass('hidden'); + jQuery('a.describe-toggle-on, .menu_order_input', item).show(); + item.css( {backgroundColor:'#ceb'} ).animate( {backgroundColor: '#fff'}, { queue: false, duration: 500, complete: function(){ jQuery(this).css({backgroundColor:''}); } }).removeClass('undo'); + } + }); + return false; + }); + + // Open this item if it says to start open (e.g. to display an error) + jQuery('#playlist-item-' + fileObj.id + '.startopen').removeClass('startopen').slideToggle(500).siblings('.toggle').toggle(); +} + +function itemAjaxError(id, html) { + var item = jQuery('#playlist-item-' + id); + var filename = jQuery('.filename', item).text(); + + item.html('
              ' + + '' + swfuploadL10n.dismiss + '' + + '' + swfuploadL10n.error_uploading.replace('%s', filename) + '
              ' + + html + + '
              '); + item.find('a.dismiss').click(function(){jQuery(this).parents('.playlist-item').slideUp(200, function(){jQuery(this).remove();})}); +} + +function deleteSuccess(data, textStatus) { + if ( data == '-1' ) + return itemAjaxError(this.id, 'You do not have permission. Has your session expired?'); + if ( data == '0' ) + return itemAjaxError(this.id, 'Could not be deleted. Has it been deleted already?'); + + var id = this.id, item = jQuery('#playlist-item-' + id); + + // Decrement the counters. + if ( type = jQuery('#type-of-' + id).val() ) + jQuery('#' + type + '-counter').text( jQuery('#' + type + '-counter').text() - 1 ); + if ( item.hasClass('child-of-'+post_id) ) + jQuery('#attachments-count').text( jQuery('#attachments-count').text() - 1 ); + + if ( jQuery('form.type-form #playlist-items').children().length == 1 && jQuery('.hidden', '#playlist-items').length > 0 ) { + jQuery('.toggle').toggle(); + jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden'); + } + + // Vanish it. + jQuery('.toggle', item).toggle(); + jQuery('.slidetoggle', item).slideUp(200).siblings().removeClass('hidden'); + item.css( {backgroundColor:'#faa'} ).animate( {backgroundColor:'#f4f4f4'}, {queue:false, duration:500} ).addClass('undo'); + + jQuery('.filename:empty', item).remove(); + jQuery('.filename .title', item).css('font-weight','bold'); + jQuery('.filename', item).append(' ' + swfuploadL10n.deleted + ' ').siblings('a.toggle').hide(); + jQuery('.filename', item).append( jQuery('a.undo', item).removeClass('hidden') ); + jQuery('.menu_order_input', item).hide(); + + return; +} + +function deleteError(X, textStatus, errorThrown) { + // TODO +} + +function updatePlaylistForm() { + var one = jQuery('form.type-form #playlist-items').children(), items = jQuery('#playlist-items').children(); + + // Just one file, no need for collapsible part + if ( one.length == 1 ) { + jQuery('.slidetoggle', one).slideDown(500).siblings().addClass('hidden').filter('.toggle').toggle(); + } + + // Only show Save buttons when there is at least one file. + if ( items.not('.playlist-blank').length > 0 ) + jQuery('.savebutton').show(); + else + jQuery('.savebutton').hide(); + + // Only show Gallery button when there are at least two files. + if ( items.length > 1 ) + jQuery('.insert-gallery').show(); + else + jQuery('.insert-gallery').hide(); +} + +function uploadSuccess(fileObj, serverData) { + // if async-upload returned an error message, place it in the playlist item div and return + if ( serverData.match('playlist-upload-error') ) { + jQuery('#playlist-item-' + fileObj.id).html(serverData); + return; + } + + preparePlaylistItem(fileObj, serverData); + updatePlaylistForm(); + + // Increment the counter. + if ( jQuery('#playlist-item-' + fileObj.id).hasClass('child-of-' + post_id) ) + jQuery('#attachments-count').text(1 * jQuery('#attachments-count').text() + 1); +} + +function uploadComplete(fileObj) { + // If no more uploads queued, enable the submit button + if ( swfu.getStats().files_queued == 0 ) { + jQuery('#cancel-upload').attr('disabled', 'disabled'); + jQuery('#insert-gallery').attr('disabled', ''); + } +} + + +// wp-specific error handlers + +// generic message +function wpQueueError(message) { + jQuery('#playlist-upload-error').show().text(message); +} + +// file-specific message +function wpFileError(fileObj, message) { + var item = jQuery('#playlist-item-' + fileObj.id); + var filename = jQuery('.filename', item).text(); + + item.html('
              ' + + '' + swfuploadL10n.dismiss + '' + + '' + swfuploadL10n.error_uploading.replace('%s', filename) + '
              ' + + message + + '
              '); + item.find('a.dismiss').click(function(){jQuery(this).parents('.playlist-item').slideUp(200, function(){jQuery(this).remove();})}); +} + +function fileQueueError(fileObj, error_code, message) { + // Handle this error separately because we don't want to create a FileProgress element for it. + if ( error_code == SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED ) { + wpQueueError(swfuploadL10n.queue_limit_exceeded); + } + else if ( error_code == SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT ) { + fileQueued(fileObj); + wpFileError(fileObj, swfuploadL10n.file_exceeds_size_limit); + } + else if ( error_code == SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE ) { + fileQueued(fileObj); + wpFileError(fileObj, swfuploadL10n.zero_byte_file); + } + else if ( error_code == SWFUpload.QUEUE_ERROR.INVALID_FILETYPE ) { + fileQueued(fileObj); + wpFileError(fileObj, swfuploadL10n.invalid_filetype); + } + else { + wpQueueError(swfuploadL10n.default_error); + } +} + +function fileDialogComplete(num_files_queued) { + try { + if (num_files_queued > 0) { + this.startUpload(); + } + } catch (ex) { + this.debug(ex); + } +} + +function switchUploader(s) { + var f = document.getElementById(swfu.customSettings.swfupload_element_id), h = document.getElementById(swfu.customSettings.degraded_element_id); + if ( s ) { + f.style.display = 'block'; + h.style.display = 'none'; + } else { + f.style.display = 'none'; + h.style.display = 'block'; + } +} + +function swfuploadPreLoad() { + if ( !uploaderMode ) { + switchUploader(1); + } else { + switchUploader(0); + } +} + +function swfuploadLoadFailed() { + switchUploader(0); + jQuery('.upload-html-bypass').hide(); +} + +function uploadError(fileObj, errorCode, message) { + + switch (errorCode) { + case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL: + wpFileError(fileObj, swfuploadL10n.missing_upload_url); + break; + case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED: + wpFileError(fileObj, swfuploadL10n.upload_limit_exceeded); + break; + case SWFUpload.UPLOAD_ERROR.HTTP_ERROR: + wpQueueError(swfuploadL10n.http_error); + break; + case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED: + wpQueueError(swfuploadL10n.upload_failed); + break; + case SWFUpload.UPLOAD_ERROR.IO_ERROR: + wpQueueError(swfuploadL10n.io_error); + break; + case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR: + wpQueueError(swfuploadL10n.security_error); + break; + case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED: + case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED: + jQuery('#playlist-item-' + fileObj.id).remove(); + break; + default: + wpFileError(fileObj, swfuploadL10n.default_error); + } +} + +function cancelUpload() { + swfu.cancelQueue(); +} + +function dump (object, depth) { + if (object == null) { + return 'null'; + } else if (typeof(object) != 'object') { + if (typeof(object) == 'string'){ + return"\""+object+"\""; + } + return object; + } + + var type = typeOf(object); + + (depth == undefined) ? depth = 1 : depth++; + + var result = (type == "array") ? "[" : "{"; + + var loopRan = false; + + if (type == "array") { + for (var i = 0; i < object.length; i++) { + loopRan = true; + result += dump(object[i], depth)+", "; + } + } else { + for (var j in object) { + loopRan = true; + if (type == "object") { result += "\""+j+"\": "}; + result += dump(object[j], depth)+", "; + } + } + + if (loopRan) { + result = result.substring(0, result.length-1-depth); + } + + result += (type == "array") ? "]" : "}"; + + return result; +} + +function typeOf(value) { + var s = typeof value; + if (s === 'object') { + if (value) { + if (value instanceof Array) { + s = 'array'; + } + } else { + s = 'null'; + } + } + return s; +} + +// remember the last used image size, alignment and url +jQuery(document).ready(function($){ + $('input[type="radio"]', '#playlist-items').live('click', function(){ + var tr = $(this).closest('tr'); + + if ( $(tr).hasClass('align') ) + setUserSetting('align', $(this).val()); + else if ( $(tr).hasClass('image-size') ) + setUserSetting('imgsize', $(this).val()); + }); + + $('button.button', '#playlist-items').live('click', function(){ + var c = this.className || ''; + c = c.match(/url([^ '"]+)/); + if ( c && c[1] ) { + setUserSetting('urlbutton', c[1]); + $(this).siblings('.urlfield').val( $(this).attr('title') ); + } + }); +}); \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/Thumbs.db b/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/Thumbs.db new file mode 100644 index 0000000..6b5e4d0 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/Thumbs.db differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/dd.css b/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/dd.css new file mode 100644 index 0000000..9e8e1fc --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/dd.css @@ -0,0 +1,63 @@ +.dd { + /*display:inline-block !important;*/ + text-align:left; + background-color:#fff; + font-family:Arial, Helvetica, sans-serif; + font-size:12px; + float:left; +} +.dd .ddTitle { + background:#FFFFFF; + border:1px solid #DFDFDF; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + padding:3px; + text-indent:0; + cursor:default; + overflow:hidden; + height:16px; +} +.dd .ddTitle span.arrow { + background:url(dd_arrow.gif) no-repeat 0 0; float:right; display:inline-block;width:16px; height:16px; cursor:pointer; +} + +.dd .ddTitle span.textTitle {text-indent:1px; overflow:hidden; line-height:16px;} +.dd .ddTitle span.textTitle img{text-align:left; padding:0 2px 0 0} +.dd .ddTitle img.selected { + padding:0 3px 0 0; + vertical-align:top; +} +.dd .ddChild { + position:absolute; + border:1px solid #c3c3c3; + border-top:none; + display:none; + margin:0; + width:auto; + overflow:auto; + overflow-x:hidden !important; + background-color:#ffffff; +} +.dd .ddChild .opta a, .dd .ddChild .opta a:visited {padding-left:10px} +.dd .ddChild a { + display:block; + padding:3px 0 3px 3px; + text-decoration:none; + color:#000; + overflow:hidden; + white-space:nowrap; + cursor:pointer; +} +.dd .ddChild a:hover { + background:#66CCFF; +} +.dd .ddChild a img { + border:0; + padding:0 2px 0 0; + vertical-align:middle; +} +.dd .ddChild a.selected { + background:#66CCFF; + +} +.hidden {display:none;} diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/dd_arrow.gif b/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/dd_arrow.gif new file mode 100644 index 0000000..5b29df7 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/dd_arrow.gif differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/js/uncompressed.jquery.dd.js b/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/js/uncompressed.jquery.dd.js new file mode 100644 index 0000000..f8da93e --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/media/msdropdown/js/uncompressed.jquery.dd.js @@ -0,0 +1,549 @@ +// MSDropDown - jquery.dd.js +// author: Marghoob Suleman +// Date: 12th Aug, 2009 +// Version: 2.1 {date: 3rd Sep 2009} +// Revision: 25 +// web: www.giftlelo.com | www.marghoobsuleman.com +// MSDropDown - jquery.dd.js +// author: Marghoob Suleman +// Date: 12th Aug, 2009 +// Version: 2.1 {date: 3rd Sep 2009} +// Revision: 25 +// web: www.giftlelo.com | www.marghoobsuleman.com +/* +// msDropDown is free jQuery Plugin: you can redistribute it and/or modify +// it under the terms of the either the MIT License or the Gnu General Public License (GPL) Version 2 +*/ +;(function($) { + var oldDiv = ""; + $.fn.dd = function(options) { + $this = this; + options = $.extend({ + height:120, + visibleRows:7, + rowHeight:23, + showIcon:true, + zIndex:9999, + style:'' + }, options); + var selectedValue = ""; + var actionSettings ={}; + actionSettings.insideWindow = true; + actionSettings.keyboardAction = false; + actionSettings.currentKey = null; + var ddList = false; + config = {postElementHolder:'_msddHolder', postID:'_msdd', postTitleID:'_title',postTitleTextID:'_titletext',postChildID:'_child',postAID:'_msa',postOPTAID:'_msopta',postInputID:'_msinput', postArrowID:'_arrow', postInputhidden:'_inp'}; + styles = {dd:'dd', ddTitle:'ddTitle', arrow:'arrow', ddChild:'ddChild', disbaled:.30}; + attributes = {actions:"onfocus,onblur,onchange,onclick,ondblclick,onmousedown,onmouseup,onmouseover,onmousemove,onmouseout,onkeypress,onkeydown,onkeyup", prop:"size,multiple,disabled,tabindex"}; + var elementid = $(this).attr("id"); + var inlineCSS = $(this).attr("style"); + options.style += (inlineCSS==undefined) ? "" : inlineCSS; + var allOptions = $(this).children(); + ddList = ($(this).attr("size")>0 || $(this).attr("multiple")==true) ? true : false; + if(ddList) {options.visibleRows = $(this).attr("size");}; + var a_array = {};//stores id, html & value etc + //create wrapper + createDropDown(); + + function getPostID(id) { + return elementid+config[id]; + }; + function getOptionsProperties(option) { + var currentOption = option; + var styles = $(currentOption).attr("style"); + return styles; + }; + function matchIndex(index) { + var selectedIndex = $("#"+elementid+" option:selected"); + if(selectedIndex.length>1) { + for(var i=0;i"; + var optChild = $(currentOption).children(); + optChild.each(function(currentopt){ + var currentOptOption = optChild[currentopt]; + var aid = aidoptfix+"_"+(current)+"_"+(currentopt); + var arrow = $(currentOptOption).attr("title"); + arrow = (arrow.length==0) ? "" : ' '; + var sText = $(currentOptOption).text(); + var sValue = $(currentOptOption).val(); + var sEnabledClass = ($(currentOptOption).attr("disabled")==true) ? "disabled" : "enabled"; + a_array[aid] = {html:arrow + sText, value:sValue, text:sText, index:currentOptOption.index, id:aid}; + var innerStyle = getOptionsProperties(currentOptOption); + if(matchIndex(currentOptOption.index)==true) { + aTag += ''; + aTag += arrow + sText+''; + }); + aTag += "
              "; + + } else { + var aid = aidfix+"_"+(current); + var arrow = $(currentOption).attr("title"); + arrow = (arrow.length==0) ? "" : ' '; + var sText = $(currentOption).text(); + var sValue = $(currentOption).val(); + var sEnabledClass = ($(currentOption).attr("disabled")==true) ? "disabled" : "enabled"; + a_array[aid] = {html:arrow + sText, value:sValue, text:sText, index:currentOption.index, id:aid}; + var innerStyle = getOptionsProperties(currentOption); + if(matchIndex(currentOption.index)==true) { + aTag += ''; + aTag += arrow + sText+''; + }; + }); + return aTag; + }; + function createChildDiv() { + var id = getPostID("postID"); + var childid = getPostID("postChildID"); + var sStyle = options.style; + sDiv = ""; + sDiv += '
              '; + var sDiv = '
              '+arrow + sText+'
              '; + return sDiv; + }; + function createDropDown() { + var changeInsertionPoint = false; + var id = getPostID("postID"); + var titleid = getPostID("postTitleID"); + var titletextid = getPostID("postTitleTextID"); + var childid = getPostID("postChildID"); + var arrowid = getPostID("postArrowID"); +// var iWidth = $("#"+elementid).width(); + var iWidth = 460; + var sStyle = options.style; + if($("#"+id).length>0) { + $("#"+id).remove(); + changeInsertionPoint = true; + } + var sDiv = '
              options.visibleRows) { + var margin = parseInt($("#"+childid+" a:first").css("padding-bottom")) + parseInt($("#"+childid+" a:first").css("padding-top")); + var iHeight = ((options.rowHeight)*options.visibleRows) - margin; + $("#"+childid).css("height", iHeight+"px"); + } + //set out of vision + if(changeInsertionPoint==false) { + setOutOfVision(); + addNewEvents(elementid); + } + if($("#"+elementid).attr("disabled")==true) { + $("#"+id).css("opacity", styles.disbaled); + } else { + applyEvents(); + //add events + //arrow hightlight + if(!ddList) { + $("#"+titleid).bind("mouseover", function(event) { + hightlightArrow(1); + }); + $("#"+titleid).bind("mouseout", function(event) { + hightlightArrow(0); + }); + }; + //open close events + $("#"+childid+ " a.enabled").bind("click", function(event) { + event.preventDefault(); + manageSelection(this); + if(!ddList) { + $("#"+childid).unbind("mouseover"); + setInsideWindow(false); + var sText = (options.showIcon==false) ? $(this).text() : $(this).html(); + setTitleText(sText); + closeMe(); + }; + setValue(); + //actionSettings.oldIndex = a_array[$(this).attr("id")].index; + }); + $("#"+childid+ " a.disabled").css("opacity", styles.disbaled); + if(ddList) { + $("#"+childid).bind("mouseover", function(event) {if(!actionSettings.keyboardAction) { + actionSettings.keyboardAction = true; + $(document).bind("keydown", function(event) { + var keyCode = event.keyCode; + actionSettings.currentKey = keyCode; + if(keyCode==39 || keyCode==40) { + //move to next + event.preventDefault(); event.stopPropagation(); + next(); + setValue(); + }; + if(keyCode==37 || keyCode==38) { + event.preventDefault(); event.stopPropagation(); + //move to previous + previous(); + setValue(); + }; + }); + + }}); + }; + $("#"+childid).bind("mouseout", function(event) {setInsideWindow(false);$(document).unbind("keydown");actionSettings.keyboardAction = false;actionSettings.currentKey=null;}); + if(!ddList) { + $("#"+titleid).bind("click", function(event) { + setInsideWindow(false); + if($("#"+childid+":visible").length==1) { + $("#"+childid).unbind("mouseover"); + } else { + $("#"+childid).bind("mouseover", function(event) {setInsideWindow(true);}); + openMe(); + }; + }); + }; + $("#"+titleid).bind("mouseout", function(evt) { + setInsideWindow(false); + }) + }; + }; + function getByIndex(index) { + for(var i in a_array) { + if(a_array[i].index==index) { + return a_array[i]; + } + } + } + function manageSelection(obj) { + var childid = getPostID("postChildID"); + if(!ddList) { + $("#"+childid+ " a.selected").removeClass("selected"); + } + var selectedA = $("#"+childid + " a.selected").attr("id"); + if(selectedA!=undefined) { + var oldIndex = (actionSettings.oldIndex==undefined || actionSettings.oldIndex==null) ? a_array[selectedA].index : actionSettings.oldIndex; + }; + if(obj && !ddList) { + $(obj).addClass("selected"); + }; + if(ddList) { + var keyCode = actionSettings.currentKey; + if($("#"+elementid).attr("multiple")==true) { + if(keyCode == 17) { + //control + actionSettings.oldIndex = a_array[$(obj).attr("id")].index; + $(obj).toggleClass("selected"); + //multiple + } else if(keyCode==16) { + $("#"+childid+ " a.selected").removeClass("selected"); + $(obj).addClass("selected"); + //shift + var currentSelected = $(obj).attr("id"); + var currentIndex = a_array[currentSelected].index; + for(var i=Math.min(oldIndex, currentIndex);i<=Math.max(oldIndex, currentIndex);i++) { + $("#"+getByIndex(i).id).addClass("selected"); + } + } else { + $("#"+childid+ " a.selected").removeClass("selected"); + $(obj).addClass("selected"); + actionSettings.oldIndex = a_array[$(obj).attr("id")].index; + }; + } else { + $("#"+childid+ " a.selected").removeClass("selected"); + $(obj).addClass("selected"); + actionSettings.oldIndex = a_array[$(obj).attr("id")].index; + }; + }; + }; + function addNewEvents(id) { + document.getElementById(id).refresh = function(e) { + $("#"+this.id).dd(options); + }; + }; + function setInsideWindow(val) { + actionSettings.insideWindow = val; + }; + function getInsideWindow() { + return actionSettings.insideWindow; + }; + function applyEvents() { + var mainid = getPostID("postID"); + var actions_array = attributes.actions.split(","); + for(var iCount=0;iCount
              "); + $("#"+elementid).appendTo($("#"+sId)); + }; + function setTitleText(sText) { + var titletextid = getPostID("postTitleTextID"); + $("#"+titletextid).html(sText); + }; + function next() { + var titletextid = getPostID("postTitleTextID"); + var childid = getPostID("postChildID"); + var allAs = $("#"+childid + " a.enabled"); + for(var current=0;current=parseInt($("#"+childid).height())) { + $("#"+childid).scrollTop(($("#"+childid).scrollTop())+$("#"+selectedA).height()+$("#"+selectedA).height()); + }; + break; + }; + }; + }; + function previous() { + var titletextid = getPostID("postTitleTextID"); + var childid = getPostID("postChildID"); + var allAs = $("#"+childid + " a.enabled"); + for(var current=0;current1) { + var alls = $("#"+elementid +" > option:selected").removeAttr("selected"); + for(var i=0;i + + JW FLV Player + player.swf + 5 + LongTail Video + + This is the JW FLV Player. + + http://developer.longtailvideo.com/trac/browser/trunk/fl5 + + + + controlbar + bottom + Position of the controlbar. Can be set to bottom, over and none. + + + + skin + + The skin to be used by the player. To see what each skin looks like please visit the + JW Player Skins Page]]> + . + + + + dock + false + Set this to true to show the dock with large buttons in the top right of the player. Available since + 4.5. + + + + + + + + autostart + false + Automatically start playback on load. + + + + height + 280 + Height of the display in pixels. + + + width + 400 + Width of the display in pixels. + + + + + + playerready + + Javascript callback when the player has completed its setup. + + + + + + icons + true + Set this to false to hide the play button and buffering icon in the middle of the video. + + + + + backcolor + + Background color (hex value) of the controlbar and playlist. This is white with the default skin. + + + + frontcolor + + Color (hex value) of all icons and texts in the controlbar and playlist as a hex code. + + + lightcolor + + Color (hex value) of an icon or text when you rollover it with the mouse as a hex code. + + + screencolor + + Background color (hex value) of the display as a hex code. + + + + + + item + 0 + PlaylistItem that should start to play. Use this to start the player with a specific item selected. + + + + playlist.position + none + Position of the playlist. Can be set to bottom, over, right or none. + + + + playlistsize + 180 + When below this refers to the height, when right this refers to the width of the playlist. + + + + repeat + none + What to do when the mediafile has ended. + + + + shuffle + false + Randomly choose which playlist item to play. + + + + + + + bufferlength + 1 + Number of seconds of the file that has to be loaded before starting. Set this to a low value to + enable instant-start and to a high value to get less mid-stream buffering. + + + + smoothing + true + This sets the smoothing of videos, so you won't see blocks when a video is upscaled. Set this to + false to get performance improvements with old computers / big files. Available since 4.4. + + + + + stretching + uniform + Defines how to resize images in the display. Can be none (no stretching), exactfit + (disproportionate), uniform (stretch with black borders) or fill (uniform, but completely fill the display). + + + + + wmode + opaque + Sets the Window Mode property of the Flash movie for transparency, layering, and positioning in the + browser. + + + + + + + + mute + false + Mute all sounds on startup. This can be overridden by a user's cookie, which stores the user's last + muting state. + + + + + volume + 90 + Startup volume of the player. Can be 0 to 100. The user's last volume setting is saved in a cookie + and overrides this flashvar. + + + + + + + provider + + this is determines what type of mediafile this item is, and thus which provider the player should use + for playback. By default, the type is detected by the player based upon the file extension. If there's no + suitable extension or the player detects the type wrong, it can be manually set. + + + + streamer + + location of an rtmp/http server instance to use for streaming. Can be an RTMP application or external + PHP/ASP file. + + + + + + + playlistfile + + Location of an XML playlist which will be loaded as the player starts. + + + author + + Author of the video, shown in the display or playlist. + + + date + + Publish date of the media file. + + + description + + Text description of the file. + + + duration + + duration of the file in seconds. + + + file + + location of the mediafile or playlist to play. + + + image + + location of a preview image; shown in display and playlist. + + + link + + url to an external page the display, controlbar and playlist can link to. + + + start + 0 + position in seconds where playback has to start. Won't work for regular (progressive) videos, but + only for streaming (HTTP/RTMP). + + + + tags + + keywords associated with the media file. Available since 4.3. + + + title + + title of the video, shown in the display or playlist. + + + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/audiodescription.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/audiodescription.xml new file mode 100644 index 0000000..ea31f81 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/audiodescription.xml @@ -0,0 +1,33 @@ + + Audiodescription + audiodescription.swf + audiodescription-1 + 1.0 + Compatible with 4.4 or higher. + Jeroen Wijering + This plugin plays a closed audiodescription with a video. + + http://www.longtailvideo.com/addons/plugins/85/Audiodescription + + + + file + + Location of the audiodescription MP3 to play. + + + state + true + Set this to false to turn off the audiodescription by default. + + + + volume + + Volume of the audiodescription. Crank this even more up to have the AD overrule the default sound. + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/captions.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/captions.xml new file mode 100644 index 0000000..5f2e873 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/captions.xml @@ -0,0 +1,42 @@ + + Captions + captions.swf + captions-1 + 1.0 + Compatible with 4.4 and higher. + Jeroen Wijering + This plugin plays closed captions with a video. For the 4.4 player or higher, the plugin will place a button in the controlbar. + + http://www.longtailvideo.com/addons/plugins/84/Captions + + + + back + true + Set this to "true" to show a semitransparent backdrop that makes the captions more readable. + + + + file + + Location of the captions in (TimedText or SRT format) to display. + + + fontsize + 14 + Size of the captions font. Default is 14. The captions scale automatically, but this flashvar can be used to enlarge/shrink the baseline. + + + state + false + Set this to false to turn off the captions by default. + + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/facebookit.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/facebookit.xml new file mode 100644 index 0000000..e840791 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/facebookit.xml @@ -0,0 +1,13 @@ + + Facebook It + fbit.swf + fbit-1 + 1.0 + Compatible with 4.5 and later. + mpoint + The Facebook It plugin allows your users to post your videos on the Facebook social network. It's a great way to have users share your videos online and broaden their distribution. The user just clicks on the Facebook icon in the dock, clicks Post, and then logs into their Facebook account. If the user doesn't have an account, then they can easily create one. + + http://www.longtailvideo.com/addons/plugins/124/Facebook-It + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/flow.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/flow.xml new file mode 100644 index 0000000..4f29583 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/flow.xml @@ -0,0 +1,203 @@ + + Flow + flow.swf + flow-1 + 1.1 + Compatible with 4.6 and later. + Wesley Luyten + The Flow plugin provides a slick, 3D animation for users to flip through your playlist items. The plugin automatically grabs thumbnail images from any playlist and renders them three-dimensionally in a row. Users can navigate through the playlist by clicking on a thumbnail image or using the left/right arrow keys and space bar to select items. + + http://www.longtailvideo.com/addons/plugins/121/Flow + + + + coverheight + + This flashvar is used to set the height of the thumbnail images. + + + coverwidth + 150 + Maximum width of the cover. + + + showtext + false + This flashvar is used to indicate if title and description text should appear under the thumbnail images. + + + + position + + This flashvar is used to indicate the position of the plugin. If left blank, it will appear over the display area. (bottom | left | right | top) + + + + size + + This flashvar is used to specify the height of the plugin if it is being positioning to the top, bottom, left or right of the display area. If the position flashvar isn't set, then size is ignored. + + + defaultcover + + Default image if no thumbnail is available. + + + xposition + + Horizontal position of the plugin. + + + yposition + + Vertical Position of the plugin + + + covergap + 40 + Horizontal width between covers. + + + coverangle + 60 + Angle of not selected covers in degrees. + + + coverdepth + 150 + Depth of not selected covers. + + + coveroffset + 60 + Horizontal width between selected cover and not selected covers. + + + opacitydecrease + 0.1 + Decrease of opacity of the covers going back (min:0, max:1). + + + showreflection + false + Show a reflection of the cover (true or false). + + + + reflectionoffset + 0 + Vertical offset of reflection. + + + titleoffset + 5 + Vertical offset of title. + + + descriptionoffset + 25 + Vertical offset of description. + + + font + Arial Rounded MT Bold + Font of title and description. + + + fontsize + 12 + Size of font. + + + color + f1f1f1 + Color of font. + + + tweentime + 0.6 + Elapsed time of one tween animation. + + + framerate + 30 + Frame rate of plugin. + + + autorotate + false + Set this true to auto rotate the covers (true | false). + + + + rotatedelay + 2500 + Delay in milliseconds when auto rotated. + + + controlbaricon + false + Show a button in the control bar (true | false). + + + + onidle + show + Show or hide plugin when player is idle (show | hide). + + + + onpaused + show + Show or hide plugin when player is paused (show | hide). + + + + onplaying + show + Show or hide plugin when player is playing (show | hide). + + + + oncompleted + show + Show or hide plugin when player is completed (show | hide). + + + + file + + Delay in milliseconds when auto rotated. + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/gapro.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/gapro.xml new file mode 100644 index 0000000..73b087e --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/gapro.xml @@ -0,0 +1,48 @@ + + Google Analytics Pro + gapro.swf + gapro-2 + 2.0 + Compatible with 4.5 and later. + mpoint + The Google Analytics plugin for the JW Player is designed to help you understand how well your video content is performing online. It takes advantage of Google's new Flash API for Analytics so you can track events within the JW Player itself. + +The tracking of events (which includes allowing you to access information about not only what videos are watched, but how long users watch each video), aggregates it, and passes along the relevant information for easy and concise tracking within Google Analytics. + + http://www.longtailvideo.com/addons/plugins/107/Google-Analytics-Pro + + + + accountid + + Your Google Analytics account ID. Generally of the form "UA-XXXXXXX-X". This must be set for the plugin to function. + + + trackstarts + true + Controls whether data about video starts are sent to Google Analytics. One start event is sent each time a viewer begins playback from the first frame of the video. Note - This include starts that occur after the viewer pressed stop, or completed the video and pressed play again. + + + + trackpercentage + true + Controls whether data about the percentage of the total video content played by the viewer is sent to Google Analytics. + + + + tracktime + true + Controls whether data about the total time the viewer spent watching the video is sent to Google Analytics. + + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/hd.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/hd.xml new file mode 100644 index 0000000..df0d4e4 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/hd.xml @@ -0,0 +1,39 @@ + + HD Plugin + hd.swf + hd-1 + 1.4 + Compatible with 4.3; dock button works from 4.5 + LongTail Video + This plugin implements an HD quality toggle in the controlbar. An icon is shown to do the toggle, and the value is saved as a cookie. This plugin works best for single files, but playlist work too (a new playlist is loaded on switch). For the 4.5 button or higher, the plugin can also place a button in the dock. + http://developer.longtailvideo.com/trac/browser/plugins/hd + http://www.longtailvideo.com/addons/plugins/65/HD + + + + file + + Location of the HD video the player should load. The regular 'file' flashvar holds the location of the fallback video. + + + + fullscreen + false + When "true", HD is automatically turned on/off when switching fullscreen. This implies the video will start with the regular file. + + + + state + true + Set this to "false" to let the player start with the low-quality video. Set this to "true" to always start with HD, no matter the cookied state. + + + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/livestream.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/livestream.xml new file mode 100644 index 0000000..fdf22ad --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/livestream.xml @@ -0,0 +1,44 @@ + + Livestream + livestream.swf + livestream-1 + 1.0 + Compatible with 4.1 or higher. + LongTail Video + This plugin automatically polls an RTMP stream for availability every XX seconds. If the stream is there, it will kick in. If not, the plugin will keep retrying. It allows users to wait for a live event without having to refresh their page. + + http://www.longtailvideo.com/addons/plugins/97/Livestream + + + + file + + This flashvar contains the name of the RTMP stream to check/load. + + + streamer + + RTMP server to pull the stream from (e.g. rtmp://myserver.com/live-app). + + + image + + This flashvar indicates the placeholding image associated with the livestream. It is shown when the live stream ends. It should typically say something like "thanks for watching." + + + interval + + Interval in seconds for polling the livestream. + + + message + + Message to show in the display when polling the livestream. + + + tags + + If you run multiple livestreams with one server setup, set this flashvar to filter which videos will be polled and loaded from the livestream. The livestream will only be polled when the tags of the video align with the tags you enter here. + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/revolt.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/revolt.xml new file mode 100644 index 0000000..f7010fb --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/revolt.xml @@ -0,0 +1,25 @@ + + Revolt + revolt.swf + revolt-1 + 1 + Compatible with 4.1; flashvars work from 4.4 + LongTail Video + This plugin renders some cool visualizations in the display, great for audio playback. It contains 6 presets. All visualization code is developed by Antti Kupila (www.anttikupila.com). + http://developer.longtailvideo.com/trac/browser/plugins/revolt + http://www.longtailvideo.com/addons/plugins/42/Revolt + + + + gain + 1 + Amplification of the audio input for building the graphics. Set this higher (e.g. 1.5) for wilder graphics. + + + timeout + 10 + Timeout in seconds before the preset is swapped. Defaults to 10. + + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/searchbar.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/searchbar.xml new file mode 100644 index 0000000..61e1844 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/searchbar.xml @@ -0,0 +1,34 @@ + + Searchbar + searchbar.swf + searchbar-1 + 1.0 + Compatible with 4.1 or higher. + LongTail Video + This plugin displays a small searchbar in the player. When pressing the submit button, the plugin sends the search query to a serverside script. The script should return the search results as a feed format the player can read. These results are loaded into the player. This plugin is compatible with version 4.1 of the player. Positioning the plugin to top or bottom only works from version 4.4. + + http://www.longtailvideo.com/addons/plugins/112/Searchbar + + + + color + CC0000 + Color of the submit button. The button will automatically be set to the lightcolor flashvar of the overall player if it is specified instead. + + + label + Search + Label of the submit button. + + + position + + Set this to either top or bottom if you want to display the searchbar outside of the display space. The searchbar is 40px high and will stretch itself over the full width of the player. + + + script + + Location of the serverside search script. By default, this is a script from Youtube. The plugin automatically replaces the QUERY string with the actual search query from the input box. The script should return the search results in the form of one of the XML formats the player reads. + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/sharing.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/sharing.xml new file mode 100644 index 0000000..f7b947e --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/sharing.xml @@ -0,0 +1,24 @@ + + Sharing + sharing.swf + sharing-3 + 3.0 + Compatible with 4.3 or higher. + LongTail Video + This plugin adds sharing functionalities to the player. Either through the dock or through the controlbar, the plugin offers links to two screens: In the embed screen, an embed code for the specific video can be copy-pasted. In the share screen, a link to thesite for this specific video can be copy-pasted. This screen also offers shortcuts for posting this link to: Twitter, Facebook, Myspace, An email message. + + http://www.longtailvideo.com/addons/plugins/110/Sharing + + + + code + + Set this flashvar to an embed code for this video. When set, the embed button is shown. Be warned that this embed code must be URI escaped or the code will break the other flashvars of the player. + + + link + + Set this flashvar to the url of a webpage where the video is shown. When set, the share button will appear. + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/snapshot.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/snapshot.xml new file mode 100644 index 0000000..43df2f1 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/snapshot.xml @@ -0,0 +1,28 @@ + + Snapshot + snapshot.swf + snapshot-1 + 1.0 + Compatible with 4.4 or higher. + LongTail Video + This plugins renders a JPG snapshot from a video frame. It sends the JPG to a serverside script for processing ("Get This" plugin for further instructions) and displays the returning URL. Note that the server hosting your FLV files needs to have a crossdomain XML for this to work properly. + + http://www.longtailvideo.com/addons/plugins/96/Snapshot + + + + script + + This flashvar points to the location of the serverside script (PHP,ASP,..) that processes the snapshot. That script then must echo the HTTP url of the resulting image, so the player can display the result to the user. + + + data + true + This flashvar is used to specify how the Snapshot plugin grabs a screenshot. If true, the plugin will send raw JPG data to the serverside script for processing. If false, the plugin will do a simple GET ping to the serverside script with the video position in seconds as a variable. You can use false if you want to generate the snapshot serverside (with your own PHP/ASP/etc script). + + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/tipjar.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/tipjar.xml new file mode 100644 index 0000000..1f3b12d --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/tipjar.xml @@ -0,0 +1,135 @@ + + Tip Jar + tipjar.swf + tipjar-1 + 1.0 + Compatible with 4.2 or higher + Jarón Barends + The TipJar Plugin allows you to receive donations on your Paypal account. A popup window with a Donate button is shown when the video is completed, when the video is paused, or both. You can define your own title and text or even skin the popup window completely. If you want, you can also trigger the opening of the popup window through other plugins. + + http://www.longtailvideo.com/addons/plugins/53/TipJar + + + + title + + The title of the popup window (the plugin will run without this flashvar, but won't show a title). + + + text + + The main text in the popup window (the plugin will run without this flashvar, but won't show a text). + + + business + + Email address for your PayPal account. (when this flashvar isn't set, the plugin won't initialize but send a warning to firebug's console). + + + show_complete + true + When set to true, the popup window is shown when the video completes. + + \ + + show_pause + false + When set to true, the popup window is shown when the video is paused. + + + + sandbox + false + When set to true, clicking the donation button takes you to the Paypal developers website (https://www.sandbox.paypal.com/) instead of the "real" Paypal website. You'll need a (free) account on the developers site (https://developer.paypal.com/). Set this to true for testing purposes only! + + + + sandbox_business + + Email address for your paypal seller account in Paypal's sandbox site (https://www.sandbox.paypal.com). + + + amount + + The suggested donation (users can change this). + + + currency_code + USD + The currency of the donation. Default is USD. + + + + return_url + + The URL to which the customer's browser is returned after completing the payment; for example, a URL on your site that displays a "Thank you for your payment" page. + + + cancel_return + + A URL to which the customer's browser is returned if payment is canceled; for example, a URL on your website that displays a "Payment Canceled" page. + + + image_url + + The URL of the 150x50-pixel image displayed as your logo in the upper left corner of PayPal's pages. Must be URL-encoded. + + + invoice + + Passthrough variable you can use to identify your invoice number for this purchase. + + + item_name + + Description of item. If omitted, customers can enter an item name at time of purchase. + + + item_number + + Passthrough variable for you to track purchases or donations, passed back to you at payment completion. + + + custom + + Passthrough variable; never presented to your customer. + + + show_start + false + Gives the option to show the popup window when the player loads. + + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/tweetit.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/tweetit.xml new file mode 100644 index 0000000..4bec85a --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/tweetit.xml @@ -0,0 +1,13 @@ + + Tweet It + tweetit.swf + tweetit-1 + 1.0 + Compatible with 5.0 and later. + mpoint + The Tweet It plugin allows your users to post your videos on the Twitter social network. It's a great way to have users share your videos online and broaden their distribution. The user just clicks on the Twitter icon in the dock, clicks Post, and then logs into their Twitter account. If the user doesn't have an account, then they can easily create one. + + http://www.longtailvideo.com/addons/plugins/134/Tweet-It + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/viral.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/viral.xml new file mode 100644 index 0000000..3783833 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/viral.xml @@ -0,0 +1,95 @@ + + Viral + viral.swf + viral-2 + 2.0 + Compatible with 4.3 or later. + LongTail Video + Viral, a video distribution plugin, supports three main functions: embed, link, and recommendations. It unobtrusively allows the user to share the video they are watching and see recommended videos from the publisher. + + http://www.longtailvideo.com/addons/plugins/47/Viral + + + + onpause + true + This flashvar is used to specify whether or not if the Viral options appear on pause. + + + + oncomplete + true + This flashvar is used to specify whether or not if the Viral options appear when the playback completes. + + + + allowmenu + true + Variable to control the menu button in the control bar. + + + + functions + embed + This flashvar is used to specify which of the Viral options to include in the options panel. One or more individual options can be specified in a comma-delimited list. + + + + recommendations + + This flashvar is used to specify a URL to an XML file with mRSS-formatted recommendations. + + + link + + This flashvar is used to specify the URL to be displayed to the user in the link field. This URL should reference the current page being viewed. + + + email_subject + + This flashvar is used to specify the text to show in the subject line of the email sent from this plugin - the default is "Check out this video!" + + + email_footer + + This flashvar is used to specify the text to show in the footer of the email sent from this plugin - the default is a link to www.longtailvideo.com + + + embed + + This flashvar is used to specify the embed code to be displayed to the user in the embed field. This code should reference the current page being viewed. Note: The embed code needs to be escaped and, due to technical limitations, cannot be re-embedded. + + + matchplayercolors + true + This flashvar is used to specify if the plugin should match the colors used by the regular player. This will override the fgcolor and bgcolor flashvars if set to true. + + + + fgcolor + 0xFFFFFF + Foreground color of the plugin. + + + bgcolor + 0x333333 + Background color of the plugin. + + + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/yousearch.xml b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/yousearch.xml new file mode 100644 index 0000000..0b59e45 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/plugins/yousearch.xml @@ -0,0 +1,11 @@ + + YouSearch + yousearch.swf + yousearch-1 + 1.0 + Compatible with 4.2 or higher. + LongTail Video + A simple overlay that allows the user to search for YouTube videos and play the results in the JW Player. + + http://www.longtailvideo.com/addons/plugins/45/YouSearch + \ No newline at end of file diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/readme.txt b/wp-content/plugins/jw-player-plugin-for-wordpress/readme.txt new file mode 100644 index 0000000..2cf09c3 --- /dev/null +++ b/wp-content/plugins/jw-player-plugin-for-wordpress/readme.txt @@ -0,0 +1,272 @@ +=== JW Player for WordPress – Flash & HTML5 Video Player === +Contributors: LongTail Video Inc. +Tags: JW Player, Video, Flash, LongTail Video, RTMP, Playlists, Audio, Image, HTML5, iPad, iPhone, iPod +Requires at least: 2.8.6 +Tested up to: 3.3.2 +Stable tag: 1.6.0 + +This video plugin is provided by LongTail Video Inc. It enables you to embed Flash and HTML5 video using the JW Player on your WordPress website. + +== Description == + +JW Player for WordPress makes it extremely easy to deliver Flash and HTML5 video through your WordPress website. This plugin has been developed by LongTail Video, the creator of the JW Player, and allows for easy customization and embedding of Flash and HTML5 video using the JW Player in your WordPress posts. It provides support for all of the player's configuration options, including skins, plugins and the LongTail Video AdSolution. + +Key Features + +* Full support for JW Player for Flash and HTML5. +* Manage multiple custom players. +* Full skin and plugin support with easy to use plugin customization interface. +* Full integration into the WordPress media library. Embed video with the JW Player as you write your posts. +* Support for adding external video to your media library including Youtube and RTMP streams. +* A full featured playlist manager - order your media by simply dragging the mouse. +* A powerful shortcode system for customizations at embed time. + +Documentation + +* Full documentation for installation, setup and use on our Support Site. +* Important information about File Permissions: http://codex.wordpress.org/Changing_File_Permissions +* If you have any questions, comments, problems or suggestions please post on our forum at: http://www.longtailvideo.com/support/forums +* The plugin has been tested on 1and1, MediaTemple, Dreamhost, and GoDaddy. + +Troubleshooting + +* If you're having issues please contact us at support@longtailvideo.com or our forum at: http://www.longtailvideo.com/support/forums. We can't fix any issues you're having if we don't know they exist. +* Please include a description of the problem, a link to your site demonstrating the issue, and the host you're using. + +== Installation == + +Installing for the first time: + +1. Place the plugin folder in your plugin directory. +1. Visit the JW Player Upgrade page and download or upload your JW Player. +1. For more detailed instructions please visit: Getting Started with the WordPress Plugin for the JW Player + +Upgrading: + +It is recommended that you back up your custom players if you are upgrading. + +You can perform the automatic update, download the plugin and upload, or FTP the plugin to the plugins folder directly. + +== Requirements == + +* WordPress 2.8.6 or higher +* PHP 5.0 or higher +* The wp-content/uploads directory needs to be writable by the plugin. This is likely already the case as WordPress stores your media and various other uploads here. + +== Usage == + +1. Go to Site Admin > Settings > JW Player Plugin +1. Click on the button to create a player. +1. Configure the Basic flashvars. +1. (Optional) Configure Advanced flashvars and add plugins. +1. Save your Player. +1. Create or edit a post. +1. Click on one of the Upload/Insert buttons +1. Using the Media Library tab, you should be able to edit your media. +1. For a video you want to insert, click the Insert JW Player button. +1. It should insert a tag that looks like the following: [jwplayer config="<Player name>" file="<your video>"] into the body. <your video> is a url to your file. The "config" attribute is only need when using a player other than the default. +1. Save your posts. + +== Changelog == + += 1.6.0 = + +* FEATURE: Brand new Playlist Manager now found in the Media section of the Dashboard. Now supports drag and drop, sorting and searching of your content. +* BUG: Thumbnail and HTML5 video selectors no longer load broken images. A default image is shown instead. +* BUG: The LongTail Plugin class has been renamed. This should avoid name collisions when running on IIS. + += 1.5.9 = + +* BUG: Fixed unintended escaping of forward slashes in embed code + += 1.5.8 = + +* ENHANCEMENT: updated sharing plugin to v3 +* ENHANCEMENT: Improved parsing of additional flashvars. Switched to one flashvar (name=value) per line for easier input. +* BUG: Added missing config blocks in mode blocks which could break HTML5 fallback +* BUG: Fixed encoding issues with complex flashvars in shortcode +* BUG: inline player javascript functions rendered more accurately +* BUG: improved compatibility with mootools based plugins and themes + += 1.5.7 = + +* BUG: Fixed warning message introduced in 1.5.6 that was missed in testing +* BUG: Fixed notice message that could appear on Plugin page + += 1.5.6 = + +* ENHANCEMENT: Playlists now correctly support HTML5 fallback +* ENHANCEMENT: Refactored embed code generation (optimized and more maintainable). +* ENHANCEMENT: Improved player installation messaging +* BUG: Removal of automatic HTML5 skin extraction. This was causing a serious issue for some reasons. +* BUG: Removed deprecated flashvars for tweetit and facebookit +* BUG: Uninstall now removes directories created by the plugin +* BUG: Player version being saved is no longer required. Messaging improved to indicate this. + += 1.5.5 = + +* BUG: Fixed broken Playlist Manager rendering that occurred after the WordPress 3.3 update. +* BUG: Fixed WordPress notice message about imcorrectly enqueued script file. + += 1.5.4 = + +* ENHANCEMENT: jwplayer.js and swfobject.js can now be configured to load on every page or only when there's a jwplayer shortcode. +* BUG: Custom player config xml files are now saved with the XML namespace. +* BUG: html5_file should now behave correctly in the shortcode. + += 1.5.3 = + +* ENHANCEMENT: jwplayer.js and swfobject.js now only loaded if a player is embedded on the page +* ENHANCEMENT: New setting on settings page to control whether the plugin uses https URLs when saving a player configuration. +* BUG: The plugin should now correctly activate across a WordPress Network. This is a workaround for a WordPress bug. + += 1.5.2 = + +* BUG: newtube skin is now all lower case. You should no longer see a warning message during plugin installation. +* BUG: Added a fallback to use the old skin location if the new skin directory structure wasn't updated. + += 1.5.1 = + +* BUG: The plugin should now upgrade properly and the shortcode should behave as expected on your site. +* BUG: The shortcode settings should now save properly. +* BUG: Playlist videos without a duration set should no longer incorrectly default to 10 seconds. + += 1.5.0 = + +* FEATURE: HTML 5 Skin support! When you update the plugin will automatically unzip the included skins. (This may take a minute or two). +* FEATURE: HTML 5 visual playlist support! +* FEATURE: Additional Plugins field. You can now specify extra plugins within the custom player itself. +* FEATURE: New settings page +* ENHANCEMENT: A large number of new skins have been added. +* ENHANCEMENT: Duration is now an option for videos. Useful for visual playlists. +* ENHANCEMENT: You can now specify where the player is located. +* ENHANCEMENT: Finer control over shortcode behavior +* ENHANCEMENT: Option to hide Insert Button and Duration for images +* ENHANCEMENT: Facebook OpenGraph data is now optional +* ENHANCEMENT: Custom player name added as a CSS class to enclosing player div. This should help with theming the player. +* BUG: Additional flashvars field should now save as expected. Removing flashvars should now work. +* BUG: Existing custom players can have their skin set back to the default. +* BUG: Removed deprecated swf only skins. +* BUG: Some code changes to the Playlist Manager. This should hopefully fix any lingering white screen issues. +* BUG: added is_tag() to shortcode processing +* BUG: Provider should now save properly in the Media Library +* BUG: Playlist location flashvar updated with new name (playlist.location). Playlist position should now behave as expected. +* BUG: Audio player wrapper now resizes correctly +* BUG: YouTube preview images should repopulate again +* BUG: Script registrations moved to init function +* BUG: Fixed missing variable declaration + += 1.4.3 = + +* BUG: Playlist manager should now work correctly in WordPress version 3.2 and greater +* BUG: Fixed improper embed code generation when using the new html5_file and download_file attributes + += 1.4.2 = + +* ENHANCEMENT: Use WordPress' built in ssl detection +* BUG: Adjusted category/archive page behavior. Checkbox now controls whether the jwplayer tag filter runs on the_excerpt() or the_content(). + += 1.4.1 = + +* BUG: Tweaked handling of https +* BUG: Fixed a warning message + += 1.4.0 = + +* FEATURE: Support for Modes. You can now specify different files for HTML5 mode. This can be done in the shortcode (html5_file and download_file) or when editing a piece of content. +* FEATURE: Support for posting to Facebook. Handled automatically when inserting via the media overlay. Alternatively you can use two custom fields for the post (jwplayermodule_fb_headers_id and jwplayermodule_fb_headers_config). +* ENHANCEMENT: Rewrite of code handling category behavior. If checked in the JW Player afdmin section players should now appear when viewing categories. If unchecked players and code will not show up in category view. +* ENHANCEMENT: wmode is now a configurable option for players. +* ENHANCEMENT: Add more robust URL loading for YouTube XML +* ENHANCEMENT: Better handling of audio controlbar +* ENHANCEMENT: Switched to JSON playlists. Playlists should now work for HTML5 player and no longer break as a result of theme formatting. +* ENHANCEMENT: The plugin now behaves correctly with HTTPS sites +* ENHANCEMENT: Increased security when setting file permissions. +* BUG: Fixed error in .zip uploading +* BUG: Dynamic error messaging for plugin directories. This should make it easier to debug network sites. +* BUG: Error handling on youtube api failure + += 1.3.3 = + +* FEATURE: Simple event handlers (with anonymous functions) can now be added via the shortcode. +* ENHANCEMENT: Option to toggle player embed on Category pages. +* ENHANCEMENT: Mootools no longer breaks the playlist manager. +* BUG: Added 'none' option for controlbar. +* BUG: Controlbar settings are now correctly applied. +* BUG: Urldecode passed in attributes in case they have been encoded. +* BUG: Fixed image priority. +* BUG: Now decodes the flashvar values to compensate for wordpress encoding. +* BUG: Removed unnecessary check for zip file that was causing errors +* BUG: Removed unnecessary shortcode call + += 1.3.2 = + +* BUG: Fixed bug with playlist generation introduced in 1.3.0 +* BUG: Fixed issue where thumbnail selector was causing high memory usage +* BUG: Player no longer embeds on category view or in search results. This should prevent the embed code being visible. +* BUG: Added some checks to prevent null errors in playlist manager. + += 1.3.1 = + +* BUG: Fixed bug where the player was sometimes not respecting the dimensions set in the custom configuration. + += 1.3.0 = + +* FEATURE: Full support for JW Player 5.3 for Flash and HTML5 added. +* ENHANCEMENT: Player upload now accepts uploading of the player package zip file. +* ENHANCEMENT: Fallback added so that users can properly download or upload player zips even if they don't have the ZipArchive PHP module installed. + += 1.2.5 = + +* BUG: Fixed automatic download error due to .zip file name change from 5.3 player release. + += 1.2.4 = + +* BUG: Fixed bug in Playlist Manager. Would not remember selected playlist when paging through media. +* ENHANCEMENT: Improved error messaging. It should be very clear what is preventing the plugin from working correctly. +* BUG: SWFObject code inserted on a single line. Should theme formatting from breaking the javascript. + += 1.2.3 = + +* ENHANCEMENT: Permission error handling tweaks +* BUG: Fix to JW Player plugins settings not being saved + += 1.2.2 = +* BUG: Additional adjustment to permissions. +* BUG: Reduction of archive size to try and avoid zip errors. + += 1.2.1 = +* BUG: File permission issues should now be fixed. +* BUG: Problem where uploaded player was incorrectly marked as invalid should now be fixed. +* BUG: Automated player download problem should now be fixed. + += 1.2.0 = +* FEATURE: Installation of the JW Player is now handled entirely within the plugin. Simply click a button to install the JW PLayer. Additionally, upload of licensed players can be done through the plugin as well. +* FEATURE: Content Aware Embed - when embedding audio without a thumbnail, only the controlbar will show +* FEATURE: RTMP Media Library support - can add RTMP streams to the media library and specify streamer and file at the media level. (plugin will make best guess at streamer and file on import) +* FEATURE: Should now be able to use the shortcode in widgets +* FEATURE: Will use the video tag (for .mp4) or youtube embed (for youtube videos) when your blog is viewed on an iPod, iPhone or iPad. +* ENHANCEMENT: Player and configs relocated to the WordPress uploads directly. This should minimize file permission issues going forward. +* ENHANCEMENT: Image Embedding now officially supported - Can specify the duration flashvar on image media. +* ENHANCEMENT: Audio embedding now officially supported - Can specify the thumbnail flashvar on audio media +* ENHANCEMENT: Arbitrary flashvar field added - useful when using custom plugins and you need to specify flashvars that aren't listed in the JW Player Setup +* ENHANCEMENT: Plugin now uses .zip skins. Number of available skins has been greatly expanded. +* ENHANCEMENT: Top Nav Bar has been added to the JW Player Setup wizard interface - should make specific edits to your players much easier now +* ENHANCEMENT: Significant redesign of the Playlist Manager - Improved usability and better handling of large media libraries. +* BUG: spaces removed from plugin list - should address unexpected plugin behavior (eg. LTAS not working correctly). +* BUG: Provider/Streamer flashvars have been added back to JW Player Setup +* BUG: Image editing should no longer fail while the plugin is active + += 1.1.2 = +* reimplemented path generation and usage +* Fixed links to longtailvideo.com +* Added links to plugin pages for plugins + += 1.1.1 = +* Improved path resolution. + += 1.1.0 = +* Fixes path resolution of player.swf on the LAMP stack. + += 1.0.0 = +* Initial release of the JW Player Plugin for WordPress diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/aero.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/aero.zip new file mode 100644 index 0000000..3d46f65 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/aero.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/alien.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/alien.zip new file mode 100644 index 0000000..cb9fb67 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/alien.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/anoto.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/anoto.zip new file mode 100644 index 0000000..9e31cf2 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/anoto.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/beelden.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/beelden.zip new file mode 100644 index 0000000..dd5ea3d Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/beelden.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/bekle.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/bekle.zip new file mode 100644 index 0000000..ebbe645 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/bekle.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/bluemetal.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/bluemetal.zip new file mode 100644 index 0000000..535112d Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/bluemetal.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/carbon.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/carbon.zip new file mode 100644 index 0000000..fdbe1aa Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/carbon.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/cassette.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/cassette.zip new file mode 100644 index 0000000..5dd36cd Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/cassette.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/chrome.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/chrome.zip new file mode 100644 index 0000000..e83e8d8 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/chrome.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/classic.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/classic.zip new file mode 100644 index 0000000..58ad5fa Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/classic.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/copper.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/copper.zip new file mode 100644 index 0000000..00ed469 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/copper.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/darkrv5.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/darkrv5.zip new file mode 100644 index 0000000..479a7bc Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/darkrv5.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/darksunset.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/darksunset.zip new file mode 100644 index 0000000..090063c Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/darksunset.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/eleganttwilight.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/eleganttwilight.zip new file mode 100644 index 0000000..fb0dd85 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/eleganttwilight.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/etv.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/etv.zip new file mode 100644 index 0000000..59a26ae Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/etv.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/facebook.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/facebook.zip new file mode 100644 index 0000000..fdbabde Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/facebook.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/five.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/five.zip new file mode 100644 index 0000000..778d2f9 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/five.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs28.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs28.zip new file mode 100644 index 0000000..ca6f385 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs28.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs29.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs29.zip new file mode 100644 index 0000000..a2fde4c Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs29.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs31.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs31.zip new file mode 100644 index 0000000..ae6fb59 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs31.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs33.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs33.zip new file mode 100644 index 0000000..b0b503b Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs33.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs33aqua.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs33aqua.zip new file mode 100644 index 0000000..439f2ea Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs33aqua.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs34.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs34.zip new file mode 100644 index 0000000..bbbcf09 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs34.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs35.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs35.zip new file mode 100644 index 0000000..573aacd Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs35.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs36.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs36.zip new file mode 100644 index 0000000..51266a0 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs36.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs37.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs37.zip new file mode 100644 index 0000000..04a4379 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs37.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs38.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs38.zip new file mode 100644 index 0000000..a53e0b3 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs38.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs39.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs39.zip new file mode 100644 index 0000000..1504bd2 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs39.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs40.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs40.zip new file mode 100644 index 0000000..bbfc2b7 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs40.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs41.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs41.zip new file mode 100644 index 0000000..3f9ea5a Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs41.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs41g.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs41g.zip new file mode 100644 index 0000000..ea2e523 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs41g.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs41o.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs41o.zip new file mode 100644 index 0000000..8b37894 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs41o.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs48.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs48.zip new file mode 100644 index 0000000..2c521f6 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/fs48.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/glatt.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/glatt.zip new file mode 100644 index 0000000..cd5b57f Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/glatt.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/glow.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/glow.zip new file mode 100644 index 0000000..79b8377 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/glow.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/graphite.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/graphite.zip new file mode 100644 index 0000000..54a5672 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/graphite.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/grol.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/grol.zip new file mode 100644 index 0000000..8965fc0 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/grol.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/grungetape.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/grungetape.zip new file mode 100644 index 0000000..60b26e4 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/grungetape.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/icecreamsneaka.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/icecreamsneaka.zip new file mode 100644 index 0000000..30c8848 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/icecreamsneaka.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/iskin.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/iskin.zip new file mode 100644 index 0000000..1608cbf Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/iskin.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/jump.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/jump.zip new file mode 100644 index 0000000..d8b81fe Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/jump.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/kleur.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/kleur.zip new file mode 100644 index 0000000..f6f741b Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/kleur.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lava.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lava.zip new file mode 100644 index 0000000..688e96f Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lava.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lightrv5.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lightrv5.zip new file mode 100644 index 0000000..bcbe9cc Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lightrv5.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lionslight.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lionslight.zip new file mode 100644 index 0000000..0140e15 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lionslight.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lulu.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lulu.zip new file mode 100644 index 0000000..bae7e7b Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/lulu.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/mare.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/mare.zip new file mode 100644 index 0000000..97ec717 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/mare.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/metal.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/metal.zip new file mode 100644 index 0000000..991e9c8 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/metal.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/metall.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/metall.zip new file mode 100644 index 0000000..47e5f15 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/metall.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/minima.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/minima.zip new file mode 100644 index 0000000..d4e3032 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/minima.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/minimal.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/minimal.zip new file mode 100644 index 0000000..93db47b Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/minimal.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/moderngreen.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/moderngreen.zip new file mode 100644 index 0000000..8288c34 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/moderngreen.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/modieus.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/modieus.zip new file mode 100644 index 0000000..63df0d3 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/modieus.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nacht.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nacht.zip new file mode 100644 index 0000000..eeb84e5 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nacht.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nature01.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nature01.zip new file mode 100644 index 0000000..14cf8e4 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nature01.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nemesis.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nemesis.zip new file mode 100644 index 0000000..5ea8cb6 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nemesis.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/newtube.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/newtube.zip new file mode 100644 index 0000000..17fd6b0 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/newtube.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/newtubedark.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/newtubedark.zip new file mode 100644 index 0000000..5d6ce27 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/newtubedark.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nexus.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nexus.zip new file mode 100644 index 0000000..f407cfe Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nexus.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/niion.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/niion.zip new file mode 100644 index 0000000..f7796ec Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/niion.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nikitaskin.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nikitaskin.zip new file mode 100644 index 0000000..a117ff6 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/nikitaskin.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/norden.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/norden.zip new file mode 100644 index 0000000..46f92bd Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/norden.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/playcasso.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/playcasso.zip new file mode 100644 index 0000000..ce217a2 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/playcasso.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/plexi.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/plexi.zip new file mode 100644 index 0000000..4cdd341 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/plexi.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/polishedmetal.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/polishedmetal.zip new file mode 100644 index 0000000..42a25d3 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/polishedmetal.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/rana.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/rana.zip new file mode 100644 index 0000000..df55431 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/rana.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/rime.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/rime.zip new file mode 100644 index 0000000..7c9b76c Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/rime.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/rowafed.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/rowafed.zip new file mode 100644 index 0000000..94d3c44 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/rowafed.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/ruby.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/ruby.zip new file mode 100644 index 0000000..4d137b7 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/ruby.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/sbl.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/sbl.zip new file mode 100644 index 0000000..0a7aed6 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/sbl.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/schoon.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/schoon.zip new file mode 100644 index 0000000..bcd5209 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/schoon.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/sea.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/sea.zip new file mode 100644 index 0000000..5e1fa42 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/sea.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/selena.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/selena.zip new file mode 100644 index 0000000..00d99e0 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/selena.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/simple.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/simple.zip new file mode 100644 index 0000000..3da98b6 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/simple.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/simplicity.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/simplicity.zip new file mode 100644 index 0000000..5edbb73 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/simplicity.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/skewd.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/skewd.zip new file mode 100644 index 0000000..08fa8d3 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/skewd.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/slim.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/slim.zip new file mode 100644 index 0000000..116995c Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/slim.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/smooth.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/smooth.zip new file mode 100644 index 0000000..87a9a2d Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/smooth.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/snel.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/snel.zip new file mode 100644 index 0000000..9ec2c1b Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/snel.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/solidgold.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/solidgold.zip new file mode 100644 index 0000000..b8bff72 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/solidgold.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/spirit.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/spirit.zip new file mode 100644 index 0000000..df60921 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/spirit.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/stijl.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/stijl.zip new file mode 100644 index 0000000..29d50db Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/stijl.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/stormtrooper.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/stormtrooper.zip new file mode 100644 index 0000000..c2584ba Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/stormtrooper.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/sun.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/sun.zip new file mode 100644 index 0000000..e17fc67 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/sun.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/tiby.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/tiby.zip new file mode 100644 index 0000000..d06548d Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/tiby.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/trekkie.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/trekkie.zip new file mode 100644 index 0000000..93d02eb Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/trekkie.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/unlimblue.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/unlimblue.zip new file mode 100644 index 0000000..c142028 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/unlimblue.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/vector01.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/vector01.zip new file mode 100644 index 0000000..8c9ca44 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/vector01.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/videosmartclassic.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/videosmartclassic.zip new file mode 100644 index 0000000..58df90a Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/videosmartclassic.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/whotube.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/whotube.zip new file mode 100644 index 0000000..f78a1ac Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/whotube.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/witch.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/witch.zip new file mode 100644 index 0000000..8683a36 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/witch.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/xero.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/xero.zip new file mode 100644 index 0000000..c369921 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/xero.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/skins/yellowish.zip b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/yellowish.zip new file mode 100644 index 0000000..0351ea8 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/skins/yellowish.zip differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/video_noimage.png b/wp-content/plugins/jw-player-plugin-for-wordpress/video_noimage.png new file mode 100644 index 0000000..36dcd71 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/video_noimage.png differ diff --git a/wp-content/plugins/jw-player-plugin-for-wordpress/wordpress.png b/wp-content/plugins/jw-player-plugin-for-wordpress/wordpress.png new file mode 100644 index 0000000..a8f78e0 Binary files /dev/null and b/wp-content/plugins/jw-player-plugin-for-wordpress/wordpress.png differ diff --git a/wp-content/plugins/most-active-members/most-active-members.php b/wp-content/plugins/most-active-members/most-active-members.php new file mode 100644 index 0000000..76cc0ff --- /dev/null +++ b/wp-content/plugins/most-active-members/most-active-members.php @@ -0,0 +1,375 @@ + 'top_members', 'description' => __('A widget that sums the top members on your blog', 'top_members') ); + + /* Widget control settings. */ + $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'top_members' ); + + /* Create the widget. */ + $this->WP_Widget( 'top_members' , __( 'Top Members' , 'top_members' ), $widget_ops, $control_ops ); + } + + /** + * This is the part where the heart of this widget is! + * here we get al the members and count their posts. + * + * The frontend function + */ + function widget( $args, $instance ) { + extract( $args ); + + // default values + $exclude_admin = false; + $exclude_zero = false; + + /* Our variables from the widget settings. (nice tabbed huh!?)*/ + if(isset($instance)) + { + if( isset( $instance[ 'title' ] ) ) { + $title = apply_filters( 'widget_title', $instance[ 'title' ] ); + } + + if( isset( $instance[ 'number' ]) ) { + $number_of_authors = $instance[ 'number' ]; + } + + if( isset( $instance[ 'template' ] ) ) { + $template = htmlspecialchars_decode( $instance[ 'template' ] ); + } + + if( isset( $instance[ 'before' ] ) ) { + $before_the_list = htmlspecialchars_decode( $instance[ 'before' ] ); + } + + if( isset( $instance[ 'after' ] ) ) { + $after_the_list = htmlspecialchars_decode( $instance [ 'after' ] ); + } + + if( isset( $instance[ 'gravatar_size' ] ) ) { + $gravatar_size = $instance[ 'gravatar_size' ]; + } + + if( isset( $instance[ 'exclude_admin' ] ) ) { + $exclude_admin = $instance[ 'exclude_admin' ]; + } + + if( isset( $instance[ 'exclude_zero' ] ) ) { + $exclude_zero = $instance[ 'exclude_zero' ]; + } + + if( isset( $instance[ 'linkbase'] ) ) { + $author_slug = $instance[ 'linkbase' ]; + } + + if( isset( $instance[ 'author_link' ] ) ) { + $author_link = $instance[ 'author_link' ]; + } + } + if( !isset( $author_slug ) ) { $author_slug = 'author' ; } + if( !isset( $author_link ) ) { $author_link = 'username' ;} + + // define vars + $counter=0; + + /* Before widget (defined by themes). */ + if( isset( $before_widget ) ) { + echo $before_widget; + } + + /* Display the widget title if one was input (before and after defined by themes). */ + if( isset( $title ) ) { + echo $before_title . $title . $after_title; + } + + $user_list = array(); + + $blogusers = get_users(); // doh + + // this part can be a heavyload process if you have a lot of members + + if ( $blogusers ) { + foreach ( $blogusers as $bloguser ) { + + $user_list[] = $bloguser->ID; + } + + // replaced deprecated wp-function (http://codex.wordpress.org/Function_Reference/get_usernumposts) + $posts = count_many_users_posts( $user_list, 'ia_invites' ); + + arsort( $posts ); //use asort($user_list) if ascending by post count is desired + + + + // user defined html element before the list + if( $user_list ) { echo $before_the_list; } + + if( count( $user_list ) < $number_of_authors ) + { + $number_of_authors=count($user_list); + } + + foreach($posts as $userid => $post) + { + $counter++; + if($counter>$number_of_authors) + { + break; + } + + // create a WP user object + $user = new WP_User( $userid ); + + // detect if user is administrator + if( isset( $user->wp_capabilities[ 'administrator' ] ) || isset( $user->blog_capabilities[ 'administrator' ] ) ){ + $user_is_admin = true; + } + else + { + $user_is_admin = false; + } + + $author_posts_url = get_author_posts_url($userid); + + if(!$user->user_firstname && !$user->user_lastname) + { + $user->user_firstname = $user->user_login; + } + //replace anchors in usertemplate + //author_slug / display_name + + // linkbase - author_link + + $arr_replace['username'] = $user->user_login; + $arr_replace['nickname'] = $user->nickname; + $arr_replace['display_name'] = $user->display_name; + + $output = str_replace("%linktoposts%",get_bloginfo("url") .'/'.$author_slug.'/'.str_replace(" ","-",strtolower($arr_replace[$author_link])),$template); + + $output = str_replace("%firstname%",$user->user_firstname,$output); + $output = str_replace("%lastname%",$user->user_lastname,$output); + $output = str_replace("%nrofposts%",$post,$output); + $output = str_replace("%nickname%",$user->nickname,$output); + $output = str_replace("%displayname%",$user->display_name,$output); + + $gravatar_detect = strpos($output,"%gravatar%"); + + if($gravatar_detect !== false){ + $gravatar = get_avatar($user->ID, $gravatar_size); + $output = str_replace("%gravatar%",$gravatar,$output); + } + + if(($user_is_admin && $exclude_admin == "on") || ($post<1 && $exclude_zero=="on")) + { + // aiii we skipped a user but we still want to get the total number of users right! + $counter--; + } + else + { + // newline in html, al for the looks! + echo $output ."\n"; + } + } + + // user defined html after the list + if($user_list){echo $after_the_list;} + } + + /* After widget (defined by themes). */ + echo $after_widget; + + } + + + + + /** + * Update the widget settings. + * + * Backend widget settings + */ + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + + /* Strip tags for title and name to remove HTML (important for text inputs). */ + $instance['title'] = strip_tags( $new_instance['title'] ); + + // htmlspecialchars to save html markup in database, at frontend we use htmlspecialchars_decode + $instance['template'] = htmlspecialchars($new_instance['template']); + + $instance['linkbase'] = $new_instance['linkbase']; + $instance['author_link'] = $new_instance['author_link']; + + $instance['before'] = htmlspecialchars($new_instance['before']); + $instance['after'] = htmlspecialchars($new_instance['after']); + + $instance['exclude_admin'] = $new_instance['exclude_admin']; + $instance['exclude_zero'] = $new_instance['exclude_zero']; + + // check if datainput isnummeric + if(is_numeric($new_instance['gravatar_size'])) + { + $instance['gravatar_size'] = $new_instance['gravatar_size']; + } + + // check if datainput isnummeric and postive and under 100 + if(is_numeric($new_instance['number'])) + { + if($new_instance['number'] <100 && $new_instance['number'] >0) + { + $instance['number'] = $new_instance['number']; + } + else + { + if($new_instance['number'] < 1) + { + $instance['number'] = 1; + } + else + { + $instance['number'] = 99; + } + + } + } + + + return $instance; + } + + /** + * Displays the widget settings controls on the widget panel. + * + * Backend widget options form + */ + function form( $instance ) { + $defaults = array( + 'title' => __( 'Top Members', 'top_members'), + 'number' => __(1, 'top_members'), + 'template' => __('
            • Thanks %firstname% %lastname% !!!
              %gravatar% %firstname% %lastname% has recommended us to %nrofposts% friends!!!
            • ', 'top_members'), + 'linkbase' => 'buddypress/members', + 'author_link' => 'username', + 'before' => __('
                ', 'top_members'), + 'after' => __('
              ', 'top_members'), + 'gravatar_size' => __(24), + + ); + + $instance = wp_parse_args( (array) $instance, $defaults ); ?> + +

              + + +

              +

              + + +

              +

              + + /> +

              +

              + + /> +

              +

              + + +

              +

              Linkbase and auhtor link used to find your author page. (don't touch in default WP config). You will need this when using a plugin like author_slug. +
              example how used www.example.com/slug/author_link

              +

              + + +

              + + +

              + + + + + + +

              + + +

              + + +

              +

              + + +

              +

              + + +

              + + \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/PSD/fps-arrows.psd b/wp-content/plugins/premium-featured-posts-slider/PSD/fps-arrows.psd new file mode 100644 index 0000000..9de63dd Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/PSD/fps-arrows.psd differ diff --git a/wp-content/plugins/premium-featured-posts-slider/PSD/fps-pagination.psd b/wp-content/plugins/premium-featured-posts-slider/PSD/fps-pagination.psd new file mode 100644 index 0000000..585c702 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/PSD/fps-pagination.psd differ diff --git a/wp-content/plugins/premium-featured-posts-slider/css/featured-posts-slider.css b/wp-content/plugins/premium-featured-posts-slider/css/featured-posts-slider.css new file mode 100644 index 0000000..3ed148e --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/css/featured-posts-slider.css @@ -0,0 +1,206 @@ +/* + Premium Featured Posts Slider + (c) 2011, Web factory Ltd +*/ + +#fps-container{ + width: 100%; + display: block; + margin: 0; + position: relative +} + +.fps-slide { + display:block; + overflow: hidden +} + +.fps-slide h1, .fps-slide h2, .fps-slide h3, .fps-slide h4, .fps-slide h5, .fps-slide h6 { + margin: 0 0 15px 0; + clear: none +} + +.fps-entry-title { + color: white !important; + background:url(../images/transp-black.png) repeat top left; + position: absolute; + bottom: 0px; + left:0; + margin: 0!important; + padding: 8px 0 8px 10px; + border: 0; + width: 100% +} + +.fps-slide a:hover { + text-decoration:none +} + +.fps-block { + display: block +} + +.fps-thumb { + float: left; + margin-right:20px +} + +.fps-thumb-right { + float: right; + margin-left: 20px +} + +.fps-thumb img, .fps-thumb-right img { + width:auto!important; + height:auto!important +} + +.fps-slide h2 { + line-height: 20px +} + +.fps-full-img, .fps-thumbnail, .fps-full-img img { + padding: 0 !important; + margin: 0 !important; + border: 0 !important +} + +.fps-next, .fps-prev { + background-color: transparent !important; + width: 38px; + height: 43px; + z-index: 9999; + float: left; + position: absolute; + bottom: 50%; + display: none !important; + margin-bottom: -21px !important; + /* IE 8 */ + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + /* IE 5-7 */ + filter: alpha(opacity=50); + /* Netscape */ + -moz-opacity: 0.5; + /* Safari 1.x */ + -khtml-opacity: 0.5; + /* Good browsers */ + opacity: 0.5; + outline: none; + text-indent: -9999px +} + +.fps-next:hover, .fps-prev:hover { + /* IE 8 */ + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + /* IE 5-7 */ + filter: alpha(opacity=80); + /* Netscape */ + -moz-opacity: 0.8; + /* Safari 1.x */ + -khtml-opacity: 0.8; + /* Good browsers */ + opacity: 0.8; + outline: none +} + +.fps-next span, .fps-prev span { + display:none !important +} + +#fps-container:hover .fps-next, #fps-container:hover .fps-prev { + display: block !important +} + +.fps-prev { + left: 10px; + background-image: url(../images/previous.png); + background-position: 0 0; + background-repeat: no-repeat +} + +.fps-next { + right: 10px; + background-image:url(../images/next.png); + background-position: 0 0; + background-repeat: no-repeat +} + +.fps-pagination { + margin: 26px auto 0; + list-style: none; + text-align: center +} + +.fps-pagination li { + display: inline-block; + zoom: 1; + *display: inline; + margin: 0 1px; + list-style: none +} + +.fps-pagination li a { + display: block; + width: 12px; + height: 0; + padding-top: 12px; + background-image: url(../images/fps-pagination.png); + background-position: 0 0; + float: left; + overflow: hidden +} + +.fps-pagination li.current a { + background-position: 0 -12px +} + +.fps-pagination.thumb-pagination { + list-style: none; + margin: 0 auto; + text-align: center +} + +.fps-pagination.thumb-pagination li { + display: inline-block; + zoom: 1; + *display: inline; + list-style: none; + margin: 0 10px 10px 0 +} + +.fps-pagination.thumb-pagination li a { + background: transparent; + overflow: visible; + width: auto; + height: auto; + /* IE 8 */ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + /* IE 5-7 */ filter: alpha(opacity=50); + /* Netscape */ -moz-opacity: 0.5; + /* Safari 1.x */ -khtml-opacity: 0.5; + /* Good browsers */ opacity: 0.5 +} + +.fps-pagination.thumb-pagination li a:hover, .fps-pagination.thumb-pagination li.current a { + /* IE 8 */ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + /* IE 5-7 */ filter: alpha(opacity=100); + /* Netscape */ -moz-opacity: 1; + /* Safari 1.x */ -khtml-opacity: 1; + /* Good browsers */ opacity: 1; + cursor:pointer +} + +.fps-pagination.thumb-pagination li a img { + background: #f5f5f5; + border: 1px solid #f0f0f0; + padding: 3px; + box-shadow: 0px 0px 1px #999; + -moz-box-shadow: 0px 0px 1px #999; + -webkit-box-shadow: 0px 0px 1px #999; + width:auto!important; + vertical-align: middle; + margin:0!important +} + +.fps-pagination.thumb-pagination li a:focus { + outline:0 +} \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/ie.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/ie.css new file mode 100644 index 0000000..67cb091 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/ie.css @@ -0,0 +1,35 @@ +/* ----------------------------------------------------------------------- + + + Blueprint CSS Framework 0.9 + http://blueprintcss.org + + * Copyright (c) 2007-Present. See LICENSE for more info. + * See README for instructions on how to use Blueprint. + * For credits and origins, see AUTHORS. + * This is a compressed file. See the sources in the 'src' directory. + +----------------------------------------------------------------------- */ + +/* ie.css */ +body {text-align:center;} +.container {text-align:left;} +* html .column, * html div.span-1, * html div.span-2, * html div.span-3, * html div.span-4, * html div.span-5, * html div.span-6, * html div.span-7, * html div.span-8, * html div.span-9, * html div.span-10, * html div.span-11, * html div.span-12, * html div.span-13, * html div.span-14, * html div.span-15, * html div.span-16, * html div.span-17, * html div.span-18, * html div.span-19, * html div.span-20, * html div.span-21, * html div.span-22, * html div.span-23, * html div.span-24 {overflow-x:hidden;} +* html legend {margin:0px -8px 16px 0;padding:0;} +ol {margin-left:2em;} +sup {vertical-align:text-top;} +sub {vertical-align:text-bottom;} +html>body p code {*white-space:normal;} +hr {margin:-8px auto 11px;} +img {-ms-interpolation-mode:bicubic;} +.clearfix, .container {display:inline-block;} +* html .clearfix, * html .container {height:1%;} +fieldset {padding-top:0;} +input.text, input.title {background-color:#fff;border:1px solid #bbb;} +input.text:focus, input.title:focus {border-color:#666;} +input.text, input.title, textarea, select {margin:0.5em 0;} +input.checkbox, input.radio {position:relative;top:.25em;} +form.inline div, form.inline p {vertical-align:middle;} +form.inline label {position:relative;top:-0.25em;} +form.inline input.checkbox, form.inline input.radio, form.inline input.button, form.inline button {margin:0.5em 0;} +button, input.button {position:relative;top:0.25em;} \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/icons/cross.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/icons/cross.png new file mode 100644 index 0000000..1514d51 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/icons/cross.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/icons/key.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/icons/key.png new file mode 100644 index 0000000..a9d5e4f Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/icons/key.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/icons/tick.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/icons/tick.png new file mode 100644 index 0000000..a9925a0 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/icons/tick.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/readme.txt b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/readme.txt new file mode 100644 index 0000000..a8c2b57 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/readme.txt @@ -0,0 +1,32 @@ +Buttons + +* Gives you great looking CSS buttons, for both and + + + Change Password + + + + Cancel + diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/screen.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/screen.css new file mode 100644 index 0000000..bb66b21 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/buttons/screen.css @@ -0,0 +1,97 @@ +/* -------------------------------------------------------------- + + buttons.css + * Gives you some great CSS-only buttons. + + Created by Kevin Hale [particletree.com] + * particletree.com/features/rediscovering-the-button-element + + See Readme.txt in this folder for instructions. + +-------------------------------------------------------------- */ + +a.button, button { + display:block; + float:left; + margin: 0.7em 0.5em 0.7em 0; + padding:5px 10px 5px 7px; /* Links */ + + border:1px solid #dedede; + border-top:1px solid #eee; + border-left:1px solid #eee; + + background-color:#f5f5f5; + font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; + font-size:100%; + line-height:130%; + text-decoration:none; + font-weight:bold; + color:#565656; + cursor:pointer; +} +button { + width:auto; + overflow:visible; + padding:4px 10px 3px 7px; /* IE6 */ +} +button[type] { + padding:4px 10px 4px 7px; /* Firefox */ + line-height:17px; /* Safari */ +} +*:first-child+html button[type] { + padding:4px 10px 3px 7px; /* IE7 */ +} +button img, a.button img{ + margin:0 3px -3px 0 !important; + padding:0; + border:none; + width:16px; + height:16px; + float:none; +} + + +/* Button colors +-------------------------------------------------------------- */ + +/* Standard */ +button:hover, a.button:hover{ + background-color:#dff4ff; + border:1px solid #c2e1ef; + color:#336699; +} +a.button:active{ + background-color:#6299c5; + border:1px solid #6299c5; + color:#fff; +} + +/* Positive */ +body .positive { + color:#529214; +} +a.positive:hover, button.positive:hover { + background-color:#E6EFC2; + border:1px solid #C6D880; + color:#529214; +} +a.positive:active { + background-color:#529214; + border:1px solid #529214; + color:#fff; +} + +/* Negative */ +body .negative { + color:#d12f19; +} +a.negative:hover, button.negative:hover { + background-color:#fbe3e4; + border:1px solid #fbc2c4; + color:#d12f19; +} +a.negative:active { + background-color:#d12f19; + border:1px solid #d12f19; + color:#fff; +} diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/fancy-type/readme.txt b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/fancy-type/readme.txt new file mode 100644 index 0000000..85f2491 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/fancy-type/readme.txt @@ -0,0 +1,14 @@ +Fancy Type + +* Gives you classes to use if you'd like some + extra fancy typography. + +Credits and instructions are specified above each class +in the fancy-type.css file in this directory. + + +Usage +---------------------------------------------------------------- + +1) Add this plugin to lib/settings.yml. + See compress.rb for instructions. diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/fancy-type/screen.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/fancy-type/screen.css new file mode 100644 index 0000000..2b90b95 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/fancy-type/screen.css @@ -0,0 +1,71 @@ +/* -------------------------------------------------------------- + + fancy-type.css + * Lots of pretty advanced classes for manipulating text. + + See the Readme file in this folder for additional instructions. + +-------------------------------------------------------------- */ + +/* Indentation instead of line shifts for sibling paragraphs. */ + /* p + p { text-indent:2em; margin-top:-1.5em; } */ + form p + p { text-indent: 0; } /* Don't want this in forms. */ + + +/* For great looking type, use this code instead of asdf: + asdf + Best used on prepositions and ampersands. */ + +.alt { + color: #666; + font-family: "Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua", Georgia, serif; + font-style: italic; + font-weight: normal; +} + + +/* For great looking quote marks in titles, replace "asdf" with: + asdf” + (That is, when the title starts with a quote mark). + (You may have to change this value depending on your font size). */ + +.dquo { margin-left: -.5em; } + + +/* Reduced size type with incremental leading + (http://www.markboulton.co.uk/journal/comments/incremental_leading/) + + This could be used for side notes. For smaller type, you don't necessarily want to + follow the 1.5x vertical rhythm -- the line-height is too much. + + Using this class, it reduces your font size and line-height so that for + every four lines of normal sized type, there is five lines of the sidenote. eg: + + New type size in em's: + 10px (wanted side note size) / 12px (existing base size) = 0.8333 (new type size in ems) + + New line-height value: + 12px x 1.5 = 18px (old line-height) + 18px x 4 = 72px + 72px / 5 = 14.4px (new line height) + 14.4px / 10px = 1.44 (new line height in em's) */ + +p.incr, .incr p { + font-size: 10px; + line-height: 1.44em; + margin-bottom: 1.5em; +} + + +/* Surround uppercase words and abbreviations with this class. + Based on work by Jørgen Arnor GÃ¥rdsø Lom [http://twistedintellect.com/] */ + +.caps { + font-variant: small-caps; + letter-spacing: 1px; + text-transform: lowercase; + font-size:1.2em; + line-height:1%; + font-weight:bold; + padding:0 2px; +} diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/doc.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/doc.png new file mode 100644 index 0000000..834cdfa Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/doc.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/email.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/email.png new file mode 100644 index 0000000..7348aed Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/email.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/external.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/external.png new file mode 100644 index 0000000..cf1cfb4 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/external.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/feed.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/feed.png new file mode 100644 index 0000000..315c4f4 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/feed.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/im.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/im.png new file mode 100644 index 0000000..79f35cc Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/im.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/pdf.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/pdf.png new file mode 100644 index 0000000..8f8095e Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/pdf.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/visited.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/visited.png new file mode 100644 index 0000000..ebf206d Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/visited.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/xls.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/xls.png new file mode 100644 index 0000000..b977d7e Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/icons/xls.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/readme.txt b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/readme.txt new file mode 100644 index 0000000..3cb1b2c --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/readme.txt @@ -0,0 +1,18 @@ +Link Icons +* Icons for links based on protocol or file type. + +This is not supported in IE versions < 7. + + +Credits +---------------------------------------------------------------- + +* Marc Morgan +* Olav Bjorkoy [bjorkoy.com] + + +Usage +---------------------------------------------------------------- + +1) Add this line to your HTML: + \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/screen.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/screen.css new file mode 100644 index 0000000..6d3d47f --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/link-icons/screen.css @@ -0,0 +1,40 @@ +/* -------------------------------------------------------------- + + link-icons.css + * Icons for links based on protocol or file type. + + See the Readme file in this folder for additional instructions. + +-------------------------------------------------------------- */ + +/* Use this class if a link gets an icon when it shouldn't. */ +body a.noicon { + background:transparent none !important; + padding:0 !important; + margin:0 !important; +} + +/* Make sure the icons are not cut */ +a[href^="http:"], a[href^="mailto:"], a[href^="http:"]:visited, +a[href$=".pdf"], a[href$=".doc"], a[href$=".xls"], a[href$=".rss"], +a[href$=".rdf"], a[href^="aim:"] { + padding:2px 22px 2px 0; + margin:-2px 0; + background-repeat: no-repeat; + background-position: right center; +} + +/* External links */ +a[href^="http:"] { background-image: url(icons/external.png); } +a[href^="mailto:"] { background-image: url(icons/email.png); } +a[href^="http:"]:visited { background-image: url(icons/visited.png); } + +/* Files */ +a[href$=".pdf"] { background-image: url(icons/pdf.png); } +a[href$=".doc"] { background-image: url(icons/doc.png); } +a[href$=".xls"] { background-image: url(icons/xls.png); } + +/* Misc */ +a[href$=".rss"], +a[href$=".rdf"] { background-image: url(icons/feed.png); } +a[href^="aim:"] { background-image: url(icons/im.png); } \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/rtl/readme.txt b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/rtl/readme.txt new file mode 100644 index 0000000..4c46535 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/rtl/readme.txt @@ -0,0 +1,10 @@ +RTL +* Mirrors Blueprint, so it can be used with Right-to-Left languages. + +By Ran Yaniv Hartstein, ranh.co.il + +Usage +---------------------------------------------------------------- + +1) Add this line to your HTML: + \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/rtl/screen.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/rtl/screen.css new file mode 100644 index 0000000..0304477 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/plugins/rtl/screen.css @@ -0,0 +1,109 @@ +/* -------------------------------------------------------------- + + rtl.css + * Mirrors Blueprint for left-to-right languages + + By Ran Yaniv Hartstein [ranh.co.il] + +-------------------------------------------------------------- */ + +body .container { direction: rtl; } +body .column { + float: right; + margin-right: 0; + margin-left: 10px; +} + +body div.last { margin-left: 0; } +body table .last { padding-left: 0; } + +body .append-1 { padding-right: 0; padding-left: 40px; } +body .append-2 { padding-right: 0; padding-left: 80px; } +body .append-3 { padding-right: 0; padding-left: 120px; } +body .append-4 { padding-right: 0; padding-left: 160px; } +body .append-5 { padding-right: 0; padding-left: 200px; } +body .append-6 { padding-right: 0; padding-left: 240px; } +body .append-7 { padding-right: 0; padding-left: 280px; } +body .append-8 { padding-right: 0; padding-left: 320px; } +body .append-9 { padding-right: 0; padding-left: 360px; } +body .append-10 { padding-right: 0; padding-left: 400px; } +body .append-11 { padding-right: 0; padding-left: 440px; } +body .append-12 { padding-right: 0; padding-left: 480px; } +body .append-13 { padding-right: 0; padding-left: 520px; } +body .append-14 { padding-right: 0; padding-left: 560px; } +body .append-15 { padding-right: 0; padding-left: 600px; } +body .append-16 { padding-right: 0; padding-left: 640px; } +body .append-17 { padding-right: 0; padding-left: 680px; } +body .append-18 { padding-right: 0; padding-left: 720px; } +body .append-19 { padding-right: 0; padding-left: 760px; } +body .append-20 { padding-right: 0; padding-left: 800px; } +body .append-21 { padding-right: 0; padding-left: 840px; } +body .append-22 { padding-right: 0; padding-left: 880px; } +body .append-23 { padding-right: 0; padding-left: 920px; } + +body .prepend-1 { padding-left: 0; padding-right: 40px; } +body .prepend-2 { padding-left: 0; padding-right: 80px; } +body .prepend-3 { padding-left: 0; padding-right: 120px; } +body .prepend-4 { padding-left: 0; padding-right: 160px; } +body .prepend-5 { padding-left: 0; padding-right: 200px; } +body .prepend-6 { padding-left: 0; padding-right: 240px; } +body .prepend-7 { padding-left: 0; padding-right: 280px; } +body .prepend-8 { padding-left: 0; padding-right: 320px; } +body .prepend-9 { padding-left: 0; padding-right: 360px; } +body .prepend-10 { padding-left: 0; padding-right: 400px; } +body .prepend-11 { padding-left: 0; padding-right: 440px; } +body .prepend-12 { padding-left: 0; padding-right: 480px; } +body .prepend-13 { padding-left: 0; padding-right: 520px; } +body .prepend-14 { padding-left: 0; padding-right: 560px; } +body .prepend-15 { padding-left: 0; padding-right: 600px; } +body .prepend-16 { padding-left: 0; padding-right: 640px; } +body .prepend-17 { padding-left: 0; padding-right: 680px; } +body .prepend-18 { padding-left: 0; padding-right: 720px; } +body .prepend-19 { padding-left: 0; padding-right: 760px; } +body .prepend-20 { padding-left: 0; padding-right: 800px; } +body .prepend-21 { padding-left: 0; padding-right: 840px; } +body .prepend-22 { padding-left: 0; padding-right: 880px; } +body .prepend-23 { padding-left: 0; padding-right: 920px; } + +body .border { + padding-right: 0; + padding-left: 4px; + margin-right: 0; + margin-left: 5px; + border-right: none; + border-left: 1px solid #eee; +} + +body .colborder { + padding-right: 0; + padding-left: 24px; + margin-right: 0; + margin-left: 25px; + border-right: none; + border-left: 1px solid #eee; +} + +body .pull-1 { margin-left: 0; margin-right: -40px; } +body .pull-2 { margin-left: 0; margin-right: -80px; } +body .pull-3 { margin-left: 0; margin-right: -120px; } +body .pull-4 { margin-left: 0; margin-right: -160px; } + +body .push-0 { margin: 0 18px 0 0; } +body .push-1 { margin: 0 18px 0 -40px; } +body .push-2 { margin: 0 18px 0 -80px; } +body .push-3 { margin: 0 18px 0 -120px; } +body .push-4 { margin: 0 18px 0 -160px; } +body .push-0, body .push-1, body .push-2, +body .push-3, body .push-4 { float: left; } + + +/* Typography with RTL support */ +body h1,body h2,body h3, +body h4,body h5,body h6 { font-family: Arial, sans-serif; } +html body { font-family: Arial, sans-serif; } +body pre,body code,body tt { font-family: monospace; } + +/* Mirror floats and margins on typographic elements */ +body p img { float: right; margin: 1.5em 0 1.5em 1.5em; } +body dd, body ul, body ol { margin-left: 0; margin-right: 1.5em;} +body td, body th { text-align:right; } \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/print.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/print.css new file mode 100644 index 0000000..4f35877 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/print.css @@ -0,0 +1,30 @@ +/* ----------------------------------------------------------------------- + + + Blueprint CSS Framework 0.9 + http://blueprintcss.org + + * Copyright (c) 2007-Present. See LICENSE for more info. + * See README for instructions on how to use Blueprint. + * For credits and origins, see AUTHORS. + * This is a compressed file. See the sources in the 'src' directory. + +----------------------------------------------------------------------- */ + +/* print.css */ +body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;} +.container {background:none;} +hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;} +hr.space {background:#fff;color:#fff;} +h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;} +code {font:.9em "Courier New", Monaco, Courier, monospace;} +img {float:left;margin:1.5em 1.5em 1.5em 0;} +a img {border:none;} +p img.top {margin-top:0;} +blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;} +.small {font-size:.9em;} +.large {font-size:1.1em;} +.quiet {color:#999;} +.hide {display:none;} +a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;} +a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;} \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/screen.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/screen.css new file mode 100644 index 0000000..3a1111a --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/screen.css @@ -0,0 +1,275 @@ +/* ----------------------------------------------------------------------- + + + Blueprint CSS Framework 0.9 + http://blueprintcss.org + + * Copyright (c) 2007-Present. See LICENSE for more info. + * See README for instructions on how to use Blueprint. + * For credits and origins, see AUTHORS. + * This is a compressed file. See the sources in the 'src' directory. + +----------------------------------------------------------------------- */ + +/* reset.css */ +html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;} +body {line-height:1.5;} +table {border-collapse:separate;border-spacing:0;} +caption, th, td {text-align:left;font-weight:normal;} +table, td, th {vertical-align:middle;} +blockquote:before, blockquote:after, q:before, q:after {content:"";} +blockquote, q {quotes:"" "";} +a img {border:none;} + +/* custom.css */ +.info { background:#fafcfc; } +.borderTop { border-top: 1px solid #eee;} +.append-0 {padding-right:20px;} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +table tr td { + border-top: 1px solid #E7E7E7; + padding: 6px 24px; +} + + +/* typography.css */ +body {font-size:80%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;padding-top:30px;} +h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;} +h1 {font-size:2.6em;line-height:1;margin-bottom:0.5em;} +h2 {font-size:1.9em;margin-bottom:0.75em;} +h3 {font-size:1.4em;line-height:1;margin-bottom:1em;} +h4 {font-size:1.1em;line-height:1.25;margin-bottom:1.25em; font-weight: bold;} +h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;} +h6 {font-size:1em;font-weight:bold;} +h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;} +p {margin:0 0 1.5em;line-height:1.65em;} +p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;} +p img.right {float:right;margin:1.5em 0 1.5em 1.5em;} +a:focus, a:hover {color:#000;} +a {color:#009;text-decoration:underline;} +blockquote {margin:1.5em;color:#666;font-style:italic;} +strong {font-weight:bold;} +em, dfn {font-style:italic;} +dfn {font-weight:bold;} +sup, sub {line-height:0;} +abbr, acronym {border-bottom:1px dotted #666;} +address {margin:0 0 1.5em;font-style:italic;} +del {color:#666;} +pre {margin:1.5em 0;white-space:pre;background-color:lightgray;} +pre, code, tt {font:13px 'andale mono', 'lucida console', monospace;line-height:1.5;} +li ul, li ol {margin:0 1.5em;} +ul, ol {margin:0 1.5em 1.5em 3.5em;} +ul {list-style-type:disc;} +ol {list-style-type:decimal;} +ol.alpha {list-style:upper-alpha;} +dl {margin:0 0 1.5em 0;} +dl dt {font-weight:bold;} +dd {margin-left:1.5em;} +table {margin-bottom:1.4em;width:100%;} +th {font-weight:bold;} +thead th {background:#c3d9ff;} +th, td, caption {padding:4px 10px 4px 5px;} +tr.even td {background:#e5ecf9;} +tfoot {font-style:italic;} +caption {background:#eee;} +.small {font-size:.85em;margin-bottom:1.875em;line-height:1.875em;} +.large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;} +.hide {display:none;} +.quiet {color:#666;} +.loud {color:#000;} +.highlight {background:#ff0;} +.added {background:#060;color:#fff;} +.removed {background:#900;color:#fff;} +.first {margin-left:0;padding-left:0;} +.last {margin-right:0;padding-right:0;} +.top {margin-top:0;padding-top:0;} +.bottom {margin-bottom:0;padding-bottom:0;} +.center {text-align:center;} + +/* forms.css */ +label {font-weight:bold;} +fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;} +legend {font-weight:bold;font-size:1.2em;} +input[type=text], input[type=password], input.text, input.title, textarea, select {background-color:#fff;border:1px solid #bbb;} +input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus, select:focus {border-color:#666;} +input[type=text], input[type=password], input.text, input.title, textarea, select {margin:0.5em 0;} +input.text, input.title {width:300px;padding:5px;} +input.title {font-size:1.5em;} +textarea {width:390px;height:250px;padding:5px;} +input[type=checkbox], input[type=radio], input.checkbox, input.radio {position:relative;top:.25em;} +form.inline {line-height:3;} +form.inline p {margin-bottom:0;} +.error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;} +.error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;} +.notice {background:#FFF6BF;color:#514721;border-color:#FFD324;} +.success {background:#E6EFC2;color:#264409;border-color:#C6D880;} +.error a {color:#8a1f11;} +.notice a {color:#514721;} +.success a {color:#264409;} + +/* grid.css */ +.container {width:790px;margin:0 auto;} +.showgrid {background:url(src/grid.png);} +.column, div.span-1, div.span-2, div.span-3, div.span-4, div.span-5, div.span-6, div.span-7, div.span-8, div.span-9, div.span-10, div.span-11, div.span-12, div.span-13, div.span-14, div.span-15, div.span-16, div.span-17, div.span-18, div.span-19, div.span-20, div.span-21, div.span-22, div.span-23, div.span-24 {float:left;margin-right:10px;} +.last, div.last {margin-right:0;} +.span-1 {width:30px;} +.span-2 {width:70px;} +.span-3 {width:110px;} +.span-4 {width:150px;} +.span-5 {width:190px;} +.span-6 {width:230px;} +.span-7 {width:270px;} +.span-8 {width:310px;} +.span-9 {width:350px;} +.span-10 {width:390px;} +.span-11 {width:430px;} +.span-12 {width:470px;} +.span-13 {width:510px;} +.span-14 {width:550px;} +.span-15 {width:590px;} +.span-16 {width:630px;} +.span-17 {width:670px;} +.span-18 {width:710px;} +.span-19 {width:750px;} +.span-20 {width:790px;} +.span-21 {width:830px;} +.span-22 {width:870px;} +.span-23 {width:910px;} +.span-24, div.span-24 {width:950px;margin:0;} +input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 {border-left-width:1px!important;border-right-width:1px!important;padding-left:5px!important;padding-right:5px!important;} +input.span-1, textarea.span-1 {width:18px!important;} +input.span-2, textarea.span-2 {width:58px!important;} +input.span-3, textarea.span-3 {width:98px!important;} +input.span-4, textarea.span-4 {width:138px!important;} +input.span-5, textarea.span-5 {width:178px!important;} +input.span-6, textarea.span-6 {width:218px!important;} +input.span-7, textarea.span-7 {width:258px!important;} +input.span-8, textarea.span-8 {width:298px!important;} +input.span-9, textarea.span-9 {width:338px!important;} +input.span-10, textarea.span-10 {width:378px!important;} +input.span-11, textarea.span-11 {width:418px!important;} +input.span-12, textarea.span-12 {width:458px!important;} +input.span-13, textarea.span-13 {width:498px!important;} +input.span-14, textarea.span-14 {width:538px!important;} +input.span-15, textarea.span-15 {width:578px!important;} +input.span-16, textarea.span-16 {width:618px!important;} +input.span-17, textarea.span-17 {width:658px!important;} +input.span-18, textarea.span-18 {width:698px!important;} +input.span-19, textarea.span-19 {width:738px!important;} +input.span-20, textarea.span-20 {width:778px!important;} +input.span-21, textarea.span-21 {width:818px!important;} +input.span-22, textarea.span-22 {width:858px!important;} +input.span-23, textarea.span-23 {width:898px!important;} +input.span-24, textarea.span-24 {width:938px!important;} +.append-1 {padding-right:40px;} +.append-2 {padding-right:80px;} +.append-3 {padding-right:120px;} +.append-4 {padding-right:160px;} +.append-5 {padding-right:200px;} +.append-6 {padding-right:240px;} +.append-7 {padding-right:280px;} +.append-8 {padding-right:320px;} +.append-9 {padding-right:360px;} +.append-10 {padding-right:400px;} +.append-11 {padding-right:440px;} +.append-12 {padding-right:480px;} +.append-13 {padding-right:520px;} +.append-14 {padding-right:560px;} +.append-15 {padding-right:600px;} +.append-16 {padding-right:640px;} +.append-17 {padding-right:680px;} +.append-18 {padding-right:720px;} +.append-19 {padding-right:760px;} +.append-20 {padding-right:800px;} +.append-21 {padding-right:840px;} +.append-22 {padding-right:880px;} +.append-23 {padding-right:920px;} +.prepend-1 {padding-left:40px;} +.prepend-2 {padding-left:80px;} +.prepend-3 {padding-left:120px;} +.prepend-4 {padding-left:160px;} +.prepend-5 {padding-left:200px;} +.prepend-6 {padding-left:240px;} +.prepend-7 {padding-left:280px;} +.prepend-8 {padding-left:320px;} +.prepend-9 {padding-left:360px;} +.prepend-10 {padding-left:400px;} +.prepend-11 {padding-left:440px;} +.prepend-12 {padding-left:480px;} +.prepend-13 {padding-left:520px;} +.prepend-14 {padding-left:560px;} +.prepend-15 {padding-left:600px;} +.prepend-16 {padding-left:640px;} +.prepend-17 {padding-left:680px;} +.prepend-18 {padding-left:720px;} +.prepend-19 {padding-left:760px;} +.prepend-20 {padding-left:800px;} +.prepend-21 {padding-left:840px;} +.prepend-22 {padding-left:880px;} +.prepend-23 {padding-left:920px;} +div.border {padding-right:4px;margin-right:5px;border-right:1px solid #eee;} +div.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #eee;} +div.colborderTop {border-top:1px solid #eee;} +.pull-1 {margin-left:-40px;} +.pull-2 {margin-left:-80px;} +.pull-3 {margin-left:-120px;} +.pull-4 {margin-left:-160px;} +.pull-5 {margin-left:-200px;} +.pull-6 {margin-left:-240px;} +.pull-7 {margin-left:-280px;} +.pull-8 {margin-left:-320px;} +.pull-9 {margin-left:-360px;} +.pull-10 {margin-left:-400px;} +.pull-11 {margin-left:-440px;} +.pull-12 {margin-left:-480px;} +.pull-13 {margin-left:-520px;} +.pull-14 {margin-left:-560px;} +.pull-15 {margin-left:-600px;} +.pull-16 {margin-left:-640px;} +.pull-17 {margin-left:-680px;} +.pull-18 {margin-left:-720px;} +.pull-19 {margin-left:-760px;} +.pull-20 {margin-left:-800px;} +.pull-21 {margin-left:-840px;} +.pull-22 {margin-left:-880px;} +.pull-23 {margin-left:-920px;} +.pull-24 {margin-left:-960px;} +.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float:left;position:relative;} +.push-1 {margin:0 -40px 1.5em 40px;} +.push-2 {margin:0 -80px 1.5em 80px;} +.push-3 {margin:0 -120px 1.5em 120px;} +.push-4 {margin:0 -160px 1.5em 160px;} +.push-5 {margin:0 -200px 1.5em 200px;} +.push-6 {margin:0 -240px 1.5em 240px;} +.push-7 {margin:0 -280px 1.5em 280px;} +.push-8 {margin:0 -320px 1.5em 320px;} +.push-9 {margin:0 -360px 1.5em 360px;} +.push-10 {margin:0 -400px 1.5em 400px;} +.push-11 {margin:0 -440px 1.5em 440px;} +.push-12 {margin:0 -480px 1.5em 480px;} +.push-13 {margin:0 -520px 1.5em 520px;} +.push-14 {margin:0 -560px 1.5em 560px;} +.push-15 {margin:0 -600px 1.5em 600px;} +.push-16 {margin:0 -640px 1.5em 640px;} +.push-17 {margin:0 -680px 1.5em 680px;} +.push-18 {margin:0 -720px 1.5em 720px;} +.push-19 {margin:0 -760px 1.5em 760px;} +.push-20 {margin:0 -800px 1.5em 800px;} +.push-21 {margin:0 -840px 1.5em 840px;} +.push-22 {margin:0 -880px 1.5em 880px;} +.push-23 {margin:0 -920px 1.5em 920px;} +.push-24 {margin:0 -960px 1.5em 960px;} +.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float:right;position:relative;} +.prepend-top {margin-top:1.5em;} +.append-bottom {margin-bottom:1.5em;} +.box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;} +hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;} +hr.space {background:#fff;color:#fff;} +.clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;} +.clearfix, .container {display:block;} +.clear {clear:both;} \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/forms.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/forms.css new file mode 100644 index 0000000..afaa04a --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/forms.css @@ -0,0 +1,65 @@ +/* -------------------------------------------------------------- + + forms.css + * Sets up some default styling for forms + * Gives you classes to enhance your forms + + Usage: + * For text fields, use class .title or .text + * For inline forms, use .inline (even when using columns) + +-------------------------------------------------------------- */ + +label { font-weight: bold; } +fieldset { padding:1.4em; margin: 0 0 1.5em 0; border: 1px solid #ccc; } +legend { font-weight: bold; font-size:1.2em; } + + +/* Form fields +-------------------------------------------------------------- */ + +input[type=text], input[type=password], +input.text, input.title, +textarea, select { + background-color:#fff; + border:1px solid #bbb; +} +input[type=text]:focus, input[type=password]:focus, +input.text:focus, input.title:focus, +textarea:focus, select:focus { + border-color:#666; +} + +input[type=text], input[type=password], +input.text, input.title, +textarea, select { + margin:0.5em 0; +} + +input.text, +input.title { width: 300px; padding:5px; } +input.title { font-size:1.5em; } +textarea { width: 390px; height: 250px; padding:5px; } + +input[type=checkbox], input[type=radio], +input.checkbox, input.radio { + position:relative; top:.25em; +} + +form.inline { line-height:3; } +form.inline p { margin-bottom:0; } + + +/* Success, notice and error boxes +-------------------------------------------------------------- */ + +.error, +.notice, +.success { padding: .8em; margin-bottom: 1em; border: 2px solid #ddd; } + +.error { background: #FBE3E4; color: #8a1f11; border-color: #FBC2C4; } +.notice { background: #FFF6BF; color: #514721; border-color: #FFD324; } +.success { background: #E6EFC2; color: #264409; border-color: #C6D880; } +.error a { color: #8a1f11; } +.notice a { color: #514721; } +.success a { color: #264409; } diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/grid.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/grid.css new file mode 100644 index 0000000..2eea31e --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/grid.css @@ -0,0 +1,281 @@ +/* -------------------------------------------------------------- + + grid.css + * Sets up an easy-to-use grid of 24 columns. + + By default, the grid is 950px wide, with 24 columns + spanning 30px, and a 10px margin between columns. + + If you need fewer or more columns, namespaces or semantic + element names, use the compressor script (lib/compress.rb) + + Note: Changes made in this file will not be applied when + using the compressor: make changes in lib/blueprint/grid.css.rb + +-------------------------------------------------------------- */ + +/* A container should group all your columns. */ +.container { + width: 950px; + margin: 0 auto; +} + +/* Use this class on any div.span / container to see the grid. */ +.showgrid { + background: url(src/grid.png); +} + + +/* Columns +-------------------------------------------------------------- */ + +/* Sets up basic grid floating and margin. */ +.column, div.span-1, div.span-2, div.span-3, div.span-4, div.span-5, div.span-6, div.span-7, div.span-8, div.span-9, div.span-10, div.span-11, div.span-12, div.span-13, div.span-14, div.span-15, div.span-16, div.span-17, div.span-18, div.span-19, div.span-20, div.span-21, div.span-22, div.span-23, div.span-24 { + float: left; + margin-right: 10px; +} + +/* The last column in a row needs this class. */ +.last, div.last { margin-right: 0; } + +/* Use these classes to set the width of a column. */ +.span-1 {width: 30px;} + +.span-2 {width: 70px;} +.span-3 {width: 110px;} +.span-4 {width: 150px;} +.span-5 {width: 190px;} +.span-6 {width: 230px;} +.span-7 {width: 270px;} +.span-8 {width: 310px;} +.span-9 {width: 350px;} +.span-10 {width: 390px;} +.span-11 {width: 430px;} +.span-12 {width: 470px;} +.span-13 {width: 510px;} +.span-14 {width: 550px;} +.span-15 {width: 590px;} +.span-16 {width: 630px;} +.span-17 {width: 670px;} +.span-18 {width: 710px;} +.span-19 {width: 750px;} +.span-20 {width: 790px;} +.span-21 {width: 830px;} +.span-22 {width: 870px;} +.span-23 {width: 910px;} +.span-24, div.span-24 { width:950px; margin:0; } + +/* Use these classes to set the width of an input. */ +input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 { + border-left-width: 1px!important; + border-right-width: 1px!important; + padding-left: 5px!important; + padding-right: 5px!important; +} + +input.span-1, textarea.span-1 { width: 18px!important; } +input.span-2, textarea.span-2 { width: 58px!important; } +input.span-3, textarea.span-3 { width: 98px!important; } +input.span-4, textarea.span-4 { width: 138px!important; } +input.span-5, textarea.span-5 { width: 178px!important; } +input.span-6, textarea.span-6 { width: 218px!important; } +input.span-7, textarea.span-7 { width: 258px!important; } +input.span-8, textarea.span-8 { width: 298px!important; } +input.span-9, textarea.span-9 { width: 338px!important; } +input.span-10, textarea.span-10 { width: 378px!important; } +input.span-11, textarea.span-11 { width: 418px!important; } +input.span-12, textarea.span-12 { width: 458px!important; } +input.span-13, textarea.span-13 { width: 498px!important; } +input.span-14, textarea.span-14 { width: 538px!important; } +input.span-15, textarea.span-15 { width: 578px!important; } +input.span-16, textarea.span-16 { width: 618px!important; } +input.span-17, textarea.span-17 { width: 658px!important; } +input.span-18, textarea.span-18 { width: 698px!important; } +input.span-19, textarea.span-19 { width: 738px!important; } +input.span-20, textarea.span-20 { width: 778px!important; } +input.span-21, textarea.span-21 { width: 818px!important; } +input.span-22, textarea.span-22 { width: 858px!important; } +input.span-23, textarea.span-23 { width: 898px!important; } +input.span-24, textarea.span-24 { width: 938px!important; } + +/* Add these to a column to append empty cols. */ + +.append-1 { padding-right: 40px;} +.append-2 { padding-right: 80px;} +.append-3 { padding-right: 120px;} +.append-4 { padding-right: 160px;} +.append-5 { padding-right: 200px;} +.append-6 { padding-right: 240px;} +.append-7 { padding-right: 280px;} +.append-8 { padding-right: 320px;} +.append-9 { padding-right: 360px;} +.append-10 { padding-right: 400px;} +.append-11 { padding-right: 440px;} +.append-12 { padding-right: 480px;} +.append-13 { padding-right: 520px;} +.append-14 { padding-right: 560px;} +.append-15 { padding-right: 600px;} +.append-16 { padding-right: 640px;} +.append-17 { padding-right: 680px;} +.append-18 { padding-right: 720px;} +.append-19 { padding-right: 760px;} +.append-20 { padding-right: 800px;} +.append-21 { padding-right: 840px;} +.append-22 { padding-right: 880px;} +.append-23 { padding-right: 920px;} + +/* Add these to a column to prepend empty cols. */ + +.prepend-1 { padding-left: 40px;} +.prepend-2 { padding-left: 80px;} +.prepend-3 { padding-left: 120px;} +.prepend-4 { padding-left: 160px;} +.prepend-5 { padding-left: 200px;} +.prepend-6 { padding-left: 240px;} +.prepend-7 { padding-left: 280px;} +.prepend-8 { padding-left: 320px;} +.prepend-9 { padding-left: 360px;} +.prepend-10 { padding-left: 400px;} +.prepend-11 { padding-left: 440px;} +.prepend-12 { padding-left: 480px;} +.prepend-13 { padding-left: 520px;} +.prepend-14 { padding-left: 560px;} +.prepend-15 { padding-left: 600px;} +.prepend-16 { padding-left: 640px;} +.prepend-17 { padding-left: 680px;} +.prepend-18 { padding-left: 720px;} +.prepend-19 { padding-left: 760px;} +.prepend-20 { padding-left: 800px;} +.prepend-21 { padding-left: 840px;} +.prepend-22 { padding-left: 880px;} +.prepend-23 { padding-left: 920px;} + + +/* Border on right hand side of a column. */ +div.border { + padding-right: 4px; + margin-right: 5px; + border-right: 1px solid #eee; +} + +/* Border with more whitespace, spans one column. */ +div.colborder { + padding-right: 24px; + margin-right: 25px; + border-right: 1px solid #eee; +} + + +/* Use these classes on an element to push it into the +next column, or to pull it into the previous column. */ + + +.pull-1 { margin-left: -40px; } +.pull-2 { margin-left: -80px; } +.pull-3 { margin-left: -120px; } +.pull-4 { margin-left: -160px; } +.pull-5 { margin-left: -200px; } +.pull-6 { margin-left: -240px; } +.pull-7 { margin-left: -280px; } +.pull-8 { margin-left: -320px; } +.pull-9 { margin-left: -360px; } +.pull-10 { margin-left: -400px; } +.pull-11 { margin-left: -440px; } +.pull-12 { margin-left: -480px; } +.pull-13 { margin-left: -520px; } +.pull-14 { margin-left: -560px; } +.pull-15 { margin-left: -600px; } +.pull-16 { margin-left: -640px; } +.pull-17 { margin-left: -680px; } +.pull-18 { margin-left: -720px; } +.pull-19 { margin-left: -760px; } +.pull-20 { margin-left: -800px; } +.pull-21 { margin-left: -840px; } +.pull-22 { margin-left: -880px; } +.pull-23 { margin-left: -920px; } +.pull-24 { margin-left: -960px; } + +.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float: left; position:relative;} + + +.push-1 { margin: 0 -40px 1.5em 40px; } +.push-2 { margin: 0 -80px 1.5em 80px; } +.push-3 { margin: 0 -120px 1.5em 120px; } +.push-4 { margin: 0 -160px 1.5em 160px; } +.push-5 { margin: 0 -200px 1.5em 200px; } +.push-6 { margin: 0 -240px 1.5em 240px; } +.push-7 { margin: 0 -280px 1.5em 280px; } +.push-8 { margin: 0 -320px 1.5em 320px; } +.push-9 { margin: 0 -360px 1.5em 360px; } +.push-10 { margin: 0 -400px 1.5em 400px; } +.push-11 { margin: 0 -440px 1.5em 440px; } +.push-12 { margin: 0 -480px 1.5em 480px; } +.push-13 { margin: 0 -520px 1.5em 520px; } +.push-14 { margin: 0 -560px 1.5em 560px; } +.push-15 { margin: 0 -600px 1.5em 600px; } +.push-16 { margin: 0 -640px 1.5em 640px; } +.push-17 { margin: 0 -680px 1.5em 680px; } +.push-18 { margin: 0 -720px 1.5em 720px; } +.push-19 { margin: 0 -760px 1.5em 760px; } +.push-20 { margin: 0 -800px 1.5em 800px; } +.push-21 { margin: 0 -840px 1.5em 840px; } +.push-22 { margin: 0 -880px 1.5em 880px; } +.push-23 { margin: 0 -920px 1.5em 920px; } +.push-24 { margin: 0 -960px 1.5em 960px; } + +.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float: right; position:relative;} + + +/* Misc classes and elements +-------------------------------------------------------------- */ + +/* In case you need to add a gutter above/below an element */ +.prepend-top { + margin-top:1.5em; +} +.append-bottom { + margin-bottom:1.5em; +} + +/* Use a .box to create a padded box inside a column. */ +.box { + padding: 1.5em; + margin-bottom: 1.5em; + background: #E5ECF9; +} + +/* Use this to create a horizontal ruler across a column. */ +hr { + background: #ddd; + color: #ddd; + clear: both; + float: none; + width: 100%; + height: .1em; + margin: 0 0 1.45em; + border: none; +} +hr.space { + background: #fff; + color: #fff; +} + + +/* Clearing floats without extra markup + Based on How To Clear Floats Without Structural Markup by PiE + [http://www.positioniseverything.net/easyclearing.html] */ + +.clearfix:after, .container:after { + content: "\0020"; + display: block; + height: 0; + clear: both; + visibility: hidden; + overflow:hidden; +} +.clearfix, .container {display: block;} + +/* Regular clearing + apply to column that should drop below previous ones. */ + +.clear { clear:both; } diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/grid.png b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/grid.png new file mode 100644 index 0000000..b7539f6 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/grid.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/ie.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/ie.css new file mode 100644 index 0000000..f32321e --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/ie.css @@ -0,0 +1,76 @@ +/* -------------------------------------------------------------- + + ie.css + + Contains every hack for Internet Explorer, + so that our core files stay sweet and nimble. + +-------------------------------------------------------------- */ + +/* Make sure the layout is centered in IE5 */ +body { text-align: center; } +.container { text-align: left; } + +/* Fixes IE margin bugs */ +* html .column, * html div.span-1, * html div.span-2, +* html div.span-3, * html div.span-4, * html div.span-5, +* html div.span-6, * html div.span-7, * html div.span-8, +* html div.span-9, * html div.span-10, * html div.span-11, +* html div.span-12, * html div.span-13, * html div.span-14, +* html div.span-15, * html div.span-16, * html div.span-17, +* html div.span-18, * html div.span-19, * html div.span-20, +* html div.span-21, * html div.span-22, * html div.span-23, +* html div.span-24 { overflow-x: hidden; } + + +/* Elements +-------------------------------------------------------------- */ + +/* Fixes incorrect styling of legend in IE6. */ +* html legend { margin:0px -8px 16px 0; padding:0; } + +/* Fixes incorrect placement of ol numbers in IE6/7. */ +ol { margin-left:2em; } + +/* Fixes wrong line-height on sup/sub in IE. */ +sup { vertical-align: text-top; } +sub { vertical-align: text-bottom; } + +/* Fixes IE7 missing wrapping of code elements. */ +html>body p code { *white-space: normal; } + +/* IE 6&7 has problems with setting proper
              margins. */ +hr { margin: -8px auto 11px; } + +/* Explicitly set interpolation, allowing dynamically resized images to not look horrible */ +img { -ms-interpolation-mode: bicubic; } + +/* Clearing +-------------------------------------------------------------- */ + +/* Makes clearfix actually work in IE */ +.clearfix, .container {display: inline-block;} +* html .clearfix, +* html .container {height: 1%;} + + +/* Forms +-------------------------------------------------------------- */ + +/* Fixes padding on fieldset */ +fieldset {padding-top: 0;} + +/* Fixes rule that IE 6 ignores */ +input.text, input.title {background-color:#fff;border:1px solid #bbb;} +input.text:focus, input.title:focus {border-color:#666;} +input.text, input.title, textarea, select {margin:0.5em 0;} +input.checkbox, input.radio {position:relative; top:.25em;} + +/* Fixes alignment of inline form elements */ +form.inline div, form.inline p {vertical-align:middle;} +form.inline label {position:relative;top:-0.25em;} +form.inline input.checkbox, form.inline input.radio, +form.inline input.button, form.inline button { + margin:0.5em 0; +} +button, input.button {position:relative;top:0.25em;} \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/print.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/print.css new file mode 100644 index 0000000..95acbc2 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/print.css @@ -0,0 +1,85 @@ +/* -------------------------------------------------------------- + + print.css + * Gives you some sensible styles for printing pages. + * See Readme file in this directory for further instructions. + + Some additions you'll want to make, customized to your markup: + #header, #footer, #navigation { display:none; } + +-------------------------------------------------------------- */ + +body { + line-height: 1.5; + font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; + color:#000; + background: none; + font-size: 10pt; +} + + +/* Layout +-------------------------------------------------------------- */ + +.container { + background: none; +} + +hr { + background:#ccc; + color:#ccc; + width:100%; + height:2px; + margin:2em 0; + padding:0; + border:none; +} +hr.space { + background: #fff; + color: #fff; +} + + +/* Text +-------------------------------------------------------------- */ + +h1,h2,h3,h4,h5,h6 { font-family: "Helvetica Neue", Arial, "Lucida Grande", sans-serif; } +code { font:.9em "Courier New", Monaco, Courier, monospace; } + +img { float:left; margin:1.5em 1.5em 1.5em 0; } +a img { border:none; } +p img.top { margin-top: 0; } + +blockquote { + margin:1.5em; + padding:1em; + font-style:italic; + font-size:.9em; +} + +.small { font-size: .9em; } +.large { font-size: 1.1em; } +.quiet { color: #999; } +.hide { display:none; } + + +/* Links +-------------------------------------------------------------- */ + +a:link, a:visited { + background: transparent; + font-weight:700; + text-decoration: underline; +} + +a:link:after, a:visited:after { + content: " (" attr(href) ")"; + font-size: 90%; +} + +/* If you're having trouble printing relative links, uncomment and customize this: + (note: This is valid CSS3, but it still won't go through the W3C CSS Validator) */ + +/* a[href^="/"]:after { + content: " (http://www.yourdomain.com" attr(href) ") "; +} */ diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/reset.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/reset.css new file mode 100644 index 0000000..fc0788c --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/reset.css @@ -0,0 +1,38 @@ +/* -------------------------------------------------------------- + + reset.css + * Resets default browser CSS. + +-------------------------------------------------------------- */ + +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, code, +del, dfn, em, img, q, dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + font-weight: inherit; + font-style: inherit; + font-size: 100%; + font-family: inherit; + vertical-align: baseline; +} + +body { + line-height: 1.5; +} + +/* Tables still need 'cellspacing="0"' in the markup. */ +table { border-collapse: separate; border-spacing: 0; } +caption, th, td { text-align: left; font-weight: normal; } +table, td, th { vertical-align: middle; } + +/* Remove possible quote marks (") from ,
              . */ +blockquote:before, blockquote:after, q:before, q:after { content: ""; } +blockquote, q { quotes: "" ""; } + +/* Remove annoying border on linked images. */ +a img { border: none; } diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/typography.css b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/typography.css new file mode 100644 index 0000000..798c721 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/blueprint-css/src/typography.css @@ -0,0 +1,105 @@ +/* -------------------------------------------------------------- + + typography.css + * Sets up some sensible default typography. + +-------------------------------------------------------------- */ + +/* Default font settings. + The font-size percentage is of 16px. (0.75 * 16px = 12px) */ +body { + font-size: 75%; + color: #222; + background: #fff; + font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; +} + + +/* Headings +-------------------------------------------------------------- */ + +h1,h2,h3,h4,h5,h6 { font-weight: normal; color: #111; } + +h1 { font-size: 3em; line-height: 1; margin-bottom: 0.5em; } +h2 { font-size: 2em; margin-bottom: 0.75em; } +h3 { font-size: 1.5em; line-height: 1; margin-bottom: 1em; } +h4 { font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; } +h5 { font-size: 1em; font-weight: bold; margin-bottom: 1.5em; } +h6 { font-size: 1em; font-weight: bold; } + +h1 img, h2 img, h3 img, +h4 img, h5 img, h6 img { + margin: 0; +} + + +/* Text elements +-------------------------------------------------------------- */ + +p { margin: 0 0 1.5em; } +p img.left { float: left; margin: 1.5em 1.5em 1.5em 0; padding: 0; } +p img.right { float: right; margin: 1.5em 0 1.5em 1.5em; } + +a:focus, +a:hover { color: #000; } +a { color: #009; text-decoration: underline; } + +blockquote { margin: 1.5em; color: #666; font-style: italic; } +strong { font-weight: bold; } +em,dfn { font-style: italic; } +dfn { font-weight: bold; } +sup, sub { line-height: 0; } + +abbr, +acronym { border-bottom: 1px dotted #666; } +address { margin: 0 0 1.5em; font-style: italic; } +del { color:#666; } + +pre { margin: 1.5em 0; white-space: pre; } +pre,code,tt { font: 1em 'andale mono', 'lucida console', monospace; line-height: 1.5; } + + +/* Lists +-------------------------------------------------------------- */ + +li ul, +li ol { margin:0 1.5em; } +ul, ol { margin: 0 1.5em 1.5em 1.5em; } + +ul { list-style-type: disc; } +ol { list-style-type: decimal; } + +dl { margin: 0 0 1.5em 0; } +dl dt { font-weight: bold; } +dd { margin-left: 1.5em;} + + +/* Tables +-------------------------------------------------------------- */ + +table { margin-bottom: 1.4em; width:100%; } +th { font-weight: bold; } +thead th { background: #c3d9ff; } +th,td,caption { padding: 4px 10px 4px 5px; } +tr.even td { background: #e5ecf9; } +tfoot { font-style: italic; } +caption { background: #eee; } + + +/* Misc classes +-------------------------------------------------------------- */ + +.small { font-size: .8em; margin-bottom: 1.875em; line-height: 1.875em; } +.large { font-size: 1.2em; line-height: 2.5em; margin-bottom: 1.25em; } +.hide { display: none; } + +.quiet { color: #666; } +.loud { color: #000; } +.highlight { background:#ff0; } +.added { background:#060; color: #fff; } +.removed { background:#900; color: #fff; } + +.first { margin-left:0; padding-left:0; } +.last { margin-right:0; padding-right:0; } +.top { margin-top:0; padding-top:0; } +.bottom { margin-bottom:0; padding-bottom:0; } diff --git a/wp-content/plugins/premium-featured-posts-slider/documentation/assets/js/jquery-1.4.1.min.js b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/js/jquery-1.4.1.min.js new file mode 100644 index 0000000..0c7294c --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/documentation/assets/js/jquery-1.4.1.min.js @@ -0,0 +1,152 @@ +/*! + * jQuery JavaScript Library v1.4.1 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Jan 25 19:43:33 2010 -0500 + */ +(function(z,v){function la(){if(!c.isReady){try{r.documentElement.doScroll("left")}catch(a){setTimeout(la,1);return}c.ready()}}function Ma(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,i){var j=a.length;if(typeof b==="object"){for(var n in b)X(a,n,b[n],f,e,d);return a}if(d!==v){f=!i&&f&&c.isFunction(d);for(n=0;n-1){i=j.data;i.beforeFilter&&i.beforeFilter[a.type]&&!i.beforeFilter[a.type](a)||f.push(j.selector)}else delete x[o]}i=c(a.target).closest(f, +a.currentTarget);m=0;for(s=i.length;m)[^>]*$|^#([\w-]+)$/,Qa=/^.[^:#\[\.,]*$/,Ra=/\S/,Sa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Ta=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,O=navigator.userAgent, +va=false,P=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,Q=Array.prototype.slice,wa=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(typeof a==="string")if((d=Pa.exec(a))&&(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:r;if(a=Ta.exec(a))if(c.isPlainObject(b)){a=[r.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=ra([d[1]], +[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}}else{if(b=r.getElementById(d[2])){if(b.id!==d[2])return S.find(a);this.length=1;this[0]=b}this.context=r;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=r;a=r.getElementsByTagName(a)}else return!b||b.jquery?(b||S).find(a):c(b).find(a);else if(c.isFunction(a))return S.ready(a);if(a.selector!==v){this.selector=a.selector;this.context=a.context}return c.isArray(a)?this.setArray(a):c.makeArray(a, +this)},selector:"",jquery:"1.4.1",length:0,size:function(){return this.length},toArray:function(){return Q.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){a=c(a||null);a.prevObject=this;a.context=this.context;if(b==="find")a.selector=this.selector+(this.selector?" ":"")+d;else if(b)a.selector=this.selector+"."+b+"("+d+")";return a},setArray:function(a){this.length=0;ba.apply(this,a);return this},each:function(a,b){return c.each(this, +a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(r,c);else P&&P.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(Q.apply(this,arguments),"slice",Q.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice}; +c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,i,j,n;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
              a";var e=d.getElementsByTagName("*"),i=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!i)){c.support= +{leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(i.getAttribute("style")),hrefNormalized:i.getAttribute("href")==="/a",opacity:/^0.55$/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:r.createElement("select").appendChild(r.createElement("option")).selected,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null}; +b.type="text/javascript";try{b.appendChild(r.createTextNode("window."+f+"=1;"))}catch(j){}a.insertBefore(b,a.firstChild);if(z[f]){c.support.scriptEval=true;delete z[f]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function n(){c.support.noCloneEvent=false;d.detachEvent("onclick",n)});d.cloneNode(true).fireEvent("onclick")}d=r.createElement("div");d.innerHTML="";a=r.createDocumentFragment();a.appendChild(d.firstChild); +c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var n=r.createElement("div");n.style.width=n.style.paddingLeft="1px";r.body.appendChild(n);c.boxModel=c.support.boxModel=n.offsetWidth===2;r.body.removeChild(n).style.display="none"});a=function(n){var o=r.createElement("div");n="on"+n;var m=n in o;if(!m){o.setAttribute(n,"return;");m=typeof o[n]==="function"}return m};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=i=null}})();c.props= +{"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ua=0,xa={},Va={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var f=a[G],e=c.cache;if(!b&&!f)return null;f||(f=++Ua);if(typeof b==="object"){a[G]=f;e=e[f]=c.extend(true, +{},b)}else e=e[f]?e[f]:typeof d==="undefined"?Va:(e[f]={});if(d!==v){a[G]=f;e[b]=d}return typeof b==="string"?e[b]:e}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{try{delete a[G]}catch(i){a.removeAttribute&&a.removeAttribute(G)}delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this, +a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===v){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===v&&this.length)f=c.data(this[0],a);return f===v&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d); +return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===v)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]|| +a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var ya=/[\n\t]/g,ca=/\s+/,Wa=/\r/g,Xa=/href|src|style/,Ya=/(button|input)/i,Za=/(button|input|object|select|textarea)/i,$a=/^(a|area)$/i,za=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(o){var m= +c(this);m.addClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===v){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value|| +{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var i=b?d:0;for(d=b?d+1:e.length;i=0;else if(c.nodeName(this,"select")){var x=c.makeArray(s);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),x)>=0});if(!x.length)this.selectedIndex=-1}else this.value=s}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return v;if(f&&b in c.attrFn)return c(a)[b](d); +f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==v;b=f&&c.props[b]||b;if(a.nodeType===1){var i=Xa.test(b);if(b in a&&f&&!i){if(e){b==="type"&&Ya.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Za.test(a.nodeName)||$a.test(a.nodeName)&&a.href?0:v;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText= +""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&i?a.getAttribute(b,2):a.getAttribute(b);return a===null?v:a}return c.style(a,b,d)}});var ab=function(a){return a.replace(/[^\w\s\.\|`]/g,function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==z&&!a.frameElement)a=z;if(!d.guid)d.guid=c.guid++;if(f!==v){d=c.proxy(d);d.data=f}var e=c.data(a,"events")||c.data(a,"events",{}),i=c.data(a,"handle"),j;if(!i){j= +function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(j.elem,arguments):v};i=c.data(a,"handle",j)}if(i){i.elem=a;b=b.split(/\s+/);for(var n,o=0;n=b[o++];){var m=n.split(".");n=m.shift();if(o>1){d=c.proxy(d);if(f!==v)d.data=f}d.type=m.slice(0).sort().join(".");var s=e[n],x=this.special[n]||{};if(!s){s=e[n]={};if(!x.setup||x.setup.call(a,f,m,d)===false)if(a.addEventListener)a.addEventListener(n,i,false);else a.attachEvent&&a.attachEvent("on"+n,i)}if(x.add)if((m=x.add.call(a, +d,f,m,s))&&c.isFunction(m)){m.guid=m.guid||d.guid;m.data=m.data||d.data;m.type=m.type||d.type;d=m}s[d.guid]=d;this.global[n]=true}a=null}}},global:{},remove:function(a,b,d){if(!(a.nodeType===3||a.nodeType===8)){var f=c.data(a,"events"),e,i,j;if(f){if(b===v||typeof b==="string"&&b.charAt(0)===".")for(i in f)this.remove(a,i+(b||""));else{if(b.type){d=b.handler;b=b.type}b=b.split(/\s+/);for(var n=0;i=b[n++];){var o=i.split(".");i=o.shift();var m=!o.length,s=c.map(o.slice(0).sort(),ab);s=new RegExp("(^|\\.)"+ +s.join("\\.(?:.*\\.)?")+"(\\.|$)");var x=this.special[i]||{};if(f[i]){if(d){j=f[i][d.guid];delete f[i][d.guid]}else for(var A in f[i])if(m||s.test(f[i][A].type))delete f[i][A];x.remove&&x.remove.call(a,o,j);for(e in f[i])break;if(!e){if(!x.teardown||x.teardown.call(a,o)===false)if(a.removeEventListener)a.removeEventListener(i,c.data(a,"handle"),false);else a.detachEvent&&a.detachEvent("on"+i,c.data(a,"handle"));e=null;delete f[i]}}}}for(e in f)break;if(!e){if(A=c.data(a,"handle"))A.elem=null;c.removeData(a, +"events");c.removeData(a,"handle")}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();this.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return v;a.result=v;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d, +b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(i){}if(!a.isPropagationStopped()&&f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){d=a.target;var j;if(!(c.nodeName(d,"a")&&e==="click")&&!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()])){try{if(d[e]){if(j=d["on"+e])d["on"+e]=null;this.triggered=true;d[e]()}}catch(n){}if(j)d["on"+e]=j;this.triggered=false}}},handle:function(a){var b, +d;a=arguments[0]=c.event.fix(a||z.event);a.currentTarget=this;d=a.type.split(".");a.type=d.shift();b=!d.length&&!a.exclusive;var f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)");d=(c.data(this,"events")||{})[a.type];for(var e in d){var i=d[e];if(b||f.test(i.type)){a.handler=i;a.data=i.data;i=i.apply(this,arguments);if(i!==v){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), +fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||r;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=r.documentElement;d=r.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| +d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==v)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a,b){c.extend(a,b||{});a.guid+=b.selector+b.live;b.liveProxy=a;c.event.add(this,b.live,na,b)},remove:function(a){if(a.length){var b= +0,d=new RegExp("(^|\\.)"+a[0]+"(\\.|$)");c.each(c.data(this,"events").live||{},function(){d.test(this.type)&&b++});b<1&&c.event.remove(this,a[0],na)}},special:{}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true}; +c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y};var Aa=function(a){for(var b= +a.relatedTarget;b&&b!==this;)try{b=b.parentNode}catch(d){break}if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}},Ba=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ba:Aa,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ba:Aa)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(a,b,d){if(this.nodeName.toLowerCase()!== +"form"){c.event.add(this,"click.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="submit"||i==="image")&&c(e).closest("form").length)return ma("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="text"||i==="password")&&c(e).closest("form").length&&f.keyCode===13)return ma("submit",this,arguments)})}else return false},remove:function(a,b){c.event.remove(this,"click.specialSubmit"+(b?"."+b.guid:""));c.event.remove(this, +"keypress.specialSubmit"+(b?"."+b.guid:""))}};if(!c.support.changeBubbles){var da=/textarea|input|select/i;function Ca(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d}function ea(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Ca(d);if(a.type!=="focusout"|| +d.type!=="radio")c.data(d,"_change_data",e);if(!(f===v||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}}c.event.special.change={filters:{focusout:ea,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return ea.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return ea.call(this,a)},beforeactivate:function(a){a= +a.target;a.nodeName.toLowerCase()==="input"&&a.type==="radio"&&c.data(a,"_change_data",Ca(a))}},setup:function(a,b,d){for(var f in T)c.event.add(this,f+".specialChange."+d.guid,T[f]);return da.test(this.nodeName)},remove:function(a,b){for(var d in T)c.event.remove(this,d+".specialChange"+(b?"."+b.guid:""),T[d]);return da.test(this.nodeName)}};var T=c.event.special.change.filters}r.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this, +f)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var i in d)this[b](i,f,d[i],e);return this}if(c.isFunction(f)){e=f;f=v}var j=b==="one"?c.proxy(e,function(n){c(this).unbind(n,j);return e.apply(this,arguments)}):e;return d==="unload"&&b!=="one"?this.one(d,f,e):this.each(function(){c.event.add(this,d,j,f)})}});c.fn.extend({unbind:function(a, +b){if(typeof a==="object"&&!a.preventDefault){for(var d in a)this.unbind(d,a[d]);return this}return this.each(function(){c.event.remove(this,a,b)})},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},toggle:function(a){for(var b=arguments,d=1;d0){y=t;break}}t=t[g]}l[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,i=Object.prototype.toString,j=false,n=true;[0,0].sort(function(){n=false;return 0});var o=function(g,h,k,l){k=k||[];var q=h=h||r;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g|| +typeof g!=="string")return k;for(var p=[],u,t,y,R,H=true,M=w(h),I=g;(f.exec(""),u=f.exec(I))!==null;){I=u[3];p.push(u[1]);if(u[2]){R=u[3];break}}if(p.length>1&&s.exec(g))if(p.length===2&&m.relative[p[0]])t=fa(p[0]+p[1],h);else for(t=m.relative[p[0]]?[h]:o(p.shift(),h);p.length;){g=p.shift();if(m.relative[g])g+=p.shift();t=fa(g,t)}else{if(!l&&p.length>1&&h.nodeType===9&&!M&&m.match.ID.test(p[0])&&!m.match.ID.test(p[p.length-1])){u=o.find(p.shift(),h,M);h=u.expr?o.filter(u.expr,u.set)[0]:u.set[0]}if(h){u= +l?{expr:p.pop(),set:A(l)}:o.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=u.expr?o.filter(u.expr,u.set):u.set;if(p.length>0)y=A(t);else H=false;for(;p.length;){var D=p.pop();u=D;if(m.relative[D])u=p.pop();else D="";if(u==null)u=h;m.relative[D](y,u,M)}}else y=[]}y||(y=t);y||o.error(D||g);if(i.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))k.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&& +y[g].nodeType===1&&k.push(t[g]);else k.push.apply(k,y);else A(y,k);if(R){o(R,q,k,l);o.uniqueSort(k)}return k};o.uniqueSort=function(g){if(C){j=n;g.sort(C);if(j)for(var h=1;h":function(g,h){var k=typeof h==="string";if(k&&!/\W/.test(h)){h=h.toLowerCase();for(var l=0,q=g.length;l=0))k||l.push(u);else if(k)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&& +"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,k,l,q,p){h=g[1].replace(/\\/g,"");if(!p&&m.attrMap[h])g[1]=m.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,k,l,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=o(g[3],null,null,h);else{g=o.filter(g[3],h,k,true^q);k||l.push.apply(l,g);return false}else if(m.match.POS.test(g[0])||m.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true); +return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,k){return!!o(k[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"=== +g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,h){return h===0},last:function(g,h,k,l){return h===l.length-1},even:function(g,h){return h%2=== +0},odd:function(g,h){return h%2===1},lt:function(g,h,k){return hk[3]-0},nth:function(g,h,k){return k[3]-0===h},eq:function(g,h,k){return k[3]-0===h}},filter:{PSEUDO:function(g,h,k,l){var q=h[1],p=m.filters[q];if(p)return p(g,k,h,l);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=h[3];k=0;for(l=h.length;k= +0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var k=h[1];g=m.attrHandle[k]?m.attrHandle[k](g):g[k]!=null?g[k]:g.getAttribute(k);k=g+"";var l=h[2];h=h[4];return g==null?l==="!=":l==="="?k===h:l==="*="?k.indexOf(h)>=0:l==="~="?(" "+k+" ").indexOf(h)>=0:!h?k&&g!==false:l==="!="?k!==h:l==="^="? +k.indexOf(h)===0:l==="$="?k.substr(k.length-h.length)===h:l==="|="?k===h||k.substr(0,h.length+1)===h+"-":false},POS:function(g,h,k,l){var q=m.setFilters[h[2]];if(q)return q(g,k,h,l)}}},s=m.match.POS;for(var x in m.match){m.match[x]=new RegExp(m.match[x].source+/(?![^\[]*\])(?![^\(]*\))/.source);m.leftMatch[x]=new RegExp(/(^(?:.|\r|\n)*?)/.source+m.match[x].source.replace(/\\(\d+)/g,function(g,h){return"\\"+(h-0+1)}))}var A=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g}; +try{Array.prototype.slice.call(r.documentElement.childNodes,0)}catch(B){A=function(g,h){h=h||[];if(i.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var k=0,l=g.length;k";var k=r.documentElement;k.insertBefore(g,k.firstChild);if(r.getElementById(h)){m.find.ID=function(l,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(l[1]))?q.id===l[1]||typeof q.getAttributeNode!=="undefined"&&q.getAttributeNode("id").nodeValue===l[1]?[q]:v:[]};m.filter.ID=function(l,q){var p=typeof l.getAttributeNode!=="undefined"&&l.getAttributeNode("id"); +return l.nodeType===1&&p&&p.nodeValue===q}}k.removeChild(g);k=g=null})();(function(){var g=r.createElement("div");g.appendChild(r.createComment(""));if(g.getElementsByTagName("*").length>0)m.find.TAG=function(h,k){k=k.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var l=0;k[l];l++)k[l].nodeType===1&&h.push(k[l]);k=h}return k};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")m.attrHandle.href=function(h){return h.getAttribute("href", +2)};g=null})();r.querySelectorAll&&function(){var g=o,h=r.createElement("div");h.innerHTML="

              ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){o=function(l,q,p,u){q=q||r;if(!u&&q.nodeType===9&&!w(q))try{return A(q.querySelectorAll(l),p)}catch(t){}return g(l,q,p,u)};for(var k in g)o[k]=g[k];h=null}}();(function(){var g=r.createElement("div");g.innerHTML="
              ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length=== +0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){m.order.splice(1,0,"CLASS");m.find.CLASS=function(h,k,l){if(typeof k.getElementsByClassName!=="undefined"&&!l)return k.getElementsByClassName(h[1])};g=null}}})();var E=r.compareDocumentPosition?function(g,h){return g.compareDocumentPosition(h)&16}:function(g,h){return g!==h&&(g.contains?g.contains(h):true)},w=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},fa=function(g,h){var k=[], +l="",q;for(h=h.nodeType?[h]:h;q=m.match.PSEUDO.exec(g);){l+=q[0];g=g.replace(m.match.PSEUDO,"")}g=m.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var i=d;i0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,i={},j;if(f&&a.length){e=0;for(var n=a.length;e +-1:c(f).is(e)){d.push({selector:j,elem:f});delete i[j]}}f=f.parentNode}}return d}var o=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(m,s){for(;s&&s.ownerDocument&&s!==b;){if(o?o.index(s)>-1:c(s).is(a))return s;s=s.parentNode}return null})},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(), +a);return this.pushStack(pa(a[0])||pa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")}, +nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);bb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e): +e;if((this.length>1||db.test(f))&&cb.test(a))e=e.reverse();return this.pushStack(e,a,Q.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===v||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!== +b&&d.push(a);return d}});var Fa=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ga=/(<([\w:]+)[^>]*?)\/>/g,eb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,Ha=/<([\w:]+)/,fb=/"},F={option:[1,""],legend:[1,"
              ","
              "],thead:[1,"","
              "],tr:[2,"","
              "],td:[3,"","
              "], +col:[2,"","
              "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
              ","
              "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==v)return this.empty().append((this[0]&&this[0].ownerDocument||r).createTextNode(a));return c.getText(this)}, +wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length? +d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments, +false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&& +!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Fa,"").replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){qa(this,b);qa(this.find("*"),b.find("*"))}return b},html:function(a){if(a===v)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Fa,""):null;else if(typeof a==="string"&&!/ + + {$tmp['label']} \n"; + } else { + $out .= "\n"; + } + } + + if($output) { + echo $out; + } else { + return $out; + } + } // create_select_options + + // sanitize settings on save + function sanitize_settings($values) { + foreach ($values as $key => $value) { + switch ($key) { + case 'limit': + case 'prev-next': + case 'pagination': + case 'autoplay': + case 'effect-speed': + case 'hover-pause': + case 'randomize': + case 'include-css': + case 'include-jquery': + case 'include-slides': + case 'additional-width': + case 'additional-height': + case 'thumbnail-width': + case 'thumbnail-height': + case 'additional-crop': + $values[$key] = (int) $value; + break; + case 'width': + case 'source': + case 'thumbnail': + case 'layout': + case 'effect': + case 'conditional': + $values[$key] = trim($value); + break; + case 'shortcode': + $values[$key] = strtolower(trim($value)); + $values[$key] = str_replace(' ', '', $values[$key]); + break; + case 'custom-layout': + break; + } // switch + } // foreach + + self::check_var_isset($values, array('prev-next' => 0, + 'pagination' => 0, + 'hover-pause' => 0, + 'randomize' => 0, + 'include-css' => 0, + 'include-jquery' => 0, + 'include-slides' => 0, + 'additional-crop' => 0)); + + set_transient('wf-fps-updated', true, 10); + + return $values; + } // sanitize_settings + + // helper function for $_POST checkbox handling + function check_var_isset(&$values, $variables) { + foreach ($variables as $key => $value) { + if (!isset($values[$key])) { + $values[$key] = $value; + } + } + } // check_var_isset + + // output the whole options page + function options_page() { + if (!current_user_can('manage_options')) { + wp_die('You do not have sufficient permissions to access this page.'); + } + + $options = get_option('wf_fps'); + + if (get_transient('wf-fps-updated')) { + echo '

              Changes saved.

              '; + delete_transient('wf-fps-updated'); + } + + echo '
              +

              +

              Premium Featured Posts Slider

              '; + + echo '
              '; + settings_fields('wf_fps'); + + echo '

              Content & Layout

              '; + + echo ''; + + echo ' + + + '; + + $sources[] = array('val' => '_featured', 'label' => 'Posts, pages and custom types selected as featured'); + $sources[] = array('val' => 'post', 'label' => 'Latest Posts'); + $sources[] = array('val' => 'page', 'label' => 'Latest Pages'); + $post_types = get_post_types(array('public' => true, '_builtin' => false), 'object', 'and'); + if ($post_types) { + foreach ($post_types as $post_type ) { + $sources[] = array('val' => $post_type->query_var, 'label' => 'Latest ' . $post_type->labels->name); + } + } + + $excluded_items = array('nav_menu', 'link_category', 'post_format'); + $taxonomies = get_taxonomies(array('public' => true), 'objects'); + if ($taxonomies) { + foreach ($taxonomies as $taxonomy) { + if (!in_array($taxonomy->name, $excluded_items)) { + $terms = get_terms($taxonomy->name); + if ($terms) { + foreach ($terms as $term) { + $sources[] = array('val' => '|' . $taxonomy->name . '|' . $term->term_id, 'label' => 'Latest content from ' . $term->name . ' (' . $taxonomy->labels->name . ')'); + } // foreach ($terms) + } // if ($terms) + } // if (!in_array) + } // foreach ($taxonomies) + } // if ($taxonomies) + + echo ' + + + '; + + $limit[] = array('val' => -1, 'label' => 'Unlimited'); + for ($i=1; $i <= 20; $i++) { + $limit[] = array('val' => $i, 'label' => $i); + } + echo ' + + '; + + global $_wp_additional_image_sizes; + $sizes[] = array('val'=> 'thumbnail', 'label' => 'Thumbnail, ' . get_option('thumbnail_size_w') . 'x' . get_option('thumbnail_size_h') . (get_option('thumbnail_crop')? ', cropped':'')); + $sizes[] = array('val'=> 'medium', 'label' => 'Medium, ' . get_option('medium_size_w') . 'x' . get_option('medium_size_h')); + $sizes[] = array('val'=> 'large', 'label' => 'Large, ' . get_option('large_size_w') . 'x' . get_option('large_size_h')); + if ($_wp_additional_image_sizes) { + foreach ($_wp_additional_image_sizes as $tmp => $tmp2) { + $sizes[] = array('val'=> $tmp, 'label' => $tmp . ', ' . $tmp2['width'] . 'x' . $tmp2['height'] . ($tmp2['crop']? ', cropped':'')); + } + } + + echo ' + + '; + + $img = plugins_url('/images/', __FILE__); + $layouts[] = array('val' => 'layout-1', 'label' => 'Layout 1 - Large image with title on image bottom'); + $layouts[] = array('val' => 'layout-2', 'label' => 'Layout 2 - Thumbnail with content on right'); + $layouts[] = array('val' => 'layout-3', 'label' => 'Layout 3 - Medium image with content on right'); + $layouts[] = array('val' => 'layout-4', 'label' => 'Layout 4 - Large image with title above image '); + $layouts[] = array('val' => 'layout-5', 'label' => 'Layout 5 - Thumbnail with content on left'); + $layouts[] = array('val' => 'layout-6', 'label' => 'Layout 6 - Medium image with content on left'); + + echo ' + + '; + + echo '
              '; + echo ' Slider container width. Set the value according to your theme layout. Any CSS parsable value is accepted. We don\'t recommend using "100%". Default: 600px.
              It\'s expected from editors to manually choose what content is featured but you can automate the process by featuring chronologically latest content. Default: latest posts.
              Number of posts shown in slider. If the number of "featured" posts is greater than "number of slides" the later will take precedence. Default: 5. +
              Select the size that best fits your site\'s layout and selected FPS layout. You can customize the FPS thumbnail size. Thumbnail size can be chosen on a per-post basis while editing individual posts. Default: medium. +
              +

              Large image with title on image bottom
              +

              Thumbnail with content on right
              +

              Medium image with content on right
              +

              Large image with title above image
              +

              Thumbnail with content on left
              +

              Medium image with content on left

              + + +
              '; + echo '

              Copy code from a predefined layout into the code editor: + +

              +

              The following 18 variables are available for use in custom layout code: (show variables)

              + +

              Layouts can be chozen on a per-post basis while editing individual posts. Default: layout 2.

              +
              '; + echo '

              '; + + echo '

              Options

              '; + + echo ''; + + echo ' + + + '; + + $pagination[] = array('val' => '0', 'label' => 'No'); + $pagination[] = array('val' => '1', 'label' => 'Yes, in form of circles'); + $pagination[] = array('val' => '2', 'label' => 'Yes, in form of post thumbnails'); + + echo ' + + + '; + + $autoplay[] = array('val' => '0', 'label' => 'Disable autoplay'); + $autoplay[] = array('val' => '500', 'label' => 'Every 0.5 seconds'); + $autoplay[] = array('val' => '1000', 'label' => 'Every second'); + $autoplay[] = array('val' => '1500', 'label' => 'Every 1.5 seconds'); + for($i=2000; $i<=20000; $i+=500) { + $autoplay[] = array('val' => $i, 'label' => 'Every ' . number_format($i/1000, 1) . ' seconds'); + } + echo ' + + + '; + + $effects[] = array('val' => 'slide', 'label' => 'Slide'); + $effects[] = array('val' => 'fade', 'label' => 'Fade'); + echo ' + + + '; + + for($i=50; $i<=2000; $i+=50) { + $speed[] = array('val' => $i, 'label' => $i . ' miliseconds'); + } + echo ' + + + '; + + echo ' + + + '; + + echo ' + + + '; + + echo '
              If checked previous and next buttons will be placed on left and right edges of the slider. Default: checked.
              If checked pagination circles or thumbnails will be placed below the slider. Default: circles.
              Time between each automatic slide switch. Default: 5 seconds.
              Effect used for transitioning between slides. Default: slide.
              Duration of transition effect/animation in milliseconds. Default: 350 milliseconds.
              If checked autoplay will be stopped once user hovers over the slider. Default: checked.
              Randomize slides order. By default they are orderd by publishing date, descending. Default: unchecked.
              '; + echo '

              '; + + echo '

              Advanced Options

              '; + + echo ''; + + echo ' + + + '; + + echo ' + + + '; + + echo ' + + + '; + + echo ' + + + '; + + echo ' + + + '; + +if (!$options['thumbnail-width'] || !$options['thumbnail-height']) { + $options['thumbnail-width'] = 50; + $options['thumbnail-height'] = 50; +} + + echo ' + + + '; + + $conditionals[] = array('val' => '', 'label' => 'On all pages'); + $conditionals[] = array('val' => 'is_front_page', 'label' => 'Only if is_front_page()'); + $conditionals[] = array('val' => 'is_home', 'label' => 'Only if is_home()'); + $conditionals[] = array('val' => 'is_category', 'label' => 'Only if is_category()'); + $conditionals[] = array('val' => 'is_singular', 'label' => 'Only if is_singular()'); + $conditionals[] = array('val' => 'is_not_singular', 'label' => 'Only if is_not_singular()'); + + echo ' + + + '; + + echo '
              If you wrote your own CSS for slides or copy/pasted our CSS code into some other file then disable this option. Default: checked.
              If your theme doesn\'t already have jQuery included enable this option. Default: unchecked.
              If your theme already has Slides JS included uncheck this option. Default: checked.
              '; + echo ' Write only the shortcode name, without brackets. If the shortcode name you want is already taken you\'ll be notified after saving. Default: fps.
              x px       '; + echo '
              If you need an additional image (thumbnail) size besides the default WordPress sizes (thumbnail, medium, large) you can define it here. Please note: changes to image sizes are not "retroactive" meaning they will only affect newly uploaded images. Once the size is changed you have to re-build or re-upload the images. We suggest using Image Sizes Manager. Default: 330x330px, cropped.
              x px'; + echo '
              If you\'re using thumbnails for pagination please set the size that fits your theme and needs. Please note: changes to image sizes are not "retroactive" meaning they will only affect newly uploaded images. Once the size is changed you have to re-build or re-upload the images. We suggest using Image Sizes Manager. Default: 50x50px, cropped.
              If you want FPS shown only on certain pages but you placed FPS code in ie header.php set this option to enable conditional display. Default: always display FPS.
              '; + echo '

              '; + + echo '
              '; + } // options_page + + // generate HTML code for slider + public function generate_html() { + $out = ''; + $options = get_option('wf_fps'); + + // show slider only in certain circumstances + if ($options['conditional']) { + if ($options['conditional'] == 'is_home' && !is_home()) { + return; + } elseif ($options['conditional'] == 'is_front_page' && !is_front_page()) { + return; + } elseif ($options['conditional'] == 'is_category' && !is_category()) { + return; + } elseif ($options['conditional'] == 'is_singular' && !is_singular()) { + return; + } elseif ($options['conditional'] == 'is_not_singular' && is_singular()) { + return; + } + } + + $types = array('post', 'page'); + $post_types = get_post_types(array('public' => true, '_builtin' => false), 'object', 'and'); + if ($post_types) { + foreach ($post_types as $post_type ) { + $types[] = $post_type->query_var; + } + } else { + $post_types = array(); + } + if ($options['source'] == '_featured') { + $filter = array('numberposts' => $options['limit'], + 'meta_key' => '_fps_featured', + 'meta_value' => 1, + 'orderby' => 'post_date', + 'order' => 'DESC', + 'post_type' => $types); + } elseif (substr($options['source'], 0, 1) != '|') { + $filter = array('numberposts' => $options['limit'], + 'post_type' => $options['source'], + 'orderby' => 'post_date', + 'order' => 'DESC',); + } else { + $source = explode('|', $options['source']); + if ($source[1] == 'category') { + $category = 'category'; + } else { + $category = $source[1] . '_category'; + } + $filter = array('numberposts' => $options['limit'], + 'post_type' => $types, + $category => $source[2], + 'orderby' => 'post_date', + 'order' => 'DESC',); + + } + $featured_posts = get_posts($filter); + + require('slider-layout-templates.php'); + + $out .= '
              '; + $out .= '
              '; + $slide_nb = 1; + $pagination = ''; + + foreach($featured_posts as $featured) { + $pagination .= '
            • ' . get_the_post_thumbnail($featured->ID, 'FPS pagination thumbnail', array('class' => 'fps-thumbnail-mini')) . '
            • '; + + // $featured "is" $post + // get per-post or global layout + if (get_post_meta($featured->ID, '_fps_layout', true)) { + $layout = get_post_meta($featured->ID, '_fps_layout', true); + } else { + $layout = $options['layout']; + } + if ($layout == 'custom') { + $template = $options['custom-layout']; + } else { + $template = $layouts[$layout]; + } + + // get per-post or global thumbnail size + if (get_post_meta($featured->ID, '_fps_thumbnail', true)) { + $thumbnail_size = get_post_meta($featured->ID, '_fps_thumbnail', true); + } else { + $thumbnail_size = $options['thumbnail']; + } + + $tags = get_the_tags($featured->ID); + $tags2 = ''; + if ($tags) + foreach($tags as $tag) { + $tags2 .= '' . $tag->name . ', '; + } + $tags2 = trim($tags2, ', '); + + $content = $featured->post_content; + if (strpos($content, '')) { + $content = substr($content, 0, strpos($content, '')) . ' (more...)'; + } + $content = apply_filters('the_content', $content); + + $thumbnail = get_post_thumbnail_id($featured->ID); + $thumbnail = wp_get_attachment_image_src($thumbnail, $thumbnail_size); + + global $post; + $post = $featured; + $tmp = str_replace(array('{id}', + '{permalink}', + '{title}', + '{excerpt}', + '{content-full}', + '{content}', + '{author}', + '{author-link}', + '{date}', + '{time}', + '{comments-count}', + '{categories}', + '{tags}', + '{thumbnail}', + '{thumbnail-src}', + '{thumbnail-width}', + '{thumbnail-height}', + '{slider-width}'), + array($featured->ID, + get_permalink($featured->ID), + $featured->post_title, + apply_filters('the_excerpt', $featured->post_excerpt), + apply_filters('the_content', $featured->post_content), + $content, + get_the_author_meta('display_name', $featured->post_author), + get_author_posts_url($featured->post_author), + get_the_date(''), + get_the_time(''), + (int) $featured->comments_count, + get_the_category_list(', ', '', $featured->ID), + $tags2, + get_the_post_thumbnail($featured->ID, $thumbnail_size, array('class' => 'fps-thumbnail')), + $thumbnail[0], + $thumbnail[1], + $thumbnail[2], + $options['width']), $template); + + if ($slide_nb != 1) { + $tmp_display = 'display: none; '; + } else { + $tmp_display = ''; + } + $out .= '
              ' . $tmp . '
              '; + $slide_nb++; + } // foreach post + $out .= '
              '; + + if ($options['pagination'] == 2) { + $out .= '
                ' . $pagination . '
              '; + } + $out .= "
              \n"; + + // include JS/CSS only if needed + if ($featured_posts) { + self::$do_footer = true; + } + + return $out; + } // generate_html + + // shortcode for FPS, just a wrapper + function shortcode($options, $content) { + return self::generate_html(); + } // shortcode + + // slides JS code for footer + function wp_footer() { + if (!self::$do_footer) { + return; + } + + $options = get_option('wf_fps'); + $preload_img = plugins_url('/images/preload.gif', __FILE__); + + if($options['include-css']) { + $slides_css = plugins_url('/css/featured-posts-slider.css?v4', __FILE__); + echo '\n"; + } + + if($options['include-jquery']) { + $jquery_js = plugins_url('/js/jquery-1.6.2.min.js', __FILE__); + echo '' . "\n"; + } + + if($options['include-slides']) { + $slides_js = plugins_url('/js/slides.min.jquery.js', __FILE__); + echo '' . "\n"; + } + + echo '\n"; + } // wp_footer + + // warning if [fps] shortcode is already taken + public function warning() { + $shortcode = get_option('wf_fps'); + $shortcode = $shortcode['shortcode']; + echo '

              Featured Posts Slider shortcode is not active! The shortcode [' . $shortcode . '] is already in use by another plugin. Please update the settings and select a different shortcode.

              '; + } // warning +} // class wf_fps + +// template function, echoes slider code +function the_featured_posts_slider() { + echo wf_fps::generate_html(); +} // the_featured_posts_slider + +// template function, returns slider code +function get_the_featured_posts_slider() { + return wf_fps::generate_html(); +} // get_the_featured_posts_slider + +// hook Featured Posts Plugin +add_action('init', array('wf_fps', 'init')); +add_action('after_setup_theme', array('wf_fps', 'add_thumb_support')); +?> \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/images/fps-pagination.png b/wp-content/plugins/premium-featured-posts-slider/images/fps-pagination.png new file mode 100644 index 0000000..cc7d23c Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/fps-pagination.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/images/layout-image-full-top-title.png b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-full-top-title.png new file mode 100644 index 0000000..994ba2f Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-full-top-title.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/images/layout-image-full.png b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-full.png new file mode 100644 index 0000000..6063abb Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-full.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/images/layout-image-left-short.png b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-left-short.png new file mode 100644 index 0000000..dd3fc38 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-left-short.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/images/layout-image-left.png b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-left.png new file mode 100644 index 0000000..020a12f Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-left.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/images/layout-image-right-short.png b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-right-short.png new file mode 100644 index 0000000..359a279 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-right-short.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/images/layout-image-right.png b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-right.png new file mode 100644 index 0000000..03650c7 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/layout-image-right.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/images/next.png b/wp-content/plugins/premium-featured-posts-slider/images/next.png new file mode 100644 index 0000000..0e5ef14 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/next.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/images/preload.gif b/wp-content/plugins/premium-featured-posts-slider/images/preload.gif new file mode 100644 index 0000000..2892950 Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/preload.gif differ diff --git a/wp-content/plugins/premium-featured-posts-slider/images/previous.png b/wp-content/plugins/premium-featured-posts-slider/images/previous.png new file mode 100644 index 0000000..475937d Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/previous.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/images/transp-black.png b/wp-content/plugins/premium-featured-posts-slider/images/transp-black.png new file mode 100644 index 0000000..a09647b Binary files /dev/null and b/wp-content/plugins/premium-featured-posts-slider/images/transp-black.png differ diff --git a/wp-content/plugins/premium-featured-posts-slider/js/jquery-1.6.2.min.js b/wp-content/plugins/premium-featured-posts-slider/js/jquery-1.6.2.min.js new file mode 100644 index 0000000..f74dab8 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/js/jquery-1.6.2.min.js @@ -0,0 +1,18 @@ +/*! + * jQuery JavaScript Library v1.6.2 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Jun 30 14:16:56 2011 -0400 + */ +(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
              a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
              ",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
              t
              ",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i. +shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

              ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
              ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
              ","
              "],thead:[1,"","
              "],tr:[2,"","
              "],td:[3,"","
              "],col:[2,"","
              "],area:[1,"",""],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div
              ","
              "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j +)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
              ").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
              ";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/wp-content/plugins/premium-featured-posts-slider/js/slides.min.jquery.js b/wp-content/plugins/premium-featured-posts-slider/js/slides.min.jquery.js new file mode 100644 index 0000000..24fb719 --- /dev/null +++ b/wp-content/plugins/premium-featured-posts-slider/js/slides.min.jquery.js @@ -0,0 +1,20 @@ +/* +* Slides, A Slideshow Plugin for jQuery +* Intructions: http://slidesjs.com +* By: Nathan Searles, http://nathansearles.com +* Version: 1.1.9 +* Updated: September 5th, 2011 +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +(function($){$.fn.slides=function(option){option=$.extend({},$.fn.slides.option,option);return this.each(function(){$('.'+option.container,$(this)).children().wrapAll('
              ');var elem=$(this),control=$('.slides_control',elem),total=control.children().size(),width=control.children().outerWidth(),height=control.children().outerHeight(),start=option.start-1,effect=option.effect.indexOf(',')<0?option.effect:option.effect.replace(' ','').split(',')[0],paginationEffect=option.effect.indexOf(',')<0?effect:option.effect.replace(' ','').split(',')[1],next=0,prev=0,number=0,current=0,loaded,active,clicked,position,direction,imageParent,pauseTimeout,playInterval;if(total<2){$('.'+option.container,$(this)).fadeIn(option.fadeSpeed,option.fadeEasing,function(){loaded=true;option.slidesLoaded()});$('.'+option.next+', .'+option.prev).fadeOut(0);return false}function animate(direction,effect,clicked){if(!active&&loaded){active=true;option.animationStart(current+1);switch(direction){case'next':prev=current;next=current+1;next=total===next?0:next;position=width*2;direction=-width*2;current=next;break;case'prev':prev=current;next=current-1;next=next===-1?total-1:next;position=0;direction=0;current=next;break;case'pagination':next=parseInt(clicked,10);prev=$('.'+option.paginationClass+' li.'+option.currentClass+' a',elem).attr('href').match('[^#/]+$');if(next>prev){position=width*2;direction=-width*2}else{position=0;direction=0}current=next;break}if(effect==='fade'){if(option.crossfade){control.children(':eq('+next+')',elem).css({zIndex:10}).fadeIn(option.fadeSpeed,option.fadeEasing,function(){if(option.autoHeight){control.animate({height:control.children(':eq('+next+')',elem).outerHeight()},option.autoHeightSpeed,function(){control.children(':eq('+prev+')',elem).css({display:'none',zIndex:0});control.children(':eq('+next+')',elem).css({zIndex:0});option.animationComplete(next+1);active=false})}else{control.children(':eq('+prev+')',elem).css({display:'none',zIndex:0});control.children(':eq('+next+')',elem).css({zIndex:0});option.animationComplete(next+1);active=false}})}else{control.children(':eq('+prev+')',elem).fadeOut(option.fadeSpeed,option.fadeEasing,function(){if(option.autoHeight){control.animate({height:control.children(':eq('+next+')',elem).outerHeight()},option.autoHeightSpeed,function(){control.children(':eq('+next+')',elem).fadeIn(option.fadeSpeed,option.fadeEasing)})}else{control.children(':eq('+next+')',elem).fadeIn(option.fadeSpeed,option.fadeEasing,function(){if($.browser.msie){$(this).get(0).style.removeAttribute('filter')}})}option.animationComplete(next+1);active=false})}}else{control.children(':eq('+next+')').css({left:position,display:'block'});if(option.autoHeight){control.animate({left:direction,height:control.children(':eq('+next+')').outerHeight()},option.slideSpeed,option.slideEasing,function(){control.css({left:-width});control.children(':eq('+next+')').css({left:width,zIndex:5});control.children(':eq('+prev+')').css({left:width,display:'none',zIndex:0});option.animationComplete(next+1);active=false})}else{control.animate({left:direction},option.slideSpeed,option.slideEasing,function(){control.css({left:-width});control.children(':eq('+next+')').css({left:width,zIndex:5});control.children(':eq('+prev+')').css({left:width,display:'none',zIndex:0});option.animationComplete(next+1);active=false})}}if(option.pagination){$('.'+option.paginationClass+' li.'+option.currentClass,elem).removeClass(option.currentClass);$('.'+option.paginationClass+' li:eq('+next+')',elem).addClass(option.currentClass)}}}function stop(){clearInterval(elem.data('interval'))}function pause(){if(option.pause){clearTimeout(elem.data('pause'));clearInterval(elem.data('interval'));pauseTimeout=setTimeout(function(){clearTimeout(elem.data('pause'));playInterval=setInterval(function(){animate("next",effect)},option.play);elem.data('interval',playInterval)},option.pause);elem.data('pause',pauseTimeout)}else{stop()}}if(total<2){return}if(start<0){start=0}if(start>total){start=total-1}if(option.start){current=start}if(option.randomize){control.randomize()}$('.'+option.container,elem).css({overflow:'hidden',position:'relative'});control.children().css({position:'absolute',top:0,left:control.children().outerWidth(),zIndex:0,display:'none'});control.css({position:'relative',width:(width*3),height:height,left:-width});$('.'+option.container,elem).css({display:'block'});if(option.autoHeight){control.children().css({height:'auto'});control.animate({height:control.children(':eq('+start+')').outerHeight()},option.autoHeightSpeed)}if(option.preload&&control.find('img:eq('+start+')').length){$('.'+option.container,elem).css({background:'url('+option.preloadImage+') no-repeat 50% 50%'});var img=control.find('img:eq('+start+')').attr('src')+'?'+(new Date()).getTime();if($('img',elem).parent().attr('class')!='slides_control'){imageParent=control.children(':eq(0)')[0].tagName.toLowerCase()}else{imageParent=control.find('img:eq('+start+')')}control.find('img:eq('+start+')').attr('src',img).load(function(){control.find(imageParent+':eq('+start+')').fadeIn(option.fadeSpeed,option.fadeEasing,function(){$(this).css({zIndex:5});$('.'+option.container,elem).css({background:''});loaded=true;option.slidesLoaded()})})}else{control.children(':eq('+start+')').fadeIn(option.fadeSpeed,option.fadeEasing,function(){loaded=true;option.slidesLoaded()})}if(option.bigTarget){control.children().css({cursor:'pointer'});control.children().click(function(){animate('next',effect);return false})}if(option.hoverPause&&option.play){control.bind('mouseover',function(){stop()});control.bind('mouseleave',function(){pause()})}if(option.generateNextPrev){$('.'+option.container,elem).append('Prev');$('.'+option.container,elem).append('Next')}$('.'+option.next,elem).click(function(e){e.preventDefault();if(option.play){pause()}animate('next',effect)});$('.'+option.prev,elem).click(function(e){e.preventDefault();if(option.play){pause()}animate('prev',effect)});if(option.generatePagination){if(option.prependPagination){elem.prepend('
                ')}else{elem.append('
                  ')}control.children().each(function(){$('.'+option.paginationClass,elem).append('
                • '+(number+1)+'
                • ');number++})}else{$('.'+option.paginationClass+' li a',elem).each(function(){$(this).attr('href','#'+number);number++})}$('.'+option.paginationClass+' li:eq('+start+')',elem).addClass(option.currentClass);$('.'+option.paginationClass+' li a',elem).click(function(){if(option.play){pause()}clicked=$(this).attr('href').match('[^#/]+$');if(current!=clicked){animate('pagination',paginationEffect,clicked)}return false});$('a.link',elem).click(function(){if(option.play){pause()}clicked=$(this).attr('href').match('[^#/]+$')-1;if(current!=clicked){animate('pagination',paginationEffect,clicked)}return false});if(option.play){playInterval=setInterval(function(){animate('next',effect)},option.play);elem.data('interval',playInterval)}})};$.fn.slides.option={preload:false,preloadImage:'/img/loading.gif',container:'slides_container',generateNextPrev:false,next:'next',prev:'prev',pagination:true,generatePagination:true,prependPagination:false,paginationClass:'pagination',currentClass:'current',fadeSpeed:350,fadeEasing:'',slideSpeed:350,slideEasing:'',start:1,effect:'slide',crossfade:false,randomize:false,play:0,pause:0,hoverPause:false,autoHeight:false,autoHeightSpeed:350,bigTarget:false,animationStart:function(){},animationComplete:function(){},slidesLoaded:function(){}};$.fn.randomize=function(callback){function randomizeOrder(){return(Math.round(Math.random())-0.5)}return($(this).each(function(){var $this=$(this);var $children=$this.children();var childCount=$children.length;if(childCount>1){$children.hide();var indices=[];for(i=0;i + +
                  + {thumbnail} +

                  {title}

                  +
                  +
                  +
                  +EOT; + +$layouts['layout-2'] = << + {title} + + +
                  + {content} + Written by {author} on {date} @ {time}
                  Filed under: {categories}
                  +
                  +EOT; + +$layouts['layout-3'] = << + {thumbnail} +
                  +
                  +

                  {title}

                  + {content} + Written by {author} on {date} @ {time}
                  Filed under: {categories}
                  +
                  +EOT; + +$layouts['layout-4'] = << + +

                  {title}

                  + {thumbnail} +
                  +
                  +EOT; + +$layouts['layout-5'] = << + {title} + + +
                  {content} + Written by {author} on {date} @ {time}
                  Filed under: {categories}
                  +
                  +EOT; + +$layouts['layout-6'] = << + {thumbnail} +
                  +
                  +

                  {title}

                  + {content} + Written by {author} on {date} @ {time}
                  Filed under: {categories}
                  +
                  +EOT; +?> \ No newline at end of file diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/jquery.ui.progressbar.min.1.7.2.js b/wp-content/plugins/regenerate-thumbnails/jquery-ui/jquery.ui.progressbar.min.1.7.2.js new file mode 100644 index 0000000..990c4a3 --- /dev/null +++ b/wp-content/plugins/regenerate-thumbnails/jquery-ui/jquery.ui.progressbar.min.1.7.2.js @@ -0,0 +1,13 @@ +/* + * jQuery UI Progressbar 1.7.2 + * + * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * ui.core.js + */ +(function(a){a.widget("ui.progressbar",{_init:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this._valueMin(),"aria-valuemax":this._valueMax(),"aria-valuenow":this._value()});this.valueDiv=a('
                  ').appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow").removeData("progressbar").unbind(".progressbar");this.valueDiv.remove();a.widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===undefined){return this._value()}this._setData("value",b);return this},_setData:function(b,c){switch(b){case"value":this.options.value=c;this._refreshValue();this._trigger("change",null,{});break}a.widget.prototype._setData.apply(this,arguments)},_value:function(){var b=this.options.value;if(bthis._valueMax()){b=this._valueMax()}return b},_valueMin:function(){var b=0;return b},_valueMax:function(){var b=100;return b},_refreshValue:function(){var b=this.value();this.valueDiv[b==this._valueMax()?"addClass":"removeClass"]("ui-corner-right");this.valueDiv.width(b+"%");this.element.attr("aria-valuenow",b)}});a.extend(a.ui.progressbar,{version:"1.7.2",defaults:{value:0}})})(jQuery);; \ No newline at end of file diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/jquery.ui.progressbar.min.js b/wp-content/plugins/regenerate-thumbnails/jquery-ui/jquery.ui.progressbar.min.js new file mode 100644 index 0000000..3f82ddb --- /dev/null +++ b/wp-content/plugins/regenerate-thumbnails/jquery-ui/jquery.ui.progressbar.min.js @@ -0,0 +1,16 @@ +/* + * jQuery UI Progressbar 1.8.6 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(b,c){b.widget("ui.progressbar",{options:{value:0},min:0,max:100,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.max,"aria-valuenow":this._value()});this.valueDiv=b("
                  ").appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===c)return this._value();this._setOption("value",a);return this},_setOption:function(a,d){if(a==="value"){this.options.value=d;this._refreshValue();this._trigger("change");this._value()===this.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.max,Math.max(this.min,a))},_refreshValue:function(){var a= +this.value();this.valueDiv.toggleClass("ui-corner-right",a===this.max).width(a+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.6"})})(jQuery); diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000..5b5dab2 Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png new file mode 100644 index 0000000..8ff0d29 Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_flat_55_fbec88_40x100.png differ diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png new file mode 100644 index 0000000..9fb564f Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png differ diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png new file mode 100644 index 0000000..0149515 Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_glass_85_dfeffc_1x400.png differ diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000..4443fdc Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png new file mode 100644 index 0000000..81ecc36 Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png differ diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png new file mode 100644 index 0000000..f7cc016 Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png differ diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png new file mode 100644 index 0000000..e301db6 Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png differ diff --git a/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/jquery-ui-1.7.2.custom.css b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/jquery-ui-1.7.2.custom.css new file mode 100644 index 0000000..2d4947c --- /dev/null +++ b/wp-content/plugins/regenerate-thumbnails/jquery-ui/redmond/jquery-ui-1.7.2.custom.css @@ -0,0 +1,406 @@ +/* +* jQuery UI CSS Framework +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +*/ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + + +/* +* jQuery UI CSS Framework +* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +*/ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; outline: none; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; outline: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; outline: none; } +.ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; outline: none; } +.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; outline: none; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; outline: none; text-decoration: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } +.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; } +.ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; } +.ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; } +.ui-corner-top { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; } +.ui-corner-right { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; } +.ui-corner-left { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; } +.ui-corner-all { -moz-border-radius: 5px; -webkit-border-radius: 5px; } + +/* Overlays */ +.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion +----------------------------------*/ +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; } +.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker +----------------------------------*/ +.ui-datepicker { width: 17em; padding: .2em .2em 0; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* Dialog +----------------------------------*/ +.ui-dialog { position: relative; padding: .2em; width: 300px; } +.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* Progressbar +----------------------------------*/ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable +----------------------------------*/ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider +----------------------------------*/ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs +----------------------------------*/ +.ui-tabs { padding: .2em; zoom: 1; } +.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } +.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } diff --git a/wp-content/plugins/regenerate-thumbnails/readme.txt b/wp-content/plugins/regenerate-thumbnails/readme.txt new file mode 100644 index 0000000..f37a80e --- /dev/null +++ b/wp-content/plugins/regenerate-thumbnails/readme.txt @@ -0,0 +1,111 @@ +=== Regenerate Thumbnails === +Contributors: Viper007Bond +Donate link: http://www.viper007bond.com/donate/ +Tags: thumbnail, thumbnails +Requires at least: 2.8 +Tested up to: 3.3 +Stable tag: trunk + +Allows you to regenerate your thumbnails after changing the thumbnail sizes. + +== Description == + +Regenerate Thumbnails allows you to regenerate the thumbnails for your image attachments. This is very handy if you've changed any of your thumbnail dimensions (via Settings -> Media) after previously uploading images or have changed to a theme with different featured post image dimensions. + +You can either regenerate the thumbnails for all image uploads, individual image uploads, or specific multiple image uploads. + +See the [screenshots tab](http://wordpress.org/extend/plugins/regenerate-thumbnails/screenshots/) for more details. + +== Installation == + +1. Go to your admin area and select Plugins -> Add new from the menu. +2. Search for "Regenerate Thumbnails". +3. Click install. +4. Click activate. + +== Screenshots == + +1. The plugin at work regenerating thumbnails +2. You can resize single images by hovering over their row in the Media Library +2. You can resize specific multiples images using the checkboxes and the "Bulk Actions" dropdown + +== ChangeLog == + += Version 2.2.3 = + +* Make the capability required to use this plugin filterable so themes and other plugins can change it. Props [Jackson Whelan](http://jacksonwhelan.com/). + += Version 2.2.2 = + +* Don't check the nonce until we're sure that the action called was for this plugin. Fixes lots of "Are you sure you want to do this?" error messages. + += Version 2.2.1 = + +* Fix the bottom bulk action dropdown. Thanks Stefan for pointing out the issue! + += Version 2.2.0 = + +* Changes to the Bulk Action functionality were made shortly before the release of WordPress 3.1 which broke the way I implemented the specific multiple image regeneration feature. This version adds to the Bulk Action menu using Javascript as that's the only way to do it currently. + += Version 2.1.3 = + +* Move the `error_reporting()` call in the AJAX handler to the beginning so that we're more sure that no PHP errors are outputted. Some hosts disable usage of `set_time_limit()` and calling it was causing a PHP warning to be outputted. + += Version 2.1.2 = + +* When regenerating all images, newest images are done first rather than the oldest. +* Fixed a bug with regeneration error reporting in some browsers. Thanks to pete-sch for reporting the error. +* Supress PHP errors in the AJAX handler to avoid sending an invalid JSON response. Thanks to pete-sch for reporting the error. +* Better and more detailed error reporting for when `wp_generate_attachment_metadata()` fails. + += Version 2.1.1 = + +* Clean up the wording a bit to better match the new features and just be easier to understand. +* Updated screenshots. + += Version 2.1.0 = + +Lots of new features! + +* Thanks to a lot of jQuery help from [Boris Schapira](http://borisschapira.com/), a failed image regeneration will no longer stop the whole process. +* The results of each image regeneration is now outputted. You can easily see which images were successfully regenerated and which failed. Was inspired by a concept by Boris. +* There is now a button on the regeneration page that will allow you to abort resizing images for any reason. Based on code by Boris. +* You can now regenerate single images from the Media page. The link to do so will show up in the actions list when you hover over the row. +* You can now bulk regenerate multiple from the Media page. Check the boxes and then select "Regenerate Thumbnails" form the "Bulk Actions" dropdown. WordPress 3.1+ only. +* The total time that the regeneration process took is now displayed in the final status message. +* jQuery UI Progressbar version upgraded. + += Version 2.0.3 = + +* Switch out deprecated function call. + += Version 2.0.2 = + +* Directly query the database to only fetch what the plugin needs (the attachment ID). This will reduce the memory required as it's not storing the whole row for each attachment. + += Version 2.0.1 = + +* I accidentally left a `check_admin_referer()` (nonce check) commented out. + += Version 2.0.0 = + +* Recoded from scratch. Now uses an AJAX request per attachment to do the resizing. No more PHP maximum execution time errors or anything like that. Also features a pretty progress bar to let the user know how it's going. + += Version 1.1.0 = + +* WordPress 2.7 updates -- code + UI. Thanks to jdub and Patrick F. + += Version 1.0.0 = + +* Initial release. + +== Upgrade Notice == + += 2.2.3 = +Make the capability required to use this plugin filterable so themes and other plugins can change it. Props [Jackson Whelan](http://jacksonwhelan.com/). + += 2.2.2 = +Fixes lots of "Are you sure you want to do this?" error messages. + += 2.2.1 = +Fix the bottom bulk action dropdown. Thanks Stefan for pointing out the issue! \ No newline at end of file diff --git a/wp-content/plugins/regenerate-thumbnails/regenerate-thumbnails.php b/wp-content/plugins/regenerate-thumbnails/regenerate-thumbnails.php new file mode 100644 index 0000000..90aaaf4 --- /dev/null +++ b/wp-content/plugins/regenerate-thumbnails/regenerate-thumbnails.php @@ -0,0 +1,399 @@ +. + +**************************************************************************/ + +class RegenerateThumbnails { + var $menu_id; + + // Plugin initialization + function RegenerateThumbnails() { + // Load up the localization file if we're using WordPress in a different language + // Place it in this plugin's "localization" folder and name it "regenerate-thumbnails-[value in wp-config].mo" + load_plugin_textdomain( 'regenerate-thumbnails', false, '/regenerate-thumbnails/localization' ); + + add_action( 'admin_menu', array( &$this, 'add_admin_menu' ) ); + add_action( 'admin_enqueue_scripts', array( &$this, 'admin_enqueues' ) ); + add_action( 'wp_ajax_regeneratethumbnail', array( &$this, 'ajax_process_image' ) ); + add_filter( 'media_row_actions', array( &$this, 'add_media_row_action' ), 10, 2 ); + //add_filter( 'bulk_actions-upload', array( &$this, 'add_bulk_actions' ), 99 ); // A last minute change to 3.1 makes this no longer work + add_action( 'admin_head-upload.php', array( &$this, 'add_bulk_actions_via_javascript' ) ); + add_action( 'admin_action_bulk_regenerate_thumbnails', array( &$this, 'bulk_action_handler' ) ); // Top drowndown + add_action( 'admin_action_-1', array( &$this, 'bulk_action_handler' ) ); // Bottom dropdown (assumes top dropdown = default value) + + // Allow people to change what capability is required to use this plugin + $this->capability = apply_filters( 'regenerate_thumbs_cap', 'manage_options' ); + } + + + // Register the management page + function add_admin_menu() { + $this->menu_id = add_management_page( __( 'Regenerate Thumbnails', 'regenerate-thumbnails' ), __( 'Regen. Thumbnails', 'regenerate-thumbnails' ), $this->capability, 'regenerate-thumbnails', array(&$this, 'regenerate_interface') ); + } + + + // Enqueue the needed Javascript and CSS + function admin_enqueues( $hook_suffix ) { + if ( $hook_suffix != $this->menu_id ) + return; + + // WordPress 3.1 vs older version compatibility + if ( wp_script_is( 'jquery-ui-widget', 'registered' ) ) + wp_enqueue_script( 'jquery-ui-progressbar', plugins_url( 'jquery-ui/jquery.ui.progressbar.min.js', __FILE__ ), array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.8.6' ); + else + wp_enqueue_script( 'jquery-ui-progressbar', plugins_url( 'jquery-ui/jquery.ui.progressbar.min.1.7.2.js', __FILE__ ), array( 'jquery-ui-core' ), '1.7.2' ); + + wp_enqueue_style( 'jquery-ui-regenthumbs', plugins_url( 'jquery-ui/redmond/jquery-ui-1.7.2.custom.css', __FILE__ ), array(), '1.7.2' ); + } + + + // Add a "Regenerate Thumbnails" link to the media row actions + function add_media_row_action( $actions, $post ) { + if ( 'image/' != substr( $post->post_mime_type, 0, 6 ) || ! current_user_can( $this->capability ) ) + return $actions; + + $url = wp_nonce_url( admin_url( 'tools.php?page=regenerate-thumbnails&goback=1&ids=' . $post->ID ), 'regenerate-thumbnails' ); + $actions['regenerate_thumbnails'] = '' . __( 'Regenerate Thumbnails', 'regenerate-thumbnails' ) . ''; + + return $actions; + } + + + // Add "Regenerate Thumbnails" to the Bulk Actions media dropdown + function add_bulk_actions( $actions ) { + $delete = false; + if ( ! empty( $actions['delete'] ) ) { + $delete = $actions['delete']; + unset( $actions['delete'] ); + } + + $actions['bulk_regenerate_thumbnails'] = __( 'Regenerate Thumbnails', 'regenerate-thumbnails' ); + + if ( $delete ) + $actions['delete'] = $delete; + + return $actions; + } + + + // Add new items to the Bulk Actions using Javascript + // A last minute change to the "bulk_actions-xxxxx" filter in 3.1 made it not possible to add items using that + function add_bulk_actions_via_javascript() { + if ( ! current_user_can( $this->capability ) ) + return; +?> + + + + + +
                  +

                  + +capability ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + + // Form nonce check + check_admin_referer( 'regenerate-thumbnails' ); + + // Create the list of image IDs + if ( ! empty( $_REQUEST['ids'] ) ) { + $images = array_map( 'intval', explode( ',', trim( $_REQUEST['ids'], ',' ) ) ); + $ids = implode( ',', $images ); + } else { + // Directly querying the database is normally frowned upon, but all + // of the API functions will return the full post objects which will + // suck up lots of memory. This is best, just not as future proof. + if ( ! $images = $wpdb->get_results( "SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%' ORDER BY ID DESC" ) ) { + echo '

                  ' . sprintf( __( "Unable to find any images. Are you sure some exist?", 'regenerate-thumbnails' ), admin_url( 'upload.php?post_mime_type=image' ) ) . "

                  "; + return; + } + + // Generate the list of IDs + $ids = array(); + foreach ( $images as $image ) + $ids[] = $image->ID; + $ids = implode( ',', $ids ); + } + + echo '

                  ' . __( "Please be patient while the thumbnails are regenerated. This can take a while if your server is slow (inexpensive hosting) or if you have many images. Do not navigate away from this page until this script is done or the thumbnails will not be resized. You will be notified via this page when the regenerating is completed.", 'regenerate-thumbnails' ) . '

                  '; + + $count = count( $images ); + + $text_goback = ( ! empty( $_GET['goback'] ) ) ? sprintf( __( 'To go back to the previous page, click here.', 'regenerate-thumbnails' ), 'javascript:history.go(-1)' ) : ''; + $text_failures = sprintf( __( 'All done! %1$s image(s) were successfully resized in %2$s seconds and there were %3$s failure(s). To try regenerating the failed images again, click here. %5$s', 'regenerate-thumbnails' ), "' + rt_successes + '", "' + rt_totaltime + '", "' + rt_errors + '", esc_url( wp_nonce_url( admin_url( 'tools.php?page=regenerate-thumbnails&goback=1' ), 'regenerate-thumbnails' ) . '&ids=' ) . "' + rt_failedlist + '", $text_goback ); + $text_nofailures = sprintf( __( 'All done! %1$s image(s) were successfully resized in %2$s seconds and there were 0 failures. %3$s', 'regenerate-thumbnails' ), "' + rt_successes + '", "' + rt_totaltime + '", $text_goback ); +?> + + + + +
                  +
                  +
                  + +

                  + +

                  + +

                  +
                  + 0' ); ?>
                  + 0' ); ?> +

                  + +
                    +
                  1. +
                  + + + +
                  + + +

                  media settings page. Old thumbnails will be kept to avoid any broken images due to hard-coded URLs.", 'regenerate-thumbnails' ), admin_url( 'options-media.php' ) ); ?>

                  + +

                  Media page. Hover over an image's row and click the link to resize just that one image or use the checkboxes and the "Bulk Actions" dropdown to resize multiple images (WordPress 3.1+ only).", 'regenerate-thumbnails '), admin_url( 'upload.php' ) ); ?>

                  + +

                  + +

                  + +

                  + + + +
                  + +
                  + +post_type || 'image/' != substr( $image->post_mime_type, 0, 6 ) ) + die( json_encode( array( 'error' => sprintf( __( 'Failed resize: %s is an invalid image ID.', 'regenerate-thumbnails' ), esc_html( $_REQUEST['id'] ) ) ) ) ); + + if ( ! current_user_can( $this->capability ) ) + $this->die_json_error_msg( $image->ID, __( "Your user account doesn't have permission to resize images", 'regenerate-thumbnails' ) ); + + $fullsizepath = get_attached_file( $image->ID ); + + if ( false === $fullsizepath || ! file_exists( $fullsizepath ) ) + $this->die_json_error_msg( $image->ID, sprintf( __( 'The originally uploaded image file cannot be found at %s', 'regenerate-thumbnails' ), '' . esc_html( $fullsizepath ) . '' ) ); + + @set_time_limit( 900 ); // 5 minutes per image should be PLENTY + + $metadata = wp_generate_attachment_metadata( $image->ID, $fullsizepath ); + + if ( is_wp_error( $metadata ) ) + $this->die_json_error_msg( $image->ID, $metadata->get_error_message() ); + if ( empty( $metadata ) ) + $this->die_json_error_msg( $image->ID, __( 'Unknown failure reason.', 'regenerate-thumbnails' ) ); + + // If this fails, then it just means that nothing was changed (old value == new value) + wp_update_attachment_metadata( $image->ID, $metadata ); + + die( json_encode( array( 'success' => sprintf( __( '"%1$s" (ID %2$s) was successfully resized in %3$s seconds.', 'regenerate-thumbnails' ), esc_html( get_the_title( $image->ID ) ), $image->ID, timer_stop() ) ) ) ); + } + + + // Helper to make a JSON error message + function die_json_error_msg( $id, $message ) { + die( json_encode( array( 'error' => sprintf( __( '"%1$s" (ID %2$s) failed to resize. The error message was: %3$s', 'regenerate-thumbnails' ), esc_html( get_the_title( $id ) ), $id, $message ) ) ) ); + } + + + // Helper function to escape quotes in strings for use in Javascript + function esc_quotes( $string ) { + return str_replace( '"', '\"', $string ); + } +} + +// Start up this plugin +add_action( 'init', 'RegenerateThumbnails' ); +function RegenerateThumbnails() { + global $RegenerateThumbnails; + $RegenerateThumbnails = new RegenerateThumbnails(); +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/regenerate-thumbnails/screenshot-1.png b/wp-content/plugins/regenerate-thumbnails/screenshot-1.png new file mode 100644 index 0000000..7a8a04b Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/screenshot-1.png differ diff --git a/wp-content/plugins/regenerate-thumbnails/screenshot-2.png b/wp-content/plugins/regenerate-thumbnails/screenshot-2.png new file mode 100644 index 0000000..a904724 Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/screenshot-2.png differ diff --git a/wp-content/plugins/regenerate-thumbnails/screenshot-3.png b/wp-content/plugins/regenerate-thumbnails/screenshot-3.png new file mode 100644 index 0000000..037e494 Binary files /dev/null and b/wp-content/plugins/regenerate-thumbnails/screenshot-3.png differ diff --git a/wp-content/plugins/sitepress-multilingual-cms/ajax.php b/wp-content/plugins/sitepress-multilingual-cms/ajax.php new file mode 100644 index 0000000..a002564 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/ajax.php @@ -0,0 +1,838 @@ + 1, + 'get_language_status_text' => 1, + 'get_original_comment' => 1 +); + +if(!isset($_icl_ajx_actions_no_nonce[$_POST['icl_ajx_action']]) && !wp_verify_nonce($_POST['_icl_nonce'], $_REQUEST['icl_ajx_action'] . '_nonce')){ + die('Invalid nonce'); +} + +switch($_REQUEST['icl_ajx_action']){ + case 'health_check': + $iclsettings['ajx_health_checked'] = 1; + $this->save_settings($iclsettings); + break; + case 'set_active_languages': + $resp = array(); + $old_active_languages_count = count($this->get_active_languages()); + $lang_codes = explode(',',$_POST['langs']); + if($this->set_active_languages($lang_codes)){ + $resp[0] = 1; + $active_langs = $this->get_active_languages(); + $iclresponse =''; + $default_categories = $this->get_default_categories(); + $default_category_main = $wpdb->get_var("SELECT name FROM {$wpdb->terms} t JOIN {$wpdb->term_taxonomy} tx ON t.term_id=tx.term_id + WHERE term_taxonomy_id='{$default_categories[$this->get_default_language()]}' AND taxonomy='category'"); + $default_category_trid = $wpdb->get_var("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_id={$default_categories[$this->get_default_language()]} AND element_type='tax_category'"); + foreach($active_langs as $lang){ + $is_default = ($this->get_default_language()==$lang['code']); + $iclresponse .= '
                • switch_locale($lang['code']); + $tr_cat = __('Uncategorized', 'sitepress'); + $this->switch_locale(); + }else{ + $tr_cat = $default_category_main . ' @' . $lang['code']; + } + $_POST['icl_trid'] = $default_category_trid; + $_POST['icl_tax_category_language'] = $lang['code']; + $tmp = wp_insert_term($tr_cat, 'category'); + $default_categories[$lang['code']] = $tmp['term_taxonomy_id']; + } + } + $this->set_default_categories($default_categories) ; + + $resp[1] = $iclresponse; + // response 1 - blog got more than 2 languages; -1 blog reduced to 1 language; 0 - no change + if(count($lang_codes) > 1){ + if(empty($this->settings['setup_complete'])){ + $resp[2] = -2; //don't refresh the page and enable 'next' + }else{ + $resp[2] = 1; + } + }elseif($old_active_languages_count > 1 && count($lang_codes) < 2){ + if(!$this->settings['setup_complete']){ + $resp[2] = -3; //don't refresh the page and disable 'next' + }else{ + $resp[2] = -1; + } + }else{ + if(!$this->settings['setup_complete']){ + $resp[2] = -3; //don't refresh the page and disable 'next' + }else{ + $resp[2] = 0; + } + } + if(count($active_langs) > 1){ + $iclsettings['dont_show_help_admin_notice'] = true; + $this->save_settings($iclsettings); + } + }else{ + $resp[0] = 0; + } + + if(empty($iclsettings['setup_complete'])){ + $iclsettings['setup_wizard_step'] = 3; + $this->save_settings($iclsettings); + } + + echo join('|',$resp); + do_action('icl_update_active_languages'); + break; + case 'set_default_language': + $previous_default = $this->get_default_language(); + if($response = $this->set_default_language($_POST['lang'])){ + echo '1|'.$previous_default.'|'; + }else{ + echo'0||' ; + } + if(1 === $response){ + echo __('Wordpress language file (.mo) is missing. Keeping existing display language.', 'sitepress'); + } + break; + case 'icl_tdo_options': + $iclsettings['translated_document_status'] = intval($_POST['icl_translated_document_status']); + $iclsettings['translated_document_page_url'] = $_POST['icl_translated_document_page_url']; + $this->save_settings($iclsettings); + echo '1|'; + break; + case 'icl_save_language_negotiation_type': + $iclsettings['language_negotiation_type'] = $_POST['icl_language_negotiation_type']; + if(!empty($_POST['language_domains'])){ + $iclsettings['language_domains'] = $_POST['language_domains']; + } + $this->save_settings($iclsettings); + echo 1; + break; + case 'icl_save_language_switcher_options': + $_POST = stripslashes_deep( $_POST ); + if(isset($_POST['icl_language_switcher_sidebar'])){ + global $wp_registered_widgets, $wp_registered_sidebars; + $swidgets = wp_get_sidebars_widgets(); + if(empty($swidgets)){ + $sidebars = array_keys($wp_registered_sidebars); + foreach($sidebars as $sb){ + $swidgets[$sb] = array(); + } + } + foreach($swidgets as $k=>$v){ + $key = array_search('icl_lang_sel_widget',(array)$swidgets[$k]); + if(false !== $key && $k !== $_POST['icl_language_switcher_sidebar']){ + unset($swidgets[$k][$key]); + }elseif($k==$_POST['icl_language_switcher_sidebar'] && !in_array('icl_lang_sel_widget',$swidgets[$k])){ + $swidgets[$k] = array_reverse($swidgets[$k], false); + array_push($swidgets[$k],'icl_lang_sel_widget'); + $swidgets[$k] = array_reverse($swidgets[$k], false); + } + } + wp_set_sidebars_widgets($swidgets); + } + $iclsettings['icl_lso_link_empty'] = @intval($_POST['icl_lso_link_empty']); + $iclsettings['icl_lso_flags'] = isset($_POST['icl_lso_flags']) ? @intval($_POST['icl_lso_flags']) : 0; + $iclsettings['icl_lso_native_lang'] = @intval($_POST['icl_lso_native_lang']); + $iclsettings['icl_lso_display_lang'] = @intval($_POST['icl_lso_display_lang']); + + if(empty($this->settings['setup_complete'])){ + $iclsettings['setup_wizard_step'] = 3; + $iclsettings['setup_complete'] = 1; + + $active_languages = $this->get_active_languages(); + $default_language = $this->get_default_language(); + foreach($active_languages as $al){ + if($al != $default_language){ + if($this->_validate_language_per_directory($al)){ + $iclsettings['language_negotiation_type'] = 1; + } + break; + } + } + + } + + if(isset($_POST['icl_lang_sel_config'])){ + $iclsettings['icl_lang_sel_config'] = $_POST['icl_lang_sel_config']; + } + + if(isset($_POST['icl_lang_sel_footer_config'])){ + $iclsettings['icl_lang_sel_footer_config'] = $_POST['icl_lang_sel_footer_config']; + } + + if (isset($_POST['icl_lang_sel_type'])) + $iclsettings['icl_lang_sel_type'] = $_POST['icl_lang_sel_type']; + + if (isset($_POST['icl_lang_sel_footer'])) + $iclsettings['icl_lang_sel_footer'] = 1; + else $iclsettings['icl_lang_sel_footer'] = 0; + + if (isset($_POST['icl_post_availability'])) + $iclsettings['icl_post_availability'] = 1; + else $iclsettings['icl_post_availability'] = 0; + + if (isset($_POST['icl_post_availability_position'])) + $iclsettings['icl_post_availability_position'] = $_POST['icl_post_availability_position']; + + if (isset($_POST['icl_post_availability_text'])) + $iclsettings['icl_post_availability_text'] = $_POST['icl_post_availability_text']; + + $iclsettings['icl_widget_title_show'] = (isset($_POST['icl_widget_title_show'])) ? 1 : 0; + $iclsettings['icl_additional_css'] = $_POST['icl_additional_css']; + + $iclsettings['display_ls_in_menu'] = @intval($_POST['display_ls_in_menu']); + $iclsettings['menu_for_ls'] = @intval($_POST['menu_for_ls']); + + if(!$iclsettings['icl_lso_flags'] && !$iclsettings['icl_lso_native_lang'] && !$iclsettings['icl_lso_display_lang']){ + echo '0|'; + echo __('At least one of the language switcher style options needs to be checked', 'sitepress'); + }else{ + $this->save_settings($iclsettings); + echo 1; + } + break; + case 'icl_admin_language_options': + $iclsettings['admin_default_language'] = $_POST['icl_admin_default_language']; + $this->save_settings($iclsettings); + $this->icl_locale_cache->clear(); + echo 1; + break; + case 'icl_blog_posts': + $iclsettings['show_untranslated_blog_posts'] = $_POST['icl_untranslated_blog_posts']; + $this->save_settings($iclsettings); + echo 1; + break; + case 'icl_page_sync_options': + $iclsettings['sync_page_ordering'] = @intval($_POST['icl_sync_page_ordering']); + $iclsettings['sync_page_parent'] = @intval($_POST['icl_sync_page_parent']); + $iclsettings['sync_page_template'] = @intval($_POST['icl_sync_page_template']); + $iclsettings['sync_comment_status'] = @intval($_POST['icl_sync_comment_status']); + $iclsettings['sync_ping_status'] = @intval($_POST['icl_sync_ping_status']); + $iclsettings['sync_sticky_flag'] = @intval($_POST['icl_sync_sticky_flag']); + $iclsettings['sync_private_flag'] = @intval($_POST['icl_sync_private_flag']); + $iclsettings['sync_post_format'] = @intval($_POST['icl_sync_private_flag']); + $iclsettings['sync_delete'] = @intval($_POST['icl_sync_delete']); + $iclsettings['sync_post_taxonomies'] = @intval($_POST['icl_sync_post_taxonomies']); + $iclsettings['sync_post_date'] = @intval($_POST['icl_sync_post_date']); + $iclsettings['sync_taxonomy_parents'] = @intval($_POST['icl_sync_taxonomy_parents']); + $iclsettings['sync_comments_on_duplicates'] = @intval($_POST['icl_sync_comments_on_duplicates']); + $this->save_settings($iclsettings); + echo 1; + break; + case 'language_domains': + $active_languages = $this->get_active_languages(); + $default_language = $this->get_default_language(); + $iclsettings = $this->get_settings(); + $language_domains = isset($iclsettings['language_domains']) ? $iclsettings['language_domains'] : false; + echo ''; + foreach($active_languages as $lang){ + $home = get_option('home'); + if($lang['code']!=$default_language){ + if(isset($language_domains[$lang['code']])){ + $sugested_url = $language_domains[$lang['code']]; + }else{ + $url_parts = parse_url($home); + $exp = explode('.' , $url_parts['host']); + if(count($exp) < 3){ + $sugested_url = $url_parts['scheme'] . '://' . $lang['code'] . '.' . $url_parts['host'] . @strval($url_parts['path']); + }else{ + array_shift($exp); + $sugested_url = $url_parts['scheme'] . '://' . $lang['code'] . '.' . join('.' , $exp) . @strval($url_parts['path']); + } + } + } + + echo ''; + echo ''; + if($lang['code']==$default_language){ + echo ''; + echo ''; + echo ''; + }else{ + echo ''; + echo ''; + } + echo ''; + } + echo '
                  ' . $lang['display_name'] . '' . $home . '  
                  '; + break; + case 'validate_language_domain': + if(false === strpos($_POST['url'],'?')){$url_glue='?';}else{$url_glue='&';} + $url = $_POST['url'] . $url_glue . '____icl_validate_domain=1'; + $client = new WP_Http(); + $response = $client->request($url, 'timeout=15'); + if(!is_wp_error($response) && ($response['response']['code']=='200') && ($response['body'] == '')){ + echo 1; + }else{ + echo 0; + } + break; + case 'send_translation_request': + global $iclTranslationManagement, $current_user; + $post_ids = explode(',',$_POST['post_ids']); + $target_languages = explode('#', $_POST['target_languages']); + $post_types = $_POST['icl_post_type']; + + get_currentuserinfo(); + $translator_id = isset($_POST['translator_id']) ? $_POST['translator_id'] : $current_user->ID; + foreach($post_ids as $post_id){ + + if(isset($_POST['tn_note_'.$post_id]) && trim($_POST['tn_note_'.$post_id])){ + update_post_meta($post_id, '_icl_translator_note', $_POST['tn_note_'.$post_id]); + } + foreach($target_languages as $to_lang){ + $from_lang = $wpdb->get_var($wpdb->prepare("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE element_id=%d AND element_type=%s", + $post_id, 'post_'.$post_types[$post_id])); + + foreach($target_languages as $_lg){ + $translator[$_lg] = 0 ; + } + + $data = array( + 'translate_from' => $from_lang, + 'translate_to' => array($to_lang=>1), + 'iclpost' => array($post_id), + 'service' => 'icanlocalize', + 'iclnonce' => wp_create_nonce('pro-translation-icl'), + 'translator' => $translator + ); + $jd = $iclTranslationManagement->send_jobs($data); + $resp[] = array( + 'post_id' => $post_id, + 'status' => !empty($jd) + ); + } + /* + $resp[] = array( + 'post_id'=>$post_id, + 'status'=>$ICL_Pro_Translation->send_post($post_id, $target_languages, $translator_id) + ); + */ + } + echo json_encode($resp); + break; + case 'get_translator_status': + if(!$this->icl_account_configured()) break; + + $iclsettings = $this->get_settings(); + + if(isset($_POST['cache'])) { + $last_call = @intval($iclsettings['last_get_translator_status_call']); + if (time() - $last_call < 24 * 60 * 60) { + break; + } + } + + $iclsettings['last_get_translator_status_call'] = time(); + $this->get_icl_translator_status($iclsettings); + $this->save_settings($iclsettings); + + echo @json_encode($iclsettings['icl_lang_status']); + break; + + case 'get_language_status_text': + + if(!$this->icl_account_configured()) break; + + $iclsettings = $this->get_settings(); + + if(!isset($_POST['cache'])) { + $iclsettings = $this->get_settings(); + $this->get_icl_translator_status($iclsettings); + $this->save_settings($iclsettings); + } + + echo '1|' . intval($_POST['id']) . '|' . $this->get_language_status_text($_POST['from_lang'], $_POST['to_lang']); + break; + /* + case 'set_post_to_date': + $nid = (int) $_POST['post_id']; + $md5 = $wpdb->get_var("SELECT md5 FROM {$wpdb->prefix}icl_node WHERE nid={$nid}"); + $wpdb->query("UPDATE {$wpdb->prefix}icl_content_status SET md5 = '{$md5}' WHERE nid='{$nid}'"); + echo __('Needs update','sitepress'); + echo '|'; + echo __('Complete','sitepress'); + break; + */ + case 'icl_theme_localization_type': + $icl_tl_type = @intval($_POST['icl_theme_localization_type']); + $iclsettings['theme_localization_type'] = $icl_tl_type; + $iclsettings['theme_localization_load_textdomain'] = @intval($_POST['icl_theme_localization_load_td']); + $iclsettings['gettext_theme_domain_name'] = $_POST['textdomain_value']; + if($icl_tl_type==1){ + icl_st_scan_theme_files(); + }elseif($icl_tl_type==2){ + $parent_theme = get_template_directory(); + $child_theme = get_stylesheet_directory(); + $languages_folders = array(); + + if($found_folder = icl_tf_determine_mo_folder($parent_theme)){ + $languages_folders['parent'] = $found_folder; + } + if($parent_theme != $child_theme && $found_folder = icl_tf_determine_mo_folder($child_theme)){ + $languages_folders['child'] = $found_folder; + } + $iclsettings['theme_language_folders'] = $languages_folders; + + } + $this->save_settings($iclsettings); + echo '1|'.$icl_tl_type; + break; + + case 'icl_ct_user_pref': + $users = $wpdb->get_col("SELECT id FROM {$wpdb->users}"); + foreach($users as $uid){ + if(isset($_POST['icl_enable_comments_translation'][$uid])){ + update_user_meta($uid, 'icl_enable_comments_translation', 1); + }else{ + delete_user_meta($uid, 'icl_enable_comments_translation'); + } + if(isset($_POST['icl_enable_replies_translation'][$uid])){ + update_user_meta($uid, 'icl_enable_replies_translation', 1); + }else{ + delete_user_meta($uid, 'icl_enable_replies_translation'); + } + } + echo '1|'; + break; + case 'get_original_comment': + $comment_id = $_POST['comment_id']; + $trid = $this->get_element_trid($comment_id, 'comment'); + $res = $wpdb->get_row($wpdb->prepare("SELECT element_id, language_code FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND element_type='comment' AND element_id <> %d ", $trid, $comment_id)); + $original_cid = $res->element_id; + $comment = $wpdb->get_row("SELECT * FROM {$wpdb->comments} WHERE comment_ID={$original_cid}"); + $comment->language_code = $res->language_code; + if($res->language_code == $IclCommentsTranslation->user_language){ + $comment->translated_version = 1; + }else{ + $comment->translated_version = 0; + $comment->anchor_text = __('Back to translated version', 'sitepress'); + } + echo json_encode($comment); + break; + case 'dismiss_help': + $iclsettings['dont_show_help_admin_notice'] = true; + $this->save_settings($iclsettings); + break; + case 'dismiss_page_estimate_hint': + $iclsettings['dismiss_page_estimate_hint'] = !$this->settings['dismiss_page_estimate_hint']; + $this->save_settings($iclsettings); + break; + case 'toggle_pt_controls': + $iclsettings['hide_professional_translation_controls'] = $_POST['value']; + $this->save_settings($iclsettings); + break; + case 'dismiss_upgrade_notice': + $iclsettings['hide_upgrade_notice'] = implode('.', array_slice(explode('.', ICL_SITEPRESS_VERSION), 0, 3)); + $this->save_settings($iclsettings); + break; + case 'setup_got_to_step1': + $iclsettings['existing_content_language_verified'] = 0; + $iclsettings['setup_wizard_step'] = 1; + @mysql_query("TRUNCATE TABLE {$wpdb->prefix}icl_translations"); + $this->save_settings($iclsettings); + break; + case 'setup_got_to_step2': + $iclsettings['setup_wizard_step'] = 2; + $this->save_settings($iclsettings); + break; + case 'toggle_show_translations': + $iclsettings = $this->get_settings(); + $iclsettings['show_translations_flag'] = @intval(!$iclsettings['show_translations_flag']); + $this->save_settings($iclsettings); + break; + case 'icl_messages': + $iclsettings = $this->get_settings(); + + if(!empty($this->settings['icl_disable_reminders'])) break; + + if(!empty($iclsettings['site_id']) && !empty($iclsettings['access_key']) && empty($iclsettings['icl_anonymous_user'])){ + $iclq = new ICanLocalizeQuery($iclsettings['site_id'], $iclsettings['access_key']); + + $output = ''; + + if (isset($_POST['refresh']) && $_POST['refresh'] == 1) { + $reminders = $iclq->get_reminders(true); + } else { + $reminders = $iclq->get_reminders(); + } + + $count = 0; + foreach($reminders as $r) { + $message = $r->message; + $message = str_replace('[', '<', $message); + $message = str_replace(']', '>', $message); + $url = $r->url; + $anchor_pos = strpos($url, '#'); + if ($anchor_pos !== false) { + $url = substr($url, 0, $anchor_pos); + } + + if(false !== strpos($url,'?')){ + $url_glue = '&'; + }else{ + $url_glue = '?accesskey='.$this->settings['access_key'] . '&compact=1'; + } + $output .= $message . ' - ' . $this->create_icl_popup_link(ICL_API_ENDPOINT. $url . $url_glue . '&message_id=' . $r->id. '&TB_iframe=true') . __('View', 'sitepress') . ''; + + if ($r->can_delete == '1') { + $on_click = 'dismiss_message(' . $r->id . ', \'' . wp_create_nonce('icl_delete_message_nonce') . '\');'; + + $output .= ' - Dismiss'; + } + $output .= '
                  '; + + $count += 1; + if ($count > 5) { + break; + } + + } + + if ($output != '') { + $reminder_count = sizeof($reminders); + if ($reminder_count == 1){ + $reminder_text = __('Show 1 reminder', 'sitepress'); + } else { + $reminder_text = sprintf(__('Show %d reminders', 'sitepress'), $reminder_count); + } + $resp = array('messages'=>$reminder_count, 'reminder_text' => $reminder_text, 'output'=>$output); + } else { + $resp = array('messages'=>0); + } + }else{ + $resp = array('messages'=>0); + } + echo json_encode($resp); + break; + + case 'icl_delete_message': + $iclsettings = $this->get_settings(); + $iclq = new ICanLocalizeQuery($iclsettings['site_id'], $iclsettings['access_key']); + $iclq->delete_message($_POST['message_id']); + break; + case 'icl_show_reminders': + switch($_POST['state']){ + case 'show': + $iclsettings['icl_show_reminders'] = 1; + break; + case 'hide': + $iclsettings['icl_show_reminders'] = 0; + break; + case 'close': + $iclsettings['icl_disable_reminders'] = 1; + break; + default: // nothing + } + $iclsettings['icl_show_reminders'] = $_POST['state']=='show'?1:0; + $this->save_settings($iclsettings); + break; + + case 'icl_help_links': + $iclsettings = $this->get_settings(); + $iclq = new ICanLocalizeQuery($iclsettings['site_id'], $iclsettings['access_key']); + $links = $iclq->get_help_links(); + $lang = $iclsettings['admin_default_language']; + if (!isset($links['resources'][$lang])) { + $lang = 'en'; + } + + if (isset($links['resources'][$lang])) { + $output = '
                    '; + foreach( $links['resources'][$lang]['resource'] as $resource) { + if (isset($resource['attr'])) { + $title = $resource['attr']['title']; + $url = $resource['attr']['url']; + $icon = $resource['attr']['icon']; + $icon_width = $resource['attr']['icon_width']; + $icon_height = $resource['attr']['icon_height']; + } else { + $title = $resource['title']; + $url = $resource['url']; + $icon = $resource['icon']; + $icon_width = $resource['icon_width']; + $icon_height = $resource['icon_height']; + } + $output .= '
                  • '; + if ($icon) { + $output .= '' . $title . '
                  • '; + + } + $output .= '
                  '; + echo '1|' . $output; + } else { + echo '0|'; + } + break; + + case 'icl_show_sidebar': + $iclsettings['icl_sidebar_minimized'] = $_POST['state']=='hide'?1:0; + $this->save_settings($iclsettings); + break; + + case 'icl_promote_form': + $iclsettings['promote_wpml'] = @intval($_POST['icl_promote']); + $this->save_settings($iclsettings); + echo '1|'; + break; + + case 'save_translator_note': + update_post_meta($_POST['post_id'], '_icl_translator_note', $_POST['note']); + break; + case 'icl_st_track_strings': + foreach($_POST['icl_st'] as $k=>$v){ + $iclsettings['st'][$k] = $v; + } + $this->save_settings($iclsettings); + echo 1; + break; + case 'icl_st_more_options': + if(wp_verify_nonce($_POST['_wpnonce'], 'icl_st_more_options')){ + $iclsettings['st']['translated-users'] = !empty($_POST['users']) ? array_keys($_POST['users']) : array(); + $this->save_settings($iclsettings); + if(!empty($iclsettings['st']['translated-users'])){ + global $sitepress_settings; + $sitepress_settings['st']['translated-users'] = $iclsettings['st']['translated-users']; + icl_st_register_user_strings_all(); + } + echo 1; + }else{ + echo 0; + } + break; + + case 'icl_st_ar_form': + // Auto register string settings. + $iclsettings['st']['icl_st_auto_reg'] = $_POST['icl_auto_reg_type']; + $this->save_settings($iclsettings); + echo 1; + break; + + case 'affiliate_info_check': + if( $this->icl_account_configured() + && ($iclq = new ICanLocalizeQuery($this->settings['site_id'], $this->settings['access_key'])) + && $iclq->test_affiliate_info($_POST['icl_affiliate_id'], $_POST['icl_affiliate_key'])){ + $error = array('error'=>0); + }else{ + $error = array('error'=>1); + } + echo json_encode($error); + break; + + case 'icl_hide_languages': + $iclsettings['hidden_languages'] = empty($_POST['icl_hidden_languages']) ? array() : $_POST['icl_hidden_languages']; + $this->settings['hidden_languages'] = array(); //reset current value + $active_languages = $this->get_active_languages(); + if(!empty($iclsettings['hidden_languages'])){ + if(1 == count($iclsettings['hidden_languages'])){ + $out = sprintf(__('%s is currently hidden to visitors.', 'sitepress'), + $active_languages[$iclsettings['hidden_languages'][0]]['display_name']); + }else{ + foreach($iclsettings['hidden_languages'] as $l){ + $_hlngs[] = $active_languages[$l]['display_name']; + } + $hlangs = join(', ', $_hlngs); + $out = sprintf(__('%s are currently hidden to visitors.', 'sitepress'), $hlangs); + } + $out .= ' ' . sprintf(__('You can enable its/their display for yourself, in your profile page.', 'sitepress'), + 'profile.php#wpml'); + } else { + $out = __('All languages are currently displayed.', 'sitepress'); + } + $this->save_settings($iclsettings); + echo '1|'.$out; + break; + + case 'icl_adjust_ids': + $iclsettings['auto_adjust_ids'] = @intval($_POST['icl_adjust_ids']); + $this->save_settings($iclsettings); + echo '1|'; + break; + + case 'icl_automatic_redirect': + $iclsettings['automatic_redirect'] = @intval($_POST['icl_automatic_redirect']); + $iclsettings['remember_language'] = @intval($_POST['icl_remember_language']); + $this->save_settings($iclsettings); + echo '1|'; + break; + + case 'icl_torubleshooting_more_options': + $iclsettings['troubleshooting_options'] = $_POST['troubleshooting_options']; + $this->save_settings($iclsettings); + echo '1|'; + break; + + case 'reset_languages': + require_once(ICL_PLUGIN_PATH . '/inc/lang-data.php'); + + $active = $wpdb->get_col("SELECT code FROM {$wpdb->prefix}icl_languages WHERE active = 1"); + + mysql_query("TRUNCATE TABLE `{$wpdb->prefix}icl_languages`"); + mysql_query("TRUNCATE TABLE `{$wpdb->prefix}icl_languages_translations`"); + mysql_query("TRUNCATE TABLE `{$wpdb->prefix}icl_flags`"); + + foreach($langs_names as $key=>$val){ + if(strpos($key,'Norwegian Bokm')===0){ $key = 'Norwegian Bokmål'; $lang_codes[$key] = 'nb';} // exception for norwegian + $default_locale = isset($lang_locales[$lang_codes[$key]]) ? $lang_locales[$lang_codes[$key]] : ''; + @$wpdb->insert($wpdb->prefix . 'icl_languages', array('english_name'=>$key, 'code'=>$lang_codes[$key], 'major'=>$val['major'], 'active'=>0, 'default_locale'=>$default_locale)); + } + + //restore active + $wpdb->query("UPDATE {$wpdb->prefix}icl_languages SET active=1 WHERE code IN('".join("','",$active)."')"); + + foreach($langs_names as $lang=>$val){ + if(strpos($lang,'Norwegian Bokm')===0){ $lang = 'Norwegian Bokmål'; $lang_codes[$lang] = 'nb';} + foreach($val['tr'] as $k=>$display){ + if(strpos($k,'Norwegian Bokm')===0){ $k = 'Norwegian Bokmål';} + if(!trim($display)){$display = $lang;} + if(!($wpdb->get_var("SELECT id FROM {$table_name} WHERE language_code='{$lang_codes[$lang]}' AND display_language_code='{$lang_codes[$k]}'"))){ + $wpdb->insert($wpdb->prefix . 'icl_languages_translations', + array('language_code'=>$lang_codes[$lang], 'display_language_code'=>$lang_codes[$k], 'name'=>$display)); + } + } + } + $wpdb->update($wpdb->prefix.'icl_flags', array('from_template'=>0)); + + $codes = $wpdb->get_col("SELECT code FROM {$wpdb->prefix}icl_languages"); + foreach($codes as $code){ + if(!$code || $wpdb->get_var("SELECT lang_code FROM {$wpdb->prefix}icl_flags WHERE lang_code='{$code}'")) continue; + if(!file_exists(ICL_PLUGIN_PATH.'/res/flags/'.$code.'.png')){ + $file = 'nil.png'; + }else{ + $file = $code.'.png'; + } + $wpdb->insert($wpdb->prefix.'icl_flags', array('lang_code'=>$code, 'flag'=>$file, 'from_template'=>0)); + } + + icl_cache_clear(); + break; + case 'icl_support_update_ticket': + if (isset($_POST['ticket'])) { + $temp = str_replace('icl_support_ticket_', '', $_POST['ticket']); + $temp = explode('_', $temp); + $id = (int)$temp[0]; + $num = (int)$temp[1]; + if ($id && $num) { + if (isset($iclsettings['icl_support']['tickets'][$id])) { + $iclsettings['icl_support']['tickets'][$id]['messages'] = $num; + $this->save_settings($iclsettings); + } + } + } + break; + case 'icl_custom_tax_sync_options': + foreach($_POST['icl_sync_tax'] as $k=>$v){ + $iclsettings['taxonomies_sync_option'][$k] = $v; + if($v){ + $this->verify_taxonomy_translations($k); + } + } + $this->save_settings($iclsettings); + echo '1|'; + break; + case 'icl_custom_posts_sync_options': + if(!empty($_POST['icl_sync_custom_posts'])){ + foreach($_POST['icl_sync_custom_posts'] as $k=>$v){ + $iclsettings['custom_posts_sync_option'][$k] = $v; + if($v){ + $this->verify_post_translations($k); + } + } + $this->save_settings($iclsettings); + } + echo '1|'; + break; + + case 'copy_from_original': + $post_id = $wpdb->get_var($wpdb->prepare("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND language_code=%s", $_POST['trid'], $_POST['lang'])); + $post = get_post($post_id); + + $error = false; + $json = array(); + if(!empty($post)){ + if($_POST['editor_type'] == 'rich'){ + $json['body'] = htmlspecialchars_decode(wp_richedit_pre($post->post_content)); + }else{ + $json['body'] = htmlspecialchars_decode(wp_htmledit_pre($post->post_content)); + } + + }else{ + $json['error'] = __('Post not found', 'sitepress'); + } + do_action('icl_copy_from_original', $post_id); + echo json_encode($json); + break; + + case 'save_user_preferences': + $this->user_preferences = array_merge_recursive((array)$this->user_preferences, $_POST['user_preferences']); + $this->save_user_preferences(); + break; + + case 'wpml_cf_translation_preferences': + if (empty($_POST['custom_field'])) { + echo '' + . __('Error: No custom field', 'wpml') . ''; + die(); + } + $_POST['custom_field'] = @strval($_POST['custom_field']); + if (!isset($_POST['translate_action'])) { + echo '' + . __('Error: Please provide translation action', 'wpml') . ''; + die(); + } + $_POST['translate_action'] = @intval($_POST['translate_action']); + if (defined('WPML_TM_VERSION')) { + global $iclTranslationManagement; + if (!empty($iclTranslationManagement)) { + $iclTranslationManagement->settings['custom_fields_translation'][$_POST['custom_field']] = $_POST['translate_action']; + $iclTranslationManagement->save_settings(); + echo '' . __('Settings updated', 'wpml') . ''; + } else { + echo '' + . __('Error: WPML Translation Management plugin not initiated', 'wpml') + . ''; + } + } else { + echo '' + . __('Error: Please activate WPML Translation Management plugin', 'wpml') + . ''; + } + break; + + default: + do_action('icl_ajx_custom_call', $_REQUEST['icl_ajx_action'], $_REQUEST); +} + +if (!isset($_POST['unit-test'])) { + exit; +} diff --git a/wp-content/plugins/sitepress-multilingual-cms/docs/theme-integration/readme.txt b/wp-content/plugins/sitepress-multilingual-cms/docs/theme-integration/readme.txt new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/plugins/sitepress-multilingual-cms/docs/theme-integration/wpml-integration.php b/wp-content/plugins/sitepress-multilingual-cms/docs/theme-integration/wpml-integration.php new file mode 100644 index 0000000..300bdca --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/docs/theme-integration/wpml-integration.php @@ -0,0 +1,166 @@ +'.$l['translated_name'].''; + } + echo join(', ', $langs); + echo isset($after) ? $after : ''; + } + } +} + + +// LINKS TO SPECIFIC ELEMENTS +// USAGE +// args: $element_id, $element_type='post', $link_text='', $optional_parameters=array(), $anchor='', $echoit = true +function wpml_link_to_element($element_id, $element_type='post', $link_text='', $optional_parameters=array(), $anchor='', $echoit = true){ + if(!function_exists('icl_link_to_element')){ + switch($element_type){ + case 'post': + case 'page': + $ret = ''; + if($anchor){ + $ret .= $anchor; + }else{ + $ret .= get_the_title($element_id); + } + $ret .= ''; + break; + case 'tag': + case 'post_tag': + $tag = get_term_by('id', $element_id, 'tag', ARRAY_A); + $ret = '' . $tag->name . ''; + case 'category': + $ret = '' . get_the_category_by_ID($element_id) . ''; + default: $ret = ''; + } + if($echoit){ + echo $ret; + }else{ + return $ret; + } + }else{ + return icl_link_to_element($element_id, $element_type, $link_text, $optional_parameters, $anchor, $echoit); + } +} + +// Languages links to display in the footer +// +function wpml_languages_list($skip_missing=0, $div_id = "footer_language_list"){ + if(function_exists('icl_get_languages')){ + $languages = icl_get_languages('skip_missing='.intval($skip_missing)); + if(!empty($languages)){ + echo '
                  '; + } + } +} + +function wpml_languages_selector(){ + do_action('icl_language_selector'); +} + +function wpml_t($context, $name, $original_value){ + if(function_exists('icl_t')){ + return icl_t($context, $name, $original_value); + }else{ + return $original_value; + } +} + +function wpml_register_string($context, $name, $value){ + if(function_exists('icl_register_string') && trim($value)){ + icl_register_string($context, $name, $value); + } +} + +function wpml_get_object_id($element_id, $element_type='post', $return_original_if_missing=false, $ulanguage_code=null){ + if(function_exists('icl_object_id')){ + return icl_object_id($element_id, $element_type, $return_original_if_missing, $ulanguage_code); + }else{ + return $element_id; + } +} + +function wpml_default_link($anchor){ + global $sitepress; + $qv = false; + + if(is_single()){ + $qv = 'p=' . get_the_ID(); + }elseif(is_page()){ + $qv = 'page_id=' . get_the_ID(); + }elseif(is_tag()){ + $tag = &get_term(intval( get_query_var('tag_id') ), 'post_tag', OBJECT, 'display'); + $qv = 'tag=' . $tag->slug; + }elseif(is_category()){ + $qv = 'cat=' . get_query_var('cat'); + }elseif(is_year()){ + $qv = 'year=' . get_query_var('year'); + }elseif(is_month()){ + $qv = 'm=' . get_query_var('year') . sprintf('%02d', get_query_var('monthnum')); + }elseif(is_day()){ + $qv = 'm=' . get_query_var('year') . sprintf('%02d', get_query_var('monthnum')) . sprintf('%02d', get_query_var('day')); + }elseif(is_search()){ + $qv = 's=' . get_query_var('s'); + }elseif(is_tax()){ + $qv = get_query_var('taxonomy') . '=' . get_query_var('term'); + } + + if(false !== strpos(wpml_get_home_url(),'?')){ + $url_glue = '&'; + }else{ + $url_glue = '?'; + } + + if($qv){ + $link = '' . esc_html($anchor) . ''; + }else{ + $link = ''; + } + + return $link; +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/absolute-links/absolute-links.class.php b/wp-content/plugins/sitepress-multilingual-cms/inc/absolute-links/absolute-links.class.php new file mode 100644 index 0000000..8b37bb8 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/absolute-links/absolute-links.class.php @@ -0,0 +1,374 @@ +init_query_vars(); + } + + function init_query_vars(){ + global $wp_post_types, $wp_taxonomies; + + //custom posts query vars + foreach($wp_post_types as $k=>$v){ + if(in_array($k, array('post','page'))){ + continue; + } + if($v->query_var){ + $this->custom_post_query_vars[$k] = $v->query_var; + } + } + //taxonomies query vars + foreach($wp_taxonomies as $k=>$v){ + if(in_array($k, array('category'))){ + continue; + } + if($k == 'post_tag' && !$v->query_var){ + $v->query_var = $tag_base = get_option('tag_base') ? $tag_base : 'tag'; + } + if($v->query_var){ + $this->taxonomies_query_vars[$k] = $v->query_var; + } + } + + } + + function _process_generic_text($text, &$alp_broken_links){ + global $wpdb, $wp_rewrite; + global $sitepress, $sitepress_settings; + + if(!isset($wp_rewrite)){ + require_once ABSPATH . WPINC . '/rewrite.php'; + $wp_rewrite = new WP_Rewrite(); + } + + $rewrite = $wp_rewrite->wp_rewrite_rules(); + + $home_url = $sitepress->language_url(empty($_POST['icl_post_language'])?false:$_POST['icl_post_language']); + $home_url = str_replace("?", "\?", $home_url); + + $int1 = preg_match_all('@]*)href="(('.rtrim($home_url,'/').')?/([^"^>]+))"([^>]*)>@i',$text,$alp_matches1); + $int2 = preg_match_all('@]*)href=\'(('.rtrim($home_url,'/').')?/([^\'^>]+))\'([^>]*)>@i',$text,$alp_matches2); + for($i = 0; $i < 6; $i++){ + $alp_matches[$i] = array_merge((array)$alp_matches1[$i], (array)$alp_matches2[$i]); + } + $sitepress_settings = $sitepress->get_settings(); + + if($int1 || $int2){ + $url_parts = parse_url(rtrim(get_option('home'),'/').'/'); + foreach($alp_matches[4] as $k=>$m){ + if(0===strpos($m,'wp-content')) continue; + + if($sitepress_settings['language_negotiation_type']==1){ + $m_orig = $m; + $exp = explode('/', $m, 2); + $lang = $exp[0]; + if($wpdb->get_var("SELECT code FROM {$wpdb->prefix}icl_languages WHERE code='{$lang}'")){ + $m = $exp[1]; + }else{ + $m = $m_orig; + unset($m_orig); + $lang = false; + } + } + + $pathinfo = ''; + $req_uri = '/' . $m; + $req_uri_array = explode('?', $req_uri); + $req_uri = $req_uri_array[0]; + $req_uri_params = ''; + if (isset($req_uri_array[1])) { + $req_uri_params = $req_uri_array[1]; + } + // separate anchor + $req_uri_array = explode('#', $req_uri); + $req_uri = $req_uri_array[0]; + $anchor = isset($req_uri_array[1]) ? $req_uri_array[1] : false; + $self = '/index.php'; + $home_path = parse_url(get_option('home')); + if ( isset($home_path['path']) ) + $home_path = $home_path['path']; + else + $home_path = ''; + $home_path = trim($home_path, '/'); + + $req_uri = str_replace($pathinfo, '', rawurldecode($req_uri)); + $req_uri = trim($req_uri, '/'); + $req_uri = preg_replace("|^$home_path|", '', $req_uri); + $req_uri = trim($req_uri, '/'); + $pathinfo = trim($pathinfo, '/'); + $pathinfo = preg_replace("|^$home_path|", '', $pathinfo); + $pathinfo = trim($pathinfo, '/'); + $self = trim($self, '/'); + $self = preg_replace("|^$home_path|", '', $self); + $self = trim($self, '/'); + + if ( ! empty($pathinfo) && !preg_match('|^.*' . $wp_rewrite->index . '$|', $pathinfo) ) { + $request = $pathinfo; + } else { + // If the request uri is the index, blank it out so that we don't try to match it against a rule. + if ( $req_uri == $wp_rewrite->index ) + $req_uri = ''; + $request = $req_uri; + } + + $this_request = $request; + + $request_match = $request; + + $perma_query_vars = array(); + + foreach ( (array) $rewrite as $match => $query) { + + // If the requesting file is the anchor of the match, prepend it + // to the path info. + if ((! empty($req_uri)) && (strpos($match, $req_uri) === 0) && ($req_uri != $request)) { + $request_match = $req_uri . '/' . $request; + } + + if (preg_match("!^$match!", $request_match, $matches) || + preg_match("!^$match!", urldecode($request_match), $matches)) { + // Got a match. + $matched_rule = $match; + + // Trim the query of everything up to the '?'. + $query = preg_replace("!^.+\?!", '', $query); + + // Substitute the substring matches into the query. + $query = addslashes(WP_MatchesMapRegex::apply($query, $matches)); + + $matched_query = $query; + + // Parse the query. + parse_str($query, $perma_query_vars); + + break; + } + } + + $post_name = $category_name = $tax_name = false; + + if(isset($perma_query_vars['pagename'])){ + $page_by_path = get_page_by_path($perma_query_vars['pagename']); + + if(!empty($page_by_path->post_type)){ + $post_name = $perma_query_vars['pagename']; + $post_type = 'page'; + }else{ + $post_name = $perma_query_vars['pagename']; + $post_type = 'post'; + } + + }elseif(isset($perma_query_vars['name'])){ + $post_name = $perma_query_vars['name']; + $post_type = 'post'; + }elseif(isset($perma_query_vars['category_name'])){ + $category_name = $perma_query_vars['category_name']; + }elseif(isset($perma_query_vars['p'])){ // case or /archives/%post_id + $p = $perma_query_vars['p']; + list($post_type, $post_name) = $wpdb->get_row($wpdb->prepare( + "SELECT post_type, post_name FROM {$wpdb->posts} WHERE id=%d", $perma_query_vars['p']), ARRAY_N); + }else{ + foreach($this->custom_post_query_vars as $k=>$v){ + if(isset($perma_query_vars[$v])){ + $post_name = $perma_query_vars[$v]; + $post_type = $k; + $post_qv = $v; + break; + } + } + foreach($this->taxonomies_query_vars as $k=>$v){ + if(isset($perma_query_vars[$v])){ + $tax_name = $perma_query_vars[$v]; + $tax_type = $v; + break; + } + } + } + + if($post_name){ + $p = get_page_by_path($post_name, OBJECT, $post_type); + + if(empty($p)){ // fail safe + if($post_id = url_to_postid($home_path . '/' . $post_name)){ + $p = get_post($post_id); + } + } + + //$name = $wpdb->escape($post_name); + //$post_type = isset($perma_query_vars['pagename']) ? 'page' : 'post'; + //$p = $wpdb->get_row("SELECT ID, post_type FROM {$wpdb->posts} WHERE post_name='{$name}' AND post_type ='{$post_type}'"); + + if($p){ + if($post_type=='page'){ + $qvid = 'page_id'; + }else{ + $qvid = 'p'; + } + if($sitepress_settings['language_negotiation_type']==1 && $lang){ + $langprefix = '/' . $lang; + }else{ + $langprefix = ''; + } + $perm_url = '('.rtrim($home_url,'/') . ')?' . $langprefix .'/'. str_replace('?', '\?', $m); + $regk = '@href=["\']('.$perm_url.')["\']@i'; + if ($anchor){ + $anchor = "#".$anchor; + } else { + $anchor = ""; + } + // check if this is an offsite url + if($p->post_type=='page' && $offsite_url = get_post_meta($p->ID, '_cms_nav_offsite_url', true)){ + $regv = 'href="'.$offsite_url.$anchor.'"'; + }else{ + $regv = 'href="' . '/' . ltrim($url_parts['path'],'/') . '?' . $qvid . '=' . $p->ID; + if ($req_uri_params != '') { + $regv .= '&' . $req_uri_params; + } + $regv .= $anchor.'"'; + } + $def_url[$regk] = $regv; + }else{ + $alp_broken_links[$alp_matches[2][$k]] = array(); + $name = $wpdb->escape($post_name); + $p = $wpdb->get_results("SELECT ID, post_type FROM {$wpdb->posts} WHERE post_name LIKE '{$name}%' AND post_type IN('post','page')"); + if($p){ + foreach($p as $post_suggestion){ + if($post_suggestion->post_type=='page'){ + $qvid = 'page_id'; + }else{ + $qvid = 'p'; + } + $alp_broken_links[$alp_matches[2][$k]]['suggestions'][] = array( + 'absolute'=> '/' . ltrim($url_parts['path'],'/') . '?' . $qvid . '=' . $post_suggestion->ID, + 'perma'=> '/'. ltrim(str_replace(get_option('home'),'',get_permalink($post_suggestion->ID)),'/'), + ); + } + } + } + }elseif($category_name){ + if(false !== strpos($category_name, '/')){ + $splits = explode('/', $category_name); + $category_name = array_pop($splits); + $category_parent = array_pop($splits); + $category_parent_id = $wpdb->get_var($wpdb->prepare("SELECT term_id FROM {$wpdb->terms} WHERE slug=%s", $category_parent)); + $c = $wpdb->get_row($wpdb->prepare("SELECT t.term_id FROM {$wpdb->terms} t JOIN {$wpdb->term_taxonomy} x ON x.term_id=t.term_id AND x.taxonomy='category' AND x.parent=%d AND t.slug=%s", $category_parent_id, $category_name)); + }else{ + $c = $wpdb->get_row($wpdb->prepare("SELECT term_id FROM {$wpdb->terms} WHERE slug=%s", $category_name)); + } + if($c){ + /* not used ?? */ + if($sitepress_settings['language_negotiation_type']==1 && $lang){ + $langprefix = '/' . $lang; + }else{ + $langprefix = ''; + } + /* not used ?? */ + $perm_url = '('.rtrim($home_url,'/') . ')?' . $langprefix .'/'.$m; + $regk = '@href=[\'"]('.$perm_url.')[\'"]@i'; + $url_parts = parse_url(rtrim(get_option('home'),'/').'/'); + $regv = 'href="' . '/' . ltrim($url_parts['path'],'/') . '?cat_ID=' . $c->term_id.'"'; + $def_url[$regk] = $regv; + }else{ + $alp_broken_links[$alp_matches[2][$k]] = array(); + $c = $wpdb->get_results("SELECT term_id FROM {$wpdb->terms} WHERE slug LIKE '{$name}%'"); + if($c){ + foreach($c as $cat_suggestion){ + $alp_broken_links[$alp_matches[2][$k]]['suggestions'][] = array( + 'absolute'=>'?cat_ID=' . $cat_suggestion->term_id, + 'perma'=> '/'. ltrim(str_replace(get_option('home'),'',get_category_link($cat_suggestion->term_id)),'/') + ); + } + } + } + }elseif($tax_name){ + + if($sitepress_settings['language_negotiation_type']==1 && $lang){ + $langprefix = '/' . $lang; + }else{ + $langprefix = ''; + } + + $perm_url = '('.rtrim($home_url,'/') . ')?' . $langprefix .'/'.$m; + $regk = '@href=["\']('.$perm_url.')["\']@i'; + if ($anchor){ + $anchor = "#".$anchor; + } else { + $anchor = ""; + } + + $regv = 'href="' . '/' . ltrim($url_parts['path'],'/') . '?' . $tax_type . '=' . $tax_name.$anchor.'"'; + $def_url[$regk] = $regv; + + } + } + + if(!empty($def_url)){ + $text = preg_replace(array_keys($def_url),array_values($def_url),$text); + + } + + $tx_qvs = !empty($this->taxonomies_query_vars) && is_array($this->taxonomies_query_vars) ? '|' . join('|',$this->taxonomies_query_vars) : ''; + $post_qvs = !empty($this->custom_posts_query_vars) && is_array($this->custom_posts_query_vars) ? '|' . join('|',$this->custom_posts_query_vars) : ''; + $int = preg_match_all('@href=[\'"]('.rtrim(get_option('home'),'/').'/?\?(p|page_id'.$tx_qvs.$post_qvs.')=([0-9a-z-]+)(#.+)?)[\'"]@i',$text,$matches2); + if($int){ + $url_parts = parse_url(rtrim(get_option('home'),'/').'/'); + $text = preg_replace('@href=[\'"]('. rtrim(get_option('home'),'/') .'/?\?(p|page_id'.$tx_qvs.$post_qvs.')=([0-9a-z-]+)(#.+)?)[\'"]@i', 'href="'.'/' . ltrim($url_parts['path'],'/').'?$2=$3$4"', $text); + } + + + } + + return $text; + } + + + function process_string($st_id, $translation=true){ + global $wpdb; + if($st_id){ + if($translation){ + $string_value = $wpdb->get_var("SELECT value FROM {$wpdb->prefix}icl_string_translations WHERE id=" . $st_id); + }else{ + $string_value = $wpdb->get_var("SELECT value FROM {$wpdb->prefix}icl_strings WHERE id=" . $st_id); + } + $alp_broken_links = array(); + $string_value_up = $this->_process_generic_text($string_value, $alp_broken_links); + if($string_value_up != $string_value){ + if($translation){ + $wpdb->update($wpdb->prefix . 'icl_string_translations', array('value'=>$string_value_up), array('id'=>$st_id)); + }else{ + $wpdb->update($wpdb->prefix . 'icl_strings', array('value'=>$string_value_up), array('id'=>$st_id)); + } + } + } + } + + function process_post($post_id){ + global $wpdb, $wp_rewrite; + global $sitepress; + + + delete_post_meta($post_id,'_alp_broken_links'); + + $post = $wpdb->get_row("SELECT * FROM {$wpdb->posts} WHERE ID={$post_id}"); + $alp_broken_links = array(); + $post_content = $this->_process_generic_text($post->post_content, $alp_broken_links); + + if($post_content != $post->post_content){ + $wpdb->update($wpdb->posts, array('post_content'=>$post_content), array('ID'=>$post_id)); + } + + update_post_meta($post_id,'_alp_processed',time()); + if(!empty($alp_broken_links)){ + update_post_meta($post_id,'_alp_broken_links',$alp_broken_links); + } + } + +} +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/affiliate-info.php b/wp-content/plugins/sitepress-multilingual-cms/inc/affiliate-info.php new file mode 100644 index 0000000..72221a1 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/affiliate-info.php @@ -0,0 +1,15 @@ + diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/cache.php b/wp-content/plugins/sitepress-multilingual-cms/inc/cache.php new file mode 100644 index 0000000..5eb4019 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/cache.php @@ -0,0 +1,85 @@ +data = array(); + $this->name = $name; + $this->cache_to_option = $cache_to_option; + + if ($cache_to_option) { + $this->data = icl_cache_get($name.'_cache_class'); + if ($this->data == false){ + $this->data = array(); + } + } + } + + function get($key) { + if(ICL_DISABLE_CACHE){ + return null; + } + return isset($this->data[$key]) ? $this->data[$key] : false; + } + + function has_key($key){ + if(ICL_DISABLE_CACHE){ + return false; + } + return array_key_exists($key, (array)$this->data); + } + + function set($key, $value) { + if(ICL_DISABLE_CACHE){ + return; + } + $this->data[$key] = $value; + if ($this->cache_to_option) { + icl_cache_set($this->name.'_cache_class', $this->data); + } + } + + function clear() { + $this->data = array(); + if ($this->cache_to_option) { + icl_cache_clear($this->name.'_cache_class'); + } + } +} + +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/comments-translation/functions.php b/wp-content/plugins/sitepress-multilingual-cms/inc/comments-translation/functions.php new file mode 100644 index 0000000..34a5559 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/comments-translation/functions.php @@ -0,0 +1,989 @@ +ID)){ + $this->enable_comments_translation = get_user_meta($current_user->data->ID,'icl_enable_comments_translation',true); + $this->enable_replies_translation = get_user_meta($current_user->data->ID,'icl_enable_replies_translation',true); + + $this->user_language = $sitepress->get_user_admin_language($current_user->data->ID); + if(!$this->user_language){ + $this->user_language = $sitepress_settings['admin_default_language']; + if($this->user_language == '_default_') $this->user_language = $sitepress->get_default_language(); + } + }else{ + $this->is_visitor = true; + $this->user_language = $sitepress->get_current_language(); + } + + /* google translate API is shutting down + if(defined('WP_ADMIN')){ + add_action('show_user_profile', array($this, 'show_user_options')); + add_action('personal_options_update', array($this, 'save_user_options')); + } + */ + + if(defined('WP_ADMIN') && $this->enable_comments_translation){ + add_action('admin_print_scripts', array($this,'js_scripts_setup')); + } + + add_action('manage_comments_nav', array($this,'use_comments_array_filter')); + + add_filter('comments_array', array($this,'comments_array_filter')); + + add_filter('comment_feed_join', array($this, 'comment_feed_join')); + add_filter('query', array($this, 'filter_queries')); + //add_filter('comment_feed_where', array($this, 'comment_feed_where')); + + add_action('delete_comment', array($this, 'delete_comment_actions')); + add_action('wp_set_comment_status', array($this, 'wp_set_comment_status_actions'), 1, 2); + if(isset($_POST['action']) && $_POST['action']=='editedcomment'){ + add_action('transition_comment_status', array($this, 'transition_comment_status_actions'), 1, 3); + } + + + if('comment.php' == $pagenow){ + $row = $wpdb->get_row(" + SELECT c.user_id, t.language_code + FROM {$wpdb->comments} c JOIN {$wpdb->prefix}icl_translations t ON c.comment_ID = t.element_id AND element_type='comment' + WHERE c.comment_ID=".intval($_GET['c']) + ); + $comment_author = $row->user_id; + $comment_lang = $row->language_code; + if($current_user->data->ID == $comment_author && $comment_lang == $this->user_language){ + add_action('admin_head', array($this, 'admin_head_actions')); + } + } + add_action('edit_comment', array($this, 'edit_comment_actions')); + + add_action('comment_form', array($this, 'comment_form_options')); + + //add_action('comment_post', array($this, 'comment_post')); + add_action('wp_insert_comment', array($this, 'wp_insert_comment'), 10, 2); + + if(defined('WP_ADMIN') && $this->enable_comments_translation){ + add_filter('comment_row_actions', array($this,'comment_row_actions'),1, 2); + } + + if(defined('WP_ADMIN')){ + add_filter('comment_text', array($this, 'comment_text_filter_admin')); + }else{ + add_filter('comment_text', array($this, 'comment_text_filter')); + } + + add_filter('xmlrpc_methods',array($this, 'add_custom_xmlrpc_methods')); + + add_filter('get_comments_number', array($this, 'get_comments_number_filter')); + + global $wpml_add_message_translation_callbacks; + $wpml_add_message_translation_callbacks['comment'][] = array($this, 'add_comment_translation'); + + + if(isset($_GET['retry_mtr'])){ + global $wpdb; + $nonce = wp_create_nonce('machine-translation-failed'.$_GET['retry_mtr']); + if($_GET['nonce']==$nonce){ + $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_ID=" . intval($_GET['retry_mtr'])); + $wpdb->query("DELETE FROM {$wpdb->prefix}icl_translations WHERE element_type='comment' AND element_id=" . intval($_GET['retry_mtr'])); + if(defined('WP_ADMIN')){ + wp_redirect(rtrim(preg_replace('@retry_mtr=([0-9]+)&nonce=([0-9a-z]+)@','',$_SERVER['REQUEST_URI']),'?')); + }else{ + add_action('template_redirect', array($this, '__reload_page')); + } + } + } + + require_once ICL_PLUGIN_PATH . '/inc/cache.php'; + $this->icl_comment_count_cache = new icl_cache(); + + add_filter('views_edit-comments', array($this, 'pending_by_language')); + + } + + function pending_by_language($views){ + global $wpdb, $sitepress; + if(isset($views['moderated'])){ + + preg_match('#([0-9]+)#', $views[ 'moderated' ], $matches); + if($matches[1] > 0){ + $results = $wpdb->get_results($wpdb->prepare(" + SELECT tr.language_code, COUNT(tr.element_id) AS c + FROM {$wpdb->comments} c + JOIN {$wpdb->prefix}icl_translations tr ON tr.element_id = c.comment_ID + WHERE c.comment_approved = '0' AND tr.element_type = 'comment' + GROUP BY tr.language_code + HAVING c > 0 + ")); + if(!empty($results)){ + foreach($results as $r){ + $_ldetails = $sitepress->get_language_details($r->language_code); + $lbreak[] = sprintf('%s(%d)', + $sitepress->get_current_language() == $r->language_code ? ' class="current"' : '', + admin_url('edit-comments.php?comment_status=moderated&lang=' . $r->language_code), + $_ldetails['display_name'], $r->c); + } + $views[ 'moderated' ] .= ' - ' . join(', ', $lbreak); + } + + } + + } + + return $views; + } + + function __reload_page(){ + wp_redirect(get_permalink()); + } + + function admin_head_actions(){ + add_meta_box('comment', __('Translate', 'sitepress'), array($this, 'comment_form_options'), 'comment', 'normal', 'high', 1); + } + + function js_scripts_setup(){ + global $pagenow, $sitepress; + if($pagenow == 'index.php' || $pagenow == 'edit-comments.php' || $pagenow == 'post.php'): + $user_lang_info = $sitepress->get_language_details($this->user_language); + ?> + + get_element_trid($comment->comment_ID, 'comment'); + $original_comment_language = $wpdb->get_row(" + SELECT t.language_code, lt.name + FROM {$wpdb->prefix}icl_translations t + JOIN {$wpdb->prefix}icl_languages_translations lt ON t.language_code = lt.language_code + WHERE trid={$ctrid} AND element_type='comment' AND element_id<>{$comment->comment_ID} + AND lt.display_language_code='".$sitepress->get_current_language()."' + "); + if(empty($original_comment_language)){ + return $actions; + } + ?> + +
                  + user_language == $original_comment_language->language_code): ?> + + + name) ?> + +
                  + + + + + + + + +
                  +

                  + + +

                  + get_icl_translation_enabled() || !$sitepress->icl_account_configured()): ?> + professional translation.','sitepress'),'http://wpml.org/?page_id=1169'); ?> + +

                  + + \*\/ ?> +
                  + request($url); + if(!is_wp_error($response) && ($response['response']['code']=='200')){ + $translation = json_decode($response['body']); + $translation = $translation->responseData->translatedText; + }else{ + $ican_google_translation_request_fail_flag = 1; + $translation =''; + } + + return $translation; + */ + } + + + function delete_comment_actions($comment_id){ + global $sitepress; + $trid = $sitepress->get_element_trid($comment_id, 'comment'); + if($trid){ + $translations = $sitepress->get_element_translations($trid, 'comment'); + $sitepress->delete_element_translation($trid, 'comment'); + foreach($translations as $t){ + if(isset($t->element_id) && $t->element_id != $comment_id){ + wp_delete_comment($t->element_id); + } + } + } + } + + function wp_set_comment_status_actions($comment_id, $status){ + global $sitepress; + static $ids_processed = array(); // using this for avoiding the infinite loop + $trid = $sitepress->get_element_trid($comment_id, 'comment'); + if($trid){ + $translations = $sitepress->get_element_translations($trid, 'comment'); + foreach($translations as $t){ + if(isset($t->element_id) && $t->element_id != $comment_id && !in_array($t->element_id,$ids_processed)){ + wp_set_comment_status($t->element_id, $status); + $ids_processed[] = $t->element_id; + } + } + } + } + + function edit_comment_actions($comment_id){ + // we'll use this hook ONLY for updating comments - not for new comments + if($_POST['icl_translate_reply']){ + global $wpdb; + $res = $wpdb->get_row(" + SELECT MD5(c.comment_content)<> ms.md5 AND ms.md5 IS NOT NULL AS updated, ms.to_language + FROM {$wpdb->comments} c + JOIN {$wpdb->prefix}icl_message_status ms ON c.comment_ID + WHERE c.comment_ID = {$comment_id} AND ms.object_type='comment' + "); + if(isset($res->updated) && $res->updated){ + $this->send_comment_to_translation($comment_id, $res->to_language); + } + } + } + + function transition_comment_status_actions($new_status, $old_status, $comment){ + global $sitepress, $wpdb; + $comment_id = $comment->comment_ID; + static $ids_processed_tr = array(); // using this for avoiding the infinite loop + $trid = $sitepress->get_element_trid($comment_id, 'comment'); + if($trid){ + $translations = $sitepress->get_element_translations($trid, 'comment'); + foreach($translations as $t){ + if(isset($t->element_id) && $t->element_id != $comment_id && !in_array($t->element_id,$ids_processed_tr)){ + //wp_set_comment_status($t->element_id, $comment->comment_approved); + $wpdb->update($wpdb->comments, array('comment_approved'=>$comment->comment_approved), array('comment_id'=>$t->element_id)); + $ids_processed_tr[] = $t->element_id; + } + } + } + } + + function comment_form_options(){ + global $wpdb, $post, $userdata, $sitepress; + $user_lang_info = $sitepress->get_language_details($this->user_language); + + if(empty($post)){ //edit comment + global $comment; + $ctrid = $sitepress->get_element_trid($comment->comment_ID, 'comment'); + // original comment language + $comment_language = $wpdb->get_var("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE trid={$ctrid} AND element_type='comment' AND source_language_code IS NULL"); + $post_type = $wpdb->get_var("SELECT post_type FROM {$wpdb->posts} WHERE ID='" . intval($comment->comment_post_ID) . "'"); + $cur_lang = $wpdb->get_var("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE element_id='" . intval($comment->comment_post_ID) . "' AND element_type='post_{$post_type}'"); + }else{ // add new comment on front end + $cur_lang = $sitepress->get_current_language(); + $comment_language = $sitepress->get_current_language(); + } + + $page_lang_info = $wpdb->get_var(" + SELECT name + FROM {$wpdb->prefix}icl_languages_translations + WHERE language_code='".$cur_lang."' AND display_language_code='".$this->user_language."' + "); + + if($sitepress->have_icl_translator($this->user_language, $cur_lang)){ + $disabled = ''; + }else{ + $disabled = ' disabled="disabled"'; + } + ?> + + + + enable_replies_translation && $userdata->user_level > 7 && $user_lang_info['code'] != $cur_lang): ?> + + + comment_ID; + } + + if($this->is_visitor){ + // get comments in visitor's language + if(!empty($cids)){ + $comment_ids = $wpdb->get_col(" + SELECT element_id + FROM {$wpdb->prefix}icl_translations + WHERE element_type='comment' AND element_id IN(".join(',', $cids).") + AND language_code = '{$this->user_language}' + "); + foreach($comments as $k=>$c){ + if(!in_array($c->comment_ID , (array)$comment_ids)){ + unset($comments[$k]); + } + } + } + }elseif(!$this->enable_comments_translation){ + // show only original comments regardless of the user language + if(!empty($cids)){ + $comment_ids = $wpdb->get_col(" + SELECT element_id + FROM {$wpdb->prefix}icl_translations + WHERE element_type='comment' AND element_id IN(".join(',', $cids).") + AND source_language_code IS NULL + "); + } + foreach($comments as $k=>$c){ + if(!in_array($c->comment_ID , (array)$comment_ids)){ + unset($comments[$k]); + } + } + + + + //filter for this language + /* + if(!empty($cids)){ + $comment_ids = $wpdb->get_col(" + SELECT element_id + FROM {$wpdb->prefix}icl_translations + WHERE element_type='comment' AND element_id IN(".join(',', $cids).") + AND language_code='{$this->user_language}' + "); + } + + if($comments){ + $_trids = $wpdb->get_col("SELECT DISTINCT trid FROM {$wpdb->prefix}icl_translations WHERE element_type='comment' AND element_id IN(".join(",",$cids).")"); + $_ttrids = $wpdb->get_col("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_type='comment' AND trid IN(".join(",",$_trids).") AND language_code='{$this->user_language}'"); + $_utrids = array_diff($_trids, $_ttrids); + if(!empty($_utrids)){ + $_untranslated_elids = $wpdb->get_col("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE element_type='comment' AND trid IN(".join(",",$_utrids).") AND source_language_code IS NULL"); + } + } + foreach($comments as $k=>$c){ + if(!in_array($c->comment_ID , (array)$comment_ids) && !in_array($c->comment_ID, (array)$_untranslated_elids)){ + unset($comments[$k]); + } + } + */ + + }else{ + foreach($comments as $c){ + $comment_ids[] = $c->comment_ID; + $comments_by_id[$c->comment_ID] = $c; + } + + $trids = $wpdb->get_col(" + SELECT DISTINCT trid + FROM {$wpdb->prefix}icl_translations + WHERE element_type='comment' AND element_id IN (".join(',',$comment_ids).") + "); + + // filter comments in the user's language + $translated_comments_trids = array(0); + if(!empty($trids)){ + $res = $wpdb->get_results(" + SELECT element_id, trid + FROM {$wpdb->prefix}icl_translations + WHERE element_type='comment' AND trid IN (".join(',',$trids).") AND language_code = '{$this->user_language}' + "); + foreach($res as $row){ + $comments_in_the_users_language[] = $row->element_id; + $translated_comments_trids[] = $row->trid; + } + } + $comments_not_translated_trids = array_diff($trids, $translated_comments_trids); + + if($comments_not_translated_trids){ + $comments_not_translated = $wpdb->get_col(" + SELECT element_id + FROM {$wpdb->prefix}icl_translations + WHERE element_type='comment' AND trid IN (".join(',',$comments_not_translated_trids).") AND language_code <> '{$this->user_language}' + "); + } + if(!empty($comments_not_translated)){ + $res = $wpdb->get_results(" + SELECT element_id, trid, language_code + FROM {$wpdb->prefix}icl_translations + WHERE element_type='comment' AND element_id IN (".join(',',$comments_not_translated).") + "); + + + $wp_comments_cols = array_keys($wpdb->get_row("SELECT * FROM {$wpdb->comments} LIMIT 1", ARRAY_A)); + + foreach($res as $original_comment){ + $comment_content = $comments_by_id[$original_comment->element_id]->comment_content; + $machine_translation = $this->machine_translate($original_comment->language_code, $this->user_language, $comment_content); + $comment_new = clone $comments_by_id[$original_comment->element_id]; + $comment_new->comment_content = $machine_translation; + + unset($comment_new->comment_ID); + $wpdb->insert($wpdb->comments, array_intersect_key((array)$comment_new, array_flip($wp_comments_cols))); + $new_comment_id = $wpdb->insert_id; + $sitepress->set_element_language_details($new_comment_id, 'comment', $original_comment->trid, $this->user_language); + $comment_new->comment_ID = $new_comment_id; + if($original_comment_parent = $comments_by_id[$original_comment->element_id]->comment_parent){ + // check for the comment parent in the user language + $cptrid = $sitepress->get_element_trid($original_comment_parent, 'comment'); + $comment_new->comment_parent = $wpdb->get_var("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE trid={$cptrid} AND element_type='comment' AND language_code='{$this->user_language}'"); + $wpdb->update($wpdb->comments, array('comment_parent'=>$comment_new->comment_parent), array('comment_ID'=>$new_comment_id)); + } + + if(!$machine_translation){ + $nonce = wp_create_nonce('machine-translation-failed'.$new_comment_id); + $comment_new->comment_content = '' . sprintf(__('Machine translation failed. retry','sitepress'), ' onclick="icl_retry_mtr(this)" id="icl_retry_mtr_'.$comment_new->comment_ID.'_'.$nonce.'" href="#"') . ''; + $wpdb->update($wpdb->comments, array('comment_content'=>$comment_new->comment_content), array('comment_ID'=>$new_comment_id)); + } + + $comments_in_the_users_language[] = $new_comment_id; + $comments[] = $comment_new; + } + + } + + //filter out comments in other languages than the user's + foreach((array)$comments as $k=>$c){ + if(!in_array($c->comment_ID , (array)$comments_in_the_users_language)){ + unset($comments[$k]); + } + } + + } + return array_values($comments); + } + + function use_comments_array_filter(){ + global $comments; + $comments = $this->comments_array_filter($comments); + } + + function comment_feed_join($join){ + global $wpdb, $sitepress; + $lang = $this->enable_comments_translation ? $this->user_language : $sitepress->get_current_language(); + $join .= " JOIN {$wpdb->prefix}icl_translations tc ON {$wpdb->comments}.comment_ID = tc.element_id AND tc.element_type='comment' AND tc.language_code='{$lang}'"; + return $join; + } + + function filter_queries($sql){ + global $pagenow, $wpdb; + static $_untranslated_elids; + if($pagenow == 'index.php'){ + if(preg_match('#SELECT \* FROM (.+)comments ORDER BY comment_date_gmt DESC LIMIT ([0-9]+), ([0-9]+)#i',$sql,$matches)){ + $res = mysql_query($sql); + while($row = mysql_fetch_object($res)){ + $comments[] = $row; + } + + if(!$this->enable_comments_translation && $comments){ + // show only original comments regardless of the user language + + foreach($comments as $c){ + $cids[] = $c->comment_ID; + } + $comment_ids = array(0); + if(!empty($cids)){ + $comment_ids = $wpdb->get_col(" + SELECT element_id + FROM {$wpdb->prefix}icl_translations + WHERE element_type='comment' AND element_id IN(".join(',', $cids).") + AND source_language_code IS NULL + "); + if(!empty($comment_ids)){ + $sql = "SELECT * FROM {$matches[1]}comments c + WHERE c.comment_ID IN (".join(',',$comment_ids).") + ORDER BY c.comment_date_gmt DESC LIMIT {$matches[2]}, {$matches[3]}"; + } + } + }else{ + $this->comments_array_filter($comments); + unset($comments); + $sql = " + SELECT * FROM {$matches[1]}comments c + LEFT JOIN {$matches[1]}icl_translations t ON t.element_id=c.comment_ID + WHERE + (t.element_type='comment' AND t.language_code='{$this->user_language}') + ORDER BY c.comment_date_gmt DESC LIMIT {$matches[2]}, {$matches[3]}"; + } + + } + }elseif( isset($_POST['action']) && $_POST['action']=='get-comments' && isset($_POST['mode']) && $_POST['mode']=='single'){ + global $sitepress; + if(preg_match('#SELECT \* FROM (.+)comments USE INDEX \(comment_date_gmt\) WHERE \( comment_approved = \'0\' OR comment_approved = \'1\' \) AND comment_post_ID = \'([0-9]+)\' ORDER BY comment_date_gmt ASC LIMIT ([0-9]+), ([0-9]+)#i',$sql,$matches)){ + $post_type = $wpdb->get_var("SELECT post_type FROM {$wpdb->posts} WHERE ID='{$_POST['post_ID']}'"); + $res = mysql_query("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE element_id={$_POST['post_ID']} AND element_type='post_{$post_type}'"); + $row = mysql_fetch_row($res); + $c_language = $row[0]; + + if($this->enable_comments_translation){ + $res = $wpdb->get_results(" + SELECT element_id, trid FROM {$wpdb->prefix}icl_translations t + JOIN {$wpdb->comments} c ON t.element_id = c.comment_ID AND comment_POST_ID = {$_POST['post_ID']} + WHERE t.element_type='comment' AND language_code='{$c_language}'"); + foreach($res as $r){ + $trids_orig[$r->trid] = $r->element_id; + } + $res = $wpdb->get_results(" + SELECT element_id, trid FROM {$wpdb->prefix}icl_translations t + JOIN {$wpdb->comments} c ON t.element_id = c.comment_ID AND comment_POST_ID = {$_POST['post_ID']} + WHERE t.element_type='comment' AND language_code='{$this->user_language}'"); + foreach($res as $r){ + $trids_tr[$r->trid] = $r->element_id; + } + + $wp_comments_cols = array_keys($wpdb->get_row("SELECT * FROM {$wpdb->comments} LIMIT 1", ARRAY_A)); + foreach($trids_orig as $o_trid=>$o_cid){ + if(!isset($trids_tr[$o_trid])){ + $original_comment = get_comment($trids_orig[$o_trid]); + $machine_translation = $this->machine_translate($c_language, $this->user_language, $original_comment->comment_content); + $comment_new = clone $original_comment; + $comment_new->comment_content = $machine_translation; + unset($comment_new->comment_ID); + $wpdb->insert($wpdb->comments, array_intersect_key((array)$comment_new, array_flip($wp_comments_cols))); + $new_comment_id = $wpdb->insert_id; + $sitepress->set_element_language_details($new_comment_id, 'comment', $o_trid, $this->user_language); + + if($original_comment->comment_parent){ + $cptrid = $sitepress->get_element_trid($original_comment->comment_parent, 'comment'); + $comment_new->comment_parent = $wpdb->get_var("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE trid={$cptrid} AND element_type='comment' AND language_code='{$this->user_language}'"); + $wpdb->update($wpdb->comments, array('comment_parent'=>$comment_new->comment_parent), array('comment_ID'=>$new_comment_id)); + } + + if(!$machine_translation){ + $nonce = wp_create_nonce('machine-translation-failed'.$new_comment_id); + $comment_new->comment_content = '' . sprintf(__('Machine translation failed. retry','sitepress'), ' onclick="icl_retry_mtr(this)" id="icl_retry_mtr_'.$comment_new->comment_ID.'_'.$nonce.'" href="#"') . ''; + $wpdb->update($wpdb->comments, array('comment_content'=>$comment_new->comment_content), array('comment_ID'=>$new_comment_id)); + } + + } + } + + $c_language = $this->user_language; + } + + $sql = " + SELECT * + FROM {$matches[1]}comments c USE INDEX (comment_date_gmt) + JOIN {$matches[1]}icl_translations t ON t.element_id=c.comment_ID + WHERE + t.element_type='comment' AND t.language_code='{$c_language}' AND + ( comment_approved = '0' OR comment_approved = '1' ) AND + comment_post_ID = '{$matches[2]}' + ORDER BY comment_date_gmt ASC + LIMIT {$matches[3]}, {$matches[4]}"; + } + } + return $sql; + } + + /* + function comment_feed_where($where){ + return $where; + } + */ + + function wp_insert_comment($comment_id, $comment_data){ + global $sitepress, $wpdb; + $post_type = $wpdb->get_var("SELECT post_type FROM {$wpdb->posts} WHERE ID=" . intval($_POST['comment_post_ID'])); + if(isset($_POST['icl_user_language'])){ + + if($_POST['icl_translate_reply']){ + $lang = $_POST['icl_user_language']; + // send the comment to translation + $this->send_comment_to_translation($comment_id,$wpdb->get_var(" + SELECT language_code FROM {$wpdb->prefix}icl_translations + WHERE element_type='post_{$post_type}' AND element_id=".intval($_POST['comment_post_ID']))); + }else{ + //$lang = $_POST['icl_comment_language']; + $lang = $wpdb->get_var("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE element_type='post_{$post_type}' AND element_id={$_POST['comment_post_ID']}"); + + // sync comment parent + // look for comment parent in original language and set for the comment that's been added + if(isset($_POST['comment_parent'])){ + $comment_parent = $_POST['comment_parent']; + }else{ + $comment_parent = $_POST['comment_ID']; + } + + if($comment_parent){ + $ctrid = (int)$sitepress->get_element_trid($comment_parent,'comment'); + $original_comment_parent = $wpdb->get_var(" + SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE trid={$ctrid} + AND element_type='comment' AND language_code='{$lang}'"); + $wpdb->update($wpdb->comments, array('comment_parent'=>$original_comment_parent), array('comment_ID'=>$comment_id)); + } + } + }else{ + $comment_post_ID = isset($_POST['comment_post_ID']) ? $_POST['comment_post_ID'] : $comment_data->comment_post_ID; + $lang = $wpdb->get_var($wpdb->prepare("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE element_type='post_{$post_type}' AND element_id=%d", $comment_post_ID)); + if(!$lang){ + $lang = $this->user_language; // just in case + } + } + if(!$lang){ + $lang = $this->user_language; + } + $translation_id = $sitepress->set_element_language_details($comment_id, 'comment', null, $lang); + } + + function send_comment_to_translation($comment_id, $to_language){ + global $wpdb, $sitepress_settings, $sitepress; + + $iclq = new ICanLocalizeQuery($sitepress_settings['site_id'], $sitepress_settings['access_key']); + + $from_lang = $sitepress->get_language_details($this->user_language); + $to_lang = $sitepress->get_language_details($to_language); + $from_lang_server = ICL_Pro_Translation::server_languages_map($from_lang['english_name']); + $to_lang_server = ICL_Pro_Translation::server_languages_map($to_lang['english_name']); + $body = $wpdb->get_var("SELECT comment_content FROM {$wpdb->comments} WHERE comment_ID={$comment_id}"); + $rid = $iclq->cms_create_message($body, $from_lang_server, $to_lang_server); + if($rid > 0){ + // does this comment already exist in the messages status queue? + $msid = $wpdb->get_var("SELECT id FROM {$wpdb->prefix}icl_message_status WHERE object_type='comment' AND object_id={$comment_id}"); + if($msid){ + $wpdb->update($wpdb->prefix.'icl_message_status', + array('rid'=>$rid, 'md5' => md5($body), 'status' => MESSAGE_TRANSLATION_IN_PROGRESS), + array('id' => $msid) + ); + }else{ + $wpdb->insert($wpdb->prefix.'icl_message_status', array( + 'rid' => $rid, + 'object_id' => $comment_id, + 'from_language' => $this->user_language, + 'to_language' => $to_language, + 'md5' => md5($body), + 'object_type' => 'comment', + 'status' => MESSAGE_TRANSLATION_IN_PROGRESS + )); + } + } + } + + function add_comment_translation($object_id, $to_language, $translation){ + global $wpdb, $sitepress, $sitepress_settings; + + $original_comment = $wpdb->get_row(" + SELECT * + FROM {$wpdb->comments} WHERE comment_ID = {$object_id} + ", ARRAY_A); + $new_comment = $original_comment; + + //sync comment parent + if($original_comment['comment_parent']){ + $ctrid = (int)$sitepress->get_element_trid($original_comment['comment_parent'],'comment'); + $new_comment['comment_parent'] = (int) $wpdb->get_var(" + SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE trid={$ctrid} + AND element_type='comment' AND language_code='{$to_language}'"); + } + + $original_comment_id = $original_comment['comment_ID']; + unset($original_comment); + $new_comment['comment_content'] = $translation; + unset($new_comment['comment_ID']); + + //remove_action('wp_insert_comment', array($this, 'wp_insert_comment')); + + //check whether a translation for this comment in this language already exists + $trid = $sitepress->get_element_trid($original_comment_id, 'comment'); + + $existing_comment_id = $wpdb->get_var(" + SELECT element_id FROM {$wpdb->prefix}icl_translations + WHERE trid={$trid} AND element_type='comment' AND language_code='{$to_language}'"); + + if(!$existing_comment_id){ + remove_action('wp_insert_comment', array($this, 'wp_insert_comment')); + $new_id = wp_insert_comment($new_comment); + add_action('wp_insert_comment', array($this, 'wp_insert_comment'), 10, 2); + }else{ + $new_id = $new_comment['comment_ID'] = $existing_comment_id; + remove_action('transition_comment_status', array($this, 'transition_comment_status_actions')); + wp_update_comment($new_comment); + } + + $sitepress->set_element_language_details($new_id, 'comment', $trid, $to_language); + + return 1; //success + } + + function add_custom_xmlrpc_methods($methods){ + //$methods['icanlocalize.notify_comment_translation'] = array($this, 'add_comment_translation'); + return $methods; + } + + function comment_text_filter($comment_text){ + global $sitepress, $comment, $wp_query, $wpdb; + static $comment_ids, $comment_originals, $page_language, $translation_status; + + //if($this->enable_comments_translation && $this->user_language != $sitepress->get_current_language() ){ + if($this->enable_comments_translation){ + // run this block once + if(empty($comment_ids)){ + + $page_language = $wpdb->get_var(" + SELECT name + FROM {$wpdb->prefix}icl_languages_translations + WHERE language_code='".$sitepress->get_current_language()."' AND display_language_code='".$this->user_language."' + "); + + foreach($wp_query->comments as $c){ + $comment_ids[] = (int)$c->comment_ID; + } + $res = $wpdb->get_results(" + SELECT t.element_id, t.trid, ms.status + FROM {$wpdb->prefix}icl_translations t + LEFT JOIN {$wpdb->prefix}icl_message_status ms ON t.element_id=ms.object_id + WHERE t.element_id IN(".join(',',$comment_ids).") AND t.element_type='comment' AND t.language_code <> '".$sitepress->get_current_language()."' AND (ms.object_type='comment' OR ms.object_type IS NULL)"); + foreach($res as $row){ + $tridsmap[$row->trid] = $row->element_id; + if($row->status){ + $translation_status[$row->element_id] = $row->status; + } + + } + if(!empty($tridsmap)){ + $res = $wpdb->get_results(" + SELECT t.trid, c.comment_content + FROM {$wpdb->prefix}icl_translations t + JOIN {$wpdb->comments} c ON t.element_id = c.comment_ID + WHERE t.trid IN(".join(',',array_keys($tridsmap)).") AND t.element_type='comment' AND t.language_code='".$sitepress->get_current_language()."'"); + foreach($res as $row){ + $comment_originals[$tridsmap[$row->trid]] = $row->comment_content; + } + } + } + + $str = ''; + if(isset($comment_originals[$comment->comment_ID])){ + $str .= ''; + } + + if($translation_status[$comment->comment_ID] || isset($comment_originals[$comment->comment_ID])){ + $str .= '

                  '; + } + if(isset($translation_status[$comment->comment_ID])){ + if($translation_status[$comment->comment_ID] == MESSAGE_TRANSLATION_IN_PROGRESS){ + $str .= '' . __('Translation in progress', 'sitepress' ) . ' '; + }elseif($translation_status[$comment->comment_ID] == MESSAGE_TRANSLATION_COMPLETE){ + $str .= '' . __('Translation complete', 'sitepress' ) . ' '; + } + } + if(isset($comment_originals[$comment->comment_ID])){ + $str .= ''. sprintf(__('Comment in %s', 'sitepress'),$page_language).''; + + } + if($translation_status[$comment->comment_ID] || isset($comment_originals[$comment->comment_ID])){ + $str .= '

                  '; + } + + if($str){ + $comment_text .= $str; + } + } + return $comment_text; + } + + function comment_text_filter_admin($comment_text){ + global $comment, $comments, $wpdb; + static $comment_ids, $translation_status; + if(empty($comment_ids) && !empty($comments)){ + + foreach($comments as $c){ + $comment_ids[] = $c->comment_ID; + } + + $res = $wpdb->get_results(" + SELECT t.element_id, ms.status + FROM {$wpdb->prefix}icl_translations t + LEFT JOIN {$wpdb->prefix}icl_message_status ms ON t.element_id=ms.object_id + WHERE t.element_id IN(".join(',',$comment_ids).") AND t.element_type='comment' AND (ms.object_type='comment' OR ms.object_type IS NULL)"); + foreach($res as $row){ + $translation_status[$row->element_id] = $row->status ? $row->status : CMS_REQUEST_WAITING_FOR_PROJECT_CREATION; + } + } + + if(isset($translation_status[$comment->comment_ID])){ + if($translation_status[$comment->comment_ID] == MESSAGE_TRANSLATION_IN_PROGRESS){ + $str = '

                  ' . __('Translation in progress', 'sitepress' ) . '

                  '; + }elseif($translation_status[$comment->comment_ID] == MESSAGE_TRANSLATION_COMPLETE){ + $str = '

                  ' . __('Translation complete', 'sitepress' ) . '

                  '; + } + $comment_text .= $str; + } + + return $comment_text; + } + + function get_comments_number_filter($count){ + + global $wpdb, $post, $sitepress; + static $pre_load_done = false; + $post_type = $wpdb->get_var("SELECT post_type FROM {$wpdb->posts} WHERE ID='{$post->ID}'"); + $details = $sitepress->get_element_language_details($post->ID, 'post_' . $post_type); + if(empty($details)){ + return $count; + } + $post_lang = $details->language_code; + + if (!$pre_load_done && !ICL_DISABLE_CACHE) { + // search previous queries for a group of posts + foreach ($sitepress->queries as $query){ + $pos = strstr($query, 'post_id IN ('); + if ($pos !== FALSE) { + $group = substr($pos, 11); + $group = substr($group, 0, strpos($group, ')') + 1); + + $post_ids = explode(',', substr($group, 1, strlen($group) - 2)); + $counts = array(); + foreach($post_ids as $id) { + $counts[$id] = 0; + } + + $query = + "SELECT c.comment_post_ID FROM {$wpdb->comments} c + JOIN {$wpdb->prefix}icl_translations t ON c.comment_ID = t.element_id AND t.element_type='comment' + WHERE c.comment_post_ID IN {$group} AND c.comment_approved=1 AND t.language_code='{$post_lang}'" ; + $ret = $wpdb->get_results($query); + foreach($ret as $details){ + $counts[$details->comment_post_ID] = $counts[$details->comment_post_ID] + 1; + } + + foreach($counts as $id => $comment_count) { + $this->icl_comment_count_cache->set($id.$post_lang, $comment_count); + } + + break; + } + } + $pre_load_done = true; + } + + $comment_count = $this->icl_comment_count_cache->get($post->ID.$post_lang); + + if ($comment_count === false) { + $comment_count = $wpdb->get_var(" + SELECT COUNT(*) FROM {$wpdb->comments} c + JOIN {$wpdb->prefix}icl_translations t ON c.comment_ID = t.element_id AND t.element_type='comment' + WHERE c.comment_post_ID={$post->ID} AND c.comment_approved=1 AND t.language_code='{$post_lang}' + "); + $this->icl_comment_count_cache->set($post->ID.$post_lang, $comment_count); + } + return $comment_count; + } + +} + +$IclCommentsTranslation = new IclCommentsTranslation(); + +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/comments-translation/google_languages_map.php b/wp-content/plugins/sitepress-multilingual-cms/inc/comments-translation/google_languages_map.php new file mode 100644 index 0000000..fab0ebe --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/comments-translation/google_languages_map.php @@ -0,0 +1,93 @@ +'af', + 'ALBANIAN'=>'sq', + 'AMHARIC'=>'am', + 'ARABIC'=>'ar', + 'ARMENIAN'=>'hy', + 'AZERBAIJANI'=>'az', + 'BASQUE'=>'eu', + 'BELARUSIAN'=>'be', + 'BENGALI'=>'bn', + 'BIHARI'=>'bh', + 'BULGARIAN'=>'bg', + 'BURMESE'=>'my', + 'CATALAN'=>'ca', + 'CHEROKEE'=>'chr', + 'CHINESE'=>'zh', + 'CHINESE_SIMPLIFIED'=>'zh-CN', + 'CHINESE_TRADITIONAL'=>'zh-TW', + 'CROATIAN'=>'hr', + 'CZECH'=>'cs', + 'DANISH'=>'da', + 'DHIVEHI'=>'dv', + 'DUTCH' => 'nl', + 'ENGLISH'=>'en', + 'ESPERANTO'=>'eo', + 'ESTONIAN'=>'et', + 'FILIPINO'=>'tl', + 'FINNISH'=>'fi', + 'FRENCH'=>'fr', + 'GALICIAN'=>'gl', + 'GEORGIAN'=>'ka', + 'GERMAN'=>'de', + 'GREEK'=>'el', + 'GUARANI'=>'gn', + 'GUJARATI'=>'gu', + 'HEBREW'=>'iw', + 'HINDI'=>'hi', + 'HUNGARIAN'=>'hu', + 'ICELANDIC'=>'is', + 'INDONESIAN'=>'id', + 'INUKTITUT'=>'iu', + 'ITALIAN'=>'it', + 'JAPANESE'=>'ja', + 'KANNADA'=>'kn', + 'KAZAKH'=>'kk', + 'KHMER'=>'km', + 'KOREAN'=>'ko', + 'KURDISH'=> 'ku', + 'KYRGYZ'=> 'ky', + 'LAOTHIAN'=> 'lo', + 'LATVIAN'=>'lv', + 'LITHUANIAN'=>'lt', + 'MACEDONIAN'=>'mk', + 'MALAY'=>'ms', + 'MALAYALAM'=>'ml', + 'MALTESE'=>'mt', + 'MARATHI'=>'mr', + 'MONGOLIAN'=>'mn', + 'NEPALI'=>'ne', + 'NORWEGIAN'=>'no', + 'ORIYA'=>'or', + 'PASHTO'=>'ps', + 'PERSIAN'=>'fa', + 'POLISH'=>'pl', + 'PORTUGUESE'=>'pt-PT', + 'PUNJABI'=>'pa', + 'ROMANIAN'=>'ro', + 'RUSSIAN'=>'ru', + 'SANSKRIT'=>'sa', + 'SERBIAN'=>'sr', + 'SINDHI'=>'sd', + 'SINHALESE'=>'si', + 'SLOVAK'=>'sk', + 'SLOVENIAN'=>'sl', + 'SPANISH'=>'es', + 'SWAHILI'=>'sw', + 'SWEDISH'=>'sv', + 'TAJIK'=>'tg', + 'TAMIL'=>'ta', + 'TAGALOG'=>'tl', + 'TELUGU'=>'te', + 'THAI'=>'th', + 'TIBETAN'=>'bo', + 'TURKISH'=>'tr', + 'UKRAINIAN'=>'uk', + 'URDU'=>'ur', + 'UZBEK'=>'uz', + 'UIGHUR'=>'ug', + 'VIETNAMESE'=>'vi', + 'UNKNOWN'=>'' +); +?> \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/constants.php b/wp-content/plugins/sitepress-multilingual-cms/inc/constants.php new file mode 100644 index 0000000..d0fcbf6 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/constants.php @@ -0,0 +1,58 @@ +blogid; + } + + if($blog_id){ + switch_to_blog($blog_id); + update_option('_wpml_inactive', true); + restore_current_blog(); + } + + if(isset($_REQUEST['submit'])){ + wp_redirect(network_admin_url('admin.php?page='.ICL_PLUGIN_FOLDER.'/menu/network.php&updated=true&action=deactivatewpml')); + exit(); + } + + +} + +function icl_network_activate_wpml($blog_id = false){ + + if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'activatewpml'){ + if (empty($_REQUEST['_wpnonce']) || $_REQUEST['_wpnonce'] != wp_create_nonce( 'activatewpml' ) ){ + return; + } + } + + if(empty($blog_id)){ + $blog_id = isset($_REQUEST['id']) ? $_REQUEST['id'] : $wpdb->blogid; + } + + if($blog_id){ + switch_to_blog($blog_id); + delete_option('_wpml_inactive'); + restore_current_blog(); + } + + wp_redirect(network_admin_url('admin.php?page='.ICL_PLUGIN_FOLDER.'/menu/network.php&updated=true&action=activatewpml')); + exit(); + + +} \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/functions-troubleshooting.php b/wp-content/plugins/sitepress-multilingual-cms/inc/functions-troubleshooting.php new file mode 100644 index 0000000..f7f456c --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/functions-troubleshooting.php @@ -0,0 +1,252 @@ +prefix)."%';"; + + $result= mysql_query($sql); + if( $result) + { + while( $row= mysql_fetch_row($result)) + { + //_icl_ts_mysqldump_table_structure($row[0]); + //_icl_ts_mysqldump_table_data($row[0]); + _icl_ts_backup_table($row[0], 0, $fp); + } + } + else + { + echo "/* no tables in $mysql_database */\n"; + } + mysql_free_result($result); + fclose ($fp); + + + if(file_exists($dump_tmp_file)){ + $data = file_get_contents($dump_tmp_file); + @unlink($dump_tmp_file); + }else{ + $data = ob_get_contents(); + ob_end_clean(); + } + + return $data ; +} + +if ( ! defined('ROWS_PER_SEGMENT') ) define('ROWS_PER_SEGMENT', 100); + +function _icl_ts_stow($query_line, $fp) { + if(! @fwrite($fp, $query_line,strlen($query_line))) + die(__('Error writing query:','sitepress') . ' ' . $query_line); +} + +function _icl_ts_backquote($a_name) { + if (!empty($a_name) && $a_name != '*') { + if (is_array($a_name)) { + $result = array(); + reset($a_name); + while(list($key, $val) = each($a_name)) + $result[$key] = '`' . $val . '`'; + return $result; + } else { + return '`' . $a_name . '`'; + } + } else { + return $a_name; + } +} + +function _icl_ts_backup_table($table, $segment = 'none', $fp) { + global $wpdb; + + $table_structure = $wpdb->get_results("DESCRIBE $table"); + if(($segment == 'none') || ($segment == 0)) { + _icl_ts_stow("\n\n", $fp); + _icl_ts_stow("DROP TABLE IF EXISTS " . _icl_ts_backquote($table) . ";\n", $fp); + // Table structure + _icl_ts_stow("\n\n", $fp); + $create_table = $wpdb->get_results("SHOW CREATE TABLE $table", ARRAY_N); + _icl_ts_stow($create_table[0][1] . ' ;', $fp); + _icl_ts_stow("\n\n", $fp); + } + + if(($segment == 'none') || ($segment >= 0)) { + $defs = array(); + $ints = array(); + foreach ($table_structure as $struct) { + if ( (0 === strpos($struct->Type, 'tinyint')) || + (0 === strpos(strtolower($struct->Type), 'smallint')) || + (0 === strpos(strtolower($struct->Type), 'mediumint')) || + (0 === strpos(strtolower($struct->Type), 'int')) || + (0 === strpos(strtolower($struct->Type), 'bigint')) ) { + $defs[strtolower($struct->Field)] = ( null === $struct->Default ) ? 'NULL' : $struct->Default; + $ints[strtolower($struct->Field)] = "1"; + } + } + + + // Batch by $row_inc + + if($segment == 'none') { + $row_start = 0; + $row_inc = ROWS_PER_SEGMENT; + } else { + $row_start = $segment * ROWS_PER_SEGMENT; + $row_inc = ROWS_PER_SEGMENT; + } + + do { + $table_data = $wpdb->get_results("SELECT * FROM $table LIMIT {$row_start}, {$row_inc}", ARRAY_A); + + $entries = 'INSERT INTO ' . _icl_ts_backquote($table) . ' VALUES ('; + // \x08\\x09, not required + $search = array("\x00", "\x0a", "\x0d", "\x1a"); + $replace = array('\0', '\n', '\r', '\Z'); + if($table_data) { + foreach ($table_data as $row) { + $values = array(); + foreach ($row as $key => $value) { + if ($ints[strtolower($key)]) { + // make sure there are no blank spots in the insert syntax, + // yet try to avoid quotation marks around integers + $value = ( null === $value || '' === $value) ? $defs[strtolower($key)] : $value; + $values[] = ( '' === $value ) ? "''" : $value; + } else { + $values[] = "'" . str_replace($search, $replace, $wpdb->escape($value)) . "'"; + } + } + _icl_ts_stow(" \n" . $entries . implode(', ', $values) . ');', $fp); + } + $row_start += $row_inc; + } + } while((count($table_data) > 0) and ($segment=='none')); + } + + if(($segment == 'none') || ($segment < 0)) { + // Create footer/closing comment in SQL-file + _icl_ts_stow("\n", $fp); + } + } // end backup_table() + + + +function icl_reset_wpml($blog_id = false){ + global $wpdb; + + if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'resetwpml'){ + check_admin_referer( 'resetwpml' ); + } + + if(empty($blog_id)){ + $blog_id = isset($_POST['id']) ? $_POST['id'] : $wpdb->blogid; + } + + if($blog_id || !function_exists('is_multisite') || !is_multisite()){ + + if(function_exists('is_multisite') && is_multisite()){ + switch_to_blog($blog_id); + } + + $icl_tables = array( + $wpdb->prefix . 'icl_languages', + $wpdb->prefix . 'icl_languages_translations', + $wpdb->prefix . 'icl_translations', + $wpdb->prefix . 'icl_translation_status', + $wpdb->prefix . 'icl_translate_job', + $wpdb->prefix . 'icl_translate', + $wpdb->prefix . 'icl_locale_map', + $wpdb->prefix . 'icl_flags', + $wpdb->prefix . 'icl_content_status', + $wpdb->prefix . 'icl_core_status', + $wpdb->prefix . 'icl_node', + $wpdb->prefix . 'icl_strings', + $wpdb->prefix . 'icl_string_translations', + $wpdb->prefix . 'icl_string_status', + $wpdb->prefix . 'icl_string_positions', + $wpdb->prefix . 'icl_message_status', + $wpdb->prefix . 'icl_reminders', + ); + + foreach($icl_tables as $icl_table){ + mysql_query("DROP TABLE IF EXISTS " . $icl_table); + } + + delete_option('icl_sitepress_settings'); + delete_option('icl_sitepress_version'); + delete_option('_icl_cache'); + delete_option('_icl_admin_option_names'); + delete_option('wp_icl_translators_cached'); + delete_option('WPLANG'); + + $wpmu_sitewide_plugins = (array) maybe_unserialize( get_site_option( 'active_sitewide_plugins' ) ); + if(!isset($wpmu_sitewide_plugins[ICL_PLUGIN_FOLDER.'/sitepress.php'])){ + deactivate_plugins(basename(ICL_PLUGIN_PATH) . '/sitepress.php'); + $ra = get_option('recently_activated'); + $ra[basename(ICL_PLUGIN_PATH) . '/sitepress.php'] = time(); + update_option('recently_activated', $ra); + }else{ + update_option('_wpml_inactive', true); + } + + + if(isset($_REQUEST['submit'])){ + wp_redirect(network_admin_url('admin.php?page='.ICL_PLUGIN_FOLDER.'/menu/network.php&updated=true&action=resetwpml')); + exit(); + } + + if(function_exists('is_multisite') && is_multisite()){ + restore_current_blog(); + } + + } +} + +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/functions.php b/wp-content/plugins/sitepress-multilingual-cms/inc/functions.php new file mode 100644 index 0000000..776cbc4 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/functions.php @@ -0,0 +1,154 @@ +' . __('Configure', 'sitepress') . ''; + } + return $links; +} + +if(defined('ICL_DEBUG_MODE') && ICL_DEBUG_MODE){ + add_action('admin_notices', '_icl_deprecated_icl_debug_mode'); +} + +function _icl_deprecated_icl_debug_mode(){ + echo '

                  ICL_DEBUG_MODE no longer supported. Please use WP_DEBUG instead.

                  '; +} + + + +function icl_js_escape($str){ + $str = esc_js($str); + $str = htmlspecialchars_decode($str); + return $str; +} + +function icl_nobreak($str){ + return preg_replace("# #", ' ', $str); +} + +function _icl_tax_has_objects_recursive($id, $term_id = -1, $rec = 0){ + // based on the case where two categories were one the parent of another + // eliminating the chance of infinite loops by letting this function calling itself too many times + // 100 is the default limit in most of teh php configuration + // + // this limit this function to work only with categories nested up to 60 levels + // should enough for most cases + if($rec > 60) return false; + + global $wpdb; + + if($term_id === -1){ + $term_id = $wpdb->get_var($wpdb->prepare("SELECT term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id=%d", $id)); + } + + $children = $wpdb->get_results($wpdb->prepare(" + SELECT term_taxonomy_id, term_id, count FROM {$wpdb->term_taxonomy} WHERE parent = %d + ", $term_id)); + + $count = 0; + foreach($children as $ch){ + $count += $ch->count; + } + + if($count){ + return true; + }else{ + foreach($children as $ch){ + if(_icl_tax_has_objects_recursive($ch->term_taxonomy_id, $ch->term_id, $rec+1)){ + return true; + } + } + + } + return false; +} + +function icl_get_post_children_recursive($post, $type = 'page'){ + global $wpdb; + + $post = (array)$post; + + $children = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_type=%s AND post_parent IN (".join(',', $post).")", $type)); + + if(!empty($children)){ + $children = array_merge($children, icl_get_post_children_recursive($children)); + } + + return $children; + +} + +function icl_get_tax_children_recursive($id, $taxonomy = 'category'){ + global $wpdb; + + $id = (array)$id; + + $children = $wpdb->get_col($wpdb->prepare("SELECT term_id FROM {$wpdb->term_taxonomy} x WHERE x.taxonomy=%s AND parent IN (".join(',', $id).")", $taxonomy)); + + if(!empty($children)){ + $children = array_merge($children, icl_get_tax_children_recursive($children)); + } + + return $children; + +} + +function _icl_trash_restore_prompt(){ + global $sitepress; + if(isset($_GET['lang'])){ + $post = get_post(intval($_GET['post'])); + if(isset($post->post_status) && $post->post_status == 'trash'){ + $post_type_object = get_post_type_object( $post->post_type ); + $ret = '

                  '; + $ret .= sprintf(__('This translation is currently in the trash. You need to either delete it permanently or restore it in order to continue.'), + get_delete_post_link($post->ID, '', true) , + wp_nonce_url( admin_url( sprintf( $post_type_object->_edit_link . '&action=untrash', $post->ID ) ), 'untrash-' . $post->post_type . '_' . $post->ID) + ); + $ret .= '

                  '; + wp_die($ret); + } + } +} + +function icl_pop_info($message, $icon='info', $args = array()){ + switch($icon){ + case 'info': + $icon = ICL_PLUGIN_URL . '/res/img/info.png'; + break; + case 'question': + $icon = ICL_PLUGIN_URL . '/res/img/question1.png'; + break; + } + + $defaults = array( + 'icon_size' => 16, + 'but_style' => array() + ); + extract($defaults); + extract($args, EXTR_OVERWRITE); + + ?> +
                  + info +
                  + x + +
                  +
                  + +
                  +

                  This is a development version of WPML, provided for evaluation purposes only. The code you are using did not go through any testing or QA. Do not use it in production sites.

                  +

                  To obtain production versions of WPML, visit: wpml.org.

                  +
                  + diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/language-canonical-redirects.php b/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/language-canonical-redirects.php new file mode 100644 index 0000000..838a61c --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/language-canonical-redirects.php @@ -0,0 +1,18 @@ +posts)){ + global $wpdb; + $pid = get_query_var('p'); + $permalink = html_entity_decode(get_permalink($pid)); + if($permalink){ + wp_redirect($permalink, 301); + exit; + } + } +} +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/language-domains-preview.php b/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/language-domains-preview.php new file mode 100644 index 0000000..b39823f --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/language-domains-preview.php @@ -0,0 +1,25 @@ +get_current_language() != $sitepress->get_default_language()){ + $post_id = $_GET['p']; + $lang = $sitepress->get_current_language(); + $default_home = get_option('home'); + $_GET['lang'] = $lang; + $redir = $default_home . '?' . http_build_query($_GET); + wp_redirect($redir); + exit; +} + +if(isset($_GET['preview']) && $sitepress_settings['language_negotiation_type'] == 2){ + add_filter('icl_current_language', 'icl_current_language_preview_hack_filter'); + function icl_current_language_preview_hack_filter($lang){ + if(isset($_GET['lang'])){ + $lang = esc_html($_GET['lang']); + } + return $lang; + } +} + +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/misc-constants.php b/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/misc-constants.php new file mode 100644 index 0000000..ed27801 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/misc-constants.php @@ -0,0 +1,3 @@ + diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/missing-php-functions.php b/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/missing-php-functions.php new file mode 100644 index 0000000..4719086 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/missing-php-functions.php @@ -0,0 +1,153 @@ +decode($data) ); + } +} + +if(!function_exists('_cleanup_header_comment')){ + function _cleanup_header_comment($str) { + return trim(preg_replace("/\s*(?:\*\/|\?>).*/", '', $str)); + } +} + +/* remove this when we stop supporting WP versions below 3.0 */ +if(!function_exists('wp_get_mu_plugins')){ + function wp_get_mu_plugins() { + $mu_plugins = array(); + if ( !is_dir( WPMU_PLUGIN_DIR ) ) + return $mu_plugins; + if ( ! $dh = opendir( WPMU_PLUGIN_DIR ) ) + return $mu_plugins; + while ( ( $plugin = readdir( $dh ) ) !== false ) { + if ( substr( $plugin, -4 ) == '.php' ) + $mu_plugins[] = WPMU_PLUGIN_DIR . '/' . $plugin; + } + closedir( $dh ); + sort( $mu_plugins ); + + return $mu_plugins; + } +} + + +if(!function_exists('money_format')): +/* +That it is an implementation of the function money_format for the +platforms that do not it bear. + +The function accepts to same string of format accepts for the +original function of the PHP. + +(Sorry. my writing in English is very bad) + +The function is tested using PHP 5.1.4 in Windows XP +and Apache WebServer. +*/ +function money_format($format, $number) +{ + $regex = '/%((?:[\^!\-]|\+|\(|\=.)*)([0-9]+)?'. + '(?:#([0-9]+))?(?:\.([0-9]+))?([in%])/'; + if (setlocale(LC_MONETARY, 0) == 'C') { + setlocale(LC_MONETARY, ''); + } + $locale = localeconv(); + preg_match_all($regex, $format, $matches, PREG_SET_ORDER); + foreach ($matches as $fmatch) { + $value = floatval($number); + $flags = array( + 'fillchar' => preg_match('/\=(.)/', $fmatch[1], $match) ? + $match[1] : ' ', + 'nogroup' => preg_match('/\^/', $fmatch[1]) > 0, + 'usesignal' => preg_match('/\+|\(/', $fmatch[1], $match) ? + $match[0] : '+', + 'nosimbol' => preg_match('/\!/', $fmatch[1]) > 0, + 'isleft' => preg_match('/\-/', $fmatch[1]) > 0 + ); + $width = trim($fmatch[2]) ? (int)$fmatch[2] : 0; + $left = trim($fmatch[3]) ? (int)$fmatch[3] : 0; + $right = trim($fmatch[4]) ? (int)$fmatch[4] : $locale['int_frac_digits']; + $conversion = $fmatch[5]; + + $positive = true; + if ($value < 0) { + $positive = false; + $value *= -1; + } + $letter = $positive ? 'p' : 'n'; + + $prefix = $suffix = $cprefix = $csuffix = $signal = ''; + + $signal = $positive ? $locale['positive_sign'] : $locale['negative_sign']; + switch (true) { + case $locale["{$letter}_sign_posn"] == 1 && $flags['usesignal'] == '+': + $prefix = $signal; + break; + case $locale["{$letter}_sign_posn"] == 2 && $flags['usesignal'] == '+': + $suffix = $signal; + break; + case $locale["{$letter}_sign_posn"] == 3 && $flags['usesignal'] == '+': + $cprefix = $signal; + break; + case $locale["{$letter}_sign_posn"] == 4 && $flags['usesignal'] == '+': + $csuffix = $signal; + break; + case $flags['usesignal'] == '(': + case $locale["{$letter}_sign_posn"] == 0: + $prefix = '('; + $suffix = ')'; + break; + } + if (!$flags['nosimbol']) { + $currency = $cprefix . + ($conversion == 'i' ? $locale['int_curr_symbol'] : $locale['currency_symbol']) . + $csuffix; + } else { + $currency = ''; + } + $space = $locale["{$letter}_sep_by_space"] ? ' ' : ''; + + $value = number_format($value, $right, $locale['mon_decimal_point'], + $flags['nogroup'] ? '' : $locale['mon_thousands_sep']); + $value = @explode($locale['mon_decimal_point'], $value); + + $n = strlen($prefix) + strlen($currency) + strlen($value[0]); + if ($left > 0 && $left > $n) { + $value[0] = str_repeat($flags['fillchar'], $left - $n) . $value[0]; + } + $value = implode($locale['mon_decimal_point'], $value); + if ($locale["{$letter}_cs_precedes"]) { + $value = $prefix . $currency . $space . $value . $suffix; + } else { + $value = $prefix . $value . $space . $currency . $suffix; + } + if ($width > 0) { + $value = str_pad($value, $width, $flags['fillchar'], $flags['isleft'] ? + STR_PAD_RIGHT : STR_PAD_LEFT); + } + + $format = str_replace($fmatch[0], $value, $format); + } + return $format; +} +endif; + +if(!defined('E_DEPRECATED')){ define('E_DEPRECATED', 8192); } + +if(!function_exists('esc_textarea')): + + function esc_textarea( $text ) { + $safe_text = htmlspecialchars( $text, ENT_QUOTES ); + return apply_filters( 'esc_textarea', $safe_text, $text ); + } + +endif; +?> \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/supress-warnings-for-xmlrpc.php b/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/supress-warnings-for-xmlrpc.php new file mode 100644 index 0000000..8b14a0d --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/hacks/supress-warnings-for-xmlrpc.php @@ -0,0 +1,11 @@ + diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/import-xml.php b/wp-content/plugins/sitepress-multilingual-cms/inc/import-xml.php new file mode 100644 index 0000000..b079f6b --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/import-xml.php @@ -0,0 +1,39 @@ +get_active_languages(); + if (empty($langs)) { + return; + } + $default = $sitepress->get_default_language(); + + $out = '

                  ' . __('Select Language', 'sitepress') . '<\/h2>

                  '; + echo '
                  '; + } + + function post_availability($content){ + $out = ''; + if(is_singular()){ + $languages = icl_get_languages('skip_missing=true'); + if(1 < count($languages)){ + //$out .= $this->settings['post_available_before'] ? $this->settings['post_available_before'] : ''; + foreach($languages as $l){ + if(!$l['active']) $langs[] = ''.$l['translated_name'].''; + } + $out .= join(', ', $langs); + //$out .= $this->settings['post_available_after'] ? $this->settings['post_available_after'] : ''; + if(!function_exists('icl_t')){ + function icl_t($c, $n, $str){return $str; } + } + $out = '

                  ' . sprintf(icl_t('WPML', 'Text for alternative languages for posts', $this->settings['icl_post_availability_text']), $out) . '

                  '; + } + } + + $out = apply_filters('icl_post_alternative_languages', $out); + + if ($this->settings['icl_post_availability_position'] == 'above'){ + $content = $out . $content; + }else{ + $content = $content . $out; + } + + return $content; + + } + + function language_selector_footer_style(){ + + $add = false; + foreach($this->footer_css_defaults as $key=>$d){ + if (isset($this->settings['icl_lang_sel_footer_config'][$key]) && $this->settings['icl_lang_sel_footer_config'][$key] != $d){ + $this->settings['icl_lang_sel_footer_config'][$key] . "\n"; + $add = true; + break; + } + } + if($add){ + echo "\n\n"; + } + } + + function language_selector_footer() { + $languages = icl_get_languages('orderby=id&order=asc&skip_missing=0'); + if(!empty($languages)){ + echo ' + '; + } + } + + function admin(){ + foreach($this->color_schemes as $key=>$val): ?> + widget_css_defaults as $k=>$v): ?> + + + + + +
                  + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                   
                   
                  + + + + +
                  + + + +

                • + + +
                • +

                  +
                    +
                  • + +
                  • +
                  +
                • +
                • + + + color_schemes as $key=>$val): ?> + footer_css_defaults as $k=>$v): ?> + + + + + + + settings['icl_lang_sel_footer'])) echo 'style="display:none;" '; ?>> + +
                  +
                • + +
                • +

                  +
                    +
                  • + +
                  • +
                  • + +
                  • +
                  • + +

                    +
                  • +
                  +

                  +
                    +
                  • + +
                  • +
                  +
                • + + + + +widget_css_defaults = $this->widget_css_defaults; + $add = false; + foreach($this->widget_css_defaults as $key=>$d){ + if(isset($this->settings['icl_lang_sel_config'][$key]) && $this->settings['icl_lang_sel_config'][$key] != $d){ + $this->settings['icl_lang_sel_config'][$key] . "\n"; + $add = true; + break; + } + } + if($add){ + $list = ($this->settings['icl_lang_sel_type'] == 'list') ? true : false; + echo "\n\n"; + } + if (isset($this->settings['icl_additional_css']) && !empty($this->settings['icl_additional_css'])) { + echo "\r\n"; + } + } + + function wp_nav_menu_items_filter($items, $args){ + global $sitepress_settings, $sitepress; + + // menu can be passed as integger or object + if(isset($args->menu->term_id)) $args->menu = $args->menu->term_id; + + $abs_menu_id = icl_object_id($args->menu, 'nav_menu', false, $sitepress->get_default_language()); + + if($abs_menu_id == $sitepress_settings['menu_for_ls']){ + + $languages = $sitepress->get_ls_languages(); + + $items .= ''; + + } + + return $items; + } + +} // end class + + + + + +// language switcher functions + function language_selector_widget($args){ + global $sitepress, $sitepress_settings; + extract($args, EXTR_SKIP); + echo $before_widget; + if ($sitepress_settings['icl_widget_title_show']) { + echo $args['before_title']; + _e('Languages','sitepress'); + echo $args['after_title']; + } + $sitepress->language_selector(); + echo $after_widget; + } + + function icl_lang_sel_nav_ob_start(){ + if(is_feed()) return; + ob_start('icl_lang_sel_nav_prepend_css'); + } + + function icl_lang_sel_nav_ob_end(){ + $ob_handlers = ob_list_handlers(); + $active_handler = array_pop( $ob_handlers ); + if($active_handler == 'icl_lang_sel_nav_prepend_css'){ + ob_end_flush(); + } + } + + function icl_lang_sel_nav_prepend_css($buf){ + if(defined('ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS') && ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS){ + return $buf; + } + return preg_replace('##i','' . PHP_EOL . PHP_EOL . icl_lang_sel_nav_css(false), $buf); + } + + function icl_lang_sel_nav_css($show = true){ + if(defined('ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS') && ICL_DONT_LOAD_LANGUAGE_SELECTOR_CSS){ + return ''; + } + $link_tag = ''; + if(!$show && (!isset($_GET['page']) || $_GET['page'] != ICL_PLUGIN_FOLDER . '/menu/languages.php')){ + return $link_tag; + }else{ + echo $link_tag; + } + } + + + + +global $icl_language_switcher; +$icl_language_switcher = new SitePressLanguageSwitcher; \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/not-compatible-plugins.php b/wp-content/plugins/sitepress-multilingual-cms/inc/not-compatible-plugins.php new file mode 100644 index 0000000..791c7dc --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/not-compatible-plugins.php @@ -0,0 +1,75 @@ +
                  • '; + echo __('WPML cannot be activated together with these older plugins:', 'sitepress'); + echo '
                      '; + foreach($icl_ncp_plugins as $incp){ + echo '
                    • '.$incp.'
                    • '; + } + echo '
                    '; + echo __('WPML will be deactivated', 'sitepress'); + echo '
                  '; + } +}else{ + $icl_sitepress_disabled = false; +} + + +if(isset($_GET['page']) && $_GET['page'] == ICL_PLUGIN_FOLDER . '/menu/troubleshooting.php' || isset($pagenow) && $pagenow=='index.php'){ + $icl_ncp_plugins2 = array( + 'wp-no-category-base/no-category-base.php' + ); + $active_plugins = get_option('active_plugins'); + $icl_ncp_plugins2 = array_intersect($icl_ncp_plugins2, $active_plugins); + if(!empty($icl_ncp_plugins2)){ + if(isset($_GET['page']) && $_GET['page'] == ICL_PLUGIN_FOLDER . '/menu/troubleshooting.php'){ + add_action('admin_notices', 'icl_incomp_plugins_warn2'); + function icl_incomp_plugins_warn2(){ + global $icl_ncp_plugins2; + echo '
                  '; + echo __('These plugins are known to have compatibiliy issues with WPML:', 'sitepress'); + echo '
                    '; + foreach($icl_ncp_plugins2 as $incp){ + echo '
                  • '.$incp.'
                  • '; + } + echo '
                  '; + echo '
                  '; + } + }else{ + add_action('icl_dashboard_widget_content_top', 'icl_incomp_plugins_warn_dashboard', 1, 0); + function icl_incomp_plugins_warn_dashboard(){ + echo '
                  '; + printf (__('You are using plugins that are incompatible with WPML - see details.', 'sitepress'), admin_url('admin.php?page='.ICL_PLUGIN_FOLDER.'/menu/troubleshooting.php')); + echo '
                  '; + + } + } + } +} + + diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/php-version-check.php b/wp-content/plugins/sitepress-multilingual-cms/inc/php-version-check.php new file mode 100644 index 0000000..3dcc207 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/php-version-check.php @@ -0,0 +1,58 @@ +
                  • '; + echo __('WPML cannot be activated because your version of PHP is too old. To run correctly, you must have PHP5 installed.
                    We recommend that you contact your hosting company and request them to switch you to PHP5.', 'sitepress'); + echo sprintf('
                    PHP reports version %s - (show detailed phpinfo)',phpversion()); + echo '
                  '; + echo '
                  '; + echo ''; + } + + $active_plugins = get_option('active_plugins'); + $icl_sitepress_idx = array_search(ICL_PLUGIN_FOLDER . '/sitepress.php', $active_plugins); + if(false !== $icl_sitepress_idx){ + unset($active_plugins[$icl_sitepress_idx]); + update_option('active_plugins', $active_plugins); + unset($_GET['activate']); + $recently_activated = get_option('recently_activated'); + if(!isset($recently_activated[ICL_PLUGIN_FOLDER . '/sitepress.php'])){ + $recently_activated[ICL_PLUGIN_FOLDER . '/sitepress.php'] = time(); + update_option('recently_activated', $recently_activated); + } + } + define('PHP_VERSION_INCOMPATIBLE', true); + + function icl_php_version_warn_js(){ + ?> + + + \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/plugins-integration.php b/wp-content/plugins/sitepress-multilingual-cms/inc/plugins-integration.php new file mode 100644 index 0000000..3b8da04 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/plugins-integration.php @@ -0,0 +1,19 @@ +=')){ + if($sitepress_settings['language_negotiation_type'] == 2){ + require ICL_PLUGIN_PATH . '/inc/wpseo-sitemaps-filter.php'; + } + } + + +} + +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/potx.php b/wp-content/plugins/sitepress-multilingual-cms/inc/potx.php new file mode 100644 index 0000000..d36513d --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/potx.php @@ -0,0 +1,1578 @@ + 0 ? substr($file_path, $strip_prefix) : $file_path; + _potx_find_version_number($code, $file_name, $version_callback); + + // Extract raw PHP language tokens. + $raw_tokens = token_get_all($code); + unset($code); + + // Remove whitespace and possible HTML (the later in templates for example), + // count line numbers so we can include them in the output. + $_potx_tokens = array(); + $_potx_lookup = array(); + $token_number = 0; + $line_number = 1; + foreach ($raw_tokens as $token) { + if ((!is_array($token)) || (($token[0] != T_WHITESPACE) && ($token[0] != T_INLINE_HTML))) { + if (is_array($token)) { + $token[] = $line_number; + // Fill array for finding token offsets quickly. + $src_tokens = array( + '__', 'esc_attr__', 'esc_html__', '_e', 'esc_attr_e', 'esc_html_e', + '_x', 'esc_attr_x', 'esc_html_x', '_ex', + '_n', '_nx' + ); + if ($token[0] == T_STRING || ($token[0] == T_VARIABLE && in_array($token[1], $src_tokens))) { + if (!isset($_potx_lookup[$token[1]])) { + $_potx_lookup[$token[1]] = array(); + } + $_potx_lookup[$token[1]][] = $token_number; + } + } + $_potx_tokens[] = $token; + $token_number++; + } + // Collect line numbers. + if (is_array($token)) { + $line_number += count(explode("\n", $token[1])) - 1; + } + else { + $line_number += count(explode("\n", $token)) - 1; + } + } + unset($raw_tokens); + + // Drupal 7 onwards supports context on t(). + if(!empty($src_tokens)) + foreach($src_tokens as $tk){ + _potx_find_t_calls_with_context($file_name, $save_callback, $tk); + } + +} + +/** + * Creates complete file strings with _potx_store() + * + * @param $string_mode + * Strings to generate files for: POTX_STRING_RUNTIME or POTX_STRING_INSTALLER. + * @param $build_mode + * Storage mode used: single, multiple or core + * @param $force_name + * Forces a given file name to get used, if single mode is on, without extension + * @param $save_callback + * Callback used to save strings previously. + * @param $version_callback + * Callback used to save versions previously. + * @param $header_callback + * Callback to invoke to get the POT header. + * @param $template_export_langcode + * Language code if the template should have language dependent content + * (like plural formulas and language name) included. + * @param $translation_export_langcode + * Language code if translations should also be exported. + * @param $api_version + * Drupal API version to work with. + */ +function _potx_build_files($string_mode = POTX_STRING_RUNTIME, $build_mode = POTX_BUILD_SINGLE, $force_name = 'general', $save_callback = '_potx_save_string', $version_callback = '_potx_save_version', $header_callback = '_potx_get_header', $template_export_langcode = NULL, $translation_export_langcode = NULL, $api_version = POTX_API_6) { + global $_potx_store; + + // Get strings and versions by reference. + $strings = $save_callback(NULL, NULL, NULL, 0, $string_mode); + $versions = $version_callback(); + + // We might not have any string recorded in this string mode. + if (!is_array($strings)) { + return; + } + + foreach ($strings as $string => $string_info) { + foreach ($string_info as $context => $file_info) { + // Build a compact list of files this string occured in. + $occured = $file_list = array(); + // Look for strings appearing in multiple directories (ie. + // different subprojects). So we can include them in general.pot. + $last_location = dirname(array_shift(array_keys($file_info))); + $multiple_locations = FALSE; + foreach ($file_info as $file => $lines) { + $occured[] = "$file:". join(';', $lines); + if (isset($versions[$file])) { + $file_list[] = $versions[$file]; + } + if (dirname($file) != $last_location) { + $multiple_locations = TRUE; + } + $last_location = dirname($file); + } + + // Mark duplicate strings (both translated in the app and in the installer). + $comment = join(" ", $occured); + if (strpos($comment, '(dup)') !== FALSE) { + $comment = '(duplicate) '. str_replace('(dup)', '', $comment); + } + $output = "#: $comment\n"; + + if ($build_mode == POTX_BUILD_SINGLE) { + // File name forcing in single mode. + $file_name = $force_name; + } + elseif (strpos($comment, '.info')) { + // Store .info file strings either in general.pot or the module pot file, + // depending on the mode used. + $file_name = ($build_mode == POTX_BUILD_CORE ? 'general' : str_replace('.info', '.module', $file_name)); + } + elseif ($multiple_locations) { + // Else if occured more than once, store in general.pot. + $file_name = 'general'; + } + else { + // Fold multiple files in the same folder into one. + if (empty($last_location) || $last_location == '.') { + $file_name = 'root'; + } + else { + $file_name = str_replace('/', '-', $last_location); + } + } + + + if (strpos($string, "\0") !== FALSE) { + // Plural strings have a null byte delimited format. + list($singular, $plural) = explode("\0", $string); + $output .= "msgid \"$singular\"\n"; + $output .= "msgid_plural \"$plural\"\n"; + if (!empty($context)) { + $output .= "msgctxt \"$context\"\n"; + } + if (isset($translation_export_langcode)) { + $output .= _potx_translation_export($translation_export_langcode, $singular, $plural, $api_version); + } + else { + $output .= "msgstr[0] \"\"\n"; + $output .= "msgstr[1] \"\"\n"; + } + } + else { + // Simple strings. + $output .= "msgid \"$string\"\n"; + if (!empty($context)) { + $output .= "msgctxt \"$context\"\n"; + } + if (isset($translation_export_langcode)) { + $output .= _potx_translation_export($translation_export_langcode, $string, NULL, $api_version); + } + else { + $output .= "msgstr \"\"\n"; + } + } + $output .= "\n"; + + // Store the generated output in the given file storage. + if (!isset($_potx_store[$file_name])) { + $_potx_store[$file_name] = array( + 'header' => $header_callback($file_name, $template_export_langcode, $api_version), + 'sources' => $file_list, + 'strings' => $output, + 'count' => 1, + ); + } + else { + // Maintain a list of unique file names. + $_potx_store[$file_name]['sources'] = array_unique(array_merge($_potx_store[$file_name]['sources'], $file_list)); + $_potx_store[$file_name]['strings'] .= $output; + $_potx_store[$file_name]['count'] += 1; + } + } + } +} + +/** + * Export translations with a specific language. + * + * @param $translation_export_langcode + * Language code if translations should also be exported. + * @param $string + * String or singular version if $plural was provided. + * @param $plural + * Plural version of singular string. + * @param $api_version + * Drupal API version to work with. + */ +function _potx_translation_export($translation_export_langcode, $string, $plural = NULL, $api_version = POTX_API_6) { + include_once 'includes/locale.inc'; + + // Stip out slash escapes. + $string = stripcslashes($string); + + // Column and table name changed between versions. + $language_column = $api_version > POTX_API_5 ? 'language' : 'locale'; + $language_table = $api_version > POTX_API_5 ? 'languages' : 'locales_meta'; + + if (!isset($plural)) { + // Single string to look translation up for. + if ($translation = db_result(db_query("SELECT t.translation FROM {locales_source} s LEFT JOIN {locales_target} t ON t.lid = s.lid WHERE s.source = '%s' AND t.{$language_column} = '%s'", $string, $translation_export_langcode))) { + return 'msgstr '. _locale_export_string($translation); + } + return "msgstr \"\"\n"; + } + + else { + // String with plural variants. Fill up source string array first. + $plural = stripcslashes($plural); + $strings = array(); + $number_of_plurals = db_result(db_query('SELECT plurals FROM {'. $language_table ."} WHERE {$language_column} = '%s'", $translation_export_langcode)); + $plural_index = 0; + while ($plural_index < $number_of_plurals) { + if ($plural_index == 0) { + // Add the singular version. + $strings[] = $string; + } + elseif ($plural_index == 1) { + // Only add plural version if required. + $strings[] = $plural; + } + else { + // More plural versions only if required, with the lookup source + // string modified as imported into the database. + $strings[] = str_replace('@count', '@count['. $plural_index .']', $plural); + } + $plural_index++; + } + + $output = ''; + if (count($strings)) { + // Source string array was done, so export translations. + foreach ($strings as $index => $string) { + if ($translation = db_result(db_query("SELECT t.translation FROM {locales_source} s LEFT JOIN {locales_target} t ON t.lid = s.lid WHERE s.source = '%s' AND t.{$language_column} = '%s'", $string, $translation_export_langcode))) { + $output .= 'msgstr['. $index .'] '. _locale_export_string(_locale_export_remove_plural($translation)); + } + else { + $output .= "msgstr[". $index ."] \"\"\n"; + } + } + } + else { + // No plural information was recorded, so export empty placeholders. + $output .= "msgstr[0] \"\"\n"; + $output .= "msgstr[1] \"\"\n"; + } + return $output; + } +} + +/** + * Returns a header generated for a given file + * + * @param $file + * Name of POT file to generate header for + * @param $template_export_langcode + * Language code if the template should have language dependent content + * (like plural formulas and language name) included. + * @param $api_version + * Drupal API version to work with. + */ +function _potx_get_header($file, $template_export_langcode = NULL, $api_version = POTX_API_6) { + // We only have language to use if we should export with that langcode. + $language = NULL; + if (isset($template_export_langcode)) { + $language = db_fetch_object(db_query($api_version > POTX_API_5 ? "SELECT language, name, plurals, formula FROM {languages} WHERE language = '%s'" : "SELECT locale, name, plurals, formula FROM {locales_meta} WHERE locale = '%s'", $template_export_langcode)); + } + + $output = '# $'.'Id'.'$'."\n"; + $output .= "#\n"; + $output .= '# '. (isset($language) ? $language->name : 'LANGUAGE') .' translation of Drupal ('. $file .")\n"; + $output .= "# Copyright YEAR NAME \n"; + $output .= "# --VERSIONS--\n"; + $output .= "#\n"; + $output .= "#, fuzzy\n"; + $output .= "msgid \"\"\n"; + $output .= "msgstr \"\"\n"; + $output .= "\"Project-Id-Version: PROJECT VERSION\\n\"\n"; + $output .= '"POT-Creation-Date: '. date("Y-m-d H:iO") ."\\n\"\n"; + $output .= '"PO-Revision-Date: '. (isset($language) ? date("Y-m-d H:iO") : 'YYYY-mm-DD HH:MM+ZZZZ') ."\\n\"\n"; + $output .= "\"Last-Translator: NAME \\n\"\n"; + $output .= "\"Language-Team: ". (isset($language) ? $language->name : 'LANGUAGE') ." \\n\"\n"; + $output .= "\"MIME-Version: 1.0\\n\"\n"; + $output .= "\"Content-Type: text/plain; charset=utf-8\\n\"\n"; + $output .= "\"Content-Transfer-Encoding: 8bit\\n\"\n"; + if (isset($language->formula) && isset($language->plurals)) { + $output .= "\"Plural-Forms: nplurals=". $language->plurals ."; plural=". strtr($language->formula, array('$' => '')) .";\\n\"\n\n"; + } + else { + $output .= "\"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\\n\"\n\n"; + } + return $output; +} + +/** + * Write out generated files to the current folder. + * + * @param $http_filename + * File name for content-disposition header in case of usage + * over HTTP. If not given, files are written to the local filesystem. + * @param $content_disposition + * See RFC2183. 'inline' or 'attachment', with a default of + * 'inline'. Only used if $http_filename is set. + * @todo + * Look into whether multiple files can be output via HTTP. + */ +function _potx_write_files($http_filename = NULL, $content_disposition = 'inline') { + global $_potx_store; + + // Generate file lists and output files. + if (is_array($_potx_store)) { + foreach ($_potx_store as $file => $contents) { + // Build replacement for file listing. + if (count($contents['sources']) > 1) { + $filelist = "Generated from files:\n# " . join("\n# ", $contents['sources']); + } + elseif (count($contents['sources']) == 1) { + $filelist = "Generated from file: " . join('', $contents['sources']); + } + else { + $filelist = 'No version information was available in the source files.'; + } + $output = str_replace('--VERSIONS--', $filelist, $contents['header'] . $contents['strings']); + + if ($http_filename) { + // HTTP output. + header('Content-Type: text/plain; charset=utf-8'); + header('Content-Transfer-Encoding: 8bit'); + header("Content-Disposition: $content_disposition; filename=$http_filename"); + print $output; + return; + } + else { + // Local file output, flatten directory structure. + $file = str_replace('.', '-', preg_replace('![/]?([a-zA-Z_0-9]*/)*!', '', $file)) .'.pot'; + $fp = fopen($file, 'w'); + fwrite($fp, $output); + fclose($fp); + } + } + } +} + +/** + * Escape quotes in a strings depending on the surrounding + * quote type used. + * + * @param $str + * The strings to escape + */ +function _potx_format_quoted_string($str) { + $quo = substr($str, 0, 1); + $str = substr($str, 1, -1); + if ($quo == '"') { + $str = stripcslashes($str); + } + else { + $str = strtr($str, array("\\'" => "'", "\\\\" => "\\")); + } + return addcslashes($str, "\0..\37\\\""); +} + +/** + * Output a marker error with an extract of where the error was found. + * + * @param $file + * Name of file + * @param $line + * Line number of error + * @param $marker + * Function name with which the error was identified + * @param $ti + * Index on the token array + * @param $error + * Helpful error message for users. + * @param $docs_url + * Documentation reference. + */ +function _potx_marker_error($file, $line, $marker, $ti, $error, $docs_url = NULL) { + global $_potx_tokens; + + $tokens = ''; + $ti += 2; + $tc = count($_potx_tokens); + $par = 1; + while ((($tc - $ti) > 0) && $par) { + if (is_array($_potx_tokens[$ti])) { + $tokens .= $_potx_tokens[$ti][1]; + } + else { + $tokens .= $_potx_tokens[$ti]; + if ($_potx_tokens[$ti] == "(") { + $par++; + } + else if ($_potx_tokens[$ti] == ")") { + $par--; + } + } + $ti++; + } + potx_status('error', $error, $file, $line, $marker .'('. $tokens, $docs_url); +} + +/** + * Status notification function. + * + * @param $op + * Operation to perform or type of message text. + * - set: sets the reporting mode to $value + * use one of the POTX_STATUS_* constants as $value + * - get: returns the list of error messages recorded + * if $value is true, it also clears the internal message cache + * - error: sends an error message in $value with optional $file and $line + * - status: sends a status message in $value + * @param $value + * Value depending on $op. + * @param $file + * Name of file the error message is related to. + * @param $line + * Number of line the error message is related to. + * @param $excerpt + * Excerpt of the code in question, if available. + * @param $docs_url + * URL to the guidelines to follow to fix the problem. + */ +function potx_status($op, $value = NULL, $file = NULL, $line = NULL, $excerpt = NULL, $docs_url = NULL) { + static $mode = POTX_STATUS_CLI; + static $messages = array(); + + switch ($op) { + case 'set': + // Setting the reporting mode. + $mode = $value; + return; + + case 'get': + // Getting the errors. Optionally deleting the messages. + $errors = $messages; + if (!empty($value)) { + $messages = array(); + } + return $errors; + + case 'error': + case 'status': + + // Location information is required in 3 of the four possible reporting + // modes as part of the error message. The structured mode needs the + // file, line and excerpt info separately, not in the text. + $location_info = ''; + if (($mode != POTX_STATUS_STRUCTURED) && isset($file)) { + if (isset($line)) { + if (isset($excerpt)) { + $location_info = t('At %excerpt in %file on line %line.', array('%excerpt' => $excerpt, '%file' => $file, '%line' => $line)); + } + else { + $location_info = t('In %file on line %line.', array('%file' => $file, '%line' => $line)); + } + } + else { + if (isset($excerpt)) { + $location_info = t('At %excerpt in %file.', array('%excerpt' => $excerpt, '%file' => $file)); + } + else { + $location_info = t('In %file.', array('%file' => $file)); + } + } + } + + // Documentation helpers are provided as readable text in most modes. + $read_more = ''; + if (($mode != POTX_STATUS_STRUCTURED) && isset($docs_url)) { + $read_more = ($mode == POTX_STATUS_CLI) ? t('Read more at @url', array('@url' => $docs_url)) : t('Read more at @url', array('@url' => $docs_url)); + } + + // Error message or progress text to display. + switch ($mode) { + case POTX_STATUS_MESSAGE: + drupal_set_message(join(' ', array($value, $location_info, $read_more)), $op); + break; + case POTX_STATUS_CLI: + fwrite($op == 'error' ? STDERR : STDOUT, join("\n", array($value, $location_info, $read_more)) ."\n\n"); + break; + case POTX_STATUS_SILENT: + if ($op == 'error') { + $messages[] = join(' ', array($value, $location_info, $read_more)); + } + break; + case POTX_STATUS_STRUCTURED: + if ($op == 'error') { + $messages[] = array($value, $file, $line, $excerpt, $docs_url); + } + break; + } + return; + } +} + +/** + * Detect all occurances of t()-like calls. + * + * These sequences are searched for: + * T_STRING("$function_name") + "(" + T_CONSTANT_ENCAPSED_STRING + ")" + * T_STRING("$function_name") + "(" + T_CONSTANT_ENCAPSED_STRING + "," + * + * @param $file + * Name of file parsed. + * @param $save_callback + * Callback function used to save strings. + * @param function_name + * The name of the function to look for (could be 't', '$t', 'st' + * or any other t-like function). + * @param $string_mode + * String mode to use: POTX_STRING_INSTALLER, POTX_STRING_RUNTIME or + * POTX_STRING_BOTH. + */ +function _potx_find_t_calls($file, $save_callback, $function_name = 't', $string_mode = POTX_STRING_RUNTIME) { + global $_potx_tokens, $_potx_lookup; + + // Lookup tokens by function name. + if (isset($_potx_lookup[$function_name])) { + foreach ($_potx_lookup[$function_name] as $ti) { + list($ctok, $par, $mid, $rig) = array($_potx_tokens[$ti], $_potx_tokens[$ti+1], $_potx_tokens[$ti+2], $_potx_tokens[$ti+3]); + list($type, $string, $line) = $ctok; + if ($par == "(") { + if (in_array($rig, array(")", ",")) + && (is_array($mid) && ($mid[0] == T_CONSTANT_ENCAPSED_STRING))) { + // This function is only used for context-less call types. + $save_callback(_potx_format_quoted_string($mid[1]), POTX_CONTEXT_NONE, $file, $line, $string_mode); + } + else { + // $function_name() found, but inside is something which is not a string literal. + _potx_marker_error($file, $line, $function_name, $ti, t('The first parameter to @function() should be a literal string. There should be no variables, concatenation, constants or other non-literal strings there.', array('@function' => $function_name)), 'http://drupal.org/node/322732'); + } + } + } + } +} + +/** + * Detect all occurances of t()-like calls from Drupal 7 (with context). + * + * These sequences are searched for: + * T_STRING("$function_name") + "(" + T_CONSTANT_ENCAPSED_STRING + ")" + * T_STRING("$function_name") + "(" + T_CONSTANT_ENCAPSED_STRING + "," + * and then an optional value for the replacements and an optional array + * for the options with an optional context key. + * + * @param $file + * Name of file parsed. + * @param $save_callback + * Callback function used to save strings. + * @param function_name + * The name of the function to look for (could be 't', '$t', 'st' + * or any other t-like function). Drupal 7 only supports context on t(). + * @param $string_mode + * String mode to use: POTX_STRING_INSTALLER, POTX_STRING_RUNTIME or + * POTX_STRING_BOTH. + */ +function _potx_find_t_calls_with_context($file, $save_callback, $function_name = '_e', $string_mode = POTX_STRING_RUNTIME) { + global $_potx_tokens, $_potx_lookup; + + // Lookup tokens by function name. + if (isset($_potx_lookup[$function_name])) { + foreach ($_potx_lookup[$function_name] as $ti) { + list($ctok, $par, $mid, $rig) = array($_potx_tokens[$ti], $_potx_tokens[$ti+1], $_potx_tokens[$ti+2], $_potx_tokens[$ti+3]); + list($type, $string, $line) = $ctok; + if ($par == "(") { + if (in_array($rig, array(")", ",")) + && (is_array($mid) && ($mid[0] == T_CONSTANT_ENCAPSED_STRING))) { + // By default, there is no context. + $domain = POTX_CONTEXT_NONE; + if ($rig == ',') { + // If there was a comma after the string, we need to look forward + // to try and find the context. + /*$context = _potx_find_context($ti, $ti + 4, $file, $function_name);*/ + + if($function_name == '_x' || $function_name == '_ex'){ + $domain_offset = 6; + $context_offset = 4; + $text = $mid[1]; + }elseif($function_name == '_n'){ + $domain_offset = 10; + $context_offset = false; + $text_plural = $_potx_tokens[$ti+4][1]; + }elseif($function_name == '_nx'){ + $domain_offset = 10; + $context_offset = 8; + $text_plural = $_potx_tokens[$ti+4][1]; + }else{ + $domain_offset = 4; + $context_offset = false; + $text = $mid[1]; + } + + if(!isset($_potx_tokens[$ti+$domain_offset][1])) return false; + + if(!preg_match('#^(\'|")(.+)#', $_potx_tokens[$ti+$domain_offset][1])){ + $constant_val = @constant($_potx_tokens[$ti+$domain_offset][1]); + if(!is_null($constant_val)){ + $domain = $constant_val; + }else{ + if(function_exists($_potx_tokens[$ti+$domain_offset][1])){ + $domain = @$_potx_tokens[$ti+$domain_offset][1](); + if(empty($domain)){ + return false; + } + }else{ + return false; + } + + } + }else{ + $domain = trim($_potx_tokens[$ti+$domain_offset][1],"\"' "); + } + + // exception for gettext calls with contexts + if(false !== $context_offset){ + if(!preg_match('#^(\'|")(.+)#', $_potx_tokens[$ti+$context_offset][1])){ + $constant_val = @constant($_potx_tokens[$ti+$context_offset][1]); + if(!is_null($constant_val)){ + $context = $constant_val; + }else{ + if(function_exists($_potx_tokens[$ti+$context_offset][1])){ + $context = @$_potx_tokens[$ti+$context_offset][1](); + if(empty($context)){ + return false; + } + }else{ + return false; + } + } + }else{ + $context = trim($_potx_tokens[$ti+$context_offset][1],"\"' "); + } + + }else{ + $context = false; + } + + + + } + if ($domain !== POTX_CONTEXT_ERROR) { + // Only save if there was no error in context parsing. + $save_callback(_potx_format_quoted_string($mid[1]), $domain, @strval($context), $file, $line, $string_mode); + if(isset($text_plural)){ + $save_callback(_potx_format_quoted_string($text_plural), $domain, $context, $file, $line, $string_mode); + } + } + } + else { + // $function_name() found, but inside is something which is not a string literal. + _potx_marker_error($file, $line, $function_name, $ti, t('The first parameter to @function() should be a literal string. There should be no variables, concatenation, constants or other non-literal strings there.', array('@function' => $function_name)), 'http://drupal.org/node/322732'); + } + } + } + } +} + +/** + * Detect all occurances of watchdog() calls. Only from Drupal 6. + * + * These sequences are searched for: + * watchdog + "(" + T_CONSTANT_ENCAPSED_STRING + "," + + * T_CONSTANT_ENCAPSED_STRING + something + * + * @param $file + * Name of file parsed. + * @param $save_callback + * Callback function used to save strings. + */ +function _potx_find_watchdog_calls($file, $save_callback) { + global $_potx_tokens, $_potx_lookup; + + // Lookup tokens by function name. + if (isset($_potx_lookup['watchdog'])) { + foreach ($_potx_lookup['watchdog'] as $ti) { + list($ctok, $par, $mtype, $comma, $message, $rig) = array($_potx_tokens[$ti], $_potx_tokens[$ti+1], $_potx_tokens[$ti+2], $_potx_tokens[$ti+3], $_potx_tokens[$ti+4], $_potx_tokens[$ti+5]); + list($type, $string, $line) = $ctok; + if ($par == '(') { + // Both type and message should be a string literal. + if (in_array($rig, array(')', ',')) && $comma == ',' + && (is_array($mtype) && ($mtype[0] == T_CONSTANT_ENCAPSED_STRING)) + && (is_array($message) && ($message[0] == T_CONSTANT_ENCAPSED_STRING))) { + // Context is not supported on watchdog(). + $save_callback(_potx_format_quoted_string($mtype[1]), POTX_CONTEXT_NONE, $file, $line); + $save_callback(_potx_format_quoted_string($message[1]), POTX_CONTEXT_NONE, $file, $line); + } + else { + // watchdog() found, but inside is something which is not a string literal. + _potx_marker_error($file, $line, 'watchdog', $ti, t('The first two watchdog() parameters should be literal strings. There should be no variables, concatenation, constants or even a t() call there.'), 'http://drupal.org/node/323101'); + } + } + } + } +} + +/** + * Detect all occurances of format_plural calls. + * + * These sequences are searched for: + * T_STRING("format_plural") + "(" + ..anything (might be more tokens).. + + * "," + T_CONSTANT_ENCAPSED_STRING + + * "," + T_CONSTANT_ENCAPSED_STRING + parenthesis (or comma allowed from + * Drupal 6) + * + * @param $file + * Name of file parsed. + * @param $save_callback + * Callback function used to save strings. + * @param $api_version + * Drupal API version to work with. + */ +function _potx_find_format_plural_calls($file, $save_callback, $api_version = POTX_API_6) { + global $_potx_tokens, $_potx_lookup; + + if (isset($_potx_lookup['format_plural'])) { + foreach ($_potx_lookup['format_plural'] as $ti) { + list($ctok, $par1) = array($_potx_tokens[$ti], $_potx_tokens[$ti+1]); + list($type, $string, $line) = $ctok; + if ($par1 == "(") { + // Eat up everything that is used as the first parameter + $tn = $ti + 2; + $depth = 0; + while (!($_potx_tokens[$tn] == "," && $depth == 0)) { + if ($_potx_tokens[$tn] == "(") { + $depth++; + } + elseif ($_potx_tokens[$tn] == ")") { + $depth--; + } + $tn++; + } + // Get further parameters + list($comma1, $singular, $comma2, $plural, $par2) = array($_potx_tokens[$tn], $_potx_tokens[$tn+1], $_potx_tokens[$tn+2], $_potx_tokens[$tn+3], $_potx_tokens[$tn+4]); + if (($comma2 == ',') && ($par2 == ')' || ($par2 == ',' && $api_version > POTX_API_5)) && + (is_array($singular) && ($singular[0] == T_CONSTANT_ENCAPSED_STRING)) && + (is_array($plural) && ($plural[0] == T_CONSTANT_ENCAPSED_STRING))) { + // By default, there is no context. + $context = POTX_CONTEXT_NONE; + if ($par2 == ',' && $api_version > POTX_API_6) { + // If there was a comma after the plural, we need to look forward + // to try and find the context. + $context = _potx_find_context($ti, $tn + 5, $file, 'format_plural'); + } + if ($context !== POTX_CONTEXT_ERROR) { + // Only save if there was no error in context parsing. + $save_callback( + _potx_format_quoted_string($singular[1]) ."\0". _potx_format_quoted_string($plural[1]), + $context, + $file, + $line + ); + } + } + else { + // format_plural() found, but the parameters are not correct. + _potx_marker_error($file, $line, "format_plural", $ti, t('In format_plural(), the singular and plural strings should be literal strings. There should be no variables, concatenation, constants or even a t() call there.'), 'http://drupal.org/node/323072'); + } + } + } + } +} + +/** + * Detect permission names from the hook_perm() implementations. + * Note that this will get confused with a similar pattern in a comment, + * and with dynamic permissions, which need to be accounted for. + * + * @param $file + * Full path name of file parsed. + * @param $filebase + * Filenaname of file parsed. + * @param $save_callback + * Callback function used to save strings. + */ +function _potx_find_perm_hook($file, $filebase, $save_callback) { + global $_potx_tokens, $_potx_lookup; + + if (isset($_potx_lookup[$filebase .'_perm'])) { + // Special case for node module, because it uses dynamic permissions. + // Include the static permissions by hand. That's about all we can do here. + if ($filebase == 'node') { + $line = $_potx_tokens[$_potx_lookup['node_perm'][0]][2]; + // List from node.module 1.763 (checked in on 2006/12/29 at 21:25:36 by drumm) + $nodeperms = array('administer content types', 'administer nodes', 'access content', 'view revisions', 'revert revisions'); + foreach ($nodeperms as $item) { + // hook_perm() is only ever found on a Drupal system which does not + // support context. + $save_callback($item, POTX_CONTEXT_NONE, $file, $line); + } + } + else { + $count = 0; + foreach ($_potx_lookup[$filebase .'_perm'] as $ti) { + $tn = $ti; + while (is_array($_potx_tokens[$tn]) || $_potx_tokens[$tn] != '}') { + if (is_array($_potx_tokens[$tn]) && $_potx_tokens[$tn][0] == T_CONSTANT_ENCAPSED_STRING) { + // hook_perm() is only ever found on a Drupal system which does not + // support context. + $save_callback(_potx_format_quoted_string($_potx_tokens[$tn][1]), POTX_CONTEXT_NONE, $file, $_potx_tokens[$tn][2]); + $count++; + } + $tn++; + } + } + if (!$count) { + potx_status('error', t('%hook should have an array of literal string permission names.', array('%hook' => $filebase .'_perm()')), $file, NULL, NULL, 'http://drupal.org/node/323101'); + } + } + } +} + +/** + * Helper function to look up the token closing the current function. + * + * @param $here + * The token at the function name + */ +function _potx_find_end_of_function($here) { + global $_potx_tokens; + + // Seek to open brace. + while (is_array($_potx_tokens[$here]) || $_potx_tokens[$here] != '{') { + $here++; + } + $nesting = 1; + while ($nesting > 0) { + $here++; + if (!is_array($_potx_tokens[$here])) { + if ($_potx_tokens[$here] == '}') { + $nesting--; + } + if ($_potx_tokens[$here] == '{') { + $nesting++; + } + } + } + return $here; +} + +/** + * Helper to move past t() and format_plural() arguments in search of context. + * + * @param $here + * The token before the start of the arguments + */ +function _potx_skip_args($here) { + global $_potx_tokens; + + $nesting = 0; + // Go through to either the end of the function call or to a comma + // after the current position on the same nesting level. + while (!(($_potx_tokens[$here] == ',' && $nesting == 0) || + ($_potx_tokens[$here] == ')' && $nesting == -1))) { + $here++; + if (!is_array($_potx_tokens[$here])) { + if ($_potx_tokens[$here] == ')') { + $nesting--; + } + if ($_potx_tokens[$here] == '(') { + $nesting++; + } + } + } + // If we run out of nesting, it means we reached the end of the function call, + // so we skipped the arguments but did not find meat for looking at the + // specified context. + return ($nesting == 0 ? $here : FALSE); +} + +/** + * Helper to find the value for 'context' on t() and format_plural(). + * + * @param $tf + * Start position of the original function. + * @param $ti + * Start position where we should search from. + * @param $file + * Full path name of file parsed. + * @param function_name + * The name of the function to look for. Either 'format_plural' or 't' + * given that Drupal 7 only supports context on these. + */ +function _potx_find_context($tf, $ti, $file, $function_name) { + global $_potx_tokens; + + // Start from after the comma and skip the possible arguments for the function + // so we can look for the context. + if (($ti = _potx_skip_args($ti)) && ($_potx_tokens[$ti] == ',')) { + // Now we actually might have some definition for a context. The $options + // argument is coming up, which might have a key for context. + echo "TI:" . $ti."\n"; + list($com, $arr, $par) = array($_potx_tokens[$ti], $_potx_tokens[$ti+1], $_potx_tokens[$ti+2]); + if ($com == ',' && $arr[1] == 'array' && $par == '(') { + $nesting = 0; + $ti += 3; + // Go through to either the end of the array or to the key definition of + // context on the same nesting level. + while (!((is_array($_potx_tokens[$ti]) && (in_array($_potx_tokens[$ti][1], array('"context"', "'context'"))) && ($_potx_tokens[$ti][0] == T_CONSTANT_ENCAPSED_STRING) && ($nesting == 0)) || + ($_potx_tokens[$ti] == ')' && $nesting == -1))) { + $ti++; + if (!is_array($_potx_tokens[$ti])) { + if ($_potx_tokens[$ti] == ')') { + $nesting--; + } + if ($_potx_tokens[$ti] == '(') { + $nesting++; + } + } + } + if ($nesting == 0) { + // Found the 'context' key on the top level of the $options array. + list($arw, $str) = array($_potx_tokens[$ti+1], $_potx_tokens[$ti+2]); + if (is_array($arw) && $arw[1] == '=>' && is_array($str) && $str[0] == T_CONSTANT_ENCAPSED_STRING) { + return _potx_format_quoted_string($str[1]); + } + else { + list($type, $string, $line) = $_potx_tokens[$ti]; + // @todo: fix error reference. + _potx_marker_error($file, $line, $function_name, $tf, t('The context element in the options array argument to @function() should be a literal string. There should be no variables, concatenation, constants or other non-literal strings there.', array('@function' => $function_name)), 'http://drupal.org/node/322732'); + // Return with error. + return POTX_CONTEXT_ERROR; + } + } + else { + // Did not found 'context' key in $options array. + return POTX_CONTEXT_NONE; + } + } + } + + // After skipping args, we did not find a comma to look for $options. + return POTX_CONTEXT_NONE; +} + +/** + * List of menu item titles. Only from Drupal 6. + * + * @param $file + * Full path name of file parsed. + * @param $filebase + * Filenaname of file parsed. + * @param $save_callback + * Callback function used to save strings. + */ +function _potx_find_menu_hook($file, $filebase, $save_callback) { + global $_potx_tokens, $_potx_lookup; + + if (isset($_potx_lookup[$filebase .'_menu']) && is_array($_potx_lookup[$filebase .'_menu'])) { + // We have a menu hook in this file. + foreach ($_potx_lookup[$filebase .'_menu'] as $ti) { + $end = _potx_find_end_of_function($ti); + $tn = $ti; + while ($tn < $end) { + // Look through the code until the end of the function. + if ($_potx_tokens[$tn][0] == T_CONSTANT_ENCAPSED_STRING && in_array($_potx_tokens[$tn][1], array("'title'", '"title"', "'description'", '"description"')) && $_potx_tokens[$tn+1][0] == T_DOUBLE_ARROW) { + if ($_potx_tokens[$tn+2][0] == T_CONSTANT_ENCAPSED_STRING) { + // Menu items support no context. + $save_callback( + _potx_format_quoted_string($_potx_tokens[$tn+2][1]), + POTX_CONTEXT_NONE, + $file, + $_potx_tokens[$tn+2][2] + ); + $tn+=2; // Jump forward by 2. + } + else { + potx_status('error', t('Invalid menu %element definition found in %hook. Title and description keys of the menu array should be literal strings.', array('%element' => $_potx_tokens[$tn][1], '%hook' => $filebase .'_menu()')), $file, $_potx_tokens[$tn][2], NULL, 'http://drupal.org/node/323101'); + } + } + $tn++; + } + } + } +} + +/** + * Get languages names from Drupal's locale.inc. + * + * @param $file + * Full path name of file parsed + * @param $save_callback + * Callback function used to save strings. + * @param $api_version + * Drupal API version to work with. + */ +function _potx_find_language_names($file, $save_callback, $api_version = POTX_API_6) { + global $_potx_tokens, $_potx_lookup; + + foreach ($_potx_lookup[$api_version > POTX_API_5 ? '_locale_get_predefined_list' : '_locale_get_iso639_list'] as $ti) { + // Search for the definition of _locale_get_predefined_list(), not where it is called. + if ($_potx_tokens[$ti-1][0] == T_FUNCTION) { + break; + } + } + + $end = _potx_find_end_of_function($ti); + $ti += 7; // function name, (, ), {, return, array, ( + while ($ti < $end) { + while ($_potx_tokens[$ti][0] != T_ARRAY) { + if (!is_array($_potx_tokens[$ti]) && $_potx_tokens[$ti] == ';') { + // We passed the end of the list, break out to function level + // to prevent an infinite loop. + break 2; + } + $ti++; + } + $ti += 2; // array, ( + // Language names are context-less. + $save_callback(_potx_format_quoted_string($_potx_tokens[$ti][1]), POTX_CONTEXT_NONE, $file, $_potx_tokens[$ti][2]); + } +} + +/** + * Get the exact CVS version number from the file, so we can + * push that into the generated output. + * + * @param $code + * Complete source code of the file parsed. + * @param $file + * Name of the file parsed. + * @param $version_callback + * Callback used to save the version information. + */ +function _potx_find_version_number($code, $file, $version_callback) { + // Prevent CVS from replacing this pattern with actual info. + if (preg_match('!\\$I'.'d: ([^\\$]+) Exp \\$!', $code, $version_info)) { + $version_callback($version_info[1], $file); + } + else { + // Unknown version information. + $version_callback($file .': n/a', $file); + } +} + +/** + * Add date strings, which cannot be extracted otherwise. + * This is called for locale.module. + * + * @param $file + * Name of the file parsed. + * @param $save_callback + * Callback function used to save strings. + * @param $api_version + * Drupal API version to work with. + */ +function _potx_add_date_strings($file, $save_callback, $api_version = POTX_API_6) { + for ($i = 1; $i <= 12; $i++) { + $stamp = mktime(0, 0, 0, $i, 1, 1971); + if ($api_version > POTX_API_6) { + // From Drupal 7, long month names are saved with this context. + $save_callback(date("F", $stamp), 'Long month name', $file); + } + elseif ($api_version > POTX_API_5) { + // Drupal 6 uses a little hack. No context. + $save_callback('!long-month-name '. date("F", $stamp), POTX_CONTEXT_NONE, $file); + } + else { + // Older versions just accept the confusion, no context. + $save_callback(date("F", $stamp), POTX_CONTEXT_NONE, $file); + } + // Short month names lack a context anyway. + $save_callback(date("M", $stamp), POTX_CONTEXT_NONE, $file); + } + for ($i = 0; $i <= 7; $i++) { + $stamp = $i * 86400; + $save_callback(date("D", $stamp), POTX_CONTEXT_NONE, $file); + $save_callback(date("l", $stamp), POTX_CONTEXT_NONE, $file); + } + $save_callback('am', POTX_CONTEXT_NONE, $file); + $save_callback('pm', POTX_CONTEXT_NONE, $file); + $save_callback('AM', POTX_CONTEXT_NONE, $file); + $save_callback('PM', POTX_CONTEXT_NONE, $file); +} + +/** + * Add format_interval special strings, which cannot be + * extracted otherwise. This is called for common.inc + * + * @param $file + * Name of the file parsed. + * @param $save_callback + * Callback function used to save strings. + * @param $api_version + * Drupal API version to work with. + */ +function _potx_add_format_interval_strings($file, $save_callback, $api_version = POTX_API_6) { + $components = array( + '1 year' => '@count years', + '1 week' => '@count weeks', + '1 day' => '@count days', + '1 hour' => '@count hours', + '1 min' => '@count min', + '1 sec' => '@count sec' + ); + if ($api_version > POTX_API_6) { + // Month support added in Drupal 7. + $components['1 month'] = '@count months'; + } + + foreach ($components as $singular => $plural) { + // Intervals support no context. + $save_callback($singular ."\0". $plural, POTX_CONTEXT_NONE, $file); + } +} + +/** + * Add default theme region names, which cannot be extracted otherwise. + * These default names are defined in system.module + * + * @param $file + * Name of the file parsed. + * @param $save_callback + * Callback function used to save strings. + * @param $api_version + * Drupal API version to work with. + */ +function _potx_add_default_region_names($file, $save_callback, $api_version = POTX_API_6) { + $regions = array( + 'left' => 'Left sidebar', + 'right' => 'Right sidebar', + 'content' => 'Content', + 'header' => 'Header', + 'footer' => 'Footer', + ); + if ($api_version > POTX_API_6) { + // @todo: Update with final region list when D7 stabilizes. + $regions['highlight'] = 'Highlighted content'; + $regions['help'] = 'Help'; + $regions['page_top'] = 'Page top'; + } + foreach ($regions as $region) { + // Regions come with the default context. + $save_callback($region, POTX_CONTEXT_NONE, $file); + } +} + +/** + * Parse an .info file and add relevant strings to the list. + * + * @param $file_path + * Complete file path to load contents with. + * @param $file_name + * Stripped file name to use in outpout. + * @param $strings + * Current strings array + * @param $api_version + * Drupal API version to work with. + */ +function _potx_find_info_file_strings($file_path, $file_name, $save_callback, $api_version = POTX_API_6) { + $info = array(); + + if (file_exists($file_path)) { + $info = $api_version > POTX_API_5 ? drupal_parse_info_file($file_path) : parse_ini_file($file_path); + } + + // We need the name, description and package values. Others, + // like core and PHP compatibility, timestamps or versions + // are not to be translated. + foreach (array('name', 'description', 'package') as $key) { + if (isset($info[$key])) { + // No context support for .info file strings. + $save_callback($info[$key], POTX_CONTEXT_NONE, $file_name); + } + } + + // Add regions names from themes. + if (isset($info['regions']) && is_array($info['regions'])) { + foreach ($info['regions'] as $region => $region_name) { + // No context support for .info file strings. + $save_callback($region_name, POTX_CONTEXT_NONE, $file_name); + } + } +} + +/** + * Parse a JavaScript file for translatables. Only from Drupal 6. + * + * Extracts strings wrapped in Drupal.t() and Drupal.formatPlural() + * calls and inserts them into potx storage. + * + * Regex code lifted from _locale_parse_js_file(). + */ +function _potx_parse_js_file($code, $file, $save_callback) { + $js_string_regex = '(?:(?:\'(?:\\\\\'|[^\'])*\'|"(?:\\\\"|[^"])*")(?:\s*\+\s*)?)+'; + + // Match all calls to Drupal.t() in an array. + // Note: \s also matches newlines with the 's' modifier. + preg_match_all('~[^\w]Drupal\s*\.\s*t\s*\(\s*('. $js_string_regex .')\s*[,\)]~s', $code, $t_matches, PREG_SET_ORDER); + if (isset($t_matches) && count($t_matches)) { + foreach ($t_matches as $match) { + // Remove match from code to help us identify faulty Drupal.t() calls. + $code = str_replace($match[0], '', $code); + // @todo: figure out how to parse out context, once Drupal supports it. + $save_callback(_potx_parse_js_string($match[1]), POTX_CONTEXT_NONE, $file, 0); + } + } + + // Match all Drupal.formatPlural() calls in another array. + preg_match_all('~[^\w]Drupal\s*\.\s*formatPlural\s*\(\s*.+?\s*,\s*('. $js_string_regex .')\s*,\s*((?:(?:\'(?:\\\\\'|[^\'])*@count(?:\\\\\'|[^\'])*\'|"(?:\\\\"|[^"])*@count(?:\\\\"|[^"])*")(?:\s*\+\s*)?)+)\s*[,\)]~s', $code, $plural_matches, PREG_SET_ORDER); + if (isset($plural_matches) && count($plural_matches)) { + foreach ($plural_matches as $index => $match) { + // Remove match from code to help us identify faulty + // Drupal.formatPlural() calls later. + $code = str_replace($match[0], '', $code); + // @todo: figure out how to parse out context, once Drupal supports it. + $save_callback( + _potx_parse_js_string($match[1]) ."\0". _potx_parse_js_string($match[2]), + POTX_CONTEXT_NONE, + $file, + 0 + ); + } + } + + // Any remaining Drupal.t() or Drupal.formatPlural() calls are evil. This + // regex is not terribly accurate (ie. code wrapped inside will confuse + // the match), but we only need some unique part to identify the faulty calls. + preg_match_all('~[^\w]Drupal\s*\.\s*(t|formatPlural)\s*\([^)]+\)~s', $code, $faulty_matches, PREG_SET_ORDER); + if (isset($faulty_matches) && count($faulty_matches)) { + foreach ($faulty_matches as $index => $match) { + $message = ($match[1] == 't') ? t('Drupal.t() calls should have a single literal string as their first parameter.') : t('The singular and plural string parameters on Drupal.formatPlural() calls should be literal strings, plural containing a @count placeholder.'); + potx_status('error', $message, $file, NULL, $match[0], 'http://drupal.org/node/323109'); + } + } +} + +/** + * Clean up string found in JavaScript source code. Only from Drupal 6. + */ +function _potx_parse_js_string($string) { + return _potx_format_quoted_string(implode('', preg_split('~(? POTX_API_5) { + $extensions[] = 'js'; + } + $files = array(); + foreach ($extensions as $extension) { + $files_here = glob($path . $basename .'.'. $extension); + if (is_array($files_here)) { + $files = array_merge($files, $files_here); + } + if ($basename != '*') { + // Basename was specific, so look for things like basename.admin.inc as well. + // If the basnename was *, the above glob() already covered this case. + $files_here = glob($path . $basename .'.*.'. $extension); + if (is_array($files_here)) { + $files = array_merge($files, $files_here); + } + } + } + + // Grab subdirectories. + $dirs = glob($path .'*', GLOB_ONLYDIR); + if (is_array($dirs)) { + foreach ($dirs as $dir) { + if (!preg_match("!(^|.+/)(CVS|.svn|.git)$!", $dir)) { + $files = array_merge($files, _potx_explore_dir("$dir/", $basename)); + } + } + } + // Skip our own files, because we don't want to get strings from them + // to appear in the output, especially with the command line interface. + // TODO: fix this to be able to autogenerate templates for potx itself. + foreach ($files as $id => $file_name) { + if (preg_match('!(potx-cli.php|potx.php)$!', $file_name)) { + unset($files[$id]); + } + } + return $files; +} + +/** + * Default $version_callback used by the potx system. Saves values + * to a global array to reduce memory consumption problems when + * passing around big chunks of values. + * + * @param $value + * The ersion number value of $file. If NULL, the collected + * values are returned. + * @param $file + * Name of file where the version information was found. + */ +function _potx_save_version($value = NULL, $file = NULL) { + global $_potx_versions; + + if (isset($value)) { + $_potx_versions[$file] = $value; + } + else { + return $_potx_versions; + } +} + +/** + * Default $save_callback used by the potx system. Saves values + * to global arrays to reduce memory consumption problems when + * passing around big chunks of values. + * + * @param $value + * The string value. If NULL, the array of collected values + * are returned for the given $string_mode. + * @param $context + * From Drupal 7, separate contexts are supported. POTX_CONTEXT_NONE is + * the default, if the code does not specify a context otherwise. + * @param $file + * Name of file where the string was found. + * @param $line + * Line number where the string was found. + * @param $string_mode + * String mode: POTX_STRING_INSTALLER, POTX_STRING_RUNTIME + * or POTX_STRING_BOTH. + */ +function _potx_save_string($value = NULL, $context = NULL, $file = NULL, $line = 0, $string_mode = POTX_STRING_RUNTIME) { + global $_potx_strings, $_potx_install; + + if (isset($value)) { + switch ($string_mode) { + case POTX_STRING_BOTH: + // Mark installer strings as duplicates of runtime strings if + // the string was both recorded in the runtime and in the installer. + $_potx_install[$value][$context][$file][] = $line .' (dup)'; + // Break intentionally missing. + case POTX_STRING_RUNTIME: + // Mark runtime strings as duplicates of installer strings if + // the string was both recorded in the runtime and in the installer. + $_potx_strings[$value][$context][$file][] = $line . ($string_mode == POTX_STRING_BOTH ? ' (dup)' : ''); + break; + case POTX_STRING_INSTALLER: + $_potx_install[$value][$context][$file][] = $line; + break; + } + } + else { + return ($string_mode == POTX_STRING_RUNTIME ? $_potx_strings : $_potx_install); + } +} + +if (!function_exists('t')) { + // If invoked outside of Drupal, t() will not exist, but + // used to format the error message, so we provide a replacement. + function t($string, $args = array()) { + return strtr($string, $args); + } +} + +if (!function_exists('drupal_parse_info_file')) { + // If invoked outside of Drupal, drupal_parse_info_file() will not be available, + // but we need this function to properly parse Drupal 6/7 .info files. + // Directly copied from common.inc,v 1.704 2007/10/19 10:30:54 goba Exp. + function drupal_parse_info_file($filename) { + $info = array(); + + if (!file_exists($filename)) { + return $info; + } + + $data = file_get_contents($filename); + if (preg_match_all(' + @^\s* # Start at the beginning of a line, ignoring leading whitespace + ((?: + [^=;\[\]]| # Key names cannot contain equal signs, semi-colons or square brackets, + \[[^\[\]]*\] # unless they are balanced and not nested + )+?) + \s*=\s* # Key/value pairs are separated by equal signs (ignoring white-space) + (?: + ("(?:[^"]|(?<=\\\\)")*")| # Double-quoted string, which may contain slash-escaped quotes/slashes + (\'(?:[^\']|(?<=\\\\)\')*\')| # Single-quoted string, which may contain slash-escaped quotes/slashes + ([^\r\n]*?) # Non-quoted string + )\s*$ # Stop at the next end of a line, ignoring trailing whitespace + @msx', $data, $matches, PREG_SET_ORDER)) { + foreach ($matches as $match) { + // Fetch the key and value string + $i = 0; + foreach (array('key', 'value1', 'value2', 'value3') as $var) { + $$var = isset($match[++$i]) ? $match[$i] : ''; + } + $value = stripslashes(substr($value1, 1, -1)) . stripslashes(substr($value2, 1, -1)) . $value3; + + // Parse array syntax + $keys = preg_split('/\]?\[/', rtrim($key, ']')); + $last = array_pop($keys); + $parent = &$info; + + // Create nested arrays + foreach ($keys as $key) { + if ($key == '') { + $key = count($parent); + } + if (!isset($parent[$key]) || !is_array($parent[$key])) { + $parent[$key] = array(); + } + $parent = &$parent[$key]; + } + + // Handle PHP constants + if (defined($value)) { + $value = constant($value); + } + + // Insert actual value + if ($last == '') { + $last = count($parent); + } + $parent[$last] = $value; + } + } + + return $info; + } +} diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/quote.php b/wp-content/plugins/sitepress-multilingual-cms/inc/quote.php new file mode 100644 index 0000000..67981af --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/quote.php @@ -0,0 +1,38 @@ +save_settings(array('quote-get' => $saved)); + echo ''; + + /** + * Produce quote + */ +} else if (isset($data['submit-produce'])) { + $saved = $sitepress_settings['quote-get']; + if (empty($saved['from']) + || empty($saved['to']) + || empty($saved['content']) + ) { + die('data not valid'); + } + $word_count = 0; + $wc_description = array(); + foreach ($saved['content'] as $ID => $true) { + $wc_description[] = $saved['description'][$ID]['num'] . ' ' + . $saved['description'][$ID]['title'] . ' with ' + . $saved['description'][$ID]['words'] . ' words'; + $word_count += intval($saved['description'][$ID]['words']); + } + $wc_description = implode(', ', $wc_description); + + /** + * Create account + */ + if (!isset($sitepress_settings['site_id'])) { + $user = array(); + $user['create_account'] = 1; + $user['anon'] = 1; + $user['platform_kind'] = 2; + $user['cms_kind'] = 1; + $user['blogid'] = $wpdb->blogid ? $wpdb->blogid : 1; + $user['url'] = get_option('home'); + $user['title'] = get_option('blogname'); + $user['description'] = $sitepress_settings['icl_site_description']; + $user['is_verified'] = 1; + $user['interview_translators'] = $sitepress_settings['interview_translators']; + $user['project_kind'] = $sitepress_settings['website_kind']; + $user['pickup_type'] = intval($sitepress_settings['translation_pickup_method']); + $user['ignore_languages'] = 1; + $user['word_count'] = $word_count; + $user['wc_description'] = $wc_description; + + if (defined('ICL_AFFILIATE_ID') && defined('ICL_AFFILIATE_KEY')) { + $user['affiliate_id'] = ICL_AFFILIATE_ID; + $user['affiliate_key'] = ICL_AFFILIATE_KEY; + } + $notifications = 0; + if ($sitepress_settings['icl_notify_complete']) { + $notifications += 1; + } + if ($sitepress_settings['alert_delay']) { + $notifications += 2; + } + $user['notifications'] = $notifications; + // prepare language pairs + $pay_per_use = $sitepress_settings['translator_choice'] == 1; + $language_pairs = array($saved['from'] => $saved['to']); + $lang_pairs = array(); + if (isset($language_pairs)) { + foreach ($language_pairs as $k => $v) { + $english_fr = $wpdb->get_var("SELECT english_name FROM {$wpdb->prefix}icl_languages WHERE code='{$k}' "); + foreach ($v as $k => $v) { + $incr++; + $english_to = $wpdb->get_var("SELECT english_name FROM {$wpdb->prefix}icl_languages WHERE code='{$k}' "); + $lang_pairs['from_language' . $incr] = ICL_Pro_Translation::server_languages_map($english_fr); + $lang_pairs['to_language' . $incr] = ICL_Pro_Translation::server_languages_map($english_to); + if ($pay_per_use) { + $lang_pairs['pay_per_use' . $incr] = 1; + } + } + } + } + require_once ICL_PLUGIN_PATH . '/lib/icl_api.php'; + $icl_query = new ICanLocalizeQuery(); + list($site_id, $access_key) = $icl_query->createAccount(array_merge($user, $lang_pairs)); + if (!$site_id){ + $user['pickup_type'] = ICL_PRO_TRANSLATION_PICKUP_POLLING; + list($site_id, $access_key) = $icl_query->createAccount(array_merge($user, $lang_pairs)); + } + if (!$site_id) { + if (!$access_key) { + // We will force the next try to be http. + update_option('_force_mp_post_http', 1); + } + $saved = $sitepress_settings['quote-get']; + $saved['step'] = 3; + $sitepress->save_settings(array('quote-get' => $saved)); + echo __('An unknown error has occurred when communicating with the ICanLocalize server. Please try again.', 'sitepress') . '

                  '; + require_once ICL_PLUGIN_PATH . '/inc/quote/quote-get.php'; + exit; + } else { + if($user['pickup_type'] == ICL_PRO_TRANSLATION_PICKUP_POLLING){ + $iclsettings['translation_pickup_method'] = ICL_PRO_TRANSLATION_PICKUP_POLLING; + } + $iclsettings['site_id'] = $site_id; + $iclsettings['access_key'] = $access_key; + $iclsettings['icl_account_email'] = $user['email']; + $sitepress->get_icl_translator_status($iclsettings); + $sitepress->save_settings($iclsettings); + } + /** + * Update account + */ + } else { + $data = array(); + $data['word_count'] = $word_count; + $data['wc_description'] = $wc_description; + $data['site_id'] = $site_id = $sitepress_settings['site_id']; + $data['accesskey'] = $access_key = $sitepress_settings['access_key']; + $data['ignore_languages'] = 1; + require_once ICL_PLUGIN_PATH . '/lib/icl_api.php'; + $icl_query = new ICanLocalizeQuery(); + if ($icl_query->updateAccount($data) !== 0) { + $saved = $sitepress_settings['quote-get']; + $saved['step'] = 3; + $sitepress->save_settings(array('quote-get' => $saved)); + echo __('An unknown error has occurred when communicating with the ICanLocalize server. Please try again.', 'sitepress') . '

                  '; + require_once ICL_PLUGIN_PATH . '/inc/quote/quote-get.php'; + exit; + } + } + + /** + * Set URL query + */ + $language_pairs = array($saved['from'] => $saved['to']); + $lang_pairs = array(); + $incr = 1; + $query = ''; + if (isset($language_pairs)) { + foreach ($language_pairs as $k => $v) { + $english_from = $wpdb->get_var("SELECT english_name FROM {$wpdb->prefix}icl_languages WHERE code='{$k}' "); + $query .= '&to_lang_num=' . count($v); + $query .= '&from_language_name=' . $english_from; + foreach ($v as $k => $v) { + $english_to = $wpdb->get_var("SELECT english_name FROM {$wpdb->prefix}icl_languages WHERE code='{$k}' "); + $query .= '&to_language_name_' . $incr . '=' . ICL_Pro_Translation::server_languages_map($english_to); + $incr++; + } + } + } + $url = ICL_API_ENDPOINT . '/websites/' . $site_id . '/quote?accesskey=' . $access_key . '&locale=' . $sitepress->get_default_language() . $query . '&compact=1'; + // Call reopen JS + echo ''; + exit; +} \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/quote/quote-get.php b/wp-content/plugins/sitepress-multilingual-cms/inc/quote/quote-get.php new file mode 100644 index 0000000..76398c4 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/quote/quote-get.php @@ -0,0 +1,303 @@ + + +get_active_languages(); + +?> + +

                  +

                  + +
                  + + $lang) { + $selected = @is_array($saved['to']) && @in_array($code, $saved['to']) ? ' checked="checked"' : ''; + + ?> +

                  + +

                  +

                  + +

                  + $iclTranslationManagement + * @global $wpdb + * @param $saved + */ + function icl_quote_get_step_two($saved) { + global $sitepress, $iclTranslationManagement, $wpdb; + $iclTranslationManagement->init(); + $cf_settings = $iclTranslationManagement->settings['custom_fields_translation']; + $rows = array(); + $add = 0; + $types = get_post_types('', 'objects'); + foreach ($types as $name => $type) { + if (in_array($name, array('attachment', 'revision', 'nav_menu_item'))) { + continue; + } + $source_code = $saved['from'] == $sitepress->get_default_language() ? 'IS NULL' : "= '" . $saved['from'] . "'"; + $posts = $wpdb->get_results("SELECT p.ID, p.post_title, p.post_content + FROM {$wpdb->prefix}posts p + JOIN {$wpdb->prefix}icl_translations t + WHERE p.post_type = '" . $name . "' + AND t.element_type = 'post_" . $name . "' + AND t.element_id = p.ID + AND t.language_code = '" . $saved['from'] . "' + AND p.post_status = 'publish' + "); + $rows[$name]['ID'] = $name; + $rows[$name]['title'] = $type->label; + if (empty($posts)) { + $rows[$name]['words'] = 0; + $rows[$name]['num'] = 0; + continue; + } + $rows[$name]['words'] = 0; + foreach ($posts as $post) { + $meta_count = 0; + if (!empty($cf_settings)) { + foreach ($cf_settings as $meta_key => $translate) { + if ($translate == 2) { + $meta = get_post_meta($post->ID, $meta_key, true); + if (is_string($meta)) { + $meta_count += str_word_count(strip_tags( + $meta)); + } + } else { + unset($cf_settings[$meta_key]); + } + } + } + $add = $meta_count + str_word_count(strip_tags($post->post_title)) + str_word_count(strip_tags($post->post_content)); + $rows[$name]['words'] += $add; + } + $rows[$name]['num'] = count($posts); + } + +?> +

                  +

                  +
                  To get the word count of specific documents, use the %sTranslation Dashboard%s.', + 'sitepress'), '', ''); ?> +

                  + + + + + + + + + + + + $data) { + $selected = @is_array($saved['content']) && @array_key_exists($data['ID'], $saved['content']) ? ' checked="checked"' : ''; + + ?> + + + + + + + + +
                  + /> + + + +
                  +

                  + + +

                  + $true) { + $wc_description[] = $saved['description'][$ID]['num'] . ' ' + . $saved['description'][$ID]['title'] . ' with ' + . $saved['description'][$ID]['words'] . ' words'; + } + +?> +

                  + +

                  +
                    +
                  • ', $wc_description); ?>
                  • +
                  + +

                  + + + +

                  + + +
                  +
                  + + + save_settings(array('quote-get' => $saved)); + icl_quote_get_step_one($saved); + } else if ($data['step'] == 2) { + if (isset($data['next'])) { + $saved['from'] = $data['from']; + $saved['to'] = $data['to']; + } + $saved['step'] = 2; + $sitepress->save_settings(array('quote-get' => $saved)); + icl_quote_get_step_two($saved); + } else if ($data['step'] == 3) { + if (isset($data['next'])) { + $saved['content'] = $data['content']; + $saved['description'] = $data['description']; + } + $saved['step'] = 3; + $sitepress->save_settings(array('quote-get' => $saved)); + icl_quote_get_step_three($saved); + } + + ?> +
                  +
                  diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/sitepress-schema.php b/wp-content/plugins/sitepress-multilingual-cms/inc/sitepress-schema.php new file mode 100644 index 0000000..062c98d --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/sitepress-schema.php @@ -0,0 +1,433 @@ +has_cap( 'collation' ) ) { + if ( ! empty($wpdb->charset) ) + $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; + if ( ! empty($wpdb->collate) ) + $charset_collate .= " COLLATE $wpdb->collate"; + } + + try{ + + // languages table + $table_name = $wpdb->prefix.'icl_languages'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , + `code` VARCHAR( 7 ) NOT NULL , + `english_name` VARCHAR( 128 ) NOT NULL , + `major` TINYINT NOT NULL DEFAULT '0', + `active` TINYINT NOT NULL , + `default_locale` VARCHAR( 8 ), + `encode_url` TINYINT( 1 ) NOT NULL DEFAULT 0, + UNIQUE KEY `code` (`code`), + UNIQUE KEY `english_name` (`english_name`) + ) ENGINE=MyISAM {$charset_collate}"; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + + //$langs_names is defined in ICL_PLUGIN_PATH . '/inc/lang-data.php' + foreach($langs_names as $key=>$val){ + if(strpos($key,'Norwegian Bokm')===0){ $key = 'Norwegian Bokmål'; $lang_codes[$key] = 'nb';} // exception for norwegian + $default_locale = isset($lang_locales[$lang_codes[$key]]) ? $lang_locales[$lang_codes[$key]] : ''; + @$wpdb->insert($wpdb->prefix . 'icl_languages', array('english_name'=>$key, 'code'=>$lang_codes[$key], 'major'=>$val['major'], 'active'=>0, 'default_locale'=>$default_locale)); + } + } + + // languages translations table + $add_languages_translations = false; + $table_name = $wpdb->prefix.'icl_languages_translations'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , + `language_code` VARCHAR( 7 ) NOT NULL , + `display_language_code` VARCHAR( 7 ) NOT NULL , + `name` VARCHAR( 255 ) CHARACTER SET utf8 NOT NULL, + UNIQUE(`language_code`, `display_language_code`) + ) ENGINE=MyISAM {$charset_collate}"; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + $add_languages_translations = true; + } + //else{ + // this table will not be trucated on upgrade starting with WPML 1.7.3 + // $add_languages_translations sticks to false; + //if(!defined('ICL_PRESERVE_LANGUAGES_TRANSLATIONS') || !ICL_PRESERVE_LANGUAGES_TRANSLATIONS){ + // mysql_query("TRUNCATE TABLE `{$table_name}`"); + // $add_languages_translations = true; + //} + //} + + if($add_languages_translations){ + foreach($langs_names as $lang=>$val){ + if(strpos($lang,'Norwegian Bokm')===0){ $lang = 'Norwegian Bokmål'; $lang_codes[$lang] = 'nb';} + foreach($val['tr'] as $k=>$display){ + if(strpos($k,'Norwegian Bokm')===0){ $k = 'Norwegian Bokmål';} + if(!trim($display)){ + $display = $lang; + } + if(!($wpdb->get_var("SELECT id FROM {$table_name} WHERE language_code='{$lang_codes[$lang]}' AND display_language_code='{$lang_codes[$k]}'"))){ + $wpdb->insert($wpdb->prefix . 'icl_languages_translations', array('language_code'=>$lang_codes[$lang], 'display_language_code'=>$lang_codes[$k], 'name'=>$display)); + } + } + } + } + + + // translations + $table_name = $wpdb->prefix.'icl_translations'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `translation_id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY , + `element_type` VARCHAR( 32 ) NOT NULL DEFAULT 'post_post', + `element_id` BIGINT NULL DEFAULT NULL , + `trid` BIGINT NOT NULL , + `language_code` VARCHAR( 7 ) NOT NULL, + `source_language_code` VARCHAR( 7 ), + UNIQUE KEY `el_type_id` (`element_type`,`element_id`), + UNIQUE KEY `trid_lang` (`trid`,`language_code`) + ) ENGINE=MyISAM {$charset_collate}"; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + } + + // translation_status table + $table_name = $wpdb->prefix.'icl_translation_status'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `rid` bigint(20) NOT NULL AUTO_INCREMENT, + `translation_id` bigint(20) NOT NULL, + `status` tinyint(4) NOT NULL, + `translator_id` bigint(20) NOT NULL, + `needs_update` tinyint(4) NOT NULL, + `md5` varchar(32) NOT NULL, + `translation_service` varchar(16) NOT NULL, + `translation_package` text NOT NULL, + `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `links_fixed` tinyint(4) NOT NULL DEFAULT 0, + `_prevstate` longtext, + PRIMARY KEY (`rid`), + UNIQUE KEY `translation_id` (`translation_id`) + ) ENGINE=MyISAM {$charset_collate} + "; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + } + + // translation jobs + $table_name = $wpdb->prefix.'icl_translate_job'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `job_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , + `rid` BIGINT UNSIGNED NOT NULL , + `translator_id` INT UNSIGNED NOT NULL , + `translated` TINYINT UNSIGNED NOT NULL DEFAULT 0, + `manager_id` INT UNSIGNED NOT NULL , + `revision` INT UNSIGNED NULL, + INDEX ( `rid` , `translator_id` ) + ) ENGINE = MYISAM {$charset_collate} + "; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + } + + // translate table + $table_name = $wpdb->prefix.'icl_translate'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `tid` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , + `job_id` BIGINT UNSIGNED NOT NULL , + `content_id` BIGINT UNSIGNED NOT NULL , + `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , + `field_type` VARCHAR( 128 ) NOT NULL , + `field_format` VARCHAR( 16 ) NOT NULL , + `field_translate` TINYINT NOT NULL , + `field_data` TEXT NOT NULL , + `field_data_translated` TEXT NOT NULL , + `field_finished` TINYINT NOT NULL DEFAULT 0, + INDEX ( `job_id` ) + ) ENGINE = MYISAM {$charset_collate} + "; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + } + + // languages locale file names + $table_name = $wpdb->prefix.'icl_locale_map'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `code` VARCHAR( 8 ) NOT NULL , + `locale` VARCHAR( 8 ) NOT NULL , + UNIQUE (`code` ,`locale`) + ) ENGINE=MyISAM {$charset_collate}"; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + } + + // flags table + $table_name = $wpdb->prefix.'icl_flags'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , + `lang_code` VARCHAR( 10 ) NOT NULL , + `flag` VARCHAR( 32 ) NOT NULL , + `from_template` TINYINT NOT NULL DEFAULT '0', + UNIQUE (`lang_code`) + ) ENGINE=MyISAM {$charset_collate}"; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + $codes = $wpdb->get_col("SELECT code FROM {$wpdb->prefix}icl_languages"); + foreach($codes as $code){ + if(!$code || $wpdb->get_var("SELECT lang_code FROM {$wpdb->prefix}icl_flags WHERE lang_code='{$code}'")) continue; + if(!file_exists(ICL_PLUGIN_PATH.'/res/flags/'.$code.'.png')){ + $file = 'nil.png'; + }else{ + $file = $code.'.png'; + } + $wpdb->insert($wpdb->prefix.'icl_flags', array('lang_code'=>$code, 'flag'=>$file, 'from_template'=>0)); + } + } + + /* general string translation */ + $table_name = $wpdb->prefix.'icl_strings'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `language` varchar(10) NOT NULL, + `context` varchar(160) NOT NULL, + `name` varchar(160) NOT NULL, + `value` text NOT NULL, + `status` TINYINT NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `context_name` (`context`,`name`) + ) ENGINE=MyISAM {$charset_collate}"; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + } + + $table_name = $wpdb->prefix.'icl_string_translations'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `string_id` bigint(20) unsigned NOT NULL, + `language` varchar(10) NOT NULL, + `status` tinyint(4) NOT NULL, + `value` text NULL DEFAULT NULL, + `translator_id` bigint(20) unsigned DEFAULT NULL, + `translation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `string_language` (`string_id`,`language`) + ) ENGINE=MyISAM {$charset_collate}"; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + } + + $table_name = $wpdb->prefix.'icl_string_status'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , + `rid` BIGINT NOT NULL , + `string_translation_id` BIGINT NOT NULL , + `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , + `md5` VARCHAR( 32 ) NOT NULL, + INDEX ( `string_translation_id` ) + ) ENGINE=MyISAM {$charset_collate}"; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + } + + $table_name = $wpdb->prefix.'icl_string_positions'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , + `string_id` BIGINT NOT NULL , + `kind` TINYINT, + `position_in_page` VARCHAR( 255 ) NOT NULL, + INDEX ( `string_id` ) + ) ENGINE=MyISAM {$charset_collate}"; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + } + + // message status table + $table_name = $wpdb->prefix.'icl_message_status'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + $sql = " + CREATE TABLE `{$table_name}` ( + `id` bigint(20) unsigned NOT NULL auto_increment, + `rid` bigint(20) unsigned NOT NULL, + `object_id` bigint(20) unsigned NOT NULL, + `from_language` varchar(10) NOT NULL, + `to_language` varchar(10) NOT NULL, + `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP, + `md5` varchar(32) NOT NULL, + `object_type` varchar(64) NOT NULL, + `status` smallint(6) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `rid` (`rid`), + KEY `object_id` (`object_id`) + ) ENGINE=MyISAM {$charset_collate}"; + $wpdb->query($sql); + if($e = mysql_error()) throw new Exception($e); + } + + /* string translation - start */ + $icl_translation_sql = " + CREATE TABLE IF NOT EXISTS {$wpdb->prefix}icl_core_status ( + `id` BIGINT NOT NULL auto_increment, + `rid` BIGINT NOT NULL, + `module` VARCHAR( 16 ) NOT NULL , + `origin` VARCHAR( 64 ) NOT NULL , + `target` VARCHAR( 64 ) NOT NULL , + `status` SMALLINT NOT NULL, + PRIMARY KEY ( `id` ) , + INDEX ( `rid` ) + ) ENGINE=MyISAM {$charset_collate} + "; + $wpdb->query($icl_translation_sql); + if($e = mysql_error()) throw new Exception($e); + + $icl_translation_sql = " + CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}icl_content_status` ( + `rid` BIGINT NOT NULL , + `nid` BIGINT NOT NULL , + `timestamp` DATETIME NOT NULL , + `md5` VARCHAR( 32 ) NOT NULL , + PRIMARY KEY ( `rid` ) , + INDEX ( `nid` ) + ) ENGINE=MyISAM {$charset_collate} + "; + mysql_query($icl_translation_sql); + $wpdb->query($icl_translation_sql); + if($e = mysql_error()) throw new Exception($e); + + + $icl_translation_sql = " + CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}icl_node` ( + `nid` BIGINT NOT NULL , + `md5` VARCHAR( 32 ) NOT NULL , + `links_fixed` TINYINT NOT NULL DEFAULT 0, + PRIMARY KEY ( `nid` ) + ) ENGINE=MyISAM {$charset_collate} + "; + $wpdb->query($icl_translation_sql); + if($e = mysql_error()) throw new Exception($e); + + $icl_translation_sql = " + CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}icl_reminders` ( + `id` BIGINT NOT NULL , + `message` TEXT NOT NULL , + `url` TEXT NOT NULL , + `can_delete` TINYINT NOT NULL , + `show` TINYINT NOT NULL , + PRIMARY KEY ( `id` ) + ) ENGINE=MyISAM {$charset_collate} + "; + $wpdb->query($icl_translation_sql); + if($e = mysql_error()) throw new Exception($e); + + } catch(Exception $e) { + trigger_error($e->getMessage(), E_USER_ERROR); + exit; + } + + if(get_option('icl_sitepress_version')){ + icl_plugin_upgrade(); + } + + // don't set the new version if a multi-step upgrade is in progress + if(!defined('ICL_MULTI_STEP_UPGRADE')){ + delete_option('icl_sitepress_version'); + add_option('icl_sitepress_version', ICL_SITEPRESS_VERSION, '', true); + } + + + $iclsettings = get_option('icl_sitepress_settings'); + if($iclsettings === false ){ + $short_v = implode('.', array_slice(explode('.', ICL_SITEPRESS_VERSION), 0, 3)); + $settings = array( + 'hide_upgrade_notice' => $short_v + ); + add_option('icl_sitepress_settings', $settings, '', true); + }else{ + // reset ajx_health_flag + $iclsettings['ajx_health_checked'] = 0; + update_option('icl_sitepress_settings',$iclsettings); + } + +} + +function icl_sitepress_deactivate(){ +} + +// Changed to use lowercased wpdb prefix. Some users have table name in uppercase. +// http://bugs.mysql.com/bug.php?id=39894 +if(isset($_GET['activate'])){ + if(!isset($wpdb)) global $wpdb; + $table_name = $wpdb->prefix.'icl_languages'; + if(strtolower($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'")) != strtolower($table_name)){ + add_action('admin_notices', 'icl_cant_create_table'); + function icl_cant_create_table(){ + echo '
                  • '; + echo __('WPML cannot create the database tables! Make sure that your mysql user has the CREATE privilege', 'sitepress'); + echo '
                  '; + $active_plugins = get_option('active_plugins'); + $icl_sitepress_idx = array_search(ICL_PLUGIN_FOLDER . '/sitepress.php', $active_plugins); + if(false !== $icl_sitepress_idx){ + unset($active_plugins[$icl_sitepress_idx]); + update_option('active_plugins', $active_plugins); + unset($_GET['activate']); + $recently_activated = get_option('recently_activated'); + if(!isset($recently_activated[ICL_PLUGIN_FOLDER.'/sitepress.php'])){ + $recently_activated[ICL_PLUGIN_FOLDER.'/sitepress.php'] = time(); + update_option('recently_activated', $recently_activated); + } + } + } + } +} + +/* +function icl_cant_be_activated(){ + echo '
                  • '; + echo sprintf(__('WPML cannot be acctivated because: %s', 'sitepress'), $GLOBALS['_icl_activation_error']); + echo '
                  '; + $active_plugins = get_option('active_plugins'); + $icl_sitepress_idx = array_search(ICL_PLUGIN_FOLDER . '/sitepress.php', $active_plugins); + if(false !== $icl_sitepress_idx){ + unset($active_plugins[$icl_sitepress_idx]); + update_option('active_plugins', $active_plugins); + unset($_GET['activate']); + $recently_activated = get_option('recently_activated'); + if(!isset($recently_activated[ICL_PLUGIN_FOLDER.'/sitepress.php'])){ + $recently_activated[ICL_PLUGIN_FOLDER.'/sitepress.php'] = time(); + update_option('recently_activated', $recently_activated); + } + } +} +*/ + +?> \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/support.php b/wp-content/plugins/sitepress-multilingual-cms/inc/support.php new file mode 100644 index 0000000..c830e96 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/support.php @@ -0,0 +1,120 @@ +offer_wpml_org_subscription(); + } + + + function offer_wpml_org_subscription() { + + if (isset($_POST['icl_subscription_form_nonce']) + && $_POST['icl_subscription_form_nonce'] + == wp_create_nonce('icl_subscription_form')) { + + global $sitepress; + + $_POST['sub']['subscription_email'] = trim($_POST['sub']['subscription_email'], ' '); + $_POST['sub']['subscription_key'] = trim($_POST['sub']['subscription_key'], ' '); + $sitepress->save_settings($_POST['sub']); + + check_for_WPML_plugin_updates(get_site_transient('update_plugins')); + + echo ''; + } + + + global $sitepress_settings; + + $args = new stdClass; + $args->slug = 'WPML_all'; + + global $wpml_plugins; + + $installed = get_plugins(); + // Filter WPML plugins + foreach ($installed as $key => $plugin) { + if (!in_array($plugin['Name'], $wpml_plugins)) { + unset($installed[$key]); + } + } + // TODO Why use json decode? + //$args->installed = json_encode($installed); + $args->installed = $installed; + + $plugin_info = get_WPML_plugin_page(0, 'support_information', $args); + if (isset($plugin_info->subscription['after']) + && function_exists('is_multisite') + && is_multisite()) { + if (strpos($plugin_info->subscription['after'], 'href="plugins.php') !== false) { + $plugin_info->subscription['after'] = str_replace('href="plugins.php', 'href="' . network_admin_url('plugins.php'), $plugin_info->subscription['after']); + } + } + + ?> + +
                  + + + +

                  subscription['before']); ?>

                  + + + + + + + + + + + + + + + +

                  + + +

                  + + + subscription['after']); ?> + +
                  + +

                  WPML forum.','sitepress'); ?>

                  + ' . sprintf(__('For advanced access or to completely uninstall WPML and remove all language information, use the troubleshooting page.', 'sitepress'), + 'admin.php?page=' . basename(ICL_PLUGIN_PATH) . '/menu/troubleshooting.php') . '

                  '; + + } + + + + + } diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/template-constants.php b/wp-content/plugins/sitepress-multilingual-cms/inc/template-constants.php new file mode 100644 index 0000000..ea0945c --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/template-constants.php @@ -0,0 +1,14 @@ +this_lang); +} +$language_details = $this->get_language_details(ICL_LANGUAGE_CODE); +if(!defined('ICL_LANGUAGE_NAME')){ + define('ICL_LANGUAGE_NAME', $language_details['display_name']); +} +if(!defined('ICL_LANGUAGE_NAME_EN')){ + define('ICL_LANGUAGE_NAME_EN', $language_details['english_name']); +} + +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/template-functions.php b/wp-content/plugins/sitepress-multilingual-cms/inc/template-functions.php new file mode 100644 index 0000000..37f14c2 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/template-functions.php @@ -0,0 +1,467 @@ +language_url($sitepress->get_current_language()); +} + +// args: +// skip_missing (0|1|true|false) +// orderby (id|code|name) +// order (asc|desc) +function icl_get_languages($a='') { + if ($a) { + parse_str($a, $args); + } else { + $args = ''; + } + global $sitepress; + $langs = $sitepress->get_ls_languages($args); + return $langs; +} + +function icl_disp_language($native_name, $translated_name, + $lang_native_hidden = false, $lang_translated_hidden = false) { + if (!$native_name && !$translated_name) { + $ret = ''; + } elseif ($native_name && $translated_name) { + $hidden1 = $hidden2 = $hidden3 = ''; + if ($lang_native_hidden) { + $hidden1 = 'style="display:none;"'; + } + if ($lang_translated_hidden) { + $hidden2 = 'style="display:none;"'; + } + if ($lang_native_hidden && $lang_translated_hidden) { + $hidden3 = 'style="display:none;"'; + } + + if ($native_name != $translated_name) { + $ret = '' . $native_name . + ' (' . $translated_name . + ')'; + } else { + $ret = '' . $native_name . ''; + } + } elseif ($native_name) { + $ret = $native_name; + } elseif ($translated_name) { + $ret = $translated_name; + } + + return $ret; +} + +function icl_link_to_element($element_id, $element_type='post', $link_text='', + $optional_parameters=array(), $anchor='', $echoit = true, + $return_original_if_missing = true) { + global $sitepress, $wpdb, $wp_post_types, $wp_taxonomies; + + if ($element_type == 'tag') + $element_type = 'post_tag'; + if ($element_type == 'page') + $element_type = 'post'; + + $post_types = array_keys((array) $wp_post_types); + $taxonomies = array_keys((array) $wp_taxonomies); + + if (in_array($element_type, $taxonomies)) { + $element_id = $wpdb->get_var($wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id= %d AND taxonomy='{$element_type}'", + $element_id)); + } elseif (in_array($element_type, $post_types)) { + $element_type = 'post'; + } + + + if (!$element_id) + return ''; + + if (in_array($element_type, $taxonomies)) { + $icl_element_type = 'tax_' . $element_type; + } elseif (in_array($element_type, $post_types)) { + $icl_element_type = 'post_' . $wpdb->get_var("SELECT post_type FROM {$wpdb->posts} WHERE ID='{$element_id}'"); + } + + + $trid = $sitepress->get_element_trid($element_id, $icl_element_type); + $translations = $sitepress->get_element_translations($trid, + $icl_element_type); + + + // current language is ICL_LANGUAGE_CODE + if (isset($translations[ICL_LANGUAGE_CODE])) { + if ($element_type == 'post') { + $url = get_permalink($translations[ICL_LANGUAGE_CODE]->element_id); + $title = $translations[ICL_LANGUAGE_CODE]->post_title; + } elseif ($element_type == 'post_tag') { + list($term_id, $title) = $wpdb->get_row($wpdb->prepare("SELECT t.term_id, t.name FROM {$wpdb->term_taxonomy} tx JOIN {$wpdb->terms} t ON t.term_id = tx.term_id WHERE tx.term_taxonomy_id = %d AND tx.taxonomy='post_tag'", + $translations[ICL_LANGUAGE_CODE]->element_id), + ARRAY_N); + $url = get_tag_link($term_id); + $title = apply_filters('single_cat_title', $title); + } elseif ($element_type == 'category') { + list($term_id, $title) = $wpdb->get_row($wpdb->prepare("SELECT t.term_id, t.name FROM {$wpdb->term_taxonomy} tx JOIN {$wpdb->terms} t ON t.term_id = tx.term_id WHERE tx.term_taxonomy_id = %d AND tx.taxonomy='category'", + $translations[ICL_LANGUAGE_CODE]->element_id), + ARRAY_N); + $url = get_category_link($term_id); + $title = apply_filters('single_cat_title', $title); + } else { + list($term_id, $title) = $wpdb->get_row($wpdb->prepare("SELECT t.term_id, t.name FROM {$wpdb->term_taxonomy} tx JOIN {$wpdb->terms} t ON t.term_id = tx.term_id WHERE tx.term_taxonomy_id = %d AND tx.taxonomy='{$element_type}'", + $translations[ICL_LANGUAGE_CODE]->element_id), + ARRAY_N); + $url = get_term_link($term_id, $element_type); + $title = apply_filters('single_cat_title', $title); + } + } else { + if (!$return_original_if_missing) { + if ($echoit) { + echo ''; + } + return ''; + } + + if ($element_type == 'post') { + $url = get_permalink($element_id); + $title = get_the_title($element_id); + } elseif ($element_type == 'post_tag') { + $url = get_tag_link($element_id); + $my_tag = &get_term($element_id, 'post_tag', OBJECT, 'display'); + $title = apply_filters('single_tag_title', $my_tag->name); + } elseif ($element_type == 'category') { + $url = get_category_link($element_id); + $my_cat = &get_term($element_id, 'category', OBJECT, 'display'); + $title = apply_filters('single_cat_title', $my_cat->name); + } else { + $url = get_term_link((int) $element_id, $element_type); + $my_cat = &get_term($element_id, $element_type, OBJECT, 'display'); + $title = apply_filters('single_cat_title', $my_cat->name); + } + } + + if (!$url || is_wp_error($url)) + return ''; + + if (!empty($optional_parameters)) { + $url_glue = false === strpos($url, '?') ? '?' : '&'; + $url .= $url_glue . http_build_query($optional_parameters); + } + + if (isset($anchor) && $anchor) { + $url .= '#' . $anchor; + } + + $link = ''; + if (isset($link_text) && $link_text) { + $link .= $link_text; + } else { + $link .= $title; + } + $link .= ''; + + if ($echoit) { + echo $link; + } else { + return $link; + } +} + +function icl_object_id($element_id, $element_type='post', + $return_original_if_missing=false, $ulanguage_code=null) { + global $sitepress, $wpdb, $wp_post_types, $wp_taxonomies; + + // special case of any - we assume it's a post type + if($element_type == 'any' && $_dtype = $wpdb->get_var($wpdb->prepare("SELECT post_type FROM {$wpdb->posts} WHERE ID=%d", $element_id))){ + $element_type = $_dtype; + } + // + + static $fcache = array(); + $fcache_key = $element_id . '#' . $element_type . '#' . intval($return_original_if_missing) . '#' . $ulanguage_code; + if (isset($fcache[$fcache_key])) { + return $fcache[$fcache_key]; + } + + if ($element_id <= 0) { + return $element_id; + } + + $post_types = array_keys((array) $wp_post_types); + $taxonomies = array_keys((array) $wp_taxonomies); + $element_types = array_merge($post_types, $taxonomies); + $element_types[] = 'comment'; + + if (!in_array($element_type, $element_types)) { + trigger_error(__('Invalid object kind', 'sitepress'), E_USER_NOTICE); + return null; + } elseif (!$element_id) { + trigger_error(__('Invalid object id', 'sitepress'), E_USER_NOTICE); + return null; + } + + if (in_array($element_type, $taxonomies)) { + $icl_element_id = $wpdb->get_var($wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id= %d AND taxonomy='{$element_type}'", + $element_id)); + } else { + $icl_element_id = $element_id; + } + + if (in_array($element_type, $taxonomies)) { + $icl_element_type = 'tax_' . $element_type; + } elseif (in_array($element_type, $post_types)) { + $icl_element_type = 'post_' . $element_type; + } else { + $icl_element_type = $element_type; + } + + $trid = $sitepress->get_element_trid($icl_element_id, $icl_element_type); + $translations = $sitepress->get_element_translations($trid, + $icl_element_type); + if (is_null($ulanguage_code)) { + $ulanguage_code = $sitepress->get_current_language(); + } + if (isset($translations[$ulanguage_code]->element_id)) { + $ret_element_id = $translations[$ulanguage_code]->element_id; + if (in_array($element_type, $taxonomies)) { + $ret_element_id = $wpdb->get_var($wpdb->prepare("SELECT t.term_id FROM {$wpdb->term_taxonomy} tx JOIN {$wpdb->terms} t ON t.term_id = tx.term_id WHERE tx.term_taxonomy_id = %d AND tx.taxonomy='{$element_type}'", + $ret_element_id)); + } + } else { + $ret_element_id = $return_original_if_missing ? $element_id : null; + } + + $fcache[$fcache_key] = $ret_element_id; + + return $ret_element_id; +} + +function icl_get_default_language() { + global $sitepress; + return $sitepress->get_default_language(); +} + +function icl_tf_determine_mo_folder($folder, $rec = 0) { + global $sitepress; + + $dh = @opendir($folder); + $lfn = $sitepress->get_locale_file_names(); + + while ($file = readdir($dh)) { + if (0 === strpos($file, '.')) + continue; + if (is_file($folder . '/' . $file) && preg_match('#\.mo$#i', $file) && in_array(preg_replace('#\.mo$#i', + '', $file), $lfn)) { + return $folder; + } elseif (is_dir($folder . '/' . $file) && $rec < 5) { + if ($f = icl_tf_determine_mo_folder($folder . '/' . $file, $rec + 1)) { + return $f; + }; + } + } + + return false; +} + +function wpml_cf_translation_preferences($id, $custom_field = false, + $class = 'wpml', $ajax = false, $default_value = 'ignore', + $fieldset = false, $suppress_error = false) { + $output = ''; + if ($custom_field) { + $custom_field = @strval($custom_field); + } + $class = @strval($class); + if ($fieldset) { + $output .= ' +
                  ' + . '' . __('Translation preferences', 'wpml') . ''; + } + $actions = array('ignore' => 0, 'copy' => 1, 'translate' => 2); + $action = isset($actions[@strval($default_value)]) ? $actions[@strval($default_value)] : 0; + global $iclTranslationManagement; + if ($custom_field) { + if (defined('WPML_TM_VERSION') && !empty($iclTranslationManagement)) { + if (isset($iclTranslationManagement->settings['custom_fields_translation'][$custom_field])) { + $action = intval($iclTranslationManagement->settings['custom_fields_translation'][$custom_field]); + } + $disabled = $xml_override = in_array($custom_field, (array)$iclTranslationManagement->settings['custom_fields_readonly_config']); + if ($disabled) { + $output .= '
                  ' . __('The translation preference for this field are being controlled by a language configuration XML file. If you want to control it manually, remove the entry from the configuration file.', 'wpml') . '
                  '; + } + } else if (!$suppress_error) { + $output .= '' + . __("To synchronize values for translations, you need to enable WPML's Translation Management module.", + 'wpml') + . ''; + $disabled = true; + } + } else if (!$suppress_error) { + $output .= '' + . __('Error: Something is wrong with field value. Translation preferences can not be set.', + 'wpml') + . ''; + $disabled = true; + } + $disabled = !empty($disabled) ? ' readonly="readonly" disabled="disabled"' : ''; + $output .= '
                  ' + . __('Choose what to do when translating content with this field:', + 'wpml') + . '
                  +  +
                  +  +
                  +  +
                  '; + if ($custom_field && $ajax) { + $output .= ' +
                  + +'; + } + if ($fieldset) { + $output .= ' +
                  +'; + } + return $output; +} + +function wpml_cf_translation_preferences_store($id, $custom_field) { + if (defined('WPML_TM_VERSION')) { + if (empty($id) || empty($custom_field) + || !isset($_POST['wpml_cf_translation_preferences'][$id])) { + return false; + } + $custom_field = @strval($custom_field); + $action = @intval($_POST['wpml_cf_translation_preferences'][$id]); + global $iclTranslationManagement; + if (!empty($iclTranslationManagement)) { + $iclTranslationManagement->settings['custom_fields_translation'][$custom_field] = $action; + $iclTranslationManagement->save_settings(); + return true; + } else { + return false; + } + } + return false; +} + +/** + * wpml_get_copied_fields_for_post_edit + * + * return a list of fields that are marked for copying and the + * original post id that the fields should be copied from + * + * This should be used to popupate any custom field controls when + * a new translation is selected and the field is marked as "copy" (sync) + */ + +function wpml_get_copied_fields_for_post_edit() { + global $sitepress, $wpdb, $sitepress_settings, $pagenow; + + $copied_cf = array('fields' => array()); + $translations = null; + + if (defined('WPML_TM_VERSION')) { + + if(($pagenow == 'post-new.php' || $pagenow == 'post.php')) { + if (isset($_GET['trid'])){ + $post_type = isset($_GET['post_type'])?$_GET['post_type']:'post'; + + $translations = $sitepress->get_element_translations($_GET['trid'], 'post_' . $post_type); + + $source_lang = isset($_GET['source_lang'])?$_GET['source_lang']:$sitepress->get_default_language(); + $lang_details = $sitepress->get_language_details($source_lang); + } else if (isset($_GET['post'])) { + $post_id = @intval($_GET['post']); + $post_type = $wpdb->get_var("SELECT post_type FROM {$wpdb->posts} WHERE ID='{$post_id}'"); + $trid = $sitepress->get_element_trid($post_id, 'post_' . $post_type); + $original_id = $wpdb->get_var($wpdb->prepare("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE source_language_code IS NULL AND trid=%d", $trid)); + if ($original_id != $post_id) { + // Only return information if this is not the source language post. + $translations = $sitepress->get_element_translations($trid, 'post_' . $post_type); + $source_lang = $wpdb->get_var($wpdb->prepare("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE source_language_code IS NULL AND trid=%d", $trid)); + $lang_details = $sitepress->get_language_details($source_lang); + } + } + + if ($translations) { + $original_custom = get_post_custom($translations[$source_lang]->element_id); + + $copied_cf['original_post_id'] = $translations[$source_lang]->element_id; + $ccf_note = 'Notice'; + $copied_cf['copy_message'] = $ccf_note . sprintf(__('WPML will copy this field from %s when you save this post.', 'sitepress'), $lang_details['display_name']); + + foreach((array)$sitepress_settings['translation-management']['custom_fields_translation'] as $key=>$sync_opt){ + if($sync_opt == 1 && isset($original_custom[$key])){ + $copied_cf['fields'][] = $key; + } + } + } + } + } + + return $copied_cf; + +} + +function wpml_get_language_information($post_id = null){ + global $sitepress; + + if(is_null($post_id)){ + $post_id = get_the_ID(); + } + if(empty($post_id)) return new WP_Error('missing_id', __('Missing post ID', 'sitepress')); + + $post = get_post($post_id); + if(empty($post)) return new WP_Error('missing_post', sprintf(__('No such post for ID = %d', 'sitepress'), $post_id)); + + + $language = $sitepress->get_language_for_element($post_id, 'post_' . $post->post_type); + $language_information = $sitepress->get_language_details($language); + + $info = array( + 'locale' => $sitepress->get_locale($language), + 'text_direction' => $sitepress->is_rtl($language), + 'display_name' => $sitepress->get_display_language_name($language, $sitepress->get_current_language()), + 'native_name' => $language_information['display_name'], + 'different_language' => $language != $sitepress->get_current_language() + + ); + + return $info; + +} \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/tools/gen-languages.php b/wp-content/plugins/sitepress-multilingual-cms/inc/tools/gen-languages.php new file mode 100644 index 0000000..75702de --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/tools/gen-languages.php @@ -0,0 +1,31 @@ +$v){ + if($k < 3) continue; + $lang_idxs[] = $v; + } + }else{ + foreach($data as $k=>$v){ + if($k < 2) continue; + if($k == 2){ + $langs_names[$lang_idxs[$idx-1]]['major'] = intval($v); + continue; + } + $langs_names[$lang_idxs[$idx-1]]['tr'][$lang_idxs[$k-3]] = $v; + } + } + $idx++; +} + +$fh = fopen(ICL_PLUGIN_PATH . '/res/languages.csv.php','w') or die('Can\'t open file'); +fwrite($fh,''); +?> \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/pro-translation.class.php b/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/pro-translation.class.php new file mode 100644 index 0000000..836f827 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/pro-translation.class.php @@ -0,0 +1,2138 @@ +tmg =& $iclTranslationManagement; + + add_filter('xmlrpc_methods',array($this, 'custom_xmlrpc_methods')); + add_action('post_submitbox_start', array($this, 'post_submitbox_start')); + + add_action('icl_ajx_custom_call', array($this, 'ajax_calls'), 10, 2); + + add_action('icl_hourly_translation_pickup', array($this, 'poll_for_translations')); + + } + + function ajax_calls($call, $data){ + global $sitepress_settings, $sitepress; + switch($call){ + case 'set_pickup_mode': + $method = intval($data['icl_translation_pickup_method']); + $iclsettings['translation_pickup_method'] = $method; + $iclsettings['icl_disable_reminders'] = isset($_POST['icl_disable_reminders']) ? 1 : 0; + + $sitepress->save_settings($iclsettings); + + if(!empty($sitepress_settings) && !empty($sitepress_settings['site_id']) && !empty($sitepress_settings['access_key'])){ + $data['site_id'] = $sitepress_settings['site_id']; + $data['accesskey'] = $sitepress_settings['access_key']; + $data['create_account'] = 0; + $data['pickup_type'] = $method; + + $icl_query = new ICanLocalizeQuery(); + $res = $icl_query->updateAccount($data); + } + + if($method == ICL_PRO_TRANSLATION_PICKUP_XMLRPC){ + wp_clear_scheduled_hook('icl_hourly_translation_pickup'); + }else{ + wp_schedule_event(time(), 'hourly', 'icl_hourly_translation_pickup'); + } + + echo json_encode(array('message'=>'OK')); + break; + case 'pickup_translations': + if($sitepress_settings['translation_pickup_method']==ICL_PRO_TRANSLATION_PICKUP_POLLING){ + $fetched = $this->poll_for_translations(true); + echo json_encode(array('message'=>'OK', 'fetched'=> urlencode(' ' . sprintf(__('Fetched %d translations.', 'sitepress'), $fetched)))); + }else{ + echo json_encode(array('error'=>__('Manual pick up is disabled.', 'sitepress'))); + } + break; + } + } + + function send_post($post, $target_languages, $translator_id = 0){ + global $sitepress, $sitepress_settings, $wpdb, $iclTranslationManagement; + + // don't wait for init + if(empty($this->tmg->settings)){ + $iclTranslationManagement->init(); + } + + if(is_numeric($post)){ + $post = get_post($post); + } + $post_id = $post->ID; + + $err = false; + + if(!$post){ + return false; + } + + $orig_lang = $sitepress->get_language_for_element($post_id, 'post_' . $post->post_type); + $__ld = $sitepress->get_language_details($orig_lang); + $orig_lang_for_server = $this->server_languages_map($__ld['english_name']); + + if(empty($target_languages)) return false; + + // Make sure the previous request is complete. + // Only send if it needs update + foreach($target_languages as $target_lang){ + + if($target_lang == $orig_lang) continue; + + $translation = $this->tmg->get_element_translation($post_id, $target_lang, 'post_' . $post->post_type); + + if(empty($translation)){ // translated the first time + $tdata = array( + 'translate_from' => array($orig_lang), + 'translate_to' => array($target_lang=>1), + 'post' => array($post_id), + 'translator' => $translator_id, + 'service' => 'icanlocalize' + ); + $this->tmg->send_jobs($tdata); + $translation = $this->tmg->get_element_translation($post_id, $target_lang, 'post_' . $post->post_type); + } + + if($translation->needs_update || $translation->status == ICL_TM_NOT_TRANSLATED || $translation->status == ICL_TM_WAITING_FOR_TRANSLATOR){ + + $iclq = new ICanLocalizeQuery($sitepress_settings['site_id'], $sitepress_settings['access_key']); + if($post->post_type=='page'){ + $post_url = get_option('home') . '?page_id=' . ($post_id); + }else{ + $post_url = get_option('home') . '?p=' . ($post_id); + } + + $__ld = $sitepress->get_language_details($target_lang); + $target_for_server = $this->server_languages_map($__ld['english_name']); + + if (isset($post->external_type) && $post->external_type) { + + $data['url'] = htmlentities($post_url); + $data['target_languages'] = array($target_for_server); + + foreach ($post->string_data as $key => $value) { + $data['contents'][$key] = array( + 'translate' => 1, + 'data' => base64_encode($value), + 'format' => 'base64' + ); + } + + $data['contents']['original_id'] = array( + 'translate' => 0, + 'data' => $post->post_id, + ); + } else { + + // TAGS + // *************************************************************************** + foreach(wp_get_object_terms($post_id, 'post_tag') as $tag){ + $post_tags[$tag->term_taxonomy_id] = $tag->name; + } + + if(@is_array($post_tags)){ + //only send tags that don't have a translation + foreach($post_tags as $term_taxonomy_id=>$pc){ + $trid = $wpdb->get_var("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_id='{$term_taxonomy_id}' AND element_type='tax_post_tag'"); + foreach($target_languages as $lang){ + $not_translated = false; + if($trid != $wpdb->get_var("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE language_code='{$lang}' AND trid='{$trid}' AND element_id IS NOT NULL")){ + $not_translated = true; + break; + } + } + if($not_translated){ + $tags_to_translate[$term_taxonomy_id] = $pc; + } + } + sort($post_tags, SORT_STRING); + } + + // CATEGORIES + // *************************************************************************** + foreach(wp_get_object_terms($post_id, 'category') as $cat){ + $post_categories[$cat->term_taxonomy_id] = $cat->name; + } + + if(@is_array($post_categories)){ + //only send categories that don't have a translation + foreach($post_categories as $term_taxonomy_id=>$pc){ + $trid = $wpdb->get_var("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_id='{$term_taxonomy_id}' AND element_type='tax_category'"); + foreach($target_languages as $lang){ + $not_translated = false; + if($trid != $wpdb->get_var("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE language_code='{$lang}' AND trid='{$trid}' AND element_id IS NOT NULL")){ + $not_translated = true; + break; + } + } + if($not_translated){ + $categories_to_translate[$term_taxonomy_id] = $pc; + } + } + sort($post_categories, SORT_STRING); + } + + // CUSTOM TAXONOMIES + // *************************************************************************** + $taxonomies = $wpdb->get_col(" + SELECT DISTINCT tx.taxonomy + FROM {$wpdb->term_taxonomy} tx JOIN {$wpdb->term_relationships} tr ON tx.term_taxonomy_id = tr.term_taxonomy_id + WHERE tr.object_id = {$post_id} + "); + foreach($taxonomies as $t){ + if(@intval($sitepress_settings['taxonomies_sync_option'][$t]) == 1){ + $object_terms = $wpdb->get_results(" + SELECT x.term_taxonomy_id, t.name + FROM {$wpdb->terms} t + JOIN {$wpdb->term_taxonomy} x ON t.term_id=x.term_id + JOIN {$wpdb->term_relationships} r ON x.term_taxonomy_id = r.term_taxonomy_id + WHERE x.taxonomy = '{$t}' AND r.object_id = $post_id + "); + foreach($object_terms as $trm){ + $trid = $wpdb->get_var("SELECT trid FROM {$wpdb->prefix}icl_translations + WHERE element_id='{$trm->term_taxonomy_id}' AND element_type='tax_{$t}'"); + foreach($target_languages as $lang){ + $not_translated = false; + if($trid != $wpdb->get_var(" + SELECT trid FROM {$wpdb->prefix}icl_translations WHERE l.english_name='{$lang}' AND trid='{$trid}' AND element_id IS NOT NULL + ")){ + $not_translated = true; + break; + } + } + if($not_translated){ + $taxonomies_to_translate[$t][$trm->term_taxonomy_id] = $trm->name; + } + } + } + } + + + $data['url'] = htmlentities($post_url); + $data['contents']['title'] = array( + 'translate'=>1, + 'data'=>base64_encode($post->post_title), + 'format'=>'base64' + ); + if($sitepress_settings['translated_document_page_url'] == 'translate'){ + $data['contents']['URL'] = array( + 'translate'=>1, + 'data'=>base64_encode($post->post_name), + 'format'=>'base64' + ); + } + + if(!empty($post->post_excerpt)) + $data['contents']['excerpt'] = array( + 'translate'=>1, + 'data'=>base64_encode($post->post_excerpt), + 'format'=>'base64' + ); + $data['contents']['body'] = array( + 'translate'=>1, + 'data'=>base64_encode($post->post_content), + 'format'=>'base64' + ); + $data['contents']['original_id'] = array( + 'translate'=>0, + 'data'=>$post_id + ); + $data['target_languages'] = array($target_for_server); + + $custom_fields = array(); + foreach((array)$iclTranslationManagement->settings['custom_fields_translation'] as $cf => $op){ + if ($op == 2) { + $custom_fields[] = $cf; + } + } + + foreach($custom_fields as $cf){ + $custom_fields_value = get_post_meta($post_id, $cf, true); + if ($custom_fields_value != '') { + $data['contents']['field-'.$cf] = array( + 'translate' => 1, + 'data' => base64_encode($custom_fields_value), + 'format' => 'base64', + ); + $data['contents']['field-'.$cf.'-name'] = array( + 'translate' => 0, + 'data' => $cf, + ); + $data['contents']['field-'.$cf.'-type'] = array( + 'translate' => 0, + 'data' => 'custom_field', + ); + } + } + + + if(@is_array($categories_to_translate)){ + $data['contents']['categories'] = array( + 'translate'=>1, + 'data'=> implode(',', array_map(create_function('$e', 'return \'"\'.base64_encode($e).\'"\';'), $categories_to_translate)), + 'format'=>'csv_base64' + ); + $data['contents']['category_ids'] = array( + 'translate'=>0, + 'data'=> implode(',', array_keys($categories_to_translate)), + 'format'=>'' + ); + } + + if(@is_array($tags_to_translate)){ + $data['contents']['tags'] = array( + 'translate'=>1, + 'data'=> implode(',', array_map(create_function('$e', 'return \'"\'.base64_encode($e).\'"\';'), $tags_to_translate)), + 'format'=>'csv_base64' + ); + $data['contents']['tag_ids'] = array( + 'translate'=>0, + 'data'=> implode(',', array_keys($tags_to_translate)), + 'format'=>'' + ); + } + + if(@is_array($taxonomies_to_translate)){ + foreach($taxonomies_to_translate as $k=>$v){ + $data['contents'][$k] = array( + 'translate'=>1, + 'data'=> implode(',', array_map(create_function('$e', 'return \'"\'.base64_encode($e).\'"\';'), $v)), + 'format'=>'csv_base64' + ); + $data['contents'][$k.'_ids'] = array( + 'translate'=>0, + 'data'=> implode(',', array_keys($v)), + 'format'=>'' + ); + } + } + + if($post->post_status=='publish'){ + $permlink = $post_url; + }else{ + $permlink = false; + } + + $note = get_post_meta($post_id, '_icl_translator_note', true); + + // if this is an old request having a old request_id, include that + if($wpdb->prefix.'icl_content_status' == $wpdb->get_var("SHOW TABLES LIKE '{$wpdb->prefix}icl_content_status'")){ + $prev_rid = $wpdb->get_var($wpdb->prepare("SELECT MAX(rid) FROM {$wpdb->prefix}icl_content_status WHERE nid=%d", $post_id)); + if(!empty($prev_rid)){ + $data['previous_cms_request_id'] = $prev_rid; + } + } + } + + $data = apply_filters('icl_data_for_pro_translation', $data); + + $xml = $iclq->build_cms_request_xml($data, $orig_lang_for_server); + $cms_id = sprintf('%s_%d_%s_%s', $post->post_type, $post->ID, $orig_lang, $target_lang); + $args = array( + 'cms_id' => $cms_id, + 'xml' => $xml, + 'title' => $post->post_title, + 'to_languages' => array($target_for_server), + 'orig_language' => $orig_lang_for_server, + 'permlink' => isset($permlink) ? $permlink : false, + 'translator_id' => $translator_id, + 'note' => isset($note) ? $note : '', + ); + + $res = $iclq->send_request($args); + if($res > 0){ + $this->tmg->update_translation_status(array( + 'translation_id'=>$translation->translation_id, + 'status' => ICL_TM_IN_PROGRESS, + 'needs_update' => 0 + )); + }else{ + $_prevstate = $wpdb->get_var($wpdb->prepare("SELECT _prevstate FROM {$wpdb->prefix}icl_translation_status WHERE translation_id=%d", $translation->translation_id)); + if(!empty($_prevstate)){ + $_prevstate = unserialize($_prevstate); + $wpdb->update($wpdb->prefix . 'icl_translation_status', + array( + 'status' => $_prevstate['status'], + 'translator_id' => $_prevstate['translator_id'], + 'status' => $_prevstate['status'], + 'needs_update' => $_prevstate['needs_update'], + 'md5' => $_prevstate['md5'], + 'translation_service' => $_prevstate['translation_service'], + 'translation_package' => $_prevstate['translation_package'], + 'timestamp' => $_prevstate['timestamp'], + 'links_fixed' => $_prevstate['links_fixed'] + ), + array('translation_id'=>$translation->translation_id) + ); + }else{ + $wpdb->update($wpdb->prefix . 'icl_translation_status', + array('status'=>ICL_TM_NOT_TRANSLATED, 'needs_update'=>0), array('translation_id'=>$translation->translation_id)); + } + $err = true; + } + } // if needs translation + } // foreach target lang + return $err ? false : $res; //last $ret + } + + public function server_languages_map($language_name, $server2plugin = false){ + if(is_array($language_name)){ + return array_map(array($this, 'icl_server_languages_map'), $language_name); + } + $map = array( + 'Norwegian BokmÃ¥l' => 'Norwegian', + 'Portuguese, Brazil' => 'Portuguese', + 'Portuguese, Portugal' => 'Portugal Portuguese' + ); + if($server2plugin){ + $map = array_flip($map); + } + if(isset($map[$language_name])){ + return $map[$language_name]; + }else{ + return $language_name; + } + } + + function custom_xmlrpc_methods($methods){ + + $icl_methods['icanlocalize.update_status_by_cms_id'] = array($this, 'get_translated_document'); + + // for migration to 2.0.0 + $icl_methods['icanlocalize.set_translation_status'] = array($this,'_legacy_set_translation_status'); + + //$icl_methods['icanlocalize.set_translation_status'] = array($this,'get_translated_string'); // use for strings - old method + + //$icl_methods['icanlocalize.list_posts'] = array($this, '_list_posts'); + //$icl_methods['icanlocalize.translate_post'] = array($this, '_remote_control_translate_post'); + + $icl_methods['icanlocalize.test_xmlrpc'] = array($this, '_test_xmlrpc'); + $icl_methods['icanlocalize.cancel_translation_by_cms_id'] = array($this, '_xmlrpc_cancel_translation'); + + // for migration to 2.0.0 + $icl_methods['icanlocalize.cancel_translation'] = array($this, '_legacy_xmlrpc_cancel_translation'); + + $icl_methods['icanlocalize.notify_comment_translation'] = array($this, '_xmlrpc_add_message_translation'); + + + $methods = $methods + $icl_methods; + if(defined('XMLRPC_REQUEST') && XMLRPC_REQUEST){ + preg_match('#([^<]+)#i', $GLOBALS['HTTP_RAW_POST_DATA'], $matches); + $method = $matches[1]; + if(in_array($method, array_keys($icl_methods))){ + //error_reporting(E_NONE); + //ini_set('display_errors', '0'); + $old_error_handler = set_error_handler(array($this, "_translation_error_handler"),E_ERROR|E_USER_ERROR); + } + } + return $methods; + + } + + function _legacy_set_translation_status($args){ + global $sitepress_settings, $sitepress, $wpdb; + try{ + + $signature = $args[0]; + $site_id = $args[1]; + $request_id = $args[2]; + $original_language = $args[3]; + $language = $args[4]; + $status = $args[5]; + $message = $args[6]; + + if ($site_id != $sitepress_settings['site_id']) { + return 3; + } + + //check signature + $signature_chk = sha1($sitepress_settings['access_key'].$sitepress_settings['site_id'].$request_id.$language.$status.$message); + if($signature_chk != $signature){ + return 2; + } + + $lang_code = $sitepress->get_language_code($this->server_languages_map($language, true));//the 'reverse' language filter + $cms_request_info = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}icl_core_status WHERE rid={$request_id} AND target='{$lang_code}'"); + + if (empty($cms_request_info)){ + $this->_throw_exception_for_mysql_errors(); + return 4; + } + + if ($this->_legacy_process_translated_document($request_id, $language, $args)){ + $this->_throw_exception_for_mysql_errors(); + return 1; + } else { + $this->_throw_exception_for_mysql_errors(); + return 6; + } + + }catch(Exception $e) { + return $e->getMessage(); + } + + } + + function _legacy_process_translated_document($request_id, $language, $args){ + + global $sitepress_settings, $wpdb, $sitepress, $iclTranslationManagement; + $ret = false; + $iclq = new ICanLocalizeQuery($sitepress_settings['site_id'], $sitepress_settings['access_key']); + $post_type = $wpdb->get_var($wpdb->prepare("SELECT p.post_type FROM {$wpdb->posts} p JOIN {$wpdb->prefix}icl_content_status c ON p.ID = c.nid WHERE c.rid=%d", $request_id)); + $trid = $wpdb->get_var($wpdb->prepare(" + SELECT trid + FROM {$wpdb->prefix}icl_translations t + JOIN {$wpdb->prefix}icl_content_status c ON t.element_id = c.nid AND t.element_type='post_{$post_type}' AND c.rid=%d",$request_id)); + $translation = $iclq->cms_do_download($request_id, $language); + + if($translation){ + if (icl_is_string_translation($translation)){ + $ret = $this->get_translated_string($args); + } else { + // we need to create a cms_id for this + list($lang_from, $lang_to) = $wpdb->get_row($wpdb->prepare(" + SELECT origin, target FROM {$wpdb->prefix}icl_core_status WHERE rid=%d ORDER BY id DESC LIMIT 1 + ", $request_id), ARRAY_N); + $translation_id = $wpdb->get_var($wpdb->prepare(" + SELECT translation_id FROM {$wpdb->prefix}icl_translations WHERE trid=%d and language_code='%s' + ", $trid, $lang_to)); + + if(!$translation_id){ + $wpdb->insert($wpdb->prefix.'icl_translations', array( + 'element_type' => 'post_' . $post_type, + 'trid' => $trid, + 'language_code' => $lang_to, + 'source_language_code' => $lang_from + )); + $translation_id = $wpdb->insert_id; + } + + $original_post_id = $wpdb->get_var($wpdb->prepare("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND source_language_code IS NULL", $trid)); + + $translation_package = $iclTranslationManagement->create_translation_package($original_post_id); + $md5 = $iclTranslationManagement->post_md5($original_post_id); + + + $translator_id = $wpdb->get_var($wpdb->prepare("SELECT post_author FROM {$wpdb->posts} WHERE ID=%d", $original_post_id)); + // add translation_status record + + list($rid, $update) = $iclTranslationManagement->update_translation_status(array( + 'translation_id' => $translation_id, + 'status' => 2, + 'translator_id' => $translator_id, + 'needs_update' => 0, + 'md5' => $md5, + 'translation_service' => 'icanlocalize', + 'translation_package' => serialize($translation_package) + )); + $job_ids[] = $iclTranslationManagement->add_translation_job($rid, $translator_id, $translation_package); + + + $ret = $this->add_translated_document($translation_id, $request_id); + + } + if($ret){ + $iclq->cms_update_request_status($request_id, CMS_TARGET_LANGUAGE_DONE, $language); + } + + } + return $ret; + } + + /* + * 0 - unknown error + * 1 - success + * 2 - signature mismatch + * 3 - website_id incorrect + * 4 - cms_id not found + * 5 - icl translation not enabled + * 6 - unknown error processing translation + */ + function get_translated_document($args){ + global $sitepress_settings, $sitepress, $wpdb; + try{ + + $signature = $args[0]; + $site_id = $args[1]; + $request_id = $args[2]; + $cms_id = $args[3]; + $status = $args[4]; + $message = $args[5]; + + + if ($site_id != $sitepress_settings['site_id']) { + return 3; + } + + //check signature + $signature_chk = sha1($sitepress_settings['access_key'].$sitepress_settings['site_id'].$cms_id.$status.$message); + if($signature_chk != $signature){ + return 2; + } + + // decode cms_id + $int = preg_match('#(.+)_([0-9]+)_([^_]+)_([^_]+)#', $cms_id, $matches); + + $_element_type = $matches[1]; + $_element_id = $matches[2]; + $_original_lang = $matches[3]; + $_lang = $matches[4]; + + $trid = $sitepress->get_element_trid($_element_id, 'post_'. $_element_type); + if(!$trid){ + return 4; + } + + $translation = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND language_code=%s", $trid, $_lang)); + + if (empty($translation)){ // if the translation was deleted re-create it + + $wpdb->insert($wpdb->prefix.'icl_translations', array( + 'element_type' => 'post_' . $_element_type, + 'trid' => $trid, + 'language_code' => $_lang, + 'source_language_code' => $_original_lang + )); + + $translation_id = $wpdb->insert_id; + + $md5 = $this->tmg->post_md5($_element_id); + + $translation_package = $this->tmg->create_translation_package($_element_id); + + $translator_id = 0; //TO FIX! + list($rid, $update) = $this->tmg->update_translation_status(array( + 'translation_id' => $translation_id, + 'status' => ICL_TM_IN_PROGRESS, + 'translator_id' => $translator_id, + 'needs_update' => 0, + 'md5' => $md5, + 'translation_service' => 'icanlocalize', + 'translation_package' => serialize($translation_package) + )); + $this->tmg->add_translation_job($rid, $translator_id, $translation_package); + + }else{ + + $translation_id = $translation->translation_id; + + // if the post is trashed set the element_id to null + if('trash' == $wpdb->get_var($wpdb->prepare("SELECT post_status FROM {$wpdb->posts} WHERE ID=%d", $translation->element_id))){ + $wpdb->query("UPDATE {$wpdb->prefix}icl_translations SET element_id = NULL WHERE translation_id={$translation->translation_id}"); + } + + } + + if ($this->add_translated_document($translation_id, $request_id) === true){ + $this->_throw_exception_for_mysql_errors(); + return 1; + } else { + $this->_throw_exception_for_mysql_errors(); + return 6; + } + + }catch(Exception $e) { + return $e->getMessage(); + } + } + + function add_translated_document($translation_id, $request_id){ + global $sitepress_settings, $wpdb, $sitepress; + + $iclq = new ICanLocalizeQuery($sitepress_settings['site_id'], $sitepress_settings['access_key']); + $tinfo = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}icl_translations WHERE translation_id=%d", $translation_id)); + $_lang = $sitepress->get_language_details($tinfo->language_code); + $translation = $iclq->cms_do_download($request_id, $this->server_languages_map($_lang['english_name'])); + + $translation = apply_filters('icl_data_from_pro_translation', $translation); + + $ret = false; + + if(!empty($translation)){ + $language_code = $wpdb->get_var($wpdb->prepare(" + SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE translation_id=%d", $translation_id + )); + $parts = explode('_', $translation['original_id']); + if ($parts[0] == 'external') { + + // Translations are saved in the string table for 'external' types + + $id = array_pop($parts); + unset($parts[0]); + $type = implode('_', $parts); + + unset($translation['original_id']); + foreach($translation as $field => $value){ + if (function_exists('icl_st_is_registered_string')) { + $value = str_replace('�A;', "\n", $value); + $string_id = icl_st_is_registered_string($type, $id . '_' . $field); + if (!$string_id) { + icl_register_string($type, $id . '_' . $field, $value); + $string_id = icl_st_is_registered_string($type, $id . '_' . $field); + } + if ($string_id) { + icl_add_string_translation($string_id, $language_code, $value, ICL_STRING_TRANSLATION_COMPLETE); + } + } + } + $ret = true; + } else { + $ret = $this->save_post_translation($translation_id, $translation); + } + + if($ret){ + $lang_details = $sitepress->get_language_details($language_code); + $language_server = $this->server_languages_map($lang_details['english_name']); + $iclq->cms_update_request_status($request_id, CMS_TARGET_LANGUAGE_DONE, $language_server); + + $translations = $sitepress->get_element_translations($tinfo->trid, $tinfo->element_type); + + if(isset($translations[$tinfo->language_code])){ + $iclq->report_back_permalink($request_id, $language_server, $translations[$tinfo->language_code]); + } + + } + } + + return $ret; + } + + function save_post_translation($translation_id, $translation){ + global $wpdb, $sitepress_settings, $sitepress, $wp_taxonomies, $icl_adjust_id_url_filter_off; + $icl_adjust_id_url_filter_off = true; + + $taxonomies = array_diff(array_keys((array)$wp_taxonomies), array('post_tag','category')); + + $tinfo = $wpdb->get_row($wpdb->prepare(" + SELECT * FROM {$wpdb->prefix}icl_translations tr + JOIN {$wpdb->prefix}icl_translation_status ts ON ts.translation_id = tr.translation_id + WHERE tr.translation_id=%d", $translation_id)); + $lang_code = $tinfo->language_code; + $trid = $tinfo->trid; + + $original_post_details = $wpdb->get_row(" + SELECT p.post_author, p.post_type, p.post_status, p.comment_status, p.ping_status, p.post_parent, p.menu_order, p.post_date, t.language_code + FROM {$wpdb->prefix}icl_translations t + JOIN {$wpdb->posts} p ON t.element_id = p.ID AND CONCAT('post_',p.post_type) = t.element_type + WHERE trid='{$trid}' AND p.ID = '{$translation['original_id']}' + "); + + //is the original post a sticky post? + remove_filter('option_sticky_posts', array($sitepress,'option_sticky_posts')); // remove filter used to get language relevant stickies. get them all + $sticky_posts = get_option('sticky_posts'); + $is_original_sticky = $original_post_details->post_type=='post' && in_array($translation['original_id'], $sticky_posts); + + + $this->_content_fix_image_paths_in_body($translation); + $this->_content_fix_relative_link_paths_in_body($translation); + $this->_content_decode_shortcodes($translation); + + + // deal with tags + if(isset($translation['tags'])){ + $translated_tags = $translation['tags']; + $translated_tag_ids = explode(',', $translation['tag_ids']); + foreach($translated_tags as $k=>$v){ + $tag_trid = $wpdb->get_var("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_id='{$translated_tag_ids[$k]}' AND element_type='tax_post_tag'"); + + // before adding the new term make sure that another tag with the same name doesn't exist. If it does append @lang + // same term name exists in a different language? + $term_different_language = $wpdb->get_var(" + SELECT tm.term_id + FROM {$wpdb->term_taxonomy} tx + JOIN {$wpdb->terms} tm ON tx.term_id = tm.term_id + JOIN {$wpdb->prefix}icl_translations tr ON tx.term_taxonomy_id = tr.element_id + WHERE tm.name='".$wpdb->escape($v)."' AND tr.element_type LIKE 'tax\\_%' AND tr.language_code <> '{$lang_code}' + "); + if($term_different_language){ + $v .= ' @'.$lang_code; + } + + //tag exists? (in the current language) + $etag = get_term_by('name', htmlspecialchars($v), 'post_tag'); + if(!$etag){ + $etag = get_term_by('name', htmlspecialchars($v) . ' @'.$lang_code, 'post_tag'); + } + if(!$etag){ + $tmp = wp_insert_term($v, 'post_tag'); + if(!is_wp_error($tmp) && isset($tmp['term_taxonomy_id'])){ + $wpdb->update($wpdb->prefix.'icl_translations', + array('language_code'=>$lang_code, 'trid'=>$tag_trid, 'source_language_code'=>$original_post_details->language_code), + array('element_type'=>'tax_post_tag','element_id'=>$tmp['term_taxonomy_id'])); + } + }else{ + $term_taxonomy_id = $etag->term_taxonomy_id; + // check whether we have an orphan translation - the same trid and language but a different element id + $__translation_id = $wpdb->get_var(" + SELECT translation_id FROM {$wpdb->prefix}icl_translations + WHERE trid = '{$tag_trid}' + AND language_code = '{$lang_code}' + AND element_id <> '{$term_taxonomy_id}' + "); + if($__translation_id){ + $wpdb->query("DELETE FROM {$wpdb->prefix}icl_translations WHERE translation_id={$__translation_id}"); + } + + $tag_translation_id = $wpdb->get_var("SELECT translation_id FROM {$wpdb->prefix}icl_translations WHERE element_id={$term_taxonomy_id} AND element_type='tax_post_tag'"); + if($tag_translation_id){ + $wpdb->update($wpdb->prefix.'icl_translations', + array('language_code'=>$lang_code, 'trid'=>$tag_trid, 'source_language_code'=>$original_post_details->language_code), + array('element_type'=>'tax_post_tag','translation_id'=>$tag_translation_id)); + }else{ + $wpdb->insert($wpdb->prefix.'icl_translations', + array('language_code'=>$lang_code, 'trid'=>$tag_trid, 'element_type'=>'tax_post_tag', 'element_id'=>$term_taxonomy_id, 'source_language_code'=>$original_post_details->language_code)); + } + } + } + } + + $original_post_tags = array(); + foreach(wp_get_object_terms($translation['original_id'] , 'post_tag') as $t){ + $original_post_tags[] = $t->term_taxonomy_id; + } + if($original_post_tags){ + $tag_trids = $wpdb->get_col("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_type='tax_post_tag' AND element_id IN (".join(',',$original_post_tags).")"); + if(!empty($tag_trids)) + $tag_tr_tts = $wpdb->get_col("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE element_type='tax_post_tag' AND language_code='{$lang_code}' AND trid IN (".join(',',$tag_trids).")"); + if(!empty($tag_tr_tts)) + $translated_tags = $wpdb->get_col("SELECT t.name FROM {$wpdb->terms} t JOIN {$wpdb->term_taxonomy} tx ON tx.term_id = t.term_id WHERE tx.taxonomy='post_tag' AND tx.term_taxonomy_id IN (".join(',',$tag_tr_tts).")"); + } + + // deal with categories + if(isset($translation['categories'])){ + $translated_cats = $translation['categories']; + $translated_cats_ids = explode(',', $translation['category_ids']); + foreach($translated_cats as $k=>$v){ + //$v = trim(str_replace('

                  ', '', $v)); + $cat_trid = $wpdb->get_var("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_id='{$translated_cats_ids[$k]}' AND element_type='tax_category'"); + + // before adding the new term make sure that another tag with the same name doesn't exist. If it does append @lang + // same term name exists in a different language? + $term_different_language = $wpdb->get_var(" + SELECT tm.term_id + FROM {$wpdb->term_taxonomy} tx + JOIN {$wpdb->terms} tm ON tx.term_id = tm.term_id + JOIN {$wpdb->prefix}icl_translations tr ON tx.term_taxonomy_id = tr.element_id + WHERE tm.name='".$wpdb->escape($v)."' AND tr.element_type LIKE 'tax\\_%' AND tr.language_code <> '{$lang_code}' + "); + if($term_different_language){ + $v .= ' @'.$lang_code; + } + + //cat exists? + $ecat = get_term_by('name', htmlspecialchars($v), 'category'); + if(!$ecat){ + $ecat = get_term_by('name', htmlspecialchars($v) . ' @'.$lang_code, 'category'); + } + + if(!$ecat){ + // get original category parent id + $original_category_parent_id = $wpdb->get_var($wpdb->prepare("SELECT parent FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id=%d",$translated_cats_ids[$k])); + if($original_category_parent_id){ + $_op_tax_id = $wpdb->get_var($wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy='category' AND term_id=%d",$original_category_parent_id)); + $_op_trid = $wpdb->get_var($wpdb->prepare("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_type='tax_category' AND element_id=%d",$_op_tax_id)); + // get id of the translated category parent + $_tp_tax_id = $wpdb->get_var($wpdb->prepare("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE language_code='{$lang_code}' AND trid=%d",$_op_trid)); + if($_tp_tax_id){ + $category_parent_id = $wpdb->get_var($wpdb->prepare("SELECT term_id FROM {$wpdb->term_taxonomy} WHERE taxonomy='category' AND term_taxonomy_id=%d",$_tp_tax_id)); + }else{ + $category_parent_id = 0; + } + }else{ + $category_parent_id = 0; + } + $tmp = wp_insert_term($v, 'category', array('parent'=>$category_parent_id)); + if(!is_wp_error($tmp) && isset($tmp['term_taxonomy_id'])){ + $wpdb->update($wpdb->prefix.'icl_translations', + array('language_code'=>$lang_code, 'trid'=>$cat_trid, 'source_language_code'=>$original_post_details->language_code), + array('element_type'=>'tax_category','element_id'=>$tmp['term_taxonomy_id'])); + + // if this is a parent category, make sure that nesting is correct for all translations + $orig_cat_tax_id = $wpdb->get_var($wpdb->prepare("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND source_language_code IS NULL", $cat_trid)); + $orig_cat_term_id = $wpdb->get_var($wpdb->prepare("SELECT term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id=%d AND taxonomy='category'",$orig_cat_tax_id)); + $orig_cat_children = $wpdb->get_col($wpdb->prepare("SELECT term_id FROM {$wpdb->term_taxonomy} WHERE parent=%d",$orig_cat_term_id)); + if(!empty($orig_cat_children)) foreach($orig_cat_children as $ch){ + $_tr_child = icl_object_id($ch, 'category', false, $lang_code); + if($_tr_child){ + $wpdb->update($wpdb->term_taxonomy, array('parent'=>$tmp['term_id']), array( + 'taxonomy'=>'category', 'term_id' => $_tr_child + )); + } + } + delete_option('category_children'); + } + }else{ + $term_taxonomy_id = $ecat->term_taxonomy_id; + // check whether we have an orphan translation - the same trid and language but a different element id + $__translation_id = $wpdb->get_var(" + SELECT translation_id FROM {$wpdb->prefix}icl_translations + WHERE trid = '{$cat_trid}' + AND language_code = '{$lang_code}' + AND element_id <> '{$term_taxonomy_id}' + "); + if($__translation_id){ + $wpdb->query("DELETE FROM {$wpdb->prefix}icl_translations WHERE translation_id={$__translation_id}"); + } + + $cat_translation_id = $wpdb->get_var("SELECT translation_id FROM {$wpdb->prefix}icl_translations WHERE element_id={$term_taxonomy_id} AND element_type='tax_category'"); + if($cat_translation_id){ + $wpdb->update($wpdb->prefix.'icl_translations', + array('language_code'=>$lang_code, 'trid'=>$cat_trid, 'source_language_code'=>$original_post_details->language_code), + array('element_type'=>'tax_category','translation_id'=>$cat_translation_id)); + }else{ + $wpdb->insert($wpdb->prefix.'icl_translations', + array('language_code'=>$lang_code, 'trid'=>$cat_trid, 'element_type'=>'tax_category', 'element_id'=>$term_taxonomy_id, 'source_language_code'=>$original_post_details->language_code)); + } + } + } + } + $original_post_cats = array(); + foreach(wp_get_object_terms($translation['original_id'] , 'category') as $t){ + $original_post_cats[] = $t->term_taxonomy_id; + } + if($original_post_cats){ + $cat_trids = $wpdb->get_col("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_type='tax_category' AND element_id IN (".join(',',$original_post_cats).")"); + if(!empty($cat_trids)) + $cat_tr_tts = $wpdb->get_col("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE element_type='tax_category' AND language_code='{$lang_code}' AND trid IN (".join(',',$cat_trids).")"); + if(!empty($cat_tr_tts)) + $translated_cats_ids = $wpdb->get_col("SELECT t.term_id FROM {$wpdb->terms} t JOIN {$wpdb->term_taxonomy} tx ON tx.term_id = t.term_id WHERE tx.taxonomy='category' AND tx.term_taxonomy_id IN (".join(',',$cat_tr_tts).")"); + } + + + // deal with custom taxonomies + if(!empty($sitepress_settings['taxonomies_sync_option'])){ + foreach($sitepress_settings['taxonomies_sync_option'] as $taxonomy=>$value){ + if($value == 1 && isset($translation[$taxonomy])){ + $translated_taxs[$taxonomy] = $translation[$taxonomy]; + $translated_tax_ids[$taxonomy] = explode(',', $translation[$taxonomy.'_ids']); + foreach($translated_taxs[$taxonomy] as $k=>$v){ + $tax_trid = $wpdb->get_var(" + SELECT trid FROM {$wpdb->prefix}icl_translations + WHERE element_id='{$translated_tax_ids[$taxonomy][$k]}' AND element_type='tax_{$taxonomy}'"); + // before adding the new term make sure that another tag with the same name doesn't exist. If it does append @lang + // same term name exists in a different language? + $term_different_language = $wpdb->get_var(" + SELECT tm.term_id + FROM {$wpdb->term_taxonomy} tx + JOIN {$wpdb->terms} tm ON tx.term_id = tm.term_id + JOIN {$wpdb->prefix}icl_translations tr ON tx.term_taxonomy_id = tr.element_id + WHERE tm.name='".$wpdb->escape($v)."' AND tr.element_type LIKE 'tax\\_%' AND tr.language_code <> '{$lang_code}' + "); + if($term_different_language){ + $v .= ' @'.$lang_code; + } + + //tax exists? (in the current language) + $etag = get_term_by('name', htmlspecialchars($v), $taxonomy); + if(!$etag){ + $etag = get_term_by('name', htmlspecialchars($v) . ' @'.$lang_code, $taxonomy); + } + + if(!$etag){ + + // get original category parent id + $original_t_parent_id = $wpdb->get_var($wpdb->prepare("SELECT parent FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id=%d",$translated_tax_ids[$taxonomy][$k])); + if($original_t_parent_id){ + $_op_tax_id = $wpdb->get_var($wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy='category' AND term_id=%d",$original_t_parent_id)); + $_op_trid = $wpdb->get_var($wpdb->prepare("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_type='tax_category' AND element_id=%d",$_op_tax_id)); + // get id of the translated category parent + $_tp_tax_id = $wpdb->get_var($wpdb->prepare("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE language_code='{$lang_code}' AND trid=%d",$_op_trid)); + if($_tp_tax_id){ + $t_parent_id = $wpdb->get_var($wpdb->prepare("SELECT term_id FROM {$wpdb->term_taxonomy} WHERE taxonomy='category' AND term_taxonomy_id=%d",$_tp_tax_id)); + }else{ + $t_parent_id = 0; + } + }else{ + $t_parent_id = 0; + } + + $tmp = wp_insert_term($v, $taxonomy); + if(!is_wp_error($tmp) && isset($tmp['term_taxonomy_id'])){ + $wpdb->update($wpdb->prefix.'icl_translations', + array('language_code'=>$lang_code, 'trid'=>$tax_trid, 'source_language_code'=>$original_post_details->language_code), + array('element_type'=>'tax_'.$taxonomy,'element_id'=>$tmp['term_taxonomy_id'])); + + + // if this is a parent category, make sure that nesting is correct for all translations + $orig_tax_id = $wpdb->get_var($wpdb->prepare("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND source_language_code IS NULL", $tax_trid)); + $orig_term_id = $wpdb->get_var($wpdb->prepare("SELECT term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id=%d AND taxonomy='{$taxonomy}'", $orig_tax_id)); + $orig_tax_children = $wpdb->get_col($wpdb->prepare("SELECT term_id FROM {$wpdb->term_taxonomy} WHERE parent=%d", $orig_term_id)); + if(!empty($orig_tax_children)) foreach($orig_tax_children as $ch){ + $_tr_child = icl_object_id($ch, $taxonomy, false, $lang_code); + if($_tr_child){ + $wpdb->update($wpdb->term_taxonomy, array('parent'=>$tmp['term_id']), array( + 'taxonomy'=>$taxonomy, 'term_id' => $_tr_child + )); + } + } + delete_option($taxonomy . '_children'); + } + }else{ + $term_taxonomy_id = $etag->term_taxonomy_id; + // check whether we have an orphan translation - the same trid and language but a different element id + $__translation_id = $wpdb->get_var(" + SELECT translation_id FROM {$wpdb->prefix}icl_translations + WHERE trid = '{$tax_trid}' + AND language_code = '{$lang_code}' + AND element_id <> '{$term_taxonomy_id}' + "); + if($__translation_id){ + $wpdb->query("DELETE FROM {$wpdb->prefix}icl_translations WHERE translation_id={$__translation_id}"); + } + + $tax_translation_id = $wpdb->get_var(" + SELECT translation_id FROM {$wpdb->prefix}icl_translations + WHERE element_id={$term_taxonomy_id} AND element_type='tax_{$taxonomy}'"); + if($tax_translation_id){ + $wpdb->update($wpdb->prefix.'icl_translations', + array('language_code'=>$lang_code, 'trid'=>$tax_trid, 'source_language_code'=>$original_post_details->language_code), + array('element_type'=>'tax_'.$taxonomy,'translation_id'=>$tax_translation_id)); + }else{ + $wpdb->insert($wpdb->prefix.'icl_translations', + array('language_code'=>$lang_code, 'trid'=>$tax_trid, 'element_type'=>'tax_'.$taxonomy, + 'element_id'=>$term_taxonomy_id, 'source_language_code'=>$original_post_details->language_code)); + } + } + } + } + + $oterms = wp_get_object_terms($translation['original_id'] , $taxonomy); + if(!is_wp_error($oterms)){ + foreach($oterms as $t){ + $original_post_taxs[$taxonomy][] = $t->term_taxonomy_id; + } + } + + if(!empty($original_post_taxs[$taxonomy])){ + $tax_trids = $wpdb->get_col("SELECT trid FROM {$wpdb->prefix}icl_translations + WHERE element_type='tax_{$taxonomy}' AND element_id IN (".join(',',$original_post_taxs[$taxonomy]).")"); + if(!empty($tax_trids)){ + $tax_tr_tts = $wpdb->get_col("SELECT element_id FROM {$wpdb->prefix}icl_translations + WHERE element_type='tax_{$taxonomy}' AND language_code='{$lang_code}' AND trid IN (".join(',',$tax_trids).")"); + } + + if(!empty($tax_tr_tts)){ + if($wp_taxonomies[$taxonomy]->hierarchical){ + $translated_tax_ids[$taxonomy] = $wpdb->get_col("SELECT term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id IN (".join(',',$tax_tr_tts).")"); + }else{ + $translated_taxs[$taxonomy] = $wpdb->get_col("SELECT t.name FROM {$wpdb->terms} t + JOIN {$wpdb->term_taxonomy} tx ON tx.term_id = t.term_id + WHERE tx.taxonomy='{$taxonomy}' AND tx.term_taxonomy_id IN (".join(',',$tax_tr_tts).")"); + } + } + } + } + } + + + + // handle the page parent and set it to the translated parent if we have one. + if($original_post_details->post_parent){ + $post_parent_trid = $wpdb->get_var("SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_type='post_{$original_post_details->post_type}' AND element_id='{$original_post_details->post_parent}'"); + if($post_parent_trid){ + $parent_id = $wpdb->get_var("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE element_type='post_{$original_post_details->post_type}' AND trid='{$post_parent_trid}' AND language_code='{$lang_code}'"); + } + } + + + // determine post id based on trid + $post_id = $tinfo->element_id; + + if($post_id){ + // see if the post really exists - make sure it wasn't deleted while the plugin was + if(!$wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE ID={$post_id}")){ + $is_update = false; + $wpdb->query("DELETE FROM {$wpdb->prefix}icl_translations WHERE element_type='post_{$original_post_details->post_type}' AND element_id={$post_id}"); + }else{ + $is_update = true; + $postarr['ID'] = $_POST['post_ID'] = $post_id; + } + }else{ + $is_update = false; + } + $postarr['post_title'] = $translation['title']; + if($sitepress_settings['translated_document_page_url'] == 'translate' && isset($translation['URL'])){ + $postarr['post_name'] = $translation['URL']; + } + $postarr['post_content'] = $translation['body']; + if (isset($translation['excerpt']) && $translation['excerpt'] != "") { + $postarr['post_excerpt'] = $translation['excerpt']; + } + if(@is_array($translated_tags)){ + $postarr['tags_input'] = join(',',(array)$translated_tags); + } + if(@is_array($translated_taxs)){ + foreach($translated_taxs as $taxonomy=>$values){ + $postarr['tax_input'][$taxonomy] = join(',',(array)$values); + } + } + if(@is_array($translated_tax_ids)){ + $postarr['tax_input'] = $translated_tax_ids; + } + if(isset($translated_cats_ids)){ + $postarr['post_category'] = $translated_cats_ids; + } + $postarr['post_author'] = $original_post_details->post_author; + $postarr['post_type'] = $original_post_details->post_type; + if($sitepress_settings['sync_comment_status']){ + $postarr['comment_status'] = $original_post_details->comment_status; + } + if($sitepress_settings['sync_ping_status']){ + $postarr['ping_status'] = $original_post_details->ping_status; + } + if($sitepress_settings['sync_page_ordering']){ + $postarr['menu_order'] = $original_post_details->menu_order; + } + if($sitepress_settings['sync_private_flag'] && $original_post_details->post_status=='private'){ + $postarr['post_status'] = 'private'; + } + if(!$is_update){ + $postarr['post_status'] = !$sitepress_settings['translated_document_status'] ? 'draft' : $original_post_details->post_status; + } else { + // set post_status to the current post status. + $postarr['post_status'] = $wpdb->get_var("SELECT post_status FROM {$wpdb->prefix}posts WHERE ID = ".$post_id); + } + if($sitepress_settings['sync_post_date']){ + $postarr['post_date'] = $original_post_details->post_date; + } + + if(isset($parent_id) && $sitepress_settings['sync_page_parent']){ + $_POST['post_parent'] = $postarr['post_parent'] = $parent_id; + $_POST['parent_id'] = $postarr['parent_id'] = $parent_id; + } + + if($is_update){ + $postarr['post_name'] = $wpdb->get_var($wpdb->prepare("SELECT post_name FROM {$wpdb->posts} WHERE ID=%d", $post_id)); + } + + $_POST['trid'] = $trid; + $_POST['lang'] = $lang_code; + $_POST['skip_sitepress_actions'] = true; + + + global $wp_rewrite; + if(!isset($wp_rewrite)) $wp_rewrite = new WP_Rewrite(); + + kses_remove_filters(); + + $postarr = apply_filters('icl_pre_save_pro_translation', $postarr); + + $new_post_id = wp_insert_post($postarr); + + do_action('icl_pro_translation_saved', $new_post_id); + + // associate custom taxonomies by hand + if ( !empty($postarr['tax_input']) ) { + foreach ( $postarr['tax_input'] as $taxonomy => $tags ) { + if($wp_taxonomies[$taxonomy]->hierarchical){ + wp_set_post_terms( $new_post_id, $tags, $taxonomy ); + }else{ + wp_set_post_terms( $new_post_id, $translated_taxs[$taxonomy], $taxonomy ); + } + } + } + + // set stickiness + if($is_original_sticky && $sitepress_settings['sync_sticky_flag']){ + stick_post($new_post_id); + }else{ + if($original_post_details->post_type=='post' && $is_update){ + unstick_post($new_post_id); //just in case - if this is an update and the original post stckiness has changed since the post was sent to translation + } + } + + foreach((array)$sitepress_settings['translation-management']['custom_fields_translation'] as $cf => $op){ + if ($op == 1) { + update_post_meta($new_post_id, $cf, get_post_meta($translation['original_id'],$cf,true)); + }elseif ($op == 2 && isset($translation['field-'.$cf])) { + $field_translation = $translation['field-'.$cf]; + $field_type = $translation['field-'.$cf.'-type']; + if ($field_type == 'custom_field') { + $field_translation = str_replace ( '�A;', "\n", $field_translation ); + // always decode html entities eg decode & to & + $field_translation = html_entity_decode($field_translation); + update_post_meta($new_post_id, $cf, $field_translation); + } + } + } + + + // set specific custom fields + $copied_custom_fields = array('_top_nav_excluded', '_cms_nav_minihome'); + foreach($copied_custom_fields as $ccf){ + $val = get_post_meta($translation['original_id'], $ccf, true); + update_post_meta($new_post_id, $ccf, $val); + } + + // sync _wp_page_template + if($sitepress_settings['sync_page_template']){ + $_wp_page_template = get_post_meta($translation['original_id'], '_wp_page_template', true); + update_post_meta($new_post_id, '_wp_page_template', $_wp_page_template); + } + + if(!$new_post_id){ + return false; + } + + if(!$is_update){ + $wpdb->update($wpdb->prefix.'icl_translations', array('element_id'=>$new_post_id), array('translation_id' => $translation_id)); + } + update_post_meta($new_post_id, '_icl_translation', 1); + + TranslationManagement::set_page_url($new_post_id); + + global $iclTranslationManagement; + + + $ts = array( + 'status'=>ICL_TM_COMPLETE, 'needs_update'=>0, + 'translation_id'=>$translation_id + ); + + $translator_id = $wpdb->get_var($wpdb->prepare("SELECT translator_id FROM {$wpdb->prefix}icl_translation_status WHERE translation_id=%d", $translation_id)); + if(!$translator_id){ + foreach($sitepress_settings['icl_lang_status'] as $lpair){ + if($lpair['from'] == $original_post_details->language_code && $lpair['to'] == $lang_code && isset($lpair['translators'][0]['id'])){ + $ts['translator_id'] = $lpair['translators'][0]['id']; + break; + } + } + } + + + // update translation status + $iclTranslationManagement->update_translation_status($ts); + + + + // add new translation job + + //$translation_package = $iclTranslationManagement->create_translation_package(get_post($translation['original_id'])); + //$job_id = $iclTranslationManagement->add_translation_job($tinfo->rid, $tinfo->translator_id, $translation_package); + $job_id = $iclTranslationManagement->get_translation_job_id($trid, $lang_code); + // save the translation + $iclTranslationManagement->mark_job_done($job_id); + $parts = explode('_', $translation['original_id']); + if ($parts[0] != 'external') { + $iclTranslationManagement->save_job_fields_from_post($job_id, get_post($new_post_id)); + + $this->_content_fix_links_to_translated_content($new_post_id, $lang_code, "post_{$original_post_details->post_type}"); + if(function_exists('icl_st_fix_links_in_strings')){ + icl_st_fix_links_in_strings($new_post_id); + } + + + // Now try to fix links in other translated content that may link to this post. + $sql = "SELECT + tr.element_id + FROM + {$wpdb->prefix}icl_translations tr + JOIN + {$wpdb->prefix}icl_translation_status ts + ON + tr.translation_id = ts.translation_id + WHERE + ts.links_fixed = 0 AND tr.element_type = 'post_{$original_post_details->post_type}' AND tr.language_code = '{$lang_code}' AND tr.element_id IS NOT NULL"; + $needs_fixing = $wpdb->get_results($sql); + foreach($needs_fixing as $id){ + if($id->element_id != $new_post_id){ // fix all except the new_post_id. We have already done this. + $this->_content_fix_links_to_translated_content($id->element_id, $lang_code, "post_{$original_post_details->post_type}"); + } + } + + // if this is a parent page then make sure it's children point to this. + $this->fix_translated_children($translation['original_id'], $new_post_id, $lang_code); + } + return true; + } + + // old style - for strings + function get_translated_string($args){ + global $sitepress_settings, $sitepress, $wpdb; + + try{ + + $signature = $args[0]; + $site_id = $args[1]; + $request_id = $args[2]; + $original_language = $args[3]; + $language = $args[4]; + $status = $args[5]; + $message = $args[6]; + + if ($site_id != $sitepress_settings['site_id']) { + return 3; + } + + //check signature + $signature_chk = sha1($sitepress_settings['access_key'].$sitepress_settings['site_id'].$request_id.$language.$status.$message); + if($signature_chk != $signature){ + return 2; + } + + $lang_code = $sitepress->get_language_code($this->server_languages_map($language, true));//the 'reverse' language filter + + $cms_request_info = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}icl_core_status WHERE rid={$request_id} AND target='{$lang_code}'"); + + if (empty($cms_request_info)){ + $this->_throw_exception_for_mysql_errors(); + return 4; + } + + //return $this->process_translated_string($request_id, $language); + + if ($this->process_translated_string($request_id, $language) === true){ + $this->_throw_exception_for_mysql_errors(); + return 1; + } else { + $this->_throw_exception_for_mysql_errors(); + return 6; + } + + }catch(Exception $e) { + return $e->getMessage(); + } + } + + // old style - for strings + function process_translated_string($request_id, $language){ + global $sitepress_settings, $wpdb, $sitepress; + $ret = false; + $iclq = new ICanLocalizeQuery($sitepress_settings['site_id'], $sitepress_settings['access_key']); + + $translation = $iclq->cms_do_download($request_id, $language); + + if($translation){ + $ret = icl_translation_add_string_translation($request_id, $translation, $sitepress->get_language_code($this->server_languages_map($language, true))); + if($ret){ + $iclq->cms_update_request_status($request_id, CMS_TARGET_LANGUAGE_DONE, $language); + } + } + + // if there aren't any other unfullfilled requests send a global 'done' + if(0 == $wpdb->get_var("SELECT COUNT(rid) FROM {$wpdb->prefix}icl_core_status WHERE rid='{$request_id}' AND status < ".CMS_TARGET_LANGUAGE_DONE)){ + $iclq->cms_update_request_status($request_id, CMS_REQUEST_DONE, false); + } + return $ret; + } + + function _content_fix_image_paths_in_body(&$translation) { + $body = $translation['body']; + $image_paths = $this->_content_get_image_paths($body); + + $source_path = get_permalink($translation['original_id']); + + foreach($image_paths as $path) { + + $src_path = $this->resolve_url($source_path, $path[2]); + if ($src_path != $path[2]) { + $search = $path[1] . $path[2] . $path[1]; + $replace = $path[1] . $src_path . $path[1]; + $new_link = str_replace($search, $replace, $path[0]); + + $body = str_replace($path[0], $new_link, $body); + + + } + + } + $translation['body'] = $body; + } + + /* + Decode any html encoding in shortcodes + http://codex.wordpress.org/Shortcode_API + */ + function _content_decode_shortcodes(&$translation) { + $body = $translation['body']; + + global $shortcode_tags; + if (isset($shortcode_tags)) { + $tagnames = array_keys($shortcode_tags); + $tagregexp = join( '|', array_map('preg_quote', $tagnames) ); + + $regexp = '/\[('.$tagregexp.')\b(.*?)\]/s'; + + if (preg_match_all($regexp, $body, $matches, PREG_SET_ORDER)) { + foreach ($matches as $match) { + $body = str_replace($match[0], '[' . $match[1] . html_entity_decode($match[2]) . ']', $body); + } + } + + } + + $translation['body'] = $body; + } + + /** + * get the paths to images in the body of the content + */ + + function _content_get_image_paths($body) { + + $regexp_links = array( + "//siU", + "/<script\ssrc\s*=\s*([\"\']??)([^\"]*)\".*>/siU", + "//siU", + ); + + $links = array(); + + foreach($regexp_links as $regexp) { + if (preg_match_all($regexp, $body, $matches, PREG_SET_ORDER)) { + foreach ($matches as $match) { + $links[] = $match; + } + } + } + + return $links; + } + + + /** + * Resolve a URL relative to a base path. This happens to work with POSIX + * filenames as well. This is based on RFC 2396 section 5.2. + */ + function resolve_url($base, $url) { + if (!strlen($base)) return $url; + // Step 2 + if (!strlen($url)) return $base; + // Step 3 + if (preg_match('!^[a-z]+:!i', $url)) return $url; + $base = parse_url($base); + if ($url{0} == "#") { + // Step 2 (fragment) + $base['fragment'] = substr($url, 1); + return $this->unparse_url($base); + } + unset($base['fragment']); + unset($base['query']); + if (substr($url, 0, 2) == "//") { + // Step 4 + return $this->unparse_url(array( + 'scheme'=>$base['scheme'], + 'path'=>$url, + )); + } else if ($url{0} == "/") { + // Step 5 + $base['path'] = $url; + } else { + // Step 6 + $path = explode('/', $base['path']); + $url_path = explode('/', $url); + // Step 6a: drop file from base + array_pop($path); + // Step 6b, 6c, 6e: append url while removing "." and ".." from + // the directory portion + $end = array_pop($url_path); + foreach ($url_path as $segment) { + if ($segment == '.') { + // skip + } else if ($segment == '..' && $path && $path[sizeof($path)-1] != '..') { + array_pop($path); + } else { + $path[] = $segment; + } + } + // Step 6d, 6f: remove "." and ".." from file portion + if ($end == '.') { + $path[] = ''; + } else if ($end == '..' && $path && $path[sizeof($path)-1] != '..') { + $path[sizeof($path)-1] = ''; + } else { + $path[] = $end; + } + // Step 6h + $base['path'] = join('/', $path); + + } + // Step 7 + return $this->unparse_url($base); + } + + function unparse_url($parsed){ + if (! is_array($parsed)) return false; + $uri = isset($parsed['scheme']) ? $parsed['scheme'].':'.((strtolower($parsed['scheme']) == 'mailto') ? '':'//'): ''; + $uri .= isset($parsed['user']) ? $parsed['user'].($parsed['pass']? ':'.$parsed['pass']:'').'@':''; + $uri .= isset($parsed['host']) ? $parsed['host'] : ''; + $uri .= isset($parsed['port']) ? ':'.$parsed['port'] : ''; + if(isset($parsed['path'])) + { + $uri .= (substr($parsed['path'],0,1) == '/')?$parsed['path']:'/'.$parsed['path']; + } + $uri .= isset($parsed['query']) ? '?'.$parsed['query'] : ''; + $uri .= isset($parsed['fragment']) ? '#'.$parsed['fragment'] : ''; + return $uri; + } + + function _content_fix_relative_link_paths_in_body(&$translation) { + $body = $translation['body']; + $link_paths = $this->_content_get_link_paths($body); + + $source_path = get_permalink($translation['original_id']); + + foreach($link_paths as $path) { + + if ($path[2][0] != "#"){ + $src_path = $this->resolve_url($source_path, $path[2]); + if ($src_path != $path[2]) { + $search = $path[1] . $path[2] . $path[1]; + $replace = $path[1] . $src_path . $path[1]; + $new_link = str_replace($search, $replace, $path[0]); + + $body = str_replace($path[0], $new_link, $body); + } + } + } + $translation['body'] = $body; + } + + function _content_get_link_paths($body) { + + $regexp_links = array( + /*"/(.*?)<\/a>/i",*/ + "/]*href\s*=\s*([\"\']??)([^\"^>]+)[\"\']??([^>]*)>/i", + ); + + $links = array(); + + foreach($regexp_links as $regexp) { + if (preg_match_all($regexp, $body, $matches, PREG_SET_ORDER)) { + foreach ($matches as $match) { + $links[] = $match; + } + } + } + return $links; + } + + public static function _content_make_links_sticky($element_id, $element_type='post', $string_translation = true) { + if(strpos($element_type, 'post') === 0){ + // only need to do it if sticky links is not enabled. + // create the object + require_once ICL_PLUGIN_PATH . '/inc/absolute-links/absolute-links.class.php'; + $icl_abs_links = new AbsoluteLinks; + $icl_abs_links->process_post($element_id); + }elseif($element_type=='string'){ + require_once ICL_PLUGIN_PATH . '/inc/absolute-links/absolute-links.class.php'; + $icl_abs_links = new AbsoluteLinks; // call just for strings + $icl_abs_links->process_string($element_id, $string_translation); + } + } + + function _content_fix_links_to_translated_content($element_id, $target_lang_code, $element_type='post'){ + global $wpdb, $sitepress, $sitepress_settings, $wp_taxonomies; + self::_content_make_links_sticky($element_id, $element_type); + + if(strpos($element_type, 'post') === 0){ + $post = $wpdb->get_row("SELECT * FROM {$wpdb->posts} WHERE ID={$element_id}"); + $body = $post->post_content; + }elseif($element_type=='string'){ + $body = $wpdb->get_var("SELECT value FROM {$wpdb->prefix}icl_string_translations WHERE id=" . $element_id); + } + $new_body = $body; + + $base_url_parts = parse_url(get_option('home')); + + $links = $this->_content_get_link_paths($body); + + $all_links_fixed = 1; + + $pass_on_qvars = array(); + $pass_on_fragments = array(); + + foreach($links as $link_idx => $link) { + $path = $link[2]; + $url_parts = parse_url($path); + + if(isset($url_parts['fragment'])){ + $pass_on_fragments[$link_idx] = $url_parts['fragment']; + } + + if((!isset($url_parts['host']) or $base_url_parts['host'] == $url_parts['host']) and + (!isset($url_parts['scheme']) or $base_url_parts['scheme'] == $url_parts['scheme']) and + isset($url_parts['query'])) { + $query_parts = split('&', $url_parts['query']); + + foreach($query_parts as $query){ + // find p=id or cat=id or tag=id queries + list($key, $value) = split('=', $query); + $translations = NULL; + $is_tax = false; + if($key == 'p'){ + $kind = 'post_' . $wpdb->get_var("SELECT post_type FROM {$wpdb->posts} WHERE ID='{$value}'"); + } else if($key == "page_id"){ + $kind = 'post_page'; + } else if($key == 'cat' || $key == 'cat_ID'){ + $kind = 'tax_category'; + $taxonomy = 'category'; + } else if($key == 'tag'){ + $is_tax = true; + $taxonomy = 'post_tag'; + $kind = 'tax_' . $taxonomy; + $value = $wpdb->get_var("SELECT term_taxonomy_id FROM {$wpdb->terms} t + JOIN {$wpdb->term_taxonomy} x ON t.term_id = x.term_id WHERE x.taxonomy='{$taxonomy}' AND t.slug='{$value}'"); + } else { + $found = false; + foreach($wp_taxonomies as $ktax => $tax){ + if($tax->query_var && $key == $tax->query_var){ + $found = true; + $is_tax = true; + $kind = 'tax_' . $ktax; + $value = $wpdb->get_var(" + SELECT term_taxonomy_id FROM {$wpdb->terms} t + JOIN {$wpdb->term_taxonomy} x ON t.term_id = x.term_id WHERE x.taxonomy='{$ktax}' AND t.slug='{$value}'"); + $taxonomy = $ktax; + } + } + if(!$found){ + $pass_on_qvars[$link_idx][] = $query; + continue; + } + } + + $link_id = (int)$value; + + if (!$link_id) { + continue; + } + + $trid = $sitepress->get_element_trid($link_id, $kind); + if(!$trid){ + continue; + } + if($trid !== NULL){ + $translations = $sitepress->get_element_translations($trid, $kind); + } + if(isset($translations[$target_lang_code]) && $translations[$target_lang_code]->element_id != null){ + + // use the new translated id in the link path. + + $translated_id = $translations[$target_lang_code]->element_id; + + if($is_tax){ + $translated_id = $wpdb->get_var("SELECT slug FROM {$wpdb->terms} t JOIN {$wpdb->term_taxonomy} x ON t.term_id=x.term_id WHERE x.term_taxonomy_id=$translated_id"); + } + + // if absolute links is not on turn into WP permalinks + if(empty($GLOBALS['WPML_Sticky_Links'])){ + //////// + if(preg_match('#^post_#', $kind)){ + $replace = get_permalink($translated_id); + }elseif(preg_match('#^tax_#', $kind)){ + if(is_numeric($translated_id)) $translated_id = intval($translated_id); + $replace = get_term_link($translated_id, $taxonomy); + } + $new_link = str_replace($link[2], $replace, $link[0]); + + $replace_link_arr[$link_idx] = array('from'=> $link[2], 'to'=>$replace); + }else{ + $replace = $key . '=' . $translated_id; + $new_link = str_replace($query, $replace, $link[0]); + + $replace_link_arr[$link_idx] = array('from'=> $query, 'to'=>$replace); + } + + // replace the link in the body. + // $new_body = str_replace($link[0], $new_link, $new_body); + $all_links_arr[$link_idx] = array('from'=> $link[0], 'to'=>$new_link); + // done in the next loop + + } else { + // translation not found for this. + $all_links_fixed = 0; + } + } + } + + } + + if(!empty($replace_link_arr)) + foreach($replace_link_arr as $link_idx => $rep){ + $rep_to = $rep['to']; + $fragment = ''; + + // if sticky links is not ON, fix query parameters and fragments + if(empty($GLOBALS['WPML_Sticky_Links'])){ + if(!empty($pass_on_fragments[$link_idx])){ + $fragment = '#' . $pass_on_fragments[$link_idx]; + } + if(!empty($pass_on_qvars[$link_idx])){ + $url_glue = (strpos($rep['to'], '?') === false) ? '?' : '&'; + $rep_to = $rep['to'] . $url_glue . join('&', $pass_on_qvars[$link_idx]); + } + } + + $all_links_arr[$link_idx]['to'] = str_replace($rep['to'], $rep_to . $fragment, $all_links_arr[$link_idx]['to']); + + } + + if(!empty($all_links_arr)) + foreach($all_links_arr as $link){ + $new_body = str_replace($link['from'], $link['to'], $new_body); + } + + if ($new_body != $body){ + + // save changes to the database. + if(strpos($element_type, 'post') === 0){ + $wpdb->update($wpdb->posts, array('post_content'=>$new_body), array('ID'=>$element_id)); + + // save the all links fixed status to the database. + $icl_element_type = 'post_' . $post->post_type; + $translation_id = $wpdb->get_var("SELECT translation_id FROM {$wpdb->prefix}icl_translations WHERE element_id={$element_id} AND element_type='{$icl_element_type}'"); + + $wpdb->query("UPDATE {$wpdb->prefix}icl_translation_status SET links_fixed='{$all_links_fixed}' WHERE translation_id={$translation_id}"); + + }elseif($element_type == 'string'){ + $wpdb->update($wpdb->prefix.'icl_string_translations', array('value'=>$new_body), array('id'=>$element_id)); + } + + } + + } + + function fix_translated_children($original_id, $translated_id, $lang_code){ + global $wpdb, $sitepress; + + // get the children of of original page. + $original_children = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_parent = {$original_id} AND post_type = 'page'"); + foreach($original_children as $original_child){ + // See if the child has a translation. + $trid = $sitepress->get_element_trid($original_child, 'post_page'); + if($trid){ + $translations = $sitepress->get_element_translations($trid, 'post_page'); + if (isset($translations[$lang_code]) && isset($translations[$lang_code]->element_id)){ + $current_parent = $wpdb->get_var("SELECT post_parent FROM {$wpdb->posts} WHERE ID = ".$translations[$lang_code]->element_id); + if ($current_parent != $translated_id){ + $wpdb->query("UPDATE {$wpdb->posts} SET post_parent={$translated_id} WHERE ID = ".$translations[$lang_code]->element_id); + } + } + } + } + } + + function fix_translated_parent($original_id, $translated_id, $lang_code){ + global $wpdb, $sitepress; + + $original_parent = $wpdb->get_var("SELECT post_parent FROM {$wpdb->posts} WHERE ID = {$original_id} AND post_type = 'page'"); + if ($original_parent){ + $trid = $sitepress->get_element_trid($original_parent, 'post_page'); + if($trid){ + $translations = $sitepress->get_element_translations($trid, 'post_page'); + if (isset($translations[$lang_code])){ + $current_parent = $wpdb->get_var("SELECT post_parent FROM {$wpdb->posts} WHERE ID = ".$translated_id); + if ($current_parent != $translations[$lang_code]->element_id){ + $wpdb->query("UPDATE {$wpdb->posts} SET post_parent={$translations[$lang_code]->element_id} WHERE ID = ".$translated_id); + } + } + } + } + } + + + function _throw_exception_for_mysql_errors(){ + global $EZSQL_ERROR, $sitepress_settings; + if(isset($sitepress_settings['troubleshooting_options']['raise_mysql_errors']) && $sitepress_settings['troubleshooting_options']['raise_mysql_errors']){ + if(!empty($EZSQL_ERROR)){ + foreach($EZSQL_ERROR as $k=>$v){ + $mysql_errors[] = $v['error_str'] . ' [' . $v['query'] . ']'; + } + throw new Exception(join("\n", $mysql_errors)); + } + } + } + + function _translation_error_handler($errno, $errstr, $errfile, $errline){ + switch($errno){ + case E_ERROR: + case E_USER_ERROR: + throw new Exception ($errstr . ' [code:e' . $errno . '] in '. $errfile . ':' . $errline); + case E_WARNING: + case E_USER_WARNING: + return true; + //throw new Exception ($errstr . ' [code:w' . $errno . '] in '. $errfile . ':' . $errline); + default: + return true; + } + + } + + function post_submitbox_start(){ + global $post, $iclTranslationManagement; + if(empty($post)|| !$post->ID){ + return; + } + + $translations = $iclTranslationManagement->get_element_translations($post->ID, 'post_' . $post->post_type); + $show_box = 'display:none'; + foreach($translations as $t){ + if($t->element_id == $post->ID){ + if(!empty($t->source_language_code)) return; + else continue; + } + if($t->status == ICL_TM_COMPLETE && !$t->needs_update){ + $show_box = ''; + break; + } + } + + echo '

                  '; + echo ''; + echo '
                  '; + echo '

                  '; + } + + public function estimate_word_count($data, $lang_code) { + $words = 0; + if(isset($data->post_title)){ + if(in_array($lang_code, self::$__asian_languages)){ + $words += strlen(strip_tags($data->post_title)) / 6; + } else { + $words += count(explode(' ',$data->post_title)); + } + } + if(isset($data->post_content)){ + if(in_array($lang_code, self::$__asian_languages)){ + $words += strlen(strip_tags($data->post_content)) / 6; + } else { + $words += count(explode(' ',strip_tags($data->post_content))); + } + } + return (int)$words; + } + + function estimate_custom_field_word_count($post_id, $lang_code) { + global $sitepress_settings; + $words = 0; + $custom_fields = array(); + foreach((array)$sitepress_settings['translation-management']['custom_fields_translation'] as $cf => $op){ + if ($op == 2) { + $custom_fields[] = $cf; + } + } + foreach($custom_fields as $cf){ + $custom_fields_value = get_post_meta($post_id, $cf, true); + if ($custom_fields_value != "" && is_scalar($custom_fields_value)) { + if(in_array($lang_code, self::$__asian_languages)){ + $words += strlen(strip_tags($custom_fields_value)) / 6; + } else { + $words += count(explode(' ',strip_tags($custom_fields_value))); + } + } + } + return (int)$words; + } + + public function get_translator_name($translator_id){ + global $sitepress_settings; + static $translators; + if(is_null($translators)){ + foreach($sitepress_settings['icl_lang_status'] as $lp){ + if(!empty($lp['translators'])){ + foreach($lp['translators'] as $tr){ + $translators[$tr['id']] = $tr['nickname']; + } + } + } + } + if(isset($translators[$translator_id])){ + return $translators[$translator_id]; + }else{ + return false; + } + } + + + function _xmlrpc_cancel_translation($args){ + global $sitepress_settings, $sitepress, $wpdb; + $signature = $args[0]; + $website_id = $args[1]; + $request_id = $args[2]; + $cms_id = $args[3]; + $checksum = $sitepress_settings['access_key'] . $sitepress_settings['site_id'] . $request_id . $cms_id; + + + + // decode cms_id + $int = preg_match('#(.+)_([0-9]+)_([^_]+)_([^_]+)#', $cms_id, $matches); + + $_element_type = $matches[1]; + $_element_id = $matches[2]; + $_original_lang = $matches[3]; + $_lang = $matches[4]; + + $trid = $sitepress->get_element_trid($_element_id, 'post_' . $_element_type); + + if (sha1 ( $checksum ) == $signature) { + $wid = $sitepress_settings['site_id']; + if ($website_id == $wid) { + $translation_entry = $wpdb->get_row("SELECT * + FROM {$wpdb->prefix}icl_translation_status s JOIN {$wpdb->prefix}icl_translations t ON t.translation_id = s.translation_id + WHERE t.trid={$trid} AND t.language_code='{$_lang}'"); + + if (empty($translation_entry)){ + return 4; // cms_request not found + } + $job_id = $wpdb->get_var($wpdb->prepare("SELECT job_id FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d AND revision IS NULL", $translation_entry->rid)); + if($job_id){ + $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translate_job WHERE job_id=%d", $job_id)); + $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translate WHERE job_id=%d", $job_id)); + $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}icl_translate_job SET revision = NULL WHERE rid=%d ORDER BY job_id DESC LIMIT 1", $translation_entry->rid)); + } + + if(!empty($translation_entry->_prevstate)){ + $_prevstate = unserialize($translation_entry->_prevstate); + $wpdb->update($wpdb->prefix . 'icl_translation_status', + array( + 'status' => $_prevstate['status'], + 'translator_id' => $_prevstate['translator_id'], + 'status' => $_prevstate['status'], + 'needs_update' => $_prevstate['needs_update'], + 'md5' => $_prevstate['md5'], + 'translation_service' => $_prevstate['translation_service'], + 'translation_package' => $_prevstate['translation_package'], + 'timestamp' => $_prevstate['timestamp'], + 'links_fixed' => $_prevstate['links_fixed'] + ), + array('translation_id'=>$translation_entry->translation_id) + ); + $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}icl_translation_status SET _prevstate = NULL WHERE translation_id=%d",$translation_entry->translation_id)); + }else{ + $wpdb->update($wpdb->prefix . 'icl_translation_status', array('status'=>ICL_TM_NOT_TRANSLATED, 'needs_update'=>0), array('translation_id'=>$translation_entry->translation_id)); + } + return 1; + } else { + return 3; // Website id incorrect + } + } else { + return 2; // Signature failed + } + + return 0; // Should not have got here - unknown error. + } + + + function _legacy_xmlrpc_cancel_translation($args){ + global $sitepress_settings, $sitepress, $wpdb; + $signature = $args[0]; + $website_id = $args[1]; + $request_id = $args[2]; + + $accesskey = $sitepress_settings['access_key']; + $checksum = $accesskey . $website_id . $request_id; + + $args['sid'] = sha1 ( $checksum ); + + if (sha1 ( $checksum ) == $signature) { + $wid = $sitepress_settings['site_id']; + if ($website_id == $wid) { + + $cms_request_info = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}icl_core_status WHERE rid={$request_id}"); + + if (empty($cms_request_info)){ + return 4; // cms_request not found + } + + // cms_request have been found. + // delete it + + $wpdb->query("DELETE FROM {$wpdb->prefix}icl_core_status WHERE rid={$request_id}"); + $wpdb->query("DELETE FROM {$wpdb->prefix}icl_content_status WHERE rid={$request_id}"); + + // find cms_id + $nid = $wpdb->get_var($wpdb->prepare("SELECT nid FROM {$wpdb->prefix}icl_content_status WHERE rid=%d", $request_id)); + + if($nid){ + $trid = $wpdb->get_var($wpdb->prepare(" + SELECT trid FROM {$wpdb->prefix}icl_translations + WHERE element_id=%d AND post_type LIKE 'post\_%'", $nid) + ); + + $translation = $wpdb->get_row($wpdb->prepare("SELECT translation_id FROM {$wpdb->prefix}icl_translations + WHERE trid=%d AND language_code=%s", $trid, $cms_request_info->target) + ); + $original_element_id = $wpdb->get_var($wpdb->prepare("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND language_code=%s", + $translation->trid, $translation->source_language_code)); + $cms_id = sprintf('%s_%d_%s_%s', preg_replace('#^post_#','', $translation->element_type, $original_element_id, $translation->source_language_code, $translation->language_code)); } + + if($cms_id){ + $args[3] = $cms_id; + return $this->_xmlrpc_cancel_translation($args); + + } + return 1; + + } else { + return 3; // Website id incorrect + } + } else { + return 2; // Signature failed + } + + return 0; // Should not have got here - unknown error. + } + + + function _test_xmlrpc(){ return true; } + + function _xmlrpc_add_message_translation($args){ + global $wpdb, $sitepress, $sitepress_settings, $wpml_add_message_translation_callbacks; + $signature = $args[0]; + $site_id = $args[1]; + $rid = $args[2]; + $translation = $args[3]; + + $signature_check = md5($sitepress_settings['access_key'] . $sitepress_settings['site_id'] . $rid); + if($signature != $signature_check){ + return 0; // array('err_code'=>1, 'err_str'=> __('Signature mismatch','sitepress')); + } + + $res = $wpdb->get_row("SELECT to_language, object_id, object_type FROM {$wpdb->prefix}icl_message_status WHERE rid={$rid}"); + if(!$res){ + return 0; + } + + $to_language = $res->to_language; + $object_id = $res->object_id; + $object_type = $res->object_type; + + try{ + if(is_array($wpml_add_message_translation_callbacks[$object_type])){ + foreach($wpml_add_message_translation_callbacks[$object_type] as $callback){ + if ( !is_null($callback) ) { + call_user_func($callback, $object_id, $to_language, $translation); + } + } + } + $wpdb->update($wpdb->prefix.'icl_message_status', array('status'=>MESSAGE_TRANSLATION_COMPLETE), array('rid'=>$rid)); + }catch(Exception $e){ + return $e->getMessage().'[' . $e->getFile() . ':' . $e->getLine() . ']'; + } + return 1; + + } + + function get_jobs_in_progress(){ + global $wpdb; + $jip = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->prefix}icl_translation_status WHERE status=%d AND translation_service='icanlocalize'", ICL_TM_IN_PROGRESS)); + return $jip; + } + + function get_strings_in_progress(){ + global $wpdb; + $sip = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->prefix}icl_core_status WHERE status < %d", 3)); + return $sip; + } + + function poll_for_translations($force = false){ + global $sitepress_settings, $sitepress, $wpdb; + + if (!$force) { + // Limit to once per hour + $toffset = strtotime(current_time('mysql')) - @intval($sitepress_settings['last_picked_up']) - 3600; + if($toffset < 0 || $force){ + return 0; + } + } + + $iclq = new ICanLocalizeQuery($sitepress_settings['site_id'], $sitepress_settings['access_key']); + $pending = $iclq->cms_requests(); + + $fetched = 0; + if(!empty($pending)){ + foreach($pending as $doc){ + + if(empty($doc['cms_id'])){ // it's a string + $target = $wpdb->get_var($wpdb->prepare("SELECT target FROM {$wpdb->prefix}icl_core_status WHERE rid=%d", $doc['id'])); + $__ld = $sitepress->get_language_details($target); + $language = $this->server_languages_map($__ld['english_name']); + $ret = $this->process_translated_string($doc['id'], $language); + if($ret){ + $fetched++; + } + }else{ + + // decode cms_id + $int = preg_match('#(.+)_([0-9]+)_([^_]+)_([^_]+)#', $doc['cms_id'], $matches); + + $_element_type = $matches[1]; + $_element_id = $matches[2]; + $_original_lang = $matches[3]; + $_lang = $matches[4]; + + $trid = $sitepress->get_element_trid($_element_id, 'post_'. $_element_type); + $translation = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND language_code=%s", $trid, $_lang)); + + $ret = $this->add_translated_document($translation->translation_id, $doc['id']); + if($ret){ + $fetched++; + } + } + } + } + + $iclsettings['last_picked_up'] = strtotime(current_time('mysql')); + $sitepress->save_settings($iclsettings); + + return $fetched; + } + + function get_icl_manually_tranlations_box($wrap_class=""){ + global $sitepress_settings; + + if(isset($_GET['icl_pick_message'])){ + ?> +

                  + get_jobs_in_progress() || $this->get_strings_in_progress())) + { + $last_time_picked_up = !empty($sitepress_settings['last_picked_up']) ? date_i18n('Y, F jS @g:i a', $sitepress_settings['last_picked_up']) : __('never', 'sitepress'); + $toffset = strtotime(current_time('mysql')) - @intval($sitepress_settings['last_picked_up']) - 5 * 60; + if($toffset < 0){ + $gettdisabled = ' disabled="disabled" '; + $waittext = '

                  ' . sprintf(__('You can check again in %s minutes.', 'sitepress'), '' . floor(abs($toffset)/60) . '') . '

                  '; + }else{ + $waittext = ''; + $gettdisabled = ''; + } + + ?> + + +
                  +

                  +

                  />

                  + +

                  +
                  +
                  + diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/tm-notification.class.php b/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/tm-notification.class.php new file mode 100644 index 0000000..319055c --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/tm-notification.class.php @@ -0,0 +1,255 @@ +get_translation_job($job_id); + $translators = $iclTranslationManagement->get_blog_translators(array('to'=>$job->language_code)); + $edit_url = admin_url('admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php&job_id=' . $job_id); + foreach($translators as $t){ + + if($job->manager_id == $t->ID) continue; + + // get current user admin language + $user_language = $sitepress->get_user_admin_language($t->ID); + // override locale + $sitepress->switch_locale($user_language); + + $lang_from = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'", + $job->source_language_code, $user_language)); + $lang_to = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'", + $job->language_code, $user_language)); + + $post_link = $iclTranslationManagement->tm_post_permalink($job->original_doc_id); + if ($post_link != "") { + $post_link = sprintf(__("\nView the original document in %s here: %s\n", 'sitepress'), $lang_from, $post_link); + } + + $mail['to'] = $t->display_name . ' <' . $t->user_email . '>'; + //$mail['to'] = $t->user_email; + $mail['subject'] = sprintf(__('New translation job from %s', 'sitepress'), get_bloginfo('name')); + $mail['body'] = sprintf(__("New job available from %s to %s.\n%s\nStart editing: %s", 'sitepress'), + $lang_from, $lang_to, $post_link, $edit_url); + $mail['type'] = 'translator'; + + $this->send_mail($mail, $user_language); + + //restore locale + $sitepress->switch_locale(); + } + } + + function new_job_translator($job_id, $translator_id){ + global $iclTranslationManagement, $sitepress, $wpdb; + $job = $iclTranslationManagement->get_translation_job($job_id); + + if($job->manager_id == $job->translator_id) return; + + $edit_url = admin_url('admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php&job_id=' . $job_id); + + $user = new WP_User($translator_id); + + // get current user admin language + $user_language = $sitepress->get_user_admin_language($user->ID); + // override locale + $sitepress->switch_locale($user_language); + + $lang_from = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'", + $job->source_language_code, $user_language)); + $lang_to = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'", + $job->language_code, $user_language)); + + $post_link = $iclTranslationManagement->tm_post_permalink($job->original_doc_id); + if ($post_link != "") { + $post_link = sprintf(__("\nView the original document in %s here: %s\n", 'sitepress'), $lang_from, $post_link); + } + + $mail['to'] = $user->display_name . ' <' . $user->user_email . '>'; + //$mail['to'] = $user->user_email; + $mail['subject'] = sprintf(__('New translation job from %s', 'sitepress'), get_bloginfo('name')); + //exit; + + $mail['body'] = sprintf(__("Hi %s,", 'sitepress'), + $user->display_name); + + $mail['body'] .= "\n\n"; + $mail['body'] .= sprintf(__("You have been assigned to new translation job from %s to %s.\n%s\nStart editing: %s", 'sitepress'), + $lang_from, $lang_to, $post_link, $edit_url); + + $mail['type'] = 'translator'; + + $mail = apply_filters('WPML_new_job_notification', $mail, $job_id); + + $this->send_mail($mail, $user_language); + + //restore locale + $sitepress->switch_locale(); + } + + function work_complete($job_id, $update = false){ + global $iclTranslationManagement, $sitepress, $wpdb; + $job = $iclTranslationManagement->get_translation_job($job_id); + if($job->manager_id == $job->translator_id) return; + $manager = new WP_User($job->manager_id); + $translator = new WP_User($job->translator_id); + + // get current user admin language + $user_language = $sitepress->get_user_admin_language($manager->ID); + // override locale + $sitepress->switch_locale($user_language); + + $lang_from = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'", + $job->source_language_code, $user_language)); + $lang_to = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'", + $job->language_code, $user_language)); + + $tj_url = admin_url('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=jobs'); + $doc_url = get_edit_post_link($job->original_doc_id, 'not_display'); + + if($iclTranslationManagement->settings['notification']['completed'] == ICL_TM_NOTIFICATION_IMMEDIATELY){ + $mail['to'] = $manager->display_name . ' <' . $manager->user_email . '>'; + if($update){ + $mail['subject'] = sprintf(__('Translator has updated translation job for %s', 'sitepress'), get_bloginfo('name')); + $mail['body'] = sprintf(__("Translator (%s) has updated translation of job \"%s\" for %s to %s.\n%s\n\nView translation jobs: %s", 'sitepress'), + $translator->display_name, $job->original_doc_title, $lang_from, $lang_to, $doc_url, $tj_url); + }else{ + $mail['subject'] = sprintf(__('Translator has completed translation job for %s', 'sitepress'), get_bloginfo('name')); + $mail['body'] = sprintf(__("Translator (%s) has completed translation of job \"%s\" for %s to %s.\n%s\n\nView translation jobs: %s", 'sitepress'), + $translator->display_name, $job->original_doc_title, $lang_from, $lang_to, $doc_url, $tj_url); + } + $mail['type'] = 'admin'; + $this->send_mail($mail, $user_language); + } + + // restore locale + $sitepress->switch_locale(); + } + + function translator_resigned($translator_id, $job_id){ + global $iclTranslationManagement, $sitepress, $wpdb; + $job = $iclTranslationManagement->get_translation_job($job_id); + if($job->manager_id == $translator_id) return; + $translator = new WP_User($translator_id); + $manager = new WP_User($job->manager_id); + + $tj_url = admin_url('admin.php?page=' . WPML_TM_FOLDER . '/menu/main.php&sm=jobs'); + + // get current user admin language + $user_language = $sitepress->get_user_admin_language($manager->ID); + // override locale + $sitepress->switch_locale($user_language); + + $lang_from = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'", + $job->source_language_code, $user_language)); + $lang_to = $wpdb->get_var($wpdb->prepare("SELECT name FROM {$wpdb->prefix}icl_languages_translations WHERE language_code='%s' AND display_language_code='%s'", + $job->language_code, $user_language)); + + if($iclTranslationManagement->settings['notification']['resigned'] == ICL_TM_NOTIFICATION_IMMEDIATELY){ + $mail['to'] = $manager->display_name . ' <' . $manager->user_email . '>'; + $mail['subject'] = sprintf(__('Translator has resigned from job on %s', 'sitepress'), get_bloginfo('name')); + $mail['body'] = sprintf(__('Translator %s has resigned from the translation job "%s" for %s to %s.%sView translation jobs: %s', 'sitepress'), + $translator->display_name, $job->original_doc_title, $lang_from, $lang_to, "\n", $tj_url); + $mail['type'] = 'admin'; + + $this->send_mail($mail, $user_language); + } + //restore locale + $sitepress->switch_locale(); + } + + function translator_removed($translator_id, $job_id){ + global $iclTranslationManagement, $sitepress, $wpdb; + $job = $iclTranslationManagement->get_translation_job($job_id); + if($job->manager_id == $translator_id) return; + $translator = new WP_User($translator_id); + $manager = new WP_User($job->manager_id); + + $user_language = $sitepress->get_user_admin_language($manager->ID); + // override locale + $sitepress->switch_locale($user_language); + + $mail['to'] = $translator->display_name . ' <' . $translator->user_email . '>'; + $mail['subject'] = sprintf(__('Removed from translation job on %s', 'sitepress'), get_bloginfo('name')); + $mail['body'] = sprintf(__('You have been removed from the translation job "%s" for %s to %s.', 'sitepress'), + $job->original_doc_title, $lang_from, $lang_to); + $mail['type'] = 'translator'; + + $this->send_mail($mail, $user_language); + + // restore locale + $sitepress->switch_locale(); + } + + function send_mail($mail, $language = false){ + global $sitepress; + static $cache = array(); + + if($language !== false); + // override locale + $sitepress->switch_locale($language); + + if ($mail != 'empty_queue') { + $cache[$mail['type']][$mail['to']][$mail['subject']]['body'][] = $mail['body']; + if (isset($mail['attachment'])) { + $cache[$mail['type']][$mail['to']][$mail['subject']]['attachment'][] = $mail['attachment']; + } + $this->_process_mail_queue = TRUE; + } else if (!empty($cache)) { + $tj_url = admin_url('admin.php?page=' . WPML_TM_FOLDER . '/menu/translations-queue.php'); + foreach ($cache as $type => $mail_to_send) { + foreach ($mail_to_send as $to => $subjects) { + $body_to_send = ''; + foreach ($subjects as $subject => $content) { + $body = $content['body']; + $body_to_send .= $body_to_send . "\n\n" . implode("\n\n\n\n", $body) . "\n\n\n\n"; + if($type == 'translator'){ + $footer = sprintf(__('You can view your other translation jobs here: %s', 'sitepress'), $tj_url) . "\n\n--\n" + . sprintf(__("This message was automatically sent by Translation Management running on %s. To stop receiving these notifications contact the system administrator at %s.\n\nThis email is not monitored for replies.", 'sitepress'), get_bloginfo('name'), get_option('home')); + } else { + $footer = "\n--\n" . sprintf(__("This message was automatically sent by Translation Management running on %s. To stop receiving these notifications, go to Notification Settings, or contact the system administrator at %s.\n\nThis email is not monitored for replies.", 'sitepress'), get_bloginfo('name'), get_option('home')); + } + $body_to_send .= $footer; + + if (isset($content['attachment'])) { + $attachments = $content['attachment']; + } else { + $attachments = array(); + } + + $body_to_send = apply_filters('WPML_new_job_notification_body', $body_to_send, $tj_url); + $attachments = apply_filters('WPML_new_job_notification_attachments', $attachments); + wp_mail($to, $subject, $body_to_send, '', $attachments); + } + } + } + $cache = array(); + $this->_process_mail_queue = FALSE; + } + + // restore locale + $sitepress->switch_locale(); + } + + function mail_queue($location = NULL) { + if ($this->_process_mail_queue) { + $this->send_mail('empty_queue'); + } + if (!is_null($location)) { + return $location; + } + } +} + +?> \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/translation-management.class.php b/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/translation-management.class.php new file mode 100644 index 0000000..0d38bed --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/translation-management.class.php @@ -0,0 +1,3745 @@ +0); + private $current_translator = array('ID'=>0); + public $messages = array(); + public $dashboard_select = array(); + public $settings; + public $admin_texts_to_translate = array(); + + function __construct(){ + add_action('init', array($this, 'init'), 15); + + if(isset($_GET['icl_tm_message'])){ + $this->messages[] = array( + 'type' => isset($_GET['icl_tm_message_type']) ? $_GET['icl_tm_message_type'] : 'updated', + 'text' => $_GET['icl_tm_message'] + ); + } + + add_action('save_post', array($this, 'save_post_actions'), 11, 2); // calling *after* the Sitepress actions + + add_action('delete_post', array($this, 'delete_post_actions'), 1, 1); // calling *before* the Sitepress actions + + add_action('icl_ajx_custom_call', array($this, 'ajax_calls'), 10, 2); + add_action('wp_ajax_show_post_content', array($this, '_show_post_content')); + + if(isset($_GET['sm']) && ($_GET['sm'] == 'dashboard' || $_GET['sm'] == 'jobs')){@session_start();} + elseif(isset($_GET['page']) && preg_match('@/menu/translations-queue\.php$@', $_GET['page'])){@session_start();} + add_filter('icl_additional_translators', array($this, 'icl_additional_translators'), 99, 3); + + add_filter('icl_translators_list', array($this, 'icanlocalize_translators_list')); + + add_action('user_register', array($this, 'clear_cache')); + add_action('profile_update', array($this, 'clear_cache')); + add_action('delete_user', array($this, 'clear_cache')); + add_action('added_existing_user', array($this, 'clear_cache')); + add_action('remove_user_from_blog', array($this, 'clear_cache')); + + add_action('admin_print_scripts', array($this, '_inline_js_scripts')); + + add_action('wp_ajax_icl_tm_user_search', array($this, '_user_search')); + + } + + function save_settings(){ + global $sitepress; + $iclsettings['translation-management'] = $this->settings; + $sitepress->save_settings($iclsettings); + } + + function init(){ + + global $wpdb, $current_user, $sitepress_settings, $sitepress, $pagenow; + + $this->settings =& $sitepress_settings['translation-management']; + + //logic for syncing comments + if($sitepress->get_option('sync_comments_on_duplicates')){ + add_action('delete_comment', array($this, 'duplication_delete_comment')); + add_action('edit_comment', array($this, 'duplication_edit_comment')); + add_action('wp_set_comment_status', array($this, 'duplication_status_comment'), 10, 2); + add_action('wp_insert_comment', array($this, 'duplication_insert_comment'), 100); + } + + $this->initial_custom_field_translate_states(); + + // defaults + if(!isset($this->settings['notification']['new-job'])) $this->settings['notification']['new-job'] = ICL_TM_NOTIFICATION_IMMEDIATELY; + if(!isset($this->settings['notification']['completed'])) $this->settings['notification']['completed'] = ICL_TM_NOTIFICATION_IMMEDIATELY; + if(!isset($this->settings['notification']['resigned'])) $this->settings['notification']['resigned'] = ICL_TM_NOTIFICATION_IMMEDIATELY; + if(!isset($this->settings['notification']['dashboard'])) $this->settings['notification']['dashboard'] = true; + if(!isset($this->settings['notification']['purge-old'])) $this->settings['notification']['purge-old'] = 7; + + if(!isset($this->settings['custom_fields_translation'])) $this->settings['custom_fields_translation'] = array(); + if(!isset($this->settings['doc_translation_method'])) $this->settings['doc_translation_method'] = ICL_TM_TMETHOD_MANUAL; + + get_currentuserinfo(); + if(isset($current_user->ID)){ + $user = new WP_User($current_user->ID); + } + + if(empty($user->data)) return; + + $ct['translator_id'] = $current_user->ID; + $ct['display_name'] = isset($user->data->display_name) ? $user->data->display_name : $user->data->user_login; + $ct['user_login'] = $user->data->user_login; + $ct['language_pairs'] = get_user_meta($current_user->ID, $wpdb->prefix.'language_pairs', true); + if(empty($ct['language_pairs'])) $ct['language_pairs'] = array(); + + $this->current_translator = (object)$ct; + + $this->load_config_pre_process(); + $this->load_plugins_wpml_config(); + $this->load_theme_wpml_config(); + $this->load_config_post_process(); + + if(isset($_POST['icl_tm_action'])){ + $this->process_request($_POST['icl_tm_action'], $_POST); + }elseif(isset($_GET['icl_tm_action'])){ + $this->process_request($_GET['icl_tm_action'], $_GET); + } + + //$this->load_plugins_wpml_config(); + //$this->load_theme_wpml_config(); + + if($GLOBALS['pagenow']=='edit.php'){ // use standard WP admin notices + add_action('admin_notices', array($this, 'show_messages')); + }else{ // use custom WP admin notices + add_action('icl_tm_messages', array($this, 'show_messages')); + } + + if(isset($_GET['page']) && basename($_GET['page']) == 'translations-queue.php' && isset($_GET['job_id'])){ + add_filter('admin_head',array($this, '_show_tinyMCE')); + } + + + //if(!isset($this->settings['doc_translation_method'])){ + if(isset($this->settings['doc_translation_method']) && $this->settings['doc_translation_method'] < 0 ){ + if(isset($_GET['sm']) && $_GET['sm']=='mcsetup' && isset($_GET['src']) && $_GET['src']=='notice'){ + $this->settings['doc_translation_method'] = ICL_TM_TMETHOD_MANUAL; + $this->save_settings(); + }else{ + add_action('admin_notices', array($this, '_translation_method_notice')); + } + } + + if(defined('WPML_TM_VERSION') && isset($_GET['page']) && $_GET['page'] == WPML_TM_FOLDER. '/menu/main.php' && isset($_GET['sm']) && $_GET['sm'] == 'translators'){ + $iclsettings =& $sitepress_settings; + $sitepress->get_icl_translator_status($iclsettings); + $sitepress->save_settings($iclsettings); + } + + // default settings + if(empty($this->settings['doc_translation_method']) || !defined('WPML_TM_VERSION')){ + $this->settings['doc_translation_method'] = ICL_TM_TMETHOD_MANUAL; + } + } + + function initial_custom_field_translate_states() { + global $wpdb; + + $cf_keys_limit = 1000; // jic + $custom_keys = $wpdb->get_col( " + SELECT meta_key + FROM $wpdb->postmeta + GROUP BY meta_key + ORDER BY meta_key + LIMIT $cf_keys_limit" ); + + $changed = false; + + foreach($custom_keys as $cfield) { + if(empty($this->settings['custom_fields_translation'][$cfield]) || $this->settings['custom_fields_translation'][$cfield] == 0) { + // see if a plugin handles this field + $override = apply_filters('icl_cf_translate_state', 'nothing', $cfield); + switch($override) { + case 'nothing': + break; + + case 'ignore': + $changed = true; + $this->settings['custom_fields_translation'][$cfield] = 3; + break; + + case 'translate': + $changed = true; + $this->settings['custom_fields_translation'][$cfield] = 2; + break; + + case 'copy': + $changed = true; + $this->settings['custom_fields_translation'][$cfield] = 1; + break; + } + + } + } + if ($changed) { + $this->save_settings(); + } + } + + function _translation_method_notice(){ + echo '

                  '.sprintf(__('New - side-by-site translation editor: try it | no thanks.', 'sitepress'), + admin_url('admin.php?page='.WPML_TM_FOLDER.'/menu/main.php&sm=mcsetup&src=notice')) . '

                  '; + } + + function _show_tinyMCE() { + wp_print_scripts('editor'); + //add_filter('the_editor', array($this, 'editor_directionality'), 9999); + add_filter('tiny_mce_before_init', array($this, '_mce_set_direction'), 9999); + add_filter('mce_buttons', array($this, '_mce_remove_fullscreen'), 9999); + + if (version_compare($GLOBALS['wp_version'], '3.1.4', '<=') && function_exists('wp_tiny_mce')) + try{ + @wp_tiny_mce(); + } catch(Exception $e) { /*don't do anything with this */ } + } + + function _mce_remove_fullscreen($options){ + foreach($options as $k=>$v) if($v == 'fullscreen') unset($options[$k]); + return $options; + } + + function _inline_js_scripts(){ + // remove fullscreen mode + if(defined('WPML_TM_FOLDER') && isset($_GET['page']) && $_GET['page'] == WPML_TM_FOLDER . '/menu/translations-queue.php' && isset($_GET['job_id'])){ + ?> + + get_translation_job((int)$_GET['job_id'], false, true); + if (!empty($job)) { + $rtl_translation = in_array($job->language_code, array('ar','he','fa')); + if ($rtl_translation) { + $settings['directionality'] = 'rtl'; + } else { + $settings['directionality'] = 'ltr'; + } + } + return $settings; + } + + /* + function editor_directionality($tag) { + $job = $this->get_translation_job((int)$_GET['job_id'], false, true); + $rtl_translation = in_array($job->language_code, array('ar','he','fa')); + if ($rtl_translation) { + $dir = 'dir="rtl"'; + } else { + $dir = 'dir="ltr"'; + } + return str_replace(' 1); + } + $this->add_translator($data['user_id'], $data['lang_pairs']); + $_user = new WP_User($data['user_id']); + wp_redirect('admin.php?page='.WPML_TM_FOLDER.'/menu/main.php&sm=translators&icl_tm_message='.urlencode(sprintf(__('%s has been added as a translator for this site.','sitepress'),$_user->data->display_name)).'&icl_tm_message_type=updated'); + } + break; + case 'edit_translator': + if(wp_create_nonce('edit_translator') == $data['edit_translator_nonce']){ + $this->edit_translator($data['user_id'], $data['lang_pairs']); + $_user = new WP_User($data['user_id']); + wp_redirect('admin.php?page='.WPML_TM_FOLDER.'/menu/main.php&sm=translators&icl_tm_message='.urlencode(sprintf(__('Language pairs for %s have been edited.','sitepress'),$_user->data->display_name)).'&icl_tm_message_type=updated'); + } + break; + case 'remove_translator': + if(wp_create_nonce('remove_translator') == $data['remove_translator_nonce']){ + $this->remove_translator($data['user_id']); + $_user = new WP_User($data['user_id']); + wp_redirect('admin.php?page='.WPML_TM_FOLDER.'/menu/main.php&sm=translators&icl_tm_message='.urlencode(sprintf(__('%s has been removed as a translator for this site.','sitepress'),$_user->data->display_name)).'&icl_tm_message_type=updated'); + } + break; + case 'edit': + $this->selected_translator['ID'] = intval($data['user_id']); + break; + case 'dashboard_filter': + $_SESSION['translation_dashboard_filter'] = $data['filter']; + wp_redirect('admin.php?page='.WPML_TM_FOLDER . '/menu/main.php&sm=dashboard'); + break; + case 'sort': + if(isset($data['sort_by'])) $_SESSION['translation_dashboard_filter']['sort_by'] = $data['sort_by']; + if(isset($data['sort_order'])) $_SESSION['translation_dashboard_filter']['sort_order'] = $data['sort_order']; + break; + case 'reset_filters': + unset($_SESSION['translation_dashboard_filter']); + break; + case 'send_jobs': + if(isset($data['iclnonce']) && wp_verify_nonce($data['iclnonce'], 'pro-translation-icl')){ + $this->send_jobs($data); + } + break; + case 'jobs_filter': + $_SESSION['translation_jobs_filter'] = $data['filter']; + wp_redirect('admin.php?page='.WPML_TM_FOLDER . '/menu/main.php&sm=jobs'); + break; + case 'ujobs_filter': + $_SESSION['translation_ujobs_filter'] = $data['filter']; + wp_redirect('admin.php?page='.WPML_TM_FOLDER . '/menu/translations-queue.php'); + break; + case 'save_translation': + if(!empty($data['resign'])){ + $this->resign_translator($data['job_id']); + wp_redirect(admin_url('admin.php?page='.WPML_TM_FOLDER.'/menu/translations-queue.php&resigned='.$data['job_id'])); + exit; + }else{ + $this->save_translation($data); + } + break; + case 'save_notification_settings': + $this->settings['notification'] = $data['notification']; + $this->save_settings(); + $this->messages[] = array( + 'type'=>'updated', + 'text' => __('Preferences saved.', 'sitepress') + ); + break; + case 'create_job': + $data['translator'] = $this->current_translator->ID; + $job_ids = $this->send_jobs($data); + wp_redirect('admin.php?page='.WPML_TM_FOLDER . '/menu/translations-queue.php&job_id=' . array_pop($job_ids)); + break; + case 'cancel_jobs': + $ret = $this->cancel_translation_request($data['icl_translation_id']); + $this->messages[] = array( + 'type'=>'updated', + 'text' => __('Translation requests cancelled.', 'sitepress') + ); + break; + } + } + + function ajax_calls($call, $data){ + global $wpdb, $sitepress, $sitepress_settings; + switch($call){ + /* + case 'save_dashboard_setting': + $iclsettings['dashboard'] = $sitepress_settings['dashboard']; + if(isset($data['setting']) && isset($data['value'])){ + $iclsettings['dashboard'][$data['setting']] = $data['value']; + $sitepress->save_settings($iclsettings); + } + break; + */ + case 'assign_translator': + + $_exp = explode('-', $data['translator_id']); + $service = isset($_exp[1]) ? $_exp[1] : 'local'; + $translator_id = $_exp[0]; + if($this->assign_translation_job($data['job_id'], $translator_id, $service)){ + if($service == 'icanlocalize'){ + $job = $this->get_translation_job($data['job_id']); + global $ICL_Pro_Translation; + $ICL_Pro_Translation->send_post($job->original_doc_id, array($job->language_code), $translator_id); + foreach($sitepress_settings['icl_lang_status'] as $lp){ + if($lp['from'] == $job->source_language_code && $lp['to'] == $job->language_code){ + $contract_id = $lp['contract_id']; + $lang_tr_id = $lp['id']; + break; + } + } + $translator_edit_link = $sitepress->create_icl_popup_link(ICL_API_ENDPOINT . '/websites/' . $sitepress_settings['site_id'] + . '/website_translation_offers/' . $lang_tr_id . '/website_translation_contracts/' + . $contract_id, array('title' => __('Chat with translator', 'sitepress'), 'unload_cb' => 'icl_thickbox_refresh')) + . esc_html(ICL_Pro_Translation::get_translator_name($translator_id)) . ' (ICanLocalize)'; + + }else{ + $translator_edit_link = '' . + esc_html($wpdb->get_var($wpdb->prepare("SELECT display_name FROM {$wpdb->users} WHERE ID=%d",$data['translator_id']))) . ''; + } + echo json_encode(array('error'=>0, 'message'=>$translator_edit_link, 'status'=>$this->status2text(ICL_TM_WAITING_FOR_TRANSLATOR), 'service'=>$service)); + }else{ + echo json_encode(array('error'=>1)); + } + break; + case 'icl_cf_translation': + if(!empty($data['cf'])){ + foreach($data['cf'] as $k=>$v){ + $cft[base64_decode($k)] = $v; + } + $this->settings['custom_fields_translation'] = $cft; + $this->save_settings(); + } + echo '1|'; + break; + case 'icl_doc_translation_method': + $this->settings['doc_translation_method'] = intval($data['t_method']); + $this->save_settings(); + echo '1|'; + break; + case 'reset_duplication': + $this->reset_duplicate_flag($_POST['post_id']); + break; + case 'set_duplication': + $this->set_duplicate($_POST['post_id']); + break; + case 'make_duplicates': + $mdata['iclpost'] = array($data['post_id']); + $langs = explode(',', $data['langs']); + foreach($langs as $lang){ + $mdata['duplicate_to'][$lang] = 1; + } + $this->make_duplicates($mdata); + break; + } + } + + function show_messages(){ + if(!empty($this->messages)){ + foreach($this->messages as $m){ + echo '

                  ' . $m['text'] . '

                  '; + } + } + } + + /* TRANSLATORS */ + /* ******************************************************************************************** */ + function add_translator($user_id, $language_pairs){ + global $wpdb; + + $user = new WP_User($user_id); + $user->add_cap('translate'); + + $um = get_user_meta($user_id, $wpdb->prefix . 'language_pairs', true); + if(!empty($um)){ + foreach($um as $fr=>$to){ + if(isset($language_pairs[$fr])){ + $language_pairs[$fr] = array_merge($language_pairs[$fr], $to); + } + + } + } + + update_user_meta($user_id, $wpdb->prefix . 'language_pairs', $language_pairs); + $this->clear_cache(); + } + + function edit_translator($user_id, $language_pairs){ + global $wpdb; + $_user = new WP_User($user_id); + if(empty($language_pairs)){ + $this->remove_translator($user_id); + wp_redirect('admin.php?page='.WPML_TM_FOLDER.'/menu/main.php&sm=translators&icl_tm_message='. + urlencode(sprintf(__('%s has been removed as a translator for this site.','sitepress'),$_user->data->display_name)).'&icl_tm_message_type=updated'); exit; + } + else{ + if(!$_user->has_cap('translate')) $_user->add_cap('translate'); + update_user_meta($user_id, $wpdb->prefix . 'language_pairs', $language_pairs); + } + } + + function remove_translator($user_id){ + global $wpdb; + $user = new WP_User($user_id); + $user->remove_cap('translate'); + delete_user_meta($user_id, $wpdb->prefix . 'language_pairs'); + $this->clear_cache(); + } + + function is_translator($user_id, $args = array()){ + // $lang_from + // $lang_to + // $job_id + + //$default_args = array(); + //extract($default_args); + extract($args, EXTR_OVERWRITE); + + global $wpdb; + $user = new WP_User($user_id); + $is_translator = $user->has_cap('translate'); + + if(isset($lang_from) && isset($lang_to)){ + $um = get_user_meta($user_id, $wpdb->prefix . 'language_pairs', true); + $is_translator = $is_translator && isset($um[$lang_from][$lang_to]) && $um[$lang_from][$lang_to]; + } + if(isset($job_id)){ + $translator_id = $wpdb->get_var($wpdb->prepare(" + SELECT j.translator_id + FROM {$wpdb->prefix}icl_translate_job j + JOIN {$wpdb->prefix}icl_translation_status s ON j.rid = s.rid + WHERE job_id = %d AND s.translation_service='local' + ", $job_id)); + + //$is_translator = $is_translator && ($translator_id == $user_id || ($translator_id === '0')); + $is_translator = $is_translator && (($translator_id == $user_id) || empty($translator_id)); + + } + + return $is_translator; + } + + function translator_exists($id, $from, $to, $type = 'local'){ + global $sitepress_settings; + $exists = false; + if($type == 'icanlocalize' && !empty($sitepress_settings['icl_lang_status'])){ + foreach($sitepress_settings['icl_lang_status'] as $lpair){ + if($lpair['from'] == $from && $lpair['to'] == $to){ + if(!empty($lpair['translators'])){ + foreach($lpair['translators'] as $t){ + if($t['id'] == $id){ + $exists = true; + break(2); + } + } + } + } + } + }elseif($type == 'local'){ + $exists = $this->is_translator($id, array('lang_from'=>$from, 'lang_to'=>$to)); + } + return $exists; + } + + function set_default_translator($id, $from, $to, $type = 'local'){ + global $sitepress, $sitepress_settings; + $iclsettings['default_translators'] = isset($sitepress_settings['default_translators']) ? $sitepress_settings['default_translators'] : array(); + $iclsettings['default_translators'][$from][$to] = array('id'=>$id, 'type'=>$type); + $sitepress->save_settings($iclsettings); + } + + function get_default_translator($from, $to){ + global $sitepress_settings; + if(isset($sitepress_settings['default_translators'][$from][$to])){ + $dt = $sitepress_settings['default_translators'][$from][$to]; + }else{ + $dt = array(); + } + return $dt; + } + + public function get_blog_not_translators(){ + global $wpdb; + $cached_translators = get_option($wpdb->prefix . 'icl_non_translators_cached', array()); + if (!empty($cached_translators)) { + return $cached_translators; + } + $sql = "SELECT u.ID, u.user_login, u.display_name, m.meta_value AS caps + FROM {$wpdb->users} u JOIN {$wpdb->usermeta} m ON u.id=m.user_id AND m.meta_key = '{$wpdb->prefix}capabilities' ORDER BY u.display_name"; + $res = $wpdb->get_results($sql); + + $users = array(); + foreach($res as $row){ + $caps = @unserialize($row->caps); + if(!isset($caps['translate'])){ + $users[] = $row; + } + } + update_option($wpdb->prefix . 'icl_non_translators_cached', $users); + return $users; + } + + /** + * Implementation of 'icl_translators_list' hook + * + * @global object $sitepress + * @param array $array + * @return array + */ + public function icanlocalize_translators_list() { + global $sitepress_settings, $sitepress; + + $lang_status = isset($sitepress_settings['icl_lang_status']) ? $sitepress_settings['icl_lang_status'] : array(); + if (0 != key($lang_status)){ + $buf[] = $lang_status; + $lang_status = $buf; + } + + $translators = array(); + foreach($lang_status as $lpair){ + foreach((array)$lpair['translators'] as $translator){ + $translators[$translator['id']]['name'] = $translator['nickname']; + $translators[$translator['id']]['langs'][$lpair['from']][] = $lpair['to']; + $translators[$translator['id']]['type'] = 'ICanLocalize'; + $translators[$translator['id']]['action'] = $sitepress->create_icl_popup_link(ICL_API_ENDPOINT . '/websites/' . $sitepress_settings['site_id'] + . '/website_translation_offers/' . $lpair['id'] . '/website_translation_contracts/' + . $translator['contract_id'], array('title' => __('Chat with translator', 'sitepress'), 'unload_cb' => 'icl_thickbox_refresh', 'ar'=>1)) . __('Chat with translator', 'sitepress') . ''; + } + } + + return $translators; + } + + public function get_blog_translators($args = array()){ + global $wpdb; + $args_default = array('from'=>false, 'to'=>false); + extract($args_default); + extract($args, EXTR_OVERWRITE); + +// $sql = "SELECT u.ID, u.user_login, u.display_name, u.user_email, m.meta_value AS caps +// FROM {$wpdb->users} u JOIN {$wpdb->usermeta} m ON u.id=m.user_id AND m.meta_key LIKE '{$wpdb->prefix}capabilities' ORDER BY u.display_name"; +// $res = $wpdb->get_results($sql); + + $cached_translators = get_option($wpdb->prefix . 'icl_translators_cached', array()); + + if (empty($cached_translators)) { + $sql = "SELECT u.ID FROM {$wpdb->users} u JOIN {$wpdb->usermeta} m ON u.id=m.user_id AND m.meta_key = '{$wpdb->prefix}language_pairs' ORDER BY u.display_name"; + $res = $wpdb->get_results($sql); + update_option($wpdb->prefix . 'icl_translators_cached', $res); + } else { + $res = $cached_translators; + } + + $users = array(); + foreach($res as $row){ + $user = new WP_User($row->ID); +// $caps = @unserialize($row->caps); +// $row->language_pairs = (array)get_user_meta($row->ID, $wpdb->prefix.'language_pairs', true); + $user->language_pairs = (array)get_user_meta($row->ID, $wpdb->prefix.'language_pairs', true); +// if(!empty($from) && !empty($to) && (!isset($row->language_pairs[$from][$to]) || !$row->language_pairs[$from][$to])){ +// continue; +// } + if(!empty($from) && !empty($to) && (!isset($user->language_pairs[$from][$to]) || !$user->language_pairs[$from][$to])){ + continue; + } +// if(isset($caps['translate'])){ +// $users[] = $user; +// } + if($user->has_cap('translate')){ + $users[] = $user; + } + } + return $users; + } + + function get_selected_translator(){ + global $wpdb; + if($this->selected_translator['ID']){ + $user = new WP_User($this->selected_translator['ID']); + $this->selected_translator['display_name'] = $user->data->display_name; + $this->selected_translator['user_login'] = $user->data->user_login; + $this->selected_translator['language_pairs'] = get_user_meta($this->selected_translator['ID'], $wpdb->prefix.'language_pairs', true); + }else{ + $this->selected_translator['ID'] = 0; + } + return (object)$this->selected_translator; + } + + function get_current_translator(){ + return $this->current_translator; + } + + public function get_translator_edit_url($translator_id){ + $url = ''; + if(!empty($translator_id)){ + $url = 'admin.php?page='. WPML_TM_FOLDER .'/menu/main.php&sm=translators&icl_tm_action=edit&user_id='. $translator_id; + } + return $url; + } + + public function translators_dropdown($args = array()){ + global $sitepress_settings; + $args_default = array( + 'from'=>false, 'to'=>false, + 'name' => 'translator_id', + 'selected' => 0, + 'echo' => true, + 'services' => array('local') + ); + extract($args_default); + extract($args, EXTR_OVERWRITE); + + $translators = array(); + + if(in_array('icanlocalize', $services)){ + if(empty($sitepress_settings['icl_lang_status'])) $sitepress_settings['icl_lang_status'] = array(); + foreach((array)$sitepress_settings['icl_lang_status'] as $langpair){ + if($from && $from != $langpair['from']) continue; + if($to && $to != $langpair['to']) continue; + + if(!empty($langpair['translators'])){ + if (1 < count($langpair['translators'])) { + $translators[] = (object) array( + 'ID' => '0-icanlocalize', + 'display_name' => __('First available', 'sitepress'), + 'service' => 'ICanLocalize' + ); + } + foreach($langpair['translators'] as $tr){ + if(!isset($_icl_translators[$tr['id']])){ + $translators[] = $_icl_translators[$tr['id']] = (object) array( + 'ID'=>$tr['id'].'-icanlocalize', + 'display_name'=>$tr['nickname'], + 'service' => 'ICanLocalize' + ); + } + } + } + } + } + + if(in_array('local', $services)){ + $translators[] = (object) array( + 'ID' => 0, + 'display_name' => __('First available', 'sitepress'), + ); + $translators = array_merge($translators, $this->get_blog_translators(array('from'=>$from,'to'=>$to))); + } + + ?> + + get_var($wpdb->prepare(" + SELECT COUNT(rid) FROM {$wpdb->prefix}icl_translation_status WHERE translation_service=%s + ", $service)); + return $n; + } + + public function get_number_of_docs_pending($service = 'icanlocalize'){ + global $wpdb; + $n = $wpdb->get_var($wpdb->prepare(" + SELECT COUNT(rid) FROM {$wpdb->prefix}icl_translation_status WHERE translation_service=%s AND status < " . ICL_TM_COMPLETE . " + ", $service)); + return $n; + } + + + /* HOOKS */ + /* ******************************************************************************************** */ + function save_post_actions($post_id, $post, $force_set_status = false){ + global $wpdb, $sitepress, $sitepress_settings, $current_user; + // skip revisions + if($post->post_type == 'revision'){ + return; + } + // skip auto-drafts + if($post->post_status == 'auto-draft'){ + return; + } + // skip autosave + if(isset($_POST['autosave'])){ + return; + } + + // is this the original document? + if(!empty($_POST['icl_trid'])){ + $is_original = $wpdb->get_var($wpdb->prepare("SELECT source_language_code IS NULL FROM {$wpdb->prefix}icl_translations WHERE element_id=%d AND trid=%d", $post_id, $_POST['icl_trid'])); + } + + // when a manual translation is added/edited make sure to update translation tables + if(!empty($_POST['icl_trid']) && ($this->settings['doc_translation_method'] == ICL_TM_TMETHOD_MANUAL || $force_set_status) && !$is_original){ + $trid = $_POST['icl_trid']; + $lang = $_POST['icl_post_language']; + + $res = $wpdb->get_row($wpdb->prepare(" + SELECT element_id, language_code FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND source_language_code IS NULL + ", $trid)); + $original_post_id = $res->element_id; + $from_lang = $res->language_code; + $original_post = get_post($original_post_id); + $translation_id = $wpdb->get_var($wpdb->prepare(" + SELECT translation_id FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND language_code='%s' + ", $trid, $lang)); + $md5 = $this->post_md5($original_post); + + + get_currentuserinfo(); + $user_id = $current_user->ID; + + if(!$this->is_translator($user_id, array('lang_from'=>$from_lang, 'lang_to'=>$lang))){ + $this->add_translator($user_id, array($from_lang=>array($lang=>1))); + } + + if($translation_id){ + $translation_package = $this->create_translation_package($original_post_id); + + list($rid, $update) = $this->update_translation_status(array( + 'translation_id' => $translation_id, + 'status' => isset($force_set_status) && $force_set_status > 0 ? $force_set_status : ICL_TM_COMPLETE, + 'translator_id' => $user_id, + 'needs_update' => 0, + 'md5' => $md5, + 'translation_service' => 'local', + 'translation_package' => serialize($translation_package) + )); + if(!$update){ + $job_id = $this->add_translation_job($rid, $user_id , $translation_package); + }else{ + $job_id = $wpdb->get_var($wpdb->prepare("SELECT MAX(job_id) FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d GROUP BY rid", $rid)); + } + + + // saving the translation + $this->save_job_fields_from_post($job_id, $post); + + /* + $data['complete'] = 1; + $data['job_id'] = $job_id; + + $job = $this->get_translation_job($job_id,1); + foreach($job->elements as $element){ + $field_data = ''; + switch($element->field_type){ + case 'title': + $field_data = $this->encode_field_data($post->post_title, $element->field_format); + break; + case 'body': + $field_data = $this->encode_field_data($post->post_content, $element->field_format); + break; + case 'excerpt': + $field_data = $this->encode_field_data($post->post_excerpt, $element->field_format); + break; + default: + if(false !== strpos($element->field_type, 'field-') && !empty($this->settings['custom_fields_translation'])){ + $cf_name = preg_replace('#^field-#', '', $element->field_type); + if(isset($this->settings['custom_fields_translation'][$cf_name])){ + if($this->settings['custom_fields_translation'][$cf_name] == 1){ //copy + $field_data = get_post_meta($original_post->ID, $cf_name, 1); + $field_data = $this->encode_field_data($field_data, $element->field_format); + }elseif($this->settings['custom_fields_translation'][$cf_name] == 2){ // translate + $field_data = get_post_meta($post->ID, $cf_name, 1); + $field_data = $this->encode_field_data($field_data, $element->field_format); + } + } + }else{ + // taxonomies + // TBD + } + } + + $wpdb->update($wpdb->prefix.'icl_translate', + array('field_data_translated'=>$field_data, 'field_finished'=>1), + array('tid'=>$element->tid) + ); + + } + $wpdb->update($wpdb->prefix . 'icl_translate_job', array('translated'=>1), array('job_id'=>$job_id)); + */ + + } + } + + // if this is an original post - compute md5 hash and mark for update if neded + if(!empty($_POST['icl_trid']) && empty($_POST['icl_minor_edit'])){ + $needs_update = false; + $is_original = false; + $translations = $sitepress->get_element_translations($_POST['icl_trid'], 'post_' . $post->post_type); + + foreach($translations as $lang=>$translation){ + if($translation->original == 1 && $translation->element_id == $post_id){ + $is_original = true; + break; + } + } + if($is_original){ + $md5 = $this->post_md5($post_id); + foreach($translations as $lang=>$translation){ + if(!$translation->original){ + $emd5 = $wpdb->get_var($wpdb->prepare("SELECT md5 FROM {$wpdb->prefix}icl_translation_status WHERE translation_id = %d", $translation->translation_id)); + if($md5 != $emd5){ + $wpdb->update($wpdb->prefix.'icl_translation_status', array('needs_update'=>1, 'md5'=>$md5), array('translation_id'=>$translation->translation_id)); + } + } + } + } + } + + // sync copies/duplicates + $duplicates = $this->get_duplicates($post_id); + foreach($duplicates as $lang => $_pid){ + $this->make_duplicate($post_id, $lang); + } + + + // review? + /* + if($_POST['icl_trid']){ + // + // get original document + $translations = $sitepress->get_element_translations($_POST['icl_trid'], 'post_' . $post->post_type); + foreach($translations as $t){ + if($t->original){ + $origin = $t->language_code; + } + } + + // remove ? + $rid = $wpdb->get_var($wpdb->prepare("SELECT rid FROM {$wpdb->prefix}icl_content_status WHERE nid = %d"), $post_id); + if(!$rid){ + $wpdb->insert($wpdb->prefix.'icl_content_status', array('nid' => $post_id, 'md5'=>$this->post_md5($post), 'timestamp'=>date('Y-m-d H:i:s'))); + $rid = $wpdb->insert_id; + }else{ + $wpdb->update($wpdb->prefix.'icl_content_status', array('md5'=>$this->post_md5($post)), array('rid'=>$rid)); + } + + // add update icl_core_status entry + $id = $wpdb->get_var($wpdb->prepare("SELECT rid FROM {$wpdb->prefix}icl_core_status WHERE rid = %d AND target= = %s"), $rid, $_POST['icl_post_language']); + if(!$id){ + $wpdb->insert($wpdb->prefix.'icl_core_status', array('rid' => $rid, 'origin' => $origin, 'target' => $_POST['icl_post_language'], 'status' => 1 )); //!!!!!!! + }else{ + $wpdb->update($wpdb->prefix.'icl_content_status', array('md5'=>$this->post_md5($post)), array('rid'=>$rid)); + } + + } + */ + + } + + function delete_post_actions($post_id){ + global $wpdb; + $post_type = $wpdb->get_var("SELECT post_type FROM {$wpdb->posts} WHERE ID={$post_id}"); + if(!empty($post_type)){ + $translation_id = $wpdb->get_var($wpdb->prepare("SELECT translation_id FROM {$wpdb->prefix}icl_translations WHERE element_id=%d AND element_type=%s", $post_id, 'post_' . $post_type)); + if($translation_id){ + $rid = $wpdb->get_var($wpdb->prepare("SELECT rid FROM {$wpdb->prefix}icl_translation_status WHERE translation_id=%d", $translation_id)); + $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translation_status WHERE translation_id=%d", $translation_id)); + if($rid){ + $jobs = $wpdb->get_col($wpdb->prepare("SELECT job_id FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d", $rid)); + $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d", $rid)); + if(!empty($jobs)){ + $wpdb->query("DELETE FROM {$wpdb->prefix}icl_translate WHERE job_id IN (".join(',', $jobs).")"); + } + } + } + } + } + + /* TRANSLATIONS */ + /* ******************************************************************************************** */ + /** + * calculate post md5 + * + * @param object|int $post + * @return string + * + * @todo full support for custom posts and custom taxonomies + */ + function post_md5($post){ + + if (isset($post->external_type) && $post->external_type) { + + $md5str = ''; + + foreach ($post->string_data as $key => $value) { + $md5str .= $key . $value; + } + + + } else { + + $post_tags = $post_categories = $custom_fields_values = array(); + + if(is_numeric($post)){ + $post = get_post($post); + } + + $post_type = $post->post_type; + + if($post_type=='post'){ + foreach(wp_get_object_terms($post->ID, 'post_tag') as $tag){ + $post_tags[] = $tag->name; + } + if(is_array($post_tags)){ + sort($post_tags, SORT_STRING); + } + foreach(wp_get_object_terms($post->ID, 'category') as $cat){ + $post_categories[] = $cat->name; + } + if(is_array($post_categories)){ + sort($post_categories, SORT_STRING); + } + + global $wpdb, $sitepress_settings; + // get custom taxonomies + $taxonomies = $wpdb->get_col(" + SELECT DISTINCT tx.taxonomy + FROM {$wpdb->term_taxonomy} tx JOIN {$wpdb->term_relationships} tr ON tx.term_taxonomy_id = tr.term_taxonomy_id + WHERE tr.object_id = {$post->ID} + "); + sort($taxonomies, SORT_STRING); + foreach($taxonomies as $t){ + if(@intval($sitepress_settings['taxonomies_sync_option'][$t]) == 1){ + $taxs = array(); + foreach(wp_get_object_terms($post->ID, $t) as $trm){ + $taxs[] = $trm->name; + } + if($taxs){ + sort($taxs,SORT_STRING); + $all_taxs[] = '['.$t.']:'.join(',',$taxs); + } + } + } + } + + $custom_fields_values = array(); + if(is_array($this->settings['custom_fields_translation'])){ + foreach($this->settings['custom_fields_translation'] as $cf => $op){ + if ($op == 2) { + $custom_fields_values[] = get_post_meta($post->ID, $cf, true); + } + } + } + + $md5str = + $post->post_title . ';' . + $post->post_content . ';' . + join(',',$post_tags).';' . + join(',',$post_categories) . ';' . + join(',', $custom_fields_values); + if(!empty($all_taxs)){ + $md5str .= ';' . join(';', $all_taxs); + } + } + $md5 = md5($md5str); + + return $md5; + } + + /** + * get documents + * + * @param array $args + */ + function get_documents($args){ + + extract($args); + + global $wpdb, $wp_query, $sitepress; + + $t_el_types = array_keys($sitepress->get_translatable_documents()); + + // SELECT + $select = " p.ID AS post_id, p.post_title, p.post_content, p.post_type, p.post_status, p.post_date, t.trid, t.source_language_code <> '' AS is_translation"; + if($to_lang){ + $select .= ", iclts.status, iclts.needs_update"; + }else{ + foreach($sitepress->get_active_languages() as $lang){ + if($lang['code'] == $from_lang) continue; + $tbl_alias_suffix = str_replace('-','_',$lang['code']); + $select .= ", iclts_{$tbl_alias_suffix}.status AS status_{$tbl_alias_suffix}, iclts_{$tbl_alias_suffix}.needs_update AS needs_update_{$tbl_alias_suffix}"; + } + } + + // FROM + $from = " {$wpdb->posts} p"; + + // JOIN + $join = ""; + $join .= " LEFT JOIN {$wpdb->prefix}icl_translations t ON t.element_id=p.ID\n"; + if($to_lang){ + $tbl_alias_suffix = str_replace('-','_',$to_lang); + $join .= " LEFT JOIN {$wpdb->prefix}icl_translations iclt_{$tbl_alias_suffix} + ON iclt_{$tbl_alias_suffix}.trid=t.trid AND iclt_{$tbl_alias_suffix}.language_code='{$to_lang}'\n"; + $join .= " LEFT JOIN {$wpdb->prefix}icl_translation_status iclts ON iclts.translation_id=iclt_{$tbl_alias_suffix}.translation_id\n"; + }else{ + foreach($sitepress->get_active_languages() as $lang){ + if($lang['code'] == $from_lang) continue; + $tbl_alias_suffix = str_replace('-','_',$lang['code']); + $join .= " LEFT JOIN {$wpdb->prefix}icl_translations iclt_{$tbl_alias_suffix} + ON iclt_{$tbl_alias_suffix}.trid=t.trid AND iclt_{$tbl_alias_suffix}.language_code='{$lang['code']}'\n"; + $join .= " LEFT JOIN {$wpdb->prefix}icl_translation_status iclts_{$tbl_alias_suffix} + ON iclts_{$tbl_alias_suffix}.translation_id=iclt_{$tbl_alias_suffix}.translation_id\n"; + } + } + + + // WHERE + $where = " t.language_code = '{$from_lang}' AND p.post_status NOT IN ('trash', 'auto-draft') \n"; + if(!empty($type)){ + $where .= " AND p.post_type = '{$type}'"; + $where .= " AND t.element_type = 'post_{$type}'\n"; + }else{ + $where .= " AND p.post_type IN ('".join("','",$t_el_types)."')\n"; + foreach($t_el_types as $k=>$v){ + $t_el_types[$k] = 'post_' . $v; + } + $where .= " AND t.element_type IN ('".join("','",$t_el_types)."')\n"; + } + if(!empty($title)){ + $where .= " AND p.post_title LIKE '%".$wpdb->escape($title)."%'\n"; + } + + if(!empty($status)){ + $where .= " AND p.post_status = '{$status}'\n"; + } + + if(isset($from_date)){ + $where .= " AND p.post_date > '{$from_date}'\n"; + } + + if(isset($to_date)){ + $where .= " AND p.post_date > '{$to_date}'\n"; + } + + if($tstatus){ + if($to_lang){ + if($tstatus == 'not'){ + $where .= " AND (iclts.status IS NULL OR iclts.status = ".ICL_TM_WAITING_FOR_TRANSLATOR." OR iclts.needs_update = 1)\n"; + }elseif($tstatus == 'in_progress'){ + $where .= " AND iclts.status = ".ICL_TM_IN_PROGRESS." AND iclts.needs_update = 0\n"; + }elseif($tstatus == 'complete'){ + $where .= " AND iclts.status = ".ICL_TM_COMPLETE." AND iclts.needs_update = 0\n"; + } + + }else{ + if($tstatus == 'not'){ + $where .= " AND ("; + $wheres = array(); + foreach($sitepress->get_active_languages() as $lang){ + if($lang['code'] == $from_lang) continue; + $tbl_alias_suffix = str_replace('-','_',$lang['code']); + $wheres[] = "iclts_{$tbl_alias_suffix}.status IS NULL OR iclts_{$tbl_alias_suffix}.status = ".ICL_TM_WAITING_FOR_TRANSLATOR." OR iclts_{$tbl_alias_suffix}.needs_update = 1\n"; + } + $where .= join(' OR ', $wheres) . ")"; + }elseif($tstatus == 'in_progress'){ + $where .= " AND ("; + $wheres = array(); + foreach($sitepress->get_active_languages() as $lang){ + if($lang['code'] == $from_lang) continue; + $tbl_alias_suffix = str_replace('-','_',$lang['code']); + $wheres[] = "iclts_{$tbl_alias_suffix}.status = ".ICL_TM_IN_PROGRESS."\n"; + } + $where .= join(' OR ', $wheres) . ")"; + }elseif($tstatus == 'complete'){ + foreach($sitepress->get_active_languages() as $lang){ + if($lang['code'] == $from_lang) continue; + $tbl_alias_suffix = str_replace('-','_',$lang['code']); + $where .= " AND iclts_{$tbl_alias_suffix}.status = ".ICL_TM_COMPLETE." AND iclts_{$tbl_alias_suffix}.needs_update = 0\n"; + } + } + } + } + + if(isset($parent_type) && $parent_type == 'page' && $parent_id > 0){ + if($parent_all){ + $children = icl_get_post_children_recursive($parent_id); + $where .= ' AND p.ID IN (' . join(',', $children) . ')'; + }else{ + $where .= ' AND p.post_parent=' . intval($parent_id); + } + } + + if(isset($parent_type) && $parent_type == 'category' && $parent_id > 0){ + if($parent_all){ + $children = icl_get_tax_children_recursive($parent_id); + $children[] = $parent_id; + $join .= " JOIN {$wpdb->term_relationships} tr ON p.ID = tr.object_id + JOIN {$wpdb->term_taxonomy} tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND taxonomy = 'category' + JOIN {$wpdb->terms} tm ON tt.term_id = tm.term_id AND tm.term_id IN(" . join(',', $children) . ")"; + }else{ + $join .= " JOIN {$wpdb->term_relationships} tr ON p.ID = tr.object_id + JOIN {$wpdb->term_taxonomy} tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND taxonomy = 'category' + JOIN {$wpdb->terms} tm ON tt.term_id = tm.term_id AND tm.term_id = " . intval($parent_id); + } + } + + // ORDER + if($sort_by){ + $order = " $sort_by "; + }else{ + $order = " p.post_date DESC"; + } + if($sort_order){ + $order .= $sort_order; + }else{ + $order .= 'DESC'; + } + + + + // LIMIT + if(!isset($_GET['paged'])) $_GET['paged'] = 1; + $offset = ($_GET['paged']-1)*$limit_no; + $limit = " " . $offset . ',' . $limit_no; + + + $sql = " + SELECT SQL_CALC_FOUND_ROWS {$select} + FROM {$from} + {$join} + WHERE {$where} + ORDER BY {$order} + LIMIT {$limit} + "; + + $results = $wpdb->get_results($sql); + + $count = $wpdb->get_var("SELECT FOUND_ROWS()"); + + $wp_query->found_posts = $count; + $wp_query->query_vars['posts_per_page'] = $limit_no; + $wp_query->max_num_pages = ceil($wp_query->found_posts/$limit_no); + + // post process + foreach($results as $k=>$v){ + if($v->is_translation){ + $source_language = $wpdb->get_var($wpdb->prepare("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND source_language_code IS NULL", $v->trid)); + $_tmp = 'status_' . $source_language; + $v->$_tmp = ICL_TM_COMPLETE; + } + } + + return $results; + + } + + function get_element_translation($element_id, $language, $element_type='post_post'){ + global $wpdb, $sitepress; + $trid = $sitepress->get_element_trid($element_id, $element_type); + $translation = array(); + if($trid){ + $translation = $wpdb->get_row($wpdb->prepare(" + SELECT * + FROM {$wpdb->prefix}icl_translations tr + JOIN {$wpdb->prefix}icl_translation_status ts ON tr.translation_id = ts.translation_id + WHERE tr.trid=%s AND tr.language_code='%s' + ", $trid, $language)); + } + return $translation; + } + + function get_element_translations($element_id, $element_type='post_post', $service = false){ + global $wpdb, $sitepress; + $trid = $sitepress->get_element_trid($element_id, $element_type); + $translations = array(); + if($trid){ + $service = $service ? " AND translation_service = '$service'" : ''; + $translations = $wpdb->get_results($wpdb->prepare(" + SELECT * + FROM {$wpdb->prefix}icl_translations tr + JOIN {$wpdb->prefix}icl_translation_status ts ON tr.translation_id = ts.translation_id + WHERE tr.trid=%s {$service} + ", $trid)); + foreach($translations as $k=>$v){ + $translations[$v->language_code] = $v; + unset($translations[$k]); + } + } + return $translations; + } + + /** + * returns icon file name according to status code + * + * @param int $status + */ + public function status2img_filename($status, $needs_update = 0){ + if($needs_update){ + $img_file = 'needs-update.png'; + }else{ + switch($status){ + case ICL_TM_NOT_TRANSLATED: $img_file = 'not-translated.png'; break; + case ICL_TM_WAITING_FOR_TRANSLATOR: $img_file = 'in-progress.png'; break; + case ICL_TM_IN_PROGRESS: $img_file = 'in-progress.png'; break; + case ICL_TM_NEEDS_UPDATE: $img_file = 'needs-update.png'; break; + case ICL_TM_DUPLICATE: $img_file = 'copy.png'; break; + case ICL_TM_COMPLETE: $img_file = 'complete.png'; break; + default: $img_file = ''; + } + } + return $img_file; + } + + public function status2text($status){ + switch($status){ + case ICL_TM_NOT_TRANSLATED: $text = __('Not translated', 'sitepress'); break; + case ICL_TM_WAITING_FOR_TRANSLATOR: $text = __('Waiting for translator', 'sitepress'); break; + case ICL_TM_IN_PROGRESS: $text = __('In progress', 'sitepress'); break; + case ICL_TM_NEEDS_UPDATE: $text = __('Needs update', 'sitepress'); break; + case ICL_TM_DUPLICATE: $text = __('Duplicate', 'sitepress'); break; + case ICL_TM_COMPLETE: $text = __('Complete', 'sitepress'); break; + default: $text = ''; + } + return $text; + } + + public function estimate_word_count($data, $lang_code){ + global $asian_languages; + + $words = 0; + if(isset($data->post_title)){ + if(in_array($lang_code, $asian_languages)){ + $words += strlen(strip_tags($data->post_title)) / 6; + } else { + $words += count(explode(' ',$data->post_title)); + } + } + if(isset($data->post_content)){ + if(in_array($lang_code, $asian_languages)){ + $words += strlen(strip_tags($data->post_content)) / 6; + } else { + $words += count(explode(' ',strip_tags($data->post_content))); + } + } + + return (int)$words; + + } + + public function estimate_custom_field_word_count($post_id, $lang_code) { + global $asian_languages; + + $words = 0; + + if(!empty($this->settings['custom_fields_translation']) && is_array($this->settings['custom_fields_translation'])){ + $custom_fields = array(); + foreach($this->settings['custom_fields_translation'] as $cf => $op){ + if ($op == 2) { + $custom_fields[] = $cf; + } + } + foreach($custom_fields as $cf ){ + $custom_fields_value = get_post_meta($post_id, $cf, true); + if ($custom_fields_value != "" && is_scalar($custom_fields_value)) { // only support scalar values fo rnow + if(in_array($lang_code, $asian_languages)){ + $words += strlen(strip_tags($custom_fields_value)) / 6; + } else { + $words += count(explode(' ',strip_tags($custom_fields_value))); + } + } + } + } + + return (int)$words; + } + + public function decode_field_data($data, $format){ + if($format == 'base64'){ + $data = base64_decode($data); + }elseif($format == 'csv_base64'){ + $exp = explode(',', $data); + foreach($exp as $k=>$e){ + $exp[$k] = base64_decode(trim($e,'"')); + } + $data = $exp; + } + return $data; + } + + public function encode_field_data($data, $format){ + if($format == 'base64'){ + $data = base64_encode($data); + }elseif($format == 'csv_base64'){ + $exp = $data; + foreach($exp as $k=>$e){ + $exp[$k] = '"' . base64_encode(trim($e)) . '"'; + } + $data = join(',', $exp); + } + return $data; + } + + /** + * create translation package + * + * @param object|int $post + */ + function create_translation_package($post){ + global $sitepress, $sitepress_settings; + + $package = array(); + + + if(is_numeric($post)){ + $post = get_post($post); + } + + if (isset($post->external_type) && $post->external_type) { + + foreach ($post->string_data as $key => $value) { + $package['contents'][$key] = array( + 'translate' => 1, + 'data' => $this->encode_field_data($value, 'base64'), + 'format' => 'base64' + ); + } + + $package['contents']['original_id'] = array( + 'translate' => 0, + 'data' => $post->post_id, + ); + + + } else { + if($post->post_type=='page'){ + $package['url'] = htmlentities(get_option('home') . '?page_id=' . ($post->ID)); + }else{ + $package['url'] = htmlentities(get_option('home') . '?p=' . ($post->ID)); + } + + $package['contents']['title'] = array( + 'translate' => 1, + 'data' => $this->encode_field_data($post->post_title, 'base64'), + 'format' => 'base64' + ); + + if($sitepress_settings['translated_document_page_url'] == 'translate'){ + $package['contents']['URL'] = array( + 'translate' => 1, + 'data' => $this->encode_field_data($post->post_name, 'base64'), + 'format' => 'base64' + ); + } + + $package['contents']['body'] = array( + 'translate' => 1, + 'data' => $this->encode_field_data($post->post_content, 'base64'), + 'format' => 'base64' + ); + + if(!empty($post->post_excerpt)){ + $package['contents']['excerpt'] = array( + 'translate' => 1, + 'data' => base64_encode($post->post_excerpt), + 'format' => 'base64' + ); + } + + $package['contents']['original_id'] = array( + 'translate' => 0, + 'data' => $post->ID + ); + + if(!empty($this->settings['custom_fields_translation'])) + foreach($this->settings['custom_fields_translation'] as $cf => $op){ + if ($op == 2) { // translate + + /* */ + $custom_fields_value = get_post_meta($post->ID, $cf, true); + if ($custom_fields_value != '' && is_scalar($custom_fields_value)) { + $package['contents']['field-'.$cf] = array( + 'translate' => 1, + 'data' => $this->encode_field_data($custom_fields_value, 'base64'), + 'format' => 'base64' + ); + $package['contents']['field-'.$cf.'-name'] = array( + 'translate' => 0, + 'data' => $cf + ); + $package['contents']['field-'.$cf.'-type'] = array( + 'translate' => 0, + 'data' => 'custom_field' + ); + } + /* */ + /* + $post_custom = get_post_custom($post->ID); + if(isset($post_custom[$cf])){ + $package['contents']['field-'.$cf] = array( + 'translate' => 1, + 'data' => $this->encode_field_data(serialize($post_custom[$cf]), 'base64'), + 'format' => 'base64' + ); + $package['contents']['field-'.$cf.'-name'] = array( + 'translate' => 0, + 'data' => $cf + ); + $package['contents']['field-'.$cf.'-type'] = array( + 'translate' => 0, + 'data' => 'custom_field' + ); + } + */ + } + } + + foreach((array)$sitepress->get_translatable_taxonomies(true, $post->post_type) as $taxonomy){ + $terms = get_the_terms( $post->ID , $taxonomy ); + if(!empty($terms)){ + $_taxs = $_tax_ids = array(); + foreach($terms as $term){ + $_taxs[] = $term->name; + $_tax_ids[] = $term->term_taxonomy_id; + } + if($taxonomy == 'post_tag'){ + $tax_package_key = 'tags'; + $tax_id_package_key = 'tag_ids'; + } + elseif($taxonomy == 'category'){ + $tax_package_key = 'categories'; + $tax_id_package_key = 'category_ids'; + } + else{ + $tax_package_key = $taxonomy; + $tax_id_package_key = $taxonomy . '_ids'; + } + + $package['contents'][$tax_package_key] = array( + 'translate' => 1, + 'data' => $this->encode_field_data($_taxs,'csv_base64'), + 'format'=>'csv_base64' + ); + + $package['contents'][$tax_id_package_key] = array( + 'translate' => 0, + 'data' => join(',', $_tax_ids) + ); + } + } + } + return $package; + } + + /** + * add/update icl_translation_status record + * + * @param array $data + */ + function update_translation_status($data){ + global $wpdb; + if(!isset($data['translation_id'])) return; + if($rid = $wpdb->get_var($wpdb->prepare("SELECT rid FROM {$wpdb->prefix}icl_translation_status WHERE translation_id=%d", $data['translation_id']))){ + + $wpdb->update($wpdb->prefix.'icl_translation_status', $data, array('rid'=>$rid)); + + $update = true; + }else{ + $wpdb->insert($wpdb->prefix.'icl_translation_status',$data); + $rid = $wpdb->insert_id; + $update = false; + } + + return array($rid, $update); + } + + function _get_post($post_id) { + if (is_string($post_id) && strcmp(substr($post_id, 0, strlen('external_')), 'external_')===0) { + $item = null; + return apply_filters('WPML_get_translatable_item', $item, $post_id); + } else { + return get_post($post_id); + } + } + /* TRANSLATION JOBS */ + /* ******************************************************************************************** */ + + function send_jobs($data){ + global $wpdb, $sitepress; + + + if(!isset($data['tr_action']) && isset($data['translate_to'])){ //adapt new format + $data['tr_action'] = $data['translate_to']; + unset($data['translate_to']); + } + + // translate_from + // tr_action (translate_to) + // translator + // post + // service + // defaults + $data_default = array( + 'translate_from' => $sitepress->get_default_language() + ); + extract($data_default); + extract($data, EXTR_OVERWRITE); + + // no language selected ? + if(!isset($tr_action) || empty($tr_action)){ + $this->messages[] = array( + 'type'=>'error', + 'text' => __('Please select at least one language to translate into.', 'sitepress') + ); + $this->dashboard_select = $data; // prepopulate dashboard + return; + } + // no post selected ? + if(!isset($iclpost) || empty($iclpost)){ + $this->messages[] = array( + 'type'=>'error', + 'text' => __('Please select at least one document to translate.', 'sitepress') + ); + $this->dashboard_select = $data; // prepopulate dashboard + return; + } + + $selected_posts = $iclpost; + $selected_translators = isset($translator) ? $translator : array(); + $selected_languages = $tr_action; + $job_ids = array(); + + foreach($selected_posts as $post_id){ + $post = $this->_get_post($post_id); + $post_trid = $sitepress->get_element_trid($post->ID, 'post_' . $post->post_type); + $post_translations = $sitepress->get_element_translations($post_trid, 'post_' . $post->post_type); + $md5 = $this->post_md5($post); + + $translation_package = $this->create_translation_package($post); + + foreach($selected_languages as $lang => $action){ + + // making this a duplicate? + if($action == 2){ + // dont send documents that are in progress + $current_translation_status = $this->get_element_translation($post_id, $lang, 'post_' . $post->post_type); + if($current_translation_status->status == ICL_TM_IN_PROGRESS) continue; + + $job_ids[] = $this->make_duplicate($post_id, $lang); + }elseif($action == 1){ + + if(empty($post_translations[$lang])){ + $translation_id = $sitepress->set_element_language_details(null , 'post_' . $post->post_type, $post_trid, $lang, $translate_from); + }else{ + $translation_id = $post_translations[$lang]->translation_id; + } + + $current_translation_status = $this->get_element_translation($post_id, $lang, 'post_' . $post->post_type); + + // don't send documents that are in progress + // don't send documents that are already translated and don't need update + if(!empty($current_translation_status)){ + if($current_translation_status->status == ICL_TM_IN_PROGRESS) continue; + if($current_translation_status->status == ICL_TM_COMPLETE && !$current_translation_status->needs_update) continue; + } + + $_status = ICL_TM_WAITING_FOR_TRANSLATOR; + + $_exp = isset($selected_translators[$lang]) ? explode('-', $selected_translators[$lang]) : false; + if(!isset($service)){ + $translation_service = isset($_exp[1]) ? $_exp[1] : 'local'; + }else{ + $translation_service = $service; + } + $translator_id = $_exp[0]; + + // set as default translator + if($translator_id > 0){ + $this->set_default_translator($translator_id, $translate_from, $lang, $translation_service); + } + + // add translation_status record + $data = array( + 'translation_id' => $translation_id, + 'status' => $_status, + 'translator_id' => $translator_id, + 'needs_update' => 0, + 'md5' => $md5, + 'translation_service' => $translation_service, + 'translation_package' => serialize($translation_package) + ); + + $_prevstate = $wpdb->get_row($wpdb->prepare(" + SELECT status, translator_id, needs_update, md5, translation_service, translation_package, timestamp, links_fixed + FROM {$wpdb->prefix}icl_translation_status + WHERE translation_id = %d + ", $translation_id), ARRAY_A); + if(!empty($_prevstate)){ + $data['_prevstate'] = serialize($_prevstate); + } + + list($rid, $update) = $this->update_translation_status($data); + + $job_ids[] = $this->add_translation_job($rid, $translator_id, $translation_package); + if( $translation_service == 'icanlocalize' ){ + global $ICL_Pro_Translation; + $sent = $ICL_Pro_Translation->send_post($post, array($lang), $translator_id); + if(!$sent){ + $job_id = array_pop($job_ids); + $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translate_job WHERE job_id=%d", $job_id)); + $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}icl_translate_job SET revision = NULL WHERE rid=%d ORDER BY job_id DESC LIMIT 1", $rid)); + $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translate WHERE job_id=%d", $job_id)); + } + } + } // if / else is making a duplicate + } + + } + + $job_ids = array_unique($job_ids); + if(array(false) == $job_ids || empty($job_ids)){ + $this->messages[] = array( + 'type'=>'error', + 'text' => __('No documents were sent to translation. Make sure that translations are not currently in progress or already translated for the selected language(s).', 'sitepress') + ); + }elseif(in_array(false, $job_ids)){ + $this->messages[] = array( + 'type'=>'updated', + 'text' => __('Some documents were sent to translation.', 'sitepress') + ); + $this->messages[] = array( + 'type'=>'error', + 'text' => __('Some documents were not sent to translation. Make sure that translations are not currently in progress for the selected language(s).', 'sitepress') + ); + }else{ + $this->messages[] = array( + 'type'=>'updated', + 'text' => __('Selected document(s) sent to translation.', 'sitepress') + ); + } + + return $job_ids; + } + + /** + * Adds a translation job record in icl_translate_job + * + * @param mixed $rid + * @param mixed $translator_id + */ + function add_translation_job($rid, $translator_id, $translation_package){ + global $wpdb, $current_user; + get_currentuserinfo(); + if(!$current_user->ID){ + $manager_id = $wpdb->get_var($wpdb->prepare("SELECT manager_id FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d ORDER BY job_id DESC LIMIT 1", $rid)); + }else{ + $manager_id = $current_user->ID; + } + + $translation_status = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}icl_translation_status WHERE rid=%d", $rid)); + + // if we have a previous job_id for this rid mark it as the top (last) revision + list($prev_job_id, $prev_job_translated) = $wpdb->get_row($wpdb->prepare(" + SELECT job_id, translated FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d AND revision IS NULL + ", $rid), ARRAY_N); + if(!is_null($prev_job_id)){ + + // if previous job is not complete bail out + if(!$prev_job_translated){ + //trigger_error(sprintf(__('Translation is in progress for job: %s.', 'sitepress'), $prev_job_id), E_USER_NOTICE); + return false; + } + + $last_rev = $wpdb->get_var($wpdb->prepare(" + SELECT MAX(revision) AS rev FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d AND revision IS NOT NULL + ", $rid)); + $wpdb->update($wpdb->prefix . 'icl_translate_job', array('revision'=>$last_rev+1), array('job_id'=>$prev_job_id)); + + $prev_job = $this->get_translation_job($prev_job_id); + + $original_post = get_post($prev_job->original_doc_id); + foreach($prev_job->elements as $element){ + $prev_translation[$element->field_type] = $element->field_data_translated; + switch($element->field_type){ + case 'title': + if($this->decode_field_data($element->field_data, $element->field_format) == $original_post->post_title){ + //$unchanged[$element->field_type] = $element->field_data_translated; + $unchanged[$element->field_type] = true; + } + break; + case 'body': + if($this->decode_field_data($element->field_data, $element->field_format) == $original_post->post_content){ + //$unchanged[$element->field_type] = $element->field_data_translated; + $unchanged[$element->field_type] = true; + } + break; + case 'excerpt': + if($this->decode_field_data($element->field_data, $element->field_format) == $original_post->post_excerpt){ + //$unchanged[$element->field_type] = $element->field_data_translated; + $unchanged[$element->field_type] = true; + } + break; + case 'tags': + $terms = (array)get_the_terms( $prev_job->original_doc_id , 'post_tag' ); + $_taxs = array(); + foreach($terms as $term){ + $_taxs[] = $term->name; + } + if($element->field_data == $this->encode_field_data($_taxs, $element->field_format)){ + //$unchanged['tags'] = $element->field_data_translated; + $unchanged['tags'] = true; + } + break; + case 'categories': + $terms = get_the_terms( $prev_job->original_doc_id , 'category' ); + $_taxs = array(); + foreach($terms as $term){ + $_taxs[] = $term->name; + } + if($element->field_data == $this->encode_field_data($_taxs, $element->field_format)){ + //$unchanged['categories'] = $element->field_data_translated; + $unchanged['categories'] = true; + } + break; + default: + if(false !== strpos($element->field_type, 'field-') && !empty($this->settings['custom_fields_translation'])){ + $cf_name = preg_replace('#^field-#', '', $element->field_type); + if($this->decode_field_data($element->field_data, $element->field_format) == get_post_meta($prev_job->original_doc_id, $cf_name, 1)){ + //$unchanged[$element->field_type] = $element->field_data_translated; + $unchanged[$element->field_type] = true; + } + }else{ + // taxonomies + if(taxonomy_exists($element->field_type)){ + $terms = get_the_terms( $prev_job->original_doc_id , $element->field_type ); + $_taxs = array(); + foreach($terms as $term){ + $_taxs[] = $term->name; + } + if($element->field_data == $this->encode_field_data($_taxs, $element->field_format)){ + //$unchanged[$element->field_type] = $field['data_translated']; + $unchanged[$element->field_type] = true; + } + } + } + } + } + } + + $wpdb->insert($wpdb->prefix . 'icl_translate_job', array( + 'rid' => $rid, + 'translator_id' => $translator_id, + 'translated' => 0, + 'manager_id' => $manager_id + )); + $job_id = $wpdb->insert_id; + + foreach($translation_package['contents'] as $field => $value){ + $job_translate = array( + 'job_id' => $job_id, + 'content_id' => 0, + 'field_type' => $field, + 'field_format' => isset($value['format'])?$value['format']:'', + 'field_translate' => $value['translate'], + 'field_data' => $value['data'], + 'field_data_translated' => isset($prev_translation[$field]) ? $prev_translation[$field] : '', + 'field_finished' => 0 + ); + if(isset($unchanged[$field])){ + $job_translate['field_finished'] = 1; + } + //$job_translate['field_data_translated'] = $unchanged[$field]; + + $wpdb->insert($wpdb->prefix . 'icl_translate', $job_translate); + } + + if(!defined('ICL_TM_DISABLE_ALL_NOTIFICATIONS') && $translation_status->translation_service=='local'){ + if($this->settings['notification']['new-job'] == ICL_TM_NOTIFICATION_IMMEDIATELY){ + require_once ICL_PLUGIN_PATH . '/inc/translation-management/tm-notification.class.php'; + if($job_id){ + $tn_notification = new TM_Notification(); + if(empty($translator_id)){ + $tn_notification->new_job_any($job_id); + }else{ + $tn_notification->new_job_translator($job_id, $translator_id); + } + } + } + } + + return $job_id; + + } + + function assign_translation_job($job_id, $translator_id, $service='local'){ + global $wpdb; + list($prev_translator_id, $rid) = $wpdb->get_row($wpdb->prepare("SELECT translator_id, rid FROM {$wpdb->prefix}icl_translate_job WHERE job_id=%d", $job_id), ARRAY_N); + + require_once ICL_PLUGIN_PATH . '/inc/translation-management/tm-notification.class.php'; + $tn_notification = new TM_Notification(); + if(!empty($prev_translator_id) && $prev_translator_id != $translator_id){ + if($job_id){ + $tn_notification->translator_removed($prev_translator_id, $job_id); + } + } + + if($this->settings['notification']['new-job'] == ICL_TM_NOTIFICATION_IMMEDIATELY){ + if(empty($translator_id)){ + $tn_notification->new_job_any($job_id); + }else{ + $tn_notification->new_job_translator($job_id, $translator_id); + } + } + + $wpdb->update($wpdb->prefix.'icl_translation_status', + array('translator_id'=>$translator_id, 'status'=>ICL_TM_WAITING_FOR_TRANSLATOR, 'translation_service' => $service), + array('rid'=>$rid)); + $wpdb->update($wpdb->prefix.'icl_translate_job', array('translator_id'=>$translator_id), array('job_id'=>$job_id)); + return true; + } + + function get_translation_jobs($args = array()){ + global $wpdb, $sitepress, $wp_query; + + // defaults + $args_default = array( + 'translator_id' => 0, + 'status' => false, + 'include_unassigned' => false + ); + + extract($args_default); + extract($args, EXTR_OVERWRITE); + + $_exp = explode('-', $translator_id); + $service = isset($_exp[1]) ? $_exp[1] : 'local'; + $translator_id = $_exp[0]; + + $where = " s.status > " . ICL_TM_NOT_TRANSLATED; + if($status != ''){ + $where .= " AND s.status=" . intval($status); + } + if($status != ICL_TM_DUPLICATE){ + $where .= " AND s.status <> " . ICL_TM_DUPLICATE; + } + if(!empty($translator_id)){ + if($include_unassigned){ + $where .= " AND (j.translator_id=" . intval($translator_id) . " OR j.translator_id=0) "; + }else{ + $where .= " AND j.translator_id=" . intval($translator_id); + } + if(!empty($service)){ + $where .= " AND s.translation_service='{$service}'"; + } + } + if(!empty($from)){ + $where .= " AND t.source_language_code='".$wpdb->escape($from)."'"; + } + if(!empty($to)){ + $where .= " AND t.language_code='".$wpdb->escape($to)."'"; + } + + // ORDER BY + if($include_unassigned){ + $orderby[] = 'j.translator_id DESC'; + } + $orderby[] = ' j.job_id DESC '; + $orderby = join(', ', $orderby); + + // LIMIT + if(!isset($_GET['paged'])) $_GET['paged'] = 1; + $offset = ($_GET['paged']-1)*$limit_no; + $limit = " " . $offset . ',' . $limit_no; + + $jobs = $wpdb->get_results( + "SELECT SQL_CALC_FOUND_ROWS + j.job_id, t.trid, t.language_code, t.source_language_code, + s.translation_id, s.status, s.needs_update, s.translator_id, u.display_name AS translator_name, s.translation_service + FROM {$wpdb->prefix}icl_translate_job j + JOIN {$wpdb->prefix}icl_translation_status s ON j.rid = s.rid + JOIN {$wpdb->prefix}icl_translations t ON s.translation_id = t.translation_id + LEFT JOIN {$wpdb->users} u ON s.translator_id = u.ID + WHERE {$where} AND revision IS NULL + ORDER BY {$orderby} + LIMIT {$limit} + " + ); + + $count = $wpdb->get_var("SELECT FOUND_ROWS()"); + + $wp_query->found_posts = $count; + $wp_query->query_vars['posts_per_page'] = $limit_no; + $wp_query->max_num_pages = ceil($wp_query->found_posts/$limit_no); + + foreach($jobs as $k=>$row){ + //original + $post_id = $wpdb->get_var($wpdb->prepare(" + SELECT field_data + FROM {$wpdb->prefix}icl_translate + WHERE job_id=%d and field_type='original_id'", $row->job_id)); + + $parts = explode('_', $post_id); + if ($parts[0] == 'external') { + $jobs[$k]->original_doc_id = $post_id; + + $jobs[$k]->post_title = base64_decode($wpdb->get_var($wpdb->prepare(" + SELECT field_data + FROM {$wpdb->prefix}icl_translate + WHERE job_id=%d and field_type='name'", $row->job_id))); + if ($jobs[$k]->post_title == "") { + // try the title field. + $jobs[$k]->post_title = base64_decode($wpdb->get_var($wpdb->prepare(" + SELECT field_data + FROM {$wpdb->prefix}icl_translate + WHERE job_id=%d and field_type='title'", $row->job_id))); + } + + $jobs[$k]->edit_link = $this->tm_post_link($post_id); + $ldf = $sitepress->get_language_details($row->source_language_code); + } else { + $doc = $wpdb->get_row($wpdb->prepare("SELECT ID, post_title, post_type FROM {$wpdb->posts} WHERE ID=%d", $post_id)); + if ($doc) { + $jobs[$k]->post_title = $doc->post_title; + $jobs[$k]->original_doc_id = $doc->ID; + $jobs[$k]->edit_link = get_edit_post_link($doc->ID); + $ldf = $sitepress->get_language_details($sitepress->get_element_language_details($post_id, 'post_' . $doc->post_type)->language_code); + } else { + $jobs[$k]->post_title = __("The original has been deleted!", "sitepress"); + $jobs[$k]->original_doc_id = 0; + $jobs[$k]->edit_link = ""; + $ldf['display_name'] = __("Deleted", "sitepress"); + } + } + $ldt = $sitepress->get_language_details($row->language_code); + $jobs[$k]->lang_text = $ldf['display_name'] . ' » ' . $ldt['display_name']; + if($row->translation_service=='icanlocalize'){ + $row->translator_name = ICL_Pro_Translation::get_translator_name($row->translator_id); + } + } + return $jobs; + + } + + function get_translation_job($job_id, $include_non_translatable_elements = false, $auto_assign = false, $revisions = 0){ + global $wpdb, $sitepress, $current_user; + get_currentuserinfo(); + $job = $wpdb->get_row($wpdb->prepare(" + SELECT + j.rid, j.translator_id, j.translated, j.manager_id, + s.status, s.needs_update, s.translation_service, + t.trid, t.language_code, t.source_language_code + FROM {$wpdb->prefix}icl_translate_job j + JOIN {$wpdb->prefix}icl_translation_status s ON j.rid = s.rid + JOIN {$wpdb->prefix}icl_translations t ON s.translation_id = t.translation_id + WHERE j.job_id = %d", $job_id)); + + $post_id = $wpdb->get_var($wpdb->prepare(" + SELECT field_data + FROM {$wpdb->prefix}icl_translate + WHERE job_id=%d and field_type='original_id'", $job_id)); + + $parts = explode('_', $post_id); + if ($parts[0] == 'external') { + $job->original_doc_id = $post_id; + $job->original_doc_title = base64_decode($wpdb->get_var($wpdb->prepare(" + SELECT field_data + FROM {$wpdb->prefix}icl_translate + WHERE job_id=%d and field_type='name'", $job_id))); + if ($job->original_doc_title == "") { + // try the title field. + $job->original_doc_title = base64_decode($wpdb->get_var($wpdb->prepare(" + SELECT field_data + FROM {$wpdb->prefix}icl_translate + WHERE job_id=%d and field_type='title'", $job_id))); + } + $job->original_post_type = $wpdb->get_var($wpdb->prepare(" + SELECT element_type + FROM {$wpdb->prefix}icl_translations + WHERE trid=%d AND language_code='%s'", + $job->trid, $job->source_language_code)); + } else { + $original = $wpdb->get_row($wpdb->prepare(" + SELECT t.element_id, p.post_title, p.post_type + FROM {$wpdb->prefix}icl_translations t + JOIN {$wpdb->posts} p ON t.element_id = p.ID AND t.trid = %d + WHERE t.language_code = '%s'", $job->trid, $job->source_language_code)); + $job->original_doc_title = $original->post_title; + $job->original_doc_id = $original->element_id; + $job->original_post_type = $original->post_type; + } + + $_ld = $sitepress->get_language_details($job->source_language_code); + $job->from_language = $_ld['display_name']; + $_ld = $sitepress->get_language_details($job->language_code); + $job->to_language = $_ld['display_name']; + + if(!$include_non_translatable_elements){ + $jelq = ' AND field_translate = 1'; + }else{ + $jelq = ''; + } + $job->elements = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}icl_translate WHERE job_id = %d {$jelq} ORDER BY tid ASC", $job_id)); + if($job->translator_id == 0 || $job->status == ICL_TM_WAITING_FOR_TRANSLATOR){ + if($auto_assign){ + $wpdb->update($wpdb->prefix . 'icl_translate_job', array('translator_id' => $this->current_translator->translator_id), array('job_id'=>$job_id)); + $wpdb->update($wpdb->prefix . 'icl_translation_status', + array('translator_id' => $this->current_translator->translator_id, 'status' => ICL_TM_IN_PROGRESS), + array('rid'=>$job->rid) + ); + } + }elseif($job->translator_id != @intval($this->current_translator->translator_id) && !defined('XMLRPC_REQUEST') && $job->manager_id != $current_user->ID){ + static $erroronce = array(); + if(empty($erroronce[$job_id])){ + $this->messages[] = array( + 'type' => 'error', 'text' => sprintf(__("You can't translate this document. It's assigned to a different translator.
                  Document: %s (ID = %d).", 'sitepress') , $job->original_doc_title, $job_id) + ); + $erroronce[$job_id] = true; + } + return false; + } + + //do we have a previous version + if($revisions > 0){ + $prev_version_job_id = $wpdb->get_var($wpdb->prepare(" + SELECT MAX(job_id) + FROM {$wpdb->prefix}icl_translate_job + WHERE rid=%d AND job_id < %d", $job->rid, $job_id)); + if($prev_version_job_id){ + $job->prev_version = $this->get_translation_job($prev_version_job_id, false, false, $revisions - 1); + } + + } + + // allow adding custom elements + $job->elements = apply_filters('icl_job_elements', $job->elements, $post_id, $job_id); + + return $job; + } + + function get_translation_job_id($trid, $language_code){ + global $wpdb, $sitepress; + + $job_id = $wpdb->get_var($wpdb->prepare(" + SELECT tj.job_id FROM {$wpdb->prefix}icl_translate_job tj + JOIN {$wpdb->prefix}icl_translation_status ts ON tj.rid = ts.rid + JOIN {$wpdb->prefix}icl_translations t ON ts.translation_id = t.translation_id + WHERE t.trid = %d AND t.language_code='%s' + ORDER BY tj.job_id DESC LIMIT 1 + ", $trid, $language_code)); + + return $job_id; + } + + function _save_translation_field($tid, $field){ + global $wpdb; + $update['field_data_translated'] = $this->encode_field_data($field['data'], $field['format']); + if(isset($field['finished']) && $field['finished']){ + $update['field_finished'] = 1; + } + $wpdb->update($wpdb->prefix . 'icl_translate', $update, array('tid'=>$tid)); + } + + + function save_translation($data){ + global $wpdb, $sitepress, $sitepress_settings, $ICL_Pro_Translation; + + $is_incomplete = false; + foreach($data['fields'] as $field){ + $this->_save_translation_field($field['tid'], $field); + if(!isset($field['finished']) || !$field['finished']){ + $is_incomplete = true; + } + } + + if(!empty($data['complete']) && !$is_incomplete){ + $wpdb->update($wpdb->prefix . 'icl_translate_job', array('translated'=>1), array('job_id'=>$data['job_id'])); + $rid = $wpdb->get_var($wpdb->prepare("SELECT rid FROM {$wpdb->prefix}icl_translate_job WHERE job_id=%d", $data['job_id'])); + $translation_id = $wpdb->get_var($wpdb->prepare("SELECT translation_id FROM {$wpdb->prefix}icl_translation_status WHERE rid=%d", $rid)); + $wpdb->update($wpdb->prefix . 'icl_translation_status', array('status'=>ICL_TM_COMPLETE, 'needs_update'=>0), array('rid'=>$rid)); + list($element_id, $trid) = $wpdb->get_row($wpdb->prepare("SELECT element_id, trid FROM {$wpdb->prefix}icl_translations WHERE translation_id=%d", $translation_id), ARRAY_N); + $job = $this->get_translation_job($data['job_id'], true); + + $parts = explode('_', $job->original_doc_id); + if ($parts[0] == 'external') { + + // Translations are saved in the string table for 'external' types + + $id = array_pop($parts); + unset($parts[0]); + $type = implode('_', $parts); + + foreach($job->elements as $field){ + if ($field->field_translate) { + if (function_exists('icl_st_is_registered_string')) { + $string_id = icl_st_is_registered_string($type, $id . '_' . $field->field_type); + if (!$string_id) { + icl_register_string($type, $id . '_' . $field->field_type, $this->decode_field_data($field->field_data, $field->field_format)); + $string_id = icl_st_is_registered_string($type, $id . '_' . $field->field_type); + } + if ($string_id) { + icl_add_string_translation($string_id, $job->language_code, $this->decode_field_data($field->field_data_translated, $field->field_format), ICL_STRING_TRANSLATION_COMPLETE); + } + } + } + } + + } else { + + if(!is_null($element_id)){ + $postarr['ID'] = $_POST['post_ID'] = $element_id; + } + + foreach($job->elements as $field){ + switch($field->field_type){ + case 'title': + $postarr['post_title'] = $this->decode_field_data($field->field_data_translated, $field->field_format); + break; + case 'body': + $postarr['post_content'] = $this->decode_field_data($field->field_data_translated, $field->field_format); + break; + case 'excerpt': + $postarr['post_excerpt'] = $this->decode_field_data($field->field_data_translated, $field->field_format); + break; + case 'URL': + $postarr['post_name'] = $this->decode_field_data($field->field_data_translated, $field->field_format); + break; + case 'tags': + $tags = $this->decode_field_data($field->field_data_translated, $field->field_format); + $original_tags = $this->decode_field_data($field->field_data, $field->field_format); + // create tags that don't exist + foreach($tags as $k=>$t){ + $thetag = $sitepress->get_term_by_name_and_lang($t, 'post_tag', $job->language_code); + $tags[$k] = $t; // Save $t as we may have added @.lang to it + if(empty($thetag)){ + $the_original_tag = $sitepress->get_term_by_name_and_lang($original_tags[$k], 'post_tag', $job->source_language_code); + $tmp = wp_insert_term($t, 'post_tag'); + if(!is_wp_error($tmp) && isset($tmp['term_taxonomy_id'])){ + $sitepress->set_term_translation($the_original_tag, + $tmp['term_taxonomy_id'], + 'post_tag', + $job->language_code, + $job->source_language_code); + } + } + } + $postarr['tags_input'] = join(',', $tags); + $postarr['tax_input']['post_tag'] = $tags; + + break; + case 'categories': + $cats = $this->decode_field_data($field->field_data_translated, $field->field_format); + $original_cats = $this->decode_field_data($field->field_data, $field->field_format); + $missing_parents = array(); + foreach($cats as $k=>$c){ + $parent_missing = false; + $thecat = $sitepress->get_term_by_name_and_lang($c, 'category', $job->language_code); + if(empty($thecat)){ + $the_original_cat = $sitepress->get_term_by_name_and_lang($original_cats[$k], 'category', $job->source_language_code); + if ($the_original_cat) { + $the_original_cat_parent = $wpdb->get_var("SELECT parent FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id=".$the_original_cat->term_taxonomy_id); + } else { + $the_original_cat_parent = false; + } + if($the_original_cat_parent){ + $op_tr = icl_object_id($the_original_cat_parent, 'category', false, $job->language_code); + if (!$op_tr) { + // The parent is missing. Possibly because we haven't created a translation of it yet + $parent_missing = true; + } + }else{$op_tr = 0;} + $tmp = wp_insert_term($c, 'category', array('parent'=>$op_tr)); + if(!is_wp_error($tmp) && isset($tmp['term_taxonomy_id'])){ + $sitepress->set_term_translation($the_original_cat, + $tmp['term_taxonomy_id'], + 'category', + $job->language_code, + $job->source_language_code); + + } + $cat_id = $tmp['term_id']; + }else{ + $cat_id = $thecat->term_id; + } + + $cat_ids[] = $cat_id; + + if ($parent_missing) { + $missing_parents[$cat_id] = $the_original_cat_parent; + } + } + + // Double check missing parents as they might be available now. + foreach ($missing_parents as $cat_id => $the_original_cat_parent) { + $op_tr = icl_object_id($the_original_cat_parent, 'category', false, $job->language_code); + $cat_trid = $sitepress->get_element_trid($cat_id,'tax_category'); + wp_update_term($cat_id, 'category', array('parent' => $op_tr)); + $wpdb->update($wpdb->prefix.'icl_translations', + array('language_code'=>$job->language_code, 'trid'=>$cat_trid, 'source_language_code'=>$job->source_language_code), + array('element_type'=>'tax_category','element_id'=>$cat_id)); + } + + $postarr['post_category'] = $cat_ids; + break; + default: + if(in_array($field->field_type, $sitepress->get_translatable_taxonomies(false, $job->original_post_type))){ + $taxs = $this->decode_field_data($field->field_data_translated, $field->field_format); + $original_taxs = $this->decode_field_data($field->field_data, $field->field_format); + $taxonomy = $field->field_type; + $alltaxs = $tax_ids = array(); + foreach($taxs as $k=>$c){ + $thetax = $sitepress->get_term_by_name_and_lang($c, $taxonomy, $job->language_code); + $taxs[$k] = $c; // Save $c as we may have added @.lang to it + if(empty($thetax)){ + $the_original_tax = $sitepress->get_term_by_name_and_lang($original_taxs[$k], $taxonomy, $job->source_language_code); + $the_original_tax_parent = $wpdb->get_var("SELECT parent FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id=".$the_original_tax->term_taxonomy_id); + if($the_original_tax_parent){ + $op_tr = icl_object_id($the_original_tax_parent, $taxonomy, false, $job->language_code); + }else{$op_tr = 0;} + $tmp = wp_insert_term($c, $taxonomy, array('parent'=>$op_tr)); + if(isset($tmp['term_taxonomy_id'])){ + $sitepress->set_term_translation($the_original_tax, + $tmp['term_taxonomy_id'], + $taxonomy, + $job->language_code, + $job->source_language_code); + } + $tax_id = $tmp['term_id']; + + }else{ + $tax_id = $thetax->term_id; + } + $tax_ids[] = $tax_id; + $alltaxs[] = $c; + } + + $taxonomy_obj = get_taxonomy($taxonomy); + // array = hierarchical, string = non-hierarchical. + if ($taxonomy_obj->hierarchical) { + $postarr['tax_input'][$taxonomy] = $tax_ids; + } else { + $postarr['tax_input'][$taxonomy] = $taxs; + } + } + } + } + + $original_post = get_post($job->original_doc_id); + + $postarr['post_author'] = $original_post->post_author; + $postarr['post_type'] = $original_post->post_type; + + if($sitepress_settings['sync_comment_status']){ + $postarr['comment_status'] = $original_post->comment_status; + } + if($sitepress_settings['sync_ping_status']){ + $postarr['ping_status'] = $original_post->ping_status; + } + if($sitepress_settings['sync_page_ordering']){ + $postarr['menu_order'] = $original_post->menu_order; + } + if($sitepress_settings['sync_private_flag'] && $original_post->post_status=='private'){ + $postarr['post_status'] = 'private'; + } + if($sitepress_settings['sync_post_date']){ + $postarr['post_date'] = $original_post->post_date; + } + + + if(is_null($element_id)){ + $postarr['post_status'] = !$sitepress_settings['translated_document_status'] ? 'draft' : $original_post->post_status; + } else { + // set post_status to the current post status. + $postarr['post_status'] = $wpdb->get_var("SELECT post_status FROM {$wpdb->prefix}posts WHERE ID = ".$element_id); + } + + if($original_post->post_parent){ + $post_parent_trid = $wpdb->get_var("SELECT trid FROM {$wpdb->prefix}icl_translations + WHERE element_type='post_{$original_post->post_type}' AND element_id='{$original_post->post_parent}'"); + if($post_parent_trid){ + $parent_id = $wpdb->get_var("SELECT element_id FROM {$wpdb->prefix}icl_translations + WHERE element_type='post_{$original_post->post_type}' AND trid='{$post_parent_trid}' AND language_code='{$job->language_code}'"); + } + } + + if(isset($parent_id) && $sitepress_settings['sync_page_parent']){ + $_POST['post_parent'] = $postarr['post_parent'] = $parent_id; + $_POST['parent_id'] = $postarr['parent_id'] = $parent_id; + } + + $_POST['trid'] = $trid; + $_POST['lang'] = $job->language_code; + $_POST['skip_sitepress_actions'] = true; + + $postarr = apply_filters('icl_pre_save_pro_translation', $postarr); + + if(isset($element_id)){ // it's an update so dont change the url + $postarr['post_name'] = $wpdb->get_var($wpdb->prepare("SELECT post_name FROM {$wpdb->posts} WHERE ID=%d", $element_id)); + } + + $new_post_id = wp_insert_post($postarr); + do_action('icl_pro_translation_saved', $new_post_id, $data['fields']); + + + // Allow identical slugs + $post_name = sanitize_title($postarr['post_title']); + $post_name_rewritten = $wpdb->get_var($wpdb->prepare("SELECT post_name FROM {$wpdb->posts} WHERE ID=%d", $new_post_id)); + + $post_name_base = $post_name; + + if($post_name != $post_name_rewritten){ + $incr = 1; + do{ + + $exists = $wpdb->get_var($wpdb->prepare(" + SELECT p.ID FROM {$wpdb->posts} p + JOIN {$wpdb->prefix}icl_translations t ON t.element_id = p.ID AND t.element_type=%s + WHERE p.ID <> %d AND t.language_code = %s AND p.post_name=%s + ", 'post_' . $postarr['post_type'], $new_post_id, $job->language_code, $post_name)); + + if($exists){ + $incr++; + }else{ + break; + } + $post_name = $post_name_base . '-' . $incr; + + }while($exists); + + $wpdb->update($wpdb->posts, array('post_name' => $post_name), array('ID' => $new_post_id)); + } + + + + + + $ICL_Pro_Translation->_content_fix_links_to_translated_content($new_post_id, $job->language_code); + + // update body translation with the links fixed + $new_post_content = $wpdb->get_var($wpdb->prepare("SELECT post_content FROM {$wpdb->posts} WHERE ID=%d", $new_post_id)); + foreach($job->elements as $jel){ + if($jel->field_type=='body'){ + $fields_data_translated = $this->encode_field_data($new_post_content, $jel->field_format); + break; + } + } + $wpdb->update($wpdb->prefix.'icl_translate', array('field_data_translated'=>$fields_data_translated), array('job_id'=>$data['job_id'], 'field_type'=>'body')); + + + // set stickiness + //is the original post a sticky post? + remove_filter('option_sticky_posts', array($sitepress,'option_sticky_posts')); // remove filter used to get language relevant stickies. get them all + $sticky_posts = get_option('sticky_posts'); + $is_original_sticky = $original_post->post_type=='post' && in_array($original_post->ID, $sticky_posts); + + if($is_original_sticky && $sitepress_settings['sync_sticky_flag']){ + stick_post($new_post_id); + }else{ + if($original_post->post_type=='post' && !is_null($element_id)){ + unstick_post($new_post_id); //just in case - if this is an update and the original post stckiness has changed since the post was sent to translation + } + } + + //sync plugins texts + foreach((array)$this->settings['custom_fields_translation'] as $cf => $op){ + if ($op == 1) { + update_post_meta($new_post_id, $cf, get_post_meta($original_post->ID,$cf,true)); + } + } + + // set specific custom fields + $copied_custom_fields = array('_top_nav_excluded', '_cms_nav_minihome'); + foreach($copied_custom_fields as $ccf){ + $val = get_post_meta($original_post->ID, $ccf, true); + update_post_meta($new_post_id, $ccf, $val); + } + + // sync _wp_page_template + if($sitepress_settings['sync_page_template']){ + $_wp_page_template = get_post_meta($original_post->ID, '_wp_page_template', true); + if(!empty($_wp_page_template)){ + update_post_meta($new_post_id, '_wp_page_template', $_wp_page_template); + } + } + + + // set the translated custom fields if we have any. + foreach((array)$this->settings['custom_fields_translation'] as $field_name => $val){ + if ($val == 2) { // should be translated + // find it in the translation + foreach($job->elements as $name => $eldata) { + if ($eldata->field_data == $field_name) { + if (preg_match("/field-(.*?)-name/", $eldata->field_type, $match)) { + $field_id = $match[1]; + foreach($job->elements as $k => $v){ + if($v->field_type=='field-'.$field_id){ + $field_translation = $this->decode_field_data($v->field_data_translated, $v->field_format) ; + } + if($v->field_type=='field-'.$field_id.'-type'){ + $field_type = $v->field_data; + } + } + if ($field_type == 'custom_field') { + $field_translation = str_replace ( '�A;', "\n", $field_translation ); + // always decode html entities eg decode & to & + $field_translation = html_entity_decode($field_translation); + update_post_meta($new_post_id, $field_name, $field_translation); + } + } + } + } + } + } + $link = get_edit_post_link($new_post_id); + if ($link == '') { + // the current user can't edit so just include permalink + $link = get_permalink($new_post_id); + } + if(is_null($element_id)){ + $wpdb->update($wpdb->prefix.'icl_translations', array('element_id' => $new_post_id), array('translation_id' => $translation_id) ); + $user_message = __('Translation added: ', 'sitepress') . '' . $postarr['post_title'] . '.'; + }else{ + $user_message = __('Translation updated: ', 'sitepress') . '' . $postarr['post_title'] . '.'; + } + } + + + $this->messages[] = array( + 'type'=>'updated', + 'text' => $user_message + ); + + + if($this->settings['notification']['completed'] != ICL_TM_NOTIFICATION_NONE){ + require_once ICL_PLUGIN_PATH . '/inc/translation-management/tm-notification.class.php'; + if($data['job_id']){ + $tn_notification = new TM_Notification(); + $tn_notification->work_complete($data['job_id'], !is_null($element_id)); + } + } + + self::set_page_url($new_post_id); + + // redirect to jobs list + wp_redirect(admin_url(sprintf('admin.php?page=%s&%s=%d', + WPML_TM_FOLDER . '/menu/translations-queue.php', is_null($element_id) ? 'added' : 'updated', is_null($element_id) ? $new_post_id : $element_id ))); + + }else{ + $this->messages[] = array('type'=>'updated', 'text' => __('Translation (incomplete) saved.', 'sitepress')); + } + + } + + // returns a front end link to a post according to the user access + // hide_empty - if current user doesn't have access to the link don't show at all + public function tm_post_link($post_id, $anchor = false, $hide_empty = false){ + global $current_user; + get_currentuserinfo(); + + $parts = explode('_', $post_id); + if ($parts[0] == 'external') { + + $link = ''; + return apply_filters('WPML_get_link', $link, $post_id, $anchor, $hide_empty); + } + + if(false === $anchor){ + $anchor = get_the_title($post_id); + } + + $opost = get_post($post_id); + if(($opost->post_status == 'draft' || $opost->post_status == 'private') && $opost->post_author != $current_user->data->ID){ + if($hide_empty){ + $elink = ''; + }else{ + $elink = sprintf('%s', $anchor); + } + }else{ + $elink = sprintf('%s', get_permalink($post_id), $anchor); + } + + return $elink; + + } + + public function tm_post_permalink($post_id){ + global $current_user; + get_currentuserinfo(); + + $parts = explode('_', $post_id); + if ($parts[0] == 'external') { + + return ''; + } + + $opost = get_post($post_id); + if(($opost->post_status == 'draft' || $opost->post_status == 'private') && $opost->post_author != $current_user->data->ID){ + $elink = ''; + }else{ + $elink = get_permalink($post_id); + } + + return $elink; + + } + + // + // when the translated post was created, we have the job_id and need to update the job + function save_job_fields_from_post($job_id, $post){ + global $wpdb, $sitepress; + $data['complete'] = 1; + $data['job_id'] = $job_id; + $job = $this->get_translation_job($job_id,1); + + if(is_array($job->elements)) + foreach($job->elements as $element){ + $field_data = ''; + switch($element->field_type){ + case 'title': + $field_data = $this->encode_field_data($post->post_title, $element->field_format); + break; + case 'body': + $field_data = $this->encode_field_data($post->post_content, $element->field_format); + break; + case 'excerpt': + $field_data = $this->encode_field_data($post->post_excerpt, $element->field_format); + break; + default: + if(false !== strpos($element->field_type, 'field-') && !empty($this->settings['custom_fields_translation'])){ + $cf_name = preg_replace('#^field-#', '', $element->field_type); + if(isset($this->settings['custom_fields_translation'][$cf_name])){ + if($this->settings['custom_fields_translation'][$cf_name] == 1){ //copy + $field_data = get_post_meta($original_post->ID, $cf_name, 1); + if(is_scalar($field_data)) + $field_data = $this->encode_field_data($field_data, $element->field_format); + else $field_data = ''; + }elseif($this->settings['custom_fields_translation'][$cf_name] == 2){ // translate + $field_data = get_post_meta($post->ID, $cf_name, 1); + if(is_scalar($field_data)) + $field_data = $this->encode_field_data($field_data, $element->field_format); + else $field_data = ''; + } + } + }else{ + if(in_array($element->field_type, $sitepress->get_translatable_taxonomies(true, $post->post_type))){ + $ids = array(); + foreach($job->elements as $je){ + if($je->field_type == $element->field_type .'_ids' ){ + $ids = explode(',', $je->field_data); + } + } + $translated_tax_names = array(); + foreach($ids as $id){ + $translated_tax_id = icl_object_id($id, $element->field_type,false,$job->language_code); + if($translated_tax_id){ + $translated_tax_names[] = $wpdb->get_var($wpdb->prepare(" + SELECT t.name FROM {$wpdb->terms} t JOIN {$wpdb->term_taxonomy} x ON t.term_id = x.term_id + WHERE x.term_taxonomy_id = {$translated_tax_id} + ")); + } + } + $field_data = $this->encode_field_data($translated_tax_names, $element->field_format); + + } + } + } + $wpdb->update($wpdb->prefix.'icl_translate', + array('field_data_translated'=>$field_data, 'field_finished'=>1), + array('tid'=>$element->tid) + ); + + } + + $this->mark_job_done($job_id); + + } + + public function determine_translated_taxonomies($elements, $taxonomy, $translated_language){ + global $sitepress, $wpdb; + foreach($elements as $k=>$element){ + $term = get_term_by('name', $element, $taxonomy); + if ($term) { + $trid = $sitepress->get_element_trid($term->term_taxonomy_id, 'tax_' . $taxonomy); + $translations = $sitepress->get_element_translations($trid, 'tax_' . $taxonomy); + if(isset($translations[$translated_language])){ + $translated_elements[$k] = $translations[$translated_language]->name; + }else{ + $translated_elements[$k] = ''; + } + } else { + $translated_elements[$k] = ''; + } + } + + return $translated_elements; + } + + function mark_job_done($job_id){ + global $wpdb; + $wpdb->update($wpdb->prefix.'icl_translate_job', array('translated'=>1), array('job_id'=>$job_id)); + $wpdb->update($wpdb->prefix.'icl_translate', array('field_finished'=>1), array('job_id'=>$job_id)); + } + + function resign_translator($job_id){ + global $wpdb; + list($translator_id, $rid) = $wpdb->get_row($wpdb->prepare("SELECT translator_id, rid FROM {$wpdb->prefix}icl_translate_job WHERE job_id=%d", $job_id), ARRAY_N); + + if(!empty($translator_id)){ + if($this->settings['notification']['resigned'] != ICL_TM_NOTIFICATION_NONE){ + require_once ICL_PLUGIN_PATH . '/inc/translation-management/tm-notification.class.php'; + if($job_id){ + $tn_notification = new TM_Notification(); + $tn_notification->translator_resigned($translator_id, $job_id); + } + } + } + + $wpdb->update($wpdb->prefix.'icl_translate_job', array('translator_id'=>0), array('job_id'=>$job_id)); + $wpdb->update($wpdb->prefix.'icl_translation_status', array('translator_id'=>0, 'status'=>ICL_TM_WAITING_FOR_TRANSLATOR), array('rid'=>$rid)); + } + + // $translation_id - int or array + function cancel_translation_request($translation_id){ + global $wpdb; + + if(is_array($translation_id)){ + foreach($translation_id as $id){ + $this->cancel_translation_request($id); + } + }else{ + + $rid = $wpdb->get_var($wpdb->prepare("SELECT rid FROM {$wpdb->prefix}icl_translation_status WHERE translation_id=%d", $translation_id)); + $job_id = $wpdb->get_var($wpdb->prepare("SELECT job_id FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d AND revision IS NULL ", $rid)); + $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translate_job WHERE job_id=%d", $job_id)); + $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translate WHERE job_id=%d", $job_id)); + + $max_job_id = $wpdb->get_var($wpdb->prepare("SELECT MAX(job_id) FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d", $rid)); + if($max_job_id){ + $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}icl_translate_job SET revision = NULL WHERE job_id=%d", $max_job_id)); + $_prevstate = $wpdb->get_var($wpdb->prepare("SELECT _prevstate FROM {$wpdb->prefix}icl_translation_status WHERE translation_id = %d", $translation_id)); + if(!empty($_prevstate)){ + $_prevstate = unserialize($_prevstate); + $wpdb->update($wpdb->prefix . 'icl_translation_status', + array( + 'status' => $_prevstate['status'], + 'translator_id' => $_prevstate['translator_id'], + 'status' => $_prevstate['status'], + 'needs_update' => $_prevstate['needs_update'], + 'md5' => $_prevstate['md5'], + 'translation_service' => $_prevstate['translation_service'], + 'translation_package' => $_prevstate['translation_package'], + 'timestamp' => $_prevstate['timestamp'], + 'links_fixed' => $_prevstate['links_fixed'] + ), + array('translation_id'=>$translation_id) + ); + } + }else{ + $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translation_status WHERE translation_id=%d", $translation_id)); + } + } + + } + + /* WPML CONFIG */ + /* ******************************************************************************************** */ + function _parse_wpml_config($file){ + global $sitepress, $sitepress_settings; + + $config = icl_xml2array(file_get_contents($file)); + + // custom fields + if(!empty($config['wpml-config']['custom-fields'])){ + if(!is_numeric(key(current($config['wpml-config']['custom-fields'])))){ + $cf[0] = $config['wpml-config']['custom-fields']['custom-field']; + }else{ + $cf = $config['wpml-config']['custom-fields']['custom-field']; + } + foreach($cf as $c){ + if($c['attr']['action'] == 'translate'){ + $action = 2; + }elseif($c['attr']['action'] == 'copy'){ + $action = 1; + }else{ + $action = 0; + } + $this->settings['custom_fields_translation'][$c['value']] = $action; + if(is_array($this->settings['custom_fields_readonly_config']) && !in_array($c['value'], $this->settings['custom_fields_readonly_config'])){ + $this->settings['custom_fields_readonly_config'][] = $c['value']; + } + + } + } + + // custom types + $cf = array(); + if(!empty($config['wpml-config']['custom-types'])){ + if(!is_numeric(key(current($config['wpml-config']['custom-types'])))){ + $cf[0] = $config['wpml-config']['custom-types']['custom-type']; + }else{ + $cf = $config['wpml-config']['custom-types']['custom-type']; + } + foreach($cf as $c){ + $translate = intval($c['attr']['translate']); + if($translate){ + $sitepress->verify_post_translations($c['value']); + } + $this->settings['custom_types_readonly_config'][$c['value']] = $translate; + $sitepress_settings['custom_posts_sync_option'][$c['value']] = $translate; + } + add_filter('get_translatable_documents', array($this, '_override_get_translatable_documents')); + } + + // taxonomies + $cf = array(); + if(!empty($config['wpml-config']['taxonomies'])){ + if(!is_numeric(key(current($config['wpml-config']['taxonomies'])))){ + $cf[0] = $config['wpml-config']['taxonomies']['taxonomy']; + }else{ + $cf = $config['wpml-config']['taxonomies']['taxonomy']; + } + foreach($cf as $c){ + $translate = intval($c['attr']['translate']); + $this->settings['taxonomies_readonly_config'][$c['value']] = $translate; + $sitepress_settings['taxonomies_sync_option'][$c['value']] = $translate; + } + add_filter('get_translatable_taxonomies', array($this, '_override_get_translatable_taxonomies')); + } + + // admin texts + if(function_exists('icl_register_string')){ + $admin_texts = array(); + if(!empty($config['wpml-config']['admin-texts'])){ + + $type = (dirname($file) == get_template_directory() || dirname($file) == get_stylesheet_directory()) ? 'theme' : 'plugin'; + $atid = basename(dirname($file)); + + if( !is_numeric(key(@current($config['wpml-config']['admin-texts'])))){ + $admin_texts[0] = $config['wpml-config']['admin-texts']['key']; + }else{ + $admin_texts = $config['wpml-config']['admin-texts']['key']; + } + + foreach($admin_texts as $a){ + $keys = array(); + if(!isset($a['key'])){ + $arr[$a['attr']['name']] = 1; + continue; + }elseif(!is_numeric(key($a['key']))){ + $keys[0] = $a['key']; + }else{ + $keys = $a['key']; + } + + foreach($keys as $key){ + if(isset($key['key'])){ + $arr[$a['attr']['name']][$key['attr']['name']] = $this->_read_admin_texts_recursive($key['key']); + }else{ + $arr[$a['attr']['name']][$key['attr']['name']] = 1; + } + } + } + + foreach($arr as $key => $v){ + + + // http://forum.wpml.org/topic.php?id=4888&replies=7#post-23038 + // http://forum.wpml.org/topic.php?id=4615 + // http://forum.wpml.org/topic.php?id=4761 + remove_filter('option_'.$key, 'icl_st_translate_admin_string'); // dont try to translate this one below + $value = get_option($key); + add_filter('option_'.$key, 'icl_st_translate_admin_string'); // put the filter back on + + $value = maybe_unserialize($value); + if(false === $value){ + unset($arr[$key]); + }if(is_scalar($value)){ + icl_register_string('admin_texts_' . $type . '_' . $atid, $key , $value); + }else{ + if(is_object($value)) $value = (array)$value; + if(!empty($value)){ + $this->_register_string_recursive($key, $value, $arr[$key], '', $type . '_' . $atid); + } + } + } + + $this->admin_texts_to_translate = array_merge($this->admin_texts_to_translate, $arr); + $_icl_admin_option_names = get_option('_icl_admin_option_names'); + + //filter out obsolete entries + /* + $_as_changed = false; + foreach($_icl_admin_option_names[$type][$atid] as $k=>$csf){ + if(empty($arr[$csf])){ + unset($_icl_admin_option_names[$type][$atid][$k]); + } + } + */ + + $_icl_admin_option_names[$type][$atid] = @array_merge_recursive((array)$_icl_admin_option_names[$type][$atid], $this->_array_keys_recursive($arr)); + $_icl_admin_option_names[$type][$atid] = __array_unique_recursive($_icl_admin_option_names[$type][$atid]); + // __array_unique_recursive is declared in the string translation plugin inc/functions.php + + update_option('_icl_admin_option_names', $_icl_admin_option_names); + + } + } + + // language-switcher-settings + if(empty($sitepress_settings['language_selector_initialized']) || (isset($_GET['restore_ls_settings']) && $_GET['restore_ls_settings'] == 1)){ + if(!empty($config['wpml-config']['language-switcher-settings'])){ + + if(!is_numeric(key($config['wpml-config']['language-switcher-settings']['key']))){ + $cfgsettings[0] = $config['wpml-config']['language-switcher-settings']['key']; + }else{ + $cfgsettings = $config['wpml-config']['language-switcher-settings']['key']; + } + $iclsettings = $this->_read_settings_recursive($cfgsettings); + + $iclsettings['language_selector_initialized'] = 1; + + $sitepress->save_settings($iclsettings); + + if(!empty($sitepress_settings['setup_complete']) && !empty($_GET['page'])){ + wp_redirect(admin_url('admin.php?page='.$_GET['page'].'&icl_ls_reset=default#icl_save_language_switcher_options')); + } + } + } + + } + + function _array_keys_recursive($arr){ + $arr_rec_ret = array(); + foreach((array)$arr as $k=>$v){ + if(is_array($v)){ + $arr_rec_ret[$k] = $this->_array_keys_recursive($v); + }else{ + $arr_rec_ret[] = $k; + } + } + return $arr_rec_ret; + } + + function _read_admin_texts_recursive($keys){ + if(!is_numeric(key($keys))){ + $_keys = array($keys); + $keys = $_keys; + unset($_keys); + } + foreach($keys as $key){ + if(isset($key['key'])){ + $arr[$key['attr']['name']] = $this->_read_admin_texts_recursive($key['key']); + }else{ + $arr[$key['attr']['name']] = 1; + } + } + return $arr; + } + + function _register_string_recursive($key, $value, $arr, $prefix = '', $suffix){ + if(is_scalar($value)){ + if(!empty($value) && $arr == 1){ + icl_register_string('admin_texts_' . $suffix, $prefix . $key , $value); + } + }else{ + if(!is_null($value)){ + foreach($value as $sub_key=>$sub_value){ + if(isset($arr[$sub_key])){ + $this->_register_string_recursive($sub_key, $sub_value, $arr[$sub_key], $prefix . '[' . $key .']', $suffix); + } + } + } + } + } + + function _read_settings_recursive($cfgsettings){ + foreach($cfgsettings as $s){ + if(isset($s['key'])){ + if(!is_numeric(key($s['key']))){ + $skey[0] = $s['key']; + }else{ + $skey = $s['key']; + } + $iclsettings[$s['attr']['name']] = $this->_read_settings_recursive($skey); + }else{ + $iclsettings[$s['attr']['name']] = $s['value']; + } + } + return $iclsettings; + } + + function render_option_writes($option_name, $option_value, $option_key=''){ + if(!defined('WPML_ST_FOLDER')) return; + static $option; + if(!$option_key){ + $option = maybe_unserialize(get_option($option_name)); + if(is_object($option)){ + $option = (array)$option; + } + } + + $option_names = get_option('_icl_admin_option_names'); + + // determine theme/plugin name (string context) + if(!empty($option_names['theme'])){ + foreach((array)$option_names['theme'][basename(get_template_directory())] as $ops=>$val){ + + if(!empty($option_key)){ + $int = preg_match_all('#\[([^\]]+)\]#', $option_key, $matches); + if($int) $opname = $matches[1][0]; + }else{ + $opname = $option_name; + } + + if($ops == $opname){ + $es_context = 'admin_texts_theme_' . basename(get_template_directory()); + break; + } + } + + if(get_template_directory() != get_stylesheet_directory()){ + foreach((array)$option_names['theme'][basename(get_stylesheet_directory())] as $ops=>$val){ + + if(!empty($option_key)){ + $int = preg_match_all('#\[([^\]]+)\]#', $option_key, $matches); + if($int) $opname = $matches[1][0]; + }else{ + $opname = $option_name; + } + + if($ops == $opname){ + $es_context = 'admin_texts_theme_' . get_stylesheet_directory(); + break; + } + } + } + } + if(!empty($option_names['plugin'])){ + foreach((array)$option_names['plugin'] as $plugin => $options){ + foreach($options as $ops){ + if($ops == $option_name){ + $es_context = 'admin_texts_plugin_' . $plugin; + break; + } + } + } + } + + + + echo '
                    '; + echo '
                  • '; + + + if(is_scalar($option_value)){ + $int = preg_match_all('#\[([^\]]+)\]#', $option_key, $matches); + + if(count($matches[1]) > 1){ + $value = $option; + for($i = 1; $i < count($matches[1]); $i++){ + $value = $value[$matches[1][$i]]; + } + $value = $value[$option_name]; + $edit_link = ''; + }else{ + if(is_scalar($option)){ + $value = $option; + }elseif(isset($option[$option_name])){ + $value = $option[$option_name]; + }else{ + $value = ''; + } + + if(!$option_key){ + $edit_link = '[' . + __('translate', 'sitepress') . ']'; + }else{ + $edit_link = ''; + } + } + + echo '
                  • ' . $option_name . ': ' . $value . ' ' . $edit_link . '
                  • '; + }else{ + $edit_link = '[' . + __('translate', 'sitepress') . ']'; + echo '' . $option_name . ' ' . $edit_link; + foreach((array)$option_value as $key=>$value){ + $this->render_option_writes($key, $value, $option_key . '[' . $option_name . ']'); + } + } + echo ''; + echo '
                  '; + } + + function _override_get_translatable_documents($types){ + global $wp_post_types; + foreach($types as $k=>$type){ + if(isset($this->settings['custom_types_readonly_config'][$k]) && !$this->settings['custom_types_readonly_config'][$k]){ + unset($types[$k]); + } + } + foreach($this->settings['custom_types_readonly_config'] as $cp=>$translate){ + if($translate && !isset($types[$cp]) && isset($wp_post_types[$cp])){ + $types[$cp] = $wp_post_types[$cp]; + } + } + return $types; + } + + function _override_get_translatable_taxonomies($taxs_obj_type){ + global $wp_taxonomies; + + $taxs = $taxs_obj_type['taxs']; + + $object_type = $taxs_obj_type['object_type']; + foreach($taxs as $k=>$tax){ + if(isset($this->settings['taxonomies_readonly_config'][$tax]) && !$this->settings['custom_types_readonly_config'][$tax]){ + unset($taxs[$k]); + } + } + + foreach($this->settings['taxonomies_readonly_config'] as $tx=>$translate){ + if($translate && !in_array($tx, $taxs) && isset($wp_taxonomies[$tx]) && in_array($object_type, $wp_taxonomies[$tx]->object_type)){ + $taxs[] = $tx; + } + } + + $ret = array('taxs'=>$taxs, 'object_type'=>$taxs_obj_type['object_type']); + + return $ret; + } + + function load_plugins_wpml_config(){ + $plugins = get_option('active_plugins'); + foreach($plugins as $p){ + $config_file = ABSPATH . '/' . PLUGINDIR . '/' . dirname($p) . '/wpml-config.xml'; + if(trim(dirname($p),'\/.') && file_exists($config_file)){ + $this->_parse_wpml_config($config_file); + } + } + + $mu_plugins = wp_get_mu_plugins(); + if(!empty($mu_plugins)){ + foreach($mu_plugins as $mup){ + if(rtrim(dirname($mup), '/') != WPMU_PLUGIN_DIR){ + $config_file = dirname($mup) . '/wpml-config.xml'; + $this->_parse_wpml_config($config_file); + } + } + } + } + + function load_theme_wpml_config(){ + if(get_template_directory() != get_stylesheet_directory()){ + $config_file = get_stylesheet_directory().'/wpml-config.xml'; + if(file_exists($config_file)){ + $this->_parse_wpml_config($config_file); + } + } + + $config_file = get_template_directory().'/wpml-config.xml'; + if(file_exists($config_file)){ + $this->_parse_wpml_config($config_file); + } + + + } + + function load_config_pre_process(){ + $this->settings['__custom_types_readonly_config_prev'] = (isset($this->settings['custom_types_readonly_config']) && is_array($this->settings['custom_types_readonly_config'])) ? $this->settings['custom_types_readonly_config'] : array(); + $this->settings['custom_types_readonly_config'] = array(); + + $this->settings['__custom_fields_readonly_config_prev'] = (isset($this->settings['custom_fields_readonly_config']) && is_array($this->settings['custom_fields_readonly_config'])) ? $this->settings['custom_fields_readonly_config'] : array(); + $this->settings['custom_fields_readonly_config'] = array(); + + } + + function load_config_post_process(){ + + $changed = false; + foreach($this->settings['__custom_types_readonly_config_prev'] as $pk=>$pv){ + if(!isset($this->settings['custom_types_readonly_config'][$pk]) || $this->settings['custom_types_readonly_config'][$pk] != $pv){ + $changed = true; + break; + } + } + foreach($this->settings['custom_types_readonly_config'] as $pk=>$pv){ + if(!isset($this->settings['__custom_types_readonly_config_prev'][$pk]) || $this->settings['__custom_types_readonly_config_prev'][$pk] != $pv){ + $changed = true; + break; + } + } + + foreach($this->settings['__custom_fields_readonly_config_prev'] as $cf){ + if(!in_array($cf, $this->settings['custom_fields_readonly_config'])){ + $changed = true; + break; + } + } + foreach($this->settings['custom_fields_readonly_config'] as $cf){ + if(!in_array($cf, $this->settings['__custom_fields_readonly_config_prev'])){ + $changed = true; + break; + } + } + + if($changed){ + $this->save_settings(); + } + + + } + + public static function icanlocalize_service_info($info = array()) { + global $sitepress; + $return = array(); + $return['name'] = 'ICanLocalize'; + $return['logo'] = ICL_PLUGIN_URL . '/res/img/web_logo_small.png'; + $return['setup_url'] = $sitepress->create_icl_popup_link('@select-translators;from_replace;to_replace@', array('ar' => 1), true); + $return['description'] = __('Looking for a quality translation service? ICanLocalize offers excellent
                  human service done by expert translators, starts at only $0.07 per word.', 'sitepress'); + $info['icanlocalize'] = $return; + return $info; + } + + public function clear_cache() { + global $wpdb; + delete_option($wpdb->prefix . 'icl_translators_cached'); + delete_option($wpdb->prefix . 'icl_non_translators_cached'); + } + + // shows post content for visual mode (iframe) in translation editor + function _show_post_content(){ + global $tinymce_version; + if($id = @intval($_GET['post_id'])){ + $post = get_post($id); + if($post){ + if(@intval($_GET['rtl'])){ + $rtl = ' dir="rtl"'; + }else{ + $rtl = ''; + } + echo ''; + echo ''; + $csss = array( + '/' . WPINC . '/js/tinymce/themes/advanced/skins/wp_theme/content.css?ver='.$tinymce_version, + '/' . WPINC . '/js/tinymce/plugins/spellchecker/css/content.css?ver='.$tinymce_version, + '/' . WPINC . '/js/tinymce/plugins/wordpress/css/content.css?ver='.$tinymce_version + ); + foreach($csss as $css){ + echo '' . "\n"; + } + echo ''; + echo ''; + switch($_GET['field_type']){ + default: + if(0 === strpos($_GET['field_type'], 'field-')){ + echo get_post_meta($id, preg_replace('#^field-#', '', $_GET['field_type']), true); + }else{ + remove_filter('the_content', 'do_shortcode', 11); + echo apply_filters('the_content', $post->post_content); + } + } + echo ''; + echo ''; + exit; + }else{ + wp_die(__('Post not found!', 'sitepress')); + } + exit; + }else{ + wp_die(__('Post not found!', 'sitepress')); + } + } + + function _user_search(){ + $q = $_POST['q']; + + $non_translators = $this->get_blog_not_translators(); + + $matched_users = array(); + foreach($non_translators as $t){ + if(false !== stripos($t->user_login, $q) || false !== stripos($t->display_name, $q)){ + $matched_users[] = $t; + } + if(count($matched_users) == 100) break; + } + + if(!empty($matched_users)){ + $cssheight = count($matched_users) > 10 ? '200' : 20*count($matched_users) + 5; + echo ''; + + }else{ + echo ' '; + _e('No matches', 'sitepress'); + echo ''; + } + + + exit; + + } + + function make_duplicates($data){ + foreach($data['iclpost'] as $master_post_id){ + foreach($data['duplicate_to'] as $lang => $one){ + $this->make_duplicate($master_post_id, $lang); + } + } + } + + function make_duplicate($master_post_id, $lang){ + global $sitepress, $wpdb; + + $master_post = get_post($master_post_id); + + $trid = $sitepress->get_element_trid($master_post_id, 'post_' . $master_post->post_type); + if($trid){ + $translations = $sitepress->get_element_translations($trid, 'post_' . $master_post->post_type); + + if(isset($translations[$lang])){ + $postarr['ID'] = $translations[$lang]->element_id; + } + + } + + $postarr['post_author'] = $master_post->post_author; + $postarr['post_date'] = $master_post->post_date; + $postarr['post_date_gmt'] = $master_post->post_date_gmt; + $postarr['post_content'] = $master_post->post_content; + $postarr['post_title'] = $master_post->post_title; + $postarr['post_excerpt'] = $master_post->post_excerpt; + $postarr['post_status'] = $master_post->post_status; + $postarr['comment_status'] = $master_post->comment_status; + $postarr['ping_status'] = $master_post->ping_status; + $postarr['post_name'] = $master_post->post_name; + + if($master_post->post_parent){ + $parent = icl_object_id($master_post->post_parent, $master_post->post_type, false, $lang); + $postarr['post_parent'] = $parent; + } + + $postarr['menu_order'] = $master_post->menu_order; + $postarr['post_type'] = $master_post->post_type; + $postarr['post_mime_type'] = $master_post->post_mime_type; + + + $trid = $sitepress->get_element_trid($master_post->ID, 'post_' . $master_post->post_type); + + $_POST['icl_trid'] = $trid; + $_POST['icl_post_language'] = $lang; + $_POST['skip_sitepress_actions'] = true; + + if(isset($postarr['ID'])){ + $id = wp_update_post($postarr); + }else{ + $id = wp_insert_post($postarr); + } + + + if(!is_wp_error($id)){ + + $sitepress->set_element_language_details($id, 'post_' . $master_post->post_type, $trid, $lang); + + $this->save_post_actions($id, get_post($id), $force_set_status = ICL_TM_DUPLICATE); + + // dup comments + if($sitepress->get_option('sync_comments_on_duplicates')){ + $this->duplicate_comments($id, $master_post->ID); + } + + // make sure post name is copied + $wpdb->update($wpdb->posts, array('post_name'=>$master_post->post_name), array('ID'=>$id)); + + update_post_meta($id, '_icl_lang_duplicate_of', $master_post->ID); + + // copy custom fields + $custom_fields = get_post_custom($master_post_id); + foreach($custom_fields as $key => $values){ + + // skip some + if(in_array($key, array('_wp_old_slug', '_edit_last', '_edit_lock', '_icl_translator_note'))) continue; + + delete_post_meta($id, $key); + foreach($values as $value){ + add_post_meta($id, $key, $value); + } + + } + + // sync taxonomies + $taxonomies = array_values(get_taxonomies()); + //exclude_some + $taxonomies = array_diff($taxonomies, array('nav_menu', 'link_category')); + + foreach($taxonomies as $taxonomy){ + $is_translated = $sitepress->is_translated_taxonomy($taxonomy); + $terms = wp_get_post_terms($master_post_id, $taxonomy); + if(!empty($terms)){ + $terms_array = array(); + foreach($terms as $t){ + if($is_translated){ + $tr_id = icl_object_id($t->term_id, $taxonomy, false, $lang); + if($tr_id){ + if(is_taxonomy_hierarchical($taxonomy)){ + $terms_array[] = $tr_id; + }else{ + $tr_term = get_term($tr_id, $taxonomy); + $terms_array[] = $tr_term->name; + } + } + }else{ + if(is_taxonomy_hierarchical($taxonomy)){ + $terms_array[] = $t->term_id; + }else{ + $terms_array[] = $t->term_name; + } + } + } + wp_set_post_terms($id, $terms_array, $taxonomy); + } + } + return $id; + }else{ + return false; + } + + } + + function make_duplicates_all($master_post_id){ + global $sitepress; + + $master_post = get_post($master_post_id); + $language_details_original = $sitepress->get_element_language_details($master_post_id, 'post_' . $master_post->post_type); + + $data['iclpost'] = array($master_post_id); + foreach($sitepress->get_active_languages() as $lang => $details){ + if($lang != $language_details_original->language_code){ + $data['duplicate_to'][$lang] = 1; + } + } + + $this->make_duplicates($data); + } + + function reset_duplicate_flag($post_id){ + global $sitepress; + + $post = get_post($post_id); + + $trid = $sitepress->get_element_trid($post_id, 'post_' . $post->post_type); + $translations = $sitepress->get_element_translations($trid, 'post_' . $post->post_type); + + foreach($translations as $tr){ + if($tr->element_id == $post_id){ + $this->update_translation_status(array( + 'translation_id' => $tr->translation_id, + 'status' => ICL_TM_COMPLETE + )); + } + } + + delete_post_meta($post_id, '_icl_lang_duplicate_of'); + + + } + + function set_duplicate($post_id){ + global $sitepress; + // find original (source) and copy + $post = get_post($post_id); + $trid = $sitepress->get_element_trid($post_id, 'post_' . $post->post_type); + $translations = $sitepress->get_element_translations($trid, 'post_' . $post->post_type); + + foreach($translations as $lang => $tr){ + if($tr->original){ + $master_post_id = $tr->element_id; + }elseif($tr->element_id == $post_id){ + $this_language = $lang; + } + } + + $this->make_duplicate($master_post_id, $this_language); + + } + + function get_duplicates($master_post_id){ + global $wpdb, $sitepress; + + $duplicates = array(); + + $res = $wpdb->get_col($wpdb->prepare("SELECT post_id FROM {$wpdb->postmeta} + WHERE meta_key='_icl_lang_duplicate_of' AND meta_value=%d", $master_post_id)); + + foreach($res as $post_id){ + + $post = get_post($post_id); + $language_details = $sitepress->get_element_language_details($post_id, 'post_' . $post->post_type); + + $duplicates[$language_details->language_code] = $post_id; + } + + return $duplicates; + + } + + function duplicate_comments($post_id, $master_post_id){ + global $wpdb, $sitepress; + + // delete existing comments + $current_comments = $wpdb->get_results($wpdb->prepare("SELECT comment_ID FROM {$wpdb->comments} WHERE comment_post_ID = %d", $post_id)); + foreach($current_comments as $id){ + wp_delete_comment($id); + } + + + $original_comments = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->comments} WHERE comment_post_id = %d", $master_post_id), ARRAY_A); + + $post_type = $wpdb->get_var($wpdb->prepare("SELECT post_type FROM {$wpdb->posts} WHERE ID=%d", $post_id)); + $language = $wpdb->get_var($wpdb->prepare("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE element_id=%d AND element_type=%s", $post_id, 'post_' . $post_type)); + + $wpdb->update($wpdb->posts, array('post_count'=>count($original_comments)), array('ID'=>$post_id)); + + foreach($original_comments as $comment){ + + $original_comment_id = $comment['comment_ID']; + unset($comment['comment_ID']); + + $comment['comment_post_ID'] = $post_id; + $wpdb->insert($wpdb->comments, $comment); + $comment_id = $wpdb->insert_id; + + update_comment_meta($comment_id, '_icl_duplicate_of', $original_comment_id); + + // comment meta + $meta = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM {$wpdb->commentmeta} WHERE comment_id=%d", $original_comment_id)); + foreach($meta as $key => $val){ + $wpdb->insert($wpdb->commentmeta, array( + 'comment_id' => $comment_id, + 'meta_key' => $key, + 'meta_value' => $val + )); + } + + $original_comment_tr = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}icl_translations WHERE element_id=%d AND element_type=%s", + $original_comment_id, 'comment')); + + $comment_translation = array( + 'element_type' => 'comment', + 'element_id' => $comment_id, + 'trid' => $original_comment_tr->trid, + 'language_code' => $language, + /*'source_language_code' => $original_comment_tr->language_code */ + ); + + + $comments_map[$original_comment_id] = array('trid' => $original_comment_tr->trid, 'comment' => $comment_id); + + $wpdb->insert($wpdb->prefix . 'icl_translations', $comment_translation); + + } + + // sync parents + foreach($original_comments as $comment){ + if($comment['comment_parent']){ + + $tr_comment_id = $comments_map[$comment['comment_ID']]['comment']; + $tr_parent = icl_object_id($comment['comment_parent'], 'comment', false, $language); + if($tr_parent){ + $wpdb->update($wpdb->comments, array('comment_parent' => $tr_parent), array('comment_ID' => $tr_comment_id)); + } + + } + } + + + } + + function duplication_delete_comment($comment_id){ + global $wpdb; + static $_avoid_8_loop; + + if(isset($_avoid_8_loop)) return; + $_avoid_8_loop = true; + + $original_comment = get_comment_meta($comment_id, '_icl_duplicate_of', true); + if($original_comment){ + $duplicates = $wpdb->get_col($wpdb->prepare("SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key='_icl_duplicate_of' AND meta_value=%d", $original_comment)); + $duplicates = array($original_comment) + array_diff($duplicates, array($comment_id)); + foreach($duplicates as $dup){ + wp_delete_comment($dup); + } + }else{ + $duplicates = $wpdb->get_col($wpdb->prepare("SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key='_icl_duplicate_of' AND meta_value=%d", $comment_id)); + if($duplicates){ + foreach($duplicates as $dup){ + wp_delete_comment($dup); + } + } + } + + unset($_avoid_8_loop); + } + + function duplication_edit_comment($comment_id){ + global $wpdb; + + $comment = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->comments} WHERE comment_ID=%d", $comment_id), ARRAY_A); + unset($comment['comment_ID'], $comment['comment_post_ID']); + + $comment_meta = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM {$wpdb->commentmeta} WHERE comment_id=%d AND meta_key <> '_icl_duplicate_of'", $comment_id)); + + $original_comment = get_comment_meta($comment_id, '_icl_duplicate_of', true); + if($original_comment){ + $duplicates = $wpdb->get_col($wpdb->prepare("SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key='_icl_duplicate_of' AND meta_value=%d", $original_comment)); + $duplicates = array($original_comment) + array_diff($duplicates, array($comment_id)); + }else{ + $duplicates = $wpdb->get_col($wpdb->prepare("SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key='_icl_duplicate_of' AND meta_value=%d", $comment_id)); + } + + if(!empty($duplicates)){ + foreach($duplicates as $dup){ + + $wpdb->update($wpdb->comments, $comment, array('comment_ID' => $dup)); + + $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->commentmeta} WHERE comment_id=%d AND meta_key <> '_icl_duplicate_of'", $dup)); + + if($comment_meta){ + foreach($comment_meta as $key => $value){ + update_comment_meta($dup, $meta_key, $meta_value); + } + } + + } + } + + + } + + function duplication_status_comment($comment_id, $comment_status){ + global $wpdb; + + static $_avoid_8_loop; + + if(isset($_avoid_8_loop)) return; + $_avoid_8_loop = true; + + + $original_comment = get_comment_meta($comment_id, '_icl_duplicate_of', true); + if($original_comment){ + $duplicates = $wpdb->get_col($wpdb->prepare("SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key='_icl_duplicate_of' AND meta_value=%d", $original_comment)); + $duplicates = array($original_comment) + array_diff($duplicates, array($comment_id)); + }else{ + $duplicates = $wpdb->get_col($wpdb->prepare("SELECT comment_id FROM {$wpdb->commentmeta} WHERE meta_key='_icl_duplicate_of' AND meta_value=%d", $comment_id)); + } + + if(!empty($duplicates)){ + foreach($duplicates as $dup){ + wp_set_comment_status($t->element_id, $status); + } + } + + unset($_avoid_8_loop); + + + } + + function duplication_insert_comment($comment_id){ + global $wpdb, $sitepress; + + $comment = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->comments} WHERE comment_ID=%d", $comment_id), ARRAY_A); + + // loop duplicate posts, add new comment + $post_id = $comment['comment_post_ID']; + + // if this is a duplicate post + $duplicate_of = get_post_meta($post_id, '_icl_lang_duplicate_of', true); + if($duplicate_of){ + $post_duplicates = $this->get_duplicates($duplicate_of); + $_lang = $wpdb->get_var($wpdb->prepare("SELECT language_code FROM {$wpdb->prefix}icl_translations WHERE element_type='comment' AND element_id=%d", $comment_id)); + unset($post_duplicates[$_lang]); + $_post = get_post($duplicate_of); + $_orig_lang = $sitepress->get_language_for_element($duplicate_of, 'post_' . $_post->post_type); + $post_duplicates[$_orig_lang] = $duplicate_of; + }else{ + $post_duplicates = $this->get_duplicates($post_id); + } + + unset($comment['comment_ID'], $comment['comment_post_ID']); + + foreach($post_duplicates as $lang => $dup_id){ + $comment['comment_post_ID'] = $dup_id; + + if($comment['comment_parent']){ + $comment['comment_parent'] = icl_object_id($comment['comment_parent'], 'comment', false, $lang); + } + + + $wpdb->insert($wpdb->comments, $comment); + + $dup_comment_id = $wpdb->insert_id; + + update_comment_meta($dup_comment_id, '_icl_duplicate_of', $comment_id); + + // comment meta + $meta = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM {$wpdb->commentmeta} WHERE comment_id=%d", $comment_id)); + foreach($meta as $key => $val){ + $wpdb->insert($wpdb->commentmeta, array( + 'comment_id' => $dup_comment_id, + 'meta_key' => $key, + 'meta_value' => $val + )); + } + + $original_comment_tr = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}icl_translations WHERE element_id=%d AND element_type=%s", + $comment_id, 'comment')); + + $comment_translation = array( + 'element_type' => 'comment', + 'element_id' => $dup_comment_id, + 'trid' => $original_comment_tr->trid, + 'language_code' => $lang, + /*'source_language_code' => $original_comment_tr->language_code */ + ); + + $wpdb->insert($wpdb->prefix . 'icl_translations', $comment_translation); + + } + + + } + + // set slug according to user preference + static function set_page_url($post_id){ + + global $sitepress, $sitepress_settings, $wpdb; + + if($sitepress_settings['translated_document_page_url'] == 'copy-encoded'){ + + $post = $wpdb->get_row($wpdb->prepare("SELECT post_type FROM {$wpdb->posts} WHERE ID=%d", $post_id)); + $translation_row = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}icl_translations WHERE element_id=%d AND element_type=%s", $post_id, 'post_' . $post->post_type)); + + $encode_url = $wpdb->get_var($wpdb->prepare("SELECT encode_url FROM {$wpdb->prefix}icl_languages WHERE code=%s", $translation_row->language_code)); + if($encode_url){ + + $trid = $sitepress->get_element_trid($post_id, 'post_' . $post->post_type); + $original_post_id = $wpdb->get_var($wpdb->prepare("SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE trid=%d AND source_language_code IS NULL", $trid)); + $post_name_original = $wpdb->get_var($wpdb->prepare("SELECT post_name FROM {$wpdb->posts} WHERE ID = %d", $original_post_id)); + + $post_name_to_be = $post_name_original; + $taken = true; + $incr = 1; + do{ + $taken = $wpdb->get_var($wpdb->prepare(" + SELECT ID FROM {$wpdb->posts} p + JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id + WHERE ID <> %d AND t.element_type = %s AND t.language_code = %s AND p.post_name = %s + ", $post_id, 'post_' . $post->post_type, $translation_row->language_code, $post_name_to_be )); + if($taken){ + $incr++; + $post_name_to_be = $post_name_original . '-' . $incr; + }else{ + $taken = false; + } + }while($taken == true); + $wpdb->update($wpdb->posts, array('post_name' => $post_name_to_be), array('ID' => $post_id)); + + } + + } + + } + + +} + +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/2.0.0/stepper.js b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/2.0.0/stepper.js new file mode 100644 index 0000000..e3f56bb --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/2.0.0/stepper.js @@ -0,0 +1,44 @@ + +jQuery(document).ready(function(){ + // iclStepper(jQuery('#icl-migrate-start').attr('href'), true); + jQuery('#icl-migrate-start').one('click', function(){ + iclStepper(jQuery(this).attr('href'), '&init=1', true); + return false; + }); +}); + +function iclStepper(href, addUrl, init) { + init = typeof(init) != 'undefined' ? true : false; + jQuery.ajax({ + type: "POST", + url: href+addUrl, + cache: false, + dataType: 'json', + success: function(data) { + if (data.stop == true) { + jQuery('#icl-migrate-progress .message').html('stopped'); + } else if (data.error == false) { + if (init == true) { + jQuery('#icl-migrate-start').fadeOut(function(){ + jQuery('#icl-migrate-progress').fadeIn().html(data.output).children('.message').html(data.message); + iclStepper(href, '&step='+data.step); + }); + // jQuery('#icl-migrate-progress').html(data.output).children('.message').html(data.message); + } else { + jQuery('#icl-migrate-progress .message').html(data.message); + jQuery('#icl-migrate-progress .progress').animate({ + width : data.barWidth+'%' + }, 100); + if (data.completed == true) { + jQuery('#icl-migrate').delay(3000).fadeOut(); + } else { + iclStepper(href, '&step='+data.step); + } + } + } else { + alert('error'); + jQuery('#icl-migrate-progress .message').html(data.error); + } + } + }); +} \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/2.0.0/stepper.php b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/2.0.0/stepper.php new file mode 100644 index 0000000..6416d5d --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/2.0.0/stepper.php @@ -0,0 +1,105 @@ + + */ + protected $_nextStep = NULL; + + /** + * Provide current step here + * @param int $step + */ + function __construct($step = 0) { + if (empty($step)) { + $step = 0; + } + $this->_step = intval($step); + } + + /** + * Register steps (function names) + */ + public function registerSteps() { + $args = func_get_args(); + $this->_steps = array_merge($this->_steps, $args); + } + + /** + * Returns current step + * @return int + */ + public function getStep() { + return $this->_step; + } + + /** + * Returns next step + * @return int + */ + public function getNextStep() { + return !is_null($this->_nextStep)? $this->_nextStep : $this->_step += 1; + } + + /** + * Sets current step + * @param int $num + */ + public function setStep($num) { + $this->_step = intval($num); + } + + /** + * Forcing next step + * @param int $num + */ + public function setNextStep($num) { + $this->_nextStep = intval($num); + } + + /** + * Calculates bar width + * @return int Should be used as percentage width (%) + */ + public function barWidth() { + return round(($this->_step*100)/count($this->_steps)); + } + + /** + * Calls current step's function + * @return mixed + */ + public function init() { + if ($this->_step !== 0 && isset($this->_steps[$this->_step]) + && is_callable($this->_steps[$this->_step])) { + return call_user_func_array($this->_steps[$this->_step], array($this->_step, $this)); + } + } + + /** + * Returns initial HTML formatted screen + * @param string $message Message to be displayed + * @return string + */ + public function render($message = '') { + $output = '
                  +
                  +
                  +
                  ' . $message . '
                  '; + return $output; + } + +} \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.0.0.php b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.0.0.php new file mode 100644 index 0000000..a8ffb79 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.0.0.php @@ -0,0 +1,266 @@ + 0, 'offset' => 0)); + + switch($step) { + + case 1: + // if the tables are missing, call the plugin activation routine + $table_name = $wpdb->prefix.'icl_translation_status'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name){ + icl_sitepress_activate(); + } + + $wpdb->query("ALTER TABLE `{$wpdb->prefix}icl_translations` CHANGE `element_type` `element_type` VARCHAR( 32 ) NOT NULL DEFAULT 'post_post'"); + $wpdb->query("ALTER TABLE `{$wpdb->prefix}icl_translations` CHANGE `element_id` `element_id` BIGINT( 20 ) NULL DEFAULT NULL "); + + + // fix source_language_code + // all source documents must have null + $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}icl_translations SET source_language_code = NULL + WHERE element_type IN('".join("','", $types)."') AND source_language_code = '' AND language_code='%s'", $sitepress->get_default_language())); + // get translated documents with missing source language + $res = $wpdb->get_results($wpdb->prepare(" + SELECT translation_id, trid, language_code + FROM {$wpdb->prefix}icl_translations + WHERE (source_language_code = '' OR source_language_code IS NULL) + AND element_type IN('".join("','", $types)."') + AND language_code <> %s + ", $sitepress->get_default_language() + )); + foreach($res as $row){ + $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}icl_translations SET source_language_code = '%s' WHERE translation_id=%d", $sitepress->get_default_language(), $row->translation_id)); + } + + + + $temp_upgrade_data['step'] = 2; + update_option('icl_temp_upgrade_data', $temp_upgrade_data); + + return array('message' => __('Processing translations...', 'sitepress')); + break; + + case 2: + + $limit = 100; + $offset = $temp_upgrade_data['offset']; + $processing = FALSE; + + + //loop existing translations + $res = mysql_query("SELECT * FROM {$wpdb->prefix}icl_translations WHERE element_type IN('".join("','", $types)."') AND source_language_code IS NULL LIMIT " . $limit . " OFFSET " . $offset); + while($row = mysql_fetch_object($res)){ + $processing = TRUE; + // grab translations + $translations = $sitepress->get_element_translations($row->trid, $row->element_type); + + $md5 = 0; + $table_name = $wpdb->prefix.'icl_node'; + if($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") == $table_name){ + list($md5, $links_fixed) = $wpdb->get_row($wpdb->prepare(" + SELECT md5, links_fixed FROM {$wpdb->prefix}icl_node + WHERE nid = %d + ", $row->element_id), ARRAY_N); + } + if(!$md5){ + $md5 = $TranslationManagement->post_md5($row->element_id); + } + + $translation_package = $TranslationManagement->create_translation_package($row->element_id); + + + foreach($translations as $lang => $t){ + if(!$t->original){ + + // determine service and status + $service = 'local'; + $status = 10; + $needs_update = 0; + + list($rid, $status, $current_md5) = $wpdb->get_row($wpdb->prepare(" + SELECT c.rid, n.status , c.md5 + FROM {$wpdb->prefix}icl_content_status c + JOIN {$wpdb->prefix}icl_core_status n ON c.rid = n.rid + WHERE c.nid = %d AND target = %s + ORDER BY rid DESC + LIMIT 1 + ", $row->element_id, $lang), ARRAY_N); + if($rid){ + if($current_md5 != $md5){ + $needs_update = 1; + } + if($status == 3){ + $status = 10; + }else{ + $status = 2; + } + $service = 'icanlocalize'; + + foreach($sitepress_settings['icl_lang_status'] as $lpair){ + if($lpair['from'] == $row->language_code && $lpair['to'] == $lang && isset($lpair['translators'][0]['id'])){ + $translator_id = $lpair['translators'][0]['id']; + break; + } + } + + }else{ + $status = 10; + $translator_id = $wpdb->get_var($wpdb->prepare("SELECT post_author FROM {$wpdb->posts} WHERE ID=%d", $t->element_id)); + $tlp = get_user_meta($translator_id, $wpdb->prefix.'language_pairs', true); + $tlp[$row->language_code][$lang] = 1; + $TranslationManagement->edit_translator($translator_id, $tlp); + } + + + // add translation_status record + list($newrid, $update) = $TranslationManagement->update_translation_status(array( + 'translation_id' => $t->translation_id, + 'status' => $status, + 'translator_id' => $translator_id, + 'needs_update' => $needs_update, + 'md5' => $md5, + 'translation_service' => $service, + 'translation_package' => serialize($translation_package), + 'links_fixed' => intval($links_fixed) + )); + + $job_id = $TranslationManagement->add_translation_job($newrid, $translator_id , $translation_package); + if($status == 10){ + $post = get_post($t->element_id); + $TranslationManagement->save_job_fields_from_post($job_id, $post); + } + } + } + } + if ($processing) { + update_option('icl_temp_upgrade_data', array('step' => 2, 'offset' => intval($offset+100))); + $stepper->setNextStep(2); + } else { + update_option('icl_temp_upgrade_data', array('step' => 3, 'offset' => 99999999999999999999)); + } + $message = $processing ? __('Processing translations...', 'sitepress') : __('Finalizing upgrade...', 'sitepress'); + return array('message' => $message); + break; + + + case 3: + // removing the plugins text table; importing data into a Sitepress setting + $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}icl_plugins_texts"); + if(!empty($results)){ + foreach($results as $row){ + $cft[$row->attribute_name] = $row->translate + 1; + } + $iclsettings['translation-management']['custom_fields_translation'] = $cft; + $sitepress->save_settings($iclsettings); + + mysql_query("DROP TABLE {$wpdb->prefix}icl_plugins_texts"); + } + + $iclsettings['language_selector_initialized'] = 1; + + if(get_option('_force_mp_post_http')){ + $iclsettings['troubleshooting_options']['http_communication'] = intval(get_option('_force_mp_post_http')); + delete_option('_force_mp_post_http'); + } + + // set default translators + if (isset($sitepress_settings['icl_lang_status'])) { + foreach($sitepress_settings['icl_lang_status'] as $lpair){ + if(!empty($lpair['translators'])){ + $iclsettings['default_translators'][$lpair['from']][$lpair['to']] = array('id'=>$lpair['translators'][0]['id'], 'type'=>'icanlocalize'); + } + } + } + $sitepress->save_settings($iclsettings); + + $iclsettings['migrated_2_0_0'] = 1; + $sitepress->save_settings($iclsettings); + delete_option('icl_temp_upgrade_data'); + return array('message' => __('Done', 'sitepress'), 'completed' => 1); + break; + + default: + return array('error' => __('Missing step', 'sitepress'), 'stop' => 1); + } +} + +// $iclsettings defined in upgrade.php +if(empty($iclsettings['migrated_2_0_0'])){ + wp_enqueue_script('icl-stepper', ICL_PLUGIN_URL . '/inc/upgrade-functions/2.0.0/stepper.js', array('jquery')); + add_filter('admin_notices', 'icl_migrate_2_0_0'); + add_action('icl_ajx_custom_call', 'icl_ajx_upgrade_2_0_0', 1, 2); +} + + +function icl_migrate_2_0_0() { + $txt = get_option('icl_temp_upgrade_data', FALSE) ? __('Resume Upgrade Process', 'sitepress') : __('Run Upgrade Process', 'sitepress'); + echo '

                  '.__('WPML requires database upgrade', 'sitepress').'

                  ' + .'

                  ' . __('This normally takes a few seconds, but may last up to several minutes of very large databases.', 'sitepress') . '

                  ' + . '

                  ' . $txt . '

                  ' + . '
                  '; +} + +function icl_ajx_upgrade_2_0_0($call, $request){ + if($call == 'wpml_upgrade_2_0_0'){ + $error = 0; + $completed = 0; + $stop = 0; + $message = __('Starting the upgrade process...', 'sitepress'); + include_once ICL_PLUGIN_PATH . '/inc/upgrade-functions/2.0.0/stepper.php'; + include_once ICL_PLUGIN_PATH . '/inc/upgrade-functions/upgrade-2.0.0.php'; + $temp_upgrade_data = get_option('icl_temp_upgrade_data', + array('step' => 0, 'offset' => 0)); + $step = isset($request['step']) ? $request['step'] : $temp_upgrade_data['step']; + $migration = new Icl_Stepper($step); + $migration->registerSteps( + 'icl_upgrade_2_0_0_steps', + 'icl_upgrade_2_0_0_steps', + 'icl_upgrade_2_0_0_steps'); + if (isset($request['init'])) { + echo json_encode(array( + 'error' => $error, + 'output' => $migration->render(), + 'step' => $migration->getNextStep(), + 'message' => __('Creating new tables...', 'sitepress'), + 'stop' => $stop, + )); + exit; + } + $data = $migration->init(); + @extract($data, EXTR_OVERWRITE); + echo json_encode(array( + 'error' => $error, + 'completed' => $completed, + 'message' => $message, + 'step' => $migration->getNextStep(), + 'barWidth' => $migration->barWidth(), + 'stop' => $stop, + )); + } +} + +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.0.5.php b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.0.5.php new file mode 100644 index 0000000..2674c8b --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.0.5.php @@ -0,0 +1,9 @@ +update($wpdb->prefix . 'icl_languages', array('default_locale'=>'it_IT'), array('code'=>'it')); + + diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.2.2.php b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.2.2.php new file mode 100644 index 0000000..3b3df61 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.2.2.php @@ -0,0 +1,13 @@ +prefix . 'icl_translators_cached'); +delete_option($wpdb->prefix . 'icl_non_translators_cached'); + + + + + diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.3.0.php b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.3.0.php new file mode 100644 index 0000000..0fe7af7 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.3.0.php @@ -0,0 +1,32 @@ + $icl_rc_widget, + '_multiwidget' => 1 + ); + + } + update_option('widget_recent-comments', $rc_widgets); + delete_option('widget_recent_comments'); + +} +$wpdb->query("ALTER TABLE {$wpdb->prefix}icl_string_translations MODIFY COLUMN value TEXT NULL DEFAULT NULL"); + +$wpdb->query("ALTER TABLE {$wpdb->prefix}icl_string_translations ADD translator_id bigint(20) NULL DEFAULT NULL, ADD translation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"); + +// Disable the auto registration of strings if we are upgrading to 2.3.0 +$iclsettings = get_option('icl_sitepress_settings'); +$iclsettings['st']['icl_st_auto_reg'] = 'disable'; +update_option('icl_sitepress_settings', $iclsettings); + +// The icl_translators_cached format has change at some point. +// Let's clear the cache so it gets rebuilt. +delete_option($wpdb->prefix . 'icl_translators_cached'); +delete_option($wpdb->prefix . 'icl_non_translators_cached'); + diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.3.1.php b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.3.1.php new file mode 100644 index 0000000..8874dc3 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.3.1.php @@ -0,0 +1,20 @@ +prefix}icl_locale_map CHANGE locale VARCHAR(32) NOT NULL"; +$wpdb->query($sql); + + +$wpdb->query("DELETE m FROM {$wpdb->postmeta} m JOIN {$wpdb->posts} p ON p.ID = m.post_id WHERE m.meta_key='_alp_processed' AND p.post_type='nav_menu_item'"); + +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.3.3.php b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.3.3.php new file mode 100644 index 0000000..e957699 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.3.3.php @@ -0,0 +1,2 @@ +roles); + update_option('icl_sitepress_settings', $iclsettings); + +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.5.0.php b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.5.0.php new file mode 100644 index 0000000..3bfe023 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/upgrade-2.5.0.php @@ -0,0 +1,13 @@ +prefix}icl_languages ADD COLUMN encode_url TINYINT(1) NOT NULL DEFAULT 0"; + $wpdb->query($sql); + + $encurls = array('ru', 'uk', 'zh-hans', 'zh-hant', 'ja', 'ko', 'vi', 'th', 'he', 'ar', 'el', 'fa'); + $sql = "UPDATE {$wpdb->prefix}icl_languages SET encode_url = 1 WHERE code IN ('" . join("','", $encurls) . "')"; + $wpdb->query($sql); \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade.php b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade.php new file mode 100644 index 0000000..1c0999e --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade.php @@ -0,0 +1,140 @@ +update($wpdb->prefix.'icl_flags', array('flag'=>'ku.png'), array('lang_code'=>'ku')); + $wpdb->update($wpdb->prefix.'icl_languages_translations', array('name'=>'Magyar'), array('language_code'=>'hu', 'display_language_code'=>'hu')); + $wpdb->update($wpdb->prefix.'icl_languages_translations', array('name'=>'Hrvatski'), array('language_code'=>'hr', 'display_language_code'=>'hr')); + $wpdb->update($wpdb->prefix.'icl_languages_translations', array('name'=>'ÙØ§Ø±Ø³ÛŒ'), array('language_code'=>'fa', 'display_language_code'=>'fa')); + } + + if(get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.7.3', '<')){ + $wpdb->update($wpdb->prefix.'icl_languages_translations', array('name'=>'پارسی'), array('language_code'=>'fa', 'display_language_code'=>'fa')); + } + + if(get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.7.7', '<')){ + if(!isset($iclsettings['promote_wpml'])){ + $iclsettings['promote_wpml'] = 0; + update_option('icl_sitepress_settings',$iclsettings); + } + if(!isset($iclsettings['auto_adjust_ids'])){ + $iclsettings['auto_adjust_ids'] = 0; + update_option('icl_sitepress_settings',$iclsettings); + } + + mysql_query("UPDATE {$wpdb->prefix}icl_translations SET element_type='tax_post_tag' WHERE element_type='tag'"); + mysql_query("UPDATE {$wpdb->prefix}icl_translations SET element_type='tax_category' WHERE element_type='category'"); + } + + if(get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '1.7.8', '<')){ + $res = $wpdb->get_results("SELECT ID, post_type FROM {$wpdb->posts}"); + foreach($res as $row){ + $post_types[$row->post_type][] = $row->ID; + } + foreach($post_types as $type=>$ids){ + if(!empty($ids)){ + mysql_query("UPDATE {$wpdb->prefix}icl_translations SET element_type='post_{$type}' WHERE element_type='post' AND element_id IN(".join(',',$ids).")"); + } + } + + // fix categories & tags in icl_translations + $res = mysql_query("SELECT term_taxonomy_id, taxonomy FROM {$wpdb->term_taxonomy}"); + while($row = mysql_fetch_object($res)) { + $icltr = $wpdb->get_row("SELECT translation_id, element_type FROM {$wpdb->prefix}icl_translations WHERE element_id='{$row->term_taxonomy_id}' AND element_type LIKE 'tax\\_%'"); + if('tax_' . $row->taxonomy != $icltr->element_type){ + $wpdb->update($wpdb->prefix . 'icl_translations', array('element_type'=>'tax_'.$row->taxonomy), array('translation_id'=>$icltr->translation_id)); + } + } + } + + if(get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '2.0.0', '<')){ + include_once ICL_PLUGIN_PATH . '/inc/upgrade-functions/upgrade-2.0.0.php'; + + if(empty($iclsettings['migrated_2_0_0'])){ + define('ICL_MULTI_STEP_UPGRADE', true); + return; // GET OUT AND DO NOT SET THE NEW VERSION + } + } + + if(get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), '2.0.4', '<')){ + $sql = "ALTER TABLE {$wpdb->prefix}icl_translation_status ADD COLUMN `_prevstate` longtext"; + mysql_query($sql); + } + + icl_upgrade_version('2.0.5'); + + icl_upgrade_version('2.2.2'); + + icl_upgrade_version('2.3.0'); + + icl_upgrade_version('2.3.1'); + + icl_upgrade_version('2.3.3'); + + icl_upgrade_version('2.4.0'); + + icl_upgrade_version('2.5.0'); + + + if(version_compare(get_option('icl_sitepress_version'), ICL_SITEPRESS_VERSION, '<')){ + update_option('icl_sitepress_version', ICL_SITEPRESS_VERSION); + } + +} + +function icl_upgrade_version($version){ + global $wpdb, $sitepress_settings, $sitepress, $iclsettings; + + if(get_option('icl_sitepress_version') && version_compare(get_option('icl_sitepress_version'), $version, '<')){ + $upg_file = ICL_PLUGIN_PATH . '/inc/upgrade-functions/upgrade-' . $version . '.php'; + if(file_exists($upg_file) && is_readable($upg_file)){ + if(!defined('WPML_DOING_UPGRADE')){ + define('WPML_DOING_UPGRADE', true); + } + include_once $upg_file; + } + } +} + +function icl_plugin_too_old(){ + ?> +
                  +

                  WPML notice: Upgrades to this version are only supported from versions %s and above. To upgrade from version %s, first, download 2.0.4, do the DB upgrade and then go to this version.", 'sitepress'), + '1.7.0', get_option('icl_sitepress_version'), ' href="http://downloads.wordpress.org/plugin/sitepress-multilingual-cms.2.0.4.zip"'); ?>

                  +
                  + diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade_plugins.php b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade_plugins.php new file mode 100644 index 0000000..0305f3d --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade_plugins.php @@ -0,0 +1,99 @@ + $plugin) { + if (!in_array($plugin['Name'], $wpml_plugins)) { + unset($plugins[$key]); + } + } + + $request = wp_remote_post(WPML_UPDATE_URL, array( + 'timeout' => 15, + 'body' => array( + 'action' => 'update_information', + 'subscription_email' => isset($sitepress_settings['subscription_email'])?$sitepress_settings['subscription_email']:false, + 'subscription_key' => isset($sitepress_settings['subscription_key'])?$sitepress_settings['subscription_key']:false, + 'plugins' => $plugins, + 'lc' => get_option('WPLANG'), + ))); + // TODO we're not returning anything as WP_Error yet + if ( is_wp_error($request) ) { + $res = false; + } else { + $res = maybe_unserialize($request['body']); + } + + if ($res !== false) { + // check for WPML plugins + foreach ($plugins as $key => $plugin) { + if(!empty($res[$key])){ + $value->response[$key] = $res[$key]; + } else { + if (isset($value->response[$key])) { + unset($value->response[$key]); + } + } + } + } + } + + return $value; + } + + function get_WPML_plugin_page($state, $action, $args) { + global $wpdb, $sitepress_settings, $sitepress; + + global $wpml_plugins; + + $res = false; + + if (isset($args->slug) && $args->slug == "WPML_all" || @in_array(str_replace('_', ' ', $args->slug), $wpml_plugins)) { + + if (!isset($args->installed)) { + $args->installed = ""; + } + $body_array = array('action' => $action, + 'request' => serialize($args), + 'slug' => $args->slug, + 'installed' => $args->installed, + 'subscription_email' => isset($sitepress_settings['subscription_email'])?$sitepress_settings['subscription_email']:false, + 'subscription_key' => isset($sitepress_settings['subscription_key'])?$sitepress_settings['subscription_key']:false, + 'lc' => get_option('WPLANG'), + ); + + $request = wp_remote_post(WPML_UPDATE_URL, array( 'timeout' => 15, 'body' => $body_array) ); + if ( is_wp_error($request) ) { + $res = new WP_Error('plugins_api_failed', __('An Unexpected HTTP Error occurred during the API request.', 'sitepress'), $request->get_error_message() ); + } else { + $res = maybe_unserialize($request['body']); + if ( false === $res ) + $res = new WP_Error('plugins_api_failed', __('An unknown error occurred.', 'sitepress'), $request['body']); + } + } + + return $res; + } +?> \ No newline at end of file diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/wp-login-filters.php b/wp-content/plugins/sitepress-multilingual-cms/inc/wp-login-filters.php new file mode 100644 index 0000000..d912164 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/wp-login-filters.php @@ -0,0 +1,22 @@ +get_current_language() != $sitepress->get_default_language()){ + $this_domain = $sitepress_settings['language_domains'][$sitepress->get_current_language()] . '/'; + $default_domain = $sitepress->language_url($sitepress->get_default_language()); + $redirect_to = str_replace($default_domain, $this_domain, $redirect_to); + } + + return $redirect_to; + } + +} +?> diff --git a/wp-content/plugins/sitepress-multilingual-cms/inc/wp-nav-menus/iclNavMenu.class.php b/wp-content/plugins/sitepress-multilingual-cms/inc/wp-nav-menus/iclNavMenu.class.php new file mode 100644 index 0000000..e4b82a8 --- /dev/null +++ b/wp-content/plugins/sitepress-multilingual-cms/inc/wp-nav-menus/iclNavMenu.class.php @@ -0,0 +1,683 @@ +_set_menus_language(); + } + + $this->get_current_menu(); + + + if(isset( $_POST['action']) && $_POST['action'] == 'menu-get-metabox'){ + $parts = parse_url($_SERVER['HTTP_REFERER']); + @parse_str($parts['query'], $query); + if(isset($query['lang'])){ + $sitepress->switch_lang($query['lang']); + } + } + + if(!empty($this->current_menu['language'])){ + $this->current_lang = $this->current_menu['language']; + //if($this->current_lang != $sitepress->get_default_language() && !isset($_GET['lang'])){ + // wp_redirect(admin_url('nav-menus.php').'?lang='.$this->current_lang); + //} + }elseif(isset($_REQUEST['lang'])){ + $this->current_lang = $_REQUEST['lang']; + }elseif($lang = $sitepress->get_language_cookie()){ + $this->current_lang = $lang; + }else{ + $this->current_lang = $sitepress->get_default_language(); + } + + if(isset($_POST['icl_wp_nav_menu_ajax'])){ + $this->ajax($_POST); + } + + // for theme locations that are not translated into the curent language + // reflect status in the theme location navigation switcher + add_action('admin_footer', array($this, '_set_custom_status_in_theme_location_switcher')); + + // filter menu by language when adjust ids is off + // not on ajax calls + if(!$sitepress_settings['auto_adjust_ids'] && !defined('DOING_AJAX')){ + add_filter('get_term', array($sitepress, 'get_term_adjust_id')); + } + + + // Setup Menus Sync + add_action('admin_menu', array($this, 'admin_menu_setup')); + if(isset($_GET['page']) && $_GET['page'] == ICL_PLUGIN_FOLDER . '/menu/menus-sync.php'){ + global $icl_menus_sync; + include_once ICL_PLUGIN_PATH . '/inc/wp-nav-menus/menus-sync.php'; + $icl_menus_sync = new ICLMenusSync; + } + + + + } + + + // Menus sync submenu + function admin_menu_setup(){ + $top_page = apply_filters('icl_menu_main_page', ICL_PLUGIN_FOLDER.'/menu/languages.php'); + add_submenu_page( $top_page, + __( 'WP Menus Sync', 'sitepress' ), __( 'WP Menus Sync', 'sitepress' ), + 'manage_options', ICL_PLUGIN_FOLDER . '/menu/menus-sync.php' ); + } + + + /** + * associates menus without language information with default language + * + */ + function _set_menus_language(){ + global $wpdb, $sitepress; + $translated_menus = $wpdb->get_col(" + SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE element_type='tax_nav_menu' + "); + $translated_menus[] = 0; //dummy + $untranslated_menus = $wpdb->get_col(" + SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy='nav_menu' AND term_taxonomy_id NOT IN(".join(",",$translated_menus).") + "); + if(!empty($untranslated_menus)){ + foreach($untranslated_menus as $item){ + $sitepress->set_element_language_details($item, 'tax_nav_menu', null, $sitepress->get_default_language()); + } + } + + $translated_menu_items = $wpdb->get_col(" + SELECT element_id FROM {$wpdb->prefix}icl_translations WHERE element_type='post_nav_menu_item' AND element_id IS NOT NULL + "); + $translated_menu_items[] = 0; //dummy + $untranslated_menu_items = $wpdb->get_col(" + SELECT ID FROM {$wpdb->posts} WHERE post_type='nav_menu_item' AND ID NOT IN(".join(",", $translated_menu_items).") + "); + if(!empty($untranslated_menu_items)){ + foreach($untranslated_menu_items as $item){ + $sitepress->set_element_language_details($item, 'post_nav_menu_item', null, $sitepress->get_default_language()); + } + } + } + + function ajax($data){ + if($data['icl_wp_nav_menu_ajax'] == 'translation_of'){ + $trid = isset($data['trid']) ? $data['trid'] : false; + $this->_render_translation_of($data['lang'], $trid); + } + exit; + } + + function _get_menu_language($menu_id){ + global $sitepress, $wpdb; + $menu_tt_id = $wpdb->get_var($wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id=%d AND taxonomy='nav_menu'",$menu_id)); + $lang = $sitepress->get_element_language_details($menu_tt_id, 'tax_nav_menu'); + return $lang; + } + + /** + * gets first menu in a specific language + * used to override nav_menu_recently_edited when a different language is selected + * @param $lang + * @return int + */ + function _get_first_menu($lang){ + global $wpdb; + $menu_tt_id = $wpdb->get_var("SELECT MIN(element_id) FROM {$wpdb->prefix}icl_translations WHERE element_type='tax_nav_menu' AND language_code='".$wpdb->escape($lang)."'"); + $menu_id = $wpdb->get_var($wpdb->prepare("SELECT term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id=%d",$menu_tt_id)); + return (int) $menu_id; + } + + function get_current_menu(){ + global $sitepress; + $nav_menu_recently_edited = get_user_option( 'nav_menu_recently_edited' ); + $nav_menu_recently_edited_lang = $this->_get_menu_language($nav_menu_recently_edited); + if( !isset( $_REQUEST['menu'] ) && + isset($nav_menu_recently_edited_lang->language_code) && + $nav_menu_recently_edited_lang->language_code != $sitepress->get_current_language()){ + // if no menu is specified and the language is set override nav_menu_recently_edited + $nav_menu_selected_id = $this->_get_first_menu($sitepress->get_current_language()); + if($nav_menu_selected_id){ + update_user_option(get_current_user_id(), 'nav_menu_recently_edited', $nav_menu_selected_id); + }else{ + $_REQUEST['menu'] = 0; + } + + }elseif( !isset( $_REQUEST['menu'] ) && !isset($_GET['lang']) + && (empty($nav_menu_recently_edited_lang->language_code) || $nav_menu_recently_edited_lang->language_code != $sitepress->get_admin_language_cookie()) + && (empty($_POST['action']) || $_POST['action']!='update')){ + // if no menu is specified, no language is set, override nav_menu_recently_edited if its language is different than default + $nav_menu_selected_id = $this->_get_first_menu($sitepress->get_admin_language_cookie()); + update_user_option(get_current_user_id(), 'nav_menu_recently_edited', $nav_menu_selected_id); + }elseif(isset( $_REQUEST['menu'] )){ + $nav_menu_selected_id = $_REQUEST['menu']; + }else{ + $nav_menu_selected_id = $nav_menu_recently_edited; + } + + $this->current_menu['id'] = $nav_menu_selected_id; + if($this->current_menu['id']){ + $this->_load_menu($this->current_menu['id']); + }else{ + $this->current_menu['trid'] = isset($_GET['trid']) ? intval($_GET['trid']) : null; + if(isset($_POST['icl_nav_menu_language'])){ + $this->current_menu['language'] = $_POST['icl_nav_menu_language']; + }elseif(isset($_GET['lang'])){ + $this->current_menu['language'] = $_GET['lang']; + }else{ + $this->current_menu['language'] = $sitepress->get_admin_language_cookie(); + } + $this->current_menu['translations'] = array(); + } + } + + function _load_menu($menu_id){ + global $sitepress, $wpdb; + + $menu_tt_id = $wpdb->get_var($wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id=%d AND taxonomy='nav_menu'",$this->current_menu['id'])); + $this->current_menu['trid'] = $sitepress->get_element_trid($menu_tt_id, 'tax_nav_menu'); + + if($this->current_menu['trid']){ + $this->current_menu['translations'] = $sitepress->get_element_translations($this->current_menu['trid'], 'tax_nav_menu'); + }else{ + $this->current_menu['translations'] = array(); + } + + foreach($this->current_menu['translations'] as $tr){ + if($menu_tt_id == $tr->element_id){ + $this->current_menu['language'] = $tr->language_code; + } + } + } + + function wp_update_nav_menu($menu_id, $menu_data = null){ + global $sitepress, $wpdb; + if($menu_data){ + if(isset($_POST['icl_translation_of']) && $_POST['icl_translation_of']){ + $trid = $sitepress->get_element_trid($_POST['icl_translation_of'], 'tax_nav_menu'); + }else{ + $trid = isset($_POST['icl_nav_menu_trid']) ? intval($_POST['icl_nav_menu_trid']) : null; + } + $language_code = isset($_POST['icl_nav_menu_language']) ? $_POST['icl_nav_menu_language'] : $sitepress->get_default_language(); + $menu_id_tt = $wpdb->get_var($wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id=%d AND taxonomy='nav_menu'",$menu_id)); + $sitepress->set_element_language_details($menu_id_tt, 'tax_nav_menu', $trid, $language_code); + } + $this->current_menu['id'] = $menu_id; + $this->_load_menu($this->current_menu['id']); + } + + function wp_delete_nav_menu($id){ + global $wpdb; + $menu_id_tt = $wpdb->get_var($wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id=%d AND taxonomy='nav_menu'",$id)); + $wpdb->query("DELETE FROM {$wpdb->prefix}icl_translations WHERE element_id='{$menu_id_tt}' AND element_type='tax_nav_menu' LIMIT 1"); + } + + function wp_update_nav_menu_item($menu_id, $menu_item_db_id, $args){ + // TBD + // TBD + global $sitepress; + + // deal with the case of auto-added pages + /* + if(isset($_POST['icl_post_language'])){ + $menu_language = $this->_get_menu_language($menu_id); + if($menu_language != $_POST['icl_post_language']){ + _wp_delete_post_menu_item($menu_id); + return; + } + } + */ + $trid = null; + $language_code = $this->current_lang; + $sitepress->set_element_language_details($menu_item_db_id, 'post_nav_menu_item', $trid, $language_code); + } + + function wp_delete_nav_menu_item($menu_item_id){ + global $wpdb; + $post = get_post($menu_item_id); + if(!empty($post->post_type) && $post->post_type == 'nav_menu_item'){ + $wpdb->query("DELETE FROM {$wpdb->prefix}icl_translations WHERE element_id='{$menu_item_id}' AND element_type='post_nav_menu_item' LIMIT 1"); + } + } + + function nav_menu_language_controls(){ + global $sitepress, $wpdb; + if($this->current_menu['language'] != $sitepress->get_default_language()){ + $menus_wout_translation = $this->get_menus_without_translation($this->current_menu['language']); + } + if(isset($this->current_menu['translations'][$sitepress->get_default_language()])){ + $menus_wout_translation['0'] = (object)array( + 'element_id'=>$this->current_menu['translations'][$sitepress->get_default_language()]->element_id, + 'trid' =>'0', + 'name' =>$this->current_menu['translations'][$sitepress->get_default_language()]->name + ); + } + + $langsel = '
                  '; + + // show translations links if this is not a new element + if($this->current_menu['id']){ + $langsel .= '
                  '; + $langsel .= __('Translations:', 'sitepress'); + foreach($sitepress->get_active_languages() as $lang){ + if($lang['code'] == $this->current_menu['language']) continue; + if(isset($this->current_menu['translations'][$lang['code']])){ + $lang_suff = '&lang=' . $lang['code']; + $menu_id = $wpdb->get_var($wpdb->prepare("SELECT term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id=%d",$this->current_menu['translations'][$lang['code']]->element_id)); + $tr_link = ''. + $lang['display_name'] . ' '. esc_attr(__('edit', 'sitepress')).
+                        ''; + }else{ + $tr_link = ''. + $lang['display_name'] . ' '. esc_attr(__('add', 'sitepress')).
+                        ''; + } + $trs[] = $tr_link ; + } + $langsel .= ' ' . join (', ', $trs); + $langsel .= '

                  '; + $langsel .= ''; + + } + + // show languages dropdown + $langsel .= ''; + + // show 'translation of' if this element is not in the default language and there are untranslated elements + $langsel .= ''; + if($this->current_menu['language'] != $sitepress->get_default_language() && !empty($menus_wout_translation)){ + $langsel .= ''; + } + $langsel .= ''; + + // add trid to form + if($this->current_menu['trid']){ + $langsel .= ''; + } + + $langsel .= ''; + ?> + + get_results(" + SELECT ts.element_id, ts.trid, t.name + FROM {$wpdb->prefix}icl_translations ts + JOIN {$wpdb->term_taxonomy} tx ON ts.element_id = tx.term_taxonomy_id + JOIN {$wpdb->terms} t ON tx.term_id = t.term_id + WHERE ts.element_type='tax_nav_menu' + AND ts.language_code='{$sitepress->get_default_language()}' + AND tx.taxonomy = 'nav_menu' + "); + $menus = array(); + foreach($res as $row){ + if(!$wpdb->get_var("SELECT translation_id FROM {$wpdb->prefix}icl_translations WHERE trid='{$row->trid}' AND language_code='{$lang}'")){ + $menus[$row->trid] = $row; + } + } + return $menus; + } + + function _render_translation_of($lang, $trid = false){ + global $sitepress; + $out = ''; + + if($sitepress->get_default_language() != $lang){ + $menus = $this->get_menus_without_translation($lang); + $out .= ''; + } + + echo $out; + } + + function get_menus_by_language(){ + global $wpdb, $sitepress; + $res = $wpdb->get_results(" + SELECT lt.name AS language_name, l.code AS lang, COUNT(ts.translation_id) AS c + FROM {$wpdb->prefix}icl_languages l + JOIN {$wpdb->prefix}icl_languages_translations lt ON lt.language_code = l.code + JOIN {$wpdb->prefix}icl_translations ts ON l.code = ts.language_code + WHERE lt.display_language_code='".$sitepress->get_admin_language()."' + AND l.active = 1 + AND ts.element_type = 'tax_nav_menu' + GROUP BY ts.language_code + ORDER BY major DESC, english_name ASC + "); + foreach($res as $row){ + $langs[$row->lang] = $row; + } + return $langs; + } + + function languages_menu($echo = true){ + global $sitepress; + $langs = $this->get_menus_by_language(); + + // include empty languages + foreach($sitepress->get_active_languages() as $lang){ + if(!isset($langs[$lang['code']])){ + $langs[$lang['code']] = new stdClass(); + $langs[$lang['code']]->language_name = $lang['display_name']; + $langs[$lang['code']]->lang = $lang['code']; + $langs[$lang['code']]->c = 0; + } + } + $url = admin_url('nav-menus.php'); + + foreach($langs as $l){ + $class = $l->lang == $this->current_lang ? ' class="current"' : ''; + $urlsuff = '?lang=' . $l->lang; + $ls[] = ''.esc_html($l->language_name).' ('.$l->c.')'; + } + $ls_string = '
                  '; + $ls_string .= join(' | ', $ls); + $ls_string .= '
                  '; + if($echo){ + echo $ls_string; + }else{ + return $ls_string; + } + } + + function get_terms_filter($terms, $taxonomies, $args){ + global $wpdb, $sitepress, $pagenow; + // deal with the case of not translated taxonomies + // we'll assume that it's called as just a single item + if(!$sitepress->is_translated_taxonomy($taxonomies[0]) && 'nav_menu' != $taxonomies[0]){ + return $terms; + } + + // special case for determining list of menus for updating auto-add option + if($taxonomies[0] == 'nav_menu' && $args['fields'] == 'ids' && $_POST['action'] == 'update' && $pagenow=='nav-menus.php'){ + return $terms; + } + + if(!empty($terms)){ + + foreach($taxonomies as $t){ + $txs[] = 'tax_' . $t; + } + $el_types = "'".join(',',$txs)."'"; + + // get all term_taxonomy_id's + $tt = array(); + foreach($terms as $t){ + if(is_object($t)){ + $tt[] = $t->term_taxonomy_id; + }else{ + if(is_numeric($t)){ + $tt[] = $t; + } + } + } + + // filter the ones in the current language + if(!empty($tt)){ + $ftt = $wpdb->get_col("SELECT element_id FROM {$wpdb->prefix}icl_translations + WHERE element_type IN ({$el_types}) AND element_id IN (".join(',',$tt).") AND language_code='{$this->current_lang}'"); + } + + foreach($terms as $k=>$v){ + if(isset($v->term_taxonomy_id) && !in_array($v->term_taxonomy_id, $ftt)){ + unset($terms[$k]); + } + } + } + return $terms; + } + + // filter posts by language + function parse_query($q){ + global $sitepress; + // not filtering nav_menu_item + if($q->query_vars['post_type'] == 'nav_menu_item'){ + return $q; + } + + // also - not filtering custom posts that are not translated + if($sitepress->is_translated_post_type($q->query_vars['post_type'])){ + $q->query_vars['suppress_filters'] = 0; + } + + return $q; + } + + function theme_mod_nav_menu_locations($val){ + global $sitepress; + if($sitepress->get_default_language() != $this->current_lang){ + if(!empty($val)){ + foreach($val as $k=>$v){ + $val[$k] = icl_object_id($val[$k], 'nav_menu', true, $this->current_lang); + } + } + } + return $val; + } + + function pre_update_theme_mods_theme($val){ + global $sitepress; + if(isset($val['nav_menu_locations'])){ + foreach((array)$val['nav_menu_locations'] as $k=>$v){ + if(!$v && $this->current_lang != $sitepress->get_default_language()){ + $tl = get_theme_mod('nav_menu_locations'); + $val['nav_menu_locations'][$k] = $tl[$k]; + }else{ + $val['nav_menu_locations'][$k] = icl_object_id($val['nav_menu_locations'][$k], 'nav_menu',true, $sitepress->get_default_language()); + } + } + } + return $val; + } + + function option_nav_menu_options($val){ + global $wpdb; + // special case of getting menus with auto-add only in a specific language + $db = debug_backtrace(); + if(isset($db[4]) && $db[4]['function'] == '_wp_auto_add_pages_to_menu' && !empty($val['auto_add'])){ + $post_lang = $_POST['icl_post_language']; + $val['auto_add'] = $wpdb->get_col(" + SELECT element_id + FROM {$wpdb->prefix}icl_translations + WHERE element_type='tax_nav_menu' + AND element_id IN (".join(',',$val['auto_add']).") + AND language_code = '{$post_lang}'"); + } + + return $val; + } + + function wp_nav_menu_args_filter($args){ + global $sitepress; + + if ( ! $args['menu'] ){ + $locations = get_nav_menu_locations(); + if(isset( $args['theme_location'] ) && isset($locations[$args['theme_location']])){ + $args['menu'] = icl_object_id($locations[$args['theme_location']], 'nav_menu'); + } + }; + + if ( ! $args['menu'] ){ + remove_filter('theme_mod_nav_menu_locations', array($this, 'theme_mod_nav_menu_locations')); + $locations = get_nav_menu_locations(); + if(isset( $args['theme_location'] ) && isset($locations[$args['theme_location']])){ + $args['menu'] = icl_object_id($locations[$args['theme_location']], 'nav_menu'); + } + add_filter('theme_mod_nav_menu_locations', array($this, 'theme_mod_nav_menu_locations')); + } + + + if ( $args['menu'] ){ + $db = debug_backtrace(); + if($db[4]['function']=='widget'){ + if(is_integer($args['menu'])){ + $args['menu'] = wp_get_nav_menu_object( icl_object_id($args['menu'], 'nav_menu') ); + }elseif(!empty($args['menu']->term_id)){ + $args['menu'] = wp_get_nav_menu_object( icl_object_id($args['menu']->term_id, 'nav_menu') ); + } + } + } + + return $args; + } + + function wp_nav_menu_items_filter($items){ + $items = preg_replace( + '|
                • + +
                  language_pairs[$from_lang['code']])): + $output .= ' style="display:block"'; + endif; + $output .= '> + ' . __('to', 'wpml-translation-management') . ' +
                    '; + + foreach($sitepress->get_active_languages() as $to_lang): + if ($from_lang['code'] == $to_lang['code']) continue; + $output .= '
                  • +   +
                  • '; + endforeach; + $output .= '
                  +
                  +
                • '; + endforeach; + + $output .= ''; + $output .= ' + '; + } + + $return['content'] = $output; + + return ($action == 'edit') ? $output : $return; +} +?> diff --git a/wp-content/plugins/wpml-translation-management/menu/translation-editor.php b/wp-content/plugins/wpml-translation-management/menu/translation-editor.php new file mode 100644 index 0000000..f14727c --- /dev/null +++ b/wp-content/plugins/wpml-translation-management/menu/translation-editor.php @@ -0,0 +1,300 @@ +get_translation_job((int)$_GET['job_id'], false, true, 1); // don't include not-translatable and auto-assign +if(empty($job)){ + $job_checked = true; + include WPML_TM_PATH . '/menu/translations-queue.php'; + return; +} +$rtl_original = in_array($job->source_language_code, array('ar','he','fa')); +$rtl_translation = in_array($job->language_code, array('ar','he','fa')); +$rtl_original_attribute = $rtl_original ? ' dir="rtl"' : ' dir="ltr"'; +$rtl_translation_attribute = $rtl_translation ? ' dir="rtl"' : ' dir="ltr"'; + +?> +
                  +

                  +

                  + + + original_doc_id); + if(!empty($opost) && ($opost->post_status == 'draft' || $opost->post_status == 'private') && $opost->post_author != $current_user->data->ID){ + $elink1 = ''; + $elink2 = ''; + }else{ + $elink1 = sprintf('', get_permalink($job->original_doc_id)); + $elink2 = ''; + } + + ?> +

                  original_doc_id), $job->from_language, $job->to_language); ?>

                  + + original_doc_id, '_icl_translator_note', true)): ?> +
                  +
                  + +
                  + + +
                  + + +
                  + + elements as $element): ?> + field_data)) continue; + $_iter = !isset($_iter) ? 1 : $_iter + 1; + if(!$element->field_finished){ + $icl_tm_all_finished = false; + } + ?> +
                  +
                  +
                  +
                  +
                  +
                  +
                  + field_type, 'field-')){ + $element_field_type = apply_filters('icl_editor_cf_name', $element->field_type); + $element_field_style = apply_filters('icl_editor_cf_style', '', $element->field_type); + }else{ + $element_field_type = $element->field_type; + $element_field_style = false; + } + ?> +

                  +
                  + field_type, 'field-')){ + $icl_editor_cf_description = apply_filters('icl_editor_cf_description', '', $element->field_type); + if($icl_editor_cf_description !== null){ + echo '

                  ' . $icl_editor_cf_description . '

                  '; + } + } + ?> + + field_data, $element->field_format); + $icl_tm_translated_content = TranslationManagement::decode_field_data($element->field_data_translated, $element->field_format); + if($element->field_type=='tags' || $element->field_type=='categories'){ + $taxonomy = $element->field_type == 'tags' ? 'post_tag' : 'category'; + $icl_tm_translated_taxs[$element->field_type] = + TranslationManagement::determine_translated_taxonomies($icl_tm_original_content, $taxonomy, $job->language_code); + } + $translatable_taxonomies = $sitepress->get_translatable_taxonomies(false, $job->original_post_type); + if(in_array($element->field_type, $translatable_taxonomies)){ + $taxonomy = $element->field_type; + $icl_tm_translated_taxs[$element->field_type] = + TranslationManagement::determine_translated_taxonomies($icl_tm_original_content, $taxonomy, $job->language_code); + }; + ?> +

                  + to_language; ?> + + |  from_language)?> + +

                  + + + field_type=='body'): ?> +
                  + =')){ + $settings = array( + 'media_buttons' => false, + 'textarea_name' => 'fields['.$element->field_type.'][data]', + 'textarea_rows' => 20 + ); + wp_editor($icl_tm_translated_content, 'fields['.$element->field_type.'][data]', $settings); + }else{ + the_editor($icl_tm_translated_content, 'fields['.$element->field_type.'][data]', false, false); + } + ?> +
                  + + + field_format == 'csv_base64'): ?> + $c): ?> + field_type][$k])){ + $icl_tm_translated_content[$k] = $icl_tm_translated_taxs[$element->field_type][$k]; + $icl_tm_f_translated = true; + }else{ + $icl_tm_f_translated = false; + } + ?> + + +
                  + + + + + field_type, 'field-') && $element_field_style == 1): ?> + + + + field_type, 'field-') && $element_field_style == 2): + if(version_compare($wp_version, '3.3', '>=')){ + $settings = array( + 'media_buttons' => false, + 'textarea_name' => 'fields['.$element->field_type.'][data]', + 'textarea_rows' => 4 + ); + wp_editor($icl_tm_translated_content, 'fields['.$element->field_type.'][data]', $settings); + }else{ + ?> + + + + + + + +

                  + +

                  + +
                  + + + +

                  from_language; ?>

                  + field_type=='tags' || $element->field_type=='categories' || in_array($element->field_type, $translatable_taxonomies)){ + + if($element->field_type=='tags'){ + $term_taxonomy = 'post_tag'; + }elseif($element->field_type=='categories'){ + $term_taxonomy = 'category'; + }else{ + $term_taxonomy = $element->field_type; + } + if(!empty($icl_tm_original_content)){ + $res = $wpdb->get_results($wpdb->prepare( + "SELECT t.name, x.description FROM {$wpdb->terms} t + JOIN {$wpdb->term_taxonomy} x ON x.term_id = t.term_id + WHERE description<>'' && x.taxonomy=%s + AND t.name IN ('".join("','", $wpdb->escape($icl_tm_original_content))."')", + $term_taxonomy + )); + $term_descriptions = array(); + foreach($res as $row){ + $term_descriptions[$row->name] = $row->description; + } + } + } + + if($element->field_type=='body' || $element_field_style == 2){ + $icl_tm_original_content_html = esc_html($icl_tm_original_content); + $icl_tm_original_content = apply_filters('the_content', $icl_tm_original_content); + $icl_wysiwyg_height = $element->field_type == 'body' ? get_option('default_post_edit_rows', 20)*20 : 100; + ?> +
                  + + +
                  +
                  + +
                  + field_type=='body' || $element_field_style == 2): ?> +
                  > + + + +
                  +
                  + field_format == 'csv_base64'): ?> + +
                  > +
                  + 10)); ?> +
                  +
                  + + +
                  >
                  + +
                  + + + + + + field_finished && !empty($job->prev_version)): ?> + prev_version->elements as $pel){ + if($element->field_type == $pel->field_type){ + $prev_value = TranslationManagement::decode_field_data($pel->field_data, $pel->field_format); + } + } + $diff = wp_text_diff( $prev_value, TranslationManagement::decode_field_data($element->field_data, $element->field_format) ); + if(!empty($diff)){ + ?> +

                  +
                  + +
                  + + + +
                  +
                  +
                  +
                  +
                  + +
                  + +
                  + + +
                  +

                  +   + + + +

                  + +
                  + +
                  diff --git a/wp-content/plugins/wpml-translation-management/menu/translations-queue.php b/wp-content/plugins/wpml-translation-management/menu/translations-queue.php new file mode 100644 index 0000000..161a9dd --- /dev/null +++ b/wp-content/plugins/wpml-translation-management/menu/translations-queue.php @@ -0,0 +1,286 @@ + 0){ + include WPML_TM_PATH . '/menu/translation-editor.php'; + return; + } + if(!empty($_GET['resigned'])){ + $iclTranslationManagement->messages[] = array('type'=>'updated', 'text'=>__("You've resigned from this job.", 'wpml-translation-management')); + } + if(isset($_SESSION['translation_ujobs_filter'])){ + $icl_translation_filter = $_SESSION['translation_ujobs_filter']; + } + $current_translator = $iclTranslationManagement->get_current_translator(); + $icl_translation_filter['translator_id'] = $current_translator->translator_id; + $icl_translation_filter['include_unassigned'] = true; + + if(isset($_GET['updated'])){ + $user_message = __('Translation updated: ', 'wpml-translation-management') . TranslationManagement::tm_post_link(intval($_GET['updated'])); + $iclTranslationManagement->messages[] = array('type'=>'updated', 'text' => $user_message); + }elseif(isset($_GET['added'])){ + $user_message = __('Translation added: ', 'wpml-translation-management') . TranslationManagement::tm_post_link(intval($_GET['added'])); + $iclTranslationManagement->messages[] = array('type'=>'updated', 'text' => $user_message); + } + + if(!empty($current_translator->language_pairs)){ + $_langs_to = array(); + if(1 < count($current_translator->language_pairs)){ + foreach($current_translator->language_pairs as $lang=>$to){ + $langs_from[] = $sitepress->get_language_details($lang); + $_langs_to = array_merge((array)$_langs_to, array_keys($to)); + } + $_langs_to = array_unique($_langs_to); + }else{ + $_langs_to = array_keys(current($current_translator->language_pairs)); + $lang_from = $sitepress->get_language_details(key($current_translator->language_pairs)); + $icl_translation_filter['from'] = $lang_from['code']; + } + + if(1 < count($_langs_to)){ + foreach($_langs_to as $lang){ + $langs_to[] = $sitepress->get_language_details($lang); + } + }else{ + $lang_to = $sitepress->get_language_details(current($_langs_to)); + $icl_translation_filter['to'] = $lang_to['code']; + } + + $icl_translation_filter['limit_no'] = 20; + $translation_jobs = $iclTranslationManagement->get_translation_jobs((array)$icl_translation_filter); + } + +?> +
                  +

                  +

                  + + language_pairs)): ?> +

                  + + + + + language_pairs)): ?> +
                  + + + + + + + + + + + + +
                  +   +   + +   + +
                  +
                  + +
                  + + + + 0): ?> +
                  + + + add_query_arg('paged', '%#%' ), + 'format' => '', + 'prev_text' => '«', + 'next_text' => '»', + 'total' => $wp_query->max_num_pages, + 'current' => $_GET['paged'], + 'add_args' => isset($icl_translation_filter)?$icl_translation_filter:array() + )); + ?> +
                  + +
                  ' . __( 'Displaying %s–%s of %s', 'wpml-translation-management' ) . '%s', + number_format_i18n( ( $_GET['paged'] - 1 ) * $wp_query->query_vars['posts_per_page'] + 1 ), + number_format_i18n( min( $_GET['paged'] * $wp_query->query_vars['posts_per_page'], $wp_query->found_posts ) ), + number_format_i18n( $wp_query->found_posts ), + $page_links + ); echo $page_links_text; ?> +
                  + + + 0): ?> +
                  + + +
                  + +
                  + + + + + + 0): ?> + + + + + + + + + + + + + + + 0): ?> + + + + + + + + + + + + + + + + 0): ?> + + + + + + + + 0): ?> + + + + + + + + + + + + + +
                     
                     
                  + + job_id; ?>post_title ); ?>lang_text ?> + + original_doc_id) {echo TranslationManagement::tm_post_link($job->original_doc_id, __('View original', 'wpml-translation-management'), true);} ?> + translator_id && $job->status == ICL_TM_WAITING_FOR_TRANSLATOR): ?>
                  !
                  status2text($job->status); + if($job->needs_update) _e(' - (needs update)', 'wpml-translation-management'); + ?> + translator_id > 0 && ($job->status == ICL_TM_WAITING_FOR_TRANSLATOR || $job->status == ICL_TM_IN_PROGRESS)): ?> + + +   + +
                  + +
                  + +
                  + +
                  + + + 0): ?> +
                  + + +
                  + +
                  + + + 0): ?> +
                  + + + + + +
                  + + + diff --git a/wp-content/plugins/wpml-translation-management/plugin.php b/wp-content/plugins/wpml-translation-management/plugin.php new file mode 100644 index 0000000..fa584f9 --- /dev/null +++ b/wp-content/plugins/wpml-translation-management/plugin.php @@ -0,0 +1,23 @@ +Documentation. +Author: ICanLocalize +Author URI: http://wpml.org +Version: 1.3.0 +*/ + +if(defined('WPML_TM_VERSION')) return; + +define('WPML_TM_VERSION', '1.2.9'); +define('WPML_TM_PATH', dirname(__FILE__)); + +require WPML_TM_PATH . '/inc/constants.php'; +require WPML_TM_PATH . '/inc/wpml-translation-management.class.php'; + +if ( function_exists('is_multisite') && is_multisite() ) { + @include_once( ABSPATH . WPINC . '/vars.php' ); +} + +$WPML_Translation_Management = new WPML_Translation_Management; \ No newline at end of file diff --git a/wp-content/plugins/wpml-translation-management/res/css/style.css b/wp-content/plugins/wpml-translation-management/res/css/style.css new file mode 100644 index 0000000..41165dc --- /dev/null +++ b/wp-content/plugins/wpml-translation-management/res/css/style.css @@ -0,0 +1,98 @@ +.icl_tm_wrap{ + border: 1px solid #CCCCCC; + padding:10px; + background-color:#ffffff; +} + +#icl_tm_adduser{ + margin-top: 4px; +} +#icl_tm_adduser .icl_tm_lang_pairs{ + display: none; + padding:5px; +} + +#icl_tm_adduser .icl_tm_lang_pairs li ul li{ + display: inline; +} + +.icl_tm_lang_pairs_to{ + display: none; + background: #DFDFDF url(../../../../../wp-admin/images/gray-grad.png) repeat-x scroll left top; + -moz-border-radius: 4px; + padding: 4px; + margin-top: 1px; +} + +.icl_tm_no_to{ + display: none; + background-color: pink; + padding:5px; + -moz-border-radius: 4px; + margin-bottom: 5px; +} + +.nav-tab{ + background-color: #efefef; + color: #000; +} +.nav-tab:hover{ + background-color: #fff; +} +.nav-tab-active{ + font-weight: bold; + background-color: #fff; + border-bottom-color: #fff; +} + +.form-table td, .form-table th{ + border-bottom:none; +} + +.icl_tj_select_translator_controls{ + display: none; +} + +#icl_custom_posts_sync_options, #icl_custom_tax_sync_options{ + width:49%; + float:left; +} +#icl_custom_posts_sync_options{ + margin-right:2%; +} + +.icl_tm_admin_options li ul{ + margin-left:20px; +} + +#local_translations_add_translator_toggle { + border: 1px solid #CCCCCC; + padding: 10px; +} + +.icl_tm_diff{ + display:none; + margin-bottom: 10px; +} + +.icl_tm_error{ + vertical-align:bottom; + font-size: 11px; + color:#ff0000; +} + +#icl_quick_src_users{ + width:150px; + border-color:red; +} +select.icl_tm_auto_suggest_dd{ + margin-left: -150px; + margin-top: 23px; + min-width: 150px; + position: absolute; +} +#icl_user_src_nf{ + font-size:90%; + font-style: italic; +} + diff --git a/wp-content/plugins/wpml-translation-management/res/css/translations-queue.css b/wp-content/plugins/wpml-translation-management/res/css/translations-queue.css new file mode 100644 index 0000000..e7a2b1f --- /dev/null +++ b/wp-content/plugins/wpml-translation-management/res/css/translations-queue.css @@ -0,0 +1,119 @@ +.icl_tj_your_job{ + color:#f00; + width:14px; + cursor: help; + font-weight: bold; +} + +.icl-translation-editor p.updated{ + padding:4px; +} +.icl-translation-editor #dashboard-widgets-wrap .inside{ + padding-left:8px; + padding-right:8px; +} + +.icl-translation-editor #dashboard-widgets-wrap .inside p{ + margin-top:4px; + margin-bottom: 4px; +} + +.icl-translation-editor #dashboard-widgets-wrap .inside input[type=text]{ + width:99%; +} + +.icl-tj-original{ + background-color: #efefef; + color:#555; + border: 1px solid #ddd; + padding:4px; + -moz-border-radius: 6px; + margin-bottom:8px; + font-size: 90%; +} +.icl-tj-original .icl_multiple{ + padding: 4px; +} +.icl-tj-original .icl_single{ + padding:4px; +} + +.icl-tj-original textarea{ + width: 100%; + height:300px; +} + +.icl-tj-original-cf textarea{ + height:150px; +} + +.icl-tj-original .html{ + display: none; +} + +.icl-translation-editor .postbox-container .meta-box-sortables{min-height: 0;} + +.icl-translation-editor .postbox-container{ + width: 49%; +} +.icl-translation-editor .icl-tj-postbox-container-title, +.icl-translation-editor .icl-tj-postbox-container-body{ + width: 100%; +} + +.icl-translation-editor #editorcontainer textarea{ + width: 100%; + margin:0; + border:none; +} + +.icl_tm_orig_toggle{ + text-align: right; + margin-bottom: -1px; + padding-right: 8px; +} + +.icl_tm_toggle_visual, .icl_tm_toggle_html{ + text-decoration: none; + -moz-border-radius:3px 3px 0 0; + border-style:solid; + border-width:1px; + cursor:pointer; + float:right; + height:18px; + margin:5px 5px 0 0; + padding:4px 5px 2px; + background-color:#F6F6F6; + border-color:#DFDFDF; + color:#999999; +} + +.icl_tm_toggle_visual.active, .icl_tm_toggle_html.active, .icl_tm_toggle_visual:hover, .icl_tm_toggle_html:hover{ + background-color:#efefef; + border-bottom-color:#efefef; + color:#333333; +} + +input.icl_multiple{ + width:80% !important; +} + +.icl_tm_tf{ + float: right; + margin-top:8px; + font-size: 85%; + font-style: italic; +} + +#icl_tm_validation_error{ + margin-top: 6px; + display: none; +} + +.icl_tm_row_highlight{ + background-color: #FFC0CB; +} + + +#icl_dashboard_advanced_filters table{} +#icl_dashboard_advanced_filters table td{padding:1px;} diff --git a/wp-content/plugins/wpml-translation-management/res/img/icon.png b/wp-content/plugins/wpml-translation-management/res/img/icon.png new file mode 100644 index 0000000..46183e3 Binary files /dev/null and b/wp-content/plugins/wpml-translation-management/res/img/icon.png differ diff --git a/wp-content/plugins/wpml-translation-management/res/js/scripts.js b/wp-content/plugins/wpml-translation-management/res/js/scripts.js new file mode 100644 index 0000000..332c036 --- /dev/null +++ b/wp-content/plugins/wpml-translation-management/res/js/scripts.js @@ -0,0 +1,785 @@ +jQuery(document).ready(function(){ + + jQuery('#icl_tm_selected_user').change(function(){ + if(jQuery(this).val()){ + jQuery('.icl_tm_lang_pairs').slideDown(); + }else{ + jQuery('.icl_tm_lang_pairs').slideUp(); + jQuery('#icl_tm_adduser .icl_tm_lang_pairs_to').hide(); + jQuery('#icl_tm_add_user_errors span').hide(); + } + + }); + + jQuery('#icl_tm_adduser .icl_tm_from_lang').change(function(){ + if(jQuery(this).attr('checked')){ + jQuery(this).parent().parent().find('.icl_tm_lang_pairs_to').slideDown(); + }else{ + jQuery(this).parent().parent().find('.icl_tm_lang_pairs_to').find(':checkbox').removeAttr('checked'); + jQuery(this).parent().parent().find('.icl_tm_lang_pairs_to').slideUp(); + } + }); + + jQuery('a[href="#hide-advanced-filters"]').click(function(){ + athis = jQuery(this); + icl_save_dashboard_setting('advanced_filters',0,function(f){ + jQuery('#icl_dashboard_advanced_filters').slideUp() + athis.hide(); + jQuery('a[href="#show-advanced-filters"]').show(); + }); + }) + + jQuery('a[href="#show-advanced-filters"]').click(function(){ + athis = jQuery(this); + icl_save_dashboard_setting('advanced_filters',1,function(f){ + jQuery('#icl_dashboard_advanced_filters').slideDown() + athis.hide(); + jQuery('a[href="#hide-advanced-filters"]').show(); + }); + }) + + /* word count estimate */ + + jQuery('#icl-tm-translation-dashboard td :checkbox').click(icl_tm_update_word_count_estimate); + jQuery('#icl-tm-translation-dashboard th :checkbox').click(icl_tm_select_all_documents); + jQuery('#icl_tm_languages :radio').change(icl_tm_enable_submit); + jQuery('#icl_tm_languages :radio').change(icl_tm_dup_warn); + + jQuery('.icl_tj_select_translator select').live('change', icl_tm_assign_translator); + + jQuery('#icl_tm_editor .handlediv').click(function(){ + if(jQuery(this).parent().hasClass('closed')){ + jQuery(this).parent().removeClass('closed'); + }else{ + jQuery(this).parent().addClass('closed'); + } + }) + + jQuery('.icl_tm_toggle_visual').click(function(){ + var inside = jQuery(this).closest('.inside'); + jQuery('.icl-tj-original .html', inside).hide(); + jQuery('.icl-tj-original .visual', inside).show(); + jQuery('.icl_tm_orig_toggle a', inside).removeClass('active'); + jQuery(this).addClass('active'); + return false; + }); + + jQuery('.icl_tm_toggle_html').click(function(){ + var inside = jQuery(this).closest('.inside'); + jQuery('.icl-tj-original .html', inside).show(); + jQuery('.icl-tj-original .visual', inside).hide(); + jQuery('.icl_tm_orig_toggle a', inside).removeClass('active'); + jQuery(this).addClass('active'); + return false; + }) + + jQuery('.icl_tm_finished').change(function(){ + jQuery(this).parent().parent().find('.icl_tm_error').hide(); + var field = jQuery(this).attr('name').replace(/finished/,'data'); + + if(field == 'fields[body][data]'){ + var datatemp = ''; + try{ + datatemp = tinyMCE.get('fields[body][data]').getContent(); + }catch(err){;} + var data = jQuery('*[name="'+field+'"]').val() + datatemp; + } + else if(jQuery(this).hasClass('icl_tmf_multiple')){ + var data = 1; + jQuery('[name*="'+field+'"]').each(function(){ + data = data * jQuery(this).val().length; + }); + }else{ + + var datatemp = ''; + try{ + datatemp = tinyMCE.get(field).getContent(); + }catch(err){;} + + var data = jQuery('[name="'+field+'"]*').val() + datatemp; + } + + + + + if(jQuery(this).attr('checked') && !data){ + jQuery(this).parent().parent().find('.icl_tm_error').show(); + jQuery(this).removeAttr('checked'); + } + }); + + jQuery('#icl_tm_editor .icl_tm_finished').change(icl_tm_update_complete_cb_status); + + jQuery('#icl_tm_editor').submit(function(){ + formnoerr = true; + jQuery('#icl_tm_validation_error').hide(); + jQuery('.icl_tm_finished:checked').each(function(){ + var field = jQuery(this).attr('name').replace(/finished/,'data'); + + if(field == 'fields[body][data]'){ + var data = jQuery('*[name="'+field+'"]').val() + tinyMCE.get('fields[body][data]').getContent(); + } + else if(jQuery(this).hasClass('icl_tmf_multiple')){ + var data = 1; + jQuery('[name*="'+field+'"]').each(function(){ + data = data * jQuery(this).val().length; + }); + }else{ + var data = jQuery('[name="'+field+'"]*').val(); + } + if(!data){ + jQuery('#icl_tm_validation_error').fadeIn(); + jQuery(this).removeAttr('checked'); + icl_tm_update_complete_cb_status(); + formnoerr = false; + } + }); + + return formnoerr; + }); + + if (jQuery('#radio-local').is(':checked')) { + jQuery('#local_translations_add_translator_toggle').slideDown(); + } + + var icl_tm_users_quick_search = { + + attach_listener : function (){ + var searchTimer; + + jQuery('#icl_quick_src_users').keydown( function(e){ + + jQuery('#icl_tm_selected_user').val(''); + jQuery('#icl_quick_src_users').css('border-color', '#ff0000'); + icl_add_translators_form_check_submit(); + + + var t = jQuery(this); + + if( 13 == e.which ) { + icl_tm_users_quick_search.update( t ); + return false; + } + + if( e.keyCode == 40 && jQuery('.icl_tm_auto_suggest_dd').length){ + + jQuery('.icl_tm_auto_suggest_dd').focus(); + + + }else if( e.which >= 32 && e.which <=127 || e.which == 8) { + + jQuery('#icl_user_src_nf').remove(); + + if( searchTimer ) clearTimeout(searchTimer); + + searchTimer = setTimeout(function(){ + icl_tm_users_quick_search.update( t ); + }, 400); + + } + + + + } ).attr('autocomplete','off'); + + icl_tm_users_quick_search.select_listener(); + + jQuery('#icl_quick_src_users').focus(function(){ + if(jQuery('.icl_tm_auto_suggest_dd').length){ + jQuery('.icl_tm_auto_suggest_dd').css('visibility', 'visible'); + } + }) + + + jQuery('#icl_quick_src_users').blur(function(){ + setTimeout(function(){ + if(jQuery('.icl_tm_auto_suggest_dd').length && !jQuery('select.icl_tm_auto_suggest_dd').is(':focus') ){ + jQuery('.icl_tm_auto_suggest_dd').css('visibility', 'hidden'); + } + }, 500); + }) + + + + }, + + update : function(input){ + + var panel, params, + minSearchLength = 2, + q = input.val(); + + panel = input.parent(); + + if( q.length < minSearchLength ){ + jQuery('select.icl_tm_auto_suggest_dd', panel).remove(); + return; + } + + params = { + 'action': 'icl_tm_user_search', + 'q': q + }; + + + jQuery('img.waiting', panel).show(); + jQuery('select.icl_tm_auto_suggest_dd', panel).remove(); + + jQuery.post( ajaxurl, params, function(response) { + icl_tm_users_quick_search.ajax_response(response, params, panel, input); + }); + + }, + + ajax_response : function (response, params, panel, input){ + + jQuery('#icl_user_src_nf').remove(); + input.after(response); + jQuery('img.waiting', panel).hide(); + + }, + + select_listener : function(){ + + /* + jQuery('.icl_tm_auto_suggest_dd option').live('click', function(){ + icl_tm_users_quick_search.select(jQuery(this).val()); + }); + */ + + jQuery('.icl_tm_auto_suggest_dd').live('change', function(){ + icl_tm_users_quick_search.select(jQuery(this).val()); + }); + + + jQuery('.icl_tm_auto_suggest_dd').live('keydown', function(e){ + if(e.which == 13){ + icl_tm_users_quick_search.select(jQuery(this).val()); + e.preventDefault(); + } + }); + + return; + /* + jQuery('.icl_tm_auto_suggest_dd').live('change', function(){ + + var spl = jQuery(this).val().split('|'); + jQuery('#icl_tm_selected_user').val(spl[0]); + spl.shift(); + jQuery('#icl_quick_src_users').val(spl.join('|')); + jQuery(this).remove(); + }) + */ + }, + + select : function(val){ + var spl = val.split('|'); + jQuery('#icl_tm_selected_user').val(spl[0]); + spl.shift(); + jQuery('#icl_quick_src_users').val(spl.join('|')).css('border-color', 'inherit'); + jQuery('.icl_tm_auto_suggest_dd').remove(); + icl_add_translators_form_check_submit(); + } + + } + + icl_tm_users_quick_search.attach_listener(); + + + icl_add_translators_form_check_submit(); + var icl_active_service = jQuery("input[name='services']:checked").val(); + + + jQuery('input[name=services]').change(function() { + if (jQuery('#radio-local').is(':checked')) { + jQuery('#local_translations_add_translator_toggle').slideDown(); + } else { + jQuery('#local_translations_add_translator_toggle').slideUp(); + } + icl_active_service = jQuery(this).val(); + icl_add_translators_form_check_submit(); + }); + + jQuery('#edit-from').change(function() { + icl_add_translators_form_check_submit(); + }); + + jQuery('#edit-to').change(function() { + icl_add_translators_form_check_submit(); + }); + + jQuery('#icl_add_translator_submit').click(function() { + var url = jQuery('#'+icl_active_service+'_setup_url').val(); + if (url !== undefined) { + url = url.replace(/from_replace/, jQuery('#edit-from').val()); + url = url.replace(/to_replace/, jQuery('#edit-to').val()); + icl_thickbox_reopen(url); + return false; + } + jQuery('#icl_tm_add_user_errors span').hide(); + if (jQuery('input[name=services]').val() == 'local' && jQuery('#icl_tm_selected_user').val() == 0){ + jQuery('#icl_tm_add_user_errors .icl_tm_no_to').show(); + return false; + } + }); + + jQuery('#icl_add_translator_form_toggle').click(function() { + jQuery('#icl_add_translator_form_wrapper').slideToggle(function(){ + if (jQuery('#icl_add_translator_form_wrapper').is(':hidden')) { + var caption = jQuery('#icl_add_translator_form_toggle').val().replace(/<>'); + } else { + var caption = jQuery('#icl_add_translator_form_toggle').val().replace(/>>/, '<<'); + } + jQuery('#icl_add_translator_form_toggle').val(caption); + }); + + return false; + }); + + jQuery('#icl_side_by_site a[href=#cancel]').click(function(){ + var thisa = jQuery(this); + jQuery.ajax({ + type: "POST", url: ajaxurl, data: 'action=dismiss_icl_side_by_site', + success: function(msg){ + thisa.parent().parent().fadeOut(); + } + }); + return false; + }); + + + if (typeof(icl_tb_init) != 'undefined') { + icl_tb_init('a.icl_thickbox'); + icl_tb_set_size('a.icl_thickbox'); + } + + var cache = '&cache=1'; + if (location.href.indexOf("main.php&sm=translators") != -1 || location.href.indexOf('/post.php') != -1 || location.href.indexOf('/edit.php') != -1) { + cache = ''; + } + jQuery.ajax({ + type: "POST", + url: icl_ajx_url, + dataType: 'json', + data: "icl_ajx_action=get_translator_status" + cache + '&_icl_nonce=' + jQuery('#_icl_nonce_gts').val(), + success: function(msg){ + if (cache == '') { + } + } + }); + + if(jQuery('#icl_tdo_options').length) + jQuery('#icl_tdo_options').submit(iclSaveForm); + + jQuery('.icl_tm_copy_link').click(function(){ + var type = jQuery(this).attr('id').replace(/^icl_tm_copy_link_/,''); + + field = 'fields['+type+'][data]'; + var original = ''; + + if(type=='body' || (0 == type.indexOf('field-') && jQuery('#icl_tm_original_'+type)[0].tagName != 'SPAN')){ + + original = jQuery('#icl_tm_original_'+type).val() + + + try{ + tinyMCE.get(field); // activate + + }catch(err){;} //backward compatibility + + if ( typeof tinyMCE != 'undefined' && ( ed = tinyMCE.activeEditor ) && !ed.isHidden() ) { + + if(tinyMCE.activeEditor.id != field){ + for(i in tinyMCE.editors){ + if(field == tinyMCE.editors[i].id){ + ed = tinyMCE.editors[i]; + } + } + } + + ed.focus(); + if (tinymce.isIE) + ed.selection.moveToBookmark(tinymce.EditorManager.activeEditor.windowManager.bookmark); + original = original.replace(/\n\n/g, '
                  '); + ed.execCommand('mceInsertContent', false, original); + } else { + wpActiveEditor = field; + edInsertContent(edCanvas, original); + } + }else{ + type = type.replace(/ /g, '__20__'); + original = jQuery('#icl_tm_original_'+type).html(); + + if(jQuery('#icl_tm_editor input[name="'+field+'"]').length){ + jQuery('#icl_tm_editor input[name="'+field+'"]').val(original); + }else if(jQuery('#icl_tm_editor textarea[name="'+field+'"]').length){ + jQuery('#icl_tm_editor textarea[name="'+field+'"]').val(original); + } + /*jQuery('#icl_tm_editor *[name="'+field+'"]').val(original); */ + + } + jQuery(this).parent().fadeOut(); + return false; + }); + + // Translator notes - translation dashboard - start + jQuery('.icl_tn_link').click(function(){ + jQuery('.icl_post_note:visible').slideUp(); + thisl = jQuery(this); + spl = thisl.attr('id').split('_'); + doc_id = spl[3]; + if(jQuery('#icl_post_note_'+doc_id).css('display') != 'none'){ + jQuery('#icl_post_note_'+doc_id).slideUp(); + }else{ + jQuery('#icl_post_note_'+doc_id).slideDown(); + jQuery('#icl_post_note_'+doc_id+' textarea').focus(); + } + return false; + }); + + jQuery('.icl_post_note textarea').keyup(function(){ + if(jQuery.trim(jQuery(this).val())){ + jQuery('.icl_tn_clear').removeAttr('disabled'); + }else{ + jQuery('.icl_tn_clear').attr('disabled', 'disabled'); + } + }); + jQuery('.icl_tn_clear').click(function(){ + jQuery(this).closest('table').prev().val(''); + jQuery(this).attr('disabled','disabled'); + }) + jQuery('.icl_tn_save').click(function(){ + thisa = jQuery(this); + thisa.closest('table').find('input').attr('disabled','disabled'); + tn_post_id = thisa.closest('table').find('.icl_tn_post_id').val(); + jQuery.ajax({ + type: "POST", + url: icl_ajx_url, + data: "icl_ajx_action=save_translator_note¬e="+thisa.closest('table').prev().val()+'&post_id='+tn_post_id + '&_icl_nonce=' + jQuery('#_icl_nonce_stn_' + tn_post_id).val(), + success: function(msg){ + thisa.closest('table').find('input').removeAttr('disabled'); + thisa.closest('table').parent().slideUp(); + icon_url = jQuery('#icl_tn_link_'+tn_post_id+' img').attr('src'); + if(thisa.closest('table').prev().val()){ + jQuery('#icl_tn_link_'+tn_post_id+' img').attr('src', icon_url.replace(/add_translation\.png$/, 'edit_translation.png')); + }else{ + jQuery('#icl_tn_link_'+tn_post_id+' img').attr('src', icon_url.replace(/edit_translation\.png$/, 'add_translation.png')); + } + } + }); + + }); + // Translator notes - translation dashboard - end + + // MC Setup + jQuery('#icl_doc_translation_method').submit(iclSaveForm); + jQuery('#icl_page_sync_options').submit(iclSaveForm); + jQuery('form[name="icl_custom_tax_sync_options"]').submit(iclSaveForm); + jQuery('form[name="icl_custom_posts_sync_options"]').submit(iclSaveForm); + jQuery('form[name="icl_cf_translation"]').submit(iclSaveForm); + + if(jQuery.browser.msie){ + jQuery('#icl_translation_pickup_mode').submit(icl_tm_set_pickup_method); + }else{ + jQuery('#icl_translation_pickup_mode').live('submit', icl_tm_set_pickup_method); + } + + jQuery('#icl_tm_get_translations').live('click', icl_tm_pickup_translations); + if(jQuery('#icl_sec_tic').length){ + icl_sec_tic_to = window.setTimeout(icl_sec_tic_decrement, 60000); + } + + jQuery('#icl-translation-jobs th :checkbox').change(iclTmSelectAllJobs); + jQuery('#icl-tm-jobs-cancel-but').click(iclTmCancelJobs); + jQuery('#icl-translation-jobs td :checkbox').change(iclTmUpdateJobsSelection); + + iclTmPopulateParentFilter(); + jQuery('#icl_parent_filter_control').change(iclTmPopulateParentFilter); + jQuery('form[name="translation-dashboard-filter"]').find('select[name="filter[from_lang]"]').change(iclTmPopulateParentFilter); + + jQuery('#icl_tm_jobs_dup_submit').click(function(){return confirm(jQuery(this).next().html());}) + + jQuery('#icl_show_promo').click(function(){ + jQuery.ajax({type:"POST", url:ajaxurl, data: 'action=icl_tm_toggle_promo&value=0', success: function(){ + jQuery('#icl_show_promo').fadeOut(function(){jQuery('.icl-translation-services'). slideDown()});return false; + }}) + }); + jQuery('#icl_hide_promo').click(function(){ + jQuery.ajax({type:"POST", url:ajaxurl, data: 'action=icl_tm_toggle_promo&value=1', success: function(){ + jQuery('.icl-translation-services').slideUp(function(){jQuery('#icl_show_promo').fadeIn()});return false; + }}); + }) + + + +}); + +function icl_save_dashboard_setting(setting, value, callback){ + jQuery('#icl_dashboard_ajax_working').fadeIn(); + jQuery.ajax({ + type: "POST", + url: icl_ajx_url, + data: 'icl_ajx_action=save_dashboard_setting&setting='+setting+'&value='+value+'_icl_nonce=' + jQuery('#_icl_nonce_sds').val(), + success: function(msg){ + jQuery('#icl_dashboard_ajax_working').fadeOut(); + callback(msg); + } + }); +} + +function icl_add_translators_form_check_submit() { + jQuery('#icl_add_translator_submit').attr('disabled', 'disabled'); + + if(jQuery('#edit-from').val() != 0 && jQuery('#edit-to').val() != 0 && jQuery('#edit-from').val() != jQuery('#edit-to').val()){ + if (jQuery('#radio-icanlocalize').is(':checked') || jQuery('#radio-local').is(':checked') && jQuery('#icl_tm_selected_user').val()) { + jQuery('#icl_add_translator_submit').removeAttr('disabled'); + } + } + +} + +function icl_tm_update_word_count_estimate(){ + icl_tm_enable_submit(); + var id = jQuery(this).val(); + var val = parseInt(jQuery('#icl-cw-'+id).html()); + var curval = parseInt(jQuery('#icl-tm-estimated-words-count').html()); + if(jQuery(this).attr('checked')){ + var newval = curval + val; + }else{ + var newval = curval - val; + } + jQuery('#icl-tm-estimated-words-count').html(newval); + icl_tm_update_doc_count(); +} + +function icl_tm_select_all_documents(){ + if(jQuery(this).attr('checked')){ + jQuery('#icl-tm-translation-dashboard :checkbox').attr('checked','checked'); + jQuery('#icl-tm-estimated-words-count').html(parseInt(jQuery('#icl-cw-total').html())); + }else{ + jQuery('#icl-tm-translation-dashboard :checkbox').removeAttr('checked'); + jQuery('#icl-tm-estimated-words-count').html('0'); + } + icl_tm_update_doc_count(); + icl_tm_enable_submit(); +} + +function icl_tm_update_doc_count(){ + dox = jQuery('#icl-tm-translation-dashboard td :checkbox:checked').length; + jQuery('#icl-tm-sel-doc-count').html(dox); + if(dox){ + jQuery('#icl-tm-doc-wrap').fadeIn(); + }else{ + jQuery('#icl-tm-doc-wrap').fadeOut(); + } +} + +function icl_tm_enable_submit(){ + var anyaction = false; + jQuery('#icl_tm_languages :radio:checked').each(function(){ + if(jQuery(this).val() > 0){ + anyaction = true; + return; + } + }); + + if( jQuery('#icl-tm-translation-dashboard td :checkbox:checked').length > 0 && anyaction){ + jQuery('#icl_tm_jobs_submit').removeAttr('disabled'); + }else{ + jQuery('#icl_tm_jobs_submit').attr('disabled','disabled'); + } +} + +function icl_tm_dup_warn(){ + dupsel = false; + jQuery('#icl_tm_languages :radio:checked').each(function(){ + if(jQuery(this).val() == 2){ + dupsel = true; + return; + } + }); + if(dupsel) jQuery('#icl_dup_ovr_warn').fadeIn(); + else jQuery('#icl_dup_ovr_warn').fadeOut(); +} + + +function icl_tm_assign_translator(){ + var thiss = jQuery(this); + var translator_id = thiss.val(); + var translation_controls = thiss.parent().parent().find('.icl_tj_select_translator_controls'); + var job_id = translation_controls.attr('id').replace(/^icl_tj_tc_/,''); + translation_controls.show(); + translation_controls.find('.icl_tj_cancel').click(function(){ + thiss.val(jQuery('#icl_tj_ov_'+job_id).val()); + translation_controls.hide() + }); + translation_controls.find('.icl_tj_ok').unbind('click').click(function(){icl_tm_assign_translator_request(job_id, translator_id, thiss)}); + +} + +function icl_tm_assign_translator_request(job_id, translator_id, select){ + var translation_controls = select.parent().parent().find('.icl_tj_select_translator_controls'); + select.attr('disabled', 'disabled'); + translation_controls.find('.icl_tj_cancel, .icl_tj_ok').attr('disabled', 'disabled'); + var tdwrp = select.parent().parent(); + jQuery.ajax({ + type: "POST", + url: icl_ajx_url, + dataType: 'json', + data: 'icl_ajx_action=assign_translator&job_id='+job_id+'&translator_id='+translator_id+'&_icl_nonce=' + jQuery('#_icl_nonce_at').val(), + success: function(msg){ + if(!msg.error){ + translation_controls.hide(); + if(msg.service == 'icanlocalize'){ + tdwrp.html(msg.message); + }else{ + jQuery('#icl_tj_ov_'+job_id).val(translator_id); + } + }else{ + // + } + select.removeAttr('disabled'); + translation_controls.find('.icl_tj_cancel, .icl_tj_ok').removeAttr('disabled'); + } + }); + + return false; +} + +function icl_tm_update_complete_cb_status(){ + if(jQuery('#icl_tm_editor .icl_tm_finished:checked').length == jQuery('#icl_tm_editor .icl_tm_finished').length){ + jQuery('#icl_tm_editor :checkbox[name=complete]').removeAttr('disabled'); + }else{ + jQuery('#icl_tm_editor :checkbox[name=complete]').attr('disabled', 'disabled'); + } +} + +function icl_tm_set_pickup_method(){ + var thisf = jQuery(this); + var thiss = thisf.find(':submit'); + thiss.attr('disabled', 'disabled').after(icl_ajxloaderimg); + jQuery.ajax({ + type: "POST", + url: icl_ajx_url, + dataType: 'json', + data: 'icl_ajx_action=set_pickup_mode&'+thisf.serialize(), + success: function(msg){ + if(!msg.error){ + jQuery('#icl_tm_pickup_wrap').load(location.href+' #icl_tm_pickup_wrap', + function(resp){ + jQuery(this).html(jQuery(resp).find('#icl_tm_pickup_wrap').html()); + thiss.removeAttr('disabled').next().remove(); + } + ) + }else{ + alert(msg.error); + thiss.removeAttr('disabled').next().remove(); + } + } + }); + return false; +} + +function icl_tm_pickup_translations(){ + var thisb = jQuery(this); + thisb.attr('disabled', 'disabled').after(icl_ajxloaderimg); + jQuery.ajax({ + type: "POST", + url: icl_ajx_url, + dataType: 'json', + data: 'icl_ajx_action=pickup_translations&_icl_nonce='+jQuery('#_icl_nonce_pickt').val(), + success: function(msg){ + if(!msg.error){ + url_glue = (-1 == location.href.indexOf('?')) ? '?' : '&'; + jQuery('#icl_tm_pickup_wrap').load(location.href+url_glue+'icl_pick_message='+msg.fetched+' #icl_tm_pickup_wrap', function(resp){ + jQuery(this).html(jQuery(resp).find('#icl_tm_pickup_wrap').html()); + thisb.removeAttr('disabled').next().remove(); + }) + }else{ + alert(msg.error); + thisb.removeAttr('disabled').next().remove(); + } + + } + }); +} + + +function icl_sec_tic_decrement(){ + var curval = parseInt(jQuery('#icl_sec_tic').html()); + if(curval > 0){ + jQuery('#icl_sec_tic').html(curval - 1); + window.setTimeout(icl_sec_tic_decrement, 60000); + }else{ + jQuery('#icl_tm_get_translations').removeAttr('disabled'); + jQuery('#icl_tm_get_translations').next().fadeOut(); + } +} + +/* MC Setup */ + +function iclTmSelectAllJobs(){ + if(jQuery(this).attr('checked')){ + jQuery('#icl-translation-jobs :checkbox').attr('checked', 'checked'); + jQuery('#icl-tm-jobs-cancel-but').removeAttr('disabled'); + }else{ + jQuery('#icl-translation-jobs :checkbox').removeAttr('checked'); + jQuery('#icl-tm-jobs-cancel-but').attr('disabled', 'disabled'); + } +} + +function iclTmCancelJobs(){ + var tm_prompt = jQuery('#icl-tm-jobs-cancel-msg').html(); + var in_progress = jQuery('tr.icl_tm_status_2 :checkbox:checked').length; + if(in_progress > 0){ + tm_prompt += "\n" + jQuery('#icl-tm-jobs-cancel-msg-2').html().replace(/%s/g, in_progress); + jQuery('tr.icl_tm_status_2 :checkbox:checked').parent().parent().addClass('icl_tm_row_highlight'); + } + + if(!confirm(tm_prompt)){ + jQuery('#icl-tm-jobs-form input[name=icl_tm_action]').val('jobs_filter'); + jQuery('tr.icl_tm_row_highlight').removeClass('icl_tm_row_highlight'); + return false; + } + jQuery('#icl-tm-jobs-form input[name=icl_tm_action]').val('cancel_jobs'); + + return true; +} + +function iclTmUpdateJobsSelection(){ + if(jQuery('#icl-translation-jobs :checkbox:checked').length > 0){ + jQuery('#icl-tm-jobs-cancel-but').removeAttr('disabled'); + + if(jQuery('#icl-translation-jobs td :checkbox:checked').length == jQuery('#icl-translation-jobs td :checkbox').length){ + jQuery('#icl-translation-jobs th :checkbox').attr('checked', 'checked'); + }else{ + jQuery('#icl-translation-jobs th :checkbox').removeAttr('checked'); + } + + }else{ + jQuery('#icl-tm-jobs-cancel-but').attr('disabled', 'disabled'); + } +} + +function iclTmPopulateParentFilter(){ + var val = jQuery('#icl_parent_filter_control').val(); + + jQuery('#icl_parent_filter_drop').html(icl_ajxloaderimg); + + if(val){ + jQuery.ajax({ + type: "POST", + url: ajaxurl, + dataType: 'json', + data: 'action=icl_tm_parent_filter&type='+val+'&lang=' + jQuery('form[name="translation-dashboard-filter"]').find('select[name="filter[from_lang]"]').val()+'&parent_id='+jQuery('#icl_tm_parent_id').val()+'&parent_all='+jQuery('#icl_tm_parent_all').val(), + success: function(msg){ + jQuery('#icl_parent_filter_drop').html(msg.html); + + //select page + $('#filter[parent_id]').val(jQuery('#icl_tm_parent_id').val()); + } + }); + }else{ + jQuery('#icl_parent_filter_drop').html(''); + } +} diff --git a/wp-content/plugins/wpusercountry/flags/Thumbs.db b/wp-content/plugins/wpusercountry/flags/Thumbs.db new file mode 100644 index 0000000..c35bab5 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/Thumbs.db differ diff --git a/wp-content/plugins/wpusercountry/flags/ad.gif b/wp-content/plugins/wpusercountry/flags/ad.gif new file mode 100644 index 0000000..57b4997 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ad.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ae.gif b/wp-content/plugins/wpusercountry/flags/ae.gif new file mode 100644 index 0000000..78d15b6 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ae.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/af.gif b/wp-content/plugins/wpusercountry/flags/af.gif new file mode 100644 index 0000000..9889408 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/af.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ag.gif b/wp-content/plugins/wpusercountry/flags/ag.gif new file mode 100644 index 0000000..48f8e7b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ag.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ai.gif b/wp-content/plugins/wpusercountry/flags/ai.gif new file mode 100644 index 0000000..1cbc579 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ai.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/al.gif b/wp-content/plugins/wpusercountry/flags/al.gif new file mode 100644 index 0000000..c44fe0a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/al.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/am.gif b/wp-content/plugins/wpusercountry/flags/am.gif new file mode 100644 index 0000000..2915e30 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/am.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/an.gif b/wp-content/plugins/wpusercountry/flags/an.gif new file mode 100644 index 0000000..cb570c6 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/an.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ao.gif b/wp-content/plugins/wpusercountry/flags/ao.gif new file mode 100644 index 0000000..3011b19 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ao.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ar.gif b/wp-content/plugins/wpusercountry/flags/ar.gif new file mode 100644 index 0000000..a9f71f7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ar.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/as.gif b/wp-content/plugins/wpusercountry/flags/as.gif new file mode 100644 index 0000000..d776ec2 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/as.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/at.gif b/wp-content/plugins/wpusercountry/flags/at.gif new file mode 100644 index 0000000..87e1217 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/at.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/au.gif b/wp-content/plugins/wpusercountry/flags/au.gif new file mode 100644 index 0000000..5269c6a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/au.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/aw.gif b/wp-content/plugins/wpusercountry/flags/aw.gif new file mode 100644 index 0000000..27fdb4d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/aw.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ax.gif b/wp-content/plugins/wpusercountry/flags/ax.gif new file mode 100644 index 0000000..0ceb684 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ax.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/az.gif b/wp-content/plugins/wpusercountry/flags/az.gif new file mode 100644 index 0000000..d771618 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/az.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ba.gif b/wp-content/plugins/wpusercountry/flags/ba.gif new file mode 100644 index 0000000..9bf5f0a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ba.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bb.gif b/wp-content/plugins/wpusercountry/flags/bb.gif new file mode 100644 index 0000000..b7d08e5 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bb.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bd.gif b/wp-content/plugins/wpusercountry/flags/bd.gif new file mode 100644 index 0000000..0fd27ec Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bd.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/be.gif b/wp-content/plugins/wpusercountry/flags/be.gif new file mode 100644 index 0000000..ae09bfb Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/be.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bf.gif b/wp-content/plugins/wpusercountry/flags/bf.gif new file mode 100644 index 0000000..9d6772c Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bf.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bg.gif b/wp-content/plugins/wpusercountry/flags/bg.gif new file mode 100644 index 0000000..11cf8ff Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bg.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bh.gif b/wp-content/plugins/wpusercountry/flags/bh.gif new file mode 100644 index 0000000..56aa72b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bh.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bi.gif b/wp-content/plugins/wpusercountry/flags/bi.gif new file mode 100644 index 0000000..6e2cbe1 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bi.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bj.gif b/wp-content/plugins/wpusercountry/flags/bj.gif new file mode 100644 index 0000000..e676116 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bj.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bm.gif b/wp-content/plugins/wpusercountry/flags/bm.gif new file mode 100644 index 0000000..9feb87b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bn.gif b/wp-content/plugins/wpusercountry/flags/bn.gif new file mode 100644 index 0000000..b7b6b0f Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bn.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bo.gif b/wp-content/plugins/wpusercountry/flags/bo.gif new file mode 100644 index 0000000..4844f85 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bo.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/br.gif b/wp-content/plugins/wpusercountry/flags/br.gif new file mode 100644 index 0000000..8c86616 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/br.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bs.gif b/wp-content/plugins/wpusercountry/flags/bs.gif new file mode 100644 index 0000000..c0a741e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bs.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bt.gif b/wp-content/plugins/wpusercountry/flags/bt.gif new file mode 100644 index 0000000..abe2f3c Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bt.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bv.gif b/wp-content/plugins/wpusercountry/flags/bv.gif new file mode 100644 index 0000000..6202d1f Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bv.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bw.gif b/wp-content/plugins/wpusercountry/flags/bw.gif new file mode 100644 index 0000000..986ab63 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bw.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/by.gif b/wp-content/plugins/wpusercountry/flags/by.gif new file mode 100644 index 0000000..43ffcd4 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/by.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/bz.gif b/wp-content/plugins/wpusercountry/flags/bz.gif new file mode 100644 index 0000000..791737f Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/bz.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ca.gif b/wp-content/plugins/wpusercountry/flags/ca.gif new file mode 100644 index 0000000..457d966 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ca.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cc.gif b/wp-content/plugins/wpusercountry/flags/cc.gif new file mode 100644 index 0000000..3f78327 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cc.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cd.gif b/wp-content/plugins/wpusercountry/flags/cd.gif new file mode 100644 index 0000000..1afa9d4 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cd.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cf.gif b/wp-content/plugins/wpusercountry/flags/cf.gif new file mode 100644 index 0000000..35787ca Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cf.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cg.gif b/wp-content/plugins/wpusercountry/flags/cg.gif new file mode 100644 index 0000000..e0a62a5 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cg.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ch.gif b/wp-content/plugins/wpusercountry/flags/ch.gif new file mode 100644 index 0000000..d5c0e5b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ch.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ci.gif b/wp-content/plugins/wpusercountry/flags/ci.gif new file mode 100644 index 0000000..844120a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ci.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ck.gif b/wp-content/plugins/wpusercountry/flags/ck.gif new file mode 100644 index 0000000..2edb739 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ck.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cl.gif b/wp-content/plugins/wpusercountry/flags/cl.gif new file mode 100644 index 0000000..cbc370e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cl.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cm.gif b/wp-content/plugins/wpusercountry/flags/cm.gif new file mode 100644 index 0000000..1fb102b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cn.gif b/wp-content/plugins/wpusercountry/flags/cn.gif new file mode 100644 index 0000000..b052530 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cn.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/co.gif b/wp-content/plugins/wpusercountry/flags/co.gif new file mode 100644 index 0000000..d0e15ca Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/co.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cr.gif b/wp-content/plugins/wpusercountry/flags/cr.gif new file mode 100644 index 0000000..0728dd6 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cs.gif b/wp-content/plugins/wpusercountry/flags/cs.gif new file mode 100644 index 0000000..101db64 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cs.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cu.gif b/wp-content/plugins/wpusercountry/flags/cu.gif new file mode 100644 index 0000000..291255c Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cu.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cv.gif b/wp-content/plugins/wpusercountry/flags/cv.gif new file mode 100644 index 0000000..43c6c6c Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cv.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cx.gif b/wp-content/plugins/wpusercountry/flags/cx.gif new file mode 100644 index 0000000..a5b4308 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cx.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cy.gif b/wp-content/plugins/wpusercountry/flags/cy.gif new file mode 100644 index 0000000..35c661e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cy.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/cz.gif b/wp-content/plugins/wpusercountry/flags/cz.gif new file mode 100644 index 0000000..0a605e5 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/cz.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/de.gif b/wp-content/plugins/wpusercountry/flags/de.gif new file mode 100644 index 0000000..75728dd Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/de.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/dj.gif b/wp-content/plugins/wpusercountry/flags/dj.gif new file mode 100644 index 0000000..212406d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/dj.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/dk.gif b/wp-content/plugins/wpusercountry/flags/dk.gif new file mode 100644 index 0000000..03e75bd Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/dk.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/dm.gif b/wp-content/plugins/wpusercountry/flags/dm.gif new file mode 100644 index 0000000..2f87f3c Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/dm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/do.gif b/wp-content/plugins/wpusercountry/flags/do.gif new file mode 100644 index 0000000..f7d0bad Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/do.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/dz.gif b/wp-content/plugins/wpusercountry/flags/dz.gif new file mode 100644 index 0000000..ed580a7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/dz.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ec.gif b/wp-content/plugins/wpusercountry/flags/ec.gif new file mode 100644 index 0000000..9e41e0e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ec.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ee.gif b/wp-content/plugins/wpusercountry/flags/ee.gif new file mode 100644 index 0000000..9397a2d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ee.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/eg.gif b/wp-content/plugins/wpusercountry/flags/eg.gif new file mode 100644 index 0000000..6857c7d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/eg.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/eh.gif b/wp-content/plugins/wpusercountry/flags/eh.gif new file mode 100644 index 0000000..dd0391c Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/eh.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/england.gif b/wp-content/plugins/wpusercountry/flags/england.gif new file mode 100644 index 0000000..933a4f0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/england.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/er.gif b/wp-content/plugins/wpusercountry/flags/er.gif new file mode 100644 index 0000000..3d4d612 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/er.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/es.gif b/wp-content/plugins/wpusercountry/flags/es.gif new file mode 100644 index 0000000..c27d65e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/es.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/et.gif b/wp-content/plugins/wpusercountry/flags/et.gif new file mode 100644 index 0000000..f77995d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/et.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/fam.gif b/wp-content/plugins/wpusercountry/flags/fam.gif new file mode 100644 index 0000000..7d52885 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/fam.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/fi.gif b/wp-content/plugins/wpusercountry/flags/fi.gif new file mode 100644 index 0000000..8d3a191 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/fi.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/fj.gif b/wp-content/plugins/wpusercountry/flags/fj.gif new file mode 100644 index 0000000..486151c Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/fj.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/fk.gif b/wp-content/plugins/wpusercountry/flags/fk.gif new file mode 100644 index 0000000..37b5ecf Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/fk.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/fm.gif b/wp-content/plugins/wpusercountry/flags/fm.gif new file mode 100644 index 0000000..7f8723b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/fm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/fo.gif b/wp-content/plugins/wpusercountry/flags/fo.gif new file mode 100644 index 0000000..4a90fc0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/fo.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/fr.gif b/wp-content/plugins/wpusercountry/flags/fr.gif new file mode 100644 index 0000000..43d0b80 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/fr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ga.gif b/wp-content/plugins/wpusercountry/flags/ga.gif new file mode 100644 index 0000000..23fd5f0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ga.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gb.gif b/wp-content/plugins/wpusercountry/flags/gb.gif new file mode 100644 index 0000000..3e16ff8 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gb.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gd.gif b/wp-content/plugins/wpusercountry/flags/gd.gif new file mode 100644 index 0000000..25ea312 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gd.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ge.gif b/wp-content/plugins/wpusercountry/flags/ge.gif new file mode 100644 index 0000000..faa7f12 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ge.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gh.gif b/wp-content/plugins/wpusercountry/flags/gh.gif new file mode 100644 index 0000000..273fb7d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gh.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gi.gif b/wp-content/plugins/wpusercountry/flags/gi.gif new file mode 100644 index 0000000..7b1984b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gi.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gl.gif b/wp-content/plugins/wpusercountry/flags/gl.gif new file mode 100644 index 0000000..ef445be Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gl.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gm.gif b/wp-content/plugins/wpusercountry/flags/gm.gif new file mode 100644 index 0000000..6847c5a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gn.gif b/wp-content/plugins/wpusercountry/flags/gn.gif new file mode 100644 index 0000000..a982ac6 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gn.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gp.gif b/wp-content/plugins/wpusercountry/flags/gp.gif new file mode 100644 index 0000000..31166db Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gp.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gq.gif b/wp-content/plugins/wpusercountry/flags/gq.gif new file mode 100644 index 0000000..8b4e0cc Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gq.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gr.gif b/wp-content/plugins/wpusercountry/flags/gr.gif new file mode 100644 index 0000000..b4c8c04 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gs.gif b/wp-content/plugins/wpusercountry/flags/gs.gif new file mode 100644 index 0000000..ccc96ec Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gs.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gt.gif b/wp-content/plugins/wpusercountry/flags/gt.gif new file mode 100644 index 0000000..7e94d1d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gt.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gu.gif b/wp-content/plugins/wpusercountry/flags/gu.gif new file mode 100644 index 0000000..eafef68 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gu.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gw.gif b/wp-content/plugins/wpusercountry/flags/gw.gif new file mode 100644 index 0000000..55f7571 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gw.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/gy.gif b/wp-content/plugins/wpusercountry/flags/gy.gif new file mode 100644 index 0000000..1cb4cd7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/gy.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/hk.gif b/wp-content/plugins/wpusercountry/flags/hk.gif new file mode 100644 index 0000000..798af96 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/hk.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/hn.gif b/wp-content/plugins/wpusercountry/flags/hn.gif new file mode 100644 index 0000000..6c4ffe8 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/hn.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/hr.gif b/wp-content/plugins/wpusercountry/flags/hr.gif new file mode 100644 index 0000000..557c660 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/hr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ht.gif b/wp-content/plugins/wpusercountry/flags/ht.gif new file mode 100644 index 0000000..059604a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ht.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/hu.gif b/wp-content/plugins/wpusercountry/flags/hu.gif new file mode 100644 index 0000000..6142d86 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/hu.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/id.gif b/wp-content/plugins/wpusercountry/flags/id.gif new file mode 100644 index 0000000..865161b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/id.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ie.gif b/wp-content/plugins/wpusercountry/flags/ie.gif new file mode 100644 index 0000000..506ad28 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ie.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/il.gif b/wp-content/plugins/wpusercountry/flags/il.gif new file mode 100644 index 0000000..c8483ae Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/il.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/in.gif b/wp-content/plugins/wpusercountry/flags/in.gif new file mode 100644 index 0000000..1cd8027 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/in.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/io.gif b/wp-content/plugins/wpusercountry/flags/io.gif new file mode 100644 index 0000000..de7e7ab Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/io.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/iq.gif b/wp-content/plugins/wpusercountry/flags/iq.gif new file mode 100644 index 0000000..c34fe3c Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/iq.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ir.gif b/wp-content/plugins/wpusercountry/flags/ir.gif new file mode 100644 index 0000000..156040f Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ir.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/is.gif b/wp-content/plugins/wpusercountry/flags/is.gif new file mode 100644 index 0000000..b42502d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/is.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/it.gif b/wp-content/plugins/wpusercountry/flags/it.gif new file mode 100644 index 0000000..d79e90e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/it.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/jm.gif b/wp-content/plugins/wpusercountry/flags/jm.gif new file mode 100644 index 0000000..0bed67c Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/jm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/jo.gif b/wp-content/plugins/wpusercountry/flags/jo.gif new file mode 100644 index 0000000..03daf8a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/jo.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/jp.gif b/wp-content/plugins/wpusercountry/flags/jp.gif new file mode 100644 index 0000000..444c1d0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/jp.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ke.gif b/wp-content/plugins/wpusercountry/flags/ke.gif new file mode 100644 index 0000000..c2b5d45 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ke.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/kg.gif b/wp-content/plugins/wpusercountry/flags/kg.gif new file mode 100644 index 0000000..72a4d41 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/kg.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/kh.gif b/wp-content/plugins/wpusercountry/flags/kh.gif new file mode 100644 index 0000000..30a1831 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/kh.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ki.gif b/wp-content/plugins/wpusercountry/flags/ki.gif new file mode 100644 index 0000000..4a0751a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ki.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/km.gif b/wp-content/plugins/wpusercountry/flags/km.gif new file mode 100644 index 0000000..5859595 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/km.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/kn.gif b/wp-content/plugins/wpusercountry/flags/kn.gif new file mode 100644 index 0000000..bb9cc34 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/kn.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/kp.gif b/wp-content/plugins/wpusercountry/flags/kp.gif new file mode 100644 index 0000000..6e0ca09 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/kp.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/kr.gif b/wp-content/plugins/wpusercountry/flags/kr.gif new file mode 100644 index 0000000..1cddbe7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/kr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/kw.gif b/wp-content/plugins/wpusercountry/flags/kw.gif new file mode 100644 index 0000000..1efc734 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/kw.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ky.gif b/wp-content/plugins/wpusercountry/flags/ky.gif new file mode 100644 index 0000000..d3d02ee Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ky.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/kz.gif b/wp-content/plugins/wpusercountry/flags/kz.gif new file mode 100644 index 0000000..24baebe Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/kz.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/la.gif b/wp-content/plugins/wpusercountry/flags/la.gif new file mode 100644 index 0000000..d14cf4d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/la.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/lb.gif b/wp-content/plugins/wpusercountry/flags/lb.gif new file mode 100644 index 0000000..003d83a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/lb.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/lc.gif b/wp-content/plugins/wpusercountry/flags/lc.gif new file mode 100644 index 0000000..d06b955 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/lc.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/li.gif b/wp-content/plugins/wpusercountry/flags/li.gif new file mode 100644 index 0000000..713c58e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/li.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/lk.gif b/wp-content/plugins/wpusercountry/flags/lk.gif new file mode 100644 index 0000000..1b3ee7f Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/lk.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/lr.gif b/wp-content/plugins/wpusercountry/flags/lr.gif new file mode 100644 index 0000000..435af9e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/lr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ls.gif b/wp-content/plugins/wpusercountry/flags/ls.gif new file mode 100644 index 0000000..427ae95 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ls.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/lt.gif b/wp-content/plugins/wpusercountry/flags/lt.gif new file mode 100644 index 0000000..dee9c60 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/lt.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/lu.gif b/wp-content/plugins/wpusercountry/flags/lu.gif new file mode 100644 index 0000000..7d7293e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/lu.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/lv.gif b/wp-content/plugins/wpusercountry/flags/lv.gif new file mode 100644 index 0000000..17e71b7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/lv.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ly.gif b/wp-content/plugins/wpusercountry/flags/ly.gif new file mode 100644 index 0000000..a654c30 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ly.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ma.gif b/wp-content/plugins/wpusercountry/flags/ma.gif new file mode 100644 index 0000000..fc78411 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ma.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mc.gif b/wp-content/plugins/wpusercountry/flags/mc.gif new file mode 100644 index 0000000..02a7c8e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mc.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/md.gif b/wp-content/plugins/wpusercountry/flags/md.gif new file mode 100644 index 0000000..e4b8a7e Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/md.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mg.gif b/wp-content/plugins/wpusercountry/flags/mg.gif new file mode 100644 index 0000000..a91b577 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mg.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mh.gif b/wp-content/plugins/wpusercountry/flags/mh.gif new file mode 100644 index 0000000..92f5f48 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mh.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mk.gif b/wp-content/plugins/wpusercountry/flags/mk.gif new file mode 100644 index 0000000..7aeb831 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mk.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ml.gif b/wp-content/plugins/wpusercountry/flags/ml.gif new file mode 100644 index 0000000..53d6f49 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ml.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mm.gif b/wp-content/plugins/wpusercountry/flags/mm.gif new file mode 100644 index 0000000..9e0a275 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mn.gif b/wp-content/plugins/wpusercountry/flags/mn.gif new file mode 100644 index 0000000..dff8ea5 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mn.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mo.gif b/wp-content/plugins/wpusercountry/flags/mo.gif new file mode 100644 index 0000000..66cf5b4 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mo.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mp.gif b/wp-content/plugins/wpusercountry/flags/mp.gif new file mode 100644 index 0000000..73b7147 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mp.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mq.gif b/wp-content/plugins/wpusercountry/flags/mq.gif new file mode 100644 index 0000000..570bc5d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mq.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mr.gif b/wp-content/plugins/wpusercountry/flags/mr.gif new file mode 100644 index 0000000..f52fcf0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ms.gif b/wp-content/plugins/wpusercountry/flags/ms.gif new file mode 100644 index 0000000..5e5a67a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ms.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mt.gif b/wp-content/plugins/wpusercountry/flags/mt.gif new file mode 100644 index 0000000..45c709f Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mt.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mu.gif b/wp-content/plugins/wpusercountry/flags/mu.gif new file mode 100644 index 0000000..081ab45 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mu.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mv.gif b/wp-content/plugins/wpusercountry/flags/mv.gif new file mode 100644 index 0000000..46b6387 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mv.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mw.gif b/wp-content/plugins/wpusercountry/flags/mw.gif new file mode 100644 index 0000000..ad045a0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mw.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mx.gif b/wp-content/plugins/wpusercountry/flags/mx.gif new file mode 100644 index 0000000..ddc75d0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mx.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/my.gif b/wp-content/plugins/wpusercountry/flags/my.gif new file mode 100644 index 0000000..fc7d523 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/my.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/mz.gif b/wp-content/plugins/wpusercountry/flags/mz.gif new file mode 100644 index 0000000..7d63508 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/mz.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/na.gif b/wp-content/plugins/wpusercountry/flags/na.gif new file mode 100644 index 0000000..c0babe7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/na.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/nc.gif b/wp-content/plugins/wpusercountry/flags/nc.gif new file mode 100644 index 0000000..b1e91b9 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/nc.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ne.gif b/wp-content/plugins/wpusercountry/flags/ne.gif new file mode 100644 index 0000000..ff4eaf0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ne.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/nf.gif b/wp-content/plugins/wpusercountry/flags/nf.gif new file mode 100644 index 0000000..c83424c Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/nf.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ng.gif b/wp-content/plugins/wpusercountry/flags/ng.gif new file mode 100644 index 0000000..bdde7cb Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ng.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ni.gif b/wp-content/plugins/wpusercountry/flags/ni.gif new file mode 100644 index 0000000..d05894d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ni.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/nl.gif b/wp-content/plugins/wpusercountry/flags/nl.gif new file mode 100644 index 0000000..c1c8f46 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/nl.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/no.gif b/wp-content/plugins/wpusercountry/flags/no.gif new file mode 100644 index 0000000..6202d1f Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/no.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/np.gif b/wp-content/plugins/wpusercountry/flags/np.gif new file mode 100644 index 0000000..1096893 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/np.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/nr.gif b/wp-content/plugins/wpusercountry/flags/nr.gif new file mode 100644 index 0000000..2e4c0c5 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/nr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/nu.gif b/wp-content/plugins/wpusercountry/flags/nu.gif new file mode 100644 index 0000000..618210a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/nu.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/nz.gif b/wp-content/plugins/wpusercountry/flags/nz.gif new file mode 100644 index 0000000..028a5dc Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/nz.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/om.gif b/wp-content/plugins/wpusercountry/flags/om.gif new file mode 100644 index 0000000..2b8c775 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/om.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pa.gif b/wp-content/plugins/wpusercountry/flags/pa.gif new file mode 100644 index 0000000..d518b2f Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pa.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pe.gif b/wp-content/plugins/wpusercountry/flags/pe.gif new file mode 100644 index 0000000..3bc7639 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pe.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pf.gif b/wp-content/plugins/wpusercountry/flags/pf.gif new file mode 100644 index 0000000..849297a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pf.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pg.gif b/wp-content/plugins/wpusercountry/flags/pg.gif new file mode 100644 index 0000000..2d20b07 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pg.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ph.gif b/wp-content/plugins/wpusercountry/flags/ph.gif new file mode 100644 index 0000000..12b380a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ph.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pk.gif b/wp-content/plugins/wpusercountry/flags/pk.gif new file mode 100644 index 0000000..f3f62c2 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pk.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pl.gif b/wp-content/plugins/wpusercountry/flags/pl.gif new file mode 100644 index 0000000..bf10646 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pl.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pm.gif b/wp-content/plugins/wpusercountry/flags/pm.gif new file mode 100644 index 0000000..99bf6fd Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pn.gif b/wp-content/plugins/wpusercountry/flags/pn.gif new file mode 100644 index 0000000..4bc86a1 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pn.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pr.gif b/wp-content/plugins/wpusercountry/flags/pr.gif new file mode 100644 index 0000000..6d5d589 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ps.gif b/wp-content/plugins/wpusercountry/flags/ps.gif new file mode 100644 index 0000000..6afa3b7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ps.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pt.gif b/wp-content/plugins/wpusercountry/flags/pt.gif new file mode 100644 index 0000000..e735f74 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pt.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/pw.gif b/wp-content/plugins/wpusercountry/flags/pw.gif new file mode 100644 index 0000000..5854510 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/pw.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/py.gif b/wp-content/plugins/wpusercountry/flags/py.gif new file mode 100644 index 0000000..f2e66af Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/py.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/qa.gif b/wp-content/plugins/wpusercountry/flags/qa.gif new file mode 100644 index 0000000..2e843ff Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/qa.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ro.gif b/wp-content/plugins/wpusercountry/flags/ro.gif new file mode 100644 index 0000000..f5d5f12 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ro.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ru.gif b/wp-content/plugins/wpusercountry/flags/ru.gif new file mode 100644 index 0000000..b525c46 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ru.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/rw.gif b/wp-content/plugins/wpusercountry/flags/rw.gif new file mode 100644 index 0000000..0d095f7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/rw.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sa.gif b/wp-content/plugins/wpusercountry/flags/sa.gif new file mode 100644 index 0000000..179961b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sa.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sb.gif b/wp-content/plugins/wpusercountry/flags/sb.gif new file mode 100644 index 0000000..8f5ff83 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sb.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sc.gif b/wp-content/plugins/wpusercountry/flags/sc.gif new file mode 100644 index 0000000..31b4767 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sc.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/scotland.gif b/wp-content/plugins/wpusercountry/flags/scotland.gif new file mode 100644 index 0000000..03f3f1d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/scotland.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sd.gif b/wp-content/plugins/wpusercountry/flags/sd.gif new file mode 100644 index 0000000..53ae214 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sd.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/se.gif b/wp-content/plugins/wpusercountry/flags/se.gif new file mode 100644 index 0000000..80f6285 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/se.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sg.gif b/wp-content/plugins/wpusercountry/flags/sg.gif new file mode 100644 index 0000000..5663d39 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sg.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sh.gif b/wp-content/plugins/wpusercountry/flags/sh.gif new file mode 100644 index 0000000..dcc7f3b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sh.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/si.gif b/wp-content/plugins/wpusercountry/flags/si.gif new file mode 100644 index 0000000..23852b5 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/si.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sk.gif b/wp-content/plugins/wpusercountry/flags/sk.gif new file mode 100644 index 0000000..1b3f22b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sk.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sl.gif b/wp-content/plugins/wpusercountry/flags/sl.gif new file mode 100644 index 0000000..f0f3492 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sl.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sm.gif b/wp-content/plugins/wpusercountry/flags/sm.gif new file mode 100644 index 0000000..04d98de Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sn.gif b/wp-content/plugins/wpusercountry/flags/sn.gif new file mode 100644 index 0000000..6dac870 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sn.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/so.gif b/wp-content/plugins/wpusercountry/flags/so.gif new file mode 100644 index 0000000..f196169 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/so.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sr.gif b/wp-content/plugins/wpusercountry/flags/sr.gif new file mode 100644 index 0000000..0f7499a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/st.gif b/wp-content/plugins/wpusercountry/flags/st.gif new file mode 100644 index 0000000..4f1e6e0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/st.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sv.gif b/wp-content/plugins/wpusercountry/flags/sv.gif new file mode 100644 index 0000000..2d7b159 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sv.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sy.gif b/wp-content/plugins/wpusercountry/flags/sy.gif new file mode 100644 index 0000000..dc8bd50 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sy.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/sz.gif b/wp-content/plugins/wpusercountry/flags/sz.gif new file mode 100644 index 0000000..f37aaf8 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/sz.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tc.gif b/wp-content/plugins/wpusercountry/flags/tc.gif new file mode 100644 index 0000000..11a8c23 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tc.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/td.gif b/wp-content/plugins/wpusercountry/flags/td.gif new file mode 100644 index 0000000..7aa8a10 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/td.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tf.gif b/wp-content/plugins/wpusercountry/flags/tf.gif new file mode 100644 index 0000000..51a4325 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tf.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tg.gif b/wp-content/plugins/wpusercountry/flags/tg.gif new file mode 100644 index 0000000..ca6b4e7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tg.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/th.gif b/wp-content/plugins/wpusercountry/flags/th.gif new file mode 100644 index 0000000..0130792 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/th.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tj.gif b/wp-content/plugins/wpusercountry/flags/tj.gif new file mode 100644 index 0000000..2fe38d4 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tj.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tk.gif b/wp-content/plugins/wpusercountry/flags/tk.gif new file mode 100644 index 0000000..3d3a727 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tk.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tl.gif b/wp-content/plugins/wpusercountry/flags/tl.gif new file mode 100644 index 0000000..df22d58 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tl.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tm.gif b/wp-content/plugins/wpusercountry/flags/tm.gif new file mode 100644 index 0000000..36d0994 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tn.gif b/wp-content/plugins/wpusercountry/flags/tn.gif new file mode 100644 index 0000000..917d428 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tn.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/to.gif b/wp-content/plugins/wpusercountry/flags/to.gif new file mode 100644 index 0000000..d7ed4d1 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/to.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tr.gif b/wp-content/plugins/wpusercountry/flags/tr.gif new file mode 100644 index 0000000..e407d55 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tr.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tt.gif b/wp-content/plugins/wpusercountry/flags/tt.gif new file mode 100644 index 0000000..47d3b80 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tt.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tv.gif b/wp-content/plugins/wpusercountry/flags/tv.gif new file mode 100644 index 0000000..3c33827 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tv.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tw.gif b/wp-content/plugins/wpusercountry/flags/tw.gif new file mode 100644 index 0000000..cacfd9b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tw.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/tz.gif b/wp-content/plugins/wpusercountry/flags/tz.gif new file mode 100644 index 0000000..82b52ca Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/tz.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ua.gif b/wp-content/plugins/wpusercountry/flags/ua.gif new file mode 100644 index 0000000..5d6cd83 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ua.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ug.gif b/wp-content/plugins/wpusercountry/flags/ug.gif new file mode 100644 index 0000000..58b731a Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ug.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/um.gif b/wp-content/plugins/wpusercountry/flags/um.gif new file mode 100644 index 0000000..3b4c848 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/um.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/us.gif b/wp-content/plugins/wpusercountry/flags/us.gif new file mode 100644 index 0000000..8f198f7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/us.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/uy.gif b/wp-content/plugins/wpusercountry/flags/uy.gif new file mode 100644 index 0000000..12848c7 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/uy.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/uz.gif b/wp-content/plugins/wpusercountry/flags/uz.gif new file mode 100644 index 0000000..dc9daec Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/uz.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/va.gif b/wp-content/plugins/wpusercountry/flags/va.gif new file mode 100644 index 0000000..2bd7446 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/va.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/vc.gif b/wp-content/plugins/wpusercountry/flags/vc.gif new file mode 100644 index 0000000..4821381 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/vc.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ve.gif b/wp-content/plugins/wpusercountry/flags/ve.gif new file mode 100644 index 0000000..19ce6c1 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ve.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/vg.gif b/wp-content/plugins/wpusercountry/flags/vg.gif new file mode 100644 index 0000000..1fc0f96 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/vg.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/vi.gif b/wp-content/plugins/wpusercountry/flags/vi.gif new file mode 100644 index 0000000..66f9e74 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/vi.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/vn.gif b/wp-content/plugins/wpusercountry/flags/vn.gif new file mode 100644 index 0000000..f1e20c9 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/vn.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/vu.gif b/wp-content/plugins/wpusercountry/flags/vu.gif new file mode 100644 index 0000000..8a8b2b0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/vu.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/wales.gif b/wp-content/plugins/wpusercountry/flags/wales.gif new file mode 100644 index 0000000..901d175 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/wales.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/wf.gif b/wp-content/plugins/wpusercountry/flags/wf.gif new file mode 100644 index 0000000..eaa954b Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/wf.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ws.gif b/wp-content/plugins/wpusercountry/flags/ws.gif new file mode 100644 index 0000000..a51f939 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ws.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/ye.gif b/wp-content/plugins/wpusercountry/flags/ye.gif new file mode 100644 index 0000000..7b0183d Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/ye.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/yt.gif b/wp-content/plugins/wpusercountry/flags/yt.gif new file mode 100644 index 0000000..a2267c0 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/yt.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/za.gif b/wp-content/plugins/wpusercountry/flags/za.gif new file mode 100644 index 0000000..ede5258 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/za.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/zm.gif b/wp-content/plugins/wpusercountry/flags/zm.gif new file mode 100644 index 0000000..b2851d2 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/zm.gif differ diff --git a/wp-content/plugins/wpusercountry/flags/zw.gif b/wp-content/plugins/wpusercountry/flags/zw.gif new file mode 100644 index 0000000..02901f6 Binary files /dev/null and b/wp-content/plugins/wpusercountry/flags/zw.gif differ diff --git a/wp-content/plugins/wpusercountry/readme.txt b/wp-content/plugins/wpusercountry/readme.txt new file mode 100644 index 0000000..44e8d9a --- /dev/null +++ b/wp-content/plugins/wpusercountry/readme.txt @@ -0,0 +1,58 @@ +=== WP User Country === +Contributors: Adrian Lazariuc +Donate link: None +Tags: wordpress profile, user profile, profile, field, username, user, country, flag +Requires at least: 2.8 +Tested up to: 2.9-rare +Stable tag: 1.1 + +Adds an additional country select field to the user profile page where they can select their country name and also see their country flag. + +== Description == + +WP User Country is a simple WordPress plugin there gives you a country select option in your profile admin to be able to show your country name or flag into your profile. +It does also include a shortcode to allow you to display your country name or flag in posts, pages and text widgets. + + +== Installation == + +Installation Instructions: + +1. Download the plugin and unzip it. +2. Put the wpusercountry folder into the wp-content/plugins/ directory. +3. Go to the Plugins page in your WordPress Administration area and click 'Activate' next to WP User Country. +5. Go to your Profile page and at the bottom of the page is a select field called Country. Select your country there. +6. If you use it inside the loop just add to show the country for that username. +If you use it inside the loop just add to show the country flag for that username. + +If it's outside the loop use for country name where 1 is the User ID +If it's outside the loop use for country flag where 1 is the User ID + + +7. If you want the username to be showed in posts, pages or text widgets then use +[wpusercountry-user] will display the country name without any markup +[wpusercountry-user flag="yes"] will display the .gif flag image + + +== Frequently Asked Questions == + += It don't work - What should I do? = + +First of all, make sure that the plugin is activated. If you add the to your theme file(s) when make sure that you use if + +it's OUTSIDE the loop. + +== Screenshots == + +1. The Profile page +2. How to use shortcodes in posts, pages and text widgets + +== Changelog == += 1.0 = +* Initial Release += 1.1 = +* Adds a Dashboard widget + +== Support == + +Support is provided at http://indeziner.com/wordpress-plugins/wp-user-country/ \ No newline at end of file diff --git a/wp-content/plugins/wpusercountry/screenshot-1.jpg b/wp-content/plugins/wpusercountry/screenshot-1.jpg new file mode 100644 index 0000000..dccef32 Binary files /dev/null and b/wp-content/plugins/wpusercountry/screenshot-1.jpg differ diff --git a/wp-content/plugins/wpusercountry/screenshot-2.jpg b/wp-content/plugins/wpusercountry/screenshot-2.jpg new file mode 100644 index 0000000..222d212 Binary files /dev/null and b/wp-content/plugins/wpusercountry/screenshot-2.jpg differ diff --git a/wp-content/plugins/wpusercountry/wpusercountry.php b/wp-content/plugins/wpusercountry/wpusercountry.php new file mode 100644 index 0000000..55156fc --- /dev/null +++ b/wp-content/plugins/wpusercountry/wpusercountry.php @@ -0,0 +1,408 @@ + to show the country for that username. +If you use it inside the loop just add to show the country flag for that username. + +If it's outside the loop use for country name where 1 is the User ID +If it's outside the loop use for country flag where 1 is the User ID + +Shortcode usage: +You can use shortcodes to display your country name or flag in posts, pages and text widgets. +[wpusercountry-user] will display the country name without any markup +[wpusercountry-user flag="yes"] will display the .gif flag image +*/ + +function wpusercountry_install() +{ + + global $wpdb; + $table = $wpdb->prefix."wpuser_countries"; + $structure = "CREATE TABLE `$table`( + `id_country` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(64) NOT NULL DEFAULT '', + `iso_code_2` char(2) NOT NULL DEFAULT '', + `iso_code_3` char(3) NOT NULL DEFAULT '', + PRIMARY KEY (`id_country`), + KEY `IDX_NAME` (`name`));"; + + $wpdb->query($structure); + + // Populate table + $wpdb->query("INSERT INTO `$table` VALUES (1, 'Afghanistan', 'AF', 'AFG'), +(2, 'Albania', 'AL', 'ALB'), +(3, 'Algeria', 'DZ', 'DZA'), +(4, 'American Samoa', 'AS', 'ASM'), +(5, 'Andorra', 'AD', 'AND'), +(6, 'Angola', 'AO', 'AGO'), +(7, 'Anguilla', 'AI', 'AIA'), +(8, 'Antarctica', 'AQ', 'ATA'), +(9, 'Antigua and Barbuda', 'AG', 'ATG'), +(10, 'Argentina', 'AR', 'ARG'), +(11, 'Armenia', 'AM', 'ARM'), +(12, 'Aruba', 'AW', 'ABW'), +(13, 'Australia', 'AU', 'AUS'), +(14, 'Austria', 'AT', 'AUT'), +(15, 'Azerbaijan', 'AZ', 'AZE'), +(16, 'Bahamas', 'BS', 'BHS'), +(17, 'Bahrain', 'BH', 'BHR'), +(18, 'Bangladesh', 'BD', 'BGD'), +(19, 'Barbados', 'BB', 'BRB'), +(20, 'Belarus', 'BY', 'BLR'), +(21, 'Belgium', 'BE', 'BEL'), +(22, 'Belize', 'BZ', 'BLZ'), +(23, 'Benin', 'BJ', 'BEN'), +(24, 'Bermuda', 'BM', 'BMU'), +(25, 'Bhutan', 'BT', 'BTN'), +(26, 'Bolivia', 'BO', 'BOL'), +(27, 'Bosnia and Herzegowina', 'BA', 'BIH'), +(28, 'Botswana', 'BW', 'BWA'), +(29, 'Bouvet Island', 'BV', 'BVT'), +(30, 'Brazil', 'BR', 'BRA'), +(31, 'British Indian Ocean Territory', 'IO', 'IOT'), +(32, 'Brunei Darussalam', 'BN', 'BRN'), +(33, 'Bulgaria', 'BG', 'BGR'), +(34, 'Burkina Faso', 'BF', 'BFA'), +(35, 'Burundi', 'BI', 'BDI'), +(36, 'Cambodia', 'KH', 'KHM'), +(37, 'Cameroon', 'CM', 'CMR'), +(38, 'Canada', 'CA', 'CAN'), +(39, 'Cape Verde', 'CV', 'CPV'), +(40, 'Cayman Islands', 'KY', 'CYM'), +(41, 'Central African Republic', 'CF', 'CAF'), +(42, 'Chad', 'TD', 'TCD'), +(43, 'Chile', 'CL', 'CHL'), +(44, 'China', 'CN', 'CHN'), +(45, 'Christmas Island', 'CX', 'CXR'), +(46, 'Cocos (Keeling) Islands', 'CC', 'CCK'), +(47, 'Colombia', 'CO', 'COL'), +(48, 'Comoros', 'KM', 'COM'), +(49, 'Congo', 'CG', 'COG'), +(50, 'Cook Islands', 'CK', 'COK'), +(51, 'Costa Rica', 'CR', 'CRI'), +(52, 'Cote D\'Ivoire', 'CI', 'CIV'), +(53, 'Croatia', 'HR', 'HRV'), +(54, 'Cuba', 'CU', 'CUB'), +(55, 'Cyprus', 'CY', 'CYP'), +(56, 'Czech Republic', 'CZ', 'CZE'), +(57, 'Denmark', 'DK', 'DNK'), +(58, 'Djibouti', 'DJ', 'DJI'), +(59, 'Dominica', 'DM', 'DMA'), +(60, 'Dominican Republic', 'DO', 'DOM'), +(61, 'East Timor', 'TP', 'TMP'), +(62, 'Ecuador', 'EC', 'ECU'), +(63, 'Egypt', 'EG', 'EGY'), +(64, 'El Salvador', 'SV', 'SLV'), +(65, 'Equatorial Guinea', 'GQ', 'GNQ'), +(66, 'Eritrea', 'ER', 'ERI'), +(67, 'Estonia', 'EE', 'EST'), +(68, 'Ethiopia', 'ET', 'ETH'), +(69, 'Falkland Islands (Malvinas)', 'FK', 'FLK'), +(70, 'Faroe Islands', 'FO', 'FRO'), +(71, 'Fiji', 'FJ', 'FJI'), +(72, 'Finland', 'FI', 'FIN'), +(73, 'France', 'FR', 'FRA'), +(74, 'France, Metropolitan', 'FX', 'FXX'), +(75, 'French Guiana', 'GF', 'GUF'), +(76, 'French Polynesia', 'PF', 'PYF'), +(77, 'French Southern Territories', 'TF', 'ATF'), +(78, 'Gabon', 'GA', 'GAB'), +(79, 'Gambia', 'GM', 'GMB'), +(80, 'Georgia', 'GE', 'GEO'), +(81, 'Germany', 'DE', 'DEU'), +(82, 'Ghana', 'GH', 'GHA'), +(83, 'Gibraltar', 'GI', 'GIB'), +(84, 'Greece', 'GR', 'GRC'), +(85, 'Greenland', 'GL', 'GRL'), +(86, 'Grenada', 'GD', 'GRD'), +(87, 'Guadeloupe', 'GP', 'GLP'), +(88, 'Guam', 'GU', 'GUM'), +(89, 'Guatemala', 'GT', 'GTM'), +(90, 'Guinea', 'GN', 'GIN'), +(91, 'Guinea-bissau', 'GW', 'GNB'), +(92, 'Guyana', 'GY', 'GUY'), +(93, 'Haiti', 'HT', 'HTI'), +(94, 'Heard and Mc Donald Islands', 'HM', 'HMD'), +(95, 'Honduras', 'HN', 'HND'), +(96, 'Hong Kong', 'HK', 'HKG'), +(97, 'Hungary', 'HU', 'HUN'), +(98, 'Iceland', 'IS', 'ISL'), +(99, 'India', 'IN', 'IND'), +(100, 'Indonesia', 'ID', 'IDN'), +(101, 'Iran (Islamic Republic of)', 'IR', 'IRN'), +(102, 'Iraq', 'IQ', 'IRQ'), +(103, 'Ireland', 'IE', 'IRL'), +(104, 'Israel', 'IL', 'ISR'), +(105, 'Italy', 'IT', 'ITA'), +(106, 'Jamaica', 'JM', 'JAM'), +(107, 'Japan', 'JP', 'JPN'), +(108, 'Jordan', 'JO', 'JOR'), +(109, 'Kazakhstan', 'KZ', 'KAZ'), +(110, 'Kenya', 'KE', 'KEN'), +(111, 'Kiribati', 'KI', 'KIR'), +(112, 'Korea, Democratic People\'s Republic of', 'KP', 'PRK'), +(113, 'Korea, Republic of', 'KR', 'KOR'), +(114, 'Kuwait', 'KW', 'KWT'), +(115, 'Kyrgyzstan', 'KG', 'KGZ'), +(116, 'Lao People\'s Democratic Republic', 'LA', 'LAO'), +(117, 'Latvia', 'LV', 'LVA'), +(118, 'Lebanon', 'LB', 'LBN'), +(119, 'Lesotho', 'LS', 'LSO'), +(120, 'Liberia', 'LR', 'LBR'), +(121, 'Libyan Arab Jamahiriya', 'LY', 'LBY'), +(122, 'Liechtenstein', 'LI', 'LIE'), +(123, 'Lithuania', 'LT', 'LTU'), +(124, 'Luxembourg', 'LU', 'LUX'), +(125, 'Macau', 'MO', 'MAC'), +(126, 'Macedonia, The Former Yugoslav Republic of', 'MK', 'MKD'), +(127, 'Madagascar', 'MG', 'MDG'), +(128, 'Malawi', 'MW', 'MWI'), +(129, 'Malaysia', 'MY', 'MYS'), +(130, 'Maldives', 'MV', 'MDV'), +(131, 'Mali', 'ML', 'MLI'), +(132, 'Malta', 'MT', 'MLT'), +(133, 'Marshall Islands', 'MH', 'MHL'), +(134, 'Martinique', 'MQ', 'MTQ'), +(135, 'Mauritania', 'MR', 'MRT'), +(136, 'Mauritius', 'MU', 'MUS'), +(137, 'Mayotte', 'YT', 'MYT'), +(138, 'Mexico', 'MX', 'MEX'), +(139, 'Micronesia, Federated States of', 'FM', 'FSM'), +(140, 'Moldova, Republic of', 'MD', 'MDA'), +(141, 'Monaco', 'MC', 'MCO'), +(142, 'Mongolia', 'MN', 'MNG'), +(143, 'Montserrat', 'MS', 'MSR'), +(144, 'Morocco', 'MA', 'MAR'), +(145, 'Mozambique', 'MZ', 'MOZ'), +(146, 'Myanmar', 'MM', 'MMR'), +(147, 'Namibia', 'NA', 'NAM'), +(148, 'Nauru', 'NR', 'NRU'), +(149, 'Nepal', 'NP', 'NPL'), +(150, 'Netherlands', 'NL', 'NLD'), +(151, 'Netherlands Antilles', 'AN', 'ANT'), +(152, 'New Caledonia', 'NC', 'NCL'), +(153, 'New Zealand', 'NZ', 'NZL'), +(154, 'Nicaragua', 'NI', 'NIC'), +(155, 'Niger', 'NE', 'NER'), +(156, 'Nigeria', 'NG', 'NGA'), +(157, 'Niue', 'NU', 'NIU'), +(158, 'Norfolk Island', 'NF', 'NFK'), +(159, 'Northern Mariana Islands', 'MP', 'MNP'), +(160, 'Norway', 'NO', 'NOR'), +(161, 'Oman', 'OM', 'OMN'), +(162, 'Pakistan', 'PK', 'PAK'), +(163, 'Palau', 'PW', 'PLW'), +(164, 'Panama', 'PA', 'PAN'), +(165, 'Papua New Guinea', 'PG', 'PNG'), +(166, 'Paraguay', 'PY', 'PRY'), +(167, 'Peru', 'PE', 'PER'), +(168, 'Philippines', 'PH', 'PHL'), +(169, 'Pitcairn', 'PN', 'PCN'), +(170, 'Poland', 'PL', 'POL'), +(171, 'Portugal', 'PT', 'PRT'), +(172, 'Puerto Rico', 'PR', 'PRI'), +(173, 'Qatar', 'QA', 'QAT'), +(174, 'Reunion', 'RE', 'REU'), +(175, 'Romania', 'RO', 'ROM'), +(176, 'Russian Federation', 'RU', 'RUS'), +(177, 'Rwanda', 'RW', 'RWA'), +(178, 'Saint Kitts and Nevis', 'KN', 'KNA'), +(179, 'Saint Lucia', 'LC', 'LCA'), +(180, 'Saint Vincent and the Grenadines', 'VC', 'VCT'), +(181, 'Samoa', 'WS', 'WSM'), +(182, 'San Marino', 'SM', 'SMR'), +(183, 'Sao Tome and Principe', 'ST', 'STP'), +(184, 'Saudi Arabia', 'SA', 'SAU'), +(185, 'Senegal', 'SN', 'SEN'), +(186, 'Seychelles', 'SC', 'SYC'), +(187, 'Sierra Leone', 'SL', 'SLE'), +(188, 'Singapore', 'SG', 'SGP'), +(189, 'Slovakia (Slovak Republic)', 'SK', 'SVK'), +(190, 'Slovenia', 'SI', 'SVN'), +(191, 'Solomon Islands', 'SB', 'SLB'), +(192, 'Somalia', 'SO', 'SOM'), +(193, 'South Africa', 'ZA', 'ZAF'), +(194, 'South Georgia and the South Sandwich Islands', 'GS', 'SGS'), +(195, 'Spain', 'ES', 'ESP'), +(196, 'Sri Lanka', 'LK', 'LKA'), +(197, 'St. Helena', 'SH', 'SHN'), +(198, 'St. Pierre and Miquelon', 'PM', 'SPM'), +(199, 'Sudan', 'SD', 'SDN'), +(200, 'Suriname', 'SR', 'SUR'), +(201, 'Svalbard and Jan Mayen Islands', 'SJ', 'SJM'), +(202, 'Swaziland', 'SZ', 'SWZ'), +(203, 'Sweden', 'SE', 'SWE'), +(204, 'Switzerland', 'CH', 'CHE'), +(205, 'Syrian Arab Republic', 'SY', 'SYR'), +(206, 'Taiwan', 'TW', 'TWN'), +(207, 'Tajikistan', 'TJ', 'TJK'), +(208, 'Tanzania, United Republic of', 'TZ', 'TZA'), +(209, 'Thailand', 'TH', 'THA'), +(210, 'Togo', 'TG', 'TGO'), +(211, 'Tokelau', 'TK', 'TKL'), +(212, 'Tonga', 'TO', 'TON'), +(213, 'Trinidad and Tobago', 'TT', 'TTO'), +(214, 'Tunisia', 'TN', 'TUN'), +(215, 'Turkey', 'TR', 'TUR'), +(216, 'Turkmenistan', 'TM', 'TKM'), +(217, 'Turks and Caicos Islands', 'TC', 'TCA'), +(218, 'Tuvalu', 'TV', 'TUV'), +(219, 'Uganda', 'UG', 'UGA'), +(220, 'Ukraine', 'UA', 'UKR'), +(221, 'United Arab Emirates', 'AE', 'ARE'), +(222, 'United Kingdom', 'GB', 'GBR'), +(223, 'United States', 'US', 'USA'), +(224, 'United States Minor Outlying Islands', 'UM', 'UMI'), +(225, 'Uruguay', 'UY', 'URY'), +(226, 'Uzbekistan', 'UZ', 'UZB'), +(227, 'Vanuatu', 'VU', 'VUT'), +(228, 'Vatican City State (Holy See)', 'VA', 'VAT'), +(229, 'Venezuela', 'VE', 'VEN'), +(230, 'Viet Nam', 'VN', 'VNM'), +(231, 'Virgin Islands (British)', 'VG', 'VGB'), +(232, 'Virgin Islands (U.S.)', 'VI', 'VIR'), +(233, 'Wallis and Futuna Islands', 'WF', 'WLF'), +(234, 'Western Sahara', 'EH', 'ESH'), +(235, 'Yemen', 'YE', 'YEM'), +(236, 'Yugoslavia', 'YU', 'YUG'), +(237, 'Zaire', 'ZR', 'ZAR'), +(238, 'Zambia', 'ZM', 'ZMB'), +(239, 'Zimbabwe', 'ZW', 'ZWE');"); +} + +function wpusercountries_form($cid) { + global $wpdb; + $table = $wpdb->prefix."wpuser_countries"; + $countries = $wpdb->get_results("SELECT * FROM $table ORDER BY `name`"); +?> + 0) + {?> + + + + + +

                  Country

                  + + + + +
                  + +
                  + +prefix."wpuser_countries"; + $cflag = $wpdb->get_row("SELECT * FROM $table WHERE id_country = '$cid'"); + $mm=get_bloginfo('home'); + if ( !$cflag )return ""; + else return ''; +} + +function wpusercountry_name($cid) +{ + global $wpdb; + $table = $wpdb->prefix."wpuser_countries"; + $cflag = $wpdb->get_row("SELECT * FROM $table WHERE id_country = '$cid'"); + if ( !$cflag )return ""; + else return $cflag->name; +} + +/*** Create display function ***/ + +function wpusercountry_img_display($userid=0) { + if ($userid>0) return wpusercountry_flag(get_the_author_meta('wpusercountry_id',$userid)); + else return wpusercountry_flag(get_the_author_meta('wpusercountry_id')); +} + +function wpusercountry_name_display($userid) { + if ($userid>0) return wpusercountry_name(get_the_author_meta('wpusercountry_id',$userid)); + else return wpusercountry_name(get_the_author_meta('wpusercountry_id')); +} + +/*** Create shortcode ***/ + +function wpusercountry_field_shortcode($atts) { + extract(shortcode_atts(array( + "flag" => '' + ), $atts)); + + if ( $flag == "yes" ) { + return wpusercountry_flag(get_the_author_meta('wpusercountry_id')); + } + else { + return wpusercountry_name(get_the_author_meta('wpusercountry_id')); + } +} + +add_shortcode('wpusercountry-user', 'wpusercountry_field_shortcode'); +add_filter('widget_text', 'do_shortcode'); // Allows you to use the shortcode in text widgets + + +?> \ No newline at end of file diff --git a/wp-content/plugins/youtube-to-wp-post/readme.txt b/wp-content/plugins/youtube-to-wp-post/readme.txt new file mode 100644 index 0000000..b8990b6 --- /dev/null +++ b/wp-content/plugins/youtube-to-wp-post/readme.txt @@ -0,0 +1,53 @@ +=== Youtube to WP Post === +Contributors: Robin +Tags: youtube ,wp-post,youtube-post,youtube-wp-post,youtubetopost +Donate link: +Requires at least: 3.0 +Tested up to: 3.3 +Stable tag: 1.0 +License: GPLv2 or later + +This plugin creates posts based on the data fetched from the youtube from its id. + +== Description == + +This plugin accepts url of youtube and fetches title , description and the thumbnail of the youtube video , then creates a post in wp with the title , description and featured image fetched from youtube sites. + + + +== Installation == + +Follow Following steps + +1.Upload the FOLDER 'wp-youtube' to the /wp-content/plugins/ + +2.Activate the plugin 'WP YouTube' through the 'Plugins' menu in admin + +3.Go to 'YouTube To Post' + +== Changelog == + +1.0 updated files + +== Frequently Asked Questions == + += How to use this plugin? = + +Go to YouTube To Post menu at admin panel +Enter the youtube url (Seperate url in new line) +Click on submit button +See the post section . + +Enjoy + += How to get help? = +mail me at: robingupta0512@gmail.com + +== Screenshots == +1. main section of plugin. +2. after entering the details. +3. after submission of form. + +== Upgrade Notice == + += 1.0 = has updated files diff --git a/wp-content/plugins/youtube-to-wp-post/screenshot-1.jpg b/wp-content/plugins/youtube-to-wp-post/screenshot-1.jpg new file mode 100644 index 0000000..2e8a054 Binary files /dev/null and b/wp-content/plugins/youtube-to-wp-post/screenshot-1.jpg differ diff --git a/wp-content/plugins/youtube-to-wp-post/screenshot-2.jpg b/wp-content/plugins/youtube-to-wp-post/screenshot-2.jpg new file mode 100644 index 0000000..3ac0d48 Binary files /dev/null and b/wp-content/plugins/youtube-to-wp-post/screenshot-2.jpg differ diff --git a/wp-content/plugins/youtube-to-wp-post/screenshot-3.jpg b/wp-content/plugins/youtube-to-wp-post/screenshot-3.jpg new file mode 100644 index 0000000..05bcf55 Binary files /dev/null and b/wp-content/plugins/youtube-to-wp-post/screenshot-3.jpg differ diff --git a/wp-content/plugins/youtube-to-wp-post/youtube-post.php b/wp-content/plugins/youtube-to-wp-post/youtube-post.php new file mode 100644 index 0000000..1250ec7 --- /dev/null +++ b/wp-content/plugins/youtube-to-wp-post/youtube-post.php @@ -0,0 +1,87 @@ + \ No newline at end of file diff --git a/wp-content/plugins/youtube-to-wp-post/yp-admin.php b/wp-content/plugins/youtube-to-wp-post/yp-admin.php new file mode 100644 index 0000000..fdc87ea --- /dev/null +++ b/wp-content/plugins/youtube-to-wp-post/yp-admin.php @@ -0,0 +1,193 @@ +

                  '.__('Please enter video URL\'s.',"mu").'

                  '; + else { + $youTubeURLS = array_filter(explode("\n",$_REQUEST['videoURLs'])); + + foreach($youTubeURLS as $yt){ + $vedioID = getVideoID($yt); + if(checkYoutubeId($vedioID) == 1){ + $xml = getVideoDetails($vedioID); + if($xml->title != 'YouTube Videos') { + // load up the array + $videoDetails[$i]['videoURL'] = $yt; + $videoDetails[$i]['title'] = $xml->title; + $videoDetails[$i]['description'] = $xml->content; + $videoDetails[$i++]['thumbnail'] = "http://i.ytimg.com/vi/".$vedioID."/0.jpg"; + } + } + } + } + if(empty($videoDetails) && !empty($_REQUEST['videoURLs'])) + echo '

                  '.__('Please enter valid video URL\'s.',"mu").'

                  '; +} + + +if(isset($_REQUEST['submitPostData']) && $_REQUEST['submitPostData'] ){ + + $totalCount = count($_REQUEST['muTitle']); + $postCount = 0; + for($i=1;$i<=$totalCount;$i++){ + if(@in_array($i,$_REQUEST['muCheckBox'])){ + $postTitle = trim($_REQUEST['muTitle'][$i]); + $youTubeURL = trim($_REQUEST['muVideoURL'][$i]); + $postDescription = trim($_REQUEST['description'][$i]); + $postContent = $postDescription; + $postTags = $_REQUEST['muTags'][$i]; + $postCategories = @implode(',',$_REQUEST['mucategories'][$i]); + $postThumbnail = $_REQUEST['muThumbnail'][$i]; + + + $post = array( + 'post_title' => wp_strip_all_tags($postTitle), + 'post_content' => $postContent, + 'post_category' => @explode(',',$postCategories), + 'tags_input' => $postTags, + 'post_status' => 'publish', + 'post_author' => 1, + 'post_type' => 'post' + ); + + $post_id = wp_insert_post($post); + $postCount++; + + $imageurl = $postThumbnail; + $imageurl = stripslashes($imageurl); + $uploads = wp_upload_dir(); + + $filename = wp_unique_filename( $uploads['path'], basename($imageurl), $unique_filename_callback = null ); + $wp_filetype = wp_check_filetype($filename, null ); + $fullpathfilename = $uploads['path'] . "/" . $filename; + + try { + if ( !substr_count($wp_filetype['type'], "image") ) { + throw new Exception( basename($imageurl) . ' is not a valid image. ' . $wp_filetype['type'] . '' ); + } + + $image_string = fetch_image($imageurl); + $fileSaved = file_put_contents($uploads['path'] . "/" . $filename, $image_string); + if ( !$fileSaved ) { + throw new Exception("The file cannot be saved."); + } + + $attachment = array( + 'post_mime_type' => $wp_filetype['type'], + 'post_title' => preg_replace('/\.[^.]+$/', '', $filename), + 'post_content' => '', + 'post_status' => 'inherit', + 'guid' => $uploads['url'] . "/" . $filename + ); + $attach_id = wp_insert_attachment( $attachment, $fullpathfilename, $post_id ); + if ( !$attach_id ) { + throw new Exception("Failed to save record into database."); + } + require_once(ABSPATH . "wp-admin" . '/includes/image.php'); + $attach_data = wp_generate_attachment_metadata( $attach_id, $fullpathfilename ); + wp_update_attachment_metadata( $attach_id, $attach_data ); + update_post_meta($post_id,'_thumbnail_id',$attach_id); + + } catch (Exception $e) { + $error = '

                  ' . $e->getMessage() . '

                  '; + } + + } + } + if($postCount > 0) + echo '

                  '.__('Post(s) Added Successfully.',"mu").'

                  '; +?> + + +
                  +

                  + +
                  Paste youtube url's here (Each url in different line)
                  +
                  +
                  +
                  +
                  + + + + +
                  +

                  " name="submitYouTubeURLS" />

                  +
                  +
                  +
                  + +
                  +
                  +
                  +
                  + +
                  +
                  + +
                  + + + + + + + + + + + + + + + > + + + + + + + + + + + + +
                  +

                  " name="submitPostData" />

                  +
                  + + +
                  \ No newline at end of file diff --git a/wp-content/themes/huddle/404.php b/wp-content/themes/huddle/404.php new file mode 100644 index 0000000..114c446 --- /dev/null +++ b/wp-content/themes/huddle/404.php @@ -0,0 +1,24 @@ + + + +
                  + + + +
                  +

                  + +
                  +

                  +
                  + + +
                  + + + +
                  + + + + diff --git a/wp-content/themes/huddle/activity/activity-loop.php b/wp-content/themes/huddle/activity/activity-loop.php new file mode 100644 index 0000000..c37e6b5 --- /dev/null +++ b/wp-content/themes/huddle/activity/activity-loop.php @@ -0,0 +1,54 @@ + + + + + + + + + + +
                    + + + + + + + + + + + +
                  • + +
                  • + + + + + +
                  + + + + + +
                  +

                  +
                  + + + + + +
                  + + + +
                  \ No newline at end of file diff --git a/wp-content/themes/huddle/activity/comment.php b/wp-content/themes/huddle/activity/comment.php new file mode 100644 index 0000000..284f081 --- /dev/null +++ b/wp-content/themes/huddle/activity/comment.php @@ -0,0 +1,41 @@ + + + +
                • +
                  + + + +
                  + +
                  + %2$s replied %4$s', 'huddle' ), bp_get_activity_comment_user_link(), bp_get_activity_comment_name(), bp_get_activity_thread_permalink(), bp_get_activity_comment_date_recorded() ); + ?> +
                  + +
                  + +
                  + + + + + + + + + + + + + + + +
                  + + +
                • + + diff --git a/wp-content/themes/huddle/activity/entry.php b/wp-content/themes/huddle/activity/entry.php new file mode 100644 index 0000000..b19e0c7 --- /dev/null +++ b/wp-content/themes/huddle/activity/entry.php @@ -0,0 +1,111 @@ + + + +
                • + + +
                  + +
                  + + + +
                  + + + +
                  + +
                  + + + + + +
                  + + + +
                  + + + + + + + +
                  + + + + %s', 'huddle' ), bp_activity_get_comment_count() ); ?> + + + + + + + + + + + + + + + + + + + + + +
                  + + + +
                  + + + + + +
                  + + + + + +
                  > +
                  +
                  +
                  + +
                  +   + +
                  + + + + + +
                  + + + +
                  + + + + + +
                • + + diff --git a/wp-content/themes/huddle/activity/index.php b/wp-content/themes/huddle/activity/index.php new file mode 100644 index 0000000..783f69e --- /dev/null +++ b/wp-content/themes/huddle/activity/index.php @@ -0,0 +1,143 @@ + + + + + +
                  +
                  + + + +
                  + +

                  + +
                  + + + + + + + + + + + +
                  + + + + + + + + + +
                  + + + + + + + + + +
                  +
                  + + + + + diff --git a/wp-content/themes/huddle/activity/post-form.php b/wp-content/themes/huddle/activity/post-form.php new file mode 100644 index 0000000..d90c044 --- /dev/null +++ b/wp-content/themes/huddle/activity/post-form.php @@ -0,0 +1,62 @@ + + diff --git a/wp-content/themes/huddle/admin/css/admin-style.css b/wp-content/themes/huddle/admin/css/admin-style.css new file mode 100644 index 0000000..5266145 --- /dev/null +++ b/wp-content/themes/huddle/admin/css/admin-style.css @@ -0,0 +1,222 @@ +/*-------------------------------------------------------------------------------------------*/ +/* OptionsFramework Admin Styles */ +/*-------------------------------------------------------------------------------------------*/ + +.updated { + max-width:764px; + margin-bottom:0px !important; +} +#optionsframework { + position:relative; + z-index: 0; + max-width:780px; + background:#fff; +} +#optionsframework p { + margin-bottom:0; + padding-bottom:10px; +} +#optionsframework .section { + padding:10px 10px 0; +} +#optionsframework .group { + padding-bottom:40px; +} +#optionsframework .section .heading { + padding:10px 0px; + margin:0 0 15px; + border-bottom: 1px solid #dfdfdf; +} +#optionsframework .section .controls { + float: left; + min-width:350px; + width: 54%; + padding-right:2%; +} +#optionsframework .section .explain { + max-width:38%; + float: left; + font-size: 12px; + line-height:16px; + color: #777; +} +#optionsframework .section-checkbox .controls { + width: 98%; +} +#optionsframework .section-checkbox .explain { + max-width:94%; +} +#optionsframework .section-color .controls { + min-width:125px; + width:125px +} +#optionsframework .controls input, #optionsframework .controls select, #optionsframework .controls textarea { + margin-bottom:10px; + width:100%; +} +#optionsframework .section-radio label, #optionsframework .section-multicheck label { + float:left; + max-width:90%; + line-height: 16px; + margin-bottom: 5px; +} +#optionsframework input.checkbox, #optionsframework input.of-radio { + width: 30px; + float:left; + clear:both; +} +#optionsframework .controls .of-color { + float:left; + width: 80px; + margin-left:5px; + margin-right:5px; +} +#optionsframework .controls .of-typography-size { + width:80px; + margin-left:5px; + float:left +} +#optionsframework .controls .of-typography-unit { + width:50px; + margin-left:5px; + float:left +} +#optionsframework .controls .of-typography-face { + width:100px; + margin-left:5px; + float:left +} +#optionsframework .controls .of-typography-style { + width:80px; + margin-left:5px; + margin-right:5px; + float:left +} +#optionsframework .of-background-properties { + clear:both; + margin-top: 18px; +} +#optionsframework .controls .of-background-repeat { + width:125px; + margin-right:5px; + float:left +} +#optionsframework .controls .of-background-position { + width:125px; + margin-right:5px; + float:left +} +#optionsframework .controls .of-background-attachment { + width:125px; + margin-right:5px; + float:left +} +#optionsframework div.section-background .controls input.upload { + width:47%; +} +#optionsframework .controls .of-radio-img-img { + border:3px solid #f9f9f9; + margin:0 5px 10px 0; + display:none; + cursor:pointer; + float:left; +} +#optionsframework .controls .of-radio-img-selected { + border:3px solid #ccc +} +#optionsframework .controls .of-radio-img-img:hover { + opacity:.8; +} +#optionsframework .controls .of-border-width { + width:80px; + float:left +} +#optionsframework .controls .of-border-style { + width:120px; + float:left +} +#optionsframework .hide { + display:none; +} +#optionsframework .of-option-image { + max-width:340px; + margin:3px 0 18px 0; +} +#optionsframework .mini .controls select, #optionsframework .section .mini .controls { + width: 140px; +} +#optionsframework .mini .controls input, #optionsframework .mini .controls { + min-width:140px; + width: 140px; +} +#optionsframework .mini .explain { + max-width:74%; +} +/* Image Uploader */ + +#optionsframework .controls input.upload { + width:80%; +} +#optionsframework .controls input.upload_button { + float:right; + width:45px; + border-color:#BBBBBB; + cursor:pointer; + height:16px; +} +#optionsframework .controls input.upload_button:hover { + border-color:#666666; + color:#000; +} +#optionsframework .screenshot { + float:left; + margin-left:1px; + position:relative; + width:344px; + margin-top:3px; +} +#optionsframework .screenshot img { + background:#FAFAFA; + border-color:#ccc #eee #eee #ccc; + border-style:solid; + border-width:1px; + float:left; + max-width:334px; + padding:4px; + margin-bottom:10px; +} +#optionsframework .screenshot .mlu_remove { + background:url("../images/ico-delete.png") no-repeat; + border:medium none; + bottom:4px; + display:block; + float:left; + height:16px; + padding:0; + position:absolute; + left:-4px; + text-indent:-9999px; + width:16px; +} +#optionsframework .screenshot .no_image .file_link { + margin-left: 20px; +} +#optionsframework .screenshot .no_image .mlu_remove { + bottom: 0px; +} +#optionsframework .reset-button { + float:left; + cursor:pointer; +} + +/* Bottom Section */ + +#optionsframework-submit { + padding: 7px 10px; + border-top: 1px solid #ECECEC; + background-color: #F1F1F1; + background-image: -moz-linear-gradient(center top , #F9F9F9, #ECECEC); +} +#optionsframework .button-primary { + float:right; +} \ No newline at end of file diff --git a/wp-content/themes/huddle/admin/css/colorpicker.css b/wp-content/themes/huddle/admin/css/colorpicker.css new file mode 100644 index 0000000..8f66acc --- /dev/null +++ b/wp-content/themes/huddle/admin/css/colorpicker.css @@ -0,0 +1,177 @@ +.colorpicker { + width: 356px; + height: 176px; + overflow: hidden; + position: absolute; + background: url(../images/colorpicker/colorpicker_background.png); + font-family: Arial, Helvetica, sans-serif; + display: none; +} +.colorpicker_color { + width: 150px; + height: 150px; + left: 14px; + top: 13px; + position: absolute; + background: #f00; + overflow: hidden; + cursor: crosshair; +} +.colorpicker_color div { + position: absolute; + top: 0; + left: 0; + width: 150px; + height: 150px; + background: url(../images/colorpicker/colorpicker_overlay.png); +} +.colorpicker_color div div { + position: absolute; + top: 0; + left: 0; + width: 11px; + height: 11px; + overflow: hidden; + background: url(../images/colorpicker/colorpicker_select.gif); + margin: -5px 0 0 -5px; +} +.colorpicker_hue { + position: absolute; + top: 13px; + left: 171px; + width: 35px; + height: 150px; + cursor: n-resize; +} +.colorpicker_hue div { + position: absolute; + width: 35px; + height: 9px; + overflow: hidden; + background: url(../images/colorpicker/colorpicker_indic.gif) left top; + margin: -4px 0 0 0; + left: 0px; +} +.colorpicker_new_color { + position: absolute; + width: 60px; + height: 30px; + left: 213px; + top: 13px; + background: #f00; +} +.colorpicker_current_color { + position: absolute; + width: 60px; + height: 30px; + left: 283px; + top: 13px; + background: #f00; +} +.colorpicker input { + background-color: transparent; + border: 1px solid transparent; + position: absolute; + font-size: 10px; + font-family: Arial, Helvetica, sans-serif; + color: #898989; + top: 4px; + right: 11px; + text-align: right; + margin: 0; + padding: 0; + height: 12px; +} +.colorpicker_hex { + position: absolute; + width: 72px; + height: 22px; + background: url(../images/colorpicker/colorpicker_hex.png) top; + left: 212px; + top: 142px; +} +.colorpicker_hex input { + right: 6px; +} +.colorpicker_field { + height: 22px; + width: 62px; + background-position: top; + position: absolute; +} +.colorpicker_field span { + position: absolute; + width: 12px; + height: 22px; + overflow: hidden; + top: 0; + right: 0; + cursor: n-resize; +} +.colorpicker_rgb_r { + background-image: url(../images/colorpicker/colorpicker_rgb_r.png); + top: 52px; + left: 212px; +} +.colorpicker_rgb_g { + background-image: url(../images/colorpicker/colorpicker_rgb_g.png); + top: 82px; + left: 212px; +} +.colorpicker_rgb_b { + background-image: url(../images/colorpicker/colorpicker_rgb_b.png); + top: 112px; + left: 212px; +} +.colorpicker_hsb_h { + background-image: url(../images/colorpicker/colorpicker_hsb_h.png); + top: 52px; + left: 282px; +} +.colorpicker_hsb_s { + background-image: url(../images/colorpicker/colorpicker_hsb_s.png); + top: 82px; + left: 282px; +} +.colorpicker_hsb_b { + background-image: url(../images/colorpicker/colorpicker_hsb_b.png); + top: 112px; + left: 282px; +} +.colorpicker_submit { + position: absolute; + width: 22px; + height: 22px; + background: url(../images/colorpicker/colorpicker_submit.png) top; + left: 322px; + top: 142px; + overflow: hidden; +} +.colorpicker_focus { + background-position: center; +} +.colorpicker_hex.colorpicker_focus { + background-position: bottom; +} +.colorpicker_submit.colorpicker_focus { + background-position: bottom; +} +.colorpicker_slider { + background-position: bottom; +} + +.colorSelector { + position: relative; + width: 27px; + height: 27px; + background: url(../images/colorpicker/select.png); + float:left; +} +.colorSelector div { + position: absolute; + top: 4px; + left: 3px; + width: 21px; + height: 19px; + background: url(../images/colorpicker/select.png) center; +} \ No newline at end of file diff --git a/wp-content/themes/huddle/admin/images/colorpicker/blank.gif b/wp-content/themes/huddle/admin/images/colorpicker/blank.gif new file mode 100644 index 0000000..8368bae Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/blank.gif differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_background.png b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_background.png new file mode 100644 index 0000000..8401572 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_background.png differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hex.png b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hex.png new file mode 100644 index 0000000..4e532d7 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hex.png differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hsb_b.png b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hsb_b.png new file mode 100644 index 0000000..dfac595 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hsb_b.png differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hsb_h.png b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hsb_h.png new file mode 100644 index 0000000..3977ed9 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hsb_h.png differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hsb_s.png b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hsb_s.png new file mode 100644 index 0000000..a2a6997 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_hsb_s.png differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_indic.gif b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_indic.gif new file mode 100644 index 0000000..f9fa95e Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_indic.gif differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_overlay.png b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_overlay.png new file mode 100644 index 0000000..561cdd9 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_overlay.png differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_rgb_b.png b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_rgb_b.png new file mode 100644 index 0000000..dfac595 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_rgb_b.png differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_rgb_g.png b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_rgb_g.png new file mode 100644 index 0000000..72b3276 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_rgb_g.png differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_rgb_r.png b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_rgb_r.png new file mode 100644 index 0000000..4855fe0 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_rgb_r.png differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_select.gif b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_select.gif new file mode 100644 index 0000000..599f7f1 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_select.gif differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_submit.png b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_submit.png new file mode 100644 index 0000000..7f4c082 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/colorpicker_submit.png differ diff --git a/wp-content/themes/huddle/admin/images/colorpicker/select.png b/wp-content/themes/huddle/admin/images/colorpicker/select.png new file mode 100644 index 0000000..bfc46dc Binary files /dev/null and b/wp-content/themes/huddle/admin/images/colorpicker/select.png differ diff --git a/wp-content/themes/huddle/admin/images/ico-delete.png b/wp-content/themes/huddle/admin/images/ico-delete.png new file mode 100644 index 0000000..08f2493 Binary files /dev/null and b/wp-content/themes/huddle/admin/images/ico-delete.png differ diff --git a/wp-content/themes/huddle/admin/js/colorpicker.js b/wp-content/themes/huddle/admin/js/colorpicker.js new file mode 100644 index 0000000..634884b --- /dev/null +++ b/wp-content/themes/huddle/admin/js/colorpicker.js @@ -0,0 +1,455 @@ +/** + * + * Color picker + * Author: Stefan Petre www.eyecon.ro + * + * Dependencies: jQuery + * + */ +(function ($) { + var ColorPicker = function () { + var + ids = {}, + inAction, + charMin = 65, + visible, + tpl = '
                  ', + defaults = { + eventName: 'click', + onShow: function () {}, + onBeforeShow: function(){}, + onHide: function () {}, + onChange: function () {}, + onSubmit: function () {}, + color: 'ff0000', + livePreview: true, + flat: false + }, + fillRGBFields = function (hsb, cal) { + var rgb = HSBToRGB(hsb); + $(cal).data('colorpicker').fields + .eq(1).val(rgb.r).end() + .eq(2).val(rgb.g).end() + .eq(3).val(rgb.b).end(); + }, + fillHSBFields = function (hsb, cal) { + $(cal).data('colorpicker').fields + .eq(4).val(hsb.h).end() + .eq(5).val(hsb.s).end() + .eq(6).val(hsb.b).end(); + }, + fillHexFields = function (hsb, cal) { + $(cal).data('colorpicker').fields + .eq(0).val(HSBToHex(hsb)).end(); + }, + setSelector = function (hsb, cal) { + $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100})); + $(cal).data('colorpicker').selectorIndic.css({ + left: parseInt(150 * hsb.s/100, 10), + top: parseInt(150 * (100-hsb.b)/100, 10) + }); + }, + setHue = function (hsb, cal) { + $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10)); + }, + setCurrentColor = function (hsb, cal) { + $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb)); + }, + setNewColor = function (hsb, cal) { + $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb)); + }, + keyDown = function (ev) { + var pressedKey = ev.charCode || ev.keyCode || -1; + if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) { + return false; + } + var cal = $(this).parent().parent(); + if (cal.data('colorpicker').livePreview === true) { + change.apply(this); + } + }, + change = function (ev) { + var cal = $(this).parent().parent(), col; + if (this.parentNode.className.indexOf('_hex') > 0) { + cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value)); + } else if (this.parentNode.className.indexOf('_hsb') > 0) { + cal.data('colorpicker').color = col = fixHSB({ + h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10), + s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10), + b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10) + }); + } else { + cal.data('colorpicker').color = col = RGBToHSB(fixRGB({ + r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10), + g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10), + b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10) + })); + } + if (ev) { + fillRGBFields(col, cal.get(0)); + fillHexFields(col, cal.get(0)); + fillHSBFields(col, cal.get(0)); + } + setSelector(col, cal.get(0)); + setHue(col, cal.get(0)); + setNewColor(col, cal.get(0)); + cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]); + }, + blur = function (ev) { + var cal = $(this).parent().parent(); + cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus') + }, + focus = function () { + charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65; + $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus'); + $(this).parent().addClass('colorpicker_focus'); + }, + downIncrement = function (ev) { + var field = $(this).parent().find('input').focus(); + var current = { + el: $(this).parent().addClass('colorpicker_slider'), + max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255), + y: ev.pageY, + field: field, + val: parseInt(field.val(), 10), + preview: $(this).parent().parent().data('colorpicker').livePreview + }; + $(document).bind('mouseup', current, upIncrement); + $(document).bind('mousemove', current, moveIncrement); + }, + moveIncrement = function (ev) { + ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10)))); + if (ev.data.preview) { + change.apply(ev.data.field.get(0), [true]); + } + return false; + }, + upIncrement = function (ev) { + change.apply(ev.data.field.get(0), [true]); + ev.data.el.removeClass('colorpicker_slider').find('input').focus(); + $(document).unbind('mouseup', upIncrement); + $(document).unbind('mousemove', moveIncrement); + return false; + }, + downHue = function (ev) { + var current = { + cal: $(this).parent(), + y: $(this).offset().top + }; + current.preview = current.cal.data('colorpicker').livePreview; + $(document).bind('mouseup', current, upHue); + $(document).bind('mousemove', current, moveHue); + }, + moveHue = function (ev) { + change.apply( + ev.data.cal.data('colorpicker') + .fields + .eq(4) + .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10)) + .get(0), + [ev.data.preview] + ); + return false; + }, + upHue = function (ev) { + fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + $(document).unbind('mouseup', upHue); + $(document).unbind('mousemove', moveHue); + return false; + }, + downSelector = function (ev) { + var current = { + cal: $(this).parent(), + pos: $(this).offset() + }; + current.preview = current.cal.data('colorpicker').livePreview; + $(document).bind('mouseup', current, upSelector); + $(document).bind('mousemove', current, moveSelector); + }, + moveSelector = function (ev) { + change.apply( + ev.data.cal.data('colorpicker') + .fields + .eq(6) + .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10)) + .end() + .eq(5) + .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10)) + .get(0), + [ev.data.preview] + ); + return false; + }, + upSelector = function (ev) { + fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + $(document).unbind('mouseup', upSelector); + $(document).unbind('mousemove', moveSelector); + return false; + }, + enterSubmit = function (ev) { + $(this).addClass('colorpicker_focus'); + }, + leaveSubmit = function (ev) { + $(this).removeClass('colorpicker_focus'); + }, + clickSubmit = function (ev) { + var cal = $(this).parent(); + var col = cal.data('colorpicker').color; + cal.data('colorpicker').origColor = col; + setCurrentColor(col, cal.get(0)); + cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col)); + cal.hide(); + }, + show = function (ev) { + var cal = $('#' + $(this).data('colorpickerId')); + cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]); + var pos = $(this).offset(); + var viewPort = getViewport(); + var top = pos.top + this.offsetHeight; + var left = pos.left; + if (top + 176 > viewPort.t + viewPort.h) { + top -= this.offsetHeight + 176; + } else { + top += 5; + } + if (left + 356 > viewPort.l + viewPort.w) { + left -= 356; + } + cal.css({left: left + 'px', top: top + 'px'}); + if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) { + cal.show(); + } + $(document).bind('mousedown', {cal: cal}, hide); + return false; + }, + hide = function (ev) { + if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) { + if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) { + ev.data.cal.hide(); + } + $(document).unbind('mousedown', hide); + } + }, + isChildOf = function(parentEl, el, container) { + if (parentEl == el) { + return true; + } + if (parentEl.contains) { + return parentEl.contains(el); + } + if ( parentEl.compareDocumentPosition ) { + return !!(parentEl.compareDocumentPosition(el) & 16); + } + var prEl = el.parentNode; + while(prEl && prEl != container) { + if (prEl == parentEl) + return true; + prEl = prEl.parentNode; + } + return false; + }, + getViewport = function () { + var m = document.compatMode == 'CSS1Compat'; + return { + l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft), + t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop), + w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth), + h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight) + }; + }, + fixHSB = function (hsb) { + return { + h: Math.min(360, Math.max(0, hsb.h)), + s: Math.min(100, Math.max(0, hsb.s)), + b: Math.min(100, Math.max(0, hsb.b)) + }; + }, + fixRGB = function (rgb) { + return { + r: Math.min(255, Math.max(0, rgb.r)), + g: Math.min(255, Math.max(0, rgb.g)), + b: Math.min(255, Math.max(0, rgb.b)) + }; + }, + fixHex = function (hex) { + var len = 6 - hex.length; + if (len > 0) { + var o = []; + for (var i=0; i -1) ? hex.substring(1) : hex), 16); + return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)}; + }, + HexToHSB = function (hex) { + return RGBToHSB(HexToRGB(hex)); + }, + RGBToHSB = function (rgb) { + var hsb = {}; + hsb.b = Math.max(Math.max(rgb.r,rgb.g),rgb.b); + hsb.s = (hsb.b <= 0) ? 0 : Math.round(100*(hsb.b - Math.min(Math.min(rgb.r,rgb.g),rgb.b))/hsb.b); + hsb.b = Math.round((hsb.b /255)*100); + if((rgb.r==rgb.g) && (rgb.g==rgb.b)) hsb.h = 0; + else if(rgb.r>=rgb.g && rgb.g>=rgb.b) hsb.h = 60*(rgb.g-rgb.b)/(rgb.r-rgb.b); + else if(rgb.g>=rgb.r && rgb.r>=rgb.b) hsb.h = 60 + 60*(rgb.g-rgb.r)/(rgb.g-rgb.b); + else if(rgb.g>=rgb.b && rgb.b>=rgb.r) hsb.h = 120 + 60*(rgb.b-rgb.r)/(rgb.g-rgb.r); + else if(rgb.b>=rgb.g && rgb.g>=rgb.r) hsb.h = 180 + 60*(rgb.b-rgb.g)/(rgb.b-rgb.r); + else if(rgb.b>=rgb.r && rgb.r>=rgb.g) hsb.h = 240 + 60*(rgb.r-rgb.g)/(rgb.b-rgb.g); + else if(rgb.r>=rgb.b && rgb.b>=rgb.g) hsb.h = 300 + 60*(rgb.r-rgb.b)/(rgb.r-rgb.g); + else hsb.h = 0; + hsb.h = Math.round(hsb.h); + return hsb; + }, + HSBToRGB = function (hsb) { + var rgb = {}; + var h = Math.round(hsb.h); + var s = Math.round(hsb.s*255/100); + var v = Math.round(hsb.b*255/100); + if(s == 0) { + rgb.r = rgb.g = rgb.b = v; + } else { + var t1 = v; + var t2 = (255-s)*v/255; + var t3 = (t1-t2)*(h%60)/60; + if(h==360) h = 0; + if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3} + else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3} + else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3} + else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3} + else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3} + else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3} + else {rgb.r=0; rgb.g=0; rgb.b=0} + } + return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)}; + }, + RGBToHex = function (rgb) { + var hex = [ + rgb.r.toString(16), + rgb.g.toString(16), + rgb.b.toString(16) + ]; + $.each(hex, function (nr, val) { + if (val.length == 1) { + hex[nr] = '0' + val; + } + }); + return hex.join(''); + }, + HSBToHex = function (hsb) { + return RGBToHex(HSBToRGB(hsb)); + }; + return { + init: function (options) { + options = $.extend({}, defaults, options||{}); + if (typeof options.color == 'string') { + options.color = HexToHSB(options.color); + } else if (options.color.r != undefined && options.color.g != undefined && options.color.b != undefined) { + options.color = RGBToHSB(options.color); + } else if (options.color.h != undefined && options.color.s != undefined && options.color.b != undefined) { + options.color = fixHSB(options.color); + } else { + return this; + } + options.origColor = options.color; + return this.each(function () { + if (!$(this).data('colorpickerId')) { + var id = 'collorpicker_' + parseInt(Math.random() * 1000); + $(this).data('colorpickerId', id); + var cal = $(tpl).attr('id', id); + if (options.flat) { + cal.appendTo(this).show(); + } else { + cal.appendTo(document.body); + } + options.fields = cal + .find('input') + .bind('keydown', keyDown) + .bind('change', change) + .bind('blur', blur) + .bind('focus', focus); + cal.find('span').bind('mousedown', downIncrement); + options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector); + options.selectorIndic = options.selector.find('div div'); + options.hue = cal.find('div.colorpicker_hue div'); + cal.find('div.colorpicker_hue').bind('mousedown', downHue); + options.newColor = cal.find('div.colorpicker_new_color'); + options.currentColor = cal.find('div.colorpicker_current_color'); + cal.data('colorpicker', options); + cal.find('div.colorpicker_submit') + .bind('mouseenter', enterSubmit) + .bind('mouseleave', leaveSubmit) + .bind('click', clickSubmit); + fillRGBFields(options.color, cal.get(0)); + fillHSBFields(options.color, cal.get(0)); + fillHexFields(options.color, cal.get(0)); + setHue(options.color, cal.get(0)); + setSelector(options.color, cal.get(0)); + setCurrentColor(options.color, cal.get(0)); + setNewColor(options.color, cal.get(0)); + if (options.flat) { + cal.css({ + position: 'relative', + display: 'block' + }); + } else { + $(this).bind(options.eventName, show); + } + } + }); + }, + showPicker: function() { + return this.each( function () { + if ($(this).data('colorpickerId')) { + show.apply(this); + } + }); + }, + hidePicker: function() { + return this.each( function () { + if ($(this).data('colorpickerId')) { + $('#' + $(this).data('colorpickerId')).hide(); + } + }); + }, + setColor: function(col) { + if (typeof col == 'string') { + col = HexToHSB(col); + } else if (col.r != undefined && col.g != undefined && col.b != undefined) { + col = RGBToHSB(col); + } else if (col.h != undefined && col.s != undefined && col.b != undefined) { + col = fixHSB(col); + } else { + return this; + } + return this.each(function(){ + if ($(this).data('colorpickerId')) { + var cal = $('#' + $(this).data('colorpickerId')); + cal.data('colorpicker').color = col; + cal.data('colorpicker').origColor = col; + fillRGBFields(col, cal.get(0)); + fillHSBFields(col, cal.get(0)); + fillHexFields(col, cal.get(0)); + setHue(col, cal.get(0)); + setSelector(col, cal.get(0)); + setCurrentColor(col, cal.get(0)); + setNewColor(col, cal.get(0)); + } + }); + } + }; + }(); + $.fn.extend({ + ColorPicker: ColorPicker.init, + ColorPickerHide: ColorPicker.hide, + ColorPickerShow: ColorPicker.show, + ColorPickerSetColor: ColorPicker.setColor + }); +})(jQuery) \ No newline at end of file diff --git a/wp-content/themes/huddle/admin/js/of-medialibrary-uploader.js b/wp-content/themes/huddle/admin/js/of-medialibrary-uploader.js new file mode 100644 index 0000000..eaa0afe --- /dev/null +++ b/wp-content/themes/huddle/admin/js/of-medialibrary-uploader.js @@ -0,0 +1,163 @@ +/*-----------------------------------------------------------------------------------*/ +/* WooFramework Media Library-driven AJAX File Uploader Module +/* JavaScript Functions (2010-11-05) +/* +/* The code below is designed to work as a part of the WooFramework Media Library-driven +/* AJAX File Uploader Module. It is included only on screens where this module is used. +/* +/* Used with (very) slight modifications for Options Framework. +/*-----------------------------------------------------------------------------------*/ + +(function ($) { + + optionsframeworkMLU = { + +/*-----------------------------------------------------------------------------------*/ +/* Remove file when the "remove" button is clicked. +/*-----------------------------------------------------------------------------------*/ + + removeFile: function () { + + $('.mlu_remove').live('click', function(event) { + $(this).hide(); + $(this).parents().parents().children('.upload').attr('value', ''); + $(this).parents('.screenshot').slideUp(); + $(this).parents('.screenshot').siblings('.of-background-properties').hide(); //remove background properties + return false; + }); + + // Hide the delete button on the first row + $('a.delete-inline', "#option-1").hide(); + + }, // End removeFile + +/*-----------------------------------------------------------------------------------*/ +/* Replace the default file upload field with a customised version. +/*-----------------------------------------------------------------------------------*/ + + recreateFileField: function () { + + $('input.file').each(function(){ + var uploadbutton = ''; + $(this).wrap('
                  '); + $(this).addClass('file').css('opacity', 0); //set to invisible + $(this).parent().append($('
                  ').append($('').attr('id',$(this).attr('id')+'_file')).val( $(this).val() ).append(uploadbutton)); + + $(this).bind('change', function() { + $('#'+$(this).attr('id')+'_file').val($(this).val()); + }); + $(this).bind('mouseout', function() { + $('#'+$(this).attr('id')+'_file').val($(this).val()); + }); + }); + + }, // End recreateFileField + +/*-----------------------------------------------------------------------------------*/ +/* Use a custom function when working with the Media Uploads popup. +/* Requires jQuery, Media Upload and Thickbox JavaScripts. +/*-----------------------------------------------------------------------------------*/ + + mediaUpload: function () { + + jQuery.noConflict(); + + $( 'input.upload_button' ).removeAttr('style'); + + var formfield, + formID, + btnContent = true, + tbframe_interval; + // On Click + $('input.upload_button').live("click", function () { + formfield = $(this).prev('input').attr('id'); + formID = $(this).attr('rel'); + + //Change "insert into post" to "Use this Button" + tbframe_interval = setInterval(function() {jQuery('#TB_iframeContent').contents().find('.savesend .button').val('Use This Image');}, 2000); + + // Display a custom title for each Thickbox popup. + var woo_title = ''; + + if ( $(this).parents('.section').find('.heading') ) { woo_title = $(this).parents('.section').find('.heading').text(); } // End IF Statement + + tb_show( woo_title, 'media-upload.php?post_id='+formID+'&TB_iframe=1' ); + return false; + }); + + window.original_send_to_editor = window.send_to_editor; + window.send_to_editor = function(html) { + + if (formfield) { + + //clear interval for "Use this Button" so button text resets + clearInterval(tbframe_interval); + + // itemurl = $(html).attr('href'); // Use the URL to the main image. + + if ( $(html).html(html).find('img').length > 0 ) { + + itemurl = $(html).html(html).find('img').attr('src'); // Use the URL to the size selected. + + } else { + + // It's not an image. Get the URL to the file instead. + + var htmlBits = html.split("'"); // jQuery seems to strip out XHTML when assigning the string to an object. Use alternate method. + itemurl = htmlBits[1]; // Use the URL to the file. + + var itemtitle = htmlBits[2]; + + itemtitle = itemtitle.replace( '>', '' ); + itemtitle = itemtitle.replace( '', '' ); + + } // End IF Statement + + var image = /(^.*\.jpg|jpeg|png|gif|ico*)/gi; + var document = /(^.*\.pdf|doc|docx|ppt|pptx|odt*)/gi; + var audio = /(^.*\.mp3|m4a|ogg|wav*)/gi; + var video = /(^.*\.mp4|m4v|mov|wmv|avi|mpg|ogv|3gp|3g2*)/gi; + + if (itemurl.match(image)) { + btnContent = 'Remove Image'; + } else { + + // No output preview if it's not an image. + // btnContent = ''; + // Standard generic output if it's not an image. + + html = 'View File'; + btnContent = '
                  '+html+'Remove
                  '; + } + + $('#' + formfield).val(itemurl); + // $('#' + formfield).next().next('div').slideDown().html(btnContent); + $('#' + formfield).siblings('.screenshot').slideDown().html(btnContent); + $('#' + formfield).siblings('.of-background-properties').show(); //show background properties + tb_remove(); + + } else { + window.original_send_to_editor(html); + } + + // Clear the formfield value so the other media library popups can work as they are meant to. - 2010-11-11. + formfield = ''; + } + + } // End mediaUpload + + }; // End optionsframeworkMLU Object // Don't remove this, or the sky will fall on your head. + +/*-----------------------------------------------------------------------------------*/ +/* Execute the above methods in the optionsframeworkMLU object. +/*-----------------------------------------------------------------------------------*/ + + $(document).ready(function () { + + optionsframeworkMLU.removeFile(); + optionsframeworkMLU.recreateFileField(); + optionsframeworkMLU.mediaUpload(); + + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/themes/huddle/admin/js/options-custom.js b/wp-content/themes/huddle/admin/js/options-custom.js new file mode 100644 index 0000000..788570e --- /dev/null +++ b/wp-content/themes/huddle/admin/js/options-custom.js @@ -0,0 +1,101 @@ +/** + * Prints out the inline javascript needed for the colorpicker and choosing + * the tabs in the panel. + */ + +jQuery(document).ready(function($) { + + // Fade out the save message + $('.fade').delay(1000).fadeOut(1000); + + // Color Picker + $('.colorSelector').each(function(){ + var Othis = this; //cache a copy of the this variable for use inside nested function + var initialColor = $(Othis).next('input').attr('value'); + $(this).ColorPicker({ + color: initialColor, + onShow: function (colpkr) { + $(colpkr).fadeIn(500); + return false; + }, + onHide: function (colpkr) { + $(colpkr).fadeOut(500); + return false; + }, + onChange: function (hsb, hex, rgb) { + $(Othis).children('div').css('backgroundColor', '#' + hex); + $(Othis).next('input').attr('value','#' + hex); + } + }); + }); //end color picker + + // Switches option sections + $('.group').hide(); + var activetab = ''; + if (typeof(localStorage) != 'undefined' ) { + activetab = localStorage.getItem("activetab"); + } + if (activetab != '' && $(activetab).length ) { + $(activetab).fadeIn(); + } else { + $('.group:first').fadeIn(); + } + $('.group .collapsed').each(function(){ + $(this).find('input:checked').parent().parent().parent().nextAll().each( + function(){ + if ($(this).hasClass('last')) { + $(this).removeClass('hidden'); + return false; + } + $(this).filter('.hidden').removeClass('hidden'); + }); + }); + + if (activetab != '' && $(activetab + '-tab').length ) { + $(activetab + '-tab').addClass('nav-tab-active'); + } + else { + $('.nav-tab-wrapper a:first').addClass('nav-tab-active'); + } + $('.nav-tab-wrapper a').click(function(evt) { + $('.nav-tab-wrapper a').removeClass('nav-tab-active'); + $(this).addClass('nav-tab-active').blur(); + var clicked_group = $(this).attr('href'); + if (typeof(localStorage) != 'undefined' ) { + localStorage.setItem("activetab", $(this).attr('href')); + } + $('.group').hide(); + $(clicked_group).fadeIn(); + evt.preventDefault(); + }); + + $('.group .collapsed input:checkbox').click(unhideHidden); + + function unhideHidden(){ + if ($(this).attr('checked')) { + $(this).parent().parent().parent().nextAll().removeClass('hidden'); + } + else { + $(this).parent().parent().parent().nextAll().each( + function(){ + if ($(this).filter('.last').length) { + $(this).addClass('hidden'); + return false; + } + $(this).addClass('hidden'); + }); + + } + } + + // Image Options + $('.of-radio-img-img').click(function(){ + $(this).parent().parent().find('.of-radio-img-img').removeClass('of-radio-img-selected'); + $(this).addClass('of-radio-img-selected'); + }); + + $('.of-radio-img-label').hide(); + $('.of-radio-img-img').show(); + $('.of-radio-img-radio').hide(); + +}); \ No newline at end of file diff --git a/wp-content/themes/huddle/admin/options-framework.php b/wp-content/themes/huddle/admin/options-framework.php new file mode 100644 index 0000000..89716a0 --- /dev/null +++ b/wp-content/themes/huddle/admin/options-framework.php @@ -0,0 +1,389 @@ + + +
                  + + + +
                  +
                  +
                  + + + + +
                  + + +
                  +
                  +
                  +
                  +
                  +
                  + + $value ) { + $input[$id][$key] = '0'; + } + } + + // For a value to be submitted to database it must pass through a sanitization filter + if ( has_filter( 'of_sanitize_' . $option['type'] ) ) { + $clean[$id] = apply_filters( 'of_sanitize_' . $option['type'], $input[$id], $option ); + } + } + + add_settings_error( 'options-framework', 'save_options', __( 'Options saved.', 'optionsframework' ), 'updated fade' ); + return $clean; + } + + /* + * Request Not Recognized. + */ + + return of_get_default_values(); +} + +/** + * Format Configuration Array. + * + * Get an array of all default values as set in + * options.php. The 'id','std' and 'type' keys need + * to be defined in the configuration array. In the + * event that these keys are not present the option + * will not be included in this function's output. + * + * @return array Rey-keyed options configuration array. + * + * @access private + */ + +function of_get_default_values() { + $output = array(); + $config = optionsframework_options(); + foreach ( (array) $config as $option ) { + if ( ! isset( $option['id'] ) ) { + continue; + } + if ( ! isset( $option['std'] ) ) { + continue; + } + if ( ! isset( $option['type'] ) ) { + continue; + } + if ( has_filter( 'of_sanitize_' . $option['type'] ) ) { + $output[$option['id']] = apply_filters( 'of_sanitize_' . $option['type'], $option['std'], $option ); + } + } + return $output; +} + +/** + * Add Theme Options menu item to Admin Bar. + */ + +add_action( 'wp_before_admin_bar_render', 'optionsframework_adminbar' ); + +function optionsframework_adminbar() { + + global $wp_admin_bar; + + $wp_admin_bar->add_menu( array( + 'parent' => 'appearance', + 'id' => 'of_theme_options', + 'title' => __( 'Theme Options' ), + 'href' => admin_url( 'themes.php?page=options-framework' ) + )); +} + +if ( ! function_exists( 'of_get_option' ) ) { + + /** + * Get Option. + * + * Helper function to return the theme option value. + * If no value has been saved, it returns $default. + * Needed because options are saved as serialized strings. + */ + + function of_get_option( $name, $default = false ) { + $config = get_option( 'optionsframework' ); + + if ( ! isset( $config['id'] ) ) { + return $default; + } + + $options = get_option( $config['id'] ); + + if ( isset( $options[$name] ) ) { + return $options[$name]; + } + + return $default; + } +} \ No newline at end of file diff --git a/wp-content/themes/huddle/admin/options-interface.php b/wp-content/themes/huddle/admin/options-interface.php new file mode 100644 index 0000000..99ec101 --- /dev/null +++ b/wp-content/themes/huddle/admin/options-interface.php @@ -0,0 +1,318 @@ +'."\n"; + $output .= '

                  ' . esc_html( $value['name'] ) . '

                  ' . "\n"; + $output .= '
                  ' . "\n" . '
                  ' . "\n"; + } + + // Set default value to $val + if ( isset( $value['std']) ) { + $val = $value['std']; + } + + // If the option is already saved, ovveride $val + if ( ($value['type'] != 'heading') && ($value['type'] != 'info')) { + if ( isset($settings[($value['id'])]) ) { + $val = $settings[($value['id'])]; + // Striping slashes of non-array options + if (!is_array($val)) { + $val = stripslashes($val); + } + } + } + + // If there is a description save it for labels + $explain_value = ''; + if ( isset( $value['desc'] ) ) { + $explain_value = $value['desc']; + } + + switch ( $value['type'] ) { + + // Basic text input + case 'text': + $output .= ''; + break; + + // Textarea + case 'textarea': + $cols = '8'; + $ta_value = ''; + + if(isset($value['options'])){ + $ta_options = $value['options']; + if(isset($ta_options['cols'])){ + $cols = $ta_options['cols']; + } else { $cols = '8'; } + } + + $val = stripslashes( $val ); + + $output .= ''; + break; + + // Select Box + case ($value['type'] == 'select'): + $output .= ''; + break; + + + // Radio Box + case "radio": + $name = $option_name .'['. $value['id'] .']'; + foreach ($value['options'] as $key => $option) { + $id = $option_name . '-' . $value['id'] .'-'. $key; + $output .= ''; + } + break; + + // Image Selectors + case "images": + $name = $option_name .'['. $value['id'] .']'; + foreach ( $value['options'] as $key => $option ) { + $selected = ''; + $checked = ''; + if ( $val != '' ) { + if ( $val == $key ) { + $selected = ' of-radio-img-selected'; + $checked = ' checked="checked"'; + } + } + $output .= ''; + $output .= '
                  ' . esc_html( $key ) . '
                  '; + $output .= '' . $option .''; + } + break; + + // Checkbox + case "checkbox": + $output .= ''; + $output .= ''; + break; + + // Multicheck + case "multicheck": + foreach ($value['options'] as $key => $option) { + $checked = ''; + $label = $option; + $option = preg_replace('/[^a-zA-Z0-9._\-]/', '', strtolower($key)); + + $id = $option_name . '-' . $value['id'] . '-'. $option; + $name = $option_name . '[' . $value['id'] . '][' . $option .']'; + + if ( isset($val[$option]) ) { + $checked = checked($val[$option], 1, false); + } + + $output .= ''; + } + break; + + // Color picker + case "color": + $output .= '
                  '; + $output .= ''; + break; + + // Uploader + case "upload": + $output .= optionsframework_medialibrary_uploader( $value['id'], $val, null ); // New AJAX Uploader using Media Library + break; + + // Typography + case 'typography': + + $typography_stored = $val; + + // Font Size + $output .= ''; + + // Font Face + $output .= ''; + + // Font Weight + $output .= ''; + + // Font Color + $output .= '
                  '; + $output .= ''; + + break; + + // Background + case 'background': + + $background = $val; + + // Background Color + $output .= '
                  '; + $output .= ''; + + // Background Image - New AJAX Uploader using Media Library + if (!isset($background['image'])) { + $background['image'] = ''; + } + + $output .= optionsframework_medialibrary_uploader( $value['id'], $background['image'], null, '',0,'image'); + $class = 'of-background-properties'; + if ( '' == $background['image'] ) { + $class .= ' hide'; + } + $output .= '
                  '; + + // Background Repeat + $output .= ''; + + // Background Position + $output .= ''; + + // Background Attachment + $output .= ''; + $output .= '
                  '; + + break; + + // Info + case "info": + $class = 'section'; + if ( isset( $value['type'] ) ) { + $class .= ' section-' . $value['type']; + } + if ( isset( $value['class'] ) ) { + $class .= ' ' . $value['class']; + } + + $output .= '
                  ' . "\n"; + if ( isset($value['name']) ) { + $output .= '

                  ' . esc_html( $value['name'] ) . '

                  ' . "\n"; + } + if ( $value['desc'] ) { + $output .= apply_filters('of_sanitize_info', $value['desc'] ) . "\n"; + } + $output .= '
                  ' . "\n"; + break; + + // Heading for Navigation + case "heading": + if ($counter >= 2) { + $output .= '
                  '."\n"; + } + $jquery_click_hook = preg_replace('/[^a-zA-Z0-9._\-]/', '', strtolower($value['name']) ); + $jquery_click_hook = "of-option-" . $jquery_click_hook; + $menu .= '' . esc_html( $value['name'] ) . ''; + $output .= '
                  '; + $output .= '

                  ' . esc_html( $value['name'] ) . '

                  ' . "\n"; + break; + } + + if ( ( $value['type'] != "heading" ) && ( $value['type'] != "info" ) ) { + if ( $value['type'] != "checkbox" ) { + $output .= '
                  '; + } + $output .= '
                  '; + if ( $value['type'] != "checkbox" ) { + $output .= '
                  ' . wp_kses( $explain_value, $allowedtags) . '
                  '."\n"; + } + $output .= '
                  '."\n"; + } + } + $output .= '
                  '; + return array($output,$menu); +} \ No newline at end of file diff --git a/wp-content/themes/huddle/admin/options-medialibrary-uploader.php b/wp-content/themes/huddle/admin/options-medialibrary-uploader.php new file mode 100644 index 0000000..b7db600 --- /dev/null +++ b/wp-content/themes/huddle/admin/options-medialibrary-uploader.php @@ -0,0 +1,291 @@ + array( + 'name' => __( 'Options Framework Internal Container' ), + ), + 'public' => true, + 'show_ui' => false, + 'capability_type' => 'post', + 'hierarchical' => false, + 'rewrite' => false, + 'supports' => array( 'title', 'editor' ), + 'query_var' => false, + 'can_export' => true, + 'show_in_nav_menus' => false + ) ); + } +} + +/** + * Adds the Thickbox CSS file and specific loading and button images to the header + * on the pages where this function is called. + */ + +if ( ! function_exists( 'optionsframework_mlu_css' ) ) { + + function optionsframework_mlu_css () { + + $_html = ''; + $_html .= '' . "\n"; + $_html .= '' . "\n"; + + echo $_html; + + } + +} + +/** + * Registers and enqueues (loads) the necessary JavaScript file for working with the + * Media Library-driven AJAX File Uploader Module. + */ + +if ( ! function_exists( 'optionsframework_mlu_js' ) ) { + + function optionsframework_mlu_js () { + + // Registers custom scripts for the Media Library AJAX uploader. + wp_register_script( 'of-medialibrary-uploader', OPTIONS_FRAMEWORK_DIRECTORY .'js/of-medialibrary-uploader.js', array( 'jquery', 'thickbox' ) ); + wp_enqueue_script( 'of-medialibrary-uploader' ); + wp_enqueue_script( 'media-upload' ); + } + +} + +/** + * Media Uploader Using the WordPress Media Library. + * + * Parameters: + * - string $_id - A token to identify this field (the name). + * - string $_value - The value of the field, if present. + * - string $_mode - The display mode of the field. + * - string $_desc - An optional description of the field. + * - int $_postid - An optional post id (used in the meta boxes). + * + * Dependencies: + * - optionsframework_mlu_get_silentpost() + */ + +if ( ! function_exists( 'optionsframework_medialibrary_uploader' ) ) { + + function optionsframework_medialibrary_uploader( $_id, $_value, $_mode = 'full', $_desc = '', $_postid = 0, $_name = '') { + + $optionsframework_settings = get_option('optionsframework'); + + // Gets the unique option id + $option_name = $optionsframework_settings['id']; + + $output = ''; + $id = ''; + $class = ''; + $int = ''; + $value = ''; + $name = ''; + + $id = strip_tags( strtolower( $_id ) ); + // Change for each field, using a "silent" post. If no post is present, one will be created. + $int = optionsframework_mlu_get_silentpost( $id ); + + // If a value is passed and we don't have a stored value, use the value that's passed through. + if ( $_value != '' && $value == '' ) { + $value = $_value; + } + + if ($_name != '') { + $name = $option_name.'['.$id.']['.$_name.']'; + } + else { + $name = $option_name.'['.$id.']'; + } + + if ( $value ) { $class = ' has-file'; } + $output .= '' . "\n"; + $output .= '' . "\n"; + + if ( $_desc != '' ) { + $output .= '' . $_desc . '' . "\n"; + } + + $output .= '
                  ' . "\n"; + + if ( $value != '' ) { + $remove = 'Remove'; + $image = preg_match( '/(^.*\.jpg|jpeg|png|gif|ico*)/i', $value ); + if ( $image ) { + $output .= ''.$remove.''; + } else { + $parts = explode( "/", $value ); + for( $i = 0; $i < sizeof( $parts ); ++$i ) { + $title = $parts[$i]; + } + + // No output preview if it's not an image. + $output .= ''; + + // Standard generic output if it's not an image. + $title = __( 'View File', 'optionsframework' ); + $output .= '
                  '.$title.'' . $remove . '
                  '; + } + } + $output .= '
                  ' . "\n"; + return $output; + } +} + +/** + * Uses "silent" posts in the database to store relationships for images. + * This also creates the facility to collect galleries of, for example, logo images. + * + * Return: $_postid. + * + * If no "silent" post is present, one will be created with the type "optionsframework" + * and the post_name of "of-$_token". + * + * Example Usage: + * optionsframework_mlu_get_silentpost ( 'of_logo' ); + */ + +if ( ! function_exists( 'optionsframework_mlu_get_silentpost' ) ) { + + function optionsframework_mlu_get_silentpost ( $_token ) { + + global $wpdb; + $_id = 0; + + // Check if the token is valid against a whitelist. + // $_whitelist = array( 'of_logo', 'of_custom_favicon', 'of_ad_top_image' ); + // Sanitise the token. + + $_token = strtolower( str_replace( ' ', '_', $_token ) ); + + // if ( in_array( $_token, $_whitelist ) ) { + if ( $_token ) { + + // Tell the function what to look for in a post. + + $_args = array( 'post_type' => 'optionsframework', 'post_name' => 'of-' . $_token, 'post_status' => 'draft', 'comment_status' => 'closed', 'ping_status' => 'closed' ); + + // Look in the database for a "silent" post that meets our criteria. + $query = 'SELECT ID FROM ' . $wpdb->posts . ' WHERE post_parent = 0'; + foreach ( $_args as $k => $v ) { + $query .= ' AND ' . $k . ' = "' . $v . '"'; + } // End FOREACH Loop + + $query .= ' LIMIT 1'; + $_posts = $wpdb->get_row( $query ); + + // If we've got a post, loop through and get it's ID. + if ( count( $_posts ) ) { + $_id = $_posts->ID; + } else { + + // If no post is present, insert one. + // Prepare some additional data to go with the post insertion. + $_words = explode( '_', $_token ); + $_title = join( ' ', $_words ); + $_title = ucwords( $_title ); + $_post_data = array( 'post_title' => $_title ); + $_post_data = array_merge( $_post_data, $_args ); + $_id = wp_insert_post( $_post_data ); + } + } + return $_id; + } +} + +/** + * Trigger code inside the Media Library popup. + */ + +if ( ! function_exists( 'optionsframework_mlu_insidepopup' ) ) { + + function optionsframework_mlu_insidepopup () { + + if ( isset( $_REQUEST['is_optionsframework'] ) && $_REQUEST['is_optionsframework'] == 'yes' ) { + + add_action( 'admin_head', 'optionsframework_mlu_js_popup' ); + add_filter( 'media_upload_tabs', 'optionsframework_mlu_modify_tabs' ); + } + } +} + +if ( ! function_exists( 'optionsframework_mlu_js_popup' ) ) { + + function optionsframework_mlu_js_popup () { + + $_of_title = $_REQUEST['of_title']; + if ( ! $_of_title ) { $_of_title = 'file'; } // End IF Statement +?> + + $value ) { + $output[$key] = "0"; + } + foreach( $input as $key => $value ) { + if ( array_key_exists( $key, $option['options'] ) && $value ) { + $output[$key] = "1"; + } + } + } + return $output; +} +add_filter( 'of_sanitize_multicheck', 'of_sanitize_multicheck', 10, 2 ); + +/* Color Picker */ + +add_filter( 'of_sanitize_color', 'of_sanitize_hex' ); + +/* Uploader */ + +function of_sanitize_upload( $input ) { + $output = ''; + $filetype = wp_check_filetype($input); + if ( $filetype["ext"] ) { + $output = $input; + } + return $output; +} +add_filter( 'of_sanitize_upload', 'of_sanitize_upload' ); + +/* Allowed Tags */ + +function of_sanitize_allowedtags($input) { + global $allowedtags; + $output = wpautop(wp_kses( $input, $allowedtags)); + return $output; +} + +add_filter( 'of_sanitize_info', 'of_sanitize_allowedtags' ); + +/* Allowed Post Tags */ + +function of_sanitize_allowedposttags($input) { + global $allowedposttags; + $output = wpautop(wp_kses( $input, $allowedposttags)); + return $output; +} + +add_filter( 'of_sanitize_info', 'of_sanitize_allowedposttags' ); + + +/* Check that the key value sent is valid */ + +function of_sanitize_enum( $input, $option ) { + $output = ''; + if ( array_key_exists( $input, $option['options'] ) ) { + $output = $input; + } + return $output; +} + +/* Background */ + +function of_sanitize_background( $input ) { + $output = wp_parse_args( $input, array( + 'color' => '', + 'image' => '', + 'repeat' => 'repeat', + 'position' => 'top center', + 'attachment' => 'scroll' + ) ); + + $output['color'] = apply_filters( 'of_sanitize_hex', $input['color'] ); + $output['image'] = apply_filters( 'of_sanitize_upload', $input['image'] ); + $output['repeat'] = apply_filters( 'of_background_repeat', $input['repeat'] ); + $output['position'] = apply_filters( 'of_background_position', $input['position'] ); + $output['attachment'] = apply_filters( 'of_background_attachment', $input['attachment'] ); + + return $output; +} +add_filter( 'of_sanitize_background', 'of_sanitize_background' ); + +function of_sanitize_background_repeat( $value ) { + $recognized = of_recognized_background_repeat(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_background_repeat', current( $recognized ) ); +} +add_filter( 'of_background_repeat', 'of_sanitize_background_repeat' ); + +function of_sanitize_background_position( $value ) { + $recognized = of_recognized_background_position(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_background_position', current( $recognized ) ); +} +add_filter( 'of_background_position', 'of_sanitize_background_position' ); + +function of_sanitize_background_attachment( $value ) { + $recognized = of_recognized_background_attachment(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_background_attachment', current( $recognized ) ); +} +add_filter( 'of_background_attachment', 'of_sanitize_background_attachment' ); + + +/* Typography */ + +function of_sanitize_typography( $input ) { + $output = wp_parse_args( $input, array( + 'size' => '', + 'face' => '', + 'style' => '', + 'color' => '' + ) ); + + $output['size'] = apply_filters( 'of_font_size', $output['size'] ); + $output['face'] = apply_filters( 'of_font_face', $output['face'] ); + $output['style'] = apply_filters( 'of_font_style', $output['style'] ); + $output['color'] = apply_filters( 'of_color', $output['color'] ); + + return $output; +} +add_filter( 'of_sanitize_typography', 'of_sanitize_typography' ); + + +function of_sanitize_font_size( $value ) { + $recognized = of_recognized_font_sizes(); + $value = preg_replace('/px/','', $value); + if ( in_array( (int) $value, $recognized ) ) { + return (int) $value; + } + return (int) apply_filters( 'of_default_font_size', $recognized ); +} +add_filter( 'of_font_face', 'of_sanitize_font_face' ); + + +function of_sanitize_font_style( $value ) { + $recognized = of_recognized_font_styles(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_font_style', current( $recognized ) ); +} +add_filter( 'of_font_style', 'of_sanitize_font_style' ); + + +function of_sanitize_font_face( $value ) { + $recognized = of_recognized_font_faces(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_font_face', current( $recognized ) ); +} +add_filter( 'of_font_face', 'of_sanitize_font_face' ); + +/** + * Get recognized background repeat settings + * + * @return array + * + */ +function of_recognized_background_repeat() { + $default = array( + 'no-repeat' => 'No Repeat', + 'repeat-x' => 'Repeat Horizontally', + 'repeat-y' => 'Repeat Vertically', + 'repeat' => 'Repeat All', + ); + return apply_filters( 'of_recognized_background_repeat', $default ); +} + +/** + * Get recognized background positions + * + * @return array + * + */ +function of_recognized_background_position() { + $default = array( + 'top left' => 'Top Left', + 'top center' => 'Top Center', + 'top right' => 'Top Right', + 'center left' => 'Middle Left', + 'center center' => 'Middle Center', + 'center right' => 'Middle Right', + 'bottom left' => 'Bottom Left', + 'bottom center' => 'Bottom Center', + 'bottom right' => 'Bottom Right' + ); + return apply_filters( 'of_recognized_background_position', $default ); +} + +/** + * Get recognized background attachment + * + * @return array + * + */ +function of_recognized_background_attachment() { + $default = array( + 'scroll' => 'Scroll Normally', + 'fixed' => 'Fixed in Place' + ); + return apply_filters( 'of_recognized_background_attachment', $default ); +} + +/** + * Sanitize a color represented in hexidecimal notation. + * + * @param string Color in hexidecimal notation. "#" may or may not be prepended to the string. + * @param string The value that this function should return if it cannot be recognized as a color. + * @return string + * + */ + +function of_sanitize_hex( $hex, $default = '' ) { + if ( of_validate_hex( $hex ) ) { + return $hex; + } + return $default; +} + +/** + * Get recognized font sizes. + * + * Returns an indexed array of all recognized font sizes. + * Values are integers and represent a range of sizes from + * smallest to largest. + * + * @return array + */ + +function of_recognized_font_sizes() { + $sizes = range( 9, 71 ); + $sizes = apply_filters( 'of_recognized_font_sizes', $sizes ); + $sizes = array_map( 'absint', $sizes ); + return $sizes; +} + +/** + * Get recognized font faces. + * + * Returns an array of all recognized font faces. + * Keys are intended to be stored in the database + * while values are ready for display in in html. + * + * @return array + * + */ +function of_recognized_font_faces() { + $default = array( + 'arial' => 'Arial', + 'verdana' => 'Verdana, Geneva', + 'trebuchet' => 'Trebuchet', + 'georgia' => 'Georgia', + 'times' => 'Times New Roman', + 'tahoma' => 'Tahoma, Geneva', + 'palatino' => 'Palatino', + 'helvetica' => 'Helvetica*' + ); + return apply_filters( 'of_recognized_font_faces', $default ); +} + +/** + * Get recognized font styles. + * + * Returns an array of all recognized font styles. + * Keys are intended to be stored in the database + * while values are ready for display in in html. + * + * @return array + * + */ +function of_recognized_font_styles() { + $default = array( + 'normal' => 'Normal', + 'italic' => 'Italic', + 'bold' => 'Bold', + 'bold italic' => 'Bold Italic' + ); + return apply_filters( 'of_recognized_font_styles', $default ); +} + +/** + * Is a given string a color formatted in hexidecimal notation? + * + * @param string Color in hexidecimal notation. "#" may or may not be prepended to the string. + * @return bool + * + */ + +function of_validate_hex( $hex ) { + $hex = trim( $hex ); + /* Strip recognized prefixes. */ + if ( 0 === strpos( $hex, '#' ) ) { + $hex = substr( $hex, 1 ); + } + elseif ( 0 === strpos( $hex, '%23' ) ) { + $hex = substr( $hex, 3 ); + } + /* Regex match. */ + if ( 0 === preg_match( '/^[0-9a-fA-F]{6}$/', $hex ) ) { + return false; + } + else { + return true; + } +} \ No newline at end of file diff --git a/wp-content/themes/huddle/archive.php b/wp-content/themes/huddle/archive.php new file mode 100644 index 0000000..62bede7 --- /dev/null +++ b/wp-content/themes/huddle/archive.php @@ -0,0 +1,46 @@ + + + +
                  + + + +
                  + + +

                  + + +

                  + + +

                  + + +

                  + + +

                  + + get_queried_object() ?> +

                  display_name; ?>

                  + + + +

                  + + +
                  +
                  + + + + + +
                  + + + + diff --git a/wp-content/themes/huddle/blogs/blogs-loop.php b/wp-content/themes/huddle/blogs/blogs-loop.php new file mode 100644 index 0000000..24e0b93 --- /dev/null +++ b/wp-content/themes/huddle/blogs/blogs-loop.php @@ -0,0 +1,83 @@ + + + + + + + + + +
                    + + + +
                  • +
                    + +
                    + +
                    +
                    +
                    + + +
                    + +
                    + + + +
                    + + + +
                    + +
                    + +
                    +
                  • + + + +
                  + + + + + + + + + +
                  +

                  +
                  + + + + diff --git a/wp-content/themes/huddle/blogs/create.php b/wp-content/themes/huddle/blogs/create.php new file mode 100644 index 0000000..3cbb9e5 --- /dev/null +++ b/wp-content/themes/huddle/blogs/create.php @@ -0,0 +1,36 @@ + + + + + +
                  +
                  + + + +

                   

                  + + + + + + + + + +
                  +

                  +
                  + + + + + +
                  +
                  + + + + + + diff --git a/wp-content/themes/huddle/blogs/index.php b/wp-content/themes/huddle/blogs/index.php new file mode 100644 index 0000000..df16caa --- /dev/null +++ b/wp-content/themes/huddle/blogs/index.php @@ -0,0 +1,84 @@ + + + + + +
                  +
                  + + + +
                  + + total_blog_count / 14 ), 1 ); + ?> + +

                  +

                  + +        +

                  + + + + + + + +
                  + + + +
                  + +
                  +

                  +

                  +
                  + + + + + + + +
                  + + + +
                  +
                  + + + + + diff --git a/wp-content/themes/huddle/changelog.txt b/wp-content/themes/huddle/changelog.txt new file mode 100644 index 0000000..e449ad9 --- /dev/null +++ b/wp-content/themes/huddle/changelog.txt @@ -0,0 +1,29 @@ +== Changelog == + += 1.7 = + +* Better CSS support for plugins +* Fix CSS issues for BuddyPress pages +* Change directory listing pages to a 2 column layout +* Misc small cross-browser CSS corrections +* Better integration for child themes + += 1.6 = + +* Fix redirect url when activating account + += 1.5 = + +* Fix a bug for Members/Groups Directory, buttons were breaking markup +* Fix a bug for Activate Account page +* Redirect to single group page after group is created +* Fix markup for BuddyPress plugins + += 1.4 = + +* Fix a bug for 'Create Group' button +* CSS changes + += 1.0 = + +* Initial release \ No newline at end of file diff --git a/wp-content/themes/huddle/comments.php b/wp-content/themes/huddle/comments.php new file mode 100644 index 0000000..77f9af1 --- /dev/null +++ b/wp-content/themes/huddle/comments.php @@ -0,0 +1,76 @@ + + +

                  + + + + + +
                  + +

                  +

                  + + 1 && get_option( 'page_comments' ) ) : ?> + + + +
                    + +
                  + + 1 && get_option( 'page_comments' ) ) : ?> + + + +
                  + + + + + + + + + + + +

                  + '

                  ', + 'comment_notes_before' => '', + 'comment_notes_after' => '', + 'logged_in_as' => '

                  ' . sprintf( __( 'Logged in as %2$s. Log out?' ), admin_url( 'profile.php' ), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post->ID ) ) ) ) . '


                  ', + 'title_reply' => __( 'Add Your Comment', 'huddle' ), + 'title_reply_to' => __( 'Add Your Comment', 'huddle' ), + 'cancel_reply_link' => __( 'Cancel Reply To Comment →', 'huddle' ), + 'label_submit' => __( 'Submit Comment →', 'huddle' ), + 'id_submit' => 'comment-submit', + 'fields' => array( + 'author' => '' . + ''. ( $req ? '* '.__('Required', 'huddle').'' : '' ) .'

                  ', + 'email' => '' . + ''. ( $req ? '* '.__('Required', 'huddle').'' : '' ) .'

                  ', + 'url' => '' . + '

                  ' + ) +) ); + +?> diff --git a/wp-content/themes/huddle/footer.php b/wp-content/themes/huddle/footer.php new file mode 100644 index 0000000..86a1ac4 --- /dev/null +++ b/wp-content/themes/huddle/footer.php @@ -0,0 +1,30 @@ + + +
                  + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/forums/forums-loop.php b/wp-content/themes/huddle/forums/forums-loop.php new file mode 100644 index 0000000..252e87c --- /dev/null +++ b/wp-content/themes/huddle/forums/forums-loop.php @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + +

                  + , + +

                  +
                  + + +

                  + + + +

                  + +

                  + + ' . bp_get_the_topic_object_name() .''; + + printf( __( '%1$s', 'huddle' ), $topic_in ); + ?> + + +

                  + + +
                  + + + +

                  + + + +

                  +
                  + + %d Reply", "%d Replies", bp_get_the_topic_total_posts() ), bp_get_the_topic_total_posts() ); ?> + +
                  + + + +
                  +

                  +

                  total_topic_count / 21 ) ) ?>

                  +
                  + + + +
                  +

                  +
                  + + + + diff --git a/wp-content/themes/huddle/forums/group-forums-loop.php b/wp-content/themes/huddle/forums/group-forums-loop.php new file mode 100644 index 0000000..62d619b --- /dev/null +++ b/wp-content/themes/huddle/forums/group-forums-loop.php @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + +

                  + , + + + + + + + ' . bp_get_the_topic_object_name() .''; + + /* translators: "started by [poster] in [forum]" */ + printf( __( 'in %1$s', 'huddle' ), $topic_in ); + ?> + + + + + +

                  +
                  + + + +

                  + + + +

                  +
                  + + %d Reply", "%d Replies", bp_get_the_topic_total_posts() ), bp_get_the_topic_total_posts() ); ?> + +
                  + + + + + +
                  +

                  +
                  + + + + diff --git a/wp-content/themes/huddle/forums/index.php b/wp-content/themes/huddle/forums/index.php new file mode 100644 index 0000000..502385d --- /dev/null +++ b/wp-content/themes/huddle/forums/index.php @@ -0,0 +1,165 @@ + + + + + + + + + +
                  + +

                  +

                  + +   +

                  + + + + +
                  + + + + +
                  + + + +
                  + + + +
                  + + + + + +
                  + + + + + +
                  + + + + + +
                  + + + + +
                  +
                  + + + +

                  + + +

                  + +

                  + + +

                  + +

                  + + +

                  + +

                  + + +

                  + + + +
                  + + +
                  + + + +
                  + + + +
                  + +

                  create a new group? Once you have joined or created the group you can post your topic in that group's forum.", 'huddle' ), site_url( bp_get_groups_root_slug() . '/create/' ) ) ?>

                  + +
                  + + + + +
                  + + + + + + + + diff --git a/wp-content/themes/huddle/forums/single/edit.php b/wp-content/themes/huddle/forums/single/edit.php new file mode 100644 index 0000000..e852fc6 --- /dev/null +++ b/wp-content/themes/huddle/forums/single/edit.php @@ -0,0 +1,93 @@ + + + + +
                  + + + +
                  +

                  ()

                  + + + + + + + + + +
                  + + + + + +
                  + + + + + + + + + + + +

                  + + + +
                  + + + +
                  + + + + + + + +

                  + + + +
                  + + + + + +
                  + + + +
                  +

                  +
                  + + + + diff --git a/wp-content/themes/huddle/forums/single/forum-header.php b/wp-content/themes/huddle/forums/single/forum-header.php new file mode 100644 index 0000000..74b326e --- /dev/null +++ b/wp-content/themes/huddle/forums/single/forum-header.php @@ -0,0 +1,35 @@ + + + + +
                  +

                  + + + + +
                  + + + +
                  + + + +
                  + + + +
                  +
                  + + \ No newline at end of file diff --git a/wp-content/themes/huddle/forums/single/forum.php b/wp-content/themes/huddle/forums/single/forum.php new file mode 100644 index 0000000..68abff7 --- /dev/null +++ b/wp-content/themes/huddle/forums/single/forum.php @@ -0,0 +1,59 @@ + + + + + + +
                  + +
                  + +
                  + +
                  + + + +
                  + + + +
                  + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/forums/single/topic.php b/wp-content/themes/huddle/forums/single/topic.php new file mode 100644 index 0000000..8bb6c32 --- /dev/null +++ b/wp-content/themes/huddle/forums/single/topic.php @@ -0,0 +1,190 @@ + + + + + + + + +
                  + +
                  + +
                  + + + +
                  + + + +
                  +

                  ()

                  + + + + + + + + + +
                  + + + + + +
                    + + +
                  • +
                    + + + + + + + + +
                    + +
                    + + + +
                    + + +
                  • + + +
                  + + + + + + + + + + + +
                  +

                  + + + +

                  + + + +
                  + +
                  + + + + +
                  + + + +
                  +

                  +
                  + + + + + + + +
                  +
                  + + + +
                  +

                  +
                  + + + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/functions-buddypress.php b/wp-content/themes/huddle/functions-buddypress.php new file mode 100644 index 0000000..2d98d95 --- /dev/null +++ b/wp-content/themes/huddle/functions-buddypress.php @@ -0,0 +1,680 @@ +displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id; + $qs[] = 'user_id=' . $user_id; + } + if ( 'all' != $_BP_COOKIE['bp-' . $object . '-scope'] && empty( $bp->displayed_user->id ) && !$bp->is_single_item ) + $qs[] = 'scope=' . $_BP_COOKIE['bp-' . $object . '-scope']; // Activity stream scope only on activity directory. + } + + /* If page and search_terms have been passed via the AJAX post request, use those */ + if ( !empty( $_POST['page'] ) && '-1' != $_POST['page'] ) + $qs[] = 'page=' . $_POST['page']; + + $object_search_text = bp_get_search_default_text( $object ); + if ( !empty( $_POST['search_terms'] ) && $object_search_text != $_POST['search_terms'] && 'false' != $_POST['search_terms'] && 'undefined' != $_POST['search_terms'] ) + $qs[] = 'search_terms=' . $_POST['search_terms']; + + $qs[] = 'per_page=14'; + + /* Now pass the querystring to override default values. */ + $query_string = empty( $qs ) ? '' : join( '&', (array)$qs ); + + $object_filter = ''; + if ( isset( $_BP_COOKIE['bp-' . $object . '-filter'] ) ) + $object_filter = $_BP_COOKIE['bp-' . $object . '-filter']; + + $object_scope = ''; + if ( isset( $_BP_COOKIE['bp-' . $object . '-scope'] ) ) + $object_scope = $_BP_COOKIE['bp-' . $object . '-scope']; + + $object_page = ''; + if ( isset( $_BP_COOKIE['bp-' . $object . '-page'] ) ) + $object_page = $_BP_COOKIE['bp-' . $object . '-page']; + + $object_search_terms = ''; + if ( isset( $_BP_COOKIE['bp-' . $object . '-search-terms'] ) ) + $object_search_terms = $_BP_COOKIE['bp-' . $object . '-search-terms']; + + $object_extras = ''; + if ( isset( $_BP_COOKIE['bp-' . $object . '-extras'] ) ) + $object_extras = $_BP_COOKIE['bp-' . $object . '-extras']; + + return apply_filters( 'bp_dtheme_ajax_querystring', $query_string, $object, $object_filter, $object_scope, $object_page, $object_search_terms, $object_extras ); +} +add_filter( 'bp_ajax_querystring', 'bp_dtheme_ajax_querystring', 10, 2 ); + +/* This function will simply load the template loop for the current object. On an AJAX request */ +function bp_dtheme_object_template_loader() { + + /** + * AJAX requests happen too early to be seen by bp_update_is_directory() + * so we do it manually here to ensure templates load with the correct + * context. Without this check, templates will load the 'single' version + * of themselves rather than the directory version. + */ + if ( !bp_current_action() ) + bp_update_is_directory( true, bp_current_component() ); + + // Sanitize the post object + $object = esc_attr( $_POST['object'] ); + + // Locate the object template + locate_template( array( "$object/$object-loop.php" ), true ); +} +add_action( 'wp_ajax_members_filter', 'bp_dtheme_object_template_loader' ); +add_action( 'wp_ajax_groups_filter', 'bp_dtheme_object_template_loader' ); +add_action( 'wp_ajax_blogs_filter', 'bp_dtheme_object_template_loader' ); +add_action( 'wp_ajax_forums_filter', 'bp_dtheme_object_template_loader' ); + +// This function will load the activity loop template when activity is requested via AJAX +function bp_dtheme_activity_template_loader() { + global $bp; + + $scope = ''; + if ( !empty( $_POST['scope'] ) ) + $scope = $_POST['scope']; + + // We need to calculate and return the feed URL for each scope + switch ( $scope ) { + case 'friends': + $feed_url = $bp->loggedin_user->domain . bp_get_activity_slug() . '/friends/feed/'; + break; + case 'groups': + $feed_url = $bp->loggedin_user->domain . bp_get_activity_slug() . '/groups/feed/'; + break; + case 'favorites': + $feed_url = $bp->loggedin_user->domain . bp_get_activity_slug() . '/favorites/feed/'; + break; + case 'mentions': + $feed_url = $bp->loggedin_user->domain . bp_get_activity_slug() . '/mentions/feed/'; + bp_activity_clear_new_mentions( $bp->loggedin_user->id ); + break; + default: + $feed_url = home_url( bp_get_activity_root_slug() . '/feed/' ); + break; + } + + /* Buffer the loop in the template to a var for JS to spit out. */ + ob_start(); + locate_template( array( 'activity/activity-loop.php' ), true ); + $result['contents'] = ob_get_contents(); + $result['feed_url'] = apply_filters( 'bp_dtheme_activity_feed_url', $feed_url, $scope ); + ob_end_clean(); + + echo json_encode( $result ); +} +add_action( 'wp_ajax_activity_widget_filter', 'bp_dtheme_activity_template_loader' ); +add_action( 'wp_ajax_activity_get_older_updates', 'bp_dtheme_activity_template_loader' ); + +/* AJAX update posting */ +function bp_dtheme_post_update() { + global $bp; + + // Check the nonce + check_admin_referer( 'post_update', '_wpnonce_post_update' ); + + if ( !is_user_logged_in() ) { + echo '-1'; + return false; + } + + if ( empty( $_POST['content'] ) ) { + echo '-1

                  ' . __( 'Please enter some content to post.', 'huddle' ) . '

                  '; + return false; + } + + $activity_id = 0; + if ( empty( $_POST['object'] ) && bp_is_active( 'activity' ) ) { + $activity_id = bp_activity_post_update( array( 'content' => $_POST['content'] ) ); + + } elseif ( $_POST['object'] == 'groups' ) { + if ( !empty( $_POST['item_id'] ) && bp_is_active( 'groups' ) ) + $activity_id = groups_post_update( array( 'content' => $_POST['content'], 'group_id' => $_POST['item_id'] ) ); + + } else { + $activity_id = apply_filters( 'bp_activity_custom_update', $_POST['object'], $_POST['item_id'], $_POST['content'] ); + } + + if ( empty( $activity_id ) ) { + echo '-1

                  ' . __( 'There was a problem posting your update, please try again.', 'huddle' ) . '

                  '; + return false; + } + + if ( bp_has_activities ( 'include=' . $activity_id ) ) : ?> + + + +

                  ' . __( 'Please do not leave the comment area blank.', 'huddle' ) . '

                  '; + return false; + } + + if ( empty( $_POST['form_id'] ) || empty( $_POST['comment_id'] ) || !is_numeric( $_POST['form_id'] ) || !is_numeric( $_POST['comment_id'] ) ) { + echo '-1

                  ' . __( 'There was an error posting that reply, please try again.', 'huddle' ) . '

                  '; + return false; + } + + $comment_id = bp_activity_new_comment( array( + 'activity_id' => $_POST['form_id'], + 'content' => $_POST['content'], + 'parent_id' => $_POST['comment_id'] + ) ); + + if ( !$comment_id ) { + echo '-1

                  ' . __( 'There was an error posting that reply, please try again.', 'huddle' ) . '

                  '; + return false; + } + + global $activities_template; + + // Load the new activity item into the $activities_template global + bp_has_activities( 'display_comments=stream&include=' . $comment_id ); + + // Swap the current comment with the activity item we just loaded + $activities_template->activity->id = $activities_template->activities[0]->item_id; + $activities_template->activity->current_comment = $activities_template->activities[0]; + + $template = locate_template( 'activity/comment.php', false, false ); + + // Backward compatibility. In older versions of BP, the markup was + // generated in the PHP instead of a template. This ensures that + // older themes (which are not children of bp-default and won't + // have the new template) will still work. + if ( empty( $template ) ) + $template = BP_PLUGIN_DIR . '/bp-themes/bp-default/activity/comment.php'; + + load_template( $template, false ); + + unset( $activities_template ); +} +add_action( 'wp_ajax_new_activity_comment', 'bp_dtheme_new_activity_comment' ); + +/* AJAX delete an activity */ +function bp_dtheme_delete_activity() { + global $bp; + + // Check the nonce + check_admin_referer( 'bp_activity_delete_link' ); + + if ( !is_user_logged_in() ) { + echo '-1'; + return false; + } + + if ( empty( $_POST['id'] ) || !is_numeric( $_POST['id'] ) ) { + echo '-1'; + return false; + } + + $activity = new BP_Activity_Activity( (int) $_POST['id'] ); + + // Check access + if ( empty( $activity->user_id ) || !bp_activity_user_can_delete( $activity ) ) { + echo '-1'; + return false; + } + + // Call the action before the delete so plugins can still fetch information about it + do_action( 'bp_activity_before_action_delete_activity', $activity->id, $activity->user_id ); + + if ( !bp_activity_delete( array( 'id' => $activity->id, 'user_id' => $activity->user_id ) ) ) { + echo '-1

                  ' . __( 'There was a problem when deleting. Please try again.', 'huddle' ) . '

                  '; + return false; + } + + do_action( 'bp_activity_action_delete_activity', $activity->id, $activity->user_id ); + + return true; +} +add_action( 'wp_ajax_delete_activity', 'bp_dtheme_delete_activity' ); + +/* AJAX delete an activity comment */ +function bp_dtheme_delete_activity_comment() { + global $bp; + + /* Check the nonce */ + check_admin_referer( 'bp_activity_delete_link' ); + + if ( !is_user_logged_in() ) { + echo '-1'; + return false; + } + + $comment = new BP_Activity_Activity( $_POST['id'] ); + + /* Check access */ + if ( !is_super_admin() && $comment->user_id != $bp->loggedin_user->id ) + return false; + + if ( empty( $_POST['id'] ) || !is_numeric( $_POST['id'] ) ) + return false; + + /* Call the action before the delete so plugins can still fetch information about it */ + do_action( 'bp_activity_before_action_delete_activity', $_POST['id'], $comment->user_id ); + + if ( !bp_activity_delete_comment( $comment->item_id, $comment->id ) ) { + echo '-1

                  ' . __( 'There was a problem when deleting. Please try again.', 'huddle' ) . '

                  '; + return false; + } + + do_action( 'bp_activity_action_delete_activity', $_POST['id'], $comment->user_id ); + + return true; +} +add_action( 'wp_ajax_delete_activity_comment', 'bp_dtheme_delete_activity_comment' ); + +/* AJAX mark an activity as a favorite */ +function bp_dtheme_mark_activity_favorite() { + global $bp; + + bp_activity_add_user_favorite( $_POST['id'] ); + _e( 'Remove Favorite', 'huddle' ); +} +add_action( 'wp_ajax_activity_mark_fav', 'bp_dtheme_mark_activity_favorite' ); + +/* AJAX mark an activity as not a favorite */ +function bp_dtheme_unmark_activity_favorite() { + global $bp; + + bp_activity_remove_user_favorite( $_POST['id'] ); + _e( 'Favorite', 'huddle' ); +} +add_action( 'wp_ajax_activity_mark_unfav', 'bp_dtheme_unmark_activity_favorite' ); + +/** + * AJAX handler for Read More link on long activity items + * + * @package BuddyPress + * @since 1.5 + */ +function bp_dtheme_get_single_activity_content() { + $activity_array = bp_activity_get_specific( array( + 'activity_ids' => $_POST['activity_id'], + 'display_comments' => 'stream' + ) ); + + $activity = !empty( $activity_array['activities'][0] ) ? $activity_array['activities'][0] : false; + + if ( !$activity ) + exit(); // todo: error? + + do_action_ref_array( 'bp_dtheme_get_single_activity_content', array( &$activity ) ); + + // Activity content retrieved through AJAX should run through normal filters, but not be truncated + remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 ); + $content = apply_filters( 'bp_get_activity_content_body', $activity->content ); + + echo $content; + exit(); +} +add_action( 'wp_ajax_get_single_activity_content', 'bp_dtheme_get_single_activity_content' ); + +/* AJAX invite a friend to a group functionality */ +function bp_dtheme_ajax_invite_user() { + global $bp; + + check_ajax_referer( 'groups_invite_uninvite_user' ); + + if ( !$_POST['friend_id'] || !$_POST['friend_action'] || !$_POST['group_id'] ) + return false; + + if ( !bp_groups_user_can_send_invites( $_POST['group_id'] ) ) + return false; + + if ( !friends_check_friendship( $bp->loggedin_user->id, $_POST['friend_id'] ) ) + return false; + + if ( 'invite' == $_POST['friend_action'] ) { + + if ( !groups_invite_user( array( 'user_id' => $_POST['friend_id'], 'group_id' => $_POST['group_id'] ) ) ) + return false; + + $user = new BP_Core_User( $_POST['friend_id'] ); + + echo '
                • '; + echo $user->avatar_thumb; + echo '

                  ' . $user->user_link . '

                  '; + echo '' . esc_attr( $user->last_active ) . ''; + echo ''; + echo '
                • '; + + } else if ( 'uninvite' == $_POST['friend_action'] ) { + + if ( !groups_uninvite_user( $_POST['friend_id'], $_POST['group_id'] ) ) + return false; + + return true; + + } else { + return false; + } +} +add_action( 'wp_ajax_groups_invite_user', 'bp_dtheme_ajax_invite_user' ); + +/* AJAX add/remove a user as a friend when clicking the button */ +function bp_dtheme_ajax_addremove_friend() { + global $bp; + + if ( 'is_friend' == BP_Friends_Friendship::check_is_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + + check_ajax_referer('friends_remove_friend'); + + if ( !friends_remove_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + echo __("Friendship could not be canceled.", 'huddle'); + } else { + echo '' . __( 'Add Friend', 'huddle' ) . ''; + } + + } else if ( 'not_friends' == BP_Friends_Friendship::check_is_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + + check_ajax_referer('friends_add_friend'); + + if ( !friends_add_friend( $bp->loggedin_user->id, $_POST['fid'] ) ) { + echo __("Friendship could not be requested.", 'huddle'); + } else { + echo '' . __( 'Friendship Requested', 'huddle' ) . ''; + } + } else { + echo __( 'Request Pending', 'huddle' ); + } + + return false; +} +add_action( 'wp_ajax_addremove_friend', 'bp_dtheme_ajax_addremove_friend' ); + +/* AJAX accept a user as a friend when clicking the "accept" button */ +function bp_dtheme_ajax_accept_friendship() { + check_admin_referer( 'friends_accept_friendship' ); + + if ( !friends_accept_friendship( $_POST['id'] ) ) + echo "-1

                  " . __( 'There was a problem accepting that request. Please try again.', 'huddle' ) . '

                  '; + + return true; +} +add_action( 'wp_ajax_accept_friendship', 'bp_dtheme_ajax_accept_friendship' ); + +/* AJAX reject a user as a friend when clicking the "reject" button */ +function bp_dtheme_ajax_reject_friendship() { + check_admin_referer( 'friends_reject_friendship' ); + + if ( !friends_reject_friendship( $_POST['id'] ) ) + echo "-1

                  " . __( 'There was a problem rejecting that request. Please try again.', 'huddle' ) . '

                  '; + + return true; +} +add_action( 'wp_ajax_reject_friendship', 'bp_dtheme_ajax_reject_friendship' ); + +/* AJAX join or leave a group when clicking the "join/leave" button */ +function bp_dtheme_ajax_joinleave_group() { + global $bp; + + if ( groups_is_user_banned( $bp->loggedin_user->id, $_POST['gid'] ) ) + return false; + + if ( !$group = new BP_Groups_Group( $_POST['gid'], false, false ) ) + return false; + + if ( !groups_is_user_member( $bp->loggedin_user->id, $group->id ) ) { + + if ( 'public' == $group->status ) { + + check_ajax_referer( 'groups_join_group' ); + + if ( !groups_join_group( $group->id ) ) { + _e( 'Error joining group', 'huddle' ); + } else { + echo '' . __( 'Leave Group', 'huddle' ) . ''; + } + + } else if ( 'private' == $group->status ) { + + check_ajax_referer( 'groups_request_membership' ); + + if ( !groups_send_membership_request( $bp->loggedin_user->id, $group->id ) ) { + _e( 'Error requesting membership', 'huddle' ); + } else { + echo '' . __( 'Membership Requested', 'huddle' ) . ''; + } + } + + } else { + + check_ajax_referer( 'groups_leave_group' ); + + if ( !groups_leave_group( $group->id ) ) { + _e( 'Error leaving group', 'huddle' ); + } else { + if ( 'public' == $group->status ) { + echo '' . __( 'Join Group', 'huddle' ) . ''; + } else if ( 'private' == $group->status ) { + echo '' . __( 'Request Membership', 'huddle' ) . ''; + } + } + } +} +add_action( 'wp_ajax_joinleave_group', 'bp_dtheme_ajax_joinleave_group' ); + +/* AJAX close and keep closed site wide notices from an admin in the sidebar */ +function bp_dtheme_ajax_close_notice() { + global $userdata; + + if ( !isset( $_POST['notice_id'] ) ) { + echo "-1

                  " . __('There was a problem closing the notice.', 'huddle') . '

                  '; + } else { + $notice_ids = bp_get_user_meta( $userdata->ID, 'closed_notices', true ); + + $notice_ids[] = (int) $_POST['notice_id']; + + bp_update_user_meta( $userdata->ID, 'closed_notices', $notice_ids ); + } +} +add_action( 'wp_ajax_messages_close_notice', 'bp_dtheme_ajax_close_notice' ); + +/* AJAX send a private message reply to a thread */ +function bp_dtheme_ajax_messages_send_reply() { + global $bp; + + check_ajax_referer( 'messages_send_message' ); + + $result = messages_new_message( array( 'thread_id' => $_REQUEST['thread_id'], 'content' => $_REQUEST['content'] ) ); + + if ( $result ) { ?> +
                  + + + + +
                  + +
                  + + + +
                  +
                  +

                  " . __( 'There was a problem sending that reply. Please try again.', 'huddle' ) . '

                  '; + } +} +add_action( 'wp_ajax_messages_send_reply', 'bp_dtheme_ajax_messages_send_reply' ); + +/* AJAX mark a private message as unread in your inbox */ +function bp_dtheme_ajax_message_markunread() { + global $bp; + + if ( !isset($_POST['thread_ids']) ) { + echo "-1

                  " . __('There was a problem marking messages as unread.', 'huddle' ) . '

                  '; + } else { + $thread_ids = explode( ',', $_POST['thread_ids'] ); + + for ( $i = 0, $count = count( $thread_ids ); $i < $count; ++$i ) { + BP_Messages_Thread::mark_as_unread($thread_ids[$i]); + } + } +} +add_action( 'wp_ajax_messages_markunread', 'bp_dtheme_ajax_message_markunread' ); + +/* AJAX mark a private message as read in your inbox */ +function bp_dtheme_ajax_message_markread() { + global $bp; + + if ( !isset($_POST['thread_ids']) ) { + echo "-1

                  " . __('There was a problem marking messages as read.', 'huddle' ) . '

                  '; + } else { + $thread_ids = explode( ',', $_POST['thread_ids'] ); + + for ( $i = 0, $count = count( $thread_ids ); $i < $count; ++$i ) { + BP_Messages_Thread::mark_as_read($thread_ids[$i]); + } + } +} +add_action( 'wp_ajax_messages_markread', 'bp_dtheme_ajax_message_markread' ); + +/* AJAX delete a private message or array of messages in your inbox */ +function bp_dtheme_ajax_messages_delete() { + global $bp; + + if ( !isset($_POST['thread_ids']) ) { + echo "-1

                  " . __( 'There was a problem deleting messages.', 'huddle' ) . '

                  '; + } else { + $thread_ids = explode( ',', $_POST['thread_ids'] ); + + for ( $i = 0, $count = count( $thread_ids ); $i < $count; ++$i ) + BP_Messages_Thread::delete($thread_ids[$i]); + + _e( 'Messages deleted.', 'huddle' ); + } +} +add_action( 'wp_ajax_messages_delete', 'bp_dtheme_ajax_messages_delete' ); + +/** + * bp_dtheme_ajax_messages_autocomplete_results() + * + * AJAX handler for autocomplete. Displays friends only, unless BP_MESSAGES_AUTOCOMPLETE_ALL is defined + * + * @global object object $bp Global BuddyPress settings object + * @return none + */ +function bp_dtheme_ajax_messages_autocomplete_results() { + global $bp; + + // Include everyone in the autocomplete, or just friends? + if ( $bp->messages->slug == $bp->current_component ) + $autocomplete_all = $bp->messages->autocomplete_all; + + $friends = false; + $pag_page = 1; + + $limit = $_GET['limit'] ? $_GET['limit'] : apply_filters( 'bp_autocomplete_max_results', 10 ); + + // Get the user ids based on the search terms + if ( !empty( $autocomplete_all ) ) { + $users = BP_Core_User::search_users( $_GET['q'], $limit, $pag_page ); + + if ( !empty( $users['users'] ) ) { + // Build an array with the correct format + $user_ids = array(); + foreach( $users['users'] as $user ) { + if ( $user->id != $bp->loggedin_user->id ) + $user_ids[] = $user->id; + } + + $user_ids = apply_filters( 'bp_core_autocomplete_ids', $user_ids, $_GET['q'], $limit ); + } + } else { + if ( bp_is_active( 'friends' ) ) { + $users = friends_search_friends( $_GET['q'], $bp->loggedin_user->id, $limit, 1 ); + + // Keeping the bp_friends_autocomplete_list filter for backward compatibility + $users = apply_filters( 'bp_friends_autocomplete_list', $users, $_GET['q'], $limit ); + + if ( !empty( $users['friends'] ) ) + $user_ids = apply_filters( 'bp_friends_autocomplete_ids', $users['friends'], $_GET['q'], $limit ); + } + } + + if ( !empty( $user_ids ) ) { + foreach ( $user_ids as $user_id ) { + $ud = get_userdata( $user_id ); + if ( !$ud ) + continue; + + if ( bp_is_username_compatibility_mode() ) + $username = $ud->user_login; + else + $username = $ud->user_nicename; + + echo '' . bp_core_fetch_avatar( array( 'item_id' => $user_id, 'type' => 'thumb', 'width' => 15, 'height' => 15 ) ) . '  ' . bp_core_get_user_displayname( $user_id ) . ' (' . $username . ') + '; + } + } +} +add_action( 'wp_ajax_messages_autocomplete_results', 'bp_dtheme_ajax_messages_autocomplete_results' ); + +?> \ No newline at end of file diff --git a/wp-content/themes/huddle/functions.php b/wp-content/themes/huddle/functions.php new file mode 100644 index 0000000..2145183 --- /dev/null +++ b/wp-content/themes/huddle/functions.php @@ -0,0 +1,531 @@ +name ), 'twitter' ) ) { + if( !substr_count( $field->data->value, 'twitter.com' ) ) { + $value = 'http://twitter.com/' . $value; + } + } elseif( substr_count( strtolower( $field->name ), 'about' ) ) { + + } else { + $values = explode( ',', $value ); + + if ( $values ) { + foreach ( (array)$values as $value ) { + $value = trim( $value ); + + // If the value is a URL, skip it and just make it clickable. + if ( preg_match( '@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', $value ) ) { + $new_values[] = make_clickable( $value ); + } else { + if ( count( explode( ' ', $value ) ) > 5 ) { + $new_values[] = $value; + } else { + $new_values[] = '' . $value . ''; + } + } + } + + $value = implode( ', ', $new_values ); + } + } + + return $value; +} + +function huddle_bp_get_add_friend_button( $button ) { + $button['link_class'] .= ' btn-gray'; + return $button; +} + +add_filter( 'bp_get_group_member_count', 'huddle_bp_get_group_member_count' ); + +function huddle_bp_get_group_member_count( $text ) { + return ucwords( $text ); +} + + + +/* ------------------------------------------------ + BuddyPress Create Blog +------------------------------------------------ */ + +function huddle_bp_show_blog_signup_form($blogname = '', $blog_title = '', $errors = '') { + global $current_user, $current_site; + global $bp; + + if ( isset($_POST['submit']) ) { + huddle_bp_blogs_validate_blog_signup(); + } else { + if ( ! is_wp_error($errors) ) { + $errors = new WP_Error(); + } + + // allow definition of default variables + $filtered_results = apply_filters('signup_another_blog_init', array('blogname' => $blogname, 'blog_title' => $blog_title, 'errors' => $errors )); + $blogname = $filtered_results['blogname']; + $blog_title = $filtered_results['blog_title']; + $errors = $filtered_results['errors']; + + if ( $errors->get_error_code() ) { + echo "

                  " . __('There was a problem, please correct the form below and try again.', 'buddypress') . "

                  "; + } + ?> +

                  add a site to your account. There is no limit to the number of sites that you can have, so create to your heart's content, but blog responsibly!", 'buddypress'), $current_user->display_name) ?>

                  + +

                  + +
                  + + + + + + +

                  + +

                  + + +
                  + '; + + // Blog name + if( !is_subdomain_install() ) + echo ''; + else + echo ''; + + if ( !is_subdomain_install() ) + echo '' . $current_site->domain . $current_site->path . '  
                  '; + else + echo ' .' . preg_replace( '|^www\.|', '', $current_site->domain ) . $current_site->path . '
                  '; + + if ( !is_user_logged_in() ) { + print '(' . __( 'Your address will be ' , 'buddypress'); + + if ( !is_subdomain_install() ) { + print $current_site->domain . $current_site->path . __( 'blogname' , 'buddypress'); + } else { + print __( 'domain.' , 'buddypress') . $current_site->domain . $current_site->path; + } + + echo '. ' . __( 'Must be at least 4 characters, letters and numbers only. It cannot be changed so choose carefully!)' , 'buddypress') . '

                  '; + } + + if ( $errmsg = $errors->get_error_message('blogname') ) { ?> + + + + '; + ?> + +

                  + +

                  + + get_error_message('blog_title') ) { ?> + + +

                  + +

                  + + +   + +     + +

                  + + get_error_code() ) { + unset($_POST['submit']); + huddle_bp_show_blog_signup_form( $blogname, $blog_title, $errors ); + return false; + } + + $public = (int) $_POST['blog_public']; + + $meta = apply_filters( 'signup_create_blog_meta', array( 'lang_id' => 1, 'public' => $public ) ); // depreciated + $meta = apply_filters( 'add_signup_meta', $meta ); + + // If this is a subdomain install, set up the site inside the root domain. + if ( is_subdomain_install() ) + $domain = $blogname . '.' . preg_replace( '|^www\.|', '', $current_site->domain ); + + wpmu_create_blog( $domain, $path, $blog_title, $current_user->id, $meta, $wpdb->siteid ); + bp_blogs_confirm_blog_signup($domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta); + return true; +} + + + +/* ------------------------------------------------ + Setup Theme +------------------------------------------------ */ + +if ( ! isset( $content_width ) ) $content_width = 584; + +add_action( 'after_setup_theme', 'huddle_theme_setup' ); + +function huddle_theme_setup() { + + load_theme_textdomain( 'huddle', TEMPLATEPATH . '/languages' ); + + $locale = get_locale(); + $locale_file = TEMPLATEPATH . "/languages/$locale.php"; + if ( is_readable( $locale_file ) ) require_once( $locale_file ); + + add_theme_support( 'automatic-feed-links' ); + + register_nav_menus( array( + 'main-menu' => __( 'Main Menu', 'huddle' ), + 'footer-menu' => __( 'Footer Menu', 'huddle' ) + ) ); + + add_theme_support( 'post-thumbnails' ); + + set_post_thumbnail_size( 600, 303, true ); + + add_image_size( 'post-medium', 290, 145, true ); + add_image_size( 'post-small', 35, 35, true ); + +} + + + +/* ------------------------------------------------ + Load Theme Options +------------------------------------------------ */ + +if( ! function_exists( 'of_get_option' ) ) { + function of_get_option( $name, $default = false ) { + $config = get_option( 'optionsframework' ); + + if ( ! isset( $config['id'] ) ) { + return $default; + } + + $options = get_option( $config['id'] ); + + if ( isset( $options[$name] ) && ! empty( $options[$name] ) ) { + return $options[$name]; + } + + return $default; + } +} + +if ( ! function_exists( 'optionsframework_init' ) ) { + + if ( STYLESHEETPATH == TEMPLATEPATH ) { + define('OPTIONS_FRAMEWORK_URL', TEMPLATEPATH . '/admin/'); + define('OPTIONS_FRAMEWORK_DIRECTORY', get_template_directory_uri() . '/admin/'); + } else { + define('OPTIONS_FRAMEWORK_URL', STYLESHEETPATH . '/admin/'); + define('OPTIONS_FRAMEWORK_DIRECTORY', get_stylesheet_directory_uri() . '/admin/'); + } + + require_once (OPTIONS_FRAMEWORK_URL . 'options-framework.php'); +} + + + +/* ------------------------------------------------ + Register Dependant Javascript Files +------------------------------------------------ */ + +add_action('wp_enqueue_scripts', 'huddle_load_js'); + +if( ! function_exists( 'huddle_load_js' ) ) { + function huddle_load_js() { + global $is_IE; + + if ( is_admin() ) { + + + + } else { + + wp_deregister_script( 'jquery' ); + wp_deregister_script( 'l10n' ); + + wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' ); + wp_register_script( 'html5shim', 'http://html5shim.googlecode.com/svn/trunk/html5.js' ); + wp_register_script( 'superfish', get_template_directory_uri() . '/js/superfish.js', array( 'jquery' ) ); + wp_register_script( 'buddypress', get_template_directory_uri() . '/js/buddypress.js', array( 'jquery' ) ); + wp_register_script( 'colorbox', get_template_directory_uri() . '/js/jquery.colorbox-min.js', array( 'jquery' ) ); + wp_register_script( 'theme_custom', get_template_directory_uri() . '/js/custom.js', array( 'jquery' ), 1.0, TRUE ); + + wp_enqueue_script( array( 'superfish', 'colorbox', 'buddypress', 'theme_custom' ) ); + + if( is_single() ) wp_enqueue_script( 'comment-reply' ); + if( $is_IE ) wp_enqueue_script( 'html5shim' ); + } + } +} + + + +/* ------------------------------------------------ + Remove Extra

                  Tags From Excerpt Output +------------------------------------------------ */ + +function huddle_excerpt($content) { + $content = preg_replace(array('#

                  #', '#

                  #'), '', $content); + return $content; +} +add_filter('the_excerpt', 'huddle_excerpt'); + + + +/* ------------------------------------------------ + Excerpt Length +------------------------------------------------ */ + +add_filter( 'excerpt_length', 'huddle_excerpt_length' ); + +function huddle_excerpt_length( $length ) { + return 40; +} + + + +/* ------------------------------------------------ + Excerpt More Link +------------------------------------------------ */ + +add_filter( 'excerpt_more', 'huddle_auto_excerpt_more' ); + +if( ! function_exists( 'huddle_auto_excerpt_more' ) ) { + function huddle_auto_excerpt_more( $more ) { + return '.'; + } +} + + + +/* ------------------------------------------------ + Register Sidebars +------------------------------------------------ */ + +add_action( 'widgets_init', 'huddle_widgets_init' ); + +if( ! function_exists( 'huddle_widgets_init' ) ) { + function huddle_widgets_init() { + + register_sidebar( array( + 'name' => __( 'Homepage Sidebar', 'huddle' ), + 'id' => 'sidebar-home', + 'before_widget' => '
                  ', + 'after_widget' => "
                  ", + 'before_title' => '

                  ', + 'after_title' => '

                  ', + ) ); + + register_sidebar( array( + 'name' => __( 'Blog Sidebar', 'huddle' ), + 'id' => 'sidebar-blog', + 'before_widget' => '
                  ', + 'after_widget' => "
                  ", + 'before_title' => '

                  ', + 'after_title' => '

                  ', + ) ); + + register_sidebar( array( + 'name' => __( 'Page Sidebar', 'huddle' ), + 'id' => 'sidebar-page', + 'before_widget' => '
                  ', + 'after_widget' => "
                  ", + 'before_title' => '

                  ', + 'after_title' => '

                  ', + ) ); + + register_sidebar( array( + 'name' => __( 'Footer Sidebar', 'huddle' ), + 'id' => 'sidebar-footer', + 'description' => __( 'An optional widget area for your site footer', 'huddle' ), + 'before_widget' => '
                  ', + 'after_widget' => "
                  ", + 'before_title' => '

                  ', + 'after_title' => '

                  ', + ) ); + + } +} + + + +/* ------------------------------------------------ + Expanding Body Class +------------------------------------------------ */ + +add_filter( 'body_class', 'huddle_body_class' ); + +if( ! function_exists( 'huddle_body_class' ) ) { + + function huddle_body_class( $classes ) { + + if( isset( $_GET['w-iframe'] ) ) $classes[] = 'with-iframe'; + + if( isset( $_GET['style'] ) ) { + $classes[] = $_GET['style']; + } else { + $classes[] = of_get_option( 'style' ); + } + + if( ! is_user_logged_in() ) { + $classes[] = 'not-logged-in'; + } + + return $classes; + } + +} + + +/* ------------------------------------------------ + Comments Template +------------------------------------------------ */ + +if( ! function_exists( 'huddle_comments' ) ) { + function huddle_comments($comment, $args, $depth) { + $path = get_template_directory_uri(); + $GLOBALS['comment'] = $comment; + ?> + +
                • id="li-comment-"> +
                  +
                  + +
                  +

                  +

                  + + $depth, 'before' => ' · ' ) ) ); ?> +

                  +
                  + +
                  + comment_approved == '0' ) : ?> + +
                  + + + +
                  + +
                  +
                  + '; + $var_dump ? var_dump( $s ) : print_r( $s ); + echo ''; + } +} + +if( ! function_exists( 'wp_trim_words' ) ) { + function wp_trim_words( $excerpt, $charlength, $more = '...' ) { + $o = ''; + $charlength++; + if(strlen($excerpt)>$charlength) { + $subex = substr($excerpt,0,$charlength-5); + $exwords = explode(" ",$subex); + $excut = -(strlen($exwords[count($exwords)-1])); + if($excut<0) { + $o .= substr($subex,0,$excut); + } else { + $o .= $subex; + } + $o .= $more; + } else { + $o .= $excerpt; + } + return $o; + } +} \ No newline at end of file diff --git a/wp-content/themes/huddle/functions/paginate.php b/wp-content/themes/huddle/functions/paginate.php new file mode 100644 index 0000000..72a7e93 --- /dev/null +++ b/wp-content/themes/huddle/functions/paginate.php @@ -0,0 +1,80 @@ +options = array_merge(array( + 'total' => 0, + 'nr_per_page' => 25, + 'between' => 3, + 'qs' => 'pages' + ),$options); + + $get = 1; + if(isset($_GET[$this->options['qs']])) $get = (int) $_GET[$this->options['qs']]; + + if(isset($get) && !empty($get)){ + $limit_x = (($get-1)*$this->options['nr_per_page']); + }else{ + $limit_x = 0; + } + + $this->limit = $limit_x.','.$this->options['nr_per_page']; + $this->options['pages'] = ceil($this->options['total']/$this->options['nr_per_page']); + $last = $this->options['pages']; + $this->options['current_page'] = $limit_x/$this->options['nr_per_page']+1; + $start = 1; + $stop = $this->options['current_page'] + $this->options['between']; + if($this->options['current_page'] > $this->options['between']) $start = $this->options['current_page'] - $this->options['between']; + if($this->options['pages'] < $stop) $stop = $this->options['pages']; + + if($this->options['total'] > $this->options['nr_per_page']){ + + $nav = ''.__('Page', 'huddle').' '.($this->options['current_page']).' '.__('of', 'huddle').' '.$this->options['pages'].' '; + + $gets = array(); + foreach($_GET as $gk=>$gv){ + if($gk != $this->options['qs']) array_push($gets,$gk.'='.$gv); + } + + $base_url = current(explode('?', $_SERVER['REQUEST_URI'])).'?'.implode('&',$gets); + + if($limit_x != 0) $nav .= ' '; + + for($nr = $start; $nr <= $stop; $nr++ ){ + if($limit_x != ($nr-1)*$this->options['nr_per_page']) + $nav .= ''.$nr.' '; + else + $nav .= ''.$nr.' '; + } + + if($get != $last) $nav .= ' '; + + $this->nav = $nav; + } + + } + + function nav(){ + return '
                  '.$this->nav.'
                  '; + } + + function limit(){ + return $this->limit; + } + + function get($i){ + if($this->options[$i]) return $this->options[$i]; + return false; + } + +} diff --git a/wp-content/themes/huddle/functions/shortcodes.php b/wp-content/themes/huddle/functions/shortcodes.php new file mode 100644 index 0000000..db460dc --- /dev/null +++ b/wp-content/themes/huddle/functions/shortcodes.php @@ -0,0 +1,182 @@ +' . do_shortcode($content) . ''; + } +add_shortcode('one_third', 'huddle_one_third'); + + +function huddle_one_third_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('one_third_last', 'huddle_one_third_last'); + + +function huddle_two_third( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('two_third', 'huddle_two_third'); + + +function huddle_two_third_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('two_third_last', 'huddle_two_third_last'); + + +function huddle_one_half( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('one_half', 'huddle_one_half'); + + +function huddle_one_half_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('one_half_last', 'huddle_one_half_last'); + + +function huddle_one_fourth( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('one_fourth', 'huddle_one_fourth'); + + +function huddle_one_fourth_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('one_fourth_last', 'huddle_one_fourth_last'); + + +function huddle_three_fourth( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('three_fourth', 'huddle_three_fourth'); + + +function huddle_three_fourth_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('three_fourth_last', 'huddle_three_fourth_last'); + + +function huddle_one_fifth( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('one_fifth', 'huddle_one_fifth'); + + +function huddle_one_fifth_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('one_fifth_last', 'huddle_one_fifth_last'); + + +function huddle_two_fifth( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('two_fifth', 'huddle_two_fifth'); + + +function huddle_two_fifth_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('two_fifth_last', 'huddle_two_fifth_last'); + + +function huddle_three_fifth( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('three_fifth', 'huddle_three_fifth'); + + +function huddle_three_fifth_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('three_fifth_last', 'huddle_three_fifth_last'); + + +function huddle_four_fifth( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('four_fifth', 'huddle_four_fifth'); + + +function huddle_four_fifth_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('four_fifth_last', 'huddle_four_fifth_last'); + + +function huddle_one_sixth( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('one_sixth', 'huddle_one_sixth'); + + +function huddle_one_sixth_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('one_sixth_last', 'huddle_one_sixth_last'); + + +function huddle_five_sixth( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('five_sixth', 'huddle_five_sixth'); + + +function huddle_five_sixth_last( $atts, $content = null ) { + return '
                  ' . do_shortcode($content) . '
                  '; + } +add_shortcode('five_sixth_last', 'huddle_five_sixth_last'); + + +?> \ No newline at end of file diff --git a/wp-content/themes/huddle/functions/widgets/widget-enews.php b/wp-content/themes/huddle/functions/widgets/widget-enews.php new file mode 100644 index 0000000..cfeea9f --- /dev/null +++ b/wp-content/themes/huddle/functions/widgets/widget-enews.php @@ -0,0 +1,110 @@ + 'widget-enews', 'description' => __('Subscribe to email updates.', 'huddle') ); + $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'widget-enews' ); + $this->WP_Widget( 'widget-enews', __('Huddle: eNews Signup','huddle'), $widget_ops, $control_ops ); + } + + function widget( $args, $instance ) { + extract( $args ); + $title = apply_filters('widget_title', $instance['title'] ); + $enews_text = $instance['enews_text']; + $enews_input = $instance['enews_input']; + $enews_id = $instance['enews_id']; + $enews_btn = $instance['enews_btn']; + echo $before_widget; + ?> + + + + + + post_title ?> → + + + + + + +
                  +
                  + + +
                  + + + +
                  + +
                  + 'Email Updates', + 'privacy_page' => '0', + 'enews_text' => '

                  Lorem ipsum dolor sit amet, quae jugis sudo, consequat, distineo, aliquip diam abdo saga citer.

                  ', + 'enews_input' => 'Enter Valid Email Address', + 'enews_id' => 'TechCrunch', + 'enews_btn' => 'Sign Up' + ); + $instance = wp_parse_args( (array) $instance, $defaults ); ?> +

                  + + +

                  +

                  + + +

                  +

                  + + +

                  +

                  + + +

                  +

                  + + +

                  +

                  + + +

                  + 'widget-flickr', 'description' => __('Display your flickr photos.', 'huddle') ); + $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'widget-flickr' ); + $this->WP_Widget( 'widget-flickr', __('Huddle: Flickr Photos', 'huddle'), $widget_ops, $control_ops ); + } + + function widget( $args, $instance ) { + extract( $args ); + $title = apply_filters('widget_title', $instance['title'] ); + $flickr_id = $instance['flickr_id']; + $flickr_count = $instance['flickr_count']; + $flickr_type = $instance['flickr_type']; + echo $before_widget; + if ( $title ) { + echo $before_title . $title; ?> + + +
                  + + +
                  +
                  + 'Flickr Photos', + 'flickr_id' => '675729@N22', + 'flickr_count' => '9', + 'flickr_type' => 'group' + ); + $instance = wp_parse_args( (array) $instance, $defaults ); ?> +

                  +

                  +

                  + +

                  +

                  + + +

                  + name = __('Huddle: Posts', 'huddle'); + $this->widget_options['description'] = __('The most recent/popular posts on your site', 'huddle'); + } + + function widget($args, $instance) { + $cache = wp_cache_get('widget_recent_posts', 'widget'); + + if ( !is_array($cache) ) + $cache = array(); + + if ( isset($cache[$args['widget_id']]) ) { + echo $cache[$args['widget_id']]; + return; + } + + ob_start(); + extract($args); + + $title = apply_filters('widget_title', empty($instance['title']) ? __( 'Recent Posts', 'huddle' ) : $instance['title'], $instance, $this->id_base); + if ( ! $number = absint( $instance['number'] ) ) + $number = 10; + $thumbs = isset($instance['thumbs']) && $instance['thumbs']; + $show = isset($instance['show']) ? $instance['show'] : 'recent'; + + $wpq_args = array('posts_per_page' => $number, 'nopaging' => 0, 'post_status' => 'publish', 'ignore_sticky_posts' => true); + if($show == 'popular') { + $wpq_args['orderby'] = 'comment_count'; + } + + $r = new WP_Query($wpq_args); + if ($r->have_posts()) : + ?> + + + have_posts()) : $r->the_post(); ?> +
                  +
                  +

                  + + + , + + + +
                  +
                  + + + +

                  + +

                  +

                  + /> + +

                  + 'widget-archive', 'description' => __('A widget that displays categories, pages, and archives.', 'huddle') ); + $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'widget-archive' ); + $this->WP_Widget( 'widget-archive', __('Huddle: Tabbed Archive', 'huddle'), $widget_ops, $control_ops ); + } + + function widget( $args, $instance ) { + global $wpdb; + extract( $args ); + $title = apply_filters('widget_title', $instance['title'] ); + $title_cats = $instance['title_cats']; + $title_pages = $instance['title_pages']; + $title_archive = $instance['title_archive']; + echo $before_widget; + if ( $title ) + echo $before_title . $title . $after_title; + ?> +
                    +
                  • +
                  • +
                  • +
                  +
                  +
                  +
                  +
                    + +
                  +
                  +
                  +
                    + +
                  +
                  +
                  +
                    + +
                  +
                  +
                  +
                  + '', + 'title_cats' => 'Categories', + 'title_pages' => 'Pages', + 'title_archive' => 'Archives', + ); + $instance = wp_parse_args( (array) $instance, $defaults ); ?> +

                  +

                  +

                  +

                  + \ No newline at end of file diff --git a/wp-content/themes/huddle/functions/widgets/widget-tab-posts.php b/wp-content/themes/huddle/functions/widgets/widget-tab-posts.php new file mode 100644 index 0000000..9207023 --- /dev/null +++ b/wp-content/themes/huddle/functions/widgets/widget-tab-posts.php @@ -0,0 +1,156 @@ + 'widget-posts', 'description' => __('A widget that display popular posts, recent posts, recent comments and tags.', 'huddle') ); + $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'widget-posts' ); + $this->WP_Widget( 'widget-posts', __('Huddle: Tabbed Posts', 'huddle'), $widget_ops, $control_ops ); + } + + function widget( $args, $instance ) { + global $wpdb; + extract( $args ); + $title = apply_filters('widget_title', $instance['title'] ); + $title_popular = $instance['title_popular']; + $title_recent = $instance['title_recent']; + $title_comments = $instance['title_comments']; + $display_count = $instance['display_count']; + echo $before_widget; + if ( $title ) + echo $before_title . $title . $after_title; + ?> +
                    +
                  • +
                  • +
                  • +
                  +
                  +
                  + + query( 'showposts=' . $display_count . '&orderby=comment_count' ); ?> +
                  + have_posts()) : $huddle_popular_posts->the_post(); ?> +
                  +
                  +

                  + + + , + + + +
                  +
                  + +
                  + + query('showposts='.$display_count.''); ?> +
                  + have_posts()) : $huddle_recent_posts->the_post(); ?> +
                  +
                  +

                  + + + , + + + +
                  +
                  + +
                  + + +
                  + comments + LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = + $wpdb->posts.ID) + WHERE comment_approved = '1' AND comment_type = '' AND + post_password = '' + ORDER BY comment_date_gmt DESC LIMIT ".$display_count; + $huddle_recent_comments = $wpdb->get_results($huddle_recent_comments_query); + foreach ($huddle_recent_comments as $huddle_recent_comment) { + ?> +
                  +
                  +
                  +

                  comment_author); ?>

                  + comment_excerpt); ?>... +
                  +
                  + +
                  +
                  + + '', + 'title_popular' => 'Popular', + 'title_recent' => 'Recent', + 'title_comments' => 'Comments', + 'display_count' => 5, + ); + $instance = wp_parse_args( (array) $instance, $defaults ); ?> +

                  +

                  +

                  +

                  +

                  + +

                  + \ No newline at end of file diff --git a/wp-content/themes/huddle/functions/widgets/widget-tweets.php b/wp-content/themes/huddle/functions/widgets/widget-tweets.php new file mode 100644 index 0000000..229ccb9 --- /dev/null +++ b/wp-content/themes/huddle/functions/widgets/widget-tweets.php @@ -0,0 +1,71 @@ + 'widget-twitter', 'description' => __('Displays your latest tweets.', 'huddle') ); + $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'widget-twitter' ); + $this->WP_Widget( 'widget-twitter', __('Huddle: Latest Tweets','huddle'), $widget_ops, $control_ops ); + } + + function widget( $args, $instance ) { + extract( $args ); + $title = apply_filters('widget_title', $instance['title'] ); + $huddle_twitter_id = $instance['huddle_twitter_id']; + $huddle_twitter_count = $instance['huddle_twitter_count']; + $huddle_twitter_text = $instance['huddle_twitter_text']; + echo $before_widget; + if ( $title ) { + echo $before_title . $title; ?> + "> + + +
                  + + 'Recent Tweets', + 'huddle_twitter_id' => 'aaronlynch', + 'huddle_twitter_count' => '2', + 'huddle_twitter_text' => 'Follow Us →', + ); + $instance = wp_parse_args( (array) $instance, $defaults ); ?> +

                  +

                  +

                  +

                  + \ No newline at end of file diff --git a/wp-content/themes/huddle/functions/widgets/widget-video.php b/wp-content/themes/huddle/functions/widgets/widget-video.php new file mode 100644 index 0000000..9a788ed --- /dev/null +++ b/wp-content/themes/huddle/functions/widgets/widget-video.php @@ -0,0 +1,61 @@ + 'widget-video', 'description' => __('Displays a featured video.', 'huddle') ); + $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'widget-video' ); + $this->WP_Widget( 'widget-video', __('Huddle: Video Widget', 'huddle'), $widget_ops, $control_ops ); + } + + function widget( $args, $instance ) { + extract( $args ); + $title = apply_filters('widget_title', $instance['title'] ); + $huddle_vid_embed = $instance['huddle_vid_embed1']; + $huddle_vid_desc = $instance['huddle_vid_desc1']; + + echo $before_widget; + if ( $title ) + echo $before_title . $title . $after_title; + + if ($huddle_vid_embed) { + echo '
                  '.$huddle_vid_embed.'
                  + '.$huddle_vid_desc.' + '; + } + + echo $after_widget; + } + + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['huddle_vid_embed1'] = $new_instance['huddle_vid_embed1']; + $instance['huddle_vid_desc1'] = $new_instance['huddle_vid_desc1']; + return $instance; + } + + function form( $instance ) { + $defaults = array(); + $instance = wp_parse_args( (array) $instance, $defaults ); ?> +

                  + +

                  :

                  +

                  +

                  + + \ No newline at end of file diff --git a/wp-content/themes/huddle/groups/create.php b/wp-content/themes/huddle/groups/create.php new file mode 100644 index 0000000..7a0d3fa --- /dev/null +++ b/wp-content/themes/huddle/groups/create.php @@ -0,0 +1,314 @@ + + + + + +
                  + +
                  +

                  +
                  + + + + + +
                  + + + +
                  + + + + + + +

                  + + +

                  + +

                  + + +

                  + + + + + + + + + + + + + +
                  + +
                  + + + + +
                  + Group forums require the correct setup and configuration of a bbPress installation.', 'huddle' ), bp_get_root_domain() . '/wp-admin/admin.php?page=bb-forums-setup' ); ?> +
                  + + + + + +
                  + +

                  + +
                  + + + + + +
                  + +
                  + +

                  + +

                  + +
                  + + + + + +
                  + +
                  + + + + + + + + + + + + + + +
                  + + + +
                  + +
                  +

                  + +

                  + + + +

                  + +

                  +
                  + + + + + +

                  + + <?php _e( 'Avatar to crop', 'huddle' ); ?> + +
                  + <?php _e( 'Avatar preview', 'huddle' ); ?> +
                  + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + +
                  +
                    + +
                  + + +
                  + +
                  + +
                  + +
                  +

                  +
                  + + +
                    + + + + + +
                  • + + + +

                    + + +
                    + +
                    +
                  • + + + + + + + +
                  + +
                  + + + +
                  +

                  +
                  + + + + + + + + + + + + + + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + +
                  + + + +
                  + +
                  + + diff --git a/wp-content/themes/huddle/groups/groups-loop.php b/wp-content/themes/huddle/groups/groups-loop.php new file mode 100644 index 0000000..e1e34fb --- /dev/null +++ b/wp-content/themes/huddle/groups/groups-loop.php @@ -0,0 +1,98 @@ + + + + + + + + + + + +
                    + + + 2 ) $i_column = 1; + ?> + +
                  • +
                    + +
                    + +
                    +
                    + +
                    + + + +
                    + +
                    + + +
                    + + + + +
                    + +
                    +
                  • + + + +
                  + + + + + + + +
                  +

                  +
                  + + + + diff --git a/wp-content/themes/huddle/groups/index.php b/wp-content/themes/huddle/groups/index.php new file mode 100644 index 0000000..0da23ef --- /dev/null +++ b/wp-content/themes/huddle/groups/index.php @@ -0,0 +1,88 @@ + + + + + +
                  +
                  + + + +
                  + + + +

                  +

                  + +        +

                  + + + + + + + + + +
                  + + + +
                  + +
                  +

                  +

                  total_group_count / 14 ) ) ?>

                  +
                  + + + + + + + +
                  + + + +
                  +
                  + + + + + + diff --git a/wp-content/themes/huddle/groups/single/activity.php b/wp-content/themes/huddle/groups/single/activity.php new file mode 100644 index 0000000..2de3859 --- /dev/null +++ b/wp-content/themes/huddle/groups/single/activity.php @@ -0,0 +1,39 @@ + + + + + + + + + + + +
                  + +
                  + + diff --git a/wp-content/themes/huddle/groups/single/admin.php b/wp-content/themes/huddle/groups/single/admin.php new file mode 100644 index 0000000..a6f34fd --- /dev/null +++ b/wp-content/themes/huddle/groups/single/admin.php @@ -0,0 +1,414 @@ + + +
                  + + + + + + + + +

                  + + +

                  + +

                  + + +

                  + + + +

                  + +   + +

                  +

                  + + + +

                  + + + + + + + + + + + + + +

                  + +
                  + +
                  +
                  + +
                  + + + + + +

                  + +
                  + + + + + +
                  + +
                  + +

                  + +

                  + +
                  +

                  + +

                  + +

                  + +

                  + +

                  + +

                  +
                  + +
                  + + + +

                  + + + + + + + + + +

                  + +

                  + + + +

                  + + +

                  +

                  + + 'delete_group_avatar', 'component' => 'groups', 'wrapper_id' => 'delete-group-avatar-button', 'link_class' => 'edit btn-gray', 'link_href' => bp_get_group_avatar_delete_link(), 'link_title' => __( 'Delete Avatar', 'huddle' ), 'link_text' => __( 'Delete Avatar', 'huddle' ) ) ); ?> + + + + + + + + + +

                  + + <?php _e( 'Avatar to crop', 'huddle' ) ?> + +
                  + <?php _e( 'Avatar preview', 'huddle' ) ?> +
                  + + + + + + + + + + + + + + + + + + + + +
                  +

                  + + + +
                    + + +
                  • +
                    + bp_get_member_user_id(), 'type' => 'thumb', 'width' => 35, 'height' => 35, 'alt' => __( 'Profile picture of %s', 'huddle' ) ) ) ?> +
                    + +
                    +
                    + +
                    +
                    + +
                    + +
                    +
                  • + + +
                  + + + +
                  + + +
                  +

                  + + +
                    + + +
                  • +
                    + bp_get_member_user_id(), 'type' => 'thumb', 'width' => 35, 'height' => 35, 'alt' => __( 'Profile picture of %s', 'huddle' ) ) ) ?> +
                    + +
                    +
                    + +
                    +
                    + +
                    + + +
                    +
                  • + + +
                  + + +
                  + + + +
                  +

                  + + + + + + + + + +
                    + + +
                  • +
                    + +
                    + +
                    +
                    + + + +
                    +
                    + +
                    + + + · + + + + · + · + · + + + + + + + +
                    + +
                  • + + +
                  + + + +
                  +

                  +
                  + + + +
                  + + + + + + + + + + + + +
                    + + +
                  • + +
                    + +
                    + +
                    +
                    + +
                    + +
                    + +
                    +
                    + + + +
                    + + 'group_membership_accept', 'component' => 'groups', 'wrapper_class' => 'accept', 'link_href' => bp_get_group_request_accept_link(), 'link_title' => __( 'Accept', 'huddle' ), 'link_text' => __( 'Accept', 'huddle' ) ) ); ?> + + 'group_membership_reject', 'component' => 'groups', 'wrapper_class' => 'reject', 'link_href' => bp_get_group_request_reject_link(), 'link_title' => __( 'Reject', 'huddle' ), 'link_text' => __( 'Reject', 'huddle' ) ) ); ?> + + + +
                    +
                  • + + +
                  + + + +
                  +

                  +
                  + + + + + + + + + + + + + + +
                  +

                  +
                  + +

                  + + + +
                  + +
                  + + + + + + + + + + + + +
                  + diff --git a/wp-content/themes/huddle/groups/single/forum.php b/wp-content/themes/huddle/groups/single/forum.php new file mode 100644 index 0000000..572fcfb --- /dev/null +++ b/wp-content/themes/huddle/groups/single/forum.php @@ -0,0 +1,97 @@ + + + + +
                  + + + +
                  + + + + + + + + + +
                  +
                  + + + + +

                  + + +

                  +

                  + + + + + + + + + + + + +
                  + +
                  + + +
                  +
                  + + + + + diff --git a/wp-content/themes/huddle/groups/single/forum/edit.php b/wp-content/themes/huddle/groups/single/forum/edit.php new file mode 100644 index 0000000..ce6309c --- /dev/null +++ b/wp-content/themes/huddle/groups/single/forum/edit.php @@ -0,0 +1,104 @@ + + + + +
                  + + + +
                  + + + + + + + +

                  ()

                  +
                  + + + +
                  + + + + + +
                  + + + +

                  + + +

                  + +

                  + + +

                  + +

                  + + +

                  + + + +

                  + + + +
                  + + + +
                  + + + + + + + +

                  + + + +
                  + + + + + +
                  + + + +
                  +

                  +
                  + + + + diff --git a/wp-content/themes/huddle/groups/single/forum/topic.php b/wp-content/themes/huddle/groups/single/forum/topic.php new file mode 100644 index 0000000..8f59b51 --- /dev/null +++ b/wp-content/themes/huddle/groups/single/forum/topic.php @@ -0,0 +1,139 @@ + + + + +
                  + + + +
                  + + + + + + + +

                  + +

                  + + + +
                  + + + +
                    + + +
                  • + + +
                    + + +

                    +

                    +
                    + +
                    + + + + + + + +
                    +
                  • + + +
                  + + + +
                  + + + +
                  + + + + + + + +
                  +

                  + + +

                  + + + + +

                  + +

                  + +

                  + +
                  + +
                  + + + + +
                  + + + +
                  +

                  +
                  + + + + + + + +
                  + + + +
                  +

                  +
                  + + + + diff --git a/wp-content/themes/huddle/groups/single/group-header.php b/wp-content/themes/huddle/groups/single/group-header.php new file mode 100644 index 0000000..e2aa663 --- /dev/null +++ b/wp-content/themes/huddle/groups/single/group-header.php @@ -0,0 +1,79 @@ + + + + +
                  +

                  + + + + +
                  + + + +
                  + + + +
                  + + + +
                  +
                  + +
                  + + + +

                  + + + + + +

                  + + + +
                  + + \ No newline at end of file diff --git a/wp-content/themes/huddle/groups/single/home.php b/wp-content/themes/huddle/groups/single/home.php new file mode 100644 index 0000000..c76987d --- /dev/null +++ b/wp-content/themes/huddle/groups/single/home.php @@ -0,0 +1,86 @@ + + + + +
                  +
                  + + + + + + + +
                  + +
                  + +
                  + + + +
                  +

                  +
                  + + + +
                  + + + + + +
                  +
                  + + + diff --git a/wp-content/themes/huddle/groups/single/members.php b/wp-content/themes/huddle/groups/single/members.php new file mode 100644 index 0000000..9eb5b35 --- /dev/null +++ b/wp-content/themes/huddle/groups/single/members.php @@ -0,0 +1,82 @@ + + + + + + + + +
                    + + + +
                  • + + + + + + +
                    + + + + + + +
                    + + + + + +
                    + + +
                  • + + + +
                  + + + + + + + + + +
                  +

                  +
                  + + diff --git a/wp-content/themes/huddle/groups/single/plugins.php b/wp-content/themes/huddle/groups/single/plugins.php new file mode 100644 index 0000000..5579b34 --- /dev/null +++ b/wp-content/themes/huddle/groups/single/plugins.php @@ -0,0 +1,41 @@ + + +
                  +
                  + + + + +
                  + +
                  + +
                  + +
                  + +
                  + + + + + + +
                  + + + + + +
                  +
                  + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/groups/single/request-membership.php b/wp-content/themes/huddle/groups/single/request-membership.php new file mode 100644 index 0000000..a60f742 --- /dev/null +++ b/wp-content/themes/huddle/groups/single/request-membership.php @@ -0,0 +1,18 @@ + + + +

                  + +
                  + + + + + +

                  + + +

                  + + + diff --git a/wp-content/themes/huddle/groups/single/send-invites.php b/wp-content/themes/huddle/groups/single/send-invites.php new file mode 100644 index 0000000..baabe5c --- /dev/null +++ b/wp-content/themes/huddle/groups/single/send-invites.php @@ -0,0 +1,80 @@ + + + + +
                  + +
                  + +
                  +
                    + +
                  + + +
                  + +
                  + +
                  + +
                  +

                  +
                  + + + + +
                    + + + + +
                  • + + +

                    + + + + +
                    + + + +
                    +
                  • + + + + +
                  + + + +
                  + +
                  +
                  + +
                  + +
                  + + + + + + +
                  + + + +
                  +

                  +
                  + + + + diff --git a/wp-content/themes/huddle/header.php b/wp-content/themes/huddle/header.php new file mode 100644 index 0000000..8a07cae --- /dev/null +++ b/wp-content/themes/huddle/header.php @@ -0,0 +1,111 @@ + + + + + +> + + + + + + + + <?php wp_title( '|', true, 'right' ); bloginfo( 'name' ); if( is_front_page() ) echo ' - ' . get_bloginfo( 'description' ) ?> + + + + + + + + + + + + + + +> + + + + + + + + + +
                  + + + + + + + +
                  diff --git a/wp-content/themes/huddle/images/about.html b/wp-content/themes/huddle/images/about.html new file mode 100644 index 0000000..59321be --- /dev/null +++ b/wp-content/themes/huddle/images/about.html @@ -0,0 +1,11 @@ + + + +NEWONE.ORG + + + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/images/alpha-black-012.png b/wp-content/themes/huddle/images/alpha-black-012.png new file mode 100644 index 0000000..4d21fac Binary files /dev/null and b/wp-content/themes/huddle/images/alpha-black-012.png differ diff --git a/wp-content/themes/huddle/images/alpha-white-12.png b/wp-content/themes/huddle/images/alpha-white-12.png new file mode 100644 index 0000000..4d21fac Binary files /dev/null and b/wp-content/themes/huddle/images/alpha-white-12.png differ diff --git a/wp-content/themes/huddle/images/bg-activity-header.png b/wp-content/themes/huddle/images/bg-activity-header.png new file mode 100644 index 0000000..856f0f0 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-activity-header.png differ diff --git a/wp-content/themes/huddle/images/bg-activity-shadow-h.png b/wp-content/themes/huddle/images/bg-activity-shadow-h.png new file mode 100644 index 0000000..e0761fe Binary files /dev/null and b/wp-content/themes/huddle/images/bg-activity-shadow-h.png differ diff --git a/wp-content/themes/huddle/images/bg-activity-shadow-v.png b/wp-content/themes/huddle/images/bg-activity-shadow-v.png new file mode 100644 index 0000000..d4502d0 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-activity-shadow-v.png differ diff --git a/wp-content/themes/huddle/images/bg-billboard-sep.png b/wp-content/themes/huddle/images/bg-billboard-sep.png new file mode 100644 index 0000000..ae11eed Binary files /dev/null and b/wp-content/themes/huddle/images/bg-billboard-sep.png differ diff --git a/wp-content/themes/huddle/images/bg-billboard-slide.png b/wp-content/themes/huddle/images/bg-billboard-slide.png new file mode 100644 index 0000000..76c44d5 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-billboard-slide.png differ diff --git a/wp-content/themes/huddle/images/bg-content-shadow.png b/wp-content/themes/huddle/images/bg-content-shadow.png new file mode 100644 index 0000000..bce1040 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-content-shadow.png differ diff --git a/wp-content/themes/huddle/images/bg-footer-shadow.png b/wp-content/themes/huddle/images/bg-footer-shadow.png new file mode 100644 index 0000000..b851cad Binary files /dev/null and b/wp-content/themes/huddle/images/bg-footer-shadow.png differ diff --git a/wp-content/themes/huddle/images/bg-forum-sep.png b/wp-content/themes/huddle/images/bg-forum-sep.png new file mode 100644 index 0000000..9123cbe Binary files /dev/null and b/wp-content/themes/huddle/images/bg-forum-sep.png differ diff --git a/wp-content/themes/huddle/images/bg-groups-tab.png b/wp-content/themes/huddle/images/bg-groups-tab.png new file mode 100644 index 0000000..d97e64e Binary files /dev/null and b/wp-content/themes/huddle/images/bg-groups-tab.png differ diff --git a/wp-content/themes/huddle/images/bg-header-brown.png b/wp-content/themes/huddle/images/bg-header-brown.png new file mode 100644 index 0000000..ef042b5 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-brown.png differ diff --git a/wp-content/themes/huddle/images/bg-header-cyan.png b/wp-content/themes/huddle/images/bg-header-cyan.png new file mode 100644 index 0000000..80ce1a3 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-cyan.png differ diff --git a/wp-content/themes/huddle/images/bg-header-gray.png b/wp-content/themes/huddle/images/bg-header-gray.png new file mode 100644 index 0000000..9c8d394 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-gray.png differ diff --git a/wp-content/themes/huddle/images/bg-header-green.png b/wp-content/themes/huddle/images/bg-header-green.png new file mode 100644 index 0000000..8954ed8 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-green.png differ diff --git a/wp-content/themes/huddle/images/bg-header-grey.png b/wp-content/themes/huddle/images/bg-header-grey.png new file mode 100644 index 0000000..9c8d394 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-grey.png differ diff --git a/wp-content/themes/huddle/images/bg-header-magenta.png b/wp-content/themes/huddle/images/bg-header-magenta.png new file mode 100644 index 0000000..6adc907 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-magenta.png differ diff --git a/wp-content/themes/huddle/images/bg-header-magento.png b/wp-content/themes/huddle/images/bg-header-magento.png new file mode 100644 index 0000000..6adc907 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-magento.png differ diff --git a/wp-content/themes/huddle/images/bg-header-orange.png b/wp-content/themes/huddle/images/bg-header-orange.png new file mode 100644 index 0000000..43b6090 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-orange.png differ diff --git a/wp-content/themes/huddle/images/bg-header-overlay.png b/wp-content/themes/huddle/images/bg-header-overlay.png new file mode 100644 index 0000000..85677c2 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-overlay.png differ diff --git a/wp-content/themes/huddle/images/bg-header-purple.png b/wp-content/themes/huddle/images/bg-header-purple.png new file mode 100644 index 0000000..24ccdec Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-purple.png differ diff --git a/wp-content/themes/huddle/images/bg-header-red.png b/wp-content/themes/huddle/images/bg-header-red.png new file mode 100644 index 0000000..969d4e4 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-red.png differ diff --git a/wp-content/themes/huddle/images/bg-header-yellow.png b/wp-content/themes/huddle/images/bg-header-yellow.png new file mode 100644 index 0000000..3f4d9c2 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header-yellow.png differ diff --git a/wp-content/themes/huddle/images/bg-header.png b/wp-content/themes/huddle/images/bg-header.png new file mode 100644 index 0000000..e8b9da0 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-header.png differ diff --git a/wp-content/themes/huddle/images/bg-members-column-left.png b/wp-content/themes/huddle/images/bg-members-column-left.png new file mode 100644 index 0000000..d3bc6c8 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-members-column-left.png differ diff --git a/wp-content/themes/huddle/images/bg-members-column.png b/wp-content/themes/huddle/images/bg-members-column.png new file mode 100644 index 0000000..c36f10d Binary files /dev/null and b/wp-content/themes/huddle/images/bg-members-column.png differ diff --git a/wp-content/themes/huddle/images/bg-members-nav.png b/wp-content/themes/huddle/images/bg-members-nav.png new file mode 100644 index 0000000..0e02079 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-members-nav.png differ diff --git a/wp-content/themes/huddle/images/bg-members-nav2.png b/wp-content/themes/huddle/images/bg-members-nav2.png new file mode 100644 index 0000000..e69f540 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-members-nav2.png differ diff --git a/wp-content/themes/huddle/images/bg-members-shadow.png b/wp-content/themes/huddle/images/bg-members-shadow.png new file mode 100644 index 0000000..2fc1584 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-members-shadow.png differ diff --git a/wp-content/themes/huddle/images/bg-nav-sep.png b/wp-content/themes/huddle/images/bg-nav-sep.png new file mode 100644 index 0000000..d6630cb Binary files /dev/null and b/wp-content/themes/huddle/images/bg-nav-sep.png differ diff --git a/wp-content/themes/huddle/images/bg-nav.png b/wp-content/themes/huddle/images/bg-nav.png new file mode 100644 index 0000000..9f1184a Binary files /dev/null and b/wp-content/themes/huddle/images/bg-nav.png differ diff --git a/wp-content/themes/huddle/images/bg-search-btn.png b/wp-content/themes/huddle/images/bg-search-btn.png new file mode 100644 index 0000000..d8dc467 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-search-btn.png differ diff --git a/wp-content/themes/huddle/images/bg-search-inp.png b/wp-content/themes/huddle/images/bg-search-inp.png new file mode 100644 index 0000000..aaaad90 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-search-inp.png differ diff --git a/wp-content/themes/huddle/images/bg-search.png b/wp-content/themes/huddle/images/bg-search.png new file mode 100644 index 0000000..0cd29e0 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-search.png differ diff --git a/wp-content/themes/huddle/images/bg-submenu.png b/wp-content/themes/huddle/images/bg-submenu.png new file mode 100644 index 0000000..552a801 Binary files /dev/null and b/wp-content/themes/huddle/images/bg-submenu.png differ diff --git a/wp-content/themes/huddle/images/bg-submit-btn.png b/wp-content/themes/huddle/images/bg-submit-btn.png new file mode 100644 index 0000000..6f5296e Binary files /dev/null and b/wp-content/themes/huddle/images/bg-submit-btn.png differ diff --git a/wp-content/themes/huddle/images/border.png b/wp-content/themes/huddle/images/border.png new file mode 100644 index 0000000..f463a10 Binary files /dev/null and b/wp-content/themes/huddle/images/border.png differ diff --git a/wp-content/themes/huddle/images/btn-left-brown.png b/wp-content/themes/huddle/images/btn-left-brown.png new file mode 100644 index 0000000..7735c46 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-brown.png differ diff --git a/wp-content/themes/huddle/images/btn-left-cyan.png b/wp-content/themes/huddle/images/btn-left-cyan.png new file mode 100644 index 0000000..08eac89 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-cyan.png differ diff --git a/wp-content/themes/huddle/images/btn-left-gray.png b/wp-content/themes/huddle/images/btn-left-gray.png new file mode 100644 index 0000000..1b4f534 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-gray.png differ diff --git a/wp-content/themes/huddle/images/btn-left-green.png b/wp-content/themes/huddle/images/btn-left-green.png new file mode 100644 index 0000000..2a9f53f Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-green.png differ diff --git a/wp-content/themes/huddle/images/btn-left-grey.png b/wp-content/themes/huddle/images/btn-left-grey.png new file mode 100644 index 0000000..1b4f534 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-grey.png differ diff --git a/wp-content/themes/huddle/images/btn-left-magenta.png b/wp-content/themes/huddle/images/btn-left-magenta.png new file mode 100644 index 0000000..5ecb1df Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-magenta.png differ diff --git a/wp-content/themes/huddle/images/btn-left-magento.png b/wp-content/themes/huddle/images/btn-left-magento.png new file mode 100644 index 0000000..5ecb1df Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-magento.png differ diff --git a/wp-content/themes/huddle/images/btn-left-orange.png b/wp-content/themes/huddle/images/btn-left-orange.png new file mode 100644 index 0000000..84435af Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-orange.png differ diff --git a/wp-content/themes/huddle/images/btn-left-purple.png b/wp-content/themes/huddle/images/btn-left-purple.png new file mode 100644 index 0000000..c8e75d9 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-purple.png differ diff --git a/wp-content/themes/huddle/images/btn-left-red.png b/wp-content/themes/huddle/images/btn-left-red.png new file mode 100644 index 0000000..f773d1c Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-red.png differ diff --git a/wp-content/themes/huddle/images/btn-left-yellow.png b/wp-content/themes/huddle/images/btn-left-yellow.png new file mode 100644 index 0000000..f0694e0 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left-yellow.png differ diff --git a/wp-content/themes/huddle/images/btn-left.png b/wp-content/themes/huddle/images/btn-left.png new file mode 100644 index 0000000..d327092 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-left.png differ diff --git a/wp-content/themes/huddle/images/btn-login.png b/wp-content/themes/huddle/images/btn-login.png new file mode 100644 index 0000000..023dbbf Binary files /dev/null and b/wp-content/themes/huddle/images/btn-login.png differ diff --git a/wp-content/themes/huddle/images/btn-right-brown.png b/wp-content/themes/huddle/images/btn-right-brown.png new file mode 100644 index 0000000..e923d81 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-brown.png differ diff --git a/wp-content/themes/huddle/images/btn-right-cyan.png b/wp-content/themes/huddle/images/btn-right-cyan.png new file mode 100644 index 0000000..a4266ec Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-cyan.png differ diff --git a/wp-content/themes/huddle/images/btn-right-gray.png b/wp-content/themes/huddle/images/btn-right-gray.png new file mode 100644 index 0000000..d9eae0a Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-gray.png differ diff --git a/wp-content/themes/huddle/images/btn-right-green.png b/wp-content/themes/huddle/images/btn-right-green.png new file mode 100644 index 0000000..54d91ee Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-green.png differ diff --git a/wp-content/themes/huddle/images/btn-right-grey.png b/wp-content/themes/huddle/images/btn-right-grey.png new file mode 100644 index 0000000..d9eae0a Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-grey.png differ diff --git a/wp-content/themes/huddle/images/btn-right-magenta.png b/wp-content/themes/huddle/images/btn-right-magenta.png new file mode 100644 index 0000000..765b694 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-magenta.png differ diff --git a/wp-content/themes/huddle/images/btn-right-magento.png b/wp-content/themes/huddle/images/btn-right-magento.png new file mode 100644 index 0000000..765b694 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-magento.png differ diff --git a/wp-content/themes/huddle/images/btn-right-orange.png b/wp-content/themes/huddle/images/btn-right-orange.png new file mode 100644 index 0000000..220fcb4 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-orange.png differ diff --git a/wp-content/themes/huddle/images/btn-right-purple.png b/wp-content/themes/huddle/images/btn-right-purple.png new file mode 100644 index 0000000..c033bab Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-purple.png differ diff --git a/wp-content/themes/huddle/images/btn-right-red.png b/wp-content/themes/huddle/images/btn-right-red.png new file mode 100644 index 0000000..dd5535d Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-red.png differ diff --git a/wp-content/themes/huddle/images/btn-right-yellow.png b/wp-content/themes/huddle/images/btn-right-yellow.png new file mode 100644 index 0000000..668c0de Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right-yellow.png differ diff --git a/wp-content/themes/huddle/images/btn-right.png b/wp-content/themes/huddle/images/btn-right.png new file mode 100644 index 0000000..3b60687 Binary files /dev/null and b/wp-content/themes/huddle/images/btn-right.png differ diff --git a/wp-content/themes/huddle/images/controls.png b/wp-content/themes/huddle/images/controls.png new file mode 100644 index 0000000..dcfd6fb Binary files /dev/null and b/wp-content/themes/huddle/images/controls.png differ diff --git a/wp-content/themes/huddle/images/icon-groups.png b/wp-content/themes/huddle/images/icon-groups.png new file mode 100644 index 0000000..898d55e Binary files /dev/null and b/wp-content/themes/huddle/images/icon-groups.png differ diff --git a/wp-content/themes/huddle/images/icon-move-small.png b/wp-content/themes/huddle/images/icon-move-small.png new file mode 100644 index 0000000..1d504ae Binary files /dev/null and b/wp-content/themes/huddle/images/icon-move-small.png differ diff --git a/wp-content/themes/huddle/images/icon-profile.png b/wp-content/themes/huddle/images/icon-profile.png new file mode 100644 index 0000000..fee5cc2 Binary files /dev/null and b/wp-content/themes/huddle/images/icon-profile.png differ diff --git a/wp-content/themes/huddle/images/icon-replies.png b/wp-content/themes/huddle/images/icon-replies.png new file mode 100644 index 0000000..3a69cfd Binary files /dev/null and b/wp-content/themes/huddle/images/icon-replies.png differ diff --git a/wp-content/themes/huddle/images/icon-rss.png b/wp-content/themes/huddle/images/icon-rss.png new file mode 100644 index 0000000..711dcae Binary files /dev/null and b/wp-content/themes/huddle/images/icon-rss.png differ diff --git a/wp-content/themes/huddle/images/icon-users.png b/wp-content/themes/huddle/images/icon-users.png new file mode 100644 index 0000000..1551947 Binary files /dev/null and b/wp-content/themes/huddle/images/icon-users.png differ diff --git a/wp-content/themes/huddle/images/ie6/borderBottomCenter.png b/wp-content/themes/huddle/images/ie6/borderBottomCenter.png new file mode 100644 index 0000000..0d4475e Binary files /dev/null and b/wp-content/themes/huddle/images/ie6/borderBottomCenter.png differ diff --git a/wp-content/themes/huddle/images/ie6/borderBottomLeft.png b/wp-content/themes/huddle/images/ie6/borderBottomLeft.png new file mode 100644 index 0000000..2775eba Binary files /dev/null and b/wp-content/themes/huddle/images/ie6/borderBottomLeft.png differ diff --git a/wp-content/themes/huddle/images/ie6/borderBottomRight.png b/wp-content/themes/huddle/images/ie6/borderBottomRight.png new file mode 100644 index 0000000..f7f5137 Binary files /dev/null and b/wp-content/themes/huddle/images/ie6/borderBottomRight.png differ diff --git a/wp-content/themes/huddle/images/ie6/borderMiddleLeft.png b/wp-content/themes/huddle/images/ie6/borderMiddleLeft.png new file mode 100644 index 0000000..a2d63d1 Binary files /dev/null and b/wp-content/themes/huddle/images/ie6/borderMiddleLeft.png differ diff --git a/wp-content/themes/huddle/images/ie6/borderMiddleRight.png b/wp-content/themes/huddle/images/ie6/borderMiddleRight.png new file mode 100644 index 0000000..fd7c3e8 Binary files /dev/null and b/wp-content/themes/huddle/images/ie6/borderMiddleRight.png differ diff --git a/wp-content/themes/huddle/images/ie6/borderTopCenter.png b/wp-content/themes/huddle/images/ie6/borderTopCenter.png new file mode 100644 index 0000000..2937a9c Binary files /dev/null and b/wp-content/themes/huddle/images/ie6/borderTopCenter.png differ diff --git a/wp-content/themes/huddle/images/ie6/borderTopLeft.png b/wp-content/themes/huddle/images/ie6/borderTopLeft.png new file mode 100644 index 0000000..f9d458b Binary files /dev/null and b/wp-content/themes/huddle/images/ie6/borderTopLeft.png differ diff --git a/wp-content/themes/huddle/images/ie6/borderTopRight.png b/wp-content/themes/huddle/images/ie6/borderTopRight.png new file mode 100644 index 0000000..74b8583 Binary files /dev/null and b/wp-content/themes/huddle/images/ie6/borderTopRight.png differ diff --git a/wp-content/themes/huddle/images/image-slide.png b/wp-content/themes/huddle/images/image-slide.png new file mode 100644 index 0000000..f9fe484 Binary files /dev/null and b/wp-content/themes/huddle/images/image-slide.png differ diff --git a/wp-content/themes/huddle/images/loader-1.gif b/wp-content/themes/huddle/images/loader-1.gif new file mode 100644 index 0000000..09d621e Binary files /dev/null and b/wp-content/themes/huddle/images/loader-1.gif differ diff --git a/wp-content/themes/huddle/images/loading.gif b/wp-content/themes/huddle/images/loading.gif new file mode 100644 index 0000000..b4695d8 Binary files /dev/null and b/wp-content/themes/huddle/images/loading.gif differ diff --git a/wp-content/themes/huddle/images/loading_background.png b/wp-content/themes/huddle/images/loading_background.png new file mode 100644 index 0000000..6ae83e6 Binary files /dev/null and b/wp-content/themes/huddle/images/loading_background.png differ diff --git a/wp-content/themes/huddle/images/logo.png b/wp-content/themes/huddle/images/logo.png new file mode 100644 index 0000000..36fe929 Binary files /dev/null and b/wp-content/themes/huddle/images/logo.png differ diff --git a/wp-content/themes/huddle/images/overlay.png b/wp-content/themes/huddle/images/overlay.png new file mode 100644 index 0000000..53ea98f Binary files /dev/null and b/wp-content/themes/huddle/images/overlay.png differ diff --git a/wp-content/themes/huddle/includes/author-info.php b/wp-content/themes/huddle/includes/author-info.php new file mode 100644 index 0000000..aa1217d --- /dev/null +++ b/wp-content/themes/huddle/includes/author-info.php @@ -0,0 +1,21 @@ + + diff --git a/wp-content/themes/huddle/includes/loop.php b/wp-content/themes/huddle/includes/loop.php new file mode 100644 index 0000000..e73839e --- /dev/null +++ b/wp-content/themes/huddle/includes/loop.php @@ -0,0 +1,144 @@ + + + + + +
                  > +

                  + +
                  + + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
                  +
                  + + + + + + + + + +
                  + + + + +

                  + + + + + + + + +
                  + + + '', 'link_before' => '', 'link_after' => '' ) ); ?> +
                  +
                  + + + + + + + + + + + + + + + + + + + + + +
                  +

                  + + + + + + + + +

                  + +

                  + +

                  +
                  + + + + + +

                  + + + + + + + + + + + + + + + + + + +
                  + + + + +

                  + + + + + + + + +

                  + +

                  + +
                  + + + + + + + + + + diff --git a/wp-content/themes/huddle/includes/pagination.php b/wp-content/themes/huddle/includes/pagination.php new file mode 100644 index 0000000..cc25bd0 --- /dev/null +++ b/wp-content/themes/huddle/includes/pagination.php @@ -0,0 +1,21 @@ + + max_num_pages > 1 ): ?> + +
                  + + + + diff --git a/wp-content/themes/huddle/includes/related-posts.php b/wp-content/themes/huddle/includes/related-posts.php new file mode 100644 index 0000000..d48433a --- /dev/null +++ b/wp-content/themes/huddle/includes/related-posts.php @@ -0,0 +1,45 @@ + + ID ); + + if( $tags ) { + $tag_ids = array(); + foreach($tags as $individual_tag) $tag_ids[] = $individual_tag->term_id; + + $my_query = new wp_query(array( + 'tag__in' => $tag_ids, + 'post__not_in' => array( $post->ID ), + 'posts_per_page' => of_get_option( 'related_posts_count' ) + 1 + )); + + if( $my_query->have_posts() ) { ?> + + + + diff --git a/wp-content/themes/huddle/index.php b/wp-content/themes/huddle/index.php new file mode 100644 index 0000000..fa7d179 --- /dev/null +++ b/wp-content/themes/huddle/index.php @@ -0,0 +1,14 @@ + + +
                  + +
                  + +
                  + + + + +
                  + + diff --git a/wp-content/themes/huddle/js/buddypress.js b/wp-content/themes/huddle/js/buddypress.js new file mode 100644 index 0000000..a89903e --- /dev/null +++ b/wp-content/themes/huddle/js/buddypress.js @@ -0,0 +1,1276 @@ +// AJAX Functions +var jq = jQuery; + +// Global variable to prevent multiple AJAX requests +var bp_ajax_request = null; + +jq(document).ready( function() { + /**** Page Load Actions *******************************************************/ + + /* Hide Forums Post Form */ + if ( '-1' == window.location.search.indexOf('new') && jq('div.forums').length ) + jq('div#new-topic-post').hide(); + else + jq('div#new-topic-post').show(); + + /* Activity filter and scope set */ + bp_init_activity(); + + /* Object filter and scope set. */ + var objects = [ 'members', 'groups', 'blogs', 'forums' ]; + bp_init_objects( objects ); + + /* @mention Compose Scrolling */ + if ( jq.query.get('r') && jq('textarea#whats-new').length ) { + jq('#whats-new-options').animate({height:'40px'}); + jq("form#whats-new-form textarea").animate({height:'50px'}); + jq.scrollTo( jq('textarea#whats-new'), 500, { offset:-125, easing:'easeOutQuad' } ); + jq('textarea#whats-new').focus(); + } + + /**** Activity Posting ********************************************************/ + + /* Textarea focus */ + jq('#whats-new').focus( function(){ + jq("#whats-new-options").animate({height:'40px'}); + jq("form#whats-new-form textarea").animate({height:'50px'}); + jq("#aw-whats-new-submit").prop("disabled", false); + }); + + /* New posts */ + jq("input#aw-whats-new-submit").click( function() { + var button = jq(this); + var form = button.parent().parent().parent().parent(); + + form.children().each( function() { + if ( jq.nodeName(this, "textarea") || jq.nodeName(this, "input") ) + jq(this).prop( 'disabled', true ); + }); + + /* Remove any errors */ + jq('div.error').remove(); + button.addClass('loading'); + button.prop('disabled', true); + + /* Default POST values */ + var object = ''; + var item_id = jq("#whats-new-post-in").val(); + var content = jq("textarea#whats-new").val(); + + /* Set object for non-profile posts */ + if ( item_id > 0 ) { + object = jq("#whats-new-post-object").val(); + } + + jq.post( ajaxurl, { + action: 'post_update', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce_post_update': jq("input#_wpnonce_post_update").val(), + 'content': content, + 'object': object, + 'item_id': item_id + }, + function(response) { + + form.children().each( function() { + if ( jq.nodeName(this, "textarea") || jq.nodeName(this, "input") ) { + jq(this).prop( 'disabled', false ); + } + }); + + jq('form.ac-form').hide(); + + /* Check for errors and append if found. */ + if ( response[0] + response[1] == '-1' ) { + form.prepend( response.substr( 2, response.length ) ); + jq( 'form#' + form.attr('id') + ' div.error').hide().fadeIn( 200 ); + } else { + if ( 0 == jq("ul.activity-list").length ) { + jq("div.error").slideUp(100).remove(); + jq("div#message").slideUp(100).remove(); + jq("div.activity").append( '
                    ' ); + } + + jq("ul#activity-stream").prepend(response); + jq("ul#activity-stream li:first").addClass('new-update'); + + if ( 0 != jq("div#latest-update").length ) { + var l = jq("ul#activity-stream li.new-update .activity-content .activity-inner p").html(); + var v = jq("ul#activity-stream li.new-update .activity-content .activity-header p a.view").attr('href'); + + var ltext = jq("ul#activity-stream li.new-update .activity-content .activity-inner p").text(); + + var u = ''; + if ( ltext != '' ) + u = '"' + l + '" '; + + u += '' + BP_DTheme.view + ''; + + jq("div#latest-update").slideUp(300,function(){ + jq("div#latest-update").html( u ); + jq("div#latest-update").slideDown(300); + }); + } + + jq("li.new-update").hide().slideDown( 300 ); + jq("li.new-update").removeClass( 'new-update' ); + jq("textarea#whats-new").val(''); + } + + jq('form.ac-form').hide(); + + jq("form#whats-new-form textarea").animate({height:'20px'}); + jq("#aw-whats-new-submit").prop("disabled", true).removeClass('loading'); + }); + + return false; + }); + + /* List tabs event delegation */ + jq('div.activity-type-tabs').click( function(event) { + var target = jq(event.target).parent(); + + if ( event.target.nodeName == 'STRONG' || event.target.nodeName == 'SPAN' ) + target = target.parent(); + else if ( event.target.nodeName != 'A' ) + return false; + + /* Reset the page */ + jq.cookie( 'bp-activity-oldestpage', 1, {path: '/'} ); + + /* Activity Stream Tabs */ + var scope = target.attr('id').substr( 9, target.attr('id').length ); + var filter = jq("#activity-filter-select select").val(); + + if ( scope == 'mentions' ) + jq( 'li#' + target.attr('id') + ' a strong' ).remove(); + + bp_activity_request(scope, filter); + + return false; + }); + + /* Activity filter select */ + jq('#activity-filter-select select').change( function() { + var selected_tab = jq( 'div.activity-type-tabs li.selected' ); + + if ( !selected_tab.length ) + var scope = null; + else + var scope = selected_tab.attr('id').substr( 9, selected_tab.attr('id').length ); + + var filter = jq(this).val(); + + bp_activity_request(scope, filter); + + return false; + }); + + /* Stream event delegation */ + jq('div.activity').click( function(event) { + var target = jq(event.target); + + /* Favoriting activity stream items */ + if ( target.hasClass('fav') || target.hasClass('unfav') ) { + var type = target.hasClass('fav') ? 'fav' : 'unfav'; + var parent = target.parent().parent().parent(); + var parent_id = parent.attr('id').substr( 9, parent.attr('id').length ); + + target.addClass('loading'); + + jq.post( ajaxurl, { + action: 'activity_mark_' + type, + 'cookie': encodeURIComponent(document.cookie), + 'id': parent_id + }, + function(response) { + target.removeClass('loading'); + + target.fadeOut( 100, function() { + jq(this).html(response); + jq(this).fadeIn(100); + }); + + if ( 'fav' == type ) { + if ( !jq('div.item-list-tabs li#activity-favorites').length ) + jq('div.item-list-tabs ul li#activity-mentions').before( '
                  • ' + BP_DTheme.my_favs + ' 0
                  • '); + + target.removeClass('fav'); + target.addClass('unfav'); + + jq('div.item-list-tabs ul li#activity-favorites span').html( Number( jq('div.item-list-tabs ul li#activity-favorites span').html() ) + 1 ); + } else { + target.removeClass('unfav'); + target.addClass('fav'); + + jq('div.item-list-tabs ul li#activity-favorites span').html( Number( jq('div.item-list-tabs ul li#activity-favorites span').html() ) - 1 ); + + if ( !Number( jq('div.item-list-tabs ul li#activity-favorites span').html() ) ) { + if ( jq('div.item-list-tabs ul li#activity-favorites').hasClass('selected') ) + bp_activity_request( null, null ); + + jq('div.item-list-tabs ul li#activity-favorites').remove(); + } + } + + if ( 'activity-favorites' == jq( 'div.item-list-tabs li.selected').attr('id') ) + target.parent().parent().parent().slideUp(100); + }); + + return false; + } + + /* Delete activity stream items */ + if ( target.hasClass('delete-activity') ) { + var li = target.parents('div.activity ul li'); + var id = li.attr('id').substr( 9, li.attr('id').length ); + var link_href = target.attr('href'); + var nonce = link_href.split('_wpnonce='); + + nonce = nonce[1]; + + target.addClass('loading'); + + jq.post( ajaxurl, { + action: 'delete_activity', + 'cookie': encodeURIComponent(document.cookie), + 'id': id, + '_wpnonce': nonce + }, + function(response) { + + if ( response[0] + response[1] == '-1' ) { + li.prepend( response.substr( 2, response.length ) ); + li.children('div#message').hide().fadeIn(300); + } else { + li.slideUp(300); + } + }); + + return false; + } + + /* Load more updates at the end of the page */ + if ( target.parent().hasClass('load-more') ) { + jq("#content li.load-more").addClass('loading'); + + if ( null == jq.cookie('bp-activity-oldestpage') ) + jq.cookie('bp-activity-oldestpage', 1, {path: '/'} ); + + var oldest_page = ( jq.cookie('bp-activity-oldestpage') * 1 ) + 1; + + jq.post( ajaxurl, { + action: 'activity_get_older_updates', + 'cookie': encodeURIComponent(document.cookie), + 'page': oldest_page + }, + function(response) + { + jq("#content li.load-more").removeClass('loading'); + jq.cookie( 'bp-activity-oldestpage', oldest_page, {path: '/'} ); + jq("#content ul.activity-list").append(response.contents); + + jq('form.ac-form').hide(); + + target.parent().hide(); + }, 'json' ); + + return false; + } + }); + + // Activity "Read More" links + jq('.activity-read-more a').live('click', function(event) { + var target = jq(event.target); + var link_id = target.parent().attr('id').split('-'); + var a_id = link_id[3]; + var type = link_id[0]; /* activity or acomment */ + + var inner_class = type == 'acomment' ? 'acomment-content' : 'activity-inner'; + var a_inner = jq('li#' + type + '-' + a_id + ' .' + inner_class + ':first' ); + jq(target).addClass('loading'); + + jq.post( ajaxurl, { + action: 'get_single_activity_content', + 'activity_id': a_id + }, + function(response) { + jq(a_inner).slideUp(300).html(response).slideDown(300); + }); + + return false; + }); + + /**** Activity Comments *******************************************************/ + + /* Hide all activity comment forms */ + jq('form.ac-form').hide(); + + /* Hide excess comments */ + if ( jq('div.activity-comments').length ) + bp_dtheme_hide_comments(); + + /* Activity list event delegation */ + jq('div.activity').click( function(event) { + var target = jq(event.target); + + /* Comment / comment reply links */ + if ( target.hasClass('acomment-reply') || target.parent().hasClass('acomment-reply') ) { + if ( target.parent().hasClass('acomment-reply') ) + target = target.parent(); + + var id = target.attr('id'); + ids = id.split('-'); + + var a_id = ids[2] + var c_id = target.attr('href').substr( 10, target.attr('href').length ); + var form = jq( '#ac-form-' + a_id ); + + form.css( 'display', 'none' ); + form.removeClass('root'); + jq('.ac-form').hide(); + + /* Hide any error messages */ + form.children('div').each( function() { + if ( jq(this).hasClass( 'error' ) ) + jq(this).hide(); + }); + + if ( ids[1] != 'comment' ) { + jq('div.activity-comments li#acomment-' + c_id).append( form ); + } else { + jq('li#activity-' + a_id + ' div.activity-comments').append( form ); + } + + if ( form.parent().hasClass( 'activity-comments' ) ) + form.addClass('root'); + + form.slideDown( 200 ); + jq.scrollTo( form, 500, { offset:-100, easing:'easeOutQuad' } ); + jq('#ac-form-' + ids[2] + ' textarea').focus(); + + return false; + } + + /* Activity comment posting */ + if ( target.attr('name') == 'ac_form_submit' ) { + var form = target.parent().parent(); + var form_parent = form.parent(); + var form_id = form.attr('id').split('-'); + + if ( !form_parent.hasClass('activity-comments') ) { + var tmp_id = form_parent.attr('id').split('-'); + var comment_id = tmp_id[1]; + } else { + var comment_id = form_id[2]; + } + + /* Hide any error messages */ + jq( 'form#' + form + ' div.error').hide(); + target.addClass('loading').prop('disabled', true); + + jq.post( ajaxurl, { + action: 'new_activity_comment', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce_new_activity_comment': jq("input#_wpnonce_new_activity_comment").val(), + 'comment_id': comment_id, + 'form_id': form_id[2], + 'content': jq('form#' + form.attr('id') + ' textarea').val() + }, + function(response) + { + target.removeClass('loading'); + + /* Check for errors and append if found. */ + if ( response[0] + response[1] == '-1' ) { + form.append( response.substr( 2, response.length ) ).hide().fadeIn( 200 ); + } else { + form.fadeOut( 200, + function() { + if ( 0 == form.parent().children('ul').length ) { + if ( form.parent().hasClass('activity-comments') ) + form.parent().prepend('
                      '); + else + form.parent().append('
                        '); + } + + form.parent().children('ul').append(response).hide().fadeIn( 200 ); + form.children('textarea').val(''); + form.parent().parent().addClass('has-comments'); + } + ); + jq( 'form#' + form + ' textarea').val(''); + + /* Increase the "Reply (X)" button count */ + jq('li#activity-' + form_id[2] + ' a.acomment-reply span').html( Number( jq('li#activity-' + form_id[2] + ' a.acomment-reply span').html() ) + 1 ); + } + + jq(target).prop("disabled", false); + }); + + return false; + } + + /* Deleting an activity comment */ + if ( target.hasClass('acomment-delete') ) { + var link_href = target.attr('href'); + var comment_li = target.parent().parent(); + var form = comment_li.parents('div.activity-comments').children('form'); + + var nonce = link_href.split('_wpnonce='); + nonce = nonce[1]; + + var comment_id = link_href.split('cid='); + comment_id = comment_id[1].split('&'); + comment_id = comment_id[0]; + + target.addClass('loading'); + + /* Remove any error messages */ + jq('div.activity-comments ul div.error').remove(); + + /* Reset the form position */ + comment_li.parents('div.activity-comments').append(form); + + jq.post( ajaxurl, { + action: 'delete_activity_comment', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': nonce, + 'id': comment_id + }, + function(response) + { + /* Check for errors and append if found. */ + if ( response[0] + response[1] == '-1' ) { + comment_li.prepend( response.substr( 2, response.length ) ).hide().fadeIn( 200 ); + } else { + var children = jq( 'li#' + comment_li.attr('id') + ' ul' ).children('li'); + var child_count = 0; + jq(children).each( function() { + if ( !jq(this).is(':hidden') ) + child_count++; + }); + comment_li.fadeOut(200); + + /* Decrease the "Reply (X)" button count */ + var parent_li = comment_li.parents('ul#activity-stream > li'); + jq('li#' + parent_li.attr('id') + ' a.acomment-reply span').html( jq('li#' + parent_li.attr('id') + ' a.acomment-reply span').html() - ( 1 + child_count ) ); + } + }); + + return false; + } + + /* Showing hidden comments - pause for half a second */ + if ( target.parent().hasClass('show-all') ) { + target.parent().addClass('loading'); + + setTimeout( function() { + target.parent().parent().children('li').fadeIn(200, function() { + target.parent().remove(); + }); + }, 600 ); + + return false; + } + }); + + /* Escape Key Press for cancelling comment forms */ + jq(document).keydown( function(e) { + e = e || window.event; + if (e.target) + element = e.target; + else if (e.srcElement) + element = e.srcElement; + + if( element.nodeType == 3) + element = element.parentNode; + + if( e.ctrlKey == true || e.altKey == true || e.metaKey == true ) + return; + + var keyCode = (e.keyCode) ? e.keyCode : e.which; + + if ( keyCode == 27 ) { + if (element.tagName == 'TEXTAREA') { + if ( jq(element).hasClass('ac-input') ) + jq(element).parent().parent().parent().slideUp( 200 ); + } + } + }); + + /**** Directory Search ****************************************************/ + + /* The search form on all directory pages */ + jq('div.dir-search').click( function(event) { + if ( jq(this).hasClass('no-ajax') ) + return; + + var target = jq(event.target); + + if ( target.attr('type') == 'submit' ) { + var css_id = jq('div.item-list-tabs li.filter').attr('id').split( '-' ); + var object = css_id[0]; + + bp_filter_request( object, jq.cookie('bp-' + object + '-filter'), jq.cookie('bp-' + object + '-scope') , 'div.' + object, target.parent().children('label').children('input').val(), 1, jq.cookie('bp-' + object + '-extras') ); + + return false; + } + }); + + /**** Tabs and Filters ****************************************************/ + + /* When a navigation tab is clicked - e.g. | All Groups | My Groups | */ + jq('div.item-list-tabs').click( function(event) { + if ( jq(this).hasClass('no-ajax') ) + return; + + var target = jq(event.target).parent(); + + if ( 'LI' == event.target.parentNode.nodeName && !target.hasClass('last') ) { + var css_id = target.attr('id').split( '-' ); + var object = css_id[0]; + + if ( 'activity' == object ) + return false; + + var scope = css_id[1]; + var filter = jq("#" + object + "-order-select select").val(); + var search_terms = jq("#" + object + "_search").val(); + + bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, jq.cookie('bp-' + object + '-extras') ); + + return false; + } + }); + + /* When the filter select box is changed re-query */ + jq('li.filter select').change( function() { + if ( jq('div.item-list-tabs li.selected').length ) + var el = jq('div.item-list-tabs li.selected'); + else + var el = jq(this); + + var css_id = el.attr('id').split('-'); + var object = css_id[0]; + var scope = css_id[1]; + var filter = jq(this).val(); + var search_terms = false; + + if ( jq('div.dir-search input').length ) + search_terms = jq('div.dir-search input').val(); + + if ( 'friends' == object ) + object = 'members'; + + bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, jq.cookie('bp-' + object + '-extras') ); + + return false; + }); + + /* All pagination links run through this function */ + jq('div#content').click( function(event) { + var target = jq(event.target); + + if ( target.hasClass('button') ) + return true; + + if ( target.parent().parent().hasClass('pagination') && !target.parent().parent().hasClass('no-ajax') ) { + if ( target.hasClass('dots') || target.hasClass('current') ) + return false; + + if ( jq('div.item-list-tabs li.selected').length ) + var el = jq('div.item-list-tabs li.selected'); + else + var el = jq('li.filter select'); + + var page_number = 1; + var css_id = el.attr('id').split( '-' ); + var object = css_id[0]; + var search_terms = false; + + if ( jq('div.dir-search input').length ) + search_terms = jq('div.dir-search input').val(); + + if ( jq(target).hasClass('next') ) + var page_number = Number( jq('div.pagination span.current').html() ) + 1; + else if ( jq(target).hasClass('prev') ) + var page_number = Number( jq('div.pagination span.current').html() ) - 1; + else + var page_number = Number( jq(target).html() ); + + bp_filter_request( object, jq.cookie('bp-' + object + '-filter'), jq.cookie('bp-' + object + '-scope'), 'div.' + object, search_terms, page_number, jq.cookie('bp-' + object + '-extras') ); + + return false; + } + + }); + + /**** New Forum Directory Post **************************************/ + + /* Hit the "New Topic" button on the forums directory page */ + jq('a.show-hide-new').click( function() { + if ( !jq('div#new-topic-post').length ) + return false; + + if ( jq('div#new-topic-post').is(":visible") ) + jq('div#new-topic-post').slideUp(200); + else + jq('div#new-topic-post').slideDown(200, function() { jq('#topic_title').focus(); } ); + + return false; + }); + + /* Cancel the posting of a new forum topic */ + jq('input#submit_topic_cancel').click( function() { + if ( !jq('div#new-topic-post').length ) + return false; + + jq('div#new-topic-post').slideUp(200); + return false; + }); + + /* Clicking a forum tag */ + jq('div#forum-directory-tags a').click( function() { + bp_filter_request( 'forums', 'tags', jq.cookie('bp-forums-scope'), 'div.forums', jq(this).html().replace( / /g, '-' ), 1, jq.cookie('bp-forums-extras') ); + return false; + }); + + /** Invite Friends Interface ****************************************/ + + /* Select a user from the list of friends and add them to the invite list */ + jq("div#invite-list input").click( function() { + jq('.ajax-loader').toggle(); + + var friend_id = jq(this).val(); + + if ( jq(this).prop('checked') == true ) + var friend_action = 'invite'; + else + var friend_action = 'uninvite'; + + jq('div.item-list-tabs li.selected').addClass('loading'); + + jq.post( ajaxurl, { + action: 'groups_invite_user', + 'friend_action': friend_action, + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': jq("input#_wpnonce_invite_uninvite_user").val(), + 'friend_id': friend_id, + 'group_id': jq("input#group_id").val() + }, + function(response) + { + if ( jq("#message") ) + jq("#message").hide(); + + jq('.ajax-loader').toggle(); + + if ( friend_action == 'invite' ) { + jq('#friend-list').append(response); + } else if ( friend_action == 'uninvite' ) { + jq('#friend-list li#uid-' + friend_id).remove(); + } + + jq('div.item-list-tabs li.selected').removeClass('loading'); + }); + }); + + /* Remove a user from the list of users to invite to a group */ + jq("#friend-list li a.remove").live('click', function() { + jq('.ajax-loader').toggle(); + + var friend_id = jq(this).attr('id'); + friend_id = friend_id.split('-'); + friend_id = friend_id[1]; + + jq.post( ajaxurl, { + action: 'groups_invite_user', + 'friend_action': 'uninvite', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': jq("input#_wpnonce_invite_uninvite_user").val(), + 'friend_id': friend_id, + 'group_id': jq("input#group_id").val() + }, + function(response) + { + jq('.ajax-loader').toggle(); + jq('#friend-list li#uid-' + friend_id).remove(); + jq('#invite-list input#f-' + friend_id).prop('checked', false); + }); + + return false; + }); + + /** Friendship Requests **************************************/ + + /* Accept and Reject friendship request buttons */ + jq("ul#friend-list a.accept, ul#friend-list a.reject").click( function() { + var button = jq(this); + var li = jq(this).parents('ul#friend-list li'); + var action_div = jq(this).parents('li div.action'); + + var id = li.attr('id').substr( 11, li.attr('id').length ); + var link_href = button.attr('href'); + + var nonce = link_href.split('_wpnonce='); + nonce = nonce[1]; + + if ( jq(this).hasClass('accepted') || jq(this).hasClass('rejected') ) + return false; + + if ( jq(this).hasClass('accept') ) { + var action = 'accept_friendship'; + action_div.children('a.reject').css( 'visibility', 'hidden' ); + } else { + var action = 'reject_friendship'; + action_div.children('a.accept').css( 'visibility', 'hidden' ); + } + + button.addClass('loading'); + + jq.post( ajaxurl, { + action: action, + 'cookie': encodeURIComponent(document.cookie), + 'id': id, + '_wpnonce': nonce + }, + function(response) { + button.removeClass('loading'); + + if ( response[0] + response[1] == '-1' ) { + li.prepend( response.substr( 2, response.length ) ); + li.children('div#message').hide().fadeIn(200); + } else { + button.fadeOut( 100, function() { + if ( jq(this).hasClass('accept') ) { + action_div.children('a.reject').hide(); + jq(this).html( BP_DTheme.accepted ).fadeIn(50); + jq(this).addClass('accepted'); + } else { + action_div.children('a.accept').hide(); + jq(this).html( BP_DTheme.rejected ).fadeIn(50); + jq(this).addClass('rejected'); + } + }); + } + }); + + return false; + }); + + /* Add / Remove friendship buttons */ + jq("div.friendship-button a").live('click', function() { + jq(this).parent().addClass('loading'); + var fid = jq(this).attr('id'); + fid = fid.split('-'); + fid = fid[1]; + + var nonce = jq(this).attr('href'); + nonce = nonce.split('?_wpnonce='); + nonce = nonce[1].split('&'); + nonce = nonce[0]; + + var thelink = jq(this); + + jq.post( ajaxurl, { + action: 'addremove_friend', + 'cookie': encodeURIComponent(document.cookie), + 'fid': fid, + '_wpnonce': nonce + }, + function(response) + { + var action = thelink.attr('rel'); + var parentdiv = thelink.parent(); + + if ( action == 'add' ) { + jq(parentdiv).fadeOut(200, + function() { + parentdiv.removeClass('add_friend'); + parentdiv.removeClass('loading'); + parentdiv.addClass('pending'); + parentdiv.fadeIn(200).html(response); + } + ); + + } else if ( action == 'remove' ) { + jq(parentdiv).fadeOut(200, + function() { + parentdiv.removeClass('remove_friend'); + parentdiv.removeClass('loading'); + parentdiv.addClass('add'); + parentdiv.fadeIn(200).html(response); + } + ); + } + }); + return false; + } ); + + /** Group Join / Leave Buttons **************************************/ + + jq("div.group-button a").live('click', function() { + var gid = jq(this).parent().attr('id'); + gid = gid.split('-'); + gid = gid[1]; + + var nonce = jq(this).attr('href'); + nonce = nonce.split('?_wpnonce='); + nonce = nonce[1].split('&'); + nonce = nonce[0]; + + var thelink = jq(this); + + jq.post( ajaxurl, { + action: 'joinleave_group', + 'cookie': encodeURIComponent(document.cookie), + 'gid': gid, + '_wpnonce': nonce + }, + function(response) + { + var parentdiv = thelink.parent(); + + if ( !jq('body.directory').length ) + location.href = location.href; + else { + jq(parentdiv).fadeOut(200, + function() { + parentdiv.fadeIn(200).html(response); + } + ); + } + }); + return false; + } ); + + /** Button disabling ************************************************/ + + jq('div.pending').click(function() { + return false; + }); + + /** Private Messaging ******************************************/ + + /* AJAX send reply functionality */ + jq("input#send_reply_button").click( + function() { + var order = jq('#messages_order').val() || 'ASC', + offset = jq('#message-recipients').offset(); + + var button = jq("input#send_reply_button"); + jq(button).addClass('loading'); + + jq.post( ajaxurl, { + action: 'messages_send_reply', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce': jq("input#send_message_nonce").val(), + + 'content': jq("#message_content").val(), + 'send_to': jq("input#send_to").val(), + 'subject': jq("input#subject").val(), + 'thread_id': jq("input#thread_id").val() + }, + function(response) + { + if ( response[0] + response[1] == "-1" ) { + jq('form#send-reply').prepend( response.substr( 2, response.length ) ); + } else { + jq('form#send-reply div#message').remove(); + jq("#message_content").val(''); + + if ( 'ASC' == order ) { + jq('form#send-reply').before( response ); + } else { + jq('#message-recipients').after( response ); + jq(window).scrollTop(offset.top); + } + + jq("div.new-message").hide().slideDown( 200, function() { + jq('div.new-message').removeClass('new-message'); + }); + } + jq(button).removeClass('loading'); + }); + + return false; + } + ); + + /* Marking private messages as read and unread */ + jq("a#mark_as_read, a#mark_as_unread").click(function() { + var checkboxes_tosend = ''; + var checkboxes = jq("#message-threads tr td input[type='checkbox']"); + + if ( 'mark_as_unread' == jq(this).attr('id') ) { + var currentClass = 'read' + var newClass = 'unread' + var unreadCount = 1; + var inboxCount = 0; + var unreadCountDisplay = 'inline'; + var action = 'messages_markunread'; + } else { + var currentClass = 'unread' + var newClass = 'read' + var unreadCount = 0; + var inboxCount = 1; + var unreadCountDisplay = 'none'; + var action = 'messages_markread'; + } + + checkboxes.each( function(i) { + if(jq(this).is(':checked')) { + if ( jq('tr#m-' + jq(this).attr('value')).hasClass(currentClass) ) { + checkboxes_tosend += jq(this).attr('value'); + jq('tr#m-' + jq(this).attr('value')).removeClass(currentClass); + jq('tr#m-' + jq(this).attr('value')).addClass(newClass); + var thread_count = jq('tr#m-' + jq(this).attr('value') + ' td span.unread-count').html(); + + jq('tr#m-' + jq(this).attr('value') + ' td span.unread-count').html(unreadCount); + jq('tr#m-' + jq(this).attr('value') + ' td span.unread-count'); + + var inboxcount = jq('tr.unread').length; + + jq('a#user-messages span').html( inboxcount ); + + if ( i != checkboxes.length - 1 ) { + checkboxes_tosend += ',' + } + } + } + }); + jq.post( ajaxurl, { + action: action, + 'thread_ids': checkboxes_tosend + }); + return false; + }); + + /* Selecting unread and read messages in inbox */ + jq("select#message-type-select").change( + function() { + var selection = jq("select#message-type-select").val(); + var checkboxes = jq("td input[type='checkbox']"); + checkboxes.each( function(i) { + checkboxes[i].checked = ""; + }); + + switch(selection) { + case 'unread': + var checkboxes = jq("tr.unread td input[type='checkbox']"); + break; + case 'read': + var checkboxes = jq("tr.read td input[type='checkbox']"); + break; + } + if ( selection != '' ) { + checkboxes.each( function(i) { + checkboxes[i].checked = "checked"; + }); + } else { + checkboxes.each( function(i) { + checkboxes[i].checked = ""; + }); + } + } + ); + + /* Bulk delete messages */ + jq("a#delete_inbox_messages, a#delete_sentbox_messages").click( function() { + checkboxes_tosend = ''; + checkboxes = jq("#message-threads tr td input[type='checkbox']"); + + jq('div#message').remove(); + jq(this).addClass('loading'); + + jq(checkboxes).each( function(i) { + if( jq(this).is(':checked') ) + checkboxes_tosend += jq(this).attr('value') + ','; + }); + + if ( '' == checkboxes_tosend ) { + jq(this).removeClass('loading'); + return false; + } + + jq.post( ajaxurl, { + action: 'messages_delete', + 'thread_ids': checkboxes_tosend + }, function(response) { + if ( response[0] + response[1] == "-1" ) { + jq('#message-threads').prepend( response.substr( 2, response.length ) ); + } else { + jq('#message-threads').before( '

                        ' + response + '

                        ' ); + + jq(checkboxes).each( function(i) { + if( jq(this).is(':checked') ) + jq(this).parent().parent().fadeOut(150); + }); + } + + jq('div#message').hide().slideDown(150); + jq("a#delete_inbox_messages, a#delete_sentbox_messages").removeClass('loading'); + }); + return false; + }); + + /* Close site wide notices in the sidebar */ + jq("a#close-notice").click( function() { + jq(this).addClass('loading'); + jq('div#sidebar div.error').remove(); + + jq.post( ajaxurl, { + action: 'messages_close_notice', + 'notice_id': jq('.notice').attr('rel').substr( 2, jq('.notice').attr('rel').length ) + }, + function(response) { + jq("a#close-notice").removeClass('loading'); + + if ( response[0] + response[1] == '-1' ) { + jq('.notice').prepend( response.substr( 2, response.length ) ); + jq( 'div#sidebar div.error').hide().fadeIn( 200 ); + } else { + jq('.notice').slideUp( 100 ); + } + }); + return false; + }); + + /* Admin Bar & wp_list_pages Javascript IE6 hover class */ + jq("#wp-admin-bar ul.main-nav li, #nav li").mouseover( function() { + jq(this).addClass('sfhover'); + }); + + jq("#wp-admin-bar ul.main-nav li, #nav li").mouseout( function() { + jq(this).removeClass('sfhover'); + }); + + /* Clear BP cookies on logout */ + jq('a.logout').click( function() { + jq.cookie('bp-activity-scope', null, {path: '/'}); + jq.cookie('bp-activity-filter', null, {path: '/'}); + jq.cookie('bp-activity-oldestpage', null, {path: '/'}); + + var objects = [ 'members', 'groups', 'blogs', 'forums' ]; + jq(objects).each( function(i) { + jq.cookie('bp-' + objects[i] + '-scope', null, {path: '/'} ); + jq.cookie('bp-' + objects[i] + '-filter', null, {path: '/'} ); + jq.cookie('bp-' + objects[i] + '-extras', null, {path: '/'} ); + }); + }); +}); + +/* Setup activity scope and filter based on the current cookie settings. */ +function bp_init_activity() { + /* Reset the page */ + jq.cookie( 'bp-activity-oldestpage', 1, {path: '/'} ); + + if ( null != jq.cookie('bp-activity-filter') && jq('#activity-filter-select').length ) + jq('#activity-filter-select select option[value="' + jq.cookie('bp-activity-filter') + '"]').prop( 'selected', true ); + + /* Activity Tab Set */ + if ( null != jq.cookie('bp-activity-scope') && jq('div.activity-type-tabs').length ) { + jq('div.activity-type-tabs li').each( function() { + jq(this).removeClass('selected'); + }); + jq('li#activity-' + jq.cookie('bp-activity-scope') + ', div.item-list-tabs li.current').addClass('selected'); + } +} + +/* Setup object scope and filter based on the current cookie settings for the object. */ +function bp_init_objects(objects) { + jq(objects).each( function(i) { + if ( null != jq.cookie('bp-' + objects[i] + '-filter') && jq('li#' + objects[i] + '-order-select select').length ) + jq('li#' + objects[i] + '-order-select select option[value="' + jq.cookie('bp-' + objects[i] + '-filter') + '"]').prop( 'selected', true ); + + if ( null != jq.cookie('bp-' + objects[i] + '-scope') && jq('div.' + objects[i]).length ) { + jq('div.item-list-tabs li').each( function() { + jq(this).removeClass('selected'); + }); + jq('div.item-list-tabs li#' + objects[i] + '-' + jq.cookie('bp-' + objects[i] + '-scope') + ', div.item-list-tabs#object-nav li.current').addClass('selected'); + } + }); +} + +/* Filter the current content list (groups/members/blogs/topics) */ +function bp_filter_request( object, filter, scope, target, search_terms, page, extras ) { + if ( 'activity' == object ) + return false; + + if ( jq.query.get('s') && !search_terms ) + search_terms = jq.query.get('s'); + + if ( null == scope ) + scope = 'all'; + + /* Save the settings we want to remain persistent to a cookie */ + jq.cookie( 'bp-' + object + '-scope', scope, {path: '/'} ); + jq.cookie( 'bp-' + object + '-filter', filter, {path: '/'} ); + jq.cookie( 'bp-' + object + '-extras', extras, {path: '/'} ); + + /* Set the correct selected nav and filter */ + jq('div.item-list-tabs li').each( function() { + jq(this).removeClass('selected'); + }); + jq('div.item-list-tabs li#' + object + '-' + scope + ', div.item-list-tabs#object-nav li.current').addClass('selected'); + jq('div.item-list-tabs li.selected').addClass('loading'); + jq('div.item-list-tabs select option[value="' + filter + '"]').prop( 'selected', true ); + + if ( 'friends' == object ) + object = 'members'; + + if ( bp_ajax_request ) + bp_ajax_request.abort(); + + bp_ajax_request = jq.post( ajaxurl, { + action: object + '_filter', + 'cookie': encodeURIComponent(document.cookie), + 'object': object, + 'filter': filter, + 'search_terms': search_terms, + 'scope': scope, + 'page': page, + 'extras': extras + }, + function(response) + { + jq(target).fadeOut( 100, function() { + jq( '.subtitle' ).text( jq(response).find( '.pag-count' ).text() ); + jq(this).html(response); + jq(this).fadeIn(100); + }); + jq('div.item-list-tabs li.selected').removeClass('loading'); + jq( '.loader' ).hide(); + }); +} + +/* Activity Loop Requesting */ +function bp_activity_request(scope, filter) { + /* Save the type and filter to a session cookie */ + jq.cookie( 'bp-activity-scope', scope, {path: '/'} ); + jq.cookie( 'bp-activity-filter', filter, {path: '/'} ); + jq.cookie( 'bp-activity-oldestpage', 1, {path: '/'} ); + + /* Remove selected and loading classes from tabs */ + jq('div.item-list-tabs li').each( function() { + jq(this).removeClass('selected loading'); + }); + /* Set the correct selected nav and filter */ + jq('li#activity-' + scope + ', div.item-list-tabs li.current').addClass('selected'); + jq('div#object-nav.item-list-tabs li.selected, div.activity-type-tabs li.selected').addClass('loading'); + jq('#activity-filter-select select option[value="' + filter + '"]').prop( 'selected', true ); + + /* Reload the activity stream based on the selection */ + jq('.widget_bp_activity_widget h2 span.ajax-loader').show(); + + if ( bp_ajax_request ) + bp_ajax_request.abort(); + + bp_ajax_request = jq.post( ajaxurl, { + action: 'activity_widget_filter', + 'cookie': encodeURIComponent(document.cookie), + '_wpnonce_activity_filter': jq("input#_wpnonce_activity_filter").val(), + 'scope': scope, + 'filter': filter + }, + function(response) + { + jq('.widget_bp_activity_widget h2 span.ajax-loader').hide(); + + jq('div.activity').fadeOut( 100, function() { + jq(this).html(response.contents); + jq(this).fadeIn(100); + + /* Selectively hide comments */ + bp_dtheme_hide_comments(); + }); + + /* Update the feed link */ + if ( null != response.feed_url ) + jq('.directory div#subnav li.feed a, .home-page div#subnav li.feed a').attr('href', response.feed_url); + + jq('div.item-list-tabs li.selected').removeClass('loading'); + + }, 'json' ); +} + +/* Hide long lists of activity comments, only show the latest five root comments. */ +function bp_dtheme_hide_comments() { + var comments_divs = jq('div.activity-comments'); + + if ( !comments_divs.length ) + return false; + + comments_divs.each( function() { + if ( jq(this).children('ul').children('li').length < 5 ) return; + + var comments_div = jq(this); + var parent_li = comments_div.parents('ul#activity-stream > li'); + var comment_lis = jq(this).children('ul').children('li'); + var comment_count = ' '; + + if ( jq('li#' + parent_li.attr('id') + ' a.acomment-reply span').length ) + var comment_count = jq('li#' + parent_li.attr('id') + ' a.acomment-reply span').html(); + + comment_lis.each( function(i) { + /* Show the latest 5 root comments */ + if ( i < comment_lis.length - 5 ) { + jq(this).addClass('hidden'); + jq(this).toggle(); + + if ( !i ) + jq(this).before( '
                      • ' + BP_DTheme.show_all + ' ' + comment_count + ' ' + BP_DTheme.comments + '
                      • ' ); + } + }); + + }); +} + +/* Helper Functions */ + +function checkAll() { + var checkboxes = document.getElementsByTagName("input"); + for(var i=0; i=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); + +/* jQuery Easing Plugin, v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ */ +jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('M 6(A){4 $11=A.11||\'&\';4 $V=A.V===r?r:j;4 $1p=A.1p===r?\'\':\'[]\';4 $13=A.13===r?r:j;4 $D=$13?A.D===j?"#":"?":"";4 $15=A.15===r?r:j;v.1o=M 6(){4 f=6(o,t){8 o!=1v&&o!==x&&(!!t?o.1t==t:j)};4 14=6(1m){4 m,1l=/\\[([^[]*)\\]/g,T=/^([^[]+)(\\[.*\\])?$/.1r(1m),k=T[1],e=[];19(m=1l.1r(T[2]))e.u(m[1]);8[k,e]};4 w=6(3,e,7){4 o,y=e.1b();b(I 3!=\'X\')3=x;b(y===""){b(!3)3=[];b(f(3,L)){3.u(e.h==0?7:w(x,e.z(0),7))}n b(f(3,1a)){4 i=0;19(3[i++]!=x);3[--i]=e.h==0?7:w(3[i],e.z(0),7)}n{3=[];3.u(e.h==0?7:w(x,e.z(0),7))}}n b(y&&y.T(/^\\s*[0-9]+\\s*$/)){4 H=1c(y,10);b(!3)3=[];3[H]=e.h==0?7:w(3[H],e.z(0),7)}n b(y){4 H=y.B(/^\\s*|\\s*$/g,"");b(!3)3={};b(f(3,L)){4 18={};1w(4 i=0;i<3.h;++i){18[i]=3[i]}3=18}3[H]=e.h==0?7:w(3[H],e.z(0),7)}n{8 7}8 3};4 C=6(a){4 p=d;p.l={};b(a.C){v.J(a.Z(),6(5,c){p.O(5,c)})}n{v.J(1u,6(){4 q=""+d;q=q.B(/^[?#]/,\'\');q=q.B(/[;&]$/,\'\');b($V)q=q.B(/[+]/g,\' \');v.J(q.Y(/[&;]/),6(){4 5=1e(d.Y(\'=\')[0]||"");4 c=1e(d.Y(\'=\')[1]||"");b(!5)8;b($15){b(/^[+-]?[0-9]+\\.[0-9]*$/.1d(c))c=1A(c);n b(/^[+-]?[0-9]+$/.1d(c))c=1c(c,10)}c=(!c&&c!==0)?j:c;b(c!==r&&c!==j&&I c!=\'1g\')c=c;p.O(5,c)})})}8 p};C.1H={C:j,1G:6(5,1f){4 7=d.Z(5);8 f(7,1f)},1h:6(5){b(!f(5))8 d.l;4 K=14(5),k=K[0],e=K[1];4 3=d.l[k];19(3!=x&&e.h!=0){3=3[e.1b()]}8 I 3==\'1g\'?3:3||""},Z:6(5){4 3=d.1h(5);b(f(3,1a))8 v.1E(j,{},3);n b(f(3,L))8 3.z(0);8 3},O:6(5,c){4 7=!f(c)?x:c;4 K=14(5),k=K[0],e=K[1];4 3=d.l[k];d.l[k]=w(3,e.z(0),7);8 d},w:6(5,c){8 d.N().O(5,c)},1s:6(5){8 d.O(5,x).17()},1z:6(5){8 d.N().1s(5)},1j:6(){4 p=d;v.J(p.l,6(5,7){1y p.l[5]});8 p},1F:6(Q){4 D=Q.B(/^.*?[#](.+?)(?:\\?.+)?$/,"$1");4 S=Q.B(/^.*?[?](.+?)(?:#.+)?$/,"$1");8 M C(Q.h==S.h?\'\':S,Q.h==D.h?\'\':D)},1x:6(){8 d.N().1j()},N:6(){8 M C(d)},17:6(){6 F(G){4 R=I G=="X"?f(G,L)?[]:{}:G;b(I G==\'X\'){6 1k(o,5,7){b(f(o,L))o.u(7);n o[5]=7}v.J(G,6(5,7){b(!f(7))8 j;1k(R,5,F(7))})}8 R}d.l=F(d.l);8 d},1B:6(){8 d.N().17()},1D:6(){4 i=0,U=[],W=[],p=d;4 16=6(E){E=E+"";b($V)E=E.B(/ /g,"+");8 1C(E)};4 1n=6(1i,5,7){b(!f(7)||7===r)8;4 o=[16(5)];b(7!==j){o.u("=");o.u(16(7))}1i.u(o.P(""))};4 F=6(R,k){4 12=6(5){8!k||k==""?[5].P(""):[k,"[",5,"]"].P("")};v.J(R,6(5,7){b(I 7==\'X\')F(7,12(5));n 1n(W,12(5),7)})};F(d.l);b(W.h>0)U.u($D);U.u(W.P($11));8 U.P("")}};8 M C(1q.S,1q.D)}}(v.1o||{});',62,106,'|||target|var|key|function|value|return|||if|val|this|tokens|is||length||true|base|keys||else||self||false|||push|jQuery|set|null|token|slice|settings|replace|queryObject|hash|str|build|orig|index|typeof|each|parsed|Array|new|copy|SET|join|url|obj|search|match|queryString|spaces|chunks|object|split|get||separator|newKey|prefix|parse|numbers|encode|COMPACT|temp|while|Object|shift|parseInt|test|decodeURIComponent|type|number|GET|arr|EMPTY|add|rx|path|addFields|query|suffix|location|exec|REMOVE|constructor|arguments|undefined|for|empty|delete|remove|parseFloat|compact|encodeURIComponent|toString|extend|load|has|prototype'.split('|'),0,{})) \ No newline at end of file diff --git a/wp-content/themes/huddle/js/custom.js b/wp-content/themes/huddle/js/custom.js new file mode 100644 index 0000000..eed65b1 --- /dev/null +++ b/wp-content/themes/huddle/js/custom.js @@ -0,0 +1,182 @@ +jQuery( function( $ ) { + + + var inputPlaceholder = 'placeholder' in document.createElement('input'); + + + // CSS + $( '.image-gallery .one_third:nth-child(3n)' ).addClass( 'last' ); + $( '#nav ul.menu > li:last' ).addClass( 'last' ); + $( '#billboard .column:first' ).addClass( 'first' ); + $( '#sidebar-home .widget:nth-child(3n)' ).addClass( 'last' ); + $( '#sidebar-footer .widget:nth-child(3n)' ).addClass( 'last' ); + $( '.widget-twitter li:last-child' ).addClass( 'last' ); + $( '.widget-flickr .flickr_badge_image:nth-child(7n)' ).addClass( 'last' ); + $( '#members-list' ).rdy( function() { + $( '#members-list .' + $( '#members-list li:last' ).attr( 'rel' ) ).addClass( 'row-last' ); + } ); + $( '#groups-dir-list' ).rdy( function() { + $( '#groups-dir-list .' + $( '#groups-dir-list li:last' ).attr( 'rel' ) ).addClass( 'row-last' ); + } ); + $( '.widget_bp_core_members_widget li:nth-child(6n)' ).addClass( 'last' ); + $( '.widget_bp_groups_widget li:nth-child(6n)' ).addClass( 'last' ); + $( '#activity-stream > li:even' ).addClass( 'odd' ); + $( '#activity-stream li:first' ).addClass( 'first' ); + $( '#activity-stream li:last' ).addClass( 'last' ); + $( '#activity-stream li .activity-header a:first' ).addClass( 'first' ); + $( '#group-create-tabs li.current' ).prevAll().addClass( 'done' ); + $( '#group-create-tabs li:last' ).addClass( 'last' ); + $( '.groups table.forum tr:even' ).addClass( 'odd' ); + $( '.bp-profile #item-body #groups-list li:nth-child(odd), .bp-profile #item-body #members-list li:nth-child(odd), .bp-profile #item-body #friend-list li:nth-child(odd)' ).addClass( 'odd' ); + $( '.bp-profile #item-body #groups-list li:nth-child(even), .bp-profile #item-body #members-list li:nth-child(even), .bp-profile #item-body #friend-list li:nth-child(even)' ).addClass( 'even' ); + $( 'body.forums table.forum tr:nth-child(odd)' ).addClass( 'odd' ); + $('[placeholder]').each(function(i, el) { + if( 'text' == $( el ).attr( 'type' ) || ! inputPlaceholder ) $(el).placeHolder(); + }); + $( '#item-body form input[type="submit"], #item-body form button' ).addClass( 'btn-gray' ); + $( '.action .generic-button a, .dir-form h2 a, .generic-button a' ).addClass( 'btn-gray' ); + $( '#item-body .item-list li:even' ).addClass( 'odd' ); + $( '#item-actions .btn-gray.remove' ).removeClass( 'btn-gray' ); + + + + // Drop Down Menu + $("#nav ul.menu").superfish({ + delay: 200, + animation: { + opacity: 'show', + height: 'show' + }, + speed: 'fast', + autoArrows: false + }); + + + // Frame pages + $( '.quick-register' ).colorbox( { + iframe: true, + width: 680, + height: 580 + } ); + $( '.quick-create-blog' ).colorbox( { + iframe: true, + width: 680, + height: 590 + } ); + $( '.groups .subtitle a.btn-gray, .quick-create-group' ).colorbox( { + iframe: true, + width: 660, + height: 580 + } ); + + + // Tabs + $('.tabs').each(function(i, tabs) { + tabs = $(tabs); + tabs.find('a').click(function() { + panes = $(this).parent().parent().next().next(); + $(this).addClass('btn-small').parent().siblings().find('a').removeClass('btn-small').find('span').css('background', 'none'); + panes.find('.pane').hide().eq($(this).parent().index()).fadeIn(); + return false; + }).eq(0).trigger('click'); + + }); + + + // BuddyPress Members & Groups sorting + $( '#members-order-select' ).rdy( function() { + var current = $( this ).hide().find( 'select' ).val(); + $( '.sort-' + current ).addClass( 'active' ); + $( '.loader' ).hide(); + + $( '.members-sort-link' ).click( function() { + $( '.loader' ).show(); + $( '.members-sort-link' ).removeClass( 'active' ); + $( this ).addClass( 'active' ); + current = $( this ).attr( 'href' ).replace( '#', '' ); + + var search_terms = jq("#members_search").val(); + + bp_filter_request( 'members', current, 'order', 'div.members', search_terms, 1, jq.cookie('bp-members-extras') ); + + return false; + } ); + } ); + + $( '#groups-order-select' ).rdy( function() { + var current = $( this ).hide().find( 'select' ).val(); + $( '.sort-' + current ).addClass( 'active' ); + $( '.loader' ).hide(); + + $( '.groups-sort-link' ).click( function() { + $( '.loader' ).show(); + $( '.groups-sort-link' ).removeClass( 'active' ); + $( this ).addClass( 'active' ); + current = $( this ).attr( 'href' ).replace( '#', '' ); + + var search_terms = jq("#groups_search").val(); + + bp_filter_request( 'groups', current, 'order', 'div.groups', search_terms, 1, jq.cookie('bp-groups-extras') ); + + return false; + } ); + } ); + + $( '#blogs-order-select' ).rdy( function() { + var current = $( this ).hide().find( 'select' ).val(); + $( '.sort-' + current ).addClass( 'active' ); + $( '.loader' ).hide(); + + $( '.blogs-sort-link' ).click( function() { + $( '.loader' ).show(); + $( '.blogs-sort-link' ).removeClass( 'active' ); + $( this ).addClass( 'active' ); + current = $( this ).attr( 'href' ).replace( '#', '' ); + + var search_terms = jq("#blogs_search").val(); + + bp_filter_request( 'blogs', current, 'order', 'div.blogs', search_terms, 1, jq.cookie('bp-blogs-extras') ); + + return false; + } ); + } ); + + + // BuddyPress Members/Groups Widget + $( 'body' ).ajaxComplete( function( e, xhr, options ) { + if( options.data.indexOf( 'action=widget_members' ) != -1 || options.data.indexOf( 'action=widget_groups' ) != -1 ) { + setTimeout( function() { + $( '.widget_bp_core_members_widget li:nth-child(6n)' ).addClass( 'last' ); + }, 300 ); + } + } ); + +} ); + +jQuery.fn.rdy = function( func ) { + this.length && func.apply( this ); + return this; +}; + +jQuery.fn.placeHolder = function( default_value ) { + var el = jQuery(this); + default_value = default_value || el.attr( 'placeholder' ); + + if( default_value && default_value.length ) { + el.focus(function() { + if(el.val() == el.data('default_value')) el.val('').removeClass('empty'); + }); + + el.blur(function() { + if(!el.val().length) el.val(el.data('default_value')).addClass('empty'); + }); + + el.closest('form').submit(function() { + if(el.val() == el.data('default_value')) el.val(''); + }); + + el.data('default_value', default_value).attr('title', default_value).trigger('blur'); + } + + return this; +}; diff --git a/wp-content/themes/huddle/js/jquery.colorbox-min.js b/wp-content/themes/huddle/js/jquery.colorbox-min.js new file mode 100644 index 0000000..5449a51 --- /dev/null +++ b/wp-content/themes/huddle/js/jquery.colorbox-min.js @@ -0,0 +1,4 @@ +// ColorBox v1.3.18 - a full featured, light-weight, customizable lightbox based on jQuery 1.3+ +// Copyright (c) 2011 Jack Moore - jack@colorpowered.com +// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php +(function(a,b,c){function Y(c,d,e){var g=b.createElement(c);return d&&(g.id=f+d),e&&(g.style.cssText=e),a(g)}function Z(a){var b=y.length,c=(Q+a)%b;return c<0?b+c:c}function $(a,b){return Math.round((/%/.test(a)?(b==="x"?z.width():z.height())/100:1)*parseInt(a,10))}function _(a){return K.photo||/\.(gif|png|jpe?g|bmp|ico)((#|\?).*)?$/i.test(a)}function ba(){var b;K=a.extend({},a.data(P,e));for(b in K)a.isFunction(K[b])&&b.slice(0,2)!=="on"&&(K[b]=K[b].call(P));K.rel=K.rel||P.rel||"nofollow",K.href=K.href||a(P).attr("href"),K.title=K.title||P.title,typeof K.href=="string"&&(K.href=a.trim(K.href))}function bb(b,c){a.event.trigger(b),c&&c.call(P)}function bc(){var a,b=f+"Slideshow_",c="click."+f,d,e,g;K.slideshow&&y[1]?(d=function(){F.text(K.slideshowStop).unbind(c).bind(j,function(){if(Q"),b.open=!0}return c&&(b.onComplete=c),f.each(function(){a.data(this,e,a.extend({},a.data(this,e)||d,b)),a(this).addClass(g)}),(a.isFunction(b.open)&&b.open.call(f)||b.open)&&bd(f[0]),f},W.init=function(){if(!r){if(!a("body")[0]){a(W.init);return}z=a(c),r=Y(X).attr({id:e,"class":n?f+(o?"IE6":"IE"):""}),q=Y(X,"Overlay",o?"position:absolute":"").hide(),s=Y(X,"Wrapper"),t=Y(X,"Content").append(A=Y(X,"LoadedContent","width:0; height:0; overflow:hidden"),C=Y(X,"LoadingOverlay").add(Y(X,"LoadingGraphic")),D=Y(X,"Title"),E=Y(X,"Current"),G=Y(X,"Next"),H=Y(X,"Previous"),F=Y(X,"Slideshow").bind(h,bc),I=Y(X,"Close")),s.append(Y(X).append(Y(X,"TopLeft"),u=Y(X,"TopCenter"),Y(X,"TopRight")),Y(X,!1,"clear:left").append(v=Y(X,"MiddleLeft"),t,w=Y(X,"MiddleRight")),Y(X,!1,"clear:left").append(Y(X,"BottomLeft"),x=Y(X,"BottomCenter"),Y(X,"BottomRight"))).find("div div").css({"float":"left"}),B=Y(X,!1,"position:absolute; width:9999px; visibility:hidden; display:none"),a("body").prepend(q,r.append(s,B)),L=u.height()+x.height()+t.outerHeight(!0)-t.height(),M=v.width()+w.width()+t.outerWidth(!0)-t.width(),N=A.outerHeight(!0),O=A.outerWidth(!0),r.css({"padding-bottom":L,"padding-right":M}).hide(),G.click(function(){W.next()}),H.click(function(){W.prev()}),I.click(function(){W.close()}),J=G.add(H).add(E).add(F),q.click(function(){K.overlayClose&&W.close()}),a(b).bind("keydown."+f,function(a){var b=a.keyCode;S&&K.escKey&&b===27&&(a.preventDefault(),W.close()),S&&K.arrowKey&&y[1]&&(b===37?(a.preventDefault(),H.click()):b===39&&(a.preventDefault(),G.click()))})}},W.remove=function(){r.add(q).remove(),r=null,a("."+g).removeData(e).removeClass(g)},W.position=function(a,b){function g(a){u[0].style.width=x[0].style.width=t[0].style.width=a.style.width,C[0].style.height=C[1].style.height=t[0].style.height=v[0].style.height=w[0].style.height=a.style.height}var c=0,d=0,e=r.offset();z.unbind("resize."+f),r.css({top:-99999,left:-99999}),K.fixed&&!o?r.css({position:"fixed"}):(c=z.scrollTop(),d=z.scrollLeft(),r.css({position:"absolute"})),K.right!==!1?d+=Math.max(z.width()-K.w-O-M-$(K.right,"x"),0):K.left!==!1?d+=$(K.left,"x"):d+=Math.round(Math.max(z.width()-K.w-O-M,0)/2),K.bottom!==!1?c+=Math.max(z.height()-K.h-N-L-$(K.bottom,"y"),0):K.top!==!1?c+=$(K.top,"y"):c+=Math.round(Math.max(z.height()-K.h-N-L,0)/2),r.css({top:e.top,left:e.left}),a=r.width()===K.w+O&&r.height()===K.h+N?0:a||0,s[0].style.width=s[0].style.height="9999px",r.dequeue().animate({width:K.w+O,height:K.h+N,top:c,left:d},{duration:a,complete:function(){g(this),T=!1,s[0].style.width=K.w+O+M+"px",s[0].style.height=K.h+N+L+"px",b&&b(),setTimeout(function(){z.bind("resize."+f,W.position)},1)},step:function(){g(this)}})},W.resize=function(a){S&&(a=a||{},a.width&&(K.w=$(a.width,"x")-O-M),a.innerWidth&&(K.w=$(a.innerWidth,"x")),A.css({width:K.w}),a.height&&(K.h=$(a.height,"y")-N-L),a.innerHeight&&(K.h=$(a.innerHeight,"y")),!a.innerHeight&&!a.height&&(A.css({height:"auto"}),K.h=A.height()),A.css({height:K.h}),W.position(K.transition==="none"?0:K.speed))},W.prep=function(b){function g(){return K.w=K.w||A.width(),K.w=K.mw&&K.mw1){typeof K.current=="string"&&E.html(K.current.replace("{current}",Q+1).replace("{total}",g)).show(),G[K.loop||QK.mw&&(a=(R.width-K.mw)/R.width,d()),K.mh&&R.height>K.mh&&(a=(R.height-K.mh)/R.height,d())),K.h&&(R.style.marginTop=Math.max(K.h-R.height,0)/2+"px"),y[1]&&(Q1||a.shiftKey||a.altKey||a.metaKey||(a.preventDefault(),bd(this))}),W.init()})(jQuery,document,this); \ No newline at end of file diff --git a/wp-content/themes/huddle/js/jquery.tweet.js b/wp-content/themes/huddle/js/jquery.tweet.js new file mode 100644 index 0000000..2d9f4fa --- /dev/null +++ b/wp-content/themes/huddle/js/jquery.tweet.js @@ -0,0 +1,155 @@ + +(function ($) { + + $.fn.tweet = function (o) { + var s = { + list: null, // [string] optional name of list belonging to username + avatar_size: null, // [integer] height and width of avatar if displayed (48px max) + intro_text: null, // [string] do you want text BEFORE your your tweets? + outro_text: null, // [string] do you want text AFTER your tweets? + join_text: null, // [string] optional text in between date and tweet, try setting to "auto" + auto_join_text_default: null, // [string] auto text for non verb: "i said" bullocks + auto_join_text_ed: null, // [string] auto text for past tense: "i" surfed + auto_join_text_ing: null, // [string] auto tense for present tense: "i was" surfing + auto_join_text_reply: null, // [string] auto tense for replies: "i replied to" @someone "with" + auto_join_text_url: null, // [string] auto tense for urls: "i was looking at" http:... + loading_text: null, // [string] optional loading text, displayed while tweets load + query: null // [string] optional search query + }; + + if(o) { $.extend(s, o); } + + $.fn.extend({ + linkUrl: function () { + var returning = [], regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi; + this.each(function() { + returning.push(this.replace(regexp,"$1")); + }); + return $(returning); + }, + linkUser: function () { + var returning = [], regexp = /[\@]+([A-Za-z0-9-_]+)/gi; + this.each(function() { + returning.push(this.replace(regexp,"@$1")); + }); + return $(returning); + }, + linkHash: function () { + var returning = [], regexp = / [\#]+([A-Za-z0-9-_]+)/gi; + this.each(function() { + returning.push(this.replace(regexp, ' #$1')); + }); + return $(returning); + }, + capAwesome: function () { + var returning = []; + this.each(function() { + returning.push(this.replace(/\b(awesome)\b/gi, '$1')); + }); + return $(returning); + }, + capEpic: function () { + var returning = []; + this.each(function () { + returning.push(this.replace(/\b(epic)\b/gi, '$1')); + }); + return $(returning); + }, + makeHeart: function () { + var returning = []; + this.each(function() { + returning.push(this.replace(/(<)+[3]/gi, "")); + }); + return $(returning); + } + }); + + function relative_time (time_value) { + + if($.browser.msie) { + time_value = time_value.replace(/^\w+ (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/, "$1 $2 $4 $3 UTC"); + } + + var parsed_date = Date.parse(time_value), + relative_to = new Date(), + delta = parseInt((relative_to.getTime() - parsed_date) / 1000, 10), + pluralize = function (singular, n) { + return '' + n + ' ' + singular + (n == 1 ? '' : 's'); + }; + if(delta < 60) { + return 'less than a minute ago'; + } else if(delta < (45*60)) { + return 'about ' + pluralize("minute", parseInt(delta / 60, 10)) + ' ago'; + } else if(delta < (24*60*60)) { + return 'about ' + pluralize("hour", parseInt(delta / 3600, 10)) + ' ago'; + } else { + return 'about ' + pluralize("day", parseInt(delta / 86400, 10)) + ' ago'; + } + } + + function build_url () { + var proto = ('https:' == document.location.protocol ? 'https:' : 'http:'); + if (s.list) { + return proto+"//api.twitter.com/1/"+s.username[0]+"/lists/"+s.list+"/statuses.json?per_page="+s.count+"&callback=?"; + } else if (s.query == null && s.username.length == 1) { + return proto+'//twitter.com/status/user_timeline/'+s.username[0]+'.json?count='+s.count+'&callback=?'; + } else { + var query = (s.query || 'from:'+s.username.join('%20OR%20from:')); + return proto+'//search.twitter.com/search.json?&q='+query+'&rpp='+s.count+'&callback=?'; + } + } + + return this.each(function () { + var list = $('
                          ').appendTo(this), + intro = '

                          '+s.intro_text+'

                          ', + outro = '

                          '+s.outro_text+'

                          ', + loading = $('

                          '+s.loading_text+'

                          '); + + if(typeof(s.username) == "string") { + s.username = [s.username]; + } + + if (s.loading_text) { $(this).append(loading); } + $.getJSON(build_url(), function (data) { + if (s.loading_text) { loading.remove(); } + if (s.intro_text) { list.before(intro); } + $.each((data.results || data), function(i,item) { + // auto join text based on verb tense and content + if (s.join_text == "auto") { + if (item.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)) { + var join_text = s.auto_join_text_reply; + } else if (item.text.match(/(^\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+) .*/i)) { + var join_text = s.auto_join_text_url; + } else if (item.text.match(/^((\w+ed)|just) .*/im)) { + var join_text = s.auto_join_text_ed; + } else if (item.text.match(/^(\w*ing) .*/i)) { + var join_text = s.auto_join_text_ing; + } else { + var join_text = s.auto_join_text_default; + } + } else { + var join_text = s.join_text; + } + + var from_user = item.from_user || item.user.screen_name; + var profile_image_url = item.profile_image_url || item.user.profile_image_url; + var join_template = ' '+join_text+' '; + var join = ((s.join_text) ? join_template : ' '); + var avatar_template = ''+from_user+'\'s avatar'; + var avatar = (s.avatar_size ? avatar_template : ''); + var date = ''+relative_time(item.created_at)+''; + var text = '

                          ' +$([item.text]).linkUrl().linkUser().linkHash()[0]+ '

                          '; + + // until we create a template option, arrange the items below to alter a tweet's display. + list.append('
                        • ' + avatar + join + text + date + '
                        • '); + + list.children('li:first').addClass('tweet_first'); + list.children('li:odd').addClass('tweet_even'); + list.children('li:even').addClass('tweet_odd'); + }); + if (s.outro_text) list.after(outro); + }); + + }); + }; +})(jQuery); \ No newline at end of file diff --git a/wp-content/themes/huddle/js/superfish.js b/wp-content/themes/huddle/js/superfish.js new file mode 100644 index 0000000..a2b70ba --- /dev/null +++ b/wp-content/themes/huddle/js/superfish.js @@ -0,0 +1,121 @@ + +/* + * Superfish v1.4.8 - jQuery menu widget + * Copyright (c) 2008 Joel Birch + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt + */ + +;(function($){ + $.fn.superfish = function(op){ + + var sf = $.fn.superfish, + c = sf.c, + $arrow = $([' »'].join('')), + over = function(){ + var $$ = $(this), menu = getMenu($$); + clearTimeout(menu.sfTimer); + $$.showSuperfishUl().siblings().hideSuperfishUl(); + }, + out = function(){ + var $$ = $(this), menu = getMenu($$), o = sf.op; + clearTimeout(menu.sfTimer); + menu.sfTimer=setTimeout(function(){ + o.retainPath=($.inArray($$[0],o.$path)>-1); + $$.hideSuperfishUl(); + if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);} + },o.delay); + }, + getMenu = function($menu){ + var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0]; + sf.op = sf.o[menu.serial]; + return menu; + }, + addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); }; + + return this.each(function() { + var s = this.serial = sf.o.length; + var o = $.extend({},sf.defaults,op); + o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){ + $(this).addClass([o.hoverClass,c.bcClass].join(' ')) + .filter('li:has(ul)').removeClass(o.pathClass); + }); + sf.o[s] = sf.op = o; + + $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() { + if (o.autoArrows) addArrow( $('>a:first-child',this) ); + }) + .not('.'+c.bcClass) + .hideSuperfishUl(); + + var $a = $('a',this); + $a.each(function(i){ + var $li = $a.eq(i).parents('li'); + $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);}); + }); + o.onInit.call(this); + + }).each(function() { + var menuClasses = [c.menuClass]; + if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass); + $(this).addClass(menuClasses.join(' ')); + }); + }; + + var sf = $.fn.superfish; + sf.o = []; + sf.op = {}; + sf.IE7fix = function(){ + var o = sf.op; + if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined) + this.toggleClass(sf.c.shadowClass+'-off'); + }; + sf.c = { + bcClass : 'sf-breadcrumb', + menuClass : 'sf-js-enabled', + anchorClass : 'sf-with-ul', + arrowClass : 'sf-sub-indicator', + shadowClass : 'sf-shadow' + }; + sf.defaults = { + hoverClass : 'sfHover', + pathClass : 'overideThisToUse', + pathLevels : 1, + delay : 800, + animation : {opacity:'show'}, + speed : 'normal', + autoArrows : true, + dropShadows : true, + disableHI : false, // true disables hoverIntent detection + onInit : function(){}, // callback functions + onBeforeShow: function(){}, + onShow : function(){}, + onHide : function(){} + }; + $.fn.extend({ + hideSuperfishUl : function(){ + var o = sf.op, + not = (o.retainPath===true) ? o.$path : ''; + o.retainPath = false; + var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass) + .find('>ul').hide().css('visibility','hidden'); + o.onHide.call($ul); + return this; + }, + showSuperfishUl : function(){ + var o = sf.op, + sh = sf.c.shadowClass+'-off', + $ul = this.addClass(o.hoverClass) + .find('>ul:hidden').css('visibility','visible'); + sf.IE7fix.call($ul); + o.onBeforeShow.call($ul); + $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); }); + return this; + } + }); + +})(jQuery); \ No newline at end of file diff --git a/wp-content/themes/huddle/languages/en_US.mo b/wp-content/themes/huddle/languages/en_US.mo new file mode 100644 index 0000000..6311899 Binary files /dev/null and b/wp-content/themes/huddle/languages/en_US.mo differ diff --git a/wp-content/themes/huddle/languages/en_US.po b/wp-content/themes/huddle/languages/en_US.po new file mode 100644 index 0000000..3f79dba --- /dev/null +++ b/wp-content/themes/huddle/languages/en_US.po @@ -0,0 +1,1994 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" + +#. Text in function +#: huddle/search.php:10 +msgid "\"%s\"" +msgstr "" + +#. Text in function +#: huddle/includes/loop.php:35 +#: huddle/includes/loop.php:121 +#: huddle/includes/related-posts.php:31 +#: huddle/functions/widgets/widget-tab-posts.php:76 +#: huddle/functions/widgets/widget-recent-posts.php:56 +#: huddle/comments.php:15 +msgid "% Comments" +msgstr "" + +#. Text in function +#: huddle/forums/forums-loop.php:42 +msgid "%1$s" +msgstr "" + +#. Text in function +#: huddle/archive.php:30 +#: huddle/archive.php:14 +#: huddle/archive.php:17 +msgid "%s" +msgstr "" + +#. Text in function +#: huddle/members/single/groups/invites.php:14 +msgid "%s members" +msgstr "" + +#. Text in function +#: huddle/forums/single/topic.php:96 +msgid "%s said %s ago:" +msgstr "" + +#. Text in function +#: huddle/members/single/profile/profile-wp.php:8 +msgid "%s's Profile" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:287 +msgid "(banned)" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:41 +#: huddle/registration/register.php:46 +#: huddle/registration/register.php:51 +#: huddle/registration/register.php:56 +#: huddle/registration/register.php:110 +#: huddle/registration/register.php:136 +#: huddle/registration/register.php:147 +#: huddle/registration/register.php:198 +#: huddle/registration/register.php:209 +#: huddle/members/single/profile/edit.php:40 +#: huddle/members/single/profile/edit.php:33 +#: huddle/members/single/profile/edit.php:49 +#: huddle/members/single/profile/edit.php:83 +#: huddle/members/single/profile/edit.php:93 +msgid "(required)" +msgstr "" + +#. Text in echo +#: huddle/includes/loop.php:33 +#: huddle/includes/loop.php:119 +msgid ", in" +msgstr "" + +#. Text in echo +#: huddle/includes/loop.php:34 +#: huddle/includes/loop.php:120 +msgid ", with" +msgstr "" + +#. Text in echo +#: huddle/forums/index.php:118 +msgid "----" +msgstr "" + +#. Text in function +#: huddle/includes/loop.php:35 +#: huddle/includes/loop.php:121 +#: huddle/includes/related-posts.php:31 +#: huddle/functions/widgets/widget-tab-posts.php:76 +#: huddle/functions/widgets/widget-recent-posts.php:56 +msgid "0 Comments" +msgstr "" + +#. Text in function +#: huddle/includes/loop.php:35 +#: huddle/includes/loop.php:121 +#: huddle/includes/related-posts.php:31 +#: huddle/functions/widgets/widget-tab-posts.php:76 +#: huddle/functions/widgets/widget-recent-posts.php:56 +#: huddle/comments.php:15 +msgid "1 Comment" +msgstr "" + +#. Text in echo +#: huddle/template-archives.php:20 +msgid "25 Most Recent Posts" +msgstr "" + +#. Text in function +#: huddle/activity/comment.php:12 +msgid "%2$s replied %4$s" +msgstr "" + +#. Text in function +#: huddle/activity/index.php:63 +msgid "%s new" +msgstr "" + +#. Text in function +#: huddle/groups/create.php:66 +msgid "Attention Site Admin: Group forums require the correct setup and configuration of a bbPress installation." +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-tab-posts.php:1 +msgid "A widget that display popular posts, recent posts, recent comments and tags." +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-tab-archive.php:1 +msgid "A widget that displays categories, pages, and archives." +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/profile-wp.php:51 +msgid "AOL Messenger" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/profile-wp.php:24 +msgid "About Me" +msgstr "" + +#. Text in echo +#: huddle/includes/author-info.php:5 +msgid "About The Author" +msgstr "" + +#. Text in echo +#: huddle/members/single/groups/invites.php:23 +#: huddle/members/single/friends/requests.php:23 +#: huddle/groups/single/admin.php:359 +msgid "Accept" +msgstr "" + +#. Text in echo +#: huddle/registration/activate.php:11 +msgid "Account Activated" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:33 +msgid "Account Details" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/general.php:52 +msgid "Account Email" +msgstr "" + +#. Text in echo +#: huddle/members/single/member-header.php:42 +msgid "Account Settings" +msgstr "" + +#. Text in echo +#: huddle/registration/activate.php:39 +msgid "Activate" +msgstr "" + +#. Text in echo +#: huddle/registration/activate.php:24 +msgid "Activate your Account" +msgstr "" + +#. Text in echo +#: huddle/registration/activate.php:34 +msgid "Activation Key:" +msgstr "" + +#. Text in echo +#: huddle/activity/index.php:63 +msgid "Activity that I have been mentioned in." +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Add" +msgstr "" + +#. Text in function +#: huddle/comments.php:38 +msgid "Add Your Comment" +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum/topic.php:102 +#: huddle/forums/single/topic.php:152 +msgid "Add a reply:" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:191 +msgid "Administrators" +msgstr "" + +#. Text in function +#: huddle/activity/index.php:25 +msgid "All Members %s" +msgstr "" + +#. Text in function +#: huddle/blogs/index.php:24 +msgid "All Sites %s" +msgstr "" + +#. Text in function +#: huddle/forums/index.php:35 +msgid "All Topics %s" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:115 +#: huddle/groups/single/admin.php:108 +msgid "All group members" +msgstr "" + +#. Text in echo +#: huddle/members/single/friends.php:13 +#: huddle/members/single/blogs.php:13 +#: huddle/members/index.php:34 +#: huddle/members/index.php:42 +#: huddle/blogs/index.php:48 +#: huddle/groups/index.php:48 +#: huddle/members/single/groups.php:14 +msgid "Alphabetical" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "An optional widget area for your site footer" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:81 +#: huddle/groups/single/admin.php:71 +msgid "Any site member can join this group." +msgstr "" + +#. Text in echo +#: huddle/archive.php:27 +msgid "Author" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:37 +#: huddle/groups/create.php:171 +#: huddle/groups/single/admin.php:168 +msgid "Avatar preview" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:34 +#: huddle/groups/create.php:168 +#: huddle/groups/single/admin.php:165 +msgid "Avatar to crop" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:270 +msgid "Back to Previous Step" +msgstr "" + +#. Text in echo +#: huddle/archive.php:29 +msgid "Blog Archives" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:191 +msgid "Blog Details" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Blog Sidebar" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:198 +msgid "Blog URL" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-enews.php:105 +msgid "Button Text:" +msgstr "" + +#. Text in echo +#: huddle/forums/group-forums-loop.php:59 +#: huddle/forums/forums-loop.php:60 +msgid "By · " +msgstr "" + +#. Text in function +#: huddle/forums/group-forums-loop.php:32 +#: huddle/forums/forums-loop.php:26 +msgid "By · %1$s" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +#: huddle/forums/index.php:137 +msgid "Cancel" +msgstr "" + +#. Text in function +#: huddle/comments.php:38 +msgid "Cancel Reply To Comment →" +msgstr "" + +#. Text in echo +#: huddle/template-archives.php:27 +#: huddle/template-sitemap.php:28 +msgid "Categories" +msgstr "" + +#. Text in echo +#: huddle/archive.php:19 +msgid "Category" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:1 +msgid "Change Avatar" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/general.php:57 +msgid "Change Password (leave blank for no change)" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:51 +msgid "Choose a Password" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:126 +#: huddle/members/single/profile/edit.php:58 +#: huddle/members/single/profile/edit.php:73 +msgid "Clear" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:14 +msgid "Click below to select a JPG, GIF or PNG format photo from your computer and then click \\'Upload Image\\' to proceed." +msgstr "" + +#. Text in function +#: huddle/activity/entry.php:47 +msgid "Comment %s" +msgstr "" + +#. Text in echo +#: huddle/members/single/activity.php:18 +#: huddle/activity/index.php:88 +msgid "Comments" +msgstr "" + +#. Text in echo +#: huddle/groups/single/request-membership.php:7 +msgid "Comments (optional)" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:231 +msgid "Complete Sign Up" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:56 +msgid "Confirm Password" +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum.php:81 +#: huddle/forums/single/edit.php:52 +#: huddle/forums/index.php:105 +#: huddle/groups/single/forum/edit.php:57 +msgid "Content:" +msgstr "" + +#. Text in echo +#: huddle/includes/loop.php:126 +msgid "Continue Reading →" +msgstr "" + +#. Text in function +#: huddle/members/single/messages/single.php:18 +msgid "Conversation between %s and you." +msgstr "" + +#. Text in echo +#: huddle/template-homepage.php:21 +msgid "Create An Account →" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:284 +msgid "Create Group and Continue" +msgstr "" + +#. Text in echo +#: huddle/forums/index.php:94 +msgid "Create New Topic:" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:9 +msgid "Create a Group" +msgstr "" + +#. Text in echo +#: huddle/groups/index.php:18 +#: huddle/groups/index.php:57 +msgid "Create a New Group" +msgstr "" + +#. Text in echo +#: huddle/blogs/create.php:10 +#: huddle/blogs/index.php:12 +msgid "Create a Site" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:20 +msgid "Create an Account" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:163 +msgid "Crop Avatar" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:166 +msgid "Crop Group Avatar" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:40 +#: huddle/groups/create.php:174 +#: huddle/groups/single/admin.php:171 +msgid "Crop Image" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:32 +msgid "Crop Your New Avatar" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/general.php:47 +msgid "Current Password" +msgstr "" + +#. Text in echo +#: huddle/archive.php:10 +msgid "Daily Archives" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-enews.php:97 +msgid "Default Text for Input Field:" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/single.php:24 +#: huddle/activity/comment.php:30 +#: huddle/members/single/messages/messages-loop.php:47 +msgid "Delete" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/delete-account.php:40 +msgid "Delete Account" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:25 +#: huddle/groups/single/admin.php:153 +msgid "Delete Avatar" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:399 +msgid "Delete Group" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/single.php:24 +#: huddle/members/single/messages/notices-loop.php:38 +#: huddle/members/single/messages/messages-loop.php:47 +msgid "Delete Message" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/delete-account.php:55 +msgid "Delete My Account" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:25 +msgid "Delete My Avatar" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:210 +#: huddle/groups/single/admin.php:242 +msgid "Demote to Member" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-video.php:56 +msgid "Description:" +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-flickr.php:1 +msgid "Display your flickr photos." +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-video.php:1 +msgid "Displays a featured video." +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-tweets.php:1 +msgid "Displays your latest tweets." +msgstr "" + +#. Text in echo +#: huddle/members/single/member-header.php:41 +msgid "Edit Profile" +msgstr "" + +#. Text in echo +#: huddle/forums/single/edit.php:25 +#: huddle/groups/single/forum/edit.php:36 +msgid "Edit:" +msgstr "" + +#. Text in function +#: huddle/members/single/profile/edit.php:10 +msgid "Editing '%s' Profile Group" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:46 +msgid "Email Address" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/notifications.php:40 +msgid "Email Notification" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:59 +#: huddle/groups/single/admin.php:54 +msgid "Enable discussion forum" +msgstr "" + +#. Text in echo +#: huddle/searchform.php:4 +msgid "Enter your search term" +msgstr "" + +#. Text in echo +#: huddle/functions-buddypress.php:187 +msgid "Error joining group" +msgstr "" + +#. Text in echo +#: huddle/functions-buddypress.php:187 +msgid "Error leaving group" +msgstr "" + +#. Text in echo +#: huddle/functions-buddypress.php:187 +msgid "Error requesting membership" +msgstr "" + +#. Text in echo +#: huddle/members/single/activity.php:10 +#: huddle/groups/single/activity.php:10 +#: huddle/activity/index.php:82 +msgid "Everything" +msgstr "" + +#. Text in echo +#: huddle/activity/entry.php:55 +msgid "Favorite" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-enews.php:101 +msgid "Feedburner ID:" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:291 +msgid "Finish" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-flickr.php:61 +msgid "Flickr ID:" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-tweets.php:67 +msgid "Follow Text (ex: Follow me on Twitter):" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Footer Menu" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Footer Sidebar" +msgstr "" + +#. Text in echo +#: huddle/header.php:70 +msgid "Forgot Password?" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:51 +msgid "Forum" +msgstr "" + +#. Text in echo +#: huddle/forums/single/forum.php:22 +#: huddle/groups/single/forum.php:27 +#: huddle/forums/single/edit.php:16 +#: huddle/groups/single/forum/edit.php:16 +#: huddle/groups/single/forum/topic.php:20 +#: huddle/forums/single/topic.php:42 +msgid "Forum Directory" +msgstr "" + +#. Text in echo +#: huddle/members/single/activity.php:34 +#: huddle/groups/single/activity.php:15 +#: huddle/activity/index.php:95 +msgid "Forum Replies" +msgstr "" + +#. Text in echo +#: huddle/members/single/activity.php:33 +#: huddle/groups/single/activity.php:14 +#: huddle/activity/index.php:94 +msgid "Forum Topics" +msgstr "" + +#. Text in echo +#: huddle/forums/index.php:13 +msgid "Forums Directory" +msgstr "" + +#. Text in echo +#: huddle/members/single/activity.php:25 +#: huddle/activity/index.php:108 +msgid "Friendships" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/messages-loop.php:29 +msgid "From:" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/general.php:40 +msgid "General Settings" +msgstr "" + +#. Text in echo +#: huddle/groups/single/group-header.php:42 +msgid "Group Admins" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:38 +#: huddle/groups/single/admin.php:22 +msgid "Group Description (required)" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:108 +#: huddle/groups/single/admin.php:100 +msgid "Group Invitations" +msgstr "" + +#. Text in echo +#: huddle/members/single/activity.php:41 +#: huddle/groups/single/activity.php:18 +#: huddle/activity/index.php:102 +msgid "Group Memberships" +msgstr "" + +#. Text in echo +#: huddle/groups/single/group-header.php:69 +msgid "Group Mods" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:33 +#: huddle/groups/single/admin.php:17 +msgid "Group Name (required)" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:120 +#: huddle/groups/single/admin.php:115 +msgid "Group admins and mods only" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:125 +#: huddle/groups/single/admin.php:122 +msgid "Group admins only" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:83 +#: huddle/groups/single/admin.php:73 +msgid "Group content and activity will be visible to any site member." +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:101 +#: huddle/groups/single/admin.php:93 +msgid "Group content and activity will only be visible to members of the group." +msgstr "" + +#. Text in echo +#: huddle/groups/index.php:15 +msgid "Groups" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Homepage Sidebar" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-flickr.php:62 +msgid "How Many Photos:" +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-flickr.php:1 +msgid "Huddle: Flickr Photos" +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-tweets.php:1 +msgid "Huddle: Latest Tweets" +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-tab-archive.php:1 +msgid "Huddle: Tabbed Archive" +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-tab-posts.php:1 +msgid "Huddle: Tabbed Posts" +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-video.php:1 +msgid "Huddle: Video Widget" +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-enews.php:1 +msgid "Huddle: eNews Signup" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/delete-account.php:49 +msgid "I understand the consequences of deleting my account." +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:394 +msgid "I understand the consequences of deleting this group." +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:214 +msgid "I would like my site to appear in search engines, and in public listings around this network." +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:24 +msgid "If you'd like to delete your current avatar but not upload a new one, please use the delete avatar button." +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:151 +msgid "If you'd like to remove the existing avatar but not upload a new one, please use the delete avatar button." +msgstr "" + +#. Text in echo +#: huddle/activity/entry.php:24 +msgid "In reply to: " +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/profile-wp.php:42 +msgid "Jabber" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Join" +msgstr "" + +#. Text in function +#: huddle/functions-buddypress.php:187 +msgid "Join Group" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:298 +msgid "Kick & Ban" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:298 +msgid "Kick and ban this member" +msgstr "" + +#. Text in echo +#: huddle/forums/single/forum.php:33 +#: huddle/members/single/friends.php:11 +#: huddle/members/single/blogs.php:11 +#: huddle/groups/single/forum.php:38 +#: huddle/forums/index.php:55 +#: huddle/members/single/forums.php:10 +#: huddle/members/index.php:32 +#: huddle/members/index.php:37 +#: huddle/blogs/index.php:46 +#: huddle/groups/index.php:45 +#: huddle/members/single/groups.php:11 +msgid "Last Active" +msgstr "" + +#. Text in echo +#: huddle/forums/group-forums-loop.php:56 +msgid "Last Reply " +msgstr "" + +#. Text in function +#: huddle/forums/forums-loop.php:57 +msgid "Last Reply %s" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Leave" +msgstr "" + +#. Text in function +#: huddle/functions-buddypress.php:187 +msgid "Leave Group" +msgstr "" + +#. Text in echo +#: huddle/comments.php:14 +msgid "Leave Your Comment →" +msgstr "" + +#. Text in echo +#: huddle/header.php:68 +msgid "Logout" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/general.php:48 +msgid "Lost your password?" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Main Menu" +msgstr "" + +#. Text in echo +#: huddle/activity/entry.php:55 +msgid "Mark as Favorite" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:255 +msgid "Members" +msgstr "" + +#. Text in function +#: huddle/functions-buddypress.php:187 +msgid "Membership Requested" +msgstr "" + +#. Text in echo +#: huddle/activity/index.php:63 +msgid "Mentions" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/compose.php:31 +msgid "Message" +msgstr "" + +#. Text in echo +#: huddle/functions-buddypress.php:560 +msgid "Messages deleted." +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:223 +msgid "Moderators" +msgstr "" + +#. Text in echo +#: huddle/template-archives.php:31 +#: huddle/archive.php:13 +msgid "Monthly Archives" +msgstr "" + +#. Text in echo +#: huddle/groups/index.php:46 +#: huddle/members/single/groups.php:12 +msgid "Most Members" +msgstr "" + +#. Text in echo +#: huddle/forums/single/forum.php:34 +#: huddle/groups/single/forum.php:39 +#: huddle/forums/index.php:56 +#: huddle/members/single/forums.php:11 +msgid "Most Posts" +msgstr "" + +#. Text in function +#: huddle/activity/index.php:57 +msgid "My Favorites %s" +msgstr "" + +#. Text in function +#: huddle/activity/index.php:35 +msgid "My Friends %s" +msgstr "" + +#. Text in function +#: huddle/activity/index.php:47 +msgid "My Groups %s" +msgstr "" + +#. Text in echo +#: huddle/activity/post-form.php:32 +msgid "My Profile" +msgstr "" + +#. Text in function +#: huddle/blogs/index.php:28 +msgid "My Sites %s" +msgstr "" + +#. Text in function +#: huddle/forums/index.php:39 +msgid "My Topics %s" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/profile-wp.php:15 +msgid "Name" +msgstr "" + +#. Text in echo +#: huddle/members/single/activity.php:40 +#: huddle/activity/index.php:101 +msgid "New Groups" +msgstr "" + +#. Text in echo +#: huddle/activity/index.php:112 +msgid "New Members" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/general.php:58 +msgid "New Password" +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum/topic.php:12 +#: huddle/forums/single/topic.php:35 +msgid "New Reply" +msgstr "" + +#. Text in echo +#: huddle/forums/single/forum.php:16 +#: huddle/groups/single/forum.php:19 +#: huddle/forums/index.php:46 +msgid "New Topic" +msgstr "" + +#. Text in echo +#: huddle/members/single/blogs.php:12 +#: huddle/blogs/index.php:47 +msgid "Newest" +msgstr "" + +#. Text in echo +#: huddle/members/single/friends.php:12 +#: huddle/members/index.php:33 +#: huddle/members/index.php:38 +msgid "Newest Registered" +msgstr "" + +#. Text in echo +#: huddle/groups/index.php:47 +#: huddle/members/single/groups.php:13 +msgid "Newly Created" +msgstr "" + +#. Text in function +#: huddle/includes/pagination.php:15 +msgid "Next" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:277 +msgid "Next Step" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:218 +#: huddle/groups/single/admin.php:31 +msgid "No" +msgstr "" + +#. Text in function +#: huddle/comments.php:15 +msgid "No comments" +msgstr "" + +#. Text in echo +#: huddle/includes/loop.php:88 +msgid "No results were found. Please try again using a different keyword." +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:29 +msgid "Notify group members of changes via email" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-tweets.php:66 +msgid "Number Of Tweets:" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-tab-posts.php:139 +msgid "Number of Results To Display:" +msgstr "" + +#. Text in echo +#: huddle/includes/related-posts.php:28 +#: huddle/functions/widgets/widget-tab-posts.php:73 +#: huddle/functions/widgets/widget-recent-posts.php:53 +msgid "On" +msgstr "" + +#. Text in function +#: huddle/forums/group-forums-loop.php:33 +#: huddle/forums/forums-loop.php:27 +msgid "On · %1$s" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:248 +#: huddle/groups/single/send-invites.php:86 +msgid "Once you have built up friend connections you will be able to invite others to your group. You can send invites any time in the future by selecting the \"Send Invites\" option when viewing your new group." +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:99 +#: huddle/groups/single/admin.php:91 +msgid "Only users who are invited can join the group." +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:90 +#: huddle/groups/single/admin.php:81 +msgid "Only users who request membership and are accepted can join the group." +msgstr "" + +#. Text in echo +#: huddle/template-homepage.php:21 +msgid "Or sign-in to your account" +msgstr "" + +#. Text in echo +#: huddle/forums/single/forum.php:31 +#: huddle/members/single/friends.php:9 +#: huddle/members/single/blogs.php:9 +#: huddle/groups/single/forum.php:36 +#: huddle/forums/index.php:53 +#: huddle/members/single/forums.php:8 +#: huddle/blogs/index.php:44 +#: huddle/members/single/groups.php:9 +msgid "Order By:" +msgstr "" + +#. Text in echo +#: huddle/members/index.php:15 +msgid "Our Members" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Page Sidebar" +msgstr "" + +#. Text in echo +#: huddle/404.php:9 +msgid "Page not found" +msgstr "" + +#. Text in echo +#: huddle/template-sitemap.php:23 +msgid "Pages" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/general.php:48 +msgid "Password Lost and Found" +msgstr "" + +#. Text in echo +#: huddle/forums/group-forums-loop.php:27 +#: huddle/forums/forums-loop.php:21 +msgid "Permalink" +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum/topic.php:57 +#: huddle/forums/single/topic.php:116 +msgid "Permanent link to this post" +msgstr "" + +#. Text in function +#: huddle/functions-buddypress.php:187 +msgid "Please do not leave the comment area blank." +msgstr "" + +#. Text in function +#: huddle/functions-buddypress.php:1 +msgid "Please enter some content to post." +msgstr "" + +#. Text in echo +#: huddle/registration/activate.php:29 +msgid "Please provide a valid activation key." +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-tab-archive.php:79 +#: huddle/functions/widgets/widget-tab-posts.php:136 +msgid "Popular Posts Title:" +msgstr "" + +#. Text in echo +#: huddle/activity/entry.php:91 +msgid "Post" +msgstr "" + +#. Text in echo +#: huddle/forums/index.php:115 +msgid "Post In Group Forum:" +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum/topic.php:109 +#: huddle/forums/single/topic.php:157 +msgid "Post Reply" +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum.php:93 +#: huddle/forums/index.php:136 +msgid "Post Topic" +msgstr "" + +#. Text in echo +#: huddle/activity/post-form.php:25 +msgid "Post Update" +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum.php:73 +msgid "Post a New Topic:" +msgstr "" + +#. Text in echo +#: huddle/activity/post-form.php:29 +msgid "Post in" +msgstr "" + +#. Text in echo +#: huddle/forums/forums-loop.php:37 +msgid "Posted in Group" +msgstr "" + +#. Text in echo +#: huddle/includes/loop.php:32 +#: huddle/includes/loop.php:118 +msgid "Posted on" +msgstr "" + +#. Text in echo +#: huddle/members/single/activity.php:17 +#: huddle/activity/index.php:87 +#: huddle/functions/widgets/widget-recent-posts.php:1 +msgid "Posts" +msgstr "" + +#. Text in function +#: huddle/includes/pagination.php:14 +msgid "Previous" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:75 +#: huddle/groups/single/admin.php:64 +msgid "Privacy Options" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:73 +msgid "Profile Details" +msgstr "" + +#. Text in function +#: huddle/groups/single/admin.php:200 +#: huddle/groups/single/admin.php:231 +msgid "Profile picture of %s" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:241 +#: huddle/groups/single/admin.php:300 +msgid "Promote to Admin" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:299 +msgid "Promote to Mod" +msgstr "" + +#. Text in echo +#: huddle/groups/single/activity.php:3 +#: huddle/activity/index.php:75 +msgid "RSS" +msgstr "" + +#. Text in echo +#: huddle/groups/single/activity.php:3 +#: huddle/activity/index.php:75 +msgid "RSS Feed" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-tab-archive.php:81 +#: huddle/functions/widgets/widget-tab-posts.php:138 +msgid "Recent Comments Title:" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-tab-archive.php:80 +#: huddle/functions/widgets/widget-tab-posts.php:137 +msgid "Recent Posts Title:" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:25 +msgid "Registering for this site is easy, just fill in the fields below and we\\'ll get a new account set up for you in no time." +msgstr "" + +#. Text in echo +#: huddle/members/single/groups/invites.php:24 +#: huddle/members/single/friends/requests.php:24 +#: huddle/groups/single/admin.php:361 +msgid "Reject" +msgstr "" + +#. Text in echo +#: huddle/includes/related-posts.php:21 +msgid "Related Posts" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:294 +msgid "Remove Ban" +msgstr "" + +#. Text in echo +#: huddle/activity/entry.php:59 +#: huddle/functions-buddypress.php:187 +msgid "Remove Favorite" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:231 +#: huddle/functions-buddypress.php:187 +#: huddle/groups/single/send-invites.php:53 +msgid "Remove Invite" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:304 +msgid "Remove from group" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:304 +msgid "Remove this member" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/general.php:59 +msgid "Repeat New Password" +msgstr "" + +#. Text in function +#: huddle/functions.php:301 +#: huddle/activity/comment.php:24 +#: huddle/forums/single/edit.php:10 +#: huddle/groups/single/forum/edit.php:10 +msgid "Reply" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Request" +msgstr "" + +#. Text in function +#: huddle/functions-buddypress.php:187 +msgid "Request Membership" +msgstr "" + +#. Text in function +#: huddle/functions.php:316 +msgid "Requested" +msgstr "" + +#. Text in function +#: huddle/comments.php:38 +msgid "Required" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/general.php:65 +#: huddle/members/single/settings/notifications.php:54 +#: huddle/forums/single/edit.php:73 +#: huddle/groups/single/forum/edit.php:84 +#: huddle/members/single/profile/edit.php:126 +#: huddle/groups/single/admin.php:131 +msgid "Save Changes" +msgstr "" + +#. Text in echo +#: huddle/searchform.php:5 +msgid "Search" +msgstr "" + +#. Text in echo +#: huddle/search.php:9 +msgid "Search Results" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:213 +msgid "Select people to invite from your friends list." +msgstr "" + +#. Text in echo +#: huddle/groups/single/send-invites.php:24 +msgid "Select the people you would like to invite to this group." +msgstr "" + +#. Text in echo +#: huddle/groups/single/send-invites.php:73 +msgid "Send Invites" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/compose.php:41 +msgid "Send Message" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/single.php:90 +msgid "Send Reply" +msgstr "" + +#. Text in echo +#: huddle/groups/single/request-membership.php:12 +msgid "Send Request" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/compose.php:9 +msgid "Send To (Username or Friend's Name)" +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/notifications.php:45 +msgid "Send a notification by email when:" +msgstr "" + +#. Text in function +#: huddle/functions-buddypress.php:545 +msgid "Sent %s" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/notices-loop.php:31 +msgid "Sent:" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-recent-posts.php:84 +msgid "Show " +msgstr "" + +#. Text in echo +#: huddle/activity/activity-loop.php:29 +msgid "Show More Recent Activity" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-recent-posts.php:91 +msgid "Show Post Thumbnails" +msgstr "" + +#. Text in echo +#: huddle/members/single/activity.php:8 +#: huddle/groups/single/activity.php:8 +#: huddle/activity/index.php:80 +msgid "Show:" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:243 +msgid "Sign Up Complete!" +msgstr "" + +#. Text in echo +#: huddle/activity/index.php:13 +msgid "Site Activity" +msgstr "" + +#. Text in echo +#: huddle/blogs/create.php:10 +#: huddle/blogs/index.php:12 +msgid "Site Directory" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:209 +msgid "Site Title" +msgstr "" + +#. Text in echo +#: huddle/blogs/create.php:21 +msgid "Site registration is currently disabled" +msgstr "" + +#. Text in echo +#: huddle/members/members-loop.php:58 +msgid "Sorry, no members were found." +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/messages-loop.php:66 +msgid "Sorry, no messages were found." +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/notices-loop.php:49 +msgid "Sorry, no notices were found." +msgstr "" + +#. Text in echo +#: huddle/activity/activity-loop.php:43 +msgid "Sorry, there was no activity found. Please try a different filter." +msgstr "" + +#. Text in echo +#: huddle/forums/group-forums-loop.php:93 +#: huddle/forums/forums-loop.php:92 +msgid "Sorry, there were no forum topics found." +msgstr "" + +#. Text in echo +#: huddle/blogs/blogs-loop.php:78 +msgid "Sorry, there were no sites found." +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/compose.php:25 +msgid "Subject" +msgstr "" + +#. Text in function +#: huddle/comments.php:38 +msgid "Submit Comment →" +msgstr "" + +#. Text in echo +#: huddle/comments.php:37 +msgid "Submit Comment " +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-enews.php:1 +msgid "Subscribe to email updates." +msgstr "" + +#. Text in echo +#: huddle/archive.php:22 +msgid "Tag" +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum.php:86 +#: huddle/forums/index.php:110 +#: huddle/groups/single/forum/edit.php:62 +msgid "Tags (comma separated):" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-enews.php:93 +msgid "Text:" +msgstr "" + +#. Text in echo +#: huddle/activity/index.php:57 +msgid "The activity I've marked as a favorite." +msgstr "" + +#. Text in echo +#: huddle/activity/index.php:47 +msgid "The activity of groups I am a member of." +msgstr "" + +#. Text in echo +#: huddle/activity/index.php:35 +msgid "The activity of my friends only." +msgstr "" + +#. Text in function +#: huddle/functions/widgets/widget-recent-posts.php:1 +msgid "The most recent/popular posts on your site" +msgstr "" + +#. Text in echo +#: huddle/activity/index.php:25 +msgid "The public activity for everyone on this site." +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:374 +msgid "There are no pending membership requests." +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum/topic.php:134 +#: huddle/forums/single/topic.php:183 +msgid "There are no posts for this topic." +msgstr "" + +#. Text in function +#: huddle/functions-buddypress.php:187 +msgid "There was a problem closing the notice." +msgstr "" + +#. Text in function +#: huddle/functions-buddypress.php:1 +msgid "There was a problem posting your update, please try again." +msgstr "" + +#. Text in function +#: huddle/functions-buddypress.php:560 +msgid "There was a problem sending that reply. Please try again." +msgstr "" + +#. Text in echo +#: huddle/groups/groups-loop.php:62 +msgid "There were no groups found." +msgstr "" + +#. Text in echo +#: huddle/groups/single/members.php:74 +#: huddle/groups/single/admin.php:318 +msgid "This group has no members." +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:91 +#: huddle/groups/single/admin.php:82 +msgid "This group will be listed in the groups directory and in search results." +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:100 +#: huddle/groups/single/admin.php:92 +msgid "This group will not be listed in the groups directory or search results." +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:97 +#: huddle/groups/single/admin.php:89 +msgid "This is a hidden group" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/compose.php:19 +msgid "This is a notice to all users." +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:88 +#: huddle/groups/single/admin.php:79 +msgid "This is a private group" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:79 +#: huddle/groups/single/admin.php:69 +msgid "This is a public group" +msgstr "" + +#. Text in echo +#: huddle/comments.php:3 +msgid "This post is password protected. Enter the password to view any comments." +msgstr "" + +#. Text in echo +#: huddle/forums/single/edit.php:88 +#: huddle/groups/single/forum/edit.php:99 +msgid "This topic does not exist." +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum/topic.php:120 +#: huddle/forums/single/topic.php:168 +msgid "This topic is closed, replies are no longer accepted." +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-video.php:52 +#: huddle/groups/single/forum.php:76 +#: huddle/forums/single/edit.php:49 +#: huddle/functions/widgets/widget-tab-archive.php:78 +#: huddle/forums/index.php:100 +#: huddle/groups/single/forum/edit.php:52 +#: huddle/functions/widgets/widget-tab-posts.php:135 +#: huddle/functions/widgets/widget-enews.php:80 +#: huddle/functions/widgets/widget-tweets.php:64 +#: huddle/functions/widgets/widget-flickr.php:60 +msgid "Title:" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:159 +msgid "To skip the avatar upload process, hit the \"Next Step\" button." +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/messages-loop.php:34 +msgid "To:" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-tweets.php:65 +msgid "Twitter ID (username):" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:294 +msgid "Unban this member" +msgstr "" + +#. Text in echo +#: huddle/forums/single/forum.php:35 +#: huddle/groups/single/forum.php:40 +#: huddle/forums/index.php:57 +#: huddle/members/single/forums.php:12 +msgid "Unreplied" +msgstr "" + +#. Text in echo +#: huddle/members/single/activity.php:11 +#: huddle/groups/single/activity.php:11 +#: huddle/activity/index.php:83 +msgid "Updates" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:18 +#: huddle/groups/create.php:155 +#: huddle/groups/single/admin.php:145 +msgid "Upload Image" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:151 +#: huddle/groups/single/admin.php:141 +msgid "Upload an image to use as an avatar for this group. The image will be shown on the main group page, and in search results." +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:13 +msgid "User registration is currently not allowed." +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:41 +msgid "Username" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-video.php:54 +msgid "Video" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-video.php:55 +msgid "Video Embed Code (Best at 265px wide)" +msgstr "" + +#. Text in echo +#: huddle/activity/entry.php:24 +#: huddle/groups/groups-loop.php:41 +msgid "View" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-flickr.php:36 +msgid "View All" +msgstr "" + +#. Text in echo +#: huddle/includes/author-info.php:4 +msgid "View All Posts From This Author →" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/messages-loop.php:40 +msgid "View Message" +msgstr "" + +#. Text in echo +#: huddle/activity/entry.php:24 +msgid "View Thread / Permalink" +msgstr "" + +#. Text in echo +#: huddle/groups/single/admin.php:391 +msgid "WARNING: Deleting this group will completely remove ALL content associated with it. There is no way back, please be careful with this option." +msgstr "" + +#. Text in echo +#: huddle/members/single/settings/delete-account.php:45 +msgid "WARNING: Deleting your account will completely remove ALL content associated with it. There is no way back, please be careful with this option." +msgstr "" + +#. Text in echo +#: huddle/404.php:12 +msgid "We're sorry, but we can't find the page that you're looking for." +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/profile-wp.php:33 +msgid "Website" +msgstr "" + +#. Text in echo +#: huddle/template-homepage.php:13 +msgid "Welcome" +msgstr "" + +#. Text in function +#: huddle/header.php:68 +msgid "Welcome %s" +msgstr "" + +#. Text in function +#: huddle/activity/post-form.php:12 +msgid "What's new in %s, %s?" +msgstr "" + +#. Text in function +#: huddle/activity/post-form.php:12 +msgid "What's new, %s?" +msgstr "" + +#. Text in echo +#: huddle/groups/create.php:110 +#: huddle/groups/single/admin.php:102 +msgid "Which members of this group are allowed to invite others?" +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/profile-wp.php:60 +msgid "Yahoo Messenger" +msgstr "" + +#. Text in echo +#: huddle/archive.php:16 +msgid "Yearly Archives" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:217 +#: huddle/groups/single/admin.php:30 +msgid "Yes" +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:193 +msgid "Yes, I\\'d like to create a new site" +msgstr "" + +#. Text in echo +#: huddle/members/single/messages/single.php:14 +msgid "You are alone in this conversation." +msgstr "" + +#. Text in function +#: huddle/forums/index.php:148 +msgid "You are not a member of any groups so you don't have any group forums you can post in. To start posting, first find a group that matches the topic subject you'd like to start. If this group does not exist, why not create a new group? Once you have joined or created the group you can post your topic in that group's forum." +msgstr "" + +#. Text in function +#: huddle/groups/single/request-membership.php:4 +msgid "You are requesting to become a member of the group '%s'." +msgstr "" + +#. Text in echo +#: huddle/members/single/groups/invites.php:37 +msgid "You have no outstanding group invites." +msgstr "" + +#. Text in echo +#: huddle/members/single/friends/requests.php:48 +msgid "You have no pending friendship requests." +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:251 +msgid "You have successfully created your account! Please log in using the username and password you have just created." +msgstr "" + +#. Text in echo +#: huddle/registration/register.php:249 +msgid "You have successfully created your account! To begin using this site you will need to activate your account via the email we have just sent to your address." +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum/topic.php:97 +msgid "You will auto join this group when you reply to this topic." +msgstr "" + +#. Text in echo +#: huddle/groups/single/forum.php:69 +msgid "You will auto join this group when you start a new topic." +msgstr "" + +#. Text in echo +#: huddle/registration/activate.php:19 +msgid "Your account was activated successfully! You can now log in with the username and password you provided when you signed up." +msgstr "" + +#. Text in echo +#: huddle/registration/activate.php:17 +msgid "Your account was activated successfully! Your account details have been sent to you in a separate email." +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:7 +msgid "Your avatar will be used on your profile and throughout the site. If there is a Gravatar associated with your account email we will use that, or you can upload an image from your computer." +msgstr "" + +#. Text in echo +#: huddle/members/single/profile/change-avatar.php:56 +msgid "Your avatar will be used on your profile and throughout the site. To change your avatar, please create an account with Gravatar using the same email address as you used to register with this site." +msgstr "" + +#. Text in echo +#: huddle/functions.php:307 +msgid "Your comment is awaiting moderation." +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-enews.php:84 +msgid "\\'Privacy Policy\\' page:" +msgstr "" + +#. Text in function +#: huddle/groups/single/group-header.php:17 +#: huddle/forums/single/forum-header.php:13 +#: huddle/groups/groups-loop.php:30 +msgid "active %s" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-flickr.php:70 +msgid "flickr_type (user or group):" +msgstr "" + +#. Text in function +#: huddle/forums/group-forums-loop.php:39 +msgid "in %1$s" +msgstr "" + +#. Text in echo +#: huddle/activity/entry.php:91 +msgid "or press esc to cancel." +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-recent-posts.php:86 +msgid "popular" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-recent-posts.php:87 +msgid "posts" +msgstr "" + +#. Text in echo +#: huddle/functions/widgets/widget-recent-posts.php:85 +msgid "recent" +msgstr "" + +#. Text in echo +#: huddle/includes/related-posts.php:30 +#: huddle/functions/widgets/widget-tab-posts.php:75 +#: huddle/functions/widgets/widget-recent-posts.php:55 +msgid "with" +msgstr "" + diff --git a/wp-content/themes/huddle/licenses/GPL.txt b/wp-content/themes/huddle/licenses/GPL.txt new file mode 100644 index 0000000..6679331 --- /dev/null +++ b/wp-content/themes/huddle/licenses/GPL.txt @@ -0,0 +1,85 @@ +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification follow. +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. + c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. \ No newline at end of file diff --git a/wp-content/themes/huddle/licenses/License.txt b/wp-content/themes/huddle/licenses/License.txt new file mode 100644 index 0000000..9d177cf --- /dev/null +++ b/wp-content/themes/huddle/licenses/License.txt @@ -0,0 +1,12 @@ +This WordPress theme is comprised of two parts: + + +(1) The PHP code is licensed under the GPL license as is WordPress itself. You will find a copy of the license text in the same directory as this text file. Or you can read it here: + +http://codex.wordpress.org/GPL + + + +(2) All other parts of the theme including, but not limited to the CSS code, images, and design are licensed according to the license purchased. Read about licensing details here: + +http://themeforest.net/legal/licences diff --git a/wp-content/themes/huddle/members/index.php b/wp-content/themes/huddle/members/index.php new file mode 100644 index 0000000..ef43c83 --- /dev/null +++ b/wp-content/themes/huddle/members/index.php @@ -0,0 +1,85 @@ + + + + + +
                          +
                          + + + +
                          + + + +

                          +

                          + + + + + + + +
                          + + + +
                          + +
                          +

                          +

                          total_member_count / 14 ) ) ?>

                          +
                          + + + + + + + +
                          + + + +
                          +
                          + + + + + diff --git a/wp-content/themes/huddle/members/members-loop.php b/wp-content/themes/huddle/members/members-loop.php new file mode 100644 index 0000000..2ce4850 --- /dev/null +++ b/wp-content/themes/huddle/members/members-loop.php @@ -0,0 +1,95 @@ + + + + + + + + + + + +
                            + + + 2 ) $i_column = 1; + ?> + +
                          • +
                            + +
                            + +
                            +
                            + +
                            + +
                            + + + +
                            + +
                            + + + +
                            + +
                            +
                          • + + + +
                          + + + + + + + + + +
                          +

                          +
                          + + + + diff --git a/wp-content/themes/huddle/members/single/activity.php b/wp-content/themes/huddle/members/single/activity.php new file mode 100644 index 0000000..9a5a7b8 --- /dev/null +++ b/wp-content/themes/huddle/members/single/activity.php @@ -0,0 +1,67 @@ + + + + + + + +
                          + + + +
                          + + diff --git a/wp-content/themes/huddle/members/single/activity/permalink.php b/wp-content/themes/huddle/members/single/activity/permalink.php new file mode 100644 index 0000000..761774b --- /dev/null +++ b/wp-content/themes/huddle/members/single/activity/permalink.php @@ -0,0 +1,19 @@ + + + + +
                          + + +
                            + + + + + +
                          + + +
                          + + \ No newline at end of file diff --git a/wp-content/themes/huddle/members/single/blogs.php b/wp-content/themes/huddle/members/single/blogs.php new file mode 100644 index 0000000..1c45a75 --- /dev/null +++ b/wp-content/themes/huddle/members/single/blogs.php @@ -0,0 +1,30 @@ + + + + + +
                          + + + +
                          + + diff --git a/wp-content/themes/huddle/members/single/forums.php b/wp-content/themes/huddle/members/single/forums.php new file mode 100644 index 0000000..c60a08d --- /dev/null +++ b/wp-content/themes/huddle/members/single/forums.php @@ -0,0 +1,37 @@ + + + + + +
                          + + + +
                          + + + + diff --git a/wp-content/themes/huddle/members/single/forums/topics.php b/wp-content/themes/huddle/members/single/forums/topics.php new file mode 100644 index 0000000..a202e9e --- /dev/null +++ b/wp-content/themes/huddle/members/single/forums/topics.php @@ -0,0 +1,7 @@ + diff --git a/wp-content/themes/huddle/members/single/friends.php b/wp-content/themes/huddle/members/single/friends.php new file mode 100644 index 0000000..8901bee --- /dev/null +++ b/wp-content/themes/huddle/members/single/friends.php @@ -0,0 +1,44 @@ + + + + + + + +
                          + + + +
                          + + + + diff --git a/wp-content/themes/huddle/members/single/friends/requests.php b/wp-content/themes/huddle/members/single/friends/requests.php new file mode 100644 index 0000000..bb45087 --- /dev/null +++ b/wp-content/themes/huddle/members/single/friends/requests.php @@ -0,0 +1,73 @@ + + + + + + +
                            + + +
                          • +
                            + +
                            + +
                            +
                            +
                            +
                            + + + +
                            +   + + + +
                            +
                          • + + +
                          + + + + + + + +
                          +

                          +
                          + + + + diff --git a/wp-content/themes/huddle/members/single/groups.php b/wp-content/themes/huddle/members/single/groups.php new file mode 100644 index 0000000..1a2a898 --- /dev/null +++ b/wp-content/themes/huddle/members/single/groups.php @@ -0,0 +1,45 @@ + + + + + + + +
                          + + + +
                          + + + + diff --git a/wp-content/themes/huddle/members/single/groups/invites.php b/wp-content/themes/huddle/members/single/groups/invites.php new file mode 100644 index 0000000..030ea63 --- /dev/null +++ b/wp-content/themes/huddle/members/single/groups/invites.php @@ -0,0 +1,42 @@ + + + + +
                            + + + +
                          • +
                            + +
                            + +

                            -

                            + +

                            + +

                            + + + +
                            +   + + + + +
                            +
                          • + + +
                          + + + +
                          +

                          +
                          + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/members/single/home.php b/wp-content/themes/huddle/members/single/home.php new file mode 100644 index 0000000..2fd28fc --- /dev/null +++ b/wp-content/themes/huddle/members/single/home.php @@ -0,0 +1,71 @@ + + + +
                          +
                          + + + + + +
                          + +
                          + +
                          + + + +
                          + + + +
                          +
                          + + + diff --git a/wp-content/themes/huddle/members/single/member-header.php b/wp-content/themes/huddle/members/single/member-header.php new file mode 100644 index 0000000..63711cd --- /dev/null +++ b/wp-content/themes/huddle/members/single/member-header.php @@ -0,0 +1,81 @@ + + + + + + + +
                          + +

                          + +

                          + + @ + + + + +
                          + + + +
                          + + + +
                          + + + +
                          + + + +
                          + + + +
                          + + loggedin_user->id != $bp->displayed_user->id ) : ?> +
                          +

                          + + + +
                          + +
                          + + loggedin_user->id == $bp->displayed_user->id ) : ?> + +

                          +

                          + + + + + + + + + +
                          + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/members/single/messages.php b/wp-content/themes/huddle/members/single/messages.php new file mode 100644 index 0000000..7a06e27 --- /dev/null +++ b/wp-content/themes/huddle/members/single/messages.php @@ -0,0 +1,34 @@ + + + + + +
                          + + + +
                          + + + + diff --git a/wp-content/themes/huddle/members/single/messages/compose.php b/wp-content/themes/huddle/members/single/messages/compose.php new file mode 100644 index 0000000..0c0b044 --- /dev/null +++ b/wp-content/themes/huddle/members/single/messages/compose.php @@ -0,0 +1,50 @@ +
                          + + + +
                            +
                          • + +

                            + + +

                            +
                          • +
                          +
                          + + +

                          + + +

                          +
                          + + +

                          + + +

                          +
                          + +

                          + + +

                          +
                          + + + + + +
                          + " name="send" id="send" /> +
                          + + +
                          + + + diff --git a/wp-content/themes/huddle/members/single/messages/messages-loop.php b/wp-content/themes/huddle/members/single/messages/messages-loop.php new file mode 100644 index 0000000..e0b0733 --- /dev/null +++ b/wp-content/themes/huddle/members/single/messages/messages-loop.php @@ -0,0 +1,73 @@ + + + + + + + + + + + + + read"> + + + + + + + + + + + + + + + + + +
                          + + +
                          + +
                          +
                          + +
                          +

                          ">

                          +

                          +
                          + + ">   +
                          + +
                          + +
                          + + + + + + + +
                          +

                          +
                          + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/members/single/messages/notices-loop.php b/wp-content/themes/huddle/members/single/messages/notices-loop.php new file mode 100644 index 0000000..61667e8 --- /dev/null +++ b/wp-content/themes/huddle/members/single/messages/notices-loop.php @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + +
                          + + + + + + + + + ">x +
                          + + + + + +
                          +

                          +
                          + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/members/single/messages/single.php b/wp-content/themes/huddle/members/single/messages/single.php new file mode 100644 index 0000000..a9fe4b6 --- /dev/null +++ b/wp-content/themes/huddle/members/single/messages/single.php @@ -0,0 +1,110 @@ +
                          + + + + + +

                          + +

                          + + + + + + + + + + + + + + + ">   +

                          + + + + + +
                          + + + + + +
                          + + + +
                          + + + +
                          + +
                          + + + + + + + +
                          + +
                          + + + +
                          + + + + + + + +
                          + +
                          + + + + + +
                          + +
                          + +
                          + + + + + + + +
                          \ No newline at end of file diff --git a/wp-content/themes/huddle/members/single/plugins.php b/wp-content/themes/huddle/members/single/plugins.php new file mode 100644 index 0000000..5a100f8 --- /dev/null +++ b/wp-content/themes/huddle/members/single/plugins.php @@ -0,0 +1,55 @@ + + + +
                          +
                          + + + +
                          + + + +
                          + +
                          + +
                          + +
                          + + + + + +

                          + + + + + +
                          + + + +
                          +
                          + + + diff --git a/wp-content/themes/huddle/members/single/profile.php b/wp-content/themes/huddle/members/single/profile.php new file mode 100644 index 0000000..54598ee --- /dev/null +++ b/wp-content/themes/huddle/members/single/profile.php @@ -0,0 +1,38 @@ + + + + + + + + + +
                          + + + +
                          + + \ No newline at end of file diff --git a/wp-content/themes/huddle/members/single/profile/change-avatar.php b/wp-content/themes/huddle/members/single/profile/change-avatar.php new file mode 100644 index 0000000..ad0d2e7 --- /dev/null +++ b/wp-content/themes/huddle/members/single/profile/change-avatar.php @@ -0,0 +1,60 @@ +

                          + + + + + +

                          Gravatar associated with your account email we will use that, or you can upload an image from your computer.', 'huddle') ?>

                          + +
                          + + + + +

                          + +

                          + + + +

                          + + +
                          +

                          +

                          + + + + + + +
                          + + <?php _e( 'Avatar to crop', 'huddle' ) ?> + +
                          + <?php _e( 'Avatar preview', 'huddle' ) ?> +
                          + + + + + + + + + + + + + +
                          + + + +

                          Gravatar using the same email address as you used to register with this site.', 'huddle' ) ?>

                          + + + + diff --git a/wp-content/themes/huddle/members/single/profile/edit.php b/wp-content/themes/huddle/members/single/profile/edit.php new file mode 100644 index 0000000..90b3117 --- /dev/null +++ b/wp-content/themes/huddle/members/single/profile/edit.php @@ -0,0 +1,137 @@ + + +
                          + + + +

                          + +
                            + + + +
                          + +
                          + + + + > + + + + + aria-required="true"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + + + + + + + + + +
                          + + + + + +
                          + + + +
                          + + + + + +
                          + + + + + + + +
                          + + + + + +

                          +
                      + + + + + +
                      + +
                      + + + + + + + + + + diff --git a/wp-content/themes/huddle/members/single/profile/profile-loop.php b/wp-content/themes/huddle/members/single/profile/profile-loop.php new file mode 100644 index 0000000..b90d0a8 --- /dev/null +++ b/wp-content/themes/huddle/members/single/profile/profile-loop.php @@ -0,0 +1,48 @@ + + + + + + + + + + +
                      + +

                      + + + + + + + + > + + + + + + + + + + + + + +
                      +
                      + + + + + + + + + + + + diff --git a/wp-content/themes/huddle/members/single/profile/profile-wp.php b/wp-content/themes/huddle/members/single/profile/profile-wp.php new file mode 100644 index 0000000..1339aa7 --- /dev/null +++ b/wp-content/themes/huddle/members/single/profile/profile-wp.php @@ -0,0 +1,73 @@ + + + + + + +
                      +

                      + + + + display_name ) : ?> + + + + + + + + + user_description ) : ?> + + + + + + + + + user_url ) : ?> + + + + + + + + + jabber ) : ?> + + + + + + + + + aim ) : ?> + + + + + + + + + yim ) : ?> + + + + + + + + +
                      display_name; ?>
                      user_description; ?>
                      user_url ); ?>
                      jabber; ?>
                      aim; ?>
                      yim; ?>
                      +
                      + + + + + + diff --git a/wp-content/themes/huddle/members/single/settings.php b/wp-content/themes/huddle/members/single/settings.php new file mode 100644 index 0000000..b93d829 --- /dev/null +++ b/wp-content/themes/huddle/members/single/settings.php @@ -0,0 +1,28 @@ + + + + diff --git a/wp-content/themes/huddle/members/single/settings/delete-account.php b/wp-content/themes/huddle/members/single/settings/delete-account.php new file mode 100644 index 0000000..2caa60e --- /dev/null +++ b/wp-content/themes/huddle/members/single/settings/delete-account.php @@ -0,0 +1,73 @@ + + + +
                      +
                      + + + +
                      + + + +
                      + +
                      + +
                      + +
                      + + + + + +

                      + +
                      + +
                      +

                      +
                      + + + + + +
                      + +
                      + + + + +
                      + + + +
                      + + + +
                      +
                      + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/members/single/settings/general.php b/wp-content/themes/huddle/members/single/settings/general.php new file mode 100644 index 0000000..6869102 --- /dev/null +++ b/wp-content/themes/huddle/members/single/settings/general.php @@ -0,0 +1,82 @@ + + + +
                      + + + +
                      + + + +
                      + +
                      + +
                      + +
                      + + + + + +

                      + + + +
                      + +

                      + +   +

                      + +

                      + + +

                      + +

                      + +  

                      +   +

                      + + + +
                      + +
                      + + + + + +
                      + + + +
                      + + + +
                      + + \ No newline at end of file diff --git a/wp-content/themes/huddle/members/single/settings/notifications.php b/wp-content/themes/huddle/members/single/settings/notifications.php new file mode 100644 index 0000000..3733006 --- /dev/null +++ b/wp-content/themes/huddle/members/single/settings/notifications.php @@ -0,0 +1,74 @@ + + + +
                      +
                      + + + +
                      + + + +
                      + +
                      + +
                      + +
                      + + + + + +

                      + + + +
                      +

                      + + + + + +

                      +
                      + +
                      + + + + + +
                      + + + +
                      + + + +
                      +
                      + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/options.php b/wp-content/themes/huddle/options.php new file mode 100644 index 0000000..3f57dcb --- /dev/null +++ b/wp-content/themes/huddle/options.php @@ -0,0 +1,203 @@ +cat_ID] = $category->cat_name; + } + + // Pull all the pages into an array + $options_pages = array(); + $options_pages_obj = get_pages( 'sort_column=post_parent,menu_order' ); + $options_pages[''] = 'Select a page:'; + foreach ($options_pages_obj as $page) { + $options_pages[$page->ID] = $page->post_title; + } + + $options = array(); + + $options[] = array( "name" => "Style Settings", + "type" => "heading"); + + $options[] = array( "name" => "Color Style", + "desc" => "Choose the color style you want.", + "id" => "style", + "std" => "blue", + "type" => "select", + "class" => "tiny", //mini, tiny, small + "options" => array('green' => 'green', 'blue' => 'blue', 'orange' => 'orange', 'red' => 'red', 'brown' => 'brown', 'yellow' => 'yellow', 'gray' => 'gray', 'magento' => 'magento', 'purple' => 'purple', 'cyan' => 'cyan')); + + $options[] = array( + "name" => "Theme Settings", + "type" => "heading" + ); + + $options[] = array( + "name" => "Static Text Logo", + "desc" => "Overrides image based logos and instead uses the site name and description.", + "id" => "text_logo", + "std" => "0", + "type" => "checkbox" + ); + + $options[] = array( + "name" => "Custom Logo", + "desc" => "Upload your custom logo.", + "id" => "logo", + "type" => "upload" + ); + + $options[] = array( + "name" => "Posts Author Info", + "desc" => "Display the atuhor info below a single post", + "id" => "author_info", + "std" => "1", + "type" => "checkbox" + ); + + $options[] = array( + "name" => "Related Posts", + "desc" => "Display the related posts below a single post", + "id" => "related_posts", + "std" => "1", + "type" => "checkbox" + ); + + $options[] = array( + "name" => "Related Posts Count", + "desc" => "How many related posts to display?", + "id" => "related_posts_count", + "std" => "3", + "type" => "select", + 'options' => range( 1, 20 ) + ); + + $options[] = array( + "name" => "Image Gallery Count", + "desc" => "How many images will be displayed on Image Gallery page?", + "id" => "gallery_count", + "std" => "5", + "type" => "select", + 'options' => range( 1, 20 ) + ); + + $options[] = array( + "name" => "Footer Copyright Text", + "desc" => "Text to display in footer", + "id" => "footer_text", + "type" => "text" + ); + + $options[] = array( + "name" => "Homepage Settings", + "type" => "heading" + ); + + $options[] = array( + "name" => "Heading Text", + "id" => "heading_text", + "std" => "Find people who share your interests.", + "type" => "text" + ); + + $options[] = array( + "name" => "Sub Heading Text", + "id" => "sub_heading_text", + "std" => "With huddle you can find and connect with other people who share in your same interests. Sign in or create an account to start creating and joining groups, find others, and share interests.", + "type" => "textarea" + ); + + $options[] = array( + "name" => "Heading Image", + "id" => "heading_image", + "type" => "upload" + ); + + $options[] = array( + "name" => "Column 1 Heading", + "id" => "column_1_title", + "std" => "Build Your Own Profile", + "type" => "text" + ); + + $options[] = array( + "name" => "Column 1 Content", + "id" => "column_1_text", + "std" => "Lorem ipsum dolor sit amet", + "type" => "text" + ); + + $options[] = array( + 'name' => 'Column 1 Icon', + 'id' => 'column_1_icon', + 'type' => 'upload', + 'desc' => 'Add a icon (40x40) for column 1' + ); + + $options[] = array( + "name" => "Column 2 Heading", + "id" => "column_2_title", + "std" => "Build Your Own Profile", + "type" => "text" + ); + + $options[] = array( + "name" => "Column 2 Content", + "id" => "column_2_text", + "std" => "Lorem ipsum dolor sit amet", + "type" => "text" + ); + + $options[] = array( + 'name' => 'Column 2 Icon', + 'id' => 'column_2_icon', + 'type' => 'upload', + 'desc' => 'Add a icon (40x40) for column 2' + ); + + $options[] = array( + "name" => "Column 3 Heading", + "id" => "column_3_title", + "std" => "Build Your Own Profile", + "type" => "text" + ); + + $options[] = array( + "name" => "Column 3 Content", + "id" => "column_3_text", + "std" => "Lorem ipsum dolor sit amet", + "type" => "text" + ); + + $options[] = array( + 'name' => 'Column 3 Icon', + 'id' => 'column_3_icon', + 'type' => 'upload', + 'desc' => 'Add a icon (40x40) for column 3' + ); + + return $options; +} \ No newline at end of file diff --git a/wp-content/themes/huddle/page.php b/wp-content/themes/huddle/page.php new file mode 100644 index 0000000..86b6091 --- /dev/null +++ b/wp-content/themes/huddle/page.php @@ -0,0 +1,16 @@ + + + +
                      + + + + + + + +
                      + + + + diff --git a/wp-content/themes/huddle/registration/activate.php b/wp-content/themes/huddle/registration/activate.php new file mode 100644 index 0000000..b956e6a --- /dev/null +++ b/wp-content/themes/huddle/registration/activate.php @@ -0,0 +1,61 @@ + + +
                      + + + +
                      + + + +

                      +
                      + +

                      + + + +

                      +
                      + + + + +

                      + +

                      + + + + +

                      +
                      + + + +

                      + +
                      + +

                      + + +

                      + +

                      + +

                      + +
                      + + + + + +
                      + + + +
                      + + diff --git a/wp-content/themes/huddle/registration/register.php b/wp-content/themes/huddle/registration/register.php new file mode 100644 index 0000000..f34c34f --- /dev/null +++ b/wp-content/themes/huddle/registration/register.php @@ -0,0 +1,278 @@ + + + + +
                      + +
                      + + + + + +

                      + + + + + + +

                      +
                      + + + +

                      + + + +
                      + + + +

                      + + + + + + +

                      + + +

                      + +

                      + + +

                      + +

                      + + +

                      + +

                      + + +

                      + +
                      + + + + + + + + + +
                      +
                      + +

                      + + + + + + +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + + + + + + + + +
                      + + + + + +
                      + + + + +
                      + + + + + +
                      + + + + + + + + +
                      + + + + + +

                      + +
                      + + + + + + + +
                      + + + + + + + + + + + +
                      + +

                      + +

                      checked="checked" />

                      + +
                      class="show"> + +

                      + + + + + http:// . + + / + +

                      + +

                      + + + +

                      + + : + + + + + +
                      + +
                      + + + + + + + +
                      + +
                      + + + + + + + + + +
                      +

                      +
                      + + + + + +

                      + +

                      + + + + + + + + +
                      + +
                      + + + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/screenshot.png b/wp-content/themes/huddle/screenshot.png new file mode 100644 index 0000000..f674810 Binary files /dev/null and b/wp-content/themes/huddle/screenshot.png differ diff --git a/wp-content/themes/huddle/search.php b/wp-content/themes/huddle/search.php new file mode 100644 index 0000000..827e3c9 --- /dev/null +++ b/wp-content/themes/huddle/search.php @@ -0,0 +1,25 @@ + + + +
                      + + + +
                      + +

                      + +
                      +
                      + + + + + +
                      + + + + diff --git a/wp-content/themes/huddle/searchform.php b/wp-content/themes/huddle/searchform.php new file mode 100644 index 0000000..5063974 --- /dev/null +++ b/wp-content/themes/huddle/searchform.php @@ -0,0 +1,7 @@ + +
                      + +
                      diff --git a/wp-content/themes/huddle/sidebar-buddypress.php b/wp-content/themes/huddle/sidebar-buddypress.php new file mode 100644 index 0000000..779e72b --- /dev/null +++ b/wp-content/themes/huddle/sidebar-buddypress.php @@ -0,0 +1,3 @@ + + + + + diff --git a/wp-content/themes/huddle/sidebar-home.php b/wp-content/themes/huddle/sidebar-home.php new file mode 100644 index 0000000..a1d11f1 --- /dev/null +++ b/wp-content/themes/huddle/sidebar-home.php @@ -0,0 +1,12 @@ + + + + + + diff --git a/wp-content/themes/huddle/sidebar-page.php b/wp-content/themes/huddle/sidebar-page.php new file mode 100644 index 0000000..27a62a1 --- /dev/null +++ b/wp-content/themes/huddle/sidebar-page.php @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/sidebar.php b/wp-content/themes/huddle/sidebar.php new file mode 100644 index 0000000..ab86ae5 --- /dev/null +++ b/wp-content/themes/huddle/sidebar.php @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/single-video.php b/wp-content/themes/huddle/single-video.php new file mode 100644 index 0000000..cefea60 --- /dev/null +++ b/wp-content/themes/huddle/single-video.php @@ -0,0 +1,20 @@ +
                      +

                      + + + + +
                      +
                      + + + +
                      &pagelink=%&after=
                      '); ?> + +
                      + + + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/single.php b/wp-content/themes/huddle/single.php new file mode 100644 index 0000000..151d4c4 --- /dev/null +++ b/wp-content/themes/huddle/single.php @@ -0,0 +1,9 @@ + + +
                      + + + +
                      + + diff --git a/wp-content/themes/huddle/style.css b/wp-content/themes/huddle/style.css new file mode 100644 index 0000000..15d0c1b --- /dev/null +++ b/wp-content/themes/huddle/style.css @@ -0,0 +1,3857 @@ +/* +Theme Name: Huddle +Theme URI: http://buddypress.stoodeo.com +Author: Stoodeo +Author URI: http://www.newone.org +Description: Huddle Theme +Version: 1.7 +License: GNU General Public License +License URI: license.txt +Tags: buddypress, fixed-width, white, blue + +------------------------------------------------------------------- + + TABLE OF CONTENTS + + 0. RESET + 1. GLOBAL + - 1.1. BUTTON + - 1.2. COLORBOX + 2. HEADER + - 2.1. LOGO + - 2.2. LOGIN + - 2.3. NAV + - 2.4. DROPDOWN + 3. BILLBOARD + 4. CONTENT + - 4.1. PAGINATION + - 4.2. AUTHOR INFO + - 4.3. RELATED POSTS + - 4.4. COMMENTS + - 4.5. RESPOND FORM + 5. BUDDYPRESS + - 5.1. DIRECTORY + - 5.2. PROFILE + - 5.3. ACTIVITY + 6. SIDEBARS + - 6.1. SIDEBAR BLOG & SIDEBAR PAGE + - 6.2. SIDEBAR HOME & SIDEBAR FOOTER + 7. WIDGETS + - 7.1. WIDGET MEMBERS + - 7.2. WIDGET SEARCH + - 7.3. WIDGET TABBED ARCHIVE + - 7.4. WIDGET TABBED POSTS + - 7.5. WIDGET TWITTER + - 7.6. WIDGET ENEWS + - 7.7. WIDGET FLICKR + - 7.8. WIDGET GROUPS + - 7.9. WIDGET RECENT POSTS + 8. FOOTER + - 8.1. COPYRIGHT + - 8.2. LINKS + 9. PAGE TEMPLATES + - 9.1. ARCHIVES + - 9.2. FULL WIDTH + - 9.3. IMAGE GALLERY + - 9.4. SIDEBAR LFET + - 9.5. SITEMAP + 10. SHORTCODES + - 10.1. COLUMNS + 11. COLOR STYLES + - 11.1. GREEN + - 11.2. ORANGE + - 11.3. RED + - 11.4. BROWN + - 11.5. YELLOW + - 11.6. GRAY + - 11.7. MAGENTO + - 11.8. PURPLE + - 11.9. CYAN + 12. BROWSER HACKS + - 12.1. IE9 + - 12.2. IE8 + - 12.3. IE7 + - 12.4. FIREFOX + +------------------------------------------------ */ + + + +/*------------------------------------- + 0. RESET +-------------------------------------*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, table, caption, +tbody, tfoot, thead, tr, th, td { + background: transparent; + border: 0; + margin: 0; + padding: 0; + vertical-align: baseline; +} + +body { + line-height: 1; +} + +ol, ul { + list-style: none; +} + +blockquote { + quotes: none; +} + +blockquote:before, blockquote:after { + content: ''; + content: none; +} + +del { + text-decoration: line-through; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +a img { + border: none; +} + + + +/*------------------------------------- + 1. GLOBAL +-------------------------------------*/ + +body { + background: #fff; + font: 12px/19px "Lucida Grande", "Arial Unicode MS", sans-serif; + color: #404040; +} + +input, textarea { + font: 12px/20px "Lucida Grande", "Arial Unicode MS", sans-serif; + color: #666666; + text-shadow: 0 1px 0 #ffffff; + margin: 0; +} + +h1, h2, h3, h4 ,h5, h6 { + color: #303030; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +h1 { + font-size: 44px; + line-height: 36px; + letter-spacing: -2px; +} + +h2 { + font-size: 36px; + line-height: 28px; +} + +h3 { + font-size: 22px; + line-height: 24px; +} + +h4 { + font-size: 18px; + line-height: 22px; +} + +h5 { + font-size: 14px; + line-height: 18px; +} + +h6 { + font-size: 12px; + line-height: 16px; +} + +hr { + background-color: #e7e7e7; + border: 0; + clear: both; + height: 1px; + margin-bottom: 20px; +} + +p { + margin-bottom: 20px; +} + +ul { + list-style: square; + margin: 0 0 20px 1.5em; +} + +ol { + list-style: decimal; + margin: 0 0 20px 1.5em; +} + +ol ol { + list-style: upper-alpha; +} + +ol ol ol { + list-style: lower-roman; +} + +ol ol ol ol { + list-style: lower-alpha; +} + +ul ul, +ol ol, +ul ol, +ol ul { + margin-bottom: 0; +} + +dl { + margin: 0 0 24px 0; +} + +dt { + font-weight: bold; +} + +dd { + margin-bottom: 20px; +} + +.sticky, +.gallery-caption, +.bypostauthor { + margin: inherit; +} + +strong { + font-weight: bold; +} + +cite, +em, +i { + font-style: italic; +} + +big { + font-size: 131.25%; +} + +ins { + background: #ffc; + text-decoration: none; +} + +blockquote { + font-style: italic; + padding: 0 3em; +} + +blockquote cite, +blockquote em, +blockquote i { + font-style: normal; +} + +pre { + background: #f7f7f7; + color: #222; + line-height: 18px; + margin-bottom: 20px; + padding: 1.5em; +} + +abbr, +acronym { + border-bottom: 1px dotted #666; + cursor: help; +} + +sup, +sub { + height: 0; + line-height: 1; + position: relative; + vertical-align: baseline; +} + +sup { + bottom: 1ex; +} + +sub { + top: .5ex; +} + +input[type="text"], input[type="password"], #item-body textarea { + border: 1px solid #d9d8d8; + font-size: 11px; + line-height: 11px; + padding: 8px; + width: 234px; + background: url(images/bg-search-inp.png) repeat-x #fff; + box-shadow: none; +} + +input.empty { + color: #b3aaaa; +} + +a { + color: #262626; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.grid { + width: 960px; + margin: 0 auto; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +.clear { + clear: both; + overflow: hidden; +} + +.editfield { + color: #777; + font-size: 11px; + font-style: italic; +} + +.editfield label { + float: left; + width: 150px; + padding-top: 5px; + color: #404040; + font-size: 12px; + font-style: normal; +} + +.editfield label.no { + float: none; + width: auto; + padding-top: 0; +} + +.editfield input[type="text"], .editfield input[type="password"] { + border: 1px solid #d9d8d8; + color: #666666; + font-size: 11px; + line-height: 11px; + padding: 8px; + width: 234px; + background: url(images/bg-search-inp.png) repeat-x #fff; + box-shadow: none; + margin-bottom: 0 !important; +} + +.editfield textarea { + border: 1px solid #d9d8d8; + color: #666666; + padding: 8px; + background: url(images/bg-search-inp.png) repeat-x #fff; +} + +.editfield .error { + color: #990000; +} + +.editfield div { + display: inline; +} + +.editfield a { + color: #406098; +} + + +/*-- 1.1 BUTTON --*/ + +.btn { + display: inline-block; + background: url(images/btn-left.png) no-repeat left center; + padding-left: 15px; +} + +.btn span { + display: inline-block; + font: 13px/36px "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: bold; + color: #fff; + background: url(images/btn-right.png) no-repeat right center; + padding-right: 15px; + height: 38px; +} + +.btn-gray { + color: #6f6f6f; + font-weight: bold; + line-height: 27px; + border: 1px solid #dbdada; + padding: 0 11px; + display: inline-block; + background: url(images/bg-submit-btn.png) repeat-x; + cursor: pointer; + font-size: 11px; + font-style: normal !important; +} + +.btn-gray span { + color: #b5cbfa; + font-weight: normal; +} + +/*-- 1.2 COLORBOX --*/ + +/* The following CSS is consistent between example themes and should not be altered. */ + +#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;} +#cboxOverlay{position:fixed; width:100%; height:100%;} +#cboxMiddleLeft, #cboxBottomLeft{clear:left;} +#cboxContent{position:relative;} +#cboxLoadedContent{overflow:auto;} +#cboxTitle{margin:0;} +#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;} +#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} +.cboxPhoto{float:left; margin:auto; border:0; display:block;} +.cboxIframe{width:100%; height:100%; display:block; border:0;} + +/* + User Style: + Change the following styles to modify the appearance of ColorBox. They are + ordered & tabbed in a way that represents the nesting of the generated HTML. +*/ +#cboxOverlay{background:url(images/overlay.png) repeat 0 0;} +#colorbox{} + #cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px 0;} + #cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px 0;} + #cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px -29px;} + #cboxBottomRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px -29px;} + #cboxMiddleLeft{width:21px; background:url(images/controls.png) left top repeat-y;} + #cboxMiddleRight{width:21px; background:url(images/controls.png) right top repeat-y;} + #cboxTopCenter{height:21px; background:url(images/border.png) 0 0 repeat-x;} + #cboxBottomCenter{height:21px; background:url(images/border.png) 0 -29px repeat-x;} + #cboxContent{background:#fff; overflow:hidden;} + .cboxIframe{background:#fff;} + #cboxError{padding:50px; border:1px solid #ccc;} + #cboxLoadedContent{margin-bottom:28px;} + #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;} + #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;} + #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;} + #cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxPrevious:hover{background-position:-75px -25px;} + #cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxNext:hover{background-position:-50px -25px;} + #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;} + #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;} + #cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxClose:hover{background-position:-25px -25px;} + +/* + The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill + when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9. + See: http://jacklmoore.com/notes/ie-transparency-problems/ +*/ +.cboxIE #cboxTopLeft, +.cboxIE #cboxTopCenter, +.cboxIE #cboxTopRight, +.cboxIE #cboxBottomLeft, +.cboxIE #cboxBottomCenter, +.cboxIE #cboxBottomRight, +.cboxIE #cboxMiddleLeft, +.cboxIE #cboxMiddleRight { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); +} + +/* + The following provides PNG transparency support for IE6 + Feel free to remove this and the /ie6/ directory if you have dropped IE6 support. +*/ +.cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);} +.cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);} +.cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);} +.cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);} +.cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);} +.cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);} +.cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);} +.cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);} + +.cboxIE6 #cboxTopLeft, +.cboxIE6 #cboxTopCenter, +.cboxIE6 #cboxTopRight, +.cboxIE6 #cboxBottomLeft, +.cboxIE6 #cboxBottomCenter, +.cboxIE6 #cboxBottomRight, +.cboxIE6 #cboxMiddleLeft, +.cboxIE6 #cboxMiddleRight { + _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')"); +} + + + +/*------------------------------------- + 2. HEADER +-------------------------------------*/ + +#header { + background: url(images/bg-header.png) center bottom; +} + +#header .shadow { + height: 8px; + background: rgba(0, 0, 0, .15); +} + +#header .overlay { + min-height: 125px; + background: url(images/bg-header-overlay.png) center top; +} + + +/*-- 2.1 LOGO --*/ + +#header .logo { + padding: 40px 0 45px; + float: left; +} + +#header h1 { + font-size: 40px; + line-height: 40px; + float: left; + color: #fff; + margin-bottom: 0 !important; +} + +#header h1 a { + color: #fff; +} + +#header h2 { + font-size: 12px; + line-height: 40px; + float: left; + margin-left: 20px; + color: #ffe29e; +} + + +/*-- 2.2 LOGIN --*/ + +#header .login { + float: right; + margin-top: 40px; + width: 415px; + text-align: right; + color: #fff; +} + +.logged-in #header .login { + margin-top: 50px; +} + +#header a { + color: rgba(255, 255, 255, 0.6); + text-shadow: none; +} + +#header .fields { + padding: 6px; + background: #fff; + background: rgba(255, 255, 255, .12); + display: inline-block; +} + +#header .fields .user-login, #header .fields .user-pass { + border: 1px solid rgba(0, 0, 0, .2); + background-color: #fff !important; + box-shadow: none !important; + width: 112px; + height: 27px; + float: left; + padding: 0 5px; + margin-right: 6px; +} + +#header .fields .btn-submit { + width: 28px; + height: 29px; + background: url(images/btn-login.png); + border: 0; + cursor: pointer; +} + +#header .forgot-pass { + float: left; + margin-top: 12px; +} + + +/*-- 2.3 NAV --*/ + +#nav { + height: 64px; + background: url(images/bg-nav.png) repeat-x; +} + +#nav ul { + margin: 0; +} + +#nav li { + list-style: none; + float: left; + padding-right: 26px; + margin-right: 23px; + background: url(images/bg-nav-sep.png) no-repeat right center; +} + +#nav li.last { + padding-right: 0; + margin-right: 0; + background: none; +} + +#nav li:last-child { + padding-right: 0; + margin-right: 0; + background: none; +} + +#nav a { + font: 16px/59px "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: bold !important; +} + + +/*-- 2.3 NAV --*/ + +.sub-menu { + display: none; + position: absolute; + width: 175px; + z-index: 500; + margin: 2px 0 0 -23px !important; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1); + width: 190px; +} + +.sub-menu li { + margin: 0 !important; + padding: 0 !important; + background: none !important; +} + +.sub-menu a { + display: inline-block; + color: #404040; + font-size: 13px !important; + line-height: 38px !important; + background: url(images/bg-submenu.png) center bottom #fff; + padding-left: 25px; + width: 165px; + border-bottom: 1px solid #f2f2f2; +} + +.sub-menu ul { + margin: -40px 0 0 190px !important; + border-left: 1px solid #f2f2f2; +} + +.sub-menu ul li:first-child a { + border-top: 1px solid #f8f8f8; +} + +li.last .sub-menu { + margin-left: -55px !important; +} + + + +/*------------------------------------- + 3. BILLBOARD +-------------------------------------*/ + +#billboard { + +} + +#billboard .slide { + min-height: 300px; + width: 960px; + background: url(images/bg-billboard-slide.png) center bottom no-repeat; + overflow: hidden; +} + +#billboard .slide .slide-content { + width: 630px; + padding-left: 330px; + background: no-repeat left bottom; + min-height: 300px; +} + +#billboard .slide h2 { + font-size: 32px; + line-height: 38px; + margin-top: 0px; + padding-top: 60px; + margin-bottom: 20px; +} + +#billboard .slide p { + font-size: 14px; + line-height: 21px; + margin-bottom: 0; + padding-bottom: 20px; +} + +#billboard .slide .sign-in { + font-size: 11px; + color: #777; + margin-left: 30px; +} + +#billboard .slide .read-more { + font-size: 11px; + color: #777; +} + +#billboard .column { + width: 300px; + float: left; + padding-left: 30px; + background: url(images/bg-billboard-sep.png) no-repeat left bottom; + height: 106px; + border-top: 1px solid #e9e9e9; +} + +#billboard .column.first { + padding-left: 0; + background: none; +} + +#billboard .column h2 { + font-size: 18px; + line-height: 21px; + margin-top: 35px; +} + +#billboard .column p { + color: #777; + margin-top: 3px; + font-style: italic; +} + +#billboard .column img { + float: right; + margin: 32px 30px 0 0; +} + + + +/*------------------------------------- + 4. CONTENT +-------------------------------------*/ + +#content { + margin-top: 50px; +} + +.blog #content, .single-post #content, .archive #content, .search-results #content { + background: url(images/bg-content-shadow.png) no-repeat 630px top; +} + +.home-page #content { + margin-top: 0; +} + +.page-template-template-homepage-php #content { + background: none; +} + +.with-iframe #content { + width: 550px; + margin-top: 30px; +} + +.with-iframe .register-section .error { + color: #990000; + margin: 5px 0; +} + +.with-iframe { + padding-top:0 !important; +} + +.with-iframe #wp-admin-bar, .with-iframe #wpadminbar { + display:none !important; +} + +#main { + float: left; + width: 600px; +} + +.post { + margin-bottom: 60px; +} + +.post .post-title { + font-size: 22px; + line-height: 32px; + margin-top: 12px; +} + +.post .post-title a { + +} + +.post .page-title { + margin-top: 0; + margin-bottom: 20px; +} + +.post .meta { + font-size: 12px; + color: #777; + margin-bottom: 20px; + display: inline-block; +} + +.post .meta a { + color: #777; +} + +.read-more { + margin-bottom: 0; +} + +.read-more a { + color: #406098; + font-weight: bold; +} + +.blog-heading { + margin-bottom: 50px; +} + +.post .post-content a { + color: #406098; +} + +.post .post-content h1, +.post .post-content h2, +.post .post-content h3, +.post .post-content h4, +.post .post-content h5, +.post .post-content h6 { + margin-top: 30px; + margin-bottom: 30px; +} + +.post .post-content h1{ + font-size: 38px; +} + +.post .post-content h2 { + font-size: 34px; +} + +.post .post-content h3 { + font-size: 30px; +} + +.post .post-content h4 { + font-size: 26px; +} + +.post .post-content h5 { + font-size: 22px; +} + +.post .post-content h6 { + font-size: 20px; +} + +.post .post-content ol, +.post .post-content ul { + margin-left: 15px; +} + +.post .post-content ul { + list-style: circle; +} + +.post .post-content p, +.post .post-content ol, +.post .post-content ul, +.post .post-content blockquote, +.post .post-content pre { + margin-bottom: 25px; +} + +.post .post-content li { + list-style-position: inside !important; +} + +.post .post-content ol ol, +.post .post-content ul ul, +.post .post-content ol ul, +.post .post-content ul ol { + margin-bottom: 0; +} + +.post .post-content ol li { + list-style: decimal; +} + +.post .post-content ol ol li { + list-style: lower-alpha; +} + +.post .post-content ul ul li { + list-style: circle; +} + +.post .post-content strong { + font-weight: bold !important; +} + +.post .post-content em { + font-style: italic !important; +} + +.post .post-content blockquote { + margin-left: 20px; + padding-left: 20px; + border-left: 3px solid #ddd; +} + +.post .post-content pre { + padding: 20px; + border: 1px solid #ddd; + white-space: pre; + line-height: 20px; + width: 550px; + overflow: auto; + overflow-Y: hidden; +} + +.post .post-content code { + font-family: monospace; + font-size: 13px; + display: block; +} + +.post .post-content .wp-caption { + -webkit-box-shadow: 0 1px 2px #efefef; + -moz-box-shadow: 0 1px 2px #efefef; + box-shadow: 0 1px 2px #efefef; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background: #fafafa; +} + +.post .post-content .aligncenter, +.post .post-content div.aligncenter { + display: block; + margin-left: auto; + margin-right: auto; + margin-bottom: 30px; +} + +.post .post-content .alignleft { + float: left; + margin-right: 30px; +} + +.post .post-content .alignright { + float: right; + margin-left: 35px; +} + +.post .post-content .wp-caption img { + border: 0 none; + margin: 0; + padding: 0; + box-shadow: 0 1px 4px rgba(0, 0, 0, .20); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, .20); + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, .20); + margin: 5px 0 0 5px; +} + +.post .post-content .wp-caption p.wp-caption-text { + font-size: 11px; + line-height: 17px; + margin: 0; + padding: 0 5px 5px; +} + + + +/*-- 4.1 PAGINATION --*/ + +#pagination { + margin-bottom: 40px; +} + +#pagination.for-posts { + margin-bottom: -20px; + margin-top: 30px; +} + +#pagination.for-comments-top { + margin-bottom: 15px; +} + +#pagination.for-comments-bottom { + margin-bottom: 0; +} + +#pagination .pages { + float: right; + font-size: 11px; + color: #777; + font-style: italic; +} + +#pagination a, .pagination a { + color: #777; + font-weight: bold; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + margin-right: 10px; +} + +#pagination a .page-link { + color: #777; + font-weight: bold; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + margin-right: 10px; + background: none; + padding: 0; +} + +#pagination .current, +#pagination .nextpostslink, +#pagination .previouspostslink, +.pagination .current, +.pagination .next, +.pagination .prev, +#pagination .page-link { + color: #262626; + font-weight: bold; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + margin-right: 10px; + background: #f6f6f6; + padding: 1px 7px; + display: inline-block; + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; +} + +.pagination .current, +.pagination .next, +.pagination .prev { + color: #262626 !important; + background: #fff; + line-height: 18px; +} + +#pagination .nextpostslink span, +#pagination .previouspostslink span, +.pagination .next span, +.pagination .prev span { + color: #b5cbfa; + font-weight: normal; +} + + +/*-- 4.2 AUTHOR INFO --*/ + +.author-info { + background: #f6f6f6; + padding: 20px 20px 30px; + font-size: 11px; + margin-bottom: 70px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0px 1px rgba(0, 0, 0, 0.1); +} + +.author-info h3 { + font-size: 18px; + margin-bottom: 20px; +} + +.author-info p { + margin-bottom: 0; +} + +.author-info .more-posts { + float: right; +} + +.author-info .more-posts a { + color: #406098; +} + +.author-info .author-photo { + margin-right: 15px; +} + +.author-info .author-name { + width: 115px; + margin-right: 15px; +} + +.author-info .author-name a { + color: #404040; + font-weight: bold; +} + +.author-info .author-name em { + color: #777; + font-size: 10px; +} + +.author-info .author-bio { + width: 380px; +} + + +/*-- 4.3 RELATED POSTS --*/ + +.related-posts { + margin-bottom: 55px; +} + +.related-posts h3 { + font-size: 18px; + margin-bottom: 20px; +} + +.related-posts .post { + margin-bottom: 15px; + width: 50%; + float: left; +} + +.related-posts .post .post-img { + float: left; + margin-right: 15px; +} + +.related-posts .post h4 { + font-size: 11px; + margin-top: 0; + line-height: 17px; +} + +.related-posts .post h4 a { + color: #404040; + font-family: "Lucida Grande", "Arial Unicode MS", sans-serif; +} + +.related-posts .post em, .widget-posts .post em a { + font-size: 10px; + color: #777; + font-style: italic; + margin-bottom: 0; +} + + +/*-- 4.4 COMMENTS --*/ + +#comments { + margin-bottom: 70px; +} + +#comments h3 { + font-size: 18px; + margin-bottom: 20px; +} + +#comments .to-respond { + float: right; + color: #406098; + font-size: 11px; +} + +#comments ul, #comments ol { + margin: 0; +} + +#comments p { + margin-bottom: 0; +} + +#comments .comment { + list-style: none; + font-size: 11px; +} + +#comments .comment-box { + background: #f6f6f6; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + padding: 20px; + margin-bottom: 25px; +} + +#comments .comment-avatar { + width: 35px; + height: 35px; + float: left; + margin-right: 15px; +} + +#comments .comment-meta { + width: 115px; + margin-right: 15px; +} + +#comments .comment-author { + font-weight: bold; +} + +#comments .comment-date { + color: #777; + font-style: italic; +} + +#comments .comment-date { + color: #777; + font-style: italic; + font-size: 10px; +} + +#comments .comment-date a.comment-date-link { + color: #777; +} + +#comments .comment-reply-link { + font-size: 11px; + color: #406098; + font-style: normal; +} + +#comments .comment-body { + width: 380px; +} + +#comments .children { + margin-left: 5px; + border-left: 1px solid #f2f2f2; + padding-left: 20px; +} + +#comments .children .comment-body { + width: 349px; +} + +#comments .children .children .comment-body { + width: 320px; +} + + +/*-- 4.5 RESPOND FORM --*/ + +#respond { + +} + +#respond h3 { + font-size: 18px; + margin-bottom: 20px; +} + +#respond form { + background: #f6f6f6; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + padding: 20px; + margin-bottom: 60px; +} + +#respond input[type="text"] { + border: 1px solid #d9d8d8; + color: #666666; + font-size: 11px; + line-height: 11px; + padding: 8px; + width: 234px; + background: url(images/bg-search-inp.png) repeat-x #fff; + margin-right: 30px; +} + +#respond .required { + font-size: 10px; + color: #777; + font-style: italic; +} + +#respond .required span { + color: #720000; +} + +#respond textarea { + border: 1px solid #d9d8d8; + color: #666666; + padding: 8px; + background: url(images/bg-search-inp.png) repeat-x #fff; + height: 100px; + width: 476px; +} + +#respond .form-submit { + display:none; +} + +#respond button { + color: #6f6f6f; + font-weight: bold; + line-height: 27px; + border: 1px solid #dbdada; + padding: 0 11px; + display: inline-block; + background: url(images/bg-submit-btn.png) repeat-x; + cursor: pointer; + font-size: 11px; +} + +#respond button span { + color: #b5cbfa; + font-weight: normal; +} + +#respond #cancel-comment-reply-link { + float: right; + font-size: 11px; + color: #406098; + font-weight: normal; + font-family: "Lucida Grande", "Arial Unicode MS", sans-serif; +} + + + +/*------------------------------------- + 5. BUDDYPRESS +-------------------------------------*/ + +/*-- 5.1. DIRECTORY --*/ + +.directory #sidebar-blog { + display: none; +} + +.directory #main { + width: 960px; +} + +.dir-form h2, +.dir-form h3 { + float: left; + font-size: 22px; + margin-bottom: 35px; +} + +.dir-form .subtitle { + font-style: italic; + color: #777; + font-size: 10px; + margin-left: 45px; + display: inline-block; + font-weight: normal; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.dir-form .subtitle .btn-gray { + margin-left: 25px; +} + +.logged-in #groups-directory-form .subtitle, +.logged-in.forums.directory .subtitle { + margin-top: 0; +} + +.dir-search { + float: right; + border: 1px solid #e9e9e9; + padding: 5px; + background: url(images/bg-search.png) repeat-x; + margin-bottom: 35px; + margin-top: -6px; +} + +.dir-search input[type="text"] { + border: 1px solid #d9d8d8; + font-size: 11px; + color: #666666; + height: 27px; + width: 230px; + line-height: 27px; + padding: 0 10px; + background: url(images/bg-search-inp.png) repeat-x; + float: left; + margin-right: 7px; +} + +.dir-search input[type="submit"] { + border: 1px solid #d9d8d8; + width: 26px; + height: 29px; + text-indent: -9999px; + background: url(images/bg-search-btn.png) center center; + cursor: pointer; +} + +.item-list-tabs { + min-height: 42px; + border: 1px solid #e9e9e9; + background: url(images/bg-members-nav.png); + line-height: 42px; + padding: 0 13px; + font-size: 11px; + color: #777; + clear: both; + overflow: hidden; +} + +.item-list-tabs.for-bottom { + border-top: 0; + margin-top: -30px; + margin-bottom: 40px; + height: 42px; +} + +#forums-dir-list .for-bottom { + margin: 20px -20px -20px; + border: 0; +} + +.item-list-tabs .pages-count { + font-style: italic; +} + +.item-list-tabs ul { + margin: 0; + padding-left: 7px; +} + +.item-list-tabs li { + float: left; + list-style: none; + margin-right: 30px; +} + +.item-list-tabs li.last { + float: right; + margin-right: 0; +} + +.item-list-tabs li.feed a { + background: url(images/icon-rss.png) no-repeat right center; + padding: 2px 20px 2px 0; +} + +.item-list-tabs a { + font-weight: bold; + font-size: 12px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.item-list-tabs a.active, +.item-list-tabs a.current, +.item-list-tabs a.selected, +.item-list-tabs .active a, +.item-list-tabs .current a, +.item-list-tabs .selected a { + color: #406098; +} + +.item-list-tabs a span { + font-size: 12px; + color: #777; + background: #fff; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border: 1px solid #e9e9e9; + display: inline-block; + padding: 3px 4px; + line-height: 12px; + margin-left: 3px; +} + +.dir-list { + border-left: 1px solid #e9e9e9; + border-right: 1px solid #e9e9e9; + border-bottom: 1px solid #e9e9e9; + padding: 20px; + margin-bottom: 30px; +} + +.dir-list #pag-top { + margin-bottom: 25px; +} + +.dir-list #pag-bottom { + margin-top: 25px; +} + +.dir-list.members #pag-top, +.dir-list.members #pag-bottom, +.dir-list.groups #pag-top, +.dir-list.groups #pag-bottom, +.dir-list.blogs #pag-top, +.dir-list.blogs #pag-bottom { + display: none; +} + +.dir-list .item-list { + margin: -20px; + overflow: hidden; + background: url(images/bg-members-shadow.png) no-repeat 420px center; +} + +.dir-list .item-list li { + float: left; + width: 459px; + height: 36px; + padding: 11px 0 14px 20px; + list-style: none; + background: url(images/bg-members-column.png) no-repeat right bottom; +} + +.dir-list .item-list li.row-even { + background-position: right top; +} + +.dir-list .item-list li.row-last { + height: 35px; +} + +.dir-list .item-list .item-avatar { + width: 35px; + height: 35px; + float: left; + margin-right: 15px; +} + +.dir-list .item-list .item-avatar img { + width: 35px !important; + height: 35px !important; +} + +.dir-list .item-list .item { + float: left; +} + +.dir-list .item-list .item-title { + font-weight: bold; +} + +.dir-list .item-list .item-meta { + font-style: italic; + color: #777; + font-size: 10px; +} + +.dir-list .item-list .action { + float: right; + margin-right: 15px; + font-size: 11px; +} + +.generic-button { + margin-top: 4px; + float: right; + margin-left: 10px; +} + +#delete-group-avatar-button.generic-button { + float: none; + margin: 0; +} + + +/*-- 5.2. PROFILE --*/ + +#item-header { + float: left; + width: 164px; + background: url(images/bg-activity-shadow-v.png) no-repeat right top; + min-height: 672px; + padding-right: 20px; +} + +#item-header h2 { + font-size: 22px; + line-height: 22px; + margin-top: 23px; + margin-bottom: 20px; +} + +#item-header .activity { + display: block; + color: #777; + font-size: 10px; + font-style: italic; +} + +#item-header .user-nicename, +#item-header .highlight { + display: inline-block; + color: #777; + font-size: 10px; + background: #F7F7F7; + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + padding: 0 5px; + margin-bottom: 5px; +} + +#item-header #latest-update { + margin-top: 20px; +} + +#item-header #latest-update a { + font-style: italic; + color: #406098; + font-weight: normal; +} + +#item-header #item-actions { + min-height: 100px; + border-top: 1px solid #E9E9E9; + background: url(images/bg-activity-header.png) no-repeat right top; + margin-top: 28px; + padding: 15px 20px 0 0; + margin-right: -20px; +} + +#item-header #item-actions p { + margin-bottom: 3px; +} + +#item-header #item-actions a { + font-size: 11px; + font-weight: bold; + color: #777; +} + +#item-header #item-actions h3 { + font-size: 12px; + margin-bottom: 15px; +} + +#item-header #item-actions #group-admins { + margin: 0; + list-style: none; +} + +#item-header #item-actions #group-admins li { + margin-bottom: 15px; + overflow: hidden; +} + +#item-header #item-actions #group-admins img { + float: left; + margin-right: 15px; +} + +#item-header #item-actions #group-admins .item-meta { + color: #777; + font-style: italic; + font-size: 10px; +} + +#item-header #item-actions #group-admins a { + color: #404040; +} + +body.groups #item-header #item-meta { + margin-top: 20px; +} + +#item-header .generic-button { + float: none; + margin-left: 0; +} + +#item-nav { + float: right; + width: 776px; +} + +#item-body { + float: right; + width: 734px; + border-left: 1px solid #e9e9e9; + border-right: 1px solid #e9e9e9; + border-bottom: 1px solid #e9e9e9; + margin-bottom: 30px; + padding: 20px; + min-height: 550px; +} + +#item-body h1, +#item-body h2, +#item-body h3, +#item-body h4, +#item-body h5, +#item-body h6 { + margin-bottom: 20px; +} + +#item-body .item-list-tabs, +.activity.directory #subnav.item-list-tabs { + border: 0; + border-bottom: 1px solid #e9e9e9; + background: none; + margin: -20px -20px 20px -20px; + height: 48px; + line-height: 48px; +} + +#item-body .item-list-tabs a, +.activity.directory #subnav.item-list-tabs a { + font-size: 11px; + color: #777; + font-weight: normal; + font-family: "Lucida Grande", "Arial Unicode MS", sans-serif; +} + +#item-body .item-list-tabs a.active, +#item-body .item-list-tabs a.current, +#item-body .item-list-tabs a.selected, +#item-body .item-list-tabs .active a, +#item-body .item-list-tabs .current a, +#item-body .item-list-tabs .selected a { + color: #406098; +} + +#item-body .item-list-tabs li.last, +.activity.directory #subnav.item-list-tabs li.last { + float: right; + margin-right: 0; +} + +#activity-stream { + margin: -20px; +} + +#activity-stream li { + padding: 20px 20px 25px; + list-style: none; + border-bottom: 1px solid #E9E9E9; + overflow: hidden; +} + +#activity-stream .activity-avatar { + float: left; + margin-right: 15px; +} + +#activity-stream .activity-content { + width: 684px; + float: right; +} + +#activity-stream .activity-header { + color: #777; + font-style: italic; + font-size: 10px; +} + +#activity-stream .activity-header a { + color: #406098; +} + +#activity-stream .activity-header a:first-child { + color: #404040; + font-style: normal; + font-weight: bold; + font-size: 11px; + display: block; + max-width: 150px; +} + +#activity-stream .activity-header a.first { + color: #404040; + font-style: normal; + font-weight: bold; + font-size: 11px; + display: block; + max-width: 150px; +} + +#activity-stream .activity-content a { + color: #406098; +} + +#activity-stream .activity-content img.align-left { + float: left; + margin: 0 15px 15px 0; +} + +#activity-stream .activity-content img.align-right { + float: left; + margin: 0 0 15px 15px; +} + +#activity-stream .activity-meta { + clear: both; +} + +#activity-stream .activity-meta a { + font-size: 11px; + color: #406098; + font-style: italic; + margin-right: 5px; +} + +#activity-stream .activity-meta a span { + font-style: normal; +} + +#activity-stream .activity-comments { + width: 684px; + float: right; + margin-top: 10px; +} + +#activity-stream li.first { + background: url(images/bg-activity-shadow-h.png) center -28px no-repeat; +} + +#activity-stream li:first-child { + background: url(images/bg-activity-shadow-h.png) center -28px no-repeat; +} + +#activity-stream li:nth-child(odd) { + background-color: #fafafa; +} + +#activity-stream li.odd { + background-color: #fafafa; +} + +#activity-stream li .activity-comments .ac-reply-avatar { + float: left; + width: 35px; + height: 35px; + margin-right: 15px; +} + +#activity-stream li .activity-comments .ac-reply-content { + margin-left: 50px; +} + +#activity-stream li .activity-comments textarea { + border: 1px solid #d9d8d8; + color: #666666; + padding: 8px; + background: url(images/bg-search-inp.png) repeat-x #fff; +} + +#activity-stream li .activity-comments ul { + margin: 0; +} + +#activity-stream li .activity-comments ul li { + padding: 0; + margin: 10px 0; + border: 0; + background: none; +} + +#activity-stream li .activity-comments ul .acomment-avatar { + width: 35px; + height: 35px; + margin-right: 15px; + float: left; +} + +#activity-stream li .activity-comments ul .acomment-meta { + font-size: 11px; + color: #777; + font-style: italic; +} + +#activity-stream li .activity-comments ul .acomment-meta a { + color: #406098; +} + +#activity-stream li .activity-comments ul .acomment-content p { + margin-bottom: 0; +} + +#activity-stream li .activity-comments ul .acomment-options a { + color: #406098; + font-size: 11px; +} + +#activity-stream .activity-time-since { + float: right; + color: #777; + font-style: italic; + font-size: 10px; +} + +#whats-new-form { + border-bottom: 1px solid #E9E9E9; + margin: 0 -20px 20px -20px; + padding: 0 20px 20px; +} + +#whats-new-form h5 { + margin-bottom: 20px; +} + +#whats-new-form #whats-new-avatar { + float: left; + width: 35px; + margin-right: 15px; +} + +#whats-new-content { + margin-left: 50px; +} + +#whats-new-content textarea { + border: 1px solid #D9D8D8; + color: #666; + padding: 8px; + background: url(images/bg-search-inp.png) repeat-x white; + width: 351px; + height: 34px; +} + +#item-body #pag-top { + display: none; +} + +#item-body .pagination { + margin-bottom: 40px; +} + +#item-body .item-list { + margin: -20px -20px 20px -20px; +} + +#item-body .bp-widget .item-list { + margin-top: 0; + border-top: 1px solid #e0e0e0; +} + +#item-body .bp-widget .item-list li { + background: url(images/bg-members-column-left.png) no-repeat left bottom !important; +} + +#item-body .bp-widget .item-list li.odd { + background-position: left top !important; +} + +#item-body .bp-widget .item { + margin-top: 7px; +} + +#item-body .bp-widget .item .item { + margin-top: 0; +} + +#item-body .bp-widget .action { + margin-top: 10px; +} + +#item-body .bp-widget .action a { + font-style: italic; + font-size: 11px; + color: #406098; +} + +#item-body .item-list li { + list-style: none; + height: 36px; + background: url(images/bg-members-column-left.png) no-repeat left bottom; + padding: 11px 0 14px 20px; + overflow: hidden; + border-bottom: 1px solid #E9E9E9; +} + +#item-body .item-list li.odd, +#item-body .item-list li:nth-child(odd) { + background-position: left top; + height: 35px; +} + +#item-body .item-list .item-avatar, +#item-body .item-list img.avatar { + width: 35px; + height: 35px; + float: left; + margin-right: 15px; +} + +#item-body .item-list .item { + width: 300px; + float: left; +} + +#item-body .item-list h5 { + width: 300px; + float: left; + margin-bottom: 0; +} + +#item-body .item-list .item-title { + font-weight: bold; +} + +#item-body .item-list .item-meta { + font-style: italic; + color: #777; + font-size: 10px; +} + +#item-body .item-list .action { + width: 387px; + float: right; + text-align: right; + margin-right: 15px; +} + +.group-members #item-body .item-list .action { + margin-top: -18px; +} + +table.profile-fields, table.notification-settings { + width: 100%; +} + +table.profile-fields th, table.notification-settings th { + padding: 5px; + border-bottom: 1px solid #e9e9e9; +} + +table.profile-fields td, table.notification-settings td { + padding: 5px; + border-bottom: 1px solid #e9e9e9; +} + +table.profile-fields td.label { + width: 200px; +} + +table.profile-fields td p, table.notification-settings td p { + margin-bottom: 0; +} + +.standard-form label { + display: block; + margin-bottom: 5px; + padding-right: 15px; +} + +.standard-form input[type="text"], +.standard-form input[type="password"], +.standard-form textarea { + margin-bottom: 15px; +} + +.standard-form .radio ul { + margin-left: 33px; +} + + +.messages-notices { + width: 774px; + margin: 20px -20px; + border-bottom: 1px solid #e9e9e9; +} + +.messages-notices tr { + padding: 0 20px; +} + +.messages-notices td { + border-top: 1px solid #e9e9e9; + padding: 13px 5px 9px; + vertical-align: top; +} + +.messages-notices td.thread-count { + padding: 16px 20px 5px; +} + +.messages-notices td .unread-count { + display: inline-block; + width: 8px; + height: 8px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + background: #cccccc; + text-indent: -9999px; + color: transparent; + margin-top: 15px; +} + +.messages-notices .unread td .unread-count { + background: #4f7db3; +} + +.messages-notices tr:nth-child(odd) td { + background-color: #fafafa; +} + +.messages-notices td p { + margin: 0; +} + +.messages-notices td a { + color: #406098; +} + +.messages-notices td.thread-options { + padding-top: 20px; +} + +.messages-notices .activity { + color: #777; + font-size: 11px; + font-style: italic; +} + +.messages-options-nav { + font-size: 11px; +} + +.messages-options-nav a { + color: #406098; +} + +.message-box { + background: #f6f6f6; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0px 1px rgba(0, 0, 0, 0.1); + padding: 20px; + margin-bottom: 25px; + overflow: hidden; +} + +.message-box .avatar { + float: left; + margin-right: 15px; +} + +.message-box p.msg-name { + margin: 0; + font-weight: bold; +} + +.message-box p.msg-time { + font-size: 11px; + color: #777; + font-style: italic; + margin-bottom: 10px; +} + +.message-metadata { + width: 200px; + float: left; +} + +.message-reply-metadata { + width: 0; +} + +.message-content { + margin-left: 50px; + float: left; +} + +table.profile-fields, table.notification-settings { + width: 100%; +} + +table.profile-fields th, table.notification-settings th { + padding: 5px; + border-bottom: 1px solid #e9e9e9; +} + +table.profile-fields td, table.notification-settings td { + padding: 5px; + border-bottom: 1px solid #e9e9e9; +} + +table.profile-fields td.label { + width: 200px; +} + +table.profile-fields td p, table.notification-settings td p { + margin-bottom: 0; +} + +table.notification-settings td, +table.notification-settings th.title { + text-align: left; +} + +table.notification-settings { + margin-top: 30px; +} + +table.notification-settings tr th:first-child, +table.notification-settings tr td:first-child { + width: 4px; +} + +table.notification-settings .yes, +table.notification-settings .no { + width: 100px; + text-align: center; +} + + +#group-create-tabs { + +} + +#group-create-tabs ul { + margin: 0; + overflow: hidden; + border-left: 1px solid #E9E9E9; + margin-bottom: 20px; +} + +#group-create-tabs li { + float: left; + list-style: none; + border-top: 1px solid #E9E9E9; + border-right: 1px solid #E9E9E9; + border-bottom: 1px solid #E9E9E9; + background: url(images/bg-members-nav.png) repeat-x center center; + padding: 10px; +} + +#group-create-tabs li.done { + background: url(images/bg-members-nav2.png) repeat-x center center; +} + +#group-create-tabs li.current { + background: url(images/bg-groups-tab.png) no-repeat right center; + border-right: 0; +} + +#group-create-tabs li.current.last { + background: url(images/bg-members-nav2.png) repeat-x center center; + border-right: 1px solid #E9E9E9; +} + + + +/*-- 5.3. ACTIVITY --*/ + +body.activity.directory #subnav { + margin: 0 !important; + border-left: 1px solid #e9e9e9 !important; + border-right: 1px solid #e9e9e9 !important; +} + +body.activity.directory #whats-new-form { + border-left: 1px solid #e9e9e9; + border-right: 1px solid #e9e9e9; + border-bottom: 1px solid #e9e9e9; + padding: 20px; + margin: 0; +} + +body.activity.directory #activity-stream { + margin: 0 0 30px; + border-left: 1px solid #e9e9e9; + border-right: 1px solid #e9e9e9; +} + +body.activity-permalink #activity-stream { + border-top: 1px solid #e9e9e9; +} + +body.activity.directory #activity-stream .activity-content { + width: 868px; +} + +body.activity.directory #activity-stream .activity-comments { + width: 868px; +} + +body.forums table.forum { + width: 958px; + margin: -20px; +} + +body.forums table.forum td { + border-bottom: 1px solid #e9e9e9; + padding: 20px; +} + +body.forums table.forum td p { + margin: 0; +} + +body.forums table.forum td.td-title { + width: 320px; +} + +body.forums table.forum td.td-group { + width: 160px; +} + +body.forums table.forum td .avatar { + float: left; + width: 35px; + margin-right: 15px; +} + +body.forums table.forum td .topic-title { + font-weight: bold; + font-size: 11px; + color: #404040; +} + +body.forums table.forum td .time-since, +body.forums table.forum td .topic-meta { + font-style: italic; + font-size: 10px; + color: #777; +} + +body.forums table.forum td .topic-meta a { + font-weight: bold; + color: #406098; + font-size: 11px; + font-style: normal; +} + +body.forums table.forum td.td-group, +body.forums table.forum td.td-freshness { + background: url(images/bg-forum-sep.png) no-repeat left bottom; +} + +body.forums table.forum td.td-postcount { + width: 80px; + background: url(images/bg-forum-sep.png) no-repeat left bottom; +} + +body.forums table.forum td.td-postcount a { + font-size: 10px; + color: #777; + font-style: italic; + padding-right: 22px; + background: url(images/icon-replies.png) no-repeat right center; +} + +body.forums table.forum td.td-postcount a b { + font-size: 11px; + color: #404040; + font-style: normal; + font-weight: bold; +} + +body.forums table.forum tr:nth-child(odd) td { + background-color: #fafafa; +} + +body.forums table.forum tr.odd td { + background-color: #fafafa; +} + +.group-forum-topic #topic-meta { + +} + +.group-forum-topic #topic-meta h3 { + font-size: 16px; + margin-bottom: 0px; +} + +.group-forum-topic #topic-meta p { + font-size: 10px; + color: #777; + font-style: italic; +} + +.group-forum-topic #topic-meta a { + color: #406098; + font-size: 11px; + font-style: italic; +} + +.group-forum-topic #topic-post-list { + margin: 0 -20px; +} + +.group-forum-topic #topic-post-list li { + list-style: none; + padding: 20px 20px 0; + background: #fafafa; + border-top: 1px solid #e9e9e9; + overflow: hidden; +} + +.group-forum-topic #topic-post-list li.alt { + background: #fff; +} + +.group-forum-topic #topic-post-list li .avatar { + float: left; + width: 35px; + margin-right: 15px; +} + +.group-forum-topic #topic-post-list li .admin-links a, +.group-forum-topic #topic-post-list li .admin-links, +.group-forum-topic #topic-post-list li .post-link { + color: #777; + font-size: 10px; + font-style: italic; +} + +.group-forum-topic #topic-post-list li .poster-meta { + margin-bottom: 10px; +} + +.group-forum-topic #topic-post-list li .poster-meta, +.group-forum-topic #topic-post-list li .post-content { + float: right; + width: 684px; +} + +.group-forum-topic #topic-post-list li .poster-meta p { + margin: 0; +} + +.group-forum-topic #topic-post-list li .poster-name a { + color: #406098; + font-size: 11px; +} + +.group-forum-topic #topic-post-list li .post-time { + color: #777; + font-size: 10px; + font-style: italic; +} + +.group-forum-topic #post-topic-reply { + border-top: 1px solid #e9e9e9; + margin: 0 -20px; + padding: 0 20px; +} + +.group-forum-topic #item-body #message { + border-top: 1px solid #E9E9E9; + margin: 0 -20px; + padding: 20px 20px 0 20px; +} + +#avatar-upload #file, #group-settings-form #file { + border: 1px solid #e9e9e9; + padding: 3px 0; +} + +#item-body .forums { + margin: -20px -20px 0; +} + +#item-body .forums #message { + padding: 20px; +} + +#item-body .forums table { + border: 0; + width: 774px; + margin: 0; +} + +#item-body .forums td.td-title { + width: 350px; +} + +#item-body .forums td.td-postcount { + width: 80px; +} + +#item-body .forums .forums-nav { + border: 1px 0 0; +} + +#item-body .forums { + margin-left: -20px !important; + margin-top: -21px !important; +} + +.bp-profile.groups #item-body .forums { + margin-left: 0 !important; +} + +.groups #group-topic-count-top { + padding-top: 17px !important; +} + +.groups table.forum { + margin: 0 -20px; + width: 774px; + border-bottom: 1px solid #e9e9e9; +} + +.groups table.forum td { + border-top: 1px solid #e9e9e9; + padding: 20px; +} + +.groups #item-body table.forum tr:last-child td { + border-bottom: 1px solid #e9e9e9; +} + +.groups table.forum td p { + margin: 0; +} + +.groups table.forum td.td-title { + width: 320px; +} + +.groups table.forum td .avatar { + float: left; + width: 35px; + margin-right: 15px; +} + +.groups table.forum td .topic-title { + font-weight: bold; + font-size: 11px; + color: #404040; +} + +.groups table.forum td .time-since, +.groups table.forum td .topic-meta { + font-style: italic; + font-size: 10px; + color: #777; +} + +.groups table.forum td .topic-meta a { + font-weight: bold; + color: #406098; + font-style: normal; +} + +.groups table.forum td.td-freshness { + background: url(images/bg-forum-sep.png) no-repeat left bottom; +} + +.groups table.forum td.td-postcount { + width: 110px; + background: url(images/bg-forum-sep.png) no-repeat left bottom; +} + +.groups table.forum td.td-postcount a { + font-size: 10px; + color: #777; + font-style: italic; + padding-right: 22px; + background: url(images/icon-replies.png) no-repeat right center; +} + +.groups table.forum td.td-postcount a b { + font-size: 11px; + color: #404040; + font-style: normal; + font-weight: bold; +} + +.groups table.forum tr:nth-child(odd) td { + background-color: #fafafa; +} + +.groups table.forum tr.odd td { + background-color: #fafafa; +} + + + + +/*------------------------------------- + 6. SIDEBARS +-------------------------------------*/ + + +/*-- 6.1. SIDEBAR BLOG & SIDEBAR PAGE --*/ + +#sidebar-blog, #sidebar-page { + width: 300px; + float: right; +} + +#sidebar-blog .widget, #sidebar-page .widget { + margin-bottom: 60px; + font-size: 11px; + overflow: hidden; +} + +#sidebar-blog .widget .widget-title, #sidebar-page .widget .widget-title { + font-size: 18px; + line-height: 18px; + margin-bottom: 25px; +} + +#sidebar-blog .widget ul, #sidebar-page .widget ul { + margin: 0; +} + +#sidebar-blog .widget li, #sidebar-page .widget li { + list-style: none; + line-height: 22px; +} + + +/*-- 6.3 SIDEBAR HOME & SIDEBAR FOOTER --*/ + +#sidebar-footer, #sidebar-home { + border-top: 1px solid #e9e9e9; + padding: 50px 0 40px 0; + clear: both; + overflow: hidden; + background: url(images/bg-footer-shadow.png) center top no-repeat; +} + +#sidebar-footer .clear, #sidebar-home .clear { + clear: none; + overflow: auto; +} + +#sidebar-footer .widget, #sidebar-home .widget { + width: 300px; + margin-right: 30px; + float: left; + font-size: 11px; +} + +#sidebar-footer .widget.last, #sidebar-home .widget.last { + margin-right: 0; +} + +#sidebar-footer .widget:last-child, #sidebar-home .widget:last-child { + margin-right: 0; +} + +#sidebar-footer h3, #sidebar-home h3 { + font-size: 18px; + line-height: 18px; + margin-bottom: 25px; +} + + + + +/*------------------------------------- + 7. WIDGETS +-------------------------------------*/ + + +/*-- 7.1 WIDGET MEMBERS --*/ + +.widget_bp_core_members_widget { + +} + +.widget_bp_core_members_widget h3 { + float: left; +} + +.widget_bp_core_members_widget .item-options { + float: right; +} + +.widget_bp_core_members_widget .item-options a { + color: #777; +} + +.widget_bp_core_members_widget .item-options a.selected { + color: #406098; +} + +.widget_bp_core_members_widget #members-list { + clear: both; + margin: 0; + overflow: hidden; + margin-bottom: -15px; +} + +.widget_bp_core_members_widget #members-list li { + list-style: none; + display: inline-block; + float: left; +} + +.widget_bp_core_members_widget #members-list li .item { + display: none; +} + +.widget_bp_core_members_widget #members-list li .item-avatar { + margin: 0 18px 15px 0; +} + +.widget_bp_core_members_widget #members-list li.last .item-avatar { + margin-right: 0; +} + +.widget_bp_core_members_widget #members-list li:last-child .item-avatar { + margin-right: 0; +} + +.widget_bp_core_members_widget li:nth-child(6n) .item-avatar { + margin-right: 0 !important; +} + + +/*-- 7.2 WIDGET SEARCH --*/ + +.widget_search { + +} + +.widget_search .search-box { + border: 1px solid #e9e9e9; + padding: 5px; + background: url(images/bg-search.png) repeat-x; +} + +.widget_search .field { + border: 1px solid #d9d8d8; + font-size: 11px; + color: #666666; + height: 27px; + width: 230px; + line-height: 27px; + padding: 0 10px; + background: url(images/bg-search-inp.png) repeat-x; + float: left; + margin-right: 7px; +} + +.widget_search input::-webkit-input-placeholder { + line-height: none; +} + +.widget_search .submit { + border: 1px solid #d9d8d8; + width: 26px; + height: 29px; + text-indent: -9999px; + background: url(images/bg-search-btn.png) center center; + cursor: pointer; +} + + +/*-- 7.3 WIDGET TABBED ARCHIVE --*/ + +.widget-archive { + +} + +.widget-archive .widget-title { + float: left; +} + +.widget-archive .tabs { + float: right; +} + +.widget-archive .tabs li { + float: left; + list-style: none; + margin-left: 15px; +} + +.widget-archive .tabs li a { + color: #777; + cursor: pointer; +} + +.widget-archive .tabs li a.btn-small { + color: #406098; +} + +.widget-archive .pane { + overflow: hidden; +} + +.widget-archive .pane li { + font-size: 10px; + color: #777; + font-style: italic; + width: 50%; + float: left; +} + +.widget-archive .pane li a { + font-size: 11px; + color: #404040; + font-style: normal; +} + + +/*-- 7.4 WIDGET TABBED POSTS --*/ + +.widget-posts { + +} + +.widget-posts .widget-title { + float: left; +} + +.widget-posts .tabs { + float: right; +} + +.widget-posts .tabs li { + float: left; + list-style: none; + margin-left: 15px; +} + +.widget-posts .tabs li a { + color: #777; + cursor: pointer; +} + +.widget-posts .tabs li a.btn-small { + color: #406098; +} + +.widget-posts .pane { + overflow: hidden; +} + +.widget-posts .post { + margin-bottom: 15px; +} + +.widget-posts .post .post-img { + float: left; + margin-right: 15px; +} + +.widget-posts .post h4 { + font-size: 11px; + margin-top: 0; + line-height: 17px; +} + +.widget-posts .post h4 a { + color: #404040; + font-family: "Lucida Grande", "Arial Unicode MS", sans-serif; +} + +.widget-posts .post span, .widget-posts .post span a { + font-size: 10px; + color: #777; + font-style: italic; +} + + +/*-- 7.5 WIDGET TWITTER --*/ + +.widget-twitter { + +} + +.widget-twitter .widget-title span { + float: right; + font-size: 11px; + font-family: "Lucida Grande", "Arial Unicode MS", sans-serif; +} + +.widget-twitter .widget-title span a { + color: #406098; + font-weight: normal; +} + +.widget-twitter li { + margin-bottom: 15px; +} + +.widget-twitter li.last { + margin-bottom: 0; +} + +.widget-twitter li:last-child { + margin-bottom: 0; +} + +.widget-twitter .tweet_text { + line-height: 16px; + margin-bottom: 2px; +} + +.widget-twitter .tweet_text a { + color: #406098; +} + +.widget-twitter .date { + font-style: italic; + color: #777; +} + + +/*-- 7.6 WIDGET ENEWS --*/ + +.widget-enews { + +} + +.widget-enews .widget-title span { + float: right; + font-size: 11px; + font-family: "Lucida Grande", "Arial Unicode MS", sans-serif; +} + +.widget-enews .widget-title span a { + color: #406098; + font-weight: normal; +} + +.widget-enews .form-box { + border: 1px solid #e9e9e9; + padding: 5px; + background: url(images/bg-search.png) repeat-x; +} + +.widget-enews .field { + border: 1px solid #d9d8d8; + font-size: 11px; + color: #666666; + height: 27px; + line-height: 27px; + padding: 0 10px; + background: url(images/bg-search-inp.png) repeat-x; + float: left; + margin-right: 7px; + width: 180px; +} + +.widget-enews .submit { + border: 1px solid #d9d8d8; + height: 29px; + background: url(images/bg-submit-btn.png) repeat-x ; + cursor: pointer; + color: #666666; + font-weight: bold; + padding: 0 10px; +} + + +/*-- 7.7 WIDGET FLICKR --*/ + +.widget-flickr { + +} + +.widget-flickr .flickr_badge_wrapper { + overflow: hidden; + margin-bottom: -16px; +} + +.widget-flickr .flickr_badge_image { + float: left; + width: 35px; + height: 35px; + margin: 0 17px 16px 0; +} + +.widget-flickr .flickr_badge_image.last { + margin-right: 0; +} + +.widget-flickr .flickr_badge_image:last-child { + margin-right: 0; +} + +.widget-flickr .flickr_badge_image img { + width: 35px; + height: 35px; +} + +.widget-flickr .more-photos { + color: #6f6f6f; + font-weight: bold; + line-height: 27px; + border: 1px solid #dbdada; + padding: 0 11px; + display: inline-block; + margin-top: 6px; + background: url(images/bg-submit-btn.png) repeat-x; +} + +.widget-flickr .more-photos span { + color: #b5cbfa; + font-weight: normal; +} + + +/*-- 7.8 WIDGET GROUPS --*/ + +.widget_bp_groups_widget { + +} + +.widget_bp_groups_widget h3 { + float: left; +} + +.widget_bp_groups_widget .item-options { + float: right; +} + +.widget_bp_groups_widget .item-options a { + color: #777; +} + +.widget_bp_groups_widget .item-options a.selected { + color: #406098; +} + +.widget_bp_groups_widget #groups-list { + clear: both; + margin: 0; + overflow: hidden; + margin-bottom: -15px; +} + +.widget_bp_groups_widget #groups-list li { + list-style: none; + display: inline-block; + float: left; +} + +.widget_bp_groups_widget #groups-list li .item { + display: none; +} + +.widget_bp_groups_widget #groups-list li .item-avatar { + margin: 0 18px 15px 0; +} + +.widget_bp_groups_widget #groups-list li.last .item-avatar { + margin-right: 0; +} + +.widget_bp_groups_widget #groups-list li:last-child .item-avatar { + margin-right: 0 !important; +} + +.widget_bp_groups_widget li:nth-child(6n) .item-avatar { + margin-right: 0 !important; +} + + +/*-- 7.9 WIDGET RECENT POSTS --*/ + +.widget_recent_entries { + +} + +.widget_recent_entries .post { + margin-bottom: 18px; +} + +.widget_recent_entries .post .post-img { + float: left; + margin-right: 15px; +} + +.widget_recent_entries .post h4 { + font-size: 11px; + margin-top: 0; + line-height: 17px; +} + +.widget_recent_entries .post h4 a { + color: #404040; + font-family: "Lucida Grande", "Arial Unicode MS", sans-serif; +} + +.widget_recent_entries .post span, .widget_recent_entries .post span a { + font-size: 10px; + color: #777; + font-style: italic; +} + + + +/*------------------------------------- + 8. FOOTER +-------------------------------------*/ + +#footer { + border-top: 1px solid #e9e9e9; + padding-top: 35px; + color: #777; + background: url(images/bg-footer-shadow.png) center top no-repeat; + overflow: hidden; + margin-bottom: 15px; +} + +#footer ul { + float: right; +} + +#footer li { + float: left; + list-style: none; + margin-left: 30px; +} + +#footer li a { + font-size: 12px; + color: #262626; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: bold; +} + + + +/*------------------------------------- + 9. PAGE TEMPLATES +-------------------------------------*/ + + +/*-- 9.1. ARCHIVES --*/ + + + +/*-- 9.2. FULL WIDTH --*/ + +.page-template-template-full-width-php #main { + width: auto; +} + + +/*-- 9.3. IMAGE GALLERY --*/ + +.page-template-template-image-gallery-php #main { + width: auto; +} + +.page-template-template-image-gallery-php .one_third { + margin-bottom: 35px; +} + + +/*-- 9.4. SIDEBAR LFET --*/ + +.page-template-template-sidebar-left-php #main { + float: right; +} + +.page-template-template-sidebar-left-php #sidebar-page { + float :left; +} + + + +/*-- 9.5. SITEMAP --*/ + + + +/*------------------------------------- + 10. SHORTCODES +-------------------------------------*/ + + +/*-- 10.1. ARCHIVES --*/ + +#main .one_half { width:48%; } +#main .one_third { width:30.66%; } +#main .two_third { width:65.33%; } +#main .one_fourth { width:22%; } +#main .three_fourth { width:74%; } +#main .one_fifth { width:16.8%; } +#main .two_fifth { width:37.6%; } +#main .three_fifth { width:58.4%; } +#main .four_fifth { width:79.2%; } +#main .one_sixth { width:13.33%; } +#main .five_sixth { width:82.67%; } + +#main .one_half, +#main .one_third, +#main .two_third, +#main .three_fourth, +#main .one_fourth, +#main .one_fifth, +#main .two_fifth, +#main .three_fifth, +#main .four_fifth, +#main .one_sixth, +#main .five_sixth { + position: relative; + margin-right: 4%; + float: left; +} + +#main .last { + margin-right: 0 !important; + clear: right; +} + + +/*------------------------------------- + 11. COLOR STYLES +-------------------------------------*/ + +/*-- 11.1. GREEN --*/ + +.green #header { + background: url(images/bg-header-green.png) center bottom; +} + +.green .editfield a, +.green .read-more a, +.green .post .post-content a, +.green .author-info .more-posts a, +.green #comments .to-respond, +.green #comments .comment-reply-link, +.green #respond #cancel-comment-reply-link, +.green .item-list-tabs a.active, +.green .item-list-tabs a.current, +.green .item-list-tabs a.selected, +.green .item-list-tabs .active a, +.green .item-list-tabs .current a, +.green .item-list-tabs .selected a, +.green #item-header #latest-update a, +.green #item-body .item-list-tabs a.active, +.green #item-body .item-list-tabs a.current, +.green #item-body .item-list-tabs a.selected, +.green #item-body .item-list-tabs .active a, +.green #item-body .item-list-tabs .current a, +.green #item-body .item-list-tabs .selected a, +.green #activity-stream .activity-header a, +.green #activity-stream .activity-content a, +.green #activity-stream .activity-meta a, +.green #activity-stream li .activity-comments ul .acomment-meta a, +.green #activity-stream li .activity-comments ul .acomment-options a, +.green #item-body .bp-widget .action a, +.green .messages-notices td a, +.green .messages-options-nav a, +body.green.forums table.forum td .topic-meta a, +.green .group-forum-topic #topic-meta a, +.green .group-forum-topic #topic-post-list li .poster-name a, +.green.groups table.forum td .topic-meta a, +.green .widget_bp_core_members_widget .item-options a.selected, +.green .widget-archive .tabs li a.btn-small, +.green .widget-posts .tabs li a.btn-small, +.green .widget-twitter .widget-title span a, +.green .widget-twitter .tweet_text a, +.green .widget-enews .widget-title span a, +.green .widget_bp_groups_widget .item-options a.selected { + color: #476334; +} + +.green .btn { + background-image: url(images/btn-left-green.png); +} + +.green .btn span { + background-image: url(images/btn-right-green.png); +} + + +/*-- 11.2. ORANGE --*/ + +.orange #header { + background: url(images/bg-header-orange.png) center bottom; +} + +.orange .editfield a, +.orange .read-more a, +.orange .post .post-content a, +.orange .author-info .more-posts a, +.orange #comments .to-respond, +.orange #comments .comment-reply-link, +.orange #respond #cancel-comment-reply-link, +.orange .item-list-tabs a.active, +.orange .item-list-tabs a.current, +.orange .item-list-tabs a.selected, +.orange .item-list-tabs .active a, +.orange .item-list-tabs .current a, +.orange .item-list-tabs .selected a, +.orange #item-header #latest-update a, +.orange #item-body .item-list-tabs a.active, +.orange #item-body .item-list-tabs a.current, +.orange #item-body .item-list-tabs a.selected, +.orange #item-body .item-list-tabs .active a, +.orange #item-body .item-list-tabs .current a, +.orange #item-body .item-list-tabs .selected a, +.orange #activity-stream .activity-header a, +.orange #activity-stream .activity-content a, +.orange #activity-stream .activity-meta a, +.orange #activity-stream li .activity-comments ul .acomment-meta a, +.orange #activity-stream li .activity-comments ul .acomment-options a, +.orange #item-body .bp-widget .action a, +.orange .messages-notices td a, +.orange .messages-options-nav a, +body.orange.forums table.forum td .topic-meta a, +.orange .group-forum-topic #topic-meta a, +.orange .group-forum-topic #topic-post-list li .poster-name a, +.orange.groups table.forum td .topic-meta a, +.orange .widget_bp_core_members_widget .item-options a.selected, +.orange .widget-archive .tabs li a.btn-small, +.orange .widget-posts .tabs li a.btn-small, +.orange .widget-twitter .widget-title span a, +.orange .widget-twitter .tweet_text a, +.orange .widget-enews .widget-title span a, +.orange .widget_bp_groups_widget .item-options a.selected { + color: #d68a46; +} + +.orange .btn { + background-image: url(images/btn-left-orange.png); +} + +.orange .btn span { + background-image: url(images/btn-right-orange.png); +} + + +/*-- 11.3. RED --*/ + +.red #header { + background: url(images/bg-header-red.png) center bottom; +} + +.red .editfield a, +.red .read-more a, +.red .post .post-content a, +.red .author-info .more-posts a, +.red #comments .to-respond, +.red #comments .comment-reply-link, +.red #respond #cancel-comment-reply-link, +.red .item-list-tabs a.active, +.red .item-list-tabs a.current, +.red .item-list-tabs a.selected, +.red .item-list-tabs .active a, +.red .item-list-tabs .current a, +.red .item-list-tabs .selected a, +.red #item-header #latest-update a, +.red #item-body .item-list-tabs a.active, +.red #item-body .item-list-tabs a.current, +.red #item-body .item-list-tabs a.selected, +.red #item-body .item-list-tabs .active a, +.red #item-body .item-list-tabs .current a, +.red #item-body .item-list-tabs .selected a, +.red #activity-stream .activity-header a, +.red #activity-stream .activity-content a, +.red #activity-stream .activity-meta a, +.red #activity-stream li .activity-comments ul .acomment-meta a, +.red #activity-stream li .activity-comments ul .acomment-options a, +.red #item-body .bp-widget .action a, +.red .messages-notices td a, +.red .messages-options-nav a, +body.red.forums table.forum td .topic-meta a, +.red .group-forum-topic #topic-meta a, +.red .group-forum-topic #topic-post-list li .poster-name a, +.red.groups table.forum td .topic-meta a, +.red .widget_bp_core_members_widget .item-options a.selected, +.red .widget-archive .tabs li a.btn-small, +.red .widget-posts .tabs li a.btn-small, +.red .widget-twitter .widget-title span a, +.red .widget-twitter .tweet_text a, +.red .widget-enews .widget-title span a, +.red .widget_bp_groups_widget .item-options a.selected { + color: #c55252; +} + +.red .btn { + background-image: url(images/btn-left-red.png); +} + +.red .btn span { + background-image: url(images/btn-right-red.png); +} + + +/*-- 11.4. BROWN --*/ + +.brown #header { + background: url(images/bg-header-brown.png) center bottom; +} + +.brown .editfield a, +.brown .read-more a, +.brown .post .post-content a, +.brown .author-info .more-posts a, +.brown #comments .to-respond, +.brown #comments .comment-reply-link, +.brown #respond #cancel-comment-reply-link, +.brown .item-list-tabs a.active, +.brown .item-list-tabs a.current, +.brown .item-list-tabs a.selected, +.brown .item-list-tabs .active a, +.brown .item-list-tabs .current a, +.brown .item-list-tabs .selected a, +.brown #item-header #latest-update a, +.brown #item-body .item-list-tabs a.active, +.brown #item-body .item-list-tabs a.current, +.brown #item-body .item-list-tabs a.selected, +.brown #item-body .item-list-tabs .active a, +.brown #item-body .item-list-tabs .current a, +.brown #item-body .item-list-tabs .selected a, +.brown #activity-stream .activity-header a, +.brown #activity-stream .activity-content a, +.brown #activity-stream .activity-meta a, +.brown #activity-stream li .activity-comments ul .acomment-meta a, +.brown #activity-stream li .activity-comments ul .acomment-options a, +.brown #item-body .bp-widget .action a, +.brown .messages-notices td a, +.brown .messages-options-nav a, +body.brown.forums table.forum td .topic-meta a, +.brown .group-forum-topic #topic-meta a, +.brown .group-forum-topic #topic-post-list li .poster-name a, +.brown.groups table.forum td .topic-meta a, +.brown .widget_bp_core_members_widget .item-options a.selected, +.brown .widget-archive .tabs li a.btn-small, +.brown .widget-posts .tabs li a.btn-small, +.brown .widget-twitter .widget-title span a, +.brown .widget-twitter .tweet_text a, +.brown .widget-enews .widget-title span a, +.brown .widget_bp_groups_widget .item-options a.selected { + color: #7d6247; +} + +.brown .btn { + background-image: url(images/btn-left-brown.png); +} + +.brown .btn span { + background-image: url(images/btn-right-brown.png); +} + + +/*-- 11.5. YELLOW --*/ + +.yellow #header { + background: url(images/bg-header-yellow.png) center bottom; +} + +.yellow .editfield a, +.yellow .read-more a, +.yellow .post .post-content a, +.yellow .author-info .more-posts a, +.yellow #comments .to-respond, +.yellow #comments .comment-reply-link, +.yellow #respond #cancel-comment-reply-link, +.yellow .item-list-tabs a.active, +.yellow .item-list-tabs a.current, +.yellow .item-list-tabs a.selected, +.yellow .item-list-tabs .active a, +.yellow .item-list-tabs .current a, +.yellow .item-list-tabs .selected a, +.yellow #item-header #latest-update a, +.yellow #item-body .item-list-tabs a.active, +.yellow #item-body .item-list-tabs a.current, +.yellow #item-body .item-list-tabs a.selected, +.yellow #item-body .item-list-tabs .active a, +.yellow #item-body .item-list-tabs .current a, +.yellow #item-body .item-list-tabs .selected a, +.yellow #activity-stream .activity-header a, +.yellow #activity-stream .activity-content a, +.yellow #activity-stream .activity-meta a, +.yellow #activity-stream li .activity-comments ul .acomment-meta a, +.yellow #activity-stream li .activity-comments ul .acomment-options a, +.yellow #item-body .bp-widget .action a, +.yellow .messages-notices td a, +.yellow .messages-options-nav a, +body.yellow.forums table.forum td .topic-meta a, +.yellow .group-forum-topic #topic-meta a, +.yellow .group-forum-topic #topic-post-list li .poster-name a, +.yellow.groups table.forum td .topic-meta a, +.yellow .widget_bp_core_members_widget .item-options a.selected, +.yellow .widget-archive .tabs li a.btn-small, +.yellow .widget-posts .tabs li a.btn-small, +.yellow .widget-twitter .widget-title span a, +.yellow .widget-twitter .tweet_text a, +.yellow .widget-enews .widget-title span a, +.yellow .widget_bp_groups_widget .item-options a.selected { + color: #dfc25d; +} + +.yellow .btn { + background-image: url(images/btn-left-yellow.png); +} + +.yellow .btn span { + background-image: url(images/btn-right-yellow.png); +} + + +/*-- 11.6. GRAY --*/ + +.gray #header { + background: url(images/bg-header-gray.png) center bottom; +} + +.gray .editfield a, +.gray .read-more a, +.gray .post .post-content a, +.gray .author-info .more-posts a, +.gray #comments .to-respond, +.gray #comments .comment-reply-link, +.gray #respond #cancel-comment-reply-link, +.gray .item-list-tabs a.active, +.gray .item-list-tabs a.current, +.gray .item-list-tabs a.selected, +.gray .item-list-tabs .active a, +.gray .item-list-tabs .current a, +.gray .item-list-tabs .selected a, +.gray #item-header #latest-update a, +.gray #item-body .item-list-tabs a.active, +.gray #item-body .item-list-tabs a.current, +.gray #item-body .item-list-tabs a.selected, +.gray #item-body .item-list-tabs .active a, +.gray #item-body .item-list-tabs .current a, +.gray #item-body .item-list-tabs .selected a, +.gray #activity-stream .activity-header a, +.gray #activity-stream .activity-content a, +.gray #activity-stream .activity-meta a, +.gray #activity-stream li .activity-comments ul .acomment-meta a, +.gray #activity-stream li .activity-comments ul .acomment-options a, +.gray #item-body .bp-widget .action a, +.gray .messages-notices td a, +.gray .messages-options-nav a, +body.gray.forums table.forum td .topic-meta a, +.gray .group-forum-topic #topic-meta a, +.gray .group-forum-topic #topic-post-list li .poster-name a, +.gray.groups table.forum td .topic-meta a, +.gray .widget_bp_core_members_widget .item-options a.selected, +.gray .widget-archive .tabs li a.btn-small, +.gray .widget-posts .tabs li a.btn-small, +.gray .widget-twitter .widget-title span a, +.gray .widget-twitter .tweet_text a, +.gray .widget-enews .widget-title span a, +.gray .widget_bp_groups_widget .item-options a.selected { + color: #adadad; +} + +.gray .btn { + background-image: url(images/btn-left-gray.png); +} + +.gray .btn span { + background-image: url(images/btn-right-gray.png); +} + + +/*-- 11.7. MAGENTO --*/ + +.magento #header { + background: url(images/bg-header-magento.png) center bottom; +} + +.magento .editfield a, +.magento .read-more a, +.magento .post .post-content a, +.magento .author-info .more-posts a, +.magento #comments .to-respond, +.magento #comments .comment-reply-link, +.magento #respond #cancel-comment-reply-link, +.magento .item-list-tabs a.active, +.magento .item-list-tabs a.current, +.magento .item-list-tabs a.selected, +.magento .item-list-tabs .active a, +.magento .item-list-tabs .current a, +.magento .item-list-tabs .selected a, +.magento #item-header #latest-update a, +.magento #item-body .item-list-tabs a.active, +.magento #item-body .item-list-tabs a.current, +.magento #item-body .item-list-tabs a.selected, +.magento #item-body .item-list-tabs .active a, +.magento #item-body .item-list-tabs .current a, +.magento #item-body .item-list-tabs .selected a, +.magento #activity-stream .activity-header a, +.magento #activity-stream .activity-content a, +.magento #activity-stream .activity-meta a, +.magento #activity-stream li .activity-comments ul .acomment-meta a, +.magento #activity-stream li .activity-comments ul .acomment-options a, +.magento #item-body .bp-widget .action a, +.magento .messages-notices td a, +.magento .messages-options-nav a, +body.magento.forums table.forum td .topic-meta a, +.magento .group-forum-topic #topic-meta a, +.magento .group-forum-topic #topic-post-list li .poster-name a, +.magento.groups table.forum td .topic-meta a, +.magento .widget_bp_core_members_widget .item-options a.selected, +.magento .widget-archive .tabs li a.btn-small, +.magento .widget-posts .tabs li a.btn-small, +.magento .widget-twitter .widget-title span a, +.magento .widget-twitter .tweet_text a, +.magento .widget-enews .widget-title span a, +.magento .widget_bp_groups_widget .item-options a.selected { + color: #da72b2; +} + +.magento .btn { + background-image: url(images/btn-left-magento.png); +} + +.magento .btn span { + background-image: url(images/btn-right-magento.png); +} + + +/*-- 11.8. PURPLE --*/ + +.purple #header { + background: url(images/bg-header-purple.png) center bottom; +} + +.purple .editfield a, +.purple .read-more a, +.purple .post .post-content a, +.purple .author-info .more-posts a, +.purple #comments .to-respond, +.purple #comments .comment-reply-link, +.purple #respond #cancel-comment-reply-link, +.purple .item-list-tabs a.active, +.purple .item-list-tabs a.current, +.purple .item-list-tabs a.selected, +.purple .item-list-tabs .active a, +.purple .item-list-tabs .current a, +.purple .item-list-tabs .selected a, +.purple #item-header #latest-update a, +.purple #item-body .item-list-tabs a.active, +.purple #item-body .item-list-tabs a.current, +.purple #item-body .item-list-tabs a.selected, +.purple #item-body .item-list-tabs .active a, +.purple #item-body .item-list-tabs .current a, +.purple #item-body .item-list-tabs .selected a, +.purple #activity-stream .activity-header a, +.purple #activity-stream .activity-content a, +.purple #activity-stream .activity-meta a, +.purple #activity-stream li .activity-comments ul .acomment-meta a, +.purple #activity-stream li .activity-comments ul .acomment-options a, +.purple #item-body .bp-widget .action a, +.purple .messages-notices td a, +.purple .messages-options-nav a, +body.purple.forums table.forum td .topic-meta a, +.purple .group-forum-topic #topic-meta a, +.purple .group-forum-topic #topic-post-list li .poster-name a, +.purple.groups table.forum td .topic-meta a, +.purple .widget_bp_core_members_widget .item-options a.selected, +.purple .widget-archive .tabs li a.btn-small, +.purple .widget-posts .tabs li a.btn-small, +.purple .widget-twitter .widget-title span a, +.purple .widget-twitter .tweet_text a, +.purple .widget-enews .widget-title span a, +.purple .widget_bp_groups_widget .item-options a.selected { + color: #8572a7; +} + +.purple .btn { + background-image: url(images/btn-left-purple.png); +} + +.purple .btn span { + background-image: url(images/btn-right-purple.png); +} + + +/*-- 11.9. CYAN --*/ + +.cyan #header { + background: url(images/bg-header-cyan.png) center bottom; +} + +.cyan .editfield a, +.cyan .read-more a, +.cyan .post .post-content a, +.cyan .author-info .more-posts a, +.cyan #comments .to-respond, +.cyan #comments .comment-reply-link, +.cyan #respond #cancel-comment-reply-link, +.cyan .item-list-tabs a.active, +.cyan .item-list-tabs a.current, +.cyan .item-list-tabs a.selected, +.cyan .item-list-tabs .active a, +.cyan .item-list-tabs .current a, +.cyan .item-list-tabs .selected a, +.cyan #item-header #latest-update a, +.cyan #item-body .item-list-tabs a.active, +.cyan #item-body .item-list-tabs a.current, +.cyan #item-body .item-list-tabs a.selected, +.cyan #item-body .item-list-tabs .active a, +.cyan #item-body .item-list-tabs .current a, +.cyan #item-body .item-list-tabs .selected a, +.cyan #activity-stream .activity-header a, +.cyan #activity-stream .activity-content a, +.cyan #activity-stream .activity-meta a, +.cyan #activity-stream li .activity-comments ul .acomment-meta a, +.cyan #activity-stream li .activity-comments ul .acomment-options a, +.cyan #item-body .bp-widget .action a, +.cyan .messages-notices td a, +.cyan .messages-options-nav a, +body.cyan.forums table.forum td .topic-meta a, +.cyan .group-forum-topic #topic-meta a, +.cyan .group-forum-topic #topic-post-list li .poster-name a, +.cyan.groups table.forum td .topic-meta a, +.cyan .widget_bp_core_members_widget .item-options a.selected, +.cyan .widget-archive .tabs li a.btn-small, +.cyan .widget-posts .tabs li a.btn-small, +.cyan .widget-twitter .widget-title span a, +.cyan .widget-twitter .tweet_text a, +.cyan .widget-enews .widget-title span a, +.cyan .widget_bp_groups_widget .item-options a.selected { + color: #72a0a7; +} + +.cyan .btn { + background-image: url(images/btn-left-cyan.png); +} + +.cyan .btn span { + background-image: url(images/btn-right-cyan.png); +} + + + +/*------------------------------------- + 12. BROWSER HACKS +-------------------------------------*/ + + +/*-- 12.1. IE9 --*/ + +#ie9 .groups #group-topic-count-top { + padding-top: 17px !important; +} + + +/*-- 12.2. IE8 --*/ + +#ie8 #header .fields { + padding-bottom: 1px !important; +} + +#ie8 #header .fields .user-login, +#ie8 #header .fields .user-pass { + line-height: 27px; +} + +#ie8 .groups #group-topic-count-top { + padding-top: 17px !important; +} + +#ie8 #header .fields { + background: url(images/alpha-white-12.png); +} + + +/*-- 12.3. IE7 --*/ + +#ie7 #header .fields { + width: 290px; +} + +#ie7 #header .fields .user-login, +#ie7 #header .fields .user-pass { + line-height: 27px; +} + +#ie7 .clear { + height: 0 !important; +} + +#ie7 .widget-enews .field { + width: 150px; +} + +#ie7 .groups #group-topic-count-top { + padding-top: 17px !important; +} + +#ie7 .sub-menu { + margin-top: 42px !important; + margin-left: -65px !important; +} + +#ie7 #header .fields { + background: url(images/alpha-black-012.png); +} + +#ie7 #header .fields { + background: url(images/alpha-white-12.png); +} + +#ie7 #activity-stream { + margin-top: -40px; +} + + +/*-- 12.4. FIREFOX --*/ + + + + diff --git a/wp-content/themes/huddle/template-archives.php b/wp-content/themes/huddle/template-archives.php new file mode 100644 index 0000000..a8a670b --- /dev/null +++ b/wp-content/themes/huddle/template-archives.php @@ -0,0 +1,46 @@ + + + + +
                      + + + + + +
                      +

                      +
                      + + + + +
                      + +
                      +
                        + + +
                      • + +
                      +
                      +
                        + +
                      +
                      +
                        + +
                      + +
                      +
                      +
                      + + + +
                      + + + + diff --git a/wp-content/themes/huddle/template-full-width.php b/wp-content/themes/huddle/template-full-width.php new file mode 100644 index 0000000..5909985 --- /dev/null +++ b/wp-content/themes/huddle/template-full-width.php @@ -0,0 +1,15 @@ + + + + +
                      + + + + + + + +
                      + + diff --git a/wp-content/themes/huddle/template-homepage.php b/wp-content/themes/huddle/template-homepage.php new file mode 100644 index 0000000..5d88946 --- /dev/null +++ b/wp-content/themes/huddle/template-homepage.php @@ -0,0 +1,47 @@ + + +
                      + +
                      +
                      +

                      +

                      + + +

                      + +
                      +
                      + +
                      + +
                      + <?php echo of_get_option( 'column_1_title' ) ?> +

                      +

                      +
                      + +
                      + <?php echo of_get_option( 'column_2_title' ) ?> +

                      +

                      +
                      + +
                      + <?php echo of_get_option( 'column_3_title' ) ?> +

                      +

                      +
                      + +
                      + +
                      + + + + \ No newline at end of file diff --git a/wp-content/themes/huddle/template-image-gallery.php b/wp-content/themes/huddle/template-image-gallery.php new file mode 100644 index 0000000..0d6d130 --- /dev/null +++ b/wp-content/themes/huddle/template-image-gallery.php @@ -0,0 +1,58 @@ + + + + + +
                      + + + + + +
                      +

                      +
                      + +
                      + + + + + +
                      + + + +
                      + + diff --git a/wp-content/themes/huddle/template-sidebar-left.php b/wp-content/themes/huddle/template-sidebar-left.php new file mode 100644 index 0000000..3674492 --- /dev/null +++ b/wp-content/themes/huddle/template-sidebar-left.php @@ -0,0 +1,19 @@ + + + + + + +
                      + + + + + + + +
                      + + diff --git a/wp-content/themes/huddle/template-sitemap.php b/wp-content/themes/huddle/template-sitemap.php new file mode 100644 index 0000000..dcb657a --- /dev/null +++ b/wp-content/themes/huddle/template-sitemap.php @@ -0,0 +1,44 @@ + + + + +
                      + + + + + +
                      + post_excerpt)) : ?> +

                      + + +
                      + + + + +
                      + +
                      +
                        + +
                      + +
                      +
                        + +
                      + +
                      + +
                      +
                      + + + +
                      + + + + diff --git a/wp-content/themes/huddle/video-slider.php b/wp-content/themes/huddle/video-slider.php new file mode 100644 index 0000000..ad7fd07 --- /dev/null +++ b/wp-content/themes/huddle/video-slider.php @@ -0,0 +1,44 @@ + + array('post'), + 'order' => $slider_order, + 'orderby' => $slider_orderby, + 'posts_per_page' => $theme_slides, + 'category_name' => $category_name, + ); + + query_posts($args); + + if (have_posts()) { + $slide_counter = 0; + $playlist = ''; + + while (have_posts()) { + the_post(); + $slide_counter++; + $playlist .= ' ' . get_the_content(''); + } + + } + ?> + + +
                      + +
                      + + + \ No newline at end of file diff --git a/wp-content/themes/index.php b/wp-content/themes/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/wp-content/themes/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/wp-content/themes/score/404.php b/wp-content/themes/score/404.php new file mode 100644 index 0000000..fb26f37 --- /dev/null +++ b/wp-content/themes/score/404.php @@ -0,0 +1,13 @@ + + +

                      + +
                      + +

                      + +
                      + + + + \ No newline at end of file diff --git a/wp-content/themes/score/activity/activity-loop.php b/wp-content/themes/score/activity/activity-loop.php new file mode 100644 index 0000000..52a5c0e --- /dev/null +++ b/wp-content/themes/score/activity/activity-loop.php @@ -0,0 +1,66 @@ + + + + + + + + + + + +
                        + + + + + + + + + + + +
                      • + +
                      • + + + + + +
                      + + + + + +
                      +

                      +
                      + + + + + +
                      + + + +
                      \ No newline at end of file diff --git a/wp-content/themes/score/activity/comment.php b/wp-content/themes/score/activity/comment.php new file mode 100644 index 0000000..d807ca1 --- /dev/null +++ b/wp-content/themes/score/activity/comment.php @@ -0,0 +1,52 @@ + + + + +
                    • +
                      + + + +
                      + +
                      + %2$s replied %4$s', 'buddypress' ), bp_get_activity_comment_user_link(), bp_get_activity_comment_name(), bp_get_activity_thread_permalink(), bp_get_activity_comment_date_recorded() ); + ?> +
                      + +
                      + +
                      + + + + + + + + + + + + + +
                      + + +
                    • + + diff --git a/wp-content/themes/score/activity/entry.php b/wp-content/themes/score/activity/entry.php new file mode 100644 index 0000000..ed95272 --- /dev/null +++ b/wp-content/themes/score/activity/entry.php @@ -0,0 +1,124 @@ + + + + +
                    • + + +
                      + +
                      + + + +
                      + + + +
                      + +
                      + + + + + +
                      + + + +
                      + + + + + + + +
                      + + + + %s', 'buddypress' ), bp_activity_get_comment_count() ); ?> + + + + + + + + + + + + + + + + + + + + + +
                      + + + +
                      + + + + + +
                      + + + + + +
                      > +
                      +
                      +
                      + +
                      +   + +
                      + + + + + +
                      + + + +
                      + + + + + +
                    • + + diff --git a/wp-content/themes/score/activity/index.php b/wp-content/themes/score/activity/index.php new file mode 100644 index 0000000..9332f7a --- /dev/null +++ b/wp-content/themes/score/activity/index.php @@ -0,0 +1,157 @@ + + + + + + +
                      +
                      + + + + + +

                      + + + + + + + + + + + + + + + + + + + +
                      + + + +
                      + + + + + + + + + +
                      +
                      + + + + + diff --git a/wp-content/themes/score/activity/post-form.php b/wp-content/themes/score/activity/post-form.php new file mode 100644 index 0000000..7bf1880 --- /dev/null +++ b/wp-content/themes/score/activity/post-form.php @@ -0,0 +1,74 @@ + + + diff --git a/wp-content/themes/score/archive.php b/wp-content/themes/score/archive.php new file mode 100644 index 0000000..6384165 --- /dev/null +++ b/wp-content/themes/score/archive.php @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wp-content/themes/score/attachment.php b/wp-content/themes/score/attachment.php new file mode 100644 index 0000000..2187380 --- /dev/null +++ b/wp-content/themes/score/attachment.php @@ -0,0 +1,12 @@ + + +

                      + +
                      + + post_ID, true) ?> + + +
                      + + \ No newline at end of file diff --git a/wp-content/themes/score/author.php b/wp-content/themes/score/author.php new file mode 100644 index 0000000..b591fec --- /dev/null +++ b/wp-content/themes/score/author.php @@ -0,0 +1,158 @@ + + +

                      user_identity; ?>'

                      + +
                      + +
                      + + ID, '60'); ?> + + + + + +
                      + +
                      + +

                      : user_registered)); ?>

                      + + user_url != "" && $curauth->user_url != "http://") { ?>

                      : user_url; ?>

                      + + aim != "") { ?>

                      : aim; ?>

                      + + yim != "") { ?>

                      : yim; ?>

                      + + jabber_google != "") { ?>

                      : jabber_google; ?>

                      + + user_description) { ?>

                      : user_description; ?>

                      + +
                      + + + ID == $user_ID) { ?> + +
                      + +

                      + +
                      + + + + post_status == 'publish') { ?> + +
                      + + + +
                      + + + <?php if(get_post_meta(get_post_thumbnail_id($o), '_wp_attachment_image_alt', true)) { echo get_post_meta(get_post_thumbnail_id($o), '_wp_attachment_image_alt', true); } else { echo $p->post_title; } ?> + +
                      + + + + post_title; ?> + +
                      + + + + + +
                      + +
                      + + + +
                      + +
                      + + + + + + ID.'&showposts=10'); if (have_posts()) : ?> + +
                      + +

                      + +
                      + + + +
                      + + +
                      + + + +
                      + +
                      + + + + + + comments, $wpdb->posts + WHERE user_id = $thisauthor->ID + AND comment_post_id = ID + AND comment_approved = 1 + ORDER BY comment_ID DESC + LIMIT 10"; + $comments_array = $wpdb->get_results($querystr, OBJECT); if ($comments_array): ?> + +
                      + +

                      + +
                      + + + +
                      + comment_ID); ?> + +
                      + + + +
                      + +
                      + + + + +
                      + + + + \ No newline at end of file diff --git a/wp-content/themes/score/blog.php b/wp-content/themes/score/blog.php new file mode 100644 index 0000000..fc46b39 --- /dev/null +++ b/wp-content/themes/score/blog.php @@ -0,0 +1,81 @@ + + +

                      + + +post_content) { ?> + +
                      + + + + + +
                      class="shift-down"> + + + +
                      > + + + +
                      thumbnail-no-wrap"> + + + + <?php if(get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true)) { echo get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true); } else { echo get_the_title(); } ?> + +
                      + + + + +
                      review <= 0 && $user_voting == "Users cannot vote"))) { ?> hidden" style="width: px;"> + +
                      + +

                      + + + + +

                      »

                      + + + + +
                      + + + +
                      + + +
                      + + + + + + + + + +

                      + + + +
                      + + + + \ No newline at end of file diff --git a/wp-content/themes/score/blogs/blogs-loop.php b/wp-content/themes/score/blogs/blogs-loop.php new file mode 100644 index 0000000..d48e3ab --- /dev/null +++ b/wp-content/themes/score/blogs/blogs-loop.php @@ -0,0 +1,95 @@ + + + + + + + + + + +
                        + + + +
                      • +
                        + +
                        + +
                        +
                        +
                        + + +
                        + +
                        + + + +
                        + + + +
                        + +
                        + +
                        +
                      • + + + +
                      + + + + + + + + + +
                      +

                      +
                      + + + + diff --git a/wp-content/themes/score/blogs/create.php b/wp-content/themes/score/blogs/create.php new file mode 100644 index 0000000..0260fd9 --- /dev/null +++ b/wp-content/themes/score/blogs/create.php @@ -0,0 +1,46 @@ + + + + + + +
                      +
                      + + + +

                       

                      + + + + + + + + + +
                      +

                      +
                      + + + + + +
                      +
                      + + + + + + diff --git a/wp-content/themes/score/blogs/index.php b/wp-content/themes/score/blogs/index.php new file mode 100644 index 0000000..e9ed047 --- /dev/null +++ b/wp-content/themes/score/blogs/index.php @@ -0,0 +1,90 @@ + + + + + + +
                      +
                      + + + +
                      + +

                       

                      + + + + + + + + + +
                      + + + +
                      + + + + + + + +
                      + + + +
                      +
                      + + + + + diff --git a/wp-content/themes/score/buddypress/member-header.php b/wp-content/themes/score/buddypress/member-header.php new file mode 100644 index 0000000..9f388d0 --- /dev/null +++ b/wp-content/themes/score/buddypress/member-header.php @@ -0,0 +1,50 @@ + + +
                      +
                      + +
                      + +
                      +
                      + @ + +
                      + + + +
                      + + + +
                      + + + +
                      + + + +
                      + + + +
                      +
                      +
                      \ No newline at end of file diff --git a/wp-content/themes/score/category-dedication.php b/wp-content/themes/score/category-dedication.php new file mode 100644 index 0000000..e849cee --- /dev/null +++ b/wp-content/themes/score/category-dedication.php @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wp-content/themes/score/category.php b/wp-content/themes/score/category.php new file mode 100644 index 0000000..36d011c --- /dev/null +++ b/wp-content/themes/score/category.php @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wp-content/themes/score/comments.php b/wp-content/themes/score/comments.php new file mode 100644 index 0000000..b8254eb --- /dev/null +++ b/wp-content/themes/score/comments.php @@ -0,0 +1,205 @@ + + + + + $post->ID, 'user_id' => $current_user->ID); +$usercomment = get_comments($args); + +function comment_template($comment, $args, $depth) { +$GLOBALS['comment'] = $comment; +global $post, $gp_settings; + +require(ghostpool_inc . 'options.php'); + +?> + +
                    • id="li-comment-"> + +
                      + +
                      + +
                      + +
                      + + + + + + + +
                      + +
                      + , +
                      + + + +
                      + + +
                      + +
                      + + +
                      + +
                      + + comment_approved == '0') { ?> +
                      + +
                      + +
                      + + + + + + + +
                      + + + + +comment_status OR have_comments()) { ?> + +
                      + +

                      + + + + + +
                        + +
                      + + 1) { ?> +
                      + + + comment_status) { // If comments are open, but there are no comments yet ?> + + + + + + + + + + + + comment_status) { ?> + + +
                      = $comment_number) { ?> class="hidden"> + + +
                      + +

                      + + + +

                      + + + +
                      + + +
                      +
                      +
                      + +
                      +
                      + + + + +

                      />

                      + +

                      />

                      + +

                      + + + +

                      + + + + + + ID); ?> + +
                      + + + +
                      + + +
                      + + + + + = $comment_number) { ?> + +
                      + + + + +comment_status OR have_comments()) { ?> +
                      + + \ No newline at end of file diff --git a/wp-content/themes/score/dedication/index.php b/wp-content/themes/score/dedication/index.php new file mode 100644 index 0000000..9332f7a --- /dev/null +++ b/wp-content/themes/score/dedication/index.php @@ -0,0 +1,157 @@ + + + + + + +
                      +
                      + + + + + +

                      + + + + + + + + + + + + + + + + + + + +
                      + + + +
                      + + + + + + + + + +
                      +
                      + + + + + diff --git a/wp-content/themes/score/dedication/new-dedication.php b/wp-content/themes/score/dedication/new-dedication.php new file mode 100644 index 0000000..3711b73 --- /dev/null +++ b/wp-content/themes/score/dedication/new-dedication.php @@ -0,0 +1,92 @@ + +
                      +
                      + +
                      + +

                      +
                      +
                        +
                      • + + + +
                      • +
                      • + + This dedication is private. +
                      • +
                      • + + +
                      • +
                      • + + + +
                      • +
                      • + + +
                      • +
                      + +

                      + +
                      +
                        + +
                      + + +
                      + +
                      +

                      +
                      + + + + +
                        + + + + +
                      • + + +

                        + + + + +
                        + + + +
                        +
                      • + + + +
                      + + + + + +
                      + + + + + +
                      + +
                      + + +
                      \ No newline at end of file diff --git a/wp-content/themes/score/dropdown-filter.php b/wp-content/themes/score/dropdown-filter.php new file mode 100644 index 0000000..9023adf --- /dev/null +++ b/wp-content/themes/score/dropdown-filter.php @@ -0,0 +1,45 @@ + + + \ No newline at end of file diff --git a/wp-content/themes/score/edit-profile.php b/wp-content/themes/score/edit-profile.php new file mode 100644 index 0000000..79d18f1 --- /dev/null +++ b/wp-content/themes/score/edit-profile.php @@ -0,0 +1,153 @@ + $current_user->id, 'user_pass' => esc_attr($_POST['pass1']))); + else + $error = __('The passwords you entered do not match. Your password was not updated.', 'gp_lang'); +} + +/* Update user information. */ + +update_user_meta($current_user->id, 'first_name', esc_attr($_POST['first_name'])); + +update_user_meta($current_user->id, 'last_name', esc_attr($_POST['last_name'])); + +if (!empty($_POST['nickname'])) + update_user_meta($current_user->id, 'nickname', esc_attr($_POST['nickname'])); + +update_user_meta($current_user->id, 'user_identity', esc_attr($_POST['user_identity'])); + +if (!empty($_POST['email'])) + update_user_meta($current_user->id, 'user_email', esc_attr($_POST['email'])); + +if(strpos($_POST['website'], 'ttp://') || empty($_POST['website'])) + update_user_meta($current_user->id, 'user_url', esc_attr($_POST['website'])); +else + update_user_meta($current_user->id, 'user_url', 'http://' . esc_attr($_POST['website'])); + +update_user_meta($current_user->id, 'aim', esc_attr($_POST['aim'])); + +update_user_meta($current_user->id, 'yim', esc_attr($_POST['yim'])); + +update_user_meta($current_user->id, 'jabber', esc_attr($_POST['jabber'])); + +update_user_meta($current_user->id, 'description', esc_attr($_POST['description'])); + +/* Redirect so the page will show updated info. */ +/*if (!$error) { + wp_redirect(get_peramlink()); + exit; +}*/ +} + + +?> + + + + + + + + + ' . $error . '

                      '; ?> + + + + \ No newline at end of file diff --git a/wp-content/themes/score/editor-style.css b/wp-content/themes/score/editor-style.css new file mode 100644 index 0000000..fbeaf4b --- /dev/null +++ b/wp-content/themes/score/editor-style.css @@ -0,0 +1,310 @@ +/* +Used to style the TinyMCE editor. +*/ + +html .mceContentBody { + max-width: 980px; +} +* { + color: inherit; + font: 13px "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: inherit; + font-weight: inherit; + line-height: 1.625; +} +body { + color: #333; + font: 13px "Helvetica Neue", Helvetica, Arial, "Nimbus Sans L", sans-serif; + font-weight: 300; + line-height: 1.625; +} + +/* Headings */ +h1,h2,h3,h4,h5,h6 { + clear: both; +} +h1, +h2 { + color: #000; + font-size: 15px; + font-weight: bold; + margin: 0 0 .8125em; +} +h3 { + font-size: 10px; + letter-spacing: 0.1em; + line-height: 2.6em; + text-transform: uppercase; +} +h4, h5, h6 { + font-size: 14px; + margin: 0; +} +hr { + background-color: #ccc; + border: 0; + height: 1px; + margin-bottom: 1.625em; +} + +/* Text elements */ +p, ul, ol, dl { + font-weight: 300; +} +p { + margin-bottom: 1.625em; +} +ul, ol { + margin: 0 0 1.625em 2.5em; + padding: 0; +} +ul { + list-style: square; +} +ol { + list-style-type: decimal; +} +ol ol { + list-style: upper-alpha; +} +ol ol ol { + list-style: lower-roman; +} +ol ol ol ol { + list-style: lower-alpha; +} +ul ul, ol ol, ul ol, ol ul { + margin-bottom: 0; +} +dl { + margin: 0 1.625em; +} +dt { + font-size: 15px; + font-weight: bold; +} +dd { + margin: 0 0 1.625em; +} +strong { + font-weight: bold; +} +cite, em, i { + font-style: italic; +} +cite { + border: none; +} +big { + font-size: 131.25%; +} +.mceContentBody blockquote, +.mceContentBody blockquote p { + font-family: Georgia, "Bitstream Charter", serif !important; + font-style: italic !important; + font-weight: normal; + margin: 0 3em; +} +.mceContentBody blockquote em, +.mceContentBody blockquote i, +.mceContentBody blockquote cite { + font-style: normal; +} +.mceContentBody blockquote cite { + color: #666; + font: 12px "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 300; + letter-spacing: 0.05em; + text-transform: uppercase; +} +pre { + background: #f4f4f4; + font: 13px "Courier 10 Pitch", Courier, monospace; + line-height: 1.5; + margin-bottom: 1.625em; + padding: 0.75em 1.625em; +} +code, kbd, code var { + font: 13px Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; +} +abbr, acronym, dfn { + border-bottom: 1px dotted #666; + cursor: help; +} +address { + display: block; + margin: 0 0 1.625em; +} +del { + color: #333; +} +ins { + background: #fff9c0; + border: none; + color: #333; + text-decoration: none; +} +sup, +sub { + font-size: 10px; + height: 0; + line-height: 1; + position: relative; + vertical-align: baseline; +} +sup { + bottom: 1ex; +} +sub { + top: .5ex; +} +input[type=text], +textarea { + background: #fafafa; + -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); + box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); + border: 1px solid #ddd; + color: #888; +} +input[type=text]:focus, +textarea:focus { + color: #333; +} +textarea { + padding-left: 3px; + width: 98%; +} +input[type=text] { + padding: 3px; +} + +/* Links */ +a, +a em, +a strong { + color: #1b8be0; + text-decoration: none; +} +a:focus, +a:active, +a:hover { + text-decoration: underline; +} + +/* Alignment */ +.alignleft { + display: inline; + float: left; + margin-right: 1.625em; +} +.alignright { + display: inline; + float: right; + margin-left: 1.625em; +} +.aligncenter { + clear: both; + display: block; + margin-left: auto; + margin-right: auto; +} + +/* Tables */ +table { + border: none !important; + border-bottom: 1px solid #ddd !important; + border-collapse: collapse; + border-spacing: 0; + text-align: left; + margin: 0 0 1.625em; + width: 100%; +} +tr th { + border: none !important; + color: #666; + font-size: 10px; + font-weight: 500; + letter-spacing: 0.1em; + line-height: 2.6em; + text-transform: uppercase; +} +td { + border: none !important; + border-top: 1px solid #ddd !important; + padding: 6px 10px 6px 0; +} + +/* Images */ +img[class*="wp-image-"] { + height: auto; + max-width: 97.5%; +} +img.size-full { + width: auto; /* Prevent stretching of full-size images in IE8 */ +} +img.wp-smiley { + border: none; + margin-bottom: 0; + margin-top: 0; + padding: 0; +} +p img, +.wp-caption { + margin-top: 0.4em; +} +img { + border: 1px solid #ddd; + padding: 6px; +} +img.alignleft, +img.alignright, +img.aligncenter { + margin-bottom: 1.625em; +} +.wp-caption { + background: #eee; + border: none; + margin-bottom: 1.625em; + max-width: 96%; + padding: 9px; +} +.wp-caption img { + display: block; + margin: 5px auto 0 !important; + max-width: 98%; + border-color: #eee; +} +.wp-caption .wp-caption-text, +.wp-caption-dd { + color: #666; + font-family: Georgia, serif !important; + font-size: 12px; + margin: 0 0 0.6em 0 !important; + padding: 0 0 5px 40px; + position: relative; + text-align: left; +} +.wp-caption .wp-caption-text:before { + color: #666; + content: '\2014'; + font-size: 14px; + font-style: normal; + font-weight: bold; + margin-right: 5px; + position: absolute; + left: 10px; + top: 7px; +} +a:focus img[class*="wp-image-"], +a:hover img[class*="wp-image-"], +a:active img[class*="wp-image-"] { + background: #eee; + border-color: #bbb; +} +.wp-caption a:focus img, +.wp-caption a:active img, +.wp-caption a:hover img { + background: #fff; + border-color: #ddd; +} \ No newline at end of file diff --git a/wp-content/themes/score/footer.php b/wp-content/themes/score/footer.php new file mode 100644 index 0000000..8abf032 --- /dev/null +++ b/wp-content/themes/score/footer.php @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + +
                      + + + + + + + +
                      + + + + + \ No newline at end of file diff --git a/wp-content/themes/score/forums/forums-loop.php b/wp-content/themes/score/forums/forums-loop.php new file mode 100644 index 0000000..0aa9c45 --- /dev/null +++ b/wp-content/themes/score/forums/forums-loop.php @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + + + + + + +

                      + + + + + + + ' . bp_get_the_topic_object_avatar( 'type=thumb&width=20&height=20' ) . '' . + '' . bp_get_the_topic_object_name() .''; + + /* translators: "started by [poster] in [forum]" */ + printf( __( 'in %1$s', 'buddypress' ), $topic_in ); + ?> + + + + + +

                      +
                      + + + +

                      + + + + +

                      +
                      + + + + + + + +
                      +

                      +
                      + + + + diff --git a/wp-content/themes/score/forums/index.php b/wp-content/themes/score/forums/index.php new file mode 100644 index 0000000..19a1f5a --- /dev/null +++ b/wp-content/themes/score/forums/index.php @@ -0,0 +1,164 @@ + + + + + + +
                      +
                      + + + +
                      + +

                       

                      + + + + +
                      + + + +
                      + + + + + +
                      + + + +
                      + + + + + +
                      + + + + + +
                      + + + + + +
                      + + + + +
                      + + + + + + + + + + + + + + + + + +
                      + + +
                      + + + +
                      + + + +
                      + +

                      create a new group? Once you have joined or created the group you can post your topic in that group's forum.", 'buddypress' ), site_url( bp_get_groups_root_slug() . '/create/' ) ) ?>

                      + +
                      + + + + +
                      + + + + + +
                      +
                      + + + + + diff --git a/wp-content/themes/score/forums/single/edit.php b/wp-content/themes/score/forums/single/edit.php new file mode 100644 index 0000000..91594cb --- /dev/null +++ b/wp-content/themes/score/forums/single/edit.php @@ -0,0 +1,93 @@ + + + + +
                      + + + +
                      +

                      ()

                      + + + + + + + + + +
                      + + + + + +
                      + + + + + + + + + + + +

                      + + + +
                      + + + +
                      + + + + + + + +

                      + + + +
                      + + + + + +
                      + + + +
                      +

                      +
                      + + + + diff --git a/wp-content/themes/score/forums/single/forum-header.php b/wp-content/themes/score/forums/single/forum-header.php new file mode 100644 index 0000000..98c7299 --- /dev/null +++ b/wp-content/themes/score/forums/single/forum-header.php @@ -0,0 +1,35 @@ + + + + +
                      +

                      + + + + +
                      + + + +
                      + + + +
                      + + + +
                      +
                      + + \ No newline at end of file diff --git a/wp-content/themes/score/forums/single/forum.php b/wp-content/themes/score/forums/single/forum.php new file mode 100644 index 0000000..8ea457f --- /dev/null +++ b/wp-content/themes/score/forums/single/forum.php @@ -0,0 +1,65 @@ + + +
                      +
                      + + + + + +
                      + +
                      + +
                      + +
                      + + + +
                      + + + +
                      +
                      +
                      + + + + + \ No newline at end of file diff --git a/wp-content/themes/score/forums/single/topic.php b/wp-content/themes/score/forums/single/topic.php new file mode 100644 index 0000000..e9fdffc --- /dev/null +++ b/wp-content/themes/score/forums/single/topic.php @@ -0,0 +1,197 @@ + + +
                      +
                      + + + + + + + +
                      + +
                      + +
                      + + + +
                      + + + +
                      +

                      ()

                      + + + + + + + + + +
                      + + + + + +
                        + + +
                      • +
                        + + + + + + + + +
                        + +
                        + + + +
                        + + +
                      • + + +
                      + + + + + + + + + + + +
                      +

                      + + + +

                      + + + +
                      + +
                      + + + + +
                      + + + +
                      +

                      +
                      + + + + + + + +
                      +
                      + + + +
                      +

                      +
                      + + + +
                      +
                      + + + + + \ No newline at end of file diff --git a/wp-content/themes/score/functions.php b/wp-content/themes/score/functions.php new file mode 100644 index 0000000..1da81d5 --- /dev/null +++ b/wp-content/themes/score/functions.php @@ -0,0 +1,524 @@ +'; +} + +function gp_get_the_flag($userid, $flagsize=32) { + if ($userid) { + if (bp_has_profile('user_id=' . $userid)) { + while (bp_profile_groups()) { + bp_the_profile_group(); + while (bp_profile_fields()) { + bp_the_profile_field(); + if (bp_field_has_data()) { + $fieldname = strip_tags(bp_get_the_profile_field_name()); + if ($fieldname == 'Country') { + $value = strip_tags(bp_get_the_profile_field_value(), ''); + $value = str_replace('/flags/32/', '/flags/'.$flagsize.'/', $value); + if ($value == '') { + return gp_get_flag_img('', $flagsize); // Bandera desconocida + } else { + return $value; + } + } + } + } + } + } + } else { + return gp_get_flag_img('', $flagsize); // Bandera desconocida + } +} + + +function gp_the_flag($userid, $flagsize=32) { + echo gp_get_the_flag($userid, $flagsize); +} + +/* * ************************* Enqueue Styles ************************** */ + +function gp_enqueue_styles() { + if (!is_admin()) { + + global $post; + require(ghostpool_inc . 'options.php'); + + wp_enqueue_style('reset', get_template_directory_uri() . '/lib/css/reset.css'); + + wp_enqueue_style('style', get_template_directory_uri() . '/style.css'); + + wp_enqueue_style('prettyphoto', get_template_directory_uri() . '/lib/scripts/prettyPhoto/css/prettyPhoto.css'); + + wp_enqueue_style('videoslider', get_template_directory_uri() . '/lib/scripts/videoslider/css/videoGallery.css'); + + if (isset($_COOKIE['SkinCookie'])) { + $skin = $_COOKIE['SkinCookie']; + } + + if (isset($_GET['skin'])) { + $skin = $_GET['skin']; + setcookie('SkinCookie', $skin); + } + + if ($_GET['skin'] == "default") { + $skin = $theme_skin; + setcookie('SkinCookie', $skin, time() - 3600); + } + + if (isset($_GET['skin']) OR (isset($_COOKIE['SkinCookie']) && $_COOKIE['SkinCookie'] != "default")) { + + wp_enqueue_style('style-skin', get_template_directory_uri() . '/style-' . $skin . '.css'); + } else { + + if ((is_singular() && !is_attachment() && !is_404()) && (get_post_meta($post->ID, 'ghostpool_skin', true) && get_post_meta($post->ID, 'ghostpool_skin', true) != "Default")) { + + wp_enqueue_style('style-skin', get_template_directory_uri() . '/style-' . get_post_meta($post->ID, 'ghostpool_skin', true) . '.css'); + } else { + + wp_enqueue_style('style-skin', get_template_directory_uri() . '/style-' . $theme_skin . '.css'); + } + } + + if ($theme_custom_stylesheet) { + + wp_enqueue_style('style-theme-custom', get_template_directory_uri() . '/' . $theme_custom_stylesheet); + } + + if ((is_single() OR is_page()) && get_post_meta($post->ID, 'ghostpool_custom_stylesheet', true)) { + + wp_enqueue_style('style-custom', get_template_directory_uri() . '/' . get_post_meta($post->ID, 'ghostpool_custom_stylesheet', true)); + } + } +} + +add_action('wp_print_styles', 'gp_enqueue_styles'); + + +/* * ************************* Enqueue Scripts ************************** */ + +function gp_enqueue_scripts() { + if (!is_admin()) { + + wp_enqueue_script('jquery'); + //wp_enqueue_script('jqueryui'); + + wp_enqueue_script('jqueryui', 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js', array('jquery')); + + if (is_singular()) + wp_enqueue_script('comment-reply'); + + wp_enqueue_script('swfobject', 'http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js'); + + wp_enqueue_script('jwplayer', get_template_directory_uri() . '/lib/scripts/mediaplayer/jwplayer.js', array('jquery')); + + //wp_enqueue_script('carousel', get_template_directory_uri().'/lib/scripts/jquery.carouFredSel.js', array('jquery')); + + wp_enqueue_script('prettyphoto', get_template_directory_uri() . '/lib/scripts/prettyPhoto/js/jquery.prettyPhoto.js', array('jquery')); + + wp_enqueue_script('jqtransform', get_template_directory_uri() . '/lib/scripts/jquery.jqtransform.js', array('jquery')); + + wp_enqueue_script('jqueryeasing', get_template_directory_uri() . '/lib/scripts/videoslider/js/jquery.easing.1.3.js', array('jquery')); + + wp_enqueue_script('froogaloop', get_template_directory_uri() . '/lib/scripts/videoslider/js/froogaloop.min.js', array('jquery')); + wp_enqueue_script('apPlaylistManager', get_template_directory_uri() . '/lib/scripts/videoslider/js/jquery.apPlaylistManager.min.js', array('jquery')); + wp_enqueue_script('apYoutubePlayer', get_template_directory_uri() . '/lib/scripts/videoslider/js/jquery.apYoutubePlayer.js', array('jquery')); + wp_enqueue_script('apVimeoPlayer', get_template_directory_uri() . '/lib/scripts/videoslider/js/jquery.apVimeoPlayer.js', array('jquery')); + //wp_enqueue_script('videoGallery', get_template_directory_uri().'/lib/scripts/videoslider/js/jquery.videoGallery.min.js', array('jquery')); + wp_enqueue_script('videoGallery', get_template_directory_uri() . '/lib/scripts/videoslider/js/jquery.videoGallery.js', array('jquery')); + wp_enqueue_script('mousewheel', get_template_directory_uri() . '/lib/scripts/videoslider/js/jquery.mousewheel.js', array('jquery')); + //wp_enqueue_script('sharrre', get_template_directory_uri() . '/lib/scripts/videoslider/js/jquery.sharrre-1.3.0.min.js', array('jquery')); + } +} + +add_action('wp_print_scripts', 'gp_enqueue_scripts'); + + +/* * ************************* WP Header Hooks ************************** */ + +function gp_font_head() { + require(ghostpool_inc . 'options.php'); + + $fonts = array( + 'Bad+Script' => "font-family: 'Bad Script', sans-serif;", + 'Give+You+Glory' => "font-family: 'Give You Glory', sans-serif;", + 'Handlee' => "font-family: 'Handlee', sans-serif;", + 'Indie+Flower' => "font-family: 'Indie Flower', sans-serif;", + 'Patrick+Hand' => "font-family: 'Patrick Hand', sans-serif;", + 'Shadows+Into+Light' => "font-family: 'Shadows Into Light', sans-serif;", + 'Shadows+Into+Light+Two' => "font-family: 'Shadows Into Light Two', sans-serif;", + ); + + $body_key = 'Bad+Script'; + + if (isset($theme_font_dedication)) + $body_key = $theme_font_dedication; + + if (isset($fonts[$body_key])) { + $body_font = $fonts[$body_key]; + + wp_enqueue_style('googleFonts', 'http://fonts.googleapis.com/css?family=' . $theme_font_dedication); + echo ''; + } +} + +function gp_wp_header() { + + require(ghostpool_inc . 'options.php'); + + if ($theme_favicon_ico) + echo ''; + + if ($theme_favicon_png) + echo ''; + + if ($theme_apple_icon) + echo ''; + + + if ($theme_custom_css) + echo ''; + + echo stripslashes($theme_scripts); + + echo ' + '; + + gp_font_head(); +} + +add_action('wp_head', 'gp_wp_header'); + + +/* * ************************* Featured Image Sizes ************************** */ + +add_theme_support('post-thumbnails'); +set_post_thumbnail_size(150, 150, true); + + +/* * ************************* bbPress Support ************************** */ + +if (is_admin()) { + add_theme_support('bbpress'); +} + + +/* * ************************* Navigation Menus ************************** */ + +add_action('init', 'register_my_menus'); + +function register_my_menus() { + register_nav_menus(array( + 'header-nav' => __('Header Navigation', 'gp_lang') + )); +} + +/* * ************************* Dedication category ********************* */ + +add_action('init', 'register_dedication_category'); +function register_dedication_category() { + + if (!get_category_by_slug(DEDICATION_CATEGORY_SLUG)) { + $cat = array( + 'cat_name' => 'Dedication', + 'category_nicename' => DEDICATION_CATEGORY_SLUG); + + wp_insert_category($cat); + } +} + + +/* * ************************* Other Features ************************** */ + +// Add support for custom backgrounds +add_custom_background(); + +// This theme styles the visual editor with editor-style.css to match the theme style. +add_editor_style(); + +// Set the content width based on the theme's design and stylesheet. +if (!isset($content_width)) + $content_width = 590; + +// Add default posts and comments RSS feed links to . +add_theme_support('automatic-feed-links'); + + +function remove_private_prefix($title) { + $title = str_replace( + 'Private:', '', $title); + return $title; +} + +add_filter('the_title', 'remove_private_prefix'); + +/* * ************************* Excerpts ************************** */ + +// Excerpt Length +function new_excerpt_length($length) { + return 500; +} + +add_filter('excerpt_length', 'new_excerpt_length'); + +function excerpt($limit) { + $excerpt = explode(' ', get_the_excerpt(), $limit); + if (count($excerpt) >= $limit) { + array_pop($excerpt); + $excerpt = implode(" ", $excerpt) . '...'; + } else { + $excerpt = implode(" ", $excerpt); + } + $excerpt = preg_replace('`\[[^\]]*\]`', '', $excerpt); + return $excerpt; +} + +// Replace excerpt ellipsis +function new_excerpt_more($more) { + return '...'; +} + +add_filter('excerpt_more', 'new_excerpt_more'); +remove_filter('the_excerpt', 'wpautop'); + + +/* * ************************* Add Excerpt Support To Pages ************************** */ + +add_action('init', 'my_add_excerpts_to_pages'); + +function my_add_excerpts_to_pages() { + add_post_type_support('page', 'excerpt'); +} + +/* * ************************* Shortcode Support For Text Widget ************************** */ + +add_filter('widget_text', 'do_shortcode'); + + +/* * ************************* Page Navigation ************************** */ + +function gp_pagination($pages = '', $range = 2) { + $showitems = ($range * 2) + 1; + + global $paged; + + if (get_query_var('paged')) { + $paged = get_query_var('paged'); + } elseif (get_query_var('page')) { + $paged = get_query_var('page'); + } else { + $paged = 1; + } + + if ($pages == '') { + global $wp_query; + $pages = $wp_query->max_num_pages; + if (!$pages) { + $pages = 1; + } + } + + if (1 != $pages) { + echo "
                      "; + echo '' . __('Page', 'gp_lang') . ' ' . $paged . ' ' . __('of', 'gp_lang') . ' ' . $pages . ''; + if ($paged > 2 && $paged > $range + 1 && $showitems < $pages) + echo "«"; + if ($paged > 1 && $showitems < $pages) + echo ""; + + for ($i = 1; $i <= $pages; $i++) { + if (1 != $pages && (!($i >= $paged + $range + 1 || $i <= $paged - $range - 1) || $pages <= $showitems )) { + echo ($paged == $i) ? "" . $i . "" : "" . $i . ""; + } + } + + if ($paged < $pages && $showitems < $pages) + echo ""; + if ($paged < $pages - 1 && $paged + $range - 1 < $pages && $showitems < $pages) + echo "»"; + echo "
                      \n"; + } +} + +/* * ************************* Posts Per Page Fix ************************** */ + +function gp_posts_per_page($query_string) { + + require(ghostpool_inc . 'options.php'); + + if (!is_admin()) { + if ($page_var == "homepage") { + $query_string['posts_per_page'] = $theme_homepage_posts_per_page; + } elseif (is_page_template('blog.php')) { + $query_string['posts_per_page'] = $theme_blog_posts_per_page; + } else { + $query_string['posts_per_page'] = $theme_cat_posts_per_page; + } + } + return $query_string; +} + +add_filter('request', 'gp_posts_per_page'); + + +/* * ************************* Search Criteria ************************** */ + +function SearchFilter($query) { + + require(ghostpool_inc . 'options.php'); + + if (!is_admin()) { + if ($query->is_search) { + if ($theme_search_criteria == "Review Posts Only") { + $query->set('meta_key', 'ghostpool_post_type'); + $query->set('meta_value', 'Review'); + } elseif ($theme_search_criteria == "All Posts") { + $query->set('post_type', 'post'); + } + } + return $query; + } +} + +add_filter('pre_get_posts', 'SearchFilter'); + + +/* * ************************* Shortcode Empty Paragraph Fix ************************** */ + +// Plugin URI: http://www.johannheyne.de/wordpress/shortcode-empty-paragraph-fix/ +add_filter('the_content', 'shortcode_empty_paragraph_fix'); + +function shortcode_empty_paragraph_fix($content) { + $array = array( + '

                      [' => '[', + ']

                      ' => ']', + ']
                      ' => ']' + ); + + $content = strtr($content, $array); + + return $content; +} + +/* * ************************* Custom Media Gallery Field ************************** */ + +function ghostpool_attachment_fields_to_edit($form_fields, $post) { + $form_fields["ghostpool_video_url"] = array( + "label" => __('Audio/Video URL', 'gp_lang'), + "input" => "text", + "value" => get_post_meta($post->ID, "_ghostpool_video_url", true), + "helps" => __('The URL of your video or audio file (YouTube/Vimeo/FLV/MP4/M4V/MP3).', 'gp_lang'), + ); + return $form_fields; +} + +add_filter("attachment_fields_to_edit", "ghostpool_attachment_fields_to_edit", null, 2); + +function ghostpool_attachment_fields_to_save($post, $attachment) { + if (isset($attachment['ghostpool_video_url'])) { + update_post_meta($post['ID'], '_ghostpool_video_url', $attachment['ghostpool_video_url']); + } + return $post; +} + +add_filter("attachment_fields_to_save", "ghostpool_attachment_fields_to_save", null, 2); + + +/* * ************************* Redirect to Theme Options after Activation ************************** */ + +if (is_admin() && isset($_GET['activated']) && $pagenow == "themes.php") { + add_action('admin_head', 'ct_option_setup'); + header('Location: ' . admin_url() . 'themes.php?page=theme-options.php'); +} +?> \ No newline at end of file diff --git a/wp-content/themes/score/groups/create.php b/wp-content/themes/score/groups/create.php new file mode 100644 index 0000000..84cefe5 --- /dev/null +++ b/wp-content/themes/score/groups/create.php @@ -0,0 +1,318 @@ + + + + +
                      +
                      + +
                      +

                       

                      + + + + + + + +
                      + + + + + + + + + + + + + + + + + + + + + + + + +
                      + +
                      + + + + +
                      + +
                      + + + + + +
                      + +

                      + +
                      + + + + + +
                      + +
                      + +

                      + +

                      + +
                      + + + + + +
                      + +
                      + + + + + + + + + + + + + + +
                      + + + +
                      + +
                      +

                      + +

                      + + + +

                      + +

                      +
                      + + + + + +

                      + + <?php _e( 'Avatar to crop', 'buddypress' ); ?> + +
                      + <?php _e( 'Avatar preview', 'buddypress' ); ?> +
                      + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + +
                      +
                        + +
                      + + +
                      + +
                      + +
                      + +
                      +

                      +
                      + + +
                        + + + + + +
                      • + + + +

                        + + +
                        + +
                        +
                      • + + + + + + + +
                      + +
                      + + + +
                      +

                      +
                      + + + + + + + + + + + + + + + +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + + + + + + + + + + +
                      + + + +
                      + +
                      +
                      + + + diff --git a/wp-content/themes/score/groups/groups-loop.php b/wp-content/themes/score/groups/groups-loop.php new file mode 100644 index 0000000..e23a3c8 --- /dev/null +++ b/wp-content/themes/score/groups/groups-loop.php @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + +
                      +

                      +
                      + + + + diff --git a/wp-content/themes/score/groups/index.php b/wp-content/themes/score/groups/index.php new file mode 100644 index 0000000..7da62e9 --- /dev/null +++ b/wp-content/themes/score/groups/index.php @@ -0,0 +1,94 @@ + + + + + + +
                      +
                      + + + +
                      + +

                       

                      + + + + + + + + + + + +
                      + + + +
                      + + + + + + + +
                      + + + +
                      +
                      + + + + + + diff --git a/wp-content/themes/score/groups/single/activity.php b/wp-content/themes/score/groups/single/activity.php new file mode 100644 index 0000000..57f30c7 --- /dev/null +++ b/wp-content/themes/score/groups/single/activity.php @@ -0,0 +1,39 @@ + + + + + + + + + + + +
                      + +
                      + + diff --git a/wp-content/themes/score/groups/single/admin.php b/wp-content/themes/score/groups/single/admin.php new file mode 100644 index 0000000..83e5571 --- /dev/null +++ b/wp-content/themes/score/groups/single/admin.php @@ -0,0 +1,373 @@ + + +
                      + + + + + + + + + + + + + + + + +

                      + +   +   +

                      + + + +

                      + + + + + + + + + + + + + +
                      + +
                      + +
                      + + + + + +

                      + +
                      + + + + + +
                      + +
                      + +

                      + +

                      + +
                      + + + + + +
                      + +
                      + + + +

                      + + + + + + + + + +

                      + +

                      + + + +

                      + + + +

                      + + 'delete_group_avatar', 'component' => 'groups', 'wrapper_id' => 'delete-group-avatar-button', 'link_class' => 'edit', 'link_href' => bp_get_group_avatar_delete_link(), 'link_title' => __( 'Delete Avatar', 'buddypress' ), 'link_text' => __( 'Delete Avatar', 'buddypress' ) ) ); ?> + + + + + + + + + +

                      + + <?php _e( 'Avatar to crop', 'buddypress' ) ?> + +
                      + <?php _e( 'Avatar preview', 'buddypress' ) ?> +
                      + + + + + + + + + + + + + + + + + + + + +
                      +

                      + + + +
                        + + +
                      • + bp_get_member_user_id(), 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ?> +
                        + + + + +
                        +
                      • + + +
                      + + + +
                      + + +
                      +

                      + + +
                        + + +
                      • + bp_get_member_user_id(), 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => __( 'Profile picture of %s', 'buddypress' ) ) ) ?> +
                        + + + + + +
                        +
                      • + + +
                      + + +
                      + + + +
                      +

                      + + + + + + + + + +
                        + + +
                      • + + +
                        + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                      • + + +
                      + + + +
                      +

                      +
                      + + + +
                      + + + + + + + + + + + + +
                        + + +
                      • + +

                        + + + + +
                        + + 'group_membership_accept', 'component' => 'groups', 'wrapper_class' => 'accept', 'link_href' => bp_get_group_request_accept_link(), 'link_title' => __( 'Accept', 'buddypress' ), 'link_text' => __( 'Accept', 'buddypress' ) ) ); ?> + + 'group_membership_reject', 'component' => 'groups', 'wrapper_class' => 'reject', 'link_href' => bp_get_group_request_reject_link(), 'link_title' => __( 'Reject', 'buddypress' ), 'link_text' => __( 'Reject', 'buddypress' ) ) ); ?> + + + +
                        +
                      • + + +
                      + + + +
                      +

                      +
                      + + + + + + + + + + + + + + +
                      +

                      +
                      + + + + + +
                      + +
                      + + + + + + + + + + + + +
                      + diff --git a/wp-content/themes/score/groups/single/forum.php b/wp-content/themes/score/groups/single/forum.php new file mode 100644 index 0000000..f376e28 --- /dev/null +++ b/wp-content/themes/score/groups/single/forum.php @@ -0,0 +1,97 @@ + + + + +
                      + + + +
                      + + + + + + + + + +
                      +
                      + + + + +

                      + + +

                      +

                      + + + + + + + + + + + + +
                      + +
                      + + +
                      +
                      + + + + + diff --git a/wp-content/themes/score/groups/single/forum/edit.php b/wp-content/themes/score/groups/single/forum/edit.php new file mode 100644 index 0000000..1db8ca2 --- /dev/null +++ b/wp-content/themes/score/groups/single/forum/edit.php @@ -0,0 +1,96 @@ + + + + +
                      + + + +
                      +

                      ()

                      + + + + + + + + + +
                      + + + + + +
                      + + + + + + + + + + + + + + +

                      + + + +
                      + + + +
                      + + + + + + + +

                      + + + +
                      + + + + + +
                      + + + +
                      +

                      +
                      + + + + diff --git a/wp-content/themes/score/groups/single/forum/topic.php b/wp-content/themes/score/groups/single/forum/topic.php new file mode 100644 index 0000000..14b7f0b --- /dev/null +++ b/wp-content/themes/score/groups/single/forum/topic.php @@ -0,0 +1,166 @@ + + + + +
                      + + + +
                      +

                      ()

                      + + + +
                      + + + +
                      + + + + + + + + + + + +
                      + + + + + +
                        + + +
                      • +
                        + + + + +
                        + +
                        + +
                        + + +
                      • + + +
                      + + + + + + + + + + + +
                      +

                      + + +

                      + + + + +

                      + + + +
                      + +
                      + + + + +
                      + + + +
                      +

                      +
                      + + + + + + + +
                      + + + +
                      +

                      +
                      + + + + diff --git a/wp-content/themes/score/groups/single/group-header.php b/wp-content/themes/score/groups/single/group-header.php new file mode 100644 index 0000000..7d7263c --- /dev/null +++ b/wp-content/themes/score/groups/single/group-header.php @@ -0,0 +1,64 @@ + + +
                      + + + +

                      + + + +

                      + + + +
                      + + + +
                      +

                      + + + + +
                      + + + +
                      + + + +
                      + + + +
                      +
                      + + \ No newline at end of file diff --git a/wp-content/themes/score/groups/single/home.php b/wp-content/themes/score/groups/single/home.php new file mode 100644 index 0000000..b02d55c --- /dev/null +++ b/wp-content/themes/score/groups/single/home.php @@ -0,0 +1,82 @@ + + +
                      +
                      + + + + + + + +
                      + +
                      + +
                      + + + +
                      +

                      +
                      + + + +
                      + + + + + +
                      +
                      + + + diff --git a/wp-content/themes/score/groups/single/members.php b/wp-content/themes/score/groups/single/members.php new file mode 100644 index 0000000..3d9c7f5 --- /dev/null +++ b/wp-content/themes/score/groups/single/members.php @@ -0,0 +1,90 @@ + + + + + + + + + + +
                        + + + +
                      • + + + + + + +
                        + + + + + + +
                        + + + + + +
                        + + +
                      • + + + +
                      + + + + + + + + + +
                      +

                      +
                      + + diff --git a/wp-content/themes/score/groups/single/plugins.php b/wp-content/themes/score/groups/single/plugins.php new file mode 100644 index 0000000..5579b34 --- /dev/null +++ b/wp-content/themes/score/groups/single/plugins.php @@ -0,0 +1,41 @@ + + +
                      +
                      + + + + +
                      + +
                      + +
                      + +
                      + +
                      + + + + + + +
                      + + + + + +
                      +
                      + + + + \ No newline at end of file diff --git a/wp-content/themes/score/groups/single/request-membership.php b/wp-content/themes/score/groups/single/request-membership.php new file mode 100644 index 0000000..55b548d --- /dev/null +++ b/wp-content/themes/score/groups/single/request-membership.php @@ -0,0 +1,18 @@ + + + +

                      + +
                      + + + + + +

                      + + +

                      + + + diff --git a/wp-content/themes/score/groups/single/send-invites.php b/wp-content/themes/score/groups/single/send-invites.php new file mode 100644 index 0000000..c6562e3 --- /dev/null +++ b/wp-content/themes/score/groups/single/send-invites.php @@ -0,0 +1,78 @@ + + + + +
                      + +
                      + +
                      +
                        + +
                      + + +
                      + +
                      + +
                      + +
                      +

                      +
                      + + + + +
                        + + + + +
                      • + + +

                        + + + + +
                        + + + +
                        +
                      • + + + + +
                      + + + +
                      + +
                      + +
                      + +
                      + + + + + + +
                      + + + +
                      +

                      +
                      + + + + diff --git a/wp-content/themes/score/header.php b/wp-content/themes/score/header.php new file mode 100644 index 0000000..136aeee --- /dev/null +++ b/wp-content/themes/score/header.php @@ -0,0 +1,116 @@ + + class="no-js"> + + /> +<?php bloginfo('name'); ?> | <?php is_home() || is_front_page() ? bloginfo('description') : wp_title(''); ?> + + + + + + + + + + + + + + +> + + + + + +
                      + + +
                      + + + + + + + +
                      +
                       
                      + +
                      +
                      + + + + + + + + + +
                      \ No newline at end of file diff --git a/wp-content/themes/score/home-comments.php b/wp-content/themes/score/home-comments.php new file mode 100644 index 0000000..b337982 --- /dev/null +++ b/wp-content/themes/score/home-comments.php @@ -0,0 +1,72 @@ + + + + + + +
                      +

                      + + 2) : ?> + / » + +

                      +
                        + + +
                      1. id="li-comment-"> +
                        +
                        + +
                        + +
                        + + + + +
                        +
                        + , +
                        +
                        +
                        +
                        + + comment_approved == '0') { ?> +
                        + +
                        + +
                        +
                        +
                      2. + + +
                      +
                      + + +   + + + + diff --git a/wp-content/themes/score/index.php b/wp-content/themes/score/index.php new file mode 100644 index 0000000..3200f34 --- /dev/null +++ b/wp-content/themes/score/index.php @@ -0,0 +1,69 @@ + + + + + +
                      class="shift-down"> + + + +
                      > + + + +
                      thumbnail-no-wrap"> + + + <?php if(get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true)) { echo get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true); } else { echo get_the_title(); } ?> + +
                      + + + + +
                      + ID, 'ghostpool_dedication_artist', true); + $song = get_post_meta($post->ID, 'ghostpool_dedication_song', true); + $to_user_email = get_post_meta($post->ID, 'ghostpool_destination_user_email', true); + $to_user = get_user_by ('email', $to_user_email); + ?> +

                      + + ID, 24); ?> + TO: ID); ?> + + + TO: ID, 'ghostpool_destination_user_name', true); ?> + +
                      + + +
                      + + + + + + + + +

                      + + + + +
                      + + + + \ No newline at end of file diff --git a/wp-content/themes/score/languages/en_EN.mo b/wp-content/themes/score/languages/en_EN.mo new file mode 100644 index 0000000..aab1461 Binary files /dev/null and b/wp-content/themes/score/languages/en_EN.mo differ diff --git a/wp-content/themes/score/languages/en_EN.po b/wp-content/themes/score/languages/en_EN.po new file mode 100644 index 0000000..656b661 --- /dev/null +++ b/wp-content/themes/score/languages/en_EN.po @@ -0,0 +1,3430 @@ +msgid "" +msgstr "" +"Project-Id-Version: Score\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-06-16 09:53+0100\n" +"PO-Revision-Date: 2012-06-16 09:53+0100\n" +"Last-Translator: GhostPool\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: __;_e\n" +"X-Poedit-Basepath: ./\n" +"X-Poedit-SearchPath-0: ..\n" + +#: ../404.php:3 +msgid "Page Not Found" +msgstr "" + +#: ../404.php:7 +msgid "Oops, it looks like this page does not exist. If you are lost try using the search box." +msgstr "" + +#: ../author.php:15 +msgid "s" +msgstr "" + +#: ../author.php:15 +#: ../header.php:51 +msgid "Profile" +msgstr "" + +#: ../author.php:23 +#: ../edit-profile.php:72 +msgid "Edit Profile" +msgstr "" + +#: ../author.php:33 +msgid "Member Since" +msgstr "" + +#: ../author.php:35 +#: ../comments.php:171 +#: ../edit-profile.php:117 +msgid "Website" +msgstr "" + +#: ../author.php:37 +#: ../edit-profile.php:121 +msgid "AIM" +msgstr "" + +#: ../author.php:39 +#: ../edit-profile.php:125 +msgid "Yahoo" +msgstr "" + +#: ../author.php:41 +#: ../edit-profile.php:129 +msgid "Jabber / Google Talk" +msgstr "" + +#: ../author.php:43 +#: ../edit-profile.php:133 +msgid "Bio" +msgstr "" + +#: ../author.php:52 +msgid "Items You Follow" +msgstr "" + +#: ../author.php:83 +msgid "You are not currently following any items." +msgstr "" + +#: ../author.php:100 +msgid "Recent Posts" +msgstr "" + +#: ../author.php:134 +msgid "Recent Comments" +msgstr "" + +#: ../blog.php:51 +#: ../index.php:37 +msgid "Read More" +msgstr "" + +#: ../blog.php:73 +#: ../index.php:59 +msgid "Try searching for a different term." +msgstr "" + +#: ../comments.php:50 +#, php-format +msgid "%s" +msgstr "" + +#: ../comments.php:53 +msgid "Author" +msgstr "" + +#: ../comments.php:62 +msgid "Reply" +msgstr "" + +#: ../comments.php:79 +msgid "Your comment is awaiting moderation." +msgstr "" + +#: ../comments.php:112 +msgid "No Comments" +msgstr "" + +#: ../comments.php:112 +msgid "1 Comment" +msgstr "" + +#: ../comments.php:112 +msgid "% Comments" +msgstr "" + +#: ../comments.php:130 +msgid "Comments are now closed on this post." +msgstr "" + +#: ../comments.php:146 +msgid "Leave a Reply" +msgstr "" + +#: ../comments.php:146 +#, php-format +msgid "Respond to %s" +msgstr "" + +#: ../comments.php:146 +msgid "Cancel Reply" +msgstr "" + +#: ../comments.php:150 +msgid "You must be logged in to post a comment." +msgstr "" + +#: ../comments.php:158 +msgid "Rate This Item" +msgstr "" + +#: ../comments.php:167 +msgid "Name" +msgstr "" + +#: ../comments.php:169 +#: ../edit-profile.php:113 +msgid "Email" +msgstr "" + +#: ../comments.php:177 +msgid "Post" +msgstr "" + +#: ../comments.php:198 +msgid "You have already reviewed this item." +msgstr "" + +#: ../dropdown-filter.php:25 +msgid "Order By" +msgstr "" + +#: ../dropdown-filter.php:29 +msgid "Date" +msgstr "" + +#: ../dropdown-filter.php:30 +msgid "Title" +msgstr "" + +#: ../dropdown-filter.php:31 +msgid "Site Score" +msgstr "" + +#: ../dropdown-filter.php:32 +msgid "User Score" +msgstr "" + +#: ../dropdown-filter.php:36 +msgid "Order" +msgstr "" + +#: ../dropdown-filter.php:40 +msgid "Descending" +msgstr "" + +#: ../dropdown-filter.php:41 +msgid "Ascending" +msgstr "" + +#: ../edit-profile.php:21 +msgid "The passwords you entered do not match. Your password was not updated." +msgstr "" + +#: ../edit-profile.php:64 +msgid "You must login to your account in order to edit your profile." +msgstr "" + +#: ../edit-profile.php:75 +msgid "First Name" +msgstr "" + +#: ../edit-profile.php:79 +msgid "Last Name" +msgstr "" + +#: ../edit-profile.php:83 +msgid "Nickname" +msgstr "" + +#: ../edit-profile.php:109 +msgid "Display Name" +msgstr "" + +#: ../edit-profile.php:137 +msgid "New Password" +msgstr "" + +#: ../edit-profile.php:141 +msgid "Repeat Password" +msgstr "" + +#: ../edit-profile.php:146 +msgid "Update →" +msgstr "" + +#: ../functions.php:13 +msgid "Score" +msgstr "" + +#: ../functions.php:204 +msgid "Header Navigation" +msgstr "" + +#: ../functions.php:294 +msgid "Page" +msgstr "" + +#: ../functions.php:294 +msgid "of" +msgstr "" + +#: ../functions.php:376 +msgid "Audio/Video URL" +msgstr "" + +#: ../functions.php:379 +msgid "The URL of your video or audio file (YouTube/Vimeo/FLV/MP4/M4V/MP3)." +msgstr "" + +#: ../header.php:53 +msgid "Logout" +msgstr "" + +#: ../header.php:57 +#: ../login.php:9 +#: ../login.php:38 +msgid "Login" +msgstr "" + +#: ../header.php:60 +#: ../login.php:43 +msgid "Register" +msgstr "" + +#: ../header.php:144 +msgid "RSS Feed" +msgstr "" + +#: ../header.php:146 +msgid "Twitter" +msgstr "" + +#: ../header.php:148 +msgid "Facebook" +msgstr "" + +#: ../header.php:150 +msgid "Digg" +msgstr "" + +#: ../header.php:152 +msgid "Delicious" +msgstr "" + +#: ../header.php:154 +msgid "Dribbble" +msgstr "" + +#: ../header.php:156 +msgid "YouTube" +msgstr "" + +#: ../header.php:158 +msgid "Vimeo" +msgstr "" + +#: ../header.php:160 +msgid "LinkedIn" +msgstr "" + +#: ../header.php:162 +msgid "Google+" +msgstr "" + +#: ../login.php:27 +msgid "You are already logged in." +msgstr "" + +#: ../login.php:32 +msgid "Username" +msgstr "" + +#: ../login.php:35 +msgid "Password" +msgstr "" + +#: ../login.php:39 +msgid "Remember Me" +msgstr "" + +#: ../login.php:43 +msgid "Lost Password" +msgstr "" + +#: ../post-loop.php:10 +msgid "search results for" +msgstr "" + +#: ../post-loop.php:18 +msgid "Archives" +msgstr "" + +#: ../post-meta.php:23 +msgid "Tweet" +msgstr "" + +#: ../register.php:27 +msgid "You are already registered." +msgstr "" + +#: ../register.php:39 +msgid "Your password will be emailed to you." +msgstr "" + +#: ../related-items.php:37 +msgid "Related Items" +msgstr "" + +#: ../searchform.php:2 +msgid "search" +msgstr "" + +#: ../searchform.php:2 +msgid "Search" +msgstr "" + +#: ../single-review.php:38 +msgid "More Images" +msgstr "" + +#: ../single-review.php:85 +msgid "Good" +msgstr "" + +#: ../single-review.php:86 +msgid "Bad" +msgstr "" + +#: ../single-review.php:98 +msgid "votes" +msgstr "" + +#: ../single-review.php:101 +msgid "Click to vote" +msgstr "" + +#: ../slider.php:222 +msgid "Your can display both slides (custom post type) and posts in the slider. To do this first assign your slides to one or more slider categories and your chosen posts to one or more post categories. Now go to Appearance -> Theme Options -> Slider Settings and in the Slider Category IDs text field add your slider category IDs and/or post category IDs." +msgstr "" + +#: ../activity/activity-loop.php:41 +msgid "Load More" +msgstr "" + +#: ../activity/activity-loop.php:55 +msgid "Sorry, there was no activity found. Please try a different filter." +msgstr "" + +#: ../activity/comment.php:27 +#, php-format +msgid "%2$s replied %4$s" +msgstr "" + +#: ../activity/comment.php:43 +msgid "Delete" +msgstr "" + +#: ../activity/entry.php:37 +msgid "In reply to: " +msgstr "" + +#: ../activity/entry.php:37 +msgid "View Thread / Permalink" +msgstr "" + +#: ../activity/entry.php:37 +msgid "View" +msgstr "" + +#: ../activity/entry.php:60 +#, php-format +msgid "Comment %s" +msgstr "" + +#: ../activity/entry.php:68 +msgid "Favorite" +msgstr "" + +#: ../activity/entry.php:72 +msgid "Remove Favorite" +msgstr "" + +#: ../activity/entry.php:104 +msgid "or press esc to cancel." +msgstr "" + +#: ../activity/index.php:23 +msgid "Site Activity" +msgstr "" + +#: ../activity/index.php:41 +msgid "The public activity for everyone on this site." +msgstr "" + +#: ../activity/index.php:41 +#, php-format +msgid "All Members %s" +msgstr "" + +#: ../activity/index.php:51 +msgid "The activity of my friends only." +msgstr "" + +#: ../activity/index.php:51 +#, php-format +msgid "My Friends %s" +msgstr "" + +#: ../activity/index.php:63 +msgid "The activity of groups I am a member of." +msgstr "" + +#: ../activity/index.php:63 +#, php-format +msgid "My Groups %s" +msgstr "" + +#: ../activity/index.php:73 +msgid "The activity I've marked as a favorite." +msgstr "" + +#: ../activity/index.php:73 +#, php-format +msgid "My Favorites %s" +msgstr "" + +#: ../activity/index.php:79 +msgid "Activity that I have been mentioned in." +msgstr "" + +#: ../activity/index.php:79 +msgid "Mentions" +msgstr "" + +#: ../activity/index.php:79 +#, php-format +msgid "%s new" +msgstr "" + +#: ../activity/index.php:89 +msgid "RSS" +msgstr "" + +#: ../activity/index.php:94 +msgid "Show:" +msgstr "" + +#: ../activity/index.php:96 +msgid "Everything" +msgstr "" + +#: ../activity/index.php:97 +msgid "Updates" +msgstr "" + +#: ../activity/index.php:101 +#: ../forums/forums-loop.php:40 +msgid "Posts" +msgstr "" + +#: ../activity/index.php:102 +msgid "Comments" +msgstr "" + +#: ../activity/index.php:108 +msgid "Forum Topics" +msgstr "" + +#: ../activity/index.php:109 +msgid "Forum Replies" +msgstr "" + +#: ../activity/index.php:115 +msgid "New Groups" +msgstr "" + +#: ../activity/index.php:116 +msgid "Group Memberships" +msgstr "" + +#: ../activity/index.php:122 +msgid "Friendships" +msgstr "" + +#: ../activity/index.php:126 +msgid "New Members" +msgstr "" + +#: ../activity/post-form.php:23 +#, php-format +msgid "What's new in %s, %s?" +msgstr "" + +#: ../activity/post-form.php:25 +#, php-format +msgid "What's new, %s?" +msgstr "" + +#: ../activity/post-form.php:35 +msgid "Post Update" +msgstr "" + +#: ../activity/post-form.php:42 +msgid "Post in" +msgstr "" + +#: ../activity/post-form.php:45 +msgid "My Profile" +msgstr "" + +#: ../blogs/blogs-loop.php:90 +msgid "Sorry, there were no sites found." +msgstr "" + +#: ../blogs/create.php:21 +#: ../blogs/index.php:23 +msgid "Create a Site" +msgstr "" + +#: ../blogs/create.php:21 +#: ../blogs/index.php:23 +msgid "Site Directory" +msgstr "" + +#: ../blogs/create.php:32 +msgid "Site registration is currently disabled" +msgstr "" + +#: ../blogs/index.php:35 +#, php-format +msgid "All Sites %s" +msgstr "" + +#: ../blogs/index.php:39 +#, php-format +msgid "My Sites %s" +msgstr "" + +#: ../blogs/index.php:55 +#: ../forums/index.php:60 +#: ../forums/single/forum.php:34 +msgid "Order By:" +msgstr "" + +#: ../blogs/index.php:57 +#: ../forums/index.php:62 +#: ../forums/single/forum.php:36 +msgid "Last Active" +msgstr "" + +#: ../blogs/index.php:58 +msgid "Newest" +msgstr "" + +#: ../blogs/index.php:59 +msgid "Alphabetical" +msgstr "" + +#: ../forums/forums-loop.php:39 +msgid "Topic" +msgstr "" + +#: ../forums/forums-loop.php:41 +msgid "Freshness" +msgstr "" + +#: ../forums/forums-loop.php:54 +msgid "Permalink" +msgstr "" + +#: ../forums/forums-loop.php:61 +#, php-format +msgid "Started by %1$s" +msgstr "" + +#: ../forums/forums-loop.php:72 +#, php-format +msgid "in %1$s" +msgstr "" + +#: ../forums/forums-loop.php:122 +msgid "Sorry, there were no forum topics found." +msgstr "" + +#: ../forums/index.php:23 +msgid "Forums Directory" +msgstr "" + +#: ../forums/index.php:23 +#: ../forums/single/forum.php:19 +msgid "New Topic" +msgstr "" + +#: ../forums/index.php:40 +#, php-format +msgid "All Topics %s" +msgstr "" + +#: ../forums/index.php:44 +#, php-format +msgid "My Topics %s" +msgstr "" + +#: ../forums/index.php:63 +#: ../forums/single/forum.php:37 +msgid "Most Posts" +msgstr "" + +#: ../forums/index.php:64 +#: ../forums/single/forum.php:38 +msgid "Unreplied" +msgstr "" + +#: ../forums/index.php:100 +msgid "Create New Topic:" +msgstr "" + +#: ../forums/index.php:104 +#: ../forums/single/edit.php:49 +msgid "Title:" +msgstr "" + +#: ../forums/index.php:107 +#: ../forums/single/edit.php:52 +msgid "Content:" +msgstr "" + +#: ../forums/index.php:110 +msgid "Tags (comma separated):" +msgstr "" + +#: ../forums/index.php:113 +msgid "Post In Group Forum:" +msgstr "" + +#: ../forums/index.php:116 +msgid "----" +msgstr "" + +#: ../forums/index.php:133 +msgid "Post Topic" +msgstr "" + +#: ../forums/index.php:134 +msgid "Cancel" +msgstr "" + +#: ../forums/index.php:145 +#, php-format +msgid "You are not a member of any groups so you don't have any group forums you can post in. To start posting, first find a group that matches the topic subject you'd like to start. If this group does not exist, why not create a new group? Once you have joined or created the group you can post your topic in that group's forum." +msgstr "" + +#: ../forums/single/edit.php:16 +#: ../forums/single/forum.php:25 +#: ../forums/single/topic.php:45 +msgid "Forum Directory" +msgstr "" + +#: ../forums/single/edit.php:25 +msgid "Edit:" +msgstr "" + +#: ../forums/single/edit.php:57 +#: ../forums/single/edit.php:73 +msgid "Save Changes" +msgstr "" + +#: ../forums/single/edit.php:88 +msgid "This topic does not exist." +msgstr "" + +#: ../forums/single/forum-header.php:13 +#, php-format +msgid "active %s" +msgstr "" + +#: ../forums/single/topic.php:38 +msgid "New Reply" +msgstr "" + +#: ../forums/single/topic.php:99 +#, php-format +msgid "%s said %s ago:" +msgstr "" + +#: ../forums/single/topic.php:119 +msgid "Permanent link to this post" +msgstr "" + +#: ../forums/single/topic.php:155 +msgid "Add a reply:" +msgstr "" + +#: ../forums/single/topic.php:160 +msgid "Post Reply" +msgstr "" + +#: ../forums/single/topic.php:171 +msgid "This topic is closed, replies are no longer accepted." +msgstr "" + +#: ../forums/single/topic.php:186 +msgid "There are no posts for this topic." +msgstr "" + +#: ../groups/create.php:18 +#: ../groups/index.php:23 +msgid "Create a Group" +msgstr "" + +#: ../groups/create.php:18 +#: ../groups/index.php:23 +msgid "Groups Directory" +msgstr "" + +#: ../groups/create.php:39 +#: ../groups/single/admin.php:16 +msgid "Group Name (required)" +msgstr "" + +#: ../groups/create.php:42 +#: ../groups/single/admin.php:19 +msgid "Group Description (required)" +msgstr "" + +#: ../groups/create.php:62 +#: ../groups/single/admin.php:47 +msgid "Enable discussion forum" +msgstr "" + +#: ../groups/create.php:69 +#, php-format +msgid "Attention Site Admin: Group forums require the correct setup and configuration of a bbPress installation." +msgstr "" + +#: ../groups/create.php:78 +#: ../groups/single/admin.php:56 +msgid "Privacy Options" +msgstr "" + +#: ../groups/create.php:82 +#: ../groups/single/admin.php:61 +msgid "This is a public group" +msgstr "" + +#: ../groups/create.php:84 +#: ../groups/single/admin.php:63 +msgid "Any site member can join this group." +msgstr "" + +#: ../groups/create.php:85 +#: ../groups/create.php:94 +#: ../groups/single/admin.php:64 +#: ../groups/single/admin.php:74 +msgid "This group will be listed in the groups directory and in search results." +msgstr "" + +#: ../groups/create.php:86 +#: ../groups/single/admin.php:65 +msgid "Group content and activity will be visible to any site member." +msgstr "" + +#: ../groups/create.php:91 +#: ../groups/single/admin.php:71 +msgid "This is a private group" +msgstr "" + +#: ../groups/create.php:93 +#: ../groups/single/admin.php:73 +msgid "Only users who request membership and are accepted can join the group." +msgstr "" + +#: ../groups/create.php:95 +#: ../groups/create.php:104 +#: ../groups/single/admin.php:75 +#: ../groups/single/admin.php:85 +msgid "Group content and activity will only be visible to members of the group." +msgstr "" + +#: ../groups/create.php:100 +#: ../groups/single/admin.php:81 +msgid "This is a hidden group" +msgstr "" + +#: ../groups/create.php:102 +#: ../groups/single/admin.php:83 +msgid "Only users who are invited can join the group." +msgstr "" + +#: ../groups/create.php:103 +#: ../groups/single/admin.php:84 +msgid "This group will not be listed in the groups directory or search results." +msgstr "" + +#: ../groups/create.php:111 +#: ../groups/single/admin.php:92 +msgid "Group Invitations" +msgstr "" + +#: ../groups/create.php:113 +#: ../groups/single/admin.php:94 +msgid "Which members of this group are allowed to invite others?" +msgstr "" + +#: ../groups/create.php:118 +#: ../groups/single/admin.php:99 +msgid "All group members" +msgstr "" + +#: ../groups/create.php:123 +#: ../groups/single/admin.php:104 +msgid "Group admins and mods only" +msgstr "" + +#: ../groups/create.php:128 +#: ../groups/single/admin.php:109 +msgid "Group admins only" +msgstr "" + +#: ../groups/create.php:154 +#: ../groups/single/admin.php:127 +msgid "Upload an image to use as an avatar for this group. The image will be shown on the main group page, and in search results." +msgstr "" + +#: ../groups/create.php:158 +#: ../groups/single/admin.php:131 +msgid "Upload Image" +msgstr "" + +#: ../groups/create.php:162 +msgid "To skip the avatar upload process, hit the \"Next Step\" button." +msgstr "" + +#: ../groups/create.php:169 +msgid "Crop Group Avatar" +msgstr "" + +#: ../groups/create.php:171 +#: ../groups/single/admin.php:151 +msgid "Avatar to crop" +msgstr "" + +#: ../groups/create.php:174 +#: ../groups/single/admin.php:154 +msgid "Avatar preview" +msgstr "" + +#: ../groups/create.php:177 +#: ../groups/single/admin.php:157 +msgid "Crop Image" +msgstr "" + +#: ../groups/create.php:216 +#: ../groups/single/send-invites.php:22 +msgid "Select people to invite from your friends list." +msgstr "" + +#: ../groups/create.php:234 +#: ../groups/single/send-invites.php:42 +msgid "Remove Invite" +msgstr "" + +#: ../groups/create.php:251 +#: ../groups/single/send-invites.php:73 +msgid "Once you have built up friend connections you will be able to invite others to your group. You can send invites any time in the future by selecting the \"Send Invites\" option when viewing your new group." +msgstr "" + +#: ../groups/create.php:273 +msgid "Back to Previous Step" +msgstr "" + +#: ../groups/create.php:280 +msgid "Next Step" +msgstr "" + +#: ../groups/create.php:287 +msgid "Create Group and Continue" +msgstr "" + +#: ../groups/create.php:294 +msgid "Finish" +msgstr "" + +#: ../groups/groups-loop.php:95 +msgid "There were no groups found." +msgstr "" + +#: ../groups/index.php:37 +#, php-format +msgid "All Groups %s" +msgstr "" + +#: ../groups/index.php:60 +msgid "Most Members" +msgstr "" + +#: ../groups/index.php:61 +msgid "Newly Created" +msgstr "" + +#: ../groups/single/admin.php:25 +msgid "Notify group members of changes via email" +msgstr "" + +#: ../groups/single/admin.php:26 +msgid "Yes" +msgstr "" + +#: ../groups/single/admin.php:27 +msgid "No" +msgstr "" + +#: ../groups/single/admin.php:137 +msgid "If you'd like to remove the existing avatar but not upload a new one, please use the delete avatar button." +msgstr "" + +#: ../groups/single/admin.php:139 +msgid "Delete Avatar" +msgstr "" + +#: ../groups/single/admin.php:149 +msgid "Crop Avatar" +msgstr "" + +#: ../groups/single/admin.php:177 +msgid "Administrators" +msgstr "" + +#: ../groups/single/admin.php:185 +#: ../groups/single/admin.php:210 +#, php-format +msgid "Profile picture of %s" +msgstr "" + +#: ../groups/single/admin.php:189 +#: ../groups/single/admin.php:215 +msgid "Demote to Member" +msgstr "" + +#: ../groups/single/admin.php:203 +msgid "Moderators" +msgstr "" + +#: ../groups/single/admin.php:214 +#: ../groups/single/admin.php:270 +msgid "Promote to Admin" +msgstr "" + +#: ../groups/single/admin.php:229 +msgid "Members" +msgstr "" + +#: ../groups/single/admin.php:258 +msgid "(banned)" +msgstr "" + +#: ../groups/single/admin.php:264 +msgid "Unban this member" +msgstr "" + +#: ../groups/single/admin.php:264 +msgid "Remove Ban" +msgstr "" + +#: ../groups/single/admin.php:268 +msgid "Kick and ban this member" +msgstr "" + +#: ../groups/single/admin.php:268 +msgid "Kick & Ban" +msgstr "" + +#: ../groups/single/admin.php:269 +msgid "Promote to Mod" +msgstr "" + +#: ../groups/single/admin.php:274 +msgid "Remove this member" +msgstr "" + +#: ../groups/single/admin.php:274 +msgid "Remove from group" +msgstr "" + +#: ../groups/single/admin.php:288 +#: ../groups/single/members.php:87 +msgid "This group has no members." +msgstr "" + +#: ../groups/single/admin.php:318 +msgid "Accept" +msgstr "" + +#: ../groups/single/admin.php:320 +msgid "Reject" +msgstr "" + +#: ../groups/single/admin.php:333 +msgid "There are no pending membership requests." +msgstr "" + +#: ../groups/single/admin.php:350 +msgid "WARNING: Deleting this group will completely remove ALL content associated with it. There is no way back, please be careful with this option." +msgstr "" + +#: ../groups/single/admin.php:353 +msgid "I understand the consequences of deleting this group." +msgstr "" + +#: ../groups/single/admin.php:358 +msgid "Delete Group" +msgstr "" + +#: ../groups/single/forum.php:69 +msgid "You will auto join this group when you start a new topic." +msgstr "" + +#: ../groups/single/forum.php:73 +msgid "Post a New Topic:" +msgstr "" + +#: ../groups/single/group-header.php:11 +msgid "Group Admins" +msgstr "" + +#: ../groups/single/group-header.php:20 +msgid "Group Mods" +msgstr "" + +#: ../groups/single/request-membership.php:4 +#, php-format +msgid "You are requesting to become a member of the group '%s'." +msgstr "" + +#: ../groups/single/request-membership.php:7 +msgid "Comments (optional)" +msgstr "" + +#: ../groups/single/request-membership.php:12 +msgid "Send Request" +msgstr "" + +#: ../groups/single/send-invites.php:60 +msgid "Send Invites" +msgstr "" + +#: ../groups/single/forum/topic.php:35 +msgid "Topic tags:" +msgstr "" + +#: ../groups/single/forum/topic.php:81 +#, php-format +msgid "%1$s said %2$s:" +msgstr "" + +#: ../groups/single/forum/topic.php:126 +msgid "You will auto join this group when you reply to this topic." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:9 +#: ../lib/admin/inc/theme-options.php:865 +msgid "Post Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:10 +#: ../lib/admin/inc/theme-options.php:1014 +msgid "Page Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:11 +msgid "Slide Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:21 +msgid "Post Type Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:23 +msgid "Post Type" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:23 +msgid "Choose the post type." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:23 +msgid "Article" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:23 +#: ../lib/admin/inc/theme-meta-options.php:77 +msgid "Review" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:23 +#: ../lib/admin/inc/theme-meta-options.php:82 +#: ../lib/admin/inc/theme-meta-options.php:87 +#: ../lib/admin/inc/theme-meta-options.php:92 +#: ../lib/admin/inc/theme-meta-options.php:97 +#: ../lib/admin/inc/theme-meta-options.php:102 +#: ../lib/admin/inc/theme-meta-options.php:107 +#: ../lib/admin/inc/theme-meta-options.php:112 +#: ../lib/admin/inc/theme-meta-options.php:117 +#: ../lib/admin/inc/theme-meta-options.php:122 +#: ../lib/admin/inc/theme-meta-options.php:127 +msgid "Image Gallery" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:23 +msgid "Video" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:28 +#: ../lib/admin/inc/theme-meta-options.php:191 +msgid "Thumbnail Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:30 +#: ../lib/admin/inc/theme-meta-options.php:193 +#: ../lib/admin/inc/theme-options.php:380 +#: ../lib/admin/inc/theme-options.php:547 +#: ../lib/admin/inc/theme-options.php:714 +msgid "Thumbnail Width" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:30 +#: ../lib/admin/inc/theme-meta-options.php:193 +msgid "The width to crop the thumbnail to (set to 0 to have a proportionate width)." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:32 +#: ../lib/admin/inc/theme-meta-options.php:195 +#: ../lib/admin/inc/theme-options.php:389 +#: ../lib/admin/inc/theme-options.php:556 +#: ../lib/admin/inc/theme-options.php:723 +msgid "Thumbnail Height" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:32 +#: ../lib/admin/inc/theme-meta-options.php:195 +msgid "The height to crop the thumbnail to (set to 0 to have a proportionate height)." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:37 +#: ../lib/admin/inc/theme-meta-options.php:200 +msgid "Image Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:39 +#: ../lib/admin/inc/theme-meta-options.php:202 +#: ../lib/admin/inc/theme-options.php:872 +#: ../lib/admin/inc/theme-options.php:1021 +#: ../lib/admin/inc/theme-options.php:1126 +msgid "Featured Image" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:39 +#: ../lib/admin/inc/theme-meta-options.php:202 +msgid "Choose whether to display the featured image." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:39 +#: ../lib/admin/inc/theme-meta-options.php:45 +#: ../lib/admin/inc/theme-meta-options.php:56 +#: ../lib/admin/inc/theme-meta-options.php:58 +#: ../lib/admin/inc/theme-meta-options.php:60 +#: ../lib/admin/inc/theme-meta-options.php:166 +#: ../lib/admin/inc/theme-meta-options.php:168 +#: ../lib/admin/inc/theme-meta-options.php:170 +#: ../lib/admin/inc/theme-meta-options.php:202 +#: ../lib/admin/inc/theme-meta-options.php:208 +#: ../lib/admin/inc/theme-meta-options.php:217 +#: ../lib/admin/inc/theme-meta-options.php:219 +#: ../lib/admin/inc/theme-meta-options.php:221 +msgid "Default" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:39 +#: ../lib/admin/inc/theme-meta-options.php:168 +#: ../lib/admin/inc/theme-meta-options.php:202 +#: ../lib/admin/inc/theme-meta-options.php:219 +#: ../lib/admin/inc/theme-options.php:431 +#: ../lib/admin/inc/theme-options.php:598 +#: ../lib/admin/inc/theme-options.php:756 +#: ../lib/admin/inc/theme-options.php:876 +#: ../lib/admin/inc/theme-options.php:922 +#: ../lib/admin/inc/theme-options.php:1025 +#: ../lib/admin/inc/theme-options.php:1071 +#: ../lib/admin/inc/theme-options.php:1130 +#: ../lib/admin/inc/theme-options.php:1176 +msgid "Show" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:39 +#: ../lib/admin/inc/theme-meta-options.php:168 +#: ../lib/admin/inc/theme-meta-options.php:202 +#: ../lib/admin/inc/theme-meta-options.php:219 +#: ../lib/admin/inc/theme-options.php:431 +#: ../lib/admin/inc/theme-options.php:598 +#: ../lib/admin/inc/theme-options.php:756 +#: ../lib/admin/inc/theme-options.php:876 +#: ../lib/admin/inc/theme-options.php:922 +#: ../lib/admin/inc/theme-options.php:1025 +#: ../lib/admin/inc/theme-options.php:1071 +#: ../lib/admin/inc/theme-options.php:1130 +#: ../lib/admin/inc/theme-options.php:1176 +msgid "Hide" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:41 +#: ../lib/admin/inc/theme-meta-options.php:204 +#: ../lib/admin/inc/theme-options.php:880 +#: ../lib/admin/inc/theme-options.php:988 +#: ../lib/admin/inc/theme-options.php:1029 +#: ../lib/admin/inc/theme-options.php:1134 +#: ../lib/admin/inc/theme-options.php:1428 +msgid "Image Width" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:41 +#: ../lib/admin/inc/theme-meta-options.php:204 +#: ../lib/admin/inc/theme-options.php:989 +#: ../lib/admin/inc/theme-options.php:1429 +msgid "The width to crop the image to (set to 0 to have a proportionate width)." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:43 +#: ../lib/admin/inc/theme-meta-options.php:206 +#: ../lib/admin/inc/theme-options.php:889 +#: ../lib/admin/inc/theme-options.php:997 +#: ../lib/admin/inc/theme-options.php:1038 +#: ../lib/admin/inc/theme-options.php:1143 +#: ../lib/admin/inc/theme-options.php:1437 +msgid "Image Height" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:43 +#: ../lib/admin/inc/theme-meta-options.php:206 +#: ../lib/admin/inc/theme-options.php:998 +#: ../lib/admin/inc/theme-options.php:1438 +msgid "The height to crop the image to (set to 0 to have a proportionate height)." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:45 +#: ../lib/admin/inc/theme-meta-options.php:208 +#: ../lib/admin/inc/theme-options.php:398 +#: ../lib/admin/inc/theme-options.php:565 +#: ../lib/admin/inc/theme-options.php:732 +#: ../lib/admin/inc/theme-options.php:898 +#: ../lib/admin/inc/theme-options.php:1047 +#: ../lib/admin/inc/theme-options.php:1152 +msgid "Image Wrap" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:45 +#: ../lib/admin/inc/theme-meta-options.php:208 +#: ../lib/admin/inc/theme-options.php:399 +#: ../lib/admin/inc/theme-options.php:566 +#: ../lib/admin/inc/theme-options.php:733 +msgid "Choose whether the page content wraps around the featured image." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:45 +#: ../lib/admin/inc/theme-meta-options.php:208 +#: ../lib/admin/inc/theme-options.php:71 +#: ../lib/admin/inc/theme-options.php:95 +#: ../lib/admin/inc/theme-options.php:113 +#: ../lib/admin/inc/theme-options.php:321 +#: ../lib/admin/inc/theme-options.php:360 +#: ../lib/admin/inc/theme-options.php:402 +#: ../lib/admin/inc/theme-options.php:471 +#: ../lib/admin/inc/theme-options.php:491 +#: ../lib/admin/inc/theme-options.php:501 +#: ../lib/admin/inc/theme-options.php:511 +#: ../lib/admin/inc/theme-options.php:519 +#: ../lib/admin/inc/theme-options.php:527 +#: ../lib/admin/inc/theme-options.php:535 +#: ../lib/admin/inc/theme-options.php:569 +#: ../lib/admin/inc/theme-options.php:638 +#: ../lib/admin/inc/theme-options.php:658 +#: ../lib/admin/inc/theme-options.php:668 +#: ../lib/admin/inc/theme-options.php:678 +#: ../lib/admin/inc/theme-options.php:686 +#: ../lib/admin/inc/theme-options.php:694 +#: ../lib/admin/inc/theme-options.php:702 +#: ../lib/admin/inc/theme-options.php:736 +#: ../lib/admin/inc/theme-options.php:796 +#: ../lib/admin/inc/theme-options.php:816 +#: ../lib/admin/inc/theme-options.php:826 +#: ../lib/admin/inc/theme-options.php:836 +#: ../lib/admin/inc/theme-options.php:844 +#: ../lib/admin/inc/theme-options.php:852 +#: ../lib/admin/inc/theme-options.php:860 +#: ../lib/admin/inc/theme-options.php:902 +#: ../lib/admin/inc/theme-options.php:932 +#: ../lib/admin/inc/theme-options.php:940 +#: ../lib/admin/inc/theme-options.php:948 +#: ../lib/admin/inc/theme-options.php:956 +#: ../lib/admin/inc/theme-options.php:964 +#: ../lib/admin/inc/theme-options.php:974 +#: ../lib/admin/inc/theme-options.php:984 +#: ../lib/admin/inc/theme-options.php:1051 +#: ../lib/admin/inc/theme-options.php:1081 +#: ../lib/admin/inc/theme-options.php:1089 +#: ../lib/admin/inc/theme-options.php:1097 +#: ../lib/admin/inc/theme-options.php:1105 +#: ../lib/admin/inc/theme-options.php:1115 +#: ../lib/admin/inc/theme-options.php:1156 +#: ../lib/admin/inc/theme-options.php:1372 +#: ../lib/admin/inc/theme-options.php:1380 +#: ../lib/admin/inc/theme-options.php:1388 +#: ../lib/admin/inc/theme-options.php:1396 +#: ../lib/admin/inc/theme-options.php:1404 +#: ../lib/admin/inc/theme-options.php:1414 +#: ../lib/admin/inc/theme-options.php:1424 +#: ../lib/admin/inc/theme-options.php:1459 +msgid "Enable" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:45 +#: ../lib/admin/inc/theme-meta-options.php:208 +#: ../lib/admin/inc/theme-options.php:71 +#: ../lib/admin/inc/theme-options.php:95 +#: ../lib/admin/inc/theme-options.php:113 +#: ../lib/admin/inc/theme-options.php:232 +#: ../lib/admin/inc/theme-options.php:321 +#: ../lib/admin/inc/theme-options.php:360 +#: ../lib/admin/inc/theme-options.php:402 +#: ../lib/admin/inc/theme-options.php:471 +#: ../lib/admin/inc/theme-options.php:491 +#: ../lib/admin/inc/theme-options.php:501 +#: ../lib/admin/inc/theme-options.php:511 +#: ../lib/admin/inc/theme-options.php:519 +#: ../lib/admin/inc/theme-options.php:527 +#: ../lib/admin/inc/theme-options.php:535 +#: ../lib/admin/inc/theme-options.php:569 +#: ../lib/admin/inc/theme-options.php:638 +#: ../lib/admin/inc/theme-options.php:658 +#: ../lib/admin/inc/theme-options.php:668 +#: ../lib/admin/inc/theme-options.php:678 +#: ../lib/admin/inc/theme-options.php:686 +#: ../lib/admin/inc/theme-options.php:694 +#: ../lib/admin/inc/theme-options.php:702 +#: ../lib/admin/inc/theme-options.php:736 +#: ../lib/admin/inc/theme-options.php:796 +#: ../lib/admin/inc/theme-options.php:816 +#: ../lib/admin/inc/theme-options.php:826 +#: ../lib/admin/inc/theme-options.php:836 +#: ../lib/admin/inc/theme-options.php:844 +#: ../lib/admin/inc/theme-options.php:852 +#: ../lib/admin/inc/theme-options.php:860 +#: ../lib/admin/inc/theme-options.php:902 +#: ../lib/admin/inc/theme-options.php:932 +#: ../lib/admin/inc/theme-options.php:940 +#: ../lib/admin/inc/theme-options.php:948 +#: ../lib/admin/inc/theme-options.php:956 +#: ../lib/admin/inc/theme-options.php:964 +#: ../lib/admin/inc/theme-options.php:974 +#: ../lib/admin/inc/theme-options.php:984 +#: ../lib/admin/inc/theme-options.php:1051 +#: ../lib/admin/inc/theme-options.php:1081 +#: ../lib/admin/inc/theme-options.php:1089 +#: ../lib/admin/inc/theme-options.php:1097 +#: ../lib/admin/inc/theme-options.php:1105 +#: ../lib/admin/inc/theme-options.php:1115 +#: ../lib/admin/inc/theme-options.php:1156 +#: ../lib/admin/inc/theme-options.php:1372 +#: ../lib/admin/inc/theme-options.php:1380 +#: ../lib/admin/inc/theme-options.php:1388 +#: ../lib/admin/inc/theme-options.php:1396 +#: ../lib/admin/inc/theme-options.php:1404 +#: ../lib/admin/inc/theme-options.php:1414 +#: ../lib/admin/inc/theme-options.php:1424 +#: ../lib/admin/inc/theme-options.php:1459 +msgid "Disable" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:49 +msgid "Lightbox Content" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:49 +msgid "Upload images/audio/videos that will be opened in the lightbox, giving them an order value of \"1\"." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:54 +msgid "Review Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:56 +#: ../lib/admin/inc/theme-options.php:1182 +msgid "User Voting" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:56 +msgid "Choose how users can vote." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:56 +#: ../lib/admin/inc/theme-options.php:1186 +msgid "Vote with or without posting a comment" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:56 +#: ../lib/admin/inc/theme-options.php:1186 +msgid "Vote without posting a comment" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:56 +#: ../lib/admin/inc/theme-options.php:1186 +msgid "Vote only when posting a comment" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:56 +#: ../lib/admin/inc/theme-options.php:1186 +msgid "Users cannot vote" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:58 +#: ../lib/admin/inc/theme-options.php:1190 +msgid "User Comments" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:58 +msgid "Choose whether users can post unlimited comments (only works with registered users)." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:58 +#: ../lib/admin/inc/theme-options.php:1194 +msgid "Unlimited Comments" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:58 +#: ../lib/admin/inc/theme-options.php:1194 +msgid "One Comment" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:60 +#: ../lib/admin/inc/theme-options.php:1198 +msgid "Comment Thumbs" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:60 +msgid "Choose whether users can rate other comments." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:60 +#: ../lib/admin/inc/theme-options.php:1202 +msgid "Users can rate other comments" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:60 +#: ../lib/admin/inc/theme-options.php:1202 +msgid "Users cannot rate other comments" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:62 +msgid "Review Details" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:62 +msgid "Add review details for this review e.g. release date, genre etc., adding each detail on a new line." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:66 +msgid "Good Point" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:66 +msgid "A good point of the item being reviewed." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:68 +msgid "Bad Point" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:68 +msgid "A bad point of the item being reviewed." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:72 +msgid "Tab/Link Title" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:73 +msgid "Tag/Page Slug or Page URL" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:73 +msgid "Tab Type" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:82 +#: ../lib/admin/inc/theme-meta-options.php:87 +#: ../lib/admin/inc/theme-meta-options.php:92 +#: ../lib/admin/inc/theme-meta-options.php:97 +#: ../lib/admin/inc/theme-meta-options.php:102 +#: ../lib/admin/inc/theme-meta-options.php:107 +#: ../lib/admin/inc/theme-meta-options.php:112 +#: ../lib/admin/inc/theme-meta-options.php:117 +#: ../lib/admin/inc/theme-meta-options.php:122 +#: ../lib/admin/inc/theme-meta-options.php:127 +msgid "List Of Articles" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:82 +#: ../lib/admin/inc/theme-meta-options.php:87 +#: ../lib/admin/inc/theme-meta-options.php:92 +#: ../lib/admin/inc/theme-meta-options.php:97 +#: ../lib/admin/inc/theme-meta-options.php:102 +#: ../lib/admin/inc/theme-meta-options.php:107 +#: ../lib/admin/inc/theme-meta-options.php:112 +#: ../lib/admin/inc/theme-meta-options.php:117 +#: ../lib/admin/inc/theme-meta-options.php:122 +#: ../lib/admin/inc/theme-meta-options.php:127 +msgid "List Of Videos" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:82 +#: ../lib/admin/inc/theme-meta-options.php:87 +#: ../lib/admin/inc/theme-meta-options.php:92 +#: ../lib/admin/inc/theme-meta-options.php:97 +#: ../lib/admin/inc/theme-meta-options.php:102 +#: ../lib/admin/inc/theme-meta-options.php:107 +#: ../lib/admin/inc/theme-meta-options.php:112 +#: ../lib/admin/inc/theme-meta-options.php:117 +#: ../lib/admin/inc/theme-meta-options.php:122 +#: ../lib/admin/inc/theme-meta-options.php:127 +msgid "Single Post/Page" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:132 +msgid "Image Gallery Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:134 +msgid "Upload your images by clicking the \"Add Media\" button above." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:139 +msgid "Video Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:141 +msgid "Video URL" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:141 +msgid "The URL of the video or audio file (YouTube/Vimeo/FLV/MP4/M4V/MP3)." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:143 +msgid "HTML5 Video URL (Safari/Chrome)" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:143 +msgid "Enter the HTML5 video URL for Safari/Chrome (YouTube/Vimeo/WEBM/MP4)." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:145 +msgid "HTML5 Video URL (FireFox/Opera)" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:145 +msgid "Enter the HTML5 video URL for FireFox/Opera (YouTube/Vimeo/OGG/OGV)." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:147 +msgid "Video Priority" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:147 +msgid "If you have provided both flash and HTML5 videos, select which one will take priority if the browser can play both." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:147 +msgid "Flash" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:147 +msgid "HTML5" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:151 +msgid "Video Width" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:151 +msgid "The width of the video." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:153 +msgid "Video Height" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:153 +msgid "The height of the video." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:155 +msgid "Autostart Video" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:155 +msgid "Plays the video/audio automatically when the page is loaded." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:157 +msgid "Video Controls" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:157 +msgid "Choose how to display the video controls (does not apply to Vimeo videos)." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:157 +msgid "Bottom" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:157 +msgid "Over" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:157 +#: ../lib/admin/inc/theme-options.php:1680 +msgid "None" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:162 +#: ../lib/admin/inc/theme-meta-options.php:213 +msgid "Format Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:164 +#: ../lib/admin/inc/theme-meta-options.php:215 +msgid "Sidebar" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:164 +#: ../lib/admin/inc/theme-meta-options.php:215 +msgid "Choose which sidebar to display." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:166 +#: ../lib/admin/inc/theme-meta-options.php:217 +#: ../lib/admin/inc/theme-options.php:417 +#: ../lib/admin/inc/theme-options.php:584 +#: ../lib/admin/inc/theme-options.php:742 +#: ../lib/admin/inc/theme-options.php:908 +#: ../lib/admin/inc/theme-options.php:1057 +#: ../lib/admin/inc/theme-options.php:1162 +msgid "Layout" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:166 +#: ../lib/admin/inc/theme-meta-options.php:217 +#: ../lib/admin/inc/theme-options.php:418 +#: ../lib/admin/inc/theme-options.php:585 +#: ../lib/admin/inc/theme-options.php:743 +msgid "Choose the page layout." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:166 +#: ../lib/admin/inc/theme-meta-options.php:217 +#: ../lib/admin/inc/theme-options.php:421 +#: ../lib/admin/inc/theme-options.php:588 +#: ../lib/admin/inc/theme-options.php:746 +#: ../lib/admin/inc/theme-options.php:912 +#: ../lib/admin/inc/theme-options.php:1061 +#: ../lib/admin/inc/theme-options.php:1166 +msgid "Sidebar Right" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:166 +#: ../lib/admin/inc/theme-meta-options.php:217 +#: ../lib/admin/inc/theme-options.php:421 +#: ../lib/admin/inc/theme-options.php:588 +#: ../lib/admin/inc/theme-options.php:746 +#: ../lib/admin/inc/theme-options.php:912 +#: ../lib/admin/inc/theme-options.php:1061 +#: ../lib/admin/inc/theme-options.php:1166 +msgid "Sidebar Left" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:166 +#: ../lib/admin/inc/theme-meta-options.php:217 +#: ../lib/admin/inc/theme-options.php:421 +#: ../lib/admin/inc/theme-options.php:588 +#: ../lib/admin/inc/theme-options.php:746 +#: ../lib/admin/inc/theme-options.php:912 +#: ../lib/admin/inc/theme-options.php:1061 +#: ../lib/admin/inc/theme-options.php:1166 +msgid "Fullwidth" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:168 +#: ../lib/admin/inc/theme-meta-options.php:219 +#: ../lib/admin/inc/theme-options.php:428 +#: ../lib/admin/inc/theme-options.php:595 +#: ../lib/admin/inc/theme-options.php:753 +msgid "Choose whether to display the page title." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:170 +#: ../lib/admin/inc/theme-meta-options.php:221 +msgid "Skin" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:170 +#: ../lib/admin/inc/theme-meta-options.php:221 +msgid "Choose the page skin." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:170 +#: ../lib/admin/inc/theme-meta-options.php:221 +#: ../lib/admin/inc/theme-options.php:18 +msgid "Blue" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:170 +#: ../lib/admin/inc/theme-meta-options.php:221 +#: ../lib/admin/inc/theme-options.php:18 +msgid "Black" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:174 +#: ../lib/admin/inc/theme-meta-options.php:225 +msgid "Custom Stylesheet URL" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:174 +msgid "Enter the relative URL to your custom stylesheet e.g. lib/css/custom-style.css." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:242 +#: ../lib/admin/inc/theme-options.php:7 +msgid "General Settings" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:244 +msgid "Slide URL" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:244 +msgid "Enter the URL you want the slide to link to." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:246 +msgid "Link Type" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:246 +msgid "Choose how the slide links to the URL provided to the left." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:246 +msgid "Lightbox Image" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:246 +msgid "Lightbox Video" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:248 +msgid "Hide Slide Rating" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:248 +msgid "Hide the rating for this slide." +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:489 +#: ../lib/admin/inc/theme-meta-options.php:501 +#: ../lib/admin/inc/theme-options.php:1552 +#: ../lib/admin/inc/theme-options.php:1630 +#: ../lib/admin/inc/theme-options.php:1642 +#: ../lib/admin/inc/theme-options.php:1784 +msgid "Upload" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:608 +msgid "Add Media" +msgstr "" + +#: ../lib/admin/inc/theme-meta-options.php:608 +msgid "View Media" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:14 +msgid "Theme Skin" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:15 +msgid "Choose the theme skin (can be overridden on individual posts/pages)" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:22 +msgid "Custom Stylesheet" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:23 +msgid "Enter the relative URL to your custom stylesheet e.g. lib/css/custom-style.css (can be overridden on individual posts/pages)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:31 +msgid "Custom Logo Image" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:32 +msgid "Upload your own logo." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:38 +msgid "Logo Top Margin" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:39 +msgid "Enter the top margin of your logo." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:47 +msgid "Logo Left Margin" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:48 +msgid "Enter the left margin of your logo." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:56 +msgid "Logo Bottom Margin" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:57 +msgid "Enter the bottom margin of your logo." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:67 +msgid "Login/Register/Profile Links" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:68 +msgid "Choose whether to display the login, register and profile links." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:75 +msgid "Login Page URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:76 +msgid "Enter the URL of the page you have assigned the Login page template to." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:82 +msgid "Register Page URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:83 +msgid "Enter the URL of the page you have assigned the Register page template to (leave blank if you are using BuddyPress, as a register page will have already been created)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:91 +msgid "Search Form" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:92 +msgid "Choose whether to display the search form in the navigation panel." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:99 +msgid "Search Criteria" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:100 +msgid "Choose what posts and pages show up in search results." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:103 +msgid "All Posts And Pages" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:103 +msgid "All Posts" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:103 +msgid "Review Posts Only" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:109 +msgid "RSS Feed Button" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:110 +msgid "Display the RSS feed button with the default RSS feed or enter a custom feed below." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:117 +msgid "RSS URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:124 +msgid "Twitter URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:131 +msgid "Facebook URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:138 +msgid "Digg URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:145 +msgid "Delicious URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:152 +msgid "Dribbble URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:159 +msgid "YouTube URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:166 +msgid "Vimeo URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:173 +msgid "LinkedIn URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:180 +msgid "Google+ URL" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:187 +msgid "Additional Social Icons" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:188 +msgid "Add additional social icons by entering the link and image HTML code e.g. <a href="http://social-link.com" target="_blank"><img src="" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:196 +msgid "Favicon URL (.ico)" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:197 +msgid "Type the URL of the favicon image (.ico, 16x16 or 32x32)" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:203 +msgid "Favicon URL (.png)" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:204 +msgid "Type the URL of the favicon image (.png, 16x16 or 32x32)" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:210 +msgid "Apple Icon URL (.png)" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:211 +msgid "Type the URL of the apple icon image (.png, 57x57), used for display on the Apple iPhone" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:219 +msgid "Header Content" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:220 +msgid "Enter the content you want to display in the header (e.g. Google advertisements)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:228 +msgid "Scroller Display" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:229 +msgid "Choose how to display the scroller." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:232 +msgid "Scrolling" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:232 +msgid "No Scrolling" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:236 +msgid "Scroller Title" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:237 +msgid "Enter the title you want to add to the scroller." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:243 +msgid "Scroller Text" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:244 +msgid "Enter any text you want to add to the scroller." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:250 +msgid "Scroller Category IDs" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:251 +#: ../lib/admin/inc/theme-options.php:409 +#: ../lib/admin/inc/theme-options.php:576 +msgid "Enter the IDs of the post categories you want to display (leave blank to display all categories)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:257 +msgid "Number Of Scroller Posts" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:258 +msgid "The number of posts to display (set to -1 to display all posts)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:267 +msgid "Footer Widgets" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:268 +msgid "Choose where to display your footer widgets." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:271 +msgid "All Pages" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:271 +msgid "Homepage" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:275 +msgid "Footer Content" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:276 +msgid "Enter the content you want to display in the bottom section of the footer." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:302 +msgid "Scripts" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:303 +msgid "Enter any scripts that need to be embedded into the theme (e.g. Google Analytics)" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:310 +msgid "Slider Settings" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:317 +msgid "Slider" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:318 +msgid "Choose whether to display the slider." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:325 +msgid "Slider Category IDs" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:326 +msgid "Enter the IDs of the slider categories and post categories you want to display." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:332 +msgid "Slider Order" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:333 +msgid "Choose how to order your slides." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:336 +msgid "Custom Order" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:340 +msgid "Slider Score Type" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:341 +msgid "Choose the score type to display (only applies to posts added to slider)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:344 +#: ../lib/admin/inc/theme-options.php:481 +#: ../lib/admin/inc/theme-options.php:648 +#: ../lib/admin/inc/theme-options.php:806 +msgid "Site & User Score" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:344 +#: ../lib/admin/inc/theme-options.php:481 +#: ../lib/admin/inc/theme-options.php:648 +#: ../lib/admin/inc/theme-options.php:806 +msgid "No Scores" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:348 +msgid "Number Of Slides" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:349 +msgid "The number of slides to display (set to -1 to display all slides)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:356 +msgid "Slider Scroll" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:357 +msgid "Choose whether to have the slider automatically scroll." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:364 +msgid "Slider Scroll Speed" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:365 +msgid "Enter the number of milliseconds you want between each slide transition." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:373 +msgid "Homepage Settings" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:381 +#: ../lib/admin/inc/theme-options.php:548 +#: ../lib/admin/inc/theme-options.php:715 +msgid "The width to crop the thumbnail to (can be overridden on individual posts, set to 0 to have a proportionate width)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:390 +#: ../lib/admin/inc/theme-options.php:557 +#: ../lib/admin/inc/theme-options.php:724 +msgid "The height to crop the thumbnail to (can be overridden on individual posts, set to 0 to have a proportionate height)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:408 +msgid "Homepage Category IDs" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:437 +#: ../lib/admin/inc/theme-options.php:604 +#: ../lib/admin/inc/theme-options.php:762 +msgid "Posts Per Page" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:438 +#: ../lib/admin/inc/theme-options.php:605 +#: ../lib/admin/inc/theme-options.php:763 +msgid "The number of posts per page." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:447 +#: ../lib/admin/inc/theme-options.php:614 +#: ../lib/admin/inc/theme-options.php:772 +msgid "Content Display" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:448 +#: ../lib/admin/inc/theme-options.php:615 +#: ../lib/admin/inc/theme-options.php:773 +msgid "Choose whether to display the full post content or an excerpt." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:457 +#: ../lib/admin/inc/theme-options.php:624 +#: ../lib/admin/inc/theme-options.php:782 +msgid "Excerpt Length" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:458 +#: ../lib/admin/inc/theme-options.php:625 +msgid "The number of characters in excerpts." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:467 +#: ../lib/admin/inc/theme-options.php:634 +#: ../lib/admin/inc/theme-options.php:792 +msgid "Read More Link" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:468 +#: ../lib/admin/inc/theme-options.php:635 +#: ../lib/admin/inc/theme-options.php:793 +msgid "Choose whether to display the read more links." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:477 +#: ../lib/admin/inc/theme-options.php:644 +#: ../lib/admin/inc/theme-options.php:802 +msgid "Score Type" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:478 +#: ../lib/admin/inc/theme-options.php:645 +msgid "Choose the score type to display." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:487 +#: ../lib/admin/inc/theme-options.php:654 +#: ../lib/admin/inc/theme-options.php:812 +msgid "Review Date Column" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:488 +#: ../lib/admin/inc/theme-options.php:655 +#: ../lib/admin/inc/theme-options.php:813 +msgid "Choose whether to display the review date column." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:497 +#: ../lib/admin/inc/theme-options.php:664 +#: ../lib/admin/inc/theme-options.php:822 +msgid "Drop Down Menu Filter" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:498 +#: ../lib/admin/inc/theme-options.php:665 +#: ../lib/admin/inc/theme-options.php:823 +msgid "Choose whether to display the drop down menu filter." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:507 +#: ../lib/admin/inc/theme-options.php:674 +#: ../lib/admin/inc/theme-options.php:832 +#: ../lib/admin/inc/theme-options.php:928 +#: ../lib/admin/inc/theme-options.php:1368 +msgid "Post Date" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:508 +#: ../lib/admin/inc/theme-options.php:675 +#: ../lib/admin/inc/theme-options.php:833 +#: ../lib/admin/inc/theme-options.php:929 +#: ../lib/admin/inc/theme-options.php:1369 +msgid "Choose whether to display the post date." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:515 +#: ../lib/admin/inc/theme-options.php:682 +#: ../lib/admin/inc/theme-options.php:840 +#: ../lib/admin/inc/theme-options.php:936 +#: ../lib/admin/inc/theme-options.php:1376 +msgid "Post Author" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:516 +#: ../lib/admin/inc/theme-options.php:683 +#: ../lib/admin/inc/theme-options.php:841 +#: ../lib/admin/inc/theme-options.php:937 +#: ../lib/admin/inc/theme-options.php:1377 +msgid "Choose whether to display the post author." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:523 +#: ../lib/admin/inc/theme-options.php:690 +#: ../lib/admin/inc/theme-options.php:848 +#: ../lib/admin/inc/theme-options.php:944 +#: ../lib/admin/inc/theme-options.php:1384 +msgid "Post Categories" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:524 +#: ../lib/admin/inc/theme-options.php:691 +#: ../lib/admin/inc/theme-options.php:849 +#: ../lib/admin/inc/theme-options.php:945 +#: ../lib/admin/inc/theme-options.php:1385 +msgid "Choose whether to display the post categories." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:531 +#: ../lib/admin/inc/theme-options.php:698 +#: ../lib/admin/inc/theme-options.php:856 +#: ../lib/admin/inc/theme-options.php:952 +#: ../lib/admin/inc/theme-options.php:1392 +msgid "Post Comments" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:532 +#: ../lib/admin/inc/theme-options.php:699 +#: ../lib/admin/inc/theme-options.php:857 +#: ../lib/admin/inc/theme-options.php:953 +#: ../lib/admin/inc/theme-options.php:1393 +msgid "Choose whether to display the post comments." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:540 +msgid "Blog Page Settings" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:575 +msgid "Blog Category IDs" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:707 +msgid "Category Settings" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:776 +msgid "Excerpt" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:776 +msgid "Full Content" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:783 +msgid "The number of characters in excerpts on category, archive, search, tag pages etc." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:803 +msgid "Choose the score type to display on category, archive, search, tag pages etc." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:873 +msgid "Choose whether to display the featured image (can be overridden on individual posts)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:881 +msgid "The width to crop the image to (can be overridden on individual posts, set to 0 to have a proportionate width)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:890 +msgid "The height to crop the image to (can be overridden on individual posts, set to 0 to have a proportionate height)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:899 +msgid "Choose whether the page content wraps around the featured image (can be overridden on individual posts)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:909 +msgid "Choose the page layout (can be overridden on individual posts)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:919 +msgid "Choose whether to display the page title (can be overridden on individual posts)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:960 +#: ../lib/admin/inc/theme-options.php:1101 +#: ../lib/admin/inc/theme-options.php:1400 +msgid "Share Link" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:961 +#: ../lib/admin/inc/theme-options.php:1102 +#: ../lib/admin/inc/theme-options.php:1401 +msgid "Choose whether to display the share link." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:970 +#: ../lib/admin/inc/theme-options.php:1111 +#: ../lib/admin/inc/theme-options.php:1410 +msgid "Author Info Panel" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:971 +#: ../lib/admin/inc/theme-options.php:1411 +msgid "Choose whether to display the author info panel." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:981 +#: ../lib/admin/inc/theme-options.php:1421 +msgid "Choose whether to display related items." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1006 +#: ../lib/admin/inc/theme-options.php:1446 +msgid "Related Items Category IDs" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1007 +#: ../lib/admin/inc/theme-options.php:1447 +msgid "Enter the IDs of the post categories you want to display in the related items section." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1022 +msgid "Choose whether to display the featured image (can be overridden on individual pages)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1030 +msgid "The width to crop the image to (can be overridden on individual pages, set to 0 to have a proportionate width)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1039 +msgid "The height to crop the image to (can be overridden on individual pages, set to 0 to have a proportionate height)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1048 +msgid "Choose whether the page content wraps around the featured image (can be overridden on individual pages)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1058 +msgid "Choose the page layout (can be overridden on individual pages)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1068 +msgid "Choose whether to display the page title (can be overridden on individual pages)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1077 +msgid "Page Date" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1078 +msgid "Choose whether to display the page date." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1085 +msgid "Page Author" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1086 +msgid "Choose whether to display the page author." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1093 +msgid "Page Comments" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1094 +msgid "Choose whether to display the page comments." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1112 +msgid "Choose whether to display an author info panel on pages." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1120 +msgid "Review Post Settings" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1127 +msgid "Choose whether to display the featured image (can be overridden on individual reviews)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1135 +msgid "The width to crop the image to (can be overridden on individual reviews, set to 0 to have a proportionate width)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1144 +msgid "The height to crop the image to (can be overridden on individual reviews, set to 0 to have a proportionate height)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1153 +msgid "Choose whether the page content wraps around the featured image (can be overridden on individual reviews)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1163 +msgid "Choose the page layout (can be overridden on individual reviews)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1173 +msgid "Choose whether to display the page title (can be overridden on individual reviews)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1183 +msgid "Choose how users can vote (can be overridden on individual reviews)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1191 +msgid "Choose whether users can post unlimited comments (can be overridden on individual reviews, only works with registered users)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1199 +msgid "Choose whether users can rate other comments (can be overridden on individual reviews)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1208 +msgid "Score Ranges" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1455 +msgid "Follow Button" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1456 +msgid "Choose whether to display the follow button." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1464 +msgid "CSS Settings" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1471 +msgid "Custom CSS" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1472 +msgid "If you want to modify the theme style in some way add your own code here instead of editing the style sheets. Note: You may have to add !important to your tags in some cases so it overwrites the default settings e.g. body {background: #000000 !important;}." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1514 +#: ../lib/admin/inc/theme-options.php:1531 +msgid "Theme Options" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1522 +msgid "Options Saved" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1523 +msgid "Options Reset" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1535 +msgid "Need help? First check the" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1535 +msgid "help file" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1535 +msgid ", then visit the" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1535 +msgid "support forum" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1537 +msgid "Keep up to date with the latest theme updates and news from GhostPool.com by following me on Twitter @ghostpool." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1539 +msgid "If you like my work take a look at my other themes in my portfolio." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1541 +msgid "Import/Export Theme Options" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1547 +msgid "Import Theme Options" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1548 +msgid "If you have a back up of your theme options you can import them below." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1558 +msgid "Export Theme Options" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1559 +msgid "If you want to create a back up of all your theme options click the Export button below (will only back up your theme options and not your post/page/images data)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1562 +#: ../lib/admin/inc/theme-options.php:1794 +#: ../lib/admin/inc/theme-options.php:1798 +msgid "Export Theme Settings" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1779 +msgid "Import Theme Settings" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1780 +msgid "If you have a back up of your theme settings you can import them below." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1795 +msgid "If you want to create a back up of all your theme settings click the Export button below (his option only backs up your theme settings and not your post/page data)." +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1818 +msgid "Are you sure you want to reset all the theme options?" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1819 +msgid "Reset" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1892 +msgid "Help File" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1892 +msgid "Support Forum" +msgstr "" + +#: ../lib/admin/inc/theme-options.php:1892 +msgid "Changelog" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:9 +#: ../lib/admin/inc/theme-post-types.php:17 +msgid "Slides" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:10 +msgid "Slide" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:11 +msgid "All Slides" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:12 +msgid "Add New Slide" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:13 +msgid "Edit Slide" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:14 +msgid "New Slide" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:15 +msgid "View Slide" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:16 +msgid "Search Slides" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:38 +#: ../lib/admin/inc/theme-post-types.php:46 +msgid "Slide Categories" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:39 +msgid "Slide Category" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:40 +msgid "All Slide Categories" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:41 +msgid "Add New Slide Category" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:42 +msgid "Edit Slide Category" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:43 +msgid "New Slide Category" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:44 +msgid "View Slide Category" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:45 +msgid "Search Slide Categories" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:64 +msgid "Categories" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:65 +msgid "Image" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:101 +#: ../lib/admin/inc/theme-post-types.php:137 +msgid "Order Slides" +msgstr "" + +#: ../lib/admin/inc/theme-post-types.php:157 +msgid "Edit" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:5 +msgid "Default Sidebar" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:11 +msgid "Contact Page Sidebar" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:17 +msgid "Footer 1" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:23 +msgid "Footer 2" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:29 +msgid "Footer 3" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:35 +msgid "Footer 4" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:204 +msgid "Sidebar Generator" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:206 +msgid "Add your sidebars below and then you can assign one of these sidebars from the individual posts/pages." +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:210 +msgid "Add a sidebar" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:210 +msgid "Add Sidebar" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:216 +msgid "Shortcode" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:217 +msgid "Remove" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:230 +msgid "Remove this sidebar" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:230 +msgid "remove" +msgstr "" + +#: ../lib/admin/inc/theme-sidebars.php:238 +msgid "No Sidebars defined" +msgstr "" + +#: ../lib/admin/inc/theme-update-notification.php:72 +msgid "Theme Updates" +msgstr "" + +#: ../lib/admin/inc/theme-update-notification.php:73 +msgid "There is a new version of the" +msgstr "" + +#: ../lib/admin/inc/theme-update-notification.php:73 +msgid "theme available." +msgstr "" + +#: ../lib/admin/inc/theme-update-notification.php:73 +msgid "You have version" +msgstr "" + +#: ../lib/admin/inc/theme-update-notification.php:73 +msgid "installed. Update to version" +msgstr "" + +#: ../lib/admin/inc/theme-update-notification.php:81 +msgid "To update to the latest version of" +msgstr "" + +#: ../lib/admin/inc/theme-update-notification.php:81 +msgid "see the" +msgstr "" + +#: ../lib/admin/inc/theme-update-notification.php:81 +msgid "Updating The Theme" +msgstr "" + +#: ../lib/admin/inc/theme-update-notification.php:81 +msgid "section of the help file." +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:13 +msgid "Enhanced display for your sidebar posts." +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:14 +msgid "GP Sidebar Posts" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:212 +#: ../lib/admin/inc/theme-widgets.php:230 +#: ../lib/admin/inc/theme-widgets.php:505 +#: ../lib/admin/inc/theme-widgets.php:523 +msgid "All Images" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:220 +#: ../lib/admin/inc/theme-widgets.php:513 +msgid "Category IDs" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:224 +#: ../lib/admin/inc/theme-widgets.php:517 +msgid "Number Of Posts" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:228 +#: ../lib/admin/inc/theme-widgets.php:521 +msgid "Images" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:231 +#: ../lib/admin/inc/theme-widgets.php:524 +msgid "First Image" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:232 +#: ../lib/admin/inc/theme-widgets.php:525 +msgid "No Images" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:236 +#: ../lib/admin/inc/theme-widgets.php:529 +msgid "Image Width (px)" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:240 +#: ../lib/admin/inc/theme-widgets.php:533 +msgid "Image Height (px)" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:244 +#: ../lib/admin/inc/theme-widgets.php:537 +msgid "Display Post Categories" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:251 +#: ../lib/admin/inc/theme-widgets.php:544 +msgid "Display Post Meta" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:267 +#: ../lib/admin/inc/theme-widgets.php:560 +msgid "Sort By" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:269 +#: ../lib/admin/inc/theme-widgets.php:562 +msgid "date" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:272 +#: ../lib/admin/inc/theme-widgets.php:565 +msgid "Votes" +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:301 +msgid "Enhanced display for your footer posts." +msgstr "" + +#: ../lib/admin/inc/theme-widgets.php:302 +msgid "GP Footer Posts" +msgstr "" + +#: ../lib/admin/inc/shortcodes/author-info.php:9 +msgid "Visit My Website" +msgstr "" + +#: ../lib/admin/inc/shortcodes/author-info.php:24 +msgid "View My Other Posts" +msgstr "" + +#: ../lib/admin/inc/shortcodes/contact-form.php:18 +msgid "Thanks" +msgstr "" + +#: ../lib/admin/inc/shortcodes/contact-form.php:18 +msgid "Your message was successfully sent." +msgstr "" + +#: ../lib/admin/inc/shortcodes/contact-form.php:24 +msgid "There was an error submitting this message." +msgstr "" + +#: ../lib/admin/inc/shortcodes/contact-form.php:96 +msgid "Send →" +msgstr "" + +#: ../lib/admin/inc/shortcodes/dividers.php:11 +msgid "Top" +msgstr "" + +#: ../lib/admin/inc/tinymce/window_options.php:8 +msgid "You are not allowed to be here" +msgstr "" + +#: ../lib/admin/inc/tinymce/window_options.php:13 +msgid " Shortcodes" +msgstr "" + +#: ../lib/admin/inc/tinymce/window_options.php:25 +msgid "Shortcodes" +msgstr "" + +#: ../lib/admin/inc/tinymce/window_options.php:34 +msgid "Insert a shortcode from the drop down menu." +msgstr "" + +#: ../lib/admin/inc/tinymce/window_options.php:38 +msgid "Select A Shortcode" +msgstr "" + +#: ../lib/admin/inc/tinymce/window_options.php:94 +msgid "Insert" +msgstr "" + +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:51 +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:129 +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:201 +msgid "Import Widgets" +msgstr "" + +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:53 +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:63 +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:116 +msgid "Export Widgets" +msgstr "" + +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:65 +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:131 +msgid "Please select a widget to continue." +msgstr "" + +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:70 +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:137 +msgid "Select All Active Widgets" +msgstr "" + +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:71 +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:138 +msgid "Un-Select All Active Widgets" +msgstr "" + +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:207 +msgid "Select the file that contains widget settings" +msgstr "" + +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:208 +msgid "No file chosen" +msgstr "" + +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:209 +msgid "Choose file" +msgstr "" + +#: ../lib/admin/inc/widget-settings-importexport/widget_data.php:213 +msgid "Upload file and import" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:109 +msgid "Started topic:" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:110 +msgid "Posted on:" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:111 +msgid "Created" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:112 +msgid "Posted" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:113 +msgid "Started" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:114 +msgid "in" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:124 +msgid "My Favorites" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:125 +msgid "Accepted" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:126 +msgid "Rejected" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:127 +msgid "Show all comments for this thread" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:128 +msgid "Show all" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:129 +msgid "comments" +msgstr "" + +#: ../lib/buddypress/functions-buddypress.php:130 +msgid "Close" +msgstr "" + +#: ../lib/inc/contact.php:49 +msgid "You have received a message from " +msgstr "" + +#: ../lib/inc/contact.php:51 +msgid "Name: " +msgstr "" + +#: ../lib/inc/contact.php:51 +msgid "Email: " +msgstr "" + +#: ../lib/inc/contact.php:51 +msgid "Comment: " +msgstr "" + +#: ../lib/inc/contact.php:52 +msgid "From: " +msgstr "" + +#: ../lib/inc/contact.php:52 +msgid "Reply-To: " +msgstr "" + +#: ../lib/scripts/custom.php:38 +#: ../lib/scripts/custom.php:43 +msgid "Share ▼" +msgstr "" + +#: ../lib/scripts/custom.php:41 +msgid "Share ▲" +msgstr "" + +#: ../lib/scripts/wp-favorite-posts/wp-favorite-posts.php:139 +#: ../lib/scripts/wp-favorite-posts/wp-favorite-posts.php:143 +msgid "Unfollow" +msgstr "" + +#: ../lib/scripts/wp-favorite-posts/wp-favorite-posts.php:141 +#: ../lib/scripts/wp-favorite-posts/wp-favorite-posts.php:145 +msgid "Follow" +msgstr "" + +#: ../lib/scripts/wp-favorite-posts/wpfp-widgets.php:87 +msgid "Number of posts to show:" +msgstr "" + +#: ../lib/scripts/wp-favorite-posts/wpfp-your-favs-widget.php:15 +msgid "Your are not currently following any items." +msgstr "" + +#: ../members/index.php:23 +msgid "Members Directory" +msgstr "" + +#: ../members/index.php:58 +#: ../members/single/friends.php:23 +msgid "Newest Registered" +msgstr "" + +#: ../members/members-loop.php:108 +msgid "Sorry, no members were found." +msgstr "" + +#: ../members/single/friends/requests.php:68 +msgid "You have no pending friendship requests." +msgstr "" + +#: ../members/single/groups/invites.php:14 +#, php-format +msgid "%s members" +msgstr "" + +#: ../members/single/groups/invites.php:37 +msgid "You have no outstanding group invites." +msgstr "" + +#: ../members/single/messages/compose.php:5 +msgid "Send To (Username or Friend's Name)" +msgstr "" + +#: ../members/single/messages/compose.php:14 +msgid "This is a notice to all users." +msgstr "" + +#: ../members/single/messages/compose.php:17 +msgid "Subject" +msgstr "" + +#: ../members/single/messages/compose.php:20 +msgid "Message" +msgstr "" + +#: ../members/single/messages/compose.php:28 +msgid "Send Message" +msgstr "" + +#: ../members/single/messages/messages-loop.php:31 +msgid "From:" +msgstr "" + +#: ../members/single/messages/messages-loop.php:36 +msgid "To:" +msgstr "" + +#: ../members/single/messages/messages-loop.php:42 +msgid "View Message" +msgstr "" + +#: ../members/single/messages/messages-loop.php:50 +#: ../members/single/messages/notices-loop.php:38 +#: ../members/single/messages/single.php:24 +msgid "Delete Message" +msgstr "" + +#: ../members/single/messages/messages-loop.php:68 +msgid "Sorry, no messages were found." +msgstr "" + +#: ../members/single/messages/notices-loop.php:31 +msgid "Sent:" +msgstr "" + +#: ../members/single/messages/notices-loop.php:49 +msgid "Sorry, no notices were found." +msgstr "" + +#: ../members/single/messages/single.php:14 +msgid "You are alone in this conversation." +msgstr "" + +#: ../members/single/messages/single.php:18 +#, php-format +msgid "Conversation between %s and you." +msgstr "" + +#: ../members/single/messages/single.php:75 +msgid "Send a Reply" +msgstr "" + +#: ../members/single/messages/single.php:91 +msgid "Send Reply" +msgstr "" + +#: ../members/single/profile/change-avatar.php:1 +msgid "Change Avatar" +msgstr "" + +#: ../members/single/profile/change-avatar.php:7 +msgid "Your avatar will be used on your profile and throughout the site. If there is a Gravatar associated with your account email we will use that, or you can upload an image from your computer." +msgstr "" + +#: ../members/single/profile/change-avatar.php:14 +msgid "Click below to select a JPG, GIF or PNG format photo from your computer and then click 'Upload Image' to proceed." +msgstr "" + +#: ../members/single/profile/change-avatar.php:23 +msgid "If you'd like to delete your current avatar but not upload a new one, please use the delete avatar button." +msgstr "" + +#: ../members/single/profile/change-avatar.php:24 +msgid "Delete My Avatar" +msgstr "" + +#: ../members/single/profile/change-avatar.php:31 +msgid "Crop Your New Avatar" +msgstr "" + +#: ../members/single/profile/change-avatar.php:55 +msgid "Your avatar will be used on your profile and throughout the site. To change your avatar, please create an account with Gravatar using the same email address as you used to register with this site." +msgstr "" + +#: ../members/single/profile/edit.php:10 +#, php-format +msgid "Editing '%s' Profile Group" +msgstr "" + +#: ../members/single/profile/edit.php:26 +#: ../members/single/profile/edit.php:33 +#: ../members/single/profile/edit.php:40 +#: ../members/single/profile/edit.php:49 +#: ../members/single/profile/edit.php:67 +#: ../members/single/profile/edit.php:83 +#: ../members/single/profile/edit.php:93 +#: ../registration/register.php:37 +#: ../registration/register.php:41 +#: ../registration/register.php:45 +#: ../registration/register.php:49 +#: ../registration/register.php:76 +#: ../registration/register.php:84 +#: ../registration/register.php:92 +#: ../registration/register.php:102 +#: ../registration/register.php:113 +#: ../registration/register.php:128 +#: ../registration/register.php:139 +#: ../registration/register.php:189 +#: ../registration/register.php:198 +msgid "(required)" +msgstr "" + +#: ../members/single/profile/edit.php:58 +#: ../members/single/profile/edit.php:73 +#: ../registration/register.php:119 +msgid "Clear" +msgstr "" + +#: ../members/single/profile/profile-wp.php:8 +#, php-format +msgid "%s's Profile" +msgstr "" + +#: ../members/single/profile/profile-wp.php:24 +msgid "About Me" +msgstr "" + +#: ../members/single/profile/profile-wp.php:42 +msgid "Jabber" +msgstr "" + +#: ../members/single/profile/profile-wp.php:51 +msgid "AOL Messenger" +msgstr "" + +#: ../members/single/profile/profile-wp.php:60 +msgid "Yahoo Messenger" +msgstr "" + +#: ../members/single/settings/delete-account.php:50 +msgid "Delete Account" +msgstr "" + +#: ../members/single/settings/delete-account.php:55 +msgid "WARNING: Deleting your account will completely remove ALL content associated with it. There is no way back, please be careful with this option." +msgstr "" + +#: ../members/single/settings/delete-account.php:58 +msgid "I understand the consequences of deleting my account." +msgstr "" + +#: ../members/single/settings/delete-account.php:63 +msgid "Delete My Account" +msgstr "" + +#: ../members/single/settings/general.php:56 +msgid "Current Password (required to update email or change current password)" +msgstr "" + +#: ../members/single/settings/general.php:57 +msgid "Password Lost and Found" +msgstr "" + +#: ../members/single/settings/general.php:57 +msgid "Lost your password?" +msgstr "" + +#: ../members/single/settings/general.php:59 +msgid "Account Email" +msgstr "" + +#: ../members/single/settings/general.php:62 +msgid "Change Password (leave blank for no change)" +msgstr "" + +#: ../members/single/settings/general.php:64 +msgid "Repeat New Password" +msgstr "" + +#: ../members/single/settings/notifications.php:50 +msgid "Email Notification" +msgstr "" + +#: ../members/single/settings/notifications.php:55 +msgid "Send a notification by email when:" +msgstr "" + +#: ../registration/activate.php:12 +msgid "Account Activated" +msgstr "" + +#: ../registration/activate.php:17 +msgid "Your account was activated successfully! Your account details have been sent to you in a separate email." +msgstr "" + +#: ../registration/activate.php:19 +msgid "Your account was activated successfully! You can now log in with the username and password you provided when you signed up." +msgstr "" + +#: ../registration/activate.php:24 +msgid "Activate your Account" +msgstr "" + +#: ../registration/activate.php:28 +msgid "Please provide a valid activation key." +msgstr "" + +#: ../registration/activate.php:32 +msgid "Activation Key:" +msgstr "" + +#: ../registration/activate.php:36 +msgid "Activate" +msgstr "" + +#: ../registration/register.php:16 +msgid "User registration is currently not allowed." +msgstr "" + +#: ../registration/register.php:23 +msgid "Create an Account" +msgstr "" + +#: ../registration/register.php:27 +msgid "Registering for this site is easy, just fill in the fields below and we'll get a new account set up for you in no time." +msgstr "" + +#: ../registration/register.php:35 +msgid "Account Details" +msgstr "" + +#: ../registration/register.php:41 +msgid "Email Address" +msgstr "" + +#: ../registration/register.php:45 +msgid "Choose a Password" +msgstr "" + +#: ../registration/register.php:49 +msgid "Confirm Password" +msgstr "" + +#: ../registration/register.php:65 +msgid "Profile Details" +msgstr "" + +#: ../registration/register.php:183 +msgid "Blog Details" +msgstr "" + +#: ../registration/register.php:185 +msgid "Yes, I'd like to create a new site" +msgstr "" + +#: ../registration/register.php:189 +msgid "Blog URL" +msgstr "" + +#: ../registration/register.php:198 +msgid "Site Title" +msgstr "" + +#: ../registration/register.php:202 +msgid "I would like my site to appear in search engines, and in public listings around this network." +msgstr "" + +#: ../registration/register.php:219 +msgid "Complete Sign Up" +msgstr "" + +#: ../registration/register.php:230 +msgid "Sign Up Complete!" +msgstr "" + +#: ../registration/register.php:236 +msgid "You have successfully created your account! To begin using this site you will need to activate your account via the email we have just sent to your address." +msgstr "" + +#: ../registration/register.php:238 +msgid "You have successfully created your account! Please log in using the username and password you have just created." +msgstr "" + diff --git a/wp-content/themes/score/lib/admin/css/admin.css b/wp-content/themes/score/lib/admin/css/admin.css new file mode 100644 index 0000000..23ac759 --- /dev/null +++ b/wp-content/themes/score/lib/admin/css/admin.css @@ -0,0 +1,454 @@ +/*************************** Theme Options ***************************/ + +#theme-options-wrapper { +position: relative; +width: 800px; +} + +/* Buttons */ +#theme-options-wrapper .submit { +width: 100%; +margin: 15px 0; +padding: 0; +float: left; +clear: both; +} +#theme-options-wrapper .submit input[type="submit"] { +float: right; +margin-left: 10px; +} +input[type="submit"], +input[type="reset"] { +cursor: pointer; +} + +/* Tabs */ +#theme-options-wrapper .tabs { +float: left; +position: relative; +z-index: 1; +margin: 0; +width: 200px; +border-top: 1px solid #c0c0c0; +} +#theme-options-wrapper .tabs a { +display: block; +padding:10px 15px; +margin: 0; +text-decoration:none !important; +font-size:12px; +color: #000000; +font-weight: normal; +background: #f1f1f1; +color: #404040; +border-left: 1px solid #c0c0c0; +border-right: 1px solid #c0c0c0; +border-bottom: 1px solid #c0c0c0; +cursor: pointer; +} +#theme-options-wrapper .tabs a:hover { +background-color:#ffffff; +} +#theme-options-wrapper .tabs .tab-active { +background: #ffffff; +color: #000000; +border-right: 0px solid #ffffff; +font-weight: bold; +} + +/* Panels */ +#panels { +float: left; +position: relative; +} +.panel { +float: left; +position: relative; +z-index: 0; +width: 550px; +min-height: 700px; +padding: 10px 20px 10px 20px; +background: #ffffff; +margin-left: -1px; +border: 1px solid #c0c0c0; +} +.panel h3 { +font-size: 14px; +margin: 0 0 5px 0; +padding: 0; +} +.option { +clear: both; +margin: 0 0 20px 0; +} +.option-header { +margin-bottom: 10px; +} +.option-desc { +font-size: 10px; +color: #808080; +} + +/* Text Area */ +#theme-options-wrapper textarea { +max-width: 500px; +} + +/* Checkbox */ +#theme-options-wrapper .multi-checkbox h3 { +margin-bottom: 15px; +} +#theme-options-wrapper input[type="checkbox"] { +float: left; +margin: 3px 0 0 0; +border: 0; +} +.multi-checkbox .option-desc { +color: #808080; +float: left; +width: 410px; +font-size: 16px; +padding: 0 0 10px 10px; +} + +/* Radio Buttons */ +.radio-buttons input[type="radio"] { +float: left; +border: 0; +} +.radio-buttons label { +float: left; +display: block; +margin: -1px 15px 0 5px; +} + +/* Color Picker */ +.colorpicker { +width: 342px; +height: 170px; +overflow: hidden; +position: absolute; +background: #fafafa url(../images/colorpicker/color_bg.png); +font-family: Arial, Helvetica, sans-serif; +display: none; +border: 1px solid #ccc; +border-color: #ddd #bbb #bbb #ddd; +-moz-border-radius: 4px; +-webkit-border-radius: 4px; +border-radius: 4px; +z-index: 100; +} +.colorpicker_color { +width: 150px; +height: 150px; +left: 10px; +top: 10px; +position: absolute; +background: #f00; +overflow: hidden; +cursor: crosshair; +} +.colorpicker_color div { +position: absolute; +top: 0; +left: 0; +width: 150px; +height: 150px; +background: url(../images/colorpicker/color_overlay.png); +} +.colorpicker_color div div { +position: absolute; +top: 0; +left: 0; +width: 11px; +height: 11px; +overflow: hidden; +background: url(../images/colorpicker/color_select.gif); +margin: -5px 0 0 -5px; +} +.colorpicker_hue { +position: absolute; +top: 10px; +left: 164px; +width: 35px; +height: 150px; +cursor: n-resize; +} +.colorpicker_hue div { +position: absolute; +width: 35px; +height: 9px; +overflow: hidden; +background: url(../images/colorpicker/color_indicator.png) left top; +margin: -5px 0 0 0; +} +.colorpicker_new_color { +position: absolute; +width: 60px; +height: 30px; +right: 80px; +top: 10px; +background: #f00; +} +.colorpicker_current_color { +position: absolute; +width: 60px; +height: 30px; +right: 10px; +top: 10px; +background: #f00; +} +.colorpicker input { +background-color: transparent; +border: 1px solid transparent; +position: absolute; +font-size: 10px; +font-family: Arial, Helvetica, sans-serif; +color: #666; +top: 6px; +right: 11px; +text-align: right; +margin: 0; +padding: 0; +height: 11px; +} +.colorpicker_hex { +position: absolute; +width: 72px; +height: 22px; +background: url(../images/colorpicker/color_hex.png) top; +left: 201px; +bottom: 9px; +} +.colorpicker_hex input { +right: 6px; +} +.colorpicker_field { +height: 22px; +width: 62px; +background-position: top; +position: absolute; +} +.colorpicker_field span { +position: absolute; +width: 12px; +height: 22px; +overflow: hidden; +top: 0; +right: 0; +cursor: n-resize; +} +.colorpicker_rgb_r { +background-image: url(../images/colorpicker/color_rgb_r.png); +top: 49px; +left: 201px; +} +.colorpicker_rgb_g { +background-image: url(../images/colorpicker/color_rgb_g.png); +top: 79px; +left: 201px; +} +.colorpicker_rgb_b { +background-image: url(../images/colorpicker/color_rgb_b.png); +top: 109px; +left: 201px; +} +.colorpicker_hsb_h { +background-image: url(../images/colorpicker/color_hsb_h.png); +top: 49px; +right: 9px; +} +.colorpicker_hsb_s { +background-image: url(../images/colorpicker/color_hsb_s.png); +top: 79px; +right: 9px; +} +.colorpicker_hsb_b { +background-image: url(../images/colorpicker/color_hsb_b.png); +top: 109px; +right: 9px; +} +.colorpicker_submit { +position: absolute; +width: 16px; +height: 16px; +background: url(../images/colorpicker/color_wheel.png) top; +right: 10px; +bottom: 10px; +overflow: hidden; +} +.colorpicker_focus { +background-position: center; +} +.colorpicker_hex.colorpicker_focus { +background-position: bottom; +} +.colorpicker_submit.colorpicker_focus { +background-position: bottom; +} +.colorpicker_slider { +background-position: bottom; +} +.option-colorpicker .element { +float: left; +width: 100px; +} +.option-colorpicker .element input { +width: 68px; +} +#theme_link_colour { +float: left; +} +.cp_box { +float: right; +width: 25px; +height: 25px; +position: relative; +top: 1px; +border: 1px solid #ccc; +border-color: #ccc #eee #eee #ccc; +background: #fafafa; +-webkit-border-radius: 4px; +-moz-border-radius: 4px; +border-radius: 4px; +} +.cp_box div { +width: 13px; +height: 13px; +border: 1px solid #bbb; +border-color: #eee #ccc #ccc #eee; +background: #fafafa url(../images/empty.gif); +position: absolute; +left: 5px; +top: 5px; +box-shadow: 1px 1px 0px #ccc; +-webkit-box-shadow: 1px 1px 0px #ccc; +-moz-box-shadow: 1px 1px 0px #ccc; +} + + +/*************************** Theme Meta Options ***************************/ + +/* Meta Settings */ +.meta-settings { +font-size: 11px; +width: 100%; +} +.meta-settings h4 { +float: left; +font-size: 13px; +margin: 10px 0 20px 0; +} +.meta-settings-desc { +font-size: 10px; +line-height: 16px; +color: #808080; +line-height: 16px; +margin: -20px 0 20px 0; +} + +/* Meta Box */ +.meta-box { +float: left; +width: 23%; +padding-right: 1%; +} +.meta-box strong { +padding-bottom: 5px; +} +.meta-box-desc { +font-size: 10px; +line-height: 16px; +padding-top: 5px; +color: #808080; +} +.meta-box input[type="text"], +.meta-box select, +.meta-box textarea { +margin-top: 5px; +font-size: 11px !important; +width: 90%; +} +.meta-box.upload-field input[type="text"] { +width: 60%; +} +.meta-box input[type="checkbox"] { +border: 0; +} +.text-small input[type="text"] { +width: 45px; +} +.meta-box.text-large { +width: 100%; +padding: 0; +} +.text-large textarea { +float: left; +width: 100%; +height: 200px; +padding-bottom: 10px; +} +.separator { +clear: both; +width: 100%; +height: 1px; +line-height: 1px; +padding: 0; +margin: 20px 0 10px 0; +border-top: 1px solid #c0c0c0; +} + + +/*************************** Order Slides List ***************************/ + +#sort-list { +margin-top: 20px; +} +#sort-list li { +padding: 10px; +width: 70%; +font-weight: bold; +background: #f0f0f0; +filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7f7f7', endColorstr='#e7e7e7'); +background: -webkit-gradient(linear, left top, left bottom, from(#f7f7f7), to(#e7e7e7)); +background: -moz-linear-gradient(top, #f7f7f7, #e7e7e7); +cursor: move; +border: 1px solid #ddd; +border-raidus: 10px; +-moz-border-radius: 10px; +-webkit-border-radius: 10px; +} +#sort-list li img { +float: left; +margin-right: 10px; +} +#sort-list h4 { +padding: 0; +margin: 0 0 10px 0; +} +#loading-animation { +display: none; +} + + +/*************************** General Styling ***************************/ + +.divider { +clear: both; +width: 100%; +height: 1px; +line-height: 1px; +padding: 0; +margin: 15px 0; +border-top: 1px dotted #c0c0c0; +} +.clear { +clear: both; +line-height: 0; +padding: 0; +margin: 0; +height: 0; +display:block; +font-size:0; +width:100%; +} \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_bg.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_bg.png new file mode 100644 index 0000000..b93c293 Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_bg.png differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_hex.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_hex.png new file mode 100644 index 0000000..027da77 Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_hex.png differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_hsb_b.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_hsb_b.png new file mode 100644 index 0000000..2138ec5 Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_hsb_b.png differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_hsb_h.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_hsb_h.png new file mode 100644 index 0000000..2a27af6 Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_hsb_h.png differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_hsb_s.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_hsb_s.png new file mode 100644 index 0000000..6352f81 Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_hsb_s.png differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_indicator.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_indicator.png new file mode 100644 index 0000000..00d41f6 Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_indicator.png differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_overlay.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_overlay.png new file mode 100644 index 0000000..561cdd9 Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_overlay.png differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_rgb_b.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_rgb_b.png new file mode 100644 index 0000000..16f729f Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_rgb_b.png differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_rgb_g.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_rgb_g.png new file mode 100644 index 0000000..c197d6b Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_rgb_g.png differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_rgb_r.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_rgb_r.png new file mode 100644 index 0000000..d2e5e26 Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_rgb_r.png differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_select.gif b/wp-content/themes/score/lib/admin/images/colorpicker/color_select.gif new file mode 100644 index 0000000..599f7f1 Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_select.gif differ diff --git a/wp-content/themes/score/lib/admin/images/colorpicker/color_wheel.png b/wp-content/themes/score/lib/admin/images/colorpicker/color_wheel.png new file mode 100644 index 0000000..809fb00 Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/colorpicker/color_wheel.png differ diff --git a/wp-content/themes/score/lib/admin/images/empty.gif b/wp-content/themes/score/lib/admin/images/empty.gif new file mode 100644 index 0000000..8368bae Binary files /dev/null and b/wp-content/themes/score/lib/admin/images/empty.gif differ diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/accordions.php b/wp-content/themes/score/lib/admin/inc/shortcodes/accordions.php new file mode 100644 index 0000000..87260ab --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/accordions.php @@ -0,0 +1,21 @@ + '' + ), $atts)); + + if($code=="accordion") { + return '
                      '.do_shortcode($content).'
                      '; + } elseif($code=="panel") { + return '

                      '.esc_attr($title).'

                      '.do_shortcode($content).'
                      '; + } + +} + +add_shortcode("accordion", "ghostpool_accordion"); +add_shortcode("panel", "ghostpool_accordion"); + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/author-info.php b/wp-content/themes/score/lib/admin/inc/shortcodes/author-info.php new file mode 100644 index 0000000..39da2f6 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/author-info.php @@ -0,0 +1,40 @@ +'.__('Visit My Website', 'gp_lang').' / '; + } else { + $website = ''; + } + + $out .= + + '
                      '. + + get_avatar(get_the_author_id(), 50).' + +
                      + +
                      '.get_the_author().'
                      '. + + ' + +

                      + +
                      '.get_the_author_meta('description').'
                      + +
                      + +
                      + '; + + return $out; + +} +add_shortcode("author", "ghostpool_author_info_panel"); + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/blockquotes.php b/wp-content/themes/score/lib/admin/inc/shortcodes/blockquotes.php new file mode 100644 index 0000000..5e19881 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/blockquotes.php @@ -0,0 +1,15 @@ +'.do_shortcode($content).'
                      '; +} +add_shortcode("bq_left", "ghostpool_left_blockquote"); + +function ghostpool_right_blockquote($atts, $content = null) { + return '
                      '.do_shortcode($content).'
                      '; +} +add_shortcode("bq_right", "ghostpool_right_blockquote"); + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/columns.php b/wp-content/themes/score/lib/admin/inc/shortcodes/columns.php new file mode 100644 index 0000000..9c64152 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/columns.php @@ -0,0 +1,140 @@ + '', + 'type' => 'blank', + 'text_align' => 'text-left', + 'height' => '', + 'padding' => '', + 'margins' => '', + 'background' => '' + ), $atts)); + + if($code=="one") { + $class = "one first last"; + } elseif($code=="two") { + $class = "two first"; + } elseif($code=="two_last") { + $class = "two last"; + } elseif($code=="three") { + $class = "three first"; + } elseif($code=="three_middle") { + $class = "three middle"; + } elseif($code=="three_last") { + $class = "three last"; + } elseif($code=="four") { + $class = "four first"; + } elseif($code=="four_middle") { + $class = "four middle"; + } elseif($code=="four_last") { + $class = "four last"; + } elseif($code=="five") { + $class = "five first"; + } elseif($code=="five_middle") { + $class = "five middle"; + } elseif($code=="five_last") { + $class = "five last"; + } elseif($code=="onethird") { + $class = "onethird first"; + } elseif($code=="onethird_last") { + $class = "onethird last"; + } elseif($code=="twothirds") { + $class = "twothirds first"; + } elseif($code=="twothirds_last") { + $class = "twothirds last"; + } elseif($code=="onefourth") { + $class = "onefourth first"; + } elseif($code=="onefourth_last") { + $class = "onefourth last"; + } elseif($code=="threefourths") { + $class = "threefourths"; + } elseif($code=="threefourths_last") { + $class = "threefourths last"; + } + + if($type == "blank") { + $col_type = "blank"; + } elseif($type == "joint") { + $col_type = "joint"; + } elseif($type == "separate") { + $col_type = "separate"; + } + + $clear = strpos($class,"last"); + + // Height + if($height != "") { + if(preg_match('/%/', $height) OR preg_match('/em/', $height) OR preg_match('/px/', $height)) { + $height = 'height: '.$height.'; '; + } else { + $height = 'height: '.$height.'px; '; + } + } else { + $height = ""; + } + + // Padding + if($padding != "") { + if(preg_match('/%/', $padding) OR preg_match('/em/', $padding) OR preg_match('/px/', $padding)) { + $padding = str_replace(",", " ", $padding); + $padding = 'padding: '.$padding.'; '; + } else { + $padding = str_replace(",", "px ", $padding); + $padding = 'padding: '.$padding.'px; '; + } + } else { + $padding = ""; + } + + // Margins + if($margins != "") { + if(preg_match('/%/', $margins) OR preg_match('/em/', $margins) OR preg_match('/px/', $margins)) { + $margins = str_replace(",", " ", $margins); + $margins = 'margin: '.$margins.'; '; + } else { + $margins = str_replace(",", "px ", $margins); + $margins = 'margin: '.$margins.'px; '; + } + } else { + $margins = ""; + } + + // Background + if($background != "") { + $background = 'background: '.$background.'; '; + } else { + $background = ""; + } + + if($clear === false) { + return '
                      '.do_shortcode($content).'
                      '; + } else { + return '
                      '.do_shortcode($content).'
                      '; + } +} + +add_shortcode("one", "ghostpool_columns"); +add_shortcode("two", "ghostpool_columns"); +add_shortcode("two_last", "ghostpool_columns"); +add_shortcode("three", "ghostpool_columns"); +add_shortcode("three_middle", "ghostpool_columns"); +add_shortcode("three_last", "ghostpool_columns"); +add_shortcode("four", "ghostpool_columns"); +add_shortcode("four_middle", "ghostpool_columns"); +add_shortcode("four_last", "ghostpool_columns"); +add_shortcode("five", "ghostpool_columns"); +add_shortcode("five_middle", "ghostpool_columns"); +add_shortcode("five_last", "ghostpool_columns"); +add_shortcode("onethird", "ghostpool_columns"); +add_shortcode("onethird_last", "ghostpool_columns"); +add_shortcode("twothirds", "ghostpool_columns"); +add_shortcode("twothirds_last", "ghostpool_columns"); +add_shortcode("onefourth", "ghostpool_columns"); +add_shortcode("onefourth_last", "ghostpool_columns"); +add_shortcode("threefourths", "ghostpool_columns"); +add_shortcode("threefourths_last", "ghostpool_columns"); + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/contact-form.php b/wp-content/themes/score/lib/admin/inc/shortcodes/contact-form.php new file mode 100644 index 0000000..1b40d01 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/contact-form.php @@ -0,0 +1,110 @@ + '' + ),$atts)); + + // Form Submitted + if(isset($_POST['submittedContact'])) { + require(ghostpool_inc . "/contact.php"); + } + + if(isset($emailSent) && $emailSent == true) { + + $out .= ''; + $out .= '
                      '.__('Thanks', 'gp_lang').' '.$name.'. '.__('Your message was successfully sent.', 'gp_lang').'
                      '; + + } else { + + if(isset($captchaError)) { + $out .= ''; + $out .= '
                      '.__('There was an error submitting this message.', 'gp_lang').'
                      '; + } + + // Name + $out .= ''; + $out .= '
                      '; + $out .= '

                      *

                      '; + + + // Email + $out .= '

                      *

                      '; + + + // Comments + $out .= '

                      '; + + $out .= '
                      '; + $out .= '

                      '; + + $out .= ''; + $out .= ''; + + $out .= ''; + + } + return $out; +} + +add_shortcode("contact", "ghostpool_contact_form"); + +?> diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/dividers.php b/wp-content/themes/score/lib/admin/inc/shortcodes/dividers.php new file mode 100644 index 0000000..9cce4b9 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/dividers.php @@ -0,0 +1,30 @@ +
                      '; +} +add_shortcode("divider", "ghostpool_default_divider"); + +function ghostpool_top_divider($atts, $content = null) { + return ''; +} +add_shortcode("top_divider", "ghostpool_top_divider"); + +function ghostpool_small_divider($atts, $content = null) { + return '
                      '; +} +add_shortcode("small_divider", "ghostpool_small_divider"); + +function ghostpool_clear_divider($atts, $content = null) { + return '
                      '; +} +add_shortcode("clear", "ghostpool_clear_divider"); + +function ghostpool_small_clear_divider($atts, $content = null) { + return '
                      '; +} +add_shortcode("small_clear", "ghostpool_small_clear_divider"); + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/logged-in.php b/wp-content/themes/score/lib/admin/inc/shortcodes/logged-in.php new file mode 100644 index 0000000..ae1b58f --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/logged-in.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/logged-out.php b/wp-content/themes/score/lib/admin/inc/shortcodes/logged-out.php new file mode 100644 index 0000000..9e39e8b --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/logged-out.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/sidebars.php b/wp-content/themes/score/lib/admin/inc/shortcodes/sidebars.php new file mode 100644 index 0000000..7d93457 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/sidebars.php @@ -0,0 +1,27 @@ + 'default', + 'width' => '', + 'align' => 'alignnone', + ), $atts)); + + ob_start(); ?> + +
                      + + \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/tabs.php b/wp-content/themes/score/lib/admin/inc/shortcodes/tabs.php new file mode 100644 index 0000000..bcc0d31 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/tabs.php @@ -0,0 +1,38 @@ + '' + ), $atts)); + + if (!preg_match_all("/(.?)\[(tab)\b(.*?)(?:(\/))?\](?:(.+?)\[\/tab\])?(.?)/s", $content, $matches)) { + return do_shortcode($content); + + } else { + + for($i = 0; $i < count($matches[0]); $i++) { + $matches[3][$i] = shortcode_parse_atts($matches[3][$i]); + } + + $output = '
                      '; + + for($i = 0; $i < count($matches[0]); $i++) { + $output .= '
                      '.do_shortcode(trim($matches[5][$i])).'
                      '; + } + + return '
                      '.$output.'
                      '; + } + +} + +add_shortcode("tabs", "ghostpool_tabs"); + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/toggle-boxes.php b/wp-content/themes/score/lib/admin/inc/shortcodes/toggle-boxes.php new file mode 100644 index 0000000..f718af9 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/toggle-boxes.php @@ -0,0 +1,20 @@ + '', + ), $atts)); + + $out .= '

                      ' .$title. '

                      '; + $out .= ''; + + return $out; +} + +add_shortcode('toggle', 'ghostpool_toggle_box'); + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/shortcodes/videos.php b/wp-content/themes/score/lib/admin/inc/shortcodes/videos.php new file mode 100644 index 0000000..9219273 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/shortcodes/videos.php @@ -0,0 +1,120 @@ + '', + 'url' => '', + 'html5_1' => '', + 'html5_2' => '', + 'priority' => 'flash', + 'image' => '', + 'width' => '470', + 'height' => '320', + 'controlbar' => 'bottom', + 'autostart' => 'false', + 'icons' => 'true', + 'stretching' => 'fill', + 'align' => 'alignnone', + 'plugins' => '', + 'skin' => get_template_directory_uri().'/lib/scripts/mediaplayer/fs39/fs39.xml', + 'player' => get_template_directory_uri().'/lib/scripts/mediaplayer/player.swf' + ), $atts)); + + global $gp_settings; + + // Remove spaces from video name + $name = preg_replace('/[^a-zA-Z0-9]/', '', $name); + + // Video Type + $vimeo = strpos($url,"vimeo.com"); + $yt1 = strpos($url,"youtube.com"); + $yt2 = strpos($url,"youtu.be"); + + ob_start(); ?> + +
                      + +
                      + + + + + + + + + + + + + + + +
                      + + + + + + + +
                      + +
                      + + \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/theme-meta-options.php b/wp-content/themes/score/lib/admin/inc/theme-meta-options.php new file mode 100644 index 0000000..0eeb368 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/theme-meta-options.php @@ -0,0 +1,737 @@ + array( + 'name' => 'users_settings', + 'type' => 'open', + 'desc' => __('', 'gp_lang'), + 'title' => __('Users Settings', 'gp_lang')), + + 'ghostpool_destination_user_email' => array( + 'name' => 'ghostpool_destination_user_email', + 'title' => __('Destination user email', 'gp_lang'), + 'desc' => __('', 'gp_lang'), + 'std' => '', + 'type' => 'text', + 'size' => 'large'), + + 'ghostpool_destination_user_name' => array( + 'name' => 'ghostpool_destination_user_name', + 'title' => __('Destination user nick/name', 'gp_lang'), + 'desc' => __('', 'gp_lang'), + 'std' => '', + 'type' => 'text', + 'size' => 'large'), + + 'ghostpool_destination_user_id' => array( + 'name' => 'ghostpool_destination_user_id', + 'title' => __('Destination user', 'gp_lang'), + 'desc' => __('', 'gp_lang'), + 'std' => '', + 'type' => 'text', + 'size' => 'large'), + + array('type' => 'separator'), + array('type' => 'close'), + + 'video_settings' => array( + 'name' => 'video_settings', + 'type' => 'open', + 'desc' => __('', 'gp_lang'), + 'title' => __('Video Settings', 'gp_lang')), + 'ghostpool_dedication_url' => array( + 'name' => 'ghostpool_dedication_url', + 'title' => __('Video URL', 'gp_lang'), + 'desc' => __('Enter the video URL (YouTube / Vimeo).', 'gp_lang'), + 'type' => 'upload_video', 'std' => '', + 'size' => 'large', 'details' => 'px'), + 'ghostpool_dedication_artist' => array( + 'name' => 'ghostpool_dedication_artist', + 'title' => __('Artist name', 'gp_lang'), + 'desc' => __('Enter the artist name.', 'gp_lang'), + 'std' => '', 'type' => 'text'), + 'ghostpool_dedication_song' => array( + 'name' => 'ghostpool_dedication_song', + 'title' => __('Song name', 'gp_lang'), + 'desc' => __('Enter the song name.', 'gp_lang'), + 'std' => '', 'type' => 'text'), + + array('type' => 'close'), + array('type' => 'clear'), + ); + + return apply_filters('ghostpool_dedication_meta_boxes', $meta_boxes); +} + +/* * ************************* Post Settings ************************** */ + +function ghostpool_post_meta_boxes2() { + + $meta_boxes = array( + 'post_type_settings' => array('name' => 'post_type_settings', 'title' => __('Post Type Settings', 'gp_lang'), 'desc' => '', 'type' => 'open'), + 'ghostpool_post_type' => array('name' => 'ghostpool_post_type', 'title' => __('Post Type', 'gp_lang'), 'desc' => __('Choose the post type.', 'gp_lang'), 'type' => 'select', 'std' => '', 'options' => array('Article' => __('Article', 'gp_lang'), 'Review' => __('Review', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'Video' => __('Video', 'gp_lang'))), + array('type' => 'separator'), + array('type' => 'close'), + 'thumbnail_settings' => array('name' => 'thumbnail_settings', 'type' => 'open', 'desc' => __('', 'gp_lang'), 'title' => __('Thumbnail Settings', 'gp_lang')), + 'ghostpool_thumbnail_width' => array('name' => 'ghostpool_thumbnail_width', 'title' => __('Thumbnail Width', 'gp_lang'), 'desc' => __('The width to crop the thumbnail to (set to 0 to have a proportionate width).', 'gp_lang'), 'std' => '', 'type' => 'text', 'size' => 'small', 'details' => 'px'), + 'ghostpool_thumbnail_height' => array('name' => 'ghostpool_thumbnail_height', 'title' => __('Thumbnail Height', 'gp_lang'), 'desc' => __('The height to crop the thumbnail to (set to 0 to have a proportionate height).', 'gp_lang'), 'std' => '', 'type' => 'text', 'size' => 'small', 'details' => 'px'), + array('type' => 'separator'), + array('type' => 'close'), + 'image_settings' => array('name' => 'image_settings', 'type' => 'open', 'desc' => '', 'title' => __('Image Settings', 'gp_lang')), + 'ghostpool_show_image' => array('name' => 'ghostpool_show_image', 'title' => __('Featured Image', 'gp_lang'), 'desc' => __('Choose whether to display the featured image.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), 'type' => 'select'), + 'ghostpool_image_width' => array('name' => 'ghostpool_image_width', 'title' => __('Image Width', 'gp_lang'), 'desc' => __('The width to crop the image to (set to 0 to have a proportionate width).', 'gp_lang'), 'std' => '', 'type' => 'text', 'size' => 'small', 'details' => 'px'), + 'ghostpool_image_height' => array('name' => 'ghostpool_image_height', 'title' => __('Image Height', 'gp_lang'), 'desc' => __('The height to crop the image to (set to 0 to have a proportionate height).', 'gp_lang'), 'std' => '', 'type' => 'text', 'size' => 'small', 'details' => 'px'), + 'ghostpool_image_wrap' => array('name' => 'ghostpool_image_wrap', 'title' => __('Image Wrap', 'gp_lang'), 'desc' => __('Choose whether the page content wraps around the featured image.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'Enable' => __('Enable', 'gp_lang'), 'Disable' => __('Disable', 'gp_lang')), 'type' => 'select'), + array('type' => 'divider'), + 'ghostpool_lightbox_content' => array('name' => 'ghostpool_lightbox_content', 'title' => __('Lightbox Content', 'gp_lang'), 'desc' => __('Upload images/audio/videos that will be opened in the lightbox, giving them an order value of "1".', 'gp_lang'), 'type' => 'gallery'), + array('type' => 'separator'), + array('type' => 'close'), + 'review_settings' => array('name' => 'review_settings', 'title' => __('Review Settings', 'gp_lang'), 'desc' => '', 'type' => 'open', 'style' => 'hidden'), + 'ghostpool_user_voting' => array('name' => 'ghostpool_user_voting', 'title' => __('User Voting', 'gp_lang'), 'desc' => __('Choose how users can vote.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'Vote with or without posting a comment' => __('Vote with or without posting a comment', 'gp_lang'), 'Vote without posting a comment' => __('Vote without posting a comment', 'gp_lang'), 'Vote only when posting a comment' => __('Vote only when posting a comment', 'gp_lang'), 'Users cannot vote' => __('Users cannot vote', 'gp_lang')), 'type' => 'select'), + 'ghostpool_user_comments' => array('name' => 'ghostpool_user_comments', 'title' => __('User Comments', 'gp_lang'), 'desc' => __('Choose whether users can post unlimited comments (only works with registered users).', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'Unlimited Comments' => __('Unlimited Comments', 'gp_lang'), 'One Comment' => __('One Comment', 'gp_lang')), 'type' => 'select'), + 'ghostpool_comment_thumbs' => array('name' => 'ghostpool_comment_thumbs', 'title' => __('Comment Thumbs', 'gp_lang'), 'desc' => __('Choose whether users can rate other comments.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'Users can rate other comments' => __('Users can rate other comments', 'gp_lang'), 'Users cannot rate other comments' => __('Users cannot rate other comments', 'gp_lang')), 'type' => 'select'), + 'ghostpool_review_details' => array('name' => 'ghostpool_review_details', 'title' => __('Review Details', 'gp_lang'), 'desc' => __('Add review details for this review e.g. release date, genre etc., adding each detail on a new line.', 'gp_lang'), 'type' => 'textarea'), + array('type' => 'divider'), + 'ghostpool_good_point' => array('name' => 'ghostpool_good_point', 'title' => __('Good Point', 'gp_lang'), 'desc' => __('A good point of the item being reviewed.', 'gp_lang'), 'std' => '', 'type' => 'text'), + 'ghostpool_bad_point' => array('name' => 'ghostpool_bad_point', 'title' => __('Bad Point', 'gp_lang'), 'desc' => __('A bad point of the item being reviewed.', 'gp_lang'), 'std' => '', 'type' => 'text'), + array('type' => 'divider'), + 'ghostpool_link_title' => array('name' => 'ghostpool_link_title', 'title' => __('Tab/Link Title', 'gp_lang'), 'desc' => '', 'type' => 'link_title'), + 'ghostpool_link_url' => array('name' => 'ghostpool_link_url', 'title' => __('Tag/Page Slug or Page URL', 'gp_lang'), 'desc' => '', 'type' => 'link_title', 'link_url' => true), 'ghostpool_link_type' => array('name' => 'ghostpool_link_type', 'title' => __('Tab Type', 'gp_lang'), 'desc' => '', 'type' => 'link_title', 'link_type_title' => "hide"), + array('type' => 'clear'), + 'ghostpool_link_title_0' => array('name' => 'ghostpool_link_title_0', 'desc' => '', 'std' => __('Review', 'gp_lang'), 'type' => 'link_text', 'link_number' => '1'), + array('type' => 'clear'), + 'ghostpool_link_title_1' => array('name' => 'ghostpool_link_title_1', 'desc' => '', 'type' => 'link_text', 'link_number' => '2'), + 'ghostpool_link_url_1' => array('name' => 'ghostpool_link_url_1', 'type' => 'link_text'), 'ghostpool_link_type_1' => array('name' => 'ghostpool_link_type_1', 'type' => 'link_select', 'options' => array('List Of Articles' => __('List Of Articles', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'List Of Videos' => __('List Of Videos', 'gp_lang'), 'Single Post/Page' => __('Single Post/Page', 'gp_lang'))), + array('type' => 'clear'), + 'ghostpool_link_title_2' => array('name' => 'ghostpool_link_title_2', 'type' => 'link_text', 'link_number' => '3'), + 'ghostpool_link_url_2' => array('name' => 'ghostpool_link_url_2', 'type' => 'link_text'), 'ghostpool_link_type_2' => array('name' => 'ghostpool_link_type_2', 'type' => 'link_select', 'options' => array('List Of Articles' => __('List Of Articles', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'List Of Videos' => __('List Of Videos', 'gp_lang'), 'Single Post/Page' => __('Single Post/Page', 'gp_lang'))), + array('type' => 'clear'), + 'ghostpool_link_title_3' => array('name' => 'ghostpool_link_title_3', 'type' => 'link_text', 'link_number' => '4'), + 'ghostpool_link_url_3' => array('name' => 'ghostpool_link_url_3', 'type' => 'link_text'), 'ghostpool_link_type_3' => array('name' => 'ghostpool_link_type_3', 'type' => 'link_select', 'options' => array('List Of Articles' => __('List Of Articles', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'List Of Videos' => __('List Of Videos', 'gp_lang'), 'Single Post/Page' => __('Single Post/Page', 'gp_lang'))), + array('type' => 'clear'), + 'ghostpool_link_title_4' => array('name' => 'ghostpool_link_title_4', 'type' => 'link_text', 'link_number' => '5'), + 'ghostpool_link_url_4' => array('name' => 'ghostpool_link_url_4', 'type' => 'link_text'), 'ghostpool_link_type_4' => array('name' => 'ghostpool_link_type_4', 'type' => 'link_select', 'options' => array('List Of Articles' => __('List Of Articles', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'List Of Videos' => __('List Of Videos', 'gp_lang'), 'Single Post/Page' => __('Single Post/Page', 'gp_lang'))), + array('type' => 'clear'), + 'ghostpool_link_title_5' => array('name' => 'ghostpool_link_title_5', 'type' => 'link_text', 'link_number' => '6'), + 'ghostpool_link_url_5' => array('name' => 'ghostpool_link_url_5', 'type' => 'link_text'), 'ghostpool_link_type_5' => array('name' => 'ghostpool_link_type_5', 'type' => 'link_select', 'options' => array('List Of Articles' => __('List Of Articles', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'List Of Videos' => __('List Of Videos', 'gp_lang'), 'Single Post/Page' => __('Single Post/Page', 'gp_lang'))), + array('type' => 'clear'), + 'ghostpool_link_title_6' => array('name' => 'ghostpool_link_title_6', 'type' => 'link_text', 'link_number' => '7'), + 'ghostpool_link_url_6' => array('name' => 'ghostpool_link_url_6', 'type' => 'link_text'), 'ghostpool_link_type_6' => array('name' => 'ghostpool_link_type_6', 'type' => 'link_select', 'options' => array('List Of Articles' => __('List Of Articles', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'List Of Videos' => __('List Of Videos', 'gp_lang'), 'Single Post/Page' => __('Single Post/Page', 'gp_lang'))), + array('type' => 'clear'), + 'ghostpool_link_title_7' => array('name' => 'ghostpool_link_title_7', 'type' => 'link_text', 'link_number' => '8'), + 'ghostpool_link_url_7' => array('name' => 'ghostpool_link_url_7', 'type' => 'link_text'), 'ghostpool_link_type_7' => array('name' => 'ghostpool_link_type_7', 'type' => 'link_select', 'options' => array('List Of Articles' => __('List Of Articles', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'List Of Videos' => __('List Of Videos', 'gp_lang'), 'Single Post/Page' => __('Single Post/Page', 'gp_lang'))), + array('type' => 'clear'), + 'ghostpool_link_title_8' => array('name' => 'ghostpool_link_title_8', 'type' => 'link_text', 'link_number' => '9'), + 'ghostpool_link_url_8' => array('name' => 'ghostpool_link_url_8', 'type' => 'link_text'), 'ghostpool_link_type_8' => array('name' => 'ghostpool_link_type_8', 'type' => 'link_select', 'options' => array('List Of Articles' => __('List Of Articles', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'List Of Videos' => __('List Of Videos', 'gp_lang'), 'Single Post/Page' => __('Single Post/Page', 'gp_lang'))), + array('type' => 'clear'), + 'ghostpool_link_title_9' => array('name' => 'ghostpool_link_title_9', 'type' => 'link_text', 'link_number' => '10'), + 'ghostpool_link_url_9' => array('name' => 'ghostpool_link_url_9', 'type' => 'link_text'), 'ghostpool_link_type_9' => array('name' => 'ghostpool_link_type_9', 'type' => 'link_select', 'options' => array('List Of Articles' => __('List Of Articles', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'List Of Videos' => __('List Of Videos', 'gp_lang'), 'Single Post/Page' => __('Single Post/Page', 'gp_lang'))), + array('type' => 'clear'), + 'ghostpool_link_title_10' => array('name' => 'ghostpool_link_title_10', 'type' => 'link_text', 'link_number' => '11'), + 'ghostpool_link_url_10' => array('name' => 'ghostpool_link_url_10', 'type' => 'link_text'), 'ghostpool_link_type_10' => array('name' => 'ghostpool_link_type_10', 'type' => 'link_select', 'options' => array('List Of Articles' => __('List Of Articles', 'gp_lang'), 'Image Gallery' => __('Image Gallery', 'gp_lang'), 'List Of Videos' => __('List Of Videos', 'gp_lang'), 'Single Post/Page' => __('Single Post/Page', 'gp_lang'))), + array('type' => 'separator'), + array('type' => 'close'), + 'image_gallery_settings' => array('name' => 'image_gallery_settings', 'type' => 'open', 'desc' => __('', 'gp_lang'), 'title' => __('Image Gallery Settings', 'gp_lang'), 'style' => 'hidden'), + 'ghostpool_gallery' => array('name' => 'ghostpool_gallery', 'title' => __('', 'gp_lang'), 'desc' => __('Upload your images by clicking the "Add Media" button above.', 'gp_lang'), 'std' => '', 'type' => 'gallery', 'size' => 'large'), + array('type' => 'separator'), + array('type' => 'close'), + 'video_settings' => array('name' => 'video_settings', 'type' => 'open', 'desc' => __('', 'gp_lang'), 'title' => __('Video Settings', 'gp_lang'), 'style' => 'hidden'), + 'ghostpool_video' => array('name' => 'ghostpool_video', 'title' => __('Video URL', 'gp_lang'), 'desc' => __('The URL of the video or audio file (YouTube/Vimeo/FLV/MP4/M4V/MP3).', 'gp_lang'), 'std' => '', 'type' => 'upload_video'), + 'ghostpool_webm_mp4_video' => array('name' => 'ghostpool_webm_mp4_video', 'title' => __('HTML5 Video URL (Safari/Chrome)', 'gp_lang'), 'desc' => __('Enter the HTML5 video URL for Safari/Chrome (YouTube/Vimeo/WEBM/MP4).', 'gp_lang'), 'std' => '', 'type' => 'upload_video'), + 'ghostpool_ogg_video' => array('name' => 'ghostpool_ogg_video', 'title' => __('HTML5 Video URL (FireFox/Opera)', 'gp_lang'), 'desc' => __('Enter the HTML5 video URL for FireFox/Opera (YouTube/Vimeo/OGG/OGV).', 'gp_lang'), 'std' => '', 'type' => 'upload_video'), + 'ghostpool_video_priority' => array('name' => 'ghostpool_video_priority', 'title' => __('Video Priority', 'gp_lang'), 'desc' => __('If you have provided both flash and HTML5 videos, select which one will take priority if the browser can play both.', 'gp_lang'), 'options' => array('Flash' => __('Flash', 'gp_lang'), 'HTML5' => __('HTML5', 'gp_lang')), 'type' => 'select', 'std' => ''), + array('type' => 'divider'), + 'ghostpool_video_width' => array('name' => 'ghostpool_video_width', 'title' => __('Video Width', 'gp_lang'), 'desc' => __('The width of the video.', 'gp_lang'), 'std' => '590', 'type' => 'text', 'size' => 'small', 'details' => 'px'), + 'ghostpool_video_height' => array('name' => 'ghostpool_video_height', 'title' => __('Video Height', 'gp_lang'), 'desc' => __('The height of the video.', 'gp_lang'), 'std' => '315', 'type' => 'text', 'size' => 'small', 'details' => 'px'), + 'ghostpool_autostart_video' => array('name' => 'ghostpool_autostart_video', 'title' => __('Autostart Video', 'gp_lang'), 'desc' => __('Plays the video/audio automatically when the page is loaded.', 'gp_lang'), 'type' => 'checkbox', 'std' => ''), + 'ghostpool_video_controls' => array('name' => 'ghostpool_video_controls', 'title' => __('Video Controls', 'gp_lang'), 'desc' => __('Choose how to display the video controls (does not apply to Vimeo videos).', 'gp_lang'), 'options' => array('Bottom' => __('Bottom', 'gp_lang'), 'Over' => __('Over', 'gp_lang'), 'None' => __('None', 'gp_lang')), 'type' => 'select', 'std' => 'Bottom'), + array('type' => 'separator'), + array('type' => 'close'), + 'format_settings' => array('name' => 'format_settings', 'type' => 'open', 'desc' => __('', 'gp_lang'), 'title' => __('Format Settings', 'gp_lang')), + 'ghostpool_sidebar' => array('name' => 'ghostpool_sidebar', 'title' => __('Sidebar', 'gp_lang'), 'desc' => __('Choose which sidebar to display.', 'gp_lang'), 'std' => 'default', 'type' => 'select_sidebar'), + 'ghostpool_layout' => array('name' => 'ghostpool_layout', 'title' => __('Layout', 'gp_lang'), 'desc' => __('Choose the page layout.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'sb-right' => __('Sidebar Right', 'gp_lang'), 'sb-left' => __('Sidebar Left', 'gp_lang'), 'fullwidth' => __('Fullwidth', 'gp_lang')), 'type' => 'select'), + 'ghostpool_title' => array('name' => 'ghostpool_title', 'title' => __('Title', 'gp_lang'), 'desc' => __('Choose whether to display the page title.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), 'type' => 'select'), + 'ghostpool_skin' => array('name' => 'ghostpool_skin', 'title' => __('Skin', 'gp_lang'), 'desc' => __('Choose the page skin.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'blue' => __('Blue', 'gp_lang'), 'black' => __('Black', 'gp_lang')), 'type' => 'select', 'std' => ''), + array('type' => 'divider'), + 'ghostpool_custom_stylesheet' => array('name' => 'ghostpool_custom_stylesheet', 'title' => __('Custom Stylesheet URL', 'gp_lang'), 'desc' => __('Enter the relative URL to your custom stylesheet e.g. lib/css/custom-style.css.', 'gp_lang'), 'std' => '', 'type' => 'text'), + array('type' => 'close'), + array('type' => 'clear'), + ); + + return apply_filters('ghostpool_post_meta_boxes2', $meta_boxes); +} + +/* * ************************* Page Settings ************************** */ + +function ghostpool_page_meta_boxes() { + + $meta_boxes = array( + 'thumbnail_settings' => array('name' => 'thumbnail_settings', 'type' => 'open', 'desc' => __('', 'gp_lang'), 'title' => __('Thumbnail Settings', 'gp_lang')), + 'ghostpool_thumbnail_width' => array('name' => 'ghostpool_thumbnail_width', 'title' => __('Thumbnail Width', 'gp_lang'), 'desc' => __('The width to crop the thumbnail to (set to 0 to have a proportionate width).', 'gp_lang'), 'std' => '', 'type' => 'text', 'size' => 'small', 'details' => 'px'), + 'ghostpool_thumbnail_height' => array('name' => 'ghostpool_thumbnail_height', 'title' => __('Thumbnail Height', 'gp_lang'), 'desc' => __('The height to crop the thumbnail to (set to 0 to have a proportionate height).', 'gp_lang'), 'std' => '', 'type' => 'text', 'size' => 'small', 'details' => 'px'), + array('type' => 'separator'), + array('type' => 'close'), + 'image_settings' => array('name' => 'image_settings', 'type' => 'open', 'desc' => '', 'title' => __('Image Settings', 'gp_lang')), + 'ghostpool_show_image' => array('name' => 'ghostpool_show_image', 'title' => __('Featured Image', 'gp_lang'), 'desc' => __('Choose whether to display the featured image.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), 'type' => 'select'), + 'ghostpool_image_width' => array('name' => 'ghostpool_image_width', 'title' => __('Image Width', 'gp_lang'), 'desc' => __('The width to crop the image to (set to 0 to have a proportionate width).', 'gp_lang'), 'std' => '', 'type' => 'text', 'size' => 'small', 'details' => 'px'), + 'ghostpool_image_height' => array('name' => 'ghostpool_image_height', 'title' => __('Image Height', 'gp_lang'), 'desc' => __('The height to crop the image to (set to 0 to have a proportionate height).', 'gp_lang'), 'std' => '', 'type' => 'text', 'size' => 'small', 'details' => 'px'), + 'ghostpool_image_wrap' => array('name' => 'ghostpool_image_wrap', 'title' => __('Image Wrap', 'gp_lang'), 'desc' => __('Choose whether the page content wraps around the featured image.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'Enable' => __('Enable', 'gp_lang'), 'Disable' => __('Disable', 'gp_lang')), 'type' => 'select'), + array('type' => 'separator'), + array('type' => 'close'), + 'format_settings' => array('name' => 'format_settings', 'type' => 'open', 'desc' => __('', 'gp_lang'), 'title' => __('Format Settings', 'gp_lang')), + 'ghostpool_sidebar' => array('name' => 'ghostpool_sidebar', 'title' => __('Sidebar', 'gp_lang'), 'desc' => __('Choose which sidebar to display.', 'gp_lang'), 'std' => 'default', 'type' => 'select_sidebar'), + 'ghostpool_layout' => array('name' => 'ghostpool_layout', 'title' => __('Layout', 'gp_lang'), 'desc' => __('Choose the page layout.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'sb-right' => __('Sidebar Right', 'gp_lang'), 'sb-left' => __('Sidebar Left', 'gp_lang'), 'fullwidth' => __('Fullwidth', 'gp_lang')), 'type' => 'select'), + 'ghostpool_title' => array('name' => 'ghostpool_title', 'title' => __('Title', 'gp_lang'), 'desc' => __('Choose whether to display the page title.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), 'type' => 'select'), + 'ghostpool_skin' => array('name' => 'ghostpool_skin', 'title' => __('Skin', 'gp_lang'), 'desc' => __('Choose the page skin.', 'gp_lang'), 'options' => array('Default' => __('Default', 'gp_lang'), 'blue' => __('Blue', 'gp_lang'), 'black' => __('Black', 'gp_lang')), 'type' => 'select', 'std' => ''), + array('type' => 'divider'), + 'ghostpool_custom_stylesheet' => array('name' => 'ghostpool_custom_stylesheet', 'title' => __('Custom Stylesheet URL', 'gp_lang'), 'desc' => 'Enter the relative URL to your custom stylesheet e.g. lib/css/custom-style.css.', 'std' => '', 'type' => 'text'), + array('type' => 'close'), + array('type' => 'clear'), + ); + + return apply_filters('ghostpool_page_meta_boxes', $meta_boxes); +} + +/* * ************************* Meta Fields ************************** */ + +function post_meta_boxes2() { + global $post; + $meta_boxes = ghostpool_post_meta_boxes2(); + ?> + + + + ID, $meta['name'], true); + } + if ($meta['type'] == 'text') + get_meta_text($meta, $value); + elseif ($meta['type'] == 'upload_image') + get_meta_upload_image($meta, $value); + elseif ($meta['type'] == 'upload_video') + get_meta_upload_video($meta, $value); + elseif ($meta['type'] == 'textarea') + get_meta_textarea($meta, $value); + elseif ($meta['type'] == 'select') + get_meta_select($meta, $value); + elseif ($meta['type'] == 'select_sidebar') + get_meta_select_sidebar($meta, $value); + elseif ($meta['type'] == 'checkbox') + get_meta_checkbox($meta, $value); + elseif ($meta['type'] == 'open') + get_meta_open($meta, $value); + elseif ($meta['type'] == 'close') + get_meta_close($meta, $value); + elseif ($meta['type'] == 'divider') + get_meta_divider($meta, $value); + elseif ($meta['type'] == 'separator') + get_meta_separator($meta, $value); + elseif ($meta['type'] == 'clear') + get_meta_clear($meta, $value); + elseif ($meta['type'] == 'link_title') + get_meta_link_title($meta, $value); + elseif ($meta['type'] == 'link_text') + get_meta_link_text($meta, $value); + elseif ($meta['type'] == 'link_select') + get_meta_link_select($meta, $value); + elseif ($meta['type'] == 'gallery') + get_meta_gallery($meta, $value); + endforeach; +} + +function page_meta_boxes() { + global $post; + $meta_boxes = ghostpool_page_meta_boxes(); + + foreach ($meta_boxes as $meta) : + if (isset($meta['name'])) { + $value = get_post_meta($post->ID, $meta['name'], true); + } + if ($meta['type'] == 'text') + get_meta_text($meta, $value); + elseif ($meta['type'] == 'upload_image') + get_meta_upload_image($meta, $value); + elseif ($meta['type'] == 'upload_video') + get_meta_upload_video($meta, $value); + elseif ($meta['type'] == 'textarea') + get_meta_textarea($meta, $value); + elseif ($meta['type'] == 'select') + get_meta_select($meta, $value); + elseif ($meta['type'] == 'select_sidebar') + get_meta_select_sidebar($meta, $value); + elseif ($meta['type'] == 'checkbox') + get_meta_checkbox($meta, $value); + elseif ($meta['type'] == 'open') + get_meta_open($meta, $value); + elseif ($meta['type'] == 'close') + get_meta_close($meta, $value); + elseif ($meta['type'] == 'divider') + get_meta_divider($meta, $value); + elseif ($meta['type'] == 'separator') + get_meta_separator($meta, $value); + elseif ($meta['type'] == 'clear') + get_meta_clear($meta, $value); + endforeach; +} + +function dedication_meta_boxes() { + global $post; + $meta_boxes = ghostpool_dedication_meta_boxes();?> + + + ID, $meta['name'], true); + } + if ($meta['type'] == 'text') + get_meta_text($meta, $value); + elseif ($meta['type'] == 'upload_image') + get_meta_upload_image($meta, $value); + elseif ($meta['type'] == 'upload_video') + get_meta_upload_video($meta, $value); + elseif ($meta['type'] == 'textarea') + get_meta_textarea($meta, $value); + elseif ($meta['type'] == 'select') + get_meta_select($meta, $value); + elseif ($meta['type'] == 'checkbox') + get_meta_checkbox($meta, $value); + elseif ($meta['type'] == 'open') + get_meta_open($meta, $value); + elseif ($meta['type'] == 'close') + get_meta_close($meta, $value); + elseif ($meta['type'] == 'divider') + get_meta_divider($meta, $value); + elseif ($meta['type'] == 'separator') + get_meta_separator($meta, $value); + elseif ($meta['type'] == 'clear') + get_meta_clear($meta, $value); + endforeach; +} + +function get_meta_open($args = array(), $value = false) { + extract($args); + ?> + +
                      + +

                      +
                      + +
                      + + + + + + +
                      + + + + + + +
                      +
                      + + + + + +
                      +
                      + + + + + +
                      + + + + + +
                      text-small"> + +
                      330" /> +
                      + +
                      + + + + +
                      + +
                      + +
                      + +
                      + + + + +
                      + +
                      + +
                      + +
                      + + + + +
                      + +
                      +
                      + +
                      + + + + +
                      +
                      + +
                      + +
                      + + + + +
                      text-large"> + +
                      +
                      + +
                      + + + + +
                      + + + /> +
                      +

                      +
                      + + + + +
                      + + +
                      + + + + + +
                      +
                      style="width:80%;" /> + +
                      + + + + +
                      +
                      +
                      + +
                      + + + + +
                      text-large"> + +
                      + +
                      +
                      +
                      + +
                      + + 'attachment', 'post_parent' => $post->ID, 'numberposts' => -1, 'orderby' => 'menu_order', 'order' => 'asc'); + $attachments = get_children($args); + ?> + + post_mime_type == 'image/jpeg' OR $attachment->post_mime_type == 'image/jpg' OR $attachment->post_mime_type == 'image/png' OR $attachment->post_mime_type == 'image/gif') { + $image = vt_resize($attachment->ID, '', 50, 50, true); + } else { + $image = vt_resize('', $image_url, 50, 50, true); + } ?> + + +
                      + + +
                      + + + \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/theme-options.php b/wp-content/themes/score/lib/admin/inc/theme-options.php new file mode 100644 index 0000000..7f14901 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/theme-options.php @@ -0,0 +1,1750 @@ + __('General Settings', 'gp_lang'), + "type" => "title"), + array("type" => "open", + "id" => $shortname . "_general_settings"), + array( + "name" => __('Theme Skin', 'gp_lang'), + "desc" => __('Choose the theme skin (can be overridden on individual posts/pages)', 'gp_lang'), + "id" => $shortname . "_skin", + "std" => "", + "options" => array('asong2u' => __('ASong2U', 'gp_lang'), 'blue' => __('Blue', 'gp_lang'), 'black' => __('Black', 'gp_lang')), + "type" => "select"), + array( + "name" => __('Custom Stylesheet', 'gp_lang'), + "desc" => __('Enter the relative URL to your custom stylesheet e.g. lib/css/custom-style.css (can be overridden on individual posts/pages).', 'gp_lang'), + "id" => $shortname . "_custom_stylesheet", + "std" => "", + "type" => "text"), + array("type" => "divider"), + array( + "name" => __('Custom Logo Image', 'gp_lang'), + "desc" => __('Upload your own logo.', 'gp_lang'), + "id" => $shortname . "_logo", + "std" => "", + "type" => "upload_image"), + array( + "name" => __('Logo Top Margin', 'gp_lang'), + "desc" => __('Enter the top margin of your logo.', 'gp_lang'), + "id" => $shortname . "_logo_top", + "std" => "", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Logo Left Margin', 'gp_lang'), + "desc" => __('Enter the left margin of your logo.', 'gp_lang'), + "id" => $shortname . "_logo_left", + "std" => "", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Logo Bottom Margin', 'gp_lang'), + "desc" => __('Enter the bottom margin of your logo.', 'gp_lang'), + "id" => $shortname . "_logo_bottom", + "std" => "", + "type" => "text", + "size" => "small", + "details" => "px"), + array("type" => "divider"), + array( + "name" => __('Login/Register/Profile Links', 'gp_lang'), + "desc" => __('Choose whether to display the login, register and profile links.', 'gp_lang'), + "id" => $shortname . "_profile_links", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Login Page URL', 'gp_lang'), + "desc" => __('Enter the URL of the page you have assigned the Login page template to.', 'gp_lang'), + "id" => $shortname . "_login_url", + "std" => "", + "type" => "text"), + array( + "name" => __('Register Page URL', 'gp_lang'), + "desc" => __('Enter the URL of the page you have assigned the Register page template to (leave blank if you are using BuddyPress, as a register page will have already been created).', 'gp_lang'), + "id" => $shortname . "_register_url", + "std" => "", + "type" => "text"), + array("type" => "divider"), + array( + "name" => __('Search Form', 'gp_lang'), + "desc" => __('Choose whether to display the search form in the navigation panel.', 'gp_lang'), + "id" => $shortname . "_search_form", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Search Criteria', 'gp_lang'), + "desc" => __('Choose what posts and pages show up in search results.', 'gp_lang'), + "id" => $shortname . "_search_criteria", + "std" => "", + "options" => array('All Posts And /Pages' => __('All Posts And Pages', 'gp_lang'), 'All Posts' => __('All Posts', 'gp_lang'), 'Review Posts Only' => __('Review Posts Only', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('RSS Feed Button', 'gp_lang'), + "desc" => __('Display the RSS feed button with the default RSS feed or enter a custom feed below.', 'gp_lang'), + "id" => $shortname . "_rss_button", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('RSS URL', 'gp_lang'), + "id" => $shortname . "_rss", + "std" => "", + "desc" => '', + "type" => "text"), + array( + "name" => __('Twitter URL', 'gp_lang'), + "id" => $shortname . "_twitter", + "std" => "", + "desc" => '', + "type" => "text"), + array( + "name" => __('Facebook URL', 'gp_lang'), + "id" => $shortname . "_facebook", + "std" => "", + "desc" => '', + "type" => "text"), + array( + "name" => __('Digg URL', 'gp_lang'), + "id" => $shortname . "_digg", + "std" => "", + "desc" => '', + "type" => "text"), + array( + "name" => __('Delicious URL', 'gp_lang'), + "id" => $shortname . "_delicious", + "std" => "", + "desc" => '', + "type" => "text"), + array( + "name" => __('Dribbble URL', 'gp_lang'), + "id" => $shortname . "_dribbble", + "std" => "", + "desc" => '', + "type" => "text"), + array( + "name" => __('YouTube URL', 'gp_lang'), + "id" => $shortname . "_youtube", + "std" => "", + "desc" => '', + "type" => "text"), + array( + "name" => __('Vimeo URL', 'gp_lang'), + "id" => $shortname . "_vimeo", + "std" => "", + "desc" => '', + "type" => "text"), + array( + "name" => __('LinkedIn URL', 'gp_lang'), + "id" => $shortname . "_linkedin", + "std" => "", + "desc" => '', + "type" => "text"), + array( + "name" => __('Google+ URL', 'gp_lang'), + "id" => $shortname . "_googleplus", + "std" => "", + "desc" => '', + "type" => "text"), + array( + "name" => __('Additional Social Icons', 'gp_lang'), + "desc" => __('Add additional social icons by entering the link and image HTML code e.g. <a href="http://social-link.com" target="_blank"><img src="' . get_template_directory_uri() . '/images/socialicon.png" alt="" /></a>', 'gp_lang'), + "id" => $shortname . "_additional_social_icons", + "std" => "", + "type" => "textarea"), + array("type" => "divider"), + array( + "name" => __('Favicon URL (.ico)', 'gp_lang'), + "desc" => __('Type the URL of the favicon image (.ico, 16x16 or 32x32)', 'gp_lang'), + "id" => $shortname . "_favicon_ico", + "std" => "", + "type" => "upload_image"), + array( + "name" => __('Favicon URL (.png)', 'gp_lang'), + "desc" => __('Type the URL of the favicon image (.png, 16x16 or 32x32)', 'gp_lang'), + "id" => $shortname . "_favicon_png", + "std" => "", + "type" => "upload_image"), + array( + "name" => __('Apple Icon URL (.png)', 'gp_lang'), + "desc" => __('Type the URL of the apple icon image (.png, 57x57), used for display on the Apple iPhone', 'gp_lang'), + "id" => $shortname . "_apple_icon", + "std" => "", + "type" => "upload_image"), + array("type" => "divider"), + array( + "name" => __('Header Content', 'gp_lang'), + "desc" => __('Enter the content you want to display in the header (e.g. Google advertisements).', 'gp_lang'), + "id" => $shortname . "_header_content", + "std" => "", + "type" => "textarea"), + array("type" => "divider"), + array( + "name" => __('Scroller Display', 'gp_lang'), + "desc" => __('Choose how to display the scroller.', 'gp_lang'), + "id" => $shortname . "_scroller_display", + "std" => "", + "options" => array('Scrolling' => __('Scrolling', 'gp_lang'), 'No Scrolling' => __('No Scrolling', 'gp_lang'), 'Disable' => __('Disable', 'gp_lang')), + "type" => "select"), + array( + "name" => __('Scroller Title', 'gp_lang'), + "desc" => __('Enter the title you want to add to the scroller.', 'gp_lang'), + "id" => $shortname . "_scroller_title", + "std" => "Headlines", + "type" => "text"), + array( + "name" => __('Scroller Text', 'gp_lang'), + "desc" => __('Enter any text you want to add to the scroller.', 'gp_lang'), + "id" => $shortname . "_scroller_text", + "std" => "", + "type" => "textarea"), + array( + "name" => __('Scroller Category IDs', 'gp_lang'), + "desc" => __('Enter the IDs of the post categories you want to display (leave blank to display all categories).', 'gp_lang'), + "id" => $shortname . "_scroller_cats", + "std" => "", + "type" => "text"), + array( + "name" => __('Number Of Scroller Posts', 'gp_lang'), + "desc" => __('The number of posts to display (set to -1 to display all posts).', 'gp_lang'), + "id" => $shortname . "_scroller_posts", + "std" => "5", + "type" => "text", + "size" => "small"), + array("type" => "divider"), + array( + "name" => __('Footer Widgets', 'gp_lang'), + "desc" => __('Choose where to display your footer widgets.', 'gp_lang'), + "id" => $shortname . "_footer_widgets", + "std" => "", + "options" => array('All Pages' => __('All Pages', 'gp_lang'), 'Homepage' => __('Homepage', 'gp_lang')), + "type" => "select"), + array( + "name" => __('Footer Content', 'gp_lang'), + "desc" => __('Enter the content you want to display in the bottom section of the footer.', 'gp_lang'), + "id" => $shortname . "_footer_content", + "std" => '', + "type" => "textarea"), + array("type" => "divider"), + array( + "name" => __('Scripts', 'gp_lang'), + "desc" => __('Enter any scripts that need to be embedded into the theme (e.g. Google Analytics)', 'gp_lang'), + "id" => $shortname . "_scripts", + "std" => "", + "type" => "textarea"), + array("type" => "close"), + array("name" => __('Font style', 'gp_lang'), + "type" => "title"), + array("type" => "open", + "id" => $shortname . "_fontstyle_settings"), + array( + "name" => __('Dedication font', 'gp_lang'), + "desc" => __('Font style for dedication text', 'gp_lang'), + "id" => $shortname . "_font_dedication", + "std" => "", + "options" => array( + 'Bad+Script' => __('Bad Script', 'gp_lang'), + 'Give+You+Glory' => __('Give You Glory', 'gp_lang'), + 'Handlee' => __('Handlee', 'gp_lang'), + 'Indie+Flower' => __('Indie Flower', 'gp_lang'), + 'Patrick+Hand' => __('Patrick Hand', 'gp_lang'), + 'Shadows+Into+Light' => __('Shadows Into Light', 'gp_lang'), + 'Shadows+Into+Light+Two' => __('Shadows Into Light Two', 'gp_lang'), + ), + "type" => "select"), + array("type" => "close"), + array("name" => __('Slider Settings', 'gp_lang'), + "type" => "title"), + array("type" => "open", + "id" => $shortname . "_slider_settings"), + array( + "name" => __('Slider', 'gp_lang'), + "desc" => __('Choose whether to display the slider.', 'gp_lang'), + "id" => $shortname . "_slider", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Slider Category IDs', 'gp_lang'), + "desc" => __('Enter the IDs of the slider categories and post categories you want to display.', 'gp_lang'), + "id" => $shortname . "_slider_cats", + "std" => "", + "type" => "text"), + array( + "name" => __('Slider Order', 'gp_lang'), + "desc" => __('Choose how to order your slides.', 'gp_lang'), + "id" => $shortname . "_slider_orderby", + "std" => "", + "options" => array('Date' => __('Date', 'gp_lang'), 'Custom Order' => __('Custom Order', 'gp_lang'), 'Site Score' => __('Site Score', 'gp_lang'), 'User Score' => __('User Score', 'gp_lang')), + "type" => "select"), + array( + "name" => __('Slider Score Type', 'gp_lang'), + "desc" => __('Choose the score type to display (only applies to posts added to slider).', 'gp_lang'), + "id" => $shortname . "_slider_score_type", + "std" => "", + "options" => array('Site Score' => __('Site Score', 'gp_lang'), 'User Score' => __('User Score', 'gp_lang'), 'Site & User Score' => __('Site & User Score', 'gp_lang'), 'No Scores' => __('No Scores', 'gp_lang')), + "type" => "select"), + array( + "name" => __('Number Of Slides', 'gp_lang'), + "desc" => __('The number of slides to display (set to -1 to display all slides).', 'gp_lang'), + "id" => $shortname . "_slides", + "std" => "10", + "type" => "text", + "size" => "small"), + array( + "name" => __('Slider Scroll', 'gp_lang'), + "desc" => __('Choose whether to have the slider automatically scroll.', 'gp_lang'), + "id" => $shortname . "_slider_scroll", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Slider Scroll Speed', 'gp_lang'), + "desc" => __('Enter the number of milliseconds you want between each slide transition.', 'gp_lang'), + "id" => $shortname . "_slider_scroll_speed", + "std" => "500", + "type" => "text", + "size" => "small"), + array("type" => "close"), + array("name" => __('Homepage Settings', 'gp_lang'), + "type" => "title"), + array("type" => "open", + "id" => $shortname . "_homepage_settings"), + array( + "name" => __('Thumbnail Width', 'gp_lang'), + "desc" => __('The width to crop the thumbnail to (can be overridden on individual posts, set to 0 to have a proportionate width).', 'gp_lang'), + "id" => $shortname . "_homepage_thumbnail_width", + "std" => "130", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Thumbnail Height', 'gp_lang'), + "desc" => __('The height to crop the thumbnail to (can be overridden on individual posts, set to 0 to have a proportionate height).', 'gp_lang'), + "id" => $shortname . "_homepage_thumbnail_height", + "std" => "0", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Image Wrap', 'gp_lang'), + "desc" => __('Choose whether the page content wraps around the featured image.', 'gp_lang'), + "id" => $shortname . "_homepage_image_wrap", + "std" => "", + "options" => array('Enable' => __('Enable', 'gp_lang'), 'Disable' => __('Disable', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Homepage Category IDs', 'gp_lang'), + "desc" => __('Enter the IDs of the post categories you want to display (leave blank to display all categories).', 'gp_lang'), + "id" => $shortname . "_homepage_cats", + "std" => "", + "type" => "text"), + array("type" => "divider"), + array( + "name" => __('Layout', 'gp_lang'), + "desc" => __('Choose the page layout.', 'gp_lang'), + "id" => $shortname . "_homepage_layout", + "std" => "", + "options" => array('sb-right' => __('Sidebar Right', 'gp_lang'), 'sb-left' => __('Sidebar Left', 'gp_lang'), 'fullwidth' => __('Fullwidth', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Title', 'gp_lang'), + "desc" => __('Choose whether to display the page title.', 'gp_lang'), + "id" => $shortname . "_homepage_title", + "std" => "", + "options" => array('Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Posts Per Page', 'gp_lang'), + "desc" => __('The number of posts per page.', 'gp_lang'), + "id" => $shortname . "_homepage_posts_per_page", + "std" => "10", + "type" => "text", + "size" => "small"), + array("type" => "divider"), + array( + "name" => __('Content Display', 'gp_lang'), + "desc" => __('Choose whether to display the full post content or an excerpt.', 'gp_lang'), + "id" => $shortname . "_homepage_content_display", + "std" => "0", + "options" => array('Excerpt', 'Full Content'), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Excerpt Length', 'gp_lang'), + "desc" => __('The number of characters in excerpts.', 'gp_lang'), + "id" => $shortname . "_homepage_excerpt_length", + "std" => "20", + "type" => "text", + "size" => "small"), + array("type" => "divider"), + array( + "name" => __('Read More Link', 'gp_lang'), + "desc" => __('Choose whether to display the read more links.', 'gp_lang'), + "id" => $shortname . "_homepage_read_more", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Score Type', 'gp_lang'), + "desc" => __('Choose the score type to display.', 'gp_lang'), + "id" => $shortname . "_homepage_score_type", + "std" => "1", + "options" => array('Site Score' => __('Site Score', 'gp_lang'), 'User Score' => __('User Score', 'gp_lang'), 'Site & User Score' => __('Site & User Score', 'gp_lang'), 'No Scores' => __('No Scores', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Review Date Column', 'gp_lang'), + "desc" => __('Choose whether to display the review date column.', 'gp_lang'), + "id" => $shortname . "_homepage_review_date_column", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Drop Down Menu Filter', 'gp_lang'), + "desc" => __('Choose whether to display the drop down menu filter.', 'gp_lang'), + "id" => $shortname . "_homepage_dropdown_filter", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Homepage pagination', 'gp_lang'), + "desc" => __('Choose whether to display the pagination.', 'gp_lang'), + "id" => $shortname . "_homepage_pagination", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Post Date', 'gp_lang'), + "desc" => __('Choose whether to display the post date.', 'gp_lang'), + "id" => $shortname . "_homepage_date", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Author', 'gp_lang'), + "desc" => __('Choose whether to display the post author.', 'gp_lang'), + "id" => $shortname . "_homepage_author", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Categories', 'gp_lang'), + "desc" => __('Choose whether to display the post categories.', 'gp_lang'), + "id" => $shortname . "_homepage_cats_", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Comments', 'gp_lang'), + "desc" => __('Choose whether to display the post comments.', 'gp_lang'), + "id" => $shortname . "_homepage_comments", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Tags', 'gp_lang'), + "desc" => __('Choose whether to display the post tags.', 'gp_lang'), + "id" => $shortname . "_homepage_tags", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "close"), + array("name" => __('Blog Page Settings', 'gp_lang'), + "type" => "title"), + array("type" => "open", + "id" => $shortname . "_blog_settings"), + array( + "name" => __('Thumbnail Width', 'gp_lang'), + "desc" => __('The width to crop the thumbnail to (can be overridden on individual posts, set to 0 to have a proportionate width).', 'gp_lang'), + "id" => $shortname . "_blog_thumbnail_width", + "std" => "588", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Thumbnail Height', 'gp_lang'), + "desc" => __('The height to crop the thumbnail to (can be overridden on individual posts, set to 0 to have a proportionate height).', 'gp_lang'), + "id" => $shortname . "_blog_thumbnail_height", + "std" => "250", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Image Wrap', 'gp_lang'), + "desc" => __('Choose whether the page content wraps around the featured image.', 'gp_lang'), + "id" => $shortname . "_blog_image_wrap", + "std" => "", + "options" => array('Disable' => __('Disable', 'gp_lang'), 'Enable' => __('Enable', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Blog Category IDs', 'gp_lang'), + "desc" => __('Enter the IDs of the post categories you want to display (leave blank to display all categories).', 'gp_lang'), + "id" => $shortname . "_blog_cats", + "std" => "", + "type" => "text"), + array("type" => "divider"), + array( + "name" => __('Layout', 'gp_lang'), + "desc" => __('Choose the page layout.', 'gp_lang'), + "id" => $shortname . "_blog_layout", + "std" => "", + "options" => array('sb-right' => __('Sidebar Right', 'gp_lang'), 'sb-left' => __('Sidebar Left', 'gp_lang'), 'fullwidth' => __('Fullwidth', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Title', 'gp_lang'), + "desc" => __('Choose whether to display the page title.', 'gp_lang'), + "id" => $shortname . "_blog_title", + "std" => "", + "options" => array('Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Posts Per Page', 'gp_lang'), + "desc" => __('The number of posts per page.', 'gp_lang'), + "id" => $shortname . "_blog_posts_per_page", + "std" => "10", + "type" => "text", + "size" => "small"), + array("type" => "divider"), + array( + "name" => __('Content Display', 'gp_lang'), + "desc" => __('Choose whether to display the full post content or an excerpt.', 'gp_lang'), + "id" => $shortname . "_blog_content_display", + "std" => "0", + "options" => array('Excerpt', 'Full Content'), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Excerpt Length', 'gp_lang'), + "desc" => __('The number of characters in excerpts.', 'gp_lang'), + "id" => $shortname . "_blog_excerpt_length", + "std" => "50", + "type" => "text", + "size" => "small"), + array("type" => "divider"), + array( + "name" => __('Read More Link', 'gp_lang'), + "desc" => __('Choose whether to display the read more links.', 'gp_lang'), + "id" => $shortname . "_blog_read_more", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + /*array( + "name" => __('Score Type', 'gp_lang'), + "desc" => __('Choose the score type to display.', 'gp_lang'), + "id" => $shortname . "_blog_score_type", + "std" => "1", + "options" => array('Site Score' => __('Site Score', 'gp_lang'), 'User Score' => __('User Score', 'gp_lang'), 'Site & User Score' => __('Site & User Score', 'gp_lang'), 'No Scores' => __('No Scores', 'gp_lang')), + "type" => "select"), + array("type" => "divider"),*/ + array( + "name" => __('Review Date Column', 'gp_lang'), + "desc" => __('Choose whether to display the review date column.', 'gp_lang'), + "id" => $shortname . "_blog_review_date_column", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Drop Down Menu Filter', 'gp_lang'), + "desc" => __('Choose whether to display the drop down menu filter.', 'gp_lang'), + "id" => $shortname . "_blog_dropdown_filter", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Post Date', 'gp_lang'), + "desc" => __('Choose whether to display the post date.', 'gp_lang'), + "id" => $shortname . "_blog_date", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Author', 'gp_lang'), + "desc" => __('Choose whether to display the post author.', 'gp_lang'), + "id" => $shortname . "_blog_author", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Categories', 'gp_lang'), + "desc" => __('Choose whether to display the post categories.', 'gp_lang'), + "id" => $shortname . "_blog_cats_", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Comments', 'gp_lang'), + "desc" => __('Choose whether to display the post comments.', 'gp_lang'), + "id" => $shortname . "_blog_comments", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Tags', 'gp_lang'), + "desc" => __('Choose whether to display the post tags.', 'gp_lang'), + "id" => $shortname . "_blog_tags", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "close"), + array("name" => __('Category Settings', 'gp_lang'), + "type" => "title"), + array("type" => "open", + "id" => $shortname . "_category_settings"), + array( + "name" => __('Thumbnail Width', 'gp_lang'), + "desc" => __('The width to crop the thumbnail to (can be overridden on individual posts, set to 0 to have a proportionate width).', 'gp_lang'), + "id" => $shortname . "_cat_thumbnail_width", + "std" => "100", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Thumbnail Height', 'gp_lang'), + "desc" => __('The height to crop the thumbnail to (can be overridden on individual posts, set to 0 to have a proportionate height).', 'gp_lang'), + "id" => $shortname . "_cat_thumbnail_height", + "std" => "130", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Image Wrap', 'gp_lang'), + "desc" => __('Choose whether the page content wraps around the featured image.', 'gp_lang'), + "id" => $shortname . "_cat_image_wrap", + "std" => "", + "options" => array('Enable' => __('Enable', 'gp_lang'), 'Disable' => __('Disable', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Layout', 'gp_lang'), + "desc" => __('Choose the page layout.', 'gp_lang'), + "id" => $shortname . "_cat_layout", + "std" => "", + "options" => array('sb-right' => __('Sidebar Right', 'gp_lang'), 'sb-left' => __('Sidebar Left', 'gp_lang'), 'fullwidth' => __('Fullwidth', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Title', 'gp_lang'), + "desc" => __('Choose whether to display the page title.', 'gp_lang'), + "id" => $shortname . "_cat_title", + "std" => "", + "options" => array('Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Posts Per Page', 'gp_lang'), + "desc" => __('The number of posts per page.', 'gp_lang'), + "id" => $shortname . "_cat_posts_per_page", + "std" => "10", + "type" => "text", + "size" => "small"), + array("type" => "divider"), + array( + "name" => __('Content Display', 'gp_lang'), + "desc" => __('Choose whether to display the full post content or an excerpt.', 'gp_lang'), + "id" => $shortname . "_cat_content_display", + "std" => "0", + "options" => array(__('Excerpt', 'gp_lang'), __('Full Content', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Excerpt Length', 'gp_lang'), + "desc" => __('The number of characters in excerpts on category, archive, search, tag pages etc.', 'gp_lang'), + "id" => $shortname . "_cat_excerpt_length", + "std" => "40", + "type" => "text", + "size" => "small"), + array("type" => "divider"), + array( + "name" => __('Read More Link', 'gp_lang'), + "desc" => __('Choose whether to display the read more links.', 'gp_lang'), + "id" => $shortname . "_cat_read_more", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Score Type', 'gp_lang'), + "desc" => __('Choose the score type to display on category, archive, search, tag pages etc.', 'gp_lang'), + "id" => $shortname . "_cat_score_type", + "std" => "0", + "options" => array('Site Score' => __('Site Score', 'gp_lang'), 'User Score' => __('User Score', 'gp_lang'), 'Site & User Score' => __('Site & User Score', 'gp_lang'), 'No Scores' => __('No Scores', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Review Date Column', 'gp_lang'), + "desc" => __('Choose whether to display the review date column.', 'gp_lang'), + "id" => $shortname . "_cat_review_date_column", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Drop Down Menu Filter', 'gp_lang'), + "desc" => __('Choose whether to display the drop down menu filter.', 'gp_lang'), + "id" => $shortname . "_cat_dropdown_filter", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Post Date', 'gp_lang'), + "desc" => __('Choose whether to display the post date.', 'gp_lang'), + "id" => $shortname . "_cat_date", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Author', 'gp_lang'), + "desc" => __('Choose whether to display the post author.', 'gp_lang'), + "id" => $shortname . "_cat_author", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Categories', 'gp_lang'), + "desc" => __('Choose whether to display the post categories.', 'gp_lang'), + "id" => $shortname . "_cat_cats", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Comments', 'gp_lang'), + "desc" => __('Choose whether to display the post comments.', 'gp_lang'), + "id" => $shortname . "_cat_comments", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Tags', 'gp_lang'), + "desc" => __('Choose whether to display the post tags.', 'gp_lang'), + "id" => $shortname . "_cat_tags", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "close"), + array("name" => __('Post Settings', 'gp_lang'), + "type" => "title"), + array("type" => "open", + "id" => $shortname . "_post_settings"), + array( + "name" => __('Featured Image', 'gp_lang'), + "desc" => __('Choose whether to display the featured image (can be overridden on individual posts).', 'gp_lang'), + "id" => $shortname . "_show_post_image", + "std" => "", + "options" => array('Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), + "type" => "select"), + array( + "name" => __('Image Width', 'gp_lang'), + "desc" => __('The width to crop the image to (can be overridden on individual posts, set to 0 to have a proportionate width).', 'gp_lang'), + "id" => $shortname . "_post_image_width", + "std" => "588", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Image Height', 'gp_lang'), + "desc" => __('The height to crop the image to (can be overridden on individual posts, set to 0 to have a proportionate height).', 'gp_lang'), + "id" => $shortname . "_post_image_height", + "std" => "200", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Image Wrap', 'gp_lang'), + "desc" => __('Choose whether the page content wraps around the featured image (can be overridden on individual posts).', 'gp_lang'), + "id" => $shortname . "_post_image_wrap", + "std" => "", + "options" => array('Disable' => __('Disable', 'gp_lang'), 'Enable' => __('Enable', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Layout', 'gp_lang'), + "desc" => __('Choose the page layout (can be overridden on individual posts).', 'gp_lang'), + "id" => $shortname . "_post_layout", + "std" => "", + "options" => array('sb-right' => __('Sidebar Right', 'gp_lang'), 'sb-left' => __('Sidebar Left', 'gp_lang'), 'fullwidth' => __('Fullwidth', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Title', 'gp_lang'), + "desc" => __('Choose whether to display the page title (can be overridden on individual posts).', 'gp_lang'), + "id" => $shortname . "_post_title", + "std" => "", + "options" => array('Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Post Date', 'gp_lang'), + "desc" => __('Choose whether to display the post date.', 'gp_lang'), + "id" => $shortname . "_post_date", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Author', 'gp_lang'), + "desc" => __('Choose whether to display the post author.', 'gp_lang'), + "id" => $shortname . "_post_author", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Categories', 'gp_lang'), + "desc" => __('Choose whether to display the post categories.', 'gp_lang'), + "id" => $shortname . "_post_cats", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Comments', 'gp_lang'), + "desc" => __('Choose whether to display the post comments.', 'gp_lang'), + "id" => $shortname . "_post_comments", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Share Link', 'gp_lang'), + "desc" => __('Choose whether to display the share link.', 'gp_lang'), + "id" => $shortname . "_post_share_link", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Tags', 'gp_lang'), + "desc" => __('Choose whether to display the post tags.', 'gp_lang'), + "id" => $shortname . "_post_tags", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Author Info Panel', 'gp_lang'), + "desc" => __('Choose whether to display the author info panel.', 'gp_lang'), + "id" => $shortname . "_post_author_info", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Related Items', 'gp_lang'), + "desc" => __('Choose whether to display related items.', 'gp_lang'), + "id" => $shortname . "_post_related_items", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Image Width', 'gp_lang'), + "desc" => __('The width to crop the image to (set to 0 to have a proportionate width).', 'gp_lang'), + "id" => $shortname . "_post_related_image_width", + "std" => "120", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Image Height', 'gp_lang'), + "desc" => __('The height to crop the image to (set to 0 to have a proportionate height).', 'gp_lang'), + "id" => $shortname . "_post_related_image_height", + "std" => "100", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Related Items Category IDs', 'gp_lang'), + "desc" => __('Enter the IDs of the post categories you want to display in the related items section.', 'gp_lang'), + "id" => $shortname . "_post_related_cats", + "std" => "", + "type" => "text"), + array("type" => "close"), + array("name" => __('Page Settings', 'gp_lang'), + "type" => "title"), + array("type" => "open", + "id" => $shortname . "_page_settings"), + array( + "name" => __('Featured Image', 'gp_lang'), + "desc" => __('Choose whether to display the featured image (can be overridden on individual pages).', 'gp_lang'), + "id" => $shortname . "_show_page_image", + "std" => "", + "options" => array('Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), + "type" => "select"), + array( + "name" => __('Image Width', 'gp_lang'), + "desc" => __('The width to crop the image to (can be overridden on individual pages, set to 0 to have a proportionate width).', 'gp_lang'), + "id" => $shortname . "_page_image_width", + "std" => "640", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Image Height', 'gp_lang'), + "desc" => __('The height to crop the image to (can be overridden on individual pages, set to 0 to have a proportionate height).', 'gp_lang'), + "id" => $shortname . "_page_image_height", + "std" => "250", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Image Wrap', 'gp_lang'), + "desc" => __('Choose whether the page content wraps around the featured image (can be overridden on individual pages).', 'gp_lang'), + "id" => $shortname . "_page_image_wrap", + "std" => "", + "options" => array('Disable' => __('Disable', 'gp_lang'), 'Enable' => __('Enable', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Layout', 'gp_lang'), + "desc" => __('Choose the page layout (can be overridden on individual pages).', 'gp_lang'), + "id" => $shortname . "_page_layout", + "std" => "", + "options" => array('sb-right' => __('Sidebar Right', 'gp_lang'), 'sb-left' => __('Sidebar Left', 'gp_lang'), 'fullwidth' => __('Fullwidth', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Title', 'gp_lang'), + "desc" => __('Choose whether to display the page title (can be overridden on individual pages).', 'gp_lang'), + "id" => $shortname . "_page_title", + "std" => "", + "options" => array('Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Page Date', 'gp_lang'), + "desc" => __('Choose whether to display the page date.', 'gp_lang'), + "id" => $shortname . "_page_date", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Page Author', 'gp_lang'), + "desc" => __('Choose whether to display the page author.', 'gp_lang'), + "id" => $shortname . "_page_author", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Page Comments', 'gp_lang'), + "desc" => __('Choose whether to display the page comments.', 'gp_lang'), + "id" => $shortname . "_page_comments", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Share Link', 'gp_lang'), + "desc" => __('Choose whether to display the share link.', 'gp_lang'), + "id" => $shortname . "_page_share_link", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Author Info Panel', 'gp_lang'), + "desc" => __('Choose whether to display an author info panel.', 'gp_lang'), + "id" => $shortname . "_page_author_info", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "close"), + array("name" => __('Review Post Settings', 'gp_lang'), + "type" => "title"), + array("type" => "open", + "id" => $shortname . "_review_post_settings"), + array( + "name" => __('Featured Image', 'gp_lang'), + "desc" => __('Choose whether to display the featured image (can be overridden on individual reviews).', 'gp_lang'), + "id" => $shortname . "_show_review_image", + "std" => "", + "options" => array('Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), + "type" => "select"), + array( + "name" => __('Image Width', 'gp_lang'), + "desc" => __('The width to crop the image to (can be overridden on individual reviews, set to 0 to have a proportionate width).', 'gp_lang'), + "id" => $shortname . "_review_image_width", + "std" => "640", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Image Height', 'gp_lang'), + "desc" => __('The height to crop the image to (can be overridden on individual reviews, set to 0 to have a proportionate height).', 'gp_lang'), + "id" => $shortname . "_review_image_height", + "std" => "250", + "type" => "text", + "size" => "small", + "details" => "px"), + array("type" => "divider"), + array( + "name" => __('Layout', 'gp_lang'), + "desc" => __('Choose the page layout (can be overridden on individual reviews).', 'gp_lang'), + "id" => $shortname . "_review_layout", + "std" => "", + "options" => array('sb-right' => __('Sidebar Right', 'gp_lang'), 'sb-left' => __('Sidebar Left', 'gp_lang'), 'fullwidth' => __('Fullwidth', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Title', 'gp_lang'), + "desc" => __('Choose whether to display the page title (can be overridden on individual reviews).', 'gp_lang'), + "id" => $shortname . "_review_title", + "std" => "", + "options" => array('Show' => __('Show', 'gp_lang'), 'Hide' => __('Hide', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('User Voting', 'gp_lang'), + "desc" => __('Choose how users can vote (can be overridden on individual reviews).', 'gp_lang'), + "id" => $shortname . "_user_voting", + "std" => "", + "options" => array('Vote with or without posting a comment' => __('Vote with or without posting a comment', 'gp_lang'), 'Vote without posting a comment' => __('Vote without posting a comment', 'gp_lang'), 'Vote only when posting a comment' => __('Vote only when posting a comment', 'gp_lang'), 'Users cannot vote' => __('Users cannot vote', 'gp_lang')), + "type" => "select"), + array( + "name" => __('User Comments', 'gp_lang'), + "desc" => __('Choose whether users can post unlimited comments (can be overridden on individual reviews, only works with registered users).', 'gp_lang'), + "id" => $shortname . "_user_comments", + "std" => "", + "options" => array('Unlimited Comments' => __('Unlimited Comments', 'gp_lang'), 'One Comment' => __('One Comment', 'gp_lang')), + "type" => "select"), + array( + "name" => __('Comment Thumbs', 'gp_lang'), + "desc" => __('Choose whether users can rate other comments (can be overridden on individual reviews).', 'gp_lang'), + "id" => $shortname . "_comment_thumbs", + "std" => "", + "options" => array('Users can rate other comments' => __('Users can rate other comments', 'gp_lang'), 'Users cannot rate other comments' => __('Users cannot rate other comments', 'gp_lang')), + "type" => "select"), + array("type" => "divider"), + array( + "name" => __('Score Ranges', 'gp_lang'), + "desc" => "", + "id" => $shortname . "_score_range_1", + "std" => "0", + "type" => "text", + "size" => "small", + "details" => "to", + "style" => "margin-top: 10px; float: left;"), + array( + "name" => "", + "desc" => "", + "id" => $shortname . "_score_range_2", + "std" => "2.9", + "type" => "text", + "size" => "small", + "details" => "", + "style" => "margin-top: 10px; float: left; clear: none;"), + array( + "name" => "", + "desc" => "Site Score Color", + "id" => $shortname . "_site_score_color_1", + "std" => "#aaaaaa", + "type" => "colorpicker", + "details" => "", + "style" => "margin-top: 10px; margin-left: 10px; margin-right: 10px; float: left; clear: none;"), + array( + "name" => "", + "desc" => "User Score Color", + "id" => $shortname . "_user_score_color_1", + "std" => "#979797", + "type" => "colorpicker", + "details" => "", + "style" => "margin-top: 10px; float: left; clear: none;"), + array("type" => "clear"), + array( + "name" => "", + "desc" => "", + "id" => $shortname . "_score_range_3", + "std" => "3", + "type" => "text", + "size" => "small", + "details" => "to", + "style" => "float: left;"), + array( + "name" => "", + "desc" => "", + "id" => $shortname . "_score_range_4", + "std" => "5.9", + "type" => "text", + "size" => "small", + "details" => "", + "style" => "float: left; clear: none;"), + array( + "name" => "", + "desc" => "Site Score Color", + "id" => $shortname . "_site_score_color_2", + "std" => "#85c614", + "type" => "colorpicker", + "details" => "", + "style" => "margin-left: 10px; margin-right: 10px; float: left; clear: none;"), + array( + "name" => "", + "desc" => "User Score Color", + "id" => $shortname . "_user_score_color_2", + "std" => "#709767", + "type" => "colorpicker", + "details" => "", + "style" => "float: left; clear: none;"), + array("type" => "clear"), + array( + "name" => "", + "desc" => "", + "id" => $shortname . "_score_range_5", + "std" => "6", + "type" => "text", + "size" => "small", + "details" => "to", + "style" => "float: left;"), + array( + "name" => "", + "desc" => "", + "id" => $shortname . "_score_range_6", + "std" => "8.9", + "type" => "text", + "size" => "small", + "details" => "", + "style" => "float: left; clear: none;"), + array( + "name" => "", + "desc" => "Site Score Color", + "id" => $shortname . "_site_score_color_3", + "std" => "#e5a700", + "type" => "colorpicker", + "details" => "", + "style" => "margin-left: 10px; margin-right: 10px; float: left; clear: none;"), + array( + "name" => "", + "desc" => "User Score Color", + "id" => $shortname . "_user_score_color_3", + "std" => "#978a67", + "type" => "colorpicker", + "details" => "", + "style" => "float: left; clear: none;"), + array("type" => "clear"), + array( + "name" => "", + "desc" => "", + "id" => $shortname . "_score_range_7", + "std" => "9", + "type" => "text", + "size" => "small", + "details" => "to", + "style" => "float: left;"), + array( + "name" => "", + "desc" => "", + "id" => $shortname . "_score_range_8", + "std" => "10", + "type" => "text", + "size" => "small", + "details" => "", + "style" => "float: left; clear: none;"), + array( + "name" => "", + "desc" => "Site Score Color", + "id" => $shortname . "_site_score_color_4", + "std" => "#00abff", + "type" => "colorpicker", + "details" => "", + "style" => "margin-left: 10px; margin-right: 10px; float: left; clear: none;"), + array( + "name" => "", + "desc" => "User Score Color", + "id" => $shortname . "_user_score_color_4", + "std" => "#678397", + "type" => "colorpicker", + "details" => "", + "style" => "float: left; clear: none;"), + array("type" => "divider"), + array( + "name" => __('Post Date', 'gp_lang'), + "desc" => __('Choose whether to display the post date.', 'gp_lang'), + "id" => $shortname . "_review_date", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Author', 'gp_lang'), + "desc" => __('Choose whether to display the post author.', 'gp_lang'), + "id" => $shortname . "_review_author", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Categories', 'gp_lang'), + "desc" => __('Choose whether to display the post categories.', 'gp_lang'), + "id" => $shortname . "_review_cats", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Comments', 'gp_lang'), + "desc" => __('Choose whether to display the post comments.', 'gp_lang'), + "id" => $shortname . "_review_comments", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Share Link', 'gp_lang'), + "desc" => __('Choose whether to display the share link.', 'gp_lang'), + "id" => $shortname . "_review_share_link", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Post Tags', 'gp_lang'), + "desc" => __('Choose whether to display the post tags.', 'gp_lang'), + "id" => $shortname . "_review_tags", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Author Info Panel', 'gp_lang'), + "desc" => __('Choose whether to display the author info panel.', 'gp_lang'), + "id" => $shortname . "_review_author_info", + "std" => "1", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "divider"), + array( + "name" => __('Related Items', 'gp_lang'), + "desc" => __('Choose whether to display related items.', 'gp_lang'), + "id" => $shortname . "_review_related_items", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array( + "name" => __('Image Width', 'gp_lang'), + "desc" => __('The width to crop the image to (set to 0 to have a proportionate width).', 'gp_lang'), + "id" => $shortname . "_review_related_image_width", + "std" => "120", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Image Height', 'gp_lang'), + "desc" => __('The height to crop the image to (set to 0 to have a proportionate height).', 'gp_lang'), + "id" => $shortname . "_review_related_image_height", + "std" => "100", + "type" => "text", + "size" => "small", + "details" => "px"), + array( + "name" => __('Related Items Category IDs', 'gp_lang'), + "desc" => __('Enter the IDs of the post categories you want to display in the related items section.', 'gp_lang'), + "id" => $shortname . "_review_related_cats", + "std" => "", + "type" => "text"), + array("type" => "divider"), + array( + "name" => __('Follow Button', 'gp_lang'), + "desc" => __('Choose whether to display the follow button.', 'gp_lang'), + "id" => $shortname . "_reviews_follow", + "std" => "0", + "options" => array(__('Enable', 'gp_lang'), __('Disable', 'gp_lang')), + "type" => "radio"), + array("type" => "close"), + array("name" => __('CSS Settings', 'gp_lang'), + "type" => "title"), + array("type" => "open", + "id" => $shortname . "_css_settings"), + array( + "name" => __('Custom CSS', 'gp_lang'), + "desc" => __('If you want to modify the theme style in some way add your own code here instead of editing the style sheets. Note: You may have to add !important to your tags in some cases so it overwrites the default settings e.g. body {background: #000000 !important;}.', 'gp_lang'), + "id" => $shortname . "_custom_css", + "std" => "", + "size" => "large", + "type" => "textarea"), + array("type" => "close"), +); + +function gp_add_admin() { + + global $themename, $dirname, $shortname, $options; + + if (isset($_GET['page']) && $_GET['page'] == basename(__FILE__)) { + + if (isset($_REQUEST['action']) && 'save' == $_REQUEST['action']) { + + foreach ($options as $value) { + update_option($value['id'], $_REQUEST[$value['id']]); + } + + foreach ($options as $value) { + if (isset($_REQUEST[$value['id']])) { + update_option($value['id'], $_REQUEST[$value['id']]); + } else { + delete_option($value['id']); + } + } + + header("Location: themes.php?page=theme-options.php&saved=true"); + die; + } else if (isset($_REQUEST['action']) && 'reset' == $_REQUEST['action']) { + + foreach ($options as $value) { + delete_option($value['id']); + } + + header("Location: themes.php?page=theme-options.php&reset=true"); + die; + } else if (isset($_REQUEST['action']) && 'export' == $_REQUEST['action']) + export_settings(); + else if (isset($_REQUEST['action']) && 'import' == $_REQUEST['action']) + import_settings(); + } + + add_theme_page(__('Theme Options', 'gp_lang'), __('Theme Options', 'gp_lang'), 'manage_options', basename(__FILE__), 'gp_admin'); +} + +function gp_admin() { + + global $themename, $dirname, $shortname, $options; + + if (isset($_REQUEST['saved']) && $_REQUEST['saved']) + echo '

                      ' . __('Options Saved', 'gp_lang') . '

                      '; + if (isset($_REQUEST['reset']) && $_REQUEST['reset']) + echo '

                      ' . __('Options Reset', 'gp_lang') . '

                      '; + ?> + + +
                      + + +

                      + +
                      + +

                      .

                      + +

                      @ghostpool.', 'gp_lang'); ?>

                      + +

                      portfolio.', 'gp_lang'); ?>

                      + +

                      + +
                      + +
                      + +

                      +
                      + +
                      +

                      +

                      + +
                      + +
                      + +

                      +
                      + +
                      +

                      + +
                      + +
                      + +
                      + +
                      + + +
                      + +
                      + + + + + + +
                      + + + + +
                      +

                      +
                      +
                      + + + + +
                      + + + + + +
                      + + + + +
                      + + + + +

                      +
                      style="" style=""> + " size="340" />   +
                      +
                      + + + + +

                      +
                      style=""> + + +
                      +
                      + + + + +

                      +
                      style=""> + + +
                      +
                      + + + + +

                      +
                      style=""> + +
                      +
                      + + + + +

                      +
                      style=""> + +
                      +
                      + + + + +

                      +
                      style=""> + + +
                      +
                      + + + + + +

                      +
                      multi-checkbox"> + /> +
                      +
                      + + + + +

                      +
                      style=""> + $option) { + $radio_setting = get_option($value['id']); + if ($radio_setting != '') { + if ($key == get_option($value['id'])) { + $checked = "checked=\"checked\""; + } else { + $checked = ""; + } + } else { + if ($key == $value['std']) { + $checked = "checked=\"checked\""; + } else { + $checked = ""; + } + } + ?> +
                      + /> +
                      + +
                      +
                      +
                      + + + + +

                      +
                      style=""> +
                      +
                      + + " class="cp_input" /> +
                      +
                      ;"> +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + + + + + +
                      style=""> + +

                      +
                      + +
                      +

                      +

                      + +
                      + +
                      + +
                      + +
                      + +

                      +
                      + +
                      +

                      + +
                      + +
                      + + + +
                      + +
                      + + + + + + +
                      + + +
                      + +
                      + +
                      + + + + 0) { + echo "Error: " . $_FILES["file"]["error"] . "
                      "; + } else { + $rawdata = file_get_contents($_FILES["file"]["tmp_name"]); + $theme_settings = unserialize($rawdata); + foreach ($options as $value) { + if ($theme_settings[$value['id']]) { + update_option($value['id'], $theme_settings[$value['id']]); + $$value['id'] = $theme_settings[$value['id']]; + } else { + if ($value['type'] == 'checkbox_multiple') + $$value['id'] = array(); + else + $$value['id'] = $value['std']; + } + } + } + if (in_array('cacheStyles', get_option('theme_misc'))) + cache_settings(); + wp_redirect($_SERVER['PHP_SELF'] . '?page=theme-options.php'); +} + +// Help File Info +if (is_admin() && $pagenow == "themes.php") { + add_action('admin_head', 'set_theme_help_text'); + + function set_theme_help_text() { + global $_registered_pages, $dirname; + if (!empty($_registered_pages)) + foreach (array_keys($_registered_pages)as $hook) + add_contextual_help($hook, '

                      ' . __('Help File', 'gp_lang') . '

                      ' . __('Support Forum', 'gp_lang') . '

                      ' . __('Changelog', 'gp_lang') . '

                      '); + } + +} +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/theme-post-types.php b/wp-content/themes/score/lib/admin/inc/theme-post-types.php new file mode 100644 index 0000000..55a3f91 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/theme-post-types.php @@ -0,0 +1,69 @@ + array( + 'name' => __('Dedications', 'gp_lang'), + 'singular_name' => __('Dedication', 'gp_lang'), + 'all_items' => __('All Dedications', 'gp_lang'), + 'add_new_item' => __('Add New Dedication', 'gp_lang'), + 'edit_item' => __('Edit Dedication', 'gp_lang'), + 'new_item' => __('New Dedication', 'gp_lang'), + 'view_item' => __('View Dedication', 'gp_lang'), + 'search_items' => __('Search Dedications', 'gp_lang'), + 'menu_name' => __('Dedications', 'gp_lang') + ), + 'public' => true, + 'exclude_from_search' => false, + 'show_ui' => true, + 'show_in_nav_menus' => false, + '_builtin' => false, + '_edit_link' => 'post.php?post=%d', + 'capability_type' => 'post', + 'hierarchical' => false, + 'rewrite' => array("slug" => "dedication"), + 'menu_position' => 20, + 'with_front' => true, + 'supports' => array('title', 'thumbnail', 'author', 'custom-fields') + )); + + add_filter("manage_edit-dedication_columns", "dedication_edit_columns"); + add_action("manage_posts_custom_column", "dedication_custom_columns"); + + function dedication_edit_columns($columns) { + $columns = array( + "cb" => "", + "title" => __('Title', 'gp_lang'), + "author" => __('Author', 'gp_lang'), + "dedication_url" => __('Video URL', 'gp_lang'), + "dedication_image" => __('Image', 'gp_lang'), + "date" => __('Date', 'gp_lang') + ); + + return $columns; + } + + function dedication_custom_columns($column) { + global $post; + require(ghostpool_inc . 'options.php'); + switch ($column) { + case "dedication_url": + echo get_post_meta($post->ID, 'ghostpool_dedication_url', true); + break; + case "dedication_image": + if (has_post_thumbnail()) { + $image = vt_resize(get_post_thumbnail_id(), '', 50, 50, true); + echo ''; + } + + break; + } + } + +} + +add_action('init', 'post_type_dedication');*/ + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/theme-post-types_bak.php b/wp-content/themes/score/lib/admin/inc/theme-post-types_bak.php new file mode 100644 index 0000000..d855f0b --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/theme-post-types_bak.php @@ -0,0 +1,215 @@ + array( + 'name' => __('Slides', 'gp_lang'), + 'singular_name' => __('Slide', 'gp_lang'), + 'all_items' => __('All Slides', 'gp_lang'), + 'add_new_item' => __('Add New Slide', 'gp_lang'), + 'edit_item' => __('Edit Slide', 'gp_lang'), + 'new_item' => __('New Slide', 'gp_lang'), + 'view_item' => __('View Slide', 'gp_lang'), + 'search_items' => __('Search Slides', 'gp_lang'), + 'menu_name' => __('Slides', 'gp_lang') + ), + 'public' => true, + 'exclude_from_search' => true, + 'show_ui' => true, + 'show_in_nav_menus' => false, + '_builtin' => false, + '_edit_link' => 'post.php?post=%d', + 'capability_type' => 'post', + 'hierarchical' => false, + 'rewrite' => array("slug" => "slide"), + 'menu_position' => 20, + 'with_front' => true, + 'supports' => array('title', 'thumbnail', 'author', 'custom-fields') + )); + + + /*************************** Slide Categories ***************************/ + + register_taxonomy('slide_categories', 'slide', array( + 'labels' => array( + 'name' => __('Slide Categories', 'gp_lang'), + 'singular_name' => __('Slide Category', 'gp_lang'), + 'all_items' => __('All Slide Categories', 'gp_lang'), + 'add_new_item' => __('Add New Slide Category', 'gp_lang'), + 'edit_item' => __('Edit Slide Category', 'gp_lang'), + 'new_item' => __('New Slide Category', 'gp_lang'), + 'view_item' => __('View Slide Category', 'gp_lang'), + 'search_items' => __('Search Slide Categories', 'gp_lang'), + 'menu_name' => __('Slide Categories', 'gp_lang') + ), + 'show_in_nav_menus' => false, + 'hierarchical' => true, + 'rewrite' => array('slug' => 'slide-categories') + )); + + + /*************************** Slide Page Layout ***************************/ + + add_filter("manage_edit-slide_columns", "slide_edit_columns"); + add_action("manage_posts_custom_column", "slide_custom_columns"); + + function slide_edit_columns($columns){ + $columns = array( + "cb" => "", + "title" => __('Title', 'gp_lang'), + "slide_url" => __('Slide URL', 'gp_lang'), + "slide_categories" => __('Categories', 'gp_lang'), + "slide_image" => __('Image', 'gp_lang'), + "date" => __('Date', 'gp_lang') + ); + + return $columns; + } + + function slide_custom_columns($column){ + global $post; + require(ghostpool_inc . 'options.php'); + switch ($column) + { + case "slide_url": + echo get_post_meta($post->ID, 'ghostpool_slide_url', true); + break; + case "slide_categories": + echo get_the_term_list($post->ID, 'slide_categories', '', ', ', ''); + break; + case "slide_image": + if(has_post_thumbnail()) { + $image = vt_resize(get_post_thumbnail_id(), '', 50, 50, true); + echo ''; + } + + break; + } + } + +} + +add_action('init', 'post_type_slide'); + + +/*************************** Slide Order Menu ***************************/ + +function gp_enable_slide_sort() { + add_submenu_page('edit.php?post_type=slide', __('Order Slides', 'gp_lang'), __('Order Slides', 'gp_lang'), 'edit_posts', basename(__FILE__), 'gp_sort_slides'); +} +add_action('admin_menu' , 'gp_enable_slide_sort'); + +function gp_sort_slides() { + + require(ghostpool_inc . 'options.php'); + + if($theme_slider_cats) { + + $slides = new WP_Query( + array( + 'post_type' => array('post', 'slide'), + 'posts_per_page' => -1, + 'order' => 'asc', + 'orderby' => 'menu_order', + 'tax_query' => + array('relation' => 'OR', + array('taxonomy' => 'slide_categories', 'terms' => explode(',', $theme_slider_cats), 'field' => 'id'), + array('taxonomy' => 'category', 'terms' => explode(',', $theme_slider_cats), 'field' => 'id')) + )); + + } else { + + $slides = new WP_Query( + array( + 'posts_per_page' => 1, + 'cat' => 9999999 + )); + + } + + +?> +
                      + +

                      + +
                        + + have_posts()) : while ($slides->have_posts()) : $slides->the_post(); + global $post; + $nonce = wp_create_nonce('my-nonce'); + require(ghostpool_inc . 'options.php'); ?> + +
                      • + + '; + + } ?> + + +

                        + +
                        + +
                        + +
                      • + + + + + +

                        slider categories and your chosen posts to one or more post categories. Now go to Appearance -> Theme Options -> Slider Settings and in the Slider Category IDs text field add your slider category IDs and/or post category IDs.', 'gp_lang'); ?>

                        + + + +
                      + +
                      + +update($wpdb->posts, array('menu_order' => $counter), array('ID' => $slide_id)); + $counter++; + } + die(1); +} +add_action('wp_ajax_slide_sort', 'gp_save_slide_order'); + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/theme-shortcodes.php b/wp-content/themes/score/lib/admin/inc/theme-shortcodes.php new file mode 100644 index 0000000..8f258c6 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/theme-shortcodes.php @@ -0,0 +1,39 @@ + \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/theme-sidebars.php b/wp-content/themes/score/lib/admin/inc/theme-sidebars.php new file mode 100644 index 0000000..e878e91 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/theme-sidebars.php @@ -0,0 +1,346 @@ + __('Homepage Sidebar 1', 'gp_lang'), 'id' => 'homepage-1', + 'before_widget' => '
                      ', + 'after_widget' => '
                      ', + 'before_title' => '

                      ', + 'after_title' => '

                      ')); + +register_sidebar(array('name' => __('Homepage Sidebar 2', 'gp_lang'), 'id' => 'homepage-2', + 'before_widget' => '
                      ', + 'after_widget' => '
                      ', + 'before_title' => '

                      ', + 'after_title' => '

                      ')); + +register_sidebar(array('name' => __('New dedication sidebar ', 'gp_lang'), 'id' => 'new-dedication', + 'before_widget' => '
                      ', + 'after_widget' => '
                      ', + 'before_title' => '

                      ', + 'after_title' => '

                      ')); + +register_sidebar(array('name' => __('Default Sidebar', 'gp_lang'), 'id' => 'default', + 'before_widget' => '
                      ', + 'after_widget' => '
                      ', + 'before_title' => '

                      ', + 'after_title' => '

                      ')); + +register_sidebar(array('name' => __('Contact Page Sidebar', 'gp_lang'), 'id'=> 'contact-page', + 'before_widget' => '
                      ', + 'after_widget' => '
                      ', + 'before_title' => '

                      ', + 'after_title' => '

                      ')); + +register_sidebar(array('name' => __('Footer 1', 'gp_lang'), 'id' => 'footer-1', + 'before_widget' => '', + 'before_title' => '

                      ', + 'after_title' => '

                      ')); + +register_sidebar(array('name' => __('Footer 2', 'gp_lang'), 'id' => 'footer-2', + 'before_widget' => '', + 'before_title' => '

                      ', + 'after_title' => '

                      ')); + +register_sidebar(array('name' => __('Footer 3', 'gp_lang'), 'id' => 'footer-3', + 'before_widget' => '', + 'before_title' => '

                      ', + 'after_title' => '

                      ')); + +register_sidebar(array('name' => __('Footer 4', 'gp_lang'), 'id' => 'footer-4', + 'before_widget' => '', + 'before_title' => '

                      ', + 'after_title' => '

                      ')); + + +/*************************** Create Sidebars ***************************/ + +/* +Sidebar Generator - 1.1.0 +Created bt Kyle Getson - http://www.kylegetson.com +Copyright (C) 2009 Kyle Robert Getson +*/ + +class sidebar_generator { + + function sidebar_generator(){ + add_action('init',array('sidebar_generator','init')); + add_action('admin_menu',array('sidebar_generator','admin_menu')); + add_action('admin_print_scripts', array('sidebar_generator','admin_print_scripts')); + add_action('wp_ajax_add_sidebar', array('sidebar_generator','add_sidebar') ); + add_action('wp_ajax_remove_sidebar', array('sidebar_generator','remove_sidebar') ); + } + + function init(){ + + $sidebars = sidebar_generator::get_sidebars(); + + if(is_array($sidebars)){ + foreach($sidebars as $sidebar){ + $sidebar_class = sidebar_generator::name_to_class($sidebar); + register_sidebar(array('name' => $sidebar, + 'before_widget' => '
                      ', + 'after_widget' => '
                      ', + 'before_title' => '

                      ', + 'after_title' => '

                      ')); + } + } + } + + function admin_print_scripts() { + wp_print_scripts( array( 'sack' )); + ?> + + Remove]'); + //cellLeft.appendChild(textNode) + + var cellLeft = row.insertCell(2); + removeLink = document.createElement('a'); + linkText = document.createTextNode('remove'); + removeLink.setAttribute('onclick', 'remove_sidebar_link($name)'); + removeLink.setAttribute('href', 'javascript:void(0)'); + + removeLink.appendChild(linkText); + cellLeft.appendChild(removeLink); + + + "; + + + die( "$js"); + } + + function remove_sidebar(){ + $sidebars = sidebar_generator::get_sidebars(); + $name = str_replace(array("\n","\r","\t"),'',$_POST['sidebar_name']); + $id = sidebar_generator::name_to_class($name); + if(!isset($sidebars[$id])){ + die("alert('Sidebar does not exist.')"); + } + $row_number = $_POST['row_number']; + unset($sidebars[$id]); + sidebar_generator::update_sidebars($sidebars); + $js = " + var tbl = document.getElementById('sbg_table'); + tbl.deleteRow($row_number) + + "; + die($js); + } + + function admin_menu(){ + add_theme_page('Sidebars', 'Sidebars', 'edit_themes', 'theme-sidebars.php', array('sidebar_generator','admin_page')); + } + + function admin_page(){ + ?> + +
                      +

                      +

                      + +

                      +
                      +
                      + + +
                      +
                      + + + + + + + + + + + + + + + + + +
                      + +
                      + get_queried_object(); + $selected_sidebar = get_post_meta($post->ID, 'sbg_selected_sidebar', true); + $selected_sidebar_replacement = get_post_meta($post->ID, 'sbg_selected_sidebar_replacement', true); + $did_sidebar = false; + + if($selected_sidebar != '' && $selected_sidebar != "0"){ + echo "\n\n\n"; + if(is_array($selected_sidebar) && !empty($selected_sidebar)){ + for($i=0;$i\n\n"; + return; + } + + if($name != "0"){ + dynamic_sidebar($name); + }else{ + dynamic_sidebar(); + } + echo "\n\n\n"; + return; + }else{ + if($name != "0"){ + dynamic_sidebar($name); + }else{ + dynamic_sidebar(); + } + } + } + + // replaces array of sidebar names + function update_sidebars($sidebar_array){ + $sidebars = update_option('sbg_sidebars',$sidebar_array); + } + + // gets the generated sidebars + function get_sidebars(){ + $sidebars = get_option('sbg_sidebars'); + return $sidebars; + } + function name_to_class($name){ + $class = '[sidebar name="'.$name.'"]'; + return $class; + } + +} +$sbg = new sidebar_generator; + +function generated_dynamic_sidebar($name='0'){ + sidebar_generator::get_sidebar($name); + return true; +} + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/theme-update-notification.php b/wp-content/themes/score/lib/admin/inc/theme-update-notification.php new file mode 100644 index 0000000..c3d8842 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/theme-update-notification.php @@ -0,0 +1,140 @@ +latest > (float)$theme_data['Version']) { // Compare current theme version with the remote XML version + add_dashboard_page( NOTIFIER_THEME_NAME . ' Theme Updates', NOTIFIER_THEME_NAME . ' 1', 'administrator', 'theme-update-notifier', 'gp_update_notifier'); + } + } +} +add_action('admin_menu', 'gp_update_notifier_menu'); + + + +// Adds an update notification to the WordPress 3.1+ Admin Bar +function gp_update_notifier_bar_menu() { + if (function_exists('simplexml_load_string')) { // Stop if simplexml_load_string funtion isn't available + global $wp_admin_bar, $wpdb; + + if ( !is_super_admin() || !is_admin_bar_showing() ) // Don't display notification in admin bar if it's disabled or the current user isn't an administrator + return; + + $xml = get_latest_theme_version(NOTIFIER_CACHE_INTERVAL); // Get the latest remote XML file on our server + $theme_data = get_theme_data(TEMPLATEPATH . '/style.css'); // Read theme current version from the style.css + + if( (float)$xml->latest > (float)$theme_data['Version']) { // Compare current theme version with the remote XML version + $wp_admin_bar->add_menu( array( 'id' => 'gp_update_notifier', 'title' => '' . NOTIFIER_THEME_NAME . ' Theme Update', 'href' => get_admin_url() . 'index.php?page=theme-update-notifier' ) ); + } + } +} +add_action( 'admin_bar_menu', 'gp_update_notifier_bar_menu', 1000 ); + + + +// The notifier page +function gp_update_notifier() { + $xml = get_latest_theme_version(NOTIFIER_CACHE_INTERVAL); // Get the latest remote XML file on our server + $theme_data = get_theme_data(TEMPLATEPATH . '/style.css'); // Read theme current version from the style.css ?> + + + +
                      + +
                      +

                      +

                      latest; ?>.

                      + + + +
                      + +

                      Update Instructions

                      + +

                      + +

                      info; ?>

                      + +
                      + +
                      + + $interval) ) { + // cache doesn't exist, or is old, so refresh it + if( function_exists('curl_init') ) { // if cURL is available, use it... + $ch = curl_init($notifier_file_url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_TIMEOUT, 10); + $cache = curl_exec($ch); + curl_close($ch); + } else { + $cache = file_get_contents($notifier_file_url); // ...if not, use the common file_get_contents() + } + + if ($cache) { + // we got good results + update_option( $db_cache_field, $cache ); + update_option( $db_cache_field_last_updated, time() ); + } + // read from the cache file + $notifier_data = get_option( $db_cache_field ); + } + else { + // cache file is fresh enough, so read from it + $notifier_data = get_option( $db_cache_field ); + } + + // Let's see if the $xml data was returned as we expected it to. + // If it didn't, use the default 1.0 as the latest version so that we don't have problems when the remote server hosting the XML file is down + if( strpos((string)$notifier_data, '') === false ) { + $notifier_data = '1.0'; + } + + // Load the remote XML data into a variable and return it + if ( function_exists('simplexml_load_string') ) { + return simplexml_load_string($notifier_data); + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/theme-widgets.bak.php b/wp-content/themes/score/lib/admin/inc/theme-widgets.bak.php new file mode 100644 index 0000000..4f35f3b --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/theme-widgets.bak.php @@ -0,0 +1,583 @@ + 'sidebarposts', 'description' => __('Enhanced display for your sidebar posts.', 'gp_lang')); + $this->WP_Widget('sidebar-posts-widget', __('GP Sidebar Posts', 'gp_lang'), $widget_ops); + } + + function widget($args, $instance) { + global $gp_settings, $post, $wp_query, $paged; + extract($args); + $title = apply_filters('widget_title', $instance['title']); + $cats = $instance['cats']; + $number = $instance['number']; + $images = $instance['images']; + $image_width = $instance['image_width']; + $image_height = $instance['image_height']; + $post_cats = $instance['post_cats']; + $post_meta = $instance['post_meta']; + $score_type = $instance['score_type']; + $gd_sort = $instance['gd_sort']; + $gd_order = $instance['gd_order']; + + require(ghostpool_inc . 'options.php'); + + // Begin Widget + echo $before_widget; ?> + +
                      + + $number, + 'gdsr_sort' => $gd_sort, + 'gdsr_order' => $gd_order, + 'cat' => $cats + ); + + $temp = $wp_query; + $wp_query = null; + $wp_query = new WP_Query(); + $wp_query->query($args); + + // Column Width + $column_width = "300"; + + if($wp_query->have_posts()) : while($wp_query->have_posts()) : $wp_query->the_post(); $counter++; + + // Post Type + $gp_settings['post_type'] = get_post_meta($post->ID, 'ghostpool_post_type', true); + + if(defined('STARRATING_INSTALLED')) { + + $gp_gdsr = wp_gdsr_rating_article(); + + // Site Score Colors + if($gp_gdsr->review <= $theme_score_range_2) { + $site_score_color = ' style="background: '.$theme_site_score_color_1.';"'; + } elseif($gp_gdsr->review >= $theme_score_range_3 && $gp_gdsr->review <= $theme_score_range_4) { + $site_score_color = ' style="background: '.$theme_site_score_color_2.';"'; + } elseif($gp_gdsr->review >= $theme_score_range_5 && $gp_gdsr->review <= $theme_score_range_6) { + $site_score_color = ' style="background: '.$theme_site_score_color_3.';"'; + } elseif($gp_gdsr->review >= $theme_score_range_7) { + $site_score_color = ' style="background: '.$theme_site_score_color_4.';"'; + } + + // User Score Colors + if($gp_gdsr->rating <= $theme_score_range_2) { + $user_score_color = ' style="background: '.$theme_user_score_color_1.';"'; + } elseif($gp_gdsr->rating >= $theme_score_range_3 && $gp_gdsr->rating <= $theme_score_range_4) { + $user_score_color = ' style="background: '.$theme_user_score_color_2.';"'; + } elseif($gp_gdsr->rating >= $theme_score_range_5 && $gp_gdsr->rating <= $theme_score_range_6) { + $user_score_color = ' style="background: '.$theme_user_score_color_3.';"'; + } elseif($gp_gdsr->rating >= $theme_score_range_7) { + $user_score_color = ' style="background: '.$theme_user_score_color_4.';"'; + } + + } + + // User Voting + if(get_post_meta($post->ID, 'ghostpool_user_voting', true) && get_post_meta($post->ID, 'ghostpool_user_voting', true) != "'Default") { + $gp_settings['user_voting'] = get_post_meta($post->ID, 'ghostpool_user_voting', true); + } else { + $gp_settings['user_voting'] = $theme_user_voting; + } + + // Display First Image + if($images == "First Image") { + $image_counter = $counter == 1; + } else { + $image_counter = ""; + } + + // Post Text Width + if(!has_post_thumbnail() OR $images == "No Images" OR ($images == "First Image" && !$image_counter) OR $image_width >= 175) { + $post_text_width = $column_width; + } else { + $post_text_width = $column_width - $image_width - 17; + } + + // Post Left Width + if($gp_settings['post_type'] == "Review" && ($score_type == "Site Score" && $gp_gdsr->review > 0) OR ($score_type == "User Score" && $gp_settings['user_voting'] != "Users cannot vote") OR ($score_type == "Site & User Score" && ($gp_gdsr->review > 0 OR $gp_settings['user_voting'] != "Users cannot vote"))) { + $post_left_width = $post_text_width - 49; + } else { + $post_left_width = $post_text_width; + } + + ?> + +
                      > + + + +
                      + + + + <?php if(get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true)) { echo get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true); } else { echo get_the_title(); } ?> + +
                      + + + + +
                      review <= 0 && $gp_settings['user_voting'] == "Users cannot vote"))) { ?> hidden" style="width: px;"> + +
                      + + + + +
                      + + + + + + +
                      + + + review > 0 && $gp_settings['user_voting'] != "Users cannot vote"))) { ?> + +
                      + + + review > 0) { ?> +
                      > + review; ?> +
                      + + + + + +
                      > + rating; ?> +
                      + + + +
                      + + + + +
                      + + +
                      + + + +
                      + + '', 'cats' => '', 'number' => 5, 'images' => __('All Images', 'gp_lang'), 'image_width' => '50', 'image_height' => '0', 'post_cats' => __('Yes', 'gp_lang'), 'score_type' => __('Site Score', 'gp_lang'), 'post_meta' => __('Yes', 'gp_lang'), 'gd_sort' => 'review', 'gd_order' => 'desc'); + $instance = wp_parse_args((array) $instance, $defaults); ?> + +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + + +

                      +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      + + + + 'footerposts', 'description' => __('Enhanced display for your footer posts.', 'gp_lang')); + $this->WP_Widget('footer-posts-widget', __('GP Footer Posts', 'gp_lang'), $widget_ops); + } + + function widget($args, $instance) { + global $gp_settings, $post, $wp_query, $paged; + extract($args); + $title = apply_filters('widget_title', $instance['title']); + $cats = $instance['cats']; + $number = $instance['number']; + $images = $instance['images']; + $image_width = $instance['image_width']; + $image_height = $instance['image_height']; + $post_cats = $instance['post_cats']; + $post_meta = $instance['post_meta']; + $score_type = $instance['score_type']; + $gd_sort = $instance['gd_sort']; + $gd_order = $instance['gd_order']; + + require(ghostpool_inc . 'options.php'); + + // Begin Widget + echo $before_widget; ?> + +
                      + + $number, + 'gdsr_sort' => $gd_sort, + 'gdsr_order' => $gd_order, + 'cat' => $cats + ); + + $temp = $wp_query; + $wp_query = null; + $wp_query = new WP_Query(); + $wp_query->query($args); + + // Widget Width + if(is_active_sidebar('footer-1') && is_active_sidebar('footer-2') && is_active_sidebar('footer-3') && is_active_sidebar('footer-4')) { + $column_width = "207.5"; + } + elseif(is_active_sidebar('footer-1') && is_active_sidebar('footer-2') && is_active_sidebar('footer-3')) { + $column_width = "286.6"; + } + elseif(is_active_sidebar('footer-1') && is_active_sidebar('footer-2')) { + $column_width = "445"; + } + elseif(is_active_sidebar('footer-1')) { + $column_width = "920"; + } + + if($wp_query->have_posts()) : while($wp_query->have_posts()) : $wp_query->the_post(); $counter++; + + // Post Type + $gp_settings['post_type'] = get_post_meta($post->ID, 'ghostpool_post_type', true); + + if(defined('STARRATING_INSTALLED')) { + + $gp_gdsr = wp_gdsr_rating_article(); + + // Site Score Colors + if($gp_gdsr->review <= $theme_score_range_2) { + $site_score_color = ' style="background: '.$theme_site_score_color_1.';"'; + } elseif($gp_gdsr->review >= $theme_score_range_3 && $gp_gdsr->review <= $theme_score_range_4) { + $site_score_color = ' style="background: '.$theme_site_score_color_2.';"'; + } elseif($gp_gdsr->review >= $theme_score_range_5 && $gp_gdsr->review <= $theme_score_range_6) { + $site_score_color = ' style="background: '.$theme_site_score_color_3.';"'; + } elseif($gp_gdsr->review >= $theme_score_range_7) { + $site_score_color = ' style="background: '.$theme_site_score_color_4.';"'; + } + + // User Score Colors + if($gp_gdsr->rating <= $theme_score_range_2) { + $user_score_color = ' style="background: '.$theme_user_score_color_1.';"'; + } elseif($gp_gdsr->rating >= $theme_score_range_3 && $gp_gdsr->rating <= $theme_score_range_4) { + $user_score_color = ' style="background: '.$theme_user_score_color_2.';"'; + } elseif($gp_gdsr->rating >= $theme_score_range_5 && $gp_gdsr->rating <= $theme_score_range_6) { + $user_score_color = ' style="background: '.$theme_user_score_color_3.';"'; + } elseif($gp_gdsr->rating >= $theme_score_range_7) { + $user_score_color = ' style="background: '.$theme_user_score_color_4.';"'; + } + + } + + // Display First Image + if($images == "First Image") { + $image_counter = $counter == 1; + } else { + $image_counter = ""; + } + + // Post Text Width + if(!has_post_thumbnail() OR $images == "No Images" OR ($images == "First Image" && !$image_counter) OR $image_width >= 175) { + $post_text_width = $column_width; + + } else { + $post_text_width = $column_width - $image_width - 17; + } + + // Post Left Width + if($gp_settings['post_type'] == "Review" && ($score_type == "Site Score" && $gp_gdsr->review > 0) OR ($score_type == "User Score" && $gp_settings['user_voting'] != "Users cannot vote") OR ($score_type == "Site & User Score" && ($gp_gdsr->review > 0 OR $gp_settings['user_voting'] != "Users cannot vote"))) { + $post_left_width = $post_text_width - 49; + } else { + $post_left_width = $post_text_width; + } + + ?> + +
                      > + + + +
                      + + + + <?php if(get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true)) { echo get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true); } else { echo get_the_title(); } ?> + +
                      + + + + +
                      review <= 0 && $gp_settings['user_voting'] == "Users cannot vote"))) { ?> hidden" style="width: px;"> + +
                      + + + + +
                      + + + + + + +
                      + + + review > 0 OR $gp_settings['user_voting'] != "Users cannot vote"))) { ?> + +
                      + + + review > 0) { ?> +
                      > + review; ?> +
                      + + + + + +
                      > + rating; ?> +
                      + + + +
                      + + + + +
                      + + +
                      + + + +
                      + + '', 'cats' => '', 'number' => 5, 'images' => __('All Images', 'gp_lang'), 'image_width' => '50', 'image_height' => '0', 'post_cats' => __('Yes', 'gp_lang'), 'score_type' => __('Site Score', 'gp_lang'), 'post_meta' => __('Yes', 'gp_lang'), 'gd_sort' => 'review', 'gd_order' => 'desc'); + $instance = wp_parse_args((array) $instance, $defaults); ?> + +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + + +

                      +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      + + + + \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/theme-widgets.php b/wp-content/themes/score/lib/admin/inc/theme-widgets.php new file mode 100644 index 0000000..d5cea67 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/theme-widgets.php @@ -0,0 +1,570 @@ + 'sidebarposts', 'description' => __('Enhanced display for your sidebar posts.', 'gp_lang')); + $this->WP_Widget('sidebar-posts-widget', __('GP Sidebar Posts', 'gp_lang'), $widget_ops); + } + + function widget($args, $instance) { + global $gp_settings, $post, $wp_query, $paged; + extract($args); + $title = apply_filters('widget_title', $instance['title']); + $cats = $instance['cats']; + $number = $instance['number']; + $images = $instance['images']; + $image_width = $instance['image_width']; + $image_height = $instance['image_height']; + $post_title = $instance['post_title']; + $post_artist_song = $instance['post_artist_song']; + $post_from_to = $instance['post_from_to']; + $post_cats = $instance['post_cats']; + $post_meta = $instance['post_meta']; + $gd_sort = $instance['gd_sort']; + $gd_order = $instance['gd_order']; + $after_text = htmlspecialchars_decode($instance['after_text']); + + require(ghostpool_inc . 'options.php'); + + // Begin Widget + echo $before_widget; ?> + +
                      + + $number, + 'gdsr_sort' => $gd_sort, + 'gdsr_order' => $gd_order, + 'cat' => $cats + ); + + $temp = $wp_query; + $wp_query = null; + $wp_query = new WP_Query(); + $wp_query->query($args); + + // Column Width + $column_width = "300"; + + if($wp_query->have_posts()) : while($wp_query->have_posts()) : $wp_query->the_post(); $counter++; + + // Post Type + $gp_settings['post_type'] = get_post_meta($post->ID, 'ghostpool_post_type', true); + + // Display First Image + if($images == "First Image") { + $image_counter = $counter == 1; + } else { + $image_counter = ""; + } + ?> + +
                      > + + + +
                      + + + <?php if(get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true)) { echo get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true); } else { echo get_the_title(); } ?> + +
                      + + + + +
                      + + + + + + + + ID, 'ghostpool_dedication_artist', true); + $song = get_post_meta($post->ID, 'ghostpool_dedication_song', true);?> + + + + + ID, 'ghostpool_destination_user_email', true); + $to_user = get_user_by ('email', $to_user_email);?> + + + + +
                      + + + + + + + + +
                      + + +
                      + + +
                      + + + +
                      + + '', + 'cats' => '', + 'number' => 1, + 'images' => __('All Images', 'gp_lang'), + 'image_width' => '50', + 'image_height' => '0', + 'post_title' => __('No', 'gp_lang'), + 'post_artist_song' => __('Yes', 'gp_lang'), + 'post_from_to' => __('Yes', 'gp_lang'), + 'post_cats' => __('Yes', 'gp_lang'), + 'score_type' => __('Site Score', 'gp_lang'), + 'post_meta' => __('Yes', 'gp_lang'), + 'gd_sort' => 'review', + 'gd_order' => 'desc', + 'after_text' => '' + ); + $instance = wp_parse_args((array) $instance, $defaults); ?> + +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + + +

                      +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      + +

                      + + +

                      + + +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      + + + + 'footerposts', 'description' => __('Enhanced display for your footer posts.', 'gp_lang')); + $this->WP_Widget('footer-posts-widget', __('GP Footer Posts', 'gp_lang'), $widget_ops); + } + + function widget($args, $instance) { + global $gp_settings, $post, $wp_query, $paged; + extract($args); + $title = apply_filters('widget_title', $instance['title']); + $cats = $instance['cats']; + $number = $instance['number']; + $images = $instance['images']; + $image_width = $instance['image_width']; + $image_height = $instance['image_height']; + $post_cats = $instance['post_cats']; + $post_meta = $instance['post_meta']; + $score_type = $instance['score_type']; + $gd_sort = $instance['gd_sort']; + $gd_order = $instance['gd_order']; + + require(ghostpool_inc . 'options.php'); + + // Begin Widget + echo $before_widget; ?> + +
                      + + $number, + 'gdsr_sort' => $gd_sort, + 'gdsr_order' => $gd_order, + 'cat' => $cats + ); + + $temp = $wp_query; + $wp_query = null; + $wp_query = new WP_Query(); + $wp_query->query($args); + + // Widget Width + if(is_active_sidebar('footer-1') && is_active_sidebar('footer-2') && is_active_sidebar('footer-3') && is_active_sidebar('footer-4')) { + $column_width = "207.5"; + } + elseif(is_active_sidebar('footer-1') && is_active_sidebar('footer-2') && is_active_sidebar('footer-3')) { + $column_width = "286.6"; + } + elseif(is_active_sidebar('footer-1') && is_active_sidebar('footer-2')) { + $column_width = "445"; + } + elseif(is_active_sidebar('footer-1')) { + $column_width = "920"; + } + + if($wp_query->have_posts()) : while($wp_query->have_posts()) : $wp_query->the_post(); $counter++; + + // Post Type + $gp_settings['post_type'] = get_post_meta($post->ID, 'ghostpool_post_type', true); + + if(defined('STARRATING_INSTALLED')) { + + $gp_gdsr = wp_gdsr_rating_article(); + + // Site Score Colors + if($gp_gdsr->review <= $theme_score_range_2) { + $site_score_color = ' style="background: '.$theme_site_score_color_1.';"'; + } elseif($gp_gdsr->review >= $theme_score_range_3 && $gp_gdsr->review <= $theme_score_range_4) { + $site_score_color = ' style="background: '.$theme_site_score_color_2.';"'; + } elseif($gp_gdsr->review >= $theme_score_range_5 && $gp_gdsr->review <= $theme_score_range_6) { + $site_score_color = ' style="background: '.$theme_site_score_color_3.';"'; + } elseif($gp_gdsr->review >= $theme_score_range_7) { + $site_score_color = ' style="background: '.$theme_site_score_color_4.';"'; + } + + // User Score Colors + if($gp_gdsr->rating <= $theme_score_range_2) { + $user_score_color = ' style="background: '.$theme_user_score_color_1.';"'; + } elseif($gp_gdsr->rating >= $theme_score_range_3 && $gp_gdsr->rating <= $theme_score_range_4) { + $user_score_color = ' style="background: '.$theme_user_score_color_2.';"'; + } elseif($gp_gdsr->rating >= $theme_score_range_5 && $gp_gdsr->rating <= $theme_score_range_6) { + $user_score_color = ' style="background: '.$theme_user_score_color_3.';"'; + } elseif($gp_gdsr->rating >= $theme_score_range_7) { + $user_score_color = ' style="background: '.$theme_user_score_color_4.';"'; + } + + } + + // Display First Image + if($images == "First Image") { + $image_counter = $counter == 1; + } else { + $image_counter = ""; + } + + // Post Text Width + if(!has_post_thumbnail() OR $images == "No Images" OR ($images == "First Image" && !$image_counter) OR $image_width >= 175) { + $post_text_width = $column_width; + + } else { + $post_text_width = $column_width - $image_width - 17; + } + + // Post Left Width + if($gp_settings['post_type'] == "Review" && ($score_type == "Site Score" && $gp_gdsr->review > 0) OR ($score_type == "User Score" && $gp_settings['user_voting'] != "Users cannot vote") OR ($score_type == "Site & User Score" && ($gp_gdsr->review > 0 OR $gp_settings['user_voting'] != "Users cannot vote"))) { + $post_left_width = $post_text_width - 49; + } else { + $post_left_width = $post_text_width; + } + + ?> + +
                      > + + + +
                      + + + + <?php if(get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true)) { echo get_post_meta(get_post_thumbnail_id(), '_wp_attachment_image_alt', true); } else { echo get_the_title(); } ?> + +
                      + + + + +
                      review <= 0 && $gp_settings['user_voting'] == "Users cannot vote"))) { ?> hidden" style="width: px;"> + +
                      + + + + +
                      + + + + + + +
                      + + + review > 0 OR $gp_settings['user_voting'] != "Users cannot vote"))) { ?> + +
                      + + + review > 0) { ?> +
                      > + review; ?> +
                      + + + + + +
                      > + rating; ?> +
                      + + + +
                      + + + + +
                      + + +
                      + + + +
                      + + '', 'cats' => '', 'number' => 5, 'images' => __('All Images', 'gp_lang'), 'image_width' => '50', 'image_height' => '0', 'post_cats' => __('Yes', 'gp_lang'), 'score_type' => __('Site Score', 'gp_lang'), 'post_meta' => __('Yes', 'gp_lang'), 'gd_sort' => 'review', 'gd_order' => 'desc'); + $instance = wp_parse_args((array) $instance, $defaults); ?> + +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + + +

                      +

                      + +
                      +

                      +

                      + +
                      +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      +

                      + + +

                      + + + + \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/tinymce/config.php b/wp-content/themes/score/lib/admin/inc/tinymce/config.php new file mode 100644 index 0000000..fb918a3 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/tinymce/config.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/tinymce/editor_plugin.js b/wp-content/themes/score/lib/admin/inc/tinymce/editor_plugin.js new file mode 100644 index 0000000..f02bbe3 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/tinymce/editor_plugin.js @@ -0,0 +1,76 @@ +// Docu : http://wiki.moxiecode.com/index.php/TinyMCE:Create_plugin/3.x#Creating_your_own_plugins + +(function() { + // Load plugin specific language pack + tinymce.PluginManager.requireLangPack('ghostpool_shortcode'); + + tinymce.create('tinymce.plugins.ghostpool_shortcode', { + /** + * Initializes the plugin, this will be executed after the plugin has been created. + * This call is done before the editor instance has finished it's initialization so use the onInit event + * of the editor instance to intercept that event. + * + * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. + * @param {string} url Absolute URL to where the plugin is located. + */ + init : function(ed, url) { + // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample'); + + ed.addCommand('mceghostpool_shortcode', function() { + ed.windowManager.open({ + file : url + '/window_options.php', + width : 410 + ed.getLang('ghostpool_shortcode.delta_width', 0), + height : 240 + ed.getLang('ghostpool_shortcode.delta_height', 0), + inline : 1 + }, { + plugin_url : url // Plugin absolute URL + }); + }); + + // Register example button + ed.addButton('ghostpool_shortcode', { + title : 'Add Custom Shortcode', + cmd : 'mceghostpool_shortcode', + image : url + '/icon.gif' + }); + + // Add a node change handler, selects the button in the UI when a image is selected + ed.onNodeChange.add(function(ed, cm, n) { + cm.setActive('ghostpool_shortcode', n.nodeName == 'IMG'); + }); + }, + + /** + * Creates control instances based in the incoming name. This method is normally not + * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons + * but you sometimes need to create more complex controls like listboxes, split buttons etc then this + * method can be used to create those. + * + * @param {String} n Name of the control to create. + * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control. + * @return {tinymce.ui.Control} New control instance or null if no control was created. + */ + createControl : function(n, cm) { + return null; + }, + + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @return {Object} Name/value array containing information about the plugin. + */ + getInfo : function() { + return { + longname : 'ghostpool_shortcode', + author : 'ghostpool', + authorurl : 'http://ghostpool.com', + infourl : 'http://ghostpool.com', + version : "1.0" + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('ghostpool_shortcode', tinymce.plugins.ghostpool_shortcode); +})(); \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/tinymce/icon.gif b/wp-content/themes/score/lib/admin/inc/tinymce/icon.gif new file mode 100644 index 0000000..990d913 Binary files /dev/null and b/wp-content/themes/score/lib/admin/inc/tinymce/icon.gif differ diff --git a/wp-content/themes/score/lib/admin/inc/tinymce/tinymce.js b/wp-content/themes/score/lib/admin/inc/tinymce/tinymce.js new file mode 100644 index 0000000..81114d0 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/tinymce/tinymce.js @@ -0,0 +1,138 @@ +function init() { + tinyMCEPopup.resizeToInnerSize(); +} + +function getCheckedValue(radioObj) { + if(!radioObj) + return ""; + var radioLength = radioObj.length; + if(radioLength == undefined) + if(radioObj.checked) + return radioObj.value; + else + return ""; + for(var i = 0; i < radioLength; i++) { + if(radioObj[i].checked) { + return radioObj[i].value; + } + } + return ""; +} + +function insertghostpoolLink() { + + var tagtext; + + var style = document.getElementById('style_panel'); + + var styleid = document.getElementById('style_shortcode').value; + + if (styleid != 0) { + tagtext = "["+ styleid + "]Insert your text here[/' + styleid + '] "; + } + + // Accordion Panels + if (styleid != 0 && styleid == 'accordion') { + tagtext = '['+ styleid + ']
                      [panel title="Panel Title 1"]Insert your text here[/panel]
                      [panel title="Panel Title 2"]Insert your text here[/panel]
                      [panel title="Panel Title 3"]Insert your text here[/panel]
                      [/' + styleid + ']'; + } + + // Author Info + if (styleid != 0 && styleid == 'author') { + tagtext = '['+ styleid + ']'; + } + + // Blockquotes + if (styleid != 0 && styleid == 'bq_left') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + ']'; + } + if (styleid != 0 && styleid == 'bq_right') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + ']'; + } + + // Contact Form + if (styleid != 0 && styleid == 'contact') { + tagtext = '['+ styleid + ' email=""]'; + } + + // Dividers + if (styleid != 0 && styleid == 'divider') { + tagtext = '['+ styleid + ']'; + } + if (styleid != 0 && styleid == 'top_divider') { + tagtext = '['+ styleid + ']'; + } + if (styleid != 0 && styleid == 'small_divider') { + tagtext = '['+ styleid + ']'; + } + if (styleid != 0 && styleid == 'clear') { + tagtext = '['+ styleid + ']'; + } + if (styleid != 0 && styleid == 'small_clear') { + tagtext = '['+ styleid + ']'; + } + + // Tabs + if (styleid != 0 && styleid == 'tabs') { + tagtext = '['+ styleid + ']
                      [tab title="Tab Title 1"]Insert your text here[/tab]
                      [tab title="Tab Title 2"]Insert your text here[/tab]
                      [tab title="Tab Title 3"]Insert your text here[/tab]
                      [/' + styleid + ']'; + document.write (tagtext); + } + + // Sidebar + if (styleid != 0 && styleid == 'sidebar') { + tagtext = '['+ styleid + ' name="default" width="" align="alignnone"]'; + } + + // Toggle + if (styleid != 0 && styleid == 'toggle') { + tagtext = '['+ styleid + ' title=""]Insert your text here[/' + styleid + ']'; + } + if (styleid != 0 && styleid == 'panel') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + ']'; + } + + // Video + if (styleid != 0 && styleid == 'video') { + tagtext = '['+ styleid + ' name="video" url="" html5_1="" html5_2="" priority="flash" image="" width="470" height="320" align="alignnone" controlbar="bottom" autostart="false" stretching="fill" icons="true"]'; + } + + // Columns + if (styleid != 0 && styleid == 'two') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + '] ['+ styleid + '_last]Insert your text here[/' + styleid + '_last]'; + } + if (styleid != 0 && styleid == 'three') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + '] ['+ styleid + '_middle]Insert your text here[/' + styleid + '_middle] ['+ styleid + '_last]Insert your text here[/' + styleid + '_last]'; + } + if (styleid != 0 && styleid == 'four') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + '] ['+ styleid + '_middle]Insert your text here[/' + styleid + '_middle] ['+ styleid + '_middle]Insert your text here[/' + styleid + '_middle] ['+ styleid + '_last]Insert your text here[/' + styleid + '_last]'; + } + if (styleid != 0 && styleid == 'five') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + '] ['+ styleid + '_middle]Insert your text here[/' + styleid + '_middle] ['+ styleid + '_middle]Insert your text here[/' + styleid + '_middle] ['+ styleid + '_middle]Insert your text here[/' + styleid + '_middle] ['+ styleid + '_last]Insert your text here[/' + styleid + '_last]'; + } + if (styleid != 0 && styleid == 'onethird') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + '] [twothirds_last]Insert your text here[/twothirds_last]'; + } + if (styleid != 0 && styleid == 'twothirds') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + '] [onethird_last]Insert your text here[/onethird_last]'; + } + if (styleid != 0 && styleid == 'onefourth') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + '] [threefourths_last]Insert your text here[/threefourths_last]'; + } + if (styleid != 0 && styleid == 'threefourths') { + tagtext = '['+ styleid + ']Insert your text here[/' + styleid + '] [onefourth_last]Insert your text here[/onefourth_last]'; + } + + if ( styleid == 0) { + tinyMCEPopup.close(); + } + + if(window.tinyMCE) { + //TODO: For QTranslate we should use here 'qtrans_textarea_content' instead 'content' + window.tinyMCE.execInstanceCommand('content', 'mceInsertContent', false, tagtext); + //Peforms a clean up of the current editor HTML. + //tinyMCEPopup.editor.execCommand('mceCleanup'); + //Repaints the editor. Sometimes the browser has graphic glitches. + tinyMCEPopup.editor.execCommand('mceRepaint'); + tinyMCEPopup.close(); + } + return; +} diff --git a/wp-content/themes/score/lib/admin/inc/tinymce/tinymce.php b/wp-content/themes/score/lib/admin/inc/tinymce/tinymce.php new file mode 100644 index 0000000..1cb45f1 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/tinymce/tinymce.php @@ -0,0 +1,61 @@ +path = get_template_directory_uri() . '/lib/admin/inc/tinymce/'; + + // Modify the version when tinyMCE plugins are changed. + add_filter('tiny_mce_version', array (&$this, 'change_tinymce_version') ); + + // init process for button control + add_action('init', array (&$this, 'addbuttons') ); + } + + function addbuttons() { + global $page_handle; + + // Don't bother doing this stuff if the current user lacks permissions + if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') ) + return; + + // Add only in Rich Editor mode + if ( get_user_option('rich_editing') == 'true') { + + $svr_uri = $_SERVER['REQUEST_URI']; + if ( strstr($svr_uri, 'post.php') || strstr($svr_uri, 'post-new.php') || strstr($svr_uri, 'page.php') || strstr($svr_uri, 'page-new.php') || strstr($svr_uri, $page_handle) ) { + add_filter("mce_external_plugins", array (&$this, 'add_tinymce_plugin' ), 5); + add_filter('mce_buttons', array (&$this, 'register_button' ), 5); + } + } + } + + function register_button($buttons) { + + array_push($buttons, 'separator', $this->pluginname ); + + return $buttons; + } + + function add_tinymce_plugin($plugin_array) { + + $plugin_array[$this->pluginname] = $this->path . 'editor_plugin.js'; + + return $plugin_array; + } + + function change_tinymce_version($version) { + $version = $version + $this->internalVersion; + return $version; + } + +} + +$tinymce_button = new add_ghostpool_button (); + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/tinymce/window_options.php b/wp-content/themes/score/lib/admin/inc/tinymce/window_options.php new file mode 100644 index 0000000..7349466 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/tinymce/window_options.php @@ -0,0 +1,99 @@ + + + + + <?php echo $themename .__(' Shortcodes', 'gp_lang'); ?> + + + + + + + + +
                      +
                      +
                        +
                      • +
                      +
                      + +
                      + +
                      +
                      +
                      + + + + + +
                      +
                      +
                      + +
                      + +
                      +
                      + +
                      + +
                      + +
                      +
                      +
                      + + diff --git a/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/readme.txt b/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/readme.txt new file mode 100644 index 0000000..1605800 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/readme.txt @@ -0,0 +1,38 @@ +=== Widget Settings Importer/Exporter === +Contributors: kevinlangleyjr, smccafferty +Tags: widget, import, export +Requires at least: 2.8 +Tested up to: 3.3 +Stable tag: trunk + +Allows you to export and import widgets settings. + +== Description == + +Gives the user the ability to export the current widget settings and states as a json file. You can then import those settings on a different server or installation of WordPress so you have the same widgets within the same sidebars as the export. The import will not overwrite any data currently within the sidebars, but instead will increment the widgets and add a new instance of the widget instead. + +**Please note that the plugin currently does not import anything if that particular sidebar is unavailable during the import. + +== Installation == + +This section describes how to install the plugin and get it working. + +e.g. + +1. Upload entire widget-settings-importexport directory to the `/wp-content/plugins/` directory +2. Activate the plugin through the 'Plugins' menu in WordPress + + +== Changelog == + += 0.1 = +* First Version + += 0.2 = +* Fixing blank redirect with WP installed within sub directory + += 0.3 = +* Fixing export of empty file by instead of creating temp file, it will just output the json + += 0.4 = +* Fixing headers already sent error \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/widget_data.css b/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/widget_data.css new file mode 100644 index 0000000..67c8ab3 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/widget_data.css @@ -0,0 +1,54 @@ +.widget-data .wrap h2 {padding-bottom: 20px;} + +.widget-data .sidebars {border-color: #DFDFDF; + border-style: solid; + border-width: 1px; +} + +.widget-data .title h3 { + font-family: Georgia,"Times New Roman","Bitstream Charter",Times,serif; + font-size: 15px; + font-weight: normal; + margin: 0; + overflow: hidden; + padding: 8px 10px; + white-space: nowrap; + width: 100px; +} + +.widget-data .title { + border-style: solid; + border-width: 1px; + font-size: 13px; + border-color: #DFDFDF; + color: #464646; + text-shadow: 0 1px 0 #FFFFFF; + background-color: #F1F1F1; + background-image: -moz-linear-gradient(center top , #F9F9F9, #ECECEC); +} + +#notifier{ display:block; width:100%; margin:0 auto; height:40px; border:1px solid #ccc; text-align: center; margin-bottom:10px } + +#notifier p { color:#fff; font:bold 16px 'Arial'; margin:10px 0; } + +#notifier.success { background:#0ee61c;} + +#notifier.error { background:#e00909; } + +#upload-button { display:none; margin:4px 0 0 10px; } + +#output-text {background:#fff; display:block; width:400px; height:20px; border:solid 1px #eee; padding:5px;} + +#button-upload {margin-top:20px;} + +.widget-data .left {float: left; margin-bottom:10px;} +.widget-data .right {float: right} +.widget-data .sidebars .sidebar label {font-size: 12px;} +.widget-data .sidebars .sidebar h4 {margin: 0; padding: 8px 20px; background:#eee;} +.widget-data .button-bottom {margin-top: 10px;} +.widget-data .export-selection-error {float: right;} +.widget-data .title p {margin: 0; float: right; padding-top: 10px; font-size: 11px; color: red; padding: 10px 10px 0 0; display: none;} + +div.sidebar div.widgets .import-form-row { padding:10px 10px 10px 30px; } +div.sidebar div.widgets .import-form-row:nth-child(odd) { background-color:#fff; } +div.sidebar div.widgets .import-form-row:nth-child(even){ background-color:#F9F9F9; } \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/widget_data.js b/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/widget_data.js new file mode 100644 index 0000000..623e5f8 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/widget_data.js @@ -0,0 +1,93 @@ +jQuery( function($) { + + $('.widget-data #message').hide(); + + $('#SelectAllActive').click(function(){ + $('.active').each(function(){ + $(this).attr( 'checked', true ) + }); + }); + + $('#UnSelectAllActive').click(function(){ + $('.active').each(function(){ + $(this).attr( 'checked', false ) + }); + }); + + $('form#widget-export-settings').submit(function() { + $('form#widget-export-settings').fadeOut('slow'); + window.setTimeout(redirect_to_widgets, 4000) + message = 'All of the requested widgets have been exported.'; + show_notification(message, 'success'); + }); + + + $('form#import-widget-data').submit(function(event){ + event.preventDefault(); + + var message; + var new_class; + + $.post(ajaxurl, $("#import-widget-data").serialize(), + function(data){ + if(data == "SUCCESS") { + message = 'All widgets with registered sidebars have been imported successfully.'; + new_class = 'success'; + $('.import-wrapper').fadeOut('slow'); + window.setTimeout(redirect_to_widgets, 4000) + } else { + message = 'There was a problem importing your widgets. Please try again.'; + new_class = 'error'; + } + show_notification(message, new_class); + }); + + }); + + $('#export-widgets').click(function(){ + if ($(':checked').length == 0) { + $('.widget-selection-error').fadeIn('slow').delay(2000).fadeOut('slow'); + return false; + } + + return true; + }); + + $('#import-widgets').click(function(){ + if ($(':checked').length == 0) { + $('.widget-selection-error').fadeIn('slow').delay(2000).fadeOut('slow'); + return false; + } + + return true; + }); + + var wrapper = $('
                      ').css({height:0,width:0,'overflow':'hidden'}); + var fileInput = $('#upload-file').wrap(wrapper); + + fileInput.change(function(){ + $this = $(this); + sub = $this.val().lastIndexOf('\\') + 1; + new_string = $this.val().substring(sub); + $('#output-text').text(new_string); + $('#output-text').fadeIn('slow'); + }) + + $('#upload-button').click(function(){ + fileInput.click(); + }).show(); + + function show_notification(message, class_name){ + if(class_name == '') class_name = 'success'; + $('.widget-data #message').html('

                      '+message+'

                      '); + $('.widget-data #message').addClass(class_name); + $('.widget-data #message').fadeIn('slow'); + jQuery('body,html').animate({ scrollTop: 0}, 800); + } + + + function redirect_to_widgets() { + window.location.replace(widgets_url); + } + +}); \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/widget_data.php b/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/widget_data.php new file mode 100644 index 0000000..3aca9e3 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/widget-settings-importexport/widget_data.php @@ -0,0 +1,460 @@ +. +******************************************************************* +*/ + +class Widget_Data { + + var $import_filename; + + function __construct() { + add_action('admin_menu', array($this, 'add_admin_menus')); + add_action('admin_enqueue_scripts', array($this, 'add_admin_scripts')); + add_action('load-tools_page_widget-settings-export', array($this, 'export_widget_settings')); + add_action('wp_ajax_widget_import_submit', array($this, 'widget_import_submit')); + add_filter('upload_mimes', array($this, 'json_upload_mimes')); + } + + function add_admin_scripts ($hook) { + if('tools_page_widget-settings-import' != $hook || 'tools_page_widget-settings-export' != $hook) { + wp_register_style('widget_data_css', get_template_directory_uri().'/lib/admin/inc/widget-settings-importexport/widget_data.css' , __FILE__); + wp_enqueue_style('widget_data_css'); + + wp_register_script( 'widget_data', get_template_directory_uri().'/lib/admin/inc/widget-settings-importexport/widget_data.js', __FILE__); + wp_enqueue_script('widget_data'); + $widgets_url = get_admin_url(false, 'widgets.php'); + wp_localize_script('widget_data', 'widgets_url', $widgets_url); + } + } + + function add_admin_menus() { + //import + $this->submenu_import = add_submenu_page('tools.php', __('Import Widgets', 'gp_lang'), __('Import Widgets', 'gp_lang'), 'administrator', 'widget-settings-import', array(&$this, 'import_settings_page')); + // export + $this->submenu_export = add_submenu_page('tools.php', __('Export Widgets', 'gp_lang'), __('Export Widgets', 'gp_lang'), 'administrator', 'widget-settings-export', array(&$this, 'export_settings_page')); + } + + function export_settings_page() { + $sidebar_widgets = $this->order_sidebar_widgets(wp_get_sidebars_widgets()); + ?> +
                      +
                      + +

                      +

                      + +

                      + +
                      +
                      +
                      + + +
                      +
                      + + +
                      + +
                      +
                      +
                      +
                      + +
                      +
                      +

                      +

                      + +

                      + + +
                      +
                      +
                      + + +
                      +
                      +
                      + get_widget_settings_json(); + $json_data = json_decode($json[0], true); + $json_file = $json[1]; + + if (!$json_data) + return; + ?> + + +
                      + +
                      +
                      +
                      + +
                      +

                      +
                      +
                      + +
                      +
                      + +
                      +
                      + +
                      +
                      + $widgets){ + if(!empty($widgets) && is_array($widgets)) { + foreach($widgets as $sidebar_widget){ + if(in_array($sidebar_widget, array_keys($posted_array))) { + $sidebar_export[$sidebar][] = $sidebar_widget; + } + } + } + } + $widgets = array(); + foreach($posted_array as $k=>$v) { + $widget = array(); + $widget['type'] = trim(substr($k, 0, strrpos($k, '-'))); + $widget['type-index'] = trim(substr($k, strrpos($k, '-') + 1)); + $widget['export_flag'] = ($v == 'on') ? true : false; + $widgets[] = $widget; + } + $widgets_array = array(); + foreach($widgets as $widget) { + $widget_val = get_option('widget_'.$widget['type']); + $multiwidget_val = $widget_val['_multiwidget']; + $widgets_array[$widget['type']][$widget['type-index']] = $widget_val[$widget['type-index']]; + if(isset($widgets_array[$widget['type']]['_multiwidget'])) { + unset($widgets_array[$widget['type']]['_multiwidget']); + } + $widgets_array[$widget['type']]['_multiwidget'] = $multiwidget_val; + } + unset($widgets_array['export']); + $export_array = array($sidebar_export, $widgets_array); + $json = json_encode($export_array); + return $json; + } + + function parse_import_data($import_array){ + $sidebars_data = $import_array[0]; + $widget_data = $import_array[1]; + $current_sidebars = get_option('sidebars_widgets'); + $new_widgets = array(); + + foreach($sidebars_data as $import_sidebar=>$import_widgets) : + + foreach ($import_widgets as $import_widget) : + //if the sidebar exists + if (isset($current_sidebars[$import_sidebar])) : + $title = trim(substr($import_widget, 0, strrpos($import_widget, '-'))); + $index = trim(substr($import_widget, strrpos($import_widget, '-') + 1)); + $current_widget_data = get_option('widget_'.$title); + $new_widget_name = $this->get_new_widget_name($title, $index); + $new_index = trim(substr($new_widget_name, strrpos($new_widget_name, '-') + 1)); + + if(is_array($new_widgets[$title])) { + while(array_key_exists($new_index, $new_widgets[$title])) { + $new_index++; + } + } + $current_sidebars[$import_sidebar][] = $title.'-'.$new_index; + if(array_key_exists($title, $new_widgets)){ + $new_widgets[$title][$new_index] = $widget_data[$title][$index]; + $multiwidget = $new_widgets[$title]['_multiwidget']; + unset($new_widgets[$title]['_multiwidget']); + $new_widgets[$title]['_multiwidget'] = $multiwidget; + } else { + $current_widget_data[$new_index] = $widget_data[$title][$index]; + $current_multiwidget = $current_widget_data['_multiwidget']; + $new_multiwidget = $widget_data[$title]['_multiwidget']; + $multiwidget = ($current_multiwidget != $new_multiwidget) ? $current_multiwidget : 1; + unset($current_widget_data['_multiwidget']); + $current_widget_data['_multiwidget'] = $multiwidget; + $new_widgets[$title] = $current_widget_data; + } + + //Going to use for future functionality + //if the sidebar does not exist, put the widget in the in-active +// else : +// +// if(isset($sidebars_data['wp_inactive_widgets'])){ //if wp_inactive_widgets is set on the import +// foreach($sidebars_data[$import_sidebar] as $widget){ // just append all that sidebars widgets to the array +// $sidebars_data['wp_inactive_widets'][] = $widget; +// } +// } else { // if the wp_inactive_widets is not defined +// $sidebars_data['wp_inactive_widgets'] = $sidebars_data[$import_sidebar]; // just set the old array as the wp_inactive_widgets array +// } +// unset($sidebars_data[$import_sidebar]); // remove old sidebar array in the import data + + endif; + endforeach; + endforeach; + + if(isset($new_widgets) && isset($current_sidebars)){ + update_option('sidebars_widgets', $current_sidebars); + foreach($new_widgets as $title=>$content){ + update_option('widget_'.$title, $content); + } + + return true; + } else { return false; } + } + + function export_widget_settings() { + if($_POST) { + header("Content-Description: File Transfer"); + header("Content-Disposition: attachment; filename=widget_data.json"); + header("Content-Type: application/octet-stream"); + echo $json = $this->parse_export_data($_POST); + exit(); + } + } + + function widget_import_submit() { + $widgets = $_POST['widgets']; + $json_data = file_get_contents($_POST['import_file']); + $json_data = json_decode($json_data, true); + $sidebar_data = $json_data[0]; + $widget_data = $json_data[1]; + $remove_array = array(); + $sidebar_array = array(); + foreach($sidebar_data as $title=>&$sidebar){ + $count = count($sidebar); + for($i=0;$i<$count;$i++){ + $widget = array(); + $widget['type'] = trim(substr($sidebar[$i], 0, strrpos($sidebar[$i], '-'))); + $widget['type-index'] = trim(substr($sidebar[$i], strrpos($sidebar[$i], '-') + 1)); + if(!isset($widgets[$widget['type']][$widget['type-index']])){ + unset($sidebar_data[$title][$i]); + } + } + $sidebar_data[$title] = array_values($sidebar_data[$title]); + } + + foreach($widgets as $widget_title=>$widget_value){ + foreach($widget_value as $k=>$v){ + $widgets[$widget_title][$k] = $widget_data[$widget_title][$k]; + } + } + + $sidebar_data = array_filter($sidebar_data); + $new_array = array($sidebar_data, $widgets); + if($this->parse_import_data($new_array)){ + echo "SUCCESS"; + } else { + echo "ERROR"; + } + + die(); // this is required to return a proper result + } + + function get_widget_settings_json() { + $widget_settings = $this->upload_widget_settings_file(); + $file_contents = file_get_contents($widget_settings['file']); + return array($file_contents, $widget_settings['file']); + } + + function upload_widget_settings_file() { + if (isset($_FILES['upload-file'])) { + $overrides = array('test_form' => false); + $upload = wp_handle_upload($_FILES['upload-file'],$overrides); + + return $upload; + } + + return false; + } + + function get_new_widget_name($widget_name, $widget_index){ + $current_sidebars = get_option('sidebars_widgets'); + $all_widget_array = array(); + foreach($current_sidebars as $sidebar=>$widgets){ + if(!empty($widgets) && is_array($widgets) && $sidebar != 'wp_inactive_widgets') { + foreach($widgets as $w){ + $all_widget_array[] = $w; + } + } + } + while(in_array($widget_name.'-'.$widget_index, $all_widget_array)){ + $widget_index++; + } + $new_widget_name = $widget_name.'-'.$widget_index; + return $new_widget_name; + } + + function get_option_from_array($option_name, $array_options) { + foreach ($array_options as $name=>$option) : + if ($name == $option_name) + return $option; + endforeach; + + return false; + } + + function get_sidebar_info($sidebar_id) { + global $wp_registered_sidebars; + + //since wp_inactive_widget is only used in widgets.php + if ($sidebar_id == 'wp_inactive_widgets') : + return array('name'=>'Inactive Widgets', 'id'=>'wp_inactive_widgets'); + endif; + + foreach ($wp_registered_sidebars as $sidebar) : + if (isset ($sidebar['id']) && $sidebar['id'] == $sidebar_id) : + return $sidebar; + endif; + endforeach; + + return false; + } + + function get_widget_info($widget){ + global $wp_registered_widgets; + if(isset($wp_registered_widgets[$widget])){ + return true; + } else { + return false; + } + } + + function order_sidebar_widgets($sidebar_widgets) { + $inactive_widgets = false; + + //seperate inactive widget sidebar from other sidebars so it can be moved to the end of the array, if it exists + if (isset($sidebar_widgets['wp_inactive_widgets'])) : + $inactive_widgets = $sidebar_widgets['wp_inactive_widgets']; + unset($sidebar_widgets['wp_inactive_widgets']); + $sidebar_widgets['wp_inactive_widgets'] = $inactive_widgets; + endif; + + return $sidebar_widgets; + } + + function json_upload_mimes ( $existing_mimes=array() ) { + $existing_mimes['json'] = 'application/json'; + return $existing_mimes; + } + +} + +add_action('init', create_function('', 'new Widget_Data();')); \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/images/index.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/images/index.php new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/_xtnls/index.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/_xtnls/index.php new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/columns.inc.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/columns.inc.php new file mode 100644 index 0000000..c9855ca --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/columns.inc.php @@ -0,0 +1,62 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit("Do not access this file directly."); +/**/ +if (!class_exists ("c_ws_plugin__wp_show_ids_columns")) + { + class c_ws_plugin__wp_show_ids_columns + { + /* + Configure all of the required Hooks/Filters for columns & css. + Attach to: add_action("admin_init"); + */ + public static function configure () + { + global $wp_post_types, $wp_taxonomies; /* Global references. */ + /**/ + do_action ("ws_plugin__wp_show_ids_before_configure", get_defined_vars ()); + /**/ + add_action ("admin_head", "c_ws_plugin__wp_show_ids_handlers::echo_css"); + /**/ + add_filter ("manage_users_columns", "c_ws_plugin__wp_show_ids_handlers::return_column", 100, 1); + add_filter ("manage_users_custom_column", "c_ws_plugin__wp_show_ids_handlers::return_value", 100, 3); + /**/ + add_filter ("manage_edit-comments_columns", "c_ws_plugin__wp_show_ids_handlers::return_column", 100, 1); + add_action ("manage_comments_custom_column", "c_ws_plugin__wp_show_ids_handlers::echo_value", 100, 2); + /**/ + add_filter ("manage_link-manager_columns", "c_ws_plugin__wp_show_ids_handlers::return_column", 100, 1); + add_action ("manage_link_custom_column", "c_ws_plugin__wp_show_ids_handlers::echo_value", 100, 2); + /**/ + add_filter ("manage_upload_columns", "c_ws_plugin__wp_show_ids_handlers::return_column", 100, 1); + add_action ("manage_media_custom_column", "c_ws_plugin__wp_show_ids_handlers::echo_value", 100, 2); + /**/ + if (is_array ($wp_taxonomies) && !empty ($wp_taxonomies)) /* All; including Custom Taxonomies. */ + foreach (array_keys ($wp_taxonomies) as $taxonomy) + { + add_filter ("manage_edit-" . $taxonomy . "_columns", "c_ws_plugin__wp_show_ids_handlers::return_column", 100, 1); + add_filter ("manage_" . $taxonomy . "_custom_column", "c_ws_plugin__wp_show_ids_handlers::return_value", 100, 3); + } + /**/ + if (is_array ($wp_post_types) && !empty ($wp_post_types)) /* All; including Custom Post Types. */ + foreach (array_keys ($wp_post_types) as $type) + { + add_filter ("manage_" . $type . "_posts_columns", "c_ws_plugin__wp_show_ids_handlers::return_column", 100, 1); + add_action ("manage_" . $type . "_posts_custom_column", "c_ws_plugin__wp_show_ids_handlers::echo_value", 100, 2); + } + /**/ + do_action ("ws_plugin__wp_show_ids_after_configure", get_defined_vars ()); + /**/ + return; /* Return for uniformity. */ + } + } + } +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/handlers.inc.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/handlers.inc.php new file mode 100644 index 0000000..70e3fa2 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/handlers.inc.php @@ -0,0 +1,52 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit("Do not access this file directly."); +/**/ +if (!class_exists ("c_ws_plugin__wp_show_ids_handlers")) + { + class c_ws_plugin__wp_show_ids_handlers + { + /* + Add the ID column. + */ + public static function return_column ($cols = FALSE) + { + return apply_filters ("ws_plugin__wp_show_ids_return_column", array_merge ($cols, array ("ws_plugin__wp_show_ids" => "ID")), get_defined_vars ()); + } + /* + Return ID value. + */ + public static function return_value ($value = FALSE, $column_name = FALSE, $id = FALSE) + { + return apply_filters ("ws_plugin__wp_show_ids_return_value", (($column_name === "ws_plugin__wp_show_ids") ? $id : $value), get_defined_vars ()); + } + /* + Echo ID value. + */ + public static function echo_value ($column_name = FALSE, $id = FALSE) + { + echo apply_filters ("ws_plugin__wp_show_ids_echo_value", (($column_name === "ws_plugin__wp_show_ids") ? $id : ""), get_defined_vars ()); + } + /* + Custom CSS for columns. + */ + public static function echo_css () /* Includes column headers too. */ + { + $css = ''; + /**/ + echo apply_filters ("ws_plugin__wp_show_ids_echo_css", $css, get_defined_vars ()); + } + } + } +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/index.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/index.php new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/installation.inc.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/installation.inc.php new file mode 100644 index 0000000..b907a03 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/installation.inc.php @@ -0,0 +1,42 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit ("Do not access this file directly."); +/**/ +if (!class_exists ("c_ws_plugin__wp_show_ids_installation")) + { + class c_ws_plugin__wp_show_ids_installation + { + /* + Handles activation routines. + */ + public static function activate () + { + do_action ("ws_plugin__wp_show_ids_before_activation", get_defined_vars ()); + /**/ + do_action ("ws_plugin__wp_show_ids_after_activation", get_defined_vars ()); + /**/ + return; /* Return for uniformity. */ + } + /* + Handles de-activation / cleanup routines. + */ + public static function deactivate () + { + do_action ("ws_plugin__wp_show_ids_before_deactivation", get_defined_vars ()); + /**/ + do_action ("ws_plugin__wp_show_ids_after_deactivation", get_defined_vars ()); + /**/ + return; /* Return for uniformity. */ + } + } + } +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/utilities.inc.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/utilities.inc.php new file mode 100644 index 0000000..bee43b1 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/classes/utilities.inc.php @@ -0,0 +1,30 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit ("Do not access this file directly."); +/**/ +if (!class_exists ("c_ws_plugin__wp_show_ids_utilities")) + { + class c_ws_plugin__wp_show_ids_utilities + { + /* + Function builds a version checksum for this installation. + */ + public static function ver_checksum () + { + $checksum = WS_PLUGIN__WP_SHOW_IDS_VERSION; /* Software version string. */ + $checksum .= "-" . abs (crc32 ($GLOBALS["WS_PLUGIN__"]["wp_show_ids"]["c"]["checksum"])); + /**/ + return $checksum; /* ( i.e. version-checksum ) */ + } + } + } +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/codes.inc.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/codes.inc.php new file mode 100644 index 0000000..3a9b8d0 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/codes.inc.php @@ -0,0 +1,17 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit("Do not access this file directly."); +/* +Add WordPress® Editor Shortcodes. +http://codex.wordpress.org/Shortcode_API +*/ +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/funcs.inc.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/funcs.inc.php new file mode 100644 index 0000000..a21eeda --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/funcs.inc.php @@ -0,0 +1,22 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit ("Do not access this file directly."); +/* +Include all of the functions that came with this plugin. +*/ +if (is_dir ($ws_plugin__wp_show_ids_temp_dir = dirname (__FILE__) . "/functions")) + foreach (scandir ($ws_plugin__wp_show_ids_temp_dir) as $ws_plugin__wp_show_ids_temp_s) + if (preg_match ("/\.php$/", $ws_plugin__wp_show_ids_temp_s) && $ws_plugin__wp_show_ids_temp_s !== "index.php") + include_once $ws_plugin__wp_show_ids_temp_dir . "/" . $ws_plugin__wp_show_ids_temp_s; +/**/ +unset ($ws_plugin__wp_show_ids_temp_dir, $ws_plugin__wp_show_ids_temp_s); +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/functions/class-autoloader.inc.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/functions/class-autoloader.inc.php new file mode 100644 index 0000000..00d1a3d --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/functions/class-autoloader.inc.php @@ -0,0 +1,57 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit ("Do not access this file directly."); +/* +The __autoload function for all WP Show IDs plugin classes. +This highly optimizes the plugin. Giving it a much smaller footprint. +See: http://www.php.net/manual/en/function.spl-autoload-register.php +*/ +if (!function_exists ("ws_plugin__wp_show_ids_classes")) /* Already exists? */ + { + function ws_plugin__wp_show_ids_classes ($class = FALSE) /* Build dynamic __autoload function. */ + { + static $c; /* Holds the classes directory location ( location is optimized with a static var ). */ + static $c_class_dirs; /* All possible dir & sub-directory locations ( with a static var ). */ + /**/ + if (strpos ($class, "c_ws_plugin__wp_show_ids_") === 0) /* Quick check. Is this a class for the plugin? */ + { + $c = (!isset ($c)) ? dirname (dirname (__FILE__)) . "/classes" : $c; /* Configures location of classes. */ + $c_class_dirs = (!isset ($c_class_dirs)) ? array_merge (array ($c), _ws_plugin__wp_show_ids_classes_scan_dirs_r ($c)) : $c_class_dirs; + /**/ + $class = str_replace ("_", "-", str_replace ("c_ws_plugin__wp_show_ids_", "", $class)); + /**/ + foreach ($c_class_dirs as $class_dir) /* Start looking for the class. */ + if ($class_dir === $c || strpos ($class, basename ($class_dir)) === 0) + if (file_exists ($class_dir . "/" . $class . ".inc.php")) + { + include_once $class_dir . "/" . $class . ".inc.php"; + /**/ + break; /* Now stop looking. */ + } + } + } + function _ws_plugin__wp_show_ids_classes_scan_dirs_r ($starting_dir = FALSE) + { + $dirs = array (); /* Initialize dirs array. */ + /**/ + foreach (func_get_args () as $starting_dir) + if (is_dir ($starting_dir)) /* Does this directory exist? */ + foreach (scandir ($starting_dir) as $dir) /* Scan this directory. */ + if ($dir !== "." && $dir !== ".." && is_dir ($dir = $starting_dir . "/" . $dir)) + $dirs = array_merge ($dirs, array ($dir), _ws_plugin__wp_show_ids_classes_scan_dirs_r ($dir)); + /**/ + return $dirs; /* Return array of all directories. */ + } + /**/ + spl_autoload_register ("ws_plugin__wp_show_ids_classes"); /* Register __autoload. */ + } +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/functions/deprecated.inc.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/functions/deprecated.inc.php new file mode 100644 index 0000000..4db4f5d --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/functions/deprecated.inc.php @@ -0,0 +1,26 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit ("Do not access this file directly."); +/* +As of v1.2+, these two functions are deprecated ( i.e. do NOT use ). +All older PriMoThemes called upon the activate/deactivate functions. +*/ +function ws_plugin__wp_show_ids_activate () /* Call with classes. */ + { + return c_ws_plugin__wp_show_ids_installation::activate (); + } +/**/ +function ws_plugin__wp_show_ids_deactivate () /* Call class. */ + { + return c_ws_plugin__wp_show_ids_installation::deactivate (); + } +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/functions/index.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/functions/index.php new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/hooks.inc.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/hooks.inc.php new file mode 100644 index 0000000..6fd707b --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/hooks.inc.php @@ -0,0 +1,22 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit ("Do not access this file directly."); +/* +Add the plugin Actions/Filters here. +*/ +add_action ("admin_init", "c_ws_plugin__wp_show_ids_columns::configure"); +/* +Register the activation | de-activation routines. +*/ +register_activation_hook ($GLOBALS["WS_PLUGIN__"]["wp_show_ids"]["l"], "c_ws_plugin__wp_show_ids_installation::activate"); +register_deactivation_hook ($GLOBALS["WS_PLUGIN__"]["wp_show_ids"]["l"], "c_ws_plugin__wp_show_ids_installation::deactivate"); +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/index.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/index.php new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/syscon.inc.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/syscon.inc.php new file mode 100644 index 0000000..ca399e3 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/includes/syscon.inc.php @@ -0,0 +1,23 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit ("Do not access this file directly."); +/* +Determine the full URL to the directory this plugin resides in. +*/ +$GLOBALS["WS_PLUGIN__"]["wp_show_ids"]["c"]["dir_url"] = (stripos (__FILE__, WP_CONTENT_DIR) !== 0) ? /* Have to assume plugins dir? */ +plugins_url ("/" . basename (dirname (dirname (__FILE__)))) : /* Otherwise, this gives it a chance to live anywhere in the content dir. */ +content_url (preg_replace ("/^(.*?)\/" . preg_quote (basename (WP_CONTENT_DIR), "/") . "/", "", str_replace (DIRECTORY_SEPARATOR, "/", dirname (dirname (__FILE__))))); +/* +Configure checksum time for the syscon.inc.php file. +*/ +$GLOBALS["WS_PLUGIN__"]["wp_show_ids"]["c"]["checksum"] = filemtime (__FILE__); /* File modification time. */ +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/index.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/index.php new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/licensing/gpl.txt b/wp-content/themes/score/lib/admin/inc/wp-show-ids/licensing/gpl.txt new file mode 100644 index 0000000..7e14f38 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/licensing/gpl.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/licensing/index.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/licensing/index.php new file mode 100644 index 0000000..e69de29 diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/licensing/license.txt b/wp-content/themes/score/lib/admin/inc/wp-show-ids/licensing/license.txt new file mode 100644 index 0000000..19e3535 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/licensing/license.txt @@ -0,0 +1,37 @@ +Copyright: © 2009 WebSharks, Inc. ( coded in the USA ) + + +Released under the terms of the GNU General Public License. + - attached as [gpl.txt]. + +Credits / Additional Acknowledgments: + +* Software designed for WordPress®. + - GPL License + - WordPress® + +* JavaScript extensions require jQuery. + - GPL License + - jQuery + +* Readme parsing routines, powered (in part) by PHP Markdown. + - BSD / GPL Compatible License + - PHP Markdown + +* Administration panel (tools icon) was provided by Everaldo.com. + - LGPL License + - Everaldo + +* Administration panel (videos icon) was provided by David Vignoni. + - LGPL License + - David Vignoni + +* PayPal® and its associated buttons & services have been integrated into this software via external hyperlinks. + The files/services provided by PayPal® are not distributed with this software. They have their own terms & conditions. + - PayPal®, a 3rd party service, is powered by eBay, Inc. + - PayPal® is a trademark of eBay, Inc. + +* The W3C® and its associated validator & services have been integrated into this software via external hyperlinks. + The files/services provided by the W3C® are not distributed with this software. They have their own terms & conditions. + - The W3C®, a 3rd party service, is powered by the World Wide Web Consortium + - W3C® is a trademark of the World Wide Web Consortium. \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/readme.txt b/wp-content/themes/score/lib/admin/inc/wp-show-ids/readme.txt new file mode 100644 index 0000000..7d393f8 --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/readme.txt @@ -0,0 +1,104 @@ +=== WP Show IDs ( simple, yet elegant ) === + +Version: 110709 +Stable tag: 110709 +Framework: WS-LP-110523 + +WordPress Compatible: yes +WP Multisite Compatible: yes +Multisite Blog Farm Compatible: yes + +Tested up to: 3.2 +Requires at least: 3.1 +Requires: WordPress® 3.1+, PHP 5.2.3+ + +Copyright: © 2009 WebSharks, Inc. +License: GNU General Public License +Contributors: WebSharks, PriMoThemes +Author URI: http://www.primothemes.com/ +Author: PriMoThemes.com / WebSharks, Inc. +Donate link: http://www.primothemes.com/donate/ + +Plugin Name: WP Show IDs +Forum URI: http://www.primothemes.com/forums/viewforum.php?f=35 +Privacy URI: http://www.primothemes.com/about/privacy-policy/ +Plugin URI: http://www.primothemes.com/post/product/wp-show-ids-plugin/ +Description: Simple, yet elegant. Shows IDs for Posts, Pages, Media, Links, Categories, Tags, and Users in the admin tables for easy access. Very lightweight. Also supports Custom Post Types / Taxonomies. +Tags: admin, administration, dashboard, id, ids, wp ids, wp-ids, show ids, wordpress ids, simply, simply show ids, reveal, reveal ids, link, links, media, page, pages, post, posts, category, categories, tag, tags, user, users, options panel included, websharks framework, w3c validated code, includes extensive documentation, highly extensible + +Simple, yet elegant. Shows IDs for Posts, Pages, Media, Links, Categories, Tags, and Users in the admin tables for easy access. Very lightweight. Also supports Custom Post Types / Taxonomies. + +== Installation == + +1. Upload the `/wp-show-ids` folder to your `/wp-content/plugins/` directory. +2. Activate the plugin through the `Plugins` menu in WordPress®. + +***Special instructions for Multisite Blog Farms:** If you're installing this plugin on WordPress® with Multisite/Networking enabled, and you run a Blog Farm ( i.e. you give away free blogs to the public ); please `define("MULTISITE_FARM", true);` in your /wp-config.php file. When this plugin is running on a Multisite Blog Farm, it will mutate itself ( including its menus ) for safe compatiblity with Blog Farms. You don't need to do this unless you run a Blog Farm. If you're running the standard version of WordPress®, or you run WordPress® Multisite to host your own sites, you can ( and should ) skip this step.* + +== Description == + +Simple, yet elegant. Shows IDs for Posts, Pages, Media, Links, Categories, Tags, and Users in the admin tables for easy access. Very lightweight. Also supports Custom Post Types / Taxonomies. + +== Screenshots == + +1. WP Show IDs Screenshot #1 + +== Frequently Asked Questions == + += Is there a support forum for this plugin? = +Yes, the support forum is located [here](http://www.primothemes.com/forums/viewforum.php?f=35). + += Does this work for Posts, Pages, Tags, Categories, Users, Media, Links.. everything? = +Yes, the WP Show IDs plugin covers all the bases. It displays the ID for all types of WordPress® content. + += Does this plugin work with Custom Post Types? = +Yes, this plugin supports WordPress® 3.0+; even Custom Post Types & Custom Taxonomies. + +== Changelog == + += 110709 = +* Routine maintenance. No signifigant changes. + += 110708 = +* Routine maintenance. No signifigant changes. +* Compatibility with WordPress v3.2. + += 110523 = +* **Versioning.** Starting with this release, versions will follow this format: `yymmdd`. The version for this release is: `110523`. +* Routine maintenance. No signifigant changes. + += 1.2.2 = +* Routine maintenance. No signifigant changes. + += 1.2.1 = +* Routine maintenance. No signifigant changes. + += 1.2 = +* Framework updated; general cleanup. +* Updated with static class methods. This plugin now uses PHP's SPL autoload functionality to further optimize all of its routines. +* Optimizations. Further internal optimizations applied through configuration checksums. + += 1.0.6 = +* Framework updated; general cleanup. +* Updated for compatibility with WordPress® 3.1. + += 1.0.5 = +* Framework updated. General cleanup. + += 1.0.4 = +* Framework updated. General cleanup. + += 1.0.3 = +* Tested against WordPress® 3.0.1. Everything looks good. +* Centered ID columns. Width reduced to 45px. + += 1.0.2 = +* Hooks/Filters updated; general cleanup. +* Updated minimum requirements to WordPress® 3.0. + += 1.0.1 = +* Streamlined a few things. +* General cleanup. + += 1.0 = +* Initial release. \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/screenshot-1.png b/wp-content/themes/score/lib/admin/inc/wp-show-ids/screenshot-1.png new file mode 100644 index 0000000..ce6dff1 Binary files /dev/null and b/wp-content/themes/score/lib/admin/inc/wp-show-ids/screenshot-1.png differ diff --git a/wp-content/themes/score/lib/admin/inc/wp-show-ids/wp-show-ids.php b/wp-content/themes/score/lib/admin/inc/wp-show-ids/wp-show-ids.php new file mode 100644 index 0000000..9c63ffa --- /dev/null +++ b/wp-content/themes/score/lib/admin/inc/wp-show-ids/wp-show-ids.php @@ -0,0 +1,92 @@ + + +Released under the terms of the GNU General Public License. +You should have received a copy of the GNU General Public License, +along with this software. In the main directory, see: /licensing/ +If not, see: . +*/ +/* +Version: 110709 +Stable tag: 110709 +Framework: WS-LP-110523 + +WordPress Compatible: yes +WP Multisite Compatible: yes +Multisite Blog Farm Compatible: yes + +Tested up to: 3.2 +Requires at least: 3.1 +Requires: WordPress 3.1+, PHP 5.2.3+ + +Copyright: 2009 WebSharks, Inc. +License: GNU General Public License +Contributors: WebSharks, PriMoThemes +Author URI: http://www.primothemes.com/ +Author: PriMoThemes.com / WebSharks, Inc. +Donate link: http://www.primothemes.com/donate/ + +Plugin Name: WP Show IDs +Forum URI: http://www.primothemes.com/forums/viewforum.php?f=35 +Privacy URI: http://www.primothemes.com/about/privacy-policy/ +Plugin URI: http://www.primothemes.com/post/product/wp-show-ids-plugin/ +Description: Simple, yet elegant. Shows IDs for Posts, Pages, Media, Links, Categories, Tags, and Users in the admin tables for easy access. Very lightweight. Also supports Custom Post Types / Taxonomies. +Tags: admin, administration, dashboard, id, ids, wp ids, wp-ids, show ids, wordpress ids, simply, simply show ids, reveal, reveal ids, link, links, media, page, pages, post, posts, category, categories, tag, tags, user, users, options panel included, websharks framework, w3c validated code, includes extensive documentation, highly extensible +*/ +if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"])) + exit("Do not access this file directly."); +/* +Define versions. +*/ +@define ("WS_PLUGIN__WP_SHOW_IDS_VERSION", "110709"); +@define ("WS_PLUGIN__WP_SHOW_IDS_MIN_PHP_VERSION", "5.2.3"); +@define ("WS_PLUGIN__WP_SHOW_IDS_MIN_WP_VERSION", "3.1"); +/* +Compatibility checks. +*/ +if (version_compare (PHP_VERSION, WS_PLUGIN__WP_SHOW_IDS_MIN_PHP_VERSION, ">=") && version_compare (get_bloginfo ("version"), WS_PLUGIN__WP_SHOW_IDS_MIN_WP_VERSION, ">=") && !isset ($GLOBALS["WS_PLUGIN__"]["wp_show_ids"])) + { + $GLOBALS["WS_PLUGIN__"]["wp_show_ids"]["l"] = __FILE__; + /* + Hook before loaded. + */ + do_action("ws_plugin__wp_show_ids_before_loaded"); + /* + System configuraton. + */ + include_once dirname (__FILE__) . "/includes/syscon.inc.php"; + /* + Hooks and filters. + */ + include_once dirname (__FILE__) . "/includes/hooks.inc.php"; + /* + Hook after system config & hooks are loaded. + */ + do_action("ws_plugin__wp_show_ids_config_hooks_loaded"); + /* + Function includes. + */ + include_once dirname (__FILE__) . "/includes/funcs.inc.php"; + /* + Include shortcodes. + */ + include_once dirname (__FILE__) . "/includes/codes.inc.php"; + /* + Hook after loaded. + */ + do_action("ws_plugin__wp_show_ids_after_loaded"); + } +else if (is_admin ()) /* Admin compatibility errors. */ + { + if (!version_compare (PHP_VERSION, WS_PLUGIN__WP_SHOW_IDS_MIN_PHP_VERSION, ">=")) + { + add_action ("all_admin_notices", create_function ('', 'echo \'

                      You need PHP v\' . WS_PLUGIN__WP_SHOW_IDS_MIN_PHP_VERSION . \'+ to use the WP Show IDs plugin.

                      \';')); + } + else if (!version_compare (get_bloginfo ("version"), WS_PLUGIN__WP_SHOW_IDS_MIN_WP_VERSION, ">=")) + { + add_action ("all_admin_notices", create_function ('', 'echo \'

                      You need WordPress v\' . WS_PLUGIN__WP_SHOW_IDS_MIN_WP_VERSION . \'+ to use the WP Show IDs plugin.

                      \';')); + } + } +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/scripts/custom.js b/wp-content/themes/score/lib/admin/scripts/custom.js new file mode 100644 index 0000000..ec17518 --- /dev/null +++ b/wp-content/themes/score/lib/admin/scripts/custom.js @@ -0,0 +1,33 @@ +/*************************** Upload Button ***************************/ + +jQuery(document).ready(function($) { + + jQuery(".upload-image-button").click(function() { + formfield = jQuery(this).prev(".upload") + + window.send_to_editor = function(html) { + imgurl = jQuery('img',html).attr('src'); + formfield.val(imgurl); + tb_remove(); + } + + tb_show('Upload', 'media-upload.php?TB_iframe=true'); + return false; + }); + + var urlregexp = new RegExp("'(.*)'"); + + jQuery(".upload-video-button").click(function() { + formfield = jQuery(this).prev(".upload") + + window.send_to_editor = function(html) { + var videourl = html.match(urlregexp)[1]; + formfield.val(videourl); + tb_remove(); + } + + tb_show('Upload', 'media-upload.php?TB_iframe=true'); + return false; + }); + +}); \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/scripts/jquery.color.picker.js b/wp-content/themes/score/lib/admin/scripts/jquery.color.picker.js new file mode 100644 index 0000000..634884b --- /dev/null +++ b/wp-content/themes/score/lib/admin/scripts/jquery.color.picker.js @@ -0,0 +1,455 @@ +/** + * + * Color picker + * Author: Stefan Petre www.eyecon.ro + * + * Dependencies: jQuery + * + */ +(function ($) { + var ColorPicker = function () { + var + ids = {}, + inAction, + charMin = 65, + visible, + tpl = '
                      ', + defaults = { + eventName: 'click', + onShow: function () {}, + onBeforeShow: function(){}, + onHide: function () {}, + onChange: function () {}, + onSubmit: function () {}, + color: 'ff0000', + livePreview: true, + flat: false + }, + fillRGBFields = function (hsb, cal) { + var rgb = HSBToRGB(hsb); + $(cal).data('colorpicker').fields + .eq(1).val(rgb.r).end() + .eq(2).val(rgb.g).end() + .eq(3).val(rgb.b).end(); + }, + fillHSBFields = function (hsb, cal) { + $(cal).data('colorpicker').fields + .eq(4).val(hsb.h).end() + .eq(5).val(hsb.s).end() + .eq(6).val(hsb.b).end(); + }, + fillHexFields = function (hsb, cal) { + $(cal).data('colorpicker').fields + .eq(0).val(HSBToHex(hsb)).end(); + }, + setSelector = function (hsb, cal) { + $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100})); + $(cal).data('colorpicker').selectorIndic.css({ + left: parseInt(150 * hsb.s/100, 10), + top: parseInt(150 * (100-hsb.b)/100, 10) + }); + }, + setHue = function (hsb, cal) { + $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10)); + }, + setCurrentColor = function (hsb, cal) { + $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb)); + }, + setNewColor = function (hsb, cal) { + $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb)); + }, + keyDown = function (ev) { + var pressedKey = ev.charCode || ev.keyCode || -1; + if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) { + return false; + } + var cal = $(this).parent().parent(); + if (cal.data('colorpicker').livePreview === true) { + change.apply(this); + } + }, + change = function (ev) { + var cal = $(this).parent().parent(), col; + if (this.parentNode.className.indexOf('_hex') > 0) { + cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value)); + } else if (this.parentNode.className.indexOf('_hsb') > 0) { + cal.data('colorpicker').color = col = fixHSB({ + h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10), + s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10), + b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10) + }); + } else { + cal.data('colorpicker').color = col = RGBToHSB(fixRGB({ + r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10), + g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10), + b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10) + })); + } + if (ev) { + fillRGBFields(col, cal.get(0)); + fillHexFields(col, cal.get(0)); + fillHSBFields(col, cal.get(0)); + } + setSelector(col, cal.get(0)); + setHue(col, cal.get(0)); + setNewColor(col, cal.get(0)); + cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]); + }, + blur = function (ev) { + var cal = $(this).parent().parent(); + cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus') + }, + focus = function () { + charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65; + $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus'); + $(this).parent().addClass('colorpicker_focus'); + }, + downIncrement = function (ev) { + var field = $(this).parent().find('input').focus(); + var current = { + el: $(this).parent().addClass('colorpicker_slider'), + max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255), + y: ev.pageY, + field: field, + val: parseInt(field.val(), 10), + preview: $(this).parent().parent().data('colorpicker').livePreview + }; + $(document).bind('mouseup', current, upIncrement); + $(document).bind('mousemove', current, moveIncrement); + }, + moveIncrement = function (ev) { + ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10)))); + if (ev.data.preview) { + change.apply(ev.data.field.get(0), [true]); + } + return false; + }, + upIncrement = function (ev) { + change.apply(ev.data.field.get(0), [true]); + ev.data.el.removeClass('colorpicker_slider').find('input').focus(); + $(document).unbind('mouseup', upIncrement); + $(document).unbind('mousemove', moveIncrement); + return false; + }, + downHue = function (ev) { + var current = { + cal: $(this).parent(), + y: $(this).offset().top + }; + current.preview = current.cal.data('colorpicker').livePreview; + $(document).bind('mouseup', current, upHue); + $(document).bind('mousemove', current, moveHue); + }, + moveHue = function (ev) { + change.apply( + ev.data.cal.data('colorpicker') + .fields + .eq(4) + .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10)) + .get(0), + [ev.data.preview] + ); + return false; + }, + upHue = function (ev) { + fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + $(document).unbind('mouseup', upHue); + $(document).unbind('mousemove', moveHue); + return false; + }, + downSelector = function (ev) { + var current = { + cal: $(this).parent(), + pos: $(this).offset() + }; + current.preview = current.cal.data('colorpicker').livePreview; + $(document).bind('mouseup', current, upSelector); + $(document).bind('mousemove', current, moveSelector); + }, + moveSelector = function (ev) { + change.apply( + ev.data.cal.data('colorpicker') + .fields + .eq(6) + .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10)) + .end() + .eq(5) + .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10)) + .get(0), + [ev.data.preview] + ); + return false; + }, + upSelector = function (ev) { + fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + $(document).unbind('mouseup', upSelector); + $(document).unbind('mousemove', moveSelector); + return false; + }, + enterSubmit = function (ev) { + $(this).addClass('colorpicker_focus'); + }, + leaveSubmit = function (ev) { + $(this).removeClass('colorpicker_focus'); + }, + clickSubmit = function (ev) { + var cal = $(this).parent(); + var col = cal.data('colorpicker').color; + cal.data('colorpicker').origColor = col; + setCurrentColor(col, cal.get(0)); + cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col)); + cal.hide(); + }, + show = function (ev) { + var cal = $('#' + $(this).data('colorpickerId')); + cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]); + var pos = $(this).offset(); + var viewPort = getViewport(); + var top = pos.top + this.offsetHeight; + var left = pos.left; + if (top + 176 > viewPort.t + viewPort.h) { + top -= this.offsetHeight + 176; + } else { + top += 5; + } + if (left + 356 > viewPort.l + viewPort.w) { + left -= 356; + } + cal.css({left: left + 'px', top: top + 'px'}); + if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) { + cal.show(); + } + $(document).bind('mousedown', {cal: cal}, hide); + return false; + }, + hide = function (ev) { + if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) { + if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) { + ev.data.cal.hide(); + } + $(document).unbind('mousedown', hide); + } + }, + isChildOf = function(parentEl, el, container) { + if (parentEl == el) { + return true; + } + if (parentEl.contains) { + return parentEl.contains(el); + } + if ( parentEl.compareDocumentPosition ) { + return !!(parentEl.compareDocumentPosition(el) & 16); + } + var prEl = el.parentNode; + while(prEl && prEl != container) { + if (prEl == parentEl) + return true; + prEl = prEl.parentNode; + } + return false; + }, + getViewport = function () { + var m = document.compatMode == 'CSS1Compat'; + return { + l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft), + t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop), + w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth), + h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight) + }; + }, + fixHSB = function (hsb) { + return { + h: Math.min(360, Math.max(0, hsb.h)), + s: Math.min(100, Math.max(0, hsb.s)), + b: Math.min(100, Math.max(0, hsb.b)) + }; + }, + fixRGB = function (rgb) { + return { + r: Math.min(255, Math.max(0, rgb.r)), + g: Math.min(255, Math.max(0, rgb.g)), + b: Math.min(255, Math.max(0, rgb.b)) + }; + }, + fixHex = function (hex) { + var len = 6 - hex.length; + if (len > 0) { + var o = []; + for (var i=0; i -1) ? hex.substring(1) : hex), 16); + return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)}; + }, + HexToHSB = function (hex) { + return RGBToHSB(HexToRGB(hex)); + }, + RGBToHSB = function (rgb) { + var hsb = {}; + hsb.b = Math.max(Math.max(rgb.r,rgb.g),rgb.b); + hsb.s = (hsb.b <= 0) ? 0 : Math.round(100*(hsb.b - Math.min(Math.min(rgb.r,rgb.g),rgb.b))/hsb.b); + hsb.b = Math.round((hsb.b /255)*100); + if((rgb.r==rgb.g) && (rgb.g==rgb.b)) hsb.h = 0; + else if(rgb.r>=rgb.g && rgb.g>=rgb.b) hsb.h = 60*(rgb.g-rgb.b)/(rgb.r-rgb.b); + else if(rgb.g>=rgb.r && rgb.r>=rgb.b) hsb.h = 60 + 60*(rgb.g-rgb.r)/(rgb.g-rgb.b); + else if(rgb.g>=rgb.b && rgb.b>=rgb.r) hsb.h = 120 + 60*(rgb.b-rgb.r)/(rgb.g-rgb.r); + else if(rgb.b>=rgb.g && rgb.g>=rgb.r) hsb.h = 180 + 60*(rgb.b-rgb.g)/(rgb.b-rgb.r); + else if(rgb.b>=rgb.r && rgb.r>=rgb.g) hsb.h = 240 + 60*(rgb.r-rgb.g)/(rgb.b-rgb.g); + else if(rgb.r>=rgb.b && rgb.b>=rgb.g) hsb.h = 300 + 60*(rgb.r-rgb.b)/(rgb.r-rgb.g); + else hsb.h = 0; + hsb.h = Math.round(hsb.h); + return hsb; + }, + HSBToRGB = function (hsb) { + var rgb = {}; + var h = Math.round(hsb.h); + var s = Math.round(hsb.s*255/100); + var v = Math.round(hsb.b*255/100); + if(s == 0) { + rgb.r = rgb.g = rgb.b = v; + } else { + var t1 = v; + var t2 = (255-s)*v/255; + var t3 = (t1-t2)*(h%60)/60; + if(h==360) h = 0; + if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3} + else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3} + else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3} + else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3} + else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3} + else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3} + else {rgb.r=0; rgb.g=0; rgb.b=0} + } + return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)}; + }, + RGBToHex = function (rgb) { + var hex = [ + rgb.r.toString(16), + rgb.g.toString(16), + rgb.b.toString(16) + ]; + $.each(hex, function (nr, val) { + if (val.length == 1) { + hex[nr] = '0' + val; + } + }); + return hex.join(''); + }, + HSBToHex = function (hsb) { + return RGBToHex(HSBToRGB(hsb)); + }; + return { + init: function (options) { + options = $.extend({}, defaults, options||{}); + if (typeof options.color == 'string') { + options.color = HexToHSB(options.color); + } else if (options.color.r != undefined && options.color.g != undefined && options.color.b != undefined) { + options.color = RGBToHSB(options.color); + } else if (options.color.h != undefined && options.color.s != undefined && options.color.b != undefined) { + options.color = fixHSB(options.color); + } else { + return this; + } + options.origColor = options.color; + return this.each(function () { + if (!$(this).data('colorpickerId')) { + var id = 'collorpicker_' + parseInt(Math.random() * 1000); + $(this).data('colorpickerId', id); + var cal = $(tpl).attr('id', id); + if (options.flat) { + cal.appendTo(this).show(); + } else { + cal.appendTo(document.body); + } + options.fields = cal + .find('input') + .bind('keydown', keyDown) + .bind('change', change) + .bind('blur', blur) + .bind('focus', focus); + cal.find('span').bind('mousedown', downIncrement); + options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector); + options.selectorIndic = options.selector.find('div div'); + options.hue = cal.find('div.colorpicker_hue div'); + cal.find('div.colorpicker_hue').bind('mousedown', downHue); + options.newColor = cal.find('div.colorpicker_new_color'); + options.currentColor = cal.find('div.colorpicker_current_color'); + cal.data('colorpicker', options); + cal.find('div.colorpicker_submit') + .bind('mouseenter', enterSubmit) + .bind('mouseleave', leaveSubmit) + .bind('click', clickSubmit); + fillRGBFields(options.color, cal.get(0)); + fillHSBFields(options.color, cal.get(0)); + fillHexFields(options.color, cal.get(0)); + setHue(options.color, cal.get(0)); + setSelector(options.color, cal.get(0)); + setCurrentColor(options.color, cal.get(0)); + setNewColor(options.color, cal.get(0)); + if (options.flat) { + cal.css({ + position: 'relative', + display: 'block' + }); + } else { + $(this).bind(options.eventName, show); + } + } + }); + }, + showPicker: function() { + return this.each( function () { + if ($(this).data('colorpickerId')) { + show.apply(this); + } + }); + }, + hidePicker: function() { + return this.each( function () { + if ($(this).data('colorpickerId')) { + $('#' + $(this).data('colorpickerId')).hide(); + } + }); + }, + setColor: function(col) { + if (typeof col == 'string') { + col = HexToHSB(col); + } else if (col.r != undefined && col.g != undefined && col.b != undefined) { + col = RGBToHSB(col); + } else if (col.h != undefined && col.s != undefined && col.b != undefined) { + col = fixHSB(col); + } else { + return this; + } + return this.each(function(){ + if ($(this).data('colorpickerId')) { + var cal = $('#' + $(this).data('colorpickerId')); + cal.data('colorpicker').color = col; + cal.data('colorpicker').origColor = col; + fillRGBFields(col, cal.get(0)); + fillHSBFields(col, cal.get(0)); + fillHexFields(col, cal.get(0)); + setHue(col, cal.get(0)); + setSelector(col, cal.get(0)); + setCurrentColor(col, cal.get(0)); + setNewColor(col, cal.get(0)); + } + }); + } + }; + }(); + $.fn.extend({ + ColorPicker: ColorPicker.init, + ColorPickerHide: ColorPicker.hide, + ColorPickerShow: ColorPicker.show, + ColorPickerSetColor: ColorPicker.setColor + }); +})(jQuery) \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/scripts/jquery.tabs.js b/wp-content/themes/score/lib/admin/scripts/jquery.tabs.js new file mode 100644 index 0000000..54507df --- /dev/null +++ b/wp-content/themes/score/lib/admin/scripts/jquery.tabs.js @@ -0,0 +1,45 @@ +//***************************** Theme Option Tabs *****************************// + +jQuery(document).ready(function(){ + // We can use this object to reference the panels container + var panelContainer = jQuery('#panels'); + // Create a DIV for the tabs and insert it before the panel container + jQuery('
                      ').insertBefore(panelContainer); + + // Find panel names and create nav + // -- Loop through each panel + panelContainer.find('.panel').each(function(n){ + // For each panel, create a tab + jQuery('.tabs').append('' + jQuery(this).attr('id') + ''); + }); + + // Determine which tab should show first based on the URL hash + var panelLocation = location.hash.slice(1); + if(panelLocation){ + var panelNum = panelLocation; + }else{ + var panelNum = '1'; + } + // Hide all panels + panelContainer.find('.panel').hide(); + // Display the initial panel + panelContainer.find('.panel:nth-child(' + panelNum + ')').fadeIn('slow'); + // Change the class of the current tab + jQuery('.tabs').find('a.tab:nth-child(' + panelNum + ')').removeClass().addClass('tab-active'); + + // What happens when a tab is clicked + // -- Loop through each tab + jQuery('.tabs').find('a').each(function(n){ + // For each tab, add a 'click' action + jQuery(this).click(function(){ + // Hide all panels + panelContainer.find('.panel').hide(); + // Find the required panel and display it + panelContainer.find('.panel:nth-child(' + (n+1) + ')').fadeIn('slow'); + // Give all tabs the 'tab' class + jQuery(this).parent().find('a').removeClass().addClass('tab'); + // Give the clicked tab the 'tab-active' class + jQuery(this).removeClass().addClass('tab-active'); + }); + }); +}); \ No newline at end of file diff --git a/wp-content/themes/score/lib/admin/scripts/sort-slides.js b/wp-content/themes/score/lib/admin/scripts/sort-slides.js new file mode 100644 index 0000000..69386fa --- /dev/null +++ b/wp-content/themes/score/lib/admin/scripts/sort-slides.js @@ -0,0 +1,31 @@ +jQuery(document).ready(function($) { + var slideList = $('#sort-list'); + + slideList.sortable({ + update: function(event, ui) { + $('#loading-animation').show(); // Show the animate loading gif while waiting + + opts = { + url: ajaxurl, // ajaxurl is defined by WordPress and points to /wp-admin/admin-ajax.php + type: 'POST', + async: true, + cache: false, + dataType: 'json', + data:{ + action: 'slide_sort', // Tell WordPress how to handle this ajax request + order: slideList.sortable('toArray').toString() // Passes ID's of list items in 1,3,2 format + }, + success: function(response) { + $('#loading-animation').hide(); // Hide the loading animation + return; + }, + error: function(xhr,textStatus,e) { // This can be expanded to provide more information + alert('There was an error saving the updates'); + $('#loading-animation').hide(); // Hide the loading animation + return; + } + }; + $.ajax(opts); + } + }); +}); \ No newline at end of file diff --git a/wp-content/themes/score/lib/buddypress/bp.css b/wp-content/themes/score/lib/buddypress/bp.css new file mode 100644 index 0000000..0affbe6 --- /dev/null +++ b/wp-content/themes/score/lib/buddypress/bp.css @@ -0,0 +1,1555 @@ +/*************************** WP Admin Bar ***************************/ + +#wp-admin-bar #admin-bar-logo { +padding-top: 7px; +} + +/*************************** Navigation ***************************/ + +/* Primary Item Tabs */ +.bp-wrapper div.item-list-tabs { +margin: 15px 0 15px 0; +padding: 0; +overflow: hidden; +clear: both; +position: relative; +} +.bp-wrapper div.item-list-tabs ul { +list-style: none; +margin: 0; +padding: 0; +line-height: 200%; +} +.bp-wrapper div.item-list-tabs ul li { +float: left; +padding: 0; +margin: 0; +height: 35px; +position: relative; +border-width: 0 0 1px 0; +border-style: solid; +border-color: #d8d8d8; +} +.rtl.bp-wrapper div.item-list-tabs ul li { +float: right; +} +.bp-wrapper div.item-list-tabs ul li.selected { +border-width: 1px 1px 0 1px; +} +.bp-wrapper div.item-list-tabs ul li a, +.bp-wrapper div.item-list-tabs ul li span { +font-weight: bold; +padding: 10px; +line-height: 15px; +display: block; +margin: 0; +color: #999; +} +.bp-wrapper div.item-list-tabs ul li a:hover, +.bp-wrapper div.item-list-tabs ul li.selected a, +.bp-wrapper div.item-list-tabs ul li.current a { +color: #333; +} +.bp-wrapper div.item-list-tabs ul li a span { +display: inline; +font-size: 10px; +-webkit-border-radius: 3px; +-moz-border-radius: 3px; +border-radius: 3px; +margin-left: 3px; +padding: 3px 5px; +background: #e5e5e5; +color: #999; +} +.bp-wrapper div.item-list-tabs ul li a span:hover, +.bp-wrapper div.item-list-tabs ul li a:hover span { +color: #fff; +} +.skin-blue.bp-wrapper div.item-list-tabs ul li a:hover span { +background: #273138; +} +.skin-black.bp-wrapper div.item-list-tabs ul li a:hover span { +background: #393939; +} +.bp-wrapper div.item-list-tabs ul li.last { +float: right; +} +.rtl.bp-wrapper div.item-list-tabs ul li.last { +float: left; +} +.bp-wrapper ul li.loading a { +background-image: url(../../lib/images/loader.gif); +background-position: 94% 50%; +background-repeat: no-repeat; +padding-right: 32px !important; +} + +/* Sub Navigation Tabs */ +.bp-wrapper div.item-list-tabs#subnav { +margin: 15px 0 30px 0; +padding: 0; +overflow: hidden; +clear: both; +position: relative; +overflow: none; +} +.bp-wrapper div.item-list-tabs#subnav ul li { +margin: 0; +padding: 0; +border: 0; +} +.bp-wrapper div.item-list-tabs#subnav ul li[id*="select"] { +border: 0; +} +.bp-wrapper div.item-list-tabs#subnav ul li.li-first { +border-width: 0; +} +.bp-wrapper div.item-list-tabs#subnav ul li.li-last label { +margin-left: 10px; +} +.rtl.bp-wrapper div.item-list-tabs#subnav ul li.li-last label { +margin-left: 0; +margin-right: 10px; +} +.bp-wrapper div.item-list-tabs#subnav ul li a, +.bp-wrapper div.messages-options-nav a { +padding: 0 15px 0 0; +font-size: 11px; +} +.rtl.bp-wrapper div.item-list-tabs#subnav ul li a, +.rtl.bp-wrapper div.messages-options-nav a { +padding: 0 0 0 15px; +} +.bp-wrapper div.item-list-tabs#subnav ul li select { +margin: 0; +} +.bp-wrapper div#subnav.item-list-tabs ul li.feed { +border: 0; +} +.bp-wrapper div#subnav.item-list-tabs ul li.feed a { +display: block; +text-indent: -9999px; +background: url(../../lib/images/sprite.png) no-repeat -250px -57px; +width: 16px; +height: 16px; +padding: 0; +} + + +/*************************** Item Header ***************************/ + +.bp-wrapper #item-header { +padding: 5px 0 15px 5px; +overflow: hidden; +} +.rtl.bp-wrapper #item-header { +padding-left: 0; +padding-right: 5px; +} +.bp-wrapper #item-header div#item-actions { +float: right; +width: 20%; +} +.rtl.bp-wrapper #item-header div#item-actions { +float: left; +} +#item-header-avatar .avatar { +width: 150px; +height: 150px; +} +.bp-wrapper #item-header img.avatar { +float: left; +margin: 0 15px 20px 0; +} +.rtl.bp-wrapper #item-header img.avatar { +float: right; +margin-left: 15px; +margin-right: 0; +} +.bp-wrapper div#item-header h2 { +font-size: 24px; +line-height: 24px; +color: #000; +margin-bottom: 10px; +} +.bp-wrapper div#item-header h2 a { +color: #000; +} +.bp-wrapper div#item-header div#item-actions h3 { +font-size: 12px; +font-family: Helvetica, Arial, sans-serif; +font-weight: bold; +margin-bottom: 10px; +} +.bp-wrapper #item-header #item-header-content { +margin-left: 170px; +} +.rtl.bp-wrapper #item-header #item-header-content { +margin-left: 0; +margin-right: 170px; +} +.bp-wrapper #item-header ul img.avatar, +.bp-wrapper #item-header ul.avatars img.avatar { +height: 30px; +width: 30px; +margin: -10px 10px 30px 0; +} +.rtl.bp-wrapper #item-header ul img.avatar, +.rtl.bp-wrapper #item-header ul.avatars img.avatar { +margin-left: 10px; +margin-right: 0; +} +.bp-wrapper #item-header ul li { +list-style: none; +padding: 10px 0; +margin: 0 2px 0 0; +} +.rtl.bp-wrapper #item-header ul li { +margin-left: 2px; +margin-right: 0; +} +.bp-wrapper span.highlight, +.bp-wrapper .user-nicename { +font-size: 11px; +background: none !important; +border: 0; +margin: 0; +padding: 0 10px 0 0; +color: #333; +} +.rtl.bp-wrapper span.highlight, +.rtl.bp-wrapper .user-nicename { +padding-left: 10px; +padding-right: 0; +} +.bp-wrapper span.highlight, +.bp-wrapper .user-nicename { +color: #999; +} +.bp-wrapper #item-header #item-header-content .activity, +.bp-wrapper span.activity { +padding: 2px 8px; +line-height: 1; +color: #333; +display: inline-block; +font-size: 11px; +border: 1px solid #e1ca82; +-moz-border-radius: 3px; +-webkit-border-radius: 3px; +border-radius: 3px; +font-weight: normal; +margin-top: 3px; +text-decoration: none; +background-color: #ffeaa6; +background-image: -moz-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0)); +background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.5)), color-stop(100%,rgba(255,255,255,0))); +background-image: -webkit-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0)); +background-image: -o-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0)); +background-image: -ms-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0)); +-pie-background: linear-gradient(rgba(255, 255, 255), rgba(255, 255, 255)); +} +.bp-wrapper #item-header #latest-update, +.bp-wrapper #item-header #item-meta { +line-height: 19px; +margin: 10px 0 12px 0; +} +.bp-wrapper #item-header #item-buttons .generic-button { +float: left; +margin: 0 4px 4px 0; +} +.rtl.bp-wrapper #item-header #item-buttons .generic-button { +float: right; +margin-left: 4px; +margin-right: 0; +} +.bp-wrapper .dir-form div.dir-search { +float: right; +width: auto; +margin: -35px 0 15px 0; +width: auto; +line-height: 33px; +} +.rtl.bp-wrapper .dir-form div.dir-search { +float: left; +} +.bp-wrapper .dir-form div.dir-search input[type="text"] { +margin-right: 5px; +width: 120px; +} +.bp-wrapper .dir-form div.dir-search input[type="text"] { +margin-left: 5px; +margin-right: 0; +} +.bp-wrapper .dir-form h3 { +font-size: 24px; +line-height: 24px; +} + + +/*************************** Lists ***************************/ + +.bp-wrapper ul.item-list { +width: 100%; +border-bottom: 1px solid #d8d8d8; +} +.bp-wrapper ul.item-list .item, +.bp-wrapper li .admin-links, +.bp-wrapper .item-list .activity-content, +.bp-wrapper .post-content, +.widget ul.item-list .item { +margin-left: 50px; +} +.rtl.bp-wrapper ul.item-list .item, +.rtl.bp-wrapper li .admin-links, +.rtl.bp-wrapper .item-list .activity-content, +.rtl.bp-wrapper .post-content +.rtl .widget ul.item-list .item { +margin-left: 0; +margin-right: 50px; +} +.group-forum.bp-wrapper .post-content { +margin-left: 45px; +} +.rtl.group-forum.bp-wrapper .post-content { +margin-left: 0; +margin-right: 45px; +} +.bp-wrapper .item-list .ac-form { +margin: 15px 0 0 25px; +} +.rtl.bp-wrapper .item-list .ac-form { +margin-left: 0; +margin-right: 25px; +} +.bp-wrapper .item-list .avatar, +.bp-wrapper .activity-comments form div.ac-reply-avatar { +float: left; +} +.rtl.bp-wrapper .item-list .avatar, +.rtl.bp-wrapper .activity-comments form div.ac-reply-avatar { +float: right; +} +.bp-wrapper .post-content, +.bp-wrapper .item-list .activity-content .activity-inner { +margin-bottom: 10px; +border-color: #d8d8d8; +} +.bp-wrapper ul.item-list > li:first-child, +.bp-wrapper .item-list li, +.bp-wrapper .item-list li.mini { +position: relative; +width: 100%; +padding: 15px 0; +border-top: 1px solid #e5e5e5; +} +.bp-wrapper .widget ul.item-list li.has-comments { +padding-bottom: 12px; +} +.bp-wrapper .item-list .activity-header a:first-child, +.bp-wrapper .item-list .activity-header a:hover:first-child { +background: none !important; +border: 0; +padding: 0; +margin: 0; +} +.bp-wrapper div.poster-meta, +.bp-wrapper .item-list .activity-content .activity-header, +.bp-wrapper .item-list .activity-content .comment-header { +color: #999; +font-size: 11px; +} +.bp-wrapper div.poster-meta, +.bp-wrapper .item-list .activity-content .activity-header p, +.bp-wrapper .item-list .activity-content .comment-header p { +margin-bottom: 5px; +} +.bp-wrapper .item-list li div.activity-inreplyto { +margin: 0 0 10px 5px; +padding: 0 0 0 25px; +color: #666; +background: url(../../../../plugins/buddypress/bp-themes/bp-default/_inc/images/replyto_arrow.gif) no-repeat 7px 0; +font-size: 11px; +line-height: 19px; +} +.rtl.bp-wrapper .item-list li div.activity-inreplyto { +margin-left: 0; +margin-right: 5px; +padding-left: 0; +padding-right: 25px; +} +.bp-wrapper #whats-new-content, +.bp-wrapper div.activity-comments form div.ac-reply-content { +padding-left: 10px; +margin-left: 50px; +font-size: 11px; +} +.rtl.bp-wrapper #whats-new-content, +.rtl.bp-wrapper div.activity-comments form div.ac-reply-content { +padding-left: 0; +padding-right: 10px; +margin-left: 0; +margin-right: 50px; +} +.bp-wrapper div.activity-comments form .ac-textarea, +.bp-wrapper #whats-new-textarea { +padding: 7px; +margin-bottom: 10px; +background: #fff; +border: 1px solid #e5e5e5; +} +.bp-wrapper .activity-comments form textarea, +.bp-wrapper #whats-new { +width: 100%; +height: 50px; +font-size: 12px; +font-family: inherit; +color: #333; +background: none; +border: 0; +margin: 0; +padding: 0; +} +.bp-wrapper div.activity-comments form input { +margin-top: 5px; +margin-bottom: 3px; +} +.bp-wrapper div.activity-comments ul { +padding-left: 15px; +} +.rtl.bp-wrapper div.activity-comments ul { +padding-left: 0; +padding-right: 15px; +} +.bp-wrapper div.activity-comments li { +background: none !important; +border: 0 !important; +} +.bp-wrapper div.activity-comments ul li:last-child { +padding-bottom: 0; +} +.bp-wrapper div.activity-comments div.acomment-avatar img { +float: left; +} +.rtl.bp-wrapper div.activity-comments div.acomment-avatar img { +float: right; +} +.bp-wrapper div.activity-comments div.acomment-content { +font-size: 11px; +margin-left: 29px; +margin-top: 5px; +} +.rtl.bp-wrapper div.activity-comments div.acomment-content { +margin-left: 0; +margin-right: 29px; +} +.bp-wrapper div.activity-comments ul li p:last-child { +margin-bottom: 10px; +} +.bp-wrapper div.activity-comments .acomment-options { +margin-left: 29px; +height: 20px; +margin-bottom: 3px; +} +.rtl.bp-wrapper div.activity-comments .acomment-options { +margin-left: 0; +margin-right: 29px; +} +.bp-wrapper form#whats-new-form h5 { +margin: 0 0 10px 50px; +padding-left: 10px; +font-size: 20px; +font-weight: normal; +} +.rtl.bp-wrapper form#whats-new-form h5 { +margin-left: 0; +margin-right: 50px; +padding-left: 0; +padding-right: 10px; +} +.bp-wrapper #item-body form#whats-new-form { +padding-bottom: 70px; +} +.bp-wrapper #whats-new-avatar, +.bp-wrapper .item-list div.activity-avatar { +float: left; +padding: 0; +line-height: 0; +} +.rtl.bp-wrapper #whats-new-avatar, +.rtl.bp-wrapper .item-list div.activity-avatar { +float: right; +} +.bp-wrapper div.activity-comments div.acomment-meta { +font-size: 11px; +line-height: 1; +} +.messages.bp-wrapper .avatar, +.bp-wrapper .thread-avatar .avatar, +.item-list li .avatar, +.bp-wrapper #whats-new-avatar .avatar, +.bp-wrapper .item-list div.activity-avatar img { +float: left; +width: 35px; +height: 35px; +margin-right: 10px; +} +.rtl.messages.bp-wrapper .avatar, +.rtl.bp-wrapper .thread-avatar .avatar, +.rtl .item-list li .avatar, +.rtl.bp-wrapper #whats-new-avatar .avatar, +.rtl.bp-wrapper .item-list div.activity-avatar img { +float: right; +margin-left: 10px; +margin-right: 0; +} +.ac-reply-avatar img.avatar, +.bp-wrapper .item-list li ul li img.avatar { +float: left; +width: 20px; +height: 20px; +margin-right: 10px; +} +.rtl.ac-reply-avatar img.avatar, +.rtl.bp-wrapper .item-list li ul li img.avatar { +float: right; +margin-left: 10px; +margin-right: 0; +} +.bp-wrapper .ac-reply-avatar { +padding-left: 30px; +} +.rtl.bp-wrapper .ac-reply-avatar { +padding-left: 0; +padding-right: 30px; +} +.bp-wrapper #whats-new-options { +height: 0; +overflow: hidden; +float: left; +width: 100%; +margin: 10px 0 30px 0; +} +.bp-wrapper #whats-new-post-in-box { +float: left; +} +.rtl.bp-wrapper #whats-new-post-in-box { +float: right; +} +.bp-wrapper #new-submit, +.bp-wrapper #whats-new-submit { +float: right; +margin: 3px 3px 0 0; +} +.rtl.bp-wrapper #new-submit, +.rtl.bp-wrapper #whats-new-submit { +float: left; +margin-left: 3px; +margin-right: 0; +} +.widget #whats-new-options select { +max-width: 110px; +} +.bp-wrapper .activity-read-more { +margin-left: 5px; +} +.rtl .bp-wrapper .activity-read-more { +margin-left: 0; +margin-right: 5px; +} +.bp-wrapper a.loading { +background-image: url(../../lib/images/loader.gif); +background-position: 95% 50%; +background-repeat: no-repeat; +padding-right: 25px; +} +.rtl.bp-wrapper a.loading { +padding-left: 25px; +padding-right: 0; +} + + +/*************************** Buttons ***************************/ + +.bp-wrapper .button, +.button.submit, +.bp-wrapper .generic-button a, +.bp-wrapper ul.button-nav li a, +.bp-wrapper .item-list .activity-meta a, +.bp-wrapper .item-list .acomment-options a, +.bp-wrapper .activity-meta a:hover span, +.widget .item-options a { +cursor: pointer; +font-family: Helvetica, Arial, sans-serif; +font-size: 9px; +font-weight: normal; +line-height: 1; +padding: 4px 6px; +-webkit-border-radius: 3px; +-moz-border-radius: 3px; +border-radius: 3px; +color: #fff; +} +.bp-wrapper .button:hover, +.button.submit:hover, +.bp-wrapper .generic-button a:hover, +.bp-wrapper ul.button-nav li a:hover, +.bp-wrapper .item-list .activity-meta a:hover, +.bp-wrapper .item-list .acomment-options a:hover, +.bp-wrapper .acomment-options a:hover, +.bp-wrapper .activity-meta a span, +.widget .item-options a:hover, +.widget .item-options a.selected { +color: #fff; +} +.skin-blue.bp-wrapper .button, +.skin-blue.button.submit, +.skin-blue.bp-wrapper .generic-button a, +.skin-blue.bp-wrapper ul.button-nav li a, +.skin-blue.bp-wrapper .item-list .activity-meta a, +.skin-blue.bp-wrapper .item-list .acomment-options a, +.skin-blue.bp-wrapper .activity-meta a:hover span, +.skin-blue .widget .item-options a { +background: #2D5069; +} +.skin-black.bp-wrapper .button, +.skin-black.button.submit, +.skin-black.bp-wrapper .generic-button a, +.skin-black.bp-wrapper ul.button-nav li a, +.skin-black.bp-wrapper .item-list .activity-meta a, +.skin-black.bp-wrapper .item-list .acomment-options a, +.skin-black.bp-wrapper .activity-meta a:hover span, +.skin-black .widget .item-options a { +background: #6b6b6b; +} +.skin-blue.bp-wrapper .button:hover, +.skin-blue.button.submit:hover, +.skin-blue.bp-wrapper .generic-button a:hover, +.skin-blue.bp-wrapper ul.button-nav li a:hover, +.skin-blue.bp-wrapper .item-list .activity-meta a:hover, +.skin-blue.bp-wrapper .item-list .acomment-options a:hover, +.skin-blue.bp-wrapper .acomment-options a:hover, +.skin-blue.bp-wrapper .activity-meta a span, +.skin-blue .widget .item-options a:hover, +.skin-blue .widget .item-options a.selected { +background: #273138; +} +.skin-black.bp-wrapper .button:hover, +.skin-black.button.submit:hover, +.skin-black.bp-wrapper .generic-button a:hover, +.skin-black.bp-wrapper ul.button-nav li a:hover, +.skin-black.bp-wrapper .item-list .activity-meta a:hover, +.skin-black.bp-wrapper .item-list .acomment-options a:hover, +.skin-black.bp-wrapper .acomment-options a:hover, +.skin-black.bp-wrapper .activity-meta a span, +.skin-black .widget .item-options a:hover, +.skin-black .widget .item-options a.selected { +background: #393939; +} +.bp-wrapper .item-list .activity-meta a span, +.bp-wrapper .item-list .activity-meta a:hover span { +display: inline; +-webkit-border-radius: 3px; +-moz-border-radius: 3px; +border-radius: 3px; +margin-left: 3px; +padding: 0 3px; +} +.bp-wrapper .item-list .acomment-options, +.bp-wrapper div.activity-meta { +clear: none; +height: 20px; +margin: 0; +} +.bp-wrapper .accepted, +.bp-wrapper .accepted a, +.bp-wrapper .accepted a:hover, +.bp-wrapper .pending, +.bp-wrapper .pending a, +.bp-wrapper .pending a:hover, +.bp-wrapper .disabled, +.bp-wrapper .disabled a, +.bp-wrapper .disabled a:hover { +cursor: default !important; +background: #e5e5e5 !important; +color: #999 !important; +-webkit-border-radius: 5px; +-moz-border-radius: 5px; +border-radius: 5px; +} +.bp-wrapper .generic-button.group-button { +margin-bottom: 10px; +} + + +/*************************** BuddyPress Groups/Members ***************************/ + +.bp-wrapper ul.item-list li div.item-title, +.bp-wrapper ul.item-list li h4 { +font-family: Helvetica, Arial, sans-serif; +font-size: 14px; +font-weight: normal; +width: 75%; +margin: 0 0 5px 0; +} +.bp-wrapper ul.item-list h5 { +font-family: Helvetica, Arial, sans-serif; +margin-bottom: 5px; +font-size: 13px; +} +.bp-wrapper ul.item-list div.action .meta { +font-size: 11px; +} +.bp-wrapper ul.item-list div.action .generic-button { +float: left; +margin-left: 3px; +} +.bp-wrapper ul.item-list .item-desc { +margin: 5px 0 0; +font-size: 11px; +} +.bp-wrapper ul.item-list div.action { +position: absolute; +text-align: right; +top: 20px; +right: 0; +} +.rtl.bp-wrapper ul.item-list div.action { +text-align: left; +left: 0; +right: auto; +} + + +/*************************** Create Groups/Invitiations ***************************/ + +/* Send Invites Form */ +.bp-wrapper form#send-invite-form { +margin-top: 20px; +} +.bp-wrapper .left-menu { +float: left; +width: 150px; +margin-right: 30px; +} +.rtl.bp-wrapper .left-menu { +float: right; +margin-left: 30px; +margin-right: 0; +} +.bp-wrapper #invite-list { +border-right-width: 1px; +border-style: solid; +border-color: #e5e5e5; +height: 400px; +overflow: auto; +} +.bp-wrapper #invite-list { +border-left-width: 1px; +border-right-width: 0; +} +.bp-wrapper #invite-list li { +list-style: none; +margin: 0; +} +.bp-wrapper .main-column { +margin-left: 170px; +} +.rtl.bp-wrapper .main-column { +margin-left: 0; +margin-right: 170px; +} +.bp-wrapper .main-column #message { +clear: none; +} +.bp-wrapper #group-creation-next { +float: right; +} +.rtl.bp-wrapper #group-creation-next { +float: left; +} + + +/*************************** Group Forums ***************************/ + +/* Forums */ +.bp-wrapper div.pagination { +font-size: 11px; +margin: 10px 0; +} +.bp-wrapper table.forum { +border: 1px solid #e5e5e5; +border-bottom: 0; +margin: 20px 0; +width: 100%; +} +.bp-wrapper table.forum tr th { +padding: 10px; +vertical-align: middle; +background: #e5e5e5; +} +.bp-wrapper #th-postcount, +.bp-wrapper #th-freshness, +.bp-wrapper .td-postcount, +.bp-wrapper .td-freshness { +text-align: center; +} +.bp-wrapper table.forum tr td { +vertical-align: middle; +padding: 10px; +background-color: #f8f8f8; +} +.bp-wrapper table.forum tr.alt td { +background-color: #f5f5f5; +} +.bp-wrapper .forumTitle { +float: left; +} +.rtl.bp-wrapper .forumTitle { +float: right; +} +.bp-wrapper .createForumButton { +float: left; +line-height: 33px; +} +.rtl.bp-wrapper .createForumButton { +float: right; +} +.bp-wrapper .forum-list-container { +margin: 10px 0 20px; +padding: 0; +border: 1px solid #e5e5e5; +background: #e5e5e5; +-webkit-border-radius: 5px; +-moz-border-radius: 5px; +border-radius: 5px; +} +.bp-wrapper ul.forum-list { +margin: 0; +padding: 0; +} +.bp-wrapper ul.forum-list .thread-poster, +.bp-wrapper ul.forum-list .thread-info { +float: left; +} +.rtl.bp-wrapper ul.forum-list .thread-poster, +.rtl.bp-wrapper ul.forum-list .thread-info { +float: right; +} +.bp-wrapper ul.forum-list .thread-history { +float: right; +text-align: right; +} +.rtl.bp-wrapper ul.forum-list .thread-history { +float: left; +text-align: left; +} +.bp-wrapper ul.forum-list .thread-poster .avatar { +margin: 0 15px 0 0; +} +.rtl.bp-wrapper ul.forum-list .thread-poster .avatar { +margin: 0 0 0 15px; +} +.bp-wrapper ul.forum-list li { +list-style-type: none; +padding: 12px 16px; +border-top: 1px solid #fff; +border-bottom: 1px solid #e5e5e5; +} +.bp-wrapper ul.forum-list li { +border-top-color: #000; +border-bottom-color: #444; +} +.bp-wrapper ul.forum-list li:first-child { +-webkit-border-radius: 4px 4px 0 0; +-moz-border-radius: 4px 4px 0 0; +border-radius: 4px 4px 0 0; +} +.bp-wrapper ul.forum-list li:last-child { +border-bottom-color: #fff; +-webkit-border-radius: 0 0 4px 4px; +-moz-border-radius: 0 0 4px 4px; +border-radius: 0 0 4px 4px; +} +.bp-wrapper table.forum tr td.td-title a.topic-title { +font-size: 13px; +} +.bp-wrapper table.forum tr.sticky td { +background: #FFFFE0; +background-image: none; +} +.bp-wrapper table.forum td img.avatar { +display: none; +float: none; +margin: 0 5px -8px 0; +} +.bp-wrapper table.forum p.topic-meta { +font-size: 11px; +margin: 5px 0 0 0; +} +.bp-wrapper table.forum td.td-freshness span.time-since { +font-size: 11px; +} + +/* Topics */ +.bp-wrapper #item-body h3 { +font-size: 22px; +} +.bp-wrapper div#topic-meta { +position: relative; +padding: 0; +} +.bp-wrapper div.topic-tags { +float: none; +margin: 0 0 20px 0; +font-size: 11px; +} +.bp-wrapper #post-topic-reply { +float: left; +width: 100%; +margin-top: 20px; +} +.bp-wrapper #post-topic-reply h4 { +font-family: Helvetica, Arial, sans-serif; +font-size: 14px; +} +.bp-wrapper #topic-meta .sub-tabs.admin-links { +line-height: 200%; +} +.bp-wrapper #topic-meta .sub-tabs.admin-links a { +padding: 0 3px 0 4px; +} +.bp-wrapper div.admin-links { +position: relative; +font-size: 11px; +margin-bottom: 10px; +} +.bp-wrapper div#new-topic-post { +margin: 20px 0 0 0; +} + + +/*************************** Messages (Inbox) ***************************/ + +/* Message List */ +.bp-wrapper #message-threads { +margin: 0 0 10px 0; +} +.bp-wrapper #message-threads tr td { +border: 1px solid #e5e5e5; +border-bottom: 0; +background-color: #f8f8f8; +background-image: -moz-linear-gradient(#fff, #f8f8f8); +background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fff), color-stop(100%,#f8f8f8)); +background-image: -webkit-linear-gradient(#fff, #f8f8f8); +background-image: -ms-linear-gradient(#fff, #f8f8f8); +background-image: -o-linear-gradient(#fff, #f8f8f8); +-pie-background: linear-gradient(#fff, #f8f8f8); +} +.bp-wrapper #message-threads tr:last-child td { +border-bottom: 1px solid #e5e5e5; +} +.bp-wrapper #message-threads.notice-threads td { +vertical-align: top; +} +.bp-wrapper #message-threads td { +vertical-align: top; +padding: 10px; +line-height: 19px; +} +.bp-wrapper #message-threads tr.unread td { +background-color: #fff4d5; +} +.bp-wrapper #message-threads .m-sender, +.bp-wrapper #message-threads .m-recipient, +.bp-wrapper #message-threads .m-date, +.bp-wrapper #message-threads .m-subject, +.bp-wrapper #message-threads .thread-excerpt { +overflow: hidden; +} +.bp-wrapper #message-threads .thread-count { +text-align: right; +} +.rtl.bp-wrapper #message-threads .thread-count { +text-align: left; +} +.bp-wrapper #message-threads .thread-avatar { +width: 14%; +} +.bp-wrapper #message-threads .thread-info { +width: 30%; +} +.bp-wrapper #message-threads .thread-info p { +margin-bottom: 5px; +} +.bp-wrapper #message-threads .thread-options { +width: 20%; +} +.bp-wrapper #message-threads .thread-select { +line-height: 1; +} +.bp-wrapper #message-threads .thread-select input { +margin: 0; +} +.bp-wrapper #message-threads .m-date, +.bp-wrapper #message-threads .m-from, +.bp-wrapper #message-threads .m-to { +text-transform: uppercase; +font-size: 11px; +color: #999; +} +.bp-wrapper #message-threads .m-sender .m-from { +display: none; +} + +/* Message Single */ +.bp-wrapper #message-thread .message-date { +font-size: 10px; +color: #666; +text-transform: uppercase; +font-weight: bold; +float: right; +} +.rtl.bp-wrapper #message-thread .message-date { +float: left; +} +.bp-wrapper #message-thread .message-metadata { +margin-bottom: 5px; +} +.bp-wrapper #message-thread #message-subject { +font-size: 12px; +font-family: Helvetica, Arial, sans-serif; +font-weight: bold; +margin-bottom: 5px; +} +.bp-wrapper #message-thread #MessageContainers .message-box { +border: 1px solid #e5e5e5; +} +.bp-wrapper #message-thread .envelope-info { +border: 1px solid #e5e5e5; +background: #fff; +padding: 2px 8px 3px 8px; +-webkit-border-radius: 4px 4px 0 0; +-moz-border-radius: 4px 4px 0 0; +border-radius: 4px 4px 0 0; +} + + +/*************************** Register Page ***************************/ + +.bp-wrapper .register-section .textInput, +.bp-wrapper .register-section input[type="text"], +.bp-wrapper .create-form .textInput, +.bp-wrapper .create-form input[type="text"] { +width: 250px; +} +.bp-wrapper .register-section #signup_username, +.bp-wrapper .register-section #signup_password, +.bp-wrapper .register-section #signup_password_confirm { +width: 142px; +} +.bp-wrapper .register-section, +.bp-wrapper .create-form { +padding: 20px; +margin: 15px 0; +border: 1px solid #e5e5e5; +} +.bp-wrapper .register-section h4, +.bp-wrapper .create-form h4 { +font-size: 20px; +line-height: 1; +} +.bp-wrapper .create-form label { +font-weight: bold; +} +.bp-wrapper .standard-form#signup_form div div.error { +color: #8a1f11; +margin: 10px 0 5px 0; +} + + +/*************************** Notices ***************************/ + +#message { +margin: 15px 0; +padding: 10px; +overflow: hidden; +clear: both; +position: relative; +-webkit-border-radius: 4px; +-moz-border-radius: 4px; +border-radius: 4px; +position: relative; +color: #333; +border: 1px solid #e1ca82; +background-color: #ffeaa6; +background-image: -moz-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0)); +background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.5)), color-stop(100%,rgba(255,255,255,0))); +background-image: -webkit-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0)); +background-image: -ms-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0)); +background-image: -o-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0)); +-pie-background: linear-gradient(rgba(255, 255, 255), rgba(255, 255, 255)); +} +.bp-wrapper #message.updated { +background-color: #e3f8bf; +border-color: #9bd23a; +color: #5e8a11; +} +.bp-wrapper #message.error { +background-color: #FBE3E4; +border-color: #FBC2C4; +color: #8a1f11; +} +#message.info.notice { +margin: 0 0 30px 0; +} +#message p { +margin-bottom: 0; +} +.bp-wrapper div.message-box { +border-bottom: 1px solid #e5e5e5; +padding: 15px 0; +} +.bp-wrapper div#message-thread div.message-content { +margin-left: 45px; +} +.rtl.bp-wrapper div#message-thread div.message-content { +margin-left: 0; +margin-right: 45px; +} + + +/*************************** Tables ***************************/ + +.bp-wrapper table { +width: 100%; +} +.bp-wrapper table tr td, +.bp-wrapper table tr th { +padding: 10px; +} +.bp-wrapper table tr td.label { +border-right: 1px solid #ddd; +font-weight: bold; +width: 25%; +} +.frame.bp-wrapper table tr td.label { +border-color: #e5e5e5; +} + + +/*************************** Forms ***************************/ + +.bp-wrapper form.standard-form .button-nav li, +.bp-wrapper #send_message_form.standard-form li { +float: left; +margin: 0 4px 4px 0; +padding: 5px 0 5px 0; +border: 0; +list-style: none; +} +.rtl.bp-wrapper form.standard-form .button-nav li, +.rtl.bp-wrapper #send_message_form.standard-form li { +float: right; +margin-left: 4px; +margin-right: 0; +} +.bp-wrapper .profile .data p { +margin-bottom: 0; +} +.bp-wrapper form.standard-form label, +.bp-wrapper form.standard-form span.label { +display: block; +margin: 15px 0 5px 0; +} +.bp-wrapper form.standard-form div.checkbox label, +.bp-wrapper form.standard-form div.radio label { +font-weight: normal; +margin: 15px 0 0 0; +} +.bp-wrapper .standard-form div.radio ul { +margin: 10px 0 15px 0; +} +.bp-wrapper .standard-form div.radio ul li { +margin-bottom: 5px; +} +.bp-wrapper form.standard-form textarea { +width: 75%; +height: 120px; +} +.bp-wrapper .standard-form input[type="password"] { +margin-bottom: 5px; +} +.bp-wrapper form.standard-form .submit { +margin-top: 10px; +} + + +/*************************** Notifications ***************************/ + +.bp-wrapper #settings-form .notification-settings { +width: 100%; +margin: 15px 0; +border: 1px solid #e5e5e5; +border-bottom: 0; +} +.bp-wrapper #settings-form .notification-settings thead { +background: #e5e5e5; +} +.bp-wrapper #settings-form .notification-settings .yes, +.bp-wrapper #settings-form .notification-settings .no { +width: 50px; +text-align: center; +} +.bp-wrapper #settings-form .notification-settings .icon { +width: 1px; +padding: 0; +} +.bp-wrapper table.notification-settings { +margin-bottom: 20px; +} +.bp-wrapper table.notification-settings th.icon, +.bp-wrapper table.notification-settings td:first-child { +display: none; +} +.bp-wrapper #settings-form .submit { +margin: 1em 0; +clear: both; +} +.bp-wrapper #send_message_form #subject { +width: 400px; +} +.bp-wrapper hr { +margin: 15px 0 !important; +} + + +/*************************** Widgets ***************************/ + +/* Lists */ +.widget ul.item-list { +clear: both; +margin-top: 5px; +padding: 0; +} +.widget ul.item-list li { +background: none !important; +border-top: 1px solid #e5e5e5 !important; +border-bottom: 0 !important; +padding: 15px 0 0 0 !important; +margin: 15px 0 0 0 !important; +overflow: hidden; +line-height: 15px; +} +.widget.widget_display_views li, +.widget.widget_display_replies li { +font-size: 11px; +line-height: 15px; +padding-left: 0; +width: 100%; +background: none; +overflow: hidden; +} +.widget .avatar-block .item-avatar img { +float: left; +width: 30px; +height: 30px; +margin: 3px; +} +.rtl .widget .avatar-block .item-avatar img { +float: right; +} + +/* Titles */ +.widget ul.item-list li div.item-title, +.widget ul.item-list li h4 { +font-family: Helvetica, Arial, sans-serif; +margin: 0; +font-size: 12px !important; +line-height: 16px; +} +.widget.bbp_widget_login h4 { +font-family: Helvetica, Arial, sans-serif; +font-size: 14px; +} + +/* Meta */ +.widget .item-options { +display: inline-block; +color: transparent; +line-height: 19px; +font-size: 11px; +margin: 2px 0 5px 0; +} +.widget span.activity { +font-size: 11px; +background: none !important; +padding: 0 !important; +margin: 0 !important; +border: 0 !important; +color: #333 !important; +} +.widget.bbp_widget_login fieldset { +padding: 0; +border: 0; +} + + +/*************************** bbPress Site-wide Forums ***************************/ + +/* General Table Styling */ +.bbPress #content table tr td, +.bbPress #content table tr th { +vertical-align: middle; +padding: 10px; +} +.bbPress #content .bbp-forum-topic-count, +.bbPress #content .bbp-forum-reply-count, +.bbPress #content .bbp-topic-voice-count { +text-align: center; +} +.bbPress #content .bbp-forums, +.bbPress #content .bbp-topics, +.bbPress #content .bbp-replies { +border: 1px solid #e5e5e5; +margin: 0 0 10px 0; +} +.bbPress #content span.bbp-admin-links, +.bbPress #content span.bbp-admin-links a, +.bbPress #content a.bbp-topic-permalink, +.bbPress #content a.bbp-reply-permalink, +.bbPress #content table.bbp-replies tr.bbp-reply-header td, +.bbPress #content table.bbp-topic tr.bbp-topic-header td, +.bbPress #content .bbp-author-ip { +font-weight: normal; +font-size: 11px; +text-transform: none; +color: #666; +} +.bbPress #content span.bbp-admin-links a:hover { +color: #999; +} +.bbPress #content table.bbp-forums th, +.bbPress #content table.bbp-topics th, +.bbPress #content table.bbp-topic th, +.bbPress #content table.bbp-replies th, +.bbPress #content table.bbp-forums tfoot td, +.bbPress #content table.bbp-topics tfoot td, +.bbPress #content table.bbp-topic tfoot td, +.bbPress #content table.bbp-replies tfoot td, +.bbPress #content table.bbp-topic tr.bbp-topic-header td { +background: #e5e5e5; +} +.bbPress #content .bbp-forums tr td, +.bbPress #content .bbp-topics tr td { +background-color: #f8f8f8; +} +.bbPress #content .bbp-forums tr.even td, +.bbPress #content .bbp-topics tr.even td { +background: #f5f5f5; +} +.bbPress #content table.bbp-topics tbody tr.status-closed td, +.bbPress #content table.bbp-topics tbody tr.status-closed td a { +color: #666; +} +.bbPress #content .bbp-forums td, +.bbPress #content .bbp-topics td { +font-size: 13px; +} +.bbPress #content tr td.bbp-forum-freshness, +.bbPress #content tr td.bbp-topic-freshness { +font-size: 11px; +} +.bbPress #content table tfoot tr td { +background: #f8f8f8; +border-bottom: 1px solid #e5e5e5; +} +.bbPress #content table tfoot td { +border: 0; +} +.bbPress #content .bbp-template-notice .bbp-author-avatar, +.bbPress #content .bbp-forums .bbp-author-avatar, +.bbPress #content .bbp-topics .bbp-author-avatar { +display: none; +} + +/* Topics */ +.bbPress #content .bbp-topic-started-by { +font-weight: normal; +} +.bbPress #content .bbp-topic-meta { +font-size: 11px; +line-height: 15px; +margin-top: 5px; +} +.bbPress #content tr.sticky td { +background-image: none; +} + +/* Forums */ +.bbPress #content table tbody tr ul.bbp-forums { +background: none; +margin: 10px 0 0 0; +border-width: 0 0 0 1px; +border-style: solid; +border-color: #ddd; +-webkit-border-radius: 0; +-moz-border-radius: 0; +border-radius: 0; +-webkit-box-shadow: none; +-moz-box-shadow: none; +box-shadow: none; +} +.bbPress #content table tbody tr ul.bbp-forums { +border-color: #444; +} +.bbPress #content table tbody tr ul.bbp-forums li { +display: inline; +background: none; +border: 0; +padding: 0; +margin: 0; +} +.bbPress #content .bbp-forums .bbp-forum-description { +font-size: 11px; +line-height: 15px; +margin-top: 5px; +} +.bbPress #content p.bbp-topic-meta span { +white-space: normal; +} + +/* Replies */ +.bbPress #content .bbp-replies tr td, +.bbPress #content .bbp-replies tr th { +vertical-align: top; +} +.bbPress #content .bbp-replies tbody tr td { +padding: 20px 0; +} +.bbPress #content table.bbp-replies tr.bbp-reply-header td { +background: #fff; +padding: 10px; +} +.bbPress #content table.bbp-replies tbody tr.even td { +background-color: #f8f8f8; +} +.bbPress #content table.bbp-replies tbody tr.odd td { +background-color: #f5f5f5; +} +.bbPress #content .bbp-author-ip { +line-height: 20px; +font-size: 9px; +} +.bbPress #content .bbp-reply-revision-log li { +border: 0; +background: none; +color: #666; +padding: 0 0 10px 0; +} +.bbPress #content .bbp-replies .bbp-author-avatar img { +width: 80px; +height: 80px; +background: none; +padding: 0; +-webkit-border-radius: 0; +-moz-border-radius: 0; +border-radius: 0; +-webkit-box-shadow: none; +-moz-box-shadow: none; +box-shadow: none; +} +.bbPress #content .bbp-replies .bbp-author-name { +display: block; +font-size: 11px; +margin-top: 5px; +} +.bbPress .form-allowed-tags { +width: 100% !important; +} +.bbPress p.form-allowed-tags code { +overflow-y: hidden; +width: 100% !important; +} + +/* Forms */ +.bbPress #content .bbp-form { +border: 1px solid #e5e5e5; +padding: 10px 20px; +} +.bbPress #content fieldset.bbp-form, +.bbPress #content fieldset.bbp-form, +.bbPress #content fieldset.bbp-form { +clear: left; +padding: 20px; +} +.bbPress #content .bbp-form legend { +padding: 5px; +} +.bbPress #content tbody .bbp-topic-content, +.bbPress #content tbody .bbp-reply-content { +vertical-align: top; +overflow: auto; +} +.bbPress #content fieldset.bbp-form label, +.bbPress #container fieldset.bbp-form label, +.bbPress #wrapper fieldset.bbp-form label { +width: 275px; +} +.bbPress #content .bbp-submit-wrapper { +margin: 10px 0 0 0; +} +.bbPress #content .bbp-submit-wrapper .button.submit { +font-weight: bold; +font-size: 12px; +padding: 8px 12px; +} +.bbPress #content .bbp-pagination { +font-size: 11px; +margin-bottom: 10px; +} + +/* Breadcrumbs */ +.bbPress #content .bbp-breadcrumb p { +margin-bottom: 30px; +} +.bbPress #content .bbp-breadcrumb, +.bbPress #content .bbp-breadcrumb a { +font-size: 11px; +color: #999; +} + +/* Tags */ +.bbPress #content div.bbp-topic-tags { +font-size: 11px; +} + +/* Widgets */ +.widget .bbp-login-links { +float: left; +width: 100%; +} +.widget .bbp-login-form .bbp-username label, +.widget .bbp-login-form .bbp-password label { +min-width: 70px; +width: auto; +} +.widget .bbp-login-form .bbp-submit-wrapper { +float: left; +} +.widget .bbp-login-form .bbp-submit-wrapper button { +font-size: 11px; +font-weight: bold; +} +.widget .bbp-login-form .bbp-username input, +.widget .bbp-login-form .bbp-email input, +.widget .bbp-login-form .bbp-password input { +padding: 7px; +} +.widget .bbp-login-form .bbp-login-links a { +clear: none; +margin: 10px 10px 0 0; +} +.rtl .widget .bbp-login-form .bbp-login-links a { +margin-left: 10px; +margin-right: 0; +} \ No newline at end of file diff --git a/wp-content/themes/score/lib/buddypress/functions-buddypress.php b/wp-content/themes/score/lib/buddypress/functions-buddypress.php new file mode 100644 index 0000000..3630ba7 --- /dev/null +++ b/wp-content/themes/score/lib/buddypress/functions-buddypress.php @@ -0,0 +1,505 @@ + 'Afghanistan', + 'AX' => 'Aland Islands', + 'AL' => 'Albania', + 'DZ' => 'Algeria', + 'AS' => 'American Samoa', + 'AD' => 'Andorra', + 'AO' => 'Angola', + 'AI' => 'Anguilla', + 'AQ' => 'Antarctica', + 'AG' => 'Antigua and Barbuda', + 'AR' => 'Argentina', + 'AM' => 'Armenia', + 'AW' => 'Aruba', + 'AU' => 'Australia', + 'AT' => 'Austria', + 'AZ' => 'Azerbaijan', + 'BS' => 'Bahamas', + 'BH' => 'Bahrain', + 'BD' => 'Bangladesh', + 'BB' => 'Barbados', + 'BY' => 'Belarus', + 'BE' => 'Belgium', + 'BZ' => 'Belize', + 'BJ' => 'Benin', + 'BM' => 'Bermuda', + 'BT' => 'Bhutan', + 'BO' => 'Bolivia', + 'BA' => 'Bosnia and Herzegovina', + 'BW' => 'Botswana', + 'BV' => 'Bouvet Island', + 'BR' => 'Brazil', + 'IO' => 'British Indian Ocean Territory', + 'BN' => 'Brunei Darussalam', + 'BG' => 'Bulgaria', + 'BF' => 'Burkina Faso', + 'BI' => 'Burundi', + 'KH' => 'Cambodia', + 'CM' => 'Cameroon', + 'CA' => 'Canada', + 'CV' => 'Cape Verde', + 'KY' => 'Cayman Islands', + 'CF' => 'Central African Republic', + 'TD' => 'Chad', + 'CL' => 'Chile', + 'CN' => 'China', + 'CX' => 'Christmas Island', + 'CC' => 'Cocos (Keeling) Islands', + 'CO' => 'Colombia', + 'KM' => 'Comoros', + 'CG' => 'Congo', + 'CD' => 'Congo, The Democratic Republic of The', + 'CK' => 'Cook Islands', + 'CR' => 'Costa Rica', + 'CI' => "Cote D'ivoire", + 'HR' => 'Croatia', + 'CU' => 'Cuba', + 'CY' => 'Cyprus', + 'CZ' => 'Czech Republic', + 'DK' => 'Denmark', + 'DJ' => 'Djibouti', + 'DM' => 'Dominica', + 'DO' => 'Dominican Republic', + 'EC' => 'Ecuador', + 'EG' => 'Egypt', + 'SV' => 'El Salvador', + 'GQ' => 'Equatorial Guinea', + 'ER' => 'Eritrea', + 'EE' => 'Estonia', + 'ET' => 'Ethiopia', + 'FK' => 'Falkland Islands (Malvinas)', + 'FO' => 'Faroe Islands', + 'FJ' => 'Fiji', + 'FI' => 'Finland', + 'FR' => 'France', + 'GF' => 'French Guiana', + 'PF' => 'French Polynesia', + 'TF' => 'French Southern Territories', + 'GA' => 'Gabon', + 'GM' => 'Gambia', + 'GE' => 'Georgia', + 'DE' => 'Germany', + 'GH' => 'Ghana', + 'GI' => 'Gibraltar', + 'GR' => 'Greece', + 'GL' => 'Greenland', + 'GD' => 'Grenada', + 'GP' => 'Guadeloupe', + 'GU' => 'Guam', + 'GT' => 'Guatemala', + 'GG' => 'Guernsey', + 'GN' => 'Guinea', + 'GW' => 'Guinea-bissau', + 'GY' => 'Guyana', + 'HT' => 'Haiti', + 'HM' => 'Heard Island and Mcdonald Islands', + 'VA' => 'Holy See (Vatican City State)', + 'HN' => 'Honduras', + 'HK' => 'Hong Kong', + 'HU' => 'Hungary', + 'IS' => 'Iceland', + 'IN' => 'India', + 'ID' => 'Indonesia', + 'IR' => 'Iran, Islamic Republic of', + 'IQ' => 'Iraq', + 'IE' => 'Ireland', + 'IM' => 'Isle of Man', + 'IL' => 'Israel', + 'IT' => 'Italy', + 'JM' => 'Jamaica', + 'JP' => 'Japan', + 'JE' => 'Jersey', + 'JO' => 'Jordan', + 'KZ' => 'Kazakhstan', + 'KE' => 'Kenya', + 'KI' => 'Kiribati', + 'KP' => "Korea, Democratic People's Republic of", + 'KR' => 'Korea, Republic of', + 'KW' => 'Kuwait', + 'KG' => 'Kyrgyzstan', + 'LA' => "Lao People's Democratic Republic", + 'LV' => 'Latvia', + 'LB' => 'Lebanon', + 'LS' => 'Lesotho', + 'LR' => 'Liberia', + 'LY' => 'Libyan Arab Jamahiriya', + 'LI' => 'Liechtenstein', + 'LT' => 'Lithuania', + 'LU' => 'Luxembourg', + 'MO' => 'Macao', + 'MK' => 'Macedonia, The Former Yugoslav Republic of', + 'MG' => 'Madagascar', + 'MW' => 'Malawi', + 'MY' => 'Malaysia', + 'MV' => 'Maldives', + 'ML' => 'Mali', + 'MT' => 'Malta', + 'MH' => 'Marshall Islands', + 'MQ' => 'Martinique', + 'MR' => 'Mauritania', + 'MU' => 'Mauritius', + 'YT' => 'Mayotte', + 'MX' => 'Mexico', + 'FM' => 'Micronesia, Federated States of', + 'MD' => 'Moldova, Republic of', + 'MC' => 'Monaco', + 'MN' => 'Mongolia', + 'ME' => 'Montenegro', + 'MS' => 'Montserrat', + 'MA' => 'Morocco', + 'MZ' => 'Mozambique', + 'MM' => 'Myanmar', + 'NA' => 'Namibia', + 'NR' => 'Nauru', + 'NP' => 'Nepal', + 'NL' => 'Netherlands', + 'AN' => 'Netherlands Antilles', + 'NC' => 'New Caledonia', + 'NZ' => 'New Zealand', + 'NI' => 'Nicaragua', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NU' => 'Niue', + 'NF' => 'Norfolk Island', + 'MP' => 'Northern Mariana Islands', + 'NO' => 'Norway', + 'OM' => 'Oman', + 'PK' => 'Pakistan', + 'PW' => 'Palau', + 'PS' => 'Palestinian Territory, Occupied', + 'PA' => 'Panama', + 'PG' => 'Papua New Guinea', + 'PY' => 'Paraguay', + 'PE' => 'Peru', + 'PH' => 'Philippines', + 'PN' => 'Pitcairn', + 'PL' => 'Poland', + 'PT' => 'Portugal', + 'PR' => 'Puerto Rico', + 'QA' => 'Qatar', + 'RE' => 'Reunion', + 'RO' => 'Romania', + 'RU' => 'Russian Federation', + 'RW' => 'Rwanda', + 'SH' => 'Saint Helena', + 'KN' => 'Saint Kitts and Nevis', + 'LC' => 'Saint Lucia', + 'PM' => 'Saint Pierre and Miquelon', + 'VC' => 'Saint Vincent and The Grenadines', + 'WS' => 'Samoa', + 'SM' => 'San Marino', + 'ST' => 'Sao Tome and Principe', + 'SA' => 'Saudi Arabia', + 'SN' => 'Senegal', + 'RS' => 'Serbia', + 'SC' => 'Seychelles', + 'SL' => 'Sierra Leone', + 'SG' => 'Singapore', + 'SK' => 'Slovakia', + 'SI' => 'Slovenia', + 'SB' => 'Solomon Islands', + 'SO' => 'Somalia', + 'ZA' => 'South Africa', + 'GS' => 'South Georgia and The South Sandwich Islands', + 'ES' => 'Spain', + 'LK' => 'Sri Lanka', + 'SD' => 'Sudan', + 'SR' => 'Suriname', + 'SJ' => 'Svalbard and Jan Mayen', + 'SZ' => 'Swaziland', + 'SE' => 'Sweden', + 'CH' => 'Switzerland', + 'SY' => 'Syrian Arab Republic', + 'TW' => 'Taiwan, Province of China', + 'TJ' => 'Tajikistan', + 'TZ' => 'Tanzania, United Republic of', + 'TH' => 'Thailand', + 'TL' => 'Timor-leste', + 'TG' => 'Togo', + 'TK' => 'Tokelau', + 'TO' => 'Tonga', + 'TT' => 'Trinidad and Tobago', + 'TN' => 'Tunisia', + 'TR' => 'Turkey', + 'TM' => 'Turkmenistan', + 'TC' => 'Turks and Caicos Islands', + 'TV' => 'Tuvalu', + 'UG' => 'Uganda', + 'UA' => 'Ukraine', + 'AE' => 'United Arab Emirates', + 'GB' => 'United Kingdom', + 'US' => 'United States', + 'UM' => 'United States Minor Outlying Islands', + 'UY' => 'Uruguay', + 'UZ' => 'Uzbekistan', + 'VU' => 'Vanuatu', + 'VE' => 'Venezuela', + 'VN' => 'Viet Nam', + 'VG' => 'Virgin Islands, British', + 'VI' => 'Virgin Islands, U.S.', + 'WF' => 'Wallis and Futuna', + 'EH' => 'Western Sahara', + 'YE' => 'Yemen', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +); + + +// Add class if BuddyPress active +if (function_exists('bp_is_active')) { + add_filter('body_class', 'gp_bp_active_class'); + + function gp_bp_active_class($classes) { + $classes[] = 'bp-active'; + return $classes; + } + +} + + +// Add classes on BuddyPress pages +if (function_exists('bp_is_active')) { + add_filter('body_class', 'gp_bp_class'); + + function gp_bp_class($classes) { + if (!bp_is_blog_page() OR (function_exists('is_bbpress') && is_bbpress())) { + if (is_rtl()) { + $classes[] = 'bp-wrapper custom-background rtl'; + } else { + $classes[] = 'bp-wrapper custom-background'; + } + } + return $classes; + } + +} + +// No ver mostrar de buddypress excepto para el admin +if (!is_admin() ) define( 'BP_DISABLE_ADMIN_BAR', true ); + + +// Add a class when admin bar is enabled for logged out users +if (!bp_get_option('hide-loggedout-adminbar')) { + add_filter('body_class', 'gp_bp_adminbar_class'); + + function gp_bp_adminbar_class($classes) { + $classes[] = 'bp-adminbar'; + return $classes; + } + +} + + +// Add a class for bbPress on topic tag pages +if (function_exists('bbp_is_topic_tag') OR function_exists('bbp_is_topic_tag_edit')) { + add_filter('body_class', 'gp_bp_bbpress_class'); + + function gp_bp_bbpress_class($classes) { + if (bbp_is_topic_tag() OR bbp_is_topic_tag_edit()) { + $classes[] = 'bbPress'; + } + return $classes; + } + +} + +// Custom BuddyPress admin bar links +function gp_bp_login_redirect() { + require(ghostpool_inc . 'options.php'); + global $bp; + remove_action('bp_adminbar_menus', 'bp_adminbar_login_menu', 2); + if (is_user_logged_in()) { + if (is_singular()) { + edit_post_link(__('Edit', 'gp_lang'), '
                    • ', '
                    • '); + } + } else { + if ($theme_login_url) { + $url = $theme_login_url; + } else { + $url = wp_login_url(); + } + echo ''; + if (bp_get_signup_allowed()) + echo ''; + } +} + +add_action('bp_adminbar_menus', 'gp_bp_login_redirect', 1); + + +// Include BuddyPress JS and CSS functions +if (!is_admin()) { + if (!function_exists('gp_bp_enqueue_defaults_init')) { + + function gp_bp_enqueue_defaults_init() { + wp_enqueue_style('buddypress', BP_THEME_URL . '/lib/buddypress/bp.css', false, '0.1', 'screen'); + wp_enqueue_script('dtheme-ajax-js', BP_PLUGIN_URL . '/bp-themes/bp-default/_inc/global.js', array('jquery')); + } + + } + add_action('init', 'gp_bp_enqueue_defaults_init', 1); +} + + +// Avatar dimensions +if (!defined('BP_AVATAR_THUMB_WIDTH')) + define('BP_AVATAR_THUMB_WIDTH', 50); //change this with your desired thumb width + +if (!defined('BP_AVATAR_THUMB_HEIGHT')) + define('BP_AVATAR_THUMB_HEIGHT', 50); //change this with your desired thumb height + +if (!defined('BP_AVATAR_FULL_WIDTH')) + define('BP_AVATAR_FULL_WIDTH', 150); //change this with your desired full size,weel I changed it to 260 :) + +if (!defined('BP_AVATAR_FULL_HEIGHT')) + define('BP_AVATAR_FULL_HEIGHT', 150); //change this to default height for full avatar + + + +// Modify the activity output +if (!function_exists('gp_bp_activity_action')) { + + function gp_bp_activity_action() { + $content = bp_get_activity_action(); + $content = str_replace('·', '', $content); // no more dots between content + $content = str_replace(': created', ' ' . __('Created', 'gp_lang'), $content); // capitalization fix + $content = str_replace(' posted', ' ' . __('Posted', 'gp_lang'), $content); // capitalization fix + $content = str_replace(' started', ' ' . __('Started', 'gp_lang'), $content); // capitalization fix + $content = str_replace('in the group', __('in', 'gp_lang'), $content); + echo $content; + } + +} + + +// Add words that we need to use in JS to the end of the page so they can be translated and still used +if (!function_exists('bp_dtheme_enqueue_scripts')) { + + function bp_dtheme_enqueue_scripts() { + $params = array( + 'my_favs' => __('My Favorites', 'buddypress'), + 'accepted' => __('Accepted', 'buddypress'), + 'rejected' => __('Rejected', 'buddypress'), + 'show_all_comments' => __('Show all comments for this thread', 'buddypress'), + 'show_all' => __('Show all', 'buddypress'), + 'comments' => __('comments', 'buddypress'), + 'close' => __('Close', 'buddypress'), + 'view' => __('View', 'buddypress'), + 'mark_as_fav' => __('Favorite', 'buddypress'), + 'remove_fav' => __('Remove Favorite', 'buddypress') + ); + wp_localize_script('dtheme-ajax-js', 'BP_DTheme', $params); + } + + add_action('wp_enqueue_scripts', 'bp_dtheme_enqueue_scripts'); +} + + +// Member Buttons +if (bp_is_active('friends')) + add_action('bp_member_header_actions', 'bp_add_friend_button'); + +if (bp_is_active('activity')) + add_action('bp_member_header_actions', 'bp_send_public_message_button'); + +if (bp_is_active('messages')) + add_action('bp_member_header_actions', 'bp_send_private_message_button'); + + +// Group Buttons +if (bp_is_active('groups')) { + add_action('bp_group_header_actions', 'bp_group_join_button'); + add_action('bp_group_header_actions', 'bp_group_new_topic_button'); + add_action('bp_directory_groups_actions', 'bp_group_join_button'); +} + + +// Blog Buttons +if (bp_is_active('blogs')) + add_action('bp_directory_blogs_actions', 'bp_blogs_visit_blog_button'); + + + + +add_filter('bp_get_the_profile_field_value', 'gp_bp_get_the_profile_field_value', 3); + +function gp_bp_get_the_profile_field_value($value, $type = '', $id = '') { + global $field; + global $countries_array; + + if (substr_count(strtolower($field->name), 'country')) { + $country = $value; + $code = array_search($country, $countries_array); + if ($code) { + $value = gp_get_flag_img($code, 32); + } + } + return $value; +} + +function remove_xprofile_links() { + remove_filter('bp_get_the_profile_field_value', 'xprofile_filter_link_profile_data', 9, 2); +} + +add_action('bp_init', 'remove_xprofile_links'); + + +function check_country_field() { + global $wpdb; + global $countries_array; + + $country_field = ''; + + $sql = " SELECT name FROM wp_bp_xprofile_fields WHERE name = 'Country' "; + $country_field = $wpdb->get_var( $sql ); + if( !$country_field ) { + $wpdb->insert( + 'wp_bp_xprofile_fields', + array( + 'group_id'=>1, + 'parent_id'=>0, + 'type'=>'selectbox', + 'name'=>'Country', + 'description'=>'', + 'is_required'=>1, + 'is_default_option'=>0, + 'field_order'=>2, + 'option_order'=>0, + 'order_by'=>'asc', + 'can_delete'=>0 + ) + ); + $parent_id = $wpdb->insert_id; + + foreach ($countries_array as $country) { + $wpdb->insert( + 'wp_bp_xprofile_fields', + array( + 'group_id'=>1, + 'parent_id'=>$parent_id, + 'type'=>'option', + 'name'=>$country, + 'description'=>'', + 'is_required'=>0, + 'is_default_option'=> 0, + 'field_order'=>0, + 'option_order'=>0, + 'order_by'=>'', + 'can_delete'=>0 + ) + ); + } + } +} +add_action('bp_init', 'check_country_field'); + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/css/custom-style-green.css b/wp-content/themes/score/lib/css/custom-style-green.css new file mode 100644 index 0000000..0cf4249 --- /dev/null +++ b/wp-content/themes/score/lib/css/custom-style-green.css @@ -0,0 +1,109 @@ +/* + +This stylesheet is not a full skin like style-blue.css and style-black.css. It is an example stylesheet which can be used to style individual posts. To style individual posts go to your post, scroll down to the Post Settings panel and add the relative URL to your custom stylesheet e.g. lib/css/custom-style.css in the Custom Stylesheet URL text field. + +*/ + +/*************************** General Styling ***************************/ + +/* Page Styling */ +body { +background: #000; +} + + +/*************************** Header ***************************/ + +/* Header */ +#header-bottom { +background-color: #2e3827; +} + + +/*************************** Social Wrapper ***************************/ + +/* Social Wrapper */ +#social-wrapper { +background: #3a432f; +border-top: 5px solid #1a2016; +} + +/* Scroller */ +#scroller a:hover { +color: #adff1e; +} +.scroller-bullet { +color: #b4ce8b; +} + + +/*************************** Navigation Menu ***************************/ + +/* Top Level Nav */ +#nav { +border-bottom: 1px solid #1a2016; +background: #272c1f; +} +#nav ul a:hover, +#nav ul a:hover { +color: #a9cc6b; +} +#nav ul > li { +border-color: #272c1f; +} +#nav ul > li:hover, +#nav ul li:hover .sub-menu { +background: #1e2318; +border-color: #1a2016; +border-bottom-color: #1e2318; +} + +/* Drop Down Menus */ +#nav .sub-menu { +background: #1e2318; +border-color: #1a2016; +} + + +/*************************** User Details ***************************/ + +#user-details a { +color: #b7ce8b; +} +#search-icon { +border-color: #272c1f; +} +#search-icon.active, +#search-icon:hover { +background-color: #1e2318; +border-color: #1a2016; +border-bottom-color: #1e2318; +} +#search-box { +background-color: #1e2318; +border-color: #1a2016; +} +#search-box input[type="submit"] { +background: #55692d; +} +#search-box input[type="submit"]:hover { +background: #2e3827; +} + + +/*************************** Footer ***************************/ + +/* Footer Widgets */ +.footer-widgets-border-left { +background: #31342d; +} + +/* Footer Bottom */ +#footer-bottom { +background-color: #2e3827; +border-top: 10px solid #1a2016; +color: #909787; +} +#footer-bottom a { +color: #b7bfaa; +} \ No newline at end of file diff --git a/wp-content/themes/score/lib/css/reset.css b/wp-content/themes/score/lib/css/reset.css new file mode 100644 index 0000000..0075c44 --- /dev/null +++ b/wp-content/themes/score/lib/css/reset.css @@ -0,0 +1,40 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, +del, dfn, font, img, ins, kbd, q, s, samp, +small, strike, sub, sup, tt, var, +dl, dt, dd, fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-weight: inherit; + font-style: inherit; + font-size: 100%; + font-family: inherit; + vertical-align: baseline; +} +/* remember to define focus styles! */ +:focus { + outline: 0; +} +body { + line-height: 1; +} +/* tables still need 'cellspacing="0"' in the markup */ +table { + border-collapse: separate; + border-spacing: 0; +} +caption, th, td { + text-align: left; + font-weight: normal; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ""; +} +blockquote, q { + quotes: "" ""; +} \ No newline at end of file diff --git a/wp-content/themes/score/lib/css/style-ie7.css b/wp-content/themes/score/lib/css/style-ie7.css new file mode 100644 index 0000000..2ac432b --- /dev/null +++ b/wp-content/themes/score/lib/css/style-ie7.css @@ -0,0 +1,99 @@ +/*************************** Navigation Menu ***************************/ + +/* Nav Wrapper */ +#nav { +padding: 0 25px 0 15px; +} + +/* Top Level Nav */ +.rtl #nav ul li { +float: left; +} + + +/*************************** User Details ***************************/ + +.rtl #user-details { +float: left; +} +.rtl #user-details .login-name { +float: left; +} +.rtl #user-details a { +float: left; +margin: 1px 0 0 15px; +} +#search-box { +width: 260px; +} + + +/*************************** Social Wrapper ***************************/ + +/* Social Icons */ +.rtl #social-icons a { +float: left; +} + + +/*************************** Slider ***************************/ + +.rtl .caroufredsel_wrapper { +margin-left: 30px !important; +left: 30px !important; +} + + +/*************************** Review Post ***************************/ + +/* User Score */ +.rtl .user-score { +margin-left: 40px; +} +.rtl .user-score-stars { +float: left; +} + + +/*************************** Widgets ***************************/ + +/* Search Widget */ +.rtl #search-panel { +float: left; +} +.rtl #search-icon { +float: left; +} +.rtl #searchbar { +float: left; +margin: 0 10px 0 0; +} +.rtl #searchsubmit { +float: left; +} + + +/*************************** GD Star Rating Plugin ***************************/ + +.gdthumb a, +.ratepost .starsbar a, +.rcmmpost .starsbar a, +.ratemulti .starsbar a, +.rcmmmulti .starsbar a, +.ratecmm .starsbar a, +.reviewcmm .starsbar a { +right: auto !important; +left: 0 !important; +} +.gdthumbtext, +.gdthumb, +.thumblock .ratingloader, +.raterleft, +.ratingtextmulti, +.ratingstarsinline { +float:left !important; +} +.raterright, +.ratingbutton { +float: right !important; +} \ No newline at end of file diff --git a/wp-content/themes/score/lib/images/background.png b/wp-content/themes/score/lib/images/background.png new file mode 100644 index 0000000..a028477 Binary files /dev/null and b/wp-content/themes/score/lib/images/background.png differ diff --git a/wp-content/themes/score/lib/images/bg-header-active.png b/wp-content/themes/score/lib/images/bg-header-active.png new file mode 100644 index 0000000..b074189 Binary files /dev/null and b/wp-content/themes/score/lib/images/bg-header-active.png differ diff --git a/wp-content/themes/score/lib/images/bg-header-overlay.png b/wp-content/themes/score/lib/images/bg-header-overlay.png new file mode 100644 index 0000000..85677c2 Binary files /dev/null and b/wp-content/themes/score/lib/images/bg-header-overlay.png differ diff --git a/wp-content/themes/score/lib/images/bg-header.png b/wp-content/themes/score/lib/images/bg-header.png new file mode 100644 index 0000000..109b913 Binary files /dev/null and b/wp-content/themes/score/lib/images/bg-header.png differ diff --git a/wp-content/themes/score/lib/images/bg-nav.png b/wp-content/themes/score/lib/images/bg-nav.png new file mode 100644 index 0000000..9f1184a Binary files /dev/null and b/wp-content/themes/score/lib/images/bg-nav.png differ diff --git a/wp-content/themes/score/lib/images/bg-search-btn.png b/wp-content/themes/score/lib/images/bg-search-btn.png new file mode 100644 index 0000000..d8dc467 Binary files /dev/null and b/wp-content/themes/score/lib/images/bg-search-btn.png differ diff --git a/wp-content/themes/score/lib/images/bg-search-inp.png b/wp-content/themes/score/lib/images/bg-search-inp.png new file mode 100644 index 0000000..aaaad90 Binary files /dev/null and b/wp-content/themes/score/lib/images/bg-search-inp.png differ diff --git a/wp-content/themes/score/lib/images/bg-search.png b/wp-content/themes/score/lib/images/bg-search.png new file mode 100644 index 0000000..0cd29e0 Binary files /dev/null and b/wp-content/themes/score/lib/images/bg-search.png differ diff --git a/wp-content/themes/score/lib/images/blank.gif b/wp-content/themes/score/lib/images/blank.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/wp-content/themes/score/lib/images/blank.gif differ diff --git a/wp-content/themes/score/lib/images/border.gif b/wp-content/themes/score/lib/images/border.gif new file mode 100644 index 0000000..e58b35b Binary files /dev/null and b/wp-content/themes/score/lib/images/border.gif differ diff --git a/wp-content/themes/score/lib/images/dedications-icon.png b/wp-content/themes/score/lib/images/dedications-icon.png new file mode 100644 index 0000000..45dc812 Binary files /dev/null and b/wp-content/themes/score/lib/images/dedications-icon.png differ diff --git a/wp-content/themes/score/lib/images/diag-left.png b/wp-content/themes/score/lib/images/diag-left.png new file mode 100644 index 0000000..7f8c2a5 Binary files /dev/null and b/wp-content/themes/score/lib/images/diag-left.png differ diff --git a/wp-content/themes/score/lib/images/diag-right.png b/wp-content/themes/score/lib/images/diag-right.png new file mode 100644 index 0000000..9ececbb Binary files /dev/null and b/wp-content/themes/score/lib/images/diag-right.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ad.png b/wp-content/themes/score/lib/images/flags/16/ad.png new file mode 100644 index 0000000..9031e27 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ad.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ae.png b/wp-content/themes/score/lib/images/flags/16/ae.png new file mode 100644 index 0000000..a3724db Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ae.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/af.png b/wp-content/themes/score/lib/images/flags/16/af.png new file mode 100644 index 0000000..484c991 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/af.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ag.png b/wp-content/themes/score/lib/images/flags/16/ag.png new file mode 100644 index 0000000..a1f6da3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ag.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ai.png b/wp-content/themes/score/lib/images/flags/16/ai.png new file mode 100644 index 0000000..fc2c726 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ai.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/al.png b/wp-content/themes/score/lib/images/flags/16/al.png new file mode 100644 index 0000000..68b6144 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/al.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/am.png b/wp-content/themes/score/lib/images/flags/16/am.png new file mode 100644 index 0000000..5f7dc7b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/am.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/an.png b/wp-content/themes/score/lib/images/flags/16/an.png new file mode 100644 index 0000000..163d334 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/an.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ao.png b/wp-content/themes/score/lib/images/flags/16/ao.png new file mode 100644 index 0000000..55dc94b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ao.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/aq.png b/wp-content/themes/score/lib/images/flags/16/aq.png new file mode 100644 index 0000000..d62f32c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/aq.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ar.png b/wp-content/themes/score/lib/images/flags/16/ar.png new file mode 100644 index 0000000..8acaf68 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ar.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/as.png b/wp-content/themes/score/lib/images/flags/16/as.png new file mode 100644 index 0000000..a7c5cd7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/as.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/at.png b/wp-content/themes/score/lib/images/flags/16/at.png new file mode 100644 index 0000000..2275896 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/at.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/au.png b/wp-content/themes/score/lib/images/flags/16/au.png new file mode 100644 index 0000000..a70c6b7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/au.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/aw.png b/wp-content/themes/score/lib/images/flags/16/aw.png new file mode 100644 index 0000000..3a0684b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/aw.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ax.png b/wp-content/themes/score/lib/images/flags/16/ax.png new file mode 100644 index 0000000..11ff130 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ax.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/az.png b/wp-content/themes/score/lib/images/flags/16/az.png new file mode 100644 index 0000000..8e90389 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/az.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ba.png b/wp-content/themes/score/lib/images/flags/16/ba.png new file mode 100644 index 0000000..040bacf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ba.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bb.png b/wp-content/themes/score/lib/images/flags/16/bb.png new file mode 100644 index 0000000..81ed981 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bb.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bd.png b/wp-content/themes/score/lib/images/flags/16/bd.png new file mode 100644 index 0000000..4781f69 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bd.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/be.png b/wp-content/themes/score/lib/images/flags/16/be.png new file mode 100644 index 0000000..eebb0c4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/be.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bf.png b/wp-content/themes/score/lib/images/flags/16/bf.png new file mode 100644 index 0000000..c8739b0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bf.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bg.png b/wp-content/themes/score/lib/images/flags/16/bg.png new file mode 100644 index 0000000..4579f08 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bg.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bh.png b/wp-content/themes/score/lib/images/flags/16/bh.png new file mode 100644 index 0000000..5e61b9c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bh.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bi.png b/wp-content/themes/score/lib/images/flags/16/bi.png new file mode 100644 index 0000000..8beac22 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bi.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bj.png b/wp-content/themes/score/lib/images/flags/16/bj.png new file mode 100644 index 0000000..8ce7547 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bj.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bl.png b/wp-content/themes/score/lib/images/flags/16/bl.png new file mode 100644 index 0000000..a9af18b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bl.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bm.png b/wp-content/themes/score/lib/images/flags/16/bm.png new file mode 100644 index 0000000..fa4699f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bn.png b/wp-content/themes/score/lib/images/flags/16/bn.png new file mode 100644 index 0000000..8afbe1b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bn.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bo.png b/wp-content/themes/score/lib/images/flags/16/bo.png new file mode 100644 index 0000000..d9b4a78 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bo.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/br.png b/wp-content/themes/score/lib/images/flags/16/br.png new file mode 100644 index 0000000..7daab39 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/br.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bs.png b/wp-content/themes/score/lib/images/flags/16/bs.png new file mode 100644 index 0000000..4fa2c4b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bs.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bt.png b/wp-content/themes/score/lib/images/flags/16/bt.png new file mode 100644 index 0000000..71b9ff5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bt.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bv.png b/wp-content/themes/score/lib/images/flags/16/bv.png new file mode 100644 index 0000000..f629dc4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bv.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bw.png b/wp-content/themes/score/lib/images/flags/16/bw.png new file mode 100644 index 0000000..551b48a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bw.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/by.png b/wp-content/themes/score/lib/images/flags/16/by.png new file mode 100644 index 0000000..b5a2e3c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/by.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/bz.png b/wp-content/themes/score/lib/images/flags/16/bz.png new file mode 100644 index 0000000..e150f0f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/bz.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ca.png b/wp-content/themes/score/lib/images/flags/16/ca.png new file mode 100644 index 0000000..1b90bea Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ca.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cc.png b/wp-content/themes/score/lib/images/flags/16/cc.png new file mode 100644 index 0000000..855c14a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cc.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cd.png b/wp-content/themes/score/lib/images/flags/16/cd.png new file mode 100644 index 0000000..5ac78b2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cd.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cf.png b/wp-content/themes/score/lib/images/flags/16/cf.png new file mode 100644 index 0000000..ee3a68c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cf.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cg.png b/wp-content/themes/score/lib/images/flags/16/cg.png new file mode 100644 index 0000000..cb1a22e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cg.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ch.png b/wp-content/themes/score/lib/images/flags/16/ch.png new file mode 100644 index 0000000..c8dd942 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ch.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ci.png b/wp-content/themes/score/lib/images/flags/16/ci.png new file mode 100644 index 0000000..b5f13a7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ci.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ck.png b/wp-content/themes/score/lib/images/flags/16/ck.png new file mode 100644 index 0000000..b24914b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ck.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cl.png b/wp-content/themes/score/lib/images/flags/16/cl.png new file mode 100644 index 0000000..4d9b548 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cl.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cm.png b/wp-content/themes/score/lib/images/flags/16/cm.png new file mode 100644 index 0000000..1ae42f2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cn.png b/wp-content/themes/score/lib/images/flags/16/cn.png new file mode 100644 index 0000000..173b181 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cn.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/co.png b/wp-content/themes/score/lib/images/flags/16/co.png new file mode 100644 index 0000000..30476c4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/co.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cr.png b/wp-content/themes/score/lib/images/flags/16/cr.png new file mode 100644 index 0000000..399b9c4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cu.png b/wp-content/themes/score/lib/images/flags/16/cu.png new file mode 100644 index 0000000..54ee2e5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cu.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cv.png b/wp-content/themes/score/lib/images/flags/16/cv.png new file mode 100644 index 0000000..fbf22df Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cv.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cx.png b/wp-content/themes/score/lib/images/flags/16/cx.png new file mode 100644 index 0000000..99595d7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cx.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cy.png b/wp-content/themes/score/lib/images/flags/16/cy.png new file mode 100644 index 0000000..9bbd09e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cy.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/cz.png b/wp-content/themes/score/lib/images/flags/16/cz.png new file mode 100644 index 0000000..3e855a5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/cz.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/de.png b/wp-content/themes/score/lib/images/flags/16/de.png new file mode 100644 index 0000000..63b86fd Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/de.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/dj.png b/wp-content/themes/score/lib/images/flags/16/dj.png new file mode 100644 index 0000000..335575c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/dj.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/dk.png b/wp-content/themes/score/lib/images/flags/16/dk.png new file mode 100644 index 0000000..63db11d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/dk.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/dm.png b/wp-content/themes/score/lib/images/flags/16/dm.png new file mode 100644 index 0000000..28291b7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/dm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/do.png b/wp-content/themes/score/lib/images/flags/16/do.png new file mode 100644 index 0000000..9434025 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/do.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/dz.png b/wp-content/themes/score/lib/images/flags/16/dz.png new file mode 100644 index 0000000..0d08e5f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/dz.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ec.png b/wp-content/themes/score/lib/images/flags/16/ec.png new file mode 100644 index 0000000..fcb9e33 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ec.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ee.png b/wp-content/themes/score/lib/images/flags/16/ee.png new file mode 100644 index 0000000..7cedf4a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ee.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/eg.png b/wp-content/themes/score/lib/images/flags/16/eg.png new file mode 100644 index 0000000..ebde625 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/eg.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/eh.png b/wp-content/themes/score/lib/images/flags/16/eh.png new file mode 100644 index 0000000..ea55ea9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/eh.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/er.png b/wp-content/themes/score/lib/images/flags/16/er.png new file mode 100644 index 0000000..af4d27c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/er.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/es.png b/wp-content/themes/score/lib/images/flags/16/es.png new file mode 100644 index 0000000..8d149a3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/es.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/et.png b/wp-content/themes/score/lib/images/flags/16/et.png new file mode 100644 index 0000000..059cbe4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/et.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/fi.png b/wp-content/themes/score/lib/images/flags/16/fi.png new file mode 100644 index 0000000..58ed9f6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/fi.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/fj.png b/wp-content/themes/score/lib/images/flags/16/fj.png new file mode 100644 index 0000000..c6fc3d3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/fj.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/fk.png b/wp-content/themes/score/lib/images/flags/16/fk.png new file mode 100644 index 0000000..727553a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/fk.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/fm.png b/wp-content/themes/score/lib/images/flags/16/fm.png new file mode 100644 index 0000000..66180a6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/fm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/fo.png b/wp-content/themes/score/lib/images/flags/16/fo.png new file mode 100644 index 0000000..b8de107 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/fo.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/fr.png b/wp-content/themes/score/lib/images/flags/16/fr.png new file mode 100644 index 0000000..3f16223 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/fr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ga.png b/wp-content/themes/score/lib/images/flags/16/ga.png new file mode 100644 index 0000000..dfc5594 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ga.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gb.png b/wp-content/themes/score/lib/images/flags/16/gb.png new file mode 100644 index 0000000..c7f7128 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gb.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gd.png b/wp-content/themes/score/lib/images/flags/16/gd.png new file mode 100644 index 0000000..f1ebd7e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gd.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ge.png b/wp-content/themes/score/lib/images/flags/16/ge.png new file mode 100644 index 0000000..168c0e3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ge.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gf.png b/wp-content/themes/score/lib/images/flags/16/gf.png new file mode 100644 index 0000000..a00fafa Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gf.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gg.png b/wp-content/themes/score/lib/images/flags/16/gg.png new file mode 100644 index 0000000..b42d0c7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gg.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gh.png b/wp-content/themes/score/lib/images/flags/16/gh.png new file mode 100644 index 0000000..0775464 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gh.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gi.png b/wp-content/themes/score/lib/images/flags/16/gi.png new file mode 100644 index 0000000..2df779c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gi.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gl.png b/wp-content/themes/score/lib/images/flags/16/gl.png new file mode 100644 index 0000000..aab099a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gl.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gm.png b/wp-content/themes/score/lib/images/flags/16/gm.png new file mode 100644 index 0000000..a8f96f7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gn.png b/wp-content/themes/score/lib/images/flags/16/gn.png new file mode 100644 index 0000000..aaa4254 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gn.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gp.png b/wp-content/themes/score/lib/images/flags/16/gp.png new file mode 100644 index 0000000..ca40788 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gp.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gq.png b/wp-content/themes/score/lib/images/flags/16/gq.png new file mode 100644 index 0000000..7b99fbc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gq.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gr.png b/wp-content/themes/score/lib/images/flags/16/gr.png new file mode 100644 index 0000000..d52e9bd Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gs.png b/wp-content/themes/score/lib/images/flags/16/gs.png new file mode 100644 index 0000000..44da102 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gs.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gt.png b/wp-content/themes/score/lib/images/flags/16/gt.png new file mode 100644 index 0000000..cc1f6e7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gt.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gu.png b/wp-content/themes/score/lib/images/flags/16/gu.png new file mode 100644 index 0000000..42fde74 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gu.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gw.png b/wp-content/themes/score/lib/images/flags/16/gw.png new file mode 100644 index 0000000..6d2cedf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gw.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/gy.png b/wp-content/themes/score/lib/images/flags/16/gy.png new file mode 100644 index 0000000..7b4ce14 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/gy.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/hk.png b/wp-content/themes/score/lib/images/flags/16/hk.png new file mode 100644 index 0000000..5adfced Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/hk.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/hm.png b/wp-content/themes/score/lib/images/flags/16/hm.png new file mode 100644 index 0000000..a70c6b7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/hm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/hn.png b/wp-content/themes/score/lib/images/flags/16/hn.png new file mode 100644 index 0000000..1d47eef Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/hn.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/hr.png b/wp-content/themes/score/lib/images/flags/16/hr.png new file mode 100644 index 0000000..31c06b4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/hr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ht.png b/wp-content/themes/score/lib/images/flags/16/ht.png new file mode 100644 index 0000000..a99c371 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ht.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/hu.png b/wp-content/themes/score/lib/images/flags/16/hu.png new file mode 100644 index 0000000..c59f41f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/hu.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/id.png b/wp-content/themes/score/lib/images/flags/16/id.png new file mode 100644 index 0000000..c66335f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/id.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ie.png b/wp-content/themes/score/lib/images/flags/16/ie.png new file mode 100644 index 0000000..f3b94ac Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ie.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/il.png b/wp-content/themes/score/lib/images/flags/16/il.png new file mode 100644 index 0000000..cdf7c53 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/il.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/im.png b/wp-content/themes/score/lib/images/flags/16/im.png new file mode 100644 index 0000000..34a95d1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/im.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/in.png b/wp-content/themes/score/lib/images/flags/16/in.png new file mode 100644 index 0000000..d90456d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/in.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/io.png b/wp-content/themes/score/lib/images/flags/16/io.png new file mode 100644 index 0000000..d950331 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/io.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/iq.png b/wp-content/themes/score/lib/images/flags/16/iq.png new file mode 100644 index 0000000..d5f361c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/iq.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ir.png b/wp-content/themes/score/lib/images/flags/16/ir.png new file mode 100644 index 0000000..79801bf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ir.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/is.png b/wp-content/themes/score/lib/images/flags/16/is.png new file mode 100644 index 0000000..7d79389 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/is.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/it.png b/wp-content/themes/score/lib/images/flags/16/it.png new file mode 100644 index 0000000..9d4ce40 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/it.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/je.png b/wp-content/themes/score/lib/images/flags/16/je.png new file mode 100644 index 0000000..9c4e53e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/je.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/jm.png b/wp-content/themes/score/lib/images/flags/16/jm.png new file mode 100644 index 0000000..6c59518 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/jm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/jo.png b/wp-content/themes/score/lib/images/flags/16/jo.png new file mode 100644 index 0000000..899a4a8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/jo.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/jp.png b/wp-content/themes/score/lib/images/flags/16/jp.png new file mode 100644 index 0000000..0ce0a47 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/jp.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ke.png b/wp-content/themes/score/lib/images/flags/16/ke.png new file mode 100644 index 0000000..92897f7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ke.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/kg.png b/wp-content/themes/score/lib/images/flags/16/kg.png new file mode 100644 index 0000000..8406fe3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/kg.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/kh.png b/wp-content/themes/score/lib/images/flags/16/kh.png new file mode 100644 index 0000000..dc2e557 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/kh.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ki.png b/wp-content/themes/score/lib/images/flags/16/ki.png new file mode 100644 index 0000000..4423050 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ki.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/km.png b/wp-content/themes/score/lib/images/flags/16/km.png new file mode 100644 index 0000000..d3fb7d9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/km.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/kn.png b/wp-content/themes/score/lib/images/flags/16/kn.png new file mode 100644 index 0000000..febac13 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/kn.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/kp.png b/wp-content/themes/score/lib/images/flags/16/kp.png new file mode 100644 index 0000000..1bbe095 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/kp.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/kr.png b/wp-content/themes/score/lib/images/flags/16/kr.png new file mode 100644 index 0000000..4a4f8fb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/kr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/kw.png b/wp-content/themes/score/lib/images/flags/16/kw.png new file mode 100644 index 0000000..727c69b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/kw.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ky.png b/wp-content/themes/score/lib/images/flags/16/ky.png new file mode 100644 index 0000000..550f815 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ky.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/kz.png b/wp-content/themes/score/lib/images/flags/16/kz.png new file mode 100644 index 0000000..ca599c8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/kz.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/la.png b/wp-content/themes/score/lib/images/flags/16/la.png new file mode 100644 index 0000000..4e3ce0b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/la.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/lb.png b/wp-content/themes/score/lib/images/flags/16/lb.png new file mode 100644 index 0000000..08b6dd0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/lb.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/lc.png b/wp-content/themes/score/lib/images/flags/16/lc.png new file mode 100644 index 0000000..cf701b2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/lc.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/li.png b/wp-content/themes/score/lib/images/flags/16/li.png new file mode 100644 index 0000000..d99a12a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/li.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/lk.png b/wp-content/themes/score/lib/images/flags/16/lk.png new file mode 100644 index 0000000..4a3aa64 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/lk.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/lr.png b/wp-content/themes/score/lib/images/flags/16/lr.png new file mode 100644 index 0000000..026ebcb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/lr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ls.png b/wp-content/themes/score/lib/images/flags/16/ls.png new file mode 100644 index 0000000..5865b82 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ls.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/lt.png b/wp-content/themes/score/lib/images/flags/16/lt.png new file mode 100644 index 0000000..714784d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/lt.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/lu.png b/wp-content/themes/score/lib/images/flags/16/lu.png new file mode 100644 index 0000000..dcd2eda Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/lu.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/lv.png b/wp-content/themes/score/lib/images/flags/16/lv.png new file mode 100644 index 0000000..3b2c2c8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/lv.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ly.png b/wp-content/themes/score/lib/images/flags/16/ly.png new file mode 100644 index 0000000..dd7dbbb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ly.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ma.png b/wp-content/themes/score/lib/images/flags/16/ma.png new file mode 100644 index 0000000..cccbe6d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ma.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mc.png b/wp-content/themes/score/lib/images/flags/16/mc.png new file mode 100644 index 0000000..c66335f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mc.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/md.png b/wp-content/themes/score/lib/images/flags/16/md.png new file mode 100644 index 0000000..92c934d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/md.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/me.png b/wp-content/themes/score/lib/images/flags/16/me.png new file mode 100644 index 0000000..72a4780 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/me.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mf.png b/wp-content/themes/score/lib/images/flags/16/mf.png new file mode 100644 index 0000000..f1d8e4a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mf.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mg.png b/wp-content/themes/score/lib/images/flags/16/mg.png new file mode 100644 index 0000000..be1ce87 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mg.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mh.png b/wp-content/themes/score/lib/images/flags/16/mh.png new file mode 100644 index 0000000..dcc39b1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mh.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mk.png b/wp-content/themes/score/lib/images/flags/16/mk.png new file mode 100644 index 0000000..253d929 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mk.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ml.png b/wp-content/themes/score/lib/images/flags/16/ml.png new file mode 100644 index 0000000..2642d9e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ml.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mm.png b/wp-content/themes/score/lib/images/flags/16/mm.png new file mode 100644 index 0000000..7e58eb7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mn.png b/wp-content/themes/score/lib/images/flags/16/mn.png new file mode 100644 index 0000000..920ede4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mn.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mo.png b/wp-content/themes/score/lib/images/flags/16/mo.png new file mode 100644 index 0000000..e478154 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mo.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mp.png b/wp-content/themes/score/lib/images/flags/16/mp.png new file mode 100644 index 0000000..940a669 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mp.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mq.png b/wp-content/themes/score/lib/images/flags/16/mq.png new file mode 100644 index 0000000..44570c3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mq.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mr.png b/wp-content/themes/score/lib/images/flags/16/mr.png new file mode 100644 index 0000000..245ca35 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ms.png b/wp-content/themes/score/lib/images/flags/16/ms.png new file mode 100644 index 0000000..679cdad Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ms.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mt.png b/wp-content/themes/score/lib/images/flags/16/mt.png new file mode 100644 index 0000000..d94b9e7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mt.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mu.png b/wp-content/themes/score/lib/images/flags/16/mu.png new file mode 100644 index 0000000..fa0aaa9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mu.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mv.png b/wp-content/themes/score/lib/images/flags/16/mv.png new file mode 100644 index 0000000..a294159 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mv.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mw.png b/wp-content/themes/score/lib/images/flags/16/mw.png new file mode 100644 index 0000000..51b5e31 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mw.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mx.png b/wp-content/themes/score/lib/images/flags/16/mx.png new file mode 100644 index 0000000..c1bd33b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mx.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/my.png b/wp-content/themes/score/lib/images/flags/16/my.png new file mode 100644 index 0000000..4498960 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/my.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/mz.png b/wp-content/themes/score/lib/images/flags/16/mz.png new file mode 100644 index 0000000..e8d9b6a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/mz.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/na.png b/wp-content/themes/score/lib/images/flags/16/na.png new file mode 100644 index 0000000..61cf1e0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/na.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/nc.png b/wp-content/themes/score/lib/images/flags/16/nc.png new file mode 100644 index 0000000..7dc765d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/nc.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ne.png b/wp-content/themes/score/lib/images/flags/16/ne.png new file mode 100644 index 0000000..31b8e43 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ne.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/nf.png b/wp-content/themes/score/lib/images/flags/16/nf.png new file mode 100644 index 0000000..f293913 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/nf.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ng.png b/wp-content/themes/score/lib/images/flags/16/ng.png new file mode 100644 index 0000000..7b30c22 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ng.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ni.png b/wp-content/themes/score/lib/images/flags/16/ni.png new file mode 100644 index 0000000..7247d83 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ni.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/nl.png b/wp-content/themes/score/lib/images/flags/16/nl.png new file mode 100644 index 0000000..10e8ea0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/nl.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/no.png b/wp-content/themes/score/lib/images/flags/16/no.png new file mode 100644 index 0000000..f629dc4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/no.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/none.png b/wp-content/themes/score/lib/images/flags/16/none.png new file mode 100644 index 0000000..88042d2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/none.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/np.png b/wp-content/themes/score/lib/images/flags/16/np.png new file mode 100644 index 0000000..6dfe9ea Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/np.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/nr.png b/wp-content/themes/score/lib/images/flags/16/nr.png new file mode 100644 index 0000000..8cffaca Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/nr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/nu.png b/wp-content/themes/score/lib/images/flags/16/nu.png new file mode 100644 index 0000000..60be46a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/nu.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/nz.png b/wp-content/themes/score/lib/images/flags/16/nz.png new file mode 100644 index 0000000..810c8bc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/nz.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/om.png b/wp-content/themes/score/lib/images/flags/16/om.png new file mode 100644 index 0000000..282aeed Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/om.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pa.png b/wp-content/themes/score/lib/images/flags/16/pa.png new file mode 100644 index 0000000..81d3fd5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pa.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pe.png b/wp-content/themes/score/lib/images/flags/16/pe.png new file mode 100644 index 0000000..8d2691e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pe.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pf.png b/wp-content/themes/score/lib/images/flags/16/pf.png new file mode 100644 index 0000000..5f55118 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pf.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pg.png b/wp-content/themes/score/lib/images/flags/16/pg.png new file mode 100644 index 0000000..3f8143f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pg.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ph.png b/wp-content/themes/score/lib/images/flags/16/ph.png new file mode 100644 index 0000000..2225029 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ph.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pk.png b/wp-content/themes/score/lib/images/flags/16/pk.png new file mode 100644 index 0000000..e9192a6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pk.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pl.png b/wp-content/themes/score/lib/images/flags/16/pl.png new file mode 100644 index 0000000..079871b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pl.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pm.png b/wp-content/themes/score/lib/images/flags/16/pm.png new file mode 100644 index 0000000..05268f3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pn.png b/wp-content/themes/score/lib/images/flags/16/pn.png new file mode 100644 index 0000000..39dd994 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pn.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pr.png b/wp-content/themes/score/lib/images/flags/16/pr.png new file mode 100644 index 0000000..2469b57 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ps.png b/wp-content/themes/score/lib/images/flags/16/ps.png new file mode 100644 index 0000000..364ddf8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ps.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pt.png b/wp-content/themes/score/lib/images/flags/16/pt.png new file mode 100644 index 0000000..7a8ca65 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pt.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/pw.png b/wp-content/themes/score/lib/images/flags/16/pw.png new file mode 100644 index 0000000..f4425f7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/pw.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/py.png b/wp-content/themes/score/lib/images/flags/16/py.png new file mode 100644 index 0000000..21607d3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/py.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/qa.png b/wp-content/themes/score/lib/images/flags/16/qa.png new file mode 100644 index 0000000..6442606 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/qa.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/re.png b/wp-content/themes/score/lib/images/flags/16/re.png new file mode 100644 index 0000000..129cbb5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/re.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ro.png b/wp-content/themes/score/lib/images/flags/16/ro.png new file mode 100644 index 0000000..b7a4b87 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ro.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/rs.png b/wp-content/themes/score/lib/images/flags/16/rs.png new file mode 100644 index 0000000..ba8e9b5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/rs.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ru.png b/wp-content/themes/score/lib/images/flags/16/ru.png new file mode 100644 index 0000000..30459ae Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ru.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/rw.png b/wp-content/themes/score/lib/images/flags/16/rw.png new file mode 100644 index 0000000..f593964 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/rw.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sa.png b/wp-content/themes/score/lib/images/flags/16/sa.png new file mode 100644 index 0000000..1b49e61 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sa.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sb.png b/wp-content/themes/score/lib/images/flags/16/sb.png new file mode 100644 index 0000000..833d9c9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sb.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sc.png b/wp-content/themes/score/lib/images/flags/16/sc.png new file mode 100644 index 0000000..c9c87a2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sc.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sd.png b/wp-content/themes/score/lib/images/flags/16/sd.png new file mode 100644 index 0000000..4a54678 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sd.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/se.png b/wp-content/themes/score/lib/images/flags/16/se.png new file mode 100644 index 0000000..22f6e7e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/se.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sg.png b/wp-content/themes/score/lib/images/flags/16/sg.png new file mode 100644 index 0000000..aceea6d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sg.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sh.png b/wp-content/themes/score/lib/images/flags/16/sh.png new file mode 100644 index 0000000..06555e5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sh.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/si.png b/wp-content/themes/score/lib/images/flags/16/si.png new file mode 100644 index 0000000..2bc05e1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/si.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sj.png b/wp-content/themes/score/lib/images/flags/16/sj.png new file mode 100644 index 0000000..f629dc4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sj.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sk.png b/wp-content/themes/score/lib/images/flags/16/sk.png new file mode 100644 index 0000000..6c717be Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sk.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sl.png b/wp-content/themes/score/lib/images/flags/16/sl.png new file mode 100644 index 0000000..3daf482 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sl.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sm.png b/wp-content/themes/score/lib/images/flags/16/sm.png new file mode 100644 index 0000000..88cca4d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sn.png b/wp-content/themes/score/lib/images/flags/16/sn.png new file mode 100644 index 0000000..ebd84c0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sn.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/so.png b/wp-content/themes/score/lib/images/flags/16/so.png new file mode 100644 index 0000000..b5cd16e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/so.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sr.png b/wp-content/themes/score/lib/images/flags/16/sr.png new file mode 100644 index 0000000..2f2a77b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/st.png b/wp-content/themes/score/lib/images/flags/16/st.png new file mode 100644 index 0000000..9279a37 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/st.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sv.png b/wp-content/themes/score/lib/images/flags/16/sv.png new file mode 100644 index 0000000..ccb8882 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sv.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sy.png b/wp-content/themes/score/lib/images/flags/16/sy.png new file mode 100644 index 0000000..0b765cc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sy.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/sz.png b/wp-content/themes/score/lib/images/flags/16/sz.png new file mode 100644 index 0000000..1ec4f63 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/sz.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tc.png b/wp-content/themes/score/lib/images/flags/16/tc.png new file mode 100644 index 0000000..e476d69 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tc.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/td.png b/wp-content/themes/score/lib/images/flags/16/td.png new file mode 100644 index 0000000..cace22f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/td.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tf.png b/wp-content/themes/score/lib/images/flags/16/tf.png new file mode 100644 index 0000000..473b76f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tf.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tg.png b/wp-content/themes/score/lib/images/flags/16/tg.png new file mode 100644 index 0000000..7e9fd29 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tg.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/th.png b/wp-content/themes/score/lib/images/flags/16/th.png new file mode 100644 index 0000000..643665a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/th.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tj.png b/wp-content/themes/score/lib/images/flags/16/tj.png new file mode 100644 index 0000000..1270d45 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tj.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tk.png b/wp-content/themes/score/lib/images/flags/16/tk.png new file mode 100644 index 0000000..18cd53b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tk.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tl.png b/wp-content/themes/score/lib/images/flags/16/tl.png new file mode 100644 index 0000000..bb5e4d1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tl.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tm.png b/wp-content/themes/score/lib/images/flags/16/tm.png new file mode 100644 index 0000000..0d9791e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tn.png b/wp-content/themes/score/lib/images/flags/16/tn.png new file mode 100644 index 0000000..96549ae Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tn.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/to.png b/wp-content/themes/score/lib/images/flags/16/to.png new file mode 100644 index 0000000..1914b39 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/to.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tr.png b/wp-content/themes/score/lib/images/flags/16/tr.png new file mode 100644 index 0000000..668f5f7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tr.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tt.png b/wp-content/themes/score/lib/images/flags/16/tt.png new file mode 100644 index 0000000..655e6eb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tt.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tv.png b/wp-content/themes/score/lib/images/flags/16/tv.png new file mode 100644 index 0000000..e25dc16 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tv.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tw.png b/wp-content/themes/score/lib/images/flags/16/tw.png new file mode 100644 index 0000000..30f98a1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tw.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/tz.png b/wp-content/themes/score/lib/images/flags/16/tz.png new file mode 100644 index 0000000..c7a2ec8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/tz.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ua.png b/wp-content/themes/score/lib/images/flags/16/ua.png new file mode 100644 index 0000000..9b05e4c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ua.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ug.png b/wp-content/themes/score/lib/images/flags/16/ug.png new file mode 100644 index 0000000..3fc5255 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ug.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/um.png b/wp-content/themes/score/lib/images/flags/16/um.png new file mode 100644 index 0000000..09c94a0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/um.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/us.png b/wp-content/themes/score/lib/images/flags/16/us.png new file mode 100644 index 0000000..09c94a0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/us.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/uy.png b/wp-content/themes/score/lib/images/flags/16/uy.png new file mode 100644 index 0000000..bbd1f1a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/uy.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/uz.png b/wp-content/themes/score/lib/images/flags/16/uz.png new file mode 100644 index 0000000..ff9e70b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/uz.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/va.png b/wp-content/themes/score/lib/images/flags/16/va.png new file mode 100644 index 0000000..fef6194 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/va.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/vc.png b/wp-content/themes/score/lib/images/flags/16/vc.png new file mode 100644 index 0000000..8de9ab8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/vc.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ve.png b/wp-content/themes/score/lib/images/flags/16/ve.png new file mode 100644 index 0000000..e8af855 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ve.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/vg.png b/wp-content/themes/score/lib/images/flags/16/vg.png new file mode 100644 index 0000000..c751c25 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/vg.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/vi.png b/wp-content/themes/score/lib/images/flags/16/vi.png new file mode 100644 index 0000000..fe75334 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/vi.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/vn.png b/wp-content/themes/score/lib/images/flags/16/vn.png new file mode 100644 index 0000000..dedeb75 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/vn.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/vu.png b/wp-content/themes/score/lib/images/flags/16/vu.png new file mode 100644 index 0000000..0b26c42 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/vu.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/wf.png b/wp-content/themes/score/lib/images/flags/16/wf.png new file mode 100644 index 0000000..5475d21 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/wf.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ws.png b/wp-content/themes/score/lib/images/flags/16/ws.png new file mode 100644 index 0000000..e1d7730 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ws.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/ye.png b/wp-content/themes/score/lib/images/flags/16/ye.png new file mode 100644 index 0000000..f2902a3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/ye.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/yt.png b/wp-content/themes/score/lib/images/flags/16/yt.png new file mode 100644 index 0000000..0e81382 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/yt.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/za.png b/wp-content/themes/score/lib/images/flags/16/za.png new file mode 100644 index 0000000..3ed5ce8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/za.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/zm.png b/wp-content/themes/score/lib/images/flags/16/zm.png new file mode 100644 index 0000000..918653f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/zm.png differ diff --git a/wp-content/themes/score/lib/images/flags/16/zw.png b/wp-content/themes/score/lib/images/flags/16/zw.png new file mode 100644 index 0000000..ac356e0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/16/zw.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ad.png b/wp-content/themes/score/lib/images/flags/24/ad.png new file mode 100644 index 0000000..6345f66 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ad.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ae.png b/wp-content/themes/score/lib/images/flags/24/ae.png new file mode 100644 index 0000000..6c2a7db Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ae.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/af.png b/wp-content/themes/score/lib/images/flags/24/af.png new file mode 100644 index 0000000..cd325bf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/af.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ag.png b/wp-content/themes/score/lib/images/flags/24/ag.png new file mode 100644 index 0000000..5068b43 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ag.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ai.png b/wp-content/themes/score/lib/images/flags/24/ai.png new file mode 100644 index 0000000..a66d2f1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ai.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/al.png b/wp-content/themes/score/lib/images/flags/24/al.png new file mode 100644 index 0000000..d5aacd9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/al.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/am.png b/wp-content/themes/score/lib/images/flags/24/am.png new file mode 100644 index 0000000..5864fc8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/am.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/an.png b/wp-content/themes/score/lib/images/flags/24/an.png new file mode 100644 index 0000000..febec63 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/an.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ao.png b/wp-content/themes/score/lib/images/flags/24/ao.png new file mode 100644 index 0000000..277f940 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ao.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/aq.png b/wp-content/themes/score/lib/images/flags/24/aq.png new file mode 100644 index 0000000..16bb335 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/aq.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ar.png b/wp-content/themes/score/lib/images/flags/24/ar.png new file mode 100644 index 0000000..5565e71 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ar.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/as.png b/wp-content/themes/score/lib/images/flags/24/as.png new file mode 100644 index 0000000..ccd153e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/as.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/at.png b/wp-content/themes/score/lib/images/flags/24/at.png new file mode 100644 index 0000000..32ec53b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/at.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/au.png b/wp-content/themes/score/lib/images/flags/24/au.png new file mode 100644 index 0000000..b2fcce5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/au.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/aw.png b/wp-content/themes/score/lib/images/flags/24/aw.png new file mode 100644 index 0000000..d6eb418 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/aw.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ax.png b/wp-content/themes/score/lib/images/flags/24/ax.png new file mode 100644 index 0000000..448ba83 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ax.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/az.png b/wp-content/themes/score/lib/images/flags/24/az.png new file mode 100644 index 0000000..d76fab8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/az.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ba.png b/wp-content/themes/score/lib/images/flags/24/ba.png new file mode 100644 index 0000000..16da3c1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ba.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bb.png b/wp-content/themes/score/lib/images/flags/24/bb.png new file mode 100644 index 0000000..1fd3d82 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bb.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bd.png b/wp-content/themes/score/lib/images/flags/24/bd.png new file mode 100644 index 0000000..accbbe3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bd.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/be.png b/wp-content/themes/score/lib/images/flags/24/be.png new file mode 100644 index 0000000..5b53402 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/be.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bf.png b/wp-content/themes/score/lib/images/flags/24/bf.png new file mode 100644 index 0000000..ad99066 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bf.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bg.png b/wp-content/themes/score/lib/images/flags/24/bg.png new file mode 100644 index 0000000..ef11314 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bg.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bh.png b/wp-content/themes/score/lib/images/flags/24/bh.png new file mode 100644 index 0000000..b82eb7a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bh.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bi.png b/wp-content/themes/score/lib/images/flags/24/bi.png new file mode 100644 index 0000000..5dc84b8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bi.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bj.png b/wp-content/themes/score/lib/images/flags/24/bj.png new file mode 100644 index 0000000..0871ec9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bj.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bl.png b/wp-content/themes/score/lib/images/flags/24/bl.png new file mode 100644 index 0000000..2d3e743 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bl.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bm.png b/wp-content/themes/score/lib/images/flags/24/bm.png new file mode 100644 index 0000000..6da6c00 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bn.png b/wp-content/themes/score/lib/images/flags/24/bn.png new file mode 100644 index 0000000..7197555 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bn.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bo.png b/wp-content/themes/score/lib/images/flags/24/bo.png new file mode 100644 index 0000000..8e91310 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bo.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/br.png b/wp-content/themes/score/lib/images/flags/24/br.png new file mode 100644 index 0000000..78c57de Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/br.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bs.png b/wp-content/themes/score/lib/images/flags/24/bs.png new file mode 100644 index 0000000..7dfc7b3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bs.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bt.png b/wp-content/themes/score/lib/images/flags/24/bt.png new file mode 100644 index 0000000..652d128 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bt.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bv.png b/wp-content/themes/score/lib/images/flags/24/bv.png new file mode 100644 index 0000000..60939dc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bv.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bw.png b/wp-content/themes/score/lib/images/flags/24/bw.png new file mode 100644 index 0000000..cd210e9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bw.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/by.png b/wp-content/themes/score/lib/images/flags/24/by.png new file mode 100644 index 0000000..b611880 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/by.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/bz.png b/wp-content/themes/score/lib/images/flags/24/bz.png new file mode 100644 index 0000000..08726c8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/bz.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ca.png b/wp-content/themes/score/lib/images/flags/24/ca.png new file mode 100644 index 0000000..bc3371c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ca.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cc.png b/wp-content/themes/score/lib/images/flags/24/cc.png new file mode 100644 index 0000000..c5bef90 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cc.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cd.png b/wp-content/themes/score/lib/images/flags/24/cd.png new file mode 100644 index 0000000..97be18e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cd.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cf.png b/wp-content/themes/score/lib/images/flags/24/cf.png new file mode 100644 index 0000000..6266f40 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cf.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cg.png b/wp-content/themes/score/lib/images/flags/24/cg.png new file mode 100644 index 0000000..1e37c7d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cg.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ch.png b/wp-content/themes/score/lib/images/flags/24/ch.png new file mode 100644 index 0000000..0732b09 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ch.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ci.png b/wp-content/themes/score/lib/images/flags/24/ci.png new file mode 100644 index 0000000..b40bf0a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ci.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ck.png b/wp-content/themes/score/lib/images/flags/24/ck.png new file mode 100644 index 0000000..e4b1773 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ck.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cl.png b/wp-content/themes/score/lib/images/flags/24/cl.png new file mode 100644 index 0000000..4d149df Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cl.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cm.png b/wp-content/themes/score/lib/images/flags/24/cm.png new file mode 100644 index 0000000..3560c7b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cn.png b/wp-content/themes/score/lib/images/flags/24/cn.png new file mode 100644 index 0000000..4836b0f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cn.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/co.png b/wp-content/themes/score/lib/images/flags/24/co.png new file mode 100644 index 0000000..4823ad0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/co.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cr.png b/wp-content/themes/score/lib/images/flags/24/cr.png new file mode 100644 index 0000000..f1a9783 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cu.png b/wp-content/themes/score/lib/images/flags/24/cu.png new file mode 100644 index 0000000..3381739 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cu.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cv.png b/wp-content/themes/score/lib/images/flags/24/cv.png new file mode 100644 index 0000000..66c8f07 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cv.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cx.png b/wp-content/themes/score/lib/images/flags/24/cx.png new file mode 100644 index 0000000..d99fa57 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cx.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cy.png b/wp-content/themes/score/lib/images/flags/24/cy.png new file mode 100644 index 0000000..18847ce Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cy.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/cz.png b/wp-content/themes/score/lib/images/flags/24/cz.png new file mode 100644 index 0000000..9e2cef2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/cz.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/de.png b/wp-content/themes/score/lib/images/flags/24/de.png new file mode 100644 index 0000000..e840992 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/de.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/dj.png b/wp-content/themes/score/lib/images/flags/24/dj.png new file mode 100644 index 0000000..3162e23 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/dj.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/dk.png b/wp-content/themes/score/lib/images/flags/24/dk.png new file mode 100644 index 0000000..cab553d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/dk.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/dm.png b/wp-content/themes/score/lib/images/flags/24/dm.png new file mode 100644 index 0000000..251d572 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/dm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/do.png b/wp-content/themes/score/lib/images/flags/24/do.png new file mode 100644 index 0000000..c1e310c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/do.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/dz.png b/wp-content/themes/score/lib/images/flags/24/dz.png new file mode 100644 index 0000000..187aa0f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/dz.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ec.png b/wp-content/themes/score/lib/images/flags/24/ec.png new file mode 100644 index 0000000..79ddc25 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ec.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ee.png b/wp-content/themes/score/lib/images/flags/24/ee.png new file mode 100644 index 0000000..20bfc87 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ee.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/eg.png b/wp-content/themes/score/lib/images/flags/24/eg.png new file mode 100644 index 0000000..d96fd30 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/eg.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/eh.png b/wp-content/themes/score/lib/images/flags/24/eh.png new file mode 100644 index 0000000..ce9ee83 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/eh.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/er.png b/wp-content/themes/score/lib/images/flags/24/er.png new file mode 100644 index 0000000..87bc7b0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/er.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/es.png b/wp-content/themes/score/lib/images/flags/24/es.png new file mode 100644 index 0000000..2fe8daf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/es.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/et.png b/wp-content/themes/score/lib/images/flags/24/et.png new file mode 100644 index 0000000..e5e5c73 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/et.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/fi.png b/wp-content/themes/score/lib/images/flags/24/fi.png new file mode 100644 index 0000000..453781e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/fi.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/fj.png b/wp-content/themes/score/lib/images/flags/24/fj.png new file mode 100644 index 0000000..51aa3f1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/fj.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/fk.png b/wp-content/themes/score/lib/images/flags/24/fk.png new file mode 100644 index 0000000..ee59b26 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/fk.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/fm.png b/wp-content/themes/score/lib/images/flags/24/fm.png new file mode 100644 index 0000000..7282468 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/fm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/fo.png b/wp-content/themes/score/lib/images/flags/24/fo.png new file mode 100644 index 0000000..95da083 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/fo.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/fr.png b/wp-content/themes/score/lib/images/flags/24/fr.png new file mode 100644 index 0000000..fd40c41 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/fr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ga.png b/wp-content/themes/score/lib/images/flags/24/ga.png new file mode 100644 index 0000000..b8781c4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ga.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gb.png b/wp-content/themes/score/lib/images/flags/24/gb.png new file mode 100644 index 0000000..51a27cf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gb.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gd.png b/wp-content/themes/score/lib/images/flags/24/gd.png new file mode 100644 index 0000000..4c4f8c0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gd.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ge.png b/wp-content/themes/score/lib/images/flags/24/ge.png new file mode 100644 index 0000000..3f5baa6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ge.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gf.png b/wp-content/themes/score/lib/images/flags/24/gf.png new file mode 100644 index 0000000..dbd5b7a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gf.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gg.png b/wp-content/themes/score/lib/images/flags/24/gg.png new file mode 100644 index 0000000..e3e4f54 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gg.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gh.png b/wp-content/themes/score/lib/images/flags/24/gh.png new file mode 100644 index 0000000..47d5cf0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gh.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gi.png b/wp-content/themes/score/lib/images/flags/24/gi.png new file mode 100644 index 0000000..0cd716f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gi.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gl.png b/wp-content/themes/score/lib/images/flags/24/gl.png new file mode 100644 index 0000000..bc12e81 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gl.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gm.png b/wp-content/themes/score/lib/images/flags/24/gm.png new file mode 100644 index 0000000..2c9b4e1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gn.png b/wp-content/themes/score/lib/images/flags/24/gn.png new file mode 100644 index 0000000..37b9383 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gn.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gp.png b/wp-content/themes/score/lib/images/flags/24/gp.png new file mode 100644 index 0000000..7ae1c22 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gp.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gq.png b/wp-content/themes/score/lib/images/flags/24/gq.png new file mode 100644 index 0000000..9064e45 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gq.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gr.png b/wp-content/themes/score/lib/images/flags/24/gr.png new file mode 100644 index 0000000..674ef07 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gs.png b/wp-content/themes/score/lib/images/flags/24/gs.png new file mode 100644 index 0000000..967cd3d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gs.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gt.png b/wp-content/themes/score/lib/images/flags/24/gt.png new file mode 100644 index 0000000..b9c564c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gt.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gu.png b/wp-content/themes/score/lib/images/flags/24/gu.png new file mode 100644 index 0000000..d92fabc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gu.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gw.png b/wp-content/themes/score/lib/images/flags/24/gw.png new file mode 100644 index 0000000..3f5dc70 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gw.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/gy.png b/wp-content/themes/score/lib/images/flags/24/gy.png new file mode 100644 index 0000000..25e4f4b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/gy.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/hk.png b/wp-content/themes/score/lib/images/flags/24/hk.png new file mode 100644 index 0000000..30e9028 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/hk.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/hm.png b/wp-content/themes/score/lib/images/flags/24/hm.png new file mode 100644 index 0000000..7bfbdd3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/hm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/hn.png b/wp-content/themes/score/lib/images/flags/24/hn.png new file mode 100644 index 0000000..c1d7bcb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/hn.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/hr.png b/wp-content/themes/score/lib/images/flags/24/hr.png new file mode 100644 index 0000000..5cca39e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/hr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ht.png b/wp-content/themes/score/lib/images/flags/24/ht.png new file mode 100644 index 0000000..c3fa0f7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ht.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/hu.png b/wp-content/themes/score/lib/images/flags/24/hu.png new file mode 100644 index 0000000..5d23ba4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/hu.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/id.png b/wp-content/themes/score/lib/images/flags/24/id.png new file mode 100644 index 0000000..704c21a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/id.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ie.png b/wp-content/themes/score/lib/images/flags/24/ie.png new file mode 100644 index 0000000..505964b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ie.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/il.png b/wp-content/themes/score/lib/images/flags/24/il.png new file mode 100644 index 0000000..39ade9b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/il.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/im.png b/wp-content/themes/score/lib/images/flags/24/im.png new file mode 100644 index 0000000..d3e8da7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/im.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/in.png b/wp-content/themes/score/lib/images/flags/24/in.png new file mode 100644 index 0000000..2467d41 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/in.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/io.png b/wp-content/themes/score/lib/images/flags/24/io.png new file mode 100644 index 0000000..15975fe Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/io.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/iq.png b/wp-content/themes/score/lib/images/flags/24/iq.png new file mode 100644 index 0000000..a44a93b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/iq.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ir.png b/wp-content/themes/score/lib/images/flags/24/ir.png new file mode 100644 index 0000000..c76443b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ir.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/is.png b/wp-content/themes/score/lib/images/flags/24/is.png new file mode 100644 index 0000000..40da30f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/is.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/it.png b/wp-content/themes/score/lib/images/flags/24/it.png new file mode 100644 index 0000000..5951ae0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/it.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/je.png b/wp-content/themes/score/lib/images/flags/24/je.png new file mode 100644 index 0000000..03786ea Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/je.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/jm.png b/wp-content/themes/score/lib/images/flags/24/jm.png new file mode 100644 index 0000000..8462552 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/jm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/jo.png b/wp-content/themes/score/lib/images/flags/24/jo.png new file mode 100644 index 0000000..4a0fa27 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/jo.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/jp.png b/wp-content/themes/score/lib/images/flags/24/jp.png new file mode 100644 index 0000000..0210320 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/jp.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ke.png b/wp-content/themes/score/lib/images/flags/24/ke.png new file mode 100644 index 0000000..9163852 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ke.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/kg.png b/wp-content/themes/score/lib/images/flags/24/kg.png new file mode 100644 index 0000000..db8061f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/kg.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/kh.png b/wp-content/themes/score/lib/images/flags/24/kh.png new file mode 100644 index 0000000..5f4321d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/kh.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ki.png b/wp-content/themes/score/lib/images/flags/24/ki.png new file mode 100644 index 0000000..c91aa3a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ki.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/km.png b/wp-content/themes/score/lib/images/flags/24/km.png new file mode 100644 index 0000000..0dc3c09 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/km.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/kn.png b/wp-content/themes/score/lib/images/flags/24/kn.png new file mode 100644 index 0000000..9953aac Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/kn.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/kp.png b/wp-content/themes/score/lib/images/flags/24/kp.png new file mode 100644 index 0000000..4524ac6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/kp.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/kr.png b/wp-content/themes/score/lib/images/flags/24/kr.png new file mode 100644 index 0000000..321f5dc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/kr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/kw.png b/wp-content/themes/score/lib/images/flags/24/kw.png new file mode 100644 index 0000000..e8c7323 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/kw.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ky.png b/wp-content/themes/score/lib/images/flags/24/ky.png new file mode 100644 index 0000000..9c91821 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ky.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/kz.png b/wp-content/themes/score/lib/images/flags/24/kz.png new file mode 100644 index 0000000..5a05cf2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/kz.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/la.png b/wp-content/themes/score/lib/images/flags/24/la.png new file mode 100644 index 0000000..b0ecc4d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/la.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/lb.png b/wp-content/themes/score/lib/images/flags/24/lb.png new file mode 100644 index 0000000..000d1f7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/lb.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/lc.png b/wp-content/themes/score/lib/images/flags/24/lc.png new file mode 100644 index 0000000..52eb6d0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/lc.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/li.png b/wp-content/themes/score/lib/images/flags/24/li.png new file mode 100644 index 0000000..5a57cd9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/li.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/lk.png b/wp-content/themes/score/lib/images/flags/24/lk.png new file mode 100644 index 0000000..3b4d17c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/lk.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/lr.png b/wp-content/themes/score/lib/images/flags/24/lr.png new file mode 100644 index 0000000..302435d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/lr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ls.png b/wp-content/themes/score/lib/images/flags/24/ls.png new file mode 100644 index 0000000..879dfb4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ls.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/lt.png b/wp-content/themes/score/lib/images/flags/24/lt.png new file mode 100644 index 0000000..74ca688 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/lt.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/lu.png b/wp-content/themes/score/lib/images/flags/24/lu.png new file mode 100644 index 0000000..09cbf31 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/lu.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/lv.png b/wp-content/themes/score/lib/images/flags/24/lv.png new file mode 100644 index 0000000..d70b0f1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/lv.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ly.png b/wp-content/themes/score/lib/images/flags/24/ly.png new file mode 100644 index 0000000..79f6aac Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ly.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ma.png b/wp-content/themes/score/lib/images/flags/24/ma.png new file mode 100644 index 0000000..f5cb199 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ma.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mc.png b/wp-content/themes/score/lib/images/flags/24/mc.png new file mode 100644 index 0000000..704c21a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mc.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/md.png b/wp-content/themes/score/lib/images/flags/24/md.png new file mode 100644 index 0000000..57ca75f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/md.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/me.png b/wp-content/themes/score/lib/images/flags/24/me.png new file mode 100644 index 0000000..435e728 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/me.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mf.png b/wp-content/themes/score/lib/images/flags/24/mf.png new file mode 100644 index 0000000..10985d7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mf.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mg.png b/wp-content/themes/score/lib/images/flags/24/mg.png new file mode 100644 index 0000000..966b068 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mg.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mh.png b/wp-content/themes/score/lib/images/flags/24/mh.png new file mode 100644 index 0000000..3c0a3c9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mh.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mk.png b/wp-content/themes/score/lib/images/flags/24/mk.png new file mode 100644 index 0000000..4832f1d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mk.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ml.png b/wp-content/themes/score/lib/images/flags/24/ml.png new file mode 100644 index 0000000..2711937 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ml.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mm.png b/wp-content/themes/score/lib/images/flags/24/mm.png new file mode 100644 index 0000000..9f56ef6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mn.png b/wp-content/themes/score/lib/images/flags/24/mn.png new file mode 100644 index 0000000..58b3240 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mn.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mo.png b/wp-content/themes/score/lib/images/flags/24/mo.png new file mode 100644 index 0000000..6248cdb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mo.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mp.png b/wp-content/themes/score/lib/images/flags/24/mp.png new file mode 100644 index 0000000..d7f001c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mp.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mq.png b/wp-content/themes/score/lib/images/flags/24/mq.png new file mode 100644 index 0000000..a6e45c4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mq.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mr.png b/wp-content/themes/score/lib/images/flags/24/mr.png new file mode 100644 index 0000000..47805d2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ms.png b/wp-content/themes/score/lib/images/flags/24/ms.png new file mode 100644 index 0000000..5058884 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ms.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mt.png b/wp-content/themes/score/lib/images/flags/24/mt.png new file mode 100644 index 0000000..7982877 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mt.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mu.png b/wp-content/themes/score/lib/images/flags/24/mu.png new file mode 100644 index 0000000..ee1f263 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mu.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mv.png b/wp-content/themes/score/lib/images/flags/24/mv.png new file mode 100644 index 0000000..ee817d4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mv.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mw.png b/wp-content/themes/score/lib/images/flags/24/mw.png new file mode 100644 index 0000000..6b7e334 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mw.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mx.png b/wp-content/themes/score/lib/images/flags/24/mx.png new file mode 100644 index 0000000..9776632 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mx.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/my.png b/wp-content/themes/score/lib/images/flags/24/my.png new file mode 100644 index 0000000..b303c9a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/my.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/mz.png b/wp-content/themes/score/lib/images/flags/24/mz.png new file mode 100644 index 0000000..b239a1c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/mz.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/na.png b/wp-content/themes/score/lib/images/flags/24/na.png new file mode 100644 index 0000000..1fe156f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/na.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/nc.png b/wp-content/themes/score/lib/images/flags/24/nc.png new file mode 100644 index 0000000..86f95a1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/nc.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ne.png b/wp-content/themes/score/lib/images/flags/24/ne.png new file mode 100644 index 0000000..2de3149 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ne.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/nf.png b/wp-content/themes/score/lib/images/flags/24/nf.png new file mode 100644 index 0000000..1f94cc0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/nf.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ng.png b/wp-content/themes/score/lib/images/flags/24/ng.png new file mode 100644 index 0000000..3cd82fc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ng.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ni.png b/wp-content/themes/score/lib/images/flags/24/ni.png new file mode 100644 index 0000000..a5b4892 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ni.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/nl.png b/wp-content/themes/score/lib/images/flags/24/nl.png new file mode 100644 index 0000000..362c9f0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/nl.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/no.png b/wp-content/themes/score/lib/images/flags/24/no.png new file mode 100644 index 0000000..60939dc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/no.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/none.png b/wp-content/themes/score/lib/images/flags/24/none.png new file mode 100644 index 0000000..658fd2f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/none.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/np.png b/wp-content/themes/score/lib/images/flags/24/np.png new file mode 100644 index 0000000..f59084d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/np.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/nr.png b/wp-content/themes/score/lib/images/flags/24/nr.png new file mode 100644 index 0000000..2531ee5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/nr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/nu.png b/wp-content/themes/score/lib/images/flags/24/nu.png new file mode 100644 index 0000000..1562310 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/nu.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/nz.png b/wp-content/themes/score/lib/images/flags/24/nz.png new file mode 100644 index 0000000..8530e0c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/nz.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/om.png b/wp-content/themes/score/lib/images/flags/24/om.png new file mode 100644 index 0000000..de999aa Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/om.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pa.png b/wp-content/themes/score/lib/images/flags/24/pa.png new file mode 100644 index 0000000..987336b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pa.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pe.png b/wp-content/themes/score/lib/images/flags/24/pe.png new file mode 100644 index 0000000..0c1951f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pe.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pf.png b/wp-content/themes/score/lib/images/flags/24/pf.png new file mode 100644 index 0000000..ac589d6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pf.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pg.png b/wp-content/themes/score/lib/images/flags/24/pg.png new file mode 100644 index 0000000..f612008 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pg.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ph.png b/wp-content/themes/score/lib/images/flags/24/ph.png new file mode 100644 index 0000000..96979eb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ph.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pk.png b/wp-content/themes/score/lib/images/flags/24/pk.png new file mode 100644 index 0000000..887dce5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pk.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pl.png b/wp-content/themes/score/lib/images/flags/24/pl.png new file mode 100644 index 0000000..cfa3f02 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pl.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pm.png b/wp-content/themes/score/lib/images/flags/24/pm.png new file mode 100644 index 0000000..f8d21a3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pn.png b/wp-content/themes/score/lib/images/flags/24/pn.png new file mode 100644 index 0000000..fbf3ab4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pn.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pr.png b/wp-content/themes/score/lib/images/flags/24/pr.png new file mode 100644 index 0000000..98f18c8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ps.png b/wp-content/themes/score/lib/images/flags/24/ps.png new file mode 100644 index 0000000..4691919 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ps.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pt.png b/wp-content/themes/score/lib/images/flags/24/pt.png new file mode 100644 index 0000000..5a94de5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pt.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/pw.png b/wp-content/themes/score/lib/images/flags/24/pw.png new file mode 100644 index 0000000..4fcda71 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/pw.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/py.png b/wp-content/themes/score/lib/images/flags/24/py.png new file mode 100644 index 0000000..e81e746 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/py.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/qa.png b/wp-content/themes/score/lib/images/flags/24/qa.png new file mode 100644 index 0000000..49a1e54 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/qa.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/re.png b/wp-content/themes/score/lib/images/flags/24/re.png new file mode 100644 index 0000000..5c8749d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/re.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ro.png b/wp-content/themes/score/lib/images/flags/24/ro.png new file mode 100644 index 0000000..cbffc98 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ro.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/rs.png b/wp-content/themes/score/lib/images/flags/24/rs.png new file mode 100644 index 0000000..6e1086c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/rs.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ru.png b/wp-content/themes/score/lib/images/flags/24/ru.png new file mode 100644 index 0000000..ca1a087 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ru.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/rw.png b/wp-content/themes/score/lib/images/flags/24/rw.png new file mode 100644 index 0000000..22d96ee Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/rw.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sa.png b/wp-content/themes/score/lib/images/flags/24/sa.png new file mode 100644 index 0000000..032bb14 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sa.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sb.png b/wp-content/themes/score/lib/images/flags/24/sb.png new file mode 100644 index 0000000..244a570 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sb.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sc.png b/wp-content/themes/score/lib/images/flags/24/sc.png new file mode 100644 index 0000000..dbface8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sc.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sd.png b/wp-content/themes/score/lib/images/flags/24/sd.png new file mode 100644 index 0000000..d9867d9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sd.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/se.png b/wp-content/themes/score/lib/images/flags/24/se.png new file mode 100644 index 0000000..975a2e8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/se.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sg.png b/wp-content/themes/score/lib/images/flags/24/sg.png new file mode 100644 index 0000000..3329013 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sg.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sh.png b/wp-content/themes/score/lib/images/flags/24/sh.png new file mode 100644 index 0000000..39a1750 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sh.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/si.png b/wp-content/themes/score/lib/images/flags/24/si.png new file mode 100644 index 0000000..9c588f2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/si.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sj.png b/wp-content/themes/score/lib/images/flags/24/sj.png new file mode 100644 index 0000000..60939dc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sj.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sk.png b/wp-content/themes/score/lib/images/flags/24/sk.png new file mode 100644 index 0000000..291e605 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sk.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sl.png b/wp-content/themes/score/lib/images/flags/24/sl.png new file mode 100644 index 0000000..d0a6a7b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sl.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sm.png b/wp-content/themes/score/lib/images/flags/24/sm.png new file mode 100644 index 0000000..b93ac3d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sn.png b/wp-content/themes/score/lib/images/flags/24/sn.png new file mode 100644 index 0000000..b713c4d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sn.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/so.png b/wp-content/themes/score/lib/images/flags/24/so.png new file mode 100644 index 0000000..4bbb466 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/so.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sr.png b/wp-content/themes/score/lib/images/flags/24/sr.png new file mode 100644 index 0000000..5f18df0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/st.png b/wp-content/themes/score/lib/images/flags/24/st.png new file mode 100644 index 0000000..c6bac56 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/st.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sv.png b/wp-content/themes/score/lib/images/flags/24/sv.png new file mode 100644 index 0000000..e03b7bf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sv.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sy.png b/wp-content/themes/score/lib/images/flags/24/sy.png new file mode 100644 index 0000000..2f27081 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sy.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/sz.png b/wp-content/themes/score/lib/images/flags/24/sz.png new file mode 100644 index 0000000..ca3a139 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/sz.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tc.png b/wp-content/themes/score/lib/images/flags/24/tc.png new file mode 100644 index 0000000..efe267d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tc.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/td.png b/wp-content/themes/score/lib/images/flags/24/td.png new file mode 100644 index 0000000..b4904f9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/td.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tf.png b/wp-content/themes/score/lib/images/flags/24/tf.png new file mode 100644 index 0000000..bb8abbb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tf.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tg.png b/wp-content/themes/score/lib/images/flags/24/tg.png new file mode 100644 index 0000000..98e7c38 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tg.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/th.png b/wp-content/themes/score/lib/images/flags/24/th.png new file mode 100644 index 0000000..f282628 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/th.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tj.png b/wp-content/themes/score/lib/images/flags/24/tj.png new file mode 100644 index 0000000..dde2aef Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tj.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tk.png b/wp-content/themes/score/lib/images/flags/24/tk.png new file mode 100644 index 0000000..c31253e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tk.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tl.png b/wp-content/themes/score/lib/images/flags/24/tl.png new file mode 100644 index 0000000..d8c0469 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tl.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tm.png b/wp-content/themes/score/lib/images/flags/24/tm.png new file mode 100644 index 0000000..7f07f1f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tn.png b/wp-content/themes/score/lib/images/flags/24/tn.png new file mode 100644 index 0000000..4936cdf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tn.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/to.png b/wp-content/themes/score/lib/images/flags/24/to.png new file mode 100644 index 0000000..7ac1ab4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/to.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tr.png b/wp-content/themes/score/lib/images/flags/24/tr.png new file mode 100644 index 0000000..da41737 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tr.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tt.png b/wp-content/themes/score/lib/images/flags/24/tt.png new file mode 100644 index 0000000..a30ccb4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tt.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tv.png b/wp-content/themes/score/lib/images/flags/24/tv.png new file mode 100644 index 0000000..5b13608 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tv.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tw.png b/wp-content/themes/score/lib/images/flags/24/tw.png new file mode 100644 index 0000000..faa796c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tw.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/tz.png b/wp-content/themes/score/lib/images/flags/24/tz.png new file mode 100644 index 0000000..3fb8b23 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/tz.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ua.png b/wp-content/themes/score/lib/images/flags/24/ua.png new file mode 100644 index 0000000..f6a492a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ua.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ug.png b/wp-content/themes/score/lib/images/flags/24/ug.png new file mode 100644 index 0000000..f2e1ae7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ug.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/um.png b/wp-content/themes/score/lib/images/flags/24/um.png new file mode 100644 index 0000000..f9337dc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/um.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/us.png b/wp-content/themes/score/lib/images/flags/24/us.png new file mode 100644 index 0000000..f9337dc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/us.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/uy.png b/wp-content/themes/score/lib/images/flags/24/uy.png new file mode 100644 index 0000000..a8faab2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/uy.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/uz.png b/wp-content/themes/score/lib/images/flags/24/uz.png new file mode 100644 index 0000000..b4af750 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/uz.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/va.png b/wp-content/themes/score/lib/images/flags/24/va.png new file mode 100644 index 0000000..67e74ca Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/va.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/vc.png b/wp-content/themes/score/lib/images/flags/24/vc.png new file mode 100644 index 0000000..cb96a67 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/vc.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ve.png b/wp-content/themes/score/lib/images/flags/24/ve.png new file mode 100644 index 0000000..9e0547a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ve.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/vg.png b/wp-content/themes/score/lib/images/flags/24/vg.png new file mode 100644 index 0000000..c77696d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/vg.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/vi.png b/wp-content/themes/score/lib/images/flags/24/vi.png new file mode 100644 index 0000000..afbef94 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/vi.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/vn.png b/wp-content/themes/score/lib/images/flags/24/vn.png new file mode 100644 index 0000000..1090f2b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/vn.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/vu.png b/wp-content/themes/score/lib/images/flags/24/vu.png new file mode 100644 index 0000000..cfbe75a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/vu.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/wf.png b/wp-content/themes/score/lib/images/flags/24/wf.png new file mode 100644 index 0000000..2c63fce Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/wf.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ws.png b/wp-content/themes/score/lib/images/flags/24/ws.png new file mode 100644 index 0000000..a71a585 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ws.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/ye.png b/wp-content/themes/score/lib/images/flags/24/ye.png new file mode 100644 index 0000000..4a86685 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/ye.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/yt.png b/wp-content/themes/score/lib/images/flags/24/yt.png new file mode 100644 index 0000000..42f86ec Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/yt.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/za.png b/wp-content/themes/score/lib/images/flags/24/za.png new file mode 100644 index 0000000..10ee332 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/za.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/zm.png b/wp-content/themes/score/lib/images/flags/24/zm.png new file mode 100644 index 0000000..a93f81b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/zm.png differ diff --git a/wp-content/themes/score/lib/images/flags/24/zw.png b/wp-content/themes/score/lib/images/flags/24/zw.png new file mode 100644 index 0000000..8bbd802 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/24/zw.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ad.png b/wp-content/themes/score/lib/images/flags/32/ad.png new file mode 100644 index 0000000..1245d9f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ad.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ae.png b/wp-content/themes/score/lib/images/flags/32/ae.png new file mode 100644 index 0000000..5957c42 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ae.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/af.png b/wp-content/themes/score/lib/images/flags/32/af.png new file mode 100644 index 0000000..0402b30 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/af.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ag.png b/wp-content/themes/score/lib/images/flags/32/ag.png new file mode 100644 index 0000000..062aa70 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ag.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ai.png b/wp-content/themes/score/lib/images/flags/32/ai.png new file mode 100644 index 0000000..68db17b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ai.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/al.png b/wp-content/themes/score/lib/images/flags/32/al.png new file mode 100644 index 0000000..5eea814 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/al.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/am.png b/wp-content/themes/score/lib/images/flags/32/am.png new file mode 100644 index 0000000..8e1054e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/am.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/an.png b/wp-content/themes/score/lib/images/flags/32/an.png new file mode 100644 index 0000000..c7644f8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/an.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ao.png b/wp-content/themes/score/lib/images/flags/32/ao.png new file mode 100644 index 0000000..d1deed8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ao.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/aq.png b/wp-content/themes/score/lib/images/flags/32/aq.png new file mode 100644 index 0000000..01bf5a9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/aq.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ar.png b/wp-content/themes/score/lib/images/flags/32/ar.png new file mode 100644 index 0000000..8c8d5c9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ar.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/as.png b/wp-content/themes/score/lib/images/flags/32/as.png new file mode 100644 index 0000000..a24093e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/as.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/at.png b/wp-content/themes/score/lib/images/flags/32/at.png new file mode 100644 index 0000000..3d5a4af Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/at.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/au.png b/wp-content/themes/score/lib/images/flags/32/au.png new file mode 100644 index 0000000..b34a13a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/au.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/aw.png b/wp-content/themes/score/lib/images/flags/32/aw.png new file mode 100644 index 0000000..67a8142 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/aw.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ax.png b/wp-content/themes/score/lib/images/flags/32/ax.png new file mode 100644 index 0000000..1314097 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ax.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/az.png b/wp-content/themes/score/lib/images/flags/32/az.png new file mode 100644 index 0000000..86961f7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/az.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ba.png b/wp-content/themes/score/lib/images/flags/32/ba.png new file mode 100644 index 0000000..242e214 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ba.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bb.png b/wp-content/themes/score/lib/images/flags/32/bb.png new file mode 100644 index 0000000..dc5bfaa Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bb.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bd.png b/wp-content/themes/score/lib/images/flags/32/bd.png new file mode 100644 index 0000000..8c4b72c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bd.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/be.png b/wp-content/themes/score/lib/images/flags/32/be.png new file mode 100644 index 0000000..957705c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/be.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bf.png b/wp-content/themes/score/lib/images/flags/32/bf.png new file mode 100644 index 0000000..8bfe4b9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bf.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bg.png b/wp-content/themes/score/lib/images/flags/32/bg.png new file mode 100644 index 0000000..6ba90af Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bg.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bh.png b/wp-content/themes/score/lib/images/flags/32/bh.png new file mode 100644 index 0000000..90fe9a6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bh.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bi.png b/wp-content/themes/score/lib/images/flags/32/bi.png new file mode 100644 index 0000000..a0f67f8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bi.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bj.png b/wp-content/themes/score/lib/images/flags/32/bj.png new file mode 100644 index 0000000..202dc46 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bj.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bl.png b/wp-content/themes/score/lib/images/flags/32/bl.png new file mode 100644 index 0000000..26d91f1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bl.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bm.png b/wp-content/themes/score/lib/images/flags/32/bm.png new file mode 100644 index 0000000..0272cc6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bn.png b/wp-content/themes/score/lib/images/flags/32/bn.png new file mode 100644 index 0000000..231dd4c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bn.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bo.png b/wp-content/themes/score/lib/images/flags/32/bo.png new file mode 100644 index 0000000..48760e8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bo.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/br.png b/wp-content/themes/score/lib/images/flags/32/br.png new file mode 100644 index 0000000..5a9cfd4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/br.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bs.png b/wp-content/themes/score/lib/images/flags/32/bs.png new file mode 100644 index 0000000..28364ad Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bs.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bt.png b/wp-content/themes/score/lib/images/flags/32/bt.png new file mode 100644 index 0000000..2d0b604 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bt.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bv.png b/wp-content/themes/score/lib/images/flags/32/bv.png new file mode 100644 index 0000000..9717bbf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bv.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bw.png b/wp-content/themes/score/lib/images/flags/32/bw.png new file mode 100644 index 0000000..c8b457d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bw.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/by.png b/wp-content/themes/score/lib/images/flags/32/by.png new file mode 100644 index 0000000..9c8e46c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/by.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/bz.png b/wp-content/themes/score/lib/images/flags/32/bz.png new file mode 100644 index 0000000..e2a05a6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/bz.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ca.png b/wp-content/themes/score/lib/images/flags/32/ca.png new file mode 100644 index 0000000..3e691be Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ca.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cc.png b/wp-content/themes/score/lib/images/flags/32/cc.png new file mode 100644 index 0000000..da954a7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cc.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cd.png b/wp-content/themes/score/lib/images/flags/32/cd.png new file mode 100644 index 0000000..badf083 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cd.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cf.png b/wp-content/themes/score/lib/images/flags/32/cf.png new file mode 100644 index 0000000..5283c59 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cf.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cg.png b/wp-content/themes/score/lib/images/flags/32/cg.png new file mode 100644 index 0000000..88b132b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cg.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ch.png b/wp-content/themes/score/lib/images/flags/32/ch.png new file mode 100644 index 0000000..b62f04b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ch.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ci.png b/wp-content/themes/score/lib/images/flags/32/ci.png new file mode 100644 index 0000000..4c2a467 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ci.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ck.png b/wp-content/themes/score/lib/images/flags/32/ck.png new file mode 100644 index 0000000..2e62ed8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ck.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cl.png b/wp-content/themes/score/lib/images/flags/32/cl.png new file mode 100644 index 0000000..35ddcc1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cl.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cm.png b/wp-content/themes/score/lib/images/flags/32/cm.png new file mode 100644 index 0000000..cf2b443 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cn.png b/wp-content/themes/score/lib/images/flags/32/cn.png new file mode 100644 index 0000000..86ac698 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cn.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/co.png b/wp-content/themes/score/lib/images/flags/32/co.png new file mode 100644 index 0000000..3686249 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/co.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cr.png b/wp-content/themes/score/lib/images/flags/32/cr.png new file mode 100644 index 0000000..8559d53 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cu.png b/wp-content/themes/score/lib/images/flags/32/cu.png new file mode 100644 index 0000000..b5d5cfb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cu.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cv.png b/wp-content/themes/score/lib/images/flags/32/cv.png new file mode 100644 index 0000000..712253e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cv.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cx.png b/wp-content/themes/score/lib/images/flags/32/cx.png new file mode 100644 index 0000000..2825d6f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cx.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cy.png b/wp-content/themes/score/lib/images/flags/32/cy.png new file mode 100644 index 0000000..dea6953 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cy.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/cz.png b/wp-content/themes/score/lib/images/flags/32/cz.png new file mode 100644 index 0000000..0dd2bb4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/cz.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/de.png b/wp-content/themes/score/lib/images/flags/32/de.png new file mode 100644 index 0000000..a35292a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/de.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/dj.png b/wp-content/themes/score/lib/images/flags/32/dj.png new file mode 100644 index 0000000..80c7bda Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/dj.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/dk.png b/wp-content/themes/score/lib/images/flags/32/dk.png new file mode 100644 index 0000000..58d47d9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/dk.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/dm.png b/wp-content/themes/score/lib/images/flags/32/dm.png new file mode 100644 index 0000000..b8b3ce0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/dm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/do.png b/wp-content/themes/score/lib/images/flags/32/do.png new file mode 100644 index 0000000..46edfad Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/do.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/dz.png b/wp-content/themes/score/lib/images/flags/32/dz.png new file mode 100644 index 0000000..fe1fc6c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/dz.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ec.png b/wp-content/themes/score/lib/images/flags/32/ec.png new file mode 100644 index 0000000..61eb262 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ec.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ee.png b/wp-content/themes/score/lib/images/flags/32/ee.png new file mode 100644 index 0000000..426ab13 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ee.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/eg.png b/wp-content/themes/score/lib/images/flags/32/eg.png new file mode 100644 index 0000000..ac4bab4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/eg.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/eh.png b/wp-content/themes/score/lib/images/flags/32/eh.png new file mode 100644 index 0000000..d6fc4b7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/eh.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/er.png b/wp-content/themes/score/lib/images/flags/32/er.png new file mode 100644 index 0000000..84c0c84 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/er.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/es.png b/wp-content/themes/score/lib/images/flags/32/es.png new file mode 100644 index 0000000..a4177e9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/es.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/et.png b/wp-content/themes/score/lib/images/flags/32/et.png new file mode 100644 index 0000000..e766a48 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/et.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/fi.png b/wp-content/themes/score/lib/images/flags/32/fi.png new file mode 100644 index 0000000..3a30faf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/fi.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/fj.png b/wp-content/themes/score/lib/images/flags/32/fj.png new file mode 100644 index 0000000..43f910b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/fj.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/fk.png b/wp-content/themes/score/lib/images/flags/32/fk.png new file mode 100644 index 0000000..34a06e2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/fk.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/fm.png b/wp-content/themes/score/lib/images/flags/32/fm.png new file mode 100644 index 0000000..8321229 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/fm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/fo.png b/wp-content/themes/score/lib/images/flags/32/fo.png new file mode 100644 index 0000000..5cdd720 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/fo.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/fr.png b/wp-content/themes/score/lib/images/flags/32/fr.png new file mode 100644 index 0000000..21d0419 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/fr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ga.png b/wp-content/themes/score/lib/images/flags/32/ga.png new file mode 100644 index 0000000..c83fd2a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ga.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gb.png b/wp-content/themes/score/lib/images/flags/32/gb.png new file mode 100644 index 0000000..82cf5f1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gb.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gd.png b/wp-content/themes/score/lib/images/flags/32/gd.png new file mode 100644 index 0000000..7ced8c8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gd.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ge.png b/wp-content/themes/score/lib/images/flags/32/ge.png new file mode 100644 index 0000000..5e2944c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ge.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gf.png b/wp-content/themes/score/lib/images/flags/32/gf.png new file mode 100644 index 0000000..0d98127 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gf.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gg.png b/wp-content/themes/score/lib/images/flags/32/gg.png new file mode 100644 index 0000000..617895b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gg.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gh.png b/wp-content/themes/score/lib/images/flags/32/gh.png new file mode 100644 index 0000000..b558e78 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gh.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gi.png b/wp-content/themes/score/lib/images/flags/32/gi.png new file mode 100644 index 0000000..2502ad8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gi.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gl.png b/wp-content/themes/score/lib/images/flags/32/gl.png new file mode 100644 index 0000000..d1a4189 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gl.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gm.png b/wp-content/themes/score/lib/images/flags/32/gm.png new file mode 100644 index 0000000..d4d9e52 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gn.png b/wp-content/themes/score/lib/images/flags/32/gn.png new file mode 100644 index 0000000..c5fbfa5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gn.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gp.png b/wp-content/themes/score/lib/images/flags/32/gp.png new file mode 100644 index 0000000..65bfca8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gp.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gq.png b/wp-content/themes/score/lib/images/flags/32/gq.png new file mode 100644 index 0000000..92b3b81 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gq.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gr.png b/wp-content/themes/score/lib/images/flags/32/gr.png new file mode 100644 index 0000000..654f92d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gs.png b/wp-content/themes/score/lib/images/flags/32/gs.png new file mode 100644 index 0000000..94bf6fd Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gs.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gt.png b/wp-content/themes/score/lib/images/flags/32/gt.png new file mode 100644 index 0000000..d20df5a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gt.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gu.png b/wp-content/themes/score/lib/images/flags/32/gu.png new file mode 100644 index 0000000..ea3eb76 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gu.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gw.png b/wp-content/themes/score/lib/images/flags/32/gw.png new file mode 100644 index 0000000..b3e1673 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gw.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/gy.png b/wp-content/themes/score/lib/images/flags/32/gy.png new file mode 100644 index 0000000..48db75f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/gy.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/hk.png b/wp-content/themes/score/lib/images/flags/32/hk.png new file mode 100644 index 0000000..b5f8420 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/hk.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/hm.png b/wp-content/themes/score/lib/images/flags/32/hm.png new file mode 100644 index 0000000..b34a13a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/hm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/hn.png b/wp-content/themes/score/lib/images/flags/32/hn.png new file mode 100644 index 0000000..575430e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/hn.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/hr.png b/wp-content/themes/score/lib/images/flags/32/hr.png new file mode 100644 index 0000000..f4e7f56 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/hr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ht.png b/wp-content/themes/score/lib/images/flags/32/ht.png new file mode 100644 index 0000000..cec06f8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ht.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/hu.png b/wp-content/themes/score/lib/images/flags/32/hu.png new file mode 100644 index 0000000..8ec9069 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/hu.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/id.png b/wp-content/themes/score/lib/images/flags/32/id.png new file mode 100644 index 0000000..d72a4a4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/id.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ie.png b/wp-content/themes/score/lib/images/flags/32/ie.png new file mode 100644 index 0000000..9cba32b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ie.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/il.png b/wp-content/themes/score/lib/images/flags/32/il.png new file mode 100644 index 0000000..c156286 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/il.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/im.png b/wp-content/themes/score/lib/images/flags/32/im.png new file mode 100644 index 0000000..8b9412d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/im.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/in.png b/wp-content/themes/score/lib/images/flags/32/in.png new file mode 100644 index 0000000..ac001d6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/in.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/io.png b/wp-content/themes/score/lib/images/flags/32/io.png new file mode 100644 index 0000000..41bfb53 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/io.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/iq.png b/wp-content/themes/score/lib/images/flags/32/iq.png new file mode 100644 index 0000000..4fbdaa0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/iq.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ir.png b/wp-content/themes/score/lib/images/flags/32/ir.png new file mode 100644 index 0000000..071fe8c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ir.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/is.png b/wp-content/themes/score/lib/images/flags/32/is.png new file mode 100644 index 0000000..f6b5d75 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/is.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/it.png b/wp-content/themes/score/lib/images/flags/32/it.png new file mode 100644 index 0000000..18de857 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/it.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/je.png b/wp-content/themes/score/lib/images/flags/32/je.png new file mode 100644 index 0000000..4858701 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/je.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/jm.png b/wp-content/themes/score/lib/images/flags/32/jm.png new file mode 100644 index 0000000..1342c33 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/jm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/jo.png b/wp-content/themes/score/lib/images/flags/32/jo.png new file mode 100644 index 0000000..bd81547 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/jo.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/jp.png b/wp-content/themes/score/lib/images/flags/32/jp.png new file mode 100644 index 0000000..67020df Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/jp.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ke.png b/wp-content/themes/score/lib/images/flags/32/ke.png new file mode 100644 index 0000000..8db89fb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ke.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/kg.png b/wp-content/themes/score/lib/images/flags/32/kg.png new file mode 100644 index 0000000..6f46e03 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/kg.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/kh.png b/wp-content/themes/score/lib/images/flags/32/kh.png new file mode 100644 index 0000000..a4b77f7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/kh.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ki.png b/wp-content/themes/score/lib/images/flags/32/ki.png new file mode 100644 index 0000000..6ee33b2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ki.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/km.png b/wp-content/themes/score/lib/images/flags/32/km.png new file mode 100644 index 0000000..a7c03c5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/km.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/kn.png b/wp-content/themes/score/lib/images/flags/32/kn.png new file mode 100644 index 0000000..1451f19 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/kn.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/kp.png b/wp-content/themes/score/lib/images/flags/32/kp.png new file mode 100644 index 0000000..403624e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/kp.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/kr.png b/wp-content/themes/score/lib/images/flags/32/kr.png new file mode 100644 index 0000000..0e3d706 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/kr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/kw.png b/wp-content/themes/score/lib/images/flags/32/kw.png new file mode 100644 index 0000000..2ece850 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/kw.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ky.png b/wp-content/themes/score/lib/images/flags/32/ky.png new file mode 100644 index 0000000..3961af3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ky.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/kz.png b/wp-content/themes/score/lib/images/flags/32/kz.png new file mode 100644 index 0000000..7d2a26e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/kz.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/la.png b/wp-content/themes/score/lib/images/flags/32/la.png new file mode 100644 index 0000000..0851e89 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/la.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/lb.png b/wp-content/themes/score/lib/images/flags/32/lb.png new file mode 100644 index 0000000..e71fc2c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/lb.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/lc.png b/wp-content/themes/score/lib/images/flags/32/lc.png new file mode 100644 index 0000000..fea98e3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/lc.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/li.png b/wp-content/themes/score/lib/images/flags/32/li.png new file mode 100644 index 0000000..109c752 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/li.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/lk.png b/wp-content/themes/score/lib/images/flags/32/lk.png new file mode 100644 index 0000000..99ae232 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/lk.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/lr.png b/wp-content/themes/score/lib/images/flags/32/lr.png new file mode 100644 index 0000000..27f2006 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/lr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ls.png b/wp-content/themes/score/lib/images/flags/32/ls.png new file mode 100644 index 0000000..abadd95 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ls.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/lt.png b/wp-content/themes/score/lib/images/flags/32/lt.png new file mode 100644 index 0000000..5854c7d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/lt.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/lu.png b/wp-content/themes/score/lib/images/flags/32/lu.png new file mode 100644 index 0000000..09328c0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/lu.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/lv.png b/wp-content/themes/score/lib/images/flags/32/lv.png new file mode 100644 index 0000000..fa83119 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/lv.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ly.png b/wp-content/themes/score/lib/images/flags/32/ly.png new file mode 100644 index 0000000..afd14b4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ly.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ma.png b/wp-content/themes/score/lib/images/flags/32/ma.png new file mode 100644 index 0000000..4cb8c4f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ma.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mc.png b/wp-content/themes/score/lib/images/flags/32/mc.png new file mode 100644 index 0000000..d72a4a4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mc.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/md.png b/wp-content/themes/score/lib/images/flags/32/md.png new file mode 100644 index 0000000..0e342f1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/md.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/me.png b/wp-content/themes/score/lib/images/flags/32/me.png new file mode 100644 index 0000000..ad067f1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/me.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mf.png b/wp-content/themes/score/lib/images/flags/32/mf.png new file mode 100644 index 0000000..eed8d6d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mf.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mg.png b/wp-content/themes/score/lib/images/flags/32/mg.png new file mode 100644 index 0000000..5c92205 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mg.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mh.png b/wp-content/themes/score/lib/images/flags/32/mh.png new file mode 100644 index 0000000..02fbde6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mh.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mk.png b/wp-content/themes/score/lib/images/flags/32/mk.png new file mode 100644 index 0000000..0154725 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mk.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ml.png b/wp-content/themes/score/lib/images/flags/32/ml.png new file mode 100644 index 0000000..f93bffd Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ml.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mm.png b/wp-content/themes/score/lib/images/flags/32/mm.png new file mode 100644 index 0000000..1ae147c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mn.png b/wp-content/themes/score/lib/images/flags/32/mn.png new file mode 100644 index 0000000..aadc11e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mn.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mo.png b/wp-content/themes/score/lib/images/flags/32/mo.png new file mode 100644 index 0000000..099097b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mo.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mp.png b/wp-content/themes/score/lib/images/flags/32/mp.png new file mode 100644 index 0000000..e66ecc4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mp.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mq.png b/wp-content/themes/score/lib/images/flags/32/mq.png new file mode 100644 index 0000000..e6b06c3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mq.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mr.png b/wp-content/themes/score/lib/images/flags/32/mr.png new file mode 100644 index 0000000..b091eef Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ms.png b/wp-content/themes/score/lib/images/flags/32/ms.png new file mode 100644 index 0000000..779babd Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ms.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mt.png b/wp-content/themes/score/lib/images/flags/32/mt.png new file mode 100644 index 0000000..e0bf47d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mt.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mu.png b/wp-content/themes/score/lib/images/flags/32/mu.png new file mode 100644 index 0000000..b09576f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mu.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mv.png b/wp-content/themes/score/lib/images/flags/32/mv.png new file mode 100644 index 0000000..345d21e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mv.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mw.png b/wp-content/themes/score/lib/images/flags/32/mw.png new file mode 100644 index 0000000..54bccd4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mw.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mx.png b/wp-content/themes/score/lib/images/flags/32/mx.png new file mode 100644 index 0000000..e6c2c83 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mx.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/my.png b/wp-content/themes/score/lib/images/flags/32/my.png new file mode 100644 index 0000000..0adbfe0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/my.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/mz.png b/wp-content/themes/score/lib/images/flags/32/mz.png new file mode 100644 index 0000000..f50ae6b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/mz.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/na.png b/wp-content/themes/score/lib/images/flags/32/na.png new file mode 100644 index 0000000..7ae4759 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/na.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/nc.png b/wp-content/themes/score/lib/images/flags/32/nc.png new file mode 100644 index 0000000..e9e4242 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/nc.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ne.png b/wp-content/themes/score/lib/images/flags/32/ne.png new file mode 100644 index 0000000..c1fdcd1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ne.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/nf.png b/wp-content/themes/score/lib/images/flags/32/nf.png new file mode 100644 index 0000000..b3c4fdf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/nf.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ng.png b/wp-content/themes/score/lib/images/flags/32/ng.png new file mode 100644 index 0000000..9310f19 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ng.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ni.png b/wp-content/themes/score/lib/images/flags/32/ni.png new file mode 100644 index 0000000..67b1f5c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ni.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/nl.png b/wp-content/themes/score/lib/images/flags/32/nl.png new file mode 100644 index 0000000..9073f2c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/nl.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/no.png b/wp-content/themes/score/lib/images/flags/32/no.png new file mode 100644 index 0000000..9717bbf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/no.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/none.png b/wp-content/themes/score/lib/images/flags/32/none.png new file mode 100644 index 0000000..c59d3e4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/none.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/np.png b/wp-content/themes/score/lib/images/flags/32/np.png new file mode 100644 index 0000000..327eb5f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/np.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/nr.png b/wp-content/themes/score/lib/images/flags/32/nr.png new file mode 100644 index 0000000..7aaf39c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/nr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/nu.png b/wp-content/themes/score/lib/images/flags/32/nu.png new file mode 100644 index 0000000..c3f0578 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/nu.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/nz.png b/wp-content/themes/score/lib/images/flags/32/nz.png new file mode 100644 index 0000000..498bca3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/nz.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/om.png b/wp-content/themes/score/lib/images/flags/32/om.png new file mode 100644 index 0000000..65901cf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/om.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pa.png b/wp-content/themes/score/lib/images/flags/32/pa.png new file mode 100644 index 0000000..afb4ca9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pa.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pe.png b/wp-content/themes/score/lib/images/flags/32/pe.png new file mode 100644 index 0000000..96dc7ef Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pe.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pf.png b/wp-content/themes/score/lib/images/flags/32/pf.png new file mode 100644 index 0000000..f733ac1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pf.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pg.png b/wp-content/themes/score/lib/images/flags/32/pg.png new file mode 100644 index 0000000..a239b74 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pg.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ph.png b/wp-content/themes/score/lib/images/flags/32/ph.png new file mode 100644 index 0000000..f626ed9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ph.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pk.png b/wp-content/themes/score/lib/images/flags/32/pk.png new file mode 100644 index 0000000..aab99bf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pk.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pl.png b/wp-content/themes/score/lib/images/flags/32/pl.png new file mode 100644 index 0000000..088a766 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pl.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pm.png b/wp-content/themes/score/lib/images/flags/32/pm.png new file mode 100644 index 0000000..336850c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pn.png b/wp-content/themes/score/lib/images/flags/32/pn.png new file mode 100644 index 0000000..004ad3c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pn.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pr.png b/wp-content/themes/score/lib/images/flags/32/pr.png new file mode 100644 index 0000000..79a3c61 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ps.png b/wp-content/themes/score/lib/images/flags/32/ps.png new file mode 100644 index 0000000..0d25538 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ps.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pt.png b/wp-content/themes/score/lib/images/flags/32/pt.png new file mode 100644 index 0000000..630a85c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pt.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/pw.png b/wp-content/themes/score/lib/images/flags/32/pw.png new file mode 100644 index 0000000..5afec54 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/pw.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/py.png b/wp-content/themes/score/lib/images/flags/32/py.png new file mode 100644 index 0000000..73ff28b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/py.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/qa.png b/wp-content/themes/score/lib/images/flags/32/qa.png new file mode 100644 index 0000000..cd0905c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/qa.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/re.png b/wp-content/themes/score/lib/images/flags/32/re.png new file mode 100644 index 0000000..500f9a1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/re.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ro.png b/wp-content/themes/score/lib/images/flags/32/ro.png new file mode 100644 index 0000000..f815958 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ro.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/rs.png b/wp-content/themes/score/lib/images/flags/32/rs.png new file mode 100644 index 0000000..b6b0822 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/rs.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ru.png b/wp-content/themes/score/lib/images/flags/32/ru.png new file mode 100644 index 0000000..980c585 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ru.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/rw.png b/wp-content/themes/score/lib/images/flags/32/rw.png new file mode 100644 index 0000000..0659c26 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/rw.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sa.png b/wp-content/themes/score/lib/images/flags/32/sa.png new file mode 100644 index 0000000..839d0d9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sa.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sb.png b/wp-content/themes/score/lib/images/flags/32/sb.png new file mode 100644 index 0000000..c1d6b0c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sb.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sc.png b/wp-content/themes/score/lib/images/flags/32/sc.png new file mode 100644 index 0000000..d36d909 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sc.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sd.png b/wp-content/themes/score/lib/images/flags/32/sd.png new file mode 100644 index 0000000..3ba6c4e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sd.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/se.png b/wp-content/themes/score/lib/images/flags/32/se.png new file mode 100644 index 0000000..d62df2a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/se.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sg.png b/wp-content/themes/score/lib/images/flags/32/sg.png new file mode 100644 index 0000000..2c0df6e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sg.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sh.png b/wp-content/themes/score/lib/images/flags/32/sh.png new file mode 100644 index 0000000..a3ef3f9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sh.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/si.png b/wp-content/themes/score/lib/images/flags/32/si.png new file mode 100644 index 0000000..0cf8890 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/si.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sj.png b/wp-content/themes/score/lib/images/flags/32/sj.png new file mode 100644 index 0000000..9717bbf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sj.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sk.png b/wp-content/themes/score/lib/images/flags/32/sk.png new file mode 100644 index 0000000..a3f0881 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sk.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sl.png b/wp-content/themes/score/lib/images/flags/32/sl.png new file mode 100644 index 0000000..ff21325 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sl.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sm.png b/wp-content/themes/score/lib/images/flags/32/sm.png new file mode 100644 index 0000000..bde1c4e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sn.png b/wp-content/themes/score/lib/images/flags/32/sn.png new file mode 100644 index 0000000..bf45518 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sn.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/so.png b/wp-content/themes/score/lib/images/flags/32/so.png new file mode 100644 index 0000000..8ca6c8f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/so.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sr.png b/wp-content/themes/score/lib/images/flags/32/sr.png new file mode 100644 index 0000000..e3d79c8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/st.png b/wp-content/themes/score/lib/images/flags/32/st.png new file mode 100644 index 0000000..6a9da68 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/st.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sv.png b/wp-content/themes/score/lib/images/flags/32/sv.png new file mode 100644 index 0000000..c73bf80 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sv.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sy.png b/wp-content/themes/score/lib/images/flags/32/sy.png new file mode 100644 index 0000000..a0babec Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sy.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/sz.png b/wp-content/themes/score/lib/images/flags/32/sz.png new file mode 100644 index 0000000..5926859 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/sz.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tc.png b/wp-content/themes/score/lib/images/flags/32/tc.png new file mode 100644 index 0000000..63d711e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tc.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/td.png b/wp-content/themes/score/lib/images/flags/32/td.png new file mode 100644 index 0000000..d4c92bd Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/td.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tf.png b/wp-content/themes/score/lib/images/flags/32/tf.png new file mode 100644 index 0000000..07cf440 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tf.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tg.png b/wp-content/themes/score/lib/images/flags/32/tg.png new file mode 100644 index 0000000..a32a0c2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tg.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/th.png b/wp-content/themes/score/lib/images/flags/32/th.png new file mode 100644 index 0000000..62b8cce Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/th.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tj.png b/wp-content/themes/score/lib/images/flags/32/tj.png new file mode 100644 index 0000000..829fa7b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tj.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tk.png b/wp-content/themes/score/lib/images/flags/32/tk.png new file mode 100644 index 0000000..6893b03 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tk.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tl.png b/wp-content/themes/score/lib/images/flags/32/tl.png new file mode 100644 index 0000000..93a45af Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tl.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tm.png b/wp-content/themes/score/lib/images/flags/32/tm.png new file mode 100644 index 0000000..1860480 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tn.png b/wp-content/themes/score/lib/images/flags/32/tn.png new file mode 100644 index 0000000..8869233 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tn.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/to.png b/wp-content/themes/score/lib/images/flags/32/to.png new file mode 100644 index 0000000..dac83d8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/to.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tr.png b/wp-content/themes/score/lib/images/flags/32/tr.png new file mode 100644 index 0000000..dc33119 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tr.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tt.png b/wp-content/themes/score/lib/images/flags/32/tt.png new file mode 100644 index 0000000..f5e185e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tt.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tv.png b/wp-content/themes/score/lib/images/flags/32/tv.png new file mode 100644 index 0000000..9c85af4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tv.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tw.png b/wp-content/themes/score/lib/images/flags/32/tw.png new file mode 100644 index 0000000..5feb7ee Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tw.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/tz.png b/wp-content/themes/score/lib/images/flags/32/tz.png new file mode 100644 index 0000000..59eee14 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/tz.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ua.png b/wp-content/themes/score/lib/images/flags/32/ua.png new file mode 100644 index 0000000..46f59cb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ua.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ug.png b/wp-content/themes/score/lib/images/flags/32/ug.png new file mode 100644 index 0000000..eb91362 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ug.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/um.png b/wp-content/themes/score/lib/images/flags/32/um.png new file mode 100644 index 0000000..5e4b4d9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/um.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/us.png b/wp-content/themes/score/lib/images/flags/32/us.png new file mode 100644 index 0000000..5e4b4d9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/us.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/uy.png b/wp-content/themes/score/lib/images/flags/32/uy.png new file mode 100644 index 0000000..f174217 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/uy.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/uz.png b/wp-content/themes/score/lib/images/flags/32/uz.png new file mode 100644 index 0000000..304c0bd Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/uz.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/va.png b/wp-content/themes/score/lib/images/flags/32/va.png new file mode 100644 index 0000000..049f341 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/va.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/vc.png b/wp-content/themes/score/lib/images/flags/32/vc.png new file mode 100644 index 0000000..0b36139 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/vc.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ve.png b/wp-content/themes/score/lib/images/flags/32/ve.png new file mode 100644 index 0000000..03a1fca Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ve.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/vg.png b/wp-content/themes/score/lib/images/flags/32/vg.png new file mode 100644 index 0000000..f6c33a3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/vg.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/vi.png b/wp-content/themes/score/lib/images/flags/32/vi.png new file mode 100644 index 0000000..1aa55d3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/vi.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/vn.png b/wp-content/themes/score/lib/images/flags/32/vn.png new file mode 100644 index 0000000..f6aaa60 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/vn.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/vu.png b/wp-content/themes/score/lib/images/flags/32/vu.png new file mode 100644 index 0000000..10fc79e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/vu.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/wf.png b/wp-content/themes/score/lib/images/flags/32/wf.png new file mode 100644 index 0000000..3c936f1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/wf.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ws.png b/wp-content/themes/score/lib/images/flags/32/ws.png new file mode 100644 index 0000000..ba47ee7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ws.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/ye.png b/wp-content/themes/score/lib/images/flags/32/ye.png new file mode 100644 index 0000000..b2358ed Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/ye.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/yt.png b/wp-content/themes/score/lib/images/flags/32/yt.png new file mode 100644 index 0000000..298a4b5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/yt.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/za.png b/wp-content/themes/score/lib/images/flags/32/za.png new file mode 100644 index 0000000..dc17e66 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/za.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/zm.png b/wp-content/themes/score/lib/images/flags/32/zm.png new file mode 100644 index 0000000..3684007 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/zm.png differ diff --git a/wp-content/themes/score/lib/images/flags/32/zw.png b/wp-content/themes/score/lib/images/flags/32/zw.png new file mode 100644 index 0000000..74b99fe Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/32/zw.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ad.png b/wp-content/themes/score/lib/images/flags/48/ad.png new file mode 100644 index 0000000..e753cd6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ad.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ae.png b/wp-content/themes/score/lib/images/flags/48/ae.png new file mode 100644 index 0000000..1161375 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ae.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/af.png b/wp-content/themes/score/lib/images/flags/48/af.png new file mode 100644 index 0000000..2575b8a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/af.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ag.png b/wp-content/themes/score/lib/images/flags/48/ag.png new file mode 100644 index 0000000..cfc157a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ag.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ai.png b/wp-content/themes/score/lib/images/flags/48/ai.png new file mode 100644 index 0000000..7a6ac04 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ai.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/al.png b/wp-content/themes/score/lib/images/flags/48/al.png new file mode 100644 index 0000000..2e16c3b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/al.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/am.png b/wp-content/themes/score/lib/images/flags/48/am.png new file mode 100644 index 0000000..f4f9bae Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/am.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/an.png b/wp-content/themes/score/lib/images/flags/48/an.png new file mode 100644 index 0000000..e4f171f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/an.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ao.png b/wp-content/themes/score/lib/images/flags/48/ao.png new file mode 100644 index 0000000..97ae963 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ao.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/aq.png b/wp-content/themes/score/lib/images/flags/48/aq.png new file mode 100644 index 0000000..a97b355 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/aq.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ar.png b/wp-content/themes/score/lib/images/flags/48/ar.png new file mode 100644 index 0000000..62d1518 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ar.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/as.png b/wp-content/themes/score/lib/images/flags/48/as.png new file mode 100644 index 0000000..b0d4cdc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/as.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/at.png b/wp-content/themes/score/lib/images/flags/48/at.png new file mode 100644 index 0000000..fe66fef Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/at.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/au.png b/wp-content/themes/score/lib/images/flags/48/au.png new file mode 100644 index 0000000..8937404 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/au.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/aw.png b/wp-content/themes/score/lib/images/flags/48/aw.png new file mode 100644 index 0000000..0083ef6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/aw.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ax.png b/wp-content/themes/score/lib/images/flags/48/ax.png new file mode 100644 index 0000000..49ea888 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ax.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/az.png b/wp-content/themes/score/lib/images/flags/48/az.png new file mode 100644 index 0000000..1850abc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/az.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ba.png b/wp-content/themes/score/lib/images/flags/48/ba.png new file mode 100644 index 0000000..806d05d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ba.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bb.png b/wp-content/themes/score/lib/images/flags/48/bb.png new file mode 100644 index 0000000..d440d41 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bb.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bd.png b/wp-content/themes/score/lib/images/flags/48/bd.png new file mode 100644 index 0000000..8ef2443 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bd.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/be.png b/wp-content/themes/score/lib/images/flags/48/be.png new file mode 100644 index 0000000..1d3df4c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/be.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bf.png b/wp-content/themes/score/lib/images/flags/48/bf.png new file mode 100644 index 0000000..13ff132 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bf.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bg.png b/wp-content/themes/score/lib/images/flags/48/bg.png new file mode 100644 index 0000000..c130192 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bg.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bh.png b/wp-content/themes/score/lib/images/flags/48/bh.png new file mode 100644 index 0000000..c45c7b4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bh.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bi.png b/wp-content/themes/score/lib/images/flags/48/bi.png new file mode 100644 index 0000000..15e76aa Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bi.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bj.png b/wp-content/themes/score/lib/images/flags/48/bj.png new file mode 100644 index 0000000..af46063 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bj.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bl.png b/wp-content/themes/score/lib/images/flags/48/bl.png new file mode 100644 index 0000000..efd3cbc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bl.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bm.png b/wp-content/themes/score/lib/images/flags/48/bm.png new file mode 100644 index 0000000..880d965 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bn.png b/wp-content/themes/score/lib/images/flags/48/bn.png new file mode 100644 index 0000000..650cca6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bn.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bo.png b/wp-content/themes/score/lib/images/flags/48/bo.png new file mode 100644 index 0000000..a28f060 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bo.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/br.png b/wp-content/themes/score/lib/images/flags/48/br.png new file mode 100644 index 0000000..47a007f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/br.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bs.png b/wp-content/themes/score/lib/images/flags/48/bs.png new file mode 100644 index 0000000..753fc83 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bs.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bt.png b/wp-content/themes/score/lib/images/flags/48/bt.png new file mode 100644 index 0000000..db0372e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bt.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bv.png b/wp-content/themes/score/lib/images/flags/48/bv.png new file mode 100644 index 0000000..2b03236 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bv.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bw.png b/wp-content/themes/score/lib/images/flags/48/bw.png new file mode 100644 index 0000000..9a06843 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bw.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/by.png b/wp-content/themes/score/lib/images/flags/48/by.png new file mode 100644 index 0000000..ce75c73 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/by.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/bz.png b/wp-content/themes/score/lib/images/flags/48/bz.png new file mode 100644 index 0000000..4a9aea0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/bz.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ca.png b/wp-content/themes/score/lib/images/flags/48/ca.png new file mode 100644 index 0000000..bfff414 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ca.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cc.png b/wp-content/themes/score/lib/images/flags/48/cc.png new file mode 100644 index 0000000..fa02e65 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cc.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cd.png b/wp-content/themes/score/lib/images/flags/48/cd.png new file mode 100644 index 0000000..be42ea0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cd.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cf.png b/wp-content/themes/score/lib/images/flags/48/cf.png new file mode 100644 index 0000000..3f0b501 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cf.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cg.png b/wp-content/themes/score/lib/images/flags/48/cg.png new file mode 100644 index 0000000..f8c0b25 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cg.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ch.png b/wp-content/themes/score/lib/images/flags/48/ch.png new file mode 100644 index 0000000..223154d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ch.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ci.png b/wp-content/themes/score/lib/images/flags/48/ci.png new file mode 100644 index 0000000..1fee82c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ci.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ck.png b/wp-content/themes/score/lib/images/flags/48/ck.png new file mode 100644 index 0000000..7c432c8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ck.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cl.png b/wp-content/themes/score/lib/images/flags/48/cl.png new file mode 100644 index 0000000..3e76462 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cl.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cm.png b/wp-content/themes/score/lib/images/flags/48/cm.png new file mode 100644 index 0000000..32eccee Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cn.png b/wp-content/themes/score/lib/images/flags/48/cn.png new file mode 100644 index 0000000..d0da550 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cn.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/co.png b/wp-content/themes/score/lib/images/flags/48/co.png new file mode 100644 index 0000000..da19e53 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/co.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cr.png b/wp-content/themes/score/lib/images/flags/48/cr.png new file mode 100644 index 0000000..44a3073 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cu.png b/wp-content/themes/score/lib/images/flags/48/cu.png new file mode 100644 index 0000000..4e3cf29 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cu.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cv.png b/wp-content/themes/score/lib/images/flags/48/cv.png new file mode 100644 index 0000000..103043c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cv.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cx.png b/wp-content/themes/score/lib/images/flags/48/cx.png new file mode 100644 index 0000000..ff1ee36 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cx.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cy.png b/wp-content/themes/score/lib/images/flags/48/cy.png new file mode 100644 index 0000000..df22c03 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cy.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/cz.png b/wp-content/themes/score/lib/images/flags/48/cz.png new file mode 100644 index 0000000..31f9ad9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/cz.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/de.png b/wp-content/themes/score/lib/images/flags/48/de.png new file mode 100644 index 0000000..77e9338 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/de.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/dj.png b/wp-content/themes/score/lib/images/flags/48/dj.png new file mode 100644 index 0000000..8f32f74 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/dj.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/dk.png b/wp-content/themes/score/lib/images/flags/48/dk.png new file mode 100644 index 0000000..3f4dac3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/dk.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/dm.png b/wp-content/themes/score/lib/images/flags/48/dm.png new file mode 100644 index 0000000..e70b1a4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/dm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/do.png b/wp-content/themes/score/lib/images/flags/48/do.png new file mode 100644 index 0000000..ca2d40a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/do.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/dz.png b/wp-content/themes/score/lib/images/flags/48/dz.png new file mode 100644 index 0000000..69477f0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/dz.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ec.png b/wp-content/themes/score/lib/images/flags/48/ec.png new file mode 100644 index 0000000..4913cec Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ec.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ee.png b/wp-content/themes/score/lib/images/flags/48/ee.png new file mode 100644 index 0000000..3eadb29 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ee.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/eg.png b/wp-content/themes/score/lib/images/flags/48/eg.png new file mode 100644 index 0000000..ee9fef0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/eg.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/eh.png b/wp-content/themes/score/lib/images/flags/48/eh.png new file mode 100644 index 0000000..5eb501c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/eh.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/er.png b/wp-content/themes/score/lib/images/flags/48/er.png new file mode 100644 index 0000000..5f38c52 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/er.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/es.png b/wp-content/themes/score/lib/images/flags/48/es.png new file mode 100644 index 0000000..38b66bc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/es.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/et.png b/wp-content/themes/score/lib/images/flags/48/et.png new file mode 100644 index 0000000..b29191f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/et.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/fi.png b/wp-content/themes/score/lib/images/flags/48/fi.png new file mode 100644 index 0000000..97d47a9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/fi.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/fj.png b/wp-content/themes/score/lib/images/flags/48/fj.png new file mode 100644 index 0000000..d96b232 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/fj.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/fk.png b/wp-content/themes/score/lib/images/flags/48/fk.png new file mode 100644 index 0000000..c61502a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/fk.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/fm.png b/wp-content/themes/score/lib/images/flags/48/fm.png new file mode 100644 index 0000000..02cf424 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/fm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/fo.png b/wp-content/themes/score/lib/images/flags/48/fo.png new file mode 100644 index 0000000..1bfb68e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/fo.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/fr.png b/wp-content/themes/score/lib/images/flags/48/fr.png new file mode 100644 index 0000000..12318d4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/fr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ga.png b/wp-content/themes/score/lib/images/flags/48/ga.png new file mode 100644 index 0000000..bb1f634 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ga.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gb.png b/wp-content/themes/score/lib/images/flags/48/gb.png new file mode 100644 index 0000000..3853f5e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gb.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gd.png b/wp-content/themes/score/lib/images/flags/48/gd.png new file mode 100644 index 0000000..26be61e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gd.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ge.png b/wp-content/themes/score/lib/images/flags/48/ge.png new file mode 100644 index 0000000..fb293a0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ge.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gf.png b/wp-content/themes/score/lib/images/flags/48/gf.png new file mode 100644 index 0000000..adb77cb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gf.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gg.png b/wp-content/themes/score/lib/images/flags/48/gg.png new file mode 100644 index 0000000..0514cc9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gg.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gh.png b/wp-content/themes/score/lib/images/flags/48/gh.png new file mode 100644 index 0000000..16ddfb4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gh.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gi.png b/wp-content/themes/score/lib/images/flags/48/gi.png new file mode 100644 index 0000000..3d3b66d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gi.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gl.png b/wp-content/themes/score/lib/images/flags/48/gl.png new file mode 100644 index 0000000..8dc87f4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gl.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gm.png b/wp-content/themes/score/lib/images/flags/48/gm.png new file mode 100644 index 0000000..e4bee6c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gn.png b/wp-content/themes/score/lib/images/flags/48/gn.png new file mode 100644 index 0000000..f71c621 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gn.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gp.png b/wp-content/themes/score/lib/images/flags/48/gp.png new file mode 100644 index 0000000..53dca17 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gp.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gq.png b/wp-content/themes/score/lib/images/flags/48/gq.png new file mode 100644 index 0000000..13d3c92 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gq.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gr.png b/wp-content/themes/score/lib/images/flags/48/gr.png new file mode 100644 index 0000000..b00fd5a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gs.png b/wp-content/themes/score/lib/images/flags/48/gs.png new file mode 100644 index 0000000..af21dfe Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gs.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gt.png b/wp-content/themes/score/lib/images/flags/48/gt.png new file mode 100644 index 0000000..e5580e9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gt.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gu.png b/wp-content/themes/score/lib/images/flags/48/gu.png new file mode 100644 index 0000000..f1d6b7a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gu.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gw.png b/wp-content/themes/score/lib/images/flags/48/gw.png new file mode 100644 index 0000000..d097a28 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gw.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/gy.png b/wp-content/themes/score/lib/images/flags/48/gy.png new file mode 100644 index 0000000..76eabd9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/gy.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/hk.png b/wp-content/themes/score/lib/images/flags/48/hk.png new file mode 100644 index 0000000..46208e0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/hk.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/hm.png b/wp-content/themes/score/lib/images/flags/48/hm.png new file mode 100644 index 0000000..8937404 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/hm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/hn.png b/wp-content/themes/score/lib/images/flags/48/hn.png new file mode 100644 index 0000000..1f327f1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/hn.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/hr.png b/wp-content/themes/score/lib/images/flags/48/hr.png new file mode 100644 index 0000000..4cb4ea7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/hr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ht.png b/wp-content/themes/score/lib/images/flags/48/ht.png new file mode 100644 index 0000000..325cef0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ht.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/hu.png b/wp-content/themes/score/lib/images/flags/48/hu.png new file mode 100644 index 0000000..af757c6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/hu.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/id.png b/wp-content/themes/score/lib/images/flags/48/id.png new file mode 100644 index 0000000..ed42d1f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/id.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ie.png b/wp-content/themes/score/lib/images/flags/48/ie.png new file mode 100644 index 0000000..74219ab Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ie.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/il.png b/wp-content/themes/score/lib/images/flags/48/il.png new file mode 100644 index 0000000..3ba7553 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/il.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/im.png b/wp-content/themes/score/lib/images/flags/48/im.png new file mode 100644 index 0000000..9478023 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/im.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/in.png b/wp-content/themes/score/lib/images/flags/48/in.png new file mode 100644 index 0000000..e0a8865 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/in.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/io.png b/wp-content/themes/score/lib/images/flags/48/io.png new file mode 100644 index 0000000..13e0c4c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/io.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/iq.png b/wp-content/themes/score/lib/images/flags/48/iq.png new file mode 100644 index 0000000..cdd0c4f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/iq.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ir.png b/wp-content/themes/score/lib/images/flags/48/ir.png new file mode 100644 index 0000000..70da4fc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ir.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/is.png b/wp-content/themes/score/lib/images/flags/48/is.png new file mode 100644 index 0000000..33d68dd Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/is.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/it.png b/wp-content/themes/score/lib/images/flags/48/it.png new file mode 100644 index 0000000..c31017e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/it.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/je.png b/wp-content/themes/score/lib/images/flags/48/je.png new file mode 100644 index 0000000..b8f5ba6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/je.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/jm.png b/wp-content/themes/score/lib/images/flags/48/jm.png new file mode 100644 index 0000000..e79cf2a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/jm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/jo.png b/wp-content/themes/score/lib/images/flags/48/jo.png new file mode 100644 index 0000000..b627a5c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/jo.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/jp.png b/wp-content/themes/score/lib/images/flags/48/jp.png new file mode 100644 index 0000000..29c45d5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/jp.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ke.png b/wp-content/themes/score/lib/images/flags/48/ke.png new file mode 100644 index 0000000..e3d7f12 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ke.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/kg.png b/wp-content/themes/score/lib/images/flags/48/kg.png new file mode 100644 index 0000000..cf2d885 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/kg.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/kh.png b/wp-content/themes/score/lib/images/flags/48/kh.png new file mode 100644 index 0000000..65b4c06 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/kh.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ki.png b/wp-content/themes/score/lib/images/flags/48/ki.png new file mode 100644 index 0000000..5d286d2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ki.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/km.png b/wp-content/themes/score/lib/images/flags/48/km.png new file mode 100644 index 0000000..051fc5a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/km.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/kn.png b/wp-content/themes/score/lib/images/flags/48/kn.png new file mode 100644 index 0000000..75f3ed2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/kn.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/kp.png b/wp-content/themes/score/lib/images/flags/48/kp.png new file mode 100644 index 0000000..f51a2bf Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/kp.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/kr.png b/wp-content/themes/score/lib/images/flags/48/kr.png new file mode 100644 index 0000000..13e27e1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/kr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/kw.png b/wp-content/themes/score/lib/images/flags/48/kw.png new file mode 100644 index 0000000..8d7adb1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/kw.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ky.png b/wp-content/themes/score/lib/images/flags/48/ky.png new file mode 100644 index 0000000..f2a6b6c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ky.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/kz.png b/wp-content/themes/score/lib/images/flags/48/kz.png new file mode 100644 index 0000000..8980ad9 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/kz.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/la.png b/wp-content/themes/score/lib/images/flags/48/la.png new file mode 100644 index 0000000..f3b2309 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/la.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/lb.png b/wp-content/themes/score/lib/images/flags/48/lb.png new file mode 100644 index 0000000..854717e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/lb.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/lc.png b/wp-content/themes/score/lib/images/flags/48/lc.png new file mode 100644 index 0000000..987e1f0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/lc.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/li.png b/wp-content/themes/score/lib/images/flags/48/li.png new file mode 100644 index 0000000..4661f3d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/li.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/lk.png b/wp-content/themes/score/lib/images/flags/48/lk.png new file mode 100644 index 0000000..2a7d925 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/lk.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/lr.png b/wp-content/themes/score/lib/images/flags/48/lr.png new file mode 100644 index 0000000..cadfec1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/lr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ls.png b/wp-content/themes/score/lib/images/flags/48/ls.png new file mode 100644 index 0000000..9af5c4a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ls.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/lt.png b/wp-content/themes/score/lib/images/flags/48/lt.png new file mode 100644 index 0000000..875dd3f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/lt.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/lu.png b/wp-content/themes/score/lib/images/flags/48/lu.png new file mode 100644 index 0000000..cef746a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/lu.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/lv.png b/wp-content/themes/score/lib/images/flags/48/lv.png new file mode 100644 index 0000000..6ace36d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/lv.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ly.png b/wp-content/themes/score/lib/images/flags/48/ly.png new file mode 100644 index 0000000..8176ad5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ly.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ma.png b/wp-content/themes/score/lib/images/flags/48/ma.png new file mode 100644 index 0000000..c1bb970 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ma.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mc.png b/wp-content/themes/score/lib/images/flags/48/mc.png new file mode 100644 index 0000000..bda53b1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mc.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/md.png b/wp-content/themes/score/lib/images/flags/48/md.png new file mode 100644 index 0000000..344855a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/md.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/me.png b/wp-content/themes/score/lib/images/flags/48/me.png new file mode 100644 index 0000000..5142918 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/me.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mf.png b/wp-content/themes/score/lib/images/flags/48/mf.png new file mode 100644 index 0000000..1864906 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mf.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mg.png b/wp-content/themes/score/lib/images/flags/48/mg.png new file mode 100644 index 0000000..31e6d84 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mg.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mh.png b/wp-content/themes/score/lib/images/flags/48/mh.png new file mode 100644 index 0000000..1d15869 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mh.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mk.png b/wp-content/themes/score/lib/images/flags/48/mk.png new file mode 100644 index 0000000..0bc9151 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mk.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ml.png b/wp-content/themes/score/lib/images/flags/48/ml.png new file mode 100644 index 0000000..189bff7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ml.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mm.png b/wp-content/themes/score/lib/images/flags/48/mm.png new file mode 100644 index 0000000..2deafe1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mn.png b/wp-content/themes/score/lib/images/flags/48/mn.png new file mode 100644 index 0000000..83b7542 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mn.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mo.png b/wp-content/themes/score/lib/images/flags/48/mo.png new file mode 100644 index 0000000..e413fa5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mo.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mp.png b/wp-content/themes/score/lib/images/flags/48/mp.png new file mode 100644 index 0000000..525e45e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mp.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mq.png b/wp-content/themes/score/lib/images/flags/48/mq.png new file mode 100644 index 0000000..f2b7be4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mq.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mr.png b/wp-content/themes/score/lib/images/flags/48/mr.png new file mode 100644 index 0000000..fcf1b44 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ms.png b/wp-content/themes/score/lib/images/flags/48/ms.png new file mode 100644 index 0000000..a799545 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ms.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mt.png b/wp-content/themes/score/lib/images/flags/48/mt.png new file mode 100644 index 0000000..a93f9ee Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mt.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mu.png b/wp-content/themes/score/lib/images/flags/48/mu.png new file mode 100644 index 0000000..e4c0b7d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mu.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mv.png b/wp-content/themes/score/lib/images/flags/48/mv.png new file mode 100644 index 0000000..92472ec Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mv.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mw.png b/wp-content/themes/score/lib/images/flags/48/mw.png new file mode 100644 index 0000000..b96d0ad Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mw.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mx.png b/wp-content/themes/score/lib/images/flags/48/mx.png new file mode 100644 index 0000000..f0557d0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mx.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/my.png b/wp-content/themes/score/lib/images/flags/48/my.png new file mode 100644 index 0000000..92686c2 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/my.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/mz.png b/wp-content/themes/score/lib/images/flags/48/mz.png new file mode 100644 index 0000000..07c0a8a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/mz.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/na.png b/wp-content/themes/score/lib/images/flags/48/na.png new file mode 100644 index 0000000..9d14ed3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/na.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/nc.png b/wp-content/themes/score/lib/images/flags/48/nc.png new file mode 100644 index 0000000..dc3e9e1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/nc.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ne.png b/wp-content/themes/score/lib/images/flags/48/ne.png new file mode 100644 index 0000000..06a7c08 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ne.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/nf.png b/wp-content/themes/score/lib/images/flags/48/nf.png new file mode 100644 index 0000000..04dd842 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/nf.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ng.png b/wp-content/themes/score/lib/images/flags/48/ng.png new file mode 100644 index 0000000..899e0be Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ng.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ni.png b/wp-content/themes/score/lib/images/flags/48/ni.png new file mode 100644 index 0000000..ad8ab44 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ni.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/nl.png b/wp-content/themes/score/lib/images/flags/48/nl.png new file mode 100644 index 0000000..d5ea768 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/nl.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/no.png b/wp-content/themes/score/lib/images/flags/48/no.png new file mode 100644 index 0000000..2b03236 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/no.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/none.png b/wp-content/themes/score/lib/images/flags/48/none.png new file mode 100644 index 0000000..86ad58d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/none.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/np.png b/wp-content/themes/score/lib/images/flags/48/np.png new file mode 100644 index 0000000..f011adc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/np.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/nr.png b/wp-content/themes/score/lib/images/flags/48/nr.png new file mode 100644 index 0000000..f763397 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/nr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/nu.png b/wp-content/themes/score/lib/images/flags/48/nu.png new file mode 100644 index 0000000..e3698b3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/nu.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/nz.png b/wp-content/themes/score/lib/images/flags/48/nz.png new file mode 100644 index 0000000..ef474ad Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/nz.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/om.png b/wp-content/themes/score/lib/images/flags/48/om.png new file mode 100644 index 0000000..111b114 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/om.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pa.png b/wp-content/themes/score/lib/images/flags/48/pa.png new file mode 100644 index 0000000..e39849d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pa.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pe.png b/wp-content/themes/score/lib/images/flags/48/pe.png new file mode 100644 index 0000000..f971a35 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pe.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pf.png b/wp-content/themes/score/lib/images/flags/48/pf.png new file mode 100644 index 0000000..cbc56d0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pf.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pg.png b/wp-content/themes/score/lib/images/flags/48/pg.png new file mode 100644 index 0000000..7b0d0ee Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pg.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ph.png b/wp-content/themes/score/lib/images/flags/48/ph.png new file mode 100644 index 0000000..d025d4d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ph.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pk.png b/wp-content/themes/score/lib/images/flags/48/pk.png new file mode 100644 index 0000000..1630f55 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pk.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pl.png b/wp-content/themes/score/lib/images/flags/48/pl.png new file mode 100644 index 0000000..7a71804 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pl.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pm.png b/wp-content/themes/score/lib/images/flags/48/pm.png new file mode 100644 index 0000000..778e4cb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pn.png b/wp-content/themes/score/lib/images/flags/48/pn.png new file mode 100644 index 0000000..2da1b44 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pn.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pr.png b/wp-content/themes/score/lib/images/flags/48/pr.png new file mode 100644 index 0000000..146ca81 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ps.png b/wp-content/themes/score/lib/images/flags/48/ps.png new file mode 100644 index 0000000..6f654e3 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ps.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pt.png b/wp-content/themes/score/lib/images/flags/48/pt.png new file mode 100644 index 0000000..5b39073 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pt.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/pw.png b/wp-content/themes/score/lib/images/flags/48/pw.png new file mode 100644 index 0000000..21a45c4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/pw.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/py.png b/wp-content/themes/score/lib/images/flags/48/py.png new file mode 100644 index 0000000..d8cc505 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/py.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/qa.png b/wp-content/themes/score/lib/images/flags/48/qa.png new file mode 100644 index 0000000..1dd1183 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/qa.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/re.png b/wp-content/themes/score/lib/images/flags/48/re.png new file mode 100644 index 0000000..8087909 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/re.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ro.png b/wp-content/themes/score/lib/images/flags/48/ro.png new file mode 100644 index 0000000..b8cdad8 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ro.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/rs.png b/wp-content/themes/score/lib/images/flags/48/rs.png new file mode 100644 index 0000000..b2afcf5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/rs.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ru.png b/wp-content/themes/score/lib/images/flags/48/ru.png new file mode 100644 index 0000000..a5b9528 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ru.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/rw.png b/wp-content/themes/score/lib/images/flags/48/rw.png new file mode 100644 index 0000000..f6f5163 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/rw.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sa.png b/wp-content/themes/score/lib/images/flags/48/sa.png new file mode 100644 index 0000000..9630e83 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sa.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sb.png b/wp-content/themes/score/lib/images/flags/48/sb.png new file mode 100644 index 0000000..f1ffebb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sb.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sc.png b/wp-content/themes/score/lib/images/flags/48/sc.png new file mode 100644 index 0000000..de605e6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sc.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sd.png b/wp-content/themes/score/lib/images/flags/48/sd.png new file mode 100644 index 0000000..3a37985 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sd.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/se.png b/wp-content/themes/score/lib/images/flags/48/se.png new file mode 100644 index 0000000..2c9bd9d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/se.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sg.png b/wp-content/themes/score/lib/images/flags/48/sg.png new file mode 100644 index 0000000..4b88785 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sg.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sh.png b/wp-content/themes/score/lib/images/flags/48/sh.png new file mode 100644 index 0000000..c5bdece Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sh.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/si.png b/wp-content/themes/score/lib/images/flags/48/si.png new file mode 100644 index 0000000..cfa83b5 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/si.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sj.png b/wp-content/themes/score/lib/images/flags/48/sj.png new file mode 100644 index 0000000..2b03236 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sj.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sk.png b/wp-content/themes/score/lib/images/flags/48/sk.png new file mode 100644 index 0000000..418c786 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sk.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sl.png b/wp-content/themes/score/lib/images/flags/48/sl.png new file mode 100644 index 0000000..47b26eb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sl.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sm.png b/wp-content/themes/score/lib/images/flags/48/sm.png new file mode 100644 index 0000000..92bd72b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sn.png b/wp-content/themes/score/lib/images/flags/48/sn.png new file mode 100644 index 0000000..13c9365 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sn.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/so.png b/wp-content/themes/score/lib/images/flags/48/so.png new file mode 100644 index 0000000..6a02c72 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/so.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sr.png b/wp-content/themes/score/lib/images/flags/48/sr.png new file mode 100644 index 0000000..cb4a87a Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/st.png b/wp-content/themes/score/lib/images/flags/48/st.png new file mode 100644 index 0000000..b5187c6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/st.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sv.png b/wp-content/themes/score/lib/images/flags/48/sv.png new file mode 100644 index 0000000..adf8750 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sv.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sy.png b/wp-content/themes/score/lib/images/flags/48/sy.png new file mode 100644 index 0000000..0584c20 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sy.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/sz.png b/wp-content/themes/score/lib/images/flags/48/sz.png new file mode 100644 index 0000000..3585ac0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/sz.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tc.png b/wp-content/themes/score/lib/images/flags/48/tc.png new file mode 100644 index 0000000..fc66ef0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tc.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/td.png b/wp-content/themes/score/lib/images/flags/48/td.png new file mode 100644 index 0000000..c74a4a4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/td.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tf.png b/wp-content/themes/score/lib/images/flags/48/tf.png new file mode 100644 index 0000000..8d8873c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tf.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tg.png b/wp-content/themes/score/lib/images/flags/48/tg.png new file mode 100644 index 0000000..5a100b1 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tg.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/th.png b/wp-content/themes/score/lib/images/flags/48/th.png new file mode 100644 index 0000000..8f3b5e7 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/th.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tj.png b/wp-content/themes/score/lib/images/flags/48/tj.png new file mode 100644 index 0000000..09a7907 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tj.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tk.png b/wp-content/themes/score/lib/images/flags/48/tk.png new file mode 100644 index 0000000..c38340c Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tk.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tl.png b/wp-content/themes/score/lib/images/flags/48/tl.png new file mode 100644 index 0000000..296fba0 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tl.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tm.png b/wp-content/themes/score/lib/images/flags/48/tm.png new file mode 100644 index 0000000..e3c50ed Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tn.png b/wp-content/themes/score/lib/images/flags/48/tn.png new file mode 100644 index 0000000..d867a5e Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tn.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/to.png b/wp-content/themes/score/lib/images/flags/48/to.png new file mode 100644 index 0000000..f62ba37 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/to.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tr.png b/wp-content/themes/score/lib/images/flags/48/tr.png new file mode 100644 index 0000000..0398e54 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tr.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tt.png b/wp-content/themes/score/lib/images/flags/48/tt.png new file mode 100644 index 0000000..cf85660 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tt.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tv.png b/wp-content/themes/score/lib/images/flags/48/tv.png new file mode 100644 index 0000000..3a403a6 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tv.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tw.png b/wp-content/themes/score/lib/images/flags/48/tw.png new file mode 100644 index 0000000..956d853 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tw.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/tz.png b/wp-content/themes/score/lib/images/flags/48/tz.png new file mode 100644 index 0000000..f0e1f39 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/tz.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ua.png b/wp-content/themes/score/lib/images/flags/48/ua.png new file mode 100644 index 0000000..78e4945 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ua.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ug.png b/wp-content/themes/score/lib/images/flags/48/ug.png new file mode 100644 index 0000000..744d39d Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ug.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/um.png b/wp-content/themes/score/lib/images/flags/48/um.png new file mode 100644 index 0000000..48c448f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/um.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/us.png b/wp-content/themes/score/lib/images/flags/48/us.png new file mode 100644 index 0000000..48c448f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/us.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/uy.png b/wp-content/themes/score/lib/images/flags/48/uy.png new file mode 100644 index 0000000..0eddedc Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/uy.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/uz.png b/wp-content/themes/score/lib/images/flags/48/uz.png new file mode 100644 index 0000000..97ade3f Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/uz.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/va.png b/wp-content/themes/score/lib/images/flags/48/va.png new file mode 100644 index 0000000..c344e8b Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/va.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/vc.png b/wp-content/themes/score/lib/images/flags/48/vc.png new file mode 100644 index 0000000..e633360 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/vc.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ve.png b/wp-content/themes/score/lib/images/flags/48/ve.png new file mode 100644 index 0000000..8ba69c4 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ve.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/vg.png b/wp-content/themes/score/lib/images/flags/48/vg.png new file mode 100644 index 0000000..eb22e44 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/vg.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/vi.png b/wp-content/themes/score/lib/images/flags/48/vi.png new file mode 100644 index 0000000..13be807 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/vi.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/vn.png b/wp-content/themes/score/lib/images/flags/48/vn.png new file mode 100644 index 0000000..c9368df Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/vn.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/vu.png b/wp-content/themes/score/lib/images/flags/48/vu.png new file mode 100644 index 0000000..ff6cbef Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/vu.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/wf.png b/wp-content/themes/score/lib/images/flags/48/wf.png new file mode 100644 index 0000000..19cae20 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/wf.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ws.png b/wp-content/themes/score/lib/images/flags/48/ws.png new file mode 100644 index 0000000..e671ebb Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ws.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/ye.png b/wp-content/themes/score/lib/images/flags/48/ye.png new file mode 100644 index 0000000..987a212 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/ye.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/yt.png b/wp-content/themes/score/lib/images/flags/48/yt.png new file mode 100644 index 0000000..d9bd063 Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/yt.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/za.png b/wp-content/themes/score/lib/images/flags/48/za.png new file mode 100644 index 0000000..d1920de Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/za.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/zm.png b/wp-content/themes/score/lib/images/flags/48/zm.png new file mode 100644 index 0000000..639c3ac Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/zm.png differ diff --git a/wp-content/themes/score/lib/images/flags/48/zw.png b/wp-content/themes/score/lib/images/flags/48/zw.png new file mode 100644 index 0000000..39106df Binary files /dev/null and b/wp-content/themes/score/lib/images/flags/48/zw.png differ diff --git a/wp-content/themes/score/lib/images/footer-column-bg.png b/wp-content/themes/score/lib/images/footer-column-bg.png new file mode 100644 index 0000000..ddf0f92 Binary files /dev/null and b/wp-content/themes/score/lib/images/footer-column-bg.png differ diff --git a/wp-content/themes/score/lib/images/forum-icon.png b/wp-content/themes/score/lib/images/forum-icon.png new file mode 100644 index 0000000..821fb9b Binary files /dev/null and b/wp-content/themes/score/lib/images/forum-icon.png differ diff --git a/wp-content/themes/score/lib/images/friends-icon.png b/wp-content/themes/score/lib/images/friends-icon.png new file mode 100644 index 0000000..938ec0d Binary files /dev/null and b/wp-content/themes/score/lib/images/friends-icon.png differ diff --git a/wp-content/themes/score/lib/images/loader.gif b/wp-content/themes/score/lib/images/loader.gif new file mode 100644 index 0000000..ccbbd0a Binary files /dev/null and b/wp-content/themes/score/lib/images/loader.gif differ diff --git a/wp-content/themes/score/lib/images/logo-black.png b/wp-content/themes/score/lib/images/logo-black.png new file mode 100644 index 0000000..9a50762 Binary files /dev/null and b/wp-content/themes/score/lib/images/logo-black.png differ diff --git a/wp-content/themes/score/lib/images/logo-blue.png b/wp-content/themes/score/lib/images/logo-blue.png new file mode 100644 index 0000000..f645a6f Binary files /dev/null and b/wp-content/themes/score/lib/images/logo-blue.png differ diff --git a/wp-content/themes/score/lib/images/logo-footer.png b/wp-content/themes/score/lib/images/logo-footer.png new file mode 100644 index 0000000..d8ec6d8 Binary files /dev/null and b/wp-content/themes/score/lib/images/logo-footer.png differ diff --git a/wp-content/themes/score/lib/images/page-bg-black.png b/wp-content/themes/score/lib/images/page-bg-black.png new file mode 100644 index 0000000..3cd5451 Binary files /dev/null and b/wp-content/themes/score/lib/images/page-bg-black.png differ diff --git a/wp-content/themes/score/lib/images/page-bg-blue.png b/wp-content/themes/score/lib/images/page-bg-blue.png new file mode 100644 index 0000000..daf9740 Binary files /dev/null and b/wp-content/themes/score/lib/images/page-bg-blue.png differ diff --git a/wp-content/themes/score/lib/images/playIcon.png b/wp-content/themes/score/lib/images/playIcon.png new file mode 100644 index 0000000..45e265f Binary files /dev/null and b/wp-content/themes/score/lib/images/playIcon.png differ diff --git a/wp-content/themes/score/lib/images/profile-icon.png b/wp-content/themes/score/lib/images/profile-icon.png new file mode 100644 index 0000000..fb2b3ab Binary files /dev/null and b/wp-content/themes/score/lib/images/profile-icon.png differ diff --git a/wp-content/themes/score/lib/images/slide-caption-bg.png b/wp-content/themes/score/lib/images/slide-caption-bg.png new file mode 100644 index 0000000..2f06c8e Binary files /dev/null and b/wp-content/themes/score/lib/images/slide-caption-bg.png differ diff --git a/wp-content/themes/score/lib/images/social-bg.png b/wp-content/themes/score/lib/images/social-bg.png new file mode 100644 index 0000000..b182697 Binary files /dev/null and b/wp-content/themes/score/lib/images/social-bg.png differ diff --git a/wp-content/themes/score/lib/images/sprite-rtl.png b/wp-content/themes/score/lib/images/sprite-rtl.png new file mode 100644 index 0000000..1cf5c59 Binary files /dev/null and b/wp-content/themes/score/lib/images/sprite-rtl.png differ diff --git a/wp-content/themes/score/lib/images/sprite.png b/wp-content/themes/score/lib/images/sprite.png new file mode 100644 index 0000000..138a687 Binary files /dev/null and b/wp-content/themes/score/lib/images/sprite.png differ diff --git a/wp-content/themes/score/lib/images/stripes-bg.png b/wp-content/themes/score/lib/images/stripes-bg.png new file mode 100644 index 0000000..525b74a Binary files /dev/null and b/wp-content/themes/score/lib/images/stripes-bg.png differ diff --git a/wp-content/themes/score/lib/images/video-icon.png b/wp-content/themes/score/lib/images/video-icon.png new file mode 100644 index 0000000..6fd5368 Binary files /dev/null and b/wp-content/themes/score/lib/images/video-icon.png differ diff --git a/wp-content/themes/score/lib/inc/contact.php b/wp-content/themes/score/lib/inc/contact.php new file mode 100644 index 0000000..aa7f739 --- /dev/null +++ b/wp-content/themes/score/lib/inc/contact.php @@ -0,0 +1,66 @@ +' . "\r\n" . __('Reply-To: ', 'gp_lang') . $contactEmail; + + mail($emailTo, $subject, $body, $headers); + + if($sendCopy == true) { + $subject = 'You emailed Your Name'; + $headers = 'From: Your Name '; + mail($contactEmail, $subject, $body, $headers); + } + + $emailSent = true; + +} + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/inc/options.php b/wp-content/themes/score/lib/inc/options.php new file mode 100644 index 0000000..4dbf41b --- /dev/null +++ b/wp-content/themes/score/lib/inc/options.php @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/wp-content/themes/score/lib/inc/page-styling.php b/wp-content/themes/score/lib/inc/page-styling.php new file mode 100644 index 0000000..652ea31 --- /dev/null +++ b/wp-content/themes/score/lib/inc/page-styling.php @@ -0,0 +1,404 @@ +ID, 'ghostpool_skin', true) && get_post_meta($post->ID, 'ghostpool_skin', true) != "Default") { + $gp_settings['skin'] = "skin-".get_post_meta($post->ID, 'ghostpool_skin', true); +} else { + $gp_settings['skin'] = "skin-".$theme_skin; +} + +// Post Type +$gp_settings['post_type'] = get_post_meta($post->ID, 'ghostpool_post_type', true); + + +/*************************** Homepage ***************************/ + +if(is_home() OR is_front_page()) { + + $gp_settings['page_var'] = 'homepage'; + $gp_settings['cats'] = $theme_homepage_cats; + $gp_settings['thumbnail_width'] = $theme_homepage_thumbnail_width; + $gp_settings['thumbnail_height'] = $theme_homepage_thumbnail_height; + $gp_settings['image_wrap'] = $theme_homepage_image_wrap; + $gp_settings['layout'] = $theme_homepage_layout; + $gp_settings['title'] = $theme_homepage_title; + $gp_settings['posts_per_page'] = $theme_homepage_posts_per_page; + $gp_settings['content_display'] = $theme_homepage_content_display; + $gp_settings['excerpt_length'] = $theme_homepage_excerpt_length; + $gp_settings['read_more'] = $theme_homepage_read_more; + //$gp_settings['score_type'] = $theme_homepage_score_type; + $gp_settings['review_date_column'] = $theme_homepage_review_date_column; + $gp_settings['dropdown_filter'] = $theme_homepage_dropdown_filter; + $gp_settings['pagination'] = $theme_homepage_pagination; + $gp_settings['meta_date'] = $theme_homepage_date; + $gp_settings['meta_author'] = $theme_homepage_author; + $gp_settings['meta_cats'] = $theme_homepage_cats_; + $gp_settings['meta_tags'] = $theme_homepage_tags; + $gp_settings['meta_comments'] = $theme_homepage_comments; + $gp_settings['meta_share_link'] = "1"; + $gp_settings['meta_tags'] = $theme_homepage_tags; + + // Column Width + if($gp_settings['layout'] == "fullwidth") { + $gp_settings['content_width'] = "920"; + } else { + $gp_settings['content_width'] = "590"; + } + + +/*************************** BuddyPress ***************************/ + +} elseif((function_exists('bp_is_active') && !bp_is_blog_page()) OR (function_exists('is_bbpress') && is_bbpress())) { + + $gp_settings['layout'] = "sb-right"; + $gp_settings['title'] = "Show"; + $gp_settings['meta_date'] = "1"; + $gp_settings['meta_author'] = "1"; + $gp_settings['meta_cats'] = "1"; + $gp_settings['meta_tags'] = "1"; + $gp_settings['meta_comments'] = "1"; + $gp_settings['meta_share_link'] = "1"; + + +/*************************** Categories, Archives etc. ***************************/ + +} elseif(is_archive() OR is_search()) { + + $gp_settings['thumbnail_width'] = $theme_cat_thumbnail_width; + $gp_settings['thumbnail_height'] = $theme_cat_thumbnail_height; + $gp_settings['image_wrap'] = $theme_cat_image_wrap; + $gp_settings['layout'] = $theme_cat_layout; + $gp_settings['title'] = $theme_cat_title; + $gp_settings['posts_per_page'] = $theme_cat_posts_per_page; + $gp_settings['content_display'] = $theme_cat_content_display; + $gp_settings['excerpt_length'] = $theme_cat_excerpt_length; + $gp_settings['read_more'] = $theme_cat_read_more; + $gp_settings['score_type'] = $theme_cat_score_type; + $gp_settings['review_date_column'] = $theme_cat_review_date_column; + $gp_settings['dropdown_filter'] = $theme_cat_dropdown_filter; + $gp_settings['meta_date'] = $theme_cat_date; + $gp_settings['meta_author'] = $theme_cat_author; + $gp_settings['meta_cats'] = $theme_cat_cats; + $gp_settings['meta_tags'] = $theme_cat_tags; + $gp_settings['meta_comments'] = $theme_cat_comments; + $gp_settings['meta_share_link'] = "1"; + $gp_settings['meta_tags'] = $theme_cat_tags; + + // Column Width + if($gp_settings['layout'] == "fullwidth") { + $gp_settings['content_width'] = "920"; + } else { + $gp_settings['content_width'] = "590"; + } + + +/*************************** Blog Page Template ***************************/ + +} elseif(is_page_template('blog.php')) { + + $gp_settings['cats'] = $theme_blog_cats; + $gp_settings['thumbnail_width'] = $theme_blog_thumbnail_width; + $gp_settings['thumbnail_height'] = $theme_blog_thumbnail_height; + $gp_settings['image_wrap'] = $theme_blog_image_wrap; + $gp_settings['layout'] = $theme_blog_layout; + $gp_settings['title'] = $theme_blog_title; + $gp_settings['posts_per_page'] = $theme_blog_posts_per_page; + $gp_settings['content_display'] = $theme_blog_content_display; + $gp_settings['excerpt_length'] = $theme_blog_excerpt_length; + $gp_settings['read_more'] = $theme_blog_read_more; + $gp_settings['score_type'] = $theme_blog_score_type; + $gp_settings['review_date_column'] = $theme_blog_review_date_column; + $gp_settings['dropdown_filter'] = $theme_blog_dropdown_filter; + $gp_settings['meta_date'] = $theme_blog_date; + $gp_settings['meta_author'] = $theme_blog_author; + $gp_settings['meta_cats'] = $theme_blog_cats_; + $gp_settings['meta_tags'] = $theme_blog_tags; + $gp_settings['meta_comments'] = $theme_blog_comments; + $gp_settings['meta_share_link'] = "1"; + $gp_settings['meta_tags'] = $theme_blog_tags; + + // Column Width + if($gp_settings['layout'] == "fullwidth") { + $gp_settings['content_width'] = "920"; + } else { + $gp_settings['content_width'] = "590"; + } + + +/*************************** Posts ***************************/ + +} elseif(is_single() && $gp_settings['post_type'] != "Review") { + + // Show Image + if(get_post_meta($post->ID, 'ghostpool_show_image', true) && get_post_meta($post->ID, 'ghostpool_show_image', true) != "Default") { + $gp_settings['show_image'] = get_post_meta($post->ID, 'ghostpool_show_image', true); + } else { + $gp_settings['show_image'] = $theme_show_post_image; + } + + // Image Dimensions + if(get_post_meta($post->ID, 'ghostpool_image_width', true) && get_post_meta($post->ID, 'ghostpool_image_width', true)) { + $gp_settings['image_width'] = get_post_meta($post->ID, 'ghostpool_image_width', true); + } else { + $gp_settings['image_width'] = $theme_post_image_width; + } + if(get_post_meta($post->ID, 'ghostpool_image_height', true) && get_post_meta($post->ID, 'ghostpool_image_height', true)) { + $gp_settings['image_height'] = get_post_meta($post->ID, 'ghostpool_image_height', true); + } else { + $gp_settings['image_height'] = $theme_post_image_height; + } + + // Image Wrap + if(get_post_meta($post->ID, 'ghostpool_image_wrap', true) && get_post_meta($post->ID, 'ghostpool_image_wrap', true) != "Default") { + $gp_settings['image_wrap'] = get_post_meta($post->ID, 'ghostpool_image_wrap', true); + } else { + $gp_settings['image_wrap'] = $theme_post_image_wrap; + } + + // Layout + if(is_attachment()) { + $gp_settings['layout'] = "fullwidth"; + } else { + if(get_post_meta($post->ID, 'ghostpool_layout', true) && get_post_meta($post->ID, 'ghostpool_layout', true) != "Default") { + $gp_settings['layout'] = get_post_meta($post->ID, 'ghostpool_layout', true); + } else { + $gp_settings['layout'] = $theme_post_layout; + } + } + + // Title + if(get_post_meta($post->ID, 'ghostpool_title', true) && get_post_meta($post->ID, 'ghostpool_title', true) != "Default") { + $gp_settings['title'] = get_post_meta($post->ID, 'ghostpool_title', true); + } else { + $gp_settings['title'] = $theme_post_title; + } + + // Post Meta + $gp_settings['meta_date'] = $theme_post_date; + $gp_settings['meta_author'] = $theme_post_author; + $gp_settings['meta_cats'] = $theme_post_cats; + $gp_settings['meta_tags'] = $theme_post_tags; + $gp_settings['meta_comments'] = $theme_post_comments; + $gp_settings['meta_share_link'] = $theme_post_share_link; + + // Author Info Panel + $gp_settings['author_info'] = $theme_post_author_info; + + // Related Items + $gp_settings['related_items'] = $theme_post_related_items; + + +/*************************** Review Posts ***************************/ + +} elseif(is_single() && $gp_settings['post_type'] == "Review") { + + // Show Image + if(get_post_meta($post->ID, 'ghostpool_show_image', true) && get_post_meta($post->ID, 'ghostpool_show_image', true) != "Default") { + $gp_settings['show_image'] = get_post_meta($post->ID, 'ghostpool_show_image', true); + } else { + $gp_settings['show_image'] = $theme_show_review_image; + } + + // Image Dimensions + if(get_post_meta($post->ID, 'ghostpool_image_width', true) && get_post_meta($post->ID, 'ghostpool_image_width', true)) { + $gp_settings['image_width'] = get_post_meta($post->ID, 'ghostpool_image_width', true); + } else { + $gp_settings['image_width'] = $theme_review_image_width; + } + if(get_post_meta($post->ID, 'ghostpool_image_height', true) && get_post_meta($post->ID, 'ghostpool_image_height', true)) { + $gp_settings['image_height'] = get_post_meta($post->ID, 'ghostpool_image_height', true); + } else { + $gp_settings['image_height'] = $theme_review_image_height; + } + + // Image Wrap + if(get_post_meta($post->ID, 'ghostpool_image_wrap', true) && get_post_meta($post->ID, 'ghostpool_image_wrap', true) != "Default") { + $gp_settings['image_wrap'] = get_post_meta($post->ID, 'ghostpool_image_wrap', true); + } else { + $gp_settings['image_wrap'] = $theme_review_image_wrap; + } + + // Layout + if(get_post_meta($post->ID, 'ghostpool_layout', true) && get_post_meta($post->ID, 'ghostpool_layout', true) != "Default") { + $gp_settings['layout'] = get_post_meta($post->ID, 'ghostpool_layout', true); + } else { + $gp_settings['layout'] = $theme_review_layout; + } + + // Title + if(get_post_meta($post->ID, 'ghostpool_title', true) && get_post_meta($post->ID, 'ghostpool_title', true) != "Default") { + $gp_settings['title'] = get_post_meta($post->ID, 'ghostpool_title', true); + } else { + $gp_settings['title'] = $theme_review_title; + } + + // User Voting + if(get_post_meta($post->ID, 'ghostpool_user_voting', true) && get_post_meta($post->ID, 'ghostpool_user_voting', true) != "Default") { + $gp_settings['user_voting'] = get_post_meta($post->ID, 'ghostpool_user_voting', true); + } else { + $gp_settings['user_voting'] = $theme_user_voting; + } + + // User Comments + if(get_post_meta($post->ID, 'ghostpool_user_comments', true) && get_post_meta($post->ID, 'ghostpool_user_comments', true) != "Default") { + $gp_settings['user_comments'] = get_post_meta($post->ID, 'ghostpool_user_comments', true); + } else { + $gp_settings['user_comments'] = $theme_user_comments; + } + + // Comment Thumbs + if(get_post_meta($post->ID, 'ghostpool_comment_thumbs', true) && get_post_meta($post->ID, 'ghostpool_comment_thumbs', true) != "Default") { + $gp_settings['comment_thumbs'] = get_post_meta($post->ID, 'ghostpool_comment_thumbs', true); + } else { + $gp_settings['comment_thumbs'] = $theme_comment_thumbs; + } + + // Column Width + if($gp_settings['layout'] == "fullwidth") { + $gp_settings['content_width'] = "920"; + } else { + $gp_settings['content_width'] = "590"; + } + + // Score Colors + if(defined('STARRATING_INSTALLED')) { + + $gp_settings['gp_gdsr'] = wp_gdsr_rating_article(); + + // Site Score Colors + if($gp_settings['gp_gdsr']->review <= $theme_score_range_2) { + $site_score_color = ' style="background: '.$theme_site_score_color_1.';"'; + } elseif($gp_settings['gp_gdsr']->review >= $theme_score_range_3 && $gp_settings['gp_gdsr']->review <= $theme_score_range_4) { + $site_score_color = ' style="background: '.$theme_site_score_color_2.';"'; + } elseif($gp_settings['gp_gdsr']->review >= $theme_score_range_5 && $gp_settings['gp_gdsr']->review <= $theme_score_range_6) { + $site_score_color = ' style="background: '.$theme_site_score_color_3.';"'; + } elseif($gp_settings['gp_gdsr']->review >= $theme_score_range_7) { + $site_score_color = ' style="background: '.$theme_site_score_color_4.';"'; + } + + // User Score Colors + if($gp_settings['gp_gdsr']->rating <= $theme_score_range_2) { + $user_score_color = ' style="background: '.$theme_user_score_color_1.';"'; + } elseif($gp_settings['gp_gdsr']->rating >= $theme_score_range_3 && $gp_settings['gp_gdsr']->rating <= $theme_score_range_4) { + $user_score_color = ' style="background: '.$theme_user_score_color_2.';"'; + } elseif($gp_settings['gp_gdsr']->rating >= $theme_score_range_5 && $gp_settings['gp_gdsr']->rating <= $theme_score_range_6) { + $user_score_color = ' style="background: '.$theme_user_score_color_3.';"'; + } elseif($gp_settings['gp_gdsr']->rating >= $theme_score_range_7) { + $user_score_color = ' style="background: '.$theme_user_score_color_4.';"'; + } + + } + + // Review Post Options + $gp_settings['review_image_link'] = get_post_meta($post->ID, 'ghostpool_review_image_link', true); + $gp_settings['review_image_links_to'] = get_post_meta($post->ID, 'ghostpool_review_image_links_to', true); + + // Review Container Widths + $gp_settings['review_left_width'] = $gp_settings['image_width'] + 2; + $gp_settings['review_right_width'] = $gp_settings['content_width'] - $gp_settings['image_width'] - 32; + + // Good/Bad Width + if($gp_settings['gp_gdsr']->review > 0) { + $gp_settings['good_bad_width'] = $gp_settings['content_width'] - $gp_settings['image_width'] - 182; + } else { + $gp_settings['good_bad_width'] = $gp_settings['content_width'] - $gp_settings['image_width'] - 62; + } + + // Review Tab + if(get_post_meta($post->ID, 'ghostpool_link_title_0', true)) { + $gp_settings['review_tab'] = get_post_meta($post->ID, 'ghostpool_link_title_0', true); + } else { + $gp_settings['review_tab'] = __('Review', 'gp_lang'); + } + + // Review Meta + $gp_settings['meta_date'] = $theme_review_date; + $gp_settings['meta_author'] = $theme_review_author; + $gp_settings['meta_cats'] = $theme_review_cats; + $gp_settings['meta_tags'] = $theme_review_tags; + $gp_settings['meta_comments'] = $theme_review_comments; + $gp_settings['meta_share_link'] = $theme_review_share_link; + $gp_settings['meta_tags'] = $theme_review_tags; + + // Author Info Panel + $gp_settings['author_info'] = $theme_review_author_info; + + // Related Items + $gp_settings['related_items'] = $theme_review_related_items; + + +/*************************** Pages, Attachments, 404 etc. ***************************/ + +} else { + + // Show Image + if(get_post_meta($post->ID, 'ghostpool_show_image', true) && get_post_meta($post->ID, 'ghostpool_show_image', true) != "Default") { + $gp_settings['show_image'] = get_post_meta($post->ID, 'ghostpool_show_image', true); + } else { + $gp_settings['show_image'] = $theme_show_page_image; + } + + // Image Dimensions + if(get_post_meta($post->ID, 'ghostpool_image_width', true) && get_post_meta($post->ID, 'ghostpool_image_width', true)) { + $gp_settings['image_width'] = get_post_meta($post->ID, 'ghostpool_image_width', true); + } else { + $gp_settings['image_width'] = $theme_page_image_width; + } + if(get_post_meta($post->ID, 'ghostpool_image_height', true) && get_post_meta($post->ID, 'ghostpool_image_height', true)) { + $gp_settings['image_height'] = get_post_meta($post->ID, 'ghostpool_image_height', true); + } else { + $gp_settings['image_height'] = $theme_page_image_height; + } + + // Image Wrap + if(get_post_meta($post->ID, 'ghostpool_image_wrap', true) && get_post_meta($post->ID, 'ghostpool_image_wrap', true) != "Default") { + $gp_settings['image_wrap'] = get_post_meta($post->ID, 'ghostpool_image_wrap', true); + } else { + $gp_settings['image_wrap'] = $theme_page_image_wrap; + } + + // Layout + if(get_post_meta($post->ID, 'ghostpool_layout', true) && get_post_meta($post->ID, 'ghostpool_layout', true) != "Default") { + $gp_settings['layout'] = get_post_meta($post->ID, 'ghostpool_layout', true); + } else { + $gp_settings['layout'] = $theme_page_layout; + } + + // Title + if(get_post_meta($post->ID, 'ghostpool_title', true) && get_post_meta($post->ID, 'ghostpool_title', true) != "Default") { + $gp_settings['title'] = get_post_meta($post->ID, 'ghostpool_title', true); + } else { + $gp_settings['title'] = $theme_page_title; + } + + // Page Meta + $gp_settings['meta_date'] = $theme_page_date; + $gp_settings['meta_author'] = $theme_page_author; + $gp_settings['meta_comments'] = $theme_page_comments; + $gp_settings['meta_share_link'] = $theme_page_share_link; + + // Author Info Panel + $gp_settings['author_info'] = $theme_page_author_info; + +} + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/scripts/custom.php b/wp-content/themes/score/lib/scripts/custom.php new file mode 100644 index 0000000..4f38ea4 --- /dev/null +++ b/wp-content/themes/score/lib/scripts/custom.php @@ -0,0 +1,284 @@ + \ No newline at end of file diff --git a/wp-content/themes/score/lib/scripts/image-resizer.php b/wp-content/themes/score/lib/scripts/image-resizer.php new file mode 100644 index 0000000..5c1ff17 --- /dev/null +++ b/wp-content/themes/score/lib/scripts/image-resizer.php @@ -0,0 +1,167 @@ + + * + * + * @param int $attach_id + * @param string $img_url + * @param int $width + * @param int $height + * @param bool $crop + * @return array + */ + +if(!function_exists('vt_resize')) { + + function vt_resize( $attach_id = null, $img_url = null, $width, $height, $crop = false ) { + + // this is an attachment, so we have the ID + if($attach_id) { + + $image_src = wp_get_attachment_image_src( $attach_id, 'full'); + $file_path = get_attached_file( $attach_id); + + // this is not an attachment, let's use the image url + } elseif($img_url) { + + if(!preg_match("/http:/", $img_url)) { $img_url = site_url().'/'.$img_url; } + $file_path = parse_url( $img_url); + $file_path = $_SERVER['DOCUMENT_ROOT'] . $file_path['path']; + + // Look for Multisite Path + if(file_exists($file_path) === false){ + global $blog_id; + $file_path = parse_url( $img_url); + if (preg_match("/files/", $file_path['path'])) { + $path = explode('/',$file_path['path']); + foreach($path as $k=>$v){ + if($v == 'files'){ + $path[$k-1] = '/wp-content/blogs.dir/'.$blog_id; + } + } + $path = implode('/',$path); + } + $file_path = $_SERVER['DOCUMENT_ROOT'].$path; + } + //$file_path = ltrim( $file_path['path'], '/'); + //$file_path = rtrim( ABSPATH, '/').$file_path['path']; + + $orig_size = getimagesize( $file_path); + + $image_src[0] = $img_url; + $image_src[1] = $orig_size[0]; + $image_src[2] = $orig_size[1]; + } + + $file_info = pathinfo( $file_path); + + // check if file exists + $base_file = $file_info['dirname'].'/'.$file_info['filename'].'.'.$file_info['extension']; + if ( !file_exists($base_file) ) + return; + + $extension = '.'. $file_info['extension']; + + // the image path without the extension + $no_ext_path = $file_info['dirname'].'/'.$file_info['filename']; + + $cropped_img_path = $no_ext_path.'-'.$width.'x'.$height.$extension; + + // checking if the file size is larger than the target size + // if it is smaller or the same size, stop right here and return + if(($image_src[1] > $width && $width > 0) || ($image_src[2] > $height && $height > 0)) { + + // the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match) + if(file_exists( $cropped_img_path)) { + + $cropped_img_url = str_replace( basename( $image_src[0]), basename( $cropped_img_path), $image_src[0]); + + $vt_image = array ( + 'url' => $cropped_img_url, + 'width' => $width, + 'height' => $height + ); + + return $vt_image; + } + + // $crop = false + if($crop == false) { + + // calculate the size proportionaly + $proportional_size = wp_constrain_dimensions( $image_src[1], $image_src[2], $width, $height); + $resized_img_path = $no_ext_path.'-'.$proportional_size[0].'x'.$proportional_size[1].$extension; + + // checking if the file already exists + if(file_exists( $resized_img_path)) { + + $resized_img_url = str_replace( basename( $image_src[0]), basename( $resized_img_path), $image_src[0]); + + $vt_image = array ( + 'url' => $resized_img_url, + 'width' => $proportional_size[0], + 'height' => $proportional_size[1] + ); + + return $vt_image; + } + } + + // check if image width is smaller than set width + $img_size = getimagesize( $file_path ); + if ( $img_size[0] <= $width ) $width = $img_size[0]; + + // Check if GD Library installed + if (!function_exists ('imagecreatetruecolor')) { + echo 'GD Library Error: imagecreatetruecolor does not exist - please contact your webhost and ask them to install the GD library'; + return; + } + + // no cache files - let's finally resize it + // ............................................................. + + // first, make sure the directory is writable. + if (is_writable($file_info['dirname'].'/')) { + // it's writable, let's do some resizing! + $new_img_path = image_resize( $file_path, $width, $height, $crop ); + $new_img_size = getimagesize( $new_img_path ); + $new_img = str_replace( basename( $image_src[0]), basename( $new_img_path ), $image_src[0]); + } else { + // nope, directory isn't writable. return the original file info + $new_img = $img_url; + $new_img_size[0] = $width; + $new_img_size[1] = $height; + } + + // set image data for output + $vt_image = array ( + 'url' => $new_img, + 'width' => $new_img_size[0], + 'height' => $new_img_size[1] + ); + + return $vt_image; + } + + // default output - without resizing + $vt_image = array ( + 'url' => $image_src[0], + 'width' => $width, + 'height' => $height + ); + + return $vt_image; + } +} + +?> \ No newline at end of file diff --git a/wp-content/themes/score/lib/scripts/jquery.carouFredSel.js b/wp-content/themes/score/lib/scripts/jquery.carouFredSel.js new file mode 100644 index 0000000..e73f0ae --- /dev/null +++ b/wp-content/themes/score/lib/scripts/jquery.carouFredSel.js @@ -0,0 +1,15 @@ +/* + * jQuery carouFredSel 4.5.2 + * Demo's and documentation: + * caroufredsel.frebsite.nl + * + * Copyright (c) 2011 Fred Heusschen + * www.frebsite.nl + * + * Dual licensed under the MIT and GPL licenses. + * http://en.wikipedia.org/wiki/MIT_License + * http://en.wikipedia.org/wiki/GNU_General_Public_License + */ + + +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(y($){7($.1y.1t)B;$.1y.1t=y(o){7(11.Y==0){K(C,\'4q 5r 5s 1u "\'+11.5t+\'".\');B 11}7(11.Y>1){B 11.1N(y(){$(11).1t(o)})}9 r=11,$13=11[0];r.3K=y(o,b,c){9 e=[\'8\',\'14\',\'L\',\'S\',\'T\',\'Z\'];o=34($13,o);1u(9 a=0,l=e.Y;az.8.J){6.8.D=z.8.J}}7(A 6.X==\'1o\'){6.X=0}7(A 6.1g==\'1o\'){6.1g=(6[6.d[\'G\']]==\'18\')?I:\'2G\'}6.8.1E=6.8.D;6.15=I;6.X=4t(6.X);7(6.1g==\'2b\')6.1g=\'19\';7(6.1g==\'3S\')6.1g=\'2c\';1h(6.1g){F\'2G\':F\'19\':F\'2c\':7(6[6.d[\'G\']]!=\'18\'){9 p=3h(2p(h,6),6);6.15=C;6.X[6.d[1]]=p[1];6.X[6.d[3]]=p[0]}V;2d:6.1g=I;6.15=(6.X[0]==0&&6.X[1]==0&&6.X[2]==0&&6.X[3]==0)?I:C;V}7(A 6.8.2q!=\'U\')6.8.2q=6.8.D;7(A 6.14.8!=\'U\')6.14.8=(6.1C)?\'18\':6.8.D;7(A 6.14.1d!=\'U\')6.14.1d=5x;6.L=2K($13,6.L,I,C);6.S=2K($13,6.S);6.T=2K($13,6.T);6.Z=2K($13,6.Z,C);6.L=$.1U(C,{},6.14,6.L);6.S=$.1U(C,{},6.14,6.S);6.T=$.1U(C,{},6.14,6.T);6.Z=$.1U(C,{},6.14,6.Z);7(A 6.Z.3i!=\'1a\')6.Z.3i=I;7(A 6.Z.3T!=\'y\')6.Z.3T=$.1y.1t.4u;7(A 6.L.1i!=\'1a\')6.L.1i=C;7(A 6.L.3U!=\'U\')6.L.3U=0;7(A 6.L.2e!=\'U\')6.L.2e=(6.L.1d<10)?5y:6.L.1d*5;7(6.L.4v){K(C,\'4w.4v-5z 1D 5A 5B 5C.\')}7(6.1F){6.1F=3V(6.1F)}7(6.K){K(C,\'3j G: \'+6.G);K(C,\'3j 17: \'+6.17);7(6[6.d[\'G\']]==\'18\')K(C,\'5D \'+6.d[\'G\']+\': \'+6.3g);K(C,\'4x 5E: \'+6.8.G);K(C,\'4x 5F: \'+6.8.17);K(C,\'3k 2I 8 D: \'+6.8.D);7(6.L.1i)K(C,\'3k 2I 8 3W 5G: \'+6.L.8);7(6.S.12)K(C,\'3k 2I 8 3W 4y: \'+6.S.8);7(6.T.12)K(C,\'3k 2I 8 3W 4z: \'+6.T.8)}};r.4A=y(){7(r.O(\'1W\')==\'3l\'||r.O(\'1W\')==\'5H\'){K(6.K,\'5I 5J-5K "1W" 5L 5M "5N" 4B "4C".\')}9 a={\'3X\':r.O(\'3X\'),\'1W\':r.O(\'1W\'),\'2b\':r.O(\'2b\'),\'2c\':r.O(\'2c\'),\'3S\':r.O(\'3S\'),\'19\':r.O(\'19\'),\'G\':r.O(\'G\'),\'17\':r.O(\'17\'),\'3Y\':r.O(\'3Y\'),\'1f\':r.O(\'1f\'),\'3a\':r.O(\'3a\'),\'3Z\':r.O(\'3Z\')};w.O(a).O({\'5O\':\'41\',\'1W\':(a.1W==\'3l\')?\'3l\':\'4C\'});r.1j(\'4D\',a).O({\'3X\':\'42\',\'1W\':\'3l\',\'2b\':0,\'19\':0,\'3Y\':0,\'1f\':0,\'3a\':0,\'3Z\':0});7(6.15){r.M().1N(y(){9 m=1X($(11).O(6.d[\'1f\']));7(2f(m))m=0;$(11).1j(\'1v\',m)})}};r.4E=y(){r.43();r.W(\'1G.Q\'+N,y(e){e.1k();r.H(\'1Y\');6.L.1i=I;z.1Z=\'44\'});r.W(\'5P.Q\'+N,y(e){});r.W(\'1Y.Q\'+N,y(e,g){e.1k();7(A g==\'1a\'){K(C,\'5Q a 4F 5R 1D 2n, 2o 2L "1G" 2M 1H.\');r.H(\'1G\');B}z.1Z=C;7(1q.3m.L!=1A)5S(1q.3m.L);7(1q.2g.L!=1A)4G(1q.2g.L);7(1q.2g.3n!=1A)4G(1q.2g.3n);9 a=6.L.2e-1q.2r,2h=3o-1z.2s(a*3o/6.L.2e);7(2h!=0){7(6.L.4H)6.L.4H.1b($13,2h,a)}});r.W(\'1i.Q\'+N,y(e,b,c,d){e.1k();r.H(\'1Y\');9 v=[b,c,d],t=[\'1e\',\'U\',\'1a\'],a=2t(v,t);9 b=a[0],c=a[1],d=a[2];7(b!=\'S\'&&b!=\'T\')b=z.1O;7(A c!=\'U\')c=0;7(d)6.L.1i=C;7(!6.L.1i){B e.1Q()}z.1Z=I;9 f=6.L.2e-1q.2r,4I=f+c;2h=3o-1z.2s(f*3o/6.L.2e);1q.3m.L=3p(y(){7(z.20){r.H(\'1i\',b)}E{1q.2r=0;r.H(b,6.L)}},4I);7(6.L.2u===\'5T\'){1q.2g.L=5U(y(){1q.2r+=50},50)}7(6.L.4J&&2h==0){6.L.4J.1b($13,2h,f)}7(6.L.4K){1q.2g.3n=3p(y(){6.L.4K.1b($13,2h,f)},c)}});r.W(\'S.Q\'+N+\' T.Q\'+N,y(e,b,f,g){e.1k();7(z.1Z==\'44\'||r.1D(\':41\')){e.1Q();B K(6.K,\'3j 44 4B 41: 1P 2N.\')}9 v=[b,f,g],t=[\'1l\',\'U/1e\',\'y\'],a=2t(v,t);9 b=a[0],f=a[1],g=a[2];7(A b!=\'1l\'||b==1A)b=6[e.2i];7(A g==\'y\')b.2O=g;7(A f!=\'U\'){7(f==\'D\'){7(!6.1C)f=6.8.D}E{7(A b.8==\'U\')f=b.8;E 7(A 6[e.2i].8==\'U\')f=6[e.2i].8;E 7(6.1C)f=\'D\';E f=6.8.D}}7(b.1d>0){7(z.20){7(b.1m)r.H(\'1m\',[e.2i,[b,f,g]]);e.1Q();B K(6.K,\'3j 5V 2N.\')}7(6.8.2q>=z.8.J){e.1Q();B K(6.K,\'1P 4L 8 (\'+z.8.J+\', \'+6.8.2q+\' 4M): 1P 2N.\')}}1q.2r=0;7(b.45&&!b.45.1b($13)){e.1Q();B K(6.K,\'5W "45" 5X I.\')}r.H(\'4N\'+e.2i,[b,f]);7(6.1F){9 s=6.1F,c=[b,f];1u(9 j=0,l=s.Y;j=z.8.J)z.8.P-=z.8.J;7(!6.1B){7(z.8.P==0&&d.3q)d.3q.1b($13);7(!6.2w)21(6,z.8.P)}r.M().16(z.8.J-f).5Z(r);7(z.8.J<6.8.D+f){r.M().16(0,(6.8.D+f)-z.8.J).3r(C).2R(r)}9 g=r.M(),1R=4P(g,6,f),1w=4Q(g,6),2j=g.1I(f-1),22=1R.2k(),2l=1w.2k();7(6.15)1r(g,6);7(6.1g)9 p=3h(1w,6);7(d.1p==\'4R\'&&6.8.1E0){r.M().16(z.8.J).1s();1R=r.M().16(z.8.J-(o-a)).4S().60(r.M().16(0,a).4S())}7(i)i.3x();7(6.15){9 b=r.M().1I(6.8.D+o-1);b.O(6.d[\'1f\'],b.1j(\'1v\'))}9 c=y(){7(d.2O){d.2O.1b($13,1R,1w,1J)}1h(d.1p){F\'25\':F\'1K\':r.O(\'4T\',\'\');V}7(1m.Y){3p(y(){r.H(1m[0][0],1m[0][1]);1m.4U()},1)}};1h(d.1p){F\'25\':F\'1L\':1S(d,r,1,3w,c);V;2d:c();V}}});r.H(\'2m\',[I,1J]).H(\'1i\',R)});r.W(\'61.Q\'+N,y(e,f,g){e.1k();9 h=r.M();7(!6.1B){7(z.8.P==6.8.D){7(6.2w){r.H(\'S\',z.8.J-1)}B e.1Q()}}7(6.15)1r(h,6);7(6.1C){7(A g!=\'U\'){g=6.8.D}}9 i=(z.8.P==0)?z.8.J:z.8.P;7(!6.1B){7(6.1C){9 j=2J(h,6,g),4b=46(h,6,i-1)}E{9 j=6.8.D,4b=6.8.D}7(g+j>i){g=i-4b}}7(6.1C){9 j=4c(h,6,g,i);2Q(6.8.D-g>=j&&g0){r.M().16(z.8.J).1s()}9 b=r.M().16(0,q).2R(r).2k();7(a>0){1w=2p(h,6)}7(k)k.3x();7(6.15){7(z.8.J<6.8.D+q){9 c=r.M().1I(6.8.D-1);c.O(6.d[\'1f\'],c.1j(\'1v\')+6.X[6.d[3]])}b.O(6.d[\'1f\'],b.1j(\'1v\'))}9 d=y(){7(f.2O){f.2O.1b($13,1R,1w,1J)}1h(f.1p){F\'25\':F\'1K\':r.O(\'4T\',\'\');V}7(1m.Y){3p(y(){r.H(1m[0][0],1m[0][1]);1m.4U()},1)}};1h(f.1p){F\'25\':F\'1L\':1S(f,r,1,3w,d);V;2d:d();V}}});r.H(\'2m\',[I,1J]).H(\'1i\',R)});r.W(\'2A.Q\'+N,y(e,b,c,d,f,g){e.1k();9 v=[b,c,d,f,g],t=[\'1e/U/1l\',\'U\',\'1a\',\'1l\',\'1e\'],a=2t(v,t);9 f=a[3],g=a[4];b=2U(a[0],a[1],a[2],z.8,r);7(b==0)B;7(A f!=\'1l\')f=I;7(z.20){7(A f!=\'1l\'||f.1d>0)B}7(g!=\'S\'&&g!=\'T\'){7(6.1B){7(b<=z.8.J/2)g=\'T\';E g=\'S\'}E{7(z.8.P==0||z.8.P>b)g=\'T\';E g=\'S\'}}7(g==\'S\')r.H(\'S\',[f,z.8.J-b]);E r.H(\'T\',[f,b])});r.W(\'4W.Q\'+N,y(e){7(z.8.P>0){r.62(r.M().16(z.8.P))}});r.W(\'1F.Q\'+N,y(e,s){7(s)s=3V(s);E 7(6.1F)s=6.1F;E B K(6.K,\'4q 4F 3e 1F.\');9 n=r.2P(\'2V\');1u(9 j=0,l=s.Y;j=z.8.J)z.8.P-=z.8.J;9 h=r.M().1I(c);7(h.Y){h[2Y](b)}E{r.4Y(b)}z.8.J=r.M().Y;r.H(\'2Z\');9 i=31(r,6);2B(6,z.8.J);21(6,z.8.P);r.H(\'2m\',[C,i])});r.W(\'65.Q\'+N,y(e,b,c,d){e.1k();9 v=[b,c,d],t=[\'1e/U/1l\',\'1a\',\'U\'],a=2t(v,t);9 b=a[0],c=a[1],d=a[2];7(A b==\'1o\'||b==\'3y\'){r.M().2k().1s()}E{b=2U(b,d,c,z.8,r);9 f=r.M().1I(b);7(f.Y){7(bb)c=b;7(A a==\'y\')a.1b($13,c);B c});r.W(\'67.Q\'+N,y(e,a){e.1k();$i=2p(r.M(),6);7(A a==\'y\')a.1b($13,$i);B $i});r.W(\'1Z.Q\'+N,y(e,a){e.1k();7(A a==\'y\')a.1b($13,z.1Z);B z.1Z});r.W(\'2v.Q\'+N,y(e,a,b,c){e.1k();9 d=I;7(A a==\'y\'){a.1b($13,6)}E 7(A a==\'1l\'){29=$.1U(C,{},29,a);7(b!==I)d=C;E 6=$.1U(C,{},6,a)}E 7(A a!=\'1o\'){7(A b==\'y\'){9 f=3z(\'6.\'+a);7(A f==\'1o\')f=\'\';b.1b($13,f)}E 7(A b!=\'1o\'){7(A c!==\'1a\')c=C;3z(\'29.\'+a+\' = b\');7(c!==I)d=C;E 3z(\'6.\'+a+\' = b\')}E{B 3z(\'6.\'+a)}}7(d){1r(r.M(),6);r.3K(29);9 g=31(r,6);2B(6,z.8.J);21(6,z.8.P);r.H(\'2m\',[C,g])}B 6});r.W(\'2Z.Q\'+N,y(e,a,b){e.1k();7(A a==\'1o\'||a.Y==0)a=$(\'68\');E 7(A a==\'1e\')a=$(a);7(A a!=\'1l\')B K(6.K,\'1P a 3R 1l.\');7(A b!=\'1e\'||b.Y==0)b=\'a.51\';a.69(b).1N(y(){9 h=11.52||\'\';7(h.Y>0&&r.M().53($(h))!=-1){$(11).26(\'4f\').4f(y(e){e.1T();r.H(\'2A\',h)})}})});r.W(\'2m.Q\'+N,y(e,b,c){e.1k();7(!6.Z.1c)B;7(A b==\'1a\'&&b){6.Z.1c.M().1s();1u(9 a=0,l=1z.2s(z.8.J/6.8.D);a0){e.1T();3D=(A 6.S.1M==\'U\')?6.S.1M:1A;r.H(\'S\',3D)}})}7(6.T.1M){w.1M(y(e,a){7(a<0){e.1T();3D=(A 6.T.1M==\'U\')?6.T.1M:1A;r.H(\'T\',3D)}})}}7($.1y.56){9 b=(6.S.4h)?y(){r.H(\'S\')}:1A,33=(6.T.4h)?y(){r.H(\'T\')}:1A;7(33||33){9 c={\'6b\':30,\'6c\':30,\'6d\':C};1h(6.1O){F\'3M\':F\'57\':c.6e=33;c.6f=b;V;2d:c.6g=33;c.6h=b}w.56(c)}}7(6.Z.1c){7(6.Z.2u){6.Z.1c.W(\'3B.Q\'+N,y(){r.H(\'1Y\')}).W(\'3C.Q\'+N,y(){r.H(\'1i\')})}}7(6.S.27||6.T.27){$(4i).W(\'59.Q\'+N,y(e){9 k=e.5a;7(k==6.T.27){e.1T();r.H(\'T\')}7(k==6.S.27){e.1T();r.H(\'S\')}})}7(6.Z.3i){$(4i).W(\'59.Q\'+N,y(e){9 k=e.5a;7(k>=49&&k<58){k=(k-49)*6.8.D;7(k<=z.8.J){e.1T();r.H(\'2A\',[k,0,C,6.Z])}}})}7(6.L.1i){r.H(\'1i\',6.L.3U)}};r.4g=y(){$(4i).26(\'.Q\'+N);w.26(\'.Q\'+N);7(6.S.12)6.S.12.26(\'.Q\'+N);7(6.T.12)6.T.12.26(\'.Q\'+N);7(6.Z.1c)6.Z.1c.26(\'.Q\'+N);2B(6,\'2S\');21(6,\'32\');7(6.Z.1c){6.Z.1c.M().1s()}};r.2v=y(a,b){K(C,\'2F "2v" 3E 3F 1D 2n, 2o 2L "2v" 2M 1H.\');9 c=I;9 d=y(a){c=a};7(!a)a=d;7(!b)b=d;r.H(\'2v\',[a,b]);B c};r.5b=y(){K(C,\'2F "5b" 3E 3F 1D 2n, 2o 2L "2V" 2M 1H.\');B r.2P(\'2V\')};r.2C=y(){K(C,\'2F "2C" 3E 3F 1D 2n, 2o 2L "2C" 2M 1H.\');r.H(\'2C\');B r};r.5c=y(a,b){K(C,\'2F "5c" 3E 3F 1D 2n, 2o 2L "2Z" 2M 1H.\');r.H(\'2Z\',[a,b]);B r};7(r.2H().1D(\'.5d\')){9 u=r.2P(\'2V\');r.H(\'2C\',C)}E{9 u=I}9 w=r.6i(\'<6j 6k="5d" />\').2H(),z={\'1O\':\'T\',\'1Z\':C,\'20\':I,\'8\':{\'J\':r.M().Y,\'P\':0}},1q={\'2r\':0,\'2g\':{\'L\':1A,\'3n\':1A},\'3m\':{\'L\':1A}},6={},29=o,1m=[],N=$.1y.1t.N++;r.3K(29,C,u);r.4A();r.4E();r.55();7(6.8.2E!=0){9 s=6.8.2E;7(s===C){s=3G.6l.52;7(!s.Y)s=0}E 7(s===\'5e\'){s=1z.3d(1z.5e()*z.8.J)}r.H(\'2A\',[s,0,C,{1d:0},\'T\'])}9 x=31(r,6,I),5f=2p(r.M(),6);7(6.5g){6.5g.1b($13,5f,x)}r.H(\'2m\',[C,x]);r.H(\'2Z\');B 11};$.1y.1t.N=0;$.1y.1t.3L={\'K\':I,\'1F\':I,\'2w\':C,\'1B\':C,\'1O\':\'19\',\'8\':{\'2E\':0},\'14\':{\'1n\':\'6m\',\'2u\':I,\'1M\':I,\'4h\':I,\'1H\':\'4f\',\'1m\':I}};$.1y.1t.4u=y(a,b){B\'<5h>\'+a+\'\'};y 1S(a,c,x,d,f){9 o={\'1d\':d,\'1n\':a.1n};7(A f==\'y\')o.2T=f;c.1x({3v:x},o)}y 48(a,b,c,o,d,e){9 f=23(4d(b.M(),o),o,C)[0],4j=23(c.M(),o,C)[0],3H=(e)?-4j:f,28={},2D={};28[o.d[\'G\']]=4j;28[o.d[\'19\']]=3H;2D[o.d[\'19\']]=0;b.1x({3v:\'+=0\'},d);c.O(28).1x(2D,{1d:d,1n:a.1n,2T:y(){$(11).1s()}})}y 4a(a,b,c,o,d,e,n){9 f=23(4e(b.M(),o,n),o,C)[0],4k=23(c.M(),o,C)[0],3H=(e)?-4k:f,28={},2D={};28[o.d[\'G\']]=4k;28[o.d[\'19\']]=0;2D[o.d[\'19\']]=3H;c.O(28).1x(2D,{1d:d,1n:a.1n,2T:y(){$(11).1s()}})}y 2B(o,t){7(t==\'3x\'||t==\'2S\'){9 f=t}E 7(o.8.2q>=t){K(o.K,\'1P 4L 8: 6o 6p (\'+t+\' 8, \'+o.8.2q+\' 4M).\');9 f=\'2S\'}E{9 f=\'3x\'}7(o.S.12)o.S.12[f]();7(o.T.12)o.T.12[f]();7(o.Z.1c)o.Z.1c[f]()}y 21(o,f){7(o.1B||o.2w)B;9 a=(f==\'32\'||f==\'3A\')?f:I;7(o.T.12){9 b=a||(f==o.8.D)?\'3A\':\'32\';o.T.12[b](\'5i\')}7(o.S.12){9 b=a||(f==0)?\'3A\':\'32\';o.S.12[b](\'5i\')}}y 2t(c,d){9 e=[];1u(9 a=0,5j=c.Y;a<5j;a++){1u(9 b=0,5k=d.Y;b<5k;b++){7(d[b].3I(A c[a])>-1&&!e[b]){e[b]=c[a];V}}}B e}y 3V(s){7(!2W(s))s=[[s]];7(!2W(s[0]))s=[s];1u(9 j=0,l=s.Y;j0){2Q(a>=d.J){a-=d.J}2Q(a<0){a+=d.J}}B a}y 2p(i,o){B i.16(0,o.8.D)}y 4P(i,o,n){B i.16(n,o.8.1E+n)}y 4Q(i,o){B i.16(0,o.8.D)}y 4d(i,o){B i.16(0,o.8.1E)}y 4e(i,o,n){B i.16(n,o.8.D+n)}y 46(i,o,s){9 t=0,x=0;1u(9 a=s;a>=0;a--){t+=i.1I(a)[o.d[\'1V\']](C);7(t>o.3g)B x;7(a==0)a=i.Y;x++}}y 2J(i,o,s){9 t=0,x=0;1u(9 a=s,l=i.Y-1;a<=l;a++){t+=i.1I(a)[o.d[\'1V\']](C);7(t>o.3g)B x;7(a==l)a=-1;x++}}y 4c(i,o,s,l){9 v=2J(i,o,s);7(!o.1B){7(s+v>l)v=l-s}B v}y 1r(i,o,m){9 x=(A m==\'1a\')?m:I;7(A m!=\'U\')m=0;i.1N(y(){9 t=1X($(11).O(o.d[\'1f\']));7(2f(t))t=0;$(11).1j(\'5l\',t);$(11).O(o.d[\'1f\'],((x)?$(11).1j(\'5l\'):m+$(11).1j(\'1v\')))})}y 23(i,o,a){5m=2x(i,o,\'G\',a);5n=4m(i,o,\'17\',a);B[5m,5n]}y 4m(i,o,a,b){7(A b!=\'1a\')b=I;7(A o[o.d[a]]==\'U\'&&b)B o[o.d[a]];7(A o.8[o.d[a]]==\'U\')B o.8[o.d[a]];9 c=(a.4n().3I(\'G\')>-1)?\'1V\':\'2a\';B 3O(i,o,c)}y 3O(i,o,a){9 s=0;i.1N(y(){9 m=$(11)[o.d[a]](C);7(s-1)?[\'6q\',\'6r\']:[\'6s\',\'6t\'];1u(a=0,l=4o.Y;a-1)?\'1V\':\'2a\',s=0;i.1N(y(){9 j=$(11);7(j.1D(\':D\')){s+=j[o.d[d]](C)}});B s}y 3P(i,o,a){9 s=I,v=I;i.1N(y(){c=$(11)[o.d[a]](C);7(s===I)s=c;E 7(s!=c)v=C;7(s==0)v=C});B v}y 3t(a,o,p){7(A p!=\'1a\')p=C;9 b=(o.15&&p)?o.X:[0,0,0,0];9 c={};c[o.d[\'G\']]=a[0]+b[1]+b[3];c[o.d[\'17\']]=a[1]+b[0]+b[2];B c}y 31(a,o,p){9 b=a.2H(),$i=a.M(),$v=2p($i,o),3J=3t(23($v,o,C),o,p);b.O(3J);7(o.15){9 c=$v.2k();c.O(o.d[\'1f\'],c.1j(\'1v\')+o.X[o.d[1]]);a.O(o.d[\'2b\'],o.X[o.d[0]]);a.O(o.d[\'19\'],o.X[o.d[3]])}a.O(o.d[\'G\'],3J[o.d[\'G\']]+(2x($i,o,\'G\')*2));a.O(o.d[\'17\'],4m($i,o,\'17\'));B 3J}y 4t(p){7(A p==\'1o\')B[0,0,0,0];7(A p==\'U\')B[p,p,p,p];E 7(A p==\'1e\')p=p.5o(\'6u\').6v(\'\').5o(\' \');7(!2W(p)){B[0,0,0,0]}1u(9 i=0;i<4;i++){p[i]=1X(p[i])}1h(p.Y){F 0:B[0,0,0,0];F 1:B[p[0],p[0],p[0],p[0]];F 2:B[p[0],p[1],p[0],p[1]];F 3:B[p[0],p[1],p[2],p[1]];2d:B[p[0],p[1],p[2],p[3]]}}y 3h(a,o){9 x=(A o[o.d[\'G\']]==\'U\')?1z.2s(o[o.d[\'G\']]-2x(a,o,\'G\')):0;1h(o.1g){F\'19\':B[0,x];V;F\'2c\':B[x,0];V;F\'2G\':2d:9 b=1z.2s(x/2),5p=1z.3d(x/2);B[b,5p];V}}y 3f(x,o){1h(o.35){F\'+1\':B x+1;V;F\'-1\':B x-1;V;F\'3b\':7(x%2==0)B x-1;V;F\'3b+\':7(x%2==0)B x+1;V;F\'3c\':7(x%2==1)B x-1;V;F\'3c+\':7(x%2==1)B x+1;V;2d:B x;V}}y 2W(a){B A(a)==\'1l\'&&(a 6w 6x)}y K(d,m){7(!d)B I;7(A m==\'1e\')m=\'1t: \'+m;E m=[\'1t:\',m];7(3G.4p&&3G.4p.5q)3G.4p.5q(m);B I}$.1y.51=y(o){B 11.1t(o)}})(4w);',62,406,'||||||opts|if|items|var|||||||||||||||||||||||||function|conf|typeof|return|true|visible|else|case|width|trigger|false|total|debug|auto|children|serial|css|first|cfs|a_dur|prev|next|number|break|bind|padding|length|pagination||this|button|tt0|scroll|usePadding|slice|height|variable|left|boolean|call|container|duration|string|marginRight|align|switch|play|data|stopPropagation|object|queue|easing|undefined|fx|tmrs|resetMargin|remove|carouFredSel|for|cfs_origCssMargin|c_new|animate|fn|Math|null|circular|variableVisible|is|oldVisible|synchronise|stop|event|eq|w_siz|crossfade|uncover|mousewheel|each|direction|Not|stopImmediatePropagation|c_old|fx_fade|preventDefault|extend|outerWidth|position|parseInt|pause|isPaused|isAnimated|nv_enableNavi|l_old|ms_getSizes|cover|fade|unbind|key|css_o|opts_orig|outerHeight|top|right|default|pauseDuration|isNaN|intervals|perc|type|l_cur|last|l_new|updatePageStatus|deprecated|use|getCurrentItems|minimum|pausePassed|ceil|sortParams|pauseOnHover|configuration|infinite|ms_getTotalSize|a_cur|a_old|slideTo|nv_showNavi|destroy|ani_o|start|The|center|parent|of|getVisibleItemsNext|getNaviObject|the|custom|scrolling|onAfter|triggerHandler|while|appendTo|hide|complete|getItemIndex|currentPosition|is_array|jquery|before|linkAnchors||setSizes|removeClass|wN|getObject|visibleAdjust|innerWidth||||marginBottom|odd|even|floor|to|cf_getVisibleItemsAdjust|maxDimention|cf_getAlignPadding|keys|Carousel|Number|absolute|timeouts|timer|100|setTimeout|onEnd|clone|orgW|mapWrapperSizes|onBefore|opacity|f_dur|show|end|eval|addClass|mouseenter|mouseleave|num|public|method|window|cur_l|indexOf|sz|init|defaults|up|lrgst_b|ms_getTrueLargestSize|ms_hasVariableSizes|ms_getTrueInnerSize|valid|bottom|anchorBuilder|delay|getSynchArr|scrolled|float|marginTop|marginLeft||hidden|none|unbind_events|stopped|conditions|getVisibleItemsPrev|a_new|fx_cover||fx_uncover|xI|getVisibleItemsNextTestCircular|getOldItemsNext|getNewItemsNext|click|unbind_buttons|wipe|document|new_w|old_w|getKeyCode|ms_getLargestSize|toLowerCase|arr|console|No|innerHeight|dx|cf_getPadding|pageAnchorBuilder|nap|jQuery|Item|backward|forward|build|or|relative|cfs_origCss|bind_events|carousel|clearInterval|onPausePause|dur2|onPauseEnd|onPauseStart|enough|needed|slide_|Scrolling|getOldItemsPrev|getNewItemsPrev|directscroll|get|filter|shift|new_m|jumpToStart|after|append|currentPage||caroufredsel|hash|index|selected|bind_buttons|touchwipe|down||keyup|keyCode|current_position|link_anchors|caroufredsel_wrapper|random|itm|onCreate|span|disabled|l1|l2|cfs_tempCssMargin|s1|s2|split|x2|log|element|found|selector|option|Infinity|Set|500|2500|plugin|no|longer|supported|Available|widths|heights|automatically|fixed|Carousels|CSS|attribute|should|be|static|overflow|finish|Pause|globally|clearTimeout|resume|setInterval|currently|Callback|returned|slide_prev|prependTo|concat|slide_next|prepend|push|insertItem|removeItem|round|currentVisible|body|find|replaceWith|min_move_x|min_move_y|preventDefaultEvents|wipeUp|wipeDown|wipeLeft|wipeRight|wrap|div|class|location|swing|href|hiding|navigation|paddingLeft|paddingRight|paddingTop|paddingBottom|px|join|instanceof|Array'.split('|'),0,{})) \ No newline at end of file diff --git a/wp-content/themes/score/lib/scripts/jquery.fittext.js b/wp-content/themes/score/lib/scripts/jquery.fittext.js new file mode 100644 index 0000000..482a2ec --- /dev/null +++ b/wp-content/themes/score/lib/scripts/jquery.fittext.js @@ -0,0 +1,44 @@ +/*global jQuery */ +/*! +* FitText.js 1.0 +* +* Copyright 2011, Dave Rupert http://daverupert.com +* Released under the WTFPL license +* http://sam.zoy.org/wtfpl/ +* +* Date: Thu May 05 14:23:00 2011 -0600 +*/ + +(function( $ ){ + + $.fn.fitText = function( kompressor, options ) { + + // Setup options + var compressor = kompressor || 1, + settings = $.extend({ + 'minFontSize' : Number.NEGATIVE_INFINITY, + 'maxFontSize' : Number.POSITIVE_INFINITY + }, options); + + return this.each(function(){ + + // Store the object + var $this = $(this); + + // Resizer() resizes items based on the object width divided by the compressor * 10 + var resizer = function () { + $this.css('font-size', Math.max(Math.min($this.width() / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize))); + console.log(Math.max(Math.min($this.width() / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize))); + }; + + // Call once to set. + resizer(); + + // Call on resize. Opera debounces their resize by default. + //$(window).on('resize', resizer); + + }); + + }; + +})( jQuery ); \ No newline at end of file diff --git a/wp-content/themes/score/lib/scripts/jquery.jqtransform.js b/wp-content/themes/score/lib/scripts/jquery.jqtransform.js new file mode 100644 index 0000000..c4499da --- /dev/null +++ b/wp-content/themes/score/lib/scripts/jquery.jqtransform.js @@ -0,0 +1,367 @@ +/* + * + * jqTransform + * by mathieu vilaplana mvilaplana@dfc-e.com + * Designer ghyslain armand garmand@dfc-e.com + * + * + * Version 1.0 25.09.08 + * Version 1.1 06.08.09 + * Add event click on Checkbox and Radio + * Auto calculate the size of a select element + * Can now, disabled the elements + * Correct bug in ff if click on select (overflow=hidden) + * No need any more preloading !! + * + ******************************************** */ + +(function($){ + var defaultOptions = {preloadImg:true}; + var jqTransformImgPreloaded = false; + + var jqTransformPreloadHoverFocusImg = function(strImgUrl) { + //guillemets to remove for ie + strImgUrl = strImgUrl.replace(/^url\((.*)\)/,'$1').replace(/^\"(.*)\"$/,'$1'); + var imgHover = new Image(); + imgHover.src = strImgUrl.replace(/\.([a-zA-Z]*)$/,'-hover.$1'); + var imgFocus = new Image(); + imgFocus.src = strImgUrl.replace(/\.([a-zA-Z]*)$/,'-focus.$1'); + }; + + + /*************************** + Labels + ***************************/ + var jqTransformGetLabel = function(objfield){ + var selfForm = $(objfield.get(0).form); + var oLabel = objfield.next(); + if(!oLabel.is('label')) { + oLabel = objfield.prev(); + if(oLabel.is('label')){ + var inputname = objfield.attr('id'); + if(inputname){ + oLabel = selfForm.find('label[for="'+inputname+'"]'); + } + } + } + if(oLabel.is('label')){return oLabel.css('cursor','pointer');} + return false; + }; + + /* Hide all open selects */ + var jqTransformHideSelect = function(oTarget){ + var ulVisible = $('.jqTransformSelectWrapper ul:visible'); + ulVisible.each(function(){ + var oSelect = $(this).parents(".jqTransformSelectWrapper:first").find("select").get(0); + //do not hide if click on the label object associated to the select + if( !(oTarget && oSelect.oLabel && oSelect.oLabel.get(0) == oTarget.get(0)) ){$(this).hide();} + }); + }; + /* Check for an external click */ + var jqTransformCheckExternalClick = function(event) { + if ($(event.target).parents('.jqTransformSelectWrapper').length === 0) { jqTransformHideSelect($(event.target)); } + }; + + /* Apply document listener */ + var jqTransformAddDocumentListener = function (){ + $(document).mousedown(jqTransformCheckExternalClick); + }; + + /* Add a new handler for the reset action */ + var jqTransformReset = function(f){ + var sel; + $('.jqTransformSelectWrapper select', f).each(function(){sel = (this.selectedIndex<0) ? 0 : this.selectedIndex; $('ul', $(this).parent()).each(function(){$('a:eq('+ sel +')', this).click();});}); + $('a.jqTransformCheckbox, a.jqTransformRadio', f).removeClass('jqTransformChecked'); + $('input:checkbox, input:radio', f).each(function(){if(this.checked){$('a', $(this).parent()).addClass('jqTransformChecked');}}); + }; + + /*************************** + Buttons + ***************************/ + $.fn.jqTransInputButton = function(){ + return this.each(function(){ + var newBtn = $('').click(function(){d.click.apply(c.element[0],arguments)}).appendTo(g);a.each(d,function(a,b){if(a==="click")return;a in f?e[a](b):e.attr(a,b)}),a.fn.button&&e.button()}),e.appendTo(c.uiDialog))},_makeDraggable:function(){function f(a){return{position:a.position,offset:a.offset}}var b=this,c=b.options,d=a(document),e;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(d,g){e=c.height==="auto"?"auto":a(this).height(),a(this).height(a(this).height()).addClass("ui-dialog-dragging"),b._trigger("dragStart",d,f(g))},drag:function(a,c){b._trigger("drag",a,f(c))},stop:function(g,h){c.position=[h.position.left-d.scrollLeft(),h.position.top-d.scrollTop()],a(this).removeClass("ui-dialog-dragging").height(e),b._trigger("dragStop",g,f(h)),a.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function h(a){return{originalPosition:a.originalPosition,originalSize:a.originalSize,position:a.position,size:a.size}}c=c===b?this.options.resizable:c;var d=this,e=d.options,f=d.uiDialog.css("position"),g=typeof c=="string"?c:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:g,start:function(b,c){a(this).addClass("ui-dialog-resizing"),d._trigger("resizeStart",b,h(c))},resize:function(a,b){d._trigger("resize",a,h(b))},stop:function(b,c){a(this).removeClass("ui-dialog-resizing"),e.height=a(this).height(),e.width=a(this).width(),d._trigger("resizeStop",b,h(c)),a.ui.dialog.overlay.resize()}}).css("position",f).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(b){var c=[],d=[0,0],e;if(b){if(typeof b=="string"||typeof b=="object"&&"0"in b)c=b.split?b.split(" "):[b[0],b[1]],c.length===1&&(c[1]=c[0]),a.each(["left","top"],function(a,b){+c[a]===c[a]&&(d[a]=c[a],c[a]=b)}),b={my:c.join(" "),at:c.join(" "),offset:d.join(" ")};b=a.extend({},a.ui.dialog.prototype.options.position,b)}else b=a.ui.dialog.prototype.options.position;e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},b)),e||this.uiDialog.hide()},_setOptions:function(b){var c=this,f={},g=!1;a.each(b,function(a,b){c._setOption(a,b),a in d&&(g=!0),a in e&&(f[a]=b)}),g&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(b,d){var e=this,f=e.uiDialog;switch(b){case"beforeclose":b="beforeClose";break;case"buttons":e._createButtons(d);break;case"closeText":e.uiDialogTitlebarCloseText.text(""+d);break;case"dialogClass":f.removeClass(e.options.dialogClass).addClass(c+d);break;case"disabled":d?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case"draggable":var g=f.is(":data(draggable)");g&&!d&&f.draggable("destroy"),!g&&d&&e._makeDraggable();break;case"position":e._position(d);break;case"resizable":var h=f.is(":data(resizable)");h&&!d&&f.resizable("destroy"),h&&typeof d=="string"&&f.resizable("option","handles",d),!h&&d!==!1&&e._makeResizable(d);break;case"title":a(".ui-dialog-title",e.uiDialogTitlebar).html(""+(d||" "))}a.Widget.prototype._setOption.apply(e,arguments)},_size:function(){var b=this.options,c,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),b.minWidth>b.width&&(b.width=b.minWidth),c=this.uiDialog.css({height:"auto",width:b.width}).height(),d=Math.max(0,b.minHeight-c);if(b.height==="auto")if(a.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();var f=this.element.css("height","auto").height();e||this.uiDialog.hide(),this.element.height(Math.max(f,d))}else this.element.height(Math.max(b.height-c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),a.extend(a.ui.dialog,{version:"1.8.20",uuid:0,maxZ:0,getTitleId:function(a){var b=a.attr("id");return b||(this.uuid+=1,b=this.uuid),"ui-dialog-title-"+b},overlay:function(b){this.$el=a.ui.dialog.overlay.create(b)}}),a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(b){this.instances.length===0&&(setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});return a.fn.bgiframe&&c.bgiframe(),this.instances.push(c),c},destroy:function(b){var c=a.inArray(b,this.instances);c!=-1&&this.oldInstances.push(this.instances.splice(c,1)[0]),this.instances.length===0&&a([document,window]).unbind(".dialog-overlay"),b.remove();var d=0;a.each(this.instances,function(){d=Math.max(d,this.css("z-index"))}),this.maxZ=d},height:function(){var b,c;return a.browser.msie&&a.browser.version<7?(b=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),b').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(b){var c=this.options;return this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment(),this._trigger("start",b)===!1?(this._clear(),!1):(this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b),!0)},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1)return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);var d=this.element[0],e=!1;while(d&&(d=d.parentNode))d==document&&(e=!0);if(!e&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var f=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){f._trigger("stop",b)!==!1&&f._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){return this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b),a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;return a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)}),c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute"),d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.lefth[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.toph[3]?j-this.offset.click.toph[2]?k-this.offset.click.left=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f=k&&g<=l||h>=k&&h<=l||gl)&&(e>=i&&e<=j||f>=i&&f<=j||ej);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();g:for(var h=0;h=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery); \ No newline at end of file diff --git a/wp-includes/js/jquery/ui/jquery.ui.position.min.js b/wp-includes/js/jquery/ui/jquery.ui.position.min.js new file mode 100644 index 0000000..4f40f96 --- /dev/null +++ b/wp-includes/js/jquery/ui/jquery.ui.position.min.js @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.8.20 - 2012-04-30 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.position.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery); \ No newline at end of file diff --git a/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js b/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js new file mode 100644 index 0000000..9b5c68c --- /dev/null +++ b/wp-includes/js/jquery/ui/jquery.ui.progressbar.min.js @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.8.20 - 2012-04-30 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.progressbar.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=a("
                      ").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove(),a.Widget.prototype.destroy.apply(this,arguments)},value:function(a){return a===b?this._value():(this._setOption("value",a),this)},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;return typeof a!="number"&&(a=0),Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.20"})})(jQuery); \ No newline at end of file diff --git a/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js b/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js new file mode 100644 index 0000000..62f7bce --- /dev/null +++ b/wp-includes/js/jquery/ui/jquery.ui.resizable.min.js @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.8.20 - 2012-04-30 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.resizable.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('
                      ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e');h.css({zIndex:c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){if(c.disabled)return;a(this).removeClass("ui-resizable-autohide"),b._handles.show()},function(){if(c.disabled)return;b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}return this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement),this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");return a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b),!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);return l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui()),!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}return a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),ea.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;return p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null),a},_proportionallyResize:function(){var b=this.options;if(!this._proportionallyResizeElements.length)return;var c=this.helper||this.element;for(var d=0;d');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.20"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!i)return;e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/d.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*d.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery); \ No newline at end of file diff --git a/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js b/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js new file mode 100644 index 0000000..500c8a8 --- /dev/null +++ b/wp-includes/js/jquery/ui/jquery.ui.selectable.min.js @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.8.20 - 2012-04-30 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.selectable.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("
                      ")},destroy:function(){return this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy(),this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(this.options.disabled)return;var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");return d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element}),!1}})},_mouseDrag:function(b){var c=this;this.dragged=!0;if(this.options.disabled)return;var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}return this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!i||i.element==c.element[0])return;var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.righth||i.bottome&&i.rightf&&i.bottom").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;ic&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i),j===!1?!1:(this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0,!0))},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);return this._slide(a,this._handleIndex,c),!1},_mouseStop:function(a){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;return this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e,this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};return this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c1){this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);return}if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;return Math.abs(c)*2>=b&&(d+=c>0?b:-b),parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.20"})})(jQuery); \ No newline at end of file diff --git a/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js b/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js new file mode 100644 index 0000000..593dfb9 --- /dev/null +++ b/wp-includes/js/jquery/ui/jquery.ui.sortable.min.js @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.8.20 - 2012-04-30 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.sortable.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},destroy:function(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f)return e=a(this),!1});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}return this.currentItem=e,this._removeCurrentsFromItems(),!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));return a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b),!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}return this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(b,c){if(!b)return;a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"="),d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")}),d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+jf&&b+ka[this.floating?"width":"height"]?l:f0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){return this._refreshItems(a),this.refreshPositions(),this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return e||(b.style.visibility="hidden"),b},update:function(a,b){if(e&&!d.forcePlaceholderSize)return;b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!c)return;if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"];Math.abs(j-h)this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.topthis.containment[3]?h-this.offset.click.topthis.containment[2]?i-this.offset.click.left=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
                    • #{label}
                    • "},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash)return e.selected=a,!1}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1)return this.blur(),!1;e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected"))return e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur(),!1;if(!f.length)return e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur(),!1}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){return typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},destroy:function(){var b=this.options;return this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie),this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);return j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e])),this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();return d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0])),this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)==-1)return;return this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b])),this},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;return a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))),this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;return this.anchors.eq(a).trigger(this.options.event+".tabs"),this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}return this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs"),this},abort:function(){return this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup(),this},url:function(a,b){return this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b),this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.20"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a